Parsee/.forgejo/workflows/build-release.yaml
2024-09-11 15:10:03 +02:00

88 lines
3.7 KiB
YAML

name: Builds static Parsee for a release.
on: [release, workflow_dispatch]
jobs:
compile:
runs-on: amd64-debian
container:
image: debian:12
steps:
- name: Install LMDB+OpenSSL tools
run: |
echo $(uname -a) $(env | grep container)
apt update -y
apt install -y build-essential liblmdb-dev nodejs libssl-dev git wget
- name: Clone everything
run: |
mkdir -p repos
git clone --depth=1 https://git.musl-libc.org/git/musl repos/musl
git clone --depth=1 https://github.com/openssl/openssl repos/openssl
git clone --depth=1 https://github.com/LMDB/lmdb repos/lmdb
git clone --depth=1 https://git.kappach.at/KappaChat/Cytoplasm repos/cyto
echo "PREFIX=$GITHUB_WORKSPACE/usr" >> $GITHUB_ENV
echo "PATH=$GITHUB_WORKSPACE/usr/bin:$PATH" >> $GITHUB_ENV
echo "INCLUDE_PATH=$GITHUB_WORKSPACE/usr/include" >> $GITHUB_ENV
echo "LIBRARY_PATH=$GITHUB_WORKSPACE/usr/lib" >> $GITHUB_ENV
- name: Build musl
run: |
cd repos/musl
./configure --prefix=${PREFIX}
make -j$(nproc)
make install -j$(nproc)
alias musl-gcc="musl-gcc -Wl,-Bstatic -L ${PREFIX}/lib"
- name: Build OpenSSL
run: |
alias musl-gcc="musl-gcc -Wl,-Bstatic -L ${PREFIX}/lib"
cd repos/openssl
CC=musl-gcc ./Configure -static --static --prefix=${PREFIX} no-async no-engine -DOPENSSL_NO_SECURE_MEMORY
make -j$(nproc)
make install -j$(nproc)
cp libcrypto.a ${PREFIX}/lib
cp libssl.a ${PREFIX}/lib
- name: Build LMDB
run: |
alias musl-gcc="musl-gcc -Wl,-Bstatic -L ${PREFIX}/lib"
cd repos/lmdb/libraries/liblmdb
make CC=musl-gcc
make install prefix=${PREFIX}
- name: Build Cytoplasm
run: |
alias musl-gcc="musl-gcc -Wl,-Bstatic -L ${PREFIX}/lib"
cd repos/cyto
rm configure
wget https://kappach.at/configure
chmod +x configure
./configure --cc=musl-gcc --prefix=${PREFIX} --with-lmdb
make -j$(nproc)
make install
- name: Clone/Build Parsee
run: |
git clone https://git.kappach.at/${{ github.repository}} parsee
cd parsee
alias musl-gcc="musl-gcc -Wl,-Bstatic -L ${PREFIX}/lib"
export TAB=$(printf '\t')
echo "all: adminify aya b64 config noavatars" > tools/Makefile
echo "%: %.c" >> tools/Makefile
echo "${TAB}musl-gcc -I ../usr/include -static -o ../\$@.\$(shell uname -m) $< -lm -lpthread -lssl -lCytoplasm -lssl -lcrypto -llmdb -flto -fdata-sections -ffunction-sections -s -Wl,-gc-sections -lCytoplasm" >> tools/Makefile
cat tools/Makefile
cd tools
make
cd ..
make CC=musl-gcc CYTO_INC=${PREFIX}/include CYTO_LIB=${PREFIX}/lib 2> /dev/null || true
musl-gcc -static -o "parsee.$(uname -m)" $(find build/ -name '*.o') -lm -lpthread -lssl -lCytoplasm -lssl -lcrypto -llmdb -flto -fdata-sections -ffunction-sections -s -Wl,-gc-sections -lCytoplasm
ls $PREFIX
- name: Create a final archive
run: |
cd parsee
mkdir bins
ls "${PREFIX}"
ls .
cp $(find . -maxdepth 1 -name "*.$(uname -m)") bins
tar -czvf "$(uname)-$(uname -m).tar.gz" bins
cp "$(uname)-$(uname -m).tar.gz" ..
echo "NAM=parsee-$(uname)-$(uname -m)" >> $GITHUB_ENV
echo "DIR=$PWD/bins" >> $GITHUB_ENV
- name: Upload it all(as a ZIP of a .TGZ)
uses: https://github.com/christopherhx/gitea-upload-artifact@v4
with:
name: ${{ env.PGZ }}
path: ${{ env.DIR }}