sys-kernel/kpatch: sync live ebuild
authorStefan Strogin <steils@gentoo.org>
Mon, 29 Jul 2019 02:28:03 +0000 (05:28 +0300)
committerStefan Strogin <steils@gentoo.org>
Tue, 30 Jul 2019 01:11:58 +0000 (04:11 +0300)
Package-Manager: Portage-2.3.69, Repoman-2.3.16
Signed-off-by: Stefan Strogin <steils@gentoo.org>
sys-kernel/kpatch/kpatch-9999.ebuild

index 0d6aa6e706a4eecd2320ecc06f2d9f71960ead28..dd2b30d0b35172f5b1ecc9737b0652e6ca371f70 100644 (file)
@@ -1,9 +1,9 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI=7
 
-inherit linux-info linux-mod flag-o-matic
+inherit flag-o-matic linux-mod
 
 if [[ "${PV}" == "9999" ]]; then
        inherit git-r3
@@ -18,45 +18,46 @@ HOMEPAGE="https://github.com/dynup/kpatch"
 
 LICENSE="GPL-2+"
 SLOT="0"
-IUSE="examples +modules test"
+IUSE="contrib +kpatch +kpatch-build kmod test"
 
 RDEPEND="
        app-crypt/pesign
-       dev-libs/openssl:0=
        sys-libs/zlib
        sys-apps/pciutils
 "
 
 DEPEND="
        ${RDEPEND}
-       test? ( dev-util/shellcheck )
        dev-libs/elfutils
        sys-devel/bison
+       test? ( dev-util/shellcheck-bin )
 "
 
-pkg_pretend() {
-       if kernel_is gt 3 9 0; then
-               if ! linux_config_exists; then
-                       eerror "Unable to check the currently running kernel for kpatch support"
-                       eerror "Please be sure a .config file is available in the kernel src dir"
-                       eerror "and ensure the kernel has been built."
+pkg_setup() {
+       if use kmod; then
+               if kernel_is gt 3 9 0; then
+                       if ! linux_config_exists; then
+                               eerror "Unable to check the currently running kernel for kpatch support"
+                               eerror "Please be sure a .config file is available in the kernel src dir"
+                               eerror "and ensure the kernel has been built."
+                       else
+                               # Fail to build if these kernel options are not enabled (see kpatch/kmod/core/Makefile)
+                               CONFIG_CHECK="FUNCTION_TRACER HAVE_FENTRY MODULES SYSFS KALLSYMS_ALL"
+                               ERROR_FUNCTION_TRACER="CONFIG_FUNCTION_TRACER must be enabled in the kernel's config file"
+                               ERROR_HAVE_FENTRY="CONFIG_HAVE_FENTRY must be enabled in the kernel's config file"
+                               ERROR_MODULES="CONFIG_MODULES must be enabled in the kernel's config file"
+                               ERROR_SYSFS="CONFIG_SYSFS must be enabled in the kernel's config file"
+                               ERROR_KALLSYMS_ALL="CONFIG_KALLSYMS_ALL must be enabled in the kernel's config file"
+                       fi
                else
-                       # Fail to build if these kernel options are not enabled (see kpatch/kmod/core/Makefile)
-                       CONFIG_CHECK="FUNCTION_TRACER HAVE_FENTRY MODULES SYSFS KALLSYMS_ALL"
-                       ERROR_FUNCTION_TRACER="CONFIG_FUNCTION_TRACER must be enabled in the kernel's config file"
-                       ERROR_HAVE_FENTRY="CONFIG_HAVE_FENTRY must be enabled in the kernel's config file"
-                       ERROR_MODULES="CONFIG_MODULES must be enabled in the kernel's config file"
-                       ERROR_SYSFS="CONFIG_SYSFS must be enabled in the kernel's config file"
-                       ERROR_KALLSYMS_ALL="CONFIG_KALLSYMS_ALL must be enabled in the kernel's config file"
+                       eerror
+                       eerror "kpatch is not available for Linux kernels below 4.0.0"
+                       eerror
+                       die "Upgrade the kernel sources before installing kpatch."
                fi
-       else
-               eerror
-               eerror "kpatch is not available for Linux kernels below 4.0.0"
-               eerror
-               die "Upgrade the kernel sources before installing kpatch."
+               check_extra_config
        fi
 
-       check_extra_config
 }
 
 src_prepare() {
@@ -65,13 +66,30 @@ src_prepare() {
 }
 
 src_compile() {
-       set_arch_to_kernel
-       emake all
+       use kpatch-build && emake -C kpatch-build
+       use kpatch && emake -C kpatch
+       use kmod && set_arch_to_kernel && emake -C kmod
+       use contrib && emake -C contrib
+       use test && emake check
 }
 
 src_install() {
-       set_arch_to_kernel
-       emake DESTDIR="${D}" PREFIX="/usr" install
+       if use kpatch-build; then
+               emake DESTDIR="${D}" PREFIX="/usr" install -C kpatch-build
+               insinto /usr/share/${PN}/patch
+               doins kmod/patch/kpatch{.lds.S,-macros.h,-patch.h,-patch-hook.c}
+               doins kmod/patch/{livepatch-patch-hook.c,Makefile,patch-hook.c}
+               doins kmod/core/kpatch.h
+               doman man/kpatch-build.1
+       fi
+
+       if use kpatch; then
+               emake DESTDIR="${D}" PREFIX="/usr" install -C kpatch
+               doman man/kpatch.1
+       fi
+
+       use kmod && set_arch_to_kernel && emake DESTDIR="${D}" PREFIX="/usr" install -C kmod
+       use contrib && emake DESTDIR="${D}" PREFIX="/usr" install -C contrib
 
-       einstalldocs
+       dodoc README.md doc/patch-author-guide.md
 }