Comment 10 for bug 1318084

Revision history for this message
Daniel Manrique (roadmr) wrote :

OK, I confirmed a similar but not exactly identical problem with 12.04.2 (quantal enablement stack).

I looked at the dependencies more closely, starting from the top-level glmark-es2 package, on this 12.04.2 system:

Package: glmark2-es2
Depends: libc6 (>= 2.4), libegl1-mesa (>= 7.8.1) | libegl1-x11, libgcc1 (>= 1:4.1.1), libgles2-mesa (>= 7.8.1) | libgles2, libpng12-0 (>= 1.2.13-4), libstdc++6 (>= 4.6), libx11-6, glmark2-data (= 2011.09-0ubuntu1)

These are interesting:

libegl1-mesa (>= 7.8.1) | libegl1-x11
ibgles2-mesa (>= 7.8.1) | libgles2

As mentioned above, libgles2-mesa is the one that breaks the X stack, by bringing in a specific version of libglapi-mesa:

Package: libgles2-mesa
Replaces: libgles2
Provides: libgles2
Depends: libglapi-mesa (= 8.0.2-0ubuntu3), libc6 (>= 2.2.5)

libegl1-mesa does something similar altough its dependency chain is a bit more obscure.

Now, notice that both dependencies have an alternative (| libgles2 for instance). This means that if a package providing 'libgles2' were installed, then libgles2-mesa wouldn't be installed and wouldn't break things. Which packages provide libgles2? A lot, most of them are the per-release enablement stacks. For instance:

Package: libgles2-mesa-lts-quantal
Replaces: libgles2, libgles2-mesa
Provides: libgles2, libgles2-mesa, xorg-renamed-package, xorg-renamed-package-lts-quantal

A similar situation with libegl1-mesa, packages providing libegl1-x11 include:

Package: libegl1-mesa-lts-quantal
Replaces: libegl1-mesa, libegl1-x11
Provides: libegl1-mesa, libegl1-x11, xorg-renamed-package, xorg-renamed-package-lts-quantal

So the problem is:

- If none of those lts-quantal packages are installed, glmark2-es2 will try to install the first packages listed (the ones on the left side of the | ), based on how debian package dependencies are processed. This breaks the stack on a freshly-installed system.

- But if I install the stack-specific packages first (libegl1-mesa-lts-quantal, libgles2-mesa-lts-quantal), then their provides: satisfy the requirements for glmark2-es2, which then doesn't install the breaker packages and everything works fine.