diff --git a/Makefile b/Makefile index 92a00d3..1abd5b2 100644 --- a/Makefile +++ b/Makefile @@ -50,18 +50,23 @@ USEPKG = --usepkg --binpkg-respect-use=y RSYNC_MIRROR = rsync://rsync.gtlib.gatech.edu/gentoo/ KERNEL_PKG = gentoo-sources WORLD = appliances/$(APPLIANCE)/world +WORLD_DEFAULT = appliances/default/world EXTRA_WORLD = # /etc/portage targets base_etc_portage := $(wildcard configs/portage/*) etc_portage := $(patsubst configs/portage/%,$(CHROOT)/etc/portage/%,$(base_etc_portage)) +default_package_files := $(wildcard appliances/default/package.*) appliance_package_files := $(wildcard appliances/$(APPLIANCE)/package.*) -portage_package_files = $(patsubst appliances/$(APPLIANCE)/package.%,$(CHROOT)/etc/portage/package.%/01$(APPLIANCE),$(appliance_package_files)) +portage_default_package_files = $(patsubst appliances/default/package.%,$(CHROOT)/etc/portage/package.%/01default,$(default_package_files)) +portage_package_files = $(patsubst appliances/$(APPLIANCE)/package.%,$(CHROOT)/etc/portage/package.%/02$(APPLIANCE),$(appliance_package_files)) +default_make_conf = $(wildcard appliances/default/make.conf) appliance_make_conf = $(wildcard appliances/$(APPLIANCE)/make.conf) portage_make_conf_local = $(CHROOT)/etc/portage/make.conf.local appliance_profile := default/linux/amd64/17.1/systemd # Allow appliance to override variables +-include appliances/default/default.cfg -include appliances/$(APPLIANCE)/$(APPLIANCE).cfg # Allow user to override variables @@ -131,7 +136,7 @@ else $(M4) -DDRIVE=vda $< > $@ endif -$(PREPROOT): $(STAGE3) $(PORTAGE_DIR) $(foreach repo,$(REPO_NAMES),$(REPO_DIR)/$(repo)) $(CHROOT)/etc/fstab $(etc_portage) $(portage_package_files) +$(PREPROOT): $(STAGE3) $(PORTAGE_DIR) $(foreach repo,$(REPO_NAMES),$(REPO_DIR)/$(repo)) $(CHROOT)/etc/fstab $(etc_portage) $(portage_default_package_files) $(portage_package_files) mkdir -p $(VA_PKGDIR) $(DISTDIR) @print Creating swap file: `basename $(SWAP_FILE)` dd if=/dev/zero of=$(SWAP_FILE) bs=1M count=$(SWAP_SIZE) @@ -178,8 +183,11 @@ $(CHROOT)/etc/portage/repos.conf: $(foreach repo,$(REPO_NAMES),$(REPO_DIR)/$(rep ) touch $@ +$(CHROOT)/etc/portage/package.%/01default: appliances/default/package.% $(STAGE3) + mkdir -p `dirname $@` + cp $< $@ -$(CHROOT)/etc/portage/package.%/01$(APPLIANCE): appliances/$(APPLIANCE)/package.% $(STAGE3) +$(CHROOT)/etc/portage/package.%/02$(APPLIANCE): appliances/$(APPLIANCE)/package.% $(STAGE3) mkdir -p `dirname $@` cp $< $@ @@ -187,8 +195,8 @@ $(CHROOT)/etc/portage/package.%/01$(APPLIANCE): appliances/$(APPLIANCE)/package. $(CHROOT)/etc/portage/make.conf: configs/make.conf.$(VA_ARCH) COPY configs/make.conf.$(VA_ARCH) /etc/portage/make.conf -$(portage_make_conf_local): $(appliance_make_conf) - COPY $< /etc/portage/make.conf.local || touch $@ +$(portage_make_conf_local): $(default_make_conf) $(appliance_make_conf) + cat $< >> $(CHROOT)/etc/portage/make.conf.local || touch $@ $(CHROOT)/var/tmp/profile: $(STAGE3) RUN eselect profile set $(appliance_profile) @@ -197,7 +205,7 @@ $(CHROOT)/var/tmp/profile: $(STAGE3) $(CHROOT)/etc/locale.gen: configs/locale.gen COPY configs/locale.gen /etc/locale.gen -$(COMPILE_OPTIONS): $(STAGE3) $(PORTAGE_DIR) $(CHROOT)/etc/portage/make.conf configs/locale.gen $(portage_package_files) $(portage_make_conf_local) $(CHROOT)/var/tmp/profile $(CHROOT)/etc/locale.gen $(CHROOT)/etc/portage/repos.conf +$(COMPILE_OPTIONS): $(STAGE3) $(PORTAGE_DIR) $(CHROOT)/etc/portage/make.conf configs/locale.gen $(portage_default_package_files) $(portage_package_files) $(portage_make_conf_local) $(CHROOT)/var/tmp/profile $(CHROOT)/etc/locale.gen $(CHROOT)/etc/portage/repos.conf RUN locale-gen touch $(COMPILE_OPTIONS) @@ -254,9 +262,15 @@ software: $(SOFTWARE) $(SOFTWARE): $(SYSTOOLS) configs/eth.network configs/issue $(COMPILE_OPTIONS) $(WORLD) @print Building $(APPLIANCE)-specific software + if test -f appliances/default/Makefile; \ + then $(MAKE) -C appliances/default preinstall; \ + fi $(MAKE) -C appliances/$(APPLIANCE) preinstall - COPY $(WORLD) /var/lib/portage/world + if test -f $(WORLD_DEFAULT); \ + then COPY $(WORLD_DEFAULT) /var/lib/portage/world; \ + fi + cat $(WORLD) >> $(CHROOT)/var/lib/portage/world RUN $(EMERGE) $(USEPKG) --update --newuse --deep @system @print Running @preserved-rebuild @@ -275,6 +289,9 @@ endif ifeq ($(DASH),YES) RUN $(EMERGE) --depclean app-shells/bash endif + if test -f appliances/default/Makefile; \ + then $(MAKE) -C appliances/default postinstall; \ + fi $(MAKE) -C appliances/$(APPLIANCE) postinstall ifneq ($(PKGLIST),0) echo \# > $(LST_FILE)