diff options
-rwxr-xr-x | bootstrap/bootstrap | 332 | ||||
-rwxr-xr-x | pkgtools/bootstrap-mk-files/files/bootstrap.sh | 32 |
2 files changed, 210 insertions, 154 deletions
diff --git a/bootstrap/bootstrap b/bootstrap/bootstrap index 29e93ab979f..54f31e6e0ae 100755 --- a/bootstrap/bootstrap +++ b/bootstrap/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh -# $NetBSD: bootstrap,v 1.100 2007/07/02 14:59:19 joerg Exp $ +# $NetBSD: bootstrap,v 1.101 2007/07/27 10:43:24 joerg Exp $ # # # Copyright (c) 2001-2002 Alistair G. Crooks. All rights reserved. @@ -184,13 +184,13 @@ opsys_finish() case "$opsys" in IRIX) if [ ! -z "$imakeopts" ]; then - echo "IMAKEOPTS+= $imakeopts" >> ${MKCONF_EXAMPLE} + echo "IMAKEOPTS+= $imakeopts" >> ${TARGET_MKCONF} fi if [ `uname -r` -lt 6 ]; then echo_msg "Installing fake ldd script" run_cmd "$install_sh -c -o $user -g $group -m 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/fakeldd $prefix/sbin" need_extras=yes - echo "LDD= $prefix/sbin/fakeldd" >> ${MKCONF_EXAMPLE} + echo "LDD= $prefix/sbin/fakeldd" >> ${TARGET_MKCONF} fi ;; esac @@ -234,6 +234,18 @@ mkdir_p() done } +mkdir_p_early() +{ + if [ ! -d "$1" ]; then + if mkdir -p "$1"; then + : + else + echo_msg "mkdir $1 exited with status $?" + die "aborted." + fi + fi +} + copy_src() { _src="$1"; _dst="$2" @@ -513,6 +525,12 @@ OSF1) ;; esac +if [ -z "$fetch_cmd" ]; then + need_ftp=yes +else + need_ftp=no +fi + # If "--full" is specified, then install all of the platform-independent # bootstrap software. # @@ -522,6 +540,7 @@ yes) need_bsd_install=yes need_awk=yes need_sed=yes + need_ftp=yes ;; esac @@ -568,15 +587,7 @@ check_prog sedprog sed check_prog shprog sh check_prog whoamiprog whoami - -if [ ! -d ${wrkdir} ]; then - if mkdir ${wrkdir}; then - : - else - echo "Could not create the working directory \"${wrkdir}\". Try $0 -h."; - exit 1 - fi -fi +mkdir_p_early ${wrkdir} if touch ${wrkdir}/.writeable; then : else @@ -606,10 +617,12 @@ if [ "$compiler" = "" ] && [ x"$check_compiler" = x"yes" ]; then fi fi +mkdir_p_early ${wrkdir}/bin + # build install-sh -run_cmd "$sedprog -e 's|@DEFAULT_INSTALL_MODE@|'${default_install_mode-0755}'|' $pkgsrcdir/sysutils/install-sh/files/install-sh.in > $wrkdir/install-sh" -run_cmd "$chmodprog +x $wrkdir/install-sh" -install_sh="$shprog $wrkdir/install-sh" +run_cmd "$sedprog -e 's|@DEFAULT_INSTALL_MODE@|'${default_install_mode-0755}'|' $pkgsrcdir/sysutils/install-sh/files/install-sh.in > $wrkdir/bin/install-sh" +run_cmd "$chmodprog +x $wrkdir/bin/install-sh" +install_sh="$shprog $wrkdir/bin/install-sh" is_root if [ $? = 1 ]; then @@ -671,240 +684,251 @@ if [ x"$needfnmatchh" = x"yes" ]; then fi # set up an example mk.conf file -MKCONF_EXAMPLE=${wrkdir}/mk.conf.example -export MKCONF_EXAMPLE -echo_msg "Creating mk.conf.example in ${wrkdir}" -echo "# Example ${sysconfdir}/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} +TARGET_MKCONF=${wrkdir}/mk.conf.example +echo_msg "Creating default mk.conf. in ${wrkdir}" +echo "# Example ${sysconfdir}/mk.conf file produced by bootstrap-pkgsrc" > ${TARGET_MKCONF} +echo "# `date`" >> ${TARGET_MKCONF} +echo "" >> ${TARGET_MKCONF} +echo ".ifdef BSD_PKG_MK # begin pkgsrc settings" >> ${TARGET_MKCONF} +echo "" >> ${TARGET_MKCONF} # IRIX64 needs to be set to IRIX, for example if [ "$set_opsys" = "yes" ]; then - echo "OPSYS= $opsys" >> ${MKCONF_EXAMPLE} + echo "OPSYS= $opsys" >> ${TARGET_MKCONF} fi if [ ! -z "$abi" ]; then - echo "ABI= $abi" >> ${MKCONF_EXAMPLE} + echo "ABI= $abi" >> ${TARGET_MKCONF} fi if [ "$compiler" != "" ]; then - echo "PKGSRC_COMPILER= $compiler" >> ${MKCONF_EXAMPLE} + echo "PKGSRC_COMPILER= $compiler" >> ${TARGET_MKCONF} fi # enable unprivileged builds if not root if [ "$ignoreusercheck" = "yes" ]; then - echo "UNPRIVILEGED= yes" >> ${MKCONF_EXAMPLE} + echo "UNPRIVILEGED= yes" >> ${TARGET_MKCONF} fi # save environment in example mk.conf -echo "PKG_DBDIR= $pkgdbdir" >> ${MKCONF_EXAMPLE} -echo "LOCALBASE= $prefix" >> ${MKCONF_EXAMPLE} -echo "VARBASE= $varbase" >> ${MKCONF_EXAMPLE} +echo "PKG_DBDIR= $pkgdbdir" >> ${TARGET_MKCONF} +echo "LOCALBASE= $prefix" >> ${TARGET_MKCONF} +echo "VARBASE= $varbase" >> ${TARGET_MKCONF} if [ "${sysconfdir}" != "${prefix}/etc" ]; then - echo "PKG_SYSCONFBASE= $sysconfdir" >> ${MKCONF_EXAMPLE} -fi -echo "PKG_TOOLS_BIN= $prefix/sbin" >> ${MKCONF_EXAMPLE} -echo "PKGMANDIR= $pkgmandir" >> ${MKCONF_EXAMPLE} -echo "" >> ${MKCONF_EXAMPLE} - -# create directories -mkdir_p $prefix $pkgdbdir $prefix/sbin -mkdir_p $mandir/man1 $mandir/cat1 -mkdir_p $mandir/man8 $mandir/cat8 - -# bootstrap make and *.mk files -mkdir_p $prefix/share/mk $prefix/lib -copy_src $pkgsrcdir/pkgtools/bootstrap-mk-files/files mk-files - -( -cd ${wrkdir}/mk-files -for file in bsd.* sys.mk; do - [ ! -f mods/$opsys.$file ] || - run_cmd "$cpprog mods/$opsys.$file $file" -done -if [ -f mods/$opsys.own.mk.in ]; then - own_mk=mods/$opsys.own.mk.in -else - own_mk=mods/bsd.own.mk.in + echo "PKG_SYSCONFBASE= $sysconfdir" >> ${TARGET_MKCONF} fi -run_cmd "$sedprog -e 's|@ROOT_GROUP@|'$root_group'|g;s|@ROOT_USER@|'$root_user'|g;s|@SYSCONFDIR@|'$sysconfdir'|g' $own_mk > bsd.own.mk" -run_cmd "$cpprog bsd.* sys.mk $prefix/share/mk" -) - +echo "PKG_TOOLS_BIN= $prefix/sbin" >> ${TARGET_MKCONF} +echo "PKGMANDIR= $pkgmandir" >> ${TARGET_MKCONF} +echo "" >> ${TARGET_MKCONF} + +cp ${TARGET_MKCONF} $wrkdir/mk.conf +BOOTSTRAP_MKCONF=${wrkdir}/mk.conf + +# sbin is used by pkg_install, share/mk by bootstrap-mk-files +mkdir_p $wrkdir/sbin $wrkdir/share/mk +mkdir_p_early ${wrkdir} + if [ "$need_bsd_install" = "yes" ]; then - echo_msg "Installing BSD compatible install script" - run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/install-sh $prefix/bin/install-sh" BSTRAP_ENV="INSTALL='$prefix/bin/install-sh -c' $BSTRAP_ENV" - echo "TOOLS_PLATFORM.install?= $prefix/bin/install-sh" >> ${MKCONF_EXAMPLE} + echo "TOOLS_PLATFORM.install?= $prefix/bin/install-sh" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.install?= $wrkdir/bin/install-sh" >> ${BOOTSTRAP_MKCONF} fi if [ "$need_fixed_strip" = "yes" ] ; then echo_msg "Installing fixed strip script" - run_cmd "$install_sh -c -o $user -g $group -m 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/strip-sh $prefix/bin/strip" - echo "TOOLS_PLATFORM.strip?= $prefix/bin/strip" >> ${MKCONF_EXAMPLE} + run_cmd "$install_sh -c -o $user -g $group -m 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/strip-sh $wrkdir/bin/strip" + echo "TOOLS_PLATFORM.strip?= $prefix/bin/strip" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.strip?= $wrkdir/bin/strip" >> ${BOOTSTRAP_MKCONF} need_extras=yes fi if [ "$need_mkdir" = "yes" -a -z "$MKDIR" ]; then echo_msg "Installing fixed mkdir script \"mkdir-sh\"" - run_cmd "$install_sh -c -o $user -g $group -m 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/mkdir-sh $prefix/bin/mkdir-sh" - echo "TOOLS_PLATFORM.mkdir?= $prefix/bin/mkdir-sh -p" >> ${MKCONF_EXAMPLE} + run_cmd "$install_sh -c -o $user -g $group -m 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/mkdir-sh $wrkdir/bin/mkdir-sh" + echo "TOOLS_PLATFORM.mkdir?= $prefix/bin/mkdir-sh -p" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.mkdir?= $wrkdir/bin/mkdir-sh -p" >> ${BOOTSTRAP_MKCONF} need_extras=yes fi if [ "$need_xargs" = "yes" ]; then echo_msg "Installing fixed xargs script" run_cmd "$install_sh -c -o $user -g $group -m 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/xargs-sh $prefix/bin/xargs" - echo "TOOLS_PLATFORM.xargs?= $prefix/bin/xargs" >> ${MKCONF_EXAMPLE} + echo "TOOLS_PLATFORM.xargs?= $prefix/bin/xargs" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.xargs?= $wrkdir/bin/xargs" >> ${BOOTSTRAP_MKCONF} need_extras=yes fi -echo_msg "Installing bmake" +echo_msg "Bootstrapping mk-files" +run_cmd "(cd ${pkgsrcdir}/pkgtools/bootstrap-mk-files/files && env CP=${cpprog} \ + OPSYS=${opsys} MK_DST=${wrkdir}/share/mk ROOT_GROUP=${root_group} \ +ROOT_USER=${root_user} SED=${sedprog} SYSCONFDIR=${sysconfdir} \ +$shprog ./bootstrap.sh)" + +echo_msg "Bootstrapping bmake" copy_src $pkgsrcdir/devel/bmake/files bmake -run_cmd "(cd $wrkdir/bmake && env CPPFLAGS='$CPPFLAGS -I../../libnbcompat' LDFLAGS='$LDFLAGS -L../../libnbcompat' LIBS='-lnbcompat' $bmakexenv $shprog ./boot-strap $configure_quiet_flags -q -o $opsys --prefix=$prefix --sysconfdir=$sysconfdir --mksrc none --with-default-sys-path="$prefix/share/mk" $bmakexargs)" -run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/bmake/$opsys/bmake $prefix/bin/bmake" -run_cmd "$install_sh -c -o $user -g $group -m 644 $wrkdir/bmake/bmake.1 $mandir/man1/bmake.1" +run_cmd "(cd $wrkdir/bmake && env CPPFLAGS='$CPPFLAGS -I../../libnbcompat' LDFLAGS='$LDFLAGS -L../../libnbcompat' LIBS='-lnbcompat' $bmakexenv $shprog ./boot-strap $configure_quiet_flags -q -o $opsys --prefix=$wrkdir --sysconfdir=$wrkdir --mksrc none --with-default-sys-path="$wrkdir/share/mk" $bmakexargs)" +run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/bmake/$opsys/bmake $wrkdir/bin/bmake" -bmake="$prefix/bin/bmake $make_quiet_flags" +bmake="$wrkdir/bin/bmake $make_quiet_flags" # bootstrap awk if necessary case "$need_awk" in -yes) echo_msg "Installing awk" +yes) echo_msg "Bootstrapping awk" copy_src $pkgsrcdir/lang/nawk/files awk test -n "$CC" || CC=gcc # default to gcc if no compiler is specified run_cmd "(cd $wrkdir/awk && $bmake -f Makefile CC=\"${CC}\" CFLAGS=\"${CFLAGS}\")" - run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/awk/a.out $prefix/bin/nawk" - run_cmd "$install_sh -c -o $user -g $group -m 644 $wrkdir/awk/nawk.1 $mandir/man1/nawk.1" - echo "TOOLS_PLATFORM.awk?= $prefix/bin/nawk" >> ${MKCONF_EXAMPLE} - BSTRAP_ENV="AWK=\"$prefix/bin/nawk\" $BSTRAP_ENV" + run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/awk/a.out $wrkdir/bin/nawk" + echo "TOOLS_PLATFORM.awk?= $prefix/bin/nawk" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.awk?= $wrkdir/bin/nawk" >> ${BOOTSTRAP_MKCONF} ;; esac # bootstrap sed if necessary case "$need_sed" in -yes) echo_msg "Installing sed" +yes) echo_msg "Bootstrapping sed" copy_src $pkgsrcdir/textproc/nbsed/files sed - run_cmd "(cd $wrkdir/sed; env $BSTRAP_ENV CPPFLAGS='$CPPFLAGS -I../libnbcompat' LDFLAGS='$LDFLAGS -L../libnbcompat' LIBS='-lnbcompat' $shprog ./configure $configure_quiet_flags -C --prefix=$prefix --mandir=$mandir --sysconfdir=$sysconfdir --program-transform-name='s,sed,nbsed,' && $bmake && $bmake install)" - echo "TOOLS_PLATFORM.sed?= $prefix/bin/nbsed" >> ${MKCONF_EXAMPLE} - BSTRAP_ENV="SED=\"$prefix/bin/nbsed\" $BSTRAP_ENV" - ;; -esac - -if [ -z "$fetch_cmd" ]; then - need_ftp=yes -else - need_ftp=no -fi - -case "$need_ftp" in -yes) # bootstrap tnftp - fetch_cmd="$prefix/bin/ftp" - case "$DEBIAN" in - yes) - LIBS="-lncurses" - ;; - esac - echo_msg "Installing tnftp" - copy_src $pkgsrcdir/net/tnftp/files tnftp - run_cmd "(cd $wrkdir/tnftp; env $BSTRAP_ENV CPPFLAGS=\"$CPPFLAGS $tnftpxflags\" $shprog ./configure $configure_quiet_flags --prefix=$prefix --mandir=$mandir --sysconfdir=$sysconfdir && $sedprog -e 's|-ledit|../libedit/libedit.a|' < src/Makefile > src/Makefile.tmp && mv src/Makefile.tmp src/Makefile && $bmake && (cd src && $bmake install))" + run_cmd "(cd $wrkdir/sed; env $BSTRAP_ENV CPPFLAGS='$CPPFLAGS -I../libnbcompat' LDFLAGS='$LDFLAGS -L../libnbcompat' LIBS='-lnbcompat' $shprog ./configure $configure_quiet_flags -C --prefix=$prefix --mandir=$mandir --sysconfdir=$sysconfdir --program-transform-name='s,sed,nbsed,' && $bmake)" + run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/sed/sed $wrkdir/bin/sed" + echo "TOOLS_PLATFORM.sed?= $prefix/bin/nbsed" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.sed?= $wrkdir/bin/sed" >> ${BOOTSTRAP_MKCONF} ;; esac -pkg_install_args="$pkg_install_args --with-ftp=$fetch_cmd" - -FETCH_CMD="$fetch_cmd" -export FETCH_CMD -echo "FETCH_CMD= $fetch_cmd" >> ${MKCONF_EXAMPLE} - -# we often need NetBSD's pax as well, nowadays, to make binary packages case "$need_pax" in -yes) echo_msg "Installing pax" - copy_src $pkgsrcdir/archivers/pax/files pax - run_cmd "(cd $wrkdir/pax; env $BSTRAP_ENV CPPFLAGS='$CPPFLAGS -I../libnbcompat' LDFLAGS='$LDFLAGS -L../libnbcompat' LIBS='-lnbcompat' $shprog ./configure $configure_quiet_flags -C --prefix=$prefix --mandir=$mandir --sysconfdir=$sysconfdir && $bmake && $bmake install)" - echo "TOOLS_PLATFORM.pax?= $prefix/bin/pax" >> ${MKCONF_EXAMPLE} - echo "TOOLS_PLATFORM.tar?= $prefix/bin/tar" >> ${MKCONF_EXAMPLE} - pkg_install_args="$pkg_install_args --with-pax=$prefix/bin/pax --with-tar=$prefix/bin/tar" +yes) + echo "TOOLS_PLATFORM.pax?= $prefix/bin/pax" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.pax?= $prefix/bin/pax" >> ${BOOTSTRAP_MKCONF} + echo "TOOLS_PLATFORM.tar?= $prefix/bin/tar" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.tar?= $prefix/bin/tar" >> ${BOOTSTRAP_MKCONF} ;; *) - pkg_install_args="$pkg_install_args --with-pax=$paxprog --with-tar=$tarprog" + echo "TOOLS_PLATFORM.pax?= $paxprog" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.pax?= $paxprog" >> ${BOOTSTRAP_MKCONF} + echo "TOOLS_PLATFORM.tar?= $tarprog" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.tar?= $tarprog" >> ${BOOTSTRAP_MKCONF} ;; esac + # bootstrap pkg_install -echo_msg "Installing pkgtools" +echo_msg "Bootstrapping pkgtools" copy_src $pkgsrcdir/pkgtools/pkg_install/files pkg_install -run_cmd "(cd $wrkdir/pkg_install; env $BSTRAP_ENV CPPFLAGS='$CPPFLAGS -I../libnbcompat -I../../libnbcompat' LDFLAGS='$LDFLAGS -L../libnbcompat -L../../libnbcompat' LIBS='-lnbcompat' $shprog ./configure $configure_quiet_flags -C --prefix=$prefix --sysconfdir=$sysconfdir --with-pkgdbdir=$pkgdbdir --mandir=$mandir $pkg_install_args && $bmake && $bmake install)" +run_cmd "(cd $wrkdir/pkg_install; env $BSTRAP_ENV \ +CPPFLAGS='$CPPFLAGS -I../libnbcompat -I../../libnbcompat' \ +LDFLAGS='$LDFLAGS -L../libnbcompat -L../../libnbcompat' \ +LIBS='-lnbcompat' $shprog ./configure $configure_quiet_flags -C \ +--prefix=$prefix --sysconfdir=$sysconfdir --with-pkgdbdir=$pkgdbdir \ +--mandir=$mandir $pkg_install_args && $bmake)" +run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/pkg_install/admin/pkg_admin $wrkdir/sbin/pkg_admin" +run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/pkg_install/create/pkg_create $wrkdir/sbin/pkg_create" +run_cmd "$install_sh -c -o $user -g $group -m 755 $wrkdir/pkg_install/info/pkg_info $wrkdir/sbin/pkg_info" +echo "PKG_ADMIN_CMD?= $wrkdir/sbin/pkg_admin" >> ${BOOTSTRAP_MKCONF} +echo "PKG_CREATE_CMD?= $wrkdir/sbin/pkg_create" >> ${BOOTSTRAP_MKCONF} +echo "PKG_INFO_CMD?= $wrkdir/sbin/pkg_info" >> ${BOOTSTRAP_MKCONF} + +echo "FETCH_CMD= $fetch_cmd" >> ${TARGET_MKCONF} + +MAKECONF=$wrkdir/mk.conf +export MAKECONF # On some newer Ubuntu installations, /bin/sh is a symlink to /bin/dash, # whose echo(1) is not POSIX-compliant. dash_echo_test=`echo "\\100"` if [ "$dash_echo_test" = "@" ]; then - echo "TOOLS_PLATFORM.sh?= /bin/bash # instead of /bin/sh" >> ${MKCONF_EXAMPLE} + echo "TOOLS_PLATFORM.sh?= /bin/bash # instead of /bin/sh" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.sh?= /bin/bash # instead of /bin/sh" >> ${BOOTSTRAP_MKCONF} fi # preserve compiler and tool environment variables settings -test -z "$CP" || echo "TOOLS_PLATFORM.cp?= $CP" >> ${MKCONF_EXAMPLE} -test -z "$GREP" || echo "TOOLS_PLATFORM.grep?= $GREP" >> ${MKCONF_EXAMPLE} -test -z "$ID" || echo "TOOLS_PLATFORM.id?= $ID" >> ${MKCONF_EXAMPLE} -test -z "$MKDIR" || echo "TOOLS_PLATFORM.mkdir?= $MKDIR" >> ${MKCONF_EXAMPLE} -test -z "$TEST" || echo "TOOLS_PLATFORM.test?= $TEST" >> ${MKCONF_EXAMPLE} -test -z "$TOUCH" || echo "TOOLS_PLATFORM.touch?= $TOUCH" >> ${MKCONF_EXAMPLE} -test -z "$XARGS" || echo "TOOLS_PLATFORM.xargs?= $XARGS" >> ${MKCONF_EXAMPLE} -test -z "$CFLAGS" || ( - echo "CFLAGS+= $CFLAGS" >> ${MKCONF_EXAMPLE} - echo "DBG= # prevent DBG from adding default optimizer flags" >> ${MKCONF_EXAMPLE} -) -test -z "$CPPFLAGS" || echo "CPPFLAGS+= $CPPFLAGS" >> ${MKCONF_EXAMPLE} -test -z "$LDFLAGS" || echo "LDFLAGS+= $LDFLAGS" >> ${MKCONF_EXAMPLE} +if test -n "$CP"; then + echo "TOOLS_PLATFORM.cp?= $CP" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.cp?= $CP" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$GREP"; then + echo "TOOLS_PLATFORM.grep?= $GREP" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.grep?= $GREP" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$ID"; then + echo "TOOLS_PLATFORM.id?= $ID" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.id?= $ID" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$MKDIR"; then + echo "TOOLS_PLATFORM.mkdir?= $MKDIR" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.mkdir?= $MKDIR" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$TEST"; then + echo "TOOLS_PLATFORM.test?= $TEST" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.test?= $TEST" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$TOUCH"; then + echo "TOOLS_PLATFORM.touch?= $TOUCH" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.touch?= $TOUCH" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$XARGS"; then + echo "TOOLS_PLATFORM.xargs?= $XARGS" >> ${TARGET_MKCONF} + echo "TOOLS_PLATFORM.xargs?= $XARGS" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$CFLAGS"; then + echo "CFLAGS+= $CFLAGS" >> ${TARGET_MKCONF} + echo "CFLAGS+= $CFLAGS" >> ${BOOTSTRAP_MKCONF} + echo "DBG= # prevent DBG from adding default optimizer flags" >> ${TARGET_MKCONF} + echo "DBG= # prevent DBG from adding default optimizer flags" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$CPPFLAGS"; then + echo "CPPFLAGS+= $CPPFLAGS" >> ${TARGET_MKCONF} + echo "CPPFLAGS+= $CPPFLAGS" >> ${BOOTSTRAP_MKCONF} +fi +if test -n "$LDFLAGS"; then + echo "LDFLAGS+= $LDFLAGS" >> ${TARGET_MKCONF} + echo "LDFLAGS+= $LDFLAGS" >> ${BOOTSTRAP_MKCONF} +fi # opsys specific fiddling opsys_finish -echo "" >> ${MKCONF_EXAMPLE} -echo ".endif # end pkgsrc settings" >> ${MKCONF_EXAMPLE} +echo "WRKOBJDIR= ${wrkdir}/wrk" >> ${BOOTSTRAP_MKCONF} + +echo "" >> ${TARGET_MKCONF} +echo "" >> ${BOOTSTRAP_MKCONF} +echo ".endif # end pkgsrc settings" >> ${TARGET_MKCONF} +echo ".endif # end pkgsrc settings" >> ${BOOTSTRAP_MKCONF} # register packages # usage: register_package <packagedirectory> [additional arguments] -register_package() { - run_cmd "(cd $pkgsrcdir/$1 && $bmake -DPKG_PRESERVE MAKECONF=${MKCONF_EXAMPLE} WRKOBJDIR=${wrkobjdir} ${2-} bootstrap-register)" +build_package() { + run_cmd "(cd $pkgsrcdir/$1 && $bmake -DPKG_PRESERVE MAKECONF=${BOOTSTRAP_MKCONF} install)" } -echo_msg "Registering installed packages" -register_package "pkgtools/bootstrap-mk-files" -register_package "devel/bmake" +echo_msg "Installing packages" +build_package "pkgtools/bootstrap-mk-files" +build_package "devel/bmake" case "$need_awk" in -yes) register_package "lang/nawk";; +yes) build_package "lang/nawk";; esac case "$need_sed" in -yes) register_package "textproc/nbsed" "LIBNBCOMPAT_STYLE=inplace";; +yes) build_package "textproc/nbsed" "LIBNBCOMPAT_STYLE=inplace";; esac case "$need_bsd_install" in -yes) register_package "sysutils/install-sh";; +yes) build_package "sysutils/install-sh";; esac case "$need_extras" in -yes) register_package "pkgtools/bootstrap-extras";; +yes) build_package "pkgtools/bootstrap-extras";; esac case "$need_ftp" in -yes) register_package "pkgtools/tnftp";; +yes) build_package "pkgtools/tnftp";; esac case "$need_pax" in -yes) register_package "pkgtools/pax";; +yes) build_package "pkgtools/pax";; esac -register_package "pkgtools/pkg_install" +build_package "pkgtools/pkg_install" etc_mk_conf="$sysconfdir/mk.conf" # Install the example mk.conf so that it is used, but only if it doesn't -# exist yet. -# -# Note: I can remember that there had been some reason why this step -# should be left out, but I can't recall it. So if you remove this code, -# please document the reason here. +# exist yet. This can happen with non-default sysconfdir settings. mkdir_p "$sysconfdir" if [ ! -f "$etc_mk_conf" ]; then - cp "$MKCONF_EXAMPLE" "$etc_mk_conf" - MKCONF_EXAMPLE="$etc_mk_conf" + cp "$TARGET_MKCONF" "$etc_mk_conf" + TARGET_MKCONF="$etc_mk_conf" fi hline="===========================================================================" @@ -917,9 +941,9 @@ echo "" echo "An example mk.conf file with the settings you provided to \"bootstrap\"" echo "has been created for you. It can be found in:" echo "" -echo " ${MKCONF_EXAMPLE}" +echo " ${TARGET_MKCONF}" echo "" -if [ "$MKCONF_EXAMPLE" != "$etc_mk_conf" ]; then +if [ "$TARGET_MKCONF" != "$etc_mk_conf" ]; then echo "Please copy it to $etc_mk_conf to use it." echo "" fi diff --git a/pkgtools/bootstrap-mk-files/files/bootstrap.sh b/pkgtools/bootstrap-mk-files/files/bootstrap.sh new file mode 100755 index 00000000000..1084f656249 --- /dev/null +++ b/pkgtools/bootstrap-mk-files/files/bootstrap.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# +# Install mk-files for bootstrap. +# +# Expected environment: +# - CP +# - OPSYS +# - MK_DST +# - ROOT_GROUP +# - ROOT_USER +# - SED +# - SYSCONFDIR +# + +for file in bsd.README bsd.dep.mk bsd.depall.mk bsd.doc.mk bsd.files.mk \ + bsd.hostprog.mk bsd.inc.mk bsd.info.mk bsd.kernobj.mk bsd.kinc.mk \ + bsd.kmod.mk bsd.lib.mk bsd.links.mk bsd.man.mk bsd.nls.mk \ + bsd.obj.mk bsd.prog.mk bsd.subdir.mk bsd.sys.mk sys.mk; do + if [ -f mods/${OPSYS}.${file} ]; then + ${CP} mods/${OPSYS}.${file} ${MK_DST}/${file} + else + ${CP} ${file} ${MK_DST}/${file} + fi +done + +subst_pattern='s|@ROOT_GROUP@|'${ROOT_GROUP}'|g;s|@ROOT_USER@|'${ROOT_USER}'|g;s|@SYSCONFDIR@|'${SYSCONFDIR}'|g' + +if [ -f mods/${OPSYS}.own.mk.in ]; then + ${SED} -e "${subst_pattern}" mods/${OPSYS}.own.mk.in > ${MK_DST}/bsd.own.mk +else + ${SED} -e "${subst_pattern}" mods/bsd.own.mk.in > ${MK_DST}/bsd.own.mk +fi |