From 4b29885d51e48685108578c243a2b8391cb01f59 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 22 Jun 2019 19:14:54 +0200 Subject: [PATCH] Docker: setup a Lumiera build environment in a Debian/Ubuntu container some scripting to help creating a clean build environment for testing and bugfixes * build_lumiera-build-dependencies.sh All necessary steps to prepare a pristine Debian/Ubuntu/xx distro for building Lumiera from source. + install the GPG pub key to trust + install a Lumiera DEP Repository to get the sources from + install build-essential + prepare, build and install NoBug + prepare, build and install libGDLmm + install the Lumiera build-dependencies from the DEB package At that point, you should be able to start the build just with `scons` * docker_open-lumiera-buildenv.sh Additional bash magic to launch a docker container and inject the build_lumiera-build-dependencies.sh script into an interactive shell --- admin/README.deb.lumiera.org.PUB.gpg | 5 ++ admin/build_lumiera-build-dependencies.sh | 61 ++++++++++++++++++++++ admin/deb.lumiera.org.PUB.gpg | Bin 0 -> 6927 bytes admin/docker_open-lumiera-buildenv.sh | 44 ++++++++++++++++ 4 files changed, 110 insertions(+) create mode 100644 admin/README.deb.lumiera.org.PUB.gpg create mode 100755 admin/build_lumiera-build-dependencies.sh create mode 100644 admin/deb.lumiera.org.PUB.gpg create mode 100755 admin/docker_open-lumiera-buildenv.sh diff --git a/admin/README.deb.lumiera.org.PUB.gpg b/admin/README.deb.lumiera.org.PUB.gpg new file mode 100644 index 000000000..de4eaa2b1 --- /dev/null +++ b/admin/README.deb.lumiera.org.PUB.gpg @@ -0,0 +1,5 @@ +This is the Public Key of the Package signing GPG key +used for building of Debian DEB packages on Lumiera.org + +Fingerprint: D0333C21252B66D54A4CC1D265B66B07A1DE94B2 +UID: Hermann Vosseler diff --git a/admin/build_lumiera-build-dependencies.sh b/admin/build_lumiera-build-dependencies.sh new file mode 100755 index 000000000..96fbf8a76 --- /dev/null +++ b/admin/build_lumiera-build-dependencies.sh @@ -0,0 +1,61 @@ +#!/bin/sh +# +# build_lumiera-build-dependencies.sh - prepare/build on a pristine Debian/Ubuntu system (Docker) +# +# +#------------------------------------------------------Setup +# The Debian DEB Depot to retrieve the source packages +DEBIAN_REPO="http://lumiera.org/debian/" +SRC_DISTRO="stretch" +REPO_SECTION="experimental" +# +# GPG pubkey to trust for signed packages +TRUSTED_GPG=$(dirname $0)/deb.lumiera.org.PUB.gpg +# +# Directory for building DEB packages +PACK_DIR=./pack +# +#------------------------------------------------------Setup(End) +# +fail() { + echo "\nFAIL: $1\n\n" + exit 1 +} + +# Sanity-Checks +[ -f $TRUSTED_GPG ] || fail "GPG Key not found: $TRUSTED_GPG" +mkdir -p $PACK_DIR +[ -w $PACK_DIR ] || fail "Unable to build. Can not write to $PACK_DIR" + + +# prepare the host system with Lumiera package sources +cp $TRUSTED_GPG /etc/apt/trusted.gpg.d/ +chmod a+r-x /etc/apt/trusted.gpg.d/$(basename $TRUSTED_GPG) +echo "deb-src $DEBIAN_REPO $SRC_DISTRO $REPO_SECTION" > /etc/apt/sources.list.d/55-lumiera.list + +apt update +apt install -y build-essential ca-certificates +apt update + +# build some special build dependencies from source +WORKDIR=$(pwd -P) +cd $PACK_DIR + +echo "\n\n======= building NoBug =======\n" +apt-get -y build-dep nobug +apt-get source --compile nobug +dpkg -i nobug-dev*deb libnobug*deb || fail "installing NoBug" +echo "\n\n======= building GDLmm =======\n" +apt-get -y build-dep libgdlmm-3-dev +apt-get source --compile libgdlmm-3-dev || fail "installing GDLmm" +dpkg -i libgdlmm-3*deb + +# install the build dependencies of Lumiera from DEB +echo "\n\nInstalling Lumiera build dependencies...\n" +apt-get -y build-dep lumiera + +# return to the working directory +cd $WORKDIR + +echo "Build-Dependencies of Lumiera successfully installed.\n\n" + diff --git a/admin/deb.lumiera.org.PUB.gpg b/admin/deb.lumiera.org.PUB.gpg new file mode 100644 index 0000000000000000000000000000000000000000..6403dc3b65d41cd281de173ec2ec5717839012c1 GIT binary patch literal 6927 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 literal 0 HcmV?d00001 diff --git a/admin/docker_open-lumiera-buildenv.sh b/admin/docker_open-lumiera-buildenv.sh new file mode 100755 index 000000000..2c245c209 --- /dev/null +++ b/admin/docker_open-lumiera-buildenv.sh @@ -0,0 +1,44 @@ +#!/bin/sh +# +# docker_open-lumiera-buildenv.sh - launch Docker container with interactive build shell +# +# +#------------------------------------------------------Setup +# +# Working directory path on the host +WORKDIR_HOST="/home/$USER/devel/lumi" +# +# bind-mount of the working dir in the container +WORKDIR_GUEST="/lumi" +# +# Docker image-ID to launch +DOCKER_IMAGE="ubuntu:bionic" +# +# Script code to inject into interactive shell +COMMANDS=$(cat) <