mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-01-15 12:24:26 +01:00
guest kernel needs 64 bytes of DRAM per 4K page of emulated PMEM, hence the image size should be as small as possible to reduce the container's memory footprint. The image size is recalculated automatically if it's too small to contain the rootfs. Signed-off-by: Julio Montes <julio.montes@intel.com>
127 lines
3.8 KiB
Makefile
127 lines
3.8 KiB
Makefile
#
|
|
# Copyright (c) 2017 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
MK_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
TEST_RUNNER := $(MK_DIR)/tests/test_images.sh
|
|
ROOTFS_BUILDER := $(MK_DIR)/rootfs-builder/rootfs.sh
|
|
INITRD_BUILDER := $(MK_DIR)/initrd-builder/initrd_builder.sh
|
|
IMAGE_BUILDER := $(MK_DIR)/image-builder/image_builder.sh
|
|
|
|
AGENT_INIT ?= no
|
|
DISTRO ?= centos
|
|
ROOTFS_BUILD_DEST := $(PWD)
|
|
IMAGES_BUILD_DEST := $(PWD)
|
|
DISTRO_ROOTFS := $(ROOTFS_BUILD_DEST)/$(DISTRO)_rootfs
|
|
DISTRO_ROOTFS_MARKER := $(ROOTFS_BUILD_DEST)/.$(DISTRO)_rootfs.done
|
|
DISTRO_IMAGE := $(IMAGES_BUILD_DEST)/kata-containers.img
|
|
DISTRO_INITRD := $(IMAGES_BUILD_DEST)/kata-containers-initrd.img
|
|
|
|
VERSION_FILE := ./VERSION
|
|
VERSION := $(shell grep -v ^\# $(VERSION_FILE))
|
|
COMMIT_NO := $(shell git rev-parse HEAD 2> /dev/null || true)
|
|
COMMIT := $(if $(shell git status --porcelain --untracked-files=no),${COMMIT_NO}-dirty,${COMMIT_NO})
|
|
VERSION_COMMIT := $(if $(COMMIT),$(VERSION)-$(COMMIT),$(VERSION))
|
|
|
|
################################################################################
|
|
|
|
rootfs-%: $(ROOTFS_BUILD_DEST)/.%_rootfs.done
|
|
@ # DONT remove. This is not cancellation rule.
|
|
|
|
.PRECIOUS: $(ROOTFS_BUILD_DEST)/.%_rootfs.done
|
|
$(ROOTFS_BUILD_DEST)/.%_rootfs.done:: rootfs-builder/%
|
|
@echo Creating rootfs for "$*"
|
|
$(ROOTFS_BUILDER) -o $(VERSION_COMMIT) -r $(ROOTFS_BUILD_DEST)/$*_rootfs $*
|
|
touch $@
|
|
|
|
image-%: $(IMAGES_BUILD_DEST)/kata-containers-image-%.img
|
|
@ # DONT remove. This is not cancellation rule.
|
|
|
|
.PRECIOUS: $(IMAGES_BUILD_DEST)/kata-containers-image-%.img
|
|
$(IMAGES_BUILD_DEST)/kata-containers-image-%.img: rootfs-%
|
|
@echo Creating image based on $^
|
|
$(IMAGE_BUILDER) -o $@ $(ROOTFS_BUILD_DEST)/$*_rootfs
|
|
|
|
initrd-%: $(IMAGES_BUILD_DEST)/kata-containers-initrd-%.img
|
|
@ # DONT remove. This is not cancellation rule.
|
|
|
|
.PRECIOUS: $(IMAGES_BUILD_DEST)/kata-containers-initrd-%.img
|
|
$(IMAGES_BUILD_DEST)/kata-containers-initrd-%.img: rootfs-%
|
|
@echo Creating initrd image for $*
|
|
$(INITRD_BUILDER) -o $@ $(ROOTFS_BUILD_DEST)/$*_rootfs
|
|
|
|
.PHONY: all
|
|
all: image initrd
|
|
|
|
.PHONY: rootfs
|
|
rootfs: $(DISTRO_ROOTFS_MARKER)
|
|
|
|
.PHONY: image
|
|
image: $(DISTRO_IMAGE)
|
|
|
|
$(DISTRO_IMAGE): $(DISTRO_ROOTFS_MARKER)
|
|
@echo Creating image based on "$(DISTRO_ROOTFS)"
|
|
$(IMAGE_BUILDER) "$(DISTRO_ROOTFS)"
|
|
|
|
.PHONY: initrd
|
|
initrd: $(DISTRO_INITRD)
|
|
|
|
$(DISTRO_INITRD): $(DISTRO_ROOTFS_MARKER)
|
|
@echo Creating initrd image based on "$(DISTRO_ROOTFS)"
|
|
$(INITRD_BUILDER) "$(DISTRO_ROOTFS)"
|
|
|
|
.PHONY: test
|
|
test:
|
|
$(TEST_RUNNER) "$(DISTRO)"
|
|
|
|
.PHONY: test-image-only
|
|
test-image-only:
|
|
$(TEST_RUNNER) --test-images-only "$(DISTRO)"
|
|
|
|
.PHONY: test-initrd-only
|
|
test-initrd-only:
|
|
$(TEST_RUNNER) --test-initrds-only "$(DISTRO)"
|
|
|
|
.PHONY: list-distros
|
|
list-distros:
|
|
@ $(ROOTFS_BUILDER) -l
|
|
|
|
DESTDIR := /
|
|
KATADIR := /usr/libexec/kata-containers
|
|
OSBUILDER_DIR := $(KATADIR)/osbuilder
|
|
INSTALL_DIR :=$(DESTDIR)/$(OSBUILDER_DIR)
|
|
DIST_CONFIGS:= $(wildcard rootfs-builder/*/config.sh)
|
|
|
|
SCRIPTS :=
|
|
SCRIPTS += rootfs-builder/rootfs.sh
|
|
SCRIPTS += image-builder/image_builder.sh
|
|
SCRIPTS += initrd-builder/initrd_builder.sh
|
|
|
|
FILES :=
|
|
FILES += rootfs-builder/versions.txt
|
|
FILES += scripts/lib.sh
|
|
|
|
define INSTALL_FILE
|
|
echo "Installing $(abspath $2/$1)";
|
|
install -m 644 -D $1 $2/$1;
|
|
endef
|
|
|
|
define INSTALL_SCRIPT
|
|
echo "Installing $(abspath $2/$1)";
|
|
install -m 755 -D $1 $(abspath $2/$1);
|
|
endef
|
|
|
|
.PHONY: install-scripts
|
|
install-scripts:
|
|
@echo "Installing scripts"
|
|
@$(foreach f,$(SCRIPTS),$(call INSTALL_SCRIPT,$f,$(INSTALL_DIR)))
|
|
@echo "Installing helper files"
|
|
@$(foreach f,$(FILES),$(call INSTALL_FILE,$f,$(INSTALL_DIR)))
|
|
@echo "Installing installing config files"
|
|
@$(foreach f,$(DIST_CONFIGS),$(call INSTALL_FILE,$f,$(INSTALL_DIR)))
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf $(DISTRO_ROOTFS_MARKER) $(DISTRO_ROOTFS) $(DISTRO_IMAGE) $(DISTRO_INITRD)
|