summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorzer0def2020-08-29 09:15:23 +0200
committerzer0def2020-08-29 18:35:21 +0200
commitc64ed7d7120045ef2c08123b7184846ed9fc2004 (patch)
tree15b5509816e35419640d2ed91ac3a8c25104d5e0
parent24d469f4a12161f45b8cb9ba6d1fba2df6851c19 (diff)
downloadaur-c64ed7d7120045ef2c08123b7184846ed9fc2004.tar.gz
Bypass broken yq makedep pull.
-rw-r--r--.SRCINFO22
-rw-r--r--0001-osbuilder-goversion.patch13
-rw-r--r--PKGBUILD145
-rw-r--r--rootfs-builder-Dockerfile.in16
-rw-r--r--rootfs-builder-config.sh19
-rw-r--r--rootfs-builder-lib.sh52
6 files changed, 248 insertions, 19 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 344a6eb56761..d5e3ddcc7f20 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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}"
diff --git a/PKGBUILD b/PKGBUILD
index 2d1f27d3e95d..334faa7c4b25 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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
+}