[regression] Mir deb packages with versioned names cannot be installed simultaneously any more
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Critical
|
Mir development team | ||
0.6 |
Won't Fix
|
Undecided
|
Unassigned | ||
mir (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
mir (Ubuntu RTM) |
Fix Released
|
High
|
Unassigned |
Bug Description
Mir has some packages with ABI-versioned names (libmirserver17, libmirclient7) so that multiple versions can be installed simultaneously, in theory. However this plan is not working;
Package: libmirserver17
Section: libs
Architecture: i386 amd64 armhf arm64
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends},
When we bump an ABI number, we also increase the ${binary:Version}. So you can see from the names that libmirplatform* can only have one version installed at a time. And that indirectly means that libmirserverN can never be installed simultaneously with libmirserverN+1.
This also leads to annoying CI failures as we're seeing this week:
The following packages have unmet dependencies:
libmirserver16 : Depends: libmirplatform (= 0.1.6+14.
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
There are at least two possible solutions I can think of so far:
(1) Change our Depends' to not use straight equality. So we must change:
libmirplatform (= ${binary:Version}),
to:
libmirplatform (>= ${binary:Version}),
or even to
libmirplatform (>= some_older_
(2) Change libplatform* to include some ABI number in their names. Not ideal.
I like (1).
Related branches
- PS Jenkins bot (community): Approve (continuous-integration)
- Daniel van Vugt: Needs Fixing
- Chris Halse Rogers: Approve
- Alexandros Frantzis (community): Approve
-
Diff: 195 lines (+61/-13)8 files modifieddebian/control (+22/-7)
debian/libmirplatform-dev.install (+3/-0)
debian/libmirplatform1.install (+1/-1)
debian/libmirserver-dev.install (+0/-1)
src/platform/CMakeLists.txt (+22/-0)
src/platform/mirplatform.pc.in (+10/-0)
src/server/CMakeLists.txt (+0/-2)
src/server/mirserver.pc.in (+3/-2)
- PS Jenkins bot (community): Needs Fixing (continuous-integration)
- Kevin DuBois (community): Needs Information
- Alberto Aguirre (community): Approve
-
Diff: 1037 lines (+536/-184)19 files modifiedCMakeLists.txt (+1/-1)
debian/changelog (+11/-0)
debian/control (+4/-4)
include/test/mir_test_framework/using_stub_client_platform.h (+11/-3)
src/client/api_impl.h (+0/-27)
src/client/api_impl_types.h (+0/-32)
src/client/mir_connection_api.cpp (+73/-66)
src/client/mir_connection_api.h (+59/-0)
src/platform/graphics/android/hwc_device.cpp (+19/-3)
src/platform/graphics/android/hwc_device.h (+1/-0)
src/platform/graphics/android/hwc_logger.h (+5/-0)
src/platform/graphics/android/hwc_loggers.cpp (+36/-0)
src/platform/graphics/android/hwc_loggers.h (+8/-0)
src/platform/graphics/android/real_hwc_wrapper.cpp (+4/-0)
tests/mir_test_framework/server_runner.cpp (+1/-1)
tests/mir_test_framework/using_stub_client_platform.cpp (+37/-35)
tests/unit-tests/graphics/android/test_hwc_device.cpp (+190/-0)
tests/unit-tests/graphics/android/test_hwc_logger.cpp (+40/-0)
tests/unit-tests/graphics/android/test_hwc_wrapper.cpp (+36/-12)
- Daniel van Vugt: Needs Fixing
- PS Jenkins bot (community): Approve (continuous-integration)
- Andreas Pokorny (community): Approve
- Alan Griffiths: Needs Information
- Robert Carr (community): Approve
- Mir development team: Pending requested
- Kevin DuBois: Pending requested
- Alexandros Frantzis: Pending requested
-
Diff: 4670 lines (+2221/-656)122 files modifiedCMakeLists.txt (+3/-1)
debian/control (+36/-36)
debian/create_postinst_prerm_scripts.sh (+0/-39)
debian/install_ld_so_conf.sh (+0/-26)
debian/mir-client-platform-android.install (+1/-1)
debian/mir-client-platform-mesa.install (+1/-1)
debian/mir-platform-graphics-android.install (+1/-1)
debian/mir-platform-graphics-mesa.install (+1/-1)
debian/mir-test-tools.install (+2/-1)
debian/rules (+2/-13)
debian/update-alternatives.postinst.in (+0/-18)
debian/update-alternatives.prerm.in (+0/-16)
include/platform/mir/graphics/platform.h (+36/-0)
include/platform/mir/options/configuration.h (+2/-0)
include/server/mir/default_server_configuration.h (+3/-0)
platform-ABI-sha1sums (+2/-2)
server-ABI-sha1sums (+3/-3)
src/CMakeLists.txt (+2/-0)
src/client/CMakeLists.txt (+16/-10)
src/client/android/CMakeLists.txt (+7/-22)
src/client/android/android_native_display_container.cpp (+16/-4)
src/client/android/android_native_display_container.h (+10/-3)
src/client/android/client_platform_factory.cpp (+21/-5)
src/client/android/client_platform_factory.h (+2/-5)
src/client/android/symbols.map (+5/-4)
src/client/client_platform_factory.h (+5/-2)
src/client/connection_configuration.h (+0/-3)
src/client/default_connection_configuration.cpp (+23/-18)
src/client/default_connection_configuration.h (+0/-4)
src/client/egl_native_display_container.h (+3/-1)
src/client/mesa/CMakeLists.txt (+6/-22)
src/client/mesa/client_platform.cpp (+1/-1)
src/client/mesa/client_platform_factory.cpp (+19/-5)
src/client/mesa/client_platform_factory.h (+0/-5)
src/client/mesa/mesa_native_display_container.cpp (+5/-5)
src/client/mesa/mesa_native_display_container.h (+1/-1)
src/client/mesa/native_surface.cpp (+0/-1)
src/client/mesa/symbols.map (+6/-4)
src/client/mir_connection.cpp (+7/-4)
src/client/mir_connection.h (+2/-0)
src/client/probing_client_platform_factory.cpp (+38/-0)
src/client/probing_client_platform_factory.h (+27/-0)
src/common/graphics/android/mir_native_window.cpp (+0/-1)
src/common/sharedlibrary/CMakeLists.txt (+4/-1)
src/common/symbols.map (+1/-0)
src/include/platform/mir/shared_library_loader.h (+0/-28)
src/platform/CMakeLists.txt (+22/-12)
src/platform/graphics/CMakeLists.txt (+1/-0)
src/platform/graphics/android/CMakeLists.txt (+16/-25)
src/platform/graphics/android/platform.cpp (+19/-0)
src/platform/graphics/android/symbols.map (+10/-0)
src/platform/graphics/mesa/CMakeLists.txt (+19/-26)
src/platform/graphics/mesa/platform.cpp (+28/-0)
src/platform/graphics/mesa/symbols.map (+15/-0)
src/platform/graphics/platform_probe.cpp (+50/-0)
src/platform/graphics/platform_probe.h (+37/-0)
src/platform/options/default_configuration.cpp (+70/-20)
src/platform/shared_library_loader.cpp (+0/-38)
src/platform/symbols.map (+3/-0)
src/server/CMakeLists.txt (+5/-1)
src/server/graphics/CMakeLists.txt (+1/-1)
src/server/graphics/default_configuration.cpp (+38/-5)
src/server/logging/CMakeLists.txt (+0/-1)
src/server/report/default_server_configuration.cpp (+9/-0)
src/server/report/logging/CMakeLists.txt (+0/-1)
src/server/report/logging/logging_report_factory.cpp (+5/-1)
src/server/report/logging_report_factory.h (+2/-0)
src/server/report/lttng/CMakeLists.txt (+1/-0)
src/server/report/lttng/lttng_report_factory.cpp (+5/-0)
src/server/report/lttng/shared_library_prober_report.cpp (+48/-0)
src/server/report/lttng/shared_library_prober_report.h (+52/-0)
src/server/report/lttng/shared_library_prober_report_tp.h (+71/-0)
src/server/report/lttng_report_factory.h (+1/-0)
src/server/report/null/CMakeLists.txt (+1/-0)
src/server/report/null/null_report_factory.cpp (+11/-0)
src/server/report/null/shared_library_prober_report.cpp (+35/-0)
src/server/report/null/shared_library_prober_report.h (+43/-0)
src/server/report/null_report_factory.h (+2/-1)
src/server/report/report_factory.h (+3/-0)
src/server/server.cpp (+1/-1)
src/server/symbols.map (+2/-0)
tests/acceptance-tests/CMakeLists.txt (+3/-6)
tests/acceptance-tests/server_configuration_wrapping.cpp (+3/-0)
tests/acceptance-tests/test_symbols_required_by_mesa.cpp (+6/-3)
tests/include/mir_test_doubles/mock_android_alloc_device.h (+5/-0)
tests/include/mir_test_doubles/mock_android_hw.h (+5/-0)
tests/include/mir_test_doubles/mock_hwc_composer_device_1.h (+5/-0)
tests/include/mir_test_framework/client_platform_factory.h (+72/-0)
tests/include/mir_test_framework/headless_test.h (+2/-2)
tests/include/mir_test_framework/platform_loader_helpers.h (+38/-0)
tests/include/mir_test_framework/stub_client_platform_factory.h (+33/-0)
tests/include/mir_test_framework/stub_server_platform_factory.h (+45/-0)
tests/integration-tests/CMakeLists.txt (+21/-2)
tests/mir_test_doubles/CMakeLists.txt (+13/-10)
tests/mir_test_framework/CMakeLists.txt (+56/-16)
tests/mir_test_framework/headless_test.cpp (+3/-1)
tests/mir_test_framework/platform_graphics_dummy.cpp (+33/-0)
tests/mir_test_framework/platform_loader_helpers.cpp (+98/-0)
tests/mir_test_framework/stub_client_platform_factory.cpp (+147/-0)
tests/mir_test_framework/stub_client_platform_module.cpp (+35/-0)
tests/mir_test_framework/stub_server_platform_factory.cpp (+54/-0)
tests/mir_test_framework/stubbed_graphics_platform.cpp (+6/-1)
tests/mir_test_framework/stubbed_server_configuration.cpp (+2/-2)
tests/mir_test_framework/symbols-client.map (+7/-0)
tests/mir_test_framework/symbols-server.map (+8/-0)
tests/mir_test_framework/testing_client_options.cpp (+2/-105)
tests/unit-tests/CMakeLists.txt (+33/-8)
tests/unit-tests/client/CMakeLists.txt (+1/-0)
tests/unit-tests/client/android/test_android_client_platform.cpp (+4/-7)
tests/unit-tests/client/mesa/test_client_platform.cpp (+7/-6)
tests/unit-tests/client/mesa/test_mesa_native_display_container.cpp (+1/-1)
tests/unit-tests/client/test_client_platform.cpp (+109/-29)
tests/unit-tests/client/test_probing_client_platform_factory.cpp (+141/-0)
tests/unit-tests/graphics/CMakeLists.txt (+1/-0)
tests/unit-tests/graphics/android/test_output_builder.cpp (+1/-0)
tests/unit-tests/graphics/android/test_platform.cpp (+24/-0)
tests/unit-tests/graphics/mesa/test_platform.cpp (+22/-0)
tests/unit-tests/graphics/test_platform_prober.cpp (+212/-0)
tests/unit-tests/shared_library_test.cpp (+4/-4)
tests/unit-tests/test_shared_library_prober.cpp (+2/-0)
tools/install_on_android.sh (+2/-2)
tools/valgrind_suppressions_armhf (+9/-0)
- Daniel van Vugt: Needs Fixing
- PS Jenkins bot (community): Approve (continuous-integration)
- Kevin DuBois (community): Needs Information
- Cemil Azizoglu (community): Needs Information
-
Diff: 447 lines (+66/-47)21 files modifieddebian/control (+6/-10)
debian/create_postinst_prerm_scripts.sh (+1/-1)
debian/install_ld_so_conf.sh (+1/-1)
debian/libmirclient8platform-android.install (+1/-1)
debian/libmirclient8platform-mesa.install (+1/-1)
debian/libmirplatform2graphics-android.install (+1/-1)
debian/libmirplatform2graphics-mesa.install (+1/-1)
debian/rules (+5/-2)
src/client/CMakeLists.txt (+7/-1)
src/client/android/CMakeLists.txt (+5/-5)
src/client/default_connection_configuration.cpp (+1/-1)
src/client/mesa/CMakeLists.txt (+5/-5)
src/platform/CMakeLists.txt (+6/-0)
src/platform/graphics/android/CMakeLists.txt (+5/-5)
src/platform/graphics/mesa/CMakeLists.txt (+5/-5)
src/platform/options/default_configuration.cpp (+1/-1)
tests/acceptance-tests/CMakeLists.txt (+5/-0)
tests/acceptance-tests/test_symbols_required_by_mesa.cpp (+2/-2)
tests/unit-tests/CMakeLists.txt (+4/-1)
tests/unit-tests/shared_library_test.cpp (+1/-1)
tools/install_on_android.sh (+2/-2)
- Kevin DuBois (community): Abstain
- PS Jenkins bot (community): Approve (continuous-integration)
- Cemil Azizoglu (community): Approve
- Chris Halse Rogers: Abstain
- Mir development team: Pending requested
-
Diff: 447 lines (+66/-47)21 files modifieddebian/control (+6/-10)
debian/create_postinst_prerm_scripts.sh (+1/-1)
debian/install_ld_so_conf.sh (+1/-1)
debian/libmirclient8driver-android.install (+1/-1)
debian/libmirclient8driver-mesa.install (+1/-1)
debian/libmirplatform3driver-android.install (+1/-1)
debian/libmirplatform3driver-mesa.install (+1/-1)
debian/rules (+5/-2)
src/client/CMakeLists.txt (+7/-1)
src/client/android/CMakeLists.txt (+5/-5)
src/client/default_connection_configuration.cpp (+1/-1)
src/client/mesa/CMakeLists.txt (+5/-5)
src/platform/CMakeLists.txt (+6/-0)
src/platform/graphics/android/CMakeLists.txt (+5/-5)
src/platform/graphics/mesa/CMakeLists.txt (+5/-5)
src/platform/options/default_configuration.cpp (+1/-1)
tests/acceptance-tests/CMakeLists.txt (+5/-0)
tests/acceptance-tests/test_symbols_required_by_mesa.cpp (+2/-2)
tests/unit-tests/CMakeLists.txt (+4/-1)
tests/unit-tests/shared_library_test.cpp (+1/-1)
tools/install_on_android.sh (+2/-2)
summary: |
- Mir packages with versioned names cannot be installed simultaneously any - more + Mir deb packages with versioned names cannot be installed simultaneously + any more |
Changed in mir: | |
milestone: | 0.1.8 → 0.1.9 |
Changed in mir: | |
milestone: | 0.1.9 → 0.1.10 |
Changed in mir: | |
milestone: | 0.2.0 → 0.3.0 |
Changed in mir: | |
milestone: | 0.3.0 → 0.4.0 |
Changed in mir: | |
milestone: | 0.4.0 → 0.5.0 |
Changed in mir: | |
milestone: | 0.5.0 → 0.6.0 |
Changed in mir: | |
assignee: | nobody → Chris Halse Rogers (raof) |
status: | Triaged → In Progress |
Changed in mir: | |
milestone: | 0.6.0 → 0.7.0 |
Changed in mir: | |
milestone: | 0.7.0 → 0.6.0 |
Changed in mir: | |
milestone: | 0.7.0 → none |
status: | Fix Committed → Fix Released |
Changed in mir: | |
milestone: | none → 0.7.0 |
status: | Fix Released → Fix Committed |
Changed in mir: | |
milestone: | 0.7.0 → 0.8.0 |
Changed in mir (Ubuntu): | |
status: | In Progress → Triaged |
summary: |
- Mir deb packages with versioned names cannot be installed simultaneously - any more + [regression] Mir deb packages with versioned names cannot be installed + simultaneously any more |
tags: | added: regression |
Changed in mir: | |
importance: | Medium → High |
Changed in mir (Ubuntu): | |
importance: | Medium → High |
Changed in mir: | |
milestone: | 0.9.0 → 0.8.0 |
no longer affects: | mir/0.8 |
Changed in mir: | |
assignee: | Mir development team (mir-team) → Daniel van Vugt (vanvugt) |
Changed in mir: | |
assignee: | Daniel van Vugt (vanvugt) → Mir development team (mir-team) |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Changed in mir (Ubuntu RTM): | |
importance: | Undecided → High |
status: | New → Triaged |
3) Install libmirplatform in directories corresponding to the SOVER. I prefer this even more, because we then don't have plugin objects polluting the default loader path.