svn commit: r218130 - head

Garrett Cooper gcooper at FreeBSD.org
Wed Feb 2 23:53:24 UTC 2011


On Wed, Feb 2, 2011 at 3:34 PM, Warner Losh <imp at bsdimp.com> wrote:
> On 02/02/2011 12:52, Rob Farmer wrote:
>>
>> On Mon, Jan 31, 2011 at 7:17 AM, Warner Losh<imp at freebsd.org>  wrote:
>>>
>>> Author: imp
>>> Date: Mon Jan 31 15:17:47 2011
>>> New Revision: 218130
>>> URL: http://svn.freebsd.org/changeset/base/218130
>>>
>>> Log:
>>>  Move the architecture guessing from Makefile.inc1 to Makefile.  We
>>>  need to do this because variables specified on the command line
>>>  override those specified in the Makefile.  This is why we also moved
>>>  from TARGET to _TARGET in Makefile, and then set TARGET on the command
>>>  line when we fork a submake with Makefile.inc1.
>>>
>>>  This makes mips/mips work again, even without the workaround committed
>>> to
>>>  lib/libc/Makefile.
>>>
>>> Modified:
>>>  head/Makefile
>>>  head/Makefile.inc1
>>>
>>> Modified: head/Makefile
>>>
>>> ==============================================================================
>>> --- head/Makefile       Mon Jan 31 11:50:11 2011        (r218129)
>>> +++ head/Makefile       Mon Jan 31 15:17:47 2011        (r218130)
>>> @@ -126,6 +126,38 @@ BINMAKE= \
>>>        -m ${.CURDIR}/share/mk
>>>  _MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1
>>>
>>> +# Guess machine architecture from machine type, and vice versa.
>>> +.if !defined(TARGET_ARCH)&&  defined(TARGET)
>>> +_TARGET_ARCH=  ${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/}
>>> +.elif !defined(TARGET)&&  defined(TARGET_ARCH)&&  \
>>> +    ${TARGET_ARCH} != ${MACHINE_ARCH}
>>> +_TARGET=               ${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/}
>>> +.endif
>>> +# Legacy names, for a transition period mips:mips ->  mipsel:mips
>>> +.if defined(TARGET)&&  defined(TARGET_ARCH)&&  \
>>> +    ${TARGET_ARCH} == "mips"&&  ${TARGET} == "mips"
>>> +.warning "TARGET_ARCH of mips is deprecated in favor of mipsel or
>>> mipseb"
>>> +.if defined(TARGET_BIG_ENDIAN)
>>> +_TARGET_ARCH=mipseb
>>> +.else
>>> +_TARGET_ARCH=mipsel
>>> +.endif
>>> +.endif
>>> +# arm with TARGET_BIG_ENDIAN ->  armeb
>>> +.if defined(TARGET_ARCH)&&  ${TARGET_ARCH} == "arm"&&
>>>  defined(TARGET_BIG_ENDIAN)
>>> +.warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated.  use
>>> armeb"
>>> +_TARGET_ARCH=armeb
>>> +.endif
>>> +.if defined(TARGET)&&  !defined(_TARGET)
>>> +_TARGET=${TARGET}
>>> +.endif
>>> +.if defined(TARGET_ARCH)&&  !defined(_TARGET_ARCH)
>>> +_TARGET_ARCH=${TARGET_ARCH}
>>> +.endif
>>> +# Otherwise, default to current machine type and architecture.
>>> +_TARGET?=      ${MACHINE}
>>> +_TARGET_ARCH?= ${MACHINE_ARCH}
>>> +
>>>  #
>>>  # Make sure we have an up-to-date make(1). Only world and buildworld
>>>  # should do this as those are the initial targets used for upgrades.
>>> @@ -173,8 +205,7 @@ cleanworld:
>>>  #
>>>
>>>  ${TGTS}:
>>> -       ${_+_}@cd ${.CURDIR}; \
>>> -               ${_MAKE} ${.TARGET}
>>> +       ${_+_}cd ${.CURDIR}; ${_MAKE} TARGET=${_TARGET}
>>> TARGET_ARCH=${_TARGET_ARCH} ${.TARGET}
>>>
>>>  # Set a reasonable default
>>>  .MAIN: all
>>>
>>> Modified: head/Makefile.inc1
>>>
>>> ==============================================================================
>>> --- head/Makefile.inc1  Mon Jan 31 11:50:11 2011        (r218129)
>>> +++ head/Makefile.inc1  Mon Jan 31 15:17:47 2011        (r218130)
>>> @@ -116,32 +116,6 @@ VERSION!=  uname -srp
>>>  VERSION+=      ${OSRELDATE}
>>>  .endif
>>>
>>> -# Guess machine architecture from machine type, and vice versa.
>>> -.if !defined(TARGET_ARCH)&&  defined(TARGET)
>>> -TARGET_ARCH=   ${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/}
>>> -.elif !defined(TARGET)&&  defined(TARGET_ARCH)&&  \
>>> -    ${TARGET_ARCH} != ${MACHINE_ARCH}
>>> -TARGET=                ${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/}
>>> -.endif
>>> -# Legacy names, for a transition period mips:mips ->  mipsel:mips
>>> -.if defined(TARGET)&&  defined(TARGET_ARCH)&&  \
>>> -    ${TARGET_ARCH} == "mips"&&  ${TARGET} == "mips"
>>> -.warning "TARGET_ARCH of mips is deprecated in favor of mipsel or
>>> mipseb"
>>> -.if defined(TARGET_BIG_ENDIAN)
>>> -TARGET_ARCH=mipseb
>>> -.else
>>> -TARGET_ARCH=mipsel
>>> -.endif
>>> -.endif
>>> -# arm with TARGET_BIG_ENDIAN ->  armeb
>>> -.if defined(TARGET_ARCH)&&  ${TARGET_ARCH} == "arm"&&
>>>  defined(TARGET_BIG_ENDIAN)
>>> -.warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated.  use
>>> armeb"
>>> -TARGET_ARCH=armeb
>>> -.endif
>>> -# Otherwise, default to current machine type and architecture.
>>> -TARGET?=       ${MACHINE}
>>> -TARGET_ARCH?=  ${MACHINE_ARCH}
>>> -
>>>  KNOWN_ARCHES?= amd64 arm armeb/arm i386 i386/pc98 ia64 mipsel/mips
>>> mipseb/mips mips64el/mips mips64eb/mips mipsn32el/mips mipsn32eb/mips
>>> powerpc powerpc64/powerpc sparc64 sparc64/sun4v
>>>  .if ${TARGET} == ${TARGET_ARCH}
>>>  _t=            ${TARGET}
>>> _______________________________________________
>>> svn-src-head at freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/svn-src-head
>>> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"
>>>
>> Hello,
>>
>> This breaks "make world" as used by ports tinderbox:
>>
>> [rfarmer at turquoise] /usr/src# env DESTDIR=/tmp/world make -DNO_CLEAN world
>> --------------------------------------------------------------
>>>>>
>>>>> make world started on Wed Feb  2 11:45:08 PST 2011
>>
>> --------------------------------------------------------------
>> "/usr/src/Makefile.inc1", line 120: Malformed conditional (${TARGET}
>> == ${TARGET_ARCH})
>> "/usr/src/Makefile.inc1", line 122: if-less else
>> "/usr/src/Makefile.inc1", line 124: if-less endif
>> "/usr/src/Makefile.inc1", line 127: Unknown target :.
>> *** Error code 1
>>
>> Stop in /usr/src.
>
> How does the ports tinderbox run make world?  Just as you've described or
> are there additional variables set?

`make world DESTDIR=/' is broken. Based on the debug printf it's the
recursive call into buildworld from world that's mucking up the order
of things:

$ make world DESTDIR=/
--------------------------------------------------------------
>>> make world started on Wed Feb  2 15:50:37 PST 2011
--------------------------------------------------------------
Entering buildworld
"/usr/src/Makefile.inc1", line 120: Malformed conditional (${TARGET}
== ${TARGET_ARCH})
"/usr/src/Makefile.inc1", line 122: if-less else
"/usr/src/Makefile.inc1", line 124: if-less endif
"/usr/src/Makefile.inc1", line 127: Unknown target :.
*** Error code 1

Stop in /usr/src.

Thanks,
-Garrett


More information about the svn-src-head mailing list