From e39f95584ce2c452d65d19a0b8adfae3a336a706 Mon Sep 17 00:00:00 2001 From: Sparsh Date: Sun, 10 May 2026 23:47:30 +0530 Subject: [PATCH] refactor(package.mjs): remove deprecated Node version checks and rebuild logic --- gitnexus-desktop/scripts/package.mjs | 110 --------------------------- 1 file changed, 110 deletions(-) diff --git a/gitnexus-desktop/scripts/package.mjs b/gitnexus-desktop/scripts/package.mjs index 1d27bb877..b261a73fe 100644 --- a/gitnexus-desktop/scripts/package.mjs +++ b/gitnexus-desktop/scripts/package.mjs @@ -28,19 +28,6 @@ const electronVersion = desktopPackageJson.devDependencies?.electron?.replace(/^[^\d]*/, '') ?? '41.2.1'; const electronBuilderVersion = desktopPackageJson.devDependencies?.['electron-builder']?.replace(/^[^\d]*/, '') ?? '26.8.1'; -const [nodeMajorVersion = 0, nodeMinorVersion = 0] = process.versions.node - .split('.') - .map((segment) => Number.parseInt(segment, 10)); -const supportsElectronRebuildV4 = - nodeMajorVersion > 22 || (nodeMajorVersion === 22 && nodeMinorVersion >= 12); -// electron-rebuild v4 requires Node >= 22.12. Keep a v3 fallback for local Node 20 usage. -const electronRebuildVersion = supportsElectronRebuildV4 ? '4.0.3' : '3.7.2'; - -if (!supportsElectronRebuildV4) { - console.warn( - `[build] Node ${process.versions.node} detected; using electron-rebuild@${electronRebuildVersion}. Node 22.12+ is recommended for Electron ${electronVersion}.`, - ); -} const electronBuilderCliPath = path.join(packageRoot, 'node_modules', 'electron-builder', 'cli.js'); const builderUtilRequire = createRequire( path.join(packageRoot, 'node_modules', 'builder-util', 'out', 'util.js'), @@ -81,7 +68,6 @@ const allowedBuilderArgs = new Set([ const artifactFileExtensions = new Set(['.AppImage', '.dmg', '.exe', '.msi', '.zip']); const gitnexusRuntimeDependencyNames = Object.keys(gitnexusPackageJson.dependencies ?? {}); const npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm'; -const npxCommand = process.platform === 'win32' ? 'npx.cmd' : 'npx'; const packagedResourceEntries = [ { from: path.join(gitnexusWebRoot, 'dist'), @@ -195,43 +181,6 @@ const runCommand = (command, args, cwd, extraEnv = {}) => { }); }; -const patchBindingGypInPlace = (gypPath) => { - let descriptor; - - try { - descriptor = fs.openSync(gypPath, 'r+'); - } catch (error) { - if (error?.code === 'ENOENT') { - return false; - } - - throw error; - } - - try { - const original = fs.readFileSync(descriptor, 'utf8'); - - if (!original.includes('c++17')) { - return false; - } - - const patched = original - .replaceAll('-std=c++17', '-std=c++20') - .replaceAll('/std:c++17', '/std:c++20') - .replaceAll('"c++17"', '"c++20"'); - - if (patched === original) { - return false; - } - - fs.ftruncateSync(descriptor, 0); - fs.writeSync(descriptor, patched, 0, 'utf8'); - return true; - } finally { - fs.closeSync(descriptor); - } -}; - const mirrorDirectory = (sourceDirectory, destinationDirectory) => { if (process.platform === 'win32') { fs.mkdirSync(destinationDirectory, { recursive: true }); @@ -338,64 +287,6 @@ const syncPackagedRuntimeResources = () => { } }; -const rebuildPackagedNativeModules = () => { - const resourceRoots = resolvePackagedResourceRoots(); - - if (resourceRoots.length === 0) { - return; - } - - for (const resourceRoot of resourceRoots) { - const packagedRuntimeRoot = path.join(resourceRoot, 'gitnexus'); - const packagedNodeModulesRoot = path.join(packagedRuntimeRoot, 'node_modules'); - const packagedRuntimePackageJson = path.join(packagedRuntimeRoot, 'package.json'); - - if (!fs.existsSync(packagedNodeModulesRoot)) { - continue; - } - - if (!fs.existsSync(packagedRuntimePackageJson)) { - console.warn( - `[build] skipping native module rebuild because runtime package.json is missing at ${packagedRuntimePackageJson}`, - ); - continue; - } - - const rebuildCommandArgs = [ - '--yes', - '-p', - `@electron/rebuild@${electronRebuildVersion}`, - 'electron-rebuild', - '--force', - '--types', - 'prod,optional', - '--version', - electronVersion, - '--module-dir', - packagedRuntimeRoot, - ...(process.platform === 'win32' ? ['--sequential'] : []), - ]; - - console.log( - `[build] rebuilding packaged native modules for Electron ${electronVersion} in ${packagedRuntimeRoot}`, - ); - - // node-tree-sitter's binding.gyp hardcodes -std=c++17 / /std:c++17 across - // all published versions. Electron 41's V8 headers require C++20. Env-var - // overrides (CXXFLAGS, CL) don't help because GYP places per-target - // cflags_cc AFTER environment flags, and the last -std= flag wins. Patch - // the binding.gyp files directly before rebuilding. - for (const entry of fs.readdirSync(packagedNodeModulesRoot, { withFileTypes: true })) { - if (!entry.isDirectory()) continue; - const gypPath = path.join(packagedNodeModulesRoot, entry.name, 'binding.gyp'); - if (patchBindingGypInPlace(gypPath)) { - console.log(`[build] patched ${gypPath}: c++17 → c++20 for Electron ${electronVersion}`); - } - } - runCommand(npxCommand, rebuildCommandArgs, packagedRuntimeRoot); - } -}; - const repairAppBuilderLibPackage = () => { const repairDirectory = fs.mkdtempSync( path.join(os.tmpdir(), 'gitnexus-desktop-app-builder-lib-'), @@ -543,7 +434,6 @@ runCommand(npmCommand, ['run', 'build'], gitnexusWebRoot); runCommand(process.execPath, builderCliArgs, packageRoot, builderEnvironment); syncPackagedRuntimeResources(); -rebuildPackagedNativeModules(); const artifacts = listArtifacts(outputDir);