--- toast-linux	2004/04/04 23:20:58	1.1
+++ toast-linux	2004/04/05 19:48:43	1.2
@@ -9,17 +9,18 @@
 
 my($rcsid) = q$Id$;
 $rcsid =~ /^Id: configure,v (\S+) (\S+ \S+) zaphod Exp (\S+ )?$/ || die;
-my($version, $rcsdate) = ("toast linux", $1, $2);
+my($version, $rcsdate) = ($1, $2);
 $version .= "+" if $3; # if this version may contain changes not in RCS
 my($gendate) = scalar localtime;
 my($genby) = "generated by toast linux configure version $version on $gendate";
 my($configure) = $0 =~ m!/! ? $0 : "./$0";
 
 my($target) = @ARGV;
-if(length(@ARGV) != 1 || $target =~ /^-/)
+if(scalar(@ARGV) != 1 || $target =~ /^-/)
 {
   warn("$0: ignoring command line arguments: @ARGV\n") if @ARGV;
   $target = "Makefile";
+  print("generating $target\n");
 }
 die unless defined($target);
 
@@ -61,7 +62,7 @@
     my($path);
     for(split('/', $dir))
     {
-      $path = defined($path) ? $_ : "$path/$_";
+      $path = defined($path) ? "$path/$_" : $_;
       -d($path) || mkdir($path) || die("mkdir $path: $!");
     }
   }
@@ -69,7 +70,7 @@
   my($text) = $text{$_};
 
   local(*OUTFILE);
-  sysopen(OUTFILE, $_, O_WRONLY, $text =~ m@^#!/@ ? 0777 : 0666)
+  sysopen(OUTFILE, $_, O_CREAT | O_TRUNC | O_WRONLY, $text =~ m@^#!/@ ? 0777 : 0666)
       || die("open $_ for write: $!");
   binmode(OUTFILE);
   print OUTFILE $text or die("write $_: $!");
@@ -146,8 +147,9 @@
 SYSLINUX_URL = http://kernel.org/pub/linux/utils/boot/syslinux/$(SYSLINUX_ARCHIVE)
 
 TOOLCHAIN_MAKE_DIR = $(TOOLCHAIN_DIR)/gcc-3.3.x
-TOOLCHAIN_LIB_DIR = $(TOOLCHAIN_MAKE_DIR)/toolchain_i386/lib
-TOOLCHAIN_BIN_DIR = $(CURDIR)/$(TOOLCHAIN_MAKE_DIR)/toolchain_i386/usr/bin
+TOOLCHAIN_ROOT_DIR = $(TOOLCHAIN_MAKE_DIR)/toolchain_i386/i386-linux-uclibc
+TOOLCHAIN_LIB_DIR = $(TOOLCHAIN_ROOT_DIR)/lib
+TOOLCHAIN_BIN_DIR = $(CURDIR)/$(TOOLCHAIN_ROOT_DIR)/bin
 
 PKG_DIRS = $(foreach PKG, $(PKGS), $($(PKG)_DIR))
 LINUX_PATCH_FILES = $(foreach PATCH, $(LINUX_PATCHES), $($(PATCH)_ARCHIVE))
@@ -199,7 +201,7 @@
 cleaner: clean
   rm -f *.tar.gz *.tar.bz2 *.diff.gz
 
-$(LINUX_DIR)/.config: $(LINUX_ARCHIVE) linux-config
+$(LINUX_DIR)/.config: $(LINUX_ARCHIVE) linux-config smartcat
   rm -fr $(LINUX_DIR)
   ./smartcat $< | tar x
   cat linux-config > $@
@@ -216,14 +218,14 @@
 modsize: modules
   cd modules/lib/modules/*/kernel/drivers; ls -lS `find -name '*.ko'`
 
-$(TOOLCHAIN_DIR)/ok: $(TOOLCHAIN_ARCHIVE)
+$(TOOLCHAIN_DIR)/ok: $(TOOLCHAIN_ARCHIVE) smartcat
   rm -fr $(TOOLCHAIN_DIR)
   ./smartcat $< | tar x
   ln -s $(CURDIR) $(TOOLCHAIN_MAKE_DIR)/sources/dl
   yes '' | $(MAKE) -C $(TOOLCHAIN_MAKE_DIR)
   touch $@
 
-$(BUSYBOX_DIR)/.config: $(BUSYBOX_ARCHIVE) busybox-config $(TOOLCHAIN_DIR)/ok
+$(BUSYBOX_DIR)/.config: $(BUSYBOX_ARCHIVE) busybox-config $(TOOLCHAIN_DIR)/ok smartcat
   rm -fr $(BUSYBOX_DIR)
   ./smartcat $< | tar x
   perl -pe 's!^(CROSS_COMPILER_PREFIX=").*(")!$$1$(TOOLCHAIN_BIN_DIR)/$$2!' busybox-config > $@
@@ -233,20 +235,20 @@
 $(BUSYBOX): $(BUSYBOX_DIR)/.config
   $(MAKE) -C $(BUSYBOX_DIR) all
 
-$(TUNE2FS): $(E2FSPROGS_ARCHIVE) $(TOOLCHAIN_DIR)/ok
+$(TUNE2FS): $(E2FSPROGS_ARCHIVE) $(TOOLCHAIN_DIR)/ok smartcat
   rm -fr $(E2FSPROGS_DIR)
   ./smartcat $< | tar x
   (cd $(E2FSPROGS_DIR) && ./configure --with-cc=$(TOOLCHAIN_BIN_DIR)/gcc --with-linker=$(TOOLCHAIN_BIN_DIR)/ld --with-ccopts=-Os --disable-{nls,evms,swapfs})
   $(MAKE) -C $(E2FSPROGS_DIR)
   strip $@
 
-$(NTFSRESIZE): $(NTFSPROGS_ARCHIVE) $(TOOLCHAIN_DIR)/ok
+$(NTFSRESIZE): $(NTFSPROGS_ARCHIVE) $(TOOLCHAIN_DIR)/ok smartcat
   rm -fr $(NTFSPROGS_DIR)
   ./smartcat $< | tar x
   (cd $(NTFSPROGS_DIR) && CC=$(TOOLCHAIN_BIN_DIR)/gcc CFLAGS="-static -Os" ./configure --disable-shared && $(MAKE))
   strip $@
 
-$(PARTED): $(PARTED_ARCHIVE) $(TOOLCHAIN_DIR)/ok
+$(PARTED): $(PARTED_ARCHIVE) $(TOOLCHAIN_DIR)/ok smartcat
   rm -fr $(PARTED_DIR)
   ./smartcat $< | tar x
   perl -p -i -e 's!(\#include <libintl.h>)!/* $1 */!' $(PARTED_DIR)/libparted/filesys.c
@@ -254,13 +256,13 @@
   $(MAKE) -C $(PARTED_DIR)
   strip $@
 
-$(DEVMAP): $(DEVMAP_ARCHIVE) $(TOOLCHAIN_DIR)/ok
+$(DEVMAP): $(DEVMAP_ARCHIVE) $(TOOLCHAIN_DIR)/ok smartcat
   rm -fr $(DEVMAP_DIR)
   ./smartcat $< | tar x
   set -e; cd $(DEVMAP_DIR); ./configure; $(MAKE) CC="$(TOOLCHAIN_BIN_DIR)/gcc -Os"
   strip $@
 
-$(LVM2): $(LVM2_ARCHIVE) $(DEVMAP) $(TOOLCHAIN_DIR)/ok
+$(LVM2): $(LVM2_ARCHIVE) $(DEVMAP) $(TOOLCHAIN_DIR)/ok smartcat
   rm -fr $(LVM2_DIR)
   ./smartcat $< | tar x
   perl -p -i -e 's/-O2/-Os/g' $(LVM2_DIR)/make.tmpl.in
@@ -271,17 +273,21 @@
 symbols: $(BUSYBOX) $(E2FSCK) $(TUNE2FS) $(NTFSRESIZE) $(PARTED) $(DEVMAP) $(LVM2)
   $(TOOLCHAIN_BIN_DIR)/nm -Dp $^ | perl -lne '/.{8} [BUV] (.+)/ && print "-u $$1"' | sort -u > $@ 
 
-Makefile dev smartcat mkhd linux-config busybox-config bochs-config: !CONFIGURE!
-  $< $@
+Makefile dev mkhd bochs-config: !CONFIGURE!
+  !CONFIGURE! $@
 
+# these depend on configure, but we pretend they don't to speed things up:
+smartcat linux-config busybox-config:
+  !CONFIGURE! $@
+
 skel: !CONFIGURE!
   rm -fr $@
-  $< $@
+  !CONFIGURE! $@
   mkdir -p $@/root/{proc,sys,tmp,mnt/{floppy,initrd,toast-root},var/{empty,run,log,lock}}
   for i in bin lib sbin share; do ln -sf usr/$$i $@/root/$$i; done
-  ln ../usr/share/zoneinfo/"`cat $@/root/etc/TZ`" $@/root/etc/localtime
+  ln -sf ../usr/share/zoneinfo/"`cat $@/root/etc/TZ`" $@/root/etc/localtime
 
-root: $(LINUX) symbols
+root: $(LINUX) symbols skel
   rm -fr $@
   mkdir -p $(SCRIPTS_ROOTDIR)
   set -e; (cd skel/root && tar c .) | (cd $@ && tar x)
@@ -292,7 +298,7 @@
   $(MAKE) -C $(BUSYBOX_DIR) PREFIX=$(CURDIR)/$(BUSYBOX_ROOTDIR) install
 #  install -D $(E2FSCK) $(OTHER_ROOTDIR)/sbin/e2fsck
   install -D $(TUNE2FS) $(OTHER_ROOTDIR)/sbin/tune2fs
-  install -D $(NTFSRESIZE) $(OTHER_ROOTDIR)/sbin/ntfsresize
+#  install -D $(NTFSRESIZE) $(OTHER_ROOTDIR)/sbin/ntfsresize
   install -D $(PARTED) $(OTHER_ROOTDIR)/sbin/parted
   install -D $(DEVMAP) $(OTHER_ROOTDIR)/lib/libdevmapper.so.1.00
   install -D $(LVM2) $(OTHER_ROOTDIR)/sbin/lvm
@@ -300,19 +306,19 @@
   for i in $(BUSYBOX_ROOTDIR) $(SCRIPTS_ROOTDIR) $(OTHER_ROOTDIR); do echo "built by toast linux $(VERSION) on `date`" > $$i/../build.log; done
   toast --noprotect --relative --storedir=$(CURDIR)/root/toast --armdir=$(CURDIR)/root/usr --arm
 
-$(GENEXT2FS): $(GENEXT2FS_ARCHIVE) $(GENEXT2FS_PATCH)
+$(GENEXT2FS): $(GENEXT2FS_ARCHIVE) $(GENEXT2FS_PATCH) smartcat
   rm -fr $(GENEXT2FS_DIR)
   ./smartcat $< | tar x
   ./smartcat $(GENEXT2FS_PATCH) | patch -d $(GENEXT2FS_DIR) -p1
   $(MAKE) -C $(GENEXT2FS_DIR)
 
-$(MFORMAT) $(MCOPY) $(MDIR): $(MTOOLS_ARCHIVE)
+$(MFORMAT) $(MCOPY) $(MDIR): $(MTOOLS_ARCHIVE) smartcat
   rm -fr $(MTOOLS_DIR)
   ./smartcat $< | tar x
   cd $(MTOOLS_DIR) && ./configure
   $(MAKE) -C $(MTOOLS_DIR)
 
-$(SYSLINUX): $(SYSLINUX_ARCHIVE)
+$(SYSLINUX): $(SYSLINUX_ARCHIVE) smartcat
   rm -fr $(SYSLINUX_DIR)
   ./smartcat $< | tar x
   touch $@
@@ -321,7 +327,7 @@
   rm -f $@
   $(GENEXT2FS) -d root -f dev -b $(ROOTFS_BLOCKS) -i $(ROOTFS_INODES) $@
 
-floppy: $(LINUX) rootfs.gz
+floppy: $(LINUX) rootfs.gz skel
   rm -fr $@
   mkdir $@
   cp $(LINUX) $@/linux
@@ -362,15 +368,6 @@
 %.gz: %
   gzip -9 -c $< > $@
 
-dist: $(DIST_TARBALL)
-
-$(DIST_TARBALL): Makefile linux-config busybox-config dev smartcat skel bochs-config mkhd TODO
-  rm -fr $@
-  tar czf $@ $^
-
-backup: $(DIST_TARBALL)
-  scp $< ofb.net:.
-
 --- FILE dev ---
 drwx                    /dev
 crw-    4,      0       /dev/tty0
@@ -392,7 +389,7 @@
   esac
 done
 
--- FILE mkhd ---
+--- FILE mkhd ---
 #!/usr/bin/perl
 
 use warnings;
@@ -514,34 +511,34 @@
   DISKS=hda,hdb,sda     install on specified disks only
   DESTROY=yes           overwrite existing disk contents
 
---- FILE skel/etc/passwd ---
+--- FILE skel/root/etc/passwd ---
 root:x:0:0:root:/root:/bin/sh
 toast:x:42:42:toast:/toast:/bin/sh
 
---- FILE skel/etc/group ---
+--- FILE skel/root/etc/group ---
 root:x:0:root
 toast:x:42:toast
 
---- FILE skel/etc/hosts ---
+--- FILE skel/root/etc/hosts ---
 127.0.0.1 localhost
 
---- FILE skel/etc/host.conf ---
+--- FILE skel/root/etc/host.conf ---
 order hosts,bind
 multi on
 
---- FILE skel/etc/nsswitch.conf ---
+--- FILE skel/root/etc/nsswitch.conf ---
 hosts: files dns
 
---- FILE skel/etc/resolv.conf ---
+--- FILE skel/root/etc/resolv.conf ---
 nameserver 205.217.153.34
 
---- FILE skel/etc/TZ ---
+--- FILE skel/root/etc/TZ ---
 PST8PDT
 
---- FILE skel/etc/syslog.conf ---
+--- FILE skel/root/etc/syslog.conf ---
 *.* /var/log/syslog
 
---- FILE skel/etc/fstab ---
+--- FILE skel/root/etc/fstab ---
 /dev/ram0       /               ext2    rw                              0 0
 proc            /proc           proc    rw                              0 0
 sys             /sys            sysfs   rw                              0 0
@@ -549,20 +546,20 @@
 /dev/fd0        /mnt/floppy     vfat    rw,noauto,sync                  0 0
 /dev/toast/root /mnt/toast-root ext2    rw,noauto                       0 0
 
---- FILE skel/etc/fstab.hd ---
+--- FILE skel/root/etc/fstab.hd ---
 /dev/toast/root /               ext3    rw                              0 0
 proc            /proc           proc    rw                              0 0
 sys             /sys            sysfs   rw                              0 0
 devpts          /dev/pts        devpts  rw                              0 0
 /dev/fd0        /mnt/floppy     vfat    rw,noauto,sync                  0 0
 
---- FILE skel/etc/mtab ---
+--- FILE skel/root/etc/mtab ---
 /dev/ram0 / ext2 rw 0 0
 
---- FILE skel/etc/mtab.hd ---
+--- FILE skel/root/etc/mtab.hd ---
 /dev/ram0 / ext2 rw 0 0
 
---- FILE skel/etc/lilo.conf ---
+--- FILE skel/root/etc/lilo.conf ---
 boot = /dev/hda
 root = /dev/ram0
 initrd = /usr/boot/initrd.gz
@@ -596,10 +593,10 @@
 label = toast.oldkernel.oldinitrd
 optional
 
---- FILE skel/etc/profile ---
+--- FILE skel/root/etc/profile ---
 PS1='\u@\h:\w\$ '
 
---- FILE skel/etc/inittab ---
+--- FILE skel/root/etc/inittab ---
 ::sysinit:/etc/init.d/rcS
 ::restart:/etc/init.d/pivot
 ::respawn:-/bin/sh
@@ -607,7 +604,7 @@
 ::shutdown:/sbin/swapoff -a
 ::shutdown:/bin/umount -a -r
 
---- FILE skel/etc/inittab.hd ---
+--- FILE skel/root/etc/inittab.hd ---
 ::sysinit:/etc/init.d/postpivot
 ::restart:/sbin/init
 ::respawn:-/bin/sh
@@ -615,7 +612,7 @@
 ::shutdown:/sbin/swapoff -a
 ::shutdown:/bin/umount -a -r
 
---- FILE skel/etc/init.d/rcS ---
+--- FILE skel/root/etc/init.d/rcS ---
 #!/bin/sh
 devices
 mount -a
@@ -623,7 +620,7 @@
 hostname localhost
 autoinstall
 
---- FILE skel/etc/init.d/pivot ---
+--- FILE skel/root/etc/init.d/pivot ---
 #!/bin/sh
 PATH=/sbin:/bin
 export PATH
@@ -635,7 +632,7 @@
 exec chroot . /sbin/init
 exec /bin/sh
 
---- FILE skel/etc/init.d/postpivot ---
+--- FILE skel/root/etc/init.d/postpivot ---
 #!/bin/sh -e
 mount /proc
 grep -v '^rootfs ' /proc/mounts > /etc/mtab