diff options
author | grant <grant> | 2004-03-28 01:55:17 +0000 |
---|---|---|
committer | grant <grant> | 2004-03-28 01:55:17 +0000 |
commit | f0d22d49d5e36998a7b6def71af5410d61332712 (patch) | |
tree | f35a21d2adddec08e8db0308483635977470d0eb /bootstrap | |
parent | 694a066333b9fc58f298b14f26b7643d9e604d73 (diff) | |
download | pkgsrc-f0d22d49d5e36998a7b6def71af5410d61332712.tar.gz |
apply patch from Klaus Heinz to support bootstrapping from a read-only
pkgsrc with the --workdir argument.
Diffstat (limited to 'bootstrap')
-rwxr-xr-x | bootstrap/bootstrap | 95 |
1 files changed, 59 insertions, 36 deletions
diff --git a/bootstrap/bootstrap b/bootstrap/bootstrap index 420cf97c1e7..c301785da82 100755 --- a/bootstrap/bootstrap +++ b/bootstrap/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh -# $NetBSD: bootstrap,v 1.8 2004/03/21 01:06:37 grant Exp $ +# $NetBSD: bootstrap,v 1.9 2004/03/28 01:55:17 grant Exp $ # # # Copyright (c) 2001-2002 Alistair G. Crooks. All rights reserved. @@ -45,7 +45,12 @@ pkgsrcdir=/usr/pkgsrc ignorecasecheck=no ignoreusercheck=no +# where the building takes place +wrkdir=work # default: relative to pkgsrc/bootstrap +bootstrapdir=`pwd` + usage="Usage: $0 "' + [ --workdir=<workdir> ] [ --prefix=<prefix> ] [ --pkgdbdir=<pkgdbdir> ] [ --pkgsrcdir=<pkgsrcdir> ] @@ -53,9 +58,6 @@ usage="Usage: $0 "' [ --ignore-user-check ] [ --help ]' -# where the building takes place, relative to pkgsrc/bootstrap. -wrkdir=work - # this replicates some of the logic in bsd.prefs.mk. until # bootstrap-pkgsrc is merged into pkgsrc, we need to determine the # right value for OPSYS and MACHINE_ARCH. @@ -130,7 +132,7 @@ opsys_finish() ln -sf /usr /usr/X11R6 fi if [ ! -z $imakeopts ]; then - echo "IMAKEOPTS+=$imakeopts" >> mk.conf.example + echo "IMAKEOPTS+=$imakeopts" >> ${MKCONF_EXAMPLE} fi patch -d / --forward --quiet -E -p0 \ < files/irix.patch 2>/dev/null || true @@ -336,6 +338,7 @@ check_prog whoamiprog whoami while [ $# -gt 0 ]; do case $1 in + --workdir=*) wrkdir=`echo $1 | $sedprog -e 's|--workdir=||'` ;; --prefix=*) prefix=`echo $1 | $sedprog -e 's|--prefix=||'` ;; --pkgdbdir=*) pkgdbdir=`echo $1 | $sedprog -e 's|--pkgdbdir=||'` ;; --pkgsrcdir=*) pkgsrcdir=`echo $1 | $sedprog -e 's|--pkgsrcdir=||'` ;; @@ -348,6 +351,22 @@ while [ $# -gt 0 ]; do shift done +if [ ! -d ${wrkdir} ]; then + if mkdir ${wrkdir}; then + : + else + echo "Could not create the working directory \"${wrkdir}\". Try $0 -h."; + exit 1 + fi +fi +if touch ${wrkdir}/.writeable; then + : +else + echo "\"${wrkdir}\" is not writeable. Try $0 -h."; + exit 1 +fi +echo "Working directory is: ${wrkdir}" + is_root if [ $? = 1 ]; then user=$root_user @@ -367,7 +386,7 @@ BINGRP=$group LIBOWN=$user LIBGRP=$group MANOWN=$user -MANGRP=$group" > Makefile.inc +MANGRP=$group" > ${wrkdir}/Makefile.inc fi # make sure we're using a case-sensitive file system on Darwin @@ -398,25 +417,27 @@ PKG_DBDIR=$pkgdbdir; export PKG_DBDIR LOCALBASE=$prefix; export LOCALBASE # set up an example mk.conf file -echo_msg "Creating sample mk.conf" -echo "# Example /etc/mk.conf file produced by bootstrap-pkgsrc" > mk.conf.example -echo "# `date`" >> mk.conf.example -echo "" >> mk.conf.example -echo ".ifdef BSD_PKG_MK # begin pkgsrc settings" >> mk.conf.example -echo "" >> mk.conf.example +MKCONF_EXAMPLE=${wrkdir}/mk.conf.example +export MKCONF_EXAMPLE +echo_msg "Creating mk.conf.example in ${wrkdir}" +echo "# Example /etc/mk.conf file produced by bootstrap-pkgsrc" > ${MKCONF_EXAMPLE} +echo "# `date`" >> ${MKCONF_EXAMPLE} +echo "" >> ${MKCONF_EXAMPLE} +echo ".ifdef BSD_PKG_MK # begin pkgsrc settings" >> ${MKCONF_EXAMPLE} +echo "" >> ${MKCONF_EXAMPLE} # IRIX64 needs to be set to IRIX, for example if [ "$set_opsys" = "yes" ]; then - echo "OPSYS=$opsys" >> mk.conf.example + echo "OPSYS=$opsys" >> ${MKCONF_EXAMPLE} fi if [ ! -z "$abi" ]; then - echo "ABI=$abi" >> mk.conf.example + echo "ABI=$abi" >> ${MKCONF_EXAMPLE} fi # save environment in example mk.conf -echo "PKG_DBDIR=$pkgdbdir" >> mk.conf.example -echo "LOCALBASE=$prefix" >> mk.conf.example +echo "PKG_DBDIR=$pkgdbdir" >> ${MKCONF_EXAMPLE} +echo "LOCALBASE=$prefix" >> ${MKCONF_EXAMPLE} # create directories mkdir_p $prefix $pkgdbdir $prefix/sbin @@ -425,22 +446,24 @@ mkdir_p $prefix/man/man8 $prefix/man/cat8 # bootstrap make and *.mk files mkdir_p $prefix/share/mk $prefix/lib -(cd bmake/mk; - if [ -f ../../mods/mk/$opsys.sys.mk ]; then - run_cmd "$cpprog ../../mods/mk/$opsys.sys.mk $prefix/share/mk/sys.mk" +copy_src bmake bmake + +(cd ${wrkdir}/bmake/mk; + if [ -f ${bootstrapdir}/mods/mk/$opsys.sys.mk ]; then + run_cmd "$cpprog ${bootstrapdir}/mods/mk/$opsys.sys.mk $prefix/share/mk/sys.mk" else - run_cmd "$cpprog ../../mods/mk/generic.sys.mk $prefix/share/mk/sys.mk" + run_cmd "$cpprog ${bootstrapdir}/mods/mk/generic.sys.mk $prefix/share/mk/sys.mk" fi run_cmd "$cpprog bsd.*.mk $prefix/share/mk") if [ -f mods/mk/$opsys.bsd.lib.mk ] ; then - run_cmd "$cpprog bmake/mk/bsd.lib.mk bmake/mk/bsd.lib.mk.orig" - run_cmd "$cpprog mods/mk/$opsys.bsd.lib.mk bmake/mk/bsd.lib.mk" + run_cmd "$cpprog ${wrkdir}/bmake/mk/bsd.lib.mk ${wrkdir}/bmake/mk/bsd.lib.mk.orig" + run_cmd "$cpprog mods/mk/$opsys.bsd.lib.mk ${wrkdir}/bmake/mk/bsd.lib.mk" fi -run_cmd "$cpprog bmake/mk/bsd.man.mk bmake/mk/bsd.man.mk.orig" +run_cmd "$cpprog ${wrkdir}/bmake/mk/bsd.man.mk ${wrkdir}/bsd.man.mk.orig" if [ -f mods/mk/$opsys.bsd.man.mk ] ; then - run_cmd "$cpprog mods/mk/$opsys.bsd.man.mk bmake/mk/bsd.man.mk" + run_cmd "$cpprog mods/mk/$opsys.bsd.man.mk ${wrkdir}/bsd.man.mk" run_cmd "$cpprog mods/mk/$opsys.bsd.man.mk $prefix/share/mk/bsd.man.mk" fi @@ -459,7 +482,7 @@ if [ -f mods/mk/$opsys.bsd.sys.mk ]; then fi case "$opsys" in -NetBSD) run_cmd "$cpprog mods/bmake/Makefile.in bmake/Makefile.in" +NetBSD) run_cmd "$cpprog mods/bmake/Makefile.in ${wrkdir}/bmake/Makefile.in" ;; esac @@ -475,7 +498,6 @@ if [ "$need_fixed_strip" = "yes" ] ; then fi echo_msg "Installing bmake" -copy_src bmake bmake run_cmd "(cd $wrkdir/bmake; $shprog ./configure --prefix=$prefix --with-default-sys-path=$prefix/share/mk $configargs && make -f makefile.boot bootstrap && env BINDIR=$prefix/bin MANDIR=$prefix/man $BSTRAP_ENV ./bmake -f Makefile install)" # build libnbcompat @@ -496,7 +518,7 @@ pkg_install_args="$pkg_install_args --with-ftp=$prefix/bin/ftp" FETCH_CMD=$prefix/bin/ftp export FETCH_CMD -echo "FETCH_CMD=$prefix/bin/ftp" >> mk.conf.example +echo "FETCH_CMD=$prefix/bin/ftp" >> ${MKCONF_EXAMPLE} # bootstrap digest echo_msg "Installing digest" @@ -516,7 +538,7 @@ case "$need_pax" in yes) echo_msg "Installing pax" copy_src ../archivers/pax/files pax run_cmd "(cd $wrkdir/pax; env $BSTRAP_ENV CPPFLAGS='-I../libnbcompat' LDFLAGS='-L../libnbcompat' LIBS='-lnbcompat' $shprog ./configure -C --prefix=$prefix && $prefix/bin/bmake && $prefix/bin/bmake install)" - echo "PAX=$prefix/bin/pax" >> mk.conf.example + echo "PAX=$prefix/bin/pax" >> ${MKCONF_EXAMPLE} pkg_install_args="$pkg_install_args --with-pax=$prefix/bin/pax --with-tar=$prefix/bin/tar" ;; *) @@ -540,7 +562,7 @@ case "$need_sed" in yes) echo_msg "Installing sed" copy_src ../textproc/nbsed/files sed run_cmd "(cd $wrkdir/sed; env $BSTRAP_ENV $shprog ./configure -C --prefix=$prefix && make && make install)" - echo "SED=$prefix/bin/nbsed" >> mk.conf.example + echo "SED=$prefix/bin/nbsed" >> ${MKCONF_EXAMPLE} ;; esac @@ -560,15 +582,16 @@ echo_msg "Installing packages(7) man page" # opsys specific fiddling opsys_finish -echo "" >> mk.conf.example -echo ".endif # end pkgsrc settings" >> mk.conf.example +echo "" >> ${MKCONF_EXAMPLE} +echo ".endif # end pkgsrc settings" >> ${MKCONF_EXAMPLE} -echo "Please remember to add $prefix/bin to your PATH environment variable." -echo "If necessary, please remember to add $prefix/man to your MANPATH environment variable." -echo "Please remember to set FETCH_CMD in /etc/mk.conf to $prefix/bin/ftp" echo "" -echo "An example mk.conf file has been created for you in mk.conf.example" -echo "with the settings you provided to bootstrap pkgsrc." +echo "Please remember to add $prefix/bin to your PATH environment variable" +echo "and $prefix/man to your MANPATH environment variable, if necessary." +echo "" +echo "An example mk.conf file \"${MKCONF_EXAMPLE}\" with the settings you" +echo "provided to \"bootstrap\" has been created for you." +echo "Please copy ${MKCONF_EXAMPLE} to /etc/mk.conf." echo "" echo "You can find extensive documentation of the NetBSD Packages Collection" echo "in $pkgsrcdir/Packages.txt and packages(7)." |