about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2018-02-21 11:56:06 +0300
committerNikolay Amiantov <ab@fmap.me>2018-02-21 23:54:31 +0300
commit9a9c2e65791d8f8a07b2b3b1555f633d47520197 (patch)
tree71b8fbdac137e41dad4bce95dbe3ca4355df7b9a /pkgs/build-support
parent1d15dadbec4f3d0a1f98e877e77518afe9245148 (diff)
downloadnixlib-9a9c2e65791d8f8a07b2b3b1555f633d47520197.tar
nixlib-9a9c2e65791d8f8a07b2b3b1555f633d47520197.tar.gz
nixlib-9a9c2e65791d8f8a07b2b3b1555f633d47520197.tar.bz2
nixlib-9a9c2e65791d8f8a07b2b3b1555f633d47520197.tar.lz
nixlib-9a9c2e65791d8f8a07b2b3b1555f633d47520197.tar.xz
nixlib-9a9c2e65791d8f8a07b2b3b1555f633d47520197.tar.zst
nixlib-9a9c2e65791d8f8a07b2b3b1555f633d47520197.zip
cc-wrapper: fix bool handling for empty and zero values
Before the code would fail silently for zero values and with some output for
empties. We now currently handle both via defaulting value to zero and making
`let` return success error code when there's no syntax error.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/cc-wrapper/utils.sh6
1 files changed, 5 insertions, 1 deletions
diff --git a/pkgs/build-support/cc-wrapper/utils.sh b/pkgs/build-support/cc-wrapper/utils.sh
index 4b2b13809181..9215fe2dc397 100644
--- a/pkgs/build-support/cc-wrapper/utils.sh
+++ b/pkgs/build-support/cc-wrapper/utils.sh
@@ -25,7 +25,11 @@ mangleVarBool() {
     for infix in "${role_infixes[@]}"; do
         local inputVar="${var/+/${infix}}"
         if [ -v "$inputVar" ]; then
-            let "${outputVar} |= ${!inputVar}"
+            # "1" in the end makes `let` return success error code when
+            # expression itself evaluates to zero.
+            # We don't use `|| true` because that would silence actual
+            # syntax errors from bad variable values.
+            let "${outputVar} |= ${!inputVar:-0}" "1"
         fi
     done
 }