[libvirt] [jenkins-ci PATCH 2/2] lcitool: Refactor Dockerfile generation

Andrea Bolognani abologna at redhat.com
Thu Dec 12 13:22:27 UTC 2019


The current code is quite a mess, with the same commands being
repeated over and over again with very minor variations based on
necessities that are not spelled out at all. Refactor it and solve
both issues in the process; the output is entirely unchanged.

Signed-off-by: Andrea Bolognani <abologna at redhat.com>
---
 guests/lcitool | 66 +++++++++++++++++++++++++-------------------------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/guests/lcitool b/guests/lcitool
index 4c2a04e..9958508 100755
--- a/guests/lcitool
+++ b/guests/lcitool
@@ -740,40 +740,40 @@ class Application:
                         {package_manager} autoclean -y
                 """).format(**varmap))
         elif package_format == "rpm":
+            commands = []
+
+            # Rawhide needs this because the keys used to sign packages are
+            # cycled from time to time
             if os_name == "Fedora" and os_version == "Rawhide":
-                sys.stdout.write(textwrap.dedent("""
-                    RUN {package_manager} update -y --nogpgcheck fedora-gpg-keys && \\
-                        {package_manager} update -y && \\
-                        {package_manager} install -y {pkgs} && \\
-                        {package_manager} autoremove -y && \\
-                        {package_manager} clean all -y
-                """).format(**varmap))
-            elif os_name == "CentOS":
-                if os_version == "7":
-                    sys.stdout.write(textwrap.dedent("""
-                        RUN {package_manager} install -y epel-release && \\
-                            {package_manager} update -y && \\
-                            {package_manager} install -y {pkgs} && \\
-                            {package_manager} autoremove -y && \\
-                            {package_manager} clean all -y
-                    """).format(**varmap))
-                else:
-                    sys.stdout.write(textwrap.dedent("""
-                        RUN {package_manager} install 'dnf-command(config-manager)' -y && \\
-                            {package_manager} config-manager --set-enabled PowerTools -y && \\
-                            {package_manager} install -y epel-release && \\
-                            {package_manager} update -y && \\
-                            {package_manager} install -y {pkgs} && \\
-                            {package_manager} autoremove -y && \\
-                            {package_manager} clean all -y
-                    """).format(**varmap))
-            else:
-                sys.stdout.write(textwrap.dedent("""
-                    RUN {package_manager} update -y && \\
-                        {package_manager} install -y {pkgs} && \\
-                        {package_manager} autoremove -y && \\
-                        {package_manager} clean all -y
-                """).format(**varmap))
+                commands.extend([
+                    "{package_manager} update -y --nogpgcheck fedora-gpg-keys"
+                ])
+
+            if os_name == "CentOS":
+                # Starting with CentOS 8, most -devel packages are shipped in
+                # the PowerTools repository, which is not enabled by default
+                if os_version != "7":
+                    commands.extend([
+                        "{package_manager} install 'dnf-command(config-manager)' -y",
+                        "{package_manager} config-manager --set-enabled PowerTools -y",
+                    ])
+
+                # Some of the packages we need are not part of CentOS proper
+                # and are only available through EPEL
+                commands.extend([
+                    "{package_manager} install -y epel-release",
+                ])
+
+            commands.extend([
+                "{package_manager} update -y",
+                "{package_manager} install -y {pkgs}",
+                "{package_manager} autoremove -y",
+                "{package_manager} clean all -y",
+            ])
+
+            script = "\nRUN " + (" && \\\n    ".join(commands)) + "\n"
+
+            sys.stdout.write(script.format(**varmap))
 
         if pip_pkgs:
             sys.stdout.write(textwrap.dedent("""
-- 
2.23.0




More information about the libvir-list mailing list