Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Feb 2017 10:21:28 +0100
From:      "O. Hartmann" <ohartmann@walstatt.org>
To:        freebsd-poudriere@freebsd.org, freebsd-current@freebsd.org
Subject:   install jail from precompiled world fails due to different MAKEDIROBJPREFIX
Message-ID:  <20170201102128.5073182b@freyja.zeit4.iv.bundesimmobilien.de>

next in thread | raw e-mail | index | archive | help
For several projects managed with NanoBSD I need different source trees (10.3,
10-STABLE, 11-STABLE, CURRENT). The source resides in /foo/bar/CURRENT/src
or /foo/bar/10.3-RELEASE/src.

For the build of AARCH64 ports, I have also already built CURRENT for
arm64.aarch64. 

ARM64 buildworld is sensitive to compiler optimisation, libc fails to build
if -O3 is set (which is _my_ standard on AMD64, given in /etc/src.conf).
Since I do not want to have a waste of space, /foo/bar/CURRENT/src holds
CURRENT sources and with MAKEOBJDIRPREFIX=/foo/bar/CURRENT/obj/arm64 set a
conflicting libc issue (as mentioned above) can be avoided from a prebuild
AMD64 world. My thinking was, that "make TARGET=arm64 buildworld" will not
use /foo/bar/CURRENT/obj, but rather /foo/bar/CURRENT/obj/arm64.aarch64 as
the base for the resulting world, but this is a mistake. So,
setting MAKEOBJDIRPREFIX=/foo/bar/CURRENT/obj/arm64 is a way out of this
dilemma.

In any environment capable of taking MAKEOBJDIRPREFIX there is no problem,
but with poudriere, I have unexpected trouble.

I need to install the world for arm64.aarch64, therefore, I ran in the first
place the command as follows to install a jail(while
believeing /foo/bar/CURRENT/obj/arm64.aarch64 is the base of the world for
arm64 target):

poudriere jail -c -v head -j arm64 -m src=/foo/bar/CURRENT/src
-M /somewhere/in/the/tree

That fails, since /foo/bar/CURRENT/obj contains the AMD64 world
and /foo/bar/CURRENT/obj/arm64.aarch64 seems to be insufficient respected.

Wasn't the idea of /usr/src and /usr/obj to have one source tree, but different
trees for the resulting world and kernel? A "native" build on AMD64 doesn't go
into /usr/obj/amd64, it has its root at /usr/obj, but for the cross compiled
world, it is then /usr/obj/arm64.aarch64.

The problem then starts to get critical for poudriere. I neither do not want to
compile a fresh world via setting -m svn+https nor do I want to installed
precompiled binaries from remote. I already have(!) a successfully built word,
so all I need seems to apply the right delegatin of that what
"MAKEOBJDIRPREFIX" represents.

Am I missing here something or is poudriere not capable of handling this view?

Thank you in advance,

Oliver



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170201102128.5073182b>