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" echo "all: adminify aya b64 config noavatars" > tools/Makefile echo "%: %.c" >> tools/Makefile echo "$(printf '\\t')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 make CC=musl-gcc CYTO_INC=${PREFIX}/include CYTO_LIB=${PREFIX}/lib 2> /dev/null || true musl-gcc -static -o "${PREFIX}/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