Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jul 2017 03:06:57 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        Bryan Drewery <bdrewery@FreeBSD.org>
Cc:        Ed Maste <emaste@freebsd.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   Re: head -r320458 (e.g.) amd64 -> powerpc64 cross build's install32 during installworld: /usr/src/share/mk/bsd.linker.mk tried to use "head" when PATH provided no access (head is missing)
Message-ID:  <8F22B659-90DE-42E5-B4C6-75C9B9626462@dsl-only.net>
In-Reply-To: <d6971b8c-06a3-afdc-a6b0-788dbe0890f2@FreeBSD.org>
References:  <0E42D991-D350-4DC1-A683-CEA506167520@dsl-only.net> <AF2592BC-2409-4B73-A8A8-50C999957231@dsl-only.net> <d6971b8c-06a3-afdc-a6b0-788dbe0890f2@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
[ -r321493 installworld's use of "head" during lib32 installation is =
still
true for amd64 -> powerpc64 cross builds that uses =
devel/powerpc64-binutils
for ld: that ld is also used . LOCAL_ITOOLS adding head is still a
workaround.]

On 2017-Jul-5, at 12:36 PM, Bryan Drewery <bdrewery at FreeBSD.org> =
wrote:

> On 6/29/17 6:21 PM, Mark Millard wrote:
>> [I found where the tools are listed that are copied,
>> the list that is missing head.]
>>=20
>> On 2017-Jun-29, at 3:33 PM, Mark Millard <markmi at dsl-only.net> =
wrote:
>>=20
>>> [This is a clang targetting powerpc64 context from my
>>> experimentation efforts, not the normal gcc 4.2.1 context
>>> for powerpc64.]
>>>=20
>>> I break out the PATH into lines below to make it easier to scan.
>>> See the later "sh: head: not found" line and the even later ls
>>> of the directory with the x86-64 program directory in use: no
>>> "head" is present to find.
>>>=20
>>> --- install32 ---
>>> cd /usr/src/lib; MACHINE=3Dpowerpc MACHINE_ARCH=3Dpowerpc =
MAKEOBJDIRPREFIX=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerp=
c64/usr/src/world32
>>> =
PATH=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/=
tmp/legacy/usr/sbin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/le=
gacy/usr/bin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/le=
gacy/bin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/us=
r/sbin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/us=
r/bin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/le=
gacy/usr/sbin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/le=
gacy/usr/bin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/le=
gacy/bin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/us=
r/sbin
>>> =
:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/us=
r/bin
>>> :/tmp/install.7ljKosWa
>>> =
SYSROOT=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/s=
rc/lib32 LIBDIR=3D/usr/lib32 SHLIBDIR=3D/usr/lib32 DTRACE=3D"dtrace" =
make LD=3D"/usr/local/powerpc64-freebsd/bin/ld -m elf32ppc_fbsd" =
OBJCOPY=3D"/usr/local/powerpc64-freebsd/bin/objcopy" =
NM=3D"/usr/local/powerpc64-freebsd/bin/nm" -DCOMPAT_32BIT CC=3D"cc =
-target powerpc64-unknown-freebsd12.0 =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/tmp -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT =
-mcpu=3Dpowerpc -m32  =
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32  =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/lib32  -B/usr/local/powerpc64-freebsd/bin/ =
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32" CXX=3D"c++  -target powerpc64-unknown-freebsd12.0 =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/tmp -B/usr/local/powerpc64-freebsd/bin/  -DCOMPAT_32BIT =
-mcpu=3Dpowerpc -m32  -L/
>>> =
usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32/us=
r/lib32  =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/lib32  -B/usr/local/powerpc64-freebsd/bin/ =
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32" CPP=3D"cpp -target powerpc64-unknown-freebsd12.0 =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/tmp -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT =
-mcpu=3Dpowerpc -m32  =
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32  =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/lib32  -B/usr/local/powerpc64-freebsd/bin/ =
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32" -DNO_CPU_CFLAGS MK_CTF=3Dno -DNO_LINT MK_TESTS=3Dno =
MK_MAN=3Dno MK_HTML=3Dno  MK_TOOLCHAIN=3Dno   -DLIBRARIES_ONLY install
>>> sh: head: not found
>>> make[4]: "/usr/src/share/mk/bsd.linker.mk" line 47: Unable to =
determine linker type from XLD=3D/usr/local/powerpc64-freebsd/bin/ld
>>> *** [install32] Error code 1
>>>=20
>>> # ls -lT /tmp/install.7ljKosWa/
>>> total 6151
>>> -r-xr-xr-x    1 root  wheel    12592 Jun 29 14:02:46 2017 [
>>> -r-xr-xr-x    1 root  wheel   207320 Jun 29 14:02:46 2017 awk
>>> -r-xr-xr-x    1 root  wheel     8456 Jun 29 14:02:46 2017 cap_mkdb
>>> -r-xr-xr-x    1 root  wheel    13272 Jun 29 14:02:46 2017 cat
>>> . . .
>>> -r-xr-xr-x    1 root  wheel    57632 Jun 29 14:02:46 2017 find
>>> -r-xr-xr-x    1 root  wheel    99064 Jun 29 14:02:46 2017 grep
>>> -r-xr-xr-x    1 root  wheel    13360 Jun 29 14:02:46 2017 id
>>> . . .
>>>=20
>>> So there is no "head" to find. Below uses "find" instead
>>> to confirm the x86-64 ELF status:
>>>=20
>>> # file /tmp/install.7ljKosWa/find
>>> /tmp/install.7ljKosWa/find: ELF 64-bit LSB executable, x86-64, =
version 1 (FreeBSD), dynamically linked, interpreter =
/libexec/ld-elf.so.1, for FreeBSD 12.0 (1200036), FreeBSD-style, =
stripped
>>>=20
>>>=20
>>>=20
>>> =46rom /usr/src/share/mk/bsd.linker.mk :
>>>=20
>>> .if ${ld} =3D=3D "LD" || (${ld} =3D=3D "XLD" && ${XLD} !=3D ${LD})
>>> .if !defined(${X_}LINKER_TYPE) || !defined(${X_}LINKER_VERSION)
>>> _ld_version!=3D   ${${ld}} --version 2>/dev/null | head -n 1 || echo =
none
>>> .if ${_ld_version} =3D=3D "none"
>>> .error Unable to determine linker type from ${ld}=3D${${ld}}
>>> .endif
>>>=20
>>>=20
>>> Trying the failing line interactively (no PATH
>>> like above though):
>>>=20
>>> # /usr/local/powerpc64-freebsd/bin/ld --version 2>/dev/null | head =
-n 1 || echo none
>>> GNU ld (GNU Binutils) 2.28
>>>=20
>>> So /tmp/install.7ljKosWa/ just needed a copy of head
>>> in addition to what it already had.
>>=20
>> In /usr/src/Makefile.inc1 :
>>=20
>> ITOOLS=3D [ awk cap_mkdb cat chflags chmod chown cmp cp \
>>        date echo egrep find grep id install ${_install-info} \
>>        ln make mkdir mtree mv pwd_mkdb \
>>        rm sed services_mkdb sh strip sysctl test true uname wc =
${_zoneinfo} \
>>        ${LOCAL_ITOOLS}
>>=20
>> does not list "head" as a tool.
>>=20
>> But I can externally add it via LOCAL_ITOOLS use.
>>=20
>=20
> This change should not be needed.  We don't want to be running 'ld'
> during installworld.  The changes I made around this time should =
already
> cover the problem.  Is it still occurring on a more recent
> buildworld+installworld, without the ITOOLS change?

[Note: historically lld and the system ld do not work
overall for powerpc64 targeting. Thus the use of
devel/powerpc64-bintuils and its ld. ]

First the error text then the Build Context
follow.

See the text:

sh: head: not found
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 45: warning: =
"(/usr/local/powerpc64-freebsd/bin/ld --version || echo none) | head -n =
1" returned non-zero status
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 56: warning: Unknown =
linker from XLD=3D/usr/local/powerpc64-freebsd/bin/ld: , defaulting to =
bfd

in the later example. But first a clue about how
many times the problem happens:

# grep "head: not found" =
/root/sys_typescripts/typescript_make_powerpc64vtsc_nodebug_clang_altbinut=
ils-amd64-host-2017-07-26:01:58:10
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found
sh: head: not found

Those are for:

--- install32 ---
--- realinstall_subdir_libunbound ---
--- realinstall_subdir_libdialog ---
--- realinstall_subdir_libzpool ---
--- _libinstall ---
--- realinstall_subdir_libgssapi_krb5 ---
--- _installlinks ---

One of the examples:

--- realinstall_subdir_libgssapi_krb5 ---
install  -o root -g wheel -m 444    libgssapi_krb5.so.10.debug =
/usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils/usr/lib/debug/u=
sr/lib32/
install -l rs  libgssapi_krb5.so.10 =
/usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils/usr/lib32/libgs=
sapi_krb5.so
cd /usr/src/libexec/rtld-elf;  PROG=3Dld-elf32.so.1 MACHINE=3Dpowerpc =
MACHINE_ARCH=3Dpowerpc =
MAKEOBJDIRPREFIX=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerp=
c64/usr/src/world32 =
PATH=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/=
tmp/legacy/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.power=
pc64/usr/src/tmp/legacy/usr/bin:/usr/obj/powerpc64vtsc_clang_altbinutils/p=
owerpc.powerpc64/usr/src/tmp/legacy/bin:/usr/obj/powerpc64vtsc_clang_altbi=
nutils/powerpc.powerpc64/usr/src/tmp/usr/sbin:/usr/obj/powerpc64vtsc_clang=
_altbinutils/powerpc.powerpc64/usr/src/tmp/usr/bin:/usr/obj/powerpc64vtsc_=
clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/sbin:/usr/obj/p=
owerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/legacy/usr/bi=
n:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/tmp/l=
egacy/bin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/s=
rc/tmp/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64=
/usr/src/tmp/usr/bin:/tmp/install.n3WUdktD =
SYSROOT=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/s=
rc/lib32 LIBDIR=3D/usr/lib32 SHLIBDIR=3D/usr/lib32 DTRACE=3D"dtrace" =
make LD=3D"/usr/local/powerpc64-freebsd/bin/ld -m elf32ppc_fbsd" =
OBJCOPY=3D"/usr/local/powerpc64-freebsd/bin/objcopy" =
NM=3D"/usr/local/powerpc64-freebsd/bin/nm" -DCOMPAT_32BIT CC=3D"cc =
-target powerpc64-unknown-freebsd12.0 =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/tmp -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT =
-mcpu=3Dpowerpc -m32  =
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32  =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/lib32  -B/usr/local/powerpc64-freebsd/bin/ =
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32" CXX=3D"c++  -target powerpc64-unknown-freebsd12.0 =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/tmp -B/usr/local/powerpc64-freebsd/bin/  -DCOMPAT_32BIT =
-mcpu=3Dpowerpc -m32  =
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32  =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/lib32  -B/usr/local/powerpc64-freebsd/bin/ =
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32" CPP=3D"cpp -target powerpc64-unknown-freebsd12.0 =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/tmp -B/usr/local/powerpc64-freebsd/bin/ -DCOMPAT_32BIT =
-mcpu=3Dpowerpc -m32  =
-L/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32  =
--sysroot=3D/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr=
/src/lib32  -B/usr/local/powerpc64-freebsd/bin/ =
-B/usr/obj/powerpc64vtsc_clang_altbinutils/powerpc.powerpc64/usr/src/lib32=
/usr/lib32" -DNO_CPU_CFLAGS MK_CTF=3Dno -DNO_LINT MK_TESTS=3Dno =
MK_MAN=3Dno MK_HTML=3Dno  MK_TOOLCHAIN=3Dno   -DLIBRARIES_ONLY install
sh: head: not found
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 45: warning: =
"(/usr/local/powerpc64-freebsd/bin/ld --version || echo none) | head -n =
1" returned non-zero status
make[4]: "/usr/src/share/mk/bsd.linker.mk" line 56: warning: Unknown =
linker from XLD=3D/usr/local/powerpc64-freebsd/bin/ld: , defaulting to =
bfd




Build Context:

=
~/sys_build_scripts.amd64-host/make_powerpc64vtsc_nodebug_clang_altbinutil=
s-amd64-host.sh -j8 installworld =
DESTDIR=3D/usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils

# more =
~/sys_build_scripts.amd64-host/make_powerpc64vtsc_nodebug_clang_altbinutil=
s-amd64-host.sh
kldload -n filemon && \
script =
~/sys_typescripts/typescript_make_powerpc64vtsc_nodebug_clang_altbinutils-=
amd64-host-$(date +%Y-%m-%d:%H:%M:%S) \
env __MAKE_CONF=3D"/root/src.configs/make.conf" SRCCONF=3D"/dev/null" =
SRC_ENV_CONF=3D"/root/src.configs/src.conf.powerpc64-clang_altbinutils-boo=
tstrap.amd64-host" \
WITH_META_MODE=3Dyes \
MAKEOBJDIRPREFIX=3D"/usr/obj/powerpc64vtsc_clang_altbinutils" \

# more /root/src.configs/make.conf
CFLAGS.gcc+=3D -v

# more =
/root/src.configs/src.conf.powerpc64-clang_altbinutils-bootstrap.amd64-hos=
t
TO_TYPE=3Dpowerpc64
TOOLS_TO_TYPE=3D${TO_TYPE}
VERSION_CONTEXT=3D12.0
#
KERNCONF=3DGENERIC64vtsc-NODBG
TARGET=3Dpowerpc
.if ${.MAKE.LEVEL} =3D=3D 0
TARGET_ARCH=3D${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITH_CROSS_COMPILER=3D
WITHOUT_SYSTEM_COMPILER=3D
#
WITH_LIBCPLUSPLUS=3D
WITHOUT_BINUTILS_BOOTSTRAP=3D
WITH_ELFTOOLCHAIN_BOOTSTRAP=3D
WITH_CLANG_BOOTSTRAP=3D
WITH_CLANG=3D
WITH_CLANG_IS_CC=3D
WITH_CLANG_FULL=3D
WITH_CLANG_EXTRAS=3D
WITHOUT_LLD_BOOTSTRAP=3D
WITH_LLD=3D
WITHOUT_LLD_IS_LD=3D
WITH_LLDB=3D
#
WITH_BOOT=3D
WITH_LIB32=3D
#
WITHOUT_GCC_BOOTSTRAP=3D
WITHOUT_GCC=3D
WITHOUT_GCC_IS_CC=3D
WITHOUT_GNUCXX=3D
#
NO_WERROR=3D
MALLOC_PRODUCTION=3D
#
# Avoid converts between pointers to integer types with different sign =
[-Werror,-Wpointer-sign]
# and such from blocking the build.
WERROR=3D
#
WITH_REPRODUCIBLE_BUILD=3D
WITH_DEBUG_FILES=3D
#
#
# For TO (so-called "cross") stages . . .
# So-called-cross via ${TO_TYPE}-xtoolchain-gcc/${TO_TYPE}-gcc. . .
# TOOLS_TO_TYPE based on ${TO_TYPE}-xtoolchain-gcc related binutils. . .
#
CROSS_BINUTILS_PREFIX=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
.if ${.MAKE.LEVEL} =3D=3D 0
#
# Note: The WITH_CROSS_COMPILER picks up the CROSS_BINUTILS_PREFIX
#       binding automatically.
#
XAS=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
XAR=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
XNM=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/nm
XOBJCOPY=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objcopy
XOBJDUMP=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objdump
XRANLIB=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ranlib
XSIZE=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/size
#NO-SUCH: XSTRINGS=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/strings
XSTRINGS=3D/usr/local/bin/${TOOLS_TO_TYPE}-freebsd-strings
.export XAS
.export XAR
.export XNM
.export XOBJCOPY
.export XOBJDUMP
.export XRANLIB
.export XSIZE
.export XSTRINGS
XLD=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
.export XLD
.endif


Note: clang 5 still does not produce code that handles
thrown C++ exceptions for powerpc64: SIGSEGV results.
Still I can build a useful world and kernel for
powerpc64 based on how little throws C++ exceptions.
I experiment with such things.

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8F22B659-90DE-42E5-B4C6-75C9B9626462>