Обсуждение: Apple's ranlib warns about protocol_openssl.c
Hi, Apple's ranlib doesn't like empty translation units[1], but protocol_openssl.c doesn't define any symbols (unless you have an ancient EOL'd openssl), so longfin and CI say: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libpgcommon.a(protocol_openssl.o) has no symbols I guess we still can't switch to (Apple) libtool. Maybe configure should be doing a test and adding it to LIBOBJS or a similar variable only if necessary, or something like that? [1] https://www.postgresql.org/message-id/flat/28521.1426352337%40sss.pgh.pa.us
Thomas Munro <thomas.munro@gmail.com> writes:
> Apple's ranlib doesn't like empty translation units[1], but
> protocol_openssl.c doesn't define any symbols (unless you have an
> ancient EOL'd openssl), so longfin and CI say:
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib:
> file: libpgcommon.a(protocol_openssl.o) has no symbols
> I guess we still can't switch to (Apple) libtool. Maybe configure
> should be doing a test and adding it to LIBOBJS or a similar variable
> only if necessary, or something like that?
Hmm ... right now, with only one test to make, the configure change
wouldn't be that hard; but that might change in future, plus I'm
unsure how to do it in MSVC.
A lazy man's answer could be to ensure the translation unit isn't
empty, say by adding
+#else
+
+int dummy_protocol_openssl_variable = 0;
+
#endif /* !SSL_CTX_set_min_proto_version */
regards, tom lane
On 16.12.21 16:25, Tom Lane wrote: > Thomas Munro <thomas.munro@gmail.com> writes: >> Apple's ranlib doesn't like empty translation units[1], but >> protocol_openssl.c doesn't define any symbols (unless you have an >> ancient EOL'd openssl), so longfin and CI say: > >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: >> file: libpgcommon.a(protocol_openssl.o) has no symbols > >> I guess we still can't switch to (Apple) libtool. Maybe configure >> should be doing a test and adding it to LIBOBJS or a similar variable >> only if necessary, or something like that? > > Hmm ... right now, with only one test to make, the configure change > wouldn't be that hard; but that might change in future, plus I'm > unsure how to do it in MSVC. > > A lazy man's answer could be to ensure the translation unit isn't > empty, say by adding These are not errors, right? So why is this a problem?
On Fri, Dec 17, 2021 at 4:48 AM Peter Eisentraut <peter.eisentraut@enterprisedb.com> wrote: > These are not errors, right? So why is this a problem? Yeah they're just warnings. I don't personally care if we just ignore them until we drop OpenSSL < 1.1.0 or macOS < 10.something. I mentioned it because in the past we worked to get rid of these sorts of warnings (there have been a couple of rounds at least), and they show up more obviously in the CI scripts because they use -s, so the 3 warning lines are the only output.
Thomas Munro <thomas.munro@gmail.com> writes:
> On Fri, Dec 17, 2021 at 4:48 AM Peter Eisentraut
> <peter.eisentraut@enterprisedb.com> wrote:
>> These are not errors, right? So why is this a problem?
> Yeah they're just warnings. I don't personally care if we just ignore
> them until we drop OpenSSL < 1.1.0 or macOS < 10.something. I
> mentioned it because in the past we worked to get rid of these sorts
> of warnings (there have been a couple of rounds at least), and they
> show up more obviously in the CI scripts because they use -s, so the 3
> warning lines are the only output.
Yeah, "zero chatter from a successful build" has been a goal
for awhile now.
Having said that, I'm not seeing any such warning when I build
with openssl 1.1.1k on my own Mac, so I'm a bit confused why
Thomas sees it.
regards, tom lane
> On 16 Dec 2021, at 19:22, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Having said that, I'm not seeing any such warning when I build > with openssl 1.1.1k on my own Mac, so I'm a bit confused why > Thomas sees it. Maybe it's dependant on macOS/XCode release? I see the warning on my Catalina laptop. -- Daniel Gustafsson https://vmware.com/
Daniel Gustafsson <daniel@yesql.se> writes:
>> On 16 Dec 2021, at 19:22, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Having said that, I'm not seeing any such warning when I build
>> with openssl 1.1.1k on my own Mac, so I'm a bit confused why
>> Thomas sees it.
> Maybe it's dependant on macOS/XCode release? I see the warning on my Catalina
> laptop.
Could be. I tried it on Monterey, but not anything older.
(longfin is still on Big Sur, because I've been lazy about
updating it.)
regards, tom lane
On Fri, Dec 17, 2021 at 9:38 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Daniel Gustafsson <daniel@yesql.se> writes: > >> On 16 Dec 2021, at 19:22, Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> Having said that, I'm not seeing any such warning when I build > >> with openssl 1.1.1k on my own Mac, so I'm a bit confused why > >> Thomas sees it. > > > Maybe it's dependant on macOS/XCode release? I see the warning on my Catalina > > laptop. > > Could be. I tried it on Monterey, but not anything older. > (longfin is still on Big Sur, because I've been lazy about > updating it.) Hmm. Happened[1] with Andres's CI scripts, which (at least on the version I used here, may not be his latest) runs on macOS Monterey and installs openssl from brew which is apparently 3.0.0. Wild guess: some versions of openssl define functions, and some define macros, and here we're looking for the macros? https://cirrus-ci.com/task/6100205941555200
Hi, On 2021-12-17 14:26:53 +1300, Thomas Munro wrote: > On Fri, Dec 17, 2021 at 9:38 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Could be. I tried it on Monterey, but not anything older. > > (longfin is still on Big Sur, because I've been lazy about > > updating it.) > > Hmm. Happened[1] with Andres's CI scripts, which (at least on the > version I used here, may not be his latest) runs on macOS Monterey and > installs openssl from brew which is apparently 3.0.0. Wild guess: > some versions of openssl define functions, and some define macros, and > here we're looking for the macros? I also see it on an m1 mini I got when building against openssl 3. There is -no_warning_for_no_symbols in apple's ranlib. But perhaps there's another way around this: We have ssl_protocol_version_to_openssl() in both be-secure-openssl.c and fe-secure-openssl.c. Perhaps we should just move it to protocol_openssl.c? Greetings, Andres Freund
Andres Freund <andres@anarazel.de> writes:
> I also see it on an m1 mini I got when building against openssl 3.
Huh, I wonder why I'm not seeing it.
> There is -no_warning_for_no_symbols in apple's ranlib. But perhaps
> there's another way around this:
> We have ssl_protocol_version_to_openssl() in both be-secure-openssl.c
> and fe-secure-openssl.c. Perhaps we should just move it to
> protocol_openssl.c?
Those functions have the same name, but not the same arguments,
so it'd take some refactoring to share any code.
regards, tom lane
Hi,
On 2021-12-16 21:13:20 +0100, Daniel Gustafsson wrote:
> > On 16 Dec 2021, at 19:22, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> > Having said that, I'm not seeing any such warning when I build
> > with openssl 1.1.1k on my own Mac, so I'm a bit confused why
> > Thomas sees it.
>
> Maybe it's dependant on macOS/XCode release? I see the warning on my Catalina
> laptop.
I think it might an x86_64 vs arm64 thing.
cd ~/build/postgres/dev-assert/vpath/src/common
$ cat protocol_openssl.s
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 12, 0 sdk_version 12, 3
.subsections_via_symbols
$ as -arch arm64 protocol_openssl.s -o protocol_openssl-arm64.o
$ as -arch x86_64 protocol_openssl.s -o protocol_openssl-x86_64.o
$ llvm-objdump -t protocol_openssl-x86_64.o
protocol_openssl-x86_64.o: file format mach-o 64-bit x86-64
SYMBOL TABLE:
$ llvm-objdump -t protocol_openssl-arm64.o
protocol_openssl-arm64.o: file format mach-o arm64
SYMBOL TABLE:
0000000000000000 l F __TEXT,__text ltmp0
For some reason arm64 ends up with that ltmp0 symbol, which presumably
prevents the warning from being triggered.
Greetings,
Andres Freund