Skip site navigation (1)Skip section navigation (2)
Date:      Fri,  6 May 2005 08:10:27 +0900 (JST)
From:      KOMATSU Shinichiro <koma2@lovepeers.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/80679: emulators/linux_base-8: Use ${MACHINE_ARCH} instead of ${ARCH}.
Message-ID:  <20050505231027.1A86456445@ksta.ms.u-tokyo.ac.jp>
Resent-Message-ID: <200505052320.j45NK2aD065642@freefall.freebsd.org>

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

>Number:         80679
>Category:       ports
>Synopsis:       emulators/linux_base-8: Use ${MACHINE_ARCH} instead of ${ARCH}.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu May 05 23:20:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     KOMATSU Shinichiro
>Release:        FreeBSD 5.3-RELEASE-p5 amd64
>Organization:
>Environment:
FreeBSD 5.3-RELEASE-p5 amd64

>Description:

On amd64, emulators/linux_base-8 cannot be built with the following error,
in case a separate make process is executed 
(when installed by, for example, 'make reinstall' or portupgrade).

    ===>  Installing for linux_base-8-8.0_6
    kern.fallback_elf_brand: -1 -> 3
    redhat-release-8.0-8.noarch.rpm
    glibc-common-2.3.2-4.80.8.i386.rpm
    ELF binary type "0" not known.
    execution of glibc-common-2.3.2-4.80.8 script failed, exit status 255
    *** Error code 1

    Stop in /usr/local/ports/emulators/linux_base-8.
    *** Error code 1

    Stop in /usr/local/ports/emulators/linux_base-8.

This is because ${ARCH} is overwritten to "i386" by Makefile,
and this overwritten ${ARCH} is passed to another make process
by the .MAKEFLAGS target in bsd.port.mk.
So, when the following part of Makefile is interpreted,

    .if (${ARCH} == "amd64")
    LATEST_LINK:=		${LATEST_LINK:C/linux/linux32/}
    ARCH=			i386
    FALLBACK_ELF_MIB=	kern.elf32.fallback_brand
    RPMFLAGS+=		--noscripts
    .else
    FALLBACK_ELF_MIB=	kern.fallback_elf_brand
    .endif

FALLBACK_ELF_MIB becomes to "kern.fallback_elf_brand"
instead of "kern.elf32.fallback_brand".

>How-To-Repeat:

>Fix:

Use ${MACHINE_ARCH} instead of ${ARCH} in ".if" statement.

Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/emulators/linux_base-8/Makefile,v
retrieving revision 1.102
diff -u -r1.102 Makefile
--- Makefile	15 Mar 2005 05:25:17 -0000	1.102
+++ Makefile	5 May 2005 22:30:57 -0000
@@ -86,7 +86,7 @@
 			etc/protocols
 BRAND_FILES=		bin/rpm sbin/ldconfig sbin/sln
 
-.if (${ARCH} == "amd64")
+.if (${MACHINE_ARCH} == "amd64")
 LATEST_LINK:=		${LATEST_LINK:C/linux/linux32/}
 ARCH=			i386
 FALLBACK_ELF_MIB=	kern.elf32.fallback_brand
>Release-Note:
>Audit-Trail:
>Unformatted:



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