Add support for building bootstrap gcc with libc/kernel headers (--with-headers)...
authorMike Frysinger <vapier@gentoo.org>
Fri, 18 Nov 2005 04:02:33 +0000 (04:02 +0000)
committerMike Frysinger <vapier@gentoo.org>
Fri, 18 Nov 2005 04:02:33 +0000 (04:02 +0000)
Package-Manager: portage-2.0.53_rc7

sys-devel/crossdev/ChangeLog
sys-devel/crossdev/Manifest
sys-devel/crossdev/crossdev-0.9.10.ebuild [moved from sys-devel/crossdev/crossdev-0.9.9-r3.ebuild with 90% similarity]
sys-devel/crossdev/files/crossdev
sys-devel/crossdev/files/digest-crossdev-0.9.10 [moved from sys-devel/crossdev/files/digest-crossdev-0.9.9-r3 with 100% similarity]

index ccfa2954c010f238863930456a9d0c5f91f7bea0..a60b36f7ca8ce887490aac38d798d31ef5d6d40f 100644 (file)
@@ -1,6 +1,16 @@
 # ChangeLog for sys-devel/crossdev
 # Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/ChangeLog,v 1.25 2005/10/08 16:58:41 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/ChangeLog,v 1.26 2005/11/18 04:02:33 vapier Exp $
+
+*crossdev-0.9.10 (18 Nov 2005)
+
+  18 Nov 2005; Mike Frysinger <vapier@gentoo.org> files/crossdev,
+  -crossdev-0.9.9-r3.ebuild, +crossdev-0.9.10.ebuild:
+  Add support for building bootstrap gcc with libc/kernel headers
+  (--with-headers), fix cleaning of categories/package.keywords files, add
+  generic support for future --with-/--without- options, better detect when a
+  package needs to be re-emerged or can be safely skipped, and touchup code in
+  general.
 
 *crossdev-0.9.9-r3 (08 Oct 2005)
 
index 5a60e7afc1f3262a71e816a5e1a3ab05469dc0dc..3537275a78a349dd959ccaa9f37c53b32e9781c3 100644 (file)
@@ -1,15 +1,15 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-MD5 582c83b33545f1de39861e08f42859e2 ChangeLog 5215
-MD5 091fb844f716a3f89969a7c6cc9a5eea crossdev-0.9.9-r3.ebuild 596
-MD5 11bb3ab1c1cb464c1bf5cc77fbc7fbc7 files/crossdev 13430
-MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-crossdev-0.9.9-r3 0
+MD5 1e4889f5a0724f8e3336c8fe46ba7061 ChangeLog 5677
+MD5 6f298398bc8f1ae76ceb2e5e2602f706 crossdev-0.9.10.ebuild 594
+MD5 b9ab69efcb0d1987ac6c935886e6ada9 files/crossdev 14735
+MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-crossdev-0.9.10 0
 MD5 e91cdaf464f515f3528da02cf06e54a1 metadata.xml 222
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.2 (GNU/Linux)
 
-iD8DBQFDV9jVgIKl8Uu19MoRAgH8AJ46P+ewVdLGcUVA+Fxfo6USUPX2zgCfa6iy
-Lx+4YVlu5qL/Vv58q3WlTFI=
-=gyFw
+iD8DBQFDfVKwgIKl8Uu19MoRAgJXAJ9fQXXNZ6eN21B3f7ZXNDpBsESxPQCeO6x+
+YixBN9k0qkT7IePdA8pFUm8=
+=Zkxo
 -----END PGP SIGNATURE-----
similarity index 90%
rename from sys-devel/crossdev/crossdev-0.9.9-r3.ebuild
rename to sys-devel/crossdev/crossdev-0.9.10.ebuild
index f948be796d0dbfc9496d4317c399228494b2c937..be631384a57d0e3b392e07d61466ea925f97be6f 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2005 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-0.9.9-r3.ebuild,v 1.1 2005/10/08 16:58:41 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-0.9.10.ebuild,v 1.1 2005/11/18 04:02:33 vapier Exp $
 
 DESCRIPTION="Gentoo Cross-toolchain generator"
 HOMEPAGE="http://www.gentoo.org/"
index 69c7378de173deb71c31f1e4697413f46f3f8393..cacae17a6e4a634c888f63bdf6cd0189b60040f6 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 # Copyright 1999-2005 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/files/crossdev,v 1.40 2005/10/20 17:47:25 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/files/crossdev,v 1.41 2005/11/18 04:02:33 vapier Exp $
 
 cd /
 
@@ -78,7 +78,7 @@ parse_target() {
                arm*)       TARCH=arm;;
                hppa*)      TARCH=hppa;;
                parisc)     TARCH=hppa;   CPRE="hppa";;
-               ia64*)      TARCH=ia64;;
+               ia64*)      TARCH=ia64    WITH_DEF_HEADERS="yes";;
                i?86*)      TARCH=x86;;
                x86)        TARCH=x86;    CPRE="i386";;
                m68*)       TARCH=m68k;;
@@ -195,10 +195,10 @@ uninstall() {
 
        [[ -d ${PORTDIR_OVERLAY}/cross-${CTARGET} ]] \
                && rm -r ${PORTDIR_OVERLAY}/cross-${CTARGET}
-       for f in mask keywords use ; do
-               f="/etc/portage/package.${f}"
+       for f in package.{mask,keywords,use} categories ; do
+               f="/etc/portage/${f}"
                [[ ! -e ${f} ]] && continue
-               sed -i -e "/cross-${CTARGET}\//d" ${f}
+               sed -i -e "/cross-${CTARGET}\//d" "${f}"
        done
 
        if [[ ! -d /var/db/pkg/cross-${CTARGET} ]] ; then
@@ -231,6 +231,20 @@ uninstall() {
        exit 0
 }
 
+set_withval() {
+       local withval varname
+       varname=${*#--with-}
+       varname=${varname#--without-}
+       varname=${varname%%=*}
+       if [[ $* == *=* ]] ; then
+               withval=${*#*=}
+       else
+               [[ $* == --with-* ]] && withval="yes" || withval="no"
+       fi
+
+       echo WITH_`echo ${varname} | tr '[:lower:]' '[:upper:]'`=\"${withval}\"
+}
+
 is_stage() { [[ ${STAGE} -ge $1 ]] ; }
 is_s0()    { is_stage 0 ; }
 is_s1()    { is_stage 1 ; }
@@ -239,9 +253,11 @@ is_s3()    { is_stage 3 ; }
 is_s4()    { is_stage 4 ; }
 is_s5()    { is_stage 5 ; }
 
+with_headers()   { [[ ${WITH_HEADERS}   == "yes" ]] ; }
+
 ex_fast()  { [[ ${EX_FAST} == "yes" ]] ; }
-ex_gcc()   { [[ ${EX_GCC} == "yes" ]] ; }
-ex_gdb()   { [[ ${EX_GDB} == "yes" ]] ; }
+ex_gcc()   { [[ ${EX_GCC}  == "yes" ]] ; }
+ex_gdb()   { [[ ${EX_GDB}  == "yes" ]] ; }
 
 hr() {
        local c=${COLUMNS:-0}
@@ -266,14 +282,16 @@ UOPTS=
 TARCH=
 HARCH=$(env -uARCH portageq envvar ARCH)
 CTARGET=
-STAGE=COW
+STAGE="COW"
 BCAT="sys-devel"  ; BPKG="binutils"      ; BVER="[latest]" ; BUSE=""
 GCAT="sys-devel"  ; GPKG="gcc"           ; GVER="[latest]" ; GUSE=""
 KCAT="sys-kernel" ; KPKG="linux-headers" ; KVER="[latest]" ; KUSE=""
 LCAT="sys-libs"   ; LPKG="glibc"         ; LVER="[latest]" ; LUSE=""
+WITH_HEADERS="COW"   WITH_DEF_HEADERS="no"
 EX_FAST="no"
 EX_GCC="no"
 EX_GDB="no"
+SET_X="no"
 
 while [[ $# -gt 0 ]] ; do
        case $1 in
@@ -288,6 +306,9 @@ while [[ $# -gt 0 ]] ; do
        --ex-only)      EX_FAST="yes";;
        --ex-gcc)       EX_GCC="yes";;
        --ex-gdb)       EX_GDB="yes";;
+       --with-*)       eval $(set_withval $1);;
+       --without-*)    eval $(set_withval $1);;
+       -x)             SET_X="yes";;
        -b|-d|-p|-v)    UOPTS="${UOPTS} $1";;
        -pv|-vp)        UOPTS="${UOPTS} -p -v";;
        -h|--help)      usage;;
@@ -296,9 +317,14 @@ while [[ $# -gt 0 ]] ; do
        esac
        shift
 done
+[[ ${SET_X} == "yes" ]] && set -x
 
 [[ -z ${CTARGET} ]] && usage 1
 [[ ${STAGE} == "COW" ]] && STAGE=${STAGE_C_CPP}
+for with in HEADERS ; do
+       var=WITH_${with} defvar=WITH_DEF_${with}
+       [[ ${!var} == "COW" ]] && eval ${var}=${!defvar}
+done
 
 #####################
 ### sanity checks ###
@@ -375,20 +401,20 @@ emerge info >> ${PORT_LOGDIR}/cross-${CTARGET}-info.log
 set_keywords() {
        local pkg=$1 ver=$2
        [[ -z ${pkg} ]] && return 0
-       sed -i -e "/cross-${CTARGET}\/${pkg}/d" package.keywords package.mask
+       sed -i -e "/^cross-${CTARGET}\/${pkg} /d" package.keywords
        if [[ ${ver} == "[latest]" ]] || [[ -z ${ver} ]] ; then
                echo "cross-${CTARGET}/${pkg} $TARCH ~$TARCH" >> package.keywords
        else
+               sed -i -e "/cross-${CTARGET}\/${pkg}/d" package.mask
                echo ">cross-${CTARGET}/${pkg}-${ver}" >> package.mask
                echo "cross-${CTARGET}/${pkg} * ~* -*" >> package.keywords
        fi
 }
 set_use() {
        local pkg=$1
-       [[ -z ${pkg} ]] && return 0
        shift
        local use=$@
-       [[ -z ${use} ]] && return
+       [[ -z ${use} ]] && return 0
        sed -i -e "/cross-${CTARGET}\/${pkg}/d" package.use
        echo "cross-${CTARGET}/${pkg} ${use}" >> package.use
 }
@@ -417,13 +443,22 @@ mkdir -p "${PORTDIR_OVERLAY}"/cross-${CTARGET}
 cd /etc/portage
 touch package.{keywords,mask,use}
 
-          set_portage ${BCAT} ${BPKG} ${BVER} ${BUSE}
-is_s1  && set_portage ${GCAT} ${GPKG} ${GVER} ${GUSE}
-is_s2  && set_portage ${KCAT} ${KPKG} ${KVER} ${KUSE}
-is_s2  && set_portage ${LCAT} ${LPKG} ${LVER} ${LUSE}
-ex_gdb && set_portage sys-devel gdb
+set_portage ${BCAT} ${BPKG} ${BVER} ${BUSE}
+set_portage ${GCAT} ${GPKG} ${GVER} ${GUSE}
+set_portage ${KCAT} ${KPKG} ${KVER} ${KUSE}
+set_portage ${LCAT} ${LPKG} ${LVER} ${LUSE}
+set_portage sys-devel gdb
 
 #################
+emerged_with_use() {
+       local pkg=$1 use=$2
+       grep -qs ${use} /var/db/pkg/cross-${CTARGET}/${pkg}-*/USE
+}
+set_eopts_on_pkg_status() {
+       emerged_with_use "$@" \
+               && EOPTS=${EOPTS_DEF} \
+               || EOPTS=${EOPTS_UP}
+}
 doemerge() {
        [[ $1 == "[none]" ]] && return 0
 
@@ -434,6 +469,7 @@ doemerge() {
 
        einfo "Log: ${logfile}"
        ebegin "Emerging cross-${2:-$1}"
+
        if [[ ${UOPTS/-v} != ${UOPTS} ]] ; then
                emerge cross-${CTARGET}/$1 ${EOPTS} \
                        2>&1 | tee ${logfile}
@@ -447,7 +483,9 @@ doemerge() {
 }
 
 # we include the '-u' so that we don't re-emerge packages
-EOPTS="${UOPTS} -u --nodeps"
+EOPTS_DEF="${UOPTS} --nodeps"
+EOPTS_UP="${EOPTS_DEF} -u"
+EOPTS=${EOPTS_UP}
 
 # make sure multilib crap doesn't screw us over
 export ABI=${ABI:-pos} LIBDIR_pos="lib" CFLAGS_pos="" LDFLAGS_pos=""
@@ -455,25 +493,34 @@ export ABI=${ABI:-pos} LIBDIR_pos="lib" CFLAGS_pos="" LDFLAGS_pos=""
 ex_fast || {
 
 doemerge ${BPKG}
-is_s1 || exit 0
 
-USE="${USE} -boundschecking -fortran -gcj -objc nocxx -static" \
+is_s1 || exit 0
+if with_headers ; then
+USE="${USE} _E_CROSS_HEADERS_ONLY" _E_CROSS_HEADERS_ONLY="yes" \
+       doemerge ${KPKG} ${KPKG}-quick
+USE="${USE} _E_CROSS_HEADERS_ONLY" _E_CROSS_HEADERS_ONLY="yes" \
+       doemerge ${LPKG} ${LPKG}-headers
+fi
+USE="${USE} -boundschecking -fortran -gcj -mudflap nocxx -objc -static _E_CROSS_BOOTSTRAP" \
        doemerge ${GPKG} ${GPKG}-stage1
+
 is_s2 || exit 0
+set_eopts_on_pkg_status ${KPKG} _E_CROSS_HEADERS_ONLY
 doemerge ${KPKG}
+
 is_s3 || exit 0
+set_eopts_on_pkg_status ${LPKG} _E_CROSS_HEADERS_ONLY
 USE="${USE} $TARCH" doemerge ${LPKG}
 
 is_s4 || exit 0
-if ! type -p ${CTARGET}-g++ > /dev/null ; then
-       EOPTS="${UOPTS} --nodeps"
-fi
+set_eopts_on_pkg_status ${GPKG} _E_CROSS_BOOTSTRAP
 USE="${USE} -fortran -gcj -objc" \
        doemerge ${GPKG} ${GPKG}-stage2
 
 }
 
-ex_gcc && doemerge ${GPKG} ${GPK}-extra
+EOPTS=${EOPTS_UP}
+ex_gcc && doemerge ${GPKG} ${GPKG}-extra
 ex_gdb && doemerge gdb
 
 exit 0