Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 142 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
name: CI

on:
push:
pull_request:
workflow_dispatch:
workflow_call:
inputs:
version:
description: Version Number
type: string
required: false

jobs:
Lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get install -y clang-format
- name: Run clang-format
run: |
clang-format --dry-run --Werror src/*.c include/*.h

Build:
name: Build
runs-on: ubuntu-latest
env:
cross_dir: /opt/x-tools
strategy:
matrix:
include:
- name: arm64
triplet: aarch64-unknown-linux-musl
sha256: 76f0d71893f3864e91ad09feff71a719cdf94cccd4f14cc25d7deed395968b5b
- name: arm32
triplet: arm-unknown-linux-musleabi
sha256: 1242b2a965480415ce90a710ab7600730a8de114f5bc5452ed7382e64839b5de
- name: arm32hf
triplet: arm-unknown-linux-musleabihf
sha256: 6e6f20cebd75ca5319c5dfb00fdd50a4ceb22af2df9073a75cafbdd3204eebad
- name: arm32v7
triplet: armv7-unknown-linux-musleabi
sha256: 158d8fd651d8c501d8dea4bb82a152208732cb10a5f72e7e8e4ce9f551e8d165
- name: arm32v7hf
triplet: armv7-unknown-linux-musleabihf
sha256: 7643420285f038545997d3234bee9c854900fa9060388769442ed20a72aeac23
- name: i586
triplet: i586-unknown-linux-musl
sha256: 37d494c1fe60ac07ab8b83871a77a63ab885e5b06cceaa0777537db7767c464f
- name: i686
triplet: i686-unknown-linux-musl
sha256: 0b1baac45c94b499791b65bbc63d0486aa557c6576142eddce3dee55e2fd022b
- name: loong64
triplet: loongarch64-unknown-linux-musl
sha256: 2b8cddf9e082f8c8527a459520037ebcedae7262950e429d96184622ae74b8cf
- name: m68k
triplet: m68k-unknown-linux-musl
sha256: 72f6427a1c97c1bd151ebcbd98eab6c39d46090bb89ff2e40c639be012dd2855
- name: microblazeel
triplet: microblazeel-xilinx-linux-musl
sha256: ce892fe2c799bfd963de06632f5d02ea3e78d8abf2bfd361d673d4ce28fb6f69
- name: microblaze
triplet: microblaze-xilinx-linux-musl
sha256: 03852d0ba1a5d6cd3efe1ee5b1cb7506fcc2b5b3026966fe1d7d916d621f5b4b
- name: mips64el
triplet: mips64el-unknown-linux-musl
sha256: 01f821f8c476ec6e9618c4272a2e7e6fa3d664491f5ede4296d33af2e423a5ca
- name: mips64
triplet: mips64-unknown-linux-musl
sha256: 9a99beb2e08584373451321d4580ff9c6fe3e1899daab511d2822d547e1a78be
- name: mips32el
triplet: mipsel-unknown-linux-musl
sha256: 2698fea97c0c8bfdbcfa5db3fead20f779411ab1222e571b966a823a9f27356d
- name: mips32elsf
triplet: mipsel-unknown-linux-muslsf
sha256: 36d8b864b3f6d27558d3f19695a4a39b79a873086edc60bebf733777df2b8359
- name: mips32
triplet: mips-unknown-linux-musl
sha256: b74b51d0f61a837f235ec2cecc7b112c1ed53ad8046c88b907a63b4fdf93d4f3
- name: mips32sf
triplet: mips-unknown-linux-muslsf
sha256: cc87dcaeed29f970bddb4b572c40a4074b9ac3997ba254725e8a89e05485538a
- name: powerpc64
triplet: powerpc64-unknown-linux-musl
sha256: d3cce7238b4e2bfaf0ae5a47d4390b84616ad8ae848a07809fe293f436444ee8
- name: powerpc
triplet: powerpc-unknown-linux-musl
sha256: aa50fe4bd9de4e1616400086ec5a29eded5bfbbb9b974b44e990ede3554ffc9e
- name: riscv32
triplet: riscv32-unknown-linux-musl
sha256: ebac6326d6a0cd77c03a9813e6cf63ce70d3d46381149a82cafb60563d9c4732
- name: riscv64
triplet: riscv64-unknown-linux-musl
sha256: 552361f25eaef471d88032eab89e7c1642ddfee466556f1f2e0f6eb68453b7a1
- name: s390x
triplet: s390x-ibm-linux-musl
sha256: d48e0465117ecdba93db01feffd7133bdc975b5dd859e388a8bf7937a9b68d36
- name: sh4
triplet: sh4-multilib-linux-musl
sha256: 6d1cb6c64e71773c4fe68b4a5d774e596ac3d58813b5c1365529b34be08ff309
- name: x86_64
triplet: x86_64-unknown-linux-musl
sha256: a896bad67a4dae7cd7baece62d537fda07f8c74e65fee1b450a691b83e151a9c
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up toolchain for ${{ matrix.name }}
run: |
CROSS_TOOLCHAIN_URL="https://github.com/cross-tools/musl-cross/releases/download/20250520/${{ matrix.triplet }}.tar.xz"

sudo mkdir -m 777 -p "${{ env.cross_dir }}"
env \
CROSS_TRIPLET="${{ matrix.triplet }}" \
CROSS_TOOLCHAIN_URL="$CROSS_TOOLCHAIN_URL" \
CROSS_TOOLCHAIN_SHA256="${{ matrix.sha256 }}" \
CROSS_DIR="${{ env.cross_dir }}" \
.github/workflows/scripts/cross-setup.sh
- name: Build for ${{ matrix.name }}
run: |
CROSS_PREFIX="${{ env.cross_dir }}/${{ matrix.triplet }}/bin/${{ matrix.triplet }}-"
VERSION="${{ inputs.version }}"

if [ -n "$VERSION" ]; then
make -j$(nproc) CFLAGS="-Werror" STATIC=1 CROSS_PREFIX="$CROSS_PREFIX" VERSION="$VERSION"
else
make -j$(nproc) CFLAGS="-Werror" STATIC=1 CROSS_PREFIX="$CROSS_PREFIX"
fi
- name: Upload ${{ matrix.name }}
uses: actions/upload-artifact@v4
with:
name: fakesip-linux-${{ matrix.name }}
path: build/fakesip
if-no-files-found: error
50 changes: 50 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Release
run-name: Release ${{ github.event.inputs.version }}

on:
workflow_dispatch:
inputs:
version:
description: Version Number
type: string
required: true

jobs:
Build:
uses: ./.github/workflows/ci.yml
with:
version: ${{ github.event.inputs.version }}

Release:
permissions:
contents: write
runs-on: ubuntu-latest
needs: Build
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Download Artifact
uses: actions/download-artifact@v4
with:
path: ${{ github.workspace }}/artifacts
- name: Reorganize files
run: |
mkdir release
cd artifacts
chmod a+x */fakesip*
for triplet in *; do
tar czvf "../release/$triplet.tar.gz" "$triplet"
done
- name: Make a tag
run: |
git config user.name 'GitHub Actions'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
git tag -a '${{ github.event.inputs.version }}' -m '${{ github.event.inputs.version }}'
git push origin '${{ github.event.inputs.version }}'
- name: Make a release
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
gh release create --title 'v${{ github.event.inputs.version }}' --generate-notes --verify-tag '${{ github.event.inputs.version }}' release/*.tar.gz
98 changes: 98 additions & 0 deletions .github/workflows/scripts/cross-setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#!/bin/sh
set -eux

: "------"
: "CROSS_TRIPLET=$CROSS_TRIPLET"
: "CROSS_TOOLCHAIN_URL=$CROSS_TOOLCHAIN_URL"
: "CROSS_TOOLCHAIN_SHA256=$CROSS_TOOLCHAIN_SHA256"
: "CROSS_DIR=$CROSS_DIR"
: "------"

CROSS_BASE="$CROSS_DIR/$CROSS_TRIPLET"
CROSS_SRC="$CROSS_BASE/src"
CROSS_USR="$CROSS_BASE/$CROSS_TRIPLET/sysroot/usr"
PATH="$CROSS_BASE/bin:$PATH"
PKG_CONFIG_PATH="$CROSS_DIR/$CROSS_TRIPLET/$CROSS_TRIPLET/sysroot/usr/lib/pkgconfig"
export PATH PKG_CONFIG_PATH

libmnl_name=libmnl-1.0.5
libmnl_tar=$libmnl_name.tar.bz2
libmnl_sha256=274b9b919ef3152bfb3da3a13c950dd60d6e2bcd54230ffeca298d03b40d0525
libmnl_url="https://www.netfilter.org/projects/libmnl/files/$libmnl_tar"

libnfnetlink_name=libnfnetlink-1.0.2
libnfnetlink_tar=$libnfnetlink_name.tar.bz2
libnfnetlink_sha256=b064c7c3d426efb4786e60a8e6859b82ee2f2c5e49ffeea640cfe4fe33cbc376
libnfnetlink_url="https://www.netfilter.org/projects/libnfnetlink/files/$libnfnetlink_tar"

libnetfilter_queue_name=libnetfilter_queue-1.0.5
libnetfilter_queue_tar=$libnetfilter_queue_name.tar.bz2
libnetfilter_queue_sha256=f9ff3c11305d6e03d81405957bdc11aea18e0d315c3e3f48da53a24ba251b9f5
libnetfilter_queue_url="https://www.netfilter.org/projects/libnetfilter_queue/files/$libnetfilter_queue_tar"


: "Downloading toolchain..."
cd "$CROSS_DIR"
curl -Lfo "$CROSS_TRIPLET.tar.xz" "$CROSS_TOOLCHAIN_URL"
echo "$CROSS_TOOLCHAIN_SHA256 *$CROSS_TRIPLET.tar.xz" | sha256sum -c
sha256sum "$CROSS_TRIPLET.tar.xz"


: "Extracting toolchain..."
cd "$CROSS_DIR"
rm -rf "$CROSS_BASE"
tar xf "$CROSS_TRIPLET.tar.xz"
chmod -R u+w "$CROSS_BASE"
mkdir -p "$CROSS_SRC"


: "Downloading dependencies..."
cd "$CROSS_SRC"
curl -Lfo "$libmnl_tar" "$libmnl_url"
echo "$libmnl_sha256 *$libmnl_tar" | sha256sum -c
curl -Lfo "$libnfnetlink_tar" "$libnfnetlink_url"
echo "$libnfnetlink_sha256 *$libnfnetlink_tar" | sha256sum -c
curl -Lfo "$libnetfilter_queue_tar" "$libnetfilter_queue_url"
echo "$libnetfilter_queue_sha256 *$libnetfilter_queue_tar" | sha256sum -c


: "Building libmnl..."
cd "$CROSS_SRC"
rm -rf "$libmnl_name"
tar xf "$libmnl_tar"
mkdir "$libmnl_name/builddir"
cd "$libmnl_name/builddir"
../configure \
--enable-static \
--host="$CROSS_TRIPLET" \
--prefix="$CROSS_USR"
make
make install


: "Building libnfnetlink..."
cd "$CROSS_SRC"
rm -rf "$libnfnetlink_name"
tar xf "$libnfnetlink_tar"
mkdir "$libnfnetlink_name/builddir"
cd "$libnfnetlink_name/builddir"
../configure \
--enable-static \
--host="$CROSS_TRIPLET" \
--prefix="$CROSS_USR"
make
make install


: "Building libnetfilter_queue..."
cd "$CROSS_SRC"
rm -rf "$libnetfilter_queue_name"
tar xf "$libnetfilter_queue_tar"
mkdir "$libnetfilter_queue_name/builddir"
cd "$libnetfilter_queue_name/builddir"
../configure \
--enable-static \
--host="$CROSS_TRIPLET" \
--prefix="$CROSS_USR"
make
make install