diff --git a/Dockerfile b/Dockerfile index 17e2914..ea91666 100644 --- a/Dockerfile +++ b/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 diff --git a/Makefile b/Makefile index caa67ed..ef462c3 100644 --- a/Makefile +++ b/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 -.PHONY: clean dist rootfs-all-print platformfs-all-print pxe-all-print +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 rootfs-all platformfs-all-print platformfs-all pxe-all-print pxe-all masterdir-all-print masterdir-all masterdir-push-all