1 |
commit: 57d291e49e5502dae4161d0d48e34bf223cfdce8 |
2 |
Author: Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Aug 28 22:07:49 2020 +0000 |
4 |
Commit: Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Aug 30 00:24:38 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=57d291e4 |
7 |
|
8 |
eclass/kernel-install.eclass: rework tests |
9 |
|
10 |
instead of using linux image we compile tiny static binary and use |
11 |
it as /sbin/init |
12 |
image is simply created using mkfs.ext4 -d option |
13 |
|
14 |
arm tests need qemu keyworded, so disabled for now |
15 |
|
16 |
Closes: https://github.com/gentoo/gentoo/pull/17305 |
17 |
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org> |
18 |
|
19 |
eclass/kernel-install.eclass | 119 +++++++++++++++++++++++++++------- |
20 |
sys-kernel/gentoo-kernel-bin/Manifest | 2 - |
21 |
sys-kernel/gentoo-kernel/Manifest | 2 - |
22 |
sys-kernel/vanilla-kernel/Manifest | 2 - |
23 |
4 files changed, 96 insertions(+), 29 deletions(-) |
24 |
|
25 |
diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass |
26 |
index f834670d457..e826626e13f 100644 |
27 |
--- a/eclass/kernel-install.eclass |
28 |
+++ b/eclass/kernel-install.eclass |
29 |
@@ -40,18 +40,7 @@ case "${EAPI:-0}" in |
30 |
;; |
31 |
esac |
32 |
|
33 |
-inherit mount-boot |
34 |
- |
35 |
-TCL_VER=10.1 |
36 |
-SRC_URI+=" |
37 |
- test? ( |
38 |
- amd64? ( |
39 |
- https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-amd64.qcow2 |
40 |
- ) |
41 |
- x86? ( |
42 |
- https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-x86.qcow2 |
43 |
- ) |
44 |
- )" |
45 |
+inherit mount-boot toolchain-funcs |
46 |
|
47 |
SLOT="${PV}" |
48 |
IUSE="+initramfs test" |
49 |
@@ -59,8 +48,6 @@ RESTRICT+=" |
50 |
!test? ( test ) |
51 |
test? ( userpriv ) |
52 |
arm? ( test ) |
53 |
- arm64? ( test ) |
54 |
- ppc64? ( test ) |
55 |
" |
56 |
|
57 |
# install-DEPEND actually |
58 |
@@ -74,8 +61,12 @@ RDEPEND=" |
59 |
BDEPEND=" |
60 |
test? ( |
61 |
dev-tcltk/expect |
62 |
+ sys-apps/coreutils |
63 |
sys-kernel/dracut |
64 |
+ sys-fs/e2fsprogs |
65 |
amd64? ( app-emulation/qemu[qemu_softmmu_targets_x86_64] ) |
66 |
+ arm64? ( app-emulation/qemu[qemu_softmmu_targets_aarch64] ) |
67 |
+ ppc64? ( app-emulation/qemu[qemu_softmmu_targets_ppc64] ) |
68 |
x86? ( app-emulation/qemu[qemu_softmmu_targets_i386] ) |
69 |
)" |
70 |
|
71 |
@@ -206,12 +197,68 @@ kernel-install_get_qemu_arch() { |
72 |
arm64) |
73 |
echo aarch64 |
74 |
;; |
75 |
+ ppc64) |
76 |
+ echo ppc64 |
77 |
+ ;; |
78 |
*) |
79 |
die "${FUNCNAME}: unsupported ARCH=${ARCH}" |
80 |
;; |
81 |
esac |
82 |
} |
83 |
|
84 |
+# @FUNCTION: kernel-install_create_init |
85 |
+# @USAGE: <filename> |
86 |
+# @DESCRIPTION: |
87 |
+# Create minimal /sbin/init |
88 |
+kernel-install_create_init() { |
89 |
+ debug-print-function ${FUNCNAME} "${@}" |
90 |
+ |
91 |
+ [[ ${#} -eq 1 ]] || die "${FUNCNAME}: invalid arguments" |
92 |
+ [[ -z ${1} ]] && die "${FUNCNAME}: empty argument specified" |
93 |
+ |
94 |
+ local output="${1}" |
95 |
+ [[ -f ${output} ]] && die "${FUNCNAME}: ${output} already exists" |
96 |
+ |
97 |
+ cat <<-_EOF_ >"${T}/init.c" || die |
98 |
+ #include <stdio.h> |
99 |
+ int main() { |
100 |
+ printf("Hello, World!\n"); |
101 |
+ return 0; |
102 |
+ } |
103 |
+ _EOF_ |
104 |
+ |
105 |
+ $(tc-getBUILD_CC) -Os -static "${T}/init.c" -o "${output}" || die |
106 |
+ $(tc-getBUILD_STRIP) "${output}" || die |
107 |
+} |
108 |
+ |
109 |
+# @FUNCTION: kernel-install_create_qemu_image |
110 |
+# @USAGE: <filename> |
111 |
+# @DESCRIPTION: |
112 |
+# Create minimal qemu raw image |
113 |
+kernel-install_create_qemu_image() { |
114 |
+ debug-print-function ${FUNCNAME} "${@}" |
115 |
+ |
116 |
+ [[ ${#} -eq 1 ]] || die "${FUNCNAME}: invalid arguments" |
117 |
+ [[ -z ${1} ]] && die "${FUNCNAME}: empty argument specified" |
118 |
+ |
119 |
+ local image="${1}" |
120 |
+ [[ -f ${image} ]] && die "${FUNCNAME}: ${image} already exists" |
121 |
+ |
122 |
+ local imageroot="${T}/imageroot" |
123 |
+ [[ -d ${imageroot} ]] && die "${FUNCNAME}: ${imageroot} already exists" |
124 |
+ mkdir "${imageroot}" || die |
125 |
+ |
126 |
+ # some layout needed to pass dracut's usable_root() validation |
127 |
+ mkdir -p "${imageroot}"/{bin,dev,etc,lib,proc,root,sbin,sys} || die |
128 |
+ touch "${imageroot}/lib/ld-fake.so" || die |
129 |
+ |
130 |
+ kernel-install_create_init "${imageroot}/sbin/init" |
131 |
+ |
132 |
+ # image may be smaller if needed |
133 |
+ truncate -s 4M "${image}" || die |
134 |
+ mkfs.ext4 -v -d "${imageroot}" -L groot "${image}" || die |
135 |
+} |
136 |
+ |
137 |
# @FUNCTION: kernel-install_test |
138 |
# @USAGE: <version> <image> <modules> |
139 |
# @DESCRIPTION: |
140 |
@@ -234,25 +281,43 @@ kernel-install_test() { |
141 |
--no-hostonly \ |
142 |
--kmoddir "${modules}" \ |
143 |
"${T}/initrd" "${version}" || die |
144 |
- # get a read-write copy of the disk image |
145 |
- cp "${DISTDIR}/tinycorelinux-${TCL_VER}-${ARCH}.qcow2" \ |
146 |
- "${T}/fs.qcow2" || die |
147 |
+ |
148 |
+ kernel-install_create_qemu_image "${T}/fs.img" |
149 |
|
150 |
cd "${T}" || die |
151 |
+ |
152 |
local qemu_extra_args= |
153 |
- [[ ${qemu_arch} == x86_64 ]] && qemu_extra_args='-cpu max' |
154 |
+ local qemu_extra_append= |
155 |
+ |
156 |
+ case ${qemu_arch} in |
157 |
+ aarch64) |
158 |
+ qemu_extra_args="-M virt -cpu cortex-a57 -smp 1" |
159 |
+ qemu_extra_append="console=ttyAMA0" |
160 |
+ ;; |
161 |
+ i386|x86_64) |
162 |
+ qemu_extra_args="-cpu max" |
163 |
+ qemu_extra_append="console=ttyS0,115200n8" |
164 |
+ ;; |
165 |
+ ppc64) |
166 |
+ qemu_extra_args="-nodefaults" |
167 |
+ ;; |
168 |
+ *) |
169 |
+ : |
170 |
+ ;; |
171 |
+ esac |
172 |
+ |
173 |
cat > run.sh <<-EOF || die |
174 |
#!/bin/sh |
175 |
exec qemu-system-${qemu_arch} \ |
176 |
${qemu_extra_args} \ |
177 |
- -m 256M \ |
178 |
- -display none \ |
179 |
+ -m 512M \ |
180 |
+ -nographic \ |
181 |
-no-reboot \ |
182 |
-kernel '${image}' \ |
183 |
-initrd '${T}/initrd' \ |
184 |
-serial mon:stdio \ |
185 |
- -hda '${T}/fs.qcow2' \ |
186 |
- -append 'root=/dev/sda console=ttyS0,115200n8' |
187 |
+ -drive file=fs.img,format=raw,index=0,media=disk \ |
188 |
+ -append 'root=LABEL=groot ${qemu_extra_append}' |
189 |
EOF |
190 |
chmod +x run.sh || die |
191 |
# TODO: initramfs does not let core finish starting on some systems, |
192 |
@@ -261,6 +326,14 @@ kernel-install_test() { |
193 |
set timeout 900 |
194 |
spawn ./run.sh |
195 |
expect { |
196 |
+ "terminating on signal" { |
197 |
+ send_error "\n* Qemu killed" |
198 |
+ exit 1 |
199 |
+ } |
200 |
+ "OS terminated" { |
201 |
+ send_error "\n* Qemu terminated OS" |
202 |
+ exit 1 |
203 |
+ } |
204 |
"Kernel panic" { |
205 |
send_error "\n* Kernel panic" |
206 |
exit 1 |
207 |
@@ -269,7 +342,7 @@ kernel-install_test() { |
208 |
send_error "\n* Initramfs failed to start the system" |
209 |
exit 1 |
210 |
} |
211 |
- "Core 10.1" { |
212 |
+ "Hello, World!" { |
213 |
send_error "\n* Booted successfully" |
214 |
exit 0 |
215 |
} |
216 |
|
217 |
diff --git a/sys-kernel/gentoo-kernel-bin/Manifest b/sys-kernel/gentoo-kernel-bin/Manifest |
218 |
index 2fc18cb3cf1..b55c2b0ad9f 100644 |
219 |
--- a/sys-kernel/gentoo-kernel-bin/Manifest |
220 |
+++ b/sys-kernel/gentoo-kernel-bin/Manifest |
221 |
@@ -22,5 +22,3 @@ DIST gentoo-kernel-5.8.4-1.x86.xpak 56574861 BLAKE2B 350f0609733fc8a9e76ba81ee5f |
222 |
DIST gentoo-kernel-5.8.5-1.amd64.xpak 64641722 BLAKE2B 623b91448b017791f8d1597be27cf01e3a44be035d3e724f1693e6ea9bed203429ba586b2b3b941da07888053d7fa71e7907051315d144d139d759348be3f4a6 SHA512 b6963f4fb1d9d3b3dde64bd8505b3f4fb5ef23e2e0d8f774cb1ab36dc2cdc3accefbcb6eba8ff624a5ee1e2b9a5d15f17f17225bf90afb20a3e9c02027b049d6 |
223 |
DIST gentoo-kernel-5.8.5-1.arm64.xpak 61961042 BLAKE2B 8c920e52d3888270714206b4287ad2e0741b9b474ea6e64d7afbcafa8f84dceabeba88df87f5bc5f26bc1d23a5fb9b9b564a50e7eaa9a5ccea98ca581837d24d SHA512 1fb55a01f43197fb760d35e7c36d30e7b7d97c5df36ac1a012067df6b5d20f8af619d41d63181832a2db0318a95ab196568af34665adfaf8661dd1450aa9ee8d |
224 |
DIST gentoo-kernel-5.8.5-1.x86.xpak 56586150 BLAKE2B d0ff52cec539f85c7971cf69f882a82f937123d9e0464b685f86895080d32e3a3e17ab53dd952633bf827242519de9cc0a22915ef84872219314ea4143157e8c SHA512 273504c8521468ac24e287feab1b6bc7e7d93ffe7ca577ee2e692791b9ba2221004e53dbce00837832a1c11996785b94b601f88b76cb9b5eac1c743e263e9eff |
225 |
-DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641 |
226 |
-DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895 |
227 |
|
228 |
diff --git a/sys-kernel/gentoo-kernel/Manifest b/sys-kernel/gentoo-kernel/Manifest |
229 |
index a4dbd36f563..70d95b56f08 100644 |
230 |
--- a/sys-kernel/gentoo-kernel/Manifest |
231 |
+++ b/sys-kernel/gentoo-kernel/Manifest |
232 |
@@ -31,5 +31,3 @@ DIST kernel-x86_64.config.5.4.21 184907 BLAKE2B 0eb2b07c14cea7545350fcdf3a94f2a5 |
233 |
DIST linux-5.4.tar.xz 109441440 BLAKE2B 193bc4a3147e147d5529956164ec4912fad5d5c6fb07f909ff1056e57235834173194afc686993ccd785c1ff15804de0961b625f3008cca0e27493efc8f27b13 SHA512 9f60f77e8ab972b9438ac648bed17551c8491d6585a5e85f694b2eaa4c623fbc61eb18419b2656b6795eac5deec0edaa04547fc6723fbda52256bd7f3486898f |
234 |
DIST linux-5.7.tar.xz 112690468 BLAKE2B b2b71e231507429b178b6b89be546c4a3ee2757f5d2c58b6137d383f16034a587225a75a9dbca6a01a433056ebe078487132c224e909a2971c9634687e47b1d1 SHA512 45bde01593f6147c8c169b9e46b4b56eee998142552ae0ff82f1dd21b1fd54f3b32f6283f6bd77ea717d374672167849e468c157f235d2f12f7d7816e4623bf6 |
235 |
DIST linux-5.8.tar.xz 114459324 BLAKE2B 7bd97f8fa4527840754434414c07283e89731dc8ebb1e95fa5bc1469a60af1122582c0d3b6e262e77882f023190068df3537bd8b65964b3caa820bb2c8e579c7 SHA512 45a53ecf351096ef6e98242cca4228b8da9b9139ecc6963695791ea6fb7a9484a4e1c19dcca7ce7cbfdfa49de0451b70973bb078f12bdae9cbaddbc3f8092556 |
236 |
-DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641 |
237 |
-DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895 |
238 |
|
239 |
diff --git a/sys-kernel/vanilla-kernel/Manifest b/sys-kernel/vanilla-kernel/Manifest |
240 |
index 47cbb13c643..94bbdb60256 100644 |
241 |
--- a/sys-kernel/vanilla-kernel/Manifest |
242 |
+++ b/sys-kernel/vanilla-kernel/Manifest |
243 |
@@ -18,5 +18,3 @@ DIST linux-5.7.19.tar.xz 112742648 BLAKE2B 408fdc49f8a341f6d7c0fead1ddc1b0816caf |
244 |
DIST linux-5.8.3.tar.xz 114473912 BLAKE2B 9d2913bbaf4afabd8f654abd0a2a3c62df043a613cbc2518944f5889d1a760ab6401e76d0b67b0cc9fbe05c8a0e280fe9b2ebf125f50ff5962f097956642fd8e SHA512 a23973139bf105e202621f6181be366e1a933aefd1da9a347d3a19c0917ba16dd271b5c8d90a8c527791fb0f7535a1cc1bbecd118598b500c881d16ff7d64157 |
245 |
DIST linux-5.8.4.tar.xz 114478188 BLAKE2B d9cb7a130e69de2fd176e5ce4236cfe5f4f31cf96f963a1f04e94958d0b064a7cf34c5a2d7e37500892fd840214ce1fc6f2ffb3050cbf8678ffe612bbd1cf51d SHA512 b1fb4586932369f2853360aaab702baaa994be5a88c0a746b7272d7c29c864ac2f0302bd82664f58d29f7b464bc98603167211ea886aa15ea1cd6d12d422ba61 |
246 |
DIST linux-5.8.5.tar.xz 114482912 BLAKE2B 751cded511b08dd541cd6ae2365602068138641d4a6ade4205936dd1ec1de5a01441a2822afde25fd83004896e8ae02a70af37482dc4b09fa9fc52ca8bd05a8c SHA512 30832e10d14f87f62542cc8a58d2d7d54cbfd0e99de772f79364354a09c2aff2c5bd07bcd06e1e7523a404aa39829355b6b198334472d3070dc7a4f810ed0f20 |
247 |
-DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641 |
248 |
-DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895 |