I have successfully bootstrapped a gentoo box from stage1-x86-1.4_rc1.
The following outlines the process used.
Disclaimer: This may break your system! There may be more graceful ways of doing this ... but it worked for me
At the point during an install when you would normally run
Code: Select all
scripts/bootstrap.shTo use distcc while bootstrapping, do the following:
- Emerge distcc to your system
Code: Select all
emerge distcc - Backup bootstrap.sh
Code: Select all
cp /usr/portage/scripts/bootstrap.sh /usr/portage/scripts/bootstrap.sh.orig - Edit bootstrap.sh to make it use distcc.
Find the following section in bootstrap.sh.
Code: Select all
nano -w /usr/portage/scripts/bootstrap.shCode: Select all
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"];'`" - Comment out the line :
Should now look like this :
Code: Select all
export MAKEOPTS="`$PYTHON -c 'import portage; print portage.settings["MAKEOPTS"];'`"Code: Select all
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"];'`" - Add a new line above the one you just commented out.
The -j12 specifies the number of threads to use; you may want to tweak this. (ie -j8 or -j32).
Code: Select all
export MAKEOPTS="-j12 CC='distcc' CXX='distcc'"
The rest tells make to use distcc for compiling c and c++.
Should now look like this :Code: Select all
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="-j12 CC='distcc' CXX='distcc'" #export MAKEOPTS="`$PYTHON -c 'import portage; print portage.settings["MAKEOPTS"];'`" - Add one more line :
Replace <distccd-srv> with the hostname/IP of the boxes running distccd.
Code: Select all
export DISTCC_HOSTS="localhost <distccd-srv> <distccd-srv> <distccd-srv>"
This line tells distcc which hosts to send work and in which order.
On a really slow box you may wish to leave out localhost or move it to last.
Should now look similar to this:Code: Select all
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 DISTCC_HOSTS="localhost 10.1.1.25 10.1.1.50" export MAKEOPTS="-j12 CC='distcc' CXX='distcc'" #export MAKEOPTS="`$PYTHON -c 'import portage; print portage.settings["MAKEOPTS"];'`" - Now, scroll the end of the script.*
Code: Select all
#make.conf has been overwritten, so we explicitly export our original settings export USE="$ORIGUSE bootstrap" emerge $myGLIBC $myBASELAYOUT $myTEXINFO $myGETTEXT $myBINUTILS $myGCC || cleanup 1 #restore original make.conf cleanup 0 - Find the following line and comment it out.*
It should now look like
Code: Select all
emerge $myGLIBC $myBASELAYOUT $myTEXINFO $myGETTEXT $myBINUTILS $myGCC || cleanup 1Code: Select all
#make.conf has been overwritten, so we explicitly export our original settings export USE="$ORIGUSE bootstrap" #emerge $myGLIBC $myBASELAYOUT $myTEXINFO $myGETTEXT $myBINUTILS $myGCC || cleanup 1 #restore original make.conf cleanup 0 - Now add the following lines above the one you commented out.*
Should finally look like
Code: Select all
export MAKEOPTS="-j12 CC='distcc gcc' CXX='distcc g++'" emerge $myGLIBC || cleanup 1 export MAKEOPTS="-j12 CC='distcc' CXX='distcc'" emerge $myBASELAYOUT $myTEXINFO $myGETTEXT $myBINUTILS $myGCC || cleanup 1Code: Select all
#make.conf has been overwritten, so we explicitly export our original settings export USE="$ORIGUSE bootstrap" export MAKEOPTS="-j12 CC='distcc gcc' CXX='distcc g++'" emerge $myGLIBC || cleanup 1 export MAKEOPTS="-j12 CC='distcc' CXX='distcc'" emerge $myBASELAYOUT $myTEXINFO $myGETTEXT $myBINUTILS $myGCC || cleanup 1 #emerge $myGLIBC $myBASELAYOUT $myTEXINFO $myGETTEXT $myBINUTILS $myGCC || cleanup 1 #restore original make.conf cleanup 0 - Save bootstrap.sh then
Enjoy!
Code: Select all
cd /usr/portage && scripts/bootstrap.sh
*Edited to change subject 10/27
Comments? Suggestions?





