From 5413bfa8e37d8fe7b3f5a80786d7ac6712e87089 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Tue, 13 Jun 2017 14:10:40 +0000 Subject: [PATCH 01/59] Speed up parsing @args.rsp compiler arguments Improves upon #25205 https://gist.github.com/pbogdan/9d6986bf931b58a70d75e14eb40ee8a1 parsing time is reduced from one minute to one second --- pkgs/build-support/cc-wrapper/utils.sh | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/utils.sh b/pkgs/build-support/cc-wrapper/utils.sh index d17930e8ab5..8cefc47816f 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") From 1837089670aa7a857aa6485828142f2c5b762173 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Thu, 15 Jun 2017 17:02:45 +0200 Subject: [PATCH 02/59] alsa-lib: 1.1.2 -> 1.1.4.1 --- pkgs/os-specific/linux/alsa-lib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/alsa-lib/default.nix b/pkgs/os-specific/linux/alsa-lib/default.nix index 3205275ff93..8a6eb77e6b1 100644 --- a/pkgs/os-specific/linux/alsa-lib/default.nix +++ b/pkgs/os-specific/linux/alsa-lib/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "alsa-lib-1.1.2"; + name = "alsa-lib-1.1.4.1"; src = fetchurl { urls = [ "ftp://ftp.alsa-project.org/pub/lib/${name}.tar.bz2" "http://alsa.cybermirror.org/lib/${name}.tar.bz2" ]; - sha256 = "1mk1v2av6ibyydgr6f2mxrwy7clgnf0c68s9y2zvh1ibi7csr3fk"; + sha256 = "0xjvi381105gldhv0z872a0x58sghznyx19j45lw5iyi2h68gfwi"; }; patches = [ From 886f9057e3e86c8b91803568ebc057c9bda190e2 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Thu, 15 Jun 2017 17:06:18 +0200 Subject: [PATCH 03/59] alsa-plugins: 1.1.1 -> 1.1.4 --- pkgs/os-specific/linux/alsa-plugins/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/alsa-plugins/default.nix b/pkgs/os-specific/linux/alsa-plugins/default.nix index 7f065a1b9b0..ae0aaa3cb63 100644 --- a/pkgs/os-specific/linux/alsa-plugins/default.nix +++ b/pkgs/os-specific/linux/alsa-plugins/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchurl, lib, pkgconfig, alsaLib, libogg, libpulseaudio ? null, libjack2 ? null }: stdenv.mkDerivation rec { - name = "alsa-plugins-1.1.1"; + name = "alsa-plugins-1.1.4"; src = fetchurl { urls = [ "ftp://ftp.alsa-project.org/pub/plugins/${name}.tar.bz2" "http://alsa.cybermirror.org/plugins/${name}.tar.bz2" ]; - sha256 = "1w81z5jlwqhd1l2m7qrq69lc4k9dnrg1wn52jsl2hrf3hbhd394f"; + sha256 = "12hsvm6rpinjkg06pa9hzndkdrbfw6wk6yk00cm8y1gbv8xiq3ak"; }; # ToDo: a52, etc.? From 285a837674b2cb8558c1703de150b42048019601 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Thu, 15 Jun 2017 17:06:41 +0200 Subject: [PATCH 04/59] alsa-tools: 1.1.0 -> 1.1.3 --- pkgs/os-specific/linux/alsa-tools/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/alsa-tools/default.nix b/pkgs/os-specific/linux/alsa-tools/default.nix index 51a60a27431..23e1f430dec 100644 --- a/pkgs/os-specific/linux/alsa-tools/default.nix +++ b/pkgs/os-specific/linux/alsa-tools/default.nix @@ -4,14 +4,14 @@ stdenv.mkDerivation rec { name = "alsa-tools-${version}"; - version = "1.1.0"; + version = "1.1.3"; src = fetchurl { urls = [ "ftp://ftp.alsa-project.org/pub/tools/${name}.tar.bz2" "http://alsa.cybermirror.org/tools/${name}.tar.bz2" ]; - sha256 = "0ldbaz3qr7z0639xg37ba7cmrb512rrjavap6r5jjl0ab665ad3x"; + sha256 = "02b75fyfmm9m2iz59d3xa97cas4f697a4pzdxn1i64kjd36iv3yq"; }; buildInputs = [ alsaLib pkgconfig gtk2 gtk3 fltk13 ]; From cb7e49b3df4bb479916fedc536650e3aaf7fecfe Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Thu, 15 Jun 2017 17:07:12 +0200 Subject: [PATCH 05/59] alsa-utils: 1.1.2 -> 1.1.4 --- pkgs/os-specific/linux/alsa-utils/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/alsa-utils/default.nix b/pkgs/os-specific/linux/alsa-utils/default.nix index 3c2b53e0e3f..4cb4af5ca72 100644 --- a/pkgs/os-specific/linux/alsa-utils/default.nix +++ b/pkgs/os-specific/linux/alsa-utils/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { name = "alsa-utils-${version}"; - version = "1.1.2"; + version = "1.1.4"; src = fetchurl { urls = [ "ftp://ftp.alsa-project.org/pub/utils/${name}.tar.bz2" "http://alsa.cybermirror.org/utils/${name}.tar.bz2" ]; - sha256 = "0wcha78c2sm8qqk5r3w83cvm8fp6fb1zpd35kmcm24kxhz007xks"; + sha256 = "17cxih9ibjp1193dyd79j50pyfa9dvrs6r9kpwrvzicjvr2110x7"; }; patchPhase = '' From 650f64c7790c3fecbc855eb4caf62d63d35e312e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Tue, 20 Jun 2017 14:01:53 +0200 Subject: [PATCH 06/59] fix eval --- pkgs/tools/admin/cli53/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/admin/cli53/default.nix b/pkgs/tools/admin/cli53/default.nix index 5c80e76f482..75b1535c8b7 100644 --- a/pkgs/tools/admin/cli53/default.nix +++ b/pkgs/tools/admin/cli53/default.nix @@ -24,7 +24,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "CLI tool for the Amazon Route 53 DNS service"; homepage = https://github.com/barnybug/cli53; - license = lib.licenses.mit; + license = licenses.mit; maintainers = with lib.maintainers; [ benley ]; }; } From 8ae8e51dc3652e01926ae99fd93f8f273797ed73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Tue, 20 Jun 2017 14:03:57 +0200 Subject: [PATCH 07/59] Revert "fix eval" This reverts commit 650f64c7790c3fecbc855eb4caf62d63d35e312e. --- pkgs/tools/admin/cli53/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/admin/cli53/default.nix b/pkgs/tools/admin/cli53/default.nix index 75b1535c8b7..5c80e76f482 100644 --- a/pkgs/tools/admin/cli53/default.nix +++ b/pkgs/tools/admin/cli53/default.nix @@ -24,7 +24,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "CLI tool for the Amazon Route 53 DNS service"; homepage = https://github.com/barnybug/cli53; - license = licenses.mit; + license = lib.licenses.mit; maintainers = with lib.maintainers; [ benley ]; }; } From 843b3faa18488375b31036cd3aed940b44a48e70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Tue, 20 Jun 2017 14:04:14 +0200 Subject: [PATCH 08/59] Revert "cli53: 0.4.4 -> 0.8.8" This reverts commit c25b145815c1a7411621e33e69147c9545833509. --- pkgs/tools/admin/cli53/default.nix | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/pkgs/tools/admin/cli53/default.nix b/pkgs/tools/admin/cli53/default.nix index 5c80e76f482..bdb9fd2d477 100644 --- a/pkgs/tools/admin/cli53/default.nix +++ b/pkgs/tools/admin/cli53/default.nix @@ -1,27 +1,21 @@ -{ stdenv, buildGoPackage, fetchFromGitHub }: +{ lib, python2Packages, fetchurl }: -buildGoPackage rec { +python2Packages.buildPythonApplication rec { name = "cli53-${version}"; - version = "0.8.8"; + version = "0.4.4"; - goPackagePath = "github.com/barnybug/cli53"; - - src = fetchFromGitHub { - owner = "barnybug"; - repo = "cli53"; - rev = version; - sha256 = "1hbx64rn25qzp2xlfwv8xaqyfcax9b6pl30j9vciw7cb346i84gc"; + src = fetchurl { + url = "mirror://pypi/c/cli53/${name}.tar.gz"; + sha256 = "0s9jzigq6a16m2c3qklssx2lz16cf13g5zh80vh24kxazaxqzbig"; }; - buildPhase = '' - pushd go/src/${goPackagePath}/cmd/cli53 - go get . - popd - ''; + propagatedBuildInputs = with python2Packages; [ + argparse + boto + dns + ]; - goDeps = ./deps.nix; - - meta = with stdenv.lib; { + meta = { description = "CLI tool for the Amazon Route 53 DNS service"; homepage = https://github.com/barnybug/cli53; license = lib.licenses.mit; From 53c5b9163eb3ed54ce633ae09b9a63f235f0493f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Tue, 20 Jun 2017 14:12:56 +0200 Subject: [PATCH 09/59] vulnix: fix eval --- pkgs/tools/security/vulnix/requirements.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/security/vulnix/requirements.nix b/pkgs/tools/security/vulnix/requirements.nix index bf87fe1c64d..280fc2279b4 100644 --- a/pkgs/tools/security/vulnix/requirements.nix +++ b/pkgs/tools/security/vulnix/requirements.nix @@ -26,7 +26,7 @@ rec { url = "https://pypi.python.org/packages/52/b3/a96d62711a26d8cfbe546519975dc9ed54d2eb50b3238d2e6de045764796/ZConfig-3.1.0.tar.gz"; sha256 = "c21fa3a073a56925a8098036d46717392994a92cffea1b3cda3176b70c0a842e"; }; - propagatedBuildInputs = with self; [ zope_testrunner ]; + propagatedBuildInputs = with pythonPackages; [ zope_testrunner ]; meta = with stdenv.lib; { homepage = ""; license = licenses.zpt21; From 5389caab83daa820ac1164100b73d0f82b83a50c Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Tue, 20 Jun 2017 03:15:15 +0200 Subject: [PATCH 10/59] utillinux: 2.29.2 -> 2.30 --- pkgs/os-specific/linux/util-linux/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index 79f63f8c27a..8e16a3165f6 100644 --- a/pkgs/os-specific/linux/util-linux/default.nix +++ b/pkgs/os-specific/linux/util-linux/default.nix @@ -4,8 +4,8 @@ let version = lib.concatStringsSep "." ([ majorVersion ] ++ lib.optional (patchVersion != "") patchVersion); - majorVersion = "2.29"; - patchVersion = "2"; + majorVersion = "2.30"; + patchVersion = ""; fstrimPatch = fetchpatch { url = "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/patch/?id=155d48f590a50bb5dc265162ff2f9a971daed543"; @@ -16,7 +16,7 @@ in stdenv.mkDerivation rec { src = fetchurl { url = "mirror://kernel/linux/utils/util-linux/v${majorVersion}/${name}.tar.xz"; - sha256 = "1qz81w8vzrmy8xn9yx7ls4amkbgwx6vr62pl6kv9g7r0g3ba9kmc"; + sha256 = "13d0ax8bcapga8phj2nclx86w57ddqxbr98ajibpzjq6d7zs8262"; }; patches = [ From 29a485a8cda44449181e40d4f9b14f02d70b6c93 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Tue, 20 Jun 2017 07:44:51 +0200 Subject: [PATCH 11/59] libev: 4.22 -> 4.24 --- pkgs/development/libraries/libev/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libev/default.nix b/pkgs/development/libraries/libev/default.nix index 37e0c9b3431..d77337c912b 100644 --- a/pkgs/development/libraries/libev/default.nix +++ b/pkgs/development/libraries/libev/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "libev-${version}"; - version="4.22"; + version="4.24"; src = fetchurl { url = "http://dist.schmorp.de/libev/Attic/${name}.tar.gz"; - sha256 = "1mhvy38g9947bbr0n0hzc34zwfvvfd99qgzpkbap8g2lmkl7jq3k"; + sha256 = "08gqsza1czx0nf62nkk183jb0946yzjsymaacxbzdgcs8z9r6dcp"; }; meta = { From 4150f5e8ba650416dcb8956c9835885cc6a2a80d Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 21 Jun 2017 19:11:41 +0200 Subject: [PATCH 12/59] cc-wrapper: add stackcheck hardening (stack clash) This fixes the Stack Clash issue rediscovered by Qualys. See https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt for more information on the topic, specifically section III. We don't have the kernel mitigation available because it is a Grsecurity feature which we don't support anymore. Other distributions like Gentoo Hardened and Arch already have `-fstack-check` enabled by default. See the Gentoo page on Stack Clash for more information on this solution: https://wiki.gentoo.org/wiki/Hardened/Gentoo_Hardened_and_Stack_Clash This unfortunately doesn't apply to clang because `-fstack-check` is a noop there. Note that the GCC implementation also has problems that could be exploited to circumvent these checks but it is still better than keeping it disabled. --- pkgs/build-support/cc-wrapper/add-hardening.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/add-hardening.sh b/pkgs/build-support/cc-wrapper/add-hardening.sh index b98833b3513..2419b567d57 100644 --- a/pkgs/build-support/cc-wrapper/add-hardening.sh +++ b/pkgs/build-support/cc-wrapper/add-hardening.sh @@ -1,4 +1,4 @@ -hardeningFlags=(fortify stackprotector pic strictoverflow format relro bindnow) +hardeningFlags=(fortify stackprotector pic strictoverflow format relro bindnow stackcheck) hardeningFlags+=("${hardeningEnable[@]}") hardeningCFlags=() hardeningLDFlags=() @@ -50,7 +50,11 @@ if [[ ! $hardeningDisable =~ "all" ]]; then if [[ -n "$NIX_DEBUG" ]]; then echo HARDENING: enabling bindnow >&2; fi hardeningLDFlags+=('-z' 'now') ;; - *) + stackcheck) + if [[ -n "$NIX_DEBUG" ]]; then echo HARDENING: enabling stackcheck >&2; fi + hardeningCFlags+=('-fstack-check=specific') + ;; + *) echo "Hardening flag unknown: $flag" >&2 ;; esac From 6a850d2b11f22a22729b49f012fc26ff3c602f3f Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 21 Jun 2017 20:27:57 +0200 Subject: [PATCH 13/59] coreutils: fix tests depending on setuid/setgid bits --- pkgs/tools/misc/coreutils/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index d87976cbc5e..fdd18418083 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -31,6 +31,9 @@ stdenv.mkDerivation rec { sed '2i echo Skipping cp sparse test && exit 0' -i ./tests/cp/sparse.sh sed '2i echo Skipping rm deep-2 test && exit 0' -i ./tests/rm/deep-2.sh sed '2i echo Skipping du long-from-unreadable test && exit 0' -i ./tests/du/long-from-unreadable.sh + sed '2i echo Skipping chmod setgid test && exit 0' -i ./tests/chmod/setgid.sh + substituteInPlace ./tests/install/install-C.sh \ + --replace 'mode3=2755' 'mode3=1755' ''; outputs = [ "out" "info" ]; From 16aa92305bf8141c71cd44bc9af688e246df84df Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 21 Jun 2017 21:18:19 +0200 Subject: [PATCH 14/59] exim: patch CVE-2017-1000369 (stack clash) --- pkgs/servers/mail/exim/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/mail/exim/default.nix b/pkgs/servers/mail/exim/default.nix index bf7b5d8d6ed..d503a4d7b57 100644 --- a/pkgs/servers/mail/exim/default.nix +++ b/pkgs/servers/mail/exim/default.nix @@ -1,4 +1,4 @@ -{ coreutils, fetchurl, db, openssl, pcre, perl, pkgconfig, stdenv }: +{ coreutils, fetchurl, db, openssl, pcre, perl, pkgconfig, stdenv, fetchpatch }: stdenv.mkDerivation rec { name = "exim-4.89"; @@ -8,6 +8,14 @@ stdenv.mkDerivation rec { sha256 = "09lndv34jsxwglq5zsh9y4xaqj5g37g9ca4x0zb25fvvm4f0lj8c"; }; + patches = [ + (fetchpatch { + name = "CVE-2017-1000369.patch"; + url = "https://anonscm.debian.org/git/pkg-exim4/exim4.git/plain/debian/patches/79_CVE-2017-1000369.patch?h=4.89-2%2bdeb9u1"; + sha256 = "0v46zywgkv1rdqhybqqrd0rwkdaj6q1f4x0a3vm9p0wz8vad3023"; + }) + ]; + buildInputs = [ coreutils db openssl pcre perl pkgconfig ]; preBuild = '' From aab71b31d5030bea94804d3677a3ffbc60e1876a Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 21 Jun 2017 21:26:59 +0200 Subject: [PATCH 15/59] linux: patch CVE-2017-1000364 (stack clash) --- pkgs/os-specific/linux/kernel/patches.nix | 19 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 21 insertions(+) diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index 1747d34fe11..3e658e55dac 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -156,4 +156,23 @@ rec { sha256 = "10dmv3d3gj8rvj9h40js4jh8xbr5wyaqiy0kd819mya441mj8ll2"; }; }; + + # CVE-2017-1000364 (stack clash) + mm_larger_stack_guard_gap_4_9 = rec + { name = "mm-larger-stack-guard-gap-between-vmas.patch"; + patch = fetchpatch { + inherit name; + url = "https://anonscm.debian.org/cgit/kernel/linux.git/plain/debian/patches/bugfix/all/mm-enlarge-stack-guard-gap.patch?h=debian/4.9.30-2%2bdeb9u1_bpo8%2b1"; + sha256 = "0bl7w1zgcy691avp54p6mvzdam6snrb7pz3hywsf2g2mcxjkyja5"; + }; + }; + + mm_larger_stack_guard_gap_4_11 = rec + { name = "mm-larger-stack-guard-gap-between-vmas.patch"; + patch = fetchpatch { + inherit name; + url = "https://anonscm.debian.org/cgit/kernel/linux.git/plain/debian/patches/bugfix/all/mm-larger-stack-guard-gap-between-vmas.patch?h=debian/4.11.6-1"; + sha256 = "19bakn3119v5jkhh4w7x3d50py9an1w8h7v3mmy7y2l2agj4mn3i"; + }; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2973e2d9b0f..049e4eb1f69 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11905,6 +11905,7 @@ with pkgs; kernelPatches.p9_fixes kernelPatches.cpu-cgroup-v2."4.9" kernelPatches.modinst_arg_list_too_long + kernelPatches.mm_larger_stack_guard_gap_4_9 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu @@ -11921,6 +11922,7 @@ with pkgs; # when adding a new linux version kernelPatches.cpu-cgroup-v2."4.11" kernelPatches.modinst_arg_list_too_long + kernelPatches.mm_larger_stack_guard_gap_4_11 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu From 2296bf394ec419e111fd0ca80e9000fb819980da Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 21 Jun 2017 21:52:59 +0200 Subject: [PATCH 16/59] glibc: patch CVE-2017-1000366 (stack clash) --- .../CVE-2017-1000366-rtld-LD_AUDIT.patch | 209 ++++++++++++++++++ ...VE-2017-1000366-rtld-LD_LIBRARY_PATH.patch | 33 +++ .../CVE-2017-1000366-rtld-LD_PRELOAD.patch | 115 ++++++++++ pkgs/development/libraries/glibc/common.nix | 5 + 4 files changed, 362 insertions(+) create mode 100644 pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_AUDIT.patch create mode 100644 pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_LIBRARY_PATH.patch create mode 100644 pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_PRELOAD.patch diff --git a/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_AUDIT.patch b/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_AUDIT.patch new file mode 100644 index 00000000000..68e2798181f --- /dev/null +++ b/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_AUDIT.patch @@ -0,0 +1,209 @@ +From ba67ba3275d47e0080f0e5f09d9f5102c000c97e Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Florian Weimer +Date: Sun, 28 May 2017 20:44:52 +0200 +Subject: [PATCH 3/3] rtld: Reject overly long LD_AUDIT path elements +To: libc-alpha@sourceware.org + +Also only process the last LD_AUDIT entry. +--- + elf/rtld.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 95 insertions(+), 15 deletions(-) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 30f0cae..89d8573 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -116,13 +116,95 @@ dso_name_valid_for_suid (const char *p) + return *p != '\0'; + } + +-/* List of auditing DSOs. */ ++/* LD_AUDIT variable contents. Must be processed before the ++ audit_list below. */ ++const char *audit_list_string; ++ ++/* Cyclic list of auditing DSOs. audit_list->next is the first ++ element. */ + static struct audit_list + { + const char *name; + struct audit_list *next; + } *audit_list; + ++/* Iterator for audit_list_string followed by audit_list. */ ++struct audit_list_iter ++{ ++ /* Tail of audit_list_string still needing processing, or NULL. */ ++ const char *audit_list_tail; ++ ++ /* The list element returned in the previous iteration. NULL before ++ the first element. */ ++ struct audit_list *previous; ++ ++ /* Scratch buffer for returning a name which is part of ++ audit_list_string. */ ++#ifdef PATH_MAX ++ char fname[PATH_MAX]; ++#else ++ char fname[4096]; ++#endif ++}; ++ ++/* Initialize an audit list iterator. */ ++static void ++audit_list_iter_init (struct audit_list_iter *iter) ++{ ++ iter->audit_list_tail = audit_list_string; ++ iter->previous = NULL; ++} ++ ++/* Iterate through both audit_list_string and audit_list. */ ++static const char * ++audit_list_iter_next (struct audit_list_iter *iter) ++{ ++ if (iter->audit_list_tail != NULL) ++ { ++ /* First iterate over audit_list_string. */ ++ while (*iter->audit_list_tail != '\0') ++ { ++ /* Split audit list at colon. */ ++ size_t len = strcspn (iter->audit_list_tail, ":"); ++ if (len > 0 && len < sizeof(iter->fname)) ++ { ++ memcpy (iter->fname, iter->audit_list_tail, len); ++ iter->fname[len] = '\0'; ++ } ++ else ++ /* Do not return this name to the caller. */ ++ iter->fname[0] = '\0'; ++ ++ /* Skip over the substring and the following delimiter. */ ++ iter->audit_list_tail += len; ++ if (*iter->audit_list_tail == ':') ++ ++iter->audit_list_tail; ++ ++ /* If the name is valid, return it. */ ++ if (dso_name_valid_for_suid (iter->fname)) ++ return iter->fname; ++ /* Otherwise, wrap around and try the next name. */ ++ } ++ /* Fall through to the procesing of audit_list. */ ++ } ++ ++ if (iter->previous == NULL) ++ { ++ if (audit_list == NULL) ++ /* No pre-parsed audit list. */ ++ return NULL; ++ /* Start of audit list. The first list element is at ++ audit_list->next (cyclic list). */ ++ iter->previous = audit_list->next; ++ return iter->previous->name; ++ } ++ if (iter->previous == audit_list) ++ /* Cyclic list wrap-around. */ ++ return NULL; ++ iter->previous = iter->previous->next; ++ return iter->previous->name; ++} ++ + #ifndef HAVE_INLINED_SYSCALLS + /* Set nonzero during loading and initialization of executable and + libraries, cleared before the executable's entry point runs. This +@@ -1290,11 +1368,13 @@ of this helper program; chances are you did not intend to run this program.\n\ + GL(dl_rtld_map).l_tls_modid = _dl_next_tls_modid (); + + /* If we have auditing DSOs to load, do it now. */ +- if (__glibc_unlikely (audit_list != NULL)) ++ bool need_security_init = true; ++ if (__glibc_unlikely (audit_list != NULL) ++ || __glibc_unlikely (audit_list_string != NULL)) + { +- /* Iterate over all entries in the list. The order is important. */ + struct audit_ifaces *last_audit = NULL; +- struct audit_list *al = audit_list->next; ++ struct audit_list_iter al_iter; ++ audit_list_iter_init (&al_iter); + + /* Since we start using the auditing DSOs right away we need to + initialize the data structures now. */ +@@ -1305,9 +1385,14 @@ of this helper program; chances are you did not intend to run this program.\n\ + use different values (especially the pointer guard) and will + fail later on. */ + security_init (); ++ need_security_init = false; + +- do ++ while (true) + { ++ const char *name = audit_list_iter_next (&al_iter); ++ if (name == NULL) ++ break; ++ + int tls_idx = GL(dl_tls_max_dtv_idx); + + /* Now it is time to determine the layout of the static TLS +@@ -1316,7 +1401,7 @@ of this helper program; chances are you did not intend to run this program.\n\ + no DF_STATIC_TLS bit is set. The reason is that we know + glibc will use the static model. */ + struct dlmopen_args dlmargs; +- dlmargs.fname = al->name; ++ dlmargs.fname = name; + dlmargs.map = NULL; + + const char *objname; +@@ -1329,7 +1414,7 @@ of this helper program; chances are you did not intend to run this program.\n\ + not_loaded: + _dl_error_printf ("\ + ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", +- al->name, err_str); ++ name, err_str); + if (malloced) + free ((char *) err_str); + } +@@ -1433,10 +1518,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", + goto not_loaded; + } + } +- +- al = al->next; + } +- while (al != audit_list->next); + + /* If we have any auditing modules, announce that we already + have two objects loaded. */ +@@ -1700,7 +1782,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", + if (tcbp == NULL) + tcbp = init_tls (); + +- if (__glibc_likely (audit_list == NULL)) ++ if (__glibc_likely (need_security_init)) + /* Initialize security features. But only if we have not done it + earlier. */ + security_init (); +@@ -2331,9 +2413,7 @@ process_dl_audit (char *str) + char *p; + + while ((p = (strsep) (&str, ":")) != NULL) +- if (p[0] != '\0' +- && (__builtin_expect (! __libc_enable_secure, 1) +- || strchr (p, '/') == NULL)) ++ if (dso_name_valid_for_suid (p)) + { + /* This is using the local malloc, not the system malloc. The + memory can never be freed. */ +@@ -2397,7 +2477,7 @@ process_envvars (enum mode *modep) + break; + } + if (memcmp (envline, "AUDIT", 5) == 0) +- process_dl_audit (&envline[6]); ++ audit_list_string = &envline[6]; + break; + + case 7: +-- +2.9.4 + diff --git a/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_LIBRARY_PATH.patch b/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_LIBRARY_PATH.patch new file mode 100644 index 00000000000..88b1925fa12 --- /dev/null +++ b/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_LIBRARY_PATH.patch @@ -0,0 +1,33 @@ +From 4d009d39ac9ede0369e268554a181b428f177a80 Mon Sep 17 00:00:00 2001 +Message-Id: <4d009d39ac9ede0369e268554a181b428f177a80.1495998948.git.fweimer@redhat.com> +In-Reply-To: +References: +From: Florian Weimer +Date: Sun, 28 May 2017 20:37:40 +0200 +Subject: [PATCH 1/3] rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 + programs +To: libc-alpha@sourceware.org + +LD_LIBRARY_PATH can only be used to reorder system search paths, which +is not useful functionality. +--- + elf/rtld.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 319ef06..824b6cf 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -2419,7 +2419,8 @@ process_envvars (enum mode *modep) + + case 12: + /* The library search path. */ +- if (memcmp (envline, "LIBRARY_PATH", 12) == 0) ++ if (!__libc_enable_secure ++ && memcmp (envline, "LIBRARY_PATH", 12) == 0) + { + library_path = &envline[13]; + break; +-- +2.9.4 + diff --git a/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_PRELOAD.patch b/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_PRELOAD.patch new file mode 100644 index 00000000000..76be2a3308f --- /dev/null +++ b/pkgs/development/libraries/glibc/CVE-2017-1000366-rtld-LD_PRELOAD.patch @@ -0,0 +1,115 @@ +From 65ff0b7a085b85271ec8fde99f542281b495e3bc Mon Sep 17 00:00:00 2001 +Message-Id: <65ff0b7a085b85271ec8fde99f542281b495e3bc.1495998948.git.fweimer@redhat.com> +In-Reply-To: +References: +From: Florian Weimer +Date: Sun, 28 May 2017 20:57:40 +0200 +Subject: [PATCH 2/3] rtld: Reject overly long LD_PRELOAD path elements +To: libc-alpha@sourceware.org + +--- + elf/rtld.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 53 insertions(+), 16 deletions(-) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 824b6cf..30f0cae 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -99,6 +99,22 @@ uintptr_t __pointer_chk_guard_local + strong_alias (__pointer_chk_guard_local, __pointer_chk_guard) + #endif + ++/* Check that AT_SECURE=0, or that the passed name does not contain ++ directories and is not overly long. Reject empty names ++ unconditionally. */ ++static bool ++dso_name_valid_for_suid (const char *p) ++{ ++ if (__glibc_unlikely (__libc_enable_secure)) ++ { ++ /* Ignore pathnames with directories for AT_SECURE=1 ++ programs, and also skip overlong names. */ ++ size_t len = strlen (p); ++ if (len >= NAME_MAX || memchr (p, '/', len) != NULL) ++ return false; ++ } ++ return *p != '\0'; ++} + + /* List of auditing DSOs. */ + static struct audit_list +@@ -716,6 +732,46 @@ static const char *preloadlist attribute_relro; + /* Nonzero if information about versions has to be printed. */ + static int version_info attribute_relro; + ++/* The LD_PRELOAD environment variable gives list of libraries ++ separated by white space or colons that are loaded before the ++ executable's dependencies and prepended to the global scope list. ++ (If the binary is running setuid all elements containing a '/' are ++ ignored since it is insecure.) Return the number of preloads ++ performed. */ ++unsigned int ++handle_ld_preload (const char *preloadlist, struct link_map *main_map) ++{ ++ unsigned int npreloads = 0; ++ const char *p = preloadlist; ++#ifdef PATH_MAX ++ char fname[PATH_MAX]; ++#else ++ char fname[4096]; ++#endif ++ ++ while (*p != '\0') ++ { ++ /* Split preload list at space/colon. */ ++ size_t len = strcspn (p, " :"); ++ if (len > 0 && len < sizeof(fname)) ++ { ++ memcpy (fname, p, len); ++ fname[len] = '\0'; ++ } ++ else ++ fname[0] = '\0'; ++ ++ /* Skip over the substring and the following delimiter. */ ++ p += len; ++ if (*p == ' ' || *p == ':') ++ ++p; ++ ++ if (dso_name_valid_for_suid (fname)) ++ npreloads += do_preload (fname, main_map, "LD_PRELOAD"); ++ } ++ return npreloads; ++} ++ + static void + dl_main (const ElfW(Phdr) *phdr, + ElfW(Word) phnum, +@@ -1462,23 +1514,8 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", + + if (__glibc_unlikely (preloadlist != NULL)) + { +- /* The LD_PRELOAD environment variable gives list of libraries +- separated by white space or colons that are loaded before the +- executable's dependencies and prepended to the global scope +- list. If the binary is running setuid all elements +- containing a '/' are ignored since it is insecure. */ +- char *list = strdupa (preloadlist); +- char *p; +- + HP_TIMING_NOW (start); +- +- /* Prevent optimizing strsep. Speed is not important here. */ +- while ((p = (strsep) (&list, " :")) != NULL) +- if (p[0] != '\0' +- && (__builtin_expect (! __libc_enable_secure, 1) +- || strchr (p, '/') == NULL)) +- npreloads += do_preload (p, main_map, "LD_PRELOAD"); +- ++ npreloads += handle_ld_preload (preloadlist, main_map); + HP_TIMING_NOW (stop); + HP_TIMING_DIFF (diff, start, stop); + HP_TIMING_ACCUM_NT (load_time, diff); +-- +2.9.4 + diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index db80a8be299..7b777b06871 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -59,6 +59,11 @@ stdenv.mkDerivation ({ "/bin:/usr/bin", which is inappropriate on NixOS machines. This patch extends the search path by "/run/current-system/sw/bin". */ ./fix_path_attribute_in_getconf.patch + + /* Stack Clash */ + ./CVE-2017-1000366-rtld-LD_LIBRARY_PATH.patch + ./CVE-2017-1000366-rtld-LD_PRELOAD.patch + ./CVE-2017-1000366-rtld-LD_AUDIT.patch ] ++ lib.optional stdenv.isi686 ./fix-i686-memchr.patch; From 4d93d257f71316d923cedafdcf4d7b9491d1a530 Mon Sep 17 00:00:00 2001 From: mimadrid Date: Sat, 3 Jun 2017 20:44:10 +0200 Subject: [PATCH 17/59] sqlite3: 3.17.0 -> 3.19.2 --- pkgs/development/libraries/sqlite/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/default.nix index a8031716230..eb8eaf8f715 100644 --- a/pkgs/development/libraries/sqlite/default.nix +++ b/pkgs/development/libraries/sqlite/default.nix @@ -3,11 +3,11 @@ assert interactive -> readline != null && ncurses != null; stdenv.mkDerivation { - name = "sqlite-3.17.0"; + name = "sqlite-3.19.2"; src = fetchurl { - url = "http://sqlite.org/2017/sqlite-autoconf-3170000.tar.gz"; - sha256 = "0k472gq0p706jq4529p60znvw02hdf172qxgbdv59q0n7anqbr54"; + url = "http://sqlite.org/2017/sqlite-autoconf-3190200.tar.gz"; + sha256 = "1z1gmiyx68g1yxc3avc9jnan53irnsq2rsyldwyxcfnc07xn2lya"; }; outputs = [ "bin" "dev" "out" ]; From 0977c17f83ae138e6eba8552e53d5f42b7770ee5 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Thu, 22 Jun 2017 01:33:55 +0200 Subject: [PATCH 18/59] sqlite3: 3.19.2 -> 3.19.3 --- pkgs/development/libraries/sqlite/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/default.nix index eb8eaf8f715..5230df99524 100644 --- a/pkgs/development/libraries/sqlite/default.nix +++ b/pkgs/development/libraries/sqlite/default.nix @@ -3,11 +3,11 @@ assert interactive -> readline != null && ncurses != null; stdenv.mkDerivation { - name = "sqlite-3.19.2"; + name = "sqlite-3.19.3"; src = fetchurl { - url = "http://sqlite.org/2017/sqlite-autoconf-3190200.tar.gz"; - sha256 = "1z1gmiyx68g1yxc3avc9jnan53irnsq2rsyldwyxcfnc07xn2lya"; + url = "http://sqlite.org/2017/sqlite-autoconf-3190300.tar.gz"; + sha256 = "00b3l2qglpl1inx21fckiwxnfq5xf6441flc79rqg7zdvh1rq4h6"; }; outputs = [ "bin" "dev" "out" ]; From 5e2df7039ddabb60e2dcd6b378ecffb07c9d5efd Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Thu, 22 Jun 2017 01:34:18 +0200 Subject: [PATCH 19/59] libmicrohttpd: 0.9.53 -> 0.9.55 --- pkgs/development/libraries/libmicrohttpd/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libmicrohttpd/default.nix b/pkgs/development/libraries/libmicrohttpd/default.nix index 0a1fe70bd1d..23e6a37f918 100644 --- a/pkgs/development/libraries/libmicrohttpd/default.nix +++ b/pkgs/development/libraries/libmicrohttpd/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, libgcrypt, curl, gnutls, pkgconfig }: stdenv.mkDerivation rec { - name = "libmicrohttpd-0.9.53"; + name = "libmicrohttpd-0.9.55"; src = fetchurl { url = "mirror://gnu/libmicrohttpd/${name}.tar.gz"; - sha256 = "1i1c7hwjmc4n31cgmfycgi8xsnm3kyc4zzdd4dir6i0z70nyq5cv"; + sha256 = "1y6h1slav5l6k8zyb01dpw65dscdgxxgfa3a0z9qnn7jr66sn70c"; }; outputs = [ "out" "dev" "devdoc" "info" ]; From bf08c50cbceeddcdb2189489e008abf1db2fe44c Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Thu, 22 Jun 2017 01:59:41 +0200 Subject: [PATCH 20/59] cli53: fix eval --- pkgs/tools/admin/cli53/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/admin/cli53/default.nix b/pkgs/tools/admin/cli53/default.nix index 9e0fe230c92..23c35dab57c 100644 --- a/pkgs/tools/admin/cli53/default.nix +++ b/pkgs/tools/admin/cli53/default.nix @@ -15,7 +15,7 @@ python2Packages.buildPythonApplication rec { dns ]; - meta = { + meta = with lib; { description = "CLI tool for the Amazon Route 53 DNS service"; homepage = https://github.com/barnybug/cli53; license = licenses.mit; From c3a8595276ee8ee6f019e1dd3fec6827e1d15c22 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Thu, 22 Jun 2017 02:44:04 +0200 Subject: [PATCH 21/59] cc-wrapper: fix darwin Clang doesn't support -fstack-check=specific, only -fstack-check. Still a noop, though. --- pkgs/build-support/cc-wrapper/add-hardening.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/cc-wrapper/add-hardening.sh b/pkgs/build-support/cc-wrapper/add-hardening.sh index 2419b567d57..ee4a8b6b284 100644 --- a/pkgs/build-support/cc-wrapper/add-hardening.sh +++ b/pkgs/build-support/cc-wrapper/add-hardening.sh @@ -52,7 +52,7 @@ if [[ ! $hardeningDisable =~ "all" ]]; then ;; stackcheck) if [[ -n "$NIX_DEBUG" ]]; then echo HARDENING: enabling stackcheck >&2; fi - hardeningCFlags+=('-fstack-check=specific') + hardeningCFlags+=('-fstack-check') ;; *) echo "Hardening flag unknown: $flag" >&2 From 0737359dd083781ae103595daa31809f70f9ef65 Mon Sep 17 00:00:00 2001 From: Tim Steinbach Date: Thu, 22 Jun 2017 20:20:03 -0400 Subject: [PATCH 22/59] openldap: 2.4.44 -> 2.4.45 --- pkgs/development/libraries/openldap/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/openldap/default.nix b/pkgs/development/libraries/openldap/default.nix index 05c03dcd842..7155d0f48a8 100644 --- a/pkgs/development/libraries/openldap/default.nix +++ b/pkgs/development/libraries/openldap/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, openssl, cyrus_sasl, db, groff, libtool }: stdenv.mkDerivation rec { - name = "openldap-2.4.44"; + name = "openldap-2.4.45"; src = fetchurl { url = "http://www.openldap.org/software/download/OpenLDAP/openldap-release/${name}.tgz"; - sha256 = "0044p20hx07fwgw2mbwj1fkx04615hhs1qyx4mawj2bhqvrnppnp"; + sha256 = "091qvwk5dkcpp17ziabcnh3rg3m7qwzw2pihfcd1d5fdxgywzmnd"; }; # TODO: separate "out" and "bin" From 56761c9b3d6f829a4f80e02d18fff30e8a6af1eb Mon Sep 17 00:00:00 2001 From: Tim Steinbach Date: Thu, 22 Jun 2017 20:27:33 -0400 Subject: [PATCH 23/59] minikube: 0.19.1 -> 0.20.0 --- pkgs/applications/networking/cluster/minikube/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/cluster/minikube/default.nix b/pkgs/applications/networking/cluster/minikube/default.nix index 36e9db7323d..5cdb30b3f00 100644 --- a/pkgs/applications/networking/cluster/minikube/default.nix +++ b/pkgs/applications/networking/cluster/minikube/default.nix @@ -14,15 +14,15 @@ let # instead, we download localkube ourselves and shove it into the minikube binary. The versions URL that minikube uses is # currently https://storage.googleapis.com/minikube/k8s_releases.json - localkube-version = "1.6.0"; + localkube-version = "1.6.3"; localkube-binary = fetchurl { url = "https://storage.googleapis.com/minikube/k8sReleases/v${localkube-version}/localkube-linux-amd64"; - sha256 = "0zx0c9fwairvga1g1112l5g5pspm2m9wxb42qgfxfgyidywvirha"; + sha256 = "1fmxxjv1bxrfngc4ykfgg76b79dh8pq0k1gsbzhiy3hhrppfqylm"; }; in buildGoPackage rec { pname = "minikube"; name = "${pname}-${version}"; - version = "0.19.1"; + version = "0.20.0"; goPackagePath = "k8s.io/minikube"; @@ -30,7 +30,7 @@ in buildGoPackage rec { owner = "kubernetes"; repo = "minikube"; rev = "v${version}"; - sha256 = "19kw2xhpcbyh32im0lnvajcjf1f8p357vhggk0jl342a23vr3rxl"; + sha256 = "0bly2phy67x4ckcg46g6r4kqfdpjfs1cb3588a900m8b4xyavvvb"; }; # kubernetes is here only to shut up a loud warning when generating the completions below. minikube checks very eagerly From a4252649bfa0a885a69785718ca624e3eae65595 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Mon, 26 Jun 2017 01:12:11 +0200 Subject: [PATCH 24/59] Revert "cc-wrapper: fix darwin" This reverts commit c3a8595276ee8ee6f019e1dd3fec6827e1d15c22. The stack protector hardening breaks the llvm_4 build. --- pkgs/build-support/cc-wrapper/add-hardening.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/cc-wrapper/add-hardening.sh b/pkgs/build-support/cc-wrapper/add-hardening.sh index ee4a8b6b284..2419b567d57 100644 --- a/pkgs/build-support/cc-wrapper/add-hardening.sh +++ b/pkgs/build-support/cc-wrapper/add-hardening.sh @@ -52,7 +52,7 @@ if [[ ! $hardeningDisable =~ "all" ]]; then ;; stackcheck) if [[ -n "$NIX_DEBUG" ]]; then echo HARDENING: enabling stackcheck >&2; fi - hardeningCFlags+=('-fstack-check') + hardeningCFlags+=('-fstack-check=specific') ;; *) echo "Hardening flag unknown: $flag" >&2 From d42f502c84805e85957b264a93f4cc196d41bed9 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Mon, 26 Jun 2017 01:12:38 +0200 Subject: [PATCH 25/59] Revert "cc-wrapper: add stackcheck hardening (stack clash)" This reverts commit 4150f5e8ba650416dcb8956c9835885cc6a2a80d. The stack protector hardening breaks the llvm_4 build. --- pkgs/build-support/cc-wrapper/add-hardening.sh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/add-hardening.sh b/pkgs/build-support/cc-wrapper/add-hardening.sh index 2419b567d57..b98833b3513 100644 --- a/pkgs/build-support/cc-wrapper/add-hardening.sh +++ b/pkgs/build-support/cc-wrapper/add-hardening.sh @@ -1,4 +1,4 @@ -hardeningFlags=(fortify stackprotector pic strictoverflow format relro bindnow stackcheck) +hardeningFlags=(fortify stackprotector pic strictoverflow format relro bindnow) hardeningFlags+=("${hardeningEnable[@]}") hardeningCFlags=() hardeningLDFlags=() @@ -50,11 +50,7 @@ if [[ ! $hardeningDisable =~ "all" ]]; then if [[ -n "$NIX_DEBUG" ]]; then echo HARDENING: enabling bindnow >&2; fi hardeningLDFlags+=('-z' 'now') ;; - stackcheck) - if [[ -n "$NIX_DEBUG" ]]; then echo HARDENING: enabling stackcheck >&2; fi - hardeningCFlags+=('-fstack-check=specific') - ;; - *) + *) echo "Hardening flag unknown: $flag" >&2 ;; esac From 7cfd1c8c1bb04c0d42db3cb9a90f6791b9196b21 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Mon, 26 Jun 2017 01:33:53 +0200 Subject: [PATCH 26/59] glibc: fix i686 build --- pkgs/development/libraries/glibc/common.nix | 5 ++- .../glibc/i686-fix-vectorized-strcspn.patch | 42 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/glibc/i686-fix-vectorized-strcspn.patch diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 7b777b06871..647a34e95db 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -65,7 +65,10 @@ stdenv.mkDerivation ({ ./CVE-2017-1000366-rtld-LD_PRELOAD.patch ./CVE-2017-1000366-rtld-LD_AUDIT.patch ] - ++ lib.optional stdenv.isi686 ./fix-i686-memchr.patch; + ++ lib.optionals stdenv.isi686 [ + ./fix-i686-memchr.patch + ./i686-fix-vectorized-strcspn.patch + ]; postPatch = # Needed for glibc to build with the gnumake 3.82 diff --git a/pkgs/development/libraries/glibc/i686-fix-vectorized-strcspn.patch b/pkgs/development/libraries/glibc/i686-fix-vectorized-strcspn.patch new file mode 100644 index 00000000000..ba4ec7c60cb --- /dev/null +++ b/pkgs/development/libraries/glibc/i686-fix-vectorized-strcspn.patch @@ -0,0 +1,42 @@ +From adc7e06fb412a2a1ee52f8cb788caf436335b9f3 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Wed, 14 Jun 2017 08:11:22 +0200 +Subject: [PATCH] i686: Add missing IS_IN (libc) guards to vectorized strcspn + +Since commit d957c4d3fa48d685ff2726c605c988127ef99395 (i386: Compile +rtld-*.os with -mno-sse -mno-mmx -mfpmath=387), vector intrinsics can +no longer be used in ld.so, even if the compiled code never makes it +into the final ld.so link. This commit adds the missing IS_IN (libc) +guard to the SSE 4.2 strcspn implementation, so that it can be used from +ld.so in the future. + +(cherry picked from commit 69052a3a95da37169a08f9e59b2cc1808312753c) +--- + ChangeLog | 5 +++++ + sysdeps/i386/i686/multiarch/strcspn-c.c | 6 ++++-- + sysdeps/i386/i686/multiarch/varshift.c | 4 +++- + 3 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/sysdeps/i386/i686/multiarch/strcspn-c.c b/sysdeps/i386/i686/multiarch/strcspn-c.c +index 6d61e19..ec230fb 100644 +--- a/sysdeps/i386/i686/multiarch/strcspn-c.c ++++ b/sysdeps/i386/i686/multiarch/strcspn-c.c +@@ -1,2 +1,4 @@ +-#define __strcspn_sse2 __strcspn_ia32 +-#include ++#if IS_IN (libc) ++# define __strcspn_sse2 __strcspn_ia32 ++# include ++#endif +diff --git a/sysdeps/i386/i686/multiarch/varshift.c b/sysdeps/i386/i686/multiarch/varshift.c +index 7760b96..6742a35 100644 +--- a/sysdeps/i386/i686/multiarch/varshift.c ++++ b/sysdeps/i386/i686/multiarch/varshift.c +@@ -1 +1,3 @@ +-#include ++#if IS_IN (libc) ++# include ++#endif +-- +2.9.3 + From 639b74e7bec3e743bd76b15d6ca8308e0c548cd6 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Mon, 26 Jun 2017 02:23:59 +0200 Subject: [PATCH 27/59] Revert "linux: patch CVE-2017-1000364 (stack clash)" This reverts commit aab71b31d5030bea94804d3677a3ffbc60e1876a. This was integrated into the stable 4.9 and 4.11 kernels. --- pkgs/os-specific/linux/kernel/patches.nix | 19 ------------------- pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 21 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index 3e658e55dac..1747d34fe11 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -156,23 +156,4 @@ rec { sha256 = "10dmv3d3gj8rvj9h40js4jh8xbr5wyaqiy0kd819mya441mj8ll2"; }; }; - - # CVE-2017-1000364 (stack clash) - mm_larger_stack_guard_gap_4_9 = rec - { name = "mm-larger-stack-guard-gap-between-vmas.patch"; - patch = fetchpatch { - inherit name; - url = "https://anonscm.debian.org/cgit/kernel/linux.git/plain/debian/patches/bugfix/all/mm-enlarge-stack-guard-gap.patch?h=debian/4.9.30-2%2bdeb9u1_bpo8%2b1"; - sha256 = "0bl7w1zgcy691avp54p6mvzdam6snrb7pz3hywsf2g2mcxjkyja5"; - }; - }; - - mm_larger_stack_guard_gap_4_11 = rec - { name = "mm-larger-stack-guard-gap-between-vmas.patch"; - patch = fetchpatch { - inherit name; - url = "https://anonscm.debian.org/cgit/kernel/linux.git/plain/debian/patches/bugfix/all/mm-larger-stack-guard-gap-between-vmas.patch?h=debian/4.11.6-1"; - sha256 = "19bakn3119v5jkhh4w7x3d50py9an1w8h7v3mmy7y2l2agj4mn3i"; - }; - }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ab5950d5614..2f64f901dfb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11921,7 +11921,6 @@ with pkgs; kernelPatches.p9_fixes kernelPatches.cpu-cgroup-v2."4.9" kernelPatches.modinst_arg_list_too_long - kernelPatches.mm_larger_stack_guard_gap_4_9 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu @@ -11938,7 +11937,6 @@ with pkgs; # when adding a new linux version kernelPatches.cpu-cgroup-v2."4.11" kernelPatches.modinst_arg_list_too_long - kernelPatches.mm_larger_stack_guard_gap_4_11 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu From 358470763822d490fb36f8e5e3eca6f1e4c8378f Mon Sep 17 00:00:00 2001 From: Christian Albrecht Date: Sun, 25 Jun 2017 16:03:30 +0200 Subject: [PATCH 28/59] nixos/boot/stage-1: fix failing nixos-rebuild switch because of blkid output old version of blkid used to output version information including libblkid version when invoked with --help parameter new version does not output libblkid version when invoked with --help parameter fix is to invoke blkid with -V parameter to output version including libblkid in both cases --- nixos/modules/system/boot/stage-1.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 73608a0e27f..02870878c0f 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -135,7 +135,7 @@ let $out/bin/ash -c 'echo hello world' | grep "hello world" export LD_LIBRARY_PATH=$out/lib $out/bin/mount --help 2>&1 | grep -q "BusyBox" - $out/bin/blkid --help 2>&1 | grep -q 'libblkid' + $out/bin/blkid -V 2>&1 | grep -q 'libblkid' $out/bin/udevadm --version $out/bin/dmsetup --version 2>&1 | tee -a log | grep -q "version:" LVM_SYSTEM_DIR=$out $out/bin/lvm version 2>&1 | tee -a log | grep -q "LVM" From cdc5cf52c1e1a18e62bbd85ca404492e9bd3023a Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:35:23 -0300 Subject: [PATCH 29/59] cygwin: rebase fixes - use fixupOutputsHook to find libs in all outputs - don't rebase symlinks --- pkgs/stdenv/cygwin/rebase-i686.sh | 6 +++--- pkgs/stdenv/cygwin/rebase-x86_64.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/stdenv/cygwin/rebase-i686.sh b/pkgs/stdenv/cygwin/rebase-i686.sh index e97dc66c0ad..091c9044d93 100644 --- a/pkgs/stdenv/cygwin/rebase-i686.sh +++ b/pkgs/stdenv/cygwin/rebase-i686.sh @@ -1,10 +1,10 @@ -postFixupHooks+=(_cygwinFixAutoImageBase) +fixupOutputHooks+=(_cygwinFixAutoImageBase) _cygwinFixAutoImageBase() { - if [ "$dontRebase" == 1 ]; then + if [ "$dontRebase" == 1 ] || [ ! -d "$prefix" ]; then return fi - find $out -name "*.dll" | while read DLL; do + find "$prefix" -name "*.dll" -type f | while read DLL; do if [ -f /etc/rebasenix.nextbase ]; then NEXTBASE="$( Date: Tue, 23 May 2017 10:35:28 -0300 Subject: [PATCH 30/59] cygwin: force native symlinks for libraries This will override the existing winsymlinks setting. nativestrict will cause ln to fail if it's unable to create a native symlink. Native symlinks are required for the windows dll loader to find the libraries. This script is also used for cross-mingw, but setting CYGWIN shouldn't cause a problem. --- pkgs/build-support/setup-hooks/win-dll-link.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/setup-hooks/win-dll-link.sh b/pkgs/build-support/setup-hooks/win-dll-link.sh index 634a9d18f00..9658b9f8259 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 From 23efc95a742cb1bfe271d643ed5b34d9bd02e181 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:35:33 -0300 Subject: [PATCH 31/59] gzip: remove cygwin hack The file being patched doesn't exist any more, and gzip now builds on cygwin without this. --- pkgs/tools/compression/gzip/default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/tools/compression/gzip/default.nix b/pkgs/tools/compression/gzip/default.nix index 5a27d336c29..cb7dc65c710 100644 --- a/pkgs/tools/compression/gzip/default.nix +++ b/pkgs/tools/compression/gzip/default.nix @@ -15,10 +15,6 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ xz.bin ]; - preConfigure = if stdenv.isCygwin then '' - sed -i lib/fpending.h -e 's,include ,,' - '' else null; - # In stdenv-linux, prevent a dependency on bootstrap-tools. makeFlags = "SHELL=/bin/sh GREP=grep"; From 504f11bbab4d55ea4606511392033173d1dfe507 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:35:42 -0300 Subject: [PATCH 32/59] glib: allow cygwin --- pkgs/development/libraries/glib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 96175d04a4e..84c04468277 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, gettext, perl, python +{ stdenv, hostPlatform, fetchurl, pkgconfig, gettext, perl, python , libiconv, libintlOrEmpty, zlib, libffi, pcre, libelf # use utillinuxMinimal to avoid circular dependency (utillinux, systemd, glib) , utillinuxMinimal ? null @@ -9,7 +9,7 @@ with stdenv.lib; -assert stdenv.isFreeBSD || stdenv.isDarwin || stdenv.cc.isGNU; +assert stdenv.isFreeBSD || stdenv.isDarwin || stdenv.cc.isGNU || hostPlatform.isCygwin; assert stdenv.isLinux -> utillinuxMinimal != null; # TODO: From f254af9c1934ad4e1b10853d5478a297f91ed662 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:35:47 -0300 Subject: [PATCH 33/59] w3m: remove old cygwin patch --- .../networking/browsers/w3m/cygwin.patch | 1710 ----------------- .../networking/browsers/w3m/default.nix | 3 +- 2 files changed, 1 insertion(+), 1712 deletions(-) delete mode 100644 pkgs/applications/networking/browsers/w3m/cygwin.patch diff --git a/pkgs/applications/networking/browsers/w3m/cygwin.patch b/pkgs/applications/networking/browsers/w3m/cygwin.patch deleted file mode 100644 index 767cc289b5f..00000000000 --- a/pkgs/applications/networking/browsers/w3m/cygwin.patch +++ /dev/null @@ -1,1710 +0,0 @@ -diff -ur w3m-0.5.3/config.guess new/w3m-0.5.3/config.guess ---- w3m-0.5.3/config.guess 2004-08-04 13:32:27.000000000 -0400 -+++ w3m-0.5.3/config.guess 2013-04-28 18:43:59.480227700 -0400 -@@ -1,13 +1,14 @@ - #! /bin/sh - # Attempt to guess a canonical system name. - # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, --# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -+# 2011, 2012, 2013 Free Software Foundation, Inc. - --timestamp='2004-03-12' -+timestamp='2012-12-29' - - # This file is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 2 of the License, or -+# the Free Software Foundation; either version 3 of the License, or - # (at your option) any later version. - # - # This program is distributed in the hope that it will be useful, but -@@ -16,24 +17,22 @@ - # General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# along with this program; if not, see . - # - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under --# the same distribution terms that you use for the rest of that program. -- --# Originally written by Per Bothner . --# Please send patches to . Submit a context --# diff and a properly formatted ChangeLog entry. -+# the same distribution terms that you use for the rest of that -+# program. This Exception is an additional permission under section 7 -+# of the GNU General Public License, version 3 ("GPLv3"). -+# -+# Originally written by Per Bothner. - # --# This script attempts to guess a canonical system name similar to --# config.sub. If it succeeds, it prints the system name on stdout, and --# exits with 0. Otherwise, it exits with 1. -+# You can get the latest version of this script from: -+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - # --# The plan is that this can be called by configure scripts if you --# don't specify an explicit build system type. -+# Please send patches with a ChangeLog entry to config-patches@gnu.org. -+ - - me=`echo "$0" | sed -e 's,.*/,,'` - -@@ -53,8 +52,9 @@ - GNU config.guess ($timestamp) - - Originally written by Per Bothner. --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, -+2012, 2013 Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -@@ -66,11 +66,11 @@ - while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) -- echo "$timestamp" ; exit 0 ;; -+ echo "$timestamp" ; exit ;; - --version | -v ) -- echo "$version" ; exit 0 ;; -+ echo "$version" ; exit ;; - --help | --h* | -h ) -- echo "$usage"; exit 0 ;; -+ echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. -@@ -104,7 +104,7 @@ - trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; - trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; - : ${TMPDIR=/tmp} ; -- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || -+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -@@ -123,7 +123,7 @@ - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; --esac ;' -+esac ; set_cc_for_build= ;' - - # This is needed to find uname on a Pyramid OSx when run in the BSD universe. - # (ghazi@noc.rutgers.edu 1994-08-24) -@@ -141,7 +141,7 @@ - case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or -- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, -+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward -@@ -158,6 +158,7 @@ - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; -+ sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched -@@ -166,7 +167,7 @@ - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ -- | grep __ELF__ >/dev/null -+ | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? -@@ -176,7 +177,7 @@ - fi - ;; - *) -- os=netbsd -+ os=netbsd - ;; - esac - # The OS release -@@ -196,71 +197,34 @@ - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" -- exit 0 ;; -- amd64:OpenBSD:*:*) -- echo x86_64-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- amiga:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- arc:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- cats:OpenBSD:*:*) -- echo arm-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- hp300:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mac68k:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- macppc:OpenBSD:*:*) -- echo powerpc-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mvme68k:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mvme88k:OpenBSD:*:*) -- echo m88k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mvmeppc:OpenBSD:*:*) -- echo powerpc-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- pegasos:OpenBSD:*:*) -- echo powerpc-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- pmax:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- sgi:OpenBSD:*:*) -- echo mipseb-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- sun3:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- wgrisc:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; -+ *:Bitrig:*:*) -+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` -+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} -+ exit ;; - *:OpenBSD:*:*) -- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` -+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} -+ exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; -+ *:SolidBSD:*:*) -+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} -+ exit ;; - macppc:MirBSD:*:*) -- echo powerppc-unknown-mirbsd${UNAME_RELEASE} -- exit 0 ;; -+ echo powerpc-unknown-mirbsd${UNAME_RELEASE} -+ exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) -- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` -+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on -@@ -306,40 +270,46 @@ - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- exit 0 ;; -- Alpha*:OpenVMS:*:*) -- echo alpha-hp-vms -- exit 0 ;; -+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code. -+ exitcode=$? -+ trap '' 0 -+ exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix -- exit 0 ;; -+ exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 -- exit 0 ;; -+ exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 -- exit 0;; -+ exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos -- exit 0 ;; -+ exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos -- exit 0 ;; -+ exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition -- exit 0 ;; -+ exit ;; -+ *:z/VM:*:*) -+ echo s390-ibm-zvmoe -+ exit ;; - *:OS400:*:*) -- echo powerpc-ibm-os400 -- exit 0 ;; -+ echo powerpc-ibm-os400 -+ exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} -- exit 0;; -+ exit ;; -+ arm*:riscos:*:*|arm*:RISCOS:*:*) -+ echo arm-unknown-riscos -+ exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp -- exit 0;; -+ exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then -@@ -347,32 +317,51 @@ - else - echo pyramid-pyramid-bsd - fi -- exit 0 ;; -+ exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 -- exit 0 ;; -+ exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 -- exit 0 ;; -- DRS?6000:UNIX_SV:4.2*:7*) -+ exit ;; -+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in -- sparc) echo sparc-icl-nx7 && exit 0 ;; -+ sparc) echo sparc-icl-nx7; exit ;; - esac ;; -+ s390x:SunOS:*:*) -+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -- i86pc:SunOS:5.*:*) -- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ exit ;; -+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) -+ echo i386-pc-auroraux${UNAME_RELEASE} -+ exit ;; -+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) -+ eval $set_cc_for_build -+ SUN_ARCH="i386" -+ # If there is a compiler, see if it is configured for 64-bit objects. -+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. -+ # This test works for both compilers. -+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then -+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ -+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ -+ grep IS_64BIT_ARCH >/dev/null -+ then -+ SUN_ARCH="x86_64" -+ fi -+ fi -+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) -@@ -381,10 +370,10 @@ - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` -- exit 0 ;; -+ exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 -@@ -396,10 +385,10 @@ - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac -- exit 0 ;; -+ exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor -@@ -409,41 +398,41 @@ - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) -- echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ echo m68k-atari-mint${UNAME_RELEASE} -+ exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) -- echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ echo m68k-atari-mint${UNAME_RELEASE} -+ exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) -- echo m68k-milan-mint${UNAME_RELEASE} -- exit 0 ;; -+ echo m68k-milan-mint${UNAME_RELEASE} -+ exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) -- echo m68k-hades-mint${UNAME_RELEASE} -- exit 0 ;; -+ echo m68k-hades-mint${UNAME_RELEASE} -+ exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) -- echo m68k-unknown-mint${UNAME_RELEASE} -- exit 0 ;; -+ echo m68k-unknown-mint${UNAME_RELEASE} -+ exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 -- exit 0 ;; -+ exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -@@ -467,35 +456,36 @@ - exit (-1); - } - EOF -- $CC_FOR_BUILD -o $dummy $dummy.c \ -- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ -- && exit 0 -+ $CC_FOR_BUILD -o $dummy $dummy.c && -+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && -+ SYSTEM_NAME=`$dummy $dummyarg` && -+ { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax -- exit 0 ;; -+ exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax -- exit 0 ;; -+ exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax -- exit 0 ;; -+ exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix -- exit 0 ;; -+ exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 -- exit 0 ;; -+ exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 -- exit 0 ;; -+ exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 -- exit 0 ;; -+ exit ;; - AViiON:dgux:*:*) -- # DG/UX returns AViiON for all architectures -- UNAME_PROCESSOR=`/usr/bin/uname -p` -+ # DG/UX returns AViiON for all architectures -+ UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ -@@ -508,29 +498,29 @@ - else - echo i586-dg-dgux${UNAME_RELEASE} - fi -- exit 0 ;; -+ exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 -- exit 0 ;; -+ exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 -- exit 0 ;; -+ exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 -- exit 0 ;; -+ exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd -- exit 0 ;; -+ exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` -- exit 0 ;; -+ exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. -- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id -- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' -+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id -+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix -- exit 0 ;; -+ exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` -@@ -538,7 +528,7 @@ - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} -- exit 0 ;; -+ exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build -@@ -553,15 +543,19 @@ - exit(0); - } - EOF -- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 -- echo rs6000-ibm-aix3.2.5 -+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` -+ then -+ echo "$SYSTEM_NAME" -+ else -+ echo rs6000-ibm-aix3.2.5 -+ fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi -- exit 0 ;; -- *:AIX:*:[45]) -+ exit ;; -+ *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 -@@ -574,28 +568,28 @@ - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} -- exit 0 ;; -+ exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix -- exit 0 ;; -+ exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 -- exit 0 ;; -+ exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to -- exit 0 ;; # report: romp-ibm BSD 4.3 -+ exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx -- exit 0 ;; -+ exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 -- exit 0 ;; -+ exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd -- exit 0 ;; -+ exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 -- exit 0 ;; -+ exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in -@@ -604,52 +598,52 @@ - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` -- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -- case "${sc_cpu_version}" in -- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -- 532) # CPU_PA_RISC2_0 -- case "${sc_kernel_bits}" in -- 32) HP_ARCH="hppa2.0n" ;; -- 64) HP_ARCH="hppa2.0w" ;; -+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -+ case "${sc_cpu_version}" in -+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -+ 532) # CPU_PA_RISC2_0 -+ case "${sc_kernel_bits}" in -+ 32) HP_ARCH="hppa2.0n" ;; -+ 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 -- esac ;; -- esac -+ esac ;; -+ esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -+ sed 's/^ //' << EOF >$dummy.c - -- #define _HPUX_SOURCE -- #include -- #include -- -- int main () -- { -- #if defined(_SC_KERNEL_BITS) -- long bits = sysconf(_SC_KERNEL_BITS); -- #endif -- long cpu = sysconf (_SC_CPU_VERSION); -- -- switch (cpu) -- { -- case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -- case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -- case CPU_PA_RISC2_0: -- #if defined(_SC_KERNEL_BITS) -- switch (bits) -- { -- case 64: puts ("hppa2.0w"); break; -- case 32: puts ("hppa2.0n"); break; -- default: puts ("hppa2.0"); break; -- } break; -- #else /* !defined(_SC_KERNEL_BITS) */ -- puts ("hppa2.0"); break; -- #endif -- default: puts ("hppa1.0"); break; -- } -- exit (0); -- } -+ #define _HPUX_SOURCE -+ #include -+ #include -+ -+ int main () -+ { -+ #if defined(_SC_KERNEL_BITS) -+ long bits = sysconf(_SC_KERNEL_BITS); -+ #endif -+ long cpu = sysconf (_SC_CPU_VERSION); -+ -+ switch (cpu) -+ { -+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -+ case CPU_PA_RISC2_0: -+ #if defined(_SC_KERNEL_BITS) -+ switch (bits) -+ { -+ case 64: puts ("hppa2.0w"); break; -+ case 32: puts ("hppa2.0n"); break; -+ default: puts ("hppa2.0"); break; -+ } break; -+ #else /* !defined(_SC_KERNEL_BITS) */ -+ puts ("hppa2.0"); break; -+ #endif -+ default: puts ("hppa1.0"); break; -+ } -+ exit (0); -+ } - EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa -@@ -657,9 +651,19 @@ - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then -- # avoid double evaluation of $set_cc_for_build -- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build -- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null -+ eval $set_cc_for_build -+ -+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating -+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler -+ # generating 64-bit code. GNU and HP use different nomenclature: -+ # -+ # $ CC_FOR_BUILD=cc ./config.guess -+ # => hppa2.0w-hp-hpux11.23 -+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess -+ # => hppa64-hp-hpux11.23 -+ -+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | -+ grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else -@@ -667,11 +671,11 @@ - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} -- exit 0 ;; -+ exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} -- exit 0 ;; -+ exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -@@ -699,224 +703,269 @@ - exit (0); - } - EOF -- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 -+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 -- exit 0 ;; -+ exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd -- exit 0 ;; -+ exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd -- exit 0 ;; -+ exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix -- exit 0 ;; -+ exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf -- exit 0 ;; -+ exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf -- exit 0 ;; -+ exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi -- exit 0 ;; -+ exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites -- exit 0 ;; -+ exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd -- exit 0 ;; -+ exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit 0 ;; -+ exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd -- exit 0 ;; -+ exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd -- exit 0 ;; -+ exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd -- exit 0 ;; -+ exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - *:UNICOS/mp:*:*) -- echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -- exit 0 ;; -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; - 5000:UNIX_System_V:4.*:*) -- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -- exit 0 ;; -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:FreeBSD:*:*) -- # Determine whether the default compiler uses glibc. -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -- #include -- #if __GLIBC__ >= 2 -- LIBC=gnu -- #else -- LIBC= -- #endif --EOF -- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` -- # GNU/KFreeBSD systems have a "k" prefix to indicate we are using -- # FreeBSD's kernel, but not the complete OS. -- case ${LIBC} in gnu) kernel_only='k' ;; esac -- echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} -- exit 0 ;; -+ UNAME_PROCESSOR=`/usr/bin/uname -p` -+ case ${UNAME_PROCESSOR} in -+ amd64) -+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ *) -+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ esac -+ exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin -- exit 0 ;; -- i*:MINGW*:*) -+ exit ;; -+ *:MINGW64*:*) -+ echo ${UNAME_MACHINE}-pc-mingw64 -+ exit ;; -+ *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 -- exit 0 ;; -+ exit ;; -+ i*:MSYS*:*) -+ echo ${UNAME_MACHINE}-pc-msys -+ exit ;; -+ i*:windows32*:*) -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 -+ exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 -- exit 0 ;; -- x86:Interix*:[34]*) -- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' -- exit 0 ;; -+ exit ;; -+ *:Interix*:*) -+ case ${UNAME_MACHINE} in -+ x86) -+ echo i586-pc-interix${UNAME_RELEASE} -+ exit ;; -+ authenticamd | genuineintel | EM64T) -+ echo x86_64-unknown-interix${UNAME_RELEASE} -+ exit ;; -+ IA64) -+ echo ia64-unknown-interix${UNAME_RELEASE} -+ exit ;; -+ esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks -- exit 0 ;; -+ exit ;; -+ 8664:Windows_NT:*) -+ echo x86_64-pc-mks -+ exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix -- exit 0 ;; -+ exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin -- exit 0 ;; -+ exit ;; -+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) -+ echo x86_64-unknown-cygwin -+ exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin -- exit 0 ;; -+ exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` -- exit 0 ;; -+ exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu -- exit 0 ;; -+ exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix -- exit 0 ;; -+ exit ;; -+ aarch64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ aarch64_be:Linux:*:*) -+ UNAME_MACHINE=aarch64_be -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ alpha:Linux:*:*) -+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in -+ EV5) UNAME_MACHINE=alphaev5 ;; -+ EV56) UNAME_MACHINE=alphaev56 ;; -+ PCA56) UNAME_MACHINE=alphapca56 ;; -+ PCA57) UNAME_MACHINE=alphapca56 ;; -+ EV6) UNAME_MACHINE=alphaev6 ;; -+ EV67) UNAME_MACHINE=alphaev67 ;; -+ EV68*) UNAME_MACHINE=alphaev68 ;; -+ esac -+ objdump --private-headers /bin/sh | grep -q ld.so.1 -+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi -+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -+ exit ;; - arm*:Linux:*:*) -+ eval $set_cc_for_build -+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ARM_EABI__ -+ then -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ else -+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ARM_PCS_VFP -+ then -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ else -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf -+ fi -+ fi -+ exit ;; -+ avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - cris:Linux:*:*) -- echo cris-axis-linux-gnu -- exit 0 ;; -- ia64:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -- m32r*:Linux:*:*) -+ echo ${UNAME_MACHINE}-axis-linux-gnu -+ exit ;; -+ crisv32:Linux:*:*) -+ echo ${UNAME_MACHINE}-axis-linux-gnu -+ exit ;; -+ frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -- m68*:Linux:*:*) -+ exit ;; -+ hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -- mips:Linux:*:*) -+ exit ;; -+ i*86:Linux:*:*) -+ LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -- #undef CPU -- #undef mips -- #undef mipsel -- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -- CPU=mipsel -- #else -- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -- CPU=mips -- #else -- CPU= -- #endif -+ #ifdef __dietlibc__ -+ LIBC=dietlibc - #endif - EOF -- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` -- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 -- ;; -- mips64:Linux:*:*) -+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` -+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" -+ exit ;; -+ ia64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ m32r*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ m68*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU -- #undef mips64 -- #undef mips64el -+ #undef ${UNAME_MACHINE} -+ #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -- CPU=mips64el -+ CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -- CPU=mips64 -+ CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif - EOF -- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` -- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 -+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` -+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; -- ppc:Linux:*:*) -- echo powerpc-unknown-linux-gnu -- exit 0 ;; -- ppc64:Linux:*:*) -- echo powerpc64-unknown-linux-gnu -- exit 0 ;; -- alpha:Linux:*:*) -- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in -- EV5) UNAME_MACHINE=alphaev5 ;; -- EV56) UNAME_MACHINE=alphaev56 ;; -- PCA56) UNAME_MACHINE=alphapca56 ;; -- PCA57) UNAME_MACHINE=alphapca56 ;; -- EV6) UNAME_MACHINE=alphaev6 ;; -- EV67) UNAME_MACHINE=alphaev67 ;; -- EV68*) UNAME_MACHINE=alphaev68 ;; -- esac -- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null -- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi -- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -- exit 0 ;; -+ or32:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ padre:Linux:*:*) -+ echo sparc-unknown-linux-gnu -+ exit ;; -+ parisc64:Linux:*:* | hppa64:Linux:*:*) -+ echo hppa64-unknown-linux-gnu -+ exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in -@@ -924,115 +973,71 @@ - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac -- exit 0 ;; -- parisc64:Linux:*:* | hppa64:Linux:*:*) -- echo hppa64-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ ppc64:Linux:*:*) -+ echo powerpc64-unknown-linux-gnu -+ exit ;; -+ ppc:Linux:*:*) -+ echo powerpc-unknown-linux-gnu -+ exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux -- exit 0 ;; -+ exit ;; - sh64*:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ tile*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ vax:Linux:*:*) -+ echo ${UNAME_MACHINE}-dec-linux-gnu -+ exit ;; - x86_64:Linux:*:*) -- echo x86_64-unknown-linux-gnu -- exit 0 ;; -- i*86:Linux:*:*) -- # The BFD linker knows what the default object file format is, so -- # first see if it will tell us. cd to the root directory to prevent -- # problems with other programs or directories called `ld' in the path. -- # Set LC_ALL=C to ensure ld outputs messages in English. -- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ -- | sed -ne '/supported targets:/!d -- s/[ ][ ]*/ /g -- s/.*supported targets: *// -- s/ .*// -- p'` -- case "$ld_supported_targets" in -- elf32-i386) -- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" -- ;; -- a.out-i386-linux) -- echo "${UNAME_MACHINE}-pc-linux-gnuaout" -- exit 0 ;; -- coff-i386) -- echo "${UNAME_MACHINE}-pc-linux-gnucoff" -- exit 0 ;; -- "") -- # Either a pre-BFD a.out linker (linux-gnuoldld) or -- # one that does not give us useful --help. -- echo "${UNAME_MACHINE}-pc-linux-gnuoldld" -- exit 0 ;; -- esac -- # Determine whether the default compiler is a.out or elf -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -- #include -- #ifdef __ELF__ -- # ifdef __GLIBC__ -- # if __GLIBC__ >= 2 -- LIBC=gnu -- # else -- LIBC=gnulibc1 -- # endif -- # else -- LIBC=gnulibc1 -- # endif -- #else -- #ifdef __INTEL_COMPILER -- LIBC=gnu -- #else -- LIBC=gnuaout -- #endif -- #endif -- #ifdef __dietlibc__ -- LIBC=dietlibc -- #endif --EOF -- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` -- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 -- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 -- ;; -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ xtensa*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 -- exit 0 ;; -+ exit ;; - i*86:UNIX_SV:4.2MP:2.*) -- # Unixware is an offshoot of SVR4, but it has its own version -- # number series starting with 2... -- # I am not positive that other SVR4 systems won't match this, -+ # Unixware is an offshoot of SVR4, but it has its own version -+ # number series starting with 2... -+ # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. -- # Use sysv4.2uw... so that sysv4* matches it. -+ # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} -- exit 0 ;; -+ exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx -- exit 0 ;; -+ exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop -- exit 0 ;; -+ exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos -- exit 0 ;; -- i*86:syllable:*:*) -+ exit ;; -+ i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable -- exit 0 ;; -- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) -+ exit ;; -+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp -- exit 0 ;; -+ exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then -@@ -1040,15 +1045,16 @@ - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi -- exit 0 ;; -- i*86:*:5:[78]*) -+ exit ;; -+ i*86:*:5:[678]*) -+ # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} -- exit 0 ;; -+ exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi -- exit 0 ;; -+ exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv -- exit 0 ;; -+ exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv -- exit 0 ;; -+ exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix -- exit 0 ;; -- M68*:*:R3V[567]*:*) -- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; -- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) -+ exit ;; -+ M68*:*:R3V[5678]*:*) -+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; -+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -- && echo i486-ncr-sysv4.3${OS_REL} && exit 0 -+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ -- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; -+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) -- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -- && echo i486-ncr-sysv4 && exit 0 ;; -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4; exit; } ;; -+ NCR*:*:4.2:* | MPRAS*:*:4.2:*) -+ OS_REL='.3' -+ test -r /etc/.relid \ -+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } -+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ -+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } -+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ -+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 -- exit 0 ;; -+ exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) -+ exit ;; -+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 -- exit 0 ;; -+ exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 -- exit 0 ;; -+ exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` -@@ -1140,68 +1159,97 @@ - else - echo ns32k-sni-sysv - fi -- exit 0 ;; -- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -- # says -- echo i586-unisys-sysv4 -- exit 0 ;; -+ exit ;; -+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -+ # says -+ echo i586-unisys-sysv4 -+ exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 -- exit 0 ;; -+ exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 -- exit 0 ;; -+ exit ;; -+ i*86:VOS:*:*) -+ # From Paul.Green@stratus.com. -+ echo ${UNAME_MACHINE}-stratus-vos -+ exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos -- exit 0 ;; -+ exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 -- exit 0 ;; -+ exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then -- echo mips-nec-sysv${UNAME_RELEASE} -+ echo mips-nec-sysv${UNAME_RELEASE} - else -- echo mips-unknown-sysv${UNAME_RELEASE} -+ echo mips-unknown-sysv${UNAME_RELEASE} - fi -- exit 0 ;; -+ exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos -- exit 0 ;; -+ exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos -- exit 0 ;; -+ exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos -- exit 0 ;; -+ exit ;; -+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. -+ echo i586-pc-haiku -+ exit ;; -+ x86_64:Haiku:*:*) -+ echo x86_64-unknown-haiku -+ exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; -+ SX-7:SUPER-UX:*:*) -+ echo sx7-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-8:SUPER-UX:*:*) -+ echo sx8-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-8R:SUPER-UX:*:*) -+ echo sx8r-nec-superux${UNAME_RELEASE} -+ exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:Darwin:*:*) -- case `uname -p` in -- *86) UNAME_PROCESSOR=i686 ;; -- powerpc) UNAME_PROCESSOR=powerpc ;; -+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown -+ case $UNAME_PROCESSOR in -+ i386) -+ eval $set_cc_for_build -+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then -+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ -+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ -+ grep IS_64BIT_ARCH >/dev/null -+ then -+ UNAME_PROCESSOR="x86_64" -+ fi -+ fi ;; -+ unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then -@@ -1209,22 +1257,28 @@ - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:QNX:*:4*) - echo i386-pc-qnx -- exit 0 ;; -+ exit ;; -+ NEO-?:NONSTOP_KERNEL:*:*) -+ echo neo-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSE-*:NONSTOP_KERNEL:*:*) -+ echo nse-tandem-nsk${UNAME_RELEASE} -+ exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux -- exit 0 ;; -+ exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv -- exit 0 ;; -+ exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 -@@ -1235,36 +1289,55 @@ - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 -- exit 0 ;; -+ exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 -- exit 0 ;; -+ exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex -- exit 0 ;; -+ exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 -- exit 0 ;; -+ exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 -- exit 0 ;; -+ exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 -- exit 0 ;; -+ exit ;; - *:ITS:*:*) - echo pdp10-unknown-its -- exit 0 ;; -+ exit ;; - SEI:*:*:SEIUX) -- echo mips-sei-seiux${UNAME_RELEASE} -- exit 0 ;; -+ echo mips-sei-seiux${UNAME_RELEASE} -+ exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` -- exit 0 ;; -+ exit ;; -+ *:*VMS:*:*) -+ UNAME_MACHINE=`(uname -p) 2>/dev/null` -+ case "${UNAME_MACHINE}" in -+ A*) echo alpha-dec-vms ; exit ;; -+ I*) echo ia64-dec-vms ; exit ;; -+ V*) echo vax-dec-vms ; exit ;; -+ esac ;; -+ *:XENIX:*:SysV) -+ echo i386-pc-xenix -+ exit ;; -+ i*86:skyos:*:*) -+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' -+ exit ;; -+ i*86:rdos:*:*) -+ echo ${UNAME_MACHINE}-pc-rdos -+ exit ;; -+ i*86:AROS:*:*) -+ echo ${UNAME_MACHINE}-pc-aros -+ exit ;; -+ x86_64:VMkernel:*:*) -+ echo ${UNAME_MACHINE}-unknown-esx -+ exit ;; - esac - --#echo '(No uname command or uname output not recognized.)' 1>&2 --#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -- - eval $set_cc_for_build - cat >$dummy.c < - printf ("m68k-sony-newsos%s\n", - #ifdef NEWSOS4 -- "4" -+ "4" - #else -- "" -+ "" - #endif -- ); exit (0); -+ ); exit (0); - #endif - #endif - - #if defined (__arm) && defined (__acorn) && defined (__unix) -- printf ("arm-acorn-riscix"); exit (0); -+ printf ("arm-acorn-riscix\n"); exit (0); - #endif - - #if defined (hp300) && !defined (hpux) -@@ -1380,11 +1453,12 @@ - } - EOF - --$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 -+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } - - # Apollos put the system type in the environment. - --test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } -+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - - # Convex versions that predate uname can use getsysinfo(1) - -@@ -1393,22 +1467,22 @@ - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd -- exit 0 ;; -+ exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit 0 ;; -+ exit ;; - c34*) - echo c34-convex-bsd -- exit 0 ;; -+ exit ;; - c38*) - echo c38-convex-bsd -- exit 0 ;; -+ exit ;; - c4*) - echo c4-convex-bsd -- exit 0 ;; -+ exit ;; - esac - fi - -@@ -1419,7 +1493,9 @@ - the operating system you are using. It is advised that you - download the most up to date version of the config scripts from - -- ftp://ftp.gnu.org/pub/gnu/config/ -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -+and -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - - If the version you run ($0) is already up to date, please - send the following data and any information you think might be -diff -ur w3m-0.5.3/main.c new/w3m-0.5.3/main.c ---- w3m-0.5.3/main.c 2011-01-04 04:42:19.000000000 -0500 -+++ w3m-0.5.3/main.c 2013-04-28 18:42:08.408034100 -0400 -@@ -789,7 +789,8 @@ - } - - #ifdef USE_BINMODE_STREAM -- setmode(fileno(stdout), O_BINARY); -+ /* Seems to only be needed for old versions of Cygwin */ -+ /***setmode(fileno(stdout), O_BINARY);***/ - #endif - if (!w3m_dump && !w3m_backend) { - fmInit(); diff --git a/pkgs/applications/networking/browsers/w3m/default.nix b/pkgs/applications/networking/browsers/w3m/default.nix index 637041379db..e7641eb773d 100644 --- a/pkgs/applications/networking/browsers/w3m/default.nix +++ b/pkgs/applications/networking/browsers/w3m/default.nix @@ -38,8 +38,7 @@ stdenv.mkDerivation rec { url = "https://aur.archlinux.org/cgit/aur.git/plain/https.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03"; sha256 = "08skvaha1hjyapsh8zw5dgfy433mw2hk7qy9yy9avn8rjqj7kjxk"; }) - ] ++ optional (graphicsSupport && !x11Support) [ ./no-x11.patch ] - ++ optional stdenv.isCygwin ./cygwin.patch; + ] ++ optional (graphicsSupport && !x11Support) [ ./no-x11.patch ]; buildInputs = [ pkgconfig ncurses boehmgc gettext zlib ] ++ optional sslSupport openssl From 087c32715b9ed50a45e81fc438f179a899ea96e0 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:35:52 -0300 Subject: [PATCH 34/59] python2: copy stub library to output on cygwin --- .../interpreters/python/cpython/2.7/default.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/development/interpreters/python/cpython/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix index c5fa05651bb..34058c558af 100644 --- a/pkgs/development/interpreters/python/cpython/2.7/default.nix +++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl +{ stdenv, hostPlatform, fetchurl , bzip2 , gdbm , fetchpatch @@ -69,7 +69,7 @@ let ./glibc-2.25-enosys.patch - ] ++ optionals stdenv.isCygwin [ + ] ++ optionals hostPlatform.isCygwin [ ./2.5.2-ctypes-util-find_library.patch ./2.5.2-tkinter-x11.patch ./2.6.2-ssl-threads.patch @@ -110,7 +110,7 @@ let "--enable-shared" "--with-threads" "--enable-unicode=ucs4" - ] ++ optionals stdenv.isCygwin [ + ] ++ optionals hostPlatform.isCygwin [ "--with-system-ffi" "--with-system-expat" "ac_cv_func_bind_textdomain_codeset=yes" @@ -118,14 +118,14 @@ let "--disable-toolbox-glue" ]; - postConfigure = if stdenv.isCygwin then '' + postConfigure = if hostPlatform.isCygwin then '' sed -i Makefile -e 's,PYTHONPATH="$(srcdir),PYTHONPATH="$(abs_srcdir),' '' else null; buildInputs = optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc ++ [ bzip2 openssl zlib ] - ++ optionals stdenv.isCygwin [ expat libffi ] + ++ optionals hostPlatform.isCygwin [ expat libffi ] ++ [ db gdbm ncurses sqlite readline ] ++ optionals x11Support [ tcl tk xlibsWrapper libX11 ] ++ optionals stdenv.isDarwin [ CF configd ]; @@ -190,6 +190,8 @@ in stdenv.mkDerivation { find $out -name "*.py" | $out/bin/python -m compileall -q -f -x "lib2to3" -i - find $out -name "*.py" | $out/bin/python -O -m compileall -q -f -x "lib2to3" -i - find $out -name "*.py" | $out/bin/python -OO -m compileall -q -f -x "lib2to3" -i - + '' + optionalString hostPlatform.isCygwin '' + cp libpython2.7.dll.a $out/lib ''; passthru = let From 3c76cd7626dd5db7b3d5a83dbb054cd414631454 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:02 -0300 Subject: [PATCH 35/59] libxslt: fix cygwin libtool error --- pkgs/development/libraries/libxslt/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/libxslt/default.nix b/pkgs/development/libraries/libxslt/default.nix index 4647eecf87d..9e2c05575ec 100644 --- a/pkgs/development/libraries/libxslt/default.nix +++ b/pkgs/development/libraries/libxslt/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, libxml2, findXMLCatalogs, python2 +{ stdenv, hostPlatform, fetchurl, fetchpatch, libxml2, findXMLCatalogs, python2 , cryptoSupport ? false , pythonSupport ? (! stdenv ? cross) }: @@ -18,6 +18,12 @@ stdenv.mkDerivation rec { patches = stdenv.lib.optional stdenv.isSunOS ./patch-ah.patch; + # fixes: can't build x86_64-unknown-cygwin shared library unless -no-undefined is specified + postPatch = optionalString hostPlatform.isCygwin '' + substituteInPlace tests/plugins/Makefile.in \ + --replace 'la_LDFLAGS =' 'la_LDFLAGS = $(WIN32_EXTRA_LDFLAGS)' + ''; + outputs = [ "bin" "dev" "out" "doc" ] ++ stdenv.lib.optional pythonSupport "py"; buildInputs = [ libxml2.dev ] ++ stdenv.lib.optionals pythonSupport [ libxml2.py python2 ]; From 33eec8e105359b1c01490f64f02057bf75a90c09 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:07 -0300 Subject: [PATCH 36/59] ncurses: fix cygwin build --- pkgs/development/libraries/ncurses/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index 46283e371aa..827a556a468 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -61,8 +61,6 @@ stdenv.mkDerivation rec { -e '/CPPFLAGS="$CPPFLAGS/s/ -D_XOPEN_SOURCE_EXTENDED//' \ configure CFLAGS=-D_XOPEN_SOURCE_EXTENDED - '' + lib.optionalString stdenv.isCygwin '' - sed -i -e 's,LIB_SUFFIX="t,LIB_SUFFIX=",' configure ''; enableParallelBuilding = true; @@ -122,7 +120,7 @@ stdenv.mkDerivation rec { moveToOutput "bin/tset" "$out" ''; - preFixup = '' + preFixup = lib.optionalString (!hostPlatform.isCygwin) '' rm "$out"/lib/*.a ''; From 18125e6f50c77d56ba3f7486590db2bfb55a367b Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:12 -0300 Subject: [PATCH 37/59] help2man: help wrapper find libintl on cygwin --- .../tools/misc/help2man/1.40.4-cygwin-nls.patch | 10 +++++----- pkgs/development/tools/misc/help2man/default.nix | 7 ++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pkgs/development/tools/misc/help2man/1.40.4-cygwin-nls.patch b/pkgs/development/tools/misc/help2man/1.40.4-cygwin-nls.patch index 20b99998154..82f8cf1cb37 100644 --- a/pkgs/development/tools/misc/help2man/1.40.4-cygwin-nls.patch +++ b/pkgs/development/tools/misc/help2man/1.40.4-cygwin-nls.patch @@ -16,8 +16,8 @@ that we're trying to help2man). install_preload: install_dirs preload - $(INSTALL_PROGRAM) $(preload).so $(DESTDIR)$(pkglibdir) -+ $(INSTALL_PROGRAM) lib/cygintl-8.dll $(DESTDIR)$(pkglibdir) -+ ln -sf cygintl-8.dll $(DESTDIR)$(pkglibdir)/$(preload).so ++ $(INSTALL_PROGRAM) lib/cygintl-9.dll $(DESTDIR)$(pkglibdir) ++ ln -sf cygintl-9.dll $(DESTDIR)$(pkglibdir)/$(preload).so install_l10n: install_dirs msg_l10n man_l10n info_l10n set -e; \ @@ -27,8 +27,8 @@ that we're trying to help2man). $(preload).so: $(srcdir)/$(preload).c - $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -fPIC -shared $? $(LIBS) + mkdir -p lib -+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o lib/cygintl-8.dll -shared $? $(LIBS) -+ ln -sf lib/cygintl-8.dll $@ ++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o lib/cygintl-9.dll -shared $? $(LIBS) ++ ln -sf lib/cygintl-9.dll $@ man: $(target).1 $(target).1: $(srcdir)/$(target).PL $(srcdir)/$(target).h2m.PL @@ -62,7 +62,7 @@ that we're trying to help2man). return; +#ifdef __CYGWIN__ -+ if (!(RTLD_NEXT = dlopen("/usr/bin/cygintl-8.dll", RTLD_LAZY))) ++ if (!(RTLD_NEXT = dlopen("/usr/bin/cygintl-9.dll", RTLD_LAZY))) + die("libintl8 not found"); +#endif + diff --git a/pkgs/development/tools/misc/help2man/default.nix b/pkgs/development/tools/misc/help2man/default.nix index 8bf3db59147..5e2edce56f0 100644 --- a/pkgs/development/tools/misc/help2man/default.nix +++ b/pkgs/development/tools/misc/help2man/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, perl, gettext, LocaleGettext, makeWrapper }: +{ stdenv, hostPlatform, fetchurl, perl, gettext, LocaleGettext, makeWrapper }: stdenv.mkDerivation rec { name = "help2man-1.47.4"; @@ -12,11 +12,12 @@ stdenv.mkDerivation rec { doCheck = false; # target `check' is missing - patches = if stdenv.isCygwin then [ ./1.40.4-cygwin-nls.patch ] else null; + patches = if hostPlatform.isCygwin then [ ./1.40.4-cygwin-nls.patch ] else null; postInstall = '' wrapProgram "$out/bin/help2man" \ - --prefix PERL5LIB : "$(echo ${LocaleGettext}/lib/perl*/site_perl)" + --prefix PERL5LIB : "$(echo ${LocaleGettext}/lib/perl*/site_perl)" \ + ${stdenv.lib.optionalString hostPlatform.isCygwin "--prefix PATH : ${gettext}/bin"} ''; From af165175da97e6f63c51f30e28a17851fb71f579 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:17 -0300 Subject: [PATCH 38/59] bash: fix cygwin build --- pkgs/shells/bash/4.4.nix | 12 +- .../bash/cygwin-bash-4.3.33-1.src.patch | 1393 ----------------- .../bash/cygwin-bash-4.4.11-2.src.patch | 607 +++++++ 3 files changed, 616 insertions(+), 1396 deletions(-) delete mode 100644 pkgs/shells/bash/cygwin-bash-4.3.33-1.src.patch create mode 100644 pkgs/shells/bash/cygwin-bash-4.4.11-2.src.patch diff --git a/pkgs/shells/bash/4.4.nix b/pkgs/shells/bash/4.4.nix index e2defc2bf37..dba31e41ca3 100644 --- a/pkgs/shells/bash/4.4.nix +++ b/pkgs/shells/bash/4.4.nix @@ -23,7 +23,7 @@ let in import ./bash-4.4-patches.nix patch; - inherit (stdenv.lib) optional optionals; + inherit (stdenv.lib) optional optionals optionalString; in stdenv.mkDerivation rec { @@ -52,8 +52,9 @@ stdenv.mkDerivation rec { patchFlags = "-p0"; - patches = upstreamPatches - ++ optional hostPlatform.isCygwin ./cygwin-bash-4.3.33-1.src.patch; + patches = upstreamPatches; + + postPatch = optionalString hostPlatform.isCygwin "patch -p2 < ${./cygwin-bash-4.4.11-2.src.patch}"; configureFlags = [ (if interactive then "--with-installed-readline" else "--disable-readline") @@ -79,6 +80,11 @@ stdenv.mkDerivation rec { # build `version.h'. enableParallelBuilding = false; + makeFlags = optional hostPlatform.isCygwin [ + "LOCAL_LDFLAGS=-Wl,--export-all,--out-implib,libbash.dll.a" + "SHOBJ_LIBS=-lbash" + ]; + postInstall = '' ln -s bash "$out/bin/sh" rm $out/lib/bash/Makefile.inc diff --git a/pkgs/shells/bash/cygwin-bash-4.3.33-1.src.patch b/pkgs/shells/bash/cygwin-bash-4.3.33-1.src.patch deleted file mode 100644 index e0959d0446a..00000000000 --- a/pkgs/shells/bash/cygwin-bash-4.3.33-1.src.patch +++ /dev/null @@ -1,1393 +0,0 @@ ---- bashline.c 2015-02-06 17:12:55.823275600 -0700 -+++ bashline.c 2015-02-06 17:14:11.000103800 -0700 -@@ -71,6 +71,16 @@ - # include "pcomplete.h" - #endif - -+#if __CYGWIN__ -+# ifdef __x86_64__ -+# define IMP(x) __imp_##x -+# else -+# define IMP(x) _imp__##x -+# endif -+#else -+# define IMP(x) x -+#endif -+ - /* These should agree with the defines for emacs_mode and vi_mode in - rldefs.h, even though that's not a public readline header file. */ - #ifndef EMACS_EDITING_MODE -@@ -264,6 +274,11 @@ int no_empty_command_completion; - are the only possible matches, even if FIGNORE says to. */ - int force_fignore = 1; - -+#if __CYGWIN__ -+/* If set, shorten "foo.exe" to "foo" when they are the same file. */ -+int completion_strip_exe; -+#endif /* __CYGWIN__ */ -+ - /* Perform spelling correction on directory names during word completion */ - int dircomplete_spelling = 0; - -@@ -491,11 +506,12 @@ initialize_readline () - kseq[0] = CTRL('J'); - kseq[1] = '\0'; - func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); -- if (func == rl_vi_editing_mode) -+ extern rl_command_func_t *IMP(rl_vi_editing_mode); -+ if (func == rl_vi_editing_mode || func == IMP(rl_vi_editing_mode)) - rl_unbind_key_in_map (CTRL('J'), emacs_meta_keymap); - kseq[0] = CTRL('M'); - func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); -- if (func == rl_vi_editing_mode) -+ if (func == rl_vi_editing_mode || func == IMP(rl_vi_editing_mode)) - rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap); - #if defined (VI_MODE) - rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap); -@@ -514,7 +530,8 @@ initialize_readline () - kseq[0] = '~'; - kseq[1] = '\0'; - func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); -- if (func == 0 || func == rl_tilde_expand) -+ extern rl_command_func_t *IMP(rl_tilde_expand); -+ if (func == 0 || func == rl_tilde_expand || func == IMP(rl_tilde_expand)) - rl_bind_keyseq_in_map (kseq, bash_complete_username, emacs_meta_keymap); - - rl_bind_key_if_unbound_in_map ('~', bash_possible_username_completions, emacs_ctlx_keymap); -@@ -537,7 +554,8 @@ initialize_readline () - kseq[0] = TAB; - kseq[1] = '\0'; - func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); -- if (func == 0 || func == rl_tab_insert) -+ extern rl_command_func_t *IMP(rl_tab_insert); -+ if (func == 0 || func == rl_tab_insert || func == IMP(rl_tab_insert)) - rl_bind_key_in_map (TAB, dynamic_complete_history, emacs_meta_keymap); - - /* Tell the completer that we want a crack first. */ -@@ -2109,6 +2127,21 @@ globword: - - if (match && executable_completion ((searching_path ? val : cval), searching_path)) - { -+#if __CYGWIN__ -+ if (completion_strip_exe) -+ { -+ size_t val_len = strlen (val); -+ char *candidate; -+ if (val_len > 4 && !strcasecmp (&val[val_len - 4], ".exe") -+ && (candidate = strdup (val))) -+ { -+ candidate[val_len - 4] = '\0'; -+ if (same_file (val, candidate, NULL, NULL)) -+ temp[strlen (temp) - 4] = '\0'; -+ free (candidate); -+ } -+ } -+#endif - if (cval != val) - free (cval); - free (val); -@@ -2844,6 +2877,17 @@ test_for_directory (name) - int r; - - fn = bash_tilde_expand (name, 0); -+#if __CYGWIN__ -+ /* stat("//server") can only be successful as a directory, but takes -+ a several-second timeout to fail. It is much faster to assume -+ that //server is a valid name than it is to wait for the stat, -+ even though it gives false positives on bad names. */ -+ if (fn[0] == '/' && fn[1] == '/' && ! strchr (&fn[2], '/')) -+ { -+ free (fn); -+ return 1; -+ } -+#endif /* __CYGWIN__ */ - r = file_isdir (fn); - free (fn); - ---- builtins/evalstring.c 2015-02-06 17:12:55.682776800 -0700 -+++ builtins/evalstring.c 2015-02-06 17:14:11.015662800 -0700 -@@ -195,7 +195,7 @@ parse_and_execute (string, from_file, fl - int code, lreset; - volatile int should_jump_to_top_level, last_result; - COMMAND *volatile command; -- volatile sigset_t pe_sigmask; -+ sigset_t pe_sigmask; - - parse_prologue (string, flags, PE_TAG); - -@@ -451,7 +451,7 @@ parse_string (string, from_file, flags, - volatile int should_jump_to_top_level; - COMMAND *volatile command, *oglobal; - char *ostring; -- volatile sigset_t ps_sigmask; -+ sigset_t ps_sigmask; - - parse_prologue (string, flags, PS_TAG); - ---- builtins/set.def 2013-04-19 05:20:34.000000000 -0600 -+++ builtins/set.def 2015-02-06 17:14:11.015662800 -0700 -@@ -56,6 +56,13 @@ extern int dont_save_function_defs; - #if defined (READLINE) - extern int no_line_editing; - #endif /* READLINE */ -+#if __CYGWIN__ -+extern int igncr; -+static int set_minus_o_option_maybe (int, const char *, int); -+# define INTERACTIVE_ONLY ,1 -+#else /* ! __CYGWIN__ */ -+# define INTERACTIVE_ONLY -+#endif - - $BUILTIN set - $FUNCTION set_builtin -@@ -92,6 +99,9 @@ Options: - #if defined (HISTORY) - history enable command history - #endif -+#if __CYGWIN__ -+ igncr on cygwin, ignore \r in line endings -+#endif - ignoreeof the shell will not exit upon reading EOF - interactive-comments - allow comments to appear in interactive commands -@@ -188,29 +198,41 @@ const struct { - int *variable; - setopt_set_func_t *set_func; - setopt_get_func_t *get_func; -+#if __CYGWIN__ -+ /* Cygwin users have taken to exporting SHELLOPTS for the -+ cygwin-specific igncr. As a result, we need to make sure -+ SHELLOPTS parsing does not turn on interactive options when -+ exported from an interactive shell, but parsed in a -+ non-interactive setting, since some interactive options violate -+ POSIX /bin/sh rules. */ -+ int interactive_only; -+#endif /* __CYGWIN__ */ - } o_options[] = { - { "allexport", 'a', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - #if defined (BRACE_EXPANSION) - { "braceexpand",'B', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - #endif - #if defined (READLINE) -- { "emacs", '\0', (int *)NULL, set_edit_mode, get_edit_mode }, -+ { "emacs", '\0', (int *)NULL, set_edit_mode, get_edit_mode INTERACTIVE_ONLY}, - #endif - { "errexit", 'e', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - { "errtrace", 'E', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - { "functrace", 'T', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - { "hashall", 'h', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - #if defined (BANG_HISTORY) -- { "histexpand", 'H', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, -+ { "histexpand", 'H', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL INTERACTIVE_ONLY}, - #endif /* BANG_HISTORY */ - #if defined (HISTORY) -- { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL }, -+ { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL INTERACTIVE_ONLY}, -+#endif -+#if __CYGWIN__ -+ { "igncr", '\0', &igncr, NULL, (setopt_get_func_t *)NULL }, - #endif - { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, - { "interactive-comments", '\0', &interactive_comments, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - { "keyword", 'k', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - #if defined (JOB_CONTROL) -- { "monitor", 'm', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, -+ { "monitor", 'm', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL INTERACTIVE_ONLY}, - #endif - { "noclobber", 'C', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - { "noexec", 'n', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, -@@ -229,7 +251,7 @@ const struct { - { "privileged", 'p', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - { "verbose", 'v', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - #if defined (READLINE) -- { "vi", '\0', (int *)NULL, set_edit_mode, get_edit_mode }, -+ { "vi", '\0', (int *)NULL, set_edit_mode, get_edit_mode INTERACTIVE_ONLY}, - #endif - { "xtrace", 'x', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, - {(char *)NULL, 0 , (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, -@@ -416,6 +438,15 @@ int - set_minus_o_option (on_or_off, option_name) - int on_or_off; - char *option_name; -+#if __CYGWIN__ -+{ -+ /* See cygwin comments above. */ -+ return set_minus_o_option_maybe (on_or_off, option_name, 0); -+} -+static int -+set_minus_o_option_maybe (int on_or_off, const char *option_name, -+ int avoid_interactive) -+#endif /* __CYGWIN__ */ - { - register int i; - -@@ -423,6 +454,10 @@ set_minus_o_option (on_or_off, option_na - { - if (STREQ (option_name, o_options[i].name)) - { -+#if __CYGWIN__ -+ if (o_options[i].interactive_only && avoid_interactive) -+ return EXECUTION_SUCCESS; -+#endif /* __CYGWIN__ */ - if (o_options[i].letter == 0) - { - SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name); -@@ -548,7 +583,11 @@ parse_shellopts (value) - vptr = 0; - while (vname = extract_colon_unit (value, &vptr)) - { -+#if __CYGWIN__ -+ set_minus_o_option_maybe (FLAG_ON, vname, !interactive_shell); -+#else /* !__CYGWIN__ */ - set_minus_o_option (FLAG_ON, vname); -+#endif - free (vname); - } - } ---- builtins/shopt.def 2013-02-27 07:43:20.000000000 -0700 -+++ builtins/shopt.def 2015-02-06 17:14:11.015662800 -0700 -@@ -91,6 +91,11 @@ extern int glob_star; - extern int glob_asciirange; - extern int lastpipe_opt; - -+#if __CYGWIN__ -+extern int completion_strip_exe; -+#endif -+ -+ - #if defined (EXTENDED_GLOB) - extern int extended_glob; - #endif -@@ -161,6 +166,9 @@ static struct { - { "compat40", &shopt_compat40, set_compatibility_level }, - { "compat41", &shopt_compat41, set_compatibility_level }, - { "compat42", &shopt_compat41, set_compatibility_level }, -+#if __CYGWIN__ -+ { "completion_strip_exe", &completion_strip_exe, NULL }, -+#endif - #if defined (READLINE) - { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, - { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, ---- config-top.h 2012-08-18 18:51:30.000000000 -0600 -+++ config-top.h 2015-02-06 17:14:11.015662800 -0700 -@@ -80,10 +80,10 @@ - #define KSH_COMPATIBLE_SELECT - - /* System-wide .bashrc file for interactive shells. */ --/* #define SYS_BASHRC "/etc/bash.bashrc" */ -+#define SYS_BASHRC "/etc/bash.bashrc" - - /* System-wide .bash_logout for login shells. */ --/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */ -+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout" - - /* Define this to make non-interactive shells begun with argv[0][0] == '-' - run the startup files when not in posix mode. */ -@@ -93,7 +93,7 @@ - sshd and source the .bashrc if so (like the rshd behavior). This checks - for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment, - which can be fooled under certain not-uncommon circumstances. */ --/* #define SSH_SOURCE_BASHRC */ -+#define SSH_SOURCE_BASHRC - - /* Define if you want the case-capitalizing operators (~[~]) and the - `capcase' variable attribute (declare -c). */ ---- doc/Makefile.in 2013-10-30 14:18:12.000000000 -0600 -+++ doc/Makefile.in 2015-02-06 17:14:11.015662800 -0700 -@@ -176,7 +176,7 @@ bashref.html: $(BASHREF_FILES) $(HSUSER) - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi - - bash.info: bashref.info -- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ -+ ${SHELL} ${INFOPOST} < bashref.info > $@ ; \ - - bash.txt: bash.1 - bash.ps: bash.1 -@@ -237,9 +237,9 @@ install: info installdirs bash.info - -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} - -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) - # uncomment the next lines to install the builtins man page --# sed 's:bash\.1:man1/&:' $(srcdir)/builtins.1 > $${TMPDIR:-/var/tmp}/builtins.1 --# -$(INSTALL_DATA) $${TMPDIR:-/var/tmp}/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} --# -$(RM) $${TMPDIR:-/var/tmp}/builtins.1 -+ sed 's:bash\.1:man1/&:' $(srcdir)/builtins.1 > $${TMPDIR:-/var/tmp}/builtins.1 -+ -$(INSTALL_DATA) $${TMPDIR:-/var/tmp}/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} -+ -$(RM) $${TMPDIR:-/var/tmp}/builtins.1 - -if test -f bash.info; then d=.; else d=$(srcdir); fi; \ - $(INSTALL_DATA) $$d/bash.info $(DESTDIR)$(infodir)/bash.info - # run install-info if it is present to update the info directory ---- doc/bash.1 2014-02-06 07:03:52.000000000 -0700 -+++ doc/bash.1 2015-02-06 17:14:11.015662800 -0700 -@@ -1658,6 +1658,14 @@ subsequently reset. - Expands to the effective user ID of the current user, initialized at - shell startup. This variable is readonly. - .TP -+.B EXECIGNORE -+A colon-separated list of extended glob (see \fBPattern Matching\fP) -+patterns. Files with full paths matching one of these patterns are -+not considered executable for the purposes of completion and PATH -+searching, but the \fB[\fP, \fB[[\fP, and \fBtest\fP builtins are not -+affected. Use this variable to deal with systems that set the -+executable bit on files that are not actually executable. -+.TP - .B FUNCNAME - An array variable containing the names of all shell functions - currently in the execution call stack. -@@ -3308,6 +3316,10 @@ the character - .B ``.'' - at the start of a name or immediately following a slash - must be matched explicitly, unless the shell option -+.B completion_strip_exe -+If set, whenever bash sees `foo.exe' during completion, it checks if -+`foo' is the same file and strips the suffix. -+.TP 8 - .B dotglob - is set. - When matching a pathname, the slash character must always be ---- doc/bashref.texi 2014-02-22 11:20:36.000000000 -0700 -+++ doc/bashref.texi 2015-02-06 17:14:11.015662800 -0700 -@@ -4992,6 +4992,10 @@ filenames. - This variable is set by default, which is the default Bash behavior in - versions through 4.2. - -+@item completion_strip_exe -+If set, whenever bash sees `foo.exe' during completion, it checks if -+`foo' is the same file and strips the suffix. -+ - @item direxpand - If set, Bash - replaces directory names with the results of word expansion when performing -@@ -5578,6 +5582,14 @@ Similar to @code{BASH_ENV}; used when th - The numeric effective user id of the current user. This variable - is readonly. - -+@item EXECIGNORE -+A colon-separated list of extended glob ((@pxref{Pattern Matching}) -+patterns. Files with full paths matching one of these patterns are -+not considered executable for the purposes of completion and PATH -+searching, but the @code{[}, @code{[[}, and @code{test} builtins are -+not affected. Use this variable to deal with systems that set the -+executable bit on files that are not actually executable. -+ - @item FCEDIT - The editor used as a default by the @option{-e} option to the @code{fc} - builtin command. ---- doc/builtins.1 2012-02-21 12:32:05.000000000 -0700 -+++ doc/builtins.1 2015-02-06 17:14:11.031260100 -0700 -@@ -19,6 +19,6 @@ shift, shopt, source, suspend, test, tim - ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) - .SH BASH BUILTIN COMMANDS - .nr zZ 1 --.so bash.1 -+.so man1/bash.1 - .SH SEE ALSO - bash(1), sh(1) ---- execute_cmd.c 2015-02-06 17:12:55.261573700 -0700 -+++ execute_cmd.c 2015-02-06 17:14:11.031260100 -0700 -@@ -58,6 +58,7 @@ extern int errno; - #endif - - #define NEED_FPURGE_DECL -+#define NEED_SH_SETLINEBUF_DECL /* used in externs.h */ - - #include "bashansi.h" - #include "bashintl.h" ---- expr.c 2014-01-03 06:55:00.000000000 -0700 -+++ expr.c 2015-02-06 17:14:11.031260100 -0700 -@@ -83,6 +83,7 @@ - - #include "shell.h" - #include "typemax.h" /* INTMAX_MAX, INTMAX_MIN */ -+#define exp2 exp2_ - - /* Because of the $((...)) construct, expressions may include newlines. - Here is a macro which accepts newlines, tabs and spaces as whitespace. */ ---- findcmd.c 2012-10-15 05:45:04.000000000 -0600 -+++ findcmd.c 2015-02-06 17:14:11.031260100 -0700 -@@ -48,6 +48,8 @@ - extern int errno; - #endif - -+#include -+ - extern int posixly_correct; - extern int last_command_exit_value; - -@@ -77,6 +79,38 @@ int check_hashed_filenames; - containing the file of interest. */ - int dot_found_in_search = 0; - -+static struct ignorevar execignore = -+{ -+ "EXECIGNORE", -+ (struct ign *)0, -+ 0, -+ (char *)0, -+ (sh_iv_item_func_t *)0, -+}; -+ -+void -+setup_exec_ignore (char *varname) -+{ -+ setup_ignore_patterns (&execignore); -+} -+ -+/* Return whether we should never consider file executable -+ * even if the system tells us it is. */ -+static int -+is_on_exec_blacklist (char *name) -+{ -+ struct ign *p; -+ int flags = FNM_EXTMATCH | FNM_CASEFOLD; -+ -+ for (p = execignore.ignores; p && p->val; p++) -+ { -+ if (strmatch (p->val, (char *)name, flags) != FNM_NOMATCH) -+ return (1); -+ } -+ -+ return (0); -+} -+ - /* Return some flags based on information about this file. - The EXISTS bit is non-zero if the file is found. - The EXECABLE bit is non-zero the file is executble. -@@ -104,7 +138,7 @@ file_status (name) - file access mechanisms into account. eaccess uses the effective - user and group IDs, not the real ones. We could use sh_eaccess, - but we don't want any special treatment for /dev/fd. */ -- if (eaccess (name, X_OK) == 0) -+ if (!is_on_exec_blacklist (name) && eaccess (name, X_OK) == 0) - r |= FS_EXECABLE; - if (eaccess (name, R_OK) == 0) - r |= FS_READABLE; ---- findcmd.h 2012-01-14 16:56:25.000000000 -0700 -+++ findcmd.h 2015-02-06 17:14:11.031260100 -0700 -@@ -31,5 +31,6 @@ extern char *find_user_command __P((cons - extern char *find_path_file __P((const char *)); - extern char *search_for_command __P((const char *, int)); - extern char *user_command_matches __P((const char *, int, int)); -+extern void setup_exec_ignore __P((char *)); - - #endif /* _FINDCMD_H_ */ ---- general.c 2014-01-30 14:46:15.000000000 -0700 -+++ general.c 2015-02-06 17:14:11.031260100 -0700 -@@ -44,6 +44,10 @@ - - #include - -+#ifdef __CYGWIN__ -+# include -+#endif -+ - #if !defined (errno) - extern int errno; - #endif /* !errno */ -@@ -632,7 +636,8 @@ make_absolute (string, dot_path) - { - char pathbuf[PATH_MAX + 1]; - -- cygwin_conv_to_full_posix_path (string, pathbuf); -+ cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, string, pathbuf, -+ sizeof pathbuf); - result = savestring (pathbuf); - } - #else ---- include/chartypes.h 2011-04-11 12:30:52.000000000 -0600 -+++ include/chartypes.h 2015-02-06 17:14:11.031260100 -0700 -@@ -40,6 +40,7 @@ - #else - # define IN_CTYPE_DOMAIN(c) isascii(c) - #endif -+#define to_uchar(c) ((unsigned char)(c)) - - #if !defined (isspace) && !defined (HAVE_ISSPACE) - # define isspace(c) ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\f') -@@ -67,16 +68,16 @@ - - #undef ISPRINT - --#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) --#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) --#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) --#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) --#define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl (c)) --#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) --#define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct (c)) --#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) --#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) --#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c)) -+#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (to_uchar (c))) -+#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (to_uchar (c))) -+#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (to_uchar (c))) -+#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (to_uchar (c))) -+#define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl (to_uchar (c))) -+#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (to_uchar (c))) -+#define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct (to_uchar (c))) -+#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (to_uchar (c))) -+#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (to_uchar (c))) -+#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (to_uchar (c))) - - #define ISLETTER(c) (ISALPHA(c)) - ---- include/posixjmp.h 2012-12-23 20:20:50.000000000 -0700 -+++ include/posixjmp.h 2015-02-06 17:14:11.031260100 -0700 -@@ -27,13 +27,13 @@ - - #if defined (HAVE_POSIX_SIGSETJMP) - # define procenv_t sigjmp_buf --# if !defined (__OPENNT) -+# if !defined (__OPENNT) && !defined __CYGWIN__ - # undef setjmp - # define setjmp(x) sigsetjmp((x), 1) --# define setjmp_nosigs(x) sigsetjmp((x), 0) - # undef longjmp - # define longjmp(x, n) siglongjmp((x), (n)) - # endif /* !__OPENNT */ -+# define setjmp_nosigs(x) sigsetjmp((x), 0) - #else - # define procenv_t jmp_buf - # define setjmp_nosigs setjmp ---- input.c 2014-02-07 07:13:08.000000000 -0700 -+++ input.c 2015-02-06 17:14:11.031260100 -0700 -@@ -44,6 +44,10 @@ - #include "quit.h" - #include "trap.h" - -+#if __CYGWIN__ -+int igncr; -+#endif -+ - #if !defined (errno) - extern int errno; - #endif /* !errno */ -@@ -561,6 +565,19 @@ buffered_getchar () - { - CHECK_TERMSIG; - -+#if __CYGWIN__ -+ /* shopt igncr means to discard carriage returns from input stream. -+ If cr is the only character in the buffer, then recurse to pick -+ up the next character; otherwise flatten the buffer. */ -+ if (igncr) -+ { -+ int ch; -+ while ((ch = bufstream_getc (buffers[bash_input.location.buffered_fd])) -+ == '\r') -+ ; -+ return ch; -+ } -+#endif /* __CYGWIN__ */ - #if !defined (DJGPP) - return (bufstream_getc (buffers[bash_input.location.buffered_fd])); - #else ---- lib/readline/bind.c 2013-04-06 15:46:38.000000000 -0600 -+++ lib/readline/bind.c 2015-02-06 17:14:11.031260100 -0700 -@@ -452,7 +452,7 @@ rl_translate_keyseq (seq, array, len) - { - register int i, c, l, temp; - -- for (i = l = 0; c = seq[i]; i++) -+ for (i = l = 0; (c = seq[i]); i++) - { - if (c == '\\') - { -@@ -1210,7 +1210,7 @@ _rl_skip_to_delim (string, start, delim) - { - int i, c, passc; - -- for (i = start,passc = 0; c = string[i]; i++) -+ for (i = start,passc = 0; (c = string[i]); i++) - { - if (passc) - { -@@ -1297,7 +1297,6 @@ rl_parse_and_bind (string) - if (_rl_stricmp (string, "set") == 0) - { - char *var, *value, *e; -- int s; - - var = string + i; - /* Make VAR point to start of variable name. */ -@@ -2198,7 +2197,7 @@ rl_function_dumper (print_readably) - - fprintf (rl_outstream, "\n"); - -- for (i = 0; name = names[i]; i++) -+ for (i = 0; (name = names[i]); i++) - { - rl_command_func_t *function; - char **invokers; ---- lib/readline/chardefs.h 2011-07-25 19:47:56.000000000 -0600 -+++ lib/readline/chardefs.h 2015-02-06 17:14:11.046889800 -0700 -@@ -71,6 +71,7 @@ - #else - # define IN_CTYPE_DOMAIN(c) isascii(c) - #endif -+#define to_uchar(c) ((unsigned char)(c)) - - #if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) - # define isxdigit(c) (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) -@@ -87,13 +88,13 @@ - - /* Beware: these only work with single-byte ASCII characters. */ - --#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) --#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) --#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) --#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) --#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) --#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) --#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c)) -+#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (to_uchar (c))) -+#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (to_uchar (c))) -+#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (to_uchar (c))) -+#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (to_uchar (c))) -+#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (to_uchar (c))) -+#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (to_uchar (c))) -+#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (to_uchar (c))) - - #define _rl_lowercase_p(c) (NON_NEGATIVE(c) && ISLOWER(c)) - #define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c)) ---- lib/readline/complete.c 2013-10-14 07:27:10.000000000 -0600 -+++ lib/readline/complete.c 2015-02-06 17:14:11.046889800 -0700 -@@ -1082,7 +1082,7 @@ _rl_find_completion_word (fp, dp) - /* We didn't find an unclosed quoted substring upon which to do - completion, so use the word break characters to find the - substring on which to complete. */ -- while (rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY)) -+ while ((rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY))) - { - scan = rl_line_buffer[rl_point]; - -@@ -2116,7 +2116,7 @@ rl_completion_matches (text, entry_funct - match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *)); - match_list[1] = (char *)NULL; - -- while (string = (*entry_function) (text, matches)) -+ while ((string = (*entry_function) (text, matches))) - { - if (RL_SIG_RECEIVED ()) - { -@@ -2190,7 +2190,7 @@ rl_username_completion_function (text, s - } - - #if defined (HAVE_GETPWENT) -- while (entry = getpwent ()) -+ while ((entry = getpwent ())) - { - /* Null usernames should result in all users as possible completions. */ - if (namelen == 0 || (STREQN (username, entry->pw_name, namelen))) -@@ -2723,7 +2723,7 @@ rl_menu_complete (count, ignore) - static int full_completion = 0; /* set to 1 if menu completion should reinitialize on next call */ - static int orig_start, orig_end; - static char quote_char; -- static int delimiter, cstate; -+ static int delimiter; - - /* The first time through, we generate the list of matches and set things - up to insert them. */ ---- lib/readline/display.c 2015-02-06 17:12:54.793574600 -0700 -+++ lib/readline/display.c 2015-02-06 17:14:11.046889800 -0700 -@@ -66,7 +66,6 @@ extern char *strchr (), *strrchr (); - static void update_line PARAMS((char *, char *, int, int, int, int)); - static void space_to_eol PARAMS((int)); - static void delete_chars PARAMS((int)); --static void insert_some_chars PARAMS((char *, int, int)); - static void open_some_spaces PARAMS((int)); - static void cr PARAMS((void)); - -@@ -1314,7 +1313,7 @@ update_line (old, new, current_line, oma - int current_line, omax, nmax, inv_botlin; - { - register char *ofd, *ols, *oe, *nfd, *nls, *ne; -- int temp, lendiff, wsatend, od, nd, twidth, o_cpos; -+ int temp, lendiff, wsatend, od, nd, o_cpos; - int current_invis_chars; - int col_lendiff, col_temp; - int bytes_to_insert; -@@ -2485,6 +2484,7 @@ _rl_clear_screen () - #endif /* __DJGPP__ */ - } - -+#if 0 - /* Insert COUNT characters from STRING to the output stream at column COL. */ - static void - insert_some_chars (string, count, col) -@@ -2494,6 +2494,7 @@ insert_some_chars (string, count, col) - open_some_spaces (col); - _rl_output_some_chars (string, count); - } -+#endif - - /* Insert COL spaces, keeping the cursor at the same position. We follow the - ncurses documentation and use either im/ei with explicit spaces, or IC/ic ---- lib/readline/histexpand.c 2013-12-02 07:22:30.000000000 -0700 -+++ lib/readline/histexpand.c 2015-02-06 17:14:11.046889800 -0700 -@@ -204,7 +204,7 @@ get_history_event (string, caller_index, - } - - /* Only a closing `?' or a newline delimit a substring search string. */ -- for (local_index = i; c = string[i]; i++) -+ for (local_index = i; (c = string[i]); i++) - { - #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) -@@ -677,7 +677,7 @@ history_expand_internal (string, start, - case 's': - { - char *new_event; -- int delimiter, failed, si, l_temp, ws, we; -+ int delimiter, failed, si, l_temp, we; - - if (c == 's') - { -@@ -776,7 +776,6 @@ history_expand_internal (string, start, - { - for (; temp[si] && whitespace (temp[si]); si++) - ; -- ws = si; - we = history_tokenize_word (temp, si); - } - ---- lib/readline/histfile.c 2013-07-19 06:17:17.000000000 -0600 -+++ lib/readline/histfile.c 2015-02-06 17:14:11.046889800 -0700 -@@ -104,7 +104,7 @@ int history_write_timestamps = 0; - - /* Does S look like the beginning of a history timestamp entry? Placeholder - for more extensive tests. */ --#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((s)[1]) ) -+#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((unsigned char) (s)[1]) ) - - /* Return the string that should be used in the place of this - filename. This only matters when you don't specify the ---- lib/readline/input.c 2015-02-06 17:12:55.027577800 -0700 -+++ lib/readline/input.c 2015-02-06 17:14:11.046889800 -0700 -@@ -431,7 +431,7 @@ rl_read_key () - else - { - /* If input is coming from a macro, then use that. */ -- if (c = _rl_next_macro_key ()) -+ if ((c = _rl_next_macro_key ())) - return (c); - - /* If the user has an event function, then call it periodically. */ ---- lib/readline/isearch.c 2013-10-14 07:08:40.000000000 -0600 -+++ lib/readline/isearch.c 2015-02-06 17:14:11.046889800 -0700 -@@ -740,7 +740,7 @@ rl_search_history (direction, invoking_k - int direction, invoking_key; - { - _rl_search_cxt *cxt; /* local for now, but saved globally */ -- int c, r; -+ int r; - - RL_SETSTATE(RL_STATE_ISEARCH); - cxt = _rl_isearch_init (direction); -@@ -755,7 +755,7 @@ rl_search_history (direction, invoking_k - r = -1; - for (;;) - { -- c = _rl_search_getchar (cxt); -+ _rl_search_getchar (cxt); - /* We might want to handle EOF here (c == 0) */ - r = _rl_isearch_dispatch (cxt, cxt->lastc); - if (r <= 0) -@@ -778,9 +778,9 @@ int - _rl_isearch_callback (cxt) - _rl_search_cxt *cxt; - { -- int c, r; -+ int r; - -- c = _rl_search_getchar (cxt); -+ _rl_search_getchar (cxt); - /* We might want to handle EOF here */ - r = _rl_isearch_dispatch (cxt, cxt->lastc); - ---- lib/readline/misc.c 2015-02-06 17:12:55.230384200 -0700 -+++ lib/readline/misc.c 2015-02-06 17:14:11.046889800 -0700 -@@ -455,7 +455,7 @@ _rl_revert_all_lines () - entry = (hpos == history_length) ? previous_history () : current_history (); - while (entry) - { -- if (ul = (UNDO_LIST *)entry->data) -+ if ((ul = (UNDO_LIST *)entry->data)) - { - if (ul == saved_undo_list) - saved_undo_list = 0; -@@ -502,7 +502,7 @@ rl_clear_history () - for (i = 0; i < history_length; i++) - { - hent = hlist[i]; -- if (ul = (UNDO_LIST *)hent->data) -+ if ((ul = (UNDO_LIST *)hent->data)) - { - if (ul == saved_undo_list) - saved_undo_list = 0; ---- lib/readline/nls.c 2013-03-09 12:51:10.000000000 -0700 -+++ lib/readline/nls.c 2015-02-06 17:14:11.046889800 -0700 -@@ -80,7 +80,7 @@ static char *legal_lang_values[] = - static char *normalize_codeset PARAMS((char *)); - #endif /* !HAVE_SETLOCALE */ - --static char *find_codeset PARAMS((char *, size_t *)); -+static char *find_codeset PARAMS((char *, size_t *)) __attribute__ ((__unused__)); - - static char *_rl_get_locale_var PARAMS((const char *)); - -@@ -104,12 +104,13 @@ utf8locale (lspec) - char *lspec; - { - char *cp; -- size_t len; - - #if HAVE_LANGINFO_CODESET - cp = nl_langinfo (CODESET); - return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); - #else -+ size_t len; -+ - cp = find_codeset (lspec, &len); - - if (cp == 0 || len < 4 || len > 5) ---- lib/readline/parens.c 2009-04-19 11:12:06.000000000 -0600 -+++ lib/readline/parens.c 2015-02-06 17:14:11.046889800 -0700 -@@ -106,7 +106,7 @@ rl_insert_close (count, invoking_key) - else - { - #if defined (HAVE_SELECT) -- int orig_point, match_point, ready; -+ int orig_point, match_point; - struct timeval timer; - fd_set readfds; - -@@ -126,7 +126,7 @@ rl_insert_close (count, invoking_key) - orig_point = rl_point; - rl_point = match_point; - (*rl_redisplay_function) (); -- ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer); -+ select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer); - rl_point = orig_point; - #else /* !HAVE_SELECT */ - _rl_insert_char (count, invoking_key); ---- lib/readline/posixjmp.h 2012-12-23 20:20:50.000000000 -0700 -+++ lib/readline/posixjmp.h 2015-02-06 17:14:11.046889800 -0700 -@@ -27,13 +27,13 @@ - - #if defined (HAVE_POSIX_SIGSETJMP) - # define procenv_t sigjmp_buf --# if !defined (__OPENNT) -+# if !defined (__OPENNT) && !defined __CYGWIN__ - # undef setjmp - # define setjmp(x) sigsetjmp((x), 1) --# define setjmp_nosigs(x) sigsetjmp((x), 0) - # undef longjmp - # define longjmp(x, n) siglongjmp((x), (n)) - # endif /* !__OPENNT */ -+# define setjmp_nosigs(x) sigsetjmp((x), 0) - #else - # define procenv_t jmp_buf - # define setjmp_nosigs setjmp ---- lib/readline/readline.c 2015-02-06 17:12:54.310964200 -0700 -+++ lib/readline/readline.c 2015-02-06 17:14:11.046889800 -0700 -@@ -95,7 +95,7 @@ static void bind_arrow_keys_internal PAR - static void bind_arrow_keys PARAMS((void)); - - static void readline_default_bindings PARAMS((void)); --static void reset_default_bindings PARAMS((void)); -+//static void reset_default_bindings PARAMS((void)); - - static int _rl_subseq_result PARAMS((int, Keymap, int, int)); - static int _rl_subseq_getchar PARAMS((int)); -@@ -522,7 +522,7 @@ readline_internal_char () - readline_internal_charloop () - #endif - { -- static int lastc, eof_found; -+ static int lastc, eof_found __attribute__((unused)); - int c, code, lk; - - lastc = -1; -@@ -1204,6 +1204,7 @@ readline_default_bindings () - rl_tty_set_default_bindings (_rl_keymap); - } - -+#if 0 - /* Reset the default bindings for the terminal special characters we're - interested in back to rl_insert and read the new ones. */ - static void -@@ -1215,6 +1216,7 @@ reset_default_bindings () - rl_tty_set_default_bindings (_rl_keymap); - } - } -+#endif - - /* Bind some common arrow key sequences in MAP. */ - static void ---- lib/readline/rltty.c 2013-08-25 14:57:05.000000000 -0600 -+++ lib/readline/rltty.c 2015-02-06 17:14:11.062454900 -0700 -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - - #if defined (HAVE_UNISTD_H) - # include ---- lib/readline/shell.c 2013-03-13 08:17:00.000000000 -0600 -+++ lib/readline/shell.c 2015-02-06 17:14:11.062454900 -0700 -@@ -123,8 +123,10 @@ sh_single_quote (string) - /* Set the environment variables LINES and COLUMNS to lines and cols, - respectively. */ - static char setenv_buf[INT_STRLEN_BOUND (int) + 1]; -+# if !defined (HAVE_SETENV) && defined (HAVE_PUTENV) - static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; /* sizeof("LINES=") == 6 */ - static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; /* sizeof("COLUMNS=") == 8 */ -+# endif - - void - sh_set_lines_and_columns (lines, cols) ---- lib/readline/signals.c 2014-01-10 13:06:48.000000000 -0700 -+++ lib/readline/signals.c 2015-02-06 17:14:11.062454900 -0700 -@@ -576,7 +576,6 @@ rl_free_line_state () - /* **************************************************************** */ - - #if defined (HAVE_POSIX_SIGNALS) --static sigset_t sigint_set, sigint_oset; - static sigset_t sigwinch_set, sigwinch_oset; - #else /* !HAVE_POSIX_SIGNALS */ - # if defined (HAVE_BSD_SIGNALS) ---- lib/readline/terminal.c 2013-09-18 07:12:01.000000000 -0600 -+++ lib/readline/terminal.c 2015-02-06 17:14:11.062454900 -0700 -@@ -31,6 +31,7 @@ - #if defined (HAVE_SYS_FILE_H) - # include - #endif /* HAVE_SYS_FILE_H */ -+#include - - #if defined (HAVE_UNISTD_H) - # include ---- lib/readline/text.c 2013-10-14 07:25:05.000000000 -0600 -+++ lib/readline/text.c 2015-02-06 17:14:11.062454900 -0700 -@@ -859,11 +859,10 @@ _rl_overwrite_char (count, c) - int i; - #if defined (HANDLE_MULTIBYTE) - char mbkey[MB_LEN_MAX]; -- int k; - - /* Read an entire multibyte character sequence to insert COUNT times. */ - if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) -- k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX); -+ _rl_read_mbstring (c, mbkey, MB_LEN_MAX); - #endif - - rl_begin_undo_group (); ---- lib/readline/tilde.c 2010-07-25 15:42:13.000000000 -0600 -+++ lib/readline/tilde.c 2015-02-06 17:14:11.062454900 -0700 -@@ -196,7 +196,7 @@ tilde_expand (string) - int result_size, result_index; - - result_index = result_size = 0; -- if (result = strchr (string, '~')) -+ if ((result = strchr (string, '~'))) - result = (char *)xmalloc (result_size = (strlen (string) + 16)); - else - result = (char *)xmalloc (result_size = (strlen (string) + 1)); ---- lib/readline/undo.c 2014-02-02 13:47:46.000000000 -0700 -+++ lib/readline/undo.c 2015-02-06 17:14:11.062454900 -0700 -@@ -124,7 +124,7 @@ _rl_free_undo_list (ul) - void - rl_free_undo_list () - { -- UNDO_LIST *release, *orig_list; -+ UNDO_LIST *orig_list; - - orig_list = rl_undo_list; - _rl_free_undo_list (rl_undo_list); ---- lib/readline/vi_mode.c 2012-09-01 16:55:30.000000000 -0600 -+++ lib/readline/vi_mode.c 2015-02-06 17:14:11.062454900 -0700 -@@ -1089,7 +1089,7 @@ static int - rl_domove_motion_callback (m) - _rl_vimotion_cxt *m; - { -- int c, save, r; -+ int c, r; - int old_end; - - _rl_vi_last_motion = c = m->motion; -@@ -1257,7 +1257,6 @@ int - rl_vi_domove (x, ignore) - int x, *ignore; - { -- int r; - _rl_vimotion_cxt *m; - - m = _rl_vimvcxt; ---- lib/sh/pathphys.c 2013-05-28 13:33:58.000000000 -0600 -+++ lib/sh/pathphys.c 2015-02-06 17:14:11.062454900 -0700 -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include - - #include "shell.h" - -@@ -76,6 +77,10 @@ sh_physpath (path, flags) - char *path; - int flags; - { -+#if __CYGWIN__ -+ /* realpath does this correctly without all the hassle */ -+ return realpath (path, NULL); -+#else - char tbuf[PATH_MAX+1], linkbuf[PATH_MAX+1]; - char *result, *p, *q, *qsave, *qbase, *workpath; - int double_slash_path, linklen, nlink; -@@ -214,11 +219,7 @@ error: - { - q = result; - /* Duplicating some code here... */ --#if defined (__CYGWIN__) -- qbase = (ISALPHA((unsigned char)workpath[0]) && workpath[1] == ':') ? workpath + 3 : workpath + 1; --#else - qbase = workpath + 1; --#endif - double_slash_path = DOUBLE_SLASH (workpath); - qbase += double_slash_path; - -@@ -249,6 +250,7 @@ error: - } - - return (result); -+#endif /* ! __CYGWIN__ */ - } - - char * ---- lib/sh/tmpfile.c 2013-12-18 15:50:13.000000000 -0700 -+++ lib/sh/tmpfile.c 2015-02-06 17:14:11.062454900 -0700 -@@ -96,7 +96,7 @@ get_tmpdir (flags) - if (tdir && (file_iswdir (tdir) == 0 || strlen (tdir) > PATH_MAX)) - tdir = 0; - -- if (tdir == 0) -+ if (tdir == 0 || !file_iswdir (tdir)) - tdir = get_sys_tmpdir (); - - #if defined (HAVE_PATHCONF) && defined (_PC_NAME_MAX) -@@ -118,14 +118,15 @@ sh_mktmpname (nameroot, flags) - struct stat sb; - int r, tdlen; - -- filename = (char *)xmalloc (PATH_MAX + 1); -+ filename = NULL; - tdir = get_tmpdir (flags); - tdlen = strlen (tdir); - - lroot = nameroot ? nameroot : DEFAULT_NAMEROOT; - - #ifdef USE_MKTEMP -- sprintf (filename, "%s/%s.XXXXXX", tdir, lroot); -+ if (asprintf (&filename, "%s/%s.XXXXXX", tdir, lroot) < 0) -+ return NULL; - if (mktemp (filename) == 0) - { - free (filename); -@@ -138,7 +139,9 @@ sh_mktmpname (nameroot, flags) - (unsigned long) time ((time_t *)0) ^ - (unsigned long) dollar_dollar_pid ^ - (unsigned long) ((flags & MT_USERANDOM) ? random () : ntmpfiles++); -- sprintf (filename, "%s/%s-%lu", tdir, lroot, filenum); -+ free (filename); -+ if (asprintf (&filename, "%s/%s-%lu", tdir, lroot, filenum) < 0) -+ return NULL; - if (tmpnamelen > 0 && tmpnamelen < 32) - filename[tdlen + 1 + tmpnamelen] = '\0'; - # ifdef HAVE_LSTAT -@@ -163,14 +166,19 @@ sh_mktmpfd (nameroot, flags, namep) - char *filename, *tdir, *lroot; - int fd, tdlen; - -- filename = (char *)xmalloc (PATH_MAX + 1); -+ filename = NULL; - tdir = get_tmpdir (flags); - tdlen = strlen (tdir); - - lroot = nameroot ? nameroot : DEFAULT_NAMEROOT; - - #ifdef USE_MKSTEMP -- sprintf (filename, "%s/%s.XXXXXX", tdir, lroot); -+ if (asprintf (&filename, "%s/%s.XXXXXX", tdir, lroot) < 0) -+ { -+ if (namep) -+ *namep = NULL; -+ return -1; -+ } - fd = mkstemp (filename); - if (fd < 0 || namep == 0) - { -@@ -187,7 +195,13 @@ sh_mktmpfd (nameroot, flags, namep) - (unsigned long) time ((time_t *)0) ^ - (unsigned long) dollar_dollar_pid ^ - (unsigned long) ((flags & MT_USERANDOM) ? random () : ntmpfiles++); -- sprintf (filename, "%s/%s-%lu", tdir, lroot, filenum); -+ free (filename); -+ if (asprintf (&filename, "%s/%s-%lu", tdir, lroot, filenum) < 0) -+ { -+ if (namep) -+ *namep = NULL; -+ return -1; -+ } - if (tmpnamelen > 0 && tmpnamelen < 32) - filename[tdlen + 1 + tmpnamelen] = '\0'; - fd = open (filename, BASEOPENFLAGS | ((flags & MT_READWRITE) ? O_RDWR : O_WRONLY), 0600); ---- mksyntax.c 2012-07-29 17:48:38.000000000 -0600 -+++ mksyntax.c 2015-02-06 17:14:11.062454900 -0700 -@@ -29,13 +29,13 @@ - - #ifdef HAVE_UNISTD_H - # include -+#else -+extern int optind; -+extern char *optarg; - #endif - - #include "syntax.h" - --extern int optind; --extern char *optarg; -- - #ifndef errno - extern int errno; - #endif ---- parse.y 2015-02-06 17:12:55.682776800 -0700 -+++ parse.y 2015-02-06 17:14:11.062454900 -0700 -@@ -1531,14 +1531,20 @@ yy_string_get () - string = bash_input.location.string; - - /* If the string doesn't exist, or is empty, EOF found. */ -- if (string && *string) -+ while (string && *string) - { - c = *string++; - bash_input.location.string = string; -+#if __CYGWIN__ -+ { -+ extern int igncr; -+ if (igncr && c == '\r') -+ continue; -+ } -+#endif - return (c); - } -- else -- return (EOF); -+ return (EOF); - } - - static int -@@ -2305,7 +2311,7 @@ shell_getc (remove_quoted_newline) - if (n <= 2) /* we have to save 1 for the newline added below */ - { - if (truncating == 0) -- internal_warning("shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%llu): line truncated", shell_input_line_size, SIZE_MAX); -+ internal_warning("shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%zu): line truncated", shell_input_line_size, SIZE_MAX); - shell_input_line[i] = '\0'; - truncating = 1; - } -@@ -3582,7 +3588,6 @@ parse_comsub (qc, open, close, lenp, fla - - while (count) - { --comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0); - - if (ch == EOF) ---- pathexp.h 2009-01-04 12:32:40.000000000 -0700 -+++ pathexp.h 2015-02-06 17:14:11.062454900 -0700 -@@ -86,7 +86,7 @@ struct ign { - typedef int sh_iv_item_func_t __P((struct ign *)); - - struct ignorevar { -- char *varname; /* FIGNORE or GLOBIGNORE */ -+ char *varname; /* FIGNORE or GLOBIGNORE or EXECIGNORE */ - struct ign *ignores; /* Store the ignore strings here */ - int num_ignores; /* How many are there? */ - char *last_ignoreval; /* Last value of variable - cached for speed */ ---- redir.c 2013-10-14 07:19:59.000000000 -0600 -+++ redir.c 2015-02-06 17:14:11.078059300 -0700 -@@ -156,7 +156,6 @@ redirection_error (temp, error) - #endif - else if (expandable_redirection_filename (temp)) - { --expandable_filename: - oflags = temp->redirectee.filename->flags; - if (posixly_correct && interactive_shell == 0) - temp->redirectee.filename->flags |= W_NOGLOB; ---- subst.c 2015-02-06 17:12:55.370841100 -0700 -+++ subst.c 2015-02-06 17:14:11.078059300 -0700 -@@ -41,6 +41,7 @@ - #include "posixstat.h" - #include "bashintl.h" - -+#define NEED_SH_SETLINEBUF_DECL /* used in externs.h */ - #include "shell.h" - #include "parser.h" - #include "flags.h" -@@ -5268,6 +5269,13 @@ read_comsub (fd, quoted, rflag) - #endif - continue; - } -+#if __CYGWIN__ -+ { -+ extern int igncr; -+ if (igncr && c == '\r') -+ continue; -+ } -+#endif /* __CYGWIN__ */ - - /* Add the character to ISTRING, possibly after resizing it. */ - RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); -@@ -5385,6 +5393,28 @@ command_substitute (string, quoted) - goto error_exit; - } - -+#if __CYGWIN__ -+ /* Passing a pipe through std fds can cause hangs when talking to a -+ non-cygwin child. Move it. */ -+ if (fildes[0] < 3) -+ { -+ int fd = fcntl (fildes[0], F_DUPFD, 3); -+ close (fildes[0]); -+ fildes[0] = fd; -+ } -+ if (fildes[1] < 3) -+ { -+ int fd = fcntl (fildes[1], F_DUPFD, 3); -+ close (fildes[1]); -+ fildes[1] = fd; -+ } -+ if (fildes[0] < 0 || fildes[1] < 0) -+ { -+ sys_error (_("cannot make pipe for command substitution")); -+ goto error_exit; -+ } -+#endif /* __CYGWIN__ */ -+ - old_pid = last_made_pid; - #if defined (JOB_CONTROL) - old_pipeline_pgrp = pipeline_pgrp; ---- support/bashversion.c 2008-09-09 07:31:53.000000000 -0600 -+++ support/bashversion.c 2015-02-06 17:14:11.078059300 -0700 -@@ -26,6 +26,9 @@ - - #if defined (HAVE_UNISTD_H) - # include -+#else -+extern int optind; -+extern char *optarg; - #endif - - #include "bashansi.h" -@@ -41,9 +44,6 @@ - #define LFLAG 0x0020 - #define XFLAG 0x0040 - --extern int optind; --extern char *optarg; -- - extern char *dist_version; - extern int patch_level; - -@@ -65,7 +65,7 @@ main (argc, argv) - char **argv; - { - int opt, oflags; -- char dv[128], *rv; -+ char dv[128], *rv = NULL; - - if (progname = strrchr (argv[0], '/')) - progname++; ---- support/mkversion.sh 2008-08-13 06:25:57.000000000 -0600 -+++ support/mkversion.sh 2015-02-06 17:14:11.078059300 -0700 -@@ -29,7 +29,7 @@ source_dir="." - while [ $# -gt 0 ]; do - case "$1" in - -o) shift; OUTFILE=$1; shift ;; -- -b) shift; inc_build=yes ;; -+ -b) shift; ;;# inc_build=yes ;; # hacked out for cygport - -s) shift; rel_status=$1; shift ;; - -p) shift; patch_level=$1; shift ;; - -d) shift; dist_version=$1; shift ;; ---- variables.c 2015-02-06 17:12:55.729569600 -0700 -+++ variables.c 2015-02-06 17:14:11.078059300 -0700 -@@ -2526,9 +2526,9 @@ bind_variable_internal (name, value, tab - - newname = 0; - #if defined (ARRAY_VARS) -- if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name)) -+ if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference ((char *)name)) - { -- newname = array_variable_name (name, &subp, &sublen); -+ newname = array_variable_name ((char*)name, &subp, &sublen); - if (newname == 0) - return (SHELL_VAR *)NULL; /* XXX */ - entry = hash_lookup (newname, table); -@@ -2573,13 +2573,13 @@ bind_variable_internal (name, value, tab - entry = make_new_array_variable (newname); /* indexed array by default */ - if (entry == 0) - return entry; -- ind = array_expand_index (name, subp, sublen); -+ ind = array_expand_index (entry, subp, sublen); - bind_array_element (entry, ind, value, aflags); - } - #endif - else if (entry == 0) - { -- entry = make_new_variable (name, table); -+ entry = make_new_variable ((char*)name, table); - var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */ - } - else if (entry->assign_func) /* array vars have assign functions now */ -@@ -4679,6 +4679,8 @@ static struct name_and_function special_ - { "COMP_WORDBREAKS", sv_comp_wordbreaks }, - #endif - -+ { "EXECIGNORE", sv_execignore }, -+ - { "FUNCNEST", sv_funcnest }, - - { "GLOBIGNORE", sv_globignore }, -@@ -4877,6 +4879,13 @@ sv_globignore (name) - setup_glob_ignore (name); - } - -+/* What to do when EXECIGNORE changes. */ -+void -+sv_execignore (char *name) -+{ -+ setup_exec_ignore (name); -+} -+ - #if defined (READLINE) - void - sv_comp_wordbreaks (name) -@@ -4950,7 +4959,7 @@ sv_winsize (name) - /* Update the value of HOME in the export environment so tilde expansion will - work on cygwin. */ - #if defined (__CYGWIN__) --sv_home (name) -+void sv_home (name) - char *name; - { - array_needs_making = 1; ---- variables.h 2014-01-08 13:33:29.000000000 -0700 -+++ variables.h 2015-02-06 17:14:11.078059300 -0700 -@@ -372,6 +372,7 @@ extern void sv_ifs __P((char *)); - extern void sv_path __P((char *)); - extern void sv_mail __P((char *)); - extern void sv_funcnest __P((char *)); -+extern void sv_execignore __P((char *)); - extern void sv_globignore __P((char *)); - extern void sv_ignoreeof __P((char *)); - extern void sv_strict_posix __P((char *)); diff --git a/pkgs/shells/bash/cygwin-bash-4.4.11-2.src.patch b/pkgs/shells/bash/cygwin-bash-4.4.11-2.src.patch new file mode 100644 index 00000000000..c854e8828ae --- /dev/null +++ b/pkgs/shells/bash/cygwin-bash-4.4.11-2.src.patch @@ -0,0 +1,607 @@ +--- origsrc/bash-4.4/bashline.c 2017-01-23 13:28:06.955247200 -0600 ++++ src/bash-4.4/bashline.c 2017-01-23 13:55:07.992877600 -0600 +@@ -76,6 +76,16 @@ + # include "pcomplete.h" + #endif + ++#if __CYGWIN__ ++# ifdef __x86_64__ ++# define IMP(x) __imp_##x ++# else ++# define IMP(x) _imp__##x ++# endif ++#else ++# define IMP(x) x ++#endif ++ + /* These should agree with the defines for emacs_mode and vi_mode in + rldefs.h, even though that's not a public readline header file. */ + #ifndef EMACS_EDITING_MODE +@@ -271,6 +281,11 @@ int no_empty_command_completion; + are the only possible matches, even if FIGNORE says to. */ + int force_fignore = 1; + ++#if __CYGWIN__ ++/* If set, shorten "foo.exe" to "foo" when they are the same file. */ ++int completion_strip_exe; ++#endif /* __CYGWIN__ */ ++ + /* Perform spelling correction on directory names during word completion */ + int dircomplete_spelling = 0; + +@@ -498,11 +513,12 @@ initialize_readline () + kseq[0] = CTRL('J'); + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); +- if (func == rl_vi_editing_mode) ++ extern rl_command_func_t *IMP(rl_vi_editing_mode); ++ if (func == rl_vi_editing_mode || func == IMP(rl_vi_editing_mode)) + rl_unbind_key_in_map (CTRL('J'), emacs_meta_keymap); + kseq[0] = CTRL('M'); + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); +- if (func == rl_vi_editing_mode) ++ if (func == rl_vi_editing_mode || func == IMP(rl_vi_editing_mode)) + rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap); + #if defined (VI_MODE) + rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap); +@@ -521,7 +537,8 @@ initialize_readline () + kseq[0] = '~'; + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); +- if (func == 0 || func == rl_tilde_expand) ++ extern rl_command_func_t *IMP(rl_tilde_expand); ++ if (func == 0 || func == rl_tilde_expand || func == IMP(rl_tilde_expand)) + rl_bind_keyseq_in_map (kseq, bash_complete_username, emacs_meta_keymap); + + rl_bind_key_if_unbound_in_map ('~', bash_possible_username_completions, emacs_ctlx_keymap); +@@ -544,7 +561,8 @@ initialize_readline () + kseq[0] = TAB; + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); +- if (func == 0 || func == rl_tab_insert) ++ extern rl_command_func_t *IMP(rl_tab_insert); ++ if (func == 0 || func == rl_tab_insert || func == IMP(rl_tab_insert)) + rl_bind_key_in_map (TAB, dynamic_complete_history, emacs_meta_keymap); + + /* Tell the completer that we want a crack first. */ +@@ -2194,6 +2212,21 @@ globword: + + if (match && executable_completion ((searching_path ? val : cval), searching_path)) + { ++#if __CYGWIN__ ++ if (completion_strip_exe) ++ { ++ size_t val_len = strlen (val); ++ char *candidate; ++ if (val_len > 4 && !strcasecmp (&val[val_len - 4], ".exe") ++ && (candidate = strdup (val))) ++ { ++ candidate[val_len - 4] = '\0'; ++ if (same_file (val, candidate, NULL, NULL)) ++ temp[strlen (temp) - 4] = '\0'; ++ free (candidate); ++ } ++ } ++#endif + if (cval != val) + free (cval); + free (val); +@@ -2929,6 +2962,17 @@ test_for_directory (name) + int r; + + fn = bash_tilde_expand (name, 0); ++#if __CYGWIN ++ /* stat("//server") can only be successful as a directory, but can take ++ seconds to time out on failure. It is much faster to assume that ++ "//server" is a valid name than it is to wait for a stat, even if it ++ gives false positives on bad names. */ ++ if (fn[0] == '/' && fn[1] == '/' && ! strchr (&fn[2], '/')) ++ { ++ free (fn); ++ return 1; ++ } ++#endif + r = file_isdir (fn); + free (fn); + +--- origsrc/bash-4.4/builtins/read.def 2017-01-23 13:28:07.017686500 -0600 ++++ src/bash-4.4/builtins/read.def 2017-01-23 13:55:07.992877600 -0600 +@@ -85,7 +85,6 @@ $END + + #ifdef __CYGWIN__ + # include +-# include + #endif + + #include "../bashintl.h" +@@ -530,10 +529,6 @@ read_builtin (list) + fflush (stderr); + } + +-#if defined (__CYGWIN__) && defined (O_TEXT) +- setmode (0, O_TEXT); +-#endif +- + ps2 = 0; + for (print_ps2 = eof = retval = 0;;) + { +@@ -664,6 +659,14 @@ read_builtin (list) + if (c == '\0' && delim != '\0') + continue; /* skip NUL bytes in input */ + ++#ifdef __CYGWIN__ ++ { ++ extern igncr; ++ if (igncr && c == '\r' && delim != '\r') ++ continue; /* skip carriage return */ ++ } ++#endif ++ + if ((skip_ctlesc == 0 && c == CTLESC) || (skip_ctlnul == 0 && c == CTLNUL)) + { + saw_escape++; +--- origsrc/bash-4.4/builtins/set.def 2016-06-02 19:10:10.000000000 -0500 ++++ src/bash-4.4/builtins/set.def 2017-01-23 13:55:07.992877600 -0600 +@@ -56,6 +56,13 @@ extern int dont_save_function_defs; + #if defined (READLINE) + extern int no_line_editing; + #endif /* READLINE */ ++#ifdef __CYGWIN__ ++extern int igncr; ++static int set_minus_o_option_maybe (int, const char *, int); ++# define INTERACTIVE_ONLY ,1 ++#else ++# define INTERACTIVE_ONLY ++#endif + + $BUILTIN set + $FUNCTION set_builtin +@@ -92,6 +99,9 @@ Options: + #if defined (HISTORY) + history enable command history + #endif ++#ifdef __CYGWIN__ ++ igncr on Cygwin, ignore \r in line endings ++#endif + ignoreeof the shell will not exit upon reading EOF + interactive-comments + allow comments to appear in interactive commands +@@ -192,29 +202,39 @@ const struct { + int *variable; + setopt_set_func_t *set_func; + setopt_get_func_t *get_func; ++#ifdef __CYGWIN__ ++ /* Cygwin users have taken to exporting SHELLOPTS for the cygwin-specific ++ igncr. As a result, we want to ensure SHELLOPTS parsing does not turn ++ on interactive options when exported from an interactive shell, but ++ parse in a non-interactive setting, so as not to break POSIX /bin/sh */ ++ int interactive_only; ++#endif + } o_options[] = { + { "allexport", 'a', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + #if defined (BRACE_EXPANSION) + { "braceexpand",'B', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + #endif + #if defined (READLINE) +- { "emacs", '\0', (int *)NULL, set_edit_mode, get_edit_mode }, ++ { "emacs", '\0', (int *)NULL, set_edit_mode, get_edit_mode INTERACTIVE_ONLY }, + #endif + { "errexit", 'e', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "errtrace", 'E', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "functrace", 'T', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "hashall", 'h', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + #if defined (BANG_HISTORY) +- { "histexpand", 'H', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, ++ { "histexpand", 'H', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL INTERACTIVE_ONLY }, + #endif /* BANG_HISTORY */ + #if defined (HISTORY) +- { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL }, ++ { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL INTERACTIVE_ONLY }, ++#endif ++#ifdef __CYGWIN__ ++ { "igncr", '\0', &igncr, NULL, (setopt_get_func_t *)NULL }, + #endif + { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, + { "interactive-comments", '\0', &interactive_comments, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "keyword", 'k', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + #if defined (JOB_CONTROL) +- { "monitor", 'm', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, ++ { "monitor", 'm', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL INTERACTIVE_ONLY }, + #endif + { "noclobber", 'C', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "noexec", 'n', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +@@ -233,7 +253,7 @@ const struct { + { "privileged", 'p', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "verbose", 'v', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + #if defined (READLINE) +- { "vi", '\0', (int *)NULL, set_edit_mode, get_edit_mode }, ++ { "vi", '\0', (int *)NULL, set_edit_mode, get_edit_mode INTERACTIVE_ONLY }, + #endif + { "xtrace", 'x', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + {(char *)NULL, 0 , (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +@@ -455,6 +475,15 @@ int + set_minus_o_option (on_or_off, option_name) + int on_or_off; + char *option_name; ++#ifdef __CYGWIN__ ++{ ++ /* See Cygwin comments above. */ ++ return set_minus_o_option_maybe (on_or_off, option_name, 0); ++} ++static int ++set_minus_o_option_maybe (int on_or_off, const char *option_name, ++ int avoid_interactive) ++#endif /* __CYGWIN__ */ + { + register int i; + +@@ -462,6 +491,10 @@ set_minus_o_option (on_or_off, option_na + { + if (STREQ (option_name, o_options[i].name)) + { ++#ifdef __CYGWIN__ ++ if (o_options[i].interactive_only && avoid_interactive) ++ return EXECUTION_SUCCESS; ++#endif + if (o_options[i].letter == 0) + { + previous_option_value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); +@@ -588,7 +621,11 @@ parse_shellopts (value) + vptr = 0; + while (vname = extract_colon_unit (value, &vptr)) + { ++#ifdef __CYGWIN__ ++ set_minus_o_option_maybe (FLAG_ON, vname, !interactive_shell); ++#else + set_minus_o_option (FLAG_ON, vname); ++#endif + free (vname); + } + } +--- origsrc/bash-4.4/builtins/shopt.def 2016-05-06 14:00:02.000000000 -0500 ++++ src/bash-4.4/builtins/shopt.def 2017-01-23 13:55:07.992877600 -0600 +@@ -92,6 +92,10 @@ extern int glob_asciirange; + extern int lastpipe_opt; + extern int inherit_errexit; + ++#ifdef __CYGWIN__ ++extern int completion_strip_exe; ++#endif ++ + #if defined (EXTENDED_GLOB) + extern int extended_glob; + #endif +@@ -169,6 +173,9 @@ static struct { + { "compat41", &shopt_compat41, set_compatibility_level }, + { "compat42", &shopt_compat42, set_compatibility_level }, + { "compat43", &shopt_compat43, set_compatibility_level }, ++#ifdef __CYGWIN__ ++ { "completion_strip_exe", &completion_strip_exe, NULL }, ++#endif + #if defined (READLINE) + { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, + { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, +--- origsrc/bash-4.4/config-top.h 2016-05-19 13:34:02.000000000 -0500 ++++ src/bash-4.4/config-top.h 2017-01-23 13:55:07.992877600 -0600 +@@ -87,10 +87,10 @@ + #define DEFAULT_BASHRC "~/.bashrc" + + /* System-wide .bashrc file for interactive shells. */ +-/* #define SYS_BASHRC "/etc/bash.bashrc" */ ++#define SYS_BASHRC "/etc/bash.bashrc" + + /* System-wide .bash_logout for login shells. */ +-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */ ++#define SYS_BASH_LOGOUT "/etc/bash.bash_logout" + + /* Define this to make non-interactive shells begun with argv[0][0] == '-' + run the startup files when not in posix mode. */ +@@ -100,7 +100,7 @@ + sshd and source the .bashrc if so (like the rshd behavior). This checks + for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment, + which can be fooled under certain not-uncommon circumstances. */ +-/* #define SSH_SOURCE_BASHRC */ ++#define SSH_SOURCE_BASHRC + + /* Define if you want the case-capitalizing operators (~[~]) and the + `capcase' variable attribute (declare -c). */ +--- origsrc/bash-4.4/doc/Makefile.in 2015-12-06 18:55:56.000000000 -0600 ++++ src/bash-4.4/doc/Makefile.in 2017-01-23 13:55:07.992877600 -0600 +@@ -189,7 +189,7 @@ bashref.html: $(BASHREF_FILES) $(HSUSER) + $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi + + bash.info: bashref.info +- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ ++ ${SHELL} ${INFOPOST} < bashref.info > $@ ; \ + + bash.txt: bash.1 + bash.ps: bash.1 +@@ -252,9 +252,9 @@ install: info installdirs + -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} + -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) + # uncomment the next lines to install the builtins man page +-# sed 's:bash\.1:man1/&:' $(srcdir)/builtins.1 > $${TMPDIR:-/var/tmp}/builtins.1 +-# -$(INSTALL_DATA) $${TMPDIR:-/var/tmp}/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} +-# -$(RM) $${TMPDIR:-/var/tmp}/builtins.1 ++ sed 's:bash\.1:man1/&:' $(srcdir)/builtins.1 > $${TMPDIR:-/var/tmp}/builtins.1 ++ -$(INSTALL_DATA) $${TMPDIR:-/var/tmp}/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} ++ -$(RM) $${TMPDIR:-/var/tmp}/builtins.1 + -if test -f bash.info; then d=.; else d=$(srcdir); fi; \ + $(INSTALL_DATA) $$d/bash.info $(DESTDIR)$(infodir)/bash.info + # run install-info if it is present to update the info directory +--- origsrc/bash-4.4/doc/bash.1 2016-08-26 08:45:17.000000000 -0500 ++++ src/bash-4.4/doc/bash.1 2017-01-23 13:55:08.008447700 -0600 +@@ -9607,6 +9607,10 @@ filenames. + This variable is set by default, which is the default bash behavior in + versions through 4.2. + .TP 8 ++.B completion_strip_exe ++If set, whenever bash sees \fIfoo.exe\fP during completion, it checks if ++\fIfoo\fP is the same file and strips the suffix. ++.TP 8 + .B direxpand + If set, + .B bash +--- origsrc/bash-4.4/doc/bashref.texi 2016-09-07 16:13:36.000000000 -0500 ++++ src/bash-4.4/doc/bashref.texi 2017-01-23 13:55:08.008447700 -0600 +@@ -5123,6 +5123,10 @@ filenames. + This variable is set by default, which is the default Bash behavior in + versions through 4.2. + ++@item completion_strip_exe ++If set, whenever bash sees @file{foo.exe} during completion, it checks if ++@file{foo} is the same file and strips the suffix. ++ + @item direxpand + If set, Bash + replaces directory names with the results of word expansion when performing +--- origsrc/bash-4.4/doc/builtins.1 2012-02-21 13:32:05.000000000 -0600 ++++ src/bash-4.4/doc/builtins.1 2017-01-23 13:55:08.008447700 -0600 +@@ -19,6 +19,6 @@ shift, shopt, source, suspend, test, tim + ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) + .SH BASH BUILTIN COMMANDS + .nr zZ 1 +-.so bash.1 ++.so man1/bash.1 + .SH SEE ALSO + bash(1), sh(1) +--- origsrc/bash-4.4/general.c 2016-08-11 10:16:56.000000000 -0500 ++++ src/bash-4.4/general.c 2017-01-23 13:55:08.008447700 -0600 +@@ -48,6 +48,10 @@ + + #include + ++#ifdef __CYGWIN__ ++# include ++#endif ++ + #if !defined (errno) + extern int errno; + #endif /* !errno */ +@@ -718,7 +722,8 @@ make_absolute (string, dot_path) + { + char pathbuf[PATH_MAX + 1]; + +- cygwin_conv_to_full_posix_path (string, pathbuf); ++ cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, string, pathbuf, ++ sizeof pathbuf); + result = savestring (pathbuf); + } + #else +--- origsrc/bash-4.4/input.c 2015-09-24 18:49:23.000000000 -0500 ++++ src/bash-4.4/input.c 2017-01-23 13:55:08.008447700 -0600 +@@ -44,6 +44,10 @@ + #include "quit.h" + #include "trap.h" + ++#ifdef __CYGWIN__ ++int igncr; ++#endif ++ + #if !defined (errno) + extern int errno; + #endif /* !errno */ +@@ -561,6 +565,19 @@ buffered_getchar () + { + CHECK_TERMSIG; + ++#ifdef __CYGWIN__ ++ /* shopt igncr discards carriage returns from the input stream. ++ If cr is the only character left in the buffer, recurse to pick ++ up the next byte; otherwise flatten the buffer. */ ++ if (igncr) ++ { ++ int ch; ++ while ((ch = bufstream_getc (buffers[bash_input.location.buffered_fd])) ++ == '\r') ++ ; ++ return ch; ++ } ++#endif + #if !defined (DJGPP) + return (bufstream_getc (buffers[bash_input.location.buffered_fd])); + #else +--- origsrc/bash-4.4/lib/sh/pathphys.c 2013-05-28 14:33:58.000000000 -0500 ++++ src/bash-4.4/lib/sh/pathphys.c 2017-01-23 13:55:08.008447700 -0600 +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + + #include "shell.h" + +@@ -76,6 +77,9 @@ sh_physpath (path, flags) + char *path; + int flags; + { ++#ifdef __CYGWIN__ ++ return realpath (path, NULL); ++#endif + char tbuf[PATH_MAX+1], linkbuf[PATH_MAX+1]; + char *result, *p, *q, *qsave, *qbase, *workpath; + int double_slash_path, linklen, nlink; +@@ -214,11 +218,7 @@ error: + { + q = result; + /* Duplicating some code here... */ +-#if defined (__CYGWIN__) +- qbase = (ISALPHA((unsigned char)workpath[0]) && workpath[1] == ':') ? workpath + 3 : workpath + 1; +-#else + qbase = workpath + 1; +-#endif + double_slash_path = DOUBLE_SLASH (workpath); + qbase += double_slash_path; + +--- origsrc/bash-4.4/lib/sh/tmpfile.c 2016-08-11 10:05:58.000000000 -0500 ++++ src/bash-4.4/lib/sh/tmpfile.c 2017-01-23 13:55:08.008447700 -0600 +@@ -101,7 +101,7 @@ get_tmpdir (flags) + if (tdir && (file_iswdir (tdir) == 0 || strlen (tdir) > PATH_MAX)) + tdir = 0; + +- if (tdir == 0) ++ if (tdir == 0 || !file_iswdir (tdir)) + tdir = get_sys_tmpdir (); + + #if defined (HAVE_PATHCONF) && defined (_PC_NAME_MAX) +--- origsrc/bash-4.4/mksyntax.c 2012-07-29 18:48:38.000000000 -0500 ++++ src/bash-4.4/mksyntax.c 2017-01-23 13:55:08.008447700 -0600 +@@ -29,13 +29,13 @@ + + #ifdef HAVE_UNISTD_H + # include ++#else ++extern int optind; ++extern char *optarg; + #endif + + #include "syntax.h" + +-extern int optind; +-extern char *optarg; +- + #ifndef errno + extern int errno; + #endif +--- origsrc/bash-4.4/parse.y 2016-09-11 10:31:46.000000000 -0500 ++++ src/bash-4.4/parse.y 2017-01-23 13:55:08.008447700 -0600 +@@ -1539,14 +1539,20 @@ yy_string_get () + string = bash_input.location.string; + + /* If the string doesn't exist, or is empty, EOF found. */ +- if (string && *string) ++ while (string && *string) + { + c = *string++; + bash_input.location.string = string; ++#ifdef __CYGWIN__ ++ { ++ extern int igncr; ++ if (igncr && c == '\r') ++ continue; ++ } ++#endif + return (c); + } +- else +- return (EOF); ++ return (EOF); + } + + static int +--- origsrc/bash-4.4/subst.c 2017-01-23 13:28:06.955247200 -0600 ++++ src/bash-4.4/subst.c 2017-01-23 13:55:08.008447700 -0600 +@@ -43,6 +43,7 @@ + #include "posixstat.h" + #include "bashintl.h" + ++#define NEED_SH_SETLINEBUF_DECL + #include "shell.h" + #include "parser.h" + #include "flags.h" +@@ -5964,6 +5965,13 @@ read_comsub (fd, quoted, rflag) + #endif + continue; + } ++#ifdef __CYGWIN__ ++ { ++ extern int igncr; ++ if (igncr && c == '\r') ++ continue; ++ } ++#endif + + /* Add the character to ISTRING, possibly after resizing it. */ + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); +@@ -6088,6 +6096,28 @@ command_substitute (string, quoted) + goto error_exit; + } + ++#ifdef __CYGWIN__ ++ /* Passing a pipe through std fds can cause hangs when talking to a ++ non-cygwin child. Move it. */ ++ if (fildes[0] < 3) ++ { ++ int fd = fcntl (fildes[0], F_DUPFD, 3); ++ close (fildes[0]); ++ fildes[0] = fd; ++ } ++ if (fildes[1] < 3) ++ { ++ int fd = fcntl (fildes[1], F_DUPFD, 3); ++ close (fildes[1]); ++ fildes[1] = fd; ++ } ++ if (fildes[0] < 0 || fildes[1] < 0) ++ { ++ sys_error (_("cannot make pipe for command substitution")); ++ goto error_exit; ++ } ++#endif /* __CYGWIN__ */ ++ + old_pid = last_made_pid; + #if defined (JOB_CONTROL) + old_pipeline_pgrp = pipeline_pgrp; +--- origsrc/bash-4.4/support/bashversion.c 2008-09-09 08:31:53.000000000 -0500 ++++ src/bash-4.4/support/bashversion.c 2017-01-23 13:55:08.024037200 -0600 +@@ -26,6 +26,9 @@ + + #if defined (HAVE_UNISTD_H) + # include ++#else ++extern int optind; ++extern char *optarg; + #endif + + #include "bashansi.h" +@@ -41,9 +44,6 @@ + #define LFLAG 0x0020 + #define XFLAG 0x0040 + +-extern int optind; +-extern char *optarg; +- + extern char *dist_version; + extern int patch_level; + +--- origsrc/bash-4.4/support/mkversion.sh 2008-08-13 07:25:57.000000000 -0500 ++++ src/bash-4.4/support/mkversion.sh 2017-01-23 13:55:08.024037200 -0600 +@@ -29,7 +29,7 @@ source_dir="." + while [ $# -gt 0 ]; do + case "$1" in + -o) shift; OUTFILE=$1; shift ;; +- -b) shift; inc_build=yes ;; ++ -b) shift; ;; # inc_build=yes ;; # hacked out for cygport + -s) shift; rel_status=$1; shift ;; + -p) shift; patch_level=$1; shift ;; + -d) shift; dist_version=$1; shift ;; +--- origsrc/bash-4.4/variables.c 2016-06-15 15:05:52.000000000 -0500 ++++ src/bash-4.4/variables.c 2017-01-23 13:55:08.024037200 -0600 +@@ -5239,6 +5239,7 @@ sv_winsize (name) + /* Update the value of HOME in the export environment so tilde expansion will + work on cygwin. */ + #if defined (__CYGWIN__) ++void + sv_home (name) + char *name; + { From f3c039ff8d4100c22e09b23a596727a5fa211de9 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:22 -0300 Subject: [PATCH 39/59] perl-LocaleGettext: fix test failure on cygwin by setting $LANG --- pkgs/top-level/perl-packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index fe6e513dec9..eeb285d7616 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -7753,6 +7753,7 @@ let self = _self // overrides; _self = with self; { url = mirror://cpan/authors/id/P/PV/PVANDRY/gettext-1.05.tar.gz; sha256 = "15262a00vx714szpx8p2z52wxkz46xp7acl72znwjydyq4ypydi7"; }; + LANG="C"; }; LocaleMaketext = buildPerlPackage { From a08024bcb0fbde4d866bf91ac8ee9776ed23d78a Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:27 -0300 Subject: [PATCH 40/59] procps-ng: allow cygwin --- pkgs/os-specific/linux/procps-ng/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/procps-ng/default.nix b/pkgs/os-specific/linux/procps-ng/default.nix index c52dfbe461a..36f623f38b3 100644 --- a/pkgs/os-specific/linux/procps-ng/default.nix +++ b/pkgs/os-specific/linux/procps-ng/default.nix @@ -27,6 +27,6 @@ stdenv.mkDerivation rec { description = "Utilities that give information about processes using the /proc filesystem"; priority = 10; # less than coreutils, which also provides "kill" and "uptime" license = lib.licenses.gpl2; - platforms = lib.platforms.linux; + platforms = lib.platforms.linux ++ lib.platforms.cygwin; }; } From 84a4ee5c041697fd25d4082a0f94ec1d82406017 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:32 -0300 Subject: [PATCH 41/59] gpm: allow cygwin --- pkgs/servers/gpm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/servers/gpm/default.nix b/pkgs/servers/gpm/default.nix index ac5e0b7c1b1..e260ccfb761 100644 --- a/pkgs/servers/gpm/default.nix +++ b/pkgs/servers/gpm/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { homepage = http://www.nico.schottelius.org/software/gpm/; description = "A daemon that provides mouse support on the Linux console"; license = licenses.gpl2; - platforms = platforms.linux; + platforms = platforms.linux ++ platforms.cygwin; maintainers = with maintainers; [ eelco wkennington ]; }; } From 260afef6679952fd70e9f2a7a41d54e760b21ca5 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:41 -0300 Subject: [PATCH 42/59] libiconv: remove old cygwin hacks --- .../libraries/libiconv/default.nix | 12 +- .../libiconv/libiconv-1.14-reloc.patch | 269 ------------------ .../libiconv/libiconv-1.14-wchar.patch | 102 ------- 3 files changed, 1 insertion(+), 382 deletions(-) delete mode 100644 pkgs/development/libraries/libiconv/libiconv-1.14-reloc.patch delete mode 100644 pkgs/development/libraries/libiconv/libiconv-1.14-wchar.patch diff --git a/pkgs/development/libraries/libiconv/default.nix b/pkgs/development/libraries/libiconv/default.nix index 4c634de9246..c23fd57e514 100644 --- a/pkgs/development/libraries/libiconv/default.nix +++ b/pkgs/development/libraries/libiconv/default.nix @@ -11,11 +11,6 @@ stdenv.mkDerivation rec { sha256 = "0y1ij745r4p48mxq84rax40p10ln7fc7m243p8k8sia519i3dxfc"; }; - patches = lib.optionals stdenv.isCygwin [ - ./libiconv-1.14-reloc.patch - ./libiconv-1.14-wchar.patch - ]; - postPatch = lib.optionalString ((stdenv ? cross && stdenv.cross.libc == "msvcrt") || stdenv.cc.nativeLibc) '' @@ -23,12 +18,7 @@ stdenv.mkDerivation rec { ''; configureFlags = - # On Cygwin, Libtool produces a `.dll.a', which is not a "real" DLL - # (Windows' linker would need to be used somehow to produce an actual - # DLL.) Thus, build the static library too, and this is what Gettext - # will actually use. - lib.optional stdenv.isCygwin "--enable-static" - ++ lib.optional stdenv.isFreeBSD "--with-pic"; + lib.optional stdenv.isFreeBSD "--with-pic"; crossAttrs = { # Disable stripping to avoid "libiconv.a: Archive has no index" (MinGW). diff --git a/pkgs/development/libraries/libiconv/libiconv-1.14-reloc.patch b/pkgs/development/libraries/libiconv/libiconv-1.14-reloc.patch deleted file mode 100644 index 005e3379d16..00000000000 --- a/pkgs/development/libraries/libiconv/libiconv-1.14-reloc.patch +++ /dev/null @@ -1,269 +0,0 @@ ---- libiconv-1.14/lib/relocatable.c 2011-08-07 13:48:03.000000000 -0400 -+++ libiconv-1.14/lib/relocatable.c 2011-10-15 03:14:13.195133600 -0400 -@@ -2,20 +2,18 @@ - Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc. - Written by Bruno Haible , 2003. - -- This program is free software; you can redistribute it and/or modify it -- under the terms of the GNU Library General Public License as published -- by the Free Software Foundation; either version 2, or (at your option) -- any later version. -+ This program is free software: you can redistribute it and/or modify -+ it under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Library General Public License for more details. -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU Lesser General Public License for more details. - -- You should have received a copy of the GNU Library General Public -- License along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -- USA. */ -+ You should have received a copy of the GNU Lesser General Public License -+ along with this program. If not, see . */ - - - /* Tell glibc's to provide a prototype for getline(). -@@ -87,6 +85,19 @@ - # define FILE_SYSTEM_PREFIX_LEN(P) 0 - #endif - -+/* Whether to enable the more costly support for relocatable libraries. -+ It allows libraries to be have been installed with a different original -+ prefix than the program. But it is quite costly, especially on Cygwin -+ platforms, see below. Therefore we enable it by default only on native -+ Win32 platforms. */ -+#ifndef ENABLE_COSTLY_RELOCATABLE -+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ -+# define ENABLE_COSTLY_RELOCATABLE 1 -+# else -+# define ENABLE_COSTLY_RELOCATABLE 0 -+# endif -+#endif -+ - /* Original installation prefix. */ - static char *orig_prefix; - static size_t orig_prefix_len; -@@ -156,7 +167,7 @@ - #endif - } - --#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) -+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE) - - /* Convenience function: - Computes the current installation prefix, based on the original -@@ -286,7 +297,7 @@ - - #endif /* !IN_LIBRARY || PIC */ - --#if defined PIC && defined INSTALLDIR -+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE - - /* Full pathname of shared library, or NULL. */ - static char *shared_library_fullname; -@@ -332,7 +343,9 @@ - #if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__ - /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline() - function. -- Cygwin >= 1.5 has /proc/self/maps and the getline() function too. */ -+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too. -+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on -+ Cygwin 1.7. */ - FILE *fp; - - /* Open the current process' maps file. It describes one VMA per line. */ -@@ -405,7 +418,7 @@ - const char * - relocate (const char *pathname) - { --#if defined PIC && defined INSTALLDIR -+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE - static int initialized; - - /* Initialization code for a shared library. */ ---- libiconv-1.14/libcharset/lib/relocatable.c 2011-08-07 13:48:03.000000000 -0400 -+++ libiconv-1.14/libcharset/lib/relocatable.c 2011-10-15 03:14:27.878133600 -0400 -@@ -2,20 +2,18 @@ - Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc. - Written by Bruno Haible , 2003. - -- This program is free software; you can redistribute it and/or modify it -- under the terms of the GNU Library General Public License as published -- by the Free Software Foundation; either version 2, or (at your option) -- any later version. -+ This program is free software: you can redistribute it and/or modify -+ it under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Library General Public License for more details. -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU Lesser General Public License for more details. - -- You should have received a copy of the GNU Library General Public -- License along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -- USA. */ -+ You should have received a copy of the GNU Lesser General Public License -+ along with this program. If not, see . */ - - - /* Tell glibc's to provide a prototype for getline(). -@@ -87,6 +85,19 @@ - # define FILE_SYSTEM_PREFIX_LEN(P) 0 - #endif - -+/* Whether to enable the more costly support for relocatable libraries. -+ It allows libraries to be have been installed with a different original -+ prefix than the program. But it is quite costly, especially on Cygwin -+ platforms, see below. Therefore we enable it by default only on native -+ Win32 platforms. */ -+#ifndef ENABLE_COSTLY_RELOCATABLE -+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ -+# define ENABLE_COSTLY_RELOCATABLE 1 -+# else -+# define ENABLE_COSTLY_RELOCATABLE 0 -+# endif -+#endif -+ - /* Original installation prefix. */ - static char *orig_prefix; - static size_t orig_prefix_len; -@@ -156,7 +167,7 @@ - #endif - } - --#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) -+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE) - - /* Convenience function: - Computes the current installation prefix, based on the original -@@ -286,7 +297,7 @@ - - #endif /* !IN_LIBRARY || PIC */ - --#if defined PIC && defined INSTALLDIR -+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE - - /* Full pathname of shared library, or NULL. */ - static char *shared_library_fullname; -@@ -332,7 +343,9 @@ - #if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__ - /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline() - function. -- Cygwin >= 1.5 has /proc/self/maps and the getline() function too. */ -+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too. -+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on -+ Cygwin 1.7. */ - FILE *fp; - - /* Open the current process' maps file. It describes one VMA per line. */ -@@ -405,7 +418,7 @@ - const char * - relocate (const char *pathname) - { --#if defined PIC && defined INSTALLDIR -+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE - static int initialized; - - /* Initialization code for a shared library. */ ---- libiconv-1.14/srclib/relocatable.c 2011-08-07 09:42:06.000000000 -0400 -+++ libiconv-1.14/srclib/relocatable.c 2011-10-15 03:14:37.739133600 -0400 -@@ -3,16 +3,16 @@ - Written by Bruno Haible , 2003. - - This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -+ it under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ GNU Lesser General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . */ - - -@@ -85,6 +85,19 @@ - # define FILE_SYSTEM_PREFIX_LEN(P) 0 - #endif - -+/* Whether to enable the more costly support for relocatable libraries. -+ It allows libraries to be have been installed with a different original -+ prefix than the program. But it is quite costly, especially on Cygwin -+ platforms, see below. Therefore we enable it by default only on native -+ Win32 platforms. */ -+#ifndef ENABLE_COSTLY_RELOCATABLE -+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ -+# define ENABLE_COSTLY_RELOCATABLE 1 -+# else -+# define ENABLE_COSTLY_RELOCATABLE 0 -+# endif -+#endif -+ - /* Original installation prefix. */ - static char *orig_prefix; - static size_t orig_prefix_len; -@@ -154,7 +167,7 @@ - #endif - } - --#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) -+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE) - - /* Convenience function: - Computes the current installation prefix, based on the original -@@ -284,7 +297,7 @@ - - #endif /* !IN_LIBRARY || PIC */ - --#if defined PIC && defined INSTALLDIR -+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE - - /* Full pathname of shared library, or NULL. */ - static char *shared_library_fullname; -@@ -330,7 +343,9 @@ - #if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__ - /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline() - function. -- Cygwin >= 1.5 has /proc/self/maps and the getline() function too. */ -+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too. -+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on -+ Cygwin 1.7. */ - FILE *fp; - - /* Open the current process' maps file. It describes one VMA per line. */ -@@ -403,7 +418,7 @@ - const char * - relocate (const char *pathname) - { --#if defined PIC && defined INSTALLDIR -+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE - static int initialized; - - /* Initialization code for a shared library. */ ---- libiconv-1.14/srcm4/gnulib-comp.m4 2011-08-07 09:42:12.000000000 -0400 -+++ libiconv-1.14/srcm4/gnulib-comp.m4 2011-08-30 02:40:45.597317000 -0400 -@@ -164,6 +164,7 @@ gl_UNISTD_MODULE_INDICATOR([readlink]) - gl_RELOCATABLE([$gl_source_base]) - if test $RELOCATABLE = yes; then - AC_LIBOBJ([progreloc]) -+ AC_LIBOBJ([relocatable]) - fi - gl_FUNC_READLINK_SEPARATE - gl_CANONICALIZE_LGPL_SEPARATE diff --git a/pkgs/development/libraries/libiconv/libiconv-1.14-wchar.patch b/pkgs/development/libraries/libiconv/libiconv-1.14-wchar.patch deleted file mode 100644 index 0e4ddd931bb..00000000000 --- a/pkgs/development/libraries/libiconv/libiconv-1.14-wchar.patch +++ /dev/null @@ -1,102 +0,0 @@ ---- libiconv-1.14/libcharset/lib/localcharset.c 2011-02-28 17:43:35.000000000 -0500 -+++ libiconv-1.14/libcharset/lib/localcharset.c 2011-08-28 00:16:57.238000000 -0400 -@@ -54,10 +54,6 @@ - # include - # endif - # endif --# ifdef __CYGWIN__ --# define WIN32_LEAN_AND_MEAN --# include --# endif - #elif defined WIN32_NATIVE - # define WIN32_LEAN_AND_MEAN - # include -@@ -124,7 +120,7 @@ - cp = charset_aliases; - if (cp == NULL) - { --#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__) -+#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE) - const char *dir; - const char *base = "charset.alias"; - char *file_name; -@@ -309,7 +305,7 @@ - "DECKOREAN" "\0" "EUC-KR" "\0"; - # endif - --# if defined WIN32_NATIVE || defined __CYGWIN__ -+# if defined WIN32_NATIVE - /* To avoid the troubles of installing a separate file in the same - directory as the DLL and of retrieving the DLL's directory at - runtime, simply inline the aliases here. */ -@@ -365,64 +361,12 @@ - - # if HAVE_LANGINFO_CODESET - -- /* Most systems support nl_langinfo (CODESET) nowadays. */ -- codeset = nl_langinfo (CODESET); -- --# ifdef __CYGWIN__ -- /* Cygwin < 1.7 does not have locales. nl_langinfo (CODESET) always -- returns "US-ASCII". Return the suffix of the locale name from the -- environment variables (if present) or the codepage as a number. */ -- if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) -- { -- const char *locale; -- static char buf[2 + 10 + 1]; -- -- locale = getenv ("LC_ALL"); -- if (locale == NULL || locale[0] == '\0') -- { -- locale = getenv ("LC_CTYPE"); -- if (locale == NULL || locale[0] == '\0') -- locale = getenv ("LANG"); -- } -- if (locale != NULL && locale[0] != '\0') -- { -- /* If the locale name contains an encoding after the dot, return -- it. */ -- const char *dot = strchr (locale, '.'); -- -- if (dot != NULL) -- { -- const char *modifier; -- -- dot++; -- /* Look for the possible @... trailer and remove it, if any. */ -- modifier = strchr (dot, '@'); -- if (modifier == NULL) -- return dot; -- if (modifier - dot < sizeof (buf)) -- { -- memcpy (buf, dot, modifier - dot); -- buf [modifier - dot] = '\0'; -- return buf; -- } -- } -- } -- -- /* Woe32 has a function returning the locale's codepage as a number: -- GetACP(). This encoding is used by Cygwin, unless the user has set -- the environment variable CYGWIN=codepage:oem (which very few people -- do). -- Output directed to console windows needs to be converted (to -- GetOEMCP() if the console is using a raster font, or to -- GetConsoleOutputCP() if it is using a TrueType font). Cygwin does -- this conversion transparently (see winsup/cygwin/fhandler_console.cc), -- converting to GetConsoleOutputCP(). This leads to correct results, -- except when SetConsoleOutputCP has been called and a raster font is -- in use. */ -- sprintf (buf, "CP%u", GetACP ()); -- codeset = buf; -- } --# endif -+ /* Most systems support nl_langinfo (CODESET) nowadays. -+ POSIX allows that the returned pointer may point to a static area that -+ may be overwritten by subsequent calls to setlocale or nl_langinfo. */ -+ static char codeset_buf[64]; -+ codeset_buf[0] = '\0'; -+ codeset = strncat (codeset_buf, nl_langinfo (CODESET), sizeof (codeset_buf)); - - # else - From b92840487edda418c304c0ef361e673eb85c51d5 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:46 -0300 Subject: [PATCH 43/59] gettext: fix cygwin build --- .../development/libraries/gettext/default.nix | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix index 7d555ba4d06..d7058884104 100644 --- a/pkgs/development/libraries/gettext/default.nix +++ b/pkgs/development/libraries/gettext/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, libiconv, xz }: +{ stdenv, lib, hostPlatform, fetchurl, libiconv, xz }: stdenv.mkDerivation rec { name = "gettext-${version}"; @@ -18,15 +18,6 @@ stdenv.mkDerivation rec { LDFLAGS = if stdenv.isSunOS then "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec" else ""; configureFlags = [ "--disable-csharp" "--with-xz" ] - ++ lib.optionals stdenv.isCygwin [ - "--disable-java" - "--disable-native-java" - # Share the cache among the various `configure' runs. - "--config-cache" - "--with-included-gettext" - "--with-included-glib" - "--with-included-libcroco" - ] # avoid retaining reference to CF during stdenv bootstrap ++ lib.optionals stdenv.isDarwin [ "gt_cv_func_CFPreferencesCopyAppValue=no" @@ -38,6 +29,9 @@ stdenv.mkDerivation rec { substituteInPlace gettext-tools/projects/KDE/trigger --replace "/bin/pwd" pwd substituteInPlace gettext-tools/projects/GNOME/trigger --replace "/bin/pwd" pwd substituteInPlace gettext-tools/src/project-id --replace "/bin/pwd" pwd + '' + lib.optionalString hostPlatform.isCygwin '' + sed -i -e "s/\(cldr_plurals_LDADD = \)/\\1..\/gnulib-lib\/libxml_rpl.la /" gettext-tools/src/Makefile.in + sed -i -e "s/\(libgettextsrc_la_LDFLAGS = \)/\\1..\/gnulib-lib\/libxml_rpl.la /" gettext-tools/src/Makefile.in ''; # On cross building, gettext supposes that the wchar.h from libc @@ -49,11 +43,9 @@ stdenv.mkDerivation rec { echo gl_cv_func_wcwidth_works=yes > cachefile configureFlags="$configureFlags --cache-file=`pwd`/cachefile" fi - '' + lib.optionalString stdenv.isCygwin '' - sed -i -e "s/\(am_libgettextlib_la_OBJECTS = \)error.lo/\\1/" gettext-tools/gnulib-lib/Makefile.in ''; - nativeBuildInputs = [ xz xz.bin ] ++ stdenv.lib.optional (!stdenv.isLinux) libiconv; # HACK, see #10874 (and 14664) + nativeBuildInputs = [ xz xz.bin ] ++ stdenv.lib.optional (!stdenv.isLinux && !hostPlatform.isCygwin) libiconv; # HACK, see #10874 (and 14664) enableParallelBuilding = true; @@ -89,14 +81,3 @@ stdenv.mkDerivation rec { // stdenv.lib.optionalAttrs stdenv.isDarwin { makeFlags = "CFLAGS=-D_FORTIFY_SOURCE=0"; } - -// stdenv.lib.optionalAttrs stdenv.isCygwin { - patchPhase = - # Make sure `error.c' gets compiled and is part of `libgettextlib.la'. - # This fixes: - # gettext-0.18.1.1/gettext-tools/src/msgcmp.c:371: undefined reference to `_error_message_count' - '' - sed -i gettext-tools/gnulib-lib/Makefile.in \ - -e 's/am_libgettextlib_la_OBJECTS =/am_libgettextlib_la_OBJECTS = error.lo/g' - ''; -} From c580ab4fcf18db191fba337ca41757ff0c9cfc14 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:51 -0300 Subject: [PATCH 44/59] openssl: fix cygwin build --- .../libraries/openssl/1.0.1-cygwin64.patch | 136 ------------------ .../development/libraries/openssl/default.nix | 1 - 2 files changed, 137 deletions(-) delete mode 100644 pkgs/development/libraries/openssl/1.0.1-cygwin64.patch diff --git a/pkgs/development/libraries/openssl/1.0.1-cygwin64.patch b/pkgs/development/libraries/openssl/1.0.1-cygwin64.patch deleted file mode 100644 index 63112abf3a3..00000000000 --- a/pkgs/development/libraries/openssl/1.0.1-cygwin64.patch +++ /dev/null @@ -1,136 +0,0 @@ ---- openssl-1.0.1e/config 2014-10-23 15:53:23.436600000 +0200 -+++ openssl-1.0.1e/config 2014-10-23 15:55:33.837000000 +0200 -@@ -832,6 +832,7 @@ - # these are all covered by the catchall below - # *-dgux) OUT="dgux" ;; - mips-sony-newsos4) OUT="newsos4-gcc" ;; -+ x86_64-*-cygwin) OUT="Cygwin-x86_64" ;; - *-*-cygwin_pre1.3) OUT="Cygwin-pre1.3" ;; - *-*-cygwin) OUT="Cygwin" ;; - t3e-cray-unicosmk) OUT="cray-t3e" ;; ---- openssl-1.0.1e/Configure 2013-02-17 17:06:18.682058900 -0600 -+++ openssl-1.0.1e/Configure 2013-02-17 16:38:08.000000000 -0600 -@@ -550,6 +550,7 @@ my %table=( - "Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", - "Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:coff:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", - "debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", -+"Cygwin-x86_64", "gcc:-DTERMIOS -DL_ENDIAN -O3 -Wall:::CYGWIN32::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:mingw64:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", - - # NetWare from David Ward (dsward@novell.com) - # requires either MetroWerks NLM development tools, or gcc / nlmconv -@@ -1128,7 +1129,7 @@ foreach (sort @experimental) - - my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds; - --$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/); -+$exe_ext=".exe" if ($target =~ /^Cygwin/ || $target eq "DJGPP" || $target =~ /^mingw/); - $exe_ext=".nlm" if ($target =~ /netware/); - $exe_ext=".pm" if ($target =~ /vos/); - $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); ---- openssl-1.0.1e/Makefile.org 2013-02-11 09:26:04.000000000 -0600 -+++ openssl-1.0.1e/Makefile.org 2013-02-17 16:38:08.000000000 -0600 -@@ -326,9 +326,9 @@ clean-shared: - done; \ - fi; \ - ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \ -- if [ "$(PLATFORM)" = "Cygwin" ]; then \ -+ case "$(PLATFORM)" in Cygwin*) \ - ( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \ -- fi; \ -+ esac; \ - done - - link-shared: -@@ -571,11 +571,7 @@ install_sw: - do \ - if [ -f "$$i" -o -f "$$i.a" ]; then \ - ( echo installing $$i; \ -- if [ "$(PLATFORM)" != "Cygwin" ]; then \ -- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ -- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ -- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \ -- else \ -+ case "$(PLATFORM)" in Cygwin*) \ - c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \ - cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ - chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ -@@ -583,7 +579,12 @@ install_sw: - cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \ -- fi ); \ -+ ;; \ -+ *) \ -+ cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ -+ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ -+ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \ -+ esac ); \ - if expr $(PLATFORM) : 'mingw' > /dev/null; then \ - ( case $$i in \ - *crypto*) i=libeay32.dll;; \ -@@ -643,9 +644,9 @@ install_docs: - @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \ - here="`pwd`"; \ - filecase=; \ -- if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \ -+ case "$(PLATFORM)" in DJGPP|Cygwin*|mingw*) \ - filecase=-i; \ -- fi; \ -+ esac; \ - set -e; for i in doc/apps/*.pod; do \ - fn=`basename $$i .pod`; \ - sec=`$(PERL) util/extract-section.pl 1 < $$i`; \ ---- openssl-1.0.1e/engines/ccgost/Makefile 2013-02-11 09:26:04.000000000 -0600 -+++ openssl-1.0.1e/engines/ccgost/Makefile 2013-02-17 17:05:47.759290200 -0600 -@@ -45,7 +45,11 @@ install: - set -e; \ - echo installing $(LIBNAME); \ - pfx=lib; \ -- if [ "$(PLATFORM)" != "Cygwin" ]; then \ -+ case "$(PLATFORM)" in Cygwin*) \ -+ sfx=".so"; \ -+ cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ -+ ;; \ -+ *) \ - case "$(CFLAGS)" in \ - *DSO_BEOS*) sfx=".so";; \ - *DSO_DLFCN*) sfx=`expr "$(SHLIB_EXT)" : '.*\(\.[a-z][a-z]*\)' \| ".so"`;; \ -@@ -54,10 +58,7 @@ install: - *) sfx=".bad";; \ - esac; \ - cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ -- else \ -- sfx=".so"; \ -- cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ -- fi; \ -+ esac; \ - chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx; \ - fi ---- openssl-1.0.1i/engines/Makefile 2014-10-23 16:08:19.360200000 +0200 -+++ openssl-1.0.1i/engines/Makefile 2014-10-23 16:10:54.205800000 +0200 -@@ -111,7 +111,11 @@ - for l in $(LIBNAMES); do \ - ( echo installing $$l; \ - pfx=lib; \ -- if [ "$(PLATFORM)" != "Cygwin" ]; then \ -+ case "$(PLATFORM)" in Cygwin*) \ -+ sfx=".so"; \ -+ cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ -+ ;; \ -+ *) \ - case "$(CFLAGS)" in \ - *DSO_BEOS*) sfx=".so";; \ - *DSO_DLFCN*) sfx=`expr "$(SHLIB_EXT)" : '.*\(\.[a-z][a-z]*\)' \| ".so"`;; \ -@@ -120,10 +124,7 @@ - *) sfx=".bad";; \ - esac; \ - cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ -- else \ -- sfx=".so"; \ -- cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ -- fi; \ -+ esac; \ - chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \ - done; \ diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 8582c0a1833..0d07513634f 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -22,7 +22,6 @@ let ++ [ ./nix-ssl-cert-file.patch ] ++ optional (versionOlder version "1.1.0") (if stdenv.isDarwin then ./use-etc-ssl-certs-darwin.patch else ./use-etc-ssl-certs.patch) - ++ optional stdenv.isCygwin ./1.0.1-cygwin64.patch ++ optional (versionOlder version "1.0.2" && (stdenv.isDarwin || (stdenv ? cross && stdenv.cross.libc == "libSystem"))) ./darwin-arch.patch; From cbc0db08f948a762ee4b3f7f9ded47a034f5d9fa Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 May 2017 10:36:56 -0300 Subject: [PATCH 45/59] zlib: fix cygwin build --- pkgs/development/libraries/zlib/default.nix | 2 ++ .../libraries/zlib/disable-cygwin-widechar.patch | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/zlib/disable-cygwin-widechar.patch diff --git a/pkgs/development/libraries/zlib/default.nix b/pkgs/development/libraries/zlib/default.nix index e6468771cd4..2278453c492 100644 --- a/pkgs/development/libraries/zlib/default.nix +++ b/pkgs/development/libraries/zlib/default.nix @@ -17,6 +17,8 @@ stdenv.mkDerivation rec { sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1"; }; + patches = stdenv.lib.optional hostPlatform.isCygwin ./disable-cygwin-widechar.patch; + postPatch = stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace configure \ --replace '/usr/bin/libtool' 'ar' \ diff --git a/pkgs/development/libraries/zlib/disable-cygwin-widechar.patch b/pkgs/development/libraries/zlib/disable-cygwin-widechar.patch new file mode 100644 index 00000000000..3de4978c306 --- /dev/null +++ b/pkgs/development/libraries/zlib/disable-cygwin-widechar.patch @@ -0,0 +1,13 @@ +diff --git a/gzguts.h b/gzguts.h +index 990a4d2..6378d46 100644 +--- a/gzguts.h ++++ b/gzguts.h +@@ -39,7 +39,7 @@ + # include + #endif + +-#if defined(_WIN32) || defined(__CYGWIN__) ++#if defined(_WIN32) + # define WIDECHAR + #endif + From f81117e324501530ce8ecec6a94846fae78e413e Mon Sep 17 00:00:00 2001 From: David McFarland Date: Fri, 2 Jun 2017 14:22:06 -0300 Subject: [PATCH 46/59] stdenv: remove leftover 'system' reference the rest were removed in 1dc6f15de995da2d0351b34c40215336e219cf82 --- pkgs/stdenv/native/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix index b21da1cd522..31973c2cdc5 100644 --- a/pkgs/stdenv/native/default.nix +++ b/pkgs/stdenv/native/default.nix @@ -102,7 +102,7 @@ let fetchurlBoot = fetchurl; - inherit system shell cc overrides config; + inherit shell cc overrides config; }; in From f4a2351b2b8f89797528fd6d40d502c23d132e44 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 6 Jun 2017 10:15:02 -0300 Subject: [PATCH 47/59] gdbm: fix cygwin build --- pkgs/development/libraries/gdbm/default.nix | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/gdbm/default.nix b/pkgs/development/libraries/gdbm/default.nix index de77b4c99b8..86d9bd64988 100644 --- a/pkgs/development/libraries/gdbm/default.nix +++ b/pkgs/development/libraries/gdbm/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl }: +{ stdenv, lib, buildPlatform, fetchurl }: stdenv.mkDerivation rec { name = "gdbm-1.13"; @@ -10,9 +10,22 @@ stdenv.mkDerivation rec { doCheck = true; + # Linking static stubs on cygwin requires correct ordering. + # Consider upstreaming this. + + # Disable dbmfetch03.at test because it depends on unlink() + # failing on a link in a chmod -w directory, which cygwin + # apparently allows. + postPatch = lib.optionalString buildPlatform.isCygwin '' + substituteInPlace tests/Makefile.in --replace \ + '_LDADD = ../src/libgdbm.la ../compat/libgdbm_compat.la' \ + '_LDADD = ../compat/libgdbm_compat.la ../src/libgdbm.la' + substituteInPlace tests/testsuite.at --replace \ + 'm4_include([dbmfetch03.at])' "" + ''; configureFlags = [ "--enable-libgdbm-compat" ]; - meta = with stdenv.lib; { + meta = with lib; { description = "GNU dbm key/value database library"; longDescription = From bf517c1c16e49f25aca3318ad03335e3b39f2929 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Fri, 9 Jun 2017 10:58:48 -0300 Subject: [PATCH 48/59] pkgconfig: fix cygwin build --- .../tools/misc/pkgconfig/2.36.3-not-win32.patch | 13 +++++++++++++ pkgs/development/tools/misc/pkgconfig/default.nix | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/misc/pkgconfig/2.36.3-not-win32.patch b/pkgs/development/tools/misc/pkgconfig/2.36.3-not-win32.patch index 246173d465a..c1dd808e600 100644 --- a/pkgs/development/tools/misc/pkgconfig/2.36.3-not-win32.patch +++ b/pkgs/development/tools/misc/pkgconfig/2.36.3-not-win32.patch @@ -309,3 +309,16 @@ # else /* On old systems which lack it, use setlocale or getenv. */ +diff --git a/glib/gtypes.h b/glib/gtypes.h +index c18e0bf..816685a 100644 +--- a/glib/glib/gtypes.h ++++ b/glib/glib/gtypes.h +@@ -462,7 +462,7 @@ G_END_DECLS + * properly get exported in Windows DLLs. + */ + #ifndef GLIB_VAR +-# ifdef G_PLATFORM_WIN32 ++# ifdef G_OS_WIN32 + # ifdef GLIB_STATIC_COMPILATION + # define GLIB_VAR extern + # else /* !GLIB_STATIC_COMPILATION */ diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index 10358df69c2..5be42855a9c 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-internal-glib" ] ++ optional (stdenv.isSunOS) [ "--with-libiconv=gnu" "--with-system-library-path" "--with-system-include-path" "CFLAGS=-DENABLE_NLS" ]; - postInstall = ''rm "$out"/bin/*-pkg-config''; # clean the duplicate file + postInstall = ''rm -f "$out"/bin/*-pkg-config''; # clean the duplicate file meta = { description = "A tool that allows packages to find out information about other packages"; From be75c5dffbc236e80d382237209434a05344f2a7 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Mon, 12 Jun 2017 14:25:03 -0300 Subject: [PATCH 49/59] cygwin: fix doubleFromSystem for cygwin --- lib/systems/parse.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 34272b45b8b..fdfc1cbc907 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -164,7 +164,7 @@ rec { mkSystemFromString = s: mkSystemFromSkeleton (mkSkeletonFromList (lib.splitString "-" s)); doubleFromSystem = { cpu, vendor, kernel, abi, ... }: - if vendor == kernels.windows && abi == abis.cygnus + if abi == abis.cygnus then "${cpu.name}-cygwin" else "${cpu.name}-${kernel.name}"; From 4ac1901d54f4301df2f09b85e2f69769ee61dfc1 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Mon, 12 Jun 2017 14:27:10 -0300 Subject: [PATCH 50/59] stdenv: remove unix kernel family System predicate patterns can now be specified as a list of OR'd attribute sets. --- lib/systems/inspect.nix | 15 ++++++++++----- lib/systems/parse.nix | 17 ++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 241c9365f2e..ec71592d119 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -1,8 +1,9 @@ with import ./parse.nix; with import ../attrsets.nix; +with import ../lists.nix; rec { - patterns = { + patterns = rec { "32bit" = { cpu = { bits = 32; }; }; "64bit" = { cpu = { bits = 64; }; }; i686 = { cpu = cpuTypes.i686; }; @@ -13,8 +14,8 @@ rec { BigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; }; LittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; - Unix = { kernel = { families = { inherit (kernelFamilies) unix; }; }; }; BSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; + Unix = [ BSD Linux SunOS Hurd Cygwin ]; Darwin = { kernel = kernels.darwin; }; Linux = { kernel = kernels.linux; }; @@ -27,11 +28,15 @@ rec { Cygwin = { kernel = kernels.windows; abi = abis.cygnus; }; MinGW = { kernel = kernels.windows; abi = abis.gnu; }; - Arm32 = recursiveUpdate patterns.Arm patterns."32bit"; - Arm64 = recursiveUpdate patterns.Arm patterns."64bit"; + Arm32 = recursiveUpdate Arm patterns."32bit"; + Arm64 = recursiveUpdate Arm patterns."64bit"; }; + matchAnyAttrs = patterns: + if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns + else matchAttrs patterns; + predicates = mapAttrs' - (name: value: nameValuePair ("is" + name) (matchAttrs value)) + (name: value: nameValuePair ("is" + name) (matchAnyAttrs value)) patterns; } diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index fdfc1cbc907..bf21d74b931 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -68,21 +68,20 @@ rec { isKernelFamily = isType "kernel-family"; kernelFamilies = setTypes "kernel-family" { bsd = {}; - unix = {}; }; isKernel = x: isType "kernel" x; kernels = with execFormats; with kernelFamilies; setTypesAssert "kernel" (x: isExecFormat x.execFormat && all isKernelFamily (attrValues x.families)) { - darwin = { execFormat = macho; families = { inherit unix; }; }; - freebsd = { execFormat = elf; families = { inherit unix bsd; }; }; - hurd = { execFormat = elf; families = { inherit unix; }; }; - linux = { execFormat = elf; families = { inherit unix; }; }; - netbsd = { execFormat = elf; families = { inherit unix bsd; }; }; - none = { execFormat = unknown; families = { inherit unix; }; }; - openbsd = { execFormat = elf; families = { inherit unix bsd; }; }; - solaris = { execFormat = elf; families = { inherit unix; }; }; + darwin = { execFormat = macho; families = { }; }; + freebsd = { execFormat = elf; families = { inherit bsd; }; }; + hurd = { execFormat = elf; families = { }; }; + linux = { execFormat = elf; families = { }; }; + netbsd = { execFormat = elf; families = { inherit bsd; }; }; + none = { execFormat = unknown; families = { }; }; + openbsd = { execFormat = elf; families = { inherit bsd; }; }; + solaris = { execFormat = elf; families = { }; }; windows = { execFormat = pe; families = { }; }; } // { # aliases # TODO(@Ericson2314): Handle these Darwin version suffixes more generally. From 63a1a2ac63451fc47a5992f8e04e42843f019ecd Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 20 Jun 2017 15:04:24 -0300 Subject: [PATCH 51/59] stdenv: disable -fPIC on cygwin It's always on, and you get a warning if you specify it --- pkgs/build-support/cc-wrapper/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 0c624a1454a..e955313e7bd 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 From f60a36a910f770bea564ba30e0dc052ab9d0d4f8 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Sat, 24 Jun 2017 13:11:43 +0200 Subject: [PATCH 52/59] llvm-packages: get rid of extra build depedencies for manpages Fixes #26756 --- .../compilers/llvm/4/clang/default.nix | 2 +- pkgs/development/compilers/llvm/4/default.nix | 25 +++++++++++++------ pkgs/development/compilers/llvm/4/llvm.nix | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/pkgs/development/compilers/llvm/4/clang/default.nix b/pkgs/development/compilers/llvm/4/clang/default.nix index 64dbaa21dd4..276db7a7b41 100644 --- a/pkgs/development/compilers/llvm/4/clang/default.nix +++ b/pkgs/development/compilers/llvm/4/clang/default.nix @@ -1,6 +1,6 @@ { stdenv, fetch, cmake, libxml2, libedit, llvm, version, release_version, clang-tools-extra_src, python , fixDarwinDylibNames -, enableManpages ? true +, enableManpages ? false }: let diff --git a/pkgs/development/compilers/llvm/4/default.nix b/pkgs/development/compilers/llvm/4/default.nix index 15918f9c1eb..703b3aeee18 100644 --- a/pkgs/development/compilers/llvm/4/default.nix +++ b/pkgs/development/compilers/llvm/4/default.nix @@ -13,14 +13,25 @@ let compiler-rt_src = fetch "compiler-rt" "059ipqq27gd928ay06f1ck3vw6y5h5z4zd766x8k0k7jpqimpwnk"; clang-tools-extra_src = fetch "clang-tools-extra" "16bwckgcxfn56mbqjlxi7fxja0zm9hjfa6s3ncm3dz98n5zd7ds1"; - self = { - llvm = callPackage ./llvm.nix { - inherit compiler-rt_src stdenv; - }; + # Add man output without introducing extra dependencies. + overrideManOutput = drv: + let drv-manpages = drv.override { enableManpages = true; }; in + drv // { man = drv-manpages.man; outputs = drv.outputs ++ ["man"]; }; - clang-unwrapped = callPackage ./clang { - inherit clang-tools-extra_src stdenv; - }; + llvm = callPackage ./llvm.nix { + inherit compiler-rt_src stdenv; + }; + + clang-unwrapped = callPackage ./clang { + inherit clang-tools-extra_src stdenv; + }; + + self = { + llvm = overrideManOutput llvm; + clang-unwrapped = overrideManOutput clang-unwrapped; + + llvm-manpages = self.llvm.man; + clang-manpages = self.clang-unwrapped.man; clang = wrapCC self.clang-unwrapped; diff --git a/pkgs/development/compilers/llvm/4/llvm.nix b/pkgs/development/compilers/llvm/4/llvm.nix index 98c24495355..c5d22825f30 100644 --- a/pkgs/development/compilers/llvm/4/llvm.nix +++ b/pkgs/development/compilers/llvm/4/llvm.nix @@ -16,7 +16,7 @@ , compiler-rt_src , libcxxabi , debugVersion ? false -, enableManpages ? true +, enableManpages ? false , enableSharedLibraries ? true , darwin }: From f65b5365bb944bd94c582c59b4292e647b830707 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Sat, 24 Jun 2017 13:16:11 +0200 Subject: [PATCH 53/59] darwin-stdenv: remove llvm/clang manpage overrides from --- pkgs/stdenv/darwin/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index bce332b6761..03a815109c2 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -235,11 +235,11 @@ in rec { libcxxabi libcxx ncurses libffi zlib gmp pcre gnugrep coreutils findutils diffutils patchutils; - llvmPackages = let llvmOverride = llvmPackages.llvm.override { enableManpages = false; inherit libcxxabi; }; in - super.llvmPackages // { - llvm = llvmOverride; - clang-unwrapped = llvmPackages.clang-unwrapped.override { enableManpages = false; llvm = llvmOverride; }; - }; + llvmPackages = let llvmOverride = llvmPackages.llvm.override { inherit libcxxabi; }; + in super.llvmPackages // { + llvm = llvmOverride; + clang-unwrapped = llvmPackages.clang-unwrapped.override { llvm = llvmOverride; }; + }; darwin = super.darwin // { inherit (darwin) dyld Libsystem libiconv locale; From 071803955e0183739eeff2c31719f34df3cdea3c Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Mon, 26 Jun 2017 20:25:14 +0200 Subject: [PATCH 54/59] llvm-packages: mark manpages as lowPrio --- pkgs/development/compilers/llvm/4/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/llvm/4/default.nix b/pkgs/development/compilers/llvm/4/default.nix index 703b3aeee18..20e9d8d4d97 100644 --- a/pkgs/development/compilers/llvm/4/default.nix +++ b/pkgs/development/compilers/llvm/4/default.nix @@ -1,4 +1,4 @@ -{ newScope, stdenv, cmake, libxml2, python2, isl, fetchurl, overrideCC, wrapCC, darwin, ccWrapperFun }: +{ lowPrio, newScope, stdenv, cmake, libxml2, python2, isl, fetchurl, overrideCC, wrapCC, darwin, ccWrapperFun }: let callPackage = newScope (self // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); @@ -30,8 +30,8 @@ let llvm = overrideManOutput llvm; clang-unwrapped = overrideManOutput clang-unwrapped; - llvm-manpages = self.llvm.man; - clang-manpages = self.clang-unwrapped.man; + llvm-manpages = lowPrio self.llvm.man; + clang-manpages = lowPrio self.clang-unwrapped.man; clang = wrapCC self.clang-unwrapped; From bd562949cfa82b76ef5959bd53ee9596bc35e705 Mon Sep 17 00:00:00 2001 From: Guillaume Maudoux Date: Tue, 27 Jun 2017 10:57:44 +0200 Subject: [PATCH 55/59] terminfo: symlink terminfo to /etc for ncurses --- nixos/modules/config/system-path.nix | 1 - nixos/modules/config/terminfo.nix | 33 ++++++++++++++++++++++++++ nixos/modules/module-list.nix | 1 + nixos/modules/programs/environment.nix | 4 ---- nixos/modules/security/sudo.nix | 4 ---- 5 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 nixos/modules/config/terminfo.nix diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix index 3ac5f634c7a..cf3cc2f2262 100644 --- a/nixos/modules/config/system-path.nix +++ b/nixos/modules/config/system-path.nix @@ -115,7 +115,6 @@ in "/share/mime" "/share/nano" "/share/org" - "/share/terminfo" "/share/themes" "/share/vim-plugins" "/share/vulkan" diff --git a/nixos/modules/config/terminfo.nix b/nixos/modules/config/terminfo.nix new file mode 100644 index 00000000000..4fd6ba5ea60 --- /dev/null +++ b/nixos/modules/config/terminfo.nix @@ -0,0 +1,33 @@ +# This module manages the terminfo database +# and its integration in the system. +{ config, ... }: +{ + config = { + + environment.pathsToLink = [ + "/share/terminfo" + ]; + + environment.etc."terminfo" = { + source = "${config.system.path}/share/terminfo"; + }; + + environment.profileRelativeEnvVars = { + TERMINFO_DIRS = [ "/share/terminfo" ]; + }; + + environment.extraInit = '' + + # reset TERM with new TERMINFO available (if any) + export TERM=$TERM + ''; + + security.sudo.extraConfig = '' + + # Keep terminfo database for root and %wheel. + Defaults:root,%wheel env_keep+=TERMINFO_DIRS + Defaults:root,%wheel env_keep+=TERMINFO + ''; + + }; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 07be6555b23..3aa483c848c 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -21,6 +21,7 @@ ./config/sysctl.nix ./config/system-environment.nix ./config/system-path.nix + ./config/terminfo.nix ./config/timezone.nix ./config/unix-odbc-drivers.nix ./config/users-groups.nix diff --git a/nixos/modules/programs/environment.nix b/nixos/modules/programs/environment.nix index ba356a8ad2d..401d152941a 100644 --- a/nixos/modules/programs/environment.nix +++ b/nixos/modules/programs/environment.nix @@ -34,7 +34,6 @@ in { PATH = [ "/bin" ]; INFOPATH = [ "/info" "/share/info" ]; PKG_CONFIG_PATH = [ "/lib/pkgconfig" ]; - TERMINFO_DIRS = [ "/share/terminfo" ]; PERL5LIB = [ "/lib/perl5/site_perl" ]; KDEDIRS = [ "" ]; STRIGI_PLUGIN_PATH = [ "/lib/strigi/" ]; @@ -50,9 +49,6 @@ in environment.extraInit = '' - # reset TERM with new TERMINFO available (if any) - export TERM=$TERM - unset ASPELL_CONF for i in ${concatStringsSep " " (reverseList cfg.profiles)} ; do if [ -d "$i/lib/aspell" ]; then diff --git a/nixos/modules/security/sudo.nix b/nixos/modules/security/sudo.nix index 67a9b9a45ee..cfd0595e63b 100644 --- a/nixos/modules/security/sudo.nix +++ b/nixos/modules/security/sudo.nix @@ -66,10 +66,6 @@ in # Don't edit this file. Set the NixOS options ‘security.sudo.configFile’ # or ‘security.sudo.extraConfig’ instead. - # Environment variables to keep for root and %wheel. - Defaults:root,%wheel env_keep+=TERMINFO_DIRS - Defaults:root,%wheel env_keep+=TERMINFO - # Keep SSH_AUTH_SOCK so that pam_ssh_agent_auth.so can do its magic. Defaults env_keep+=SSH_AUTH_SOCK From b73a862f1777ad709b3088255d3967733549fbc9 Mon Sep 17 00:00:00 2001 From: Guillaume Maudoux Date: Tue, 27 Jun 2017 16:02:13 +0200 Subject: [PATCH 56/59] ncurses: look for terminfo entries in /etc --- pkgs/development/libraries/ncurses/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index 827a556a468..e6db7af6ee2 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -46,6 +46,9 @@ stdenv.mkDerivation rec { buildInputs = lib.optional (mouseSupport && stdenv.isLinux) gpm; preConfigure = '' + # These paths end up in the default lookup chain. + export TERMINFO_DIRS=/etc/terminfo + export PKG_CONFIG_LIBDIR="$dev/lib/pkgconfig" mkdir -p "$PKG_CONFIG_LIBDIR" configureFlagsArray+=( From 95c8277701fb746ad4d91841de494ee869886991 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Fri, 23 Jun 2017 17:45:27 -0400 Subject: [PATCH 57/59] misc pkgs: Remove unneeded *Platform == *Platform comparisons PR #26007 used these to avoid causing a mass rebuild. Now that we know things work, we do that to clean up. --- pkgs/applications/audio/mpg123/default.nix | 4 +- pkgs/applications/editors/ed/default.nix | 8 ++- pkgs/development/compilers/rust/rustc.nix | 3 +- pkgs/development/libraries/glew/1.10.nix | 4 +- pkgs/development/libraries/glew/default.nix | 4 +- pkgs/development/libraries/libelf/default.nix | 5 +- ...{cross-ar.patch => dont-hardcode-ar.patch} | 0 pkgs/development/libraries/zlib/default.nix | 58 +++++++++---------- .../tools/misc/binutils/default.nix | 12 +++- pkgs/development/tools/misc/gdb/default.nix | 5 +- pkgs/os-specific/darwin/binutils/default.nix | 13 +++-- pkgs/os-specific/darwin/cctools/port.nix | 15 +++-- pkgs/os-specific/linux/busybox/default.nix | 6 +- pkgs/tools/archivers/unzip/default.nix | 5 +- ...{cross-cc.patch => dont-hardcode-cc.patch} | 4 +- pkgs/tools/misc/coreutils/default.nix | 6 +- pkgs/tools/system/ddrescue/default.nix | 5 -- pkgs/tools/text/gnupatch/default.nix | 2 +- 18 files changed, 84 insertions(+), 75 deletions(-) rename pkgs/development/libraries/libelf/{cross-ar.patch => dont-hardcode-ar.patch} (100%) rename pkgs/tools/archivers/unzip/{cross-cc.patch => dont-hardcode-cc.patch} (74%) diff --git a/pkgs/applications/audio/mpg123/default.nix b/pkgs/applications/audio/mpg123/default.nix index 2909dd70ce9..59012432caf 100644 --- a/pkgs/applications/audio/mpg123/default.nix +++ b/pkgs/applications/audio/mpg123/default.nix @@ -1,6 +1,6 @@ { stdenv , fetchurl, alsaLib -, buildPlatform, hostPlatform +, hostPlatform }: stdenv.mkDerivation rec { @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib; - ${if buildPlatform != hostPlatform then "configureFlags" else null} = + configureFlags = stdenv.lib.optional (hostPlatform ? mpg123) "--with-cpu=${hostPlatform.mpg123.cpu}"; meta = { diff --git a/pkgs/applications/editors/ed/default.nix b/pkgs/applications/editors/ed/default.nix index 053e1d22af3..2404405c307 100644 --- a/pkgs/applications/editors/ed/default.nix +++ b/pkgs/applications/editors/ed/default.nix @@ -32,7 +32,13 @@ stdenv.mkDerivation rec { */ doCheck = !(hostPlatform.isDarwin || hostPlatform != buildPlatform); - configureFlags = if hostPlatform == buildPlatform then null else [ + # TODO(@Ericson2314): Use placeholder to make this a configure flag once Nix + # 1.12 is released. + preConfigure = '' + export DESTDIR=$out + ''; + + configureFlags = [ "--exec-prefix=${stdenv.cc.prefix}" "CC=${stdenv.cc.prefix}cc" ]; diff --git a/pkgs/development/compilers/rust/rustc.nix b/pkgs/development/compilers/rust/rustc.nix index 717c0092c94..28863e450a7 100644 --- a/pkgs/development/compilers/rust/rustc.nix +++ b/pkgs/development/compilers/rust/rustc.nix @@ -138,8 +138,7 @@ stdenv.mkDerivation { inherit doCheck; - ${if buildPlatform == hostPlatform then "dontSetConfigureCross" else null} = true; - ${if buildPlatform != hostPlatform then "configurePlatforms" else null} = []; + configurePlatforms = []; # https://github.com/NixOS/nixpkgs/pull/21742#issuecomment-272305764 # https://github.com/rust-lang/rust/issues/30181 diff --git a/pkgs/development/libraries/glew/1.10.nix b/pkgs/development/libraries/glew/1.10.nix index b2e1b26704f..159bf47e130 100644 --- a/pkgs/development/libraries/glew/1.10.nix +++ b/pkgs/development/libraries/glew/1.10.nix @@ -38,8 +38,8 @@ stdenv.mkDerivation rec { cp -r README.txt LICENSE.txt doc $out/share/doc/glew ''; - makeFlags = if hostPlatform == buildPlatform then null else [ - "SYSTEM=${if hostPlatform.isMinGW then "mingw" else hostPlatform.parsed.kernel}" + makeFlags = [ + "SYSTEM=${if hostPlatform.isMinGW then "mingw" else hostPlatform.parsed.kernel.name}" ]; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/glew/default.nix b/pkgs/development/libraries/glew/default.nix index ecf1e914a7b..814e4496b77 100644 --- a/pkgs/development/libraries/glew/default.nix +++ b/pkgs/development/libraries/glew/default.nix @@ -39,8 +39,8 @@ stdenv.mkDerivation rec { rm $out/lib/*.a ''; - makeFlags = if hostPlatform == buildPlatform then null else [ - "SYSTEM=${if hostPlatform.isMinGW then "mingw" else hostPlatform.parsed.kernel}" + makeFlags = [ + "SYSTEM=${if hostPlatform.isMinGW then "mingw" else hostPlatform.parsed.kernel.name}" ]; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/libelf/default.nix b/pkgs/development/libraries/libelf/default.nix index dcd5d1d7a93..5cf74164f0f 100644 --- a/pkgs/development/libraries/libelf/default.nix +++ b/pkgs/development/libraries/libelf/default.nix @@ -11,9 +11,8 @@ stdenv.mkDerivation rec { sha256 = "0vf7s9dwk2xkmhb79aigqm0x0yfbw1j0b9ksm51207qwr179n6jr"; }; - # TODO(@Ericson2314) Make unconditional next hash break - patches = if hostPlatform == buildPlatform then null else [ - ./cross-ar.patch + patches = [ + ./dont-hardcode-ar.patch ]; doCheck = true; diff --git a/pkgs/development/libraries/libelf/cross-ar.patch b/pkgs/development/libraries/libelf/dont-hardcode-ar.patch similarity index 100% rename from pkgs/development/libraries/libelf/cross-ar.patch rename to pkgs/development/libraries/libelf/dont-hardcode-ar.patch diff --git a/pkgs/development/libraries/zlib/default.nix b/pkgs/development/libraries/zlib/default.nix index eab36c21dc2..ef9f2569c45 100644 --- a/pkgs/development/libraries/zlib/default.nix +++ b/pkgs/development/libraries/zlib/default.nix @@ -4,10 +4,9 @@ , static ? false }: -let version = "1.2.11"; in - stdenv.mkDerivation rec { name = "zlib-${version}"; + version = "1.2.11"; src = fetchurl { urls = @@ -19,7 +18,7 @@ stdenv.mkDerivation rec { patches = stdenv.lib.optional hostPlatform.isCygwin ./disable-cygwin-widechar.patch; - postPatch = stdenv.lib.optionalString stdenv.isDarwin '' + postPatch = stdenv.lib.optionalString hostPlatform.isDarwin '' substituteInPlace configure \ --replace '/usr/bin/libtool' 'ar' \ --replace 'AR="libtool"' 'AR="ar"' \ @@ -30,14 +29,6 @@ stdenv.mkDerivation rec { setOutputFlags = false; outputDoc = "dev"; # single tiny man3 page - # TODO(@Dridus) CC set by cc-wrapper setup-hook, so just empty out the preConfigure script when cross building, but leave the old incorrect script when not - # cross building to avoid hash breakage. Once hash breakage is acceptable, remove preConfigure entirely. - preConfigure = stdenv.lib.optionalString (hostPlatform == buildPlatform) '' - if test -n "$crossConfig"; then - export CC=$crossConfig-gcc - fi - ''; - # FIXME needs gcc 4.9 in bootstrap tools hardeningDisable = [ "stackprotector" ]; @@ -49,37 +40,42 @@ stdenv.mkDerivation rec { # jww (2015-01-06): Sometimes this library install as a .so, even on # Darwin; others time it installs as a .dylib. I haven't yet figured out # what causes this difference. - + stdenv.lib.optionalString stdenv.isDarwin '' + + stdenv.lib.optionalString hostPlatform.isDarwin '' for file in $out/lib/*.so* $out/lib/*.dylib* ; do install_name_tool -id "$file" $file done + '' + # Non-typical naming confuses libtool which then refuses to use zlib's DLL + # in some cases, e.g. when compiling libpng. + + stdenv.lib.optionalString (hostPlatform.libc == "msvcrt") '' + ln -s zlib1.dll $out/bin/libz.dll ''; # As zlib takes part in the stdenv building, we don't want references # to the bootstrap-tools libgcc (as uses to happen on arm/mips) - NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (!stdenv.isDarwin) "-static-libgcc"; + NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (!hostPlatform.isDarwin) "-static-libgcc"; - crossAttrs = { - dontStrip = static; - configurePlatforms = []; - } // stdenv.lib.optionalAttrs (hostPlatform.libc == "msvcrt") { - installFlags = [ - "BINARY_PATH=$(out)/bin" - "INCLUDE_PATH=$(dev)/include" - "LIBRARY_PATH=$(out)/lib" - ]; - makeFlags = [ - "-f" "win32/Makefile.gcc" - "PREFIX=${stdenv.cc.prefix}" - ] ++ stdenv.lib.optional (!static) "SHARED_MODE=1"; + dontStrip = hostPlatform != buildPlatform && static; + configurePlatforms = []; - # Non-typical naming confuses libtool which then refuses to use zlib's DLL - # in some cases, e.g. when compiling libpng. - postInstall = postInstall + "ln -s zlib1.dll $out/bin/libz.dll"; + installFlags = stdenv.lib.optionals (hostPlatform.libc == "msvcrt") [ + "BINARY_PATH=$(out)/bin" + "INCLUDE_PATH=$(dev)/include" + "LIBRARY_PATH=$(out)/lib" + ]; + + makeFlags = [ + "PREFIX=${stdenv.cc.prefix}" + ] ++ stdenv.lib.optionals (hostPlatform.libc == "msvcrt") [ + "-f" "win32/Makefile.gcc" + ] ++ stdenv.lib.optionals (!static) [ + "SHARED_MODE=1" + ]; + + passthru = { + inherit version; }; - passthru.version = version; - meta = with stdenv.lib; { description = "Lossless data-compression library"; license = licenses.zlib; diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 82eb7f77bb4..ae58c72b786 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -8,10 +8,13 @@ let version = "2.28"; basename = "binutils-${version}"; inherit (stdenv.lib) optional optionals optionalString; + # The prefix prepended to binary names to allow multiple binuntils on the + # PATH to both be usable. + prefix = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-"; in stdenv.mkDerivation rec { - name = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-" + basename; + name = prefix + basename; src = fetchurl { url = "mirror://gnu/binutils/${basename}.tar.bz2"; @@ -78,15 +81,20 @@ stdenv.mkDerivation rec { then "-Wno-string-plus-int -Wno-deprecated-declarations" else "-static-libgcc"; + # TODO(@Ericson2314): Always pass "--target" and always prefix. + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = [ "--enable-shared" "--enable-deterministic-archives" "--disable-werror" ] ++ optional (stdenv.system == "mips64el-linux") "--enable-fix-loongson2f-nop" - ++ optional (targetPlatform != hostPlatform) "--target=${targetPlatform.config}" # TODO: make this unconditional ++ optionals gold [ "--enable-gold" "--enable-plugins" ] ++ optional (stdenv.system == "i686-linux") "--enable-targets=x86_64-linux-gnu"; enableParallelBuilding = true; + passthru = { + inherit prefix; + }; + meta = with stdenv.lib; { description = "Tools for manipulating binaries (linker, assembler, etc.)"; longDescription = '' diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix index 1e9cf910857..78dd4a1e3f5 100644 --- a/pkgs/development/tools/misc/gdb/default.nix +++ b/pkgs/development/tools/misc/gdb/default.nix @@ -48,6 +48,9 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral"; + # TODO(@Ericson2314): Always pass "--target" and always prefix. + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configureFlags = with stdenv.lib; [ "--with-gmp=${gmp.dev}" "--with-mpfr=${mpfr.dev}" "--with-system-readline" "--with-system-zlib" "--with-expat" "--with-libexpat-prefix=${expat.dev}" @@ -55,8 +58,6 @@ stdenv.mkDerivation rec { # TODO(@Ericson2314): make this conditional on whether host platform is NixOS "--with-separate-debug-dir=/run/current-system/sw/lib/debug" ++ stdenv.lib.optional (!pythonSupport) "--without-python" - # TODO(@Ericson2314): This should be done in stdenv, not per-package - ++ stdenv.lib.optional (targetPlatform != hostPlatform) "--target=${targetPlatform.config}" ++ stdenv.lib.optional multitarget "--enable-targets=all"; postInstall = diff --git a/pkgs/os-specific/darwin/binutils/default.nix b/pkgs/os-specific/darwin/binutils/default.nix index f88f761f65a..933e7558dbb 100644 --- a/pkgs/os-specific/darwin/binutils/default.nix +++ b/pkgs/os-specific/darwin/binutils/default.nix @@ -2,11 +2,12 @@ , hostPlatform, targetPlatform }: -let - prefix = stdenv.lib.optionalString - (targetPlatform != hostPlatform) - "${targetPlatform.config}-"; +# Make sure both underlying packages claim to have prepended their binaries +# with the same prefix. +assert binutils-raw.prefix == cctools.prefix; +let + inherit (binutils-raw) prefix; cmds = [ "ar" "ranlib" "as" "dsymutil" "install_name_tool" "ld" "strip" "otool" "lipo" "nm" "strings" "size" @@ -50,4 +51,8 @@ stdenv.mkDerivation { ln -s ${cctools}/libexec $out/libexec ''; + + passthru = { + inherit prefix; + }; } diff --git a/pkgs/os-specific/darwin/cctools/port.nix b/pkgs/os-specific/darwin/cctools/port.nix index 222c51603fd..9fdb00d66be 100644 --- a/pkgs/os-specific/darwin/cctools/port.nix +++ b/pkgs/os-specific/darwin/cctools/port.nix @@ -1,10 +1,12 @@ { stdenv, fetchFromGitHub, makeWrapper, autoconf, automake, libtool_2 , llvm, libcxx, libcxxabi, clang, libuuid , libobjc ? null, maloader ? null, xctoolchain ? null -, buildPlatform, hostPlatform, targetPlatform +, hostPlatform, targetPlatform }: let + # The prefix prepended to binary names to allow multiple binuntils on the + # PATH to both be usable. prefix = stdenv.lib.optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-"; @@ -38,13 +40,10 @@ let enableParallelBuilding = true; + # TODO(@Ericson2314): Always pass "--target" and always prefix. + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = stdenv.lib.optionals (!stdenv.isDarwin) [ "CXXFLAGS=-I${libcxx}/include/c++/v1" - ] ++ stdenv.lib.optionals (targetPlatform != buildPlatform) [ - # TODO make unconditional next hash break - "--build=${buildPlatform.config}" - "--host=${hostPlatform.config}" - "--target=${targetPlatform.config}" ]; postPatch = '' @@ -104,6 +103,10 @@ let done ''; + passthru = { + inherit prefix; + }; + meta = { homepage = "http://www.opensource.apple.com/source/cctools/"; description = "Mac OS X Compiler Tools (cross-platform port)"; diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix index e1ea8fa8fdd..815e2e0f6ef 100644 --- a/pkgs/os-specific/linux/busybox/default.nix +++ b/pkgs/os-specific/linux/busybox/default.nix @@ -63,7 +63,7 @@ stdenv.mkDerivation rec { CONFIG_DEFAULT_SETFONT_DIR "/etc/kbd" ${extraConfig} - $extraCrossConfig + CONFIG_CROSS_COMPILER_PREFIX "${stdenv.cc.prefix}" EOF make oldconfig @@ -79,10 +79,6 @@ stdenv.mkDerivation rec { buildInputs = lib.optionals (enableStatic && !useMusl) [ stdenv.cc.libc stdenv.cc.libc.static ]; - extraCrossConfig = if hostPlatform == buildPlatform then null else '' - CONFIG_CROSS_COMPILER_PREFIX "${stdenv.cc.prefix}" - ''; - enableParallelBuilding = true; meta = with stdenv.lib; { diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix index ad484b3d4d9..896cdd50973 100644 --- a/pkgs/tools/archivers/unzip/default.nix +++ b/pkgs/tools/archivers/unzip/default.nix @@ -1,7 +1,6 @@ { stdenv, fetchurl , bzip2 , enableNLS ? false, libnatspec -, buildPlatform, hostPlatform }: stdenv.mkDerivation { @@ -23,13 +22,13 @@ stdenv.mkDerivation { ./CVE-2015-7697.diff ./CVE-2014-9913.patch ./CVE-2016-9844.patch + ./dont-hardcode-cc.patch ] ++ stdenv.lib.optional enableNLS (fetchurl { url = "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-arch/unzip/files/unzip-6.0-natspec.patch?revision=1.1"; name = "unzip-6.0-natspec.patch"; sha256 = "67ab260ae6adf8e7c5eda2d1d7846929b43562943ec4aff629bd7018954058b1"; - }) - ++ stdenv.lib.optional (hostPlatform != buildPlatform) ./cross-cc.patch; + }); nativeBuildInputs = [ bzip2 ]; buildInputs = [ bzip2 ] ++ stdenv.lib.optional enableNLS libnatspec; diff --git a/pkgs/tools/archivers/unzip/cross-cc.patch b/pkgs/tools/archivers/unzip/dont-hardcode-cc.patch similarity index 74% rename from pkgs/tools/archivers/unzip/cross-cc.patch rename to pkgs/tools/archivers/unzip/dont-hardcode-cc.patch index 3d38ffdef6e..15dbbfe4c53 100644 --- a/pkgs/tools/archivers/unzip/cross-cc.patch +++ b/pkgs/tools/archivers/unzip/dont-hardcode-cc.patch @@ -1,12 +1,14 @@ --- a/unix/Makefile +++ b/unix/Makefile -@@ -42,9 +42,7 @@ +@@ -42,9 +42,9 @@ # such as -DDOSWILD). # UnZip flags -CC = cc# try using "gcc" target rather than changing this (CC and LD ++CC ?= cc# try using "gcc" target rather than changing this (CC and LD LD = $(CC)# must match, else "unresolved symbol: ___main" is possible) -AS = as ++AS ?= as LOC = $(D_USE_BZ2) $(LOCAL_UNZIP) AF = $(LOC) CFLAGS = -O diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 42f8e74df31..9a988a2b431 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -70,7 +70,7 @@ stdenv.mkDerivation rec { && builtins.storeDir == "/nix/store"; # Prevents attempts of running 'help2man' on cross-built binaries. - ${if hostPlatform == buildPlatform then null else "PERL"} = "missing"; + PERL = if hostPlatform == buildPlatform then null else "missing"; # Saw random failures like ‘help2man: can't get '--help' info from # man/sha512sum.td/sha512sum’. @@ -83,11 +83,11 @@ stdenv.mkDerivation rec { # Works around a bug with 8.26: # Makefile:3440: *** Recursive variable 'INSTALL' references itself (eventually). Stop. - ${if hostPlatform == buildPlatform then null else "preInstall"} = '' + preInstall = optionalString (hostPlatform != buildPlatform) '' sed -i Makefile -e 's|^INSTALL =.*|INSTALL = ${buildPackages.coreutils}/bin/install -c|' ''; - ${if hostPlatform == buildPlatform then null else "postInstall"} = '' + postInstall = optionalString (hostPlatform != buildPlatform) '' rm $out/share/man/man1/* cp ${buildPackages.coreutils}/share/man/man1/* $out/share/man/man1 ''; diff --git a/pkgs/tools/system/ddrescue/default.nix b/pkgs/tools/system/ddrescue/default.nix index 0b94f328b84..5f439ccdb53 100644 --- a/pkgs/tools/system/ddrescue/default.nix +++ b/pkgs/tools/system/ddrescue/default.nix @@ -17,11 +17,6 @@ stdenv.mkDerivation rec { doCheck = hostPlatform == buildPlatform; - ${if hostPlatform != buildPlatform then "crossPlatforms" else null} = [ ]; - ${if hostPlatform != buildPlatform then "configureFlags" else null} = [ - "CXX=${stdenv.cc.prefix}c++" - ]; - meta = with stdenv.lib; { description = "GNU ddrescue, a data recovery tool"; diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index 57543eb303b..13579b57e79 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { buildInputs = stdenv.lib.optional doCheck ed; - configureFlags = if hostPlatform == buildPlatform then null else [ + configureFlags = stdenv.lib.optionals (hostPlatform != buildPlatform) [ "ac_cv_func_strnlen_working=yes" ]; From bb3c8a164c037a5c5697bb411c5b965c7e01d1a7 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Mon, 3 Jul 2017 09:31:25 -0300 Subject: [PATCH 58/59] lib: Include darwin in isUnix --- lib/systems/inspect.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index ec71592d119..8228705272e 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -15,7 +15,7 @@ rec { LittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; BSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; - Unix = [ BSD Linux SunOS Hurd Cygwin ]; + Unix = [ BSD Darwin Linux SunOS Hurd Cygwin ]; Darwin = { kernel = kernels.darwin; }; Linux = { kernel = kernels.linux; }; From c73f0caea5f0822ea044b4f90de4b64706d91362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 3 Jul 2017 20:12:23 +0200 Subject: [PATCH 59/59] mesa: maintenance 17.1.2 -> 17.1.4 The announcement seems safe, as usual. Hydra's Darwin machines will be busy for quite some time on staging, so let me squeeze this, as it will only be mass rebuild on *-linux. --- pkgs/development/libraries/mesa/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index d606fcd1548..e1bd4255636 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -67,7 +67,7 @@ let in let - version = "17.1.2"; + version = "17.1.4"; branch = head (splitString "." version); driverLink = "/run/opengl-driver" + optionalString stdenv.isi686 "-32"; in @@ -82,7 +82,7 @@ stdenv.mkDerivation { "ftp://ftp.freedesktop.org/pub/mesa/older-versions/${branch}.x/${version}/mesa-${version}.tar.xz" "https://launchpad.net/mesa/trunk/${version}/+download/mesa-${version}.tar.xz" ]; - sha256 = "0937804f43746339b1f9540d8f9c8b4a1bb3d3eec0e4020eac283b8799798239"; + sha256 = "06f3b0e6a28f0d20b7f3391cf67fe89ae98ecd0a686cd545da76557b6cec9cad"; }; prePatch = "patchShebangs .";