Date: Wed, 9 Jul 2014 02:06:33 +0200 From: Baptiste Daroussin <bapt@FreeBSD.org> To: Warner Losh <imp@bsdimp.com> Cc: sbruno@FreeBSD.org, Ian Lepore <ian@FreeBSD.org>, freebsd-arch@FreeBSD.org Subject: Re: Total confusion over toolchain/xdev behavior Message-ID: <20140709000628.GA56040@ivaldir.etoilebsd.net> In-Reply-To: <DB29AF3B-C761-4112-A4F6-6CF20159C2E1@bsdimp.com> References: <1404688077.1059.115.camel@bruno> <1404766292.65432.43.camel@revolution.hippie.lan> <20B72004-1499-4F99-A7C7-13173C50C7C6@bsdimp.com> <20140707235237.GG97203@ivaldir.etoilebsd.net> <DB29AF3B-C761-4112-A4F6-6CF20159C2E1@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--nFreZHaLTZJo0R7j Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jul 07, 2014 at 07:29:01PM -0600, Warner Losh wrote: >=20 > On Jul 7, 2014, at 5:52 PM, Baptiste Daroussin <bapt@FreeBSD.org> wrote: >=20 > > On Mon, Jul 07, 2014 at 05:27:25PM -0600, Warner Losh wrote: > >>=20 > >> On Jul 7, 2014, at 2:51 PM, Ian Lepore <ian@FreeBSD.org> wrote: > >>=20 > >>> On Sun, 2014-07-06 at 16:07 -0700, Sean Bruno wrote: > >>>> Objective: install an xcompile toolchain into a jail for use by > >>>> poudriere during arm/mips/sparc/power ports pkgs builds. The build > >>>> should be possible from a non-root user. > >>>>=20 > >>>> As far as I can tell, the xdev target is completely busted for non-c= lang > >>>> arch's right now as it tries to build clang no matter what I do. Its > >>>> missing some pretty key documentation to making it work correctly, s= o a > >>>> lot of my attempts have been "guess and check" with verbose make. > >>>>=20 > >>>> --------------------------------------------------------------------= --- > >>>> Attempt #1: > >>>> I have been trying non-root xdev builds: > >>>> MAKEOBJDIRPREFIX=3D/var/tmp make -s -j8 xdev XDEV=3Dmips XDEV_ARCH= =3Dmips > >>>> -- dies because it tries to compile CLANG. > >>>> --------------------------------------------------------------------= --- > >>>>=20 > >>>> Attempt #2: > >>>> Apply a hack from Baptiste that isn't quite right, but at least gets > >>>> farther, note the missing variable causing "//usr/mips-freebsd" > >>>> http://people.freebsd.org/~sbruno/src.ops.mk.diff > >>>>=20 > >>>> =3D=3D=3D> gnu/usr.bin/cc/gcov (all) > >>>> mtree populating //usr/mips-freebsd > >>>> mkdir: //usr/mips-freebsd: Permission denied > >>>> *** Error code 1 > >>>> --------------------------------------------------------------------= --- > >>>>=20 > >>>> Attempt #3: Add XDTP > >>>> MAKEOBJDIRPREFIX=3D/var/tmp make -s xdev XDEV=3Dmips XDEV_ARCH=3Dmips > >>>> XDTP=3D/var/tmp/mips_cc > >>>>=20 > >>>> Try defining a XDTP=3D/var/tmp/mips_cc with the above patch applied,= get's > >>>> a bit farther but compile failure in locating critical include files. > >>>>=20 > >>>> =3D=3D=3D> gnu/lib/libstdc++ (obj,depend,all,install) > >>>> In file included from /home/sbruno/bsd/fbsd_head/gnu/lib/libstdc > >>>> ++/../../../contrib/libstdc++/src/bitmap_allocator.cc:30: > >>>> /home/sbruno/bsd/fbsd_head/gnu/lib/libstdc++/../../../contrib/libstdc > >>>> ++/include/ext/bitmap_allocator.h:37:54: error: cstddef: No such fil= e or > >>>> directory > >>>> --------------------------------------------------------------------= --- > >>>>=20 > >>>> Attempt #4: Add the additional XDDESTDIR > >>>> MAKEOBJDIRPREFIX=3D/var/tmp make -s xdev XDEV=3Dmips XDEV_ARCH=3Dmips > >>>> XDTP=3D/var/tmp/mips_cc XDESTDIR=3D/var/tmp/mips_dst > >>>> -- Same results as attempt #3 > >>>> --------------------------------------------------------------------= --- > >>>>=20 > >>>> Even attempting to do stuff for *clang* enabled architectures bails > >>>> because its not respecting prefixes: > >>>> MAKEOBJDIRPREFIX=3D/var/tmp make -s -j 8 xdev XDEV=3Darm XDEV_ARCH= =3Darmv6 > >>>> -- bails because it tries to: > >>>> =3D=3D=3D> usr.bin/clang/tblgen (all) > >>>> mtree populating //usr/armv6-freebsd > >>>> mtree: etc/ntp: Permission denied > >>>> _xi-cross-tools > >>>> =3D=3D=3D> xdev gnu/usr.bin/binutils (install) > >>>> =3D=3D=3D> gnu/usr.bin/binutils/libiberty (install) > >>>> =3D=3D=3D> gnu/usr.bin/binutils/libbfd (install) > >>>> =3D=3D=3D> gnu/usr.bin/binutils/libopcodes (install) > >>>> =3D=3D=3D> gnu/usr.bin/binutils/libbinutils (install) > >>>> =3D=3D=3D> gnu/usr.bin/binutils/addr2line (install) > >>>> =3D=3D=3D> gnu/usr.bin/binutils/as (install) > >>>> =3D=3D=3D> gnu/usr.bin/binutils/ld (install) > >>>> install: //usr/armv6-freebsd/usr/bin/ld: Permission denied > >>>> *** Error code 71 > >>>>=20 > >>>> --------------------------------------------------------------------= --- > >>>> Adding XDTP and XDDESTDIR results in a little more progress but obvi= ous > >>>> failures to attempt and install things directly into my host system: > >>>>=20 > >>>> MAKEOBJDIRPREFIX=3D/var/tmp make -s xdev XDEV=3Darm XDEV_ARCH=3Darmv6 > >>>> XDDESTDIR=3D/var/tmp/arm_cc XDTP=3D/var/tmp/armv6_cc > >>>> =3D=3D=3D> secure/lib/libssh (install) > >>>> =3D=3D=3D> usr.bin/lex/lib (obj,depend,all,install) > >>>> mkdir: ../../../../usr: Permission denied > >>>> *** Error code 1 > >>>>=20 > >>>> Stop. > >>>> make[1]: stopped in /home/sbruno/bsd/fbsd_head > >>>> *** Error code 1 > >>>>=20 > >>>> Stop. > >>>> make: stopped in /home/sbruno/bsd/fbsd_head > >>>=20 > >>> It looks to me like the permission part of the problem is being caused > >>> by a lack of DESTDIR=3D. Without that, it's trying to install to /us= r and > >>> you don't have permission for that. Maybe the confusion is because t= he > >>> xdev target inherently builds-and-installs, unlike most other targets > >>> that separate those two actions. > >>=20 > >> OK. After some detective work, it looks like libstdc++ needs to be don= e before libsupc++ is done. I=E2=80=99ve added this dependency in r268377 a= nd was able to do a full xdev build with a clean obj dir: > >>=20 > >> rm -rf $HOME/F $MAKEOBJDIRPREFIX/mips-freebsd > >> mkdir $HOME/F > >> make xdev DESTDIR=3D$HOME/F XDEV=3Dmips XDEV_ARCH=3Dmips WITHOUT_CLAN= G=3Dt WITHOUT_CLANG_BOOTSTRAP=3Dt WITH_GCC=3Dt WITH_GCC_BOOTSTRAP=3Dt WITH_= GNUCXX=3Dt -j 20 > >=20 > > We can avoid most of the above by using a patch like the following: > > http://people.freebsd.org/~bapt/Makefile.inc1.diff > > Extending the same thing xi-cross-tools and xb-cross-tools (expect the > > WITH_GNUCXX=3Dt because it it not set in src.opts.mk when it imho shoul= d.) >=20 > The patch looks good to my eye. Did you want me to expand it, or do you w= ant to > do the honors? >=20 > About the rest=E2=80=A6 Yea, you may be right=E2=80=A6. MK_GNUCXX is an = odd duck, and that=E2=80=99s > likely the problem that should be fixed in a different way. It is really = an internal > variable that should be set based on the actual compiler type (possibly w= ith an > override for the odd-duck pair of clang and libstdc++ which may not be wo= rth > supporting). It is telling us we=E2=80=99re doing something horribly wron= g and we should listen > to that rather than add another compiler-related kludge to the build syst= em. I=E2=80=99ll work > on that bit. >=20 > Also an aside: The horribly long command line was to try to get to the bo= ttom of > the breakage, not to promote it as the proper way of doing things. I haven't committed because it isn't complete yet :) I have updated it to the following: http://people.freebsd.org/~bapt/Makefile.inc1.diff but it is not enough as I end up with: /tmp/tmips//usr/mips64-freebsd/usr/bin/ld: cannot find -lsupc++ So it goes further but it is not yet enough regards, Bapt --nFreZHaLTZJo0R7j Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAlO8h4QACgkQ8kTtMUmk6Ez+VgCeLY/j9EGjjCLGFlD8cW9fm459 ijUAoKMiogHH5CHO0T2ysw3gR525xpiM =Bbmx -----END PGP SIGNATURE----- --nFreZHaLTZJo0R7j--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140709000628.GA56040>