Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Aug 2004 13:28:03 +0300
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Peter Jeremy <PeterJeremy@optushome.com.au>
Cc:        current@FreeBSD.org
Subject:   Re: World broken in stage 1.1
Message-ID:  <20040811102803.GD84908@ip.net.ua>
In-Reply-To: <20040811094238.GB423@cirb503493.alcatel.com.au>
References:  <20040810231044.GA70020@xor.obsecurity.org> <20040811061202.GA80234@ip.net.ua> <20040811065912.GA95263@xor.obsecurity.org> <20040811080350.GK80234@ip.net.ua> <20040811094238.GB423@cirb503493.alcatel.com.au>

next in thread | previous in thread | raw e-mail | index | archive | help

--qGV0fN9tzfkG3CxV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hi Peter,

On Wed, Aug 11, 2004 at 07:42:38PM +1000, Peter Jeremy wrote:
> On Wed, 2004-Aug-11 11:03:50 +0300, Ruslan Ermilov wrote:
> >Trying to set MAKEOBJDIRPREFIX in /etc/make.conf and attempting to build=
world
> >RELENG_4 on a 4.x machine similarly fails right away.
>=20
> I have a script that run on RELENG_4 and does
> make MAKEOBJDIRPREFIX=3D/usr/obj/k7 CPUTYPE=3Dk7 buildworld >buildworld.k=
7 2>&1 &
> make MAKEOBJDIRPREFIX=3D/usr/obj/i486 CPUTYPE=3Di486 buildworld >buildwor=
ld.i486 2>&1 &
> make MAKEOBJDIRPREFIX=3D/usr/obj/i586 CPUTYPE=3Di586/mmx buildworld >buil=
dworld.i586 2>&1 &
>=20
> This worked perfectly when I tried it on 1st August - at least the
> system compiled, installed and has been running since last weekend.  I
> have another -STABLE system that has MAKEOBJDIRPREFIX in
> /etc/make.conf and runs build{world,kernel} happily every night.  I
> admit I haven't tried using MAKEOBJDIRPREFIX on -CURRENT lately.
>=20
> Overall, I find it annoying that it is no longer possible to embed all
> the buildworld customisations in /etc/make.conf.
>=20
Did you read all my replies in this thread before posting this one?

MAKEOBJDIRPREFIX has always been an environment variable, it has never
been a command-line or global variable of make(1).  What you describe
should still work but in 4.x only (pass MAKEOBJDIRPREFIX as a command
line variable), but only because Makefile.inc1 will properly reset it
in environment.  This is not by design, it just *happens to work*
because Makefile.inc1 needs to reset MAKEOBJDIRPREFIX to different
values depending on the current stage of buildworld.

Last year, I changed make(1) in 5.x so it's possible to set
MAKEOBJDIR[PREFIX] as a command line variable, and have it really
work correctly (correctly =3D=3D make will switch to this directory
and set .OBJDIR to point to it).  This is still discouraged, and
is not supported by a 4.x make(1).  Since make(1) was recently
change to propagate command line variables as command line variables
to sub-makes, passing MAKEOBJDIRPREFIX as a command-line variable
to buildworld will no longer work: command-line variables take
precedence over environment variables, so what Makefile.inc1
will set in environment will be ignored by buildworld substages.

So, the only One True Way to use MAKEOBJDIRPREFIX is as documented
in the make(1) manpage, i.e., set it as environment variable.

I will commit the enforcement into src/Makefile shortly.


Cheers,
--=20
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer

--qGV0fN9tzfkG3CxV
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQFBGfSzqRfpzJluFF4RAopcAJ434V12aqvEDkFylvSjQlz7x0z3TwCghS9z
v/chqiW/s5WecVNFGIZqzhU=
=PKOD
-----END PGP SIGNATURE-----

--qGV0fN9tzfkG3CxV--



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