Mir fails to cross-build with newer sbuild versions

Bug #1628507 reported by Alexandros Frantzis on 2016-09-28
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Alexandros Frantzis
abi-compliance-checker (Ubuntu)
Undecided
Unassigned
mir (Ubuntu)
Undecided
Unassigned

Bug Description

When trying to cross-build Mir with sbuild version >= 0.68.0, the build fails with:

sbuild-build-depends-mir-dummy:armhf : Depends: cmake-data:armhf but it is not installable
                                       Depends: abi-compliance-checker:armhf but it is not installable

This is caused by a change ([1]) in the way sbuild installs build-deps for the package under build. Previously sbuild used the 'apt-get build-dep' command, but recent versions calculate the build-deps manually (using the Dpkg perl module) and install the -dummy package instead.

This change isn't a problem in and of itself, but unfortunately uncovers a problem in the cmake-data and abi-compliance-checker packages. In particular, the two packages are not multi-arch ready and sbuild can't know that it needs to install their native/build (amd64) version, so it uses the host (armhf) version instead.

The previous 'apt-get build-dep' way worked because APT is patched in ubuntu (but not in debian) to consider packages with architecture 'all' as 'Multi-Arch: foreign' ([1],[2]). The Dpkg perl modules don't contain such a patch.

[1] https://anonscm.debian.org/cgit/buildd-tools/sbuild.git/commit/?id=e227c8f3e10edd78bc71350380f559c481634b79
[2] https://wiki.debian.org/Multiarch/CrossDependencies
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666772

Alexandros Frantzis (afrantzis) wrote :

Suggested solution is:

* Remove cmake-data from the build-dep list, since cmake depends on it anyway
* During CI cross-builds remove abi-compliance-checker from the build-deps. We don't perform any ABI checks in our cross-build job.

Other solutions that I considered and rejected:

* Mark abi-compliance-checker as ':native' in the build-deps. This makes sbuild build-dep installation happy, but still fails during the actual package build, because dpkg-checkbuilddeps doesn't use packages with architecture 'all' to satisfy ':native' build-deps. Not sure what the right behavior for dpkg-checkbuilddeps should be.

* Fix the abi-compliance-checker package to support Multi-Arch. This is the ideal solution and should be eventually done for future releases. However, backporting the change to older releases is not too appealing at this point (we need to unblock Mir CI).

description: updated
Mir CI Bot (mir-ci-bot) wrote :

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

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
milestone: none → 0.25.0
Launchpad Janitor (janitor) wrote :
Download full text (5.7 KiB)

This bug was fixed in the package mir - 0.25.0+17.04.20161203-0ubuntu1

---------------
mir (0.25.0+17.04.20161203-0ubuntu1) zesty; urgency=medium

  * New upstream release 0.25.0 (https://launchpad.net/mir/+milestone/0.25.0)
    - ABI summary:
      . mirclient ABI unchanged at 9
      . mirserver ABI bumped to 42
      . mircommon ABI bumped to 7
      . mirplatform ABI bumped to 14
      . mirprotobuf ABI unchanged at 3
      . mirplatformgraphics ABI bumped to 11
      . mirclientplatform ABI unchanged at 5
      . mirinputplatform ABI bumped to 6
      . mircore ABI added, at version 1
    - Enhancements:
      . Added pointer confinement support
      . Identify Raspberry Pi output types correctly
      . Added dead key and compose key support
      . Added gamma support for KMS hardware
      . Added yakkety and zesty gcc-6 support
      . Added surface passthrough support for fullscreen clients of nested
        servers
      . Introduced a new library `libmircore'
      . Began migrating from Protobuf to Cap'n Proto starting with events
      . Began support for VirtualBox (servers now start instead of crashing
        but full support for GL clients is still missing)
      . Began support for high precision frame timing, implemented for the
        KMS, Android and X11 backends so far
      . Added --display-report support for the X11 backend
      . Improved reliability of `mirvanity' latency test tool
      . Moved to using the CSS cursor naming scheme internally, although
        the old symbolic indentifiers remain unchanged and still work
      . Added refresh rate to MirSurfaceOutputEvent
      . Many improvements to automated test quality and coverage
      . Smoother desktop zoom using mir_proving_server (Super + two fingers)
    - Bugs fixed:
      . FTBFS On Zesty: invalid use of
        'struct native_handle' (LP: #1638774)
      . libmirclient-debug-extension-dev install debug/surface.h
        twice (LP: #1639153)
      . Mir crashes on virtual box drmModeCrtcSetGamma
        Function not implemented (LP: #1638220)
      . Flickering in mir_demo_client_multistream (LP: #1635273)
      . Camera apps (camera & vanity) never exit (LP: #1635010)
      . Clients cannot connect when MIR_SOCKET="" (LP: #1634508)
      . mirtest-dev packaging fails to sepcify boost depends (LP: #1633537)
      . cursor.h is unclear about mir_diagonal_resize_* (LP: #1626924)
      . Inconsistent underscores in cursor names (LP: #1632617)
      . [regression] Accidental libmircommon.so.6 break (LP: #1617865)
      . [regression] mir demo server fails to start with mx4 (LP: #1615703)
      . [regression] Trust prompt now shown when starting camera (LP: #1612256)
      . [regression] make abi-check fails to build (LP: #1626866)
      . Nested servers prevent overlays or fullscreen bypass (LP: #1262116)
      . Failed to get PRIME fd from gbm bo (LP: #1607812)
      . Mir-on-X is difficult to use on 1366x768 laptop (LP: #1590959)
      . Remove useless message 'Surface 0 DPI' in demos (LP: #1559831)
      . Mir fails to cross-build with newer sbuild (LP: #1628507)
      . Infinite loop in AbstractShell::focus_next_session (LP: #1625401)
      . Dest...

Read more...

Changed in mir (Ubuntu):
status: New → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers