Loading debian/rules +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ ifndef ROOTBUILD @if [ "$@" = "clean" ]; then \ rm -f debian/.nspawn-done debian/files; \ elif { [ "$@" = "binary" ] || [ "$@" = "binary-arch" ]; } && [ ! -f debian/.nspawn-done ]; then \ sudo packaging/build-nspawn.sh blogi && \ sudo packaging/build-nspawn.sh update-libs blogi && \ for deb in packaging/output/*.deb; do \ cp "$$deb" ../ && \ dpkg-distaddfile "$$(basename "$$deb")" \ Loading packaging/build-nspawn.sh +130 −6 Original line number Diff line number Diff line Loading @@ -73,10 +73,10 @@ while [[ $# -gt 0 ]]; do -h|--help) echo "Usage: $0 [--clean] [--arch amd64] [PHASE...]" echo "" echo "Phases: chroot, toolchain, libraries, blogi, all (default)" echo "Phases: chroot, toolchain, libraries, update-libs, blogi, all (default)" exit 0 ;; chroot|toolchain|libraries|blogi|all) chroot|toolchain|libraries|update-libs|blogi|all) PHASES+=("$1"); shift ;; *) echo "Unknown option: $1"; exit 1 ;; esac Loading Loading @@ -467,6 +467,129 @@ build_libraries() { " } # ───────────────────────────────────────────────────────────── # Phase 3b: Update (git pull) and rebuild custom libraries # ───────────────────────────────────────────────────────────── update_libraries() { echo "==> Updating dependency libraries inside nspawn..." systemd-nspawn -D "$CHROOT_DIR" --pipe -- bash -c " set -e TOOLCHAIN=/usr/local/musl/share/musl-llvm-toolchain.cmake PREFIX=/usr/local cd /build/libs update_lib() { local name=\$1 local url=\$2 local extra_args=\${3:-} if [ ! -d \$name ]; then echo \" [clone] \$name\" git clone --depth 1 \$url \$name else echo \" [pull] \$name\" cd \$name git fetch --depth 1 origin LOCAL=\$(git rev-parse HEAD) REMOTE=\$(git rev-parse FETCH_HEAD) if [ \"\$LOCAL\" = \"\$REMOTE\" ]; then echo \" [skip] \$name already up-to-date\" cd /build/libs return fi git reset --hard FETCH_HEAD cd /build/libs fi # Remove done marker and rebuild rm -f .\${name}.done rm -rf \$name/build mkdir -p \$name/build && cd \$name/build cmake .. -G Ninja \\ -DCMAKE_TOOLCHAIN_FILE=\$TOOLCHAIN \\ -DCMAKE_INSTALL_PREFIX=\$PREFIX \\ -DCMAKE_BUILD_TYPE=Release \\ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \\ \$extra_args ninja ninja install cd /build/libs touch .\${name}.done } # ── System/third-party dependencies ── update_lib json-c '${LIBS[json-c]}' '-DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DDISABLE_WERROR=ON' update_lib libyaml '${LIBS[libyaml]}' '-DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DINSTALL_CMAKE_DIR=lib/cmake/yaml' update_lib brotli '${LIBS[brotli]}' '-DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF' update_lib tinyxml2 '${LIBS[tinyxml2]}' '-DBUILD_SHARED_LIBS=OFF -Dtinyxml2_BUILD_TESTING=OFF' # SQLite (autoconf-based) if [ -d sqlite ]; then echo \" [pull] sqlite\" cd sqlite git fetch --depth 1 origin LOCAL=\$(git rev-parse HEAD) REMOTE=\$(git rev-parse FETCH_HEAD) if [ \"\$LOCAL\" != \"\$REMOTE\" ]; then git reset --hard FETCH_HEAD rm -f /build/libs/.sqlite.done CC=/usr/local/musl/bin/musl-clang ./configure --prefix=\$PREFIX --disable-shared --enable-static make -j\$(nproc) make install touch /build/libs/.sqlite.done else echo \" [skip] sqlite already up-to-date\" fi cd /build/libs fi # PostgreSQL libpq (autoconf-based) if [ -d postgres ]; then echo \" [pull] libpq\" cd postgres git fetch --depth 1 origin LOCAL=\$(git rev-parse HEAD) REMOTE=\$(git rev-parse FETCH_HEAD) if [ \"\$LOCAL\" != \"\$REMOTE\" ]; then git reset --hard FETCH_HEAD rm -f /build/libs/.libpq.done CC=/usr/local/musl/bin/musl-clang CXX=/usr/local/musl/bin/musl-clang++ \\ ./configure --prefix=\$PREFIX --without-readline --without-zlib --without-icu \\ --host=x86_64-linux-musl --build=x86_64-linux-gnu cd src/interfaces/libpq make -j\$(nproc) make install cd /build/libs/postgres/src/include make install cd /build/libs/postgres/src/bin/pg_config make install touch /build/libs/.libpq.done else echo \" [skip] libpq already up-to-date\" fi cd /build/libs fi # ── Custom libraries ── update_lib libcmdplus '${LIBS[libcmdplus]}' update_lib uuidplus '${LIBS[uuidplus]}' update_lib libnetplus '${LIBS[libnetplus]}' update_lib libhtmlpp '${LIBS[libhtmlpp]}' update_lib libhttppp '${LIBS[libhttppp]}' update_lib libconfplus '${LIBS[libconfplus]}' update_lib libdbpp '${LIBS[libdbpp]}' update_lib libgameinfoplus '${LIBS[libgameinfoplus]}' update_lib libparitypp '${LIBS[libparitypp]}' update_lib authdb '${LIBS[authdb]}' '-DBUILD_BINDINGS=OFF' update_lib mediadb '${LIBS[mediadb]}' '-DCLIENT_ONLY=ON' update_lib smtpclient '${LIBS[smtpclient]}' '-DCMAKE_INSTALL_LIBDIR=/usr/local/lib -DCMAKE_INSTALL_INCLUDEDIR=/usr/local/include' echo '==> All libraries updated successfully' " } # ───────────────────────────────────────────────────────────── # Phase 4: Build blogi .deb packages (dpkg-buildpackage handles cmake) # ───────────────────────────────────────────────────────────── Loading Loading @@ -517,6 +640,7 @@ run_phase() { chroot) setup_chroot ;; toolchain) setup_toolchain ;; libraries) build_libraries ;; update-libs) update_libraries ;; blogi) build_blogi ;; all) setup_chroot Loading Loading
debian/rules +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ ifndef ROOTBUILD @if [ "$@" = "clean" ]; then \ rm -f debian/.nspawn-done debian/files; \ elif { [ "$@" = "binary" ] || [ "$@" = "binary-arch" ]; } && [ ! -f debian/.nspawn-done ]; then \ sudo packaging/build-nspawn.sh blogi && \ sudo packaging/build-nspawn.sh update-libs blogi && \ for deb in packaging/output/*.deb; do \ cp "$$deb" ../ && \ dpkg-distaddfile "$$(basename "$$deb")" \ Loading
packaging/build-nspawn.sh +130 −6 Original line number Diff line number Diff line Loading @@ -73,10 +73,10 @@ while [[ $# -gt 0 ]]; do -h|--help) echo "Usage: $0 [--clean] [--arch amd64] [PHASE...]" echo "" echo "Phases: chroot, toolchain, libraries, blogi, all (default)" echo "Phases: chroot, toolchain, libraries, update-libs, blogi, all (default)" exit 0 ;; chroot|toolchain|libraries|blogi|all) chroot|toolchain|libraries|update-libs|blogi|all) PHASES+=("$1"); shift ;; *) echo "Unknown option: $1"; exit 1 ;; esac Loading Loading @@ -467,6 +467,129 @@ build_libraries() { " } # ───────────────────────────────────────────────────────────── # Phase 3b: Update (git pull) and rebuild custom libraries # ───────────────────────────────────────────────────────────── update_libraries() { echo "==> Updating dependency libraries inside nspawn..." systemd-nspawn -D "$CHROOT_DIR" --pipe -- bash -c " set -e TOOLCHAIN=/usr/local/musl/share/musl-llvm-toolchain.cmake PREFIX=/usr/local cd /build/libs update_lib() { local name=\$1 local url=\$2 local extra_args=\${3:-} if [ ! -d \$name ]; then echo \" [clone] \$name\" git clone --depth 1 \$url \$name else echo \" [pull] \$name\" cd \$name git fetch --depth 1 origin LOCAL=\$(git rev-parse HEAD) REMOTE=\$(git rev-parse FETCH_HEAD) if [ \"\$LOCAL\" = \"\$REMOTE\" ]; then echo \" [skip] \$name already up-to-date\" cd /build/libs return fi git reset --hard FETCH_HEAD cd /build/libs fi # Remove done marker and rebuild rm -f .\${name}.done rm -rf \$name/build mkdir -p \$name/build && cd \$name/build cmake .. -G Ninja \\ -DCMAKE_TOOLCHAIN_FILE=\$TOOLCHAIN \\ -DCMAKE_INSTALL_PREFIX=\$PREFIX \\ -DCMAKE_BUILD_TYPE=Release \\ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \\ \$extra_args ninja ninja install cd /build/libs touch .\${name}.done } # ── System/third-party dependencies ── update_lib json-c '${LIBS[json-c]}' '-DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DDISABLE_WERROR=ON' update_lib libyaml '${LIBS[libyaml]}' '-DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DINSTALL_CMAKE_DIR=lib/cmake/yaml' update_lib brotli '${LIBS[brotli]}' '-DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF' update_lib tinyxml2 '${LIBS[tinyxml2]}' '-DBUILD_SHARED_LIBS=OFF -Dtinyxml2_BUILD_TESTING=OFF' # SQLite (autoconf-based) if [ -d sqlite ]; then echo \" [pull] sqlite\" cd sqlite git fetch --depth 1 origin LOCAL=\$(git rev-parse HEAD) REMOTE=\$(git rev-parse FETCH_HEAD) if [ \"\$LOCAL\" != \"\$REMOTE\" ]; then git reset --hard FETCH_HEAD rm -f /build/libs/.sqlite.done CC=/usr/local/musl/bin/musl-clang ./configure --prefix=\$PREFIX --disable-shared --enable-static make -j\$(nproc) make install touch /build/libs/.sqlite.done else echo \" [skip] sqlite already up-to-date\" fi cd /build/libs fi # PostgreSQL libpq (autoconf-based) if [ -d postgres ]; then echo \" [pull] libpq\" cd postgres git fetch --depth 1 origin LOCAL=\$(git rev-parse HEAD) REMOTE=\$(git rev-parse FETCH_HEAD) if [ \"\$LOCAL\" != \"\$REMOTE\" ]; then git reset --hard FETCH_HEAD rm -f /build/libs/.libpq.done CC=/usr/local/musl/bin/musl-clang CXX=/usr/local/musl/bin/musl-clang++ \\ ./configure --prefix=\$PREFIX --without-readline --without-zlib --without-icu \\ --host=x86_64-linux-musl --build=x86_64-linux-gnu cd src/interfaces/libpq make -j\$(nproc) make install cd /build/libs/postgres/src/include make install cd /build/libs/postgres/src/bin/pg_config make install touch /build/libs/.libpq.done else echo \" [skip] libpq already up-to-date\" fi cd /build/libs fi # ── Custom libraries ── update_lib libcmdplus '${LIBS[libcmdplus]}' update_lib uuidplus '${LIBS[uuidplus]}' update_lib libnetplus '${LIBS[libnetplus]}' update_lib libhtmlpp '${LIBS[libhtmlpp]}' update_lib libhttppp '${LIBS[libhttppp]}' update_lib libconfplus '${LIBS[libconfplus]}' update_lib libdbpp '${LIBS[libdbpp]}' update_lib libgameinfoplus '${LIBS[libgameinfoplus]}' update_lib libparitypp '${LIBS[libparitypp]}' update_lib authdb '${LIBS[authdb]}' '-DBUILD_BINDINGS=OFF' update_lib mediadb '${LIBS[mediadb]}' '-DCLIENT_ONLY=ON' update_lib smtpclient '${LIBS[smtpclient]}' '-DCMAKE_INSTALL_LIBDIR=/usr/local/lib -DCMAKE_INSTALL_INCLUDEDIR=/usr/local/include' echo '==> All libraries updated successfully' " } # ───────────────────────────────────────────────────────────── # Phase 4: Build blogi .deb packages (dpkg-buildpackage handles cmake) # ───────────────────────────────────────────────────────────── Loading Loading @@ -517,6 +640,7 @@ run_phase() { chroot) setup_chroot ;; toolchain) setup_toolchain ;; libraries) build_libraries ;; update-libs) update_libraries ;; blogi) build_blogi ;; all) setup_chroot Loading