# Makefile for Progeny autoinstaller - arch-specific items

ARCH := $(shell dpkg --print-architecture)

BUSYBOXDIR=busybox-0.60.0
BUSYBOXTGZ=/usr/src/busybox-0.60.0.tar.gz

PYTHONDIR=Python-1.5.2

BINARIES=binaries/bin/busybox binaries/bin/python binaries/bin/modprobe \
	binaries/bin/discover binaries/bin/pump binaries/bin/setdebconf

SU_CMD=sudo

all: build-stamp initrd-bin.tar.gz image.gz

install: all
	-mkdir -p $(DESTDIR)/usr/lib/autoinstall/$(ARCH)
	cp initrd-bin.tar.gz syslinux.cfg image.gz \
		make-autoinst-disk update-autoinst-disk make-autoinst-initrd \
		$(DESTDIR)/usr/lib/autoinstall/$(ARCH)
	-mkdir -p $(DESTDIR)/usr/lib/autoinstall/$(ARCH)/boot
	cp boot/*.py $(DESTDIR)/usr/lib/autoinstall/$(ARCH)/boot

build-stamp:
	mkdir build-stamp

image.gz:
	dd if=/dev/zero of=image count=1 bs=1763328
	echo 'drive a: file="image" cylinders=82 heads=2 sectors=21 mformat_only' > mtoolsrc
	MTOOLSRC=mtoolsrc mformat a:
	rm mtoolsrc
#	/sbin/mkdosfs -C image 1743
	$(SU_CMD) syslinux image
	gzip -9 image

initrd-bin.tar.gz: build-stamp/initrd-bin build-stamp/initrd-libs build-stamp/initrd-etc
	(cd binaries; tar cf ../initrd-bin.tar .)
	gzip -9 initrd-bin.tar

binaries:
	mkdir binaries
	mkdir binaries/bin
	mkdir binaries/etc
	mkdir binaries/lib
	mkdir binaries/lib/discover
	mkdir binaries/lib/python1.5
	mkdir binaries/lib/python1.5/plat-linux2
	mkdir binaries/lib/python1.5/site-packages
	mkdir binaries/share
	mkdir binaries/share/discover
	ln -s bin binaries/sbin
	ln -s . binaries/usr

$(BUSYBOXDIR): $(BUSYBOXTGZ)
	zcat $(BUSYBOXTGZ) | tar xf -

$(BUSYBOXDIR)/busybox: $(BUSYBOXDIR) Config.h
	cp Config.h $(BUSYBOXDIR)
	cd $(BUSYBOXDIR) && $(MAKE)

binaries/bin/busybox: $(BUSYBOXDIR)/busybox binaries
	cp $(BUSYBOXDIR)/busybox binaries/bin/busybox
	cat $(BUSYBOXDIR)/busybox.links | ./link-busybox

$(PYTHONDIR): python-source-1.5.2.tar
	tar xf python-source-1.5.2.tar

$(PYTHONDIR)/python: $(PYTHONDIR) Setup.static python-parted/pyparted.c
	cp Setup.static $(PYTHONDIR)/Modules/Setup
	cp python-parted/pyparted.c $(PYTHONDIR)/Modules
	-cd $(PYTHONDIR) && $(MAKE) clean
	cd $(PYTHONDIR); ./configure --prefix=/usr; $(MAKE)

binaries/bin/python: $(PYTHONDIR)/python python-parted/parted.py binaries
	cd $(PYTHONDIR)/Modules; gcc python.o \
		../libpython1.5.a /usr/lib/libcrypt.a /usr/lib/libz.a \
		/usr/lib/libdl.a /usr/lib/libparted.a \
		/usr/lib/libuuid.a -lm -o python-static
	strip $(PYTHONDIR)/Modules/python-static
	cp $(PYTHONDIR)/Modules/python-static binaries/bin/python
	cp $(PYTHONDIR)/Lib/UserDict.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/copy.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/exceptions.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/os.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/posixfile.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/posixpath.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/site.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/stat.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/string.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/tempfile.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/types.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/traceback.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/linecache.py binaries/lib/python1.5
	cp $(PYTHONDIR)/Lib/popen2.py binaries/lib/python1.5
	cp python-parted/parted.py binaries/lib/python1.5

binaries/bin/discover: /sbin/discover binaries
	cp /sbin/discover binaries/bin
	cp /usr/share/discover/* binaries/share/discover

# With the new busybox, this shouldn't be necessary anymore.  If it is,
# uncomment it and add "binaries/bin/ash" to BINARIES above.

#binaries/bin/ash: /bin/ash binaries
#	cp /bin/ash binaries/bin
#	ln -s ash binaries/bin/sh

binaries/bin/pump: /sbin/pump binaries
	cp /sbin/pump binaries/bin

binaries/bin/modprobe: /sbin/modprobe binaries
	cp /sbin/modprobe binaries/bin

binaries/bin/setdebconf: setdebconf-v0.9 binaries
	if [ -x /usr/sbin/setdebconf ]; then \
		cp /usr/sbin/setdebconf binaries/bin ; \
	else \
		cp setdebconf-v0.9 binaries/bin/setdebconf ; \
	fi

build-stamp/initrd-bin: build-stamp $(BINARIES)
	touch build-stamp/initrd-bin

build-stamp/initrd-libs: build-stamp/initrd-bin
	-rm binaries/lib/*
	./mklibs.sh -d binaries/lib binaries/bin/* binaries/lib/discover/discover
	cp --no-dereference /lib/libnss_dns* binaries/lib
	cp --no-dereference /lib/libnss_files* binaries/lib
	touch build-stamp/initrd-libs

build-stamp/initrd-etc: build-stamp etc/host.conf etc/hosts etc/nsswitch.conf /etc/protocols binaries
	cp etc/host.conf etc/hosts etc/nsswitch.conf binaries/etc
	cp /etc/protocols binaries/etc
	touch build-stamp/initrd-etc

clean:
	-rm -rf $(BUSYBOXDIR)
	-rm -rf $(PYTHONDIR)
	-rm -rf binaries
	-rm -rf build-stamp
	-rm -f initrd-bin.tar.gz
