Compare commits

..

2 Commits
v2 ... v2.4.0

Author SHA1 Message Date
Ian Butterworth
512e2ab44f add dist 2024-08-30 12:23:18 -04:00
Ian Butterworth
b24d05912f Add production dependencies & build 2024-08-30 12:20:50 -04:00
19 changed files with 1733 additions and 3037 deletions

36
.github/workflows/checkin.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: "PR Checks"
on: [pull_request, push]
concurrency:
# Skip intermediate builds: all builds except for builds on the `master`, `main`, or `release-*` branches
# Cancel intermediate builds: only pull request builds
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.ref != 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release-') || github.run_number }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
jobs:
check_pr:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '.tool-versions'
- name: "npm ci"
run: npm ci
- name: "npm run build"
run: npm run build
- name: "npm run test"
run: npm run test
- name: "check for uncommitted changes"
# Ensure no changes, but ignore node_modules dir since dev/fresh ci deps installed.
run: |
git diff --exit-code --stat -- . ':!node_modules' \
|| (echo "##[error] found changed files after build. please 'npm ci && npm run build'" \
"and check in all changes" \
&& exit 1)

View File

@@ -27,13 +27,6 @@ jobs:
exclude: exclude:
- os: macOS-latest - os: macOS-latest
julia-arch: x86 julia-arch: x86
include:
- os: macOS-latest
julia-arch: aarch64
julia-version: 'lts'
- os: macOS-latest
julia-arch: aarch64
julia-version: '1'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4

View File

@@ -1,222 +0,0 @@
name: PR Checks
on:
pull_request:
push:
branches:
- master
tags: '*'
concurrency:
# Skip intermediate builds: all builds except for builds on the `master` branch
# Cancel intermediate builds: only pull request builds
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
permissions:
contents: read
jobs:
finalize-pr-checks:
if: always() # this line is important to keep the `finalize` job from being marked as skipped; do not change or delete this line
runs-on: ubuntu-latest
timeout-minutes: 10
needs:
- checked-in-files
- build
- npm-run-test
- make-targets
- stalecheck-npm-install
steps:
- run: |
echo checked-in-files: ${{ needs.checked-in-files.result }}
echo build: ${{ needs.build.result }}
echo npm-run-test: ${{ needs.npm-run-test.result }}
echo make-targets: ${{ needs.make-targets.result }}
echo stalecheck-npm-install: ${{ needs.stalecheck-npm-install.result }}
- run: exit 1
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
checked-in-files:
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
### Check out the repo:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
persist-credentials: false
### Cleanall:
- run: make cleanall
### Install NodeJS
# Unix (non-Windows):
- uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6
if: runner.os != 'Windows'
- run: make unix-asdf-install
if: runner.os != 'Windows'
# Windows:
# Windows does not support asdf, so we have to use `actions/setup-node`
# to install asdf:
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b
if: runner.os == 'Windows'
with:
node-version-file: '.tool-versions'
### Install the NodeJS packages that we depend on:
- run: make install-packages
### Print some debugging info:
- name: Print the NodeJS version (for debugging)
run: |
which -a node
node --version
which -a npm
npm --version
### Build:
- run: make pack
### Clean (not cleanall!):
- run: make clean
### Make sure there are no uncommited changes
- uses: julia-actions/setup-julia@9b79636afcfb07ab02c256cede01fe2db6ba808c # v2.6.0
with:
version: '1'
- run: git --no-pager status
- run: git --no-pager diff
- run: julia ./ci/check_uncommitted_changes.jl
build:
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
### Check out the repo:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
persist-credentials: false
### Cleanall:
- run: make cleanall
### Install NodeJS
# Unix (non-Windows):
- uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6
if: runner.os != 'Windows'
- run: make unix-asdf-install
if: runner.os != 'Windows'
# Windows:
# Windows does not support asdf, so we have to use `actions/setup-node`
# to install asdf:
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b
if: runner.os == 'Windows'
with:
node-version-file: '.tool-versions'
### Install the NodeJS packages that we depend on:
- run: make install-packages
### Print some debugging info:
- name: Print the NodeJS version (for debugging)
run: |
which -a node
node --version
which -a npm
npm --version
### Build:
- run: make build
- run: make pack
### Make sure some other `make` targets don't bitrot:
- name: Run some other `make` targets to ensure that they don't bitrot
run: |
make clean
make cleanall
- name: Run all of the "cleaning" `make` targets to ensure that they don't bitrot
run: |
make clean
make cleanall
npm-run-test:
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
### Check out the repo:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
persist-credentials: false
### Cleanall:
- run: make cleanall
### Install NodeJS
# Unix (non-Windows):
- uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6
if: runner.os != 'Windows'
- run: make unix-asdf-install
if: runner.os != 'Windows'
# Windows:
# Windows does not support asdf, so we have to use `actions/setup-node`
# to install asdf:
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b
if: runner.os == 'Windows'
with:
node-version-file: '.tool-versions'
### Install the NodeJS packages that we depend on:
- run: make install-packages
### Print some debugging info:
- name: Print the NodeJS version (for debugging)
run: |
which -a node
node --version
which -a npm
npm --version
### Build:
- run: make build
- run: make test
make-targets: # This is a job to make sure that none of the `make` targets bitrot
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
### Check out the repo:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
persist-credentials: false
### Cleanall:
- run: make cleanall
### Install NodeJS
# Unix (non-Windows):
- uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6
if: runner.os != 'Windows'
- run: make unix-asdf-install
if: runner.os != 'Windows'
### Install the NodeJS packages that we depend on:
- run: make install-packages
### Make sure some other `make` targets don't bitrot:
- name: Run some other `make` targets to ensure that they don't bitrot
run: |
make unix-asdf-install
make install-packages
make build
make pack
make everything-from-scratch
- name: Run all of the "cleaning" `make` targets to ensure that they don't bitrot
run: |
make clean
make cleanall
stalecheck-npm-install:
# In this job, we are basically trying to check if `package-lock.json` is in
# sync with `package-lock.json`.
#
# So, for example, if someone manually edits the `package.json` file, we want
# to make sure that the `package-lock.json` file is not out of sync with the
# `package.json` file.
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
### Check out the repo:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
persist-credentials: false
### Install NodeJS
# Unix (non-Windows):
- uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6
if: runner.os != 'Windows'
- run: make unix-asdf-install
if: runner.os != 'Windows'
### Run the master commands for this job:
- run: make clean
- run: npm ci
# - run: npm install --package-lock-only
- run: npm install
### Make sure there are no uncommited changes
- uses: julia-actions/setup-julia@9b79636afcfb07ab02c256cede01fe2db6ba808c # v2.6.0
with:
version: '1'
- run: git --no-pager status
- run: git --no-pager diff
- run: julia ./ci/check_uncommitted_changes.jl

3
.gitmodules vendored
View File

@@ -0,0 +1,3 @@
[submodule "bin"]
path = bin
url = git@github.com:julia-actions/bin.git

View File

@@ -1,49 +0,0 @@
.NOTPARALLEL:
# This is the default target:
.PHONY: pack
pack: build
npm run pack
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.PHONY: everything-from-scratch
everything-from-scratch: cleanall install-packages build pack clean
# build does `npm run build`, but does not run `npm run pack`
.PHONY: build
build:
npm run build
.PHONY: test
test:
npm run test
.PHONY: install-packages
install-packages:
rm -rf node_modules/
# Note: we use `npm ci` instead of `npm install`, because we want to make sure
# that we respect the versions in the `package-lock.json` lockfile.
npm ci
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.PHONY: clean
clean:
rm -rf node_modules/
.PHONY: cleanall
cleanall: clean
rm -rf lib/
rm -rf dist/
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# asdf does not support Windows.
# On Windows, users need to install the correct version of NodeJS themselves.
.PHONY: unix-asdf-install
unix-asdf-install:
asdf plugin add nodejs # update this list when we add more tools to `.tool-versions`
asdf install
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

View File

@@ -122,7 +122,6 @@ You can either specify specific Julia versions or version ranges. If you specify
- `'~1.3.0-rc1'` is a **tilde** version range that includes pre-releases of `1.3.0` starting at `rc1`. It matches all versions `≥ 1.3.0-rc1` and `< 1.4.0`. - `'~1.3.0-rc1'` is a **tilde** version range that includes pre-releases of `1.3.0` starting at `rc1`. It matches all versions `≥ 1.3.0-rc1` and `< 1.4.0`.
- `'^1.3.0-0'` is a **caret** version range that includes _all_ pre-releases of `1.3.0`. It matches all versions `≥ 1.3.0-` and `< 2.0.0`. - `'^1.3.0-0'` is a **caret** version range that includes _all_ pre-releases of `1.3.0`. It matches all versions `≥ 1.3.0-` and `< 2.0.0`.
- `'~1.3.0-0'` is a **tilde** version range that includes _all_ pre-releases of `1.3.0`. It matches all versions `≥ 1.3.0-` and `< 1.4.0`. - `'~1.3.0-0'` is a **tilde** version range that includes _all_ pre-releases of `1.3.0`. It matches all versions `≥ 1.3.0-` and `< 1.4.0`.
- `'1'` will install the latest v1 version of Julia.
- `'lts'` will install the latest LTS build. - `'lts'` will install the latest LTS build.
- `'pre'` will install the latest prerelease build (RCs, betas, and alphas). - `'pre'` will install the latest prerelease build (RCs, betas, and alphas).
- `'nightly'` will install the latest nightly build. - `'nightly'` will install the latest nightly build.
@@ -194,18 +193,12 @@ jobs:
strategy: strategy:
matrix: matrix:
julia-version: ['1.0', '1.2.0', '^1.3.0-rc1'] julia-version: ['1.0', '1.2.0', '^1.3.0-rc1']
julia-arch: [x64, x86, aarch64] julia-arch: [x64, x86]
os: [ubuntu-latest, windows-latest, macOS-latest] os: [ubuntu-latest, windows-latest, macOS-latest]
# exclude unavailable/unwanted architectures # 32-bit Julia binaries are not available on macOS
exclude: exclude:
- os: macOS-latest - os: macOS-latest
julia-arch: x86 julia-arch: x86
- os: macOS-latest
julia-arch: x64 # can be run but via rosetta on apple silicon runners
- os: ubuntu-latest
julia-arch: aarch64
- os: windows-latest
julia-arch: aarch64
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4

File diff suppressed because it is too large Load Diff

View File

@@ -26,8 +26,8 @@ const testVersions = [
'1.7.0', '1.7.0-beta1', '1.7.0-beta2', '1.7.0-beta3', '1.7.0-beta4', '1.7.0-rc1', '1.7.0-rc2', '1.7.0-rc3', '1.7.1', '1.7.2', '1.7.3', '1.7.0', '1.7.0-beta1', '1.7.0-beta2', '1.7.0-beta3', '1.7.0-beta4', '1.7.0-rc1', '1.7.0-rc2', '1.7.0-rc3', '1.7.1', '1.7.2', '1.7.3',
'1.8.0', '1.8.0-beta1', '1.8.0-beta2', '1.8.0-beta3', '1.8.0-rc1', '1.8.0-rc2', '1.8.0-rc3', '1.8.0-rc4', '1.8.1', '1.8.2', '1.8.3', '1.8.4', '1.8.5', '1.8.0', '1.8.0-beta1', '1.8.0-beta2', '1.8.0-beta3', '1.8.0-rc1', '1.8.0-rc2', '1.8.0-rc3', '1.8.0-rc4', '1.8.1', '1.8.2', '1.8.3', '1.8.4', '1.8.5',
'1.9.0', '1.9.0-alpha1', '1.9.0-beta1', '1.9.0-beta2', '1.9.0-beta3', '1.9.0-beta4', '1.9.0-rc1', '1.9.0-rc2', '1.9.0-rc3', '1.9.1', '1.9.2', '1.9.3', '1.9.4', '1.9.0', '1.9.0-alpha1', '1.9.0-beta1', '1.9.0-beta2', '1.9.0-beta3', '1.9.0-beta4', '1.9.0-rc1', '1.9.0-rc2', '1.9.0-rc3', '1.9.1', '1.9.2', '1.9.3', '1.9.4',
'1.10.0', '1.10.0-alpha1', '1.10.0-beta1', '1.10.0-beta2', '1.10.0-beta3', '1.10.0-rc1', '1.10.0-rc2', '1.10.0-rc3', '1.10.1', '1.10.2', '1.10.3', '1.10.4', '1.10.5', '1.10.0', '1.10.0-alpha1', '1.10.0-beta1', '1.10.0-beta2', '1.10.0-beta3', '1.10.0-rc1', '1.10.0-rc2', '1.10.0-rc3', '1.10.1', '1.10.2',
'1.11.0', '1.11.0-alpha1', '1.11.0-alpha2', '1.11.0-beta1', '1.11.0-beta2', '1.11.0-rc1', '1.11.0-rc2', '1.11.0-rc3', '1.11.0-rc4', '1.11.0-alpha1', '1.11.0-alpha2', '1.11.0-beta1'
] ]
const toolDir = path.join(__dirname, 'runner', 'tools') const toolDir = path.join(__dirname, 'runner', 'tools')
@@ -187,30 +187,30 @@ describe('version matching tests', () => {
it('LTS', () => { it('LTS', () => {
// Update test when LTS is updated // Update test when LTS is updated
expect(installer.getJuliaVersion(testVersions, 'lts')).toEqual(installer.getJuliaVersion(testVersions, '1.10')) expect(installer.getJuliaVersion(testVersions, 'lts')).toEqual(installer.getJuliaVersion(testVersions, '1.6'))
expect(installer.getJuliaVersion(testVersions, 'lts')).toEqual('1.10.5') expect(installer.getJuliaVersion(testVersions, 'lts')).toEqual('1.6.7')
}) })
it('pre', () => { it('pre', () => {
expect(installer.getJuliaVersion(testVersions, 'pre')).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, 'pre')).toEqual('1.11.0-beta1')
}) })
}) })
describe('version ranges', () => { describe('version ranges', () => {
it('Chooses the highest available version that matches the input', () => { it('Chooses the highest available version that matches the input', () => {
expect(installer.getJuliaVersion(testVersions, '1')).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, '1')).toEqual('1.10.2')
expect(installer.getJuliaVersion(testVersions, '1.0')).toEqual('1.0.5') expect(installer.getJuliaVersion(testVersions, '1.0')).toEqual('1.0.5')
expect(installer.getJuliaVersion(testVersions, '^1.3.0-rc1')).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, '^1.3.0-rc1')).toEqual('1.10.2')
expect(installer.getJuliaVersion(testVersions, '^1.2.0-rc1')).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, '^1.2.0-rc1')).toEqual('1.10.2')
expect(installer.getJuliaVersion(testVersions, '^1.10.0-rc1')).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, '^1.10.0-rc1')).toEqual('1.10.2')
}) })
}) })
describe('include-prereleases', () => { describe('include-prereleases', () => {
it('Chooses the highest available version that matches the input including prereleases', () => { it('Chooses the highest available version that matches the input including prereleases', () => {
expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', true)).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', true)).toEqual('1.11.0-beta1')
expect(installer.getJuliaVersion(testVersions, '1', true)).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, '1', true)).toEqual('1.11.0-beta1')
expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', false)).toEqual('1.11.0') expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', false)).toEqual('1.10.2')
}) })
}) })

1
bin Submodule

Submodule bin added at 0f674f357d

View File

@@ -1,16 +0,0 @@
const cmd = `git --no-pager diff --exit-code --stat`
const proc = run(pipeline(cmd; stdin, stdout, stderr); wait = false)
wait(proc)
@info "" success(proc) proc.exitcode
if !success(proc)
recommended_cmd = "make everything-from-scratch"
msg = "##[error] found changed files after build. " *
"Please run `$(recommended_cmd)` and " *
"then check in all changes."
println(stderr, msg)
exit(1)
end

View File

@@ -42,8 +42,6 @@ First, `cd` to your clone of the repo. Now you can run the following commands:
npm ci npm ci
npm run build npm run build
npm run pack
``` ```
When you are ready, you can commit your changes and push them to your PR. When you are ready, you can commit your changes and push them to your PR.

View File

@@ -1,56 +1,128 @@
# Making a new release of this action (requires commit access) # Making a new release of this action (requires commit access)
In this guide, as an example, `v2.2.0` refers to the version number of the new release that you want to make. If you have commit access to this repo, you can make a new release.
## Part 1: Use the Git CLI to create and push the Git tags Here are the instructions.
Step 1: Create a new lightweight tag of the form `vMAJOR.MINOR.PATCH`. ## Step 1: Clone a fresh copy of the repo
We intentionally work in a brand-new copy of the repo.
```bash ```bash
git clone git@github.com:julia-actions/setup-julia.git git clone git@github.com:julia-actions/setup-julia.git
cd setup-julia cd setup-julia
git fetch --all --tags git checkout master
git submodule init
git checkout main git submodule update
git --no-pager log -1
# Take note of the commit hash here.
# Now, create a new lightweight tag of the form `vMAJOR.MINOR.PATCH`.
#
# Replace `commit_hash` with the commit hash that you obtained from the
# `git log -1` step.
#
# Replace `v2.2.0` with the actual version number that you want to use.
git tag v2.2.0 commit_hash
``` ```
Step 2: Once you've created the new release, you need to update the `v2` tag to point to the new release. For example, suppose that the previous release was `v2.1.0`, and suppose that you just created the new release `v2.2.0`. You need to update the `v2` tag so that it points to `v2.2.0`. Here are the commands: ## Step 2: Make sure you have the right version of NodeJS
If you use [`asdf`](https://asdf-vm.com/), this is as simple as:
```bash ```bash
# Create/update the new v2 tag locally, where the new v2 tag will point to the asdf plugin add nodejs
# release that you created in the previous step. asdf install
#
# Make sure to change `v2.2.0` to the actual value for the tag that you just
# created in the previous step.
#
# The `-f` flag forcibly overwrites the old
# `v2` tag (if it exists).
git tag -f v2 v2.2.0
``` ```
Step 3: Now you need to push the tags: If you don't use `asdf`, then you need to:
1. Open the `./tool-versions` file in the root of the repo.
2. Make note of the NodeJS version listed in the `.tool-versions` file.
3. Install that same version of NodeJS on your machine.
4. Make sure that you are currently using that version of NodeJS (i.e. it is at the front of your PATH).
## Step 3: Edit the `version` field in `package.json`
```bash ```bash
# Regular-push the new `v2.2.0` tag: vim package.json
git push origin tag v2.2.0
# Force-push the new v2 tag: # Edit the `version` number (should be line 2)
git push origin tag v2 --force # Save your changes in Vim. Then exit Vim.
# For the remaining of this guide, let MAJOR.MINOR.PATCH refer
# to the new version number that you set.
git add package.json
# No need to commit yet.
# The release script will run `git commit`.
``` ```
## Part 2: Create the GitHub Release ## Step 4: Remove the `dist/` line from the `.gitignore` file
Go to the [Releases](https://github.com/julia-actions/setup-julia/releases) section of this repo and create a new release (using the GitHub web interface). ```bash
vim .gitignore
# Delete the line that says `dist/` (it should be line 3)
# Save your changes in Vim. Then exit Vim.
For the "choose a tag" drop-down field, select the `v2.2.0` tag that you created and pushed in Part 1 of this guide. git add .gitignore
# No need to commit yet.
# The release script will run `git commit`.
```
## Step 5: Make sure you have the necessary dependencies
The `build-release.sh` script requires the following dependencies:
1. Bash
2. `curl`
3. `git`
4. `jq`
5. `sed`
## Step 6: Run the `build-release.sh` script
```bash
ls -l bin/build-release.sh
chmod +x bin/build-release.sh
ls -l bin/build-release.sh
./bin/build-release.sh julia-actions/setup-julia
```
Wait a minute or two. The script will build everything and will create a new release branch named `releases/vMAJOR.MINOR.PATCH`.
## Step 7: Push ONLY the `releases/vMAJOR.MINOR.PATCH` branch
Only push the `releases/` branch. Do NOT push any tags yet.
```bash
git push origin releases/vMAJOR.MINOR.PATCH
```
Now you need to go to https://github.com/julia-actions/setup-julia/tree/releases/vMAJOR.MINOR.PATCH and wait for CI to finish running.
Do NOT proceed to the next step until CI is all green on the `releases/vMAJOR.MINOR.PATCH` branch.
## Step 8: Push the tags (only after CI is all green)
Once CI is all green on the `releases/vMAJOR.MINOR.PATCH` branch, you can push the tags.
You need to force-push.
```bash
git push --tags --force
```
## Step 9: Use the GitHub web UI to create a new GitHub Release
Go to https://github.com/julia-actions/setup-julia/releases and create a new release for the now-existant `vMAJOR.MINOR.PATCH` tag using the GitHub web interface.
## Step 10: Clean up your local repo
```bash
git submodule deinit --force .
git submodule update --init
git fetch --all --prune
git checkout master
git reset --hard origin/master
```
## Step 11: Delete your local repo
```bash
cd ..
ls setup-julia
rm -rf setup-julia
```

2479
dist/index.js vendored

File diff suppressed because one or more lines are too long

2
lib/installer.js generated
View File

@@ -52,7 +52,7 @@ const path = __importStar(require("path"));
const retry = require("async-retry"); const retry = require("async-retry");
const semver = __importStar(require("semver")); const semver = __importStar(require("semver"));
const toml = __importStar(require("toml")); const toml = __importStar(require("toml"));
const LTS_VERSION = '1.10'; const LTS_VERSION = '1.6';
const MAJOR_VERSION = '1'; // Could be deduced from versions.json const MAJOR_VERSION = '1'; // Could be deduced from versions.json
// Translations between actions input and Julia arch names // Translations between actions input and Julia arch names
const osMap = { const osMap = {

4
lib/setup-julia.js generated
View File

@@ -46,7 +46,6 @@ const installer = __importStar(require("./installer"));
const archSynonyms = { const archSynonyms = {
'x86': 'x86', 'x86': 'x86',
'x64': 'x64', 'x64': 'x64',
'x86_64': 'x64',
'aarch64': 'aarch64', 'aarch64': 'aarch64',
'arm64': 'aarch64' 'arm64': 'aarch64'
}; };
@@ -88,9 +87,6 @@ function run() {
if (!originalArchInput) { // if `originalArchInput` is an empty string if (!originalArchInput) { // if `originalArchInput` is an empty string
throw new Error(`Arch input must not be null`); throw new Error(`Arch input must not be null`);
} }
if (originalArchInput == 'x64' && os.platform() == 'darwin' && os.arch() == 'arm64') {
core.warning('[setup-julia] x64 arch has been requested on a macOS runner that has an arm64 (Apple Silicon) architecture. You may have meant to use the "aarch64" arch instead (or left it unspecified for the correct default).');
}
let processedArchInput; let processedArchInput;
if (originalArchInput == "default") { if (originalArchInput == "default") {
// If the user sets the `arch` input to `default`, then we use the // If the user sets the `arch` input to `default`, then we use the

111
package-lock.json generated
View File

@@ -1,13 +1,15 @@
{ {
"name": "setup-julia", "name": "setup-julia",
"version": "2.4.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "setup-julia", "name": "setup-julia",
"version": "2.4.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"@actions/io": "^1.1.3", "@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1", "@actions/tool-cache": "^2.0.1",
@@ -16,27 +18,27 @@
"toml": "^3.0.0" "toml": "^3.0.0"
}, },
"devDependencies": { "devDependencies": {
"@types/async-retry": "^1.4.9", "@types/async-retry": "^1.4.8",
"@types/jest": "^29.5.14", "@types/jest": "^29.5.12",
"@types/node": "^22.9.0", "@types/node": "^22.5.1",
"@types/retry": "^0.12.5", "@types/retry": "^0.12.5",
"@types/semver": "^7.5.8", "@types/semver": "^7.5.8",
"@vercel/ncc": "^0.38.2", "@vercel/ncc": "^0.38.1",
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-circus": "^29.7.0", "jest-circus": "^29.7.0",
"nock": "^13.5.4", "nock": "^13.5.4",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"ts-jest": "^29.2.5", "ts-jest": "^29.2.5",
"typescript": "^5.6.3" "typescript": "^5.5.4"
} }
}, },
"node_modules/@actions/core": { "node_modules/@actions/core": {
"version": "1.11.1", "version": "1.10.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
"integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
"dependencies": { "dependencies": {
"@actions/exec": "^1.1.1", "@actions/http-client": "^2.0.1",
"@actions/http-client": "^2.0.1" "uuid": "^8.3.2"
} }
}, },
"node_modules/@actions/exec": { "node_modules/@actions/exec": {
@@ -1057,9 +1059,9 @@
} }
}, },
"node_modules/@types/async-retry": { "node_modules/@types/async-retry": {
"version": "1.4.9", "version": "1.4.8",
"resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.9.tgz", "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.8.tgz",
"integrity": "sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==", "integrity": "sha512-Qup/B5PWLe86yI5I3av6ePGaeQrIHNKCwbsQotD6aHQ6YkHsMUxVZkZsmx/Ry3VZQ6uysHwTjQ7666+k6UjVJA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/retry": "*" "@types/retry": "*"
@@ -1140,9 +1142,9 @@
} }
}, },
"node_modules/@types/jest": { "node_modules/@types/jest": {
"version": "29.5.14", "version": "29.5.12",
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
"integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"expect": "^29.0.0", "expect": "^29.0.0",
@@ -1150,12 +1152,12 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "22.9.0", "version": "22.5.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz",
"integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"undici-types": "~6.19.8" "undici-types": "~6.19.2"
} }
}, },
"node_modules/@types/retry": { "node_modules/@types/retry": {
@@ -1192,9 +1194,9 @@
"dev": true "dev": true
}, },
"node_modules/@vercel/ncc": { "node_modules/@vercel/ncc": {
"version": "0.38.2", "version": "0.38.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.2.tgz", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz",
"integrity": "sha512-3yel3jaxUg9pHBv4+KeC9qlbdZPug+UMtUOlhvpDYCMSgcNSrS2Hv1LoqMsOV7hf2lYscx+BESfJOIla1WsmMQ==", "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==",
"dev": true, "dev": true,
"bin": { "bin": {
"ncc": "dist/ncc/cli.js" "ncc": "dist/ncc/cli.js"
@@ -3661,9 +3663,9 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "5.6.3", "version": "5.5.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"dev": true, "dev": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
@@ -3720,6 +3722,14 @@
"browserslist": ">= 4.21.0" "browserslist": ">= 4.21.0"
} }
}, },
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/v8-to-istanbul": { "node_modules/v8-to-istanbul": {
"version": "9.3.0", "version": "9.3.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
@@ -3851,12 +3861,12 @@
}, },
"dependencies": { "dependencies": {
"@actions/core": { "@actions/core": {
"version": "1.11.1", "version": "1.10.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
"integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
"requires": { "requires": {
"@actions/exec": "^1.1.1", "@actions/http-client": "^2.0.1",
"@actions/http-client": "^2.0.1" "uuid": "^8.3.2"
} }
}, },
"@actions/exec": { "@actions/exec": {
@@ -4645,9 +4655,9 @@
} }
}, },
"@types/async-retry": { "@types/async-retry": {
"version": "1.4.9", "version": "1.4.8",
"resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.9.tgz", "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.8.tgz",
"integrity": "sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==", "integrity": "sha512-Qup/B5PWLe86yI5I3av6ePGaeQrIHNKCwbsQotD6aHQ6YkHsMUxVZkZsmx/Ry3VZQ6uysHwTjQ7666+k6UjVJA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/retry": "*" "@types/retry": "*"
@@ -4728,9 +4738,9 @@
} }
}, },
"@types/jest": { "@types/jest": {
"version": "29.5.14", "version": "29.5.12",
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
"integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
"dev": true, "dev": true,
"requires": { "requires": {
"expect": "^29.0.0", "expect": "^29.0.0",
@@ -4738,12 +4748,12 @@
} }
}, },
"@types/node": { "@types/node": {
"version": "22.9.0", "version": "22.5.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz",
"integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==",
"dev": true, "dev": true,
"requires": { "requires": {
"undici-types": "~6.19.8" "undici-types": "~6.19.2"
} }
}, },
"@types/retry": { "@types/retry": {
@@ -4780,9 +4790,9 @@
"dev": true "dev": true
}, },
"@vercel/ncc": { "@vercel/ncc": {
"version": "0.38.2", "version": "0.38.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.2.tgz", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz",
"integrity": "sha512-3yel3jaxUg9pHBv4+KeC9qlbdZPug+UMtUOlhvpDYCMSgcNSrS2Hv1LoqMsOV7hf2lYscx+BESfJOIla1WsmMQ==", "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==",
"dev": true "dev": true
}, },
"ansi-escapes": { "ansi-escapes": {
@@ -6571,9 +6581,9 @@
"dev": true "dev": true
}, },
"typescript": { "typescript": {
"version": "5.6.3", "version": "5.5.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"dev": true "dev": true
}, },
"undici": { "undici": {
@@ -6600,6 +6610,11 @@
"picocolors": "^1.0.1" "picocolors": "^1.0.1"
} }
}, },
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
},
"v8-to-istanbul": { "v8-to-istanbul": {
"version": "9.3.0", "version": "9.3.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",

View File

@@ -1,5 +1,6 @@
{ {
"name": "setup-julia", "name": "setup-julia",
"version": "2.4.0",
"private": true, "private": true,
"description": "setup Julia action", "description": "setup Julia action",
"main": "lib/setup-julia.js", "main": "lib/setup-julia.js",
@@ -20,7 +21,7 @@
"author": "Sascha Mann <git@mail.saschamann.eu>", "author": "Sascha Mann <git@mail.saschamann.eu>",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"@actions/io": "^1.1.3", "@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1", "@actions/tool-cache": "^2.0.1",
@@ -29,17 +30,17 @@
"toml": "^3.0.0" "toml": "^3.0.0"
}, },
"devDependencies": { "devDependencies": {
"@types/async-retry": "^1.4.9", "@types/async-retry": "^1.4.8",
"@types/jest": "^29.5.14", "@types/jest": "^29.5.12",
"@types/node": "^22.9.0", "@types/node": "^22.5.1",
"@types/retry": "^0.12.5", "@types/retry": "^0.12.5",
"@types/semver": "^7.5.8", "@types/semver": "^7.5.8",
"@vercel/ncc": "^0.38.2", "@vercel/ncc": "^0.38.1",
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-circus": "^29.7.0", "jest-circus": "^29.7.0",
"nock": "^13.5.4", "nock": "^13.5.4",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"ts-jest": "^29.2.5", "ts-jest": "^29.2.5",
"typescript": "^5.6.3" "typescript": "^5.5.4"
} }
} }

View File

@@ -11,7 +11,7 @@ import retry = require('async-retry')
import * as semver from 'semver' import * as semver from 'semver'
import * as toml from 'toml' import * as toml from 'toml'
const LTS_VERSION = '1.10' const LTS_VERSION = '1.6'
const MAJOR_VERSION = '1' // Could be deduced from versions.json const MAJOR_VERSION = '1' // Could be deduced from versions.json
// Translations between actions input and Julia arch names // Translations between actions input and Julia arch names

View File

@@ -15,7 +15,6 @@ import * as installer from './installer'
const archSynonyms = { const archSynonyms = {
'x86': 'x86', 'x86': 'x86',
'x64': 'x64', 'x64': 'x64',
'x86_64': 'x64',
'aarch64': 'aarch64', 'aarch64': 'aarch64',
'arm64': 'aarch64' 'arm64': 'aarch64'
} }
@@ -62,10 +61,6 @@ async function run() {
throw new Error(`Arch input must not be null`) throw new Error(`Arch input must not be null`)
} }
if (originalArchInput == 'x64' && os.platform() == 'darwin' && os.arch() == 'arm64') {
core.warning('[setup-julia] x64 arch has been requested on a macOS runner that has an arm64 (Apple Silicon) architecture. You may have meant to use the "aarch64" arch instead (or left it unspecified for the correct default).')
}
let processedArchInput: string; let processedArchInput: string;
if (originalArchInput == "default") { if (originalArchInput == "default") {
// If the user sets the `arch` input to `default`, then we use the // If the user sets the `arch` input to `default`, then we use the