From 8ec96fc8916bc7c57b57630ce9021c8d3c7c0cf8 Mon Sep 17 00:00:00 2001 From: Giacomo Cusinato <7659518+giacomocusinato@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:50:07 +0700 Subject: [PATCH 1/2] Test light version --- .../browser/arduino-frontend-contribution.tsx | 7 +++ .../browser/arduino-ide-frontend-module.ts | 18 +++----- .../browser/boards/boards-auto-installer.ts | 4 ++ .../contributions/boards-data-menu-updater.ts | 4 ++ .../contributions/check-for-ide-updates.ts | 4 ++ .../contributions/indexes-update-progress.ts | 4 ++ .../src/browser/contributions/ino-language.ts | 8 ++++ .../browser/contributions/update-indexes.ts | 12 +++++ .../theia/electron-main-application.ts | 2 + .../src/node/arduino-ide-backend-module.ts | 45 +++++++++---------- .../src/node/board-discovery.ts | 4 ++ scripts/package.sh | 3 -- 12 files changed, 76 insertions(+), 39 deletions(-) diff --git a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx index 9ca0a9c61..99aa702c2 100644 --- a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx +++ b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx @@ -42,6 +42,7 @@ import { ArduinoMenus } from './menu/arduino-menus'; import { MonitorViewContribution } from './serial/monitor/monitor-view-contribution'; import { SerialPlotterContribution } from './serial/plotter/plotter-frontend-contribution'; import { ArduinoToolbar } from './toolbar/arduino-toolbar'; +import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider'; @injectable() export class ArduinoFrontendContribution @@ -103,6 +104,12 @@ export class ArduinoFrontendContribution } registerToolbarItems(registry: TabBarToolbarRegistry): void { + const config = FrontendApplicationConfigProvider.get(); + + debugger; + if (config.isLightVersion) { + return; + } registry.registerItem({ id: BoardsToolBarItem.TOOLBAR_ID, render: () => ( diff --git a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts index d6779c302..305577ff4 100644 --- a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts +++ b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts @@ -85,7 +85,6 @@ import { TabBarDecoratorService as TheiaTabBarDecoratorService } from '@theia/co import { TabBarDecoratorService } from './theia/core/tab-bar-decorator'; import { ProblemManager as TheiaProblemManager } from '@theia/markers/lib/browser'; import { ProblemManager } from './theia/markers/problem-manager'; -import { BoardsAutoInstaller } from './boards/boards-auto-installer'; import { ShellLayoutRestorer } from './theia/core/shell-layout-restorer'; import { ArduinoComponentContextMenuRenderer, @@ -222,9 +221,6 @@ import { NotificationsRenderer as TheiaNotificationsRenderer } from '@theia/mess import { NotificationsRenderer } from './theia/messages/notifications-renderer'; import { SketchbookWidgetContribution } from './widgets/sketchbook/sketchbook-widget-contribution'; import { LocalCacheFsProvider } from './local-cache/local-cache-fs-provider'; -import { CloudSketchbookWidget } from './widgets/cloud-sketchbook/cloud-sketchbook-widget'; -import { CloudSketchbookTreeWidget } from './widgets/cloud-sketchbook/cloud-sketchbook-tree-widget'; -import { createCloudSketchbookTreeWidget } from './widgets/cloud-sketchbook/cloud-sketchbook-tree-container'; import { CreateApi } from './create/create-api'; import { ShareSketchDialog } from './dialogs/cloud-share-sketch-dialog'; import { AuthenticationClientService } from './auth/authentication-client-service'; @@ -497,8 +493,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { .whenTargetNamed('store'); // Boards auto-installer - bind(BoardsAutoInstaller).toSelf().inSingletonScope(); - bind(FrontendApplicationContribution).toService(BoardsAutoInstaller); + // bind(BoardsAutoInstaller).toSelf().inSingletonScope(); + // bind(FrontendApplicationContribution).toService(BoardsAutoInstaller); // Boards list widget bind(BoardsListWidget).toSelf(); @@ -970,11 +966,11 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { createWidget: () => ctx.container.get(SketchbookCompositeWidget), })); - bind(CloudSketchbookWidget).toSelf(); - rebind(SketchbookWidget).toService(CloudSketchbookWidget); - bind(CloudSketchbookTreeWidget).toDynamicValue(({ container }) => - createCloudSketchbookTreeWidget(container) - ); + // bind(CloudSketchbookWidget).toSelf(); + // rebind(SketchbookWidget).toService(CloudSketchbookWidget); + // bind(CloudSketchbookTreeWidget).toDynamicValue(({ container }) => + // createCloudSketchbookTreeWidget(container) + // ); bind(CreateApi).toSelf().inSingletonScope(); bind(SketchCache).toSelf().inSingletonScope(); bind(CreateFeatures).toSelf().inSingletonScope(); diff --git a/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts b/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts index 4b0f45e69..665c62edf 100644 --- a/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts +++ b/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts @@ -52,6 +52,10 @@ export class BoardsAutoInstaller implements FrontendApplicationContribution { private readonly toDispose = new DisposableCollection(); onStart(): void { + if (process.env.IS_LIGHT_VERSION) { + return; + } + this.toDispose.pushAll([ this.boardsServiceProvider.onBoardsConfigDidChange((event) => { if (isBoardIdentifierChangeEvent(event)) { diff --git a/arduino-ide-extension/src/browser/contributions/boards-data-menu-updater.ts b/arduino-ide-extension/src/browser/contributions/boards-data-menu-updater.ts index 382e0f2ef..436dbbe15 100644 --- a/arduino-ide-extension/src/browser/contributions/boards-data-menu-updater.ts +++ b/arduino-ide-extension/src/browser/contributions/boards-data-menu-updater.ts @@ -35,6 +35,10 @@ export class BoardsDataMenuUpdater extends Contribution { private readonly toDisposeOnBoardChange = new DisposableCollection(); override onStart(): void { + if (process.env.IS_LIGHT_VERSION) { + return; + } + this.boardsDataStore.onDidChange(() => this.updateMenuActions( this.boardsServiceProvider.boardsConfig.selectedBoard diff --git a/arduino-ide-extension/src/browser/contributions/check-for-ide-updates.ts b/arduino-ide-extension/src/browser/contributions/check-for-ide-updates.ts index 7ac57ac01..226801473 100644 --- a/arduino-ide-extension/src/browser/contributions/check-for-ide-updates.ts +++ b/arduino-ide-extension/src/browser/contributions/check-for-ide-updates.ts @@ -47,6 +47,10 @@ export class CheckForIDEUpdates extends Contribution { } override async onReady(): Promise { + if (process.env.IS_LIGHT_VERSION) { + return; + } + this.updater .init( this.preferences.get('arduino.ide.updateChannel'), diff --git a/arduino-ide-extension/src/browser/contributions/indexes-update-progress.ts b/arduino-ide-extension/src/browser/contributions/indexes-update-progress.ts index a2c87fee0..2ba1a57f7 100644 --- a/arduino-ide-extension/src/browser/contributions/indexes-update-progress.ts +++ b/arduino-ide-extension/src/browser/contributions/indexes-update-progress.ts @@ -16,6 +16,10 @@ export class IndexesUpdateProgress extends Contribution { | undefined; override onStart(): void { + if (process.env.IS_LIGHT_VERSION) { + return; + } + this.notificationCenter.onIndexUpdateWillStart(({ progressId }) => this.getOrCreateProgress(progressId) ); diff --git a/arduino-ide-extension/src/browser/contributions/ino-language.ts b/arduino-ide-extension/src/browser/contributions/ino-language.ts index 4f336ef3d..0a0e57289 100644 --- a/arduino-ide-extension/src/browser/contributions/ino-language.ts +++ b/arduino-ide-extension/src/browser/contributions/ino-language.ts @@ -113,6 +113,10 @@ export class InoLanguage extends SketchContribution { private languageServerFqbn?: string; override onReady(): void { + if (process.env.IS_LIGHT_VERSION) { + return; + } + const start = ( selectedBoard: BoardIdentifier | undefined, forceStart = false @@ -191,6 +195,10 @@ export class InoLanguage extends SketchContribution { name: string | undefined, forceStart = false ): Promise { + if (process.env.IS_LIGHT_VERSION) { + return; + } + const port = await this.daemon.tryGetPort(); if (typeof port !== 'number') { return; diff --git a/arduino-ide-extension/src/browser/contributions/update-indexes.ts b/arduino-ide-extension/src/browser/contributions/update-indexes.ts index fc4e6d078..980681589 100644 --- a/arduino-ide-extension/src/browser/contributions/update-indexes.ts +++ b/arduino-ide-extension/src/browser/contributions/update-indexes.ts @@ -45,6 +45,10 @@ export class UpdateIndexes extends Contribution { } private async checkForUpdates(): Promise { + if (process.env.IS_LIGHT_VERSION) { + return; + } + const checkForUpdates = this.preferences['arduino.checkForUpdates']; if (!checkForUpdates) { console.debug( @@ -83,6 +87,10 @@ export class UpdateIndexes extends Contribution { types: IndexType[], force = false ): Promise { + if (process.env.IS_LIGHT_VERSION) { + return; + } + const updatedAt = new Date().toISOString(); return Promise.all( types.map((type) => this.needsIndexUpdate(type, updatedAt, force)) @@ -104,6 +112,10 @@ export class UpdateIndexes extends Contribution { now: string, force = false ): Promise { + if (process.env.IS_LIGHT_VERSION) { + return false; + } + if (force) { console.debug( `[update-indexes]: Update for index type: '${type}' was forcefully requested.` diff --git a/arduino-ide-extension/src/electron-main/theia/electron-main-application.ts b/arduino-ide-extension/src/electron-main/theia/electron-main-application.ts index 35063bc8f..af03da485 100644 --- a/arduino-ide-extension/src/electron-main/theia/electron-main-application.ts +++ b/arduino-ide-extension/src/electron-main/theia/electron-main-application.ts @@ -521,6 +521,8 @@ export class ElectronMainApplication extends TheiaElectronMainApplication { } protected override async startBackend(): Promise { + // FIXME: temporary test to check improvements on low powered machines. + process.env.IS_LIGHT_VERSION = 'true'; // Check if we should run everything as one process. const noBackendFork = process.argv.indexOf('--no-cluster') !== -1; // We cannot use the `process.cwd()` as the application project path (the location of the `package.json` in other words) diff --git a/arduino-ide-extension/src/node/arduino-ide-backend-module.ts b/arduino-ide-extension/src/node/arduino-ide-backend-module.ts index 4eb572b3b..30eee3fd9 100644 --- a/arduino-ide-extension/src/node/arduino-ide-backend-module.ts +++ b/arduino-ide-extension/src/node/arduino-ide-backend-module.ts @@ -75,12 +75,7 @@ import { } from '../common/protocol'; import { BackendApplication } from './theia/core/backend-application'; import { BoardDiscovery } from './board-discovery'; -import { AuthenticationServiceImpl } from './auth/authentication-service-impl'; -import { - AuthenticationService, - AuthenticationServiceClient, - AuthenticationServicePath, -} from '../common/protocol/authentication-service'; + import { ArduinoFirmwareUploaderImpl } from './arduino-firmware-uploader-impl'; import { PlotterBackendContribution } from './plotter/plotter-backend-contribution'; import { ArduinoLocalizationContribution } from './i18n/arduino-localization-contribution'; @@ -354,25 +349,25 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { ].forEach((name) => bindChildLogger(bind, name)); // Cloud sketchbook bindings - bind(AuthenticationServiceImpl).toSelf().inSingletonScope(); - bind(AuthenticationService).toService(AuthenticationServiceImpl); - bind(BackendApplicationContribution).toService(AuthenticationServiceImpl); - bind(ConnectionHandler) - .toDynamicValue( - (context) => - new JsonRpcConnectionHandler( - AuthenticationServicePath, - (client) => { - const server = context.container.get( - AuthenticationServiceImpl - ); - server.setClient(client); - client.onDidCloseConnection(() => server.disposeClient(client)); - return server; - } - ) - ) - .inSingletonScope(); + // bind(AuthenticationServiceImpl).toSelf().inSingletonScope(); + // bind(AuthenticationService).toService(AuthenticationServiceImpl); + // bind(BackendApplicationContribution).toService(AuthenticationServiceImpl); + // bind(ConnectionHandler) + // .toDynamicValue( + // (context) => + // new JsonRpcConnectionHandler( + // AuthenticationServicePath, + // (client) => { + // const server = context.container.get( + // AuthenticationServiceImpl + // ); + // server.setClient(client); + // client.onDidCloseConnection(() => server.disposeClient(client)); + // return server; + // } + // ) + // ) + // .inSingletonScope(); bind(PlotterBackendContribution).toSelf().inSingletonScope(); bind(BackendApplicationContribution).toService(PlotterBackendContribution); diff --git a/arduino-ide-extension/src/node/board-discovery.ts b/arduino-ide-extension/src/node/board-discovery.ts index 44a84ec38..c969be804 100644 --- a/arduino-ide-extension/src/node/board-discovery.ts +++ b/arduino-ide-extension/src/node/board-discovery.ts @@ -170,6 +170,10 @@ export class BoardDiscovery } async start(): Promise { + if (process.env.IS_LIGHT_VERSION) { + return; + } + this.logger.info('start'); if (this.stopping) { this.logger.info('start is stopping wait'); diff --git a/scripts/package.sh b/scripts/package.sh index 18197e2c2..d27d44ea1 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -4,9 +4,6 @@ set -e yarn install --immutable \ && yarn --cwd arduino-ide-extension build \ -&& yarn test \ -&& yarn --cwd arduino-ide-extension test:slow \ -&& yarn --cwd arduino-ide-extension lint \ && yarn --cwd electron-app rebuild \ && yarn --cwd electron-app build \ && yarn --cwd electron-app package From 0b41378dca689ab39a90757362357cfd54439b7a Mon Sep 17 00:00:00 2001 From: Christian Sarnataro Date: Wed, 12 Mar 2025 11:10:32 +0100 Subject: [PATCH 2/2] Added timeout to yarn install --- scripts/package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/package.sh b/scripts/package.sh index d27d44ea1..d5dc2b5bd 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -2,7 +2,7 @@ set -e -yarn install --immutable \ +yarn install --immutable --network-timeout 10000000 \ && yarn --cwd arduino-ide-extension build \ && yarn --cwd electron-app rebuild \ && yarn --cwd electron-app build \