From: Andrei Pavel Date: Thu, 8 Aug 2024 07:46:46 +0000 (+0300) Subject: [#3470] hammer: install postgresql only if not already installed X-Git-Tag: Kea-2.7.2~82 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=04bd5f616f2faad4aa5fdc8fe944df1640336446;p=thirdparty%2Fkea.git [#3470] hammer: install postgresql only if not already installed --- 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'])