summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Gianelloni <wolf31o2@gentoo.org>2005-03-28 01:03:31 +0000
committerChris Gianelloni <wolf31o2@gentoo.org>2005-03-28 01:03:31 +0000
commit00f8d897b6d8ed38d3fac0bfc0566147cb0e0ef1 (patch)
tree7021251ed9eb61919258e7d26fc32984289b6415 /scripts
parentBug #86514, fix DEPEND. Also add metadata. (diff)
downloadgentoo-2-00f8d897b6d8ed38d3fac0bfc0566147cb0e0ef1.tar.gz
gentoo-2-00f8d897b6d8ed38d3fac0bfc0566147cb0e0ef1.tar.bz2
gentoo-2-00f8d897b6d8ed38d3fac0bfc0566147cb0e0ef1.zip
New bootstrap.sh script for 2005.0 and beyond
Diffstat (limited to 'scripts')
-rwxr-xr-x[-rw-r--r--]scripts/bootstrap-old.sh (renamed from scripts/bootstrap-new.sh)159
-rwxr-xr-xscripts/bootstrap.sh159
2 files changed, 159 insertions, 159 deletions
diff --git a/scripts/bootstrap-new.sh b/scripts/bootstrap-old.sh
index 318729b0a92c..6e8d2c105743 100644..100755
--- a/scripts/bootstrap-new.sh
+++ b/scripts/bootstrap-old.sh
@@ -1,15 +1,13 @@
#!/bin/bash
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/scripts/bootstrap-new.sh,v 1.7 2005/03/07 19:42:54 wolf31o2 Exp $
+# $Header: /var/cvsroot/gentoo-x86/scripts/bootstrap-old.sh,v 1.1 2005/03/28 01:03:31 wolf31o2 Exp $
# people who were here:
# (drobbins, 06 Jun 2003)
# (solar, Jul 2004)
# (vapier, Aug 2004)
# (compnerd, Nov 2004)
-# (wolf31o2, Jan 2005)
-# (azarah, Mar 2005)
if [ -e /etc/init.d/functions.sh ] ; then
source /etc/init.d/functions.sh
@@ -23,11 +21,10 @@ else
eerror() { echo "!!! $*"; }
einfo() { echo "* $*"; }
fi
-
show_status() {
local num=$1
shift
- echo " [[ ($num/3) $* ]]"
+ echo " [[ ($num/6) $* ]]"
}
# Track progress of the bootstrap process to allow for
@@ -35,7 +32,6 @@ show_status() {
progressfile=/var/run/bootstrap-progress
[[ -e ${progressfile} ]] && source ${progressfile}
export BOOTSTRAP_STAGE=${BOOTSTRAP_STAGE:-1}
-
set_bootstrap_stage() {
[[ -z ${STRAP_RUN} ]] && return 0
export BOOTSTRAP_STAGE=$1
@@ -79,7 +75,7 @@ for opt in "$@" ; do
--resume|-r) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --usepkg --buildpkg";;
--verbose|-v) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -v"; V_ECHO=v_echo;;
--version)
- cvsver="$Header: /var/cvsroot/gentoo-x86/scripts/bootstrap-new.sh,v 1.7 2005/03/07 19:42:54 wolf31o2 Exp $"
+ cvsver="$Header: /var/cvsroot/gentoo-x86/scripts/bootstrap-old.sh,v 1.1 2005/03/28 01:03:31 wolf31o2 Exp $"
cvsver=${cvsver##*,v }
einfo "Gentoo ${GENTOO_VERS} bootstrap ${cvsver%%Exp*}"
exit 0
@@ -91,9 +87,8 @@ for opt in "$@" ; do
esac
done
-RESUME=0
if [[ -n ${STRAP_RUN} ]] ; then
- if [ ${BOOTSTRAP_STAGE} -ge 3 ] ; then
+ if [ ${BOOTSTRAP_STAGE} -ge 6 ] ; then
echo
einfo "System has been bootstrapped already!"
einfo "If you re-bootstrap the system, you must complete the entire bootstrap process"
@@ -103,7 +98,6 @@ if [[ -n ${STRAP_RUN} ]] ; then
set_bootstrap_stage 1
elif [ ${BOOTSTRAP_STAGE} -gt 1 ] ; then
einfo "Resuming bootstrap at internal stage #${BOOTSTRAP_STAGE} ..."
- RESUME=1
fi
else
export BOOTSTRAP_STAGE=0
@@ -142,11 +136,6 @@ cleanup() {
if [[ -f /etc/make.conf.build ]] ; then
mv -f /etc/make.conf.build /etc/make.conf
fi
- if [ ${BOOTSTRAP_STAGE} -le 2 ] ; then
- cp -f /var/cache/edb/mtimedb /var/run/bootstrap-mtimedb
- else
- rm -f /var/run/bootstrap-mtimedb
- fi
fi
exit $1
}
@@ -160,26 +149,18 @@ pycmd() {
# not being restored.
[[ -n ${STRAP_RUN} ]] && cp -f /etc/make.conf /etc/make.conf.build
-# TSTP messes ^Z of bootstrap up, so we don't trap it anymore.
+#TSTP messes ^Z of bootstrap up, so we don't trap it anymore.
trap "cleanup" TERM KILL INT QUIT ABRT
-# Bug #50158 (don't use `which` in a bootstrap).
-if ! type -path portageq &>/dev/null ; then
- echo -------------------------------------------------------------------------------
- eerror "Your portage version is too old. Please use a newer stage1 image."
- echo
- cleanup 1
-fi
-
# USE may be set from the environment so we back it up for later.
export ORIGUSE=$(portageq envvar USE)
# Check for 'build' or 'bootstrap' in USE ...
-INVALID_USE=$(gawk -v ORIGUSE="${ORIGUSE}" '
+INVALID_USE="`gawk -v ORIGUSE="${ORIGUSE}" '
BEGIN {
if (ORIGUSE ~ /[[:space:]]*(build|bootstrap)[[:space:]]*/)
print "yes"
- }')
+ }'`"
# Do not do the check for stage build scripts ...
if [[ ${INVALID_USE} = "yes" ]] ; then
@@ -192,30 +173,32 @@ if [[ ${INVALID_USE} = "yes" ]] ; then
cleanup 1
fi
+# bug #50158 (don't use `which` in a bootstrap).
+if ! type -path portageq &>/dev/null ; then
+ echo
+ eerror "Your portage version is too old. Please use a newer stage1 image."
+ echo
+ cleanup 1
+fi
+
# gettext should only be needed when used with nls
for opt in ${ORIGUSE} ; do
case "${opt}" in
- nls)
- USE_NLS=1
- STAGE1_USE="${STAGE1_USE} nls"
- ;;
+ nls) myGETTEXT="gettext";;
nptl)
- if [[ -z $(portageq best_visible / '>=sys-kernel/linux-headers-2.6.0') ]] ; then
- eerror "You need to have >=sys-kernel/linux-headers-2.6.0 unmasked!"
- eerror "Please edit the latest >=sys-kernel/linux-headers-2.6.0 package,"
- eerror "and add your ARCH to KEYWORDS or change your make.profile link"
- eerror "to a profile which does not have 2.6 headers masked."
+ if [[ -z $(portageq best_visible / '>=sys-kernel/linux26-headers-2.6.0') ]] ; then
+ eerror "You need to have >=sys-kernel/linux26-headers-2.6.0 unmasked!"
+ eerror "Please edit the latest >=sys-kernel/linux26-headers-2.6.0 package,"
+ eerror "and add your ARCH to KEYWORDS."
echo
cleanup 1
fi
+ if [[ -n $(portageq best_version / sys-kernel/linux-headers) ]] ; then
+ emerge -C sys-kernel/linux-headers
+ emerge --nodeps --oneshot sys-kernel/linux26-headers
+ fi
USE_NPTL=1
- ;;
- nptlonly)
- USE_NPTLONLY=1
- ;;
- multilib)
- STAGE1_USE="${STAGE1_USE} multilib"
- ;;
+ ;;
esac
done
@@ -229,27 +212,21 @@ eval $(pycmd 'import portage; print portage.settings.packages;' |
sed 's/[][,]//g; s/ /\n/g; s/\*//g' | while read p; do n=${p##*/}; n=${n%\'};
n=${n%%-[0-9]*}; echo "my$(tr a-z- A-Z_ <<<$n)=$p; "; done)
-# This stuff should never fail but will if not enough is installed.
-[[ -z ${myBASELAYOUT} ]] && myBASELAYOUT="$(portageq best_version / virtual/baselayout)"
+# this stuff should never fail but will if not enough is installed.
+#[[ -z ${myBASELAYOUT} ]] && myBASELAYOUT="$(portageq best_version / virtual/baselayout)"
+[[ -z ${myBASELAYOUT} ]] && myBASELAYOUT="baselayout"
[[ -z ${myPORTAGE} ]] && myPORTAGE="portage"
[[ -z ${myBINUTILS} ]] && myBINUTILS="binutils"
[[ -z ${myGCC} ]] && myGCC="gcc"
-[[ -z ${myGETTEXT} ]] && myGETTEXT="gettext"
[[ -z ${myLIBC} ]] && myLIBC="virtual/libc"
[[ -z ${myTEXINFO} ]] && myTEXINFO="sys-apps/texinfo"
[[ -z ${myZLIB} ]] && myZLIB="zlib"
[[ -z ${myNCURSES} ]] && myNCURSES="ncurses"
-# Do we really want gettext/nls?
-[[ ${USE_NLS} != 1 ]] && myGETTEXT=
-
# Do we really have no 2.4.x nptl kernels in portage?
if [[ ${USE_NPTL} = "1" ]] ; then
- myOS_HEADERS="$(portageq best_visible / '>=sys-kernel/linux-headers-2.6.0')"
+ myOS_HEADERS="$(portageq best_visible / '>=sys-kernel/linux26-headers-2.6.0')"
[[ -n ${myOS_HEADERS} ]] && myOS_HEADERS=">=${myOS_HEADERS}"
- STAGE1_USE="${STAGE1_USE} nptl"
- # Should we build with nptl only?
- [[ ${USE_NPTLONLY} = "1" ]] && STAGE1_USE="${STAGE1_USE} nptlonly"
fi
[[ -z ${myOS_HEADERS} ]] && myOS_HEADERS="virtual/os-headers"
@@ -258,7 +235,7 @@ einfo "Using portage : ${myPORTAGE}"
einfo "Using os-headers : ${myOS_HEADERS}"
einfo "Using binutils : ${myBINUTILS}"
einfo "Using gcc : ${myGCC}"
-[[ ${USE_NLS} = "1" ]] && einfo "Using gettext : ${myGETTEXT}"
+[[ -n ${myGETTEXT} ]] && einfo "Using gettext : ${myGETTEXT}"
einfo "Using libc : ${myLIBC}"
einfo "Using texinfo : ${myTEXINFO}"
einfo "Using zlib : ${myZLIB}"
@@ -285,9 +262,8 @@ echo ---------------------------------------------------------------------------
[[ -x /usr/sbin/gcc-config ]] && GCC_CONFIG="/usr/sbin/gcc-config"
[[ -x /usr/bin/gcc-config ]] && GCC_CONFIG="/usr/bin/gcc-config"
-# Make sure we automatically clean old instances, else we may run
-# into issues, bug #32140.
-export AUTOCLEAN="yes"
+# Disable autoclean, or it b0rks
+export AUTOCLEAN="no"
# Allow portage to overwrite stuff
export CONFIG_PROTECT="-*"
@@ -301,28 +277,55 @@ if [ ${BOOTSTRAP_STAGE} -le 1 ] ; then
echo -------------------------------------------------------------------------------
set_bootstrap_stage 2
fi
-export USE="-* bootstrap ${STAGE1_USE}"
+export USE="${ORIGUSE} bootstrap ${STAGE1_USE}"
# We can't unmerge headers which may or may not exist yet. If your
# trying to use nptl, it may be needed to flush out any old headers
# before fully bootstrapping.
if [ ${BOOTSTRAP_STAGE} -le 2 ] ; then
- show_status 3 Emerging packages
- if [[ ${RESUME} -eq 1 ]] ; then
- STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --resume"
- cp /var/run/bootstrap-mtimedb /var/cache/edb
- else
- # Why do we need this? It will pull in python that needs g++
- # among others, and add a few IMHO unneeded deps ...
- #STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -e"
- :
- fi
- ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myOS_HEADERS} ${myTEXINFO} ${myGETTEXT} ${myBINUTILS} \
- ${myGCC} ${myLIBC} ${myBASELAYOUT} ${myZLIB} || cleanup 1
+ show_status 3 Emerging headers/binutils
+ #emerge ${STRAP_EMERGE_OPTS} -C virtual/os-headers || cleanup 1
+ ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myOS_HEADERS} ${myTEXINFO} ${myGETTEXT} ${myBINUTILS} || cleanup 1
echo -------------------------------------------------------------------------------
set_bootstrap_stage 3
fi
+# If say both gcc and binutils were built for i486, and we then merge
+# binutils for i686 without removing the i486 version (Note that this is
+# _only_ when its exactly the same version of binutils ... if we have say
+# 2.14.90.0.6 build for i486, and bootstrap then merge 2.14.90.0.7 for i686,
+# we will not have issues. More below ...), gcc's search path will
+# still have
+#
+# /usr/lib/gcc-lib/i486-pc-linux-gnu/<gcc_version>/../../../../i486-pc-linux-gnu/bin/
+#
+# before /usr/bin, and thus it will use the i486 versions of binutils binaries
+# which causes issues. The reason for this issues is that when bootstrap merge
+# exactly the same version for i686, both will have installed the same files to
+# /usr/lib, and thus also USE the same libraries, cause as/ld to fail with
+# unresolved symbols during compiling/linking.
+#
+# More info on this can be found by looking at bug #32140:
+#
+# http://bugs.gentoo.org/show_bug.cgi?id=32140
+#
+# We now thus run an 'emerge clean' just after merging binutils ...
+#
+# NB: thanks to <rac@gentoo.org> for bringing me on the right track
+# (http://forums.gentoo.org/viewtopic.php?t=100263)
+#
+# <azarah@gentoo.org> (1 Nov 2003)
+if [[ -n ${STRAP_RUN} ]] ; then
+ emerge clean || cleanup 1
+fi
+
+if [ ${BOOTSTRAP_STAGE} -le 3 ] ; then
+ show_status 4 Emerging gcc
+ ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myGCC} || cleanup 1
+ echo -------------------------------------------------------------------------------
+ set_bootstrap_stage 4
+fi
+
# Basic support for gcc multi version/arch scheme ...
if [[ -n ${STRAP_RUN} ]] ; then
if [[ -x ${GCC_CONFIG} ]] && ${GCC_CONFIG} --get-current-profile &>/dev/null
@@ -334,12 +337,20 @@ if [[ -n ${STRAP_RUN} ]] ; then
fi
fi
-if [[ -n ${STRAP_RUN} ]] ; then
+if [ ${BOOTSTRAP_STAGE} -le 4 ] ; then
+ show_status 5 Emerging libc/baselayout
+ ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myLIBC} ${myBASELAYOUT} ${myZLIB} || cleanup 1
echo -------------------------------------------------------------------------------
- einfo "Please note that you should now add the '-e' option for emerge system:"
- echo
- einfo " # emerge -e system"
- echo
+ set_bootstrap_stage 5
+fi
+
+# ncurses-5.3 and up also build c++ bindings, so we need to rebuild it
+export USE="${ORIGUSE}"
+if [ ${BOOTSTRAP_STAGE} -le 5 ] ; then
+ show_status 6 Re-Emerging C++ apps
+ ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myNCURSES} || cleanup 1
+ echo -------------------------------------------------------------------------------
+ set_bootstrap_stage 6
fi
# Restore original make.conf
diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh
index 7c3bd6144c72..7b76967df59e 100755
--- a/scripts/bootstrap.sh
+++ b/scripts/bootstrap.sh
@@ -1,13 +1,15 @@
#!/bin/bash
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/scripts/bootstrap.sh,v 1.72 2005/02/03 18:54:34 wolf31o2 Exp $
+# $Header: /var/cvsroot/gentoo-x86/scripts/bootstrap.sh,v 1.73 2005/03/28 01:03:31 wolf31o2 Exp $
# people who were here:
# (drobbins, 06 Jun 2003)
# (solar, Jul 2004)
# (vapier, Aug 2004)
# (compnerd, Nov 2004)
+# (wolf31o2, Jan 2005)
+# (azarah, Mar 2005)
if [ -e /etc/init.d/functions.sh ] ; then
source /etc/init.d/functions.sh
@@ -21,10 +23,11 @@ else
eerror() { echo "!!! $*"; }
einfo() { echo "* $*"; }
fi
+
show_status() {
local num=$1
shift
- echo " [[ ($num/6) $* ]]"
+ echo " [[ ($num/3) $* ]]"
}
# Track progress of the bootstrap process to allow for
@@ -32,6 +35,7 @@ show_status() {
progressfile=/var/run/bootstrap-progress
[[ -e ${progressfile} ]] && source ${progressfile}
export BOOTSTRAP_STAGE=${BOOTSTRAP_STAGE:-1}
+
set_bootstrap_stage() {
[[ -z ${STRAP_RUN} ]] && return 0
export BOOTSTRAP_STAGE=$1
@@ -75,7 +79,7 @@ for opt in "$@" ; do
--resume|-r) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --usepkg --buildpkg";;
--verbose|-v) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -v"; V_ECHO=v_echo;;
--version)
- cvsver="$Header: /var/cvsroot/gentoo-x86/scripts/bootstrap.sh,v 1.72 2005/02/03 18:54:34 wolf31o2 Exp $"
+ cvsver="$Header: /var/cvsroot/gentoo-x86/scripts/bootstrap.sh,v 1.73 2005/03/28 01:03:31 wolf31o2 Exp $"
cvsver=${cvsver##*,v }
einfo "Gentoo ${GENTOO_VERS} bootstrap ${cvsver%%Exp*}"
exit 0
@@ -87,8 +91,9 @@ for opt in "$@" ; do
esac
done
+RESUME=0
if [[ -n ${STRAP_RUN} ]] ; then
- if [ ${BOOTSTRAP_STAGE} -ge 6 ] ; then
+ if [ ${BOOTSTRAP_STAGE} -ge 3 ] ; then
echo
einfo "System has been bootstrapped already!"
einfo "If you re-bootstrap the system, you must complete the entire bootstrap process"
@@ -98,6 +103,7 @@ if [[ -n ${STRAP_RUN} ]] ; then
set_bootstrap_stage 1
elif [ ${BOOTSTRAP_STAGE} -gt 1 ] ; then
einfo "Resuming bootstrap at internal stage #${BOOTSTRAP_STAGE} ..."
+ RESUME=1
fi
else
export BOOTSTRAP_STAGE=0
@@ -136,6 +142,11 @@ cleanup() {
if [[ -f /etc/make.conf.build ]] ; then
mv -f /etc/make.conf.build /etc/make.conf
fi
+ if [ ${BOOTSTRAP_STAGE} -le 2 ] ; then
+ cp -f /var/cache/edb/mtimedb /var/run/bootstrap-mtimedb
+ else
+ rm -f /var/run/bootstrap-mtimedb
+ fi
fi
exit $1
}
@@ -149,18 +160,26 @@ pycmd() {
# not being restored.
[[ -n ${STRAP_RUN} ]] && cp -f /etc/make.conf /etc/make.conf.build
-#TSTP messes ^Z of bootstrap up, so we don't trap it anymore.
+# TSTP messes ^Z of bootstrap up, so we don't trap it anymore.
trap "cleanup" TERM KILL INT QUIT ABRT
+# Bug #50158 (don't use `which` in a bootstrap).
+if ! type -path portageq &>/dev/null ; then
+ echo -------------------------------------------------------------------------------
+ eerror "Your portage version is too old. Please use a newer stage1 image."
+ echo
+ cleanup 1
+fi
+
# USE may be set from the environment so we back it up for later.
export ORIGUSE=$(portageq envvar USE)
# Check for 'build' or 'bootstrap' in USE ...
-INVALID_USE="`gawk -v ORIGUSE="${ORIGUSE}" '
+INVALID_USE=$(gawk -v ORIGUSE="${ORIGUSE}" '
BEGIN {
if (ORIGUSE ~ /[[:space:]]*(build|bootstrap)[[:space:]]*/)
print "yes"
- }'`"
+ }')
# Do not do the check for stage build scripts ...
if [[ ${INVALID_USE} = "yes" ]] ; then
@@ -173,32 +192,30 @@ if [[ ${INVALID_USE} = "yes" ]] ; then
cleanup 1
fi
-# bug #50158 (don't use `which` in a bootstrap).
-if ! type -path portageq &>/dev/null ; then
- echo
- eerror "Your portage version is too old. Please use a newer stage1 image."
- echo
- cleanup 1
-fi
-
# gettext should only be needed when used with nls
for opt in ${ORIGUSE} ; do
case "${opt}" in
- nls) myGETTEXT="gettext";;
+ nls)
+ USE_NLS=1
+ STAGE1_USE="${STAGE1_USE} nls"
+ ;;
nptl)
- if [[ -z $(portageq best_visible / '>=sys-kernel/linux26-headers-2.6.0') ]] ; then
- eerror "You need to have >=sys-kernel/linux26-headers-2.6.0 unmasked!"
- eerror "Please edit the latest >=sys-kernel/linux26-headers-2.6.0 package,"
- eerror "and add your ARCH to KEYWORDS."
+ if [[ -z $(portageq best_visible / '>=sys-kernel/linux-headers-2.6.0') ]] ; then
+ eerror "You need to have >=sys-kernel/linux-headers-2.6.0 unmasked!"
+ eerror "Please edit the latest >=sys-kernel/linux-headers-2.6.0 package,"
+ eerror "and add your ARCH to KEYWORDS or change your make.profile link"
+ eerror "to a profile which does not have 2.6 headers masked."
echo
cleanup 1
fi
- if [[ -n $(portageq best_version / sys-kernel/linux-headers) ]] ; then
- emerge -C sys-kernel/linux-headers
- emerge --nodeps --oneshot sys-kernel/linux26-headers
- fi
USE_NPTL=1
- ;;
+ ;;
+ nptlonly)
+ USE_NPTLONLY=1
+ ;;
+ multilib)
+ STAGE1_USE="${STAGE1_USE} multilib"
+ ;;
esac
done
@@ -212,21 +229,27 @@ eval $(pycmd 'import portage; print portage.settings.packages;' |
sed 's/[][,]//g; s/ /\n/g; s/\*//g' | while read p; do n=${p##*/}; n=${n%\'};
n=${n%%-[0-9]*}; echo "my$(tr a-z- A-Z_ <<<$n)=$p; "; done)
-# this stuff should never fail but will if not enough is installed.
-#[[ -z ${myBASELAYOUT} ]] && myBASELAYOUT="$(portageq best_version / virtual/baselayout)"
-[[ -z ${myBASELAYOUT} ]] && myBASELAYOUT="baselayout"
+# This stuff should never fail but will if not enough is installed.
+[[ -z ${myBASELAYOUT} ]] && myBASELAYOUT="$(portageq best_version / virtual/baselayout)"
[[ -z ${myPORTAGE} ]] && myPORTAGE="portage"
[[ -z ${myBINUTILS} ]] && myBINUTILS="binutils"
[[ -z ${myGCC} ]] && myGCC="gcc"
+[[ -z ${myGETTEXT} ]] && myGETTEXT="gettext"
[[ -z ${myLIBC} ]] && myLIBC="virtual/libc"
[[ -z ${myTEXINFO} ]] && myTEXINFO="sys-apps/texinfo"
[[ -z ${myZLIB} ]] && myZLIB="zlib"
[[ -z ${myNCURSES} ]] && myNCURSES="ncurses"
+# Do we really want gettext/nls?
+[[ ${USE_NLS} != 1 ]] && myGETTEXT=
+
# Do we really have no 2.4.x nptl kernels in portage?
if [[ ${USE_NPTL} = "1" ]] ; then
- myOS_HEADERS="$(portageq best_visible / '>=sys-kernel/linux26-headers-2.6.0')"
+ myOS_HEADERS="$(portageq best_visible / '>=sys-kernel/linux-headers-2.6.0')"
[[ -n ${myOS_HEADERS} ]] && myOS_HEADERS=">=${myOS_HEADERS}"
+ STAGE1_USE="${STAGE1_USE} nptl"
+ # Should we build with nptl only?
+ [[ ${USE_NPTLONLY} = "1" ]] && STAGE1_USE="${STAGE1_USE} nptlonly"
fi
[[ -z ${myOS_HEADERS} ]] && myOS_HEADERS="virtual/os-headers"
@@ -235,7 +258,7 @@ einfo "Using portage : ${myPORTAGE}"
einfo "Using os-headers : ${myOS_HEADERS}"
einfo "Using binutils : ${myBINUTILS}"
einfo "Using gcc : ${myGCC}"
-[[ -n ${myGETTEXT} ]] && einfo "Using gettext : ${myGETTEXT}"
+[[ ${USE_NLS} = "1" ]] && einfo "Using gettext : ${myGETTEXT}"
einfo "Using libc : ${myLIBC}"
einfo "Using texinfo : ${myTEXINFO}"
einfo "Using zlib : ${myZLIB}"
@@ -262,8 +285,9 @@ echo ---------------------------------------------------------------------------
[[ -x /usr/sbin/gcc-config ]] && GCC_CONFIG="/usr/sbin/gcc-config"
[[ -x /usr/bin/gcc-config ]] && GCC_CONFIG="/usr/bin/gcc-config"
-# Disable autoclean, or it b0rks
-export AUTOCLEAN="no"
+# Make sure we automatically clean old instances, else we may run
+# into issues, bug #32140.
+export AUTOCLEAN="yes"
# Allow portage to overwrite stuff
export CONFIG_PROTECT="-*"
@@ -277,55 +301,28 @@ if [ ${BOOTSTRAP_STAGE} -le 1 ] ; then
echo -------------------------------------------------------------------------------
set_bootstrap_stage 2
fi
-export USE="${ORIGUSE} bootstrap ${STAGE1_USE}"
+export USE="-* bootstrap ${STAGE1_USE}"
# We can't unmerge headers which may or may not exist yet. If your
# trying to use nptl, it may be needed to flush out any old headers
# before fully bootstrapping.
if [ ${BOOTSTRAP_STAGE} -le 2 ] ; then
- show_status 3 Emerging headers/binutils
- #emerge ${STRAP_EMERGE_OPTS} -C virtual/os-headers || cleanup 1
- ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myOS_HEADERS} ${myTEXINFO} ${myGETTEXT} ${myBINUTILS} || cleanup 1
+ show_status 3 Emerging packages
+ if [[ ${RESUME} -eq 1 ]] ; then
+ STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --resume"
+ cp /var/run/bootstrap-mtimedb /var/cache/edb
+ else
+ # Why do we need this? It will pull in python that needs g++
+ # among others, and add a few IMHO unneeded deps ...
+ #STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -e"
+ :
+ fi
+ ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myOS_HEADERS} ${myTEXINFO} ${myGETTEXT} ${myBINUTILS} \
+ ${myGCC} ${myLIBC} ${myBASELAYOUT} ${myZLIB} || cleanup 1
echo -------------------------------------------------------------------------------
set_bootstrap_stage 3
fi
-# If say both gcc and binutils were built for i486, and we then merge
-# binutils for i686 without removing the i486 version (Note that this is
-# _only_ when its exactly the same version of binutils ... if we have say
-# 2.14.90.0.6 build for i486, and bootstrap then merge 2.14.90.0.7 for i686,
-# we will not have issues. More below ...), gcc's search path will
-# still have
-#
-# /usr/lib/gcc-lib/i486-pc-linux-gnu/<gcc_version>/../../../../i486-pc-linux-gnu/bin/
-#
-# before /usr/bin, and thus it will use the i486 versions of binutils binaries
-# which causes issues. The reason for this issues is that when bootstrap merge
-# exactly the same version for i686, both will have installed the same files to
-# /usr/lib, and thus also USE the same libraries, cause as/ld to fail with
-# unresolved symbols during compiling/linking.
-#
-# More info on this can be found by looking at bug #32140:
-#
-# http://bugs.gentoo.org/show_bug.cgi?id=32140
-#
-# We now thus run an 'emerge clean' just after merging binutils ...
-#
-# NB: thanks to <rac@gentoo.org> for bringing me on the right track
-# (http://forums.gentoo.org/viewtopic.php?t=100263)
-#
-# <azarah@gentoo.org> (1 Nov 2003)
-if [[ -n ${STRAP_RUN} ]] ; then
- emerge clean || cleanup 1
-fi
-
-if [ ${BOOTSTRAP_STAGE} -le 3 ] ; then
- show_status 4 Emerging gcc
- ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myGCC} || cleanup 1
- echo -------------------------------------------------------------------------------
- set_bootstrap_stage 4
-fi
-
# Basic support for gcc multi version/arch scheme ...
if [[ -n ${STRAP_RUN} ]] ; then
if [[ -x ${GCC_CONFIG} ]] && ${GCC_CONFIG} --get-current-profile &>/dev/null
@@ -337,20 +334,12 @@ if [[ -n ${STRAP_RUN} ]] ; then
fi
fi
-if [ ${BOOTSTRAP_STAGE} -le 4 ] ; then
- show_status 5 Emerging libc/baselayout
- ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myLIBC} ${myBASELAYOUT} ${myZLIB} || cleanup 1
- echo -------------------------------------------------------------------------------
- set_bootstrap_stage 5
-fi
-
-# ncurses-5.3 and up also build c++ bindings, so we need to rebuild it
-export USE="${ORIGUSE}"
-if [ ${BOOTSTRAP_STAGE} -le 5 ] ; then
- show_status 6 Re-Emerging C++ apps
- ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${myNCURSES} || cleanup 1
+if [[ -n ${STRAP_RUN} ]] ; then
echo -------------------------------------------------------------------------------
- set_bootstrap_stage 6
+ einfo "Please note that you should now add the '-e' option for emerge system:"
+ echo
+ einfo " # emerge -e system"
+ echo
fi
# Restore original make.conf