瀏覽代碼

Support building ethereal masterdirs

Michael Aldridge 6 年之前
父節點
當前提交
ba7f0e9475
共有 2 個文件被更改,包括 41 次插入28 次删除
  1. 9 8
      Dockerfile
  2. 32 20
      Makefile

+ 9 - 8
Dockerfile

@@ -1,30 +1,31 @@
 # 1) use alpine to generate a void environment
 FROM alpine:3.9 as stage0
-ARG REPOSITORY=https://alpha.de.repo.voidlinux.org/current
+ARG REPOSITORY=https://alpha.de.repo.voidlinux.org
 ARG ARCH=x86_64
 COPY keys/* /target/var/db/xbps/keys/
 RUN apk add ca-certificates && \
-  wget -O - https://alpha.de.repo.voidlinux.org/static/xbps-static-latest.$(uname -m)-musl.tar.xz | \
+  wget -O - ${REPOSITORY}/static/xbps-static-latest.$(uname -m)-musl.tar.xz | \
     tar Jx && \
   XBPS_ARCH=${ARCH} xbps-install.static -yMU \
-    --repository=${REPOSITORY} \
-    --repository=${REPOSITORY}/musl \
+    --repository=${REPOSITORY}/current \
+    --repository=${REPOSITORY}/current/musl \
     -r /target \
     base-minimal
 
 # 2) using void to generate the final build
 FROM scratch as stage1
-ARG REPOSITORY=https://alpha.de.repo.voidlinux.org/current
+ARG REPOSITORY=https://alpha.de.repo.voidlinux.org
 ARG ARCH=x86_64
+ARG BASEPKG=base-minimal
 COPY --from=stage0 /target /
 COPY keys/* /target/var/db/xbps/keys/
 RUN xbps-reconfigure -a && \
   mkdir -p /target/var/cache && ln -s /var/cache/xbps /target/var/cache/xbps && \
   XBPS_ARCH=${ARCH} xbps-install -yMU \
-    --repository=${REPOSITORY} \
-    --repository=${REPOSITORY}/musl \
+    --repository=${REPOSITORY}/current \
+    --repository=${REPOSITORY}/current/musl \
     -r /target \
-    base-minimal
+    ${BASEPKG}
 
 # 3) configure and clean up the final image
 FROM scratch

+ 32 - 20
Makefile

@@ -2,7 +2,7 @@ GITVER := $(shell git rev-parse --short HEAD)
 VERSION = 0.22
 SHIN    += $(shell find -type f -name '*.sh.in')
 SCRIPTS += $(SHIN:.sh.in=.sh)
-DATE=$(shell date "+%Y%m%d")
+DATECODE=$(shell date "+%Y%m%d")
 SHELL=/bin/bash
 
 T_PLATFORMS=rpi{,2,3}{,-musl} beaglebone{,-musl} cubieboard2{,-musl} odroid-c2{,-musl} usbarmory{,-musl} GCP{,-musl}
@@ -13,17 +13,21 @@ T_CLOUD_IMGS=GCP{,-musl}
 
 T_PXE_ARCHS=x86_64{,-musl}
 
+T_MASTERDIRS=x86_64{,-musl} i686
+
 ARCHS=$(shell echo $(T_ARCHS))
 PLATFORMS=$(shell echo $(T_PLATFORMS))
 SBC_IMGS=$(shell echo $(T_SBC_IMGS))
 CLOUD_IMGS=$(shell echo $(T_CLOUD_IMGS))
 PXE_ARCHS=$(shell echo $(T_PXE_ARCHS))
+MASTERDIRS=$(shell echo $(T_MASTERDIRS))
 
-ALL_ROOTFS=$(foreach arch,$(ARCHS),void-$(arch)-ROOTFS-$(DATE).tar.xz)
-ALL_PLATFORMFS=$(foreach platform,$(PLATFORMS),void-$(platform)-PLATFORMFS-$(DATE).tar.xz)
-ALL_SBC_IMAGES=$(foreach platform,$(SBC_IMGS),void-$(platform)-$(DATE).img.xz)
-ALL_CLOUD_IMAGES=$(foreach cloud,$(CLOUD_IMGS),void-$(cloud)-$(DATE).tar.gz)
-ALL_PXE_ARCHS=$(foreach arch,$(PXE_ARCHS),void-$(arch)-NETBOOT-$(DATE).tar.gz)
+ALL_ROOTFS=$(foreach arch,$(ARCHS),void-$(arch)-ROOTFS-$(DATECODE).tar.xz)
+ALL_PLATFORMFS=$(foreach platform,$(PLATFORMS),void-$(platform)-PLATFORMFS-$(DATECODE).tar.xz)
+ALL_SBC_IMAGES=$(foreach platform,$(SBC_IMGS),void-$(platform)-$(DATECODE).img.xz)
+ALL_CLOUD_IMAGES=$(foreach cloud,$(CLOUD_IMGS),void-$(cloud)-$(DATECODE).tar.gz)
+ALL_PXE_ARCHS=$(foreach arch,$(PXE_ARCHS),void-$(arch)-NETBOOT-$(DATECODE).tar.gz)
+ALL_MASTERDIRS=$(foreach arch,$(MASTERDIRS), masterdir-$(arch))
 
 SUDO := sudo
 
@@ -39,18 +43,18 @@ all: $(SCRIPTS)
 clean:
 	rm -v *.sh
 
-distdir-$(DATE):
-	mkdir -p distdir-$(DATE)
+distdir-$(DATECODE):
+	mkdir -p distdir-$(DATECODE)
 
-dist: distdir-$(DATE)
-	mv void*$(DATE)* distdir-$(DATE)/
+dist: distdir-$(DATECODE)
+	mv void*$(DATECODE)* distdir-$(DATECODE)/
 
 rootfs-all: $(ALL_ROOTFS)
 
 rootfs-all-print:
 	@echo $(ALL_ROOTFS) | sed "s: :\n:g"
 
-void-%-ROOTFS-$(DATE).tar.xz: $(SCRIPTS)
+void-%-ROOTFS-$(DATECODE).tar.xz: $(SCRIPTS)
 	$(SUDO) ./mkrootfs.sh $(XBPS_REPOSITORY) -x $(COMPRESSOR_THREADS) $*
 
 platformfs-all: $(ALL_PLATFORMFS)
@@ -58,8 +62,8 @@ platformfs-all: $(ALL_PLATFORMFS)
 platformfs-all-print:
 	@echo $(ALL_PLATFORMFS) | sed "s: :\n:g"
 
-void-%-PLATFORMFS-$(DATE).tar.xz: $(SCRIPTS)
-	$(SUDO) ./mkplatformfs.sh $(XBPS_REPOSITORY) -x $(COMPRESSOR_THREADS) $* void-$(shell ./lib.sh platform2arch $*)-ROOTFS-$(DATE).tar.xz
+void-%-PLATFORMFS-$(DATECODE).tar.xz: $(SCRIPTS)
+	$(SUDO) ./mkplatformfs.sh $(XBPS_REPOSITORY) -x $(COMPRESSOR_THREADS) $* void-$(shell ./lib.sh platform2arch $*)-ROOTFS-$(DATECODE).tar.xz
 
 images-all: platformfs-all images-all-sbc images-all-cloud
 
@@ -70,20 +74,28 @@ images-all-cloud: $(ALL_CLOUD_IMAGES)
 images-all-print:
 	@echo $(ALL_SBC_IMAGES) $(ALL_CLOUD_IMAGES) | sed "s: :\n:g"
 
-void-%-$(DATE).img.xz: void-%-PLATFORMFS-$(DATE).tar.xz
-	$(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) void-$*-PLATFORMFS-$(DATE).tar.xz
+void-%-$(DATECODE).img.xz: void-%-PLATFORMFS-$(DATECODE).tar.xz
+	$(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) void-$*-PLATFORMFS-$(DATECODE).tar.xz
 
 # Some of the images MUST be compressed with gzip rather than xz, this
 # rule services those images.
-void-%-$(DATE).tar.gz: void-%-PLATFORMFS-$(DATE).tar.xz
-	$(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) void-$*-PLATFORMFS-$(DATE).tar.xz
+void-%-$(DATECODE).tar.gz: void-%-PLATFORMFS-$(DATECODE).tar.xz
+	$(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) void-$*-PLATFORMFS-$(DATECODE).tar.xz
 
 pxe-all: $(ALL_PXE_ARCHS)
 
 pxe-all-print:
 	@echo $(ALL_PXE_ARCHS) | sed "s: :\n:g"
 
-void-%-NETBOOT-$(DATE).tar.gz: $(SCRIPTS) void-%-ROOTFS-$(DATE).tar.xz
-	$(SUDO) ./mknet.sh void-$*-ROOTFS-$(DATE).tar.xz
+void-%-NETBOOT-$(DATECODE).tar.gz: $(SCRIPTS) void-%-ROOTFS-$(DATECODE).tar.xz
+	$(SUDO) ./mknet.sh void-$*-ROOTFS-$(DATECODE).tar.xz
+
+masterdir-all-print:
+	@echo $(ALL_MASTERDIRS) | sed "s: :\n:g"
+
+masterdir-all: $(ALL_MASTERDIRS)
+
+masterdir-%:
+	$(SUDO) docker build --build-arg REPOSITORY=$(XBPS_REPOSITORY) --build-arg ARCH=$* -t voidlinux/masterdir-$*:$(DATECODE) .
 
-.PHONY: clean dist rootfs-all-print platformfs-all-print pxe-all-print
+.PHONY: clean dist rootfs-all-print rootfs-all platformfs-all-print platformfs-all pxe-all-print pxe-all masterdir-all-print masterdir-all masterdir-push-all