From: Fabian Groffen Date: Sat, 30 Dec 2006 20:36:33 +0000 (+0000) Subject: Shove Darwin/OSX bootstrap scripts into the attic, this stuff is not X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=5360811ee5815864536cc511a3e0a193d759264e;p=gentoo.git Shove Darwin/OSX bootstrap scripts into the attic, this stuff is not maintained/used any more, and is best out of sight. --- diff --git a/scripts/bootstrap-darwin.sh b/scripts/bootstrap-darwin.sh deleted file mode 100755 index e0c85276efe9..000000000000 --- a/scripts/bootstrap-darwin.sh +++ /dev/null @@ -1,526 +0,0 @@ -#!/bin/bash -# Copyright 2005 The Gentoo Foundation -# Distributed under the terms of the GNU General Public License, v2 -# $Header: /var/cvsroot/gentoo-x86/scripts/bootstrap-darwin.sh,v 1.4 2005/07/11 20:17:42 kito Exp $ - -trap 'exit 1' TERM KILL INT QUIT ABRT - -# we only run on Darwin -if [ "`uname`" != Darwin ]; then - echo `uname` - echo "You need to be running a mach kernel to proceed." - exit 1 -fi - -# Make sure sudo passwd is asked for -sudo true - -## some vars - -# We do not want stray $TMP, $TMPDIR or $TEMP settings -unset TMP TMPDIR TEMP -ARCH=ppc -CFLAGS="-O2 -pipe" -CHOST="powerpc-apple-darwin" -ROOT="" -PORTDIR=${ROOT}/usr/portage -DISTDIR=${PORTDIR}/distfiles -PORTAGE_TMPDIR=${ROOT}/var/tmp -PORTAGEURL="http://dev.gentoo.org/~jstubbs/releases/" -PORTAGEVERSION=2.0.51.22 -PYTHONVERSION=2.4.1 -DMGURL="http://www.metadistribution.org/gentoo/macos" -DMGVERSION=20041118 -BOOTSTRAPSCRIPT="`pwd`/${0##*/}" - -sudo mkdir -p ${DISTDIR} ${PORTAGE_TMPDIR} - -echo ${BOOTSTRAPSCRIPT} - -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 -export CXXFLAGS="${CXXFLAGS:-${CFLAGS}}" -export MAKEOPTS="${MAKEOPTS:--j2}" - -# Source functions to have colors and nice output - -if [ -e /etc/init.d/functions.sh ] ; then - source /etc/init.d/functions.sh - - # Use our own custom script, else logger cause things to - # 'freeze' if we do not have a system logger running - esyslog() { - echo &> /dev/null - } -else - eerror() { echo "!!! $*"; } - einfo() { echo "* $*"; } -fi - -## Functions Start Here - -bootstrap_od() { - - ## TODO - echo "Not implemented yet." - exit 1 - -} - -bootstrap_portage() { - TARGET=$1 - - if [ ! -x ${ROOT}/usr/bin/emerge ] ; then - PV=${PORTAGEVERSION} - A=portage-${PV}.tar.bz2 - - if [ ! -e ${DISTDIR}/${A} ] ; then - cd ${DISTDIR} && sudo curl -O ${PORTAGEURL}/${A} - fi - - export S="${PORTAGE_TMPDIR}/portage-${PV}" - - rm -rf ${S} - mkdir -p ${S} - cd ${S} - tar -jxvf ${DISTDIR}/${A} || exit 1 - - S=${S}/portage-${PV} - cd ${S} - - cd ${S}/src ; gcc ${CFLAGS} tbz2tool.c -o tbz2tool || exit 1 - cd ${S}/cnf - [ -e ${TARGET}/etc ] || sudo mkdir -p ${TARGET}/etc - cp make.globals ${TARGET}/etc/make.globals - [ -e ${TARGET}/etc/make.conf ] || cp make.conf ${TARGET}/etc/make.conf - cp etc-update.conf dispatch-conf.conf ${TARGET}/etc/ - - mkdir -p ${TARGET}/usr/lib/portage/pym - cd ${S}/pym - cp *.py ${TARGET}/usr/lib/portage/pym/ - - mkdir -p ${TARGET}/usr/lib/portage/bin - cd ${S}/bin - cp * ${S}/src/tbz2tool ${TARGET}/usr/lib/portage/bin/ - - [ -d ${TARGET}/usr/bin ] || sudo mkdir -p ${TARGET}/usr/bin - [ -d ${TARGET}/usr/sbin ] || sudo mkdir -p ${TARGET}/usr/sbin - [ -d ${TARGET}/var/lib/portage ] || sudo mkdir -p ${TARGET}/var/lib/portage - cd ${TARGET}/usr/bin - ln -sf ../lib/portage/bin/emerge ${TARGET}/usr/bin/emerge - ln -sf ../lib/portage/bin/pkgmerge $TARGET/usr/sbin/pkgmerge - ln -sf ../lib/portage/bin/ebuild ${TARGET}/usr/sbin/ebuild - ln -sf ../lib/portage/bin/ebuild.sh ${TARGET}/usr/sbin/ebuild.sh - - ln -sf ../lib/portage/bin/etc-update ${TARGET}/usr/sbin/etc-update - ln -sf ../lib/portage/bin/dispatch-conf ${TARGET}/usr/sbin/dispatch-conf - ln -sf ../lib/portage/bin/archive-conf ${TARGET}/usr/sbin/archive-conf - ln -sf ../lib/portage/bin/fixpackages ${TARGET}/usr/sbin/fixpackages - - ln -sf ../lib/portage/bin/env-update ${TARGET}/usr/sbin/env-update - ln -sf ../lib/portage/bin/xpak ${TARGET}/usr/bin/xpak - ln -sf ../lib/portage/bin/repoman ${TARGET}/usr/bin/repoman - ln -sf ../lib/portage/bin/tbz2tool ${TARGET}/usr/bin/tbz2tool - ln -sf ../lib/portage/bin/portageq ${TARGET}/usr/bin/portageq - - ln -sf ../lib/portage/bin/g-cpan.pl ${TARGET}/usr/bin/g-cpan.pl - ln -sf ../lib/portage/bin/quickpkg ${TARGET}/usr/bin/quickpkg - ln -sf ../lib/portage/bin/regenworld ${TARGET}/usr/sbin/regenworld - ln -sf ../lib/portage/bin/emerge-webrsync ${TARGET}/usr/sbin/emerge-webrsync - - ln -sf ../lib/portage/bin/newins ../lib/portage/bin/donewins - - echo - echo -e "Portage succesfully bootstrapped" - echo - else - echo - echo -e "`type -p emerge`" - echo - fi -} - -bootstrap_progressive() { - #This bootstraps a 'progressive' Gentoo for Mac OS X system. - ## TODO prompt to grab stage{1,2,3} from mirrors or install Xcode from CD/DVD/pkg - gcc -v 2> /dev/null || missing_devtools - bootstrap_python - bootstrap_portage - setup_users - [ -f ${ROOT}/etc/make.profile ] && sudo rm -rf ${ROOT}/etc/make.profile - [ -f ${ROOT}/${PORTDIR}/profiles ] || sudo mkdir -p ${ROOT}/${PORTDIR}/profiles - sudo ln -sf ${ROOT}/${PORTDIR}/profiles/default-darwin/macos/progressive ${ROOT}/etc/make.profile || echo -n "Failed to properly link to ${PORTDIR}/profiles/${profile}" - echo - echo -n "Would you like to emerge sync now (y/n)? " - read answer - if [ $answer == "y" ]; then - echo - echo -e "Grabbing current Portage tree...." - echo - sudo emerge sync || exit 1 - else - echo - echo "Gentoo bootstrap finished. Please run emerge sync then emerge system." - echo - fi - echo -n "We need to install the base system. Run emerge system now (y/n) ? " - read answer - if [ $answer == "y" ]; then - echo - sudo emerge -v system || exit 1 - else - echo - echo "Before installing any packages, you must run emerge system." - exit 1 - fi - echo - echo -n "OK! Your Gentoo for Mac OS X system is complete." - echo - exit 1 - # TODO add links to docs -} - -bootstrap_python() { - TARGET=$1 - PV=${PYTHONVERSION} - A=Python-${PV}.tar.bz2 - if [ ! -e ${DISTDIR}/${A} ] ; then - echo "Fetching Python..." - cd ${DISTDIR} && sudo curl -O 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}" - - sudo rm -rf ${S} - sudo mkdir -p ${S} - cd ${S} - echo "Unpacking Python..." - sudo tar -jxf ${DISTDIR}/${A} || exit 1 - S=${S}/Python-${PV} - echo "Configuring Python..." - cd ${S} - - sudo ./configure \ - --disable-toolbox-glue \ - --enable-unicode=ucs4 \ - --prefix=${TARGET}/usr \ - --host=${CHOST} \ - --mandir=${TARGET}/usr/share/man \ - --infodir=${TARGET}/usr/share/info \ - --datadir=${TARGET}/usr/share \ - --sysconfdir=${TARGET}/etc \ - --localstatedir=${TARGET}/var/lib \ - --with-fpectl \ - --enable-shared \ - --disable-ipv6 \ - --infodir='${prefix}'/share/info \ - --mandir='${prefix}'/share/man \ - --with-threads \ - --with-cxx=no \ - || exit 1 - sudo make ${MAKEOPTS} || exit 1 - sudo make altinstall || exit 1 - cd ${TARGET}/usr/bin - sudo ln -sf python2.4 python - - echo - echo -e "Python succesfully bootstrapped" -} - -bootstrap_standard() { - - #This mounts the current .dmg installer if portage is not found, and links to the appropriate FEATURES="collision-protect" profile - # TODO make / ${ROOT} - - gcc -v 2> /dev/null || missing_devtools - - if [ ! -x /usr/bin/emerge ] ; then - A=gentoo-macos-${DMGVERSION}.dmg - echo - echo "Mounting Gentoo for Mac OS X Disk Image at ${DMGURL}/${A}" - echo - sudo hdid ${DMGURL}/${A} || echo "Could not mount remote image" - # TODO check md5 sum/timeout - export CM_BUILD=CM_BUILD - sudo installer -verbose -pkg /Volumes/gentoo-macos/Gentoo\ for\ Mac\ OS\ X\ Installer.pkg -target / || exit 1 - sudo hdiutil unmount /Volumes/gentoo-macos/ - echo - echo -e "Portage sucessfully installed" - echo - else - echo "Portage seems to be installed. Setting up profile..." - fi - - check_release_version - sudo rm -rf /etc/make.profile - sudo mkdir -p ${PORTDIR}/profiles - sudo ln -sf ${PORTDIR}/profiles/${profile} /etc/make.profile || echo -n "Failed to properly link to ${PORTDIR}/profiles/${profile}" - if [ ! -f /usr/portage/metadata/timestamp ]; then - echo -n "It doesn't look like you've ran emerge sync yet, sync now (y/n) ? " - read answer - if [ $answer == "y" ]; then - echo - echo -e "Grabbing current Portage tree...." - echo - sudo emerge sync && echo "emerge sync complete." || echo "emerge sync failed. Please run this command manually" && exit 1 - echo -n "Would you like to emerge the base system now (y/n) ? " - read answer - if [ $answer == "y" ]; then - sudo emerge -ev system && echo "emerge system complete." \ - || echo "There were errors running emerge system. Please run this command manually" && exit 1 - else - echo -n "Bye." - exit 1 - fi - else - echo "Please emerge sync && emerge system." - echo -n "Bye." - exit 1 - fi - fi - - echo -e "OK! Your Gentoo for Mac OS X system is complete.\n" - echo - exit 1 - # TODO add links to docs -} - -check_release_version() { - - if [ -x `which sw_vers` ]; then - NAME="Mac OS X" - RV_MAJOR="`sw_vers | grep ProductVersion | sed s:'ProductVersion\:::' | awk '{print $1}' | cut -d. -f 1`" - RV_MINOR="`sw_vers | grep ProductVersion | cut -d. -f 2`" - RV_PATCH="`sw_vers | grep ProductVersion | cut -d. -f 3`" - RV="${RV_MAJOR}.${RV_MINOR}" - if [ ${RV_MINOR} -lt 3 ]; then - echo "Sorry, you need at least Mac OS X 10.3 Panther." - exit 1 - fi - echo - echo -e "It appears you are running Mac OS X ${RV_MAJOR}.${RV_MINOR}" - echo - profile="default-darwin/macos/${RV}" - return - else - echo - echo -e "It appears you are not running Mac OS X...Assuming its Darwin..." - echo - bootstrap_od - exit 1 - fi - -} - -create_dmg() { - export CM_BUILD=CM_BUILD - TARGET=${ROOT}/mnt/gentoo - BUILDDIR=${PORTAGE_TMPDIR}/portage/dmgbuild - [ -d ${TARGET} ] || sudo mkdir -p ${TARGET} - if [ -d ${BUILDIR} ]; then - sudo rm -rf ${BUILDDIR}/* - else - sudo mkdir ${BUILDDIR} - fi - hdiutil create -type UDIF -size 4.2g -fs HFS+J -volname ${VOLNAME} -uid 0 -gid 0 ${OUTPUTDMG} || exit 1 - sudo hdiutil attach ${OUTPUTDMG} -mountpoint ${TARGET} -nobrowse -owners on || exit 1 - sudo installer -verbose -pkg /Library/Receipts/BaseSystem.pkg -target ${TARGET} - sudo installer -verbose -pkg ${PACKAGEDIR}/Essentials.pkg -target ${TARGET} - sudo installer -verbose -pkg ${PACKAGEDIR}/BSD.pkg -target ${TARGET} - sudo installer -verbose -pkg ${PACKAGEDIR}/DeveloperTools.pkg -target ${TARGET} - sudo installer -verbose -pkg ${PACKAGEDIR}/DevSDK.pkg -target ${TARGET} - sudo installer -verbose -pkg ${PACKAGEDIR}/BSDSDK.pkg -target ${TARGET} - sudo installer -verbose -pkg ${PACKAGEDIR}/gcc3.3.pkg -target ${TARGET} - # TODO check for incremental updates - if [ -d ${PACKAGEDIR}/MacOSXUpdateCombo10.3.8.pkg ];then - sudo installer -verbose -pkg ${PACKAGEDIR}/MacOSXUpdateCombo10.3.8.pkg -target ${TARGET} - else - echo - echo -e "Mac OS X 10.3.8 Update not found...oh well, vanilla 10.3 it is." - echo - fi - echo - echo -e "Completed Installing OS X System Packages." - echo - [ ! -f ${TARGET}/var/log/CDIS.custom ] && sudo mkdir -p ${TARGET}/var/log - sudo echo 'LANGUAGE=English' > ${TARGET}/var/log/CDIS.custom - echo - echo "Updating mkext cache" - sudo kextcache -K ${TARGET}/mach_kernel -a ${ARCH} -m ${TARGET}/System/Library/Extensions.mkext ${TARGET}/System/Library/Extensions 2>/dev/null - sudo cp ${BOOTSTRAPSCRIPT} ${TARGET}/sbin && sudo chmod a+x ${TARGET}/sbin/"${0##*/}" - ## HACK we cant mount images in the chroot properly, so we copy the standard install pkg to the target before we chroot - echo -n "Would you like this to be a standard install(apple files will not be modified) (y/n)? " - read answer - if [ $answer == "y" ]; then - A=gentoo-macos-${DMGVERSION}.dmg - echo - echo "Mounting Gentoo for Mac OS X Disk Image at ${DMGURL}/${A}" - echo - sudo hdid ${DMGURL}/${A} || echo "Could not mount remote image" - # TODO check md5 sum/timeout - export CM_BUILD=CM_BUILD - sudo installer -verbose -pkg /Volumes/gentoo-macos/Gentoo\ for\ Mac\ OS\ X\ Installer.pkg -target ${TARGET} || exit 1 - sudo hdiutil unmount /Volumes/gentoo-macos/ - echo -e "Portage installed on ${TARGET}" - else - echo -e "Ok, this will be a progressive chroot." - fi - echo -n "Would you like to chroot and complete the bootstrap process now (y/n)? " - read answer - if [ $answer == "y" ]; then - echo - if [ ! -c "${TARGET}/dev/null" ]; then - echo "Mounting devfs..." - sudo mkdir -p "${TARGET}/dev" - sudo mount -t devfs stdin "${TARGET}/dev" - sudo mount -t fdesc -o union stdin "${TARGET}/dev" - else - echo "devfs appears to exist..." - fi - echo "Mounting volfs..." - [ -d "${TARGET}/sbin" ] || sudo mkdir -p "${TARGET}/sbin" - [ -f "${TARGET}/sbin/mount_volfs" ] || sudo cp /sbin/mount_volfs ${TARGET}/sbin/ - [ -d "${TARGET}/.vol" ] || sudo mkdir -p "${TARGET}/.vol" - ## If the directory is empty, assume volfs is not mounted - [ "$(echo ${TARGET}/.vol/*)" == "${TARGET}/.vol/*" ] && sudo /sbin/mount_volfs "${TARGET}/.vol" - echo - echo -e "To finish the bootstrap: cd /sbin && ./bootstrap-darwin.sh {standard,progressive}" - echo - sudo chroot ${TARGET} /bin/bash - echo - echo -e "Buh bye." - echo - # we do once for devfs and once for fdesc - sudo umount ${TARGET}/dev && sudo umount ${TARGET}/dev - sudo umount ${TARGET}/.vol - sudo hdiutil unmount ${TARGET} - else - echo - echo -e "Completed creating ${OUTPUTDMG}" - echo -e "To use your new disk image mount it,mount devfs, fdesc, and volfs like this:" - echo - echo -e " hdiutil attach ${OUTPUTDMG} -owners on" - echo -e " mount -t devfs stdin /Volumes/${VOLNAME}/dev" - echo -e " mount -t fdesc -o union stdin /Volumes/${VOLNAME}/dev" - echo -e " mount_volfs /Volumes/${VOLNAME}/.vol" - echo - echo -e "Then chroot like this:" - echo - echo -e " chroot /Volumes/${VOLNAME} /bin/bash" - echo - echo -e "Once you have chrooted, bootstrap portage by running this script like so:" - echo - echo -e " cd /sbin && ${0##*/} {standard,progressive} \n" - echo - fi - exit 1 -} - -greeting() { - echo - echo -e "Gentoo for Mac OS X" - echo -e "http://www.gentoo.org/" - echo -e "Copyright 2005 The Gentoo Foundation" - echo -e "Distributed under the GPLv2 and APSLv2 Licenses" - echo -} - -missing_devtools() { - ## TODO install from Xcode CD,pkg on local disk, or use tools in portage - echo -e "Please install the Xcode Developer Tools available at http://developer.apple.com/tools/download" - echo - exit 1 - - sudo installer -verbose -pkg ${DISTDIR}/DeveloperTools.pkg -target ${ROOT} - sudo installer -verbose -pkg ${DISTDIR}/DevSDK.pkg -target ${ROOT} - sudo installer -verbose -pkg ${DISTDIR}/BSDSDK.pkg -target ${ROOT} - sudo installer -verbose -pkg ${DISTDIR}/gcc3.3.pkg -target ${ROOT} -} - -setup_users() { - TARGET=$1 - # TODO prompt current user to add to portage group - if [ ! -d ${TARGET}/var/db/netinfo/local.nidb ]; then - echo "Creating local NetInfo database" - # loop until password was entered the same twice - while [ 1 ]; do - ROOT_PW=`openssl passwd` - if [ ${?} == "0" ]; then - break - fi - done - sudo mkdir -p ${TARGET}/var/db/netinfo/local.nidb - sudo nicl -raw ${TARGET}/var/db/netinfo/local.nidb -create /users/root passwd ${ROOT_PW} - sudo touch ${TARGET}/var/db/.AppleSetupDone - sudo nicl -raw ${TARGET}/var/db/netinfo/local.nidb -create /users/portage - sudo nicl -raw ${TARGET}/var/db/netinfo/local.nidb -create /groups/portage - sudo nicl -raw ${TARGET}/var/db/netinfo/local.nidb -create /users/portage uid 250 - sudo nicl -raw ${TARGET}/var/db/netinfo/local.nidb -create /users/portage gid 250 - sudo nicl -raw ${TARGET}/var/db/netinfo/local.nidb -create /groups/portage gid 250 - else - sudo niutil -create / /users/portage - sudo niutil -create / /groups/portage - sudo niutil -createprop / /users/portage uid 250 - sudo niutil -createprop / /users/portage gid 250 - sudo niutil -createprop / /groups/portage gid 250 - fi - -} - -show_status() { - local num=$1 - shift - echo " [[ ($num/6) $* ]]" -} - -usage() { - echo -e "Usage: ${HILITE}${0##*/}${NORMAL} ${GOOD}[options]${NORMAL}" - echo - echo -e " ${GOOD}standard${NORMAL} Mac OS X Standard - no system files will be modified (requires Xcode)" - echo -e " ${GOOD}progressive${NORMAL} Mac OS X Progressive - EXPERIMENTAL!! Tames your Panther." - echo -e " ${GOOD}dmg${NORMAL} ${GOOD}/Path/to/Packages${NORMAL} ${GOOD}/Output.dmg${NORMAL} ${GOOD}dmgsize${NORMAL} ${GOOD}volname${NORMAL}Creates a Mac OS X Disk Image suitable for a development chroot" - echo - echo -e " Examples:" - echo - echo -e " ${BOOTSTRAPSCRIPT} standard" - echo -e " ${BOOTSTRAPSCRIPT} progressive" - echo -e " ${BOOTSTRAPSCRIPT} dmg ~/Packages ~/Desktop/10.3.dmg 4.2 10.3-chroot" - echo - exit 1 -} - -## End Functions - -greeting - -for ARG in "$@"; do -if [ "$ARG" == "progressive" ]; then - echo "Progressive!" - bootstrap_progressive -elif [ "$ARG" == "standard" ]; then - bootstrap_standard -elif [ "$ARG" == "dmg" ]; then - PACKAGEDIR=$2 - OUTPUTDMG=$3 - DMGSIZE=$4 - VOLNAME=$5 - create_dmg -elif [ "$ARG" == "pythononly" ]; then - bootstrap_python $2 -elif [ "$ARG" == "portageonly" ]; then - bootstrap_portage $2 -fi -done -usage diff --git a/scripts/bootstrap-macos.sh b/scripts/bootstrap-macos.sh deleted file mode 100644 index 6c4069a8a357..000000000000 --- a/scripts/bootstrap-macos.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -# Copyright 2004 The Gentoo Foundation, Pieter Van den Abeele -# Distributed under the terms of the GNU General Public License, v2 -# $Header: /var/cvsroot/gentoo-x86/scripts/bootstrap-macos.sh,v 1.9 2004/11/21 17:32:37 kito Exp $ - -# Make sure sudo passwd is asked for - -sudo true - -# Source functions to have colors and nice output - -trap 'exit 1' TERM KILL INT QUIT ABRT - -echo -echo -e "Gentoo for Mac OS X; http://www.gentoo.org/" -echo -e "Copyright 2004 The Gentoo Foundation ; Distributed under the GPL v2" -echo - -NAME="Mac OS X" -RELEASE="10" - -case "`uname -r`" in - 6*) - # We don't really support this - NAME="Jaguar" - # We reuse the Panther profile - RELEASE="10.3" - ;; - 7*) - NAME="Panther" - RELEASE="10.3" - ;; - 8*) - NAME="Tiger" - RELEASE="10.4" - ;; -esac - -sudo ln -sf /usr/portage/profiles/default-darwin/macos/${RELEASE} /etc/make.profile - -# ebegin "Portage will attempt taming your ${NAME}" - -function missing_devtools { - ewend 1 - echo -e "Please install the ${NAME} developer tools (>1.1)" - echo - exit 1 -} - -gcc -v 2> /dev/null || missing_devtools - -echo -echo -e "Portage successfully tamed your ${NAME}"