From 04bd5f616f2faad4aa5fdc8fe944df1640336446 Mon Sep 17 00:00:00 2001 From: Andrei Pavel Date: Thu, 8 Aug 2024 10:46:46 +0300 Subject: [PATCH] [#3470] hammer: install postgresql only if not already installed --- hammer.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/hammer.py b/hammer.py index be6828618f..aae1851c71 100755 --- 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'])