summaryrefslogtreecommitdiff
path: root/packaging/debian-bookworm
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/debian-bookworm')
-rw-r--r--packaging/debian-bookworm/Dockerfile56
-rw-r--r--packaging/debian-bookworm/README16
-rw-r--r--packaging/debian-bookworm/anastasis-build.sh27
-rw-r--r--packaging/debian-bookworm/exchange-build.sh24
-rw-r--r--packaging/debian-bookworm/gnunet-build.sh29
-rw-r--r--packaging/debian-bookworm/gnunet-gtk-build.sh27
-rw-r--r--packaging/debian-bookworm/libeufin-build.sh24
-rw-r--r--packaging/debian-bookworm/mdb-build.sh22
-rw-r--r--packaging/debian-bookworm/merchant-build.sh24
-rwxr-xr-xpackaging/debian-bookworm/run.sh25
-rw-r--r--packaging/debian-bookworm/sync-build.sh27
-rw-r--r--packaging/debian-bookworm/wallet-build.sh28
12 files changed, 329 insertions, 0 deletions
diff --git a/packaging/debian-bookworm/Dockerfile b/packaging/debian-bookworm/Dockerfile
new file mode 100644
index 0000000..0d6c739
--- /dev/null
+++ b/packaging/debian-bookworm/Dockerfile
@@ -0,0 +1,56 @@
+FROM debian:bookworm
+# This file is in the public domain.
+#
+# Docker image to build Debian packages of
+# GNUnet, GNU Taler and GNU Anastasis.
+#
+# We need 'bookworm' for a reasonably recent NodeJS version.
+
+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 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 linux-libc-dev python3-sphinx python3-sphinxcontrib.httpdomain policykit-1 libzbar-dev default-libmysqlclient-dev mandoc libpulse-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libbluetooth-dev iptables miniupnpc libpng-dev python3-jinja2 doxygen libjose-dev iproute2 sudo python3-sphinx-rtd-theme 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 apt-utils nodejs npm openjdk-17-jdk-headless default-jre-headless pandoc groff
+RUN npm install -g node pnpm
+
+ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
+
+COPY libeufin-build.sh /root/
+RUN chmod +x /root/libeufin-build.sh
+RUN /root/libeufin-build.sh master
+
+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 libeufin-build.sh /root/
+RUN chmod +x /root/libeufin-build.sh
+RUN /root/libeufin-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
+
+COPY wallet-build.sh /root/
+RUN chmod +x /root/wallet-build.sh
+RUN /root/wallet-build.sh master
diff --git a/packaging/debian-bookworm/README b/packaging/debian-bookworm/README
new file mode 100644
index 0000000..0a092e5
--- /dev/null
+++ b/packaging/debian-bookworm/README
@@ -0,0 +1,16 @@
+Scripts to build Debian packages from source.
+
+TODO:
+- 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)
+- eventually: try to improve scripts to support older
+ Debian versions
+
diff --git a/packaging/debian-bookworm/anastasis-build.sh b/packaging/debian-bookworm/anastasis-build.sh
new file mode 100644
index 0000000..24643e1
--- /dev/null
+++ b/packaging/debian-bookworm/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/debian-bookworm/exchange-build.sh b/packaging/debian-bookworm/exchange-build.sh
new file mode 100644
index 0000000..b4a0115
--- /dev/null
+++ b/packaging/debian-bookworm/exchange-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/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/debian-bookworm/gnunet-build.sh b/packaging/debian-bookworm/gnunet-build.sh
new file mode 100644
index 0000000..614c5e6
--- /dev/null
+++ b/packaging/debian-bookworm/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/debian-bookworm/gnunet-gtk-build.sh b/packaging/debian-bookworm/gnunet-gtk-build.sh
new file mode 100644
index 0000000..4414c3f
--- /dev/null
+++ b/packaging/debian-bookworm/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/debian-bookworm/libeufin-build.sh b/packaging/debian-bookworm/libeufin-build.sh
new file mode 100644
index 0000000..eb440f2
--- /dev/null
+++ b/packaging/debian-bookworm/libeufin-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/libeufin
+cd /build/libeufin
+
+# Fetch source
+rm -rf *
+git clone git://git.taler.net/libeufin
+cd libeufin
+git checkout $1
+./bootstrap
+export JAVA_HOME=/usr
+./configure --prefix=/usr
+make install
+make deb
+cd ..
+dpkg -i *.deb
+
+tar uvf ../packages.tgz *.deb
+cd ..
diff --git a/packaging/debian-bookworm/mdb-build.sh b/packaging/debian-bookworm/mdb-build.sh
new file mode 100644
index 0000000..d097240
--- /dev/null
+++ b/packaging/debian-bookworm/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/debian-bookworm/merchant-build.sh b/packaging/debian-bookworm/merchant-build.sh
new file mode 100644
index 0000000..24f5f9d
--- /dev/null
+++ b/packaging/debian-bookworm/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/debian-bookworm/run.sh b/packaging/debian-bookworm/run.sh
new file mode 100755
index 0000000..2689a33
--- /dev/null
+++ b/packaging/debian-bookworm/run.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -eu
+CONTAINER=$USER/debbuilder:latest
+
+# If we don't specify the ulimit here, fakeroot is extremely slow.
+# See https://github.com/moby/moby/issues/45436
+docker build --ulimit "nofile=1024:1048576" -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/debian-bookworm/sync-build.sh b/packaging/debian-bookworm/sync-build.sh
new file mode 100644
index 0000000..2f5d9df
--- /dev/null
+++ b/packaging/debian-bookworm/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
+
+rm -rf /build/sync
+
+mkdir -p /build/sync
+cd /build/sync
+
+# Fetch source
+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/debian-bookworm/wallet-build.sh b/packaging/debian-bookworm/wallet-build.sh
new file mode 100644
index 0000000..6d807be
--- /dev/null
+++ b/packaging/debian-bookworm/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