[regression][v2] unity-system-compositor still FTBFS against Mir 0.6/0.7: undefined reference to `...@MIR_CLIENT_8'

Bug #1355609 reported by Daniel van Vugt
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Unity System Compositor
Fix Released
Critical
Daniel van Vugt
unity-system-compositor (Ubuntu)
Fix Released
Undecided
Unassigned
Vivid
New
Undecided
Unassigned

Bug Description

unity-system-compositor can't build against Mir 0.6/0.7: undefined reference to `...@MIR_CLIENT_8'

Its still happening, even with the fix for bug 1355021...

Linking CXX executable ../bin/unity-system-compositor
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_horizontal_resize_cursor_name@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_connection_create_display_config@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_surface_is_valid@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_connection_create_surface_sync@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_connection_set_display_config_change_callback@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_surface_get_egl_native_window@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_closed_hand_cursor_name@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_vsplit_resize_cursor_name@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_pointing_hand_cursor_name@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_omnidirectional_resize_cursor_name@MIR_CLIENT_8'
/home/dan/usr.dev/lib/x86_64-linux-gnu/libmirserver.so: undefined reference to `mir_vertical_resize_cursor_name@MIR_CLIENT_8'

Related branches

Changed in mir:
importance: Undecided → Critical
milestone: none → 0.7.0
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Not sure how or why, but it appears my system is misinterpreting the Requires.static line.

I end up with this config in USC:

MIRSERVER_LDFLAGS:INTERNAL=-L/home/dan/usr.dev/lib/x86_64-linux-gnu;-lmirserver;-lmirplatform;-lmircommon
MIRSERVER_LDFLAGS_OTHER:INTERNAL=
MIRSERVER_LIBRARIES:INTERNAL=mirserver;mirplatform;mircommon

Note that mirclient is not mentioned. It is however mentioned in "MIRSERVER_STATIC_*" ...

MIRSERVER_STATIC_LDFLAGS:INTERNAL=-L/home/dan/usr.dev/lib/x86_64-linux-gnu;-lmirserver;-lmirclient;-lprotobuf;-pthread;-lpthread;-lz;-lmirplatform;-lmircommon
MIRSERVER_STATIC_LDFLAGS_OTHER:INTERNAL=-pthread
MIRSERVER_STATIC_LIBDIR:INTERNAL=
MIRSERVER_STATIC_LIBRARIES:INTERNAL=mirserver;mirclient;protobuf;pthread;z;mirplatform;mircommon

cat ~/usr.dev/lib/x86_64-linux-gnu/pkgconfig/mirserver.pc
prefix=/home/dan/usr.dev
exec_prefix=/home/dan/usr.dev
libdir=/home/dan/usr.dev/lib/x86_64-linux-gnu
includedir=/home/dan/usr.dev/include/mirserver

Name: mirserver
Description: Mir server library
Version: 0.7.0
Requires.private: mirclient
Requires: mirplatform
Libs: -L/home/dan/usr.dev/lib/x86_64-linux-gnu -lmirserver
Cflags: -I/home/dan/usr.dev/include/mirserver

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

OK, turns out pkg-config is smarter than we expected.

1. For dynamically linked downstream targets (shared libraries and executables) Requires.private is ignored because the dynamic linker solves dependencies for you.
2. For statically linked targets, Requires.private is important. However you'll only get access to this private libraries if you remember to refer to MIRSERVER_STATIC_*. That's a mistake in the static library "usc.a"

affects: mir → unity-system-compositor
Changed in unity-system-compositor:
milestone: 0.7.0 → none
status: New → In Progress
assignee: nobody → Daniel van Vugt (vanvugt)
summary: - [regression][v2] unity-system-compositor FTBFS against Mir 0.7:
- undefined reference to `...@MIR_CLIENT_8'
+ [regression][v2] unity-system-compositor still FTBFS against Mir
+ 0.6/0.7: undefined reference to `...@MIR_CLIENT_8'
description: updated
Changed in unity-system-compositor:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package unity-system-compositor - 0.0.5+14.10.20140829-0ubuntu1

---------------
unity-system-compositor (0.0.5+14.10.20140829-0ubuntu1) utopic; urgency=low

  [ Ubuntu daily release ]
  * New rebuild forced

  [ Cemil Azizoglu ]
  * Rebuild for the Mir 0.7.0 release. (LP: #1355005)

  [ Daniel van Vugt ]
  * When building static library "usc.a" make sure you use
    MIRSERVER_STATIC_LDFLAGS or else the Requires.private information
    from mirserver.pc won't be used, leading to linkage failure (LP:
    #1355609) (LP: #1355609)
  * Rebuild for the Mir 0.7.0 release. (LP: #1355005)
 -- Ubuntu daily release <email address hidden> Fri, 29 Aug 2014 18:04:48 +0000

Changed in unity-system-compositor (Ubuntu):
status: New → Fix Released
Changed in unity-system-compositor:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.