Subject: bootstrapping bmake, etc. on MacOS X 10.3.9 and 10.2.8
To: None <tech-pkg@NetBSD.org>
From: John D. Baker <jdbaker@mylinuxisp.com>
List: tech-pkg
Date: 12/11/2005 13:23:47
I played around with bmake and the bootstrap process on MacOS X 10.3.9
and 10.2.8 and discovered a few things.  As suggested in:

    http://mail-index.netbsd.org/tech-pkg/2005/11/10/0034.html

I boot-strapped bmake outside of pkgsrc.  This ran just fine, but I'm
pretty sure it wouldn't be appropriate for use in pkgsrc.  So I built it
again but passed in the appropriate arguments for my pkg setup, just
like the bootstrap script (or devel/bmake/Makefile) would do:

    ./bmake/boot-strap --prefix=/usr/pkg --sysconfdir=/usr/pkg/etc \
        --mksrc none --with-def-sys-path=/usr/pkg/share/mk

What I found was that if ${PREFIX}/share/mk exists and is populated,
bmake fails its unit tests in the same manner as described in:

  http://mail-index.netbsd.org/tech-pkg/2005/11/06/0016.html

and

   http://mail-index.netbsd.org/tech-pkg/2005/12/10/0015.html

I still had a populated /usr/pkg/share/mk left over from the failed
bootstrap attempt.  I deleted all the files from it and the
bmake/boot-strap ran to completion.  Or, in the case of my 10.2.8 system,
which has an existing pkgsrc system on it, I temporarily renamed
/usr/pkg/share/mk to move it out of the way and again the bmake/boot-strap
succeeded.

I then manually installed Darwin/bmake into /usr/pkg/bin.  (And restored
/usr/pkg/share/mk on the 10.2.8 system.)


Looking at the bootstrap/bootstrap script, I saw that bmake was not
actually needed to build any subsequent tools/utilities, so I just
commented those lines out:

--- /usr/pkgsrc/bootstrap/bootstrap	Sat Dec 10 23:20:50 2005
+++ /usr/pkgsrc/bootstrap/bootstrap.hack	Sat Dec 10 23:03:35 2005
@@ -657,10 +657,10 @@
 	run_cmd "$shprog $wrkdir/install-sh -c -o $user -g $group -m 755 files/mkdir-sh $prefix/sbin/mkdir-sh"
 fi

-echo_msg "Installing bmake"
-copy_src ../devel/bmake/files bmake
-run_cmd "(cd $wrkdir/bmake && env CPPFLAGS='$CPPFLAGS -I../../libnbcompat' LDFLAGS='$LDFLAGS -L../../libnbcompat' LIBS='-lnbcompat' $shprog ./boot-strap -q -o $opsys --prefix=$prefix --sysconfdir=$sysconfdir --mksrc none --with-default-sys-path="$prefix/share/mk")"
-run_cmd "$shprog $wrkdir/install-sh -c -o $user -g $group -m 755 $wrkdir/bmake/$opsys/bmake $prefix/bin/bmake"
+#echo_msg "Installing bmake"
+#copy_src ../devel/bmake/files bmake
+#run_cmd "(cd $wrkdir/bmake && env CPPFLAGS='$CPPFLAGS -I../../libnbcompat' LDFLAGS='$LDFLAGS -L../../libnbcompat' LIBS='-lnbcompat' $shprog ./boot-strap -q -o $opsys --prefix=$prefix --sysconfdir=$sysconfdir --mksrc none --with-default-sys-path="$prefix/share/mk")"
+#run_cmd "$shprog $wrkdir/install-sh -c -o $user -g $group -m 755 $wrkdir/bmake/$opsys/bmake $prefix/bin/bmake"
 #run_cmd "$shprog $wrkdir/install-sh -c -o $user -g $group -m 644 $wrkdir/bmake/$opsys/bmake.1 $prefix/man/man1/bmake.1"

 # bootstrap tnftp


This modified bootstrap/bootstrap script then ran to completion.  In this
manner, I finally managed to bootstrap pkgsrc on my MacOS X 10.3.9 system
and update the bootstrap kit on my 10.2.8 system.

I've built several packages on the 10.3.9 system since then and bmake
seems to be functioning properly with /usr/pkg/share/mk repopulated
by the bootstrap.hack script.

I hope this helps someone else who is struggling with bootstrapping
pkgsrc on a MacOS X 10.3.9 or earlier system.  And, I hope it helps
point to a solution so this workaround/hack isn't necessary anymore.

-- 
John D. Baker, KN5UKS                    NetBSD     Darwin/MacOS X
jdbaker(at)mylinuxisp(dot)com                 OpenBSD            FreeBSD
BSD -- It just sits there and _works_!
GPG fingerprint:  D703 4A7E 479F 63F8 D3F4  BD99 9572 8F23 E4AD 1645