Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for AArch64 GNU Linux #469

Merged
merged 1 commit into from
May 23, 2023
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
14 changes: 14 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,16 @@ jobs:
name: x86_64-unknown-linux-musl
path: artifacts/toast
if-no-files-found: error
- run: |
# Make Bash not silently ignore errors.
set -euo pipefail
# The artifact name will contain the target triple, so the file name doesn't need to.
mv artifacts/toast-aarch64-unknown-linux-gnu artifacts/toast
- uses: actions/upload-artifact@v2
with:
name: aarch64-unknown-linux-gnu
path: artifacts/toast
if-no-files-found: error
ci-windows:
name: Build for Windows
runs-on: windows-latest
Expand Down Expand Up @@ -162,6 +172,9 @@ jobs:
mv \
artifacts/x86_64-unknown-linux-musl/toast \
artifacts/toast-x86_64-unknown-linux-musl
mv \
artifacts/aarch64-unknown-linux-gnu/toast \
artifacts/toast-aarch64-unknown-linux-gnu
mv \
artifacts/x86_64-apple-darwin/toast \
artifacts/toast-x86_64-apple-darwin
Expand All @@ -178,6 +191,7 @@ jobs:
--message "v$VERSION" \
--attach 'artifacts/toast-x86_64-unknown-linux-gnu' \
--attach 'artifacts/toast-x86_64-unknown-linux-musl' \
--attach 'artifacts/toast-aarch64-unknown-linux-gnu' \
--attach 'artifacts/toast-x86_64-apple-darwin' \
--attach 'artifacts/toast-aarch64-apple-darwin' \
--attach 'artifacts/toast-x86_64-pc-windows-msvc.exe' \
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.47.3] - 2023-05-23

### Added
- Toast supports a new platform: AArch64 GNU Linux.

## [0.47.2] - 2023-05-13

### Added
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "toast"
version = "0.47.2"
version = "0.47.3"
authors = ["Stephan Boyer <stephan@stephanboyer.com>"]
edition = "2021"
description = "Containerize your development and continuous integration environments."
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -451,9 +451,9 @@ ARGS:

## Installation instructions

### Installation on macOS (AArch64 or x86-64) or Linux (x86-64)
### Installation on macOS or Linux (AArch64 or x86-64)

If you're running macOS (AArch64 or x86-64) or Linux (x86-64), you can install Toast with this command:
If you're running macOS or Linux (AArch64 or x86-64), you can install Toast with this command:


```sh
Expand Down
11 changes: 6 additions & 5 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,16 @@
if uname -a | grep -qi 'x86_64.*GNU/Linux'; then
echo 'x86-64 GNU Linux detected.'
FILENAME=toast-x86_64-unknown-linux-gnu
elif uname -a | grep -qi 'x86_64 Linux'; then
elif uname -a | grep -qi 'x86_64.*Linux'; then
echo 'x86-64 non-GNU Linux detected.'
FILENAME=toast-x86_64-unknown-linux-musl
fi
if uname -a | grep -qi 'Darwin.*x86_64'; then
elif uname -a | grep -qi 'aarch64.*GNU/Linux'; then
echo 'AArch64 GNU Linux detected.'
FILENAME=toast-aarch64-unknown-linux-gnu
elif uname -a | grep -qi 'Darwin.*x86_64'; then
echo 'x86-64 macOS detected.'
FILENAME=toast-x86_64-apple-darwin
fi
if uname -a | grep -qi 'Darwin.*arm64'; then
elif uname -a | grep -qi 'Darwin.*arm64'; then
echo 'AArch64 macOS detected.'
FILENAME=toast-aarch64-apple-darwin
fi
Expand Down
25 changes: 22 additions & 3 deletions toast.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,22 @@ tasks:
command: |
# Install the following packages:
#
# - build-essential - Used for linking the binary
# - curl - Used for installing Tagref and Rust
# - gcc-aarch64-linux-gnu - Used for linking the binary for AArch64
# - gcc-x86-64-linux-gnu - Used for linking the binary for x86-64
# - gnupg - Used to install Docker's GPG key
# - lsb-release - Used below to determine the Ubuntu release codename
# - ripgrep - Used for various linting tasks
# - shellcheck - Used for linting shell scripts
apt-get update
apt-get install --yes build-essential curl lsb-release ripgrep shellcheck
apt-get install --yes \
curl \
gcc-aarch64-linux-gnu \
gcc-x86-64-linux-gnu \
gnupg \
lsb-release \
ripgrep \
shellcheck

# Download Docker's official GPG key.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
Expand Down Expand Up @@ -217,10 +226,17 @@ tasks:
# Add the targets. It's likely that this script is currently running in one of them.
rustup target add x86_64-unknown-linux-gnu
rustup target add x86_64-unknown-linux-musl
rustup target add aarch64-unknown-linux-gnu

# Build the project for both Linux targets with Cargo.
# Set the linkers.
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=x86_64-linux-gnu-gcc
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=x86_64-linux-gnu-gcc
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc

# Build the project with Cargo for each Linux target.
cargo-online build --release --target x86_64-unknown-linux-gnu
cargo-online build --release --target x86_64-unknown-linux-musl
cargo-online build --release --target aarch64-unknown-linux-gnu

# Move the binaries to a more conveniennt location for exporting.
mkdir artifacts
Expand All @@ -230,6 +246,9 @@ tasks:
cp \
target/x86_64-unknown-linux-musl/release/toast \
artifacts/toast-x86_64-unknown-linux-musl
cp \
target/aarch64-unknown-linux-gnu/release/toast \
artifacts/toast-aarch64-unknown-linux-gnu

validate_release:
description: Validate the release.
Expand Down