commit 37d8180d367b602ec0b7fd926fdd8db6045d36f9163742b7de60be32aad8ba1d
Author: Alberto Planas Dominguez <aplanas@suse.com>
Date:   Wed Jan 9 10:39:22 2019 +0000

    Accepting request 663685 from SUSE:SLE-15:Update
    
    New package - needed for using labels in openSUSE containers.
    
    OBS-URL: https://build.opensuse.org/request/show/663685
    OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/obs-service-kiwi_label_helper?expand=0&rev=1

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9b03811
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,23 @@
+## Default LFS
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.bsp filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gem filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.lz filter=lfs diff=lfs merge=lfs -text
+*.lzma filter=lfs diff=lfs merge=lfs -text
+*.obscpio filter=lfs diff=lfs merge=lfs -text
+*.oxt filter=lfs diff=lfs merge=lfs -text
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.rpm filter=lfs diff=lfs merge=lfs -text
+*.tbz filter=lfs diff=lfs merge=lfs -text
+*.tbz2 filter=lfs diff=lfs merge=lfs -text
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.ttf filter=lfs diff=lfs merge=lfs -text
+*.txz filter=lfs diff=lfs merge=lfs -text
+*.whl filter=lfs diff=lfs merge=lfs -text
+*.xz filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.zst filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..57affb6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.osc
diff --git a/README b/README
new file mode 100644
index 0000000..28f4871
--- /dev/null
+++ b/README
@@ -0,0 +1,29 @@
+obs-service-kiwi_label_helper
+=============================
+
+This service can be enabled to run during buildtime, when it will edit the
+kiwi image descriptions to expand the <suse_label_helper:add_prefix/\>
+element.
+
+Example:
+
+```
+<image [...] xmlns:suse_label_helper="com.suse.label_helper">
+[...]
+       <containerconfig [...]>
+         <labels>
+          <suse_label_helper:add_prefix prefix="com.suse.sle.base">
+            <label name="org.opencontainers.title" value="SUSE Linux Enterprise Server 12 SP3 Base Container"/>
+          </suse_label_helper:add_prefix>
+```
+
+expands to
+
+```
+<image [...] xmlns:suse_label_helper="com.suse.label_helper">
+[...]
+       <containerconfig [...]>
+         <labels>
+           <label name="org.opencontainers.title" value="SUSE Linux Enterprise Server 12 SP3 Base Container"/>
+           <label name="com.suse.sle.base.title" value="SUSE Linux Enterprise Server 12 SP3 Base Container"/>
+```
\ No newline at end of file
diff --git a/kiwi_label_helper b/kiwi_label_helper
new file mode 100644
index 0000000..12055a5
--- /dev/null
+++ b/kiwi_label_helper
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+if [ "${BUILD_DIST+x}" != "x" ]; then
+	echo "Not running in an OBS build container"
+	exit 1
+fi
+
+BUILD_DATA="${BUILD_DIST/.dist/.data}"
+. "${BUILD_DATA}"
+
+if [ "${RECIPEFILE##*.}" != "kiwi" ]; then
+	echo "Recipe is not a kiwi file - exiting"
+	exit 0
+fi
+
+tmp=$(mktemp)
+if ! xsltproc /usr/lib/kiwi_label_helper/label_helper.xsl "${RECIPEFILE}" >> "${tmp}"; then
+	rm "${tmp}"
+	echo "xsltproc failed"
+	exit 1
+fi
+
+mv -f "${tmp}" "${RECIPEFILE}"
diff --git a/kiwi_label_helper.service b/kiwi_label_helper.service
new file mode 100644
index 0000000..9394324
--- /dev/null
+++ b/kiwi_label_helper.service
@@ -0,0 +1,4 @@
+<service name="kiwi_label_helper">
+	<summary>Allows automatic duplication of labels with a custom prefix.</summary>
+	<description>Implements the suse_label_helper:add_prefix element useful for building containers.</description>
+</service>
diff --git a/label_helper.xsl b/label_helper.xsl
new file mode 100644
index 0000000..72f1312
--- /dev/null
+++ b/label_helper.xsl
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+xmlns:suse_label_helper="com.suse.label_helper">
+  <xsl:template match="node()|@*">
+    <xsl:copy>
+      <xsl:apply-templates select="node()|@*"/>
+    </xsl:copy>
+  </xsl:template>
+
+  <xsl:template match="suse_label_helper:add_prefix">
+    <xsl:apply-templates select="label"/>
+    <xsl:apply-templates select="label" mode="add_prefix"/>
+  </xsl:template>
+
+  <xsl:template match="label" mode="add_prefix">
+    <label>
+      <xsl:attribute name="name">
+        <xsl:value-of select="../@prefix" />
+        <xsl:text>.</xsl:text>
+        <xsl:call-template name="last-domain-part">
+          <xsl:with-param name="string" select="@name" />
+        </xsl:call-template>
+      </xsl:attribute>
+      <xsl:attribute name="value">
+        <xsl:value-of select="@value" />
+      </xsl:attribute>
+    </label>
+  </xsl:template>
+
+  <xsl:template name="last-domain-part">
+  <xsl:param name="string" />
+  <xsl:choose>
+    <xsl:when test="contains($string, '.')">
+      <xsl:call-template name="last-domain-part">
+        <xsl:with-param name="string"
+          select="substring-after($string, '.')" />
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="$string" />
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/obs-service-kiwi_label_helper.changes b/obs-service-kiwi_label_helper.changes
new file mode 100644
index 0000000..bff1078
--- /dev/null
+++ b/obs-service-kiwi_label_helper.changes
@@ -0,0 +1,5 @@
+-------------------------------------------------------------------
+Tue Oct 30 10:40:41 UTC 2018 - Fabian Vogt <fvogt@suse.com>
+
+- Initial commit (fate#326856, bsc#1118103)
+
diff --git a/obs-service-kiwi_label_helper.spec b/obs-service-kiwi_label_helper.spec
new file mode 100644
index 0000000..9716588
--- /dev/null
+++ b/obs-service-kiwi_label_helper.spec
@@ -0,0 +1,57 @@
+#
+# spec file for package obs-service-kiwi_label_helper
+#
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+Name:           obs-service-kiwi_label_helper
+Version:        0.0
+Release:        0
+Summary:        Service to duplicate labels with a custom prefix
+License:        GPL-2.0+
+Group:          Development/Tools/Building
+Url:            https://build.opensuse.org
+Source0:        kiwi_label_helper.service
+Source1:        kiwi_label_helper
+Source2:        README
+Source3:        label_helper.xsl
+Requires:       libxslt-tools
+BuildArch:      noarch
+
+%description
+This service can be used during buildtime to implement the
+suse_label_helper:add_prefix element useful for building containers.
+
+%prep
+%setup -q -D -T 0 -n .
+cp %{SOURCE2} .
+
+%build
+
+%install
+
+mkdir -p %{buildroot}%{_prefix}/lib/obs/service %{buildroot}%{_prefix}/lib/kiwi_label_helper
+install -m 0644 %{SOURCE0} %{buildroot}%{_prefix}/lib/obs/service
+install -m 0755 %{SOURCE1} %{buildroot}%{_prefix}/lib/obs/service
+install -m 0644 %{SOURCE3} %{buildroot}%{_prefix}/lib/kiwi_label_helper
+
+%files
+%doc README
+%dir %{_prefix}/lib/obs
+%{_prefix}/lib/obs/service
+%dir %{_prefix}/lib/kiwi_label_helper
+%{_prefix}/lib/kiwi_label_helper/label_helper.xsl
+
+%changelog