penguin/monok8s

k8s image for Mono Gateway Dev Kit

makefile

raw ยท 3083 bytes

include build.env
export

TAG ?= dev

PACKAGES_DIR := packages

BUSYBOX_TAR := $(PACKAGES_DIR)/busybox-$(BUSYBOX_VERSION).tar.gz
ALPINE_TAR  := $(PACKAGES_DIR)/alpine-minirootfs-$(ALPINE_VER)-$(ALPINE_ARCH).tar.gz
NXP_TAR     := $(PACKAGES_DIR)/$(NXP_VERSION).tar.gz
CRIO_TAR    := $(PACKAGES_DIR)/$(CRIO_VERSION).tar.gz

BOARD_ITB     := out/board.itb
INITRAMFS     := out/initramfs.cpio.gz
RELEASE_IMAGE := out/monok8s-$(TAG).img

ALPINE_SERIES := $(word 1,$(subst ., ,${ALPINE_VER})).$(word 2,$(subst ., ,${ALPINE_VER}))

$(BUSYBOX_TAR):
	@mkdir -p $(PACKAGES_DIR)
	curl -L -o $@ "https://github.com/mirror/busybox/archive/refs/tags/$(BUSYBOX_VERSION).tar.gz"

$(ALPINE_TAR):
	@mkdir -p $(PACKAGES_DIR)
	curl -L -o $@ "https://dl-cdn.alpinelinux.org/alpine/v$(ALPINE_SERIES)/releases/$(ALPINE_ARCH)/alpine-minirootfs-$(ALPINE_VER)-$(ALPINE_ARCH).tar.gz"

$(NXP_TAR):
	@mkdir -p $(PACKAGES_DIR)
	curl -L -o $@ "https://github.com/nxp-qoriq/linux/archive/refs/tags/$(NXP_VERSION).tar.gz"

$(CRIO_TAR):
	@mkdir -p $(PACKAGES_DIR)
	curl -L -o $@ "https://storage.googleapis.com/cri-o/artifacts/$(CRIO_VERSION).tar.gz"

build-base:
	docker build \
	-f docker/build-base.Dockerfile \
	--build-arg TAG=$(TAG) \
	-t $(DOCKER_IMAGE_ROOT)/build-base:$(TAG) .

$(KERNEL_IMAGE): build-base $(NXP_TAR)
	docker build \
	-f docker/kernel-build.Dockerfile \
		--build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \
		--build-arg TAG=$(TAG) \
		--build-arg ARCH=$(ARCH) \
		--build-arg CROSS_COMPILE=$(CROSS_COMPILE) \
		--build-arg NXP_VERSION=$(NXP_VERSION) \
		--build-arg DEVICE_TREE_TARGET=$(DEVICE_TREE_TARGET) \
		--output type=local,dest=./out .

	@test -f $(KERNEL_IMAGE)

$(INITRAMFS): $(KERNEL_IMAGE) $(BUSYBOX_TAR)
	docker build \
	-f docker/initramfs.Dockerfile \
		--build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \
		--build-arg TAG=$(TAG) \
		--build-arg ARCH=$(ARCH) \
		--build-arg CROSS_COMPILE=$(CROSS_COMPILE) \
		--build-arg BUSYBOX_VERSION=$(BUSYBOX_VERSION) \
		--output type=local,dest=./out .

	@test -f $(INITRAMFS)

$(BOARD_ITB): $(INITRAMFS)
	docker build \
	-f docker/itb.Dockerfile \
		--build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \
		--build-arg TAG=$(TAG) \
		--build-arg ARCH=$(ARCH) \
		--build-arg DEVICE_TREE_TARGET=$(DEVICE_TREE_TARGET) \
		--output type=local,dest=./out .

	@test -f $(BOARD_ITB)

release: $(BOARD_ITB) build-base
	docker build \
	-f docker/alpine.Dockerfile \
		--build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \
		--build-arg TAG=$(TAG) \
		--build-arg ALPINE_ARCH=$(ALPINE_ARCH) \
		--build-arg ALPINE_VER=$(ALPINE_VER) \
		--build-arg CRIO_VERSION=$(CRIO_VERSION) \
	-t $(DOCKER_IMAGE_ROOT)/buildenv-alpine:$(TAG) .
	@cid=$$(docker create \
		--privileged \
		-v /cache/apk:/var/cache/apk \
		--device=/dev/loop0:/dev/loop0 \
		-e ROOTFS=/out/rootfs \
		-e ARTIFACT_DIR=/artifacts \
		-e RELEASE_IMAGE=$(RELEASE_IMAGE) \
		$(DOCKER_IMAGE_ROOT)/buildenv-alpine:$(TAG) \
		bash -lc '/build-rootfs.sh'); \
	docker start -a $$cid; \
	docker cp $$cid:/build/output.img $(RELEASE_IMAGE); \
	docker rm $$cid

	@test -f $(RELEASE_IMAGE)