| 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 |
| |