commit:     7e804a5ea4822b370bc0eb2fc33296ba4ec4cb7e
Author:     William Hubbs <william.hubbs <AT> sony <DOT> com>
AuthorDate: Sun Mar  8 18:43:15 2020 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Mon Mar  9 17:10:45 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7e804a5e

dev-lang/go: 1.14: check running kernel version before compiling

Compilation will fail if the host is running certain versions of the
Linux kernel with the message: runtime: mlock of signal stack failed: 12

Note from williamh:
The original pr checked for kernel versions not listed in the upstream
issue, so I reworked it. Also, it used pkg_setup instead of pkg_pretend
for the checks.

Closes: https://bugs.gentoo.org/711884
Closes: https://github.com/gentoo/gentoo/pull/14868
Signed-off-by: William Hubbs <williamh <AT> gentoo.org>

 dev-lang/go/go-1.14.ebuild | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/dev-lang/go/go-1.14.ebuild b/dev-lang/go/go-1.14.ebuild
index f7c4c78376b..f32caeeb399 100644
--- a/dev-lang/go/go-1.14.ebuild
+++ b/dev-lang/go/go-1.14.ebuild
@@ -8,7 +8,7 @@ export CTARGET=${CTARGET:-${CHOST}}
 
 MY_PV=${PV/_/}
 
-inherit toolchain-funcs
+inherit toolchain-funcs linux-info
 
 case ${PV}  in
 *9999*)
@@ -122,6 +122,26 @@ go_cross_compile()
        [[ $(go_tuple ${CBUILD}) != $(go_tuple) ]]
 }
 
+pkg_pretend()
+{
+       local msg
+       get_running_version
+
+       use kernel_linux || return 0
+       if kernel_is -eq 5 2; then
+               msg="${P} does not work with kernel version 5.2.x"
+       elif kernel_is -eq 5 3 && kernel_is -le 5 3 14; then
+               msg="${P} does not work with kernel versions 5.3 before 5.3.15"
+       elif kernel_is -eq 5 4 && kernel_is -le 5 4 1; then
+               msg="${P} does not work with kernel versions 5.4 before 5.4.2"
+       fi
+       if [[ -n ${msg} ]]; then
+               eerror $msg
+               eerror "See https://github.com/golang/go/issues/37436";
+               die "Attempted to build ${P} with unsupported kernel"
+       fi
+}
+
 src_compile()
 {
        if has_version -b dev-lang/go; then

Reply via email to