Mir

Merge lp:~vanvugt/mir/fix-1617865-without-breaks into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Approved by: Daniel van Vugt
Approved revision: no longer in the source branch.
Merged at revision: 3716
Proposed branch: lp:~vanvugt/mir/fix-1617865-without-breaks
Merge into: lp:mir
Diff against target: 71 lines (+44/-0)
3 files modified
src/common/dispatch/CMakeLists.txt (+1/-0)
src/common/dispatch/legacy_readable_fd.cpp (+34/-0)
src/common/symbols.map (+9/-0)
To merge this branch: bzr merge lp:~vanvugt/mir/fix-1617865-without-breaks
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Kevin DuBois (community) Approve
Alan Griffiths Approve
Review via email: mp+306745@code.launchpad.net

Commit message

Fix ABI break LP: #1617865 without introducing another break by
re-exporting the old deleted symbol versions. The new versions
continue to also be exported by the usual symbols.map.

Description of the change

Mir 0.23.5:
MIR_COMMON_5.1  _ZN3mir8dispatch10ReadableFd8dispatchEj
MIR_COMMON_5.1  _ZN3mir8dispatch10ReadableFdC1ENS_2FdERKSt8functionIFvvEE
MIR_COMMON_5.1  _ZN3mir8dispatch10ReadableFdC2ENS_2FdERKSt8functionIFvvEE
MIR_COMMON_5.1  _ZN3mir8dispatch10ReadableFdD0Ev
MIR_COMMON_5.1  _ZN3mir8dispatch10ReadableFdD1Ev
MIR_COMMON_5.1  _ZN3mir8dispatch10ReadableFdD2Ev
MIR_COMMON_5.1  _ZNK3mir8dispatch10ReadableFd15relevant_eventsEv
MIR_COMMON_5.1  _ZNK3mir8dispatch10ReadableFd8watch_fdEv

Mir 0.24.0:
MIR_COMMON_0.24 _ZN3mir8dispatch10ReadableFd8dispatchEj
MIR_COMMON_0.24 _ZN3mir8dispatch10ReadableFdC1ENS_2FdERKSt8functionIFvvEE
MIR_COMMON_0.24 _ZN3mir8dispatch10ReadableFdC2ENS_2FdERKSt8functionIFvvEE
MIR_COMMON_0.24 _ZN3mir8dispatch10ReadableFdD0Ev
MIR_COMMON_0.24 _ZN3mir8dispatch10ReadableFdD1Ev
MIR_COMMON_0.24 _ZN3mir8dispatch10ReadableFdD2Ev
MIR_COMMON_0.24 _ZNK3mir8dispatch10ReadableFd15relevant_eventsEv
MIR_COMMON_0.24 _ZNK3mir8dispatch10ReadableFd8watch_fdEv
MIR_COMMON_0.24 _ZTVN3mir8dispatch10ReadableFdE

Mir 0.25.0:
MIR_COMMON_0.24  _ZN3mir8dispatch10ReadableFd8dispatchEj
(MIR_COMMON_5.1) _ZN3mir8dispatch10ReadableFd8dispatchEj
MIR_COMMON_0.24  _ZN3mir8dispatch10ReadableFdC1ENS_2FdERKSt8functionIFvvEE
(MIR_COMMON_5.1) _ZN3mir8dispatch10ReadableFdC1ENS_2FdERKSt8functionIFvvEE
MIR_COMMON_0.24  _ZN3mir8dispatch10ReadableFdC2ENS_2FdERKSt8functionIFvvEE
(MIR_COMMON_5.1) _ZN3mir8dispatch10ReadableFdC2ENS_2FdERKSt8functionIFvvEE
MIR_COMMON_0.24  _ZN3mir8dispatch10ReadableFdD0Ev
(MIR_COMMON_5.1) _ZN3mir8dispatch10ReadableFdD0Ev
MIR_COMMON_0.24  _ZN3mir8dispatch10ReadableFdD1Ev
(MIR_COMMON_5.1) _ZN3mir8dispatch10ReadableFdD1Ev
MIR_COMMON_0.24  _ZN3mir8dispatch10ReadableFdD2Ev
(MIR_COMMON_5.1) _ZN3mir8dispatch10ReadableFdD2Ev
MIR_COMMON_0.24  _ZNK3mir8dispatch10ReadableFd15relevant_eventsEv
(MIR_COMMON_5.1) _ZNK3mir8dispatch10ReadableFd15relevant_eventsEv
MIR_COMMON_0.24  _ZNK3mir8dispatch10ReadableFd8watch_fdEv
(MIR_COMMON_5.1) _ZNK3mir8dispatch10ReadableFd8watch_fdEv
MIR_COMMON_0.24  _ZTVN3mir8dispatch10ReadableFdE

To post a comment you must log in.
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I have also verified this branch fixes the driver load failure that originally exposed the bug:
https://bugs.launchpad.net/mir/+bug/1611804/comments/8

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3716
https://mir-jenkins.ubuntu.com/job/mir-ci/1814/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2266
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2329
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2320
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2320
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2320
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2294
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2294/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2294
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2294/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2294
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2294/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2294
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2294/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2294
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2294/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/1814/rebuild

review: Approve (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

The purist in me wants MIR_COMMON_5.1 to be the default symbol, but this is the best solution so far and definitely adequate.

review: Approve
Revision history for this message
Kevin DuBois (kdub) wrote :

lgtm too

review: Approve
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/607/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/2272/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/647/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2335
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2326
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2326
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2326
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2300/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2300
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2300/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2300
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2300/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2300
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2300/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2300
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2300/artifact/output/*zip*/output.zip

review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

^^^
Just autolanding bug 1616312 again

Revision history for this message
Mir CI Bot (mir-ci-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/common/dispatch/CMakeLists.txt'
2--- src/common/dispatch/CMakeLists.txt 2016-01-29 08:18:22 +0000
3+++ src/common/dispatch/CMakeLists.txt 2016-09-26 09:07:00 +0000
4@@ -19,6 +19,7 @@
5 ${CMAKE_CURRENT_SOURCE_DIR}/action_queue.cpp
6 ${CMAKE_CURRENT_SOURCE_DIR}/multiplexing_dispatchable.cpp
7 ${CMAKE_CURRENT_SOURCE_DIR}/readable_fd.cpp
8+ ${CMAKE_CURRENT_SOURCE_DIR}/legacy_readable_fd.cpp
9 ${CMAKE_CURRENT_SOURCE_DIR}/threaded_dispatcher.cpp
10 ${CMAKE_CURRENT_SOURCE_DIR}/utils.cpp
11 )
12
13=== added file 'src/common/dispatch/legacy_readable_fd.cpp'
14--- src/common/dispatch/legacy_readable_fd.cpp 1970-01-01 00:00:00 +0000
15+++ src/common/dispatch/legacy_readable_fd.cpp 2016-09-26 09:07:00 +0000
16@@ -0,0 +1,34 @@
17+/*
18+ * Copyright © 2016 Canonical Ltd.
19+ *
20+ * This program is free software: you can redistribute it and/or modify it
21+ * under the terms of the GNU Lesser General Public License version 3,
22+ * as published by the Free Software Foundation.
23+ *
24+ * This program is distributed in the hope that it will be useful,
25+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
26+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27+ * GNU Lesser General Public License for more details.
28+ *
29+ * You should have received a copy of the GNU Lesser General Public License
30+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
31+ *
32+ * Authored by: Daniel van Vugt <daniel.van.vugt@canonical.com>
33+ *
34+ * TODO: Remove this file at the next mircommon ABI break.
35+ */
36+
37+#define ReadableFd LegacyReadableFd
38+
39+#include "mir/dispatch/readable_fd.h"
40+
41+__asm__(".symver _ZN3mir8dispatch16LegacyReadableFd8dispatchEj,_ZN3mir8dispatch10ReadableFd8dispatchEj@MIR_COMMON_5.1");
42+__asm__(".symver _ZN3mir8dispatch16LegacyReadableFdC1ENS_2FdERKSt8functionIFvvEE,_ZN3mir8dispatch10ReadableFdC1ENS_2FdERKSt8functionIFvvEE@MIR_COMMON_5.1");
43+__asm__(".symver _ZN3mir8dispatch16LegacyReadableFdC2ENS_2FdERKSt8functionIFvvEE,_ZN3mir8dispatch10ReadableFdC2ENS_2FdERKSt8functionIFvvEE@MIR_COMMON_5.1");
44+__asm__(".symver _ZN3mir8dispatch16LegacyReadableFdD0Ev,_ZN3mir8dispatch10ReadableFdD0Ev@MIR_COMMON_5.1");
45+__asm__(".symver _ZN3mir8dispatch16LegacyReadableFdD1Ev,_ZN3mir8dispatch10ReadableFdD1Ev@MIR_COMMON_5.1");
46+__asm__(".symver _ZN3mir8dispatch16LegacyReadableFdD2Ev,_ZN3mir8dispatch10ReadableFdD2Ev@MIR_COMMON_5.1");
47+__asm__(".symver _ZNK3mir8dispatch16LegacyReadableFd8watch_fdEv,_ZNK3mir8dispatch10ReadableFd8watch_fdEv@MIR_COMMON_5.1");
48+__asm__(".symver _ZNK3mir8dispatch16LegacyReadableFd15relevant_eventsEv,_ZNK3mir8dispatch10ReadableFd15relevant_eventsEv@MIR_COMMON_5.1");
49+
50+#include "./readable_fd.cpp"
51
52=== modified file 'src/common/symbols.map'
53--- src/common/symbols.map 2016-09-19 04:16:15 +0000
54+++ src/common/symbols.map 2016-09-26 09:07:00 +0000
55@@ -382,7 +382,16 @@
56 android::MotionEvent::initialize*;
57 mir::dispatch::epoll_to_fd_event*;
58 mir::dispatch::fd_event_to_epoll*;
59+
60+ #
61+ # This entry is a bug LP: #1617865 which now overrides the other entries
62+ # for ReadableFd in MIR_COMMON_5.1 above. But rather than remove it and
63+ # break the ABI again we have re-exported the old MIR_COMMON_5.1
64+ # symbols using assembler directives in:
65+ # src/common/dispatch/legacy_readable_fd.cpp
66+ #
67 mir::dispatch::ReadableFd*;
68+
69 vtable?for?mir::dispatch::ReadableFd;
70 };
71 } MIR_COMMON_0.22;

Subscribers

People subscribed via source and target branches