head/kerberos5/lib/libkrb5/Makefile vs. it finding /usr/obj/usr/src/tmp/usr/lib/libprivateheimipcc.so

Mark Millard markmi at dsl-only.net
Tue Nov 24 22:10:53 UTC 2015


On 2015-Nov-24, at 7:49 AM, Mark Millard <markmi at dsl-only.net> wrote:

> I had been away from the PowerMac's that I have access to for more than 5 months. When I tried my prior rebuild procedure to get from:
> 
> # 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 at FBSDG5C0:/usr/obj/usr/src/sys/GENERIC64vtsc-NODEBUG  powerpc 1100070 1100070
> 
> to:
> 
> # 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: 291085
> Node Kind: directory
> Schedule: normal
> Last Changed Author: cem
> Last Changed Rev: 291085
> Last Changed Date: 2015-11-19 11:53:19 -0800 (Thu, 19 Nov 2015)
> 
> it stopped based on:
> 
> --- libkrb5.so.11.full ---
> /usr/local/bin/powerpc64-freebsd-ld: cannot find -lprivateheimipcc
> collect2: error: ld returned 1 exit status
> *** [libkrb5.so.11.full] Error code 1
> 
> make[4]: stopped in /usr/src/kerberos5/lib/libkrb5
> 1 error
> . . .
> 
> That was from the command:
> 
> --- libkrb5.so.11.full ---
> building shared library libkrb5.so.11
> /usr/local/bin/powerpc64-portbld-freebsd11.0-gcc -Wl,--no-undefined -Wl,--version-script=/usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/krb5/version-script.map -fstack-protector-strong -shared -Wl,-x -Wl,--fatal-warnings -Wl,--warn-shared-textrel  -o libkrb5.so.11.full -Wl,-soname,libkrb5.so.11  `NM='/usr/local/powerpc64-freebsd/bin/nm' NMFLAGS='' lorder acache.So acl.So add_et_list.So addr_families.So aname_to_localname.So appdefault.So asn1_glue.So auth_context.So build_ap_req.So build_auth.So cache.So changepw.So codec.So config_file.So constants.So context.So convert_creds.So copy_host_realm.So crc.So creds.So crypto-aes.So crypto-algs.So crypto-arcfour.So crypto-des-common.So crypto-des.So crypto-des3.So crypto-evp.So crypto-null.So crypto-pk.So crypto-rand.So crypto.So data.So deprecated.So digest.So doxygen.So eai_to_heim_errno.So error_string.So expand_hostname.So expand_path.So fcache.So free.So free_host_realm.So generate_seq_number.So generate_subkey.So get_addrs.So get_cred.So get_default_principal.So get_default_realm.So get_for_creds.So get_host_realm.So get_in_tkt.So get_port.So init_creds.So init_creds_pw.So kcm.So keyblock.So keytab.So keytab_any.So keytab_file.So keytab_keyfile.So keytab_memory.So krbhst.So kuserok.So log.So mcache.So misc.So mit_glue.So mk_error.So mk_priv.So mk_rep.So mk_req.So mk_req_ext.So mk_safe.So n-fold.So net_read.So net_write.So pac.So padata.So pcache.So pkinit.So plugin.So principal.So prog_setup.So prompter_posix.So rd_cred.So rd_error.So rd_priv.So rd_rep.So rd_req.So rd_safe.So read_message.So recvauth.So replay.So salt-aes.So salt-arcfour.So salt-des.So salt-des3.So salt.So scache.So send_to_kdc.So sendauth.So set_default_realm.So sock_principal.So store-int.So store.So store_emem.So store_fd.So store_mem.So ticket.So time.So transited.So verify_init.So verify_user.So version.So warn.So write_message.So heim_err.So k524_err.So krb5_err.So krb_err.So | tsort -q`  -lasn1  -lcom_err  -lcrypt  -lcrypto  -lhx509  -lroken  -lwind  -lheimbase -lprivateheimipcc
> 
> where
> 
> # ls -al /usr/obj/usr/src/tmp/usr/lib/libprivateh*
> -rwxr-xr-x  1 root  wheel  11398 Nov 23 22:54 /usr/obj/usr/src/tmp/usr/lib/libprivateheimipcc.a
> lrwxr-xr-x  1 root  wheel     24 Nov 23 22:54 /usr/obj/usr/src/tmp/usr/lib/libprivateheimipcc.so -> libprivateheimipcc.so.11
> -rwxr-xr-x  1 root  wheel  17736 Nov 23 22:54 /usr/obj/usr/src/tmp/usr/lib/libprivateheimipcc.so.11
> 
> Note the lack of -L's or anything indicating to look in /usr/obj/usr/src/tmp/usr/lib/ and note  below that LDFLAGS and LIBADD in head/kerberos5/lib/libkrb5/Makefile override whatever might be in /etc/src.conf (via use of plain "="):
> 
> # $FreeBSD: head/kerberos5/lib/libkrb5/Makefile 275087 2014-11-25 22:43:17Z bapt $
> 
> LIB=    krb5
> LDFLAGS=        -Wl,--no-undefined
> VERSION_MAP= ${KRB5DIR}/lib/krb5/version-script.map
> LIBADD= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc
> . . .
> 
> That seems to leave only SSP_CFLAGS in head/share/mk/bsd.lib.mk as a place for indicating to look in /usr/obj/usr/src/tmp/usr/lib/ (more use of just "="):
> 
> 
> #       from: @(#)bsd.lib.mk    5.26 (Berkeley) 5/2/91
> # $FreeBSD: head/share/mk/bsd.lib.mk 291046 2015-11-19 00:45:36Z bdrewery $
> #
> . . .
> .if defined(LIB_CXX)
> LIB=    ${LIB_CXX}
> _LD=    ${CXX}
> .else
> _LD=    ${CC}
> .endif
> . . .
> SOLINKOPTS=     -shared -Wl,-x
> .if !defined(ALLOW_SHARED_TEXTREL)
> .if defined(LD_FATAL_WARNINGS) && ${LD_FATAL_WARNINGS} == "no"
> SOLINKOPTS+=    -Wl,--no-fatal-warnings
> .else
> SOLINKOPTS+=    -Wl,--fatal-warnings
> .endif
> SOLINKOPTS+=    -Wl,--warn-shared-textrel
> .endif
> . . .
> ${SHLIB_NAME_FULL}: ${SOBJS}
>        @${ECHO} building shared library ${SHLIB_NAME}
>        @rm -f ${SHLIB_NAME} ${SHLIB_LINK}
> .if defined(SHLIB_LINK) && !commands(${SHLIB_LINK:R}.ld)
>        @${INSTALL_SYMLINK} ${SHLIB_NAME} ${SHLIB_LINK}
> .endif
>        ${_LD:N${CCACHE_BIN}} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
>            -o ${.TARGET} -Wl,-soname,${SONAME} \
>            `NM='${NM}' NMFLAGS='${NMFLAGS}' lorder ${SOBJS} | tsort -q` ${LDADD}
> .if ${MK_CTF} != "no"
>        ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS}
> .endif
> . . .
> 
> 

In my note I should have also reported the make command (powerpc64 host CROSS_TOOLCHAIN based self-cross-build) and related material:

make -j 8 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= \
WITH_LIB32= \
buildworld buildkernel \
KERNCONF=GENERIC64vtsc-NODEBUG \
TARGET=powerpc TARGET_ARCH=powerpc64

and also that the powerpc64-gcc involved still dates back to the 4.9.1 days. It was just a quick attempt to see if I could build the modern 11.0-CURRENT materials while I happen to be around the PowerMacs for a bit.

/etc/src.conf had:

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/.
CFLAGS+=-isystem /usr/obj/usr/src/tmp/usr/include/. -L/usr/obj/usr/src/tmp/usr/lib/. -L/usr/obj/usr/
src/tmp/usr/lib/lib32/.
CXXFLAGS+=-isystem /usr/obj/usr/src/tmp/usr/include/. -I/usr/obj/usr/src/tmp/usr/include/c++/v1/. -s
td=gnu++11 -L/usr/obj/usr/src/lib/libc++/. -L/usr/obj/usr/src/lib32/usr/lib/lib32/.

This is a hack for a powerpc64 self-hosted cross-toolchain-based build-for-self but I had been using it back in April and before. That suggests that libprivateheimipcc.so's handling changed such that it is no longer found automatically for such a context. (Or it did not used to be involved at all --I've not checked.)


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




More information about the freebsd-toolchain mailing list