diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d921982..2657bce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,17 +37,17 @@ jobs: - name: Tests run: cargo test --all-features - # The release workflow cross-compiles four targets. Proving they still - # compile here means a release never fails on a platform nobody built. + # The release workflow builds these four targets. Building — not merely + # checking — is the point: `cargo check` does not link, so a link error stays + # invisible until a release runs, which is how v1.1.0 shipped incomplete. targets: - name: Compiles for ${{ matrix.target }} + name: Builds for ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest } - - { target: aarch64-unknown-linux-gnu, os: ubuntu-latest } - { target: aarch64-apple-darwin, os: macos-latest } - { target: x86_64-pc-windows-msvc, os: windows-latest } - { target: aarch64-pc-windows-msvc, os: windows-latest } @@ -62,9 +62,7 @@ jobs: with: key: ${{ matrix.target }} - # `check` does not link, so no cross-linker is needed here. Linking is - # exercised by the release workflow. - - run: cargo check --all-targets --target ${{ matrix.target }} + - run: cargo build --release --target ${{ matrix.target }} # Guard the promise the README makes: an ordinary export carries no personal # data, and no real document is ever committed. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 942fd82..421ef99 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,16 +42,11 @@ jobs: runs-on: ${{ matrix.os }} permissions: contents: write - # Only consulted when building the matching target, so it is harmless on - # the other legs. - env: - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc strategy: fail-fast: false matrix: include: - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest } - - { target: aarch64-unknown-linux-gnu, os: ubuntu-latest, apt: gcc-aarch64-linux-gnu } - { target: aarch64-apple-darwin, os: macos-latest } - { target: x86_64-pc-windows-msvc, os: windows-latest } - { target: aarch64-pc-windows-msvc, os: windows-latest } @@ -64,12 +59,6 @@ jobs: with: targets: ${{ matrix.target }} - - name: Install cross-linker - if: matrix.apt != '' - run: | - sudo apt-get update - sudo apt-get install --yes --no-install-recommends ${{ matrix.apt }} - - name: Keep runner paths out of the binary shell: bash run: | @@ -99,35 +88,18 @@ jobs: # Debian and RPM packages, for the distributions that want one. linux-packages: - name: Linux packages (${{ matrix.arch }}) + name: Linux packages needs: release-please if: needs.release-please.outputs.released == 'true' runs-on: ubuntu-latest permissions: contents: write - env: - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc - strategy: - # One architecture failing must not cost the release the other's packages. - fail-fast: false - matrix: - include: - - { target: x86_64-unknown-linux-gnu, arch: amd64 } - - { target: aarch64-unknown-linux-gnu, arch: arm64, apt: gcc-aarch64-linux-gnu } steps: - uses: actions/checkout@v7 with: ref: ${{ needs.release-please.outputs.tag }} - uses: dtolnay/rust-toolchain@stable - with: - targets: ${{ matrix.target }} - - - name: Install cross-linker - if: matrix.apt != '' - run: | - sudo apt-get update - sudo apt-get install --yes --no-install-recommends ${{ matrix.apt }} - name: Keep runner paths out of the binary shell: bash @@ -147,12 +119,12 @@ jobs: run: cargo install --locked cargo-deb cargo-generate-rpm - name: Build - run: cargo build --release --target ${{ matrix.target }} + run: cargo build --release - name: Build .deb and .rpm run: | - cargo deb --no-build --target ${{ matrix.target }} --output dist/ - cargo generate-rpm --target ${{ matrix.target }} --output dist/ + cargo deb --no-build --output dist/ + cargo generate-rpm --output dist/ - name: Checksums working-directory: dist diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 61af1f8..53eab61 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -141,6 +141,11 @@ hand. 5. The release workflow then builds four targets, and attaches an archive plus a SHA-256 checksum for each, along with `.deb` and `.rpm` packages. +When a pull request is merged with a merge commit, the merge commit carries the +pull request *title*. Prefix **either** the title **or** the commits inside it, +never both, or the change is counted twice and appears twice in the changelog. +Splitting work into typed commits means giving the pull request a plain title. + To release a specific version regardless of what the commits imply, put a footer on a commit: diff --git a/README.md b/README.md index 20d6eaf..6a60078 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ plus Debian and RPM packages. See | Platform | Asset | | --- | --- | | Linux x86-64 | `loop-extract-vX.Y.Z-x86_64-unknown-linux-gnu.tar.gz`, `.deb`, `.rpm` | -| Linux ARM64 | `loop-extract-vX.Y.Z-aarch64-unknown-linux-gnu.tar.gz`, `.deb`, `.rpm` | | macOS Apple Silicon | `loop-extract-vX.Y.Z-aarch64-apple-darwin.tar.gz` | | Windows x86-64 | `loop-extract-vX.Y.Z-x86_64-pc-windows-msvc.zip` | | Windows ARM64 | `loop-extract-vX.Y.Z-aarch64-pc-windows-msvc.zip` | @@ -50,8 +49,6 @@ sudo dpkg -i loop-extract_X.Y.Z-1_amd64.deb # Debian, Ubuntu sudo rpm -i loop-extract-X.Y.Z-1.x86_64.rpm # Fedora, RHEL, openSUSE ``` -Replace `amd64` with `arm64`, or `x86_64` with `aarch64`, on ARM hardware. - Or extract the tarball and put the binary on your `PATH`. ### macOS