kernel-2.eclass: avoid lexicographical compare on versions, bug #705246
authorSergei Trofimovich <slyfox@gentoo.org>
Fri, 22 May 2020 19:10:43 +0000 (20:10 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Tue, 26 May 2020 22:00:08 +0000 (23:00 +0100)
Originally found in bug #705240 as:

```
if [[ ... || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
```

'>' are string comparisons. They are benign so far, but
will start failing on linux-10 :)

Let's be consistent and use version comparison.

Closes: https://bugs.gentoo.org/705246
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
eclass/kernel-2.eclass

index 07af8d8ab2c5b56081780e697a3b70e26d8b652e..d69182045c5b3caa7dccb080fad819b75f06e609 100644 (file)
@@ -1015,7 +1015,7 @@ postinst_sources() {
        #       K_SECURITY_UNSUPPORTED=deblob
 
        # if we are to forcably symlink, delete it if it already exists first.
-       if [[ ${K_SYMLINK} > 0 ]]; then
+       if [[ ${K_SYMLINK} -gt 0 ]]; then
                [[ -h ${EROOT}usr/src/linux ]] && { rm "${EROOT}"usr/src/linux || die; }
                MAKELINK=1
        fi
@@ -1078,7 +1078,7 @@ postinst_sources() {
        KV_PATCH=$(ver_cut 3 ${OKV})
        if [[ "$(tc-arch)" = "sparc" ]]; then
                if [[ $(gcc-major-version) -lt 4 && $(gcc-minor-version) -lt 4 ]]; then
-                       if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] ; then
+                       if [[ ${KV_MAJOR} -ge 3 || ver_test ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} -gt 2.6.24 ]] ; then
                                echo
                                elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
                                elog "you now need to do"
@@ -1272,7 +1272,7 @@ unipatch() {
        # do not apply fbcondecor patch to sparc/sparc64 as it breaks boot
        # bug #272676
        if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then
-               if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
+               if [[ ${KV_MAJOR} -ge 3 || ver_test ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} -gt 2.6.28 ]]; then
                        if [[ ! -z ${K_WANT_GENPATCHES} ]] ; then
                                UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor*.patch"
                                echo
@@ -1521,7 +1521,7 @@ kernel-2_src_unpack() {
        # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
        # only do this for kernel < 2.6.27 since this file does not exist in later
        # kernels
-       if [[ -n ${KV_MINOR} &&  ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]] ; then
+       if [[ -n ${KV_MINOR} && ver_test ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} -lt 2.6.27 ]] ; then
                sed -i \
                        -e 's|TOUT      := .tmp_gas_check|TOUT  := $(T).tmp_gas_check|' \
                        "${S}"/arch/ppc/Makefile