Merge lp:~ted/ubuntu-app-launch/abi-compliance into lp:ubuntu-app-launch/16.10
| Status: | Merged | ||||
|---|---|---|---|---|---|
| Approved by: | dobey on 2016-08-17 | ||||
| Approved revision: | 247 | ||||
| Merged at revision: | 242 | ||||
| Proposed branch: | lp:~ted/ubuntu-app-launch/abi-compliance | ||||
| Merge into: | lp:ubuntu-app-launch/16.10 | ||||
| Prerequisite: | lp:~ted/ubuntu-app-launch/eventually-tests | ||||
| Diff against target: |
161 lines (+82/-8) 7 files modified
CMakeLists.txt (+15/-0) debian/control (+5/-1) libubuntu-app-launch/CMakeLists.txt (+1/-7) libubuntu-app-launch/abi-check/CMakeLists.txt (+15/-0) libubuntu-app-launch/abi-check/build.xml.in (+9/-0) libubuntu-app-launch/abi-check/check-abi.sh.in (+28/-0) libubuntu-app-launch/abi-check/installed.xml.in (+9/-0) |
||||
| To merge this branch: | bzr merge lp:~ted/ubuntu-app-launch/abi-compliance | ||||
| Related bugs: |
|
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Charles Kerr (community) | Approve on 2016-08-17 | ||
| dobey (community) | 2016-08-07 | Approve on 2016-08-17 | |
| unity-api-1-bot | continuous-integration | 2016-08-07 | Approve on 2016-08-17 |
|
Review via email:
|
|||
This proposal supersedes a proposal from 2016-08-05.
Commit Message
Add test for abi compatibility
Description of the Change
This is a bit of a hack, but it seems to work well. It makes the version of ubuntu-app-launch that is in the archive a build dependency so that it gets installed on the system. Then it generates the ABI profile of that version and compares it against the built version in this branch. If they match, we're all good, if not it is an error.
To make sure that we can bootstrap we also depend on valgrind. If there is no previous version then the test succeeds without checking.
| unity-api-1-bot (unity-api-1-bot) wrote : | # |
PASSED: Continuous integration, rev:245
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
| unity-api-1-bot (unity-api-1-bot) wrote : | # |
PASSED: Continuous integration, rev:246
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
| Ted Gould (ted) wrote : | # |
Discussed with seb128 and Laney in #ubuntu-desktop and they suggested changing to <!stage1> to solve the bootstrap issue, but otherwise were happy with the idea.
| dobey (dobey) wrote : | # |
I'm not really happy with it, because while this does theoretically somewhat guarantee stability in a specific series, it doesn't solve the core problem that we ship different ABIs with the same soname, in different versions of Ubuntu.
| Ted Gould (ted) wrote : | # |
Certainly it doesn't solve all the problems we could have, but I think it is general improvement from what is currently being done for UAL today. There is, AFAIK, not a solution that covers all of those cases for C++ libraries without maintaining a large array of ABI captures for every series/
| unity-api-1-bot (unity-api-1-bot) wrote : | # |
PASSED: Continuous integration, rev:247
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
| dobey (dobey) wrote : | # |
Really wish we could do this some other way than the ouroboros effect.
| Charles Kerr (charlesk) wrote : | # |
Approving the CMake. Optional comments inline.
As for the ABI part -- Since Ted's gotten in-IRC comment from Seb128 and Laney, I'd prefer to see one of them here for reviewing the actual ABI test.
+1 to the Dobey/Ted comments that this is a step forward rather than a total fix.

FAILED: Continuous integration, rev:244 /jenkins. canonical. com/unity- api-1/job/ lp-ubuntu- app-launch- ci/29/ /jenkins. canonical. com/unity- api-1/job/ build/300/ console /jenkins. canonical. com/unity- api-1/job/ build-0- fetch/306 /jenkins. canonical. com/unity- api-1/job/ build-1- sourcepkg/ release= vivid+overlay/ 235 /jenkins. canonical. com/unity- api-1/job/ build-1- sourcepkg/ release= xenial+ overlay/ 235 /jenkins. canonical. com/unity- api-1/job/ build-1- sourcepkg/ release= yakkety/ 235 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 164 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 164/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 164 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 164/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 164 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 164/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 164/console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 164/console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 164 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 164/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 164/console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 164 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 164/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= yakkety/ 164 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= yakkety/ 164/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/unity- api-1/job/ lp-ubuntu- app-launch- ci/29/rebuild
https:/