diff options
author | zer0def | 2020-08-29 09:15:23 +0200 |
---|---|---|
committer | zer0def | 2020-08-29 18:35:21 +0200 |
commit | c64ed7d7120045ef2c08123b7184846ed9fc2004 (patch) | |
tree | 15b5509816e35419640d2ed91ac3a8c25104d5e0 | |
parent | 24d469f4a12161f45b8cb9ba6d1fba2df6851c19 (diff) | |
download | aur-c64ed7d7120045ef2c08123b7184846ed9fc2004.tar.gz |
Bypass broken yq makedep pull.
-rw-r--r-- | .SRCINFO | 22 | ||||
-rw-r--r-- | 0001-osbuilder-goversion.patch | 13 | ||||
-rw-r--r-- | PKGBUILD | 145 | ||||
-rw-r--r-- | rootfs-builder-Dockerfile.in | 16 | ||||
-rw-r--r-- | rootfs-builder-config.sh | 19 | ||||
-rw-r--r-- | rootfs-builder-lib.sh | 52 |
6 files changed, 248 insertions, 19 deletions
@@ -1,14 +1,17 @@ pkgbase = kata-containers-git pkgdesc = Lightweight virtual machines for containers (Git version) - pkgver = 1.11.0~alpha1~runtime.r52.6e398f7c + pkgver = 1.12.0~alpha0~runtime.r72.a1d993fa pkgrel = 1 url = https://katacontainers.io/ arch = x86_64 license = Apache makedepends = go + makedepends = yq2-bin + makedepends = bc source = agent::git+https://github.com/kata-containers/agent source = ksm-throttler::git+https://github.com/kata-containers/ksm-throttler source = osbuilder::git+https://github.com/kata-containers/osbuilder + source = packaging::git+https://github.com/kata-containers/packaging source = proxy::git+https://github.com/kata-containers/proxy source = runtime::git+https://github.com/kata-containers/runtime source = shim::git+https://github.com/kata-containers/shim @@ -18,15 +21,16 @@ pkgbase = kata-containers-git sha512sums = SKIP sha512sums = SKIP sha512sums = SKIP + sha512sums = SKIP + +pkgname = kata-agent-git + provides = kata-agent + conflicts = kata-agent pkgname = kata-ksm-throttler-git provides = kata-ksm-throttler conflicts = kata-ksm-throttler -pkgname = kata-proxy-git - provides = kata-proxy - conflicts = kata-proxy - pkgname = kata-runtime-git install = kata-runtime.install depends = qemu-headless @@ -40,11 +44,11 @@ pkgname = kata-runtime-git provides = kata-runtime conflicts = kata-runtime +pkgname = kata-proxy-git + provides = kata-proxy + conflicts = kata-proxy + pkgname = kata-shim-git provides = kata-shim conflicts = kata-shim -pkgname = kata-agent-git - provides = kata-agent - conflicts = kata-agent - diff --git a/0001-osbuilder-goversion.patch b/0001-osbuilder-goversion.patch new file mode 100644 index 000000000000..0aff088a8170 --- /dev/null +++ b/0001-osbuilder-goversion.patch @@ -0,0 +1,13 @@ +diff --git a/rootfs-builder/rootfs.sh b/rootfs-builder/rootfs.sh +index f9f9ff4..9836a2b 100755 +--- a/rootfs-builder/rootfs.sh ++++ b/rootfs-builder/rootfs.sh +@@ -345,7 +345,7 @@ build_rootfs_distro() + + if [ -z "${USE_DOCKER}" ] && [ -z "${USE_PODMAN}" ]; then + #Generate an error if the local Go version is too old +- foundVersion=$(go version | sed -E "s/^.+([0-9]+\.[0-9]+\.[0-9]+).*$/\1/g") ++ foundVersion=$(go version | sed -E "s/^.+([0-9]+\.[0-9]+(\.[0-9]+)?).*$/\1/g") + + compare_versions "${GO_VERSION}" "${foundVersion}" || \ + die "Your Go version ${foundVersion} is older than the minimum expected Go version ${GO_VERSION}" @@ -1,33 +1,104 @@ pkgbase=kata-containers-git -pkgname=(kata-ksm-throttler-git kata-proxy-git kata-runtime-git kata-shim-git kata-agent-git) -pkgver=1.11.0~alpha1~runtime.r52.6e398f7c +pkgname=( + kata-agent-git + kata-ksm-throttler-git + kata-runtime-git + kata-proxy-git + kata-shim-git + + #kata-linux-container-git + #kata-containers-image-git +) +pkgver=1.12.0~alpha0~runtime.r72.a1d993fa pkgrel=1 pkgdesc="Lightweight virtual machines for containers (Git version)" arch=('x86_64') url="https://katacontainers.io/" license=('Apache') -makedepends=('go') +makedepends=('go' 'yq2-bin' 'bc') _gh_org="github.com/kata-containers" +_kata_kernel_ver="5.4.60" source=( "agent::git+https://${_gh_org}/agent" "ksm-throttler::git+https://${_gh_org}/ksm-throttler" "osbuilder::git+https://${_gh_org}/osbuilder" + "packaging::git+https://${_gh_org}/packaging" "proxy::git+https://${_gh_org}/proxy" "runtime::git+https://${_gh_org}/runtime" "shim::git+https://${_gh_org}/shim" ) -sha512sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP') +sha512sums=(SKIP SKIP SKIP SKIP SKIP SKIP SKIP) + +if [[ " ${pkgname[@]} " =~ " kata-linux-container-git " ]]; then + source+=( + "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${_kata_kernel_ver}.tar.xz" + "http://mirrors.evowise.com/archlinux/iso/2020.08.01/archlinux-bootstrap-2020.08.01-x86_64.tar.gz" + "http://mirrors.evowise.com/archlinux/iso/2020.08.01/archlinux-bootstrap-2020.08.01-x86_64.tar.gz.sig" + + "0001-osbuilder-goversion.patch" + "rootfs-builder-config.sh" + "rootfs-builder-Dockerfile.in" # unfit for use yet + "rootfs-builder-lib.sh" + ) + sha512sums+=( + fb9ebada932c17d0adbc099a1df31a7d97afe3be694665b1f8171e7159bda84a36a435ceecfdce6d492d8e5075ed4253c68029dcdf952e75a3fe7ee36646327b + 24044fb5a9870dbe13ec7eafb60d99e664cec10d50d80a73a0445d1368c0fa95881003d92e0a1c0446f76c1bbe89b098f35ceffd0ef24e9beaa51f1a83494b98 + SKIP + + 0cac0aa5d0f7f0d49da9185bc71ce05a089d6339ad0d660905e18724b30381cbe3fb84b56b0de21def793ca52c945f02b99f81a6b4e77e2398da250ec8e4ff6b + 375990194988a019f2429ed85eb996222929a028a52ec609de106df8939704db6654af6d92aec5e192693d7758fc9561f236bbb29df319c2d506b5b2d2b16553 + 352c9ac91eb03d5fd28da6e6f1d1fce7daa0d557d34457e624dadc0dd28e6051cdcf580029c793558980391d86df54d22b59daaf85b00590bec430c3f4f06c89 + e987501a16828636b3da5cfa7b4c3af5e981aab20dee4b97d10daf8625de92e77203f7ccbfa2beff8700b32371ffa4d9f94f97216fe6abb13a475984cdf5d6e3 + ) + noextract=('archlinux-bootstrap-2020.08.01-x86_64.tar.gz') + _build_artifacts="yes" +fi + +case "${CARCH}" in + x86_64) _KARCH=x86_64;; + aarch64) _KARCH=arm64;; + s390|s390x) _KARCH=s390;; + ppc64le) _KARCH=powerpc;; +esac pkgver(){ - cd "${srcdir}/src/${_gh_org}/runtime" - GITTAG="$(git describe --abbrev=0 --tags 2>/dev/null)" - printf '%s.r%s.%s' \ - "${GITTAG/-/\~}~runtime" \ - "$(git rev-list --count ${GITTAG}..)" \ - "$(git rev-parse --short HEAD)" + cd "${srcdir}/src/${_gh_org}/runtime" + GITTAG="$(git describe --abbrev=0 --tags 2>/dev/null)" + printf '%s.r%s.%s' \ + "${GITTAG/-/\~}~runtime" \ + "$(git rev-list --count ${GITTAG}..)" \ + "$(git rev-parse --short HEAD)" } prepare(){ + if [ "${_build_artifacts}" = "yes" ]; then + # kata-linux-container prep (ref: https://github.com/kata-containers/packaging/tree/master/kernel ) + cd "${srcdir}/linux-${_kata_kernel_ver}" + #for p in $(find "${srcdir}/packaging/obs-packaging/linux-container/patches" -type f -name "*.patch"); do + # patch -p1 <"${p}" + #done + + # kernel config prep from upstream ("${srcdir}/packaging/obs-packaging/linux-container/kata-linux-container.spec-template") + make -s mrproper + rm -f .config + + _KCONFIG="$(find "${srcdir}/packaging/kernel/configs" -type f -name "${_KARCH}_kata_kvm_${_kata_kernel_ver%.*}.x")" + if [ -z "${_KCONFIG}" ]; then + KCONFIG_CONFIG=.config ARCH=${_KARCH} scripts/kconfig/merge_config.sh -r -n "${srcdir}/packaging/kernel/configs/fragments/common/"*.conf "${srcdir}/packaging/kernel/configs/fragments/${_KARCH}/"*.conf + else + install -D -m 0644 "${_KCONFIG}" .config + fi + make -s ARCH="${_KARCH}" oldconfig + + # kata-container-image osbuilder fix + cd "${srcdir}/osbuilder" + patch -p1 < "${srcdir}/0001-osbuilder-goversion.patch" + fi + + # kata-runtime makedep + mkdir -p "${srcdir}/bin" + ln -sf "$(type -p yq)" "${srcdir}/bin/yq" + mkdir -p "${srcdir}/src/${_gh_org}" for i in agent ksm-throttler proxy runtime shim; do rm -rf "${srcdir}/src/${_gh_org}/${i}" @@ -37,8 +108,36 @@ prepare(){ build(){ cd "${srcdir}/src/${_gh_org}/agent" + echo "Building kata-agent…" GOPATH="${srcdir}" LDFLAGS="" make + if [ "${_build_artifacts}" = "yes" ]; then + # kernel build + cd "${srcdir}/linux-${_kata_kernel_ver}" + echo "Building kata-linux-container…" + make -s ARCH="${_KARCH}" + + # rootfs and initrd build (it's horrid, but somewhat works) + echo "Building kata-containers-image…" + _ROOTFS_DIR="${srcdir}/osbuilder/rootfs-builder/rootfs" + + # build rootfs + install -D -m 0644 "${srcdir}/rootfs-builder-config.sh" "${srcdir}/osbuilder/rootfs-builder/archlinux/config.sh" + install -D -m 0644 "${srcdir}/rootfs-builder-Dockerfile.in" "${srcdir}/osbuilder/rootfs-builder/archlinux/Dockerfile.in" + install -D -m 0644 "${srcdir}/rootfs-builder-lib.sh" "${srcdir}/osbuilder/rootfs-builder/archlinux/rootfs_lib.sh" + + cd "${srcdir}/osbuilder/rootfs-builder" + GOPATH="${srcdir}" AGENT_SOURCE_BIN="${srcdir}/src/${_gh_org}/agent/kata-agent" ROOTFS_DIR="${_ROOTFS_DIR}" ./rootfs.sh archlinux + + # rootfs image (need to bypass root requirement somehow) + cd "${srcdir}/osbuilder/image-builder" + #./image_builder.sh "${_ROOTFS_DIR}" + + # initrd + cd "${srcdir}/osbuilder/initrd-builder" + ./initrd_builder.sh "${_ROOTFS_DIR}" + fi + for i in ksm-throttler proxy runtime shim; do echo "Building kata-${i}…" cd "${srcdir}/src/${_gh_org}/${i}" @@ -53,6 +152,16 @@ package_kata-agent-git(){ GOPATH="${srcdir}" make install DESTDIR="${pkgdir}" BINDIR="/usr/bin" PKGLIBEXECDIR="/usr/lib/kata-containers" LIBEXECDIR="/usr/lib" } +package_kata-containers-image-git(){ + conflicts=('kata-containers-image') + provides=('kata-containers-image') + #install -D -m 0644 "${srcdir}/osbuilder/image-builder/kata-containers.img" "${pkgdir}/usr/share/kata-containers/kata-containers-image_archlinux_${pkgver%%~*}_agent_git.img" + install -D -m 0644 "${srcdir}/osbuilder/initrd-builder/kata-containers-initrd.img" "${pkgdir}/usr/share/kata-containers/kata-containers-initrd_archlinux_${pkgver%%~*}_agent_git.initrd" + cd "${pkgdir}/usr/share/kata-containers" + #ln -sf "kata-containers-image_archlinux_${pkgver%%~*}_agent_git.img" "kata-containers.img" + ln -sf "kata-containers-initrd_archlinux_${pkgver%%~*}_agent_git.initrd" "kata-containers-initrd.img" +} + package_kata-ksm-throttler-git(){ conflicts=('kata-ksm-throttler') provides=('kata-ksm-throttler') @@ -61,6 +170,22 @@ package_kata-ksm-throttler-git(){ install -d -m 0755 "${pkgdir}/var/lib/vc/{firecracker,sbs,uuid}" } +package_kata-linux-container-git(){ + conflicts=('kata-linux-container') + provides=('kata-linux-container') + install -D -m 0644 "${srcdir}/linux-${_kata_kernel_ver}/vmlinux" "${pkgdir}/usr/share/kata-containers/vmlinux-${_kata_kernel_ver}.container" + cd "${pkgdir}/usr/share/kata-containers" + ln -sf "vmlinux-${_kata_kernel_ver}.container" vmlinux.container + if [ "${_KARCH}" = "powerpc" ]; then + ln -sf "vmlinux-${_kata_kernel_ver}.container" "vmlinuz-${_kata_kernel_ver}.container" + ln -sf "vmlinuz-${_kata_kernel_ver}.container" vmlinuz.container + else + # param out bzImage for other archs? + install -D -m 0644 "${srcdir}/linux-${_kata_kernel_ver}/arch/${_KARCH}/boot/bzImage" "${pkgdir}/usr/share/kata-containers/vmlinuz-${_kata_kernel_ver}.container" + ln -sf "vmlinuz-${_kata_kernel_ver}.container" vmlinuz.container + fi +} + package_kata-proxy-git(){ conflicts=('kata-proxy') provides=('kata-proxy') diff --git a/rootfs-builder-Dockerfile.in b/rootfs-builder-Dockerfile.in new file mode 100644 index 000000000000..9897e626ca7b --- /dev/null +++ b/rootfs-builder-Dockerfile.in @@ -0,0 +1,16 @@ +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 + +#@distro@: docker image to be used to create a rootfs +#@OS_VERSION@: Docker image version to build this dockerfile +from archlinux/base:latest + +# This dockerfile needs to provide all the componets need to build a rootfs +# Install any package need to create a rootfs (package manager, extra tools) + +# RUN commands + +# This will install the proper golang to build Kata components +@INSTALL_GO@ diff --git a/rootfs-builder-config.sh b/rootfs-builder-config.sh new file mode 100644 index 000000000000..24a0aaf7529f --- /dev/null +++ b/rootfs-builder-config.sh @@ -0,0 +1,19 @@ +# This is a configuration file add extra variables to +# be used by build_rootfs() from rootfs_lib.sh the variables will be +# loaded just before call the function. For more information see the +OS_NAME="Arch Linux" +OS_VERSION="${OS_VERSION:-latest}" +PACKAGES="systemd" # iptables, udev and libseccomp are part of base + +# Init process must be one of {systemd,kata-agent} +#[ "${AGENT_INIT}" = "yes" ] && INIT_PROCESS="kata-agent" || INIT_PROCESS="systemd" +#[ "${AGENT_INIT}" = "no" ] && INIT_PROCESS="systemd" || INIT_PROCESS="kata-agent" +INIT_PROCESS=systemd + +# List of zero or more architectures to exclude from build, +# as reported by `uname -m` +ARCH_EXCLUDE_LIST=() # untested + +# Allow the build to fail without generating an error. +# For more info see: https://github.com/kata-containers/osbuilder/issues/190 +BUILD_CAN_FAIL=1 diff --git a/rootfs-builder-lib.sh b/rootfs-builder-lib.sh new file mode 100644 index 000000000000..6e46182d7f4a --- /dev/null +++ b/rootfs-builder-lib.sh @@ -0,0 +1,52 @@ +#!/bin/sh -x +# - Arguments +# rootfs_dir=$1 +# +# - Optional environment variables +# +# EXTRA_PKGS: Variable to add extra PKGS provided by the user +# +# BIN_AGENT: Name of the Kata-Agent binary +# +# REPO_URL: URL to distribution repository ( should be configured in +# config.sh file) +# +# Any other configuration variable for a specific distro must be added +# and documented on its own config.sh +# +# - Expected result +# +# rootfs_dir populated with rootfs pkgs +# It must provide a binary in /sbin/init +# +# Note: For some distros, the build_rootfs() function provided in scripts/lib.sh +# will suffice. If a new distro is introduced with a special requirement, +# then, a rootfs_builder/<distro>/rootfs_lib.sh file should be created +# using this template. + +build_rootfs() { + # Mandatory + local ROOTFS_DIR="${1}" + + #Name of the Kata-Agent binary + local BIN_AGENT="${BIN_AGENT}" + + # In case of support EXTRA packages, use it to allow + # users add more packages to the base rootfs + #local EXTRA_PKGS="${EXTRA_PKGS:-}" + + #In case rootfs is created usign repositories allow user to modify + # the default URL + #local REPO_URL="${REPO_URL:-YOUR_REPO}" + + #PATH where files this script is placed + #Use it to refer to files in the same directory + #Exmaple: ${CONFIG_DIR}/foo + local CONFIG_DIR="${CONFIG_DIR}" + + # Populate ROOTFS_DIR + # Must provide /sbin/init and /bin/${BIN_AGENT} + cd "${ROOTFS_DIR}" + tar -C "${ROOTFS_DIR}" --strip-components 1 -xzf ../../../archlinux-bootstrap-2020.08.01-x86_64.tar.gz ||: + ln -sf ../lib/systemd/systemd sbin/init +} |