Merge remote-tracking branch 'origin/master' into stdenv-updates.

Conflicts:
	pkgs/development/libraries/gettext/default.nix
This commit is contained in:
Peter Simons 2013-09-23 10:59:44 +02:00
commit 9407832de4
192 changed files with 6739 additions and 2520 deletions

View File

@ -4,12 +4,12 @@
}:
stdenv.mkDerivation rec {
version = "2.0.3";
version = "2.0.4";
name = "audacity-${version}";
src = fetchurl {
url = "http://audacity.googlecode.com/files/audacity-minsrc-${version}.tar.xz";
sha256 = "1k4bbxhpfl80vm3gm3jxqly0syqjij5kwziy4xyq2c8aj2miwj1f";
sha256 = "0pl92filykzs4g2pn7i02kdqgja326wjgafzw2vcgwn3dwrs4avp";
};
preConfigure = /* we prefer system-wide libs */ ''

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, ncurses, x11, libXaw, libXpm, Xaw3d
, pkgconfig, gtk, libXft, dbus, libpng, libjpeg, libungif
, libtiff, librsvg, texinfo, gconf, libxml2, imagemagick, gnutls
, alsaLib
, alsaLib, cairo
, withX ? true
}:
@ -14,41 +14,51 @@ stdenv.mkDerivation rec {
builder = ./builder.sh;
src = fetchurl {
url = "mirror://gnu/emacs/${name}.tar.xz";
url = "mirror://gnu/emacs/${name}.tar.xz";
sha256 = "1385qzs3bsa52s5rcncbrkxlydkw0ajzrvfxgv8rws5fx512kakh";
};
buildInputs =
[ ncurses gconf libxml2 gnutls alsaLib pkgconfig texinfo ]
++ stdenv.lib.optional stdenv.isLinux dbus
++ stdenv.lib.optionals withX [
x11 libXaw Xaw3d libXpm libpng libjpeg libungif
libtiff librsvg libXft imagemagick gtk
];
++ stdenv.lib.optionals withX
[ x11 libXaw Xaw3d libXpm libpng libjpeg libungif libtiff librsvg libXft
imagemagick gtk ]
++ stdenv.lib.optional stdenv.isDarwin cairo;
configureFlags =
(if withX then
[ "--with-x-toolkit=gtk" "--with-xft"]
else
[ "--with-x=no --with-xpm=no --with-jpeg=no --with-png=no --with-gif=no --with-tiff=no" ])
( if withX then
[ "--with-x-toolkit=gtk" "--with-xft"]
else
[ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no"
"--with-gif=no" "--with-tiff=no" ] )
# On NixOS, help Emacs find `crt*.o'.
++ stdenv.lib.optional (stdenv ? glibc)
[ "--with-crt-dir=${stdenv.glibc}/lib" ];
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.isDarwin && withX)
"-I${cairo}/include/cairo";
postInstall = ''
cat >$out/share/emacs/site-lisp/site-start.el <<EOF
;; nixos specific load-path
(when (getenv "NIX_PROFILES") (setq load-path
(append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
(split-string (getenv "NIX_PROFILES"))))
load-path)))
EOF
;; nixos specific load-path
(when (getenv "NIX_PROFILES") (setq load-path
(append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
(split-string (getenv "NIX_PROFILES"))))
load-path)))
EOF
'';
doCheck = true;
meta = with stdenv.lib; {
description = "GNU Emacs 24, the extensible, customizable text editor";
homepage = http://www.gnu.org/software/emacs/;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ chaoflow lovek323 simons the-kenny ];
platforms = platforms.all;
longDescription = ''
GNU Emacs is an extensible, customizable text editorand more. At its
@ -66,11 +76,5 @@ EOF
extensions are distributed with GNU Emacs; others are available
separately.
'';
homepage = "http://www.gnu.org/software/emacs/";
license = "GPLv3+";
maintainers = with maintainers; [ chaoflow lovek323 simons the-kenny ];
platforms = platforms.all;
};
}

View File

@ -11,7 +11,7 @@ composableDerivation {
else stdenv ).mkDerivation;
} (fix: {
name = "vim_configurable-7.4";
name = "vim_configurable-7.4.23";
enableParallelBuilding = true; # test this
@ -38,8 +38,10 @@ composableDerivation {
preConfigure
= stdenv.lib.optionalString
(stdenv.isDarwin && (config.vim.darwin or true)) ''
sed -i "5387,5390d" src/auto/configure
sed -i "5394d" src/auto/configure
# TODO: we should find a better way of doing this as, if the configure
# file changes, we need to change these line numbers
sed -i "5641,5644d" src/auto/configure
sed -i "5648d" src/auto/configure
'';
configureFlags
@ -49,10 +51,26 @@ composableDerivation {
= [ ncurses pkgconfig gtk libX11 libXext libSM libXpm libXt libXaw libXau
libXmu glib libICE ];
prePatch = "cd src";
patches =
[ ./patches/7.4.001 ./patches/7.4.002 ./patches/7.4.003 ./patches/7.4.004
./patches/7.4.005 ./patches/7.4.006 ./patches/7.4.007 ./patches/7.4.008
./patches/7.4.009 ./patches/7.4.010 ./patches/7.4.011 ./patches/7.4.012
./patches/7.4.013 ./patches/7.4.014 ./patches/7.4.015 ./patches/7.4.016
./patches/7.4.017 ./patches/7.4.018 ./patches/7.4.019 ./patches/7.4.020
./patches/7.4.021 ./patches/7.4.022 ./patches/7.4.023 ];
# most interpreters aren't tested yet.. (see python for example how to do it)
flags = {
ftNix = {
patches = [ ./ft-nix-support.patch ];
# because we cd to src in the main patch phase, we can't just add this
# patch to the list, we have to apply it manually
postPatch = ''
cd ../runtime
patch -p2 < ${./ft-nix-support.patch}
cd ..
'';
};
}
// edf { name = "darwin"; } #Disable Darwin (Mac OS X) support.
@ -131,10 +149,11 @@ composableDerivation {
dontStrip = 1;
meta = {
meta = with stdenv.lib; {
description = "The most popular clone of the VI editor";
homepage = "www.vim.org";
platforms = lib.platforms.unix;
homepage = http://www.vim.org;
maintainers = with maintainers; [ lovek323 ];
platforms = platforms.unix;
};
})

View File

@ -1,10 +1,11 @@
{ stdenv, fetchurl, ncurses, gettext, pkgconfig }:
stdenv.mkDerivation rec {
name = "vim-7.4";
patchLevel = "23";
name = "vim-7.4.${patchLevel}";
src = fetchurl {
url = "ftp://ftp.vim.org/pub/vim/unix/${name}.tar.bz2";
url = "ftp://ftp.vim.org/pub/vim/unix/${name}.tar.bz2";
sha256 = "1pjaffap91l2rb9pjnlbrpvb3ay5yhhr3g91zabjvw1rqk9adxfh";
};
@ -39,10 +40,20 @@ stdenv.mkDerivation rec {
# To fix the trouble in vim73, that it cannot cross-build with this patch
# to bypass a configure script check that cannot be done cross-building.
# http://groups.google.com/group/vim_dev/browse_thread/thread/66c02efd1523554b?pli=1
patchPhase = ''
sed -i -e 's/as_fn_error.*int32.*/:/' src/auto/configure
'';
# patchPhase = ''
# sed -i -e 's/as_fn_error.*int32.*/:/' src/auto/configure
# '';
prePatch = "cd src";
patches =
[ ./patches/7.4.001 ./patches/7.4.002 ./patches/7.4.003 ./patches/7.4.004
./patches/7.4.005 ./patches/7.4.006 ./patches/7.4.007 ./patches/7.4.008
./patches/7.4.009 ./patches/7.4.010 ./patches/7.4.011 ./patches/7.4.012
./patches/7.4.013 ./patches/7.4.014 ./patches/7.4.015 ./patches/7.4.016
./patches/7.4.017 ./patches/7.4.018 ./patches/7.4.019 ./patches/7.4.020
./patches/7.4.021 ./patches/7.4.022 ./patches/7.4.023 ];
meta = with stdenv.lib; {
description = "The most popular clone of the VI editor";
homepage = http://www.vim.org;

View File

@ -0,0 +1,489 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.001
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.001
Problem: Character classes such as [a-z] to not react to 'ignorecase'.
Breaks man page highlighting. (Mario Grgic)
Solution: Add separate items for classes that react to 'ignorecase'. Clean
up logic handling character classes. Add more tests.
Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
*** ../vim-7.4.000/src/regexp_nfa.c 2013-08-01 18:27:51.000000000 +0200
--- src/regexp_nfa.c 2013-08-14 11:49:50.000000000 +0200
***************
*** 29,34 ****
--- 29,37 ----
# define NFA_REGEXP_DEBUG_LOG "nfa_regexp_debug.log"
#endif
+ /* Added to NFA_ANY - NFA_NUPPER_IC to include a NL. */
+ #define NFA_ADD_NL 31
+
enum
{
NFA_SPLIT = -1024,
***************
*** 183,188 ****
--- 186,198 ----
NFA_NLOWER, /* Match non-lowercase char */
NFA_UPPER, /* Match uppercase char */
NFA_NUPPER, /* Match non-uppercase char */
+ NFA_LOWER_IC, /* Match [a-z] */
+ NFA_NLOWER_IC, /* Match [^a-z] */
+ NFA_UPPER_IC, /* Match [A-Z] */
+ NFA_NUPPER_IC, /* Match [^A-Z] */
+
+ NFA_FIRST_NL = NFA_ANY + NFA_ADD_NL,
+ NFA_LAST_NL = NFA_NUPPER_IC + NFA_ADD_NL,
NFA_CURSOR, /* Match cursor pos */
NFA_LNUM, /* Match line number */
***************
*** 199,207 ****
NFA_MARK_LT, /* Match < mark */
NFA_VISUAL, /* Match Visual area */
- NFA_FIRST_NL = NFA_ANY + ADD_NL,
- NFA_LAST_NL = NFA_NUPPER + ADD_NL,
-
/* Character classes [:alnum:] etc */
NFA_CLASS_ALNUM,
NFA_CLASS_ALPHA,
--- 209,214 ----
***************
*** 578,583 ****
--- 585,592 ----
* On failure, return 0 (=FAIL)
* Start points to the first char of the range, while end should point
* to the closing brace.
+ * Keep in mind that 'ignorecase' applies at execution time, thus [a-z] may
+ * need to be interpreted as [a-zA-Z].
*/
static int
nfa_recognize_char_class(start, end, extra_newl)
***************
*** 681,687 ****
return FAIL;
if (newl == TRUE)
! extra_newl = ADD_NL;
switch (config)
{
--- 690,696 ----
return FAIL;
if (newl == TRUE)
! extra_newl = NFA_ADD_NL;
switch (config)
{
***************
*** 710,722 ****
case CLASS_not | CLASS_az | CLASS_AZ:
return extra_newl + NFA_NALPHA;
case CLASS_az:
! return extra_newl + NFA_LOWER;
case CLASS_not | CLASS_az:
! return extra_newl + NFA_NLOWER;
case CLASS_AZ:
! return extra_newl + NFA_UPPER;
case CLASS_not | CLASS_AZ:
! return extra_newl + NFA_NUPPER;
}
return FAIL;
}
--- 719,731 ----
case CLASS_not | CLASS_az | CLASS_AZ:
return extra_newl + NFA_NALPHA;
case CLASS_az:
! return extra_newl + NFA_LOWER_IC;
case CLASS_not | CLASS_az:
! return extra_newl + NFA_NLOWER_IC;
case CLASS_AZ:
! return extra_newl + NFA_UPPER_IC;
case CLASS_not | CLASS_AZ:
! return extra_newl + NFA_NUPPER_IC;
}
return FAIL;
}
***************
*** 914,920 ****
break;
}
! extra = ADD_NL;
/* "\_[" is collection plus newline */
if (c == '[')
--- 923,929 ----
break;
}
! extra = NFA_ADD_NL;
/* "\_[" is collection plus newline */
if (c == '[')
***************
*** 970,976 ****
}
#endif
EMIT(nfa_classcodes[p - classchars]);
! if (extra == ADD_NL)
{
EMIT(NFA_NEWL);
EMIT(NFA_OR);
--- 979,985 ----
}
#endif
EMIT(nfa_classcodes[p - classchars]);
! if (extra == NFA_ADD_NL)
{
EMIT(NFA_NEWL);
EMIT(NFA_OR);
***************
*** 1240,1260 ****
{
/*
* Try to reverse engineer character classes. For example,
! * recognize that [0-9] stands for \d and [A-Za-z_] with \h,
* and perform the necessary substitutions in the NFA.
*/
result = nfa_recognize_char_class(regparse, endp,
! extra == ADD_NL);
if (result != FAIL)
{
! if (result >= NFA_DIGIT && result <= NFA_NUPPER)
! EMIT(result);
! else /* must be char class + newline */
{
! EMIT(result - ADD_NL);
EMIT(NFA_NEWL);
EMIT(NFA_OR);
}
regparse = endp;
mb_ptr_adv(regparse);
return OK;
--- 1249,1269 ----
{
/*
* Try to reverse engineer character classes. For example,
! * recognize that [0-9] stands for \d and [A-Za-z_] for \h,
* and perform the necessary substitutions in the NFA.
*/
result = nfa_recognize_char_class(regparse, endp,
! extra == NFA_ADD_NL);
if (result != FAIL)
{
! if (result >= NFA_FIRST_NL && result <= NFA_LAST_NL)
{
! EMIT(result - NFA_ADD_NL);
EMIT(NFA_NEWL);
EMIT(NFA_OR);
}
+ else
+ EMIT(result);
regparse = endp;
mb_ptr_adv(regparse);
return OK;
***************
*** 1504,1510 ****
* collection, add an OR below. But not for negated
* range. */
if (!negated)
! extra = ADD_NL;
}
else
{
--- 1513,1519 ----
* collection, add an OR below. But not for negated
* range. */
if (!negated)
! extra = NFA_ADD_NL;
}
else
{
***************
*** 1537,1543 ****
EMIT(NFA_END_COLL);
/* \_[] also matches \n but it's not negated */
! if (extra == ADD_NL)
{
EMIT(reg_string ? NL : NFA_NEWL);
EMIT(NFA_OR);
--- 1546,1552 ----
EMIT(NFA_END_COLL);
/* \_[] also matches \n but it's not negated */
! if (extra == NFA_ADD_NL)
{
EMIT(reg_string ? NL : NFA_NEWL);
EMIT(NFA_OR);
***************
*** 2011,2017 ****
if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL)
{
addnl = TRUE;
! c -= ADD_NL;
}
STRCPY(code, "");
--- 2020,2026 ----
if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL)
{
addnl = TRUE;
! c -= NFA_ADD_NL;
}
STRCPY(code, "");
***************
*** 2217,2222 ****
--- 2226,2235 ----
case NFA_NLOWER:STRCPY(code, "NFA_NLOWER"); break;
case NFA_UPPER: STRCPY(code, "NFA_UPPER"); break;
case NFA_NUPPER:STRCPY(code, "NFA_NUPPER"); break;
+ case NFA_LOWER_IC: STRCPY(code, "NFA_LOWER_IC"); break;
+ case NFA_NLOWER_IC: STRCPY(code, "NFA_NLOWER_IC"); break;
+ case NFA_UPPER_IC: STRCPY(code, "NFA_UPPER_IC"); break;
+ case NFA_NUPPER_IC: STRCPY(code, "NFA_NUPPER_IC"); break;
default:
STRCPY(code, "CHAR(x)");
***************
*** 2687,2692 ****
--- 2700,2709 ----
case NFA_NLOWER:
case NFA_UPPER:
case NFA_NUPPER:
+ case NFA_LOWER_IC:
+ case NFA_NLOWER_IC:
+ case NFA_UPPER_IC:
+ case NFA_NUPPER_IC:
/* possibly non-ascii */
#ifdef FEAT_MBYTE
if (has_mbyte)
***************
*** 3841,3846 ****
--- 3858,3867 ----
case NFA_NLOWER:
case NFA_UPPER:
case NFA_NUPPER:
+ case NFA_LOWER_IC:
+ case NFA_NLOWER_IC:
+ case NFA_UPPER_IC:
+ case NFA_NUPPER_IC:
case NFA_START_COLL:
case NFA_START_NEG_COLL:
case NFA_NEWL:
***************
*** 5872,5877 ****
--- 5893,5920 ----
ADD_STATE_IF_MATCH(t->state);
break;
+ case NFA_LOWER_IC: /* [a-z] */
+ result = ri_lower(curc) || (ireg_ic && ri_upper(curc));
+ ADD_STATE_IF_MATCH(t->state);
+ break;
+
+ case NFA_NLOWER_IC: /* [^a-z] */
+ result = curc != NUL
+ && !(ri_lower(curc) || (ireg_ic && ri_upper(curc)));
+ ADD_STATE_IF_MATCH(t->state);
+ break;
+
+ case NFA_UPPER_IC: /* [A-Z] */
+ result = ri_upper(curc) || (ireg_ic && ri_lower(curc));
+ ADD_STATE_IF_MATCH(t->state);
+ break;
+
+ case NFA_NUPPER_IC: /* ^[A-Z] */
+ result = curc != NUL
+ && !(ri_upper(curc) || (ireg_ic && ri_lower(curc)));
+ ADD_STATE_IF_MATCH(t->state);
+ break;
+
case NFA_BACKREF1:
case NFA_BACKREF2:
case NFA_BACKREF3:
*** ../vim-7.4.000/src/testdir/test64.in 2013-08-01 17:45:33.000000000 +0200
--- src/testdir/test64.in 2013-08-14 11:50:11.000000000 +0200
***************
*** 289,303 ****
:call add(tl, [2, '.a\%$', " a\n "])
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
:"
! :"""" Test recognition of some character classes
! :call add(tl, [2, '[0-9]', '8', '8'])
! :call add(tl, [2, '[^0-9]', '8'])
! :call add(tl, [2, '[0-9a-fA-F]*', '0a7', '0a7'])
! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0a7'])
! :call add(tl, [2, '[a-z_A-Z0-9]\+', 'aso_sfoij', 'aso_sfoij'])
! :call add(tl, [2, '[a-z]', 'a', 'a'])
! :call add(tl, [2, '[a-zA-Z]', 'a', 'a'])
! :call add(tl, [2, '[A-Z]', 'a'])
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
:"
:"""" Tests for \z features
--- 289,317 ----
:call add(tl, [2, '.a\%$', " a\n "])
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
:"
! :"""" Test recognition of character classes
! :call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
! :call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
! :call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
! :call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
! :call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
! :call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
! :call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
! :call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
! :call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
! :call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
! :call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
! :call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
! :call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
! :call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
! :call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
! :call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
! :call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
! :call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
! :call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
! :call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
! :call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
:"
:"""" Tests for \z features
*** ../vim-7.4.000/src/testdir/test64.ok 2013-08-01 18:28:56.000000000 +0200
--- src/testdir/test64.ok 2013-08-14 11:50:37.000000000 +0200
***************
*** 650,679 ****
OK 0 - .a\%$
OK 1 - .a\%$
OK 2 - .a\%$
! OK 0 - [0-9]
! OK 1 - [0-9]
! OK 2 - [0-9]
! OK 0 - [^0-9]
! OK 1 - [^0-9]
! OK 2 - [^0-9]
! OK 0 - [0-9a-fA-F]*
! OK 1 - [0-9a-fA-F]*
! OK 2 - [0-9a-fA-F]*
OK 0 - [^0-9A-Fa-f]\+
OK 1 - [^0-9A-Fa-f]\+
OK 2 - [^0-9A-Fa-f]\+
OK 0 - [a-z_A-Z0-9]\+
OK 1 - [a-z_A-Z0-9]\+
OK 2 - [a-z_A-Z0-9]\+
! OK 0 - [a-z]
! OK 1 - [a-z]
! OK 2 - [a-z]
! OK 0 - [a-zA-Z]
! OK 1 - [a-zA-Z]
! OK 2 - [a-zA-Z]
! OK 0 - [A-Z]
! OK 1 - [A-Z]
! OK 2 - [A-Z]
OK 0 - \C[^A-Z]\+
OK 1 - \C[^A-Z]\+
OK 2 - \C[^A-Z]\+
--- 650,721 ----
OK 0 - .a\%$
OK 1 - .a\%$
OK 2 - .a\%$
! OK 0 - [0-7]\+
! OK 1 - [0-7]\+
! OK 2 - [0-7]\+
! OK 0 - [^0-7]\+
! OK 1 - [^0-7]\+
! OK 2 - [^0-7]\+
! OK 0 - [0-9]\+
! OK 1 - [0-9]\+
! OK 2 - [0-9]\+
! OK 0 - [^0-9]\+
! OK 1 - [^0-9]\+
! OK 2 - [^0-9]\+
! OK 0 - [0-9a-fA-F]\+
! OK 1 - [0-9a-fA-F]\+
! OK 2 - [0-9a-fA-F]\+
OK 0 - [^0-9A-Fa-f]\+
OK 1 - [^0-9A-Fa-f]\+
OK 2 - [^0-9A-Fa-f]\+
OK 0 - [a-z_A-Z0-9]\+
OK 1 - [a-z_A-Z0-9]\+
OK 2 - [a-z_A-Z0-9]\+
! OK 0 - [^a-z_A-Z0-9]\+
! OK 1 - [^a-z_A-Z0-9]\+
! OK 2 - [^a-z_A-Z0-9]\+
! OK 0 - [a-z_A-Z]\+
! OK 1 - [a-z_A-Z]\+
! OK 2 - [a-z_A-Z]\+
! OK 0 - [^a-z_A-Z]\+
! OK 1 - [^a-z_A-Z]\+
! OK 2 - [^a-z_A-Z]\+
! OK 0 - [a-z]\+
! OK 1 - [a-z]\+
! OK 2 - [a-z]\+
! OK 0 - [a-z]\+
! OK 1 - [a-z]\+
! OK 2 - [a-z]\+
! OK 0 - [^a-z]\+
! OK 1 - [^a-z]\+
! OK 2 - [^a-z]\+
! OK 0 - [^a-z]\+
! OK 1 - [^a-z]\+
! OK 2 - [^a-z]\+
! OK 0 - [a-zA-Z]\+
! OK 1 - [a-zA-Z]\+
! OK 2 - [a-zA-Z]\+
! OK 0 - [^a-zA-Z]\+
! OK 1 - [^a-zA-Z]\+
! OK 2 - [^a-zA-Z]\+
! OK 0 - [A-Z]\+
! OK 1 - [A-Z]\+
! OK 2 - [A-Z]\+
! OK 0 - [^A-Z]\+
! OK 1 - [^A-Z]\+
! OK 2 - [^A-Z]\+
! OK 0 - [a-z]\+\c
! OK 1 - [a-z]\+\c
! OK 2 - [a-z]\+\c
! OK 0 - [A-Z]\+\c
! OK 1 - [A-Z]\+\c
! OK 2 - [A-Z]\+\c
! OK 0 - \c[^a-z]\+
! OK 1 - \c[^a-z]\+
! OK 2 - \c[^a-z]\+
! OK 0 - \c[^A-Z]\+
! OK 1 - \c[^A-Z]\+
! OK 2 - \c[^A-Z]\+
OK 0 - \C[^A-Z]\+
OK 1 - \C[^A-Z]\+
OK 2 - \C[^A-Z]\+
*** ../vim-7.4.000/src/version.c 2013-08-10 13:29:20.000000000 +0200
--- src/version.c 2013-08-14 11:54:57.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 1,
/**/
--
How many light bulbs does it take to change a person?
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,77 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.002
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4b.002
Problem: Pattern with two alternative look-behind matches does not match.
(Amadeus Demarzi)
Solution: When comparing PIMs also compare their state ID to see if they are
different.
Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
*** ../vim-7.4.001/src/regexp_nfa.c 2013-08-14 12:05:54.000000000 +0200
--- src/regexp_nfa.c 2013-08-14 13:12:09.000000000 +0200
***************
*** 3782,3787 ****
--- 3782,3790 ----
if (two_unused)
/* one is used and two is not: not equal */
return FALSE;
+ /* compare the state id */
+ if (one->state->id != two->state->id)
+ return FALSE;
/* compare the position */
if (REG_MULTI)
return one->end.pos.lnum == two->end.pos.lnum
*** ../vim-7.4.001/src/testdir/test64.in 2013-08-14 12:05:54.000000000 +0200
--- src/testdir/test64.in 2013-08-14 12:58:38.000000000 +0200
***************
*** 421,426 ****
--- 421,429 ----
:call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
:call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
:"
+ :" complicated look-behind match
+ :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
+ :"
:""""" \@>
:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
*** ../vim-7.4.001/src/testdir/test64.ok 2013-08-14 12:05:54.000000000 +0200
--- src/testdir/test64.ok 2013-08-14 13:14:09.000000000 +0200
***************
*** 974,979 ****
--- 974,982 ----
OK 0 - \(foo\)\@<=.*
OK 1 - \(foo\)\@<=.*
OK 2 - \(foo\)\@<=.*
+ OK 0 - \(r\@<=\|\w\@<!\)\/
+ OK 1 - \(r\@<=\|\w\@<!\)\/
+ OK 2 - \(r\@<=\|\w\@<!\)\/
OK 0 - \(a*\)\@>a
OK 1 - \(a*\)\@>a
OK 2 - \(a*\)\@>a
*** ../vim-7.4.001/src/version.c 2013-08-14 12:05:54.000000000 +0200
--- src/version.c 2013-08-14 13:13:45.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 2,
/**/
--
From "know your smileys":
:-)-O Smiling doctor with stethoscope
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,100 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.003
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.003
Problem: Memory access error in Ruby syntax highlighting. (Christopher Chow)
Solution: Refresh stale pointer. (James McCoy)
Files: src/regexp_nfa.c
*** ../vim-7.4.002/src/regexp_nfa.c 2013-08-14 13:31:03.000000000 +0200
--- src/regexp_nfa.c 2013-08-14 14:02:06.000000000 +0200
***************
*** 4120,4126 ****
sub = &subs->norm;
}
#ifdef FEAT_SYN_HL
! else if (state->c >= NFA_ZOPEN)
{
subidx = state->c - NFA_ZOPEN;
sub = &subs->synt;
--- 4120,4126 ----
sub = &subs->norm;
}
#ifdef FEAT_SYN_HL
! else if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
{
subidx = state->c - NFA_ZOPEN;
sub = &subs->synt;
***************
*** 4189,4194 ****
--- 4189,4201 ----
}
subs = addstate(l, state->out, subs, pim, off);
+ /* "subs" may have changed, need to set "sub" again */
+ #ifdef FEAT_SYN_HL
+ if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
+ sub = &subs->synt;
+ else
+ #endif
+ sub = &subs->norm;
if (save_in_use == -1)
{
***************
*** 4237,4243 ****
sub = &subs->norm;
}
#ifdef FEAT_SYN_HL
! else if (state->c >= NFA_ZCLOSE)
{
subidx = state->c - NFA_ZCLOSE;
sub = &subs->synt;
--- 4244,4250 ----
sub = &subs->norm;
}
#ifdef FEAT_SYN_HL
! else if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
{
subidx = state->c - NFA_ZCLOSE;
sub = &subs->synt;
***************
*** 4281,4286 ****
--- 4288,4300 ----
}
subs = addstate(l, state->out, subs, pim, off);
+ /* "subs" may have changed, need to set "sub" again */
+ #ifdef FEAT_SYN_HL
+ if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
+ sub = &subs->synt;
+ else
+ #endif
+ sub = &subs->norm;
if (REG_MULTI)
sub->list.multi[subidx].end = save_lpos;
*** ../vim-7.4.002/src/version.c 2013-08-14 13:31:03.000000000 +0200
--- src/version.c 2013-08-14 14:03:51.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 3,
/**/
--
Where do you want to crash today?
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,232 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.004
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.004
Problem: When closing a window fails ":bwipe" may hang.
Solution: Let win_close() return FAIL and break out of the loop.
Files: src/window.c, src/proto/window.pro, src/buffer.c
*** ../vim-7.4.003/src/window.c 2013-07-24 17:38:29.000000000 +0200
--- src/window.c 2013-08-14 16:52:44.000000000 +0200
***************
*** 2172,2179 ****
* If "free_buf" is TRUE related buffer may be unloaded.
*
* Called by :quit, :close, :xit, :wq and findtag().
*/
! void
win_close(win, free_buf)
win_T *win;
int free_buf;
--- 2172,2180 ----
* If "free_buf" is TRUE related buffer may be unloaded.
*
* Called by :quit, :close, :xit, :wq and findtag().
+ * Returns FAIL when the window was not closed.
*/
! int
win_close(win, free_buf)
win_T *win;
int free_buf;
***************
*** 2190,2210 ****
if (last_window())
{
EMSG(_("E444: Cannot close last window"));
! return;
}
#ifdef FEAT_AUTOCMD
if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
! return; /* window is already being closed */
if (win == aucmd_win)
{
EMSG(_("E813: Cannot close autocmd window"));
! return;
}
if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
{
EMSG(_("E814: Cannot close window, only autocmd window would remain"));
! return;
}
#endif
--- 2191,2211 ----
if (last_window())
{
EMSG(_("E444: Cannot close last window"));
! return FAIL;
}
#ifdef FEAT_AUTOCMD
if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
! return FAIL; /* window is already being closed */
if (win == aucmd_win)
{
EMSG(_("E813: Cannot close autocmd window"));
! return FAIL;
}
if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
{
EMSG(_("E814: Cannot close window, only autocmd window would remain"));
! return FAIL;
}
#endif
***************
*** 2212,2218 ****
* and then close the window and the tab page to avoid that curwin and
* curtab are invalid while we are freeing memory. */
if (close_last_window_tabpage(win, free_buf, prev_curtab))
! return;
/* When closing the help window, try restoring a snapshot after closing
* the window. Otherwise clear the snapshot, it's now invalid. */
--- 2213,2219 ----
* and then close the window and the tab page to avoid that curwin and
* curtab are invalid while we are freeing memory. */
if (close_last_window_tabpage(win, free_buf, prev_curtab))
! return FAIL;
/* When closing the help window, try restoring a snapshot after closing
* the window. Otherwise clear the snapshot, it's now invalid. */
***************
*** 2240,2261 ****
win->w_closing = TRUE;
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
if (!win_valid(win))
! return;
win->w_closing = FALSE;
if (last_window())
! return;
}
win->w_closing = TRUE;
apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
if (!win_valid(win))
! return;
win->w_closing = FALSE;
if (last_window())
! return;
# ifdef FEAT_EVAL
/* autocmds may abort script processing */
if (aborting())
! return;
# endif
}
#endif
--- 2241,2262 ----
win->w_closing = TRUE;
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
if (!win_valid(win))
! return FAIL;
win->w_closing = FALSE;
if (last_window())
! return FAIL;
}
win->w_closing = TRUE;
apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
if (!win_valid(win))
! return FAIL;
win->w_closing = FALSE;
if (last_window())
! return FAIL;
# ifdef FEAT_EVAL
/* autocmds may abort script processing */
if (aborting())
! return FAIL;
# endif
}
#endif
***************
*** 2303,2309 ****
* other window or moved to another tab page. */
else if (!win_valid(win) || last_window() || curtab != prev_curtab
|| close_last_window_tabpage(win, free_buf, prev_curtab))
! return;
/* Free the memory used for the window and get the window that received
* the screen space. */
--- 2304,2310 ----
* other window or moved to another tab page. */
else if (!win_valid(win) || last_window() || curtab != prev_curtab
|| close_last_window_tabpage(win, free_buf, prev_curtab))
! return FAIL;
/* Free the memory used for the window and get the window that received
* the screen space. */
***************
*** 2383,2388 ****
--- 2384,2390 ----
#endif
redraw_all_later(NOT_VALID);
+ return OK;
}
/*
*** ../vim-7.4.003/src/proto/window.pro 2013-08-10 13:37:30.000000000 +0200
--- src/proto/window.pro 2013-08-14 16:52:50.000000000 +0200
***************
*** 9,15 ****
void win_equal __ARGS((win_T *next_curwin, int current, int dir));
void close_windows __ARGS((buf_T *buf, int keep_curwin));
int one_window __ARGS((void));
! void win_close __ARGS((win_T *win, int free_buf));
void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
void win_free_all __ARGS((void));
win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
--- 9,15 ----
void win_equal __ARGS((win_T *next_curwin, int current, int dir));
void close_windows __ARGS((buf_T *buf, int keep_curwin));
int one_window __ARGS((void));
! int win_close __ARGS((win_T *win, int free_buf));
void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
void win_free_all __ARGS((void));
win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
*** ../vim-7.4.003/src/buffer.c 2013-07-17 16:39:00.000000000 +0200
--- src/buffer.c 2013-08-14 16:54:34.000000000 +0200
***************
*** 1186,1192 ****
&& !(curwin->w_closing || curwin->w_buffer->b_closing)
# endif
&& (firstwin != lastwin || first_tabpage->tp_next != NULL))
! win_close(curwin, FALSE);
#endif
/*
--- 1186,1195 ----
&& !(curwin->w_closing || curwin->w_buffer->b_closing)
# endif
&& (firstwin != lastwin || first_tabpage->tp_next != NULL))
! {
! if (win_close(curwin, FALSE) == FAIL)
! break;
! }
#endif
/*
*** ../vim-7.4.003/src/version.c 2013-08-14 14:18:37.000000000 +0200
--- src/version.c 2013-08-14 17:10:23.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 4,
/**/
--
From "know your smileys":
*<|:-) Santa Claus (Ho Ho Ho)
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,48 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.005
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.005
Problem: Using "vaB" while 'virtualedit' is set selects the wrong area.
(Dimitar Dimitrov)
Solution: Reset coladd when finding a match.
Files: src/search.c
*** ../vim-7.4.004/src/search.c 2013-07-17 19:20:47.000000000 +0200
--- src/search.c 2013-08-14 17:32:38.000000000 +0200
***************
*** 1760,1765 ****
--- 1760,1768 ----
#endif
pos = curwin->w_cursor;
+ #ifdef FEAT_VIRTUALEDIT
+ pos.coladd = 0;
+ #endif
linep = ml_get(pos.lnum);
cpo_match = (vim_strchr(p_cpo, CPO_MATCH) != NULL);
*** ../vim-7.4.004/src/version.c 2013-08-14 17:11:14.000000000 +0200
--- src/version.c 2013-08-14 17:38:05.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 5,
/**/
--
You can't have everything. Where would you put it?
-- Steven Wright
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,66 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.006
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.006
Problem: mkdir("foo/bar/", "p") gives an error message. (David Barnett)
Solution: Remove the trailing slash. (lcd)
Files: src/eval.c
*** ../vim-7.4.005/src/eval.c 2013-07-05 18:23:42.000000000 +0200
--- src/eval.c 2013-08-22 12:00:28.000000000 +0200
***************
*** 14292,14297 ****
--- 14292,14301 ----
return;
dir = get_tv_string_buf(&argvars[0], buf);
+ if (*gettail(dir) == NUL)
+ /* remove trailing slashes */
+ *gettail_sep(dir) = NUL;
+
if (argvars[1].v_type != VAR_UNKNOWN)
{
if (argvars[2].v_type != VAR_UNKNOWN)
***************
*** 14299,14305 ****
if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
mkdir_recurse(dir, prot);
}
! rettv->vval.v_number = prot != -1 ? vim_mkdir_emsg(dir, prot) : 0;
}
#endif
--- 14303,14309 ----
if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
mkdir_recurse(dir, prot);
}
! rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
}
#endif
*** ../vim-7.4.005/src/version.c 2013-08-14 17:45:25.000000000 +0200
--- src/version.c 2013-08-22 12:02:46.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 6,
/**/
--
hundred-and-one symptoms of being an internet addict:
97. Your mother tells you to remember something, and you look for
a File/Save command.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,95 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.007
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.007
Problem: Creating a preview window on startup leaves the screen layout in a
messed up state. (Marius Gedminas)
Solution: Don't change firstwin. (Christian Brabandt)
Files: src/main.c
*** ../vim-7.4.006/src/main.c 2013-07-03 12:36:49.000000000 +0200
--- src/main.c 2013-08-22 14:02:39.000000000 +0200
***************
*** 2727,2732 ****
--- 2727,2733 ----
int arg_idx; /* index in argument list */
int i;
int advance = TRUE;
+ win_T *win;
# ifdef FEAT_AUTOCMD
/*
***************
*** 2816,2839 ****
# ifdef FEAT_AUTOCMD
--autocmd_no_enter;
# endif
#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
! /*
! * Avoid making a preview window the current window.
! */
! if (firstwin->w_p_pvw)
{
! win_T *win;
!
! for (win = firstwin; win != NULL; win = win->w_next)
! if (!win->w_p_pvw)
! {
! firstwin = win;
! break;
! }
}
#endif
! /* make the first window the current window */
! win_enter(firstwin, FALSE);
# ifdef FEAT_AUTOCMD
--autocmd_no_leave;
--- 2817,2838 ----
# ifdef FEAT_AUTOCMD
--autocmd_no_enter;
# endif
+
+ /* make the first window the current window */
+ win = firstwin;
#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
! /* Avoid making a preview window the current window. */
! while (win->w_p_pvw)
{
! win = win->w_next;
! if (win == NULL)
! {
! win = firstwin;
! break;
! }
}
#endif
! win_enter(win, FALSE);
# ifdef FEAT_AUTOCMD
--autocmd_no_leave;
*** ../vim-7.4.006/src/version.c 2013-08-22 12:06:50.000000000 +0200
--- src/version.c 2013-08-22 14:04:11.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 7,
/**/
--
hundred-and-one symptoms of being an internet addict:
105. When someone asks you for your address, you tell them your URL.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,71 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.008
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.008
Problem: New regexp engine can't be interrupted.
Solution: Check for CTRL-C pressed. (Yasuhiro Matsumoto)
Files: src/regexp_nfa.c, src/regexp.c
*** ../vim-7.4.007/src/regexp_nfa.c 2013-08-14 14:18:37.000000000 +0200
--- src/regexp_nfa.c 2013-08-25 16:55:56.000000000 +0200
***************
*** 5089,5094 ****
--- 5089,5100 ----
return FALSE;
}
#endif
+ /* Some patterns may take a long time to match, especially when using
+ * recursive_regmatch(). Allow interrupting them with CTRL-C. */
+ fast_breakcheck();
+ if (got_int)
+ return FALSE;
+
nfa_match = FALSE;
/* Allocate memory for the lists of nodes. */
*** ../vim-7.4.007/src/regexp.c 2013-08-01 18:31:30.000000000 +0200
--- src/regexp.c 2013-08-25 16:57:35.000000000 +0200
***************
*** 4311,4318 ****
*/
for (;;)
{
! /* Some patterns may cause a long time to match, even though they are not
! * illegal. E.g., "\([a-z]\+\)\+Q". Allow breaking them with CTRL-C. */
fast_breakcheck();
#ifdef DEBUG
--- 4311,4318 ----
*/
for (;;)
{
! /* Some patterns may take a long time to match, e.g., "\([a-z]\+\)\+Q".
! * Allow interrupting them with CTRL-C. */
fast_breakcheck();
#ifdef DEBUG
*** ../vim-7.4.007/src/version.c 2013-08-22 14:14:23.000000000 +0200
--- src/version.c 2013-08-25 16:57:51.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 8,
/**/
--
hundred-and-one symptoms of being an internet addict:
124. You begin conversations with, "Who is your internet service provider?"
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,64 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.009
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.009
Problem: When a file was not decrypted (yet), writing it may destroy the
contents.
Solution: Mark the file as readonly until decryption was done. (Christian
Brabandt)
Files: src/fileio.c
*** ../vim-7.4.008/src/fileio.c 2013-08-05 21:58:03.000000000 +0200
--- src/fileio.c 2013-08-25 17:45:27.000000000 +0200
***************
*** 2926,2934 ****
--- 2926,2939 ----
int *did_ask; /* flag: whether already asked for key */
{
int method = crypt_method_from_magic((char *)ptr, *sizep);
+ int b_p_ro = curbuf->b_p_ro;
if (method >= 0)
{
+ /* Mark the buffer as read-only until the decryption has taken place.
+ * Avoids accidentally overwriting the file with garbage. */
+ curbuf->b_p_ro = TRUE;
+
set_crypt_method(curbuf, method);
if (method > 0)
(void)blowfish_self_test();
***************
*** 2977,2982 ****
--- 2982,2989 ----
*sizep -= CRYPT_MAGIC_LEN + salt_len + seed_len;
mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + salt_len + seed_len,
(size_t)*sizep);
+ /* Restore the read-only flag. */
+ curbuf->b_p_ro = b_p_ro;
}
}
/* When starting to edit a new file which does not have encryption, clear
*** ../vim-7.4.008/src/version.c 2013-08-25 17:01:36.000000000 +0200
--- src/version.c 2013-08-25 17:44:30.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 9,
/**/
--
I have a watch cat! Just break in and she'll watch.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,79 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.010
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.010 (after 7.4.006)
Problem: Crash with invalid argument to mkdir().
Solution: Check for empty string. (lcd47)
Files: src/eval.c
*** ../vim-7.4.009/src/eval.c 2013-08-22 12:06:50.000000000 +0200
--- src/eval.c 2013-08-30 15:47:47.000000000 +0200
***************
*** 14292,14309 ****
return;
dir = get_tv_string_buf(&argvars[0], buf);
! if (*gettail(dir) == NUL)
! /* remove trailing slashes */
! *gettail_sep(dir) = NUL;
!
! if (argvars[1].v_type != VAR_UNKNOWN)
{
! if (argvars[2].v_type != VAR_UNKNOWN)
! prot = get_tv_number_chk(&argvars[2], NULL);
! if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
! mkdir_recurse(dir, prot);
}
- rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
}
#endif
--- 14292,14314 ----
return;
dir = get_tv_string_buf(&argvars[0], buf);
! if (*dir == NUL)
! rettv->vval.v_number = FAIL;
! else
{
! if (*gettail(dir) == NUL)
! /* remove trailing slashes */
! *gettail_sep(dir) = NUL;
!
! if (argvars[1].v_type != VAR_UNKNOWN)
! {
! if (argvars[2].v_type != VAR_UNKNOWN)
! prot = get_tv_number_chk(&argvars[2], NULL);
! if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
! mkdir_recurse(dir, prot);
! }
! rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
}
}
#endif
*** ../vim-7.4.009/src/version.c 2013-08-25 17:46:05.000000000 +0200
--- src/version.c 2013-08-30 15:48:37.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
{ /* Add new patch number below this line */
+ /**/
+ 10,
/**/
--
I wish there was a knob on the TV to turn up the intelligence.
There's a knob called "brightness", but it doesn't seem to work.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,100 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.011
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.011
Problem: Cannot find out if "acl" and "xpm" features are supported.
Solution: Add "acl" and "xpm" to the list of features. (Ken Takata)
Files: src/eval.c, src/version.c
*** ../vim-7.4.010/src/eval.c 2013-08-30 16:00:04.000000000 +0200
--- src/eval.c 2013-08-30 16:34:12.000000000 +0200
***************
*** 12135,12140 ****
--- 12135,12143 ----
#ifndef CASE_INSENSITIVE_FILENAME
"fname_case",
#endif
+ #ifdef HAVE_ACL
+ "acl",
+ #endif
#ifdef FEAT_ARABIC
"arabic",
#endif
***************
*** 12538,12544 ****
"xfontset",
#endif
#ifdef FEAT_XPM_W32
! "xpm_w32",
#endif
#ifdef USE_XSMP
"xsmp",
--- 12541,12552 ----
"xfontset",
#endif
#ifdef FEAT_XPM_W32
! "xpm",
! "xpm_w32", /* for backward compatibility */
! #else
! # if defined(HAVE_XPM)
! "xpm",
! # endif
#endif
#ifdef USE_XSMP
"xsmp",
*** ../vim-7.4.010/src/version.c 2013-08-30 16:00:04.000000000 +0200
--- src/version.c 2013-08-30 16:34:37.000000000 +0200
***************
*** 60,65 ****
--- 60,70 ----
static char *(features[]) =
{
+ #ifdef HAVE_ACL
+ "+acl",
+ #else
+ "-acl",
+ #endif
#ifdef AMIGA /* only for Amiga systems */
# ifdef FEAT_ARP
"+ARP",
***************
*** 721,726 ****
--- 726,737 ----
# else
"-xpm_w32",
# endif
+ #else
+ # ifdef HAVE_XPM
+ "+xpm",
+ # else
+ "-xpm",
+ # endif
#endif
NULL
};
*** ../vim-7.4.010/src/version.c 2013-08-30 16:00:04.000000000 +0200
--- src/version.c 2013-08-30 16:34:37.000000000 +0200
***************
*** 729,730 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 11,
/**/
--
hundred-and-one symptoms of being an internet addict:
141. You'd rather go to http://www.weather.com/ than look out your window.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,202 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.012
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.012
Problem: MS-Windows: resolving shortcut does not work properly with
multi-byte characters.
Solution: Use wide system functions. (Ken Takata)
Files: src/os_mswin.c
*** ../vim-7.4.011/src/os_mswin.c 2013-06-16 16:41:11.000000000 +0200
--- src/os_mswin.c 2013-08-30 16:43:23.000000000 +0200
***************
*** 1761,1769 ****
IPersistFile *ppf = NULL;
OLECHAR wsz[MAX_PATH];
WIN32_FIND_DATA ffd; // we get those free of charge
! TCHAR buf[MAX_PATH]; // could have simply reused 'wsz'...
char_u *rfname = NULL;
int len;
/* Check if the file name ends in ".lnk". Avoid calling
* CoCreateInstance(), it's quite slow. */
--- 1761,1773 ----
IPersistFile *ppf = NULL;
OLECHAR wsz[MAX_PATH];
WIN32_FIND_DATA ffd; // we get those free of charge
! CHAR buf[MAX_PATH]; // could have simply reused 'wsz'...
char_u *rfname = NULL;
int len;
+ # ifdef FEAT_MBYTE
+ IShellLinkW *pslw = NULL;
+ WIN32_FIND_DATAW ffdw; // we get those free of charge
+ # endif
/* Check if the file name ends in ".lnk". Avoid calling
* CoCreateInstance(), it's quite slow. */
***************
*** 1775,1792 ****
CoInitialize(NULL);
// create a link manager object and request its interface
hr = CoCreateInstance(
&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
&IID_IShellLink, (void**)&psl);
if (hr != S_OK)
! goto shortcut_error;
// Get a pointer to the IPersistFile interface.
hr = psl->lpVtbl->QueryInterface(
psl, &IID_IPersistFile, (void**)&ppf);
if (hr != S_OK)
! goto shortcut_error;
// full path string must be in Unicode.
MultiByteToWideChar(CP_ACP, 0, fname, -1, wsz, MAX_PATH);
--- 1779,1840 ----
CoInitialize(NULL);
+ # ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+ // create a link manager object and request its interface
+ hr = CoCreateInstance(
+ &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IShellLinkW, (void**)&pslw);
+ if (hr == S_OK)
+ {
+ WCHAR *p = enc_to_utf16(fname, NULL);
+
+ if (p != NULL)
+ {
+ // Get a pointer to the IPersistFile interface.
+ hr = pslw->lpVtbl->QueryInterface(
+ pslw, &IID_IPersistFile, (void**)&ppf);
+ if (hr != S_OK)
+ goto shortcut_errorw;
+
+ // "load" the name and resolve the link
+ hr = ppf->lpVtbl->Load(ppf, p, STGM_READ);
+ if (hr != S_OK)
+ goto shortcut_errorw;
+ # if 0 // This makes Vim wait a long time if the target does not exist.
+ hr = pslw->lpVtbl->Resolve(pslw, NULL, SLR_NO_UI);
+ if (hr != S_OK)
+ goto shortcut_errorw;
+ # endif
+
+ // Get the path to the link target.
+ ZeroMemory(wsz, MAX_PATH * sizeof(WCHAR));
+ hr = pslw->lpVtbl->GetPath(pslw, wsz, MAX_PATH, &ffdw, 0);
+ if (hr == S_OK && wsz[0] != NUL)
+ rfname = utf16_to_enc(wsz, NULL);
+
+ shortcut_errorw:
+ vim_free(p);
+ if (hr == S_OK)
+ goto shortcut_end;
+ }
+ }
+ /* Retry with non-wide function (for Windows 98). */
+ }
+ # endif
// create a link manager object and request its interface
hr = CoCreateInstance(
&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
&IID_IShellLink, (void**)&psl);
if (hr != S_OK)
! goto shortcut_end;
// Get a pointer to the IPersistFile interface.
hr = psl->lpVtbl->QueryInterface(
psl, &IID_IPersistFile, (void**)&ppf);
if (hr != S_OK)
! goto shortcut_end;
// full path string must be in Unicode.
MultiByteToWideChar(CP_ACP, 0, fname, -1, wsz, MAX_PATH);
***************
*** 1794,1805 ****
// "load" the name and resolve the link
hr = ppf->lpVtbl->Load(ppf, wsz, STGM_READ);
if (hr != S_OK)
! goto shortcut_error;
! #if 0 // This makes Vim wait a long time if the target doesn't exist.
hr = psl->lpVtbl->Resolve(psl, NULL, SLR_NO_UI);
if (hr != S_OK)
! goto shortcut_error;
! #endif
// Get the path to the link target.
ZeroMemory(buf, MAX_PATH);
--- 1842,1853 ----
// "load" the name and resolve the link
hr = ppf->lpVtbl->Load(ppf, wsz, STGM_READ);
if (hr != S_OK)
! goto shortcut_end;
! # if 0 // This makes Vim wait a long time if the target doesn't exist.
hr = psl->lpVtbl->Resolve(psl, NULL, SLR_NO_UI);
if (hr != S_OK)
! goto shortcut_end;
! # endif
// Get the path to the link target.
ZeroMemory(buf, MAX_PATH);
***************
*** 1807,1818 ****
if (hr == S_OK && buf[0] != NUL)
rfname = vim_strsave(buf);
! shortcut_error:
// Release all interface pointers (both belong to the same object)
if (ppf != NULL)
ppf->lpVtbl->Release(ppf);
if (psl != NULL)
psl->lpVtbl->Release(psl);
CoUninitialize();
return rfname;
--- 1855,1870 ----
if (hr == S_OK && buf[0] != NUL)
rfname = vim_strsave(buf);
! shortcut_end:
// Release all interface pointers (both belong to the same object)
if (ppf != NULL)
ppf->lpVtbl->Release(ppf);
if (psl != NULL)
psl->lpVtbl->Release(psl);
+ # ifdef FEAT_MBYTE
+ if (pslw != NULL)
+ pslw->lpVtbl->Release(pslw);
+ # endif
CoUninitialize();
return rfname;
*** ../vim-7.4.011/src/version.c 2013-08-30 16:35:41.000000000 +0200
--- src/version.c 2013-08-30 16:39:40.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 12,
/**/
--
hundred-and-one symptoms of being an internet addict:
142. You dream about creating the world's greatest web site.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,99 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.013
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.013
Problem: File name buffer too small for utf-8.
Solution: Use character count instead of byte count. (Ken Takata)
Files: src/os_mswin.c
*** ../vim-7.4.012/src/os_mswin.c 2013-08-30 16:44:15.000000000 +0200
--- src/os_mswin.c 2013-08-30 16:47:54.000000000 +0200
***************
*** 456,462 ****
--- 456,469 ----
int
mch_isFullName(char_u *fname)
{
+ #ifdef FEAT_MBYTE
+ /* WinNT and later can use _MAX_PATH wide characters for a pathname, which
+ * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is
+ * UTF-8. */
+ char szName[_MAX_PATH * 3 + 1];
+ #else
char szName[_MAX_PATH + 1];
+ #endif
/* A name like "d:/foo" and "//server/share" is absolute */
if ((fname[0] && fname[1] == ':' && (fname[2] == '/' || fname[2] == '\\'))
***************
*** 464,470 ****
return TRUE;
/* A name that can't be made absolute probably isn't absolute. */
! if (mch_FullName(fname, szName, _MAX_PATH, FALSE) == FAIL)
return FALSE;
return pathcmp(fname, szName, -1) == 0;
--- 471,477 ----
return TRUE;
/* A name that can't be made absolute probably isn't absolute. */
! if (mch_FullName(fname, szName, sizeof(szName) - 1, FALSE) == FAIL)
return FALSE;
return pathcmp(fname, szName, -1) == 0;
***************
*** 498,507 ****
int
vim_stat(const char *name, struct stat *stp)
{
char buf[_MAX_PATH + 1];
char *p;
! vim_strncpy((char_u *)buf, (char_u *)name, _MAX_PATH);
p = buf + strlen(buf);
if (p > buf)
mb_ptr_back(buf, p);
--- 505,521 ----
int
vim_stat(const char *name, struct stat *stp)
{
+ #ifdef FEAT_MBYTE
+ /* WinNT and later can use _MAX_PATH wide characters for a pathname, which
+ * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is
+ * UTF-8. */
+ char buf[_MAX_PATH * 3 + 1];
+ #else
char buf[_MAX_PATH + 1];
+ #endif
char *p;
! vim_strncpy((char_u *)buf, (char_u *)name, sizeof(buf) - 1);
p = buf + strlen(buf);
if (p > buf)
mb_ptr_back(buf, p);
*** ../vim-7.4.012/src/version.c 2013-08-30 16:44:15.000000000 +0200
--- src/version.c 2013-08-30 16:47:36.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 13,
/**/
--
hundred-and-one symptoms of being an internet addict:
143. You dream in pallettes of 216 websafe colors.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,102 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.014
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.014
Problem: MS-Windows: check for writing to device does not work.
Solution: Fix #ifdefs. (Ken Takata)
Files: src/fileio.c
*** ../vim-7.4.013/src/fileio.c 2013-08-25 17:46:05.000000000 +0200
--- src/fileio.c 2013-08-30 16:56:46.000000000 +0200
***************
*** 428,440 ****
}
}
- #ifdef UNIX
- /*
- * On Unix it is possible to read a directory, so we have to
- * check for it before the mch_open().
- */
if (!read_stdin && !read_buffer)
{
perm = mch_getperm(fname);
if (perm >= 0 && !S_ISREG(perm) /* not a regular file ... */
# ifdef S_ISFIFO
--- 428,440 ----
}
}
if (!read_stdin && !read_buffer)
{
+ #ifdef UNIX
+ /*
+ * On Unix it is possible to read a directory, so we have to
+ * check for it before the mch_open().
+ */
perm = mch_getperm(fname);
if (perm >= 0 && !S_ISREG(perm) /* not a regular file ... */
# ifdef S_ISFIFO
***************
*** 457,464 ****
msg_scroll = msg_save;
return FAIL;
}
!
! # if defined(MSDOS) || defined(MSWIN) || defined(OS2)
/*
* MS-Windows allows opening a device, but we will probably get stuck
* trying to read it.
--- 457,464 ----
msg_scroll = msg_save;
return FAIL;
}
! #endif
! #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
/*
* MS-Windows allows opening a device, but we will probably get stuck
* trying to read it.
***************
*** 470,478 ****
msg_scroll = msg_save;
return FAIL;
}
- # endif
- }
#endif
/* Set default or forced 'fileformat' and 'binary'. */
set_file_options(set_options, eap);
--- 470,477 ----
msg_scroll = msg_save;
return FAIL;
}
#endif
+ }
/* Set default or forced 'fileformat' and 'binary'. */
set_file_options(set_options, eap);
*** ../vim-7.4.013/src/version.c 2013-08-30 16:51:15.000000000 +0200
--- src/version.c 2013-08-30 16:54:33.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 14,
/**/
--
Drink wet cement and get really stoned.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,106 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.015
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.015
Problem: MS-Windows: Detecting node type does not work for multi-byte
characters.
Solution: Use wide character function when needed. (Ken Takata)
Files: src/os_win32.c
*** ../vim-7.4.014/src/os_win32.c 2013-08-10 12:39:12.000000000 +0200
--- src/os_win32.c 2013-08-30 17:09:47.000000000 +0200
***************
*** 3107,3112 ****
--- 3107,3115 ----
{
HANDLE hFile;
int type;
+ #ifdef FEAT_MBYTE
+ WCHAR *wn = NULL;
+ #endif
/* We can't open a file with a name "\\.\con" or "\\.\prn" and trying to
* read from it later will cause Vim to hang. Thus return NODE_WRITABLE
***************
*** 3114,3127 ****
if (STRNCMP(name, "\\\\.\\", 4) == 0)
return NODE_WRITABLE;
! hFile = CreateFile(name, /* file name */
! GENERIC_WRITE, /* access mode */
! 0, /* share mode */
! NULL, /* security descriptor */
! OPEN_EXISTING, /* creation disposition */
! 0, /* file attributes */
! NULL); /* handle to template file */
if (hFile == INVALID_HANDLE_VALUE)
return NODE_NORMAL;
--- 3117,3157 ----
if (STRNCMP(name, "\\\\.\\", 4) == 0)
return NODE_WRITABLE;
! #ifdef FEAT_MBYTE
! if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! {
! wn = enc_to_utf16(name, NULL);
! if (wn != NULL)
! {
! hFile = CreateFileW(wn, /* file name */
! GENERIC_WRITE, /* access mode */
! 0, /* share mode */
! NULL, /* security descriptor */
! OPEN_EXISTING, /* creation disposition */
! 0, /* file attributes */
! NULL); /* handle to template file */
! if (hFile == INVALID_HANDLE_VALUE
! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
! {
! /* Retry with non-wide function (for Windows 98). */
! vim_free(wn);
! wn = NULL;
! }
! }
! }
! if (wn == NULL)
! #endif
! hFile = CreateFile(name, /* file name */
! GENERIC_WRITE, /* access mode */
! 0, /* share mode */
! NULL, /* security descriptor */
! OPEN_EXISTING, /* creation disposition */
! 0, /* file attributes */
! NULL); /* handle to template file */
+ #ifdef FEAT_MBYTE
+ vim_free(wn);
+ #endif
if (hFile == INVALID_HANDLE_VALUE)
return NODE_NORMAL;
*** ../vim-7.4.014/src/version.c 2013-08-30 17:06:56.000000000 +0200
--- src/version.c 2013-08-30 17:09:35.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 15,
/**/
--
hundred-and-one symptoms of being an internet addict:
144. You eagerly await the update of the "Cool Site of the Day."
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,221 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.016
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.016
Problem: MS-Windows: File name completion doesn't work properly with
Chinese characters. (Yue Wu)
Solution: Add fname_casew(). (Ken Takata)
Files: src/os_win32.c
*** ../vim-7.4.015/src/os_win32.c 2013-08-30 17:11:29.000000000 +0200
--- src/os_win32.c 2013-08-30 17:28:30.000000000 +0200
***************
*** 2500,2508 ****
--- 2500,2624 ----
}
+ #ifdef FEAT_MBYTE
+ /*
+ * fname_casew(): Wide version of fname_case(). Set the case of the file name,
+ * if it already exists. When "len" is > 0, also expand short to long
+ * filenames.
+ * Return FAIL if wide functions are not available, OK otherwise.
+ * NOTE: much of this is identical to fname_case(), keep in sync!
+ */
+ static int
+ fname_casew(
+ WCHAR *name,
+ int len)
+ {
+ WCHAR szTrueName[_MAX_PATH + 2];
+ WCHAR szTrueNameTemp[_MAX_PATH + 2];
+ WCHAR *ptrue, *ptruePrev;
+ WCHAR *porig, *porigPrev;
+ int flen;
+ WIN32_FIND_DATAW fb;
+ HANDLE hFind;
+ int c;
+ int slen;
+
+ flen = (int)wcslen(name);
+ if (flen > _MAX_PATH)
+ return OK;
+
+ /* slash_adjust(name) not needed, already adjusted by fname_case(). */
+
+ /* Build the new name in szTrueName[] one component at a time. */
+ porig = name;
+ ptrue = szTrueName;
+
+ if (iswalpha(porig[0]) && porig[1] == L':')
+ {
+ /* copy leading drive letter */
+ *ptrue++ = *porig++;
+ *ptrue++ = *porig++;
+ *ptrue = NUL; /* in case nothing follows */
+ }
+
+ while (*porig != NUL)
+ {
+ /* copy \ characters */
+ while (*porig == psepc)
+ *ptrue++ = *porig++;
+
+ ptruePrev = ptrue;
+ porigPrev = porig;
+ while (*porig != NUL && *porig != psepc)
+ {
+ *ptrue++ = *porig++;
+ }
+ *ptrue = NUL;
+
+ /* To avoid a slow failure append "\*" when searching a directory,
+ * server or network share. */
+ wcscpy(szTrueNameTemp, szTrueName);
+ slen = (int)wcslen(szTrueNameTemp);
+ if (*porig == psepc && slen + 2 < _MAX_PATH)
+ wcscpy(szTrueNameTemp + slen, L"\\*");
+
+ /* Skip "", "." and "..". */
+ if (ptrue > ptruePrev
+ && (ptruePrev[0] != L'.'
+ || (ptruePrev[1] != NUL
+ && (ptruePrev[1] != L'.' || ptruePrev[2] != NUL)))
+ && (hFind = FindFirstFileW(szTrueNameTemp, &fb))
+ != INVALID_HANDLE_VALUE)
+ {
+ c = *porig;
+ *porig = NUL;
+
+ /* Only use the match when it's the same name (ignoring case) or
+ * expansion is allowed and there is a match with the short name
+ * and there is enough room. */
+ if (_wcsicoll(porigPrev, fb.cFileName) == 0
+ || (len > 0
+ && (_wcsicoll(porigPrev, fb.cAlternateFileName) == 0
+ && (int)(ptruePrev - szTrueName)
+ + (int)wcslen(fb.cFileName) < len)))
+ {
+ wcscpy(ptruePrev, fb.cFileName);
+
+ /* Look for exact match and prefer it if found. Must be a
+ * long name, otherwise there would be only one match. */
+ while (FindNextFileW(hFind, &fb))
+ {
+ if (*fb.cAlternateFileName != NUL
+ && (wcscoll(porigPrev, fb.cFileName) == 0
+ || (len > 0
+ && (_wcsicoll(porigPrev,
+ fb.cAlternateFileName) == 0
+ && (int)(ptruePrev - szTrueName)
+ + (int)wcslen(fb.cFileName) < len))))
+ {
+ wcscpy(ptruePrev, fb.cFileName);
+ break;
+ }
+ }
+ }
+ FindClose(hFind);
+ *porig = c;
+ ptrue = ptruePrev + wcslen(ptruePrev);
+ }
+ else if (hFind == INVALID_HANDLE_VALUE
+ && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+ return FAIL;
+ }
+
+ wcscpy(name, szTrueName);
+ return OK;
+ }
+ #endif
+
/*
* fname_case(): Set the case of the file name, if it already exists.
* When "len" is > 0, also expand short to long filenames.
+ * NOTE: much of this is identical to fname_casew(), keep in sync!
*/
void
fname_case(
***************
*** 2520,2530 ****
int slen;
flen = (int)STRLEN(name);
! if (flen == 0 || flen > _MAX_PATH)
return;
slash_adjust(name);
/* Build the new name in szTrueName[] one component at a time. */
porig = name;
ptrue = szTrueName;
--- 2636,2679 ----
int slen;
flen = (int)STRLEN(name);
! if (flen == 0)
return;
slash_adjust(name);
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+ WCHAR *p = enc_to_utf16(name, NULL);
+
+ if (p != NULL)
+ {
+ char_u *q;
+ WCHAR buf[_MAX_PATH + 2];
+
+ wcscpy(buf, p);
+ vim_free(p);
+
+ if (fname_casew(buf, (len > 0) ? _MAX_PATH : 0) == OK)
+ {
+ q = utf16_to_enc(buf, NULL);
+ if (q != NULL)
+ {
+ vim_strncpy(name, q, (len > 0) ? len - 1 : flen);
+ vim_free(q);
+ return;
+ }
+ }
+ }
+ /* Retry with non-wide function (for Windows 98). */
+ }
+ #endif
+
+ /* If 'enc' is utf-8, flen can be larger than _MAX_PATH.
+ * So we should check this after calling wide function. */
+ if (flen > _MAX_PATH)
+ return;
+
/* Build the new name in szTrueName[] one component at a time. */
porig = name;
ptrue = szTrueName;
*** ../vim-7.4.015/src/version.c 2013-08-30 17:11:29.000000000 +0200
--- src/version.c 2013-08-30 17:15:06.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 16,
/**/
--
Fingers not found - Pound head on keyboard to continue.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,78 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.017
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.017
Problem: ":help !!" does not find the "!!" tag in the help file. (Ben
Fritz)
Solution: When reading the start of the tags file do parse lines that are
not header lines.
Files: src/tag.c
*** ../vim-7.4.016/src/tag.c 2013-06-15 22:26:26.000000000 +0200
--- src/tag.c 2013-09-05 12:03:38.000000000 +0200
***************
*** 1797,1809 ****
*/
if (state == TS_START)
{
! /* The header ends when the line sorts below "!_TAG_".
! * There may be non-header items before the header though,
! * e.g. "!" itself. When case is folded lower case letters
! * sort before "_". */
if (STRNCMP(lbuf, "!_TAG_", 6) <= 0
|| (lbuf[0] == '!' && ASCII_ISLOWER(lbuf[1])))
{
/*
* Read header line.
*/
--- 1797,1812 ----
*/
if (state == TS_START)
{
! /* The header ends when the line sorts below "!_TAG_". When
! * case is folded lower case letters sort before "_". */
if (STRNCMP(lbuf, "!_TAG_", 6) <= 0
|| (lbuf[0] == '!' && ASCII_ISLOWER(lbuf[1])))
{
+ if (STRNCMP(lbuf, "!_TAG_", 6) != 0)
+ /* Non-header item before the header, e.g. "!" itself.
+ */
+ goto parse_line;
+
/*
* Read header line.
*/
***************
*** 1898,1903 ****
--- 1901,1907 ----
#endif
}
+ parse_line:
/*
* Figure out where the different strings are in this line.
* For "normal" tags: Do a quick check if the tag matches.
*** ../vim-7.4.016/src/version.c 2013-08-30 17:29:10.000000000 +0200
--- src/version.c 2013-09-05 12:02:01.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 17,
/**/
--
An error has occurred. Hit any user to continue.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,45 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.018
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.018
Problem: When completing item becomes unselected. (Shougo Matsu)
Solution: Revert patch 7.3.1269.
Files: src/edit.c
*** ../vim-7.4.017/src/edit.c 2013-07-04 20:22:25.000000000 +0200
--- src/edit.c 2013-09-05 12:39:53.000000000 +0200
***************
*** 3467,3473 ****
}
compl_enter_selects = !compl_used_match;
- compl_shown_match = compl_curr_match = compl_first_match;
/* Show the popup menu with a different set of matches. */
ins_compl_show_pum();
--- 3467,3472 ----
*** ../vim-7.4.017/src/version.c 2013-09-05 12:06:26.000000000 +0200
--- src/version.c 2013-09-05 12:40:34.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 18,
/**/
--
hundred-and-one symptoms of being an internet addict:
169. You hire a housekeeper for your home page.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,61 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.019
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.019
Problem: MS-Windows: File name completion doesn't work properly with
Chinese characters. (Yue Wu)
Solution: Take care of multi-byte characters when looking for the start of
the file name. (Ken Takata)
Files: src/edit.c
*** ../vim-7.4.018/src/edit.c 2013-09-05 12:49:48.000000000 +0200
--- src/edit.c 2013-09-05 13:45:27.000000000 +0200
***************
*** 5183,5190 ****
}
else if (ctrl_x_mode == CTRL_X_FILES)
{
! while (--startcol >= 0 && vim_isfilec(line[startcol]))
! ;
compl_col += ++startcol;
compl_length = (int)curs_col - startcol;
compl_pattern = addstar(line + compl_col, compl_length,
--- 5183,5196 ----
}
else if (ctrl_x_mode == CTRL_X_FILES)
{
! char_u *p = line + startcol;
!
! /* Go back to just before the first filename character. */
! mb_ptr_back(line, p);
! while (vim_isfilec(PTR2CHAR(p)) && p >= line)
! mb_ptr_back(line, p);
! startcol = p - line;
!
compl_col += ++startcol;
compl_length = (int)curs_col - startcol;
compl_pattern = addstar(line + compl_col, compl_length,
*** ../vim-7.4.018/src/version.c 2013-09-05 12:49:48.000000000 +0200
--- src/version.c 2013-09-05 13:41:47.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 19,
/**/
--
Very funny, Scotty. Now beam down my clothes.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,82 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.020
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.020
Problem: NFA engine matches too much with \@>. (John McGowan)
Solution: When a whole pattern match is found stop searching.
Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
*** ../vim-7.4.019/src/regexp_nfa.c 2013-08-25 17:01:36.000000000 +0200
--- src/regexp_nfa.c 2013-09-05 15:59:44.000000000 +0200
***************
*** 5322,5328 ****
log_subsexpr(m);
#endif
nfa_match = TRUE;
! break;
case NFA_START_INVISIBLE:
case NFA_START_INVISIBLE_FIRST:
--- 5322,5331 ----
log_subsexpr(m);
#endif
nfa_match = TRUE;
! /* See comment above at "goto nextchar". */
! if (nextlist->n == 0)
! clen = 0;
! goto nextchar;
case NFA_START_INVISIBLE:
case NFA_START_INVISIBLE_FIRST:
*** ../vim-7.4.019/src/testdir/test64.in 2013-08-14 13:31:03.000000000 +0200
--- src/testdir/test64.in 2013-09-05 15:35:44.000000000 +0200
***************
*** 427,432 ****
--- 427,433 ----
:""""" \@>
:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
+ :call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab'])
:" TODO: BT engine does not restore submatch after failure
:call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
:"
*** ../vim-7.4.019/src/testdir/test64.ok 2013-08-14 13:31:03.000000000 +0200
--- src/testdir/test64.ok 2013-09-05 16:03:34.000000000 +0200
***************
*** 983,988 ****
--- 983,991 ----
OK 0 - \(a*\)\@>b
OK 1 - \(a*\)\@>b
OK 2 - \(a*\)\@>b
+ OK 0 - ^\(.\{-}b\)\@>.
+ OK 1 - ^\(.\{-}b\)\@>.
+ OK 2 - ^\(.\{-}b\)\@>.
OK 0 - \(a*\)\@>a\|a\+
OK 2 - \(a*\)\@>a\|a\+
OK 0 - \_[^8-9]\+
*** ../vim-7.4.019/src/version.c 2013-09-05 13:50:49.000000000 +0200
--- src/version.c 2013-09-05 16:04:32.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 20,
/**/
--
hundred-and-one symptoms of being an internet addict:
173. You keep tracking down the email addresses of all your friends
(even childhood friends).
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,86 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.021
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.021
Problem: NFA regexp: Using \ze in one branch which doesn't match may cause
end of another branch to be wrong. (William Fugh)
Solution: Set end position if it wasn't set yet.
Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
*** ../vim-7.4.020/src/regexp_nfa.c 2013-09-05 16:05:32.000000000 +0200
--- src/regexp_nfa.c 2013-09-05 20:56:25.000000000 +0200
***************
*** 4209,4218 ****
break;
case NFA_MCLOSE:
! if (nfa_has_zend)
{
! /* Do not overwrite the position set by \ze. If no \ze
! * encountered end will be set in nfa_regtry(). */
subs = addstate(l, state->out, subs, pim, off);
break;
}
--- 4209,4219 ----
break;
case NFA_MCLOSE:
! if (nfa_has_zend && (REG_MULTI
! ? subs->norm.list.multi[0].end.lnum >= 0
! : subs->norm.list.line[0].end != NULL))
{
! /* Do not overwrite the position set by \ze. */
subs = addstate(l, state->out, subs, pim, off);
break;
}
*** ../vim-7.4.020/src/testdir/test64.in 2013-09-05 16:05:32.000000000 +0200
--- src/testdir/test64.in 2013-09-05 20:55:18.000000000 +0200
***************
*** 328,333 ****
--- 328,334 ----
:call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last'])
:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
+ :call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is [a t', ' '])
:"
:"""" Tests for \@= and \& features
:call add(tl, [2, 'abc\@=', 'abc', 'ab'])
*** ../vim-7.4.020/src/testdir/test64.ok 2013-09-05 16:05:32.000000000 +0200
--- src/testdir/test64.ok 2013-09-05 21:09:56.000000000 +0200
***************
*** 752,757 ****
--- 752,760 ----
OK 0 - \>\zs.
OK 1 - \>\zs.
OK 2 - \>\zs.
+ OK 0 - \s\+\ze\[/\|\s\zs\s\+
+ OK 1 - \s\+\ze\[/\|\s\zs\s\+
+ OK 2 - \s\+\ze\[/\|\s\zs\s\+
OK 0 - abc\@=
OK 1 - abc\@=
OK 2 - abc\@=
*** ../vim-7.4.020/src/version.c 2013-09-05 16:05:32.000000000 +0200
--- src/version.c 2013-09-05 21:11:38.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 21,
/**/
--
hundred-and-one symptoms of being an internet addict:
174. You know what a listserv is.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,148 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.022
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.022
Problem: Deadlock while exiting, because of allocating memory.
Solution: Do not use gettext() in deathtrap(). (James McCoy)
Files: src/os_unix.c, src/misc1.c
*** ../vim-7.4.021/src/os_unix.c 2013-07-03 16:32:32.000000000 +0200
--- src/os_unix.c 2013-09-05 21:40:06.000000000 +0200
***************
*** 957,964 ****
/*
* This function handles deadly signals.
! * It tries to preserve any swap file and exit properly.
* (partly from Elvis).
*/
static RETSIGTYPE
deathtrap SIGDEFARG(sigarg)
--- 957,966 ----
/*
* This function handles deadly signals.
! * It tries to preserve any swap files and exit properly.
* (partly from Elvis).
+ * NOTE: Avoid unsafe functions, such as allocating memory, they can result in
+ * a deadlock.
*/
static RETSIGTYPE
deathtrap SIGDEFARG(sigarg)
***************
*** 1090,1107 ****
}
if (entered == 2)
{
! OUT_STR(_("Vim: Double signal, exiting\n"));
out_flush();
getout(1);
}
#ifdef SIGHASARG
! sprintf((char *)IObuff, _("Vim: Caught deadly signal %s\n"),
signal_info[i].name);
#else
! sprintf((char *)IObuff, _("Vim: Caught deadly signal\n"));
#endif
! preserve_exit(); /* preserve files and exit */
#ifdef NBDEBUG
reset_signals();
--- 1092,1114 ----
}
if (entered == 2)
{
! /* No translation, it may call malloc(). */
! OUT_STR("Vim: Double signal, exiting\n");
out_flush();
getout(1);
}
+ /* No translation, it may call malloc(). */
#ifdef SIGHASARG
! sprintf((char *)IObuff, "Vim: Caught deadly signal %s\n",
signal_info[i].name);
#else
! sprintf((char *)IObuff, "Vim: Caught deadly signal\n");
#endif
!
! /* Preserve files and exit. This sets the really_exiting flag to prevent
! * calling free(). */
! preserve_exit();
#ifdef NBDEBUG
reset_signals();
*** ../vim-7.4.021/src/misc1.c 2013-08-03 17:29:33.000000000 +0200
--- src/misc1.c 2013-09-05 21:34:04.000000000 +0200
***************
*** 9174,9179 ****
--- 9174,9181 ----
/*
* Preserve files and exit.
* When called IObuff must contain a message.
+ * NOTE: This may be called from deathtrap() in a signal handler, avoid unsafe
+ * functions, such as allocating memory.
*/
void
preserve_exit()
***************
*** 9196,9202 ****
{
if (buf->b_ml.ml_mfp != NULL && buf->b_ml.ml_mfp->mf_fname != NULL)
{
! OUT_STR(_("Vim: preserving files...\n"));
screen_start(); /* don't know where cursor is now */
out_flush();
ml_sync_all(FALSE, FALSE); /* preserve all swap files */
--- 9198,9204 ----
{
if (buf->b_ml.ml_mfp != NULL && buf->b_ml.ml_mfp->mf_fname != NULL)
{
! OUT_STR("Vim: preserving files...\n");
screen_start(); /* don't know where cursor is now */
out_flush();
ml_sync_all(FALSE, FALSE); /* preserve all swap files */
***************
*** 9206,9212 ****
ml_close_all(FALSE); /* close all memfiles, without deleting */
! OUT_STR(_("Vim: Finished.\n"));
getout(1);
}
--- 9208,9214 ----
ml_close_all(FALSE); /* close all memfiles, without deleting */
! OUT_STR("Vim: Finished.\n");
getout(1);
}
*** ../vim-7.4.021/src/version.c 2013-09-05 21:15:38.000000000 +0200
--- src/version.c 2013-09-05 21:30:18.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 22,
/**/
--
hundred-and-one symptoms of being an internet addict:
175. You send yourself e-mail before you go to bed to remind you
what to do when you wake up.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -0,0 +1,53 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.4.023
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.023
Problem: Compiler warning on 64 bit windows.
Solution: Add type cast. (Mike Williams)
Files: src/edit.c
*** ../vim-7.4.022/src/edit.c 2013-09-05 13:50:49.000000000 +0200
--- src/edit.c 2013-09-06 17:32:55.000000000 +0200
***************
*** 5189,5195 ****
mb_ptr_back(line, p);
while (vim_isfilec(PTR2CHAR(p)) && p >= line)
mb_ptr_back(line, p);
! startcol = p - line;
compl_col += ++startcol;
compl_length = (int)curs_col - startcol;
--- 5189,5195 ----
mb_ptr_back(line, p);
while (vim_isfilec(PTR2CHAR(p)) && p >= line)
mb_ptr_back(line, p);
! startcol = (int)(p - line);
compl_col += ++startcol;
compl_length = (int)curs_col - startcol;
*** ../vim-7.4.022/src/version.c 2013-09-05 21:41:35.000000000 +0200
--- src/version.c 2013-09-06 17:33:41.000000000 +0200
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 23,
/**/
--
Wizards had always known that the act of observation changed the thing that
was observed, and sometimes forgot that it also changed the observer too.
Terry Pratchett - Interesting times
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

View File

@ -17,16 +17,21 @@
}:
let
version = "6.7.5-3";
version = "6.8.6-9";
in
stdenv.mkDerivation rec {
name = "ImageMagick-${version}";
src = fetchurl {
url = "mirror://imagemagick/${name}.tar.xz";
sha256 = "0m0sa4jxsvm8pf9nfvkzlbzq13d1lj15lfz6jif12l6ywyh2c1cs";
sha256 = "1bpj8676mph5cvyjsdgf27i6yg2iw9iskk5c69mvpxkyawgjw1vg";
};
preConfigure = if tetex != null then
''
export DVIDecodeDelegate=${tetex}/bin/dvips
'' else "";
configureFlags = "" + stdenv.lib.optionalString (ghostscript != null && stdenv.system != "x86_64-darwin") ''
--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts
--with-gslib
@ -41,10 +46,7 @@ stdenv.mkDerivation rec {
buildInputs = [ tetex graphviz ];
preConfigure = if tetex != null then
''
export DVIDecodeDelegate=${tetex}/bin/dvips
'' else "";
postInstall = ''(cd "$out/include" && ln -s ImageMagick* ImageMagick)'';
meta = {
homepage = http://www.imagemagick.org/;

View File

@ -4,11 +4,11 @@
}:
stdenv.mkDerivation rec {
name = "calibre-1.2.0";
name = "calibre-1.4.0";
src = fetchurl {
url = "mirror://sourceforge/calibre/${name}.tar.xz";
sha256 = "0h6afn57pw3rb03ffbnss774gdx7ldirr43hbhzsc2k2h7lxnzyj";
sha256 = "0hszxjyvw75b75pzr8w5xfgchx3ksw7ziwa3skrjdj500bypmy3y";
};
inherit python;

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, libjpeg, libtiff, librsvg }:
{ stdenv, fetchurl, libjpeg, libtiff, librsvg, libintlOrEmpty }:
stdenv.mkDerivation rec {
name = "djvulibre-3.5.25.3";
@ -8,7 +8,9 @@ stdenv.mkDerivation rec {
sha256 = "1q5i5ha4zmj2ahjfhi8cv1rah80vm43m9ads46ji38rgvpb7x3c9";
};
buildInputs = [ libjpeg libtiff librsvg ];
buildInputs = [ libjpeg libtiff librsvg ] ++ libintlOrEmpty;
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lintl";
meta = {
description = "A library and viewer for the DJVU file format for scanned images";

View File

@ -1,24 +1,19 @@
{ stdenv, fetchsvn, pkgconfig, gtk, SDL, fontconfig, freetype, imlib2, SDL_image, mesa,
libXmu, freeglut, python, gettext, quesoglc, gd, postgresql, autoconf, automake, libtool, cvs }:
libXmu, freeglut, python, gettext, quesoglc, gd, postgresql, cmake, qt4, SDL_ttf, fribidi}:
stdenv.mkDerivation rec {
name = "navit-svn-3537";
src = fetchsvn {
url = https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit;
rev = 3537;
sha256 = "1ajd439i7z8xm16kqh20qalvafy9miyy4accc8j7w30c4qgc2bb7";
url = svn://svn.code.sf.net/p/navit/code/trunk/navit;
rev = 5576;
sha256 = "1xx62l5srfhh9cfi7n3pxj8hpcgr1rpa0hzfmbrqadzv09z36723";
};
# 'cvs' is only for the autogen
buildInputs = [ pkgconfig gtk SDL fontconfig freetype imlib2 SDL_image mesa
libXmu freeglut python gettext quesoglc gd postgresql
autoconf automake libtool cvs ];
libXmu freeglut python gettext quesoglc gd postgresql cmake qt4 SDL_ttf fribidi ];
preConfigure = ''
sh ./autogen.sh
'';
configureFlags = [ "--disable-samplemap" ];
cmakeFlags = [ "-DSAMPLE_MAP=n" ];
meta = {
homepage = http://www.navit-project.org/;

View File

@ -90,7 +90,9 @@ let
# user namespace sandbox patch
userns_patch = if versionOlder sourceInfo.version "30.0.0.0"
then ./sandbox_userns_29.patch
else ./sandbox_userns_30.patch;
else if versionOlder sourceInfo.version "31.0.0.0"
then ./sandbox_userns_30.patch
else ./sandbox_userns_31.patch;
in stdenv.mkDerivation rec {
name = "${packageName}-${version}";

View File

@ -0,0 +1,297 @@
commit ff4e8b4af04c58fc4c58ee7ed108aefcdc26a960
Author: aszlig <aszlig@redmoonstudios.org>
Date: Thu May 16 14:17:56 2013 +0200
zygote: Add support for user namespaces on Linux.
The implementation is done by patching the Zygote host to execute the sandbox
binary with CLONE_NEWUSER and setting the uid and gid mapping so that the child
process is using uid 0 and gid 0 which map to the current user of the parent.
Afterwards, the sandbox will continue as if it was called as a setuid binary.
In addition, this adds new_user_namespace as an option in process_util in order
to set the UID and GID mapping correctly. The reason for this is that just
passing CLONE_NEWUSER to clone_flags doesn't help in LaunchProcess(), because
without setting the mappings exec*() will clear the process's capability sets.
If the kernel doesn't support unprivileged user namespaces and the sandbox
binary doesn't have the setuid flag, the Zygote main process will run without a
sandbox. This is to mimic the behaviour if no SUID sandbox binary path is set.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
diff --git a/base/process/launch.cc b/base/process/launch.cc
index 1329a5a..ec28fdf 100644
--- a/base/process/launch.cc
+++ b/base/process/launch.cc
@@ -24,6 +24,7 @@ LaunchOptions::LaunchOptions()
new_process_group(false)
#if defined(OS_LINUX)
, clone_flags(0)
+ , new_user_namespace(false)
#endif // OS_LINUX
#if defined(OS_CHROMEOS)
, ctrl_terminal_fd(-1)
diff --git a/base/process/launch.h b/base/process/launch.h
index ac2df5e..34a3851 100644
--- a/base/process/launch.h
+++ b/base/process/launch.h
@@ -100,6 +100,9 @@ struct BASE_EXPORT LaunchOptions {
#if defined(OS_LINUX)
// If non-zero, start the process using clone(), using flags as provided.
int clone_flags;
+
+ // If true, start the process in a new user namespace.
+ bool new_user_namespace;
#endif // defined(OS_LINUX)
#if defined(OS_CHROMEOS)
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc
index de6286d..9333494 100644
--- a/base/process/launch_posix.cc
+++ b/base/process/launch_posix.cc
@@ -37,6 +37,13 @@
#include "base/threading/platform_thread.h"
#include "base/threading/thread_restrictions.h"
+#if defined(OS_LINUX)
+#include <sched.h>
+#if !defined(CLONE_NEWUSER)
+#define CLONE_NEWUSER 0x10000000
+#endif
+#endif
+
#if defined(OS_CHROMEOS)
#include <sys/ioctl.h>
#endif
@@ -294,13 +301,23 @@ bool LaunchProcess(const std::vector<std::string>& argv,
pid_t pid;
#if defined(OS_LINUX)
- if (options.clone_flags) {
+ int map_pipe_fd[2];
+ int flags = options.clone_flags;
+
+ if (options.new_user_namespace) {
+ flags |= CLONE_NEWUSER;
+ if (pipe(map_pipe_fd) < 0) {
+ DPLOG(ERROR) << "user namespace pipe";
+ return false;
+ }
+ }
+
+ if (options.clone_flags || options.new_user_namespace) {
// Signal handling in this function assumes the creation of a new
// process, so we check that a thread is not being created by mistake
// and that signal handling follows the process-creation rules.
- RAW_CHECK(
- !(options.clone_flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
- pid = syscall(__NR_clone, options.clone_flags, 0, 0, 0);
+ RAW_CHECK(!(flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
+ pid = syscall(__NR_clone, flags, 0, 0, 0);
} else
#endif
{
@@ -318,6 +335,21 @@ bool LaunchProcess(const std::vector<std::string>& argv,
} else if (pid == 0) {
// Child process
+#if defined(OS_LINUX)
+ if (options.new_user_namespace) {
+ // Close the write end of the pipe so we get an EOF when the parent closes
+ // the FD. This is to avoid race conditions when the UID/GID mappings are
+ // written _after_ execvp().
+ close(map_pipe_fd[1]);
+
+ char dummy;
+ if (HANDLE_EINTR(read(map_pipe_fd[0], &dummy, 1)) != 0) {
+ RAW_LOG(ERROR, "Unexpected input in uid/gid mapping pipe.");
+ _exit(127);
+ }
+ }
+#endif
+
// DANGER: fork() rule: in the child, if you don't end up doing exec*(),
// you call _exit() instead of exit(). This is because _exit() does not
// call any previously-registered (in the parent) exit handlers, which
@@ -433,6 +465,40 @@ bool LaunchProcess(const std::vector<std::string>& argv,
_exit(127);
} else {
// Parent process
+#if defined(OS_LINUX)
+ if (options.new_user_namespace) {
+ // We need to write UID/GID mapping here to map the current user outside
+ // the namespace to the root user inside the namespace in order to
+ // correctly "fool" the child process.
+ char buf[256];
+ int map_fd, map_len;
+
+ snprintf(buf, sizeof(buf), "/proc/%d/uid_map", pid);
+ map_fd = open(buf, O_RDWR);
+ DPCHECK(map_fd >= 0);
+ snprintf(buf, sizeof(buf), "0 %d 1", geteuid());
+ map_len = strlen(buf);
+ if (write(map_fd, buf, map_len) != map_len) {
+ RAW_LOG(WARNING, "Can't write to uid_map.");
+ }
+ close(map_fd);
+
+ snprintf(buf, sizeof(buf), "/proc/%d/gid_map", pid);
+ map_fd = open(buf, O_RDWR);
+ DPCHECK(map_fd >= 0);
+ snprintf(buf, sizeof(buf), "0 %d 1", getegid());
+ map_len = strlen(buf);
+ if (write(map_fd, buf, map_len) != map_len) {
+ RAW_LOG(WARNING, "Can't write to gid_map.");
+ }
+ close(map_fd);
+
+ // Close the pipe on the parent, so the child can continue doing the
+ // execvp() call.
+ close(map_pipe_fd[1]);
+ }
+#endif
+
if (options.wait) {
// While this isn't strictly disk IO, waiting for another process to
// finish is the sort of thing ThreadRestrictions is trying to prevent.
diff --git a/content/browser/zygote_host/zygote_host_impl_linux.cc b/content/browser/zygote_host/zygote_host_impl_linux.cc
index fea43b5..95cbe07 100644
--- a/content/browser/zygote_host/zygote_host_impl_linux.cc
+++ b/content/browser/zygote_host/zygote_host_impl_linux.cc
@@ -121,25 +121,31 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
sandbox_binary_ = sandbox_cmd.c_str();
- // A non empty sandbox_cmd means we want a SUID sandbox.
- using_suid_sandbox_ = !sandbox_cmd.empty();
+ bool userns_sandbox = false;
+ const std::vector<std::string> cmd_line_unwrapped(cmd_line.argv());
- if (using_suid_sandbox_) {
+ if (!sandbox_cmd.empty()) {
struct stat st;
if (stat(sandbox_binary_.c_str(), &st) != 0) {
LOG(FATAL) << "The SUID sandbox helper binary is missing: "
<< sandbox_binary_ << " Aborting now.";
}
- if (access(sandbox_binary_.c_str(), X_OK) == 0 &&
- (st.st_uid == 0) &&
- (st.st_mode & S_ISUID) &&
- (st.st_mode & S_IXOTH)) {
+ if (access(sandbox_binary_.c_str(), X_OK) == 0) {
+ using_suid_sandbox_ = true;
+
cmd_line.PrependWrapper(sandbox_binary_);
scoped_ptr<sandbox::SetuidSandboxClient>
sandbox_client(sandbox::SetuidSandboxClient::Create());
sandbox_client->SetupLaunchEnvironment();
+
+ if (!((st.st_uid == 0) &&
+ (st.st_mode & S_ISUID) &&
+ (st.st_mode & S_IXOTH))) {
+ userns_sandbox = true;
+ sandbox_client->SetNoSuid();
+ }
} else {
LOG(FATAL) << "The SUID sandbox helper binary was found, but is not "
"configured correctly. Rather than run without sandboxing "
@@ -163,7 +169,19 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
base::ProcessHandle process = -1;
base::LaunchOptions options;
options.fds_to_remap = &fds_to_map;
+ if (userns_sandbox)
+ options.new_user_namespace = true;
base::LaunchProcess(cmd_line.argv(), options, &process);
+
+ if (process == -1 && userns_sandbox) {
+ LOG(ERROR) << "User namespace sandbox failed to start, running without "
+ << "sandbox! You need at least kernel 3.8.0 with CONFIG_USER_NS "
+ << "enabled in order to use the sandbox without setuid bit.";
+ using_suid_sandbox_ = false;
+ options.new_user_namespace = false;
+ base::LaunchProcess(cmd_line_unwrapped, options, &process);
+ }
+
CHECK(process != -1) << "Failed to launch zygote process";
if (using_suid_sandbox_) {
diff --git a/content/zygote/zygote_main_linux.cc b/content/zygote/zygote_main_linux.cc
index 567b305..1089233 100644
--- a/content/zygote/zygote_main_linux.cc
+++ b/content/zygote/zygote_main_linux.cc
@@ -426,6 +426,13 @@ static bool EnterSuidSandbox(LinuxSandbox* linux_sandbox,
*has_started_new_init = true;
}
+ // Don't set non-dumpable, as it causes trouble when the host tries to find
+ // the zygote process (XXX: Not quite sure why this happens with user
+ // namespaces). Fortunately, we also have the seccomp filter sandbox which
+ // should disallow the use of ptrace.
+ if (setuid_sandbox->IsNoSuid())
+ return true;
+
#if !defined(OS_OPENBSD)
// Previously, we required that the binary be non-readable. This causes the
// kernel to mark the process as non-dumpable at startup. The thinking was
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.cc b/sandbox/linux/suid/client/setuid_sandbox_client.cc
index 34231d4..36e3201 100644
--- a/sandbox/linux/suid/client/setuid_sandbox_client.cc
+++ b/sandbox/linux/suid/client/setuid_sandbox_client.cc
@@ -166,6 +166,10 @@ bool SetuidSandboxClient::IsInNewNETNamespace() const {
return env_->HasVar(kSandboxNETNSEnvironmentVarName);
}
+bool SetuidSandboxClient::IsNoSuid() const {
+ return env_->HasVar(kSandboxNoSuidVarName);
+}
+
bool SetuidSandboxClient::IsSandboxed() const {
return sandboxed_;
}
@@ -175,5 +179,9 @@ void SetuidSandboxClient::SetupLaunchEnvironment() {
SetSandboxAPIEnvironmentVariable(env_);
}
+void SetuidSandboxClient::SetNoSuid() {
+ env_->SetVar(kSandboxNoSuidVarName, "1");
+}
+
} // namespace sandbox
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.h b/sandbox/linux/suid/client/setuid_sandbox_client.h
index a9f6536..2e8113a 100644
--- a/sandbox/linux/suid/client/setuid_sandbox_client.h
+++ b/sandbox/linux/suid/client/setuid_sandbox_client.h
@@ -39,6 +39,8 @@ class SetuidSandboxClient {
bool IsInNewPIDNamespace() const;
// Did the setuid helper create a new network namespace ?
bool IsInNewNETNamespace() const;
+ // Is sandboxed without SUID binary ?
+ bool IsNoSuid() const;
// Are we done and fully sandboxed ?
bool IsSandboxed() const;
@@ -46,6 +48,8 @@ class SetuidSandboxClient {
// helper.
void SetupLaunchEnvironment();
+ void SetNoSuid();
+
private:
// Holds the environment. Will never be NULL.
base::Environment* env_;
diff --git a/sandbox/linux/suid/common/sandbox.h b/sandbox/linux/suid/common/sandbox.h
index aad4ff8..bd710d5 100644
--- a/sandbox/linux/suid/common/sandbox.h
+++ b/sandbox/linux/suid/common/sandbox.h
@@ -18,6 +18,7 @@ static const char kAdjustLowMemMarginSwitch[] = "--adjust-low-mem";
static const char kSandboxDescriptorEnvironmentVarName[] = "SBX_D";
static const char kSandboxHelperPidEnvironmentVarName[] = "SBX_HELPER_PID";
+static const char kSandboxNoSuidVarName[] = "SBX_NO_SUID";
static const long kSUIDSandboxApiNumber = 1;
static const char kSandboxEnvironmentApiRequest[] = "SBX_CHROME_API_RQ";

View File

@ -1,14 +1,14 @@
# This file is autogenerated from update.sh in the same directory.
{
dev = {
version = "31.0.1612.0";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-31.0.1612.0.tar.xz";
sha256 = "19h6i8jdnpzbvyq8pk9jq89lghnydpij9yj8xfs7qdgqgyxxcl5w";
version = "31.0.1626.0";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-31.0.1626.0.tar.xz";
sha256 = "15rbh8hjs9ipkl4c34701p1zpfmrsw6dya03a8ym5pa5dha949mp";
};
beta = {
version = "30.0.1599.22";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-30.0.1599.22.tar.xz";
sha256 = "0955q7fz6nfr7nbxa8hp9q7mgljlan42rjg8ql5x2vn6c80sjji8";
version = "30.0.1599.37";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-30.0.1599.37.tar.xz";
sha256 = "05xxafl1dgbi040zmhzi5v5m6myi7c6jgq2nrksmrx2i91kfir2k";
};
stable = {
version = "29.0.1547.65";

View File

@ -3,8 +3,7 @@
, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
, yasm, mesa, sqlite, unzip, makeWrapper, pysqlite
, hunspell, libevent, libstartup_notification, libvpx
, cairo ? null
, useSystemCairo ? false
, cairo, gstreamer, gst_plugins_base
, # If you want the resulting program to call itself "Firefox" instead
# of "Shiretoko" or whatever, enable this option. However, those
# binaries may not be distributed without permission from the
@ -14,14 +13,13 @@
}:
assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
assert useSystemCairo -> cairo != null;
let optional = stdenv.lib.optional;
in rec {
firefoxVersion = "23.0.1";
firefoxVersion = "24.0";
xulVersion = "23.0.1"; # this attribute is used by other packages
xulVersion = "24.0"; # this attribute is used by other packages
src = fetchurl {
@ -31,7 +29,7 @@ in rec {
# Fall back to this url for versions not available at releases.mozilla.org.
"ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2"
];
sha1 = "66361fcvyl9liyh41gvgysiim90wsywk";
sha1 = "8scch0gr59j86vp9c1v0yx6mq1pkwcvg";
};
commonConfigureFlags =
@ -52,12 +50,13 @@ in rec {
"--enable-system-hunspell"
"--enable-system-pixman"
"--enable-system-sqlite"
"--enable-system-cairo"
"--disable-crashreporter"
"--disable-tests"
"--disable-necko-wifi" # maybe we want to enable this at some point
"--disable-installer"
"--disable-updater"
] ++ optional useSystemCairo "--enable-system-cairo";
];
xulrunner = stdenv.mkDerivation rec {
@ -72,8 +71,9 @@ in rec {
alsaLib nspr nss libnotify xlibs.pixman yasm mesa
xlibs.libXScrnSaver xlibs.scrnsaverproto pysqlite
xlibs.libXext xlibs.xextproto sqlite unzip makeWrapper
hunspell libevent libstartup_notification libvpx
] ++ optional useSystemCairo cairo;
hunspell libevent libstartup_notification libvpx cairo
gstreamer gst_plugins_base
];
configureFlags =
[ "--enable-application=xulrunner"
@ -82,8 +82,6 @@ in rec {
enableParallelBuilding = true;
patches = optional useSystemCairo ./system-cairo.patch;
preConfigure =
''
export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib/xulrunner-${xulVersion}"
@ -139,8 +137,9 @@ in rec {
[ pkgconfig libpng gtk perl zip libIDL libjpeg zlib bzip2 python
dbus dbus_glib pango freetype fontconfig alsaLib nspr nss libnotify
xlibs.pixman yasm mesa sqlite file unzip pysqlite
hunspell libevent libstartup_notification libvpx
] ++ optional useSystemCairo cairo;
hunspell libevent libstartup_notification libvpx cairo
gstreamer gst_plugins_base
];
patches = [
./disable-reporter.patch # fixes "search box not working when built on xulrunner"

View File

@ -1,73 +0,0 @@
# HG changeset patch
# From: https://hg.mozilla.org/mozilla-central/rev/52b02042b27f
# User Connor Behan <connor.behan@gmail.com>
# Date 1370038985 -7200
# Node ID 52b02042b27f75acbcb2bd4822bedb00ab680e67
# Parent 08ed531fed70978385cf9253bbc8389b0abe76ca
Bug 722975: Unbreak builds using --with-system-cairo. r=bas
diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
--- a/gfx/thebes/gfxPlatform.cpp
+++ b/gfx/thebes/gfxPlatform.cpp
@@ -548,23 +548,31 @@ struct SourceSurfaceUserData
BackendType mBackendType;
};
void SourceBufferDestroy(void *srcSurfUD)
{
delete static_cast<SourceSurfaceUserData*>(srcSurfUD);
}
+#if MOZ_TREE_CAIRO
void SourceSnapshotDetached(cairo_surface_t *nullSurf)
{
gfxImageSurface* origSurf =
static_cast<gfxImageSurface*>(cairo_surface_get_user_data(nullSurf, &kSourceSurface));
origSurf->SetData(&kSourceSurface, NULL, NULL);
}
+#else
+void SourceSnapshotDetached(void *nullSurf)
+{
+ gfxImageSurface* origSurf = static_cast<gfxImageSurface*>(nullSurf);
+ origSurf->SetData(&kSourceSurface, NULL, NULL);
+}
+#endif
RefPtr<SourceSurface>
gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurface)
{
void *userData = aSurface->GetData(&kSourceSurface);
if (userData) {
SourceSurfaceUserData *surf = static_cast<SourceSurfaceUserData*>(userData);
@@ -667,24 +675,28 @@ gfxPlatform::GetSourceSurfaceForSurface(
}
srcBuffer = Factory::CreateWrappingDataSourceSurface(imgSurface->Data(),
imgSurface->Stride(),
size, format);
}
+#if MOZ_TREE_CAIRO
cairo_surface_t *nullSurf =
cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA);
cairo_surface_set_user_data(nullSurf,
&kSourceSurface,
imgSurface,
NULL);
cairo_surface_attach_snapshot(imgSurface->CairoSurface(), nullSurf, SourceSnapshotDetached);
cairo_surface_destroy(nullSurf);
+#else
+ cairo_surface_set_mime_data(imgSurface->CairoSurface(), "mozilla/magic", (const unsigned char*) "data", 4, SourceSnapshotDetached, imgSurface.get());
+#endif
}
SourceSurfaceUserData *srcSurfUD = new SourceSurfaceUserData;
srcSurfUD->mBackendType = aTarget->GetType();
srcSurfUD->mSrcSurface = srcBuffer;
aSurface->SetData(&kSourceSurface, srcSurfUD, SourceBufferDestroy);
return srcBuffer;

View File

@ -11,11 +11,11 @@ let
in with stdenv; mkDerivation rec {
name = "quassel-0.7.4";
name = "quassel-0.9.0";
src = fetchurl {
url = "http://quassel-irc.org/pub/${name}.tar.bz2";
sha256 = "08f4m35bkmp9p1n560a3fg711s9izb25ddx2az03xzf1jl8qdrg7";
sha256 = "09v0igjkzan3hllk47w39hkav6v1419vpxn2lfd8473kwdmf0grf";
};
buildInputs = [ cmake qt4 ]
@ -48,6 +48,7 @@ in with stdenv; mkDerivation rec {
'';
license = "GPLv3";
maintainers = [ maintainers.phreedom ];
repositories.git = https://github.com/quassel/quassel.git;
inherit (qt4.meta) platforms;
};
}

View File

@ -0,0 +1,23 @@
{ stdenv, fetchurl, imake, zlib, openjdk, libX11, libXt, libXmu, libXaw, libXext, libXpm, openjpeg, openssl }:
let version = "1.0.29"; in
stdenv.mkDerivation rec {
name = "ssvnc-${version}";
src = fetchurl {
url = "mirror://sourceforge/ssvnc/${name}.src.tar.gz";
sha256 = "74df32eb8eaa68b07c9693a232ebe42154617c7f3cbe1d4e68d3fe7c557d618d";
};
buildInputs = [ imake zlib openjdk libX11 libXt libXmu libXaw libXext libXpm openjpeg openssl ];
configurePhase = "makeFlags=PREFIX=$out";
meta = {
description = "VNC viewer that adds encryption security to VNC connections";
homepage = "http://www.karlrunge.com/x11vnc/ssvnc.html";
license = "GPLv2";
maintainers = [ stdenv.lib.maintainers.edwtjo ];
platforms = with stdenv.lib.platforms; linux;
};
}

View File

@ -15,7 +15,7 @@
, libwpg, dbus_glib, glibc, qt4, kde4, clucene_core, libcdr, lcms, vigra
, unixODBC, mdds, saneBackends, mythes, libexttextcat, libvisio
, fontsConf, pkgconfig, libzip, bluez5, libtool, maven
, langs ? [ "ALL" ]
, langs ? [ "en-US" "en-GB" "ca" "ru" "eo" "fr" "nl" "de" "sl" ]
}:
let
@ -160,6 +160,7 @@ stdenv.mkDerivation rec {
configureFlagsArray=(
"--with-parallelism=$NIX_BUILD_CORES"
"--with-lang=${langsSpaces}"
);
'';
@ -192,13 +193,12 @@ stdenv.mkDerivation rec {
ln -s $out/lib/libreoffice/share/xdg $out/share/applications
for f in $out/share/applications/*.desktop; do
substituteInPlace "$f" --replace "Exec=libreoffice4.0" "$out/bin/soffice"
substituteInPlace "$f" --replace "Exec=libreoffice" "$out/bin/soffice"
substituteInPlace "$f" --replace "Exec=libreoffice4.0" "Exec=$out/bin/soffice"
substituteInPlace "$f" --replace "Exec=libreoffice" "Exec=$out/bin/soffice"
done
'';
configureFlags = [
"--with-lang=${langsSpaces}"
"--with-vender=NixOS"
# Without these, configure does not finish

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, SDL, SDL_ttf, SDL_image, mesa, lua5_1, automake, autoconf }:
{ stdenv, fetchurl, SDL, SDL_ttf, SDL_image, mesa, libpng, lua5, automake, autoconf }:
stdenv.mkDerivation rec {
name = "gravit-0.5.0";
@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
sha256 = "0lyw0skrkb04s16vgz7ggswjrdxk1h23v5s85s09gjxzjp1xd3xp";
};
buildInputs = [mesa SDL SDL_ttf SDL_image lua5_1 automake autoconf];
buildInputs = [mesa SDL SDL_ttf SDL_image lua5 automake autoconf libpng];
preConfigure = "sh autogen.sh";

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl, zlib, unzip }:
stdenv.mkDerivation {
name = "plink-1.07";
src = fetchurl {
url = "http://pngu.mgh.harvard.edu/~purcell/plink/dist/plink-1.07-src.zip";
sha256 = "4af56348443d0c6a1db64950a071b1fcb49cc74154875a7b43cccb4b6a7f482b";
};
buildInputs = [ zlib unzip ] ;
installPhase = ''
mkdir -p $out/bin
cp plink $out/bin
'';
meta = {
description = "Whole genome association toolkit";
homepage = "http://pngu.mgh.harvard.edu/~purcell/plink/";
license = "GNUv2";
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -0,0 +1,126 @@
{ stdenv
, coreutils
, patchelf
, requireFile
, alsaLib
, fontconfig
, freetype
, gcc
, glib
, libpng
, ncurses
, opencv
, openssl
, unixODBC
, xlibs
, zlib
}:
let
platform =
if stdenv.system == "i686-linux" then
"Linux"
else if stdenv.system == "x86_64-linux" then
"Linux-x86-64"
else
abort "Mathematica requires i686-linux or x86_64 linux";
in
stdenv.mkDerivation rec {
name = "mathematica-9.0.0";
src = requireFile rec {
name = "Mathematica_9.0.0_LINUX.sh";
message = ''
This nix expression requires that Mathematica_9.0.0_LINUX.sh is
already part of the store. Find the file on your Mathematica CD
and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
'';
sha256 = "106zfaplhwcfdl9rdgs25x83xra9zcny94gb22wncbfxvrsk3a4q";
};
buildInputs = [
coreutils
patchelf
alsaLib
coreutils
fontconfig
freetype
gcc.gcc
gcc.libc
glib
ncurses
opencv
openssl
unixODBC
] ++ (with xlibs; [
libX11
libXext
libXtst
libXi
libXmu
libXrender
libxcb
]);
ldpath = stdenv.lib.makeLibraryPath buildInputs
+ stdenv.lib.optionalString (stdenv.system == "x86_64-linux")
(":" + stdenv.lib.makeSearchPath "lib64" buildInputs);
phases = "unpackPhase installPhase fixupPhase";
unpackPhase = ''
echo "=== Extracting makeself archive ==="
# find offset from file
offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
dd if="$src" ibs=$offset skip=1 | tar -xf -
cd Unix
'';
installPhase = ''
cd Installer
# don't restrict PATH, that has already been done
sed -i -e 's/^PATH=/# PATH=/' MathInstaller
echo "=== Running MathInstaller ==="
./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -platforms=${platform} -silent
'';
preFixup = ''
echo "=== PatchElfing away ==="
find $out/libexec/Mathematica/SystemFiles -type f -perm +100 | while read f; do
type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
if [ -z "$type" ]; then
:
elif [ "$type" == "EXEC" ]; then
echo "patching $f executable <<"
patchelf \
--set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
--set-rpath "${ldpath}" \
"$f"
patchelf --shrink-rpath "$f"
elif [ "$type" == "DYN" ]; then
echo "patching $f library <<"
patchelf \
--set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
"$f" \
&& patchelf --shrink-rpath "$f" \
|| echo unable to patch ... ignoring 1>&2
else
echo "not patching $f <<: unknown elf type"
fi
done
'';
# all binaries are already stripped
dontStrip = true;
# we did this in prefixup already
dontPatchELF = true;
meta = {
description = "Wolfram Mathematica computational software system";
homepage = "http://www.wolfram.com/mathematica/";
license = "unfree";
};
}

View File

@ -51,6 +51,8 @@ cabal.mkDerivation (self: {
'';
patches = [ (fetchurl { url = "https://github.com/joeyh/git-annex/commit/e4d0b2f180627472b017af8bcfc2ae3fc04d6767.patch";
sha256 = "08lz0zq5y3b3wgi1vbzka7kyihkhzjv02pmq8ab02674yrqrnr5k"; })
(fetchurl { url = "https://github.com/joeyh/git-annex/commit/26baae8967d55d0793d0609475a75d265bdd64a3.patch";
sha256 = "0yzgj55jjcqv1975bnj4wafyh4vdzjjn4ajx3wahsyg0gsrm5lpv"; })
];
meta = {
homepage = "http://git-annex.branchable.com/";

View File

@ -1,4 +1,5 @@
{ stdenv, fetchurl, freetype, pkgconfig, yasm, freefont_ttf
{ stdenv, fetchurl, pkgconfig, freetype, yasm
, fontconfigSupport ? true, fontconfig ? null, freefont_ttf ? null
, x11Support ? true, libX11 ? null, libXext ? null, mesa ? null
, xineramaSupport ? true, libXinerama ? null
, xvSupport ? true, libXv ? null
@ -22,6 +23,8 @@
, useUnfreeCodecs ? false
}:
assert fontconfigSupport -> (fontconfig != null);
assert (!fontconfigSupport) -> (freefont_ttf != null);
assert x11Support -> (libX11 != null && libXext != null && mesa != null);
assert xineramaSupport -> (libXinerama != null && x11Support);
assert xvSupport -> (libXv != null && x11Support);
@ -95,7 +98,8 @@ stdenv.mkDerivation rec {
'';
buildInputs = with stdenv.lib;
[ freetype pkgconfig ]
[ pkgconfig freetype ]
++ optional fontconfigSupport fontconfig
++ optionals x11Support [ libX11 libXext mesa ]
++ optional alsaSupport alsaLib
++ optional xvSupport libXv
@ -125,6 +129,8 @@ stdenv.mkDerivation rec {
configureFlags = with stdenv.lib;
''
--enable-freetype
${if fontconfigSupport then "--enable-fontconfig" else "--disable-fontconfig"}
${if x11Support then "--enable-x11 --enable-gl" else "--disable-x11 --disable-gl"}
${if xineramaSupport then "--enable-xinerama" else "--disable-xinerama"}
${if xvSupport then "--enable-xv" else "--disable-xv"}
@ -144,7 +150,6 @@ stdenv.mkDerivation rec {
${if pulseSupport then "--enable-pulse" else "--disable-pulse"}
${optionalString (useUnfreeCodecs && codecs != null) "--codecsdir=${codecs}"}
${optionalString (stdenv.isi686 || stdenv.isx86_64) "--enable-runtime-cpudetection"}
--enable-freetype
--disable-xanim
--disable-ivtv
--disable-xvid --disable-xvid-lavc
@ -153,14 +158,17 @@ stdenv.mkDerivation rec {
--disable-ossaudio
'';
NIX_LDFLAGS = stdenv.lib.optionalString x11Support "-lX11 -lXext";
NIX_LDFLAGS = with stdenv.lib;
optional fontconfigSupport "-lfontconfig"
++ optionals x11Support [ "-lX11" "-lXext" ]
;
installTargets = [ "install" ] ++ stdenv.lib.optional x11Support "install-gui";
enableParallelBuilding = true;
# Provide a reasonable standard font. Maybe we should symlink here.
postInstall =
# Provide a reasonable standard font when not using fontconfig. Maybe we should symlink here.
postInstall = stdenv.lib.optionalString (!fontconfigSupport)
''
mkdir -p $out/share/mplayer
cp ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mplayer/subfont.ttf

View File

@ -9,12 +9,12 @@
}:
stdenv.mkDerivation rec {
name = "vlc-${version}";
name = "vlc-${version}a";
version = "2.0.8";
src = fetchurl {
url = "http://download.videolan.org/pub/videolan/vlc/${version}/${name}.tar.xz";
sha256 = "00hpbm0v424yhfzqyxrvrvfjkbvf3f43yqk6h1qhwmnl8n1z4am0";
sha256 = "1lilj14il52731h7qvrjcss0zivghcxv8jmmxf23qwl7qhs5y885";
};
buildInputs =

View File

@ -1,6 +1,6 @@
x@{builderDefsPackage
, gnome, gtk, glib, libxml2, pkgconfig, libvirt, gtkvnc, cyrus_sasl, libtasn1
, gnupg, libgcrypt, perl, nettle, yajl
, gnupg, libgcrypt, perl, nettle, yajl, libcap_ng
, ...}:
builderDefsPackage
(a :

View File

@ -11,7 +11,7 @@ with stdenv.lib;
let
version = "4.2.16"; # changes ./guest-additions as well
version = "4.2.18"; # changes ./guest-additions as well
forEachModule = action: ''
for mod in \
@ -31,13 +31,13 @@ let
'';
# See https://github.com/NixOS/nixpkgs/issues/672 for details
extpackRevision = "86992";
extpackRevision = "88780";
extensionPack = requireFile rec {
name = "Oracle_VM_VirtualBox_Extension_Pack-${version}-${extpackRevision}.vbox-extpack";
# IMPORTANT: Hash must be base16 encoded because it's used as an input to
# VBoxExtPackHelperApp!
# Tip: nix-hash --type sha256 --to-base16 "hash from nix-prefetch-url"
sha256 = "8f88b1ebe69b770103e9151bebf6681c5e049eb5fac45ae8d52c43440aa0fa0d";
# Tip: see http://dlc.sun.com.edgesuite.net/virtualbox/4.2.18/SHA256SUMS
sha256 = "1d1737b59d0f30f5d42beeabaff168bdc0a75b8b28df685979be6173e5adbbba";
message = ''
In order to use the extension pack, you need to comply with the VirtualBox Personal Use
and Evaluation License (PUEL) by downloading the related binaries from:
@ -56,7 +56,7 @@ in stdenv.mkDerivation {
src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
sha256 = "0nnl8qh8j4sk5zn78hrp6ccidmk332p7qg6pv5a0a4irs0b8j3zz";
sha256 = "9dbddf393b029c549249f627d12040c1d257972bc09292969b8819a31ab78d74";
};
buildInputs =

View File

@ -12,7 +12,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
sha256 = "1id0rb2sdnn34rvjl2v3hp3z9g9c4s4f4kl1lx0myjlqv8i0fayg";
sha256 = "f11a7f13dfe7bf9f246fb877144bb467fe6deadcd876568ec79b6ccd3b59d767";
};
KERN_DIR = "${kernelDev}/lib/modules/*/build";

View File

@ -1,8 +1,5 @@
{stdenv, fetchurl, pkgconfig, libxml2, gtk, intltool, GConf, libsoup, libtasn1, nettle, gmp}:
#Is this really necessary?
assert stdenv ? glibc;
stdenv.mkDerivation rec {
name = "libgweather-2.30.3";
src = fetchurl {

View File

@ -11,4 +11,6 @@ stdenv.mkDerivation {
buildInputs = [ pkgconfig gtk python gettext ];
propagatedBuildInputs = [ libxml2 ];
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lintl";
}

View File

@ -1,4 +1,4 @@
{stdenv, fetchurl, pkgconfig, libxml2, glib}:
{ stdenv, fetchurl, pkgconfig, libxml2, glib }:
stdenv.mkDerivation rec {
name = "libcroco-0.6.6"; # 3.6.2 release
@ -7,5 +7,8 @@ stdenv.mkDerivation rec {
url = "mirror://gnome/sources/libcroco/0.6/${name}.tar.xz";
sha256 = "1nbb12420v1zacn6jwa1x4ixikkcqw66sg4j5dgs45nhygiarv3j";
};
configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-Bsymbolic";
buildInputs = [ pkgconfig libxml2 glib ];
}

View File

@ -0,0 +1,74 @@
{ stdenv, fetchurl, bison, bash, makeWrapper }:
stdenv.mkDerivation {
name = "go-1.1.2";
src = fetchurl {
url = http://go.googlecode.com/files/go1.1.2.src.tar.gz;
sha256 = "0w7bchhb4b053az3wjp6z342rs9lp9nxf4w2mnfd1b89d6sb7izz";
};
buildInputs = [ bison bash makeWrapper ];
preUnpack = ''
mkdir -p $out/share
cd $out/share
'';
prePatch = ''
cd ..
if [ ! -d go ]; then
mv * go
fi
cd go
patchShebangs ./ # replace /bin/bash
rm src/pkg/net/{multicast_test.go,parse_test.go,port_test.go}
# The os test wants to read files in an existing path. Just it don't be /usr/bin.
sed -i 's,/usr/bin,'"`pwd`", src/pkg/os/os_test.go
sed -i 's,/bin/pwd,'"`type -P pwd`", src/pkg/os/os_test.go
# Disable some tests
sed -i '/TestHostname/areturn' src/pkg/os/os_test.go
sed -i '/TestShutdownUnix/areturn' src/pkg/net/net_test.go
'';
# Unfortunately we have to use Mac OS X's own GCC
preBuild = ''
export PATH=/usr/bin:$PATH
'';
#patches = [ ./cacert.patch ];
GOOS = "darwin";
GOARCH = if stdenv.system == "x86_64-darwin" then "amd64" else "386";
installPhase = ''
mkdir -p "$out/bin"
export GOROOT="$(pwd)/"
export GOBIN="$out/bin"
export PATH="$GOBIN:$PATH"
cd ./src
./all.bash
cd -
# Wrap the tools to define the location of the
# libraries.
for a in go gofmt godoc; do
wrapProgram "$out/bin/$a" \
--set "GOROOT" $out/share/go
done
# Copy the emacs configuration for Go files.
mkdir -p "$out/share/emacs/site-lisp"
cp ./misc/emacs/* $out/share/emacs/site-lisp/
'';
meta = {
homepage = http://golang.org/;
description = "The Go Programming language";
license = "BSD";
maintainers = with stdenv.lib.maintainers; [ zef ];
platforms = stdenv.lib.platforms.darwin;
};
}

View File

@ -1,4 +1,5 @@
{ stdenv, fetchurl, bison, glibc, bash, coreutils, makeWrapper, tzdata, iana_etc }:
{ stdenv, fetchurl, bison, glibc, bash, coreutils, makeWrapper, tzdata, iana_etc
, removeGodocExternals ? false }:
let
loader386 = "${glibc}/lib/ld-linux.so.2";
@ -50,6 +51,8 @@ stdenv.mkDerivation {
sed -i 's,/bin/pwd,'"`type -P pwd`", src/pkg/os/os_test.go
# Disable the hostname test
sed -i '/TestHostname/areturn' src/pkg/os/os_test.go
'' + stdenv.lib.optionalString removeGodocExternals ''
sed -i -e '/googleapi/d' -e '/javascript">$/,+6d' lib/godoc/godoc.html
'';
patches = [ ./cacert.patch ];

View File

@ -1,17 +1,18 @@
{ cabal, binary, boehmgc, Cabal, filepath, gmp, happy, haskeline
, languageJava, libffi, llvmGeneral, mtl, parsec, split, text
, transformers, vector, vectorBinaryInstances
{ cabal, ansiTerminal, binary, boehmgc, Cabal, filepath, gmp, happy
, haskeline, languageJava, libffi, llvmGeneral, mtl, parsec, split
, text, time, transformers, vector, vectorBinaryInstances
}:
cabal.mkDerivation (self: {
pname = "idris";
version = "0.9.9";
sha256 = "0wwssgpiyn7akyfrpi1khvqxx1k8753kk7151zvvymz0zkks643m";
version = "0.9.9.1";
sha256 = "1glxkx2hcr0lrvj3jjnlqqifyzyixjzq1hl86wmn540dccw82yah";
isLibrary = false;
isExecutable = true;
buildDepends = [
binary Cabal filepath haskeline languageJava libffi llvmGeneral mtl
parsec split text transformers vector vectorBinaryInstances
ansiTerminal binary Cabal filepath haskeline languageJava libffi
llvmGeneral mtl parsec split text time transformers vector
vectorBinaryInstances
];
buildTools = [ happy ];
extraLibraries = [ boehmgc gmp ];

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, readline}:
{ stdenv, fetchurl, readline }:
let
dsoPatch = fetchurl {
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
configurePhase = ''
makeFlagsArray=( INSTALL_TOP=$out INSTALL_MAN=$out/share/man/man1 PLAT=linux CFLAGS="-O2 -fPIC" LDLAGS="-fPIC" )
installFlagsArray=( TO_BIN="lua luac" TO_LIB="liblua.a liblua.so liblua.so.5.1" INSTALL_DATA='cp -d' )
installFlagsArray=( TO_BIN="lua luac" TO_LIB="liblua.a liblua.so liblua.so.5.1 liblua.so.5.1.5" INSTALL_DATA='cp -d' )
'';
postInstall = ''

View File

@ -0,0 +1,67 @@
{ stdenv, fetchurl, readline }:
let
dsoPatch = fetchurl {
url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/liblua.so.patch?h=packages/lua";
sha256 = "1by1dy4ql61f5c6njq9ibf9kaqm3y633g2q8j54iyjr4cxvqwqz9";
name = "lua-arch.patch";
};
in
stdenv.mkDerivation rec {
name = "lua-${version}";
majorVersion = "5.2";
version = "${majorVersion}.2";
src = fetchurl {
url = "http://www.lua.org/ftp/${name}.tar.gz";
sha256 = "004zyh9p3lpvbwhyhlmrw6wwcia5abx84q4h2brkn4zdypipvmiz";
};
buildInputs = [ readline ];
patches = [ dsoPatch ];
configurePhase = ''
makeFlagsArray=( INSTALL_TOP=$out INSTALL_MAN=$out/share/man/man1 PLAT=linux CFLAGS="-O2 -fPIC" LDLAGS="-fPIC" V=${majorVersion} R=${version} )
installFlagsArray=( TO_BIN="lua luac" TO_LIB="liblua.a liblua.so liblua.so.${majorVersion} liblua.so.${version}" INSTALL_DATA='cp -d' )
'';
postInstall = ''
mkdir -p "$out/share/doc/lua" "$out/lib/pkgconfig"
mv "doc/"*.{gif,png,css,html} "$out/share/doc/lua/"
rmdir $out/{share,lib}/lua/${majorVersion} $out/{share,lib}/lua
mkdir -p "$out/lib/pkgconfig"
cat >"$out/lib/pkgconfig/lua.pc" <<EOF
prefix=$out
libdir=$out/lib
includedir=$out/include
INSTALL_BIN=$out/bin
INSTALL_INC=$out/include
INSTALL_LIB=$out/lib
INSTALL_MAN=$out/man/man1
Name: Lua
Description: An Extensible Extension Language
Version: ${version}
Requires:
Libs: -L$out/lib -llua -lm
Cflags: -I$out/include
EOF
'';
meta = {
homepage = "http://www.lua.org";
description = "Lua is a powerful, fast, lightweight, embeddable scripting language.";
longDescription = ''
Lua combines simple procedural syntax with powerful data
description constructs based on associative arrays and extensible
semantics. Lua is dynamically typed, runs by interpreting bytecode
for a register-based virtual machine, and has automatic memory
management with incremental garbage collection, making it ideal
for configuration, scripting, and rapid prototyping.
'';
license = "MIT";
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.simons ];
};
}

View File

@ -1,51 +0,0 @@
{stdenv, fetchurl, ncurses, readline}:
stdenv.mkDerivation {
name = "lua-5.1.4";
src = fetchurl {
url = "http://www.lua.org/ftp/lua-5.1.4.tar.gz";
sha256 = "0fmgk100ficm1jbm4ga9xy484v4cm89wsdfckdybb9gjx8jy4f5h";
};
NIX_CFLAGS_COMPILE = "-fPIC";
buildFlags = if stdenv.isLinux then "linux" else
if stdenv.isDarwin then "macosx" else
if stdenv.isFreeBSD then "freebsd" else
if stdenv.isBSD then "bsd" else
"posix";
installFlags = "install INSTALL_TOP=\${out}";
postInstall = ''
sed -i -e "s@/usr/local@$out@" etc/lua.pc
sed -i -e "s@-llua -lm@-llua -lm -ldl@" etc/lua.pc
mkdir -p "$out/lib/pkgconfig"
install -m 644 etc/lua.pc $out/lib/pkgconfig/lua.pc
'';
buildInputs = [ ncurses readline ];
crossAttrs = {
preBuild = ''
sed -i -e "s/ gcc/$crossConfig-gcc/" \
-e "s/ ar/$crossConfig-ar/" \
-e "s/ ranlib/$crossConfig-ranlib/" \
src/Makefile
'';
dontStrip = true;
};
meta = {
homepage = "http://www.lua.org";
description = "Lua is a powerful, fast, lightweight, embeddable scripting language.";
longDescription = ''
Lua combines simple procedural syntax with powerful data
description constructs based on associative arrays and extensible
semantics. Lua is dynamically typed, runs by interpreting bytecode
for a register-based virtual machine, and has automatic memory
management with incremental garbage collection, making it ideal
for configuration, scripting, and rapid prototyping.
'';
license = "MIT";
platforms = stdenv.lib.platforms.unix;
maintainers = [];
};
}

View File

@ -29,11 +29,11 @@ assert x11grabSupport -> libXext != null && libXfixes != null;
assert playSupport -> SDL != null;
stdenv.mkDerivation rec {
name = "ffmpeg-1.2";
name = "ffmpeg-1.2.3";
src = fetchurl {
url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
sha256 = "1bssxbn4p813xlgb8whg4b60j90yzfy92x70b4q8j35fgp0gnfcs";
sha256 = "0nvilgwaivzvikgp9lpvrwi4p1clxl4w8j961599bg0r2v7n4x6r";
};
# `--enable-gpl' (as well as the `postproc' and `swscale') mean that

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, python, pkgconfig, glib }:
stdenv.mkDerivation rec {
stdenv.mkDerivation (rec {
name = "gamin-0.1.10";
src = fetchurl {
@ -17,4 +17,19 @@ stdenv.mkDerivation rec {
configureFlags = "--disable-debug --with-python=${python} CPPFLAGS=-D_GNU_SOURCE";
patches = [ ./deadlock.patch ] ++ map fetchurl (import ./debian-patches.nix);
meta = with stdenv.lib; {
homepage = https://people.gnome.org/~veillard/gamin/;
description = "A file and directory monitoring system";
maintainers = with maintainers; [ lovek323 ];
platforms = platforms.unix;
};
}
// stdenv.lib.optionalAttrs stdenv.isDarwin {
preBuild = ''
sed -i 's/,--version-script=.*$/\\/' libgamin/Makefile
'';
})

View File

@ -70,9 +70,11 @@ stdenv.mkDerivation (rec {
};
}
//
// optionalAttrs stdenv.isDarwin {
makeFlags = "CFLAGS=-D_FORTIFY_SOURCE=0";
}
stdenv.lib.optionalAttrs stdenv.isCygwin {
// optionalAttrs stdenv.isCygwin {
patchPhase =
# Make sure `error.c' gets compiled and is part of `libgettextlib.la'.
# This fixes:

View File

@ -0,0 +1,30 @@
{stdenv, fetchurl, fetchgit
, automake, autoconf, libtool, which, gtkdoc, gettext, pkgconfig, gobjectIntrospection, libxslt
, glib, systemd, libusb1
}:
stdenv.mkDerivation {
name = "gusb-git";
enableParallelBuilding = true;
src = fetchgit {
url = git://gitorious.org/gusb/gusb.git;
rev = "53226a15a627b20fde38303c2141a17985d741ae";
sha256 = "01daf09f663e27bdd92532e3e2a3e87de895e9cc1f150d4e0fc75b0dc489fccf";
};
preConfigure = "./autogen.sh";
buildInputs = [
pkgconfig autoconf automake libtool which gtkdoc gettext gobjectIntrospection libxslt
systemd libusb1
glib
];
meta = {
description = "GLib libusb wrapper";
homepage = http://gitorious.org/gusb;
license = stdenv.lib.licenses.lgpl21;
maintainers = [stdenv.lib.maintainers.marcweber];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -5,8 +5,8 @@
cabal.mkDerivation (self: {
pname = "Cabal";
version = "1.18.0";
sha256 = "1nxvkfkjkyxsa4nbrwl59r84j63qh2qx4cbd3vnr6vvdnflbix8f";
version = "1.18.1";
sha256 = "041m3xr8v0bbw0016lnzmnv9xpj15z5pd272j3sbsrwpmcyds3a0";
buildDepends = [ deepseq filepath time ];
testDepends = [
extensibleExceptions filepath HUnit QuickCheck regexPosix

View File

@ -0,0 +1,16 @@
{ cabal, freeglut, mesa, OpenGLRaw }:
cabal.mkDerivation (self: {
pname = "GLURaw";
version = "1.4.0.0";
sha256 = "0q86rpd5cx0vrb9d3y1fljc3mg0p8wy6xdn37ngv2s0f4kslq63g";
buildDepends = [ OpenGLRaw ];
extraLibraries = [ freeglut mesa ];
meta = {
homepage = "http://www.haskell.org/haskellwiki/Opengl";
description = "A raw binding for the OpenGL graphics system";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.andres ];
};
})

View File

@ -0,0 +1,18 @@
{ cabal, freeglut, libICE, libSM, libXi, libXmu, mesa, OpenGL
, OpenGLRaw
}:
cabal.mkDerivation (self: {
pname = "GLUT";
version = "2.5.0.1";
sha256 = "0f0bz64j7fxa0np8w53n51ri5m0pkwyc1kv7pvdnx02h181gl6l0";
buildDepends = [ OpenGL OpenGLRaw ];
extraLibraries = [ freeglut libICE libSM libXi libXmu mesa ];
meta = {
homepage = "http://www.haskell.org/haskellwiki/Opengl";
description = "A binding for the OpenGL Utility Toolkit";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.andres ];
};
})

View File

@ -0,0 +1,16 @@
{ cabal, GLURaw, libX11, mesa, OpenGLRaw, text }:
cabal.mkDerivation (self: {
pname = "OpenGL";
version = "2.9.0.0";
sha256 = "0likrpzlzis8fk11g7mjn102y6y6k2w8bkybqqhhmfls7ccgpvhp";
buildDepends = [ GLURaw OpenGLRaw text ];
extraLibraries = [ libX11 mesa ];
meta = {
homepage = "http://www.haskell.org/haskellwiki/Opengl";
description = "A binding for the OpenGL graphics system";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.andres ];
};
})

View File

@ -0,0 +1,15 @@
{ cabal, mesa }:
cabal.mkDerivation (self: {
pname = "OpenGLRaw";
version = "1.4.0.0";
sha256 = "112xaz01950pyjaw3cv9yvw4w3gqbf79idyyh05ain7x29m7bxkh";
extraLibraries = [ mesa ];
meta = {
homepage = "http://www.haskell.org/haskellwiki/Opengl";
description = "A raw binding for the OpenGL graphics system";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.andres ];
};
})

View File

@ -10,6 +10,7 @@ cabal.mkDerivation (self: {
testDepends = [
newtype QuickCheck semigroupoids semigroups vectorSpace
];
jailbreak = true;
meta = {
description = "Abstractions for animation";
license = self.stdenv.lib.licenses.bsd3;

View File

@ -0,0 +1,20 @@
{ cabal, aeson, attoparsec, cmdargs, text, unorderedContainers
, vector
}:
cabal.mkDerivation (self: {
pname = "aeson-pretty";
version = "0.7";
sha256 = "0zkqs3f4mr0v0j582h9ssq7dxgfkk59s7y66b640hc4zf0b5p7g7";
isLibrary = true;
isExecutable = true;
buildDepends = [
aeson attoparsec cmdargs text unorderedContainers vector
];
meta = {
homepage = "http://github.com/informatikr/aeson-pretty";
description = "JSON pretty-printing library and command-line tool";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -0,0 +1,16 @@
{ cabal, binary, dataBinaryIeee754, network, text, xml }:
cabal.mkDerivation (self: {
pname = "amqp";
version = "0.5.0";
sha256 = "1i02pp184r1iq40mz16m9qh8i3h1jmf3ykpg67j3i1732cks8n8w";
isLibrary = true;
isExecutable = true;
buildDepends = [ binary dataBinaryIeee754 network text xml ];
meta = {
homepage = "https://github.com/hreinhardt/amqp";
description = "Client library for AMQP servers (currently only RabbitMQ)";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "asn1-types";
version = "0.2.0";
sha256 = "0350g5p3zbvm29nnjd554i6fyc47vmzpb42w6q46v3i9fiy23kvd";
version = "0.2.1";
sha256 = "1gnyvinimxb9vw3gwvsdvja8ascm07v9f5grxh42fzqkx6fm5xvr";
buildDepends = [ time ];
meta = {
homepage = "http://github.com/vincenthz/hs-asn1-types";

View File

@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "bson";
version = "0.2.2";
sha256 = "043lbaj4rrvh4a1yc033np51vi8xlbczflbhyx2bsiryzbi27waf";
version = "0.2.3";
sha256 = "0p8c4cq8ldspwj4pmg0l8pg8bkwsk9xan07md32ikm4bfqsnv2rb";
buildDepends = [
binary cryptohash dataBinaryIeee754 mtl network text time
];

View File

@ -1,12 +1,12 @@
{ cabal, Cabal, fgl, filepath, MissingH, parsec }:
{ cabal, Cabal, fgl, filepath, parsec, text }:
cabal.mkDerivation (self: {
pname = "cabal-macosx";
version = "0.2.2";
sha256 = "14dc7swk03q2kp5fmhwibjh0x0pzf9ah1004skgd5six0vzfc1ch";
version = "0.2.3";
sha256 = "0rvmb6lx2alr7f0v7nbv48xzg7wp4nrn03hdkjc4a4c97rai14i9";
isLibrary = true;
isExecutable = true;
buildDepends = [ Cabal fgl filepath MissingH parsec ];
buildDepends = [ Cabal fgl filepath parsec text ];
meta = {
homepage = "http://github.com/gimbo/cabal-macosx";
description = "Cabal support for creating Mac OSX application bundles";

View File

@ -11,6 +11,7 @@ cabal.mkDerivation (self: {
buildDepends = [
asn1Data cryptohash cryptoPubkeyTypes filepath mtl pem time
];
jailbreak = true;
meta = {
homepage = "http://github.com/vincenthz/hs-certificate";
description = "Certificates and Key Reader/Writer";

View File

@ -1,11 +1,15 @@
{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 }:
{ cabal, byteable, cryptoCipherTests, cryptoCipherTypes, QuickCheck
, testFramework, testFrameworkQuickcheck2
}:
cabal.mkDerivation (self: {
pname = "cipher-rc4";
version = "0.1.2";
sha256 = "0nyrqms7h3hq236h03sjjjqdcxn3iz3fg4ifqj43f4nb8gv0ifb1";
version = "0.1.3";
sha256 = "1pdkm7m3v8c7wks7asvqixxjk9jixf78n489ckmw10p77wrqby78";
buildDepends = [ byteable cryptoCipherTypes ];
testDepends = [
QuickCheck testFramework testFrameworkQuickcheck2
cryptoCipherTests cryptoCipherTypes QuickCheck testFramework
testFrameworkQuickcheck2
];
meta = {
homepage = "http://github.com/vincenthz/hs-cipher-rc4";

View File

@ -5,8 +5,8 @@
cabal.mkDerivation (self: {
pname = "classy-prelude";
version = "0.5.9";
sha256 = "1qqmip3ynqdxlwynm60wsn82dcyymcfql79k039iablanj4mic61";
version = "0.5.10";
sha256 = "04grmld90qr8m6lcdf83clai0anpp8iry7m9l9li8ija9fckl3lk";
buildDepends = [
async basicPrelude deepseq hashable liftedBase monadControl
systemFilepath text transformers unorderedContainers vector

View File

@ -5,8 +5,8 @@
cabal.mkDerivation (self: {
pname = "crypto-cipher-tests";
version = "0.0.7";
sha256 = "1qlb3qr6hnla0aayyjmi5r7m7w5vy1wx8yd9cl9cpzr8wviy4lch";
version = "0.0.8";
sha256 = "0bprv2pj3acq97482wsz1pp76rrdvvy5scv4na8aqfsdsglbjq47";
buildDepends = [
byteable cryptoCipherTypes HUnit mtl QuickCheck securemem
testFramework testFrameworkHunit testFrameworkQuickcheck2

View File

@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "crypto-cipher-types";
version = "0.0.5";
sha256 = "1n0sam5lldhzlcp6ihjika52pb5d12g6r9ln84s7zk7nv59lpqjl";
version = "0.0.6";
sha256 = "1gw3nmf242fbmwhpwk1v1sxhvw1dcy9l06aj6ag0wqb12qn2bqmg";
buildDepends = [ byteable securemem ];
meta = {
homepage = "http://github.com/vincenthz/hs-crypto-cipher";

View File

@ -0,0 +1,13 @@
{ cabal, deepseq, mtl, parallel, time }:
cabal.mkDerivation (self: {
pname = "data-pprint";
version = "0.2.1.5";
sha256 = "0dalm41l93303rraxi9kipxkm11a0mly3w488afj700ny5v6l9ij";
buildDepends = [ deepseq mtl parallel time ];
meta = {
description = "Prettyprint and compare Data values";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -11,6 +11,7 @@ cabal.mkDerivation (self: {
active colour dataDefaultClass diagramsCore fingertree intervals
monoidExtras newtype NumInstances semigroups vectorSpace
];
jailbreak = true;
meta = {
homepage = "http://projects.haskell.org/diagrams";
description = "Embedded domain-specific language for declarative graphics";

View File

@ -1,18 +1,19 @@
{ cabal, attoparsec, attoparsecConduit, binary, blazeBuilder
, conduit, hspec, iproute, mtl, network, networkConduit, random
, conduit, doctest, hspec, iproute, mtl, network, networkConduit
, random
}:
cabal.mkDerivation (self: {
pname = "dns";
version = "0.3.8";
sha256 = "1x2rfm89qpx7dpxr457i2wqmjry8r28f42j194131mfx4gc4mwdq";
version = "1.0.0";
sha256 = "16h7c332qdj77dw8kvrdn1jzhzsnrcybbbm5x7pxvgpnn0wzz8si";
buildDepends = [
attoparsec attoparsecConduit binary blazeBuilder conduit iproute
mtl network networkConduit random
];
testDepends = [
attoparsec attoparsecConduit binary blazeBuilder conduit hspec
iproute mtl network networkConduit random
attoparsec attoparsecConduit binary blazeBuilder conduit doctest
hspec iproute mtl network networkConduit random
];
testTarget = "spec";
meta = {

View File

@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "doctest";
version = "0.9.7";
sha256 = "0d3aywm5v3kx16c1i6cb4inr7hdnmsl8qawxp27g0yng03wdra5l";
version = "0.9.8";
sha256 = "0c1qi1dfqndbkaiksffw54gv6nlhd3wsk25s97vhrgmpd3n7sb8a";
isLibrary = true;
isExecutable = true;
buildDepends = [ deepseq filepath ghcPaths syb transformers ];

View File

@ -0,0 +1,14 @@
{ cabal, deepseq }:
cabal.mkDerivation (self: {
pname = "enummapset";
version = "0.5.2.0";
sha256 = "065gxljrjw59rdf7abq0v0c29wg1ymg984ckixnjrcs1yks0c2js";
buildDepends = [ deepseq ];
meta = {
homepage = "https://github.com/michalt/enummapset";
description = "IntMap and IntSet with Enum keys/elements";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -0,0 +1,25 @@
{ cabal, conduit, hspec, HUnit, monadControl, monadLogger
, persistent, persistentSqlite, persistentTemplate, QuickCheck
, resourcet, tagged, text, transformers, unorderedContainers
}:
cabal.mkDerivation (self: {
pname = "esqueleto";
version = "1.3.4.2";
sha256 = "1gp0jy8ra11ansari659wqvwafw1pi2svl3w16wa5dv9xk3v9pr6";
buildDepends = [
conduit monadLogger persistent resourcet tagged text transformers
unorderedContainers
];
testDepends = [
conduit hspec HUnit monadControl monadLogger persistent
persistentSqlite persistentTemplate QuickCheck text transformers
];
meta = {
homepage = "https://github.com/meteficha/esqueleto";
description = "Bare bones, type-safe EDSL for SQL queries on persistent backends";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.ocharles ];
};
})

View File

@ -1,11 +1,11 @@
{ cabal, Cabal, convertible, emacs, filepath, ghcPaths, ghcSybUtils
, hlint, hspec, ioChoice, syb, time, transformers
{ cabal, Cabal, convertible, doctest, emacs, filepath, ghcPaths
, ghcSybUtils, hlint, hspec, ioChoice, syb, time, transformers
}:
cabal.mkDerivation (self: {
pname = "ghc-mod";
version = "3.0.0";
sha256 = "1ll2vn4vv4k7jaah0ngr2ml381cpprqy9ndqpf8cn44m5xd9qn6p";
version = "3.1.1";
sha256 = "0gz5andg5ap7a71ap82rpkbflgj9fcrw47gyzlbn5rpp110d86jf";
isLibrary = true;
isExecutable = true;
buildDepends = [
@ -13,7 +13,7 @@ cabal.mkDerivation (self: {
time transformers
];
testDepends = [
Cabal convertible filepath ghcPaths ghcSybUtils hlint hspec
Cabal convertible doctest filepath ghcPaths ghcSybUtils hlint hspec
ioChoice syb time transformers
];
buildTools = [ emacs ];

View File

@ -1,9 +1,9 @@
{ cabal, binary, blazeHtml, blazeMarkup, citeprocHs, cmdargs
{ cabal, binary, blazeHtml, blazeMarkup, pandocCiteproc, cmdargs
, cryptohash, dataDefault, deepseq, filepath, fsnotify, httpConduit
, httpTypes, HUnit, lrucache, mtl, network, pandoc, parsec
, QuickCheck, random, regexBase, regexTdfa, snapCore, snapServer
, systemFilepath, tagsoup, testFramework, testFrameworkHunit
, testFrameworkQuickcheck2, text, time
, testFrameworkQuickcheck2, text, time, fetchurl
}:
cabal.mkDerivation (self: {
@ -12,22 +12,26 @@ cabal.mkDerivation (self: {
sha256 = "11zfz55a7dr5l7xzknphqninyrb2pw2qmrs7v7ajq2gvbl0lf37n";
isLibrary = true;
isExecutable = true;
patches = [ (fetchurl { url = "https://github.com/jaspervdj/hakyll/pull/183.patch";
sha256 = "0vjrxvgyc05nnshapjhk65pcamj9rigqff5q6wjbssx3ggqggrz9";
name = "hakyll-pandoc-fix.patch";
}) ];
buildDepends = [
binary blazeHtml blazeMarkup citeprocHs cmdargs cryptohash
binary blazeHtml blazeMarkup pandocCiteproc cmdargs cryptohash
dataDefault deepseq filepath fsnotify httpConduit httpTypes
lrucache mtl network pandoc parsec random regexBase regexTdfa
snapCore snapServer systemFilepath tagsoup text time
];
testDepends = [
binary blazeHtml blazeMarkup citeprocHs cmdargs cryptohash
binary blazeHtml blazeMarkup pandocCiteproc cmdargs cryptohash
dataDefault deepseq filepath fsnotify httpConduit httpTypes HUnit
lrucache mtl network pandoc parsec QuickCheck random regexBase
regexTdfa snapCore snapServer systemFilepath tagsoup testFramework
testFrameworkHunit testFrameworkQuickcheck2 text time
];
doCheck = false;
patchPhase = ''
sed -i -e 's|cryptohash.*,|cryptohash,|' hakyll.cabal
postPatch = ''
sed -i -e 's|cryptohash.*,|cryptohash,|' -e 's|tagsoup.*,|tagsoup,|' hakyll.cabal
'';
meta = {
homepage = "http://jaspervdj.be/hakyll";

View File

@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "hashable";
version = "1.2.0.10";
sha256 = "155r7zqc0kisjdslr8d1c04yqwvzwqx4d99c0zla113dvsdjhp37";
version = "1.2.1.0";
sha256 = "09m1glpcxm3f6s9cwz8xzljy6j0n271cym4d9dllw5rpzrwp9h2f";
buildDepends = [ text ];
testDepends = [
HUnit QuickCheck random testFramework testFrameworkHunit

View File

@ -6,8 +6,8 @@
cabal.mkDerivation (self: {
pname = "heist";
version = "0.13.0";
sha256 = "1f406i7jdz45s88n0nrd76vj927a0fx02nf1f98r4in0ic5anp11";
version = "0.13.0.1";
sha256 = "1hxf131xhvsqbvmrm8wbjpndy41pz1lq65gqlk3lxr57dhi59s4w";
buildDepends = [
aeson attoparsec blazeBuilder blazeHtml directoryTree dlist errors
filepath hashable MonadCatchIOTransformers mtl random text time

View File

@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "hflags";
version = "0.2";
sha256 = "1bz8w1vxqlc2c9iygr2dhy2ck1sd56zjwqzz707nqcmsqqsfmyhb";
version = "0.3";
sha256 = "113pqdjnxfhkk95969ia393n1jvbbnfljsz42vfapgzvd8f1fci2";
buildDepends = [ text ];
meta = {
homepage = "http://github.com/errge/hflags";

View File

@ -0,0 +1,13 @@
{ cabal, mtl }:
cabal.mkDerivation (self: {
pname = "hslua";
version = "0.3.6.1";
sha256 = "0c60gnf0mp6kx2z2149icl7hdwvigibvxd091a3vc6zkl5c5r41p";
buildDepends = [ mtl ];
meta = {
description = "A Lua language interpreter embedding in Haskell";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -9,8 +9,8 @@
cabal.mkDerivation (self: {
pname = "http-conduit";
version = "1.9.5";
sha256 = "01xmm63cbdm20wp6bpp3052zfpqmvglcq33skhy92cqkpgvd7f8y";
version = "1.9.5.1";
sha256 = "1a53s5f9p0xnd33midi4pfj6i3nvckb9khn0p3l3v3xvqn5rrgf2";
buildDepends = [
asn1Data base64Bytestring blazeBuilder blazeBuilderConduit
caseInsensitive certificate conduit cookie cprngAes dataDefault

View File

@ -0,0 +1,19 @@
{ cabal, comonadsFd, comonadTransformers, free, semigroupoids
, semigroups, transformers
}:
cabal.mkDerivation (self: {
pname = "keys";
version = "3.0.3";
sha256 = "1fqw0745pj8pzjjlrbg85gdr3acm7gpip5052m9wcz997949ca3r";
buildDepends = [
comonadsFd comonadTransformers free semigroupoids semigroups
transformers
];
meta = {
homepage = "http://github.com/ekmett/keys/";
description = "Keyed functors and containers";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -10,8 +10,8 @@
cabal.mkDerivation (self: {
pname = "lambdabot";
version = "4.3";
sha256 = "0pjwxlq4rbmg9wj44vrillly967y35b4i995mz5167hpji05clvy";
version = "4.3.0.1";
sha256 = "19pkm4m2xk9ziai3ka4scxjavi0as8dmivz9q6vg3npmv0kyhkhb";
isLibrary = true;
isExecutable = true;
buildDepends = [

View File

@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "language-javascript";
version = "0.5.7";
sha256 = "0mndz0bqxkayzm7g92cvai9ahb9msr99syp9djhaya1d45595ad3";
version = "0.5.8";
sha256 = "0slwj2bi9v7qjr6ai5dwql7fqgsh8k9k2bzlsq407iacsv0w3b9h";
buildDepends = [ blazeBuilder mtl utf8Light utf8String ];
testDepends = [
blazeBuilder Cabal HUnit mtl QuickCheck testFramework

View File

@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "lens-datetime";
version = "0.1.1";
sha256 = "0p93211ibq1rkh4aj69xdwan0338k35vb5qyf7zp761nghnk3d47";
version = "0.2";
sha256 = "0wrs7alz1zfg1xrg04lhz01mrd1gcz2xr8b5mxfdvq94f5m87sdr";
buildDepends = [ lens time ];
meta = {
homepage = "http://github.com/klao/lens-datetime";

View File

@ -1,17 +1,21 @@
{ cabal, distributive, doctest, filepath, hashable, lens
{ cabal, distributive, doctest, filepath, hashable, HUnit, lens
, reflection, semigroupoids, semigroups, simpleReflect, tagged
, transformers, unorderedContainers, vector
, testFramework, testFrameworkHunit, transformers
, unorderedContainers, vector
}:
cabal.mkDerivation (self: {
pname = "linear";
version = "1.2";
sha256 = "0mna8k6plq0akki5j5zjk1xk1hgks1076q1h5s14v87d0h45wlrh";
version = "1.3";
sha256 = "0b5qjsbdkqv0h1236lv2nisjh9yz7gc5bd6xv6i8q5jryzs43pi9";
buildDepends = [
distributive hashable reflection semigroupoids semigroups tagged
transformers unorderedContainers vector
];
testDepends = [ doctest filepath lens simpleReflect ];
testDepends = [
doctest filepath HUnit lens simpleReflect testFramework
testFrameworkHunit
];
meta = {
homepage = "http://github.com/ekmett/linear/";
description = "Linear Algebra";

View File

@ -0,0 +1,16 @@
{ cabal, binary, dlist }:
cabal.mkDerivation (self: {
pname = "list-tries";
version = "0.5.1";
sha256 = "15lbq41rikj5vm9gfgjxz98pamnib4dcs48fr2vm9r3s3fikd2kz";
isLibrary = true;
isExecutable = true;
buildDepends = [ binary dlist ];
meta = {
homepage = "http://iki.fi/matti.niemenmaa/list-tries/";
description = "Tries and Patricia tries: finite sets and maps for list keys";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -4,13 +4,14 @@
cabal.mkDerivation (self: {
pname = "llvm-general-pure";
version = "3.3.8.1";
sha256 = "1izn30pka7z60dr73c3mhr5i8n2fb0yvpdgg66r7c5qf1m5bmqbx";
version = "3.3.8.2";
sha256 = "171mp9rydw6r2khcmvkcfjk934ckfahwyx1b4a15gmj8sr1s9hzp";
buildDepends = [ mtl parsec setenv transformers ];
testDepends = [
HUnit mtl QuickCheck testFramework testFrameworkHunit
testFrameworkQuickcheck2
];
doCheck = false;
meta = {
description = "Pure Haskell LLVM functionality (no FFI)";
license = self.stdenv.lib.licenses.bsd3;

View File

@ -0,0 +1,21 @@
{ cabal, HUnit, llvmConfig, mtl, parsec, QuickCheck, setenv
, testFramework, testFrameworkHunit, testFrameworkQuickcheck2, text
, transformers
}:
cabal.mkDerivation (self: {
pname = "llvm-general";
version = "3.3.5.0";
sha256 = "15zrav7339jn6p75g1d7h3qkr1wyal1jzfs8xy73kckw2fzn4nlf";
buildDepends = [ mtl parsec setenv text transformers ];
testDepends = [
HUnit mtl QuickCheck testFramework testFrameworkHunit
testFrameworkQuickcheck2
];
buildTools = [ llvmConfig ];
meta = {
description = "General purpose LLVM bindings";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -5,8 +5,8 @@
cabal.mkDerivation (self: {
pname = "llvm-general";
version = "3.3.8.1";
sha256 = "1w9wqi9mj673s0bm3j4a5kapl5f65sy8mwjbw7ydism6j5jmxhpk";
version = "3.3.8.2";
sha256 = "11qnvpnx4i8mjdgn5y58rl70wf8pzmd555hrdaki1f4q0035cmm5";
buildDepends = [
llvmGeneralPure mtl parsec setenv transformers utf8String
];
@ -15,6 +15,7 @@ cabal.mkDerivation (self: {
testFrameworkHunit testFrameworkQuickcheck2
];
buildTools = [ llvmConfig ];
doCheck = false;
meta = {
description = "General purpose LLVM bindings";
license = self.stdenv.lib.licenses.bsd3;

View File

@ -6,8 +6,8 @@
cabal.mkDerivation (self: {
pname = "monad-par";
version = "0.3.4.4";
sha256 = "0mqvrg2izqjrgzbmr6pcl9v9827fkr4mwxpdckm3gj1miljsj314";
version = "0.3.4.5";
sha256 = "0xwjx3l9ssyxaa49v8kz7ic54va1qy6dqa1z5gvww7a5gw1ll81p";
buildDepends = [
abstractDeque abstractPar deepseq monadParExtras mtl mwcRandom
parallel

Some files were not shown because too many files have changed in this diff Show More