Skip to content

Commit

Permalink
Add msys2 option
Browse files Browse the repository at this point in the history
  • Loading branch information
mosteo committed Oct 9, 2024
1 parent b607671 commit 3412af6
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 15 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/checkin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ jobs:
check_pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: "npm ci"
run: npm ci
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# Changes to the v2 branch must be proposed via PRs in the branch
# v3-next. This way we can check the action just as GHA is going to
# use it.

name: Test cache

on:
Expand Down
22 changes: 17 additions & 5 deletions .github/workflows/selftest.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# Changes to the v2 branch must be proposed via PRs in the branch
# v2-next. This way we can check the action just as GHA is going to
# use it.

name: Selftest

on:
Expand All @@ -14,8 +10,11 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-12, macos-14, windows-latest]
os: [ubuntu-latest, macos-12, macos-14, windows-latest]
target: [stable, nightly, source]
msys2: [true, false]
# A bit redundant for non-windows platforms, but let's keep things
# simple for the very rare times this workflow is run

runs-on: ${{ matrix.os }}

Expand All @@ -28,6 +27,7 @@ jobs:
uses: ./ # This uses the action code in the current PR
if: matrix.target == 'stable'
with:
msys2: ${{ matrix.msys2 }}
cache: false
# We test without cache, as caching is tested in a separate workflow.
# This way we make sure the cache isn't hiding any issue.
Expand All @@ -36,13 +36,15 @@ jobs:
uses: ./
if: matrix.target == 'nightly'
with:
msys2: ${{ matrix.msys2 }}
version: nightly
cache: false

- name: Setup from source (master)
uses: ./
if: matrix.target == 'source'
with:
msys2: ${{ matrix.msys2 }}
branch: master
cache: false

Expand All @@ -59,3 +61,13 @@ jobs:
- run: alr -n version | grep "os:" | grep WINDOWS
if: matrix.os == 'windows-latest'
shell: bash

# Verify proper msys2 behavior

- run: alr -n version | grep "distribution:" | grep MSYS2
if: matrix.os == 'windows-latest' && matrix.msys2 == true
shell: bash

- run: alr -n version | grep "distribution:" | grep UNKNOWN
if: matrix.os == 'windows-latest' && matrix.msys2 == false
shell: bash
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ inputs:
description: Arguments to pass to `alr toolchain` after setup.
required: false
default: 'gnat_native gprbuild'
toolchain_dir:
description: Location to install the toolchain under.
msys2:
description: Whether to install MSYS2 on Windows. When false, `msys2.do_not_install` will be set to true in alire's settings.
required: false
default: ''
default: true
cache:
description: Whether to reuse a cached previous install.
required: false
Expand Down
10 changes: 8 additions & 2 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ inputs:
description: Arguments to pass to `alr toolchain` after setup.
required: false
default: 'gnat_native gprbuild'
msys2:
description: Whether to install MSYS2 on Windows. When false, `msys2.do_not_install` will be set to true in alire's settings.
required: false
default: true
cache:
description: Whether to reuse a cached previous install.
required: false
Expand Down Expand Up @@ -50,7 +54,7 @@ runs:
id: cache-key
shell: bash
run: |
echo "key=alr[1][${{ steps.find-hash.outputs.version }}][${{ inputs.toolchain }}][${{ runner.os }}][${{ runner.arch }}][${{ steps.find-hash.outputs.hash }}]" >> $GITHUB_OUTPUT
echo "key=alr[1][${{steps.find-hash.outputs.version}}][${{inputs.toolchain}}][msys2=${{inputs.msys2}}][${{runner.os}}][${{runner.arch}}][${{steps.find-hash.outputs.hash}}]" >> $GITHUB_OUTPUT
# The first value in square brackets is to make the key unique for debugging

- name: Reuse cached installation
Expand Down Expand Up @@ -107,7 +111,8 @@ runs:
shell: bash
run: echo "need=true" >> $GITHUB_OUTPUT

# Download a stable alr capable of installing a toolchain
# Download a stable alr capable of installing a toolchain. Avoid to install
# a msys2 at this point which is not needed and confuses later tests.
- name: Install GNAT (I)
if: steps.need-GNAT.outputs.need == 'true'
shell: bash
Expand All @@ -118,6 +123,7 @@ runs:
unzip -o alr-${alr_version}-bin-x86_64-${os_lower}.zip "bin/alr*" -d tmp_alr
rm alr-${alr_version}-bin-x86_64-${os_lower}.zip
echo "$(pwd -W 2>/dev/null || pwd)/tmp_alr/bin" >> $GITHUB_PATH
tmp_alr/alr settings --global --set msys2.do_not_install true
# Perform the actual `alr install` and remove the `alr` just used to avoid
# conflicts with the `alr` being built.
Expand Down
17 changes: 17 additions & 0 deletions lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,17 +127,22 @@ function run() {
try {
var version;
var branch;
var msys2;
var tool_args;
if (process.argv[2]) { // e.g., node lib/script.js <json object>
const inputs = JSON.parse(process.argv[2]);
// Log the inputs for the record
console.log("Inputs: " + process.argv[2]);
version = inputs.version;
branch = inputs.branch;
msys2 = inputs.msys2 == "true";
tool_args = inputs.toolchain;
}
else {
// Old way in case this is fixed by GH
version = core.getInput('version');
branch = core.getInput('branch');
msys2 = core.getInput('msys2') == "true";
tool_args = core.getInput('toolchain');
}
// Install the requested version/branch unless cached
Expand All @@ -159,6 +164,18 @@ function run() {
yield exec.exec(`alr -n settings --global --set index.auto_update_asked true`);
console.log("Enabled index auto-refresh without further asking.");
}
// Disable msys2 installation if requested
if (process.platform == "win32") {
if (msys2) {
// Re-enable in case it was disabled during previous actions steps
yield exec.exec(`alr -n settings --global --set msys2.do_not_install false`);
console.log(`MSYS2 installation NOT disabled (msys2=${msys2})`);
}
else {
yield exec.exec(`alr -n settings --global --set msys2.do_not_install true`);
console.log(`MSYS2 installation DISABLED (msys2=${msys2})`);
}
}
// And configure the toolchain
if (tool_args.length > 0 && !cached) {
yield exec.exec(`alr -n toolchain ${tool_args != "--disable-assistant" ? "--select " : ""} ${tool_args}`);
Expand Down
19 changes: 19 additions & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,17 +103,24 @@ async function run() {
try {
var version : string
var branch : string
var msys2 : boolean
var tool_args : string

if (process.argv[2]) { // e.g., node lib/script.js <json object>
const inputs = JSON.parse(process.argv[2])

// Log the inputs for the record
console.log("Inputs: " + process.argv[2])

version = inputs.version
branch = inputs.branch
msys2 = inputs.msys2 == "true";
tool_args = inputs.toolchain
} else {
// Old way in case this is fixed by GH
version = core.getInput('version');
branch = core.getInput('branch');
msys2 = core.getInput('msys2') == "true";
tool_args = core.getInput('toolchain');
}

Expand All @@ -140,6 +147,18 @@ async function run() {
console.log("Enabled index auto-refresh without further asking.");
}

// Disable msys2 installation if requested
if (process.platform == "win32") {
if (msys2) {
// Re-enable in case it was disabled during previous actions steps
await exec.exec(`alr -n settings --global --set msys2.do_not_install false`);
console.log(`MSYS2 installation NOT disabled (msys2=${msys2})`);
} else {
await exec.exec(`alr -n settings --global --set msys2.do_not_install true`);
console.log(`MSYS2 installation DISABLED (msys2=${msys2})`);
}
}

// And configure the toolchain
if (tool_args.length > 0 && !cached) {
await exec.exec(`alr -n toolchain ${tool_args != "--disable-assistant" ? "--select " : ""} ${tool_args}`);
Expand Down

0 comments on commit 3412af6

Please sign in to comment.