From owner-freebsd-current@freebsd.org Sun Mar 12 02:47:26 2017 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 44019D07DCE for ; Sun, 12 Mar 2017 02:47:26 +0000 (UTC) (envelope-from lstewart@freebsd.org) Received: from lauren.room52.net (lauren.room52.net [210.50.193.198]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A4CAF16B6; Sun, 12 Mar 2017 02:47:25 +0000 (UTC) (envelope-from lstewart@freebsd.org) Received: from lgwl-lstewart2.corp.netflix.com (c110-22-60-167.eburwd6.vic.optusnet.com.au [110.22.60.167]) by lauren.room52.net (Postfix) with ESMTPSA id 19ADB7E90F; Sun, 12 Mar 2017 13:47:21 +1100 (EST) Subject: [SOLVED] Re: Deterministic rescue buildworld error with custom make.conf/src.conf/MAKEOBJDIRPREFIX To: Ian Lepore , FreeBSD Current References: <1489274995.40576.65.camel@freebsd.org> <0aa75720-7670-9b64-a536-9958ff332eea@freebsd.org> <1489286252.40576.68.camel@freebsd.org> From: Lawrence Stewart Message-ID: <5c36b243-795a-3a00-a6e7-8d960bc18aa1@freebsd.org> Date: Sun, 12 Mar 2017 13:45:58 +1100 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <1489286252.40576.68.camel@freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=2.4 required=5.0 tests=DNS_FROM_AHBL_RHSBL, UNPARSEABLE_RELAY autolearn=no version=3.3.2 X-Spam-Level: ** X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on lauren.room52.net X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Mar 2017 02:47:26 -0000 On 12/03/2017 13:37, Ian Lepore wrote: > 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@builder-head-amd64:/usr/src # cat cust_make.conf >>>> KERNCONF=GENERIC-NODEBUG >>>> MALLOC_PRODUCTION=YES >>>> >>>> root@builder-head-amd64:/usr/src # cat cust_src.conf >>>> WITHOUT_PROFILE=1 >>>> >>>> root@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@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@freebsd.org mailing list >>>> https://lists.freebsd.org/mailman/listinfo/freebsd-current >>>> To unsubscribe, send any mail to "freebsd-current-unsubscribe@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@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-current >> To unsubscribe, send any mail to "freebsd-current-unsubscribe@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. Oh dear. I *completely* glossed over that... multiple times. Derp. Thank you for the liberal application of clue bat and my apologies for the noise Cheers, Lawrence