Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 438666 Details for
Bug 384167
sys-devel/crossdev: prefix support
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Extended patch against current devel HEAD
0001-Add-Prefix-support-to-crossdev.patch (text/plain), 8.72 KB, created by
Michael Weiser
on 2016-06-24 15:00:10 UTC
(
hide
)
Description:
Extended patch against current devel HEAD
Filename:
MIME Type:
Creator:
Michael Weiser
Created:
2016-06-24 15:00:10 UTC
Size:
8.72 KB
patch
obsolete
>From 16cda392e1ae1fc899194ea5b066e22e4d7c0088 Mon Sep 17 00:00:00 2001 >From: Michael Weiser <michael.weiser@gmx.de> >Date: Fri, 24 Jun 2016 16:18:10 +0200 >Subject: [PATCH] Add Prefix support to crossdev > >Introduce EPREFIX in the way suggested by vapier in bugs 473484 and >384167 (i.e. initialise from @GENTOO_PORTAGE_EPREFIX@ placeholder once >and then use as normal). Default PORTAGE_CONFIGROOT to EPREFIX. >--- > Makefile | 2 ++ > crossdev | 53 +++++++++++++++++++++++------------------- > wrappers/Makefile | 3 +++ > wrappers/cross-emerge | 6 ++++- > wrappers/cross-fix-root | 8 +++++-- > wrappers/cross-pkg-config | 6 ++++- > wrappers/emerge-wrapper | 6 ++++- > wrappers/etc/portage/make.conf | 2 +- > 8 files changed, 56 insertions(+), 30 deletions(-) > >diff --git a/Makefile b/Makefile >index a36fa1f..26c5b37 100644 >--- a/Makefile >+++ b/Makefile >@@ -4,6 +4,8 @@ > include settings.mk > > all: >+ sed -i -e "s,@GENTOO_PORTAGE_EPREFIX@,$(EPREFIX),g" crossdev >+ $(MAKE) -C wrappers > > install: > $(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/ >diff --git a/crossdev b/crossdev >index 877c68f..74e9e72 100755 >--- a/crossdev >+++ b/crossdev >@@ -7,15 +7,20 @@ CROSSDEV_VER="@CDEVPV@" > cd / > umask 0022 #159111 > >-: ${ROOT:=/} >-if [[ ${ROOT} != "/" ]] ; then >+EPREFIX="@GENTOO_PORTAGE_EPREFIX@" >+[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \ >+ EPREFIX="" >+ >+: ${ROOT:=${EPREFIX}} >+if [[ ${ROOT} != "${EPREFIX}" ]] ; then > echo "Sorry, but crossdev does not support ROOT." 1>&2 > exit 2 > fi > >+: ${PORTAGE_CONFIGROOT:="${EPREFIX}"} > CONFIGROOT="${PORTAGE_CONFIGROOT}/etc/portage" > >-source /etc/init.d/functions.sh || exit 1 >+source "${EPREFIX}"/etc/init.d/functions.sh || exit 1 > esyslog() { :; } > die_logs() { > echo >@@ -400,7 +405,7 @@ setup_portage_vars() { > fi > > # make sure we have a valid logdir >- : ${PORT_LOGDIR:=/var/log/portage} >+ : ${PORT_LOGDIR:="${EPREFIX}"/var/log/portage} > xmkdir -p "${PORT_LOGDIR}" > } > >@@ -421,8 +426,8 @@ uninstall() { > 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 > > # Unmerge all toolchain packages for this target. > qmerge -Uqy $(qlist -IC "cross-${CTARGET}/") >@@ -433,29 +438,29 @@ uninstall() { > gcc-{ar,nm,ranlib} gccbug gprof ld nm objcopy objdump \ > ranlib readelf size strings strip windmc windres > do >- rm -f /usr/bin/${CTARGET}-${f} /usr/${CTARGET}/bin/${f} >+ rm -f "${EPREFIX}"/usr/bin/${CTARGET}-${f} "${EPREFIX}"/usr/${CTARGET}/bin/${f} > 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} > > 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 >@@ -464,7 +469,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 >@@ -540,9 +545,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() { >@@ -970,7 +975,7 @@ set_env() { > output="env/cross-${CTARGET}/${pkg}.conf" > cat <<-EOF > "${output}" > SYMLINK_LIB=no >- COLLISION_IGNORE="\${COLLISION_IGNORE} /usr/lib/debug/.build-id" >+ COLLISION_IGNORE="\${COLLISION_IGNORE} ${EPREFIX}/usr/lib/debug/.build-id" > $(printf '%b' "${env}") > $(printf '%b' "${AENV}") > EOF >@@ -1124,15 +1129,15 @@ for_each_extra_pkg set_portage X > set_metadata > > # filter out revdep rebuild stuff #182601 >-xmkdir -p /etc/revdep-rebuild >-echo "SEARCH_DIRS_MASK=/usr/${CTARGET}" > /etc/revdep-rebuild/05cross-${CTARGET} >+xmkdir -p "${EPREFIX}"/etc/revdep-rebuild >+echo "SEARCH_DIRS_MASK=${EPREFIX}/usr/${CTARGET}" > "${EPREFIX}"/etc/revdep-rebuild/05cross-${CTARGET} > > hr > > ####################################### > ### Create links for helper scripts ### > >-xmkdir -p /usr/${CTARGET} >+xmkdir -p "${EPREFIX}"/usr/${CTARGET} > emerge-wrapper --target ${CTARGET} --init || exit 1 > > ################# >diff --git a/wrappers/Makefile b/wrappers/Makefile >index 144ecc1..3ace66b 100644 >--- a/wrappers/Makefile >+++ b/wrappers/Makefile >@@ -9,6 +9,9 @@ SITE = $(PREFIX)/share/crossdev/include/site > TOPDIR = > > all: >+ sed -i -e "s,@GENTOO_PORTAGE_EPREFIX@,$(EPREFIX),g" cross-emerge \ >+ emerge-wrapper cross-pkg-config etc/portage/make.conf \ >+ cross-fix-root > > install: > $(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/ $(DESTDIR)/$(SITE) >diff --git a/wrappers/cross-emerge b/wrappers/cross-emerge >index fc6117e..eaea140 100755 >--- a/wrappers/cross-emerge >+++ b/wrappers/cross-emerge >@@ -9,7 +9,11 @@ if [ -z "${CHOST}" ] ; then > fi > export CHOST > >-: ${SYSROOT=/usr/${CHOST}} >+EPREFIX="@GENTOO_PORTAGE_EPREFIX@" >+[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \ >+ EPREFIX="" >+ >+: ${SYSROOT="${EPREFIX}"/usr/${CHOST}} > : ${PORTAGE_CONFIGROOT=${SYSROOT}} > export SYSROOT PORTAGE_CONFIGROOT > >diff --git a/wrappers/cross-fix-root b/wrappers/cross-fix-root >index c74f9a0..7e11f87 100755 >--- a/wrappers/cross-fix-root >+++ b/wrappers/cross-fix-root >@@ -37,8 +37,12 @@ case $# in > ;; > 1) > if [ -e "/usr/${1:-..........}" ] ; then >- SYSROOT="/usr/$1" >- CROSS_BINDIR="/usr/bin" >+ EPREFIX="@GENTOO_PORTAGE_EPREFIX@" >+ [[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \ >+ EPREFIX="" >+ >+ SYSROOT="${EPREFIX}/usr/$1" >+ CROSS_BINDIR="${EPREFIX}/usr/bin" > CROSS_PREFIX="$1-" > else > usage >diff --git a/wrappers/cross-pkg-config b/wrappers/cross-pkg-config >index e7a234c..c19198b 100755 >--- a/wrappers/cross-pkg-config >+++ b/wrappers/cross-pkg-config >@@ -58,8 +58,12 @@ if [ -z "${SYSROOT}" ] ; then > SYSROOT=${STAGEDIR} > EXTRA_PKG_CONFIG_LIBDIR=${UCLINUX_PKG_CONFIG_LIBDIR} > else >+ EPREFIX="@GENTOO_PORTAGE_EPREFIX@" >+ [[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \ >+ EPREFIX="" >+ > # /usr/<target> >- SYSROOT="/usr/${CHOST}" >+ SYSROOT="${EPREFIX}"/usr/${CHOST}" > if [ -z "${CHOST}" ] || [ ! -d "${SYSROOT}" ] ; then > error "Need \$ROOT or \$STAGEDIR set first" > fi >diff --git a/wrappers/emerge-wrapper b/wrappers/emerge-wrapper >index e375025..d4d8ceb 100755 >--- a/wrappers/emerge-wrapper >+++ b/wrappers/emerge-wrapper >@@ -13,6 +13,10 @@ if [[ $1 == "--help" || $1 == "-h" ]] ; then > exit 0 > fi > >+EPREFIX="@GENTOO_PORTAGE_EPREFIX@" >+[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \ >+ EPREFIX="" >+ > PREFIX="__PREFIX__" > # Enable this script to be manually installed while debugging > [[ ${PREFIX} == \_\_\P\R\E\F\I\X\_\_ ]] && PREFIX="/usr" >@@ -91,7 +95,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 "$@" >diff --git a/wrappers/etc/portage/make.conf b/wrappers/etc/portage/make.conf >index 65214dc..573ead0 100644 >--- a/wrappers/etc/portage/make.conf >+++ b/wrappers/etc/portage/make.conf >@@ -4,7 +4,7 @@ ARCH=__ARCH__ > > HOSTCC=__CBUILD__-gcc > >-ROOT=/usr/${CHOST}/ >+ROOT=@GENTOO_PORTAGE_EPREFIX@/usr/${CHOST}/ > > ACCEPT_KEYWORDS="__ARCH__ ~__ARCH__" > >-- >2.7.4 (Apple Git-66) >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 384167
:
287471
|
287473
|
288587
|
296623
|
319886
|
319948
|
354346
|
354352
| 438666