Initial rewrite of install-iso/Makefile to avoid rebuilds!

Rewrite the Makefile to avoid rebuild of squashfs images,
base filesystem, and redownload of packages for make the core-pkgs.

For now (what is tested): type make and all images will be created
in < 4 minutes (under tmpfs on Athlon 64 X2 5200+ 4GB)

419489280 Nov 19 05:32 archlinux-2009.11-core-i686.img
394309632 Nov 19 05:32 archlinux-2009.11-core-i686.iso
189181440 Nov 19 05:31 archlinux-2009.11-netinstall-i686.img
171581440 Nov 19 05:31 archlinux-2009.11-netinstall-i686.iso

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This commit is contained in:
Gerardo Exequiel Pozzi 2009-11-19 04:34:59 -03:00
parent 0da2b87966
commit 23b12f0dde

View File

@ -1,69 +1,90 @@
ver=2009.08 ver=2009.11
kver=2.6.30-ARCH kver=2.6.31-ARCH
WORKDIR=work WORKDIR=work
ARCH?=`uname -m` ARCH?=$(shell uname -m)
BOOTLOADER?=grub-gfx BOOTLOADER?=grub-gfx
PWD:=`pwd` PWD=$(shell pwd)
NETname:=$(PWD)/archlinux-$(ver)-netinstall-$(ARCH) NETname=$(PWD)/archlinux-$(ver)-netinstall-$(ARCH)
COREname:=$(PWD)/archlinux-$(ver)-core-$(ARCH) COREname=$(PWD)/archlinux-$(ver)-core-$(ARCH)
PACKAGES="$(shell cat packages.$(ARCH)) $(BOOTLOADER)" PACKAGES="$(shell cat packages.$(ARCH)) $(BOOTLOADER)"
all: net-iso net-usb core-iso core-usb all: all-net all-core
all-iso: net-iso core-iso all-iso: net-iso core-iso
all-usb: net-usb core-usb all-usb: net-usb core-usb
all-net: net-iso net-usb all-net: net-iso net-usb
all-core: core-iso core-usb all-core: core-iso core-usb
core-usb: core-pkgs overlay $(BOOTLOADER) net-iso: $(NETname).iso
mkarchiso -f -p $(BOOTLOADER) usb $(WORKDIR) $(COREname).img net-usb: $(NETname).img
core-iso: $(COREname).iso
core-usb: $(COREname).img
core-iso: core-pkgs overlay $(BOOTLOADER) # Rules for each type of image
mkarchiso -f -p $(BOOTLOADER) iso $(WORKDIR) $(COREname).iso $(COREname).iso: core-pkgs base-fs $(BOOTLOADER)
mkarchiso -p $(BOOTLOADER) iso $(WORKDIR) $@
$(COREname).img: core-pkgs base-fs $(BOOTLOADER)
mkarchiso -p $(BOOTLOADER) usb $(WORKDIR) $@
$(NETname).iso: base-fs $(BOOTLOADER)
mkarchiso -p $(BOOTLOADER) iso $(WORKDIR) $@
$(NETname).img: base-fs $(BOOTLOADER)
mkarchiso -p $(BOOTLOADER) usb $(WORKDIR) $@
net-usb: overlay $(BOOTLOADER) base-fs: boot-files initcpio overlay iso-mounts
mkarchiso -f -p $(BOOTLOADER) usb $(WORKDIR) $(NETname).img # Rule for make /boot
boot-files: root-image
cp -r $(WORKDIR)/root-image/boot $(WORKDIR)/iso/
cp $(WORKDIR)/root-image/usr/share/licenses/common/GPL2/license.txt $(WORKDIR)/iso/boot/memtest86+/memtest.bin.COPYING
cp -r boot-files/* $(WORKDIR)/iso/boot/
net-iso: overlay $(BOOTLOADER) # Rule to process isomounts file.
mkarchiso -f -p $(BOOTLOADER) iso $(WORKDIR) $(NETname).iso iso-mounts: $(WORKDIR)/isomounts
$(WORKDIR)/isomounts: isomounts root-image
sed "s|@ARCH@|$(ARCH)|g" $< > $@
overlay: base-iso # Rules for make the root-image for base filesystem.
root-image: $(WORKDIR)/root-image/.arch-chroot
$(WORKDIR)/root-image/.arch-chroot:
mkarchiso -p $(PACKAGES) create $(WORKDIR)
# Rules for initcpio images
initcpio: $(WORKDIR)/iso/boot/archiso_ide.img $(WORKDIR)/iso/boot/archiso_pata.img
$(WORKDIR)/iso/boot/archiso_ide.img: initcpio-ide root-image
mkinitcpio -c ./initcpio-ide -b $(WORKDIR)/root-image -k $(kver) -g $@
$(WORKDIR)/iso/boot/archiso_pata.img: initcpio-pata root-image
mkinitcpio -c ./initcpio-pata -b $(WORKDIR)/root-image -k $(kver) -g $@
# overlay filesystem
overlay:
cp -r overlay $(WORKDIR)/ cp -r overlay $(WORKDIR)/
if [ ! -d $(WORKDIR)/overlay/etc/pacman.d ]; then \ if [ ! -d $(WORKDIR)/overlay/etc/pacman.d ]; then \
mkdir -m755 $(WORKDIR)/overlay/etc/pacman.d; \ mkdir -m755 $(WORKDIR)/overlay/etc/pacman.d; \
fi fi
wget -O $(WORKDIR)/overlay/etc/pacman.d/mirrorlist http://www.archlinux.org/mirrorlist/$(ARCH)/all/ wget -O $(WORKDIR)/overlay/etc/pacman.d/mirrorlist http://www.archlinux.org/mirrorlist/$(ARCH)/all/
sed -i "s/#Server/Server/g" "$(WORKDIR)/overlay/etc/pacman.d/mirrorlist" sed -i "s/#Server/Server/g" $(WORKDIR)/overlay/etc/pacman.d/mirrorlist
root-image: # Rule for make the core repo packages
mkarchiso -p $(PACKAGES) create $(WORKDIR) core-pkgs:
./download-repo.sh core $(WORKDIR)/core-pkgs
base-iso: root-image
mv $(WORKDIR)/root-image/boot $(WORKDIR)/iso/
cp -r boot-files/* $(WORKDIR)/iso/boot/
cp $(WORKDIR)/root-image/usr/share/licenses/common/GPL2/license.txt $(WORKDIR)/iso/boot/memtest86+/memtest.bin.COPYING
cp isomounts $(WORKDIR)
sed -i "s|@ARCH@|$(ARCH)|g" "$(WORKDIR)/isomounts"
mkinitcpio -c ./initcpio-ide -b $(WORKDIR)/root-image -k $(kver) -g $(WORKDIR)/iso/boot/archiso_ide.img
mkinitcpio -c ./initcpio-pata -b $(WORKDIR)/root-image -k $(kver) -g $(WORKDIR)/iso/boot/archiso_pata.img
core-pkgs: base-iso
mkdir $(WORKDIR)/core-pkgs/
./download-repo.sh core "$(WORKDIR)/core-pkgs"
# Bootloaders # Bootloaders
grub-gfx: grub-gfx:
cp -r $(WORKDIR)/root-image/usr/lib/grub/i386-pc/* $(WORKDIR)/iso/boot/grub cp -r $(WORKDIR)/root-image/usr/lib/grub/i386-pc/* $(WORKDIR)/iso/boot/grub
grub: grub:
cp -r $(WORKDIR)/root-image/usr/lib/grub/i386-pc/* $(WORKDIR)/iso/boot/grub cp -r $(WORKDIR)/root-image/usr/lib/grub/i386-pc/* $(WORKDIR)/iso/boot/grub
syslinux: syslinux:
cp -r $(WORKDIR)/root-image/usr/lib/syslinux/isolinux.bin $(WORKDIR)/iso/boot/isolinux cp -r $(WORKDIR)/root-image/usr/lib/syslinux/isolinux.bin $(WORKDIR)/iso/boot/isolinux
# Clean-up all work
clean: clean:
rm -rf $(WORKDIR) *.img.part1 $(NETname).img $(NETname).iso $(COREname).img $(COREname).iso rm -rf $(WORKDIR) $(NETname).img $(NETname).iso $(COREname).img $(COREname).iso
.PHONY: all all-iso all-usb all-net all-core
.PHONY: net-iso net-usb core-iso core-usb
.PHONY: base-fs boot-files iso-mounts root-image initcpio overlay core-pkgs
.PHONY: grub-gfx grub syslinux
.PHONY: clean