circular build-dependency between mesa, mir

Bug #1239037 reported by Steve Langasek
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mir
Triaged
Medium
Unassigned
mesa (Ubuntu)
Won't Fix
Medium
Unassigned
mir (Ubuntu)
Triaged
Medium
Unassigned

Bug Description

While testing cross-building of mir, I noticed that mir and mesa have a build-dependency loop: installing the build-dependencies of mir installs libmirclient-dev.

This is because mir build-depends on libegl1-mesa-dev, and libegl1-mesa-dev depends on libmirclient-dev.

The libegl1-mesa runtime package does *not* depend on libmirclient3, so this dependency looks spurious to me. Is there a reason this dependency loop shouldn't be broken by dropping the dep from libegl1-mesa-dev -> libmirclient-dev? As near as I can tell, the dependency on libmirclient-dev is because of this section of /usr/include/EGL/eglplatform.h:

#elif defined(MIR_EGL_PLATFORM)

#include <mir_toolkit/mir_client_library.h>
typedef MirEGLNativeDisplayType EGLNativeDisplayType;
typedef void *EGLNativePixmapType;
typedef MirEGLNativeWindowType EGLNativeWindowType;

[...]

But that's optional, and anybody defining MIR_EGL_PLATFORM would presumably need to depend on mir themselves, no?

Revision history for this message
kevin gunn (kgunn72) wrote :

alf - since you've been digging around platform is this something that could easily be addressed ?
or has this already been cleaned up ?

Changed in mir:
assignee: nobody → Alexandros Frantzis (afrantzis)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Duplicate of bug 1192908, but forgive me for forgetting the exact details.

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

This bug is still valid. We don't have a problem at this point, because we have both mir and mesa packages in the archive, so we can build new versions using the existing versions of -dev packages to fulfill dependencies (this needs some care when we make incompatible changes).

I agree that our best way forward is to remove the dependency libegl1-mesa-dev has on libmirclient-dev. It's reasonable to assume that a program that needs to use Mir with EGL will depend on libmirclient-dev itself, or at least mircommon-dev (otherwise how can it know about the MirConnection/Surfaces types it needs to pass to EGL?).

I would also recommend changing mesa to build-depend on mircommon-dev instead of the full libmirclient-dev, since it only needs the Mir EGL definitions in the former package.

Note, though, that as Daniel points in bug #1192908, we have a circular dependency issue at the source package level, that can't be solved unless we either use multiple source packages for Mir, or move our Mir Mesa EGL definitions upstream in Mesa, as Kevin suggested.

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

The older bug 1192908 has a fix that landed (and was later deprecated). So to avoid confusing the situation I've reopened this bug for the work to happen in.

Changed in mir:
importance: Undecided → Medium
Changed in mesa (Ubuntu):
importance: Undecided → Medium
Changed in mir (Ubuntu):
importance: Undecided → Medium
Changed in mir:
status: New → Triaged
Changed in mesa (Ubuntu):
status: New → Triaged
Changed in mir (Ubuntu):
status: New → Triaged
Changed in mir:
assignee: Alexandros Frantzis (afrantzis) → nobody
Revision history for this message
Timo Aaltonen (tjaalton) wrote :

Mir EGL platform is gone

Changed in mesa (Ubuntu):
status: Triaged → Won't Fix
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.