summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgy Yakovlev <gyakovlev@gentoo.org>2020-08-28 15:07:49 -0700
committerGeorgy Yakovlev <gyakovlev@gentoo.org>2020-08-29 17:24:38 -0700
commit57d291e49e5502dae4161d0d48e34bf223cfdce8 (patch)
tree4015f8212029ee3b642ee1a5551c1ba8926a3a1f
parentapp-emulation/conmon: Remove old versions (diff)
downloadgentoo-57d291e4.tar.gz
gentoo-57d291e4.tar.bz2
gentoo-57d291e4.zip
eclass/kernel-install.eclass: rework tests
instead of using linux image we compile tiny static binary and use it as /sbin/init image is simply created using mkfs.ext4 -d option arm tests need qemu keyworded, so disabled for now Closes: https://github.com/gentoo/gentoo/pull/17305 Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
-rw-r--r--eclass/kernel-install.eclass119
-rw-r--r--sys-kernel/gentoo-kernel-bin/Manifest2
-rw-r--r--sys-kernel/gentoo-kernel/Manifest2
-rw-r--r--sys-kernel/vanilla-kernel/Manifest2
4 files changed, 96 insertions, 29 deletions
diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index f834670d4574..e826626e13f2 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -40,18 +40,7 @@ case "${EAPI:-0}" in
;;
esac
-inherit mount-boot
-
-TCL_VER=10.1
-SRC_URI+="
- test? (
- amd64? (
- https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-amd64.qcow2
- )
- x86? (
- https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-x86.qcow2
- )
- )"
+inherit mount-boot toolchain-funcs
SLOT="${PV}"
IUSE="+initramfs test"
@@ -59,8 +48,6 @@ RESTRICT+="
!test? ( test )
test? ( userpriv )
arm? ( test )
- arm64? ( test )
- ppc64? ( test )
"
# install-DEPEND actually
@@ -74,8 +61,12 @@ RDEPEND="
BDEPEND="
test? (
dev-tcltk/expect
+ sys-apps/coreutils
sys-kernel/dracut
+ sys-fs/e2fsprogs
amd64? ( app-emulation/qemu[qemu_softmmu_targets_x86_64] )
+ arm64? ( app-emulation/qemu[qemu_softmmu_targets_aarch64] )
+ ppc64? ( app-emulation/qemu[qemu_softmmu_targets_ppc64] )
x86? ( app-emulation/qemu[qemu_softmmu_targets_i386] )
)"
@@ -206,12 +197,68 @@ kernel-install_get_qemu_arch() {
arm64)
echo aarch64
;;
+ ppc64)
+ echo ppc64
+ ;;
*)
die "${FUNCNAME}: unsupported ARCH=${ARCH}"
;;
esac
}
+# @FUNCTION: kernel-install_create_init
+# @USAGE: <filename>
+# @DESCRIPTION:
+# Create minimal /sbin/init
+kernel-install_create_init() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${#} -eq 1 ]] || die "${FUNCNAME}: invalid arguments"
+ [[ -z ${1} ]] && die "${FUNCNAME}: empty argument specified"
+
+ local output="${1}"
+ [[ -f ${output} ]] && die "${FUNCNAME}: ${output} already exists"
+
+ cat <<-_EOF_ >"${T}/init.c" || die
+ #include <stdio.h>
+ int main() {
+ printf("Hello, World!\n");
+ return 0;
+ }
+ _EOF_
+
+ $(tc-getBUILD_CC) -Os -static "${T}/init.c" -o "${output}" || die
+ $(tc-getBUILD_STRIP) "${output}" || die
+}
+
+# @FUNCTION: kernel-install_create_qemu_image
+# @USAGE: <filename>
+# @DESCRIPTION:
+# Create minimal qemu raw image
+kernel-install_create_qemu_image() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${#} -eq 1 ]] || die "${FUNCNAME}: invalid arguments"
+ [[ -z ${1} ]] && die "${FUNCNAME}: empty argument specified"
+
+ local image="${1}"
+ [[ -f ${image} ]] && die "${FUNCNAME}: ${image} already exists"
+
+ local imageroot="${T}/imageroot"
+ [[ -d ${imageroot} ]] && die "${FUNCNAME}: ${imageroot} already exists"
+ mkdir "${imageroot}" || die
+
+ # some layout needed to pass dracut's usable_root() validation
+ mkdir -p "${imageroot}"/{bin,dev,etc,lib,proc,root,sbin,sys} || die
+ touch "${imageroot}/lib/ld-fake.so" || die
+
+ kernel-install_create_init "${imageroot}/sbin/init"
+
+ # image may be smaller if needed
+ truncate -s 4M "${image}" || die
+ mkfs.ext4 -v -d "${imageroot}" -L groot "${image}" || die
+}
+
# @FUNCTION: kernel-install_test
# @USAGE: <version> <image> <modules>
# @DESCRIPTION:
@@ -234,25 +281,43 @@ kernel-install_test() {
--no-hostonly \
--kmoddir "${modules}" \
"${T}/initrd" "${version}" || die
- # get a read-write copy of the disk image
- cp "${DISTDIR}/tinycorelinux-${TCL_VER}-${ARCH}.qcow2" \
- "${T}/fs.qcow2" || die
+
+ kernel-install_create_qemu_image "${T}/fs.img"
cd "${T}" || die
+
local qemu_extra_args=
- [[ ${qemu_arch} == x86_64 ]] && qemu_extra_args='-cpu max'
+ local qemu_extra_append=
+
+ case ${qemu_arch} in
+ aarch64)
+ qemu_extra_args="-M virt -cpu cortex-a57 -smp 1"
+ qemu_extra_append="console=ttyAMA0"
+ ;;
+ i386|x86_64)
+ qemu_extra_args="-cpu max"
+ qemu_extra_append="console=ttyS0,115200n8"
+ ;;
+ ppc64)
+ qemu_extra_args="-nodefaults"
+ ;;
+ *)
+ :
+ ;;
+ esac
+
cat > run.sh <<-EOF || die
#!/bin/sh
exec qemu-system-${qemu_arch} \
${qemu_extra_args} \
- -m 256M \
- -display none \
+ -m 512M \
+ -nographic \
-no-reboot \
-kernel '${image}' \
-initrd '${T}/initrd' \
-serial mon:stdio \
- -hda '${T}/fs.qcow2' \
- -append 'root=/dev/sda console=ttyS0,115200n8'
+ -drive file=fs.img,format=raw,index=0,media=disk \
+ -append 'root=LABEL=groot ${qemu_extra_append}'
EOF
chmod +x run.sh || die
# TODO: initramfs does not let core finish starting on some systems,
@@ -261,6 +326,14 @@ kernel-install_test() {
set timeout 900
spawn ./run.sh
expect {
+ "terminating on signal" {
+ send_error "\n* Qemu killed"
+ exit 1
+ }
+ "OS terminated" {
+ send_error "\n* Qemu terminated OS"
+ exit 1
+ }
"Kernel panic" {
send_error "\n* Kernel panic"
exit 1
@@ -269,7 +342,7 @@ kernel-install_test() {
send_error "\n* Initramfs failed to start the system"
exit 1
}
- "Core 10.1" {
+ "Hello, World!" {
send_error "\n* Booted successfully"
exit 0
}
diff --git a/sys-kernel/gentoo-kernel-bin/Manifest b/sys-kernel/gentoo-kernel-bin/Manifest
index 2fc18cb3cf14..b55c2b0ad9f5 100644
--- a/sys-kernel/gentoo-kernel-bin/Manifest
+++ b/sys-kernel/gentoo-kernel-bin/Manifest
@@ -22,5 +22,3 @@ DIST gentoo-kernel-5.8.4-1.x86.xpak 56574861 BLAKE2B 350f0609733fc8a9e76ba81ee5f
DIST gentoo-kernel-5.8.5-1.amd64.xpak 64641722 BLAKE2B 623b91448b017791f8d1597be27cf01e3a44be035d3e724f1693e6ea9bed203429ba586b2b3b941da07888053d7fa71e7907051315d144d139d759348be3f4a6 SHA512 b6963f4fb1d9d3b3dde64bd8505b3f4fb5ef23e2e0d8f774cb1ab36dc2cdc3accefbcb6eba8ff624a5ee1e2b9a5d15f17f17225bf90afb20a3e9c02027b049d6
DIST gentoo-kernel-5.8.5-1.arm64.xpak 61961042 BLAKE2B 8c920e52d3888270714206b4287ad2e0741b9b474ea6e64d7afbcafa8f84dceabeba88df87f5bc5f26bc1d23a5fb9b9b564a50e7eaa9a5ccea98ca581837d24d SHA512 1fb55a01f43197fb760d35e7c36d30e7b7d97c5df36ac1a012067df6b5d20f8af619d41d63181832a2db0318a95ab196568af34665adfaf8661dd1450aa9ee8d
DIST gentoo-kernel-5.8.5-1.x86.xpak 56586150 BLAKE2B d0ff52cec539f85c7971cf69f882a82f937123d9e0464b685f86895080d32e3a3e17ab53dd952633bf827242519de9cc0a22915ef84872219314ea4143157e8c SHA512 273504c8521468ac24e287feab1b6bc7e7d93ffe7ca577ee2e692791b9ba2221004e53dbce00837832a1c11996785b94b601f88b76cb9b5eac1c743e263e9eff
-DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641
-DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895
diff --git a/sys-kernel/gentoo-kernel/Manifest b/sys-kernel/gentoo-kernel/Manifest
index a4dbd36f5639..70d95b56f089 100644
--- a/sys-kernel/gentoo-kernel/Manifest
+++ b/sys-kernel/gentoo-kernel/Manifest
@@ -31,5 +31,3 @@ DIST kernel-x86_64.config.5.4.21 184907 BLAKE2B 0eb2b07c14cea7545350fcdf3a94f2a5
DIST linux-5.4.tar.xz 109441440 BLAKE2B 193bc4a3147e147d5529956164ec4912fad5d5c6fb07f909ff1056e57235834173194afc686993ccd785c1ff15804de0961b625f3008cca0e27493efc8f27b13 SHA512 9f60f77e8ab972b9438ac648bed17551c8491d6585a5e85f694b2eaa4c623fbc61eb18419b2656b6795eac5deec0edaa04547fc6723fbda52256bd7f3486898f
DIST linux-5.7.tar.xz 112690468 BLAKE2B b2b71e231507429b178b6b89be546c4a3ee2757f5d2c58b6137d383f16034a587225a75a9dbca6a01a433056ebe078487132c224e909a2971c9634687e47b1d1 SHA512 45bde01593f6147c8c169b9e46b4b56eee998142552ae0ff82f1dd21b1fd54f3b32f6283f6bd77ea717d374672167849e468c157f235d2f12f7d7816e4623bf6
DIST linux-5.8.tar.xz 114459324 BLAKE2B 7bd97f8fa4527840754434414c07283e89731dc8ebb1e95fa5bc1469a60af1122582c0d3b6e262e77882f023190068df3537bd8b65964b3caa820bb2c8e579c7 SHA512 45a53ecf351096ef6e98242cca4228b8da9b9139ecc6963695791ea6fb7a9484a4e1c19dcca7ce7cbfdfa49de0451b70973bb078f12bdae9cbaddbc3f8092556
-DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641
-DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895
diff --git a/sys-kernel/vanilla-kernel/Manifest b/sys-kernel/vanilla-kernel/Manifest
index 47cbb13c643c..94bbdb60256b 100644
--- a/sys-kernel/vanilla-kernel/Manifest
+++ b/sys-kernel/vanilla-kernel/Manifest
@@ -18,5 +18,3 @@ DIST linux-5.7.19.tar.xz 112742648 BLAKE2B 408fdc49f8a341f6d7c0fead1ddc1b0816caf
DIST linux-5.8.3.tar.xz 114473912 BLAKE2B 9d2913bbaf4afabd8f654abd0a2a3c62df043a613cbc2518944f5889d1a760ab6401e76d0b67b0cc9fbe05c8a0e280fe9b2ebf125f50ff5962f097956642fd8e SHA512 a23973139bf105e202621f6181be366e1a933aefd1da9a347d3a19c0917ba16dd271b5c8d90a8c527791fb0f7535a1cc1bbecd118598b500c881d16ff7d64157
DIST linux-5.8.4.tar.xz 114478188 BLAKE2B d9cb7a130e69de2fd176e5ce4236cfe5f4f31cf96f963a1f04e94958d0b064a7cf34c5a2d7e37500892fd840214ce1fc6f2ffb3050cbf8678ffe612bbd1cf51d SHA512 b1fb4586932369f2853360aaab702baaa994be5a88c0a746b7272d7c29c864ac2f0302bd82664f58d29f7b464bc98603167211ea886aa15ea1cd6d12d422ba61
DIST linux-5.8.5.tar.xz 114482912 BLAKE2B 751cded511b08dd541cd6ae2365602068138641d4a6ade4205936dd1ec1de5a01441a2822afde25fd83004896e8ae02a70af37482dc4b09fa9fc52ca8bd05a8c SHA512 30832e10d14f87f62542cc8a58d2d7d54cbfd0e99de772f79364354a09c2aff2c5bd07bcd06e1e7523a404aa39829355b6b198334472d3070dc7a4f810ed0f20
-DIST tinycorelinux-10.1-amd64.qcow2 16842752 BLAKE2B e013e76503c335739a9623c0901ca791937a0e6b177854535cadec1e2c2cd2df588283ed3128cf652595f32264fbfe5b3bd3a8c97665fd4da344e308535be366 SHA512 c3aeb20ff8769da9211694b7f701907cc7ae7582cdfad2c2fdc008d97ebcbd9dc08245b4e8f8450e1cb304bd705345a11fe79f901a47979fee91443841d55641
-DIST tinycorelinux-10.1-x86.qcow2 14876672 BLAKE2B 3c760eb7438b13261e52ecfaa33a53649ced95f1ab40aae52134b8cdc31a16d7aa0d6a6dd716e268ed148e9d77a10b7c700b141b61d70c82d271ffe88e8e2a3c SHA512 9964538dc42f232a11949f74b61d46422ea5da3bdc253a217119bd0b8a750c40fd2da0b07157067be9ac0226472614f210a1248114df0d331df390979867a895