mirror of https://github.com/bol-van/zapret/
Browse Source
Build ARM, MIPS, x86 and x86_64 static binaries for Linux using https://github.com/rust-cross/rust-musl-cross musl Docker imagespull/407/head
2 changed files with 124 additions and 0 deletions
@ -0,0 +1,81 @@ |
|||||
|
name: Build zapret |
||||
|
on: |
||||
|
push: |
||||
|
paths: |
||||
|
- 'ip2net/**' |
||||
|
- 'mdig/**' |
||||
|
- 'nfq/**' |
||||
|
- 'tpws/**' |
||||
|
pull_request: |
||||
|
paths: |
||||
|
- 'ip2net/**' |
||||
|
- 'mdig/**' |
||||
|
- 'nfq/**' |
||||
|
- 'tpws/**' |
||||
|
workflow_dispatch: |
||||
|
|
||||
|
env: |
||||
|
DOCKER_BUILD_SUMMARY: false |
||||
|
|
||||
|
jobs: |
||||
|
build: |
||||
|
name: Build for Linux |
||||
|
runs-on: ubuntu-22.04 |
||||
|
strategy: |
||||
|
matrix: |
||||
|
arch: |
||||
|
- aarch64-musl |
||||
|
- arm-musleabi |
||||
|
- arm-musleabihf |
||||
|
- mipsel-musl |
||||
|
- i586-musl |
||||
|
- x86_64-musl |
||||
|
# container: |
||||
|
# image: messense/rust-musl-cross:${{ matrix.arch }} |
||||
|
# options: --user root |
||||
|
steps: |
||||
|
- uses: actions/checkout@v4 |
||||
|
|
||||
|
- name: Docker in tmpfs |
||||
|
run: | |
||||
|
sudo systemctl stop docker |
||||
|
sudo mount -t tmpfs -o size=80% tmpfs /var/lib/docker |
||||
|
sudo systemctl start docker |
||||
|
|
||||
|
- name: Cache Docker images |
||||
|
id: docker-cache |
||||
|
uses: ScribeMD/[email protected] |
||||
|
with: |
||||
|
key: docker-${{ runner.os }}-${{ matrix.arch }} |
||||
|
|
||||
|
# - name: Set up Docker Buildx |
||||
|
# if: steps.docker-cache.outputs.cache-hit != 'true' |
||||
|
# uses: docker/setup-buildx-action@v3 |
||||
|
|
||||
|
- name: Build Docker image |
||||
|
if: steps.docker-cache.outputs.cache-hit != 'true' |
||||
|
uses: docker/build-push-action@v6 |
||||
|
with: |
||||
|
tags: zapret-musl-cross:${{ matrix.arch }} |
||||
|
context: . |
||||
|
load: true |
||||
|
build-args: BUILDARCH=${{ matrix.arch }} |
||||
|
# cache-from: type=gha |
||||
|
# cache-to: type=gha,mode=max |
||||
|
|
||||
|
- name: Compile zapret |
||||
|
run: | |
||||
|
docker run --entrypoint=bash -v ${{ github.workspace }}:/work \ |
||||
|
zapret-musl-cross:${{ matrix.arch }} \ |
||||
|
-c 'cd /work; CC=$TARGET_CC CFLAGS="-static" make -j$(nproc)' |
||||
|
|
||||
|
- name: Declare short commit variable |
||||
|
id: vars |
||||
|
run: | |
||||
|
git config --global --add safe.directory '*' && echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT |
||||
|
|
||||
|
- name: Upload output file |
||||
|
uses: actions/upload-artifact@v4 |
||||
|
with: |
||||
|
name: zapret_${{ steps.vars.outputs.sha_short }}_${{ matrix.arch }} |
||||
|
path: binaries/my/ |
||||
@ -0,0 +1,43 @@ |
|||||
|
ARG BUILDARCH=x86_64-musl |
||||
|
|
||||
|
FROM messense/rust-musl-cross:$BUILDARCH |
||||
|
|
||||
|
RUN <<'EOF' |
||||
|
set -eu |
||||
|
export PKG_CONFIG_PATH=$TARGET_HOME/lib/pkgconfig/ |
||||
|
export CC=$TARGET_CC |
||||
|
|
||||
|
mkdir /root/extlibs |
||||
|
cd /root/extlibs |
||||
|
|
||||
|
apt update |
||||
|
apt install --no-install-recommends -y wget libtool pkg-config libcap-dev |
||||
|
|
||||
|
wget https://www.zlib.net/zlib-1.3.1.tar.gz |
||||
|
echo 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23 zlib-1.3.1.tar.gz | sha256sum -c && tar axf zlib-1.3.1.tar.gz |
||||
|
|
||||
|
git clone -b libnfnetlink-1.0.2 --depth 1 git://git.netfilter.org/libnfnetlink |
||||
|
git clone -b libnetfilter_queue-1.0.5 --depth 1 git://git.netfilter.org/libnetfilter_queue |
||||
|
git clone -b libmnl-1.0.5 --depth 1 git://git.netfilter.org/libmnl |
||||
|
|
||||
|
( |
||||
|
cd zlib-* |
||||
|
./configure --static |
||||
|
make -j$(nproc) |
||||
|
make install |
||||
|
) |
||||
|
|
||||
|
for i in libnfnetlink libmnl libnetfilter_queue; do |
||||
|
( |
||||
|
echo COMPILING $i |
||||
|
cd $i |
||||
|
./autogen.sh |
||||
|
./configure --host=${TARGET_CC%-gcc} --prefix=$TARGET_HOME --enable-static |
||||
|
make -j$(nproc) |
||||
|
make install |
||||
|
) |
||||
|
done |
||||
|
|
||||
|
cp /usr/include/sys/capability.h ${TARGET_HOME}/include/sys/ |
||||
|
cp /usr/include/x86_64-linux-gnu/sys/queue.h ${TARGET_HOME}/include/sys/ |
||||
|
EOF |
||||
Loading…
Reference in new issue