taler-rust

GNU Taler code in Rust. Largely core banking integrations.
Log | Files | Refs | Submodules | README | LICENSE

commit 58ed443667b14f3bece69dcf4648fe9d1e55d2d9
parent f6d45d6bce90d68f5917a2c374e9b2cc252f9009
Author: Antoine A <>
Date:   Tue, 18 Nov 2025 18:29:33 +0100

magnet-bank: migrate deb logic from cargo-deb to dpkg-buildpackage

Diffstat:
M.gitignore | 6++++--
MCargo.lock | 20++++++++++----------
MMakefile | 2+-
Mbuild-system/configure.py | 3++-
Mcontrib/ci/Containerfile | 6+++---
Mcontrib/ci/jobs/3-deb/job.sh | 11++++-------
Mcontrib/ci/jobs/3-deb/test.sh | 10+++++-----
Adebian/changelog | 5+++++
Adebian/control | 18++++++++++++++++++
Adebian/copyright | 9+++++++++
Adebian/rules | 22++++++++++++++++++++++
Adebian/taler-magnet-bank.conf | 9+++++++++
Adebian/taler-magnet-bank.install | 16++++++++++++++++
Mdebian/taler-magnet-bank.postinst | 8+++++---
Ddebian/taler-magnet-bank.sysusers | 10----------
Mdebian/taler-magnet-bank.tmpfiles | 8++++----
Mtaler-magnet-bank/Cargo.toml | 75++-------------------------------------------------------------------------
Mtaler-magnet-bank/src/lib.rs | 2+-
18 files changed, 120 insertions(+), 120 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -5,4 +5,6 @@ configure test-suite.log target dev.conf -keys.json -\ No newline at end of file +keys.json +debian/.debhelper +debian/taler-magnet-bank +\ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock @@ -102,9 +102,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" dependencies = [ "axum-core", "bytes", @@ -260,9 +260,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.51" +version = "4.5.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "aa8120877db0e5c011242f96806ce3c94e0737ab8108532a76a3300a01db2ab8" dependencies = [ "clap_builder", "clap_derive", @@ -270,9 +270,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.5.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "02576b399397b659c26064fbc92a75fede9d18ffd5f80ca1cd74ddab167016e1" dependencies = [ "anstream", "anstyle", @@ -1904,9 +1904,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.15.1" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" +checksum = "10574371d41b0d9b2cff89418eda27da52bcaff2cc8741db26382a77c29131f1" dependencies = [ "serde_core", "serde_with_macros", @@ -1914,9 +1914,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.15.1" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" +checksum = "08a72d8216842fdd57820dc78d840bef99248e35fb2554ff923319e60f2d686b" dependencies = [ "darling", "proc-macro2", diff --git a/Makefile b/Makefile @@ -47,7 +47,7 @@ doc: .PHONY: deb deb: - cargo deb -v -p taler-magnet-bank --deb-version=$(shell ./contrib/ci/version.sh) + dpkg-buildpackage -b -uc -us .PHONY: ci ci: diff --git a/build-system/configure.py b/build-system/configure.py @@ -5,5 +5,6 @@ from talerbuildconfig import * b = BuildConfig() b.enable_prefix() b.enable_configmk() -b.add_tool(PosixTool("find")) +b.add_tool(PosixTool("rustup")) +b.add_tool(PosixTool("cargo")) b.run() diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile @@ -18,15 +18,15 @@ RUN dpkg --add-architecture amd64 && \ postgresql \ mold \ clang \ + debhelper-compat \ + build-essential \ crossbuild-essential-arm64 \ crossbuild-essential-amd64 \ libc6-dev-arm64-cross \ libc6-dev-amd64-cross && \ # Add both amd64 and arm64 rustc targets rustup target add x86_64-unknown-linux-gnu && \ - rustup target add aarch64-unknown-linux-gnu && \ - # Install cargo debian package tool - cargo install cargo-deb + rustup target add aarch64-unknown-linux-gnu WORKDIR /workdir diff --git a/contrib/ci/jobs/3-deb/job.sh b/contrib/ci/jobs/3-deb/job.sh @@ -4,19 +4,16 @@ set -exuo pipefail # Update system apt-get update -yq apt-get upgrade -yq -cargo install cargo-deb # Build package -export GIT_HASH=$(git rev-parse --short HEAD) export VERSION="$(./contrib/ci/version.sh)" echo "Building package version ${VERSION}" -cargo deb -p taler-magnet-bank --deb-version ${VERSION} --target x86_64-unknown-linux-gnu -cargo deb -p taler-magnet-bank --deb-version ${VERSION} --target aarch64-unknown-linux-gnu +make deb # Test package ./contrib/ci/jobs/3-deb/test.sh # Move to artifact -ls -alh /workdir/target/*/debian/*.deb +ls -alh ../*.deb mkdir -p /artifacts/magnet-bank/${CI_COMMIT_REF} # Variable comes from CI environment -mv /workdir/target/*/debian/*.deb /artifacts/magnet-bank/${CI_COMMIT_REF} -\ No newline at end of file +mv ../*.deb /artifacts/magnet-bank/${CI_COMMIT_REF} +\ No newline at end of file diff --git a/contrib/ci/jobs/3-deb/test.sh b/contrib/ci/jobs/3-deb/test.sh @@ -9,10 +9,10 @@ function step() { USERS="taler-magnet-bank-httpd taler-magnet-bank-worker" step "Install magnet-bank" -dpkg -i /workdir/target/debian/taler-magnet-bank*$ARCH.deb +dpkg -i ../taler-magnet-bank_*.deb step "Install magnet-bank again" -dpkg -i /workdir/target/debian/taler-magnet-bank*$ARCH.deb +dpkg -i ../taler-magnet-bank_*.deb step "Start postgres cluster" sudo -u postgres pg_ctlcluster 17 main start @@ -41,10 +41,10 @@ step "Remove magnet-bank" dpkg --remove taler-magnet-bank step "Reinstall magnet-bank" -dpkg -i /workdir/target/*/debian/*$ARCH.deb +dpkg -i ../taler-magnet-bank_*.deb step "Purge magnet-bank:" dpkg --purge taler-magnet-bank step "Reinstall magnet-bank" -dpkg -i /workdir/target/*/debian/*$ARCH.deb -\ No newline at end of file +dpkg -i ../taler-magnet-bank_*.deb +\ No newline at end of file diff --git a/debian/changelog b/debian/changelog @@ -0,0 +1,5 @@ +taler-rust (0.0.0) unstable; urgency=medium + + * Initial release. + + -- antoine <antoine@lima-local> Tue, 18 Nov 2025 14:58:02 +0100 diff --git a/debian/control b/debian/control @@ -0,0 +1,17 @@ +Source: taler-rust +Section: net +Priority: optional +Maintainer: Taler Systems SA <deb@taler.net> +Uploaders: Christian Grothoff <grothoff@gnu.org>, Florian Dold <dold@taler.net> +Rules-Requires-Root: no +Build-Depends: + debhelper-compat (= 13), + debhelper +Standards-Version: 4.7.2 +Vcs-Git: https://git.taler.net/taler-rust.git +Homepage: https://taler.net/ + +Package: taler-magnet-bank +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends} +Description: GNU Taler adapter for Magnet Bank +\ No newline at end of file diff --git a/debian/copyright b/debian/copyright @@ -0,0 +1,9 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: taler-rust +Upstream-Contact: Christian Grothoff <christian@grothoff.org> +Source: https://git.taler.org/taler-rust.git/ + +Files: * +Copyright: + 2025 Taler Systems SA +License: GPL-3+ diff --git a/debian/rules b/debian/rules @@ -0,0 +1,22 @@ +#!/usr/bin/make -f + +%: + dh $@ --no-parallel + +override_dh_auto_configure: + rustup default stable + +override_dh_auto_build: + cargo build --release + +override_dh_auto_test: + true + +override_dh_auto_install: + true + +override_dh_installsystemd: + dh_installsystemd --no-enable --no-start --no-stop-on-upgrade --name taler-magnet-bank-httpd + dh_installsystemd --no-enable --no-start --no-stop-on-upgrade --name taler-magnet-bank-worker + dh_installsystemd --no-enable --no-start --no-stop-on-upgrade --name taler-magnet-bank + dh_installsystemd diff --git a/debian/taler-magnet-bank.conf b/debian/taler-magnet-bank.conf @@ -0,0 +1,8 @@ +# Create services users +u! taler-magnet-bank-worker - "Taler Magnet Bank Adapter worker" /var/lib/taler-magnet-bank +u! taler-magnet-bank-httpd - "Taler Magnet Bank Adapter server" /var/lib/taler-magnet-bank + +# Create DB access group +g taler-magnet-bank-db - +m taler-magnet-bank-worker taler-magnet-bank-db +m taler-magnet-bank-httpd taler-magnet-bank-db +\ No newline at end of file diff --git a/debian/taler-magnet-bank.install b/debian/taler-magnet-bank.install @@ -0,0 +1,15 @@ +debian/etc/* /etc + +target/release/taler-magnet-bank /usr/bin + +contrib/taler-magnet-bank-dbconfig /usr/bin + +common/taler-common/db/versioning.sql /usr/share/taler-magnet-bank/sql/ +taler-magnet-bank/db/magnet-bank*.sql /usr/share/taler-magnet-bank/sql/ + +taler-magnet-bank/magnet-bank.conf /usr/share/taler-magnet-bank/config.d/ + +doc/prebuilt/man/taler-magnet-bank.1 /usr/share/man/man1/ +doc/prebuilt/man/taler-magnet-bank.conf.5 /usr/share/man/man5/ + +debian/taler-magnet-bank.conf /usr/lib/sysusers.d/ +\ No newline at end of file diff --git a/debian/taler-magnet-bank.postinst b/debian/taler-magnet-bank.postinst @@ -1,9 +1,11 @@ -#!/bin/bash +#!/bin/sh set -e -if command -v systemd-sysusers >/dev/null 2>&1; then - systemd-sysusers +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# diff --git a/debian/taler-magnet-bank.sysusers b/debian/taler-magnet-bank.sysusers @@ -1,9 +0,0 @@ -# Create services users -u! taler-magnet-bank-worker - "Taler Magnet Bank Adapter worker" /var/lib/taler-magnet-bank -u! taler-magnet-bank-httpd - "Taler Magnet Bank Adapter server" /var/lib/taler-magnet-bank - - -# Create DB access group -g taler-magnet-bank-db - -m taler-magnet-bank-worker taler-magnet-bank-db -m taler-magnet-bank-httpd taler-magnet-bank-db -\ No newline at end of file diff --git a/debian/taler-magnet-bank.tmpfiles b/debian/taler-magnet-bank.tmpfiles @@ -1,7 +1,7 @@ # Create home directory -d /var/lib/taler-magnet-bank 0700 taler-magnet-bank-worker taler-magnet-bank-worker - - +d$ /var/lib/taler-magnet-bank 0700 taler-magnet-bank-worker taler-magnet-bank-worker - - # Update secret files permissions -z /etc/taler-magnet-bank/secrets/magnet-bank-db.secret.conf 0460 root taler-magnet-bank-db - - -z /etc/taler-magnet-bank/secrets/magnet-bank-httpd.secret.conf 0640 taler-magnet-bank-httpd root - - -z /etc/taler-magnet-bank/secrets/magnet-bank-worker.secret.conf 0640 taler-magnet-bank-worker root - - +z /etc/taler-magnet-bank/secrets/magnet-bank-db.secret.conf 0460 root taler-magnet-bank-db - - +z /etc/taler-magnet-bank/secrets/magnet-bank-httpd.secret.conf 0640 taler-magnet-bank-httpd root - - +z /etc/taler-magnet-bank/secrets/magnet-bank-worker.secret.conf 0640 taler-magnet-bank-worker root - - diff --git a/taler-magnet-bank/Cargo.toml b/taler-magnet-bank/Cargo.toml @@ -39,76 +39,4 @@ rand_core.workspace = true owo-colors.workspace = true [dev-dependencies] -taler-test-utils.workspace = true - -[package.metadata.deb] -name = "taler-magnet-bank" -priority = "optional" -section = "net" -maintainer = "Taler Systems SA <deb@taler.net>" -maintainer-scripts = "../debian/" -systemd-units = [ - { unit-name = "taler-magnet-bank", enable = false, start = false, stop-on-upgrade = false }, - { unit-name = "taler-magnet-bank-httpd", enable = false, start = false, stop-on-upgrade = false }, - { unit-name = "taler-magnet-bank-worker", enable = false, start = false, stop-on-upgrade = false }, -] -recommends = ["nginx | apache2 | httpd", "postgresql (>= 15.0)"] -assets = [ - # Binary - [ - "target/release/taler-magnet-bank", - "/usr/bin/", - "755", - ], - # Systemd config files - [ - "../debian/taler-magnet-bank.tmpfiles", - "/usr/lib/tmpfiles.d/taler-magnet-bank.conf", - "644", - ], - [ - "../debian/taler-magnet-bank.sysusers", - "/usr/lib/sysusers.d/taler-magnet-bank.conf", - "644", - ], - # Scripts - [ - "../contrib/taler-magnet-bank-dbconfig", - "/usr/bin/", - "755", - ], - # Sql - [ - "../common/taler-common/db/versioning.sql", - "/usr/share/taler-magnet-bank/sql/", - "644", - ], - [ - "db/magnet-bank*.sql", - "/usr/share/taler-magnet-bank/sql/", - "644", - ], - # Default config - [ - "magnet-bank.conf", - "/usr/share/taler-magnet-bank/config.d/", - "644", - ], - # Configs - [ - "../debian/etc/**/*", - "/etc", - "644", - ], - # Man pages - [ - "../doc/prebuilt/man/taler-magnet-bank.1", - "/usr/share/man/man1/", - "644", - ], - [ - "../doc/prebuilt/man/taler-magnet-bank.conf.5", - "/usr/share/man/man5/", - "644", - ], -] +taler-test-utils.workspace = true +\ No newline at end of file diff --git a/taler-magnet-bank/src/lib.rs b/taler-magnet-bank/src/lib.rs @@ -186,7 +186,7 @@ impl HuIban { } fn check_bban(bban: &str) -> Result<(), HuIbanErr> { - let bban = bban.strip_suffix("00000000").unwrap_or(bban).as_bytes(); + let bban = bban.as_bytes(); if bban.len() != 16 && bban.len() != 24 { return Err(HuIbanErr::BbanSize(bban.len())); } else if !bban.iter().all(u8::is_ascii_digit) {