Re: Deterministic rescue buildworld error with custom make.conf/src.conf/MAKEOBJDIRPREFIX

From: O. Hartmann <ohartmann_at_walstatt.org>
Date: Sun, 12 Mar 2017 14:24:49 +0100
Am Sat, 11 Mar 2017 19:37:32 -0700
Ian Lepore <ian_at_freebsd.org> schrieb:

> On Sun, 2017-03-12 at 13:27 +1100, Lawrence Stewart wrote:
> > Hi Ian,
> > 
> > On 12/03/2017 10:29, Ian Lepore wrote:  
> > > 
> > > On Sun, 2017-03-12 at 10:22 +1100, Lawrence Stewart wrote:  
> > > > 
> > > > Hi all,
> > > > 
> > > > I'm unable to complete buildworld with 2 recent svn revs I've
> > > > tried
> > > > (r314838 and r315059). I'm building for a slightly resource
> > > > constrained
> > > > production system so am specifying custom settings and a
> > > > different
> > > > obj
> > > > tree location so I can copy it to the target system. The error
> > > > persists
> > > > after an "rm -rf /usr/obj/*", and if parallel building is
> > > > disabled.
> > > > 
> > > > The underlying build system built from r314838 via simple "make
> > > > -C
> > > > /usr/src -s -j6 buildworld buildkernel" built and installed fine,
> > > > so
> > > > the
> > > > problem seems to be around the use of the build customisations.
> > > > 
> > > > Any clues?
> > > > 
> > > > Cheers,
> > > > Lawrence
> > > > 
> > > > 
> > > > root_at_builder-head-amd64:/usr/src # cat cust_make.conf
> > > > KERNCONF=GENERIC-NODEBUG
> > > > MALLOC_PRODUCTION=YES
> > > > 
> > > > root_at_builder-head-amd64:/usr/src # cat cust_src.conf
> > > > WITHOUT_PROFILE=1
> > > > 
> > > > root_at_builder-head-amd64:/usr/src # make
> > > > __MAKE_CONF=/usr/src/cust_make.conf
> > > > SRCCONF=/usr/src/cust_src.conf
> > > > MAKEOBJDIRPREFIX=/usr/obj/cust buildworld buildkernel
> > > > [...]
> > > > MK_AUTO_OBJ=no
> > > > MK_TESTS=no  UPDATE_DEPENDFILE=no  _RECURSING_CRUNCH=1
> > > > CC="cc -target x86_64-unknown-freebsd12.0
> > > > --sysroot=/usr/obj/cust/usr/src/tmp
> > > > -B/usr/obj/cust/usr/src/tmp/usr/bin
> > > > -O2 -pipe   -std=gnu99    -Qunused-arguments  "  CXX="c++  -
> > > > target
> > > > x86_64-unknown-freebsd12.0 --sysroot=/usr/obj/cust/usr/src/tmp
> > > > -B/usr/obj/cust/usr/src/tmp/usr/bin -O2 -pipe -Qunused-arguments
> > > > -Wno-c++11-extensions  "  make .MAKE.MODE="normal curdirOk=yes"
> > > > .MAKE.META.IGNORE_PATHS=""  -f rescue.mk exe
> > > > cc -target x86_64-unknown-freebsd12.0
> > > > --sysroot=/usr/obj/cust/usr/src/tmp
> > > > -B/usr/obj/cust/usr/src/tmp/usr/bin
> > > > -O2 -pipe   -std=gnu99    -Qunused-arguments   -nostdlib -Wl,-dc
> > > > -r
> > > > -o
> > > > cat.lo cat_stub.o
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/cat/cat.o
> > > > cc: error: no such file or directory:
> > > > '/usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/cat/cat.o'
> > > > *** Error code 1
> > > > 
> > > > There appear to be a lot of missing .o files under the rescue obj
> > > > tree:
> > > > 
> > > > root_at_builder-head-amd64:/usr/src # find
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr -type f
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/sh/mksyntax.o
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/sh/mksyntax
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/sh/mknodes.o
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/sh/mknodes
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/csh/sh.err.h
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/csh/tc.const.h
> > > > /usr/obj/cust/usr/src/rescue/rescue//usr/src/bin/csh/gethost
> > > > 
> > > > compared with an obj tree on a different head system:
> > > > 
> > > > find /usr/obj/usr/src/rescue/rescue/usr/ -type f | wc -l
> > > >     1552
> > > > _______________________________________________
> > > > freebsd-current_at_freebsd.org mailing list
> > > > https://lists.freebsd.org/mailman/listinfo/freebsd-current
> > > > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_fre
> > > > ebsd
> > > > .org"  
> > > The MAKEOBJDIRPREFIX variable must be set in the environment, not
> > > in
> > > make.conf or on the make command line (documented in build(7)).  
> > Your assertion seems at odds with my past experience and my reading
> > of
> > the man page... from build(7):
> > 
> > 	The build may be controlled by defining make(1) variables
> > 	described in the ENVIRONMENT section below, and by the
> > 	variables documented in make.conf(5).
> > 
> > ... which indicates they are make variables, not environment
> > variables
> > specifically. As a concrete example, TARGET and DESTDIR are listed
> > under
> > the "ENVIRONMENT" section of the man page, yet "EXAMPLES" shows:
> > 
> >            make TARGET=sparc64 buildworld
> >            make TARGET=sparc64 DESTDIR=/clients/sparc64 installworld
> > 
> > I've certainly always set build vars documented in the "ENVIRONMENT"
> > section of the man page on the make command line without issue.
> > Pretty
> > sure I've set MAKEOBJDIRPREFIX from the make command line also in the
> > past, though perhaps it has been working for me "by accident" and a
> > documentation tweak is in order if the distinction you make is in
> > fact
> > relevant...
> > 
> > Cheers,
> > Lawrence
> > _______________________________________________
> > freebsd-current_at_freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-current
> > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd
> > .org"  
> 
> You cited everything from build(7) except the part most on-point for
> the problem you're having:
> 
>     MAKEOBJDIRPREFIX
>         Defines the prefix for directory names in the tree of
>         built objects.  Defaults to /usr/obj if not defined.  This variable
>         should only be set in the environment and not via /etc/make.conf or the
>         command line.
> 
> -- Ian
> 


Shouldn't it then be "... This variable must only be set in the environment"? Every other
attempt will fail. It would also be nice to have some more information about the WHY.
Using poudriere, one can set this variable within a per-set configuration file aiming for
a jail built upon sources on a local machine. Sometimes its really confusing when shell
environment comes into play and when it all stays within the make domain.

Kind regards,

O. Hartmann


-- 
O. Hartmann

Ich widerspreche der Nutzung oder Übermittlung meiner Daten für
Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG).

Received on Sun Mar 12 2017 - 12:25:05 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:10 UTC