summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2017-07-05 08:55:26 +0200
committerVladimír Čunát <vcunat@gmail.com>2017-07-05 08:55:26 +0200
commit5328aac7be5b7ebf794349f915a379efd04b018b (patch)
tree029547f7673a785c42f12770a68a3ec31a297bf9 /pkgs/build-support
parentf203b32bb8e824a75f89fd9805680b4a8e92d2a5 (diff)
parentc73f0caea5f0822ea044b4f90de4b64706d91362 (diff)
downloadnixlib-5328aac7be5b7ebf794349f915a379efd04b018b.tar
nixlib-5328aac7be5b7ebf794349f915a379efd04b018b.tar.gz
nixlib-5328aac7be5b7ebf794349f915a379efd04b018b.tar.bz2
nixlib-5328aac7be5b7ebf794349f915a379efd04b018b.tar.lz
nixlib-5328aac7be5b7ebf794349f915a379efd04b018b.tar.xz
nixlib-5328aac7be5b7ebf794349f915a379efd04b018b.tar.zst
nixlib-5328aac7be5b7ebf794349f915a379efd04b018b.zip
Merge branch 'staging'
Comparison looks OK; I'll try some fixes on master directly.
http://hydra.nixos.org/eval/1372577?compare=1372497
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix6
-rw-r--r--pkgs/build-support/cc-wrapper/utils.sh21
-rw-r--r--pkgs/build-support/setup-hooks/win-dll-link.sh2
3 files changed, 16 insertions, 13 deletions
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index ad6f6832298a..935e6fb6267c 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -359,7 +359,13 @@ stdenv.mkDerivation {
       if [[ "$($ldPath/${prefix}ld -z relro 2>&1 || true)" =~ un(recognized|known)\ option ]]; then
         hardening_unsupported_flags+=" relro"
       fi
+    ''
+
+    + optionalString hostPlatform.isCygwin ''
+      hardening_unsupported_flags+=" pic"
+    ''
 
+    + ''
       substituteAll ${preWrap ./add-flags.sh} $out/nix-support/add-flags.sh
       substituteAll ${preWrap ./add-hardening.sh} $out/nix-support/add-hardening.sh
       cp -p ${preWrap ./utils.sh} $out/nix-support/utils.sh
diff --git a/pkgs/build-support/cc-wrapper/utils.sh b/pkgs/build-support/cc-wrapper/utils.sh
index d17930e8ab5d..8cefc47816f8 100644
--- a/pkgs/build-support/cc-wrapper/utils.sh
+++ b/pkgs/build-support/cc-wrapper/utils.sh
@@ -28,17 +28,16 @@ badPath() {
 # States: 0 - outside, 1/2 - unquoted arg/slash, 3/4 - 'arg'/slash, 5/6 - "arg"/slash.
 # State transitions:
 rspT=(01235 01235 11111 33413 33333 55651 55555)
-# Push char on transition:
-rspC[01]=1 rspC[11]=1 rspC[21]=1 rspC[33]=1 rspC[43]=1 rspC[55]=1 rspC[65]=1
+# Push (a) arg or (c) char on transition:
+rspP[10]=a rspP[01]=c rspP[11]=c rspP[21]=c rspP[33]=c rspP[43]=c rspP[55]=c rspP[65]=c
 
 rspParse() {
     rsp=()
-    local s="$1"
     local state=0
     local arg=''
+    local c
 
-    for (( i=0; i<${#s}; i++ )); do
-        local c="${s:$i:1}"
+    while read -r -N1 c; do
         local cls=1
         case "$c" in
             ' ' | $'\t' | $'\r' | $'\n') cls=0 ;;
@@ -48,12 +47,10 @@ rspParse() {
         esac
         local nextstates="${rspT[$state]}"
         local nextstate="${nextstates:$cls:1}"
-        if [ "${rspC[$state$nextstate]}" ]; then
-            arg+="$c"
-        elif [ "$state$nextstate" = "10" ]; then
-            rsp+=("$arg")
-            arg=''
-        fi
+        case "${rspP[$state$nextstate]}" in
+            'c') arg+="$c" ;;
+            'a') rsp+=("$arg"); arg='' ;;
+        esac
         state="$nextstate"
     done
 
@@ -68,7 +65,7 @@ expandResponseParams() {
         local p="$1"
         shift
         if [ "${p:0:1}" = '@' -a -e "${p:1}" ]; then
-            rspParse "$(<"${p:1}")"
+            rspParse <"${p:1}"
             set -- "${rsp[@]}" "$@"
         else
             params+=("$p")
diff --git a/pkgs/build-support/setup-hooks/win-dll-link.sh b/pkgs/build-support/setup-hooks/win-dll-link.sh
index 634a9d18f00d..9658b9f82595 100644
--- a/pkgs/build-support/setup-hooks/win-dll-link.sh
+++ b/pkgs/build-support/setup-hooks/win-dll-link.sh
@@ -35,7 +35,7 @@ _linkDLLs() {
         local dllPath2
         for dllPath2 in "$dllPath" "$(dirname $(readlink "$dllPath" || echo "$dllPath"))"/*.dll; do
             if [ -e ./"$(basename "$dllPath2")" ]; then continue; fi
-            ln -sr "$dllPath2" .
+            CYGWIN+=\ winsymlinks:nativestrict ln -sr "$dllPath2" .
             linkCount=$(($linkCount+1))
         done
     done