diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml index bd0c327b..6642a151 100644 --- a/.github/workflows/build-and-upload.yml +++ b/.github/workflows/build-and-upload.yml @@ -184,21 +184,26 @@ jobs: - name: Ensure rollup native binary run: npm install @rollup/rollup-darwin-x64 --no-save + - name: Prebuild (Tauri) + run: npm run prebuild --workspace @codenomad/tauri-app + - name: Ensure tauri native binary + working-directory: packages/tauri-app run: | set -euo pipefail for attempt in 1 2 3; do if [ "$attempt" -gt 1 ]; then echo "Retrying Tauri CLI install (attempt $attempt)..." fi - npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-darwin-x64@2.9.4 --no-save --no-audit --no-fund + npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-darwin-universal@2.9.4 @tauri-apps/cli-darwin-x64@2.9.4 --no-save --no-audit --no-fund --workspaces=false node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0 done echo "Tauri CLI failed to load after retries" >&2 exit 1 - name: Build macOS bundle (Tauri) - run: npm run build --workspace @codenomad/tauri-app + working-directory: packages/tauri-app + run: npm exec -- tauri build - name: Package Tauri artifacts (macOS) if: ${{ inputs.upload }} @@ -252,21 +257,26 @@ jobs: - name: Ensure rollup native binary run: npm install @rollup/rollup-darwin-arm64 --no-save + - name: Prebuild (Tauri) + run: npm run prebuild --workspace @codenomad/tauri-app + - name: Ensure tauri native binary + working-directory: packages/tauri-app run: | set -euo pipefail for attempt in 1 2 3; do if [ "$attempt" -gt 1 ]; then echo "Retrying Tauri CLI install (attempt $attempt)..." fi - npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-darwin-arm64@2.9.4 --no-save --no-audit --no-fund + npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-darwin-universal@2.9.4 @tauri-apps/cli-darwin-arm64@2.9.4 --no-save --no-audit --no-fund --workspaces=false node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0 done echo "Tauri CLI failed to load after retries" >&2 exit 1 - name: Build macOS bundle (Tauri, arm64) - run: npm run build --workspace @codenomad/tauri-app + working-directory: packages/tauri-app + run: npm exec -- tauri build - name: Package Tauri artifacts (macOS arm64) if: ${{ inputs.upload }} @@ -321,22 +331,28 @@ jobs: - name: Ensure rollup native binary run: npm install @rollup/rollup-win32-x64-msvc --no-save + - name: Prebuild (Tauri) + run: npm run prebuild --workspace @codenomad/tauri-app + - name: Ensure tauri native binary shell: bash + working-directory: packages/tauri-app run: | set -euo pipefail for attempt in 1 2 3; do if [ "$attempt" -gt 1 ]; then echo "Retrying Tauri CLI install (attempt $attempt)..." fi - npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-win32-x64-msvc@2.9.4 --no-save --no-audit --no-fund + npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-win32-x64-msvc@2.9.4 --no-save --no-audit --no-fund --workspaces=false node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0 done echo "Tauri CLI failed to load after retries" >&2 exit 1 - name: Build Windows bundle (Tauri) - run: npm run build --workspace @codenomad/tauri-app + shell: bash + working-directory: packages/tauri-app + run: npm exec -- tauri build - name: Package Tauri artifacts (Windows) if: ${{ inputs.upload }} @@ -405,21 +421,26 @@ jobs: - name: Ensure rollup native binary run: npm install @rollup/rollup-linux-x64-gnu --no-save + - name: Prebuild (Tauri) + run: npm run prebuild --workspace @codenomad/tauri-app + - name: Ensure tauri native binary + working-directory: packages/tauri-app run: | set -euo pipefail for attempt in 1 2 3; do if [ "$attempt" -gt 1 ]; then echo "Retrying Tauri CLI install (attempt $attempt)..." fi - npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-linux-x64-gnu@2.9.4 --no-save --no-audit --no-fund + npm install @tauri-apps/cli@2.9.4 @tauri-apps/cli-linux-x64-gnu@2.9.4 --no-save --no-audit --no-fund --workspaces=false node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0 done echo "Tauri CLI failed to load after retries" >&2 exit 1 - name: Build Linux bundle (Tauri) - run: npm run build --workspace @codenomad/tauri-app + working-directory: packages/tauri-app + run: npm exec -- tauri build - name: Package Tauri artifacts (Linux) if: ${{ inputs.upload }} diff --git a/packages/server/scripts/copy-opencode-config.mjs b/packages/server/scripts/copy-opencode-config.mjs index b04d276c..5e714395 100644 --- a/packages/server/scripts/copy-opencode-config.mjs +++ b/packages/server/scripts/copy-opencode-config.mjs @@ -10,6 +10,7 @@ const cliRoot = path.resolve(__dirname, "..") const sourceDir = path.resolve(cliRoot, "../opencode-config") const targetDir = path.resolve(cliRoot, "dist/opencode-config") const nodeModulesDir = path.resolve(sourceDir, "node_modules") +const selfLinkDir = path.resolve(nodeModulesDir, "@codenomad", "opencode-config") const npmExecPath = process.env.npm_execpath const npmNodeExecPath = process.env.npm_node_execpath @@ -49,6 +50,10 @@ if (!existsSync(nodeModulesDir)) { } } +// npm can create a self-referential link for scoped packages on Windows. +// That link causes recursive copies (ELOOP) during bundling. +rmSync(selfLinkDir, { recursive: true, force: true }) + rmSync(targetDir, { recursive: true, force: true }) mkdirSync(path.dirname(targetDir), { recursive: true }) cpSync(sourceDir, targetDir, { recursive: true })