[Libguestfs] [PATCH] ./run: Use 'prepend' function to build paths.

Pino Toscano ptoscano at redhat.com
Fri Feb 13 10:35:15 UTC 2015


On Friday 13 February 2015 10:16:34 Richard W.M. Jones wrote:
> Add a bash function 'prepend' for intelligently prepending elements to
> paths.  eg:
> 
>   prepend PYTHONPATH "/foo"
> 
> would set PYTHONPATH to "/foo" or "/foo:<previous-contents-of-PYTHONPATH>"
> 
> Tested by:
> 
> (1) Building and testing libguestfs twice: first without libguestfs
> installed as a system library, and then with it installed.
> 
> (2) Examining the output of './run printenv' by hand and comparing
> environment variables to the expected values.
> ---

Nice idea, thanks for it.

>  # Set LD_LIBRARY_PATH and DYLD_LIBRARY_PATH to contain library.
> -build_libs_path="$b/src/.libs:$b/java/.libs:$b/gobject/.libs"
> -export LD_LIBRARY_PATH="$build_libs_path${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
> -export DYLD_LIBRARY_PATH="$build_libs_path${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH"
> +prepend LD_LIBRARY_PATH "$b/gobject/.libs"
> +prepend LD_LIBRARY_PATH "$b/java/.libs"
> +prepend LD_LIBRARY_PATH "$b/src/.libs"
> +prepend DYLD_LIBRARY_PATH "$b/gobject/.libs"
> +prepend DYLD_LIBRARY_PATH "$b/java/.libs"
> +prepend DYLD_LIBRARY_PATH "$b/src/.libs"
> +export LD_LIBRARY_PATH
> +export DYLD_LIBRARY_PATH

I'd still leave the build_libs_path variable, so we don't duplicate
its content twice.

>  # virt-p2v-make-* data directory.
>  if [ -z "$VIRT_P2V_DATA_DIR" ]; then
> -    VIRT_P2V_DATA_DIR="$b/p2v"
> +    prepend VIRT_P2V_DATA_DIR "$b/p2v"
>      export VIRT_P2V_DATA_DIR
>  fi

Is prepend needed here? After all, it is just a single directory.

>  # For Lua.
>  export LUA=@LUA@
> +# Can't use 'prepend' here because Lua paths use semicolons.
>  if [ -z "$LUA_CPATH" ]; then
>      LUA_CPATH="$b/lua/?.so"
>  else

I guess using a second helper like:

  prepend_semicolon()
  {
    eval $1="$2\${$1:+;\$$1}"
  }

could help?

-- 
Pino Toscano




More information about the Libguestfs mailing list