diff --git a/Makefile b/Makefile index 6f65b99..92a00d3 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,9 @@ VABUILDER_OUTPUT := $(CURDIR) CHROOT := $(VABUILDER_OUTPUT)/build/$(APPLIANCE) VA_PKGDIR = $(VABUILDER_OUTPUT)/packages DISTDIR = $(CURDIR)/distfiles -PORTAGE_DIR = $(CURDIR)/portage +REPO_DIR = $(CURDIR)/repos +REPO_NAMES = +PORTAGE_DIR = $(REPO_DIR)/gentoo HOSTNAME = $(APPLIANCE) IMAGES = $(VABUILDER_OUTPUT)/images RAW_IMAGE = $(IMAGES)/$(APPLIANCE).img @@ -73,13 +75,14 @@ endif PATH := $(CURDIR)/scripts:$(PATH) -export PATH CHROOT container PORTAGE_DIR VA_PKGDIR DISTDIR VA_ARCH +export PATH CHROOT container PORTAGE_DIR REPO_DIR REPO_NAMES VA_PKGDIR DISTDIR VA_ARCH inroot := systemd-nspawn --quiet \ --directory=$(CHROOT) \ --machine=$(container) \ --capability=CAP_NET_ADMIN \ --bind=$(PORTAGE_DIR):/var/db/repos/gentoo \ + $(foreach repo,$(REPO_NAMES),--bind=$(REPO_DIR)/$(repo):/var/db/repos/$(repo) ) \ --bind=$(VA_PKGDIR):/var/cache/binpkgs \ --bind=$(DISTDIR):/var/cache/distfiles @@ -128,7 +131,7 @@ else $(M4) -DDRIVE=vda $< > $@ endif -$(PREPROOT): $(STAGE3) $(PORTAGE_DIR) $(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_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) @@ -157,6 +160,25 @@ endif rm -f $(CHROOT)/etc/localtime touch $(STAGE3) + +sync_repos: $(foreach repo,$(REPO_NAMES),$(REPO_DIR)/$(repo)) + @print Updating the repositories + $(foreach repo,$(REPO_NAMES),git -C $(REPO_DIR)/$(repo) pull;touch $(REPO_DIR)/$(repo);) + +$(foreach repo,$(REPO_NAMES),$(REPO_DIR)/$(repo)): + @print Grabbing a repository + git clone --depth=1 $(REPO_URI_$(subst $(REPO_DIR)/,,$@)) $@ + +$(CHROOT)/etc/portage/repos.conf: $(foreach repo,$(REPO_NAMES),$(REPO_DIR)/$(repo)) + $(foreach repo,$(REPO_NAMES),\ + echo "[$(repo)]" >>$@;\ + echo "location = /var/db/repos/$(repo)" >>$@;\ + echo "auto-sync = no" >>$@;\ + echo "" >>$@;\ + ) + touch $@ + + $(CHROOT)/etc/portage/package.%/01$(APPLIANCE): appliances/$(APPLIANCE)/package.% $(STAGE3) mkdir -p `dirname $@` cp $< $@ @@ -175,7 +197,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 +$(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 RUN locale-gen touch $(COMPILE_OPTIONS) diff --git a/scripts/RUN b/scripts/RUN index 29ef803..94ce7c7 100755 --- a/scripts/RUN +++ b/scripts/RUN @@ -7,6 +7,12 @@ import sys def main(): environ = os.environ + repobind = [] + repodir = environ['REPO_DIR'] + repos = str.split(environ['REPO_NAMES']) + for repo in repos: + repobind.append(f"--bind={repodir}/{repo}:/var/db/repos/{repo}") + command = [ "systemd-nspawn", "--quiet", @@ -16,7 +22,7 @@ def main(): f"--bind={environ['PORTAGE_DIR']}:/var/db/repos/gentoo", f"--bind={environ['VA_PKGDIR']}:/var/cache/binpkgs", f"--bind={environ['DISTDIR']}:/var/cache/distfiles", - ] + sys.argv[1:] + ] + repobind + sys.argv[1:] if os.environ.get("VA_ARCH") == "linux32": command = ["linux32"] + command