Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-kernel/vanilla-kernel-bin/
Date: Sun, 29 Dec 2019 12:57:33
Message-Id: 1577624245.50c1cbea356975caccd6bf9731455a73e7e9581f.mgorny@gentoo
1 commit: 50c1cbea356975caccd6bf9731455a73e7e9581f
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sat Dec 28 09:41:02 2019 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Sun Dec 29 12:57:25 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=50c1cbea
7
8 sys-kernel/vanilla-kernel-bin: Enable qemu-based testing
9
10 Run a quick test whether the built kernel can boot a simple distribution
11 based on Tiny Core Linux.
12
13 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
14
15 sys-kernel/vanilla-kernel-bin/Manifest | 2 +
16 .../vanilla-kernel-bin-5.4.6.ebuild | 72 +++++++++++++++++++++-
17 2 files changed, 72 insertions(+), 2 deletions(-)
18
19 diff --git a/sys-kernel/vanilla-kernel-bin/Manifest b/sys-kernel/vanilla-kernel-bin/Manifest
20 index f6929ff3c52..f02625fd229 100644
21 --- a/sys-kernel/vanilla-kernel-bin/Manifest
22 +++ b/sys-kernel/vanilla-kernel-bin/Manifest
23 @@ -1,2 +1,4 @@
24 +DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641
25 +DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895
26 DIST vanilla-kernel-5.4.6-r1-1.amd64.xpak 89795144 BLAKE2B cca6e78f991cc79165a528d95fa1202b6f99dcf763f890609a0bf3e273cb81e786e39365a89e14282b75e259aa298b7349ee2868ef8437faae400475ad7e1c42 SHA512 de609b831db05c42350fe57e3248be3208c190ff99082088b5d2a1d69ec54734784f8143befbfd397deb9446228781ba25c1e50ecc020a651f6beda30be6ba97
27 DIST vanilla-kernel-5.4.6-r1-1.x86.xpak 81308308 BLAKE2B f499c5a8e65d3754fd0e1ba65a2dfa7eb4fa9b8cbdf5e5957186dc40b1c5572dd66433284529b0ca93b7a3073103243d5f45ad8749ca891b1f86d838cbf363be SHA512 f8334097566ce8b1852ec65a5205221a2bb5193fc638756e87f6da2199cde1d1e73f85f9dd60679fccd18be11055c37da873b92a0e209775e7a9926f6ae94134
28
29 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
30 index 4908786bffb..6d1186eafb6 100644
31 --- a/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.6.ebuild
32 +++ b/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.6.ebuild
33 @@ -6,23 +6,31 @@ EAPI=7
34 inherit mount-boot
35
36 MY_P=vanilla-kernel-${PV}-r1-1
37 +TCL_VER=10.1
38 DESCRIPTION="Pre-built vanilla Linux kernel"
39 HOMEPAGE="https://www.kernel.org/"
40 SRC_URI="
41 amd64? (
42 https://dev.gentoo.org/~mgorny/binpkg/amd64/kernel/sys-kernel/vanilla-kernel/${MY_P}.xpak
43 -> ${MY_P}.amd64.xpak
44 + test? (
45 + https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-amd64.qcow2
46 + )
47 )
48 x86? (
49 https://dev.gentoo.org/~mgorny/binpkg/x86/kernel/sys-kernel/vanilla-kernel/${MY_P}.xpak
50 -> ${MY_P}.x86.xpak
51 + test? (
52 + https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-x86.qcow2
53 + )
54 )"
55 S=${WORKDIR}
56
57 LICENSE="GPL-2"
58 SLOT="${PV}"
59 KEYWORDS="~amd64 ~x86"
60 -IUSE="+initramfs"
61 +IUSE="+initramfs test"
62 +RESTRICT="!test? ( test ) test? ( userpriv )"
63
64 # install-DEPEND actually
65 # note: we need installkernel with initramfs support!
66 @@ -31,8 +39,15 @@ RDEPEND="
67 sys-kernel/installkernel-gentoo
68 sys-kernel/installkernel-systemd-boot
69 )
70 - initramfs? ( sys-kernel/dracut )
71 + initramfs? ( >=sys-kernel/dracut-049-r2 )
72 !sys-kernel/vanilla-kernel:${SLOT}"
73 +BDEPEND="
74 + test? (
75 + dev-tcltk/expect
76 + sys-kernel/dracut
77 + amd64? ( app-emulation/qemu[qemu_softmmu_targets_x86_64] )
78 + x86? ( app-emulation/qemu[qemu_softmmu_targets_i386] )
79 + )"
80
81 QA_PREBUILT='*'
82
83 @@ -50,6 +65,59 @@ src_unpack() {
84 eend ${?} || die "Unpacking ${MY_P} failed"
85 }
86
87 +src_test() {
88 + local image_arch=${ARCH}
89 + local qemu_arch=$(usex amd64 x86_64 i386)
90 +
91 + dracut \
92 + --conf /dev/null \
93 + --confdir /dev/null \
94 + --no-hostonly \
95 + --kmoddir "lib/modules/${PV}" \
96 + "${T}/initrd" "${PV}" || die
97 + cp "${DISTDIR}/tinycorelinux-${TCL_VER}-${image_arch}.qcow2" \
98 + "${T}/fs.qcow2" || die
99 +
100 + cd "${T}" || die
101 + cat > run.sh <<-EOF || die
102 + #!/bin/sh
103 + exec qemu-system-${qemu_arch} \
104 + -m 256M \
105 + -display none \
106 + -no-reboot \
107 + -kernel '${WORKDIR}/usr/src/linux-${PV}/bzImage' \
108 + -initrd '${T}/initrd' \
109 + -serial mon:stdio \
110 + -hda '${T}/fs.qcow2' \
111 + -append 'root=/dev/sda console=ttyS0,115200n8'
112 + EOF
113 + chmod +x run.sh || die
114 + # TODO: initramfs does not let core finish starting on some systems,
115 + # figure out how to make it better at that
116 + expect - <<-EOF || die "Booting kernel failed"
117 + set timeout 900
118 + spawn ./run.sh
119 + expect {
120 + "Kernel panic" {
121 + send_error "\n* Kernel panic"
122 + exit 1
123 + }
124 + "Entering emergency mode" {
125 + send_error "\n* Initramfs failed to start the system"
126 + exit 1
127 + }
128 + "Core 10.1" {
129 + send_error "\n* Booted to login"
130 + exit 0
131 + }
132 + timeout {
133 + send_error "\n* Kernel boot timed out"
134 + exit 2
135 + }
136 + }
137 + EOF
138 +}
139 +
140 src_install() {
141 # cp is easier for preserving +x bits
142 cp -p -R . "${ED}" || die