From 06c8d88eb6827d3fabf034716dc9d243aef5c440 Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Fri, 23 Nov 2018 11:29:39 -0600 Subject: [PATCH 1/3] makefile: Add make install allow install osbuilder scripts. Example: make install DESTDIR=/tmp/t export DISTRO_REPO=1 export GOPATH=~/go export AGENT_SOURCE_BIN=/tmp/usr/bin/kata-agent /tmp/t/usr/libexec/kata-containers/osbuilder/rootfs-builder/rootfs.sh fedora pushd /tmp/t/usr/libexec/kata-containers/osbuilder/rootfs-builder /tmp/t/usr/libexec/kata-containers/osbuilder/image-builder/image_builder.sh $(pwd)/rootfs-Fedora Fixes: #206 Signed-off-by: Jose Carlos Venegas Munoz --- Makefile | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Makefile b/Makefile index ec23eb6548..93a57d13ae 100644 --- a/Makefile +++ b/Makefile @@ -88,6 +88,40 @@ test-initrd-only: 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) From 1bbf1e41063f0d301f213813847cd150b60bdafd Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Fri, 23 Nov 2018 11:32:42 -0600 Subject: [PATCH 2/3] rootfs: Allow use host repositories. Instead of create a dnf repository allow the config from the host. Signed-off-by: Jose Carlos Venegas Munoz --- rootfs-builder/rootfs.sh | 8 ++++++++ scripts/lib.sh | 13 ++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/rootfs-builder/rootfs.sh b/rootfs-builder/rootfs.sh index 04def902be..cb2f7dd7da 100755 --- a/rootfs-builder/rootfs.sh +++ b/rootfs-builder/rootfs.sh @@ -78,6 +78,9 @@ AGENT_SOURCE_BIN Path to the directory of agent binary. If set, use the binary as agent but not build agent package. Default value: +DISTRO_REPO Use host repositories to install guest packages. + Default value: + GO_AGENT_PKG URL of the Git repository hosting the agent package. Default value: ${GO_AGENT_PKG} @@ -356,6 +359,11 @@ fi mkdir -p ${ROOTFS_DIR} build_rootfs ${ROOTFS_DIR} +pushd "${ROOTFS_DIR}" >> /dev/null +if [ "$PWD" != "/" ] ; then + rm -rf ./var/cache/dnf/ +fi +popd >> /dev/null [ -n "${KERNEL_MODULES_DIR}" ] && copy_kernel_modules ${KERNEL_MODULES_DIR} ${ROOTFS_DIR} diff --git a/scripts/lib.sh b/scripts/lib.sh index ca7f500016..d725a77515 100644 --- a/scripts/lib.sh +++ b/scripts/lib.sh @@ -47,7 +47,7 @@ check_root() generate_dnf_config() { REPO_NAME=${REPO_NAME:-"base"} - CACHE_DIR=${CACHE_DIR:-"/var/cache/dnf-${OS_NAME}"} + CACHE_DIR=${CACHE_DIR:-"/var/cache/dnf"} cat > "${DNF_CONF}" << EOF [main] cachedir=${CACHE_DIR} @@ -118,7 +118,7 @@ build_rootfs() #local CONFIG_DIR=${CONFIG_DIR} check_root - if [ ! -f "${DNF_CONF}" ]; then + if [ ! -f "${DNF_CONF}" ] && [ -z "${DISTRO_REPO}" ] ; then DNF_CONF="./kata-${OS_NAME}-dnf.conf" generate_dnf_config fi @@ -133,10 +133,13 @@ build_rootfs() die "neither yum nor dnf is installed" fi - DNF="${PKG_MANAGER} --config=$DNF_CONF -y --installroot=${ROOTFS_DIR} --noplugins" + DNF="${PKG_MANAGER} -y --installroot=${ROOTFS_DIR} --noplugins" + if [ -n "${DNF_CONF}" ] ; then + DNF="${DNF} --config=${DNF_CONF}" + else + DNF="${DNF} --releasever=${OS_VERSION}" + fi $DNF install ${EXTRA_PKGS} ${PACKAGES} - - [ -n "${ROOTFS_DIR}" ] && rm -r "${ROOTFS_DIR}${CACHE_DIR}" } # Create a YAML metadata file inside the rootfs. From 434fff890a43ae489b92b4fc1b6a8cc12a4db8cb Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Sun, 25 Nov 2018 23:20:14 -0600 Subject: [PATCH 3/3] rootfs_builder: Dont fail if GOPATH not defined. Define GOPATH if is not set. Signed-off-by: Jose Carlos Venegas Munoz --- rootfs-builder/rootfs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/rootfs-builder/rootfs.sh b/rootfs-builder/rootfs.sh index cb2f7dd7da..dfedc8569a 100755 --- a/rootfs-builder/rootfs.sh +++ b/rootfs-builder/rootfs.sh @@ -16,6 +16,7 @@ AGENT_BIN=${AGENT_BIN:-kata-agent} AGENT_INIT=${AGENT_INIT:-no} KERNEL_MODULES_DIR=${KERNEL_MODULES_DIR:-""} OSBUILDER_VERSION="unknown" +export GOPATH=${GOPATH:-${HOME}/go} lib_file="${script_dir}/../scripts/lib.sh" source "$lib_file"