From d8b2468e886a4199f8b3649f19cdf3d75cb15cd5 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 29 Apr 2025 13:50:15 -0400 Subject: [PATCH 01/10] Install rustup on windows (including ARM) The x86 logic might be overkill since right now x86 Windows images already have it installed, but figured might as well support it just in case. Closes #143 --- action.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/action.yml b/action.yml index 5281d42..79bbd03 100644 --- a/action.yml +++ b/action.yml @@ -75,6 +75,16 @@ runs: if: runner.os != 'Windows' shell: bash + - run: | + : install rustup if needed on windows + if ! command -v rustup &>/dev/null; then + curl -LOs https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe + ./rustup-init.exe -y --default-toolchain none --no-modify-path + echo "$USERPROFILE/.cargo/bin" >> "$GITHUB_PATH" + fi + if: runner.os == 'Windows' + shell: bash + - name: rustup toolchain install ${{steps.parse.outputs.toolchain}} run: rustup toolchain install ${{steps.parse.outputs.toolchain}}${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update shell: bash From 113d6388db4c8b4861ba2d5103dd4c1520cac909 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 29 Apr 2025 14:01:03 -0400 Subject: [PATCH 02/10] Add ubuntu and windows arm to CI --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 39b7cef..0c593ab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,15 +12,15 @@ permissions: jobs: install: - name: Rust ${{matrix.rust}} on ${{matrix.os == 'ubuntu' && 'Linux' || matrix.os == 'macos' && 'macOS' || matrix.os == 'windows' && 'Windows' || '???'}} - runs-on: ${{matrix.os}}-latest + name: Rust ${{matrix.rust}} on ${{matrix.os}} + runs-on: ${{matrix.os}} strategy: fail-fast: false matrix: - os: [ubuntu, macos, windows] + os: [ubuntu-latest, macos-latest, windows-latest, windows-11-arm, ubuntu-22.04-arm] rust: [nightly, beta, stable, 1.62.0, stable 18 months ago, stable minus 8 releases] include: - - os: ubuntu + - os: ubuntu-latest rust: 1.0.0 timeout-minutes: 45 steps: From 1c80aedd72f6b55cdffe0b63b7298a9a27d7080d Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 11:36:50 -0700 Subject: [PATCH 03/10] Align curl and rustup-init flags between windows and non-windows --- action.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/action.yml b/action.yml index 79bbd03..d7b092a 100644 --- a/action.yml +++ b/action.yml @@ -69,7 +69,7 @@ runs: - run: | : install rustup if needed if ! command -v rustup &>/dev/null; then - curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y + curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://sh.rustup.rs | sh -s -- --default-toolchain none -y echo "$CARGO_HOME/bin" >> $GITHUB_PATH fi if: runner.os != 'Windows' @@ -78,9 +78,9 @@ runs: - run: | : install rustup if needed on windows if ! command -v rustup &>/dev/null; then - curl -LOs https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe - ./rustup-init.exe -y --default-toolchain none --no-modify-path - echo "$USERPROFILE/.cargo/bin" >> "$GITHUB_PATH" + curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail --remote-name https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe + ./rustup-init.exe --default-toolchain none --no-modify-path -y + echo "$USERPROFILE/.cargo/bin" >> $GITHUB_PATH fi if: runner.os == 'Windows' shell: bash From 1f3b09e73e33ebceb2205a60e7b0b8de0a5e0b7b Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 11:42:31 -0700 Subject: [PATCH 04/10] Download rustup-init.exe to temp dir instead of current dir --- action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/action.yml b/action.yml index d7b092a..18f8e55 100644 --- a/action.yml +++ b/action.yml @@ -78,8 +78,8 @@ runs: - run: | : install rustup if needed on windows if ! command -v rustup &>/dev/null; then - curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail --remote-name https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe - ./rustup-init.exe --default-toolchain none --no-modify-path -y + curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe --output '${{runner.temp}}\rustup-init.exe' + '${{runner.temp}}\rustup-init.exe' --default-toolchain none --no-modify-path -y echo "$USERPROFILE/.cargo/bin" >> $GITHUB_PATH fi if: runner.os == 'Windows' From 802126c77d87c59c86423d5aae014ef82a599ce8 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 11:58:18 -0700 Subject: [PATCH 05/10] Consistently use backslash directories on Windows --- action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/action.yml b/action.yml index 18f8e55..053c4a0 100644 --- a/action.yml +++ b/action.yml @@ -63,14 +63,14 @@ runs: - run: | : set $CARGO_HOME - echo CARGO_HOME=${CARGO_HOME:-${{runner.os == 'Windows' && '$USERPROFILE' || '$HOME'}}/.cargo} >> $GITHUB_ENV + echo CARGO_HOME=${CARGO_HOME:-'${{runner.os == 'Windows' && '$USERPROFILE\.cargo' || '$HOME/.cargo'}}'} >> $GITHUB_ENV shell: bash - run: | : install rustup if needed if ! command -v rustup &>/dev/null; then curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://sh.rustup.rs | sh -s -- --default-toolchain none -y - echo "$CARGO_HOME/bin" >> $GITHUB_PATH + echo '$CARGO_HOME/bin' >> $GITHUB_PATH fi if: runner.os != 'Windows' shell: bash @@ -80,7 +80,7 @@ runs: if ! command -v rustup &>/dev/null; then curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe --output '${{runner.temp}}\rustup-init.exe' '${{runner.temp}}\rustup-init.exe' --default-toolchain none --no-modify-path -y - echo "$USERPROFILE/.cargo/bin" >> $GITHUB_PATH + echo '$USERPROFILE\.cargo\bin' >> $GITHUB_PATH fi if: runner.os == 'Windows' shell: bash From f36efbae07412b50fdfff84f529028c7096ba259 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 12:09:07 -0700 Subject: [PATCH 06/10] Fix GITHUB_PATH --- action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/action.yml b/action.yml index 053c4a0..74519b3 100644 --- a/action.yml +++ b/action.yml @@ -63,14 +63,14 @@ runs: - run: | : set $CARGO_HOME - echo CARGO_HOME=${CARGO_HOME:-'${{runner.os == 'Windows' && '$USERPROFILE\.cargo' || '$HOME/.cargo'}}'} >> $GITHUB_ENV + echo CARGO_HOME=${CARGO_HOME:-"${{runner.os == 'Windows' && '$USERPROFILE\.cargo' || '$HOME/.cargo'}}"} >> $GITHUB_ENV shell: bash - run: | : install rustup if needed if ! command -v rustup &>/dev/null; then curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://sh.rustup.rs | sh -s -- --default-toolchain none -y - echo '$CARGO_HOME/bin' >> $GITHUB_PATH + echo "$CARGO_HOME/bin" >> $GITHUB_PATH fi if: runner.os != 'Windows' shell: bash @@ -80,7 +80,7 @@ runs: if ! command -v rustup &>/dev/null; then curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe --output '${{runner.temp}}\rustup-init.exe' '${{runner.temp}}\rustup-init.exe' --default-toolchain none --no-modify-path -y - echo '$USERPROFILE\.cargo\bin' >> $GITHUB_PATH + echo "$USERPROFILE\.cargo\bin" >> $GITHUB_PATH fi if: runner.os == 'Windows' shell: bash From eceb16e78c7dba252604060bc8d089c511dd6b7d Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 12:09:58 -0700 Subject: [PATCH 07/10] Respect pre-existing CARGO_HOME on Windows --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 74519b3..2b76568 100644 --- a/action.yml +++ b/action.yml @@ -80,7 +80,7 @@ runs: if ! command -v rustup &>/dev/null; then curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe --output '${{runner.temp}}\rustup-init.exe' '${{runner.temp}}\rustup-init.exe' --default-toolchain none --no-modify-path -y - echo "$USERPROFILE\.cargo\bin" >> $GITHUB_PATH + echo "$CARGO_HOME\bin" >> $GITHUB_PATH fi if: runner.os == 'Windows' shell: bash From d69c8f6cd52ebafebc5f69693edd9af1181555ab Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 12:07:34 -0700 Subject: [PATCH 08/10] Use rustup.rs advertised download URLs --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 2b76568..5d5cd1c 100644 --- a/action.yml +++ b/action.yml @@ -78,7 +78,7 @@ runs: - run: | : install rustup if needed on windows if ! command -v rustup &>/dev/null; then - curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://static.rust-lang.org/rustup/dist/${{ runner.arch == 'ARM64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/rustup-init.exe --output '${{runner.temp}}\rustup-init.exe' + curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://win.rustup.rs/${{runner.arch == 'ARM64' && 'aarch64' || 'x86_64'}} --output '${{runner.temp}}\rustup-init.exe' '${{runner.temp}}\rustup-init.exe' --default-toolchain none --no-modify-path -y echo "$CARGO_HOME\bin" >> $GITHUB_PATH fi From 6ff96e92a9257c99b1465dfa039b4a9eb9acc9dd Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 12:19:55 -0700 Subject: [PATCH 09/10] Clean up trailing whitespace from PR 145 --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 5d5cd1c..c68a596 100644 --- a/action.yml +++ b/action.yml @@ -84,7 +84,7 @@ runs: fi if: runner.os == 'Windows' shell: bash - + - name: rustup toolchain install ${{steps.parse.outputs.toolchain}} run: rustup toolchain install ${{steps.parse.outputs.toolchain}}${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update shell: bash From b24a9c9a31972c7802be7ed5747634beec388406 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 29 Apr 2025 12:23:56 -0700 Subject: [PATCH 10/10] toolchain: 1.94.0 --- action.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/action.yml b/action.yml index c68a596..34a23c2 100644 --- a/action.yml +++ b/action.yml @@ -6,9 +6,6 @@ branding: color: purple inputs: - toolchain: - description: Rust toolchain specification -- see https://rust-lang.github.io/rustup/concepts/toolchains.html#toolchain-specification - required: true targets: description: Comma-separated list of target triples to install for this toolchain required: false @@ -47,7 +44,7 @@ runs: echo "toolchain=$toolchain" >> $GITHUB_OUTPUT fi env: - toolchain: ${{inputs.toolchain}} + toolchain: 1.94.0 shell: bash - id: flags