add pulseaudio

This commit is contained in:
Huang Xin 2022-05-15 01:18:20 -07:00
parent 01cddbf28a
commit ab259947c7
6 changed files with 576 additions and 0 deletions

View File

@ -0,0 +1,271 @@
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.
#
# 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=0e5cd938de1a7a53ea5adac38cc10c39 \
file://GPL;md5=4325afd396febcb659c36b49533135d4 \
file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
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/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"
DEPENDS += "speexdsp libxml-parser-perl-native libcap"
inherit autotools pkgconfig gettext systemd
# *.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 \
--disable-running-from-build-tree \
"
# 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.
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 gsettings \
"
PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
PACKAGECONFIG[bluez4] = "--enable-bluez4,--disable-bluez4,bluez4 sbc"
PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5 sbc"
PACKAGECONFIG[gconf] = "--enable-gconf,--disable-gconf,gconf"
PACKAGECONFIG[gsettings] = "--enable-gsettings,--disable-gsettings,glib-2.0-native glib-2.0"
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)
FILES_${PN} = ""
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() {
plugindir = d.expand('${libdir}/pulse-${PV}/modules/')
do_split_packages(d, plugindir, r'^module-(.*)\.so$', '${PN}-module-%s', 'PulseAudio module for %s', extra_depends='', prepend=True)
do_split_packages(d, plugindir, r'^lib(.*)\.so$', '${PN}-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_${PN}-module-alsa-card += "${datadir}/pulseaudio/alsa-mixer"
FILES_${PN}-module-gconf += "${libexecdir}/pulse/gconf-helper"
GSETTINGS_PACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'gsettings', '${PN}-module-gsettings', '', d)}"
FILES_${PN}-module-gsettings += "${libexecdir}/pulse/gsettings-helper ${datadir}/GConf/gsettings ${datadir}/glib-2.0/schemas"
# 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)}"
INSANE_SKIP_${PN} += "installed-vs-shipped"

View File

@ -0,0 +1,97 @@
From babec3a50dd710d26b72f6c6d43bd79b04e954a6 Mon Sep 17 00:00:00 2001
From: Tanu Kaskinen <tanu.kaskinen@linux.intel.com>
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 <tanu.kaskinen@linux.intel.com>
---
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 <http://www.gnu.org/licenses/>.
</option>
<option>
+ <p><opt>allow-autospawn-for-root=</opt> Allow autospawning also for root.
+ Takes a boolean value, defaults to <opt>no</opt>. If the <opt>autospawn
+ </opt> option is disabled, this option has no effect. Autospawning for
+ root is disabled by default, because running PulseAudio as root will
+ interfere with regular users' PulseAudio instances. This option should be
+ enabled only in environments where there are no regular users at all.</p>
+ </option>
+
+ <option>
<p><opt>daemon-binary=</opt> Path to the PulseAudio daemon to
run when autospawning. Defaults to a path configured at compile
time.</p>
diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c
index a3c9486..9f68ee5 100644
--- a/src/pulse/client-conf.c
+++ b/src/pulse/client-conf.c
@@ -138,6 +138,7 @@ void pa_client_conf_load(pa_client_conf *c, bool load_from_x11, bool load_from_e
{ "default-server", pa_config_parse_string, &c->default_server, NULL },
{ "default-dbus-server", pa_config_parse_string, &c->default_dbus_server, NULL },
{ "autospawn", pa_config_parse_bool, &c->autospawn, NULL },
+ { "allow-autospawn-for-root", pa_config_parse_bool, &c->allow_autospawn_for_root, NULL },
{ "cookie-file", pa_config_parse_string, &c->cookie_file_from_client_conf, NULL },
{ "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
{ "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL },
diff --git a/src/pulse/client-conf.h b/src/pulse/client-conf.h
index 7691ec7..19db7ed 100644
--- a/src/pulse/client-conf.h
+++ b/src/pulse/client-conf.h
@@ -38,6 +38,7 @@ typedef struct pa_client_conf {
char *cookie_file_from_application;
char *cookie_file_from_client_conf;
bool autospawn, disable_shm, disable_memfd, auto_connect_localhost, auto_connect_display;
+ bool allow_autospawn_for_root;
size_t shm_size;
} pa_client_conf;
diff --git a/src/pulse/client.conf.in b/src/pulse/client.conf.in
index 26b7790..69830ef 100644
--- a/src/pulse/client.conf.in
+++ b/src/pulse/client.conf.in
@@ -23,6 +23,7 @@
; default-dbus-server =
; autospawn = yes
+; allow-autospawn-for-root = no
; daemon-binary = @PA_BINARY@
; extra-arguments = --log-target=syslog
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 69be5f4..d6e13e8 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -1027,7 +1027,7 @@ int pa_context_connect(
if (!(flags & PA_CONTEXT_NOAUTOSPAWN) && c->conf->autospawn) {
#ifdef HAVE_GETUID
- if (getuid() == 0)
+ if (!c->conf->allow_autospawn_for_root && getuid() == 0)
pa_log_debug("Not doing autospawn since we are root.");
else {
c->do_autospawn = true;
--
2.8.1

View File

@ -0,0 +1,161 @@
From 36feb98e568221e24286615730888d5f6ff323f0 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 7 Dec 2018 15:12:38 +0800
Subject: [PATCH] introduce a special build flag to explicitly disables running
from build tree
It is helpful to improve reproducibility build [1] since
PA_SRCDIR/PA_BUILDDIR contains build path, disable running
from build tree could drop these macros at precompilation.
[1] https://reproducible-builds.org/
Upstream-Status: Submitted [pulseaudio-discuss@lists.freedesktop.org]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Acked-by: Tanu Kaskinen <tanuk@iki.fi>
---
configure.ac | 10 ++++++++++
src/daemon/daemon-conf.c | 4 +++-
src/daemon/main.c | 6 ++++++
src/modules/alsa/alsa-mixer.c | 4 ++++
src/modules/gconf/module-gconf.c | 2 +-
src/modules/gsettings/module-gsettings.c | 2 +-
src/pulsecore/core-util.c | 4 +++-
7 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index c9c414f..8b345ef 100644
--- a/configure.ac
+++ b/configure.ac
@@ -998,6 +998,16 @@ AS_IF([test "x$enable_asyncns" = "xyes" && test "x$HAVE_LIBASYNCNS" = "x0"],
AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1])
AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?]))
+#### Running from build tree (optional) ####
+
+AC_ARG_ENABLE([running-from-build-tree],
+ AS_HELP_STRING([--disable-running-from-build-tree],[Disable running from build tree]))
+
+AS_IF([test "x$enable_running_from_build_tree" != "xno"],
+ AC_DEFINE([HAVE_RUNNING_FROM_BUILD_TREE], 1, [Have running from build tree]))
+
+AC_SUBST(HAVE_RUNNING_FROM_BUILD_TREE)
+
#### TCP wrappers (optional) ####
AC_ARG_ENABLE([tcpwrap],
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index 9883126..f01eff4 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -155,12 +155,14 @@ pa_daemon_conf *pa_daemon_conf_new(void) {
c->dl_search_path = pa_sprintf_malloc("%s" PA_PATH_SEP "lib" PA_PATH_SEP "pulse-%d.%d" PA_PATH_SEP "modules",
pa_win32_get_toplevel(NULL), PA_MAJOR, PA_MINOR);
#else
+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
if (pa_run_from_build_tree()) {
pa_log_notice("Detected that we are run from the build tree, fixing search path.");
c->dl_search_path = pa_xstrdup(PA_BUILDDIR);
} else
- c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
#endif
+ c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
+#endif //Endof #ifdef OS_IS_WIN32
return c;
}
diff --git a/src/daemon/main.c b/src/daemon/main.c
index c80fa94..1e00388 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -932,6 +932,12 @@ int main(int argc, char *argv[]) {
pa_log_debug("Running in VM: %s", pa_yes_no(pa_running_in_vm()));
+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
+ pa_log_debug("Running from build tree: %s", pa_yes_no(pa_run_from_build_tree()));
+#else
+ pa_log_debug("Running from build tree: no");
+#endif
+
#ifdef __OPTIMIZE__
pa_log_debug("Optimized build: yes");
#else
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index a524d6d..670f646 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -2571,9 +2571,11 @@ static int path_verify(pa_alsa_path *p) {
}
static const char *get_default_paths_dir(void) {
+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
if (pa_run_from_build_tree())
return PA_SRCDIR "/modules/alsa/mixer/paths/";
else
+#endif
return PA_ALSA_PATHS_DIR;
}
@@ -4455,7 +4457,9 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel
fname = "default.conf";
fn = pa_maybe_prefix_path(fname,
+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
pa_run_from_build_tree() ? PA_SRCDIR "/modules/alsa/mixer/profile-sets/" :
+#endif
PA_ALSA_PROFILE_SETS_DIR);
r = pa_config_parse(fn, NULL, items, NULL, false, ps);
diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c
index c0f4dde..76a1f19 100644
--- a/src/modules/gconf/module-gconf.c
+++ b/src/modules/gconf/module-gconf.c
@@ -51,7 +51,7 @@ int pa__init(pa_module*m) {
u->buf_fill = 0;
if ((u->fd = pa_start_child_for_read(
-#if defined(__linux__) && !defined(__OPTIMIZE__)
+#if defined(__linux__) && defined(HAVE_RUNNING_FROM_BUILD_TREE)
pa_run_from_build_tree() ? PA_BUILDDIR "/gconf-helper" :
#endif
PA_GCONF_HELPER, NULL, &u->pid)) < 0)
diff --git a/src/modules/gsettings/module-gsettings.c b/src/modules/gsettings/module-gsettings.c
index 330eca1..209c857 100644
--- a/src/modules/gsettings/module-gsettings.c
+++ b/src/modules/gsettings/module-gsettings.c
@@ -51,7 +51,7 @@ int pa__init(pa_module*m) {
u->buf_fill = 0;
if ((u->fd = pa_start_child_for_read(
-#if defined(__linux__) && !defined(__OPTIMIZE__)
+#if defined(__linux__) && defined(HAVE_RUNNING_FROM_BUILD_TREE)
pa_run_from_build_tree() ? PA_BUILDDIR "/gsettings-helper" :
#endif
PA_GSETTINGS_HELPER, NULL, &u->pid)) < 0)
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 64e9f21..f85dd20 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -3436,15 +3436,17 @@ void pa_reset_personality(void) {
}
bool pa_run_from_build_tree(void) {
- char *rp;
static bool b = false;
+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
+ char *rp;
PA_ONCE_BEGIN {
if ((rp = pa_readlink("/proc/self/exe"))) {
b = pa_startswith(rp, PA_BUILDDIR);
pa_xfree(rp);
}
} PA_ONCE_END;
+#endif
return b;
}
--
2.7.4

View File

@ -0,0 +1,30 @@
From f0ddd7c36556ad05c1398fdd132947323ad26473 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Thu, 6 Dec 2018 11:43:41 +0800
Subject: [PATCH 2/2] do not display CLFAGS to improve reproducibility build
Macro PA_CFLAGS contains build path, do not use it to
display CFLAGS which could improve reproducibility build.
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
src/daemon/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/daemon/main.c b/src/daemon/main.c
index c80fa94..75496be 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -908,7 +908,7 @@ int main(int argc, char *argv[]) {
pa_log_info("This is PulseAudio %s", PACKAGE_VERSION);
pa_log_debug("Compilation host: %s", CANONICAL_HOST);
- pa_log_debug("Compilation CFLAGS: %s", PA_CFLAGS);
+ pa_log_debug("Compilation CFLAGS: ***");
#ifdef HAVE_LIBSAMPLERATE
pa_log_warn("Compiled with DEPRECATED libsamplerate support!");
--
2.7.4

View File

@ -0,0 +1,2 @@
# <type> <owner> <group> <mode> <path> <linksource>
d pulse pulse 0755 /var/run/pulse none

View File

@ -0,0 +1,15 @@
require pulseaudio.inc
SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
file://0001-client-conf-Add-allow-autospawn-for-root.patch \
file://0001-introduce-a-special-build-flag-to-explicitly-disable.patch \
file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
file://volatiles.04_pulse \
"
SRC_URI[md5sum] = "c42f1f1465e8df9859d023dc184734bf"
SRC_URI[sha256sum] = "809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055"
do_compile_prepend() {
mkdir -p ${S}/libltdl
cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl
}