diff --git a/.github/workflows/aarch64.yml b/.github/workflows/aarch64.yml new file mode 100644 index 0000000..c8932f1 --- /dev/null +++ b/.github/workflows/aarch64.yml @@ -0,0 +1,72 @@ +name: CI (AArch64) + +on: + push: + branches: + - master + pull_request: + +jobs: + build_and_test: + strategy: + fail-fast: false + matrix: + version: + - 1.38.0 # MSRV + - stable + - nightly + + name: Test ${{ matrix.version }} - aarch64-unknown-linux-gnu + runs-on: ubuntu-latest + + steps: + - name: Checkout sources + uses: actions/checkout@v2 + - name: Install ${{ matrix.version }} + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.version }}- + target: aarch64-unknown-linux-gnu + profile: minimal + override: true + default: true + + - name: Generate Cargo.lock + uses: actions-rs/cargo@v1 + with: + command: generate-lockfile + - name: Cache cargo registry + uses: actions/cache@v1 + with: + path: ~/.cargo/registry + key: ${{ matrix.version }}-aarch64-unknown-linux-gnu-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo index + uses: actions/cache@v1 + with: + path: ~/.cargo/git + key: ${{ matrix.version }}-aarch64-unknown-linux-gnu-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo build + uses: actions/cache@v1 + with: + path: target + key: ${{ matrix.version }}-aarch64-unknown-linux-gnu-cargo-build-trimmed-${{ hashFiles('**/Cargo.lock') }} + + - name: Check build + uses: actions-rs/cargo@v1 + with: + use-cross: true + command: check + args: --target aarch64-unknown-linux-gnu --release --all --bins --examples --tests + + - name: Tests + uses: actions-rs/cargo@v1 + timeout-minutes: 10 + with: + use-cross: true + command: test + args: --target aarch64-unknown-linux-gnu --release --all --all-features --no-fail-fast -- --nocapture + + - name: Clear the cargo caches + run: | + cargo install cargo-cache --no-default-features --features ci-autoclean + cargo-cache diff --git a/.github/workflows/armv7.yml b/.github/workflows/armv7.yml new file mode 100644 index 0000000..1b160fa --- /dev/null +++ b/.github/workflows/armv7.yml @@ -0,0 +1,72 @@ +name: CI (ARMv7) + +on: + push: + branches: + - master + pull_request: + +jobs: + build_and_test: + strategy: + fail-fast: false + matrix: + version: + - 1.38.0 # MSRV + - stable + - nightly + + name: Test ${{ matrix.version }} - armv7-unknown-linux-gnueabihf + runs-on: ubuntu-latest + + steps: + - name: Checkout sources + uses: actions/checkout@v2 + - name: Install ${{ matrix.version }} + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.version }}- + target: armv7-unknown-linux-gnueabihf + profile: minimal + override: true + default: true + + - name: Generate Cargo.lock + uses: actions-rs/cargo@v1 + with: + command: generate-lockfile + - name: Cache cargo registry + uses: actions/cache@v1 + with: + path: ~/.cargo/registry + key: ${{ matrix.version }}-armv7-unknown-linux-gnueabihf-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo index + uses: actions/cache@v1 + with: + path: ~/.cargo/git + key: ${{ matrix.version }}-armv7-unknown-linux-gnueabihf-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo build + uses: actions/cache@v1 + with: + path: target + key: ${{ matrix.version }}-armv7-unknown-linux-gnueabihf-cargo-build-trimmed-${{ hashFiles('**/Cargo.lock') }} + + - name: Check build + uses: actions-rs/cargo@v1 + with: + use-cross: true + command: check + args: --target armv7-unknown-linux-gnueabihf --release --all --bins --examples --tests + + - name: Tests + uses: actions-rs/cargo@v1 + timeout-minutes: 10 + with: + use-cross: true + command: test + args: --target armv7-unknown-linux-gnueabihf --release --all --all-features --no-fail-fast -- --nocapture + + - name: Clear the cargo caches + run: | + cargo install cargo-cache --no-default-features --features ci-autoclean + cargo-cache diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 0000000..9c7d56f --- /dev/null +++ b/Cross.toml @@ -0,0 +1,5 @@ +[target.armv7-unknown-linux-gnueabihf] +image = "jonathasossystems/cross-armv7-libarchive:latest" + +[target.aarch64-unknown-linux-gnu] +image = "jonathasossystems/cross-aarch64-libarchive:latest" diff --git a/README.md b/README.md index 245fd21..3fe7396 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ functionalities. | Linux | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(Linux)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | | macOS | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(macOS)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | | Windows | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(Windows)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | +| AArch64 | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(AArch64)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | +| ARMv7 | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(ARMv7)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | --- diff --git a/docker/Dockerfile.cross-aarch64-libarchive b/docker/Dockerfile.cross-aarch64-libarchive new file mode 100644 index 0000000..81ab4ad --- /dev/null +++ b/docker/Dockerfile.cross-aarch64-libarchive @@ -0,0 +1,6 @@ +FROM rustembedded/cross:aarch64-unknown-linux-gnu +RUN dpkg --add-architecture arm64 +RUN apt-get update +RUN apt-get install --assume-yes --no-install-recommends libarchive-dev:arm64 + +ENV PKG_CONFIG=aarch64-linux-gnu-pkg-config diff --git a/docker/Dockerfile.cross-armv7-libarchive b/docker/Dockerfile.cross-armv7-libarchive new file mode 100644 index 0000000..dc41218 --- /dev/null +++ b/docker/Dockerfile.cross-armv7-libarchive @@ -0,0 +1,6 @@ +FROM rustembedded/cross:armv7-unknown-linux-gnueabihf +RUN dpkg --add-architecture armhf +RUN apt-get update +RUN apt-get install --assume-yes --no-install-recommends libarchive-dev:armhf + +ENV PKG_CONFIG=arm-linux-gnueabihf-pkg-config diff --git a/src/lib.rs b/src/lib.rs index 5d835aa..6997d02 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,6 +11,8 @@ //! | Linux | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(Linux)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | //! | macOS | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(macOS)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | //! | Windows | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(Windows)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | +//! | AArch64 | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(AArch64)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | +//! | ARMv7 | [![build status](https://github.com/OSSystems/compress-tools-rs/workflows/CI%20(ARMv7)/badge.svg)](https://github.com/OSSystems/compress-tools-rs/actions) | //! //! --- //!