# Makefile for Progeny autoinstaller - arch-specific items

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

DESTDIR ?= /tmp/autoinstall

BUSYBOXDIR=busybox-0.60.0
PYTHONDIR=Python-1.5.2
PARTEDDIR=parted-1.4.24

SOURCETAR=/usr/src/autoinstall-common-source_1.0.tar.gz

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

all: $(SOURCETAR) build-stamp initrd-bin.tar.gz image.gz isoimage.gz

sourcedirs: $(SOURCETAR)
	tar zxvf $(SOURCETAR)

install: binaries image.gz initrd-bin.tar.gz isoimage.gz
	-mkdir -p $(DESTDIR)/usr/share/autoinstall/i386
	cp initrd-bin.tar.gz isoimage.gz image.gz make-autoinst-initrd \
		$(DESTDIR)/usr/share/autoinstall/i386
	-mkdir -p $(DESTDIR)/usr/share/autoinstall/i386/boot
	cp boot/*.py $(DESTDIR)/usr/share/autoinstall/i386/boot
	-mkdir -p $(DESTDIR)/usr/share/autoinstall/i386
	cp update-autoinst-disk $(DESTDIR)/usr/share/autoinstall/i386/
	cp make-autoinst-disk $(DESTDIR)/usr/share/autoinstall/i386/
	cp syslinux*.cfg $(DESTDIR)/usr/share/autoinstall/i386/
	cp logo.txt $(DESTDIR)/usr/share/autoinstall/

build-stamp:
	mkdir build-stamp

isoimage.gz:
	dd if=/dev/zero of=isoimage count=2880 bs=1024
	/sbin/mkdosfs isoimage
	syslinux isoimage
	gzip -9 isoimage

image.gz:
	dd if=/dev/zero of=image count=1440 bs=1024
	/sbin/mkdosfs image 
	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 -fs bin binaries/sbin
	ln -fs . binaries/usr

$(BUSYBOXDIR)/busybox: 
	cd $(BUSYBOXDIR) && $(MAKE)

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

parted: 
	-cd $(PARTEDDIR) && $(MAKE) clean
	cd $(PARTEDDIR); ./configure --disable-Werror --prefix=/usr --without-readline ; $(MAKE) 

$(PYTHONDIR)/python: parted python-parted/pyparted.c
	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 \
		../../parted-1.4.24/libparted/.libs/libparted.a /usr/lib/libuuid.a \
		-ldl -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/*.lst 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 sourcedirs $(BINARIES)
	touch build-stamp/initrd-bin

build-stamp/initrd-libs: build-stamp/initrd-bin
	-rm binaries/lib/*
	mklibs -d binaries/lib binaries/bin/* 
	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/services etc/host.conf etc/hosts etc/nsswitch.conf binaries/etc
	cp /etc/protocols binaries/etc
	touch build-stamp/initrd-etc

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