From 7a6c7d8d640a7485836654888ff3089dc7a9f895 Mon Sep 17 00:00:00 2001
From: Stefan Langenmaier <stefan.langenmaier@savoirfairelinux.com>
Date: Mon, 28 Nov 2016 09:41:26 -0500
Subject: [PATCH] docker build : Gentoo

Change-Id: I63ef5ea9d28b1fc3cc34cc5ffda3a78ecfc41363
---
 Makefile.packaging                           |  3 +-
 docker/Dockerfile_gentoo                     | 18 ++++++++++
 scripts/build-package-gentoo.sh              | 38 ++++++++++++++++++++
 scripts/gentoo/portage/bashrc                |  5 +++
 scripts/gentoo/portage/make.conf             | 17 +++++++++
 scripts/gentoo/portage/package.env/ring      | 18 ++++++++++
 scripts/gentoo/portage/package.keywords/ring | 16 +++++++++
 scripts/gentoo/portage/package.use/ring      | 13 +++++++
 scripts/make-packaging-target.py             |  6 ++++
 9 files changed, 133 insertions(+), 1 deletion(-)
 create mode 100644 docker/Dockerfile_gentoo
 create mode 100644 scripts/build-package-gentoo.sh
 create mode 100644 scripts/gentoo/portage/bashrc
 create mode 100644 scripts/gentoo/portage/make.conf
 create mode 100644 scripts/gentoo/portage/package.env/ring
 create mode 100644 scripts/gentoo/portage/package.keywords/ring
 create mode 100644 scripts/gentoo/portage/package.use/ring

diff --git a/Makefile.packaging b/Makefile.packaging
index f1789966..e87a4378 100644
--- a/Makefile.packaging
+++ b/Makefile.packaging
@@ -88,7 +88,8 @@ package-all: package-debian_8 \
              package-fedora_23 \
              package-fedora_23_i386 \
              package-fedora_24 \
-             package-fedora_24_i386
+             package-fedora_24_i386 \
+             package-gentoo
 
 # Append the output of make-packaging-target to this Makefile
 # see Makefile.packaging.distro_targets
diff --git a/docker/Dockerfile_gentoo b/docker/Dockerfile_gentoo
new file mode 100644
index 00000000..c249e645
--- /dev/null
+++ b/docker/Dockerfile_gentoo
@@ -0,0 +1,18 @@
+FROM gentoo/stage3-amd64:latest
+
+RUN emerge-webrsync
+
+ADD scripts/gentoo/portage/ /etc/portage/
+
+# profile with gnome and systemd configuration
+RUN eselect profile set 5 && \
+	emerge -uDN world
+
+RUN eselect news read
+
+RUN emerge layman && echo "source /var/lib/layman/make.conf" >> /etc/portage/make.conf
+
+ADD scripts/build-package-gentoo.sh /opt/build-package-gentoo.sh
+
+CMD /bin/bash /opt/build-package-gentoo.sh
+
diff --git a/scripts/build-package-gentoo.sh b/scripts/build-package-gentoo.sh
new file mode 100644
index 00000000..1c283b9b
--- /dev/null
+++ b/scripts/build-package-gentoo.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2016 Savoir-faire Linux Inc.
+#
+# Author: Stefan Langenmaier <stefan.langenmaier@savoirfairelinux.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# This script is used in the packaging containers to build packages on
+# rpm-based distros.
+#
+
+set -e
+
+layman -f -a ring-overlay
+
+cp /opt/ring-project-ro/${RELEASE_TARBALL_FILENAME} /usr/portage/distfiles
+
+cd /var/lib/layman/ring-overlay && bash scripts/bump-ring-ebuilds.sh /usr/portage/distfiles/${RELEASE_TARBALL_FILENAME}
+
+# problem with cirrcular deps
+USE="-qt5" emerge -1 dev-util/cmake
+
+emerge gnome-ring kde-ring
+
+touch /opt/output/.packages-built
+chown -R ${CURRENT_UID}:${CURRENT_UID} /opt/output
diff --git a/scripts/gentoo/portage/bashrc b/scripts/gentoo/portage/bashrc
new file mode 100644
index 00000000..14b80f02
--- /dev/null
+++ b/scripts/gentoo/portage/bashrc
@@ -0,0 +1,5 @@
+updatePkgs() {
+	chown -R ${CURRENT_UID}:${CURRENT_UID} /opt/output
+}
+
+[[ $EBUILD_PHASE == "postinst" || $EBUILD_PHASE == "clean" ]] && updatePkgs
diff --git a/scripts/gentoo/portage/make.conf b/scripts/gentoo/portage/make.conf
new file mode 100644
index 00000000..b6d4c353
--- /dev/null
+++ b/scripts/gentoo/portage/make.conf
@@ -0,0 +1,17 @@
+# standard configuration to maximise portability
+CFLAGS="-O2 -pipe"
+CXXFLAGS="${CFLAGS}"
+CHOST="x86_64-pc-linux-gnu"
+USE="bindist -qt4 qt5"
+CPU_FLAGS_X86="mmx mmxext sse sse2"
+PORTDIR="/usr/portage"
+DISTDIR="${PORTDIR}/distfiles"
+
+# modification to ouput built packages to a non standard folder
+PKGDIR="/opt/output/packages"
+FEATURES="$FEATURES buildpkg"
+EMERGE_DEFAULT_OPTS="${EMERGE_DEFAULT_OPTS} --usepkg"
+
+# necessary for current layman version, should be removed with layman >2.0.0
+# cannot be specified from the beginning because layman is not yet installed
+#source /var/lib/layman/make.conf
diff --git a/scripts/gentoo/portage/package.env/ring b/scripts/gentoo/portage/package.env/ring
new file mode 100644
index 00000000..a42c214f
--- /dev/null
+++ b/scripts/gentoo/portage/package.env/ring
@@ -0,0 +1,18 @@
+# docker build
+# not necessary when docker runs with PTRACE capability
+dev-libs/gobject-introspection docker-build
+app-text/poppler docker-build
+dev-libs/crypto++ docker-build
+dev-libs/libical docker-build
+dev-libs/appstream-glib docker-build
+net-libs/webkit-gtk docker-build
+net-libs/gnome-online-accounts docker-build
+
+# build pkg
+dev-libs/msgpack build-pkg
+net-libs/libringclient build-pkg
+net-libs/opendht build-pkg
+net-voip/gnome-ring build-pkg
+net-voip/kde-ring build-pkg
+net-voip/ring-daemon build-pkg
+
diff --git a/scripts/gentoo/portage/package.keywords/ring b/scripts/gentoo/portage/package.keywords/ring
new file mode 100644
index 00000000..8c80d2a1
--- /dev/null
+++ b/scripts/gentoo/portage/package.keywords/ring
@@ -0,0 +1,16 @@
+# overlay
+net-voip/gnome-ring ~amd64
+=net-voip/kde-ring-99999999 **
+net-libs/libringclient ~amd64
+net-voip/ring-daemon ~amd64
+dev-libs/msgpack ~amd64
+net-libs/opendht ~amd64
+
+# deps
+dev-libs/crypto++ ~amd64
+dev-libs/jsoncpp ~amd64
+net-libs/libupnp ~amd64
+media-libs/opus ~amd64
+media-libs/libvpx ~amd64
+dev-libs/dbus-c++ ~amd64
+
diff --git a/scripts/gentoo/portage/package.use/ring b/scripts/gentoo/portage/package.use/ring
new file mode 100644
index 00000000..ecfef2d1
--- /dev/null
+++ b/scripts/gentoo/portage/package.use/ring
@@ -0,0 +1,13 @@
+dev-libs/libpcre pcre16
+
+sys-libs/zlib minizip
+dev-libs/libdbusmenu-qt qt5
+media-libs/phonon-gstreamer qt5
+dev-qt/qtcore icu
+media-libs/phonon-vlc qt5
+sys-auth/polkit-qt qt5
+media-libs/phonon qt5
+
+# avoiding a cirrcular dep
+media-libs/harfbuzz -graphite
+dev-util/cmake -qt5
diff --git a/scripts/make-packaging-target.py b/scripts/make-packaging-target.py
index a2c4ea29..55cfe4fa 100755
--- a/scripts/make-packaging-target.py
+++ b/scripts/make-packaging-target.py
@@ -181,6 +181,12 @@ def run_generate_all(parsed_args):
             "debian_packaging_override": "",
             "output_file": ".packages-built",
         },
+        # Gentoo
+        {
+            "distribution": "gentoo",
+            "debian_packaging_override": "",
+            "output_file": ".packages-built",
+        },
 
     ]
 
-- 
GitLab