lol
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

pkg-config-wrapper: mangle PKG_CONFIG_PATH{,_FOR_BUILD} correctly

Previously, mangleVarList would be used which would concatenate the
variables using a space as a separator. Paths are however separated by
`:` in PKG_CONFIG_PATH leading to entries being broken.

This is fixed by introducing mangleVarListGeneric which allows us to
specify the desired separator.

Reproducer for the issue prior to this change:

$ nix-shell -A pkgsLLVM.wayland
[nix-shell] $ pkg-config --libs expat
Package expat was not found in the pkg-config search path.
Perhaps you should add the directory containing `expat.pc'
to the PKG_CONFIG_PATH environment variable
No package 'expat' found
$ printf 'Host: %s\nBuild: %s' $PKG_CONFIG_PATH $PKG_CONFIG_PATH_FOR_BUILD
Host: /nix/store/5h308a4ab8w7prcp8iflh5pnl78mayi2-expat-2.2.10-x86_64-unknown-linux-gnu-dev/lib/pkgconfig:/nix/store/z3y9ska2h4l1map25m195iq577g7g3gz-libxml2-x86_64-unknown-linux-gnu-2.9.12-dev/lib/pkgconfig:/nix/store/lbz5m1s0r7zn0cxvl21czfspli6ribzb-zlib-1.2.11-x86_64-unknown-linux-gnu-dev/lib/pkgconfig:/nix/store/rfhvp8r8n3ygpzh8j0l34lk8hwwi3z0h-libffi-3.3-x86_64-unknown-linux-gnu-dev/lib/pkgconfig
Build: /nix/store/dw11ywy7qwfz53qisz0dggbgix88jah2-wayland-1.19.0-bin/lib/pkgconfig

strace reveals the issue:

stat("/nix/store/dw11ywy7qwfz53qisz0dggbgix88jah2-wayland-1.19.0-bin/lib/pkgconfig /nix/store/5h308a4ab8w7prcp8iflh5pnl78mayi2-expat-2.2.10-x86_64-unknown-linux-gnu-dev/lib/pkgconfig/expat-uninstalled.pc", 0x7fff49829fa0) = -1 ENOENT (No such file or directory)

In the pkg-config wrapper $PKG_CONFIG_PATH_FOR_BUILD and
$PKG_CONFIG_PATH are concatenated with a space which leads to two paths
being messed up. This issue likely only affects native cross
compilation.

+9 -3
+1 -1
pkgs/build-support/pkg-config-wrapper/add-flags.sh
··· 6 6 accumulateRoles 7 7 8 8 for var in "${var_templates_list[@]}"; do 9 - mangleVarList "$var" ${role_suffixes[@]+"${role_suffixes[@]}"} 9 + mangleVarListGeneric ":" "$var" ${role_suffixes[@]+"${role_suffixes[@]}"} 10 10 done 11 11 12 12 export NIX_PKG_CONFIG_WRAPPER_FLAGS_SET_@suffixSalt@=1
+8 -2
pkgs/build-support/wrapper-common/utils.bash
··· 13 13 fi 14 14 } 15 15 16 - mangleVarList() { 16 + mangleVarListGeneric() { 17 + local sep="$1" 18 + shift 17 19 local var="$1" 18 20 shift 19 21 local -a role_suffixes=("$@") ··· 25 27 for suffix in "${role_suffixes[@]}"; do 26 28 local inputVar="${var}${suffix}" 27 29 if [ -v "$inputVar" ]; then 28 - export ${outputVar}+="${!outputVar:+ }${!inputVar}" 30 + export ${outputVar}+="${!outputVar:+$sep}${!inputVar}" 29 31 fi 30 32 done 33 + } 34 + 35 + mangleVarList() { 36 + mangleVarListGeneric " " "$@" 31 37 } 32 38 33 39 mangleVarBool() {