From df5e262dd52b7ddc3989747e58067fb1f0f18814 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 9 Apr 2024 13:34:15 +0200 Subject: prep for noble numbat --- packaging/ubuntu-numbat-docker/Dockerfile | 53 ++++++++++++++++++++++ packaging/ubuntu-numbat-docker/README | 16 +++++++ packaging/ubuntu-numbat-docker/anastasis-build.sh | 27 +++++++++++ packaging/ubuntu-numbat-docker/exchange-build.sh | 25 ++++++++++ packaging/ubuntu-numbat-docker/gnunet-build.sh | 29 ++++++++++++ packaging/ubuntu-numbat-docker/gnunet-gtk-build.sh | 27 +++++++++++ packaging/ubuntu-numbat-docker/libeufin-build.sh | 22 +++++++++ packaging/ubuntu-numbat-docker/mdb-build.sh | 22 +++++++++ packaging/ubuntu-numbat-docker/merchant-build.sh | 24 ++++++++++ packaging/ubuntu-numbat-docker/run.sh | 21 +++++++++ packaging/ubuntu-numbat-docker/sync-build.sh | 27 +++++++++++ packaging/ubuntu-numbat-docker/wallet-build.sh | 28 ++++++++++++ 12 files changed, 321 insertions(+) create mode 100644 packaging/ubuntu-numbat-docker/Dockerfile create mode 100644 packaging/ubuntu-numbat-docker/README create mode 100644 packaging/ubuntu-numbat-docker/anastasis-build.sh create mode 100644 packaging/ubuntu-numbat-docker/exchange-build.sh create mode 100644 packaging/ubuntu-numbat-docker/gnunet-build.sh create mode 100644 packaging/ubuntu-numbat-docker/gnunet-gtk-build.sh create mode 100644 packaging/ubuntu-numbat-docker/libeufin-build.sh create mode 100644 packaging/ubuntu-numbat-docker/mdb-build.sh create mode 100644 packaging/ubuntu-numbat-docker/merchant-build.sh create mode 100755 packaging/ubuntu-numbat-docker/run.sh create mode 100644 packaging/ubuntu-numbat-docker/sync-build.sh create mode 100644 packaging/ubuntu-numbat-docker/wallet-build.sh diff --git a/packaging/ubuntu-numbat-docker/Dockerfile b/packaging/ubuntu-numbat-docker/Dockerfile new file mode 100644 index 0000000..d59d238 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/Dockerfile @@ -0,0 +1,53 @@ +FROM ubuntu:numbat +# 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 update +RUN apt-get -y dist-upgrade +RUN apt-get update +RUN apt-get -y install build-essential zip jq python3 python3-pip nodejs npm autoconf automake gcc-12 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 libzbar-dev libmysqlclient-dev mandoc libpulse-dev libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libbluetooth-dev iptables miniupnpc libpng-dev python3-jinja2 doxygen libjose-dev iproute2 sudo wget zile libogg-dev gettext net-tools po-debconf debhelper-compat dbconfig-pgsql nginx libgtk-3-dev libgladeui-dev libmagic-dev policykit-1 libnfc-dev python3-click python3-requests python3-sphinx-rtd-theme openjdk-17-jdk pandoc groff +RUN npm install -g node pnpm + +RUN pip install --break-system-packages sphinx_multiversion + +# ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache +COPY gnunet-build.sh /root/ +RUN chmod +x /root/gnunet-build.sh +RUN /root/gnunet-build.sh master + +COPY gnunet-gtk-build.sh /root/ +RUN chmod +x /root/gnunet-gtk-build.sh +RUN /root/gnunet-gtk-build.sh master + +COPY exchange-build.sh /root/ +RUN chmod +x /root/exchange-build.sh +RUN /root/exchange-build.sh master + +COPY merchant-build.sh /root/ +RUN chmod +x /root/merchant-build.sh +RUN /root/merchant-build.sh master + +COPY sync-build.sh /root/ +RUN chmod +x /root/sync-build.sh +RUN /root/sync-build.sh master + +COPY anastasis-build.sh /root/ +RUN chmod +x /root/anastasis-build.sh +RUN /root/anastasis-build.sh master + +# No wallet on Jammy +COPY wallet-build.sh /root/ +RUN chmod +x /root/wallet-build.sh +RUN /root/wallet-build.sh master + +COPY libeufin-build.sh /root/ +RUN chmod +x /root/libeufin-build.sh +RUN /root/libeufin-build.sh master diff --git a/packaging/ubuntu-numbat-docker/README b/packaging/ubuntu-numbat-docker/README new file mode 100644 index 0000000..0f8c821 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/README @@ -0,0 +1,16 @@ +Scripts to build Ubuntu packages from source. + + +TODO: +- check build for warnings/missing dependencies + (espcially GNUnet!) +- break up into separate build for GNUnet/Taler/Anastasis + => might be good to not run the entire pipeline only + because something changes in anastasis/wallet, as + that's not a good reason to re-build GNUnet ;-). +- integrate with buildbot (integrationtests?) + to build-on-tag / build nightly and upload resulting + Deb packages to reprepro (fully automated for nightly, + but with explicit password-protected signature for tagged builds) +- support other CPU architectures (by running in VM that emulates + other CPU architectures) diff --git a/packaging/ubuntu-numbat-docker/anastasis-build.sh b/packaging/ubuntu-numbat-docker/anastasis-build.sh new file mode 100644 index 0000000..24643e1 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/anastasis-build.sh @@ -0,0 +1,27 @@ +#!/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/ubuntu-numbat-docker/exchange-build.sh b/packaging/ubuntu-numbat-docker/exchange-build.sh new file mode 100644 index 0000000..a94a003 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/exchange-build.sh @@ -0,0 +1,25 @@ +#!/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 + +export CC=gcc-12 +# Fetch source +rm -rf * + +pip3 install --break-system-packages 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/ubuntu-numbat-docker/gnunet-build.sh b/packaging/ubuntu-numbat-docker/gnunet-build.sh new file mode 100644 index 0000000..614c5e6 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/gnunet-build.sh @@ -0,0 +1,29 @@ +#!/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/gnunet +cd /build/gnunet + +# Fetch source +rm -rf * + +pip3 install --break-system-packages sphinx-book-theme sphinx-multiversion + +for n in gnunet +do + git clone git://git.gnunet.org/$n + cd $n + git checkout $1 + ./bootstrap + dpkg-buildpackage -rfakeroot -b -uc -us + cd .. + dpkg -i *.deb +done + +tar cvf ../packages.tgz *.deb + +cd .. diff --git a/packaging/ubuntu-numbat-docker/gnunet-gtk-build.sh b/packaging/ubuntu-numbat-docker/gnunet-gtk-build.sh new file mode 100644 index 0000000..4414c3f --- /dev/null +++ b/packaging/ubuntu-numbat-docker/gnunet-gtk-build.sh @@ -0,0 +1,27 @@ +#!/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/gnunet +cd /build/gnunet + +# Fetch source +rm -rf * + +for n in gnunet-gtk +do + git clone git://git.gnunet.org/$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/ubuntu-numbat-docker/libeufin-build.sh b/packaging/ubuntu-numbat-docker/libeufin-build.sh new file mode 100644 index 0000000..7229221 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/libeufin-build.sh @@ -0,0 +1,22 @@ +#!/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/libeufin +cd /build/libeufin + +# Fetch source +rm -rf * +git clone git://git.taler.net/libeufin +cd libeufin +git checkout $1 +./bootstrap +./configure --prefix=/usr/local +make deb +cd .. +dpkg -i *.deb + +tar uvf ../packages.tgz *.deb +cd .. diff --git a/packaging/ubuntu-numbat-docker/mdb-build.sh b/packaging/ubuntu-numbat-docker/mdb-build.sh new file mode 100644 index 0000000..d097240 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/mdb-build.sh @@ -0,0 +1,22 @@ +#!/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 * + +git clone git://git.taler.net/taler-mdb +cd taler-mdb +git checkout $1 +./bootstrap +dpkg-buildpackage -rfakeroot -b -uc -us +cd .. +dpkg -i *.deb + +tar uvf ../packages.tgz *.deb +cd .. diff --git a/packaging/ubuntu-numbat-docker/merchant-build.sh b/packaging/ubuntu-numbat-docker/merchant-build.sh new file mode 100644 index 0000000..24f5f9d --- /dev/null +++ b/packaging/ubuntu-numbat-docker/merchant-build.sh @@ -0,0 +1,24 @@ +#!/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 --break-system-packages 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/ubuntu-numbat-docker/run.sh b/packaging/ubuntu-numbat-docker/run.sh new file mode 100755 index 0000000..a6df3f0 --- /dev/null +++ b/packaging/ubuntu-numbat-docker/run.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -eu +CONTAINER=$USER/debbuilder:latest +docker build -t $CONTAINER . +rm -rf dist +mkdir dist +docker run --read-only $CONTAINER sleep 100 & +sleep 1 +docker container ls +ID=`docker container ls | grep $CONTAINER | head -n1 | awk '{print $1}'` +echo "Extracting files from $ID" +docker cp "$ID:/build/packages.tgz" . +echo "Stopping $CONTAINER ($ID)" +docker container stop $ID +echo "Removing $CONTAINER" +docker container rm $ID +docker image rm $USER/debbuilder +cd dist +tar xvf ../packages.tgz +cd .. +rm packages.tgz diff --git a/packaging/ubuntu-numbat-docker/sync-build.sh b/packaging/ubuntu-numbat-docker/sync-build.sh new file mode 100644 index 0000000..e38a0ee --- /dev/null +++ b/packaging/ubuntu-numbat-docker/sync-build.sh @@ -0,0 +1,27 @@ +#!/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/ubuntu-numbat-docker/wallet-build.sh b/packaging/ubuntu-numbat-docker/wallet-build.sh new file mode 100644 index 0000000..6d807be --- /dev/null +++ b/packaging/ubuntu-numbat-docker/wallet-build.sh @@ -0,0 +1,28 @@ +#!/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/wallet +cd /build/wallet + +# Fetch source +rm -rf * +git clone git://git.taler.net/wallet-core + +cd wallet-core +git checkout $1 +./bootstrap + +cd packages/taler-wallet-cli + +dpkg-buildpackage -rfakeroot -b -uc -us + +cd ../taler-harness +dpkg-buildpackage -rfakeroot -b -uc -us + +cd ../ + +tar uvf ../../../packages.tgz *.deb -- cgit v1.2.3