diff options
author | zer0def | 2020-10-26 06:39:35 +0100 |
---|---|---|
committer | zer0def | 2020-11-02 23:49:01 +0100 |
commit | 143ef58114260a632e5b0cee66a47a4072410a13 (patch) | |
tree | 851ba1c59110ec8c961765e13521f1efb986eee8 | |
parent | c05bdd28b8d16ba8fec64c143c45a2a04a7924b6 (diff) | |
download | aur-143ef58114260a632e5b0cee66a47a4072410a13.tar.gz |
PKGBUILD cleanup; initrd and image builds
-rw-r--r-- | .SRCINFO | 42 | ||||
-rw-r--r-- | PKGBUILD | 260 | ||||
-rw-r--r-- | install_kata-agent.tpl | 5 | ||||
-rw-r--r-- | install_sd-kata-agent.tpl | 7 | ||||
-rw-r--r-- | kata-agent.service.in | 24 | ||||
-rw-r--r-- | kata-containers.target | 16 | ||||
-rw-r--r-- | mkinitcpio-agent.conf | 6 |
7 files changed, 250 insertions, 110 deletions
@@ -1,24 +1,58 @@ pkgbase = kata2-containers - pkgdesc = Lightweight virtual machines for containers + pkgdesc = Lightweight virtual machines for containers, version 2 pkgver = 2.0.0 - pkgrel = 1 + pkgrel = 2 url = https://katacontainers.io/ arch = x86_64 license = Apache makedepends = go makedepends = bc makedepends = rust - makedepends = git + makedepends = yq2-bin + makedepends = mkinitcpio makedepends = udisks2 + noextract = archlinux-bootstrap-2020.11.01-x86_64.tar.gz source = kata-containers-2.0.0.tar.gz::https://github.com/kata-containers/kata-containers/archive/2.0.0.tar.gz source = https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.71.tar.xz source = https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.71.tar.sign + source = mkinitcpio-agent.conf + source = install_kata-agent.tpl + source = install_sd-kata-agent.tpl + source = kata-agent.service.in + source = kata-containers.target + source = http://mirrors.evowise.com/archlinux/iso/2020.11.01/archlinux-bootstrap-2020.11.01-x86_64.tar.gz + source = http://mirrors.evowise.com/archlinux/iso/2020.11.01/archlinux-bootstrap-2020.11.01-x86_64.tar.gz.sig + source = image_builder.sh + source = rootfs-builder-config.sh + source = rootfs-builder-lib.sh + validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E + validpgpkeys = 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC sha512sums = 3106c05aa2ab613525ef4eff545059a9af864bf0fc44f67a5966ad9a0fb27cfd6c67f5d8f004a186a0d57ae52d419bce2462a6a751723a135b4419951eb78ef7 sha512sums = 2b9c83425c3fd40abb76197e65933d1f79c60b71b3eccc6e0dcbb6748001ccbd002366cc2b61a796536166f08d831478a840bcb1e19ca0531b7f180a451e4d1c sha512sums = SKIP + sha512sums = 182a249aecbab33b8704e9567e96d33b535ee59e6d2f52f0c30fbc3d12813f60192886539cc745933caaf59268925d78db9e0b6b427321e2bac932ebde77d62e + sha512sums = 0250e52251986f36cfb9e378d848f755caaf5253daa8ff7d87172f2622754c1eb4180b338a497e3fbeb880e232eef19d5e512f5a8e610e7a6eb468f210849a08 + sha512sums = 60e2dee0afcfc52b6075309b4eeb55c75dc4a8f063274f2cd481a0056fae0e78e414f0422af26acddff93edb43a23cb52c26aefd92677160fd8eb6a685b6a6d6 + sha512sums = 8f927f482d54a762ae5c952883034355a76c5547993ed4245a434a74014aa96e6c5182e3ece0a431e075c1d2f86e99ed0d0d8d839586821c5a7cdf053ec6963d + sha512sums = b599a62d07f4451f52747eaf185142fbe8eeb9aced211369fc83d88c43483ef1008f87615fcfcf30d74a557569b89d5fcb4a61326ffc8cb0559ec51807d808ca + sha512sums = 91a3f0a1cbc7addb1941bc583b364b411e28223580980063ddc950cf4a0d247b0c40dbac6462f39d4d2f20102a8ff643b02179fa7dba685ae588962ea778c5d3 + sha512sums = SKIP + sha512sums = 6f476297d9001eef9a0665689f752cf5124907522cfc87240df16488379a5c7c9820a6e33a576dbf7f75c4fdfa7cab7a0e395b05c9339069dedbdaac42fb6c04 + sha512sums = 375990194988a019f2429ed85eb996222929a028a52ec609de106df8939704db6654af6d92aec5e192693d7758fc9561f236bbb29df319c2d506b5b2d2b16553 + sha512sums = f163aa40aea809e8cb9acdc78de6ea504e6fa608a3f71d5c62418a3f23390e006e5a6c81a0aa96a2f9319ff67ca31ae85084caf26df7bc61739f0a21a967d5ec b2sums = 818e5cf96e85d0116c350bf09666073579c1126d6c7ca23412352e0aebb0794605a42052317d2313c28e9dc24192f9436c996b202e5de5bf6868f2a2b22aba6f b2sums = 450f91dd84df37cb16c6937e2a4cc55a8b2e5046b6396685cf2ae5a733a925ed5502944b5a60a1056827c788407fa3f916e04b48b9c8e3d68df6b0830039ff0b b2sums = SKIP + b2sums = 43c81141a65fd14b60ae72c5b98168bec531990903cc7c8b224b416c71d1d05c1cf3f73891954604e0b0c6f48c52a3a41a8e9e78874a79e72b14282373108e8b + b2sums = 9abf2208af353019ba177d8a48ba613401742cd21258a79c5d9cb8518a51f4f22a41dc386b71f2d6521d03f6ff65d8710dc59d1ca9c7c1dc5f94061c7374286c + b2sums = 1ce51ec8cfac8149e3d421d58ec4cb5df2119f4c4d6371da3406297f87a35b6453a9a91bfce9b3b6ac81945b9c8c8237d5818b7321198635614148a8001e3da7 + b2sums = 8b5371fe7b1858dc61dcf4153b58f9c7a5ba564299d657c2bc4eac2328801346e9ca3f6f441dcca710e89495e5b7f9d35b002a8e031eb3cbd4a4fa850566309a + b2sums = 60bb47bec6e35ccc460ac066d7205d084ab8bdc7d1749918ce0497983a6e7eb770ca9fd996f44b05dbdbfc35390bf2d02b7e8abc619fa6d9df298988d5f19053 + b2sums = ce8bfce07a121780e6a09f2b652b0be3fb3c728cd0cccedaad4add394784a6ded18c5163d2a999fc8043cdc9eb6fc347aa6a26a990b31f1f4a445f83460eccc3 + b2sums = SKIP + b2sums = 1745aa5d5df0af2452381de163e3964511172e045c13736a062bb2c932e3306250d24992b2bdbc534ced188b35d3b1f4958a5680c99356afd3097d11c84aee31 + b2sums = a0d55c2fbd3d94859c156e7f68033091430d523e374a7058cbcbe029cb9dc41c5c6c56560425c698438f66ab3754423f656885962ac40d8cd5aeb2f8039a77c9 + b2sums = f1be90935e6201bb8d0c911d75d3c5f52ee6530ea8cd7b42f405bd09485e89e0465dcfe01648d2e3efe20bd19a84c19ae19f907ed1de90e940d9891c945393f6 pkgname = kata2-agent @@ -32,3 +66,5 @@ pkgname = kata2-runtime pkgname = kata2-linux-container +pkgname = kata2-containers-image + @@ -7,71 +7,87 @@ pkgname=( kata2-agent kata2-runtime kata2-linux-container - - # this doesn't work, but exists for completeness of source build - #kata2-containers-image + kata2-containers-image ) pkgver=2.0.0 _pkgver=${pkgver/\~/-} -pkgrel=1 -pkgdesc="Lightweight virtual machines for containers" +pkgrel=2 +pkgdesc="Lightweight virtual machines for containers, version 2" arch=('x86_64') url="https://katacontainers.io/" license=('Apache') -makedepends=('go' 'bc' 'rust' 'git' 'udisks2') +makedepends=( + 'go' 'bc' 'rust' + 'yq2-bin' # quietly pulled by Kata's codebase to read versions.yaml from repo + 'mkinitcpio' # initrd build + 'udisks2' # rootless image build +) _gh_org="github.com/kata-containers" -_kata_kernel_ver="5.4.71" -_arch_bootstrap_ver="2020.10.01" - -source=("${_pkgbase}-${_pkgver}.tar.gz::https://${_gh_org}/kata-containers/archive/${_pkgver}.tar.gz") -sha512sums=(3106c05aa2ab613525ef4eff545059a9af864bf0fc44f67a5966ad9a0fb27cfd6c67f5d8f004a186a0d57ae52d419bce2462a6a751723a135b4419951eb78ef7) -b2sums=(818e5cf96e85d0116c350bf09666073579c1126d6c7ca23412352e0aebb0794605a42052317d2313c28e9dc24192f9436c996b202e5de5bf6868f2a2b22aba6f) - -if [[ " ${pkgname[@]} " =~ " kata2-linux-container " ]]; then - source+=( - "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${_kata_kernel_ver}.tar.xz" - "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${_kata_kernel_ver}.tar.sign" - ) - sha512sums+=( - 2b9c83425c3fd40abb76197e65933d1f79c60b71b3eccc6e0dcbb6748001ccbd002366cc2b61a796536166f08d831478a840bcb1e19ca0531b7f180a451e4d1c - SKIP - ) - b2sums+=( - 450f91dd84df37cb16c6937e2a4cc55a8b2e5046b6396685cf2ae5a733a925ed5502944b5a60a1056827c788407fa3f916e04b48b9c8e3d68df6b0830039ff0b - SKIP - ) - _build_kernel="yes" -fi - -if [[ " ${pkgname[@]} " =~ " kata2-containers-image " ]]; then - source+=( - "http://mirrors.evowise.com/archlinux/iso/${_arch_bootstrap_ver}/archlinux-bootstrap-${_arch_bootstrap_ver}-x86_64.tar.gz" - "http://mirrors.evowise.com/archlinux/iso/${_arch_bootstrap_ver}/archlinux-bootstrap-${_arch_bootstrap_ver}-x86_64.tar.gz.sig" - - "image_builder.sh" - "rootfs-builder-config.sh" - "rootfs-builder-lib.sh" - ) - sha512sums+=( - 0bbe8fd91b3f38b6035a72ba71bb2dd006a39dc13fd4c9b6dba6369f9d0ef8f0471ad96052a78cacd81572ef9fffe4694bdb8d14cc9053a0aaa628aec8bc47e2 - SKIP - - 6f476297d9001eef9a0665689f752cf5124907522cfc87240df16488379a5c7c9820a6e33a576dbf7f75c4fdfa7cab7a0e395b05c9339069dedbdaac42fb6c04 - 375990194988a019f2429ed85eb996222929a028a52ec609de106df8939704db6654af6d92aec5e192693d7758fc9561f236bbb29df319c2d506b5b2d2b16553 - f163aa40aea809e8cb9acdc78de6ea504e6fa608a3f71d5c62418a3f23390e006e5a6c81a0aa96a2f9319ff67ca31ae85084caf26df7bc61739f0a21a967d5ec - ) - b2sums+=( - 5053da704b1d908ee2b413cb4f8c8d330035b8081cdeeb2e78191b2f67f3fc25c36b47db906a113c0c99134381162bc6660a47f4915d71599cfa8294a6398470 - SKIP - - 1745aa5d5df0af2452381de163e3964511172e045c13736a062bb2c932e3306250d24992b2bdbc534ced188b35d3b1f4958a5680c99356afd3097d11c84aee31 - a0d55c2fbd3d94859c156e7f68033091430d523e374a7058cbcbe029cb9dc41c5c6c56560425c698438f66ab3754423f656885962ac40d8cd5aeb2f8039a77c9 - f1be90935e6201bb8d0c911d75d3c5f52ee6530ea8cd7b42f405bd09485e89e0465dcfe01648d2e3efe20bd19a84c19ae19f907ed1de90e940d9891c945393f6 - ) - noextract=("archlinux-bootstrap-${_arch_bootstrap_ver}-x86_64.tar.gz") - _build_images="yes" -fi +_kata_kernel_ver="${KATA_KERNEL_VER:-5.4.71}" +_arch_bootstrap_ver="${ARCH_BOOTSTRAP_VER:-2020.11.01}" + +source=( + "${_pkgbase}-${_pkgver}.tar.gz::https://${_gh_org}/kata-containers/archive/${_pkgver}.tar.gz" + "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${_kata_kernel_ver}.tar.xz" + "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${_kata_kernel_ver}.tar.sign" + + # mknitcpio-busybox + "mkinitcpio-agent.conf" + "install_kata-agent.tpl" + + # mknitpcio-systemd + "install_sd-kata-agent.tpl" + "kata-agent.service.in" + "kata-containers.target" + + # image build + "http://mirrors.evowise.com/archlinux/iso/${_arch_bootstrap_ver}/archlinux-bootstrap-${_arch_bootstrap_ver}-x86_64.tar.gz" + "http://mirrors.evowise.com/archlinux/iso/${_arch_bootstrap_ver}/archlinux-bootstrap-${_arch_bootstrap_ver}-x86_64.tar.gz.sig" + "image_builder.sh" + "rootfs-builder-config.sh" + "rootfs-builder-lib.sh" +) +sha512sums=( + "3106c05aa2ab613525ef4eff545059a9af864bf0fc44f67a5966ad9a0fb27cfd6c67f5d8f004a186a0d57ae52d419bce2462a6a751723a135b4419951eb78ef7" + "${KATA_KERNEL_SUM_SHA512:-2b9c83425c3fd40abb76197e65933d1f79c60b71b3eccc6e0dcbb6748001ccbd002366cc2b61a796536166f08d831478a840bcb1e19ca0531b7f180a451e4d1c}" + "SKIP" + + "182a249aecbab33b8704e9567e96d33b535ee59e6d2f52f0c30fbc3d12813f60192886539cc745933caaf59268925d78db9e0b6b427321e2bac932ebde77d62e" + "0250e52251986f36cfb9e378d848f755caaf5253daa8ff7d87172f2622754c1eb4180b338a497e3fbeb880e232eef19d5e512f5a8e610e7a6eb468f210849a08" + + "60e2dee0afcfc52b6075309b4eeb55c75dc4a8f063274f2cd481a0056fae0e78e414f0422af26acddff93edb43a23cb52c26aefd92677160fd8eb6a685b6a6d6" + "8f927f482d54a762ae5c952883034355a76c5547993ed4245a434a74014aa96e6c5182e3ece0a431e075c1d2f86e99ed0d0d8d839586821c5a7cdf053ec6963d" + "b599a62d07f4451f52747eaf185142fbe8eeb9aced211369fc83d88c43483ef1008f87615fcfcf30d74a557569b89d5fcb4a61326ffc8cb0559ec51807d808ca" + + "${ARCH_BOOTSTRAP_SUM_SHA512:-91a3f0a1cbc7addb1941bc583b364b411e28223580980063ddc950cf4a0d247b0c40dbac6462f39d4d2f20102a8ff643b02179fa7dba685ae588962ea778c5d3}" + "SKIP" + "6f476297d9001eef9a0665689f752cf5124907522cfc87240df16488379a5c7c9820a6e33a576dbf7f75c4fdfa7cab7a0e395b05c9339069dedbdaac42fb6c04" + "375990194988a019f2429ed85eb996222929a028a52ec609de106df8939704db6654af6d92aec5e192693d7758fc9561f236bbb29df319c2d506b5b2d2b16553" + "f163aa40aea809e8cb9acdc78de6ea504e6fa608a3f71d5c62418a3f23390e006e5a6c81a0aa96a2f9319ff67ca31ae85084caf26df7bc61739f0a21a967d5ec" +) +b2sums=( + "818e5cf96e85d0116c350bf09666073579c1126d6c7ca23412352e0aebb0794605a42052317d2313c28e9dc24192f9436c996b202e5de5bf6868f2a2b22aba6f" + "${KATA_KERNEL_SUM_B2:-450f91dd84df37cb16c6937e2a4cc55a8b2e5046b6396685cf2ae5a733a925ed5502944b5a60a1056827c788407fa3f916e04b48b9c8e3d68df6b0830039ff0b}" + "SKIP" + + "43c81141a65fd14b60ae72c5b98168bec531990903cc7c8b224b416c71d1d05c1cf3f73891954604e0b0c6f48c52a3a41a8e9e78874a79e72b14282373108e8b" + "9abf2208af353019ba177d8a48ba613401742cd21258a79c5d9cb8518a51f4f22a41dc386b71f2d6521d03f6ff65d8710dc59d1ca9c7c1dc5f94061c7374286c" + "1ce51ec8cfac8149e3d421d58ec4cb5df2119f4c4d6371da3406297f87a35b6453a9a91bfce9b3b6ac81945b9c8c8237d5818b7321198635614148a8001e3da7" + "8b5371fe7b1858dc61dcf4153b58f9c7a5ba564299d657c2bc4eac2328801346e9ca3f6f441dcca710e89495e5b7f9d35b002a8e031eb3cbd4a4fa850566309a" + "60bb47bec6e35ccc460ac066d7205d084ab8bdc7d1749918ce0497983a6e7eb770ca9fd996f44b05dbdbfc35390bf2d02b7e8abc619fa6d9df298988d5f19053" + + "${ARCH_BOOTSTRAP_SUM_B2:-ce8bfce07a121780e6a09f2b652b0be3fb3c728cd0cccedaad4add394784a6ded18c5163d2a999fc8043cdc9eb6fc347aa6a26a990b31f1f4a445f83460eccc3}" + "SKIP" + "1745aa5d5df0af2452381de163e3964511172e045c13736a062bb2c932e3306250d24992b2bdbc534ced188b35d3b1f4958a5680c99356afd3097d11c84aee31" + "a0d55c2fbd3d94859c156e7f68033091430d523e374a7058cbcbe029cb9dc41c5c6c56560425c698438f66ab3754423f656885962ac40d8cd5aeb2f8039a77c9" + "f1be90935e6201bb8d0c911d75d3c5f52ee6530ea8cd7b42f405bd09485e89e0465dcfe01648d2e3efe20bd19a84c19ae19f907ed1de90e940d9891c945393f6" +) +noextract=("archlinux-bootstrap-${_arch_bootstrap_ver}-x86_64.tar.gz") +validpgpkeys=( + 647F28654894E3BD457199BE38DBBDC86092693E # kernel + 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC # arch +) case "${CARCH}" in x86_64) _KARCH=x86_64;; @@ -80,83 +96,112 @@ case "${CARCH}" in ppc64le) _KARCH=powerpc;; esac -prepare(){ - if [ "${_build_kernel}" = "yes" ]; then - # kata2-linux-container prep (ref: https://github.com/kata-containers/packaging/tree/master/kernel ) - cd "${srcdir}/linux-${_kata_kernel_ver}" - #for p in $(find "${srcdir}/${_pkgbase}-${_pkgver}/tools/packaging/kernel/patches" -type f -name "*.patch"); do - # patch -p1 <"${p}" - #done - - # kernel config prep from upstream ("${srcdir}/${_pkgbase}-${_pkgver}/tools/packaging/obs-packaging/linux-container/kata-linux-container.spec-template") - make -s mrproper - rm -f .config - - _KCONFIG="$(find "${srcdir}/${_pkgbase}-${_pkgver}/tools/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}/${_pkgbase}-${_pkgver}/tools/packaging/kernel/configs/fragments/common/"*.conf "${srcdir}/${_pkgbase}-${_pkgver}/tools/packaging/kernel/configs/fragments/${_KARCH}/"*.conf - else - install -Dm 0644 "${_KCONFIG}" .config - fi - make -s ARCH="${_KARCH}" oldconfig +_kernel_prepare(){ + # kata2-linux-container prep (ref: https://github.com/kata-containers/packaging/tree/master/kernel ) + cd "${srcdir}/linux-${_kata_kernel_ver}" + #for p in $(find "${srcdir}/${_pkgbase}-${_pkgver}/tools/packaging/kernel/patches" -type f -name "*.patch"); do + # patch -p1 <"${p}" + #done + + # kernel config prep from upstream ("${srcdir}/${_pkgbase}-${_pkgver}/tools/packaging/obs-packaging/linux-container/kata-linux-container.spec-template") + make -s mrproper + rm -f .config + + local -r _KCONFIG="$(find "${srcdir}/${_pkgbase}-${_pkgver}/tools/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}/${_pkgbase}-${_pkgver}/tools/packaging/kernel/configs/fragments/common/"*.conf "${srcdir}/${_pkgbase}-${_pkgver}/tools/packaging/kernel/configs/fragments/${_KARCH}/"*.conf + else + install -Dm 0644 "${_KCONFIG}" .config fi + make -s ARCH="${_KARCH}" oldconfig +} + +prepare(){ + _kernel_prepare + + install -dm0755 "${srcdir}/bin" + ln -sf "$(type -p yq)" "${srcdir}/bin/yq" + + # agent-based initrd + BINSRC="${srcdir}/${_pkgbase}-${_pkgver}/src/agent/target/${_KARCH}-unknown-linux-gnu/release/kata-agent" envsubst <"${srcdir}/install_kata-agent.tpl" >"${srcdir}/install_kata-agent" + install -Dm0644 "${srcdir}/install_kata-agent" "${srcdir}/initcpio-agent/install/kata-agent" + + # systemd units + install -Dm0644 "${srcdir}/kata-agent.service.in" "${srcdir}/${_pkgbase}-${_pkgver}/src/agent/kata-agent.service.in" + install -Dm0644 "${srcdir}/kata-containers.target" "${srcdir}/${_pkgbase}-${_pkgver}/src/agent/kata-containers.target" + + # systemd-based initrd + SRCDIR="${srcdir}/${_pkgbase}-${_pkgver}/src/agent" KARCH="${_KARCH}" envsubst <"${srcdir}/install_sd-kata-agent.tpl" >"${srcdir}/install_sd-kata-agent" + install -Dm0644 "${srcdir}/install_sd-kata-agent" "${srcdir}/initcpio-systemd/install/sd-kata-agent" # remove subrepos without the `install` makefile target sed -i \ -e '/COMPONENTS += trace-forwarder/d' \ -e '/TOOLS += agent-ctl/d' \ "${srcdir}/${_pkgbase}-${_pkgver}/Makefile" - [ "${_build_images}" = "yes" ] && install -m0755 "${srcdir}/image_builder.sh" "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/image-builder/image_builder.sh" ||: + install -m0755 "${srcdir}/image_builder.sh" "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/image-builder/image_builder.sh" } -build(){ - cd "${srcdir}/${_pkgbase}-${_pkgver}" - GOPATH="${srcdir}" make BINDIR="/usr/bin" PKGLIBEXECDIR="/usr/lib/kata-containers" LIBEXECDIR="/usr/lib" LIBC=gnu +_kata_image_build() { + # image build (it's horrid, but works without root) + local -r _ROOTFS_DIR="${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder/rootfs" - if [ "${_build_kernel}" = "yes" ]; then - # kernel build - cd "${srcdir}/linux-${_kata_kernel_ver}" - echo "Building kata2-linux-container…" - make -s ARCH="${_KARCH}" - fi + # build rootfs + install -Dm 0644 "${srcdir}/rootfs-builder-config.sh" "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder/archlinux/config.sh" + install -Dm 0644 "${srcdir}/rootfs-builder-lib.sh" "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder/archlinux/rootfs_lib.sh" - if [ "${_build_images}" = "yes" ]; then - # rootfs and initrd build (it's horrid, but somewhat works) - _ROOTFS_DIR="${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder/rootfs" + cd "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder" + GOPATH="${srcdir}" AGENT_SOURCE_BIN="${srcdir}/${_pkgbase}-${_pkgver}/src/agent/target/${_KARCH}-unknown-linux-gnu/release/kata-agent" ROOTFS_DIR="${_ROOTFS_DIR}" ARCH_BOOTSTRAP_VER="${_arch_bootstrap_ver}" fakeroot -- ./rootfs.sh archlinux - # build rootfs - install -Dm 0644 "${srcdir}/rootfs-builder-config.sh" "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder/archlinux/config.sh" - install -Dm 0644 "${srcdir}/rootfs-builder-lib.sh" "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder/archlinux/rootfs_lib.sh" + install -Dm0644 "${srcdir}/${_pkgbase}-${_pkgver}/src/agent/kata-containers.target" "${_ROOTFS_DIR}/usr/lib/systemd/system/kata-containers.target" + sed -e 's#@BINDIR@#/usr/bin#' -e 's#@AGENT_NAME@#kata-agent#' "${srcdir}/${_pkgbase}-${_pkgver}/src/agent/kata-agent.service.in" >"${_ROOTFS_DIR}/usr/lib/systemd/system/kata-agent.service" - cd "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/rootfs-builder" - GOPATH="${srcdir}" AGENT_SOURCE_BIN="${srcdir}/${_pkgbase}-${_pkgver}/src/agent/target/${_KARCH}-unknown-linux-gnu/release/kata-agent" ROOTFS_DIR="${_ROOTFS_DIR}" ARCH_BOOTSTRAP_VER="${_arch_bootstrap_ver}" fakeroot -- ./rootfs.sh archlinux + # might not be entirely necessary + pushd "${_ROOTFS_DIR}/etc/systemd/system/multi-user.target.wants" + ln -sf ../../../../usr/lib/systemd/system/kata-containers.target + popd - # rootfs image (builds filesystem with uid:gid of building system user! beware!) - cd "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/image-builder" - ./image_builder.sh -f ext4 "${_ROOTFS_DIR}" + # rootfs image (builds filesystem with uid:gid of building system user! beware!) + cd "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/image-builder" + ./image_builder.sh -f ext4 "${_ROOTFS_DIR}" +} - # initrd - cd "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/initrd-builder" - ./initrd_builder.sh "${_ROOTFS_DIR}" - fi +build(){ + cd "${srcdir}/${_pkgbase}-${_pkgver}" + GOPATH="${srcdir}" make BINDIR="/usr/bin" PKGLIBEXECDIR="/usr/lib/kata-containers" LIBEXECDIR="/usr/lib" LIBC=gnu + + # kernel build + cd "${srcdir}/linux-${_kata_kernel_ver}" + make -s ARCH="${_KARCH}" + + mkinitcpio -c "${srcdir}/mkinitcpio-agent.conf" -g "${srcdir}/initrd-arch-agent.img" -D "${srcdir}/initcpio-agent" + #mkinitcpio -c "${srcdir}/mkinitcpio-systemd.conf" -g "${srcdir}/initrd-arch-systemd.img" -D "${srcdir}/initcpio-systemd" + _kata_image_build } package_kata2-agent(){ cd "${srcdir}/${_pkgbase}-${_pkgver}/src/agent" GOPATH="${srcdir}" make install DESTDIR="${pkgdir}" BINDIR="/usr/bin" PKGLIBEXECDIR="/usr/lib/kata-containers" LIBEXECDIR="/usr/lib" LIBC=gnu + + # install hooks + install -dm0755 "${pkgdir}/usr/lib/initcpio/install" + BINSRC="/usr/bin/kata-agent" envsubst <"${srcdir}/install_kata-agent.tpl" >"${pkgdir}/usr/lib/initcpio/install/kata-agent" + #SRCDIR="${srcdir}/${_pkgbase}-${_pkgver}/src/agent" KARCH="${_KARCH}" envsubst <"${srcdir}/install_sd-kata-agent.tpl" >"${srcdir}/install_sd-kata-agent" } package_kata2-containers-image(){ - install -Dm 0644 "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/image-builder/kata-containers.img" "${pkgdir}/usr/share/kata-containers/kata-containers-image_archlinux_${_pkgver%%~*}_agent.img" - install -Dm 0644 "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/initrd-builder/kata-containers-initrd.img" "${pkgdir}/usr/share/kata-containers/kata-containers-initrd_archlinux_${_pkgver%%~*}_agent.initrd" - cd "${pkgdir}/usr/share/kata-containers" - ln -sf "kata-containers-image_archlinux_${_pkgver%%~*}_agent.img" "kata-containers.img" - ln -sf "kata-containers-initrd_archlinux_${_pkgver%%~*}_agent.initrd" "kata-containers-initrd.img" + local -r _img_filename="kata-containers-${_pkgver%%~*}-arch-systemd-image.img" _initrd_filename="kata-containers-${_pkgver%%~*}-arch-agent-initrd.img" + install -Dm 0644 "${srcdir}/${_pkgbase}-${_pkgver}/tools/osbuilder/image-builder/kata-containers.img" "${pkgdir}/usr/share/kata-containers/${_img_filename}" + install -Dm 0644 "${srcdir}/initrd-arch-agent.img" "${pkgdir}/usr/share/kata-containers/${_initrd_filename}" + pushd "${pkgdir}/usr/share/kata-containers" + ln -sf "${_img_filename}" "kata-containers-arch.img" + ln -sf "${_initrd_filename}" "kata-containers-arch-initrd.img" + popd } package_kata2-linux-container(){ install -Dm 0644 "${srcdir}/linux-${_kata_kernel_ver}/vmlinux" "${pkgdir}/usr/share/kata-containers/vmlinux-${_kata_kernel_ver}.container" - cd "${pkgdir}/usr/share/kata-containers" + pushd "${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" @@ -166,6 +211,7 @@ package_kata2-linux-container(){ install -Dm 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 + popd } package_kata2-runtime(){ diff --git a/install_kata-agent.tpl b/install_kata-agent.tpl new file mode 100644 index 000000000000..6873c78824a4 --- /dev/null +++ b/install_kata-agent.tpl @@ -0,0 +1,5 @@ +#!/bin/bash + +build(){ + add_binary "${BINSRC}" "/init" +} diff --git a/install_sd-kata-agent.tpl b/install_sd-kata-agent.tpl new file mode 100644 index 000000000000..57a7a932f898 --- /dev/null +++ b/install_sd-kata-agent.tpl @@ -0,0 +1,7 @@ +#!/bin/bash + +build(){ + add_systemd_unit "${SRCDIR}/kata-containers.target" + add_systemd_unit "${SRCDIR}/kata-agent.service" + add_binary "${SRCDIR}/target/${KARCH}-unknown-linux-gnu/release/kata-agent" +} diff --git a/kata-agent.service.in b/kata-agent.service.in new file mode 100644 index 000000000000..0340bdbbbd54 --- /dev/null +++ b/kata-agent.service.in @@ -0,0 +1,24 @@ +# +# Copyright (c) 2018-2019 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +[Unit] +Description=Kata Containers Agent +Documentation=https://github.com/kata-containers/kata-containers +Wants=kata-containers.target +#ConditionPathExists=/etc/initrd-release +#DefaultDependencies=no + +[Service] +# Send agent output to tty to allow capture debug logs +# from a VM vsock port +StandardOutput=tty +Type=simple +ExecStart=@BINDIR@/@AGENT_NAME@ +LimitNOFILE=infinity +# ExecStop is required for static agent tracing; in all other scenarios +# the runtime handles shutting down the VM. +ExecStop=/bin/sync ; /usr/bin/systemctl --force poweroff +FailureAction=poweroff diff --git a/kata-containers.target b/kata-containers.target new file mode 100644 index 000000000000..03f370075ee5 --- /dev/null +++ b/kata-containers.target @@ -0,0 +1,16 @@ +# +# Copyright (c) 2018-2019 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +[Unit] +Description=Kata Containers Agent Target +Requires=basic.target +Requires=tmp.mount +Wants=chronyd.service +Requires=kata-agent.service +Conflicts=rescue.service rescue.target +After=basic.target rescue.service rescue.target +AllowIsolate=yes +#ConditionPathExists=/etc/initrd-release diff --git a/mkinitcpio-agent.conf b/mkinitcpio-agent.conf new file mode 100644 index 000000000000..1a36f26aab64 --- /dev/null +++ b/mkinitcpio-agent.conf @@ -0,0 +1,6 @@ +MODULES=() +BINARIES=() +FILES=() +HOOKS=(kata-agent) +#COMPRESSION="gzip" +#COMPRESSION_OPTIONS=() |