Re: OpenSSL 3.0 for 14.0-RELEASE: issues with 1.x/3.x symbol clashing, ports linking against base OpenSSL, ports that don't compile/link against OpenSSL 3, etc

Kyle Evans <[email protected]>
Newsgroups gmane.os.freebsd.architechture
Message-ID <CACNAnaEYx9VUeMwVeZ=wN2yjUVmLxT-n_Kjk1wFW_O94SH09rg@mail.gmail.com>
On Thu, May 11, 2023 at 9:54 AM Enji Cooper <[email protected]> wrote:
>
>
> > On May 11, 2023, at 00:23, Antoine Brodin <[email protected]> wrote:
> >
> > On Thu, May 11, 2023 at 6:31 AM Pierre Pronchery
> > <[email protected]> wrote:
> >>
> >>                Hi everyone,
> >>
> >> It's been a long and tough fight, but I finally managed to complete a
> >> `make buildworld` on amd64 with the latest state of my work on OpenSSL
> >> 3; see https://github.com/freebsd/freebsd-src/pull/740 for a first draft
> >> of a pull-request via GitHub.
> >>
> >> I will probably not be able to work on this again until the DevSummit at
> >> BSDCan, so feel free to take it from there until then.
> >>
> >> HTH!
> >> -- khorben
> >
> > Thanks,  I have this error during buildworld:
> >
> > ===> secure/lib/libcrypto/modules/fips (all)
> > make[6]: /usr/obj/poudriere/data/src-openssl3/amd64.amd64/secure/lib/libcrypto/modules/fips/.depend,
> > 1: ignoring stale .depend for
> > /usr/obj/poudriere/data/src-openssl3/amd64.amd64/tmp/usr/lib/libcrypto.a
> > building shared library fips.so
> > cc -target x86_64-unknown-freebsd14.0
> > --sysroot=/usr/obj/poudriere/data/src-openssl3/amd64.amd64/tmp
> > -B/usr/obj/poudriere/data/src-openssl3/amd64.amd64/tmp/usr/bin
> > -Wl,-zrelro   -fstack-protector-strong -shared -Wl,-x
> > -Wl,--fatal-warnings -Wl,--warn-shared-textrel  -o fips.so.full
> > -Wl,-soname,fips.so fips_entry.pico fipsprov.pico self_test.pico
> > self_test_kats.pico  -lcrypto
> > ld: error: unable to find library -lcrypto
> > cc: error: linker command failed with exit code 1 (use -v to see invocation)
> > *** Error code 1
>
> Good find!
>
> The modules directory will likely need to be built in a later stage of world (after libcrypto has been installed). That, or LDFLAGS needs to be adjusted to find libcrypto in the build tree.
>

I suspect it's a fairly simple one, actually: move all of the parts
that actually build libcrypto into a subdir of secure/lib/libcrypto
and make sure there's a proper SUBDIR_DEPENDS_modules= libcrypto. The
module is built in secure/lib/libcrypto/Makefile, but I would guess
either it's racing the build of modules/ (SUBDIR) against the build of
the module in the parent Makefile, or it's just going to build the
SUBDIR first every time. I don't recall the exact behavior of make
here.

libcrypto is in _prebuild_libs, but I don't think we have any way you
can actually tell we're in the prebuild phase to avoid SUBDIR'ing in
the modules/ while we're doing the earlier build. If we did, the later
all pass should descend back into libcrypto/ and do nothing for the
lib itself but build the modules.

Thanks,

Kyle Evans
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.