[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