#!/bin/bash if [ -e /etc/make.conf ] ; then if [ -z "${CHOST}" ] ; then CHOST=$(source /etc/make.conf 2>/dev/null ; echo ${CHOST}) fi if [ -z "${CFLAGS}" ] ; then CFLAGS=$(source /etc/make.conf 2>/dev/null ; echo ${CFLAGS}) fi fi if [ -z "${CHOST}" ] ; then echo "Please set CHOST" exit 1 fi if [ -z "${CFLAGS}" ] ; then echo "Please set CFLAGS" exit 1 fi if [ -z "${ARCH}" ] ; then echo "Please set ARCH" exit 1 fi [ -z "${MAKEOPTS}" ] && MAKEOPTS=${MAKEFLAGS} export CHOST CFLAGS MAKEOPTS ARCH PORTDIR=/usr/portage DISTDIR=${PORTDIR}/distfiles PORTAGE_TMPDIR=/var/tmp PORTAGE_VER=2.1.2 PYTHON_VER=2.4.4 echo "Going to try to boostrap python / portage if needed." echo "Python ${PYTHON_VER}" echo "Portage ${PORTAGE_VER}" echo for v in CHOST CFLAGS ARCH MAKEOPTS PORTDIR DISTDIR PORTAGE_TMPDIR ; do echo "${v} = ${!v}" done echo echo "Press return to continue or CTRL+C to abort ..." read mkdir -p "${DISTDIR}" ###################### # bootstrap python ###################### if [ ! -x /usr/bin/python ] ; then PV=${PYTHON_VER} A=Python-${PV}.tar.bz2 if [ ! -e "${DISTDIR}/${A}" ] ; then wget -P "${DISTDIR}" http://www.python.org/ftp/python/${PV%_*}/${A} fi export S="${PORTAGE_TMPDIR}/python-${PV}" export PYTHON_DISABLE_MODULES="readline pyexpat dbm gdbm bsddb _curses _curses_panel _tkinter" export PYTHON_DISABLE_SSL=1 export OPT="${CFLAGS}" rm -rf ${S} mkdir -p ${S} cd ${S} tar -jxf ${DISTDIR}/${A} || exit 1 S=${S}/Python-${PV} cd ${S} ./configure \ --enable-unicode=ucs4 \ --prefix=/usr \ --host=${CHOST} \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ --datadir=/usr/share \ --sysconfdir=/etc \ --localstatedir=/var/lib \ --with-fpectl \ --enable-shared \ --disable-ipv6 \ --infodir='${prefix}'/share/info \ --mandir='${prefix}'/share/man \ --with-threads \ --with-cxx=no \ || exit 1 make ${MAKEOPTS} || exit 1 make altinstall || exit 1 cd /usr/bin ln -s python${PV:0:3} python fi ###################### # bootstrap portage ###################### if [ ! -x /usr/bin/emerge ] ; then PV=${PORTAGE_VER} A=portage-${PV}.tar.bz2 if [ ! -e ${DISTDIR}/${A} ] ; then wget -P ${DISTDIR} http://gentoo.osuosl.org/distfiles/${A} fi export S="${PORTAGE_TMPDIR}/portage-${PV}" rm -rf ${S} mkdir -p ${S} cd ${S} tar -jxf ${DISTDIR}/${A} || exit 1 S=${S}/portage-${PV} cd ${S} python -O -c "import compileall; compileall.compile_dir('${S}/pym')" cd ${S}/src ; gcc ${CFLAGS} tbz2tool.c -o tbz2tool || exit 1 cd ${S}/cnf cp make.conf etc-update.conf dispatch-conf.conf make.globals /etc/ patch /etc/make.conf make.conf.${ARCH} mkdir -p /usr/lib/portage/pym cd ${S}/pym cp -r * ../bin/emergehelp.py /usr/lib/portage/pym/ mkdir -p /usr/lib/portage/bin cd ${S}/bin cp * ${S}/src/tbz2tool /usr/lib/portage/bin/ ln -s newins /usr/lib/portage/bin/donewins for x in ebuild emerge portageq repoman tbz2tool xpak; do ln -s ../lib/portage/bin/${x} /usr/bin/${x} done for x in archive-conf dispatch-conf emaint emerge-webrsync \ env-update etc-update fixpackages quickpkg regenworld do ln -s ../lib/portage/bin/${x} /usr/sbin/${x} done mkdir -p /etc/portage fi ###################### # setup misc configs ###################### grep -qs ^wheel: /etc/group || echo "wheel::10:root" >> /etc/group grep -qs ^portage: /etc/group || echo "portage::250:portage" >> /etc/group grep -qs ^portage: /etc/passwd || echo "portage:x:250:250:portage:/var/tmp/portage:/bin/false" >> /etc/passwd