diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-01-15 15:51:32 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-01-15 15:51:32 +0000 |
commit | 21435953e16cda318a82334ddbadb3b5c36d9ea7 (patch) | |
tree | e1810a4b135afce04b34862ef0fab2bfaeb8aeca /sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.7.ebuild | |
parent | 7bc9c63c9da678a7e6fceb095d56c634afd22c56 (diff) |
gentoo resync : 15.01.2020
Diffstat (limited to 'sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.7.ebuild')
-rw-r--r-- | sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.7.ebuild | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.7.ebuild b/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.7.ebuild new file mode 100644 index 000000000000..998f07ed5e9b --- /dev/null +++ b/sys-kernel/vanilla-kernel-bin/vanilla-kernel-bin-5.4.7.ebuild @@ -0,0 +1,180 @@ +# Copyright 2019-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit mount-boot + +MY_P=vanilla-kernel-${PV}-1 +TCL_VER=10.1 +DESCRIPTION="Pre-built vanilla Linux kernel" +HOMEPAGE="https://www.kernel.org/" +SRC_URI=" + amd64? ( + https://dev.gentoo.org/~mgorny/binpkg/amd64/kernel/sys-kernel/vanilla-kernel/${MY_P}.xpak + -> ${MY_P}.amd64.xpak + test? ( + https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-amd64.qcow2 + ) + ) + x86? ( + https://dev.gentoo.org/~mgorny/binpkg/x86/kernel/sys-kernel/vanilla-kernel/${MY_P}.xpak + -> ${MY_P}.x86.xpak + test? ( + https://dev.gentoo.org/~mgorny/dist/tinycorelinux-${TCL_VER}-x86.qcow2 + ) + )" +S=${WORKDIR} + +LICENSE="GPL-2" +SLOT="${PV}" +KEYWORDS="~amd64 ~x86" +IUSE="+initramfs test" +RESTRICT="!test? ( test ) test? ( userpriv )" + +# install-DEPEND actually +# note: we need installkernel with initramfs support! +RDEPEND=" + || ( + sys-kernel/installkernel-gentoo + sys-kernel/installkernel-systemd-boot + ) + initramfs? ( >=sys-kernel/dracut-049-r2 ) + !sys-kernel/vanilla-kernel:${SLOT}" +BDEPEND=" + test? ( + dev-tcltk/expect + sys-kernel/dracut + amd64? ( app-emulation/qemu[qemu_softmmu_targets_x86_64] ) + x86? ( app-emulation/qemu[qemu_softmmu_targets_i386] ) + )" + +QA_PREBUILT='*' + +pkg_pretend() { + mount-boot_pkg_pretend + + ewarn "This is an experimental package. The built kernel and/or initramfs" + ewarn "may not work at all or fail with your bootloader configuration. Please" + ewarn "make sure to keep a backup kernel available before testing it." +} + +src_unpack() { + ebegin "Unpacking ${MY_P}.${ARCH}.xpak" + tar -x < <(xz -c -d --single-stream "${DISTDIR}/${MY_P}.${ARCH}.xpak") + eend ${?} || die "Unpacking ${MY_P} failed" +} + +src_test() { + local image_arch=${ARCH} + local qemu_arch=$(usex amd64 x86_64 i386) + + dracut \ + --conf /dev/null \ + --confdir /dev/null \ + --no-hostonly \ + --kmoddir "lib/modules/${PV}" \ + "${T}/initrd" "${PV}" || die + cp "${DISTDIR}/tinycorelinux-${TCL_VER}-${image_arch}.qcow2" \ + "${T}/fs.qcow2" || die + + cd "${T}" || die + cat > run.sh <<-EOF || die + #!/bin/sh + exec qemu-system-${qemu_arch} \ + -m 256M \ + -display none \ + -no-reboot \ + -kernel '${WORKDIR}/usr/src/linux-${PV}/bzImage' \ + -initrd '${T}/initrd' \ + -serial mon:stdio \ + -hda '${T}/fs.qcow2' \ + -append 'root=/dev/sda console=ttyS0,115200n8' + EOF + chmod +x run.sh || die + # TODO: initramfs does not let core finish starting on some systems, + # figure out how to make it better at that + expect - <<-EOF || die "Booting kernel failed" + set timeout 900 + spawn ./run.sh + expect { + "Kernel panic" { + send_error "\n* Kernel panic" + exit 1 + } + "Entering emergency mode" { + send_error "\n* Initramfs failed to start the system" + exit 1 + } + "Core 10.1" { + send_error "\n* Booted to login" + exit 0 + } + timeout { + send_error "\n* Kernel boot timed out" + exit 2 + } + } + EOF +} + +src_install() { + mv * "${ED}" || die +} + +pkg_preinst() { + : +} + +pkg_postinst() { + if [[ -z ${ROOT} ]]; then + mount-boot_pkg_preinst + + if use initramfs; then + ebegin "Building initramfs via dracut" + # putting it alongside kernel image as 'initrd' makes + # kernel-install happier + dracut --force "${EROOT}/usr/src/linux-${PV}/initrd" "${PV}" + eend ${?} || die "Building initramfs failed" + fi + + ebegin "Installing the kernel via installkernel" + # note: .config is taken relatively to System.map; + # initrd relatively to bzImage + installkernel "${PV}" \ + "${EROOT}/usr/src/linux-${PV}/bzImage" \ + "${EROOT}/usr/src/linux-${PV}/System.map" + eend ${?} || die "Installing the kernel failed" + fi + + if [[ ! -e ${EROOT}/usr/src/linux ]]; then + ebegin "Creating /usr/src/linux symlink" + ln -f -n -s linux-${PV} "${EROOT}"/usr/src/linux + eend ${?} + else + local symlink_target=$(readlink "${EROOT}"/usr/src/linux) + local symlink_ver=${symlink_target#linux-} + if [[ ${symlink_target} == linux-* && -z ${symlink_ver//[0-9.]/} ]] + then + local symlink_pkg=${CATEGORY}/${PN}-${symlink_ver} + # if the current target is either being replaced, or still + # installed (probably depclean candidate), update the symlink + if has "${symlink_ver}" ${REPLACING_VERSIONS} || + has_version -r "~${symlink_pkg}" + then + ebegin "Updating /usr/src/linux symlink" + ln -f -n -s linux-${PV} "${EROOT}"/usr/src/linux + eend ${?} + fi + fi + fi +} + +pkg_prerm() { + : +} + +pkg_postrm() { + rm -f "${EROOT}/usr/src/linux-${PV}/initrd" && + rmdir --ignore-fail-on-non-empty "${EROOT}/usr/src/linux-${PV}" +} |