diff options
author | Florian Dold <florian@dold.me> | 2024-04-24 11:15:39 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-04-24 12:39:01 +0200 |
commit | 0ff1d33a635da117e385e6f5f3d3ae42ae48ca1e (patch) | |
tree | e7ce4d13bd0ed758d51c76ad83558becbfda67ed /packaging/ng | |
parent | 689f03e962ed38b12e9d9107ecaf28d8f2397770 (diff) | |
download | deployment-0ff1d33a635da117e385e6f5f3d3ae42ae48ca1e.tar.gz deployment-0ff1d33a635da117e385e6f5f3d3ae42ae48ca1e.tar.bz2 deployment-0ff1d33a635da117e385e6f5f3d3ae42ae48ca1e.zip |
rework ng packaging
Diffstat (limited to 'packaging/ng')
39 files changed, 144 insertions, 252 deletions
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/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/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/build-gnunet.sh b/packaging/ng/buildscripts/generic.sh index 70fb1a8..85235c6 100644 --- a/packaging/ng/buildscripts/build-gnunet.sh +++ b/packaging/ng/buildscripts/generic.sh @@ -5,37 +5,50 @@ 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 . /dev/null | gzip -9c > /pkgdir/Packages.gz +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=${1:-master} +TAG=$(cat /buildconfig/$PACKAGE.tag) +GITURL=$(cat /buildconfig/$PACKAGE.giturl) -git clone --depth=1 git://git.gnunet.org/gnunet -cd gnunet -git checkout $TAG +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) -apt-cache show gnunet | grep "Version: $DEB_VERSION" >/dev/null && found=true || found=false +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 "gnunet version $DEB_VERSION already built, skipping" + 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 -./bootstrap dpkg-buildpackage -rfakeroot -b -uc -us -cp /build/*.deb /pkgdir/ +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/Dockerfile.debian-bookworm b/packaging/ng/distros/Dockerfile.debian-bookworm index b6aade0..b6aade0 100644 --- a/packaging/ng/Dockerfile.debian-bookworm +++ b/packaging/ng/distros/Dockerfile.debian-bookworm diff --git a/packaging/ng/Dockerfile.ubuntu-kinetic b/packaging/ng/distros/Dockerfile.ubuntu-kinetic index 0a90fd7..0a90fd7 100644 --- a/packaging/ng/Dockerfile.ubuntu-kinetic +++ b/packaging/ng/distros/Dockerfile.ubuntu-kinetic 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 |