[PATCH 1/2] daemon: Fix dlsearchpath while running from build tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2013-04-20 at 10:14 +0530, Arun Raghavan wrote:
> It appears that, libltdl will find the .la file in the builddir and
> figure out where the real .so is.
> 
> This also requires .ifexists to be fixed up to correspondingly search in
> <dlsearchpath>/.libs.
> ---
>  src/daemon/daemon-conf.c    |  2 +-
>  src/pulsecore/cli-command.c | 12 +++++++++++-
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
> index 2c43cf9..f1e5476 100644
> --- a/src/daemon/daemon-conf.c
> +++ b/src/daemon/daemon-conf.c
> @@ -156,7 +156,7 @@ pa_daemon_conf *pa_daemon_conf_new(void) {
>  #else
>      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 "/.libs/");
> +        c->dl_search_path = pa_xstrdup(PA_BUILDDIR);
>      } else
>          c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
>  #endif
> diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
> index 1ec8054..f5489d6 100644
> --- a/src/pulsecore/cli-command.c
> +++ b/src/pulsecore/cli-command.c
> @@ -2062,11 +2062,21 @@ int pa_cli_command_execute_line_stateful(pa_core *c, const char *s, pa_strbuf *b
>                              char *pathname;
>  
>                              pathname = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", p, filename);
> -                            pa_xfree(p);
>  
>                              *ifstate = access(pathname, F_OK) == 0 ? IFSTATE_TRUE : IFSTATE_FALSE;
>                              pa_log_debug("Checking for existence of '%s': %s", pathname, *ifstate == IFSTATE_TRUE ? "success" : "failure");
>  
> +                            if (PA_UNLIKELY(pa_run_from_build_tree())) {
> +                                /* If run from the build tree, search in <path>/.libs as well */
> +                                char *ltpathname = pa_sprintf_malloc("%s" PA_PATH_SEP ".libs" PA_PATH_SEP "%s", p, filename);
> +
> +                                *ifstate = access(ltpathname, F_OK) == 0 ? IFSTATE_TRUE : IFSTATE_FALSE;
> +                                pa_log_debug("Checking for existence of '%s': %s", ltpathname, *ifstate == IFSTATE_TRUE ? "success" : "failure");
> +
> +                                pa_xfree(ltpathname);
> +                            }

Why do we search in two places if we're running from build tree? Why is
this code so complicated anyway, looping over "multiple" paths, even
though we will never have more than one module search path?

-- 
Tanu

---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux