From 0ff1d33a635da117e385e6f5f3d3ae42ae48ca1e Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 24 Apr 2024 11:15:39 +0200 Subject: rework ng packaging --- packaging/ng/.gitignore | 1 + packaging/ng/Dockerfile.debian-bookworm | 37 ------------ packaging/ng/Dockerfile.ubuntu-kinetic | 32 ----------- packaging/ng/README.md | 5 +- packaging/ng/build-debian-bookworm.sh | 25 -------- packaging/ng/build-ubuntu-kinetic.sh | 23 -------- packaging/ng/build.sh | 67 ++++++++++++++++++++++ packaging/ng/buildconfig/README | 5 ++ packaging/ng/buildconfig/anastasis-gtk.giturl | 1 + packaging/ng/buildconfig/anastasis-gtk.tag | 1 + packaging/ng/buildconfig/anastasis.giturl | 1 + packaging/ng/buildconfig/anastasis.tag | 1 + packaging/ng/buildconfig/gnunet-gtk.giturl | 1 + packaging/ng/buildconfig/gnunet-gtk.tag | 1 + packaging/ng/buildconfig/gnunet.giturl | 1 + packaging/ng/buildconfig/gnunet.tag | 1 + packaging/ng/buildconfig/libeufin.giturl | 1 + packaging/ng/buildconfig/libeufin.tag | 1 + packaging/ng/buildconfig/sync.giturl | 1 + packaging/ng/buildconfig/sync.tag | 1 + packaging/ng/buildconfig/taler-exchange.giturl | 1 + packaging/ng/buildconfig/taler-exchange.tag | 1 + packaging/ng/buildconfig/taler-harness.giturl | 1 + packaging/ng/buildconfig/taler-harness.tag | 1 + .../ng/buildconfig/taler-merchant-demos.giturl | 1 + packaging/ng/buildconfig/taler-merchant-demos.tag | 1 + packaging/ng/buildconfig/taler-merchant.giturl | 1 + packaging/ng/buildconfig/taler-merchant.tag | 1 + packaging/ng/buildconfig/taler-wallet-cli.giturl | 1 + packaging/ng/buildconfig/taler-wallet-cli.tag | 1 + packaging/ng/buildscripts/anastasis-build.sh | 27 --------- packaging/ng/buildscripts/build-gnunet-gtk.sh | 37 ------------ packaging/ng/buildscripts/build-gnunet.sh | 41 ------------- packaging/ng/buildscripts/exchange-build.sh | 24 -------- packaging/ng/buildscripts/generic.sh | 54 +++++++++++++++++ packaging/ng/buildscripts/libeufin-build.sh | 23 -------- packaging/ng/buildscripts/merchant-build.sh | 24 -------- packaging/ng/buildscripts/sync-build.sh | 27 --------- packaging/ng/buildscripts/wallet-build.sh | 31 ---------- packaging/ng/distros/Dockerfile.debian-bookworm | 37 ++++++++++++ packaging/ng/distros/Dockerfile.ubuntu-kinetic | 32 +++++++++++ packaging/ng/print-latest-versions | 22 +++++++ 42 files changed, 244 insertions(+), 352 deletions(-) delete mode 100644 packaging/ng/Dockerfile.debian-bookworm delete mode 100644 packaging/ng/Dockerfile.ubuntu-kinetic delete mode 100755 packaging/ng/build-debian-bookworm.sh delete mode 100755 packaging/ng/build-ubuntu-kinetic.sh create mode 100755 packaging/ng/build.sh create mode 100644 packaging/ng/buildconfig/README create mode 100644 packaging/ng/buildconfig/anastasis-gtk.giturl create mode 100644 packaging/ng/buildconfig/anastasis-gtk.tag create mode 100644 packaging/ng/buildconfig/anastasis.giturl create mode 100644 packaging/ng/buildconfig/anastasis.tag create mode 100644 packaging/ng/buildconfig/gnunet-gtk.giturl create mode 100644 packaging/ng/buildconfig/gnunet-gtk.tag create mode 100644 packaging/ng/buildconfig/gnunet.giturl create mode 100644 packaging/ng/buildconfig/gnunet.tag create mode 100644 packaging/ng/buildconfig/libeufin.giturl create mode 100644 packaging/ng/buildconfig/libeufin.tag create mode 100644 packaging/ng/buildconfig/sync.giturl create mode 100644 packaging/ng/buildconfig/sync.tag create mode 100644 packaging/ng/buildconfig/taler-exchange.giturl create mode 100644 packaging/ng/buildconfig/taler-exchange.tag create mode 100644 packaging/ng/buildconfig/taler-harness.giturl create mode 100644 packaging/ng/buildconfig/taler-harness.tag create mode 100644 packaging/ng/buildconfig/taler-merchant-demos.giturl create mode 100644 packaging/ng/buildconfig/taler-merchant-demos.tag create mode 100644 packaging/ng/buildconfig/taler-merchant.giturl create mode 100644 packaging/ng/buildconfig/taler-merchant.tag create mode 100644 packaging/ng/buildconfig/taler-wallet-cli.giturl create mode 100644 packaging/ng/buildconfig/taler-wallet-cli.tag delete mode 100644 packaging/ng/buildscripts/anastasis-build.sh delete mode 100644 packaging/ng/buildscripts/build-gnunet-gtk.sh delete mode 100644 packaging/ng/buildscripts/build-gnunet.sh delete mode 100644 packaging/ng/buildscripts/exchange-build.sh create mode 100644 packaging/ng/buildscripts/generic.sh delete mode 100644 packaging/ng/buildscripts/libeufin-build.sh delete mode 100644 packaging/ng/buildscripts/merchant-build.sh delete mode 100644 packaging/ng/buildscripts/sync-build.sh delete mode 100644 packaging/ng/buildscripts/wallet-build.sh create mode 100644 packaging/ng/distros/Dockerfile.debian-bookworm create mode 100644 packaging/ng/distros/Dockerfile.ubuntu-kinetic create mode 100755 packaging/ng/print-latest-versions (limited to 'packaging/ng') diff --git a/packaging/ng/.gitignore b/packaging/ng/.gitignore index 23053de..681bab4 100644 --- a/packaging/ng/.gitignore +++ b/packaging/ng/.gitignore @@ -1 +1,2 @@ packages/ +cache/ diff --git a/packaging/ng/Dockerfile.debian-bookworm b/packaging/ng/Dockerfile.debian-bookworm deleted file mode 100644 index b6aade0..0000000 --- a/packaging/ng/Dockerfile.debian-bookworm +++ /dev/null @@ -1,37 +0,0 @@ -FROM debian:bookworm -# This file is in the public domain. -# -# Docker image to build Ubuntu packages of -# GNUnet, GNU Taler and GNU Anastasis. -# -ARG DEBIAN_FRONTEND=noninteractive - -# Install dependencies -RUN apt-get update -RUN apt-get -y upgrade -RUN apt-get -y install build-essential zip jq python3 python3-pip nodejs npm -RUN apt-get -y install autoconf automake gcc make libtool libltdl-dev libmicrohttpd-dev libpq-dev libsqlite3-dev libunistring-dev libqrencode-dev libgcrypt-dev libsodium-dev libargon2-dev libjansson-dev recutils libgmp-dev texinfo pkgconf zlib1g-dev libopus-dev libextractor-dev libnss3-dev libcurl4-gnutls-dev autopoint -RUN apt-get -y install libzbar-dev libmariadb-dev-compat libmariadb-dev mandoc libpulse-dev libgstreamer1.0-dev libbluetooth-dev iptables miniupnpc libpng-dev -RUN apt-get -y install python3-jinja2 doxygen libjose-dev iproute2 sudo -RUN apt-get -y install wget zile -RUN apt-get -y install libogg-dev gettext net-tools po-debconf debhelper-compat dbconfig-pgsql nginx -RUN apt-get -y install libgtk-3-dev libgladeui-dev libmagic-dev policykit-1 -RUN apt-get -y install dbconfig-no-thanks -RUN apt-get -y install devscripts equivs -# For libeufin: -RUN apt-get -y install python3-click python3-requests python3 - -RUN apt-get -y install \ - openjdk-17-jre-headless \ - openjdk-17-jdk-headless \ - default-jre-headless \ - ; - - -RUN pip install sphinx_rtd_theme --break-system-packages -#RUN npm install -g npm -RUN npm install -g pnpm - -RUN apt-get update -RUN apt-get -y upgrade -RUN apt-get -y dist-upgrade diff --git a/packaging/ng/Dockerfile.ubuntu-kinetic b/packaging/ng/Dockerfile.ubuntu-kinetic deleted file mode 100644 index 0a90fd7..0000000 --- a/packaging/ng/Dockerfile.ubuntu-kinetic +++ /dev/null @@ -1,32 +0,0 @@ -FROM ubuntu:kinetic -# This file is in the public domain. -# -# Docker image to build Ubuntu packages of -# GNUnet, GNU Taler and GNU Anastasis. -# -# We need 'kinetic' for a reasonably recent NodeJS version. - -ARG DEBIAN_FRONTEND=noninteractive - -# Install dependencies -RUN apt-get update -RUN apt-get -y upgrade -RUN apt-get -y install build-essential zip jq python3 python3-pip nodejs npm -RUN apt-get -y install autoconf automake gcc make libtool libltdl-dev libmicrohttpd-dev libpq-dev libsqlite3-dev libunistring-dev libqrencode-dev libgcrypt-dev libsodium-dev libargon2-dev libjansson-dev recutils libgmp-dev texinfo pkgconf zlib1g-dev libopus-dev libextractor-dev libnss3-dev libcurl4-gnutls-dev autopoint -RUN apt-get -y install libzbar-dev libmysqlclient-dev mandoc libpulse-dev libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libbluetooth-dev iptables miniupnpc libpng-dev -RUN apt-get -y install python3-jinja2 doxygen libjose-dev iproute2 sudo -RUN apt-get -y install wget zile -RUN apt-get -y install libogg-dev gettext net-tools po-debconf debhelper-compat dbconfig-pgsql nginx -RUN apt-get -y install libgtk-3-dev libgladeui-dev libmagic-dev policykit-1 -RUN apt-get -y install dbconfig-no-thanks -RUN apt-get -y install devscripts equivs -# For libeufin: -RUN apt-get -y install openjdk-17-jdk python3-click python3-requests python3 - -RUN pip install sphinx_rtd_theme -RUN npm install -g npm -RUN /usr/local/bin/npm install -g npm pnpm node - -RUN apt-get update -RUN apt-get -y upgrade -RUN apt-get -y dist-upgrade diff --git a/packaging/ng/README.md b/packaging/ng/README.md index f51745f..50ec7cb 100644 --- a/packaging/ng/README.md +++ b/packaging/ng/README.md @@ -6,10 +6,13 @@ packaging for GNU Taler and associated packages. The major improvement is that a component can be built *without* having to rebuild every single package. -Instead, dependencies are only built on-demand. Each package is built in a +Instead, all dependencies are managed via apt. Each package is built in a fresh environment, with build dependencies pulled in via apt. Previously built packages are available via a file-based apt source. +Build-time dependencies are automatically installed, making sure that +missing build-time dependencies would be detected. + The packaging logic is also the same for Debian and Ubuntu. diff --git a/packaging/ng/build-debian-bookworm.sh b/packaging/ng/build-debian-bookworm.sh deleted file mode 100755 index c259fe7..0000000 --- a/packaging/ng/build-debian-bookworm.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - -# Build debian packages. - -set -eu - -DISTRO=debian -DISTRO_VERNAME=bookworm -LABEL=$DISTRO-$DISTRO_VERNAME - -IMAGE_TAG=taler-packaging-$LABEL:latest -DOCKERFILE=Dockerfile.$LABEL -PKGDIR=packages/$LABEL - -echo "Building $IMAGE_TAG from $DOCKERFILE" - -# Build the base image. Usually fast because it's cached. -docker build -t $IMAGE_TAG -f $DOCKERFILE . - -mkdir -p $PKGDIR - -# echo docker run -it --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir $IMAGE_TAG /bin/bash -#docker run -it --entrypoint=/bin/bash --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir $IMAGE_TAG /buildscripts/build-gnunet.sh -docker run -it --entrypoint=/bin/bash --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir $IMAGE_TAG /buildscripts/libeufin-build.sh master -docker run -it --entrypoint=/bin/bash --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir $IMAGE_TAG /buildscripts/wallet-build.sh master diff --git a/packaging/ng/build-ubuntu-kinetic.sh b/packaging/ng/build-ubuntu-kinetic.sh deleted file mode 100755 index a27bcac..0000000 --- a/packaging/ng/build-ubuntu-kinetic.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -# Build debian packages. - -set -eu - -DISTRO=ubuntu -DISTRO_VERNAME=kinetic -LABEL=$DISTRO-$DISTRO_VERNAME - -IMAGE_TAG=taler-packaging-$LABEL:latest -DOCKERFILE=Dockerfile.$LABEL -PKGDIR=packages/$LABEL - -echo "Building $IMAGE_TAG from $DOCKERFILE" - -# Build the base image. Usually fast because it's cached. -docker build -t $IMAGE_TAG -f $DOCKERFILE . - -mkdir -p $PKGDIR - -# echo docker run -it --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir $IMAGE_TAG /bin/bash -#docker run -it --entrypoint=/bin/bash --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir $IMAGE_TAG /buildscripts/build-gnunet.sh diff --git a/packaging/ng/build.sh b/packaging/ng/build.sh new file mode 100755 index 0000000..2523319 --- /dev/null +++ b/packaging/ng/build.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +usage() { + echo Usage: $0 DISTRO >&2 + exit 1 +} + +if [[ $# != 1 ]]; then + usage +fi + +LABEL=$1 +IMAGE_TAG=taler-packaging-$LABEL:latest +DOCKERFILE=distros/Dockerfile.$LABEL +PKGDIR=packages/$LABEL + +if [[ ! -e "$DOCKERFILE" ]]; then + echo Need $DOCKERFILE to build $LABEL >&2 + exit 1 +fi + + +function build_base() { + echo "Building $IMAGE_TAG from $DOCKERFILE" + # Build the base image. Usually fast because it's cached. + podman build -t $IMAGE_TAG -f $DOCKERFILE . +} + +function run() { + SCRIPT=$1 + shift + mkdir -p $PKGDIR + mkdir -p cache + podman run -it --entrypoint=/bin/bash \ + --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly \ + --mount type=bind,source="$(pwd)"/buildconfig,target=/buildconfig,readonly \ + --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir \ + $IMAGE_TAG "/buildscripts/$SCRIPT" "$@" +} + +function debug() { + mkdir -p $PKGDIR + podman run -it --entrypoint=/bin/bash \ + --mount type=bind,source="$(pwd)"/buildscripts,target=/buildscripts,readonly \ + --mount type=bind,source="$(pwd)"/buildconfig,target=/buildconfig,readonly \ + --mount type=bind,source="$(pwd)"/$PKGDIR,target=/pkgdir \ + $IMAGE_TAG -i +} + +function build_all() { + run generic.sh gnunet + run generic.sh gnunet-gtk + run generic.sh taler-exchange + run generic.sh taler-merchant + run generic.sh sync + run generic.sh anastasis + run generic.sh anastasis-gtk + run generic.sh libeufin + run generic.sh taler-merchant-demos + run generic.sh taler-wallet-cli packages/taler-wallet-cli + run generic.sh taler-harness packages/taler-harness + run generic.sh libeufin +} + +build_all diff --git a/packaging/ng/buildconfig/README b/packaging/ng/buildconfig/README new file mode 100644 index 0000000..005630f --- /dev/null +++ b/packaging/ng/buildconfig/README @@ -0,0 +1,5 @@ +These files determine the git tag from which the respective components are +built in the base Docker image. + +They are in separate files to make modification checking with +staged Docker builds work nicely. diff --git a/packaging/ng/buildconfig/anastasis-gtk.giturl b/packaging/ng/buildconfig/anastasis-gtk.giturl new file mode 100644 index 0000000..83634d2 --- /dev/null +++ b/packaging/ng/buildconfig/anastasis-gtk.giturl @@ -0,0 +1 @@ +git://git.taler.net/anastasis-gtk.git diff --git a/packaging/ng/buildconfig/anastasis-gtk.tag b/packaging/ng/buildconfig/anastasis-gtk.tag new file mode 100644 index 0000000..5aff472 --- /dev/null +++ b/packaging/ng/buildconfig/anastasis-gtk.tag @@ -0,0 +1 @@ +v0.4.1 diff --git a/packaging/ng/buildconfig/anastasis.giturl b/packaging/ng/buildconfig/anastasis.giturl new file mode 100644 index 0000000..b29317f --- /dev/null +++ b/packaging/ng/buildconfig/anastasis.giturl @@ -0,0 +1 @@ +git://git.taler.net/anastasis.git diff --git a/packaging/ng/buildconfig/anastasis.tag b/packaging/ng/buildconfig/anastasis.tag new file mode 100644 index 0000000..e1be908 --- /dev/null +++ b/packaging/ng/buildconfig/anastasis.tag @@ -0,0 +1 @@ +v0.4.2-dev.1 diff --git a/packaging/ng/buildconfig/gnunet-gtk.giturl b/packaging/ng/buildconfig/gnunet-gtk.giturl new file mode 100644 index 0000000..7610ee3 --- /dev/null +++ b/packaging/ng/buildconfig/gnunet-gtk.giturl @@ -0,0 +1 @@ +git://git.gnunet.org/gnunet-gtk.git diff --git a/packaging/ng/buildconfig/gnunet-gtk.tag b/packaging/ng/buildconfig/gnunet-gtk.tag new file mode 100644 index 0000000..759e855 --- /dev/null +++ b/packaging/ng/buildconfig/gnunet-gtk.tag @@ -0,0 +1 @@ +v0.21.0 diff --git a/packaging/ng/buildconfig/gnunet.giturl b/packaging/ng/buildconfig/gnunet.giturl new file mode 100644 index 0000000..8764364 --- /dev/null +++ b/packaging/ng/buildconfig/gnunet.giturl @@ -0,0 +1 @@ +git://git.gnunet.org/gnunet.git diff --git a/packaging/ng/buildconfig/gnunet.tag b/packaging/ng/buildconfig/gnunet.tag new file mode 100644 index 0000000..40c8500 --- /dev/null +++ b/packaging/ng/buildconfig/gnunet.tag @@ -0,0 +1 @@ +v0.21.1 diff --git a/packaging/ng/buildconfig/libeufin.giturl b/packaging/ng/buildconfig/libeufin.giturl new file mode 100644 index 0000000..b794afb --- /dev/null +++ b/packaging/ng/buildconfig/libeufin.giturl @@ -0,0 +1 @@ +git://git.taler.net/libeufin.git diff --git a/packaging/ng/buildconfig/libeufin.tag b/packaging/ng/buildconfig/libeufin.tag new file mode 100644 index 0000000..c91125d --- /dev/null +++ b/packaging/ng/buildconfig/libeufin.tag @@ -0,0 +1 @@ +v0.10.1 diff --git a/packaging/ng/buildconfig/sync.giturl b/packaging/ng/buildconfig/sync.giturl new file mode 100644 index 0000000..21cb5d7 --- /dev/null +++ b/packaging/ng/buildconfig/sync.giturl @@ -0,0 +1 @@ +git://git.taler.net/sync.git diff --git a/packaging/ng/buildconfig/sync.tag b/packaging/ng/buildconfig/sync.tag new file mode 100644 index 0000000..c91125d --- /dev/null +++ b/packaging/ng/buildconfig/sync.tag @@ -0,0 +1 @@ +v0.10.1 diff --git a/packaging/ng/buildconfig/taler-exchange.giturl b/packaging/ng/buildconfig/taler-exchange.giturl new file mode 100644 index 0000000..19309f9 --- /dev/null +++ b/packaging/ng/buildconfig/taler-exchange.giturl @@ -0,0 +1 @@ +git://git.taler.net/exchange.git diff --git a/packaging/ng/buildconfig/taler-exchange.tag b/packaging/ng/buildconfig/taler-exchange.tag new file mode 100644 index 0000000..0a39b20 --- /dev/null +++ b/packaging/ng/buildconfig/taler-exchange.tag @@ -0,0 +1 @@ +v0.10.3-dev.1 diff --git a/packaging/ng/buildconfig/taler-harness.giturl b/packaging/ng/buildconfig/taler-harness.giturl new file mode 100644 index 0000000..0d713ec --- /dev/null +++ b/packaging/ng/buildconfig/taler-harness.giturl @@ -0,0 +1 @@ +git://git.taler.net/wallet-core.git diff --git a/packaging/ng/buildconfig/taler-harness.tag b/packaging/ng/buildconfig/taler-harness.tag new file mode 100644 index 0000000..129170b --- /dev/null +++ b/packaging/ng/buildconfig/taler-harness.tag @@ -0,0 +1 @@ +v0.10.8-dev.1 diff --git a/packaging/ng/buildconfig/taler-merchant-demos.giturl b/packaging/ng/buildconfig/taler-merchant-demos.giturl new file mode 100644 index 0000000..8fd4286 --- /dev/null +++ b/packaging/ng/buildconfig/taler-merchant-demos.giturl @@ -0,0 +1 @@ +git://git.taler.net/taler-merchant-demos diff --git a/packaging/ng/buildconfig/taler-merchant-demos.tag b/packaging/ng/buildconfig/taler-merchant-demos.tag new file mode 100644 index 0000000..c91125d --- /dev/null +++ b/packaging/ng/buildconfig/taler-merchant-demos.tag @@ -0,0 +1 @@ +v0.10.1 diff --git a/packaging/ng/buildconfig/taler-merchant.giturl b/packaging/ng/buildconfig/taler-merchant.giturl new file mode 100644 index 0000000..cffa220 --- /dev/null +++ b/packaging/ng/buildconfig/taler-merchant.giturl @@ -0,0 +1 @@ +git://git.taler.net/merchant.git diff --git a/packaging/ng/buildconfig/taler-merchant.tag b/packaging/ng/buildconfig/taler-merchant.tag new file mode 100644 index 0000000..3123ff9 --- /dev/null +++ b/packaging/ng/buildconfig/taler-merchant.tag @@ -0,0 +1 @@ +v0.10.2 diff --git a/packaging/ng/buildconfig/taler-wallet-cli.giturl b/packaging/ng/buildconfig/taler-wallet-cli.giturl new file mode 100644 index 0000000..0d713ec --- /dev/null +++ b/packaging/ng/buildconfig/taler-wallet-cli.giturl @@ -0,0 +1 @@ +git://git.taler.net/wallet-core.git diff --git a/packaging/ng/buildconfig/taler-wallet-cli.tag b/packaging/ng/buildconfig/taler-wallet-cli.tag new file mode 100644 index 0000000..b434d4c --- /dev/null +++ b/packaging/ng/buildconfig/taler-wallet-cli.tag @@ -0,0 +1 @@ +v0.10.6 diff --git a/packaging/ng/buildscripts/anastasis-build.sh b/packaging/ng/buildscripts/anastasis-build.sh deleted file mode 100644 index 24643e1..0000000 --- a/packaging/ng/buildscripts/anastasis-build.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH - -mkdir -p /build/anastasis -cd /build/anastasis - -# Fetch source -rm -rf * - -for n in anastasis anastasis-gtk -do - git clone git://git.taler.net/$n - cd $n - git checkout $1 - ./bootstrap - dpkg-buildpackage -rfakeroot -b -uc -us - cd .. - dpkg -i *.deb -done - -tar uvf ../packages.tgz *.deb - -cd .. diff --git a/packaging/ng/buildscripts/build-gnunet-gtk.sh b/packaging/ng/buildscripts/build-gnunet-gtk.sh deleted file mode 100644 index 924c638..0000000 --- a/packaging/ng/buildscripts/build-gnunet-gtk.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH - -dpkg-scanpackages /pkgdir /dev/null | gzip -9c > /pkgdir/Packages.gz - -echo "deb [trusted=yes] file:/pkgdir ./" >/etc/apt/sources.list.d/taler-packaging-local.list - -rm -rf /build/gnunet -mkdir -p /build/gnunet -cd /build/gnunet - -TAG=${1:-master} - -for n in gnunet gnunet-gtk -do - git clone --depth=1 git://git.gnunet.org/$n - cd $n - git checkout $TAG - - # Install build-time dependencies. - mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control - - # We do a sparse checkout, so we need to hint - # the version to the build system. - dpkg-parsechangelog -S Version > .version - ./bootstrap - dpkg-buildpackage -rfakeroot -b -uc -us - cd .. -done - -ls /build/gnunet - -cp /build/gnunet/*.deb /pkgdir/ diff --git a/packaging/ng/buildscripts/build-gnunet.sh b/packaging/ng/buildscripts/build-gnunet.sh deleted file mode 100644 index 70fb1a8..0000000 --- a/packaging/ng/buildscripts/build-gnunet.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH - -cd /pkgdir -dpkg-scanpackages . /dev/null | gzip -9c > /pkgdir/Packages.gz -echo "deb [trusted=yes] file:/pkgdir ./" >/etc/apt/sources.list.d/taler-packaging-local.list -apt-get update - - -mkdir -p /build -cd /build - -TAG=${1:-master} - -git clone --depth=1 git://git.gnunet.org/gnunet -cd gnunet -git checkout $TAG - -# Get current version from debian/control file. -DEB_VERSION=$(dpkg-parsechangelog -S Version) - -apt-cache show gnunet | grep "Version: $DEB_VERSION" >/dev/null && found=true || found=false -if [ $found = true ]; then - echo "gnunet version $DEB_VERSION already built, skipping" - exit 0 -fi - -# Install build-time dependencies. -mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control - -# We do a sparse checkout, so we need to hint -# the version to the build system. -echo $DEB_VERSION > .version -./bootstrap -dpkg-buildpackage -rfakeroot -b -uc -us - -cp /build/*.deb /pkgdir/ diff --git a/packaging/ng/buildscripts/exchange-build.sh b/packaging/ng/buildscripts/exchange-build.sh deleted file mode 100644 index 36b9ede..0000000 --- a/packaging/ng/buildscripts/exchange-build.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH -mkdir -p /build/taler -cd /build/taler - -# Fetch source -rm -rf * - -pip3 install htmlark - -git clone git://git.taler.net/exchange -cd exchange -git checkout $1 -./bootstrap -dpkg-buildpackage -rfakeroot -b -uc -us -cd .. -dpkg -i *.deb - -tar uvf ../packages.tgz *.deb -cd .. diff --git a/packaging/ng/buildscripts/generic.sh b/packaging/ng/buildscripts/generic.sh new file mode 100644 index 0000000..85235c6 --- /dev/null +++ b/packaging/ng/buildscripts/generic.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# This file is in the public domain. +# Helper script to build the latest DEB packages in the container. + +set -eu +unset LD_LIBRARY_PATH + +PACKAGE=$1 +# Path of the debian/ folder in the repository +DEBIANPATH=${2:-.} + +echo Building $1 with generic build logic >&2 + +cd /pkgdir +dpkg-scanpackages . | xz - > /pkgdir/Packages.xz +echo "deb [trusted=yes] file:/pkgdir ./" >/etc/apt/sources.list.d/taler-packaging-local.list +apt-get update + +mkdir -p /build +cd /build + +TAG=$(cat /buildconfig/$PACKAGE.tag) +GITURL=$(cat /buildconfig/$PACKAGE.giturl) + +git config --global advice.detachedHead false +git clone --depth=1 --branch=$TAG "$GITURL" "$PACKAGE" + +cd "/build/$PACKAGE/$DEBIANPATH" + +# Get current version from debian/control file. +DEB_VERSION=$(dpkg-parsechangelog -S Version) + +echo "Current version of $PACKAGE/$DEBIANPATH is $DEB_VERSION" + +apt-cache show "$PACKAGE" | grep "Version: $DEB_VERSION" >/dev/null && found=true || found=false +if [ $found = true ]; then + echo "$PACKAGE version $DEB_VERSION already built, skipping" + exit 0 +fi + +cd "/build/$PACKAGE" +./bootstrap + +cd "/build/$PACKAGE/$DEBIANPATH" + +# Install build-time dependencies. +mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control + +# We do a sparse checkout, so we need to hint +# the version to the build system. +echo $DEB_VERSION > .version +dpkg-buildpackage -rfakeroot -b -uc -us + +cp ../*.deb /pkgdir/ diff --git a/packaging/ng/buildscripts/libeufin-build.sh b/packaging/ng/buildscripts/libeufin-build.sh deleted file mode 100644 index f355add..0000000 --- a/packaging/ng/buildscripts/libeufin-build.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH -mkdir -p /build -cd /build - -# Fetch source -rm -rf * -git clone git://git.taler.net/libeufin -cd libeufin -git checkout $1 -./bootstrap -./configure --prefix=/usr/local -make deb - -cp /build/*.deb /pkgdir/ - -dpkg -i /build/*.deb - - diff --git a/packaging/ng/buildscripts/merchant-build.sh b/packaging/ng/buildscripts/merchant-build.sh deleted file mode 100644 index 5625198..0000000 --- a/packaging/ng/buildscripts/merchant-build.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH -mkdir -p /build/taler -cd /build/taler - -# Fetch source -rm -rf * - -pip3 install htmlark - -git clone git://git.taler.net/merchant -cd merchant -git checkout $1 -./bootstrap -dpkg-buildpackage -rfakeroot -b -uc -us -cd .. -dpkg -i *.deb - -tar uvf ../packages.tgz *.deb -cd .. diff --git a/packaging/ng/buildscripts/sync-build.sh b/packaging/ng/buildscripts/sync-build.sh deleted file mode 100644 index e38a0ee..0000000 --- a/packaging/ng/buildscripts/sync-build.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH - -mkdir -p /build/sync -cd /build/sync - -# Fetch source -rm -rf * - -for n in sync -do - git clone git://git.taler.net/$n - cd $n - git checkout $1 - ./bootstrap - dpkg-buildpackage -rfakeroot -b -uc -us - cd .. - dpkg -i *.deb -done - -tar uvf ../packages.tgz *.deb - -cd .. diff --git a/packaging/ng/buildscripts/wallet-build.sh b/packaging/ng/buildscripts/wallet-build.sh deleted file mode 100644 index 029d90a..0000000 --- a/packaging/ng/buildscripts/wallet-build.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - -set -eu -unset LD_LIBRARY_PATH - -mkdir -p /build -cd /build - -# Fetch source -rm -rf * -git clone git://git.taler.net/wallet-core - -cd wallet-core -git checkout $1 -./bootstrap -./configure --prefix=/usr -make -cd packages/taler-wallet-cli -./configure --prefix=/usr -make install -dpkg-buildpackage -rfakeroot -b -uc -us -cd ../taler-harness -./configure --prefix=/usr -make install -dpkg-buildpackage -rfakeroot -b -uc -us -cd .. - - -cp /build/wallet-core/packages/*.deb /pkgdir/ diff --git a/packaging/ng/distros/Dockerfile.debian-bookworm b/packaging/ng/distros/Dockerfile.debian-bookworm new file mode 100644 index 0000000..b6aade0 --- /dev/null +++ b/packaging/ng/distros/Dockerfile.debian-bookworm @@ -0,0 +1,37 @@ +FROM debian:bookworm +# This file is in the public domain. +# +# Docker image to build Ubuntu packages of +# GNUnet, GNU Taler and GNU Anastasis. +# +ARG DEBIAN_FRONTEND=noninteractive + +# Install dependencies +RUN apt-get update +RUN apt-get -y upgrade +RUN apt-get -y install build-essential zip jq python3 python3-pip nodejs npm +RUN apt-get -y install autoconf automake gcc make libtool libltdl-dev libmicrohttpd-dev libpq-dev libsqlite3-dev libunistring-dev libqrencode-dev libgcrypt-dev libsodium-dev libargon2-dev libjansson-dev recutils libgmp-dev texinfo pkgconf zlib1g-dev libopus-dev libextractor-dev libnss3-dev libcurl4-gnutls-dev autopoint +RUN apt-get -y install libzbar-dev libmariadb-dev-compat libmariadb-dev mandoc libpulse-dev libgstreamer1.0-dev libbluetooth-dev iptables miniupnpc libpng-dev +RUN apt-get -y install python3-jinja2 doxygen libjose-dev iproute2 sudo +RUN apt-get -y install wget zile +RUN apt-get -y install libogg-dev gettext net-tools po-debconf debhelper-compat dbconfig-pgsql nginx +RUN apt-get -y install libgtk-3-dev libgladeui-dev libmagic-dev policykit-1 +RUN apt-get -y install dbconfig-no-thanks +RUN apt-get -y install devscripts equivs +# For libeufin: +RUN apt-get -y install python3-click python3-requests python3 + +RUN apt-get -y install \ + openjdk-17-jre-headless \ + openjdk-17-jdk-headless \ + default-jre-headless \ + ; + + +RUN pip install sphinx_rtd_theme --break-system-packages +#RUN npm install -g npm +RUN npm install -g pnpm + +RUN apt-get update +RUN apt-get -y upgrade +RUN apt-get -y dist-upgrade diff --git a/packaging/ng/distros/Dockerfile.ubuntu-kinetic b/packaging/ng/distros/Dockerfile.ubuntu-kinetic new file mode 100644 index 0000000..0a90fd7 --- /dev/null +++ b/packaging/ng/distros/Dockerfile.ubuntu-kinetic @@ -0,0 +1,32 @@ +FROM ubuntu:kinetic +# This file is in the public domain. +# +# Docker image to build Ubuntu packages of +# GNUnet, GNU Taler and GNU Anastasis. +# +# We need 'kinetic' for a reasonably recent NodeJS version. + +ARG DEBIAN_FRONTEND=noninteractive + +# Install dependencies +RUN apt-get update +RUN apt-get -y upgrade +RUN apt-get -y install build-essential zip jq python3 python3-pip nodejs npm +RUN apt-get -y install autoconf automake gcc make libtool libltdl-dev libmicrohttpd-dev libpq-dev libsqlite3-dev libunistring-dev libqrencode-dev libgcrypt-dev libsodium-dev libargon2-dev libjansson-dev recutils libgmp-dev texinfo pkgconf zlib1g-dev libopus-dev libextractor-dev libnss3-dev libcurl4-gnutls-dev autopoint +RUN apt-get -y install libzbar-dev libmysqlclient-dev mandoc libpulse-dev libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libbluetooth-dev iptables miniupnpc libpng-dev +RUN apt-get -y install python3-jinja2 doxygen libjose-dev iproute2 sudo +RUN apt-get -y install wget zile +RUN apt-get -y install libogg-dev gettext net-tools po-debconf debhelper-compat dbconfig-pgsql nginx +RUN apt-get -y install libgtk-3-dev libgladeui-dev libmagic-dev policykit-1 +RUN apt-get -y install dbconfig-no-thanks +RUN apt-get -y install devscripts equivs +# For libeufin: +RUN apt-get -y install openjdk-17-jdk python3-click python3-requests python3 + +RUN pip install sphinx_rtd_theme +RUN npm install -g npm +RUN /usr/local/bin/npm install -g npm pnpm node + +RUN apt-get update +RUN apt-get -y upgrade +RUN apt-get -y dist-upgrade diff --git a/packaging/ng/print-latest-versions b/packaging/ng/print-latest-versions new file mode 100755 index 0000000..ff6668e --- /dev/null +++ b/packaging/ng/print-latest-versions @@ -0,0 +1,22 @@ +#!/usr/bin/bash + +function getver() { + ver=$(git -c 'versionsort.suffix=-' \ + ls-remote --exit-code --refs --sort='version:refname' --tags $2 '*.*.*' \ + | tail --lines=1 \ + | cut --delimiter='/' --fields=3) + curr=$(cat buildconfig/$1.tag) + if [[ "$curr" != "$ver" ]]; then + echo -n "[!] " + fi + echo $1 "curr: $curr" latest: $ver +} + +getver exchange git://git.taler.net/exchange +getver merchant git://git.taler.net/merchant +getver merchant-demos git://git.taler.net/taler-merchant-demos +getver libeufin git://git.taler.net/libeufin +getver wallet git://git.taler.net/wallet-core +getver gnunet git://git.gnunet.org/gnunet +getver sync git://git.taler.net/sync +getver libmhd git://git.gnunet.org/libmicrohttpd -- cgit v1.2.3