Hi, On 2023-11-30 21:24:21 -0500, Tom Lane wrote: > Andres Freund <and...@anarazel.de> writes: > > On 2023-11-28 10:48:04 -0500, Robert Haas wrote: > >> What a stupid, annoying decision on Apple's part. It seems like > >> -Wl,-undefined,error is the default behavior, so they could have just > >> ignored that flag if present, but instead they complain about being > >> asked to do what they were going to do anyway. > > > Especially because I think it didn't actually use to be the default when > > building a dylib. > > Indeed. Whoever's in charge of their linker now seems to be quite > clueless, or at least aggressively anti-backwards-compatibility.
It looks like it even affects a bunch of Apple's own products [1]... > > While not helpful for this, I just noticed that there is > > -no_warn_duplicate_libraries, which would at least get rid of the > > ld: warning: ignoring duplicate libraries: '-lxml2' > > style warnings. > > Oh! If that's been there long enough to rely on, that does seem > very helpful. I think it's new too. But we can just check if the flag is supported. This is really ridiculous. For at least part of venturas life they warned about -Wl,-undefined,dynamic_lookup, which lead to 9a95a510adf3. They don't seem to do that anymore, but now you can't specify -Wl,-undefined,error anymore without a warning. Attached is a prototype testing this via CI on both Sonoma and Ventura. It's certainly possible to encounter the duplicate library issue with autoconf, but probably not that common. So I'm not sure if we should inject -Wl,-no_warn_duplicate_libraries as well? Greetings, Andres Freund [1] https://developer.apple.com/forums/thread/733317
>From 64cc70f05bb5874802192800e5c8af04b1a1df79 Mon Sep 17 00:00:00 2001 From: Andres Freund <and...@anarazel.de> Date: Thu, 28 Sep 2023 08:21:18 -0700 Subject: [PATCH v3] meson: Improve Sonoma compability Still triggers a bunch of "ld: warning: -undefined error is deprecated", but fewer than before. There should not be any "ld: warning: ignoring duplicate libraries:" warnings anymore. ci-os-only: macos --- meson.build | 14 ++++++++++++-- .cirrus.tasks.yml | 13 ++++++++++--- src/tools/ci/ci_macports_packages.sh | 8 +++++++- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index 0f2c76ec25e..eab7b6e722d 100644 --- a/meson.build +++ b/meson.build @@ -237,10 +237,20 @@ elif host_system == 'darwin' cflags += ['-isysroot', pg_sysroot] ldflags += ['-isysroot', pg_sysroot] endif + # meson defaults to -Wl,-undefined,dynamic_lookup for modules, which we # don't want because a) it's different from what we do for autoconf, b) it - # causes warnings starting in macOS Ventura - ldflags_mod += ['-Wl,-undefined,error'] + # causes warnings in macOS Ventura. But using -Wl,-undefined,error causes a + # warning starting in Sonoma. So only add -Wl,-undefined,error if it does + # not cause a warning. + if cc.has_multi_link_arguments('-Wl,-undefined,error', '-Werror') + ldflags_mod += '-Wl,-undefined,error' + endif + + # Starting in Sonoma, the linker warns about the same library being + # linked twice. Which can easily happen when multiple dependencies + # depend on the same library. Quiesce the ill considered warning. + ldflags += cc.get_supported_link_arguments('-Wl,-no_warn_duplicate_libraries') elif host_system == 'freebsd' sema_kind = 'unnamed_posix' diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index e137769850d..21ee53b9c2f 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -410,8 +410,6 @@ task: task: - name: macOS - Ventura - Meson - env: CPUS: 4 # always get that much for cirrusci macOS instances BUILD_JOBS: $CPUS @@ -419,7 +417,6 @@ task: # work OK. See # https://postgr.es/m/20220927040208.l3shfcidovpzqxfh%40awork3.anarazel.de TEST_JOBS: 8 - IMAGE: ghcr.io/cirruslabs/macos-ventura-base:latest CIRRUS_WORKING_DIR: ${HOME}/pgsql/ CCACHE_DIR: ${HOME}/ccache @@ -430,6 +427,16 @@ task: CFLAGS: -Og -ggdb CXXFLAGS: -Og -ggdb + + matrix: + - name: macOS - Sonoma - Meson + env: + IMAGE: ghcr.io/cirruslabs/macos-sonoma-base:latest + + - name: macOS - Ventura - Meson + env: + IMAGE: ghcr.io/cirruslabs/macos-ventura-base:latest + <<: *macos_task_template depends_on: SanityCheck diff --git a/src/tools/ci/ci_macports_packages.sh b/src/tools/ci/ci_macports_packages.sh index 4bc594a31d1..3161ea08ad3 100755 --- a/src/tools/ci/ci_macports_packages.sh +++ b/src/tools/ci/ci_macports_packages.sh @@ -13,7 +13,13 @@ set -e packages="$@" -macports_url="https://github.com/macports/macports-base/releases/download/v2.8.1/MacPorts-2.8.1-13-Ventura.pkg" +macos_ver=$(sw_vers -productVersion | sed 's/\.//g') +if [ $macos_ver -ge 1400 ]; then + macports_url="https://github.com/macports/macports-base/releases/download/v2.8.1/MacPorts-2.8.1-14-Sonoma.pkg" +else + macports_url="https://github.com/macports/macports-base/releases/download/v2.8.1/MacPorts-2.8.1-13-Ventura.pkg" +fi + cache_dmg="macports.hfs.dmg" if [ "$CIRRUS_CI" != "true" ]; then -- 2.38.0