diff options
author | Mike Frysinger <vapier@gentoo.org> | 2011-03-11 04:23:39 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2011-03-11 04:23:39 +0000 |
commit | de4d557620dfc9433f4c8456a4ffdc4b84696048 (patch) | |
tree | 0b8658382fed473d5edb2d6798638323d40ea5ce /sys-devel/crossdev | |
parent | Stable for HPPA (bug #358009). (diff) | |
download | historical-de4d557620dfc9433f4c8456a4ffdc4b84696048.tar.gz historical-de4d557620dfc9433f4c8456a4ffdc4b84696048.tar.bz2 historical-de4d557620dfc9433f4c8456a4ffdc4b84696048.zip |
old
Diffstat (limited to 'sys-devel/crossdev')
-rw-r--r-- | sys-devel/crossdev/crossdev-0.9.18-r10.ebuild | 21 | ||||
-rw-r--r-- | sys-devel/crossdev/crossdev-0.9.19.ebuild | 21 | ||||
-rw-r--r-- | sys-devel/crossdev/crossdev-20100620.ebuild | 30 | ||||
-rw-r--r-- | sys-devel/crossdev/crossdev-20100810.ebuild | 32 | ||||
-rwxr-xr-x | sys-devel/crossdev/files/crossdev | 660 | ||||
-rwxr-xr-x | sys-devel/crossdev/files/crossdev-stable | 646 |
6 files changed, 0 insertions, 1410 deletions
diff --git a/sys-devel/crossdev/crossdev-0.9.18-r10.ebuild b/sys-devel/crossdev/crossdev-0.9.18-r10.ebuild deleted file mode 100644 index 30f97cbcee49..000000000000 --- a/sys-devel/crossdev/crossdev-0.9.18-r10.ebuild +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 1999-2011 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-0.9.18-r10.ebuild,v 1.4 2011/02/06 11:31:49 leio Exp $ - -DESCRIPTION="Gentoo Cross-toolchain generator" -HOMEPAGE="http://www.gentoo.org/" -SRC_URI="" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd" -IUSE="" - -RDEPEND=">=sys-apps/portage-2.1 - app-shells/bash - || ( dev-util/unifdef sys-freebsd/freebsd-ubin )" - -src_install() { - newsbin "${FILESDIR}"/crossdev-stable crossdev || die - dosed "s:GENTOO_PV:${PV}:" /usr/sbin/crossdev -} diff --git a/sys-devel/crossdev/crossdev-0.9.19.ebuild b/sys-devel/crossdev/crossdev-0.9.19.ebuild deleted file mode 100644 index 8a4caca28187..000000000000 --- a/sys-devel/crossdev/crossdev-0.9.19.ebuild +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-0.9.19.ebuild,v 1.1 2008/11/28 09:21:10 vapier Exp $ - -DESCRIPTION="Gentoo Cross-toolchain generator" -HOMEPAGE="http://www.gentoo.org/" -SRC_URI="" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" -IUSE="" - -RDEPEND=">=sys-apps/portage-2.1 - app-shells/bash - || ( dev-util/unifdef sys-freebsd/freebsd-ubin )" - -src_install() { - dosbin "${FILESDIR}"/crossdev || die - dosed "s:GENTOO_PV:${PV}:" /usr/sbin/crossdev -} diff --git a/sys-devel/crossdev/crossdev-20100620.ebuild b/sys-devel/crossdev/crossdev-20100620.ebuild deleted file mode 100644 index 9781b4cdd976..000000000000 --- a/sys-devel/crossdev/crossdev-20100620.ebuild +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 1999-2011 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-20100620.ebuild,v 1.4 2011/02/06 11:31:49 leio Exp $ - -if [[ ${PV} == "99999999" ]] ; then - EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/crossdev.git" - inherit git - SRC_URI="" - #KEYWORDS="" -else - SRC_URI="mirror://gentoo/${P}.tar.lzma - http://dev.gentoo.org/~vapier/dist/${P}.tar.lzma" - KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd" -fi - -DESCRIPTION="Gentoo Cross-toolchain generator" -HOMEPAGE="http://www.gentoo.org/" - -LICENSE="GPL-2" -SLOT="0" -IUSE="" - -RDEPEND=">=sys-apps/portage-2.1 - app-shells/bash - !sys-devel/crossdev-wrappers" -DEPEND="app-arch/xz-utils" - -src_install() { - emake install DESTDIR="${D}" || die -} diff --git a/sys-devel/crossdev/crossdev-20100810.ebuild b/sys-devel/crossdev/crossdev-20100810.ebuild deleted file mode 100644 index b9bf070431dc..000000000000 --- a/sys-devel/crossdev/crossdev-20100810.ebuild +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 1999-2010 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-20100810.ebuild,v 1.1 2010/08/10 08:42:57 vapier Exp $ - -EAPI="3" - -if [[ ${PV} == "99999999" ]] ; then - EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/crossdev.git" - inherit git - SRC_URI="" - #KEYWORDS="" -else - SRC_URI="mirror://gentoo/${P}.tar.xz - http://dev.gentoo.org/~vapier/dist/${P}.tar.xz" - KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" -fi - -DESCRIPTION="Gentoo Cross-toolchain generator" -HOMEPAGE="http://www.gentoo.org/" - -LICENSE="GPL-2" -SLOT="0" -IUSE="" - -RDEPEND=">=sys-apps/portage-2.1 - app-shells/bash - !sys-devel/crossdev-wrappers" -DEPEND="app-arch/xz-utils" - -src_install() { - emake install DESTDIR="${D}" || die -} diff --git a/sys-devel/crossdev/files/crossdev b/sys-devel/crossdev/files/crossdev deleted file mode 100755 index 45b14e77362a..000000000000 --- a/sys-devel/crossdev/files/crossdev +++ /dev/null @@ -1,660 +0,0 @@ -#!/bin/bash -# Copyright 1999-2007 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.110 2009/02/15 23:43:11 vapier Exp $ - -cd / -umask 0022 #159111 - -if [[ ${ROOT:-/} != "/" ]] ; then - echo "Sorry, but crossdev does not support ROOT." - exit 2 -fi - -source /etc/init.d/functions.sh || exit 1 -esyslog() { :; } -die() { - echo - eerror $* - eerror If you file a bug, please attach the following logfiles: - eerror ${PORT_LOGDIR}/cross-${CTARGET}-info.log - eerror ${logfile} - exit 1 -} - -usage() { - local exit_status=${1:-0} - shift -cat << EOF -Usage: ${HILITE}crossdev${NORMAL} ${GOOD}[options]${NORMAL} ${BRACKET}--target TARGET${NORMAL} - -Options: - ${GOOD}--b, --binutils${NORMAL} ver Specify version of binutils to use - ${GOOD}--g, --gcc${NORMAL} ver Specify version of gcc to use - ${GOOD}--k, --kernel${NORMAL} ver Specify version of kernel headers to use - ${GOOD}--l, --libc${NORMAL} ver Specify version of libc to use - ${GOOD}-S, --stable${NORMAL} Use latest stable versions as default - ${GOOD}-C, --clean${NORMAL} target Uninstall specified target - ${GOOD}-P, --portage${NORMAL} opts Options to pass to emerge (see emerge(1)) - ${GOOD}--with[out]-headers${NORMAL} Build C library headers before C compiler? -Stage Options: - ${GOOD}-s0, --stage0${NORMAL} Build just binutils - ${GOOD}-s1, --stage1${NORMAL} Also build a C compiler (no libc/C++) - ${GOOD}-s2, --stage2${NORMAL} Also build kernel headers - ${GOOD}-s3, --stage3${NORMAL} Also build the C library (no C++) - ${GOOD}-s4, --stage4${NORMAL} Also build a C++ compiler [default] -Extra Fun (must be run after above stages): - ${GOOD}--ex-only${NORMAL} Skip the stage steps above - ${GOOD}--ex-gcc${NORMAL} Build extra gcc targets (gcj/ada/etc...) - ${GOOD}--ex-gdb${NORMAL} Build a cross gdb - ${GOOD}--ex-insight${NORMAL} Build a cross insight -${BRACKET}Target (-t)${NORMAL} takes a tuple ${BRACKET}ARCH-VENDOR-OS-LIBC${NORMAL}; see 'crossdev -t help' -EOF - [[ -n $* ]] && echo && eerror "Error: $*" - exit ${exit_status} -} -STAGE_BINUTILS=0 -STAGE_C_ONLY=1 -STAGE_C_KERNEL=2 -STAGE_LIBC=3 -STAGE_C_CPP=4 -STAGE_DEFAULT=${STAGE_C_CPP} -STAGE_DISP=( "binutils" "C compiler only" "kernel headers" "C compiler & libc" "C/C++ compiler" ) - -parse_target() { - CTARGET=${1#cross-} - - [[ -z ${CTARGET} ]] && usage 1 - - if [[ ${CTARGET} == "help" ]] ; then - cat <<-EOF - Supported Architectures: - - alpha - arm / armeb - - hppa (parisc) - ia64 - - i386 / i486 / i586 / i686 (x86) - m68k - - mips / mipsel / mips64 / mips64el - - powerpc (ppc) / powerpc64 (ppc64) - - sparc / sparc64 - s390 / s390x - - sh / sh[1-5] / sh64 - x86_64 (amd64) - Supported C Libraries: - - glibc (gnu) - - klibc [prob wont work] - - newlib [bare metal/no operating system] - - uclibc [not all arches are ported] - Special Targets: - - avr http://www.nongnu.org/avr-libc/ - - bfin http://blackfin.uclinux.org/ - - h8300 http://h8300-hms.sourceforge.net/ - - mingw32 http://www.mingw.org/ - - msp430 http://mspgcc.sourceforge.net/ - - nios2 http://www.altera.com/products/ip/processors/nios2/ni2-index.html - - xc16x http://www.infineon.com/ - - ee / iop / dvp (ps2) [Playstation 2 targets] - - ppu / spu (cell) [Cell/Playstation 3 targets] - Softfloat toolchains: - Include 'softfloat' in the 'vendor' field - e.g. armeb-softfloat-linux-uclibc powerpc-booya_softfloat-linux-gnu - EOF - exit 0 - fi - - # Allow for laziness - if [[ ${CTARGET} != *-* ]] ; then - # First translate portage ARCH to actual tuple - case ${CTARGET} in - amd64) CTARGET="x86_64";; - parisc*) CTARGET=${CTARGET/parisc/hppa};; - ppc|ppc64) CTARGET=${CTARGET/ppc/powerpc};; - x86) CTARGET="i686";; - esac - - # Then add common suffixes - case ${CTARGET} in - i?86|x86_64) - CTARGET="${CTARGET}-pc-linux-gnu";; - s390*) - CTARGET="${CTARGET}-ibm-linux-gnu";; - alpha*|arm*|cris*|hppa*|ia64*|m68*|mips*|powerpc*|sparc*|sh*) - CTARGET="${CTARGET}-unknown-linux-gnu";; - bfin*|h8300*|nios2*|spu*|xc16x*) - CTARGET="${CTARGET}-elf";; - esac - fi - - # Figure out an acceptable portage ARCH for this target - case ${CTARGET} in - alpha*) TARCH=alpha;; - arm*) TARCH=arm;; - hppa*) TARCH=hppa;; - ia64*) TARCH=ia64 WITH_DEF_HEADERS="yes";; - i?86*) TARCH=x86;; - m68*) TARCH=m68k;; - mips*) TARCH=mips;; - powerpc64*) TARCH=ppc64;; - powerpc*) TARCH=ppc;; - sparc*) TARCH=sparc;; - s390*) TARCH=s390;; - sh*) TARCH=sh;; - x86_64*) TARCH=amd64;; - *) TARCH="*";; - esac - case ${CTARGET} in - *-freebsd*) TARCH="${TARCH}-fbsd";; - esac - - # Now account for all the "special" architectures out there - case ${CTARGET} in - avr*) KPKG="[none]"; STAGE_DEFAULT=${STAGE_LIBC}; - LCAT="dev-embedded"; LPKG="avr-libc"; - GUSE=${GUSE_DISABLE} - WITH_DEF_HEADERS="no";; - - # due to upstream lameness, build C/C++ at first glance - *-cygwin) - GUSE_DISABLE=${GUSE_DISABLE/nocxx};; - - mingw*|*-mingw*) - WITH_DEF_HEADERS="yes"; - KCAT="dev-util"; KPKG="w32api"; - LCAT="dev-util"; LPKG="mingw-runtime";; - - msp430) - STAGE_DEFAULT=${STAGE_BINUTILS};; - - nios2*) - BPKG="binutils-nios2"; - GPKG="gcc-nios2";; - - cell) einfo "The cell target is really an alias for the spu/ppu targets" - ${CROSSDEV} -t ppu || exit 1 - ${CROSSDEV} -t spu-elf || exit 1 - exit 0;; - spu*) TARCH=ppc64; - KPKG="[none]"; - LPKG="newlib";; - ppu*) TARCH=ppc64;; - - ps2) einfo "The ps2 target is really an alias for the ee/iop/dvp targets" - ${CROSSDEV} -t ee || exit 1 - ${CROSSDEV} -t iop || exit 1 - ${CROSSDEV} -t dvp || exit 1 - exit 0;; - ee*) TARCH=mips; - KPKG="[none]" - GVER="3.2.2"; BVER="2.14"; - STAGE_DEFAULT=${STAGE_C_ONLY}; - GUSE=${GUSE_DISABLE};; - iop*) TARCH=mips; - GVER="3.2.2"; BVER="2.14"; - STAGE_DEFAULT=${STAGE_C_ONLY}; - GUSE=${GUSE_DISABLE};; - dvp*) TARCH=mips; - GVER="3.2.2"; BVER="2.14"; - STAGE_DEFAULT=${STAGE_BINUTILS};; - esac - - # Tweak packages based upon CTARGET - case ${CTARGET} in - # Normal Linux host, just diff libc - *-dietlibc) LPKG="dietlibc"; LCAT="dev-libs";; - *-gnu*) LPKG="glibc";; - *-klibc) LPKG="klibc";; - *-uclibc*) LPKG="uclibc";; - *-uclinux) LPKG="uclibc";; - - # Windows targets - *-cygwin) - LCAT="dev-libs"; LPKG="cygwin"; - KPKG="[none]"; - ;; - - # Bare metal targets - *-newlib|*-elf) - LPKG="newlib" - KPKG="[none]" - STAGE_DEFAULT=${STAGE_LIBC} - ;; - - # Now for the BSDs ... - *-freebsd*) - LCAT="sys-freebsd" LPKG="freebsd-lib" - KPKG="[none]" - ;; - esac - - : ${LPKG=[none]} -} - -setup_portage_vars() { - PORTDIR_OVERLAYS=$(portageq envvar PORTDIR_OVERLAY) - PORTDIR_OVERLAY=${PORTDIR_OVERLAYS%% *} - PORTDIR=$(portageq envvar PORTDIR) - PORT_LOGDIR=$(portageq envvar PORT_LOGDIR) - PORT_LOGDIR=${PORT_LOGDIR:-/var/log/portage} - export PKGDIR=$(portageq envvar PKGDIR)/cross/${CTARGET} - export PORTAGE_TMPDIR=$(portageq envvar PORTAGE_TMPDIR)/cross/${CTARGET} - [[ ! -d ${PORT_LOGDIR} ]] && mkdir -p ${PORT_LOGDIR} - [[ ! -d ${PORTAGE_TMPDIR} ]] && mkdir -p ${PORTAGE_TMPDIR} -} - -uninstall() { - setup_portage_vars - - ewarn "Uninstalling target '${CTARGET}' ..." - - [[ -d ${PORTDIR_OVERLAY}/cross-${CTARGET} ]] \ - && rm -r ${PORTDIR_OVERLAY}/cross-${CTARGET} - sed -i -e "/^cross-${CTARGET}$/d" /etc/portage/categories - for f in package.{mask,keywords,use} ; do - f="/etc/portage/${f}" - if [[ -d ${f} ]] ; then - rm -f "${f}"/cross-${CTARGET} - elif [[ -f ${f} ]] ; then - sed -i -e "/cross-${CTARGET}\//d" "${f}" - fi - done - - if [[ ! -d /var/db/pkg/cross-${CTARGET} ]] ; then - eerror "${CTARGET} is not installed." - exit 1 - fi - - export CLEAN_DELAY=0 - cd /var/db/pkg - for p in cross-${CTARGET}/* ; do - emerge -C =${p} || exit 1 - done - for b in addr2line ar as c++filt ld nm objcopy objdump ranlib readelf size strings strip ; do - rm -f /usr/bin/${CTARGET}-${b} /usr/${CTARGET}/bin/${b} - done - rm -f /usr/${CTARGET}/{sys-include,usr} - rm -f /usr/bin/${CTARGET}-{gcc,{c,g}++,cpp,gfortran,gcov} - rmdir /usr/${CTARGET}/{include/asm,include} &> /dev/null - for d in /usr/${CTARGET} /usr/lib/gcc{,-lib}/${CTARGET} ; do - if [[ ! -d ${d} ]] ; then - rm -f "${d}" &> /dev/null - else - rmdir "${d}" &> /dev/null && continue - rm -ri "${d}" - fi - done - rm -f /etc/env.d/{binutils,gcc}/config-${CTARGET} - rmdir /var/db/pkg/cross-${CTARGET} - - 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 ; } -is_s2() { is_stage 2 ; } -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_insight() { [[ ${EX_INSIGHT} == "yes" ]] ; } - -hr() { - local c=${COLUMNS:-0} - if [[ ${c} -eq 0 ]] ; then - c=$(stty size 2> /dev/null) - [[ -z ${c} ]] \ - && c=50 \ - || c=${c##* } - fi - local ext=${1:- _ - ~ -} - local sext=${ext//?/ } - local br=$(printf "%$((c + ${#ext}))s") - local banner=${br//${sext}/${ext}} - echo "${banner:0:${c}}" -} - -################## -### setup vars ### -CROSSDEV=$0 -EOPTS= -UOPTS= -TARCH= -HARCH=$(unset ARCH ; portageq envvar ARCH) -CTARGET= -STAGE="" -BCAT="sys-devel" ; BPKG="binutils" ; BVER="" ; BUSE="" -GCAT="sys-devel" ; GPKG="gcc" ; GVER="" ; GUSE="" -KCAT="sys-kernel" ; KPKG="linux-headers" ; KVER="" ; KUSE="" -LCAT="sys-libs" ; LPKG="" ; LVER="" ; LUSE="" -DEFAULT_VER="[latest]" -GUSE_DISABLE="-boundschecking -d -fortran -gtk -gcj -libffi -mudflap nocxx -objc -objc++ -objc-gc -openmp" -GUSE_DISABLE_STAGE_2=${GUSE_DISABLE/-fortran} -GUSE_DISABLE_STAGE_2=${GUSE_DISABLE_STAGE_2/nocxx} -WITH_HEADERS="COW" WITH_DEF_HEADERS="yes" #227065 gcc-4.3+ is a pita w/out headers -EX_FAST="no" -EX_GCC="no" -EX_GDB="no" -SET_X="no" - -while [[ $# -gt 0 ]] ; do - case $1 in - -V|--version) echo "crossdev-GENTOO_PV"; exit 0;; - -t|--target) shift; parse_target $1;; - --b|--binutils) shift; BVER=$1;; - --g|--gcc) shift; GVER=$1;; - --k|--kernel) shift; KVER=$1;; - --l|--libc) shift; LVER=$1;; - -S|--stable) DEFAULT_VER="[stable]";; - -C|--clean) shift; parse_target $1; uninstall;; - -s?|--stage?) STAGE=${1:0-1};; - --ex-only) EX_FAST="yes";; - --ex-gcc) EX_GCC="yes";; - --ex-gdb) EX_GDB="yes";; - --ex-insight) EX_INSIGHT="yes";; - --with-*) eval $(set_withval $1);; - --without-*) eval $(set_withval $1);; - -x) SET_X="yes";; - -P|--portage) UOPTS="${UOPTS} $2"; shift;; - -b|-d|-p|-v|-q) UOPTS="${UOPTS} $1";; - -pv|-vp) UOPTS="${UOPTS} -p -v";; - -h|--help) usage;; - -*) eerror "UNKNOWN OPTION: '$1'" ; usage 1;; - *) parse_target $1;; - esac - shift -done -[[ ${SET_X} == "yes" ]] && set -x - -BVER=${BVER:-${DEFAULT_VER}} -GVER=${GVER:-${DEFAULT_VER}} -KVER=${KVER:-${DEFAULT_VER}} -LVER=${LVER:-${DEFAULT_VER}} -STAGE=${STAGE:-${STAGE_DEFAULT}} -[[ -z ${CTARGET} ]] && usage 1 -for with in HEADERS ; do - var=WITH_${with} defvar=WITH_DEF_${with} - [[ ${!var} == "COW" ]] && eval ${var}=${!defvar} -done - -##################### -### sanity checks ### -if ! binutils-config --version &> /dev/null ; then - eerror "Sorry, but your host system needs to have binutils-config" - eerror "in order to keep from screwing things up." - eerror "That means you must be running unstable versions of" - eerror "both binutils and binutils-config." - exit 1 -fi -if ! egrep -qs 'inherit.*toolchain( |$)' /var/db/pkg/sys-devel/gcc-*/*.ebuild ; then - eerror "Sorry, but your host system needs to have" - eerror "an unstable version of gcc in order to" - eerror "keep from screwing things up." - exit 1 -fi - -setup_portage_vars -if [[ -z ${PORTDIR_OVERLAY} ]] ; then - eerror "You need to set PORTDIR_OVERLAY in your make.conf." - eerror "A standard setting is /usr/local/portage" - exit 1 -fi - -if [[ $(unset CHOST ; portageq envvar CHOST) == ${CTARGET} ]] ; then - eerror "Refusing to create a cross-compiler using the same" - eerror "target name as your host utils." - exit 1 -fi - -# grab user settings -for v in ABI UCLIBC_CPU USE BVER GVER KVER LVER STAGE CFLAGS LDFLAGS ASFLAGS ; do - if [[ -e /etc/portage/crossdev/${CTARGET}/${v} ]] ; then - # yes, quotes are needed in this instance (export $var="...") - export ${v}="$(</etc/portage/crossdev/${CTARGET}/${v})" - einfo "Restoring user setting '${v}' to '${!v}'" - fi - if [[ -e /etc/portage/crossdev/${CTARGET}/env ]] ; then - einfo "Restoring generic user env settings" - source /etc/portage/crossdev/${CTARGET}/env - fi -done - -##################### -### do the emerge ### -( -hr - -einfo "Host Portage ARCH: ${HARCH}" -einfo "Target Portage ARCH: ${TARCH}" -einfo "Target System: ${CTARGET}" -einfo "Stage: ${STAGE} (${STAGE_DISP[${STAGE}]})" -echo -ex_fast || { -is_s0 && { -einfo "binutils: ${BPKG}-${BVER}" -} -is_s1 && { -einfo "gcc: ${GPKG}-${GVER}" -} -is_s2 && { -[[ ${KPKG} != "[none]" ]] && \ -einfo "headers: ${KPKG}-${KVER}" -} -is_s3 && { -einfo "libc: ${LPKG}-${LVER}" -} -} -ex_gcc && { -einfo "Extra: gcc pass: DO IT" -} -ex_gdb && { -einfo "Extra: gdb: DO IT" -} -ex_insight && { -einfo "Extra: insight: DO IT" -} -echo -einfo "PORTDIR_OVERLAY: ${PORTDIR_OVERLAY}" -einfo "PORT_LOGDIR: ${PORT_LOGDIR}" -einfo "PKGDIR: ${PKGDIR}" -einfo "PORTAGE_TMPDIR: ${PORTAGE_TMPDIR}" -hr -) >& ${PORT_LOGDIR}/cross-${CTARGET}-info.log || exit 1 -cat ${PORT_LOGDIR}/cross-${CTARGET}-info.log -emerge -v --info >> ${PORT_LOGDIR}/cross-${CTARGET}-info.log - -#################################### -### Fix up portage files / paths ### - -set_keywords() { - local pkg=$1 ver=$2 output - [[ -z ${pkg} ]] && return 0 - if [[ -f package.keywords ]] ; then - output="package.keywords" - sed -i -e "/^cross-${CTARGET}\/${pkg} /d" ${output} - else - output="package.keywords/cross-${CTARGET}" - fi - if [[ ${ver} == "["*"]" ]] || [[ -z ${ver} ]] ; then - local keywords="" - case ${ver} in - "[stable]") keywords="${TARCH}";; - *) keywords="${TARCH} ~${TARCH}";; - esac - [[ "${TARCH}" != "${HARCH}" ]] && keywords="${keywords} -${HARCH} -~${HARCH}" - echo "cross-${CTARGET}/${pkg} ${keywords}" >> ${output} - else - echo "cross-${CTARGET}/${pkg} * ~* **" >> ${output} - if [[ -f package.mask ]] ; then - output="package.mask" - sed -i -e "/cross-${CTARGET}\/${pkg}/d" ${output} - else - output="package.mask/cross-${CTARGET}" - fi - echo ">cross-${CTARGET}/${pkg}-${ver}" >> ${output} - fi -} -set_use() { - local pkg=$1 output - shift - local use=$@ - [[ -z ${use} ]] && return 0 - if [[ -f package.use ]] ; then - output="package.use" - else - output="package.use/cross-${CTARGET}" - fi - [[ -e ${output} ]] && sed -i -e "/cross-${CTARGET}\/${pkg}/d" ${output} - echo "cross-${CTARGET}/${pkg} ${use}" >> ${output} -} -set_links() { - local cat=$1 pkg=$2 - local s srcdir=${PORTDIR} - rm -f "${PORTDIR_OVERLAY}"/cross-${CTARGET}/${pkg} - for s in ${PORTDIR_OVERLAYS} ; do - if [[ -d ${s}/${cat}/${pkg} ]] ; then - einfo "Using ${cat}/${pkg} from ${s} instead of ${PORTDIR}" - srcdir=${s} - break - fi - done - ln -s "${srcdir}"/${cat}/${pkg} "${PORTDIR_OVERLAY}"/cross-${CTARGET}/${pkg} -} -set_portage() { - local cat=$1 pkg=$2 ver=$3 - shift ; shift ; shift - local use=$@ - - [[ ${pkg} == "[none]" ]] && return 0 - - set_keywords ${pkg} ${ver} - set_use ${pkg} ${use} - set_links ${cat} ${pkg} -} - -mkdir -p /etc/portage -grep -qs "^cross-${CTARGET}$" /etc/portage/categories \ - || echo cross-${CTARGET} >> /etc/portage/categories -mkdir -p "${PORTDIR_OVERLAY}"/cross-${CTARGET} -cd /etc/portage -for f in package.{keywords,mask,use} ; do - [[ -f ${f} ]] && continue - mkdir -p ${f} - rm -f ${f}/cross-${CTARGET} -done - -set_portage ${BCAT} ${BPKG} ${BVER} -set_portage ${GCAT} ${GPKG} ${GVER} -set_portage ${KCAT} ${KPKG} ${KVER} -set_portage ${LCAT} ${LPKG} ${LVER} -set_portage sys-devel gdb -set_portage dev-util insight - -################# -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 - - local logfile=${PORT_LOGDIR}/cross-${CTARGET} - [[ -z $2 ]] \ - && logfile=${logfile}-$1.log \ - || logfile=${logfile}-$2.log - - einfo "Log: ${logfile}" - ebegin "Emerging cross-${2:-$1}" - - set_use $1 ${USE} - - if [[ ${UOPTS/-v} != ${UOPTS} || ${UOPTS/-p} != ${UOPTS} ]] ; then - emerge cross-${CTARGET}/$1 ${EOPTS} \ - 2>&1 | tee ${logfile} - else - emerge cross-${CTARGET}/$1 ${EOPTS} \ - >& ${logfile} - fi - local _pipestatus=${PIPESTATUS[*]} - [[ "${_pipestatus// /}" -eq 0 ]] || die "$1 failed :(" - eend 0 -} - -# we include the '-u' so that we don't re-emerge packages -EOPTS_DEF="${UOPTS} --nodeps --oneshot" -EOPTS_UP="${EOPTS_DEF} -u" -EOPTS=${EOPTS_UP} -# keep things like --ask from screwing us up -export EMERGE_DEFAULT_OPTS="" - -# maybe someday this work, but that day != today -USE="${USE} -selinux" - -# make sure multilib crap doesn't screw us over -export ABI=${ABI:-pos} LIBDIR_pos="lib" CFLAGS_pos="" LDFLAGS_pos="" - -# only allow UCLIBC_CPU from env, not from make.conf/profile -export UCLIBC_CPU=${UCLIBC_CPU} - -ex_fast || { - -ebegin "Forcing the latest versions of {binutils,gcc}-config/gnuconfig" -emerge {binutils,gcc}-config gnuconfig -qu --ignore-default-opts &> /dev/null -eend $? || exit 1 - -doemerge ${BPKG} - -is_s1 || exit 0 -if with_headers ; then -USE="${KUSE} ${USE}" CROSSCOMPILE_OPTS="headers-only" \ - doemerge ${KPKG} ${KPKG}-quick -[[ -n ${LPKG} ]] && \ -USE="${LUSE} ${USE}" CROSSCOMPILE_OPTS="headers-only" \ - doemerge ${LPKG} ${LPKG}-headers -fi -USE="${GUSE} ${USE} ${GUSE_DISABLE}" CROSSCOMPILE_OPTS="bootstrap" \ - doemerge ${GPKG} ${GPKG}-stage1 - -is_s2 || exit 0 -set_eopts_on_pkg_status ${KPKG} crosscompile_opts_headers-only -USE="${KUSE} ${USE}" CROSSCOMPILE_OPTS="" \ - doemerge ${KPKG} - -is_s3 || exit 0 -[[ -z ${LPKG} ]] && die "Invalid target '${CTARGET}': unknown libc" -set_eopts_on_pkg_status ${LPKG} crosscompile_opts_headers-only -USE="${LUSE} ${USE}" CROSSCOMPILE_OPTS="" \ - doemerge ${LPKG} - -is_s4 || exit 0 -set_eopts_on_pkg_status ${GPKG} crosscompile_opts_bootstrap -EOPTS="${EOPTS_UP} --newuse" -USE="${GUSE} ${USE} ${GUSE_DISABLE_STAGE_2}" \ - doemerge ${GPKG} ${GPKG}-stage2 - -} - -EOPTS="${EOPTS_UP} --newuse" -ex_gcc && USE="${GUSE} ${USE}" doemerge ${GPKG} ${GPKG}-extra -ex_gdb && doemerge gdb -ex_insight && doemerge insight - -exit 0 diff --git a/sys-devel/crossdev/files/crossdev-stable b/sys-devel/crossdev/files/crossdev-stable deleted file mode 100755 index 54b6e0457bf6..000000000000 --- a/sys-devel/crossdev/files/crossdev-stable +++ /dev/null @@ -1,646 +0,0 @@ -#!/bin/bash -# Copyright 1999-2007 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/files/crossdev-stable,v 1.6 2008/11/28 09:19:41 vapier Exp $ - -cd / -umask 0022 #159111 - -if [[ ${ROOT:-/} != "/" ]] ; then - echo "Sorry, but crossdev does not support ROOT." - exit 2 -fi - -source /etc/init.d/functions.sh || exit 1 -esyslog() { :; } -die() { - echo - eerror $* - eerror If you file a bug, please attach the following logfiles: - eerror ${PORT_LOGDIR}/cross-${CTARGET}-info.log - eerror ${logfile} - exit 1 -} - -usage() { - local exit_status=${1:-0} - shift -cat << EOF -Usage: ${HILITE}crossdev${NORMAL} ${GOOD}[options]${NORMAL} ${BRACKET}--target TARGET${NORMAL} - -Options: - ${GOOD}--b, --binutils${NORMAL} ver Specify version of binutils to use - ${GOOD}--g, --gcc${NORMAL} ver Specify version of gcc to use - ${GOOD}--k, --kernel${NORMAL} ver Specify version of kernel headers to use - ${GOOD}--l, --libc${NORMAL} ver Specify version of libc to use - ${GOOD}-S, --stable${NORMAL} Use latest stable versions as default - ${GOOD}-C, --clean${NORMAL} target Uninstall specified target - ${GOOD}-P, --portage${NORMAL} opts Options to pass to emerge (see emerge(1)) - ${GOOD}--with[out]-headers${NORMAL} Build C library headers before C compiler? -Stage Options: - ${GOOD}-s0, --stage0${NORMAL} Build just binutils - ${GOOD}-s1, --stage1${NORMAL} Also build a C compiler (no libc/C++) - ${GOOD}-s2, --stage2${NORMAL} Also build kernel headers - ${GOOD}-s3, --stage3${NORMAL} Also build the C library (no C++) - ${GOOD}-s4, --stage4${NORMAL} Also build a C++ compiler [default] -Extra Fun (must be run after above stages): - ${GOOD}--ex-only${NORMAL} Skip the stage steps above - ${GOOD}--ex-gcc${NORMAL} Build extra gcc targets (gcj/ada/etc...) - ${GOOD}--ex-gdb${NORMAL} Build a cross gdb - ${GOOD}--ex-insight${NORMAL} Build a cross insight -${BRACKET}Target (-t)${NORMAL} takes a tuple ${BRACKET}ARCH-VENDOR-OS-LIBC${NORMAL}; see 'crossdev -t help' -EOF - [[ -n $* ]] && echo && eerror "Error: $*" - exit ${exit_status} -} -STAGE_BINUTILS=0 -STAGE_C_ONLY=1 -STAGE_C_KERNEL=2 -STAGE_LIBC=3 -STAGE_C_CPP=4 -STAGE_DEFAULT=${STAGE_C_CPP} -STAGE_DISP=( "binutils" "C compiler only" "kernel headers" "C compiler & libc" "C/C++ compiler" ) - -parse_target() { - CTARGET=${1#cross-} - - [[ -z ${CTARGET} ]] && usage 1 - - if [[ ${CTARGET} == "help" ]] ; then - cat <<-EOF - Supported Architectures: - - alpha - arm / armeb - - hppa (parisc) - ia64 - - i386 / i486 / i586 / i686 (x86) - m68k - - mips / mipsel / mips64 / mips64el - - powerpc (ppc) / powerpc64 (ppc64) - - sparc / sparc64 - s390 / s390x - - sh / sh[1-5] / sh64 - x86_64 (amd64) - Supported C Libraries: - - glibc (gnu) - - klibc [prob wont work] - - newlib [bare metal/no operating system] - - uclibc [not all arches are ported] - Special Targets: - - avr http://www.nongnu.org/avr-libc/ - - bfin http://blackfin.uclinux.org/ - - h8300 http://h8300-hms.sourceforge.net/ - - mingw32 http://www.mingw.org/ - - msp430 http://mspgcc.sourceforge.net/ - - nios2 http://www.altera.com/products/ip/processors/nios2/ni2-index.html - - xc16x http://www.infineon.com/ - - ee / iop / dvp (ps2) [Playstation 2 targets] - - ppu / spu (cell) [Cell/Playstation 3 targets] - Softfloat toolchains: - Include 'softfloat' in the 'vendor' field - e.g. armeb-softfloat-linux-uclibc powerpc-booya_softfloat-linux-gnu - EOF - exit 0 - fi - - # Allow for laziness - if [[ ${CTARGET} != *-* ]] ; then - # First translate portage ARCH to actual tuple - case ${CTARGET} in - amd64) CTARGET="x86_64";; - parisc*) CTARGET=${CTARGET/parisc/hppa};; - ppc|ppc64) CTARGET=${CTARGET/ppc/powerpc};; - x86) CTARGET="i686";; - esac - - # Then add common suffixes - case ${CTARGET} in - i?86|x86_64) - CTARGET="${CTARGET}-pc-linux-gnu";; - s390*) - CTARGET="${CTARGET}-ibm-linux-gnu";; - alpha*|arm*|cris*|hppa*|ia64*|m68*|mips*|powerpc*|sparc*|sh*) - CTARGET="${CTARGET}-unknown-linux-gnu";; - bfin*|h8300*|nios2*|spu*|xc16x*) - CTARGET="${CTARGET}-elf";; - esac - fi - - # Figure out an acceptable portage ARCH for this target - case ${CTARGET} in - alpha*) TARCH=alpha;; - arm*) TARCH=arm;; - hppa*) TARCH=hppa;; - ia64*) TARCH=ia64 WITH_DEF_HEADERS="yes";; - i?86*) TARCH=x86;; - m68*) TARCH=m68k;; - mips*) TARCH=mips;; - powerpc64*) TARCH=ppc64;; - powerpc*) TARCH=ppc;; - sparc*) TARCH=sparc;; - s390*) TARCH=s390;; - sh*) TARCH=sh;; - x86_64*) TARCH=amd64;; - *) TARCH="*";; - esac - case ${CTARGET} in - *-freebsd*) TARCH="${TARCH}-fbsd";; - esac - - # Now account for all the "special" architectures out there - case ${CTARGET} in - avr*) KPKG="[none]"; STAGE_DEFAULT=${STAGE_LIBC}; - LCAT="dev-embedded"; LPKG="avr-libc"; - GUSE=${GUSE_DISABLE};; - - mingw*|*-mingw*) - WITH_DEF_HEADERS="yes"; - KCAT="dev-util"; KPKG="w32api"; - LCAT="dev-util"; LPKG="mingw-runtime";; - - msp430) - STAGE_DEFAULT=${STAGE_BINUTILS};; - - nios2*) - BPKG="binutils-nios2"; - GPKG="gcc-nios2";; - - cell) einfo "The cell target is really an alias for the spu/ppu targets" - ${CROSSDEV} -t ppu || exit 1 - ${CROSSDEV} -t spu-elf || exit 1 - exit 0;; - spu*) TARCH=ppc64; - KPKG="[none]"; - LPKG="newlib";; - ppu*) TARCH=ppc64;; - - ps2) einfo "The ps2 target is really an alias for the ee/iop/dvp targets" - ${CROSSDEV} -t ee || exit 1 - ${CROSSDEV} -t iop || exit 1 - ${CROSSDEV} -t dvp || exit 1 - exit 0;; - ee*) TARCH=mips; - KPKG="[none]" - GVER="3.2.2"; BVER="2.14"; - STAGE_DEFAULT=${STAGE_C_ONLY}; - GUSE=${GUSE_DISABLE};; - iop*) TARCH=mips; - GVER="3.2.2"; BVER="2.14"; - STAGE_DEFAULT=${STAGE_C_ONLY}; - GUSE=${GUSE_DISABLE};; - dvp*) TARCH=mips; - GVER="3.2.2"; BVER="2.14"; - STAGE_DEFAULT=${STAGE_BINUTILS};; - esac - - # Tweak packages based upon CTARGET - case ${CTARGET} in - # Normal Linux host, just diff libc - *-dietlibc) LPKG="dietlibc"; LCAT="dev-libs";; - *-gnu*) LPKG="glibc";; - *-klibc) LPKG="klibc";; - *-uclibc*) LPKG="uclibc";; - *-uclinux) LPKG="uclibc";; - - # Bare metal targets - *-newlib|*-elf) - LPKG="newlib" - KPKG="[none]" - STAGE_DEFAULT=${STAGE_LIBC} - ;; - - # Now for the BSDs ... - *-freebsd*) - LCAT="sys-freebsd" LPKG="freebsd-lib" - KPKG="[none]" - ;; - esac -} - -setup_portage_vars() { - PORTDIR_OVERLAYS=$(portageq envvar PORTDIR_OVERLAY) - PORTDIR_OVERLAY=${PORTDIR_OVERLAYS%% *} - PORTDIR=$(portageq envvar PORTDIR) - PORT_LOGDIR=$(portageq envvar PORT_LOGDIR) - PORT_LOGDIR=${PORT_LOGDIR:-/var/log/portage} - export PKGDIR=$(portageq envvar PKGDIR)/cross/${CTARGET} - export PORTAGE_TMPDIR=$(portageq envvar PORTAGE_TMPDIR)/cross/${CTARGET} - [[ ! -d ${PORT_LOGDIR} ]] && mkdir -p ${PORT_LOGDIR} - [[ ! -d ${PORTAGE_TMPDIR} ]] && mkdir -p ${PORTAGE_TMPDIR} -} - -uninstall() { - setup_portage_vars - - ewarn "Uninstalling target '${CTARGET}' ..." - - [[ -d ${PORTDIR_OVERLAY}/cross-${CTARGET} ]] \ - && rm -r ${PORTDIR_OVERLAY}/cross-${CTARGET} - sed -i -e "/^cross-${CTARGET}$/d" /etc/portage/categories - for f in package.{mask,keywords,use} ; do - f="/etc/portage/${f}" - if [[ -d ${f} ]] ; then - rm -f "${f}"/cross-${CTARGET} - elif [[ -f ${f} ]] ; then - sed -i -e "/cross-${CTARGET}\//d" "${f}" - fi - done - - if [[ ! -d /var/db/pkg/cross-${CTARGET} ]] ; then - eerror "${CTARGET} is not installed." - exit 1 - fi - - export CLEAN_DELAY=0 - cd /var/db/pkg - for p in cross-${CTARGET}/* ; do - emerge -C =${p} || exit 1 - done - for b in addr2line ar as c++filt ld nm objcopy objdump ranlib readelf size strings strip ; do - rm -f /usr/bin/${CTARGET}-${b} /usr/${CTARGET}/bin/${b} - done - rm -f /usr/${CTARGET}/{sys-include,usr} - rm -f /usr/bin/${CTARGET}-{gcc,{c,g}++,cpp,gfortran,gcov} - rmdir /usr/${CTARGET}/{include/asm,include} &> /dev/null - for d in /usr/${CTARGET} /usr/lib/gcc{,-lib}/${CTARGET} ; do - if [[ ! -d ${d} ]] ; then - rm -f "${d}" &> /dev/null - else - rmdir "${d}" &> /dev/null && continue - rm -ri "${d}" - fi - done - rm -f /etc/env.d/{binutils,gcc}/config-${CTARGET} - rmdir /var/db/pkg/cross-${CTARGET} - - 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 ; } -is_s2() { is_stage 2 ; } -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_insight() { [[ ${EX_INSIGHT} == "yes" ]] ; } - -hr() { - local c=${COLUMNS:-0} - if [[ ${c} -eq 0 ]] ; then - c=$(stty size 2> /dev/null) - [[ -z ${c} ]] \ - && c=50 \ - || c=${c##* } - fi - local ext=${1:- _ - ~ -} - local sext=${ext//?/ } - local br=$(printf "%$((c + ${#ext}))s") - local banner=${br//${sext}/${ext}} - echo "${banner:0:${c}}" -} - -################## -### setup vars ### -CROSSDEV=$0 -EOPTS= -UOPTS= -TARCH= -HARCH=$(unset ARCH ; portageq envvar ARCH) -CTARGET= -STAGE="" -BCAT="sys-devel" ; BPKG="binutils" ; BVER="" ; BUSE="" -GCAT="sys-devel" ; GPKG="gcc" ; GVER="" ; GUSE="" -KCAT="sys-kernel" ; KPKG="linux-headers" ; KVER="" ; KUSE="" -LCAT="sys-libs" ; LPKG="" ; LVER="" ; LUSE="" -DEFAULT_VER="[latest]" -GUSE_DISABLE="-boundschecking -d -fortran -gtk -gcj -libffi -mudflap -objc -objc++ -objc-gc -openmp" -GUSE_DISABLE_STAGE_2=${GUSE_DISABLE/-fortran} -WITH_HEADERS="COW" WITH_DEF_HEADERS="yes" #227065 gcc-4.3+ is a pita w/out headers -EX_FAST="no" -EX_GCC="no" -EX_GDB="no" -SET_X="no" - -while [[ $# -gt 0 ]] ; do - case $1 in - -V|--version) echo "crossdev-GENTOO_PV"; exit 0;; - -t|--target) shift; parse_target $1;; - --b|--binutils) shift; BVER=$1;; - --g|--gcc) shift; GVER=$1;; - --k|--kernel) shift; KVER=$1;; - --l|--libc) shift; LVER=$1;; - -S|--stable) DEFAULT_VER="[stable]";; - -C|--clean) shift; parse_target $1; uninstall;; - -s?|--stage?) STAGE=${1:0-1};; - --ex-only) EX_FAST="yes";; - --ex-gcc) EX_GCC="yes";; - --ex-gdb) EX_GDB="yes";; - --ex-insight) EX_INSIGHT="yes";; - --with-*) eval $(set_withval $1);; - --without-*) eval $(set_withval $1);; - -x) SET_X="yes";; - -P|--portage) UOPTS="${UOPTS} $2"; shift;; - -b|-d|-p|-v|-q) UOPTS="${UOPTS} $1";; - -pv|-vp) UOPTS="${UOPTS} -p -v";; - -h|--help) usage;; - -*) eerror "UNKNOWN OPTION: '$1'" ; usage 1;; - *) parse_target $1;; - esac - shift -done -[[ ${SET_X} == "yes" ]] && set -x - -BVER=${BVER:-${DEFAULT_VER}} -GVER=${GVER:-${DEFAULT_VER}} -KVER=${KVER:-${DEFAULT_VER}} -LVER=${LVER:-${DEFAULT_VER}} -STAGE=${STAGE:-${STAGE_DEFAULT}} -[[ -z ${CTARGET} ]] && usage 1 -for with in HEADERS ; do - var=WITH_${with} defvar=WITH_DEF_${with} - [[ ${!var} == "COW" ]] && eval ${var}=${!defvar} -done - -##################### -### sanity checks ### -if ! binutils-config --version &> /dev/null ; then - eerror "Sorry, but your host system needs to have binutils-config" - eerror "in order to keep from screwing things up." - eerror "That means you must be running unstable versions of" - eerror "both binutils and binutils-config." - exit 1 -fi -if ! egrep -qs 'inherit.*toolchain( |$)' /var/db/pkg/sys-devel/gcc-*/*.ebuild ; then - eerror "Sorry, but your host system needs to have" - eerror "an unstable version of gcc in order to" - eerror "keep from screwing things up." - exit 1 -fi - -setup_portage_vars -if [[ -z ${PORTDIR_OVERLAY} ]] ; then - eerror "You need to set PORTDIR_OVERLAY in your make.conf." - eerror "A standard setting is /usr/local/portage" - exit 1 -fi - -if [[ $(unset CHOST ; portageq envvar CHOST) == ${CTARGET} ]] ; then - eerror "Refusing to create a cross-compiler using the same" - eerror "target name as your host utils." - exit 1 -fi - -# grab user settings -for v in ABI UCLIBC_CPU USE BVER GVER KVER LVER STAGE CFLAGS LDFLAGS ASFLAGS ; do - if [[ -e /etc/portage/crossdev/${CTARGET}/${v} ]] ; then - # yes, quotes are needed in this instance (export $var="...") - export ${v}="$(</etc/portage/crossdev/${CTARGET}/${v})" - einfo "Restoring user setting '${v}' to '${!v}'" - fi - if [[ -e /etc/portage/crossdev/${CTARGET}/env ]] ; then - einfo "Restoring generic user env settings" - source /etc/portage/crossdev/${CTARGET}/env - fi -done - -##################### -### do the emerge ### -( -hr - -einfo "Host Portage ARCH: ${HARCH}" -einfo "Target Portage ARCH: ${TARCH}" -einfo "Target System: ${CTARGET}" -einfo "Stage: ${STAGE} (${STAGE_DISP[${STAGE}]})" -echo -ex_fast || { -is_s0 && { -einfo "binutils: ${BPKG}-${BVER}" -} -is_s1 && { -einfo "gcc: ${GPKG}-${GVER}" -} -is_s2 && { -[[ ${KPKG} != "[none]" ]] && \ -einfo "headers: ${KPKG}-${KVER}" -} -is_s3 && { -einfo "libc: ${LPKG}-${LVER}" -} -} -ex_gcc && { -einfo "Extra: gcc pass: DO IT" -} -ex_gdb && { -einfo "Extra: gdb: DO IT" -} -ex_insight && { -einfo "Extra: insight: DO IT" -} -echo -einfo "PORTDIR_OVERLAY: ${PORTDIR_OVERLAY}" -einfo "PORT_LOGDIR: ${PORT_LOGDIR}" -einfo "PKGDIR: ${PKGDIR}" -einfo "PORTAGE_TMPDIR: ${PORTAGE_TMPDIR}" -hr -) >& ${PORT_LOGDIR}/cross-${CTARGET}-info.log || exit 1 -cat ${PORT_LOGDIR}/cross-${CTARGET}-info.log -emerge -v --info >> ${PORT_LOGDIR}/cross-${CTARGET}-info.log - -#################################### -### Fix up portage files / paths ### - -set_keywords() { - local pkg=$1 ver=$2 output - [[ -z ${pkg} ]] && return 0 - if [[ -f package.keywords ]] ; then - output="package.keywords" - sed -i -e "/^cross-${CTARGET}\/${pkg} /d" ${output} - else - output="package.keywords/cross-${CTARGET}" - fi - if [[ ${ver} == "["*"]" ]] || [[ -z ${ver} ]] ; then - local keywords="" - case ${ver} in - "[stable]") keywords="${TARCH}";; - *) keywords="${TARCH} ~${TARCH}";; - esac - [[ "${TARCH}" != "${HARCH}" ]] && keywords="${keywords} -${HARCH} -~${HARCH}" - echo "cross-${CTARGET}/${pkg} ${keywords}" >> ${output} - else - echo "cross-${CTARGET}/${pkg} * ~* **" >> ${output} - if [[ -f package.mask ]] ; then - output="package.mask" - sed -i -e "/cross-${CTARGET}\/${pkg}/d" ${output} - else - output="package.mask/cross-${CTARGET}" - fi - echo ">cross-${CTARGET}/${pkg}-${ver}" >> ${output} - fi -} -set_use() { - local pkg=$1 output - shift - local use=$@ - [[ -z ${use} ]] && return 0 - if [[ -f package.use ]] ; then - output="package.use" - else - output="package.use/cross-${CTARGET}" - fi - [[ -e ${output} ]] && sed -i -e "/cross-${CTARGET}\/${pkg}/d" ${output} - echo "cross-${CTARGET}/${pkg} ${use}" >> ${output} -} -set_links() { - local cat=$1 pkg=$2 - local s srcdir=${PORTDIR} - rm -f "${PORTDIR_OVERLAY}"/cross-${CTARGET}/${pkg} - for s in ${PORTDIR_OVERLAYS} ; do - if [[ -d ${s}/${cat}/${pkg} ]] ; then - einfo "Using ${cat}/${pkg} from ${s} instead of ${PORTDIR}" - srcdir=${s} - break - fi - done - ln -s "${srcdir}"/${cat}/${pkg} "${PORTDIR_OVERLAY}"/cross-${CTARGET}/${pkg} -} -set_portage() { - local cat=$1 pkg=$2 ver=$3 - shift ; shift ; shift - local use=$@ - - [[ ${pkg} == "[none]" ]] && return 0 - - set_keywords ${pkg} ${ver} - set_use ${pkg} ${use} - set_links ${cat} ${pkg} -} - -mkdir -p /etc/portage -grep -qs "^cross-${CTARGET}$" /etc/portage/categories \ - || echo cross-${CTARGET} >> /etc/portage/categories -mkdir -p "${PORTDIR_OVERLAY}"/cross-${CTARGET} -cd /etc/portage -for f in package.{keywords,mask,use} ; do - [[ -f ${f} ]] && continue - mkdir -p ${f} - rm -f ${f}/cross-${CTARGET} -done - -set_portage ${BCAT} ${BPKG} ${BVER} -set_portage ${GCAT} ${GPKG} ${GVER} -set_portage ${KCAT} ${KPKG} ${KVER} -set_portage ${LCAT} ${LPKG} ${LVER} -set_portage sys-devel gdb -set_portage dev-util insight - -################# -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 - - local logfile=${PORT_LOGDIR}/cross-${CTARGET} - [[ -z $2 ]] \ - && logfile=${logfile}-$1.log \ - || logfile=${logfile}-$2.log - - einfo "Log: ${logfile}" - ebegin "Emerging cross-${2:-$1}" - - set_use $1 ${USE} - - if [[ ${UOPTS/-v} != ${UOPTS} || ${UOPTS/-p} != ${UOPTS} ]] ; then - emerge cross-${CTARGET}/$1 ${EOPTS} \ - 2>&1 | tee ${logfile} - else - emerge cross-${CTARGET}/$1 ${EOPTS} \ - >& ${logfile} - fi - local _pipestatus=${PIPESTATUS[*]} - [[ "${_pipestatus// /}" -eq 0 ]] || die "$1 failed :(" - eend 0 -} - -# we include the '-u' so that we don't re-emerge packages -EOPTS_DEF="${UOPTS} --nodeps --oneshot" -EOPTS_UP="${EOPTS_DEF} -u" -EOPTS=${EOPTS_UP} -# keep things like --ask from screwing us up -export EMERGE_DEFAULT_OPTS="" - -# maybe someday this work, but that day != today -USE="${USE} -selinux" - -# make sure multilib crap doesn't screw us over -export ABI=${ABI:-pos} LIBDIR_pos="lib" CFLAGS_pos="" LDFLAGS_pos="" - -# only allow UCLIBC_CPU from env, not from make.conf/profile -export UCLIBC_CPU=${UCLIBC_CPU} - -ex_fast || { - -ebegin "Forcing the latest versions of {binutils,gcc}-config/gnuconfig" -emerge {binutils,gcc}-config gnuconfig -qu --ignore-default-opts &> /dev/null -eend $? || exit 1 - -doemerge ${BPKG} - -is_s1 || exit 0 -if with_headers ; then -USE="${KUSE} ${USE}" CROSSCOMPILE_OPTS="headers-only" \ - doemerge ${KPKG} ${KPKG}-quick -[[ -n ${LPKG} ]] && \ -USE="${LUSE} ${USE}" CROSSCOMPILE_OPTS="headers-only" \ - doemerge ${LPKG} ${LPKG}-headers -fi -USE="${GUSE} ${USE} ${GUSE_DISABLE} nocxx" CROSSCOMPILE_OPTS="bootstrap" \ - doemerge ${GPKG} ${GPKG}-stage1 - -is_s2 || exit 0 -set_eopts_on_pkg_status ${KPKG} crosscompile_opts_headers-only -USE="${KUSE} ${USE}" CROSSCOMPILE_OPTS="" \ - doemerge ${KPKG} - -is_s3 || exit 0 -[[ -z ${LPKG} ]] && die "Invalid target '${CTARGET}': unknown libc" -set_eopts_on_pkg_status ${LPKG} crosscompile_opts_headers-only -USE="${LUSE} ${USE}" CROSSCOMPILE_OPTS="" \ - doemerge ${LPKG} - -is_s4 || exit 0 -set_eopts_on_pkg_status ${GPKG} crosscompile_opts_bootstrap -EOPTS="${EOPTS_UP} --newuse" -USE="${GUSE} ${USE} ${GUSE_DISABLE_STAGE_2}" \ - doemerge ${GPKG} ${GPKG}-stage2 - -} - -EOPTS="${EOPTS_UP} --newuse" -ex_gcc && USE="${GUSE} ${USE}" doemerge ${GPKG} ${GPKG}-extra -ex_gdb && doemerge gdb -ex_insight && doemerge insight - -exit 0 |