Whamcloud - gitweb
LU-4266 build: fix lbuild to work with OFED-3.5-x 51/8451/4
authorDmitry Eremin <dmitry.eremin@intel.com>
Mon, 2 Dec 2013 19:04:34 +0000 (23:04 +0400)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 16 Dec 2013 03:23:59 +0000 (03:23 +0000)
* Remove OFED backport headers for all components except lnet.
* Move all OFED related autoconf testing into lnet/autoconf.
* After OFED built is done, there should only be one -devel rpm.
  We don't really need to filter out any version string.

Change-Id: If983ede2606e4c5c397f676cf16807f6e00318bc
Signed-off-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-on: http://review.whamcloud.com/8451
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Shuichi Ihara <sihara@ddn.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
autoMakefile.am
config/lustre-build-linux.m4
contrib/lbuild/lbuild
lnet/autoconf/lustre-lnet.m4
lnet/klnds/o2iblnd/Makefile.in

index 768deeb..8dab812 100644 (file)
@@ -72,7 +72,7 @@ all-am: modules
 modules: $(DEP) all-sources
        $(MAKE) CC="$(CC)" $(CROSS_VARS) -C $(LINUX_OBJ)             \
        -f $(PWD)/build/Makefile LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) \
-       LINUXINCLUDE='$(EXTRA_LNET_INCLUDE) -I$$(srctree)/arch/$$(SRCARCH)/include -I$$(srctree)/arch/$$(SRCARCH)/include/generated -Iinclude $$(if $$(KBUILD_SRC),-Iinclude2 -I$$(srctree)/include) -I$$(srctree)/arch/$$(SRCARCH)/include/uapi -Iarch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/uapi -Iinclude/generated/uapi -include $(CONFIG_INCLUDE)' \
+       LINUXINCLUDE='-I$$(srctree)/arch/$$(SRCARCH)/include -I$$(srctree)/arch/$$(SRCARCH)/include/generated -Iinclude $$(if $$(KBUILD_SRC),-Iinclude2 -I$$(srctree)/include) -I$$(srctree)/arch/$$(SRCARCH)/include/uapi -Iarch/$$(SRCARCH)/include/generated/uapi -I$$(srctree)/include/uapi -Iinclude/generated/uapi -include $(CONFIG_INCLUDE)' \
        $(MODULE_TARGET)=$(PWD) -o tmp_include_depends -o scripts -o \
        include/config/MARKER $@
 endif # LINUX
index faf52a6..b1ec10e 100644 (file)
@@ -381,7 +381,7 @@ AC_DEFUN([LB_LINUX_COMPILE_IFELSE],
 [m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl
 rm -f build/conftest.o build/conftest.mod.c build/conftest.ko
 SUBARCH=$(echo $target_cpu | sed -e 's/powerpc64/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/' -e 's/k1om/x86/')
-AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_LNET_INCLUDE -I$LINUX/arch/$SUBARCH/include -I$LINUX/arch/$SUBARCH/include/generated -Iinclude -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -I$LINUX/include/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL -I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include} -include $CONFIG_INCLUDE" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $CROSS_VARS $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
+AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] ${LD:+"LD=$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_OFED_INCLUDE -I$LINUX/arch/$SUBARCH/include -I$LINUX/arch/$SUBARCH/include/generated -Iinclude -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -I$LINUX/include/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL -I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include} -include $CONFIG_INCLUDE" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $CROSS_VARS $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
        [$4],
        [_AC_MSG_LOG_CONFTEST
 m4_ifvaln([$5],[$5])dnl])
@@ -471,104 +471,6 @@ AC_DEFUN([LB_LINUX_TRY_MAKE],
        )]
 )
 
-#
-# LB_CONFIG_COMPAT_RDMA
-#
-AC_DEFUN([LB_CONFIG_COMPAT_RDMA],
-[AC_MSG_CHECKING([whether to use Compat RDMA])
-# set default
-AC_ARG_WITH([o2ib],
-       AC_HELP_STRING([--with-o2ib=path],
-                      [build o2iblnd against path]),
-       [
-               case $with_o2ib in
-               yes)    O2IBPATHS="$LINUX $LINUX/drivers/infiniband"
-                       ENABLEO2IB=2
-                       ;;
-               no)     ENABLEO2IB=0
-                       ;;
-               *)      O2IBPATHS=$with_o2ib
-                       ENABLEO2IB=3
-                       ;;
-               esac
-       ],[
-               O2IBPATHS="$LINUX $LINUX/drivers/infiniband"
-               ENABLEO2IB=1
-       ])
-if test $ENABLEO2IB -eq 0; then
-       AC_MSG_RESULT([no])
-else
-       o2ib_found=false
-       for O2IBPATH in $O2IBPATHS; do
-               if test \( -f ${O2IBPATH}/include/rdma/rdma_cm.h -a \
-                          -f ${O2IBPATH}/include/rdma/ib_cm.h -a \
-                          -f ${O2IBPATH}/include/rdma/ib_verbs.h -a \
-                          -f ${O2IBPATH}/include/rdma/ib_fmr_pool.h \); then
-                       o2ib_found=true
-                       break
-               fi
-       done
-       compatrdma_found=false
-       if $o2ib_found; then
-               if test \( -f ${O2IBPATH}/include/linux/compat-2.6.h \); then
-                       compatrdma_found=true
-                       AC_MSG_RESULT([yes])
-                       AC_DEFINE(HAVE_COMPAT_RDMA, 1, [compat rdma found])
-               else
-                       AC_MSG_RESULT([no])
-               fi
-       fi
-fi
-])
-
-#
-# LB_CONFIG_OFED_BACKPORTS
-#
-# include any OFED backport headers in all compile commands
-# NOTE: this does only include the backport paths, not the OFED headers
-#       adding the OFED headers is done in the lnet portion
-AC_DEFUN([LB_CONFIG_OFED_BACKPORTS],
-[AC_MSG_CHECKING([whether to use any OFED backport headers])
-if test $ENABLEO2IB -eq 0; then
-       AC_MSG_RESULT([no])
-else
-       if ! $o2ib_found; then
-               AC_MSG_RESULT([no])
-               case $ENABLEO2IB in
-                       1) ;;
-                       2) AC_MSG_ERROR([kernel OpenIB gen2 headers not present]);;
-                       3) AC_MSG_ERROR([bad --with-o2ib path]);;
-                       *) AC_MSG_ERROR([internal error]);;
-               esac
-       else
-               if ! $compatrdma_found; then
-                       if test -f $O2IBPATH/config.mk; then
-                               . $O2IBPATH/config.mk
-                       elif test -f $O2IBPATH/ofed_patch.mk; then
-                               . $O2IBPATH/ofed_patch.mk
-                       fi
-               else
-                       if test x$RHEL_KERNEL = xyes; then
-                               case $RHEL_KERNEL_VERSION in
-                                       2.6.32-358*)
-                                               EXTRA_LNET_INCLUDE="$EXTRA_LNET_INCLUDE -DCONFIG_COMPAT_RHEL_6_4";;
-                               esac
-                       elif test x$SUSE_KERNEL = xyes; then
-                               SP=$(grep PATCHLEVEL /etc/SuSE-release | sed -e 's/.*= *//')
-                               EXTRA_LNET_INCLUDE="$EXTRA_LNET_INCLUDE -DCONFIG_COMPAT_SLES_11_$SP"
-                       fi
-               fi
-               if test -n "$BACKPORT_INCLUDES"; then
-                       OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/"
-                       EXTRA_LNET_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_LNET_INCLUDE"
-                       AC_MSG_RESULT([yes])
-               else
-                       AC_MSG_RESULT([no])
-               fi
-       fi
-fi
-])
-
 # LC_MODULE_LOADING
 # after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains
 # so we test if request_module is implemented or not
@@ -621,13 +523,6 @@ LB_LINUX_CONFIG([KALLSYMS],[],[
 
 # 2.6.28
 LC_MODULE_LOADING
-
-LB_CONFIG_COMPAT_RDMA
-
-# it's ugly to be doing anything with OFED outside of the lnet module, but
-# this has to be done here so that the backports path is set before all of
-# the LN_PROG_LINUX checks are done
-LB_CONFIG_OFED_BACKPORTS
 ])
 
 #
index 464eb97..ffea52d 100755 (executable)
@@ -1700,17 +1700,20 @@ build_ofed() {
     cd ${kib_rpm}-devel
     # the actual ofed RPMs don't have the -rc$n or -$date string appened that
     # might be present on the file
-    local linuxrelease=$(find_linux_release)
-    ofed_version=$(echo $ofed_version |
-                   sed -re 's/-(20[0-9]{6,6}-[0-9]{4,4}|rc[0-9]*)$//')
+    #local linuxrelease=$(find_linux_release)
+    #ofed_version=$(echo $ofed_version |
+    #               sed -re 's/-(20[0-9]{6,6}-[0-9]{4,4}|rc[0-9]*)$//')
     # FIXME
     # OFED version will have 'hyphen' for minor release. (e.g. 3.5-1, instead
     # of 3.5.1) compat-rdma and compat-rdma-devel could have same version
     # number, but currectly not. Once OFED fix this in the future release, we
     # can remove following filter.
-    ofed_version=$(echo $ofed_version |
-                   sed -re 's/-([0-9]*-[rR][cC][0-9]*)$//')
-    local rpm=$(ls $TOPDIR/RPMS/*/${kib_rpm}-devel-${ofed_version}-${linuxrelease//-/_}.*.rpm)
+    #ofed_version=$(echo $ofed_version |
+    #               sed -re 's/-([0-9]*-[rR][cC][0-9]*)$//')
+    #local rpm=$(ls $TOPDIR/RPMS/*/${kib_rpm}-devel-${ofed_version}-${linuxrelease//-/_}.*.rpm)
+    # I dont' know why we have gone through the trouble to filter out the name
+    # of the rpm there should only be one ${kib_rpm}-devel built
+    local rpm=$(ls $TOPDIR/RPMS/*/${kib_rpm}-devel-*.rpm)
     if ! rpm2cpio < $rpm | cpio -id; then
         fatal 1 "could not unpack the ${kib_rpm}-devel rpm."
     fi
index 6597dc3..f593139 100644 (file)
@@ -358,9 +358,8 @@ AC_SUBST(MXLND)
 #
 # LN_CONFIG_O2IB
 #
-AC_DEFUN([LN_CONFIG_O2IB],[
-
-AC_MSG_CHECKING([whether to enable OpenIB gen2 support])
+AC_DEFUN([LN_CONFIG_O2IB],
+[AC_MSG_CHECKING([whether to use Compat RDMA])
 # set default
 AC_ARG_WITH([o2ib],
        AC_HELP_STRING([--with-o2ib=path],
@@ -381,7 +380,7 @@ AC_ARG_WITH([o2ib],
                ENABLEO2IB=1
        ])
 if test $ENABLEO2IB -eq 0; then
-       AC_MSG_RESULT([disabled])
+       AC_MSG_RESULT([no])
 else
        o2ib_found=false
        for O2IBPATH in $O2IBPATHS; do
@@ -396,7 +395,7 @@ else
                        fi
                        o2ib_found=true
                        break
-               fi
+               fi
        done
        if ! $o2ib_found; then
                AC_MSG_RESULT([no])
@@ -407,11 +406,38 @@ else
                        *) AC_MSG_ERROR([internal error]);;
                esac
        else
+               compatrdma_found=false
+               if test -f ${O2IBPATH}/include/linux/compat-2.6.h; then
+                       compatrdma_found=true
+                       AC_MSG_RESULT([yes])
+                       AC_DEFINE(HAVE_COMPAT_RDMA, 1, [compat rdma found])
+               else
+                       AC_MSG_RESULT([no])
+               fi
+               if ! $compatrdma_found; then
+                       if test -f $O2IBPATH/config.mk; then
+                               . $O2IBPATH/config.mk
+                       elif test -f $O2IBPATH/ofed_patch.mk; then
+                               . $O2IBPATH/ofed_patch.mk
+                       fi
+               else
+                       case $RHEL_KERNEL_VERSION in
+                               2.6.32-358*)
+                                       EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_4";;
+                       esac
+               fi
+               AC_MSG_CHECKING([whether to use any OFED backport headers])
+               if test -n "$BACKPORT_INCLUDES"; then
+                       OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/"
+                       EXTRA_OFED_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_OFED_INCLUDE"
+                       AC_MSG_RESULT([yes])
+               else
+                       AC_MSG_RESULT([no])
+               fi
+
+               AC_MSG_CHECKING([whether to enable OpenIB gen2 support])
                O2IBPATH=$(readlink --canonicalize $O2IBPATH)
-               O2IBCPPFLAGS="-I$O2IBPATH/include"
-               EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
-               EXTRA_KCFLAGS="$EXTRA_KCFLAGS $O2IBCPPFLAGS"
-               EXTRA_LNET_INCLUDE="$EXTRA_LNET_INCLUDE $O2IBCPPFLAGS"
+               EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -I$O2IBPATH/include"
 
                LB_LINUX_TRY_COMPILE([
                        #include <linux/version.h>
@@ -445,7 +471,6 @@ else
                        *) AC_MSG_ERROR([internal error]);;
                        esac
                        O2IBLND=""
-                       O2IBCPPFLAGS=""
                ])
                # we know at this point that the found OFED source is good
                O2IB_SYMVER=""
@@ -473,12 +498,10 @@ else
                fi
 
                LN_CONFIG_OFED_SPEC
-               EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
        fi
 fi
 
-AC_SUBST(EXTRA_LNET_INCLUDE)
-AC_SUBST(O2IBCPPFLAGS)
+AC_SUBST(EXTRA_OFED_INCLUDE)
 AC_SUBST(O2IBLND)
 
 # In RHEL 6.2, rdma_create_id() takes the queue-pair type as a fourth argument
index 569c266..31c3821 100644 (file)
@@ -1,8 +1,8 @@
 MODULES := ko2iblnd
 ko2iblnd-objs := o2iblnd.o o2iblnd_cb.o o2iblnd_modparams.o
 
-# Need to make sure we use PRE, not POST here so that an external OFED
-# source pool overrides any in-kernel OFED sources
-EXTRA_PRE_CFLAGS := @O2IBCPPFLAGS@
+# Need to make sure that an external OFED source pool overrides
+# any in-kernel OFED sources
+NOSTDINC_FLAGS += @EXTRA_OFED_INCLUDE@
 
 @INCLUDE_RULES@