Merge ~kzapalowicz/snappy-hwe-snaps/+git/bluez:feature/bluez/5.49/core-patches into ~snappy-hwe-team/snappy-hwe-snaps/+git/bluez:bluez/5.49
- Git
- lp:~kzapalowicz/snappy-hwe-snaps/+git/bluez
- feature/bluez/5.49/core-patches
- Merge into bluez/5.49
Status: | Merged |
---|---|
Approved by: | Alfonso Sanchez-Beato |
Approved revision: | 7fd673b1311fc4edfb4f3916dd3fc5fdf3b01ff6 |
Merged at revision: | 357000fde6a75b740808335fb86484a6a15357ec |
Proposed branch: | ~kzapalowicz/snappy-hwe-snaps/+git/bluez:feature/bluez/5.49/core-patches |
Merge into: | ~snappy-hwe-team/snappy-hwe-snaps/+git/bluez:bluez/5.49 |
Diff against target: |
849 lines (+162/-97) 18 files modified
.ci_tests_disabled (+0/-0) Makefile.tools (+5/-2) autogen.sh (+7/-0) obexd/client/ftp.c (+1/-1) obexd/client/map.c (+1/-1) obexd/client/opp.c (+1/-1) obexd/client/pbap.c (+1/-1) obexd/client/session.c (+1/-1) obexd/client/sync.c (+1/-1) obexd/src/main.c (+10/-2) obexd/src/manager.c (+1/-1) profiles/input/device.c (+3/-2) src/adapter.c (+87/-56) src/device.c (+22/-19) src/storage.c (+14/-4) src/storage.h (+1/-0) tools/hciattach_bcm43xx.c (+5/-4) tools/obexctl.c (+1/-1) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alfonso Sanchez-Beato | Approve | ||
System Enablement Bot | continuous-integration | Approve | |
Review via email: mp+341516@code.launchpad.net |
Commit message
Description of the change
add snappy patches
System Enablement Bot (system-enablement-ci-bot) wrote : | # |
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
Looks good, some minor comments though.
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
Also, why are you disabling snap tests?
System Enablement Bot (system-enablement-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:575252c9ab1
https:/
Executed test runs:
None: https:/
Click here to trigger a rebuild:
https:/
System Enablement Bot (system-enablement-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:e2d0bdedde1
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
Click here to trigger a rebuild:
https:/
System Enablement Bot (system-enablement-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:e2d0bdedde1
https:/
Executed test runs:
None: https:/
Click here to trigger a rebuild:
https:/
System Enablement Bot (system-enablement-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:22b3317b0d2
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
Click here to trigger a rebuild:
https:/
System Enablement Bot (system-enablement-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:7fd673b1311
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
Click here to trigger a rebuild:
https:/
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
LGTM
Preview Diff
1 | diff --git a/.ci_tests_disabled b/.ci_tests_disabled |
2 | new file mode 100644 |
3 | index 0000000..e69de29 |
4 | --- /dev/null |
5 | +++ b/.ci_tests_disabled |
6 | diff --git a/Makefile.tools b/Makefile.tools |
7 | index f7ab77d..66cf69d 100644 |
8 | --- a/Makefile.tools |
9 | +++ b/Makefile.tools |
10 | @@ -379,8 +379,11 @@ EXTRA_DIST += tools/hid2hci.1 |
11 | endif |
12 | |
13 | if READLINE |
14 | -noinst_PROGRAMS += tools/btmgmt tools/obex-client-tool tools/obex-server-tool \ |
15 | - tools/bluetooth-player tools/obexctl |
16 | +bin_PROGRAMS += tools/obexctl \ |
17 | + tools/btmgmt |
18 | + |
19 | +noinst_PROGRAMS += tools/obex-client-tool tools/obex-server-tool \ |
20 | + tools/bluetooth-player |
21 | |
22 | tools_obex_client_tool_SOURCES = $(gobex_sources) $(btio_sources) \ |
23 | tools/obex-client-tool.c |
24 | diff --git a/autogen.sh b/autogen.sh |
25 | new file mode 100755 |
26 | index 0000000..2e02fd8 |
27 | --- /dev/null |
28 | +++ b/autogen.sh |
29 | @@ -0,0 +1,7 @@ |
30 | +#!/bin/sh |
31 | + |
32 | +aclocal && |
33 | + autoheader && |
34 | + libtoolize --automake --copy --force && |
35 | + automake --add-missing --copy && |
36 | + autoconf |
37 | diff --git a/obexd/client/ftp.c b/obexd/client/ftp.c |
38 | index d799821..ad59456 100644 |
39 | --- a/obexd/client/ftp.c |
40 | +++ b/obexd/client/ftp.c |
41 | @@ -475,7 +475,7 @@ int ftp_init(void) |
42 | |
43 | DBG(""); |
44 | |
45 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
46 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
47 | if (!conn) |
48 | return -EIO; |
49 | |
50 | diff --git a/obexd/client/map.c b/obexd/client/map.c |
51 | index 3e581c8..386ae8b 100644 |
52 | --- a/obexd/client/map.c |
53 | +++ b/obexd/client/map.c |
54 | @@ -2074,7 +2074,7 @@ int map_init(void) |
55 | |
56 | DBG(""); |
57 | |
58 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
59 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
60 | if (!conn) |
61 | return -EIO; |
62 | |
63 | diff --git a/obexd/client/opp.c b/obexd/client/opp.c |
64 | index 92785f6..36fd4db 100644 |
65 | --- a/obexd/client/opp.c |
66 | +++ b/obexd/client/opp.c |
67 | @@ -191,7 +191,7 @@ int opp_init(void) |
68 | |
69 | DBG(""); |
70 | |
71 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
72 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
73 | if (!conn) |
74 | return -EIO; |
75 | |
76 | diff --git a/obexd/client/pbap.c b/obexd/client/pbap.c |
77 | index 1ab34a7..793408b 100644 |
78 | --- a/obexd/client/pbap.c |
79 | +++ b/obexd/client/pbap.c |
80 | @@ -1313,7 +1313,7 @@ int pbap_init(void) |
81 | |
82 | DBG(""); |
83 | |
84 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
85 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
86 | if (!conn) |
87 | return -EIO; |
88 | |
89 | diff --git a/obexd/client/session.c b/obexd/client/session.c |
90 | index 4eda255..2b8346a 100644 |
91 | --- a/obexd/client/session.c |
92 | +++ b/obexd/client/session.c |
93 | @@ -592,7 +592,7 @@ struct obc_session *obc_session_create(const char *source, |
94 | if (driver == NULL) |
95 | return NULL; |
96 | |
97 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
98 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
99 | if (conn == NULL) |
100 | return NULL; |
101 | |
102 | diff --git a/obexd/client/sync.c b/obexd/client/sync.c |
103 | index 548c318..8c30908 100644 |
104 | --- a/obexd/client/sync.c |
105 | +++ b/obexd/client/sync.c |
106 | @@ -237,7 +237,7 @@ int sync_init(void) |
107 | |
108 | DBG(""); |
109 | |
110 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
111 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
112 | if (!conn) |
113 | return -EIO; |
114 | |
115 | diff --git a/obexd/src/main.c b/obexd/src/main.c |
116 | index c774cda..d7ade96 100644 |
117 | --- a/obexd/src/main.c |
118 | +++ b/obexd/src/main.c |
119 | @@ -285,11 +285,19 @@ int main(int argc, char *argv[]) |
120 | } |
121 | |
122 | if (option_root == NULL) { |
123 | - option_root = g_build_filename(g_get_user_cache_dir(), "obexd", |
124 | - NULL); |
125 | + option_root = getenv("SNAP_USER_DATA") |
126 | + |
127 | + if (!option_root) |
128 | + option_root = g_build_filename(g_get_user_cache_dir(), |
129 | + "obexd", NULL); |
130 | g_mkdir_with_parents(option_root, 0700); |
131 | } |
132 | |
133 | + /* |
134 | + * FIXME: a relative path option_root is specified on the command line, |
135 | + * will not be properly re-located to $SNAP_USER_DATA. Since this is |
136 | + * not used in the snap's obexd service file, this should be a no-op. |
137 | + */ |
138 | if (option_root[0] != '/') { |
139 | const char *home = getenv("HOME"); |
140 | if (home) { |
141 | diff --git a/obexd/src/manager.c b/obexd/src/manager.c |
142 | index a4af627..61f3417 100644 |
143 | --- a/obexd/src/manager.c |
144 | +++ b/obexd/src/manager.c |
145 | @@ -499,7 +499,7 @@ gboolean manager_init(void) |
146 | |
147 | dbus_error_init(&err); |
148 | |
149 | - connection = g_dbus_setup_bus(DBUS_BUS_SESSION, OBEXD_SERVICE, &err); |
150 | + connection = g_dbus_setup_bus(DBUS_BUS_SYSTEM, OBEXD_SERVICE, &err); |
151 | if (connection == NULL) { |
152 | if (dbus_error_is_set(&err) == TRUE) { |
153 | fprintf(stderr, "%s\n", err.message); |
154 | diff --git a/profiles/input/device.c b/profiles/input/device.c |
155 | index d66c41a..cc800ab 100644 |
156 | --- a/profiles/input/device.c |
157 | +++ b/profiles/input/device.c |
158 | @@ -937,8 +937,9 @@ static int hidp_add_connection(struct input_device *idev) |
159 | ba2str(&idev->src, src_addr); |
160 | ba2str(&idev->dst, dst_addr); |
161 | |
162 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", src_addr, |
163 | - dst_addr); |
164 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", |
165 | + get_storage_dir(), src_addr, dst_addr); |
166 | + |
167 | sprintf(handle, "0x%8.8X", idev->handle); |
168 | |
169 | key_file = g_key_file_new(); |
170 | diff --git a/src/adapter.c b/src/adapter.c |
171 | index 6d7d615..73b48cd 100644 |
172 | --- a/src/adapter.c |
173 | +++ b/src/adapter.c |
174 | @@ -483,7 +483,7 @@ static void store_adapter_info(struct btd_adapter *adapter) |
175 | g_key_file_set_string(key_file, "General", "Alias", |
176 | adapter->stored_alias); |
177 | |
178 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/settings", |
179 | + snprintf(filename, PATH_MAX, "%s/%s/settings", get_storage_dir(), |
180 | btd_adapter_get_storage_dir(adapter)); |
181 | |
182 | create_file(filename, S_IRUSR | S_IWUSR); |
183 | @@ -3561,7 +3561,7 @@ static int load_irk(struct btd_adapter *adapter, uint8_t *irk) |
184 | char *str_irk; |
185 | int ret; |
186 | |
187 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/identity", |
188 | + snprintf(filename, PATH_MAX, "%s/%s/identity", get_storage_dir(), |
189 | btd_adapter_get_storage_dir(adapter)); |
190 | |
191 | key_file = g_key_file_new(); |
192 | @@ -4003,7 +4003,7 @@ static void load_devices(struct btd_adapter *adapter) |
193 | DIR *dir; |
194 | struct dirent *entry; |
195 | |
196 | - snprintf(dirname, PATH_MAX, STORAGEDIR "/%s", |
197 | + snprintf(dirname, PATH_MAX, "%s/%s", get_storage_dir(), |
198 | btd_adapter_get_storage_dir(adapter)); |
199 | |
200 | dir = opendir(dirname); |
201 | @@ -4030,7 +4030,7 @@ static void load_devices(struct btd_adapter *adapter) |
202 | if (entry->d_type != DT_DIR || bachk(entry->d_name) < 0) |
203 | continue; |
204 | |
205 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
206 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
207 | btd_adapter_get_storage_dir(adapter), |
208 | entry->d_name); |
209 | |
210 | @@ -4828,7 +4828,8 @@ static void convert_names_entry(char *key, char *value, void *user_data) |
211 | if (bachk(str) != 0) |
212 | return; |
213 | |
214 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", address, str); |
215 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
216 | + address, str); |
217 | create_file(filename, S_IRUSR | S_IWUSR); |
218 | |
219 | key_file = g_key_file_new(); |
220 | @@ -5045,7 +5046,7 @@ static void convert_entry(char *key, char *value, void *user_data) |
221 | struct stat st; |
222 | int err; |
223 | |
224 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", |
225 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
226 | converter->address, key); |
227 | |
228 | err = stat(filename, &st); |
229 | @@ -5053,7 +5054,7 @@ static void convert_entry(char *key, char *value, void *user_data) |
230 | return; |
231 | } |
232 | |
233 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
234 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
235 | converter->address, key); |
236 | |
237 | key_file = g_key_file_new(); |
238 | @@ -5081,7 +5082,8 @@ static void convert_file(char *file, char *address, |
239 | char filename[PATH_MAX]; |
240 | struct device_converter converter; |
241 | |
242 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", address, file); |
243 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
244 | + address, file); |
245 | |
246 | converter.address = address; |
247 | converter.cb = cb; |
248 | @@ -5151,7 +5153,8 @@ static void store_sdp_record(char *local, char *peer, int handle, char *value) |
249 | char *data; |
250 | gsize length = 0; |
251 | |
252 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
253 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
254 | + local, peer); |
255 | |
256 | key_file = g_key_file_new(); |
257 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
258 | @@ -5199,7 +5202,8 @@ static void convert_sdp_entry(char *key, char *value, void *user_data) |
259 | |
260 | /* Check if the device directory has been created as records should |
261 | * only be converted for known devices */ |
262 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr); |
263 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
264 | + src_addr, dst_addr); |
265 | |
266 | err = stat(filename, &st); |
267 | if (err || !S_ISDIR(st.st_mode)) |
268 | @@ -5225,8 +5229,8 @@ static void convert_sdp_entry(char *key, char *value, void *user_data) |
269 | if (!gatt_parse_record(rec, &uuid, &psm, &start, &end)) |
270 | goto failed; |
271 | |
272 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", src_addr, |
273 | - dst_addr); |
274 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", |
275 | + get_storage_dir(), src_addr, dst_addr); |
276 | |
277 | key_file = g_key_file_new(); |
278 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
279 | @@ -5277,8 +5281,9 @@ static void convert_primaries_entry(char *key, char *value, void *user_data) |
280 | sdp_uuid16_create(&uuid, GATT_PRIM_SVC_UUID); |
281 | prim_uuid = bt_uuid2string(&uuid); |
282 | |
283 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", address, |
284 | - key); |
285 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", |
286 | + get_storage_dir(), address, key); |
287 | + |
288 | key_file = g_key_file_new(); |
289 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
290 | |
291 | @@ -5309,7 +5314,8 @@ static void convert_primaries_entry(char *key, char *value, void *user_data) |
292 | g_free(data); |
293 | g_key_file_free(key_file); |
294 | |
295 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", address, key); |
296 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
297 | + address, key); |
298 | |
299 | key_file = g_key_file_new(); |
300 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
301 | @@ -5350,14 +5356,16 @@ static void convert_ccc_entry(char *key, char *value, void *user_data) |
302 | |
303 | /* Check if the device directory has been created as records should |
304 | * only be converted for known devices */ |
305 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr); |
306 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), src_addr, |
307 | + dst_addr); |
308 | |
309 | err = stat(filename, &st); |
310 | if (err || !S_ISDIR(st.st_mode)) |
311 | return; |
312 | |
313 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/ccc", src_addr, |
314 | - dst_addr); |
315 | + snprintf(filename, PATH_MAX, "%s/%s/%s/ccc", get_storage_dir(), |
316 | + src_addr, dst_addr); |
317 | + |
318 | key_file = g_key_file_new(); |
319 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
320 | |
321 | @@ -5397,14 +5405,16 @@ static void convert_gatt_entry(char *key, char *value, void *user_data) |
322 | |
323 | /* Check if the device directory has been created as records should |
324 | * only be converted for known devices */ |
325 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr); |
326 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), src_addr, |
327 | + dst_addr); |
328 | |
329 | err = stat(filename, &st); |
330 | if (err || !S_ISDIR(st.st_mode)) |
331 | return; |
332 | |
333 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/gatt", src_addr, |
334 | - dst_addr); |
335 | + snprintf(filename, PATH_MAX, "%s/%s/%s/gatt", get_storage_dir(), |
336 | + src_addr, dst_addr); |
337 | + |
338 | key_file = g_key_file_new(); |
339 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
340 | |
341 | @@ -5443,14 +5453,16 @@ static void convert_proximity_entry(char *key, char *value, void *user_data) |
342 | |
343 | /* Check if the device directory has been created as records should |
344 | * only be converted for known devices */ |
345 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, key); |
346 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
347 | + src_addr, key); |
348 | |
349 | err = stat(filename, &st); |
350 | if (err || !S_ISDIR(st.st_mode)) |
351 | return; |
352 | |
353 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/proximity", src_addr, |
354 | - key); |
355 | + snprintf(filename, PATH_MAX, "%s/%s/%s/proximity", get_storage_dir(), |
356 | + src_addr, key); |
357 | + |
358 | key_file = g_key_file_new(); |
359 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
360 | |
361 | @@ -5474,7 +5486,7 @@ static void convert_device_storage(struct btd_adapter *adapter) |
362 | ba2str(&adapter->bdaddr, address); |
363 | |
364 | /* Convert device's name cache */ |
365 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/names", address); |
366 | + snprintf(filename, PATH_MAX, "%s/%s/names", get_storage_dir(), address); |
367 | textfile_foreach(filename, convert_names_entry, address); |
368 | |
369 | /* Convert aliases */ |
370 | @@ -5490,7 +5502,8 @@ static void convert_device_storage(struct btd_adapter *adapter) |
371 | convert_file("profiles", address, convert_profiles_entry, TRUE); |
372 | |
373 | /* Convert primaries */ |
374 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/primaries", address); |
375 | + snprintf(filename, PATH_MAX, "%s/%s/primaries", get_storage_dir(), |
376 | + address); |
377 | textfile_foreach(filename, convert_primaries_entry, address); |
378 | |
379 | /* Convert linkkeys */ |
380 | @@ -5506,22 +5519,24 @@ static void convert_device_storage(struct btd_adapter *adapter) |
381 | convert_file("did", address, convert_did_entry, FALSE); |
382 | |
383 | /* Convert sdp */ |
384 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/sdp", address); |
385 | + snprintf(filename, PATH_MAX, "%s/%s/sdp", get_storage_dir(), |
386 | + address); |
387 | textfile_foreach(filename, convert_sdp_entry, address); |
388 | |
389 | /* Convert ccc */ |
390 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/ccc", address); |
391 | + snprintf(filename, PATH_MAX, "%s/%s/ccc", get_storage_dir(), address); |
392 | textfile_foreach(filename, convert_ccc_entry, address); |
393 | |
394 | /* Convert appearances */ |
395 | convert_file("appearances", address, convert_appearances_entry, FALSE); |
396 | |
397 | /* Convert gatt */ |
398 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/gatt", address); |
399 | + snprintf(filename, PATH_MAX, "%s/%s/gatt", get_storage_dir(), address); |
400 | textfile_foreach(filename, convert_gatt_entry, address); |
401 | |
402 | /* Convert proximity */ |
403 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/proximity", address); |
404 | + snprintf(filename, PATH_MAX, "%s/%s/proximity", get_storage_dir(), |
405 | + address); |
406 | textfile_foreach(filename, convert_proximity_entry, address); |
407 | } |
408 | |
409 | @@ -5537,7 +5552,8 @@ static void convert_config(struct btd_adapter *adapter, const char *filename, |
410 | gsize length = 0; |
411 | |
412 | ba2str(&adapter->bdaddr, address); |
413 | - snprintf(config_path, PATH_MAX, STORAGEDIR "/%s/config", address); |
414 | + snprintf(config_path, PATH_MAX, "%s/%s/config", get_storage_dir(), |
415 | + address); |
416 | |
417 | if (read_pairable_timeout(address, &timeout) == 0) |
418 | g_key_file_set_integer(key_file, "General", |
419 | @@ -5571,7 +5587,8 @@ static void fix_storage(struct btd_adapter *adapter) |
420 | |
421 | ba2str(&adapter->bdaddr, address); |
422 | |
423 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/config", address); |
424 | + snprintf(filename, PATH_MAX, "%s/%s/config", get_storage_dir(), |
425 | + address); |
426 | converted = textfile_get(filename, "converted"); |
427 | if (!converted) |
428 | return; |
429 | @@ -5580,49 +5597,60 @@ static void fix_storage(struct btd_adapter *adapter) |
430 | |
431 | textfile_del(filename, "converted"); |
432 | |
433 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/names", address); |
434 | + snprintf(filename, PATH_MAX, "%s/%s/names", get_storage_dir(), address); |
435 | textfile_del(filename, "converted"); |
436 | |
437 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/aliases", address); |
438 | + snprintf(filename, PATH_MAX, "%s/%s/aliases", get_storage_dir(), |
439 | + address); |
440 | textfile_del(filename, "converted"); |
441 | |
442 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/trusts", address); |
443 | + snprintf(filename, PATH_MAX, "%s/%s/trusts", get_storage_dir(), |
444 | + address); |
445 | textfile_del(filename, "converted"); |
446 | |
447 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/blocked", address); |
448 | + snprintf(filename, PATH_MAX, "%s/%s/blocked", get_storage_dir(), |
449 | + address); |
450 | textfile_del(filename, "converted"); |
451 | |
452 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/profiles", address); |
453 | + snprintf(filename, PATH_MAX, "%s/%s/profiles", get_storage_dir(), |
454 | + address); |
455 | textfile_del(filename, "converted"); |
456 | |
457 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/primaries", address); |
458 | + snprintf(filename, PATH_MAX, "%s/%s/primaries", get_storage_dir(), |
459 | + address); |
460 | textfile_del(filename, "converted"); |
461 | |
462 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/linkkeys", address); |
463 | + snprintf(filename, PATH_MAX, "%s/%s/linkkeys", get_storage_dir(), |
464 | + address); |
465 | textfile_del(filename, "converted"); |
466 | |
467 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/longtermkeys", address); |
468 | + snprintf(filename, PATH_MAX, "%s/%s/longtermkeys", get_storage_dir(), |
469 | + address); |
470 | textfile_del(filename, "converted"); |
471 | |
472 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/classes", address); |
473 | + snprintf(filename, PATH_MAX, "%s/%s/classes", get_storage_dir(), |
474 | + address); |
475 | textfile_del(filename, "converted"); |
476 | |
477 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/did", address); |
478 | + snprintf(filename, PATH_MAX, "%s/%s/did", get_storage_dir(), |
479 | + address); |
480 | textfile_del(filename, "converted"); |
481 | |
482 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/sdp", address); |
483 | + snprintf(filename, PATH_MAX, "%s/%s/sdp", get_storage_dir(), address); |
484 | textfile_del(filename, "converted"); |
485 | |
486 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/ccc", address); |
487 | + snprintf(filename, PATH_MAX, "%s/%s/ccc", get_storage_dir(), address); |
488 | textfile_del(filename, "converted"); |
489 | |
490 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/appearances", address); |
491 | + snprintf(filename, PATH_MAX, "%s/%s/appearances", get_storage_dir(), |
492 | + address); |
493 | textfile_del(filename, "converted"); |
494 | |
495 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/gatt", address); |
496 | + snprintf(filename, PATH_MAX, "%s/%s/gatt", get_storage_dir(), address); |
497 | textfile_del(filename, "converted"); |
498 | |
499 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/proximity", address); |
500 | + snprintf(filename, PATH_MAX, "%s/%s/proximity", get_storage_dir(), |
501 | + address); |
502 | textfile_del(filename, "converted"); |
503 | } |
504 | |
505 | @@ -5635,7 +5663,7 @@ static void load_config(struct btd_adapter *adapter) |
506 | |
507 | key_file = g_key_file_new(); |
508 | |
509 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/settings", |
510 | + snprintf(filename, PATH_MAX, "%s/%s/settings", get_storage_dir(), |
511 | btd_adapter_get_storage_dir(adapter)); |
512 | |
513 | if (stat(filename, &st) < 0) { |
514 | @@ -7286,7 +7314,7 @@ static void store_link_key(struct btd_adapter *adapter, |
515 | |
516 | ba2str(device_get_address(device), device_addr); |
517 | |
518 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
519 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
520 | btd_adapter_get_storage_dir(adapter), device_addr); |
521 | key_file = g_key_file_new(); |
522 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
523 | @@ -7376,7 +7404,7 @@ static void store_longtermkey(struct btd_adapter *adapter, const bdaddr_t *peer, |
524 | |
525 | ba2str(peer, device_addr); |
526 | |
527 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
528 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
529 | btd_adapter_get_storage_dir(adapter), device_addr); |
530 | key_file = g_key_file_new(); |
531 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
532 | @@ -7505,7 +7533,7 @@ static void store_csrk(struct btd_adapter *adapter, const bdaddr_t *peer, |
533 | |
534 | ba2str(peer, device_addr); |
535 | |
536 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
537 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
538 | btd_adapter_get_storage_dir(adapter), device_addr); |
539 | |
540 | key_file = g_key_file_new(); |
541 | @@ -7576,7 +7604,7 @@ static void store_irk(struct btd_adapter *adapter, const bdaddr_t *peer, |
542 | |
543 | ba2str(peer, device_addr); |
544 | |
545 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
546 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
547 | btd_adapter_get_storage_dir(adapter), device_addr); |
548 | key_file = g_key_file_new(); |
549 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
550 | @@ -7664,7 +7692,7 @@ static void store_conn_param(struct btd_adapter *adapter, const bdaddr_t *peer, |
551 | |
552 | DBG(""); |
553 | |
554 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
555 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
556 | btd_adapter_get_storage_dir(adapter), device_addr); |
557 | key_file = g_key_file_new(); |
558 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
559 | @@ -8243,7 +8271,7 @@ static void remove_keys(struct btd_adapter *adapter, |
560 | |
561 | ba2str(device_get_address(device), device_addr); |
562 | |
563 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
564 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
565 | btd_adapter_get_storage_dir(adapter), device_addr); |
566 | key_file = g_key_file_new(); |
567 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
568 | @@ -8332,13 +8360,16 @@ static bool get_static_addr(struct btd_adapter *adapter) |
569 | char **addrs; |
570 | char mfg[7]; |
571 | char *str; |
572 | + char filename[PATH_MAX]; |
573 | bool ret; |
574 | gsize len, i; |
575 | |
576 | snprintf(mfg, sizeof(mfg), "0x%04x", adapter->manufacturer); |
577 | |
578 | + snprintf(filename, PATH_MAX, "%s/addresses", get_storage_dir()); |
579 | + |
580 | file = g_key_file_new(); |
581 | - g_key_file_load_from_file(file, STORAGEDIR "/addresses", 0, NULL); |
582 | + g_key_file_load_from_file(file, filename, 0, NULL); |
583 | addrs = g_key_file_get_string_list(file, "Static", mfg, &len, NULL); |
584 | if (addrs) { |
585 | for (i = 0; i < len; i++) { |
586 | @@ -8392,7 +8423,7 @@ static bool get_static_addr(struct btd_adapter *adapter) |
587 | (const char **)addrs, len); |
588 | |
589 | str = g_key_file_to_data(file, &len, NULL); |
590 | - g_file_set_contents(STORAGEDIR "/addresses", str, len, NULL); |
591 | + g_file_set_contents("%s/addresses", get_storage_dir(), str, len, NULL); |
592 | g_free(str); |
593 | |
594 | ret = true; |
595 | diff --git a/src/device.c b/src/device.c |
596 | index 7c7196c..995ee6c 100644 |
597 | --- a/src/device.c |
598 | +++ b/src/device.c |
599 | @@ -378,7 +378,7 @@ static gboolean store_device_info_cb(gpointer user_data) |
600 | device->store_id = 0; |
601 | |
602 | ba2str(&device->bdaddr, device_addr); |
603 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
604 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
605 | btd_adapter_get_storage_dir(device->adapter), |
606 | device_addr); |
607 | |
608 | @@ -502,7 +502,7 @@ void device_store_cached_name(struct btd_device *dev, const char *name) |
609 | } |
610 | |
611 | ba2str(&dev->bdaddr, d_addr); |
612 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", |
613 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
614 | btd_adapter_get_storage_dir(dev->adapter), d_addr); |
615 | create_file(filename, S_IRUSR | S_IWUSR); |
616 | |
617 | @@ -2017,7 +2017,7 @@ static void store_services(struct btd_device *device) |
618 | |
619 | ba2str(&device->bdaddr, dst_addr); |
620 | |
621 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", |
622 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
623 | btd_adapter_get_storage_dir(device->adapter), |
624 | dst_addr); |
625 | key_file = g_key_file_new(); |
626 | @@ -2203,7 +2203,7 @@ static void store_gatt_db(struct btd_device *device) |
627 | |
628 | ba2str(&device->bdaddr, dst_addr); |
629 | |
630 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", |
631 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
632 | btd_adapter_get_storage_dir(device->adapter), |
633 | dst_addr); |
634 | create_file(filename, S_IRUSR | S_IWUSR); |
635 | @@ -2802,7 +2802,8 @@ static char *load_cached_name(struct btd_device *device, const char *local, |
636 | if (device_address_is_private(device)) |
637 | return NULL; |
638 | |
639 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
640 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
641 | + local, peer); |
642 | |
643 | key_file = g_key_file_new(); |
644 | |
645 | @@ -2901,8 +2902,8 @@ static void convert_info(struct btd_device *device, GKeyFile *key_file) |
646 | |
647 | ba2str(btd_adapter_get_address(device->adapter), adapter_addr); |
648 | ba2str(&device->bdaddr, device_addr); |
649 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", adapter_addr, |
650 | - device_addr); |
651 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
652 | + adapter_addr, device_addr); |
653 | |
654 | str = g_key_file_to_data(key_file, &length, NULL); |
655 | g_file_set_contents(filename, str, length, NULL); |
656 | @@ -3047,8 +3048,8 @@ static void load_att_info(struct btd_device *device, const char *local, |
657 | sdp_uuid16_create(&uuid, GATT_PRIM_SVC_UUID); |
658 | prim_uuid = bt_uuid2string(&uuid); |
659 | |
660 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", local, |
661 | - peer); |
662 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
663 | + local, peer); |
664 | |
665 | key_file = g_key_file_new(); |
666 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
667 | @@ -3403,7 +3404,8 @@ static void load_gatt_db(struct btd_device *device, const char *local, |
668 | |
669 | DBG("Restoring %s gatt database from file", peer); |
670 | |
671 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
672 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
673 | + local, peer); |
674 | |
675 | key_file = g_key_file_new(); |
676 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
677 | @@ -3807,11 +3809,11 @@ char *btd_device_get_storage_path(struct btd_device *device, |
678 | ba2str(&device->bdaddr, dstaddr); |
679 | |
680 | if (!filename) |
681 | - return g_strdup_printf(STORAGEDIR "/%s/%s", |
682 | + return g_strdup_printf("%s/%s/%s", get_storage_dir(), |
683 | btd_adapter_get_storage_dir(device->adapter), |
684 | dstaddr); |
685 | |
686 | - return g_strdup_printf(STORAGEDIR "/%s/%s/%s", |
687 | + return g_strdup_printf("%s/%s/%s/%s", get_storage_dir(), |
688 | btd_adapter_get_storage_dir(device->adapter), |
689 | dstaddr, filename); |
690 | } |
691 | @@ -4036,12 +4038,12 @@ static void device_remove_stored(struct btd_device *device) |
692 | |
693 | ba2str(&device->bdaddr, device_addr); |
694 | |
695 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", |
696 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
697 | btd_adapter_get_storage_dir(device->adapter), |
698 | device_addr); |
699 | delete_folder_tree(filename); |
700 | |
701 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", |
702 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
703 | btd_adapter_get_storage_dir(device->adapter), |
704 | device_addr); |
705 | |
706 | @@ -4427,14 +4429,14 @@ static void update_bredr_services(struct browse_req *req, sdp_list_t *recs) |
707 | ba2str(btd_adapter_get_address(device->adapter), srcaddr); |
708 | ba2str(&device->bdaddr, dstaddr); |
709 | |
710 | - snprintf(sdp_file, PATH_MAX, STORAGEDIR "/%s/cache/%s", srcaddr, |
711 | - dstaddr); |
712 | + snprintf(sdp_file, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
713 | + srcaddr, dstaddr); |
714 | |
715 | sdp_key_file = g_key_file_new(); |
716 | g_key_file_load_from_file(sdp_key_file, sdp_file, 0, NULL); |
717 | |
718 | - snprintf(att_file, PATH_MAX, STORAGEDIR "/%s/%s/attributes", srcaddr, |
719 | - dstaddr); |
720 | + snprintf(att_file, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
721 | + srcaddr, dstaddr); |
722 | |
723 | att_key_file = g_key_file_new(); |
724 | g_key_file_load_from_file(att_key_file, att_file, 0, NULL); |
725 | @@ -6103,7 +6105,8 @@ static sdp_list_t *read_device_records(struct btd_device *device) |
726 | ba2str(btd_adapter_get_address(device->adapter), local); |
727 | ba2str(&device->bdaddr, peer); |
728 | |
729 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
730 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
731 | + local, peer); |
732 | |
733 | key_file = g_key_file_new(); |
734 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
735 | diff --git a/src/storage.c b/src/storage.c |
736 | index 734a9e0..222fdb3 100644 |
737 | --- a/src/storage.c |
738 | +++ b/src/storage.c |
739 | @@ -55,6 +55,16 @@ struct match { |
740 | char *pattern; |
741 | }; |
742 | |
743 | +const char* get_storage_dir(void) |
744 | +{ |
745 | + static const char *storagedir = NULL; |
746 | + |
747 | + if (!storagedir) |
748 | + storagedir = getenv("SNAP_DATA"); |
749 | + |
750 | + return storagedir ? storagedir : STORAGEDIR; |
751 | +} |
752 | + |
753 | static inline int create_filename(char *buf, size_t size, |
754 | const bdaddr_t *bdaddr, const char *name) |
755 | { |
756 | @@ -62,14 +72,14 @@ static inline int create_filename(char *buf, size_t size, |
757 | |
758 | ba2str(bdaddr, addr); |
759 | |
760 | - return create_name(buf, size, STORAGEDIR, addr, name); |
761 | + return create_name(buf, size, get_storage_dir(), addr, name); |
762 | } |
763 | |
764 | int read_discoverable_timeout(const char *src, int *timeout) |
765 | { |
766 | char filename[PATH_MAX], *str; |
767 | |
768 | - create_name(filename, PATH_MAX, STORAGEDIR, src, "config"); |
769 | + create_name(filename, PATH_MAX, get_storage_dir(), src, "config"); |
770 | |
771 | str = textfile_get(filename, "discovto"); |
772 | if (!str) |
773 | @@ -89,7 +99,7 @@ int read_pairable_timeout(const char *src, int *timeout) |
774 | { |
775 | char filename[PATH_MAX], *str; |
776 | |
777 | - create_name(filename, PATH_MAX, STORAGEDIR, src, "config"); |
778 | + create_name(filename, PATH_MAX, get_storage_dir(), src, "config"); |
779 | |
780 | str = textfile_get(filename, "pairto"); |
781 | if (!str) |
782 | @@ -109,7 +119,7 @@ int read_on_mode(const char *src, char *mode, int length) |
783 | { |
784 | char filename[PATH_MAX], *str; |
785 | |
786 | - create_name(filename, PATH_MAX, STORAGEDIR, src, "config"); |
787 | + create_name(filename, PATH_MAX, get_storage_dir(), src, "config"); |
788 | |
789 | str = textfile_get(filename, "onmode"); |
790 | if (!str) |
791 | diff --git a/src/storage.h b/src/storage.h |
792 | index 1c0ad57..94b5bcf 100644 |
793 | --- a/src/storage.h |
794 | +++ b/src/storage.h |
795 | @@ -21,6 +21,7 @@ |
796 | * |
797 | */ |
798 | |
799 | +const char *get_storage_dir(void); |
800 | int read_discoverable_timeout(const char *src, int *timeout); |
801 | int read_pairable_timeout(const char *src, int *timeout); |
802 | int read_on_mode(const char *src, char *mode, int length); |
803 | diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c |
804 | index ac1b3c1..695fdbc 100644 |
805 | --- a/tools/hciattach_bcm43xx.c |
806 | +++ b/tools/hciattach_bcm43xx.c |
807 | @@ -43,7 +43,7 @@ |
808 | #include "hciattach.h" |
809 | |
810 | #ifndef FIRMWARE_DIR |
811 | -#define FIRMWARE_DIR "/etc/firmware" |
812 | +#define FIRMWARE_DIR "/lib/firmware" |
813 | #endif |
814 | |
815 | #define FW_EXT ".hcd" |
816 | @@ -368,9 +368,6 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, |
817 | if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) { |
818 | fprintf(stderr, "Patch not found, continue anyway\n"); |
819 | } else { |
820 | - if (bcm43xx_set_speed(fd, ti, speed)) |
821 | - return -1; |
822 | - |
823 | if (bcm43xx_load_firmware(fd, fw_path)) |
824 | return -1; |
825 | |
826 | @@ -379,6 +376,10 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, |
827 | perror("Can't set host baud rate"); |
828 | return -1; |
829 | } |
830 | + /* give a moment to the controller to acknowledge the above |
831 | + * commands. without waiting it did fail on reset sometimes |
832 | + */ |
833 | + sleep(1); |
834 | |
835 | if (bcm43xx_reset(fd)) |
836 | return -1; |
837 | diff --git a/tools/obexctl.c b/tools/obexctl.c |
838 | index 3360972..0b220f9 100644 |
839 | --- a/tools/obexctl.c |
840 | +++ b/tools/obexctl.c |
841 | @@ -2150,7 +2150,7 @@ int main(int argc, char *argv[]) |
842 | bt_shell_set_menu(&main_menu); |
843 | bt_shell_set_prompt(PROMPT_OFF); |
844 | |
845 | - dbus_conn = g_dbus_setup_bus(DBUS_BUS_SESSION, NULL, NULL); |
846 | + dbus_conn = g_dbus_setup_bus(DBUS_BUS_SYSTEM, NULL, NULL); |
847 | |
848 | client = g_dbus_client_new(dbus_conn, "org.bluez.obex", |
849 | "/org/bluez/obex"); |
PASSED: Continuous integration, rev:575252c9ab1 139b964e18d0c9a 506270ed7d0aed /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-build- prepare/ 207/ /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-build/ ARCHITECTURE= amd64/256 /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-build/ ARCHITECTURE= arm64/256 /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-build/ ARCHITECTURE= armhf/256 /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-build/ ARCHITECTURE= i386/256 /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-docs/ 1050 /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-cleanup/ 793 /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-update- mp/820/ console
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/system- enablement/ job/snappy- hwe-snaps- snap-build- prepare/ 207/rebuild
https:/