Subject: Re: chat/gaim: _dlsym_auto_underscore problem on MacOSX
To: Ronald van der Pol <Ronald.vanderPol@rvdp.org>
From: Brian A. Seklecki <lavalamp@spiritual-machines.org>
List: tech-pkg
Date: 09/19/2004 13:51:16
On Sun, 2004-09-19 at 13:39, Brian A. Seklecki wrote:
> This sound/libao fixes that problem, however did you notice dylink
> breakage in the gAIM modules in localbase/lib/gaim/* ?  I think it may

With regard to gAIM modules link breakage on OS/X, I refer to:

% gaim -d 
sound: Initializing sound output drivers.
plugins: registering plugin-load signal
plugins: registering plugin-unload signal
plugins: probing /usr/pkg/lib/gaim/docklet.so
plugins: /usr/pkg/lib/gaim/docklet.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_away_messages
_awaymessage
_create_away_mess
_do_away_message
_do_im_back
_gaim_accounts_auto_login
_gaim_accounts_get_handle
_gaim_connections_disconnect_all
_gaim_connections_get_all
_gaim_connections_get_co
plugins: probing /usr/pkg/lib/gaim/docklet.la
plugins: probing /usr/pkg/lib/gaim/docklet.a
plugins: probing /usr/pkg/lib/gaim/gaim-remote.so
plugins: /usr/pkg/lib/gaim/gaim-remote.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_away_messages
_do_away_message
_do_im_back
_gaim_account_connect
_gaim_account_get_protocol_id
_gaim_account_get_username
_gaim_accounts_get_all
_gaim_blist_request_add_buddy
_gaim_connection_get_account
_gaim
plugins: probing /usr/pkg/lib/gaim/gaim-remote.la
plugins: probing /usr/pkg/lib/gaim/gaim-remote.a
plugins: probing /usr/pkg/lib/gaim/gestures.so
plugins: /usr/pkg/lib/gaim/gestures.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_conv_window_add_conversation
_gaim_conv_window_get_conversation_count
_gaim_conv_window_new
_gaim_conv_window_remove_conversation
_gaim_conv_window_show
_gaim_conv_window_switch_conversation
_gaim_convers
plugins: probing /usr/pkg/lib/gaim/gestures.la
plugins: probing /usr/pkg/lib/gaim/gestures.a
plugins: probing /usr/pkg/lib/gaim/ssl.so
plugins: /usr/pkg/lib/gaim/ssl.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_plugin_is_loaded
_gaim_plugin_load
_gaim_plugin_register
_gaim_plugin_unload
_gaim_plugins_get_all
_gaim_plugins_get_loaded

plugins: probing /usr/pkg/lib/gaim/ssl.la
plugins: probing /usr/pkg/lib/gaim/ssl.a
plugins: probing /usr/pkg/lib/gaim/ssl-gnutls.so
plugins: /usr/pkg/lib/gaim/ssl-gnutls.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_debug_error
_gaim_debug_info
_gaim_plugin_register
_gaim_ssl_close
_gaim_ssl_get_ops
_gaim_ssl_set_ops

plugins: probing /usr/pkg/lib/gaim/ssl-gnutls.la
plugins: probing /usr/pkg/lib/gaim/ssl-gnutls.a
plugins: probing /usr/pkg/lib/gaim/ssl-nss.so
plugins: /usr/pkg/lib/gaim/ssl-nss.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_plugin_register

plugins: probing /usr/pkg/lib/gaim/ssl-nss.la
plugins: probing /usr/pkg/lib/gaim/ssl-nss.a
plugins: probing /usr/pkg/lib/gaim/ticker.so
plugins: /usr/pkg/lib/gaim/ticker.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_blist_get_handle
_gaim_buddy_get_alias
_gaim_connections_get_all
_gaim_connections_get_handle
_gaim_conversation_new
_gaim_debug
_gaim_get_blist
_gaim_gtk_blist_get_status_icon
_gaim_plugin_register
_gaim
plugins: probing /usr/pkg/lib/gaim/ticker.la
plugins: probing /usr/pkg/lib/gaim/ticker.a
plugins: probing /usr/pkg/lib/gaim/autorecon.so
plugins: /usr/pkg/lib/gaim/autorecon.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_connect
_gaim_accounts_get_all
_gaim_accounts_get_handle
_gaim_connection_get_account
_gaim_connections_get_handle
_gaim_connections_get_ui_ops
_gaim_connections_set_ui_ops
_gaim_debug
_gaim_plugi
plugins: probing /usr/pkg/lib/gaim/autorecon.la
plugins: probing /usr/pkg/lib/gaim/autorecon.a
plugins: probing /usr/pkg/lib/gaim/extplacement.so
plugins: /usr/pkg/lib/gaim/extplacement.so is unloadable: dlcompat:
dyld: gaim Undefined symbols:
_gaim_conv_placement_add_fnc
_gaim_conv_placement_remove_fnc
_gaim_conv_window_add_conversation
_gaim_conv_window_get_active_conversation
_gaim_conv_window_get_conversation_count
_gaim_conv_window_new
_gaim_con
plugins: probing /usr/pkg/lib/gaim/extplacement.la
plugins: probing /usr/pkg/lib/gaim/extplacement.a
plugins: probing /usr/pkg/lib/gaim/history.so
plugins: /usr/pkg/lib/gaim/history.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_conversation_get_account
_gaim_conversation_get_name
_gaim_conversation_get_type
_gaim_conversations_get_handle
_gaim_log_free
_gaim_log_get_logs
_gaim_log_read
_gaim_plugin_register
_gaim_signal_connect

plugins: probing /usr/pkg/lib/gaim/history.la
plugins: probing /usr/pkg/lib/gaim/history.a
plugins: probing /usr/pkg/lib/gaim/iconaway.so
plugins: /usr/pkg/lib/gaim/iconaway.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_connection
_gaim_accounts_get_handle
_gaim_blist_set_visible
_gaim_conv_window_get_ui_ops
_gaim_get_windows
_gaim_gtk_conversations_get_win_ui_ops
_gaim_plugin_register
_gaim_signal_connect
_i
plugins: probing /usr/pkg/lib/gaim/iconaway.la
plugins: probing /usr/pkg/lib/gaim/iconaway.a
plugins: probing /usr/pkg/lib/gaim/idle.so
plugins: /usr/pkg/lib/gaim/idle.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_account_get_connection
_gaim_account_get_username
_gaim_debug
_gaim_plugin_action_new
_gaim_plugin_register
_gaim_request_field_account_new
_gaim_request_field_account_set_show_all
_gaim_request_field_gro
plugins: probing /usr/pkg/lib/gaim/idle.la
plugins: probing /usr/pkg/lib/gaim/idle.a
plugins: probing /usr/pkg/lib/gaim/notify.so
plugins: /usr/pkg/lib/gaim/notify.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_account_get_connection
_gaim_conv_window_get_active_conversation
_gaim_conv_window_get_conversations
_gaim_conversation_autoset_title
_gaim_conversation_get_data
_gaim_conversation_get_index
_gaim_convers
plugins: probing /usr/pkg/lib/gaim/notify.la
plugins: probing /usr/pkg/lib/gaim/notify.a
plugins: probing /usr/pkg/lib/gaim/relnot.so
plugins: /usr/pkg/lib/gaim/relnot.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_connections_get_all
_gaim_connections_get_handle
_gaim_core_get_version
_gaim_notify_formatted
_gaim_plugin_register
_gaim_prefs_add_int
_gaim_prefs_add_none
_gaim_prefs_get_int
_gaim_prefs_set_int
_gaim_
plugins: probing /usr/pkg/lib/gaim/relnot.la
plugins: probing /usr/pkg/lib/gaim/relnot.a
plugins: probing /usr/pkg/lib/gaim/spellchk.so
plugins: /usr/pkg/lib/gaim/spellchk.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_conversations_get_handle
_gaim_debug
_gaim_gtk_make_frame
_gaim_plugin_register
_gaim_signal_connect
_gaim_user_dir

plugins: probing /usr/pkg/lib/gaim/spellchk.la
plugins: probing /usr/pkg/lib/gaim/spellchk.a
plugins: probing /usr/pkg/lib/gaim/statenotify.so
plugins: /usr/pkg/lib/gaim/statenotify.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_blist_get_handle
_gaim_buddy_get_alias
_gaim_conversation_write
_gaim_find_conversation_with_account
_gaim_plugin_pref_frame_add
_gaim_plugin_pref_frame_new
_gaim_plugin_pref_new_with_label
_gaim_plugin_p
plugins: probing /usr/pkg/lib/gaim/statenotify.la
plugins: probing /usr/pkg/lib/gaim/statenotify.a
plugins: probing /usr/pkg/lib/gaim/timestamp.so
plugins: /usr/pkg/lib/gaim/timestamp.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_conversation_get_data
_gaim_conversation_set_data
_gaim_conversation_write
_gaim_conversations_get_handle
_gaim_debug
_gaim_find_conversation_with_account
_gaim_get_conversations
_gaim_gtk_make_frame
_gai
plugins: probing /usr/pkg/lib/gaim/timestamp.la
plugins: probing /usr/pkg/lib/gaim/timestamp.a
plugins: probing /usr/pkg/lib/gaim/libgg.so
plugins: /usr/pkg/lib/gaim/libgg.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_account_get_connection
_gaim_account_get_password
_gaim_account_get_username
_gaim_account_option_string_new
_gaim_account_request_change_password
_gaim_blist_add_buddy
_gaim_blist_add_group
_gaim_blist_n
plugins: probing /usr/pkg/lib/gaim/libgg.la
plugins: probing /usr/pkg/lib/gaim/libgg.a
plugins: probing /usr/pkg/lib/gaim/libirc.so
plugins: /usr/pkg/lib/gaim/libirc.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_string
_gaim_account_get_username
_gaim_account_option_int_new
_gaim_account_option_string_new
_gaim_account_user_split_new
_gaim_cmd_registe
plugins: probing /usr/pkg/lib/gaim/libirc.la
plugins: probing /usr/pkg/lib/gaim/libirc.a
plugins: probing /usr/pkg/lib/gaim/libjabber.so
plugins: /usr/pkg/lib/gaim/libjabber.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_alias
_gaim_account_get_bool
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_password
_gaim_account_get_string
_gaim_account_get_user_info
_gaim_account_get_username
_gaim
plugins: probing /usr/pkg/lib/gaim/libjabber.la
plugins: probing /usr/pkg/lib/gaim/libjabber.a
plugins: probing /usr/pkg/lib/gaim/libmsn.so
plugins: /usr/pkg/lib/gaim/libmsn.so is unloadable: dlcompat: dyld: gaim
Undefined symbols:
_gaim_account_get_bool
_gaim_account_get_buddy_icon
_gaim_account_get_check_mail
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_password
_gaim_account_get_string
_gaim_account_get_username
plugins: probing /usr/pkg/lib/gaim/libmsn.la
plugins: probing /usr/pkg/lib/gaim/libmsn.a
plugins: probing /usr/pkg/lib/gaim/libnapster.so
plugins: /usr/pkg/lib/gaim/libnapster.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_password
_gaim_account_get_string
_gaim_account_get_username
_gaim_account_option_int_new
_gaim_account_option_string_new
_gaim_connection_de
plugins: probing /usr/pkg/lib/gaim/libnapster.la
plugins: probing /usr/pkg/lib/gaim/libnapster.a
plugins: probing /usr/pkg/lib/gaim/libnovell.so
plugins: /usr/pkg/lib/gaim/libnovell.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_alias
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_password
_gaim_account_get_string
_gaim_account_get_username
_gaim_account_option_int_new
_gaim_account_option_string
plugins: probing /usr/pkg/lib/gaim/libnovell.la
plugins: probing /usr/pkg/lib/gaim/libnovell.a
plugins: probing /usr/pkg/lib/gaim/liboscar.so
plugins: /usr/pkg/lib/gaim/liboscar.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_buddy_icon
_gaim_account_get_check_mail
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_password
_gaim_account_get_string
_gaim_account_get_username
_gaim_account_notify_a
plugins: probing /usr/pkg/lib/gaim/liboscar.la
plugins: probing /usr/pkg/lib/gaim/liboscar.a
plugins: probing /usr/pkg/lib/gaim/libsilcgaim.so
plugins: /usr/pkg/lib/gaim/libsilcgaim.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_bool
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_string
_gaim_account_get_user_info
_gaim_account_get_username
_gaim_account_option_bool_new
_gaim_account_option_int_n
plugins: probing /usr/pkg/lib/gaim/libsilcgaim.la
plugins: probing /usr/pkg/lib/gaim/libsilcgaim.a
plugins: probing /usr/pkg/lib/gaim/libyahoo.so
plugins: /usr/pkg/lib/gaim/libyahoo.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_bool
_gaim_account_get_buddy_icon
_gaim_account_get_check_mail
_gaim_account_get_connection
_gaim_account_get_int
_gaim_account_get_password
_gaim_account_get_string
_gaim_account_get_username
plugins: probing /usr/pkg/lib/gaim/libyahoo.la
plugins: probing /usr/pkg/lib/gaim/libyahoo.a
plugins: probing /usr/pkg/lib/gaim/libzephyr.so
plugins: /usr/pkg/lib/gaim/libzephyr.so is unloadable: dlcompat: dyld:
gaim Undefined symbols:
_gaim_account_get_bool
_gaim_account_get_connection
_gaim_account_get_string
_gaim_account_option_bool_new
_gaim_account_option_string_new
_gaim_blist_add_buddy
_gaim_blist_add_group
_gaim_buddy_new
_gaim_cmd_r
plugins: probing /usr/pkg/lib/gaim/libzephyr.la
plugins: probing /usr/pkg/lib/gaim/libzephyr.a
plugins: probing /Users/greenfreak/.gaim/accounts.xml
plugins: probing /Users/greenfreak/.gaim/prefs.xml
plugins: probing /Users/greenfreak/.gaim/smileys
prefs: Reading /Users/greenfreak/.gaim/prefs.xml
prefs: Finished reading /Users/greenfreak/.gaim/prefs.xml
pounces: Error reading pounces: Failed to open file
'/Users/greenfreak/.gaim/pounces.xml': No such file or directory
status: Error reading statuses: Failed to open file
'/Users/greenfreak/.gaim/status.xml': No such file or directory
Session Management: No SESSION_MANAGER found, aborting.
accounts: Writing accounts to disk.
main: Unloading all plugins
prefs: /gaim/gtk/plugins/loaded changed, scheduling save.


Of course, ldd(1) is missing, so you have to use otool -L, 

Everything appears to be linked properly. 


[Sun Sep 19 @ 01:49 PM] greenfreak@enigma[0][535]:/usr/pkgsrc/chat/gaim$
otool -L /usr/pkg/lib/gaim/gaim-remote.so
/usr/pkg/lib/gaim/gaim-remote.so:
        /usr/pkg/lib/libgaim-remote.0.dylib (compatibility version
1.0.0, current version 1.0.0)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current
version 5.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 71.1.1)
        /usr/pkg/lib/libglib-2.0.400.dylib (compatibility version
401.0.0, current version 401.6.0)
        /usr/pkg/lib/libintl.4.dylib (compatibility version 5.0.0,
current version 5.0.0)
[Sun Sep 19 @ 01:49 PM] greenfreak@enigma[0][536]:/usr/pkgsrc/chat/gaim$
otool -L /usr/pkg/lib/gaim/gaim-remote.a
Archive : /usr/pkg/lib/gaim/gaim-remote.a
/usr/pkg/lib/gaim/gaim-remote.a(remote.o):
[Sun Sep 19 @ 01:49 PM] greenfreak@enigma[0][537]:/usr/pkgsrc/chat/gaim$
otool -L /usr/pkg/lib/libgaim-remote.0.dylib
/usr/pkg/lib/libgaim-remote.0.dylib:
        /usr/pkg/lib/libgaim-remote.0.dylib (compatibility version
1.0.0, current version 1.0.0)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current
version 5.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 71.1.1)
        /usr/pkg/lib/libglib-2.0.400.dylib (compatibility version
401.0.0, current version 401.6.0)
        /usr/pkg/lib/libintl.4.dylib (compatibility version 5.0.0,
current version 5.0.0)



The net result is that none of the modules load, and therefore no
protocols are available under the account setup window.  I guess i'll
start rolling through .so and .a{,r}s to find where these symbols should
be.

*sigh*

~lava

> be libtool related.  It looks like Apple/Darwin changed the linker setup
> greatly.
> 
> Anyway, we should submit a send-pr(1) w/ patch for pkgsrc on darwin for
> libao.  You can do port-specific patches?  I need to get back into a
> pkgsrc mindset.
> 
> ~Brian
>