Re: Annoying build warnings from latest Apple toolchain - Mailing list pgsql-hackers
From | Andres Freund |
---|---|
Subject | Re: Annoying build warnings from latest Apple toolchain |
Date | |
Msg-id | 20230928203213.47bn2pv45mkmxtz7@alap3.anarazel.de Whole thread Raw |
In response to | Re: Annoying build warnings from latest Apple toolchain (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: Annoying build warnings from latest Apple toolchain
|
List | pgsql-hackers |
Hi, On 2023-09-27 16:52:44 -0400, Tom Lane wrote: > I wrote: > > I've not yet looked at the meson build infrastructure to > > see if it needs a corresponding change. > > I think it doesn't, as long as all the relevant build targets > write their dependencies with "frontend_code" before "libpq". Hm, that's not great. I don't think that should be required. I'll try to take a look at why that's needed. > However, it's hard to test this, because the meson build > seems completely broken on current macOS: I am travelling and I don't quite dare to upgrade my mac mini remotely. So I can't try Sonoma directly. But CI worked after switching to sonoma - although installing packages from macports took forever, due to macports building all packages locally. https://cirrus-ci.com/task/5133869171605504 There's some weird warnings about hashlib/blake2, but it looks like that's a python installation issue. Looks like this is with python from macports in PATH. [00:59:14.442] ERROR:root:code for hash blake2b was not found. [00:59:14.442] Traceback (most recent call last): [00:59:14.442] File "/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/hashlib.py", line 307,in <module> [00:59:14.442] globals()[__func_name] = __get_hash(__func_name) [00:59:14.442] ^^^^^^^^^^^^^^^^^^^^^^^ [00:59:14.442] File "/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/hashlib.py", line 129,in __get_openssl_constructor [00:59:14.442] return __get_builtin_constructor(name) [00:59:14.442] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [00:59:14.442] File "/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/hashlib.py", line 123,in __get_builtin_constructor [00:59:14.442] raise ValueError('unsupported hash type ' + name) [00:59:14.442] ValueError: unsupported hash type blake2b This just happens whenever python's hashlib - supposedly in the standard library - is imported. There *are* some buildsystem warnings: [00:59:27.289] [260/2328] Linking target src/interfaces/libpq/libpq.5.dylib [00:59:27.289] ld: warning: -undefined error is deprecated [00:59:27.289] ld: warning: ignoring -e, not used for output type Full command: [1/1] cc -o src/interfaces/libpq/libpq.5.dylib src/interfaces/libpq/libpq.5.dylib.p/fe-auth-scram.c.o src/interfaces/libpq/libpq.5.dylib.p/fe-auth.c.osrc/interfaces/libpq/libpq.5.dylib.p/fe-connect.c.o src/interfaces/libpq/libpq.5.dylib.p/fe-exec.c.osrc/interfaces/libpq/libpq.5.dylib.p/fe-lobj.c.o src/interfaces/libpq/libpq.5.dylib.p/fe-misc.c.osrc/interfaces/libpq/libpq.5.dylib.p/fe-print.c.o src/interfaces/libpq/libpq.5.dylib.p/fe-protocol3.c.osrc/interfaces/libpq/libpq.5.dylib.p/fe-secure.c.o src/interfaces/libpq/libpq.5.dylib.p/fe-trace.c.osrc/interfaces/libpq/libpq.5.dylib.p/legacy-pqsignal.c.o src/interfaces/libpq/libpq.5.dylib.p/libpq-events.c.osrc/interfaces/libpq/libpq.5.dylib.p/pqexpbuffer.c.o src/interfaces/libpq/libpq.5.dylib.p/fe-secure-common.c.osrc/interfaces/libpq/libpq.5.dylib.p/fe-secure-openssl.c.o src/interfaces/libpq/libpq.5.dylib.p/fe-gssapi-common.c.osrc/interfaces/libpq/libpq.5.dylib.p/fe-secure-gssapi.c.o -Wl,-dead_strip_dylibs-Wl,-headerpad_max_install_names -Wl,-undefined,error -shared -install_name @rpath/libpq.5.dylib -compatibility_version5 -current_version 5.17 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk -Og -ggdb-Wl,-rpath,/opt/local/lib -Wl,-rpath,/opt/local/libexec/openssl3/lib src/common/libpgcommon_shlib.a src/port/libpgport_shlib.a-exported_symbols_list=/Users/admin/pgsql/build/src/interfaces/libpq/exports.list -lm /opt/local/lib/libintl.dylib/opt/local/lib/libgssapi_krb5.dylib /opt/local/lib/libldap.dylib /opt/local/lib/liblber.dylib/opt/local/libexec/openssl3/lib/libssl.dylib /opt/local/libexec/openssl3/lib/libcrypto.dylib/opt/local/lib/libz.dylib /opt/local/lib/libzstd.dylib ld: warning: -undefined error is deprecated ld: warning: ignoring -e, not used for output type So we need to make the addition of -Wl,-undefined,error conditional, that should be easy enough. Although I'm a bit confused about this being deprecated. For the -e bit, this seems to do the trick: @@ -224,7 +224,7 @@ elif host_system == 'darwin' library_path_var = 'DYLD_LIBRARY_PATH' export_file_format = 'darwin' - export_fmt = '-exported_symbols_list=@0@' + export_fmt = '-Wl,-exported_symbols_list,@0@' mod_link_args_fmt = ['-bundle_loader', '@0@'] mod_link_with_dir = 'bindir' It's quite annoying that apple is changing things option syntax. > (I also tried with a more recent meson version, 1.1.1, with > the same result.) Looks like you need 1.2 for the new clang / ld output... Apparently apple's linker changed the format of its version output :/. Greetings, Andres Freund
pgsql-hackers by date: