[lxc-devel] [lxc-templates/master] fedora: support Fedora 28

LicoMonch on Github lxc-bot at linuxcontainers.org
Wed Jun 6 15:00:32 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 488 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180606/21a93f27/attachment.bin>
-------------- next part --------------
From 92fd4dd9ad6cf10d7cc364c17ffa196c08134635 Mon Sep 17 00:00:00 2001
From: Andreas Freudenberg <root at bla.blubb.de>
Date: Wed, 6 Jun 2018 16:27:43 +0200
Subject: [PATCH] fedora: support Fedora 28

Signed-off-by: Andreas Freudenberg <andreas.freudenberg at licomonch.net>
---
 templates/lxc-fedora.in | 44 +++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 41 insertions(+), 3 deletions(-)

diff --git a/templates/lxc-fedora.in b/templates/lxc-fedora.in
index 10b90b1..51868a6 100644
--- a/templates/lxc-fedora.in
+++ b/templates/lxc-fedora.in
@@ -566,6 +566,23 @@ download_fedora()
             return 1
         fi
         echo "Using bootstrap environment at ${CHROOT_DIR}"
+        echo "Ensure bootstrap repository is fully setup for Fedora ${release}"
+        # check if the gpg-keys of the demanded release are installed in bootstrap
+        # this makes sure, that the bootstrap repo was already prepared for $release
+        # if we don't do this check, "setup_repositories" could try to install older
+        # versions of the release-rpms which would fail as rpm would fail
+        if [ -f ${CHROOT_DIR}/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-${release}-primary ]
+        then
+            echo "The bootstrap repository seems to be prepared"
+        else
+            INSTALL_ROOT="/"
+            if ! setup_repositories "${cache}" "${basearch}" "${release}" "${mirror}"
+            then
+                echo "Error: Failed to configure repositories in ${CHROOT_DIR}${INSTALL_ROOT}"
+                return 1
+            fi
+            INSTALL_ROOT=${setup_rootfs}
+        fi
     fi
 
     if ! mkdir -p "${setup_rootfs}"
@@ -812,10 +829,18 @@ setup_repositories()
     local release="${3}"
     local mirror="${4}"
 
+    # select rpm packages to install depending on the version to install
+    rpmpkgs="fedora-release-${release} fedora-repos-${release}"
+    if [ "${release}" -gt 26 ]
+    then
+        rpmpkgs="${rpmpkgs} fedora-gpg-keys-${release}"
+    fi
+
     # download repository packages if not found in cache
     pushd "${cache}" >/dev/null
     if [ -z "$(ls -1 ./fedora-release-${release}*.noarch.rpm 2>/dev/null)" ] ||
-       [ -z "$(ls -1 ./fedora-repos-${release}*.noarch.rpm 2>/dev/null)" ]
+       [ -z "$(ls -1 ./fedora-repos-${release}*.noarch.rpm 2>/dev/null)" ] ||
+       ( [ "${release}" -gt 26 ] && [ -z "$(ls -1 ./fedora-gpg-keys-${release}*.noarch.rpm 2>/dev/null)" ] )
     then
         # if no mirror given, get an appropriate mirror from the mirror list
         if [ -z "${mirror}" ]
@@ -830,7 +855,7 @@ setup_repositories()
         do
             local release_url="${mirror_url}/Packages/f"
 
-            for pkg in fedora-release-${release} fedora-repos-${release}
+            for pkg in ${rpmpkgs}
             do
                 test -n "$(ls -1 ./${pkg}*.noarch.rpm 2>/dev/null)" && continue
 
@@ -853,9 +878,10 @@ setup_repositories()
                 fi
             done
 
-            # if we have both packages continue
+            # if we have all packages continue
             if [ -z "$(ls -1 ./fedora-release-${release}*.noarch.rpm 2>/dev/null)" ] ||
                [ -z "$(ls -1 ./fedora-repos-${release}*.noarch.rpm 2>/dev/null)" ]
+               ( [ "${release}" -gt 26 ] && [ -z "$(ls -1 ./fedora-gpg-keys-${release}*.noarch.rpm 2>/dev/null)" ] )
             then
                 break
             fi
@@ -867,12 +893,20 @@ setup_repositories()
     then
         cp ./fedora-release-${release}*.noarch.rpm "${CHROOT_DIR}" &&
         cp ./fedora-repos-${release}*.noarch.rpm "${CHROOT_DIR}"
+        if [ "${release}" -gt 26 ]
+        then
+            cp ./fedora-gpg-keys-${release}*.noarch.rpm "${CHROOT_DIR}"
+        fi
     else
         local pkgdir="${cache}"
     fi
 
     # use '--nodeps' to work around 'fedora-release-24-*' bash dependency
     ${CHROOT_CMD}rpm --root "${INSTALL_ROOT}" -ivh --nodeps "${pkgdir}"/{fedora-release-${release}*.noarch.rpm,fedora-repos-${release}*.noarch.rpm}
+    if [ "${release}" -gt 26 ];
+    then
+        ${CHROOT_CMD}rpm --root "${INSTALL_ROOT}" -ivh --nodeps "${pkgdir}"/fedora-gpg-keys-${release}*.noarch.rpm
+    fi
     local ret=$?
 
     # dnf will take $basearch from host, so force the arch we want
@@ -891,6 +925,10 @@ setup_repositories()
     then
         # shellcheck disable=SC2086
         rm -f "${CHROOT_DIR}"/{fedora-release-${release}*.noarch.rpm,fedora-repos-${release}*.noarch.rpm}
+        if [ "${release}" -gt 26 ]
+        then
+            rm -f "${CHROOT_DIR}"/fedora-gpg-keys-${release}*.noarch.rpm
+        fi
     fi
 
     return 0


More information about the lxc-devel mailing list