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 34272b45b8b..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.
@@ -164,7 +163,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}";
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
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
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
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
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 =
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'
- '';
-}
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:
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
-
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 ];
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
'';
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;
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
+
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"}
'';
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";
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;
};
}
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 ];
};
}
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;
+ {
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="$(,,'
- '' else null;
-
# In stdenv-linux, prevent a dependency on bootstrap-tools.
makeFlags = "SHELL=/bin/sh GREP=grep";
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 {