Merge lp:~mir-team/mir/server-platform-probing into lp:mir
| Status: | Merged |
|---|---|
| Merged at revision: | 2254 |
| Proposed branch: | lp:~mir-team/mir/server-platform-probing |
| Merge into: | lp:mir |
| Prerequisite: | lp:~mir-team/mir/probe-client-drivers |
| Diff against target: |
2938 lines (+1285/-339) 82 files modified
CMakeLists.txt (+4/-0) debian/control (+35/-33) debian/libmirplatform6driver-android.install (+0/-1) debian/libmirplatform6driver-mesa.install (+0/-1) debian/mir-platform-graphics-android.install (+1/-0) debian/mir-platform-graphics-mesa.install (+1/-0) debian/mir-test-tools.install (+1/-1) debian/rules (+1/-14) include/platform/mir/graphics/platform.h (+31/-1) include/platform/mir/module_properties.h (+37/-0) platform-ABI-sha1sums (+2/-1) server-ABI-sha1sums (+2/-1) src/CMakeLists.txt (+1/-6) src/client/default_connection_configuration.cpp (+1/-1) src/common/graphics/android/mir_native_window.cpp (+0/-1) src/include/platform/mir/graphics/platform_probe.h (+37/-0) src/include/platform/mir/options/configuration.h (+2/-0) src/include/platform/mir/options/default_configuration.h (+5/-0) src/include/platform/mir/shared_library_loader.h (+0/-28) src/include/server/mir/default_server_configuration.h (+3/-0) src/platform/CMakeLists.txt (+6/-6) src/platform/graphics/CMakeLists.txt (+1/-0) src/platform/graphics/platform_probe.cpp (+59/-0) src/platform/options/default_configuration.cpp (+49/-20) src/platform/symbols.map (+3/-3) src/platforms/CMakeLists.txt (+16/-0) src/platforms/android/server/CMakeLists.txt (+16/-25) src/platforms/android/server/platform.cpp (+23/-1) src/platforms/android/server/symbols.map (+10/-0) src/platforms/common/server/symbols.map (+4/-3) src/platforms/mesa/server/CMakeLists.txt (+19/-26) src/platforms/mesa/server/platform.cpp (+32/-1) src/platforms/mesa/server/symbols.map (+16/-0) src/server/CMakeLists.txt (+5/-1) src/server/graphics/CMakeLists.txt (+1/-1) src/server/graphics/default_configuration.cpp (+45/-13) src/server/report/default_server_configuration.cpp (+9/-0) src/server/report/logging/logging_report_factory.cpp (+5/-0) src/server/report/logging_report_factory.h (+1/-0) src/server/report/lttng/CMakeLists.txt (+1/-0) src/server/report/lttng/lttng_report_factory.cpp (+6/-0) src/server/report/lttng/shared_library_prober_report.cpp (+52/-0) src/server/report/lttng/shared_library_prober_report.h (+48/-0) src/server/report/lttng/shared_library_prober_report_tp.h (+70/-0) src/server/report/lttng/tracepoints.c (+1/-0) src/server/report/lttng_report_factory.h (+1/-0) src/server/report/null/null_report_factory.cpp (+11/-0) src/server/report/null_report_factory.h (+2/-0) src/server/report/report_factory.h (+2/-0) src/server/server.cpp (+8/-5) src/server/symbols.map (+2/-0) src/wrapper.c (+3/-0) tests/acceptance-tests/CMakeLists.txt (+1/-5) tests/acceptance-tests/server_configuration_wrapping.cpp (+3/-0) tests/acceptance-tests/test_symbols_required_by_mesa.cpp (+2/-2) tests/include/mir_test_framework/client_platform_factory.h (+2/-2) tests/include/mir_test_framework/executable_path.h (+2/-0) tests/include/mir_test_framework/headless_test.h (+1/-1) tests/include/mir_test_framework/stub_server_platform_factory.h (+49/-0) tests/integration-tests/CMakeLists.txt (+10/-1) tests/mir_test_doubles/CMakeLists.txt (+10/-8) tests/mir_test_framework/CMakeLists.txt (+36/-18) tests/mir_test_framework/executable_path.cpp (+27/-0) tests/mir_test_framework/headless_test.cpp (+5/-27) tests/mir_test_framework/platform_graphics_dummy.cpp (+36/-0) tests/mir_test_framework/stub_client_platform_factory.cpp (+1/-0) tests/mir_test_framework/stub_server_platform_factory.cpp (+72/-0) tests/mir_test_framework/stubbed_graphics_platform.cpp (+11/-7) tests/mir_test_framework/stubbed_server_configuration.cpp (+2/-2) tests/mir_test_framework/symbols-server.map (+8/-0) tests/mir_test_framework/testing_client_options.cpp (+2/-53) tests/unit-tests/CMakeLists.txt (+27/-8) tests/unit-tests/client/CMakeLists.txt (+1/-0) tests/unit-tests/client/test_client_platform.cpp (+4/-4) tests/unit-tests/client/test_probing_client_platform_factory.cpp (+3/-3) tests/unit-tests/graphics/CMakeLists.txt (+1/-0) tests/unit-tests/graphics/android/test_platform.cpp (+26/-0) tests/unit-tests/graphics/mesa/test_platform.cpp (+24/-0) tests/unit-tests/graphics/test_platform_prober.cpp (+215/-0) tests/unit-tests/shared_library_test.cpp (+1/-1) tools/install_on_android.sh (+3/-3) tools/valgrind_suppressions_armhf (+9/-0) |
| To merge this branch: | bzr merge lp:~mir-team/mir/server-platform-probing |
| Related bugs: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| PS Jenkins bot | continuous-integration | 2014-12-17 | Needs Fixing on 2015-01-22 |
| Cemil Azizoglu (community) | Approve on 2015-01-22 | ||
| Alberto Aguirre | Approve on 2015-01-22 | ||
| Alan Griffiths | Approve on 2015-01-15 | ||
| Chris Halse Rogers | Approve on 2015-01-14 | ||
| Daniel van Vugt | Needs Fixing on 2015-01-12 | ||
| Robert Carr (community) | 2014-12-17 | Approve on 2015-01-05 | |
| Andreas Pokorny (community) | Approve on 2014-12-20 | ||
|
Review via email:
|
|||
This proposal supersedes a proposal from 2014-12-01.
Commit Message
Add server-side platform probing support.
Modules are checked in MIR_SERVER_
Modules are probed to determine whether they can drive the available hardware. If a real platform - Android or Mesa - is capable of driving the hardware then it is used; otherwise the stub platform is loaded.
Description of the Change
The second part of driver loading.
This removes our update-alternatives cludge, and should make bugs like lp #1396978 a thing of the past.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2123
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| Andreas Pokorny (andreas-pokorny) wrote : | # |
first run over the mp:
+ 996 too much indent
What is the idea behind ModuleProperties? Just human readable information about the module, or something to base the module selection on?
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2124
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| Chris Halse Rogers (raof) wrote : | # |
ModuleProperties is meant to be human-readable information.
Ah. I see I've failed to log that anywhere. I'll update so that the driver selected gets logged.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2132
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Andreas Pokorny (andreas-pokorny) wrote : | # |
Since you already used 'graphics' in the ABI and since we are slowly moving towards an input platform library:
suggestion: l308: platform_library -> platfom_
l772: catch by reference
l:1671 : why those changes? I thought this only changes the server side part?
l:1746: It seems that the contents of input_recordings/ are not in use anymore, you could also just drop it.
less of a needs fixing: Thinking about input platform: mir::ModuleProp
| Andreas Pokorny (andreas-pokorny) wrote : | # |
after merging, mirplatformgrap
| Andreas Pokorny (andreas-pokorny) wrote : | # |
Why do you deal with environment in 918 and the following by just using options.
1 command line option for library
2 environment for library
3 environment for search path
4 command line option for search path
| Andreas Pokorny (andreas-pokorny) wrote : | # |
s/by/instead of/ on last comment
| Andreas Pokorny (andreas-pokorny) wrote : | # |
> Why do you deal with environment in 918 and the following by just using
> options.
> environment value and command line option is in the current MP:
nm, forgot about mir::options behavior towards unknown environment variables..
additional nits:
677, 749 for (
With this MP we could rename the graphics_
So with that I am done reviewing.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2140
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2141
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| Robert Carr (robertcarr) wrote : | # |
lgtm
p.s. if you are going to continue using this indentation style consider proposing an update to the style guide "Use only spaces, and indent 4 spaces at a time.".
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2142
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Andreas Pokorny (andreas-pokorny) wrote : | # |
Needs another merge with lp:mir .. there are further conflicts in headless_test and more..
| Andreas Pokorny (andreas-pokorny) wrote : | # |
did the merging, and while doing that also added "_graphics_" to the C-entry points of the graphics platform ABI.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2145
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2146
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2148
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2149
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Chris Halse Rogers (raof) wrote : | # |
Hm. I think that SharedLibraryPr
I had it in the client platform because we currently have no way to log from the client, but on the server it really just wants to be logged.
I now think the correct solution is to add logging support to the client library and then log everywhere. For a temporary fix, I think it'd be OK to default to log_opt_value rather than none_opt_value.
Otherwise (unsurprisingly!) +1.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2150
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2151
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2152
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2153
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2154
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2155
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Andreas Pokorny (andreas-pokorny) wrote : | # |
not blocking but something to look into afterwards: + 730 to + 765, the whole handling of platform library specific configuration options.
The rest works fairly well and looks good to me.
| Daniel van Vugt (vanvugt) wrote : | # |
(1) Clients now output log messages (against the will of the client/toolkit author):
[1420010155.311855] (II) Loader: Loading modules from: bin/../
[1420010155.312103] (II) Loader: Loading module: bin/../
[1420010155.312518] (II) Loader: Loading module: bin/../
[1420010155.312695] (II) Loader: Loading module: bin/../
We need to avoid upsetting client/toolkit developers, but also especially users of clients. A library like libmirclient should not write to stdout/stderr except on error.
(2) mirout (et al?) need wrapping applied. See also (1)
$ sudo bin/mirout
[1420010358.848748] (II) Loader: Loading modules from: /usr/local/
[1420010358.848888] (EE) Loader: Failed to load libraries from path: /usr/local/
Could not connect to a display server.
| Daniel van Vugt (vanvugt) wrote : | # |
(3) This smells like a bug (?) ...
[1420010081.113978] (WW) Loader: Failed to load module: bin/../
| Daniel van Vugt (vanvugt) wrote : | # |
(2) Wrapping fixed here: https:/
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2156
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Daniel van Vugt (vanvugt) wrote : | # |
(1) Fix proposed: https:/
(2) Fix landed (r2191)
(3) Still needs fixing, maybe?
| Daniel van Vugt (vanvugt) wrote : | # |
BTW I haven't done any code review yet. Just manual testing and fixing the obvious issues right now...
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2157
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Daniel van Vugt (vanvugt) wrote : | # |
Results from manual testing:
(1) Clients now output noisy log messages (against the will of the client/toolkit author):
[1420010155.311855] (II) Loader: Loading modules from: bin/../
[1420010155.312103] (II) Loader: Loading module: bin/../
[1420010155.312518] (II) Loader: Loading module: bin/../
[1420010155.312695] (II) Loader: Loading module: bin/../
Fix proposed: https:/
(3) This warning appears to be new from this branch. Sounds like a bug:
[1420010081.113978] (WW) Loader: Failed to load module: bin/../
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2158
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Chris Halse Rogers (raof) wrote : | # |
LGTM now. I slightly prefer the client output to no client output.
| Andreas Pokorny (andreas-pokorny) wrote : | # |
> Results from manual testing:
>
> (1) Clients now output noisy log messages (against the will of the
> client/toolkit author):
> [...]
> Fix proposed: https:/
So it will be addressed there?
> (3) This warning appears to be new from this branch. Sounds like a bug:
> [1420010081.113978] (WW) Loader: Failed to load module: bin/../lib/server-
> modules/
> dummy.so: undefined symbol: _ZN3mir4test4Pi
should be gone now.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2159
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2160
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2161
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Daniel van Vugt (vanvugt) wrote : | # |
(1) I'd rather have this future bug fixed before it ever affects lp:mir. It becomes a regression if we land this without having fixed the client logging first.
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2162
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Daniel van Vugt (vanvugt) wrote : | # |
anpok: Careful with those spurious merges. Or at least spurious merge comments...?
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2163
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2164
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2165
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2166
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Alberto Aguirre (albaguirre) wrote : | # |
623 + catch (std::runtime_error const& err)
Why not std::exception?
===
2903 +++ tools/install_
2904 @@ -32,11 +32,11 @@
2905 lib/libmirclien
2906 lib/libmircommo
2907 lib/libmirplatf
2908 - lib/libmirplatf
2909 - lib/libmirclien
2910 + lib/platform-
2911 + lib/client-
2912 + lib/server-
2913 lib/libmirproto
2914 lib/libmirclien
2915 - lib/libmirplatf
2916 lib/libmirserve
===
Needs more modifications to work, given the current wrapper (i.e. copying the .mir_xxx executables and creating a bin and lib directory on the android side. But it looks like that's a pre-existing issue and is being addressed in https:/
Looks good otherwise.
| Daniel van Vugt (vanvugt) wrote : | # |
Wrapped binaries work perfectly on the Android side if copied using rsync. Not sure if adb push does though.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2167
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| Cemil Azizoglu (cemil-azizoglu) wrote : | # |
I think the log messages are rather informative. We should go ahead and TA this branch.
| Cemil Azizoglu (cemil-azizoglu) wrote : | # |
Gave this branch a final test. It looks good. I'd rather land this and not wait for a minor issue to hold such a large MP up. Hopefully we can address the logging issue before we land on the distro.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
| Daniel van Vugt (vanvugt) wrote : | # |
Please don't create regressions intentionally. I didn't want to own this one, but somehow I do now.
| Daniel van Vugt (vanvugt) wrote : | # |
Hmm, there's a simple way to avoid blocking on the log-level branch actually. Just remove any log calls from mircommon/mirclient that might appear as a result of this branch.
| Cemil Azizoglu (cemil-azizoglu) wrote : | # |
I don't regard it as a regression. What module gets loaded is vital information - exactly what logging was designed to do. Besides we are not flooding the terminal (as that was one of the criteria for logging).

FAILED: Continuous integration, rev:2122 jenkins. qa.ubuntu. com/job/ mir-ci/ 2295/ jenkins. qa.ubuntu. com/job/ mir-android- vivid-i386- build/391/ console jenkins. qa.ubuntu. com/job/ mir-clang- vivid-amd64- build/391/ console jenkins. qa.ubuntu. com/job/ mir-mediumtests -vivid- touch/365/ console jenkins. qa.ubuntu. com/job/ mir-vivid- amd64-ci/ 286/console jenkins. qa.ubuntu. com/job/ mir-mediumtests -builder- vivid-armhf/ 365/console
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/mir- ci/2295/ rebuild
http://