Whamcloud - gitweb
LU-3173 build: Incorrect detection of ldiskfs series to use
authorDmitry Eremin <dmitry.eremin@intel.com>
Wed, 29 May 2013 17:30:15 +0000 (21:30 +0400)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 31 Oct 2013 01:33:20 +0000 (21:33 -0400)
Extract correct upstream kernel release for RHEL kernels and
form it into RHEL_KERNEL_VERSION as
$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)-$(RHEL_RELEASE)
Then use this string for correct ldiskfs series selection.

Signed-off-by: Dmitry Eremin <dmitry.eremin@intel.com>
Change-Id: Idda0a4b02a5090b7be6fb81b8f98175559e575aa
Reviewed-on: http://review.whamcloud.com/6056
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
ldiskfs/config/ldiskfs-build.m4

index be144de..38fce59 100644 (file)
@@ -5,20 +5,17 @@ AC_DEFUN([LDISKFS_AC_LINUX_VERSION], [
        utsrelease2=${LINUX_OBJ}/include/linux/utsrelease.h
        utsrelease3=${LINUX_OBJ}/include/generated/utsrelease.h
        AS_IF([test -r ${utsrelease1} && fgrep -q UTS_RELEASE ${utsrelease1}], [
-               utsrelease=linux/version.h
+               utsrelease=${utsrelease1}
        ], [test -r ${utsrelease2} && fgrep -q UTS_RELEASE ${utsrelease2}], [
-               utsrelease=linux/utsrelease.h
+               utsrelease=${utsrelease2}
        ], [test -r ${utsrelease3} && fgrep -q UTS_RELEASE ${utsrelease3}], [
-               utsrelease=generated/utsrelease.h
+               utsrelease=${utsrelease3}
        ])
 
-       AS_IF([test "${utsrelease}"], [
-               kernsrcver=$((echo "#include <$utsrelease>";
-                            echo "kernsrcver=UTS_RELEASE") |
-                            cpp -I ${LINUX_OBJ}/include |
-                            grep "^kernsrcver=" | cut -d \" -f 2)
-
-               AS_IF([test -z "$kernsrcver"], [
+       AS_IF([test ! -z "${utsrelease}"], [
+               UTS_RELEASE=$(awk -F \" '/ UTS_RELEASE / { print [$]2 }' \
+                             ${utsrelease})
+               AS_IF([test -z "$UTS_RELEASE"], [
                        AC_MSG_RESULT([Not found])
                        AC_MSG_ERROR([*** Cannot determine kernel version.])
                ])
@@ -29,11 +26,11 @@ AC_DEFUN([LDISKFS_AC_LINUX_VERSION], [
        *** This is often provided by the kernel-devel package.])
        ])
 
-       AC_MSG_RESULT([${kernsrcver}])
+       AC_MSG_RESULT([${UTS_RELEASE}])
 
-       LINUX_VERSION=${kernsrcver}
+       LINUX_VERSION=${UTS_RELEASE}
        AC_SUBST(LINUX_VERSION)
-       LINUXRELEASE=${kernsrcver}
+       LINUXRELEASE=${UTS_RELEASE}
        AC_SUBST(LINUXRELEASE)
 ])
 
@@ -62,22 +59,19 @@ AC_MSG_RESULT($RELEASE)
 AC_SUBST(RELEASE)
 
 # check is redhat/suse kernels
-AC_MSG_CHECKING([that RedHat kernel])
-LB_LINUX_TRY_COMPILE([
-               #include <linux/version.h>
-       ],[
-               #ifndef RHEL_RELEASE_CODE
-               #error "not redhat kernel"
-               #endif
-       ],[
+AC_MSG_CHECKING([for RedHat kernel version])
+       AS_IF([fgrep -q RHEL_RELEASE ${LINUX_OBJ}/include/linux/version.h], [
                RHEL_KERNEL="yes"
-               AC_MSG_RESULT([yes])
-       ],[
-               AC_MSG_RESULT([no])
-])
-
-LB_LINUX_CONFIG([SUSE_KERNEL],[SUSE_KERNEL="yes"],[])
-
+               RHEL_RELEASE=$(expr 0$(awk -F \" '/ RHEL_RELEASE / { print [$]2 }' \
+                              ${LINUX_OBJ}/include/linux/version.h) + 1)
+               KERNEL_VERSION=$(sed -e 's/\(@<:@23@:>@\.@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/' <<< ${LINUXRELEASE})
+               RHEL_KERNEL_VERSION=${KERNEL_VERSION}-${RHEL_RELEASE}
+               AC_SUBST(RHEL_KERNEL_VERSION)
+               AC_MSG_RESULT([${RHEL_KERNEL_VERSION}])
+       ], [
+               AC_MSG_RESULT([not found])
+               LB_LINUX_CONFIG([SUSE_KERNEL],[SUSE_KERNEL="yes"],[])
+       ])
 ])
 
 # LB_ARG_REPLACE_PATH(PACKAGE, PATH)
@@ -635,8 +629,8 @@ AS_IF([$1], [
 
        SER=
        AS_IF([test x$RHEL_KERNEL = xyes], [
-               AS_VERSION_COMPARE([$LINUXRELEASE],[2.6.32-343],[
-               AS_VERSION_COMPARE([$LINUXRELEASE],[2.6.32],[],
+               AS_VERSION_COMPARE([$RHEL_KERNEL_VERSION],[2.6.32-343],[
+               AS_VERSION_COMPARE([$RHEL_KERNEL_VERSION],[2.6.32],[],
                [SER="2.6-rhel6.series"],[SER="2.6-rhel6.series"])],
                [SER="2.6-rhel6.4.series"],[SER="2.6-rhel6.4.series"])
        ], [test x$SUSE_KERNEL = xyes], [