From 7905777485353349dbabacd42c762210f54b17e2 Mon Sep 17 00:00:00 2001 From: JGZYES Date: Sat, 5 Sep 2026 14:01:55 +0800 Subject: [PATCH] ci+aarch64: build pmm-aarch64 binary + linux-aarch64 .pdm; install.sh picks arch asset - release.yml matrix adds linux-aarch64 (cc aarch64-linux-gnu-gcc), builds out/pmm-aarch64, and produces pmm--linux-aarch64.pdm (pure-tar pdm) when that binary exists; amd64/windows packages unchanged. - web/install.sh: download pmm (amd64) vs pmm-aarch64 (arm64) per arch, dropping the 'only amd64 provided' warning. --- .github/workflows/release.yml | 30 +++++++++++++++++++++++++++++- web/install.sh | 11 ++++++----- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0ebde14..3775bdf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,10 +24,20 @@ jobs: cc: x86_64-w64-mingw32-gcc ext: .exe pkg: mingw-w64 + bin: pmm.exe + arch: windows-amd64 - target: linux-amd64 cc: gcc ext: '' pkg: '' + bin: pmm + arch: amd64 + - target: linux-aarch64 + cc: aarch64-linux-gnu-gcc + ext: '' + pkg: gcc-aarch64-linux-gnu + bin: pmm-aarch64 + arch: aarch64 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -43,7 +53,7 @@ jobs: mkdir -p out VER=${{ github.ref_type == 'tag' && github.ref_name || (github.event.inputs.version != '' && github.event.inputs.version || 'dev') }} VER=${VER#v} - ${{ matrix.cc }} -O2 -Wall -static -std=c11 -D_FORTIFY_SOURCE=0 -U_FORTIFY_SOURCE -DPMM_VERSION=\"$VER\" -o out/pmm${{ matrix.ext }} \ + ${{ matrix.cc }} -O2 -Wall -static -std=c11 -D_FORTIFY_SOURCE=0 -U_FORTIFY_SOURCE -DPMM_VERSION=\"$VER\" -o out/${{ matrix.bin }} \ src/main.c src/json.c src/ini.c src/pmm.c src/http.c src/repo.c src/install.c \ src/sha256.c src/sha1.c src/mirrors.c src/pdm.c src/out.c src/i18n.c @@ -57,6 +67,24 @@ jobs: # -- install.sh helper (uploaded to the release, also served at /install.sh) cp web/install.sh out/install.sh + # -- aarch64: a .pdm (pure tar, no pmm needed) for Linux ARM64 + if [ -f out/pmm-aarch64 ]; then + rm -rf pdm && mkdir -p pdm/meta pdm/data/usr/local/bin + cp out/pmm-aarch64 pdm/data/usr/local/bin/pmm + { + echo "Package: pmm" + echo "Version: $VER" + echo "Architecture: linux" + echo "Description: PMM package manager" + echo "Maintainer: PMM " + } > pdm/meta/pdm-control + ( cd pdm/meta && tar -czf ../control.tar.gz pdm-control ) + ( cd pdm/data && tar -czf ../data.tar.gz . ) + ( cd pdm && sha256sum control.tar.gz data.tar.gz > sha256sums ) + ( cd pdm && tar -cf ../out/pmm-${VER}-linux-aarch64.pdm control.tar.gz data.tar.gz sha256sums ) + rm -rf pdm + fi + # -- Windows: ZIP if [ -f out/pmm.exe ]; then ( cd out && zip -q "pmm-${VER}-windows-amd64.zip" pmm.exe ) diff --git a/web/install.sh b/web/install.sh index a8d4e8c..c96a5b1 100644 --- a/web/install.sh +++ b/web/install.sh @@ -23,11 +23,12 @@ case "$ARCH" in *) echo "pmm: 不支持的架构 $ARCH"; exit 1 ;; esac -# ---- 下载 pmm(release 资产名为 pmm)---- -URL="https://github.com/$REPO/releases/download/v$VER/pmm" -if [ "$arch" != "amd64" ]; then - echo "pmm: 注意:官方发布目前只提供 amd64 资产,$os/$arch 可能 404" -fi +# ---- 下载 pmm(按架构选 release 资产名)---- +case "$arch" in + amd64) ASSET="pmm" ;; + arm64) ASSET="pmm-aarch64" ;; +esac +URL="https://github.com/$REPO/releases/download/v$VER/$ASSET" echo "pmm: 下载 v$VER ($os/$arch) ..." TMP="$(mktemp)" # --progress-bar shows a live download progress line (tty only)