about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/swift/patches/build-script-pax.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/swift/patches/build-script-pax.patch')
-rw-r--r--nixpkgs/pkgs/development/compilers/swift/patches/build-script-pax.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/swift/patches/build-script-pax.patch b/nixpkgs/pkgs/development/compilers/swift/patches/build-script-pax.patch
new file mode 100644
index 000000000000..1f47bf8ee045
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/swift/patches/build-script-pax.patch
@@ -0,0 +1,33 @@
+--- swift/utils/build-script-impl	2017-01-23 12:47:20.401326309 -0600
++++ swift-pax/utils/build-script-impl	2017-01-23 13:24:10.339366996 -0600
+@@ -1837,6 +1837,17 @@ function set_lldb_xcodebuild_options() {
+     fi
+ }
+ 
++## XXX: Taken from nixpkgs /pkgs/stdenv/generic/setup.sh
++isELF() {
++    local fn="$1"
++    local fd
++    local magic
++    exec {fd}< "$fn"
++    read -n 4 -u $fd magic
++    exec {fd}<&-
++    if [[ "$magic" =~ ELF ]]; then return 0; else return 1; fi
++}
++
+ #
+ # Configure and build each product
+ #
+@@ -2735,6 +2746,12 @@ for host in "${ALL_HOSTS[@]}"; do
+             fi
+ 
+             call "${CMAKE_BUILD[@]}" "${build_dir}" $(cmake_config_opt ${product}) -- "${BUILD_ARGS[@]}" ${build_targets[@]}
++            
++						while IFS= read -r -d $'\0' i; do
++								if ! isELF "$i"; then continue; fi
++								echo "setting pax flags on $i"
++								paxctl -czexm "$i" || true
++						done < <(find "${build_dir}" -executable -type f -wholename "*/bin/*" -print0)
+         fi
+     done
+ done