Skip to content

Commit 50a2bd3

Browse files
authored
Merge pull request #324 from array2d/ci/release-macos
release: 双平台发布(linux x86_64 + macOS arm64)
2 parents 24d0ce2 + 1697c9e commit 50a2bd3

1 file changed

Lines changed: 54 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ on:
55
permissions:
66
contents: write
77
jobs:
8-
publish:
8+
# Linux:deps.json 所列依赖有预编译 ABI tarball,直接下载安装后打包(自包含)。
9+
linux:
910
runs-on: ubuntu-latest
1011
env:
1112
GH_TOKEN: ${{ github.token }}
@@ -27,12 +28,59 @@ jobs:
2728
cp runtime/include/*.h "$d/include/"
2829
cp bin/libkvlang_runtime.so "$d/lib/"
2930
cp layout/target/release/libkvlanglayout.so "$d/lib/"
30-
# 自带全部 ABI 依赖(deps.json 所列)→ 解包即 /usr/lib + /usr/lib/kvspace 布局
31-
cp /usr/lib/libkvspace.so* /usr/lib/libblockmalloc.so* /usr/lib/libslotsboxmalloc.so* "$d/lib/"
32-
cp /usr/lib/kvspace/libkvspace-c.so* /usr/lib/kvspace/libkvspace_durable.so* "$d/lib/kvspace/"
31+
# 自带全部 ABI 依赖 → 解包即 /usr/lib + /usr/lib/kvspace 布局
32+
cp /usr/lib/libblockmalloc.so* /usr/lib/libslotsboxmalloc.so* "$d/lib/"
33+
cp /usr/lib/libkvspace.so* /usr/lib/kvspace/libkvspace-c.so* /usr/lib/kvspace/libkvspace_durable.so* "$d/lib/kvspace/"
3334
printf '{"abi":"%s"}\n' "$v" > "$d/abi-manifest.json"
3435
tar czf "$d.tar.gz" "$d"
3536
tar tzf "$d.tar.gz"
36-
sha256sum "$d.tar.gz" > SHA256SUMS
37+
sha256sum "$d.tar.gz" > SHA256SUMS-linux
3738
- name: 发布 release
38-
run: gh release create "${GITHUB_REF_NAME}" kvlang-abi-*.tar.gz SHA256SUMS --generate-notes
39+
run: gh release create "${GITHUB_REF_NAME}" kvlang-abi-*-linux-*.tar.gz SHA256SUMS-linux --generate-notes
40+
41+
# macOS:各仓只有 linux ABI tarball,依赖全部源码构建(装 /usr/local)后打包(自包含)。
42+
macos:
43+
needs: linux
44+
runs-on: macos-latest
45+
env:
46+
GH_TOKEN: ${{ github.token }}
47+
KVSPACE_LIB_DIR: /usr/local/lib/kvspace # /usr 受 SIP 保护
48+
steps:
49+
- uses: actions/checkout@v4
50+
- name: 构建依赖链(blockmalloc / slotsboxmalloc / kvspace / kvspace-c / kvspace-durable)
51+
run: |
52+
set -euo pipefail
53+
PREFIX=/usr/local
54+
for repo in blockmalloc slotsboxmalloc kvspace kvspace-c; do
55+
git clone --depth 1 "https://github.com/array2d/$repo.git" "/tmp/$repo"
56+
cmake -S "/tmp/$repo" -B "/tmp/$repo/build" \
57+
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX
58+
cmake --build "/tmp/$repo/build" -j
59+
sudo cmake --install "/tmp/$repo/build"
60+
done
61+
git clone --depth 1 https://github.com/array2d/kvspace-durable.git /tmp/kvspace-durable
62+
cargo build --release --manifest-path /tmp/kvspace-durable/Cargo.toml
63+
- name: 构建 runtime + layout
64+
run: |
65+
cmake -S runtime -B build/runtime -DCMAKE_BUILD_TYPE=Release -DKVSPACE_LIB_DIR="$KVSPACE_LIB_DIR"
66+
cmake --build build/runtime --target kvlang_runtime -j
67+
cargo build --release --manifest-path layout/Cargo.toml
68+
- name: 打包 ABI 产物
69+
run: |
70+
set -euo pipefail
71+
v="${GITHUB_REF_NAME}"
72+
d="kvlang-abi-$v-darwin-arm64"
73+
mkdir -p "$d/include" "$d/lib/kvspace"
74+
cp runtime/include/*.h "$d/include/"
75+
cp bin/libkvlang_runtime.dylib "$d/lib/"
76+
cp layout/target/release/libkvlanglayout.dylib "$d/lib/"
77+
# 自带全部 ABI 依赖 → 解包即 /usr/local/lib + /usr/local/lib/kvspace 布局
78+
cp /usr/local/lib/libblockmalloc*.dylib /usr/local/lib/libslotsboxmalloc*.dylib "$d/lib/"
79+
cp /usr/local/lib/kvspace/*.dylib "$d/lib/kvspace/"
80+
cp /tmp/kvspace-durable/target/release/libkvspace_durable.dylib "$d/lib/kvspace/"
81+
printf '{"abi":"%s"}\n' "$v" > "$d/abi-manifest.json"
82+
tar czf "$d.tar.gz" "$d"
83+
tar tzf "$d.tar.gz"
84+
sha256sum "$d.tar.gz" > SHA256SUMS-macos
85+
- name: 上传到 release
86+
run: gh release upload "${GITHUB_REF_NAME}" kvlang-abi-*-darwin-*.tar.gz SHA256SUMS-macos --clobber

0 commit comments

Comments
 (0)