Merge lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration into lp:mir
- mive-miral-to-mir-regeneration
- Merge into development-branch
Status: | Merged |
---|---|
Approved by: | Gerry Boland |
Approved revision: | no longer in the source branch. |
Merged at revision: | 4237 |
Proposed branch: | lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration |
Merge into: | lp:mir |
Diff against target: |
936 lines (+690/-22) 15 files modified
CMakeLists.txt (+1/-1) doc/Doxyfile.in (+2/-1) examples/basic.c (+5/-8) include/client/mir_toolkit/mir_buffer.h (+2/-0) include/client/mir_toolkit/mir_display_configuration.h (+4/-4) include/client/mir_toolkit/mir_input_device.h (+3/-3) include/client/mir_toolkit/mir_window.h (+1/-1) include/client/mir_toolkit/rs/mir_render_surface.h (+1/-1) include/miral/miral/command_line_option.h (+5/-0) include/miral/miral/window_management_policy_addendum3.h (+1/-0) include/platform/mir/graphics/platform.h (+1/-0) include/server/mir/graphics/display_configuration_observer.h (+1/-1) include/test/mir_test_framework/main.h (+2/-2) src/miral/CMakeLists.txt (+6/-0) src/miral/process_doxygen_xml.py (+655/-0) |
To merge this branch: | bzr merge lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mir CI Bot | continuous-integration | Approve | |
Gerry Boland (community) | Approve | ||
Review via email: mp+329987@code.launchpad.net |
This proposal supersedes a proposal from 2017-08-25.
Commit message
Incorporate the utility script for regenerating the libmiral symbols file. Vis:
$ make regenerate-
Description of the change
Incorporate miral project into mir source tree
This is a third-cut:
1. There's no attempt to remove code obsoleted by MirAL
2. There's no reworking of the generated docs to include miral
Mir CI Bot (mir-ci-bot) wrote : Posted in a previous version of this proposal | # |
Gerry Boland (gerboland) wrote : Posted in a previous version of this proposal | # |
+#! /usr/bin/python
Does this need to be python3?
Alan Griffiths (alan-griffiths) wrote : Posted in a previous version of this proposal | # |
> +#! /usr/bin/python
> Does this need to be python3?
It could be, it doesn't need to be.
Gerry Boland (gerboland) wrote : Posted in a previous version of this proposal | # |
Seems ok
Mir CI Bot (mir-ci-bot) wrote : Posted in a previous version of this proposal | # |
FAILED: Autolanding.
More details in the following jenkins job:
https:/
Executed test runs:
FAILURE: https:/
None: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Mir CI Bot (mir-ci-bot) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:4258
https:/
Executed test runs:
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4259
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:/
Click here to trigger a rebuild:
https:/
Gerry Boland (gerboland) : | # |
Mir CI Bot (mir-ci-bot) : | # |
Preview Diff
1 | === modified file 'CMakeLists.txt' | |||
2 | --- CMakeLists.txt 2017-08-22 16:55:23 +0000 | |||
3 | +++ CMakeLists.txt 2017-08-31 07:58:47 +0000 | |||
4 | @@ -53,6 +53,7 @@ | |||
5 | 53 | include (cmake/EnableCoverageReport.cmake) | 53 | include (cmake/EnableCoverageReport.cmake) |
6 | 54 | include (cmake/MirCommon.cmake) | 54 | include (cmake/MirCommon.cmake) |
7 | 55 | include (GNUInstallDirs) | 55 | include (GNUInstallDirs) |
8 | 56 | include (cmake/Doxygen.cmake) | ||
9 | 56 | 57 | ||
10 | 57 | set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer") | 58 | set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer") |
11 | 58 | # Change informational string for CMAKE_BUILD_TYPE | 59 | # Change informational string for CMAKE_BUILD_TYPE |
12 | @@ -300,7 +301,6 @@ | |||
13 | 300 | endif () | 301 | endif () |
14 | 301 | 302 | ||
15 | 302 | enable_coverage_report(mirserver) | 303 | enable_coverage_report(mirserver) |
16 | 303 | include (cmake/Doxygen.cmake) | ||
17 | 304 | include (cmake/ABICheck.cmake) | 304 | include (cmake/ABICheck.cmake) |
18 | 305 | 305 | ||
19 | 306 | add_custom_target(ptest | 306 | add_custom_target(ptest |
20 | 307 | 307 | ||
21 | === modified file 'doc/Doxyfile.in' | |||
22 | --- doc/Doxyfile.in 2017-05-08 03:04:26 +0000 | |||
23 | +++ doc/Doxyfile.in 2017-08-31 07:58:47 +0000 | |||
24 | @@ -875,7 +875,8 @@ | |||
25 | 875 | # Note that the wildcards are matched against the file with absolute path, so to | 875 | # Note that the wildcards are matched against the file with absolute path, so to |
26 | 876 | # exclude all test directories for example use the pattern */test/* | 876 | # exclude all test directories for example use the pattern */test/* |
27 | 877 | 877 | ||
29 | 878 | EXCLUDE_PATTERNS = */include/test/* | 878 | EXCLUDE_PATTERNS = *.capnp.c++ \ |
30 | 879 | */examples/multi_stream.cpp | ||
31 | 879 | 880 | ||
32 | 880 | # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names | 881 | # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names |
33 | 881 | # (namespaces, classes, functions, etc.) that should be excluded from the | 882 | # (namespaces, classes, functions, etc.) that should be excluded from the |
34 | 882 | 883 | ||
35 | === modified file 'examples/basic.c' | |||
36 | --- examples/basic.c 2017-07-28 17:00:43 +0000 | |||
37 | +++ examples/basic.c 2017-08-31 07:58:47 +0000 | |||
38 | @@ -41,16 +41,12 @@ | |||
39 | 41 | /// \snippet basic.c surface_release_tag | 41 | /// \snippet basic.c surface_release_tag |
40 | 42 | ///\subsection connection_release We release our connection | 42 | ///\subsection connection_release We release our connection |
41 | 43 | /// \snippet basic.c connection_release_tag | 43 | /// \snippet basic.c connection_release_tag |
44 | 44 | ///\subsection get the raw, platform-specific buffer handle for the current buffer | 44 | ///\subsection get graphics region for the current buffer |
45 | 45 | /// \snippet basic.c get_current_buffer_tag | 45 | /// \snippet basic.c get_graphics_region_tag |
46 | 46 | /// \example basic.c A simple mir client | 46 | /// \example basic.c A simple mir client |
47 | 47 | ///\section MirDemoState MirDemoState | 47 | ///\section MirDemoState MirDemoState |
48 | 48 | /// The handles needs to be accessible both to callbacks and to the control function. | 48 | /// The handles needs to be accessible both to callbacks and to the control function. |
49 | 49 | /// \snippet basic.c MirDemoState_tag | 49 | /// \snippet basic.c MirDemoState_tag |
50 | 50 | ///\section Callbacks Callbacks | ||
51 | 51 | /// This program opens a mir connection and creates a surface. The handles | ||
52 | 52 | /// needs to be accessible both to callbacks and to the control function. | ||
53 | 53 | /// \snippet basic.c Callback_tag | ||
54 | 54 | 50 | ||
55 | 55 | ///\internal [MirDemoState_tag] | 51 | ///\internal [MirDemoState_tag] |
56 | 56 | // Utility structure for the state of a single surface session. | 52 | // Utility structure for the state of a single surface session. |
57 | @@ -143,11 +139,12 @@ | |||
58 | 143 | { | 139 | { |
59 | 144 | // We can query the current graphics buffer attributes | 140 | // We can query the current graphics buffer attributes |
60 | 145 | { | 141 | { |
61 | 142 | ///\internal [get_graphics_region_tag] | ||
62 | 146 | MirGraphicsRegion graphics_region; | 143 | MirGraphicsRegion graphics_region; |
63 | 147 | mir_buffer_stream_get_graphics_region(bs, &graphics_region); | 144 | mir_buffer_stream_get_graphics_region(bs, &graphics_region); |
64 | 148 | 145 | ||
67 | 149 | ///\internal [get_current_buffer_tag] | 146 | ///\internal [get_graphics_region_tag] |
68 | 150 | // In a real application we'd render into the current buffer | 147 | // In a real application we'd render into the graphics_region |
69 | 151 | } | 148 | } |
70 | 152 | 149 | ||
71 | 153 | ///\internal [swap_buffers_tag] | 150 | ///\internal [swap_buffers_tag] |
72 | 154 | 151 | ||
73 | === modified file 'include/client/mir_toolkit/mir_buffer.h' | |||
74 | --- include/client/mir_toolkit/mir_buffer.h 2017-07-28 17:00:43 +0000 | |||
75 | +++ include/client/mir_toolkit/mir_buffer.h 2017-08-31 07:58:47 +0000 | |||
76 | @@ -40,6 +40,7 @@ | |||
77 | 40 | * \param [in] connection The connection | 40 | * \param [in] connection The connection |
78 | 41 | * \param [in] width Requested buffer width | 41 | * \param [in] width Requested buffer width |
79 | 42 | * \param [in] height Requested buffer height | 42 | * \param [in] height Requested buffer height |
80 | 43 | * \param [in] format Requested buffer pixel format | ||
81 | 43 | * \param [in] available_callback The callback called when the buffer | 44 | * \param [in] available_callback The callback called when the buffer |
82 | 44 | * is available | 45 | * is available |
83 | 45 | * \param [in] available_context The context for the available_callback | 46 | * \param [in] available_context The context for the available_callback |
84 | @@ -55,6 +56,7 @@ | |||
85 | 55 | * \param [in] connection The connection | 56 | * \param [in] connection The connection |
86 | 56 | * \param [in] width Requested buffer width | 57 | * \param [in] width Requested buffer width |
87 | 57 | * \param [in] height Requested buffer height | 58 | * \param [in] height Requested buffer height |
88 | 59 | * \param [in] format Requested buffer pixel format | ||
89 | 58 | * \return The buffer | 60 | * \return The buffer |
90 | 59 | **/ | 61 | **/ |
91 | 60 | MirBuffer* mir_connection_allocate_buffer_sync( | 62 | MirBuffer* mir_connection_allocate_buffer_sync( |
92 | 61 | 63 | ||
93 | === modified file 'include/client/mir_toolkit/mir_display_configuration.h' | |||
94 | --- include/client/mir_toolkit/mir_display_configuration.h 2017-07-28 17:00:43 +0000 | |||
95 | +++ include/client/mir_toolkit/mir_display_configuration.h 2017-08-31 07:58:47 +0000 | |||
96 | @@ -539,7 +539,7 @@ | |||
97 | 539 | * \param [in] output The MirOutput to query | 539 | * \param [in] output The MirOutput to query |
98 | 540 | * \returns true if gamma is supported on the hardware, otherwise not supported | 540 | * \returns true if gamma is supported on the hardware, otherwise not supported |
99 | 541 | */ | 541 | */ |
101 | 542 | bool mir_output_is_gamma_supported(MirOutput const* client_output); | 542 | bool mir_output_is_gamma_supported(MirOutput const* output); |
102 | 543 | 543 | ||
103 | 544 | /** Gets the gamma size | 544 | /** Gets the gamma size |
104 | 545 | * | 545 | * |
105 | @@ -547,7 +547,7 @@ | |||
106 | 547 | * \returns The size of the gamma ramp LUT | 547 | * \returns The size of the gamma ramp LUT |
107 | 548 | * | 548 | * |
108 | 549 | */ | 549 | */ |
110 | 550 | uint32_t mir_output_get_gamma_size(MirOutput const* client_output); | 550 | uint32_t mir_output_get_gamma_size(MirOutput const* output); |
111 | 551 | 551 | ||
112 | 552 | /** Get the gamma ramp of a display | 552 | /** Get the gamma ramp of a display |
113 | 553 | * | 553 | * |
114 | @@ -559,7 +559,7 @@ | |||
115 | 559 | * \param [out] blue The blue gamma ramp | 559 | * \param [out] blue The blue gamma ramp |
116 | 560 | * \param [in] size The size of the gamma ramp | 560 | * \param [in] size The size of the gamma ramp |
117 | 561 | */ | 561 | */ |
119 | 562 | void mir_output_get_gamma(MirOutput const* client_output, | 562 | void mir_output_get_gamma(MirOutput const* output, |
120 | 563 | uint16_t* red, | 563 | uint16_t* red, |
121 | 564 | uint16_t* green, | 564 | uint16_t* green, |
122 | 565 | uint16_t* blue, | 565 | uint16_t* blue, |
123 | @@ -573,7 +573,7 @@ | |||
124 | 573 | * \param [in] blue The blue gamma ramp | 573 | * \param [in] blue The blue gamma ramp |
125 | 574 | * \param [in] size The size of the gamma ramp | 574 | * \param [in] size The size of the gamma ramp |
126 | 575 | */ | 575 | */ |
128 | 576 | void mir_output_set_gamma(MirOutput* client_output, | 576 | void mir_output_set_gamma(MirOutput* output, |
129 | 577 | uint16_t const* red, | 577 | uint16_t const* red, |
130 | 578 | uint16_t const* green, | 578 | uint16_t const* green, |
131 | 579 | uint16_t const* blue, | 579 | uint16_t const* blue, |
132 | 580 | 580 | ||
133 | === modified file 'include/client/mir_toolkit/mir_input_device.h' | |||
134 | --- include/client/mir_toolkit/mir_input_device.h 2017-07-28 17:00:43 +0000 | |||
135 | +++ include/client/mir_toolkit/mir_input_device.h 2017-08-31 07:58:47 +0000 | |||
136 | @@ -235,7 +235,7 @@ | |||
137 | 235 | * Set the options of the keymap as a null terminated string. | 235 | * Set the options of the keymap as a null terminated string. |
138 | 236 | * | 236 | * |
139 | 237 | * \param [in] conf The keyboard config | 237 | * \param [in] conf The keyboard config |
141 | 238 | * \param [in] layout The keymap options | 238 | * \param [in] options The keymap options |
142 | 239 | */ | 239 | */ |
143 | 240 | void mir_keyboard_config_set_keymap_options( | 240 | void mir_keyboard_config_set_keymap_options( |
144 | 241 | MirKeyboardConfig* conf, char const* options); | 241 | MirKeyboardConfig* conf, char const* options); |
145 | @@ -244,7 +244,7 @@ | |||
146 | 244 | * Set the variant of the keymap as a null terminated string. | 244 | * Set the variant of the keymap as a null terminated string. |
147 | 245 | * | 245 | * |
148 | 246 | * \param [in] conf The keyboard config | 246 | * \param [in] conf The keyboard config |
150 | 247 | * \param [in] layout The keymap variant | 247 | * \param [in] variant The keymap variant |
151 | 248 | */ | 248 | */ |
152 | 249 | void mir_keyboard_config_set_keymap_variant( | 249 | void mir_keyboard_config_set_keymap_variant( |
153 | 250 | MirKeyboardConfig* conf, char const* variant); | 250 | MirKeyboardConfig* conf, char const* variant); |
154 | @@ -549,7 +549,7 @@ | |||
155 | 549 | * Configure whether middle mouse button emulation should be enabled | 549 | * Configure whether middle mouse button emulation should be enabled |
156 | 550 | * | 550 | * |
157 | 551 | * \param [in] conf The touchpad config | 551 | * \param [in] conf The touchpad config |
159 | 552 | * \param [in] middle_mouse_button_emulation | 552 | * \param [in] middle_emulation |
160 | 553 | */ | 553 | */ |
161 | 554 | void mir_touchpad_config_set_middle_mouse_button_emulation( | 554 | void mir_touchpad_config_set_middle_mouse_button_emulation( |
162 | 555 | MirTouchpadConfig* conf, bool middle_emulation); | 555 | MirTouchpadConfig* conf, bool middle_emulation); |
163 | 556 | 556 | ||
164 | === modified file 'include/client/mir_toolkit/mir_window.h' | |||
165 | --- include/client/mir_toolkit/mir_window.h 2017-07-28 17:00:43 +0000 | |||
166 | +++ include/client/mir_toolkit/mir_window.h 2017-08-31 07:58:47 +0000 | |||
167 | @@ -506,7 +506,7 @@ | |||
168 | 506 | * \param [in] spec the spec to update | 506 | * \param [in] spec the spec to update |
169 | 507 | * \param [in] rect the destination rectangle to align with | 507 | * \param [in] rect the destination rectangle to align with |
170 | 508 | * \param [in] rect_gravity the point on \p rect to align with | 508 | * \param [in] rect_gravity the point on \p rect to align with |
172 | 509 | * \param [in] surface_gravity the point on the window to align with | 509 | * \param [in] window_gravity the point on the window to align with |
173 | 510 | * \param [in] placement_hints positioning hints to use when limited on space | 510 | * \param [in] placement_hints positioning hints to use when limited on space |
174 | 511 | * \param [in] offset_dx horizontal offset to shift w.r.t. \p rect | 511 | * \param [in] offset_dx horizontal offset to shift w.r.t. \p rect |
175 | 512 | * \param [in] offset_dy vertical offset to shift w.r.t. \p rect | 512 | * \param [in] offset_dy vertical offset to shift w.r.t. \p rect |
176 | 513 | 513 | ||
177 | === modified file 'include/client/mir_toolkit/rs/mir_render_surface.h' | |||
178 | --- include/client/mir_toolkit/rs/mir_render_surface.h 2017-07-28 17:00:43 +0000 | |||
179 | +++ include/client/mir_toolkit/rs/mir_render_surface.h 2017-08-31 07:58:47 +0000 | |||
180 | @@ -53,7 +53,7 @@ | |||
181 | 53 | * \param [in] connection A valid connection | 53 | * \param [in] connection A valid connection |
182 | 54 | * \param [in] width The width in pixels | 54 | * \param [in] width The width in pixels |
183 | 55 | * \param [in] height The height in pixels | 55 | * \param [in] height The height in pixels |
185 | 56 | * \param [in] MirRenderSurfaceCallback Callback to be invoked when the request completes. | 56 | * \param [in] callback Callback to be invoked when the request completes. |
186 | 57 | * The callback is guaranteed to be called and called | 57 | * The callback is guaranteed to be called and called |
187 | 58 | * with a non-null MirRenderSurface*, but the render | 58 | * with a non-null MirRenderSurface*, but the render |
188 | 59 | * surface may be invalid in case of error. | 59 | * surface may be invalid in case of error. |
189 | 60 | 60 | ||
190 | === modified file 'include/miral/miral/command_line_option.h' | |||
191 | --- include/miral/miral/command_line_option.h 2017-08-21 14:18:55 +0000 | |||
192 | +++ include/miral/miral/command_line_option.h 2017-08-31 07:58:47 +0000 | |||
193 | @@ -103,6 +103,11 @@ | |||
194 | 103 | std::shared_ptr<Self> self; | 103 | std::shared_ptr<Self> self; |
195 | 104 | }; | 104 | }; |
196 | 105 | 105 | ||
197 | 106 | /** | ||
198 | 107 | * Update the option to be called back *before* Mir initialization starts | ||
199 | 108 | * | ||
200 | 109 | * \param clo the option | ||
201 | 110 | */ | ||
202 | 106 | auto pre_init(CommandLineOption const& clo) -> CommandLineOption; | 111 | auto pre_init(CommandLineOption const& clo) -> CommandLineOption; |
203 | 107 | } | 112 | } |
204 | 108 | 113 | ||
205 | 109 | 114 | ||
206 | === modified file 'include/miral/miral/window_management_policy_addendum3.h' | |||
207 | --- include/miral/miral/window_management_policy_addendum3.h 2017-08-21 14:18:55 +0000 | |||
208 | +++ include/miral/miral/window_management_policy_addendum3.h 2017-08-31 07:58:47 +0000 | |||
209 | @@ -46,6 +46,7 @@ | |||
210 | 46 | * vertically maximized windows to allow adjustment for decorations. | 46 | * vertically maximized windows to allow adjustment for decorations. |
211 | 47 | * | 47 | * |
212 | 48 | * @param window_info the window | 48 | * @param window_info the window |
213 | 49 | * @param new_state the new state | ||
214 | 49 | * @param new_placement the suggested placement | 50 | * @param new_placement the suggested placement |
215 | 50 | * | 51 | * |
216 | 51 | * @return the confirmed placement of the window | 52 | * @return the confirmed placement of the window |
217 | 52 | 53 | ||
218 | === modified file 'include/platform/mir/graphics/platform.h' | |||
219 | --- include/platform/mir/graphics/platform.h 2017-07-28 17:00:43 +0000 | |||
220 | +++ include/platform/mir/graphics/platform.h 2017-08-31 07:58:47 +0000 | |||
221 | @@ -210,6 +210,7 @@ | |||
222 | 210 | * \param [in] options options to use for this platform | 210 | * \param [in] options options to use for this platform |
223 | 211 | * \param [in] emergency_cleanup_registry object to register emergency shutdown handlers with | 211 | * \param [in] emergency_cleanup_registry object to register emergency shutdown handlers with |
224 | 212 | * \param [in] report the object to use to report interesting events from the display subsystem | 212 | * \param [in] report the object to use to report interesting events from the display subsystem |
225 | 213 | * \param [in] logger the object to use to log interesting events from the display subsystem | ||
226 | 213 | * | 214 | * |
227 | 214 | * This factory function needs to be implemented by each platform. | 215 | * This factory function needs to be implemented by each platform. |
228 | 215 | * | 216 | * |
229 | 216 | 217 | ||
230 | === modified file 'include/server/mir/graphics/display_configuration_observer.h' | |||
231 | --- include/server/mir/graphics/display_configuration_observer.h 2017-07-28 17:00:43 +0000 | |||
232 | +++ include/server/mir/graphics/display_configuration_observer.h 2017-08-31 07:58:47 +0000 | |||
233 | @@ -57,7 +57,7 @@ | |||
234 | 57 | /** | 57 | /** |
235 | 58 | * Notification after updating base display configuration. | 58 | * Notification after updating base display configuration. |
236 | 59 | * | 59 | * |
238 | 60 | * \param [in] config The configuration that has just been updated. | 60 | * \param [in] base_config The configuration that has just been updated. |
239 | 61 | */ | 61 | */ |
240 | 62 | virtual void base_configuration_updated(std::shared_ptr<DisplayConfiguration const> const& base_config) = 0; | 62 | virtual void base_configuration_updated(std::shared_ptr<DisplayConfiguration const> const& base_config) = 0; |
241 | 63 | 63 | ||
242 | 64 | 64 | ||
243 | === modified file 'include/test/mir_test_framework/main.h' | |||
244 | --- include/test/mir_test_framework/main.h 2017-07-28 17:00:43 +0000 | |||
245 | +++ include/test/mir_test_framework/main.h 2017-08-31 07:58:47 +0000 | |||
246 | @@ -23,11 +23,11 @@ | |||
247 | 23 | { | 23 | { |
248 | 24 | /** | 24 | /** |
249 | 25 | * Initialize and run the mir test framework as follows: | 25 | * Initialize and run the mir test framework as follows: |
251 | 26 | * | 26 | * \code |
252 | 27 | * ::testing::InitGoogleTest(&argc, argv); | 27 | * ::testing::InitGoogleTest(&argc, argv); |
253 | 28 | * set_commandline(argc, argv); | 28 | * set_commandline(argc, argv); |
254 | 29 | * return RUN_ALL_TESTS(); | 29 | * return RUN_ALL_TESTS(); |
256 | 30 | * | 30 | * \endcode |
257 | 31 | * \attention If you override main() for your own purposes call this or do | 31 | * \attention If you override main() for your own purposes call this or do |
258 | 32 | * something equivalent to run the tests. | 32 | * something equivalent to run the tests. |
259 | 33 | */ | 33 | */ |
260 | 34 | 34 | ||
261 | === modified file 'src/miral/CMakeLists.txt' | |||
262 | --- src/miral/CMakeLists.txt 2017-08-29 09:17:03 +0000 | |||
263 | +++ src/miral/CMakeLists.txt 2017-08-31 07:58:47 +0000 | |||
264 | @@ -134,6 +134,12 @@ | |||
265 | 134 | ${miral_include}/miral/version.h | 134 | ${miral_include}/miral/version.h |
266 | 135 | ) | 135 | ) |
267 | 136 | 136 | ||
268 | 137 | if(TARGET doc) | ||
269 | 138 | add_custom_target(regenerate-miral-symbols-map | ||
270 | 139 | ${CMAKE_CURRENT_SOURCE_DIR}/process_doxygen_xml.py ${CMAKE_BINARY_DIR}/doc/xml/*.xml > ${symbol_map} | ||
271 | 140 | DEPENDS doc) | ||
272 | 141 | endif() | ||
273 | 142 | |||
274 | 137 | install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") | 143 | install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") |
275 | 138 | install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}") | 144 | install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}") |
276 | 139 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc | 145 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc |
277 | 140 | 146 | ||
278 | === added file 'src/miral/process_doxygen_xml.py' | |||
279 | --- src/miral/process_doxygen_xml.py 1970-01-01 00:00:00 +0000 | |||
280 | +++ src/miral/process_doxygen_xml.py 2017-08-31 07:58:47 +0000 | |||
281 | @@ -0,0 +1,655 @@ | |||
282 | 1 | #! /usr/bin/python | ||
283 | 2 | """This script processes the XML generated by "make doc" and produces summary information | ||
284 | 3 | on symbols that libmiral intends to make public. | ||
285 | 4 | |||
286 | 5 | To use: Go to your build folder and run "make regenerate-miral-symbols""""" | ||
287 | 6 | |||
288 | 7 | from xml.dom import minidom | ||
289 | 8 | from sys import argv | ||
290 | 9 | |||
291 | 10 | HELPTEXT = __doc__ | ||
292 | 11 | DEBUG = False | ||
293 | 12 | |||
294 | 13 | def _get_text(node): | ||
295 | 14 | substrings = [] | ||
296 | 15 | for node in node.childNodes: | ||
297 | 16 | if node.nodeType == node.TEXT_NODE: | ||
298 | 17 | substrings.append(node.data) | ||
299 | 18 | elif node.nodeType == node.ELEMENT_NODE: | ||
300 | 19 | substrings.append(_get_text(node)) | ||
301 | 20 | return ''.join(substrings) | ||
302 | 21 | |||
303 | 22 | def _get_text_for_element(parent, tagname): | ||
304 | 23 | substrings = [] | ||
305 | 24 | |||
306 | 25 | for node in parent.getElementsByTagName(tagname): | ||
307 | 26 | substrings.append(_get_text(node)) | ||
308 | 27 | |||
309 | 28 | return ''.join(substrings) | ||
310 | 29 | |||
311 | 30 | def _get_file_location(node): | ||
312 | 31 | for node in node.childNodes: | ||
313 | 32 | if node.nodeType == node.ELEMENT_NODE and node.tagName == 'location': | ||
314 | 33 | return node.attributes['file'].value | ||
315 | 34 | if DEBUG: | ||
316 | 35 | print('no location in:', node) | ||
317 | 36 | return None | ||
318 | 37 | |||
319 | 38 | def _has_element(node, tagname): | ||
320 | 39 | for node in node.childNodes: | ||
321 | 40 | if node.nodeType == node.ELEMENT_NODE and node.tagName in tagname: | ||
322 | 41 | return True | ||
323 | 42 | return False | ||
324 | 43 | |||
325 | 44 | def _print_attribs(node, attribs): | ||
326 | 45 | for attrib in attribs: | ||
327 | 46 | print(' ', attrib, '=', node.attributes[attrib].value) | ||
328 | 47 | |||
329 | 48 | def _concat_text_from_tags(parent, tagnames): | ||
330 | 49 | substrings = [] | ||
331 | 50 | |||
332 | 51 | for tag in tagnames: | ||
333 | 52 | substrings.append(_get_text_for_element(parent, tag)) | ||
334 | 53 | |||
335 | 54 | return ''.join(substrings) | ||
336 | 55 | |||
337 | 56 | def _print_location(node): | ||
338 | 57 | print(' ', 'location', '=', _get_file_location(node)) | ||
339 | 58 | |||
340 | 59 | def _get_attribs(node): | ||
341 | 60 | kind = node.attributes['kind'].value | ||
342 | 61 | static = node.attributes['static'].value | ||
343 | 62 | prot = node.attributes['prot'].value | ||
344 | 63 | return kind, static, prot | ||
345 | 64 | |||
346 | 65 | COMPONENT_MAP = {} | ||
347 | 66 | SYMBOLS = {'public' : set(), 'private' : set()} | ||
348 | 67 | |||
349 | 68 | def _report(publish, symbol): | ||
350 | 69 | symbol = symbol.replace('~', '?') | ||
351 | 70 | |||
352 | 71 | if publish: | ||
353 | 72 | SYMBOLS['public'].add(symbol) | ||
354 | 73 | else: | ||
355 | 74 | SYMBOLS['private'].add(symbol) | ||
356 | 75 | |||
357 | 76 | if not DEBUG: | ||
358 | 77 | return | ||
359 | 78 | |||
360 | 79 | if publish: | ||
361 | 80 | print(' PUBLISH: {}'.format(symbol)) | ||
362 | 81 | else: | ||
363 | 82 | print('NOPUBLISH: {}'.format(symbol)) | ||
364 | 83 | |||
365 | 84 | OLD_STANZAS = '''MIRAL_1.0 { | ||
366 | 85 | global: | ||
367 | 86 | extern "C++" { | ||
368 | 87 | miral::ActiveOutputsListener::?ActiveOutputsListener*; | ||
369 | 88 | miral::ActiveOutputsListener::ActiveOutputsListener*; | ||
370 | 89 | miral::ActiveOutputsListener::advise_output_begin*; | ||
371 | 90 | miral::ActiveOutputsListener::advise_output_create*; | ||
372 | 91 | miral::ActiveOutputsListener::advise_output_delete*; | ||
373 | 92 | miral::ActiveOutputsListener::advise_output_end*; | ||
374 | 93 | miral::ActiveOutputsListener::advise_output_update*; | ||
375 | 94 | miral::ActiveOutputsListener::operator*; | ||
376 | 95 | miral::ActiveOutputsMonitor::?ActiveOutputsMonitor*; | ||
377 | 96 | miral::ActiveOutputsMonitor::ActiveOutputsMonitor*; | ||
378 | 97 | miral::ActiveOutputsMonitor::add_listener*; | ||
379 | 98 | miral::ActiveOutputsMonitor::delete_listener*; | ||
380 | 99 | miral::ActiveOutputsMonitor::operator*; | ||
381 | 100 | miral::ActiveOutputsMonitor::process_outputs*; | ||
382 | 101 | miral::AddInitCallback::?AddInitCallback*; | ||
383 | 102 | miral::AddInitCallback::AddInitCallback*; | ||
384 | 103 | miral::AddInitCallback::operator*; | ||
385 | 104 | miral::AppendEventFilter::AppendEventFilter*; | ||
386 | 105 | miral::AppendEventFilter::operator*; | ||
387 | 106 | miral::ApplicationAuthorizer::?ApplicationAuthorizer*; | ||
388 | 107 | miral::ApplicationAuthorizer::ApplicationAuthorizer*; | ||
389 | 108 | miral::ApplicationAuthorizer::operator*; | ||
390 | 109 | miral::ApplicationCredentials::ApplicationCredentials*; | ||
391 | 110 | miral::ApplicationCredentials::gid*; | ||
392 | 111 | miral::ApplicationCredentials::pid*; | ||
393 | 112 | miral::ApplicationCredentials::uid*; | ||
394 | 113 | miral::ApplicationInfo::?ApplicationInfo*; | ||
395 | 114 | miral::ApplicationInfo::ApplicationInfo*; | ||
396 | 115 | miral::ApplicationInfo::add_window*; | ||
397 | 116 | miral::ApplicationInfo::application*; | ||
398 | 117 | miral::ApplicationInfo::name*; | ||
399 | 118 | miral::ApplicationInfo::operator*; | ||
400 | 119 | miral::ApplicationInfo::remove_window*; | ||
401 | 120 | miral::ApplicationInfo::userdata*; | ||
402 | 121 | miral::ApplicationInfo::windows*; | ||
403 | 122 | miral::BasicSetApplicationAuthorizer::?BasicSetApplicationAuthorizer*; | ||
404 | 123 | miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer*; | ||
405 | 124 | miral::BasicSetApplicationAuthorizer::operator*; | ||
406 | 125 | miral::BasicSetApplicationAuthorizer::the_application_authorizer*; | ||
407 | 126 | miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy*; | ||
408 | 127 | miral::CanonicalWindowManagerPolicy::advise_focus_gained*; | ||
409 | 128 | miral::CanonicalWindowManagerPolicy::confirm_inherited_move*; | ||
410 | 129 | miral::CanonicalWindowManagerPolicy::handle_modify_window*; | ||
411 | 130 | miral::CanonicalWindowManagerPolicy::handle_raise_window*; | ||
412 | 131 | miral::CanonicalWindowManagerPolicy::handle_window_ready*; | ||
413 | 132 | miral::CanonicalWindowManagerPolicy::place_new_surface*; | ||
414 | 133 | miral::CommandLineOption::?CommandLineOption*; | ||
415 | 134 | miral::CommandLineOption::CommandLineOption*; | ||
416 | 135 | miral::CommandLineOption::operator*; | ||
417 | 136 | miral::CursorTheme::?CursorTheme*; | ||
418 | 137 | miral::CursorTheme::CursorTheme*; | ||
419 | 138 | miral::CursorTheme::operator*; | ||
420 | 139 | miral::DebugExtension::DebugExtension*; | ||
421 | 140 | miral::DebugExtension::disable*; | ||
422 | 141 | miral::DebugExtension::enable*; | ||
423 | 142 | miral::DebugExtension::operator*; | ||
424 | 143 | miral::InternalClientLauncher::?InternalClientLauncher*; | ||
425 | 144 | miral::InternalClientLauncher::InternalClientLauncher*; | ||
426 | 145 | miral::InternalClientLauncher::operator*; | ||
427 | 146 | miral::Keymap::?Keymap*; | ||
428 | 147 | miral::Keymap::Keymap*; | ||
429 | 148 | miral::Keymap::operator*; | ||
430 | 149 | miral::Keymap::set_keymap*; | ||
431 | 150 | miral::MirRunner::?MirRunner*; | ||
432 | 151 | miral::MirRunner::MirRunner*; | ||
433 | 152 | miral::MirRunner::add_start_callback*; | ||
434 | 153 | miral::MirRunner::add_stop_callback*; | ||
435 | 154 | miral::MirRunner::run_with*; | ||
436 | 155 | miral::MirRunner::set_exception_handler*; | ||
437 | 156 | miral::MirRunner::stop*; | ||
438 | 157 | miral::Output::?Output*; | ||
439 | 158 | miral::Output::Output*; | ||
440 | 159 | miral::Output::connected*; | ||
441 | 160 | miral::Output::extents*; | ||
442 | 161 | miral::Output::form_factor*; | ||
443 | 162 | miral::Output::is_same_output*; | ||
444 | 163 | miral::Output::operator*; | ||
445 | 164 | miral::Output::orientation*; | ||
446 | 165 | miral::Output::physical_size_mm*; | ||
447 | 166 | miral::Output::pixel_format*; | ||
448 | 167 | miral::Output::power_mode*; | ||
449 | 168 | miral::Output::refresh_rate*; | ||
450 | 169 | miral::Output::scale*; | ||
451 | 170 | miral::Output::type*; | ||
452 | 171 | miral::Output::used*; | ||
453 | 172 | miral::Output::valid*; | ||
454 | 173 | miral::SetCommandLineHandler::?SetCommandLineHandler*; | ||
455 | 174 | miral::SetCommandLineHandler::SetCommandLineHandler*; | ||
456 | 175 | miral::SetCommandLineHandler::operator*; | ||
457 | 176 | miral::SetTerminator::?SetTerminator*; | ||
458 | 177 | miral::SetTerminator::SetTerminator*; | ||
459 | 178 | miral::SetTerminator::operator*; | ||
460 | 179 | miral::SetWindowManagmentPolicy::?SetWindowManagmentPolicy*; | ||
461 | 180 | miral::SetWindowManagmentPolicy::SetWindowManagmentPolicy*; | ||
462 | 181 | miral::SetWindowManagmentPolicy::operator*; | ||
463 | 182 | miral::StartupInternalClient::?StartupInternalClient*; | ||
464 | 183 | miral::StartupInternalClient::operator*; | ||
465 | 184 | miral::Window::?Window*; | ||
466 | 185 | miral::Window::Window*; | ||
467 | 186 | miral::Window::application*; | ||
468 | 187 | miral::Window::move_to*; | ||
469 | 188 | miral::Window::operator*; | ||
470 | 189 | miral::Window::resize*; | ||
471 | 190 | miral::Window::size*; | ||
472 | 191 | miral::Window::top_left*; | ||
473 | 192 | miral::WindowInfo::?WindowInfo*; | ||
474 | 193 | miral::WindowInfo::WindowInfo*; | ||
475 | 194 | miral::WindowInfo::add_child*; | ||
476 | 195 | miral::WindowInfo::can_be_active*; | ||
477 | 196 | miral::WindowInfo::children*; | ||
478 | 197 | miral::WindowInfo::confine_pointer*; | ||
479 | 198 | miral::WindowInfo::constrain_resize*; | ||
480 | 199 | miral::WindowInfo::has_output_id*; | ||
481 | 200 | miral::WindowInfo::height_inc*; | ||
482 | 201 | miral::WindowInfo::is_visible*; | ||
483 | 202 | miral::WindowInfo::max_aspect*; | ||
484 | 203 | miral::WindowInfo::max_height*; | ||
485 | 204 | miral::WindowInfo::max_width*; | ||
486 | 205 | miral::WindowInfo::min_aspect*; | ||
487 | 206 | miral::WindowInfo::min_height*; | ||
488 | 207 | miral::WindowInfo::min_width*; | ||
489 | 208 | miral::WindowInfo::must_have_parent*; | ||
490 | 209 | miral::WindowInfo::must_not_have_parent*; | ||
491 | 210 | miral::WindowInfo::name*; | ||
492 | 211 | miral::WindowInfo::operator*; | ||
493 | 212 | miral::WindowInfo::output_id*; | ||
494 | 213 | miral::WindowInfo::parent*; | ||
495 | 214 | miral::WindowInfo::preferred_orientation*; | ||
496 | 215 | miral::WindowInfo::remove_child*; | ||
497 | 216 | miral::WindowInfo::restore_rect*; | ||
498 | 217 | miral::WindowInfo::userdata*; | ||
499 | 218 | miral::WindowInfo::width_inc*; | ||
500 | 219 | miral::WindowInfo::window*; | ||
501 | 220 | miral::WindowManagementPolicy::?WindowManagementPolicy*; | ||
502 | 221 | miral::WindowManagementPolicy::WindowManagementPolicy*; | ||
503 | 222 | miral::WindowManagementPolicy::advise_begin*; | ||
504 | 223 | miral::WindowManagementPolicy::advise_delete_app*; | ||
505 | 224 | miral::WindowManagementPolicy::advise_delete_window*; | ||
506 | 225 | miral::WindowManagementPolicy::advise_end*; | ||
507 | 226 | miral::WindowManagementPolicy::advise_focus_gained*; | ||
508 | 227 | miral::WindowManagementPolicy::advise_focus_lost*; | ||
509 | 228 | miral::WindowManagementPolicy::advise_move_to*; | ||
510 | 229 | miral::WindowManagementPolicy::advise_new_app*; | ||
511 | 230 | miral::WindowManagementPolicy::advise_new_window*; | ||
512 | 231 | miral::WindowManagementPolicy::advise_raise*; | ||
513 | 232 | miral::WindowManagementPolicy::advise_resize*; | ||
514 | 233 | miral::WindowManagementPolicy::operator*; | ||
515 | 234 | miral::WindowManagerOptions::WindowManagerOptions*; | ||
516 | 235 | miral::WindowManagerOptions::operator*; | ||
517 | 236 | miral::WindowManagerTools::?WindowManagerTools*; | ||
518 | 237 | miral::WindowManagerTools::WindowManagerTools*; | ||
519 | 238 | miral::WindowManagerTools::active_display*; | ||
520 | 239 | miral::WindowManagerTools::active_window*; | ||
521 | 240 | miral::WindowManagerTools::ask_client_to_close*; | ||
522 | 241 | miral::WindowManagerTools::count_applications*; | ||
523 | 242 | miral::WindowManagerTools::drag_active_window*; | ||
524 | 243 | miral::WindowManagerTools::find_application*; | ||
525 | 244 | miral::WindowManagerTools::focus_next_application*; | ||
526 | 245 | miral::WindowManagerTools::focus_next_within_application*; | ||
527 | 246 | miral::WindowManagerTools::for_each_application*; | ||
528 | 247 | miral::WindowManagerTools::force_close*; | ||
529 | 248 | miral::WindowManagerTools::id_for_window*; | ||
530 | 249 | miral::WindowManagerTools::info_for*; | ||
531 | 250 | miral::WindowManagerTools::info_for_window_id*; | ||
532 | 251 | miral::WindowManagerTools::invoke_under_lock*; | ||
533 | 252 | miral::WindowManagerTools::modify_window*; | ||
534 | 253 | miral::WindowManagerTools::operator*; | ||
535 | 254 | miral::WindowManagerTools::place_and_size_for_state*; | ||
536 | 255 | miral::WindowManagerTools::raise_tree*; | ||
537 | 256 | miral::WindowManagerTools::select_active_window*; | ||
538 | 257 | miral::WindowManagerTools::window_at*; | ||
539 | 258 | miral::WindowSpecification::?WindowSpecification*; | ||
540 | 259 | miral::WindowSpecification::WindowSpecification*; | ||
541 | 260 | miral::WindowSpecification::aux_rect*; | ||
542 | 261 | miral::WindowSpecification::aux_rect_placement_gravity*; | ||
543 | 262 | miral::WindowSpecification::aux_rect_placement_offset*; | ||
544 | 263 | miral::WindowSpecification::confine_pointer*; | ||
545 | 264 | miral::WindowSpecification::height_inc*; | ||
546 | 265 | miral::WindowSpecification::input_mode*; | ||
547 | 266 | miral::WindowSpecification::input_shape*; | ||
548 | 267 | miral::WindowSpecification::max_aspect*; | ||
549 | 268 | miral::WindowSpecification::max_height*; | ||
550 | 269 | miral::WindowSpecification::max_width*; | ||
551 | 270 | miral::WindowSpecification::min_aspect*; | ||
552 | 271 | miral::WindowSpecification::min_height*; | ||
553 | 272 | miral::WindowSpecification::min_width*; | ||
554 | 273 | miral::WindowSpecification::name*; | ||
555 | 274 | miral::WindowSpecification::operator*; | ||
556 | 275 | miral::WindowSpecification::output_id*; | ||
557 | 276 | miral::WindowSpecification::parent*; | ||
558 | 277 | miral::WindowSpecification::placement_hints*; | ||
559 | 278 | miral::WindowSpecification::preferred_orientation*; | ||
560 | 279 | miral::WindowSpecification::shell_chrome*; | ||
561 | 280 | miral::WindowSpecification::size*; | ||
562 | 281 | miral::WindowSpecification::state*; | ||
563 | 282 | miral::WindowSpecification::top_left*; | ||
564 | 283 | miral::WindowSpecification::type*; | ||
565 | 284 | miral::WindowSpecification::update*; | ||
566 | 285 | miral::WindowSpecification::userdata*; | ||
567 | 286 | miral::WindowSpecification::width_inc*; | ||
568 | 287 | miral::WindowSpecification::window_placement_gravity*; | ||
569 | 288 | miral::apply_lifecycle_state_to*; | ||
570 | 289 | miral::display_configuration_options*; | ||
571 | 290 | miral::equivalent_display_area*; | ||
572 | 291 | miral::kill*; | ||
573 | 292 | miral::name_of*; | ||
574 | 293 | miral::operator*; | ||
575 | 294 | miral::pid_of*; | ||
576 | 295 | miral::toolkit::Connection::Connection*; | ||
577 | 296 | miral::toolkit::Surface::Surface*; | ||
578 | 297 | non-virtual?thunk?to?miral::ActiveOutputsListener::?ActiveOutputsListener*; | ||
579 | 298 | non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_begin*; | ||
580 | 299 | non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_create*; | ||
581 | 300 | non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_delete*; | ||
582 | 301 | non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_end*; | ||
583 | 302 | non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_update*; | ||
584 | 303 | non-virtual?thunk?to?miral::ApplicationAuthorizer::?ApplicationAuthorizer*; | ||
585 | 304 | non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::advise_focus_gained*; | ||
586 | 305 | non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::confirm_inherited_move*; | ||
587 | 306 | non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_modify_window*; | ||
588 | 307 | non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_raise_window*; | ||
589 | 308 | non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_window_ready*; | ||
590 | 309 | non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_surface*; | ||
591 | 310 | non-virtual?thunk?to?miral::WindowManagementPolicy::?WindowManagementPolicy*; | ||
592 | 311 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_begin*; | ||
593 | 312 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_app*; | ||
594 | 313 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_window*; | ||
595 | 314 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_end*; | ||
596 | 315 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_gained*; | ||
597 | 316 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_lost*; | ||
598 | 317 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_move_to*; | ||
599 | 318 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_app*; | ||
600 | 319 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_window*; | ||
601 | 320 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_raise*; | ||
602 | 321 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_resize*; | ||
603 | 322 | non-virtual?thunk?to?miral::WindowManagementPolicy::advise_state_change*; | ||
604 | 323 | typeinfo?for?miral::ActiveOutputsListener; | ||
605 | 324 | typeinfo?for?miral::ActiveOutputsMonitor; | ||
606 | 325 | typeinfo?for?miral::AddInitCallback; | ||
607 | 326 | typeinfo?for?miral::AppendEventFilter; | ||
608 | 327 | typeinfo?for?miral::ApplicationAuthorizer; | ||
609 | 328 | typeinfo?for?miral::ApplicationCredentials; | ||
610 | 329 | typeinfo?for?miral::ApplicationInfo; | ||
611 | 330 | typeinfo?for?miral::BasicSetApplicationAuthorizer; | ||
612 | 331 | typeinfo?for?miral::CanonicalWindowManagerPolicy; | ||
613 | 332 | typeinfo?for?miral::CommandLineOption; | ||
614 | 333 | typeinfo?for?miral::CursorTheme; | ||
615 | 334 | typeinfo?for?miral::DebugExtension; | ||
616 | 335 | typeinfo?for?miral::InternalClientLauncher; | ||
617 | 336 | typeinfo?for?miral::Keymap; | ||
618 | 337 | typeinfo?for?miral::MirRunner; | ||
619 | 338 | typeinfo?for?miral::Output; | ||
620 | 339 | typeinfo?for?miral::Output::PhysicalSizeMM; | ||
621 | 340 | typeinfo?for?miral::SetCommandLineHandler; | ||
622 | 341 | typeinfo?for?miral::SetTerminator; | ||
623 | 342 | typeinfo?for?miral::SetWindowManagmentPolicy; | ||
624 | 343 | typeinfo?for?miral::StartupInternalClient; | ||
625 | 344 | typeinfo?for?miral::Window; | ||
626 | 345 | typeinfo?for?miral::WindowInfo; | ||
627 | 346 | typeinfo?for?miral::WindowManagementPolicy; | ||
628 | 347 | typeinfo?for?miral::WindowManagerOption; | ||
629 | 348 | typeinfo?for?miral::WindowManagerOptions; | ||
630 | 349 | typeinfo?for?miral::WindowManagerTools; | ||
631 | 350 | typeinfo?for?miral::WindowSpecification; | ||
632 | 351 | typeinfo?for?miral::WindowSpecification::AspectRatio; | ||
633 | 352 | typeinfo?for?miral::toolkit::Connection; | ||
634 | 353 | typeinfo?for?miral::toolkit::PersistentId; | ||
635 | 354 | typeinfo?for?miral::toolkit::Surface; | ||
636 | 355 | typeinfo?for?miral::toolkit::SurfaceSpec; | ||
637 | 356 | vtable?for?miral::ActiveOutputsListener; | ||
638 | 357 | vtable?for?miral::ActiveOutputsMonitor; | ||
639 | 358 | vtable?for?miral::AddInitCallback; | ||
640 | 359 | vtable?for?miral::AppendEventFilter; | ||
641 | 360 | vtable?for?miral::ApplicationAuthorizer; | ||
642 | 361 | vtable?for?miral::ApplicationCredentials; | ||
643 | 362 | vtable?for?miral::ApplicationInfo; | ||
644 | 363 | vtable?for?miral::BasicSetApplicationAuthorizer; | ||
645 | 364 | vtable?for?miral::CanonicalWindowManagerPolicy; | ||
646 | 365 | vtable?for?miral::CommandLineOption; | ||
647 | 366 | vtable?for?miral::CursorTheme; | ||
648 | 367 | vtable?for?miral::DebugExtension; | ||
649 | 368 | vtable?for?miral::InternalClientLauncher; | ||
650 | 369 | vtable?for?miral::Keymap; | ||
651 | 370 | vtable?for?miral::MirRunner; | ||
652 | 371 | vtable?for?miral::Output; | ||
653 | 372 | vtable?for?miral::Output::PhysicalSizeMM; | ||
654 | 373 | vtable?for?miral::SetCommandLineHandler; | ||
655 | 374 | vtable?for?miral::SetTerminator; | ||
656 | 375 | vtable?for?miral::SetWindowManagmentPolicy; | ||
657 | 376 | vtable?for?miral::StartupInternalClient; | ||
658 | 377 | vtable?for?miral::Window; | ||
659 | 378 | vtable?for?miral::WindowInfo; | ||
660 | 379 | vtable?for?miral::WindowManagementPolicy; | ||
661 | 380 | vtable?for?miral::WindowManagerOption; | ||
662 | 381 | vtable?for?miral::WindowManagerOptions; | ||
663 | 382 | vtable?for?miral::WindowManagerTools; | ||
664 | 383 | vtable?for?miral::WindowSpecification; | ||
665 | 384 | vtable?for?miral::WindowSpecification::AspectRatio; | ||
666 | 385 | vtable?for?miral::toolkit::Connection; | ||
667 | 386 | vtable?for?miral::toolkit::PersistentId; | ||
668 | 387 | vtable?for?miral::toolkit::Surface; | ||
669 | 388 | vtable?for?miral::toolkit::SurfaceSpec; | ||
670 | 389 | }; | ||
671 | 390 | # miral::WindowInfo::can_morph_to*; | ||
672 | 391 | _ZNK5miral10WindowInfo12can_morph_toE14MirSurfaceType; | ||
673 | 392 | |||
674 | 393 | # miral::WindowInfo::needs_titlebar*; | ||
675 | 394 | _ZN5miral10WindowInfo14needs_titlebarE14MirSurfaceType; | ||
676 | 395 | |||
677 | 396 | # miral::WindowInfo::state*; | ||
678 | 397 | _ZNK5miral10WindowInfo5stateEv; | ||
679 | 398 | _ZN5miral10WindowInfo5stateE15MirSurfaceState; | ||
680 | 399 | |||
681 | 400 | # miral::WindowInfo::type*; | ||
682 | 401 | _ZN5miral10WindowInfo4typeE14MirSurfaceType; | ||
683 | 402 | _ZNK5miral10WindowInfo4typeEv; | ||
684 | 403 | |||
685 | 404 | # miral::WindowManagementPolicy::advise_state_change*; | ||
686 | 405 | _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE15MirSurfaceState; | ||
687 | 406 | |||
688 | 407 | # miral::StartupInternalClient::StartupInternalClient*; | ||
689 | 408 | _ZN5miral21StartupInternalClientC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvNS_7toolkit10ConnectionEEES7_IFvSt8weak_ptrIN3mir5scene7SessionEEEE; | ||
690 | 409 | # miral::InternalClientLauncher::launch*; | ||
691 | 410 | _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvNS_7toolkit10ConnectionEEERKS9_IFvSt8weak_ptrIN3mir5scene7SessionEEEE; | ||
692 | 411 | local: *; | ||
693 | 412 | }; | ||
694 | 413 | |||
695 | 414 | MIRAL_1.1 { | ||
696 | 415 | global: | ||
697 | 416 | # miral::WindowInfo::can_morph_to* | ||
698 | 417 | _ZNK5miral10WindowInfo12can_morph_toE13MirWindowType; | ||
699 | 418 | |||
700 | 419 | #miral::WindowInfo::needs_titlebar*; | ||
701 | 420 | _ZN5miral10WindowInfo14needs_titlebarE13MirWindowType; | ||
702 | 421 | |||
703 | 422 | # miral::WindowInfo::state*; | ||
704 | 423 | _ZNK5miral10WindowInfo5stateEv; | ||
705 | 424 | _ZN5miral10WindowInfo5stateE14MirWindowState; | ||
706 | 425 | |||
707 | 426 | miral::WindowInfo::type*; | ||
708 | 427 | _ZN5miral10WindowInfo4typeE13MirWindowType; | ||
709 | 428 | _ZNK5miral10WindowInfo4typeEv; | ||
710 | 429 | |||
711 | 430 | # miral::WindowManagementPolicy::advise_state_change*; | ||
712 | 431 | _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE14MirWindowState; | ||
713 | 432 | |||
714 | 433 | extern "C++" { | ||
715 | 434 | miral::CanonicalWindowManagerPolicy::place_new_window*; | ||
716 | 435 | non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_window*; | ||
717 | 436 | }; | ||
718 | 437 | } MIRAL_1.0; | ||
719 | 438 | |||
720 | 439 | MIRAL_1.2 { | ||
721 | 440 | global: | ||
722 | 441 | # miral::InternalClientLauncher::launch*; | ||
723 | 442 | _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvN3mir6client10ConnectionEEERKS9_IFvSt8weak_ptrINSA_5scene7SessionEEEE; | ||
724 | 443 | |||
725 | 444 | # miral::StartupInternalClient::StartupInternalClient*; | ||
726 | 445 | _ZN5miral21StartupInternalClientC?ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvN3mir6client10ConnectionEEES7_IFvSt8weak_ptrINS8_5scene7SessionEEEE; | ||
727 | 446 | extern "C++" { | ||
728 | 447 | miral::WindowInfo::shell_chrome*; | ||
729 | 448 | miral::WindowManagerTools::drag_window*; | ||
730 | 449 | typeinfo?for?miral::ApplicationAuthorizer1; | ||
731 | 450 | vtable?for?miral::ApplicationAuthorizer1; | ||
732 | 451 | }; | ||
733 | 452 | } MIRAL_1.1; | ||
734 | 453 | |||
735 | 454 | MIRAL_1.3 { | ||
736 | 455 | global: | ||
737 | 456 | extern "C++" { | ||
738 | 457 | miral::WindowManagerTools::add_tree_to_workspace*; | ||
739 | 458 | miral::WindowManagerTools::create_workspace*; | ||
740 | 459 | miral::WindowManagerTools::focus_prev_within_application*; | ||
741 | 460 | miral::WindowManagerTools::for_each_window_in_workspace*; | ||
742 | 461 | miral::WindowManagerTools::for_each_workspace_containing*; | ||
743 | 462 | miral::WindowManagerTools::remove_tree_from_workspace*; | ||
744 | 463 | miral::WindowManagerTools::move_workspace_content_to_workspace*; | ||
745 | 464 | miral::WorkspacePolicy::?WorkspacePolicy*; | ||
746 | 465 | miral::WorkspacePolicy::WorkspacePolicy*; | ||
747 | 466 | miral::WorkspacePolicy::advise_adding_to_workspace*; | ||
748 | 467 | miral::WorkspacePolicy::advise_removing_from_workspace*; | ||
749 | 468 | miral::WorkspacePolicy::operator*; | ||
750 | 469 | non-virtual?thunk?to?miral::WorkspacePolicy::?WorkspacePolicy*; | ||
751 | 470 | non-virtual?thunk?to?miral::WorkspacePolicy::advise_adding_to_workspace*; | ||
752 | 471 | non-virtual?thunk?to?miral::WorkspacePolicy::advise_removing_from_workspace*; | ||
753 | 472 | typeinfo?for?miral::WorkspacePolicy; | ||
754 | 473 | vtable?for?miral::WorkspacePolicy; | ||
755 | 474 | }; | ||
756 | 475 | } MIRAL_1.2; | ||
757 | 476 | |||
758 | 477 | MIRAL_1.3.1 { | ||
759 | 478 | global: | ||
760 | 479 | extern "C++" { | ||
761 | 480 | miral::SetWindowManagementPolicy::?SetWindowManagementPolicy*; | ||
762 | 481 | miral::SetWindowManagementPolicy::SetWindowManagementPolicy*; | ||
763 | 482 | miral::SetWindowManagementPolicy::operator*; | ||
764 | 483 | typeinfo?for?miral::SetWindowManagementPolicy; | ||
765 | 484 | vtable?for?miral::SetWindowManagementPolicy; | ||
766 | 485 | }; | ||
767 | 486 | } MIRAL_1.3; | ||
768 | 487 | |||
769 | 488 | MIRAL_1.4.0 { | ||
770 | 489 | global: | ||
771 | 490 | extern "C++" { | ||
772 | 491 | miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*; | ||
773 | 492 | miral::WindowManagementPolicyAddendum2::WindowManagementPolicyAddendum2*; | ||
774 | 493 | miral::WindowManagementPolicyAddendum2::operator*; | ||
775 | 494 | miral::WindowManagerTools::end_drag_and_drop*; | ||
776 | 495 | miral::WindowManagerTools::start_drag_and_drop*; | ||
777 | 496 | miral::toolkit::Window::Window*; | ||
778 | 497 | non-virtual?thunk?to?miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*; | ||
779 | 498 | typeinfo?for?miral::WindowManagementPolicyAddendum2; | ||
780 | 499 | typeinfo?for?miral::toolkit::Window; | ||
781 | 500 | typeinfo?for?miral::toolkit::WindowId; | ||
782 | 501 | typeinfo?for?miral::toolkit::WindowSpec; | ||
783 | 502 | vtable?for?miral::WindowManagementPolicyAddendum2; | ||
784 | 503 | vtable?for?miral::toolkit::Window; | ||
785 | 504 | vtable?for?miral::toolkit::WindowId; | ||
786 | 505 | vtable?for?miral::toolkit::WindowSpec; | ||
787 | 506 | }; | ||
788 | 507 | } MIRAL_1.3.1; | ||
789 | 508 | |||
790 | 509 | MIRAL_1.5.0 { | ||
791 | 510 | global: | ||
792 | 511 | extern "C++" {''' | ||
793 | 512 | |||
794 | 513 | END_NEW_STANZA = ''' }; | ||
795 | 514 | } MIRAL_1.4.0;''' | ||
796 | 515 | |||
797 | 516 | def _print_report(): | ||
798 | 517 | print(OLD_STANZAS) | ||
799 | 518 | for symbol in sorted(SYMBOLS['public']): | ||
800 | 519 | formatted_symbol = ' {};'.format(symbol) | ||
801 | 520 | if formatted_symbol not in OLD_STANZAS and 'miral::' in formatted_symbol: | ||
802 | 521 | print(formatted_symbol) | ||
803 | 522 | print(END_NEW_STANZA) | ||
804 | 523 | |||
805 | 524 | def _print_debug_info(node, attributes): | ||
806 | 525 | if not DEBUG: | ||
807 | 526 | return | ||
808 | 527 | print() | ||
809 | 528 | _print_attribs(node, attributes) | ||
810 | 529 | _print_location(node) | ||
811 | 530 | |||
812 | 531 | def _parse_member_def(context_name, node, is_class): | ||
813 | 532 | kind = node.attributes['kind'].value | ||
814 | 533 | |||
815 | 534 | if (kind in ['enum', 'typedef'] | ||
816 | 535 | or _has_element(node, ['templateparamlist']) | ||
817 | 536 | or kind in ['function'] and node.attributes['inline'].value == 'yes'): | ||
818 | 537 | return | ||
819 | 538 | |||
820 | 539 | name = _concat_text_from_tags(node, ['name']) | ||
821 | 540 | |||
822 | 541 | if name in ['__attribute__']: | ||
823 | 542 | if DEBUG: | ||
824 | 543 | print(' ignoring doxygen mis-parsing:', _concat_text_from_tags(node, ['argsstring'])) | ||
825 | 544 | return | ||
826 | 545 | |||
827 | 546 | if name.startswith('operator'): | ||
828 | 547 | name = 'operator' | ||
829 | 548 | |||
830 | 549 | if not context_name is None: | ||
831 | 550 | symbol = context_name + '::' + name | ||
832 | 551 | else: | ||
833 | 552 | symbol = name | ||
834 | 553 | |||
835 | 554 | is_function = kind == 'function' | ||
836 | 555 | |||
837 | 556 | if is_function: | ||
838 | 557 | _print_debug_info(node, ['kind', 'prot', 'static', 'virt']) | ||
839 | 558 | else: | ||
840 | 559 | _print_debug_info(node, ['kind', 'prot', 'static']) | ||
841 | 560 | |||
842 | 561 | if DEBUG: | ||
843 | 562 | print(' is_class:', is_class) | ||
844 | 563 | |||
845 | 564 | publish = _should_publish(is_class, is_function, node) | ||
846 | 565 | |||
847 | 566 | _report(publish, symbol + '*') | ||
848 | 567 | |||
849 | 568 | if is_function and node.attributes['virt'].value == 'virtual': | ||
850 | 569 | _report(publish, 'non-virtual?thunk?to?' + symbol + '*') | ||
851 | 570 | |||
852 | 571 | |||
853 | 572 | def _should_publish(is_class, is_function, node): | ||
854 | 573 | (kind, static, prot) = _get_attribs(node) | ||
855 | 574 | |||
856 | 575 | publish = True | ||
857 | 576 | |||
858 | 577 | if publish: | ||
859 | 578 | publish = kind != 'define' | ||
860 | 579 | |||
861 | 580 | if publish and is_class: | ||
862 | 581 | publish = is_function or static == 'yes' | ||
863 | 582 | |||
864 | 583 | if publish and prot == 'private': | ||
865 | 584 | if is_function: | ||
866 | 585 | publish = node.attributes['virt'].value == 'virtual' | ||
867 | 586 | else: | ||
868 | 587 | publish = False | ||
869 | 588 | |||
870 | 589 | if publish and _has_element(node, ['argsstring']): | ||
871 | 590 | publish = not _get_text_for_element(node, 'argsstring').endswith('=0') | ||
872 | 591 | |||
873 | 592 | return publish | ||
874 | 593 | |||
875 | 594 | |||
876 | 595 | def _parse_compound_defs(xmldoc): | ||
877 | 596 | compounddefs = xmldoc.getElementsByTagName('compounddef') | ||
878 | 597 | for node in compounddefs: | ||
879 | 598 | kind = node.attributes['kind'].value | ||
880 | 599 | |||
881 | 600 | if kind in ['page', 'file', 'example', 'union']: | ||
882 | 601 | continue | ||
883 | 602 | |||
884 | 603 | if kind in ['group']: | ||
885 | 604 | for member in node.getElementsByTagName('memberdef'): | ||
886 | 605 | _parse_member_def(None, member, False) | ||
887 | 606 | continue | ||
888 | 607 | |||
889 | 608 | if kind in ['namespace']: | ||
890 | 609 | symbol = _concat_text_from_tags(node, ['compoundname']) | ||
891 | 610 | for member in node.getElementsByTagName('memberdef'): | ||
892 | 611 | _parse_member_def(symbol, member, False) | ||
893 | 612 | continue | ||
894 | 613 | |||
895 | 614 | filename = _get_file_location(node) | ||
896 | 615 | |||
897 | 616 | if DEBUG: | ||
898 | 617 | print(' from file:', filename) | ||
899 | 618 | |||
900 | 619 | if ('/examples/' in filename or '/test/' in filename or '[generated]' in filename | ||
901 | 620 | or '[STL]' in filename or _has_element(node, ['templateparamlist'])): | ||
902 | 621 | continue | ||
903 | 622 | |||
904 | 623 | symbol = _concat_text_from_tags(node, ['compoundname']) | ||
905 | 624 | |||
906 | 625 | publish = True | ||
907 | 626 | |||
908 | 627 | if publish: | ||
909 | 628 | if kind in ['class', 'struct']: | ||
910 | 629 | prot = node.attributes['prot'].value | ||
911 | 630 | publish = prot != 'private' | ||
912 | 631 | _print_debug_info(node, ['kind', 'prot']) | ||
913 | 632 | _report(publish, 'vtable?for?' + symbol) | ||
914 | 633 | _report(publish, 'typeinfo?for?' + symbol) | ||
915 | 634 | |||
916 | 635 | if publish: | ||
917 | 636 | for member in node.getElementsByTagName('memberdef'): | ||
918 | 637 | _parse_member_def(symbol, member, kind in ['class', 'struct']) | ||
919 | 638 | |||
920 | 639 | if __name__ == "__main__": | ||
921 | 640 | if len(argv) == 1 or '-h' in argv or '--help' in argv: | ||
922 | 641 | print(HELPTEXT) | ||
923 | 642 | exit() | ||
924 | 643 | |||
925 | 644 | for arg in argv[1:]: | ||
926 | 645 | try: | ||
927 | 646 | if DEBUG: | ||
928 | 647 | print('Processing:', arg) | ||
929 | 648 | _parse_compound_defs(minidom.parse(arg)) | ||
930 | 649 | except Exception as error: | ||
931 | 650 | print('Error:', arg, error) | ||
932 | 651 | |||
933 | 652 | if DEBUG: | ||
934 | 653 | print('Processing complete') | ||
935 | 654 | |||
936 | 655 | _print_report() |
PASSED: Continuous integration, rev:4257 /mir-jenkins. ubuntu. com/job/ mir-ci/ 3585/ /mir-jenkins. ubuntu. com/job/ build-mir/ 4908 /mir-jenkins. ubuntu. com/job/ build-0- fetch/5131 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= artful/ 5120 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial/ 5120 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= zesty/5120 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= artful/ 4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= artful/ 4947/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/4947/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= artful/ 4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= artful/ 4947/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial/ 4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial/ 4947/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4947/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= mesa,release= artful/ 4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= mesa,release= artful/ 4947/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= mesa,release= zesty/4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= mesa,release= zesty/4947/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 4947 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 4947/artifact/ output/ *zip*/output. zip
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:/
Click here to trigger a rebuild: /mir-jenkins. ubuntu. com/job/ mir-ci/ 3585/rebuild
https:/