Fix Tauri builds and Windows opencode-config loop
This commit is contained in:
37
.github/workflows/build-and-upload.yml
vendored
37
.github/workflows/build-and-upload.yml
vendored
@@ -184,21 +184,26 @@ jobs:
|
|||||||
- name: Ensure rollup native binary
|
- name: Ensure rollup native binary
|
||||||
run: npm install @rollup/rollup-darwin-x64 --no-save
|
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
|
- name: Ensure tauri native binary
|
||||||
|
working-directory: packages/tauri-app
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
for attempt in 1 2 3; do
|
for attempt in 1 2 3; do
|
||||||
if [ "$attempt" -gt 1 ]; then
|
if [ "$attempt" -gt 1 ]; then
|
||||||
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
||||||
fi
|
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
|
node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0
|
||||||
done
|
done
|
||||||
echo "Tauri CLI failed to load after retries" >&2
|
echo "Tauri CLI failed to load after retries" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
- name: Build macOS bundle (Tauri)
|
- 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)
|
- name: Package Tauri artifacts (macOS)
|
||||||
if: ${{ inputs.upload }}
|
if: ${{ inputs.upload }}
|
||||||
@@ -252,21 +257,26 @@ jobs:
|
|||||||
- name: Ensure rollup native binary
|
- name: Ensure rollup native binary
|
||||||
run: npm install @rollup/rollup-darwin-arm64 --no-save
|
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
|
- name: Ensure tauri native binary
|
||||||
|
working-directory: packages/tauri-app
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
for attempt in 1 2 3; do
|
for attempt in 1 2 3; do
|
||||||
if [ "$attempt" -gt 1 ]; then
|
if [ "$attempt" -gt 1 ]; then
|
||||||
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
||||||
fi
|
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
|
node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0
|
||||||
done
|
done
|
||||||
echo "Tauri CLI failed to load after retries" >&2
|
echo "Tauri CLI failed to load after retries" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
- name: Build macOS bundle (Tauri, arm64)
|
- 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)
|
- name: Package Tauri artifacts (macOS arm64)
|
||||||
if: ${{ inputs.upload }}
|
if: ${{ inputs.upload }}
|
||||||
@@ -321,22 +331,28 @@ jobs:
|
|||||||
- name: Ensure rollup native binary
|
- name: Ensure rollup native binary
|
||||||
run: npm install @rollup/rollup-win32-x64-msvc --no-save
|
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
|
- name: Ensure tauri native binary
|
||||||
shell: bash
|
shell: bash
|
||||||
|
working-directory: packages/tauri-app
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
for attempt in 1 2 3; do
|
for attempt in 1 2 3; do
|
||||||
if [ "$attempt" -gt 1 ]; then
|
if [ "$attempt" -gt 1 ]; then
|
||||||
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
||||||
fi
|
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
|
node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0
|
||||||
done
|
done
|
||||||
echo "Tauri CLI failed to load after retries" >&2
|
echo "Tauri CLI failed to load after retries" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
- name: Build Windows bundle (Tauri)
|
- 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)
|
- name: Package Tauri artifacts (Windows)
|
||||||
if: ${{ inputs.upload }}
|
if: ${{ inputs.upload }}
|
||||||
@@ -405,21 +421,26 @@ jobs:
|
|||||||
- name: Ensure rollup native binary
|
- name: Ensure rollup native binary
|
||||||
run: npm install @rollup/rollup-linux-x64-gnu --no-save
|
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
|
- name: Ensure tauri native binary
|
||||||
|
working-directory: packages/tauri-app
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
for attempt in 1 2 3; do
|
for attempt in 1 2 3; do
|
||||||
if [ "$attempt" -gt 1 ]; then
|
if [ "$attempt" -gt 1 ]; then
|
||||||
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
echo "Retrying Tauri CLI install (attempt $attempt)..."
|
||||||
fi
|
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
|
node -e "require('@tauri-apps/cli'); console.log('Tauri CLI loaded')" && exit 0
|
||||||
done
|
done
|
||||||
echo "Tauri CLI failed to load after retries" >&2
|
echo "Tauri CLI failed to load after retries" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
- name: Build Linux bundle (Tauri)
|
- 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)
|
- name: Package Tauri artifacts (Linux)
|
||||||
if: ${{ inputs.upload }}
|
if: ${{ inputs.upload }}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ const cliRoot = path.resolve(__dirname, "..")
|
|||||||
const sourceDir = path.resolve(cliRoot, "../opencode-config")
|
const sourceDir = path.resolve(cliRoot, "../opencode-config")
|
||||||
const targetDir = path.resolve(cliRoot, "dist/opencode-config")
|
const targetDir = path.resolve(cliRoot, "dist/opencode-config")
|
||||||
const nodeModulesDir = path.resolve(sourceDir, "node_modules")
|
const nodeModulesDir = path.resolve(sourceDir, "node_modules")
|
||||||
|
const selfLinkDir = path.resolve(nodeModulesDir, "@codenomad", "opencode-config")
|
||||||
const npmExecPath = process.env.npm_execpath
|
const npmExecPath = process.env.npm_execpath
|
||||||
const npmNodeExecPath = process.env.npm_node_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 })
|
rmSync(targetDir, { recursive: true, force: true })
|
||||||
mkdirSync(path.dirname(targetDir), { recursive: true })
|
mkdirSync(path.dirname(targetDir), { recursive: true })
|
||||||
cpSync(sourceDir, targetDir, { recursive: true })
|
cpSync(sourceDir, targetDir, { recursive: true })
|
||||||
|
|||||||
Reference in New Issue
Block a user