Merge lp:~kdub/mir/split-android into lp:mir
- split-android
- Merge into development-branch
Status: | Merged |
---|---|
Approved by: | Daniel van Vugt |
Approved revision: | no longer in the source branch. |
Merged at revision: | 4124 |
Proposed branch: | lp:~kdub/mir/split-android |
Merge into: | lp:mir |
Prerequisite: | lp:~kdub/mir/drm-auth-from-display |
Diff against target: |
357 lines (+170/-66) 3 files modified
src/platforms/android/server/platform.cpp (+123/-39) src/platforms/android/server/platform.h (+42/-12) tests/unit-tests/platforms/android/server/test_platform.cpp (+5/-15) |
To merge this branch: | bzr merge lp:~kdub/mir/split-android |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mir CI Bot | continuous-integration | Approve | |
Alan Griffiths | Approve | ||
Chris Halse Rogers | Approve | ||
Review via email: mp+320634@code.launchpad.net |
Commit message
platform: prepare android for independently loaded DisplayPlatform and RenderingPlatform
Description of the change
platform: prepare android for independently loaded DisplayPlatform and RenderingPlatform
Mir CI Bot (mir-ci-bot) wrote : | # |
Daniel van Vugt (vanvugt) wrote : | # |
What just happened? CI passed but Launchpad reports conflicts.
Chris Halse Rogers (raof) wrote : | # |
Looks sensible to me, modulo the ongoing tension with DisplayPlatform
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4087
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:/
Click here to trigger a rebuild:
https:/
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4088
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:/
Click here to trigger a rebuild:
https:/
Kevin DuBois (kdub) wrote : | # |
prereq needed a build-time fix, ticked back to 'review' pending that landing.
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:4089
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Daniel van Vugt (vanvugt) wrote : | # |
^^^
18:57:55 E: Unable to locate package glmark2-data
18:57:55 E: Unable to locate package glmark2-es2-mir
18:57:55 E: Unable to locate package umockdev
Try again
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Kevin DuBois (kdub) wrote : | # |
intermittent testflinger failure
Mir CI Bot (mir-ci-bot) : | # |
Preview Diff
1 | === modified file 'src/platforms/android/server/platform.cpp' |
2 | --- src/platforms/android/server/platform.cpp 2017-03-23 12:57:06 +0000 |
3 | +++ src/platforms/android/server/platform.cpp 2017-03-27 17:45:39 +0000 |
4 | @@ -95,23 +95,48 @@ |
5 | } |
6 | |
7 | mga::Platform::Platform( |
8 | - std::shared_ptr<graphics::GraphicBufferAllocator> const& buffer_allocator, |
9 | - std::shared_ptr<mga::DisplayComponentFactory> const& display_buffer_builder, |
10 | - std::shared_ptr<mg::DisplayReport> const& display_report, |
11 | - std::shared_ptr<mga::NativeWindowReport> const& native_window_report, |
12 | - mga::OverlayOptimization overlay_option, |
13 | - std::shared_ptr<mga::DeviceQuirks> const& quirks) : |
14 | - buffer_allocator(buffer_allocator), |
15 | - display_buffer_builder(display_buffer_builder), |
16 | - display_report(display_report), |
17 | - quirks(quirks), |
18 | - native_window_report(native_window_report), |
19 | - overlay_option(overlay_option) |
20 | + std::shared_ptr<HwcPlatform> const& display, |
21 | + std::shared_ptr<GrallocPlatform> const& rendering) : |
22 | + display(display), |
23 | + rendering(rendering) |
24 | { |
25 | } |
26 | |
27 | mir::UniqueModulePtr<mg::GraphicBufferAllocator> mga::Platform::create_buffer_allocator() |
28 | { |
29 | + return rendering->create_buffer_allocator(); |
30 | +} |
31 | + |
32 | +mir::UniqueModulePtr<mg::Display> mga::Platform::create_display( |
33 | + std::shared_ptr<mg::DisplayConfigurationPolicy> const& policy, |
34 | + std::shared_ptr<mg::GLConfig> const& gl_config) |
35 | +{ |
36 | + return display->create_display(policy, gl_config); |
37 | +} |
38 | + |
39 | +mir::UniqueModulePtr<mg::PlatformIpcOperations> mga::Platform::make_ipc_operations() const |
40 | +{ |
41 | + return rendering->make_ipc_operations(); |
42 | +} |
43 | + |
44 | +mg::NativeRenderingPlatform* mga::Platform::native_rendering_platform() |
45 | +{ |
46 | + return rendering->native_rendering_platform(); |
47 | +} |
48 | + |
49 | +mg::NativeDisplayPlatform* mga::Platform::native_display_platform() |
50 | +{ |
51 | + return display->native_display_platform(); |
52 | +} |
53 | + |
54 | +mga::GrallocPlatform::GrallocPlatform( |
55 | + std::shared_ptr<mg::GraphicBufferAllocator> const& buffer_allocator) : |
56 | + buffer_allocator(buffer_allocator) |
57 | +{ |
58 | +} |
59 | + |
60 | +mir::UniqueModulePtr<mg::GraphicBufferAllocator> mga::GrallocPlatform::create_buffer_allocator() |
61 | +{ |
62 | struct WrappingGraphicsBufferAllocator : mg::GraphicBufferAllocator |
63 | { |
64 | WrappingGraphicsBufferAllocator( |
65 | @@ -148,35 +173,51 @@ |
66 | return make_module_ptr<WrappingGraphicsBufferAllocator>(buffer_allocator); |
67 | } |
68 | |
69 | -mir::UniqueModulePtr<mg::Display> mga::Platform::create_display( |
70 | - std::shared_ptr<mg::DisplayConfigurationPolicy> const&, |
71 | - std::shared_ptr<mg::GLConfig> const& gl_config) |
72 | +mir::UniqueModulePtr<mg::PlatformIpcOperations> mga::GrallocPlatform::make_ipc_operations() const |
73 | +{ |
74 | + return mir::make_module_ptr<mga::IpcOperations>(); |
75 | +} |
76 | + |
77 | +mg::NativeRenderingPlatform* mga::GrallocPlatform::native_rendering_platform() |
78 | +{ |
79 | + return this; |
80 | +} |
81 | + |
82 | +EGLNativeDisplayType mga::GrallocPlatform::egl_native_display() const |
83 | +{ |
84 | + return EGL_DEFAULT_DISPLAY; |
85 | +} |
86 | + |
87 | +mga::HwcPlatform::HwcPlatform( |
88 | + std::shared_ptr<mg::GraphicBufferAllocator> const& buffer_allocator, |
89 | + std::shared_ptr<mga::DisplayComponentFactory> const& display_buffer_builder, |
90 | + std::shared_ptr<mg::DisplayReport> const& display_report, |
91 | + std::shared_ptr<mga::NativeWindowReport> const& native_window_report, |
92 | + mga::OverlayOptimization overlay_option, |
93 | + std::shared_ptr<mga::DeviceQuirks> const& quirks) : |
94 | + buffer_allocator(buffer_allocator), |
95 | + display_buffer_builder(display_buffer_builder), |
96 | + display_report(display_report), |
97 | + quirks(quirks), |
98 | + native_window_report(native_window_report), |
99 | + overlay_option(overlay_option) |
100 | +{ |
101 | +} |
102 | + |
103 | +mir::UniqueModulePtr<mg::Display> mga::HwcPlatform::create_display( |
104 | + std::shared_ptr<mg::DisplayConfigurationPolicy> const&, |
105 | + std::shared_ptr<mg::GLConfig> const& gl_config) |
106 | { |
107 | auto const program_factory = std::make_shared<mir::gl::DefaultProgramFactory>(); |
108 | return mir::make_module_ptr<mga::Display>( |
109 | display_buffer_builder, program_factory, gl_config, display_report, native_window_report, overlay_option); |
110 | } |
111 | |
112 | -mg::NativeDisplayPlatform* mga::Platform::native_display_platform() |
113 | +mg::NativeDisplayPlatform* mga::HwcPlatform::native_display_platform() |
114 | { |
115 | return nullptr; |
116 | } |
117 | |
118 | -mir::UniqueModulePtr<mg::PlatformIpcOperations> mga::Platform::make_ipc_operations() const |
119 | -{ |
120 | - return mir::make_module_ptr<mga::IpcOperations>(); |
121 | -} |
122 | - |
123 | -mg::NativeRenderingPlatform* mga::Platform::native_rendering_platform() |
124 | -{ |
125 | - return this; |
126 | -} |
127 | - |
128 | -EGLNativeDisplayType mga::Platform::egl_native_display() const |
129 | -{ |
130 | - return EGL_DEFAULT_DISPLAY; |
131 | -} |
132 | - |
133 | mir::UniqueModulePtr<mg::Platform> create_host_platform( |
134 | std::shared_ptr<mo::Option> const& options, |
135 | std::shared_ptr<mir::EmergencyCleanupRegistry> const&, |
136 | @@ -193,15 +234,19 @@ |
137 | auto component_factory = std::make_shared<mga::HalComponentFactory>( |
138 | display_resource_factory, hwc_report, quirks); |
139 | |
140 | - return mir::make_module_ptr<mga::Platform>( |
141 | - component_factory->the_buffer_allocator(), |
142 | + auto allocator = component_factory->the_buffer_allocator(); |
143 | + auto display = std::make_shared<mga::HwcPlatform>( |
144 | + allocator, |
145 | component_factory, display_report, |
146 | make_native_window_report(*options, logger), |
147 | overlay_option, quirks); |
148 | + |
149 | + return mir::make_module_ptr<mga::Platform>(display, |
150 | + std::make_shared<mga::GrallocPlatform>(allocator)); |
151 | } |
152 | |
153 | mir::UniqueModulePtr<mg::Platform> create_guest_platform( |
154 | - std::shared_ptr<mg::DisplayReport> const& display_report, |
155 | + std::shared_ptr<mg::DisplayReport> const&, |
156 | std::shared_ptr<mg::PlatformAuthentication> const&) |
157 | { |
158 | mir::assert_entry_point_signature<mg::CreateGuestPlatform>(&create_guest_platform); |
159 | @@ -214,13 +259,52 @@ |
160 | else |
161 | sync_factory = std::make_shared<mga::NullCommandStreamSyncFactory>(); |
162 | |
163 | + auto const buffer_allocator = std::make_shared<mga::GraphicBufferAllocator>(sync_factory, quirks); |
164 | //TODO: remove nullptr parameter once platform classes are sorted. |
165 | - // mg::NativeRenderingPlatform cannot create a display anyways, so it doesnt need a display builder |
166 | + // a guest platform cannot create a display anyways, so it doesnt need a display builder |
167 | + return mir::make_module_ptr<mga::Platform>( |
168 | + nullptr, std::make_shared<mga::GrallocPlatform>(buffer_allocator)); |
169 | +} |
170 | + |
171 | +mir::UniqueModulePtr<mir::graphics::DisplayPlatform> create_display_platform( |
172 | + std::shared_ptr<mir::options::Option> const& options, |
173 | + std::shared_ptr<mir::EmergencyCleanupRegistry> const&, |
174 | + std::shared_ptr<mir::graphics::DisplayReport> const& report, |
175 | + std::shared_ptr<mir::logging::Logger> const& logger) |
176 | +{ |
177 | + mir::assert_entry_point_signature<mg::CreateDisplayPlatform>(&create_display_platform); |
178 | + auto quirks = std::make_shared<mga::DeviceQuirks>(mga::PropertiesOps{}, *options); |
179 | + auto hwc_report = make_hwc_report(*options); |
180 | + auto overlay_option = should_use_overlay_optimization(*options); |
181 | + hwc_report->report_overlay_optimization(overlay_option); |
182 | + auto display_resource_factory = std::make_shared<mga::ResourceFactory>(); |
183 | + |
184 | + auto component_factory = std::make_shared<mga::HalComponentFactory>( |
185 | + display_resource_factory, hwc_report, quirks); |
186 | + |
187 | + return mir::make_module_ptr<mga::HwcPlatform>( |
188 | + component_factory->the_buffer_allocator(), |
189 | + component_factory, report, |
190 | + make_native_window_report(*options, logger), |
191 | + overlay_option, quirks); |
192 | +} |
193 | + |
194 | +mir::UniqueModulePtr<mir::graphics::RenderingPlatform> create_rendering_platform( |
195 | + std::shared_ptr<mir::options::Option> const&, |
196 | + std::shared_ptr<mir::graphics::PlatformAuthentication> const&) |
197 | +{ |
198 | + mir::assert_entry_point_signature<mg::CreateRenderingPlatform>(&create_rendering_platform); |
199 | + |
200 | + auto quirks = std::make_shared<mga::DeviceQuirks>(mga::PropertiesOps{}); |
201 | + |
202 | + std::shared_ptr<mga::CommandStreamSyncFactory> sync_factory; |
203 | + if (quirks->working_egl_sync()) |
204 | + sync_factory = std::make_shared<mga::EGLSyncFactory>(); |
205 | + else |
206 | + sync_factory = std::make_shared<mga::NullCommandStreamSyncFactory>(); |
207 | + |
208 | auto const buffer_allocator = std::make_shared<mga::GraphicBufferAllocator>(sync_factory, quirks); |
209 | - return mir::make_module_ptr<mga::Platform>( |
210 | - buffer_allocator, nullptr, display_report, |
211 | - std::make_shared<mga::NullNativeWindowReport>(), |
212 | - mga::OverlayOptimization::disabled, quirks); |
213 | + return mir::make_module_ptr<mga::GrallocPlatform>(buffer_allocator); |
214 | } |
215 | |
216 | void add_graphics_platform_options( |
217 | |
218 | === modified file 'src/platforms/android/server/platform.h' |
219 | --- src/platforms/android/server/platform.h 2017-03-23 12:57:06 +0000 |
220 | +++ src/platforms/android/server/platform.h 2017-03-27 17:45:39 +0000 |
221 | @@ -38,12 +38,28 @@ |
222 | class CommandStreamSyncFactory; |
223 | class NativeWindowReport; |
224 | |
225 | -class Platform : public graphics::Platform, |
226 | - public graphics::NativeRenderingPlatform, |
227 | - public mir::renderer::gl::EGLPlatform |
228 | -{ |
229 | -public: |
230 | - Platform( |
231 | + |
232 | +class GrallocPlatform : public graphics::RenderingPlatform, |
233 | + public graphics::NativeRenderingPlatform, |
234 | + public renderer::gl::EGLPlatform |
235 | +{ |
236 | +public: |
237 | + GrallocPlatform( |
238 | + std::shared_ptr<graphics::GraphicBufferAllocator> const& buffer_allocator); |
239 | + |
240 | + UniqueModulePtr<graphics::GraphicBufferAllocator> create_buffer_allocator() override; |
241 | + UniqueModulePtr<PlatformIpcOperations> make_ipc_operations() const override; |
242 | + NativeRenderingPlatform* native_rendering_platform() override; |
243 | + EGLNativeDisplayType egl_native_display() const override; |
244 | + |
245 | +private: |
246 | + std::shared_ptr<graphics::GraphicBufferAllocator> const buffer_allocator; |
247 | +}; |
248 | + |
249 | +class HwcPlatform : public graphics::DisplayPlatform |
250 | +{ |
251 | +public: |
252 | + HwcPlatform( |
253 | std::shared_ptr<graphics::GraphicBufferAllocator> const& buffer_allocator, |
254 | std::shared_ptr<DisplayComponentFactory> const& display_buffer_builder, |
255 | std::shared_ptr<DisplayReport> const& display_report, |
256 | @@ -51,15 +67,10 @@ |
257 | OverlayOptimization overlay_option, |
258 | std::shared_ptr<DeviceQuirks> const& quirks); |
259 | |
260 | - /* From Platform */ |
261 | - UniqueModulePtr<graphics::GraphicBufferAllocator> create_buffer_allocator() override; |
262 | UniqueModulePtr<Display> create_display( |
263 | std::shared_ptr<graphics::DisplayConfigurationPolicy> const&, |
264 | std::shared_ptr<graphics::GLConfig> const& /*gl_config*/) override; |
265 | NativeDisplayPlatform* native_display_platform() override; |
266 | - UniqueModulePtr<PlatformIpcOperations> make_ipc_operations() const override; |
267 | - NativeRenderingPlatform* native_rendering_platform() override; |
268 | - EGLNativeDisplayType egl_native_display() const override; |
269 | |
270 | private: |
271 | std::shared_ptr<graphics::GraphicBufferAllocator> const buffer_allocator; |
272 | @@ -68,7 +79,26 @@ |
273 | std::shared_ptr<DeviceQuirks> const quirks; |
274 | std::shared_ptr<NativeWindowReport> const native_window_report; |
275 | OverlayOptimization const overlay_option; |
276 | - |
277 | +}; |
278 | + |
279 | +class Platform : public graphics::Platform |
280 | +{ |
281 | +public: |
282 | + Platform( |
283 | + std::shared_ptr<HwcPlatform> const& display, |
284 | + std::shared_ptr<GrallocPlatform> const& rendering); |
285 | + |
286 | + UniqueModulePtr<graphics::GraphicBufferAllocator> create_buffer_allocator() override; |
287 | + UniqueModulePtr<Display> create_display( |
288 | + std::shared_ptr<graphics::DisplayConfigurationPolicy> const&, |
289 | + std::shared_ptr<graphics::GLConfig> const& /*gl_config*/) override; |
290 | + UniqueModulePtr<PlatformIpcOperations> make_ipc_operations() const override; |
291 | + NativeRenderingPlatform* native_rendering_platform() override; |
292 | + NativeDisplayPlatform* native_display_platform() override; |
293 | + |
294 | +private: |
295 | + std::shared_ptr<HwcPlatform> const display; |
296 | + std::shared_ptr<GrallocPlatform> const rendering; |
297 | }; |
298 | |
299 | } |
300 | |
301 | === modified file 'tests/unit-tests/platforms/android/server/test_platform.cpp' |
302 | --- tests/unit-tests/platforms/android/server/test_platform.cpp 2017-03-10 14:13:17 +0000 |
303 | +++ tests/unit-tests/platforms/android/server/test_platform.cpp 2017-03-27 17:45:39 +0000 |
304 | @@ -116,8 +116,7 @@ |
305 | EXPECT_CALL(*native_buffer, copy_fence()) |
306 | .WillOnce(Return(fake_fence)); |
307 | |
308 | - mga::Platform platform(stub_buffer_allocator, stub_display_builder, |
309 | - stub_display_report, anw_report, mga::OverlayOptimization::enabled, quirks); |
310 | + mga::GrallocPlatform platform(stub_buffer_allocator); |
311 | |
312 | mtd::MockBufferIpcMessage mock_ipc_msg; |
313 | int offset = 0; |
314 | @@ -151,8 +150,7 @@ |
315 | EXPECT_CALL(*native_buffer, copy_fence()) |
316 | .WillOnce(Return(-1)); |
317 | |
318 | - mga::Platform platform(stub_buffer_allocator, stub_display_builder, |
319 | - stub_display_report, anw_report, mga::OverlayOptimization::enabled, quirks); |
320 | + mga::GrallocPlatform platform(stub_buffer_allocator); |
321 | |
322 | mtd::MockBufferIpcMessage mock_ipc_msg; |
323 | int offset = 0; |
324 | @@ -194,8 +192,7 @@ |
325 | EXPECT_CALL(*native_buffer, copy_fence()) |
326 | .WillOnce(Return(-1)); |
327 | |
328 | - mga::Platform platform(stub_buffer_allocator, stub_display_builder, |
329 | - stub_display_report, anw_report, mga::OverlayOptimization::enabled, quirks); |
330 | + mga::GrallocPlatform platform(stub_buffer_allocator); |
331 | |
332 | mtd::MockBufferIpcMessage mock_ipc_msg; |
333 | int offset = 0; |
334 | @@ -232,8 +229,7 @@ |
335 | using namespace ::testing; |
336 | |
337 | int fake_fence{33}; |
338 | - mga::Platform platform(stub_buffer_allocator, stub_display_builder, |
339 | - stub_display_report, anw_report, mga::OverlayOptimization::enabled, quirks); |
340 | + mga::GrallocPlatform platform(stub_buffer_allocator); |
341 | auto ipc_ops = platform.make_ipc_operations(); |
342 | |
343 | mtd::MockBufferIpcMessage mock_ipc_msg; |
344 | @@ -259,13 +255,7 @@ |
345 | { |
346 | testing::NiceMock<mtd::MockEGL> mock_egl; |
347 | mtd::NullGLContext context; |
348 | - mga::Platform platform( |
349 | - std::make_shared<mtd::StubBufferAllocator>(), |
350 | - std::make_shared<mtd::StubDisplayBuilder>(), |
351 | - mr::null_display_report(), |
352 | - std::make_shared<mga::NullNativeWindowReport>(), |
353 | - mga::OverlayOptimization::enabled, |
354 | - std::make_shared<mga::DeviceQuirks>(mga::PropertiesOps{}, context)); |
355 | + mga::GrallocPlatform platform(std::make_shared<mtd::StubBufferAllocator>()); |
356 | EXPECT_EQ(EGL_DEFAULT_DISPLAY, platform.egl_native_display()); |
357 | } |
358 |
PASSED: Continuous integration, rev:4086 /mir-jenkins. ubuntu. com/job/ mir-ci/ 3215/ /mir-jenkins. ubuntu. com/job/ build-mir/ 4326 /mir-jenkins. ubuntu. com/job/ build-0- fetch/4413 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 4403 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial+ overlay/ 4403 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= zesty/4403 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/4358 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/4358/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4358 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4358/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4358 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4358/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 4358 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 4358/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 4358 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 4358/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4358 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4358/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:/
Click here to trigger a rebuild: /mir-jenkins. ubuntu. com/job/ mir-ci/ 3215/rebuild
https:/