]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3470] hammer: install postgresql only if not already installed
authorAndrei Pavel <andrei@isc.org>
Thu, 8 Aug 2024 07:46:46 +0000 (10:46 +0300)
committerAndrei Pavel <andrei@isc.org>
Thu, 8 Aug 2024 08:03:30 +0000 (11:03 +0300)
hammer.py

index be6828618f330a6723e5bd2b88164e7b72f1723a..aae1851c714db2291f170d84601a282486eab09c 100755 (executable)
--- a/hammer.py
+++ b/hammer.py
@@ -1956,14 +1956,22 @@ def install_packages_local(system, revision, features, check_times, ignore_error
                 packages.extend(['mysql80-server', 'mysql80-client'])
 
         if 'pgsql' in features:
-            # Install the latest postgresql-client and postgresql-server.
-            _, output = execute("pkg search postgresql | grep -E 'postgresql[0-9]+-client' | tail -n 1 | "
-                                "cut -d ' ' -f 1 | cut -d '-' -f 1-2", capture=True)
-            postgresql_client = output.strip()
-            _, output = execute("pkg search postgresql | grep -E 'postgresql[0-9]+-server' | tail -n 1 | "
-                                "cut -d ' ' -f 1 | cut -d '-' -f 1-2", capture=True)
-            postgresql_server = output.strip()
-            packages.extend([postgresql_client, postgresql_server])
+            # Install the latest postgresql-client and postgresql-server,
+            # unless any postgresql-client or postgresql-server version is already installed.
+            for i in ['client', 'server']:
+                # Check if already installed.
+                _, output = execute('pkg info', capture=True)
+                m = re.search(f'postgresql[0-9]+-{i}', output)
+                if m is None:
+                    # If not, go ahead and install.
+                    _, output = execute('pkg search postgresql', capture=True)
+                    found = re.findall(f'postgresql[0-9]+-{i}', output)
+                    if len(found) == 0:
+                        print(f'No postgresql[0-9]+-{i} found?')
+                        sys.exit(1)
+                    # There may be more matches. Results are sorted by pkg.
+                    # Choose the last from the list which should be the latest version.
+                    packages.append(found[-1])
 
         if 'gssapi' in features:
             packages.extend(['krb5-devel'])