commit: dd40cfb4721f691b5596e334960dea58b97f986a
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 27 20:13:56 2019 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Sun Jan 27 20:27:53 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dd40cfb4
toolchain-glibc.eclass: avoid using KV_to_int and get_KV
'KV_to_int' and 'get_KV' are portage internals.
This change pulls in implementation of 'KV_to_int' and
'get_KV' as-is with a rename:
KV_to_int -> tc_glibc_KV_to_int
get_KV -> tc_glibc_get_KV (small API change)
Reported-by: Brian Harring
Reported-by: Michał Górny
Bug: https://bugs.gentoo.org/384041
Closes: https://bugs.gentoo.org/587320
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
eclass/toolchain-glibc.eclass | 54 +++++++++++++++++++++++++++++++++++++++----
1 file changed, 50 insertions(+), 4 deletions(-)
diff --git a/eclass/toolchain-glibc.eclass b/eclass/toolchain-glibc.eclass
index 0d252cc0ff4..7c134682db5 100644
--- a/eclass/toolchain-glibc.eclass
+++ b/eclass/toolchain-glibc.eclass
@@ -586,7 +586,53 @@ toolchain-glibc_pkg_setup() {
[[ ${EAPI:-0} == [0123] ]] && toolchain-glibc_pkg_pretend
}
-int_to_KV() {
+# The following Kernel version handling functions are mostly copied from
portage
+# source. It's better not to use linux-info.eclass here since a) it adds too
+# much magic, see bug 326693 for some of the arguments, and b) some of the
+# functions are just not provided.
+
+tc_glibc_get_KV() {
+ uname -r
+ return $?
+}
+
+tc_glibc_KV_major() {
+ [[ -z $1 ]] && return 1
+ local KV=$@
+ echo "${KV%%.*}"
+}
+
+tc_glibc_KV_minor() {
+ [[ -z $1 ]] && return 1
+ local KV=$@
+ KV=${KV#*.}
+ echo "${KV%%.*}"
+}
+
+tc_glibc_KV_micro() {
+ [[ -z $1 ]] && return 1
+ local KV=$@
+ KV=${KV#*.*.}
+ echo "${KV%%[^[:digit:]]*}"
+}
+
+tc_glibc_KV_to_int() {
+ [[ -z $1 ]] && return 1
+ local KV_MAJOR=$(tc_glibc_KV_major "$1")
+ local KV_MINOR=$(tc_glibc_KV_minor "$1")
+ local KV_MICRO=$(tc_glibc_KV_micro "$1")
+ local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
+
+ # We make version 2.2.0 the minimum version we will handle as
+ # a sanity check ... if its less, we fail ...
+ if [[ ${KV_int} -ge 131584 ]] ; then
+ echo "${KV_int}"
+ return 0
+ fi
+ return 1
+}
+
+tc_glibc_int_to_KV() {
local version=$1 major minor micro
major=$((version / 65536))
minor=$(((version % 65536) / 256))
@@ -595,7 +641,7 @@ int_to_KV() {
}
eend_KV() {
- [[ $(KV_to_int $1) -ge $(KV_to_int $2) ]]
+ [[ $(tc_glibc_KV_to_int $1) -ge $(tc_glibc_KV_to_int $2) ]]
eend $?
}
@@ -610,8 +656,8 @@ check_nptl_support() {
just_headers && return
local run_kv build_kv want_kv
- run_kv=$(int_to_KV $(get_KV))
- build_kv=$(int_to_KV $(get_kheader_version))
+ run_kv=$(tc_glibc_get_KV)
+ build_kv=$(tc_glibc_int_to_KV $(get_kheader_version))
want_kv=${NPTL_KERN_VER}
ebegin "Checking gcc for __thread support"