Module: wine Branch: master Commit: 9ae4e8d98efc952918bcdae86b2f640c4b062a3b URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=9ae4e8d98efc952918bcdae8...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Sep 26 20:29:15 2006 +0200
explorer: Work around the latest HAL binary compatibility breakage.
---
configure | 92 ----------------------------------------------- configure.ac | 1 - include/config.h.in | 3 -- programs/explorer/hal.c | 12 ++++-- 4 files changed, 8 insertions(+), 100 deletions(-)
diff --git a/configure b/configure index 2df837e..619a90e 100755 --- a/configure +++ b/configure @@ -17053,98 +17053,6 @@ _ACEOF
fi
- { echo "$as_me:$LINENO: checking for -ldbus-1 soname" >&5 -echo $ECHO_N "checking for -ldbus-1 soname... $ECHO_C" >&6; } -if test "${ac_cv_lib_soname_dbus_1+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_get_soname_save_LIBS=$LIBS -LIBS="-ldbus-1 $LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dbus_error_init (); -int -main () -{ -return dbus_error_init (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *"* | *`* | *\*) ac_try_echo=$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo "$as_me:$LINENO: $ac_try_echo"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: $? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *"* | *`* | *\*) ac_try_echo=$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo "$as_me:$LINENO: $ac_try_echo"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: $? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *"* | *`* | *\*) ac_try_echo=$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo "$as_me:$LINENO: $ac_try_echo"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: $? = $ac_status" >&5 - (exit $ac_status); }; }; then - case "$LIBEXT" in - dylib) ac_cv_lib_soname_dbus_1=`otool -L conftest$ac_exeext | grep libdbus-1\.[0-9A-Za-z.]*dylib | sed -e "s/^.*/(libdbus-1.[0-9A-Za-z.]*dylib).*$/\1/"';2,$d'` ;; - so) ac_cv_lib_soname_dbus_1=`$ac_cv_path_LDD conftest$ac_exeext | grep libdbus-1\.so | sed -e "s/^.*(libdbus-1.so[^ ]*).*$/\1/"';2,$d'` ;; - esac - if test "x$ac_cv_lib_soname_dbus_1" = "x" - then - ac_cv_lib_soname_dbus_1="libdbus-1.$LIBEXT" - fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_soname_dbus_1="libdbus-1.$LIBEXT" -fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_get_soname_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_soname_dbus_1" >&5 -echo "${ECHO_T}$ac_cv_lib_soname_dbus_1" >&6; } -if test "${ac_cv_lib_soname_dbus_1+set}" = set; then - -cat >>confdefs.h <<_ACEOF -#define SONAME_LIBDBUS_1 "$ac_cv_lib_soname_dbus_1" -_ACEOF - -fi - { echo "$as_me:$LINENO: checking for -lhal soname" >&5 echo $ECHO_N "checking for -lhal soname... $ECHO_C" >&6; } if test "${ac_cv_lib_soname_hal+set}" = set; then diff --git a/configure.ac b/configure.ac index f7246c0..0ccb9d3 100644 --- a/configure.ac +++ b/configure.ac @@ -1137,7 +1137,6 @@ then WINE_GET_SONAME(Xrandr,XRRQueryExtension,[$X_LIBS -lXext -lX11 $X_EXTRA_LIBS]) WINE_GET_SONAME(freetype,FT_Init_FreeType,[$X_LIBS]) WINE_GET_SONAME(GL,glXQueryExtension,[$X_LIBS $X_EXTRA_LIBS]) - WINE_GET_SONAME(dbus-1,dbus_error_init) WINE_GET_SONAME(hal,libhal_ctx_new) WINE_GET_SONAME(txc_dxtn,fetch_2d_texel_rgba_dxt1) WINE_GET_SONAME(cups,cupsGetDefault) diff --git a/include/config.h.in b/include/config.h.in index 7f0a419..3869898 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -977,9 +977,6 @@ #undef SONAME_LIBCUPS /* Define to the soname of the libcurses library. */ #undef SONAME_LIBCURSES
-/* Define to the soname of the libdbus-1 library. */ -#undef SONAME_LIBDBUS_1 - /* Define to the soname of the libfontconfig library. */ #undef SONAME_LIBFONTCONFIG
diff --git a/programs/explorer/hal.c b/programs/explorer/hal.c index adb1281..bcb1d98 100644 --- a/programs/explorer/hal.c +++ b/programs/explorer/hal.c @@ -88,13 +88,17 @@ #undef DO_FUNC
static BOOL load_functions(void) { - void *dbus_handle, *hal_handle; + void *hal_handle; char error[128];
- if (!(dbus_handle = wine_dlopen(SONAME_LIBDBUS_1, RTLD_NOW, error, sizeof(error)))) goto failed; - if (!(hal_handle = wine_dlopen(SONAME_LIBHAL, RTLD_NOW, error, sizeof(error)))) goto failed; + /* Load libhal with RTLD_GLOBAL so that the dbus symbols are available. + * We can't load libdbus directly since libhal may have been built against a + * different version but with the same soname. Binary compatibility is for wimps. */
-#define DO_FUNC(f) if (!(p_##f = wine_dlsym( dbus_handle, #f, error, sizeof(error) ))) goto failed + if (!(hal_handle = wine_dlopen(SONAME_LIBHAL, RTLD_NOW|RTLD_GLOBAL, error, sizeof(error)))) + goto failed; + +#define DO_FUNC(f) if (!(p_##f = wine_dlsym( RTLD_DEFAULT, #f, error, sizeof(error) ))) goto failed DBUS_FUNCS; #undef DO_FUNC