summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2019-12-28 10:41:02 +0100
committerMichał Górny <mgorny@gentoo.org>2019-12-29 13:57:25 +0100
commit50c1cbea356975caccd6bf9731455a73e7e9581f (patch)
tree70f3b86c1edb43d51a1cab5993ac8ce23b42461a /sys-kernel/vanilla-kernel-bin
parentdev-lang/python: Fix accidentally mangled case in 3.8.1 patch (diff)
downloadgentoo-50c1cbea356975caccd6bf9731455a73e7e9581f.tar.gz
gentoo-50c1cbea356975caccd6bf9731455a73e7e9581f.tar.bz2
gentoo-50c1cbea356975caccd6bf9731455a73e7e9581f.zip
sys-kernel/vanilla-kernel-bin: Enable qemu-based testing
Run a quick test whether the built kernel can boot a simple distribution based on Tiny Core Linux. Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'sys-kernel/vanilla-kernel-bin')
-rw-r--r--sys-kernel/vanilla-kernel-bin/Manifest2
-rw-r--r--sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.6.ebuild72
2 files changed, 72 insertions, 2 deletions
diff --git a/sys-kernel/vanilla-kernel-bin/Manifest b/sys-kernel/vanilla-kernel-bin/Manifest
index f6929ff3c520..f02625fd229c 100644
--- a/sys-kernel/vanilla-kernel-bin/Manifest
+++ b/sys-kernel/vanilla-kernel-bin/Manifest
@@ -1,2 +1,4 @@
+DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641
+DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895
DIST vanilla-kernel-5.4.6-r1-1.amd64.xpak 89795144 BLAKE2B cca6e78f991cc79165a528d95fa1202b6f99dcf763f890609a0bf3e273cb81e786e39365a89e14282b75e259aa298b7349ee2868ef8437faae400475ad7e1c42 SHA512 de609b831db05c42350fe57e3248be3208c190ff99082088b5d2a1d69ec54734784f8143befbfd397deb9446228781ba25c1e50ecc020a651f6beda30be6ba97
DIST vanilla-kernel-5.4.6-r1-1.x86.xpak 81308308 BLAKE2B f499c5a8e65d3754fd0e1ba65a2dfa7eb4fa9b8cbdf5e5957186dc40b1c5572dd66433284529b0ca93b7a3073103243d5f45ad8749ca891b1f86d838cbf363be SHA512 f8334097566ce8b1852ec65a5205221a2bb5193fc638756e87f6da2199cde1d1e73f85f9dd60679fccd18be11055c37da873b92a0e209775e7a9926f6ae94134
diff --git a/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.6.ebuild b/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.6.ebuild
index 4908786bffb8..6d1186eafb6e 100644
--- a/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.6.ebuild
+++ b/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.6.ebuild
@@ -6,23 +6,31 @@ EAPI=7
inherit mount-boot
MY_P=vanilla-kernel-${PV}-r1-1
+TCL_VER=10.1
DESCRIPTION="Pre-built vanilla Linux kernel"
HOMEPAGE="https://www.kernel.org/"
SRC_URI="
amd64? (
https://dev.gentoo.org/~mgorny/binpkg/amd64/kernel/sys-kernel/vanilla-kernel/${MY_P}.xpak
-> ${MY_P}.amd64.xpak
+ test? (
+ https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-amd64.qcow2
+ )
)
x86? (
https://dev.gentoo.org/~mgorny/binpkg/x86/kernel/sys-kernel/vanilla-kernel/${MY_P}.xpak
-> ${MY_P}.x86.xpak
+ test? (
+ https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-x86.qcow2
+ )
)"
S=${WORKDIR}
LICENSE="GPL-2"
SLOT="${PV}"
KEYWORDS="~amd64 ~x86"
-IUSE="+initramfs"
+IUSE="+initramfs test"
+RESTRICT="!test? ( test ) test? ( userpriv )"
# install-DEPEND actually
# note: we need installkernel with initramfs support!
@@ -31,8 +39,15 @@ RDEPEND="
sys-kernel/installkernel-gentoo
sys-kernel/installkernel-systemd-boot
)
- initramfs? ( sys-kernel/dracut )
+ initramfs? ( >=sys-kernel/dracut-049-r2 )
!sys-kernel/vanilla-kernel:${SLOT}"
+BDEPEND="
+ test? (
+ dev-tcltk/expect
+ sys-kernel/dracut
+ amd64? ( app-emulation/qemu[qemu_softmmu_targets_x86_64] )
+ x86? ( app-emulation/qemu[qemu_softmmu_targets_i386] )
+ )"
QA_PREBUILT='*'
@@ -50,6 +65,59 @@ src_unpack() {
eend ${?} || die "Unpacking ${MY_P} failed"
}
+src_test() {
+ local image_arch=${ARCH}
+ local qemu_arch=$(usex amd64 x86_64 i386)
+
+ dracut \
+ --conf /dev/null \
+ --confdir /dev/null \
+ --no-hostonly \
+ --kmoddir "lib/modules/${PV}" \
+ "${T}/initrd" "${PV}" || die
+ cp "${DISTDIR}/tinycorelinux-${TCL_VER}-${image_arch}.qcow2" \
+ "${T}/fs.qcow2" || die
+
+ cd "${T}" || die
+ cat > run.sh <<-EOF || die
+ #!/bin/sh
+ exec qemu-system-${qemu_arch} \
+ -m 256M \
+ -display none \
+ -no-reboot \
+ -kernel '${WORKDIR}/usr/src/linux-${PV}/bzImage' \
+ -initrd '${T}/initrd' \
+ -serial mon:stdio \
+ -hda '${T}/fs.qcow2' \
+ -append 'root=/dev/sda console=ttyS0,115200n8'
+ EOF
+ chmod +x run.sh || die
+ # TODO: initramfs does not let core finish starting on some systems,
+ # figure out how to make it better at that
+ expect - <<-EOF || die "Booting kernel failed"
+ set timeout 900
+ spawn ./run.sh
+ expect {
+ "Kernel panic" {
+ send_error "\n* Kernel panic"
+ exit 1
+ }
+ "Entering emergency mode" {
+ send_error "\n* Initramfs failed to start the system"
+ exit 1
+ }
+ "Core 10.1" {
+ send_error "\n* Booted to login"
+ exit 0
+ }
+ timeout {
+ send_error "\n* Kernel boot timed out"
+ exit 2
+ }
+ }
+ EOF
+}
+
src_install() {
# cp is easier for preserving +x bits
cp -p -R . "${ED}" || die