Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 384167 | Differences between
and this patch

Collapse All | Expand All

(-)a/Makefile (+2 lines)
Lines 4-9 Link Here
4
include settings.mk
4
include settings.mk
5
5
6
all:
6
all:
7
	sed -i -e "s,@GENTOO_PORTAGE_EPREFIX@,$(EPREFIX),g" crossdev
8
	$(MAKE) -C wrappers
7
9
8
install:
10
install:
9
	$(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/
11
	$(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/
(-)a/crossdev (-24 / +29 lines)
Lines 7-21 CROSSDEV_VER="@CDEVPV@" Link Here
7
cd /
7
cd /
8
umask 0022 #159111
8
umask 0022 #159111
9
9
10
: ${ROOT:=/}
10
EPREFIX="@GENTOO_PORTAGE_EPREFIX@"
11
if [[ ${ROOT} != "/" ]] ; then
11
[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \
12
	EPREFIX=""
13
14
: ${ROOT:=${EPREFIX}}
15
if [[ ${ROOT} != "${EPREFIX}" ]] ; then
12
	echo "Sorry, but crossdev does not support ROOT." 1>&2
16
	echo "Sorry, but crossdev does not support ROOT." 1>&2
13
	exit 2
17
	exit 2
14
fi
18
fi
15
19
20
: ${PORTAGE_CONFIGROOT:="${EPREFIX}"}
16
CONFIGROOT="${PORTAGE_CONFIGROOT}/etc/portage"
21
CONFIGROOT="${PORTAGE_CONFIGROOT}/etc/portage"
17
22
18
source /etc/init.d/functions.sh || exit 1
23
source "${EPREFIX}"/etc/init.d/functions.sh || exit 1
19
esyslog() { :; }
24
esyslog() { :; }
20
die_logs() {
25
die_logs() {
21
	echo
26
	echo
Lines 400-406 setup_portage_vars() { Link Here
400
	fi
405
	fi
401
406
402
	# make sure we have a valid logdir
407
	# make sure we have a valid logdir
403
	: ${PORT_LOGDIR:=/var/log/portage}
408
	: ${PORT_LOGDIR:="${EPREFIX}"/var/log/portage}
404
	xmkdir -p "${PORT_LOGDIR}"
409
	xmkdir -p "${PORT_LOGDIR}"
405
}
410
}
406
411
Lines 421-428 uninstall() { Link Here
421
	done
426
	done
422
	rm -rf "${CONFIGROOT}"/env/cross-${CTARGET}
427
	rm -rf "${CONFIGROOT}"/env/cross-${CTARGET}
423
	rmdir "${CONFIGROOT}"/env 2>/dev/null
428
	rmdir "${CONFIGROOT}"/env 2>/dev/null
424
	rm -f /etc/revdep-rebuild/05cross-${CTARGET}
429
	rm -f "${EPREFIX}"/etc/revdep-rebuild/05cross-${CTARGET}
425
	rmdir /etc/revdep-rebuild 2>/dev/null
430
	rmdir "${EPREFIX}"/etc/revdep-rebuild 2>/dev/null
426
431
427
	# Unmerge all toolchain packages for this target.
432
	# Unmerge all toolchain packages for this target.
428
	qmerge -Uqy $(qlist -IC "cross-${CTARGET}/")
433
	qmerge -Uqy $(qlist -IC "cross-${CTARGET}/")
Lines 433-461 uninstall() { Link Here
433
		gcc-{ar,nm,ranlib} gccbug gprof ld nm objcopy objdump \
438
		gcc-{ar,nm,ranlib} gccbug gprof ld nm objcopy objdump \
434
		ranlib readelf size strings strip windmc windres
439
		ranlib readelf size strings strip windmc windres
435
	do
440
	do
436
		rm -f /usr/bin/${CTARGET}-${f} /usr/${CTARGET}/bin/${f}
441
		rm -f "${EPREFIX}"/usr/bin/${CTARGET}-${f} "${EPREFIX}"/usr/${CTARGET}/bin/${f}
437
	done
442
	done
438
	rm -f /usr/${CTARGET}/{sys-include,usr}
443
	rm -f "${EPREFIX}"/usr/${CTARGET}/{sys-include,usr}
439
	rmdir /usr/${CTARGET}/{include/asm,include} 2>/dev/null
444
	rmdir "${EPREFIX}"/usr/${CTARGET}/{include/asm,include} 2>/dev/null
440
	rm -f /usr/bin/${CTARGET}-{gcc,{c,g}++,cpp,gfortran,gcov}
445
	rm -f "${EPREFIX}"/usr/bin/${CTARGET}-{gcc,{c,g}++,cpp,gfortran,gcov}
441
	rm -f /etc/env.d/{binutils,gcc}/config-${CTARGET}
446
	rm -f "${EPREFIX}"/etc/env.d/{binutils,gcc}/config-${CTARGET}
442
447
443
	# clean out files from crossdev itself
448
	# clean out files from crossdev itself
444
	[[ -e /var/db/pkg/cross-${CTARGET} ]] && rmdir /var/db/pkg/cross-${CTARGET}
449
	[[ -e ${EPREFIX}/var/db/pkg/cross-${CTARGET} ]] && rmdir "${EPREFIX}"/var/db/pkg/cross-${CTARGET}
445
	rm -f /usr/bin/${CTARGET}-{emerge,fix-root,pkg-config} /usr/bin/emerge-${CTARGET}
450
	rm -f "${EPREFIX}"/usr/bin/${CTARGET}-{emerge,fix-root,pkg-config} "${EPREFIX}"/usr/bin/emerge-${CTARGET}
446
451
447
	for f in make.{conf,globals,profile} ; do
452
	for f in make.{conf,globals,profile} ; do
448
		f="/usr/${CTARGET}/etc/${f}"
453
		f="${EPREFIX}/usr/${CTARGET}/etc/${f}"
449
		[[ -L ${f} ]] && rm -f ${f}
454
		[[ -L ${f} ]] && rm -f ${f}
450
		f="/usr/${CTARGET}/etc/portage/${f##*/}"
455
		f="${EPREFIX}/usr/${CTARGET}/etc/portage/${f##*/}"
451
		[[ -L ${f} ]] && rm -f ${f}
456
		[[ -L ${f} ]] && rm -f ${f}
452
	done
457
	done
453
	find /usr/share/crossdev/etc/ -type f | \
458
	find "${EPREFIX}"/usr/share/crossdev/etc/ -type f | \
454
	while read f ; do
459
	while read f ; do
455
		f1=${f}
460
		f1=${f}
456
		[[ ! -e ${f1} ]] && continue
461
		[[ ! -e ${f1} ]] && continue
457
		m1=$(set -- `md5sum ${f1}`; echo $1)
462
		m1=$(set -- `md5sum ${f1}`; echo $1)
458
		f2=/usr/${CTARGET}${f#/usr/share/crossdev}
463
		f2=${EPREFIX}/usr/${CTARGET}${f#/usr/share/crossdev}
459
		[[ ! -e ${f2} ]] && continue
464
		[[ ! -e ${f2} ]] && continue
460
		m2=$(set -- `md5sum ${f2}`; echo $1)
465
		m2=$(set -- `md5sum ${f2}`; echo $1)
461
		if [[ ${m1} == ${m2} ]] ; then
466
		if [[ ${m1} == ${m2} ]] ; then
Lines 464-470 uninstall() { Link Here
464
	done
469
	done
465
470
466
	# clean out the sysroot, prompting the user if need be
471
	# clean out the sysroot, prompting the user if need be
467
	for d in /usr/lib/gcc{,-lib}/${CTARGET} /usr/${CTARGET} ; do
472
	for d in "${EPREFIX}"/usr/lib/gcc{,-lib}/${CTARGET} "${EPREFIX}"/usr/${CTARGET} ; do
468
		if [[ ! -d ${d} ]] ; then
473
		if [[ ! -d ${d} ]] ; then
469
			rm -f "${d}"
474
			rm -f "${d}"
470
		else
475
		else
Lines 540-548 hr() { Link Here
540
			|| c=${c##* }
545
			|| c=${c##* }
541
	fi
546
	fi
542
	local ext=${1:-  _  -  ~  -}
547
	local ext=${1:-  _  -  ~  -}
543
	local sext=${ext//?/ }
548
	local sext=${ext/?/ }
544
	local br=$(printf "%$((c + ${#ext}))s")
549
	local br=$(printf "%$((c + ${#ext}))s")
545
	local banner=${br//${sext}/${ext}}
550
	local banner=${br/${sext}/${ext}}
546
	echo "${banner:0:${c}}"
551
	echo "${banner:0:${c}}"
547
}
552
}
548
ver_get_op() {
553
ver_get_op() {
Lines 970-976 set_env() { Link Here
970
	output="env/cross-${CTARGET}/${pkg}.conf"
975
	output="env/cross-${CTARGET}/${pkg}.conf"
971
	cat <<-EOF > "${output}"
976
	cat <<-EOF > "${output}"
972
	SYMLINK_LIB=no
977
	SYMLINK_LIB=no
973
	COLLISION_IGNORE="\${COLLISION_IGNORE} /usr/lib/debug/.build-id"
978
	COLLISION_IGNORE="\${COLLISION_IGNORE} ${EPREFIX}/usr/lib/debug/.build-id"
974
	$(printf '%b' "${env}")
979
	$(printf '%b' "${env}")
975
	$(printf '%b' "${AENV}")
980
	$(printf '%b' "${AENV}")
976
	EOF
981
	EOF
Lines 1124-1138 for_each_extra_pkg set_portage X Link Here
1124
set_metadata
1129
set_metadata
1125
1130
1126
# filter out revdep rebuild stuff #182601
1131
# filter out revdep rebuild stuff #182601
1127
xmkdir -p /etc/revdep-rebuild
1132
xmkdir -p "${EPREFIX}"/etc/revdep-rebuild
1128
echo "SEARCH_DIRS_MASK=/usr/${CTARGET}" > /etc/revdep-rebuild/05cross-${CTARGET}
1133
echo "SEARCH_DIRS_MASK=${EPREFIX}/usr/${CTARGET}" > "${EPREFIX}"/etc/revdep-rebuild/05cross-${CTARGET}
1129
1134
1130
hr
1135
hr
1131
1136
1132
#######################################
1137
#######################################
1133
### Create links for helper scripts ###
1138
### Create links for helper scripts ###
1134
1139
1135
xmkdir -p /usr/${CTARGET}
1140
xmkdir -p "${EPREFIX}"/usr/${CTARGET}
1136
emerge-wrapper --target ${CTARGET} --init || exit 1
1141
emerge-wrapper --target ${CTARGET} --init || exit 1
1137
1142
1138
#################
1143
#################
(-)a/wrappers/Makefile (+3 lines)
Lines 9-14 SITE = $(PREFIX)/share/crossdev/include/site Link Here
9
TOPDIR =
9
TOPDIR =
10
10
11
all:
11
all:
12
	sed -i -e "s,@GENTOO_PORTAGE_EPREFIX@,$(EPREFIX),g" cross-emerge \
13
		emerge-wrapper cross-pkg-config etc/portage/make.conf \
14
		cross-fix-root
12
15
13
install:
16
install:
14
	$(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/ $(DESTDIR)/$(SITE)
17
	$(INSTALL_DIR) $(DESTDIR)/$(PREFIX)/bin/ $(DESTDIR)/$(SITE)
(-)a/wrappers/cross-emerge (-1 / +5 lines)
Lines 9-15 if [ -z "${CHOST}" ] ; then Link Here
9
fi
9
fi
10
export CHOST
10
export CHOST
11
11
12
: ${SYSROOT=/usr/${CHOST}}
12
EPREFIX="@GENTOO_PORTAGE_EPREFIX@"
13
[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \
14
	EPREFIX=""
15
16
: ${SYSROOT="${EPREFIX}"/usr/${CHOST}}
13
: ${PORTAGE_CONFIGROOT=${SYSROOT}}
17
: ${PORTAGE_CONFIGROOT=${SYSROOT}}
14
export SYSROOT PORTAGE_CONFIGROOT
18
export SYSROOT PORTAGE_CONFIGROOT
15
19
(-)a/wrappers/cross-fix-root (-2 / +6 lines)
Lines 37-44 case $# in Link Here
37
		;;
37
		;;
38
	1)
38
	1)
39
		if [ -e "/usr/${1:-..........}" ] ; then
39
		if [ -e "/usr/${1:-..........}" ] ; then
40
			SYSROOT="/usr/$1"
40
			EPREFIX="@GENTOO_PORTAGE_EPREFIX@"
41
			CROSS_BINDIR="/usr/bin"
41
			[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \
42
				EPREFIX=""
43
44
			SYSROOT="${EPREFIX}/usr/$1"
45
			CROSS_BINDIR="${EPREFIX}/usr/bin"
42
			CROSS_PREFIX="$1-"
46
			CROSS_PREFIX="$1-"
43
		else
47
		else
44
			usage
48
			usage
(-)a/wrappers/cross-pkg-config (-1 / +5 lines)
Lines 58-65 if [ -z "${SYSROOT}" ] ; then Link Here
58
		SYSROOT=${STAGEDIR}
58
		SYSROOT=${STAGEDIR}
59
		EXTRA_PKG_CONFIG_LIBDIR=${UCLINUX_PKG_CONFIG_LIBDIR}
59
		EXTRA_PKG_CONFIG_LIBDIR=${UCLINUX_PKG_CONFIG_LIBDIR}
60
	else
60
	else
61
		EPREFIX="@GENTOO_PORTAGE_EPREFIX@"
62
		[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \
63
			EPREFIX=""
64
61
		# /usr/<target>
65
		# /usr/<target>
62
		SYSROOT="/usr/${CHOST}"
66
		SYSROOT="${EPREFIX}"/usr/${CHOST}"
63
		if [ -z "${CHOST}" ] || [ ! -d "${SYSROOT}" ] ; then
67
		if [ -z "${CHOST}" ] || [ ! -d "${SYSROOT}" ] ; then
64
			error "Need \$ROOT or \$STAGEDIR set first"
68
			error "Need \$ROOT or \$STAGEDIR set first"
65
		fi
69
		fi
(-)a/wrappers/emerge-wrapper (-1 / +5 lines)
Lines 13-18 if [[ $1 == "--help" || $1 == "-h" ]] ; then Link Here
13
	exit 0
13
	exit 0
14
fi
14
fi
15
15
16
EPREFIX="@GENTOO_PORTAGE_EPREFIX@"
17
[[ "${EPREFIX}" != "@"GENTOO_PORTAGE_EPREFIX"@" ]] || \
18
	EPREFIX=""
19
16
PREFIX="__PREFIX__"
20
PREFIX="__PREFIX__"
17
# Enable this script to be manually installed while debugging
21
# Enable this script to be manually installed while debugging
18
[[ ${PREFIX} == \_\_\P\R\E\F\I\X\_\_ ]] && PREFIX="/usr"
22
[[ ${PREFIX} == \_\_\P\R\E\F\I\X\_\_ ]] && PREFIX="/usr"
Lines 91-97 cross_wrap_bin() Link Here
91
95
92
cross_wrap()
96
cross_wrap()
93
{
97
{
94
	SYSROOT=/usr/${CHOST}
98
	SYSROOT="${EPREFIX}"/usr/${CHOST}
95
	cross_wrap_bin "$@" || return $?
99
	cross_wrap_bin "$@" || return $?
96
	if [[ -d ${SYSROOT} ]] && [[ ! -d ${SYSROOT}/etc ]] ; then
100
	if [[ -d ${SYSROOT} ]] && [[ ! -d ${SYSROOT}/etc ]] ; then
97
		cross_wrap_etc "$@"
101
		cross_wrap_etc "$@"
(-)a/wrappers/etc/portage/make.conf (-2 / +1 lines)
Lines 4-10 ARCH=__ARCH__ Link Here
4
4
5
HOSTCC=__CBUILD__-gcc
5
HOSTCC=__CBUILD__-gcc
6
6
7
ROOT=/usr/${CHOST}/
7
ROOT=@GENTOO_PORTAGE_EPREFIX@/usr/${CHOST}/
8
8
9
ACCEPT_KEYWORDS="__ARCH__ ~__ARCH__"
9
ACCEPT_KEYWORDS="__ARCH__ ~__ARCH__"
10
10
11
- 

Return to bug 384167