]> code.ossystems Code Review - openembedded-core.git/blob
b7e9cd8c5c7305fa94527d7a14eb29e41c94e5ca
[openembedded-core.git] /
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