Mir

Merge lp://qastaging/~alan-griffiths/mir/deduplicate-platform-plugin-symbols-maps into lp://qastaging/mir

Proposed by Alan Griffiths
Status: Rejected
Rejected by: Alan Griffiths
Proposed branch: lp://qastaging/~alan-griffiths/mir/deduplicate-platform-plugin-symbols-maps
Merge into: lp://qastaging/mir
Diff against target: 69 lines (+4/-11)
4 files modified
src/client/CMakeLists.txt (+2/-0)
src/client/android/CMakeLists.txt (+1/-3)
src/client/android/symbols.map (+0/-5)
src/client/mesa/CMakeLists.txt (+1/-3)
To merge this branch: bzr merge lp://qastaging/~alan-griffiths/mir/deduplicate-platform-plugin-symbols-maps
Reviewer Review Type Date Requested Status
Alexandros Frantzis (community) Needs Fixing
Alan Griffiths Needs Information
Chris Halse Rogers Needs Information
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+229939@code.qastaging.launchpad.net

Commit message

client: deduplicate the symbols maps for the client-side mesa and android plugins

Description of the change

client: deduplicate the symbols maps for the client-side mesa and android plugins

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
Chris Halse Rogers (raof) wrote :

Hm. I'm not sure this is a good idea. The mesa and android client platforms export different symbols; do we want to tie them together?

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

It *seems* to work. Although I agree we should be concerned about mentioning "mesa" in non-mesa platforms...

$ cat mesa/symbols.map
MIR_CLIENTPLATFORM_1 {
  global:
    create_client_platform_factory;
    # Needed by our Mesa EGL platform
    mir_client_mesa_egl_native_display_is_valid;
  local: *;
};

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

Oh, yeah. It *works*. I just didn't think it was a good idea :)

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

*Needs discussion*

I think that our (or anyone else's) platform plugins /ought/ to conform to a common interface.

They don't and this discussion makes it painfully obvious.

Is it necessary for "our Mesa EGL platform" to rely on this export or is that a wart we should remove at some point?

review: Needs Information
Revision history for this message
Kevin DuBois (kdub) wrote :

IIRC, the mir_client_mesa_egl_native_display_is_valid needs exporting because there isn't a way to get this information via the EGLNativeWindowType (or EGLNativeDisplayType) for mesa. The proper fix is probably to root out that function in mesa egl, and add an info-gathering path via the native types.
Its definitely a wart, but I'm okay with it until we can get around fixing the mesa egl. The bulk of the platform stuff is hidden behind the generic symbols

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

One solution would be to drop the local: *; stanza. Then we've got a symbols.map that specifies the interface we care about, without breaking others.

Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

> I think that our (or anyone else's) platform plugins /ought/ to conform to a common interface.

They do conform to a common interface from Mir's point of view: they export create_client_platform_factory. However, they may need to conform to other interfaces too, required for hardware platform integration.

> One solution would be to drop the local: *; stanza.

That would defeat the main goal of the symbol map in this case, which is to reduce the number of exported symbols to the minimum possible.

Only platform plugins themselves know what they need to export to keep both Mir and the hardware platform happy, and this should be expressed inside the (build) code of each platform plugin.

I am OK with completely separate version scripts for now, but another option is for the plugins to start with a common symbol map template (e.g. src/client/pluginsymbols.map.in just exporting what mir needs which is currently create_client_platform_factory), and be able to extend that with any symbols they need for hardware platform integration:

MIR_CLIENTPLATFORM_1 {
  global:
    create_client_platform_factory;
    $PLATFORM_SPECIFIC_EXPORTS
  local: *;
};

// Or a custom clause if we don't platform specific exports to be versioned with MIR ABI?
// Not sure how/if version scripts support this.
// $PLATFORM_SPECIFIC_EXPORTS_CLAUSE

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

> I am OK with completely separate version scripts for now, but another option

Me too

Unmerged revisions

1830. By Alan Griffiths

Deduplicate the symbols maps for the mesa & android plugins

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches