From 5a66e25ce631802b4a3fcc16fca20ae67e77c34e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 4 Dec 2016 20:51:58 +0100 Subject: gnu: Add seq24. * gnu/packages/music.scm (seq24): New variable. * gnu/packages/patches/seq24-rename-mutex.patch: New file. * gnu/local.mk (dist_patch_DATA): Register patch. --- gnu/local.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 96689a7d60..9f8325d833 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -854,6 +854,7 @@ dist_patch_DATA = \ %D%/packages/patches/scheme48-tests.patch \ %D%/packages/patches/scotch-test-threading.patch \ %D%/packages/patches/sdl-libx11-1.6.patch \ + %D%/packages/patches/seq24-rename-mutex.patch \ %D%/packages/patches/serf-comment-style-fix.patch \ %D%/packages/patches/serf-deflate-buckets-test-fix.patch \ %D%/packages/patches/slim-session.patch \ -- cgit 1.4.1 From 1ebe49f192d6c84bf55ac16188d7966f673f4388 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 6 Dec 2016 15:36:59 +0200 Subject: gnu: httpd: Add fix for CVE-2016-8740. * gnu/packages/web.scm (httpd)[source]: Add patch for CVE-2016-8740. * gnu/packages/patches/httpd-CVE-2016-8740.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/patches/httpd-CVE-2016-8740.patch | 36 ++++++++++++++++++++++++++ gnu/packages/web.scm | 4 ++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/httpd-CVE-2016-8740.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 9f8325d833..bc9b06da63 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -620,6 +620,7 @@ dist_patch_DATA = \ %D%/packages/patches/hdf-eos5-fortrantests.patch \ %D%/packages/patches/higan-remove-march-native-flag.patch \ %D%/packages/patches/hop-linker-flags.patch \ + %D%/packages/patches/httpd-CVE-2016-8740.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/hypre-doc-tables.patch \ %D%/packages/patches/hypre-ldflags.patch \ diff --git a/gnu/packages/patches/httpd-CVE-2016-8740.patch b/gnu/packages/patches/httpd-CVE-2016-8740.patch new file mode 100644 index 0000000000..17ba323ccf --- /dev/null +++ b/gnu/packages/patches/httpd-CVE-2016-8740.patch @@ -0,0 +1,36 @@ +This patch applies against httpd-2.4.23 and shouldn't be needed in later releases +http://openwall.com/lists/oss-security/2016/12/05/17 +Index: modules/http2/h2_stream.c +=================================================================== +--- modules/http2/h2_stream.c (revision 1771866) ++++ modules/http2/h2_stream.c (working copy) +@@ -322,18 +322,18 @@ + HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE); + } + } +- } +- +- if (h2_stream_is_scheduled(stream)) { +- return h2_request_add_trailer(stream->request, stream->pool, +- name, nlen, value, vlen); +- } +- else { +- if (!input_open(stream)) { +- return APR_ECONNRESET; ++ ++ if (h2_stream_is_scheduled(stream)) { ++ return h2_request_add_trailer(stream->request, stream->pool, ++ name, nlen, value, vlen); + } +- return h2_request_add_header(stream->request, stream->pool, +- name, nlen, value, vlen); ++ else { ++ if (!input_open(stream)) { ++ return APR_ECONNRESET; ++ } ++ return h2_request_add_header(stream->request, stream->pool, ++ name, nlen, value, vlen); ++ } + } + } + diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 697bab8e56..81676386a0 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -92,7 +92,9 @@ version ".tar.bz2")) (sha256 (base32 - "0n2yx3gjlpr4kgqx845fj6amnmg25r2l6a7rzab5hxnpmar985hc")))) + "0n2yx3gjlpr4kgqx845fj6amnmg25r2l6a7rzab5hxnpmar985hc")) + (patches (search-patches "httpd-CVE-2016-8740.patch")) + (patch-flags '("-p0")))) (build-system gnu-build-system) (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config' (inputs `(("apr" ,apr) -- cgit 1.4.1 From cf0ef075c43437f183bc4cb390481e9c9b5a3399 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Thu, 14 Apr 2016 07:35:40 +0200 Subject: gnu: Add mingw-w64. * gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch, gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch, gnu/packages/mingw.scm: New files. * gnu/local.mk (dist_patch_DATA): Add the patches. (GNU_SYSTEM_MODULES): Add mingw.scm. --- gnu/local.mk | 3 + gnu/packages/mingw.scm | 84 ++++++++ .../patches/gcc-4.9.3-mingw-gthr-default.patch | 11 ++ .../patches/mingw-w64-5.0rc2-gcc-4.9.3.patch | 218 +++++++++++++++++++++ 4 files changed, 316 insertions(+) create mode 100644 gnu/packages/mingw.scm create mode 100644 gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch create mode 100644 gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index bc9b06da63..3197cfb7bb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -248,6 +248,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/mc.scm \ %D%/packages/mcrypt.scm \ %D%/packages/messaging.scm \ + %D%/packages/mingw.scm \ %D%/packages/mg.scm \ %D%/packages/microcom.scm \ %D%/packages/mit-krb5.scm \ @@ -554,6 +555,7 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-cross-environment-variables.patch \ %D%/packages/patches/gcc-libvtv-runpath.patch \ %D%/packages/patches/gcc-strmov-store-file-names.patch \ + %D%/packages/patches/gcc-4.9.3-mingw-gthr-default.patch \ %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \ %D%/packages/patches/gcc-6-arm-none-eabi-multilib.patch \ %D%/packages/patches/gcc-6-cross-environment-variables.patch \ @@ -725,6 +727,7 @@ dist_patch_DATA = \ %D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \ %D%/packages/patches/metabat-remove-compilation-date.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ + %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \ %D%/packages/patches/mpc123-initialize-ao.patch \ %D%/packages/patches/mplayer2-theora-fix.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \ diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm new file mode 100644 index 0000000000..6a348da611 --- /dev/null +++ b/gnu/packages/mingw.scm @@ -0,0 +1,84 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Jan Nieuwenhuizen +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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 (at +;;; your option) any later version. +;;; +;;; GNU Guix 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. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages mingw) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages base) + #:use-module (gnu packages cross-base) + #:use-module (gnu packages gcc) + #:use-module (gnu packages compression) + #:use-module (gnu packages multiprecision) + #:use-module (guix build-system gnu) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (ice-9 match)) + +(define %mingw-triplet + "i686-w64-mingw32") + +(define-public mingw-w64 + (package + (name "mingw-w64") + (version "5.0-rc2") + (source (origin + (method url-fetch) + (uri (string-append + "https://sourceforge.net/projects/mingw-w64/files/mingw-w64/" + "mingw-w64-release/mingw-w64-v" version ".tar.bz2")) + (sha256 + (base32 "0imdary8j07if8ih73pfgxiclpf2ax8h3mz8mxln07i8sbbd30c9")) + (patches (search-patches "mingw-w64-5.0rc2-gcc-4.9.3.patch")))) + (native-inputs `(("xgcc-core" ,(cross-gcc %mingw-triplet)) + ("xbinutils" ,(cross-binutils %mingw-triplet)))) + (build-system gnu-build-system) + (search-paths + (list (search-path-specification + (variable "CROSS_C_INCLUDE_PATH") + (files '("include" "i686-w64-mingw32/include"))) + (search-path-specification + (variable "CROSS_LIBRARY_PATH") + (files + '("lib" "lib64" "i686-w64-mingw32/lib" "i686-w64-mingw32/lib64"))))) + (arguments + `(#:configure-flags '("--host=i686-w64-mingw32") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda* (#:key inputs #:allow-other-keys) + (let ((xgcc-core (assoc-ref inputs "xgcc-core")) + (mingw-headers (string-append (getcwd) "/mingw-w64-headers"))) + (setenv "CPP" + (string-append xgcc-core "/bin/i686-w64-mingw32-cpp")) + (setenv "CROSS_C_INCLUDE_PATH" + (string-append + mingw-headers + ":" mingw-headers "/include" + ":" mingw-headers "/crt" + ":" mingw-headers "/defaults/include" + ":" mingw-headers "/direct-x/include")))))) + #:make-flags (list "DEFS=-DHAVE_CONFIG_H -D__MINGW_HAS_DXSDK=1") + #:tests? #f ; compiles and includes glibc headers + #:strip-binaries? #f)) + (home-page "http://mingw.org") + (synopsis "Minimalist GNU for Windows") + (description "MinGW provides a complete Open Source programming tool set +which is suitable for the development of native MS-Windows applications, and +which does not depend on any 3rd-party C-Runtime dlls.") + (license license:fdl1.3+))) diff --git a/gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch b/gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch new file mode 100644 index 0000000000..0ea008a7cb --- /dev/null +++ b/gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch @@ -0,0 +1,11 @@ +--- a/libgcc/config/i386/gthr-win32.h 2016-03-30 07:45:33.388684463 +0200 ++++ b/libgcc/config/i386/gthr-win32.h 2016-03-30 15:51:24.123896436 +0200 +@@ -30,7 +30,7 @@ + + /* Make sure CONST_CAST2 (origin in system.h) is declared. */ + #ifndef CONST_CAST2 +-#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq) ++#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)X) + #endif + + /* Windows32 threads specific definitions. The windows32 threading model diff --git a/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch b/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch new file mode 100644 index 0000000000..e8f841c4fd --- /dev/null +++ b/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch @@ -0,0 +1,218 @@ +This patch includes + + * mingw-w64-headers/include/winnt.h: compile fixes for1 gcc-4.9.3 + * mingw-w64-headers/crt/math.h: Likewise + * mingw-w64-headers/crt/float.h (FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON): Add + symbols. + * mingw-w64-headers/crt/stat.h (S_ISLNK,S_ISSOCK,S_ISUID,S_ISGID,S_ISLINK): + Add symbols. + (lstat): Add function. + * mingw-w64-headers/crt/_mingw_stat64.h: Likewise + * mingw-w64-headers/crt/stdlib.h (realpath): Add function. + +Needed for building with gcc-4.9.3 and using with cross-libtool-2.4.6. + +Upstream status: not yet presented upstream. + +index 9c5cf87..74a8541 100644 +--- a/mingw-w64-crt/misc/dirname.c ++++ b/mingw-w64-crt/misc/dirname.c +@@ -29,6 +29,12 @@ + #define __cdecl /* this may not be defined. */ + #endif + ++char *__cdecl ++realpath(const char *name, char *resolved) ++{ ++ return resolved ? strcpy (resolved, name) : strdup (name); ++} ++ + char * __cdecl + dirname(char *path) + { +diff --git a/mingw-w64-headers/crt/_mingw_stat64.h b/mingw-w64-headers/crt/_mingw_stat64.h +index 17e754c..7d2339b 100644 +--- a/mingw-w64-headers/crt/_mingw_stat64.h ++++ b/mingw-w64-headers/crt/_mingw_stat64.h +@@ -2,13 +2,17 @@ + + #ifdef _USE_32BIT_TIME_T + #define _fstat32 _fstat ++#define _lstat32 _lstat + #define _stat32 _stat + #define _wstat32 _wstat + #define _fstat32i64 _fstati64 ++#define _lstat32i64 _lstati64 + #define _stat32i64 _stati64 + #define _wstat32i64 _wstati64 + #else + #define _fstat _fstat64i32 ++#define _lstat _lstat64i32 ++#define _lstati64 _lstat64 + #define _fstati64 _fstat64 + #define _stat _stat64i32 + #define _stati64 _stat64 +diff --git a/mingw-w64-headers/crt/float.h b/mingw-w64-headers/crt/float.h +index 5874f4e..bdf4ead 100644 +--- a/mingw-w64-headers/crt/float.h ++++ b/mingw-w64-headers/crt/float.h +@@ -22,6 +22,15 @@ + #if (__GNUC__ < 4) + #error Corrupt install of gcc-s internal headers, or search order was changed. + #else ++ ++ /* From gcc-4.9.3 float.h. */ ++ #undef FLT_EPSILON ++ #undef DBL_EPSILON ++ #undef LDBL_EPSILON ++ #define FLT_EPSILON __FLT_EPSILON__ ++ #define DBL_EPSILON __DBL_EPSILON__ ++ #define LDBL_EPSILON __LDBL_EPSILON__ ++ + /* #include_next */ + + /* Number of decimal digits, q, such that any floating-point number with q +diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h +index 1e970f4..99a332f 100644 +--- a/mingw-w64-headers/crt/math.h ++++ b/mingw-w64-headers/crt/math.h +@@ -216,6 +216,7 @@ extern "C" { + #endif + } + ++#if 0 + __CRT_INLINE long double __cdecl fabsl (long double x) + { + #ifdef __arm__ +@@ -226,6 +227,7 @@ extern "C" { + return res; + #endif + } ++#endif + + __CRT_INLINE double __cdecl fabs (double x) + { +@@ -905,7 +907,7 @@ __mingw_choose_expr ( \ + /* 7.12.7.3 */ + extern double __cdecl hypot (double, double) __MINGW_ATTRIB_DEPRECATED_MSVC2005; /* in libmoldname.a */ + extern float __cdecl hypotf (float x, float y); +-#ifndef __CRT__NO_INLINE ++#if 0 //ndef __CRT__NO_INLINE + __CRT_INLINE float __cdecl hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);} + #endif + extern long double __cdecl hypotl (long double, long double); +diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h +index dfc5ae4..6f0fee3 100644 +--- a/mingw-w64-headers/crt/stdlib.h ++++ b/mingw-w64-headers/crt/stdlib.h +@@ -8,6 +8,7 @@ + + #include + #include ++#include + + #if defined (__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) && !defined (__USE_MINGW_STRTOX) + #define __USE_MINGW_STRTOX 1 +@@ -676,6 +677,8 @@ unsigned long __cdecl _lrotr(unsigned long,int); + + #endif /* !__NO_ISOCEXT */ + ++char *__cdecl realpath (const char *name, char *resolved); ++ + #ifdef __cplusplus + } + #endif +diff --git a/mingw-w64-headers/crt/sys/stat.h b/mingw-w64-headers/crt/sys/stat.h +index ed60219..d88b4f1 100644 +--- a/mingw-w64-headers/crt/sys/stat.h ++++ b/mingw-w64-headers/crt/sys/stat.h +@@ -58,16 +58,21 @@ extern "C" { + #include <_mingw_stat64.h> + + #define _S_IFMT 0xF000 ++#define _S_IFLNK 0xA000 ++#define _S_IFSOCK 0xC000 + #define _S_IFDIR 0x4000 + #define _S_IFCHR 0x2000 + #define _S_IFIFO 0x1000 + #define _S_IFREG 0x8000 ++#define _S_ISUID 0x0400 ++#define _S_ISGID 0x0200 + #define _S_IREAD 0x0100 + #define _S_IWRITE 0x0080 + #define _S_IEXEC 0x0040 + + _CRTIMP int __cdecl _fstat32(int _FileDes,struct _stat32 *_Stat); + _CRTIMP int __cdecl _stat32(const char *_Name,struct _stat32 *_Stat); ++ static inline int __cdecl _lstat32(const char *_Name,struct _stat32 *_Stat) {return _stat32(_Name, _Stat);} + _CRTIMP int __cdecl _fstat64(int _FileDes,struct _stat64 *_Stat); + _CRTIMP int __cdecl _fstat32i64(int _FileDes,struct _stat32i64 *_Stat); + int __cdecl _fstat64i32(int _FileDes,struct _stat64i32 *_Stat); +@@ -97,6 +102,9 @@ extern "C" { + _CRTIMP int __cdecl _stat64(const char *_Name,struct _stat64 *_Stat); + _CRTIMP int __cdecl _stat32i64(const char *_Name,struct _stat32i64 *_Stat); + int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat); ++ static inline int __cdecl _lstat64(const char *_Name,struct _stat64 *_Stat) {return _stat64(_Name, _Stat);} ++ static inline int __cdecl _lstat32i64(const char *_Name,struct _stat32i64 *_Stat) {return _stat32i64(_Name, _Stat);} ++ static inline int __cdecl _lstat64i32(const char *_Name,struct _stat64i32 *_Stat) {return _stat64i32(_Name, _Stat);} + #ifndef __CRT__NO_INLINE + __CRT_INLINE int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat) + { +@@ -132,6 +140,8 @@ extern "C" { + #ifndef NO_OLDNAMES + #define _S_IFBLK 0x3000 /* Block: Is this ever set under w32? */ + ++#define S_IFLNK _S_IFLNK ++#define S_IFSOCK _S_IFSOCK + #define S_IFMT _S_IFMT + #define S_IFDIR _S_IFDIR + #define S_IFCHR _S_IFCHR +@@ -162,6 +172,11 @@ extern "C" { + #define S_IXOTH (S_IXGRP >> 3) + #define S_IRWXO (S_IRWXG >> 3) + ++#define S_ISUID _S_ISUID ++#define S_ISGID _S_ISGID ++ ++#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) ++#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) + #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) + #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) + #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) +@@ -174,6 +189,7 @@ extern "C" { + int __cdecl stat(const char *_Filename,struct stat *_Stat); + int __cdecl fstat(int _Desc,struct stat *_Stat); + int __cdecl wstat(const wchar_t *_Filename,struct stat *_Stat); ++static inline int __cdecl lstat(const char *_Filename,struct stat *_Stat){return stat(_Filename, _Stat);} + + #ifndef __CRT__NO_INLINE + #ifdef _USE_32BIT_TIME_T +@@ -262,9 +278,11 @@ __CRT_INLINE int __cdecl + + #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) + #ifdef _USE_32BIT_TIME_T ++#define lstat _lstat32i64 + #define stat _stat32i64 + #define fstat _fstat32i64 + #else ++#define lstat _lstat64 + #define stat _stat64 + #define fstat _fstat64 + #endif +diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h +index 52af29b..8626396 100644 +--- a/mingw-w64-headers/include/winnt.h ++++ b/mingw-w64-headers/include/winnt.h +@@ -6895,7 +6895,12 @@ __buildmemorybarrier() + DWORD Reg : 3; + DWORD R : 1; + DWORD L : 1; ++/* C is used as a const specifier */ ++#define save_C C ++#undef C + DWORD C : 1; ++#define C save_C ++#undef save_C + DWORD StackAdjust : 10; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; -- cgit 1.4.1 From ae12d586275cdd96db23fb01bf840b2055b5b979 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 12 Apr 2016 15:49:17 +0200 Subject: gnu: readline: support mingw. * gnu/packages/patches/readline-7.0-mingw.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/readline.scm (readline): Support MinGW. --- gnu/local.mk | 1 + gnu/packages/patches/readline-7.0-mingw.patch | 28 +++++++++++++++++++++++++++ gnu/packages/readline.scm | 14 +++++++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/readline-7.0-mingw.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 3197cfb7bb..1f98513ca3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -845,6 +845,7 @@ dist_patch_DATA = \ %D%/packages/patches/ratpoison-shell.patch \ %D%/packages/patches/readline-link-ncurses.patch \ %D%/packages/patches/readline-6.2-CVE-2014-2524.patch \ + %D%/packages/patches/readline-7.0-mingw.patch \ %D%/packages/patches/ripperx-missing-file.patch \ %D%/packages/patches/rpm-CVE-2014-8118.patch \ %D%/packages/patches/rsem-makefile.patch \ diff --git a/gnu/packages/patches/readline-7.0-mingw.patch b/gnu/packages/patches/readline-7.0-mingw.patch new file mode 100644 index 0000000000..1dc491d556 --- /dev/null +++ b/gnu/packages/patches/readline-7.0-mingw.patch @@ -0,0 +1,28 @@ +Configure checks for chown; add missing shields in code. + +Upstream status: not yet presented upstream. + +--- readline-7.0/histfile.c.orig 2016-12-06 20:04:10.058901731 +0100 ++++ readline-7.0/histfile.c 2016-12-06 20:05:09.220083801 +0100 +@@ -610,8 +610,10 @@ + user is running this, it's a no-op. If the shell is running after sudo + with a shared history file, we don't want to leave the history file + owned by root. */ ++#if HAVE_CHOWN + if (rv == 0 && exists) + r = chown (filename, finfo.st_uid, finfo.st_gid); ++#endif + + xfree (filename); + FREE (tempname); +@@ -757,8 +759,10 @@ + user is running this, it's a no-op. If the shell is running after sudo + with a shared history file, we don't want to leave the history file + owned by root. */ ++#if HAVE_CHOWN + if (rv == 0 && exists) + mode = chown (histname, finfo.st_uid, finfo.st_gid); ++#endif + + FREE (histname); + FREE (tempname); diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm index 43817791b5..16a31afd73 100644 --- a/gnu/packages/readline.scm +++ b/gnu/packages/readline.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès ;;; Copyright © 2016 Efraim Flashner +;;; Copyright © 2016 Jan Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,7 +25,8 @@ #:use-module (gnu packages perl) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (guix utils)) (define-public readline (let ((post-install-phase @@ -61,8 +63,18 @@ ;; cross-compiling, so provide the correct answer. ,@(if (%current-target-system) '("bash_cv_wcwidth_broken=no") + '()) + ;; MinGW: ncurses provides the termcap api. + ,@(if (target-mingw?) + '("bash_cv_termcap_lib=ncurses") '())) + ,@(if (target-mingw?) + ;; MinGW: termcap in ncurses + ;; some SIG_* #defined in _POSIX + '(#:make-flags '("TERMCAP_LIB=-lncurses" + "CPPFLAGS=-D_POSIX -D'chown(f,o,g)=0'")) + '()) #:phases (alist-cons-after 'install 'post-install ,post-install-phase -- cgit 1.4.1 From 3593e5d5c50b08cf69739aac98cd7c89247fa6da Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 7 Dec 2016 21:49:25 +0100 Subject: gnu: cross-base: Move phases to (gnu build cross-toolchain). * gnu/packages/cross-base.scm (cross-gcc-arguments) <#:phases>: Use 'cross-gcc-build-phases', and move body cross-toolchain.scm. (cross-gcc): Add #:imported-modules. Add (gnu build cross-toolchain) to #:modules. * gnu/build/cross-toolchain.scm: New file, with code from 'cross-gcc-arguments'. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. --- gnu/build/cross-toolchain.scm | 178 ++++++++++++++++++++++++++++++++++++++++++ gnu/local.mk | 1 + gnu/packages/cross-base.scm | 140 ++------------------------------- 3 files changed, 185 insertions(+), 134 deletions(-) create mode 100644 gnu/build/cross-toolchain.scm (limited to 'gnu/local.mk') diff --git a/gnu/build/cross-toolchain.scm b/gnu/build/cross-toolchain.scm new file mode 100644 index 0000000000..450443ca63 --- /dev/null +++ b/gnu/build/cross-toolchain.scm @@ -0,0 +1,178 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès +;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2016 Jan Nieuwenhuizen +;;; Copyright © 2016 Manolis Fragkiskos Ragkousis +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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 (at +;;; your option) any later version. +;;; +;;; GNU Guix 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. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu build cross-toolchain) + #:use-module (guix build utils) + #:use-module (guix build gnu-build-system) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match) + #:use-module (ice-9 ftw) + #:export (cross-gcc-build-phases)) + +;;; Commentary: +;;; +;;; This module provides tools to build a cross-compiler. +;;; +;;; Code: + +(define %gcc-include-paths + ;; Environment variables for header search paths. + ;; Note: See for why not 'CPATH'. + '("C_INCLUDE_PATH" + "CPLUS_INCLUDE_PATH" + "OBJC_INCLUDE_PATH" + "OBJCPLUS_INCLUDE_PATH")) + +(define %gcc-cross-include-paths + ;; Search path for target headers when cross-compiling. + (map (cut string-append "CROSS_" <>) %gcc-include-paths)) + +(define* (make-cross-binutils-visible #:key outputs inputs target + #:allow-other-keys) + "Create symlinks for 'as', 'nm', and 'ld' in the \"out\" output, under +libexec/gcc, so that the cross-GCC can find them." + (let* ((out (assoc-ref outputs "out")) + (libexec (string-append out "/libexec/gcc/" target)) + (binutils (string-append (assoc-ref inputs "binutils-cross") + "/bin/" target "-")) + (wrapper (string-append (assoc-ref inputs "ld-wrapper-cross") + "/bin/" target "-ld"))) + (for-each (lambda (file) + (symlink (string-append binutils file) + (string-append libexec "/" file))) + '("as" "nm")) + (symlink wrapper (string-append libexec "/ld")) + #t)) + +(define* (set-cross-path #:key inputs #:allow-other-keys) + "Add the cross kernel headers to CROSS_CPATH, and remove them from +C_INCLUDE_PATH et al." + (match (assoc-ref inputs "libc") + ((? string? libc) + (let ((kernel (assoc-ref inputs "xkernel-headers"))) + (define (cross? x) + ;; Return #t if X is a cross-libc or cross Linux. + (or (string-prefix? libc x) + (string-prefix? kernel x))) + + (let ((cpath (string-append libc "/include" + ":" kernel "/include"))) + (for-each (cut setenv <> cpath) + %gcc-cross-include-paths)) + + (setenv "CROSS_LIBRARY_PATH" + (string-append libc "/lib:" kernel "/lib")) ;for Hurd's libihash + + (for-each (lambda (var) + (and=> (getenv var) + (lambda (value) + (let* ((path (search-path-as-string->list value)) + (native-path (list->search-path-as-string + (remove cross? path) ":"))) + (setenv var native-path))))) + (cons "LIBRARY_PATH" %gcc-include-paths)) + #t)) + (#f + ;; We're building the sans-libc cross-compiler, so nothing to do. + #t))) + +(define* (set-cross-path/mingw #:key inputs #:allow-other-keys) + "Add the cross MinGW headers to CROSS_C_*_INCLUDE_PATH, and remove them from +C_*INCLUDE_PATH." + (let ((libc (assoc-ref inputs "libc")) + (gcc (assoc-ref inputs "gcc"))) + (define (cross? x) + (and libc (string-prefix? libc x))) + + (define (unpacked-mingw-dir) + (match (scandir "." (lambda (name) + (string-contains name "mingw-w64"))) + ((mingw-dir) + (string-append + (getcwd) "/" mingw-dir "/mingw-w64-headers")))) + + (if libc + (let ((cpath (string-append libc "/include" + ":" libc "/i686-w64-mingw32/include"))) + (for-each (cut setenv <> cpath) + %gcc-cross-include-paths)) + + ;; libc is false, so we are building xgcc-sans-libc. + ;; Add essential headers from mingw-w64. + (let ((mingw-source (assoc-ref inputs "mingw-source"))) + (system* "tar" "xvf" mingw-source) + (let ((mingw-headers (unpacked-mingw-dir))) + ;; We need _mingw.h which will gets built from _mingw.h.in by + ;; mingw-w64's configure. We cannot configure mingw-w64 until we + ;; have xgcc-sans-libc; substitute to the rescue. + (copy-file (string-append mingw-headers "/crt/_mingw.h.in") + (string-append mingw-headers "/crt/_mingw.h")) + + (substitute* (string-append mingw-headers "/crt/_mingw.h") + (("@MINGW_HAS_SECURE_API@") + "#define MINGW_HAS_SECURE_API 1")) + + (let ((cpath (string-append mingw-headers "/include" + ":" mingw-headers "/crt" + ":" mingw-headers + "/defaults/include"))) + (for-each (cut setenv <> cpath) + (cons "CROSS_LIBRARY_PATH" + %gcc-cross-include-paths)))))) + + (when libc + (setenv "CROSS_LIBRARY_PATH" + (string-append libc "/lib" + ":" libc "/i686-w64-mingw32/lib"))) + + (setenv "CPP" (string-append gcc "/bin/cpp")) + (for-each (lambda (var) + (and=> (getenv var) + (lambda (value) + (let* ((path (search-path-as-string->list + value)) + (native-path (list->search-path-as-string + (remove cross? path) ":"))) + (setenv var native-path))))) + (cons "LIBRARY_PATH" %gcc-include-paths)) + #t)) + +(define (install-strip . _) + "Install a stripped GCC." + ;; Unlike our 'strip' phase, this will do the right thing for + ;; cross-compilers. + (zero? (system* "make" "install-strip"))) + +(define* (cross-gcc-build-phases target + #:optional (phases %standard-phases)) + "Modify PHASES to include everything needed to build a cross-GCC for TARGET, +a target triplet." + (modify-phases phases + (add-before 'configure 'set-cross-path + (if (string-contains target "mingw") + set-cross-path/mingw + set-cross-path)) + (add-after 'install 'make-cross-binutils-visible + (cut make-cross-binutils-visible #:target target <...>)) + (replace 'install install-strip))) + +;;; cross-toolchain.scm ends here diff --git a/gnu/local.mk b/gnu/local.mk index 1f98513ca3..eec0e018b5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -436,6 +436,7 @@ GNU_SYSTEM_MODULES = \ %D%/system/vm.scm \ \ %D%/build/activation.scm \ + %D%/build/cross-toolchain.scm \ %D%/build/file-systems.scm \ %D%/build/install.scm \ %D%/build/linux-boot.scm \ diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 7917e9fd0a..763bbf50e2 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -164,136 +164,7 @@ may be either a libc package or #f.)" ,flags)) flags)) ((#:phases phases) - (let ((phases - `(alist-cons-after - 'install 'make-cross-binutils-visible - (lambda* (#:key outputs inputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (libexec (string-append out "/libexec/gcc/" - ,target)) - (binutils (string-append - (assoc-ref inputs "binutils-cross") - "/bin/" ,target "-")) - (wrapper (string-append - (assoc-ref inputs "ld-wrapper-cross") - "/bin/" ,target "-ld"))) - (for-each (lambda (file) - (symlink (string-append binutils file) - (string-append libexec "/" - file))) - '("as" "nm")) - (symlink wrapper (string-append libexec "/ld")) - #t)) - (alist-replace - 'install - (lambda _ - ;; Unlike our 'strip' phase, this will do the right thing - ;; for cross-compilers. - (zero? (system* "make" "install-strip"))) - ,phases)))) - (cond - ((target-mingw? target) - `(modify-phases ,phases - (add-before - 'configure 'set-cross-path - (lambda* (#:key inputs #:allow-other-keys) - ;; Add the cross mingw headers to CROSS_C_*_INCLUDE_PATH, - ;; and remove them from C_*INCLUDE_PATH. - (let ((libc (assoc-ref inputs "libc")) - (gcc (assoc-ref inputs "gcc"))) - (define (cross? x) - (and libc (string-prefix? libc x))) - (define (unpacked-mingw-dir) - (match - (scandir - "." - (lambda (name) (string-contains name "mingw-w64"))) - ((mingw-dir) - (string-append - (getcwd) "/" mingw-dir "/mingw-w64-headers")))) - (if libc - (let ((cpath (string-append - libc "/include" - ":" libc "/i686-w64-mingw32/include"))) - (for-each (cut setenv <> cpath) - ',%gcc-cross-include-paths)) - ;; libc is false, so we are building xgcc-sans-libc - ;; Add essential headers from mingw-w64. - (let ((mingw-source (assoc-ref inputs "mingw-source"))) - (system* "tar" "xf" mingw-source) - (let ((mingw-headers (unpacked-mingw-dir))) - ;; We need _mingw.h which will gets built from - ;; _mingw.h.in by mingw-w64's configure. We - ;; cannot configure mingw-w64 until we have - ;; xgcc-sans-libc; substitute to the rescue. - (copy-file (string-append mingw-headers - "/crt/_mingw.h.in") - (string-append mingw-headers - "/crt/_mingw.h")) - (substitute* (string-append mingw-headers - "/crt/_mingw.h") - (("@MINGW_HAS_SECURE_API@") - "#define MINGW_HAS_SECURE_API 1")) - (let ((cpath - (string-append - mingw-headers "/include" - ":" mingw-headers "/crt" - ":" mingw-headers "/defaults/include"))) - (for-each (cut setenv <> cpath) - (cons - "CROSS_LIBRARY_PATH" - ',%gcc-cross-include-paths)))) - (when libc - (setenv "CROSS_LIBRARY_PATH" - (string-append - libc "/lib" - ":" libc "/i686-w64-mingw32/lib"))))) - (setenv "CPP" (string-append gcc "/bin/cpp")) - (for-each - (lambda (var) - (and=> - (getenv var) - (lambda (value) - (let* ((path (search-path-as-string->list - value)) - (native-path (list->search-path-as-string - (remove cross? path) ":"))) - (setenv var native-path))))) - (cons "LIBRARY_PATH" ',%gcc-include-paths)) - #t))))) - (libc - `(alist-cons-before - 'configure 'set-cross-path - (lambda* (#:key inputs #:allow-other-keys) - ;; Add the cross kernel headers to CROSS_CPATH, and remove - ;; them from CPATH. - (let ((libc (assoc-ref inputs "libc")) - (kernel (assoc-ref inputs "xkernel-headers"))) - (define (cross? x) - ;; Return #t if X is a cross-libc or cross Linux. - (or (string-prefix? libc x) - (string-prefix? kernel x))) - (let ((cpath (string-append - libc "/include" - ":" kernel "/include"))) - (for-each (cut setenv <> cpath) - ',%gcc-cross-include-paths)) - (setenv "CROSS_LIBRARY_PATH" - (string-append libc "/lib:" - kernel "/lib")) ;for Hurd's libihash - (for-each - (lambda (var) - (and=> - (getenv var) - (lambda (value) - (let* ((path (search-path-as-string->list value)) - (native-path (list->search-path-as-string - (remove cross? path) ":"))) - (setenv var native-path))))) - (cons "LIBRARY_PATH" ',%gcc-include-paths)) - #t)) - ,phases)) - (else phases)))))))) + `(cross-gcc-build-phases ,target ,phases)))))) (define (cross-gcc-patches target) "Return GCC patches needed for TARGET." @@ -336,13 +207,14 @@ GCC that does not target a libc; otherwise, target that libc." (arguments `(#:implicit-inputs? #f + #:imported-modules ((gnu build cross-toolchain) + ,@%gnu-build-system-modules) #:modules ((guix build gnu-build-system) (guix build utils) - (ice-9 ftw) - (ice-9 match) - (ice-9 regex) + (gnu build cross-toolchain) (srfi srfi-1) - (srfi srfi-26)) + (srfi srfi-26) + (ice-9 regex)) ,@(cross-gcc-arguments target libc))) -- cgit 1.4.1 From a2c1dceadd2bf86ab17c70cd674bc98aec32a842 Mon Sep 17 00:00:00 2001 From: José Miguel Sánchez García Date: Wed, 7 Dec 2016 17:53:22 +0100 Subject: gnu: Add vis. * gnu/packages/text-editors.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. Co-authored-by: Marius Bakke --- gnu/local.mk | 1 + gnu/packages/text-editors.scm | 77 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 gnu/packages/text-editors.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index eec0e018b5..30a5c209fc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -359,6 +359,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/texinfo.scm \ %D%/packages/tex.scm \ %D%/packages/textutils.scm \ + %D%/packages/text-editors.scm \ %D%/packages/time.scm \ %D%/packages/tls.scm \ %D%/packages/tmux.scm \ diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm new file mode 100644 index 0000000000..4e2324dbea --- /dev/null +++ b/gnu/packages/text-editors.scm @@ -0,0 +1,77 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 José Miguel Sánchez García +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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 (at +;;; your option) any later version. +;;; +;;; GNU Guix 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. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages text-editors) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages lua) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages terminals)) + +(define-public vis + (package + (name "vis") + (version "0.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/martanne/" + name "/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0bbmkblpndc53pvr8xcfywdn8g351yxfj8c46zp5d744c3bq2nry")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags '("CFLAGS=-pie") + #:tests? #f ; No tests. + #:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-binary + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lpeg (assoc-ref inputs "lua-lpeg")) + (lua-version ,(version-major+minor (package-version lua))) + (LUA_PATH (string-append lpeg "/share/lua/" + lua-version "/?.lua")) + (LUA_CPATH (string-append lpeg "/lib/lua/" + lua-version "/?.so"))) + (wrap-program (string-append out "/bin/vis") + `("LUA_PATH" ":" prefix (,LUA_PATH)) + `("LUA_CPATH" ":" prefix (,LUA_CPATH))) + #t)))))) + (native-search-paths + (list (search-path-specification + (variable "VIS_PATH") + (files '("share/vis"))))) + (inputs `(("lua", lua) + ("ncurses", ncurses) + ("libtermkey", libtermkey) + ("lua-lpeg", lua-lpeg))) + (synopsis "Vim-like text editor") + (description + "Vis aims to be a modern, legacy free, simple yet efficient vim-like text +editor. It extends vim's modal editing with built-in support for multiple +cursors/selections and combines it with sam's structural regular expression +based command language.") + (home-page "https://github.com/martanne/vis") + (license (list license:isc ; Main distribution. + license:public-domain ; map.[ch] + license:expat)))) ; lexers and libutf.[ch] -- cgit 1.4.1 From 57513498def74f8d95ef10df654d28e5a638a612 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 7 Dec 2016 18:51:27 -0500 Subject: gnu: tcsh: Fix out of bounds read. * gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/shells.scm (tcsh)[replacement]: New field. (tcsh/fixed): New variable. --- gnu/local.mk | 1 + .../patches/tcsh-fix-out-of-bounds-read.patch | 31 ++++++++++++++++++++++ gnu/packages/shells.scm | 10 +++++++ 3 files changed, 42 insertions(+) create mode 100644 gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 30a5c209fc..55dee48305 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -885,6 +885,7 @@ dist_patch_DATA = \ %D%/packages/patches/tclxml-3.2-install.patch \ %D%/packages/patches/tcsh-do-not-define-BSDWAIT.patch \ %D%/packages/patches/tcsh-fix-autotest.patch \ + %D%/packages/patches/tcsh-fix-out-of-bounds-read.patch \ %D%/packages/patches/teensy-loader-cli-help.patch \ %D%/packages/patches/texi2html-document-encoding.patch \ %D%/packages/patches/texi2html-i18n.patch \ diff --git a/gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch b/gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch new file mode 100644 index 0000000000..48c294f78e --- /dev/null +++ b/gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch @@ -0,0 +1,31 @@ +Fix out-of-bounds read in c_substitute(): + +http://seclists.org/oss-sec/2016/q4/612 + +Patch copied from upstream source repository: + +https://github.com/tcsh-org/tcsh/commit/6a542dc4fb2ba26518a47e9b3a9bcd6a91b94596 + +From 6a542dc4fb2ba26518a47e9b3a9bcd6a91b94596 Mon Sep 17 00:00:00 2001 +From: christos +Date: Fri, 2 Dec 2016 16:59:28 +0000 +Subject: [PATCH] Fix out of bounds read (Brooks Davis) (reproduce by starting + tcsh and hitting tab at the prompt) + +--- + ed.chared.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ed.chared.c b/ed.chared.c +index 1277e53..310393e 100644 +--- ed.chared.c ++++ ed.chared.c +@@ -750,7 +750,7 @@ c_substitute(void) + /* + * If we found a history character, go expand it. + */ +- if (HIST != '\0' && *p == HIST) ++ if (p >= InputBuf && HIST != '\0' && *p == HIST) + nr_exp = c_excl(p); + else + nr_exp = 0; diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index f3350ef501..1931609753 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -174,6 +174,7 @@ has a small feature set similar to a traditional Bourne shell.") (define-public tcsh (package (name "tcsh") + (replacement tcsh/fixed) (version "6.18.01") (source (origin (method url-fetch) @@ -231,6 +232,15 @@ command-line editor, programmable word completion, spelling correction, a history mechanism, job control and a C-like syntax.") (license bsd-4))) +(define tcsh/fixed + (package + (inherit tcsh) + (name "tcsh") + (source (origin + (inherit (package-source tcsh)) + (patches (cons (search-patch "tcsh-fix-out-of-bounds-read.patch") + (origin-patches (package-source tcsh)))))))) + (define-public zsh (package (name "zsh") -- cgit 1.4.1