1 |
With the two patches I just sent to gentoo-portage-dev@l.g.o, I |
2 |
can use FEATURES=fakeroot in portage. |
3 |
|
4 |
Here is how(quick and dirty cross-emerge hack) |
5 |
Notice the use of proot, very handy to redirect sysroot to my own root |
6 |
|
7 |
#!/bin/sh |
8 |
# Copyright 2008-2011 Gentoo Foundation |
9 |
# Distributed under the terms of the GNU General Public License v2 |
10 |
|
11 |
CHOST="x86_64-tm-linux-gnu" |
12 |
PORTAGE_CONFIGROOT=/usr/${CHOST}/ |
13 |
export CHOST ROOT PORTAGE_CONFIGROOT |
14 |
|
15 |
if [ -z "${CHOST}" ] ; then |
16 |
CHOST=${0##*/} |
17 |
CHOST=${CHOST%-emerge} |
18 |
CHOST=${CHOST#emerge-} |
19 |
fi |
20 |
export CHOST |
21 |
|
22 |
: ${SYSROOT=/usr/${CHOST}} |
23 |
: ${PORTAGE_CONFIGROOT=${SYSROOT}} |
24 |
export SYSROOT PORTAGE_CONFIGROOT |
25 |
|
26 |
if [ -z "${CHOST}" ] || [ ! -d "${SYSROOT}" ] ; then |
27 |
echo "cross-emerge: CHOST is not set properly" |
28 |
exit 1 |
29 |
fi |
30 |
# Portage defaults CBUILD to CHOST, so we have to remove CHOST |
31 |
# from the env to get a "good" value for CBUILD |
32 |
query_vars="CBUILD CFLAGS CXXFLAGS CPPFLAGS" |
33 |
clean_vars="${query_vars} CHOST SYSROOT PORTAGE_CONFIGROOT" |
34 |
eval $(env $(printf -- '-u %s ' ${clean_vars}) \ |
35 |
portageq envvar -v ${query_vars} | sed s:^:_E_:) |
36 |
: ${CBUILD=${_E_CBUILD}} |
37 |
: ${BUILD_CFLAGS=${_E_CFLAGS}} |
38 |
: ${BUILD_CXXFLAGS=${_E_CXXFLAGS}} |
39 |
: ${BUILD_CPPFLAGS=${_E_CPPFLAGS}} |
40 |
export CBUILD BUILD_CFLAGS BUILD_CXXFLAGS BUILD_CPPFLAGS |
41 |
|
42 |
: ${CROSS_CMD:=emerge --root-deps=rdeps} |
43 |
|
44 |
export |
45 |
PYTHONPATH="/usr/local/src/portage/pym${PYTHONPATH:+:}${PYTHONPATH}" |
46 |
exec proot -b ./new-root:${PORTAGE_CONFIGROOT} |
47 |
/usr/local/src/portage/bin/${CROSS_CMD} "$@" |