svn commit: r276052 - head

Garrett Cooper yaneurabeya at gmail.com
Thu Jan 1 18:42:41 UTC 2015


On Jan 1, 2015, at 10:38, Garrett Cooper <yaneurabeya at gmail.com> wrote:

> On Jan 1, 2015, at 9:50, Dimitry Andric <dim at FreeBSD.org> wrote:
> 
>> On 01 Jan 2015, at 18:32, Ian Lepore <ian at FreeBSD.org> wrote:
>>> 
>>> On Thu, 2015-01-01 at 18:14 +0100, Dimitry Andric wrote:
>>>> On 01 Jan 2015, at 17:41, Ian Lepore <ian at freebsd.org> wrote:
>>>>> 
>>>>> On Thu, 2015-01-01 at 16:50 +0100, Dimitry Andric wrote:
>>>>>> On 22 Dec 2014, at 05:52, Garrett Cooper <ngie at FreeBSD.org> wrote:
>>>>>>> 
>>>>>>> Author: ngie
>>>>>>> Date: Mon Dec 22 04:52:24 2014
>>>>>>> New Revision: 276052
>>>>>>> URL: https://svnweb.freebsd.org/changeset/base/276052
>>>>>>> 
>>>>>>> Log:
>>>>>>> Build selective portions of gnu/usr.bin/texinfo as part of build-tools to
>>>>>>> ensure that building on a host without makeinfo (i.e. a host where
>>>>>>> make delete-old -DWITHOUT_INFO was run), then building with MK_INFO == yes
>>>>>>> doesn't manifest in build errors when building info pages
>>>>>> ..
>>>>>>> @@ -1398,6 +1403,16 @@ build-tools: .MAKE
>>>>>>> 		${MAKE} DIRPRFX=${_tool}/ depend && \
>>>>>>> 		${MAKE} DIRPRFX=${_tool}/ all
>>>>>>> .endfor
>>>>>>> +.for _tool in \
>>>>>>> +    ${_texinfo}
>>>>>>> +	${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all)"; \
>>>>>>> +		cd ${.CURDIR}/${_tool} && \
>>>>>>> +		${MAKE} DIRPRFX=${_tool}/ obj && \
>>>>>>> +		${MAKE} DIRPRFX=${_tool}/ depend && \
>>>>>>> +		${MAKE} DIRPRFX=${_tool}/ all && \
>>>>>>> +		${MAKE} DIRPRFX=${_tool}/ install DESTDIR=${WORLDTMP}
>>>>>>> +.endfor
>>>>>> 
>>>>>> Strangely, this hunk seems to work incorrectly for non-native builds.
>>>>>> For example, I tried a TARGET=arm buildworld just now, and that dies
>>>>>> with the following error:
>>>>>> 
>>>>>> [...]
>>>>>>>>> stage 2.3: build tools
>>>>>> [...]
>>>>>> ===> gnu/usr.bin/texinfo/makeinfo (obj,depend,all,install)
>>>>>> [...]
>>>>>> gzip -cn /usr/src/gnu/usr.bin/texinfo/makeinfo/../../../../contrib/texinfo/doc/makeinfo.1 > makeinfo.1.gz
>>>>>> sh /usr/src/tools/install.sh -s -o root -g wheel -m 555   makeinfo /usr/obj/arm.arm/arm.arm/usr/src/tmp/usr/bin/makeinfo
>>>>>> install: /usr/obj/arm.arm/arm.arm/usr/src/tmp/usr/bin/makeinfo: No such file or directory
>>>>>> *** Error code 71
>>>>>> 
>>>>>> Specifically, the /usr/obj/arm.arm/arm.arm directory is incorrect, there
>>>>>> should be only one "arm.arm" in that path.  I don't really understand
>>>>>> how that value comes to pass, though.  When I put an echo statement just
>>>>>> before the make install, which shows the values of ${_tool} and
>>>>>> ${WORLDTMP}, it prints:
>>>>>> 
>>>>>> DEBUG: _tool=gnu/usr.bin/texinfo/makeinfo, WORLDTMP=/usr/obj/arm.arm/arm.arm/usr/src/tmp
>>>>>> 
>>>>>> So for some strange reason, ${WORLDTMP} is incorrect at that point?  I
>>>>>> think something is appending one path component too many...
>>>>>> 
>>>>>> -Dimitry
>>>>>> 
>>>>> 
>>>>> try TARGET_ARCH=arm
>>>> 
>>>> No, that does not help, unfortunately.  The problem seems to be that in
>>>> Makefile.inc1, TMAKE is passing MAKEOBJDIRPREFIX=${OBJTREE} via its
>>>> environment, and this changes the value of WORLDTMP to an incorrect
>>>> value.
>>>> 
>>>> At first it looked like I could just force the correct WORLDTMP value
>>>> via the command line instead, e.g. like this:
>>>> 
>>>> Index: Makefile.inc1
>>>> ===================================================================
>>>> --- Makefile.inc1       (revision 276480)
>>>> +++ Makefile.inc1       (working copy)
>>>> @@ -270,6 +270,7 @@
>>>> TMAKE=         MAKEOBJDIRPREFIX=${OBJTREE} \
>>>>              ${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
>>>>              TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
>>>> +               WORLDTMP=${WORLDTMP} \
>>>>              DESTDIR= \
>>>>              BOOTSTRAPPING=${OSRELDATE} \
>>>>              SSP_CFLAGS= \
>>>> 
>>>> However, this leads to other problems further down the road, where it
>>>> gets errors installing parts of libllvmsupport and tblgen.
>>>> 
>>>> So at this point, non-native builds with MK_INFO=yes are broken.
>>>> 
>>>> -Dimitry
>>>> 
>>> 
>>> You seem to be implying that the whole process of cross building is
>>> broken, but it's not.  I do this all day long every day.  "make
>>> TARGET_ARCH=arm [make targets and other vars here]" works.  Do you have
>>> something in make.conf or src.conf causing problems?
>> 
>> No, just MK_INFO=yes, as I said.  That is what Garrett tried to fix in
>> this commit, but which only works for native builds.
>> 
>> I'll be coming up with a fix shortly.
> 
> OBJTREE is being populated with TARGET.TARGET_ARCH twice… That’s the bug.
> 
> Unfortunately this commit only made this issue apparent. Sorry for not testing with a non-native build :(...

I suspect this will fix it. Going to do a tinderbox run then I’ll put it out for review:

Index: Makefile.inc1
===================================================================
--- Makefile.inc1	(revision 276492)
+++ Makefile.inc1	(working copy)
@@ -267,8 +267,7 @@
 		MK_LLDB=no MK_TESTS=no
 
 # build-tools stage
-TMAKE=		MAKEOBJDIRPREFIX=${OBJTREE} \
-		${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
+TMAKE=		${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
 		TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
 		DESTDIR= \
 		BOOTSTRAPPING=${OSRELDATE} \
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20150101/bd8d6ddc/attachment.sig>


More information about the svn-src-head mailing list