summaryrefslogtreecommitdiff
blob: 52d45ab79e760f221bdef006b9ae2cf19aba3c55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/bin/sh
MYPROFILEDIR=`readlink -f /etc/make.profile`
if [ ! -d $MYPROFILEDIR ]
then
	echo '!!! Error: '"$MYPROFILEDIR does not exist. Exiting."
	exit 1
fi
 
if [ -e /usr/bin/spython ]
then
	#1.0_rc6 and earlier
	PYTHON=/usr/bin/spython
else
	#1.0 and later
	PYTHON=/usr/bin/python
fi

#We really need to upgrade baselayout now that it's possible:
myBASELAYOUT=`cat ${MYPROFILEDIR}/packages | grep -v '^#' | grep sys-apps/baselayout | sed 's:^\*::'`
myPORTAGE=`cat ${MYPROFILEDIR}/packages | grep -v '^#' | grep sys-apps/portage | sed 's:^\*::'`
myGETTEXT=`cat ${MYPROFILEDIR}/packages | grep -v '^#' | grep sys-devel/gettext | sed 's:^\*::'`
myBINUTILS=`cat ${MYPROFILEDIR}/packages | grep -v '^#' | grep sys-devel/binutils | sed 's:^\*::'`
myGCC=`cat ${MYPROFILEDIR}/packages | grep -v '^#' | grep sys-devel/gcc | sed 's:^\*::'`
myGLIBC=`cat ${MYPROFILEDIR}/packages | grep -v '^#' | grep sys-libs/glibc | sed 's:^\*::'`
myTEXINFO=`cat ${MYPROFILEDIR}/packages|grep -v '^#'|grep sys-apps/texinfo |sed 's:^\*::'`
myZLIB=`cat ${MYPROFILEDIR}/packages|grep -v '^#'|grep sys-libs/zlib |sed 's:^\*::'`
myNCURSES=`cat ${MYPROFILEDIR}/packages|grep -v '^#'|grep sys-libs/ncurses |sed 's:^\*::'`

echo "Using $myBASELAYOUT"
echo "Using $myPORTAGE"
echo "Using $myBINUTILS"
echo "Using $myGCC"
echo "Using $myGETTEXT"
echo "Using $myGLIBC"
echo "Using $myTEXINFO"
echo "Using $myZLIB"
echo "Using $myNCURSES"

#This should not be set to get glibc to build properly. See bug #7652.
LD_LIBRARY_PATH=""

#We do not want stray $TMP or $TMPDIR settings
unset TMP TMPDIR

cleanup() {
	if [ -f /etc/make.conf.build ]
	then
		mv -f /etc/make.conf.build /etc/make.conf
	fi
	exit $1
}

#Trap ctrl-c and stuff.  This should fix the users make.conf
#not being restored.
trap "cleanup" INT QUIT TSTP

#USE may be set from the environment so we back it up for later.
export ORIGUSE="`$PYTHON -c 'import portage; print portage.settings["USE"];'`"
export GENTOO_MIRRORS="`$PYTHON -c 'import portage; print portage.settings["GENTOO_MIRRORS"];'`"
export USE="-* build bootstrap"

export PORTDIR="`$PYTHON -c 'import portage; print portage.settings["PORTDIR"];'`"
export DISTDIR="`$PYTHON -c 'import portage; print portage.settings["DISTDIR"];'`"
export PKGDIR="`$PYTHON -c 'import portage; print portage.settings["PKGDIR"];'`"
export PORTAGE_TMPDIR="`$PYTHON -c 'import portage; print portage.settings["PORTAGE_TMPDIR"];'`"

#get correct CFLAGS, CHOST, CXXFLAGS, MAKEOPTS since make.conf will be
#overwritten
cp /etc/make.conf /etc/make.conf.build
export CFLAGS="`$PYTHON -c 'import portage; print portage.settings["CFLAGS"];'`"
export CHOST="`$PYTHON -c 'import portage; print portage.settings["CHOST"];'`"
export CXXFLAGS="`$PYTHON -c 'import portage; print portage.settings["CXXFLAGS"];'`"
export MAKEOPTS="`$PYTHON -c 'import portage; print portage.settings["MAKEOPTS"];'`"
PROXY="`$PYTHON -c 'import portage; print portage.settings["PROXY"];'`"
if [ -n "${PROXY}" ] 
then
	echo "exporting PROXY=${PROXY}"
	export PROXY
fi
HTTP_PROXY="`$PYTHON -c 'import portage; print portage.settings["HTTP_PROXY"];'`"
if [ -n "${HTTP_PROXY}" ] 
then
	echo "exporting HTTP_PROXY=${HTTP_PROXY}"
	export HTTP_PROXY
fi
FTP_PROXY="`$PYTHON -c 'import portage; print portage.settings["FTP_PROXY"];'`"
if [ -n "${FTP_PROXY}" ] 
then
	echo "exporting FTP_PROXY=${FTP_PROXY}"
	export FTP_PROXY
fi

# disable autoclean, or it b0rks
export AUTOCLEAN="no"

export CONFIG_PROTECT="-*"
#above allows portage to overwrite stuff

cd /usr/portage
emerge $myPORTAGE #separate, so that the next command uses the *new* emerge
emerge $myBASELAYOUT $myTEXINFO $myGETTEXT $myBINUTILS $myGCC || cleanup 1
#make.conf has been overwritten, so we explicitly export our original settings
export USE="$ORIGUSE bootstrap"
emerge $myGLIBC $myBASELAYOUT $myTEXINFO $myGETTEXT $myZLIB $myBINUTILS $myGCC || cleanup 1
#ncurses-5.3 and up also build c++ bindings, so we need to rebuild it
export USE="$ORIGUSE"
emerge $myNCURSES

#restore original make.conf
cleanup 0