After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 659890 - Merge addressbook 'widgets' and 'merging' libraries
Merge addressbook 'widgets' and 'merging' libraries
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Contacts
3.2.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-addressbook-maintainers
Evolution QA team
: 665694 707884 709257 720025 744107 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2011-09-23 01:26 UTC by Ian B. MacDonald
Modified: 2015-02-18 12:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gdb backtrace output (20.66 KB, text/plain)
2011-09-23 18:11 UTC, Ian B. MacDonald
  Details
config log from evolution 3.2.0 dpkg-build on Ubuntu 11.10 (134.40 KB, text/plain)
2011-09-30 01:46 UTC, Ian B. MacDonald
  Details
valgrind output (257.98 KB, text/plain)
2011-10-13 20:50 UTC, Ian B. MacDonald
  Details
little evo patch (497 bytes, patch)
2011-10-14 15:07 UTC, Milan Crha
committed Details | Review
stack trace without python module (4.44 KB, text/plain)
2011-10-17 14:34 UTC, Ian B. MacDonald
  Details
wild guess patch (910 bytes, patch)
2011-10-18 09:02 UTC, Milan Crha
none Details | Review
wild guess patch ][ (5.78 KB, patch)
2011-10-24 11:43 UTC, Milan Crha
none Details | Review
pre-build steps per previous comment (6.55 KB, text/plain)
2011-10-24 21:33 UTC, Ian B. MacDonald
  Details
(not-so) wild guess ]I[ (14.70 KB, patch)
2011-10-27 06:36 UTC, Milan Crha
none Details | Review
patch transcript (10.29 KB, text/plain)
2011-10-27 16:40 UTC, Ian B. MacDonald
  Details
Updated patch to work with Ubuntu 11.10 source (15.93 KB, patch)
2011-11-01 20:30 UTC, Ian B. MacDonald
reviewed Details | Review
requested la files (6.20 KB, application/zip)
2011-11-01 20:32 UTC, Ian B. MacDonald
  Details

Description Ian B. MacDonald 2011-09-23 01:26:42 UTC
Running 3.1.91 on Ubuntu 11.10 B1

Steps to reproduce:
a) Create a contact with name "A" in local address book
b) Drag from local addressbook to google addressbook (contact moves)
c) Create another contact with name "A" in local address book
d) Drag from local addressbook to google addressbook (evolution crashed)

Expected behavior would be to pull up the merge dialogue

Downstream bug https://bugs.launchpad.net/ubuntu/+source/evolution/+bug/856937
Comment 1 Fabio Durán Verdugo 2011-09-23 02:33:58 UTC
The stacktrace from launchpad

.

Thread 2 (Thread 0xb75f9b70 (LWP 15578))

  • #0 __kernel_vsyscall
  • #1 read
    at ../sysdeps/unix/syscall-template.S line 82
  • #2 read
    at /usr/include/i386-linux-gnu/bits/unistd.h line 45
  • #3 unix_signal_helper_thread
    at /build/buildd/glib2.0-2.29.16/./glib/gmain.c line 4546
  • #4 g_thread_create_proxy
    at /build/buildd/glib2.0-2.29.16/./glib/gthread.c line 1962
  • #5 start_thread
    at pthread_create.c line 304
  • #6 revoke
    at revoke.c line 27
  • #7 ??

Comment 2 André Klapper 2011-09-23 10:45:36 UTC
This part is interesting:

  • #1 g_log
    at /build/buildd/glib2.0-2.29.16/./glib/gmessages.c line 591
  • #2 e_load_ui_builder_definition
    at e-util.c line 320
  • #3 match_query_callback
    at eab-contact-merging.c line 586
  • #4 query_cb
    at eab-contact-compare.c line 653

Comment 3 Milan Crha 2011-09-23 13:34:52 UTC
Thanks for a bug report. I tried to reproduce this and I do not see any such issue, evolution doesn't crash for me, nether prints any critical warning when dropping the contact above the google address book. Could you run evolution from console, reproduce the issue and paste here the output shown in the console since evolution's start, please? Thanks in advance.
Comment 4 Ian B. MacDonald 2011-09-23 18:07:20 UTC
imac@n8-laptop:~$ evolution
dragging 1 card(s)

(evolution:4508): GLib-GObject-WARNING **: cannot register existing type `EABContactDisplay'

e-utils-ERROR **: eab-contact-duplicate-detected.ui: Invalid type function on line 90: 'eab_contact_display_get_type'
Trace/breakpoint trap (core dumped)


Attached is gdb backtrace from an identical session. Re your comment, the issue occurs when you drop the contact the second time in the google address book, not the first time.
Comment 5 Ian B. MacDonald 2011-09-23 18:11:07 UTC
Created attachment 197363 [details]
gdb backtrace output

Opened evolution (in mail) switched to contacts (local addressbook) and created an "A" contact and dragged it to my Google contacts.  Repeated to crash point.


(gdb) handle SIG33 pass nostop noprint
(gdb) set pagination 0
(gdb) run 
(gdb) backtrace full
(gdb) info registers
(gdb) x/16i $pc
(gdb) thread apply all backtrace
Comment 6 Milan Crha 2011-09-27 15:14:56 UTC
Exactly the same steps work for me without any issue, even when I try 3 times with the same contact (only fullname set to "A").

the warning:
> (evolution:4508): GLib-GObject-WARNING **: cannot register existing
> type `EABContactDisplay'

usually means that either the dynamicly linked library which provides this type was unloaded, but the GType system didn't notice and left the type registered. (this type is not unloaded for me) or that other library has this module linked in statically or somehow, that it thinks the type isn't registered yet and thus it registers it again.

Also, the eab_contact_display_get_type() uses g_type_register_static(), and it's part of libeabwidgets.la library, which is not installed. I also see that this function is called multiple times whenever I change selection in the Contacts view (with a minicard view), thus I expect this being some linking issue, but I do not know why you face it, but I do not.

Matthew, do you recall anything similar with other libs and what was done to fix it? (apart of finding since when and why this happened).
Comment 7 Matthew Barnes 2011-09-27 15:42:51 UTC
I know we recently made all dynamically-loaded modules resident so they're never unloaded, but that should have _fixed_ bugs like this and I think that happened prior to 3.1.91.

Beyond that nothing springs to mind.
Comment 8 Ian B. MacDonald 2011-09-28 15:44:38 UTC
Still happening in 3.2.0, also added downstream link where there are other reporters.
Comment 9 Milan Crha 2011-09-29 11:50:37 UTC
Could you check what compiler and linker flags are used when building evolution, please? Maybe also ./configure parameters being used. Maybe it's somehow related to a way how evolution is built.
Comment 10 Ian B. MacDonald 2011-09-30 01:46:10 UTC
Created attachment 197834 [details]
config log from evolution 3.2.0 dpkg-build on Ubuntu 11.10

Here's the config.log from the dpkg-build
Comment 11 Milan Crha 2011-09-30 13:43:02 UTC
Thanks for the update. I tried with your CFLAGS and LDFLAGS, but I didn't face the issue. Maybe it's related to something else. I'll try to reproduce once I upgrade my OS to 3.2.x.
Comment 12 Ian B. MacDonald 2011-10-02 15:06:11 UTC
When you get to a clean 3.2, I was able to reproduce using the following steps with just a Google account and no pre-existing data on 3.2.0.

1) Purge evolution from .config, .local, .cache, .gconf and remove online accounts
2) Reboot
3) Add a Google online account, only contacts and email(to skip wizard on evo startup)
4) Allow contacts to refresh (I have about 1900)
5) Restart evolution (another google contacts bug jams up address-book factory on first load sometimes, this gets it back to normal)
6) Create contact "A" in local address book
7) Move to Google addressbook
8) Repeat 6-7
Comment 13 Pedro Villavicencio 2011-10-03 12:23:04 UTC
this still seems to be an issue with 3.2, backtrace of the downstream report:

Program received signal SIGTRAP, Trace/breakpoint trap.
g_logv (log_domain=0x7ffff7980a9c "e-utils", log_level=<optimized out>, format=0x7ffff798524b "%s: %s", args1=0x7fffffffdc88) at /build/buildd/glib2.0-2.30.0/./glib/gmessages.c:577
577	/build/buildd/glib2.0-2.30.0/./glib/gmessages.c: No such file or directory.
	in /build/buildd/glib2.0-2.30.0/./glib/gmessages.c
(gdb) backtrace full
  • #0 g_logv
    at /build/buildd/glib2.0-2.30.0/./glib/gmessages.c line 577
  • #1 g_log
    at /build/buildd/glib2.0-2.30.0/./glib/gmessages.c line 591
  • #2 e_load_ui_builder_definition
    at e-util.c line 320
  • #3 match_query_callback
    at eab-contact-merging.c line 596
  • #4 query_cb
    at eab-contact-compare.c line 670
  • #5 g_simple_async_result_complete
    at /build/buildd/glib2.0-2.30.0/./gio/gsimpleasyncresult.c line 749
  • #6 finish_async_op
    at e-client.c line 2281
  • #7 async_result_ready_cb
    at e-client.c line 2318
  • #8 g_simple_async_result_complete
    at /build/buildd/glib2.0-2.30.0/./gio/gsimpleasyncresult.c line 749
  • #9 complete_in_idle_cb
    at /build/buildd/glib2.0-2.30.0/./gio/gsimpleasyncresult.c line 761
  • #10 g_main_dispatch
    at /build/buildd/glib2.0-2.30.0/./glib/gmain.c line 2441
  • #11 g_main_context_dispatch
    at /build/buildd/glib2.0-2.30.0/./glib/gmain.c line 3011
  • #12 g_main_context_iterate
    at /build/buildd/glib2.0-2.30.0/./glib/gmain.c line 3089
  • #13 g_main_loop_run
    at /build/buildd/glib2.0-2.30.0/./glib/gmain.c line 3297
  • #14 gtk_main
    at /build/buildd/gtk+3.0-3.2.0/./gtk/gtkmain.c line 1367
  • #15 main
    at main.c line 696

Comment 14 Milan Crha 2011-10-06 18:31:00 UTC
Hrm, so I have a fresh installation of F16 Beta, updated to 3.2.0 versions, and it works as expected, I am asked for a merge and when I accept it I have the second contact 'A' merged into the previous one. Might valgrind help here? My usual valgrind command looks like this:
   $ G_SLICE=always-malloc valgrind --num-callers=50 evolution &>log.txt
Comment 15 Ian B. MacDonald 2011-10-13 20:50:02 UTC
Created attachment 198975 [details]
valgrind output

Attached is valgrind from the same command
Comment 16 Milan Crha 2011-10-14 15:06:07 UTC
Thanks for the update. I see that more than half of the log comes for invalid reads and using uninitialized memory inside PyObject_Free() which is called from a Py module for evolution. I would start with a simple thing of removing this module from evolution, to not load/use it on start. Invalid reads are usually harmless, in a sense of modifying memory memory not belonging to it (otherwise invalid reads are not good too, because the code can do anything afterwards), but because this one comes from a 'free' functions, then I'm wondering whether this cannot free foreign memory, the one where the invalid read pointed to. In that case it can break any object being allocated in a memory. Not using the Py module may show us whether my guess is right.
Comment 17 Milan Crha 2011-10-14 15:07:31 UTC
Created attachment 199014 [details] [review]
little evo patch

for evolution;

At the bottom of the log is shown as you dragged one contact, which resulted in uninitialized memory usage on drop in evolution. This patch is fixing this particular thing from your valgrind log. I do not expect it being related to the crash itself, because I saw this claim on my machine too.
Comment 18 Ian B. MacDonald 2011-10-14 20:18:02 UTC
Applied patch, no change on crash scenario.
Comment 19 Milan Crha 2011-10-17 09:08:02 UTC
What about disabled python module/plugin for evolution? Modules are at
   /usr/lib/evolution/3.2/modules/
and plugins at
   /usr/lib/evolution/3.2/plugins/
Notice it can differ on your system, this in on Fedora (I have it lib64 instead of lib too).
Comment 20 Ian B. MacDonald 2011-10-17 14:34:01 UTC
Created attachment 199219 [details]
stack trace without python module

I moved the module (shown below) out of the module path, confirmed no e-addressbook factory was running and restarted evolution. It crashed in a similar manner. I attached the stack trace in case there are any new hints.

/usr/lib/evolution/3.2/modules# mv libevolution-module-plugin-python.so /usr/src
Comment 21 Milan Crha 2011-10-18 07:35:10 UTC
hrm, still the same. When you run this under valgrind, will it show the Python issues? It might not, but I want to be sure, because if it's not it, then something with compile-time/run-time lefts.
Comment 22 Milan Crha 2011-10-18 09:02:36 UTC
Created attachment 199312 [details] [review]
wild guess patch

for evolution;

Could you try with this patch, please? It's a wild guess, but maybe it'll help. Thanks in advance.
Comment 23 Milan Crha 2011-10-18 09:14:03 UTC
(In reply to comment #17)
> Created an attachment (id=199014) [details] [review]
> little evo patch

Created commit a6830da in evo master (3.3.1+)
Created commit b8f07af in evo gnome-3-2 (3.2.2+)
Comment 24 Ian B. MacDonald 2011-10-23 16:34:22 UTC
patch in #22 will not work with current 3.2.1 source I'm using in Ubuntu 11.10, even after applying manually. A series of multiple definition errors, including


../../../addressbook/gui/merging/.libs/libeabbookmerging.a(libeabbookmerging_la-eab-contact-compare.o): In function `eab_contact_compare_name_to_string_full':
/usr/src/evolution-3.2.1/addressbook/gui/merging/eab-contact-compare.c:127: multiple definition of `eab_contact_compare_name_to_string_full'
../../../addressbook/gui/widgets/.libs/libeabwidgets.a(libeabbookmerging_la-eab-contact-compare.o):/usr/src/evolution-3.2.1/addressbook/gui/merging/eab-contact-compare.c:127: first defined here
Comment 25 Milan Crha 2011-10-24 11:18:07 UTC
Hrm, it didn't show up for me when I was testing the patch. Because of this circular dependency, I would join the 'merging' folder content into the 'widgets' folder and skip the libeabbookmerging.la creation, because it'll be part of libeabwidgets.la. I'll try to update the patch.
Comment 26 Milan Crha 2011-10-24 11:43:34 UTC
Created attachment 199810 [details] [review]
wild guess patch ][

for evolution;

Please revert the previous patch from here, and do the following:
a) move all these files from addressbook/gui/merging to addressbook/gui/widgets
    eab-contact-commit-duplicate-detected.ui
    eab-contact-compare.c
    eab-contact-compare.h
    eab-contact-duplicate-detected.ui
    eab-contact-merging.c
    eab-contact-merging.h
b) remove/rename the addressbook/gui/merging folder
c) apply this patch
d) reconfigure with
    $ ./autogen.sh && ./configure ...
Comment 27 Ian B. MacDonald 2011-10-24 21:33:52 UTC
Created attachment 199867 [details]
pre-build steps per previous comment

okay, I attempted this.  Same steps, except I used dpkg-buildpackage to do the d)  configure and make; I think this is okay.

The result is a bunch of undefined references, starting with this one.

.libs/libeabwidgets_la-e-minicard.o: In function `e_minicard_realize':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard.c:524: undefined reference to `e_text_get_type'

I attached a session transcript from the pre-build steps to confirm I executed them correctly. You can observe that a couple of the hunks still needed to be manually applied because of a missing context in the Ubuntu source to,
 	$(EVOLUTION_DATA_SERVER_LIBS)				\

in each of the Makefile.am files. I assume this has to do with the fact that the EDS packages are built from a separate/different source in Ubuntu.
Comment 28 Milan Crha 2011-10-25 07:31:11 UTC
Steps looks good, thanks. The error "just" means that more libraries are supposed to be added (they didn't exhibit to me) into:
   addressbook/gui/widgets/Makefile.am
below the just added
+	$(top_builddir)/addressbook/util/libeabutil.la		\
I would add there these as a beginning:
	$(top_builddir)/shell/libeshell.la			\
	$(top_builddir)/widgets/table/libetable.la		\
	$(top_builddir)/widgets/text/libetext.la		\
	$(top_builddir)/widgets/misc/libemiscwidgets.la		\
	$(top_builddir)/widgets/menus/libmenus.la		\
Maybe it's too many, but it may ensure it'll not be missing anything. In case you have there more missing, please attach all the errors here, and I'll provide you with the list of missing libraries. Thanks in advance.
Comment 29 Ian B. MacDonald 2011-10-25 18:17:37 UTC
After adding those above, missing these ones below,

.libs/libecontacteditor_la-eab-editor.o: In function `eab_editor_class_init':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/eab-editor.c:163: undefined reference to `e_shell_get_type'
.libs/libecontacteditor_la-eab-editor.o: In function `eab_editor_set_shell':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/eab-editor.c:78: undefined reference to `e_shell_get_type'
.libs/libecontacteditor_la-eab-editor.o: In function `eab_editor_get_shell':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/eab-editor.c:255: undefined reference to `e_shell_get_type'
.libs/libecontacteditor_la-eab-editor.o: In function `eab_editor_quit_requested_cb':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/eab-editor.c:70: undefined reference to `e_shell_cancel_quit'
.libs/libecontacteditor_la-e-contact-editor.o: In function `e_contact_editor_init':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/e-contact-editor.c:4002: undefined reference to `e_shell_get_default'
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/e-contact-editor.c:4015: undefined reference to `e_shell_get_express_mode'
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/e-contact-editor.c:4118: undefined reference to `e_shell_watch_window'
.libs/libecontacteditor_la-e-contact-editor.o: In function `e_contact_editor_new':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/e-contact-editor.c:4275: undefined reference to `e_shell_get_type'
.libs/libecontacteditor_la-e-contact-quick-add.o: In function `build_quick_add_dialog':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/e-contact-quick-add.c:436: undefined reference to `e_shell_get_active_window'
.libs/libecontacteditor_la-e-contact-quick-add.o: In function `merge_cb':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/e-contact-quick-add.c:161: undefined reference to `e_shell_get_active_window'
.libs/libecontacteditor_la-e-contact-quick-add.o: In function `ce_have_contact':
/usr/src/evolution-3.2.1/addressbook/gui/contact-editor/e-contact-quick-add.c:253: undefined reference to `e_shell_get_default'
collect2: ld returned 1 exit status
Comment 30 Milan Crha 2011-10-26 06:59:40 UTC
Eh, of course, I missed this one, I'm sorry for that:
	$(top_builddir)/shell/libeshell.la		\
Comment 31 Ian B. MacDonald 2011-10-26 17:34:02 UTC
Nope, you have that one :) .. but it is missing from contact-editor so I added it there as well. 

I also needed to add  

       $(top_builddir)/addressbook/gui/widgets/libeabwidgets.la           \

to contact-list-editor

Upon successful rebuild and re-install, the problem has been resolved. Good wild guess. Thanks
Comment 32 Ian B. MacDonald 2011-10-26 20:53:26 UTC
FYI, since applying this patch, I have seen these two crashes - just thought I'd mention it if it was obvious they are related.

https://bugzilla.gnome.org/show_bug.cgi?id=662803
https://bugzilla.gnome.org/show_bug.cgi?id=662788

I'm rolling back to see if I can repeat them without this change.
Comment 33 Milan Crha 2011-10-27 05:51:11 UTC
(In reply to comment #32)
> FYI, since applying this patch, I have seen these two crashes - just thought
> I'd mention it if it was obvious they are related.
> 
> bug #662803

Crash within gnome-canvas inside e-week-view; we might not influence this part, as it's calendar. Even the calendar/gui/Makefile.am creates a dynamic library which links to addressbook parts too. What about adding
    $(top_builddir)/addressbook/gui/widgets/libeabwidgets.la
there too?

> bug #662788

Seems like a duplicate of the previous bug. Just different occasion.

> I'm rolling back to see if I can repeat them without this change.

I'll update the patch to contain your fixes too, and extend it even more for your runtime finding, to have it complete and ensure that the committed version will fit your version in use.
Comment 34 Milan Crha 2011-10-27 06:36:36 UTC
Created attachment 200081 [details] [review]
(not-so) wild guess ]I[

for evolution;

Please do same files movement from merging to widgets folder under addressbook/gui and then compile evolution with this patch applied, but I think there is something really wrong somewhere, because the only thing I did here was that I moved "all" LIBADD .la libraries which are installed in privsolib to each LIBADD where the library itself is used. I thought this should be done automatically, either by libtool or by autotools, because otherwise it's just about piling LIBADD together, which is really pain and proofe to break (like the missing libshell.la in the Makefile.am which is using internal evolution library which requires it.
Comment 35 Milan Crha 2011-10-27 06:58:37 UTC
Could you attach here your
   addressbook/gui/contact-editor/libecontacteditor.la
and
   addressbook/gui/contact-list-editor/libecontactlisteditor.la
files, please? The best before the patch applied, after make && make install. I think your 'dependency_libs' in the file are not populated as expected, which is causing this trouble. I tried to remove libeshell.la from LIBADD in both of these folders (in Makefile.am files) and they are part of dependency_libs of the result .la files, they only disappeared from relink_command, which is correct.

If I'm right here, then we might rather find what the reason for missing chain dependency libraries is for you, instead of workarounding it. I believe the similar issue is with your two bugs from comment #32, there might be "missing" added a dependency library to libgnomecanvas.la in the calendar part. By the way, is it printing any errors when you run evolution from a console, similar to that in comment #4, only for the gnome-canvas type?

Just curious, is your code compiled with "make -j" option, and if so, is it possible to let it know to not use parallel building, please? Just in case...
Comment 36 Ian B. MacDonald 2011-10-27 16:40:11 UTC
Created attachment 200116 [details]
patch transcript

Okay, I applied you updated patch.  It still required a number of manual updates to add libraries to deal with some different context in my source.  I attached a transcript so you can see the rejects. 

Per the dpkg-buildpackage man page (excerpt below), the -j option works to pass the the option on to make and there appears to be no overrides in the code base. 

-jjobs Number of jobs allowed to be run simultaneously, equivalent to the make(1) option of the same name. Will add itself to  the MAKEFLAGS  environment variable, which should cause all subsequent make invocations to inherit the option. Also adds parallel=jobs to the DEB_BUILD_OPTIONS environment variable which allows debian/rules files to use this  information  for  their own  purposes. The  parallel=jobs  in DEB_BUILD_OPTIONS environment variable will override the -j value if this option is given

After applying the patch manually, still a bunch of missing libs,


.libs/libeabwidgets_la-e-minicard.o: In function `e_minicard_realize':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard.c:524: undefined reference to `e_text_get_type'
.libs/libeabwidgets_la-e-minicard.o: In function `e_minicard_drag_begin':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard.c:1175: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-e-minicard.o: In function `e_minicard_event':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard.c:655: undefined reference to `e_reflow_get_type'
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard.c:703: undefined reference to `e_reflow_model_incarnate'
.libs/libeabwidgets_la-e-minicard.o: In function `e_minicard_drag_begin':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard.c:1176: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-e-minicard-label.o: In function `e_minicard_label_class_init':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-label.c:150: undefined reference to `e_text_model_get_type'
.libs/libeabwidgets_la-e-minicard-label.o: In function `e_minicard_label_event':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-label.c:362: undefined reference to `e_text_get_type'
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-label.c:362: undefined reference to `e_text_cancel_editing'
.libs/libeabwidgets_la-e-minicard-label.o: In function `e_minicard_label_realize':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-label.c:313: undefined reference to `e_text_get_type'
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-label.c:325: undefined reference to `e_text_get_type'
.libs/libeabwidgets_la-e-minicard-view.o: In function `e_minicard_view_get_type':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-view.c:577: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-e-minicard-view.o: In function `e_minicard_view_get_card_list':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-view.c:621: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-e-minicard-view-widget.o: In function `e_minicard_view_widget_real_focus_in_event':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-view-widget.c:523: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-e-minicard-view-widget.o: In function `e_minicard_view_widget_realize':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-view-widget.c:425: undefined reference to `e_reflow_get_type'
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-view-widget.c:429: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-e-minicard-view-widget.o:/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-minicard-view-widget.c:498: more undefined references to `e_reflow_get_type' follow
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `search_result':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:404: undefined reference to `e_reflow_model_get_type'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `model_changed':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:383: undefined reference to `e_reflow_model_get_type'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `modify_contact':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:376: undefined reference to `e_reflow_model_get_type'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `create_contact':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:349: undefined reference to `e_reflow_model_get_type'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `remove_contacts':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:367: undefined reference to `e_reflow_model_get_type'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o:/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:364: more undefined references to `e_reflow_model_get_type' follow
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `addressbook_create_cmp_cache':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:199: undefined reference to `e_reflow_model_count'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `e_addressbook_reflow_adapter_new':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:625: undefined reference to `e_reflow_model_get_type'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `search_result':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:404: undefined reference to `e_reflow_model_comparison_changed'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `model_changed':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:383: undefined reference to `e_reflow_model_changed'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `modify_contact':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:376: undefined reference to `e_reflow_model_item_changed'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `create_contact':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:349: undefined reference to `e_reflow_model_items_inserted'
.libs/libeabwidgets_la-e-addressbook-reflow-adapter.o: In function `remove_contacts':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:367: undefined reference to `e_reflow_model_changed'
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-reflow-adapter.c:363: undefined reference to `e_reflow_model_item_removed'
.libs/libeabwidgets_la-e-addressbook-view.o: In function `addressbook_view_create_minicard_view':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-view.c:375: undefined reference to `e_reflow_model_get_type'
/usr/src/evolution-3.2.1/addressbook/gui/widgets/e-addressbook-view.c:375: undefined reference to `e_reflow_model_changed'
.libs/libeabwidgets_la-ea-minicard-view.o: In function `selection_interface_is_child_selected':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/ea-minicard-view.c:357: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-ea-minicard-view.o: In function `selection_interface_get_selection_count':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/ea-minicard-view.c:341: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-ea-minicard-view.o: In function `selection_interface_clear_selection':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/ea-minicard-view.c:317: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-ea-minicard-view.o: In function `selection_interface_add_selection':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/ea-minicard-view.c:299: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-ea-minicard-view.o: In function `atk_action_interface_do_action':
/usr/src/evolution-3.2.1/addressbook/gui/widgets/ea-minicard-view.c:384: undefined reference to `e_reflow_get_type'
.libs/libeabwidgets_la-ea-minicard-view.o:/usr/src/evolution-3.2.1/addressbook/gui/widgets/ea-minicard-view.c:259: more undefined references to `e_reflow_get_type' follow
collect2: ld returned 1 exit status
Comment 37 Milan Crha 2011-10-31 07:28:58 UTC
The e_text and e_reflow functions come from
   $(top_builddir)/widgets/text/libetext.la		\
and I suppose you'll need also this one to be added:
   $(top_builddir)/libgnomecanvas/libgnomecanvas.la	\

I'm sorry for failed chunks, the patch is still against git master. Good the issue is not with -j, still, it doesn't make much sense to me, as what can be so different on your build system that I do not face it myself.
Comment 38 Ian B. MacDonald 2011-11-01 20:30:03 UTC
Created attachment 200446 [details] [review]
Updated patch to work with Ubuntu 11.10 source

So I made modifications to the patch, and successfully applied it.  Attached it here if you want to review.
Comment 39 Ian B. MacDonald 2011-11-01 20:32:31 UTC
Created attachment 200447 [details]
requested la files

Attached are the .la files you requested for comparison.  The .la files marked pre-patch are those built against the vanilla Ubuntu source (3.2.1-0ubuntu1).  The post-patch files are those created after applying the patch in the previous comment and executing the move from /merge/ to /widgets/ described above.
Comment 40 Milan Crha 2011-11-02 08:24:27 UTC
Thanks for the update. I see you've in dependency_libs same libraries as I do, only those from gtkhtml and evolution-data-server are used from the system. I suppose you build against system libraries then. They are otherwise quite same, which makes me wonder even more what can be so different in your build system.

Anyway, does your attached patch fix the issue for you, and you can use calendar/tasks/memo/mailer/contacts parts as expected, same as merge contacts, with it, please? If yes, then I can make the change and commit it for 3.3.2.
Comment 41 Ian B. MacDonald 2011-11-02 14:35:12 UTC
The issues is resolved, but I now crash in calendar, likely in the same manner as above, reported below.   

https://bugs.launchpad.net/ubuntu/+source/evolution/+bug/885257

I think perhaps engaging a downstream dev that understands the subtleties of the dpkg-buildpackage process is prudent,

https://launchpad.net/~pvillavi 
https://launchpad.net/~mathieu-tl
Comment 42 Milan Crha 2011-11-03 07:47:21 UTC
(The ling gives me "Lost something?" page, probably a private bug)

I agree, having someone knowledgeable on the build system will be easier and quicker to both of us, because, as I said, you are the first facing the issue, after many years, thus it's possible some change in the build system or build flags "discovered" this issue.

The file movement from merging to widgets seems correct to me, because these two folders are cross-referenced, which can make trouble, one day. If I recall correctly I was unable to build evolution if I kept
   noinst_LTLIBRARIES = libeabwidgets.la
with added files. The thing is that this static library is linked into various modules, and each of them can have its own GType for the EABContactDisplay, which is the reason why I made it dynamically linked module in the "guess patch" above, to have only one GType across all modules whose are using this library.
Comment 43 Akhil Laddha 2011-12-08 03:43:43 UTC
*** Bug 665694 has been marked as a duplicate of this bug. ***
Comment 44 Milan Crha 2013-09-11 09:23:32 UTC
*** Bug 707884 has been marked as a duplicate of this bug. ***
Comment 45 Milan Crha 2013-09-24 07:27:13 UTC
I finally committed merge of the 'widgets' and 'merging' addressbook libraries, thus they do not cross-reference each other anymore. Please let me know in case I overlooked any library dependency in the project (it builds fine here on Fedora).

Created commit a3b2e00 in evo master (3.11.1+)
Comment 46 Matthew Barnes 2013-10-02 13:23:07 UTC
*** Bug 709257 has been marked as a duplicate of this bug. ***
Comment 47 André Klapper 2014-07-01 16:32:52 UTC
*** Bug 720025 has been marked as a duplicate of this bug. ***
Comment 48 Milan Crha 2015-02-18 12:40:51 UTC
*** Bug 744107 has been marked as a duplicate of this bug. ***