Gentoo Archives: gentoo-commits

From: Georgy Yakovlev <gyakovlev@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-kernel/gentoo-kernel-bin/, sys-kernel/gentoo-kernel/, eclass/, ...
Date: Sun, 30 Aug 2020 00:24:53
Message-Id: 1598747078.57d291e49e5502dae4161d0d48e34bf223cfdce8.gyakovlev@gentoo
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