#
# Makefile for building a Bacula Rescue CDROM or remastering
#   a CDROM or ISO image adding the Bacula files.
#

.PATH:		.

CWD=/etc/bacula/rescue/linux/cdrom

first_rule: all
dummy:

#-------------------------------------------------------------------------

# Make an iso boot image
iso:
	rm -f bootcd.iso
	mkisofs -A "Bacula Rescue Disk" -V "Bacula Rescue Disk" \
	  -J -R -T -o bootcd.iso \
	  -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
	  -no-emul-boot -boot-load-size 4 -boot-info-table cdtree

# not used
remaster:
	rm -f bootcd.iso
	mkisofs -A "Bacula Rescue Disk" -V "Bacula Rescue Disk" \
	  -J -R -T -o bootcd.iso \
	  -b isolinux/isolinux.bin -c isolinux/boot.cat \
	  -no-emul-boot -boot-load-size 4 -boot-info-table cdimage

# not used
cdimage:
	makecdimage --type= --where=


# try booting it with qemu emulator
boot:
	qemu -cdrom bootcd.iso

initrd:
	./makeinitrd

kernel:
	./makekernel 

binaries:
	./makebinaries

static-bacula: dummy
	@(cd bacula; make copy-static-fd)

bacula: dummy
	@(cd bacula; make)

copy-bacula:
	cp -a bacula/ cdimage/



# This will build the Bacula rescue
all:	kernel binaries bacula initrd iso


copy-static-fd: kernel binaries static-bacula initrd iso


# This needs to be customized for your burner.
# Use either dev=ATA:x,y,z  (as reported by cdrecord -scanbus)
#	  or dev=/dev/<device> (e.g. hdc)
burn:
	cdrecord dev=ATA:3,0,0 gracetime=2 fs=4096k driveropts=burnfree -v \
	 -useinfo speed=48 -dao -eject -pad -data "bootcd.iso"

# Blank the CDROM assuming it is +rw
blank:
	cdrecord dev=ATA:3,0,0 gracetime=2 -v blank=fast -useinfo speed=48

scan:
	cdrecord -scanbus

distclean:
clean:
#
# Clean out files that are rebuilt
#
	@rm -f bootcd.iso custom-rd.img.bz2
	@rm -f 1 2 3 4
	@rm -rf mnt
	@rm -rf roottree/bin roottree/proc roottree/boot
	@rm -rf roottree/lib roottree/sbin roottree/dev
	@rm -rf roottree/dev roottree/sys roottree/sysroot
	@rm -rf roottree/sys roottree/usr 
	@rm -rf roottree/initrd roottree/cdrom roottree/mnt
	@rm -rf roottree/tmp roottree/var	   
	@rm -f roottree/etc/services roottree/etc/exports
	@rm -f roottree/etc/gshadow roottree/etc/shadow 
	@rm -f roottree/etc/passwd  roottree/etc/group
	@rm -f roottree/etc/hosts roottree/etc/bashrc
	@rm -f roottree/etc/filesystems roottree/etc/fstab 
	@rm -f roottree/etc/protocols roottree/etc/localtime
	@rm -f roottree/etc/ld.so.cache
	@rm -f roottree/etc/modules.conf roottree/etc/syslog.conf
	@rm -rf roottree/etc/pam.d roottree/etc/ssh
	@rm -rf roottree/etc/security roottree/etc/init.d
	@rm -rf roottree/etc/rc.d
	@rm -rf roottree/etc/udev roottree/etc/modprobe.conf
	@rm -rf roottree/etc/dev.d roottre/etc/hotplug roottree/etc/modprobe.d
	@rm -rf roottree/etc/modprobe.conf.local roottree/etc/hotplug
	@rm -rf roottree/etc/sysconfig roottree/etc/syslog-ng
	@rm -rf roottree/bacula-*
	@rm -f cdtree/boot/isolinux/initrd.img
	@rm -f cdtree/boot/isolinux/isolinux.cfg
	@rm -f cdtree/boot/isolinux/vmlinuz
	@rm -f cdtree/boot/isolinux/map
	@(cd bacula; make distclean)
#	@(cd ${MKCDREC}; make clean)
#	@(cd ${MKCDREC}/busybox; make distclean)


#
# This was the integration with mkcdrec, but I could never
#  get it to work reliably.
#
MKCDREC=/builddir/build/BUILD/bacula-5.0.3/bacula-rescue-5.0.2/mkcdrec
mkcdrec: kernel binaries bacula pre-mkcdrec main-mkcdrec post-mkcdrec
pre-mkcdrec:		    
	@echo
	./mkcdrec_rd	
	@echo "Patching mkcdrec Config.sh for Bacula"
	@mkdir -p tmp
	@rm -f tmp/1 tmp/2 tmp/1
	@cp ${MKCDREC}/Config.sh tmp/2
	@echo "s%^BACULA_DIR.*$$%BACULA_DIR=${CWD}/bacula%g" >tmp/1
	@sed -f tmp/1 tmp/2 >tmp/3
	@echo "s%^BACULA_RESTORE.*$$%BACULA_RESTORE=\"y\"%g" >tmp/1
	@sed -f tmp/1 tmp/3 >tmp/4
	@echo "s%^DVD_Drive.*$$%DVD_Drive=0%g" >tmp/1
	@sed -f tmp/1 tmp/4 >tmp/5
	@echo "s%^USECOLOR.*$$%USECOLOR=n%g" >tmp/1
	@sed -f tmp/1 tmp/5 >${MKCDREC}/Config.sh
	@rm -rf tmp
	@cp -f /bacula-fd bacula/bin
	@cp -f /bacula-fd.conf bacula/bin

main-mkcdrec: dummy
	@echo " "
	@echo "Doing make in mkcdrec directory. This may take some time and"
	@echo "  produce a good amount of output"
	@echo " "
	@echo		  
	(cd ${MKCDREC}; make rescue)

post-mkcdrec:
	@echo "Cleaning up"
	cp /tmp/CDrec.iso bootcd.iso
	chmod 644 bootcd.iso
	rm -f /tmp/CDrec.iso
	rm -f custom-rd.img.bz2
