Mir

Merge lp:~raof/mir/pkgconfig-harder into lp:mir

Proposed by Chris Halse Rogers
Status: Rejected
Rejected by: Chris Halse Rogers
Proposed branch: lp:~raof/mir/pkgconfig-harder
Merge into: lp:mir
Diff against target: 11 lines (+2/-1)
1 file modified
src/server/mirserver.pc.in (+2/-1)
To merge this branch: bzr merge lp:~raof/mir/pkgconfig-harder
Reviewer Review Type Date Requested Status
Alan Griffiths Needs Fixing
Daniel van Vugt Needs Information
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+229719@code.launchpad.net

Commit message

Tidy up mirserver.pc

We specify a lot of things that we don't need to, and failed to specify that we need protobuf.

Description of the change

Clean up mirserver.pc.

We've a lot of superfluous cruft in there. See the individual commit messages for details.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

(1) I think you will find this will break downstream projects like qtmir:
8 -Libs: -L@LIBDIR@ -lmirserver -lmirplatform -lmircommon

Using mirserver.pc needs to give downstream projects direct linkage to -lmircommon to get at some common symbols we expose via our server headers. Or are we actually much cleaner than I believe we are?

Needs information: testing with qtmir required. See also bug 1352757, which when resolved might answer my question automatically.

review: Needs Information
Revision history for this message
Chris Halse Rogers (raof) wrote :

I don't believe downstream projects need an explicit link to mircommon
as mirserver already pulls that in. To the experimentatron!

Revision history for this message
Chris Halse Rogers (raof) wrote :

I stand corrected. In fact, now that I think of it, we reasonably recently completed a transition in the linker to *not* consider indirect dependencies. Oops!

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

10 +Libs: -L@LIBDIR@ -lmirserver

Users also need -lmirplatform -lmircommon - as mentioned in your comments above.

~~~~

9 +Requires.private: protobuf >= 2.4.1

If users need access to protobuf headers should this be ".private"?

~~~~

I'm prepared to accept your views on the rpath - but do check downstream projects before landing it (as they tend to have broken dependency incantations on Mir).

review: Needs Fixing
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

> 9 +Requires.private: protobuf >= 2.4.1
>
> If users need access to protobuf headers should this be ".private"?

On closer examination I think this is actually unwanted. The "public" headers that "#include <google/protobuf/...>" are part of "PrivateProtobuf" - which we are not committing to supporting in the future. The headers are:

1. mir/frontend/message_processor.h
2. mir/frontend/protobuf_message_sender.h
3. mir/frontend/template_protobuf_message_processor.h

"PrivateProtobuf" was exposed as a *temporary* convenience for the Canonical downstreams to prototype adding IPC functions before proposing them to Mir proper (avoiding the need for them to put WIP code upstream). These downstream experiments will depend on protobuf directly.

The headers won't be removed for RTM but it should happen in the foreseeable future.

Unmerged revisions

1826. By Chris Halse Rogers

Drop bizzare rpath-link specification from mirserver.pc

We're not responsible for making sure that the end-user's system has a working
library path setup. If they install libmirserver outside ld.so's probing paths,
that's their (extremely weird) problem.

1825. By Chris Halse Rogers

Add protobuf dependency to mirserver.pc

Some of the server headers reference Protobuf headers, and use Protobuf
types, so users including server headers need to get Protobuf too.

1824. By Chris Halse Rogers

Remove superflous linkage in mirserver.pc

libmirserver.so already links against libmirplatform.so and libmircommon.so. There's
no need for users of libmirserver.so to explicitly link against mirserver's dependencies

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/server/mirserver.pc.in'
2--- src/server/mirserver.pc.in 2014-08-05 09:34:30 +0000
3+++ src/server/mirserver.pc.in 2014-08-06 01:05:32 +0000
4@@ -6,5 +6,6 @@
5 Name: mirserver
6 Description: Mir server library
7 Version: @MIR_VERSION@
8-Libs: -L@LIBDIR@ -lmirserver -lmirplatform -lmircommon -Wl,-rpath-link,@LIBDIR@
9+Requires.private: protobuf >= 2.4.1
10+Libs: -L@LIBDIR@ -lmirserver
11 Cflags: -I@INCLUDEDIR@ -I@PLATFORM_INCLUDEDIR@ -I@COMMON_INCLUDEDIR@

Subscribers

People subscribed via source and target branches