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

From: Pierre Pronchery <pierre_at_freebsdfoundation.org>
Date: Mon, 29 May 2023 19:53:44 UTC
Hi Kyle, everyone,

Thanks for the hints!

Unfortunately I am still not able to make your solution work. With
"SUBDIR_DEPEND_modules= libcrypto" (no "S") and "SUBDIR_PARALLEL=" the
build fails with:
"make[4]: make[4]: don't know how to make
all_subdir_secure/lib/libcrypto/libcrypto. Stop"

I'm looking at other places in the source tree to try to reproduce the
behaviour we want.

In the meantime what I did is to remove LIBADD=crypto in
modules/Makefile.inc, but I am not sure yet if this is going to work or not.

Cheers,
-- Pierre

On Thu, May 11, 2023 at 9:45 AM Kyle Evans <kevans@freebsd.org> wrote:

> On Thu, May 11, 2023 at 9:54 AM Enji Cooper <yaneurabeya@gmail.com> wrote:
> >
> >
> > > On May 11, 2023, at 00:23, Antoine Brodin <antoine@freebsd.org> wrote:
> > >
> > > On Thu, May 11, 2023 at 6:31 AM Pierre Pronchery
> > > <pierre@freebsdfoundation.org> 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
>