diff --git a/.cargo/config.toml b/.cargo/config.toml index 26988f1..1d09de5 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,6 +1,9 @@ [target.x86_64-pc-windows-msvc] rustflags = ["-C", "target-feature=+crt-static"] +[target.aarch64-unknown-linux-gnu] +linker = "aarch64-linux-gnu-gcc" + [alias] lint = "clippy -- -D warnings" r = "run" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0e66f1..92b21a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,14 +67,21 @@ jobs: - name: Build release run: cargo build --release --locked + - name: Run cargo test + run: cargo test --locked + - name: Build release(aarch64-apple-darwin) if: startsWith(matrix.os, 'macOS') run: | rustup target add aarch64-apple-darwin cargo build --release --target aarch64-apple-darwin --locked - - name: Run cargo test - run: cargo test --locked + - name: Build release(aarch64-unknown-linux-gnu) + if: startsWith(matrix.os, 'ubuntu') + run: | + sudo apt-get update && sudo apt-get install -y crossbuild-essential-arm64 + rustup target add aarch64-unknown-linux-gnu + cargo build --release --target aarch64-unknown-linux-gnu --locked - name: Test install from local file (bash) if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macOS') @@ -85,12 +92,17 @@ jobs: run: zip -r dvm-x86_64-unknown-linux-gnu.zip dvm working-directory: target/release + - name: Pre-release (linux-aarch64) + if: startsWith(matrix.os, 'ubuntu') + run: zip -r dvm-aarch64-unknown-linux-gnu.zip dvm + working-directory: target/aarch64-unknown-linux-gnu/release + - name: Pre-release (mac) if: startsWith(matrix.os, 'macOS') run: zip -r dvm-x86_64-apple-darwin.zip dvm working-directory: target/release - - name: Pre-release (mac-aarch64) + - name: Pre-release (aarch64-apple-darwin) if: startsWith(matrix.os, 'macOS') run: zip -r dvm-aarch64-apple-darwin.zip dvm working-directory: target/aarch64-apple-darwin/release @@ -113,6 +125,7 @@ jobs: target/release/dvm-x86_64-unknown-linux-gnu.zip target/release/dvm-x86_64-apple-darwin.zip target/aarch64-apple-darwin/release/dvm-aarch64-apple-darwin.zip + target/aarch64-unknown-linux-gnu/release/dvm-aarch64-unknown-linux-gnu.zip draft: true - name: Release DVM @@ -128,7 +141,7 @@ jobs: target/release/dvm-x86_64-unknown-linux-gnu.zip target/release/dvm-x86_64-apple-darwin.zip - - name: Release DVM(aarch64) + - name: Release DVM(aarch64-apple-darwin) uses: justjavac/action-dvm-release@v1 if: | startsWith(github.repository, 'justjavac') && @@ -139,6 +152,17 @@ jobs: files: | target/aarch64-apple-darwin/release/dvm-aarch64-apple-darwin.zip + - name: Release DVM(aarch64-unknown-linux-gnu) + uses: justjavac/action-dvm-release@v1 + if: | + startsWith(github.repository, 'justjavac') && + startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }} + with: + files: | + target/aarch64-unknown-linux-gnu/release/dvm-aarch64-unknown-linux-gnu.zip + - name: Publish if: | startsWith(matrix.os, 'ubuntu') && diff --git a/install.sh b/install.sh index 35cd5aa..b28c2a0 100755 --- a/install.sh +++ b/install.sh @@ -17,6 +17,7 @@ else "Darwin x86_64") target="x86_64-apple-darwin" ;; "Darwin arm64") target="aarch64-apple-darwin" ;; "Linux x86_64") target="x86_64-unknown-linux-gnu" ;; + "Linux aarch64") target="aarch64-unknown-linux-gnu.zip" ;; *) echo "Unsupported OS + CPU combination: $(uname -sm)"; exit 1 ;; esac fi diff --git a/src/commands/install.rs b/src/commands/install.rs index 72e470e..173ac6b 100644 --- a/src/commands/install.rs +++ b/src/commands/install.rs @@ -24,8 +24,10 @@ cfg_if! { const ARCHIVE_NAME: &str = "deno-aarch64-apple-darwin.zip"; } else if #[cfg(all(target_os = "macos", target_arch = "x86_64"))] { const ARCHIVE_NAME: &str = "deno-x86_64-apple-darwin.zip"; - } else if #[cfg(target_os = "linux")] { + } else if #[cfg(all(target_os = "linux", target_arch = "x86_64"))] { const ARCHIVE_NAME: &str = "deno-x86_64-unknown-linux-gnu.zip"; + } else if #[cfg(all(target_os = "linux", target_arch = "aarch64"))] { + const ARCHIVE_NAME: &str = "deno-aarch64-unknown-linux-gnu.zip"; } }