From a48df9fbf812cd0fc00f5201a437f38b138c6df2 Mon Sep 17 00:00:00 2001 From: Dmitry Eremin Date: Mon, 2 Dec 2013 23:04:34 +0400 Subject: [PATCH] LU-4266 build: fix lbuild to work with OFED-3.5-x * 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 Reviewed-on: http://review.whamcloud.com/8451 Reviewed-by: James Simmons Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Bob Glossman Reviewed-by: Shuichi Ihara Reviewed-by: Oleg Drokin --- autoMakefile.am | 2 +- config/lustre-build-linux.m4 | 107 +---------------------------------------- contrib/lbuild/lbuild | 15 +++--- lnet/autoconf/lustre-lnet.m4 | 49 ++++++++++++++----- lnet/klnds/o2iblnd/Makefile.in | 6 +-- 5 files changed, 50 insertions(+), 129 deletions(-) diff --git a/autoMakefile.am b/autoMakefile.am index 768deeb..8dab812 100644 --- a/autoMakefile.am +++ b/autoMakefile.am @@ -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 diff --git a/config/lustre-build-linux.m4 b/config/lustre-build-linux.m4 index faf52a6..b1ec10e 100644 --- a/config/lustre-build-linux.m4 +++ b/config/lustre-build-linux.m4 @@ -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 ]) # diff --git a/contrib/lbuild/lbuild b/contrib/lbuild/lbuild index 464eb97..ffea52d 100755 --- a/contrib/lbuild/lbuild +++ b/contrib/lbuild/lbuild @@ -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 diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 6597dc3..f593139 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -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 @@ -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 diff --git a/lnet/klnds/o2iblnd/Makefile.in b/lnet/klnds/o2iblnd/Makefile.in index 569c266..31c3821 100644 --- a/lnet/klnds/o2iblnd/Makefile.in +++ b/lnet/klnds/o2iblnd/Makefile.in @@ -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@ -- 1.8.3.1