diff options
author | Georgy Yakovlev <gyakovlev@gentoo.org> | 2020-08-28 15:07:49 -0700 |
---|---|---|
committer | Georgy Yakovlev <gyakovlev@gentoo.org> | 2020-08-29 17:24:38 -0700 |
commit | 57d291e49e5502dae4161d0d48e34bf223cfdce8 (patch) | |
tree | 4015f8212029ee3b642ee1a5551c1ba8926a3a1f | |
parent | app-emulation/conmon: Remove old versions (diff) | |
download | gentoo-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.eclass | 119 | ||||
-rw-r--r-- | sys-kernel/gentoo-kernel-bin/Manifest | 2 | ||||
-rw-r--r-- | sys-kernel/gentoo-kernel/Manifest | 2 | ||||
-rw-r--r-- | sys-kernel/vanilla-kernel/Manifest | 2 |
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 |