From eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 Mon Sep 17 00:00:00 2001 From: Dave Cobbley Date: Tue, 14 Aug 2018 10:05:37 -0700 Subject: [Subtree] Removing import-layers directory As part of the move to subtrees, need to bring all the import layers content to the top level. Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f Signed-off-by: Dave Cobbley Signed-off-by: Brad Bishop --- .../recipes-multimedia/pulseaudio/pulseaudio.inc | 272 +++++++++++++++++++++ ...-client-conf-Add-allow-autospawn-for-root.patch | 97 ++++++++ ...ers-only-define-memfd_create-if-not-alrea.patch | 66 +++++ .../0001-padsp-Make-it-compile-on-musl.patch | 70 ++++++ .../pulseaudio/pulseaudio/volatiles.04_pulse | 2 + .../pulseaudio/pulseaudio_11.1.bb | 15 ++ 6 files changed, 522 insertions(+) create mode 100644 poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc create mode 100644 poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch create mode 100644 poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch create mode 100644 poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch create mode 100644 poky/meta/recipes-multimedia/pulseaudio/pulseaudio/volatiles.04_pulse create mode 100644 poky/meta/recipes-multimedia/pulseaudio/pulseaudio_11.1.bb (limited to 'poky/meta/recipes-multimedia/pulseaudio') diff --git a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc new file mode 100644 index 000000000..8189a569e --- /dev/null +++ b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc @@ -0,0 +1,272 @@ +SUMMARY = "Sound server for Linux and Unix-like operating systems" +HOMEPAGE = "http://www.pulseaudio.org" +AUTHOR = "Lennart Poettering" +SECTION = "libs/multimedia" + +# Most of PulseAudio code is under LGPLv2.1+. There are a few exceptions: +# +# The "adrian" echo canceller variant has code under a non-standard permissive +# license. See src/modules/echo-cancel/adrian-license.txt for details. This +# recipe disables the adrian echo canceller to avoid hassle with the unusual +# license. +# +# The src/modules/reserve* and src/pulsecore/rtkit* files are under the MIT +# license. +# +# The src/pulsecore/filter/ directory contains code under the 3-clause BSD +# license. +# +# src/utils/qpaeq is licensed under AGPL. qpaeq is not installed by this +# recipe, however, which is why AGPL is not mentioned in LICENSE. +# +# People who distribute PulseAudio binaries need to also consider that there +# are some dependencies to GPL libraries. LGPL code that depends on GPL +# libraries probably becomes effectively GPL-licensed (at compile-time? or at +# at link-time?). I'm not a lawyer, though, so I'm not sure of the exact +# implications. The GPL dependencies only affect the server, not the client +# library, with the exception of libdbus that affects both. These are the GPL +# library dependencies: +# +# One of the resampler implementations uses libsamplerate. This recipe doesn't +# enable that resampler, however. +# +# One of the database implementations uses gdbm. This recipe doesn't enable +# that database implementation, however. +# +# module-lirc (enabled by PACKAGECONFIG[lirc]) uses LIRC. +# +# module-equalizer-sink uses FFTW. This recipe disables that, however. +# +# The dependency with the most complicated licensing considerations is libdbus. +# When PACKAGECONFIG[dbus] is enabled (like it is by default), libdbus will be +# used by both the server and the client library (libpulse). Does this affect +# applications that use libpulse? It should be also noted that libdbus is +# dual-licensed: either GPLv2+ or AFL-2 terms apply. Whose decision is it which +# of the licenses apply? What a mess. Some people hold the view that libdbus is +# a system library that is covered by the "special exception" in GPLv2's +# section 3, and therefore libdbus's GPL license doesn't affect PulseAudio. +LICENSE = "LGPLv2.1+ & MIT & BSD-3-Clause" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=a848e8d03f04976778eab2348b59ed2b \ + file://GPL;md5=4325afd396febcb659c36b49533135d4 \ + file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \ + file://AGPL;md5=73f1eb20517c55bf9493b7dd6e480788 \ + file://src/modules/echo-cancel/adrian-license.txt;md5=abbab006a561fbffccedf1c3531f34ab \ + file://src/pulsecore/filter/LICENSE.WEBKIT;md5=49defbaffddf8c51faf606ff7fc3b1f7 \ + file://src/pulsecore/resampler.h;beginline=4;endline=21;md5=09794012ae16912c0270f3280cc8ff84 \ + file://src/modules/reserve.h;beginline=6;endline=28;md5=0e23094760367d51b6609750e9b31fbb \ + file://src/pulsecore/rtkit.h;beginline=6;endline=29;md5=3f00ff966716ae0817c31576d1473528 \ + file://src/utils/qpaeq;beginline=2;endline=16;md5=7f62515a4762f0c3fc3d4201858bb964 \ + file://src/modules/echo-cancel/adrian-aec.h;beginline=3;endline=12;md5=d3ed4fad1c073f8b06f37495dc5d1026 \ + file://src/pulsecore/filter/biquad.h;beginline=1;endline=4;md5=6d46d1365206528a20137355924233c1 \ +" + +DEPENDS = "libatomic-ops libsndfile1 libtool intltool-native" +# optional +DEPENDS += "udev alsa-lib glib-2.0 gconf" +DEPENDS += "speexdsp libxml-parser-perl-native libcap" + +inherit autotools bash-completion pkgconfig useradd gettext perlnative bluetooth systemd manpages + +# *.desktop rules wont be generated during configure and build will fail +# if using --disable-nls +USE_NLS = "yes" + +EXTRA_OECONF = "\ + --disable-hal-compat \ + --disable-orc \ + --enable-tcpwrap=no \ + --with-access-group=audio \ + --disable-openssl \ + --with-database=simple \ + --without-zsh-completion-dir \ + --with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d \ + ac_cv_header_valgrind_memcheck_h=no \ + --disable-tests \ +" + +# soxr (the SoX Resampler library) doesn't seem to be currently packaged in +# oe-core nor meta-oe, so let's not add a PACKAGECONFIG entry for it for now. +EXTRA_OECONF += "--without-soxr" + +# The FFTW dependency (for module-equalizer-sink) was removed in commit +# ddbd713293 without explaining why it was not made a PACKAGECONFIG item +# instead. Oh well, let's keep it disabled until someone expresses some +# interest in having it enabled. +# +# One nice thing about disabling this is that it also prevents qpaeq from +# being installed, so we avoid adding AGPL to the list of licenses (nothing +# else in PulseAudio is licensed under AGPL). +EXTRA_OECONF += "--without-fftw" + +# The "adrian" echo canceller implementation has a non-standard license +# (src/modules/echo-cancel/adrian-license.txt). It's a permissive license, so +# the licensing terms are probably not problematic, but it would be an extra +# hassle to add the license to OE-Core's set of licenses. The canceller isn't +# very good anyway, better alternatives exist (such as the webrtc canceller). +EXTRA_OECONF += "--disable-adrian-aec" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', '3g', 'ofono', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd x11', d)} \ + dbus \ + " + +PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus" +PACKAGECONFIG[bluez4] = "--enable-bluez4,--disable-bluez4,bluez4 sbc" +PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5 sbc" +PACKAGECONFIG[ofono] = "--enable-bluez5-ofono-headset,--disable-bluez5-ofono-headset,ofono" +PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3" +PACKAGECONFIG[systemd] = "--enable-systemd-daemon --enable-systemd-login --enable-systemd-journal --with-systemduserunitdir=${systemd_user_unitdir},--disable-systemd-daemon --disable-systemd-login --disable-systemd-journal,systemd" +PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxtst libice libsm libxcb" +PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" +PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" +# Since many embedded systems don't have non-root users, it's useful to be +# able to use pulseaudio autospawn for root as well. +PACKAGECONFIG[autospawn-for-root] = ",,," +PACKAGECONFIG[lirc] = "--enable-lirc,--disable-lirc,lirc" +PACKAGECONFIG[webrtc] = "--enable-webrtc-aec,--disable-webrtc-aec,webrtc-audio-processing" +PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," +PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, " + +EXTRA_OECONF_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}" +EXTRA_OECONF_append_armeb = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}" + + +export TARGET_PFPU = "${TARGET_FPU}" + +# TODO: Use more fine granular version +#OE_LT_RPATH_ALLOW=":${libdir}/pulse-0.9:" +OE_LT_RPATH_ALLOW = "any" +OE_LT_RPATH_ALLOW[export]="1" + +set_cfg_value () { + sed -i -e "s/\(; *\)\?$2 =.*/$2 = $3/" "$1" + if ! grep -q "^$2 = $3\$" "$1"; then + die "Use of sed to set '$2' to '$3' in '$1' failed" + fi +} + +do_compile_append () { + if ${@bb.utils.contains('PACKAGECONFIG', 'autospawn-for-root', 'true', 'false', d)}; then + set_cfg_value src/client.conf allow-autospawn-for-root yes + fi +} + +do_install_append() { + install -d ${D}${sysconfdir}/default/volatiles + install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/volatiles.04_pulse +} + +USERADD_PACKAGES = "pulseaudio-server" +GROUPADD_PARAM_pulseaudio-server = "--system pulse" +USERADD_PARAM_pulseaudio-server = "--system --home /var/run/pulse \ + --no-create-home --shell /bin/false \ + --groups audio,pulse --gid pulse pulse" + +# The console-kit module is included here explicitly so bitbake can map to the +# RDEPENDS we define for it in this recipe, and thereby ensure that when +# adding the console-kit module to an image, we also get the necessary +# consolekit package produced. +PACKAGES =+ "libpulsecore libpulsecommon libpulse libpulse-simple libpulse-mainloop-glib \ + pulseaudio-server pulseaudio-misc ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'pulseaudio-module-console-kit', '', d)}" + +#upgrade path: +RREPLACES_pulseaudio-server = "libpulse-bin libpulse-conf" + +PACKAGES_DYNAMIC += "^pulseaudio-lib-.* ^pulseaudio-module-.*" + +FILES_libpulsecore = "${libdir}/pulseaudio/libpulsecore*.so" +FILES_libpulsecommon = "${libdir}/pulseaudio/libpulsecommon*.so" + +# client.conf configures the behaviour of libpulse, so it belongs in the same +# package. +FILES_libpulse = "${libdir}/libpulse.so.* ${sysconfdir}/pulse/client.conf" + +FILES_libpulse-simple = "${libdir}/libpulse-simple.so.*" +FILES_libpulse-mainloop-glib = "${libdir}/libpulse-mainloop-glib.so.*" + +FILES_${PN}-dev += "${libdir}/pulse-${PV}/modules/*.la ${datadir}/vala ${libdir}/cmake" +FILES_${PN}-conf = "${sysconfdir}" +FILES_${PN}-bin += "${sysconfdir}/default/volatiles/volatiles.04_pulse" +FILES_${PN}-server = "${bindir}/pulseaudio ${bindir}/start-* ${sysconfdir} ${bindir}/pactl */udev/rules.d/*.rules */*/udev/rules.d/*.rules ${systemd_user_unitdir}/*" + +#SYSTEMD_PACKAGES = "${PN}-server" +SYSTEMD_SERVICE_${PN}-server = "pulseaudio.service" + +FILES_${PN}-misc = "${bindir}/* ${libdir}/pulseaudio/libpulsedsp.so" + +# Allow the pulseaudio package to be created empty as a placeholder (-dbg and -dev depend on it) +ALLOW_EMPTY_${PN} = "1" + +CONFFILES_libpulse = "${sysconfdir}/pulse/client.conf" + +CONFFILES_pulseaudio-server = "\ + ${sysconfdir}/pulse/default.pa \ + ${sysconfdir}/pulse/daemon.conf \ + ${sysconfdir}/pulse/system.pa \ + " + +pkg_postinst_${PN}-server() { + if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ] ; then + ${sysconfdir}/init.d/populate-volatile.sh update + fi +} + +python populate_packages_prepend() { + #d.setVar('PKG_pulseaudio', 'pulseaudio') + + plugindir = d.expand('${libdir}/pulse-${PV}/modules/') + do_split_packages(d, plugindir, '^module-(.*)\.so$', 'pulseaudio-module-%s', 'PulseAudio module for %s', extra_depends='', prepend=True) + do_split_packages(d, plugindir, '^lib(.*)\.so$', 'pulseaudio-lib-%s', 'PulseAudio library for %s', extra_depends='', prepend=True) +} + +RDEPENDS_pulseaudio-server = " \ + pulseaudio-module-filter-apply \ + pulseaudio-module-filter-heuristics \ + pulseaudio-module-udev-detect \ + pulseaudio-module-null-sink \ + pulseaudio-module-device-restore \ + pulseaudio-module-stream-restore \ + pulseaudio-module-card-restore \ + pulseaudio-module-augment-properties \ + pulseaudio-module-detect \ + pulseaudio-module-alsa-sink \ + pulseaudio-module-alsa-source \ + pulseaudio-module-alsa-card \ + pulseaudio-module-native-protocol-unix \ + pulseaudio-module-default-device-restore \ + pulseaudio-module-intended-roles \ + pulseaudio-module-rescue-streams \ + pulseaudio-module-always-sink \ + pulseaudio-module-suspend-on-idle \ + pulseaudio-module-position-event-sounds \ + pulseaudio-module-role-cork \ + pulseaudio-module-switch-on-port-available" + +# If the server is installed, it's usually desirable to make ALSA applications +# use PulseAudio. alsa-plugins-pulseaudio-conf will install the configuration +# that makes the PulseAudio plugin the default ALSA device. +RDEPENDS_pulseaudio-server += "alsa-plugins-pulseaudio-conf" + +# pulseaudio-module-console-kit is built whenever dbus is enabled by PACKAGECONFIG +# but consolekit depends on libx11 and is available only for DISTRO with x11 in DISTRO_FEATURES +RDEPENDS_pulseaudio-module-console-kit =+ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d)}" +RDEPENDS_pulseaudio-misc += "pulseaudio-module-cli-protocol-unix" + +FILES_pulseaudio-module-gconf += "${libexecdir}/pulse/gconf-helper" +FILES_pulseaudio-module-alsa-card += "${datadir}/pulseaudio/alsa-mixer" + +# The console-kit module is good to have on X11 systems (it keeps PulseAudio +# running for the duration of the user login session). The device-manager and +# x11-* modules are referenced from the start-pulseaudio-x11 script, so those +# modules must be installed when X11 is enabled. +RDEPENDS_pulseaudio-server += "\ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '\ + pulseaudio-module-console-kit \ + pulseaudio-module-device-manager \ + pulseaudio-module-x11-cork-request \ + pulseaudio-module-x11-publish \ + pulseaudio-module-x11-xsmp \ + ', '', d)}" diff --git a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch new file mode 100644 index 000000000..33f7709ae --- /dev/null +++ b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch @@ -0,0 +1,97 @@ +From babec3a50dd710d26b72f6c6d43bd79b04e954a6 Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen +Date: Tue, 28 Apr 2015 14:32:43 +0300 +Subject: [PATCH] client-conf: Add allow-autospawn-for-root + +Usually autospawning for root is a bad idea, since it can easily +interfere with other users' PulseAudio instances, but in embedded +environments where only root exists, autospawning is fine. + +Upstream-Status: Denied [Upstream hasn't so far been convinced that +this feature is needed. The view is that running the graphical session +as root doesn't make sense even on embedded systems, or if it does, +running PulseAudio in the system mode should be a good solution for +that use case. If someone can prove otherwise, the patch would +probably be accepted.] + +Signed-off-by: Tanu Kaskinen +--- + man/pulse-client.conf.5.xml.in | 9 +++++++++ + src/pulse/client-conf.c | 1 + + src/pulse/client-conf.h | 1 + + src/pulse/client.conf.in | 1 + + src/pulse/context.c | 2 +- + 5 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in +index b88898c..e737c96 100644 +--- a/man/pulse-client.conf.5.xml.in ++++ b/man/pulse-client.conf.5.xml.in +@@ -82,6 +82,15 @@ License along with PulseAudio; if not, see . + + + ++ ++