Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions .github/actions/run-integration-tests/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,18 @@ runs:
- shell: bash -l -eo pipefail {0}
run: nextstrain version --verbose

# Skip Docker on macOS and Windows
- if: runner.os != 'macOS' && runner.os != 'Windows'
shell: bash -l -eo pipefail {0}
run: nextstrain setup docker

- if: runner.os != 'Windows'
# Skip Conda on Windows and Linux ARM64
- if: runner.os != 'Windows' && !(runner.os == 'Linux' && runner.arch == 'ARM64')
shell: bash -l -eo pipefail {0}
run: nextstrain setup conda

- if: runner.os != 'macOS' && runner.os != 'Windows'
# Skip Singularity on macOS, Windows, and Linux ARM64
- if: runner.os != 'macOS' && runner.os != 'Windows' && !(runner.os == 'Linux' && runner.arch == 'ARM64')
shell: bash -l -eo pipefail {0}
run: nextstrain setup singularity

Expand All @@ -38,27 +41,31 @@ runs:
- shell: bash -l -eo pipefail {0}
run: nextstrain version --verbose

# Skip Docker on macOS and Windows
- if: runner.os != 'macOS' && runner.os != 'Windows'
name: Build zika-tutorial with --docker
shell: bash -l -eo pipefail {0}
run: |
git -C zika-tutorial clean -dfqx
nextstrain build --docker --cpus 2 zika-tutorial

- if: runner.os != 'Windows'
# Skip Conda on Windows and Linux ARM64
- if: runner.os != 'Windows' && !(runner.os == 'Linux' && runner.arch == 'ARM64')
name: Build zika-tutorial with --conda
shell: bash -l -eo pipefail {0}
run: |
git -C zika-tutorial clean -dfqx
nextstrain build --conda --cpus 2 zika-tutorial

- if: runner.os != 'macOS' && runner.os != 'Windows'
# Skip Singularity on macOS, Windows, and Linux ARM64
- if: runner.os != 'macOS' && runner.os != 'Windows' && !(runner.os == 'Linux' && runner.arch == 'ARM64')
name: Build zika-tutorial with --singularity
shell: bash -l -eo pipefail {0}
run: |
git -C zika-tutorial clean -dfqx
nextstrain build --singularity --cpus 2 zika-tutorial

# Skip ambient on Windows
- if: fromJSON(inputs.ambient) && runner.os != 'Windows'
name: Build zika-tutorial with --ambient
shell: bash -l -eo pipefail {0}
Expand Down
13 changes: 11 additions & 2 deletions .github/actions/setup-integration-tests/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,15 @@ inputs:
runs:
using: composite
steps:
# Our aarch64 (linux/arm64) image still contains some x86_64 (amd64)
# executables and so requires the ability of the host to emulate x86_64.
# On macOS, which is the primary reason we have an aarch64 image, this is
# expected to be provided by Rosetta 2. On Linux, we expect it to be QEMU,
# which we set up here.
- if: runner.os == 'Linux' && runner.arch == 'ARM64'
run: docker run --privileged --rm tonistiigi/binfmt --install amd64
shell: bash -l -eo pipefail {0}
Comment on lines +28 to +35
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would've used docker/setup-qemu-action since it's what's used in the docker-base repo, but this seems fine. From what I can tell, the docker action is effectively a wrapper around this command with some predefined defaults and image caching.


- uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ inputs.python-version }}
Expand Down Expand Up @@ -72,14 +81,14 @@ runs:
python3 --version | grep -F 'Python ${{ inputs.python-version }}.'
[[ "$(python --version)" == "$(python3 --version)" ]]

# Install Singularity on Linux.
# Install Singularity on Linux x86_64.
#
# We don't install it with Conda because Conda Forge provides a non-suid
# build of Singularity. We're compatible with Singularity's non-suid mode,
# but production usages of Singularity are likely to use its suid mode, so
# I'd rather test against that.
# -trs, 6 Jan 2023
- if: runner.os == 'Linux'
- if: runner.os == 'Linux' && runner.arch == 'X64'
shell: bash -l -eo pipefail {0}
env:
GITHUB_TOKEN: ${{ github.token }}
Expand Down
28 changes: 19 additions & 9 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ jobs:
target: x86_64-unknown-linux-gnu
exe: nextstrain

- os: ubuntu-22.04-arm
target: aarch64-unknown-linux-gnu
exe: nextstrain

- os: macos-15-intel
target: x86_64-apple-darwin
exe: nextstrain
Expand Down Expand Up @@ -307,15 +311,17 @@ jobs:
# fresh CI machines are not readily available, however, since
# pre-installation is convenient for builds.
include:
- { os: ubuntu-22.04, target: x86_64-unknown-linux-gnu }
- { os: ubuntu-24.04, target: x86_64-unknown-linux-gnu }
- { os: macos-15-intel, target: x86_64-apple-darwin }
- { os: macos-14, target: x86_64-apple-darwin }
- { os: macos-15, target: x86_64-apple-darwin }
- { os: macos-14, target: aarch64-apple-darwin }
- { os: macos-15, target: aarch64-apple-darwin }
- { os: windows-2022, target: x86_64-pc-windows-msvc }
- { os: windows-2025, target: x86_64-pc-windows-msvc }
- { os: ubuntu-22.04, target: x86_64-unknown-linux-gnu }
- { os: ubuntu-24.04, target: x86_64-unknown-linux-gnu }
- { os: ubuntu-22.04-arm, target: aarch64-unknown-linux-gnu }
- { os: ubuntu-24.04-arm, target: aarch64-unknown-linux-gnu }
- { os: macos-15-intel, target: x86_64-apple-darwin }
- { os: macos-14, target: x86_64-apple-darwin }
- { os: macos-15, target: x86_64-apple-darwin }
- { os: macos-14, target: aarch64-apple-darwin }
- { os: macos-15, target: aarch64-apple-darwin }
- { os: windows-2022, target: x86_64-pc-windows-msvc }
- { os: windows-2025, target: x86_64-pc-windows-msvc }

runs-on: ${{matrix.os}}
defaults:
Expand Down Expand Up @@ -391,6 +397,10 @@ jobs:
with:
name: standalone-x86_64-unknown-linux-gnu

- uses: actions/download-artifact@v7
with:
name: standalone-aarch64-unknown-linux-gnu

- uses: actions/download-artifact@v7
with:
name: standalone-x86_64-apple-darwin
Expand Down
8 changes: 8 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ development source code and as such may not be routinely kept up to date.

# __NEXT__

## Improvements

* We now produce standalone installation archives for Linux running on aarch64
hardware (aka arm64). The standalone installer will use these archives
starting with this release.
([#489](https://github.com/nextstrain/cli/pull/489),
[#490](https://github.com/nextstrain/cli/pull/490))

## Bug fixes

* Updated the s3fs dependency to avoid versions starting with 2025.12.0. This
Expand Down
2 changes: 1 addition & 1 deletion devel/pyoxidizer
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ main() {
--volume "$build/cache/pyoxidizer:/tmp/.cache/pyoxidizer" \
--volume "$build/cache/pip:/tmp/.cache/pip" \
--volume "$build/cache/cargo:/tmp/.cargo" \
quay.io/pypa/manylinux2014_x86_64 "$pyoxidizer" "$@"
quay.io/pypa/manylinux2014_"$(platform-machine)" "$pyoxidizer" "$@"
else
exec "$pyoxidizer" "$@"
fi
Expand Down
9 changes: 9 additions & 0 deletions doc/changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,15 @@ development source code and as such may not be routinely kept up to date.
(v-next)=
## __NEXT__

(v-next-improvements)=
### Improvements

* We now produce standalone installation archives for Linux running on aarch64
hardware (aka arm64). The standalone installer will use these archives
starting with this release.
([#489](https://github.com/nextstrain/cli/pull/489),
[#490](https://github.com/nextstrain/cli/pull/490))

(v-next-bug-fixes)=
### Bug fixes

Expand Down
Loading