diff --git a/.github/scripts/generate-install-script.sh b/.github/scripts/generate-install-script.sh index 3909d25..28071ad 100644 --- a/.github/scripts/generate-install-script.sh +++ b/.github/scripts/generate-install-script.sh @@ -41,6 +41,8 @@ declare -A DOWNLOADS=( ["linux-aarch64-gnu-zstd"]="celq-linux-aarch64-gnu.tar.zst" ["linux-riscv64-musl"]="celq-linux-riscv64-musl.tar.gz" ["linux-riscv64-gnu"]="celq-linux-riscv64-gnu.tar.gz" + ["linux-ppc64le-musl"]="celq-linux-ppc64le-musl.tar.gz" + ["linux-ppc64le-gnu"]="celq-linux-ppc64le-gnu.tar.gz" ) declare -A CHECKSUMS @@ -96,6 +98,8 @@ sed -e "s/{{CELQ_VERSION}}/${VERSION}/g" \ -e "s/{{CHECKSUM_LINUX_AARCH64_GNU_ZSTD}}/${CHECKSUMS[linux-aarch64-gnu-zstd]}/g" \ -e "s/{{CHECKSUM_LINUX_RISCV64_MUSL}}/${CHECKSUMS[linux-riscv64-musl]}/g" \ -e "s/{{CHECKSUM_LINUX_RISCV64_GNU}}/${CHECKSUMS[linux-riscv64-gnu]}/g" \ + -e "s/{{CHECKSUM_LINUX_PPC64LE_MUSL}}/${CHECKSUMS[linux-ppc64le-musl]}/g" \ + -e "s/{{CHECKSUM_LINUX_PPC64LE_GNU}}/${CHECKSUMS[linux-ppc64le-gnu]}/g" \ "$TEMPLATE_FILE" > "$OUTPUT_FILE" chmod +x "$OUTPUT_FILE" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 18dee84..6f82f8d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -237,6 +237,12 @@ jobs: - arch: RISC-V 64 target: riscv64gc-unknown-linux-musl zigtargetsuffix: "" + - arch: PowerPC 64 LE + target: powerpc64le-unknown-linux-gnu + zigtargetsuffix: .2.28 + - arch: PowerPC 64 LE + target: powerpc64le-unknown-linux-musl + zigtargetsuffix: "" - arch: x86-64 target: x86_64-unknown-freebsd zigtargetsuffix: "" @@ -412,6 +418,13 @@ jobs: contents: read uses: $/.github/workflows/sub_test_riscv64.yml + test-debian-ppc64le: + name: Test on Debian 13 PowerPC 64 LE + needs: zigbuild + permissions: + contents: read + uses: $/.github/workflows/sub_test_ppc64le.yml + coverage: name: Code Coverage (Ubuntu 24.04 x86-64) diff --git a/.github/workflows/release_github.yml b/.github/workflows/release_github.yml index 547b5e4..082f193 100644 --- a/.github/workflows/release_github.yml +++ b/.github/workflows/release_github.yml @@ -210,6 +210,12 @@ jobs: # Linux RISC-V 64 (zigbuild - musl static binary) - { target: riscv64gc-unknown-linux-musl, zigtargetsuffix: "", pretty_target: linux-riscv64-musl } + # Linux PowerPC 64 LE (zigbuild - glibc 2.28) + - { target: powerpc64le-unknown-linux-gnu, zigtargetsuffix: .2.28, pretty_target: linux-ppc64le-gnu } + + # Linux PowerPC 64 LE (zigbuild - musl static binary) + - { target: powerpc64le-unknown-linux-musl, zigtargetsuffix: "", pretty_target: linux-ppc64le-musl } + # Linux x86-64 (zigbuild - musl static binary) - { target: x86_64-unknown-linux-musl, zigtargetsuffix: "", pretty_target: linux-x86_64-musl } @@ -469,6 +475,8 @@ jobs: - { target: aarch64-unknown-linux-gnu, archive: celq-linux-aarch64-gnu.tar.zst, archive_suffix: tar.zst } - { target: riscv64gc-unknown-linux-musl, archive: celq-linux-riscv64-musl.tar.gz, archive_suffix: tar.gz } - { target: riscv64gc-unknown-linux-gnu, archive: celq-linux-riscv64-gnu.tar.gz, archive_suffix: tar.gz } + - { target: powerpc64le-unknown-linux-musl, archive: celq-linux-ppc64le-musl.tar.gz, archive_suffix: tar.gz } + - { target: powerpc64le-unknown-linux-gnu, archive: celq-linux-ppc64le-gnu.tar.gz, archive_suffix: tar.gz } - { target: x86_64-unknown-freebsd, archive: celq-freebsd-x86_64.tar.gz, archive_suffix: tar.gz } - { target: aarch64-unknown-freebsd, archive: celq-freebsd-aarch64.tar.gz, archive_suffix: tar.gz } steps: @@ -534,6 +542,8 @@ jobs: - { target: linux-aarch64-gnu, archive: celq-linux-aarch64-gnu.tar.gz, binary: celq } - { target: linux-riscv64-gnu, archive: celq-linux-riscv64-gnu.tar.gz, binary: celq } - { target: linux-riscv64-musl, archive: celq-linux-riscv64-musl.tar.gz, binary: celq } + - { target: linux-ppc64le-gnu, archive: celq-linux-ppc64le-gnu.tar.gz, binary: celq } + - { target: linux-ppc64le-musl, archive: celq-linux-ppc64le-musl.tar.gz, binary: celq } - { target: freebsd-x86_64, archive: celq-freebsd-x86_64.tar.gz, binary: celq } - { target: freebsd-aarch64, archive: celq-freebsd-aarch64.tar.gz, binary: celq } uses: $/.github/workflows/release_sub_calculate_sboms.yml @@ -566,6 +576,8 @@ jobs: - { target: linux-aarch64-gnu, binary: celq } - { target: linux-riscv64-gnu, binary: celq } - { target: linux-riscv64-musl, binary: celq } + - { target: linux-ppc64le-gnu, binary: celq } + - { target: linux-ppc64le-musl, binary: celq } - { target: freebsd-x86_64, binary: celq } - { target: freebsd-aarch64, binary: celq } steps: diff --git a/.github/workflows/release_pypi.yml b/.github/workflows/release_pypi.yml index 4cf7a85..3bff5ce 100644 --- a/.github/workflows/release_pypi.yml +++ b/.github/workflows/release_pypi.yml @@ -57,6 +57,19 @@ jobs: TARGET: riscv64gc-unknown-linux-musl, ZIG: 0.15.1, } + - { + NAME: linux-ppc64le, + OS: ubuntu-24.04, + TARGET: powerpc64le-unknown-linux-gnu, + MANYLINUX: manylinux_2_28, + ZIG: 0.15.1, + } + - { + NAME: linux-ppc64le, + OS: ubuntu-24.04, + TARGET: powerpc64le-unknown-linux-musl, + ZIG: 0.15.1, + } - { NAME: win32-x64-msvc, OS: ubuntu-24.04, diff --git a/.github/workflows/sub_test_ppc64le.yml b/.github/workflows/sub_test_ppc64le.yml new file mode 100644 index 0000000..bc855bc --- /dev/null +++ b/.github/workflows/sub_test_ppc64le.yml @@ -0,0 +1,40 @@ +name: Test PowerPC 64 LE (Subworkflow) + +on: + workflow_call: + +permissions: + contents: read + +env: + CARGO_TERM_COLOR: always + +jobs: + test: + name: Test on Debian 13 (${{ matrix.target }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + target: + - powerpc64le-unknown-linux-gnu + - powerpc64le-unknown-linux-musl + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + persist-credentials: false + + - name: Download celq binary + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 + with: + name: celq-${{ matrix.target }} + path: ./bin + + - name: Test on Debian + uses: vmactions/debian-vm@389ba1da28ff5b440cba52db8e03fc2e08e2affa # v1.0.0 + with: + release: "13" + arch: ppc64le + run: | + chmod +x ./bin/celq + sh .github/scripts/smoke-test.sh ./bin/celq diff --git a/Cargo.toml b/Cargo.toml index 9c361d0..56d8cd5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -112,6 +112,12 @@ pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-riscv64-musl{ [package.metadata.binstall.overrides.riscv64gc-unknown-linux-gnu] pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-riscv64-gnu{ archive-suffix }" +[package.metadata.binstall.overrides.powerpc64le-unknown-linux-musl] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-ppc64le-musl{ archive-suffix }" + +[package.metadata.binstall.overrides.powerpc64le-unknown-linux-gnu] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-ppc64le-gnu{ archive-suffix }" + [package.metadata.binstall.overrides.x86_64-unknown-freebsd] pkg-url = "{ repo }/releases/download/v{ version }/{ name }-freebsd-x86_64{ archive-suffix }" diff --git a/template_install.sh b/template_install.sh index 6c3190b..26b35f6 100644 --- a/template_install.sh +++ b/template_install.sh @@ -154,6 +154,12 @@ get_expected_checksum() { riscv64gc-unknown-linux-gnu:*) echo "{{CHECKSUM_LINUX_RISCV64_GNU}}" ;; + powerpc64le-unknown-linux-musl:*) + echo "{{CHECKSUM_LINUX_PPC64LE_MUSL}}" + ;; + powerpc64le-unknown-linux-gnu:*) + echo "{{CHECKSUM_LINUX_PPC64LE_GNU}}" + ;; *) err "No checksum available for target: $rust_target" ;; @@ -208,6 +214,8 @@ target_to_pretty_name() { aarch64-unknown-linux-gnu) echo "linux-aarch64-gnu";; riscv64gc-unknown-linux-musl) echo "linux-riscv64-musl";; riscv64gc-unknown-linux-gnu) echo "linux-riscv64-gnu";; + powerpc64le-unknown-linux-musl) echo "linux-ppc64le-musl";; + powerpc64le-unknown-linux-gnu) echo "linux-ppc64le-gnu";; *) err "Unsupported target: $rust_target" ;; @@ -326,6 +334,7 @@ if [ -z "${target-}" ]; then case $uname_target in aarch64-Linux) target=aarch64-unknown-linux-musl;; riscv64-Linux) target=riscv64gc-unknown-linux-musl;; + ppc64le-Linux) target=powerpc64le-unknown-linux-musl;; arm64-Darwin) target=aarch64-apple-darwin;; x86_64-Darwin) target=x86_64-apple-darwin;; x86_64-Linux) target=x86_64-unknown-linux-musl;;