Mir

Mir/Mesa packaging have a dependency cycle so neither can build

Bug #1192908 reported by Daniel van Vugt
16
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Critical
Daniel van Vugt
mesa (Ubuntu)
Won't Fix
Medium
Unassigned
mir (Ubuntu)
New
Undecided
Unassigned

Bug Description

Mir/Mesa have a dependency cycle so cannot build if there are any significant changes in one (like a soname/ABI bump).

Mesa depends on mirclient
mirserver depends on Mesa

what makes it a cycle is that mirclient and mirserver are a single source package. So if anything changes (like libmirclient0 changing to libmirclient1) then we're stuck and can't rebuild anything. Not sure which chicken or egg came first and how we made it work originally.

Related branches

summary: - Mir/Mesa have a dependency cycle so cannot be upgraded
+ Mir/Mesa packaging have a dependency cycle so cannot be upgraded
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: Mir/Mesa packaging have a dependency cycle so cannot be upgraded

You might be able to work around the problem by building Mir against vanilla Mesa (which does not depend on Mir). That might work, as a slow and painful workaround.

Changed in mesa (Ubuntu):
status: New → Won't Fix
description: updated
Revision history for this message
Kevin DuBois (kdub) wrote :

we should move include/shared/mir_toolkit/mesa/native_display.h somewhere upstream, to mesa.

Changed in mir:
status: New → In Progress
Changed in mir:
importance: Undecided → High
Revision history for this message
Daniel van Vugt (vanvugt) wrote :
summary: - Mir/Mesa packaging have a dependency cycle so cannot be upgraded
+ Mir/Mesa packaging have a dependency cycle so neither can build
Changed in mir:
importance: High → Critical
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.0.4

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Actually I will leave this open for Mesa. A more elegant solution may be possible in Mesa. For example: Make libEGL dynamically load its backend at runtime rather than linking to all backends (X11/Mir/Wayland/...) at build time.

Changed in mesa (Ubuntu):
status: Won't Fix → Triaged
importance: Undecided → Medium
Changed in mir:
milestone: none → 0.0.4
Changed in mir:
milestone: 0.0.4 → 0.0.5
Changed in mir:
status: Fix Committed → Fix Released
Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

This bugs is still valid. We don't have a problem with 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 think 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.

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

OK, as this bug was Fix Released some time ago, but the fix is no longer present and we need to do a new one, I'm going to reopen duplicate bug 1239037 and continue the conversation there.

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.

Duplicates of this bug

Other bug subscribers

Remote bug watches

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