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 |