blob: b7e9cd8c5c7305fa94527d7a14eb29e41c94e5ca [file] [log] [blame]
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