commit 9b442a7244b9941301226b005bc341dafefd1226 parent eb291e2b2e498c047bfb0b05c7d5007fd2582d6d Author: Antoine A <> Date: Wed, 19 Nov 2025 13:33:59 +0100 common: improve deb and ci Diffstat:
21 files changed, 138 insertions(+), 141 deletions(-)
diff --git a/.gitignore b/.gitignore @@ -23,4 +23,10 @@ __pycache__ *.log .DS_Store *.mk -common/src/main/resources/version.txt -\ No newline at end of file +common/src/main/resources/version.txt +debian/libeufin-bank +debian/libeufin-common +debian/libeufin-nexus +debian/files +debian/*.substvars +debian/*debhelper* +\ No newline at end of file diff --git a/contrib/ci/jobs/0-codespell/job.sh b/contrib/ci/jobs/0-codespell/job.sh @@ -22,6 +22,7 @@ configure~ */nexus/src/main/kotlin/tech/libeufin/nexus/iso20022/ExternalCodeSets.kt */nexus/src/main/kotlin/tech/libeufin/nexus/iso20022/BankTransactionCode.kt */common/src/main/kotlin/registry.kt +*/testbench/test/* EOF ); diff --git a/contrib/ci/jobs/1-build/job.sh b/contrib/ci/jobs/1-build/job.sh @@ -1,9 +1,9 @@ #!/bin/bash set -exuo pipefail +# Update system apt-get update -yq apt-get upgrade -yq -./bootstrap -./configure --prefix=/usr +# Build make diff --git a/contrib/ci/jobs/2-test/job.sh b/contrib/ci/jobs/2-test/job.sh @@ -5,11 +5,6 @@ set -exuo pipefail apt-get update -yq apt-get upgrade -yq -# Build -./bootstrap -./configure --prefix /usr -make build - # Setup postgres cluster sudo -u postgres pg_ctlcluster 17 main start sudo -u postgres createuser root --superuser diff --git a/contrib/ci/jobs/3-docs/job.sh b/contrib/ci/jobs/3-docs/job.sh @@ -1,7 +1,9 @@ #!/bin/bash set -exuo pipefail -./bootstrap -./configure --prefix=/usr +# Update system +apt-get update -yq +apt-get upgrade -yq +# Build documentation make doc diff --git a/contrib/ci/jobs/4-deb-package/job.sh b/contrib/ci/jobs/4-deb-package/job.sh @@ -1,22 +0,0 @@ -#!/bin/bash -set -exuo pipefail -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -# Install build-time dependencies. -# Update apt cache first -apt-get update -apt-get upgrade -y -mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control - -export VERSION="$(./contrib/ci/jobs/4-deb-package/version.sh)" -echo "Building package version ${VERSION}" -EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}" -./bootstrap -./configure --prefix=/usr -make install -dpkg-buildpackage -rfakeroot -b -uc -us - -ls -alh ../*.deb -mkdir -p /artifacts/libeufin/${CI_COMMIT_REF} # Variable comes from CI environment -mv ../*.deb /artifacts/libeufin/${CI_COMMIT_REF}/ diff --git a/contrib/ci/jobs/4-deb/job.sh b/contrib/ci/jobs/4-deb/job.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -exuo pipefail +# Update system +apt-get update -yq +apt-get upgrade -yq + +# Build package +export VERSION="$(./contrib/ci/jobs/4-deb-package/version.sh)" +echo "Building package version ${VERSION}" +make deb + +# Test package +./contrib/ci/jobs/4-deb/test.sh + +# Move to artifact +ls -alh ../*.deb +mkdir -p /artifacts/libeufin/${CI_COMMIT_REF} # Variable comes from CI environment +mv ../*.deb /artifacts/libeufin/${CI_COMMIT_REF}/ diff --git a/contrib/ci/jobs/4-deb/test.sh b/contrib/ci/jobs/4-deb/test.sh @@ -0,0 +1,45 @@ +set -eu + +ARCH=$(dpkg --print-architecture) + +function step() { + echo -e "\n$@" >&2 +} + +USERS="libeufin-bank libeufin-nexus" + +step "Install" +dpkg -i ../*.deb + +step "Install again" +dpkg -i ../*.deb + +step "Start postgres cluster" +sudo -u postgres pg_ctlcluster 17 main start + +step "versions version" +libeufin-bank --version +libeufin-nexus --version + +for USER in $USERS; do + step "$USER user:" + id $USER +done + +step "Check man pages" +man libeufin-bank > /dev/null +man libeufin-bank.conf > /dev/null +man libeufin-nexus > /dev/null +man libeufin-nexus.conf > /dev/null + +step "Remove" +dpkg --remove libeufin-bank libeufin-nexus + +step "Reinstall" +dpkg -i ../*.deb + +step "Purge:" +dpkg --purge libeufin-bank libeufin-nexus + +step "Reinstall" +dpkg -i ../*.deb +\ No newline at end of file diff --git a/contrib/ci/jobs/4-deb-package/version.sh b/contrib/ci/jobs/4-deb/version.sh diff --git a/contrib/ci/jobs/5-deploy-package/config.ini b/contrib/ci/jobs/5-deploy/config.ini diff --git a/contrib/ci/jobs/5-deploy-package/job.sh b/contrib/ci/jobs/5-deploy/job.sh diff --git a/debian/control b/debian/control @@ -4,10 +4,10 @@ Priority: optional Maintainer: Taler Systems SA <deb@taler.net> Uploaders: Christian Grothoff <grothoff@gnu.org>, Florian Dold <dold@taler.net> Build-Depends: - debhelper-compat (= 12), + debhelper-compat (= 13), unzip, default-jdk-headless | java-runtime-headless (>= 17) -Standards-Version: 4.1.0 +Standards-Version: 4.7.2 Vcs-Git: https://git.taler.net/libeufin.git Homepage: https://taler.net/ @@ -19,23 +19,21 @@ Description: Common files for other libeufin packages. Package: libeufin-bank Architecture: all Depends: - adduser, default-jre-headless | java-runtime-headless (>= 17), libeufin-common (= ${binary:Version}), ${misc:Depends} Recommends: - apache2 | nginx | httpd, + nginx | apache2 | httpd, postgresql (>= 14.0) Description: Software package to provide a regional bank with optional EBICS access. Package: libeufin-nexus Architecture: all Depends: - adduser, default-jre-headless | java-runtime-headless (>= 17), libeufin-common (= ${binary:Version}), ${misc:Depends} Recommends: - apache2 | nginx | httpd, + nginx | apache2 | httpd, postgresql (>= 14.0) Description: Software package to access a bank accounts via the EBICS protocol. diff --git a/debian/libeufin-bank.conf b/debian/libeufin-bank.conf @@ -0,0 +1,2 @@ +# Create service user +u! libeufin-bank - "LibEuFin Bank" - +\ No newline at end of file diff --git a/debian/libeufin-bank.install b/debian/libeufin-bank.install @@ -3,19 +3,20 @@ debian/etc/nginx/sites-available/libeufin-bank etc/nginx/sites-available/ debian/etc/apache2/sites-available/libeufin-bank.conf etc/apache2/sites-available/ debian/etc/libeufin/settings.json etc/libeufin/ -usr/bin/libeufin-bank -usr/bin/libeufin-bank-dbinit -usr/bin/libeufin-tan-*.sh +bank/build/install/libeufin-bank-shadow/bin/libeufin-bank usr/bin/ +contrib/libeufin-bank-dbinit usr/bin/ +contrib/libeufin-tan-*.sh usr/bin/ -usr/share/libeufin/sql/libeufin-bank-*.sql -usr/share/libeufin/sql/libeufin-conversion-*.sql +database-versioning/libeufin-bank*.sql usr/share/libeufin/sql/ -usr/share/libeufin/spa +contrib/wallet-core/bank/* usr/share/libeufin/spa -usr/share/libeufin/config.d/bank.conf +contrib/bank.conf usr/share/libeufin/config.d/ # FIXME: This name should be prefixed! -usr/lib/bank-*.jar +bank/build/install/libeufin-bank-shadow/lib/bank-*.jar usr/lib/ -usr/share/man/man1/libeufin-bank.1 -usr/share/man/man5/libeufin-bank.conf.5 -\ No newline at end of file +doc/prebuilt/man/libeufin-bank.1 usr/share/man/man1 +doc/prebuilt/man/libeufin-bank.conf.5 usr/share/man/man5 + +debian/libeufin-bank.conf /usr/lib/sysusers.d/ +\ No newline at end of file diff --git a/debian/libeufin-bank.postinst b/debian/libeufin-bank.postinst @@ -1,37 +1,13 @@ -#!/bin/bash +#!/bin/sh set -e -. /usr/share/debconf/confmodule - -case "${1}" in -configure) - - if ! getent group libeufin-bank >/dev/null; then - addgroup --quiet --system libeufin-bank - fi - - # Create users if needed - if ! getent passwd libeufin-bank >/dev/null; then - adduser --quiet \ - --system \ - --disabled-password \ - --no-create-home \ - --shell /bin/bash \ - --ingroup libeufin-bank \ - --home /var/lib/libeufin-bank \ - libeufin-bank - fi - ;; - -abort-upgrade | abort-remove | abort-deconfigure) ;; - -*) - echo "postinst called with unknown argument \`${1}'" >&2 - exit 1 - ;; -esac +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + if [ -x "$(command -v systemd-sysusers)" ]; then + systemd-sysusers + fi +fi #DEBHELPER# -exit 0 +exit 0 +\ No newline at end of file diff --git a/debian/libeufin-common.install b/debian/libeufin-common.install @@ -1,3 +1,3 @@ -usr/share/libeufin/config.d/currencies.conf -usr/share/libeufin/sql/versioning.sql -usr/bin/libeufin-dbconfig +contrib/currencies.conf usr/share/libeufin/config.d/ +database-versioning/versioning.sql usr/share/libeufin/sql/ +contrib/libeufin-dbconfig usr/bin/ diff --git a/debian/libeufin-nexus.conf b/debian/libeufin-nexus.conf @@ -0,0 +1,2 @@ +# Create service user +u! libeufin-nexus - "LibEuFin Nexus" /var/lib/libeufin-nexus +\ No newline at end of file diff --git a/debian/libeufin-nexus.install b/debian/libeufin-nexus.install @@ -1,18 +1,16 @@ debian/etc/libeufin/libeufin-nexus.conf etc/libeufin/ -usr/bin/libeufin-nexus +nexus/build/install/libeufin-nexus-shadow/bin/libeufin-nexus usr/bin/ +contrib/libeufin-nexus-dbinit usr/bin/ -usr/bin/libeufin-nexus-dbinit +database-versioning/libeufin-nexus*.sql usr/share/libeufin/sql/ -usr/share/libeufin/sql/libeufin-nexus-*.sql - -usr/share/libeufin/config.d/nexus.conf - -usr/share/man/man1/libeufin-nexus.1 -usr/share/man/man5/libeufin-nexus.conf.5 +contrib/nexus.conf usr/share/libeufin/config.d/ # FIXME: This name should be prefixed! -usr/lib/nexus-*.jar +nexus/build/install/libeufin-nexus-shadow/lib/nexus-*.jar usr/lib/ + +doc/prebuilt/man/libeufin-nexus.1 usr/share/man/man1 +doc/prebuilt/man/libeufin-nexus.conf.5 usr/share/man/man5 -usr/share/man/man1/libeufin-nexus.1 -usr/share/man/man5/libeufin-nexus.conf.5 -\ No newline at end of file +debian/libeufin-nexus.conf /usr/lib/sysusers.d/ +\ No newline at end of file diff --git a/debian/libeufin-nexus.postinst b/debian/libeufin-nexus.postinst @@ -1,37 +1,13 @@ -#!/bin/bash +#!/bin/sh set -e -. /usr/share/debconf/confmodule - -case "${1}" in -configure) - - if ! getent group libeufin-nexus >/dev/null; then - addgroup --quiet --system libeufin-nexus - fi - - # Create users if needed - if ! getent passwd libeufin-nexus >/dev/null; then - adduser --quiet \ - --system \ - --disabled-password \ - --no-create-home \ - --shell /bin/bash \ - --ingroup libeufin-nexus \ - --home /var/lib/libeufin-nexus \ - libeufin-nexus - fi - ;; - -abort-upgrade | abort-remove | abort-deconfigure) ;; - -*) - echo "postinst called with unknown argument \`${1}'" >&2 - exit 1 - ;; -esac +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + if [ -x "$(command -v systemd-sysusers)" ]; then + systemd-sysusers + fi +fi #DEBHELPER# -exit 0 +exit 0 +\ No newline at end of file diff --git a/debian/libeufin-nexus.tmpfiles b/debian/libeufin-nexus.tmpfiles @@ -1,2 +1,2 @@ -# Type Path Mode UID GID Age Argument -d /var/lib/libeufin-nexus 0700 libeufin-nexus libeufin-nexus - - +# Create home directory +d$ /var/lib/libeufin-nexus 0700 libeufin-nexus libeufin-nexus - - +\ No newline at end of file diff --git a/debian/rules b/debian/rules @@ -16,26 +16,19 @@ override_dh_auto_test: true override_dh_auto_configure: - ./configure --prefix=/usr + true -# Since this step is run under fakeroot and gradle -# doesn't work under fakeroot, we must make sure -# that everything is built by gradle before. -# The install-nobuild target installs under the assumption -# that everything is already built. override_dh_auto_install: - make -j1 install-nobuild DESTDIR=$(CURDIR)/debian/tmp + true + +override_dh_auto_build: + make build # Override this step because it's very slow and likely # unnecessary for us. override_dh_strip_nondeterminism: true -override_dh_install: - dh_install -# Needs to be called manually for debhelper-compat < 13 - dh_installtmpfiles - override_dh_installsystemd: # Need to specify units manually, since we have multiple # and dh_installsystemd by default only looks for "<package>.service".