Merge ~morphis/snappy-hwe-snaps/+git/pulseaudio:bug/enable-proposed into ~snappy-hwe-team/snappy-hwe-snaps/+git/se-test-tools:master

Proposed by Simon Fels
Status: Superseded
Proposed branch: ~morphis/snappy-hwe-snaps/+git/pulseaudio:bug/enable-proposed
Merge into: ~snappy-hwe-team/snappy-hwe-snaps/+git/se-test-tools:master
Diff against target: 1658 lines (+1479/-0) (has conflicts)
26 files modified
MAINTAINERS (+4/-0)
README.md (+6/-0)
bin/config (+70/-0)
bin/pactl (+28/-0)
bin/paplay (+28/-0)
bin/parec (+28/-0)
bin/pulseaudio (+28/-0)
data/copyright (+604/-0)
run-tests.sh (+84/-0)
snapcraft.yaml (+152/-0)
spread.yaml (+50/-0)
tests/image/README.md (+7/-0)
tests/image/create-image.sh (+157/-0)
tests/image/pc-model.json (+11/-0)
tests/image/pc.model (+21/-0)
tests/image/test-user-assertion.json (+13/-0)
tests/image/test-user.assertion (+25/-0)
tests/lib/prepare-all.sh (+35/-0)
tests/lib/prepare-each.sh (+6/-0)
tests/lib/prepare.sh (+51/-0)
tests/lib/restore-each.sh (+22/-0)
tests/lib/snap-names.sh (+7/-0)
tests/lib/utilities.sh (+9/-0)
tests/main/installation/task.yaml (+16/-0)
tests/main/modules-loaded/task.yaml (+11/-0)
tests/main/pactl/task.yaml (+6/-0)
Conflict in MAINTAINERS
Conflict in README.md
Conflict in snapcraft.yaml
Reviewer Review Type Date Requested Status
System Enablement Bot continuous-integration Needs Fixing
Review via email: mp+314226@code.launchpad.net

This proposal has been superseded by a proposal from 2017-01-06.

Description of the change

Enable Ubuntu proposed archive within the classic snap for builds

As the current core snap is based on a systemd deb package from the Ubuntu Core image ppa we run into some conflicts with a newer one from the archive. To fix this issue we need to force upgrade to a newer systemd package from xenial proposed.

To post a comment you must log in.
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Needs Fixing (continuous-integration)

Unmerged commits

c755d8e... by Simon Fels

tests: upgrade classic system from proposed

a29ac2f... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

Version 8.0-3

c3e5e6e... by System Enablement CI Bot <email address hidden>

Merge remote tracking branch feature/fix-runtime-issues

Merge-Proposal: https://code.launchpad.net/~kzapalowicz/snappy-hwe-snaps/+git/pulseaudio/+merge/313340

0792791... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

Use stable channelm not candidate, for image building

ef3646b... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

Use stable channel for image creation

The Core image from th candidate channel hes problems in resolving the
dependencies for the pulseaudio snap. This forces the image to be
created out of the 'stable' channel which should not have this
problem

99ba403... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

Fix failing CI infrastructure due to broken packages

The CI is failing because libudev-dev is having the unmet dependencies.
This commit makes sure that the upgrade is performed before the snap
is build.

9268445... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

pulseaudio: fix the plug/slot connectin problem

The plugs and slots for pulseaudio snap cannot be connected w/o the
assertion which is a case when installing a locally build snap. This
change makes sure that the snap from the store is installed before
so that the connection is made.

60fd5cc... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

Add home plug for parec command

This commit adds home plug to the parec command so that it is possible
to play files from the ~ directory.

7a8251b... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

Add network plug

The network plug is needed to overcome SecComp complaining of
the unauthorized usage of the send system call.

d35ba51... by =?utf-8?q?Konrad_Zapa=C5=82owicz?= <email address hidden>

Decide to run the pa* scripts only as root

The pactl, parec and paplay commands, when run normally, try to access
/run/user/$USERID/ on Core which is disallowed by AppArmor rules.

This commit is make sure that the mentioned commands are run as root,
not regular user.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/MAINTAINERS b/MAINTAINERS
2index 170e9f4..b249add 100644
3--- a/MAINTAINERS
4+++ b/MAINTAINERS
5@@ -1,2 +1,6 @@
6+<<<<<<< MAINTAINERS
7 Alfonso Sanchez-Beato <alfonso.sanchez-beato@canonical.com>
8+=======
9+Jim Hodapp <jim.hodapp@canonical.com>
10+>>>>>>> MAINTAINERS
11 Simon Fels <simon.fels@canonical.com>
12diff --git a/README.md b/README.md
13index 08d7a05..1cc87d3 100644
14--- a/README.md
15+++ b/README.md
16@@ -1,3 +1,4 @@
17+<<<<<<< README.md
18 # Test tools
19
20 This snap bundles various tools needed from the test suites the
21@@ -27,3 +28,8 @@ running them like
22 ```
23 $ se-test-tools.radvd -h
24 ```
25+=======
26+# PulseAudio
27+
28+This is the snap to package the PulseAudio management service.
29+>>>>>>> README.md
30diff --git a/bin/config b/bin/config
31new file mode 100755
32index 0000000..86b115c
33--- /dev/null
34+++ b/bin/config
35@@ -0,0 +1,70 @@
36+#!/bin/bash
37+#
38+# Copyright (C) 2016 Canonical Ltd
39+#
40+# This program is free software: you can redistribute it and/or modify
41+# it under the terms of the GNU General Public License version 3 as
42+# published by the Free Software Foundation.
43+#
44+# This program is distributed in the hope that it will be useful,
45+# but WITHOUT ANY WARRANTY; without even the implied warranty of
46+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47+# GNU General Public License for more details.
48+#
49+# You should have received a copy of the GNU General Public License
50+# along with this program. If not, see <http://www.gnu.org/licenses/>.
51+
52+export PATH="$PATH:$SNAP/sbin"
53+
54+show_help() {
55+ echo "Usage: $0 COMMAND..."
56+ echo
57+ echo "Commands:"
58+ echo " enable-debug Enable verbose debugging."
59+ echo " disable-debug Disable verbose debugging."
60+}
61+
62+if [ "$1" = "" ]; then
63+ show_help
64+ exit
65+fi
66+
67+while [ "$1" != '' ]; do
68+ case "$1" in
69+ --help)
70+ show_help
71+ exit
72+ ;;
73+ enable-debug|disable-debug)
74+ commands="$commands $1"
75+ shift
76+ ;;
77+ *)
78+ echo "Unknown command: $1"
79+ exit 1
80+ ;;
81+ esac
82+done
83+
84+if [ ! -d $SNAP_DATA/config ] ; then
85+ mkdir $SNAP_DATA/config
86+fi
87+
88+run_commands() {
89+ while [ -n "$1" ]; do
90+ case "$1" in
91+ disable-debug)
92+ if [ -e $SNAP_DATA/config/debug ] ; then
93+ rm $SNAP_DATA/config/debug
94+ fi
95+ shift
96+ ;;
97+ enable-debug)
98+ touch $SNAP_DATA/config/debug
99+ shift
100+ ;;
101+ esac
102+ done
103+}
104+
105+run_commands $commands
106diff --git a/bin/pactl b/bin/pactl
107new file mode 100755
108index 0000000..97e23b2
109--- /dev/null
110+++ b/bin/pactl
111@@ -0,0 +1,28 @@
112+#!/bin/sh
113+#
114+# Copyright (C) 2016 Canonical Ltd
115+#
116+# This program is free software: you can redistribute it and/or modify
117+# it under the terms of the GNU General Public License version 3 as
118+# published by the Free Software Foundation.
119+#
120+# This program is distributed in the hope that it will be useful,
121+# but WITHOUT ANY WARRANTY; without even the implied warranty of
122+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
123+# GNU General Public License for more details.
124+#
125+# You should have received a copy of the GNU General Public License
126+# along with this program. If not, see <http://www.gnu.org/licenses/>.
127+
128+if [ $(id -u) -ne 0 ]; then
129+ echo "This script must be run as root" 1>&2
130+ exit 1
131+fi
132+
133+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SNAP/usr/lib/pulseaudio:$SNAP/usr/lib/pulse-8.0/modules/
134+export PULSE_CLIENTCONFIG=$SNAP/etc/pulse/client.conf
135+export HOME=$SNAP_DATA/home
136+
137+mkdir -p $HOME
138+
139+$SNAP/usr/bin/pactl $@
140diff --git a/bin/paplay b/bin/paplay
141new file mode 100755
142index 0000000..a132d51
143--- /dev/null
144+++ b/bin/paplay
145@@ -0,0 +1,28 @@
146+#!/bin/sh
147+#
148+# Copyright (C) 2016 Canonical Ltd
149+#
150+# This program is free software: you can redistribute it and/or modify
151+# it under the terms of the GNU General Public License version 3 as
152+# published by the Free Software Foundation.
153+#
154+# This program is distributed in the hope that it will be useful,
155+# but WITHOUT ANY WARRANTY; without even the implied warranty of
156+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
157+# GNU General Public License for more details.
158+#
159+# You should have received a copy of the GNU General Public License
160+# along with this program. If not, see <http://www.gnu.org/licenses/>.
161+
162+if [ $(id -u) -ne 0 ]; then
163+ echo "This script must be run as root" 1>&2
164+ exit 1
165+fi
166+
167+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SNAP/usr/lib/pulseaudio:$SNAP/usr/lib/pulse-8.0/modules/
168+export PULSE_CLIENTCONFIG=$SNAP/etc/pulse/client.conf
169+export HOME=$SNAP_DATA/home
170+
171+mkdir -p $HOME
172+
173+$SNAP/usr/bin/paplay $@
174diff --git a/bin/parec b/bin/parec
175new file mode 100755
176index 0000000..269e0f8
177--- /dev/null
178+++ b/bin/parec
179@@ -0,0 +1,28 @@
180+#!/bin/sh
181+#
182+# Copyright (C) 2016 Canonical Ltd
183+#
184+# This program is free software: you can redistribute it and/or modify
185+# it under the terms of the GNU General Public License version 3 as
186+# published by the Free Software Foundation.
187+#
188+# This program is distributed in the hope that it will be useful,
189+# but WITHOUT ANY WARRANTY; without even the implied warranty of
190+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
191+# GNU General Public License for more details.
192+#
193+# You should have received a copy of the GNU General Public License
194+# along with this program. If not, see <http://www.gnu.org/licenses/>.
195+
196+if [ $(id -u) -ne 0 ]; then
197+ echo "This script must be run as root" 1>&2
198+ exit 1
199+fi
200+
201+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SNAP/usr/lib/pulseaudio:$SNAP/usr/lib/pulse-8.0/modules/
202+export PULSE_CLIENTCONFIG=$SNAP/etc/pulse/client.conf
203+export HOME=$SNAP_DATA/home
204+
205+mkdir -p $HOME
206+
207+$SNAP/usr/bin/parec $@
208diff --git a/bin/pulseaudio b/bin/pulseaudio
209new file mode 100755
210index 0000000..d9fb85f
211--- /dev/null
212+++ b/bin/pulseaudio
213@@ -0,0 +1,28 @@
214+#!/bin/sh
215+set -e
216+set -x
217+
218+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SNAP/usr/lib/pulseaudio:$SNAP/usr/lib/pulse-8.0/modules/
219+export PULSE_STATE_PATH=$SNAP_DATA/state
220+export ALSA_CONFIG_UCM=$SNAP/usr/share/alsa/ucm
221+export ALSA_CONFIG_TPLG=$SNAP/usr/share/alsa/topology
222+export ALSA_CONFIG_PATH=$SNAP/usr/share/alsa/alsa.conf
223+export ALSA_MIXER_SIMPLE=$SNAP/usr/share/alsa/smixer.conf
224+
225+mkdir -p $PULSE_STATE_PATH
226+
227+EXTRA_ARGS=
228+
229+if [ -e $SNAP_DATA/config/debug ] ; then
230+ EXTRA_ARGS="$EXTRA_ARGS -vvvv"
231+ export LIBASOUND_DEBUG=1
232+fi
233+
234+$SNAP/usr/bin/pulseaudio \
235+ --exit-idle-time=-1 \
236+ --disallow-exit=yes \
237+ --system \
238+ -F $SNAP/etc/pulse/default.pa \
239+ -p $SNAP/usr/lib/pulse-8.0/modules \
240+ -n \
241+ $EXTRA_ARGS
242diff --git a/data/copyright b/data/copyright
243new file mode 100644
244index 0000000..970053b
245--- /dev/null
246+++ b/data/copyright
247@@ -0,0 +1,604 @@
248+This package was debianized by CJ van den Berg <cj@vdbonline.com> on
249+Thu, 10 Aug 2006 15:59:43 +0200.
250+
251+It was downloaded from <http://pulseaudio.org/wiki/DownloadPulseAudio>.
252+
253+ Upstream Authors
254+ ================
255+
256+ Lennart Poettering <lennart@poettering.net>
257+ Pierre Ossman <drzeus@drzeus.cx>,
258+ through his employer Cendio <http://www.cendio.com/>
259+
260+Files: *
261+Copyright:
262+ Copyright (C) 2004-2009 Lennart Poettering
263+ Copyright (C) 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
264+License: LGPL-2.1+
265+ The upstream license clarifies pretty well that the sources of pulseaudio are
266+ LGPL (please see LGPL license grant below), but that some parts will be
267+ effectively GPL since they rely on GPL libraries, quoting the upstream
268+ LICENSE:
269+
270+ """All PulseAudio source files are licensed under the GNU Lesser General
271+ Public License. (see file LGPL for details)
272+
273+ However, the server side links to the GPL-only library 'libsamplerate'
274+ which practically downgrades the license of the server part to GPL (see
275+ file GPL for details), exercising section 3 of the LGPL.
276+
277+ Hence you should treat the client library ('libpulse') of PulseAudio as
278+ being LGPL licensed and the server part ('libpulsecore') as being GPL
279+ licensed. Since the PulseAudio daemon and the modules link to
280+ 'libpulsecore' they are of course also GPL licensed.
281+
282+ -- Lennart Poettering, April 20th, 2006."""
283+
284+ On Debian systems, the complete text of the LGPL-2.1 can be found in
285+ /usr/share/common-licenses/LGPL-2.1.
286+
287+File: src/pulsecore/g711.c
288+Copyright:
289+ Copyright (C) Sun Microsystems, Inc
290+License:
291+ This source code is a product of Sun Microsystems, Inc. and is provided
292+ for unrestricted use. Users may copy or modify this source code without
293+ charge.
294+
295+ SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
296+ THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
297+ PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
298+
299+ Sun source code is provided with no support and without any obligation on
300+ the part of Sun Microsystems, Inc. to assist in its use, correction,
301+ modification or enhancement.
302+
303+ SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
304+ INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
305+ OR ANY PART THEREOF.
306+
307+ In no event will Sun Microsystems, Inc. be liable for any lost revenue
308+ or profits or other special, indirect and consequential damages, even if
309+ Sun has been advised of the possibility of such damages.
310+
311+Files: src/pulsecore/g711.h
312+Copyright:
313+ Copyright (C) 2001 Chris Bagwell
314+Licence:
315+ Permission to use, copy, modify, and distribute this software and its
316+ documentation for any purpose and without fee is hereby granted, provided
317+ that the above copyright notice appear in all copies and that both that
318+ copyright notice and this permission notice appear in supporting
319+ documentation. This software is provided "as is" without express or
320+ implied warranty.
321+
322+Files: src/pulsecore/poll.*
323+Copyright:
324+ Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
325+ Copyright (C)1994,96,97,98,99,2000,2001,2004 Free Software Foundation, Inc.
326+License: LGPL-2.1+
327+ On Debian systems, the complete text of the LGPL-2.1 can be found in
328+ /usr/share/common-licenses/LGPL-2.1.
329+
330+Files: src/pulse/utf8.c
331+Copyright:
332+ Copyright (C) 1999 Tom Tromey
333+ Copyright (C) 2000 Red Hat, Inc.
334+License: LGPL-2.1+
335+ On Debian systems, the complete text of the LGPL-2.1 can be found in
336+ /usr/share/common-licenses/LGPL-2.1.
337+
338+Files: src/modules/bluetooth/ipc.*, src/modules/bluetooth/rtp.*
339+Copyright:
340+ Copyright (C) 2004-2009 Marcel Holtmann <marcel@holtmann.org>
341+License: LGPL-2.1+
342+ On Debian systems, the complete text of the LGPL-2.1 can be found in
343+ /usr/share/common-licenses/LGPL-2.1.
344+
345+Files: src/modules/bluetooth/module-bluetooth-{device,discover}.c,
346+ src/modules/bluetooth/bluetooth-util.*
347+Copyright:
348+ Copyright (C) 2008-2009 Joao Paulo Rechi Vita
349+License: LGPL-2.1+
350+ On Debian systems, the complete text of the LGPL-2.1 can be found in
351+ /usr/share/common-licenses/LGPL-2.
352+
353+File: src/modules/bluetooth/proximity-helper.c
354+Copyright:
355+ Copyright (C) 2000-2001 Qualcomm Incorporated
356+ Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
357+ Copyright (C) 2002-2007 Marcel Holtmann <marcel@holtmann.org>
358+License: GPL-2+
359+ On Debian systems, the complete text of the GPL-2 can be found in
360+ /usr/share/common-licenses/GPL-2.
361+
362+Files: src/modules/bluetooth/sbc*
363+Copyright:
364+ Copyright (C) 2004-2009 Marcel Holtmann <marcel@holtmann.org>
365+ Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
366+ Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.com>
367+License: LGPL-2.1+
368+ On Debian systems, the complete text of the LGPL-2.1 can be found in
369+ /usr/share/common-licenses/LGPL-2.1.
370+
371+File: src/modules/dbus/iface-{client,stream}.c:
372+Copyright:
373+ Copyright 2009 Tanu Kaskinen
374+ Copyright 2009 Vincent Filali-Ansary <filali.v@azurdigitalnetworks.net>
375+License: LGPL-2.1+
376+ On Debian systems, the complete text of the LGPL-2.1 can be found in
377+ /usr/share/common-licenses/LGPL-2.1.
378+
379+File: src/modules/dbus/module-dbus-protocol.c
380+Copyright:
381+ Copyright 2009 Tanu Kaskinen
382+ Copyright 2006 Lennart Poettering
383+ Copyright 2006 Shams E. King
384+License: LGPL-2.1+
385+ On Debian systems, the complete text of the LGPL-2.1 can be found in
386+ /usr/share/common-licenses/LGPL-2.1.
387+
388+Files: src/modules/dbus/*
389+Copyright:
390+ Copyright 2009 Tanu Kaskinen
391+License: LGPL-2.1+
392+ On Debian systems, the complete text of the LGPL-2.1 can be found in
393+ /usr/share/common-licenses/LGPL-2.1.
394+
395+Files: src/modules/echo-cancel/adrian*.*
396+Copyright:
397+ Copyright (C) DFS Deutsche Flugsicherung (2004). All Rights Reserved.
398+License:
399+ You are allowed to use this source code in any open source or closed
400+ source software you want. You are allowed to use the algorithms for a
401+ hardware solution. You are allowed to modify the source code.
402+ You are not allowed to remove the name of the author from this memo or
403+ from the source code files. You are not allowed to monopolize the
404+ source code or the algorithms behind the source code as your
405+ intellectual property. This source code is free of royalty and comes
406+ with no warranty.
407+
408+File: src/modules/echo-cancel/echo-cancel.h
409+Copyright:
410+ Copyright 2010 Arun Raghavan <arun.raghavan@collabora.co.uk>
411+License: LGPL-2.1+
412+ On Debian systems, the complete text of the LGPL-2.1 can be found in
413+ /usr/share/common-licenses/LGPL-2.1.
414+
415+File: src/modules/echo-cancel/module-echo-cancel.c
416+Copyright:
417+ Copyright 2010 Wim Taymans <wim.taymans@gmail.com>
418+License: LGPL-2.1+
419+ On Debian systems, the complete text of the LGPL-2.1 can be found in
420+ /usr/share/common-licenses/LGPL-2.1.
421+
422+File: src/modules/echo-cancel/speex.c
423+Copyright:
424+ Copyright 2010 Wim Taymans <wim.taymans@gmail.com>
425+ Contributor: Arun Raghavan <arun.raghavan@collabora.co.uk>
426+License: LGPL-2.1+
427+ On Debian systems, the complete text of the LGPL-2.1 can be found in
428+ /usr/share/common-licenses/LGPL-2.1.
429+
430+File: src/modules/jack/module-jackdbus-detect.c
431+Copyright:
432+ Written by David Henningsson <david.henningsson@canonical.com>
433+ Copyright 2010 Canonical Ltd.
434+License: LGPL-2.1+
435+ On Debian systems, the complete text of the LGPL-2.1 can be found in
436+ /usr/share/common-licenses/LGPL-2.1.
437+
438+Files: src/modules/module-device-manager.*
439+Copyright:
440+ Copyright 2006-2008 Lennart Poettering
441+ Copyright (C) 2009 Colin Guthrie
442+License: LGPL-2.1+
443+ On Debian systems, the complete text of the LGPL-2.1 can be found in
444+ /usr/share/common-licenses/LGPL-2.1.
445+
446+File: src/modules/module-equalizer-sink.c
447+Copyright:
448+ Copyright 2004-2008 Lennart Poettering
449+ Copyright 2009 Jason Newton <nevion@gmail.com>
450+License: LGPL-2.1+
451+ On Debian systems, the complete text of the LGPL-2.1 can be found in
452+ /usr/share/common-licenses/LGPL-2.1.
453+
454+Files: src/pulsecore/dbus-*.*, src/modules/module-hal-detect.c
455+Copyright:
456+ Copyright 2006 Lennart Poettering
457+ Copyright 2006 Shams E. King
458+License: LGPL-2.1+
459+ On Debian systems, the complete text of the LGPL-2.1 can be found in
460+ /usr/share/common-licenses/LGPL-2.1.
461+
462+File: src/modules/ladspa.h
463+Copyright:
464+ Copyright (C) 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan
465+ Westerfeld.
466+License: LGPL-2.1+
467+ On Debian systems, the complete text of the LGPL-2.1 can be found in
468+ /usr/share/common-licenses/LGPL-2.1.
469+
470+Files: src/modules/module-always-sink.c, src/modules/rtp/rtsp_client.*
471+Copyright:
472+ Copyright (C) 2008 Colin Guthrie
473+License: LGPL-2.1+
474+ On Debian systems, the complete text of the LGPL-2.1 can be found in
475+ /usr/share/common-licenses/LGPL-2.1.
476+
477+Files: src/modules/module-detect.c
478+Copyright:
479+ Copyright 2006 Lennart Poettering
480+ Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
481+ Copyright 2006 Diego Petteno
482+License: LGPL-2.1+
483+ On Debian systems, the complete text of the LGPL-2.1 can be found in
484+ /usr/share/common-licenses/LGPL-2.1.
485+
486+Files: src/modules/roap/*roap*, src/modules/rtp/headerlist.*
487+Copyright:
488+ Copyright 2005-2007 Lennart Poettering
489+ Copyright (C) 2008 Colin Guthrie
490+License: LGPL-2.1+
491+ On Debian systems, the complete text of the LGPL-2.1 can be found in
492+ /usr/share/common-licenses/LGPL-2.1.
493+
494+Files: src/modules/roap/base64.*
495+Copyright:
496+ Copyright (C) 2008 Colin Guthrie
497+ Copyright (C) Kungliga Tekniska Hogskolan
498+License: LGPL-2.1+
499+ On Debian systems, the complete text of the LGPL-2.1 can be found in
500+ /usr/share/common-licenses/LGPL-2.1.
501+
502+Files: src/modules/module-device-manager.c
503+Copyright:
504+ Copyright 2006-2008 Lennart Poettering
505+ Copyright 2009 Colin Guthrie
506+License: LGPL-2.1+
507+ On Debian systems, the complete text of the LGPL-2.1 can be found in
508+ /usr/share/common-licenses/LGPL-2.1.
509+
510+Files: src/modules/module-filter-{apply,heuristics}*.c
511+Copyright:
512+ Copyright 2011 Colin Guthrie
513+License: LGPL-2.1+
514+ On Debian systems, the complete text of the LGPL-2.1 can be found in
515+ /usr/share/common-licenses/LGPL-2.1.
516+
517+Files: src/modules/module-solaris.c
518+Copyright:
519+ Copyright 2006 Lennart Poettering
520+ Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
521+ Copyright 2009 Finn Thain
522+License: LGPL-2.1+
523+ On Debian systems, the complete text of the LGPL-2.1 can be found in
524+ /usr/share/common-licenses/LGPL-2.1.
525+
526+File: src/modules/module-switch-on-connect.c
527+Copyright:
528+ Copyright 2006 Lennart Poettering
529+ Copyright 2009 Canonical Ltd
530+License: LGPL-2.1+
531+ On Debian systems, the complete text of the LGPL-2.1 can be found in
532+ /usr/share/common-licenses/LGPL-2.1.
533+
534+Files: src/modules/module-virtual-s{ink,ource}.c
535+Copyright:
536+ Copyright 2010 Intel Corporation
537+ Contributor: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
538+License: LGPL-2.1+
539+ On Debian systems, the complete text of the LGPL-2.1 can be found in
540+ /usr/share/common-licenses/LGPL-2.1.
541+
542+Files: src/modules/reserve.*
543+Copyright:
544+ Copyright 2009 (C) Lennart Poettering
545+License:
546+ Permission is hereby granted, free of charge, to any person
547+ obtaining a copy of this software and associated documentation files
548+ (the "Software"), to deal in the Software without restriction,
549+ including without limitation the rights to use, copy, modify, merge,
550+ publish, distribute, sublicense, and/or sell copies of the Software,
551+ and to permit persons to whom the Software is furnished to do so,
552+ subject to the following conditions:
553+
554+ The above copyright notice and this permission notice shall be
555+ included in all copies or substantial portions of the Software.
556+
557+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
558+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
559+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
560+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
561+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
562+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
563+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
564+ SOFTWARE.
565+
566+Files: src/pulsecore/atomic.h
567+Copyright:
568+ Copyright (C) 2006-2008 Lennart Poettering
569+ Copyright (C) 2008 Nokia Corporation
570+License: LGPL-2.1+
571+ On Debian systems, the complete text of the LGPL-2.1 can be found in
572+ /usr/share/common-licenses/LGPL-2.1.
573+
574+File: src/pulsecore/core-util.c
575+Copyright:
576+ Copyright (C) 2004-2006 Lennart Poettering
577+ Copyright (C) 2004 Joe Marcus Clarke
578+ Copyright (C) 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
579+License: LGPL-2.1+
580+ On Debian systems, the complete text of the LGPL-2.1 can be found in
581+ /usr/share/common-licenses/LGPL-2.1.
582+
583+Files: src/pulse/ext-device-manager.*
584+Copyright:
585+ Copyright (C) 2008 Lennart Poettering
586+ Copyright (C) 2009 Colin Guthrie
587+License: LGPL-2.1+
588+ On Debian systems, the complete text of the LGPL-2.1 can be found in
589+ /usr/share/common-licenses/LGPL-2.1.
590+
591+File: src/pulsecore/ffmpeg/avcodec.h
592+Copyright:
593+ Copyright (c) 2001 Fabrice Bellard
594+License: LGPL-2.1+
595+ On Debian systems, the complete text of the LGPL-2.1 can be found in
596+ /usr/share/common-licenses/LGPL-2.1.
597+
598+File: src/pulsecore/ffmpeg/resample2.c
599+Copyright:
600+ Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
601+License: LGPL-2.1+
602+ On Debian systems, the complete text of the LGPL-2.1 can be found in
603+ /usr/share/common-licenses/LGPL-2.1.
604+
605+File: src/pulsecore/socket-util.c
606+Copyright:
607+ Copyright (C) 2004-2006 Lennart Poettering
608+ Copyright (C) 2004 Joe Marcus Clarke
609+ Copyright (C) 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
610+License: LGPL-2.1+
611+ On Debian systems, the complete text of the LGPL-2.1 can be found in
612+ /usr/share/common-licenses/LGPL-2.1.
613+
614+File: man/xmltoman
615+Copyright:
616+ Copyright (C) 2000-2002 Oliver Kurth <oku@masqmail.cx>
617+ Copyright (C) 2003 Lennart Poettering <mzkzygbzna@0pointer.de>
618+License: LGPL-2+
619+ On Debian systems, the complete text of the LGPL-2 can be found in
620+ /usr/share/common-licenses/LGPL-2.
621+
622+File: po/ca.po
623+Copyright:
624+ Copyright (C) 2008 Xavier Conde Rueda <xavi.conde@gmail.com>
625+ Copyright (C) 2009 Agustí Grau <fletxa@gmail.com>, 2009.
626+ Copyright (C) Judith Pintó Subirada <judithp@gmail.com>
627+ Copyright (C) 2009 Josep Torné Llavall <josep.torne@gmail.com>
628+
629+License: LGPL-2.1+
630+ On Debian systems, the complete text of the LGPL-2.1 can be found in
631+ /usr/share/common-licenses/LGPL-2.1.
632+
633+File: po/cs.po
634+Copyright:
635+ Copyright (C) 2008,2009 Petr Kovar <pknbe@volny.cz>
636+License: LGPL-2.1+
637+ On Debian systems, the complete text of the LGPL-2.1 can be found in
638+ /usr/share/common-licenses/LGPL-2.1.
639+
640+File: po/de.po
641+Copyright:
642+ Copyright (C) 2008,2009 Fabian Affolter <fab@fedoraproject.org>
643+ Copyright (C) 2008,2009 Micha Pietsch <barney@fedoraproject.org>
644+License: LGPL-2.1+
645+ On Debian systems, the complete text of the LGPL-2.1 can be found in
646+ /usr/share/common-licenses/LGPL-2.1.
647+
648+File: po/de_CH.po
649+Copyright:
650+ Copyright (C) 2008, 2009 Fabian Affolter <fab@fedoraproject.org>
651+ Copyright (C) 2008, 2009 Micha Pietsch <barney@fedoraproject.org>
652+License: LGPL-2.1+
653+ On Debian systems, the complete text of the LGPL-2.1 can be found in
654+ /usr/share/common-licenses/LGPL-2.1.
655+
656+File: po/el.po
657+Copyright:
658+ Copyright (C) 2008 Dimitris Glezos <dimitris@glezos.com>
659+ Copyright (C) 2009 Thalia Papoutsaki <saliyath@gmail.com>
660+License: LGPL-2.1+
661+ On Debian systems, the complete text of the LGPL-2.1 can be found in
662+ /usr/share/common-licenses/LGPL-2.1.
663+
664+File: po/es.po
665+Copyright:
666+ Copyright (C) 2009 Domingo Becker <domingobecker@gmail.com>
667+ Copyright (C) 2008 Hector Daniel Cabrera <h.daniel.cabrera@gmail.com>
668+ Copyright (C) 2009 Fernando Gonzalez Blanco <fgonz@fedoraproject.org>
669+License: LGPL-2.1+
670+ On Debian systems, the complete text of the LGPL-2.1 can be found in
671+ /usr/share/common-licenses/LGPL-2.1.
672+
673+File: po/fi.po
674+Copyright:
675+ Copyright (C) 2009 Timo Jyrinki <timo.jyrinki@iki.fi>
676+ Copyright (C) 2009 Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>
677+License: LGPL-2.1+
678+ On Debian systems, the complete text of the LGPL-2.1 can be found in
679+ /usr/share/common-licenses/LGPL-2.1.
680+
681+File: po/fr.po
682+Copyright:
683+ Copyright (C) 2008 Robert-Andre Mauchin <zebob.m@pengzone.org>
684+ Copyright (C) 2008 Michael Ughetto <telimektar esraonline com>
685+ Copyright (C) 2008 Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>
686+ Copyright (C) 2009 Corentin Perard <corentin.perard@gmail.com>
687+License: LGPL-2.1+
688+ On Debian systems, the complete text of the LGPL-2.1 can be found in
689+ /usr/share/common-licenses/LGPL-2.1.
690+
691+File: po/gu.po
692+Copyright:
693+ Copyright (C) 2009 Sweta Kothari <swkothar@redhat.com>
694+License: LGPL-2.1+
695+ On Debian systems, the complete text of the LGPL-2.1 can be found in
696+ /usr/share/common-licenses/LGPL-2.1.
697+
698+File: po/hi.po
699+Copyright:
700+ Copyright (C) 2009 Rajesh Ranjan <rajesh672@gmail.com>
701+License: LGPL-2.1+
702+ On Debian systems, the complete text of the LGPL-2.1 can be found in
703+ /usr/share/common-licenses/LGPL-2.1.
704+
705+File: po/it.po
706+Copyright:
707+ Copyright (C) 2008,2009 Luca Ferretti <elle.uca@libero.it>
708+ Copyright (C) 2009 Milo Casagrande <milo@ubuntu.com>
709+ Copyright (C) 2009 ario_santagiuliana <mario at marionline.it>
710+ Copyright (C) 2009 Milo Casagrande <milo@ubuntu.com>
711+
712+License: LGPL-2.1+
713+ On Debian systems, the complete text of the LGPL-2.1 can be found in
714+ /usr/share/common-licenses/LGPL-2.1.
715+
716+File: po/ja.po
717+Copyright:
718+ Copyright (C) 2009 Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>
719+License: LGPL-2.1+
720+ On Debian systems, the complete text of the LGPL-2.1 can be found in
721+ /usr/share/common-licenses/LGPL-2.1.
722+
723+File: po/kn.po
724+Copyright:
725+ Copyright (C) 2009 Shankar Prasad <svenkate@redhat.com>
726+License: LGPL-2.1+
727+ On Debian systems, the complete text of the LGPL-2.1 can be found in
728+ /usr/share/common-licenses/LGPL-2.1.
729+
730+File: po/mr.po
731+Copyright:
732+ Copyright (C) 2009 Sandeep Shedmake <sandeep.shedmake@gmail.com>
733+ Copyright (C) 2009 Sandeep Shedmake <sshedmak@redhat.com>
734+License: LGPL-2.1+
735+ On Debian systems, the complete text of the LGPL-2.1 can be found in
736+ /usr/share/common-licenses/LGPL-2.1.
737+
738+File: po/nl.po
739+Copyright:
740+ Copyright (C) 2009 Geert Warrink <geert.warrink@onsnet.nu>
741+ Copyright (C) 2009 Reinout van Schouwen <reinout@gmail.com>
742+License: LGPL-2.1+
743+ On Debian systems, the complete text of the LGPL-2.1 can be found in
744+ /usr/share/common-licenses/LGPL-2.1.
745+
746+File: po/or.po
747+Copyright:
748+ Copyright (C) 2009 Manoj Kumar Giri <mgiri@redhat.com>
749+License: LGPL-2.1+
750+ On Debian systems, the complete text of the LGPL-2.1 can be found in
751+ /usr/share/common-licenses/LGPL-2.1.
752+
753+File: po/pa.po
754+Copyright:
755+ Copyright (C) 2009 Amanpreet Singh Alam <aalam@users.sf.net>
756+ Copyright (C) 2009 Jaswinder Singh <jsingh@redhat.com>
757+ Copyright (C) 2009 A S Alam <aalam@users.sf.net>
758+License: LGPL-2.1+
759+ On Debian systems, the complete text of the LGPL-2.1 can be found in
760+ /usr/share/common-licenses/LGPL-2.1.
761+
762+File: po/pl.po
763+Copyright:
764+ Copyright (C) 2008 Piotr Drag <piotrdrag@gmail.com>
765+License: LGPL-2.1+
766+ On Debian systems, the complete text of the LGPL-2.1 can be found in
767+ /usr/share/common-licenses/LGPL-2.1.
768+
769+File: po/pt_BR.po
770+Copyright:
771+ Copyright (C) 2008 Fabian Affolter <fab@fedoraproject.org>
772+License: LGPL-2.1+
773+ On Debian systems, the complete text of the LGPL-2.1 can be found in
774+ /usr/share/common-licenses/LGPL-2.1.
775+
776+File: po/sr.po, po/sr@latin.po
777+Copyright:
778+ Copyright (C) 2009 Igor Miletic (Игор Милетић) <grejigl-gnomeprevod@yahoo.ca>, 2009.
779+ Copyright (C) 2009 Miloš Komarčević <kmilos@gmail.com>, 2009.
780+License: LGPL-2.1+
781+ On Debian systems, the complete text of the LGPL-2.1 can be found in
782+ /usr/share/common-licenses/LGPL-2.1.
783+
784+File: po/sv.po
785+Copyright:
786+ Copyright (C) 2008 Daniel Nylander <po@danielnylander.se>
787+License: LGPL-2.1+
788+ On Debian systems, the complete text of the LGPL-2.1 can be found in
789+ /usr/share/common-licenses/LGPL-2.1.
790+
791+File: po/ta.po
792+Copyright:
793+ Copyright (C) 2009 I. Felix <ifelix@redhat.com>
794+License: LGPL-2.1+
795+ On Debian systems, the complete text of the LGPL-2.1 can be found in
796+ /usr/share/common-licenses/LGPL-2.1.
797+
798+File: po/te.po
799+Copyright:
800+ Copyright (C) 2009 Krishna Babu K <kkrothap@redhat.com>
801+License: LGPL-2.1+
802+ On Debian systems, the complete text of the LGPL-2.1 can be found in
803+ /usr/share/common-licenses/LGPL-2.1.
804+
805+File: po/uk.po
806+Copyright:
807+ Copyright (C) 2009 Yuri Chornoivan <yurchor@ukr.net>
808+License: LGPL-2.1+
809+ On Debian systems, the complete text of the LGPL-2.1 can be found in
810+ /usr/share/common-licenses/LGPL-2.1.
811+
812+File: po/zh_CN.po
813+Copyright:
814+ Copyright (C) 2008 闫丰刚 (sainry)<sainry@gmail.com>
815+License: LGPL-2.1+
816+ On Debian systems, the complete text of the LGPL-2.1 can be found in
817+ /usr/share/common-licenses/LGPL-2.1.
818+
819+Files: debian/*
820+Copyright:
821+ Copyright 2006-2009 Sjoerd Simons <sjoerd@debian.org>
822+ Copyright 2006-2008 CJ van den Berg <cj@vdbonline.com>
823+License: GPL-2+
824+ On Debian systems, the complete text of the GPL-2 can be found in
825+ /usr/share/common-licenses/GPL-2.
826+
827+Files: src/pulsecore/cpu-*, src/pulsecore/remap*,
828+ src/pulsecore/svolume_{arm,mmx,sse}.c
829+Copyright:
830+ Copyright 2004-2006 Lennart Poettering
831+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
832+License: LGPL-2.1+
833+ On Debian systems, the complete text of the LGPL-2.1 can be found in
834+ /usr/share/common-licenses/LGPL-2.1.
835+
836+
837+Files: src/pulsecore/sconv_sse.c
838+Copyright:
839+ Copyright 2004-2006 Lennart Poettering
840+ Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
841+License: LGPL-2.1+
842+ On Debian systems, the complete text of the LGPL-2.1 can be found in
843+ /usr/share/common-licenses/LGPL-2.1.
844+
845+
846+Files: src/pulsecore/usergroup.*
847+Copyright:
848+ Copyright 2009 Ted Percival
849+License: LGPL-2.1+
850+ On Debian systems, the complete text of the LGPL-2.1 can be found in
851+ /usr/share/common-licenses/LGPL-2.1.
852diff --git a/run-tests.sh b/run-tests.sh
853new file mode 100755
854index 0000000..b4ce91b
855--- /dev/null
856+++ b/run-tests.sh
857@@ -0,0 +1,84 @@
858+#!/bin/sh
859+#
860+# Copyright (C) 2016 Canonical Ltd
861+#
862+# This program is free software: you can redistribute it and/or modify
863+# it under the terms of the GNU General Public License version 3 as
864+# published by the Free Software Foundation.
865+#
866+# This program is distributed in the hope that it will be useful,
867+# but WITHOUT ANY WARRANTY; without even the implied warranty of
868+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
869+# GNU General Public License for more details.
870+#
871+# You should have received a copy of the GNU General Public License
872+# along with this program. If not, see <http://www.gnu.org/licenses/>.
873+
874+set -ex
875+
876+image_name=ubuntu-core-16.img
877+channel=stable
878+spread_opts=
879+force_new_image=0
880+test_from_channel=0
881+
882+show_help() {
883+ echo "Usage: run-tests.sh [OPTIONS]"
884+ echo
885+ echo "optional arguments:"
886+ echo " --help Show this help message and exit"
887+ echo " --channel=<channel> Select another channel to build the base image from (default: $channel)"
888+ echo " --debug Enable verbose debugging output"
889+ echo " --test-from-channel Pull snap from the specified channel instead of building it from source"
890+ echo " --force-new-image Force generating a new image used for testing"
891+}
892+
893+while [ -n "$1" ]; do
894+ case "$1" in
895+ --help)
896+ show_help
897+ exit
898+ ;;
899+ --channel=*)
900+ channel=${1#*=}
901+ shift
902+ ;;
903+ --test-from-channel)
904+ test_from_channel=1
905+ shift
906+ ;;
907+ --debug)
908+ spread_opts="$spread_opts -vv -debug"
909+ shift
910+ ;;
911+ --force-new-image)
912+ force_new_image=1
913+ shift
914+ ;;
915+ *)
916+ echo "Unknown command: $1"
917+ exit 1
918+ ;;
919+ esac
920+done
921+
922+SPREAD_QEMU_PATH="$HOME/.spread/qemu"
923+if [ `which spread` = /snap/bin/spread ] ; then
924+ current_version=`readlink /snap/spread/current`
925+ SPREAD_QEMU_PATH="$HOME/snap/spread/$current_version/.spread/qemu/"
926+fi
927+
928+# Make sure we have a base image we use for testing
929+if [ ! -e $SPREAD_QEMU_PATH/$image_name ] || [ $force_new_image -eq 1 ] ; then
930+ echo "INFO: Creating new qemu test image ..."
931+ (cd tests/image ; sudo ./create-image.sh $channel)
932+ mkdir -p $SPREAD_QEMU_PATH
933+ mv tests/image/ubuntu-core-16.img $SPREAD_QEMU_PATH/$image_name
934+fi
935+
936+# We currently only run spread tests but we could do other things
937+# here as well like running our snap-lintian tool etc.
938+if [ $test_from_channel -eq 1 ] ; then
939+ export SNAP_CHANNEL=$channel
940+fi
941+spread $spread_opts
942diff --git a/snapcraft.yaml b/snapcraft.yaml
943index c121988..ab7d560 100644
944--- a/snapcraft.yaml
945+++ b/snapcraft.yaml
946@@ -1,13 +1,27 @@
947+<<<<<<< snapcraft.yaml
948 name: se-test-tools
949 summary: A set of tools used for testing
950 description: |
951 This snap contains a few tools used for automated testing in the
952 System Enablement team of Canonical.
953 version: 2
954+=======
955+name: pulseaudio
956+version: 8.0-3
957+summary: PulseAudio sound server
958+description: |
959+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
960+ WIN32 systems. It is a drop in replacement for the ESD sound server with
961+ much better latency, mixing/re-sampling quality and overall architecture.
962+
963+ Please find the source code for this snap at:
964+ https://code.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/pulseaudio
965+>>>>>>> snapcraft.yaml
966 grade: stable
967 confinement: strict
968
969 apps:
970+<<<<<<< snapcraft.yaml
971 radvd:
972 command: usr/sbin/radvd
973 plugs:
974@@ -41,3 +55,141 @@ parts:
975 - isc-dhcp-server
976 - ethtool
977 - inotify-tools
978+=======
979+ pulseaudio:
980+ command: bin/pulseaudio
981+ daemon: simple
982+ slots: [service]
983+ pactl:
984+ command: bin/pactl
985+ plugs: [client, network]
986+ paplay:
987+ command: bin/paplay
988+ plugs: [client, home, network]
989+ parec:
990+ command: bin/parec
991+ plugs: [client, home, network]
992+ config:
993+ command: bin/config
994+
995+slots:
996+ service:
997+ interface: pulseaudio
998+
999+plugs:
1000+ client:
1001+ interface: pulseaudio
1002+
1003+parts:
1004+ pulseaudio-common:
1005+ plugin: copy
1006+ files:
1007+ bin/pulseaudio: bin/pulseaudio
1008+ bin/pactl: bin/pactl
1009+ bin/paplay: bin/paplay
1010+ bin/parec: bin/parec
1011+ bin/config: bin/config
1012+ data/copyright: usr/share/doc/pulseaudio/copyright
1013+
1014+ alsa-lib:
1015+ plugin: autotools
1016+
1017+ source: https://git.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/pulseaudio
1018+ source-type: git
1019+ source-branch: alsa-lib/xenial/1.1.0
1020+
1021+ configflags:
1022+ - --prefix=/usr
1023+ - --sysconfdir=/etc
1024+ - --libexec=/usr/lib
1025+ - --libdir=/usr/lib
1026+ - --localstatedir=/var
1027+ - --with-plugindir=/usr/lib/alsa-lib
1028+ - --disable-silent-rules
1029+ - --disable-static
1030+ - --disable-python
1031+
1032+ filesets:
1033+ libasound2:
1034+ - usr/lib/libasound.so*
1035+ - usr/lib/alsa-lib/*
1036+ - usr/share/alsa/*
1037+
1038+ snap:
1039+ - $libasound2
1040+
1041+
1042+ pulseaudio:
1043+ after:
1044+ - alsa-lib
1045+
1046+ plugin: autotools
1047+
1048+ source: https://git.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/pulseaudio
1049+ source-type: git
1050+ source-branch: pulseaudio/8.0
1051+
1052+ build-packages:
1053+ - intltool
1054+ - libasound2-dev
1055+ - libdbus-1-dev
1056+ - libjson-c-dev
1057+ - libglib2.0-dev
1058+ - libspeexdsp-dev
1059+ - libbluetooth-dev
1060+ - libwebrtc-audio-processing-dev
1061+ - libltdl-dev
1062+ - libsndfile1-dev
1063+ - libx11-xcb-dev
1064+ - libx11-dev
1065+ - libtdb-dev
1066+ - libudev-dev
1067+ - libasyncns-dev
1068+ - libxcb1-dev
1069+
1070+ configflags:
1071+ - --prefix=/usr
1072+ - --sysconfdir=/etc
1073+ - --libexec=/usr/lib
1074+ - --libdir=/usr/lib
1075+ - --localstatedir=/var
1076+ - --enable-udev
1077+ - --disable-rpath
1078+ - --disable-orc
1079+ - --disable-gconf
1080+ - --disable-bluez4
1081+ - --disable-bluez5
1082+ - --disable-esound
1083+ - --disable-adrian-aec
1084+ - --disable-gtk3
1085+ - --disable-hal-compat
1086+ - --disable-systemd-login
1087+ - --without-caps
1088+ - --disable-webrtc-aec
1089+ - --disable-dbus
1090+ - --disable-oss-output
1091+ - --disable-oss-wrapper
1092+ - --disable-jack
1093+ - --disable-x11
1094+ - --with-system-user=root
1095+ - --with-system-group=root
1096+
1097+ filesets:
1098+ pauseaudiofiles:
1099+ - etc/*
1100+ - lib/*
1101+ - usr/bin/pacat
1102+ - usr/bin/pactl
1103+ - usr/bin/paplay
1104+ - usr/bin/parec
1105+ - usr/bin/pulseaudio
1106+ - usr/lib/libpulse-mainloop-glib.so*
1107+ - usr/lib/libpulse-simple.so*
1108+ - usr/lib/libpulse.so*
1109+ - usr/lib/pulse-8.0/*
1110+ - usr/lib/pulseaudio/*.so
1111+ - usr/share/pulseaudio/*
1112+
1113+ snap:
1114+ - $pauseaudiofiles
1115+>>>>>>> snapcraft.yaml
1116diff --git a/spread.yaml b/spread.yaml
1117new file mode 100644
1118index 0000000..0c615ba
1119--- /dev/null
1120+++ b/spread.yaml
1121@@ -0,0 +1,50 @@
1122+#
1123+# Copyright (C) 2016 Canonical Ltd
1124+#
1125+# This program is free software: you can redistribute it and/or modify
1126+# it under the terms of the GNU General Public License version 3 as
1127+# published by the Free Software Foundation.
1128+#
1129+# This program is distributed in the hope that it will be useful,
1130+# but WITHOUT ANY WARRANTY; without even the implied warranty of
1131+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1132+# GNU General Public License for more details.
1133+#
1134+# You should have received a copy of the GNU General Public License
1135+# along with this program. If not, see <http://www.gnu.org/licenses/>.
1136+
1137+project: pulseaudio
1138+
1139+environment:
1140+ PROJECT_PATH: /home/pulseaudio
1141+ TESTSLIB: $PROJECT_PATH/tests/lib
1142+ SNAP_NAME: pulseaudio
1143+ # Allow the host to pass the channel to use for the test run
1144+ SNAP_CHANNEL: $(HOST:echo $SNAP_CHANNEL)
1145+
1146+backends:
1147+ qemu:
1148+ systems:
1149+ - ubuntu-core-16:
1150+ username: test
1151+ password: test
1152+
1153+# Put this somewhere where we have read-write access
1154+path: /home/pulseaudio
1155+
1156+exclude:
1157+ - .git
1158+
1159+prepare: |
1160+ . $TESTSLIB/prepare-all.sh
1161+
1162+suites:
1163+ tests/main/:
1164+ summary: Full-system tests for PulseAudio
1165+ systems:
1166+ - ubuntu-core-16
1167+ prepare: |
1168+ . $TESTSLIB/prepare.sh
1169+ restore-each: |
1170+ . $TESTSLIB/restore-each.sh
1171+
1172diff --git a/tests/image/README.md b/tests/image/README.md
1173new file mode 100644
1174index 0000000..b75b66e
1175--- /dev/null
1176+++ b/tests/image/README.md
1177@@ -0,0 +1,7 @@
1178+# Generate user password
1179+
1180+You can generate the password for the system user assertion via
1181+
1182+```
1183+ $ python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
1184+```
1185diff --git a/tests/image/create-image.sh b/tests/image/create-image.sh
1186new file mode 100755
1187index 0000000..3aa1d13
1188--- /dev/null
1189+++ b/tests/image/create-image.sh
1190@@ -0,0 +1,157 @@
1191+#!/bin/bash
1192+#
1193+# Copyright (C) 2016 Canonical Ltd
1194+#
1195+# This program is free software: you can redistribute it and/or modify
1196+# it under the terms of the GNU General Public License version 3 as
1197+# published by the Free Software Foundation.
1198+#
1199+# This program is distributed in the hope that it will be useful,
1200+# but WITHOUT ANY WARRANTY; without even the implied warranty of
1201+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1202+# GNU General Public License for more details.
1203+#
1204+# You should have received a copy of the GNU General Public License
1205+# along with this program. If not, see <http://www.gnu.org/licenses/>.
1206+
1207+set -e
1208+
1209+if [ $(id -u) -ne 0 ] ; then
1210+ echo "ERROR: needs to be executed as root"
1211+ exit 1
1212+fi
1213+
1214+channel=stable
1215+if [ ! -z "$1" ] ; then
1216+ channel=$1
1217+fi
1218+
1219+snap=
1220+if [ ! -z "$2" ] ; then
1221+ snap=$2
1222+fi
1223+
1224+model=pc
1225+arch=amd64
1226+image_name=ubuntu-core-16.img
1227+ubuntu_image_extra_args=
1228+
1229+if [ ! -z "$snap" ] ; then
1230+ ubuntu_image_extra_args="--extra-snaps $snap"
1231+fi
1232+
1233+ubuntu-image \
1234+ --channel $channel \
1235+ -o $image_name \
1236+ --image-size 4G \
1237+ $ubuntu_image_extra_args \
1238+ $model.model
1239+
1240+kpartx -a $image_name
1241+sleep 0.5
1242+
1243+loop_path=`findfs LABEL=writable`
1244+tmp_mount=`mktemp -d`
1245+
1246+mount $loop_path $tmp_mount
1247+
1248+# Migrate all systemd units from core snap into the writable area. This
1249+# would be normally done on firstboot by the initramfs but we can't rely
1250+# on that because we are adding another file in there and that will
1251+# prevent the initramfs from transitioning any files.
1252+core_snap=$(find $tmp_mount/system-data/var/lib/snapd/snaps -name "core_*.snap")
1253+tmp_core=`mktemp -d`
1254+mount $core_snap $tmp_core
1255+mkdir -p $tmp_mount/system-data/etc/systemd
1256+cp -rav $tmp_core/etc/systemd/* \
1257+ $tmp_mount/system-data/etc/systemd/
1258+umount $tmp_core
1259+rm -rf $tmp_core
1260+
1261+# system-user assertion which gives us our test:test user we use to
1262+# log into the system
1263+mkdir -p $tmp_mount/system-data/var/lib/snapd/seed/assertions
1264+cp test-user.assertion $tmp_mount/system-data/var/lib/snapd/seed/assertions
1265+
1266+# Disable console-conf for the first boot
1267+mkdir -p $tmp_mount/system-data/var/lib/console-conf/
1268+touch $tmp_mount/system-data/var/lib/console-conf/complete
1269+
1270+# Create systemd service which is running on firstboot and sets up
1271+# various things for us.
1272+mkdir -p $tmp_mount/system-data/etc/systemd/system
1273+cat << 'EOF' > $tmp_mount/system-data/etc/systemd/system/devmode-firstboot.service
1274+[Unit]
1275+Description=Run devmode firstboot setup
1276+After=snapd.service snapd.socket
1277+
1278+[Service]
1279+Type=oneshot
1280+ExecStart=/writable/system-data/var/lib/devmode-firstboot/run.sh
1281+RemainAfterExit=yes
1282+TimeoutSec=3min
1283+EOF
1284+
1285+mkdir -p $tmp_mount/system-data/etc/systemd/system/multi-user.target.wants
1286+ln -sf /etc/systemd/system/devmode-firstboot.service \
1287+ $tmp_mount/system-data/etc/systemd/system/multi-user.target.wants/devmode-firstboot.service
1288+
1289+mkdir $tmp_mount/system-data/var/lib/devmode-firstboot
1290+cat << EOF > $tmp_mount/system-data/var/lib/devmode-firstboot/00-snapd-config.yaml
1291+network:
1292+ version: 2
1293+ ethernets:
1294+ eth0:
1295+ dhcp4: true
1296+EOF
1297+
1298+cat << 'EOF' > $tmp_mount/system-data/var/lib/devmode-firstboot/run.sh
1299+#!/bin/bash
1300+
1301+set -e
1302+
1303+# Don't start again if we're already done
1304+if [ -e /writable/system-data/var/lib/devmode-firstboot/complete ] ; then
1305+ exit 0
1306+fi
1307+
1308+echo "Start devmode-firstboot $(date -Iseconds --utc)"
1309+
1310+if [ "$(snap managed)" = "true" ]; then
1311+ echo "System already managed, exiting"
1312+ exit 0
1313+fi
1314+
1315+# no changes at all
1316+while ! snap changes ; do
1317+ echo "No changes yet, waiting"
1318+ sleep 1
1319+done
1320+
1321+while snap changes | grep -qE '(Do|Doing) .*Initialize system state' ; do
1322+ echo "Initialize system state is in progress, waiting"
1323+ sleep 1
1324+done
1325+
1326+if [ -n "$(snap known system-user)" ]; then
1327+ echo "Trying to create known user"
1328+ snap create-user --known --sudoer
1329+fi
1330+
1331+cp /writable/system-data/var/lib/devmode-firstboot/00-snapd-config.yaml /writable/system-data/etc/netplan
1332+
1333+# Enable console-conf again
1334+rm /writable/system-data/var/lib/console-conf/complete
1335+
1336+# Mark us done
1337+touch /writable/system-data/var/lib/devmode-firstboot/complete
1338+
1339+# Reboot the system as its now prepared for the user
1340+reboot
1341+EOF
1342+
1343+chmod +x $tmp_mount/system-data/var/lib/devmode-firstboot/run.sh
1344+
1345+umount $tmp_mount
1346+kpartx -d $image_name
1347+rm -rf $tmp_mount
1348diff --git a/tests/image/pc-model.json b/tests/image/pc-model.json
1349new file mode 100644
1350index 0000000..2eb1411
1351--- /dev/null
1352+++ b/tests/image/pc-model.json
1353@@ -0,0 +1,11 @@
1354+{
1355+ "type": "model",
1356+ "authority-id": "4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf",
1357+ "brand-id": "4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf",
1358+ "series": "16",
1359+ "model": "pc",
1360+ "architecture": "amd64",
1361+ "gadget": "pc",
1362+ "kernel": "pc-kernel",
1363+ "timestamp": "2016-09-09T08:27:36+00:00"
1364+}
1365diff --git a/tests/image/pc.model b/tests/image/pc.model
1366new file mode 100644
1367index 0000000..345b7e4
1368--- /dev/null
1369+++ b/tests/image/pc.model
1370@@ -0,0 +1,21 @@
1371+type: model
1372+authority-id: 4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf
1373+series: 16
1374+brand-id: 4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf
1375+model: pc
1376+architecture: amd64
1377+gadget: pc
1378+kernel: pc-kernel
1379+timestamp: 2016-09-09T08:27:36+00:00
1380+sign-key-sha3-384: a4qX7md6GQGNcZc_cmWPBStTq4RNCnGTzF-4usF5wFylQ-xZQej-SD6prx8Yl89O
1381+
1382+AcLBXAQAAQoABgUCWBBNTwAKCRAVoE002xqmOPH/EACWLf1UeZgICjNbzLI5bO/84LExS8iUjarG
1383+S7DRn8Ln5zu44pxz7UXJNjULgnU8yuKVPVWg0ij7DRvaj8tGxOMMAls1fjSRtEYR8oJFsI3jXDGw
1384+cLjvJG/crUxV8DgdZFlF02Kb5VtmNDXs1OE3zpPeniG19JYHaf2hDz4SRmWZe4c2MFrAt2UwI/VC
1385+o/209Fl3qA8p8x5EYOBycgHooHm3924NTF9mXbKSfLRgGS7YzmN4FXFyiGOTY6CRsp37XnkxGcA1
1386++lyZz1X97qT/fOGVUFqHDqUZmuCs5sC3+DNonytTgKt5+7S+V+Ai45HEayD5f4gS9uscnTMTwEEJ
1387+VgSZRU0My+iJwFlXHaGWQe9eC37YCZ3ahBxc2SpkFffXjYhEMtTtr1vDIYCAhbc2k8aa3hPE2GUg
1388+3pv8zs1AuZzSVX+Rp4ysMBqU23UUVP6Bmvr7ZD3E8aEUxE6O/BEA10Km5oZPqpmBfcEVO8a0yZjn
1389+YQxn4XzY1Nwq1d0sJIV7FEDsq9dXH9QCa4qsCH3KG3jHv32GapvLf8mpr6HSH+JmPM5kNeVugLVy
1390+/RUAFNu+Y4hqhpRNC8fc+UDkVBXsLDqHb5gfXnhbFIH8LvpVFR20SSkg9/Km5xC+7wcey0h8SD6/
1391+Eh70OPLxDkzitEn/1L/0V987dlJnhS4WpqrYfbHYwQ==
1392diff --git a/tests/image/test-user-assertion.json b/tests/image/test-user-assertion.json
1393new file mode 100644
1394index 0000000..81f6beb
1395--- /dev/null
1396+++ b/tests/image/test-user-assertion.json
1397@@ -0,0 +1,13 @@
1398+{
1399+ "type": "system-user",
1400+ "authority-id": "4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf",
1401+ "brand-id": "4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf",
1402+ "series": ["16"],
1403+ "models": ["pc"],
1404+ "name": "Default Test User",
1405+ "username": "test",
1406+ "email": "test@localhost",
1407+ "password": "$6$OCvKy4w/Ppxp7IvC$WPzWiIW.4y18h9htjbOuxLZ.sjQ5M2hoSiEu3FpMU0PMdHQuQdBOqvk8p6DMdS/R/nU/rXidClD23CbSkSgp30",
1408+ "since": "2016-10-24T07:12:10+00:00",
1409+ "until": "2017-10-24T07:12:10+00:00"
1410+}
1411diff --git a/tests/image/test-user.assertion b/tests/image/test-user.assertion
1412new file mode 100644
1413index 0000000..7ebb667
1414--- /dev/null
1415+++ b/tests/image/test-user.assertion
1416@@ -0,0 +1,25 @@
1417+type: system-user
1418+authority-id: 4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf
1419+brand-id: 4BKZlf4WMNBKgQfij0rftmp5BzDdVhlf
1420+email: test@localhost
1421+models:
1422+ - pc
1423+name: Default Test User
1424+password: $6$OCvKy4w/Ppxp7IvC$WPzWiIW.4y18h9htjbOuxLZ.sjQ5M2hoSiEu3FpMU0PMdHQuQdBOqvk8p6DMdS/R/nU/rXidClD23CbSkSgp30
1425+series:
1426+ - 16
1427+since: 2016-10-24T07:12:10+00:00
1428+until: 2017-10-24T07:12:10+00:00
1429+username: test
1430+sign-key-sha3-384: a4qX7md6GQGNcZc_cmWPBStTq4RNCnGTzF-4usF5wFylQ-xZQej-SD6prx8Yl89O
1431+
1432+AcLBXAQAAQoABgUCWBBOJAAKCRAVoE002xqmOKaRD/0cEKWb2nbwhk+BTgOrYZHrwzjbIWTZznDh
1433+xCD6JWF/yr9br1vEmRz2zCNPPWZgFH9HaJ+mT/lktWIs7VVMIdwMDWYOR8P9rdWM/Jx6iyB3z0OI
1434+YO31zaU4XLyolv/YSj/nFXMMD+jIeE4l8j4AtCSJwd7ZS9Jz8F/RfrD8EpG0JU1F55lq8MC0mjZ4
1435+ul5ws8k9UiP8nA5IAG30NvvReiUGYqtdkO43eQmy88WABL95MbFsbfEk4/VduG0Gt3y/T8vDDcF6
1436+NJEm8L+O9IXnPBAje0Ve0NX3YtOE3CDTkYRKR7xFFJq2cJVCSvf9CsorREg4KyfagIdMKDSa5Tiq
1437+FzoAJTfI0ltq5cAnLImtxFKulJ+AnGUNMLrKFr1H0FGtqTZBfs/PcIxy0qY0YDXSF4/9F2PUBdQS
1438+tSmN6pT9t1FCGy2Rf5n3QV4e0R2JzS6Kx+vdbPMYqhssQosLU5GwlWj8UbevtphAGf8u8nLBDYWs
1439+MNIPi0IrPmzIewZBD05A6a8T+oHZ9dIg5SAnJ4gmz0sCzNDKarvYqLpcU1rZzu78/UypbHXDvBAt
1440+gnxYpD6WHR2aHSeyx3WvOp130jFco2/55M0RTEm50isO1uv2DqTn9ULkBdCrG/zOqEmZgY18ds3P
1441+yTaAbaIAqUe7scpAHY0a31tfnXq8cRyEX03e9g2Mrg==
1442diff --git a/tests/lib/prepare-all.sh b/tests/lib/prepare-all.sh
1443new file mode 100644
1444index 0000000..e53efb4
1445--- /dev/null
1446+++ b/tests/lib/prepare-all.sh
1447@@ -0,0 +1,35 @@
1448+#!/bin/bash
1449+
1450+# We don't have to build a snap when we should use one from a
1451+# channel
1452+if [ -n "$SNAP_CHANNEL" ] ; then
1453+ exit 0
1454+fi
1455+
1456+# Setup classic snap and build the pulseaudio snap in there
1457+snap install --devmode --beta classic
1458+cat <<-EOF > /home/test/build-snap.sh
1459+#!/bin/sh
1460+set -ex
1461+
1462+# FIXME: Enable propose for now until problems with conflicting systemd
1463+# packages between the Ubuntu Core image ppa and the archive are fixed.
1464+echo "deb http://archive.ubuntu.com/ubuntu/ xenial-proposed restricted main universe" > /etc/apt/sources.list.d/ubuntu-proposed.list
1465+
1466+# Ensure we have the latest updates installed as the core snap
1467+# may be a bit out of date.
1468+apt update
1469+apt upgrade --yes --force-yes
1470+
1471+apt install -y --force-yes snapcraft
1472+cd /home/pulseaudio
1473+snapcraft clean
1474+snapcraft
1475+EOF
1476+
1477+chmod +x /home/test/build-snap.sh
1478+sudo classic /home/test/build-snap.sh
1479+snap remove classic
1480+
1481+# Make sure we have a snap build
1482+test -e /home/pulseaudio/pulseaudio_*_amd64.snap
1483diff --git a/tests/lib/prepare-each.sh b/tests/lib/prepare-each.sh
1484new file mode 100644
1485index 0000000..de6816d
1486--- /dev/null
1487+++ b/tests/lib/prepare-each.sh
1488@@ -0,0 +1,6 @@
1489+SNAP_INSTALL_OPTS=
1490+if [ -n "$SNAP_CHANNEL" ] ; then
1491+ SNAP_INSTALL_OPTS="--$SNAP_CHANNEL"
1492+fi
1493+
1494+snap install $SNAP_INSTALL_OPTS $SNAP_NAME
1495diff --git a/tests/lib/prepare.sh b/tests/lib/prepare.sh
1496new file mode 100644
1497index 0000000..60a45e9
1498--- /dev/null
1499+++ b/tests/lib/prepare.sh
1500@@ -0,0 +1,51 @@
1501+#!/bin/bash
1502+
1503+echo "Wait for firstboot change to be ready"
1504+while ! snap changes | grep -q "Done"; do
1505+ snap changes || true
1506+ snap change 1 || true
1507+ sleep 1
1508+done
1509+
1510+echo "Ensure fundamental snaps are still present"
1511+. $TESTSLIB/snap-names.sh
1512+for name in $gadget_name $kernel_name $core_name; do
1513+ if ! snap list | grep -q $name ; then
1514+ echo "Not all fundamental snaps are available, all-snap image not valid"
1515+ echo "Currently installed snaps:"
1516+ snap list
1517+ exit 1
1518+ fi
1519+done
1520+
1521+echo "Kernel has a store revision"
1522+snap list | grep ^${kernel_name} | grep -E " [0-9]+\s+canonical"
1523+
1524+# If we don't install pulseaudio here we get a system
1525+# without any network connectivity after reboot.
1526+if [ -n "$SNAP_CHANNEL" ] ; then
1527+ # Don't reinstall if we have it installed already
1528+ if ! snap list | grep pulseaudio ; then
1529+ snap install --$SNAP_CHANNEL pulseaudio
1530+ fi
1531+ echo "USING-CHANNEL"
1532+else
1533+ echo "INSTALLING-PULSEAUDIO-SNAP"
1534+ # Install prebuilt pulseaudio snap but first install if from
1535+ # the store to work around the fact that we are not allowed
1536+ # anymore to connect pulseaudio slot to a snap installed with
1537+ # --dangerous
1538+ snap install --beta pulseaudio
1539+ snap install --dangerous /home/pulseaudio/pulseaudio_*_amd64.snap
1540+fi
1541+
1542+# Snapshot of the current snapd state for a later restore
1543+if [ ! -f $SPREAD_PATH/snapd-state.tar.gz ] ; then
1544+ systemctl stop snapd.service snapd.socket
1545+ tar czf $SPREAD_PATH/snapd-state.tar.gz /var/lib/snapd
1546+ systemctl start snapd.socket
1547+fi
1548+
1549+# For debugging dump all snaps and connected slots/plugs
1550+snap list
1551+snap interfaces
1552diff --git a/tests/lib/restore-each.sh b/tests/lib/restore-each.sh
1553new file mode 100644
1554index 0000000..541ba8c
1555--- /dev/null
1556+++ b/tests/lib/restore-each.sh
1557@@ -0,0 +1,22 @@
1558+#!/bin/bash
1559+
1560+. $TESTSLIB/snap-names.sh
1561+
1562+# Remove all snaps not being the core, gadget, kernel or snap we're testing
1563+for snap in /snap/*; do
1564+ snap="${snap:6}"
1565+ case "$snap" in
1566+ "bin" | "$gadget_name" | "$kernel_name" | "$core_name" | "$SNAP_NAME")
1567+ ;;
1568+ *)
1569+ snap remove "$snap"
1570+ ;;
1571+ esac
1572+done
1573+
1574+# Ensure we have the same state for snapd as we had before
1575+systemctl stop snapd.service snapd.socket
1576+rm -rf /var/lib/snapd/*
1577+tar xzf $SPREAD_PATH/snapd-state.tar.gz -C /
1578+rm -rf /root/.snap
1579+systemctl start snapd.service snapd.socket
1580diff --git a/tests/lib/snap-names.sh b/tests/lib/snap-names.sh
1581new file mode 100644
1582index 0000000..f15b09a
1583--- /dev/null
1584+++ b/tests/lib/snap-names.sh
1585@@ -0,0 +1,7 @@
1586+#!/bin/bash
1587+gadget_name=$(snap list | sed -n 's/^\(pc\|pi[23]\|dragonboard\) .*/\1/p')
1588+kernel_name=$gadget_name-kernel
1589+core_name=$(snap list | awk '/^(ubuntu-)?core / {print $1; exit}')
1590+if [ "$kernel_name" = "pi3-kernel" ] ; then
1591+ kernel_name=pi2-kernel
1592+fi
1593diff --git a/tests/lib/utilities.sh b/tests/lib/utilities.sh
1594new file mode 100644
1595index 0000000..977d045
1596--- /dev/null
1597+++ b/tests/lib/utilities.sh
1598@@ -0,0 +1,9 @@
1599+#!/bin/sh
1600+
1601+wait_for_pulseaudio() {
1602+ while ! systemctl status snap.pulseaudio.pulseaudio ; do
1603+ sleep 1
1604+ done
1605+ sleep 1
1606+}
1607+
1608diff --git a/tests/main/installation/task.yaml b/tests/main/installation/task.yaml
1609new file mode 100644
1610index 0000000..2d9fb0d
1611--- /dev/null
1612+++ b/tests/main/installation/task.yaml
1613@@ -0,0 +1,16 @@
1614+summary: Test pulseaudio snap installation was successful
1615+
1616+execute: |
1617+ . $TESTSLIB/utilities.sh
1618+
1619+ # Service should be up an running
1620+ wait_for_pulseaudio
1621+ systemctl status snap.pulseaudio.pulseaudio | grep -Pzq ': active'
1622+
1623+ # pactl should be able to reach PulseAudio
1624+ /snap/bin/pulseaudio.pactl list | grep -Pzq 'Module'
1625+
1626+ # Ensure all necessary plugs/slots are connected
1627+ snap interfaces | grep -Pzq "pulseaudio:service +pulseaudio:client"
1628+ snap interfaces | grep -P "\-\ +pulseaudio:home"
1629+
1630diff --git a/tests/main/modules-loaded/task.yaml b/tests/main/modules-loaded/task.yaml
1631new file mode 100644
1632index 0000000..e9ee7dd
1633--- /dev/null
1634+++ b/tests/main/modules-loaded/task.yaml
1635@@ -0,0 +1,11 @@
1636+summary: Test for common PuleAudio modules being loaded
1637+
1638+execute: |
1639+ # Check for some obvious PulseAudio modules
1640+ /snap/bin/pulseaudio.pactl list short | grep -Pzq 'module-device-restore'
1641+ /snap/bin/pulseaudio.pactl list short | grep -Pzq 'module-stream-restore'
1642+ /snap/bin/pulseaudio.pactl list short | grep -Pzq 'module-card-restore'
1643+ /snap/bin/pulseaudio.pactl list short | grep -Pzq 'module-switch-on-port-available'
1644+ /snap/bin/pulseaudio.pactl list short | grep -Pzq 'module-rescue-streams'
1645+ /snap/bin/pulseaudio.pactl list short | grep -Pzq 'module-suspend-on-idle'
1646+
1647diff --git a/tests/main/pactl/task.yaml b/tests/main/pactl/task.yaml
1648new file mode 100644
1649index 0000000..01f93d0
1650--- /dev/null
1651+++ b/tests/main/pactl/task.yaml
1652@@ -0,0 +1,6 @@
1653+summary: Test pactl is working
1654+
1655+execute: |
1656+ # Does it even work?
1657+ /snap/bin/pulseaudio.pactl info | grep -Pzq 'Server Name: pulseaudio'
1658+

Subscribers

People subscribed via source and target branches

to all changes: