From dfa50f125d610edb6beada666d66b03468360231 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Thu, 8 Jan 2026 16:19:01 -0800 Subject: [PATCH 1/3] fix: Remove nonexistent CHANGELOG.md copy from ARM build The workspace flattening removed this file. It contained only version headers without content: https://github.com/oscope-dev/scope/blob/46ec443f6d98332a696cbbf7380174f560e304bb/scope/CHANGELOG.md Curiously, only the linux-arm build included this file. Assisted-by: Claude Opus 4.5 via Claude Code --- .github/bin/build-with-cross.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/bin/build-with-cross.sh b/.github/bin/build-with-cross.sh index 9cca2a65..e546f096 100755 --- a/.github/bin/build-with-cross.sh +++ b/.github/bin/build-with-cross.sh @@ -14,7 +14,6 @@ rm -rf $ARTIFACT_DIR || true mkdir $ARTIFACT_DIR cp $DIR/../../LICENSE $ARTIFACT_DIR cp $DIR/../../README.md $ARTIFACT_DIR -cp $DIR/../../scope/CHANGELOG.md $ARTIFACT_DIR cp $DIR/../../target/$1/release/scope $ARTIFACT_DIR cp $DIR/../../target/$1/release/scope-intercept $ARTIFACT_DIR From 6f08905fffdf65c2d2eefbf1bc27f723bc6b307b Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Thu, 8 Jan 2026 16:28:21 -0800 Subject: [PATCH 2/3] fix: Point DotSlash macos-aarch64 to ARM Mac build x86 Mac build was removed; config still referenced it. Assisted-by: Claude Opus 4.5 via Claude Code --- .github/workflows/dotslash-config.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dotslash-config.json b/.github/workflows/dotslash-config.json index 8f893956..126bca1f 100644 --- a/.github/workflows/dotslash-config.json +++ b/.github/workflows/dotslash-config.json @@ -8,9 +8,9 @@ "path": "dev-scope-aarch64-apple-darwin/scope" }, "macos-aarch64": { - "regex": "^dev-scope-x86_64-apple-darwin", + "regex": "^dev-scope-aarch64-apple-darwin", "format": "tar.xz", - "path": "dev-scope-x86_64-apple-darwin/scope" + "path": "dev-scope-aarch64-apple-darwin/scope" }, "linux-aarch64": { "regex": "^dev-scope-aarch64-unknown-linux-gnu", @@ -32,9 +32,9 @@ "path": "dev-scope-aarch64-apple-darwin/scope-intercept" }, "macos-aarch64": { - "regex": "^dev-scope-x86_64-apple-darwin", + "regex": "^dev-scope-aarch64-apple-darwin", "format": "tar.xz", - "path": "dev-scope-x86_64-apple-darwin/scope-intercept" + "path": "dev-scope-aarch64-apple-darwin/scope-intercept" }, "linux-aarch64": { "regex": "^dev-scope-aarch64-unknown-linux-gnu", From 039033da15c1d1ae9a98af4eb70ab00da54c6b76 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Thu, 8 Jan 2026 16:39:33 -0800 Subject: [PATCH 3/3] refactor: Use native ARM runner for Linux ARM builds GitHub ARM runners eliminate need for cross-compilation via QEMU. Assisted-by: Claude Opus 4.5 via Claude Code --- .github/bin/build-with-cross.sh | 23 --------------------- .github/workflows/build-linux-arm.yml | 29 --------------------------- .github/workflows/release.yml | 24 ++++++---------------- Cross.toml | 4 ---- dist-workspace.toml | 16 +-------------- 5 files changed, 7 insertions(+), 89 deletions(-) delete mode 100755 .github/bin/build-with-cross.sh delete mode 100644 .github/workflows/build-linux-arm.yml delete mode 100644 Cross.toml diff --git a/.github/bin/build-with-cross.sh b/.github/bin/build-with-cross.sh deleted file mode 100755 index e546f096..00000000 --- a/.github/bin/build-with-cross.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -eux -DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)" - -# install cross if it doesn't exist -if ! command -v cross &> /dev/null; then - cargo install cross -fi - -cross build --release --target $1 - -ARTIFACT_DIR="$DIR/../../target/dev-scope-$1" -rm -rf $ARTIFACT_DIR || true -mkdir $ARTIFACT_DIR -cp $DIR/../../LICENSE $ARTIFACT_DIR -cp $DIR/../../README.md $ARTIFACT_DIR -cp $DIR/../../target/$1/release/scope $ARTIFACT_DIR -cp $DIR/../../target/$1/release/scope-intercept $ARTIFACT_DIR - -pushd $DIR/../../target -rm dev-scope-$1.tar.xz || true -tar cfJ dev-scope-$1.tar.xz dev-scope-$1 - diff --git a/.github/workflows/build-linux-arm.yml b/.github/workflows/build-linux-arm.yml deleted file mode 100644 index f21c12fe..00000000 --- a/.github/workflows/build-linux-arm.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Continuous integration -on: - # Defining workflow_call means that this workflow can be called from - # your main workflow job - workflow_call: - # cargo-dist exposes the plan from the plan step, as a JSON string, - # to your job if it needs it - inputs: - plan: - required: true - type: string - -jobs: - linux-arm: - name: Build Linux ARM Artifact - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: rustup update - - uses: Swatinem/rust-cache@v2 - - name: cargo build - run: .github/bin/build-with-cross.sh aarch64-unknown-linux-gnu - - name: Upload ARM Linux - uses: actions/upload-artifact@v4 - with: - name: artifacts-build-local-aarch64-unknown-linux-gnu - path: | - target/dev-scope-aarch64-unknown-linux-gnu.tar.xz - if-no-files-found: error diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 630a297a..e42806d8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,7 +47,7 @@ on: jobs: # Run 'dist plan' (or host) to determine what tasks we need to do plan: - runs-on: "ubuntu-latest" + runs-on: "ubuntu-22.04" outputs: val: ${{ steps.plan.outputs.manifest }} tag: ${{ !github.event.pull_request && github.ref_name || '' }} @@ -165,22 +165,12 @@ jobs: ${{ steps.cargo-dist.outputs.paths }} ${{ env.BUILD_MANIFEST_NAME }} - custom-build-linux-arm: - needs: - - plan - if: ${{ needs.plan.outputs.publishing == 'true' || fromJson(needs.plan.outputs.val).ci.github.pr_run_mode == 'upload' }} - uses: ./.github/workflows/build-linux-arm.yml - with: - plan: ${{ needs.plan.outputs.val }} - secrets: inherit - # Build and package all the platform-agnostic(ish) things build-global-artifacts: needs: - plan - build-local-artifacts - - custom-build-linux-arm - runs-on: "ubuntu-latest" + runs-on: "ubuntu-22.04" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} BUILD_MANIFEST_NAME: target/distrib/global-dist-manifest.json @@ -226,7 +216,6 @@ jobs: needs: - plan - build-local-artifacts - - custom-build-linux-arm uses: ./.github/workflows/build-linux-pkgs.yml with: plan: ${{ needs.plan.outputs.val }} @@ -236,14 +225,13 @@ jobs: needs: - plan - build-local-artifacts - - custom-build-linux-arm - build-global-artifacts - custom-build-linux-pkgs # Only run if we're "publishing", and only if plan, local and global didn't fail (skipped is fine) - if: ${{ always() && needs.plan.result == 'success' && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.custom-build-linux-pkgs.result == 'skipped' || needs.custom-build-linux-pkgs.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') && (needs.custom-build-linux-arm.result == 'skipped' || needs.custom-build-linux-arm.result == 'success') }} + if: ${{ always() && needs.plan.result == 'success' && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.custom-build-linux-pkgs.result == 'skipped' || needs.custom-build-linux-pkgs.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - runs-on: "ubuntu-latest" + runs-on: "ubuntu-22.04" outputs: val: ${{ steps.host.outputs.manifest }} steps: @@ -304,7 +292,7 @@ jobs: needs: - plan - host - runs-on: "ubuntu-latest" + runs-on: "ubuntu-22.04" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} PLAN: ${{ needs.plan.outputs.val }} @@ -355,7 +343,7 @@ jobs: # still allowing individual publish jobs to skip themselves (for prereleases). # "host" however must run to completion, no skipping allowed! if: ${{ always() && needs.host.result == 'success' && (needs.publish-homebrew-formula.result == 'skipped' || needs.publish-homebrew-formula.result == 'success') }} - runs-on: "ubuntu-latest" + runs-on: "ubuntu-22.04" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: diff --git a/Cross.toml b/Cross.toml deleted file mode 100644 index 74614a63..00000000 --- a/Cross.toml +++ /dev/null @@ -1,4 +0,0 @@ -[build.env] -passthrough = [ - "VERSION", -] \ No newline at end of file diff --git a/dist-workspace.toml b/dist-workspace.toml index 14dbf16f..eaf186b5 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -12,7 +12,7 @@ installers = ["shell", "homebrew"] # A GitHub repo to push Homebrew formulas to tap = "oscope-dev/homebrew-formulas" # Target platforms to build apps for (Rust target-triple syntax) -targets = ["aarch64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl"] +targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl"] # Global artifacts jobs to run in CI global-artifacts-jobs = ["./build-linux-pkgs"] # Publish jobs to run in CI @@ -23,21 +23,7 @@ pr-run-mode = "plan" publish-prereleases = true # Post-announce jobs to run in CI post-announce-jobs = ["./dotslash"] -# Local artifacts jobs to run in CI -local-artifacts-jobs = ["./build-linux-arm"] # Path that installers should place binaries in install-path = "CARGO_HOME" # Whether to install an updater program install-updater = false - -[dist.github-custom-runners] -global = "ubuntu-latest" - -[dist.github-custom-runners.x86_64-unknown-linux-gnu] -runner = "ubuntu-latest" - -[dist.github-custom-runners.x86_64-unknown-linux-musl] -runner = "ubuntu-latest" - -[dist.github-custom-runners.aarch64-apple-darwin] -runner = "macos-latest"