Avoid overlinking (e.g. with libwebkit2gtk-4.0.so)
On my system, module-ews-configuration.so, libcamelews-priv.so, libevolution-ews.so, libebookbackendews.so, libcamelews.so, module-ews-backend.so and libecalbackendews.so are linked with libjavascriptcoregtk-4.0.so.18 and libwebkit2gtk-4.0.so.37, as readelf -d
shows. E.g. for libecalbackendews.so readelf -d
shows:
Dynamic section at offset 0x1faf0 contains 64 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libevolution-ews.so]
0x0000000000000001 (NEEDED) Shared library: [libcamel-1.2.so.62]
0x0000000000000001 (NEEDED) Shared library: [libgio-2.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libgobject-2.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libsqlite3.so.0]
0x0000000000000001 (NEEDED) Shared library: [libssl3.so]
0x0000000000000001 (NEEDED) Shared library: [libsmime3.so]
0x0000000000000001 (NEEDED) Shared library: [libnss3.so]
0x0000000000000001 (NEEDED) Shared library: [libnssutil3.so]
0x0000000000000001 (NEEDED) Shared library: [libplds4.so]
0x0000000000000001 (NEEDED) Shared library: [libplc4.so]
0x0000000000000001 (NEEDED) Shared library: [libnspr4.so]
0x0000000000000001 (NEEDED) Shared library: [libevolution-calendar.so]
0x0000000000000001 (NEEDED) Shared library: [libevolution-shell.so]
0x0000000000000001 (NEEDED) Shared library: [libevolution-util.so]
0x0000000000000001 (NEEDED) Shared library: [libebackend-1.2.so.10]
0x0000000000000001 (NEEDED) Shared library: [libedataserver-1.2.so.24]
0x0000000000000001 (NEEDED) Shared library: [libedataserverui-1.2.so.2]
0x0000000000000001 (NEEDED) Shared library: [libecal-1.2.so.19]
0x0000000000000001 (NEEDED) Shared library: [libical.so.3]
0x0000000000000001 (NEEDED) Shared library: [libicalss.so.3]
0x0000000000000001 (NEEDED) Shared library: [libicalvcal.so.3]
0x0000000000000001 (NEEDED) Shared library: [libgmodule-2.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libsecret-1.so.0]
0x0000000000000001 (NEEDED) Shared library: [libxml2.so.2]
0x0000000000000001 (NEEDED) Shared library: [libwebkit2gtk-4.0.so.37]
0x0000000000000001 (NEEDED) Shared library: [libgtk-3.so.0]
0x0000000000000001 (NEEDED) Shared library: [libgdk-3.so.0]
0x0000000000000001 (NEEDED) Shared library: [libpangocairo-1.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libpango-1.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libatk-1.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libcairo-gobject.so.2]
0x0000000000000001 (NEEDED) Shared library: [libcairo.so.2]
0x0000000000000001 (NEEDED) Shared library: [libgdk_pixbuf-2.0.so.0]
0x0000000000000001 (NEEDED) Shared library: [libsoup-2.4.so.1]
0x0000000000000001 (NEEDED) Shared library: [libjavascriptcoregtk-4.0.so.18]
0x0000000000000001 (NEEDED) Shared library: [libedata-cal-1.2.so.29]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
whereas nm -D libecalbackendews.so |grep -v " T "
prints:
U bindtextdomain
U bind_textdomain_codeset
0000000000021e20 B __bss_start
U calendar_config_get_icaltimezone
U cal_obj_uid_list_free
U camel_address_get_type
U camel_content_type_set_param
U camel_data_wrapper_get_mime_type_field
U camel_data_wrapper_get_type
U camel_data_wrapper_set_mime_type
U camel_ews_settings_dup_email
U camel_ews_settings_dup_hosturl
U camel_ews_settings_get_listen_notifications
U camel_ews_settings_get_type
U camel_ews_utils_create_mime_message
U camel_internet_address_add
U camel_internet_address_get_type
U camel_internet_address_new
U camel_medium_set_content
U camel_mime_message_new
U camel_mime_message_set_from
U camel_mime_message_set_recipients
U camel_mime_message_set_subject
U camel_mime_part_new
U camel_mime_part_set_content
U camel_multipart_add_part
U camel_multipart_new
U camel_multipart_set_boundary
U camel_strstrcase
w __cxa_finalize
U e_backend_factory_get_type
U e_backend_get_source
U e_backend_get_type
U e_backend_schedule_credentials_required
U e_backend_set_connectable
U e_binding_bind_property
U e_cache_get_filename
U e_cache_get_type
U e_cal_backend_factory_get_type
U e_cal_backend_get_kind
U e_cal_backend_get_registry
U e_cal_backend_get_type
U e_cal_backend_notify_error
U e_cal_backend_set_writable
U e_cal_backend_sync_get_type
U e_cal_backend_sync_remove_objects
U e_cal_cache_get_component
U e_cal_cache_get_component_extra
U e_cal_cache_get_components_by_uid
U e_cal_cache_get_ids_with_extra
U e_cal_cache_get_type
U e_cal_cache_search_components
U e_cal_component_alarm_free
U e_cal_component_alarm_get_action
U e_cal_component_alarm_get_trigger
U e_cal_component_alarm_set_description
U e_cal_component_free_categories_list
U e_cal_component_free_id
U e_cal_component_free_sequence
U e_cal_component_get_alarm
U e_cal_component_get_alarm_uids
U e_cal_component_get_as_string
U e_cal_component_get_categories_list
U e_cal_component_get_icalcomponent
U e_cal_component_get_id
U e_cal_component_get_organizer
U e_cal_component_get_sequence
U e_cal_component_get_summary
U e_cal_component_get_type
U e_cal_component_get_uid
U e_cal_component_has_alarms
U e_cal_component_has_attachments
U e_cal_component_has_attendees
U e_cal_component_has_organizer
U e_cal_component_has_recurrences
U e_cal_component_id_equal
U e_cal_component_id_hash
U e_cal_component_id_new
U e_cal_component_is_instance
U e_cal_component_new
U e_cal_component_new_from_icalcomponent
U e_cal_component_new_from_string
U e_cal_component_set_attachment_list
U e_cal_component_set_categories_list
U e_cal_component_set_icalcomponent
U e_cal_meta_backend_disconnect_sync
U e_cal_meta_backend_empty_cache_sync
U e_cal_meta_backend_ensure_connected_sync
U e_cal_meta_backend_get_capabilities
U e_cal_meta_backend_get_type
U e_cal_meta_backend_info_free
U e_cal_meta_backend_info_new
U e_cal_meta_backend_merge_instances
U e_cal_meta_backend_process_changes_sync
U e_cal_meta_backend_ref_cache
U e_cal_meta_backend_refresh_sync
U e_cal_meta_backend_schedule_refresh
U e_cal_util_component_has_attendee
U e_cal_util_component_has_organizer
U e_cal_util_dup_x_property
U e_cal_util_find_x_property
U e_cal_util_get_x_property
U e_cal_util_remove_x_property
U e_cal_util_set_x_property
0000000000021e20 D _edata
U e_data_cal_create_error
U e_data_cal_error_quark
U e_ews_additional_props_free
U e_ews_additional_props_new
U e_ews_attachment_info_free
U e_ews_attachment_info_get_id
U e_ews_attachment_info_get_inlined_data
U e_ews_attachment_info_get_type
U e_ews_attachment_info_get_uri
U e_ews_attachment_info_new
U e_ews_attachment_info_set_id
U e_ews_attachment_info_set_inlined_data
U e_ews_attachment_info_set_prefer_filename
U e_ews_attachment_info_set_uri
U e_ews_calendar_time_zone_definition_free
U e_ews_cal_utils_prepare_free_busy_request
U e_ews_cal_utils_recurrence_to_rrule
U e_ews_cal_utils_set_recurrence
U e_ews_cal_utils_set_time
U e_ews_connection_create_attachments_sync
U e_ews_connection_create_items_sync
U e_ews_connection_delete_attachments_sync
U e_ews_connection_delete_item_sync
U e_ews_connection_disable_notifications_sync
U e_ews_connection_enable_notifications_sync
U e_ews_connection_get_attachments_sync
U e_ews_connection_get_free_busy_sync
U e_ews_connection_get_items_sync
U e_ews_connection_get_server_time_zones_sync
U e_ews_connection_new_for_backend
U e_ews_connection_resolve_names_sync
U e_ews_connection_satisfies_server_version
U e_ews_connection_set_disconnected_flag
U e_ews_connection_sync_folder_items_sync
U e_ews_connection_try_credentials_sync
U e_ews_connection_update_items_sync
U e_ews_extended_field_uri_new
U e_ews_folder_id_free
U e_ews_folder_id_new
U e_ews_id_copy
U e_ews_id_free
U e_ews_item_get_attachments_ids
U e_ews_item_get_attendees
U e_ews_item_get_body
U e_ews_item_get_calendar_item_accept_id
U e_ews_item_get_categories
U e_ews_item_get_complete_date
U e_ews_item_get_date_created
U e_ews_item_get_delegator
U e_ews_item_get_due_date
U e_ews_item_get_end_tzid
U e_ews_item_get_error
U e_ews_item_get_iana_end_time_zone
U e_ews_item_get_iana_start_time_zone
U e_ews_item_get_id
U e_ews_item_get_importance
U e_ews_item_get_is_meeting
U e_ews_item_get_is_response_requested
U e_ews_item_get_item_type
U e_ews_item_get_mime_content
U e_ews_item_get_modified_occurrences
U e_ews_item_get_my_response_type
U e_ews_item_get_owner
U e_ews_item_get_percent_complete
U e_ews_item_get_sensitivity
U e_ews_item_get_start_date
U e_ews_item_get_start_tzid
U e_ews_item_get_status
U e_ews_item_get_subject
U e_ews_item_get_type
U e_ews_item_get_tzid
U e_ews_item_get_uid
U e_ews_item_has_attachments
U e_ews_item_task_has_complete_date
U e_ews_item_task_has_due_date
U e_ews_item_task_has_start_date
U e_ews_item_util_strip_ex_address
U e_ews_mailbox_free
U e_ews_message_add_delete_item_field
U e_ews_message_add_extended_property_distinguished_name_string
U e_ews_message_add_set_item_field_extended_distinguished_name_string
U e_ews_message_end_item_change
U e_ews_message_end_set_item_field
U e_ews_message_replace_server_version
U e_ews_message_start_item_change
U e_ews_message_start_set_item_field
U e_ews_message_write_int_parameter
U e_ews_message_write_string_parameter
U e_ews_message_write_string_parameter_with_attribute
U e_ews_message_write_time_parameter
U e_module_get_type
0000000000021ea0 B _end
U e_oauth2_service_office365_type_register
U e_soap_message_add_attribute
U e_soap_message_end_element
U e_soap_message_start_element
U e_source_camel_generate_subtype
U e_source_camel_get_extension_name
U e_source_camel_get_settings
U e_source_ews_folder_dup_foreign_mail
U e_source_ews_folder_dup_id
U e_source_ews_folder_get_freebusy_weeks_after
U e_source_ews_folder_get_freebusy_weeks_before
U e_source_ews_folder_type_register
U e_source_get_extension
U e_source_registry_find_extension
U e_timezone_cache_add_timezone
U e_timezone_cache_get_timezone
U e_timezone_cache_get_type
U e_util_free_nullable_object_slist
U e_util_generate_uid
U ews_connection_error_quark
U free
U g_ascii_strcasecmp
U g_ascii_strncasecmp
U g_base64_decode
U g_base64_encode
U g_build_filename
U g_cancellable_is_cancelled
U g_cancellable_set_error_if_cancelled
U g_clear_error
U g_dgettext
U g_direct_equal
U g_direct_hash
U g_dpgettext
U g_error_copy
U g_error_free
U g_error_matches
U g_filename_from_uri
U g_free
U g_hash_table_contains
U g_hash_table_destroy
U g_hash_table_insert
U g_hash_table_iter_init
U g_hash_table_iter_next
U g_hash_table_lookup
U g_hash_table_new
U g_hash_table_new_full
U g_hash_table_ref
U g_hash_table_remove
U g_hash_table_unref
U g_intern_static_string
U g_io_error_quark
U g_log
U g_malloc0
U g_mkdir_with_parents
w __gmon_start__
U g_object_ref
U g_object_unref
U g_once_init_enter
U g_once_init_leave
U g_path_get_basename
U g_path_get_dirname
U g_propagate_error
U g_rec_mutex_clear
U g_rec_mutex_init
U g_rec_mutex_lock
U g_rec_mutex_unlock
U g_return_if_fail_warning
U g_set_error
U g_set_error_literal
U g_signal_connect_data
U g_signal_handlers_disconnect_matched
U g_slist_append
U g_slist_free
U g_slist_free_full
U g_slist_length
U g_slist_prepend
U g_slist_remove
U g_slist_reverse
U g_strchomp
U g_strchug
U g_strcmp0
U g_strconcat
U g_strdup
U g_strdup_printf
U g_str_equal
U g_strfreev
U g_str_hash
U g_str_has_prefix
U g_strjoin
U g_strndup
U g_strsplit
U g_strv_length
U g_type_check_class_cast
U g_type_check_instance_cast
U g_type_check_instance_is_a
U g_type_class_add_private
U g_type_class_adjust_private_offset
U g_type_class_peek_parent
U g_type_instance_get_private
U g_type_module_register_type
U g_type_register_static_simple
U g_warn_message
U icalattach_get_data
U icalattach_get_is_url
U icalattach_get_url
U icalcomponent_add_component
U icalcomponent_add_property
U icalcomponent_as_ical_string_r
U icalcomponent_count_properties
U icalcomponent_foreach_tzid
U icalcomponent_free
U icalcomponent_get_description
U icalcomponent_get_dtend
U icalcomponent_get_dtstart
U icalcomponent_get_first_component
U icalcomponent_get_first_property
U icalcomponent_get_location
U icalcomponent_get_method
U icalcomponent_get_next_component
U icalcomponent_get_next_property
U icalcomponent_get_parent
U icalcomponent_get_recurrenceid
U icalcomponent_get_summary
U icalcomponent_get_timezone
U icalcomponent_get_uid
U icalcomponent_isa
U icalcomponent_new
U icalcomponent_new_clone
U icalcomponent_new_from_string
U icalcomponent_new_vcalendar
U icalcomponent_new_vevent
U icalcomponent_remove_property
U icalcomponent_set_dtend
U icalcomponent_set_dtstart
U icalcomponent_set_location
U icalcomponent_set_summary
U icalcomponent_set_uid
U icaldurationtype_as_ical_string_r
U icaldurationtype_as_int
U icaldurationtype_from_int
U icalparameter_get_fbtype
U icalparameter_get_filename
U icalparameter_get_role
U icalparameter_get_rsvp
U icalparameter_get_sentby
U icalparameter_get_tzid
U icalparameter_new_cn
U icalparameter_new_cutype
U icalparameter_new_partstat
U icalparameter_new_role
U icalparameter_new_rsvp
U icalparameter_new_x
U icalparameter_set_xname
U icalparser_parse_string
U icalproperty_add_parameter
U icalproperty_as_ical_string_r
U icalproperty_count_parameters
U icalproperty_free
U icalproperty_get_attach
U icalproperty_get_attendee
U icalproperty_get_class
U icalproperty_get_dtend
U icalproperty_get_dtstart
U icalproperty_get_due
U icalproperty_get_exdate
U icalproperty_get_first_parameter
U icalproperty_get_freebusy
U icalproperty_get_organizer
U icalproperty_get_parameter_as_string
U icalproperty_get_percentcomplete
U icalproperty_get_priority
U icalproperty_get_rrule
U icalproperty_get_status
U icalproperty_get_tzname
U icalproperty_get_tzoffsetto
U icalproperty_get_value
U icalproperty_get_value_as_string
U icalproperty_get_value_as_string_r
U icalproperty_get_x
U icalproperty_get_x_name
U icalproperty_isa
U icalproperty_new_attendee
U icalproperty_new_class
U icalproperty_new_completed
U icalproperty_new_created
U icalproperty_new_description
U icalproperty_new_dtstart
U icalproperty_new_due
U icalproperty_new_location
U icalproperty_new_method
U icalproperty_new_organizer
U icalproperty_new_percentcomplete
U icalproperty_new_priority
U icalproperty_new_prodid
U icalproperty_new_status
U icalproperty_new_summary
U icalproperty_new_transp
U icalproperty_new_version
U icalproperty_remove_parameter_by_kind
U icalproperty_set_exdate
U icalproperty_set_transp
U icalproperty_set_tzid
U icalproperty_set_value_from_string
U icalrecur_iterator_free
U icalrecur_iterator_new
U icalrecur_iterator_next
U icalrecurrencetype_day_day_of_week
U icalrecurrencetype_day_position
U icaltime_as_ical_string
U icaltime_as_ical_string_r
U icaltime_as_timet
U icaltime_as_timet_with_zone
U icaltime_compare
U icaltime_compare_date_only
U icaltime_convert_to_zone
U icaltime_current_time_with_zone
U icaltime_from_string
U icaltime_from_timet_with_zone
U icaltime_is_date
U icaltime_is_null_time
U icaltime_is_utc
U icaltime_is_valid_time
U icaltime_null_time
U icaltime_set_timezone
U icaltimezone_free
U icaltimezone_get_builtin_timezone
U icaltimezone_get_builtin_timezone_from_tzid
U icaltimezone_get_component
U icaltimezone_get_location
U icaltimezone_get_tzid
U icaltimezone_get_tznames
U icaltimezone_get_utc_timezone
U icaltimezone_new
U icaltimezone_set_component
U icalvalue_get_datetime
U itip_get_comp_attendee
U itip_strip_mailto
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
U memcmp
U snprintf
U soup_uri_free
U soup_uri_get_host
U soup_uri_get_port
U soup_uri_new
U strlen
U strncasecmp
U strtol
U time
U time_add_week
U time_day_begin
U time_day_end
U __xmlFree
U xmlFreeDoc
U xmlGetProp
U xmlReadFile
U xmlXPathEvalExpression
U xmlXPathFreeContext
U xmlXPathFreeObject
U xmlXPathNewContext
Looking at the undefined symbols, libecalbackendsews.so just needs libxml2.so.2, libc.so.6, libsoup-2.4.so.1, one or more libical*so, libgobject-2.0.so.0, libglib-2.0.so.0, and some libraries coming from EDS.
This overlinking is a huge problem, as running processes under valgrind tries to load libwebkit2gtk-4.0.so.37 and libjavascriptcoregtk-4.0.so.18, which are huge and my RAM is just not big enough to load all the data. So I cannot run the evolution* processes under valgring, when EWS is involved.