[PATCH/Samba 3] Use portable version of LD_LIBRARY_PATH when running Samba 4 tests

Stefan (metze) Metzmacher metze at samba.org
Sun Jan 6 08:01:23 GMT 2008


Jelmer Vernooij schrieb:
> The attached patch updates Samba 3 to use a portable equivalent of
> LD_LIBRARY_PATH to find libldb for Samba 4's smbtorture. It also brings
> across the required tests for this from libreplace. 
> 
> This should fix smbtorture4 running against Samba 3 on AIX.
> 
> If somebody could review and merge this, that would be awesome. 
> 
> Cheers,
> 
> Jelmer
> 
> 
> ------------------------------------------------------------------------
> 
> diff --git a/source/Makefile.in b/source/Makefile.in
> index 2267be4..b10425b 100644
> --- a/source/Makefile.in
> +++ b/source/Makefile.in
> @@ -21,6 +21,7 @@ smbtorture4_path=@smbtorture4_path@
>  LIBS=@LIBS@
>  CC=@CC@
>  SHLD=@SHLD@
> +LIB_PATH_VAR=@LIB_PATH_VAR@
>  
>  ## Dynamic shared libraries build settings
>  DSO_EXPORTS_CMD=-Wl,--version-script,$(srcdir)/exports/`basename $@ | sed 's/@SHLIBEXT@$$/syms/'`
> @@ -2154,16 +2155,18 @@ test_pam_modules: pam_modules
>  			|| exit 1; \
>  	done
>  
> +
>  ##
>  ## Targets for 'make test'
>  ##
>  test: all torture timelimit
>  	@echo Running Test suite
> -	@PERL="$(PERL)" $(srcdir)/script/tests/selftest.sh ${selftest_prefix}/st all "${smbtorture4_path}"
> +	@LIB_PATH_VAR=$(LIB_PATH_VAR) PERL="$(PERL)" $(srcdir)/script/tests/selftest.sh ${selftest_prefix}/st all "${smbtorture4_path}"
>  
>  valgrindtest: all torture timelimit
>  	@echo Running Test suite with valgrind
> -	@NMBD_VALGRIND="xterm -n nmbd -e valgrind -q --db-attach=yes --num-callers=30" \
> +	@LIB_PATH_VAR=$(LIB_PATH_VAR) \
> +	 NMBD_VALGRIND="xterm -n nmbd -e valgrind -q --db-attach=yes --num-callers=30" \
>  	 WINBINDD_VALGRIND="xterm -n winbindd -e valgrind -q --db-attach=yes --num-callers=30" \
>  	 SMBD_VALGRIND="xterm -n smbd -e valgrind -q --db-attach=yes --num-callers=30" \
>  	 VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/st/valgrind.log" \
> diff --git a/source/configure.in b/source/configure.in
> index 934a994..5eb85c7 100644
> --- a/source/configure.in
> +++ b/source/configure.in
> @@ -2037,6 +2037,8 @@ AC_MSG_RESULT([$PICFLAG])
>  
>  AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
>  
> +AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
> +
>  ################
>  
>  AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
> diff --git a/source/lib/replace/libreplace_ld.m4 b/source/lib/replace/libreplace_ld.m4
> index fd85ef9..cb8e214 100644
> --- a/source/lib/replace/libreplace_ld.m4
> +++ b/source/lib/replace/libreplace_ld.m4
> @@ -1,3 +1,23 @@
> +#
> +# This offers a nice overview how to build shared libraries on all platforms
> +#        http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html
> +#
> +
> +AC_DEFUN([AC_LIBREPLACE_STLD],
> +[
> +	AC_PATH_PROG(PROG_AR, ar)
> +
> +	STLD=${PROG_AR}
> +
> +	AC_SUBST(STLD)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_STLD_FLAGS],
> +[
> +	STLD_FLAGS="-rcs"
> +	AC_SUBST(STLD_FLAGS)
> +])
> +
>  AC_DEFUN([AC_LD_EXPORT_DYNAMIC],
>  [
>  saved_LDFLAGS="$LDFLAGS"
> @@ -67,48 +87,102 @@ case "$host_os" in
>  		PICFLAG="-KPIC"
>  		;;
>  	*darwin*)
> +		PICFLAG="-fno-common"
>  		;;
>  esac
>  AC_SUBST(PICFLAG)
>  ])
>  
> -AC_DEFUN([AC_LD_SHLDFLAGS],
> +AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_LINKER],
> +[
> +	LD_SHLIB_LINKER="${CC}"
> +
> +	case "$host_os" in
> +		*irix*)
> +			LD_SHLIB_LINKER="${PROG_LD}"
> +			;;
> +	esac
> +
> +	AC_SUBST(LD_SHLIB_LINKER)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_FLAGS],
>  [
> -	SHLD_FLAGS="-shared"
> +	LD_SHLIB_FLAGS="-shared"
>  
>  	case "$host_os" in
>  		*linux*)
> -			SHLD_FLAGS="-shared -Wl,-Bsymbolic"
> +			LD_SHLIB_FLAGS="-shared -Wl,-Bsymbolic"
>  			;;
>  		*solaris*)
> -			SHLD_FLAGS="-G"
> +			LD_SHLIB_FLAGS="-G"
>  			if test "${GCC}" = "no"; then
>  				## ${CFLAGS} added for building 64-bit shared 
>  				## libs using Sun's Compiler
> -				SHLD_FLAGS="-G \${CFLAGS}"
> +				LD_SHLIB_FLAGS="-G \${CFLAGS}"
>  			fi
>  			;;
>  		*sunos*)
> -			SHLD_FLAGS="-G"
> +			LD_SHLIB_FLAGS="-G"
>  			;;
>  		*irix*)
> -			SHLD_FLAGS="-shared"
> +			LD_SHLIB_FLAGS="-shared"
>  			;;
>  		*aix*)
> -			SHLD_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
> +			LD_SHLIB_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
>  			;;
>  		*hpux*)
>  			if test "${GCC}" = "yes"; then
> -				SHLD_FLAGS="-shared"
> +				LD_SHLIB_FLAGS="-shared"
>  			else
> -				SHLD_FLAGS="-b"
> +				LD_SHLIB_FLAGS="-b"
>  			fi
>  			;;
> +		*osf*)
> +			LD_SHLIB_FLAGS="-shared"
> +			;;
>  		*darwin*)
> -			SHLD_FLAGS="-dynamiclib"
> +			LD_SHLIB_FLAGS="-dynamiclib -Wl,-search_paths_first"
>  			;;
>  	esac
>  
> +	AC_SUBST(LD_SHLIB_FLAGS)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_DISALLOW_UNDEF_FLAG],
> +[
> +	LD_SHLIB_DISALLOW_UNDEF_FLAG=""
> +
> +	#
> +	# TODO: enforce error not only warnings
> +	#
> +	# NOTE: -Wl,--no-allow-shlib-undefined isn't what we want...
> +	#       as it bails out on broken system libraries
> +	#
> +	case "$host_os" in
> +		*osf*)
> +			LD_SHLIB_DISALLOW_UNDEF_FLAG="-warning_unresolved"
> +			;;
> +		*darwin*)
> +			LD_SHLIB_DISALLOW_UNDEF_FLAG="-undefined error"
> +			;;
> +	esac
> +
> +	AC_SUBST(LD_SHLIB_DISALLOW_UNDEF_FLAG)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_SHLD],
> +[
> +	AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_LINKER])
> +	SHLD="$LD_SHLIB_LINKER"
> +	AC_SUBST(SHLD)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_SHLD_FLAGS],
> +[
> +	AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_FLAGS])
> +	AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_DISALLOW_UNDEF_FLAG])
> +	SHLD_FLAGS="$LD_SHLIB_FLAGS $LD_SHLIB_DISALLOW_UNDEF_FLAG"
>  	AC_SUBST(SHLD_FLAGS)
>  ])
>  
> @@ -157,7 +231,7 @@ AC_DEFUN([AC_LD_SONAMEFLAG],
>  			SONAMEFLAG="-Wl,-soname,"
>  			;;
>  		*hpux*)
> -			SONAMEFLAG="-Wl,+h "
> +			SONAMEFLAG="-Wl,+h,"
>  			;;
>  		*osf*)
>  			SONAMEFLAG="-Wl,-soname,"
> @@ -166,7 +240,74 @@ AC_DEFUN([AC_LD_SONAMEFLAG],
>  			SONAMEFLAG="-Wl,-soname,"
>  			;;
>  		*darwin*)
> -			SONAMEFLAG="-install_name "
> +			SONAMEFLAG="#"
> +			;;
> +		*aix*)
> +			# Not supported
> +			SONAMEFLAG="#"
>  			;;
>  		esac
>  ])
> +
> +AC_DEFUN([AC_LIBREPLACE_MDLD],
> +[
> +	AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_LINKER])
> +	MDLD="$LD_SHLIB_LINKER"
> +	AC_SUBST(MDLD)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_ALLOW_UNDEF_FLAG],
> +[
> +	LD_ALLOW_SHLIB_UNDEF_FLAG=""
> +
> +	case "$host_os" in
> +		*linux*)
> +			LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,--allow-shlib-undefined"
> +			;;
> +		*osf*)
> +			LD_SHLIB_ALLOW_UNDEF_FLAG="-expect_unresolved '*'"
> +			;;
> +		*darwin*)
> +			LD_SHLIB_ALLOW_UNDEF_FLAG="-undefined dynamic_lookup"
> +			;;
> +	esac
> +
> +	AC_SUBST(LD_SHLIB_ALLOW_UNDEF_FLAG)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_MDLD_FLAGS],
> +[
> +	AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_FLAGS])
> +	AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_ALLOW_UNDEF_FLAG])
> +	MDLD_FLAGS="$LD_SHLIB_FLAGS $LD_SHLIB_ALLOW_UNDEF_FLAG"
> +	AC_SUBST(MDLD_FLAGS)
> +])
> +
> +AC_DEFUN([AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR],
> +[
> +	case "$host_os" in
> +		*linux*)
> +			LIB_PATH_VAR=LD_LIBRARY_PATH
> +		;;
> +		*solaris*)
> +			LIB_PATH_VAR=LD_LIBRARY_PATH
> +		;;
> +		*hpux*)
> +			LIB_PATH_VAR=SHLIB_PATH
> +		;;
> +		*osf*)
> +			LIB_PATH_VAR=LD_LIBRARY_PATH
> +		;;
> +		*aix*)
> +			LIB_PATH_VAR=LIB_PATH
> +			;;
> +		*irix*)
> +			LIB_PATH_VAR=LD_LIBRARY_PATH
> +			;;
> +		*darwin*)
> +			LIB_PATH_VAR=DYLD_LIBRARY_PATH
> +			;;
> +	esac
> +
> +	AC_SUBST(LIB_PATH_VAR)
> +])
> diff --git a/source/script/tests/tests_all.sh b/source/script/tests/tests_all.sh
> index 2edc025..3871b33 100755
> --- a/source/script/tests/tests_all.sh
> +++ b/source/script/tests/tests_all.sh
> @@ -1,4 +1,3 @@
> -
>  $SCRIPTDIR/test_local_s3.sh || failed=`expr $failed + $?`
>  $SCRIPTDIR/test_smbtorture_s3.sh //$SERVER_IP/tmp $USERNAME $PASSWORD "" || failed=`expr $failed + $?`
>  echo "Testing encrypted"
> @@ -8,9 +7,8 @@ echo "Testing encrypted"
>  $SCRIPTDIR/test_smbclient_s3.sh $SERVER $SERVER_IP "-e" || failed=`expr $failed + $?`
>  $SCRIPTDIR/test_wbinfo_s3.sh $WORKGROUP $SERVER $USERNAME $PASSWORD || failed=`expr $failed + $?`
>  
> -LD_LIBRARY_PATH="$SAMBA4SHAREDDIR:$LD_LIBRARY_PATH"
> -echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
> -export LD_LIBRARY_PATH
> +eval "$LIB_PATH_VAR="\$SAMBA4SHAREDDIR:\$LIB_PATH_VAR"; export $LIB_PATH_VAR"

don't we need \$$LIB_PATH_VAR after : ?

> +echo "$LIB_PATH_VAR=$LD_LIBRARY_PATH"

why $LD_LIBRARY_PATH here? shouldn't it be
eval echo "$LIB_PATH_VAR=\$$LIB_PATH_VAR"

metze
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 249 bytes
Desc: OpenPGP digital signature
Url : http://lists.samba.org/archive/samba-technical/attachments/20080106/5a965fc4/signature.bin


More information about the samba-technical mailing list