Date: Mon, 8 Dec 2014 09:47:17 -0800 From: Alfred Perlstein <alfred@freebsd.org> To: Garrett Cooper <yaneurabeya@gmail.com> Cc: FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Re: cross installing freebsd? Message-ID: <D52BA30D-1DF9-4CBF-BB1F-FE9C9B681FE3@freebsd.org> In-Reply-To: <26F569E9-3E70-4CE7-810F-5427FF1C7EA0@gmail.com> References: <5483AE21.8090306@freebsd.org> <D925B118-113F-42CB-8F1F-6B9087F0CF4D@gmail.com> <613884DA-F978-4D9F-9E37-D39581EFEA61@freebsd.org> <26F569E9-3E70-4CE7-810F-5427FF1C7EA0@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Dec 8, 2014, at 2:04 AM, Garrett Cooper wrote: > On Dec 7, 2014, at 21:48, Alfred Perlstein <alfred@freebsd.org> wrote: >=20 >>> Hi Alfred, >>> Reading your examples... >>> 1. I=92m wondering if we should formalize CROSS_BUILD_TESTING in = Makefile.inc1: >>>=20 >>> 188 .if ${MACHINE} =3D=3D ${TARGET} && ${MACHINE_ARCH} =3D=3D = ${TARGET_ARCH} && !defined(CROSS_BUILD_TESTING) >>> 189 OBJTREE=3D ${MAKEOBJDIRPREFIX} >>> 190 .else >>> 191 OBJTREE=3D ${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH} >>> 192 .endif >>>=20 >>> 2. MAKEWHATIS seems like it should be added to ITOOLS. Do you = agree? >>> 3. Seems like strip should be added to ITOOLS if = CROSS_BUILD_TESTING is defined (or at the very least LOCAL_ITOOLS). >>> 4. Why did you need to explicitly define the path to INSTALL? >>> Thanks! >>=20 >> To be honest I have a gist as to what you're saying but I think the = build is suffering from shibboleth-itis. Meaning it's not serviceable = unless you're intimately familiar with it=85 >=20 > Right. I didn=92t know about all of these magic things until I started = reading the Makefiles :). >=20 >> I *guess* that ITOOLS or maybe LOCAL_ITOOLS means programs needed to = installworld/installkernel? >=20 > Yes. Basically for things that can be replaced while make installworld = is run, or as Makefile.inc1 says=85 >=20 > "# Required install tools to be saved in a scratch dir for safety.=94 >=20 > All the libraries for the tools are backed up so if the tools get = replaced while make distributeworld/installworld is running, your system = won=92t be hosed (that=92s why make installworld works for me the = majority of the time, if cp gets replaced and ABI changes =97 not = always, but oftentimes). >=20 >> If so, then yes, makewhatis needs to be added to that. >=20 > Review opened for that issue: https://reviews.freebsd.org/D1280 >=20 >> As far as everything else written: >> no idea what "CROSS_BUILD_TESTING" means, it's not documented = anywhere I can see in the makefile. >=20 > It=92s something that ru@ introduced (probably to do comparisons = between architectures). I haven=92t quite tracked down why make = tinderbox works with TARGET_ARCH/TARGET set to the host values, but I=92ll= probably figure it out soon. >=20 >> I can't decode if there will be a target that "just works" for doing = a cross-install, will there be? What will it be named and how will = people invoke it? >>=20 >=20 >> Can we have cross-installworld and cross-installkernel targets = please? >=20 > Setting TARGET/TARGET_ARCH should be sufficient in an ideal world. = Jumping through hoops to do this with a myriad of variables which should = be automatically determined via sane defaults seems wrong/unusable=85 = there shouldn=92t be a reason for why we need to introduce autoconf = variable style hell for building/installing world, unless someone is = intentionally skating around sane defaults. >=20 > I think that creating more custom targets will only complicate/muddle = the build process, and create more potential for bugs like the one that = I just addressed with xdev. I still don't see how I am supposed to do this: ssh amd64_machine export TARGET=3Di386 cd /usr/trees/freebsd make -j8 build world && make -j8 buildkernel ssh i386box mount amd64_machine:/usr/trees/freebsd /usr/trees/freebsd mount amd64_machine:/usr/obj /usr/obj cd /usr/trees/freebsd make installkernel installworld That last step "make installkernel installworld" will bomb out unless I = set those vars CC=3D/usr/bin/cc, MAKEWHATIS=3D/usr/bin/makewhatis, = STRIPBIN=3D/usr/bin/strip, INSTALL=3D/usr/bin/install all over the = place. Why is there not a target for this that just knows the right = things to set? -Alfred=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D52BA30D-1DF9-4CBF-BB1F-FE9C9B681FE3>