This is a -j 6 buildworld context.

In the following sequence the -lcapsicum use when linking libcasper.so.0.full 
does not use /usr/obj/usr/src/tmp/lib/libcapsicum.so because that file and the 
link to it at /usr/obj/usr/src/tmp/usr/lib/libcapsicum.so are only created 
(installed) later. (See the sequence later below.)

This can lead to use of /lib/libcapsicum.so instead if it is found, which for 
my context it is. In my case of updating from 11.0-CURRENT from back on 
2015-Apr-18 /lib/libcapsicum.so use ends up complaining about undefined 
references, such as to nvlist_getf_binary that existed back then but do not 
now. That is what exposed the time-order problem.


> --- all_subdir_libcasper ---
> /usr/local/bin/powerpc64-portbld-freebsd11.0-gcc  
> -L/usr/obj/usr/src/tmp/usr/lib/. -L/usr/obj/usr/src/lib/libc++/. -L/usr/lib/. 
> -fstack-protector-strong -shared -Wl,-x -Wl,--fatal-warnings 
> -Wl,--warn-shared-textrel  -o libcasper.so.0.full -Wl,-soname,libcasper.so.0  
> `NM='/usr/local/powerpc64-freebsd/bin/nm' NMFLAGS='' lorder libcasper.So | 
> tsort -q`  -lcapsicum  -lnv  -lpjdlog
. . .
> ===> lib/libcapsicum (install)
> --- _libinstall ---
> --- _INCSINS ---
> --- _libinstall ---
> sh /usr/src/tools/install.sh -C -o root -g wheel -m 444   libcapsicum.a 
> /usr/obj/usr/src/tmp/usr/lib/
> --- _INCSINS ---
> sh /usr/src/tools/install.sh -C -o root -g wheel -m 444  
> /usr/src/lib/libcapsicum/libcapsicum.h 
> /usr/src/lib/libcapsicum/libcapsicum_dns.h 
> /usr/src/lib/libcapsicum/libcapsicum_grp.h 
> /usr/src/lib/libcapsicum/libcapsicum_pwd.h 
> /usr/src/lib/libcapsicum/libcapsicum_random.h 
> /usr/src/lib/libcapsicum/libcapsicum_service.h 
> /usr/src/lib/libcapsicum/libcapsicum_sysctl.h 
> /usr/obj/usr/src/tmp/usr/include/
> --- _libinstall ---
> sh /usr/src/tools/install.sh -s -o root -g wheel -m 444     libcapsicum.so.0 
> /usr/obj/usr/src/tmp/lib/
> sh /usr/src/tools/install.sh -T debug -o root -g wheel -m 444    
> libcapsicum.so.0.debug /usr/obj/usr/src/tmp/usr/lib/debug/lib/
> sh /usr/src/tools/install.sh -l rs /usr/obj/usr/src/tmp/lib/libcapsicum.so.0  
> /usr/obj/usr/src/tmp/usr/lib/libcapsicum.so

The -L's ending with /.'s are from my /etc/src.conf . They are associated with 
trying to self-build on a powerpc64 PowerMac using only 
powerpc64-xtoolchain-gcc's powerpc64-gcc WITH_LIBCPLUSPLUS: powerpc64-gcc is 
acting as both the host toolchain and the CROSS_TOOLCHAIN. No 4.2.1 gcc is 
present. I know this is not a usual way of doing things. There may be better 
ways. But if I manage to expose some missing dependency tracking some good came 
of it.

The make command was:

> make -j 6 WITH_FAST_DEPEND= CROSS_TOOLCHAIN=powerpc64-gcc WITH_LIBCPLUSPLUS= 
> WITHOUT_CLANG_BOOTSTRAP= WITH_CLANG= WITH_CLANG_IS_CC= WITH_LLDB= 
> WITHOUT_GCC_BOOTSTRAP= WITHOUT_GCC= WITHOUT_GNUCXX= WITHOUT_BOOT= 
> WITHOUT_LIB32= buildworld buildkernel KERNCONF=GENERIC64vtsc-NODEBUG 
> TARGET=powerpc TARGET_ARCH=powerpc64


Context details if you care:

> # freebsd-version -ku; uname -aKU
> 11.0-CURRENT
> 11.0-CURRENT
> FreeBSD FBSDG5C0 11.0-CURRENT FreeBSD 11.0-CURRENT #12 r281630M: Sat Apr 18 
> 01:15:13 PDT 2015     
> root@FBSDG5C0:/usr/obj/usr/src/sys/GENERIC64vtsc-NODEBUG  powerpc 1100070 
> 1100070

I am attempting an update after having been away from the PowerMacs for months.

> # svnlite info /usr/src
> Path: /usr/src
> Working Copy Root Path: /usr/src
> URL: https://svn0.us-west.freebsd.org/base/head
> Relative URL: ^/head
> Repository Root: https://svn0.us-west.freebsd.org/base
> Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
> Revision: 291443
> Node Kind: directory
> Schedule: normal
> Last Changed Author: nwhitehorn
> Last Changed Rev: 291442
> Last Changed Date: 2015-11-28 23:16:08 -0800 (Sat, 28 Nov 2015)

> # more /etc/src.conf
> NO_WERROR=
> WITH_DEBUG=
> WITH_DEBUG_FILES=
> MALLOC_PRODUCTION=
> CC=/usr/local/bin/powerpc64-portbld-freebsd11.0-gcc
> CXX=/usr/local/bin/powerpc64-portbld-freebsd11.0-g++
> CPP=/usr/local/bin/powerpc64-portbld-freebsd11.0-cpp
> CROSS_BINUTILS_PREFIX=/usr/local/powerpc64-freebsd/bin/
> X_COMPILER_TYPE=gcc
> DEPFLAGS+=-isystem /usr/obj/usr/src/tmp/usr/include/. 
> -I/usr/obj/usr/src/tmp/usr/include/c++/v1/. -I/usr/include/c++/v1/.
> L/usr/obj/usr/src/tmp/usr/lib/lib32/.
> CFLAGS+=-isystem /usr/obj/usr/src/tmp/usr/include/. 
> -L/usr/obj/usr/src/tmp/usr/lib/. -L/usr/obj/usr/src/tmp/lib/.
> LDFLAGS+=-L/usr/obj/usr/src/tmp/usr/lib/. -L/usr/obj/usr/src/tmp/lib/.
> CXXFLAGS+=-isystem /usr/obj/usr/src/tmp/usr/include/. 
> -I/usr/obj/usr/src/tmp/usr/include/c++/v1/. -std=gnu++11 
> -L/usr/obj/usr/src/lib/libc++/.
> LDFLAGS+=-L/usr/obj/usr/src/lib/libc++/.
> CXXFLAGS+=-I/usr/include/c++/v1/. -std=gnu++11 -L/usr/lib/.
> LDFLAGS+=-L/usr/lib/.

> # svnlite info /usr/ports/
> Path: /usr/ports
> Working Copy Root Path: /usr/ports
> URL: https://svn0.us-west.freebsd.org/ports/head
> Relative URL: ^/head
> Repository Root: https://svn0.us-west.freebsd.org/ports
> Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
> Revision: 402562
> Node Kind: directory
> Schedule: normal
> Last Changed Author: rene
> Last Changed Rev: 402562
> Last Changed Date: 2015-11-28 15:08:03 -0800 (Sat, 28 Nov 2015)

===
Mark Millard
markmi at dsl-only.net


_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "[email protected]"

Reply via email to