From 23abdd2712bc259aa2880a8533886bc8c5a1fc86 Mon Sep 17 00:00:00 2001 From: Oliver Giles Date: Sun, 16 Aug 2026 20:12:49 +1200 Subject: [PATCH] Update packaging scripts, support for armv7a and cmake < 4.3 --- CMakeLists.txt | 4 ++ pkg/debian11-amd64.sh | 48 -------------- pkg/debian12-amd64.sh | 50 -------------- pkg/debian13-amd64.sh | 4 +- pkg/{debian11-armhf.sh => debian13-armhf.sh} | 23 +++---- pkg/debian14-amd64.sh | 2 - pkg/debian14-armhf.sh | 65 +++++++++++++++++++ ...p15.6-x86_64.sh => opensuse16.0-x86_64.sh} | 5 +- pkg/{centos7-x86_64.sh => rocky10-x86_64.sh} | 52 +++++++-------- pkg/{rocky8-x86_64.sh => rocky9-x86_64.sh} | 45 ++++++------- src/database.cpp | 8 +++ src/database.h | 1 + 12 files changed, 135 insertions(+), 172 deletions(-) delete mode 100755 pkg/debian11-amd64.sh delete mode 100755 pkg/debian12-amd64.sh rename pkg/{debian11-armhf.sh => debian13-armhf.sh} (67%) create mode 100755 pkg/debian14-armhf.sh rename pkg/{opensuse-leap15.6-x86_64.sh => opensuse16.0-x86_64.sh} (96%) rename pkg/{centos7-x86_64.sh => rocky10-x86_64.sh} (52%) rename pkg/{rocky8-x86_64.sh => rocky9-x86_64.sh} (62%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 57629e7..fe2715c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,6 +152,10 @@ include_directories(${CAPNP_INCLUDE_DIRS}) find_package(SQLite3 REQUIRED) include_directories(${SQLite3_INCLUDE_DIRS}) +if(NOT TARGET SQLite3::SQLite3) # CMake < 4.3 + add_library(SQLite3::SQLite3 ALIAS SQLite::SQLite3) +endif() + find_package(ZLIB REQUIRED) include_directories(${ZLIB_INCLUDE_DIRS}) diff --git a/pkg/debian11-amd64.sh b/pkg/debian11-amd64.sh deleted file mode 100755 index ce337c5..0000000 --- a/pkg/debian11-amd64.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -e - -OUTPUT_DIR=$PWD - -SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) - -VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty)-1~upstream-debian11 - -DOCKER_TAG=$(docker build -q - < laminar/DEBIAN/control -Package: laminar -Version: $VERSION -Section: -Priority: optional -Architecture: amd64 -Maintainer: Oliver Giles -Depends: libcapnp-0.7.0, libsqlite3-0, zlib1g -Description: Lightweight Continuous Integration Service -EOF -echo /etc/laminar.conf > laminar/DEBIAN/conffiles -cat < laminar/DEBIAN/postinst -#!/bin/bash -echo Creating laminar user with home in /var/lib/laminar -useradd -r -d /var/lib/laminar -s /usr/sbin/nologin laminar -mkdir -p /var/lib/laminar/cfg/{jobs,contexts,scripts} -chown -R laminar: /var/lib/laminar -EOF -chmod +x laminar/DEBIAN/postinst - -dpkg-deb --build laminar -mv laminar.deb /output/laminar_${VERSION}_amd64.deb -EOS diff --git a/pkg/debian12-amd64.sh b/pkg/debian12-amd64.sh deleted file mode 100755 index 37a7d08..0000000 --- a/pkg/debian12-amd64.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -e - -set -ex - -OUTPUT_DIR=$PWD - -SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) - -VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty)-1~upstream-debian12 - -DOCKER_TAG=$(docker build -q - < laminar/DEBIAN/control -Package: laminar -Version: $VERSION -Section: -Priority: optional -Architecture: amd64 -Maintainer: Oliver Giles -Depends: libcapnp-0.9.2, libsqlite3-0, zlib1g -Description: Lightweight Continuous Integration Service -EOF -echo /etc/laminar.conf > laminar/DEBIAN/conffiles -cat < laminar/DEBIAN/postinst -#!/bin/bash -echo Creating laminar user with home in /var/lib/laminar -useradd -r -d /var/lib/laminar -s /usr/sbin/nologin laminar -mkdir -p /var/lib/laminar/cfg/{jobs,contexts,scripts} -chown -R laminar: /var/lib/laminar -EOF -chmod +x laminar/DEBIAN/postinst - -dpkg-deb --build laminar -mv laminar.deb /output/laminar_${VERSION}_amd64.deb -EOS diff --git a/pkg/debian13-amd64.sh b/pkg/debian13-amd64.sh index bd49544..b534d7f 100755 --- a/pkg/debian13-amd64.sh +++ b/pkg/debian13-amd64.sh @@ -1,7 +1,5 @@ #!/bin/bash -e -set -ex - OUTPUT_DIR=$PWD SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) @@ -9,7 +7,7 @@ SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty)-1~upstream-debian13 DOCKER_TAG=$(docker build -q - < toolchain.cmake < toolchain.cmake <<\EOF +set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) +set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) +set(CMAKE_PREFIX_PATH /usr/lib/arm-linux-gnueabihf) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(ENV{PKG_CONFIG_PATH} "/usr/lib/arm-linux-gnueabihf/pkgconfig") EOF cd /build cmake \ -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake \ - -DCMAKE_LINKER=/usr/bin/arm-linux-gnueabihf-ld \ - -DCMAKE_OBJCOPY=/usr/bin/arm-linux-gnueabihf-objcopy \ - -DCMAKE_STRIP=/usr/bin/arm-linux-gnueabihf-strip \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DLAMINAR_VERSION=$VERSION \ @@ -46,7 +47,7 @@ Section: Priority: optional Architecture: armhf Maintainer: Oliver Giles -Depends: libcapnp-0.7.0, libsqlite3-0, zlib1g +Depends: libcapnp-1.0.1, libsqlite3-0, zlib1g Description: Lightweight Continuous Integration Service EOF echo /etc/laminar.conf > laminar/DEBIAN/conffiles diff --git a/pkg/debian14-amd64.sh b/pkg/debian14-amd64.sh index e5a501f..38ae0fb 100755 --- a/pkg/debian14-amd64.sh +++ b/pkg/debian14-amd64.sh @@ -1,7 +1,5 @@ #!/bin/bash -e -set -ex - OUTPUT_DIR=$PWD SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) diff --git a/pkg/debian14-armhf.sh b/pkg/debian14-armhf.sh new file mode 100755 index 0000000..ed5b1b2 --- /dev/null +++ b/pkg/debian14-armhf.sh @@ -0,0 +1,65 @@ +#!/bin/bash -e + +OUTPUT_DIR=$PWD + +SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) + +VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty)-1~upstream-debian14 + +DOCKER_TAG=$(docker build -q - < toolchain.cmake <<\EOF +set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) +set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) +set(CMAKE_PREFIX_PATH /usr/lib/arm-linux-gnueabihf) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(ENV{PKG_CONFIG_PATH} "/usr/lib/arm-linux-gnueabihf/pkgconfig") +EOF + +cd /build +cmake \ + -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLAMINAR_VERSION=$VERSION \ + -DZSH_COMPLETIONS_DIR=/usr/share/zsh/functions/Completion/Unix \ + /laminar +make -j4 +mkdir laminar +make DESTDIR=laminar install/strip + +mkdir laminar/DEBIAN +cat < laminar/DEBIAN/control +Package: laminar +Version: $VERSION +Section: +Priority: optional +Architecture: armhf +Maintainer: Oliver Giles +Depends: libcapnp-1.1.0, libsqlite3-0, zlib1g +Description: Lightweight Continuous Integration Service +EOF +echo /etc/laminar.conf > laminar/DEBIAN/conffiles +cat < laminar/DEBIAN/postinst +#!/bin/bash +echo Creating laminar user with home in /var/lib/laminar +useradd -r -d /var/lib/laminar -s /usr/sbin/nologin laminar +mkdir -p /var/lib/laminar/cfg/{jobs,contexts,scripts} +chown -R laminar: /var/lib/laminar +EOF +chmod +x laminar/DEBIAN/postinst + +dpkg-deb --build laminar +mv laminar.deb /output/laminar_${VERSION}_armhf.deb +EOS diff --git a/pkg/opensuse-leap15.6-x86_64.sh b/pkg/opensuse16.0-x86_64.sh similarity index 96% rename from pkg/opensuse-leap15.6-x86_64.sh rename to pkg/opensuse16.0-x86_64.sh index cb53fe2..daa3415 100755 --- a/pkg/opensuse-leap15.6-x86_64.sh +++ b/pkg/opensuse16.0-x86_64.sh @@ -4,10 +4,10 @@ OUTPUT_DIR=$PWD SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) -VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty | tr - .)~upstream_suse_leap_15.6 +VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty | tr - .)~upstream_opensuse16 DOCKER_TAG=$(docker build -q - < laminar.spec Summary: Lightweight Continuous Integration Service Name: laminar diff --git a/pkg/centos7-x86_64.sh b/pkg/rocky10-x86_64.sh similarity index 52% rename from pkg/centos7-x86_64.sh rename to pkg/rocky10-x86_64.sh index f7a0183..c56c90c 100755 --- a/pkg/centos7-x86_64.sh +++ b/pkg/rocky10-x86_64.sh @@ -4,40 +4,32 @@ OUTPUT_DIR=$PWD SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) -VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty | tr - .)~upstream_centos7 +VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty | tr - .)~upstream_rocky10 DOCKER_TAG=$(docker build -q - < laminar.spec Summary: Lightweight Continuous Integration Service @@ -46,7 +38,7 @@ Version: $VERSION Release: 1 License: GPL BuildRequires: systemd-units -Requires: sqlite zlib +Requires: sqlite-libs zlib %description Lightweight Continuous Integration Service @@ -54,7 +46,7 @@ Lightweight Continuous Integration Service %prep %build -cmake3 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DLAMINAR_VERSION=$VERSION -DSYSTEMD_UNITDIR=%{_unitdir} %{_sourcedir}/laminar-$VERSION +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DLAMINAR_VERSION=$VERSION -DSYSTEMD_UNITDIR=%{_unitdir} %{_sourcedir}/laminar-$VERSION pwd make diff --git a/pkg/rocky8-x86_64.sh b/pkg/rocky9-x86_64.sh similarity index 62% rename from pkg/rocky8-x86_64.sh rename to pkg/rocky9-x86_64.sh index 8131c6b..6d519ea 100755 --- a/pkg/rocky8-x86_64.sh +++ b/pkg/rocky9-x86_64.sh @@ -4,37 +4,32 @@ OUTPUT_DIR=$PWD SOURCE_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})/..) -VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty | tr - .)~upstream_rocky8 +VERSION=$(cd "$SOURCE_DIR" && git describe --tags --abbrev=8 --dirty | tr - .)~upstream_rocky9 DOCKER_TAG=$(docker build -q - < laminar.spec Summary: Lightweight Continuous Integration Service diff --git a/src/database.cpp b/src/database.cpp index 318ba15..8fee7e9 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -94,6 +94,10 @@ void Database::Statement::bindValue(int i, ulong e) { sqlite3_bind_int64(stmt, i, static_cast(e)); } +void Database::Statement::bindValue(int i, long long e) { + sqlite3_bind_int64(stmt, i, static_cast(e)); +} + void Database::Statement::bindValue(int i, const char* e) { sqlite3_bind_text(stmt, i, e, -1, nullptr); } @@ -130,6 +134,10 @@ template<> ulong Database::Statement::fetchColumn(int col) { return static_cast(sqlite3_column_int64(stmt, col)); } +template<> long long Database::Statement::fetchColumn(int col) { + return sqlite3_column_int64(stmt, col); +} + template<> double Database::Statement::fetchColumn(int col) { return sqlite3_column_double(stmt, col); } diff --git a/src/database.h b/src/database.h index d84a8be..74073df 100644 --- a/src/database.h +++ b/src/database.h @@ -125,6 +125,7 @@ private: void bindValue(int i, uint e); void bindValue(int i, long e); void bindValue(int i, unsigned long e); + void bindValue(int i, long long e); void bindValue(int i, const char* e); void bindValue(int i, const std::string& e);