Skip to content

Commit 3bafc98

Browse files
authored
[cicd] add GitHub actions workflow to build libhf3fs_api_shared (#11)
1 parent 6a4e592 commit 3bafc98

File tree

3 files changed

+180
-0
lines changed

3 files changed

+180
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: build-hf3fs-usrbio-rpm
2+
on:
3+
workflow_dispatch:
4+
5+
jobs:
6+
build-rpm:
7+
strategy:
8+
matrix:
9+
os: [ ubuntu-latest, ubuntu-24.04-arm ]
10+
runs-on: ${{ matrix.os }}
11+
permissions:
12+
id-token: write
13+
attestations: write
14+
contents: read
15+
container:
16+
image: ubuntu:20.04
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v5
20+
- name: Build
21+
run: |
22+
bash open_source/package/build-hf3fs-usrbio-rpm.sh
23+
- name: Upload
24+
uses: actions/upload-artifact@v6
25+
with:
26+
name: hf3fs-usrbio-${{ runner.arch }}-rpm
27+
path: /tmp/hf3fs-rpm-build/RPMS/*/*.rpm
28+
if-no-files-found: error
29+
- name: Generate artifact attestation
30+
uses: actions/attest-build-provenance@v3
31+
with:
32+
subject-path: /tmp/hf3fs-rpm-build/RPMS/*/*.rpm
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# change from:
2+
# https://github.com/deepseek-ai/3FS/blob/main/.github/workflows/build.yml
3+
# https://github.com/deepseek-ai/3FS/blob/main/dockerfile/dev.ubuntu2004.dockerfile
4+
5+
# Only use rpm to pack binary files, not for installation
6+
mkdir -p /tmp/hf3fs-dependencies/
7+
mkdir -p /tmp/hf3fs-rpm-build/
8+
mkdir -p /tmp/hf3fs-rpm-build/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
9+
cp ./open_source/package/hf3fs-usrbio.spec /tmp/hf3fs-rpm-build/SPECS
10+
11+
pushd /tmp/hf3fs-dependencies/ || exit 1
12+
apt-get update
13+
DEBIAN_FRONTEND=noninteractive \
14+
apt-get install --no-install-recommends -y cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev \
15+
libdwarf-dev libunwind-dev git wget software-properties-common libaio-dev libgflags-dev \
16+
libgoogle-glog-dev libgtest-dev libgmock-dev libgoogle-perftools-dev google-perftools libssl-dev \
17+
libboost-all-dev meson build-essential rpm
18+
19+
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key |tee /etc/apt/trusted.gpg.d/llvm.asc &&\
20+
add-apt-repository -y "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" &&\
21+
apt-get update && apt-get install -y clang-format-14 clang-14 clang-tidy-14 lld-14 libclang-rt-14-dev gcc-10 g++-10
22+
23+
FDB_ARCH_SUFFIX=$(dpkg --print-architecture) && \
24+
case "${FDB_ARCH_SUFFIX}" in \
25+
amd64) export FDB_ARCH_SUFFIX=amd64 ;; \
26+
arm64) export FDB_ARCH_SUFFIX="aarch64" ;; \
27+
*) echo "Unsupported architecture: ${FDB_ARCH_SUFFIX}"; exit 1 ;; \
28+
esac
29+
wget https://github.com/apple/foundationdb/releases/download/7.1.61/foundationdb-clients_7.1.61-1_${FDB_ARCH_SUFFIX}.deb && dpkg -i foundationdb-clients_7.1.61-1_${FDB_ARCH_SUFFIX}.deb
30+
31+
git clone https://github.com/libfuse/libfuse.git libfuse -b fuse-3.16.2 --depth 1 && mkdir libfuse/build && cd libfuse/build && CC=gcc-10 CXX=g++-10 meson setup .. && ninja && ninja install && cd ../.. && rm -rf libfuse
32+
33+
mkdir -p {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
34+
35+
git clone https://github.com/deepseek-ai/3FS.git
36+
cd 3FS || exit 1
37+
# https://github.com/deepseek-ai/3FS/commit/f6395e7d348b1383c168acaf2587fe7e0424dcf8
38+
# temporary avoid std::bit_cast not found
39+
git checkout f6395e7d348b1383c168acaf2587fe7e0424dcf8
40+
git submodule update --init --recursive
41+
42+
./patches/apply.sh
43+
cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DSHUFFLE_METHOD=g++11
44+
cmake --build build -j 8 -t hf3fs_api_shared
45+
popd || exit 1
46+
47+
48+
pushd /tmp/hf3fs-rpm-build/ || exit 1
49+
rpmbuild --define "_topdir /tmp/hf3fs-rpm-build/" -bb /tmp/hf3fs-rpm-build/SPECS/hf3fs-usrbio.spec
50+
popd || exit 1
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
Name: libhf3fs_api_shared
2+
Version: 1.2.1
3+
Release: 1%{?dist}
4+
Summary: hf3fs shared library and headers
5+
6+
License: MIT
7+
URL: https://github.com/deepseek-ai/3FS/
8+
9+
%description
10+
This package provides the hf3fs API shared libraries and header files.
11+
12+
%prep
13+
# 不需要 %setup
14+
15+
%build
16+
# 不需要编译
17+
18+
%install
19+
rm -rf $RPM_BUILD_ROOT
20+
mkdir -p $RPM_BUILD_ROOT/usr/include
21+
mkdir -p $RPM_BUILD_ROOT/usr/lib64
22+
23+
install -m 644 /tmp/hf3fs-dependencies/3FS/src/lib/api/hf3fs_usrbio.h \
24+
$RPM_BUILD_ROOT/usr/include/
25+
26+
install -m 755 /tmp/hf3fs-dependencies/3FS/build/src/lib/api/libhf3fs_api_shared.so \
27+
$RPM_BUILD_ROOT/usr/lib64/
28+
29+
install -m 755 /usr/lib/*-linux-gnu/libboost_context.so.1.71.0 \
30+
$RPM_BUILD_ROOT/usr/lib64/
31+
install -m 755 /usr/lib/*-linux-gnu/libboost_filesystem.so.1.71.0 \
32+
$RPM_BUILD_ROOT/usr/lib64/
33+
install -m 755 /usr/lib/*-linux-gnu/libboost_program_options.so.1.71.0 \
34+
$RPM_BUILD_ROOT/usr/lib64/
35+
install -m 755 /usr/lib/*-linux-gnu/libboost_regex.so.1.71.0 \
36+
$RPM_BUILD_ROOT/usr/lib64/
37+
install -m 755 /usr/lib/*-linux-gnu/libboost_system.so.1.71.0 \
38+
$RPM_BUILD_ROOT/usr/lib64/
39+
install -m 755 /usr/lib/*-linux-gnu/libboost_thread.so.1.71.0 \
40+
$RPM_BUILD_ROOT/usr/lib64/
41+
install -m 755 /usr/lib/*-linux-gnu/libboost_atomic.so.1.71.0 \
42+
$RPM_BUILD_ROOT/usr/lib64/
43+
install -m 755 /usr/lib/*-linux-gnu/libdouble-conversion.so.3 \
44+
$RPM_BUILD_ROOT/usr/lib64/
45+
install -m 755 /usr/lib/*-linux-gnu/libgflags.so.2.2 \
46+
$RPM_BUILD_ROOT/usr/lib64/
47+
install -m 755 /usr/lib/*-linux-gnu/libglog.so.0 \
48+
$RPM_BUILD_ROOT/usr/lib64/
49+
install -m 755 /usr/lib/*-linux-gnu/libevent-2.1.so.7 \
50+
$RPM_BUILD_ROOT/usr/lib64/
51+
install -m 755 /usr/lib/*-linux-gnu/libdwarf.so.1 \
52+
$RPM_BUILD_ROOT/usr/lib64/
53+
install -m 755 /usr/lib/*-linux-gnu/libicui18n.so.66 \
54+
$RPM_BUILD_ROOT/usr/lib64/
55+
install -m 755 /usr/lib/*-linux-gnu/libicuuc.so.66 \
56+
$RPM_BUILD_ROOT/usr/lib64/
57+
install -m 755 /usr/lib/*-linux-gnu/libicudata.so.66 \
58+
$RPM_BUILD_ROOT/usr/lib64/
59+
install -m 755 /usr/lib/*-linux-gnu/libunwind.so.8 \
60+
$RPM_BUILD_ROOT/usr/lib64/
61+
install -m 755 /usr/lib/*-linux-gnu/libssl.so.1.1 \
62+
$RPM_BUILD_ROOT/usr/lib64/
63+
install -m 755 /usr/lib/*-linux-gnu/libcrypto.so.1.1 \
64+
$RPM_BUILD_ROOT/usr/lib64/
65+
66+
%files
67+
%defattr(-,root,root,-)
68+
/usr/include/hf3fs_usrbio.h
69+
/usr/lib64/libhf3fs_api_shared.so
70+
/usr/lib64/libboost_context.so.1.71.0
71+
/usr/lib64/libboost_filesystem.so.1.71.0
72+
/usr/lib64/libboost_program_options.so.1.71.0
73+
/usr/lib64/libboost_regex.so.1.71.0
74+
/usr/lib64/libboost_system.so.1.71.0
75+
/usr/lib64/libboost_thread.so.1.71.0
76+
/usr/lib64/libboost_atomic.so.1.71.0
77+
/usr/lib64/libdouble-conversion.so.3
78+
/usr/lib64/libgflags.so.2.2
79+
/usr/lib64/libglog.so.0
80+
/usr/lib64/libevent-2.1.so.7
81+
/usr/lib64/libdwarf.so.1
82+
/usr/lib64/libicui18n.so.66
83+
/usr/lib64/libicuuc.so.66
84+
/usr/lib64/libicudata.so.66
85+
/usr/lib64/libunwind.so.8
86+
/usr/lib64/libssl.so.1.1
87+
/usr/lib64/libcrypto.so.1.1
88+
89+
%post
90+
/sbin/ldconfig
91+
92+
%postun
93+
/sbin/ldconfig
94+
95+
%changelog
96+
* Thu Feb 05 2026 xiyu.wxy <xiyu.wxy@alibaba-inc.com> - 1.0.1-1
97+
* Fri May 23 2025 LXQ <lxq271332@alibaba-inc.com> - 1.0.0-1
98+
- Initial release

0 commit comments

Comments
 (0)