From f107eb1859354b809e5e7b32e52ed1e2730f5099 Mon Sep 17 00:00:00 2001 From: XU Benda Date: Thu, 22 Dec 2011 13:37:11 +0900 Subject: [PATCH] prefixify build system and scripts. stuck at bug 395633 before we can go further. installing toolchain should work now. --- Makefile | 3 ++ crossdev | 72 ++++++++++++++++++++-------------------- settings.mk | 4 ++- wrappers/Makefile | 3 ++ wrappers/cross-emerge | 2 +- wrappers/emerge-wrapper | 6 ++-- wrappers/etc/portage/make.conf | 2 +- 7 files changed, 50 insertions(+), 42 deletions(-) diff --git a/Makefile b/Makefile index 15e6e74..1b1b43c 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,9 @@ include settings.mk all: + sed -i -e "s,@EPREFIX@,$(EPREFIX),g" \ + -e "s,@PORTAGE_CONFIGROOT@,$(PORTAGE_CONFIGROOT),g" crossdev + $(MAKE) -C wrappers install: $(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/ diff --git a/crossdev b/crossdev index 9362ce2..c289d81 100755 --- a/crossdev +++ b/crossdev @@ -12,9 +12,9 @@ if [[ ${ROOT:-/} != "/" ]] ; then exit 2 fi -CONFIGROOT="${PORTAGE_CONFIGROOT}/etc/portage" +CONFIGROOT="@EPREFIX@/etc/portage" -source /etc/init.d/functions.sh || exit 1 +source @EPREFIX@/etc/init.d/functions.sh || exit 1 esyslog() { :; } die() { echo @@ -106,13 +106,13 @@ parse_target() { - 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/ + - 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: @@ -284,7 +284,7 @@ setup_portage_vars() { CROSSDEV_OVERLAY=${CROSSDEV_OVERLAY%% *} # make sure we have a valid logdir - : ${PORT_LOGDIR:=/var/log/portage} + : ${PORT_LOGDIR:=@EPREFIX@/var/log/portage} mkdir -p "${PORT_LOGDIR}" } @@ -302,18 +302,18 @@ uninstall() { rm -f "${f}"/cross-${CTARGET} rmdir "${f}" 2>/dev/null elif [[ -f ${f} ]] ; then - sed -i -e "/cross-${CTARGET}\//d" "${f}" + sed -i -e "/cross-${CTARGET}\/d" "${f}" fi done rm -rf "${CONFIGROOT}"/env/cross-${CTARGET} rmdir "${CONFIGROOT}"/env 2>/dev/null - rm -f /etc/revdep-rebuild/05cross-${CTARGET} - rmdir /etc/revdep-rebuild 2>/dev/null + rm -f @EPREFIX@/etc/revdep-rebuild/05cross-${CTARGET} + rmdir @EPREFIX@/etc/revdep-rebuild 2>/dev/null - rmdir /var/db/pkg/cross-${CTARGET} 2>/dev/null - if [[ -d /var/db/pkg/cross-${CTARGET} ]] ; then + rmdir @EPREFIX@/var/db/pkg/cross-${CTARGET} 2>/dev/null + if [[ -d @EPREFIX@/var/db/pkg/cross-${CTARGET} ]] ; then export CLEAN_DELAY=0 - cd /var/db/pkg + cd @EPREFIX@/var/db/pkg for p in cross-${CTARGET}/* ; do emerge -qC =${p} || exit 1 done @@ -328,30 +328,30 @@ uninstall() { gprof ld nm objcopy objdump ranlib readelf \ size strings strip windmc windres do - rm -f /usr/bin/${CTARGET}-${b} /usr/${CTARGET}/bin/${b} + rm -f @EPREFIX@/usr/bin/${CTARGET}-${b} @EPREFIX@/usr/${CTARGET}/bin/${b} done - rm -f /usr/${CTARGET}/{sys-include,usr} - rmdir /usr/${CTARGET}/{include/asm,include} 2>/dev/null - rm -f /usr/bin/${CTARGET}-{gcc,{c,g}++,cpp,gfortran,gcov} - rm -f /etc/env.d/{binutils,gcc}/config-${CTARGET} + rm -f @EPREFIX@/usr/${CTARGET}/{sys-include,usr} + rmdir @EPREFIX@/usr/${CTARGET}/{include/asm,include} 2>/dev/null + rm -f @EPREFIX@/usr/bin/${CTARGET}-{gcc,{c,g}++,cpp,gfortran,gcov} + rm -f @EPREFIX@/etc/env.d/{binutils,gcc}/config-${CTARGET} # clean out files from crossdev itself - [[ -e /var/db/pkg/cross-${CTARGET} ]] && rmdir /var/db/pkg/cross-${CTARGET} - rm -f /usr/bin/${CTARGET}-{emerge,fix-root,pkg-config} /usr/bin/emerge-${CTARGET} + [[ -e @EPREFIX@/var/db/pkg/cross-${CTARGET} ]] && rmdir @EPREFIX@/var/db/pkg/cross-${CTARGET} + rm -f @EPREFIX@/usr/bin/${CTARGET}-{emerge,fix-root,pkg-config} @EPREFIX@/usr/bin/emerge-${CTARGET} local f for f in make.{conf,globals,profile} ; do - f="/usr/${CTARGET}/etc/${f}" + f="@EPREFIX@/usr/${CTARGET}/etc/${f}" [[ -L ${f} ]] && rm -f ${f} - f="/usr/${CTARGET}/etc/portage/${f##*/}" + f="@EPREFIX@/usr/${CTARGET}/etc/portage/${f##*/}" [[ -L ${f} ]] && rm -f ${f} done - find /usr/share/crossdev/etc/ -type f | \ + find @EPREFIX@/usr/share/crossdev/etc/ -type f | \ while read f ; do f1=${f} [[ ! -e ${f1} ]] && continue m1=$(set -- `md5sum ${f1}`; echo $1) - f2=/usr/${CTARGET}${f#/usr/share/crossdev} + f2=@EPREFIX@/usr/${CTARGET}${f#/usr/share/crossdev} [[ ! -e ${f2} ]] && continue m2=$(set -- `md5sum ${f2}`; echo $1) if [[ ${m1} == ${m2} ]] ; then @@ -360,7 +360,7 @@ uninstall() { done # clean out the sysroot, prompting the user if need be - for d in /usr/lib/gcc{,-lib}/${CTARGET} /usr/${CTARGET} ; do + for d in @EPREFIX@/usr/lib/gcc{,-lib}/${CTARGET} @EPREFIX@/usr/${CTARGET} ; do if [[ ! -d ${d} ]] ; then rm -f "${d}" else @@ -417,9 +417,9 @@ hr() { || c=${c##* } fi local ext=${1:- _ - ~ -} - local sext=${ext//?/ } + local sext=${ext/?/ } local br=$(printf "%$((c + ${#ext}))s") - local banner=${br//${sext}/${ext}} + local banner=${br/${sext}/${ext}} echo "${banner:0:${c}}" } ver_get_op() { @@ -528,7 +528,7 @@ done setup_portage_vars if [[ -z ${CROSSDEV_OVERLAY} ]] ; then eerror "You need to specify an output overlay. Please use --ov-output or set" - eerror "PORTDIR_OVERLAY in your make.conf. A standard setting is: /usr/local/portage" + eerror "PORTDIR_OVERLAY in your make.conf. A standard setting is: @EPREFIX@/usr/local/portage" exit 1 fi @@ -827,21 +827,21 @@ set_portage dev-util insight set_metadata # filter out revdep rebuild stuff #182601 -mkdir -p /etc/revdep-rebuild -echo "SEARCH_DIRS_MASK=/usr/${CTARGET}" > /etc/revdep-rebuild/05cross-${CTARGET} +mkdir -p @EPREFIX@/etc/revdep-rebuild +echo "SEARCH_DIRS_MASK=@EPREFIX@/usr/${CTARGET}" > @EPREFIX@/etc/revdep-rebuild/05cross-${CTARGET} hr ####################################### ### Create links for helper scripts ### -mkdir -p /usr/${CTARGET} +mkdir -p @EPREFIX@/usr/${CTARGET} emerge-wrapper --target ${CTARGET} --init || exit 1 ################# emerged_with_use() { local pkg=$1 use=$2 - grep -qs ${use} /var/db/pkg/cross-${CTARGET}/${pkg}-*/USE + grep -qs ${use} @EPREFIX@/var/db/pkg/cross-${CTARGET}/${pkg}-*/USE } set_eopts_on_pkg_status() { emerged_with_use "$@" \ @@ -869,7 +869,7 @@ doemerge() { >& "${logfile}" fi local _pipestatus=${PIPESTATUS[*]} - [[ "${_pipestatus// /}" -eq 0 ]] || die "$1 failed :(" + [[ "${_pipestatus/ /}" -eq 0 ]] || die "$1 failed :(" eend 0 } diff --git a/settings.mk b/settings.mk index 21063b9..75c4ec5 100644 --- a/settings.mk +++ b/settings.mk @@ -1,8 +1,10 @@ # Copyright 2008-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 +EPREFIX?=$(shell portageq envvar EPREFIX) +PORTAGE_CONFIGROOT?=$(shell portageq envvar PORTAGE_CONFIGROOT) DESTDIR ?= -PREFIX ?= /usr +PREFIX ?= $(EPREFIX)/usr INSTALL_DIR = install -m 755 -d INSTALL_EXEC = install -m 755 diff --git a/wrappers/Makefile b/wrappers/Makefile index eaa4115..504c8cd 100644 --- a/wrappers/Makefile +++ b/wrappers/Makefile @@ -9,6 +9,9 @@ SITE = $(PREFIX)/share/crossdev/include/site TOPDIR = all: + sed -i -e "s,@EPREFIX@,$(EPREFIX),g" cross-emerge + sed -i -e "s,@EPREFIX@,$(EPREFIX),g" emerge-wrapper + sed -i -e "s,@EPREFIX@,$(EPREFIX),g" etc/portage/make.conf install: $(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/ $(DESTDIR)/$(SITE) diff --git a/wrappers/cross-emerge b/wrappers/cross-emerge index 7af770b..269b9af 100755 --- a/wrappers/cross-emerge +++ b/wrappers/cross-emerge @@ -9,7 +9,7 @@ if [ -z "${CHOST}" ] ; then fi export CHOST -: ${SYSROOT=/usr/${CHOST}} +: ${SYSROOT=@EPREFIX@/usr/${CHOST}} : ${PORTAGE_CONFIGROOT=${SYSROOT}} export SYSROOT PORTAGE_CONFIGROOT diff --git a/wrappers/emerge-wrapper b/wrappers/emerge-wrapper index 20b32ff..a93f4e6 100755 --- a/wrappers/emerge-wrapper +++ b/wrappers/emerge-wrapper @@ -36,7 +36,7 @@ cross_wrap_etc() cp -a "${PREFIX}"/share/crossdev/etc ${SYSROOT}/ || return 1 local f - for f in /usr/share/portage/config/make.globals /etc/{portage/,}make.globals ; do + for f in @EPREFIX@/usr/share/portage/config/make.globals @EPREFIX@/etc/{portage/,}make.globals ; do if [[ -e ${f} ]] ; then ln -sf ${f} "${SYSROOT}"/etc/portage/make.globals || return 1 break @@ -103,7 +103,7 @@ cross_wrap_bin() cross_wrap() { - SYSROOT=/usr/${CHOST} + SYSROOT=@EPREFIX@/usr/${CHOST} cross_wrap_bin "$@" || return $? if [[ -d ${SYSROOT} ]] && [[ ! -d ${SYSROOT}/etc ]] ; then cross_wrap_etc "$@" @@ -127,7 +127,7 @@ cross_init() # recommended anymore ... [[ ${0##*/} != emerge-wrapper ]] && err "I wont understand things" - for CHOST in `find /usr/lib/gcc -maxdepth 1 -mindepth 1 -type d` ; do + for CHOST in `find @EPREFIX@/usr/lib/gcc -maxdepth 1 -mindepth 1 -type d` ; do CHOST=${CHOST##*/} [[ ${CHOST} == ${CBUILD} ]] && continue type -P -- ${CHOST}-gcc >/dev/null || continue diff --git a/wrappers/etc/portage/make.conf b/wrappers/etc/portage/make.conf index b9f29d9..a3b40dd 100644 --- a/wrappers/etc/portage/make.conf +++ b/wrappers/etc/portage/make.conf @@ -5,7 +5,7 @@ ARCH=__ARCH__ HOSTCC=__CBUILD__-gcc E_MACHINE=__E_MACHINE__ -ROOT=/usr/${CHOST}/ +ROOT=@EPREFIX@/usr/${CHOST}/ ACCEPT_KEYWORDS="__ARCH__ ~__ARCH__" -- 1.7.8.rc3