RE: buildworld FAILURE:googletest

From: Mark Millard <marklmi_at_yahoo.com>
Date: Thu, 31 Oct 2024 20:37:19 UTC
Larry Rosenman <ler_at_lerctr.org> wrote on
Date: Tue, 29 Oct 2024 04:20:10 UTC :

> Building /usr/obj/usr/src/amd64.amd64/secure/lib/libcrypto/RSA_sign.3.gz
> ld: error: undefined symbol: 
> testing::internal::MakeAndRegisterTestInfo(char const*, char const*, 
> char const*, char const*, testing::internal::CodeLocation, void const*, 
> void (*)(), void (*)(), testing::internal::TestFactoryBase*)
> >>> referenced by sample1_unittest.cc:76 
> >>> (/usr/src/contrib/googletest/googletest/samples/sample1_unittest.cc:76)
> >>> sample1_unittest.o:(_GLOBAL__sub_I_sample1_unittest.cc)
> >>> referenced by sample1_unittest.cc:100 
> >>> (/usr/src/contrib/googletest/googletest/samples/sample1_unittest.cc:100)
> >>> sample1_unittest.o:(_GLOBAL__sub_I_sample1_unittest.cc)
> >>> referenced by sample1_unittest.cc:103 
> >>> (/usr/src/contrib/googletest/googletest/samples/sample1_unittest.cc:103)
> >>> sample1_unittest.o:(_GLOBAL__sub_I_sample1_unittest.cc)
> >>> referenced 3 more times
> Building /usr/obj/usr/src/amd64.amd64/lib/libelf/gelf_newehdr.3.gz
> Building 
> /usr/obj/usr/src/amd64.amd64/secure/lib/libcrypto/RSA_sign_ASN1_OCTET_STRING.3.gz
> Building /usr/obj/usr/src/amd64.amd64/lib/libelf/gelf_newphdr.3.gz
> Building /usr/obj/usr/src/amd64.amd64/secure/lib/libcrypto/RSA_size.3.gz
> c++: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> Building /usr/obj/usr/src/amd64.amd64/kerberos5/libexec/hprop/hprop.o
> Building /usr/obj/usr/src/amd64.amd64/lib/libelf/gelf_update_ehdr.3.gz
> Building /usr/obj/usr/src/amd64.amd64/secure/lib/libcrypto/SCT_new.3.gz
> *** [sample1_unittest.full] Error code 1

This is the LLVM 18 -> LLVM 19 toolchain upgrade activity not removing all
the files from prior LLVM 18 use and then trying to use those files in
LLVM 19 toolchain contexts, where some of the content is incompatible. See
the 2024-Oct-24 :

https://lists.freebsd.org/archives/dev-commits-src-main/2024-October/027468.html

At the end it reports:

QUOTE
What I'm finding is that various .o files are not being rebuilt in the
META_MODE build. For example,

. . ./cddl/usr.sbin/zfsd/tests/zfsd_unittest.o
. . ./examples/tests/tests/googletest/sample*_unittest.o

have maintained old dates in the file system that predate the
recent update that switched to std::string use.

Systematic deletion of such .o files allowed META_MODE to then be
able to complete the buildworld . The removes were (across multiple
trees):

# rm /usr/obj/BUILDs/main-*-*dbg-clang/usr/main-src/*/cddl/usr.sbin/zfsd/tests/*.o
# rm /usr/obj/BUILDs/main-*-*dbg-clang/usr/main-src/*/share/examples/tests/tests/googletest*/*.o
# rm /usr/obj/BUILDs/main-*-*dbg-clang/usr/main-src/*/tests/sys/capsicum*/*.o
# rm /usr/obj/BUILDs/main-*-*dbg-clang/usr/main-src/*/tests/sys/fs/fusefs*/*.o
# rm /usr/obj/BUILDs/main-*-*dbg-clang/usr/main-src/*/lib/googletest/tests/*/*.o
END QUOTE

It is possible that my removes were not the minimal set needed. But every one
of those directories had an old, failing *.o file. No others did.

Note: My naming and such for "/usr/obj/BUILDs/main-*-*dbg-clang/usr/main-src/"
are not the defaults so take that part of the example text as just suggestive.

===
Mark Millard
marklmi at yahoo.com