Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame^] | 1 | From 36feb98e568221e24286615730888d5f6ff323f0 Mon Sep 17 00:00:00 2001 |
| 2 | From: Hongxu Jia <hongxu.jia@windriver.com> |
| 3 | Date: Fri, 7 Dec 2018 15:12:38 +0800 |
| 4 | Subject: [PATCH] introduce a special build flag to explicitly disables running |
| 5 | from build tree |
| 6 | |
| 7 | It is helpful to improve reproducibility build [1] since |
| 8 | PA_SRCDIR/PA_BUILDDIR contains build path, disable running |
| 9 | from build tree could drop these macros at precompilation. |
| 10 | |
| 11 | [1] https://reproducible-builds.org/ |
| 12 | |
| 13 | Upstream-Status: Submitted [pulseaudio-discuss@lists.freedesktop.org] |
| 14 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> |
| 15 | Acked-by: Tanu Kaskinen <tanuk@iki.fi> |
| 16 | --- |
| 17 | configure.ac | 10 ++++++++++ |
| 18 | src/daemon/daemon-conf.c | 4 +++- |
| 19 | src/daemon/main.c | 6 ++++++ |
| 20 | src/modules/alsa/alsa-mixer.c | 4 ++++ |
| 21 | src/modules/gconf/module-gconf.c | 2 +- |
| 22 | src/modules/gsettings/module-gsettings.c | 2 +- |
| 23 | src/pulsecore/core-util.c | 4 +++- |
| 24 | 7 files changed, 28 insertions(+), 4 deletions(-) |
| 25 | |
| 26 | diff --git a/configure.ac b/configure.ac |
| 27 | index c9c414f..8b345ef 100644 |
| 28 | --- a/configure.ac |
| 29 | +++ b/configure.ac |
| 30 | @@ -998,6 +998,16 @@ AS_IF([test "x$enable_asyncns" = "xyes" && test "x$HAVE_LIBASYNCNS" = "x0"], |
| 31 | AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1]) |
| 32 | AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?])) |
| 33 | |
| 34 | +#### Running from build tree (optional) #### |
| 35 | + |
| 36 | +AC_ARG_ENABLE([running-from-build-tree], |
| 37 | + AS_HELP_STRING([--disable-running-from-build-tree],[Disable running from build tree])) |
| 38 | + |
| 39 | +AS_IF([test "x$enable_running_from_build_tree" != "xno"], |
| 40 | + AC_DEFINE([HAVE_RUNNING_FROM_BUILD_TREE], 1, [Have running from build tree])) |
| 41 | + |
| 42 | +AC_SUBST(HAVE_RUNNING_FROM_BUILD_TREE) |
| 43 | + |
| 44 | #### TCP wrappers (optional) #### |
| 45 | |
| 46 | AC_ARG_ENABLE([tcpwrap], |
| 47 | diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c |
| 48 | index 9883126..f01eff4 100644 |
| 49 | --- a/src/daemon/daemon-conf.c |
| 50 | +++ b/src/daemon/daemon-conf.c |
| 51 | @@ -155,12 +155,14 @@ pa_daemon_conf *pa_daemon_conf_new(void) { |
| 52 | c->dl_search_path = pa_sprintf_malloc("%s" PA_PATH_SEP "lib" PA_PATH_SEP "pulse-%d.%d" PA_PATH_SEP "modules", |
| 53 | pa_win32_get_toplevel(NULL), PA_MAJOR, PA_MINOR); |
| 54 | #else |
| 55 | +#ifdef HAVE_RUNNING_FROM_BUILD_TREE |
| 56 | if (pa_run_from_build_tree()) { |
| 57 | pa_log_notice("Detected that we are run from the build tree, fixing search path."); |
| 58 | c->dl_search_path = pa_xstrdup(PA_BUILDDIR); |
| 59 | } else |
| 60 | - c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH); |
| 61 | #endif |
| 62 | + c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH); |
| 63 | +#endif //Endof #ifdef OS_IS_WIN32 |
| 64 | |
| 65 | return c; |
| 66 | } |
| 67 | diff --git a/src/daemon/main.c b/src/daemon/main.c |
| 68 | index c80fa94..1e00388 100644 |
| 69 | --- a/src/daemon/main.c |
| 70 | +++ b/src/daemon/main.c |
| 71 | @@ -932,6 +932,12 @@ int main(int argc, char *argv[]) { |
| 72 | |
| 73 | pa_log_debug("Running in VM: %s", pa_yes_no(pa_running_in_vm())); |
| 74 | |
| 75 | +#ifdef HAVE_RUNNING_FROM_BUILD_TREE |
| 76 | + pa_log_debug("Running from build tree: %s", pa_yes_no(pa_run_from_build_tree())); |
| 77 | +#else |
| 78 | + pa_log_debug("Running from build tree: no"); |
| 79 | +#endif |
| 80 | + |
| 81 | #ifdef __OPTIMIZE__ |
| 82 | pa_log_debug("Optimized build: yes"); |
| 83 | #else |
| 84 | diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c |
| 85 | index a524d6d..670f646 100644 |
| 86 | --- a/src/modules/alsa/alsa-mixer.c |
| 87 | +++ b/src/modules/alsa/alsa-mixer.c |
| 88 | @@ -2571,9 +2571,11 @@ static int path_verify(pa_alsa_path *p) { |
| 89 | } |
| 90 | |
| 91 | static const char *get_default_paths_dir(void) { |
| 92 | +#ifdef HAVE_RUNNING_FROM_BUILD_TREE |
| 93 | if (pa_run_from_build_tree()) |
| 94 | return PA_SRCDIR "/modules/alsa/mixer/paths/"; |
| 95 | else |
| 96 | +#endif |
| 97 | return PA_ALSA_PATHS_DIR; |
| 98 | } |
| 99 | |
| 100 | @@ -4455,7 +4457,9 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel |
| 101 | fname = "default.conf"; |
| 102 | |
| 103 | fn = pa_maybe_prefix_path(fname, |
| 104 | +#ifdef HAVE_RUNNING_FROM_BUILD_TREE |
| 105 | pa_run_from_build_tree() ? PA_SRCDIR "/modules/alsa/mixer/profile-sets/" : |
| 106 | +#endif |
| 107 | PA_ALSA_PROFILE_SETS_DIR); |
| 108 | |
| 109 | r = pa_config_parse(fn, NULL, items, NULL, false, ps); |
| 110 | diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c |
| 111 | index c0f4dde..76a1f19 100644 |
| 112 | --- a/src/modules/gconf/module-gconf.c |
| 113 | +++ b/src/modules/gconf/module-gconf.c |
| 114 | @@ -51,7 +51,7 @@ int pa__init(pa_module*m) { |
| 115 | u->buf_fill = 0; |
| 116 | |
| 117 | if ((u->fd = pa_start_child_for_read( |
| 118 | -#if defined(__linux__) && !defined(__OPTIMIZE__) |
| 119 | +#if defined(__linux__) && defined(HAVE_RUNNING_FROM_BUILD_TREE) |
| 120 | pa_run_from_build_tree() ? PA_BUILDDIR "/gconf-helper" : |
| 121 | #endif |
| 122 | PA_GCONF_HELPER, NULL, &u->pid)) < 0) |
| 123 | diff --git a/src/modules/gsettings/module-gsettings.c b/src/modules/gsettings/module-gsettings.c |
| 124 | index 330eca1..209c857 100644 |
| 125 | --- a/src/modules/gsettings/module-gsettings.c |
| 126 | +++ b/src/modules/gsettings/module-gsettings.c |
| 127 | @@ -51,7 +51,7 @@ int pa__init(pa_module*m) { |
| 128 | u->buf_fill = 0; |
| 129 | |
| 130 | if ((u->fd = pa_start_child_for_read( |
| 131 | -#if defined(__linux__) && !defined(__OPTIMIZE__) |
| 132 | +#if defined(__linux__) && defined(HAVE_RUNNING_FROM_BUILD_TREE) |
| 133 | pa_run_from_build_tree() ? PA_BUILDDIR "/gsettings-helper" : |
| 134 | #endif |
| 135 | PA_GSETTINGS_HELPER, NULL, &u->pid)) < 0) |
| 136 | diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c |
| 137 | index 64e9f21..f85dd20 100644 |
| 138 | --- a/src/pulsecore/core-util.c |
| 139 | +++ b/src/pulsecore/core-util.c |
| 140 | @@ -3436,15 +3436,17 @@ void pa_reset_personality(void) { |
| 141 | } |
| 142 | |
| 143 | bool pa_run_from_build_tree(void) { |
| 144 | - char *rp; |
| 145 | static bool b = false; |
| 146 | |
| 147 | +#ifdef HAVE_RUNNING_FROM_BUILD_TREE |
| 148 | + char *rp; |
| 149 | PA_ONCE_BEGIN { |
| 150 | if ((rp = pa_readlink("/proc/self/exe"))) { |
| 151 | b = pa_startswith(rp, PA_BUILDDIR); |
| 152 | pa_xfree(rp); |
| 153 | } |
| 154 | } PA_ONCE_END; |
| 155 | +#endif |
| 156 | |
| 157 | return b; |
| 158 | } |
| 159 | -- |
| 160 | 2.7.4 |
| 161 | |