diff options
author | Andres Freund <andres@anarazel.de> | 2024-11-27 11:28:59 -0500 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2024-11-27 11:51:54 -0500 |
commit | 262283d5eec3d582a8645692fede2e8f5e6029bd (patch) | |
tree | a3a5d199ca3aee2696e673ef6d28e5a99ccdcb88 /src | |
parent | 61171a632d10ad7abe1d7ad891176266cc5ef0e1 (diff) | |
download | postgresql-262283d5eec3d582a8645692fede2e8f5e6029bd.tar.gz postgresql-262283d5eec3d582a8645692fede2e8f5e6029bd.zip |
ci: Fix cached MacPorts installation management
1. The error reporting of "port setrequested list-of-packages..."
changed, hiding errors we were relying on to know if all packages in our
list were already installed. Use a loop instead.
2. The cached MacPorts installation was shared between PostgreSQL
major branches, though each branch wanted different packages. Add the
list of packages to cache key, so that different branches, when tested
in one github account/repo such as postgres/postgres, stop fighting with
each other, adding and removing packages.
Back-patch to 15 where CI began.
Author: Thomas Munro <thomas.munro@gmail.com>
Author: Nazir Bilal Yavuz <byavuz81@gmail.com>
Suggested-by: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/au2uqfuy2nf43nwy2txmc5t2emhwij7kzupygto3d2ffgtrdgr%40ckvrlwyflnh2
Diffstat (limited to 'src')
-rwxr-xr-x | src/tools/ci/ci_macports_packages.sh | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/tools/ci/ci_macports_packages.sh b/src/tools/ci/ci_macports_packages.sh index b3df6d36a4e..63e97b37c78 100755 --- a/src/tools/ci/ci_macports_packages.sh +++ b/src/tools/ci/ci_macports_packages.sh @@ -59,11 +59,18 @@ if [ -n "$(port -q installed installed)" ] ; then sudo port unsetrequested installed fi -# if setting all the required packages as requested fails, we need -# to install at least one of them -if ! sudo port setrequested $packages > /dev/null 2>&1 ; then - echo not all required packages installed, doing so now +# If setting all the required packages as requested fails, we need +# to install at least one of them. Need to do so one-by-one as +# port setrequested only reports failures for the first package. +echo "checking if all required packages are installed" +for package in $packages ; do + if ! sudo port setrequested $package > /dev/null 2>&1 ; then update_cached_image=1 + fi +done +echo "done" +if [ "$update_cached_image" -eq 1 ]; then + echo not all required packages installed, doing so now # to keep the image small, we deleted the ports tree from the image... sudo port selfupdate # XXX likely we'll need some other way to force an upgrade at some |