diff options
Diffstat (limited to 'external/meta-virtualization/recipes-core/runx')
3 files changed, 232 insertions, 0 deletions
diff --git a/external/meta-virtualization/recipes-core/runx/runx/0001-make-initrd-cross-install-tweaks.patch b/external/meta-virtualization/recipes-core/runx/runx/0001-make-initrd-cross-install-tweaks.patch new file mode 100644 index 00000000..c9fdc5d6 --- /dev/null +++ b/external/meta-virtualization/recipes-core/runx/runx/0001-make-initrd-cross-install-tweaks.patch @@ -0,0 +1,42 @@ +From d8bd5749e6fc6e0c86a8720044ec78167bab3569 Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@xilinx.com> +Date: Mon, 16 Dec 2019 22:03:14 -0800 +Subject: [PATCH] make-initrd: cross install tweaks + +Signed-off-by: Bruce Ashfield <bruce.ashfield@xilinx.com> +--- + kernel/make-initrd | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/kernel/make-initrd b/kernel/make-initrd +index 4c299dc..9ef386f 100755 +--- a/kernel/make-initrd ++++ b/kernel/make-initrd +@@ -16,8 +16,22 @@ mkdir -p $tmpdir/sys + mkdir -p $tmpdir/lib + mkdir -p $tmpdir/var + mkdir -p $tmpdir/mnt +-cp `which busybox` $tmpdir/bin +-$tmpdir/bin/busybox --install $tmpdir/bin ++ ++ ++if [ -z "$BUSYBOX" ]; then ++ BUSYBOX=`which busybox` ++fi ++cp $BUSYBOX $tmpdir/bin ++if [ -n "$CROSS_COMPILE" ]; then ++ echo "cross compiling, busybox --install emulation" ++ if [ -n "$QEMU_USER" ]; then ++ $QEMU_USER $tmpdir/bin/busybox --install $tmpdir/bin ++ else ++ echo "QEMU_USER is not defined, no binary symlinks will be available" ++ fi ++else ++ $tmpdir/bin/busybox --install $tmpdir/bin ++fi + + cp $init $tmpdir/init + chmod +x $tmpdir/init +-- +2.17.1 + diff --git a/external/meta-virtualization/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch b/external/meta-virtualization/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch new file mode 100644 index 00000000..7d66f421 --- /dev/null +++ b/external/meta-virtualization/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch @@ -0,0 +1,86 @@ +From 7e3498ab7c375bd545de501920acffa77eb24120 Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@xilinx.com> +Date: Mon, 16 Dec 2019 20:42:04 -0800 +Subject: [PATCH] make-kernel: cross-compilation tweaks + +Signed-off-by: Bruce Ashfield <bruce.ashfield@xilinx.com> +--- + kernel/make-kernel | 41 +++++++++++++++++++++++++++++++++-------- + 1 file changed, 33 insertions(+), 8 deletions(-) + +diff --git a/kernel/make-kernel b/kernel/make-kernel +index 33b7150..c684669 100755 +--- a/kernel/make-kernel ++++ b/kernel/make-kernel +@@ -13,6 +13,7 @@ fi + + kernel_stuffdir=`readlink -f kernel` + kernel_outpath=$kernel_stuffdir/out ++kernel_srcdir=$kernel_stuffdir/src + kernel_builddir=$kernel_stuffdir/build + kernel_out=$kernel_outpath/kernel + +@@ -22,28 +23,52 @@ kernel_tarball="$kernel_name".tar.xz + kernel_url=https://www.kernel.org/pub/linux/kernel/v4.x/"$kernel_tarball" + kernel_src_config="$kernel_stuffdir"/cutdown-config.$ARCH + kernel_patchesdir="$kernel_stuffdir"/patches +-kernel_image="$kernel_builddir"/"$kernel_name"/arch/"$ARCH"/boot/"$image" ++kernel_image="$kernel_builddir"/arch/"$ARCH"/boot/"$image" + ++echo "#########################" ++echo "kernel build summary:" ++echo " version: $kernel_version" ++echo " url: $kernel_url" ++echo " src dir: $kernel_srcdir" ++echo " out dir: $kernel_builddir" ++echo " artifacts: $kernel_out" ++echo " image: $image" ++echo " build vars: $build_vars" ++echo "#########################" + +-rm -rf $kernel_outpath ++if [ ! -e "$kernel_builddir/.config" ]; ++then ++ rm -rf $kernel_buildir ++fi + mkdir -p $kernel_outpath + mkdir -p $kernel_builddir ++mkdir -p $kernel_srcdir + + if [[ ! -f $kernel_builddir/$kernel_tarball ]] + then ++ echo "fetching the kernel .." + wget -O $kernel_builddir/$kernel_tarball --tries=20 $kernel_url + fi +-if [[ ! -d $kernel_builddir/$kernel_name ]] ++ ++if [[ ! -d $kernel_srcdir/$kernel_name ]] + then +- tar --extract --xz --touch --file="$kernel_builddir/$kernel_tarball" --directory="$kernel_builddir" +- cd $kernel_builddir/$kernel_name ++ echo "extracting the kernel ..." ++ echo " tar --extract --xz --touch --file=\"$kernel_builddir/$kernel_tarball\" --directory=\"$kernel_srcdir\"" ++ tar --extract --xz --touch --file="$kernel_builddir/$kernel_tarball" --directory="$kernel_srcdir" ++ cd $kernel_srcdir/$kernel_name + for i in $kernel_patchesdir/* + do + patch -p1 < $i + done +- cp $kernel_src_config .config + fi +-cd $kernel_builddir/$kernel_name +-make -j4 $image ++if [[ ! -f $kernel_builddir/.config ]] ++then ++ cp $kernel_src_config $kernel_builddir/.config ++fi ++cd $kernel_srcdir/$kernel_name ++ ++echo "building the kernel ..." ++eval make O=$kernel_builddir $build_vars oldconfig ++eval make -j4 O=$kernel_builddir $build_vars $image + + cp $kernel_image $kernel_out +-- +2.17.1 + diff --git a/external/meta-virtualization/recipes-core/runx/runx_git.bb b/external/meta-virtualization/recipes-core/runx/runx_git.bb new file mode 100644 index 00000000..3b4cd335 --- /dev/null +++ b/external/meta-virtualization/recipes-core/runx/runx_git.bb @@ -0,0 +1,104 @@ +HOMEPAGE = "https://github.com/lf-edge/runx" +SUMMARY = "runx stuff" +DESCRIPTION = "Xen Runtime for OCI" + +SRCREV_runx = "da0c75c58ae5232d19b1791c33545db3225e1ea9" +SRC_URI = "\ + git://github.com/lf-edge/runx;nobranch=1;name=runx \ + https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.15.tar.xz;destsuffix=git/kernel/build \ + file://0001-make-kernel-cross-compilation-tweaks.patch \ + file://0001-make-initrd-cross-install-tweaks.patch \ + " +SRC_URI[md5sum] = "0d701ac1e2a67d47ce7127432df2c32b" +SRC_URI[sha256sum] = "5a26478906d5005f4f809402e981518d2b8844949199f60c4b6e1f986ca2a769" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=945fc9aa694796a6337395cc291ddd8c" + +S = "${WORKDIR}/git" +PV = "0.1-git${SRCREV_runx}" + +inherit features_check +REQUIRED_DISTRO_FEATURES = "vmsep" + +inherit pkgconfig +# for the kernel build +inherit kernel-arch + +# we have a busybox bbappend that makes /bin available to the +# sysroot, and hence gets us the target binary that we need +DEPENDS = "busybox go-build" + +# for the kernel build phase +DEPENDS += "openssl-native coreutils-native util-linux-native xz-native bc-native" +DEPENDS += "qemu-native" + +RDEPENDS_${PN} += " jq bash" +RDEPENDS_${PN} += " xen-tools-xl go-build socat daemonize" + +do_compile() { + # we'll need this for the initrd later, so lets error if it isn't what + # we expect (statically linked) + file ${STAGING_DIR_HOST}/bin/busybox.nosuid + + # prep steps to short circuit some of make-kernel's fetching and + # building. + mkdir -p ${S}/kernel/build + mkdir -p ${S}/kernel/src + cp ${DL_DIR}/linux-4.15.tar.xz ${S}/kernel/build/ + + # In the future, we might want to link the extracted kernel source (if + # we move patches to recipe space, but for now, we need make-kernel to + # extract a copy and possibly patch it. + # ln -sf ${WORKDIR}/linux-4.15 ${S}/kernel/src/ + + # build the kernel + echo "[INFO]: runx: building the kernel" + + export KERNEL_CC="${KERNEL_CC}" + export KERNEL_LD="${KERNEL_LD}" + export ARCH="${ARCH}" + export HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" + export HOSTCPP="${BUILD_CPP}" + export CROSS_COMPILE="${CROSS_COMPILE}" + export build_vars="HOSTCC='$HOSTCC' STRIP='$STRIP' OBJCOPY='$OBJCOPY' ARCH=$ARCH CC='$KERNEL_CC' LD='$KERNEL_LD'" + + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE + + # We want make-kernel, to have the following build lines: + # make O=$kernel_builddir HOSTCC="${HOSTCC}" ARCH=$ARCH oldconfig + # make -j4 O=$kernel_builddir HOSTCC="${HOSTCC}" STRIP="$STRIP" OBJCOPY="$OBJCOPY" ARCH=$ARCH CC="$KERNEL_CC" LD="$KERNEL_LD" $image + ${S}/kernel/make-kernel + + # construct the initrd + echo "[INFO]: runx: constructing the initrd" + + cp ${STAGING_DIR_HOST}/bin/busybox.nosuid ${WORKDIR}/busybox + export QEMU_USER=`which qemu-${HOST_ARCH}` + export BUSYBOX="${WORKDIR}/busybox" + export CROSS_COMPILE="t" + ${S}/kernel/make-initrd +} + +do_install() { + install -d ${D}${bindir} + install -m 755 ${S}/runX ${D}${bindir} + + install -d ${D}${datadir}/runX + install -m 755 ${S}/kernel/out/kernel ${D}/${datadir}/runX + install -m 755 ${S}/kernel/out/initrd ${D}/${datadir}/runX + install -m 755 ${S}/files/start ${D}/${datadir}/runX + install -m 755 ${S}/files/state ${D}/${datadir}/runX + install -m 755 ${S}/files/delete ${D}/${datadir}/runX + install -m 755 ${S}/files/serial_bridge ${D}/${datadir}/runX + install -m 755 ${S}/files/serial_start ${D}/${datadir}/runX + + +} + +deltask compile_ptest_base + +FILES_${PN} += "${bindir}/* ${datadir}/runX/*" + +INHIBIT_PACKAGE_STRIP = "1" +INSANE_SKIP_${PN} += "ldflags already-stripped" |