From 601b69a21876b856d8e98da8de71e7704a785645 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 30 Dec 2012 15:22:40 +0100 Subject: [PATCH 001/407] Setting the stdenv compiler to gcc 4.7. --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f8bda788333..b53609666f1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1884,7 +1884,7 @@ let gambit = callPackage ../development/compilers/gambit { }; - gcc = gcc46; + gcc = gcc47; gcc295 = wrapGCC (import ../development/compilers/gcc/2.95 { inherit fetchurl stdenv noSysDirs; From 8067f1469947d7eddec3d797edf39475ac1b1768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 31 Dec 2012 10:13:55 +0100 Subject: [PATCH 002/407] Fixing the gcc47 build in stdenv gcc 4.7 wants an explicit reference to the system include directory, and that's guessed through 'stdenv ? glibc'. --- pkgs/stdenv/linux/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index e4a8bd77076..e8e089695c0 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -214,6 +214,9 @@ rec { cloog = pkgs.cloog.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; }; ppl = pkgs.ppl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; }; }; + extraAttrs = { + glibc = stdenvLinuxGlibc; # Required by gcc47 build + }; inherit fetchurl; }; From bbc494644f1c10bb7ecf60dd6bd5cf72cb98e223 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 5 Jan 2013 22:14:59 +0400 Subject: [PATCH 003/407] ARMv7 seems to need special ARM unpacking procedure, too --- pkgs/stdenv/linux/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 5d9a0cf750a..45ba2c58811 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -58,9 +58,10 @@ rec { builder = bootstrapFiles.sh; args = - if (system == "armv5tel-linux" || system == "armv6l-linux") - then [ ./scripts/unpack-bootstrap-tools-arm.sh ] - else [ ./scripts/unpack-bootstrap-tools.sh ]; + if (system == "armv5tel-linux" || system == "armv6l-linux" + || system == "armv7l-linux") + then ./scripts/unpack-bootstrap-tools-arm.sh + else ./scripts/unpack-bootstrap-tools.sh; inherit (bootstrapFiles) bzip2 mkdir curl cpio; From 21e57a0d08e054813385773402b0dd568c8f6f9e Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 5 Jan 2013 22:49:31 +0400 Subject: [PATCH 004/407] Not all parenthesis are extraneous, after all --- pkgs/stdenv/linux/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 45ba2c58811..21867be0b44 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -58,10 +58,10 @@ rec { builder = bootstrapFiles.sh; args = - if (system == "armv5tel-linux" || system == "armv6l-linux" - || system == "armv7l-linux") - then ./scripts/unpack-bootstrap-tools-arm.sh - else ./scripts/unpack-bootstrap-tools.sh; + if system == "armv5tel-linux" || system == "armv6l-linux" + || system == "armv7l-linux" + then [ ./scripts/unpack-bootstrap-tools-arm.sh ] + else [ ./scripts/unpack-bootstrap-tools.sh ]; inherit (bootstrapFiles) bzip2 mkdir curl cpio; From ed2f075930f3f7280136c7863dbc5efc3df94b51 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 5 Jan 2013 23:28:22 +0400 Subject: [PATCH 005/407] ARMv7l fails in strange way with ARMv5 bootstrap but works with ARMv6 bootstrap --- pkgs/stdenv/linux/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 21867be0b44..c2e2045cbd1 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -17,7 +17,7 @@ rec { else if system == "powerpc-linux" then import ./bootstrap/powerpc else if system == "armv5tel-linux" then import ./bootstrap/armv5tel else if system == "armv6l-linux" then import ./bootstrap/armv6l - else if system == "armv7l-linux" then import ./bootstrap/armv5tel + else if system == "armv7l-linux" then import ./bootstrap/armv6l else if system == "mips64el-linux" then import ./bootstrap/loongson2f else abort "unsupported platform for the pure Linux stdenv"; From b7e2799d329cf366de1d90291632f95259c7514d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 11 Jan 2013 15:52:42 +0100 Subject: [PATCH 006/407] gmp: version 5.1.0 has the cpu-id patch applied already --- pkgs/development/libraries/gmp/5.1.0.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/development/libraries/gmp/5.1.0.nix b/pkgs/development/libraries/gmp/5.1.0.nix index 88d639e621b..270788198f6 100644 --- a/pkgs/development/libraries/gmp/5.1.0.nix +++ b/pkgs/development/libraries/gmp/5.1.0.nix @@ -4,13 +4,10 @@ stdenv.mkDerivation rec { name = "gmp-5.1.0"; src = fetchurl { - urls = [ "mirror://gnu/gmp/${name}.tar.bz2" - "ftp://ftp.gmplib.org/pub/${name}/${name}.tar.bz2" ]; + urls = [ "mirror://gnu/gmp/${name}.tar.bz2" "ftp://ftp.gmplib.org/pub/${name}/${name}.tar.bz2" ]; sha256 = "15n7xxgasbxdch8ii8z9ic6fxc2ysk3q8iavf55abjp5iylspnfz"; }; - patches = [ ./ignore-bad-cpuid.patch ]; - nativeBuildInputs = [ m4 ]; configureFlags = From 996da754e4444197176c3ed0f2be02141b48954f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 11 Jan 2013 16:15:16 +0100 Subject: [PATCH 007/407] gmp: switch default version back to 5.0.5 The 5.1.0 version breaks the build of virtually every package that uses the C++ wrappers for gmp (such as mpfr, ppl, etc). --- pkgs/development/libraries/gmp/5.0.5.nix | 55 ++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/gmp/5.0.5.nix diff --git a/pkgs/development/libraries/gmp/5.0.5.nix b/pkgs/development/libraries/gmp/5.0.5.nix new file mode 100644 index 00000000000..62acc974caa --- /dev/null +++ b/pkgs/development/libraries/gmp/5.0.5.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchurl, m4, cxx ? true }: + +stdenv.mkDerivation rec { + name = "gmp-5.0.5"; + + src = fetchurl { + url = "mirror://gnu/gmp/${name}.tar.bz2"; + sha256 = "1jfymbr90mpn0zw5sg001llqnvf2462y77vgjknrmfs1rjn8ln0z"; + }; + + nativeBuildInputs = [ m4 ]; + + configureFlags = + # Build a "fat binary", with routines for several sub-architectures + # (x86), except on Solaris where some tests crash with "Memory fault". + # See , for instance. + (stdenv.lib.optional (!stdenv.isSunOS) "--enable-fat") + ++ (if cxx then [ "--enable-cxx" ] else [ "--disable-cxx" ]); + + doCheck = true; + + enableParallelBuilding = true; + + meta = { + description = "GMP, the GNU multiple precision arithmetic library"; + + longDescription = + '' GMP is a free library for arbitrary precision arithmetic, operating + on signed integers, rational numbers, and floating point numbers. + There is no practical limit to the precision except the ones implied + by the available memory in the machine GMP runs on. GMP has a rich + set of functions, and the functions have a regular interface. + + The main target applications for GMP are cryptography applications + and research, Internet security applications, algebra systems, + computational algebra research, etc. + + GMP is carefully designed to be as fast as possible, both for small + operands and for huge operands. The speed is achieved by using + fullwords as the basic arithmetic type, by using fast algorithms, + with highly optimised assembly code for the most common inner loops + for a lot of CPUs, and by a general emphasis on speed. + + GMP is faster than any other bignum library. The advantage for GMP + increases with the operand sizes for many operations, since GMP uses + asymptotically faster algorithms. + ''; + + homepage = http://gmplib.org/; + license = "LGPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo stdenv.lib.maintainers.simons ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2f61e43158d..6ebb71ee147 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3768,7 +3768,9 @@ let # The GHC bootstrap binaries link against libgmp.so.3, which is in GMP 4.x. gmp4 = callPackage ../development/libraries/gmp/4.3.2.nix { }; - gmp5 = callPackage ../development/libraries/gmp/5.1.0.nix { }; + gmp5 = callPackage ../development/libraries/gmp/5.0.5.nix { }; + + gmp51 = callPackage ../development/libraries/gmp/5.1.0.nix { }; gobjectIntrospection = callPackage ../development/libraries/gobject-introspection { }; From 82e852160bc170ecd91b56343cdaf6d6c55ce1fb Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 11 Jan 2013 16:15:28 +0100 Subject: [PATCH 008/407] all-packages.nix: strip trailing whitespace --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6ebb71ee147..eca8e9c3b94 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -415,9 +415,9 @@ let inherit pkgs; pkgs_i686 = pkgsi686Linux; }; - + xcodeenv = callPackage ../development/mobile/xcodeenv { }; - + titaniumenv = import ../development/mobile/titaniumenv { inherit pkgs; pkgs_i686 = pkgsi686Linux; From c77946fa70ec3a6a8c7fb3f28e15e230ed55e915 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 11 Jan 2013 17:03:03 +0100 Subject: [PATCH 009/407] ppl: update to version 0.12.1 --- pkgs/development/libraries/ppl/default.nix | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkgs/development/libraries/ppl/default.nix b/pkgs/development/libraries/ppl/default.nix index b24b4e06cb9..ca37881ae95 100644 --- a/pkgs/development/libraries/ppl/default.nix +++ b/pkgs/development/libraries/ppl/default.nix @@ -1,13 +1,13 @@ { fetchurl, stdenv, gmpxx, perl, gnum4 }: -let version = "0.11.2"; in +let version = "0.12.1"; in stdenv.mkDerivation rec { name = "ppl-${version}"; src = fetchurl { url = "http://bugseng.com/products/ppl/download/ftp/releases/${version}/ppl-${version}.tar.bz2"; - sha256 = "1sxviip4yk6gp453pid5scy1ba66dzdpr02i1416yk7lkv0x3yz3"; + sha256 = "165iy8bmkgszs0v8lkb1mzwp53x4vkcc7m1xdpv8w77qf93ya8j0"; }; nativeBuildInputs = [ perl gnum4 ]; @@ -23,7 +23,9 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = { + homepage = "http://www.cs.unipr.it/ppl/"; description = "PPL: The Parma Polyhedra Library"; + license = "GPLv3+"; longDescription = '' The Parma Polyhedra Library (PPL) provides numerical abstractions @@ -40,10 +42,6 @@ stdenv.mkDerivation rec { version of the simplex algorithm. ''; - homepage = http://www.cs.unipr.it/ppl/; - - license = "GPLv3+"; - maintainers = [ stdenv.lib.maintainers.ludo ]; }; } From 0728c65af6860052dcd25365559283aecfef36ee Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 11 Jan 2013 17:04:20 +0100 Subject: [PATCH 010/407] mpfr: update to version 3.1.1 --- pkgs/development/libraries/mpfr/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/mpfr/default.nix b/pkgs/development/libraries/mpfr/default.nix index faa2e1b1a71..db5af11a670 100644 --- a/pkgs/development/libraries/mpfr/default.nix +++ b/pkgs/development/libraries/mpfr/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, gmp}: stdenv.mkDerivation (rec { - name = "mpfr-3.1.0"; + name = "mpfr-3.1.1"; src = fetchurl { url = "mirror://gnu/mpfr/${name}.tar.bz2"; - sha256 = "105nx8qqx5x8f4rlplr2wk4cyv61iw5j3jgi2k21rpb8s6xbp9vl"; + sha256 = "1zfmmk4p26b67qpmh787p3dfxa71yd9mi02c4q45yf687pqw6rkv"; }; buildInputs = [ gmp ]; From 9b003f066815a1f43a6ef52720b47c4e5107a403 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 11 Jan 2013 17:04:44 +0100 Subject: [PATCH 011/407] mpc: update to version 1.0.1 --- pkgs/development/libraries/mpc/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/mpc/default.nix b/pkgs/development/libraries/mpc/default.nix index 3824e3d3755..e5d212dc269 100644 --- a/pkgs/development/libraries/mpc/default.nix +++ b/pkgs/development/libraries/mpc/default.nix @@ -1,11 +1,11 @@ { fetchurl, stdenv, gmp, mpfr }: stdenv.mkDerivation rec { - name = "mpc-0.9"; + name = "mpc-1.0.1"; src = fetchurl { url = "http://www.multiprecision.org/mpc/download/${name}.tar.gz"; - sha1 = "229722d553030734d49731844abfef7617b64f1a"; + sha1 = "vxg0rkyn4cs40wr2cp6bbcyr1nnijzlc"; }; buildInputs = [ gmp mpfr ]; From eebc0c6965f5581d3a31aa63d5e91ad3d3a7deaa Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Sun, 13 Jan 2013 11:27:29 +0100 Subject: [PATCH 012/407] gmp: add back the cpuid patch to 5.0.5 it was lost during 5.0.5 -> 5.1.0 -> 5.1.0 w/o patch -> 5.0.5 w/o patch --- pkgs/development/libraries/gmp/5.0.5.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/gmp/5.0.5.nix b/pkgs/development/libraries/gmp/5.0.5.nix index 62acc974caa..dba5cafdf57 100644 --- a/pkgs/development/libraries/gmp/5.0.5.nix +++ b/pkgs/development/libraries/gmp/5.0.5.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "1jfymbr90mpn0zw5sg001llqnvf2462y77vgjknrmfs1rjn8ln0z"; }; + patches = [ ./ignore-bad-cpuid.patch ]; + nativeBuildInputs = [ m4 ]; configureFlags = From 755dac3c6d50ad43abf22503a327a876db26ed81 Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Sun, 13 Jan 2013 11:33:45 +0100 Subject: [PATCH 013/407] buildNativeInputs -> nativeBuildInputs --- pkgs/applications/editors/zile/default.nix | 2 +- pkgs/development/libraries/eigen/2.0.nix | 8 ++++---- pkgs/development/tools/phantomjs/default.nix | 2 +- pkgs/tools/graphics/argyllcms/default.nix | 2 +- pkgs/tools/misc/youtube-dl/default.nix | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/applications/editors/zile/default.nix b/pkgs/applications/editors/zile/default.nix index ea2000b57db..5929f4c76c8 100644 --- a/pkgs/applications/editors/zile/default.nix +++ b/pkgs/applications/editors/zile/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ help2man perl ]; # `help2man' wants to run Zile, which fails when cross-compiling. - crossAttrs.buildNativeInputs = []; + crossAttrs.nativeBuildInputs = []; # Tests can't be run because most of them rely on the ability to # fiddle with the terminal. diff --git a/pkgs/development/libraries/eigen/2.0.nix b/pkgs/development/libraries/eigen/2.0.nix index 6884aca16fc..9cf0a3c350c 100644 --- a/pkgs/development/libraries/eigen/2.0.nix +++ b/pkgs/development/libraries/eigen/2.0.nix @@ -5,15 +5,15 @@ let in stdenv.mkDerivation { name = "eigen-${v}"; - + src = fetchurl { url = "http://bitbucket.org/eigen/eigen/get/${v}.tar.bz2"; name = "eigen-${v}.tar.bz2"; sha256 = "1akcb4g5hvc664gfc6sxb6f6jrm55fgks6017wg0smyvmm6k09v0"; }; - - buildNativeInputs = [ cmake ]; - + + nativeBuildInputs = [ cmake ]; + meta = with stdenv.lib; { description = "C++ template library for linear algebra: vectors, matrices, and related algorithms"; license = licenses.lgpl3Plus; diff --git a/pkgs/development/tools/phantomjs/default.nix b/pkgs/development/tools/phantomjs/default.nix index 33b99e12de5..5d9433cc5ca 100644 --- a/pkgs/development/tools/phantomjs/default.nix +++ b/pkgs/development/tools/phantomjs/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { sha256 = "1m14czhi3b388didn0a881glsx8bnsg9gnxgj5lghr4l5mgqyrd7"; }; - buildNativeInputs = stdenv.lib.optional (stdenv.system == "x86_64-linux") upx; + nativeBuildInputs = stdenv.lib.optional (stdenv.system == "x86_64-linux") upx; buildPhase = stdenv.lib.optionalString (stdenv.system == "x86_64-linux") '' upx -d bin/phantomjs diff --git a/pkgs/tools/graphics/argyllcms/default.nix b/pkgs/tools/graphics/argyllcms/default.nix index 08cd012e079..934a27ef25b 100644 --- a/pkgs/tools/graphics/argyllcms/default.nix +++ b/pkgs/tools/graphics/argyllcms/default.nix @@ -47,7 +47,7 @@ stdenv.mkDerivation rec { -ljpeg -ltiff ; ''; - buildNativeInputs = [ jam unzip ]; + nativeBuildInputs = [ jam unzip ]; preConfigure = '' cp ${jamTop} Jamtop diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix index 52c8e493fdc..40f19dc89e0 100644 --- a/pkgs/tools/misc/youtube-dl/default.nix +++ b/pkgs/tools/misc/youtube-dl/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation { }; buildInputs = [ python ]; - buildNativeInputs = [ pandoc zip ]; + nativeBuildInputs = [ pandoc zip ]; patchPhase = '' rm youtube-dl From 18180858af59960354968918cef5091cf11daa8b Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Sat, 26 Jan 2013 13:17:31 +0100 Subject: [PATCH 014/407] Enable mcrypt, intl and exif support in PHP --- pkgs/development/interpreters/php/5.3.nix | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/php/5.3.nix b/pkgs/development/interpreters/php/5.3.nix index 014ce9d3b97..56265fda55d 100644 --- a/pkgs/development/interpreters/php/5.3.nix +++ b/pkgs/development/interpreters/php/5.3.nix @@ -1,6 +1,7 @@ { stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison , apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql, gettext -, openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype }: +, openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype +, libmcrypt, icu }: composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in { @@ -110,6 +111,20 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) buildInputs = [gettext]; }; + mcrypt = { + configureFlags = ["--with-mcrypt=${libmcrypt}"]; + buildInputs = [libmcrypt]; + }; + + intl = { + configureFlags = ["--enable-intl"]; + buildInputs = [icu]; + }; + + exif = { + configureFlags = ["--enable-exif"]; + }; + /* php is build within this derivation in order to add the xdebug lines to the php.ini. So both Apache and command line php both use xdebug without having to configure anything. @@ -141,12 +156,15 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) opensslSupport = config.php.openssl or true; mbstringSupport = config.php.mbstring or true; gdSupport = config.php.gd or true; + mcryptSupport = config.php.mcrypt or true; + intlSupport = config.php.intl or true; + exifSupport = config.php.exif or true; }; configurePhase = '' iniFile=$out/etc/php-recommended.ini [[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin - ./configure --with-config-file-scan-dir=/etc --with-config-file-path=$out/etc --prefix=$out $configureFlags + ./configure --with-config-file-scan-dir=/etc --with-config-file-path=$out/etc --prefix=$out $configureFlags echo configurePhase end ''; From b42ba898e13ba3f4650f8225785169294b11fe9a Mon Sep 17 00:00:00 2001 From: Baptist BENOIST Date: Sun, 10 Feb 2013 18:29:08 +0100 Subject: [PATCH 015/407] php: Add xsl optional support Use an override with xsl = true to enable xsl support in php. --- pkgs/development/interpreters/php/5.3.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/php/5.3.nix b/pkgs/development/interpreters/php/5.3.nix index 014ce9d3b97..ff136329d60 100644 --- a/pkgs/development/interpreters/php/5.3.nix +++ b/pkgs/development/interpreters/php/5.3.nix @@ -1,6 +1,7 @@ { stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison , apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql, gettext -, openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype }: +, openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype +, libxslt }: composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in { @@ -110,6 +111,11 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) buildInputs = [gettext]; }; + xsl = { + configureFlags = ["--with-xsl=${libxslt}"]; + buildInputs = [libxslt]; + }; + /* php is build within this derivation in order to add the xdebug lines to the php.ini. So both Apache and command line php both use xdebug without having to configure anything. @@ -141,6 +147,7 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) opensslSupport = config.php.openssl or true; mbstringSupport = config.php.mbstring or true; gdSupport = config.php.gd or true; + xslSupport = config.php.xsl or false; }; configurePhase = '' From 8fd5fcbda5dd87966265813c08ab19d28bb9723a Mon Sep 17 00:00:00 2001 From: bbenoist Date: Tue, 12 Feb 2013 19:33:39 +0100 Subject: [PATCH 016/407] php: Add mcrypt optional support Use an override with mcrypt = true to enable libmcrypt support in php. The --disable-posix-threadsds mcrypt build option was required by php. --- pkgs/development/interpreters/php/5.3.nix | 12 +++++++++++- pkgs/development/libraries/libmcrypt/default.nix | 9 ++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/php/5.3.nix b/pkgs/development/interpreters/php/5.3.nix index ff136329d60..7d51a74020f 100644 --- a/pkgs/development/interpreters/php/5.3.nix +++ b/pkgs/development/interpreters/php/5.3.nix @@ -1,7 +1,11 @@ { stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison , apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql, gettext , openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype -, libxslt }: +, libxslt, libmcrypt }: + +let + libmcryptOverride = libmcrypt.override { disablePosixThreads = true; }; +in composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in { @@ -116,6 +120,11 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) buildInputs = [libxslt]; }; + mcrypt = { + configureFlags = ["--with-mcrypt=${libmcrypt}"]; + buildInputs = [libmcryptOverride]; + }; + /* php is build within this derivation in order to add the xdebug lines to the php.ini. So both Apache and command line php both use xdebug without having to configure anything. @@ -148,6 +157,7 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) mbstringSupport = config.php.mbstring or true; gdSupport = config.php.gd or true; xslSupport = config.php.xsl or false; + mcryptSupport = config.php.mcrypt or false; }; configurePhase = '' diff --git a/pkgs/development/libraries/libmcrypt/default.nix b/pkgs/development/libraries/libmcrypt/default.nix index eac577869e2..79019cbc489 100644 --- a/pkgs/development/libraries/libmcrypt/default.nix +++ b/pkgs/development/libraries/libmcrypt/default.nix @@ -1,4 +1,6 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchurl, disablePosixThreads ? false }: + +with stdenv.lib; stdenv.mkDerivation rec { name = "libmcrypt-2.5.8"; @@ -10,7 +12,12 @@ stdenv.mkDerivation rec { buildInputs = []; + configureFlags = optional disablePosixThreads + [ "--disable-posix-threads" ]; + meta = { + description = "MCrypt is a replacement for the old crypt() package and crypt(1) command, with extensions."; homepage = http://mcrypt.sourceforge.net; + license = "GPL"; }; } From 99934eb36378d22d793cc86103544278a25922f6 Mon Sep 17 00:00:00 2001 From: bbenoist Date: Tue, 12 Feb 2013 21:23:24 +0100 Subject: [PATCH 017/407] php: Add zip and optional bz2 support Use the overload bz2 = true to enable bz2 support for php. zip support is enabled by default as it doesn't require any library. --- pkgs/development/interpreters/php/5.3.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/php/5.3.nix b/pkgs/development/interpreters/php/5.3.nix index 7d51a74020f..7a243e88971 100644 --- a/pkgs/development/interpreters/php/5.3.nix +++ b/pkgs/development/interpreters/php/5.3.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison , apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql, gettext , openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype -, libxslt, libmcrypt }: +, libxslt, libmcrypt, bzip2 }: let libmcryptOverride = libmcrypt.override { disablePosixThreads = true; }; @@ -125,6 +125,15 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) buildInputs = [libmcryptOverride]; }; + bz2 = { + configureFlags = ["--with-bz2=${bzip2}"]; + buildInputs = [bzip2]; + }; + + zip = { + configureFlags = ["--enable-zip"]; + }; + /* php is build within this derivation in order to add the xdebug lines to the php.ini. So both Apache and command line php both use xdebug without having to configure anything. @@ -158,6 +167,8 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) gdSupport = config.php.gd or true; xslSupport = config.php.xsl or false; mcryptSupport = config.php.mcrypt or false; + bz2Support = config.php.bz2 or false; + zipSupport = config.php.zip or true; }; configurePhase = '' From e979d7ad2f6fb2e5e7235be3100eb369572fcba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 21 Feb 2013 12:16:51 +0100 Subject: [PATCH 018/407] vlada/xfce MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Major Xfce refactoring, also adding versions 4.10.* Signed-off-by: Vladimír Čunát --- pkgs/build-support/fetchurl/mirrors.nix | 14 ++ .../xfce-4.8/applications/mousepad.nix | 20 --- .../xfce-4.8/applications/ristretto.nix | 24 --- .../xfce-4.8/applications/terminal.nix | 25 --- .../xfce-4.8/applications/xfce4-notifyd.nix | 18 --- .../applications/xfce4-taskmanager.nix | 18 --- pkgs/desktops/xfce-4.8/core/exo.nix | 19 --- pkgs/desktops/xfce-4.8/core/libxfce4ui.nix | 24 --- pkgs/desktops/xfce-4.8/core/thunar.nix | 27 ---- pkgs/desktops/xfce-4.8/core/xfce4-panel.nix | 29 ---- pkgs/desktops/xfce-4.8/core/xfce4-session.nix | 24 --- .../desktops/xfce-4.8/core/xfce4-settings.nix | 26 ---- pkgs/desktops/xfce-4.8/core/xfconf.nix | 20 --- pkgs/desktops/xfce-4.8/core/xfdesktop.nix | 26 ---- pkgs/desktops/xfce-4.8/core/xfwm4.nix | 27 ---- pkgs/desktops/xfce-4.8/default.nix | 94 ------------ .../panel-plugins/xfce4-cpufreq-plugin.nix | 18 --- .../applications/gigolo.nix | 17 ++- pkgs/desktops/xfce/applications/mousepad.nix | 25 +++ pkgs/desktops/xfce/applications/ristretto.nix | 28 ++++ pkgs/desktops/xfce/applications/terminal.nix | 23 +++ .../applications/xfce4-mixer.nix | 20 +-- .../xfce/applications/xfce4-notifyd.nix | 28 ++++ .../xfce/applications/xfce4-taskmanager.nix | 21 +++ .../art/xfce4-icon-theme.nix | 11 +- pkgs/desktops/xfce/core/exo.nix | 23 +++ .../{xfce-4.8 => xfce}/core/garcon.nix | 11 +- .../core/gtk-xfce-engine.nix | 19 ++- .../core/libxfce4ui.nix} | 19 ++- .../{xfce-4.8 => xfce}/core/libxfce4util.nix | 11 +- pkgs/desktops/xfce/core/libxfcegui4.nix | 35 +++++ .../{xfce-4.8 => xfce}/core/thunar-volman.nix | 14 +- pkgs/desktops/xfce/core/thunar.nix | 35 +++++ pkgs/desktops/xfce/core/tumbler.nix | 21 +++ .../{xfce-4.8 => xfce}/core/xfce-utils.nix | 16 +- .../core/xfce4-appfinder.nix | 13 +- .../core/xfce4-panel-datadir.patch | 0 pkgs/desktops/xfce/core/xfce4-panel.nix | 35 +++++ .../core}/xfce4-power-manager.nix | 12 +- pkgs/desktops/xfce/core/xfce4-session.nix | 33 ++++ pkgs/desktops/xfce/core/xfce4-settings.nix | 31 ++++ pkgs/desktops/xfce/core/xfconf.nix | 23 +++ pkgs/desktops/xfce/core/xfdesktop.nix | 30 ++++ pkgs/desktops/xfce/core/xfwm4.nix | 31 ++++ pkgs/desktops/xfce/default.nix | 71 +++++++++ .../panel-plugins/xfce4-cpufreq-plugin.nix | 22 +++ .../panel-plugins/xfce4-systemload-plugin.nix | 13 +- .../{xfce-4.8 => xfce}/support/gvfs.nix | 4 +- .../support/libgdu-only.patch | 0 .../{xfce-4.8 => xfce}/support/libgdu.nix | 0 .../libunique/1.1.6-G_CONST_RETURN.patch | 143 ++++++++++++++++++ .../libunique/1.1.6-compiler-warnings.patch | 50 ++++++ .../libraries/libunique/1.1.6-fix-test.patch | 26 ++++ .../libunique/1.1.6-include-terminator.patch | 37 +++++ .../libraries/libunique/default.nix | 31 ++++ pkgs/top-level/all-packages.nix | 10 +- pkgs/top-level/release.nix | 1 - 57 files changed, 926 insertions(+), 520 deletions(-) delete mode 100644 pkgs/desktops/xfce-4.8/applications/mousepad.nix delete mode 100644 pkgs/desktops/xfce-4.8/applications/ristretto.nix delete mode 100644 pkgs/desktops/xfce-4.8/applications/terminal.nix delete mode 100644 pkgs/desktops/xfce-4.8/applications/xfce4-notifyd.nix delete mode 100644 pkgs/desktops/xfce-4.8/applications/xfce4-taskmanager.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/exo.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/libxfce4ui.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/thunar.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/xfce4-panel.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/xfce4-session.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/xfce4-settings.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/xfconf.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/xfdesktop.nix delete mode 100644 pkgs/desktops/xfce-4.8/core/xfwm4.nix delete mode 100644 pkgs/desktops/xfce-4.8/default.nix delete mode 100644 pkgs/desktops/xfce-4.8/panel-plugins/xfce4-cpufreq-plugin.nix rename pkgs/desktops/{xfce-4.8 => xfce}/applications/gigolo.nix (55%) create mode 100644 pkgs/desktops/xfce/applications/mousepad.nix create mode 100644 pkgs/desktops/xfce/applications/ristretto.nix create mode 100644 pkgs/desktops/xfce/applications/terminal.nix rename pkgs/desktops/{xfce-4.8 => xfce}/applications/xfce4-mixer.nix (62%) create mode 100644 pkgs/desktops/xfce/applications/xfce4-notifyd.nix create mode 100644 pkgs/desktops/xfce/applications/xfce4-taskmanager.nix rename pkgs/desktops/{xfce-4.8 => xfce}/art/xfce4-icon-theme.nix (56%) create mode 100644 pkgs/desktops/xfce/core/exo.nix rename pkgs/desktops/{xfce-4.8 => xfce}/core/garcon.nix (56%) rename pkgs/desktops/{xfce-4.8 => xfce}/core/gtk-xfce-engine.nix (50%) rename pkgs/desktops/{xfce-4.8/core/libxfcegui4.nix => xfce/core/libxfce4ui.nix} (61%) rename pkgs/desktops/{xfce-4.8 => xfce}/core/libxfce4util.nix (53%) create mode 100644 pkgs/desktops/xfce/core/libxfcegui4.nix rename pkgs/desktops/{xfce-4.8 => xfce}/core/thunar-volman.nix (57%) create mode 100644 pkgs/desktops/xfce/core/thunar.nix create mode 100644 pkgs/desktops/xfce/core/tumbler.nix rename pkgs/desktops/{xfce-4.8 => xfce}/core/xfce-utils.nix (55%) rename pkgs/desktops/{xfce-4.8 => xfce}/core/xfce4-appfinder.nix (59%) rename pkgs/desktops/{xfce-4.8 => xfce}/core/xfce4-panel-datadir.patch (100%) create mode 100644 pkgs/desktops/xfce/core/xfce4-panel.nix rename pkgs/desktops/{xfce-4.8/applications => xfce/core}/xfce4-power-manager.nix (64%) create mode 100644 pkgs/desktops/xfce/core/xfce4-session.nix create mode 100644 pkgs/desktops/xfce/core/xfce4-settings.nix create mode 100644 pkgs/desktops/xfce/core/xfconf.nix create mode 100644 pkgs/desktops/xfce/core/xfdesktop.nix create mode 100644 pkgs/desktops/xfce/core/xfwm4.nix create mode 100644 pkgs/desktops/xfce/default.nix create mode 100644 pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix rename pkgs/desktops/{xfce-4.8 => xfce}/panel-plugins/xfce4-systemload-plugin.nix (51%) rename pkgs/desktops/{xfce-4.8 => xfce}/support/gvfs.nix (84%) rename pkgs/desktops/{xfce-4.8 => xfce}/support/libgdu-only.patch (100%) rename pkgs/desktops/{xfce-4.8 => xfce}/support/libgdu.nix (100%) create mode 100644 pkgs/development/libraries/libunique/1.1.6-G_CONST_RETURN.patch create mode 100644 pkgs/development/libraries/libunique/1.1.6-compiler-warnings.patch create mode 100644 pkgs/development/libraries/libunique/1.1.6-fix-test.patch create mode 100644 pkgs/development/libraries/libunique/1.1.6-include-terminator.patch create mode 100644 pkgs/development/libraries/libunique/default.nix diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix index 98dd7d8fb8e..9c91ad80d6d 100644 --- a/pkgs/build-support/fetchurl/mirrors.nix +++ b/pkgs/build-support/fetchurl/mirrors.nix @@ -224,6 +224,20 @@ rec { ftp://ftp.nara.wide.ad.jp/pub/X11/GNOME/ ]; + xfce = [ + http://archive.xfce.org/ + http://mirror.netcologne.de/xfce/ + http://archive.se.xfce.org/xfce/ + http://archive.be.xfce.org/xfce/ + http://mirror.perldude.de/archive.xfce.org/ + http://archive.be2.xfce.org/ + http://ftp.udc.es/xfce/ + http://archive.al-us.xfce.org/ + http://mirror.yongbok.net/X11/xfce-mirror/ + http://mirrors.tummy.com/pub/archive.xfce.org/ + http://xfce.mirror.uber.com.au/ + ]; + # X.org. xorg = [ http://xorg.freedesktop.org/releases/ diff --git a/pkgs/desktops/xfce-4.8/applications/mousepad.nix b/pkgs/desktops/xfce-4.8/applications/mousepad.nix deleted file mode 100644 index 395a5c9f084..00000000000 --- a/pkgs/desktops/xfce-4.8/applications/mousepad.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, libxfcegui4, gtk }: - -stdenv.mkDerivation rec { - name = "mousepad-0.2.16"; - - src = fetchurl { - url = "http://archive.xfce.org/src/apps/mousepad/0.2/${name}.tar.bz2"; - sha1 = "4e63033e0a71578f3ec9a0d2e6a505efd0424ef9"; - }; - - buildInputs = [ pkgconfig intltool libxfce4util libxfcegui4 gtk ]; - - meta = { - homepage = http://www.xfce.org/projects/mousepad/; - description = "A simple text editor for Xfce"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/applications/ristretto.nix b/pkgs/desktops/xfce-4.8/applications/ristretto.nix deleted file mode 100644 index ce90891bb0b..00000000000 --- a/pkgs/desktops/xfce-4.8/applications/ristretto.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, libexif, gtk, thunar -, exo, dbus_glib, libxfce4util, libxfce4ui, xfconf }: - -stdenv.mkDerivation rec { - name = "ristretto-0.2.3"; - - src = fetchurl { - url = "http://archive.xfce.org/src/apps/ristretto/0.2/${name}.tar.bz2"; - sha1 = "5a34b865cb9013b67467b0e8d51970f0a1e977d1"; - }; - - buildInputs = - [ pkgconfig intltool libexif gtk dbus_glib libxfce4util - libxfce4ui xfconf - ]; - - meta = { - homepage = http://goodies.xfce.org/projects/applications/ristretto; - description = "A fast and lightweight picture-viewer for the Xfce desktop environment"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/applications/terminal.nix b/pkgs/desktops/xfce-4.8/applications/terminal.nix deleted file mode 100644 index f03a940679a..00000000000 --- a/pkgs/desktops/xfce-4.8/applications/terminal.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ stdenv, fetchurl -, pkgconfig, ncurses -, intltool, vte -, exo, libxfce4util -, gtk -}: - -stdenv.mkDerivation { - name = "xfce-terminal-0.4.8"; - - src = fetchurl { - url = http://archive.xfce.org/src/apps/xfce4-terminal/0.4/Terminal-0.4.8.tar.bz2; - sha1 = "2f12c3a0fffad18976d47e531d404ee308cb2f05"; - }; - - buildInputs = [ pkgconfig intltool exo gtk vte libxfce4util ncurses ]; - - meta = { - homepage = http://www.xfce.org/projects/terminal; - description = "A modern terminal emulator primarily for the Xfce desktop environment"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/applications/xfce4-notifyd.nix b/pkgs/desktops/xfce-4.8/applications/xfce4-notifyd.nix deleted file mode 100644 index 598e6eb414d..00000000000 --- a/pkgs/desktops/xfce-4.8/applications/xfce4-notifyd.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ stdenv, fetchurl, intltool, pkgconfig, gtk, xfce }: - -stdenv.mkDerivation rec { - name = "xfce4-notifyd-0.2.2"; - - src = fetchurl { - url = "http://archive.xfce.org/src/apps/xfce4-notifyd/0.2/${name}.tar.bz2"; - sha256 = "0s4ilc36sl5k5mg5727rmqims1l3dy5pwg6dk93wyjqnqbgnhvmn"; - }; - - buildInputs = [ intltool pkgconfig gtk xfce.libxfce4util xfce.libxfce4ui xfce.xfconf ]; - - meta = { - homepage = http://goodies.xfce.org/projects/applications/xfce4-notifyd; - description = "The Xfce Notify Daemon"; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/desktops/xfce-4.8/applications/xfce4-taskmanager.nix b/pkgs/desktops/xfce-4.8/applications/xfce4-taskmanager.nix deleted file mode 100644 index cffaa6bfe09..00000000000 --- a/pkgs/desktops/xfce-4.8/applications/xfce4-taskmanager.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ stdenv, fetchurl, intltool, pkgconfig, gtk }: - -stdenv.mkDerivation rec { - name = "xfce4-taskmanager-1.0.0"; - - src = fetchurl { - url = "http://archive.xfce.org/src/apps/xfce4-taskmanager/1.0/${name}.tar.bz2"; - sha256 = "1vm9gw7j4ngjlpdhnwdf7ifx6xrrn21011almx2vwidhk2f9zvy0"; - }; - - buildInputs = [ intltool pkgconfig gtk ]; - - meta = { - homepage = http://goodies.xfce.org/projects/applications/xfce4-taskmanager; - description = "Easy to use task manager for XFCE"; - platforms = stdenv.lib.platforms.linux; - }; -} \ No newline at end of file diff --git a/pkgs/desktops/xfce-4.8/core/exo.nix b/pkgs/desktops/xfce-4.8/core/exo.nix deleted file mode 100644 index 468132a2a81..00000000000 --- a/pkgs/desktops/xfce-4.8/core/exo.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, URI, glib, gtk, libxfce4util }: - -stdenv.mkDerivation rec { - name = "exo-0.6.2"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/exo/0.6/${name}.tar.bz2"; - sha1 = "2486f12c814630068665e22cdf417f0f0f05dab1"; - }; - - buildInputs = - [ pkgconfig intltool URI glib gtk libxfce4util ]; - - meta = { - homepage = http://www.xfce.org/projects/exo; - description = "Application library for the Xfce desktop environment"; - license = "GPLv2+"; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/libxfce4ui.nix b/pkgs/desktops/xfce-4.8/core/libxfce4ui.nix deleted file mode 100644 index 76c285ae599..00000000000 --- a/pkgs/desktops/xfce-4.8/core/libxfce4ui.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, xfconf -, libstartup_notification }: - -stdenv.mkDerivation rec { - name = "libxfce4ui-4.8.1"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/libxfce4ui/4.8/${name}.tar.bz2"; - sha1 = "408645581e589135aa03d2e9b84f4eede68596b2"; - }; - - buildInputs = - [ pkgconfig intltool gtk libxfce4util xfconf - libstartup_notification - ]; - - enableParallelBuilding = true; - - meta = { - homepage = http://www.xfce.org/; - description = "Basic GUI library for Xfce"; - license = "LGPLv2+"; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/thunar.nix b/pkgs/desktops/xfce-4.8/core/thunar.nix deleted file mode 100644 index 07fd734a1f2..00000000000 --- a/pkgs/desktops/xfce-4.8/core/thunar.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, exo, gtk, libxfce4util, libxfce4ui -, dbus_glib, libstartup_notification, xfconf, xfce4panel, udev, libnotify }: - -stdenv.mkDerivation rec { - version = "1.2.3"; - name = "thunar-${version}"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/thunar/1.2/Thunar-${version}.tar.bz2"; - sha1 = "a05d0e14515d70c5ad94cca881822a707d366863"; - }; - - buildInputs = - [ pkgconfig intltool gtk exo libxfce4util libxfce4ui - dbus_glib libstartup_notification xfconf xfce4panel udev libnotify - ]; - - enableParallelBuilding = true; - - meta = { - homepage = http://thunar.xfce.org/; - description = "Xfce file manager"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/xfce4-panel.nix b/pkgs/desktops/xfce-4.8/core/xfce4-panel.nix deleted file mode 100644 index e14d1acf33d..00000000000 --- a/pkgs/desktops/xfce-4.8/core/xfce4-panel.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, garcon -, libxfce4ui, xfconf, libwnck, exo }: - -stdenv.mkDerivation rec { - name = "xfce4-panel-4.8.6"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfce4-panel/4.8/${name}.tar.bz2"; - sha1 = "332fc968332e6271e1bb65d6de8de2524b0440ec"; - }; - - patches = [ ./xfce4-panel-datadir.patch ]; - patchFlags = "-p1"; - - buildInputs = - [ pkgconfig intltool gtk libxfce4util garcon libxfce4ui xfconf - exo libwnck - ]; - - enableParallelBuilding = true; - - meta = { - homepage = http://www.xfce.org/; - description = "Xfce panel"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/xfce4-session.nix b/pkgs/desktops/xfce-4.8/core/xfce4-session.nix deleted file mode 100644 index 0e0f1a86939..00000000000 --- a/pkgs/desktops/xfce-4.8/core/xfce4-session.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui -, libwnck, dbus_glib, xfconf, xorg, xfce4panel }: - -stdenv.mkDerivation rec { - name = "xfce4-session-4.8.2"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfce4-session/4.8/${name}.tar.bz2"; - sha1 = "636c2983552861a959225e554898675152a4d812"; - }; - - buildInputs = - [ pkgconfig intltool gtk libxfce4util libxfce4ui libwnck dbus_glib - xfconf xorg.iceauth xfce4panel - ]; - - meta = { - homepage = http://www.xfce.org/; - description = "Session manager for Xfce"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/xfce4-settings.nix b/pkgs/desktops/xfce-4.8/core/xfce4-settings.nix deleted file mode 100644 index dc6e8e555b2..00000000000 --- a/pkgs/desktops/xfce-4.8/core/xfce4-settings.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, exo, gtk, libxfce4util, libxfce4ui -, xfconf, xorg, libnotify, libxklavier }: - -stdenv.mkDerivation rec { - name = "xfce4-settings-4.8.3"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfce4-settings/4.8/${name}.tar.bz2"; - sha1 = "98431633ba3ec2a4a10182bc7266904d9256949b"; - }; - - buildInputs = - [ pkgconfig intltool exo gtk libxfce4util libxfce4ui - xfconf libnotify xorg.libXcursor libxklavier - ]; - - configureFlags = "--enable-pluggable-dialogs --enable-sound-settings"; - - meta = { - homepage = http://www.xfce.org/; - description = "Settings manager for Xfce"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/xfconf.nix b/pkgs/desktops/xfce-4.8/core/xfconf.nix deleted file mode 100644 index e0c61d3a1f5..00000000000 --- a/pkgs/desktops/xfce-4.8/core/xfconf.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, dbus_glib }: - -stdenv.mkDerivation rec { - name = "xfconf-4.8.1"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfconf/4.8/${name}.tar.bz2"; - sha1 = "aeab124f7c548e387b37a5476e594ef559515533"; - }; - - buildInputs = [ pkgconfig intltool glib libxfce4util ]; - - propagatedBuildInputs = [ dbus_glib ]; - - meta = { - homepage = http://www.xfce.org/; - description = "Simple client-server configuration storage and query system for Xfce"; - license = "GPLv2"; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/xfdesktop.nix b/pkgs/desktops/xfce-4.8/core/xfdesktop.nix deleted file mode 100644 index 45c82f1ec02..00000000000 --- a/pkgs/desktops/xfce-4.8/core/xfdesktop.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, gtk, dbus_glib, libxfce4util -, libxfce4ui, libwnck, xfconf, garcon, libnotify, exo }: - -stdenv.mkDerivation rec { - name = "xfdesktop-4.8.3"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfdesktop/4.8/${name}.tar.bz2"; - sha1 = "b3af72a69627f860f22b37d021efd81e4e37eb55"; - }; - - buildInputs = - [ pkgconfig intltool gtk dbus_glib libxfce4util libxfce4ui libwnck xfconf - garcon libnotify exo - ]; - - enableParallelBuilding = true; - - meta = { - homepage = http://www.xfce.org/; - description = "Xfce desktop manager"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/core/xfwm4.nix b/pkgs/desktops/xfce-4.8/core/xfwm4.nix deleted file mode 100644 index c0f89784bfb..00000000000 --- a/pkgs/desktops/xfce-4.8/core/xfwm4.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gtk, intltool, libxfce4util -, libxfce4ui, xfconf, libwnck, libstartup_notification, xorg }: - -stdenv.mkDerivation rec { - name = "xfwm4-4.8.3"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfwm4/4.8/${name}.tar.bz2"; - sha1 = "6d27deca383e0c2fba0cede0bbe0e9aee18e9257"; - }; - - buildInputs = - [ pkgconfig intltool gtk libxfce4util libxfce4ui xfconf - libwnck libstartup_notification - xorg.libXcomposite xorg.libXfixes xorg.libXdamage - ]; - - enableParallelBuilding = true; - - meta = { - homepage = http://www.xfce.org/; - description = "Window manager for Xfce"; - license = "GPLv2+"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/desktops/xfce-4.8/default.nix b/pkgs/desktops/xfce-4.8/default.nix deleted file mode 100644 index bfe7fddd738..00000000000 --- a/pkgs/desktops/xfce-4.8/default.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ callPackage, pkgs }: - -rec { - inherit (pkgs) gtk glib; - - #### SUPPORT - - # The useful bits from ‘gnome-disk-utility’. - libgdu = callPackage ./support/libgdu.nix { }; - - # Gvfs is required by Thunar for the trash feature and for volume - # mounting. Should use the one from Gnome, but I don't want to mess - # with the Gnome packages (or pull in a zillion Gnome dependencies). - gvfs = callPackage ./support/gvfs.nix { }; - - - #### CORE - - libxfce4util = callPackage ./core/libxfce4util.nix { }; - - exo = callPackage ./core/exo.nix { - inherit (pkgs.perlPackages) URI; - }; - - xfconf = callPackage ./core/xfconf.nix { }; - - libxfcegui4 = callPackage ./core/libxfcegui4.nix { - inherit (pkgs.gnome) libglade; - }; - - libxfce4ui = callPackage ./core/libxfce4ui.nix { }; - - xfwm4 = callPackage ./core/xfwm4.nix { - inherit (pkgs.gnome) libwnck; - }; - - xfceutils = callPackage ./core/xfce-utils.nix { }; - - garcon = callPackage ./core/garcon.nix { }; - - xfce4panel = callPackage ./core/xfce4-panel.nix { - inherit (pkgs.gnome) libwnck; - }; - - xfce4session = callPackage ./core/xfce4-session.nix { - inherit (pkgs.gnome) libwnck; - }; - - xfce4settings = callPackage ./core/xfce4-settings.nix { }; - - xfdesktop = callPackage ./core/xfdesktop.nix { - inherit (pkgs.gnome) libwnck; - }; - - thunar = callPackage ./core/thunar.nix { }; - - thunar_volman = callPackage ./core/thunar-volman.nix { }; - - gtk_xfce_engine = callPackage ./core/gtk-xfce-engine.nix { }; - - xfce4_appfinder = callPackage ./core/xfce4-appfinder.nix { }; - - - #### APPLICATIONS - - terminal = callPackage ./applications/terminal.nix { - inherit (pkgs.gnome) vte; - }; - - gigolo = callPackage ./applications/gigolo.nix { }; - - mousepad = callPackage ./applications/mousepad.nix { }; - - ristretto = callPackage ./applications/ristretto.nix { }; - - xfce4_notifyd = callPackage ./applications/xfce4-notifyd.nix { }; - - xfce4_power_manager = callPackage ./applications/xfce4-power-manager.nix { }; - - xfce4mixer = callPackage ./applications/xfce4-mixer.nix { }; - - xfce4_taskmanager = callPackage ./applications/xfce4-taskmanager.nix { }; - - - #### ART - - xfce4icontheme = callPackage ./art/xfce4-icon-theme.nix { }; - - #### PANEL PLUGINS - - xfce4_systemload_plugin = callPackage ./panel-plugins/xfce4-systemload-plugin.nix {}; - xfce4_cpufreq_plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin.nix {}; - -} diff --git a/pkgs/desktops/xfce-4.8/panel-plugins/xfce4-cpufreq-plugin.nix b/pkgs/desktops/xfce-4.8/panel-plugins/xfce4-cpufreq-plugin.nix deleted file mode 100644 index c3f34219464..00000000000 --- a/pkgs/desktops/xfce-4.8/panel-plugins/xfce4-cpufreq-plugin.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4panel, libxfce4ui, libxfcegui4, xfconf, gtk}: - -stdenv.mkDerivation rec { - name = "xfce4-cpufreq-plugin-1.0.0"; - - src = fetchurl { - url = "http://archive.xfce.org/src/panel-plugins/xfce4-cpufreq-plugin/1.0/${name}.tar.bz2"; - sha256 = "0q2lj8a25iq9w3dynh6qvsmh19y1v7i82g46yza6gvw7fjcrmcz1"; - }; - - buildInputs = [ pkgconfig intltool libxfce4util libxfce4ui xfce4panel libxfcegui4 xfconf gtk ]; - - meta = { - homepage = http://www.xfce.org/; - description = "CPU Freq load panel plugin for Xfce"; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/desktops/xfce-4.8/applications/gigolo.nix b/pkgs/desktops/xfce/applications/gigolo.nix similarity index 55% rename from pkgs/desktops/xfce-4.8/applications/gigolo.nix rename to pkgs/desktops/xfce/applications/gigolo.nix index 5215697bbca..b54ea8cc623 100644 --- a/pkgs/desktops/xfce-4.8/applications/gigolo.nix +++ b/pkgs/desktops/xfce/applications/gigolo.nix @@ -1,12 +1,15 @@ -{ stdenv, fetchurl, python, gettext, intltool, pkgconfig, gtk, gvfs}: +{ stdenv, fetchurl, python, gettext, intltool, pkgconfig, gtk, gvfs }: stdenv.mkDerivation rec { - name = "gigolo-0.4.1"; - + p_name = "gigolo"; + ver_maj = "0.4"; + ver_min = "1"; + src = fetchurl { - url = "http://archive.xfce.org/src/apps/gigolo/0.4/${name}.tar.bz2"; + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; sha256 = "1y8p9bbv1a4qgbxl4vn6zbag3gb7gl8qj75cmhgrrw9zrvqbbww2"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ python gettext intltool gtk pkgconfig gvfs]; @@ -15,8 +18,8 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://goodies.xfce.org/projects/applications/gigolo; - description = "Gigolo is a frontend to easily manage connections to remote filesystems"; + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "A frontend to easily manage connections to remote filesystems"; platforms = stdenv.lib.platforms.linux; }; -} \ No newline at end of file +} diff --git a/pkgs/desktops/xfce/applications/mousepad.nix b/pkgs/desktops/xfce/applications/mousepad.nix new file mode 100644 index 00000000000..9bc9634469c --- /dev/null +++ b/pkgs/desktops/xfce/applications/mousepad.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, libxfcegui4 +, gtk, gtksourceview, dbus, dbus_glib }: + +stdenv.mkDerivation rec { + p_name = "mousepad"; + ver_maj = "0.3"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0v84zwhjv2xynvisn5vmp7dbxfj4l4258m82ks7hn3adk437bwhh"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ + pkgconfig intltool libxfce4util libxfcegui4 + gtk gtksourceview dbus dbus_glib + ]; + + meta = { + homepage = http://www.xfce.org/; + description = "A simple text editor for Xfce"; + license = "GPLv2+"; + }; +} diff --git a/pkgs/desktops/xfce/applications/ristretto.nix b/pkgs/desktops/xfce/applications/ristretto.nix new file mode 100644 index 00000000000..a42e882710a --- /dev/null +++ b/pkgs/desktops/xfce/applications/ristretto.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libexif, gtk +, exo, dbus_glib, libxfce4util, libxfce4ui, xfconf }: + +stdenv.mkDerivation rec { + p_name = "ristretto"; + ver_maj = "0.6"; + ver_min = "3"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0y9d8w1plwp4vmxs44y8k8x15i0k0xln89k6jndhv6lf57g1cs1b"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = + [ pkgconfig intltool libexif gtk dbus_glib exo libxfce4util + libxfce4ui xfconf + ]; + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "A fast and lightweight picture-viewer for the Xfce desktop environment"; + license = "GPLv2+"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/pkgs/desktops/xfce/applications/terminal.nix b/pkgs/desktops/xfce/applications/terminal.nix new file mode 100644 index 00000000000..0a61e027356 --- /dev/null +++ b/pkgs/desktops/xfce/applications/terminal.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, intltool, ncurses, gtk, vte, dbus_glib +, exo, libxfce4util, libxfce4ui +}: + +stdenv.mkDerivation rec { + p_name = "xfce4-terminal"; + ver_maj = "0.6"; + ver_min = "1"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1j6lpkq952mrl5p24y88f89wn9g0namvywhma639xxsswlkn8d31"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ pkgconfig intltool exo gtk vte libxfce4util ncurses dbus_glib libxfce4ui ]; + + meta = { + homepage = http://www.xfce.org/projects/terminal; + description = "A modern terminal emulator primarily for the Xfce desktop environment"; + license = "GPLv2+"; + }; +} diff --git a/pkgs/desktops/xfce-4.8/applications/xfce4-mixer.nix b/pkgs/desktops/xfce/applications/xfce4-mixer.nix similarity index 62% rename from pkgs/desktops/xfce-4.8/applications/xfce4-mixer.nix rename to pkgs/desktops/xfce/applications/xfce4-mixer.nix index 2f1ab8a8e93..972442dc56b 100644 --- a/pkgs/desktops/xfce-4.8/applications/xfce4-mixer.nix +++ b/pkgs/desktops/xfce/applications/xfce4-mixer.nix @@ -1,8 +1,7 @@ -{ stdenv, fetchurl, pkgconfig, intltool, glib, gstreamer, gst_plugins_base -, gtk, libxfce4util, libxfce4ui, xfce4panel, xfconf }: +{ stdenv, fetchurl, pkgconfig, intltool, glib, gstreamer, gst_plugins_base, gtk +, libxfce4util, libxfce4ui, xfce4panel, xfconf, libunique?null }: let - # The usual Gstreamer plugins package has a zillion dependencies # that we don't need for a simple mixer, so build a minimal package. gst_plugins_minimal = gst_plugins_base.override { @@ -12,16 +11,19 @@ let in stdenv.mkDerivation rec { - name = "xfce4-mixer-4.8.0"; - + p_name = "xfce4-mixer"; + ver_maj = "4.10"; + ver_min = "0"; + src = fetchurl { - url = "http://archive.xfce.org/src/apps/xfce4-mixer/4.8/${name}.tar.bz2"; - sha1 = "24f3401a68f10d2c620e354a6de98e09fe808665"; + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1pnsd00583l7p5d80rxbh58brzy3jnccwikbbbm730a33c08kid8"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig intltool glib gstreamer gst_plugins_minimal gtk - libxfce4util libxfce4ui xfce4panel xfconf + libxfce4util libxfce4ui xfce4panel xfconf libunique ]; postInstall = @@ -31,7 +33,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://www.xfce.org/projects/xfce4-mixer; + homepage = http://www.xfce.org/projects/xfce4-mixer; # referenced but inactive description = "A volume control application for the Xfce desktop environment"; license = "GPLv2+"; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/desktops/xfce/applications/xfce4-notifyd.nix b/pkgs/desktops/xfce/applications/xfce4-notifyd.nix new file mode 100644 index 00000000000..62c5bbe5220 --- /dev/null +++ b/pkgs/desktops/xfce/applications/xfce4-notifyd.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, intltool +, gtk , libxfce4util, libxfce4ui, xfconf }: + +stdenv.mkDerivation rec { + p_name = "xfce4-notifyd"; + ver_maj = "0.2"; + ver_min = "2"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0s4ilc36sl5k5mg5727rmqims1l3dy5pwg6dk93wyjqnqbgnhvmn"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ pkgconfig intltool gtk libxfce4util libxfce4ui xfconf ]; + + preFixup = '' + rm $out/share/icons/hicolor/icon-theme.cache + # to be able to run the daemon we need it in PATH + cp -l $out/lib/xfce4/notifyd/xfce4-notifyd $out/bin + ''; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "Notification daemon for Xfce"; + license = "GPLv2+"; + }; +} diff --git a/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix b/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix new file mode 100644 index 00000000000..baef6872848 --- /dev/null +++ b/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gtk, libwnck }: + +stdenv.mkDerivation rec { + p_name = "xfce4-taskmanager"; + ver_maj = "1.0"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1vm9gw7j4ngjlpdhnwdf7ifx6xrrn21011almx2vwidhk2f9zvy0"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ intltool pkgconfig gtk libwnck ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "Easy to use task manager for Xfce"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/desktops/xfce-4.8/art/xfce4-icon-theme.nix b/pkgs/desktops/xfce/art/xfce4-icon-theme.nix similarity index 56% rename from pkgs/desktops/xfce-4.8/art/xfce4-icon-theme.nix rename to pkgs/desktops/xfce/art/xfce4-icon-theme.nix index afa934b6031..1bd257991c9 100644 --- a/pkgs/desktops/xfce-4.8/art/xfce4-icon-theme.nix +++ b/pkgs/desktops/xfce/art/xfce4-icon-theme.nix @@ -1,12 +1,15 @@ { stdenv, fetchurl, pkgconfig, intltool, gtk }: stdenv.mkDerivation rec { - name = "xfce4-icon-theme-4.4.3"; - + p_name = "xfce4-icon-theme"; + ver_maj = "4.4"; + ver_min = "3"; + src = fetchurl { - url = "http://archive.xfce.org/src/art/xfce4-icon-theme/4.4/${name}.tar.bz2"; - sha1 = "0c0d0c45cd4a7f609310db8e9d17c1c4a131a6e7"; + url = "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1yk6rx3zr9grm4jwpjvqdkl13pisy7qn1wm5cqzmd2kbsn96cy6l"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig intltool gtk ]; diff --git a/pkgs/desktops/xfce/core/exo.nix b/pkgs/desktops/xfce/core/exo.nix new file mode 100644 index 00000000000..3131ea679b0 --- /dev/null +++ b/pkgs/desktops/xfce/core/exo.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, intltool, URI, glib, gtk, libxfce4ui, libxfce4util }: + +stdenv.mkDerivation rec { + p_name = "exo"; + ver_maj = "0.10"; + ver_min = "2"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1kknxiz703q4snmry65ajm26jwjslbgpzdal6bd090m3z25q51dk"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ pkgconfig intltool URI glib gtk libxfce4ui libxfce4util ]; + + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + meta = { + homepage = "http://www.xfce.org/projects/${p_name}"; + description = "Application library for the Xfce desktop environment"; + license = "GPLv2+"; + }; +} diff --git a/pkgs/desktops/xfce-4.8/core/garcon.nix b/pkgs/desktops/xfce/core/garcon.nix similarity index 56% rename from pkgs/desktops/xfce-4.8/core/garcon.nix rename to pkgs/desktops/xfce/core/garcon.nix index 7f5f18173b2..8e87212c7f7 100644 --- a/pkgs/desktops/xfce-4.8/core/garcon.nix +++ b/pkgs/desktops/xfce/core/garcon.nix @@ -1,12 +1,15 @@ { stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util }: stdenv.mkDerivation rec { - name = "garcon-0.1.9"; - + p_name = "garcon"; + ver_maj = "0.2"; + ver_min = "0"; + src = fetchurl { - url = "http://archive.xfce.org/src/xfce/garcon/0.1/${name}.tar.bz2"; - sha1 = "2eeab19bc10747a40b44afd4598a2f555eb69952"; + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0v7pkvxcayi86z4f173z5l7w270f3g369sa88z59w0y0p7ns7ph2"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig intltool glib libxfce4util ]; diff --git a/pkgs/desktops/xfce-4.8/core/gtk-xfce-engine.nix b/pkgs/desktops/xfce/core/gtk-xfce-engine.nix similarity index 50% rename from pkgs/desktops/xfce-4.8/core/gtk-xfce-engine.nix rename to pkgs/desktops/xfce/core/gtk-xfce-engine.nix index 4518897cc2f..a97a11c6f12 100644 --- a/pkgs/desktops/xfce-4.8/core/gtk-xfce-engine.nix +++ b/pkgs/desktops/xfce/core/gtk-xfce-engine.nix @@ -1,15 +1,18 @@ { stdenv, fetchurl, pkgconfig, intltool, gtk }: stdenv.mkDerivation rec { - name = "gtk-xfce-engine-2.8.1"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/gtk-xfce-engine/2.8/${name}.tar.bz2"; - sha1 = "d7779f07cc76585be063bc25fa91e660e1fd9c97"; - }; + p_name = "gtk-xfce-engine"; + ver_maj = "3.0"; + ver_min = "1"; - buildInputs = - [ pkgconfig intltool gtk ]; + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0vd0ly81540f9133abza56mlqqx1swp0j70ll8kf948sva0wy0zb"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + #TODO: gtk3 + buildInputs = [ pkgconfig intltool gtk ]; meta = { homepage = http://www.xfce.org/; diff --git a/pkgs/desktops/xfce-4.8/core/libxfcegui4.nix b/pkgs/desktops/xfce/core/libxfce4ui.nix similarity index 61% rename from pkgs/desktops/xfce-4.8/core/libxfcegui4.nix rename to pkgs/desktops/xfce/core/libxfce4ui.nix index 20e82a2c92f..4f0e7062e45 100644 --- a/pkgs/desktops/xfce-4.8/core/libxfcegui4.nix +++ b/pkgs/desktops/xfce/core/libxfce4ui.nix @@ -2,14 +2,17 @@ , libglade, libstartup_notification }: stdenv.mkDerivation rec { - name = "libxfcegui4-4.8.1"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/libxfcegui4/4.8/${name}.tar.bz2"; - sha1 = "246fcaa71fc8cf44dae0b4c919411231eedd662f"; - }; + p_name = "libxfce4ui"; + ver_maj = "4.10"; + ver_min = "0"; - # By default, libxfcegui4 tries to install into libglade's prefix. + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1qm31s6568cz4c8rl9fsfq0xmf7pldxm0ki62gx1cpybihlgmfd2"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + #TODO: gladeui # Install into our own prefix instead. preConfigure = '' @@ -17,7 +20,7 @@ stdenv.mkDerivation rec { ''; buildInputs = - [ pkgconfig intltool gtk libxfce4util libglade + [ pkgconfig intltool gtk libxfce4util xfconf libglade libstartup_notification ]; diff --git a/pkgs/desktops/xfce-4.8/core/libxfce4util.nix b/pkgs/desktops/xfce/core/libxfce4util.nix similarity index 53% rename from pkgs/desktops/xfce-4.8/core/libxfce4util.nix rename to pkgs/desktops/xfce/core/libxfce4util.nix index 7a567d62935..88874722b7d 100644 --- a/pkgs/desktops/xfce-4.8/core/libxfce4util.nix +++ b/pkgs/desktops/xfce/core/libxfce4util.nix @@ -1,12 +1,15 @@ { stdenv, fetchurl, pkgconfig, glib, intltool }: stdenv.mkDerivation rec { - name = "libxfce4util-4.8.2"; - + p_name = "libxfce4util"; + ver_maj = "4.10"; + ver_min = "0"; + src = fetchurl { - url = "http://archive.xfce.org/src/xfce/libxfce4util/4.8/${name}.tar.bz2"; - sha1 = "e7498c2e5fca2c89dfef89e0788f10eebbd020c3"; + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "13k0wwbbqvdmbj4xmk4nxdlgvrdgr5y6r3dk380mzfw053hzwy89"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig glib intltool ]; diff --git a/pkgs/desktops/xfce/core/libxfcegui4.nix b/pkgs/desktops/xfce/core/libxfcegui4.nix new file mode 100644 index 00000000000..e30fcf22357 --- /dev/null +++ b/pkgs/desktops/xfce/core/libxfcegui4.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk +, libxfce4util, xfconf, libglade, libstartup_notification }: + +stdenv.mkDerivation rec { + p_name = "libxfcegui4"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0cs5im0ib0cmr1lhr5765yliqjfyxvk4kwy8h1l8bn3mj6bzk0ib"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + #TODO: gladeui + # By default, libxfcegui4 tries to install into libglade's prefix. + # Install into our own prefix instead. + preConfigure = + '' + configureFlags="--with-libglade-module-path=$out/lib/libglade/2.0" + ''; + #NOTE: missing keyboard library support is OK according to the mailing-list + + buildInputs = + [ pkgconfig intltool gtk libxfce4util xfconf libglade + libstartup_notification + ]; + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + meta = { + homepage = http://www.xfce.org/; + description = "Basic GUI library for Xfce"; + license = "LGPLv2+"; + }; +} diff --git a/pkgs/desktops/xfce-4.8/core/thunar-volman.nix b/pkgs/desktops/xfce/core/thunar-volman.nix similarity index 57% rename from pkgs/desktops/xfce-4.8/core/thunar-volman.nix rename to pkgs/desktops/xfce/core/thunar-volman.nix index 490390d1bac..94fc0e369e5 100644 --- a/pkgs/desktops/xfce-4.8/core/thunar-volman.nix +++ b/pkgs/desktops/xfce/core/thunar-volman.nix @@ -2,22 +2,26 @@ , xfconf, udev, libnotify }: stdenv.mkDerivation rec { - name = "thunar-volman-0.6.0"; - + p_name = "thunar-volman"; + ver_maj = "0.8"; + ver_min = "0"; + src = fetchurl { - url = "http://archive.xfce.org/src/xfce/thunar-volman/0.6/${name}.tar.bz2"; - sha1 = "dcda936948623b342b290a78c294f71c038e832e"; + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1sxw09fwyn5sr6ipxk7r8gqjyf41c2v7vkgl0l6mhy5mcb48f27z"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig intltool exo gtk udev libxfce4ui libxfce4util xfconf libnotify ]; + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; enableParallelBuilding = true; meta = { - homepage = http://thunar.xfce.org/; + homepage = http://goodies.xfce.org/projects/thunar-plugins/thunar-volman; description = "Thunar extension for automatic management of removable drives and media"; license = "GPLv2+"; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/desktops/xfce/core/thunar.nix b/pkgs/desktops/xfce/core/thunar.nix new file mode 100644 index 00000000000..848fca345c5 --- /dev/null +++ b/pkgs/desktops/xfce/core/thunar.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, intltool +, gtk, dbus_glib, libstartup_notification, libnotify, libexif, pcre, udev +, exo, libxfce4util, xfconf, xfce4panel +}: + +stdenv.mkDerivation rec { + p_name = "thunar"; + ver_maj = "1.6"; + ver_min = "2"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/Thunar-${ver_maj}.${ver_min}.tar.bz2"; + sha256 = "11dx38rvkfbp91pxrprymxhimsm90gvizp277x9s5rwnwcm1ggbx"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ + pkgconfig intltool + gtk dbus_glib libstartup_notification libnotify libexif pcre udev + exo libxfce4util xfconf xfce4panel + ]; + # TODO: optionality? + + enableParallelBuilding = true; + + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + meta = { + homepage = http://thunar.xfce.org/; + description = "Xfce file manager"; + license = "GPLv2+"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/pkgs/desktops/xfce/core/tumbler.nix b/pkgs/desktops/xfce/core/tumbler.nix new file mode 100644 index 00000000000..a1da730b35b --- /dev/null +++ b/pkgs/desktops/xfce/core/tumbler.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, pkgconfig, intltool, dbus_glib, gdk_pixbuf }: + +stdenv.mkDerivation rec { + p_name = "tumbler"; + ver_maj = "0.1"; + ver_min = "27"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0s9qj99b81asmlqa823nzykq8g6p9azcp2niak67y9bp52wv6q2c"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ pkgconfig intltool dbus_glib gdk_pixbuf ]; + + meta = { + homepage = http://git.xfce.org/xfce/tumbler/; + description = "A D-Bus thumbnailer service"; + license = "GPLv2"; + }; +} diff --git a/pkgs/desktops/xfce-4.8/core/xfce-utils.nix b/pkgs/desktops/xfce/core/xfce-utils.nix similarity index 55% rename from pkgs/desktops/xfce-4.8/core/xfce-utils.nix rename to pkgs/desktops/xfce/core/xfce-utils.nix index fde8a2c3953..625780adb31 100644 --- a/pkgs/desktops/xfce-4.8/core/xfce-utils.nix +++ b/pkgs/desktops/xfce/core/xfce-utils.nix @@ -1,19 +1,17 @@ -{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui }: +{ v, h, stdenv, fetchXfce, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui, dbus_glib }: stdenv.mkDerivation rec { - name = "xfce-utils-4.8.3"; - - src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfce-utils/4.8/${name}.tar.bz2"; - sha1 = "159d445b689ebbf73462a4b4baf5cce4e04afaab"; - }; + name = "xfce-utils-${v}"; + src = fetchXfce.core name h; configureFlags = "--with-xsession-prefix=$(out)/share/xsessions --with-vendor-info=NixOS.org"; - buildInputs = [ pkgconfig intltool gtk libxfce4util libxfce4ui ]; + buildInputs = [ pkgconfig intltool gtk libxfce4util libxfce4ui dbus_glib ]; + + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; meta = { - homepage = http://www.xfce.org/; + homepage = http://www.xfce.org/projects/xfce-utils; description = "Utilities and scripts for Xfce"; license = "GPLv2+"; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/desktops/xfce-4.8/core/xfce4-appfinder.nix b/pkgs/desktops/xfce/core/xfce4-appfinder.nix similarity index 59% rename from pkgs/desktops/xfce-4.8/core/xfce4-appfinder.nix rename to pkgs/desktops/xfce/core/xfce4-appfinder.nix index b8165ebb178..b4c9c790ac1 100644 --- a/pkgs/desktops/xfce-4.8/core/xfce4-appfinder.nix +++ b/pkgs/desktops/xfce/core/xfce4-appfinder.nix @@ -2,12 +2,15 @@ , libxfce4ui, garcon, xfconf }: stdenv.mkDerivation rec { - name = "xfce4-appfinder-4.8.0"; - + p_name = "xfce4-appfinder"; + ver_maj = "4.9"; # no 4.10 (stable) release yet + ver_min = "4"; + src = fetchurl { - url = "http://archive.xfce.org/src/xfce/xfce4-appfinder/4.8/${name}.tar.bz2"; - sha1 = "444bbcbded8d2346f9b9beb57ec7adaf556811c9"; + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "12lgrbd1n50w9n8xkpai98s2aw8vmjasrgypc57sp0x0qafsqaxq"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig intltool glib gtk libxfce4util libxfce4ui garcon xfconf ]; @@ -15,7 +18,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = { - homepage = http://www.xfce.org/; + homepage = http://docs.xfce.org/xfce/xfce4-appfinder/; description = "Xfce application finder, a tool to locate and launch programs on your system"; license = "GPLv2+"; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/desktops/xfce-4.8/core/xfce4-panel-datadir.patch b/pkgs/desktops/xfce/core/xfce4-panel-datadir.patch similarity index 100% rename from pkgs/desktops/xfce-4.8/core/xfce4-panel-datadir.patch rename to pkgs/desktops/xfce/core/xfce4-panel-datadir.patch diff --git a/pkgs/desktops/xfce/core/xfce4-panel.nix b/pkgs/desktops/xfce/core/xfce4-panel.nix new file mode 100644 index 00000000000..a026c4664f1 --- /dev/null +++ b/pkgs/desktops/xfce/core/xfce4-panel.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui +, libwnck, exo, garcon, xfconf, libstartup_notification }: + +stdenv.mkDerivation rec { + p_name = "xfce4-panel"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1f8903nx6ivzircl8d8s9zna4vjgfy0qhjk5d2x19g9bmycgj89k"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + patches = [ ./xfce4-panel-datadir.patch ]; + patchFlags = "-p1"; + + buildInputs = + [ pkgconfig intltool gtk libxfce4util exo libwnck + garcon xfconf libstartup_notification + ]; + propagatedBuildInputs = [ libxfce4ui ]; + + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + enableParallelBuilding = true; + + meta = { + homepage = http://www.xfce.org/projects/xfce4-panel; + description = "Xfce panel"; + license = "GPLv2+"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/pkgs/desktops/xfce-4.8/applications/xfce4-power-manager.nix b/pkgs/desktops/xfce/core/xfce4-power-manager.nix similarity index 64% rename from pkgs/desktops/xfce-4.8/applications/xfce4-power-manager.nix rename to pkgs/desktops/xfce/core/xfce4-power-manager.nix index bad3b52a6bb..7a9b2596e75 100644 --- a/pkgs/desktops/xfce-4.8/applications/xfce4-power-manager.nix +++ b/pkgs/desktops/xfce/core/xfce4-power-manager.nix @@ -2,17 +2,21 @@ , libxfce4ui, libxfce4util, libnotify, xfce4panel }: stdenv.mkDerivation rec { - name = "xfce4-power-manager-1.0.10"; - + p_name = "xfce4-power-manager"; + ver_maj = "1.0"; + ver_min = "10"; + src = fetchurl { - url = "http://archive.xfce.org/src/apps/xfce4-power-manager/1.0/${name}.tar.bz2"; - sha1 = "64dd7a8fae9cd1cbcf6403d2f51f2281f38cca05"; + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1w120k1sl4s459ijaxkqkba6g1p2sqrf9paljv05wj0wz12bpr40"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig intltool gtk dbus_glib xfconf libxfce4ui libxfce4util libnotify xfce4panel ]; + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; meta = { homepage = http://goodies.xfce.org/projects/applications/xfce4-power-manager; diff --git a/pkgs/desktops/xfce/core/xfce4-session.nix b/pkgs/desktops/xfce/core/xfce4-session.nix new file mode 100644 index 00000000000..a8e7e66c705 --- /dev/null +++ b/pkgs/desktops/xfce/core/xfce4-session.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui, xfce4panel +, libwnck, dbus_glib, xfconf, libglade, xorg }: + +#TODO: gnome stuff: gconf (assistive?), keyring + +stdenv.mkDerivation rec { + p_name = "xfce4-session"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1kj65jkjhd0ysf0yxsf88wzpyv6n8i8qgd3gb502hf1x9jksk2mv"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = + [ pkgconfig intltool gtk libxfce4util libxfce4ui libwnck dbus_glib + xfconf xfce4panel libglade xorg.iceauth + ]; + + configureFlags = [ "--with-xsession-prefix=$$out" ]; + + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + meta = { + homepage = http://www.xfce.org/projects/xfce4-session; + description = "Session manager for Xfce"; + license = "GPLv2+"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/pkgs/desktops/xfce/core/xfce4-settings.nix b/pkgs/desktops/xfce/core/xfce4-settings.nix new file mode 100644 index 00000000000..4cbadaeb54a --- /dev/null +++ b/pkgs/desktops/xfce/core/xfce4-settings.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, intltool, exo, gtk, libxfce4util, libxfce4ui +, libglade, xfconf, xorg, libwnck, libnotify, libxklavier, garcon }: + +#TODO: optional packages +stdenv.mkDerivation rec { + p_name = "xfce4-settings"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0zppq747z9lrxyv5zrrvpalq7hb3gfhy9p7qbldisgv7m6dz0hq8"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = + [ pkgconfig intltool exo gtk libxfce4util libxfce4ui libglade + xfconf xorg.libXi xorg.libXcursor libwnck libnotify libxklavier garcon + #gtk libxfce4util libxfcegui4 libwnck dbus_glib + #xfconf libglade xorg.iceauth + ]; + configureFlags = "--enable-pluggable-dialogs --enable-sound-settings"; + + meta = { + homepage = http://www.xfce.org/projects/xfce4-settings; + description = "Settings manager for Xfce"; + license = "GPLv2+"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/pkgs/desktops/xfce/core/xfconf.nix b/pkgs/desktops/xfce/core/xfconf.nix new file mode 100644 index 00000000000..e608d459106 --- /dev/null +++ b/pkgs/desktops/xfce/core/xfconf.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, dbus_glib }: + +stdenv.mkDerivation rec { + p_name = "xfconf"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0xh520z0qh0ib0ijgnyrgii9h5d4pc53n6mx1chhyzfc86j1jlhp"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + #TODO: no perl bingings yet (ExtUtils::Depends, ExtUtils::PkgConfig, Glib) + buildInputs = [ pkgconfig intltool glib libxfce4util ]; + propagatedBuildInputs = [ dbus_glib ]; + + meta = { + homepage = http://docs.xfce.org/xfce/xfconf/start; + description = "Simple client-server configuration storage and query system for Xfce"; + license = "GPLv2"; + }; +} diff --git a/pkgs/desktops/xfce/core/xfdesktop.nix b/pkgs/desktops/xfce/core/xfdesktop.nix new file mode 100644 index 00000000000..4f287af6437 --- /dev/null +++ b/pkgs/desktops/xfce/core/xfdesktop.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui +, libwnck, xfconf, libglade, xfce4panel, thunar, exo, garcon, libnotify }: + +stdenv.mkDerivation rec { + p_name = "xfdesktop"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0yrddj1lgk3xn4w340y89z7x2isks72ia36pka08kk2x8gpfcyl9"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = + [ pkgconfig intltool gtk libxfce4util libxfce4ui libwnck xfconf + libglade xfce4panel thunar exo garcon libnotify + ]; + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + enableParallelBuilding = true; + + meta = { + homepage = http://www.xfce.org/projects/xfdesktop; + description = "Xfce desktop manager"; + license = "GPLv2+"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/pkgs/desktops/xfce/core/xfwm4.nix b/pkgs/desktops/xfce/core/xfwm4.nix new file mode 100644 index 00000000000..e2fea73eaeb --- /dev/null +++ b/pkgs/desktops/xfce/core/xfwm4.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, gtk, intltool, libglade, libxfce4util +, libxfce4ui, xfconf, libwnck, libstartup_notification, xorg }: + +stdenv.mkDerivation rec { + p_name = "xfwm4"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "170zzs7adj47srsi2cl723w9pl8k8awd7w1bpzxby7hj92zmf8s9"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + #TODO: kde systray, docs + buildInputs = + [ pkgconfig intltool gtk libglade libxfce4util libxfce4ui xfconf + libwnck libstartup_notification + xorg.libXcomposite xorg.libXfixes xorg.libXdamage + ]; + + enableParallelBuilding = true; + + meta = { + homepage = http://www.xfce.org/projects/xfwm4; + description = "Window manager for Xfce"; + license = "GPLv2+"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix new file mode 100644 index 00000000000..07a3ffc6baf --- /dev/null +++ b/pkgs/desktops/xfce/default.nix @@ -0,0 +1,71 @@ +{ pkgs, newScope }: let + +callPackage = newScope (deps // xfce_self); + +deps = rec { # xfce-global dependency overrides should be here + inherit (pkgs.gnome) libglade libwnck vte gtksourceview; + inherit (pkgs.perlPackages) URI; + + # The useful bits from ‘gnome-disk-utility’. + libgdu = callPackage ./support/libgdu.nix { }; + + # Gvfs is required by Thunar for the trash feature and for volume + # mounting. Should use the one from Gnome, but I don't want to mess + # with the Gnome packages (or pull in a zillion Gnome dependencies). + gvfs = callPackage ./support/gvfs.nix { }; +}; + +xfce_self = rec { # the lines are very long but it seems better than the even-odd line approach + + #### CORE from "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2" + + exo = callPackage ./core/exo.nix { }; + garcon = callPackage ./core/garcon.nix { }; + gtk_xfce_engine = callPackage ./core/gtk-xfce-engine.nix { }; # ToDo: when should be used? + libxfce4ui = callPackage ./core/libxfce4ui.nix { }; + libxfce4util = callPackage ./core/libxfce4util.nix { }; + libxfcegui4 = callPackage ./core/libxfcegui4.nix { }; + thunar = callPackage ./core/thunar.nix { }; + thunar_volman = callPackage ./core/thunar-volman.nix { }; # ToDo: probably inside Thunar now + tumbler = callPackage ./core/tumbler.nix { }; # ToDo: segfaults after some work + xfce4panel = callPackage ./core/xfce4-panel.nix { }; # ToDo: impure plugins from /run/current-system/sw/lib/xfce4 + xfce4session = callPackage ./core/xfce4-session.nix { }; + xfce4settings = callPackage ./core/xfce4-settings.nix { }; + xfce4_power_manager = callPackage ./core/xfce4-power-manager.nix { }; + xfceutils = null; # removed in 4.10 + xfconf = callPackage ./core/xfconf.nix { }; + xfdesktop = callPackage ./core/xfdesktop.nix { }; + xfwm4 = callPackage ./core/xfwm4.nix { }; + + xfce4_appfinder = callPackage ./core/xfce4-appfinder.nix { }; + + + #### APPLICATIONS from "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2" + + gigolo = callPackage ./applications/gigolo.nix { }; + mousepad = callPackage ./applications/mousepad.nix { }; + ristretto = callPackage ./applications/ristretto.nix { }; + terminal = xfce4terminal; # it has changed its name + xfce4mixer = callPackage ./applications/xfce4-mixer.nix { }; + xfce4notifyd = callPackage ./applications/xfce4-notifyd.nix { }; + xfce4taskmanager= callPackage ./applications/xfce4-taskmanager.nix { }; + xfce4terminal = callPackage ./applications/terminal.nix { }; + + + #### ART from "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2" + + xfce4icontheme = callPackage ./art/xfce4-icon-theme.nix { }; + + + #### PANEL PLUGINS from "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2" + + xfce4_systemload_plugin = callPackage ./panel-plugins/xfce4-systemload-plugin.nix { }; + xfce4_cpufreq_plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin.nix { }; + +}; # xfce_self + +in xfce_self + + + + diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix new file mode 100644 index 00000000000..18d043c51fd --- /dev/null +++ b/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4panel, libxfce4ui, libxfcegui4, xfconf, gtk}: + +stdenv.mkDerivation rec { + p_name = "xfce4-cpufreq-plugin"; + ver_maj = "1.0"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0q2lj8a25iq9w3dynh6qvsmh19y1v7i82g46yza6gvw7fjcrmcz1"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ pkgconfig intltool libxfce4util libxfce4ui xfce4panel libxfcegui4 xfconf gtk ]; + preFixup = "rm $out/share/icons/hicolor/icon-theme.cache"; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "CPU Freq load plugin for Xfce panel"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/desktops/xfce-4.8/panel-plugins/xfce4-systemload-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix similarity index 51% rename from pkgs/desktops/xfce-4.8/panel-plugins/xfce4-systemload-plugin.nix rename to pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix index 6d0f997500c..dda5dc89def 100644 --- a/pkgs/desktops/xfce-4.8/panel-plugins/xfce4-systemload-plugin.nix +++ b/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix @@ -1,18 +1,21 @@ { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4panel, libxfce4ui, gtk}: stdenv.mkDerivation rec { - name = "xfce4-systemload-plugin-1.1.1"; - + p_name = "xfce4-systemload-plugin"; + ver_maj = "1.1"; + ver_min = "1"; + src = fetchurl { - url = "http://archive.xfce.org/src/panel-plugins/xfce4-systemload-plugin/1.1/${name}.tar.bz2"; + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; sha256 = "1bnrr30h6kgb37ixcq7frx2gvj2p99bpa1jyzppwjxp5x7xkxh8s"; }; + name = "${p_name}-${ver_maj}.${ver_min}"; buildInputs = [ pkgconfig intltool libxfce4util libxfce4ui xfce4panel gtk ]; meta = { - homepage = http://www.xfce.org/; - description = "System load panel plugin for Xfce"; + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "System load plugin for Xfce panel"; platforms = stdenv.lib.platforms.linux; }; } diff --git a/pkgs/desktops/xfce-4.8/support/gvfs.nix b/pkgs/desktops/xfce/support/gvfs.nix similarity index 84% rename from pkgs/desktops/xfce-4.8/support/gvfs.nix rename to pkgs/desktops/xfce/support/gvfs.nix index f922b194f87..af70aea755a 100644 --- a/pkgs/desktops/xfce-4.8/support/gvfs.nix +++ b/pkgs/desktops/xfce/support/gvfs.nix @@ -2,11 +2,11 @@ , libxml2, libxslt, docbook_xsl, libgphoto2, libtool }: stdenv.mkDerivation rec { - name = "gvfs-1.14.1"; + name = "gvfs-1.14.2"; src = fetchurl { url = "mirror://gnome/sources/gvfs/1.14/${name}.tar.xz"; - sha256 = "0af86cd7ee7b6daca144776bdf12f2f30d3e18fdd70b4da58e1a68cea4f6716a"; + sha256 = "1g4ghyf45jg2ajdkv2d972hbckyjh3d9jdrppai85pl9pk2dmfy3"; }; buildInputs = diff --git a/pkgs/desktops/xfce-4.8/support/libgdu-only.patch b/pkgs/desktops/xfce/support/libgdu-only.patch similarity index 100% rename from pkgs/desktops/xfce-4.8/support/libgdu-only.patch rename to pkgs/desktops/xfce/support/libgdu-only.patch diff --git a/pkgs/desktops/xfce-4.8/support/libgdu.nix b/pkgs/desktops/xfce/support/libgdu.nix similarity index 100% rename from pkgs/desktops/xfce-4.8/support/libgdu.nix rename to pkgs/desktops/xfce/support/libgdu.nix diff --git a/pkgs/development/libraries/libunique/1.1.6-G_CONST_RETURN.patch b/pkgs/development/libraries/libunique/1.1.6-G_CONST_RETURN.patch new file mode 100644 index 00000000000..1cc5b6e01be --- /dev/null +++ b/pkgs/development/libraries/libunique/1.1.6-G_CONST_RETURN.patch @@ -0,0 +1,143 @@ +From 557b0e5045c9eadb556ce11e16965cf0d0787438 Mon Sep 17 00:00:00 2001 +From: Stef Walter +Date: Tue, 14 Jun 2011 12:33:45 +0100 +Subject: [PATCH] Remove G_CONST_RETURN usage, now that its gone in glib. + +https://bugzilla.gnome.org/show_bug.cgi?id=652545 + +[Alexandre Rostovtsev : backported to unique-1.1] +--- + unique/uniqueapp.c | 4 ++-- + unique/uniquebackend.c | 4 ++-- + unique/uniquebackend.h | 4 ++-- + unique/uniqueinternals.h | 4 ++-- + unique/uniquemessage.c | 4 ++-- + unique/uniquemessage.h | 4 ++-- + 6 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/unique/uniqueapp.c b/unique/uniqueapp.c +index b40a86c..e8edc94 100644 +--- a/unique/uniqueapp.c ++++ b/unique/uniqueapp.c +@@ -781,7 +781,7 @@ unique_app_watch_window (UniqueApp *app, + } + + +-G_CONST_RETURN gchar * ++const gchar * + unique_command_to_string (UniqueApp *app, + gint command) + { +@@ -863,7 +863,7 @@ unique_command_from_string (UniqueApp *app, + return retval; + } + +-G_CONST_RETURN gchar * ++const gchar * + unique_response_to_string (UniqueResponse response) + { + GEnumClass *enum_class; +diff --git a/unique/uniquebackend.c b/unique/uniquebackend.c +index a76e42e..68e2735 100644 +--- a/unique/uniquebackend.c ++++ b/unique/uniquebackend.c +@@ -111,7 +111,7 @@ unique_backend_set_name (UniqueBackend *backend, + * + * Return value: FIXME + */ +-G_CONST_RETURN gchar * ++const gchar * + unique_backend_get_name (UniqueBackend *backend) + { + g_return_val_if_fail (UNIQUE_IS_BACKEND (backend), NULL); +@@ -154,7 +154,7 @@ unique_backend_set_startup_id (UniqueBackend *backend, + * + * Return value: FIXME + */ +-G_CONST_RETURN gchar * ++const gchar * + unique_backend_get_startup_id (UniqueBackend *backend) + { + g_return_val_if_fail (UNIQUE_IS_BACKEND (backend), NULL); +diff --git a/unique/uniquebackend.h b/unique/uniquebackend.h +index a50ce4e..b19ad3e 100644 +--- a/unique/uniquebackend.h ++++ b/unique/uniquebackend.h +@@ -94,10 +94,10 @@ GType unique_backend_get_type (void) G_GNUC_CONST; + + UniqueBackend * unique_backend_create (void); + +-G_CONST_RETURN gchar *unique_backend_get_name (UniqueBackend *backend); ++const gchar * unique_backend_get_name (UniqueBackend *backend); + void unique_backend_set_name (UniqueBackend *backend, + const gchar *name); +-G_CONST_RETURN gchar *unique_backend_get_startup_id (UniqueBackend *backend); ++const gchar * unique_backend_get_startup_id (UniqueBackend *backend); + void unique_backend_set_startup_id (UniqueBackend *backend, + const gchar *startup_id); + GdkScreen * unique_backend_get_screen (UniqueBackend *backend); +diff --git a/unique/uniqueinternals.h b/unique/uniqueinternals.h +index 3cec152..ccae0cd 100644 +--- a/unique/uniqueinternals.h ++++ b/unique/uniqueinternals.h +@@ -44,11 +44,11 @@ UniqueResponse unique_app_emit_message_received (UniqueApp *app, + * and then back into an id + */ + UniqueResponse unique_response_from_string (const gchar *response); +-G_CONST_RETURN gchar *unique_response_to_string (UniqueResponse response); ++const gchar * unique_response_to_string (UniqueResponse response); + + gint unique_command_from_string (UniqueApp *app, + const gchar *command); +-G_CONST_RETURN gchar *unique_command_to_string (UniqueApp *app, ++const gchar * unique_command_to_string (UniqueApp *app, + gint command); + + G_END_DECLS +diff --git a/unique/uniquemessage.c b/unique/uniquemessage.c +index c74392d..2b2a9fc 100644 +--- a/unique/uniquemessage.c ++++ b/unique/uniquemessage.c +@@ -185,7 +185,7 @@ unique_message_data_set (UniqueMessageData *message_data, + * + * Since: 1.0.2 + */ +-G_CONST_RETURN guchar * ++const guchar * + unique_message_data_get (UniqueMessageData *message_data, + gsize *length) + { +@@ -525,7 +525,7 @@ unique_message_data_get_screen (UniqueMessageData *message_data) + * owned by the #UniqueMessageData structure and should not be + * modified or freed + */ +-G_CONST_RETURN gchar * ++const gchar * + unique_message_data_get_startup_id (UniqueMessageData *message_data) + { + g_return_val_if_fail (message_data != NULL, NULL); +diff --git a/unique/uniquemessage.h b/unique/uniquemessage.h +index d3e9c3c..93eee21 100644 +--- a/unique/uniquemessage.h ++++ b/unique/uniquemessage.h +@@ -48,7 +48,7 @@ void unique_message_data_free (UniqueMessageData *me + void unique_message_data_set (UniqueMessageData *message_data, + const guchar *data, + gsize length); +-G_CONST_RETURN guchar *unique_message_data_get (UniqueMessageData *message_data, ++const guchar * unique_message_data_get (UniqueMessageData *message_data, + gsize *length); + + gboolean unique_message_data_set_text (UniqueMessageData *message_data, +@@ -63,7 +63,7 @@ void unique_message_data_set_filename (UniqueMessageData *me + gchar * unique_message_data_get_filename (UniqueMessageData *message_data); + + GdkScreen * unique_message_data_get_screen (UniqueMessageData *message_data); +-G_CONST_RETURN gchar * unique_message_data_get_startup_id (UniqueMessageData *message_data); ++const gchar * unique_message_data_get_startup_id (UniqueMessageData *message_data); + guint unique_message_data_get_workspace (UniqueMessageData *message_data); + + G_END_DECLS +-- +1.7.6 + diff --git a/pkgs/development/libraries/libunique/1.1.6-compiler-warnings.patch b/pkgs/development/libraries/libunique/1.1.6-compiler-warnings.patch new file mode 100644 index 00000000000..f47e66267d5 --- /dev/null +++ b/pkgs/development/libraries/libunique/1.1.6-compiler-warnings.patch @@ -0,0 +1,50 @@ +From 9df132a70d54b768a8e1d0335d24b85ac9b3fb76 Mon Sep 17 00:00:00 2001 +From: Emmanuele Bassi +Date: Sun, 27 Mar 2011 08:42:22 +0000 +Subject: Remove compiler warnings + +(cherry picked from commit f791ed16b19dddc7fbaf90d8f797520e67883021) + +Signed-off-by: Emmanuele Bassi +--- +diff --git a/unique/dbus/uniquebackend-dbus.c b/unique/dbus/uniquebackend-dbus.c +index 3ae1bed..69faa00 100644 +--- a/unique/dbus/uniquebackend-dbus.c ++++ b/unique/dbus/uniquebackend-dbus.c +@@ -84,7 +84,6 @@ unique_backend_dbus_register_proxy (UniqueBackendDBus *backend_dbus) + static gboolean + unique_backend_dbus_request_name (UniqueBackend *backend) + { +- UniqueBackendDBus *backend_dbus; + const gchar *name; + DBusGConnection *connection; + DBusGProxy *proxy; +@@ -97,8 +96,6 @@ unique_backend_dbus_request_name (UniqueBackend *backend) + if (!connection) + return FALSE; + +- backend_dbus = UNIQUE_BACKEND_DBUS (backend); +- + retval = TRUE; + name = unique_backend_get_name (backend); + g_assert (name != NULL); +@@ -207,10 +204,14 @@ unique_backend_dbus_send_message (UniqueBackend *backend, + cmd, data, time_, + &resp, + &error); +- if (error) ++ if (!res) + { +- g_warning ("Error while sending message: %s", error->message); +- g_error_free (error); ++ if (error) ++ { ++ g_warning ("Error while sending message: %s", error->message); ++ g_error_free (error); ++ } ++ + g_free (cmd); + + return UNIQUE_RESPONSE_INVALID; +-- +cgit v0.9 diff --git a/pkgs/development/libraries/libunique/1.1.6-fix-test.patch b/pkgs/development/libraries/libunique/1.1.6-fix-test.patch new file mode 100644 index 00000000000..b2e85e4d71a --- /dev/null +++ b/pkgs/development/libraries/libunique/1.1.6-fix-test.patch @@ -0,0 +1,26 @@ +From caf736f4b84808393b0d7030ae6128a3322a71e2 Mon Sep 17 00:00:00 2001 +From: Tobias Mueller +Date: Mon, 12 Apr 2010 13:01:42 +0000 +Subject: test-unique: Resolve format string issues + +Provide a proper literal format string to not expose potential vulnerabilites. +Fixes bug 615522. +--- +diff --git a/tests/test-unique.c b/tests/test-unique.c +index b7cde45..c9958c9 100644 +--- a/tests/test-unique.c ++++ b/tests/test-unique.c +@@ -82,9 +82,11 @@ app_message_cb (UniqueApp *app, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, ++ "%s", + title); + if (message) + gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), ++ "%s", + message); + + gtk_window_set_urgency_hint (GTK_WINDOW (dialog), TRUE); +-- +cgit v0.9 diff --git a/pkgs/development/libraries/libunique/1.1.6-include-terminator.patch b/pkgs/development/libraries/libunique/1.1.6-include-terminator.patch new file mode 100644 index 00000000000..927771e7311 --- /dev/null +++ b/pkgs/development/libraries/libunique/1.1.6-include-terminator.patch @@ -0,0 +1,37 @@ +From 30ca2903a8ed4eed974ea744e4b9bd96198c425d Mon Sep 17 00:00:00 2001 +From: Rodney Lorrimar +Date: Mon, 21 Dec 2009 02:07:46 +0000 +Subject: Include NUL terminator in unique_message_data_get_filename() + +https://bugzilla.gnome.org/show_bug.cgi?id=605104 + +Signed-off-by: Emmanuele Bassi +--- +diff --git a/unique/uniqueinternals.h b/unique/uniqueinternals.h +index ace40ed..3cec152 100644 +--- a/unique/uniqueinternals.h ++++ b/unique/uniqueinternals.h +@@ -13,7 +13,7 @@ G_BEGIN_DECLS + struct _UniqueMessageData + { + guchar *data; +- gint length; ++ gint length; /* length of data not including NUL terminator */ + + GdkScreen *screen; + gchar *startup_id; +diff --git a/unique/uniquemessage.c b/unique/uniquemessage.c +index 10f6df5..c74392d 100644 +--- a/unique/uniquemessage.c ++++ b/unique/uniquemessage.c +@@ -493,7 +493,7 @@ unique_message_data_get_filename (UniqueMessageData *message_data) + { + g_return_val_if_fail (message_data != NULL, NULL); + +- return g_memdup (message_data->data, message_data->length); ++ return g_memdup (message_data->data, message_data->length + 1); + } + + /** +-- +cgit v0.9 diff --git a/pkgs/development/libraries/libunique/default.nix b/pkgs/development/libraries/libunique/default.nix new file mode 100644 index 00000000000..603759d47c0 --- /dev/null +++ b/pkgs/development/libraries/libunique/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, glib, gtk, dbus_glib }: + +stdenv.mkDerivation rec { + name = "libunique-1.1.6"; + src = fetchurl { + url = "mirror://gnome/sources/libunique/1.1/${name}.tar.bz2"; + sha256 = "1fsgvmncd9caw552lyfg8swmsd6bh4ijjsph69bwacwfxwf09j75"; + }; + + # patches from Gentoo portage + patches = [ + ./1.1.6-compiler-warnings.patch + ./1.1.6-fix-test.patch + ./1.1.6-G_CONST_RETURN.patch + ./1.1.6-include-terminator.patch + ]; + + buildInputs = [ pkgconfig glib gtk dbus_glib ]; + + # don't make deprecated usages hard errors + preBuildPhases = "preBuild"; + preBuild = ''substituteInPlace unique/dbus/Makefile --replace -Werror ""''; + + doCheck = true; + + meta = { + homepage = http://live.gnome.org/LibUnique; + description = "A library for writing single instance applications"; + license = "LGPLv2.1"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 98891a26048..075f8fae723 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4491,6 +4491,8 @@ let libungif = callPackage ../development/libraries/giflib/libungif.nix { }; + libunique = callPackage ../development/libraries/libunique/default.nix { }; + libusb = callPackage ../development/libraries/libusb { }; libusb1 = callPackage ../development/libraries/libusb1 { }; @@ -8591,12 +8593,8 @@ let oxygen_gtk = callPackage ../misc/themes/gtk2/oxygen-gtk { }; - xfce = xfce48; - - xfce48 = recurseIntoAttrs - (let callPackage = newScope pkgs.xfce48; in - import ../desktops/xfce-4.8 { inherit callPackage pkgs; }); - + xfce = xfce4_10; + xfce4_10 = recurseIntoAttrs (import ../desktops/xfce { inherit pkgs newScope; }); ### SCIENCE diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index b3b58f43e1b..4341a225feb 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -457,7 +457,6 @@ with (import ./release-lib.nix); xfce4panel = linux; xfce4session = linux; xfce4settings = linux; - xfceutils = linux; xfdesktop = linux; xfwm4 = linux; }; From fec1d4b2f7070d92d4c28732b43d0d4d0a1ff5aa Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Fri, 22 Feb 2013 09:24:48 +0100 Subject: [PATCH 019/407] Remove misconfigured mcrypt support --- pkgs/development/interpreters/php/5.3.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkgs/development/interpreters/php/5.3.nix b/pkgs/development/interpreters/php/5.3.nix index 56265fda55d..a262ad75b8b 100644 --- a/pkgs/development/interpreters/php/5.3.nix +++ b/pkgs/development/interpreters/php/5.3.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison , apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql, gettext , openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype -, libmcrypt, icu }: +, icu }: composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in { @@ -111,11 +111,6 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) buildInputs = [gettext]; }; - mcrypt = { - configureFlags = ["--with-mcrypt=${libmcrypt}"]; - buildInputs = [libmcrypt]; - }; - intl = { configureFlags = ["--enable-intl"]; buildInputs = [icu]; @@ -156,7 +151,6 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) opensslSupport = config.php.openssl or true; mbstringSupport = config.php.mbstring or true; gdSupport = config.php.gd or true; - mcryptSupport = config.php.mcrypt or true; intlSupport = config.php.intl or true; exifSupport = config.php.exif or true; }; From dbc343c49a25514657c799c3c97c8dc231b468d5 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Sat, 23 Feb 2013 19:35:19 -0800 Subject: [PATCH 020/407] makemkv-1.8.0 --- pkgs/applications/video/makemkv/builder.sh | 38 +++++++++++++++++++++ pkgs/applications/video/makemkv/default.nix | 30 ++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 3 files changed, 70 insertions(+) create mode 100644 pkgs/applications/video/makemkv/builder.sh create mode 100644 pkgs/applications/video/makemkv/default.nix diff --git a/pkgs/applications/video/makemkv/builder.sh b/pkgs/applications/video/makemkv/builder.sh new file mode 100644 index 00000000000..0e1898a4556 --- /dev/null +++ b/pkgs/applications/video/makemkv/builder.sh @@ -0,0 +1,38 @@ +source $stdenv/setup +set -x + +lib=" \ + makemkv-oss-${ver}/out/libdriveio.so.0 \ + makemkv-oss-${ver}/out/libmakemkv.so.1 \ + " + +bin=" \ + makemkv-oss-${ver}/out/makemkv \ + makemkv-bin-${ver}/bin/amd64/makemkvcon \ + " + +tar xzf ${src_bin} +tar xzf ${src_oss} + +( + cd makemkv-oss-${ver} + make -f makefile.linux +) + +chmod +x ${bin} + +libPath="${libPath}:${out}/lib" # XXX: der. This should be in the nix file? + +for i in ${bin} ; do + patchelf \ + --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + --set-rpath $libPath \ + ${i} +done + +ensureDir $out/bin +ensureDir $out/lib +ensureDir $out/share/MakeMKV +cp ${lib} ${out}/lib +cp ${bin} ${out}/bin +cp makemkv-bin-${ver}/src/share/* $out/share/MakeMKV diff --git a/pkgs/applications/video/makemkv/default.nix b/pkgs/applications/video/makemkv/default.nix new file mode 100644 index 00000000000..23f08eef623 --- /dev/null +++ b/pkgs/applications/video/makemkv/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl +, openssl, qt4, mesa, zlib +}: + +stdenv.mkDerivation rec { + name = "makemkv-${ver}"; + ver = "1.8.0"; + builder = ./builder.sh; + + src_bin = fetchurl { + url = "http://www.makemkv.com/download/makemkv-bin-${ver}.tar.gz"; + sha256 = "1f465rdv5ibnh5hnfmvmlid0yyzkansjw8l1mi5qd3bc6ca4k30c"; + }; + + src_oss = fetchurl { + url = "http://www.makemkv.com/download/makemkv-oss-${ver}.tar.gz"; + sha256 = "0kj1mpkzz2cvi0ibdgdzfwbh9k2jfj3ra5m3hd7iyc5ng21v4sk3"; + }; + + buildInputs = [openssl qt4 mesa zlib]; + + libPath = stdenv.lib.makeLibraryPath [stdenv.gcc.gcc openssl mesa qt4 zlib ] + + ":" + stdenv.gcc.gcc + "/lib64"; + + meta = { + description = "software to convert blu-ray and dvd to mkv"; + license = "unfree"; + homepage = http://makemkv.com; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8707db52520..f1670eab598 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1088,6 +1088,8 @@ let mairix = callPackage ../tools/text/mairix { }; + makemkv = callPackage ../applications/video/makemkv { }; + man = callPackage ../tools/misc/man { }; man_db = callPackage ../tools/misc/man-db { }; From ae35f74dbe2144fbaa911499b3cecceddc421e56 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Sun, 24 Feb 2013 02:17:24 -0800 Subject: [PATCH 021/407] Add makemkv descriptions --- pkgs/applications/video/makemkv/default.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/video/makemkv/default.nix b/pkgs/applications/video/makemkv/default.nix index 23f08eef623..4a1765c7e03 100644 --- a/pkgs/applications/video/makemkv/default.nix +++ b/pkgs/applications/video/makemkv/default.nix @@ -23,7 +23,16 @@ stdenv.mkDerivation rec { + ":" + stdenv.gcc.gcc + "/lib64"; meta = { - description = "software to convert blu-ray and dvd to mkv"; + description = "convert blu-ray and dvd to mkv"; + longDescription = '' + makemkv is a one-click QT application that transcodes an encrypted + blu-ray or DVD disc into a more portable set of mkv files, preserving + subtitles, chapter marks, all video and audio tracks. + + Program is time-limited -- it will stop functioning after 60 days. You + can always download the latest version from makemkv.com that will reset the + expiration date. + '' license = "unfree"; homepage = http://makemkv.com; }; From f6b28fad730253d58a89776862cc12a000afbd20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 11:19:35 +0100 Subject: [PATCH 022/407] add libcap_ng --- pkgs/os-specific/linux/libcap-ng/default.nix | 22 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/os-specific/linux/libcap-ng/default.nix diff --git a/pkgs/os-specific/linux/libcap-ng/default.nix b/pkgs/os-specific/linux/libcap-ng/default.nix new file mode 100644 index 00000000000..bbeb2851ea3 --- /dev/null +++ b/pkgs/os-specific/linux/libcap-ng/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, python }: + +assert stdenv.isLinux; + +stdenv.mkDerivation rec { + name = "libcap-ng-${version}"; + version = "0.7.3"; + + src = fetchurl { + url = "${meta.homepage}/${name}.tar.gz"; + sha256 = "1cavlcrpqi4imkmagjhw65br8rv2fsbhf68mm3lczr51sg44392w"; + }; + + buildInputs = [ python ]; # ToDo? optional swig for python bindings + + meta = { + description = "Library for working with POSIX capabilities"; + homepage = http://people.redhat.com/sgrubb/libcap-ng/; + platforms = stdenv.lib.platforms.linux; + license = "LGPLv2.1"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index db6b461e6ee..f70045f2f66 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6060,6 +6060,8 @@ let libcap_manpages = callPackage ../os-specific/linux/libcap/man.nix { }; + libcap_ng = callPackage ../os-specific/linux/libcap-ng { }; + libnscd = callPackage ../os-specific/linux/libnscd { }; libnotify = callPackage ../development/libraries/libnotify { }; From de70e3739d2e69806ddfd47efa8b21aa1864b15e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 13:25:53 +0100 Subject: [PATCH 023/407] SELinux fixes and updates to 2012-09-24 --- pkgs/development/libraries/ustr/default.nix | 5 ++- pkgs/development/libraries/ustr/va_args.patch | 23 ++++++++++++ .../os-specific/linux/checkpolicy/default.nix | 13 ++++--- pkgs/os-specific/linux/libselinux/default.nix | 31 ++++++++++++---- pkgs/os-specific/linux/libselinux/fPIC.patch | 13 +++++++ .../os-specific/linux/libsemanage/default.nix | 18 +++++----- pkgs/os-specific/linux/libsepol/default.nix | 19 +++++++--- .../linux/policycoreutils/default.nix | 36 +++++++++++++------ pkgs/os-specific/linux/sepolgen/default.nix | 22 ++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 10 files changed, 144 insertions(+), 38 deletions(-) create mode 100644 pkgs/development/libraries/ustr/va_args.patch create mode 100644 pkgs/os-specific/linux/libselinux/fPIC.patch create mode 100644 pkgs/os-specific/linux/sepolgen/default.nix diff --git a/pkgs/development/libraries/ustr/default.nix b/pkgs/development/libraries/ustr/default.nix index ebf9628126e..b016a6f715c 100644 --- a/pkgs/development/libraries/ustr/default.nix +++ b/pkgs/development/libraries/ustr/default.nix @@ -8,8 +8,11 @@ stdenv.mkDerivation rec { url = "http://www.and.org/ustr/${version}/${name}.tar.bz2"; sha256 = "1i623ygdj7rkizj7985q9d6vj5amwg686aqb5j3ixpkqkyp6xbrx"; }; + prePatch = "substituteInPlace Makefile --replace /usr/include/ ${glibc}/include/"; + patches = [ ./va_args.patch ]; # fixes bogus warnings that failed libsemanage + makeFlags = "DESTDIR=$(out) prefix= LDCONFIG=echo"; configurePhase = "make ustr-import"; @@ -21,4 +24,4 @@ stdenv.mkDerivation rec { license = licenses.bsd2; maintainers = [ maintainers.phreedom ]; }; -} \ No newline at end of file +} diff --git a/pkgs/development/libraries/ustr/va_args.patch b/pkgs/development/libraries/ustr/va_args.patch new file mode 100644 index 00000000000..f75b537485d --- /dev/null +++ b/pkgs/development/libraries/ustr/va_args.patch @@ -0,0 +1,23 @@ +diff --git a/ustr-compiler.h b/ustr-compiler.h +index 9e71276..c5f847a 100644 +--- a/ustr-compiler.h ++++ b/ustr-compiler.h +@@ -11,17 +11,11 @@ + #define USTR_CONF_HAVE_ATTR_FMT 1 + #endif + ++#include + /* We assume this is enough, + * C99 specifies that va_copy() exists and is a macro */ +-#ifdef va_copy + # define USTR_CONF_HAVE_VA_COPY 1 + # define USTR__VA_COPY(x, y) va_copy(x, y) +-#elif __va_copy +-# define USTR_CONF_HAVE_VA_COPY 1 +-# define USTR__VA_COPY(x, y) __va_copy(x, y) +-#else +-# define USTR_CONF_HAVE_VA_COPY 0 +-#endif + + #ifndef USTR_CONF_HAVE_ATTR_NONNULL + #if defined(__GNUC__) && (__GNUC__ > 3) /* not sure */ diff --git a/pkgs/os-specific/linux/checkpolicy/default.nix b/pkgs/os-specific/linux/checkpolicy/default.nix index a69249b216d..9125c84bd7a 100644 --- a/pkgs/os-specific/linux/checkpolicy/default.nix +++ b/pkgs/os-specific/linux/checkpolicy/default.nix @@ -2,11 +2,12 @@ stdenv.mkDerivation rec { name = "checkpolicy-${version}"; - version = "2.0.23"; + version = "2.1.11"; + inherit (libsepol) se_release se_url; src = fetchurl { - url = "http://userspace.selinuxproject.org/releases/20101221/devel/checkpolicy-2.0.23.tar.gz"; - sha256 = "1n34ggacds7xap039r6hqkxmkd4g2wgfkxjdnv3lirq3cqqi8cnd"; + url = "${se_url}/${se_release}/checkpolicy-${version}.tar.gz"; + sha256 = "1wahs32l4jjlg0s3lyihdhvwmsy7yyvq5pk96q9lsiilc5vvrb06"; }; buildInputs = [ libsepol libselinux bison flex ]; @@ -14,10 +15,8 @@ stdenv.mkDerivation rec { preBuild = '' makeFlags="$makeFlags LEX=flex LIBDIR=${libsepol}/lib PREFIX=$out" ''; meta = with stdenv.lib; { - homepage = http://userspace.selinuxproject.org/; description = "SELinux policy compiler"; license = licenses.gpl2; - maintainers = [ maintainers.phreedom ]; - platforms = platforms.linux; + inherit (libsepol.meta) homepage platforms maintainers; }; -} \ No newline at end of file +} diff --git a/pkgs/os-specific/linux/libselinux/default.nix b/pkgs/os-specific/linux/libselinux/default.nix index 4be88a20e24..873065d5424 100644 --- a/pkgs/os-specific/linux/libselinux/default.nix +++ b/pkgs/os-specific/linux/libselinux/default.nix @@ -1,15 +1,34 @@ -{stdenv, fetchurl, libsepol}: +{ stdenv, fetchurl, pkgconfig, libsepol, pcre }: stdenv.mkDerivation rec { name = "libselinux-${version}"; - version = "2.0.98"; + version = "2.1.12"; + inherit (libsepol) se_release se_url; src = fetchurl { - url = "http://userspace.selinuxproject.org/releases/20101221/devel/${name}.tar.gz"; - sha256 = "00irm7nyakgi4z8d6dlm6c70fkbl6rzk5w1w0ny2c564yw0d0dlz"; + url = "${se_url}/${se_release}/libselinux-${version}.tar.gz"; + sha256 = "17navgvljgq35bljzcdwjdj3khajc27s15binr51xkp0h29qgbcd"; }; - buildInputs = [ libsepol ]; + patch_src = fetchurl { + url = "http://dev.gentoo.org/~swift/patches/libselinux/patchbundle-${name}-r2.tar.gz"; + sha256 = "08zaas8iwyf4w9ll1ylyv4gril1nfarckd5h1l53563sxzyf7dqh"; + }; - preBuild = '' makeFlags="$makeFlags PREFIX=$out DESTDIR=$out" ''; + patches = [ ./fPIC.patch ]; # libsemanage seems to need -fPIC everywhere + + buildInputs = [ pkgconfig libsepol pcre ]; + + prePatch = '' + tar xvf ${patch_src} + for p in gentoo-patches/*.patch; do + patch -p1 < "$p" + done + ''; + + preInstall = '' makeFlags="$makeFlags PREFIX=$out DESTDIR=$out" ''; + + meta = { + inherit (libsepol.meta) homepage platforms maintainers; + }; } diff --git a/pkgs/os-specific/linux/libselinux/fPIC.patch b/pkgs/os-specific/linux/libselinux/fPIC.patch new file mode 100644 index 00000000000..fdc1fa41a33 --- /dev/null +++ b/pkgs/os-specific/linux/libselinux/fPIC.patch @@ -0,0 +1,13 @@ +diff --git a/src/Makefile b/src/Makefile +index ac019df..00432b9 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -132,7 +132,7 @@ $(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $^ -L. -lselinux $(LIBDIR)/libsepol.a -L$(LIBDIR) + + %.o: %.c policy.h +- $(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $< ++ $(CC) $(CFLAGS) $(TLSFLAGS) -fPIC -c -o $@ $< + + %.lo: %.c policy.h + $(CC) $(CFLAGS) -fPIC -DSHARED -c -o $@ $< diff --git a/pkgs/os-specific/linux/libsemanage/default.nix b/pkgs/os-specific/linux/libsemanage/default.nix index 22e177191a5..28908189cf3 100644 --- a/pkgs/os-specific/linux/libsemanage/default.nix +++ b/pkgs/os-specific/linux/libsemanage/default.nix @@ -2,24 +2,24 @@ stdenv.mkDerivation rec { name = "libsemanage-${version}"; - version = "2.0.46"; + version = "2.1.9"; + inherit (libsepol) se_release se_url; src = fetchurl { - url = "http://userspace.selinuxproject.org/releases/20101221/devel/${name}.tar.gz"; - sha256 = "03ljdw48pn8vlk4h26w8z247c9wykp2198s1ksmxrai3avyz87wf"; + url = "${se_url}/${se_release}/libsemanage-${version}.tar.gz"; + sha256 = "1k1my3n1pj30c5887spykcdk1brgxfpxmrz6frxjyhaijxzx20bg"; }; - NIX_LDFLAGS = "-lsepol"; - makeFlags = "PREFIX=$(out) DESTDIR=$(out)"; + NIX_CFLAGS_COMPILE = "-fstack-protector-all"; + NIX_CFLAGS_LINK = "-lsepol"; + buildInputs = [ libsepol libselinux ustr bzip2 bison flex ]; meta = with stdenv.lib; { - homepage = http://userspace.selinuxproject.org/; + inherit (libsepol.meta) homepage platforms maintainers; description = "Policy management tools for SELinux"; license = licenses.lgpl21; - maintainers = [ maintainers.phreedom ]; - platforms = platforms.linux; }; -} \ No newline at end of file +} diff --git a/pkgs/os-specific/linux/libsepol/default.nix b/pkgs/os-specific/linux/libsepol/default.nix index 1751994e3de..d41d1cbe752 100644 --- a/pkgs/os-specific/linux/libsepol/default.nix +++ b/pkgs/os-specific/linux/libsepol/default.nix @@ -1,13 +1,24 @@ -{stdenv, fetchurl}: +{ stdenv, fetchurl }: stdenv.mkDerivation rec { name = "libsepol-${version}"; - version = "2.0.42"; + version = "2.1.8"; + se_release = "20120924"; + se_url = "${meta.homepage}/releases"; src = fetchurl { - url = "http://userspace.selinuxproject.org/releases/20101221/devel/${name}.tar.gz"; - sha256 = "0sg61mb9qhyh4vplasar6nwd6j123v453zss93qws3h95fhrfc08"; + url = "${se_url}/${se_release}/libsepol-${version}.tar.gz"; + sha256 = "1w38q3lmha5m9aps9w844i51yw4b8q1vhpng2kdywn2n8cpdvvk3"; }; preBuild = '' makeFlags="$makeFlags PREFIX=$out DESTDIR=$out" ''; + + passthru = { inherit se_release se_url meta; }; + + meta = with stdenv.lib; { + homepage = http://userspace.selinuxproject.org; + platforms = platforms.linux; + maintainers = [ maintainers.phreedom ]; + license = "GPLv2"; + }; } diff --git a/pkgs/os-specific/linux/policycoreutils/default.nix b/pkgs/os-specific/linux/policycoreutils/default.nix index b75405b4272..e49525a42bf 100644 --- a/pkgs/os-specific/linux/policycoreutils/default.nix +++ b/pkgs/os-specific/linux/policycoreutils/default.nix @@ -1,25 +1,39 @@ -{ stdenv, fetchurl, libsepol, libselinux }: +{ stdenv, fetchurl, intltool, pcre, libcap_ng, libcgroup +, libsepol, libselinux, libsemanage +, python, sepolgen }: stdenv.mkDerivation rec { name = "policycoreutils-${version}"; - version = "2.0.85"; + version = "2.1.13"; + inherit (libsepol) se_release se_url; src = fetchurl { - url = http://userspace.selinuxproject.org/releases/20101221/devel/policycoreutils-2.0.85.tar.gz; - sha256 = "01q5ifacg24k9jdz85j9m17ps2l1p7abvh8pzy6qz55y68rycifb"; + url = "${se_url}/${se_release}/policycoreutils-${version}.tar.gz"; + sha256 = "1145nbpwndmhma08vvj1j75bjd8xhjal0vjpazlrw78iyc30y11l"; }; - buildInputs = [ libsepol libselinux ]; + patchPhase = '' + substituteInPlace po/Makefile --replace /usr/bin/install install + ''; - NIX_LDFLAGS = "-lsepol"; + buildInputs = [ intltool pcre libcap_ng libcgroup + libsepol libselinux libsemanage + python sepolgen # ToDo? these are optional + ]; - makeFlags = "LOCALEDIR=$(out)/share/locale"; + preBuild = '' + mkdir -p "$out/lib" && cp -s "${libsepol}/lib/libsepol.a" "$out/lib" + ''; + + NIX_CFLAGS_COMPILE = "-fstack-protector-all"; + NIX_LDFLAGS = "-lsepol -lpcre"; + + makeFlags = "PREFIX=$(out) DESTDIR=$(out) LOCALEDIR=$(out)/share/locale"; meta = with stdenv.lib; { - homepage = http://userspace.selinuxproject.org/; description = "SELinux policy core utilities"; license = licenses.gpl2; - maintainers = [ maintainers.phreedom ]; - platforms = platforms.linux; + inherit (libsepol.meta) homepage platforms maintainers; }; -} \ No newline at end of file +} + diff --git a/pkgs/os-specific/linux/sepolgen/default.nix b/pkgs/os-specific/linux/sepolgen/default.nix new file mode 100644 index 00000000000..7139ec98c28 --- /dev/null +++ b/pkgs/os-specific/linux/sepolgen/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, libsepol, python }: + +stdenv.mkDerivation rec { + name = "sepolgen-${version}"; + version = "1.1.8"; + inherit (libsepol) se_release se_url; + + src = fetchurl { + url = "${se_url}/${se_release}/sepolgen-${version}.tar.gz"; + sha256 = "1sssc9d4wz7l23yczlzplsmdr891sqr9w34ccn1bfwlnc4q63xdm"; + }; + + makeFlags = "PREFIX=$(out) DESTDIR=$(out) PYTHONLIBDIR=lib/${python.libPrefix}/site-packages"; + + buildInputs = [ python ]; + + meta = with stdenv.lib; { + inherit (libsepol.meta) homepage platforms maintainers; + description = "SELinux policy generation library"; + license = licenses.gpl2; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f70045f2f66..069d52d8ac6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6174,6 +6174,8 @@ let sdparm = callPackage ../os-specific/linux/sdparm { }; + sepolgen = callPackage ../os-specific/linux/sepolgen { }; + shadow = callPackage ../os-specific/linux/shadow { }; splashutils = callPackage ../os-specific/linux/splashutils/default.nix { }; From 8f1756e2d417bce5b5b457af2e37f44321483e79 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 02:12:42 +0100 Subject: [PATCH 024/407] git: update to version 1.8.1.3 --- .../version-management/git-and-tools/git/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix index 87fa119252c..2f293c317d3 100644 --- a/pkgs/applications/version-management/git-and-tools/git/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git/default.nix @@ -10,7 +10,7 @@ let - version = "1.8.1"; + version = "1.8.1.3"; svn = subversionClient.override { perlBindings = true; }; @@ -21,7 +21,7 @@ stdenv.mkDerivation { src = fetchurl { url = "http://git-core.googlecode.com/files/git-${version}.tar.gz"; - sha1 = "wfj2pbqf9l56014dm330wb13qgcwx3dc"; + sha256 = "1waz35cwgcwhgmgzmc4s00yd2vivhy77p49crgqsl0nqpxyj8lrp"; }; patches = [ ./docbook2texi.patch ]; From 7783c274fd207a5910c17aafdb8c8227e05bb63d Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sun, 24 Feb 2013 20:26:28 -0500 Subject: [PATCH 025/407] Add smartdc nodePackage (and its many dependencies) --- pkgs/top-level/node-packages.nix | 199 ++++++++++++++++++++++++++++++- 1 file changed, 196 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix index 083fb573087..07d27bb44bc 100644 --- a/pkgs/top-level/node-packages.nix +++ b/pkgs/top-level/node-packages.nix @@ -17,10 +17,10 @@ let self = { "abbrev" = self."abbrev-1"; "abbrev-1" = self.buildNodePackage rec { - name = "abbrev-1.0.3"; + name = "abbrev-1.0.4"; src = fetchurl { url = "http://registry.npmjs.org/abbrev/-/${name}.tgz"; - sha256 = "d444c07f411418828a5e81ac85569afe638e6441a562086faa0209ec7bdf55f2"; + sha256 = "8dc0f480571a4a19e74f1abd4f31f6a70f94953d1ccafa16ed1a544a19a6f3a8"; }; deps = [ @@ -53,6 +53,19 @@ let self = { ]; }; + "asn1" = self."asn1-0.1.11"; + + "asn1-0.1.11" = self.buildNodePackage rec { + name = "asn1-0.1.11"; + src = fetchurl { + url = "http://registry.npmjs.org/asn1/-/${name}.tgz"; + sha256 = "7206eadc8a9344e484bcce979e22a12c9fa64c1395aa0544b8b767808b268f43"; + }; + deps = [ + + ]; + }; + "async" = self."async-0.1.22"; "async-0.1.22" = self.buildNodePackage rec { @@ -148,6 +161,32 @@ let self = { ]; }; + "bunyan" = self."bunyan-0.8.0"; + + "bunyan-0.8.0" = self.buildNodePackage rec { + name = "bunyan-0.8.0"; + src = fetchurl { + url = "http://registry.npmjs.org/bunyan/-/${name}.tgz"; + sha256 = "059b8948dd34d371d39aa87227d26d62180c365afeb6625c07187c8f0ad29f27"; + }; + deps = [ + + ]; + }; + + "byline" = self."byline-2.0.2"; + + "byline-2.0.2" = self.buildNodePackage rec { + name = "byline-2.0.2"; + src = fetchurl { + url = "http://registry.npmjs.org/byline/-/${name}.tgz"; + sha256 = "a916ffde5ee385f7d682c13028907a96fe33cdeed6d72cea903d09fb154dae50"; + }; + deps = [ + + ]; + }; + "bytes" = self."bytes-0.1.0"; "bytes-0.1.0" = self.buildNodePackage rec { @@ -299,6 +338,30 @@ let self = { ]; }; + "ctype" = self."ctype->=0.0.2"; + + "ctype->=0.0.2" = self.buildNodePackage rec { + name = "ctype-0.5.2"; + src = fetchurl { + url = "http://registry.npmjs.org/ctype/-/${name}.tgz"; + sha256 = "4a7224a74f19dc6a1206fa1c04ae1a4ab795cd4ba842466e2f511fa714f82c60"; + }; + deps = [ + + ]; + }; + + "ctype-0.5.0" = self.buildNodePackage rec { + name = "ctype-0.5.0"; + src = fetchurl { + url = "http://registry.npmjs.org/ctype/-/${name}.tgz"; + sha256 = "50157e6c5e44d1c833bfc239a7a337ee08fd6f3c5a15f7ef5cee5571a86b0378"; + }; + deps = [ + + ]; + }; + "datetime" = self."datetime-0.0.3"; "datetime-0.0.3" = self.buildNodePackage rec { @@ -338,6 +401,19 @@ let self = { ]; }; + "dtrace-provider" = self."dtrace-provider-0.0.6"; + + "dtrace-provider-0.0.6" = self.buildNodePackage rec { + name = "dtrace-provider-0.0.6"; + src = fetchurl { + url = "http://registry.npmjs.org/dtrace-provider/-/${name}.tgz"; + sha256 = "ce48363aefa9e8afb3c8e8e5ce8d321a5d5a7eecbb28eaa997c48c5e9d502508"; + }; + deps = [ + + ]; + }; + "escape-html" = self."escape-html-0.0.1"; "escape-html-0.0.1" = self.buildNodePackage rec { @@ -478,6 +554,20 @@ let self = { ]; }; + "http-signature" = self."http-signature-0.9.9"; + + "http-signature-0.9.9" = self.buildNodePackage rec { + name = "http-signature-0.9.9"; + src = fetchurl { + url = "http://registry.npmjs.org/http-signature/-/${name}.tgz"; + sha256 = "c1e193f1195028f2cc8a8f402c7755fc215552a81f6bebbdf6f21de9390a438e"; + }; + deps = [ + self."asn1-0.1.11" + self."ctype-0.5.0" + ]; + }; + "inherits" = self."inherits-1.0.0"; "inherits-1" = self."inherits-1.0.0"; "inherits-1.x" = self."inherits-1.0.0"; @@ -535,6 +625,17 @@ let self = { "lru-cache" = self."lru-cache-~2.0.0"; + "lru-cache-1.1.0" = self.buildNodePackage rec { + name = "lru-cache-1.1.0"; + src = fetchurl { + url = "http://registry.npmjs.org/lru-cache/-/${name}.tgz"; + sha256 = "735898f87ba800d6f2f3517ab92b631f03976c9d3fbaedb6ce357cfe3813ee8b"; + }; + deps = [ + + ]; + }; + "lru-cache-~2.0.0" = self.buildNodePackage rec { name = "lru-cache-2.0.1"; src = fetchurl { @@ -550,6 +651,17 @@ let self = { "mime->= 0.0.1" = self."mime-*"; + "mime-1.2.5" = self.buildNodePackage rec { + name = "mime-1.2.5"; + src = fetchurl { + url = "http://registry.npmjs.org/mime/-/${name}.tgz"; + sha256 = "ccf05a6c47146e8acb9d0671eee09d2eb077cf9ddd1f7e8eccf49dbf969d6c72"; + }; + deps = [ + + ]; + }; + "mime-1.2.6" = self.buildNodePackage rec { name = "mime-1.2.6"; src = fetchurl { @@ -678,6 +790,17 @@ let self = { "nopt" = self."nopt-2"; + "nopt-1.0.10" = self.buildNodePackage rec { + name = "nopt-1.0.10"; + src = fetchurl { + url = "http://registry.npmjs.org/nopt/-/${name}.tgz"; + sha256 = "426562943bfbbfc059eac83575ade5b78c6c01e5c1000a90a7defecfe2334927"; + }; + deps = [ + self."abbrev-1" + ]; + }; + "nopt-2" = self.buildNodePackage rec { name = "nopt-2.0.0"; src = fetchurl { @@ -911,6 +1034,43 @@ let self = { ]; }; + "restify" = self."restify-1.4.3"; + + "restify-1.4.3" = self.buildNodePackage rec { + name = "restify-1.4.3"; + src = fetchurl { + url = "http://registry.npmjs.org/restify/-/${name}.tgz"; + sha256 = "7c95b1e58d6effab3b947409892a20260b6d1142aefec9c3eb1e46165363d64e"; + }; + deps = [ + self."async-0.1.22" + self."bunyan-0.8.0" + self."byline-2.0.2" + self."formidable-1.0.11" + self."dtrace-provider-0.0.6" + self."http-signature-0.9.9" + self."lru-cache-1.1.0" + self."mime-1.2.5" + self."node-uuid-1.3.3" + self."qs-0.5.0" + self."retry-0.6.0" + self."semver-1.0.14" + ]; + }; + + "retry" = self."retry-0.6.0"; + + "retry-0.6.0" = self.buildNodePackage rec { + name = "retry-0.6.0"; + src = fetchurl { + url = "http://registry.npmjs.org/retry/-/${name}.tgz"; + sha256 = "983e676af24ff4dcbac396420fca3c195ce3b1de5f731f697888b4fe6b7bbd2a"; + }; + deps = [ + + ]; + }; + "rimraf" = self."rimraf-2"; "rimraf-2" = self.buildNodePackage rec { @@ -926,7 +1086,9 @@ let self = { "semver" = self."semver-1"; - "semver-1" = self.buildNodePackage rec { + "semver-1" = self."semver-1.0.14"; + + "semver-1.0.14" = self.buildNodePackage rec { name = "semver-1.0.14"; src = fetchurl { url = "http://registry.npmjs.org/semver/-/${name}.tgz"; @@ -966,6 +1128,37 @@ let self = { ]; }; + "smartdc" = self."smartdc-*"; + + "smartdc-*" = self.buildNodePackage rec { + name = "smartdc-6.5.6"; + src = fetchurl { + url = "http://registry.npmjs.org/smartdc/-/${name}.tgz"; + sha256 = "a5d7ba965a863a411b52f0321a9fa1be350cb6af807175beb16529e4282dff4d"; + }; + deps = [ + self."http-signature-0.9.9" + self."lru-cache-1.1.0" + self."nopt-1.0.10" + self."restify-1.4.3" + self."bunyan-0.8.0" + self."ssh-agent-0.1.0" + ]; + }; + + "ssh-agent" = self."ssh-agent-0.1.0"; + + "ssh-agent-0.1.0" = self.buildNodePackage rec { + name = "ssh-agent-0.1.0"; + src = fetchurl { + url = "http://registry.npmjs.org/ssh-agent/-/${name}.tgz"; + sha256 = "62860d09a84d0bf1250d8c90aae3d0a922a7812591a9f4243330178774eb87b5"; + }; + deps = [ + self."ctype->=0.0.2" + ]; + }; + "socket.io" = self."socket.io-0.9.6"; "socket.io-0.9.6" = self.buildNodePackage rec { From 167a1c597b680f8f3f3edc2088a915cc83a057b6 Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Mon, 25 Feb 2013 11:39:19 +0100 Subject: [PATCH 026/407] Add apache-activemq 5.8.0, a Java message broker. --- .../libraries/apache-activemq/default.nix | 33 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 pkgs/development/libraries/apache-activemq/default.nix diff --git a/pkgs/development/libraries/apache-activemq/default.nix b/pkgs/development/libraries/apache-activemq/default.nix new file mode 100644 index 00000000000..f32d8ea9c74 --- /dev/null +++ b/pkgs/development/libraries/apache-activemq/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + name = "apache-activemq-${version}"; + version = "5.8.0"; + + src = fetchurl { + url = "mirror://apache/activemq/apache-activemq/${version}/${name}-bin.tar.gz"; + sha256 = "12a1lmmqapviqdgw307jm07vw1z5q53r56pkbp85w9wnqwspjrbk"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + ensureDir $out + mv LICENSE lib $out/ + for j in `find $out/lib -name "*.jar"`; do + cp="''${cp:+"$cp:"}$j"; + done + echo "CLASSPATH=$cp" > $out/lib/classpath.env + ''; + + meta = { + homepage = http://activemq.apache.org/; + description = '' + Messaging and Integration Patterns server written in Java. + This nixpkg supplies the jar-files packaged in activemq's + binary distribution. + ''; + license = stdenv.lib.licenses.asl20; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 308d5cdca9b..e721388ecde 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3395,6 +3395,8 @@ let acl = callPackage ../development/libraries/acl { }; + activemq = callPackage ../development/libraries/apache-activemq { }; + adns = callPackage ../development/libraries/adns { }; afflib = callPackage ../development/libraries/afflib {}; From d380c264c373edcf7c6d5ac2eb5eac4271e8ffda Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 25 Feb 2013 06:16:32 -0500 Subject: [PATCH 027/407] Add ruby-2.0.0-p0 --- .../interpreters/ruby/ruby-2.0.nix | 57 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 58 insertions(+) create mode 100644 pkgs/development/interpreters/ruby/ruby-2.0.nix diff --git a/pkgs/development/interpreters/ruby/ruby-2.0.nix b/pkgs/development/interpreters/ruby/ruby-2.0.nix new file mode 100644 index 00000000000..7c47bac0bbb --- /dev/null +++ b/pkgs/development/interpreters/ruby/ruby-2.0.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchurl +, zlib, zlibSupport ? true +, openssl, opensslSupport ? true +, gdbm, gdbmSupport ? true +, ncurses, readline, cursesSupport ? false +, groff, docSupport ? false +, libyaml, yamlSupport ? true +}: + +let + op = stdenv.lib.optional; + ops = stdenv.lib.optionals; +in + +stdenv.mkDerivation rec { + version = with passthru; "${majorVersion}.${minorVersion}-p${patchLevel}"; + + name = "ruby-${version}"; + + src = fetchurl { + url = "ftp://ftp.ruby-lang.org/pub/ruby/2.0/${name}.tar.bz2"; + sha256 = "0pr9jf01cfap93xcngyd5zpns67ffjsgaxkm0qr1r464rj9d7066"; + }; + + # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. + NROFF = "${groff}/bin/nroff"; + + buildInputs = (ops cursesSupport [ ncurses readline ] ) + ++ (op docSupport groff ) + ++ (op zlibSupport zlib) + ++ (op opensslSupport openssl) + ++ (op gdbmSupport gdbm) + ++ (op yamlSupport libyaml); + + enableParallelBuilding = true; + + configureFlags = ["--enable-shared" ]; + + installFlags = stdenv.lib.optionalString docSupport "install-doc"; + # Bundler tries to create this directory + postInstall = "mkdir -pv $out/${passthru.gemPath}"; + + meta = { + license = "Ruby"; + homepage = "http://www.ruby-lang.org/en/"; + description = "The Ruby language"; + platforms = stdenv.lib.platforms.all; + }; + + passthru = rec { + majorVersion = "2.0"; + minorVersion = "0"; + patchLevel = "0"; + libPath = "lib/ruby/${majorVersion}"; + gemPath = "lib/ruby/gems/${majorVersion}"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e721388ecde..4d2ff8589f4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2905,6 +2905,7 @@ let ruby18 = callPackage ../development/interpreters/ruby/ruby-18.nix { }; ruby19 = callPackage ../development/interpreters/ruby/ruby-19.nix { }; + ruby2 = lowPrio (callPackage ../development/interpreters/ruby/ruby-2.0.nix { }); ruby = ruby19; From 879c87d7fe23c2c869e02f476d4a905859d4edb1 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 25 Feb 2013 06:31:19 -0500 Subject: [PATCH 028/407] Fix hiPrio. Did this ever work? --- pkgs/lib/meta.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/lib/meta.nix b/pkgs/lib/meta.nix index 0c5841dd717..a5afce9e0cb 100644 --- a/pkgs/lib/meta.nix +++ b/pkgs/lib/meta.nix @@ -43,6 +43,6 @@ rec { /* Increase the nix-env priority of the package, i.e., this version/variant of the package will be preferred. */ - hiPrio = drv: addMetaAttrs { priority = "110"; } drv; + hiPrio = drv: addMetaAttrs { priority = "-10"; } drv; } From 5d1525562211d2d9e784ef2f766d5807ae5469b2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 15:25:24 +0100 Subject: [PATCH 029/407] haskell-github: add version 0.5.0 --- .../libraries/haskell/github/default.nix | 20 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/development/libraries/haskell/github/default.nix diff --git a/pkgs/development/libraries/haskell/github/default.nix b/pkgs/development/libraries/haskell/github/default.nix new file mode 100644 index 00000000000..461780c1853 --- /dev/null +++ b/pkgs/development/libraries/haskell/github/default.nix @@ -0,0 +1,20 @@ +{ cabal, aeson, attoparsec, caseInsensitive, conduit, dataDefault +, failure, HTTP, httpConduit, httpTypes, network, text, time +, unorderedContainers, vector +}: + +cabal.mkDerivation (self: { + pname = "github"; + version = "0.5.0"; + sha256 = "1zq9cwvpd6s8xd1ki2ifsj79vd4rm8vab9731f2p8zdm8g7mh5gd"; + buildDepends = [ + aeson attoparsec caseInsensitive conduit dataDefault failure HTTP + httpConduit httpTypes network text time unorderedContainers vector + ]; + meta = { + homepage = "https://github.com/mike-burns/github"; + description = "Access to the Github API, v3"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 273cd940316..7501042d247 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -871,6 +871,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); gio = callPackage ../development/libraries/haskell/gio {}; + github = callPackage ../development/libraries/haskell/github {}; + gitit = callPackage ../development/libraries/haskell/gitit {}; glade = callPackage ../development/libraries/haskell/glade { From 8f1c029e33557af24056fdf47c5afb5d6035dcfa Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 15:25:43 +0100 Subject: [PATCH 030/407] haskell-github-backup: add version 1.20120627 --- .../git-and-tools/github-backup/default.nix | 22 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/applications/version-management/git-and-tools/github-backup/default.nix diff --git a/pkgs/applications/version-management/git-and-tools/github-backup/default.nix b/pkgs/applications/version-management/git-and-tools/github-backup/default.nix new file mode 100644 index 00000000000..27aa09dc397 --- /dev/null +++ b/pkgs/applications/version-management/git-and-tools/github-backup/default.nix @@ -0,0 +1,22 @@ +{ cabal, extensibleExceptions, filepath, github, hslogger, IfElse +, MissingH, mtl, network, prettyShow +}: + +cabal.mkDerivation (self: { + pname = "github-backup"; + version = "1.20120627"; + sha256 = "1nq5zj821idvcqybyxkpkma544ci30k2sr8jhp7f2bpa97yidn3k"; + isLibrary = false; + isExecutable = true; + buildDepends = [ + extensibleExceptions filepath github hslogger IfElse MissingH mtl + network prettyShow + ]; + meta = { + homepage = "https://github.com/joeyh/github-backup"; + description = "backs up everything github knows about a repository, to the repository"; + license = "GPL"; + platforms = self.ghc.meta.platforms; + maintainers = [ self.stdenv.lib.maintainers.simons ]; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 7501042d247..a65993c297a 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -2079,6 +2079,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); cabalInstall_1_16_0_2 = callPackage ../tools/package-management/cabal-install/1.16.0.2.nix {}; cabalInstall = self.cabalInstall_1_16_0_2; + githubBackup = callPackage ../applications/version-management/git-and-tools/github-backup {}; + jailbreakCabal = callPackage ../development/tools/haskell/jailbreak-cabal {}; lhs2tex = callPackage ../tools/typesetting/lhs2tex {}; From d1e614ad73ac0a1fe2b3b2183bbb3bfcc938ad11 Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Mon, 25 Feb 2013 16:47:19 +0100 Subject: [PATCH 031/407] activemq: Copy everything from the dist to the store --- pkgs/development/libraries/apache-activemq/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/development/libraries/apache-activemq/default.nix b/pkgs/development/libraries/apache-activemq/default.nix index f32d8ea9c74..90d0dafdd95 100644 --- a/pkgs/development/libraries/apache-activemq/default.nix +++ b/pkgs/development/libraries/apache-activemq/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { installPhase = '' ensureDir $out - mv LICENSE lib $out/ + mv * $out/ for j in `find $out/lib -name "*.jar"`; do cp="''${cp:+"$cp:"}$j"; done @@ -24,8 +24,6 @@ stdenv.mkDerivation rec { homepage = http://activemq.apache.org/; description = '' Messaging and Integration Patterns server written in Java. - This nixpkg supplies the jar-files packaged in activemq's - binary distribution. ''; license = stdenv.lib.licenses.asl20; }; From f6460facd682a5aee2973981aa8af7abfb27d2f2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 25 Feb 2013 18:12:00 +0100 Subject: [PATCH 032/407] Catalyst::Plugin::Static::Simple: Add ETag support This should keep browsers from caching Hydra's static files for too long. --- .../catalyst-plugin-static-simple-etag.patch | 29 +++++++++++++++++++ pkgs/top-level/perl-packages.nix | 1 + 2 files changed, 30 insertions(+) create mode 100644 pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch diff --git a/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch b/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch new file mode 100644 index 00000000000..6433cf29663 --- /dev/null +++ b/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch @@ -0,0 +1,29 @@ +Send an ETag header, and honour the If-None-Match request header + +diff -ru -x '*~' Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm +--- Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm 2012-05-04 18:49:30.000000000 +0200 ++++ Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm 2013-02-25 18:05:08.466813337 +0100 +@@ -187,11 +187,21 @@ + my $type = $c->_ext_to_type( $full_path ); + my $stat = stat $full_path; + ++ # Tell Firefox & friends its OK to cache, even over SSL: ++ #$c->res->headers->header('Cache-control' => 'public'); ++ ++ if ($config->{send_etag}) { ++ my $etag = '"' . $stat->mtime . '-' . $stat->ino . '-'. $stat->size . '"'; ++ $c->res->headers->header('ETag' => $etag); ++ if (($c->req->header('If-None-Match') // "") eq $etag) { ++ $c->res->status(304); ++ return 1; ++ } ++ } ++ + $c->res->headers->content_type( $type ); + $c->res->headers->content_length( $stat->size ); + $c->res->headers->last_modified( $stat->mtime ); +- # Tell Firefox & friends its OK to cache, even over SSL: +- $c->res->headers->header('Cache-control' => 'public'); + # Optionally, set a fixed expiry time: + if ($config->{expires}) { + $c->res->headers->expires(time() + $config->{expires}); diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index a51abf44ff2..0c2bfa1ec0b 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -590,6 +590,7 @@ rec { url = mirror://cpan/authors/id/A/AB/ABRAXXA/Catalyst-Plugin-Static-Simple-0.30.tar.gz; sha256 = "18zar1n4imgnv7b4dr5sxyikry4668ngqgc6f0dr210bqafvwv7w"; }; + patches = [ ../development/perl-modules/catalyst-plugin-static-simple-etag.patch ]; propagatedBuildInputs = [ CatalystRuntime MIMETypes Moose MooseXTypes namespaceautoclean ]; meta = { description = "Make serving static pages painless"; From f5c334e1ab5ab210d18442df0dae8e621a22d400 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 25 Feb 2013 12:49:06 -0500 Subject: [PATCH 033/407] Update rubygems --- .../interpreters/ruby/generated.nix | 70 +++++++++++-------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index 68c83a8e78c..186362bf12b 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -13,13 +13,14 @@ g: # Get dependencies from patched gems arel = g.arel_3_0_2; atoulme_Antwrap = g.atoulme_Antwrap_0_7_4; autotest_rails = g.autotest_rails_4_1_2; - aws_sdk = g.aws_sdk_1_8_3; - builder = g.builder_3_1_4; + aws_sdk = g.aws_sdk_1_8_3_1; + builder = g.builder_3_2_0; buildr = g.buildr_1_4_10; - bundler = g.bundler_1_2_4; + bundler = g.bundler_1_3_0; childprocess = g.childprocess_0_3_8; daemons = g.daemons_1_1_9; diff_lcs = g.diff_lcs_1_1_3; + dimensions = g.dimensions_1_2_0; erubis = g.erubis_2_7_0; eventmachine = g.eventmachine_1_0_0; fakes3 = g.fakes3_0_1_5; @@ -31,7 +32,7 @@ g: # Get dependencies from patched gems i18n = g.i18n_0_6_1; journey = g.journey_1_0_4; jruby_pageant = g.jruby_pageant_1_1_1; - jsduck = g.jsduck_4_6_1; + jsduck = g.jsduck_4_6_2; json = g.json_1_7_7; json_pure = g.json_pure_1_7_7; libv8 = g.libv8_3_3_10_4_x86_64_linux; @@ -56,7 +57,7 @@ g: # Get dependencies from patched gems rake = g.rake_10_0_3; rb_fsevent = g.rb_fsevent_0_9_3; rdiscount = g.rdiscount_2_0_7; - rdoc = g.rdoc_3_12_1; + rdoc = g.rdoc_3_12_2; rjb = g.rjb_1_4_6; rspec = g.rspec_2_11_0; rspec_core = g.rspec_core_2_11_1; @@ -64,7 +65,7 @@ g: # Get dependencies from patched gems rspec_mocks = g.rspec_mocks_2_11_3; rubyforge = g.rubyforge_2_0_4; rubyzip = g.rubyzip_0_9_9; - sass = g.sass_3_2_5; + sass = g.sass_3_2_6; selenium_webdriver = g.selenium_webdriver_2_30_0; sinatra = g.sinatra_1_3_2; sprockets = g.sprockets_2_2_2; @@ -231,16 +232,16 @@ rails support and extra plugins for migrations and fixtures.''; requiredGems = [ g.ZenTest_4_9_0 ]; sha256 = ''1wkb5jayb39yx0i8ly7sibygf9f9c3w24jg2z1qgm135zlb070v4''; }; - aws_sdk_1_8_3 = { + aws_sdk_1_8_3_1 = { basename = ''aws_sdk''; meta = { description = ''AWS SDK for Ruby''; homepage = ''http://aws.amazon.com/sdkforruby''; longDescription = ''AWS SDK for Ruby''; }; - name = ''aws-sdk-1.8.3''; + name = ''aws-sdk-1.8.3.1''; requiredGems = [ g.uuidtools_2_1_3 g.nokogiri_1_5_6 g.json_1_7_7 ]; - sha256 = ''0ggvwiya4swyjyswfgwhzw09hap2slz7djp0svq22y7j0xci1axy''; + sha256 = ''1yiv2skrrwqw8ihznnqqznh4yax75hbv497xqllp7b5qqmnrpvy4''; }; builder_3_0_4 = { basename = ''builder''; @@ -274,7 +275,7 @@ simple to do. Currently the following builder objects are supported: requiredGems = [ ]; sha256 = ''0w6xsq9vyvzdy0xb52sajgipr9ml2bbpivk6dxm69c6987dk7him''; }; - builder_3_1_4 = { + builder_3_2_0 = { basename = ''builder''; meta = { description = ''Builders for MarkUp.''; @@ -286,9 +287,9 @@ simple to do. Currently the following builder objects are supported: * XML Events ''; }; - name = ''builder-3.1.4''; + name = ''builder-3.2.0''; requiredGems = [ ]; - sha256 = ''1p0bjy1vb0zbswd6bsh5qda0f0br53p8vak8cm7hls62094r405p''; + sha256 = ''0f2cpfx6lpazb1wrz3lf06qp6f0qf0gdq5z8xnhkplc3fz3kslb0''; }; buildr_1_4_10 = { basename = ''buildr''; @@ -303,19 +304,19 @@ for those one-off tasks, with a language that's a joy to use. ''; }; name = ''buildr-1.4.10''; - requiredGems = [ g.rake_0_9_2_2 g.builder_3_1_3 g.net_ssh_2_6_0 g.net_sftp_2_0_5 g.rubyzip_0_9_9 g.highline_1_6_2 g.json_pure_1_7_5 g.rubyforge_2_0_4 g.hoe_3_1_0 g.rjb_1_4_2 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_1_3 g.rspec_expectations_2_11_3 g.rspec_mocks_2_11_3 g.rspec_core_2_11_1 g.rspec_2_11_0 g.xml_simple_1_1_1 g.minitar_0_5_3 g.bundler_1_2_4 ]; + requiredGems = [ g.rake_0_9_2_2 g.builder_3_1_3 g.net_ssh_2_6_0 g.net_sftp_2_0_5 g.rubyzip_0_9_9 g.highline_1_6_2 g.json_pure_1_7_5 g.rubyforge_2_0_4 g.hoe_3_1_0 g.rjb_1_4_2 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_1_3 g.rspec_expectations_2_11_3 g.rspec_mocks_2_11_3 g.rspec_core_2_11_1 g.rspec_2_11_0 g.xml_simple_1_1_1 g.minitar_0_5_3 g.bundler_1_3_0 ]; sha256 = ''1x192r8ab5zr9rlp1i9b3pi3y74f9pj2w491wkgshgwj22akh6vn''; }; - bundler_1_2_4 = { + bundler_1_3_0 = { basename = ''bundler''; meta = { description = ''The best way to manage your application's dependencies''; homepage = ''http://gembundler.com''; longDescription = ''Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably''; }; - name = ''bundler-1.2.4''; + name = ''bundler-1.3.0''; requiredGems = [ ]; - sha256 = ''0p90abn29wvg6ic1230f4dj7zs55r9r772b0xq02fwqd0ry3pdgl''; + sha256 = ''16ss4fh97wbg5n5l00wkinxdsj7bjgqzv9h6yhygv45wi8rbf8zp''; }; childprocess_0_3_8 = { basename = ''childprocess''; @@ -364,6 +365,17 @@ is the MIT license.''; requiredGems = [ ]; sha256 = ''15wqs3md9slif6ag43vp6gw63r3a2zdqiyfapnnzkb7amgg930pv''; }; + dimensions_1_2_0 = { + basename = ''dimensions''; + meta = { + description = ''Pure Ruby dimension measurement for GIF, PNG, JPEG and TIFF images''; + homepage = ''https://github.com/sstephenson/dimensions''; + longDescription = ''A pure Ruby library for measuring the dimensions and rotation angles of GIF, PNG, JPEG and TIFF images.''; + }; + name = ''dimensions-1.2.0''; + requiredGems = [ ]; + sha256 = ''1pqb7yzjcpbgbyi196ifqbd1wy570cn12bkzcvpcha4xilhajja0''; + }; erubis_2_7_0 = { basename = ''erubis''; meta = { @@ -414,7 +426,7 @@ using TCP/IP, especially if custom protocols are required.''; longDescription = ''Use FakeS3 to test basic S3 functionality without actually connecting to S3''; }; name = ''fakes3-0.1.5''; - requiredGems = [ g.thor_0_17_0 g.builder_3_1_4 ]; + requiredGems = [ g.thor_0_17_0 g.builder_3_2_0 ]; sha256 = ''1na5wrbarla6s414svqmr5spbpv6vmcgpswal444x4clcpmadhib''; }; ffi_1_4_0 = { @@ -518,16 +530,16 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf''; requiredGems = [ ]; sha256 = ''1kgqsn0bagr41gf5kbqaxbs38a7s5bm85m0pdx4qz7d70v9nc9cl''; }; - jsduck_4_6_1 = { + jsduck_4_6_2 = { basename = ''jsduck''; meta = { description = ''Simple JavaScript Duckumentation generator''; homepage = ''https://github.com/senchalabs/jsduck''; longDescription = ''Documentation generator for Sencha JS frameworks''; }; - name = ''jsduck-4.6.1''; - requiredGems = [ g.rdiscount_2_0_7 g.json_1_7_7 g.parallel_0_6_2 g.therubyracer_0_10_2 ]; - sha256 = ''01bws3jfsym531znwsd6qjaymf1mrsss1bj8csvj3vhnv728qbyh''; + name = ''jsduck-4.6.2''; + requiredGems = [ g.rdiscount_2_0_7 g.json_1_7_7 g.parallel_0_6_2 g.therubyracer_0_10_2 g.dimensions_1_2_0 ]; + sha256 = ''035w4igfa6yy6234ff4zbiqfjn0bhwqs6k8kji52l7gzgskwmzln''; }; json_1_7_7 = { basename = ''json''; @@ -824,7 +836,7 @@ request helpers feature.''; longDescription = ''Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.''; }; name = ''rails-3.2.12''; - requiredGems = [ g.activesupport_3_2_12 g.actionpack_3_2_12 g.activerecord_3_2_12 g.activeresource_3_2_12 g.actionmailer_3_2_12 g.railties_3_2_12 g.bundler_1_2_4 ]; + requiredGems = [ g.activesupport_3_2_12 g.actionpack_3_2_12 g.activerecord_3_2_12 g.activeresource_3_2_12 g.actionmailer_3_2_12 g.railties_3_2_12 g.bundler_1_3_0 ]; sha256 = ''1jjnm74nzl5v3461c0mrbpa471yd6s8hnkmnxb64c2rm95c61wxz''; }; railties_3_2_12 = { @@ -835,7 +847,7 @@ request helpers feature.''; longDescription = ''Rails internals: application bootup, plugins, generators, and rake tasks.''; }; name = ''railties-3.2.12''; - requiredGems = [ g.rake_10_0_3 g.rack_ssl_1_3_3 g.thor_0_17_0 g.rdoc_3_12_1 g.activesupport_3_2_12 g.actionpack_3_2_12 ]; + requiredGems = [ g.rake_10_0_3 g.rack_ssl_1_3_3 g.thor_0_17_0 g.rdoc_3_12_2 g.activesupport_3_2_12 g.actionpack_3_2_12 ]; sha256 = ''0d8wy1n591x12bigj3jh8c9djzi8k68vh14342mc22raxwp5rwdw''; }; rake_0_9_2_2 = { @@ -892,7 +904,7 @@ request helpers feature.''; requiredGems = [ ]; sha256 = ''1cj9dn59xqjaglvzvd1ninid62xmih74az0glqqb90n2p42s2zs1''; }; - rdoc_3_12_1 = { + rdoc_3_12_2 = { basename = ''rdoc''; meta = { description = ''RDoc produces HTML and command-line documentation for Ruby projects''; @@ -903,9 +915,9 @@ documentation. See RDoc for a description of RDoc's markup and basic use.''; }; - name = ''rdoc-3.12.1''; + name = ''rdoc-3.12.2''; requiredGems = [ g.json_1_7_7 ]; - sha256 = ''1hflgw2v0lyx38kdwj71jyibc14j6ghb6zmp2l3g47v7d2m47z4g''; + sha256 = ''1v9k4sp5yzj2bshngckdvivj6bszciskk1nd2r3wri2ygs7vgqm8''; }; rjb_1_4_2 = { basename = ''rjb''; @@ -1003,7 +1015,7 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''1khf6d903agnwd8965f5f8b353rzmfvygxp53z1199rqzw8h46q2''; }; - sass_3_2_5 = { + sass_3_2_6 = { basename = ''sass''; meta = { description = ''A powerful but elegant CSS compiler that makes CSS fun again.''; @@ -1014,9 +1026,9 @@ See RDoc for a description of RDoc's markup and basic use.''; command line tool or a web-framework plugin. ''; }; - name = ''sass-3.2.5''; + name = ''sass-3.2.6''; requiredGems = [ ]; - sha256 = ''1ys7pfadw61dm09yyk28zrssi8zsyj99fyq6bdf2xmi8yp1avs6k''; + sha256 = ''10xy6k663399r881cj30fapbdsrq8jwzvnp97y8n3mhxmrvzpq28''; }; selenium_webdriver_2_30_0 = { basename = ''selenium_webdriver''; From 6fe8fc00cff169dff3f0a25ce7a5f5f1b6236d6f Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 25 Feb 2013 12:49:37 -0500 Subject: [PATCH 034/407] Add bitbucket-backup rubygem --- .../interpreters/ruby/generated.nix | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index 186362bf12b..5e3b37490f0 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -14,6 +14,7 @@ g: # Get dependencies from patched gems atoulme_Antwrap = g.atoulme_Antwrap_0_7_4; autotest_rails = g.autotest_rails_4_1_2; aws_sdk = g.aws_sdk_1_8_3_1; + bitbucket_backup = g.bitbucket_backup_0_2_2; builder = g.builder_3_2_0; buildr = g.buildr_1_4_10; bundler = g.bundler_1_3_0; @@ -26,7 +27,7 @@ g: # Get dependencies from patched gems fakes3 = g.fakes3_0_1_5; ffi = g.ffi_1_4_0; foreman = g.foreman_0_61_0; - highline = g.highline_1_6_2; + highline = g.highline_1_6_15; hike = g.hike_1_2_1; hoe = g.hoe_3_1_0; i18n = g.i18n_0_6_1; @@ -81,7 +82,7 @@ g: # Get dependencies from patched gems websocket = g.websocket_1_0_7; xml_simple = g.xml_simple_1_1_1; }; - gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''buildr'' ''fakes3'' ''foreman'' ''jsduck'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''thin'' ''uuid'' ]; + gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''bitbucket-backup'' ''buildr'' ''fakes3'' ''foreman'' ''jsduck'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''thin'' ''uuid'' ]; gems = { ZenTest_4_9_0 = { basename = ''ZenTest''; @@ -243,6 +244,17 @@ rails support and extra plugins for migrations and fixtures.''; requiredGems = [ g.uuidtools_2_1_3 g.nokogiri_1_5_6 g.json_1_7_7 ]; sha256 = ''1yiv2skrrwqw8ihznnqqznh4yax75hbv497xqllp7b5qqmnrpvy4''; }; + bitbucket_backup_0_2_2 = { + basename = ''bitbucket_backup''; + meta = { + description = ''A tool to backup Bitbucket repos.''; + homepage = ''https://bitbucket.org/seth/bitbucket-backup''; + longDescription = ''A tool to backup Bitbucket repos.''; + }; + name = ''bitbucket-backup-0.2.2''; + requiredGems = [ g.highline_1_6_15 g.json_1_7_7 ]; + sha256 = ''1kzg6pkzw04n96i6mhb74gpg4c899wly5fc2m1y6m2xvn71qksys''; + }; builder_3_0_4 = { basename = ''builder''; meta = { @@ -451,6 +463,21 @@ using TCP/IP, especially if custom protocols are required.''; requiredGems = [ g.thor_0_17_0 ]; sha256 = ''1h9dmzq1cwz87qyzx2ibpjghsxjnnqbh485l3sdxyfh5k3v79k7z''; }; + highline_1_6_15 = { + basename = ''highline''; + meta = { + description = ''HighLine is a high-level command-line IO library.''; + homepage = ''http://highline.rubyforge.org''; + longDescription = ''A high-level IO library that provides validation, type conversion, and more for +command-line interfaces. HighLine also includes a complete menu system that can +crank out anything from simple list selection to complete shells with just +minutes of work. +''; + }; + name = ''highline-1.6.15''; + requiredGems = [ ]; + sha256 = ''1ilwlgylv92md9dnw6hqhrw8hiwk3f4k8qz6airqjp1rq9r594m1''; + }; highline_1_6_2 = { basename = ''highline''; meta = { From e431ec94ad2e4281d7ae516367ef4c9bb6bde69f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 25 Feb 2013 20:56:11 +0100 Subject: [PATCH 035/407] Making vimprobable2 use the default nixos ca bundle by default --- .../networking/browsers/vimprobable2/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/applications/networking/browsers/vimprobable2/default.nix b/pkgs/applications/networking/browsers/vimprobable2/default.nix index 46081cac3a7..7fd352ff6f7 100644 --- a/pkgs/applications/networking/browsers/vimprobable2/default.nix +++ b/pkgs/applications/networking/browsers/vimprobable2/default.nix @@ -7,7 +7,14 @@ stdenv.mkDerivation { url = "mirror://sourceforge/vimprobable/vimprobable2_1.2.0.tar.bz2"; sha256 = "0fjakrmz1syjwgx01j2icpdv69jgvfl2nlxbj8zxfr8mw0h2wg1f"; }; + + # Nixos default ca bundle + patchPhase = '' + sed -i s,/etc/ssl/certs/ca-certificates.crt,/etc/ca-bundle.crt, config.h + ''; + buildInputs = [ makeWrapper gtk libsoup libX11 perl pkgconfig webkit ]; + installPhase = '' make PREFIX=/ DESTDIR=$out install wrapProgram "$out/bin/vimprobable2" --prefix GIO_EXTRA_MODULES : \ From a5192222e99232e1f6cf71f1d3e5559220b96fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 25 Feb 2013 21:07:44 +0100 Subject: [PATCH 036/407] surf: updating to 0.6 it didn't work since the libsoup update, and now it doesn't work either. Let's see after fixing libsoup. --- pkgs/applications/misc/surf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/misc/surf/default.nix b/pkgs/applications/misc/surf/default.nix index 61d2e6a65bd..808a77ef0a0 100644 --- a/pkgs/applications/misc/surf/default.nix +++ b/pkgs/applications/misc/surf/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "surf-${version}"; - version="0.5"; + version="0.6"; src = fetchurl { url = "http://dl.suckless.org/surf/surf-${version}.tar.gz"; - sha256 = "19qfkwdk6p5hcwnnplscp1kmypz74mga7x6iqy6w3g18s221f2mx"; + sha256 = "01b8hq8z2wd7ssym5bypx2b15mrs1lhgkrcgxf700kswxvxcrhgx"; }; buildInputs = [ gtk webkit pkgconfig glib libsoup ]; From 7b94139e4fdb0eba413e187df718d1ad616ec0da Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 25 Feb 2013 22:53:42 +0100 Subject: [PATCH 037/407] Test::WWW::Mechanize::Catalyst: Update to 0.58 --- pkgs/top-level/perl-packages.nix | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 0c2bfa1ec0b..b9ae875fc7d 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -656,6 +656,7 @@ rec { meta = { description = "Replace the development server with Starman"; license = "perl"; + platforms = stdenv.lib.platforms.linux; }; }; @@ -4813,18 +4814,18 @@ rec { }; }; - TestWWWMechanizeCatalyst = buildPerlPackage rec { - name = "Test-WWW-Mechanize-Catalyst-0.55"; + TestWWWMechanizeCatalyst = buildPerlPackage { + name = "Test-WWW-Mechanize-Catalyst-0.58"; src = fetchurl { - url = "mirror://cpan/modules/by-module/Test/${name}.tar.gz"; - sha256 = "0zdg4sxx231dj3qgbr58i63927gl4qzh0krignqxp8q6ck3hr63f"; + url = mirror://cpan/authors/id/B/BO/BOBTFISH/Test-WWW-Mechanize-Catalyst-0.58.tar.gz; + sha256 = "1pa2m064skxfwsm93hffxcyky4kcn2q418vnw2fn79ich6wrcijd"; }; - propagatedBuildInputs = - [ CatalystRuntime TestWWWMechanize WWWMechanize - CatalystPluginSessionStateCookie HTMLForm - ]; - buildInputs = [ TestPod ]; doCheck = false; # listens on an external port + propagatedBuildInputs = [ CatalystRuntime LWP Moose namespaceclean TestWWWMechanize WWWMechanize ]; + meta = { + description = "Test::WWW::Mechanize for Catalyst"; + license = "perl"; + }; }; TestWWWMechanizePSGI = buildPerlPackage { From ad1e7be58a2a22747f40d94e2e2dc6b86e429005 Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Mon, 25 Feb 2013 23:35:26 +0100 Subject: [PATCH 038/407] Revert "libsoup: Update to 2.40.3" For some reason, the update to 2.40.3 seems to cause troubles for surf and vimprobable2. This reverts commit 9642adef3222a2cf9f883b97b7c5de6e172ca50b. --- pkgs/development/libraries/libsoup/default.nix | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/pkgs/development/libraries/libsoup/default.nix b/pkgs/development/libraries/libsoup/default.nix index e0c00d07044..87aaafabcc4 100644 --- a/pkgs/development/libraries/libsoup/default.nix +++ b/pkgs/development/libraries/libsoup/default.nix @@ -1,29 +1,23 @@ -{ stdenv, fetchurl, glib, libxml2, pkgconfig, intltool, python +{ stdenv, fetchurl, glib, libxml2, pkgconfig , gnomeSupport ? true, libgnome_keyring, sqlite, glib_networking }: stdenv.mkDerivation { - name = "libsoup-2.40.3"; + name = "libsoup-2.38.1"; src = fetchurl { - url = mirror://gnome/sources/libsoup/2.40/libsoup-2.40.3.tar.xz; - sha256 = "82c92f1f6f4cbfd501df783ed87e7de9410b4a12a3bb0b19c64722e185d2bbc9"; + url = mirror://gnome/sources/libsoup/2.38/libsoup-2.38.1.tar.xz; + sha256 = "16iza4y8pmc4sn90iid88fgminvgcqypy3s2qnmzkzm5qwzr5f3i"; }; - buildNativeInputs = [ pkgconfig intltool python ]; + buildNativeInputs = [ pkgconfig ]; propagatedBuildInputs = [ glib libxml2 ] ++ stdenv.lib.optionals gnomeSupport [ libgnome_keyring sqlite ]; - passthru.propagatedUserEnvPackages = [ glib_networking ]; # glib_networking is a runtime dependency, not a compile-time dependency configureFlags = "--disable-tls-check"; - preConfigure = '' - substituteInPlace libsoup/tld-parser.py \ - --replace "/usr/bin/env python" ${python}/bin/python - ''; - meta = { inherit (glib.meta) maintainers platforms; }; From d2b6645e82be74f22c2333915d262bd0719ceede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Tue, 26 Feb 2013 00:40:29 +0100 Subject: [PATCH 039/407] Add chromedriver: a server for running Selenium tests in Chrome --- .../tools/selenium/chromedriver/default.nix | 37 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 39 insertions(+) create mode 100644 pkgs/development/tools/selenium/chromedriver/default.nix diff --git a/pkgs/development/tools/selenium/chromedriver/default.nix b/pkgs/development/tools/selenium/chromedriver/default.nix new file mode 100644 index 00000000000..063af69a7f3 --- /dev/null +++ b/pkgs/development/tools/selenium/chromedriver/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, cairo, fontconfig, freetype, gdk_pixbuf, glib +, glibc, gtk, libX11, makeWrapper, nspr, nss, pango, unzip +}: + +# note: there is a i686 version available as well +assert stdenv.system == "x86_64-linux"; + +stdenv.mkDerivation rec { + name = "chromedriver_linux64_26.0.1383.0"; + + src = fetchurl { + url = "http://chromedriver.googlecode.com/files/${name}.zip"; + sha256 = "0fh4r2rcpjc3nfrdyj256kjlyc0b6mhxqwxcah73q4vm1kjax8rs"; + }; + + buildInputs = [ + cairo fontconfig freetype gdk_pixbuf glib gtk libX11 makeWrapper + nspr nss pango unzip + ]; + + unpackPhase = "unzip $src"; + + installPhase = '' + mkdir -p $out/bin + mv chromedriver $out/bin + patchelf --set-interpreter ${glibc}/lib/ld-linux-x86-64.so.2 $out/bin/chromedriver + wrapProgram "$out/bin/chromedriver" \ + --prefix LD_LIBRARY_PATH : "$(cat ${stdenv.gcc}/nix-support/orig-gcc)/lib64:${cairo}/lib:${fontconfig}/lib:${freetype}/lib:${gdk_pixbuf}/lib:${glib}/lib:${gtk}/lib:${libX11}/lib:${nspr}/lib:${nss}/lib:${pango}/lib:\$LD_LIBRARY_PATH" + ''; + + meta = with stdenv.lib; { + homepage = http://code.google.com/p/chromedriver/; + description = "A WebDriver server for running Selenium tests on Chrome"; + license = licenses.bsd3; + maintainers = [ maintainers.goibhniu ]; + }; +} \ No newline at end of file diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4d2ff8589f4..9c85aa47abb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3090,6 +3090,8 @@ let cgdb = callPackage ../development/tools/misc/cgdb { }; + chromedriver = callPackage ../development/tools/selenium/chromedriver { }; + complexity = callPackage ../development/tools/misc/complexity { }; ctags = callPackage ../development/tools/misc/ctags { }; From f7e619617e548554d3a853f7a2550617bc218852 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Feb 2013 01:24:32 +0100 Subject: [PATCH 040/407] Catalyst::Plugin::Static::Simple: Always send the Expires header Otherwise Firefox will get confused. --- .../catalyst-plugin-static-simple-etag.patch | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch b/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch index 6433cf29663..06207a8b733 100644 --- a/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch +++ b/pkgs/development/perl-modules/catalyst-plugin-static-simple-etag.patch @@ -2,14 +2,24 @@ Send an ETag header, and honour the If-None-Match request header diff -ru -x '*~' Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm --- Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm 2012-05-04 18:49:30.000000000 +0200 -+++ Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm 2013-02-25 18:05:08.466813337 +0100 -@@ -187,11 +187,21 @@ ++++ Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm 2013-02-25 22:57:18.667150181 +0100 +@@ -187,16 +187,27 @@ my $type = $c->_ext_to_type( $full_path ); my $stat = stat $full_path; -+ # Tell Firefox & friends its OK to cache, even over SSL: +- $c->res->headers->content_type( $type ); +- $c->res->headers->content_length( $stat->size ); +- $c->res->headers->last_modified( $stat->mtime ); + # Tell Firefox & friends its OK to cache, even over SSL: +- $c->res->headers->header('Cache-control' => 'public'); + #$c->res->headers->header('Cache-control' => 'public'); + ++ $c->res->headers->last_modified( $stat->mtime ); + # Optionally, set a fixed expiry time: + if ($config->{expires}) { + $c->res->headers->expires(time() + $config->{expires}); + } + + if ($config->{send_etag}) { + my $etag = '"' . $stat->mtime . '-' . $stat->ino . '-'. $stat->size . '"'; + $c->res->headers->header('ETag' => $etag); @@ -19,11 +29,9 @@ diff -ru -x '*~' Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Sta + } + } + - $c->res->headers->content_type( $type ); - $c->res->headers->content_length( $stat->size ); - $c->res->headers->last_modified( $stat->mtime ); -- # Tell Firefox & friends its OK to cache, even over SSL: -- $c->res->headers->header('Cache-control' => 'public'); - # Optionally, set a fixed expiry time: - if ($config->{expires}) { - $c->res->headers->expires(time() + $config->{expires}); ++ $c->res->headers->content_type( $type ); ++ $c->res->headers->content_length( $stat->size ); ++ + my $fh = IO::File->new( $full_path, 'r' ); + if ( defined $fh ) { + binmode $fh; From 2fca1deeb2a5b619c925dc19e1770dc1370c5f8f Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Tue, 26 Feb 2013 11:07:16 +0100 Subject: [PATCH 041/407] nijs: Added nodejs package --- pkgs/top-level/node-packages.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix index 07d27bb44bc..88fc642064e 100644 --- a/pkgs/top-level/node-packages.nix +++ b/pkgs/top-level/node-packages.nix @@ -736,6 +736,19 @@ let self = { ]; }; + "nijs" = self."nijs-0.0.3"; + + "nijs-0.0.3" = self.buildNodePackage rec { + name = "nijs-0.0.3"; + src = fetchurl { + url = "http://registry.npmjs.org/nijs/-/${name}.tgz"; + sha256 = "0rcqycb4nigfasxfjw1ngh556r5ik1qr58938nx6qbxzkrm0k1ip"; + }; + deps = [ + self."optparse" + ]; + }; + "node-expat" = self."node-expat-*"; "node-expat-*" = self.buildNodePackage rec { From 58428ff4ffbfd849adbee0de44d6b25407392c0a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Tue, 26 Feb 2013 11:38:29 +0100 Subject: [PATCH 042/407] Add wl-pprint-1.1, wl-pprint-extras-3.3, and wl-pprint-terminfo-3.4. --- .../haskell/wl-pprint-extras/default.nix | 14 ++++++++++++++ .../haskell/wl-pprint-terminfo/default.nix | 17 +++++++++++++++++ .../libraries/haskell/wl-pprint/default.nix | 12 ++++++++++++ pkgs/top-level/haskell-packages.nix | 6 ++++++ 4 files changed, 49 insertions(+) create mode 100644 pkgs/development/libraries/haskell/wl-pprint-extras/default.nix create mode 100644 pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix create mode 100644 pkgs/development/libraries/haskell/wl-pprint/default.nix diff --git a/pkgs/development/libraries/haskell/wl-pprint-extras/default.nix b/pkgs/development/libraries/haskell/wl-pprint-extras/default.nix new file mode 100644 index 00000000000..18adfb1cd60 --- /dev/null +++ b/pkgs/development/libraries/haskell/wl-pprint-extras/default.nix @@ -0,0 +1,14 @@ +{ cabal, nats, semigroupoids, semigroups, utf8String }: + +cabal.mkDerivation (self: { + pname = "wl-pprint-extras"; + version = "3.3"; + sha256 = "1q3wiw62k53yl9ny9l54b281zprrnshw94pd52rlcxbw9cgj8xzx"; + buildDepends = [ nats semigroupoids semigroups utf8String ]; + meta = { + homepage = "http://github.com/ekmett/wl-pprint-extras/"; + description = "A free monad based on the Wadler/Leijen pretty printer"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix b/pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix new file mode 100644 index 00000000000..0cb626016d4 --- /dev/null +++ b/pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix @@ -0,0 +1,17 @@ +{ cabal, nats, semigroups, terminfo, transformers, wlPprintExtras +}: + +cabal.mkDerivation (self: { + pname = "wl-pprint-terminfo"; + version = "3.4"; + sha256 = "1wnlm74fwcn171a533bv15bvlhabrzh192wabala0wyvwgl8hwzk"; + buildDepends = [ + nats semigroups terminfo transformers wlPprintExtras + ]; + meta = { + homepage = "http://github.com/ekmett/wl-pprint-terminfo/"; + description = "A color pretty printer with terminfo support"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/development/libraries/haskell/wl-pprint/default.nix b/pkgs/development/libraries/haskell/wl-pprint/default.nix new file mode 100644 index 00000000000..9849d4fab0e --- /dev/null +++ b/pkgs/development/libraries/haskell/wl-pprint/default.nix @@ -0,0 +1,12 @@ +{ cabal }: + +cabal.mkDerivation (self: { + pname = "wl-pprint"; + version = "1.1"; + sha256 = "16kp3fkh0x9kgzk6fdqrm8m0v7b5cgbv0m3x63ybbp5vxbhand06"; + meta = { + description = "The Wadler/Leijen Pretty Printer"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index a65993c297a..b4f5f66b8f2 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1865,6 +1865,12 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); CouchDB = callPackage ../development/libraries/haskell/CouchDB {}; + wlPprint = callPackage ../development/libraries/haskell/wl-pprint {}; + + wlPprintExtras = callPackage ../development/libraries/haskell/wl-pprint-extras {}; + + wlPprintTerminfo = callPackage ../development/libraries/haskell/wl-pprint-terminfo {}; + wlPprintText = callPackage ../development/libraries/haskell/wl-pprint-text {}; word8 = callPackage ../development/libraries/haskell/word8 {}; From 5847037d849c63f27e6765a98598875ca757dfbe Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Feb 2013 14:40:39 +0100 Subject: [PATCH 043/407] nix: Update to 1.4 --- pkgs/tools/package-management/nix/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 5448c9f5ba3..c31062989e1 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -5,11 +5,11 @@ }: stdenv.mkDerivation rec { - name = "nix-1.3"; + name = "nix-1.4"; src = fetchurl { url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz"; - sha256 = "32cba96df0e02d6627f5625a441fdd4ea0db718dd5bfd50044cdfd3c606d4852"; + sha256 = "f400c7e9c935271b833055e4d6888ec15eb90ef92ee6521dc55f1501036dc9b2"; }; buildNativeInputs = [ perl pkgconfig ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9c85aa47abb..d16d12367ca 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8946,10 +8946,14 @@ let stateDir = config.nix.stateDir or "/nix/var"; }; + nixUnstable = nixStable; + + /* nixUnstable = callPackage ../tools/package-management/nix/unstable.nix { storeDir = config.nix.storeDir or "/nix/store"; stateDir = config.nix.stateDir or "/nix/var"; }; + */ nut = callPackage ../applications/misc/nut { }; From 4105b593a5f5df699121a1fff45cee008b0aebe1 Mon Sep 17 00:00:00 2001 From: Patrick Lee Date: Mon, 25 Feb 2013 22:40:15 -0500 Subject: [PATCH 044/407] upgrading uglify to 2.2.5, optimist to 0.3.5, upgrading source-map to 0.1.7, and adding amdefine Fixes #337 --- pkgs/top-level/node-packages.nix | 53 +++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix index 88fc642064e..19ad2164851 100644 --- a/pkgs/top-level/node-packages.nix +++ b/pkgs/top-level/node-packages.nix @@ -40,6 +40,21 @@ let self = { ]; }; + amdefine = "amdefine-0.0.4"; + + "amdefine->=0.0.4" = self."amdefine-0.0.4"; + + "amdefine-0.0.4" = self.buildNodePackage rec { + name = "amdefine-0.0.4"; + src = fetchurl { + url = "http://registry.npmjs.org/amdefine/-/${name}.tgz"; + sha256 = "10sdb85mb6fvkglqwg7icdh58sng9pm8655npmsbv18gsbcnmbg4"; + }; + deps = [ + + ]; + }; + "ansi" = self."ansi-~0.1.2"; "ansi-~0.1.2" = self.buildNodePackage rec { @@ -854,11 +869,14 @@ let self = { "optimist" = self."optimist-*"; - "optimist-*" = self.buildNodePackage rec { - name = "optimist-0.3.4"; + "optimist-*" = self."optimist-0.3.5"; + "optimist-~0.3.5" = self."optimist-0.3.5"; + + "optimist-0.3.5" = self.buildNodePackage rec { + name = "optimist-0.3.5"; src = fetchurl { url = "http://registry.npmjs.org/optimist/-/${name}.tgz"; - sha256 = "add88b473a660ad8a9ff88a3eec49a74d9c64f592acbcd219ff4c0d7249f4d60"; + sha256 = "17d06n3y9difknq9j340qksj2zllal6sg0pj4clj9ja5jxf721x4"; }; deps = [ self."wordwrap-~0.0.2" @@ -1218,7 +1236,20 @@ let self = { ]; }; - "source-map" = self."source-map-0.1.2"; + "source-map" = self."source-map-0.1.7"; + + "source-map-~0.1.7" = self."source-map-0.1.7"; + + "source-map-0.1.7" = self.buildNodePackage rec { + name = "source-map-0.1.7"; + src = fetchurl { + url = "http://registry.npmjs.org/source-map/-/${name}.tgz"; + sha256 = "041skhq60kwpx319iy0m33zcgc7q2ddlfl3vvmwl5ssl9p46g8x2"; + }; + deps = [ + self."amdefine->=0.0.4" + ]; + }; "source-map-0.1.2" = self.buildNodePackage rec { name = "source-map-0.1.2"; @@ -1298,7 +1329,19 @@ let self = { ]; }; - "uglify-js" = self."uglify-js-1.2.6"; + "uglify-js" = self."uglify-js-2.2.5"; + + "uglify-js-2.2.5" = self.buildNodePackage rec { + name = "uglify-js-2.2.5"; + src = fetchurl { + url = "http://registry.npmjs.org/uglify-js/-/${name}.tgz"; + sha256 = "18ic581gjyvfl4gvlcdmzw4vrcbvn698i2rznnba70f8lk6ndlgr"; + }; + deps = [ + self."source-map-~0.1.7" + self."optimist-~0.3.5" + ]; + }; "uglify-js-1.2.5" = self.buildNodePackage rec { name = "uglify-js-1.2.5"; From c308b10ec027c98d9df9e43f50d79203491fa85e Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 26 Feb 2013 11:18:16 -0500 Subject: [PATCH 045/407] Scala should work on all supported platforms --- pkgs/development/compilers/scala/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/compilers/scala/default.nix b/pkgs/development/compilers/scala/default.nix index a78ee06f652..e7c2c80ac55 100644 --- a/pkgs/development/compilers/scala/default.nix +++ b/pkgs/development/compilers/scala/default.nix @@ -28,5 +28,6 @@ stdenv.mkDerivation rec { ''; homepage = http://www.scala-lang.org/; license = "BSD"; + platforms = stdenv.lib.platforms.all; }; } From 566d5d3fb5497b1bd466bcb8c2bc24678240be87 Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Tue, 26 Feb 2013 19:42:04 +0100 Subject: [PATCH 046/407] Add mopidy, a music server supporting spotify and the mpd protocol --- pkgs/applications/audio/mopidy/default.nix | 44 ++++++++++++++++++ pkgs/applications/audio/mopidy/git.nix | 44 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 3 ++ pkgs/top-level/python-packages.nix | 54 ++++++++++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 pkgs/applications/audio/mopidy/default.nix create mode 100644 pkgs/applications/audio/mopidy/git.nix diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix new file mode 100644 index 00000000000..934669f225c --- /dev/null +++ b/pkgs/applications/audio/mopidy/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchgit, pythonPackages, pygobject, gst_python +, gst_plugins_good, gst_plugins_base +}: + +pythonPackages.buildPythonPackage rec { + name = "mopidy-${version}"; + + version = "0.11.1"; + + src = fetchgit { + url = "https://github.com/mopidy/mopidy.git"; + rev = "refs/tags/v${version}"; + sha256 = "123p9hsnlgwvrw4vzlxjf5f43rqzqa3ynbqha8pyi6r0q3ln7qjn"; + }; + + propagatedBuildInputs = with pythonPackages; [ + gst_python pygobject pykka pyspotify pylast + ]; + + # python zip complains about old timestamps + preConfigure = '' + find -print0 | xargs -0 touch + ''; + + # There are no tests + doCheck = false; + + postInstall = '' + for p in $out/bin/mopidy $out/bin/mopidy-scan; do + wrapProgram $p \ + --prefix GST_PLUGIN_PATH : ${gst_plugins_good}/lib/gstreamer-0.10 \ + --prefix GST_PLUGIN_PATH : ${gst_plugins_base}/lib/gstreamer-0.10 + done + ''; + + meta = { + homepage = http://www.mopidy.com/; + description = '' + A music server which can play music from Spotify and from your + local hard drive. + ''; + maintainers = [ stdenv.lib.maintainers.rickynils ]; + }; +} diff --git a/pkgs/applications/audio/mopidy/git.nix b/pkgs/applications/audio/mopidy/git.nix new file mode 100644 index 00000000000..81728e646c3 --- /dev/null +++ b/pkgs/applications/audio/mopidy/git.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchgit, pythonPackages, pygobject, gst_python +, gst_plugins_good, gst_plugins_base +}: + +pythonPackages.buildPythonPackage rec { + name = "mopidy-${version}"; + + version = "git-20130226"; + + src = fetchgit { + url = "https://github.com/mopidy/mopidy.git"; + rev = "86a7c2d7519680c6b9130795d35c4654958f4c04"; + sha256 = "00fxcfkpl19nslv4f4bspzw0kvjjp6hhcwag7rknmb8scfinqfac"; + }; + + propagatedBuildInputs = with pythonPackages; [ + gst_python pygobject pykka pyspotify pylast + ]; + + # python zip complains about old timestamps + preConfigure = '' + find -print0 | xargs -0 touch + ''; + + # There are no tests + doCheck = false; + + postInstall = '' + for p in $out/bin/mopidy $out/bin/mopidy-scan; do + wrapProgram $p \ + --prefix GST_PLUGIN_PATH : ${gst_plugins_good}/lib/gstreamer-0.10 \ + --prefix GST_PLUGIN_PATH : ${gst_plugins_base}/lib/gstreamer-0.10 + done + ''; + + meta = { + homepage = http://www.mopidy.com/; + description = '' + A music server which can play music from Spotify and from your + local hard drive. + ''; + maintainers = [ stdenv.lib.maintainers.rickynils ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d16d12367ca..60c2e02d5f4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7522,6 +7522,9 @@ let inherit (gnome) libgnomecanvas; }; + mopidy = callPackage ../applications/audio/mopidy { }; + mopidy_git = callPackage ../applications/audio/mopidy/git.nix { }; + mozilla = callPackage ../applications/networking/browsers/mozilla { inherit (gnome) libIDL; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 43c2aa4dba5..f98a3f08320 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4664,4 +4664,58 @@ pythonPackages = python.modules // rec { }; }; + pyspotify = buildPythonPackage rec { + name = "pyspotify-${version}"; + + version = "1.10"; + + src = fetchgit { + url = "https://github.com/mopidy/pyspotify.git"; + rev = "refs/tags/v${version}"; + sha256 = "1rvgrviwn6f037m8vq395chz6a1119dbsdhfwdbv5ambi0bak6ll"; + }; + + buildInputs = [ pkgs.libspotify ]; + + # python zip complains about old timestamps + preConfigure = '' + find -print0 | xargs -0 touch + ''; + + # There are no tests + doCheck = false; + + meta = { + homepage = http://pyspotify.mopidy.com; + description = "A Python interface to Spotify’s online music streaming service"; + maintainers = [ stdenv.lib.maintainers.rickynils ]; + }; + }; + + pykka = buildPythonPackage rec { + name = "pykka-${version}"; + + version = "1.1.0"; + + src = fetchgit { + url = "https://github.com/jodal/pykka.git"; + rev = "refs/tags/v${version}"; + sha256 = "0w6bcaqkzwmd9habszlgjkp3kkhkna08s9aivnmna5hddsghfqmz"; + }; + + # python zip complains about old timestamps + preConfigure = '' + find -print0 | xargs -0 touch + ''; + + # There are no tests + doCheck = false; + + meta = { + homepage = http://www.pykka.org; + description = "A Python implementation of the actor model"; + maintainers = [ stdenv.lib.maintainers.rickynils ]; + }; + }; + }; in pythonPackages From d5ec021cdb4989209c7250a8973a8a24bac4e35c Mon Sep 17 00:00:00 2001 From: Patrick John Wheeler Date: Wed, 27 Feb 2013 06:44:41 +0100 Subject: [PATCH 047/407] Making xlibs.xf86videovmware build --- pkgs/servers/x11/xorg/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index 23600b0e014..f26ba257c02 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -1724,8 +1724,9 @@ let url = mirror://xorg/X11R7.7/src/everything/xf86-video-vmware-12.0.2.tar.bz2; sha256 = "0isiwx516gww8hfk3vy7js83yziyjym9mq2zjadyq1a8v5gqf9y8"; }; - buildInputs = [pkgconfig fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto ]; - })) // {inherit fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto ;}; + CFLAGS = "-I${pixman}/include/pixman-1"; + buildInputs = [pkgconfig fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto pixman ]; + })) // {inherit fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto pixman ;}; xf86videovoodoo = (stdenv.mkDerivation ((if overrides ? xf86videovoodoo then overrides.xf86videovoodoo else x: x) { name = "xf86-video-voodoo-1.2.4"; From 55b67195d4313cd21d7c96fb0af378c4e6589fb7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 27 Feb 2013 12:00:37 +0100 Subject: [PATCH 048/407] haskell-packunused: add version 0.1.0.0 --- .../tools/haskell/packunused/default.nix | 16 ++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/development/tools/haskell/packunused/default.nix diff --git a/pkgs/development/tools/haskell/packunused/default.nix b/pkgs/development/tools/haskell/packunused/default.nix new file mode 100644 index 00000000000..814c2774cb2 --- /dev/null +++ b/pkgs/development/tools/haskell/packunused/default.nix @@ -0,0 +1,16 @@ +{ cabal, Cabal, cmdargs, filepath, haskellSrcExts }: + +cabal.mkDerivation (self: { + pname = "packunused"; + version = "0.1.0.0"; + sha256 = "131x99id3jcxglj24p5sjb6mnhphj925pp4jdjy09y6ai7wss3rs"; + isLibrary = false; + isExecutable = true; + buildDepends = [ Cabal cmdargs filepath haskellSrcExts ]; + meta = { + homepage = "https://github.com/hvr/packunused"; + description = "Tool for detecting redundant Cabal package dependencies"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index b4f5f66b8f2..39d6a58aeab 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -2093,6 +2093,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); myhasktags = callPackage ../tools/misc/myhasktags {}; + packunused = callPackage ../development/tools/haskell/packunused {}; + splot = callPackage ../development/tools/haskell/splot {}; timeplot = callPackage ../development/tools/haskell/timeplot {}; From 80dc8df25d21168aa09298d8d8032e26e1f4bc6b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 27 Feb 2013 12:00:40 +0100 Subject: [PATCH 049/407] haskell-github-backup: update to version 1.20120314 --- .../git-and-tools/github-backup/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/version-management/git-and-tools/github-backup/default.nix b/pkgs/applications/version-management/git-and-tools/github-backup/default.nix index 27aa09dc397..a2489dbc628 100644 --- a/pkgs/applications/version-management/git-and-tools/github-backup/default.nix +++ b/pkgs/applications/version-management/git-and-tools/github-backup/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "github-backup"; - version = "1.20120627"; - sha256 = "1nq5zj821idvcqybyxkpkma544ci30k2sr8jhp7f2bpa97yidn3k"; + version = "1.20120314"; + sha256 = "07ilb6cg1kbz4id53l4m46wjxzs7yxcmpz6280ym6k885dras5v2"; isLibrary = false; isExecutable = true; buildDepends = [ @@ -17,6 +17,5 @@ cabal.mkDerivation (self: { description = "backs up everything github knows about a repository, to the repository"; license = "GPL"; platforms = self.ghc.meta.platforms; - maintainers = [ self.stdenv.lib.maintainers.simons ]; }; }) From ad76386ff7d4664155ba2f72c57395060f6c0e7c Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Wed, 27 Feb 2013 12:14:09 +0100 Subject: [PATCH 050/407] Add mkpasswd, an overfeatured front end to crypt --- pkgs/tools/security/mkpasswd/default.nix | 28 ++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 30 insertions(+) create mode 100644 pkgs/tools/security/mkpasswd/default.nix diff --git a/pkgs/tools/security/mkpasswd/default.nix b/pkgs/tools/security/mkpasswd/default.nix new file mode 100644 index 00000000000..a1982cc4e66 --- /dev/null +++ b/pkgs/tools/security/mkpasswd/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl +}: + +stdenv.mkDerivation rec { + name = "mkpasswd-${version}"; + + version = "5.0.20"; + + src = fetchurl { + url = "http://ftp.debian.org/debian/pool/main/w/whois/whois_${version}.tar.xz"; + sha256 = "1kwf5pwc7w8dw40nrd4m4637mz7pbhc4c1v78j56nqj38sak50w1"; + }; + + preConfigure = '' + substituteInPlace Makefile --replace "prefix = /usr" "prefix = $out" + ''; + + buildPhase = "make mkpasswd"; + + installPhase = "make install-mkpasswd"; + + meta = { + homepage = http://ftp.debian.org/debian/pool/main/w/whois/; + description = '' + Overfeatured front end to crypt, from the Debian whois package. + ''; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 60c2e02d5f4..566a21a6052 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1122,6 +1122,8 @@ let mkcue = callPackage ../tools/cd-dvd/mkcue { }; + mkpasswd = callPackage ../tools/security/mkpasswd { }; + mktemp = callPackage ../tools/security/mktemp { }; modemmanager = callPackage ../tools/networking/modemmanager {}; From 586a93178e523efe01f0fcd75cd8632f0c45063c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Wed, 27 Feb 2013 13:05:21 +0100 Subject: [PATCH 051/407] transmission: bump from 2.52 to 2.60 2.60 is the newest of the gtk2-compatible versions. (Transmission >= 2.61 requires gtk3.) * Add inotify as input to not have transmission-daemon poll the torrent auto-load directory. * Add file as input to fix a small build time issue (non-fatal). * Remove unneeded gtk configure flags (support is auto-detected). * icon-theme.cache is only generated when building with gtk, so use rm -f to not error out when building without gtk. * Use gtk ? null instead of gtkClient flag because it is simpler. Build and runtime tested with and without gtk support. --- .../networking/p2p/transmission/default.nix | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pkgs/applications/networking/p2p/transmission/default.nix b/pkgs/applications/networking/p2p/transmission/default.nix index 0a86e140347..c59fddf6364 100644 --- a/pkgs/applications/networking/p2p/transmission/default.nix +++ b/pkgs/applications/networking/p2p/transmission/default.nix @@ -1,20 +1,23 @@ -{ stdenv, fetchurl, pkgconfig, openssl, curl, intltool, libevent, gtkClient ? true, gtk }: +{ stdenv, fetchurl, pkgconfig, openssl, curl, intltool, libevent, + file, inotifyTools, gtk ? null }: stdenv.mkDerivation rec { - name = "transmission-2.52"; + name = "transmission-2.60"; # transmission >= 2.61 requires gtk3 src = fetchurl { url = "http://download.transmissionbt.com/files/${name}.tar.xz"; - sha256 = "05sfq5h3731xc9a1k5r1q4gbs9yk0dr229asfxjjgg0lw1xzppdw"; + sha256 = "1ramdliyy8j7qqpkxg643lda11ynxwfhq6qcs31fr3h9x72l0rg4"; }; - buildInputs = [ pkgconfig openssl curl intltool libevent ] ++ - stdenv.lib.optional gtkClient gtk; + buildInputs = [ pkgconfig openssl curl intltool libevent + file inotifyTools gtk ]; - configureFlags = if gtkClient then "--enable-gtk" else "--disable-gtk"; + preConfigure = '' + sed -i -e 's|/usr/bin/file|${file}/bin/file|g' configure + ''; postInstall = '' - rm $out/share/icons/hicolor/icon-theme.cache + rm -f $out/share/icons/hicolor/icon-theme.cache ''; meta = { From d336909d9fdeef3fa3226bed5746561643d58478 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 27 Feb 2013 14:25:20 +0100 Subject: [PATCH 052/407] qemu-kvm: enable documentation build ... and rename the 'postPatch' hook to 'patchPhase'. --- pkgs/os-specific/linux/qemu-kvm/default.nix | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix index 9223b7af917..876f53b40b1 100644 --- a/pkgs/os-specific/linux/qemu-kvm/default.nix +++ b/pkgs/os-specific/linux/qemu-kvm/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, attr, zlib, SDL, alsaLib, pkgconfig, pciutils, libuuid, vde2 -, libjpeg, libpng, ncurses, python, glib, libaio, mesa +, libjpeg, libpng, ncurses, python, glib, libaio, mesa, perl, texinfo , spice, spice_protocol, spiceSupport ? false }: assert stdenv.isLinux; @@ -14,7 +14,12 @@ stdenv.mkDerivation rec { sha256 = "018vb5nmk2fsm143bs2bl2wirhasd4b10d7jchl32zik4inbk2p9"; }; - postPatch = + buildInputs = + [ attr zlib SDL alsaLib pkgconfig pciutils libuuid vde2 libjpeg libpng + ncurses python glib libaio mesa texinfo perl + ] ++ stdenv.lib.optionals spiceSupport [ spice_protocol spice ]; + + patchPhase = '' for i in $(find . -type f) do sed -i "$i" \ @@ -32,15 +37,9 @@ stdenv.mkDerivation rec { configureFlags = [ "--audio-drv-list=alsa" "--smbd=smbd" # use `smbd' from $PATH + "--enable-docs" ] ++ stdenv.lib.optional spiceSupport "--enable-spice"; - enableParallelBuilding = true; - - buildInputs = - [ attr zlib SDL alsaLib pkgconfig pciutils libuuid vde2 libjpeg libpng - ncurses python glib libaio mesa - ] ++ stdenv.lib.optionals spiceSupport [ spice_protocol spice ]; - postInstall = '' # Libvirt expects us to be called `qemu-kvm'. Otherwise it will @@ -49,6 +48,8 @@ stdenv.mkDerivation rec { ln -sv $(cd $out/bin && echo qemu-system-*) $out/bin/qemu-kvm ''; + enableParallelBuilding = true; + meta = { homepage = http://www.linux-kvm.org/; description = "A full virtualization solution for Linux on x86 hardware containing virtualization extensions"; From 97a2eb24d4112e6be8f4f1260146424644fc6ec4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 27 Feb 2013 14:34:13 +0100 Subject: [PATCH 053/407] qemu-kvm: re-use 'patchShebangs' function to fix script paths --- pkgs/os-specific/linux/qemu-kvm/default.nix | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix index 876f53b40b1..5aef46444bd 100644 --- a/pkgs/os-specific/linux/qemu-kvm/default.nix +++ b/pkgs/os-specific/linux/qemu-kvm/default.nix @@ -19,17 +19,8 @@ stdenv.mkDerivation rec { ncurses python glib libaio mesa texinfo perl ] ++ stdenv.lib.optionals spiceSupport [ spice_protocol spice ]; - patchPhase = - '' for i in $(find . -type f) - do - sed -i "$i" \ - -e 's|/bin/bash|/bin/sh|g ; - s|/usr/bin/python|${python}/bin/python|g ; - s|/bin/rm|rm|g' - done - '' + stdenv.lib.optionalString spiceSupport '' - for i in configure spice-qemu-char.c ui/spice-input.c ui/spice-core.c ui/qemu-spice.h - do + patchPhase = "patchShebangs ." + stdenv.lib.optionalString spiceSupport '' + for i in configure spice-qemu-char.c ui/spice-input.c ui/spice-core.c ui/qemu-spice.h; do substituteInPlace $i --replace '#include ' '#include ' done ''; From 2d375c3f5f6f189057b4d72e7ee893297f5c0cda Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 27 Feb 2013 14:34:32 +0100 Subject: [PATCH 054/407] qemu-kvm: provide a proper path to the python interpreter --- pkgs/os-specific/linux/qemu-kvm/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix index 5aef46444bd..94f3c6bcacb 100644 --- a/pkgs/os-specific/linux/qemu-kvm/default.nix +++ b/pkgs/os-specific/linux/qemu-kvm/default.nix @@ -29,6 +29,7 @@ stdenv.mkDerivation rec { [ "--audio-drv-list=alsa" "--smbd=smbd" # use `smbd' from $PATH "--enable-docs" + "--python=${python}/bin/python" ] ++ stdenv.lib.optional spiceSupport "--enable-spice"; postInstall = From b6d0d176f28a16d90de07c09f451cd9fc490e3b0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 27 Feb 2013 14:34:42 +0100 Subject: [PATCH 055/407] qemu-kvm: enable regression test suite --- pkgs/os-specific/linux/qemu-kvm/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix index 94f3c6bcacb..3b37273bdcb 100644 --- a/pkgs/os-specific/linux/qemu-kvm/default.nix +++ b/pkgs/os-specific/linux/qemu-kvm/default.nix @@ -40,6 +40,8 @@ stdenv.mkDerivation rec { ln -sv $(cd $out/bin && echo qemu-system-*) $out/bin/qemu-kvm ''; + doCheck = true; + enableParallelBuilding = true; meta = { From c3b759d3d36fe918170e75c6c28f9e5a0821a5b5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Feb 2013 14:35:56 +0100 Subject: [PATCH 056/407] Catalyst::Plugin::Captcha: Add --- pkgs/top-level/perl-packages.nix | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index b9ae875fc7d..03d074d094d 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -510,6 +510,18 @@ rec { }; }; + CatalystPluginCaptcha = buildPerlPackage { + name = "Catalyst-Plugin-Captcha-0.04"; + src = fetchurl { + url = mirror://cpan/authors/id/D/DI/DIEGOK/Catalyst-Plugin-Captcha-0.04.tar.gz; + sha256 = "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa"; + }; + propagatedBuildInputs = [ CatalystRuntime CatalystPluginSession GDSecurityImage HTTPDate ]; + meta = { + description = "Create and validate Captcha for Catalyst"; + }; + }; + CatalystPluginConfigLoader = buildPerlPackage rec { name = "Catalyst-Plugin-ConfigLoader-0.30"; src = fetchurl { @@ -2013,6 +2025,19 @@ rec { makeMakerFlags = "--lib_png_path=${pkgs.libpng} --lib_jpeg_path=${pkgs.libjpeg} --lib_zlib_path=${pkgs.zlib} --lib_ft_path=${pkgs.freetype} --lib_fontconfig_path=${pkgs.fontconfig} --lib_xpm_path=${pkgs.xlibs.libXpm}"; }; + GDSecurityImage = buildPerlPackage { + name = "GD-SecurityImage-1.72"; + src = fetchurl { + url = mirror://cpan/authors/id/B/BU/BURAK/GD-SecurityImage-1.72.tar.gz; + sha256 = "07a025krdaml5ls7gyssfdcsif6cnsnksrxkqk48n9dmv7rz7q1r"; + }; + propagatedBuildInputs = [ GD ]; + meta = { + description = "Security image (captcha) generator"; + license = "perl5"; + }; + }; + GeoIP = buildPerlPackage rec { name = "Geo-IP-1.39"; src = fetchurl { From f2f860bd29e377f7a0be11319c7cc472bc70865c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Feb 2013 14:43:00 +0100 Subject: [PATCH 057/407] httpd: Update to 2.4.4 CVE-2012-3499, CVE-2012-4558 --- pkgs/servers/http/apache-httpd/2.4.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/http/apache-httpd/2.4.nix b/pkgs/servers/http/apache-httpd/2.4.nix index 507ced85998..da353212657 100644 --- a/pkgs/servers/http/apache-httpd/2.4.nix +++ b/pkgs/servers/http/apache-httpd/2.4.nix @@ -14,12 +14,12 @@ assert sslSupport -> aprutil.sslSupport && openssl != null; assert ldapSupport -> aprutil.ldapSupport && openldap != null; stdenv.mkDerivation rec { - version = "2.4.3"; + version = "2.4.4"; name = "apache-httpd-${version}"; src = fetchurl { url = "mirror://apache/httpd/httpd-${version}.tar.bz2"; - sha256 = "17i4zdcjfvxks0p1fbqvab37kr8d6zscqaqan8pqkw8iq6wh48fq"; + sha256 = "0p35jy6mkb1q48bia719qxs5bwxv0wadyhxi61rsr93nrbgbvalj"; }; buildInputs = [perl] ++ From bf8f39ff9b6a023548063df1b3078ec673737528 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Feb 2013 14:47:40 +0100 Subject: [PATCH 058/407] linux: Update to 3.2.39 CVE-2013-0228 --- pkgs/os-specific/linux/kernel/linux-3.2.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-3.2.nix b/pkgs/os-specific/linux/kernel/linux-3.2.nix index afa62fe7798..f567fe084ef 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.2.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.2.nix @@ -239,8 +239,7 @@ in import ./generic.nix ( rec { - version = "3.2.38"; - testing = false; + version = "3.2.39"; modDirVersion = version; @@ -249,8 +248,8 @@ import ./generic.nix ( ''; src = fetchurl { - url = "mirror://kernel/linux/kernel/v3.0/${if testing then "testing/" else ""}linux-${version}.tar.xz"; - sha256 = "10hm4cy56xjl5ckv3jj3grw31qfhwrgia0wq71c34dw0mv3bix8w"; + url = "mirror://kernel/linux/kernel/v3.0/linux-${version}.tar.xz"; + sha256 = "066vgyz37jxxwmdskwzazg7xa09mirk4krlyxpvsx68ai5rjf826"; }; config = configWithPlatform stdenv.platform; From 5509f3beec75054dc1d0dcdbfdc6c4c417eb2e37 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Feb 2013 15:07:28 +0100 Subject: [PATCH 059/407] wireshark: Update to 1.8.5 CVE-2013-1582, CVE-2013-1586, CVE-2013-1588, CVE-2013-1590 --- .../networking/sniffers/wireshark/default.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix index a5f0ddea28f..173453f7b5e 100644 --- a/pkgs/applications/networking/sniffers/wireshark/default.nix +++ b/pkgs/applications/networking/sniffers/wireshark/default.nix @@ -3,20 +3,20 @@ , heimdal, python, lynx, lua5 }: -let - version = "1.8.3"; -in +let version = "1.8.5"; in + stdenv.mkDerivation { name = "wireshark-${version}"; src = fetchurl { url = "mirror://sourceforge/wireshark/wireshark-${version}.tar.bz2"; - sha256 = "1crg59kkxb7lw1wpfg52hd4l00hq56pyg7f40c7sgqmm0vsmza43"; + sha256 = "0wp33qa5yvi60b08iiz55wflhr1vwd7680sbwx2kqjlp2s17kr6l"; }; - buildInputs = [perl pkgconfig gtk libpcap flex bison gnutls libgcrypt - glib zlib libxml2 libxslt adns geoip heimdal python lynx lua5 - ]; + buildInputs = + [ perl pkgconfig gtk libpcap flex bison gnutls libgcrypt + glib zlib libxml2 libxslt adns geoip heimdal python lynx lua5 + ]; configureFlags = "--disable-usr-local --with-ssl --enable-threads --enable-packet-editor"; From 0a43ce41de63113259566fc5ad5f592b45f937b3 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 03:54:54 +0100 Subject: [PATCH 060/407] chromium: Update dev and beta channels. So, chromium 25 is now stable, so we really need to get the build fixed on Hydra as soon as possible. And let's hope without nasty workarounds. This commits updates dev and beta channels to version 26.0.1410.12, because version 27.0.1423.0 seems to be unavailable right now. Build is running successfully on my machine, and the browser works as well on the sites I usually visit. Signed-off-by: aszlig --- .../networking/browsers/chromium/sources.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix index da3de4c968d..5c61422bea7 100644 --- a/pkgs/applications/networking/browsers/chromium/sources.nix +++ b/pkgs/applications/networking/browsers/chromium/sources.nix @@ -1,14 +1,14 @@ # This file is autogenerated from update.sh in the same directory. { dev = { - version = "26.0.1410.10"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.10.tar.xz"; - sha256 = "1s5c69j0g2nanapvq3fmkc5iv7s53x2q5d8fxgdzd7c5c8pzlbby"; + version = "26.0.1410.12"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.12.tar.xz"; + sha256 = "1cfzvlldzgm53jwys5zbrd4rszkinsr4n5ky5rcg6p6nw73b4hmj"; }; beta = { - version = "25.0.1364.84"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-25.0.1364.84.tar.bz2"; - sha256 = "1p5k7vpk4v2m5yhhdkplq4iq4mm1vv297m9sp7max1sjbngwq6m5"; + version = "26.0.1410.12"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.12.tar.xz"; + sha256 = "1cfzvlldzgm53jwys5zbrd4rszkinsr4n5ky5rcg6p6nw73b4hmj"; }; stable = { version = "24.0.1312.70"; From 28eff7146514f1026601f1b5b17925b2a3598b08 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 06:00:56 +0100 Subject: [PATCH 061/407] Revert "chromium: Force -fno-stack-protector..." This reverts commit b7cbb4da11fb409d597df473d480c51fa0d11536. The main reason behind this - apart from looking ugly - is that it didn't really solve anything, see: http://hydra.nixos.org/build/4198299 So, we need a different and less hacky approach... Signed-off-by: aszlig --- pkgs/applications/networking/browsers/chromium/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 8578514f968..c7414eec671 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -223,6 +223,4 @@ in stdenv.mkDerivation rec { license = licenses.bsd3; platforms = platforms.linux; }; -} // optionalAttrs only25 { - NIX_CFLAGS_COMPILE = "-fno-stack-protector"; } From 80af8871deb38949e274284a368e7f8e381f721a Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 10:32:50 +0100 Subject: [PATCH 062/407] flashplayer-11: Update to version 11.2.202.273. This version contains another set of security fixes, details are described here: http://www.adobe.com/support/security/bulletins/apsb13-08.html Signed-off-by: aszlig --- .../browsers/mozilla-plugins/flashplayer-11/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix index 202dfe2b02e..7f9fef224a5 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix @@ -43,9 +43,9 @@ let throw "no x86_64 debugging version available" else rec { # -> http://labs.adobe.com/downloads/flashplayer10.html - version = "11.2.202.262"; + version = "11.2.202.273"; url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz"; - sha256 = "1bfr7ajpqkah4kshhqkmi2c15mm962absrq9ks7gfsfaircp387j"; + sha256 = "0c15nszgg7zsv00n2qxha5zf8hmyf8i6byvhalnh5x46mr0rkbv9"; } else if stdenv.system == "i686-linux" then if debug then { @@ -54,9 +54,9 @@ let url = http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz; sha256 = "1z3649lv9sh7jnwl8d90a293nkaswagj2ynhsr4xmwiy7c0jz2lk"; } else rec { - version = "11.2.202.262"; + version = "11.2.202.273"; url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz"; - sha256 = "0fhslr46apa6qfzdhagmjb8vbl741ryh6j14qy2271nl2q687jsx"; + sha256 = "1gb14xv7gbq57qg1hxmrnryaw6xgmkg54ql5hr7q6szplj65wvmd"; } else throw "Flash Player is not supported on this platform"; From d5f85c20f24089772c5c905efa56f9a984a71ad8 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 12:57:40 +0100 Subject: [PATCH 063/407] xf86-input-wacom: Update to new version 0.19.0. Signed-off-by: aszlig --- pkgs/os-specific/linux/xf86-input-wacom/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/xf86-input-wacom/default.nix b/pkgs/os-specific/linux/xf86-input-wacom/default.nix index e043b12e820..63e4fb1ca73 100644 --- a/pkgs/os-specific/linux/xf86-input-wacom/default.nix +++ b/pkgs/os-specific/linux/xf86-input-wacom/default.nix @@ -3,11 +3,11 @@ , ncurses, pkgconfig, randrproto, xorgserver, xproto, udev, libXinerama, pixman }: stdenv.mkDerivation rec { - name = "xf86-input-wacom-0.16.0"; + name = "xf86-input-wacom-0.19.0"; src = fetchurl { url = "mirror://sourceforge/linuxwacom/${name}.tar.bz2"; - sha256 = "0sc0hmbs3l3ad68iwglbwjv9lg1vd333n1lv72j4nqmk7g57yrii"; + sha256 = "1lkvhirjysx0d2154jrwqc2i8jrqdjrlzjv7grbnm2cg5vpg7n53"; }; buildInputs = [ inputproto libX11 libXext libXi libXrandr libXrender From 3254c0ac29840798a96e3b6c964214ab97b57802 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 21:10:26 +0100 Subject: [PATCH 064/407] chromium: Add /dev/null to patches list. This is needed in order to ensure that the postPatch hook is executed, which is not when the patches list is empty. It is fixed by 82f94df719fe9fe5a861eafb575ccb1f8b5b5efb in stdenv-updates. So as soon as the branch gets merged, we can get rid of this hack as well. Signed-off-by: aszlig --- pkgs/applications/networking/browsers/chromium/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index c7414eec671..2b20e26b3f9 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -135,7 +135,9 @@ in stdenv.mkDerivation rec { patches = optional cupsSupport ./cups_allow_deprecated.patch ++ optional pulseSupport ./pulseaudio_array_bounds.patch ++ maybeFixPulseAudioBuild - ++ optional post25 ./clone_detached.patch; + ++ optional post25 ./clone_detached.patch + # XXX: Remove after stdenv-updates merge! + ++ singleton "/dev/null"; postPatch = optionalString useOpenSSL '' cat $opensslPatches | patch -p1 -d third_party/openssl/openssl From b3c3579172a406a76ed8b490fe86f72259e70326 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 21:15:28 +0100 Subject: [PATCH 065/407] chromium: Update stable channel to v25.0.1364.97. So, after searching for days in the wrong spot, eventually discovering that postPatch isn't run on Hydra, we're now set to move forward to version 25, YAY! Build has been tested locally (not that this would mean anything for Hydra, as we've seen) and the output has been actively used for browsing by me :-) Signed-off-by: aszlig --- pkgs/applications/networking/browsers/chromium/sources.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix index 5c61422bea7..9c483aa1702 100644 --- a/pkgs/applications/networking/browsers/chromium/sources.nix +++ b/pkgs/applications/networking/browsers/chromium/sources.nix @@ -11,8 +11,8 @@ sha256 = "1cfzvlldzgm53jwys5zbrd4rszkinsr4n5ky5rcg6p6nw73b4hmj"; }; stable = { - version = "24.0.1312.70"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-24.0.1312.70.tar.bz2"; - sha256 = "01z2xdfrlw2iynh9ink3d7hddldh2krgx3w9qnq9nq9z54vwwzfq"; + version = "25.0.1364.97"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-25.0.1364.97.tar.bz2"; + sha256 = "1r8khcic82m6g5i7669q8fxsfhjrlvp99iggqc5qpihljsz33ghm"; }; } From 3423ea9e7beabd2c00b4266cef2e0d187e00642c Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 21:36:00 +0100 Subject: [PATCH 066/407] chromium: Remove version 24 specific stuff. This gets rid of the patch for newer pulseaudio library versions. In addition, we now have protobuf and pciutils in default dependencies, as those are required (or better: optional, but recommended and thus activated by the default gyp options) by versions >= 25. Also, we now no longer depend on libpng, but I'm not dropping this, as we want to get back to libpng from nixpkgs again 'real soon'. The stack-protector flag is now disabled by default accross all versions, and probably didn't hurt back in version 24, but at least we're now no longer add it dependant on a particular version. And those pesky post/onlyXX version booleans are now pre/postXX, to ensure better clarity. Signed-off-by: aszlig --- .../networking/browsers/chromium/default.nix | 33 +++++++------------ .../browsers/chromium/pulse_audio_fix.patch | 11 ------- 2 files changed, 12 insertions(+), 32 deletions(-) delete mode 100644 pkgs/applications/networking/browsers/chromium/pulse_audio_fix.patch diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 2b20e26b3f9..5d191b2550d 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -13,13 +13,11 @@ , gcc, bison, gperf , glib, gtk, dbus_glib , libXScrnSaver, libXcursor, mesa - -# dependencies for v25 -, libvpx - -# dependencies for >= v25 , protobuf +# dependencies for v25 only +, libvpx + # dependencies for >= v26 , speechd, libXdamage @@ -59,7 +57,7 @@ let use_system_libexpat = true; use_system_libexif = true; use_system_libjpeg = true; - use_system_libpng = !post24; + use_system_libpng = false; # PNG dlopen() version conflict use_system_libusb = true; use_system_libxml = true; use_system_speex = true; @@ -76,7 +74,7 @@ let use_system_skia = false; use_system_sqlite = false; # http://crbug.com/22208 use_system_v8 = false; - } // optionalAttrs (post24 && !post25) { + } // optionalAttrs pre26 { use_system_libvpx = true; use_system_protobuf = true; }; @@ -89,14 +87,8 @@ let libusb1 libexif ]; - post23 = !versionOlder sourceInfo.version "24.0.0.0"; - post24 = !versionOlder sourceInfo.version "25.0.0.0"; - post25 = !versionOlder sourceInfo.version "26.0.0.0"; - only24 = post23 && !post24; - only25 = post24 && !post25; - - maybeFixPulseAudioBuild = optional (only24 && pulseSupport) - ./pulse_audio_fix.patch; + pre26 = versionOlder sourceInfo.version "26.0.0.0"; + post25 = !pre26; in stdenv.mkDerivation rec { name = "${packageName}-${version}"; @@ -119,13 +111,13 @@ in stdenv.mkDerivation rec { krb5 glib gtk dbus_glib libXScrnSaver libXcursor mesa + pciutils protobuf ] ++ optional gnomeKeyringSupport libgnome_keyring ++ optionals gnomeSupport [ gconf libgcrypt ] ++ optional enableSELinux libselinux ++ optional cupsSupport libgcrypt ++ optional pulseSupport pulseaudio - ++ optionals post24 [ pciutils protobuf ] - ++ optional only25 libvpx + ++ optional pre26 libvpx ++ optionals post25 [ speechd libXdamage ]; opensslPatches = optional useOpenSSL openssl.patches; @@ -134,15 +126,14 @@ in stdenv.mkDerivation rec { patches = optional cupsSupport ./cups_allow_deprecated.patch ++ optional pulseSupport ./pulseaudio_array_bounds.patch - ++ maybeFixPulseAudioBuild ++ optional post25 ./clone_detached.patch # XXX: Remove after stdenv-updates merge! ++ singleton "/dev/null"; - postPatch = optionalString useOpenSSL '' + postPatch = '' + sed -i -r -e 's/-f(stack-protector)(-all)?/-fno-\1/' build/common.gypi + '' + optionalString useOpenSSL '' cat $opensslPatches | patch -p1 -d third_party/openssl/openssl - '' + optionalString post24 '' - sed -i -r -e "s/-f(stack-protector)(-all)?/-fno-\1/" build/common.gypi '' + optionalString post25 '' sed -i -e 's|/usr/bin/gcc|gcc|' \ third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp diff --git a/pkgs/applications/networking/browsers/chromium/pulse_audio_fix.patch b/pkgs/applications/networking/browsers/chromium/pulse_audio_fix.patch deleted file mode 100644 index 01ff89a9a63..00000000000 --- a/pkgs/applications/networking/browsers/chromium/pulse_audio_fix.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- chromium-build/media/audio/pulse/pulse_output.cc.orig 2012-10-26 09:44:38.509209905 -0700 -+++ chromium-build/media/audio/pulse/pulse_output.cc 2012-10-26 09:45:32.178819603 -0700 -@@ -86,7 +86,7 @@ - - // All channel maps have the same size array of channel positions. - for (unsigned int channel = 0; channel != CHANNELS_MAX; ++channel) { -- int channel_position = kChannelOrderings[channel_layout][channel]; -+ int channel_position = ChannelOrder(channel_layout, static_cast(channel)); - if (channel_position > -1) { - channel_map.map[channel_position] = ChromiumToPAChannelPosition( - static_cast(channel)); From adef38370c21957072ca5d006635a62eb050d8a0 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 28 Feb 2013 01:16:51 +0100 Subject: [PATCH 067/407] nix: Update to 1.5 --- pkgs/tools/package-management/nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index c31062989e1..579805a2653 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -5,11 +5,11 @@ }: stdenv.mkDerivation rec { - name = "nix-1.4"; + name = "nix-1.5"; src = fetchurl { url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz"; - sha256 = "f400c7e9c935271b833055e4d6888ec15eb90ef92ee6521dc55f1501036dc9b2"; + sha256 = "ff63673afbcfd916acef881717dd9843d143efa70529ea89dd6b92995d54c076"; }; buildNativeInputs = [ perl pkgconfig ]; From 4f4dc400994cd8c4e7de28fe57b4b30b0e8fc70b Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 28 Feb 2013 01:22:00 +0100 Subject: [PATCH 068/407] flashplayer-11: Add missing rpath to libnss. This was missing in the previous update as well, and no one seemed to notice it, including myself? Anyway, it's now fixed. Signed-off-by: aszlig --- .../browsers/mozilla-plugins/flashplayer-11/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix index 7f9fef224a5..10faa983cc1 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix @@ -19,6 +19,7 @@ , cairo , atk , gdk_pixbuf +, nss , debug ? false /* you have to add ~/mm.cfg : @@ -78,7 +79,7 @@ stdenv.mkDerivation { rpath = stdenv.lib.makeLibraryPath [ zlib alsaLib curl nspr fontconfig freetype expat libX11 libXext libXrender libXcursor libXt gtk glib pango atk cairo gdk_pixbuf - libvdpau + libvdpau nss ]; buildPhase = ":"; From 7cd4a5b0a1755af11ceff431899401d936324a7e Mon Sep 17 00:00:00 2001 From: Sergey Mironov Date: Wed, 27 Feb 2013 16:26:08 +0400 Subject: [PATCH 069/407] zathura: set myself as a maintainer Conflicts: pkgs/applications/misc/zathura/default.nix --- pkgs/applications/misc/zathura/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/zathura/default.nix b/pkgs/applications/misc/zathura/default.nix index b5e0092975c..29231943cd7 100644 --- a/pkgs/applications/misc/zathura/default.nix +++ b/pkgs/applications/misc/zathura/default.nix @@ -36,7 +36,7 @@ rec { ''; license = stdenv.lib.licenses.zlib; platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.garbas ]; + maintainers = [ stdenv.lib.maintainers.garbas stdenv.lib.maintainers.smironov ]; }; }; } From 061627feed27e60b39c2016a4227d8bc781a28da Mon Sep 17 00:00:00 2001 From: Sergey Mironov Date: Thu, 28 Feb 2013 02:36:25 +0400 Subject: [PATCH 070/407] zathura: fix man pages; include .desktop icon --- pkgs/applications/misc/zathura/builder.sh | 12 +- .../misc/zathura/core/default.nix | 11 +- pkgs/applications/misc/zathura/default.nix | 8 +- pkgs/applications/misc/zathura/icon.xpm | 120 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 +- 5 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 pkgs/applications/misc/zathura/icon.xpm diff --git a/pkgs/applications/misc/zathura/builder.sh b/pkgs/applications/misc/zathura/builder.sh index 9ca45b2cc99..149481367b4 100644 --- a/pkgs/applications/misc/zathura/builder.sh +++ b/pkgs/applications/misc/zathura/builder.sh @@ -1,11 +1,21 @@ source $stdenv/setup mkdir -pv $out/bin/ +mkdir -pv $out/share/ +mkdir -pv $out/share/applications/ +mkdir -pv $out/share/pixmaps/ cat > $out/bin/zathura < $out/share/applications/zathura.desktop +echo "Icon=pwmt" >> $out/share/applications/zathura.desktop + chmod 755 $out/bin/zathura diff --git a/pkgs/applications/misc/zathura/core/default.nix b/pkgs/applications/misc/zathura/core/default.nix index f56becf4512..a3726fd460d 100644 --- a/pkgs/applications/misc/zathura/core/default.nix +++ b/pkgs/applications/misc/zathura/core/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, gtk, girara, gettext }: +{ stdenv, fetchurl, pkgconfig, gtk, girara, gettext, docutils }: stdenv.mkDerivation rec { @@ -13,7 +13,14 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig gtk girara gettext ]; - makeFlags = "PREFIX=$(out)"; + # Bug in zathura build system: we should remove empty manfiles in order them + # to be compiled properly + preBuild = '' + rm zathura.1 + rm zathurarc.5 + ''; + + makeFlags = [ "PREFIX=$(out)" "RSTTOMAN=${docutils}/bin/rst2man.py" "VERBOSE=1" ]; meta = { homepage = http://pwmt.org/projects/zathura/; diff --git a/pkgs/applications/misc/zathura/default.nix b/pkgs/applications/misc/zathura/default.nix index 29231943cd7..8bdc7865832 100644 --- a/pkgs/applications/misc/zathura/default.nix +++ b/pkgs/applications/misc/zathura/default.nix @@ -1,4 +1,4 @@ -{ callPackage, pkgs }: +{ callPackage, pkgs, fetchurl }: rec { inherit (pkgs) stdenv; @@ -11,7 +11,9 @@ rec { zathura_ps = callPackage ./ps { }; - zathuraWrapper = stdenv.mkDerivation rec { + zathuraWrapper = stdenv.mkDerivation { + + inherit zathura_core; name = "zathura-${zathura_core.version}"; @@ -21,7 +23,7 @@ rec { zathura_ps ]; - zathura = "${zathura_core}/bin/zathura"; + icon = ./icon.xpm; builder = ./builder.sh; diff --git a/pkgs/applications/misc/zathura/icon.xpm b/pkgs/applications/misc/zathura/icon.xpm new file mode 100644 index 00000000000..a863c5ddb09 --- /dev/null +++ b/pkgs/applications/misc/zathura/icon.xpm @@ -0,0 +1,120 @@ +/* XPM */ +static char *freeimage[] = { +/* width height num_colors chars_per_pixel */ +"16 16 96 2", +/* colors */ +" c #1e1e1e", +" . c #222222", +" X c #212121", +" o c #535353", +" O c #a4a4a4", +" + c #202020", +" @ c #252525", +" # c #3c3c3c", +" $ c #292929", +" % c #979797", +" & c #cccccc", +" * c #303030", +" = c #1f1f1f", +" - c #494949", +" ; c #dddddd", +" : c #696969", +" > c #232323", +" , c #262626", +" < c #adadad", +" 1 c #bbbbbb", +" 2 c #1d1d1d", +" 3 c #1c1c1c", +" 4 c #5e5e5e", +" 5 c #e8e8e8", +" 6 c #9c9c9c", +" 7 c #242424", +" 8 c #b1b1b1", +" 9 c #b3b3b3", +" 0 c #090909", +" q c #161616", +" w c #131313", +" e c #4d4d4d", +" r c #dedede", +" t c #afafaf", +" y c #282828", +" u c #393939", +" i c #c4c4c4", +" p c #dcdcdc", +" a c #9a9a9a", +" s c #a2a2a2", +" d c #ababab", +" f c #313131", +" g c #a7a7a7", +" h c #e4e4e4", +" j c #f2f2f2", +" k c #eaeaea", +" l c #e2e2e2", +" z c #f0f0f0", +" x c #d5d5d5", +" c c #737373", +" v c #323232", +" b c #808080", +" n c #7a7a7a", +" m c #d3d3d3", +" M c #e5e5e5", +" N c #8a8a8a", +" B c #cbcbcb", +" V c #b5b5b5", +" C c #b9b9b9", +" Z c #272727", +" A c #b4b4b4", +" S c #bababa", +" D c #2d2d2d", +" F c #414141", +" G c #444444", +" H c #f4f4f4", +" J c #838383", +" K c #cfcfcf", +" L c #fafafa", +" P c #efefef", +" I c #e3e3e3", +" U c #8d8d8d", +" Y c #656565", +" T c #ffffff", +" R c #fbfbfb", +" E c #e9e9e9", +" W c #bdbdbd", +" Q c #e1e1e1", +" ! c #dfdfdf", +" ~ c #646464", +" ^ c #3a3a3a", +" / c #a1a1a1", +" ( c #999999", +" ) c #c0c0c0", +" _ c #3b3b3b", +" ` c #acacac", +" ' c #050505", +" ] c #151515", +" [ c #1b1b1b", +" { c #1a1a1a", +" } c #b2b2b2", +" | c #a5a5a5", +". c #c5c5c5", +".. c #a6a6a6", +".X c #bfbfbf", +".o c #747474", +/* pixels */ +" ", +" . . . X X X X . o O + X . . ", +" . . X @ # $ . @ % & * = . . ", +" . . - ; : > , < 1 2 X . . ", +" . . 3 4 5 6 7 7 8 9 0 q q 3 ", +" . + w e r t y u i p a s d 4 ", +" X f g h j k p l z z x g c v ", +" X f b n m M N c B V 3 , > X ", +" X X w V C $ Z A S + $ , . ", +" D F G u S H 1 J K L P I U @ ", +" Y T T T R E & W Q ! d g ~ 7 ", +" ^ / 6 ( ; ) _ 2 ` 8 ' ] [ X ", +" + > 7 { A } 7 @ |. $ + . . ", +" X X X ].. 8 Z 7 n.X + X . . ", +" . . . { n.o 7 . @ y X X . . ", +" " +}; + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 566a21a6052..b6803ad3863 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8173,7 +8173,7 @@ let zathuraCollection = recurseIntoAttrs (let callPackage = newScope pkgs.zathuraCollection; in - import ../applications/misc/zathura { inherit callPackage pkgs; }); + import ../applications/misc/zathura { inherit callPackage pkgs fetchurl; }); zathura = zathuraCollection.zathuraWrapper; From 513a3fb558a04c89091605874e14a1efaac5c507 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 10:40:18 +0100 Subject: [PATCH 071/407] haskell-iproute: patch library to depend on 'safe' instead of the obsolete 'Safe' package --- pkgs/development/libraries/haskell/iproute/default.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/iproute/default.nix b/pkgs/development/libraries/haskell/iproute/default.nix index 1ec2b659f0c..4a496a981c6 100644 --- a/pkgs/development/libraries/haskell/iproute/default.nix +++ b/pkgs/development/libraries/haskell/iproute/default.nix @@ -1,5 +1,5 @@ { cabal, appar, byteorder, doctest, hspec, network, QuickCheck -, Safe +, safe }: cabal.mkDerivation (self: { @@ -8,8 +8,11 @@ cabal.mkDerivation (self: { sha256 = "1ni91llvq1mfdsjmw1laqhk964y4vlpyk5s25j8klsfn27mq6c68"; buildDepends = [ appar byteorder network ]; testDepends = [ - appar byteorder doctest hspec network QuickCheck Safe + appar byteorder doctest hspec network QuickCheck safe ]; + patchPhase = '' + sed -i -e 's|Safe|safe|' iproute.cabal + ''; meta = { homepage = "http://www.mew.org/~kazu/proj/iproute/"; description = "IP Routing Table"; From 5207a4e01fecd4c837135ba83908c4f85ddfaa5d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 10:40:40 +0100 Subject: [PATCH 072/407] haskell-Safe: drop obsolete library, use haskell-safe instead --- pkgs/development/libraries/haskell/Safe/default.nix | 13 ------------- pkgs/top-level/haskell-packages.nix | 2 -- 2 files changed, 15 deletions(-) delete mode 100644 pkgs/development/libraries/haskell/Safe/default.nix diff --git a/pkgs/development/libraries/haskell/Safe/default.nix b/pkgs/development/libraries/haskell/Safe/default.nix deleted file mode 100644 index f35877cd656..00000000000 --- a/pkgs/development/libraries/haskell/Safe/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ cabal }: - -cabal.mkDerivation (self: { - pname = "Safe"; - version = "0.1"; - sha256 = "0ybi5r4635yjx41ig54bm426fbdzrivc5kn8fwqxmzm62ai0v623"; - meta = { - homepage = "http://www-users.cs.york.ac.uk/~ndm/projects/libraries.php"; - description = "Library for safe (pattern match free) functions"; - license = self.stdenv.lib.licenses.bsd3; - platforms = self.ghc.meta.platforms; - }; -}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 39d6a58aeab..b3c07255a32 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1552,8 +1552,6 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); safe = callPackage ../development/libraries/haskell/safe {}; - Safe = callPackage ../development/libraries/haskell/Safe {}; - SafeSemaphore = callPackage ../development/libraries/haskell/SafeSemaphore {}; sendfile = callPackage ../development/libraries/haskell/sendfile {}; From e23be1b2efa618f20c0006ecda1196d70e918663 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:44 +0100 Subject: [PATCH 073/407] git-annex: update to version 4.20130227 --- .../version-management/git-and-tools/git-annex/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/version-management/git-and-tools/git-annex/default.nix b/pkgs/applications/version-management/git-and-tools/git-annex/default.nix index 3d11b484173..e1d2397c375 100644 --- a/pkgs/applications/version-management/git-and-tools/git-annex/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git-annex/default.nix @@ -12,14 +12,14 @@ }: let - version = "3.20130216"; + version = "4.20130227"; in stdenv.mkDerivation { name = "git-annex-${version}"; src = fetchurl { url = "http://git.kitenet.net/?p=git-annex.git;a=snapshot;sf=tgz;h=${version}"; - sha256 = "1zbxkv9kkfyr8haml0wih1fi2xi6qazwzcxjyv8q65fa80ksskbr"; + sha256 = "1zw5kzb08zz43ahbhrazjpq9zn73l3kwnqilp464frf7fg7rwan6"; name = "git-annex-${version}.tar.gz"; }; From 93876deae2101ac0887b090ae7137703b125cf7f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:48 +0100 Subject: [PATCH 074/407] haskell-DAV: update to version 0.3.1 --- pkgs/development/libraries/haskell/DAV/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/DAV/default.nix b/pkgs/development/libraries/haskell/DAV/default.nix index b1932966675..e3c6b11e55b 100644 --- a/pkgs/development/libraries/haskell/DAV/default.nix +++ b/pkgs/development/libraries/haskell/DAV/default.nix @@ -5,15 +5,14 @@ cabal.mkDerivation (self: { pname = "DAV"; - version = "0.3"; - sha256 = "16qbq59g79a0a1n6vblndj1fknj9fvd0anhrsz9czwl3k3lk5cx8"; + version = "0.3.1"; + sha256 = "0ql6sf61gq55iyn189papnid91n4ab5s2i24zvkqrgixjz7998rd"; isLibrary = true; isExecutable = true; buildDepends = [ caseInsensitive cmdargs httpConduit httpTypes lens liftedBase mtl network resourcet transformers xmlConduit xmlHamlet ]; - jailbreak = true; meta = { homepage = "http://floss.scru.org/hDAV"; description = "RFC 4918 WebDAV support"; From 19eb332f1a037beb3269345c066a31c5f24ebb01 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:48 +0100 Subject: [PATCH 075/407] haskell-basic-prelude: update to version 0.3.3.0 --- pkgs/development/libraries/haskell/basic-prelude/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/basic-prelude/default.nix b/pkgs/development/libraries/haskell/basic-prelude/default.nix index df00aff549f..77f37cfe5af 100644 --- a/pkgs/development/libraries/haskell/basic-prelude/default.nix +++ b/pkgs/development/libraries/haskell/basic-prelude/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "basic-prelude"; - version = "0.3.2.0"; - sha256 = "1sdwkh9xrsx8v96d06jll7cqc0p6ykv2y9gnjzpbfx0k3ns69kcj"; + version = "0.3.3.0"; + sha256 = "1b3fydswi7sj2j5d3jfynd9r5qg8pzlv1qdb9xp56ig01ig18cyv"; buildDepends = [ hashable liftedBase ReadArgs systemFilepath text transformers unorderedContainers vector From 007ca863dc8ee8701a4511f7b71a8f62da3f06b3 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 076/407] haskell-classy-prelude-conduit: update to version 0.5.2 --- .../libraries/haskell/classy-prelude-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix index 6af68223834..44e27aa1bc3 100644 --- a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "classy-prelude-conduit"; - version = "0.5.1"; - sha256 = "1vwcxwrbnczchq2b773kjjr3ysc47widak8qj0kwi26nf3jics4k"; + version = "0.5.2"; + sha256 = "11krzhy78z0srjy5g6h8ssv5n3ml8ryx92x0zdjigqxw4zq9ic72"; buildDepends = [ classyPrelude conduit monadControl resourcet transformers void xmlConduit From 0e0f3c921bba2069320fa068a2e9f2adbe80a052 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 077/407] haskell-classy-prelude: update to version 0.5.2 --- pkgs/development/libraries/haskell/classy-prelude/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/classy-prelude/default.nix b/pkgs/development/libraries/haskell/classy-prelude/default.nix index 4c2f076039e..48b6bc58369 100644 --- a/pkgs/development/libraries/haskell/classy-prelude/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "classy-prelude"; - version = "0.5.1"; - sha256 = "0kgnffqvh13adadp85iw4ybbs5jpa5hwrr2dsi2aj9p8lvzac1jy"; + version = "0.5.2"; + sha256 = "1nmhx6fs783v67b5ygdlmpxbsj41brj32i1sx9gyjyhfvr40wiw5"; buildDepends = [ basicPrelude hashable liftedBase systemFilepath text transformers unorderedContainers vector From f0af955d7d4bef0e10606b10766e25e1d1aab44b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 078/407] haskell-conduit: update to version 1.0.0.2 --- pkgs/development/libraries/haskell/conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix index 4dada245791..c452815db25 100644 --- a/pkgs/development/libraries/haskell/conduit/default.nix +++ b/pkgs/development/libraries/haskell/conduit/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "conduit"; - version = "1.0.0"; - sha256 = "1sx7s3awzb7y51prmmvrx9gxhd5068rbzwl719lfx3r50k94r00d"; + version = "1.0.0.2"; + sha256 = "0dl73wjdbprrv6ll94x4ck0b561n43y3a7764s065zbsm8mn8h3z"; buildDepends = [ liftedBase monadControl resourcet text transformers transformersBase void From d16458a486f0bd92337c808331c382b1ed3ca8f5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 079/407] haskell-digestive-functors-heist: update to version 0.6.1.0 --- .../haskell/digestive-functors-heist/default.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix b/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix index 0b7eb1e88de..48853c13655 100644 --- a/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix +++ b/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix @@ -1,11 +1,13 @@ -{ cabal, digestiveFunctors, heist, mtl, text, xmlhtml }: +{ cabal, blazeBuilder, digestiveFunctors, heist, mtl, text, xmlhtml +}: cabal.mkDerivation (self: { pname = "digestive-functors-heist"; - version = "0.6.0.0"; - sha256 = "17qndqsk09fvnvyhhw3xbbjjhfyyp4sivc898vqllyyky0wqmrdk"; - buildDepends = [ digestiveFunctors heist mtl text xmlhtml ]; - jailbreak = true; + version = "0.6.1.0"; + sha256 = "08h883731cb5kqsv33f6dpf2lgh1r6qn9maqjkn5766vqf7m28nx"; + buildDepends = [ + blazeBuilder digestiveFunctors heist mtl text xmlhtml + ]; meta = { homepage = "http://github.com/jaspervdj/digestive-functors"; description = "Heist frontend for the digestive-functors library"; From 41675d6dc3cfe0945aab882cccba5671e88fb4e8 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 080/407] haskell-heist: update to version 0.11.1 --- pkgs/development/libraries/haskell/heist/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/heist/default.nix b/pkgs/development/libraries/haskell/heist/default.nix index 526a9b6ed87..45ff3fea7f0 100644 --- a/pkgs/development/libraries/haskell/heist/default.nix +++ b/pkgs/development/libraries/haskell/heist/default.nix @@ -5,14 +5,13 @@ cabal.mkDerivation (self: { pname = "heist"; - version = "0.11.0.1"; - sha256 = "0d5nn0kfs7hbgs4b77i8c8pq2q5hldqk08dacva7xlxvjrlxsyn6"; + version = "0.11.1"; + sha256 = "17d6jycgxx5fz8sd3wnln53im29vz8l9847qsqbpyx8adrcg7rjh"; buildDepends = [ aeson attoparsec blazeBuilder blazeHtml directoryTree dlist errors filepath hashable MonadCatchIOTransformers mtl random text time unorderedContainers vector xmlhtml ]; - jailbreak = true; meta = { homepage = "http://snapframework.com/"; description = "An Haskell template system supporting both HTML5 and XML"; From 9ba66ec28ebea4e822f8f58aa01285723b7997dd Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 081/407] haskell-http-conduit: update to version 1.9.0 --- .../haskell/http-conduit/default.nix | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix index 5ff4b4cd95e..dc5e248f445 100644 --- a/pkgs/development/libraries/haskell/http-conduit/default.nix +++ b/pkgs/development/libraries/haskell/http-conduit/default.nix @@ -1,29 +1,29 @@ -{ cabal, asn1Data, attoparsec, attoparsecConduit, base64Bytestring -, blazeBuilder, blazeBuilderConduit, caseInsensitive, certificate -, conduit, cookie, cprngAes, dataDefault, deepseq, failure -, filepath, hspec, httpTypes, HUnit, liftedBase, mimeTypes -, monadControl, mtl, network, networkConduit, random, regexCompat +{ cabal, asn1Data, base64Bytestring, blazeBuilder +, blazeBuilderConduit, caseInsensitive, certificate, conduit +, cookie, cprngAes, dataDefault, deepseq, failure, filepath, hspec +, httpTypes, HUnit, liftedBase, mimeTypes, monadControl, mtl +, network, networkConduit, publicsuffixlist, random, regexCompat , resourcet, socks, text, time, tls, tlsExtra, transformers , transformersBase, utf8String, void, wai, warp, zlibConduit }: cabal.mkDerivation (self: { pname = "http-conduit"; - version = "1.8.9"; - sha256 = "0v99nc29h4qm1dbs7bwk4nwhxwk22vzl4ghrq9r3vishi6gwr7hb"; + version = "1.9.0"; + sha256 = "1b6f2sg96fddk5ywbfvbvj9z81695d35qymf31idpkyshcp9argk"; buildDepends = [ - asn1Data attoparsec attoparsecConduit base64Bytestring blazeBuilder - blazeBuilderConduit caseInsensitive certificate conduit cookie - cprngAes dataDefault deepseq failure filepath httpTypes liftedBase - mimeTypes monadControl mtl network random regexCompat resourcet - socks text time tls tlsExtra transformers transformersBase - utf8String void zlibConduit + asn1Data base64Bytestring blazeBuilder blazeBuilderConduit + caseInsensitive certificate conduit cookie cprngAes dataDefault + deepseq failure filepath httpTypes liftedBase mimeTypes + monadControl mtl network publicsuffixlist random regexCompat + resourcet socks text time tls tlsExtra transformers + transformersBase utf8String void zlibConduit ]; testDepends = [ - asn1Data attoparsec attoparsecConduit base64Bytestring blazeBuilder - blazeBuilderConduit caseInsensitive certificate conduit cookie - cprngAes dataDefault deepseq failure filepath hspec httpTypes HUnit - liftedBase mimeTypes monadControl mtl network networkConduit random + asn1Data base64Bytestring blazeBuilder blazeBuilderConduit + caseInsensitive certificate conduit cookie cprngAes dataDefault + deepseq failure filepath hspec httpTypes HUnit liftedBase mimeTypes + monadControl mtl network networkConduit publicsuffixlist random regexCompat resourcet socks text time tls tlsExtra transformers transformersBase utf8String void wai warp zlibConduit ]; From b34be14255f3b41b69aaf00130d91f8205870fec Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 082/407] haskell-persistent-sqlite: update to version 1.1.4.1 --- .../libraries/haskell/persistent-sqlite/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix index 418c8c4ca74..066d1dd2ebe 100644 --- a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix +++ b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "persistent-sqlite"; - version = "1.1.4"; - sha256 = "1xllj5bq7rw9v32ddm515705nviarw0hp4yxj0z8jf5q5jdz2vz0"; + version = "1.1.4.1"; + sha256 = "0rhvbbzlzgzx4na7ffa2jx2zinzbb6b1jxf8964hcxx7iyzcycjj"; buildDepends = [ aeson conduit monadControl monadLogger persistent text transformers ]; From 50001e9403c846ace255bada3f26b66bc3c1d5bd Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 083/407] haskell-testpack: update to version 2.1.2.1 --- pkgs/development/libraries/haskell/testpack/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/testpack/default.nix b/pkgs/development/libraries/haskell/testpack/default.nix index 53aa0ee8613..9dc14f2f5ac 100644 --- a/pkgs/development/libraries/haskell/testpack/default.nix +++ b/pkgs/development/libraries/haskell/testpack/default.nix @@ -2,10 +2,11 @@ cabal.mkDerivation (self: { pname = "testpack"; - version = "2.1.2"; - sha256 = "12dhl8svy0wmdwlvkp0p0j6wr6vgv4hrjcpdv48kc5rcwjvh8xif"; + version = "2.1.2.1"; + sha256 = "1fm4dy9vs2whc48cr00ncqqzz6r5yp7bvgil86idbbgi8igld5j0"; buildDepends = [ HUnit mtl QuickCheck random ]; patches = [ ./support-recent-quickcheck.patch ]; + jailbreak = true; meta = { homepage = "http://hackage.haskell.org/cgi-bin/hackage-scripts/package/testpack"; description = "Test Utililty Pack for HUnit and QuickCheck"; From acdb8c9e676728c9c4d9f20bb0b0f0351d621f3f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 084/407] haskell-yesod-test: update to version 0.3.4 --- pkgs/development/libraries/haskell/yesod-test/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-test/default.nix b/pkgs/development/libraries/haskell/yesod-test/default.nix index 3753067d958..a47d109ace5 100644 --- a/pkgs/development/libraries/haskell/yesod-test/default.nix +++ b/pkgs/development/libraries/haskell/yesod-test/default.nix @@ -6,8 +6,8 @@ cabal.mkDerivation (self: { pname = "yesod-test"; - version = "0.3.3.2"; - sha256 = "0skr710fqqnna17gywaj30kpj352px2d17fwwqb832j7mj92bmv5"; + version = "0.3.4"; + sha256 = "18sz1blnrgijcq6psqk2b5zxbizpgam1cy1vcxc4nrfryfscr42b"; buildDepends = [ attoparsec blazeBuilder blazeHtml blazeMarkup caseInsensitive cookie hspec htmlConduit httpTypes HUnit monadControl network From 82b23515d0b4ed35a4b2051793140403bad23be0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:49 +0100 Subject: [PATCH 085/407] haskell-yesod: update to version 1.1.9.1 --- pkgs/development/libraries/haskell/yesod/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod/default.nix b/pkgs/development/libraries/haskell/yesod/default.nix index ebb46f68bc8..e51ca16aa4f 100644 --- a/pkgs/development/libraries/haskell/yesod/default.nix +++ b/pkgs/development/libraries/haskell/yesod/default.nix @@ -12,8 +12,8 @@ cabal.mkDerivation (self: { pname = "yesod"; - version = "1.1.9"; - sha256 = "0fcvf0bg7dsrka639q20dncinqq0fdv21zyvwpx63qfcmilhmjlm"; + version = "1.1.9.1"; + sha256 = "0kysj3akf2pvhsiy6f8yfs41mrya86b8ddskqzzibjmdyipiqksj"; isLibrary = true; isExecutable = true; buildDepends = [ From 97c3f61e08e3e3492e4f699d5169d6b40d2093d8 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:50 +0100 Subject: [PATCH 086/407] haskell-jailbreak-cabal: update to version 1.1 --- pkgs/development/tools/haskell/jailbreak-cabal/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/haskell/jailbreak-cabal/default.nix b/pkgs/development/tools/haskell/jailbreak-cabal/default.nix index 303e7ceb2c3..29c78329f95 100644 --- a/pkgs/development/tools/haskell/jailbreak-cabal/default.nix +++ b/pkgs/development/tools/haskell/jailbreak-cabal/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "jailbreak-cabal"; - version = "1.0"; - sha256 = "10vq592fx1i3fdqiij7daf3dmqq5c8c29ihr2y1rn2pjhkyiy4kk"; + version = "1.1"; + sha256 = "0x0dkzfjsgqpjmldgami46ki9k7pgy7ll4slms0kdc89qryzp7dg"; isLibrary = false; isExecutable = true; buildDepends = [ Cabal ]; From 329b33c59c807c7136a39523ed01e23b0bb370e6 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 13:04:15 +0100 Subject: [PATCH 087/407] git-annex: clean up build expression --- .../git-and-tools/default.nix | 17 +++--- .../git-and-tools/git-annex/default.nix | 57 ++++++++++--------- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix index b7bf00f07dd..066da4bff4a 100644 --- a/pkgs/applications/version-management/git-and-tools/default.nix +++ b/pkgs/applications/version-management/git-and-tools/default.nix @@ -43,13 +43,16 @@ rec { }); gitAnnex = lib.makeOverridable (import ./git-annex) { - inherit stdenv fetchurl perl coreutils git libuuid rsync findutils curl ikiwiki which openssh; - inherit (haskellPackages) ghc bloomfilter dataenc editDistance hinotify hS3 hslogger HTTP - blazeBuilder blazeHtml caseInsensitive IfElse json liftedBase MissingH monadControl mtl - network pcreLight SHA stm utf8String networkInfo dbus clientsession cryptoApi dataDefault - extensibleExceptions filepath hamlet httpTypes networkMulticast text time transformers - transformersBase wai waiLogger warp yesod yesodDefault yesodStatic testpack QuickCheck - SafeSemaphore networkProtocolXmpp async dns DAV uuid Glob; + inherit stdenv fetchurl perl which ikiwiki curl bup git gnupg1 lsof openssh rsync; + inherit (haskellPackages) ghc aeson async blazeBuilder bloomfilter + caseInsensitive clientsession cryptoApi dataDefault dataenc DAV dbus dns + editDistance extensibleExceptions filepath gnutls hamlet hinotify hS3 + hslogger httpConduit httpTypes HUnit IfElse json liftedBase MissingH + monadControl mtl network networkInfo networkMulticast networkProtocolXmpp + QuickCheck random regexCompat SafeSemaphore SHA stm text time + transformers transformersBase utf8String uuid wai waiLogger warp + xmlConduit xmlTypes yesod yesodDefault yesodForm yesodStatic testpack + cabalInstall; }; qgit = import ./qgit { diff --git a/pkgs/applications/version-management/git-and-tools/git-annex/default.nix b/pkgs/applications/version-management/git-and-tools/git-annex/default.nix index e1d2397c375..4ea0a5df8c1 100644 --- a/pkgs/applications/version-management/git-and-tools/git-annex/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git-annex/default.nix @@ -1,14 +1,13 @@ -{ stdenv, ghc, fetchurl, perl, coreutils, git, libuuid, rsync -, findutils, curl, ikiwiki, which, openssh -, blazeBuilder, blazeHtml, bloomfilter, caseInsensitive -, clientsession, cryptoApi, dataDefault, dataenc, dbus -, editDistance, extensibleExceptions, filepath, hamlet, hinotify -, hS3, hslogger, HTTP, httpTypes, IfElse, json, liftedBase -, MissingH, monadControl, mtl, network, networkInfo -, networkMulticast, pcreLight, QuickCheck, SHA, stm, text, time -, transformers, transformersBase, utf8String, wai, waiLogger, warp -, yesod, yesodDefault, yesodStatic, testpack, SafeSemaphore -, networkProtocolXmpp, async, dns, DAV, uuid, Glob +{ stdenv, fetchurl, perl, which, ikiwiki, ghc, aeson, async, blazeBuilder +, bloomfilter, bup, caseInsensitive, clientsession, cryptoApi, curl, dataDefault +, dataenc, DAV, dbus, dns, editDistance, extensibleExceptions, filepath, git +, gnupg1, gnutls, hamlet, hinotify, hS3, hslogger, httpConduit, httpTypes, HUnit +, IfElse, json, liftedBase, lsof, MissingH, monadControl, mtl, network +, networkInfo, networkMulticast, networkProtocolXmpp, openssh, QuickCheck +, random, regexCompat, rsync, SafeSemaphore, SHA, stm, text, time, transformers +, transformersBase, utf8String, uuid, wai, waiLogger, warp, xmlConduit, xmlTypes +, yesod, yesodDefault, yesodForm, yesodStatic, testpack +, cabalInstall # TODO: remove this build input at the next update }: let @@ -23,27 +22,29 @@ stdenv.mkDerivation { name = "git-annex-${version}.tar.gz"; }; - buildInputs = [ ghc git libuuid rsync findutils curl ikiwiki which - openssh blazeBuilder blazeHtml bloomfilter caseInsensitive - clientsession cryptoApi dataDefault dataenc dbus editDistance - extensibleExceptions filepath hamlet hinotify hS3 hslogger HTTP - httpTypes IfElse json liftedBase MissingH monadControl mtl network - networkInfo networkMulticast pcreLight QuickCheck SHA stm text time - transformers transformersBase utf8String wai waiLogger warp yesod - yesodDefault yesodStatic testpack SafeSemaphore networkProtocolXmpp - async dns DAV uuid Glob ]; + buildInputs = [ ghc aeson async blazeBuilder bloomfilter bup ikiwiki + caseInsensitive clientsession cryptoApi curl dataDefault dataenc DAV dbus + dns editDistance extensibleExceptions filepath git gnupg1 gnutls hamlet + hinotify hS3 hslogger httpConduit httpTypes HUnit IfElse json liftedBase + lsof MissingH monadControl mtl network networkInfo networkMulticast + networkProtocolXmpp openssh QuickCheck random regexCompat rsync + SafeSemaphore SHA stm text time transformers transformersBase utf8String + uuid wai waiLogger warp xmlConduit xmlTypes yesod yesodDefault yesodForm + yesodStatic which perl testpack cabalInstall ]; - checkTarget = "test"; - doCheck = true; - - preConfigure = '' + configurePhase = '' makeFlagsArray=( PREFIX=$out ) - sed -i -e 's|#!/usr/bin/perl|#!${perl}/bin/perl|' Build/mdwn2man - sed -i -e 's|"cp |"${coreutils}/bin/cp |' -e 's|"rm -f |"${coreutils}/bin/rm -f |' test.hs - # Remove this patch after the next update! - sed -i -e '9i #define WITH_OLD_URI' Utility/Url.hs + patchShebangs . + + # cabal-install wants to store stuff in $HOME + mkdir ../tmp + export HOME=$PWD/../tmp + + cabal configure -f-fast -ftestsuite -f-android -fproduction -fdns -fxmpp -fpairing -fwebapp -fassistant -fdbus -finotify -fwebdav -fs3 ''; + checkPhase = "./git-annex test"; + meta = { homepage = "http://git-annex.branchable.com/"; description = "Manage files with git without checking them into git"; From 94fe64b3eb067c0f8533bbb582b98cd4c7e79f0a Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 28 Feb 2013 18:44:05 +0100 Subject: [PATCH 088/407] manual-kernel: Add bc to buildNativeInputs. As timeconst.pl was replaced by a bc script in the merge window for kernel 3.9, we also need bc during build time, for more information about the reasons, please have a look at the following commit: torvalds/linux@70730bca1331fc50c3caacaea00439de1325bd6e Signed-off-by: aszlig --- pkgs/os-specific/linux/kernel/manual-config.nix | 4 ++-- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 44c31d824ae..05132b8365b 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -1,4 +1,4 @@ -{ stdenv, runCommand, nettools, perl, kmod, writeTextFile }: +{ stdenv, runCommand, nettools, bc, perl, kmod, writeTextFile }: with stdenv.lib; @@ -122,7 +122,7 @@ stdenv.mkDerivation { runHook postConfigure ''; - buildNativeInputs = [ perl nettools ]; + buildNativeInputs = [ perl bc nettools ]; makeFlags = commonMakeFlags ++ [ "INSTALLKERNEL=${installkernel stdenv.platform.kernelTarget}" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 566a21a6052..7eea6c3aba6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6125,7 +6125,7 @@ let # A function to build a manually-configured kernel linuxManualConfig = import ../os-specific/linux/kernel/manual-config.nix { - inherit (pkgs) stdenv runCommand nettools perl kmod writeTextFile; + inherit (pkgs) stdenv runCommand nettools bc perl kmod writeTextFile; }; keyutils = callPackage ../os-specific/linux/keyutils { }; From bd49c22ea10c0ae26d342e0105d3651c535e3791 Mon Sep 17 00:00:00 2001 From: Sergey Mironov Date: Fri, 1 Mar 2013 00:15:59 +0400 Subject: [PATCH 089/407] mplayer: install desktop icon when X11 is enabled --- pkgs/applications/video/mplayer/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/applications/video/mplayer/default.nix b/pkgs/applications/video/mplayer/default.nix index 357c6eec6e7..a04079c8de2 100644 --- a/pkgs/applications/video/mplayer/default.nix +++ b/pkgs/applications/video/mplayer/default.nix @@ -152,6 +152,8 @@ stdenv.mkDerivation rec { NIX_LDFLAGS = stdenv.lib.optionalString x11Support "-lX11 -lXext"; + installTargets = [ "install" ] ++ stdenv.lib.optional x11Support "install-gui"; + enableParallelBuilding = true; # Provide a reasonable standard font. Maybe we should symlink here. @@ -159,6 +161,9 @@ stdenv.mkDerivation rec { '' mkdir -p $out/share/mplayer cp ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mplayer/subfont.ttf + if test -f $out/share/applications/mplayer.desktop ; then + echo "NoDisplay=True" >> $out/share/applications/mplayer.desktop + fi ''; crossAttrs = { From bb5f60fec1193a527e0f3e32b485c380fd197bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Fri, 1 Mar 2013 01:33:08 +0100 Subject: [PATCH 090/407] Add Jalv: an LV2 host for Jack This allows LV2 audio plugins to be connected to Jack applications --- pkgs/applications/audio/jalv/default.nix | 29 ++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 31 insertions(+) create mode 100644 pkgs/applications/audio/jalv/default.nix diff --git a/pkgs/applications/audio/jalv/default.nix b/pkgs/applications/audio/jalv/default.nix new file mode 100644 index 00000000000..5655c7d832b --- /dev/null +++ b/pkgs/applications/audio/jalv/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, gtk, jackaudio, lilv, lv2, pkgconfig, python +, serd, sord , sratom, suil }: + +stdenv.mkDerivation rec { + name = "jalv-${version}"; + version = "1.4.0"; + + src = fetchurl { + url = "http://download.drobilla.net/${name}.tar.bz2"; + sha256 = "1hq968fhiz86428krqhjl3vlw71bigc9bsfcv97zgvsjh0fh6qa0"; + }; + + buildInputs = [ + gtk jackaudio lilv lv2 pkgconfig python serd sord sratom suil + ]; + + configurePhase = "python waf configure --prefix=$out"; + + buildPhase = "python waf"; + + installPhase = "python waf install"; + + meta = with stdenv.lib; { + description = "A simple but fully featured LV2 host for Jack"; + homepage = http://drobilla.net/software/jalv; + license = licenses.isc; + maintainers = [ maintainers.goibhniu ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7eea6c3aba6..93918671fb6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7360,6 +7360,8 @@ let jackmeter = callPackage ../applications/audio/jackmeter { }; + jalv = callPackage ../applications/audio/jalv { }; + jedit = callPackage ../applications/editors/jedit { }; jigdo = callPackage ../applications/misc/jigdo { }; From 1166b82fca2f89fa3db46b31313ced09a0a668f2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 1 Mar 2013 02:02:54 +0100 Subject: [PATCH 091/407] nix: Update to 1.5.1 --- pkgs/tools/package-management/nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 579805a2653..b4af004e2b0 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -5,11 +5,11 @@ }: stdenv.mkDerivation rec { - name = "nix-1.5"; + name = "nix-1.5.1"; src = fetchurl { url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz"; - sha256 = "ff63673afbcfd916acef881717dd9843d143efa70529ea89dd6b92995d54c076"; + sha256 = "c53ec8a5518445bea658e1edb4e3be8c315b583aefc55d6969f2bf6f6c805239"; }; buildNativeInputs = [ perl pkgconfig ]; From f5bd4f720afdd22c13feb77d392136838b05c35e Mon Sep 17 00:00:00 2001 From: Song Wenwu Date: Fri, 1 Mar 2013 13:48:33 +0800 Subject: [PATCH 092/407] add fvwm-2.6.5 --- .../window-managers/fvwm/default.nix | 26 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 pkgs/applications/window-managers/fvwm/default.nix diff --git a/pkgs/applications/window-managers/fvwm/default.nix b/pkgs/applications/window-managers/fvwm/default.nix new file mode 100644 index 00000000000..dd9e11328ef --- /dev/null +++ b/pkgs/applications/window-managers/fvwm/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig +, cairo, fontconfig, freetype, libXft, libXcursor, libXinerama +, libXpm, librsvg, libpng, fribidi, perl +}: + +stdenv.mkDerivation rec { + name = "fvwm-2.6.5"; + + src = fetchurl { + url = "ftp://ftp.fvwm.org/pub/fvwm/version-2/${name}.tar.bz2"; + sha256 = "1ks8igvmzm0m0sra05k8xzc8vkqy3gv1qskl6davw1irqnarjm11"; + }; + + buildInputs = [ + pkgconfig cairo fontconfig freetype + libXft libXcursor libXinerama libXpm + librsvg libpng fribidi perl + ]; + + meta = { + homepage = "http://fvwm.org"; + description = "A multiple large virtual desktop window manager"; + license = "GPLv2"; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 93918671fb6..a86bd6bbef2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7032,6 +7032,8 @@ let fossil = callPackage ../applications/version-management/fossil { }; + fvwm = callPackage ../applications/window-managers/fvwm { }; + geany = callPackage ../applications/editors/geany { }; goldendict = callPackage ../applications/misc/goldendict { }; From f26b5fb73096300eead230d393c3fc206482ea2a Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 1 Mar 2013 05:24:49 +0100 Subject: [PATCH 093/407] virtualbox+guest: Update to version 4.2.8. The tarball for this version is missing the file VRDEVideoIn.h, which is added through the missing_files_4.2.8.patch and extracted from Subversion, revision 44528. Upstream changelog(s) can be found at the usual place: https://www.virtualbox.org/wiki/Changelog Signed-off-by: aszlig --- .../virtualization/virtualbox/default.nix | 10 +- .../virtualbox/guest-additions/default.nix | 4 +- .../virtualbox/missing_files_4.2.8.patch | 993 ++++++++++++++++++ 3 files changed, 1001 insertions(+), 6 deletions(-) create mode 100644 pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index ea98d1ce7a9..d95d97688c3 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -11,8 +11,8 @@ with stdenv.lib; let - version = "4.2.6"; - extpackRevision = "82870"; + version = "4.2.8"; + extpackRevision = "83876"; forEachModule = action: '' for mod in \ @@ -35,7 +35,7 @@ let name = "Oracle_VM_VirtualBox_Extension_Pack-${version}-${extpackRevision}" + ".vbox-extpack"; # Has to be base16 because it's used as an input to VBoxExtPackHelperApp! - sha256 = "f0113688a76efa0426c27c5541c78506b18637025c35aa682ecc6eeed5d56582"; + sha256 = "fa579416f382b58c4e93d3740d076ceba728e28d987e51aced5865a46cb9111c"; url = "https://www.virtualbox.org/wiki/Downloads"; }; @@ -44,7 +44,7 @@ in stdenv.mkDerivation { src = fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"; - sha256 = "54526091bc2aa66b88ca878dd9ecc4466f96d607db2f6678a9d673ecf6646ae3"; + sha256 = "bc9185e0c300d61e2a6c8ac48b4bea6a0a456c9ba11d1fbadf2d1e6ca063f2b4"; }; buildInputs = @@ -54,6 +54,8 @@ in stdenv.mkDerivation { ++ optional javaBindings jdk ++ optional pythonBindings python; + patches = singleton ./missing_files_4.2.8.patch; + prePatch = '' set -x MODULES_BUILD_DIR=`echo ${kernel}/lib/modules/*/build` diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index 7a79a73c6b9..f648cb3c737 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -2,14 +2,14 @@ , libX11, libXt, libXext, libXmu, libXcomposite, libXfixes, libXrandr, libXcursor , dbus }: -let version = "4.2.6"; in +let version = "4.2.8"; in stdenv.mkDerivation { name = "VirtualBox-GuestAdditions-${version}-${kernel.version}"; src = fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso"; - sha256 = "1lry4hjjk8p69km1bi3mpmyarlnxz9izs2c0s8pq5rjzv1bd7bxr"; + sha256 = "04a5402d8dcdefc83ffb2785351ddc57758781a3759137974469189392ae4ad5"; }; KERN_DIR = "${kernel}/lib/modules/*/build"; diff --git a/pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch b/pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch new file mode 100644 index 00000000000..6cb1560dd69 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch @@ -0,0 +1,993 @@ +Index: VRDEVideoIn.h +=================================================================== +diff --git a/include/VBox/RemoteDesktop/VRDEVideoIn.h b/include/VBox/RemoteDesktop/VRDEVideoIn.h +new file mode 10644 +--- /dev/null (revision 0) ++++ b/include/VBox/RemoteDesktop/VRDEVideoIn.h (revision 44528) +@@ -0,0 +1,986 @@ ++/** @file ++ * VBox Remote Desktop Extension (VRDE) - Video Input interface. ++ */ ++ ++/* ++ * Copyright (C) 2012-2013 Oracle Corporation ++ * ++ * This file is part of VirtualBox Open Source Edition (OSE), as ++ * available from http://www.virtualbox.org. This file is free software; ++ * you can redistribute it and/or modify it under the terms of the GNU ++ * General Public License (GPL) as published by the Free Software ++ * Foundation, in version 2 as it comes in the "COPYING" file of the ++ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the ++ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. ++ * ++ * The contents of this file may alternatively be used under the terms ++ * of the Common Development and Distribution License Version 1.0 ++ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the ++ * VirtualBox OSE distribution, in which case the provisions of the ++ * CDDL are applicable instead of those of the GPL. ++ * ++ * You may elect to license modified versions of this file under the ++ * terms and conditions of either the GPL or the CDDL or both. ++ */ ++ ++#ifndef ___VBox_RemoteDesktop_VRDEVideoIn_h ++#define ___VBox_RemoteDesktop_VRDEVideoIn_h ++ ++ ++/* Define VRDE_VIDEOIN_WITH_VRDEINTERFACE to include the server VRDE interface parts. */ ++ ++#ifdef VRDE_VIDEOIN_WITH_VRDEINTERFACE ++#include ++#endif /* VRDE_VIDEOIN_WITH_VRDEINTERFACE */ ++ ++#ifdef AssertCompileSize ++#define ASSERTSIZE(type, size) AssertCompileSize(type, size); ++#else ++#define ASSERTSIZE(type, size) ++#endif /* AssertCompileSize */ ++ ++ ++/* ++ * Interface for accessing a video camera device on the client. ++ * ++ * Async callbacks are used for providing feedback, reporting errors, etc. ++ * ++ * Initial version supports: Camera + Processing Unit + Streaming Control. ++ * ++ * There are 2 modes: ++ * 1) The virtual WebCam is already attached to the guest. ++ * 2) The virtual WebCam will be attached when the client has it. ++ * ++ * Initially the mode 1 is supported. ++ * ++ * Mode 1 details: ++ * The WebCam has some fixed functionality, according to the descriptors, ++ * which has been already read by the guest. So some of functions will ++ * not work if the client does not support them. ++ * ++ * Mode 2 details: ++ * Virtual WebCam descriptors are built from the client capabilities. ++ * ++ * Similarly to the smartcard, the server will inform the ConsoleVRDE that there is a WebCam. ++ * ConsoleVRDE creates a VRDEVIDEOIN handle and forwards virtual WebCam requests to it. ++ * ++ * Interface with VBox. ++ * ++ * Virtual WebCam ConsoleVRDE VRDE ++ * ++ * Negotiate <-> ++ * <- VideoInDeviceNotify(Attached, DeviceId) ++ * -> GetDeviceDesc ++ * <- DeviceDesc ++ * 2 <- CreateCamera ++ * 2 CameraCreated -> ++ * ++ * CameraRequest -> Request -> ++ * Response <- <- Response <- Response ++ * Frame <- <- Frame <- Frame ++ * <- VideoInDeviceNotify(Detached, DeviceId) ++ * ++ * Unsupported requests fail. ++ * The Device Description received from the client may be used to validate WebCam requests ++ * in the ConsoleVRDE code, for example filter out unsupported requests. ++ * ++ */ ++ ++/* All structures in this file are packed. ++ * Everything is little-endian. ++ */ ++#pragma pack(1) ++ ++/* ++ * The interface supports generic video input descriptors, capabilities and controls: ++ * * Descriptors ++ * + Interface ++ * - Input, Camera Terminal ++ * - Processing Unit ++ * + Video Streaming ++ * - Input Header ++ * - Payload Format ++ * - Video Frame ++ * - Still Image Frame ++ * * Video Control requests ++ * + Interface ++ * - Power Mode ++ * + Unit and Terminal ++ * camera ++ * - Scanning Mode (interlaced, progressive) ++ * - Auto-Exposure Mode ++ * - Auto-Exposure Priority ++ * - Exposure Time Absolute, Relative ++ * - Focus Absolute, Relative, Auto ++ * - Iris Absolute, Relative ++ * - Zoom Absolute, Relative ++ * - PanTilt Absolute, Relative ++ * - Roll Absolute, Relative ++ * - Privacy ++ * processing ++ * - Backlight Compensation ++ * - Brightness ++ * - Contrast ++ * - Gain ++ * - Power Line Frequency ++ * - Hue Manual, Auto ++ * - Saturation ++ * - Sharpness ++ * - Gamma ++ * - White Balance Temperature Manual, Auto ++ * - White Balance Component Manual, Auto ++ * - Digital Multiplier ++ * - Digital Multiplier Limit ++ * * Video Streaming requests ++ * + Interface ++ * - Synch Delay ++ * - Still Image Trigger ++ * - Generate Key Frame ++ * - Update Frame Segment ++ * - Stream Error Code ++ * ++ * ++ * Notes: ++ * * still capture uses a method similar to method 2, because the still frame will ++ * be send instead of video over the channel. ++ * Also the method 2 can be in principle emulated by both 1 and 3 on the client. ++ * However the client can initiate a still frame transfer, similar to hardware button trigger. ++ * * all control changes are async. ++ * * probe/commit are not used. The server can select a supported format/frame from the list. ++ * * no color matching. sRGB is the default. ++ * * most of constants are the same as in USB Video Class spec, but they are not the same and ++ * should be always converted. ++ */ ++ ++/* ++ * The DEVICEDEC describes the device and provides a list of supported formats: ++ * VRDEVIDEOINDEVICEDESC ++ * VRDEVIDEOINFORMATDESC[0]; ++ * VRDEVIDEOINFRAMEDESC[0..N-1] ++ * VRDEVIDEOINFORMATDESC[1]; ++ * VRDEVIDEOINFRAMEDESC[0..M-1] ++ * ... ++ */ ++ ++typedef struct VRDEVIDEOINDEVICEDESC ++{ ++ uint16_t u16ObjectiveFocalLengthMin; ++ uint16_t u16ObjectiveFocalLengthMax; ++ uint16_t u16OcularFocalLength; ++ uint16_t u16MaxMultiplier; ++ uint32_t fu32CameraControls; /* VRDE_VIDEOIN_F_CT_CTRL_* */ ++ uint32_t fu32ProcessingControls; /* VRDE_VIDEOIN_F_PU_CTRL_* */ ++ uint8_t fu8DeviceCaps; /* VRDE_VIDEOIN_F_DEV_CAP_* */ ++ uint8_t u8NumFormats; /* Number of following VRDEVIDEOINFORMATDESC structures. */ ++ uint16_t cbExt; /* Size of the optional extended description. */ ++ /* An extended description may follow. */ ++ /* An array of VRDEVIDEOINFORMATDESC follows. */ ++} VRDEVIDEOINDEVICEDESC; ++ ++/* VRDEVIDEOINDEVICEDESC::fu32CameraControls */ ++#define VRDE_VIDEOIN_F_CT_CTRL_SCANNING_MODE 0x00000001 /* D0: Scanning Mode */ ++#define VRDE_VIDEOIN_F_CT_CTRL_AE_MODE 0x00000002 /* D1: Auto-Exposure Mode */ ++#define VRDE_VIDEOIN_F_CT_CTRL_AE_PRIORITY 0x00000004 /* D2: Auto-Exposure Priority */ ++#define VRDE_VIDEOIN_F_CT_CTRL_EXPOSURE_TIME_ABSOLUTE 0x00000008 /* D3: Exposure Time (Absolute) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_EXPOSURE_TIME_RELATIVE 0x00000010 /* D4: Exposure Time (Relative) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_FOCUS_ABSOLUTE 0x00000020 /* D5: Focus (Absolute) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_FOCUS_RELATIVE 0x00000040 /* D6: Focus (Relative) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_IRIS_ABSOLUTE 0x00000080 /* D7: Iris (Absolute) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_IRIS_RELATIVE 0x00000100 /* D8: Iris (Relative) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_ZOOM_ABSOLUTE 0x00000200 /* D9: Zoom (Absolute) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_ZOOM_RELATIVE 0x00000400 /* D10: Zoom (Relative) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_PANTILT_ABSOLUTE 0x00000800 /* D11: PanTilt (Absolute) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_PANTILT_RELATIVE 0x00001000 /* D12: PanTilt (Relative) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_ROLL_ABSOLUTE 0x00002000 /* D13: Roll (Absolute) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_ROLL_RELATIVE 0x00004000 /* D14: Roll (Relative) */ ++#define VRDE_VIDEOIN_F_CT_CTRL_RESERVED1 0x00008000 /* D15: Reserved */ ++#define VRDE_VIDEOIN_F_CT_CTRL_RESERVED2 0x00010000 /* D16: Reserved */ ++#define VRDE_VIDEOIN_F_CT_CTRL_FOCUS_AUTO 0x00020000 /* D17: Focus, Auto */ ++#define VRDE_VIDEOIN_F_CT_CTRL_PRIVACY 0x00040000 /* D18: Privacy */ ++ ++/* VRDEVIDEOINDEVICEDESC::fu32ProcessingControls */ ++#define VRDE_VIDEOIN_F_PU_CTRL_BRIGHTNESS 0x00000001 /* D0: Brightness */ ++#define VRDE_VIDEOIN_F_PU_CTRL_CONTRAST 0x00000002 /* D1: Contrast */ ++#define VRDE_VIDEOIN_F_PU_CTRL_HUE 0x00000004 /* D2: Hue */ ++#define VRDE_VIDEOIN_F_PU_CTRL_SATURATION 0x00000008 /* D3: Saturation */ ++#define VRDE_VIDEOIN_F_PU_CTRL_SHARPNESS 0x00000010 /* D4: Sharpness */ ++#define VRDE_VIDEOIN_F_PU_CTRL_GAMMA 0x00000020 /* D5: Gamma */ ++#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_TEMPERATURE 0x00000040 /* D6: White Balance Temperature */ ++#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_COMPONENT 0x00000080 /* D7: White Balance Component */ ++#define VRDE_VIDEOIN_F_PU_CTRL_BACKLIGHT_COMPENSATION 0x00000100 /* D8: Backlight Compensation */ ++#define VRDE_VIDEOIN_F_PU_CTRL_GAIN 0x00000200 /* D9: Gain */ ++#define VRDE_VIDEOIN_F_PU_CTRL_POWER_LINE_FREQUENCY 0x00000400 /* D10: Power Line Frequency */ ++#define VRDE_VIDEOIN_F_PU_CTRL_HUE_AUTO 0x00000800 /* D11: Hue, Auto */ ++#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_TEMPERATURE_AUTO 0x00001000 /* D12: White Balance Temperature, Auto */ ++#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_COMPONENT_AUTO 0x00002000 /* D13: White Balance Component, Auto */ ++#define VRDE_VIDEOIN_F_PU_CTRL_DIGITAL_MULTIPLIER 0x00004000 /* D14: Digital Multiplier */ ++#define VRDE_VIDEOIN_F_PU_CTRL_DIGITAL_MULTIPLIER_LIMIT 0x00008000 /* D15: Digital Multiplier Limit */ ++ ++/* VRDEVIDEOINDEVICEDESC::fu8DeviceCaps */ ++#define VRDE_VIDEOIN_F_DEV_CAP_DYNAMICCHANGE 0x01 /* Whether dynamic format change is supported. */ ++#define VRDE_VIDEOIN_F_DEV_CAP_TRIGGER 0x02 /* Whether hardware triggering is supported. */ ++#define VRDE_VIDEOIN_F_DEV_CAP_TRIGGER_USAGE 0x04 /* 0 - still image, 1 - generic button event.*/ ++ ++/* The video format descriptor. */ ++typedef struct VRDEVIDEOINFORMATDESC ++{ ++ uint16_t cbFormat; /* Size of the structure including cbFormat and format specific data. */ ++ uint8_t u8FormatId; /* The unique identifier of the format on the client. */ ++ uint8_t u8FormatType; /* MJPEG etc. VRDE_VIDEOIN_FORMAT_* */ ++ uint8_t u8FormatFlags; /* VRDE_VIDEOIN_F_FMT_* */ ++ uint8_t u8NumFrames; /* Number of following VRDEVIDEOINFRAMEDESC structures. */ ++ uint16_t u16Reserved; /* Must be set to 0. */ ++ /* Other format specific data may follow. */ ++ /* An array of VRDEVIDEOINFRAMEDESC follows. */ ++} VRDEVIDEOINFORMATDESC; ++ ++/* VRDEVIDEOINFORMATDESC::u8FormatType */ ++#define VRDE_VIDEOIN_FORMAT_UNCOMPRESSED 0x04 ++#define VRDE_VIDEOIN_FORMAT_MJPEG 0x06 ++#define VRDE_VIDEOIN_FORMAT_MPEG2TS 0x0A ++#define VRDE_VIDEOIN_FORMAT_DV 0x0C ++#define VRDE_VIDEOIN_FORMAT_FRAME_BASED 0x10 ++#define VRDE_VIDEOIN_FORMAT_STREAM_BASED 0x12 ++ ++/* VRDEVIDEOINFORMATDESC::u8FormatFlags. */ ++#define VRDE_VIDEOIN_F_FMT_GENERATEKEYFRAME 0x01 /* Supports Generate Key Frame */ ++#define VRDE_VIDEOIN_F_FMT_UPDATEFRAMESEGMENT 0x02 /* Supports Update Frame Segment */ ++#define VRDE_VIDEOIN_F_FMT_COPYPROTECT 0x04 /* If duplication should be restricted. */ ++#define VRDE_VIDEOIN_F_FMT_COMPQUALITY 0x08 /* If the format supports an adjustable compression quality. */ ++ ++typedef struct VRDEVIDEOINFRAMEDESC ++{ ++ uint16_t cbFrame; /* Size of the structure including cbFrame and frame specific data. */ ++ uint8_t u8FrameId; /* The unique identifier of the frame for the corresponding format on the client. */ ++ uint8_t u8FrameFlags; ++ uint16_t u16Width; ++ uint16_t u16Height; ++ uint32_t u32NumFrameIntervals; /* The number of supported frame intervals. */ ++ uint32_t u32MinFrameInterval; /* Shortest frame interval supported (at highest frame rate), in 100ns units. */ ++ uint32_t u32MaxFrameInterval; /* Longest frame interval supported (at lowest frame rate), in 100ns units. */ ++ /* Supported frame intervals (in 100ns units) follow if VRDE_VIDEOIN_F_FRM_DISCRETE_INTERVALS is set. ++ * uint32_t au32FrameIntervals[u32NumFrameIntervals]; ++ */ ++ /* Other frame specific data may follow. */ ++} VRDEVIDEOINFRAMEDESC; ++ ++/* VRDEVIDEOINFRAMEDESC::u8FrameFlags. */ ++#define VRDE_VIDEOIN_F_FRM_STILL 0x01 /* If still images are supported for this frame. */ ++#define VRDE_VIDEOIN_F_FRM_DISCRETE_INTERVALS 0x02 /* If the discrete intervals list is included. */ ++ ++/* ++ * Controls. ++ * ++ * The same structures are used for both SET and GET requests. ++ * Requests are async. A callback is invoked, when the client returns a reply. ++ * A control change notification also uses these structures. ++ * ++ * If a control request can not be fulfilled, then VRDE_VIDEOIN_CTRLHDR_F_FAIL ++ * will be set and u8Status contains the error code. This replaces the VC_REQUEST_ERROR_CODE_CONTROL. ++ */ ++ ++typedef struct VRDEVIDEOINCTRLHDR ++{ ++ uint16_t u16ControlSelector; /* VRDE_VIDEOIN_CTRLSEL_* */ ++ uint16_t u16RequestType; /* VRDE_VIDEOIN_CTRLREQ_* */ ++ uint16_t u16ParmSize; /* The size of the control specific parameters. */ ++ uint8_t u8Flags; /* VRDE_VIDEOIN_CTRLHDR_F_* */ ++ uint8_t u8Status; /* VRDE_VIDEOIN_CTRLHDR_STATUS_* */ ++ /* Control specific data follows. */ ++} VRDEVIDEOINCTRLHDR; ++ ++/* Control request types: VRDEVIDEOINCTRLHDR::u16RequestType. */ ++#define VRDE_VIDEOIN_CTRLREQ_UNDEFINED 0x00 ++#define VRDE_VIDEOIN_CTRLREQ_SET_CUR 0x01 ++#define VRDE_VIDEOIN_CTRLREQ_GET_CUR 0x81 ++#define VRDE_VIDEOIN_CTRLREQ_GET_MIN 0x82 ++#define VRDE_VIDEOIN_CTRLREQ_GET_MAX 0x83 ++#define VRDE_VIDEOIN_CTRLREQ_GET_RES 0x84 ++#define VRDE_VIDEOIN_CTRLREQ_GET_LEN 0x85 ++#define VRDE_VIDEOIN_CTRLREQ_GET_INFO 0x86 ++#define VRDE_VIDEOIN_CTRLREQ_GET_DEF 0x87 ++ ++/* VRDEVIDEOINCTRLHDR::u8Flags */ ++#define VRDE_VIDEOIN_CTRLHDR_F_NOTIFY 0x01 /* Control change notification, the attribute is derived from u16RequestType and F_FAIL. */ ++#define VRDE_VIDEOIN_CTRLHDR_F_FAIL 0x02 /* The operation failed. Error code is in u8Status. */ ++ ++/* VRDEVIDEOINCTRLHDR::u8Status if the VRDE_VIDEOIN_CTRLHDR_F_FAIL is set. */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_SUCCESS 0x00 /**/ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_NOTREADY 0x01 /* Not ready */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_WRONGSTATE 0x02 /* Wrong state */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_POWER 0x03 /* Power */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_OUTOFRANGE 0x04 /* Out of range */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_INVALIDUNIT 0x05 /* Invalid unit */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_INVALIDCONTROL 0x06 /* Invalid control */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_INVALIDREQUEST 0x07 /* Invalid Request */ ++#define VRDE_VIDEOIN_CTRLHDR_STATUS_UNKNOWN 0xFF /* Unknown */ ++ ++/* Control selectors. 16 bit. High byte is the category. Low byte is the identifier.*/ ++#ifdef RT_MAKE_U16 ++#define VRDE_VIDEOIN_CTRLSEL_MAKE(Lo, Hi) RT_MAKE_U16(Lo, Hi) ++#else ++#define VRDE_VIDEOIN_CTRLSEL_MAKE(Lo, Hi) ((uint16_t)( (uint16_t)((uint8_t)(Hi)) << 8 | (uint8_t)(Lo) )) ++#endif ++ ++#define VRDE_VIDEOIN_CTRLSEL_VC(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x01) ++#define VRDE_VIDEOIN_CTRLSEL_CT(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x02) ++#define VRDE_VIDEOIN_CTRLSEL_PU(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x03) ++#define VRDE_VIDEOIN_CTRLSEL_VS(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x04) ++#define VRDE_VIDEOIN_CTRLSEL_HW(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x05) ++ ++#define VRDE_VIDEOIN_CTRLSEL_VC_VIDEO_POWER_MODE_CONTROL VRDE_VIDEOIN_CTRLSEL_VC(0x01) ++ ++#define VRDE_VIDEOIN_CTRLSEL_CT_UNDEFINED VRDE_VIDEOIN_CTRLSEL_CT(0x00) ++#define VRDE_VIDEOIN_CTRLSEL_CT_SCANNING_MODE VRDE_VIDEOIN_CTRLSEL_CT(0x01) ++#define VRDE_VIDEOIN_CTRLSEL_CT_AE_MODE VRDE_VIDEOIN_CTRLSEL_CT(0x02) ++#define VRDE_VIDEOIN_CTRLSEL_CT_AE_PRIORITY VRDE_VIDEOIN_CTRLSEL_CT(0x03) ++#define VRDE_VIDEOIN_CTRLSEL_CT_EXPOSURE_TIME_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x04) ++#define VRDE_VIDEOIN_CTRLSEL_CT_EXPOSURE_TIME_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x05) ++#define VRDE_VIDEOIN_CTRLSEL_CT_FOCUS_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x06) ++#define VRDE_VIDEOIN_CTRLSEL_CT_FOCUS_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x07) ++#define VRDE_VIDEOIN_CTRLSEL_CT_FOCUS_AUTO VRDE_VIDEOIN_CTRLSEL_CT(0x08) ++#define VRDE_VIDEOIN_CTRLSEL_CT_IRIS_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x09) ++#define VRDE_VIDEOIN_CTRLSEL_CT_IRIS_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x0A) ++#define VRDE_VIDEOIN_CTRLSEL_CT_ZOOM_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x0B) ++#define VRDE_VIDEOIN_CTRLSEL_CT_ZOOM_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x0C) ++#define VRDE_VIDEOIN_CTRLSEL_CT_PANTILT_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x0D) ++#define VRDE_VIDEOIN_CTRLSEL_CT_PANTILT_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x0E) ++#define VRDE_VIDEOIN_CTRLSEL_CT_ROLL_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x0F) ++#define VRDE_VIDEOIN_CTRLSEL_CT_ROLL_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x10) ++#define VRDE_VIDEOIN_CTRLSEL_CT_PRIVACY VRDE_VIDEOIN_CTRLSEL_CT(0x11) ++ ++#define VRDE_VIDEOIN_CTRLSEL_PU_UNDEFINED VRDE_VIDEOIN_CTRLSEL_PU(0x00) ++#define VRDE_VIDEOIN_CTRLSEL_PU_BACKLIGHT_COMPENSATION VRDE_VIDEOIN_CTRLSEL_PU(0x01) ++#define VRDE_VIDEOIN_CTRLSEL_PU_BRIGHTNESS VRDE_VIDEOIN_CTRLSEL_PU(0x02) ++#define VRDE_VIDEOIN_CTRLSEL_PU_CONTRAST VRDE_VIDEOIN_CTRLSEL_PU(0x03) ++#define VRDE_VIDEOIN_CTRLSEL_PU_GAIN VRDE_VIDEOIN_CTRLSEL_PU(0x04) ++#define VRDE_VIDEOIN_CTRLSEL_PU_POWER_LINE_FREQUENCY VRDE_VIDEOIN_CTRLSEL_PU(0x05) ++#define VRDE_VIDEOIN_CTRLSEL_PU_HUE VRDE_VIDEOIN_CTRLSEL_PU(0x06) ++#define VRDE_VIDEOIN_CTRLSEL_PU_SATURATION VRDE_VIDEOIN_CTRLSEL_PU(0x07) ++#define VRDE_VIDEOIN_CTRLSEL_PU_SHARPNESS VRDE_VIDEOIN_CTRLSEL_PU(0x08) ++#define VRDE_VIDEOIN_CTRLSEL_PU_GAMMA VRDE_VIDEOIN_CTRLSEL_PU(0x09) ++#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_TEMPERATURE VRDE_VIDEOIN_CTRLSEL_PU(0x0A) ++#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_TEMPERATURE_AUTO VRDE_VIDEOIN_CTRLSEL_PU(0x0B) ++#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_COMPONENT VRDE_VIDEOIN_CTRLSEL_PU(0x0C) ++#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_COMPONENT_AUTO VRDE_VIDEOIN_CTRLSEL_PU(0x0D) ++#define VRDE_VIDEOIN_CTRLSEL_PU_DIGITAL_MULTIPLIER VRDE_VIDEOIN_CTRLSEL_PU(0x0E) ++#define VRDE_VIDEOIN_CTRLSEL_PU_DIGITAL_MULTIPLIER_LIMIT VRDE_VIDEOIN_CTRLSEL_PU(0x0F) ++#define VRDE_VIDEOIN_CTRLSEL_PU_HUE_AUTO VRDE_VIDEOIN_CTRLSEL_PU(0x10) ++#define VRDE_VIDEOIN_CTRLSEL_PU_ANALOG_VIDEO_STANDARD VRDE_VIDEOIN_CTRLSEL_PU(0x11) ++#define VRDE_VIDEOIN_CTRLSEL_PU_ANALOG_LOCK_STATUS VRDE_VIDEOIN_CTRLSEL_PU(0x12) ++ ++#define VRDE_VIDEOIN_CTRLSEL_VS_UNDEFINED VRDE_VIDEOIN_CTRLSEL_VS(0x00) ++#define VRDE_VIDEOIN_CTRLSEL_VS_START VRDE_VIDEOIN_CTRLSEL_VS(0x01) ++#define VRDE_VIDEOIN_CTRLSEL_VS_STOP VRDE_VIDEOIN_CTRLSEL_VS(0x02) ++#define VRDE_VIDEOIN_CTRLSEL_VS_STILL_IMAGE_TRIGGER VRDE_VIDEOIN_CTRLSEL_VS(0x05) ++#define VRDE_VIDEOIN_CTRLSEL_VS_STREAM_ERROR_CODE VRDE_VIDEOIN_CTRLSEL_VS(0x06) ++#define VRDE_VIDEOIN_CTRLSEL_VS_GENERATE_KEY_FRAME VRDE_VIDEOIN_CTRLSEL_VS(0x07) ++#define VRDE_VIDEOIN_CTRLSEL_VS_UPDATE_FRAME_SEGMENT VRDE_VIDEOIN_CTRLSEL_VS(0x08) ++#define VRDE_VIDEOIN_CTRLSEL_VS_SYNCH_DELAY VRDE_VIDEOIN_CTRLSEL_VS(0x09) ++ ++#define VRDE_VIDEOIN_CTRLSEL_HW_BUTTON VRDE_VIDEOIN_CTRLSEL_HW(0x01) ++ ++typedef struct VRDEVIDEOINCTRL_VIDEO_POWER_MODE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8DevicePowerMode; ++} VRDEVIDEOINCTRL_VIDEO_POWER_MODE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_SCANNING_MODE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8ScanningMode; ++} VRDEVIDEOINCTRL_CT_SCANNING_MODE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_AE_MODE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8AutoExposureMode; ++} VRDEVIDEOINCTRL_CT_AE_MODE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_AE_PRIORITY ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8AutoExposurePriority; ++} VRDEVIDEOINCTRL_CT_AE_PRIORITY; ++ ++typedef struct VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_ABSOLUTE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint32_t u32ExposureTimeAbsolute; ++} VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_ABSOLUTE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_RELATIVE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8ExposureTimeRelative; ++} VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_RELATIVE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_FOCUS_ABSOLUTE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16FocusAbsolute; ++} VRDEVIDEOINCTRL_CT_FOCUS_ABSOLUTE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_FOCUS_RELATIVE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8FocusRelative; ++ uint8_t u8Speed; ++} VRDEVIDEOINCTRL_CT_FOCUS_RELATIVE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_FOCUS_AUTO ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8FocusAuto; ++} VRDEVIDEOINCTRL_CT_FOCUS_AUTO; ++ ++typedef struct VRDEVIDEOINCTRL_CT_IRIS_ABSOLUTE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16IrisAbsolute; ++} VRDEVIDEOINCTRL_CT_IRIS_ABSOLUTE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_IRIS_RELATIVE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8IrisRelative; ++} VRDEVIDEOINCTRL_CT_IRIS_RELATIVE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_ZOOM_ABSOLUTE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16ZoomAbsolute; ++} VRDEVIDEOINCTRL_CT_ZOOM_ABSOLUTE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_ZOOM_RELATIVE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8Zoom; ++ uint8_t u8DigitalZoom; ++ uint8_t u8Speed; ++} VRDEVIDEOINCTRL_CT_ZOOM_RELATIVE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_PANTILT_ABSOLUTE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint32_t u32PanAbsolute; ++ uint32_t u32TiltAbsolute; ++} VRDEVIDEOINCTRL_CT_PANTILT_ABSOLUTE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_PANTILT_RELATIVE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8PanRelative; ++ uint8_t u8PanSpeed; ++ uint8_t u8TiltRelative; ++ uint8_t u8TiltSpeed; ++} VRDEVIDEOINCTRL_CT_PANTILT_RELATIVE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_ROLL_ABSOLUTE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16RollAbsolute; ++} VRDEVIDEOINCTRL_CT_ROLL_ABSOLUTE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_ROLL_RELATIVE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8RollRelative; ++ uint8_t u8Speed; ++} VRDEVIDEOINCTRL_CT_ROLL_RELATIVE; ++ ++typedef struct VRDEVIDEOINCTRL_CT_PRIVACY_MODE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8Privacy; ++} VRDEVIDEOINCTRL_CT_PRIVACY_MODE; ++ ++typedef struct VRDEVIDEOINCTRL_PU_BACKLIGHT_COMPENSATION ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16BacklightCompensation; ++} VRDEVIDEOINCTRL_PU_BACKLIGHT_COMPENSATION; ++ ++typedef struct VRDEVIDEOINCTRL_PU_BRIGHTNESS ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Brightness; ++} VRDEVIDEOINCTRL_PU_BRIGHTNESS; ++ ++typedef struct VRDEVIDEOINCTRL_PU_CONTRAST ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Contrast; ++} VRDEVIDEOINCTRL_PU_CONTRAST; ++ ++typedef struct VRDEVIDEOINCTRL_PU_GAIN ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Gain; ++} VRDEVIDEOINCTRL_PU_GAIN; ++ ++typedef struct VRDEVIDEOINCTRL_PU_POWER_LINE_FREQUENCY ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16PowerLineFrequency; ++} VRDEVIDEOINCTRL_PU_POWER_LINE_FREQUENCY; ++ ++typedef struct VRDEVIDEOINCTRL_PU_HUE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Hue; ++} VRDEVIDEOINCTRL_PU_HUE; ++ ++typedef struct VRDEVIDEOINCTRL_PU_HUE_AUTO ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8HueAuto; ++} VRDEVIDEOINCTRL_PU_HUE_AUTO; ++ ++typedef struct VRDEVIDEOINCTRL_PU_SATURATION ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Saturation; ++} VRDEVIDEOINCTRL_PU_SATURATION; ++ ++typedef struct VRDEVIDEOINCTRL_PU_SHARPNESS ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Sharpness; ++} VRDEVIDEOINCTRL_PU_SHARPNESS; ++ ++typedef struct VRDEVIDEOINCTRL_PU_GAMMA ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Gamma; ++} VRDEVIDEOINCTRL_PU_GAMMA; ++ ++typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16WhiteBalanceTemperature; ++} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE; ++ ++typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE_AUTO ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8WhiteBalanceTemperatureAuto; ++} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE_AUTO; ++ ++typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16WhiteBalanceBlue; ++ uint16_t u16WhiteBalanceRed; ++} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT; ++ ++typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT_AUTO ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8WhiteBalanceComponentAuto; ++} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT_AUTO; ++ ++typedef struct VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16MultiplierStep; ++} VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER; ++ ++typedef struct VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER_LIMIT ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16MultiplierLimit; ++} VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER_LIMIT; ++ ++typedef struct VRDEVIDEOINCTRL_PU_ANALOG_VIDEO_STANDARD ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8VideoStandard; ++} VRDEVIDEOINCTRL_PU_ANALOG_VIDEO_STANDARD; ++ ++typedef struct VRDEVIDEOINCTRL_PU_ANALOG_LOCK_STATUS ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8Status; ++} VRDEVIDEOINCTRL_PU_ANALOG_LOCK_STATUS; ++ ++/* Start sending video frames with this format. */ ++#define VRDEVIDEOINCTRL_F_VS_START_FID 0x01 ++#define VRDEVIDEOINCTRL_F_VS_START_EOF 0x02 ++ ++typedef struct VRDEVIDEOINCTRL_VS_START ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8FormatId; /* The format id on the client: VRDEVIDEOINFORMATDESC::u8FormatId. */ ++ uint8_t u8FramingInfo; /* VRDEVIDEOINCTRL_F_VS_START_*. Set by the client. */ ++ uint16_t u16Width; ++ uint16_t u16Height; ++ uint32_t u32FrameInterval; /* Frame interval in 100 ns units, 0 means a still image capture. ++ * The client may choose a different interval if this value is ++ * not supported. ++ */ ++ uint16_t u16CompQuality; /* 0 .. 10000 = 0 .. 100%. ++ * Applicable if the format has VRDE_VIDEOIN_F_FMT_COMPQUALITY, ++ * otherwise this field is ignored. ++ */ ++ uint16_t u16Delay; /* Latency in ms from video data capture to presentation on the channel. ++ * Set by the client, read by the server. ++ */ ++ uint32_t u32ClockFrequency; /* @todo just all clocks in 100ns units? */ ++} VRDEVIDEOINCTRL_VS_START; ++ ++/* Stop sending video frames. */ ++typedef struct VRDEVIDEOINCTRL_VS_STOP ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++} VRDEVIDEOINCTRL_VS_STOP; ++ ++typedef struct VRDEVIDEOINCTRL_VS_SYNCH_DELAY ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint16_t u16Delay; ++} VRDEVIDEOINCTRL_VS_SYNCH_DELAY; ++ ++typedef struct VRDEVIDEOINCTRL_VS_STILL_IMAGE_TRIGGER ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8Trigger; ++} VRDEVIDEOINCTRL_VS_STILL_IMAGE_TRIGGER; ++ ++typedef struct VRDEVIDEOINCTRL_VS_GENERATE_KEY_FRAME ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8GenerateKeyFrame; ++} VRDEVIDEOINCTRL_VS_GENERATE_KEY_FRAME; ++ ++typedef struct VRDEVIDEOINCTRL_VS_UPDATE_FRAME_SEGMENT ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8StartFrameSegment; ++ uint8_t u8EndFrameSegment; ++} VRDEVIDEOINCTRL_VS_UPDATE_FRAME_SEGMENT; ++ ++typedef struct VRDEVIDEOINCTRL_VS_STREAM_ERROR_CODE ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8StreamErrorCode; ++} VRDEVIDEOINCTRL_VS_STREAM_ERROR_CODE; ++ ++/* A hardware button was pressed/released on the device. */ ++typedef struct VRDEVIDEOINCTRL_HW_BUTTON ++{ ++ VRDEVIDEOINCTRLHDR hdr; ++ uint8_t u8Pressed; ++} VRDEVIDEOINCTRL_CT_HW_BUTTON; ++ ++/* ++ * Payload transfers. How frames are sent to the server: ++ * the client send a PAYLOAD packet, which has the already set format. ++ * The server enables the transfers by sending VRDEVIDEOINCTRL_VS_START. ++ */ ++ ++/* Payload header */ ++typedef struct VRDEVIDEOINPAYLOADHDR ++{ ++ uint8_t u8HeaderLength; /* Entire header. */ ++ uint8_t u8HeaderInfo; /* VRDE_VIDEOIN_PAYLOAD_F_* */ ++ uint32_t u32PresentationTime; /* @todo define this */ ++ uint32_t u32SourceTimeClock; /* @todo At the moment when the frame was sent to the channel. ++ * Allows the server to measure clock drift. ++ */ ++ uint16_t u16Reserved; /* @todo */ ++} VRDEVIDEOINPAYLOADHDR; ++ ++/* VRDEVIDEOINPAYLOADHDR::u8HeaderInfo */ ++#define VRDE_VIDEOIN_PAYLOAD_F_FID 0x01 /* Frame ID */ ++#define VRDE_VIDEOIN_PAYLOAD_F_EOF 0x02 /* End of Frame */ ++#define VRDE_VIDEOIN_PAYLOAD_F_PTS 0x04 /* Presentation Time */ ++#define VRDE_VIDEOIN_PAYLOAD_F_SCR 0x08 /* Source Clock Reference */ ++#define VRDE_VIDEOIN_PAYLOAD_F_RES 0x10 /* Reserved */ ++#define VRDE_VIDEOIN_PAYLOAD_F_STI 0x20 /* Still Image */ ++#define VRDE_VIDEOIN_PAYLOAD_F_ERR 0x40 /* Error */ ++#define VRDE_VIDEOIN_PAYLOAD_F_EOH 0x80 /* End of header */ ++ ++ ++/* ++ * The network channel specification. ++ */ ++ ++/* ++ * The protocol uses a dynamic RDP channel. ++ * Everything is little-endian. ++ */ ++ ++#define VRDE_VIDEOIN_CHANNEL "RVIDEOIN" ++ ++/* Major functions. */ ++#define VRDE_VIDEOIN_FN_NEGOTIATE 0x0000 /* Version and capabilities check. */ ++#define VRDE_VIDEOIN_FN_NOTIFY 0x0001 /* Device attach/detach from the client. */ ++#define VRDE_VIDEOIN_FN_DEVICEDESC 0x0002 /* Query device description. */ ++#define VRDE_VIDEOIN_FN_CONTROL 0x0003 /* Control the device and start/stop video input. */ ++#define VRDE_VIDEOIN_FN_CONTROL_NOTIFY 0x0004 /* The client reports a control change, etc. */ ++#define VRDE_VIDEOIN_FN_FRAME 0x0005 /* Frame from the client. */ ++ ++/* Status codes. */ ++#define VRDE_VIDEOIN_STATUS_SUCCESS 0 /* Function completed successfully. */ ++#define VRDE_VIDEOIN_STATUS_FAILED 1 /* Failed for some reason. */ ++ ++typedef struct VRDEVIDEOINMSGHDR ++{ ++ uint32_t u32Length; /* The length of the message in bytes, including the header. */ ++ uint32_t u32DeviceId; /* The client's device id. */ ++ uint32_t u32MessageId; /* Unique id assigned by the server. The client must send a reply with the same id. ++ * If the client initiates a request, then this must be set to 0, because there is ++ * currently no client requests, which would require a response from the server. ++ */ ++ uint16_t u16FunctionId; /* VRDE_VIDEOIN_FN_* */ ++ uint16_t u16Status; /* The result of a request. VRDE_VIDEOIN_STATUS_*. */ ++} VRDEVIDEOINMSGHDR; ++ASSERTSIZE(VRDEVIDEOINMSGHDR, 16) ++ ++/* ++ * VRDE_VIDEOIN_FN_NEGOTIATE ++ * ++ * Sent by the server when the channel is established and the client replies with its capabilities. ++ */ ++#define VRDE_VIDEOIN_NEGOTIATE_VERSION 1 ++ ++#define VRDE_VIDEOIN_NEGOTIATE_CAP_VOID 0 ++ ++typedef struct VRDEVIDEOINMSG_NEGOTIATE ++{ ++ VRDEVIDEOINMSGHDR hdr; ++ uint32_t u32Version; /* VRDE_VIDEOIN_NEGOTIATE_VERSION */ ++ uint32_t fu32Capabilities; /* VRDE_VIDEOIN_NEGOTIATE_CAP_* */ ++} VRDEVIDEOINMSG_NEGOTIATE; ++ ++/* ++ * VRDE_VIDEOIN_FN_NOTIFY ++ * ++ * Sent by the client when a webcam is attached or detached. ++ * The client must send the ATTACH notification for each webcam, which is ++ * already connected to the client when the VIDEOIN channel is established. ++ */ ++#define VRDE_VIDEOIN_NOTIFY_ATTACH 0 ++#define VRDE_VIDEOIN_NOTIFY_DETACH 1 ++ ++typedef struct VRDEVIDEOINMSG_NOTIFY ++{ ++ VRDEVIDEOINMSGHDR hdr; ++ uint32_t u32NotifyEvent; /* VRDE_VIDEOIN_NOTIFY_* */ ++ /* Event specific data may follow. The underlying protocol provides the length of the message. */ ++} VRDEVIDEOINMSG_NOTIFY; ++ ++/* ++ * VRDE_VIDEOIN_FN_DEVICEDESC ++ * ++ * The server queries the description of a device. ++ */ ++typedef struct VRDEVIDEOINMSG_DEVICEDESC_REQ ++{ ++ VRDEVIDEOINMSGHDR hdr; ++} VRDEVIDEOINMSG_DEVICEDESC_REQ; ++ ++typedef struct VRDEVIDEOINMSG_DEVICEDESC_RSP ++{ ++ VRDEVIDEOINMSGHDR hdr; ++ VRDEVIDEOINDEVICEDESC Device; ++ /* ++ * VRDEVIDEOINFORMATDESC[0] ++ * VRDEVIDEOINFRAMEDESC[0] ++ * ... ++ * VRDEVIDEOINFRAMEDESC[n] ++ * VRDEVIDEOINFORMATDESC[1] ++ * VRDEVIDEOINFRAMEDESC[0] ++ * ... ++ * VRDEVIDEOINFRAMEDESC[m] ++ * ... ++ */ ++} VRDEVIDEOINMSG_DEVICEDESC_RSP; ++ ++/* ++ * VRDE_VIDEOIN_FN_CONTROL ++ * VRDE_VIDEOIN_FN_CONTROL_NOTIFY ++ * ++ * Either sent by the server or by the client as a notification/response. ++ * If sent by the client as a notification, then hdr.u32MessageId must be 0. ++ */ ++typedef struct VRDEVIDEOINMSG_CONTROL ++{ ++ VRDEVIDEOINMSGHDR hdr; ++ VRDEVIDEOINCTRLHDR Control; ++ /* Control specific data may follow. */ ++} VRDEVIDEOINMSG_CONTROL; ++ ++/* ++ * VRDE_VIDEOIN_FN_FRAME ++ * ++ * The client sends a video/still frame in the already specified format. ++ * hdr.u32MessageId must be 0. ++ */ ++typedef struct VRDEVIDEOINMSG_FRAME ++{ ++ VRDEVIDEOINMSGHDR hdr; ++ VRDEVIDEOINPAYLOADHDR Payload; ++ /* The frame data follow. */ ++} VRDEVIDEOINMSG_FRAME; ++ ++ ++#ifdef VRDE_VIDEOIN_WITH_VRDEINTERFACE ++/* ++ * The application interface between VirtualBox and the VRDE server. ++ */ ++ ++#define VRDE_VIDEOIN_INTERFACE_NAME "VIDEOIN" ++ ++typedef struct VRDEVIDEOINDEVICEHANDLE ++{ ++ uint32_t u32ClientId; ++ uint32_t u32DeviceId; ++} VRDEVIDEOINDEVICEHANDLE; ++ ++/* The VRDE server video input interface entry points. Interface version 1. */ ++typedef struct VRDEVIDEOININTERFACE ++{ ++ /* The header. */ ++ VRDEINTERFACEHDR header; ++ ++ /* Tell the server that this device will be used and associate a context with the device. ++ * ++ * @param hServer The VRDE server instance. ++ * @param pDeviceHandle The device reported by ATTACH notification. ++ * @param pvDeviceCtx The caller context associated with the pDeviceHandle. ++ * ++ * @return IPRT status code. ++ */ ++ DECLR3CALLBACKMEMBER(int, VRDEVideoInDeviceAttach, (HVRDESERVER hServer, ++ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle, ++ void *pvDeviceCtx)); ++ ++ /* This device will be not be used anymore. The device context must not be used by the server too. ++ * ++ * @param hServer The VRDE server instance. ++ * @param pDeviceHandle The device reported by ATTACH notification. ++ * ++ * @return IPRT status code. ++ */ ++ DECLR3CALLBACKMEMBER(int, VRDEVideoInDeviceDetach, (HVRDESERVER hServer, ++ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle)); ++ ++ /* Get a device description. ++ * ++ * @param hServer The VRDE server instance. ++ * @param pvUser The callers context of this request. ++ * @param pDeviceHandle The device reported by ATTACH notification. ++ * ++ * @return IPRT status code. ++ */ ++ DECLR3CALLBACKMEMBER(int, VRDEVideoInGetDeviceDesc, (HVRDESERVER hServer, ++ void *pvUser, ++ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle)); ++ ++ /* Submit a set/get control request. ++ * ++ * @param hServer The VRDE server instance. ++ * @param pvUser The callers context of this request. ++ * @param pDeviceHandle The device reported by ATTACH notification. ++ * @param pReq The request. ++ * @param cbReq Size of the request. ++ * ++ * @return IPRT status code. ++ */ ++ DECLR3CALLBACKMEMBER(int, VRDEVideoInControl, (HVRDESERVER hServer, ++ void *pvUser, ++ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle, ++ const VRDEVIDEOINCTRLHDR *pReq, ++ uint32_t cbReq)); ++ ++} VRDEVIDEOININTERFACE; ++ ++ ++/* ++ * Notifications. ++ * Data structures: pvData of VRDEVIDEOINCALLBACKS::VRDECallbackVideoInNotify. ++ */ ++typedef struct VRDEVIDEOINNOTIFYATTACH ++{ ++ VRDEVIDEOINDEVICEHANDLE deviceHandle; ++} VRDEVIDEOINNOTIFYATTACH; ++ ++typedef struct VRDEVIDEOINNOTIFYDETACH ++{ ++ VRDEVIDEOINDEVICEHANDLE deviceHandle; ++} VRDEVIDEOINNOTIFYDETACH; ++ ++ ++/* Video input interface callbacks. */ ++typedef struct VRDEVIDEOINCALLBACKS ++{ ++ /** The header. */ ++ VRDEINTERFACEHDR header; ++ ++ /* Notifications. ++ * ++ * @param pvCallback The callbacks context specified in VRDEGetInterface. ++ * @param u32EventId The notification identifier: VRDE_VIDEOIN_NOTIFY_*. ++ * @param pvData The notification specific data. ++ * @param cbData The size of buffer pointed by pvData. ++ */ ++ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInNotify,(void *pvCallback, ++ uint32_t u32Id, ++ const void *pvData, ++ uint32_t cbData)); ++ ++ /* Device description received from the client. ++ * ++ * @param pvCallback The callbacks context specified in VRDEGetInterface. ++ * @param rcRequest The result code of the request. ++ * @param pDeviceCtx The device context associated with the device in VRDEVideoInGetDeviceDesc. ++ * @param pvUser The pvUser parameter of VRDEVideoInGetDeviceDesc. ++ * @param pDeviceDesc The device description. ++ * @param cbDeviceDesc The size of buffer pointed by pDevice. ++ */ ++ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInDeviceDesc,(void *pvCallback, ++ int rcRequest, ++ void *pDeviceCtx, ++ void *pvUser, ++ const VRDEVIDEOINDEVICEDESC *pDeviceDesc, ++ uint32_t cbDeviceDesc)); ++ ++ /* Control response or notification. ++ * ++ * @param pvCallback The callbacks context specified in VRDEGetInterface. ++ * @param rcRequest The result code of the request. ++ * @param pDeviceCtx The device context associated with the device in VRDEVideoInGetDeviceDesc. ++ * @param pvUser The pvUser parameter of VRDEVideoInControl. NULL if this is a notification. ++ * @param pControl The control information. ++ * @param cbControl The size of buffer pointed by pControl. ++ */ ++ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInControl,(void *pvCallback, ++ int rcRequest, ++ void *pDeviceCtx, ++ void *pvUser, ++ const VRDEVIDEOINCTRLHDR *pControl, ++ uint32_t cbControl)); ++ ++ /* Frame which was received from the client. ++ * ++ * @param pvCallback The callbacks context specified in VRDEGetInterface. ++ * @param rcRequest The result code of the request. ++ * @param pDeviceCtx The device context associated with the device in VRDEVideoInGetDeviceDesc. ++ * @param pFrame The frame data. ++ * @param cbFrame The size of buffer pointed by pFrame. ++ */ ++ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInFrame,(void *pvCallback, ++ int rcRequest, ++ void *pDeviceCtx, ++ const VRDEVIDEOINPAYLOADHDR *pFrame, ++ uint32_t cbFrame)); ++ ++} VRDEVIDEOINCALLBACKS; ++#endif /* VRDE_VIDEOIN_WITH_VRDEINTERFACE */ ++ ++#pragma pack() ++ ++#endif From 1029ca5767e3d27fbfbeb19a845ffee3485c028f Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 1 Mar 2013 05:29:19 +0100 Subject: [PATCH 094/407] virtualbox: Support UIDGID_STRICT_TYPE_CHECKS. This adds a patch to support CONFIG_UIDGID_STRICT_TYPE_CHECKS being activated in the kernel config (selected by CONFIG_USER_NS for example). When this kernel option is enabled, current->cred->uid is a structure rather than a simple integer type (uid_t and gid_t), so we need to check for that and also pass the current user namespace where needed. Signed-off-by: aszlig --- .../virtualization/virtualbox/default.nix | 5 +- .../virtualbox/strict_types.patch | 68 +++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 pkgs/applications/virtualization/virtualbox/strict_types.patch diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index d95d97688c3..05a9dd7e7d8 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -54,7 +54,10 @@ in stdenv.mkDerivation { ++ optional javaBindings jdk ++ optional pythonBindings python; - patches = singleton ./missing_files_4.2.8.patch; + patches = [ + ./missing_files_4.2.8.patch + ./strict_types.patch + ]; prePatch = '' set -x diff --git a/pkgs/applications/virtualization/virtualbox/strict_types.patch b/pkgs/applications/virtualization/virtualbox/strict_types.patch new file mode 100644 index 00000000000..18ccc77f9b1 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/strict_types.patch @@ -0,0 +1,68 @@ +diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c +index 9cc124c..d86da0c 100644 +--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c ++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c +@@ -253,7 +253,11 @@ static struct platform_device gPlatformDevice = + DECLINLINE(RTUID) vboxdrvLinuxUid(void) + { + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) ++# ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS ++ return from_kuid(current_user_ns(), current_uid()); ++# else + return current->cred->uid; ++# endif + #else + return current->uid; + #endif +@@ -262,7 +266,11 @@ DECLINLINE(RTUID) vboxdrvLinuxUid(void) + DECLINLINE(RTGID) vboxdrvLinuxGid(void) + { + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) ++# ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS ++ return from_kgid(current_user_ns(), current_gid()); ++# else + return current->cred->gid; ++# endif + #else + return current->gid; + #endif +@@ -271,7 +279,11 @@ DECLINLINE(RTGID) vboxdrvLinuxGid(void) + DECLINLINE(RTUID) vboxdrvLinuxEuid(void) + { + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) ++# ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS ++ return from_kuid(current_user_ns(), current_euid()); ++# else + return current->cred->euid; ++# endif + #else + return current->euid; + #endif +diff --git a/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c b/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c +index 575f739..8909e79 100644 +--- a/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c ++++ b/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c +@@ -429,7 +429,11 @@ int vboxPciOsDevDetachHostDriver(PVBOXRAWPCIINS pIns) + if (!pNewCreds) + goto done; + ++# ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS ++ pNewCreds->fsuid = GLOBAL_ROOT_UID;; ++# else + pNewCreds->fsuid = 0; ++# endif + pOldCreds = override_creds(pNewCreds); + #endif + +@@ -539,7 +543,11 @@ int vboxPciOsDevReattachHostDriver(PVBOXRAWPCIINS pIns) + if (!pNewCreds) + goto done; + ++# ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS ++ pNewCreds->fsuid = GLOBAL_ROOT_UID;; ++# else + pNewCreds->fsuid = 0; ++# endif + pOldCreds = override_creds(pNewCreds); + #endif + RTStrPrintf(szFileBuf, cMaxBuf, From fc088ae732f566d46248269dd7c9c69e31ec4cdf Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 1 Mar 2013 05:38:25 +0100 Subject: [PATCH 095/407] virtualbox: Fix build with kernel 3.9.0. This patch is cherry-picked from VirtualBox Subversion, revision 44867. It's rather small and only is in effect if kernel version is >= 3.9.0, so it won't break existing kernels, so I'm adding it here despite we usually only care about the latest stable upstream (kernel) versions. Signed-off-by: aszlig --- .../virtualbox/build_fix_3.9.0.patch | 22 +++++++++++++++++++ .../virtualization/virtualbox/default.nix | 1 + 2 files changed, 23 insertions(+) create mode 100644 pkgs/applications/virtualization/virtualbox/build_fix_3.9.0.patch diff --git a/pkgs/applications/virtualization/virtualbox/build_fix_3.9.0.patch b/pkgs/applications/virtualization/virtualbox/build_fix_3.9.0.patch new file mode 100644 index 00000000000..2c3cdebacde --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/build_fix_3.9.0.patch @@ -0,0 +1,22 @@ +commit d725168153e3dc5a383b12e0bf9af9b6244ad3eb +Author: vboxsync +Date: Thu Feb 28 13:46:12 2013 +0000 + + Linux 3.9.0 rc0 compile fix + + git-svn-id: http://www.virtualbox.org/svn/vbox/trunk@44867 cfe28804-0f27-0410-a406-dd0f0b0b656f + +diff --git a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h +index ec9b502..7a208d1 100644 +--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h ++++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h +@@ -90,6 +90,9 @@ + #include + #include + #include ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) ++# include ++#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 7) + # include + #endif diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index 05a9dd7e7d8..62a4b16070d 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -57,6 +57,7 @@ in stdenv.mkDerivation { patches = [ ./missing_files_4.2.8.patch ./strict_types.patch + ./build_fix_3.9.0.patch ]; prePatch = '' From 964621438abceebab952f57abf1234ceb1a5e7c8 Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 1 Mar 2013 09:18:14 +0100 Subject: [PATCH 096/407] nss: Update to version 3.14.3. This update involves a bunch of fixes on our side: Update the Gentoo patch to 3.14.1 from http://bit.ly/ZG8OK5 and drop the older one from http://bit.ly/15mN0X1 (for 3.12.5). While checking the old patch from Gentoo, I discovered, that the patch added in revision 06c543b11dfeb708963c6a63bf7f1ed79c5367b2 wasn't the original one in the Gentoo repository. Instead of doing the same again, we now patch up our specific modifications using sed within the postPatch hook. In addition to that, we now have another patch from RedHat/Fedora which syncs the NSS PEM support repository with the latest upstream changes. Patch is coming from the SRPM at http://koji.fedoraproject.org/koji/rpminfo?rpmID=3772072 and I just stripped the "0001-" prefix from the filename. Signed-off-by: aszlig --- pkgs/development/libraries/nss/default.nix | 24 +- ...diff => nss-3.14.1-gentoo-fixups-r1.patch} | 62 ++- ...ync-up-with-upstream-softokn-changes.patch | 406 ++++++++++++++++++ 3 files changed, 454 insertions(+), 38 deletions(-) rename pkgs/development/libraries/nss/{nss-3.12.5-gentoo-fixups.diff => nss-3.14.1-gentoo-fixups-r1.patch} (70%) create mode 100644 pkgs/development/libraries/nss/sync-up-with-upstream-softokn-changes.patch diff --git a/pkgs/development/libraries/nss/default.nix b/pkgs/development/libraries/nss/default.nix index 8e4edcad885..d38fc19f40e 100644 --- a/pkgs/development/libraries/nss/default.nix +++ b/pkgs/development/libraries/nss/default.nix @@ -22,11 +22,11 @@ let in stdenv.mkDerivation rec { name = "nss-${version}"; - version = "3.14"; + version = "3.14.3"; src = fetchurl { - url = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_14_RTM/src/${name}.tar.gz"; - sha1 = "ace3642fb2ca67854ea7075d053ca01a6d81e616"; + url = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_14_3_RTM/src/${name}.tar.gz"; + sha1 = "94d8781d1fa29cfbd37453dda3e9488709b82c4c"; }; buildInputs = [ nspr perl zlib sqlite ]; @@ -38,14 +38,28 @@ in stdenv.mkDerivation rec { ''; patches = [ - ./nss-3.12.5-gentoo-fixups.diff + ./nss-3.14.1-gentoo-fixups-r1.patch secLoadPatch ./nix_secload_fixup.patch + ./sync-up-with-upstream-softokn-changes.patch ]; postPatch = '' sed -i -e 's/^DIRS.*$/& pem/' mozilla/security/nss/lib/ckfw/manifest.mn - sed -i -e "/^PREFIX =/s:= /usr:= $out:" mozilla/security/nss/config/Makefile + + # Fix up the patch from Gentoo + sed -i \ + -e "/^PREFIX =/s|= /usr|= $out|" \ + -e '/@libdir@/s|gentoo/nss|lib|' \ + -e '/ln -sf/d' \ + mozilla/security/nss/config/Makefile + + # Note for spacing/tab nazis: The TAB characters are intentional! + cat >> mozilla/security/nss/config/Makefile < nss.pc + chmod 0644 nss.pc ++ ln -sf ../../../../../security/nss/config/nss.pc $(DIST)/lib/pkgconfig + + # Create the nss-config script + mkdir -p $(DIST)/bin @@ -34,19 +36,15 @@ diff -urN nss-3.12.5-orig/mozilla/security/nss/config/Makefile nss-3.12.5/mozill + -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \ + nss-config.in > nss-config + chmod 0755 nss-config -+ # ln -sf ../../../../security/nss/config/nss-config $(DIST)/bin ++ ln -sf ../../../../security/nss/config/nss-config $(DIST)/bin + +libs: + +dummy: all export libs + -+install: -+ mkdir -p $(DIST)/lib/pkgconfig -+ cp nss.pc $(DIST)/lib/pkgconfig -+ -diff -urN nss-3.12.5-orig/mozilla/security/nss/config/nss-config.in nss-3.12.5/mozilla/security/nss/config/nss-config.in ---- nss-3.12.5-orig/mozilla/security/nss/config/nss-config.in 1969-12-31 18:00:00.000000000 -0600 -+++ nss-3.12.5/mozilla/security/nss/config/nss-config.in 2009-09-14 21:47:45.190638078 -0500 +diff -urN a/mozilla/security/nss/config/nss-config.in b/mozilla/security/nss/config/nss-config.in +--- a/mozilla/security/nss/config/nss-config.in 1969-12-31 18:00:00.000000000 -0600 ++++ b/mozilla/security/nss/config/nss-config.in 2012-12-15 07:27:20.651148959 -0600 @@ -0,0 +1,145 @@ +#!/bin/sh + @@ -177,7 +175,7 @@ diff -urN nss-3.12.5-orig/mozilla/security/nss/config/nss-config.in nss-3.12.5/m +fi + +if test "$echo_libs" = "yes"; then -+ libdirs="-Wl,-R$libdir -L$libdir" ++ libdirs="" + if test -n "$lib_ssl"; then + libdirs="$libdirs -lssl${major_version}" + fi @@ -193,9 +191,9 @@ diff -urN nss-3.12.5-orig/mozilla/security/nss/config/nss-config.in nss-3.12.5/m + echo $libdirs +fi + -diff -urN nss-3.12.5-orig/mozilla/security/nss/config/nss.pc.in nss-3.12.5/mozilla/security/nss/config/nss.pc.in ---- nss-3.12.5-orig/mozilla/security/nss/config/nss.pc.in 1969-12-31 18:00:00.000000000 -0600 -+++ nss-3.12.5/mozilla/security/nss/config/nss.pc.in 2009-09-14 21:45:45.653637310 -0500 +diff -urN a/mozilla/security/nss/config/nss.pc.in b/mozilla/security/nss/config/nss.pc.in +--- a/mozilla/security/nss/config/nss.pc.in 1969-12-31 18:00:00.000000000 -0600 ++++ b/mozilla/security/nss/config/nss.pc.in 2012-12-15 07:27:20.651148959 -0600 @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ @@ -206,13 +204,13 @@ diff -urN nss-3.12.5-orig/mozilla/security/nss/config/nss.pc.in nss-3.12.5/mozil +Description: Network Security Services +Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@ +Requires: nspr >= 4.8 -+Libs: -L${libdir} -lssl3 -lsmime3 -lnssutil3 -lnss3 -Wl,-R${libdir} ++Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3 +Cflags: -I${includedir} + -diff -urN nss-3.12.5-orig/mozilla/security/nss/Makefile nss-3.12.5/mozilla/security/nss/Makefile ---- nss-3.12.5-orig/mozilla/security/nss/Makefile 2008-12-02 17:24:39.000000000 -0600 -+++ nss-3.12.5/mozilla/security/nss/Makefile 2009-09-14 21:45:45.678657145 -0500 -@@ -78,7 +78,7 @@ +diff -urN a/mozilla/security/nss/Makefile b/mozilla/security/nss/Makefile +--- a/mozilla/security/nss/Makefile 2012-11-13 19:14:07.000000000 -0600 ++++ b/mozilla/security/nss/Makefile 2012-12-15 07:27:57.235162137 -0600 +@@ -44,7 +44,7 @@ # (7) Execute "local" rules. (OPTIONAL). # ####################################################################### @@ -221,27 +219,25 @@ diff -urN nss-3.12.5-orig/mozilla/security/nss/Makefile nss-3.12.5/mozilla/secur nss_clean_all: clobber_coreconf clobber_nspr clobber_dbm clobber -@@ -140,12 +140,6 @@ +@@ -106,12 +106,6 @@ --with-dist-prefix='$(NSPR_PREFIX)' \ --with-dist-includedir='$(NSPR_PREFIX)/include' -build_nspr: $(NSPR_CONFIG_STATUS) -- cd $(CORE_DEPTH)/../nsprpub/$(OBJDIR_NAME) ; $(MAKE) +- $(MAKE) -C $(CORE_DEPTH)/../nsprpub/$(OBJDIR_NAME) - -clobber_nspr: $(NSPR_CONFIG_STATUS) -- cd $(CORE_DEPTH)/../nsprpub/$(OBJDIR_NAME) ; $(MAKE) clobber +- $(MAKE) -C $(CORE_DEPTH)/../nsprpub/$(OBJDIR_NAME) clobber - build_dbm: - ifndef NSS_DISABLE_DBM - cd $(CORE_DEPTH)/dbm ; $(MAKE) export libs -diff -urN nss-3.12.5-orig/mozilla/security/nss/manifest.mn nss-3.12.5/mozilla/security/nss/manifest.mn ---- nss-3.12.5-orig/mozilla/security/nss/manifest.mn 2008-04-04 15:36:59.000000000 -0500 -+++ nss-3.12.5/mozilla/security/nss/manifest.mn 2009-09-14 21:45:45.703656167 -0500 -@@ -42,6 +42,6 @@ + ifdef NSS_DISABLE_DBM + @echo "skipping the build of DBM" +diff -urN a/mozilla/security/nss/manifest.mn b/mozilla/security/nss/manifest.mn +--- a/mozilla/security/nss/manifest.mn 2012-03-20 09:46:49.000000000 -0500 ++++ b/mozilla/security/nss/manifest.mn 2012-12-15 07:27:20.652148933 -0600 +@@ -10,6 +10,6 @@ RELEASE = nss -DIRS = lib cmd +DIRS = lib cmd config - - diff --git a/pkgs/development/libraries/nss/sync-up-with-upstream-softokn-changes.patch b/pkgs/development/libraries/nss/sync-up-with-upstream-softokn-changes.patch new file mode 100644 index 00000000000..4942debcd30 --- /dev/null +++ b/pkgs/development/libraries/nss/sync-up-with-upstream-softokn-changes.patch @@ -0,0 +1,406 @@ +From d6dbecfea317a468be12423595e584f43d84d8ec Mon Sep 17 00:00:00 2001 +From: Elio Maldonado +Date: Sat, 9 Feb 2013 17:11:00 -0500 +Subject: [PATCH] Sync up with upstream softokn changes + +- Disable RSA OEP case in FormatBlock, RSA_OAEP support is experimental and in a state of flux +- Numerous change upstream due to the work for TLS/DTLS 'Lucky 13' vulnerability CVE-2013-0169 +- It now compiles with the NSS_3_14_3_BETA1 source +--- + mozilla/security/nss/lib/ckfw/pem/rsawrapr.c | 338 +++++++------------------- + 1 files changed, 82 insertions(+), 256 deletions(-) + +diff --git a/mozilla/security/nss/lib/ckfw/pem/rsawrapr.c b/mozilla/security/nss/lib/ckfw/pem/rsawrapr.c +index 5ac4f39..3780d30 100644 +--- a/mozilla/security/nss/lib/ckfw/pem/rsawrapr.c ++++ b/mozilla/security/nss/lib/ckfw/pem/rsawrapr.c +@@ -46,6 +46,7 @@ + #include "sechash.h" + #include "base.h" + ++#include "lowkeyi.h" + #include "secerr.h" + + #define RSA_BLOCK_MIN_PAD_LEN 8 +@@ -54,9 +55,8 @@ + #define RSA_BLOCK_PRIVATE_PAD_OCTET 0xff + #define RSA_BLOCK_AFTER_PAD_OCTET 0x00 + +-#define OAEP_SALT_LEN 8 +-#define OAEP_PAD_LEN 8 +-#define OAEP_PAD_OCTET 0x00 ++/* Needed for RSA-PSS functions */ ++static const unsigned char eightZeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + + #define FLAT_BUFSIZE 512 /* bytes to hold flattened SHA1Context. */ + +@@ -78,127 +78,39 @@ pem_PublicModulusLen(NSSLOWKEYPublicKey *pubk) + return 0; + } + +-static SHA1Context *SHA1_CloneContext(SHA1Context * original) +-{ +- SHA1Context *clone = NULL; +- unsigned char *pBuf; +- int sha1ContextSize = SHA1_FlattenSize(original); +- SECStatus frv; +- unsigned char buf[FLAT_BUFSIZE]; +- +- PORT_Assert(sizeof buf >= sha1ContextSize); +- if (sizeof buf >= sha1ContextSize) { +- pBuf = buf; +- } else { +- pBuf = nss_ZAlloc(NULL, sha1ContextSize); +- if (!pBuf) +- goto done; +- } +- +- frv = SHA1_Flatten(original, pBuf); +- if (frv == SECSuccess) { +- clone = SHA1_Resurrect(pBuf, NULL); +- memset(pBuf, 0, sha1ContextSize); +- } +- done: +- if (pBuf != buf) +- nss_ZFreeIf(pBuf); +- return clone; ++/* Constant time comparison of a single byte. ++ * Returns 1 iff a == b, otherwise returns 0. ++ * Note: For ranges of bytes, use constantTimeCompare. ++ */ ++static unsigned char constantTimeEQ8(unsigned char a, unsigned char b) { ++ unsigned char c = ~(a - b | b - a); ++ c >>= 7; ++ return c; + } + +-/* +- * Modify data by XORing it with a special hash of salt. ++/* Constant time comparison of a range of bytes. ++ * Returns 1 iff len bytes of a are identical to len bytes of b, otherwise ++ * returns 0. + */ +-static SECStatus +-oaep_xor_with_h1(unsigned char *data, unsigned int datalen, +- unsigned char *salt, unsigned int saltlen) +-{ +- SHA1Context *sha1cx; +- unsigned char *dp, *dataend; +- unsigned char end_octet; +- +- sha1cx = SHA1_NewContext(); +- if (sha1cx == NULL) { +- return SECFailure; +- } +- +- /* +- * Get a hash of salt started; we will use it several times, +- * adding in a different end octet (x00, x01, x02, ...). +- */ +- SHA1_Begin(sha1cx); +- SHA1_Update(sha1cx, salt, saltlen); +- end_octet = 0; +- +- dp = data; +- dataend = data + datalen; +- +- while (dp < dataend) { +- SHA1Context *sha1cx_h1; +- unsigned int sha1len, sha1off; +- unsigned char sha1[SHA1_LENGTH]; +- +- /* +- * Create hash of (salt || end_octet) +- */ +- sha1cx_h1 = SHA1_CloneContext(sha1cx); +- SHA1_Update(sha1cx_h1, &end_octet, 1); +- SHA1_End(sha1cx_h1, sha1, &sha1len, sizeof(sha1)); +- SHA1_DestroyContext(sha1cx_h1, PR_TRUE); +- PORT_Assert(sha1len == SHA1_LENGTH); +- +- /* +- * XOR that hash with the data. +- * When we have fewer than SHA1_LENGTH octets of data +- * left to xor, use just the low-order ones of the hash. +- */ +- sha1off = 0; +- if ((dataend - dp) < SHA1_LENGTH) +- sha1off = SHA1_LENGTH - (dataend - dp); +- while (sha1off < SHA1_LENGTH) +- *dp++ ^= sha1[sha1off++]; +- +- /* +- * Bump for next hash chunk. +- */ +- end_octet++; +- } +- +- SHA1_DestroyContext(sha1cx, PR_TRUE); +- return SECSuccess; ++static unsigned char constantTimeCompare(const unsigned char *a, ++ const unsigned char *b, ++ unsigned int len) { ++ unsigned char tmp = 0; ++ unsigned int i; ++ for (i = 0; i < len; ++i, ++a, ++b) ++ tmp |= *a ^ *b; ++ return constantTimeEQ8(0x00, tmp); + } + +-/* +- * Modify salt by XORing it with a special hash of data. ++/* Constant time conditional. ++ * Returns a if c is 1, or b if c is 0. The result is undefined if c is ++ * not 0 or 1. + */ +-static SECStatus +-oaep_xor_with_h2(unsigned char *salt, unsigned int saltlen, +- unsigned char *data, unsigned int datalen) ++static unsigned int constantTimeCondition(unsigned int c, ++ unsigned int a, ++ unsigned int b) + { +- unsigned char sha1[SHA1_LENGTH]; +- unsigned char *psalt, *psha1, *saltend; +- SECStatus rv; +- +- /* +- * Create a hash of data. +- */ +- rv = SHA1_HashBuf(sha1, data, datalen); +- if (rv != SECSuccess) { +- return rv; +- } +- +- /* +- * XOR the low-order octets of that hash with salt. +- */ +- PORT_Assert(saltlen <= SHA1_LENGTH); +- saltend = salt + saltlen; +- psalt = salt; +- psha1 = sha1 + SHA1_LENGTH - saltlen; +- while (psalt < saltend) { +- *psalt++ ^= *psha1++; +- } +- +- return SECSuccess; ++ return (~(c - 1) & a) | ((c - 1) & b); + } + + /* +@@ -212,7 +124,7 @@ static unsigned char *rsa_FormatOneBlock(unsigned modulusLen, + unsigned char *block; + unsigned char *bp; + int padLen; +- int i; ++ int i, j; + SECStatus rv; + + block = (unsigned char *) nss_ZAlloc(NULL, modulusLen); +@@ -260,124 +172,58 @@ static unsigned char *rsa_FormatOneBlock(unsigned modulusLen, + */ + case RSA_BlockPublic: + +- /* +- * 0x00 || BT || Pad || 0x00 || ActualData +- * 1 1 padLen 1 data->len +- * Pad is all non-zero random bytes. +- */ +- padLen = modulusLen - data->len - 3; +- PORT_Assert(padLen >= RSA_BLOCK_MIN_PAD_LEN); +- if (padLen < RSA_BLOCK_MIN_PAD_LEN) { +- nss_ZFreeIf(block); +- return NULL; +- } +- for (i = 0; i < padLen; i++) { +- /* Pad with non-zero random data. */ +- do { +- rv = RNG_GenerateGlobalRandomBytes(bp + i, 1); +- } while (rv == SECSuccess +- && bp[i] == RSA_BLOCK_AFTER_PAD_OCTET); +- if (rv != SECSuccess) { +- nss_ZFreeIf(block); +- return NULL; +- } +- } +- bp += padLen; +- *bp++ = RSA_BLOCK_AFTER_PAD_OCTET; +- nsslibc_memcpy(bp, data->data, data->len); +- +- break; +- +- /* +- * Blocks intended for public-key operation, using +- * Optimal Asymmetric Encryption Padding (OAEP). +- */ +- case RSA_BlockOAEP: +- /* +- * 0x00 || BT || Modified2(Salt) || Modified1(PaddedData) +- * 1 1 OAEP_SALT_LEN OAEP_PAD_LEN + data->len [+ N] +- * +- * where: +- * PaddedData is "Pad1 || ActualData [|| Pad2]" +- * Salt is random data. +- * Pad1 is all zeros. +- * Pad2, if present, is random data. +- * (The "modified" fields are all the same length as the original +- * unmodified values; they are just xor'd with other values.) +- * +- * Modified1 is an XOR of PaddedData with a special octet +- * string constructed of iterated hashing of Salt (see below). +- * Modified2 is an XOR of Salt with the low-order octets of +- * the hash of Modified1 (see farther below ;-). +- * +- * Whew! +- */ +- +- +- /* +- * Salt +- */ +- rv = RNG_GenerateGlobalRandomBytes(bp, OAEP_SALT_LEN); +- if (rv != SECSuccess) { +- nss_ZFreeIf(block); +- return NULL; +- } +- bp += OAEP_SALT_LEN; +- +- /* +- * Pad1 +- */ +- nsslibc_memset(bp, OAEP_PAD_OCTET, OAEP_PAD_LEN); +- bp += OAEP_PAD_LEN; +- +- /* +- * Data +- */ +- nsslibc_memcpy(bp, data->data, data->len); +- bp += data->len; +- +- /* +- * Pad2 +- */ +- if (bp < (block + modulusLen)) { +- rv = RNG_GenerateGlobalRandomBytes(bp, +- block - bp + modulusLen); +- if (rv != SECSuccess) { +- nss_ZFreeIf(block); +- return NULL; +- } +- } +- +- /* +- * Now we have the following: +- * 0x00 || BT || Salt || PaddedData +- * (From this point on, "Pad1 || Data [|| Pad2]" is treated +- * as the one entity PaddedData.) +- * +- * We need to turn PaddedData into Modified1. +- */ +- if (oaep_xor_with_h1(block + 2 + OAEP_SALT_LEN, +- modulusLen - 2 - OAEP_SALT_LEN, +- block + 2, OAEP_SALT_LEN) != SECSuccess) { +- nss_ZFreeIf(block); +- return NULL; +- } +- +- /* +- * Now we have: +- * 0x00 || BT || Salt || Modified1(PaddedData) +- * +- * The remaining task is to turn Salt into Modified2. +- */ +- if (oaep_xor_with_h2(block + 2, OAEP_SALT_LEN, +- block + 2 + OAEP_SALT_LEN, +- modulusLen - 2 - OAEP_SALT_LEN) != +- SECSuccess) { +- nss_ZFreeIf(block); +- return NULL; +- } +- +- break; ++ /* ++ * 0x00 || BT || Pad || 0x00 || ActualData ++ * 1 1 padLen 1 data->len ++ * Pad is all non-zero random bytes. ++ * ++ * Build the block left to right. ++ * Fill the entire block from Pad to the end with random bytes. ++ * Use the bytes after Pad as a supply of extra random bytes from ++ * which to find replacements for the zero bytes in Pad. ++ * If we need more than that, refill the bytes after Pad with ++ * new random bytes as necessary. ++ */ ++ padLen = modulusLen - (data->len + 3); ++ PORT_Assert (padLen >= RSA_BLOCK_MIN_PAD_LEN); ++ if (padLen < RSA_BLOCK_MIN_PAD_LEN) { ++ nss_ZFreeIf (block); ++ return NULL; ++ } ++ j = modulusLen - 2; ++ rv = RNG_GenerateGlobalRandomBytes(bp, j); ++ if (rv == SECSuccess) { ++ for (i = 0; i < padLen; ) { ++ unsigned char repl; ++ /* Pad with non-zero random data. */ ++ if (bp[i] != RSA_BLOCK_AFTER_PAD_OCTET) { ++ ++i; ++ continue; ++ } ++ if (j <= padLen) { ++ rv = RNG_GenerateGlobalRandomBytes(bp + padLen, ++ modulusLen - (2 + padLen)); ++ if (rv != SECSuccess) ++ break; ++ j = modulusLen - 2; ++ } ++ do { ++ repl = bp[--j]; ++ } while (repl == RSA_BLOCK_AFTER_PAD_OCTET && j > padLen); ++ if (repl != RSA_BLOCK_AFTER_PAD_OCTET) { ++ bp[i++] = repl; ++ } ++ } ++ } ++ if (rv != SECSuccess) { ++ /*sftk_fatalError = PR_TRUE;*/ ++ nss_ZFreeIf (block); ++ return NULL; ++ } ++ bp += padLen; ++ *bp++ = RSA_BLOCK_AFTER_PAD_OCTET; ++ nsslibc_memcpy(bp, data->data, data->len); ++ break; + + default: + PORT_Assert(0); +@@ -427,26 +273,6 @@ rsa_FormatBlock(SECItem * result, unsigned modulusLen, + + break; + +- case RSA_BlockOAEP: +- /* +- * 0x00 || BT || M1(Salt) || M2(Pad1||ActualData[||Pad2]) +- * +- * The "2" below is the first octet + the second octet. +- * (The other fields do not contain the clear values, but are +- * the same length as the clear values.) +- */ +- PORT_Assert(data->len <= (modulusLen - (2 + OAEP_SALT_LEN +- + OAEP_PAD_LEN))); +- +- result->data = rsa_FormatOneBlock(modulusLen, blockType, data); +- if (result->data == NULL) { +- result->len = 0; +- return SECFailure; +- } +- result->len = modulusLen; +- +- break; +- + case RSA_BlockRaw: + /* + * Pad || ActualData +-- +1.7.1 + From 113b15f3a8ebe9dd7bf613812ab0065df4ae22a8 Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 1 Mar 2013 10:03:34 +0100 Subject: [PATCH 097/407] virtualbox: Update tarball sha256sum of v4.2.8. Outrageous! They fixed the tarball by including the missing file. Well, at least we now don't have that much cruft laying around and can remove that rather long patch. Signed-off-by: aszlig --- .../virtualization/virtualbox/default.nix | 3 +- .../virtualbox/missing_files_4.2.8.patch | 993 ------------------ 2 files changed, 1 insertion(+), 995 deletions(-) delete mode 100644 pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index 62a4b16070d..bf19ecd99ca 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -44,7 +44,7 @@ in stdenv.mkDerivation { src = fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"; - sha256 = "bc9185e0c300d61e2a6c8ac48b4bea6a0a456c9ba11d1fbadf2d1e6ca063f2b4"; + sha256 = "f336af12244db74e6564dc22e438bbcba70f994aaf0d117fdf70caca9fab1b78"; }; buildInputs = @@ -55,7 +55,6 @@ in stdenv.mkDerivation { ++ optional pythonBindings python; patches = [ - ./missing_files_4.2.8.patch ./strict_types.patch ./build_fix_3.9.0.patch ]; diff --git a/pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch b/pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch deleted file mode 100644 index 6cb1560dd69..00000000000 --- a/pkgs/applications/virtualization/virtualbox/missing_files_4.2.8.patch +++ /dev/null @@ -1,993 +0,0 @@ -Index: VRDEVideoIn.h -=================================================================== -diff --git a/include/VBox/RemoteDesktop/VRDEVideoIn.h b/include/VBox/RemoteDesktop/VRDEVideoIn.h -new file mode 10644 ---- /dev/null (revision 0) -+++ b/include/VBox/RemoteDesktop/VRDEVideoIn.h (revision 44528) -@@ -0,0 +1,986 @@ -+/** @file -+ * VBox Remote Desktop Extension (VRDE) - Video Input interface. -+ */ -+ -+/* -+ * Copyright (C) 2012-2013 Oracle Corporation -+ * -+ * This file is part of VirtualBox Open Source Edition (OSE), as -+ * available from http://www.virtualbox.org. This file is free software; -+ * you can redistribute it and/or modify it under the terms of the GNU -+ * General Public License (GPL) as published by the Free Software -+ * Foundation, in version 2 as it comes in the "COPYING" file of the -+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the -+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. -+ * -+ * The contents of this file may alternatively be used under the terms -+ * of the Common Development and Distribution License Version 1.0 -+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the -+ * VirtualBox OSE distribution, in which case the provisions of the -+ * CDDL are applicable instead of those of the GPL. -+ * -+ * You may elect to license modified versions of this file under the -+ * terms and conditions of either the GPL or the CDDL or both. -+ */ -+ -+#ifndef ___VBox_RemoteDesktop_VRDEVideoIn_h -+#define ___VBox_RemoteDesktop_VRDEVideoIn_h -+ -+ -+/* Define VRDE_VIDEOIN_WITH_VRDEINTERFACE to include the server VRDE interface parts. */ -+ -+#ifdef VRDE_VIDEOIN_WITH_VRDEINTERFACE -+#include -+#endif /* VRDE_VIDEOIN_WITH_VRDEINTERFACE */ -+ -+#ifdef AssertCompileSize -+#define ASSERTSIZE(type, size) AssertCompileSize(type, size); -+#else -+#define ASSERTSIZE(type, size) -+#endif /* AssertCompileSize */ -+ -+ -+/* -+ * Interface for accessing a video camera device on the client. -+ * -+ * Async callbacks are used for providing feedback, reporting errors, etc. -+ * -+ * Initial version supports: Camera + Processing Unit + Streaming Control. -+ * -+ * There are 2 modes: -+ * 1) The virtual WebCam is already attached to the guest. -+ * 2) The virtual WebCam will be attached when the client has it. -+ * -+ * Initially the mode 1 is supported. -+ * -+ * Mode 1 details: -+ * The WebCam has some fixed functionality, according to the descriptors, -+ * which has been already read by the guest. So some of functions will -+ * not work if the client does not support them. -+ * -+ * Mode 2 details: -+ * Virtual WebCam descriptors are built from the client capabilities. -+ * -+ * Similarly to the smartcard, the server will inform the ConsoleVRDE that there is a WebCam. -+ * ConsoleVRDE creates a VRDEVIDEOIN handle and forwards virtual WebCam requests to it. -+ * -+ * Interface with VBox. -+ * -+ * Virtual WebCam ConsoleVRDE VRDE -+ * -+ * Negotiate <-> -+ * <- VideoInDeviceNotify(Attached, DeviceId) -+ * -> GetDeviceDesc -+ * <- DeviceDesc -+ * 2 <- CreateCamera -+ * 2 CameraCreated -> -+ * -+ * CameraRequest -> Request -> -+ * Response <- <- Response <- Response -+ * Frame <- <- Frame <- Frame -+ * <- VideoInDeviceNotify(Detached, DeviceId) -+ * -+ * Unsupported requests fail. -+ * The Device Description received from the client may be used to validate WebCam requests -+ * in the ConsoleVRDE code, for example filter out unsupported requests. -+ * -+ */ -+ -+/* All structures in this file are packed. -+ * Everything is little-endian. -+ */ -+#pragma pack(1) -+ -+/* -+ * The interface supports generic video input descriptors, capabilities and controls: -+ * * Descriptors -+ * + Interface -+ * - Input, Camera Terminal -+ * - Processing Unit -+ * + Video Streaming -+ * - Input Header -+ * - Payload Format -+ * - Video Frame -+ * - Still Image Frame -+ * * Video Control requests -+ * + Interface -+ * - Power Mode -+ * + Unit and Terminal -+ * camera -+ * - Scanning Mode (interlaced, progressive) -+ * - Auto-Exposure Mode -+ * - Auto-Exposure Priority -+ * - Exposure Time Absolute, Relative -+ * - Focus Absolute, Relative, Auto -+ * - Iris Absolute, Relative -+ * - Zoom Absolute, Relative -+ * - PanTilt Absolute, Relative -+ * - Roll Absolute, Relative -+ * - Privacy -+ * processing -+ * - Backlight Compensation -+ * - Brightness -+ * - Contrast -+ * - Gain -+ * - Power Line Frequency -+ * - Hue Manual, Auto -+ * - Saturation -+ * - Sharpness -+ * - Gamma -+ * - White Balance Temperature Manual, Auto -+ * - White Balance Component Manual, Auto -+ * - Digital Multiplier -+ * - Digital Multiplier Limit -+ * * Video Streaming requests -+ * + Interface -+ * - Synch Delay -+ * - Still Image Trigger -+ * - Generate Key Frame -+ * - Update Frame Segment -+ * - Stream Error Code -+ * -+ * -+ * Notes: -+ * * still capture uses a method similar to method 2, because the still frame will -+ * be send instead of video over the channel. -+ * Also the method 2 can be in principle emulated by both 1 and 3 on the client. -+ * However the client can initiate a still frame transfer, similar to hardware button trigger. -+ * * all control changes are async. -+ * * probe/commit are not used. The server can select a supported format/frame from the list. -+ * * no color matching. sRGB is the default. -+ * * most of constants are the same as in USB Video Class spec, but they are not the same and -+ * should be always converted. -+ */ -+ -+/* -+ * The DEVICEDEC describes the device and provides a list of supported formats: -+ * VRDEVIDEOINDEVICEDESC -+ * VRDEVIDEOINFORMATDESC[0]; -+ * VRDEVIDEOINFRAMEDESC[0..N-1] -+ * VRDEVIDEOINFORMATDESC[1]; -+ * VRDEVIDEOINFRAMEDESC[0..M-1] -+ * ... -+ */ -+ -+typedef struct VRDEVIDEOINDEVICEDESC -+{ -+ uint16_t u16ObjectiveFocalLengthMin; -+ uint16_t u16ObjectiveFocalLengthMax; -+ uint16_t u16OcularFocalLength; -+ uint16_t u16MaxMultiplier; -+ uint32_t fu32CameraControls; /* VRDE_VIDEOIN_F_CT_CTRL_* */ -+ uint32_t fu32ProcessingControls; /* VRDE_VIDEOIN_F_PU_CTRL_* */ -+ uint8_t fu8DeviceCaps; /* VRDE_VIDEOIN_F_DEV_CAP_* */ -+ uint8_t u8NumFormats; /* Number of following VRDEVIDEOINFORMATDESC structures. */ -+ uint16_t cbExt; /* Size of the optional extended description. */ -+ /* An extended description may follow. */ -+ /* An array of VRDEVIDEOINFORMATDESC follows. */ -+} VRDEVIDEOINDEVICEDESC; -+ -+/* VRDEVIDEOINDEVICEDESC::fu32CameraControls */ -+#define VRDE_VIDEOIN_F_CT_CTRL_SCANNING_MODE 0x00000001 /* D0: Scanning Mode */ -+#define VRDE_VIDEOIN_F_CT_CTRL_AE_MODE 0x00000002 /* D1: Auto-Exposure Mode */ -+#define VRDE_VIDEOIN_F_CT_CTRL_AE_PRIORITY 0x00000004 /* D2: Auto-Exposure Priority */ -+#define VRDE_VIDEOIN_F_CT_CTRL_EXPOSURE_TIME_ABSOLUTE 0x00000008 /* D3: Exposure Time (Absolute) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_EXPOSURE_TIME_RELATIVE 0x00000010 /* D4: Exposure Time (Relative) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_FOCUS_ABSOLUTE 0x00000020 /* D5: Focus (Absolute) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_FOCUS_RELATIVE 0x00000040 /* D6: Focus (Relative) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_IRIS_ABSOLUTE 0x00000080 /* D7: Iris (Absolute) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_IRIS_RELATIVE 0x00000100 /* D8: Iris (Relative) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_ZOOM_ABSOLUTE 0x00000200 /* D9: Zoom (Absolute) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_ZOOM_RELATIVE 0x00000400 /* D10: Zoom (Relative) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_PANTILT_ABSOLUTE 0x00000800 /* D11: PanTilt (Absolute) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_PANTILT_RELATIVE 0x00001000 /* D12: PanTilt (Relative) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_ROLL_ABSOLUTE 0x00002000 /* D13: Roll (Absolute) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_ROLL_RELATIVE 0x00004000 /* D14: Roll (Relative) */ -+#define VRDE_VIDEOIN_F_CT_CTRL_RESERVED1 0x00008000 /* D15: Reserved */ -+#define VRDE_VIDEOIN_F_CT_CTRL_RESERVED2 0x00010000 /* D16: Reserved */ -+#define VRDE_VIDEOIN_F_CT_CTRL_FOCUS_AUTO 0x00020000 /* D17: Focus, Auto */ -+#define VRDE_VIDEOIN_F_CT_CTRL_PRIVACY 0x00040000 /* D18: Privacy */ -+ -+/* VRDEVIDEOINDEVICEDESC::fu32ProcessingControls */ -+#define VRDE_VIDEOIN_F_PU_CTRL_BRIGHTNESS 0x00000001 /* D0: Brightness */ -+#define VRDE_VIDEOIN_F_PU_CTRL_CONTRAST 0x00000002 /* D1: Contrast */ -+#define VRDE_VIDEOIN_F_PU_CTRL_HUE 0x00000004 /* D2: Hue */ -+#define VRDE_VIDEOIN_F_PU_CTRL_SATURATION 0x00000008 /* D3: Saturation */ -+#define VRDE_VIDEOIN_F_PU_CTRL_SHARPNESS 0x00000010 /* D4: Sharpness */ -+#define VRDE_VIDEOIN_F_PU_CTRL_GAMMA 0x00000020 /* D5: Gamma */ -+#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_TEMPERATURE 0x00000040 /* D6: White Balance Temperature */ -+#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_COMPONENT 0x00000080 /* D7: White Balance Component */ -+#define VRDE_VIDEOIN_F_PU_CTRL_BACKLIGHT_COMPENSATION 0x00000100 /* D8: Backlight Compensation */ -+#define VRDE_VIDEOIN_F_PU_CTRL_GAIN 0x00000200 /* D9: Gain */ -+#define VRDE_VIDEOIN_F_PU_CTRL_POWER_LINE_FREQUENCY 0x00000400 /* D10: Power Line Frequency */ -+#define VRDE_VIDEOIN_F_PU_CTRL_HUE_AUTO 0x00000800 /* D11: Hue, Auto */ -+#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_TEMPERATURE_AUTO 0x00001000 /* D12: White Balance Temperature, Auto */ -+#define VRDE_VIDEOIN_F_PU_CTRL_WHITE_BALANCE_COMPONENT_AUTO 0x00002000 /* D13: White Balance Component, Auto */ -+#define VRDE_VIDEOIN_F_PU_CTRL_DIGITAL_MULTIPLIER 0x00004000 /* D14: Digital Multiplier */ -+#define VRDE_VIDEOIN_F_PU_CTRL_DIGITAL_MULTIPLIER_LIMIT 0x00008000 /* D15: Digital Multiplier Limit */ -+ -+/* VRDEVIDEOINDEVICEDESC::fu8DeviceCaps */ -+#define VRDE_VIDEOIN_F_DEV_CAP_DYNAMICCHANGE 0x01 /* Whether dynamic format change is supported. */ -+#define VRDE_VIDEOIN_F_DEV_CAP_TRIGGER 0x02 /* Whether hardware triggering is supported. */ -+#define VRDE_VIDEOIN_F_DEV_CAP_TRIGGER_USAGE 0x04 /* 0 - still image, 1 - generic button event.*/ -+ -+/* The video format descriptor. */ -+typedef struct VRDEVIDEOINFORMATDESC -+{ -+ uint16_t cbFormat; /* Size of the structure including cbFormat and format specific data. */ -+ uint8_t u8FormatId; /* The unique identifier of the format on the client. */ -+ uint8_t u8FormatType; /* MJPEG etc. VRDE_VIDEOIN_FORMAT_* */ -+ uint8_t u8FormatFlags; /* VRDE_VIDEOIN_F_FMT_* */ -+ uint8_t u8NumFrames; /* Number of following VRDEVIDEOINFRAMEDESC structures. */ -+ uint16_t u16Reserved; /* Must be set to 0. */ -+ /* Other format specific data may follow. */ -+ /* An array of VRDEVIDEOINFRAMEDESC follows. */ -+} VRDEVIDEOINFORMATDESC; -+ -+/* VRDEVIDEOINFORMATDESC::u8FormatType */ -+#define VRDE_VIDEOIN_FORMAT_UNCOMPRESSED 0x04 -+#define VRDE_VIDEOIN_FORMAT_MJPEG 0x06 -+#define VRDE_VIDEOIN_FORMAT_MPEG2TS 0x0A -+#define VRDE_VIDEOIN_FORMAT_DV 0x0C -+#define VRDE_VIDEOIN_FORMAT_FRAME_BASED 0x10 -+#define VRDE_VIDEOIN_FORMAT_STREAM_BASED 0x12 -+ -+/* VRDEVIDEOINFORMATDESC::u8FormatFlags. */ -+#define VRDE_VIDEOIN_F_FMT_GENERATEKEYFRAME 0x01 /* Supports Generate Key Frame */ -+#define VRDE_VIDEOIN_F_FMT_UPDATEFRAMESEGMENT 0x02 /* Supports Update Frame Segment */ -+#define VRDE_VIDEOIN_F_FMT_COPYPROTECT 0x04 /* If duplication should be restricted. */ -+#define VRDE_VIDEOIN_F_FMT_COMPQUALITY 0x08 /* If the format supports an adjustable compression quality. */ -+ -+typedef struct VRDEVIDEOINFRAMEDESC -+{ -+ uint16_t cbFrame; /* Size of the structure including cbFrame and frame specific data. */ -+ uint8_t u8FrameId; /* The unique identifier of the frame for the corresponding format on the client. */ -+ uint8_t u8FrameFlags; -+ uint16_t u16Width; -+ uint16_t u16Height; -+ uint32_t u32NumFrameIntervals; /* The number of supported frame intervals. */ -+ uint32_t u32MinFrameInterval; /* Shortest frame interval supported (at highest frame rate), in 100ns units. */ -+ uint32_t u32MaxFrameInterval; /* Longest frame interval supported (at lowest frame rate), in 100ns units. */ -+ /* Supported frame intervals (in 100ns units) follow if VRDE_VIDEOIN_F_FRM_DISCRETE_INTERVALS is set. -+ * uint32_t au32FrameIntervals[u32NumFrameIntervals]; -+ */ -+ /* Other frame specific data may follow. */ -+} VRDEVIDEOINFRAMEDESC; -+ -+/* VRDEVIDEOINFRAMEDESC::u8FrameFlags. */ -+#define VRDE_VIDEOIN_F_FRM_STILL 0x01 /* If still images are supported for this frame. */ -+#define VRDE_VIDEOIN_F_FRM_DISCRETE_INTERVALS 0x02 /* If the discrete intervals list is included. */ -+ -+/* -+ * Controls. -+ * -+ * The same structures are used for both SET and GET requests. -+ * Requests are async. A callback is invoked, when the client returns a reply. -+ * A control change notification also uses these structures. -+ * -+ * If a control request can not be fulfilled, then VRDE_VIDEOIN_CTRLHDR_F_FAIL -+ * will be set and u8Status contains the error code. This replaces the VC_REQUEST_ERROR_CODE_CONTROL. -+ */ -+ -+typedef struct VRDEVIDEOINCTRLHDR -+{ -+ uint16_t u16ControlSelector; /* VRDE_VIDEOIN_CTRLSEL_* */ -+ uint16_t u16RequestType; /* VRDE_VIDEOIN_CTRLREQ_* */ -+ uint16_t u16ParmSize; /* The size of the control specific parameters. */ -+ uint8_t u8Flags; /* VRDE_VIDEOIN_CTRLHDR_F_* */ -+ uint8_t u8Status; /* VRDE_VIDEOIN_CTRLHDR_STATUS_* */ -+ /* Control specific data follows. */ -+} VRDEVIDEOINCTRLHDR; -+ -+/* Control request types: VRDEVIDEOINCTRLHDR::u16RequestType. */ -+#define VRDE_VIDEOIN_CTRLREQ_UNDEFINED 0x00 -+#define VRDE_VIDEOIN_CTRLREQ_SET_CUR 0x01 -+#define VRDE_VIDEOIN_CTRLREQ_GET_CUR 0x81 -+#define VRDE_VIDEOIN_CTRLREQ_GET_MIN 0x82 -+#define VRDE_VIDEOIN_CTRLREQ_GET_MAX 0x83 -+#define VRDE_VIDEOIN_CTRLREQ_GET_RES 0x84 -+#define VRDE_VIDEOIN_CTRLREQ_GET_LEN 0x85 -+#define VRDE_VIDEOIN_CTRLREQ_GET_INFO 0x86 -+#define VRDE_VIDEOIN_CTRLREQ_GET_DEF 0x87 -+ -+/* VRDEVIDEOINCTRLHDR::u8Flags */ -+#define VRDE_VIDEOIN_CTRLHDR_F_NOTIFY 0x01 /* Control change notification, the attribute is derived from u16RequestType and F_FAIL. */ -+#define VRDE_VIDEOIN_CTRLHDR_F_FAIL 0x02 /* The operation failed. Error code is in u8Status. */ -+ -+/* VRDEVIDEOINCTRLHDR::u8Status if the VRDE_VIDEOIN_CTRLHDR_F_FAIL is set. */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_SUCCESS 0x00 /**/ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_NOTREADY 0x01 /* Not ready */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_WRONGSTATE 0x02 /* Wrong state */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_POWER 0x03 /* Power */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_OUTOFRANGE 0x04 /* Out of range */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_INVALIDUNIT 0x05 /* Invalid unit */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_INVALIDCONTROL 0x06 /* Invalid control */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_INVALIDREQUEST 0x07 /* Invalid Request */ -+#define VRDE_VIDEOIN_CTRLHDR_STATUS_UNKNOWN 0xFF /* Unknown */ -+ -+/* Control selectors. 16 bit. High byte is the category. Low byte is the identifier.*/ -+#ifdef RT_MAKE_U16 -+#define VRDE_VIDEOIN_CTRLSEL_MAKE(Lo, Hi) RT_MAKE_U16(Lo, Hi) -+#else -+#define VRDE_VIDEOIN_CTRLSEL_MAKE(Lo, Hi) ((uint16_t)( (uint16_t)((uint8_t)(Hi)) << 8 | (uint8_t)(Lo) )) -+#endif -+ -+#define VRDE_VIDEOIN_CTRLSEL_VC(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x01) -+#define VRDE_VIDEOIN_CTRLSEL_CT(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x02) -+#define VRDE_VIDEOIN_CTRLSEL_PU(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x03) -+#define VRDE_VIDEOIN_CTRLSEL_VS(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x04) -+#define VRDE_VIDEOIN_CTRLSEL_HW(a) VRDE_VIDEOIN_CTRLSEL_MAKE(a, 0x05) -+ -+#define VRDE_VIDEOIN_CTRLSEL_VC_VIDEO_POWER_MODE_CONTROL VRDE_VIDEOIN_CTRLSEL_VC(0x01) -+ -+#define VRDE_VIDEOIN_CTRLSEL_CT_UNDEFINED VRDE_VIDEOIN_CTRLSEL_CT(0x00) -+#define VRDE_VIDEOIN_CTRLSEL_CT_SCANNING_MODE VRDE_VIDEOIN_CTRLSEL_CT(0x01) -+#define VRDE_VIDEOIN_CTRLSEL_CT_AE_MODE VRDE_VIDEOIN_CTRLSEL_CT(0x02) -+#define VRDE_VIDEOIN_CTRLSEL_CT_AE_PRIORITY VRDE_VIDEOIN_CTRLSEL_CT(0x03) -+#define VRDE_VIDEOIN_CTRLSEL_CT_EXPOSURE_TIME_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x04) -+#define VRDE_VIDEOIN_CTRLSEL_CT_EXPOSURE_TIME_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x05) -+#define VRDE_VIDEOIN_CTRLSEL_CT_FOCUS_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x06) -+#define VRDE_VIDEOIN_CTRLSEL_CT_FOCUS_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x07) -+#define VRDE_VIDEOIN_CTRLSEL_CT_FOCUS_AUTO VRDE_VIDEOIN_CTRLSEL_CT(0x08) -+#define VRDE_VIDEOIN_CTRLSEL_CT_IRIS_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x09) -+#define VRDE_VIDEOIN_CTRLSEL_CT_IRIS_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x0A) -+#define VRDE_VIDEOIN_CTRLSEL_CT_ZOOM_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x0B) -+#define VRDE_VIDEOIN_CTRLSEL_CT_ZOOM_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x0C) -+#define VRDE_VIDEOIN_CTRLSEL_CT_PANTILT_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x0D) -+#define VRDE_VIDEOIN_CTRLSEL_CT_PANTILT_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x0E) -+#define VRDE_VIDEOIN_CTRLSEL_CT_ROLL_ABSOLUTE VRDE_VIDEOIN_CTRLSEL_CT(0x0F) -+#define VRDE_VIDEOIN_CTRLSEL_CT_ROLL_RELATIVE VRDE_VIDEOIN_CTRLSEL_CT(0x10) -+#define VRDE_VIDEOIN_CTRLSEL_CT_PRIVACY VRDE_VIDEOIN_CTRLSEL_CT(0x11) -+ -+#define VRDE_VIDEOIN_CTRLSEL_PU_UNDEFINED VRDE_VIDEOIN_CTRLSEL_PU(0x00) -+#define VRDE_VIDEOIN_CTRLSEL_PU_BACKLIGHT_COMPENSATION VRDE_VIDEOIN_CTRLSEL_PU(0x01) -+#define VRDE_VIDEOIN_CTRLSEL_PU_BRIGHTNESS VRDE_VIDEOIN_CTRLSEL_PU(0x02) -+#define VRDE_VIDEOIN_CTRLSEL_PU_CONTRAST VRDE_VIDEOIN_CTRLSEL_PU(0x03) -+#define VRDE_VIDEOIN_CTRLSEL_PU_GAIN VRDE_VIDEOIN_CTRLSEL_PU(0x04) -+#define VRDE_VIDEOIN_CTRLSEL_PU_POWER_LINE_FREQUENCY VRDE_VIDEOIN_CTRLSEL_PU(0x05) -+#define VRDE_VIDEOIN_CTRLSEL_PU_HUE VRDE_VIDEOIN_CTRLSEL_PU(0x06) -+#define VRDE_VIDEOIN_CTRLSEL_PU_SATURATION VRDE_VIDEOIN_CTRLSEL_PU(0x07) -+#define VRDE_VIDEOIN_CTRLSEL_PU_SHARPNESS VRDE_VIDEOIN_CTRLSEL_PU(0x08) -+#define VRDE_VIDEOIN_CTRLSEL_PU_GAMMA VRDE_VIDEOIN_CTRLSEL_PU(0x09) -+#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_TEMPERATURE VRDE_VIDEOIN_CTRLSEL_PU(0x0A) -+#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_TEMPERATURE_AUTO VRDE_VIDEOIN_CTRLSEL_PU(0x0B) -+#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_COMPONENT VRDE_VIDEOIN_CTRLSEL_PU(0x0C) -+#define VRDE_VIDEOIN_CTRLSEL_PU_WHITE_BALANCE_COMPONENT_AUTO VRDE_VIDEOIN_CTRLSEL_PU(0x0D) -+#define VRDE_VIDEOIN_CTRLSEL_PU_DIGITAL_MULTIPLIER VRDE_VIDEOIN_CTRLSEL_PU(0x0E) -+#define VRDE_VIDEOIN_CTRLSEL_PU_DIGITAL_MULTIPLIER_LIMIT VRDE_VIDEOIN_CTRLSEL_PU(0x0F) -+#define VRDE_VIDEOIN_CTRLSEL_PU_HUE_AUTO VRDE_VIDEOIN_CTRLSEL_PU(0x10) -+#define VRDE_VIDEOIN_CTRLSEL_PU_ANALOG_VIDEO_STANDARD VRDE_VIDEOIN_CTRLSEL_PU(0x11) -+#define VRDE_VIDEOIN_CTRLSEL_PU_ANALOG_LOCK_STATUS VRDE_VIDEOIN_CTRLSEL_PU(0x12) -+ -+#define VRDE_VIDEOIN_CTRLSEL_VS_UNDEFINED VRDE_VIDEOIN_CTRLSEL_VS(0x00) -+#define VRDE_VIDEOIN_CTRLSEL_VS_START VRDE_VIDEOIN_CTRLSEL_VS(0x01) -+#define VRDE_VIDEOIN_CTRLSEL_VS_STOP VRDE_VIDEOIN_CTRLSEL_VS(0x02) -+#define VRDE_VIDEOIN_CTRLSEL_VS_STILL_IMAGE_TRIGGER VRDE_VIDEOIN_CTRLSEL_VS(0x05) -+#define VRDE_VIDEOIN_CTRLSEL_VS_STREAM_ERROR_CODE VRDE_VIDEOIN_CTRLSEL_VS(0x06) -+#define VRDE_VIDEOIN_CTRLSEL_VS_GENERATE_KEY_FRAME VRDE_VIDEOIN_CTRLSEL_VS(0x07) -+#define VRDE_VIDEOIN_CTRLSEL_VS_UPDATE_FRAME_SEGMENT VRDE_VIDEOIN_CTRLSEL_VS(0x08) -+#define VRDE_VIDEOIN_CTRLSEL_VS_SYNCH_DELAY VRDE_VIDEOIN_CTRLSEL_VS(0x09) -+ -+#define VRDE_VIDEOIN_CTRLSEL_HW_BUTTON VRDE_VIDEOIN_CTRLSEL_HW(0x01) -+ -+typedef struct VRDEVIDEOINCTRL_VIDEO_POWER_MODE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8DevicePowerMode; -+} VRDEVIDEOINCTRL_VIDEO_POWER_MODE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_SCANNING_MODE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8ScanningMode; -+} VRDEVIDEOINCTRL_CT_SCANNING_MODE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_AE_MODE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8AutoExposureMode; -+} VRDEVIDEOINCTRL_CT_AE_MODE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_AE_PRIORITY -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8AutoExposurePriority; -+} VRDEVIDEOINCTRL_CT_AE_PRIORITY; -+ -+typedef struct VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_ABSOLUTE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint32_t u32ExposureTimeAbsolute; -+} VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_ABSOLUTE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_RELATIVE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8ExposureTimeRelative; -+} VRDEVIDEOINCTRL_CT_EXPOSURE_TIME_RELATIVE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_FOCUS_ABSOLUTE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16FocusAbsolute; -+} VRDEVIDEOINCTRL_CT_FOCUS_ABSOLUTE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_FOCUS_RELATIVE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8FocusRelative; -+ uint8_t u8Speed; -+} VRDEVIDEOINCTRL_CT_FOCUS_RELATIVE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_FOCUS_AUTO -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8FocusAuto; -+} VRDEVIDEOINCTRL_CT_FOCUS_AUTO; -+ -+typedef struct VRDEVIDEOINCTRL_CT_IRIS_ABSOLUTE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16IrisAbsolute; -+} VRDEVIDEOINCTRL_CT_IRIS_ABSOLUTE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_IRIS_RELATIVE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8IrisRelative; -+} VRDEVIDEOINCTRL_CT_IRIS_RELATIVE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_ZOOM_ABSOLUTE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16ZoomAbsolute; -+} VRDEVIDEOINCTRL_CT_ZOOM_ABSOLUTE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_ZOOM_RELATIVE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8Zoom; -+ uint8_t u8DigitalZoom; -+ uint8_t u8Speed; -+} VRDEVIDEOINCTRL_CT_ZOOM_RELATIVE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_PANTILT_ABSOLUTE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint32_t u32PanAbsolute; -+ uint32_t u32TiltAbsolute; -+} VRDEVIDEOINCTRL_CT_PANTILT_ABSOLUTE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_PANTILT_RELATIVE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8PanRelative; -+ uint8_t u8PanSpeed; -+ uint8_t u8TiltRelative; -+ uint8_t u8TiltSpeed; -+} VRDEVIDEOINCTRL_CT_PANTILT_RELATIVE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_ROLL_ABSOLUTE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16RollAbsolute; -+} VRDEVIDEOINCTRL_CT_ROLL_ABSOLUTE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_ROLL_RELATIVE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8RollRelative; -+ uint8_t u8Speed; -+} VRDEVIDEOINCTRL_CT_ROLL_RELATIVE; -+ -+typedef struct VRDEVIDEOINCTRL_CT_PRIVACY_MODE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8Privacy; -+} VRDEVIDEOINCTRL_CT_PRIVACY_MODE; -+ -+typedef struct VRDEVIDEOINCTRL_PU_BACKLIGHT_COMPENSATION -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16BacklightCompensation; -+} VRDEVIDEOINCTRL_PU_BACKLIGHT_COMPENSATION; -+ -+typedef struct VRDEVIDEOINCTRL_PU_BRIGHTNESS -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Brightness; -+} VRDEVIDEOINCTRL_PU_BRIGHTNESS; -+ -+typedef struct VRDEVIDEOINCTRL_PU_CONTRAST -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Contrast; -+} VRDEVIDEOINCTRL_PU_CONTRAST; -+ -+typedef struct VRDEVIDEOINCTRL_PU_GAIN -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Gain; -+} VRDEVIDEOINCTRL_PU_GAIN; -+ -+typedef struct VRDEVIDEOINCTRL_PU_POWER_LINE_FREQUENCY -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16PowerLineFrequency; -+} VRDEVIDEOINCTRL_PU_POWER_LINE_FREQUENCY; -+ -+typedef struct VRDEVIDEOINCTRL_PU_HUE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Hue; -+} VRDEVIDEOINCTRL_PU_HUE; -+ -+typedef struct VRDEVIDEOINCTRL_PU_HUE_AUTO -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8HueAuto; -+} VRDEVIDEOINCTRL_PU_HUE_AUTO; -+ -+typedef struct VRDEVIDEOINCTRL_PU_SATURATION -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Saturation; -+} VRDEVIDEOINCTRL_PU_SATURATION; -+ -+typedef struct VRDEVIDEOINCTRL_PU_SHARPNESS -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Sharpness; -+} VRDEVIDEOINCTRL_PU_SHARPNESS; -+ -+typedef struct VRDEVIDEOINCTRL_PU_GAMMA -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Gamma; -+} VRDEVIDEOINCTRL_PU_GAMMA; -+ -+typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16WhiteBalanceTemperature; -+} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE; -+ -+typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE_AUTO -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8WhiteBalanceTemperatureAuto; -+} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_TEMPERATURE_AUTO; -+ -+typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16WhiteBalanceBlue; -+ uint16_t u16WhiteBalanceRed; -+} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT; -+ -+typedef struct VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT_AUTO -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8WhiteBalanceComponentAuto; -+} VRDEVIDEOINCTRL_PU_WHITE_BALANCE_COMPONENT_AUTO; -+ -+typedef struct VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16MultiplierStep; -+} VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER; -+ -+typedef struct VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER_LIMIT -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16MultiplierLimit; -+} VRDEVIDEOINCTRL_PU_DIGITAL_MULTIPLIER_LIMIT; -+ -+typedef struct VRDEVIDEOINCTRL_PU_ANALOG_VIDEO_STANDARD -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8VideoStandard; -+} VRDEVIDEOINCTRL_PU_ANALOG_VIDEO_STANDARD; -+ -+typedef struct VRDEVIDEOINCTRL_PU_ANALOG_LOCK_STATUS -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8Status; -+} VRDEVIDEOINCTRL_PU_ANALOG_LOCK_STATUS; -+ -+/* Start sending video frames with this format. */ -+#define VRDEVIDEOINCTRL_F_VS_START_FID 0x01 -+#define VRDEVIDEOINCTRL_F_VS_START_EOF 0x02 -+ -+typedef struct VRDEVIDEOINCTRL_VS_START -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8FormatId; /* The format id on the client: VRDEVIDEOINFORMATDESC::u8FormatId. */ -+ uint8_t u8FramingInfo; /* VRDEVIDEOINCTRL_F_VS_START_*. Set by the client. */ -+ uint16_t u16Width; -+ uint16_t u16Height; -+ uint32_t u32FrameInterval; /* Frame interval in 100 ns units, 0 means a still image capture. -+ * The client may choose a different interval if this value is -+ * not supported. -+ */ -+ uint16_t u16CompQuality; /* 0 .. 10000 = 0 .. 100%. -+ * Applicable if the format has VRDE_VIDEOIN_F_FMT_COMPQUALITY, -+ * otherwise this field is ignored. -+ */ -+ uint16_t u16Delay; /* Latency in ms from video data capture to presentation on the channel. -+ * Set by the client, read by the server. -+ */ -+ uint32_t u32ClockFrequency; /* @todo just all clocks in 100ns units? */ -+} VRDEVIDEOINCTRL_VS_START; -+ -+/* Stop sending video frames. */ -+typedef struct VRDEVIDEOINCTRL_VS_STOP -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+} VRDEVIDEOINCTRL_VS_STOP; -+ -+typedef struct VRDEVIDEOINCTRL_VS_SYNCH_DELAY -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint16_t u16Delay; -+} VRDEVIDEOINCTRL_VS_SYNCH_DELAY; -+ -+typedef struct VRDEVIDEOINCTRL_VS_STILL_IMAGE_TRIGGER -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8Trigger; -+} VRDEVIDEOINCTRL_VS_STILL_IMAGE_TRIGGER; -+ -+typedef struct VRDEVIDEOINCTRL_VS_GENERATE_KEY_FRAME -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8GenerateKeyFrame; -+} VRDEVIDEOINCTRL_VS_GENERATE_KEY_FRAME; -+ -+typedef struct VRDEVIDEOINCTRL_VS_UPDATE_FRAME_SEGMENT -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8StartFrameSegment; -+ uint8_t u8EndFrameSegment; -+} VRDEVIDEOINCTRL_VS_UPDATE_FRAME_SEGMENT; -+ -+typedef struct VRDEVIDEOINCTRL_VS_STREAM_ERROR_CODE -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8StreamErrorCode; -+} VRDEVIDEOINCTRL_VS_STREAM_ERROR_CODE; -+ -+/* A hardware button was pressed/released on the device. */ -+typedef struct VRDEVIDEOINCTRL_HW_BUTTON -+{ -+ VRDEVIDEOINCTRLHDR hdr; -+ uint8_t u8Pressed; -+} VRDEVIDEOINCTRL_CT_HW_BUTTON; -+ -+/* -+ * Payload transfers. How frames are sent to the server: -+ * the client send a PAYLOAD packet, which has the already set format. -+ * The server enables the transfers by sending VRDEVIDEOINCTRL_VS_START. -+ */ -+ -+/* Payload header */ -+typedef struct VRDEVIDEOINPAYLOADHDR -+{ -+ uint8_t u8HeaderLength; /* Entire header. */ -+ uint8_t u8HeaderInfo; /* VRDE_VIDEOIN_PAYLOAD_F_* */ -+ uint32_t u32PresentationTime; /* @todo define this */ -+ uint32_t u32SourceTimeClock; /* @todo At the moment when the frame was sent to the channel. -+ * Allows the server to measure clock drift. -+ */ -+ uint16_t u16Reserved; /* @todo */ -+} VRDEVIDEOINPAYLOADHDR; -+ -+/* VRDEVIDEOINPAYLOADHDR::u8HeaderInfo */ -+#define VRDE_VIDEOIN_PAYLOAD_F_FID 0x01 /* Frame ID */ -+#define VRDE_VIDEOIN_PAYLOAD_F_EOF 0x02 /* End of Frame */ -+#define VRDE_VIDEOIN_PAYLOAD_F_PTS 0x04 /* Presentation Time */ -+#define VRDE_VIDEOIN_PAYLOAD_F_SCR 0x08 /* Source Clock Reference */ -+#define VRDE_VIDEOIN_PAYLOAD_F_RES 0x10 /* Reserved */ -+#define VRDE_VIDEOIN_PAYLOAD_F_STI 0x20 /* Still Image */ -+#define VRDE_VIDEOIN_PAYLOAD_F_ERR 0x40 /* Error */ -+#define VRDE_VIDEOIN_PAYLOAD_F_EOH 0x80 /* End of header */ -+ -+ -+/* -+ * The network channel specification. -+ */ -+ -+/* -+ * The protocol uses a dynamic RDP channel. -+ * Everything is little-endian. -+ */ -+ -+#define VRDE_VIDEOIN_CHANNEL "RVIDEOIN" -+ -+/* Major functions. */ -+#define VRDE_VIDEOIN_FN_NEGOTIATE 0x0000 /* Version and capabilities check. */ -+#define VRDE_VIDEOIN_FN_NOTIFY 0x0001 /* Device attach/detach from the client. */ -+#define VRDE_VIDEOIN_FN_DEVICEDESC 0x0002 /* Query device description. */ -+#define VRDE_VIDEOIN_FN_CONTROL 0x0003 /* Control the device and start/stop video input. */ -+#define VRDE_VIDEOIN_FN_CONTROL_NOTIFY 0x0004 /* The client reports a control change, etc. */ -+#define VRDE_VIDEOIN_FN_FRAME 0x0005 /* Frame from the client. */ -+ -+/* Status codes. */ -+#define VRDE_VIDEOIN_STATUS_SUCCESS 0 /* Function completed successfully. */ -+#define VRDE_VIDEOIN_STATUS_FAILED 1 /* Failed for some reason. */ -+ -+typedef struct VRDEVIDEOINMSGHDR -+{ -+ uint32_t u32Length; /* The length of the message in bytes, including the header. */ -+ uint32_t u32DeviceId; /* The client's device id. */ -+ uint32_t u32MessageId; /* Unique id assigned by the server. The client must send a reply with the same id. -+ * If the client initiates a request, then this must be set to 0, because there is -+ * currently no client requests, which would require a response from the server. -+ */ -+ uint16_t u16FunctionId; /* VRDE_VIDEOIN_FN_* */ -+ uint16_t u16Status; /* The result of a request. VRDE_VIDEOIN_STATUS_*. */ -+} VRDEVIDEOINMSGHDR; -+ASSERTSIZE(VRDEVIDEOINMSGHDR, 16) -+ -+/* -+ * VRDE_VIDEOIN_FN_NEGOTIATE -+ * -+ * Sent by the server when the channel is established and the client replies with its capabilities. -+ */ -+#define VRDE_VIDEOIN_NEGOTIATE_VERSION 1 -+ -+#define VRDE_VIDEOIN_NEGOTIATE_CAP_VOID 0 -+ -+typedef struct VRDEVIDEOINMSG_NEGOTIATE -+{ -+ VRDEVIDEOINMSGHDR hdr; -+ uint32_t u32Version; /* VRDE_VIDEOIN_NEGOTIATE_VERSION */ -+ uint32_t fu32Capabilities; /* VRDE_VIDEOIN_NEGOTIATE_CAP_* */ -+} VRDEVIDEOINMSG_NEGOTIATE; -+ -+/* -+ * VRDE_VIDEOIN_FN_NOTIFY -+ * -+ * Sent by the client when a webcam is attached or detached. -+ * The client must send the ATTACH notification for each webcam, which is -+ * already connected to the client when the VIDEOIN channel is established. -+ */ -+#define VRDE_VIDEOIN_NOTIFY_ATTACH 0 -+#define VRDE_VIDEOIN_NOTIFY_DETACH 1 -+ -+typedef struct VRDEVIDEOINMSG_NOTIFY -+{ -+ VRDEVIDEOINMSGHDR hdr; -+ uint32_t u32NotifyEvent; /* VRDE_VIDEOIN_NOTIFY_* */ -+ /* Event specific data may follow. The underlying protocol provides the length of the message. */ -+} VRDEVIDEOINMSG_NOTIFY; -+ -+/* -+ * VRDE_VIDEOIN_FN_DEVICEDESC -+ * -+ * The server queries the description of a device. -+ */ -+typedef struct VRDEVIDEOINMSG_DEVICEDESC_REQ -+{ -+ VRDEVIDEOINMSGHDR hdr; -+} VRDEVIDEOINMSG_DEVICEDESC_REQ; -+ -+typedef struct VRDEVIDEOINMSG_DEVICEDESC_RSP -+{ -+ VRDEVIDEOINMSGHDR hdr; -+ VRDEVIDEOINDEVICEDESC Device; -+ /* -+ * VRDEVIDEOINFORMATDESC[0] -+ * VRDEVIDEOINFRAMEDESC[0] -+ * ... -+ * VRDEVIDEOINFRAMEDESC[n] -+ * VRDEVIDEOINFORMATDESC[1] -+ * VRDEVIDEOINFRAMEDESC[0] -+ * ... -+ * VRDEVIDEOINFRAMEDESC[m] -+ * ... -+ */ -+} VRDEVIDEOINMSG_DEVICEDESC_RSP; -+ -+/* -+ * VRDE_VIDEOIN_FN_CONTROL -+ * VRDE_VIDEOIN_FN_CONTROL_NOTIFY -+ * -+ * Either sent by the server or by the client as a notification/response. -+ * If sent by the client as a notification, then hdr.u32MessageId must be 0. -+ */ -+typedef struct VRDEVIDEOINMSG_CONTROL -+{ -+ VRDEVIDEOINMSGHDR hdr; -+ VRDEVIDEOINCTRLHDR Control; -+ /* Control specific data may follow. */ -+} VRDEVIDEOINMSG_CONTROL; -+ -+/* -+ * VRDE_VIDEOIN_FN_FRAME -+ * -+ * The client sends a video/still frame in the already specified format. -+ * hdr.u32MessageId must be 0. -+ */ -+typedef struct VRDEVIDEOINMSG_FRAME -+{ -+ VRDEVIDEOINMSGHDR hdr; -+ VRDEVIDEOINPAYLOADHDR Payload; -+ /* The frame data follow. */ -+} VRDEVIDEOINMSG_FRAME; -+ -+ -+#ifdef VRDE_VIDEOIN_WITH_VRDEINTERFACE -+/* -+ * The application interface between VirtualBox and the VRDE server. -+ */ -+ -+#define VRDE_VIDEOIN_INTERFACE_NAME "VIDEOIN" -+ -+typedef struct VRDEVIDEOINDEVICEHANDLE -+{ -+ uint32_t u32ClientId; -+ uint32_t u32DeviceId; -+} VRDEVIDEOINDEVICEHANDLE; -+ -+/* The VRDE server video input interface entry points. Interface version 1. */ -+typedef struct VRDEVIDEOININTERFACE -+{ -+ /* The header. */ -+ VRDEINTERFACEHDR header; -+ -+ /* Tell the server that this device will be used and associate a context with the device. -+ * -+ * @param hServer The VRDE server instance. -+ * @param pDeviceHandle The device reported by ATTACH notification. -+ * @param pvDeviceCtx The caller context associated with the pDeviceHandle. -+ * -+ * @return IPRT status code. -+ */ -+ DECLR3CALLBACKMEMBER(int, VRDEVideoInDeviceAttach, (HVRDESERVER hServer, -+ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle, -+ void *pvDeviceCtx)); -+ -+ /* This device will be not be used anymore. The device context must not be used by the server too. -+ * -+ * @param hServer The VRDE server instance. -+ * @param pDeviceHandle The device reported by ATTACH notification. -+ * -+ * @return IPRT status code. -+ */ -+ DECLR3CALLBACKMEMBER(int, VRDEVideoInDeviceDetach, (HVRDESERVER hServer, -+ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle)); -+ -+ /* Get a device description. -+ * -+ * @param hServer The VRDE server instance. -+ * @param pvUser The callers context of this request. -+ * @param pDeviceHandle The device reported by ATTACH notification. -+ * -+ * @return IPRT status code. -+ */ -+ DECLR3CALLBACKMEMBER(int, VRDEVideoInGetDeviceDesc, (HVRDESERVER hServer, -+ void *pvUser, -+ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle)); -+ -+ /* Submit a set/get control request. -+ * -+ * @param hServer The VRDE server instance. -+ * @param pvUser The callers context of this request. -+ * @param pDeviceHandle The device reported by ATTACH notification. -+ * @param pReq The request. -+ * @param cbReq Size of the request. -+ * -+ * @return IPRT status code. -+ */ -+ DECLR3CALLBACKMEMBER(int, VRDEVideoInControl, (HVRDESERVER hServer, -+ void *pvUser, -+ const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle, -+ const VRDEVIDEOINCTRLHDR *pReq, -+ uint32_t cbReq)); -+ -+} VRDEVIDEOININTERFACE; -+ -+ -+/* -+ * Notifications. -+ * Data structures: pvData of VRDEVIDEOINCALLBACKS::VRDECallbackVideoInNotify. -+ */ -+typedef struct VRDEVIDEOINNOTIFYATTACH -+{ -+ VRDEVIDEOINDEVICEHANDLE deviceHandle; -+} VRDEVIDEOINNOTIFYATTACH; -+ -+typedef struct VRDEVIDEOINNOTIFYDETACH -+{ -+ VRDEVIDEOINDEVICEHANDLE deviceHandle; -+} VRDEVIDEOINNOTIFYDETACH; -+ -+ -+/* Video input interface callbacks. */ -+typedef struct VRDEVIDEOINCALLBACKS -+{ -+ /** The header. */ -+ VRDEINTERFACEHDR header; -+ -+ /* Notifications. -+ * -+ * @param pvCallback The callbacks context specified in VRDEGetInterface. -+ * @param u32EventId The notification identifier: VRDE_VIDEOIN_NOTIFY_*. -+ * @param pvData The notification specific data. -+ * @param cbData The size of buffer pointed by pvData. -+ */ -+ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInNotify,(void *pvCallback, -+ uint32_t u32Id, -+ const void *pvData, -+ uint32_t cbData)); -+ -+ /* Device description received from the client. -+ * -+ * @param pvCallback The callbacks context specified in VRDEGetInterface. -+ * @param rcRequest The result code of the request. -+ * @param pDeviceCtx The device context associated with the device in VRDEVideoInGetDeviceDesc. -+ * @param pvUser The pvUser parameter of VRDEVideoInGetDeviceDesc. -+ * @param pDeviceDesc The device description. -+ * @param cbDeviceDesc The size of buffer pointed by pDevice. -+ */ -+ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInDeviceDesc,(void *pvCallback, -+ int rcRequest, -+ void *pDeviceCtx, -+ void *pvUser, -+ const VRDEVIDEOINDEVICEDESC *pDeviceDesc, -+ uint32_t cbDeviceDesc)); -+ -+ /* Control response or notification. -+ * -+ * @param pvCallback The callbacks context specified in VRDEGetInterface. -+ * @param rcRequest The result code of the request. -+ * @param pDeviceCtx The device context associated with the device in VRDEVideoInGetDeviceDesc. -+ * @param pvUser The pvUser parameter of VRDEVideoInControl. NULL if this is a notification. -+ * @param pControl The control information. -+ * @param cbControl The size of buffer pointed by pControl. -+ */ -+ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInControl,(void *pvCallback, -+ int rcRequest, -+ void *pDeviceCtx, -+ void *pvUser, -+ const VRDEVIDEOINCTRLHDR *pControl, -+ uint32_t cbControl)); -+ -+ /* Frame which was received from the client. -+ * -+ * @param pvCallback The callbacks context specified in VRDEGetInterface. -+ * @param rcRequest The result code of the request. -+ * @param pDeviceCtx The device context associated with the device in VRDEVideoInGetDeviceDesc. -+ * @param pFrame The frame data. -+ * @param cbFrame The size of buffer pointed by pFrame. -+ */ -+ DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInFrame,(void *pvCallback, -+ int rcRequest, -+ void *pDeviceCtx, -+ const VRDEVIDEOINPAYLOADHDR *pFrame, -+ uint32_t cbFrame)); -+ -+} VRDEVIDEOINCALLBACKS; -+#endif /* VRDE_VIDEOIN_WITH_VRDEINTERFACE */ -+ -+#pragma pack() -+ -+#endif From 097705cd86ade9077673b8d9358f85cab7867137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 1 Mar 2013 10:17:29 +0100 Subject: [PATCH 098/407] virtualgl: fixing and updating to 2.3.2 --- pkgs/tools/X11/virtualgl/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/tools/X11/virtualgl/default.nix b/pkgs/tools/X11/virtualgl/default.nix index 57df08c1e2b..3ae0920b9a7 100644 --- a/pkgs/tools/X11/virtualgl/default.nix +++ b/pkgs/tools/X11/virtualgl/default.nix @@ -2,19 +2,19 @@ , libjpeg_turbo, cmake }: let - libDir = if stdenv.is64bit then "lib64" else "lib"; + version = "2.3.2"; in stdenv.mkDerivation { - name = "virtualgl-2.1.4"; + name = "virtualgl-${version}"; src = fetchurl { - url = mirror://sourceforge/virtualgl/VirtualGL-2.3.tar.gz; - sha256 = "2f00c4eb20b0ae88e957a23fb66882e4ade2faa208abd30aa8c4f61570ecd4b9"; + url = "mirror://sourceforge/virtualgl/VirtualGL-${version}.tar.gz"; + sha256 = "062lrhd8yr13ch4wpgzxdabqs92j4q7fcl3a0c3sdlav4arspqmy"; }; patches = [ ./xshm.patch ./fixturbopath.patch ]; prePatch = '' - sed -i s,LD_PRELOAD=lib,LD_PRELOAD=$out/${libDir}/lib, rr/vglrun + sed -i s,LD_PRELOAD=lib,LD_PRELOAD=$out/lib/lib, server/vglrun ''; cmakeFlags = [ "-DTJPEG_LIBRARY=${libjpeg_turbo}/lib/libturbojpeg.so" ]; From 58a9875789aa7db43ca82e511667e637dddd7a41 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Fri, 1 Mar 2013 01:26:19 -0800 Subject: [PATCH 099/407] missing semicolon, found after push.. --- pkgs/applications/video/makemkv/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/video/makemkv/default.nix b/pkgs/applications/video/makemkv/default.nix index 4a1765c7e03..43482bd9762 100644 --- a/pkgs/applications/video/makemkv/default.nix +++ b/pkgs/applications/video/makemkv/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { Program is time-limited -- it will stop functioning after 60 days. You can always download the latest version from makemkv.com that will reset the expiration date. - '' + ''; license = "unfree"; homepage = http://makemkv.com; }; From 8f83550939f511bbc618f40ee7cdb3049727adbf Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 1 Mar 2013 10:13:03 +0100 Subject: [PATCH 100/407] haskell-zlib: add version 0.5.4.1 --- .../development/libraries/haskell/zlib/0.5.4.1.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 7 +++++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/haskell/zlib/0.5.4.1.nix diff --git a/pkgs/development/libraries/haskell/zlib/0.5.4.1.nix b/pkgs/development/libraries/haskell/zlib/0.5.4.1.nix new file mode 100644 index 00000000000..c1fa7d78d0a --- /dev/null +++ b/pkgs/development/libraries/haskell/zlib/0.5.4.1.nix @@ -0,0 +1,14 @@ +{ cabal, zlib }: + +cabal.mkDerivation (self: { + pname = "zlib"; + version = "0.5.4.1"; + sha256 = "0l550l2qw4gx530h1yjjpdh6rkm59l9l6jbmlm0vx41cqpj6b8yc"; + extraLibraries = [ zlib ]; + meta = { + description = "Compression and decompression in the gzip and zlib formats"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + maintainers = [ self.stdenv.lib.maintainers.andres ]; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index b3c07255a32..c360214e2c6 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -145,7 +145,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); transformers = self.transformers_0_3_0_0; # 7.6 ok vector = self.vector_0_10_0_1; # 7.6 ok xhtml = self.xhtml_3000_2_1; # 7.6 ok - zlib = self.zlib_0_5_4_0; # 7.6 ok + zlib = self.zlib_0_5_4_1; # 7.6 ok cabalInstall = self.cabalInstall_1_16_0_2; # 7.6 ok alex = self.alex_3_0_4; # 7.6 ok haddock = self.haddock_2_13_1; # 7.6 ok @@ -1962,7 +1962,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); zlib_0_5_4_0 = callPackage ../development/libraries/haskell/zlib/0.5.4.0.nix { inherit (pkgs) zlib; }; - zlib = self.zlib_0_5_4_0; + zlib_0_5_4_1 = callPackage ../development/libraries/haskell/zlib/0.5.4.1.nix { + inherit (pkgs) zlib; + }; + zlib = self.zlib_0_5_4_1; zlibBindings = callPackage ../development/libraries/haskell/zlib-bindings {}; From cb72a728d049583f37f7ee45fa3eddb4fec1c367 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 1 Mar 2013 10:41:32 +0100 Subject: [PATCH 101/407] haskell-cmdargs: update to version 0.10.2 --- pkgs/development/libraries/haskell/cmdargs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/cmdargs/default.nix b/pkgs/development/libraries/haskell/cmdargs/default.nix index e6b208b0297..6780d02e674 100644 --- a/pkgs/development/libraries/haskell/cmdargs/default.nix +++ b/pkgs/development/libraries/haskell/cmdargs/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "cmdargs"; - version = "0.10.1"; - sha256 = "0p7fzh65asn1bpzp137vfww97in2mkqfwwsk8hxzsdx32zi1nfz8"; + version = "0.10.2"; + sha256 = "0vn7c569akyabij2bh9myyvnx08w67dwdvx5g5q36b3ixzp0lrg4"; isLibrary = true; isExecutable = true; buildDepends = [ filepath transformers ]; From 7048f8fd3bae410e5567ac104ab3798ff091c9f7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 1 Mar 2013 10:41:32 +0100 Subject: [PATCH 102/407] haskell-conduit: update to version 1.0.1 --- pkgs/development/libraries/haskell/conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix index c452815db25..75260bcb1b3 100644 --- a/pkgs/development/libraries/haskell/conduit/default.nix +++ b/pkgs/development/libraries/haskell/conduit/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "conduit"; - version = "1.0.0.2"; - sha256 = "0dl73wjdbprrv6ll94x4ck0b561n43y3a7764s065zbsm8mn8h3z"; + version = "1.0.1"; + sha256 = "1r3d30cap4f7qxi9v2ab5w31w9ay19z848d4l8klf1np9xs27hki"; buildDepends = [ liftedBase monadControl resourcet text transformers transformersBase void From a87e40737e60bd3a526fd8106e8f21a5466578c4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 1 Mar 2013 10:41:32 +0100 Subject: [PATCH 103/407] haskell-ghc-mod: update to version 1.11.5 --- pkgs/development/libraries/haskell/ghc-mod/default.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix index f85b7f8e208..3481d37356d 100644 --- a/pkgs/development/libraries/haskell/ghc-mod/default.nix +++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix @@ -1,17 +1,21 @@ { cabal, Cabal, convertible, emacs, filepath, ghcPaths, ghcSybUtils -, hlint, ioChoice, regexPosix, syb, time, transformers +, hlint, hspec, ioChoice, regexPosix, syb, time, transformers }: cabal.mkDerivation (self: { pname = "ghc-mod"; - version = "1.11.4"; - sha256 = "1bxmpvad415ayzwyijjm0zsck0z8aa1nfjixwb6l80i6lbxi4rfg"; + version = "1.11.5"; + sha256 = "0lcq4ffmv017pdy58p91qn5d4hmcxcqzk8dvnmh7m4m7saslqivp"; isLibrary = false; isExecutable = true; buildDepends = [ Cabal convertible filepath ghcPaths ghcSybUtils hlint ioChoice regexPosix syb time transformers ]; + testDepends = [ + Cabal convertible filepath ghcPaths ghcSybUtils hlint hspec + ioChoice regexPosix syb time transformers + ]; buildTools = [ emacs ]; postInstall = '' cd $out/share/$pname-$version From ec514cf429706b869975f0cee90fe9658fef09fc Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 1 Mar 2013 10:41:32 +0100 Subject: [PATCH 104/407] haskell-iproute: update to version 1.2.11 --- pkgs/development/libraries/haskell/iproute/default.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/haskell/iproute/default.nix b/pkgs/development/libraries/haskell/iproute/default.nix index 4a496a981c6..045bb64035c 100644 --- a/pkgs/development/libraries/haskell/iproute/default.nix +++ b/pkgs/development/libraries/haskell/iproute/default.nix @@ -4,15 +4,12 @@ cabal.mkDerivation (self: { pname = "iproute"; - version = "1.2.10"; - sha256 = "1ni91llvq1mfdsjmw1laqhk964y4vlpyk5s25j8klsfn27mq6c68"; + version = "1.2.11"; + sha256 = "14f96sb41f5m14186900rz84vwv7idjiylp8m5nsm6gganvh4sh4"; buildDepends = [ appar byteorder network ]; testDepends = [ appar byteorder doctest hspec network QuickCheck safe ]; - patchPhase = '' - sed -i -e 's|Safe|safe|' iproute.cabal - ''; meta = { homepage = "http://www.mew.org/~kazu/proj/iproute/"; description = "IP Routing Table"; From 7af6f82d2fd73a568f8b3136ec0adc614cc0a161 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 1 Mar 2013 10:41:32 +0100 Subject: [PATCH 105/407] haskell-time-compat: update to version 0.1.0.3 --- pkgs/development/libraries/haskell/time-compat/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/time-compat/default.nix b/pkgs/development/libraries/haskell/time-compat/default.nix index e42224ace0d..fa7c3ff4185 100644 --- a/pkgs/development/libraries/haskell/time-compat/default.nix +++ b/pkgs/development/libraries/haskell/time-compat/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "time-compat"; - version = "0.1.0.2"; - sha256 = "0687bxkvqs22p7skqb8n289k9nv7cafg8jyx32sswn2h11m7dihb"; + version = "0.1.0.3"; + sha256 = "0zqgzr8yjn36rn6gflwh5s0c92vl44xzxiw0jz8d5h0h8lhi21sr"; buildDepends = [ time ]; meta = { homepage = "http://hub.darcs.net/dag/time-compat"; From a1c5d6642b978063d991646f6f7fc6b6dd530386 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 1 Mar 2013 12:50:29 +0100 Subject: [PATCH 106/407] build-support/release: Simplify meta.description Phrases like "Build of a ..." are redundant because everything is a build. --- pkgs/build-support/release/debian-build.nix | 2 +- pkgs/build-support/release/nix-build.nix | 2 +- pkgs/build-support/release/rpm-build.nix | 6 +++--- pkgs/build-support/release/source-tarball.nix | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/release/debian-build.nix b/pkgs/build-support/release/debian-build.nix index feb15267f59..ba7be86a6c1 100644 --- a/pkgs/build-support/release/debian-build.nix +++ b/pkgs/build-support/release/debian-build.nix @@ -83,7 +83,7 @@ vmTools.runInLinuxImage (stdenv.mkDerivation ( ''; # */ meta = (if args ? meta then args.meta else {}) // { - description = "Build of a Deb package on ${diskImage.fullName} (${diskImage.name})"; + description = "Deb package for ${diskImage.fullName}"; }; } diff --git a/pkgs/build-support/release/nix-build.nix b/pkgs/build-support/release/nix-build.nix index 84dd2986750..5e4f5dd9ee8 100644 --- a/pkgs/build-support/release/nix-build.nix +++ b/pkgs/build-support/release/nix-build.nix @@ -111,7 +111,7 @@ stdenv.mkDerivation ( (stdenv.lib.optional doCoverageAnalysis "coverageReportPhase") ++ ["finalPhase"]; meta = (if args ? meta then args.meta else {}) // { - description = if doCoverageAnalysis then "Coverage analysis" else "Native Nix build on ${stdenv.system}"; + description = if doCoverageAnalysis then "Coverage analysis" else "Nix package for ${stdenv.system}"; }; } diff --git a/pkgs/build-support/release/rpm-build.nix b/pkgs/build-support/release/rpm-build.nix index 708b62302d5..9a1c7eeee62 100644 --- a/pkgs/build-support/release/rpm-build.nix +++ b/pkgs/build-support/release/rpm-build.nix @@ -33,21 +33,21 @@ vmTools.buildRPM ( rpm -Up ''${rpms[*]} --excludepath /nix/store eval "$postRPMInstall" - + echo "uninstalling ''${rpmNames[*]}..." rpm -e ''${rpmNames[*]} --nodeps for i in $out/rpms/*/*.src.rpm; do echo "file srpm $i" >> $out/nix-support/hydra-build-products done - + for rpmdir in $extraRPMs ; do echo "file rpm-extra $(ls $rpmdir/rpms/*/*.rpm | grep -v 'src\.rpm' | sort | head -1)" >> $out/nix-support/hydra-build-products done ''; # */ meta = (if args ? meta then args.meta else {}) // { - description = "Build of an RPM package on ${diskImage.fullName} (${diskImage.name})"; + description = "RPM package for ${diskImage.fullName}"; }; } diff --git a/pkgs/build-support/release/source-tarball.nix b/pkgs/build-support/release/source-tarball.nix index 887bfb3125c..5ba1356a17f 100644 --- a/pkgs/build-support/release/source-tarball.nix +++ b/pkgs/build-support/release/source-tarball.nix @@ -126,7 +126,7 @@ stdenv.mkDerivation ( }; meta = (if args ? meta then args.meta else {}) // { - description = "Build of a source distribution from a checkout"; + description = "Source distribution"; # Tarball builds are generally important, so give them a high # default priority. From 56d197ab0b81019950489bf20f518c2baf387328 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 1 Mar 2013 13:52:10 +0100 Subject: [PATCH 107/407] firefox: Update to 19.0.1 And use --with-system-nss again. --- .../networking/browsers/firefox/19.0.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox/19.0.nix b/pkgs/applications/networking/browsers/firefox/19.0.nix index a46143066c1..1881c7d7af6 100644 --- a/pkgs/applications/networking/browsers/firefox/19.0.nix +++ b/pkgs/applications/networking/browsers/firefox/19.0.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL , libjpeg, libpng, zlib, cairo, dbus, dbus_glib, bzip2, xlibs -, freetype, fontconfig, file, alsaLib, nspr, libnotify +, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify , yasm, mesa, sqlite, unzip, makeWrapper, pysqlite , # If you want the resulting program to call itself "Firefox" instead @@ -15,9 +15,9 @@ assert stdenv.gcc ? libc && stdenv.gcc.libc != null; rec { - firefoxVersion = "19.0"; + firefoxVersion = "19.0.1"; - xulVersion = "19.0"; # this attribute is used by other packages + xulVersion = "19.0.1"; # this attribute is used by other packages src = fetchurl { @@ -27,7 +27,7 @@ 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 = "816d64e8c9432349cd208fd181d210c54f985351"; + sha1 = "6a3a965c165ceda8c5ba038e9fe0136fbd1690ff"; }; commonConfigureFlags = @@ -39,9 +39,9 @@ rec { "--with-system-zlib" "--with-system-bz2" "--with-system-nspr" - # "--with-system-nss" # Too old in nixpkgs + "--with-system-nss" # "--with-system-png" # <-- "--with-system-png won't work because the system's libpng doesn't have APNG support" - # "--enable-system-cairo" # disabled for the moment because our Cairo is too old + # "--enable-system-cairo" # <-- doesn't build "--enable-system-sqlite" "--disable-crashreporter" "--disable-tests" @@ -60,7 +60,7 @@ rec { [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo bzip2 python dbus dbus_glib pango freetype fontconfig xlibs.libXi xlibs.libX11 xlibs.libXrender xlibs.libXft xlibs.libXt file - alsaLib nspr libnotify xlibs.pixman yasm mesa + alsaLib nspr nss libnotify xlibs.pixman yasm mesa xlibs.libXScrnSaver xlibs.scrnsaverproto pysqlite xlibs.libXext xlibs.xextproto sqlite unzip makeWrapper ]; @@ -125,7 +125,7 @@ rec { buildInputs = [ pkgconfig gtk perl zip libIDL libjpeg zlib cairo bzip2 python - dbus dbus_glib pango freetype fontconfig alsaLib nspr libnotify + dbus dbus_glib pango freetype fontconfig alsaLib nspr nss libnotify xlibs.pixman yasm mesa sqlite file unzip pysqlite ]; From 0d6f6e6d37365187b2ad94f3233b9aa656f573b0 Mon Sep 17 00:00:00 2001 From: Jordi Date: Fri, 1 Mar 2013 19:31:00 +0100 Subject: [PATCH 108/407] Wraper with glib_network --- pkgs/applications/misc/surf/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/misc/surf/default.nix b/pkgs/applications/misc/surf/default.nix index 808a77ef0a0..b03135ea1f4 100644 --- a/pkgs/applications/misc/surf/default.nix +++ b/pkgs/applications/misc/surf/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, gtk, webkit, pkgconfig, glib, libsoup, patches ? null}: +{stdenv, fetchurl, makeWrapper, gtk, webkit, pkgconfig, glib, glib_networking, libsoup, patches ? null}: stdenv.mkDerivation rec { name = "surf-${version}"; @@ -6,10 +6,10 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://dl.suckless.org/surf/surf-${version}.tar.gz"; - sha256 = "01b8hq8z2wd7ssym5bypx2b15mrs1lhgkrcgxf700kswxvxcrhgx"; + sha256 = "fdc1ccfaee5c4f008eeb8fe5f9200d3ad71296e8d7af52bdd6a771f111866805"; }; - buildInputs = [ gtk webkit pkgconfig glib libsoup ]; + buildInputs = [ gtk makeWrapper webkit pkgconfig glib libsoup glib_networking ]; # Allow users set their own list of patches inherit patches; @@ -19,6 +19,11 @@ stdenv.mkDerivation rec { # `-lX11' to make sure libX11's store path is in the RPATH NIX_LDFLAGS = "-lX11"; preConfigure = [ ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk'' ]; + installPhase = '' + make PREFIX=/ DESTDIR=$out install + wrapProgram "$out/bin/surf" --prefix GIO_EXTRA_MODULES : \ + ${glib_networking}/lib/gio/modules + ''; meta = { description = "surf is a simple web browser based on WebKit/GTK+. It is able to display websites and follow links. It supports the XEmbed protocol which makes it possible to embed it in another application. Furthermore, one can point surf to another URI by setting its XProperties."; From cf8d64b4587756173fbb5b7da6986d49da7dd83a Mon Sep 17 00:00:00 2001 From: Jordi Date: Fri, 1 Mar 2013 19:53:42 +0100 Subject: [PATCH 109/407] New wraper for surf --- pkgs/applications/misc/surf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/misc/surf/default.nix b/pkgs/applications/misc/surf/default.nix index b03135ea1f4..94133e633dd 100644 --- a/pkgs/applications/misc/surf/default.nix +++ b/pkgs/applications/misc/surf/default.nix @@ -6,10 +6,10 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://dl.suckless.org/surf/surf-${version}.tar.gz"; - sha256 = "fdc1ccfaee5c4f008eeb8fe5f9200d3ad71296e8d7af52bdd6a771f111866805"; + sha256 = "01b8hq8z2wd7ssym5bypx2b15mrs1lhgkrcgxf700kswxvxcrhgx"; }; - buildInputs = [ gtk makeWrapper webkit pkgconfig glib libsoup glib_networking ]; + buildInputs = [ gtk makeWrapper webkit pkgconfig glib libsoup ]; # Allow users set their own list of patches inherit patches; From 089fd0a76912b554fa83710442645060706417c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 1 Mar 2013 20:38:23 +0100 Subject: [PATCH 110/407] fvwm: updating license to gplv2+ I looked at some src, and it mentions "or later". --- pkgs/applications/window-managers/fvwm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/window-managers/fvwm/default.nix b/pkgs/applications/window-managers/fvwm/default.nix index dd9e11328ef..33acd000270 100644 --- a/pkgs/applications/window-managers/fvwm/default.nix +++ b/pkgs/applications/window-managers/fvwm/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { meta = { homepage = "http://fvwm.org"; description = "A multiple large virtual desktop window manager"; - license = "GPLv2"; + license = "GPLv2+"; }; } From 8cdfd46d96b0b6da503f645e4a6fccd60442b0b6 Mon Sep 17 00:00:00 2001 From: Patrick Wheeler Date: Sat, 2 Mar 2013 01:08:33 +0100 Subject: [PATCH 111/407] Fix xf86vmware fix Moved xf86vmware fix into the overrides.nix file where and not in the generated default.nix. --- pkgs/servers/x11/xorg/default.nix | 5 ++--- pkgs/servers/x11/xorg/overrides.nix | 5 +++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index f26ba257c02..23600b0e014 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -1724,9 +1724,8 @@ let url = mirror://xorg/X11R7.7/src/everything/xf86-video-vmware-12.0.2.tar.bz2; sha256 = "0isiwx516gww8hfk3vy7js83yziyjym9mq2zjadyq1a8v5gqf9y8"; }; - CFLAGS = "-I${pixman}/include/pixman-1"; - buildInputs = [pkgconfig fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto pixman ]; - })) // {inherit fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto pixman ;}; + buildInputs = [pkgconfig fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto ]; + })) // {inherit fontsproto libdrm libpciaccess randrproto renderproto videoproto libX11 libXext xextproto xineramaproto xorgserver xproto ;}; xf86videovoodoo = (stdenv.mkDerivation ((if overrides ? xf86videovoodoo then overrides.xf86videovoodoo else x: x) { name = "xf86-video-voodoo-1.2.4"; diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 6d231e2083e..9b96103a65e 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -192,6 +192,11 @@ in buildInputs = attrs.buildInputs ++ [xorg.pixman]; }; + xf86videovmware = attrs: attrs // { + NIX_CFLAGS_COMPILE = "-I${xorg.pixman}/include/pixman-1"; + buildInputs = attrs.buildInputs ++ [xorg.pixman xorg.glproto args.mesa]; + }; + xdriinfo = attrs: attrs // { buildInputs = attrs.buildInputs ++ [xorg.glproto args.mesa]; }; From 0314b8b00fe1c8c1b09f9494effe6e6f6b739620 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 2 Mar 2013 05:40:20 +0100 Subject: [PATCH 112/407] add python docs --- .../interpreters/python/docs/2.6-html.nix | 15 ++++ .../interpreters/python/docs/2.6-pdf-a4.nix | 15 ++++ .../python/docs/2.6-pdf-letter.nix | 15 ++++ .../interpreters/python/docs/2.6-text.nix | 15 ++++ .../interpreters/python/docs/2.7-html.nix | 15 ++++ .../interpreters/python/docs/2.7-pdf-a4.nix | 15 ++++ .../python/docs/2.7-pdf-letter.nix | 15 ++++ .../interpreters/python/docs/2.7-text.nix | 15 ++++ .../interpreters/python/docs/3.0-html.nix | 15 ++++ .../interpreters/python/docs/3.0-pdf-a4.nix | 15 ++++ .../python/docs/3.0-pdf-letter.nix | 15 ++++ .../interpreters/python/docs/3.0-text.nix | 15 ++++ .../interpreters/python/docs/3.1-html.nix | 15 ++++ .../interpreters/python/docs/3.1-pdf-a4.nix | 15 ++++ .../python/docs/3.1-pdf-letter.nix | 15 ++++ .../interpreters/python/docs/3.1-text.nix | 15 ++++ .../interpreters/python/docs/3.2-html.nix | 15 ++++ .../interpreters/python/docs/3.2-pdf-a4.nix | 15 ++++ .../python/docs/3.2-pdf-letter.nix | 15 ++++ .../interpreters/python/docs/3.2-text.nix | 15 ++++ .../interpreters/python/docs/3.3-html.nix | 15 ++++ .../interpreters/python/docs/3.3-pdf-a4.nix | 15 ++++ .../python/docs/3.3-pdf-letter.nix | 15 ++++ .../interpreters/python/docs/3.3-text.nix | 15 ++++ .../interpreters/python/docs/default.nix | 77 +++++++++++++++++++ .../interpreters/python/docs/generate.sh | 53 +++++++++++++ .../interpreters/python/docs/template.nix | 15 ++++ pkgs/top-level/all-packages.nix | 4 + 28 files changed, 509 insertions(+) create mode 100644 pkgs/development/interpreters/python/docs/2.6-html.nix create mode 100644 pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix create mode 100644 pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix create mode 100644 pkgs/development/interpreters/python/docs/2.6-text.nix create mode 100644 pkgs/development/interpreters/python/docs/2.7-html.nix create mode 100644 pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix create mode 100644 pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix create mode 100644 pkgs/development/interpreters/python/docs/2.7-text.nix create mode 100644 pkgs/development/interpreters/python/docs/3.0-html.nix create mode 100644 pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix create mode 100644 pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix create mode 100644 pkgs/development/interpreters/python/docs/3.0-text.nix create mode 100644 pkgs/development/interpreters/python/docs/3.1-html.nix create mode 100644 pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix create mode 100644 pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix create mode 100644 pkgs/development/interpreters/python/docs/3.1-text.nix create mode 100644 pkgs/development/interpreters/python/docs/3.2-html.nix create mode 100644 pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix create mode 100644 pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix create mode 100644 pkgs/development/interpreters/python/docs/3.2-text.nix create mode 100644 pkgs/development/interpreters/python/docs/3.3-html.nix create mode 100644 pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix create mode 100644 pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix create mode 100644 pkgs/development/interpreters/python/docs/3.3-text.nix create mode 100644 pkgs/development/interpreters/python/docs/default.nix create mode 100755 pkgs/development/interpreters/python/docs/generate.sh create mode 100644 pkgs/development/interpreters/python/docs/template.nix diff --git a/pkgs/development/interpreters/python/docs/2.6-html.nix b/pkgs/development/interpreters/python/docs/2.6-html.nix new file mode 100644 index 00000000000..481998ae591 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.6-html.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python26-docs-html-2.6.8"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-html.tar.bz2; + sha256 = "09kznik9ahmnrqw9gkr7mjv3b3zr258f2fm27n12hrrwwsaszkni"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix new file mode 100644 index 00000000000..1a718819ac0 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python26-docs-pdf-a4-2.6.8"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-pdf-a4.tar.bz2; + sha256 = "07k8n9zhd59s1yn8ahsizkaqnv969p0f2c2acxgxrxhhyy842pp8"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix new file mode 100644 index 00000000000..305c456efc4 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python26-docs-pdf-letter-2.6.8"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-pdf-letter.tar.bz2; + sha256 = "01r87m8hb7f9ql4j9zcjcrr9150nsk23sj8cy02vygr83sc1ldmq"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/2.6-text.nix b/pkgs/development/interpreters/python/docs/2.6-text.nix new file mode 100644 index 00000000000..6ced3597eeb --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.6-text.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python26-docs-text-2.6.8"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-text.tar.bz2; + sha256 = "05wsdh6ilgkclgak09fq7fsx5kflkmqq8dyxi2rpydx289cw3a8c"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/2.7-html.nix b/pkgs/development/interpreters/python/docs/2.7-html.nix new file mode 100644 index 00000000000..1c8ef0bc460 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.7-html.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python27-docs-html-2.7.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-html.tar.bz2; + sha256 = "1hg92n0mzl9w6j33b2h0bf2vy6fsxnpxfdc3qw760vcm0y00155j"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix new file mode 100644 index 00000000000..d2d9f3616ce --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python27-docs-pdf-a4-2.7.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-pdf-a4.tar.bz2; + sha256 = "13da88panq5b6qfhf8k4dgqgxkg4ydcac5cx69a3f35s1w90xdjr"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix new file mode 100644 index 00000000000..0361d3a2027 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python27-docs-pdf-letter-2.7.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-pdf-letter.tar.bz2; + sha256 = "0x41phsdrpivhzkchswsliyx3a10n7gzc9irkrw6rz22j81bfydg"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/2.7-text.nix b/pkgs/development/interpreters/python/docs/2.7-text.nix new file mode 100644 index 00000000000..4422822cced --- /dev/null +++ b/pkgs/development/interpreters/python/docs/2.7-text.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python27-docs-text-2.7.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-text.tar.bz2; + sha256 = "1rxlb3jhh3892y65i45nk1y2lx981fr22a5hmfkp9gvjvdykjnzp"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.0-html.nix b/pkgs/development/interpreters/python/docs/3.0-html.nix new file mode 100644 index 00000000000..6abc92b1853 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.0-html.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python30-docs-html-3.0.1"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-html.tar.bz2; + sha256 = "0ybjnhg8qfr9kc4axm5xlghkz9dmsg6b1caj6m4gz28q89vggv3c"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix new file mode 100644 index 00000000000..658cfd27ee7 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python30-docs-pdf-a4-3.0.1"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-pdf-a4.tar.bz2; + sha256 = "1qgcydqxxhy317lkzzs2v5as4hcwcblir8y3mdr173qsg51iggra"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix new file mode 100644 index 00000000000..5a86ea0a701 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python30-docs-pdf-letter-3.0.1"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-pdf-letter.tar.bz2; + sha256 = "1x59q0k6fv55vvpsgr5xcq66k5zsd0f142cp6aa4rb6c81i31yml"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.0-text.nix b/pkgs/development/interpreters/python/docs/3.0-text.nix new file mode 100644 index 00000000000..4031594e768 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.0-text.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python30-docs-text-3.0.1"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-text.tar.bz2; + sha256 = "12qlh9ywbnw50wk5siq7lmhr935dd16q3vjbii6gfv0g80b1byzx"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.1-html.nix b/pkgs/development/interpreters/python/docs/3.1-html.nix new file mode 100644 index 00000000000..7226cbde3bd --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.1-html.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python31-docs-html-3.1.5"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-html.tar.bz2; + sha256 = "187shb92218k0i07hj9ak1kqbqjcxkivmwxlzj18v791l7x7qcpz"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix new file mode 100644 index 00000000000..ddde9ccfe2e --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python31-docs-pdf-a4-3.1.5"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-pdf-a4.tar.bz2; + sha256 = "0kbj6b43gnwlb1czkzmirasmc31j10plq0rlb9s9rh8phqnbmhx1"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix new file mode 100644 index 00000000000..929ecbdb92c --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python31-docs-pdf-letter-3.1.5"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-pdf-letter.tar.bz2; + sha256 = "0s202vrjfa8dnp3vpfjb21bmqym9wyj8jn2glgwjzk63z6fwb60i"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.1-text.nix b/pkgs/development/interpreters/python/docs/3.1-text.nix new file mode 100644 index 00000000000..76caa5e5232 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.1-text.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python31-docs-text-3.1.5"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-text.tar.bz2; + sha256 = "1jsfgfgdi1i2l3lhdk7ss5gwrcg3qhhh8syfrwz8xrv2klmmmn9b"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.2-html.nix b/pkgs/development/interpreters/python/docs/3.2-html.nix new file mode 100644 index 00000000000..3df6e1da0f9 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.2-html.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python32-docs-html-3.2.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-html.tar.bz2; + sha256 = "058pryg0gn0rlpswkj1z0xvpr39s3ymx3dwqfhhf83w0mlysdm0x"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix new file mode 100644 index 00000000000..6d37cc86d95 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python32-docs-pdf-a4-3.2.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-pdf-a4.tar.bz2; + sha256 = "1lw1sbk3nx70k2zxgjc36ryvyzlxndzsvhrxyzdy9sjfhasyd807"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix new file mode 100644 index 00000000000..578e6969748 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python32-docs-pdf-letter-3.2.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-pdf-letter.tar.bz2; + sha256 = "199ibzslw3zrwjd49582vc5q6ghp5ig8zalvslawz0xkz1226wg2"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.2-text.nix b/pkgs/development/interpreters/python/docs/3.2-text.nix new file mode 100644 index 00000000000..062732e9cea --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.2-text.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python32-docs-text-3.2.3"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-text.tar.bz2; + sha256 = "1jdc9rj2b4vsbvg5mq6vcdfa2b72avhhvjw7rn7k3kl521cvxs09"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.3-html.nix b/pkgs/development/interpreters/python/docs/3.3-html.nix new file mode 100644 index 00000000000..6530153c51b --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.3-html.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python33-docs-html-3.3.0"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-html.tar.bz2; + sha256 = "0vv24b9qi7gznv687ik0pa2w1rq9grqivy44znvj2ysjfg7mc2c1"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix new file mode 100644 index 00000000000..037e53e63d6 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python33-docs-pdf-a4-3.3.0"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-pdf-a4.tar.bz2; + sha256 = "1y6n13bxlw8a11khy3ynfbz8z0kpf2lvh32dvy8scyw3hrk6wdxp"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix new file mode 100644 index 00000000000..e4dd3dc7ebc --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python33-docs-pdf-letter-3.3.0"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-pdf-letter.tar.bz2; + sha256 = "0mcj1i47nx81fc9zk1cic4c4p139qjcqlzf4hnnkzvb3jcgy5z6k"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/3.3-text.nix b/pkgs/development/interpreters/python/docs/3.3-text.nix new file mode 100644 index 00000000000..f3a0c049dd1 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/3.3-text.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "python33-docs-text-3.3.0"; + src = fetchurl { + url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-text.tar.bz2; + sha256 = "10vk2fixg1aglqmsf89kn98rlirrbhnrk1285vzfbynf2iavxw0n"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/development/interpreters/python/docs/default.nix b/pkgs/development/interpreters/python/docs/default.nix new file mode 100644 index 00000000000..165e89c4b80 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/default.nix @@ -0,0 +1,77 @@ +{ stdenv, fetchurl }: + +let +pythonDocs = { + python33_html = import ./3.3-html.nix { + inherit stdenv fetchurl; + }; + python33_pdf_a4 = import ./3.3-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python33_pdf_letter = import ./3.3-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python33_text = import ./3.3-text.nix { + inherit stdenv fetchurl; + }; + python32_html = import ./3.2-html.nix { + inherit stdenv fetchurl; + }; + python32_pdf_a4 = import ./3.2-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python32_pdf_letter = import ./3.2-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python32_text = import ./3.2-text.nix { + inherit stdenv fetchurl; + }; + python31_html = import ./3.1-html.nix { + inherit stdenv fetchurl; + }; + python31_pdf_a4 = import ./3.1-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python31_pdf_letter = import ./3.1-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python31_text = import ./3.1-text.nix { + inherit stdenv fetchurl; + }; + python30_html = import ./3.0-html.nix { + inherit stdenv fetchurl; + }; + python30_pdf_a4 = import ./3.0-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python30_pdf_letter = import ./3.0-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python30_text = import ./3.0-text.nix { + inherit stdenv fetchurl; + }; + python27_html = import ./2.7-html.nix { + inherit stdenv fetchurl; + }; + python27_pdf_a4 = import ./2.7-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python27_pdf_letter = import ./2.7-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python27_text = import ./2.7-text.nix { + inherit stdenv fetchurl; + }; + python26_html = import ./2.6-html.nix { + inherit stdenv fetchurl; + }; + python26_pdf_a4 = import ./2.6-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python26_pdf_letter = import ./2.6-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python26_text = import ./2.6-text.nix { + inherit stdenv fetchurl; + }; +}; in pythonDocs diff --git a/pkgs/development/interpreters/python/docs/generate.sh b/pkgs/development/interpreters/python/docs/generate.sh new file mode 100755 index 00000000000..c5e990c3a99 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/generate.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +TYPES="html pdf-a4 pdf-letter text" +URL=http://docs.python.org/ftp/python/doc/VERSION/python-VERSION-docs-TYPE.tar.bz2 +VERSIONS=$(curl http://www.python.org/download/releases/ 2>/dev/null | grep "releases/[123456789]"| cut -d/ -f4 |grep -v "^[12].[012345]" |grep -v "^1.6.1") +echo "Generating expressions for: +${VERSIONS} +" + + +cat >default.nix < ${outfile} + + attrname=python${major}${minor}_$(echo -n ${type} |sed -e "s,-,_,g") + cat >>default.nix <> default.nix diff --git a/pkgs/development/interpreters/python/docs/template.nix b/pkgs/development/interpreters/python/docs/template.nix new file mode 100644 index 00000000000..621bf9e7cd9 --- /dev/null +++ b/pkgs/development/interpreters/python/docs/template.nix @@ -0,0 +1,15 @@ +# This file was generated and will be overwritten by ./generate.sh + +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + name = "pythonMAJORMINOR-docs-TYPE-VERSION"; + src = fetchurl { + url = URL; + sha256 = "SHA"; + }; + installPhase = '' + mkdir -p $out/share/docs + cp -R ./ $out/share/docs/ + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a86bd6bbef2..4329203a6ce 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2891,6 +2891,10 @@ let inherit (python27Packages) recursivePthLoader; }; + pythonDocs = recurseIntoAttrs (import ../development/interpreters/python/docs { + inherit stdenv fetchurl; + }); + pythonLinkmeWrapper = callPackage ../development/interpreters/python/python-linkme-wrapper.nix { }; pyrex = pyrex095; From c8b940072d5ccbf7b8220bdcad30ae610194c7e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 2 Mar 2013 09:21:11 +0100 Subject: [PATCH 113/407] koffice, kbluetooth: remove from hydra --- pkgs/applications/office/koffice/default.nix | 3 ++- pkgs/tools/bluetooth/kbluetooth/default.nix | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/office/koffice/default.nix b/pkgs/applications/office/koffice/default.nix index 784b6007035..773b755e9b2 100644 --- a/pkgs/applications/office/koffice/default.nix +++ b/pkgs/applications/office/koffice/default.nix @@ -38,6 +38,7 @@ stdenv.mkDerivation rec { license = "GPL"; homepage = http://www.koffice.org; maintainers = with stdenv.lib.maintainers; [ sander urkud ]; - inherit (kdelibs.meta) platforms; + # doesn't build, seems dead and superseded by calligra + #inherit (kdelibs.meta) platforms; }; } diff --git a/pkgs/tools/bluetooth/kbluetooth/default.nix b/pkgs/tools/bluetooth/kbluetooth/default.nix index 047b4f822ae..81916cb3982 100644 --- a/pkgs/tools/bluetooth/kbluetooth/default.nix +++ b/pkgs/tools/bluetooth/kbluetooth/default.nix @@ -24,7 +24,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "Bluetooth manager for KDE"; license = "GPLv2"; - inherit (kdelibs.meta) platforms; + #inherit (kdelibs.meta) platforms; # doesn't build and seems to be dead maintainers = [ maintainers.phreedom ]; }; -} \ No newline at end of file +} From 97b24ed95acdd7ad4d7e94b94c0a6eaf3d5fa92a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 2 Mar 2013 10:01:44 +0100 Subject: [PATCH 114/407] linux_2_6_32: disable patch which no longer appies --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6d9d534c412..0c9971143c0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5794,7 +5794,7 @@ let kernelPatches.sec_perm_2_6_24 # kernelPatches.aufs2_2_6_32 kernelPatches.cifs_timeout_2_6_29 - kernelPatches.no_xsave + # kernelPatches.no_xsave # doesn't apply anymore kernelPatches.dell_rfkill ]; }; From a920c50cfbe849c9062de81bde050b5672e4e42c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 2 Mar 2013 10:01:44 +0100 Subject: [PATCH 115/407] linux_2_6_32: disable patch which no longer appies --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4329203a6ce..6bcbf0f7fb6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5913,7 +5913,7 @@ let kernelPatches.sec_perm_2_6_24 # kernelPatches.aufs2_2_6_32 kernelPatches.cifs_timeout_2_6_29 - kernelPatches.no_xsave + # kernelPatches.no_xsave # doesn't apply anymore kernelPatches.dell_rfkill ]; }; From 84d5defb752fd19affd42ed852a3fcc673fd67a1 Mon Sep 17 00:00:00 2001 From: David Guibert Date: Sun, 3 Feb 2013 17:45:35 +0100 Subject: [PATCH 116/407] update openmpi to 1.6.4 --- pkgs/development/libraries/openmpi/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/openmpi/default.nix b/pkgs/development/libraries/openmpi/default.nix index 6de49846c2d..d32cbd51606 100644 --- a/pkgs/development/libraries/openmpi/default.nix +++ b/pkgs/development/libraries/openmpi/default.nix @@ -1,11 +1,16 @@ {stdenv, fetchurl, gfortran}: stdenv.mkDerivation { - name = "openmpi-1.4.2"; + name = "openmpi-1.6.4"; src = fetchurl { - url = http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.2.tar.bz2 ; - sha1 = "3e85092433d0e399cc7a51c018f9d13562f78b80"; + url = http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.4.tar.bz2 ; + sha1 = "38095d3453519177272f488d5058a98f7ebdbf10"; }; buildInputs = [ gfortran ]; + meta = { + homePage = http://www.open-mpi.org/; + description = "Open source MPI-2 implementation"; + longDescription = "The Open MPI Project is an open source MPI-2 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers."; + }; } From b6452df939e3e67546f6fe7af359d42d975d6769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 2 Mar 2013 11:12:03 +0100 Subject: [PATCH 117/407] libchop: fix builds with glibc 2.16+ --- .../development/libraries/libchop/default.nix | 2 + .../libraries/libchop/gets-undeclared.patch | 71 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 pkgs/development/libraries/libchop/gets-undeclared.patch diff --git a/pkgs/development/libraries/libchop/default.nix b/pkgs/development/libraries/libchop/default.nix index 4f0c83f2702..56aac34a344 100644 --- a/pkgs/development/libraries/libchop/default.nix +++ b/pkgs/development/libraries/libchop/default.nix @@ -9,6 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0fpdyxww41ba52d98blvnf543xvirq1v9xz1i3x1gm9lzlzpmc2g"; }; + patches = [ ./gets-undeclared.patch ]; + buildNativeInputs = [ pkgconfig gperf ]; buildInputs = [ zlib bzip2 lzo diff --git a/pkgs/development/libraries/libchop/gets-undeclared.patch b/pkgs/development/libraries/libchop/gets-undeclared.patch new file mode 100644 index 00000000000..b6cdc77caa8 --- /dev/null +++ b/pkgs/development/libraries/libchop/gets-undeclared.patch @@ -0,0 +1,71 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + + +commit 66712c23388e93e5c518ebc8515140fa0c807348 +Author: Eric Blake +Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + + Gnulib intentionally does not have a gets module, and now that C11 + and glibc have dropped it, we should be more proactive about warning + any user on a platform that still has a declaration of this dangerous + interface. + + * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets + support. + * modules/stdio (Makefile.am): Likewise. + * lib/stdio-read.c (gets): Likewise. + * tests/test-stdio-c++.cc: Likewise. + * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. + * lib/stdio.in.h (gets): Make warning occur in more places. + * doc/posix-functions/gets.texi (gets): Update documentation. + Reported by Christer Solskogen. + + Signed-off-by: Eric Blake + +diff --git a/lib/stdio.in.h b/lib/stdio.in.h +index aa7b599..c377b6e 100644 +--- a/lib/stdio.in.h ++++ b/lib/stdio.in.h +@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " + # endif + #endif + +-#if @GNULIB_GETS@ +-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ +-# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +-# undef gets +-# define gets rpl_gets +-# endif +-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1))); +-_GL_CXXALIAS_RPL (gets, char *, (char *s)); +-# else +-_GL_CXXALIAS_SYS (gets, char *, (char *s)); +-# undef gets +-# endif +-_GL_CXXALIASWARN (gets); + /* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + #endif + +@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " + # endif + #endif + +-/* Some people would argue that sprintf should be handled like gets +- (for example, OpenBSD issues a link warning for both functions), +- since both can cause security holes due to buffer overruns. ++/* Some people would argue that all sprintf uses should be warned about ++ (for example, OpenBSD issues a link warning for it), ++ since it can cause security holes due to buffer overruns. + However, we believe that sprintf can be used safely, and is more + efficient than snprintf in those safe cases; and as proof of our + belief, we use sprintf in several gnulib modules. So this header From 8ce1295ad35bd7286fd9be21d28b6d657673c64b Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sat, 2 Mar 2013 07:51:12 -0500 Subject: [PATCH 118/407] linux/manual-config: ignore nulls. There's no need to set the postFixup env var at all if we're not modular. --- pkgs/os-specific/linux/kernel/manual-config.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 05132b8365b..6bbf6f55469 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -146,11 +146,13 @@ stdenv.mkDerivation { $installFlags "''${installFlagsArray[@]}" ''); - postFixup = optionalString isModular '' + postFixup = if isModular then '' if [ -z "$dontStrip" ]; then find $out -name "*.ko" -print0 | xargs -0 -r strip -S fi - ''; + '' else null; + + __ignoreNulls = true; meta = { description = "The Linux kernel"; From b90b62e33b648e48bf5ef794e0b1c032f391df43 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sat, 2 Mar 2013 07:55:07 -0500 Subject: [PATCH 119/407] linux/manual-config: Move configfile symlinking to configurePhase. It makes more semantic sense there than in unpackPhase, as that symlink is _how_ we configure the kernel --- pkgs/os-specific/linux/kernel/manual-config.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 6bbf6f55469..28abd434b05 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -112,12 +112,12 @@ stdenv.mkDerivation { unpackPhase = '' mkdir build export buildRoot="$(pwd)/build" - ln -sv ${configfile} $buildRoot/.config cd $sourceRoot ''; configurePhase = '' runHook preConfigure + ln -sv ${configfile} $buildRoot/.config make $makeFlags "''${makeFlagsArray[@]}" oldconfig runHook postConfigure ''; From 0a7d8a5175df2861d0e56b37dddf4114d7a9849c Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sat, 2 Mar 2013 08:34:53 -0500 Subject: [PATCH 120/407] stdenv.mkDerivation: Add meta and passthru to all outputs. Before, only the first output (and not even that when accessed through 'all' or its corresponding attribtue) had meta information and the relevant passthru attributes. This doesn't change stdenv's hash and the tarball still builds, I'm pretty sure this is safe for master. --- pkgs/stdenv/generic/default.nix | 86 +++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 35 deletions(-) diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 3106beed1c5..facea368c05 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -44,42 +44,58 @@ let if !allowUnfree && (let l = attrs.meta.license or ""; in l == "unfree" || l == "unfree-redistributable" || l == lib.licenses.proprietary) then throw "package ‘${attrs.name}’ has an unfree license, refusing to evaluate" else - (derivation ( - (removeAttrs attrs ["meta" "passthru" "crossAttrs"]) - // (let - buildInputs = attrs.buildInputs or []; - buildNativeInputs = attrs.buildNativeInputs or []; - propagatedBuildInputs = attrs.propagatedBuildInputs or []; - propagatedBuildNativeInputs = attrs.propagatedBuildNativeInputs or []; - crossConfig = attrs.crossConfig or null; - in - { - builder = attrs.realBuilder or shell; - args = attrs.args or ["-e" (attrs.builder or ./default-builder.sh)]; - stdenv = result; - system = result.system; + let + drv = derivation ( + (removeAttrs attrs ["meta" "passthru" "crossAttrs"]) + // (let + buildInputs = attrs.buildInputs or []; + buildNativeInputs = attrs.buildNativeInputs or []; + propagatedBuildInputs = attrs.propagatedBuildInputs or []; + propagatedBuildNativeInputs = attrs.propagatedBuildNativeInputs or []; + crossConfig = attrs.crossConfig or null; + in + { + builder = attrs.realBuilder or shell; + args = attrs.args or ["-e" (attrs.builder or ./default-builder.sh)]; + stdenv = result; + system = result.system; - # Inputs built by the cross compiler. - buildInputs = lib.optionals (crossConfig != null) buildInputs; - propagatedBuildInputs = lib.optionals (crossConfig != null) - propagatedBuildInputs; - # Inputs built by the usual native compiler. - buildNativeInputs = buildNativeInputs ++ lib.optionals - (crossConfig == null) buildInputs; - propagatedBuildNativeInputs = propagatedBuildNativeInputs ++ - lib.optionals (crossConfig == null) propagatedBuildInputs; - })) - ) - # The meta attribute is passed in the resulting attribute set, - # but it's not part of the actual derivation, i.e., it's not - # passed to the builder and is not a dependency. But since we - # include it in the result, it *is* available to nix-env for - # queries. - // { meta = attrs.meta or {}; } - # Pass through extra attributes that are not inputs, but - # should be made available to Nix expressions using the - # derivation (e.g., in assertions). - // (attrs.passthru or {}); + # Inputs built by the cross compiler. + buildInputs = lib.optionals (crossConfig != null) buildInputs; + propagatedBuildInputs = lib.optionals (crossConfig != null) + propagatedBuildInputs; + # Inputs built by the usual native compiler. + buildNativeInputs = buildNativeInputs ++ lib.optionals + (crossConfig == null) buildInputs; + propagatedBuildNativeInputs = propagatedBuildNativeInputs ++ + lib.optionals (crossConfig == null) propagatedBuildInputs; + })); + + outputs = drv.outputs or [ "out" ]; + + commonAttrs = drv // (builtins.listToAttrs outputsList) // + ({ all = map (x: x.value) outputsList; + # The meta attribute is passed in the resulting attribute set, + # but it's not part of the actual derivation, i.e., it's not + # passed to the builder and is not a dependency. But since we + # include it in the result, it *is* available to nix-env for + # queries. + meta = attrs.meta or {}; + }) // + # Pass through extra attributes that are not inputs, but + # should be made available to Nix expressions using the + # derivation (e.g., in assertions). + (attrs.passthru or {}); + + outputToAttrListElement = outputName: + { name = outputName; + value = commonAttrs // { + inherit (builtins.getAttr outputName drv) outPath drvPath type outputName; + }; + }; + + outputsList = map outputToAttrListElement outputs; + in (builtins.head outputsList).value; # Utility flags to test the type of platform. isDarwin = result.system == "x86_64-darwin"; From da71b6d579a7d1ebd9a2a96c7e25b8d13e6d4c9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 2 Mar 2013 14:44:51 +0100 Subject: [PATCH 121/407] rekonq: update Note it won't build with kde 4.7 and newer versions even require 4.9 which we don't have yet (4.10 is the current upstream). --- .../networking/browsers/rekonq/default.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/browsers/rekonq/default.nix b/pkgs/applications/networking/browsers/rekonq/default.nix index fe573559961..c8542ad7a52 100644 --- a/pkgs/applications/networking/browsers/rekonq/default.nix +++ b/pkgs/applications/networking/browsers/rekonq/default.nix @@ -1,14 +1,16 @@ -{ stdenv, fetchurl, kdelibs, gettext, pkgconfig, shared_desktop_ontologies, qca2, qoauth }: +{ stdenv, fetchurl, kde4, gettext, pkgconfig, shared_desktop_ontologies, qca2, qoauth }: + +assert builtins.compareVersions "4.8.3" kde4.release != 1; # https://bugs.kde.org/show_bug.cgi?id=306077 stdenv.mkDerivation rec { - name = "rekonq-1.1"; + name = "rekonq-1.70"; # >=1.80 need kde >=4.9.0 src = fetchurl { url = "mirror://sourceforge/rekonq/${name}.tar.bz2"; - sha256 = "1bs733mwyfb7bxnial8n49b82ip04sark2mxwlq7ixxsbgq7972l"; + sha256 = "05zqm329vajsn32l5b5nlbw92gl3irdcx8kifr4y921i9bkzigad"; }; - buildInputs = [ kdelibs qca2 qoauth ]; + buildInputs = [ kde4.kdelibs qca2 qoauth ]; nativeBuildInputs = [ gettext pkgconfig shared_desktop_ontologies ]; From 5d952411c600d9d9794c222f109ca934f712a567 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sat, 2 Mar 2013 09:10:01 -0500 Subject: [PATCH 122/407] Remove duplication in linuxPackagesFor It's silly to pass in self when we can do let self = whatever; in self. --- pkgs/top-level/all-packages.nix | 158 ++++++++++++++++---------------- 1 file changed, 81 insertions(+), 77 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6bcbf0f7fb6..1fb24e19ef2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6008,120 +6008,124 @@ let for a specific kernel. This function can then be called for whatever kernel you're using. */ - linuxPackagesFor = kernel: self: let callPackage = newScope self; in rec { + linuxPackagesFor = kernel: + let + callPackage = newScope self; - inherit kernel; + self = { + inherit kernel; - acpi_call = callPackage ../os-specific/linux/acpi-call {}; + acpi_call = callPackage ../os-specific/linux/acpi-call {}; - bbswitch = callPackage ../os-specific/linux/bbswitch {}; + bbswitch = callPackage ../os-specific/linux/bbswitch {}; - ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { }; + ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { }; - aufs = - if kernel.features ? aufs2 then - callPackage ../os-specific/linux/aufs/2.nix { } - else if kernel.features ? aufs3 then - callPackage ../os-specific/linux/aufs/3.nix { } - else null; + aufs = + if self.kernel.features ? aufs2 then + callPackage ../os-specific/linux/aufs/2.nix { } + else if self.kernel.features ? aufs3 then + callPackage ../os-specific/linux/aufs/3.nix { } + else null; - aufs_util = - if kernel.features ? aufs2 then - callPackage ../os-specific/linux/aufs-util/2.nix { } - else if kernel.features ? aufs3 then - callPackage ../os-specific/linux/aufs-util/3.nix { } - else null; + aufs_util = + if self.kernel.features ? aufs2 then + callPackage ../os-specific/linux/aufs-util/2.nix { } + else if self.kernel.features ? aufs3 then + callPackage ../os-specific/linux/aufs-util/3.nix { } + else null; - blcr = callPackage ../os-specific/linux/blcr { }; + blcr = callPackage ../os-specific/linux/blcr { }; - cryptodev = callPackage ../os-specific/linux/cryptodev { }; + cryptodev = callPackage ../os-specific/linux/cryptodev { }; - e1000e = callPackage ../os-specific/linux/e1000e {}; + e1000e = callPackage ../os-specific/linux/e1000e {}; - exmap = callPackage ../os-specific/linux/exmap { }; + exmap = callPackage ../os-specific/linux/exmap { }; - frandom = callPackage ../os-specific/linux/frandom { }; + frandom = callPackage ../os-specific/linux/frandom { }; - iscsitarget = callPackage ../os-specific/linux/iscsitarget { }; + iscsitarget = callPackage ../os-specific/linux/iscsitarget { }; - iwlwifi = callPackage ../os-specific/linux/iwlwifi { }; + iwlwifi = callPackage ../os-specific/linux/iwlwifi { }; - iwlwifi4965ucode = - (if (builtins.compareVersions kernel.version "2.6.27" == 0) - || (builtins.compareVersions kernel.version "2.6.27" == 1) - then iwlwifi4965ucodeV2 - else iwlwifi4965ucodeV1); + iwlwifi4965ucode = + (if (builtins.compareVersions self.kernel.version "2.6.27" == 0) + || (builtins.compareVersions self.kernel.version "2.6.27" == 1) + then iwlwifi4965ucodeV2 + else iwlwifi4965ucodeV1); - atheros = callPackage ../os-specific/linux/atheros/0.9.4.nix { }; + atheros = callPackage ../os-specific/linux/atheros/0.9.4.nix { }; - broadcom_sta = callPackage ../os-specific/linux/broadcom-sta/default.nix { }; + broadcom_sta = callPackage ../os-specific/linux/broadcom-sta/default.nix { }; - kernelHeaders = callPackage ../os-specific/linux/kernel-headers { }; + kernelHeaders = callPackage ../os-specific/linux/kernel-headers { }; - nvidia_x11 = callPackage ../os-specific/linux/nvidia-x11 { }; + nvidia_x11 = callPackage ../os-specific/linux/nvidia-x11 { }; - nvidia_x11_legacy96 = callPackage ../os-specific/linux/nvidia-x11/legacy96.nix { }; - nvidia_x11_legacy173 = callPackage ../os-specific/linux/nvidia-x11/legacy173.nix { }; - nvidia_x11_legacy304 = callPackage ../os-specific/linux/nvidia-x11/legacy304.nix { }; + nvidia_x11_legacy96 = callPackage ../os-specific/linux/nvidia-x11/legacy96.nix { }; + nvidia_x11_legacy173 = callPackage ../os-specific/linux/nvidia-x11/legacy173.nix { }; + nvidia_x11_legacy304 = callPackage ../os-specific/linux/nvidia-x11/legacy304.nix { }; - openafsClient = callPackage ../servers/openafs-client { }; + openafsClient = callPackage ../servers/openafs-client { }; - openiscsi = callPackage ../os-specific/linux/open-iscsi { }; + openiscsi = callPackage ../os-specific/linux/open-iscsi { }; - wis_go7007 = callPackage ../os-specific/linux/wis-go7007 { }; + wis_go7007 = callPackage ../os-specific/linux/wis-go7007 { }; - kqemu = callPackage ../os-specific/linux/kqemu { }; + kqemu = callPackage ../os-specific/linux/kqemu { }; - klibc = callPackage ../os-specific/linux/klibc { - linuxHeaders = glibc.kernelHeaders; - }; + klibc = callPackage ../os-specific/linux/klibc { + linuxHeaders = glibc.kernelHeaders; + }; - splashutils = let hasFbConDecor = if kernel ? features - then kernel.features ? fbConDecor - else kernel.config.isEnabled "FB_CON_DECOR"; - in if hasFbConDecor then pkgs.splashutils else null; + splashutils = let hasFbConDecor = if self.kernel ? features + then self.kernel.features ? fbConDecor + else self.kernel.config.isEnabled "FB_CON_DECOR"; + in if hasFbConDecor then pkgs.splashutils else null; - /* compiles but has to be integrated into the kernel somehow - Let's have it uncommented and finish it.. - */ - ndiswrapper = callPackage ../os-specific/linux/ndiswrapper { }; + /* compiles but has to be integrated into the kernel somehow + Let's have it uncommented and finish it.. + */ + ndiswrapper = callPackage ../os-specific/linux/ndiswrapper { }; - perf = callPackage ../os-specific/linux/kernel/perf.nix { }; + perf = callPackage ../os-specific/linux/kernel/perf.nix { }; - spl = callPackage ../os-specific/linux/spl/default.nix { }; + spl = callPackage ../os-specific/linux/spl/default.nix { }; - sysprof = callPackage ../development/tools/profiling/sysprof { - inherit (gnome) libglade; - }; + sysprof = callPackage ../development/tools/profiling/sysprof { + inherit (gnome) libglade; + }; - systemtap = callPackage ../development/tools/profiling/systemtap { - linux = kernel; - inherit (gnome) libglademm; - }; + systemtap = callPackage ../development/tools/profiling/systemtap { + linux = self.kernel; + inherit (gnome) libglademm; + }; - tp_smapi = callPackage ../os-specific/linux/tp_smapi { }; + tp_smapi = callPackage ../os-specific/linux/tp_smapi { }; - v86d = callPackage ../os-specific/linux/v86d { }; + v86d = callPackage ../os-specific/linux/v86d { }; - virtualbox = callPackage ../applications/virtualization/virtualbox { - stdenv = stdenv_32bit; - inherit (gnome) libIDL; - }; + virtualbox = callPackage ../applications/virtualization/virtualbox { + stdenv = stdenv_32bit; + inherit (gnome) libIDL; + }; - virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions { }; + virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions { }; - zfs = callPackage ../os-specific/linux/zfs/default.nix { }; - }; + zfs = callPackage ../os-specific/linux/zfs/default.nix { }; + }; + in self; # Build the kernel modules for the some of the kernels. - linuxPackages_2_6_32 = recurseIntoAttrs (linuxPackagesFor linux_2_6_32 pkgs.linuxPackages_2_6_32); - linuxPackages_2_6_35 = recurseIntoAttrs (linuxPackagesFor linux_2_6_35 pkgs.linuxPackages_2_6_35); - linuxPackages_3_0 = recurseIntoAttrs (linuxPackagesFor linux_3_0 pkgs.linuxPackages_3_0); - linuxPackages_3_2 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_2 pkgs.linuxPackages_3_2); - linuxPackages_3_2_xen = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_2_xen pkgs.linuxPackages_3_2_xen); - linuxPackages_3_4 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_4 pkgs.linuxPackages_3_4); - linuxPackages_3_7 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_7 pkgs.linuxPackages_3_7); - linuxPackages_3_8 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_8 pkgs.linuxPackages_3_8); + linuxPackages_2_6_32 = recurseIntoAttrs (linuxPackagesFor linux_2_6_32); + linuxPackages_2_6_35 = recurseIntoAttrs (linuxPackagesFor linux_2_6_35); + linuxPackages_3_0 = recurseIntoAttrs (linuxPackagesFor linux_3_0); + linuxPackages_3_2 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_2); + linuxPackages_3_2_xen = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_2_xen); + linuxPackages_3_4 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_4); + linuxPackages_3_7 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_7); + linuxPackages_3_8 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_8); # The current default kernel / kernel modules. linux = linuxPackages.kernel; From face3a8242ab6c5a9ebea210069dfc7d66fa347d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 2 Mar 2013 15:45:13 +0100 Subject: [PATCH 123/407] librdf: update the libraries --- pkgs/development/libraries/librdf/default.nix | 28 +++++++++++++------ pkgs/development/libraries/librdf/raptor2.nix | 6 ++-- pkgs/development/libraries/librdf/rasqal.nix | 8 +++--- pkgs/development/libraries/librdf/redland.nix | 4 +-- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/pkgs/development/libraries/librdf/default.nix b/pkgs/development/libraries/librdf/default.nix index 1f3e5b40937..21c952b7fb8 100644 --- a/pkgs/development/libraries/librdf/default.nix +++ b/pkgs/development/libraries/librdf/default.nix @@ -1,18 +1,30 @@ -{ stdenv, fetchurl, pkgconfig, librdf_raptor, ladspaH, openssl, zlib }: +{ stdenv, fetchurl, pkgconfig, libtool, automake, autoconf +, librdf_raptor, librdf_raptor2, ladspaH, openssl, zlib #, swh_lv2 +}: -stdenv.mkDerivation { - name = "liblrdf-0.4.0"; +stdenv.mkDerivation rec { + version = "0.5.0"; + name = "liblrdf-${version}"; src = fetchurl { - url = mirror://sourceforge/lrdf/liblrdf/0.4.0/liblrdf-0.4.0.tar.gz; - sha256 = "015jv7pp0a0qxgljgdvf7d01nj4fx0zgzg0wayjp7v86pa38xscm"; + url = "http://github.com/swh/LRDF/archive/${version}.tar.gz"; + sha256 = "18p2flb2sv2hq6w2qkd29z9c7knnwqr3f12i2srshlzx6vwkm05s"; }; - buildInputs = [ pkgconfig ladspaH openssl zlib ]; + postPatch = "sed -i -e 's:usr/local:usr:' examples/{instances,remove}_test.c"; - propagatedBuildInputs = [ librdf_raptor ]; + preConfigure = "rm m4/* && autoreconf -if"; - meta = { + buildInputs = [ + pkgconfig libtool automake autoconf ladspaH openssl zlib /*swh_lv2*/ + #librdf_raptor + ]; + + propagatedBuildInputs = [ librdf_raptor2 ]; + + #doCheck = true; # would need swh_lv2 and some path patching + + meta = { description = "A lightweight RDF library with special support for LADSPA plugins."; homepage = http://sourceforge.net/projects/lrdf/; license = "GPLv2"; diff --git a/pkgs/development/libraries/librdf/raptor2.nix b/pkgs/development/libraries/librdf/raptor2.nix index 2f956630fa1..4658cf28335 100644 --- a/pkgs/development/libraries/librdf/raptor2.nix +++ b/pkgs/development/libraries/librdf/raptor2.nix @@ -1,18 +1,18 @@ { stdenv, fetchurl, libxml2, libxslt, curl }: stdenv.mkDerivation rec { - name = "raptor2-2.0.4"; + name = "raptor2-2.0.8"; # 2.0.9 misses a header and so fails liblrdf src = fetchurl { url = "http://download.librdf.org/source/${name}.tar.gz"; - sha256 = "0viaam60adhsxim2vaq5xs1pfmm6wiidxpkrhwyl7x9mz8x9vx1l"; + sha256 = "1mz7cxnfw73saf74c9if06n2mlsvn2rnn67vy7j2mq3wkhy0hcb0"; }; buildInputs = [ libxml2 libxslt ]; postInstall = "rm -rvf $out/share/gtk-doc"; - meta = { + meta = { description = "The RDF Parser Toolkit"; homepage = "http://librdf.org/raptor"; license = "LGPL-2.1 Apache-2.0"; diff --git a/pkgs/development/libraries/librdf/rasqal.nix b/pkgs/development/libraries/librdf/rasqal.nix index 9b65487ccfb..6d6f9d05808 100644 --- a/pkgs/development/libraries/librdf/rasqal.nix +++ b/pkgs/development/libraries/librdf/rasqal.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, librdf_raptor2, gmp, pkgconfig, pcre, libxml2 }: stdenv.mkDerivation rec { - name = "rasqal-0.9.26"; + name = "rasqal-0.9.30"; src = fetchurl { url = "http://download.librdf.org/source/${name}.tar.gz"; - sha256 = "1drjcy1k9g72iis0ghllzn7n0w03bahhrd2p5hs39anbm6mr0yk9"; + sha256 = "1z8wifq79kivcwpwzmjnjdrbr65zam190gpxhgrvsyfch0yykw5b"; }; nativeBuildInputs = [ pkgconfig ]; @@ -15,8 +15,8 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ librdf_raptor2 ]; postInstall = "rm -rvf $out/share/gtk-doc"; - - meta = { + + meta = { description = "Library that handles Resource Description Framework (RDF)"; homepage = "http://librdf.org/rasqal"; license = "LGPL-2.1 Apache-2.0"; diff --git a/pkgs/development/libraries/librdf/redland.nix b/pkgs/development/libraries/librdf/redland.nix index 47e25877be9..26b3de70dcd 100644 --- a/pkgs/development/libraries/librdf/redland.nix +++ b/pkgs/development/libraries/librdf/redland.nix @@ -7,11 +7,11 @@ }: stdenv.mkDerivation rec { - name = "redland-1.0.14"; + name = "redland-1.0.16"; src = fetchurl { url = "http://download.librdf.org/source/${name}.tar.gz"; - sha256 = "1i460q9gslb7l75hjwc6w2kp2wk7fgp8lr7phamg33c6j013y30k"; + sha256 = "1gcx0h5dxa3c4xhhjk3gr0708zjj0n6zpslvbjfi2qbf13y798nr"; }; nativeBuildInputs = [ perl pkgconfig ]; From 0bdd926a32658fa8b6481dc388968862c6e9c427 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sat, 2 Mar 2013 09:53:56 -0500 Subject: [PATCH 124/407] linux/manual-config: put build and source trees into a separate 'dev' output. This makes it possible to still build out-of-tree modules without making a system using this kernel depend on the full source and build tree at runtime. Note that references to the source tree are removed from kernel modules after build. Ideally, this would be accomplished by modifying the Makefile that puts the reference there in the first place, but I haven't tracked that down yet. --- .../linux/kernel/manual-config.nix | 34 ++++++++++++------- pkgs/top-level/all-packages.nix | 4 +-- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 28abd434b05..2191cc046e4 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -75,16 +75,6 @@ let "INSTALL_PATH=$(out)" ] ++ (optional isModular "INSTALL_MOD_PATH=$(out)") ++ optional installsFirmware "INSTALL_FW_PATH=$(out)/lib/firmware"; -in - -stdenv.mkDerivation { - name = "linux-${version}"; - - enableParallelBuilding = true; - - passthru = { - inherit version modDirVersion config kernelPatches src; - }; sourceRoot = stdenv.mkDerivation { name = "linux-${version}-source"; @@ -108,11 +98,25 @@ stdenv.mkDerivation { mv $sourceRoot $out ''; }; +in + +stdenv.mkDerivation { + name = "linux-${version}"; + + enableParallelBuilding = true; + + outputs = if isModular then [ "out" "dev" ] else null; + + passthru = { + inherit version modDirVersion config kernelPatches src; + }; + + inherit sourceRoot; unpackPhase = '' mkdir build export buildRoot="$(pwd)/build" - cd $sourceRoot + cd ${sourceRoot} ''; configurePhase = '' @@ -140,7 +144,9 @@ stdenv.mkDerivation { make modules_install $makeFlags "''${makeFlagsArray[@]}" \ $installFlags "''${installFlagsArray[@]}" rm -f $out/lib/modules/${modDirVersion}/build - mv $buildRoot $out/lib/modules/${modDirVersion}/build + mkdir -p $dev/lib/modules/${modDirVersion} + mv $out/lib/modules/${modDirVersion}/source $dev/lib/modules/${modDirVersion}/source + mv $buildRoot $dev/lib/modules/${modDirVersion}/build '' else optionalString installsFirmware '' make firmware_install $makeFlags "''${makeFlagsArray[@]}" \ $installFlags "''${installFlagsArray[@]}" @@ -149,6 +155,10 @@ stdenv.mkDerivation { postFixup = if isModular then '' if [ -z "$dontStrip" ]; then find $out -name "*.ko" -print0 | xargs -0 -r strip -S + # Remove all references to the source directory to avoid unneeded + # runtime dependencies + find $out -name "*.ko" -print0 | xargs -0 -r sed -i \ + "s|${sourceRoot}|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${sourceRoot.name}|g" fi '' else null; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1fb24e19ef2..2ccd00e8ad1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6013,7 +6013,7 @@ let callPackage = newScope self; self = { - inherit kernel; + kernel = kernel.dev or kernel; acpi_call = callPackage ../os-specific/linux/acpi-call {}; @@ -6115,7 +6115,7 @@ let zfs = callPackage ../os-specific/linux/zfs/default.nix { }; }; - in self; + in (self // { kernel = self.kernel.out; }); # Build the kernel modules for the some of the kernels. linuxPackages_2_6_32 = recurseIntoAttrs (linuxPackagesFor linux_2_6_32); From 06e4059f80e95061c4f53200bf5892d4543b5d14 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 2 Mar 2013 16:00:50 +0100 Subject: [PATCH 125/407] fix pythonDocs install path --- pkgs/development/interpreters/python/docs/2.6-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.6-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/template.nix | 4 ++-- 25 files changed, 50 insertions(+), 50 deletions(-) diff --git a/pkgs/development/interpreters/python/docs/2.6-html.nix b/pkgs/development/interpreters/python/docs/2.6-html.nix index 481998ae591..66f8c9ae996 100644 --- a/pkgs/development/interpreters/python/docs/2.6-html.nix +++ b/pkgs/development/interpreters/python/docs/2.6-html.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python26-docs-html-2.6.8"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-html.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix index 1a718819ac0..c3da7e1dc11 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python26-docs-pdf-a4-2.6.8"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-pdf-a4.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix index 305c456efc4..b17be3da822 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python26-docs-pdf-letter-2.6.8"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-pdf-letter.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/2.6-text.nix b/pkgs/development/interpreters/python/docs/2.6-text.nix index 6ced3597eeb..64b44adcccd 100644 --- a/pkgs/development/interpreters/python/docs/2.6-text.nix +++ b/pkgs/development/interpreters/python/docs/2.6-text.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python26-docs-text-2.6.8"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-text.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/2.7-html.nix b/pkgs/development/interpreters/python/docs/2.7-html.nix index 1c8ef0bc460..7db8d04403c 100644 --- a/pkgs/development/interpreters/python/docs/2.7-html.nix +++ b/pkgs/development/interpreters/python/docs/2.7-html.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python27-docs-html-2.7.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-html.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix index d2d9f3616ce..fcabd3f4b56 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python27-docs-pdf-a4-2.7.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-pdf-a4.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix index 0361d3a2027..643a2ba2a88 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python27-docs-pdf-letter-2.7.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-pdf-letter.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/2.7-text.nix b/pkgs/development/interpreters/python/docs/2.7-text.nix index 4422822cced..65b236f4e89 100644 --- a/pkgs/development/interpreters/python/docs/2.7-text.nix +++ b/pkgs/development/interpreters/python/docs/2.7-text.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python27-docs-text-2.7.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/2.7.3/python-2.7.3-docs-text.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.0-html.nix b/pkgs/development/interpreters/python/docs/3.0-html.nix index 6abc92b1853..9c20d6cad4c 100644 --- a/pkgs/development/interpreters/python/docs/3.0-html.nix +++ b/pkgs/development/interpreters/python/docs/3.0-html.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python30-docs-html-3.0.1"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-html.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix index 658cfd27ee7..5a8fcb1ce40 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python30-docs-pdf-a4-3.0.1"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-pdf-a4.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix index 5a86ea0a701..cf5116dac48 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python30-docs-pdf-letter-3.0.1"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-pdf-letter.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.0-text.nix b/pkgs/development/interpreters/python/docs/3.0-text.nix index 4031594e768..c1af5cd686b 100644 --- a/pkgs/development/interpreters/python/docs/3.0-text.nix +++ b/pkgs/development/interpreters/python/docs/3.0-text.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python30-docs-text-3.0.1"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.0.1/python-3.0.1-docs-text.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.1-html.nix b/pkgs/development/interpreters/python/docs/3.1-html.nix index 7226cbde3bd..d85007ee455 100644 --- a/pkgs/development/interpreters/python/docs/3.1-html.nix +++ b/pkgs/development/interpreters/python/docs/3.1-html.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python31-docs-html-3.1.5"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-html.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix index ddde9ccfe2e..0a260e86e7d 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python31-docs-pdf-a4-3.1.5"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-pdf-a4.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix index 929ecbdb92c..e54ec24490a 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python31-docs-pdf-letter-3.1.5"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-pdf-letter.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.1-text.nix b/pkgs/development/interpreters/python/docs/3.1-text.nix index 76caa5e5232..ea637674469 100644 --- a/pkgs/development/interpreters/python/docs/3.1-text.nix +++ b/pkgs/development/interpreters/python/docs/3.1-text.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python31-docs-text-3.1.5"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.1.5/python-3.1.5-docs-text.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.2-html.nix b/pkgs/development/interpreters/python/docs/3.2-html.nix index 3df6e1da0f9..c55ad82a985 100644 --- a/pkgs/development/interpreters/python/docs/3.2-html.nix +++ b/pkgs/development/interpreters/python/docs/3.2-html.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python32-docs-html-3.2.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-html.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix index 6d37cc86d95..3c19afa16b7 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python32-docs-pdf-a4-3.2.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-pdf-a4.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix index 578e6969748..5b3180c415c 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python32-docs-pdf-letter-3.2.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-pdf-letter.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.2-text.nix b/pkgs/development/interpreters/python/docs/3.2-text.nix index 062732e9cea..8cf4160a76a 100644 --- a/pkgs/development/interpreters/python/docs/3.2-text.nix +++ b/pkgs/development/interpreters/python/docs/3.2-text.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python32-docs-text-3.2.3"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.2.3/python-3.2.3-docs-text.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.3-html.nix b/pkgs/development/interpreters/python/docs/3.3-html.nix index 6530153c51b..5421e6be195 100644 --- a/pkgs/development/interpreters/python/docs/3.3-html.nix +++ b/pkgs/development/interpreters/python/docs/3.3-html.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python33-docs-html-3.3.0"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-html.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix index 037e53e63d6..7326a1b3c92 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python33-docs-pdf-a4-3.3.0"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-pdf-a4.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix index e4dd3dc7ebc..c918ecc6f4f 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python33-docs-pdf-letter-3.3.0"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-pdf-letter.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/3.3-text.nix b/pkgs/development/interpreters/python/docs/3.3-text.nix index f3a0c049dd1..99752b9d08d 100644 --- a/pkgs/development/interpreters/python/docs/3.3-text.nix +++ b/pkgs/development/interpreters/python/docs/3.3-text.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "python33-docs-text-3.3.0"; src = fetchurl { url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-text.tar.bz2; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } diff --git a/pkgs/development/interpreters/python/docs/template.nix b/pkgs/development/interpreters/python/docs/template.nix index 621bf9e7cd9..263878b3f75 100644 --- a/pkgs/development/interpreters/python/docs/template.nix +++ b/pkgs/development/interpreters/python/docs/template.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "pythonMAJORMINOR-docs-TYPE-VERSION"; src = fetchurl { url = URL; @@ -10,6 +10,6 @@ stdenv.mkDerivation { }; installPhase = '' mkdir -p $out/share/docs - cp -R ./ $out/share/docs/ + cp -R ./ $out/share/docs/${name} ''; } From 4f697db7dd9744bdf4b88ca314951df655f1e28a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 2 Mar 2013 17:06:12 +0100 Subject: [PATCH 126/407] haskell-github-backup: update to version 1.20120314 --- .../git-and-tools/github-backup/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/version-management/git-and-tools/github-backup/default.nix b/pkgs/applications/version-management/git-and-tools/github-backup/default.nix index a2489dbc628..6897ef003ad 100644 --- a/pkgs/applications/version-management/git-and-tools/github-backup/default.nix +++ b/pkgs/applications/version-management/git-and-tools/github-backup/default.nix @@ -1,11 +1,15 @@ -{ cabal, extensibleExceptions, filepath, github, hslogger, IfElse +{ cabal, fetchurl, extensibleExceptions, filepath, github, hslogger, IfElse , MissingH, mtl, network, prettyShow }: cabal.mkDerivation (self: { pname = "github-backup"; version = "1.20120314"; - sha256 = "07ilb6cg1kbz4id53l4m46wjxzs7yxcmpz6280ym6k885dras5v2"; + src = fetchurl { + url = "https://github.com/joeyh/github-backup/archive/1.20120314.tar.gz"; + sha256 = "0rmgkylsnxbry02g5bxq5af03azgydfz6dzyvqzbhnkwavhqdlqy"; + name = "github-backup-${self.pname}.tar.gz"; + }; isLibrary = false; isExecutable = true; buildDepends = [ From 05dd692662489593e59207b4191f635b8ee60208 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 2 Mar 2013 17:06:34 +0100 Subject: [PATCH 127/407] haskell-github: update to pre-release version 0.5.1 from Github --- pkgs/development/libraries/haskell/github/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/github/default.nix b/pkgs/development/libraries/haskell/github/default.nix index 461780c1853..3eafcd70940 100644 --- a/pkgs/development/libraries/haskell/github/default.nix +++ b/pkgs/development/libraries/haskell/github/default.nix @@ -1,12 +1,17 @@ -{ cabal, aeson, attoparsec, caseInsensitive, conduit, dataDefault +{ cabal, fetchurl, aeson, attoparsec, caseInsensitive, conduit, dataDefault , failure, HTTP, httpConduit, httpTypes, network, text, time , unorderedContainers, vector }: cabal.mkDerivation (self: { pname = "github"; - version = "0.5.0"; - sha256 = "1zq9cwvpd6s8xd1ki2ifsj79vd4rm8vab9731f2p8zdm8g7mh5gd"; + version = "0.5.0-patched"; + src = fetchurl { + url = "https://github.com/mike-burns/github/archive/df415af64ebd4a28f1f8e5cc726e933545efdd7e.tar.gz"; + sha256 = "1d1ya5j1qz1nf5kfkxp48gb0xbcr4fmf9y0kfpd3gxivfrdkfrig"; + name = "github-${self.version}.tar.gz"; + }; + patches = [ (fetchurl { url = "https://github.com/mike-burns/github/pull/33.patch"; sha256 = "1d0m73ygzpk5rd6ahbrf58mxca56s5sd70yrf7fn2r1bh0rlacap"; }) ]; buildDepends = [ aeson attoparsec caseInsensitive conduit dataDefault failure HTTP httpConduit httpTypes network text time unorderedContainers vector From 3b5b1be3cffe2b4a0cc9b6846b1c5a477eec856d Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 2 Mar 2013 20:15:28 +0400 Subject: [PATCH 128/407] Linux 3.8.1 --- pkgs/os-specific/linux/kernel/linux-3.8.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-3.8.nix b/pkgs/os-specific/linux/kernel/linux-3.8.nix index 1c59a2ff486..622a549084d 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.8.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.8.nix @@ -251,8 +251,8 @@ in import ./generic.nix ( rec { - version = "3.8"; - modDirVersion = "3.8.0"; + version = "3.8.1"; + modDirVersion = "3.8.1"; testing = false; preConfigure = '' @@ -261,7 +261,7 @@ import ./generic.nix ( src = fetchurl { url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz"; - sha256 = "0jqqhfskd88480hkwnkc8rlwkwb56p322irp9xm6gmfyzfyx2w70"; + sha256 = "14kgsi6rrvzsqckispkahj2kczdifgr8gh3vx449qikdlrizbpl3"; }; config = configWithPlatform stdenv.platform; From d9a2b1f52011f584f4eace8afbcdbec6076094ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 2 Mar 2013 21:17:30 +0100 Subject: [PATCH 129/407] ardour(2): fix and minor update. - use fetchurl from Gentoo mirror instead of failing SVN fetch - minor version update - use system libraries as much as possible - fix building --- pkgs/applications/audio/ardour/default.nix | 41 +++++++++------------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix index 58ed4c61f4b..3ed650d4ae7 100644 --- a/pkgs/applications/audio/ardour/default.nix +++ b/pkgs/applications/audio/ardour/default.nix @@ -1,49 +1,42 @@ -{ stdenv, fetchsvn, scons, boost, pkgconfig, fftw, librdf_raptor +{ stdenv, fetchurl, scons, boost, pkgconfig, fftw, librdf_raptor2 , librdf_rasqal, jackaudio, flac, libsamplerate, alsaLib, libxml2 +, lilv, lv2, serd, sord, sratom, suil # these are probably optional , libxslt, libsndfile, libsigcxx, libusb, cairomm, glib, pango -, gtk, glibmm, gtkmm, libgnomecanvas, liblo, aubio -, fftwSinglePrec, libmad, automake, autoconf, libtool, liblrdf }: +, gtk, glibmm, gtkmm, libgnomecanvas, libgnomecanvasmm, liblo, aubio +, fftwSinglePrec, libmad, automake, autoconf, libtool, liblrdf, curl }: stdenv.mkDerivation rec { name = "ardour-${version}"; - version = "2.8.12"; + version = "2.8.16"; - # svn is the source to get official releases from their site? - # alternative: wget --data-urlencode 'key=7c4b2e1df903aae5ff5cc4077cda801e' http://ardour.org/downloader - # but hash is changing ? - - # TODO: see if this is also true when using a tag (~goibhniu) - - # This version does not run it exits with the following error: - # raptor_new_uri_for_rdf_concept called with Raptor V1 world object - # raptor_general.c:240:raptor_init: fatal error: raptor_init() failedAborted - src = fetchsvn { - url = "http://subversion.ardour.org/svn/ardour2/tags/${version}"; - sha256 = "0d4y8bv12kb0yd2srvxn5388sa4cl5d5rk381saj9f3jgpiciyky"; + src = fetchurl { + url = "mirror://gentoo/distfiles/${name}.tar.bz2"; + sha256 = "0h2y0x4yznalllja53anjil2gmgcb26f39zshc4gl1d1kc8k5vip"; }; - patchPhase = '' - sed -e "s#/usr/bin/which#type -P#" -i libs/glibmm2/autogen.sh + postPatch = '' + #sed -e "s#/usr/bin/which#type -P#" -i libs/glibmm2/autogen.sh echo '#include "ardour/svn_revision.h"' > libs/ardour/svn_revision.cc echo -e 'namespace ARDOUR {\n extern const char* svn_revision = "2.8.12";\n }\n' >> libs/ardour/svn_revision.cc ''; buildInputs = [ - scons boost pkgconfig fftw librdf_raptor librdf_rasqal jackaudio + scons boost pkgconfig fftw librdf_raptor2 librdf_rasqal jackaudio flac libsamplerate alsaLib libxml2 libxslt libsndfile libsigcxx - libusb cairomm glib pango gtk glibmm gtkmm libgnomecanvas liblrdf - liblo aubio fftwSinglePrec libmad autoconf automake libtool + #lilv lv2 serd sord sratom suil + libusb cairomm glib pango gtk glibmm gtkmm libgnomecanvas libgnomecanvasmm liblrdf + liblo aubio fftwSinglePrec libmad autoconf automake libtool curl ]; buildPhase = '' mkdir -p $out export CXX=g++ - scons PREFIX=$out install + scons PREFIX=$out SYSLIBS=1 install ''; - + installPhase = ":"; - meta = { + meta = { description = "Multi-track hard disk recording software"; longDescription = '' Broken: use ardour3-svn instead diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 471010c2c21..6a76452fbf7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6525,7 +6525,7 @@ let antiword = callPackage ../applications/office/antiword {}; ardour = callPackage ../applications/audio/ardour { - inherit (gnome) libgnomecanvas; + inherit (gnome) libgnomecanvas libgnomecanvasmm; }; ardour3 = lowPrio (callPackage ../applications/audio/ardour/ardour3.nix { From d7abc31f5a26bf61b43beb01ff6e079bc29229ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 2 Mar 2013 22:34:37 +0100 Subject: [PATCH 130/407] fix the last master merge, sorry for the problems Now I carefully re-merged all the conflicts and tested some builds. Hopefully it's all OK now. --- pkgs/applications/networking/browsers/chromium/default.nix | 1 - pkgs/os-specific/linux/qemu-kvm/default.nix | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index a2d2483ae84..019ba1792f3 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -127,7 +127,6 @@ in stdenv.mkDerivation rec { patches = optional cupsSupport ./cups_allow_deprecated.patch ++ optional pulseSupport ./pulseaudio_array_bounds.patch ++ optional post25 ./clone_detached.patch - ++ optional post25 ./clone_detached.patch ++ [ ./glibc-2.16-use-siginfo_t.patch ]; postPatch = '' diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix index b220bebfc50..11242483fdc 100644 --- a/pkgs/os-specific/linux/qemu-kvm/default.nix +++ b/pkgs/os-specific/linux/qemu-kvm/default.nix @@ -14,14 +14,13 @@ stdenv.mkDerivation rec { sha256 = "018vb5nmk2fsm143bs2bl2wirhasd4b10d7jchl32zik4inbk2p9"; }; - patches = [ ./fix-librt-check.patch ]; - buildInputs = [ attr zlib SDL alsaLib pkgconfig pciutils libuuid vde2 libjpeg libpng ncurses python glib libaio mesa texinfo perl ] ++ stdenv.lib.optionals spiceSupport [ spice_protocol spice ]; - patchPhase = "patchShebangs ." + stdenv.lib.optionalString spiceSupport '' + patches = [ ./fix-librt-check.patch ]; + postPatch = "patchShebangs ." + stdenv.lib.optionalString spiceSupport '' for i in configure spice-qemu-char.c ui/spice-input.c ui/spice-core.c ui/qemu-spice.h; do substituteInPlace $i --replace '#include ' '#include ' done From 930e4d53918591a690a6a3a9a14a7feaed7c1357 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sun, 3 Mar 2013 06:43:31 +0100 Subject: [PATCH 131/407] pythonDocs: add meta.maintainers, subgroup attrset by doctype --- .../interpreters/python/docs/2.6-html.nix | 3 + .../interpreters/python/docs/2.6-pdf-a4.nix | 3 + .../python/docs/2.6-pdf-letter.nix | 3 + .../interpreters/python/docs/2.6-text.nix | 3 + .../interpreters/python/docs/2.7-html.nix | 3 + .../interpreters/python/docs/2.7-pdf-a4.nix | 3 + .../python/docs/2.7-pdf-letter.nix | 3 + .../interpreters/python/docs/2.7-text.nix | 3 + .../interpreters/python/docs/3.0-html.nix | 3 + .../interpreters/python/docs/3.0-pdf-a4.nix | 3 + .../python/docs/3.0-pdf-letter.nix | 3 + .../interpreters/python/docs/3.0-text.nix | 3 + .../interpreters/python/docs/3.1-html.nix | 3 + .../interpreters/python/docs/3.1-pdf-a4.nix | 3 + .../python/docs/3.1-pdf-letter.nix | 3 + .../interpreters/python/docs/3.1-text.nix | 3 + .../interpreters/python/docs/3.2-html.nix | 3 + .../interpreters/python/docs/3.2-pdf-a4.nix | 3 + .../python/docs/3.2-pdf-letter.nix | 3 + .../interpreters/python/docs/3.2-text.nix | 3 + .../interpreters/python/docs/3.3-html.nix | 3 + .../interpreters/python/docs/3.3-pdf-a4.nix | 3 + .../python/docs/3.3-pdf-letter.nix | 3 + .../interpreters/python/docs/3.3-text.nix | 3 + .../interpreters/python/docs/default.nix | 144 +++++++++--------- .../interpreters/python/docs/generate.sh | 14 +- .../interpreters/python/docs/template.nix | 3 + 27 files changed, 159 insertions(+), 74 deletions(-) diff --git a/pkgs/development/interpreters/python/docs/2.6-html.nix b/pkgs/development/interpreters/python/docs/2.6-html.nix index 66f8c9ae996..8c6522c9b6c 100644 --- a/pkgs/development/interpreters/python/docs/2.6-html.nix +++ b/pkgs/development/interpreters/python/docs/2.6-html.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix index c3da7e1dc11..6c0d008e2fa 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix index b17be3da822..fec87fb11c8 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/2.6-text.nix b/pkgs/development/interpreters/python/docs/2.6-text.nix index 64b44adcccd..50b3c2eca9c 100644 --- a/pkgs/development/interpreters/python/docs/2.6-text.nix +++ b/pkgs/development/interpreters/python/docs/2.6-text.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/2.7-html.nix b/pkgs/development/interpreters/python/docs/2.7-html.nix index 7db8d04403c..db77a1e8487 100644 --- a/pkgs/development/interpreters/python/docs/2.7-html.nix +++ b/pkgs/development/interpreters/python/docs/2.7-html.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix index fcabd3f4b56..844ed60db5f 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix index 643a2ba2a88..f4149307c47 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/2.7-text.nix b/pkgs/development/interpreters/python/docs/2.7-text.nix index 65b236f4e89..cd11b580af4 100644 --- a/pkgs/development/interpreters/python/docs/2.7-text.nix +++ b/pkgs/development/interpreters/python/docs/2.7-text.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.0-html.nix b/pkgs/development/interpreters/python/docs/3.0-html.nix index 9c20d6cad4c..58c73c4a7c9 100644 --- a/pkgs/development/interpreters/python/docs/3.0-html.nix +++ b/pkgs/development/interpreters/python/docs/3.0-html.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix index 5a8fcb1ce40..8bd52d98506 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix index cf5116dac48..32d3ddf8175 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.0-text.nix b/pkgs/development/interpreters/python/docs/3.0-text.nix index c1af5cd686b..966c705c6af 100644 --- a/pkgs/development/interpreters/python/docs/3.0-text.nix +++ b/pkgs/development/interpreters/python/docs/3.0-text.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.1-html.nix b/pkgs/development/interpreters/python/docs/3.1-html.nix index d85007ee455..6963681ae89 100644 --- a/pkgs/development/interpreters/python/docs/3.1-html.nix +++ b/pkgs/development/interpreters/python/docs/3.1-html.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix index 0a260e86e7d..8078805266d 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix index e54ec24490a..233d678140b 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.1-text.nix b/pkgs/development/interpreters/python/docs/3.1-text.nix index ea637674469..7687f6dd8ca 100644 --- a/pkgs/development/interpreters/python/docs/3.1-text.nix +++ b/pkgs/development/interpreters/python/docs/3.1-text.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.2-html.nix b/pkgs/development/interpreters/python/docs/3.2-html.nix index c55ad82a985..d686fe0281f 100644 --- a/pkgs/development/interpreters/python/docs/3.2-html.nix +++ b/pkgs/development/interpreters/python/docs/3.2-html.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix index 3c19afa16b7..c741fdcdce6 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix index 5b3180c415c..1a95f0a673e 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.2-text.nix b/pkgs/development/interpreters/python/docs/3.2-text.nix index 8cf4160a76a..3ee06d3f0ae 100644 --- a/pkgs/development/interpreters/python/docs/3.2-text.nix +++ b/pkgs/development/interpreters/python/docs/3.2-text.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.3-html.nix b/pkgs/development/interpreters/python/docs/3.3-html.nix index 5421e6be195..564bbfd7a07 100644 --- a/pkgs/development/interpreters/python/docs/3.3-html.nix +++ b/pkgs/development/interpreters/python/docs/3.3-html.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix index 7326a1b3c92..8e6206f0d39 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix index c918ecc6f4f..14036122c95 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/3.3-text.nix b/pkgs/development/interpreters/python/docs/3.3-text.nix index 99752b9d08d..b8faa4c3cfe 100644 --- a/pkgs/development/interpreters/python/docs/3.3-text.nix +++ b/pkgs/development/interpreters/python/docs/3.3-text.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } diff --git a/pkgs/development/interpreters/python/docs/default.nix b/pkgs/development/interpreters/python/docs/default.nix index 165e89c4b80..9ec67173be3 100644 --- a/pkgs/development/interpreters/python/docs/default.nix +++ b/pkgs/development/interpreters/python/docs/default.nix @@ -2,76 +2,84 @@ let pythonDocs = { - python33_html = import ./3.3-html.nix { - inherit stdenv fetchurl; + html = { + python33 = import ./3.3-html.nix { + inherit stdenv fetchurl; + }; + python32 = import ./3.2-html.nix { + inherit stdenv fetchurl; + }; + python31 = import ./3.1-html.nix { + inherit stdenv fetchurl; + }; + python30 = import ./3.0-html.nix { + inherit stdenv fetchurl; + }; + python27 = import ./2.7-html.nix { + inherit stdenv fetchurl; + }; + python26 = import ./2.6-html.nix { + inherit stdenv fetchurl; + }; }; - python33_pdf_a4 = import ./3.3-pdf-a4.nix { - inherit stdenv fetchurl; + pdf_a4 = { + python33 = import ./3.3-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python32 = import ./3.2-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python31 = import ./3.1-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python30 = import ./3.0-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python27 = import ./2.7-pdf-a4.nix { + inherit stdenv fetchurl; + }; + python26 = import ./2.6-pdf-a4.nix { + inherit stdenv fetchurl; + }; }; - python33_pdf_letter = import ./3.3-pdf-letter.nix { - inherit stdenv fetchurl; + pdf_letter = { + python33 = import ./3.3-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python32 = import ./3.2-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python31 = import ./3.1-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python30 = import ./3.0-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python27 = import ./2.7-pdf-letter.nix { + inherit stdenv fetchurl; + }; + python26 = import ./2.6-pdf-letter.nix { + inherit stdenv fetchurl; + }; }; - python33_text = import ./3.3-text.nix { - inherit stdenv fetchurl; - }; - python32_html = import ./3.2-html.nix { - inherit stdenv fetchurl; - }; - python32_pdf_a4 = import ./3.2-pdf-a4.nix { - inherit stdenv fetchurl; - }; - python32_pdf_letter = import ./3.2-pdf-letter.nix { - inherit stdenv fetchurl; - }; - python32_text = import ./3.2-text.nix { - inherit stdenv fetchurl; - }; - python31_html = import ./3.1-html.nix { - inherit stdenv fetchurl; - }; - python31_pdf_a4 = import ./3.1-pdf-a4.nix { - inherit stdenv fetchurl; - }; - python31_pdf_letter = import ./3.1-pdf-letter.nix { - inherit stdenv fetchurl; - }; - python31_text = import ./3.1-text.nix { - inherit stdenv fetchurl; - }; - python30_html = import ./3.0-html.nix { - inherit stdenv fetchurl; - }; - python30_pdf_a4 = import ./3.0-pdf-a4.nix { - inherit stdenv fetchurl; - }; - python30_pdf_letter = import ./3.0-pdf-letter.nix { - inherit stdenv fetchurl; - }; - python30_text = import ./3.0-text.nix { - inherit stdenv fetchurl; - }; - python27_html = import ./2.7-html.nix { - inherit stdenv fetchurl; - }; - python27_pdf_a4 = import ./2.7-pdf-a4.nix { - inherit stdenv fetchurl; - }; - python27_pdf_letter = import ./2.7-pdf-letter.nix { - inherit stdenv fetchurl; - }; - python27_text = import ./2.7-text.nix { - inherit stdenv fetchurl; - }; - python26_html = import ./2.6-html.nix { - inherit stdenv fetchurl; - }; - python26_pdf_a4 = import ./2.6-pdf-a4.nix { - inherit stdenv fetchurl; - }; - python26_pdf_letter = import ./2.6-pdf-letter.nix { - inherit stdenv fetchurl; - }; - python26_text = import ./2.6-text.nix { - inherit stdenv fetchurl; + text = { + python33 = import ./3.3-text.nix { + inherit stdenv fetchurl; + }; + python32 = import ./3.2-text.nix { + inherit stdenv fetchurl; + }; + python31 = import ./3.1-text.nix { + inherit stdenv fetchurl; + }; + python30 = import ./3.0-text.nix { + inherit stdenv fetchurl; + }; + python27 = import ./2.7-text.nix { + inherit stdenv fetchurl; + }; + python26 = import ./2.6-text.nix { + inherit stdenv fetchurl; + }; }; }; in pythonDocs diff --git a/pkgs/development/interpreters/python/docs/generate.sh b/pkgs/development/interpreters/python/docs/generate.sh index c5e990c3a99..10d457e7836 100755 --- a/pkgs/development/interpreters/python/docs/generate.sh +++ b/pkgs/development/interpreters/python/docs/generate.sh @@ -15,8 +15,9 @@ let pythonDocs = { EOF -for version in $VERSIONS; do - for type in $TYPES; do +for type in $TYPES; do + echo " ${type/-/_} = {" >> default.nix + for version in $VERSIONS; do major=$(echo -n ${version}| cut -d. -f1) minor=$(echo -n ${version}| cut -d. -f2) outfile=${major}.${minor}-${type}.nix @@ -38,16 +39,17 @@ for version in $VERSIONS; do -e "s,URL,${url}," \ -e "s,SHA,${sha}," < template.nix > ${outfile} - attrname=python${major}${minor}_$(echo -n ${type} |sed -e "s,-,_,g") + attrname=python${major}${minor} cat >>default.nix <> default.nix done echo "}; in pythonDocs" >> default.nix diff --git a/pkgs/development/interpreters/python/docs/template.nix b/pkgs/development/interpreters/python/docs/template.nix index 263878b3f75..17bc19a4e73 100644 --- a/pkgs/development/interpreters/python/docs/template.nix +++ b/pkgs/development/interpreters/python/docs/template.nix @@ -12,4 +12,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/docs cp -R ./ $out/share/docs/${name} ''; + meta = { + maintainers = [ lib.maintainers.chaoflow ]; + }; } From e9f13b9c3b2d3404451b0c9d6e52bc5d3befe82b Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sun, 3 Mar 2013 13:20:58 +0100 Subject: [PATCH 132/407] python-ldap-2.4.10 --- pkgs/top-level/python-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f98a3f08320..87fc906e25b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2655,12 +2655,12 @@ pythonPackages = python.modules // rec { }); ldap = buildPythonPackage rec { - name = "python-ldap-2.4.3"; + name = "python-ldap-2.4.10"; namePrefix = ""; src = fetchurl { url = "http://pypi.python.org/packages/source/p/python-ldap/${name}.tar.gz"; - sha256 = "17aysa9b4zjw00ikjirf4m37xbp2ifj1g0zjs14xzqqib3nh1yw8"; + sha256 = "0m6fm2alcb5v9xdcjv2nw2lhz9nnd3mnr5lrmf397hi4pw0pik37"; }; NIX_CFLAGS_COMPILE = "-I${pkgs.cyrus_sasl}/include/sasl"; From 266e283fafbc36dbba89a8be5dc6717fa0011a7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 3 Mar 2013 17:43:15 +0100 Subject: [PATCH 133/407] Add jack_oscrolloscope: a waveform viewer for JACK --- .../audio/jack-oscrolloscope/default.nix | 26 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 pkgs/applications/audio/jack-oscrolloscope/default.nix diff --git a/pkgs/applications/audio/jack-oscrolloscope/default.nix b/pkgs/applications/audio/jack-oscrolloscope/default.nix new file mode 100644 index 00000000000..dbceb0a336c --- /dev/null +++ b/pkgs/applications/audio/jack-oscrolloscope/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, SDL, jackaudio, mesa, pkgconfig }: + +stdenv.mkDerivation rec { + name = "jack_oscrolloscope-${version}"; + version = "0.7"; + + src = fetchurl { + url = "http://das.nasophon.de/download/${name}.tar.gz"; + sha256 = "1pl55in0sj7h5r06n1v91im7d18pplvhbjhjm1fdl39zwnyxiash"; + }; + + buildInputs = [ SDL jackaudio mesa pkgconfig ]; + + installPhase = '' + mkdir -p $out/bin + mv jack_oscrolloscope $out/bin/ + ''; + + meta = with stdenv.lib; { + description = "A simple waveform viewer for JACK"; + homepage = http://das.nasophon.de/jack_oscrolloscope; + license = licenses.gpl2; + maintainers = [ maintainers.goibhniu ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ab42e4733e6..cce2d7cec2f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7368,6 +7368,8 @@ let jack_capture = callPackage ../applications/audio/jack-capture { }; + jack_oscrolloscope = callPackage ../applications/audio/jack-oscrolloscope { }; + jackmeter = callPackage ../applications/audio/jackmeter { }; jalv = callPackage ../applications/audio/jalv { }; From 9455f23d223a520676dd240f64f7210e5c58f018 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Sun, 3 Mar 2013 19:34:59 +0100 Subject: [PATCH 134/407] eduke32: Bumped to rev 3542 - very important --- pkgs/games/eduke32/default.nix | 10 +++++----- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/games/eduke32/default.nix b/pkgs/games/eduke32/default.nix index 6eab8acce75..b8a215e3b49 100644 --- a/pkgs/games/eduke32/default.nix +++ b/pkgs/games/eduke32/default.nix @@ -1,14 +1,14 @@ -{stdenv, fetchurl, SDL, SDL_mixer, libvorbis, mesa, gtk, pkgconfig, nasm, makeDesktopItem}: +{stdenv, fetchurl, SDL, SDL_mixer, libvorbis, mesa, gtk, pkgconfig, nasm, libvpx, flac, makeDesktopItem}: stdenv.mkDerivation rec { - name = "eduke32-1944"; + name = "eduke32-3542"; src = fetchurl { - url = http://dukeworld.duke4.net/eduke32/synthesis/20110724-1944/eduke32_src_20110724-1944.tar.bz2; - sha256 = "0y2y9agydfkdq4krp4lz22br3p23as6hrqhq7l9djw0pm2y76fqh"; + url = http://dukeworld.duke4.net/eduke32/synthesis/20130303-3542/eduke32_src_20130303-3542.tar.bz2; + sha256 = "0v1q2bkmpnac5l9x97nnlhrrb95518vmhxx48zv3ncvmpafl1mqc"; }; - buildInputs = [ SDL SDL_mixer libvorbis mesa gtk pkgconfig ] + buildInputs = [ SDL SDL_mixer libvorbis mesa gtk pkgconfig libvpx flac ] ++ stdenv.lib.optional (stdenv.system == "i686-linux") nasm; NIX_CFLAGS_COMPILE = "-I${SDL}/include/SDL"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cce2d7cec2f..70c4c079f3a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8251,7 +8251,9 @@ let dwarf_fortress = callPackage_i686 ../games/dwarf-fortress { }; - eduke32 = callPackage ../games/eduke32 { }; + eduke32 = callPackage ../games/eduke32 { + stdenv = overrideGCC stdenv gcc47; + }; egoboo = callPackage ../games/egoboo { }; From bcc9c80b8588fd778336046f6efa5ae81470f0d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 3 Mar 2013 19:40:17 +0100 Subject: [PATCH 135/407] Tidy up: use the web interface for the git repo as the homepage There have been no important updates to this driver, but it should be included in X11R7.8 --- pkgs/os-specific/linux/xf86-video-nested/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/xf86-video-nested/default.nix b/pkgs/os-specific/linux/xf86-video-nested/default.nix index b3cad227d27..0d0639390a7 100644 --- a/pkgs/os-specific/linux/xf86-video-nested/default.nix +++ b/pkgs/os-specific/linux/xf86-video-nested/default.nix @@ -23,8 +23,8 @@ stdenv.mkDerivation { ''; meta = { - homepage = git://anongit.freedesktop.org/xorg/driver/xf86-video-nested; - description = "Driver to run Xorg on top of Xorg or something else"; + homepage = http://cgit.freedesktop.org/xorg/driver/xf86-video-nested; + description = "A driver to run Xorg on top of Xorg or something else"; maintainers = [ stdenv.lib.maintainers.goibhniu ]; platforms = stdenv.lib.platforms.linux; }; From 14ceed2ddb13942116b2d1ee52f72d179ac221e5 Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Sun, 3 Mar 2013 20:52:31 +0100 Subject: [PATCH 136/407] gob2: Use fetchurl_gnome. Previous URL disappeared. --- pkgs/development/tools/misc/gob2/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/misc/gob2/default.nix b/pkgs/development/tools/misc/gob2/default.nix index 4308a559268..c86a65f33b6 100644 --- a/pkgs/development/tools/misc/gob2/default.nix +++ b/pkgs/development/tools/misc/gob2/default.nix @@ -1,10 +1,11 @@ -{ stdenv, fetchurl, pkgconfig, glib, bison, flex }: +{ stdenv, fetchurl_gnome, pkgconfig, glib, bison, flex }: stdenv.mkDerivation rec { - name = "gob2-2.0.18"; + name = src.pkgname; - src = fetchurl { - url = "http://ftp.5z.com/pub/gob/${name}.tar.gz"; + src = fetchurl_gnome { + project = "gob2"; + major = "2"; minor = "0"; patchlevel = "18"; extension = "gz"; sha256 = "1r242s3rsxyqiw2ic2gdpvvrx903jgjd1aa4mkl26in5k9zk76fa"; }; From 4d181e526ea102db29fa68c60e37b6aacbbd1ec3 Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Sun, 3 Mar 2013 20:53:48 +0100 Subject: [PATCH 137/407] mopidy: Add some more dependencies needed for the HTTP frontend --- pkgs/applications/audio/mopidy/default.nix | 2 +- pkgs/applications/audio/mopidy/git.nix | 2 +- pkgs/top-level/python-packages.nix | 26 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix index 934669f225c..d285c4b0e23 100644 --- a/pkgs/applications/audio/mopidy/default.nix +++ b/pkgs/applications/audio/mopidy/default.nix @@ -14,7 +14,7 @@ pythonPackages.buildPythonPackage rec { }; propagatedBuildInputs = with pythonPackages; [ - gst_python pygobject pykka pyspotify pylast + gst_python pygobject pykka pyspotify pylast cherrypy ws4py ]; # python zip complains about old timestamps diff --git a/pkgs/applications/audio/mopidy/git.nix b/pkgs/applications/audio/mopidy/git.nix index 81728e646c3..2b5e1627ac6 100644 --- a/pkgs/applications/audio/mopidy/git.nix +++ b/pkgs/applications/audio/mopidy/git.nix @@ -14,7 +14,7 @@ pythonPackages.buildPythonPackage rec { }; propagatedBuildInputs = with pythonPackages; [ - gst_python pygobject pykka pyspotify pylast + gst_python pygobject pykka pyspotify pylast cherrypy ws4py ]; # python zip complains about old timestamps diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 87fc906e25b..e4e3d22c568 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4718,4 +4718,30 @@ pythonPackages = python.modules // rec { }; }; + ws4py = buildPythonPackage rec { + name = "ws4py-${version}"; + + version = "git-20130303"; + + src = fetchgit { + url = "https://github.com/Lawouach/WebSocket-for-Python.git"; + rev = "ace276500ca7e4c357595e3773be151d37bcd6e2"; + sha256 = "04m4m3ncn7g4rb81xg5n28imns7rsq8d2w98gjpaib6vlmyly3g1"; + }; + + # python zip complains about old timestamps + preConfigure = '' + find -print0 | xargs -0 touch + ''; + + # Tests depend on other packages + doCheck = false; + + meta = { + homepage = https://ws4py.readthedocs.org; + description = "A WebSocket package for Python"; + maintainers = [ stdenv.lib.maintainers.rickynils ]; + }; + }; + }; in pythonPackages From cddc4c6f631fd00cbd4d87a8fa5cb26cb08d485f Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 4 Mar 2013 10:23:05 -0500 Subject: [PATCH 138/407] Update rubygems --- .../interpreters/ruby/generated.nix | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index 5e3b37490f0..5a959eeb26f 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -17,47 +17,47 @@ g: # Get dependencies from patched gems bitbucket_backup = g.bitbucket_backup_0_2_2; builder = g.builder_3_2_0; buildr = g.buildr_1_4_10; - bundler = g.bundler_1_3_0; - childprocess = g.childprocess_0_3_8; + bundler = g.bundler_1_3_1; + childprocess = g.childprocess_0_3_9; daemons = g.daemons_1_1_9; diff_lcs = g.diff_lcs_1_1_3; dimensions = g.dimensions_1_2_0; erubis = g.erubis_2_7_0; - eventmachine = g.eventmachine_1_0_0; + eventmachine = g.eventmachine_1_0_1; fakes3 = g.fakes3_0_1_5; ffi = g.ffi_1_4_0; foreman = g.foreman_0_61_0; highline = g.highline_1_6_15; hike = g.hike_1_2_1; hoe = g.hoe_3_1_0; - i18n = g.i18n_0_6_1; + i18n = g.i18n_0_6_4; journey = g.journey_1_0_4; jruby_pageant = g.jruby_pageant_1_1_1; jsduck = g.jsduck_4_6_2; json = g.json_1_7_7; json_pure = g.json_pure_1_7_7; - libv8 = g.libv8_3_3_10_4_x86_64_linux; + libv8 = g.libv8_3_3_10_4; macaddr = g.macaddr_1_6_1; mail = g.mail_2_4_4; mime_types = g.mime_types_1_21; minitar = g.minitar_0_5_3; multi_json = g.multi_json_1_6_1; net_sftp = g.net_sftp_2_0_5; - net_ssh = g.net_ssh_2_6_5; + net_ssh = g.net_ssh_2_6_6; nix = g.nix_0_1_1; nokogiri = g.nokogiri_1_5_6; parallel = g.parallel_0_6_2; polyglot = g.polyglot_0_3_3; rack = g.rack_1_5_2; rack_cache = g.rack_cache_1_2; - rack_protection = g.rack_protection_1_3_2; + rack_protection = g.rack_protection_1_4_0; rack_ssl = g.rack_ssl_1_3_3; rack_test = g.rack_test_0_6_2; rails = g.rails_3_2_12; railties = g.railties_3_2_12; rake = g.rake_10_0_3; rb_fsevent = g.rb_fsevent_0_9_3; - rdiscount = g.rdiscount_2_0_7; + rdiscount = g.rdiscount_2_0_7_1; rdoc = g.rdoc_3_12_2; rjb = g.rjb_1_4_6; rspec = g.rspec_2_11_0; @@ -67,16 +67,16 @@ g: # Get dependencies from patched gems rubyforge = g.rubyforge_2_0_4; rubyzip = g.rubyzip_0_9_9; sass = g.sass_3_2_6; - selenium_webdriver = g.selenium_webdriver_2_30_0; + selenium_webdriver = g.selenium_webdriver_2_31_0; sinatra = g.sinatra_1_3_2; sprockets = g.sprockets_2_2_2; systemu = g.systemu_2_5_2; therubyracer = g.therubyracer_0_10_2; thin = g.thin_1_5_0; thor = g.thor_0_17_0; - tilt = g.tilt_1_3_3; + tilt = g.tilt_1_3_4; treetop = g.treetop_1_4_12; - tzinfo = g.tzinfo_0_3_35; + tzinfo = g.tzinfo_0_3_36; uuid = g.uuid_2_3_7; uuidtools = g.uuidtools_2_1_3; websocket = g.websocket_1_0_7; @@ -156,7 +156,7 @@ installed versions.''; longDescription = ''Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes. Strong conventions for associations, validations, aggregations, migrations, and testing come baked-in.''; }; name = ''activerecord-3.2.12''; - requiredGems = [ g.activesupport_3_2_12 g.activemodel_3_2_12 g.arel_3_0_2 g.tzinfo_0_3_35 ]; + requiredGems = [ g.activesupport_3_2_12 g.activemodel_3_2_12 g.arel_3_0_2 g.tzinfo_0_3_36 ]; sha256 = ''0fl8iyv3gcy72y79iv4ccyck8ik02rrl3pdy7yxfhlnqgryp8syi''; }; activeresource_3_2_12 = { @@ -178,7 +178,7 @@ installed versions.''; longDescription = ''A toolkit of support libraries and Ruby core extensions extracted from the Rails framework. Rich support for multibyte strings, internationalization, time zones, and testing.''; }; name = ''activesupport-3.2.12''; - requiredGems = [ g.i18n_0_6_1 g.multi_json_1_6_1 ]; + requiredGems = [ g.i18n_0_6_4 g.multi_json_1_6_1 ]; sha256 = ''1giqkprxjf5gyfyhn5nz9q8a5gi3v8irxhkpqr00zc5fw1azllsg''; }; arel_3_0_2 = { @@ -316,30 +316,30 @@ for those one-off tasks, with a language that's a joy to use. ''; }; name = ''buildr-1.4.10''; - requiredGems = [ g.rake_0_9_2_2 g.builder_3_1_3 g.net_ssh_2_6_0 g.net_sftp_2_0_5 g.rubyzip_0_9_9 g.highline_1_6_2 g.json_pure_1_7_5 g.rubyforge_2_0_4 g.hoe_3_1_0 g.rjb_1_4_2 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_1_3 g.rspec_expectations_2_11_3 g.rspec_mocks_2_11_3 g.rspec_core_2_11_1 g.rspec_2_11_0 g.xml_simple_1_1_1 g.minitar_0_5_3 g.bundler_1_3_0 ]; + requiredGems = [ g.rake_0_9_2_2 g.builder_3_1_3 g.net_ssh_2_6_0 g.net_sftp_2_0_5 g.rubyzip_0_9_9 g.highline_1_6_2 g.json_pure_1_7_5 g.rubyforge_2_0_4 g.hoe_3_1_0 g.rjb_1_4_2 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_1_3 g.rspec_expectations_2_11_3 g.rspec_mocks_2_11_3 g.rspec_core_2_11_1 g.rspec_2_11_0 g.xml_simple_1_1_1 g.minitar_0_5_3 g.bundler_1_3_1 ]; sha256 = ''1x192r8ab5zr9rlp1i9b3pi3y74f9pj2w491wkgshgwj22akh6vn''; }; - bundler_1_3_0 = { + bundler_1_3_1 = { basename = ''bundler''; meta = { description = ''The best way to manage your application's dependencies''; homepage = ''http://gembundler.com''; longDescription = ''Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably''; }; - name = ''bundler-1.3.0''; + name = ''bundler-1.3.1''; requiredGems = [ ]; - sha256 = ''16ss4fh97wbg5n5l00wkinxdsj7bjgqzv9h6yhygv45wi8rbf8zp''; + sha256 = ''1nmvfsk9148nkl0bdcs167kiihp89zwkyvjs0khvi4df6s9km725''; }; - childprocess_0_3_8 = { + childprocess_0_3_9 = { basename = ''childprocess''; meta = { description = ''This gem aims at being a simple and reliable solution for controlling external programs running in the background on any Ruby / OS combination.''; homepage = ''http://github.com/jarib/childprocess''; longDescription = ''This gem aims at being a simple and reliable solution for controlling external programs running in the background on any Ruby / OS combination.''; }; - name = ''childprocess-0.3.8''; + name = ''childprocess-0.3.9''; requiredGems = [ g.ffi_1_4_0 ]; - sha256 = ''08rp4krw0g60567ih4w51ndlq2pg92al0dycy0bs0m3msq68nlq4''; + sha256 = ''0jbz2ix7ff9ry8717lhcq9w8j8yd45akw48giwgdqccay5mlph7d''; }; daemons_1_1_9 = { basename = ''daemons''; @@ -411,7 +411,7 @@ is the MIT license.''; requiredGems = [ ]; sha256 = ''1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3''; }; - eventmachine_1_0_0 = { + eventmachine_1_0_1 = { basename = ''eventmachine''; meta = { description = ''Ruby/EventMachine library''; @@ -427,9 +427,9 @@ are provided with the package, primarily to serve as examples. The real goal of EventMachine is to enable programs to easily interface with other programs using TCP/IP, especially if custom protocols are required.''; }; - name = ''eventmachine-1.0.0''; + name = ''eventmachine-1.0.1''; requiredGems = [ ]; - sha256 = ''1qshsikskkfbbhai9s0qhmnpa326m83k9yzivwvkl2dc1ffpk2pz''; + sha256 = ''1v7im8v9y5jb863794irgnlqzdg669w6v1g89sln0l511gjnjv52''; }; fakes3_0_1_5 = { basename = ''fakes3''; @@ -524,16 +524,16 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf''; requiredGems = [ g.rake_0_9_6 ]; sha256 = ''0i961x0hrd6fs1nsfham87dhn64gqpnai27l14jag7qbnp3a79yp''; }; - i18n_0_6_1 = { + i18n_0_6_4 = { basename = ''i18n''; meta = { description = ''New wave Internationalization support for Ruby''; homepage = ''http://github.com/svenfuchs/i18n''; longDescription = ''New wave Internationalization support for Ruby.''; }; - name = ''i18n-0.6.1''; + name = ''i18n-0.6.4''; requiredGems = [ ]; - sha256 = ''0x3lhp1vl1k4dfqx6k93hhxcpjkz57y8cf007ws7p845ywk6ibfl''; + sha256 = ''0wz1rnrs4n21j1rw9a120j2pfdkbikp1yvxaqi3mk30iw6mx4p0f''; }; journey_1_0_4 = { basename = ''journey''; @@ -565,7 +565,7 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf''; longDescription = ''Documentation generator for Sencha JS frameworks''; }; name = ''jsduck-4.6.2''; - requiredGems = [ g.rdiscount_2_0_7 g.json_1_7_7 g.parallel_0_6_2 g.therubyracer_0_10_2 g.dimensions_1_2_0 ]; + requiredGems = [ g.rdiscount_2_0_7_1 g.json_1_7_7 g.parallel_0_6_2 g.therubyracer_0_10_2 g.dimensions_1_2_0 ]; sha256 = ''035w4igfa6yy6234ff4zbiqfjn0bhwqs6k8kji52l7gzgskwmzln''; }; json_1_7_7 = { @@ -601,16 +601,16 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf''; requiredGems = [ ]; sha256 = ''0jxp0amx9xhka0ixnhvfgwc5ydr82hkxp81pvw32z31arx7jrwl6''; }; - libv8_3_3_10_4_x86_64_linux = { + libv8_3_3_10_4 = { basename = ''libv8''; meta = { description = ''Distribution of the V8 JavaScript engine''; homepage = ''http://github.com/fractaloop/libv8''; longDescription = ''Distributes the V8 JavaScript engine in binary and source forms in order to support fast builds of The Ruby Racer''; }; - name = ''libv8-3.3.10.4-x86_64-linux''; + name = ''libv8-3.3.10.4''; requiredGems = [ ]; - sha256 = ''13lnmkm9z3xqyi8rlsycfd7wybv044pxcisrkyq0cx7ig91a0dmc''; + sha256 = ''0zy585rs1ihm8nsw525wgmbkcq7aqy1k9dbkk8s6953adl0bpz42''; }; macaddr_1_6_1 = { basename = ''macaddr''; @@ -631,7 +631,7 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf''; longDescription = ''A really Ruby Mail handler.''; }; name = ''mail-2.4.4''; - requiredGems = [ g.mime_types_1_21 g.treetop_1_4_12 g.i18n_0_6_1 ]; + requiredGems = [ g.mime_types_1_21 g.treetop_1_4_12 g.i18n_0_6_4 ]; sha256 = ''0idylz5pnlz34mrxm7gs9jbll2c0k0y9dq2qarhxk30gwyvjaxi3''; }; mime_types_1_21 = { @@ -696,7 +696,7 @@ added from the the {LTSW collection}[http://www.ltsw.se/knbase/internet/mime.htp longDescription = ''A pure Ruby implementation of the SFTP client protocol''; }; name = ''net-sftp-2.0.5''; - requiredGems = [ g.net_ssh_2_6_5 ]; + requiredGems = [ g.net_ssh_2_6_6 ]; sha256 = ''0lqk735wspm8rbiyxpbil8ikrqcyg00ss1df7fny0761c3as6m0v''; }; net_ssh_2_6_0 = { @@ -710,16 +710,16 @@ added from the the {LTSW collection}[http://www.ltsw.se/knbase/internet/mime.htp requiredGems = [ g.jruby_pageant_1_1_1 ]; sha256 = ''18fsgps4a9dfrjszkl3py8j7vw0xwi70bcp59ccj2rlr6i1jv5gw''; }; - net_ssh_2_6_5 = { + net_ssh_2_6_6 = { basename = ''net_ssh''; meta = { description = ''Net::SSH: a pure-Ruby implementation of the SSH2 client protocol.''; homepage = ''https://github.com/net-ssh/net-ssh''; longDescription = ''Net::SSH: a pure-Ruby implementation of the SSH2 client protocol. It allows you to write programs that invoke and interact with processes on remote servers, via SSH2.''; }; - name = ''net-ssh-2.6.5''; + name = ''net-ssh-2.6.6''; requiredGems = [ ]; - sha256 = ''1f21r78b0rm9gyzdc96fzih27nrags3pk00zlhfviqlfbmb1c48x''; + sha256 = ''00fdnwv3jf311jjcc51lq8w26r62vzma91i79h5hj8i1ylrilx51''; }; nix_0_1_1 = { basename = ''nix''; @@ -818,16 +818,16 @@ Also see http://rack.github.com/. requiredGems = [ g.rack_1_5_2 ]; sha256 = ''073ffpsqmy4nqxz178qisb3a4v3305c49ypj0jw6s9mkz02yvgq2''; }; - rack_protection_1_3_2 = { + rack_protection_1_4_0 = { basename = ''rack_protection''; meta = { description = ''You should use protection!''; homepage = ''http://github.com/rkh/rack-protection''; longDescription = ''You should use protection!''; }; - name = ''rack-protection-1.3.2''; + name = ''rack-protection-1.4.0''; requiredGems = [ g.rack_1_5_2 ]; - sha256 = ''0f69d491xciq1hb3mm26nxnsb3pvlf3gdkggj4ryiphimsy05n0k''; + sha256 = ''0dfydg04fzj9rz34npy6cpp0827lij440s7fls0db41lz4vb94k0''; }; rack_ssl_1_3_3 = { basename = ''rack_ssl''; @@ -863,7 +863,7 @@ request helpers feature.''; longDescription = ''Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.''; }; name = ''rails-3.2.12''; - requiredGems = [ g.activesupport_3_2_12 g.actionpack_3_2_12 g.activerecord_3_2_12 g.activeresource_3_2_12 g.actionmailer_3_2_12 g.railties_3_2_12 g.bundler_1_3_0 ]; + requiredGems = [ g.activesupport_3_2_12 g.actionpack_3_2_12 g.activerecord_3_2_12 g.activeresource_3_2_12 g.actionmailer_3_2_12 g.railties_3_2_12 g.bundler_1_3_1 ]; sha256 = ''1jjnm74nzl5v3461c0mrbpa471yd6s8hnkmnxb64c2rm95c61wxz''; }; railties_3_2_12 = { @@ -921,15 +921,15 @@ request helpers feature.''; requiredGems = [ ]; sha256 = ''0bdnxwdxj4r1kdxfi5nszbsb126njrr81p912g64xxs2bgxd1bp1''; }; - rdiscount_2_0_7 = { + rdiscount_2_0_7_1 = { basename = ''rdiscount''; meta = { description = ''Fast Implementation of Gruber's Markdown in C''; homepage = ''http://github.com/rtomayko/rdiscount''; }; - name = ''rdiscount-2.0.7''; + name = ''rdiscount-2.0.7.1''; requiredGems = [ ]; - sha256 = ''1cj9dn59xqjaglvzvd1ninid62xmih74az0glqqb90n2p42s2zs1''; + sha256 = ''1xjwi99wfyjhn72h8k709kbq2npqmw2zvikszxfg6in83yb8vmxn''; }; rdoc_3_12_2 = { basename = ''rdoc''; @@ -1057,16 +1057,16 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''10xy6k663399r881cj30fapbdsrq8jwzvnp97y8n3mhxmrvzpq28''; }; - selenium_webdriver_2_30_0 = { + selenium_webdriver_2_31_0 = { basename = ''selenium_webdriver''; meta = { description = ''The next generation developer focused tool for automated testing of webapps''; homepage = ''http://selenium.googlecode.com''; longDescription = ''WebDriver is a tool for writing automated tests of websites. It aims to mimic the behaviour of a real user, and as such interacts with the HTML of the application.''; }; - name = ''selenium-webdriver-2.30.0''; - requiredGems = [ g.multi_json_1_6_1 g.rubyzip_0_9_9 g.childprocess_0_3_8 g.websocket_1_0_7 ]; - sha256 = ''1ybx8v9m5y8ykbdbldd1mglz0xhg30iv0708ig0vzjl2522sg6v1''; + name = ''selenium-webdriver-2.31.0''; + requiredGems = [ g.multi_json_1_6_1 g.rubyzip_0_9_9 g.childprocess_0_3_9 g.websocket_1_0_7 ]; + sha256 = ''1nv3ff31g183kdb97jjz0y7ny3vdnccd09pgblpj87bzhrrdfv3r''; }; sinatra_1_3_2 = { basename = ''sinatra''; @@ -1076,7 +1076,7 @@ See RDoc for a description of RDoc's markup and basic use.''; longDescription = ''Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.''; }; name = ''sinatra-1.3.2''; - requiredGems = [ g.rack_1_5_2 g.rack_protection_1_3_2 g.tilt_1_3_3 ]; + requiredGems = [ g.rack_1_5_2 g.rack_protection_1_4_0 g.tilt_1_3_4 ]; sha256 = ''05blf915zpiwyz7agcn9rwdmddwxz0z4l3gd4qlqmrgd2vkw4sxc''; }; sprockets_2_2_2 = { @@ -1087,7 +1087,7 @@ See RDoc for a description of RDoc's markup and basic use.''; longDescription = ''Sprockets is a Rack-based asset packaging system that concatenates and serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.''; }; name = ''sprockets-2.2.2''; - requiredGems = [ g.hike_1_2_1 g.multi_json_1_6_1 g.rack_1_5_2 g.tilt_1_3_3 ]; + requiredGems = [ g.hike_1_2_1 g.multi_json_1_6_1 g.rack_1_5_2 g.tilt_1_3_4 ]; sha256 = ''15ngw3bjbyr31ygzmmdxxa30ylah6pdn8akgdy9w30vfx2vr7s7s''; }; systemu_2_5_2 = { @@ -1109,7 +1109,7 @@ See RDoc for a description of RDoc's markup and basic use.''; longDescription = ''Call javascript code and manipulate javascript objects from ruby. Call ruby code and manipulate ruby objects from javascript.''; }; name = ''therubyracer-0.10.2''; - requiredGems = [ g.libv8_3_3_10_4_x86_64_linux ]; + requiredGems = [ g.libv8_3_3_10_4 ]; sha256 = ''111hm2l613v06sy7pzjzmnyi4x11rg3c2syhnpv8fn0wnn9rdiyb''; }; thin_1_5_0 = { @@ -1120,7 +1120,7 @@ See RDoc for a description of RDoc's markup and basic use.''; longDescription = ''A thin and fast web server''; }; name = ''thin-1.5.0''; - requiredGems = [ g.rack_1_5_2 g.eventmachine_1_0_0 g.daemons_1_1_9 ]; + requiredGems = [ g.rack_1_5_2 g.eventmachine_1_0_1 g.daemons_1_1_9 ]; sha256 = ''14sd2qbbk6y108z6v723mh3f1mk8s4fwxmmn9f8dk4xkhk4rwvq1''; }; thor_0_17_0 = { @@ -1134,16 +1134,16 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''0gf46qafcfgmi20a2mnb3wkd9y6spgy2hq22h70377daj4zjxla2''; }; - tilt_1_3_3 = { + tilt_1_3_4 = { basename = ''tilt''; meta = { description = ''Generic interface to multiple Ruby template engines''; homepage = ''http://github.com/rtomayko/tilt/''; longDescription = ''Generic interface to multiple Ruby template engines''; }; - name = ''tilt-1.3.3''; + name = ''tilt-1.3.4''; requiredGems = [ ]; - sha256 = ''18qdl8nllbgwipa2ab9df3wlfgvsc8ml78hbypwc17b9qwv9bbs8''; + sha256 = ''0hw59shnf3vgpx1jv24mj0d48m72h5cm1d4bianhhkjj82mc406a''; }; treetop_1_4_12 = { basename = ''treetop''; @@ -1155,16 +1155,16 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ g.polyglot_0_3_3 g.polyglot_0_3_3 ]; sha256 = ''1jlfjq67n933sm0px0s2j965v1kl1rj8fbx6xk8y4yppkv6ygxc8''; }; - tzinfo_0_3_35 = { + tzinfo_0_3_36 = { basename = ''tzinfo''; meta = { description = ''Daylight-savings aware timezone library''; homepage = ''http://tzinfo.rubyforge.org/''; longDescription = ''TZInfo is a Ruby library that uses the standard tz (Olson) database to provide daylight savings aware transformations between times in different time zones.''; }; - name = ''tzinfo-0.3.35''; + name = ''tzinfo-0.3.36''; requiredGems = [ ]; - sha256 = ''1c52ndjqcxpgxhlclbxf98clcpni216xk5zgrkcd4px84riyjbmp''; + sha256 = ''1dk7jnhrr5lbhckgq7bh6yxgy8j7vd13qb4kr4vlk76j5ngs2whv''; }; uuid_2_3_7 = { basename = ''uuid''; From ae2b08aeb360e67ba7b8f3dc7f483c69241494c5 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 4 Mar 2013 10:43:20 -0500 Subject: [PATCH 139/407] Add some fixes for gem nix. Ideally these would be picked up upstream. Pull request at https://gitorious.org/ruby-nix/ruby-nix/merge_requests/1 --- .../ruby/fix-gem-nix-versions.patch | 35 +++++++++++++++++++ .../development/interpreters/ruby/patches.nix | 7 ++++ 2 files changed, 42 insertions(+) create mode 100644 pkgs/development/interpreters/ruby/fix-gem-nix-versions.patch diff --git a/pkgs/development/interpreters/ruby/fix-gem-nix-versions.patch b/pkgs/development/interpreters/ruby/fix-gem-nix-versions.patch new file mode 100644 index 00000000000..c67eaff2ac5 --- /dev/null +++ b/pkgs/development/interpreters/ruby/fix-gem-nix-versions.patch @@ -0,0 +1,35 @@ +diff --git a/lib/nix/gem-nix-command.rb b/lib/nix/gem-nix-command.rb +index 8d3733e..ba942ff 100644 +--- a/lib/nix/gem-nix-command.rb ++++ b/lib/nix/gem-nix-command.rb +@@ -108,11 +108,12 @@ class Gem::Commands::NixCommand < Gem::Command + + # args to dep informations + args.each { |arg| +- if arg =~ /(.+)-?(.*)?/ then ++ if arg =~ /(.+)-([0-9][^-]+)/ then + gem_name = $1 +- version = $2.empty? ? Gem::Requirement.default : Gem::Version.new($2) ++ version = Gem::Version.new($2) + else +- raise Gem::CommandLineError, "couldn't parse arg. expected: name or name-version" ++ gem_name = arg ++ version = Gem::Requirement.default + end + + adddep(Gem::Dependency.new gem_name, version) +@@ -162,7 +163,13 @@ class Gem::Commands::NixCommand < Gem::Command + spec, source_uri = find_gem_with_source(dep) + full_name = spec.full_name + +- return if @gems_with_deps.key?(full_name) ++ if @gems_with_deps.key?(full_name) ++ unless @gems_with_deps[full_name].nil? ++ return @gems_with_deps[full_name][0] ++ else ++ return nil ++ end ++ end + @gems_with_deps[full_name] = nil # there maybe circular dependencies. thus mark this gem seen as early as possible + + # development deps can't be found. Some are old. Thus only add rutime dependencies diff --git a/pkgs/development/interpreters/ruby/patches.nix b/pkgs/development/interpreters/ruby/patches.nix index a2d2d753a4a..adfea12da95 100644 --- a/pkgs/development/interpreters/ruby/patches.nix +++ b/pkgs/development/interpreters/ruby/patches.nix @@ -20,6 +20,13 @@ in rails = { gemFlags = "--no-ri --no-rdoc"; }; ncurses = { propagatedBuildInputs = [ ncurses ]; }; + + nix = { + postInstall = '' + cd $out/${ruby.gemPath}/gems/nix* + patch -Np1 -i ${./fix-gem-nix-versions.patch} + ''; + }; ncursesw = { propagatedBuildInputs = [ ncurses ]; }; From 4c74dea53780f678610ca829f19472a4ce4e53c0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:13 +0100 Subject: [PATCH 140/407] haskell-OpenAL: update to version 1.4.0.2 --- pkgs/development/libraries/haskell/OpenAL/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/OpenAL/default.nix b/pkgs/development/libraries/haskell/OpenAL/default.nix index 206e78eb728..a04aea993fa 100644 --- a/pkgs/development/libraries/haskell/OpenAL/default.nix +++ b/pkgs/development/libraries/haskell/OpenAL/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "OpenAL"; - version = "1.4.0.1"; - sha256 = "180f84sjakhd1b8h5n3l92by2wmic20n6ax0z5fi3fvk9w73khyv"; + version = "1.4.0.2"; + sha256 = "19q4pd5i2w330qh895z0cgim4m4f4gxqf4ya1192fchqmgcz1svz"; buildDepends = [ ObjectName StateVar Tensor ]; extraLibraries = [ openal ]; meta = { From 34d77b360f4699898a369b00f673570c43986447 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:13 +0100 Subject: [PATCH 141/407] haskell-basic-prelude: update to version 0.3.4.0 --- pkgs/development/libraries/haskell/basic-prelude/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/basic-prelude/default.nix b/pkgs/development/libraries/haskell/basic-prelude/default.nix index 77f37cfe5af..04f3842be41 100644 --- a/pkgs/development/libraries/haskell/basic-prelude/default.nix +++ b/pkgs/development/libraries/haskell/basic-prelude/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "basic-prelude"; - version = "0.3.3.0"; - sha256 = "1b3fydswi7sj2j5d3jfynd9r5qg8pzlv1qdb9xp56ig01ig18cyv"; + version = "0.3.4.0"; + sha256 = "0layc06df7df4mf4zafj87c4klsvkxbhi69dkv4ag9fkzvs62sz6"; buildDepends = [ hashable liftedBase ReadArgs systemFilepath text transformers unorderedContainers vector From 8142c2628c65d6fbf66d87e3148bac2603bf2ad4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:13 +0100 Subject: [PATCH 142/407] haskell-bifunctors: update to version 3.2.0.1 --- pkgs/development/libraries/haskell/bifunctors/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/bifunctors/default.nix b/pkgs/development/libraries/haskell/bifunctors/default.nix index 09287600323..c659c3bc3be 100644 --- a/pkgs/development/libraries/haskell/bifunctors/default.nix +++ b/pkgs/development/libraries/haskell/bifunctors/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "bifunctors"; - version = "3.2"; - sha256 = "03bszf1127iw5kimjbag5gmgzz7h2qzcd9f7jb53jpiadfhjfx0a"; + version = "3.2.0.1"; + sha256 = "1biicx0zi48wzzi7vkhzvrdyk59hmmm1bqbsga6x5nbrbf3qrkm6"; buildDepends = [ semigroupoids semigroups tagged ]; meta = { homepage = "http://github.com/ekmett/bifunctors/"; From 87293bb052d57f341ff1a687fcca3341bda008a2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:13 +0100 Subject: [PATCH 143/407] haskell-binary: update to version 0.7.0.1 --- pkgs/development/libraries/haskell/binary/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/binary/default.nix b/pkgs/development/libraries/haskell/binary/default.nix index b4f205e41b2..6273a099f73 100644 --- a/pkgs/development/libraries/haskell/binary/default.nix +++ b/pkgs/development/libraries/haskell/binary/default.nix @@ -1,13 +1,14 @@ -{ cabal, QuickCheck, random, testFramework +{ cabal, Cabal, filepath, HUnit, QuickCheck, random, testFramework , testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { pname = "binary"; - version = "0.6.4.0"; - sha256 = "0vq80fzhwil5bx4a2vbd3jvfh1awhg1pwxgvq3lvbi37yzl0ydgh"; + version = "0.7.0.1"; + sha256 = "16srrp0qx9hsr7820b2q3sp9wp8y8sxxi8rvsh63n48w4l3canxq"; testDepends = [ - QuickCheck random testFramework testFrameworkQuickcheck2 + Cabal filepath HUnit QuickCheck random testFramework + testFrameworkQuickcheck2 ]; meta = { homepage = "https://github.com/kolmodin/binary"; From bacce8cd251d5fbe1f7ff32372889bc0c1f93ba5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:13 +0100 Subject: [PATCH 144/407] haskell-classy-prelude-conduit: update to version 0.5.3 --- .../libraries/haskell/classy-prelude-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix index 44e27aa1bc3..c04b4dfc25e 100644 --- a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "classy-prelude-conduit"; - version = "0.5.2"; - sha256 = "11krzhy78z0srjy5g6h8ssv5n3ml8ryx92x0zdjigqxw4zq9ic72"; + version = "0.5.3"; + sha256 = "1rmx439kdjipyz2s3v2s1xv1mb55kb4njl9k6f8mfhykgac39rhz"; buildDepends = [ classyPrelude conduit monadControl resourcet transformers void xmlConduit From 0c702f033b3bca32ac92d740d064e6793526d80d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:13 +0100 Subject: [PATCH 145/407] haskell-classy-prelude: update to version 0.5.3 --- pkgs/development/libraries/haskell/classy-prelude/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/classy-prelude/default.nix b/pkgs/development/libraries/haskell/classy-prelude/default.nix index 48b6bc58369..4d0f5441e41 100644 --- a/pkgs/development/libraries/haskell/classy-prelude/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "classy-prelude"; - version = "0.5.2"; - sha256 = "1nmhx6fs783v67b5ygdlmpxbsj41brj32i1sx9gyjyhfvr40wiw5"; + version = "0.5.3"; + sha256 = "0xlhdxkxvrzj9y8wdl2f1pz94zz2gfa9vfbia9prhr7skirxvsad"; buildDepends = [ basicPrelude hashable liftedBase systemFilepath text transformers unorderedContainers vector From d790e95a915511ce88dbe82724b497257a300a6e Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 146/407] haskell-conduit: update to version 1.0.2 --- pkgs/development/libraries/haskell/conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix index 75260bcb1b3..21f81ee038c 100644 --- a/pkgs/development/libraries/haskell/conduit/default.nix +++ b/pkgs/development/libraries/haskell/conduit/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "conduit"; - version = "1.0.1"; - sha256 = "1r3d30cap4f7qxi9v2ab5w31w9ay19z848d4l8klf1np9xs27hki"; + version = "1.0.2"; + sha256 = "03hyryljvkbgyvwx63qrkvf2wm1qm8640rsm8yb4mahgzp4r130f"; buildDepends = [ liftedBase monadControl resourcet text transformers transformersBase void From 2d02edaf51a837313ad764946532b8df50234ab5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 147/407] haskell-persistent-sqlite: update to version 1.1.5 --- .../libraries/haskell/persistent-sqlite/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix index 066d1dd2ebe..947f75342d4 100644 --- a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix +++ b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "persistent-sqlite"; - version = "1.1.4.1"; - sha256 = "0rhvbbzlzgzx4na7ffa2jx2zinzbb6b1jxf8964hcxx7iyzcycjj"; + version = "1.1.5"; + sha256 = "1kqxp0qsvxfz352yg9k1wgb2nfm7kcz8xdj9q537ilh99wxkp6cl"; buildDepends = [ aeson conduit monadControl monadLogger persistent text transformers ]; From d0e81f3d727a5d503d2ab86f41acb498c2e83301 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 148/407] haskell-resourcet: update to version 0.4.5 --- pkgs/development/libraries/haskell/resourcet/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/resourcet/default.nix b/pkgs/development/libraries/haskell/resourcet/default.nix index 35b7fec3276..f0dde62ef97 100644 --- a/pkgs/development/libraries/haskell/resourcet/default.nix +++ b/pkgs/development/libraries/haskell/resourcet/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "resourcet"; - version = "0.4.4"; - sha256 = "0ad1hl7bl9qid4brchb95gvnylfchmxncgdvgljb5lci7gy9r31z"; + version = "0.4.5"; + sha256 = "1i2n0y4ridlzi2fn319f8jg1whb10gajgyvbz0rx2mwxj15bbgni"; buildDepends = [ liftedBase monadControl mtl transformers transformersBase ]; From 4121fad56abf45c7f53e23303c146958d5155d3c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 149/407] haskell-shakespeare-js: update to version 1.1.2.1 --- pkgs/development/libraries/haskell/shakespeare-js/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/shakespeare-js/default.nix b/pkgs/development/libraries/haskell/shakespeare-js/default.nix index 55bf276d1f8..7f00530a7f9 100644 --- a/pkgs/development/libraries/haskell/shakespeare-js/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-js/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "shakespeare-js"; - version = "1.1.2"; - sha256 = "0iwajn0d0yngzp10j9qbb2gpq1g7r390yqd7pj5dri35rjc6mr8n"; + version = "1.1.2.1"; + sha256 = "049nn0p236wbm2majkih87n2c7h65xrnf6gydsi7najxccjl7y8z"; buildDepends = [ aeson shakespeare text ]; testDepends = [ aeson hspec HUnit shakespeare text ]; meta = { From 39d83523a2158868b569c6ad651303093cdcb99c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 150/407] haskell-th-extras: update to version 0.0.0.2 --- pkgs/development/libraries/haskell/th-extras/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/th-extras/default.nix b/pkgs/development/libraries/haskell/th-extras/default.nix index be78bbaef31..3475ccb804a 100644 --- a/pkgs/development/libraries/haskell/th-extras/default.nix +++ b/pkgs/development/libraries/haskell/th-extras/default.nix @@ -2,12 +2,12 @@ cabal.mkDerivation (self: { pname = "th-extras"; - version = "0.0.0.1"; - sha256 = "13d9fs48z87inma3kg9b7lfjp3h8j85fav6awd1zj3i2nl214hff"; + version = "0.0.0.2"; + sha256 = "15sqf2jjnqcssq8hp80fk0ysgwqykjjc31gvvmzg4sypskpjs8cl"; buildDepends = [ syb ]; meta = { homepage = "https://github.com/mokus0/th-extras"; - description = "A grab bag of useful functions for use with Template Haskell"; + description = "A grab bag of functions for use with Template Haskell"; license = self.stdenv.lib.licenses.publicDomain; platforms = self.ghc.meta.platforms; maintainers = [ self.stdenv.lib.maintainers.andres ]; From bd966fa58362e2b6d6078f96180d7d7ac5b91fd9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 151/407] haskell-xml-conduit: update to version 1.1.0.3 --- pkgs/development/libraries/haskell/xml-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/xml-conduit/default.nix b/pkgs/development/libraries/haskell/xml-conduit/default.nix index 7ebc0b003e5..b586a6336bc 100644 --- a/pkgs/development/libraries/haskell/xml-conduit/default.nix +++ b/pkgs/development/libraries/haskell/xml-conduit/default.nix @@ -6,8 +6,8 @@ cabal.mkDerivation (self: { pname = "xml-conduit"; - version = "1.1.0.2"; - sha256 = "17wv4rngmn8jvg6c3ia48w5q9s9dww9aisrmans9llqs7ks3ndqc"; + version = "1.1.0.3"; + sha256 = "04mnn6j9bbkhvav04gl9cbd4rldl7bwgcapvykwvf2p3nb3d7bi4"; buildDepends = [ attoparsec attoparsecConduit blazeBuilder blazeBuilderConduit blazeHtml blazeMarkup conduit dataDefault failure monadControl From f058026b11a5813a4d702dc24f81f910e469a48c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 152/407] haskell-yaml: update to version 0.8.2.3 --- pkgs/development/libraries/haskell/yaml/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yaml/default.nix b/pkgs/development/libraries/haskell/yaml/default.nix index f1cbb7ee7b8..2c2f39451e6 100644 --- a/pkgs/development/libraries/haskell/yaml/default.nix +++ b/pkgs/development/libraries/haskell/yaml/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "yaml"; - version = "0.8.2.1"; - sha256 = "1p0hi9psm42bsmm14gfdkj4wrbcgzkishcih6rwc2bcvn2i0hyyw"; + version = "0.8.2.3"; + sha256 = "1ds6969gbkxgkm2fha0ifmssjl7by9glgix165v0h8i7fx9wx3wa"; buildDepends = [ aeson attoparsec conduit resourcet text transformers unorderedContainers vector From 3bf5b4d930fb3fed27d117d0addeacf8f0125681 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 153/407] haskell-yesod-test: update to version 0.3.5 --- pkgs/development/libraries/haskell/yesod-test/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-test/default.nix b/pkgs/development/libraries/haskell/yesod-test/default.nix index a47d109ace5..8b32b48af87 100644 --- a/pkgs/development/libraries/haskell/yesod-test/default.nix +++ b/pkgs/development/libraries/haskell/yesod-test/default.nix @@ -6,8 +6,8 @@ cabal.mkDerivation (self: { pname = "yesod-test"; - version = "0.3.4"; - sha256 = "18sz1blnrgijcq6psqk2b5zxbizpgam1cy1vcxc4nrfryfscr42b"; + version = "0.3.5"; + sha256 = "095hwl1dm4mk467la68x3lilj0c056603kl0nn8ra4glcr86273j"; buildDepends = [ attoparsec blazeBuilder blazeHtml blazeMarkup caseInsensitive cookie hspec htmlConduit httpTypes HUnit monadControl network From c150b8c3d2d0dab895b3efdd96eada7a12cd20d3 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Mar 2013 10:54:14 +0100 Subject: [PATCH 154/407] haskell-yesod: update to version 1.1.9.2 --- pkgs/development/libraries/haskell/yesod/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod/default.nix b/pkgs/development/libraries/haskell/yesod/default.nix index e51ca16aa4f..9998790ea73 100644 --- a/pkgs/development/libraries/haskell/yesod/default.nix +++ b/pkgs/development/libraries/haskell/yesod/default.nix @@ -12,8 +12,8 @@ cabal.mkDerivation (self: { pname = "yesod"; - version = "1.1.9.1"; - sha256 = "0kysj3akf2pvhsiy6f8yfs41mrya86b8ddskqzzibjmdyipiqksj"; + version = "1.1.9.2"; + sha256 = "1rv9mk842b9qwdzal9y5cn2z5z2rl6490600jg1xbsg0x0nl7hdj"; isLibrary = true; isExecutable = true; buildDepends = [ From 4d4b045d9564e68fe8a541ada7e11ffd2219a173 Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Sat, 26 Jan 2013 16:20:25 +0100 Subject: [PATCH 155/407] ffmpeg: remove unused 1.0 version --- pkgs/development/libraries/ffmpeg/1.0.nix | 85 ----------------------- pkgs/top-level/all-packages.nix | 4 -- pkgs/top-level/release-python.nix | 2 +- 3 files changed, 1 insertion(+), 90 deletions(-) delete mode 100644 pkgs/development/libraries/ffmpeg/1.0.nix diff --git a/pkgs/development/libraries/ffmpeg/1.0.nix b/pkgs/development/libraries/ffmpeg/1.0.nix deleted file mode 100644 index d703fd8e369..00000000000 --- a/pkgs/development/libraries/ffmpeg/1.0.nix +++ /dev/null @@ -1,85 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, yasm, zlib, bzip2, alsaLib -, mp3Support ? true, lame ? null -, speexSupport ? true, speex ? null -, theoraSupport ? true, libtheora ? null -, vorbisSupport ? true, libvorbis ? null -, vpxSupport ? false, libvpx ? null -, x264Support ? true, x264 ? null -, xvidSupport ? true, xvidcore ? null -, vdpauSupport ? true, libvdpau ? null -, faacSupport ? false, faac ? null -, dc1394Support ? false, libdc1394 ? null -, x11grabSupport ? false, libXext ? null, libXfixes ? null -}: - -assert speexSupport -> speex != null; -assert theoraSupport -> libtheora != null; -assert vorbisSupport -> libvorbis != null; -assert vpxSupport -> libvpx != null; -assert x264Support -> x264 != null; -assert xvidSupport -> xvidcore != null; -assert vdpauSupport -> libvdpau != null; -assert faacSupport -> faac != null; -assert x11grabSupport -> libXext != null && libXfixes != null; - -stdenv.mkDerivation rec { - name = "ffmpeg-1.0"; - - src = fetchurl { - url = "http://www.ffmpeg.org/releases/${name}.tar.bz2"; - sha256 = "1jbi85z2zkk3fh09l9f1s70kpvsz8706ay4lsw75395q8vic70hd"; - }; - - # `--enable-gpl' (as well as the `postproc' and `swscale') mean that - # the resulting library is GPL'ed, so it can only be used in GPL'ed - # applications. - configureFlags = [ - "--enable-gpl" - "--enable-postproc" - "--enable-swscale" - "--disable-ffplay" - "--enable-shared" - "--enable-runtime-cpudetect" - ] - ++ stdenv.lib.optional mp3Support "--enable-libmp3lame" - ++ stdenv.lib.optional speexSupport "--enable-libspeex" - ++ stdenv.lib.optional theoraSupport "--enable-libtheora" - ++ stdenv.lib.optional vorbisSupport "--enable-libvorbis" - ++ stdenv.lib.optional vpxSupport "--enable-libvpx" - ++ stdenv.lib.optional x264Support "--enable-libx264" - ++ stdenv.lib.optional xvidSupport "--enable-libxvid" - ++ stdenv.lib.optional vdpauSupport "--enable-vdpau" - ++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree" - ++ stdenv.lib.optional dc1394Support "--enable-libdc1394" - ++ stdenv.lib.optional x11grabSupport "--enable-x11grab"; - - buildInputs = [ pkgconfig lame yasm zlib bzip2 alsaLib ] - ++ stdenv.lib.optional mp3Support lame - ++ stdenv.lib.optional speexSupport speex - ++ stdenv.lib.optional theoraSupport libtheora - ++ stdenv.lib.optional vorbisSupport libvorbis - ++ stdenv.lib.optional vpxSupport libvpx - ++ stdenv.lib.optional x264Support x264 - ++ stdenv.lib.optional xvidSupport xvidcore - ++ stdenv.lib.optional vdpauSupport libvdpau - ++ stdenv.lib.optional faacSupport faac - ++ stdenv.lib.optional dc1394Support libdc1394 - ++ stdenv.lib.optionals x11grabSupport [ libXext libXfixes ]; - - enableParallelBuilding = true; - - crossAttrs = { - dontSetConfigureCross = true; - configureFlags = configureFlags ++ [ - "--cross-prefix=${stdenv.cross.config}-" - "--enable-cross-compile" - "--target_os=linux" - "--arch=${stdenv.cross.arch}" - ]; - }; - - meta = { - homepage = http://www.ffmpeg.org/; - description = "A complete, cross-platform solution to record, convert and stream audio and video"; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 70c4c079f3a..bfab97ff543 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3648,10 +3648,6 @@ let vpxSupport = !stdenv.isMips; }; - ffmpeg_1_0 = callPackage ../development/libraries/ffmpeg/1.0.nix { - vpxSupport = !stdenv.isMips; - }; - ffmpeg_1_1 = callPackage ../development/libraries/ffmpeg/1.1.nix { vpxSupport = !stdenv.isMips; }; diff --git a/pkgs/top-level/release-python.nix b/pkgs/top-level/release-python.nix index 7d98a51cab5..24bb64cb8f8 100644 --- a/pkgs/top-level/release-python.nix +++ b/pkgs/top-level/release-python.nix @@ -335,7 +335,7 @@ in ffado = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; ffmpeg = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; ffmpeg_0_6_90 = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; - ffmpeg_1_0 = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; + ffmpeg_1_1 = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; fileschanged = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; fio = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; firefox = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; From ec732e5ec12dc4b71b1bee7a085ebfb5fb558e8d Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Sun, 3 Mar 2013 17:13:56 +0100 Subject: [PATCH 156/407] Revert "haskell-HSH: update to version 2.1.0" This reverts commit 4b3cd9711adfea09c75131c82c01af2768567f4e. --- pkgs/development/libraries/haskell/HSH/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/HSH/default.nix b/pkgs/development/libraries/haskell/HSH/default.nix index f80f74a3dc2..40620901839 100644 --- a/pkgs/development/libraries/haskell/HSH/default.nix +++ b/pkgs/development/libraries/haskell/HSH/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "HSH"; - version = "2.1.0"; - sha256 = "0gz2hzdvf0gqv33jihn67bvry38c6hkjapb1prxmb3w12lisr4l5"; + version = "2.0.4"; + sha256 = "1ddpazmk82716hqd1riqs7vnl4aildgwkjgk80iam49df9p5b8v8"; isLibrary = true; isExecutable = true; buildDepends = [ From 91c327fb28de54e00bc32f2fb18c5eafd8ea5a11 Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Sun, 3 Mar 2013 17:21:45 +0100 Subject: [PATCH 157/407] qemu-kvm: string concatenation fix --- pkgs/os-specific/linux/qemu-kvm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix index 3b37273bdcb..14cedc0b5db 100644 --- a/pkgs/os-specific/linux/qemu-kvm/default.nix +++ b/pkgs/os-specific/linux/qemu-kvm/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { ncurses python glib libaio mesa texinfo perl ] ++ stdenv.lib.optionals spiceSupport [ spice_protocol spice ]; - patchPhase = "patchShebangs ." + stdenv.lib.optionalString spiceSupport '' + patchPhase = "patchShebangs .;" + stdenv.lib.optionalString spiceSupport '' for i in configure spice-qemu-char.c ui/spice-input.c ui/spice-core.c ui/qemu-spice.h; do substituteInPlace $i --replace '#include ' '#include ' done From 45aea0bf526cecf7c8c1ac78d694dc85fbb682db Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Mon, 21 Jan 2013 21:05:31 +0100 Subject: [PATCH 158/407] mkvtoolnix: upgrade to 6.1.0 --- pkgs/applications/video/mkvtoolnix/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix index 1dc58607de0..c2563b5e298 100644 --- a/pkgs/applications/video/mkvtoolnix/default.nix +++ b/pkgs/applications/video/mkvtoolnix/default.nix @@ -16,11 +16,11 @@ }: stdenv.mkDerivation rec { - name = "mkvtoolnix-5.9.0"; + name = "mkvtoolnix-6.1.0"; src = fetchurl { - url = "http://www.bunkus.org/videotools/mkvtoolnix/sources/${name}.tar.bz2"; - sha256 = "1qdxzi72w5p77brlpp7y7llsgzlvl4p8fk1kzg934cqw6cqza4yr"; + url = "http://www.bunkus.org/videotools/mkvtoolnix/sources/${name}.tar.xz"; + sha256 = "01k5al3886cyi97kynx5hf98z5p7mb8vd2m057gbp1k10zblcb9x"; }; buildInputs = [ libmatroska flac libvorbis file boost lzo xdg_utils expat wxGTK zlib ruby gettext pkgconfig curl ]; @@ -39,4 +39,3 @@ stdenv.mkDerivation rec { homepage = http://www.bunkus.org/videotools/mkvtoolnix/; }; } - From 04e883e496f6e0a525834a0f347d85716033e043 Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Mon, 4 Mar 2013 22:38:45 +0100 Subject: [PATCH 159/407] linux-3.0: upgrade to 3.0.68 --- pkgs/os-specific/linux/kernel/linux-3.0.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-3.0.nix b/pkgs/os-specific/linux/kernel/linux-3.0.nix index b7ccdde367c..adaef56e55f 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.0.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.0.nix @@ -230,7 +230,7 @@ in import ./generic.nix ( rec { - version = "3.0.65"; + version = "3.0.68"; preConfigure = '' substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' "" @@ -238,7 +238,7 @@ import ./generic.nix ( src = fetchurl { url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz"; - sha256 = "1vmk0bmg0djwbh9scrhpyljan01ygkwn4q0j1ydn8snag7sn4x8y"; + sha256 = "1l9ifmwfxh17r2yv5sscar46r46lc1lar1k0cyvn4hd594xmf5cw"; }; config = configWithPlatform stdenv.platform; From 01c5d2d7020fe3bfe43fb4979c1200e7800fc2de Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Mon, 4 Mar 2013 22:38:33 +0100 Subject: [PATCH 160/407] linux-3.4: upgrade to 3.4.35 --- pkgs/os-specific/linux/kernel/linux-3.4.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-3.4.nix b/pkgs/os-specific/linux/kernel/linux-3.4.nix index 0e032935900..ec80aabef0c 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.4.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.4.nix @@ -244,7 +244,7 @@ in import ./generic.nix ( rec { - version = "3.4.32"; + version = "3.4.35"; testing = false; preConfigure = '' @@ -253,7 +253,7 @@ import ./generic.nix ( src = fetchurl { url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz"; - sha256 = "0z218ibz36lpdyjjch94jx12fcghj376x3fkmgxmwdjaz7zngn4i"; + sha256 = "1gyl0zgrbvx5w7qwh7amr4f3gl35hdm21zniksgsyx9cbyfxf8a4"; }; config = configWithPlatform stdenv.platform; From c7c6592f6ff71e2e08ea7e90ae3e6af011deb8a1 Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Mon, 4 Mar 2013 22:38:17 +0100 Subject: [PATCH 161/407] linux-3.7: upgrade to 3.7.10 --- pkgs/os-specific/linux/kernel/linux-3.7.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-3.7.nix b/pkgs/os-specific/linux/kernel/linux-3.7.nix index df6387b1f81..a522c90a10f 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.7.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.7.nix @@ -251,7 +251,7 @@ in import ./generic.nix ( rec { - version = "3.7.9"; + version = "3.7.10"; testing = false; preConfigure = '' @@ -260,7 +260,7 @@ import ./generic.nix ( src = fetchurl { url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz"; - sha256 = "1d9834flw0jyfn0lq1l0ahp8v12p227qn6z39v1pk53dap1zl0v1"; + sha256 = "1l8b40z95ahc2v9babmhrbi8jn2bhwkapq0libq0z21iipqsya4v"; }; config = configWithPlatform stdenv.platform; From 060ba43e8f6514a38bc93ff0c2f6c297eae4b949 Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Sat, 2 Mar 2013 15:41:46 +0100 Subject: [PATCH 162/407] linux-3.8: upgrade to 3.8.2 --- pkgs/os-specific/linux/kernel/linux-3.8.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-3.8.nix b/pkgs/os-specific/linux/kernel/linux-3.8.nix index 622a549084d..9aaa2e80aab 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.8.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.8.nix @@ -251,8 +251,7 @@ in import ./generic.nix ( rec { - version = "3.8.1"; - modDirVersion = "3.8.1"; + version = "3.8.2"; testing = false; preConfigure = '' @@ -261,7 +260,7 @@ import ./generic.nix ( src = fetchurl { url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz"; - sha256 = "14kgsi6rrvzsqckispkahj2kczdifgr8gh3vx449qikdlrizbpl3"; + sha256 = "1i7r89ba79x6irr95gq1b0cnkbmdz3llh72vdamn83s3zh6cy1fv"; }; config = configWithPlatform stdenv.platform; From 6338743942b4d62d3b499e4a10630fa6c446a508 Mon Sep 17 00:00:00 2001 From: Mathijs Kwik Date: Sun, 3 Mar 2013 16:48:39 +0100 Subject: [PATCH 163/407] bbswitch: upgrade to 0.5 - add linux 3.8 compatibility patch --- pkgs/os-specific/linux/bbswitch/default.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/bbswitch/default.nix b/pkgs/os-specific/linux/bbswitch/default.nix index 04fba890bc5..dccfeeb8a69 100644 --- a/pkgs/os-specific/linux/bbswitch/default.nix +++ b/pkgs/os-specific/linux/bbswitch/default.nix @@ -1,9 +1,14 @@ { stdenv, fetchurl, kernel }: let - baseName = "bbswitch-0.4.2"; + baseName = "bbswitch-0.5"; name = "${baseName}-${kernel.version}"; + linux38Compatibility = fetchurl { + url = "http://github.com/Bumblebee-Project/bbswitch/commit/5593d95.patch"; + sha256 = "0m6y5sdagf4brhk1lsp86rx94xf628sixzf6j71bn7jnqs4jslr6"; + }; + in stdenv.mkDerivation { @@ -11,15 +16,17 @@ stdenv.mkDerivation { src = fetchurl { url = "http://github.com/downloads/Bumblebee-Project/bbswitch/${baseName}.tar.gz"; - sha256 = "06j3cm1rk3lcbv54k0magrijykrzmkrna8n5cc274iz59842lga3"; + sha256 = "19775r3bsf5l3ssbayr30fij09gavj2qjrr438hdcmzswvlj2dpv"; }; + patches = [ linux38Compatibility ]; + preBuild = '' substituteInPlace Makefile \ --replace "\$(shell uname -r)" "${kernel.modDirVersion}" \ --replace "/lib/modules" "${kernel}/lib/modules" ''; - + installPhase = '' ensureDir $out/lib/modules/${kernel.modDirVersion}/misc cp bbswitch.ko $out/lib/modules/${kernel.modDirVersion}/misc From 31c198a40e1cd6772da9005e496029306a7b7dfa Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Tue, 5 Mar 2013 10:18:05 +0100 Subject: [PATCH 164/407] xf86-video-intel: bump to 2.20.19 --- pkgs/servers/x11/xorg/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index f26ba257c02..3f8fc2e68a1 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -1518,11 +1518,11 @@ let })) // {inherit fontsproto libpciaccess randrproto renderproto videoproto xextproto xorgserver xproto ;}; xf86videointel = (stdenv.mkDerivation ((if overrides ? xf86videointel then overrides.xf86videointel else x: x) { - name = "xf86-video-intel-2.20.10"; + name = "xf86-video-intel-2.20.19"; builder = ./builder.sh; src = fetchurl { - url = mirror://xorg/individual/driver/xf86-video-intel-2.20.10.tar.bz2; - sha256 = "1kfd6qiqxyqhjp8g1xcipkldsf7xa47q8zfdhxg3qzw77n6a4hfz"; + url = mirror://xorg/individual/driver/xf86-video-intel-2.20.19.tar.bz2; + sha256 = "0k67vcf0aqhv9zmy1arxyjdl7fsrg90cjm0ryyhamghq67z0xcmr"; }; buildInputs = [pkgconfig dri2proto fontsproto libdrm udev libpciaccess pixman randrproto renderproto libX11 xcbutil libxcb libXext xextproto xf86driproto libXfixes xorgserver xproto libXrender libXvMC ]; })) // {inherit dri2proto fontsproto libdrm udev libpciaccess pixman randrproto renderproto libX11 xcbutil libxcb libXext xextproto xf86driproto libXfixes xorgserver xproto libXrender libXvMC ;}; From 599cc3ec0a095317356b257b175e84e83e62458d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Tue, 5 Mar 2013 11:25:53 +0100 Subject: [PATCH 165/407] cifs-utils: remove hard-coded path to 'systemd-ask-password' to close issue #353 --- pkgs/os-specific/linux/cifs-utils/default.nix | 2 ++ .../find-systemd-ask-password-via-path.patch | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch diff --git a/pkgs/os-specific/linux/cifs-utils/default.nix b/pkgs/os-specific/linux/cifs-utils/default.nix index 9e761b90a05..0f8801ef58e 100644 --- a/pkgs/os-specific/linux/cifs-utils/default.nix +++ b/pkgs/os-specific/linux/cifs-utils/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "0f619nw1163bcmfc83mmqj31qdkl68wfm81vynx3d8q0m0k1ll7i"; }; + patches = [ ./find-systemd-ask-password-via-path.patch ]; + makeFlags = "root_sbindir=$(out)/sbin"; meta = { diff --git a/pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch b/pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch new file mode 100644 index 00000000000..53b473c2822 --- /dev/null +++ b/pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch @@ -0,0 +1,22 @@ +diff -ubr cifs-utils-5.9-orig/mount.cifs.c cifs-utils-5.9/mount.cifs.c +--- cifs-utils-5.9-orig/mount.cifs.c 2013-03-05 10:53:19.375464790 +0100 ++++ cifs-utils-5.9/mount.cifs.c 2013-03-05 11:21:06.602624390 +0100 +@@ -1634,7 +1634,7 @@ + } + + /* +- * If systemd is running and /bin/systemd-ask-password -- ++ * If systemd is running and systemd-ask-password -- + * is available, then use that else fallback on getpass(..) + * + * Returns: @input or NULL on error +@@ -1657,7 +1657,7 @@ + FILE *ask_pass_fp = NULL; + + cmd = ret = NULL; +- if (asprintf(&cmd, "/bin/systemd-ask-password \"%s\"", prompt) >= 0) { ++ if (asprintf(&cmd, "systemd-ask-password \"%s\"", prompt) >= 0) { + ask_pass_fp = popen (cmd, "re"); + free (cmd); + } +Only in cifs-utils-5.9/: mount.cifs.c.orig From 8437673c91193a38c7bcd5021a87ed26edec432f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Tue, 5 Mar 2013 11:26:09 +0100 Subject: [PATCH 166/407] cifs-utils: update to version 5.9 --- pkgs/os-specific/linux/cifs-utils/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/cifs-utils/default.nix b/pkgs/os-specific/linux/cifs-utils/default.nix index 0f8801ef58e..777c6a58162 100644 --- a/pkgs/os-specific/linux/cifs-utils/default.nix +++ b/pkgs/os-specific/linux/cifs-utils/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "cifs-utils-5.6"; + name = "cifs-utils-5.9"; src = fetchurl { url = "ftp://ftp.samba.org/pub/linux-cifs/cifs-utils/${name}.tar.bz2"; - sha256 = "0f619nw1163bcmfc83mmqj31qdkl68wfm81vynx3d8q0m0k1ll7i"; + sha256 = "1wmfxbrkn0473pvzpa55qji60hr28ahwv5scxxi77x2lbki4l3gf"; }; patches = [ ./find-systemd-ask-password-via-path.patch ]; From 7e99044638c639016d811708f5992f58de82807f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Tue, 5 Mar 2013 11:45:49 +0100 Subject: [PATCH 167/407] cifs-utils: hard-code path '/run/current-system/sw/bin/systemd-ask-password' to fix issue #353 some more It turns out that mount.cifs is run in a shell environment that doesn't have $PATH. To find that program, we must commit to some location. The path I used will work fine on NixOS, but of course it won't work on other Linux distributions. I'm not sure whether that's an important issue or not. --- .../linux/cifs-utils/find-systemd-ask-password-via-path.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch b/pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch index 53b473c2822..428cb75edad 100644 --- a/pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch +++ b/pkgs/os-specific/linux/cifs-utils/find-systemd-ask-password-via-path.patch @@ -1,6 +1,6 @@ diff -ubr cifs-utils-5.9-orig/mount.cifs.c cifs-utils-5.9/mount.cifs.c --- cifs-utils-5.9-orig/mount.cifs.c 2013-03-05 10:53:19.375464790 +0100 -+++ cifs-utils-5.9/mount.cifs.c 2013-03-05 11:21:06.602624390 +0100 ++++ cifs-utils-5.9/mount.cifs.c 2013-03-05 11:41:40.704946110 +0100 @@ -1634,7 +1634,7 @@ } @@ -15,7 +15,7 @@ diff -ubr cifs-utils-5.9-orig/mount.cifs.c cifs-utils-5.9/mount.cifs.c cmd = ret = NULL; - if (asprintf(&cmd, "/bin/systemd-ask-password \"%s\"", prompt) >= 0) { -+ if (asprintf(&cmd, "systemd-ask-password \"%s\"", prompt) >= 0) { ++ if (asprintf(&cmd, "/run/current-system/sw/bin/systemd-ask-password \"%s\"", prompt) >= 0) { ask_pass_fp = popen (cmd, "re"); free (cmd); } From ad31fcad528fe6bf501195c74bdbe46420dbfb58 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Tue, 5 Mar 2013 12:14:00 +0100 Subject: [PATCH 168/407] cifs-utils: revert back to version 5.6 The updated version 5.9 couldn't mount any of my shares: Status code returned 0xc000006d NT_STATUS_LOGON_FAILURE CIFS VFS: Send error in SessSetup = -13 CIFS VFS: cifs_mount failed w/return code = -13 Apparently, this is a known problem in Windows Vista that needs to be fixed on the server side. :-( --- pkgs/os-specific/linux/cifs-utils/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/cifs-utils/default.nix b/pkgs/os-specific/linux/cifs-utils/default.nix index 777c6a58162..0f8801ef58e 100644 --- a/pkgs/os-specific/linux/cifs-utils/default.nix +++ b/pkgs/os-specific/linux/cifs-utils/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "cifs-utils-5.9"; + name = "cifs-utils-5.6"; src = fetchurl { url = "ftp://ftp.samba.org/pub/linux-cifs/cifs-utils/${name}.tar.bz2"; - sha256 = "1wmfxbrkn0473pvzpa55qji60hr28ahwv5scxxi77x2lbki4l3gf"; + sha256 = "0f619nw1163bcmfc83mmqj31qdkl68wfm81vynx3d8q0m0k1ll7i"; }; patches = [ ./find-systemd-ask-password-via-path.patch ]; From 2e21e4fadcbd42eb7d62dd81830c8296a2a9e119 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Tue, 5 Mar 2013 12:28:30 +0100 Subject: [PATCH 169/407] fix pythondocs (missing lib, doc instead of docs) --- .../interpreters/python/docs/2.6-html.nix | 6 +-- .../interpreters/python/docs/2.6-pdf-a4.nix | 6 +-- .../python/docs/2.6-pdf-letter.nix | 6 +-- .../interpreters/python/docs/2.6-text.nix | 6 +-- .../interpreters/python/docs/2.7-html.nix | 6 +-- .../interpreters/python/docs/2.7-pdf-a4.nix | 6 +-- .../python/docs/2.7-pdf-letter.nix | 6 +-- .../interpreters/python/docs/2.7-text.nix | 6 +-- .../interpreters/python/docs/3.0-html.nix | 6 +-- .../interpreters/python/docs/3.0-pdf-a4.nix | 6 +-- .../python/docs/3.0-pdf-letter.nix | 6 +-- .../interpreters/python/docs/3.0-text.nix | 6 +-- .../interpreters/python/docs/3.1-html.nix | 6 +-- .../interpreters/python/docs/3.1-pdf-a4.nix | 6 +-- .../python/docs/3.1-pdf-letter.nix | 6 +-- .../interpreters/python/docs/3.1-text.nix | 6 +-- .../interpreters/python/docs/3.2-html.nix | 6 +-- .../interpreters/python/docs/3.2-pdf-a4.nix | 6 +-- .../python/docs/3.2-pdf-letter.nix | 6 +-- .../interpreters/python/docs/3.2-text.nix | 6 +-- .../interpreters/python/docs/3.3-html.nix | 6 +-- .../interpreters/python/docs/3.3-pdf-a4.nix | 6 +-- .../python/docs/3.3-pdf-letter.nix | 6 +-- .../interpreters/python/docs/3.3-text.nix | 6 +-- .../interpreters/python/docs/default.nix | 50 +++++++++---------- .../interpreters/python/docs/generate.sh | 4 +- .../interpreters/python/docs/template.nix | 6 +-- pkgs/top-level/all-packages.nix | 2 +- 28 files changed, 103 insertions(+), 103 deletions(-) diff --git a/pkgs/development/interpreters/python/docs/2.6-html.nix b/pkgs/development/interpreters/python/docs/2.6-html.nix index 8c6522c9b6c..b7ad8c21d5a 100644 --- a/pkgs/development/interpreters/python/docs/2.6-html.nix +++ b/pkgs/development/interpreters/python/docs/2.6-html.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python26-docs-html-2.6.8"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "09kznik9ahmnrqw9gkr7mjv3b3zr258f2fm27n12hrrwwsaszkni"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix index 6c0d008e2fa..96ec6cf7037 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python26-docs-pdf-a4-2.6.8"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "07k8n9zhd59s1yn8ahsizkaqnv969p0f2c2acxgxrxhhyy842pp8"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix index fec87fb11c8..db870f8fe99 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python26-docs-pdf-letter-2.6.8"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "01r87m8hb7f9ql4j9zcjcrr9150nsk23sj8cy02vygr83sc1ldmq"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.6-text.nix b/pkgs/development/interpreters/python/docs/2.6-text.nix index 50b3c2eca9c..aa71ede3965 100644 --- a/pkgs/development/interpreters/python/docs/2.6-text.nix +++ b/pkgs/development/interpreters/python/docs/2.6-text.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python26-docs-text-2.6.8"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "05wsdh6ilgkclgak09fq7fsx5kflkmqq8dyxi2rpydx289cw3a8c"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-html.nix b/pkgs/development/interpreters/python/docs/2.7-html.nix index db77a1e8487..995517c34ee 100644 --- a/pkgs/development/interpreters/python/docs/2.7-html.nix +++ b/pkgs/development/interpreters/python/docs/2.7-html.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python27-docs-html-2.7.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1hg92n0mzl9w6j33b2h0bf2vy6fsxnpxfdc3qw760vcm0y00155j"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix index 844ed60db5f..f7cd2b554bd 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python27-docs-pdf-a4-2.7.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "13da88panq5b6qfhf8k4dgqgxkg4ydcac5cx69a3f35s1w90xdjr"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix index f4149307c47..84f97b39ee7 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python27-docs-pdf-letter-2.7.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0x41phsdrpivhzkchswsliyx3a10n7gzc9irkrw6rz22j81bfydg"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-text.nix b/pkgs/development/interpreters/python/docs/2.7-text.nix index cd11b580af4..8fec1c6bc27 100644 --- a/pkgs/development/interpreters/python/docs/2.7-text.nix +++ b/pkgs/development/interpreters/python/docs/2.7-text.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python27-docs-text-2.7.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1rxlb3jhh3892y65i45nk1y2lx981fr22a5hmfkp9gvjvdykjnzp"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-html.nix b/pkgs/development/interpreters/python/docs/3.0-html.nix index 58c73c4a7c9..26e7be730b6 100644 --- a/pkgs/development/interpreters/python/docs/3.0-html.nix +++ b/pkgs/development/interpreters/python/docs/3.0-html.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python30-docs-html-3.0.1"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0ybjnhg8qfr9kc4axm5xlghkz9dmsg6b1caj6m4gz28q89vggv3c"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix index 8bd52d98506..1f27b2db839 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python30-docs-pdf-a4-3.0.1"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1qgcydqxxhy317lkzzs2v5as4hcwcblir8y3mdr173qsg51iggra"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix index 32d3ddf8175..4502a03191c 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python30-docs-pdf-letter-3.0.1"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1x59q0k6fv55vvpsgr5xcq66k5zsd0f142cp6aa4rb6c81i31yml"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-text.nix b/pkgs/development/interpreters/python/docs/3.0-text.nix index 966c705c6af..53298c984a2 100644 --- a/pkgs/development/interpreters/python/docs/3.0-text.nix +++ b/pkgs/development/interpreters/python/docs/3.0-text.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python30-docs-text-3.0.1"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "12qlh9ywbnw50wk5siq7lmhr935dd16q3vjbii6gfv0g80b1byzx"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-html.nix b/pkgs/development/interpreters/python/docs/3.1-html.nix index 6963681ae89..6a80fef10ee 100644 --- a/pkgs/development/interpreters/python/docs/3.1-html.nix +++ b/pkgs/development/interpreters/python/docs/3.1-html.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python31-docs-html-3.1.5"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "187shb92218k0i07hj9ak1kqbqjcxkivmwxlzj18v791l7x7qcpz"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix index 8078805266d..d0a4298215c 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python31-docs-pdf-a4-3.1.5"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0kbj6b43gnwlb1czkzmirasmc31j10plq0rlb9s9rh8phqnbmhx1"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix index 233d678140b..04b83dfacab 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python31-docs-pdf-letter-3.1.5"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0s202vrjfa8dnp3vpfjb21bmqym9wyj8jn2glgwjzk63z6fwb60i"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-text.nix b/pkgs/development/interpreters/python/docs/3.1-text.nix index 7687f6dd8ca..4bc4bd10e35 100644 --- a/pkgs/development/interpreters/python/docs/3.1-text.nix +++ b/pkgs/development/interpreters/python/docs/3.1-text.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python31-docs-text-3.1.5"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1jsfgfgdi1i2l3lhdk7ss5gwrcg3qhhh8syfrwz8xrv2klmmmn9b"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-html.nix b/pkgs/development/interpreters/python/docs/3.2-html.nix index d686fe0281f..5f9dc98aeb1 100644 --- a/pkgs/development/interpreters/python/docs/3.2-html.nix +++ b/pkgs/development/interpreters/python/docs/3.2-html.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python32-docs-html-3.2.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "058pryg0gn0rlpswkj1z0xvpr39s3ymx3dwqfhhf83w0mlysdm0x"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix index c741fdcdce6..6433237f609 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python32-docs-pdf-a4-3.2.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1lw1sbk3nx70k2zxgjc36ryvyzlxndzsvhrxyzdy9sjfhasyd807"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix index 1a95f0a673e..2d9fd02b1b5 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python32-docs-pdf-letter-3.2.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "199ibzslw3zrwjd49582vc5q6ghp5ig8zalvslawz0xkz1226wg2"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-text.nix b/pkgs/development/interpreters/python/docs/3.2-text.nix index 3ee06d3f0ae..8673d1cc40e 100644 --- a/pkgs/development/interpreters/python/docs/3.2-text.nix +++ b/pkgs/development/interpreters/python/docs/3.2-text.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python32-docs-text-3.2.3"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1jdc9rj2b4vsbvg5mq6vcdfa2b72avhhvjw7rn7k3kl521cvxs09"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-html.nix b/pkgs/development/interpreters/python/docs/3.3-html.nix index 564bbfd7a07..16be9bf9a91 100644 --- a/pkgs/development/interpreters/python/docs/3.3-html.nix +++ b/pkgs/development/interpreters/python/docs/3.3-html.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python33-docs-html-3.3.0"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0vv24b9qi7gznv687ik0pa2w1rq9grqivy44znvj2ysjfg7mc2c1"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix index 8e6206f0d39..4a2f1aa33b8 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python33-docs-pdf-a4-3.3.0"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1y6n13bxlw8a11khy3ynfbz8z0kpf2lvh32dvy8scyw3hrk6wdxp"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix index 14036122c95..d864576bb46 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python33-docs-pdf-letter-3.3.0"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0mcj1i47nx81fc9zk1cic4c4p139qjcqlzf4hnnkzvb3jcgy5z6k"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-text.nix b/pkgs/development/interpreters/python/docs/3.3-text.nix index b8faa4c3cfe..2a922ab299b 100644 --- a/pkgs/development/interpreters/python/docs/3.3-text.nix +++ b/pkgs/development/interpreters/python/docs/3.3-text.nix @@ -1,6 +1,6 @@ # This file was generated and will be overwritten by ./generate.sh -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: stdenv.mkDerivation rec { name = "python33-docs-text-3.3.0"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "10vk2fixg1aglqmsf89kn98rlirrbhnrk1285vzfbynf2iavxw0n"; }; installPhase = '' - mkdir -p $out/share/docs - cp -R ./ $out/share/docs/${name} + mkdir -p $out/share/doc + cp -R ./ $out/share/doc/${name} ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/default.nix b/pkgs/development/interpreters/python/docs/default.nix index 9ec67173be3..7e3ff6abbe9 100644 --- a/pkgs/development/interpreters/python/docs/default.nix +++ b/pkgs/development/interpreters/python/docs/default.nix @@ -1,85 +1,85 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchurl, lib }: let pythonDocs = { html = { python33 = import ./3.3-html.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python32 = import ./3.2-html.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python31 = import ./3.1-html.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python30 = import ./3.0-html.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python27 = import ./2.7-html.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python26 = import ./2.6-html.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; }; pdf_a4 = { python33 = import ./3.3-pdf-a4.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python32 = import ./3.2-pdf-a4.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python31 = import ./3.1-pdf-a4.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python30 = import ./3.0-pdf-a4.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python27 = import ./2.7-pdf-a4.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python26 = import ./2.6-pdf-a4.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; }; pdf_letter = { python33 = import ./3.3-pdf-letter.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python32 = import ./3.2-pdf-letter.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python31 = import ./3.1-pdf-letter.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python30 = import ./3.0-pdf-letter.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python27 = import ./2.7-pdf-letter.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python26 = import ./2.6-pdf-letter.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; }; text = { python33 = import ./3.3-text.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python32 = import ./3.2-text.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python31 = import ./3.1-text.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python30 = import ./3.0-text.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python27 = import ./2.7-text.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; python26 = import ./2.6-text.nix { - inherit stdenv fetchurl; + inherit stdenv fetchurl lib; }; }; }; in pythonDocs diff --git a/pkgs/development/interpreters/python/docs/generate.sh b/pkgs/development/interpreters/python/docs/generate.sh index 10d457e7836..554bf79e334 100755 --- a/pkgs/development/interpreters/python/docs/generate.sh +++ b/pkgs/development/interpreters/python/docs/generate.sh @@ -9,7 +9,7 @@ ${VERSIONS} cat >default.nix <>default.nix < Date: Tue, 5 Mar 2013 12:29:48 +0100 Subject: [PATCH 170/407] Add resulting APK to the hydra build products --- pkgs/development/mobile/androidenv/build-app.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/mobile/androidenv/build-app.nix b/pkgs/development/mobile/androidenv/build-app.nix index 571cd2be623..b73eb23d0f0 100644 --- a/pkgs/development/mobile/androidenv/build-app.nix +++ b/pkgs/development/mobile/androidenv/build-app.nix @@ -37,5 +37,8 @@ stdenv.mkDerivation { installPhase = '' mkdir -p $out mv bin/*-${if release then "release" else "debug"}.apk $out + + mkdir -p $out/nix-support + echo "apk apk $(ls $out/*.apk)" > $out/nix-support/hydra-build-products ''; } From b345bca3afa6ae00a6a6f5fb06f96c8f529e90da Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Tue, 5 Mar 2013 12:33:24 +0100 Subject: [PATCH 171/407] pythonDocs: group in subfolders pythonXY/TYPE I got it now - promised. --- pkgs/development/interpreters/python/docs/2.6-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.6-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/2.7-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.0-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.1-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.2-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-html.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix | 4 ++-- pkgs/development/interpreters/python/docs/3.3-text.nix | 4 ++-- pkgs/development/interpreters/python/docs/template.nix | 4 ++-- 25 files changed, 50 insertions(+), 50 deletions(-) diff --git a/pkgs/development/interpreters/python/docs/2.6-html.nix b/pkgs/development/interpreters/python/docs/2.6-html.nix index b7ad8c21d5a..2b41f122fa9 100644 --- a/pkgs/development/interpreters/python/docs/2.6-html.nix +++ b/pkgs/development/interpreters/python/docs/2.6-html.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "09kznik9ahmnrqw9gkr7mjv3b3zr258f2fm27n12hrrwwsaszkni"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python26 + cp -R ./ $out/share/doc/python26/html ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix index 96ec6cf7037..ec031821a03 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-a4.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "07k8n9zhd59s1yn8ahsizkaqnv969p0f2c2acxgxrxhhyy842pp8"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python26 + cp -R ./ $out/share/doc/python26/pdf-a4 ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix index db870f8fe99..7cacf777834 100644 --- a/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.6-pdf-letter.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "01r87m8hb7f9ql4j9zcjcrr9150nsk23sj8cy02vygr83sc1ldmq"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python26 + cp -R ./ $out/share/doc/python26/pdf-letter ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.6-text.nix b/pkgs/development/interpreters/python/docs/2.6-text.nix index aa71ede3965..eb394a3f3e2 100644 --- a/pkgs/development/interpreters/python/docs/2.6-text.nix +++ b/pkgs/development/interpreters/python/docs/2.6-text.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "05wsdh6ilgkclgak09fq7fsx5kflkmqq8dyxi2rpydx289cw3a8c"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python26 + cp -R ./ $out/share/doc/python26/text ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-html.nix b/pkgs/development/interpreters/python/docs/2.7-html.nix index 995517c34ee..3885b43960f 100644 --- a/pkgs/development/interpreters/python/docs/2.7-html.nix +++ b/pkgs/development/interpreters/python/docs/2.7-html.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1hg92n0mzl9w6j33b2h0bf2vy6fsxnpxfdc3qw760vcm0y00155j"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python27 + cp -R ./ $out/share/doc/python27/html ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix index f7cd2b554bd..d8dde17ac66 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-a4.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "13da88panq5b6qfhf8k4dgqgxkg4ydcac5cx69a3f35s1w90xdjr"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python27 + cp -R ./ $out/share/doc/python27/pdf-a4 ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix index 84f97b39ee7..32581cd229a 100644 --- a/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/2.7-pdf-letter.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0x41phsdrpivhzkchswsliyx3a10n7gzc9irkrw6rz22j81bfydg"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python27 + cp -R ./ $out/share/doc/python27/pdf-letter ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/2.7-text.nix b/pkgs/development/interpreters/python/docs/2.7-text.nix index 8fec1c6bc27..59019238301 100644 --- a/pkgs/development/interpreters/python/docs/2.7-text.nix +++ b/pkgs/development/interpreters/python/docs/2.7-text.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1rxlb3jhh3892y65i45nk1y2lx981fr22a5hmfkp9gvjvdykjnzp"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python27 + cp -R ./ $out/share/doc/python27/text ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-html.nix b/pkgs/development/interpreters/python/docs/3.0-html.nix index 26e7be730b6..fb793da3e5f 100644 --- a/pkgs/development/interpreters/python/docs/3.0-html.nix +++ b/pkgs/development/interpreters/python/docs/3.0-html.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0ybjnhg8qfr9kc4axm5xlghkz9dmsg6b1caj6m4gz28q89vggv3c"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python30 + cp -R ./ $out/share/doc/python30/html ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix index 1f27b2db839..e4b185a11c6 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-a4.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1qgcydqxxhy317lkzzs2v5as4hcwcblir8y3mdr173qsg51iggra"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python30 + cp -R ./ $out/share/doc/python30/pdf-a4 ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix index 4502a03191c..1373ae21284 100644 --- a/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.0-pdf-letter.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1x59q0k6fv55vvpsgr5xcq66k5zsd0f142cp6aa4rb6c81i31yml"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python30 + cp -R ./ $out/share/doc/python30/pdf-letter ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.0-text.nix b/pkgs/development/interpreters/python/docs/3.0-text.nix index 53298c984a2..c37fa99f7c5 100644 --- a/pkgs/development/interpreters/python/docs/3.0-text.nix +++ b/pkgs/development/interpreters/python/docs/3.0-text.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "12qlh9ywbnw50wk5siq7lmhr935dd16q3vjbii6gfv0g80b1byzx"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python30 + cp -R ./ $out/share/doc/python30/text ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-html.nix b/pkgs/development/interpreters/python/docs/3.1-html.nix index 6a80fef10ee..625aa181c63 100644 --- a/pkgs/development/interpreters/python/docs/3.1-html.nix +++ b/pkgs/development/interpreters/python/docs/3.1-html.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "187shb92218k0i07hj9ak1kqbqjcxkivmwxlzj18v791l7x7qcpz"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python31 + cp -R ./ $out/share/doc/python31/html ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix index d0a4298215c..564103dd101 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-a4.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0kbj6b43gnwlb1czkzmirasmc31j10plq0rlb9s9rh8phqnbmhx1"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python31 + cp -R ./ $out/share/doc/python31/pdf-a4 ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix index 04b83dfacab..d6e3009f59c 100644 --- a/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.1-pdf-letter.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0s202vrjfa8dnp3vpfjb21bmqym9wyj8jn2glgwjzk63z6fwb60i"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python31 + cp -R ./ $out/share/doc/python31/pdf-letter ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.1-text.nix b/pkgs/development/interpreters/python/docs/3.1-text.nix index 4bc4bd10e35..3ce559e3ecc 100644 --- a/pkgs/development/interpreters/python/docs/3.1-text.nix +++ b/pkgs/development/interpreters/python/docs/3.1-text.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1jsfgfgdi1i2l3lhdk7ss5gwrcg3qhhh8syfrwz8xrv2klmmmn9b"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python31 + cp -R ./ $out/share/doc/python31/text ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-html.nix b/pkgs/development/interpreters/python/docs/3.2-html.nix index 5f9dc98aeb1..14690100548 100644 --- a/pkgs/development/interpreters/python/docs/3.2-html.nix +++ b/pkgs/development/interpreters/python/docs/3.2-html.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "058pryg0gn0rlpswkj1z0xvpr39s3ymx3dwqfhhf83w0mlysdm0x"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python32 + cp -R ./ $out/share/doc/python32/html ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix index 6433237f609..729101b2d01 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-a4.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1lw1sbk3nx70k2zxgjc36ryvyzlxndzsvhrxyzdy9sjfhasyd807"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python32 + cp -R ./ $out/share/doc/python32/pdf-a4 ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix index 2d9fd02b1b5..da9b0ce4dcc 100644 --- a/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.2-pdf-letter.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "199ibzslw3zrwjd49582vc5q6ghp5ig8zalvslawz0xkz1226wg2"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python32 + cp -R ./ $out/share/doc/python32/pdf-letter ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.2-text.nix b/pkgs/development/interpreters/python/docs/3.2-text.nix index 8673d1cc40e..3ceef2431f7 100644 --- a/pkgs/development/interpreters/python/docs/3.2-text.nix +++ b/pkgs/development/interpreters/python/docs/3.2-text.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1jdc9rj2b4vsbvg5mq6vcdfa2b72avhhvjw7rn7k3kl521cvxs09"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python32 + cp -R ./ $out/share/doc/python32/text ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-html.nix b/pkgs/development/interpreters/python/docs/3.3-html.nix index 16be9bf9a91..055224dd740 100644 --- a/pkgs/development/interpreters/python/docs/3.3-html.nix +++ b/pkgs/development/interpreters/python/docs/3.3-html.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0vv24b9qi7gznv687ik0pa2w1rq9grqivy44znvj2ysjfg7mc2c1"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python33 + cp -R ./ $out/share/doc/python33/html ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix index 4a2f1aa33b8..8c6b842d0b9 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-a4.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1y6n13bxlw8a11khy3ynfbz8z0kpf2lvh32dvy8scyw3hrk6wdxp"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python33 + cp -R ./ $out/share/doc/python33/pdf-a4 ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix index d864576bb46..046abe8f83d 100644 --- a/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix +++ b/pkgs/development/interpreters/python/docs/3.3-pdf-letter.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "0mcj1i47nx81fc9zk1cic4c4p139qjcqlzf4hnnkzvb3jcgy5z6k"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python33 + cp -R ./ $out/share/doc/python33/pdf-letter ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/3.3-text.nix b/pkgs/development/interpreters/python/docs/3.3-text.nix index 2a922ab299b..4d99c25bf59 100644 --- a/pkgs/development/interpreters/python/docs/3.3-text.nix +++ b/pkgs/development/interpreters/python/docs/3.3-text.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "10vk2fixg1aglqmsf89kn98rlirrbhnrk1285vzfbynf2iavxw0n"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/python33 + cp -R ./ $out/share/doc/python33/text ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; diff --git a/pkgs/development/interpreters/python/docs/template.nix b/pkgs/development/interpreters/python/docs/template.nix index 388a8f979c5..cc92f71bc1e 100644 --- a/pkgs/development/interpreters/python/docs/template.nix +++ b/pkgs/development/interpreters/python/docs/template.nix @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "SHA"; }; installPhase = '' - mkdir -p $out/share/doc - cp -R ./ $out/share/doc/${name} + mkdir -p $out/share/doc/pythonMAJORMINOR + cp -R ./ $out/share/doc/pythonMAJORMINOR/TYPE ''; meta = { maintainers = [ lib.maintainers.chaoflow ]; From 31b19d39f3713362003574ca35ba8240a0f4f003 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Tue, 5 Mar 2013 14:33:49 +0100 Subject: [PATCH 172/407] Use correct hydra type and subtype --- pkgs/development/mobile/androidenv/build-app.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/mobile/androidenv/build-app.nix b/pkgs/development/mobile/androidenv/build-app.nix index b73eb23d0f0..6acc0bc4758 100644 --- a/pkgs/development/mobile/androidenv/build-app.nix +++ b/pkgs/development/mobile/androidenv/build-app.nix @@ -39,6 +39,6 @@ stdenv.mkDerivation { mv bin/*-${if release then "release" else "debug"}.apk $out mkdir -p $out/nix-support - echo "apk apk $(ls $out/*.apk)" > $out/nix-support/hydra-build-products + echo "file binary-dist $(ls $out/*.apk)" > $out/nix-support/hydra-build-products ''; } From ed6529ea44402f7088e2f80554c2c7a34a29f776 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Tue, 5 Mar 2013 15:39:51 +0100 Subject: [PATCH 173/407] - Store resulting APK in hydra build artifacts - Make nixpkgs configurable in the test examples --- pkgs/development/mobile/titaniumenv/build-app.nix | 5 +++++ pkgs/development/mobile/titaniumenv/examples/default.nix | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkgs/development/mobile/titaniumenv/build-app.nix b/pkgs/development/mobile/titaniumenv/build-app.nix index c05bf88ffbf..8fe9846c15a 100644 --- a/pkgs/development/mobile/titaniumenv/build-app.nix +++ b/pkgs/development/mobile/titaniumenv/build-app.nix @@ -113,6 +113,11 @@ stdenv.mkDerivation { "cp -av build/iphone/build/* $out" else if target == "iphone" then "" else throw "Target: ${target} is not supported!"} + + ${if target == "android" then '' + mkdir -p $out/nix-support + echo "file binary-dist $(ls $out/*.apk)" > $out/nix-support/hydra-build-products + '' else ""} ''; failureHook = stdenv.lib.optionalString (release && target == "iphone") deleteKeychain; diff --git a/pkgs/development/mobile/titaniumenv/examples/default.nix b/pkgs/development/mobile/titaniumenv/examples/default.nix index 1526d4c4359..952febebc32 100644 --- a/pkgs/development/mobile/titaniumenv/examples/default.nix +++ b/pkgs/development/mobile/titaniumenv/examples/default.nix @@ -1,6 +1,8 @@ +{ nixpkgs ? }: + let - pkgs = import {}; - pkgs_i686 = import { system = "i686-linux"; }; + pkgs = import nixpkgs {}; + pkgs_i686 = import nixpkgs { system = "i686-linux"; }; in rec { titaniumenv = import ./.. { From 69a13e4e924b31d96708e2786fa2781e8af21faa Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Tue, 5 Mar 2013 15:57:54 +0100 Subject: [PATCH 174/407] We don't need a reference here to titaniumenv, so remove it --- .../mobile/titaniumenv/examples/default.nix | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/pkgs/development/mobile/titaniumenv/examples/default.nix b/pkgs/development/mobile/titaniumenv/examples/default.nix index 952febebc32..db4d7c61a73 100644 --- a/pkgs/development/mobile/titaniumenv/examples/default.nix +++ b/pkgs/development/mobile/titaniumenv/examples/default.nix @@ -2,38 +2,31 @@ let pkgs = import nixpkgs {}; - pkgs_i686 = import nixpkgs { system = "i686-linux"; }; in rec { - titaniumenv = import ./.. { - inherit pkgs pkgs_i686; - }; - kitchensink_android = import ./kitchensink { - inherit titaniumenv; - inherit (pkgs) fetchgit; + inherit (pkgs) fetchgit titaniumenv; target = "android"; }; kitchensink_iphone = import ./kitchensink { - inherit titaniumenv; - inherit (pkgs) fetchgit; + inherit (pkgs) fetchgit titaniumenv; target = "iphone"; }; emulate_kitchensink = import ./emulate-kitchensink { - inherit (titaniumenv) androidenv; + inherit (pkgs.titaniumenv) androidenv; kitchensink = kitchensink_android; }; simulate_kitchensink_iphone = import ./simulate-kitchensink { - inherit (titaniumenv) xcodeenv; + inherit (pkgs.titaniumenv) xcodeenv; kitchensink = kitchensink_iphone; device = "iPhone"; }; simulate_kitchensink_ipad = import ./simulate-kitchensink { - inherit (titaniumenv) xcodeenv; + inherit (pkgs.titaniumenv) xcodeenv; kitchensink = kitchensink_iphone; device = "iPad"; }; From e61bdcfacd7206b6cf426257ee82fc55808f0216 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Tue, 5 Mar 2013 14:30:46 -0800 Subject: [PATCH 175/407] recode-3.7-git --- pkgs/tools/text/recode/default.nix | 45 ++++++------------------------ 1 file changed, 9 insertions(+), 36 deletions(-) diff --git a/pkgs/tools/text/recode/default.nix b/pkgs/tools/text/recode/default.nix index e7c5997021d..f1972e085f5 100644 --- a/pkgs/tools/text/recode/default.nix +++ b/pkgs/tools/text/recode/default.nix @@ -1,46 +1,19 @@ -{stdenv, fetchurl, autoconf, automake, libtool, gettext, perl}: +{stdenv, fetchgit}: -let - asIfPatch = ./recode-3.6-as-if.patch; +stdenv.mkDerivation rec { + name = "recode-3.7-pff85fdbd"; - gettextPatch = ./recode-3.6-gettextfix.diff; - - debianPatch = fetchurl { - url = "http://ftp.de.debian.org/debian/pool/main/r/recode/recode_3.6-15.diff.gz"; - sha256 = "114qxm29wk95w5760bswgd46d5p00g5kbfai5wchjvcbi722p5qf"; + src = fetchgit { + url = https://github.com/pinard/Recode.git; + rev = "2fd8385658e5a08700e3b916053f6680ff85fdbd"; + sha256 = "1xhlfmqld6af16l444jli9crj9brym2jihg1n6lkxh2gar68f5l7"; }; -in -stdenv.mkDerivation { - name = "recode-3.6"; - - src = fetchurl { - url = "ftp://ftp.halifax.rwth-aachen.de/gnu/recode/recode-3.6.tar.gz"; - sha256 = "1krgjqfhsxcls4qvxhagc45sm1sd0w69jm81nwm0bip5z3rs9rp3"; - }; - - buildInputs = [ autoconf automake libtool gettext perl ]; - - patchPhase = '' - patch -Np1 -i ${asIfPatch} - patch -Np1 -i ${gettextPatch} - gunzip <${debianPatch} | patch -Np1 -i - - sed -i '1i#include ' src/argmatch.c - rm -f acinclude.m4 - autoreconf -fi - libtoolize - ''; - - configureFlags = "--without-included-gettext"; - - doCheck = true; meta = { homepage = "http://www.gnu.org/software/recode/"; description = "Converts files between various character sets and usages"; - - license = "GPLv2+"; - platforms = stdenv.lib.platforms.unix; - maintainers = []; + license = stdenv.lib.licenses.gpl2Plus; + maintainers = with stdenv.lib.maintainers; [ jcumming ]; }; } From c00225bcaef73c68a2d7908d6d89ec013bfb698a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 6 Mar 2013 00:01:10 +0100 Subject: [PATCH 176/407] cross-gcc: disable `langCC' when targeting MinGW --- pkgs/top-level/all-packages.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index efeafaa53e6..78f712a7134 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2072,6 +2072,11 @@ let if crossSystem != null && crossSystem.config == "i586-pc-gnu" then gnu.libpthreadCross else null; + + # XXX: We have troubles cross-compiling libstdc++ on MinGW (see + # ), so don't even try. + langCC = (crossSystem == null + || crossSystem.config != "i686-pc-mingw32"); }); libc = libcCross; binutils = binutilsCross; From 6254091950bba4fbc30441171bc697d22f83ccfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Wed, 6 Mar 2013 01:06:16 +0100 Subject: [PATCH 177/407] Add rncbc's Vee One suite: sampler, synth and drum kit --- pkgs/applications/audio/drumkv1/default.nix | 21 +++++++++++++++++++++ pkgs/applications/audio/samplv1/default.nix | 21 +++++++++++++++++++++ pkgs/applications/audio/synthv1/default.nix | 21 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 6 ++++++ 4 files changed, 69 insertions(+) create mode 100644 pkgs/applications/audio/drumkv1/default.nix create mode 100644 pkgs/applications/audio/samplv1/default.nix create mode 100644 pkgs/applications/audio/synthv1/default.nix diff --git a/pkgs/applications/audio/drumkv1/default.nix b/pkgs/applications/audio/drumkv1/default.nix new file mode 100644 index 00000000000..f7fa3a212d1 --- /dev/null +++ b/pkgs/applications/audio/drumkv1/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, jackaudio, libsndfile, lv2, qt4 }: + +stdenv.mkDerivation rec { + name = "drumkv1-${version}"; + version = "0.3.2"; + + src = fetchurl { + url = "mirror://sourceforge/drumkv1/${name}.tar.gz"; + sha256 = "0bafg06iavri9dmg7hpz554kpqf1iv9crcdq46y4n4wyyxd7kajl"; + }; + + buildInputs = [ jackaudio libsndfile lv2 qt4 ]; + + meta = with stdenv.lib; { + description = ""; + homepage = http://drumkv1.sourceforge.net/; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.goibhniu ]; + }; +} \ No newline at end of file diff --git a/pkgs/applications/audio/samplv1/default.nix b/pkgs/applications/audio/samplv1/default.nix new file mode 100644 index 00000000000..584b23b6a01 --- /dev/null +++ b/pkgs/applications/audio/samplv1/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, jackaudio, libsndfile, lv2, qt4 }: + +stdenv.mkDerivation rec { + name = "samplv1-${version}"; + version = "0.3.2"; + + src = fetchurl { + url = "mirror://sourceforge/samplv1/${name}.tar.gz"; + sha256 = "1j6q3ywbdsyhskc60p7k8ph058ylrrmjmri3q1wr2d2akcaqvb7m"; + }; + + buildInputs = [ jackaudio libsndfile lv2 qt4 ]; + + meta = with stdenv.lib; { + description = "An old-school all-digital polyphonic sampler synthesizer with stereo fx"; + homepage = http://samplv1.sourceforge.net/; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.goibhniu ]; + }; +} \ No newline at end of file diff --git a/pkgs/applications/audio/synthv1/default.nix b/pkgs/applications/audio/synthv1/default.nix new file mode 100644 index 00000000000..aadce32dda4 --- /dev/null +++ b/pkgs/applications/audio/synthv1/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, qt4, jackaudio, lv2 }: + +stdenv.mkDerivation rec { + name = "synthv1-${version}"; + version = "0.3.2"; + + src = fetchurl { + url = "mirror://sourceforge/synthv1/${name}.tar.gz"; + sha256 = "1230yf49qfw540yvp5n7sh6mf3k8590pzwc5mragd3nd6k6apgw9"; + }; + + buildInputs = [ qt4 jackaudio lv2 ]; + + meta = with stdenv.lib; { + description = "An old-school 4-oscillator subtractive polyphonic synthesizer with stereo fx"; + homepage = http://synthv1.sourceforge.net/; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.goibhniu ]; + }; +} \ No newline at end of file diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 78f712a7134..d8083b88991 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8250,6 +8250,8 @@ let crrcsim = callPackage ../games/crrcsim {}; + drumkv1 = callPackage ../applications/audio/drumkv1 { }; + dwarf_fortress = callPackage_i686 ../games/dwarf-fortress { }; eduke32 = callPackage ../games/eduke32 { @@ -8358,6 +8360,8 @@ let rogue = callPackage ../games/rogue { }; + samplv1 = callPackage ../applications/audio/samplv1 { }; + sauerbraten = callPackage ../games/sauerbraten {}; scid = callPackage ../games/scid { }; @@ -8390,6 +8394,8 @@ let superTuxKart = callPackage ../games/super-tux-kart { }; + synthv1 = callPackage ../applications/audio/synthv1 { }; + tbe = callPackage ../games/the-butterfly-effect {}; teetertorture = callPackage ../games/teetertorture { }; From ed99c87a263a2ac50e0626a48a316c506f492bc1 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Wed, 6 Mar 2013 01:07:54 -0800 Subject: [PATCH 178/407] get recode testsuite running. --- pkgs/tools/text/recode/default.nix | 12 +++++++++- pkgs/tools/text/recode/recode-3.6-as-if.patch | 19 --------------- .../text/recode/recode-3.6-gettextfix.diff | 23 ------------------- 3 files changed, 11 insertions(+), 43 deletions(-) delete mode 100644 pkgs/tools/text/recode/recode-3.6-as-if.patch delete mode 100644 pkgs/tools/text/recode/recode-3.6-gettextfix.diff diff --git a/pkgs/tools/text/recode/default.nix b/pkgs/tools/text/recode/default.nix index f1972e085f5..17a63799ac4 100644 --- a/pkgs/tools/text/recode/default.nix +++ b/pkgs/tools/text/recode/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchgit}: +# XXX: this may need -liconv on non-glibc systems.. + +{stdenv, fetchgit, python, perl}: stdenv.mkDerivation rec { name = "recode-3.7-pff85fdbd"; @@ -9,6 +11,14 @@ stdenv.mkDerivation rec { sha256 = "1xhlfmqld6af16l444jli9crj9brym2jihg1n6lkxh2gar68f5l7"; }; + buildInputs = [ python perl ]; + + doCheck = true; + + preCheck = '' + checkFlagsArray=(LDFLAGS="-L../src/.libs -Wl,-rpath=../src/.libs") + ''; + meta = { homepage = "http://www.gnu.org/software/recode/"; description = "Converts files between various character sets and usages"; diff --git a/pkgs/tools/text/recode/recode-3.6-as-if.patch b/pkgs/tools/text/recode/recode-3.6-as-if.patch deleted file mode 100644 index c7bcc27c875..00000000000 --- a/pkgs/tools/text/recode/recode-3.6-as-if.patch +++ /dev/null @@ -1,19 +0,0 @@ -http://bugs.gentoo.org/283029 - ---- a/m4/flex.m4 -+++ b/m4/flex.m4 -@@ -8,11 +8,11 @@ dnl ad_AC_PROG_FLEX - dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT - AC_DEFUN(ad_AC_PROG_FLEX, - [AC_CHECK_PROGS(LEX, flex, missing) --if test "$LEX" = missing; then -+AS_IF([test "$LEX" = missing], [dnl - LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" - LEX_OUTPUT_ROOT=lex.yy - AC_SUBST(LEX_OUTPUT_ROOT)dnl --else -+], [: - AC_PROG_LEX - AC_DECL_YYTEXT --fi]) -+])]) diff --git a/pkgs/tools/text/recode/recode-3.6-gettextfix.diff b/pkgs/tools/text/recode/recode-3.6-gettextfix.diff deleted file mode 100644 index 3b7eb8ba20e..00000000000 --- a/pkgs/tools/text/recode/recode-3.6-gettextfix.diff +++ /dev/null @@ -1,23 +0,0 @@ -http://bugs.gentoo.org/239372 - -patch by Dmitry Karasik - ---- recode-3.6/m4/gettext.m4 -+++ recode-3.6/m4/gettext.m4 -@@ -109,12 +109,12 @@ - else - ac_items="$LINGUAS" - for ac_item in $ac_items; do -- case "$ALL_LINGUAS" in -- *$ac_item*) -+ for supported_item in $ALL_LINGUAS; do -+ if test "$ac_item" = "$supported_item"; then - ac_print="$ac_print $ac_item" - MOFILES="$MOFILES $ac_item.mo" -- ;; -- esac -+ fi -+ done - done - fi - AC_SUBST(MOFILES) From e17ac44037a2a66b8c162db45914e750862b190a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:00 +0100 Subject: [PATCH 179/407] haskell-HSH: update to version 2.1.0 --- pkgs/development/libraries/haskell/HSH/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/HSH/default.nix b/pkgs/development/libraries/haskell/HSH/default.nix index 40620901839..f80f74a3dc2 100644 --- a/pkgs/development/libraries/haskell/HSH/default.nix +++ b/pkgs/development/libraries/haskell/HSH/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "HSH"; - version = "2.0.4"; - sha256 = "1ddpazmk82716hqd1riqs7vnl4aildgwkjgk80iam49df9p5b8v8"; + version = "2.1.0"; + sha256 = "0gz2hzdvf0gqv33jihn67bvry38c6hkjapb1prxmb3w12lisr4l5"; isLibrary = true; isExecutable = true; buildDepends = [ From 62c29e07553d34f7f2c56940552e42b5004064f9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:00 +0100 Subject: [PATCH 180/407] haskell-blaze-html: update to version 0.6.1.0 --- pkgs/development/libraries/haskell/blaze-html/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/blaze-html/default.nix b/pkgs/development/libraries/haskell/blaze-html/default.nix index 59e0f718751..2063e3a862d 100644 --- a/pkgs/development/libraries/haskell/blaze-html/default.nix +++ b/pkgs/development/libraries/haskell/blaze-html/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "blaze-html"; - version = "0.6.0.0"; - sha256 = "0n8jpmslcs29pfyb8jhp43dg4058ahd9y3kf2p2wr3r6b9yr5dll"; + version = "0.6.1.0"; + sha256 = "1y2z2md62kpl57qcvwvswmrjq7zhkqwfv8zr2acdvcxcxnyc47fm"; buildDepends = [ blazeBuilder blazeMarkup text ]; testDepends = [ blazeBuilder blazeMarkup HUnit QuickCheck testFramework From 3b530dba513203beb8096a143aff6c38300c091d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:00 +0100 Subject: [PATCH 181/407] haskell-diagrams-core: update to version 0.6.0.2 --- pkgs/development/libraries/haskell/diagrams/core.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/diagrams/core.nix b/pkgs/development/libraries/haskell/diagrams/core.nix index c087e27d025..ebea3fd6090 100644 --- a/pkgs/development/libraries/haskell/diagrams/core.nix +++ b/pkgs/development/libraries/haskell/diagrams/core.nix @@ -4,13 +4,12 @@ cabal.mkDerivation (self: { pname = "diagrams-core"; - version = "0.6.0.1"; - sha256 = "0kw0rxk9a2zkpnbx4bfd0japm75y29ldvdn7i3c93kvz0p6jc2wa"; + version = "0.6.0.2"; + sha256 = "1g4b1zabgfdpaf7y3804r3w04ll4sqqrf71rm9389dg17ghc1q85"; buildDepends = [ dualTree MemoTrie monoidExtras newtype semigroups vectorSpace vectorSpacePoints ]; - jailbreak = true; meta = { homepage = "http://projects.haskell.org/diagrams"; description = "Core libraries for diagrams EDSL"; From 0395e7517597c6fd8d413162c76d2c0bd957ba84 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:00 +0100 Subject: [PATCH 182/407] haskell-flexible-defaults: update to version 0.0.1.1 --- .../libraries/haskell/flexible-defaults/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/flexible-defaults/default.nix b/pkgs/development/libraries/haskell/flexible-defaults/default.nix index 9cba8f2c13f..7be21dbbf34 100644 --- a/pkgs/development/libraries/haskell/flexible-defaults/default.nix +++ b/pkgs/development/libraries/haskell/flexible-defaults/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "flexible-defaults"; - version = "0.0.1.0"; - sha256 = "0vq8ci3zbzmw8abjd12dhjiqzz4ckr99c1fqk32qsp5bvm81bdma"; + version = "0.0.1.1"; + sha256 = "0cbp8hb7y29xz3hl780173cs6ca4df0r98fz7v3drqr46aq55ipl"; buildDepends = [ thExtras transformers ]; meta = { homepage = "https://github.com/mokus0/flexible-defaults"; From 53ecc95c722c95ef844ac0848bbe7b2c01012a34 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:00 +0100 Subject: [PATCH 183/407] haskell-ghc-mod: update to version 1.12.0 --- .../libraries/haskell/ghc-mod/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix index 3481d37356d..7bcb94ab40c 100644 --- a/pkgs/development/libraries/haskell/ghc-mod/default.nix +++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix @@ -1,20 +1,20 @@ { cabal, Cabal, convertible, emacs, filepath, ghcPaths, ghcSybUtils -, hlint, hspec, ioChoice, regexPosix, syb, time, transformers +, hlint, hspec, ioChoice, syb, time, transformers }: cabal.mkDerivation (self: { pname = "ghc-mod"; - version = "1.11.5"; - sha256 = "0lcq4ffmv017pdy58p91qn5d4hmcxcqzk8dvnmh7m4m7saslqivp"; + version = "1.12.0"; + sha256 = "01jq6hk8vcy47nc6gd4379k6kgjiyxy99j4pnc7nsdm63gnmr5l1"; isLibrary = false; isExecutable = true; buildDepends = [ - Cabal convertible filepath ghcPaths ghcSybUtils hlint ioChoice - regexPosix syb time transformers + Cabal convertible filepath ghcPaths ghcSybUtils hlint ioChoice syb + time transformers ]; testDepends = [ Cabal convertible filepath ghcPaths ghcSybUtils hlint hspec - ioChoice regexPosix syb time transformers + ioChoice syb time transformers ]; buildTools = [ emacs ]; postInstall = '' From e02fe72dd347b90ce6028a6682e3905b3b875b1b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 184/407] haskell-ghc-vis: update to version 0.6.1 --- pkgs/development/libraries/haskell/ghc-vis/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/ghc-vis/default.nix b/pkgs/development/libraries/haskell/ghc-vis/default.nix index 4b606e8b73b..3fd1230073e 100644 --- a/pkgs/development/libraries/haskell/ghc-vis/default.nix +++ b/pkgs/development/libraries/haskell/ghc-vis/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "ghc-vis"; - version = "0.6"; - sha256 = "0gvfs0f6fjg4bzq9q6rrhin6gk1pbyw9qbigi90cz1fg10nq7nzi"; + version = "0.6.1"; + sha256 = "0q0v1l44vagcg0nl4iv8m872g4qblj9syjlcgbf6fpgx1fqnyp24"; buildDepends = [ cairo deepseq fgl ghcHeapView graphviz gtk mtl svgcairo text transformers xdot From 3cb80788bf246fbbe221feaa328e216664efbcf7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 185/407] haskell-happstack-server: update to version 7.1.7 --- .../libraries/haskell/happstack/happstack-server.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/happstack/happstack-server.nix b/pkgs/development/libraries/haskell/happstack/happstack-server.nix index 8d8261df97e..370896f77e8 100644 --- a/pkgs/development/libraries/haskell/happstack/happstack-server.nix +++ b/pkgs/development/libraries/haskell/happstack/happstack-server.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { pname = "happstack-server"; - version = "7.1.6"; - sha256 = "0gifq625kclam6sgblwa8a1vhxmx8saanzlrikch0l9q0l95nfwd"; + version = "7.1.7"; + sha256 = "1gd7qa224z04aya44fdrbhpiy5iw88wjcvqihz6l95ks9ilbzmg7"; buildDepends = [ base64Bytestring blazeHtml extensibleExceptions filepath hslogger html monadControl mtl network parsec sendfile syb systemFilepath @@ -16,7 +16,6 @@ cabal.mkDerivation (self: { utf8String xhtml zlib ]; testDepends = [ HUnit parsec zlib ]; - doCheck = false; meta = { homepage = "http://happstack.com"; description = "Web related tools and services"; From cd54b6379124fc30a7a1ede6f5e37780a4b16388 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 186/407] haskell-highlighting-kate: update to version 0.5.3.8 --- .../libraries/haskell/highlighting-kate/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/highlighting-kate/default.nix b/pkgs/development/libraries/haskell/highlighting-kate/default.nix index 805519d3d30..9d6185dc526 100644 --- a/pkgs/development/libraries/haskell/highlighting-kate/default.nix +++ b/pkgs/development/libraries/haskell/highlighting-kate/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "highlighting-kate"; - version = "0.5.3.7"; - sha256 = "04wa1al83v5ak6gvrwqy2b63mda0qfi2ircxfs9ddk1gkdscrlrl"; + version = "0.5.3.8"; + sha256 = "1fdgmwhiw05mgbgsrgyzvdqzklw9r10nswxfpnxkh5ivfxrhz82w"; isLibrary = true; isExecutable = true; buildDepends = [ blazeHtml filepath mtl parsec regexPcre ]; From f5313a6220cc66fac47efded5360e394539e8be4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 187/407] haskell-hp2any-core: update to version 0.11.2 --- pkgs/development/libraries/haskell/hp2any-core/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/hp2any-core/default.nix b/pkgs/development/libraries/haskell/hp2any-core/default.nix index 37e6000a3c0..96ac397da79 100644 --- a/pkgs/development/libraries/haskell/hp2any-core/default.nix +++ b/pkgs/development/libraries/haskell/hp2any-core/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "hp2any-core"; - version = "0.11.1"; - sha256 = "146bigmch7dawyyakj0w55p0jdpnxkj8q5izjsswqqk0pdxia546"; + version = "0.11.2"; + sha256 = "1gmw9bggw8hsp6pi0xgrryf0sqjb1aaxbwh85q5h72h4ixskwn1y"; buildDepends = [ attoparsec filepath network time ]; meta = { homepage = "http://www.haskell.org/haskellwiki/Hp2any"; From 3c321d0327ff3c20dac3605c8957e190e412bae0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 188/407] haskell-hp2any-graph: update to version 0.5.4 --- pkgs/development/libraries/haskell/hp2any-graph/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/hp2any-graph/default.nix b/pkgs/development/libraries/haskell/hp2any-graph/default.nix index 98b9518c7de..83369ac008b 100644 --- a/pkgs/development/libraries/haskell/hp2any-graph/default.nix +++ b/pkgs/development/libraries/haskell/hp2any-graph/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "hp2any-graph"; - version = "0.5.3"; - sha256 = "1al20pxfgkgwynrx7vr0i57342s91lcm3cnd9qjx8b6vkqmzykkq"; + version = "0.5.4"; + sha256 = "1lhp9saw51w09fhk94hz31rjawnnxavd7x3lxjc8xn1778wp3v9h"; isLibrary = true; isExecutable = true; buildDepends = [ From d8b62ae485ce764a37a1fe36c6b61155ca4c447f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 189/407] haskell-shelly: update to version 0.15.4.1 --- pkgs/development/libraries/haskell/shelly/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/shelly/default.nix b/pkgs/development/libraries/haskell/shelly/default.nix index 325021c1cca..1e9e1f8c6cc 100644 --- a/pkgs/development/libraries/haskell/shelly/default.nix +++ b/pkgs/development/libraries/haskell/shelly/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "shelly"; - version = "0.15.4"; - sha256 = "1b8fn5fa350hhlswn97g6zn9454nzn9sz60x55j959phwys0fcdk"; + version = "0.15.4.1"; + sha256 = "12m11s22izz0ny1syb1ykp2hi9n240myf0nhapvn8jx1fgf5iyck"; buildDepends = [ mtl systemFileio systemFilepath text time unixCompat ]; From fc66f4a3559ac7fb1fd38117a1bf8eb72e85655c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 190/407] haskell-uu-parsinglib: update to version 2.7.4.2 --- pkgs/development/libraries/haskell/uu-parsinglib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/uu-parsinglib/default.nix b/pkgs/development/libraries/haskell/uu-parsinglib/default.nix index d28eb827dab..d9477f4233d 100644 --- a/pkgs/development/libraries/haskell/uu-parsinglib/default.nix +++ b/pkgs/development/libraries/haskell/uu-parsinglib/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "uu-parsinglib"; - version = "2.7.4.1"; - sha256 = "1aya95j7dd0yal0ygy6d4w4wmlhgn5ddy3c5f6ncl4k3kg7hjxd1"; + version = "2.7.4.2"; + sha256 = "10ddm6x9km3lzs9ahqpsl9krvslsn9glimwzq4hspgsp6izd1dmq"; buildDepends = [ ListLike time ]; meta = { homepage = "http://www.cs.uu.nl/wiki/bin/view/HUT/ParserCombinators"; From 272123038ee39afda6f47cad6cd6fcf17de21ede Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 191/407] haskell-xdot: update to version 0.2.3 --- pkgs/development/libraries/haskell/xdot/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/xdot/default.nix b/pkgs/development/libraries/haskell/xdot/default.nix index 73cc5c6e764..d1702862f42 100644 --- a/pkgs/development/libraries/haskell/xdot/default.nix +++ b/pkgs/development/libraries/haskell/xdot/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "xdot"; - version = "0.2.2"; - sha256 = "1n7lwshfn5rzbk4fxlkn02fxki2xh5m0304hnb1d5mchxyzhfdan"; + version = "0.2.3"; + sha256 = "0xb8igsqydiw1w00frn4mxkflhxkayif2vivxmq5fk53am2f43wy"; buildDepends = [ cairo graphviz gtk mtl polyparse text ]; meta = { description = "Parse Graphviz xdot files and interactively view them using GTK and Cairo"; From 5371f4b5d6268306df45c1bf3e17af89695b800b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 192/407] haskell-zip-archive: update to version 0.1.3.4 --- pkgs/development/libraries/haskell/zip-archive/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/zip-archive/default.nix b/pkgs/development/libraries/haskell/zip-archive/default.nix index 45f2ac96319..2e658b15a15 100644 --- a/pkgs/development/libraries/haskell/zip-archive/default.nix +++ b/pkgs/development/libraries/haskell/zip-archive/default.nix @@ -4,13 +4,12 @@ cabal.mkDerivation (self: { pname = "zip-archive"; - version = "0.1.3.3"; - sha256 = "0zzps6s6lsv35qv1xx1fwipk2nwv255wpa956mvzbwdr47pgqjwi"; + version = "0.1.3.4"; + sha256 = "0hvndr3gb7fiv4qjwjvic5mg7wq7h7nw3c3v5xq8fnlr1l943vyb"; isLibrary = true; isExecutable = true; buildDepends = [ binary digest filepath mtl time utf8String zlib ]; testDepends = [ HUnit time ]; - doCheck = false; meta = { homepage = "http://github.com/jgm/zip-archive"; description = "Library for creating and modifying zip archives"; From 70836d5e64dedc84708097f086aa188a117bfb18 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 11:06:01 +0100 Subject: [PATCH 193/407] haskell-cabal2nix: update to version 1.45 --- pkgs/development/tools/haskell/cabal2nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/haskell/cabal2nix/default.nix b/pkgs/development/tools/haskell/cabal2nix/default.nix index ed26e335870..5fe5fc3639f 100644 --- a/pkgs/development/tools/haskell/cabal2nix/default.nix +++ b/pkgs/development/tools/haskell/cabal2nix/default.nix @@ -3,8 +3,8 @@ cabal.mkDerivation (self: { pname = "cabal2nix"; - version = "1.44"; - sha256 = "1j2w5g75nir0ax9pvn1fyj5l1c4s84mbj400any9v0bpv624mffm"; + version = "1.45"; + sha256 = "0xj4qkh4kp2q1a73q5da71spzskpxcfnn4pga9s492baf9yflhlf"; isLibrary = false; isExecutable = true; buildDepends = [ Cabal filepath hackageDb HTTP mtl regexPosix ]; From 1fdd780e2c833ffb513aaee639d2105069d8590d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 6 Mar 2013 12:38:49 +0100 Subject: [PATCH 194/407] ctags: update to SVN revision 804 --- pkgs/development/tools/misc/ctags/default.nix | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/pkgs/development/tools/misc/ctags/default.nix b/pkgs/development/tools/misc/ctags/default.nix index 57718088080..80def733cf8 100644 --- a/pkgs/development/tools/misc/ctags/default.nix +++ b/pkgs/development/tools/misc/ctags/default.nix @@ -1,24 +1,26 @@ -{stdenv, fetchurl, sourceFromHead, automake, autoconf}: +{ stdenv, fetchsvn, automake, autoconf}: stdenv.mkDerivation rec { - name = "ctags-svn"; - # REGION AUTO UPDATE: { name="ctags"; type = "svn"; url = "https://ctags.svn.sourceforge.net/svnroot/ctags/trunk"; } - src= sourceFromHead "ctags-749.tar.gz" - (fetchurl { url = "http://mawercer.de/~nix/repos/ctags-749.tar.gz"; sha256 = "01dd4bf2e55dbedc38def81febef60eece912cb7624df1c0a2cf1ed6e4bc4ecf"; }); - # END + name = "ctags-${revision}"; + revision = "804"; - preConfigure = '' - autoheader - autoconf - ''; + src = fetchsvn { + url = "http://ctags.svn.sourceforge.net/svnroot/ctags/trunk"; + rev = revision; + sha256 = "16gln1mah2jqp32ki1z0187dwkbjx1xcnmyiardcq6c9w3p4qwcr"; + }; buildInputs = [ automake autoconf ]; + preConfigure = "autoreconf -i"; + # don't use $T(E)MP which is set to the build directory configureFlags="--enable-tmpdir=/tmp"; meta = { + homepage = "http://ctags.sourceforge.net/"; description = "Exuberant Ctags, a tool for fast source code browsing"; + license = stdenv.lib.licenses.gpl2Plus; longDescription = '' Ctags generates an index (or tag) file of language objects found @@ -29,9 +31,8 @@ stdenv.mkDerivation rec { programming languages are supported. ''; - homepage = http://ctags.sourceforge.net/; - - license = "GPLv2+"; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.simons ]; }; } From 92656e5f526402b2a18751c365e6b1a47731dfbb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 6 Mar 2013 13:43:57 +0100 Subject: [PATCH 195/407] coreutils: Update to 8.21 Now "df" finally hides bind mounts and rootfs! --- pkgs/tools/misc/coreutils/default.nix | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 9fd1d86ff82..065d237a073 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -7,11 +7,11 @@ assert aclSupport -> acl != null; assert selinuxSupport -> libselinux != null && libsepol != null; stdenv.mkDerivation rec { - name = "coreutils-8.20"; + name = "coreutils-8.21"; src = fetchurl { url = "mirror://gnu/coreutils/${name}.tar.xz"; - sha256 = "1cly97xdy3v4nbbx631k43smqw0nnpn651kkprs0yyl2cj3pkjyv"; + sha256 = "064f512185iysqqcvhnhaf3bfmzrvcgs7n405qsyp99zmfyl9amd"; }; nativeBuildInputs = [ perl ]; @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optional selinuxSupport libselinux ++ stdenv.lib.optional selinuxSupport libsepol; - crossAttrs = ({ + crossAttrs = { buildInputs = [ gmp ] ++ stdenv.lib.optional aclSupport acl.crossDrv ++ stdenv.lib.optional selinuxSupport libselinux.crossDrv @@ -32,14 +32,7 @@ stdenv.mkDerivation rec { # I don't know why it is not properly detected cross building with glibc. configureFlags = [ "fu_cv_sys_stat_statfs2_bsize=yes" ]; doCheck = false; - } - - // - - # XXX: Temporary workaround to allow GNU/Hurd builds with newer libcs. - (stdenv.lib.optionalAttrs (stdenv.cross.config == "i586-pc-gnu") { - patches = [ ./gets-undeclared.patch ]; - })); + }; # The tests are known broken on Cygwin # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025), @@ -67,4 +60,3 @@ stdenv.mkDerivation rec { maintainers = [ stdenv.lib.maintainers.ludo ]; }; } - From 4623d3ff01cd48a8ff0632a1bb1000eb4200b106 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 6 Mar 2013 14:02:53 +0100 Subject: [PATCH 196/407] glibc: Fix an assertion failure in getaddrinfo.c For instance, when connected to a VPN, Emacs would randomly crash at startup: emacs: ../sysdeps/posix/getaddrinfo.c:1467: rfc3484_sort: Assertion `src->results[i].native == -1 || src->results[i].native == a2_native' failed. --- .../libraries/glibc/2.17/common.nix | 5 ++ .../libraries/glibc/2.17/glibc-rh739743.patch | 55 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 pkgs/development/libraries/glibc/2.17/glibc-rh739743.patch diff --git a/pkgs/development/libraries/glibc/2.17/common.nix b/pkgs/development/libraries/glibc/2.17/common.nix index eed51288707..ea2f3b6d140 100644 --- a/pkgs/development/libraries/glibc/2.17/common.nix +++ b/pkgs/development/libraries/glibc/2.17/common.nix @@ -49,6 +49,11 @@ stdenv.mkDerivation ({ compatibility with old NixOS installations (since NixOS used to default to blowfish). */ ./glibc-crypt-blowfish.patch + + /* Fix for random "./sysdeps/posix/getaddrinfo.c:1467: + rfc3484_sort: Assertion `src->results[i].native == -1 || + src->results[i].native == a2_native' failed." crashes. */ + ./glibc-rh739743.patch ]; postPatch = '' diff --git a/pkgs/development/libraries/glibc/2.17/glibc-rh739743.patch b/pkgs/development/libraries/glibc/2.17/glibc-rh739743.patch new file mode 100644 index 00000000000..c390b772b16 --- /dev/null +++ b/pkgs/development/libraries/glibc/2.17/glibc-rh739743.patch @@ -0,0 +1,55 @@ +2009-04-26 Aurelien Jarno + + * sysdeps/posix/getaddrinfo.c (rfc3484_sort): don't assign native + result if the result has no associated interface. + +--- + sysdeps/posix/getaddrinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -1456,13 +1456,13 @@ + + /* Fill in the results in all the records. */ + for (int i = 0; i < src->nresults; ++i) +- if (src->results[i].index == a1_index) ++ if (a1_index != -1 && src->results[i].index == a1_index) + { + assert (src->results[i].native == -1 + || src->results[i].native == a1_native); + src->results[i].native = a1_native; + } +- else if (src->results[i].index == a2_index) ++ else if (a2_index != -1 && src->results[i].index == a2_index) + { + assert (src->results[i].native == -1 + || src->results[i].native == a2_native); + +2009-03-15 Aurelien Jarno + + * sysdeps/posix/getaddrinfo.c (getaddrinfo): correctly detect + interface for all 127.X.Y.Z addresses. + +--- + sysdeps/posix/getaddrinfo.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -2265,7 +2265,14 @@ + tmp.addr[0] = 0; + tmp.addr[1] = 0; + tmp.addr[2] = htonl (0xffff); +- tmp.addr[3] = sinp->sin_addr.s_addr; ++ /* Special case for lo interface, the source address ++ being possibly different than the interface ++ address. */ ++ if ((ntohl(sinp->sin_addr.s_addr) & 0xff000000) ++ == 0x7f000000) ++ tmp.addr[3] = htonl(0x7f000001); ++ else ++ tmp.addr[3] = sinp->sin_addr.s_addr; + } + else + { From 653ad8ec2f190480baf62813bb1d558c8cd5cc63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 6 Mar 2013 15:19:53 +0100 Subject: [PATCH 197/407] gmp: disable stripping when cross-compiling --- pkgs/development/libraries/gmp/5.0.5.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/development/libraries/gmp/5.0.5.nix b/pkgs/development/libraries/gmp/5.0.5.nix index 98ebe5fcc25..c1cc36105ad 100644 --- a/pkgs/development/libraries/gmp/5.0.5.nix +++ b/pkgs/development/libraries/gmp/5.0.5.nix @@ -23,6 +23,13 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; + crossAttrs = { + # Disable stripping to avoid "libgmp.a: Archive has no index" + # (see .) + dontStrip = true; + dontCrossStrip = true; + }; + meta = { description = "GMP, the GNU multiple precision arithmetic library"; From 5e83e93e97625bdeac8cbeb965b4d60aa2bf2558 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 6 Mar 2013 16:33:01 +0100 Subject: [PATCH 198/407] =?UTF-8?q?Add=20a=20library=20function=20?= =?UTF-8?q?=E2=80=98genAttrs=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It generates an attribute set by mapping a function over a list of attribute names. --- pkgs/lib/attrsets.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/lib/attrsets.nix b/pkgs/lib/attrsets.nix index fcdc3c31f29..f562a2f7df4 100644 --- a/pkgs/lib/attrsets.nix +++ b/pkgs/lib/attrsets.nix @@ -194,7 +194,7 @@ rec { (as: !(as ? "type" && as.type == "derivation")) (x: ... do something ...) attrs - */ + */ mapAttrsRecursiveCond = cond: f: set: let recurse = path: set: @@ -208,6 +208,17 @@ rec { in recurse [] set; + /* Generate an attribute set by mapping a function over a list of + attribute names. + + Example: + genAttrs [ "foo" "bar" ] (name: "x_" + name) + => { foo = "x_foo"; bar = "x_bar"; } + */ + genAttrs = names: f: + listToAttrs (map (n: nameValuePair n (f n)) names); + + /* Check whether the argument is a derivation. */ isDerivation = x: isAttrs x && x ? type && x.type == "derivation"; From 85d464a031c6ac79eb565bdfb49a496dbda9c0c8 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 6 Mar 2013 16:57:57 +0100 Subject: [PATCH 199/407] Remove some hackery --- pkgs/build-support/release/source-tarball.nix | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/pkgs/build-support/release/source-tarball.nix b/pkgs/build-support/release/source-tarball.nix index 5ba1356a17f..b50077975c1 100644 --- a/pkgs/build-support/release/source-tarball.nix +++ b/pkgs/build-support/release/source-tarball.nix @@ -6,23 +6,15 @@ , buildInputs ? [] , name ? "source-tarball" , version ? "0" -, versionSuffix ? +, versionSuffix ? if officialRelease then "" else "pre${toString (src.rev or src.revCount or "")}" , src, stdenv, autoconf, automake, libtool +, # By default, provide all the GNU Build System as input. + bootstrapBuildInputs ? [ autoconf automake libtool ] , ... } @ args: -let - - # By default, provide all the GNU Build System as input. - bootstrapBuildInputs = - if (args ? bootstrapBuildInputs) - then args.bootstrapBuildInputs - else [ autoconf automake libtool ]; - -in - stdenv.mkDerivation ( # First, attributes that can be overriden by the caller (via args): @@ -82,17 +74,17 @@ stdenv.mkDerivation ( } # Then, the caller-supplied attributes. - // args // + // args // # And finally, our own stuff. { name = name + "-" + version + versionSuffix; buildInputs = buildInputs ++ bootstrapBuildInputs; - + preUnpack = '' mkdir -p $out/nix-support - ''; + ''; postUnpack = '' # Set all source files to the current date. This is because Nix From da437144fa4f446e91b5f7f78b55faa4d12de58a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Wed, 6 Mar 2013 18:14:18 +0100 Subject: [PATCH 200/407] webkit(_gtk2): clean, unify and enable parallel building This should make webkit_gtk2 build. --- pkgs/development/libraries/webkit/default.nix | 47 +++++++++------- pkgs/development/libraries/webkit/gtk2.nix | 55 ++++++++++++------- .../libraries/webkit/src-for-gtk2.nix | 11 ++-- pkgs/top-level/all-packages.nix | 34 +++++------- 4 files changed, 82 insertions(+), 65 deletions(-) diff --git a/pkgs/development/libraries/webkit/default.nix b/pkgs/development/libraries/webkit/default.nix index 47bdcabd514..ef4d259cb02 100644 --- a/pkgs/development/libraries/webkit/default.nix +++ b/pkgs/development/libraries/webkit/default.nix @@ -1,6 +1,6 @@ args : with args; let - s = import ./src-for-default.nix; # 1.10 needs newer gtk3, wait for x-updates + s = import ./src-for-default.nix; # 1.8.3 needs newer gtk3, wait for x-updates version = lib.attrByPath ["version"] s.version args; in rec { @@ -9,12 +9,13 @@ rec { sha256 = s.hash; }; - buildInputs = [gtk gtk2 glib atk cairo curl fontconfig freetype - gettext libjpeg libpng libtiff libxml2 libxslt pango - sqlite icu gperf bison flex autoconf automake libtool - perl intltool pkgconfig libsoup gtkdoc libXt libproxy - enchant python ruby which renderproto libXrender geoclue - kbproto mesa + buildInputs = with xlibs; [ + pkgconfig libtool intltool autoconf automake gperf bison flex + gtk3 gtk2 glib atk cairo pango fontconfig freetype libsoup gtkdoc + libjpeg libpng libtiff libxml2 libxslt sqlite icu curl + which libproxy geoclue enchant python ruby perl + mesa libXt libXrender renderproto libXcomposite compositeproto + libXdamage damageproto kbproto ]; propagatedBuildInputs = [ @@ -22,19 +23,22 @@ rec { ]; configureFlags = [ - "--enable-3D-transforms" + # "--enable-3D-transforms" # no longer recognized "--enable-web-sockets" "--enable-web-timing" - + + # https://bugs.webkit.org/show_bug.cgi?id=55294 + "--enable-image-resizer" + "--enable-geolocation" # Not implemented? - #"--enable-web-audio" + # "--enable-web-audio" "--enable-mathml" #"--enable-wml" - + # https://bugs.webkit.org/show_bug.cgi?id=45110 #"--enable-indexed-database" @@ -43,27 +47,30 @@ rec { # "--enable-input-speech" - "--enable-file-writer" + #"--enable-file-writer" # no longer recognized "--enable-blob" # https://bugs.webkit.org/show_bug.cgi?id=59430 - #"--enable-directory-upload" + # "--enable-directory-upload" # https://bugs.webkit.org/show_bug.cgi?id=58443 - #"--enable-file-system" + # "--enable-file-system" + + "--enable-dependency-tracking" # to fix parallel building ]; - /* doConfigure should be specified separately */ - phaseNames = ["setVars" "doPatch" "fixConfigure" /* "paranoidFixComments" */ "doConfigure" (doPatchShebangs ".") - "doReplaceUsrBin" "doMakeInstall" "doAddPrograms"]; + # instead of enableParallelBuilding = true; + makeFlags = "-j$NIX_BUILD_CORES"; - setVars = fullDepEntry ('' - export NIX_LDFLAGS="$NIX_LDFLAGS -lXt" - '') ["minInit"]; + /* doConfigure should be specified separately */ + phaseNames = ["doPatch" "fixConfigure" /* "paranoidFixComments" */ "doConfigure" (doPatchShebangs ".") + "doReplaceUsrBin" "doMakeInstall" "doAddPrograms"]; patches = [ ./bison26.patch ]; # http://trac.webkit.org/changeset/124099 patchFlags = "-p2"; + #doCheck = true; # tests still have problems + doReplaceUsrBin = fullDepEntry ('' for i in $(find . -name '*.pl') $(find . -name '*.pm'); do sed -e 's@/usr/bin/gcc@gcc@' -i $i diff --git a/pkgs/development/libraries/webkit/gtk2.nix b/pkgs/development/libraries/webkit/gtk2.nix index 0b836cd08f0..c2e3b9b06dd 100644 --- a/pkgs/development/libraries/webkit/gtk2.nix +++ b/pkgs/development/libraries/webkit/gtk2.nix @@ -10,11 +10,13 @@ rec { sha256 = s.hash; }; - buildInputs = [gtk glib atk cairo curl fontconfig freetype - gettext libjpeg libpng libtiff libxml2 libxslt pango - sqlite icu gperf bison flex autoconf automake libtool - intltool pkgconfig libsoup gtkdoc libXt libproxy - enchant python ruby which renderproto libXrender geoclue perl + buildInputs = with xlibs; [ + pkgconfig libtool intltool autoconf automake gperf bison flex + gtk2 glib atk cairo pango fontconfig freetype libsoup gtkdoc + libjpeg libpng libtiff libxml2 libxslt sqlite icu curl + which libproxy geoclue enchant python ruby perl + mesa libXt libXrender renderproto libXcomposite compositeproto + libXdamage damageproto kbproto ]; propagatedBuildInputs = [ @@ -22,12 +24,14 @@ rec { ]; configureFlags = [ - "--enable-3D-transforms" + "--with-gtk=2.0" + + # "--enable-3D-transforms" # no longer recognized "--enable-web-sockets" "--enable-web-timing" - + # https://bugs.webkit.org/show_bug.cgi?id=55294 - # "--enable-image-resizer" + "--enable-image-resizer" "--enable-geolocation" @@ -37,15 +41,16 @@ rec { "--enable-mathml" #"--enable-wml" - - # https://bugs.webkit.org/show_bug.cgi?id=45110 - # "--enable-indexed-database" - "--enable-xhtmlmp" + # https://bugs.webkit.org/show_bug.cgi?id=45110 + #"--enable-indexed-database" + + # Doesn't work in release... + #"--enable-xhtmlmp" # "--enable-input-speech" - "--enable-file-writer" + #"--enable-file-writer" # no longer recognized "--enable-blob" # https://bugs.webkit.org/show_bug.cgi?id=59430 @@ -53,16 +58,21 @@ rec { # https://bugs.webkit.org/show_bug.cgi?id=58443 # "--enable-file-system" + + "--enable-dependency-tracking" # to fix parallel building ]; + # instead of enableParallelBuilding = true; + makeFlags = "-j$NIX_BUILD_CORES"; + /* doConfigure should be specified separately */ - phaseNames = ["setVars" /* "paranoidFixComments" */ "doConfigure" (doPatchShebangs ".") + phaseNames = ["doPatch" "fixConfigure" /* "paranoidFixComments" */ "doConfigure" (doPatchShebangs ".") "doReplaceUsrBin" "doMakeInstall" "doAddPrograms"]; - setVars = fullDepEntry ('' - export NIX_LDFLAGS="$NIX_LDFLAGS -lXt" - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fpermissive" - '') ["minInit"]; + patches = [ ./bison26.patch ]; # http://trac.webkit.org/changeset/124099 + patchFlags = "-p2"; + + #doCheck = true; # tests still have problems doReplaceUsrBin = fullDepEntry ('' for i in $(find . -name '*.pl') $(find . -name '*.pm'); do @@ -81,12 +91,19 @@ rec { sed -re 's@( |^)//.*@/* & */@' -i $(find . -name '*.c' -o -name '*.h') '') ["minInit" "doUnpack"]; + # See http://archive.linuxfromscratch.org/mail-archives/blfs-dev/2012-April/022893.html + fixConfigure = fullDepEntry ('' + sed -i -e 's/=GSTREAMER_0_10_REQUIRED_VERSION/=\$GSTREAMER_0_10_REQUIRED_VERSION/' \ + -e 's/=GSTREAMER_0_10_PLUGINS_BASE_REQUIRED_VERSION/=\$GSTREAMER_0_10_PLUGINS_BASE_REQUIRED_VERSION/' \ + configure{,.ac} + '') ["minInit" "doUnpack"]; + name = s.name; meta = { description = "WebKit - a fast and correct HTML renderer"; maintainers = [stdenv.lib.maintainers.raskin]; }; passthru = { - inherit gstreamer gst_plugins_base gst_plugins_good gst_ffmpeg; + inherit gstreamer gst_plugins_base gst_plugins_good gst_ffmpeg libsoup; }; } diff --git a/pkgs/development/libraries/webkit/src-for-gtk2.nix b/pkgs/development/libraries/webkit/src-for-gtk2.nix index 5f5149fedfe..65bcd435096 100644 --- a/pkgs/development/libraries/webkit/src-for-gtk2.nix +++ b/pkgs/development/libraries/webkit/src-for-gtk2.nix @@ -1,9 +1,10 @@ rec { - version="1.4.0"; - name="webkit-1.4.0"; - hash="123zllzlnkjgw4d2ag73dvrjmkikbapxlz5730ps6y4qm43gxc1y"; - url="http://webkitgtk.org/webkit-1.4.0.tar.gz"; - advertisedUrl="http://webkitgtk.org/webkit-1.4.0.tar.gz"; + version="1.8.1"; + name="webkit-1.8.1"; + hash="0a1v3v8dp2cl332qr51j4fpl0rwpgxbf29hn3zdim9hcniv6l4ls"; + url="http://webkitgtk.org/releases/webkit-1.8.1.tar.xz"; + advertisedUrl="http://webkitgtk.org/releases/webkit-1.8.1.tar.xz"; } + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6a76452fbf7..2731a19b419 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5010,33 +5010,25 @@ let webkit = builderDefsPackage ../development/libraries/webkit { + inherit gtk2; # for plugins etc. even with gtk3, see Gentoo ebuild + inherit gtk3 glib atk cairo pango fontconfig freetype; inherit (gnome) gtkdoc libsoup; - inherit atk pango glib gtk2 /*for plugins etc. even with gtk3, see Gentoo ebuild*/; - gtk = gtk3; - inherit freetype fontconfig gettext gperf curl - libjpeg libtiff libxml2 libxslt sqlite - icu cairo intltool automake libtool - pkgconfig autoconf bison libproxy enchant - python ruby which flex geoclue mesa; - inherit gstreamer gst_plugins_base gst_ffmpeg - gst_plugins_good; - inherit (xlibs) libXt renderproto libXrender kbproto; - inherit libpng perl; + inherit pkgconfig libtool intltool autoconf automake gperf bison flex + libjpeg libpng libtiff libxml2 libxslt sqlite icu curl + which libproxy geoclue enchant python ruby perl + mesa xlibs; + inherit gstreamer gst_plugins_base gst_ffmpeg gst_plugins_good; }; webkit_gtk2 = builderDefsPackage ../development/libraries/webkit/gtk2.nix { + inherit gtk2 glib atk cairo pango fontconfig freetype; inherit (gnome) gtkdoc libsoup; - inherit gtk atk pango glib; - inherit freetype fontconfig gettext gperf curl - libjpeg libtiff libxml2 libxslt sqlite - icu cairo intltool automake libtool - pkgconfig autoconf bison libproxy enchant - python ruby which flex geoclue; - inherit gstreamer gst_plugins_base gst_ffmpeg - gst_plugins_good; - inherit (xlibs) libXt renderproto libXrender; - inherit libpng perl; + inherit pkgconfig libtool intltool autoconf automake gperf bison flex + libjpeg libpng libtiff libxml2 libxslt sqlite icu curl + which libproxy geoclue enchant python ruby perl + mesa xlibs; + inherit gstreamer gst_plugins_base gst_ffmpeg gst_plugins_good; }; webkitSVN = From a1c4fa8edc2e0b801088d959c6e0167cb7692837 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Wed, 6 Mar 2013 10:12:21 -0800 Subject: [PATCH 201/407] recode: attempt to fix Darwin testsuite build problem --- pkgs/tools/text/recode/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/text/recode/default.nix b/pkgs/tools/text/recode/default.nix index 17a63799ac4..e3a58bbb5a8 100644 --- a/pkgs/tools/text/recode/default.nix +++ b/pkgs/tools/text/recode/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { doCheck = true; preCheck = '' - checkFlagsArray=(LDFLAGS="-L../src/.libs -Wl,-rpath=../src/.libs") + checkFlagsArray=(CPPFLAGS="-I../lib" LDFLAGS="-L../src/.libs -Wl,-rpath=../src/.libs") ''; meta = { From 7d4d40e82bd7f1ad49dbc92950a82a2edfc14a9d Mon Sep 17 00:00:00 2001 From: Andrew Morsillo Date: Wed, 6 Mar 2013 20:04:12 +0100 Subject: [PATCH 202/407] Update mysql workbench version --- .../misc/mysql-workbench/default.nix | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix index 6bbc287e6ee..c2f80570673 100644 --- a/pkgs/applications/misc/mysql-workbench/default.nix +++ b/pkgs/applications/misc/mysql-workbench/default.nix @@ -1,30 +1,35 @@ -{ stdenv, fetchurl, makeWrapper, boost, file, gettext +{ stdenv, fetchurl, makeWrapper, autoconf, automake, boost, file, gettext , glib, glibc, libgnome_keyring, gnome_keyring, gtk, gtkmm, intltool , libctemplate, libglade +, libiodbc , libgnome, libsigcxx, libtool, libuuid, libxml2, libzip, lua, mesa, mysql , pango, paramiko, pcre, pexpect, pkgconfig, pycrypto, python, sqlite }: stdenv.mkDerivation rec { pname = "mysql-workbench"; - version = "5.2.39"; + version = "5.2.47"; name = "${pname}-${version}"; src = fetchurl { - url = "http://mirror.services.wisc.edu/mysql/Downloads/MySQLGUITools/mysql-workbench-gpl-${version}-src.tar.gz"; - sha256 = "0e4e14f1b39dca2b65f924381d82b406dc25a530fbd25631b4cd05bddc4ab5bd"; + url = "http://mirror.cogentco.com/pub/mysql/MySQLGUITools/mysql-workbench-gpl-${version}-src.tar.gz"; + sha256 = "1343fn3msdxqfpxw0kgm0mdx5r7g9ra1cpc8p2xhl7kz2pmqp4p6"; }; - buildInputs = [ boost file gettext glib glibc libgnome_keyring gtk gtkmm intltool - libctemplate libglade libgnome libsigcxx libtool libuuid libxml2 libzip lua makeWrapper mesa + buildInputs = [ autoconf automake boost file gettext glib glibc libgnome_keyring gtk gtkmm intltool + libctemplate libglade libgnome libiodbc libsigcxx libtool libuuid libxml2 libzip lua makeWrapper mesa mysql paramiko pcre pexpect pkgconfig pycrypto python sqlite ]; preConfigure = '' substituteInPlace $(pwd)/frontend/linux/workbench/mysql-workbench.in --replace "catchsegv" "${glibc}/bin/catchsegv" ''; + postConfigure = '' + autoreconf -fi + ''; + postInstall = '' - wrapProgram "$out/bin/mysql-workbench-bin" \ + wrapProgram "$out/bin/mysql-workbench" \ --prefix LD_LIBRARY_PATH : "${python}/lib" \ --prefix LD_LIBRARY_PATH : "$(cat ${stdenv.gcc}/nix-support/orig-gcc)/lib64" \ --prefix PATH : "${gnome_keyring}/bin" \ From b72134dc114ca07c2d9e0fe48d88bfbff968524e Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Wed, 6 Mar 2013 23:59:49 +0400 Subject: [PATCH 203/407] Linux: Add 3.9-rc1 as lowPrio (it has a regression fix 3.8.2 lacks) --- pkgs/os-specific/linux/kernel/generic.nix | 5 +- pkgs/os-specific/linux/kernel/linux-3.9.nix | 279 ++++++++++++++++++ .../linux/kernel/linux.upstream.template | 13 + pkgs/top-level/all-packages.nix | 13 + 4 files changed, 309 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/linux/kernel/linux-3.9.nix create mode 100644 pkgs/os-specific/linux/kernel/linux.upstream.template diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 48f050f98cc..48feb6ec421 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -39,6 +39,8 @@ , # After the builder did a 'make all' (kernel + modules) # we force building the target asked: bzImage/zImage/uImage/... postBuild ? "make $makeFlags $kernelTarget; make $makeFlags -C scripts unifdef" + +, extraBuildNativeInputs ? [] , ... }: @@ -83,7 +85,7 @@ stdenv.mkDerivation { # For UML and non-PC, just ignore all options that don't apply (We are lazy). ignoreConfigErrors = stdenv.platform.name != "pc"; - buildNativeInputs = [ perl mktemp ]; + buildNativeInputs = [ perl mktemp ] ++ extraBuildNativeInputs; buildInputs = lib.optional (stdenv.platform.uboot != null) (ubootChooser stdenv.platform.uboot); @@ -130,6 +132,7 @@ stdenv.mkDerivation { " (with patches: " + lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches)) + ")"); + inherit version; license = "GPLv2"; homepage = http://www.kernel.org/; maintainers = [ diff --git a/pkgs/os-specific/linux/kernel/linux-3.9.nix b/pkgs/os-specific/linux/kernel/linux-3.9.nix new file mode 100644 index 00000000000..2f3c3a4365e --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-3.9.nix @@ -0,0 +1,279 @@ +args @ { stdenv, fetchurl, extraConfig ? "" +, perl, mktemp, module_init_tools, bc +, ... }: + +let + configWithPlatform = kernelPlatform : + '' + # Power management and debugging for powertop. + DEBUG_KERNEL y + PM_ADVANCED_DEBUG y + PM_RUNTIME y + TIMER_STATS y + USB_SUSPEND y + BACKTRACE_SELF_TEST n + CPU_NOTIFIER_ERROR_INJECT? n + DEBUG_DEVRES n + DEBUG_NX_TEST n + DEBUG_STACK_USAGE n + DEBUG_STACKOVERFLOW n + RCU_TORTURE_TEST n + SCHEDSTATS n + + # Support drivers that need external firmware. + STANDALONE n + + # Make /proc/config.gz available. + IKCONFIG_PROC y + + # Optimize with -O2, not -Os. + CC_OPTIMIZE_FOR_SIZE n + + # Enable the kernel's built-in memory tester. + MEMTEST y + + # Include the CFQ I/O scheduler in the kernel, rather than as a + # module, so that the initrd gets a good I/O scheduler. + IOSCHED_CFQ y + BLK_CGROUP y # required by CFQ + + # Enable NUMA. + NUMA? y + + # Disable some expensive (?) features. + FTRACE n + KPROBES n + PM_TRACE_RTC n + + # Enable various subsystems. + ACCESSIBILITY y # Accessibility support + AUXDISPLAY y # Auxiliary Display support + DONGLE y # Serial dongle support + HIPPI? y + MTD_COMPLEX_MAPPINGS y # needed for many devices + SCSI_LOWLEVEL y # enable lots of SCSI devices + SCSI_LOWLEVEL_PCMCIA y + SPI y # needed for many devices + SPI_MASTER y + WAN y + + # Networking options. + IP_PNP n + IPV6_PRIVACY y + NETFILTER_ADVANCED y + IP_VS_PROTO_TCP y + IP_VS_PROTO_UDP y + IP_VS_PROTO_ESP y + IP_VS_PROTO_AH y + IP_DCCP_CCID3 n # experimental + CLS_U32_PERF y + CLS_U32_MARK y + + # Wireless networking. + IPW2100_MONITOR y # support promiscuous mode + IPW2200_MONITOR? y # support promiscuous mode + HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver + HOSTAP_FIRMWARE_NVRAM y + ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus + ATH9K_AHB y # Ditto, AHB bus + B43_PHY_HT y + BCMA_HOST_PCI y + CFG80211_WEXT y # Without it, ipw2200 drivers don't build + + # Some settings to make sure that fbcondecor works - in particular, + # disable tileblitting and the drivers that need it. + + # Enable various FB devices. + FB y + FB_EFI y + FB_NVIDIA_I2C y # Enable DDC Support + FB_RIVA_I2C y + FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support + FB_ATY_GX y # Mach64 GX support + FB_SAVAGE_I2C y + FB_SAVAGE_ACCEL y + FB_SIS_300 y + FB_SIS_315 y + FB_3DFX_ACCEL y + FB_GEODE y + + # Video configuration + # Enable KMS for devices whose X.org driver supports it. + DRM_I915_KMS y + DRM_RADEON_KMS? y + # Hybrid graphics support + VGA_SWITCHEROO y + + # Sound. + SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode + SND_HDA_INPUT_BEEP y # Support digital beep via input layer + SND_USB_CAIAQ_INPUT y + PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible) + + # USB serial devices. + USB_SERIAL_GENERIC y # USB Generic Serial Driver + USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices + USB_SERIAL_KEYSPAN_USA28 y + USB_SERIAL_KEYSPAN_USA28X y + USB_SERIAL_KEYSPAN_USA28XA y + USB_SERIAL_KEYSPAN_USA28XB y + USB_SERIAL_KEYSPAN_USA19 y + USB_SERIAL_KEYSPAN_USA18X y + USB_SERIAL_KEYSPAN_USA19W y + USB_SERIAL_KEYSPAN_USA19QW y + USB_SERIAL_KEYSPAN_USA19QI y + USB_SERIAL_KEYSPAN_USA49W y + USB_SERIAL_KEYSPAN_USA49WLC y + + # Filesystem options - in particular, enable extended attributes and + # ACLs for all filesystems that support them. + EXT2_FS_XATTR y # Ext2 extended attributes + EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists + EXT2_FS_SECURITY y # Ext2 Security Labels + EXT2_FS_XIP y # Ext2 execute in place support + EXT4_FS_POSIX_ACL y + EXT4_FS_SECURITY y + REISERFS_FS_XATTR y + REISERFS_FS_POSIX_ACL y + REISERFS_FS_SECURITY y + JFS_POSIX_ACL y + JFS_SECURITY y + XFS_QUOTA y + XFS_POSIX_ACL y + XFS_RT y # XFS Realtime subvolume support + OCFS2_DEBUG_MASKLOG n + BTRFS_FS_POSIX_ACL y + UBIFS_FS_XATTR? y + UBIFS_FS_ADVANCED_COMPR y + NFSD_V2_ACL y + NFSD_V3 y + NFSD_V3_ACL y + NFSD_V4 y + NFS_FSCACHE y + CIFS_XATTR y + CIFS_POSIX y + CIFS_FSCACHE y + + # Security related features. + STRICT_DEVMEM y # Filter access to /dev/mem + SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default + + # Misc. options. + 8139TOO_8129 y + 8139TOO_PIO n # PIO is slower + AIC79XX_DEBUG_ENABLE n + AIC7XXX_DEBUG_ENABLE n + AIC94XX_DEBUG n + B43_PCMCIA y + BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support + BLK_DEV_IDEACPI y # IDE ACPI support + BLK_DEV_INTEGRITY y + BSD_PROCESS_ACCT_V3 y + BT_HCIUART_BCSP y + BT_HCIUART_H4 y # UART (H4) protocol support + BT_HCIUART_LL y + BT_RFCOMM m + BT_RFCOMM_TTY y # RFCOMM TTY support + CRASH_DUMP n + DMAR? n # experimental + DVB_DYNAMIC_MINORS? y # we use udev + EFI_STUB y # EFI bootloader in the bzImage itself + FUSION y # Fusion MPT device support + IDE_GD_ATAPI y # ATAPI floppy support + IRDA_ULTRA y # Ultra (connectionless) protocol + JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels + JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels + JOYSTICK_XPAD_FF y # X-Box gamepad rumble support + JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED + LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support + LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger + LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback + LOGO n # not needed + MEDIA_ATTACH? y + MEGARAID_NEWGEN y + MICROCODE_AMD y + MODVERSIONS y + MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension + MTRR_SANITIZER y + NET_FC y # Fibre Channel driver support + PPP_MULTILINK y # PPP multilink support + REGULATOR y # Voltage and Current Regulator Support + SCSI_LOGGING y # SCSI logging facility + SERIAL_8250 y # 8250/16550 and compatible serial support + SLIP_COMPRESSED y # CSLIP compressed headers + SLIP_SMART y + THERMAL_HWMON y # Hardware monitoring support + USB_DEBUG n + USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators + USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling + X86_CHECK_BIOS_CORRUPTION y + X86_MCE y + XEN_DOM0 y + + # Linux Containers + RT_GROUP_SCHED? y + CGROUP_DEVICE? y + CGROUP_MEM_RES_CTLR? y + CGROUP_MEM_RES_CTLR_SWAP? y + DEVPTS_MULTIPLE_INSTANCES? y + + # Enable staging drivers. These are somewhat experimental, but + # they generally don't hurt. + STAGING y + + # PROC_EVENTS requires that the netlink connector is not built + # as a module. This is required by libcgroup's cgrulesengd. + CONNECTOR y + PROC_EVENTS y + + # Tracing + FTRACE y + FUNCTION_TRACER y + FTRACE_SYSCALLS y + SCHED_TRACER y + + # Devtmpfs support. + DEVTMPFS y + + # Media support + MEDIA_CAMERA_SUPPORT? y + MEDIA_RC_SUPPORT? y + MEDIA_USB_SUPPORT y + + # Easier debug of NFS issues + SUNRPC_DEBUG y + + ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""} + ${extraConfig} + ''; +in + +import ./generic.nix ( + + rec { + version = "3.9-rc1"; + testing = true; + + preConfigure = '' + substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' "" + ''; + + src = fetchurl { + url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz"; + sha256 = "1bm4fdk1v3dlhcqrzwzrf6fscvq7p7493f5ld5lbspaw8vb08690"; + }; + + config = configWithPlatform stdenv.platform; + configCross = configWithPlatform stdenv.cross.platform; + + features.iwlwifi = true; + features.efiBootStub = true; + features.needsCifsUtils = true; + features.canDisableNetfilterConntrackHelpers = true; + features.netfilterRPFilter = true; + + extraBuildNativeInputs = [bc]; + } + + // removeAttrs args ["extraConfig"] +) diff --git a/pkgs/os-specific/linux/kernel/linux.upstream.template b/pkgs/os-specific/linux/kernel/linux.upstream.template new file mode 100644 index 00000000000..624b83d45b3 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux.upstream.template @@ -0,0 +1,13 @@ +url "http://www.kernel.org/pub/linux/kernel/v3.x/${LINUX_VERSION_RC:+testing/}" +version_link "linux-${LINUX_VERSION}.*tar[.]xz\$" +version '.*linux-([0-9.]+(-rc[0-9]+)?)[.]tar.*' '\1' +target "linux-${LINUX_VERSION}.nix" +name "linux_${LINUX_VERSION/./_}" + +do_overwrite() { + ensure_hash + set_var_value version "$CURRENT_VERSION" + set_var_value sha256 "$CURRENT_HASH" + [ -n "$LINUX_VERSION_RC" ] && set_var_value testing true '' '' 1 + [ -z "$LINUX_VERSION_RC" ] && set_var_value testing false '' '' 1 +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d8083b88991..470bc12c516 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6003,6 +6003,19 @@ let ]; }; + # low-priority because it is RC + linux_3_9 = lowPrio (makeOverridable (import ../os-specific/linux/kernel/linux-3.9.nix) { + inherit fetchurl stdenv perl mktemp bc module_init_tools ubootChooser; + kernelPatches = + [ + kernelPatches.sec_perm_2_6_24 + ] ++ lib.optionals (platform.kernelArch == "mips") + [ kernelPatches.mips_fpureg_emu + kernelPatches.mips_fpu_sigill + kernelPatches.mips_ext3_n32 + ]; + }); + /* Linux kernel modules are inherently tied to a specific kernel. So rather than provide specific instances of those packages for a specific kernel, we have a function that builds those packages From c8acc350b919cd239479608c65e5ab59d89b039e Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Thu, 7 Mar 2013 00:28:59 +0400 Subject: [PATCH 204/407] Wine: update to 1.5.25 --- pkgs/misc/emulators/wine/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/misc/emulators/wine/default.nix b/pkgs/misc/emulators/wine/default.nix index 010e65f62eb..fd6d1a6cc7f 100644 --- a/pkgs/misc/emulators/wine/default.nix +++ b/pkgs/misc/emulators/wine/default.nix @@ -7,12 +7,12 @@ assert stdenv.isLinux; assert stdenv.gcc.gcc != null; stdenv.mkDerivation rec { - version = "1.5.23"; + version = "1.5.25"; name = "wine-${version}"; src = fetchurl { url = "mirror://sourceforge/wine/${name}.tar.bz2"; - sha256 = "1wgs2bdl3sn3j0za7fk9zfjlii1x6qkvmyw4jxzz1mfw6nizswzr"; + sha256 = "0812ryv1v0gqr13vmvjci09k89qhcr1qs0n052z4zw0vpipjd4rx"; }; gecko = fetchurl { @@ -49,6 +49,7 @@ stdenv.mkDerivation rec { meta = { homepage = "http://www.winehq.org/"; license = "LGPL"; + inherit version; description = "An Open Source implementation of the Windows API on top of X, OpenGL, and Unix"; maintainers = [stdenv.lib.maintainers.raskin stdenv.lib.maintainers.simons]; platforms = stdenv.lib.platforms.linux; From 197af84cc6211683acdf62d19d4cdde4016193c9 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Thu, 7 Mar 2013 00:40:51 +0400 Subject: [PATCH 205/407] SBCL: update to 1.1.5 --- pkgs/development/compilers/sbcl/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 794a97b205f..cae98cf6f5f 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -4,11 +4,11 @@ let s= # Generated upstream information rec { baseName="sbcl"; - version="1.1.3"; + version="1.1.5"; name="${baseName}-${version}"; - hash="1qy64fy0nvjdgzlmasswgvzg1b2h2rygnnjvlf9vj7wg16i5383i"; - url="mirror://sourceforge/project/sbcl/sbcl/1.1.3/sbcl-1.1.3-source.tar.bz2"; - sha256="1qy64fy0nvjdgzlmasswgvzg1b2h2rygnnjvlf9vj7wg16i5383i"; + hash="01wi9aah9rrs7rbjrjrkwjxq03kapyzm48iyhz38fvaqhl7phw78"; + url="mirror://sourceforge/project/sbcl/sbcl/1.1.5/sbcl-1.1.5-source.tar.bz2"; + sha256="01wi9aah9rrs7rbjrjrkwjxq03kapyzm48iyhz38fvaqhl7phw78"; }; buildInputs = with a; [ clisp makeWrapper From 151901ac2144beb18be8c63cf41e39c45ce37bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Wed, 6 Mar 2013 22:26:08 +0100 Subject: [PATCH 206/407] drumkv1: add description --- pkgs/applications/audio/drumkv1/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/audio/drumkv1/default.nix b/pkgs/applications/audio/drumkv1/default.nix index f7fa3a212d1..7fdd04ce96b 100644 --- a/pkgs/applications/audio/drumkv1/default.nix +++ b/pkgs/applications/audio/drumkv1/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { buildInputs = [ jackaudio libsndfile lv2 qt4 ]; meta = with stdenv.lib; { - description = ""; + description = "An old-school drum-kit sampler synthesizer with stereo fx"; homepage = http://drumkv1.sourceforge.net/; license = licenses.gpl2Plus; platforms = platforms.linux; From 43e8e7763b6f816454b7a28b5d8530c2aca194c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Wed, 6 Mar 2013 23:08:30 +0100 Subject: [PATCH 207/407] Add MyPaint: A graphics application for digital painters --- .../applications/graphics/mypaint/default.nix | 35 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 37 insertions(+) create mode 100644 pkgs/applications/graphics/mypaint/default.nix diff --git a/pkgs/applications/graphics/mypaint/default.nix b/pkgs/applications/graphics/mypaint/default.nix new file mode 100644 index 00000000000..a59498b8f14 --- /dev/null +++ b/pkgs/applications/graphics/mypaint/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, gettext, glib, gtk, json_c, lcms2, libpng +, makeWrapper, pkgconfig, pygtk, python, pythonPackages, scons, swig +}: + +stdenv.mkDerivation rec { + name = "mypaint-${version}"; + version = "1.1.0"; + + src = fetchurl { + url = "http://download.gna.org/mypaint/${name}.tar.bz2"; + sha256 = "0f7848hr65h909c0jkcx616flc0r4qh53g3kd1cgs2nr1pjmf3bq"; + }; + + buildInputs = [ + gettext glib gtk json_c lcms2 libpng makeWrapper pkgconfig pygtk + python scons swig + ]; + + propagatedBuildInputs = [ pythonPackages.numpy ]; + + buildPhase = "scons prefix=$out"; + + installPhase = '' + scons prefix=$out install + wrapProgram $out/bin/mypaint --prefix PYTHONPATH : $PYTHONPATH + ''; + + meta = with stdenv.lib; { + description = "A graphics application for digital painters"; + homepage = http://mypaint.intilinux.com; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.goibhniu ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 470bc12c516..d6c531ab0bd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7611,6 +7611,8 @@ let mupdf = callPackage ../applications/misc/mupdf { }; + mypaint = callPackage ../applications/graphics/mypaint { }; + mythtv = callPackage ../applications/video/mythtv { }; tvtime = callPackage ../applications/video/tvtime { From e42e498e60680ad2f71e6989c1eed3e2560d19bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Wed, 6 Mar 2013 23:25:46 +0100 Subject: [PATCH 208/407] pygobject: update to 2.28.6 This fixes an issue with MyPaint: https://gna.org/bugs/?20400 --- pkgs/development/python-modules/pygobject/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/pygobject/default.nix b/pkgs/development/python-modules/pygobject/default.nix index 5575243bd9f..8d6a1368d8b 100644 --- a/pkgs/development/python-modules/pygobject/default.nix +++ b/pkgs/development/python-modules/pygobject/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, python, pkgconfig, glib }: stdenv.mkDerivation rec { - name = "pygobject-2.27.0"; + name = "pygobject-2.28.6"; src = fetchurl { - url = "http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.27/${name}.tar.bz2"; - sha256 = "18mq4mj9s9sw12m6gbbc4iffrq993c7q09v9yahlnamrqn3bv53m"; + url = "http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/${name}.tar.xz"; + sha256 = "1f5dfxjnil2glfwxnqr14d2cjfbkghsbsn8n04js2c2icr7iv2pv"; }; configureFlags = "--disable-introspection"; From 3d28751740fe6483e739e4c177fcfc797b1b724f Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Thu, 7 Mar 2013 09:12:49 +0400 Subject: [PATCH 209/407] Linux 3.9-rc1: set correct modDirVersion --- pkgs/os-specific/linux/kernel/linux-3.9.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/kernel/linux-3.9.nix b/pkgs/os-specific/linux/kernel/linux-3.9.nix index 2f3c3a4365e..7a1dfd110df 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.9.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.9.nix @@ -252,6 +252,7 @@ import ./generic.nix ( rec { version = "3.9-rc1"; + modDirVersion = "3.9.0-rc1"; testing = true; preConfigure = '' From f251f8b91a42c8e7229e356d6a9287e505372f75 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Thu, 7 Mar 2013 10:58:25 +0400 Subject: [PATCH 210/407] XBoard: update to version 4.7.0 --- pkgs/games/xboard/default.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pkgs/games/xboard/default.nix b/pkgs/games/xboard/default.nix index ab74d56dbcc..a21911f4067 100644 --- a/pkgs/games/xboard/default.nix +++ b/pkgs/games/xboard/default.nix @@ -1,19 +1,20 @@ {stdenv, fetchurl, libX11, xproto, libXt, libXaw, libSM, libICE, libXmu -, libXext, gnuchess, texinfo, libXpm +, libXext, gnuchess, texinfo, libXpm, pkgconfig, librsvg, cairo }: let s = # Generated upstream information rec { baseName="xboard"; - version="4.6.2"; + version="4.7.0"; name="${baseName}-${version}"; - hash="1pw90fh1crf0nkqyql54z728vn2093hwdh2v5i5703z9qv9g4mrf"; - url="http://ftp.gnu.org/gnu/xboard/xboard-4.6.2.tar.gz"; - sha256="1pw90fh1crf0nkqyql54z728vn2093hwdh2v5i5703z9qv9g4mrf"; + hash="15azbnyfapjppfni9k99sk68af1kg60nnh95rz8jgb3i2xv5y5m7"; + url="http://ftp.gnu.org/gnu/xboard/xboard-4.7.0.tar.gz"; + sha256="15azbnyfapjppfni9k99sk68af1kg60nnh95rz8jgb3i2xv5y5m7"; }; buildInputs = [ libX11 xproto libXt libXaw libSM libICE libXmu - libXext gnuchess texinfo libXpm + libXext gnuchess texinfo libXpm pkgconfig librsvg + cairo ]; in stdenv.mkDerivation { From 536db80abf0d72cd9da7f8a40d6bf2bb7f8cbac7 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Thu, 7 Mar 2013 10:59:03 +0400 Subject: [PATCH 211/407] Add Sodium cryptography library --- pkgs/development/libraries/sodium/default.nix | 28 +++++++++++++++++++ .../libraries/sodium/default.upstream | 1 + pkgs/top-level/all-packages.nix | 2 ++ 3 files changed, 31 insertions(+) create mode 100644 pkgs/development/libraries/sodium/default.nix create mode 100644 pkgs/development/libraries/sodium/default.upstream diff --git a/pkgs/development/libraries/sodium/default.nix b/pkgs/development/libraries/sodium/default.nix new file mode 100644 index 00000000000..0d40df40574 --- /dev/null +++ b/pkgs/development/libraries/sodium/default.nix @@ -0,0 +1,28 @@ +{stdenv, fetchurl}: +let + s = # Generated upstream information + rec { + baseName="sodium"; + version="0.3"; + name="${baseName}-${version}"; + hash="0l1p0d7ag186hhs65kifp8jfgf4mm9rngv41bhq35d7d9gw2d2lh"; + url="http://download.dnscrypt.org/libsodium/releases/libsodium-0.3.tar.gz"; + sha256="0l1p0d7ag186hhs65kifp8jfgf4mm9rngv41bhq35d7d9gw2d2lh"; + }; + buildInputs = [ + ]; +in +stdenv.mkDerivation { + inherit (s) name version; + inherit buildInputs; + src = fetchurl { + inherit (s) url sha256; + }; + meta = { + inherit (s) version; + description = ''A cryptography library with simple API''; + license = stdenv.lib.licenses.mit ; + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/development/libraries/sodium/default.upstream b/pkgs/development/libraries/sodium/default.upstream new file mode 100644 index 00000000000..ccc02cd8978 --- /dev/null +++ b/pkgs/development/libraries/sodium/default.upstream @@ -0,0 +1 @@ +url http://download.dnscrypt.org/libsodium/releases/ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d6c531ab0bd..1265fa88a6f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4969,6 +4969,8 @@ let snappy = callPackage ../development/libraries/snappy { }; + sodium = callPackage ../development/libraries/sodium {}; + sofia_sip = callPackage ../development/libraries/sofia-sip { }; soprano = callPackage ../development/libraries/soprano { }; From 7d273f07ea7e27e0c4525443a9383fae3b1784c2 Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 7 Mar 2013 07:49:26 +0100 Subject: [PATCH 212/407] oracle-xe: Add new package, version 11.2.0. This is the Oracle Database which they give out for free, therefore it's called Express Edition. Well, I pretty much packaged this in vain as I finally found out that i don't need that Oracle Database stuff at all. And my original purpose was to do SQL query/constraint testing. So before I'm going to throw this away (forever, oh no!), maybe someone else might have a use case for this. Signed-off-by: aszlig --- pkgs/servers/sql/oracle-xe/default.nix | 83 ++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 85 insertions(+) create mode 100644 pkgs/servers/sql/oracle-xe/default.nix diff --git a/pkgs/servers/sql/oracle-xe/default.nix b/pkgs/servers/sql/oracle-xe/default.nix new file mode 100644 index 00000000000..940e57ab8fb --- /dev/null +++ b/pkgs/servers/sql/oracle-xe/default.nix @@ -0,0 +1,83 @@ +{ stdenv, makeWrapper, requireFile, patchelf, rpm, cpio, libaio }: + +assert stdenv.system == "x86_64-linux"; + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "oracle-xe-${version}"; + version = "11.2.0"; + + src = requireFile { + name = "${name}-1.0.x86_64.rpm"; + sha256 = "0s2jj2xn56v5ys6hxb7l7045hw9c1mm1lhj4p2fvqbs02kqchab6"; + + url = "http://www.oracle.com/technetwork/" + + "products/express-edition/downloads/"; + }; + + buildInputs = [ makeWrapper ]; + + unpackCmd = '' + (mkdir -p "${name}" && cd "${name}" && + ${rpm}/bin/rpm2cpio "$curSrc" | ${cpio}/bin/cpio -id) + ''; + + buildPhase = let + libs = makeLibraryPath [ libaio ]; + in '' + basedir="u01/app/oracle/product/${version}/xe" + cat > "$basedir/network/admin/listener.ora" < Date: Thu, 7 Mar 2013 10:14:33 +0100 Subject: [PATCH 213/407] chromium: Update all channels to latest versions. This updates all release channels to the latest versions: stable: 25.0.1364.97 -> 25.0.1364.152 (builds fine, untested) beta: 26.0.1410.12 -> 26.0.1410.28 (builds fine, tested) dev: 26.0.1410.12 -> 26.0.1410.28 (builds fine, tested) Still, we should have version 27 already for the dev channel, so we might look about where to find the newest tarball. Signed-off-by: aszlig --- .../networking/browsers/chromium/sources.nix | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix index 9c483aa1702..a14b10fcfde 100644 --- a/pkgs/applications/networking/browsers/chromium/sources.nix +++ b/pkgs/applications/networking/browsers/chromium/sources.nix @@ -1,18 +1,18 @@ # This file is autogenerated from update.sh in the same directory. { dev = { - version = "26.0.1410.12"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.12.tar.xz"; - sha256 = "1cfzvlldzgm53jwys5zbrd4rszkinsr4n5ky5rcg6p6nw73b4hmj"; + version = "26.0.1410.28"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.28.tar.xz"; + sha256 = "1g32xyh06xsqkli0g83flqr1qvx2yxb7vaqshf9wcyqgkyzvy7il"; }; beta = { - version = "26.0.1410.12"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.12.tar.xz"; - sha256 = "1cfzvlldzgm53jwys5zbrd4rszkinsr4n5ky5rcg6p6nw73b4hmj"; + version = "26.0.1410.28"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.28.tar.xz"; + sha256 = "1g32xyh06xsqkli0g83flqr1qvx2yxb7vaqshf9wcyqgkyzvy7il"; }; stable = { - version = "25.0.1364.97"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-25.0.1364.97.tar.bz2"; - sha256 = "1r8khcic82m6g5i7669q8fxsfhjrlvp99iggqc5qpihljsz33ghm"; + version = "25.0.1364.152"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-25.0.1364.152.tar.bz2"; + sha256 = "1v8zpqk3q21d5hars1clss75n187hlg4zxbr68jj1ysmqclzbni8"; }; } From f00dc945d22552d517132e8815bb1ffbd537d668 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Thu, 7 Mar 2013 10:44:19 +0100 Subject: [PATCH 214/407] The iOS test target can/should only be executed on x86_64-darwin, this change enforces that --- pkgs/development/mobile/titaniumenv/examples/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/development/mobile/titaniumenv/examples/default.nix b/pkgs/development/mobile/titaniumenv/examples/default.nix index db4d7c61a73..a2146d9b97c 100644 --- a/pkgs/development/mobile/titaniumenv/examples/default.nix +++ b/pkgs/development/mobile/titaniumenv/examples/default.nix @@ -2,6 +2,7 @@ let pkgs = import nixpkgs {}; + pkgs_darwin_x86_64 = import nixpkgs { system = "x86_64-darwin"; }; in rec { kitchensink_android = import ./kitchensink { @@ -10,7 +11,7 @@ rec { }; kitchensink_iphone = import ./kitchensink { - inherit (pkgs) fetchgit titaniumenv; + inherit (pkgs_darwin_x86_64) fetchgit titaniumenv; target = "iphone"; }; @@ -20,13 +21,13 @@ rec { }; simulate_kitchensink_iphone = import ./simulate-kitchensink { - inherit (pkgs.titaniumenv) xcodeenv; + inherit (pkgs_darwin_x86_64.titaniumenv) xcodeenv; kitchensink = kitchensink_iphone; device = "iPhone"; }; simulate_kitchensink_ipad = import ./simulate-kitchensink { - inherit (pkgs.titaniumenv) xcodeenv; + inherit (pkgs_darwin_x86_64.titaniumenv) xcodeenv; kitchensink = kitchensink_iphone; device = "iPad"; }; From 415b292afc684167ddada94f70eff8854258e141 Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Thu, 7 Mar 2013 12:34:45 +0100 Subject: [PATCH 215/407] Update rabbitmq to version 3.0.3 --- pkgs/servers/amqp/rabbitmq-server/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/servers/amqp/rabbitmq-server/default.nix b/pkgs/servers/amqp/rabbitmq-server/default.nix index 1d93c0c5f22..043c69d5cc0 100644 --- a/pkgs/servers/amqp/rabbitmq-server/default.nix +++ b/pkgs/servers/amqp/rabbitmq-server/default.nix @@ -1,16 +1,16 @@ { stdenv, fetchurl, erlang, python, libxml2, libxslt, xmlto -, docbook_xml_dtd_45, docbook_xsl }: +, docbook_xml_dtd_45, docbook_xsl, zip, unzip }: stdenv.mkDerivation rec { - name = "rabbitmq-server-2.4.0"; + name = "rabbitmq-server-3.0.3"; src = fetchurl { - url = "http://www.rabbitmq.com/releases/rabbitmq-server/v2.4.0/${name}.tar.gz"; - sha256 = "0zvyyqw9kpzi791hvv8qj1aw0fpx5m5cgqfvffxfrdz8daxx3nma"; + url = "http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.3/${name}.tar.gz"; + sha256 = "07mp57xvszdrlgw8rgn9r9dpa6vdqdjk7f1dyh6a9sdg8s9fby38"; }; buildInputs = - [ erlang python libxml2 libxslt xmlto docbook_xml_dtd_45 docbook_xsl ]; + [ erlang python libxml2 libxslt xmlto docbook_xml_dtd_45 docbook_xsl zip unzip ]; preBuild = '' From 03519851bc7b90752be9453437a690397c14a0ee Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Thu, 7 Mar 2013 12:36:29 +0100 Subject: [PATCH 216/407] Add elasticsearch 0.20.5 --- pkgs/servers/search/elasticsearch/default.nix | 21 +++++++++++++++++++ .../search/elasticsearch/es-home.patch | 20 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 3 files changed, 43 insertions(+) create mode 100644 pkgs/servers/search/elasticsearch/default.nix create mode 100644 pkgs/servers/search/elasticsearch/es-home.patch diff --git a/pkgs/servers/search/elasticsearch/default.nix b/pkgs/servers/search/elasticsearch/default.nix new file mode 100644 index 00000000000..9afbc62ce8c --- /dev/null +++ b/pkgs/servers/search/elasticsearch/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl }: +stdenv.mkDerivation rec { + name = "elasticsearch-0.20.5"; + + src = fetchurl { + url = "https://download.elasticsearch.org/elasticsearch/elasticsearch/${name}.tar.gz"; + sha256 = "0r0h9znyflajps1k8hl9naixhg1gqmhz7glc009pzzv94ncdzrq1"; + }; + + patches = [ ./es-home.patch ]; + + installPhase = '' + mkdir -p $out + cp -R bin config lib $out + ''; + + meta = { + description = "Open Source, Distributed, RESTful Search Engine"; + license = "ASL2.0"; + }; +} diff --git a/pkgs/servers/search/elasticsearch/es-home.patch b/pkgs/servers/search/elasticsearch/es-home.patch new file mode 100644 index 00000000000..f9e460198a9 --- /dev/null +++ b/pkgs/servers/search/elasticsearch/es-home.patch @@ -0,0 +1,20 @@ +diff -rc elasticsearch-0.20.5/bin/elasticsearch elasticsearch-0.20.5-new/bin/elasticsearch +*** elasticsearch-0.20.5/bin/elasticsearch 2013-03-07 12:16:31.152494626 +0100 +--- elasticsearch-0.20.5-new/bin/elasticsearch 2013-03-07 12:24:41.076081272 +0100 +*************** +*** 62,68 **** + done + + # determine elasticsearch home +! ES_HOME=`dirname "$SCRIPT"`/.. + + # make ELASTICSEARCH_HOME absolute + ES_HOME=`cd "$ES_HOME"; pwd` +--- 62,68 ---- + done + + # determine elasticsearch home +! ES_HOME=${ES_HOME:=`dirname "$SCRIPT"`/..} + + # make ELASTICSEARCH_HOME absolute + ES_HOME=`cd "$ES_HOME"; pwd` diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 79699506ce8..2c8ea5659f3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -704,6 +704,8 @@ let efibootmgr = callPackage ../tools/system/efibootmgr { }; + elasticsearch = callPackage ../servers/search/elasticsearch { }; + enblendenfuse = callPackage ../tools/graphics/enblend-enfuse { boost = boost149; }; From 95ff746654f449d37385e7ace9050c801d177968 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 16:57:33 +0100 Subject: [PATCH 217/407] haskell-syb: add version 0.4.0 --- pkgs/development/libraries/haskell/syb/0.4.0.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/haskell/syb/0.4.0.nix diff --git a/pkgs/development/libraries/haskell/syb/0.4.0.nix b/pkgs/development/libraries/haskell/syb/0.4.0.nix new file mode 100644 index 00000000000..7408d0ac537 --- /dev/null +++ b/pkgs/development/libraries/haskell/syb/0.4.0.nix @@ -0,0 +1,15 @@ +{ cabal, HUnit, mtl }: + +cabal.mkDerivation (self: { + pname = "syb"; + version = "0.4.0"; + sha256 = "1wxz8y2dcjl407l596qswcl9cakbb5cs4wzwlyy6qjz7lyd0h0gj"; + testDepends = [ HUnit mtl ]; + meta = { + homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB"; + description = "Scrap Your Boilerplate"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + maintainers = [ self.stdenv.lib.maintainers.andres ]; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index c360214e2c6..715d79aa970 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -140,7 +140,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); regexPosix = self.regexPosix_0_95_2; # 7.6 ok split = self.split_0_2_1_2; # 7.6 ok stm = self.stm_2_4_2; # 7.6 ok - syb = self.syb_0_3_7; # 7.6 ok + syb = self.syb_0_4_0; # 7.6 ok text = self.text_0_11_2_3; # 7.6 ok transformers = self.transformers_0_3_0_0; # 7.6 ok vector = self.vector_0_10_0_1; # 7.6 ok @@ -1620,6 +1620,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); syb_0_3_6_1 = callPackage ../development/libraries/haskell/syb/0.3.6.1.nix {}; syb_0_3_6_2 = callPackage ../development/libraries/haskell/syb/0.3.6.2.nix {}; syb_0_3_7 = callPackage ../development/libraries/haskell/syb/0.3.7.nix {}; + syb_0_4_0 = callPackage ../development/libraries/haskell/syb/0.4.0.nix {}; syb = null; # by default, we assume that syb ships with GHC, which is # true for the older GHC versions From 4fd407bab52e7490245ff767204d4addaaa99a6d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 16:57:52 +0100 Subject: [PATCH 218/407] haskell-QuickCheck: add version 2.6 --- .../libraries/haskell/QuickCheck/2.6.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/haskell/QuickCheck/2.6.nix diff --git a/pkgs/development/libraries/haskell/QuickCheck/2.6.nix b/pkgs/development/libraries/haskell/QuickCheck/2.6.nix new file mode 100644 index 00000000000..39c97859e65 --- /dev/null +++ b/pkgs/development/libraries/haskell/QuickCheck/2.6.nix @@ -0,0 +1,15 @@ +{ cabal, random }: + +cabal.mkDerivation (self: { + pname = "QuickCheck"; + version = "2.6"; + sha256 = "03cp7mshjy2yrg31i13b9kmc2a6lrmrbl1sh9s8lswcj305c00c0"; + buildDepends = [ random ]; + meta = { + homepage = "http://code.haskell.org/QuickCheck"; + description = "Automatic testing of Haskell programs"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + maintainers = [ self.stdenv.lib.maintainers.andres ]; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 715d79aa970..ee62aa0a0ef 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -133,7 +133,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); OpenGL = self.OpenGL_2_6_0_1; # 7.6 ok parallel = self.parallel_3_2_0_3; # 7.6 ok parsec = self.parsec_3_1_3; # 7.6 ok - QuickCheck = self.QuickCheck_2_5_1_1; # 7.6 ok + QuickCheck = self.QuickCheck_2_6; # 7.6 ok random = self.random_1_0_1_1; # 7.6 ok regexBase = self.regexBase_0_93_2; # 7.6 ok regexCompat = self.regexCompat_0_95_1; # 7.6 ok @@ -1468,8 +1468,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); QuickCheck_2_4_1_1 = callPackage ../development/libraries/haskell/QuickCheck/2.4.1.1.nix {}; QuickCheck_2_4_2 = callPackage ../development/libraries/haskell/QuickCheck/2.4.2.nix {}; QuickCheck_2_5_1_1 = callPackage ../development/libraries/haskell/QuickCheck/2.5.1.1.nix {}; + QuickCheck_2_6 = callPackage ../development/libraries/haskell/QuickCheck/2.6.nix {}; QuickCheck1 = self.QuickCheck_1_2_0_1; - QuickCheck2 = self.QuickCheck_2_5_1_1; + QuickCheck2 = self.QuickCheck_2_6; QuickCheck = self.QuickCheck2; RangedSets = callPackage ../development/libraries/haskell/Ranged-sets {}; From e459a7514e82e85f925249ea0065d6b199114550 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 17:03:00 +0100 Subject: [PATCH 219/407] haskell-doctest: jailbreak to support syb 0.4.0 --- pkgs/development/libraries/haskell/doctest/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix index 3c8988400bc..ce418a8d053 100644 --- a/pkgs/development/libraries/haskell/doctest/default.nix +++ b/pkgs/development/libraries/haskell/doctest/default.nix @@ -13,6 +13,7 @@ cabal.mkDerivation (self: { baseCompat deepseq filepath ghcPaths hspec HUnit QuickCheck setenv silently stringbuilder syb transformers ]; + jailbreak = true; doCheck = false; meta = { homepage = "https://github.com/sol/doctest-haskell#readme"; From 6ff4538b5ac3be05c7192b3d7e5e7171c1fd75ec Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 17:07:33 +0100 Subject: [PATCH 220/407] haskell-pandoc: jailbreak to support syb 0.4.0 --- pkgs/development/libraries/haskell/pandoc/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/haskell/pandoc/default.nix b/pkgs/development/libraries/haskell/pandoc/default.nix index 93f7e8add42..204d13c7148 100644 --- a/pkgs/development/libraries/haskell/pandoc/default.nix +++ b/pkgs/development/libraries/haskell/pandoc/default.nix @@ -18,7 +18,7 @@ cabal.mkDerivation (self: { ]; configureFlags = "-fblaze_html_0_5"; patchPhase = '' - sed -r -i -e 's|blaze-html >= 0.5 && < 0.6,|blaze-html >= 0.5,|' pandoc.cabal + sed -r -i -e 's|blaze-html >= 0.5 && < 0.6,|blaze-html >= 0.5,|' -e 's|syb >= 0.1 && < 0.4,| syb,|' pandoc.cabal ''; doCheck = false; meta = { From 2965fb2cb0fedc4dc4428c08acd2c69ccc717566 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 17:07:46 +0100 Subject: [PATCH 221/407] haskell-data-default: update to version 0.5.1 --- pkgs/development/libraries/haskell/data-default/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/data-default/default.nix b/pkgs/development/libraries/haskell/data-default/default.nix index 893f2121f0a..4fb21ed5f55 100644 --- a/pkgs/development/libraries/haskell/data-default/default.nix +++ b/pkgs/development/libraries/haskell/data-default/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "data-default"; - version = "0.5.0"; - sha256 = "1wv8wjd9j40s7h19aph5pqph7rby5ma1nlagqywn9q0634iq9n2a"; + version = "0.5.1"; + sha256 = "05zp9bcxm4lcdqniwckq0zi014iqcnqbrk5wh54dyy83h97z6mpv"; buildDepends = [ dlist ]; meta = { description = "A class for types with a default value"; From 213dcd584355fd819c1ce16c1cba2d36d5eaed59 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 17:07:47 +0100 Subject: [PATCH 222/407] haskell-ghc-mod: update to version 1.12.1 --- pkgs/development/libraries/haskell/ghc-mod/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix index 7bcb94ab40c..1109a512a8d 100644 --- a/pkgs/development/libraries/haskell/ghc-mod/default.nix +++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "ghc-mod"; - version = "1.12.0"; - sha256 = "01jq6hk8vcy47nc6gd4379k6kgjiyxy99j4pnc7nsdm63gnmr5l1"; + version = "1.12.1"; + sha256 = "0m876lfxi0k7v27rg4ipq3rpk7qvsrzfdflp5fayxvmi9wgdvm3r"; isLibrary = false; isExecutable = true; buildDepends = [ From 02ed0e6867e7689b32e25124fec7395e36ae3a77 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 17:07:47 +0100 Subject: [PATCH 223/407] haskell-hakyll: update to version 4.2.0.0 --- pkgs/development/libraries/haskell/hakyll/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix index 59a32b0d290..8d4b36e979b 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { pname = "hakyll"; - version = "4.1.4.0"; - sha256 = "0nhr7ai03hx2qjxlqml0js43iwxhcbpdqkwdvw8pqs396yrjwxdj"; + version = "4.2.0.0"; + sha256 = "10yamc95pq6db353miyqakjax54abl1dkqmwfv63cblxd4llsv9x"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -22,7 +22,6 @@ cabal.mkDerivation (self: { QuickCheck random regexBase regexTdfa tagsoup testFramework testFrameworkHunit testFrameworkQuickcheck2 text time ]; - jailbreak = true; meta = { homepage = "http://jaspervdj.be/hakyll"; description = "A static website compiler library"; From 0fd867192ddc09a3faaf41c4726b2342d5de9ce5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 17:07:47 +0100 Subject: [PATCH 224/407] haskell-http-conduit: update to version 1.9.1 --- pkgs/development/libraries/haskell/http-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix index dc5e248f445..683396eea81 100644 --- a/pkgs/development/libraries/haskell/http-conduit/default.nix +++ b/pkgs/development/libraries/haskell/http-conduit/default.nix @@ -9,8 +9,8 @@ cabal.mkDerivation (self: { pname = "http-conduit"; - version = "1.9.0"; - sha256 = "1b6f2sg96fddk5ywbfvbvj9z81695d35qymf31idpkyshcp9argk"; + version = "1.9.1"; + sha256 = "1ypwqd5f6m459kjw2x3knig924s93b6yiviy7jlaxllpaw2lrial"; buildDepends = [ asn1Data base64Bytestring blazeBuilder blazeBuilderConduit caseInsensitive certificate conduit cookie cprngAes dataDefault From d742d26b0d8c7125fb29417fcb40e2665e10100d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 7 Mar 2013 17:07:47 +0100 Subject: [PATCH 225/407] haskell-uulib: update to version 0.9.15 --- pkgs/development/libraries/haskell/uulib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/uulib/default.nix b/pkgs/development/libraries/haskell/uulib/default.nix index 991f3808098..2521c44bec6 100644 --- a/pkgs/development/libraries/haskell/uulib/default.nix +++ b/pkgs/development/libraries/haskell/uulib/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "uulib"; - version = "0.9.14"; - sha256 = "0bi62l9fp1ghqq4dagdy4nsxmm08gpsrnfgy6d6k8f4239s3yr0z"; + version = "0.9.15"; + sha256 = "0433shh493c04qmi0sd9mfzpy198zi11gxdmcs6nz2gcnxm812zm"; meta = { homepage = "http://www.cs.uu.nl/wiki/HUT/WebHome"; description = "Haskell Utrecht Tools Library"; From 96f662f746521e186d23b287fd73294f682f3ed7 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Thu, 7 Mar 2013 10:23:43 -0800 Subject: [PATCH 226/407] lsof-4.87 --- pkgs/development/tools/misc/lsof/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/misc/lsof/default.nix b/pkgs/development/tools/misc/lsof/default.nix index a7d5ad0e393..bdd35dc50f0 100644 --- a/pkgs/development/tools/misc/lsof/default.nix +++ b/pkgs/development/tools/misc/lsof/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "lsof-4.86"; + name = "lsof-4.87"; src = fetchurl { - url = ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_4.86.tar.bz2; - sha256 = "13e52b8e87dddf1b2e219004e315d755c659217ce6ffc6a5f1102969f1c4dd0c"; + url = ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_4.87.tar.bz2; + sha256 = "0b6si72sml7gr9784ak491cxxbm9mx5bh174yg6rrirbv04kgpfz"; }; unpackPhase = "tar xvjf $src; cd lsof_*; tar xvf lsof_*.tar; sourceRoot=$( echo lsof_*/); "; From f5052a8679870819472d911a9ad385df3faec1ec Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 7 Mar 2013 19:41:40 +0100 Subject: [PATCH 227/407] Fix extraBuildNativeInputs reference --- pkgs/os-specific/linux/kernel/linux-3.9.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/linux-3.9.nix b/pkgs/os-specific/linux/kernel/linux-3.9.nix index 7a1dfd110df..cd21d694396 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.9.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.9.nix @@ -273,7 +273,7 @@ import ./generic.nix ( features.canDisableNetfilterConntrackHelpers = true; features.netfilterRPFilter = true; - extraBuildNativeInputs = [bc]; + extraNativeBuildInputs = [bc]; } // removeAttrs args ["extraConfig"] From 262c21ed464a2593b54ec274a3b84083c0795f2d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 7 Mar 2013 19:42:01 +0100 Subject: [PATCH 228/407] Enable __ignoreNulls globally --- pkgs/os-specific/linux/kernel/manual-config.nix | 2 -- pkgs/stdenv/generic/default.nix | 8 ++++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 34e8f10dcee..29eb170287a 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -162,8 +162,6 @@ stdenv.mkDerivation { fi '' else null; - __ignoreNulls = true; - meta = { description = "The Linux kernel"; license = "GPLv2"; diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 26f410cee11..fd7b3218e34 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -6,6 +6,12 @@ fetchurlBoot }: +if ! builtins ? langVersion then + + abort "This version of Nixpkgs requires Nix >= 1.2, please upgrade!" + +else + let lib = import ../../lib; @@ -30,6 +36,8 @@ let propagatedUserEnvPkgs = [gcc] ++ lib.filter lib.isDerivation initialPath; + + __ignoreNulls = true; } // rec { From 78e71242d7582a6c02509fbb95781ba71611c2b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 7 Mar 2013 21:40:28 +0100 Subject: [PATCH 229/407] Adding idle3-tools (for WD Green HDDs) --- pkgs/tools/system/idle3tools/default.nix | 22 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/tools/system/idle3tools/default.nix diff --git a/pkgs/tools/system/idle3tools/default.nix b/pkgs/tools/system/idle3tools/default.nix new file mode 100644 index 00000000000..2ffff7bed7b --- /dev/null +++ b/pkgs/tools/system/idle3tools/default.nix @@ -0,0 +1,22 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "idle3-tools-0.9.1"; + + src = fetchurl { + url = "mirror://sourceforge/idle3-tools/idle3-tools-0.9.1.tgz"; + sha256 = "00ia7xq9yldxyl9gz0mr4xa568nav14p0fnv82f2rbbkg060cy4p"; + }; + + preInstall = '' + installFlags=DESTDIR=$out + ''; + + meta = { + homepage = http://idle3-tools.sourceforge.net/; + description = "Tool to get/set the infamous idle3 timer in WD HDDs"; + license = "GPLv3"; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2c8ea5659f3..05dc999c407 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -961,6 +961,8 @@ let idutils = callPackage ../tools/misc/idutils { }; + idle3tools = callPackage ../tools/system/idle3tools { }; + iftop = callPackage ../tools/networking/iftop { }; imapproxy = callPackage ../tools/networking/imapproxy { }; From 197f6c6c4ce0c284afa437130f096d4ab7f755f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 7 Mar 2013 22:39:53 +0100 Subject: [PATCH 230/407] idle3-tools can build only on linux, I think. --- pkgs/tools/system/idle3tools/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/system/idle3tools/default.nix b/pkgs/tools/system/idle3tools/default.nix index 2ffff7bed7b..1325b52b380 100644 --- a/pkgs/tools/system/idle3tools/default.nix +++ b/pkgs/tools/system/idle3tools/default.nix @@ -17,6 +17,6 @@ stdenv.mkDerivation { description = "Tool to get/set the infamous idle3 timer in WD HDDs"; license = "GPLv3"; maintainers = with stdenv.lib.maintainers; [viric]; - platforms = with stdenv.lib.platforms; all; + platforms = with stdenv.lib.platforms; linux; }; } From 9cbcbc5323368bf958c3a8dd8968bd41579b91ea Mon Sep 17 00:00:00 2001 From: Song Wenwu Date: Fri, 8 Mar 2013 13:55:32 +0800 Subject: [PATCH 231/407] add xchainkeys-0.11 --- pkgs/tools/X11/xchainkeys/default.nix | 18 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 20 insertions(+) create mode 100644 pkgs/tools/X11/xchainkeys/default.nix diff --git a/pkgs/tools/X11/xchainkeys/default.nix b/pkgs/tools/X11/xchainkeys/default.nix new file mode 100644 index 00000000000..42e26825e33 --- /dev/null +++ b/pkgs/tools/X11/xchainkeys/default.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchurl, libX11 }: + +stdenv.mkDerivation rec { + name = "xchainkeys-0.11"; + + src = fetchurl { + url = "https://xchainkeys.googlecode.com/files/${name}.tar.gz"; + sha256 = "1rpqs7h5krral08vqxwb0imy33z17v5llvrg5hy8hkl2ap7ya0mn"; + }; + + buildInputs = [ libX11 ]; + + meta = { + homepage = "https://code.google.com/p/xchainkeys/"; + description = "A standalone X11 program to create chained key bindings"; + license = "GPLv3"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4bb08128798..043c3152a83 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7994,6 +7994,8 @@ let xcalib = callPackage ../tools/X11/xcalib { }; + xchainkeys = callPackage ../tools/X11/xchainkeys { }; + xchat = callPackage ../applications/networking/irc/xchat { }; xchm = callPackage ../applications/misc/xchm { }; From 856f6c2aea9725809be0bb26e41ec4481b2584e5 Mon Sep 17 00:00:00 2001 From: David Guibert Date: Fri, 8 Mar 2013 09:08:57 +0100 Subject: [PATCH 232/407] fix iftop --- pkgs/tools/networking/iftop/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/tools/networking/iftop/default.nix b/pkgs/tools/networking/iftop/default.nix index 730b60c7aec..3a9c0e10a78 100644 --- a/pkgs/tools/networking/iftop/default.nix +++ b/pkgs/tools/networking/iftop/default.nix @@ -8,6 +8,10 @@ stdenv.mkDerivation rec { sha256 = "1b0fis53280qx85gldhmqfcpgyiwplzg43gxyngia1w3f1y58cnh"; }; + # Explicitly link against libgcc_s, to work around the infamous + # "libgcc_s.so.1 must be installed for pthread_cancel to work". + LDFLAGS = "-lgcc_s"; + preConfigure = '' cp ${automake}/share/automake*/config.{sub,guess} config ''; From 6da29419e41839822b59a6d766766531f0cd6adb Mon Sep 17 00:00:00 2001 From: orbitz Date: Fri, 8 Mar 2013 11:56:50 +0100 Subject: [PATCH 233/407] Add opam 0.9.4 --- pkgs/development/tools/ocaml/opam/0.9.4.nix | 59 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 61 insertions(+) create mode 100644 pkgs/development/tools/ocaml/opam/0.9.4.nix diff --git a/pkgs/development/tools/ocaml/opam/0.9.4.nix b/pkgs/development/tools/ocaml/opam/0.9.4.nix new file mode 100644 index 00000000000..c69d4d83626 --- /dev/null +++ b/pkgs/development/tools/ocaml/opam/0.9.4.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchgit, fetchurl, ocaml, unzip, ncurses, curl }: + +let + srcs = { + cudf = fetchurl { + url = "https://gforge.inria.fr/frs/download.php/31910/cudf-0.6.3.tar.gz"; + sha256 = "6e9f1bafe859df85c854679e2904a8172945d2bf2d676c8ae3ecb72fe6de0665"; + }; + extlib = fetchurl { + url = "http://ocaml-extlib.googlecode.com/files/extlib-1.5.3.tar.gz"; + sha256 = "c095eef4202a8614ff1474d4c08c50c32d6ca82d1015387785cf03d5913ec021"; + }; + ocaml_re = fetchurl { + url = "https://github.com/ocaml/ocaml-re/archive/ocaml-re-1.2.0.tar.gz"; + sha256 = "a34dd9d6136731436a963bbab5c4bbb16e5d4e21b3b851d34887a3dec451999f"; + }; + ocamlgraph = fetchurl { + url = "http://ocamlgraph.lri.fr/download/ocamlgraph-1.8.1.tar.gz"; + sha256 = "ba6388ffc2c15139b0f26330ef6dd922f0ff0f364eee99a3202bf1cd93512b43"; + }; + dose3 = fetchurl { + url = "https://gforge.inria.fr/frs/download.php/31595/dose3-3.1.2.tar.gz"; + sha256 = "3a07a08345be157c98cb26021d7329c72c2b95c99cfdff79887690656ec9f1a3"; + }; + cmdliner = fetchurl { + url = "http://erratique.ch/software/cmdliner/releases/cmdliner-0.9.3.tbz"; + sha256 = "5421559aa12b4debffef947f7e1039c22e9dffd87a4aa68445a687a20764ae81"; + }; + opam = fetchurl { + url = "https://github.com/OCamlPro/opam/archive/0.9.4.zip"; + sha256 = "6d86e9a64d1a1217cd81fc65ec5c41d1c1e0ff888237d819a0b17a4d3096c316"; + }; + }; +in +stdenv.mkDerivation rec { + name = "opam-0.9.4"; + + buildInputs = [unzip curl ncurses ocaml]; + + src = srcs.opam; + + postUnpack = '' + ln -sv ${srcs.cudf} $sourceRoot/src_ext/${srcs.cudf.name} + ln -sv ${srcs.extlib} $sourceRoot/src_ext/${srcs.extlib.name} + ln -sv ${srcs.ocaml_re} $sourceRoot/src_ext/${srcs.ocaml_re.name} + ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/${srcs.ocamlgraph.name} + ln -sv ${srcs.dose3} $sourceRoot/src_ext/${srcs.dose3.name} + ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/${srcs.cmdliner.name} + ''; + + makeFlags = ["HOME=$(TMPDIR)"]; + + doCheck = false; + + meta = { + description = "A package manager for ocaml"; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4bb08128798..00ecacc1245 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2624,6 +2624,8 @@ let ocaml_extlib = callPackage ../development/ocaml-modules/extlib { }; pycaml = callPackage ../development/ocaml-modules/pycaml { }; + + opam = callPackage ../development/tools/ocaml/opam/0.9.4.nix { }; }; ocamlPackages = recurseIntoAttrs ocamlPackages_3_12_1; From fcd895afb30f54c0181885231f9b8f8c256081f0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:29:34 +0100 Subject: [PATCH 234/407] pkgs/build-support/cabal: disable the split objects feature on Darwin by default According to , this feature won't work with XCode versions older than 3.2. This means that Mac users will have considerably larger binaries because some build-time dependencies (such as HTTP) will be mis-detected as run-time dependencies. --- pkgs/build-support/cabal/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index 334b7e6f2c2..38f2c4c6115 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -88,7 +88,7 @@ jailbreak = false; # pass the '--enable-split-objs' flag to cabal in the configure stage - enableSplitObjs = true; + enableSplitObjs = !stdenv.isDarwin; # http://hackage.haskell.org/trac/ghc/ticket/4013 # pass the '--enable-tests' flag to cabal in the configure stage # and run any regression test suites the package might have From 1d0e0fd1673d8c98ef512df70b91132dec6f4e2d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:18:21 +0100 Subject: [PATCH 235/407] haskell-hakyll: update to version 4.2.1.0 --- pkgs/development/libraries/haskell/hakyll/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix index 2ca90094bb8..f153a9b3d89 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { pname = "hakyll"; - version = "4.1.4.0"; - sha256 = "0nhr7ai03hx2qjxlqml0js43iwxhcbpdqkwdvw8pqs396yrjwxdj"; + version = "4.2.1.0"; + sha256 = "05w5j8wc47j8g4x2lsm0zs3aspb4rjvgnrxbjlxps0mfz3csqfhh"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -22,8 +22,6 @@ cabal.mkDerivation (self: { QuickCheck random regexBase regexTdfa tagsoup testFramework testFrameworkHunit testFrameworkQuickcheck2 text time ]; - jailbreak = true; - doCheck = false; meta = { homepage = "http://jaspervdj.be/hakyll"; description = "A static website compiler library"; From 525342632fa66c86e2d34f459715e4162dac2297 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:36:58 +0100 Subject: [PATCH 236/407] haskell-hakyll: disable test suite to fix build error --- pkgs/development/libraries/haskell/hakyll/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix index f153a9b3d89..eb27fde823f 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -22,6 +22,7 @@ cabal.mkDerivation (self: { QuickCheck random regexBase regexTdfa tagsoup testFramework testFrameworkHunit testFrameworkQuickcheck2 text time ]; + doCheck = false; meta = { homepage = "http://jaspervdj.be/hakyll"; description = "A static website compiler library"; From 1090f928c43b63324b70912c5f1ade9024c1e5b2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:18:21 +0100 Subject: [PATCH 237/407] haskell-monad-control: update to version 0.3.2 --- pkgs/development/libraries/haskell/monad-control/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/monad-control/default.nix b/pkgs/development/libraries/haskell/monad-control/default.nix index bf27ac461c3..1cdf917cf8f 100644 --- a/pkgs/development/libraries/haskell/monad-control/default.nix +++ b/pkgs/development/libraries/haskell/monad-control/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "monad-control"; - version = "0.3.1.4"; - sha256 = "0mvcj6rljh2drkpf29zavwsqpzd9lw7s0n4inxm82i2017xdazy1"; + version = "0.3.2"; + sha256 = "1gw1g89cjr993kcxjd1lvj94klrb8hsxn0yzyl1gmfk4273z39pa"; buildDepends = [ baseUnicodeSymbols transformers transformersBase ]; From b31be07af084a55ca5349088c787ecabefacd021 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:18:21 +0100 Subject: [PATCH 238/407] haskell-multiarg: update to version 0.10.0.0 --- pkgs/development/libraries/haskell/multiarg/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/multiarg/default.nix b/pkgs/development/libraries/haskell/multiarg/default.nix index 74254a4c591..0a2495a07e9 100644 --- a/pkgs/development/libraries/haskell/multiarg/default.nix +++ b/pkgs/development/libraries/haskell/multiarg/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "multiarg"; - version = "0.8.0.0"; - sha256 = "17zfrm9zjf7c8g7q9vqj1srk0g766ifhwqp7gm4ql890541q5lv5"; + version = "0.10.0.0"; + sha256 = "09clgin66i2m0b3ws7di9p15cy9bd144as832xpx4li6cfbg16ip"; buildDepends = [ explicitException utf8String ]; meta = { homepage = "https://github.com/massysett/multiarg"; From d96af07c9fccc19ff3977fb2b45ff831fe7c8b0d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:39:23 +0100 Subject: [PATCH 239/407] xmobar: patch to support variable in memory monitor --- .../misc/xmobar/add-freeration-variable.patch | 58 +++++++++++++++++++ pkgs/applications/misc/xmobar/default.nix | 1 + 2 files changed, 59 insertions(+) create mode 100644 pkgs/applications/misc/xmobar/add-freeration-variable.patch diff --git a/pkgs/applications/misc/xmobar/add-freeration-variable.patch b/pkgs/applications/misc/xmobar/add-freeration-variable.patch new file mode 100644 index 00000000000..a8c10e1a30d --- /dev/null +++ b/pkgs/applications/misc/xmobar/add-freeration-variable.patch @@ -0,0 +1,58 @@ +diff --git a/readme.md b/readme.md +index f4f07e8..de679c7 100644 +--- a/readme.md ++++ b/readme.md +@@ -645,7 +645,7 @@ something like: + - Args: default monitor arguments + - Variables that can be used with the `-t`/`--template` argument: + `total`, `free`, `buffer`, `cache`, `rest`, `used`, +- `usedratio`, `usedbar`, `freebar` ++ `usedratio`, `usedbar`, `freeratio`, `freebar` + - Default template: `Mem: % (M)` + + ### `Swap Args RefreshRate` +diff --git a/src/Plugins/Monitors/Mem.hs b/src/Plugins/Monitors/Mem.hs +index 5c55ee2..3cf46c7 100644 +--- a/src/Plugins/Monitors/Mem.hs ++++ b/src/Plugins/Monitors/Mem.hs +@@ -19,8 +19,8 @@ import Plugins.Monitors.Common + memConfig :: IO MConfig + memConfig = mkMConfig + "Mem: % (M)" -- template +- ["usedbar", "freebar", "usedratio", "total", +- "free", "buffer", "cache", "rest", "used"] -- available replacements ++ ["usedbar", "freebar", "usedratio", "freeratio", "total", ++ "free", "buffer", "cache", "rest", "used"] -- available replacements + + fileMEM :: IO String + fileMEM = readFile "/proc/meminfo" +@@ -33,7 +33,8 @@ parseMEM = + rest = free + buffer + cache + used = total - rest + usedratio = used / total +- return [usedratio, total, free, buffer, cache, rest, used] ++ freeratio = free / total ++ return [usedratio, freeratio, total, free, buffer, cache, rest, used, freeratio] + + totalMem :: IO Float + totalMem = fmap ((*1024) . (!!1)) parseMEM +@@ -42,15 +43,16 @@ usedMem :: IO Float + usedMem = fmap ((*1024) . (!!6)) parseMEM + + formatMem :: [Float] -> Monitor [String] +-formatMem (r:xs) = ++formatMem (r:fr:xs) = + do let f = showDigits 0 + rr = 100 * r + ub <- showPercentBar rr r + fb <- showPercentBar (100 - rr) (1 - r) + rs <- showPercentWithColors r ++ fs <- showPercentWithColors fr + s <- mapM (showWithColors f) xs +- return (ub:fb:rs:s) +-formatMem _ = return $ replicate 9 "N/A" ++ return (ub:fb:rs:fs:s) ++formatMem _ = return $ replicate 10 "N/A" + + runMem :: [String] -> Monitor String + runMem _ = diff --git a/pkgs/applications/misc/xmobar/default.nix b/pkgs/applications/misc/xmobar/default.nix index 0ef9acbcef4..c9d3183e793 100644 --- a/pkgs/applications/misc/xmobar/default.nix +++ b/pkgs/applications/misc/xmobar/default.nix @@ -13,6 +13,7 @@ cabal.mkDerivation (self: { ]; extraLibraries = [ libXrandr wirelesstools ]; configureFlags = "-fwith_xft -fwith_iwlib"; + patches = [ ./add-freeration-variable.patch ]; meta = { homepage = "http://projects.haskell.org/xmobar/"; description = "A Minimalistic Text Based Status Bar"; From e447fcc8dd4c9ae2a2b5321c6609a47e58799bb6 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:44:46 +0100 Subject: [PATCH 240/407] haskell-cuda: re-generate the expression with recent cabal2nix --- pkgs/development/libraries/haskell/cuda/default.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkgs/development/libraries/haskell/cuda/default.nix b/pkgs/development/libraries/haskell/cuda/default.nix index a90efcdf4ca..f03e1907ec0 100644 --- a/pkgs/development/libraries/haskell/cuda/default.nix +++ b/pkgs/development/libraries/haskell/cuda/default.nix @@ -7,20 +7,18 @@ cabal.mkDerivation (self: { buildDepends = [ extensibleExceptions ]; buildTools = [ c2hs ]; extraLibraries = [ cudatoolkit nvidia_x11 self.stdenv.gcc ]; + doCheck = false; # Perhaps this should be the default in cabal.nix ... # # The cudatoolkit provides both 64 and 32-bit versions of the # library. GHC's linker fails if the wrong version is found first. # We solve this by eliminating lib64 from the path on 32-bit # platforms and putting lib64 first on 64-bit platforms. - libPaths = if self.stdenv.is64bit then "lib64 lib" else "lib"; - configurePhase = '' for i in Setup.hs Setup.lhs; do test -f $i && ghc --make $i done - for p in $extraBuildInputs $propagatedNativeBuildInputs; do if [ -d "$p/include" ]; then extraLibDirs="$extraLibDirs --extra-include-dir=$p/include" @@ -31,12 +29,8 @@ cabal.mkDerivation (self: { fi done done - ./Setup configure --verbose --prefix="$out" $libraryProfiling $extraLibDirs $configureFlags ''; - - doCheck = false; - meta = { description = "FFI binding to the CUDA interface for programming NVIDIA GPUs"; license = self.stdenv.lib.licenses.bsd3; From a675c7f245008e81046d1844ad6e617e82c2f310 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:53:15 +0100 Subject: [PATCH 241/407] haskell-data-default: update to version 0.5.1 --- pkgs/development/libraries/haskell/data-default/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/data-default/default.nix b/pkgs/development/libraries/haskell/data-default/default.nix index 893f2121f0a..4fb21ed5f55 100644 --- a/pkgs/development/libraries/haskell/data-default/default.nix +++ b/pkgs/development/libraries/haskell/data-default/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "data-default"; - version = "0.5.0"; - sha256 = "1wv8wjd9j40s7h19aph5pqph7rby5ma1nlagqywn9q0634iq9n2a"; + version = "0.5.1"; + sha256 = "05zp9bcxm4lcdqniwckq0zi014iqcnqbrk5wh54dyy83h97z6mpv"; buildDepends = [ dlist ]; meta = { description = "A class for types with a default value"; From 9ff74626f95f3c39371a8f87f2b1a22f6dd04237 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:53:15 +0100 Subject: [PATCH 242/407] haskell-ghc-mod: update to version 1.12.1 --- pkgs/development/libraries/haskell/ghc-mod/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix index 7bcb94ab40c..1109a512a8d 100644 --- a/pkgs/development/libraries/haskell/ghc-mod/default.nix +++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "ghc-mod"; - version = "1.12.0"; - sha256 = "01jq6hk8vcy47nc6gd4379k6kgjiyxy99j4pnc7nsdm63gnmr5l1"; + version = "1.12.1"; + sha256 = "0m876lfxi0k7v27rg4ipq3rpk7qvsrzfdflp5fayxvmi9wgdvm3r"; isLibrary = false; isExecutable = true; buildDepends = [ From 610f063554b7b43f4928cd758ec90bda3e64a596 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:53:15 +0100 Subject: [PATCH 243/407] haskell-http-conduit: update to version 1.9.1 --- pkgs/development/libraries/haskell/http-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix index dc5e248f445..683396eea81 100644 --- a/pkgs/development/libraries/haskell/http-conduit/default.nix +++ b/pkgs/development/libraries/haskell/http-conduit/default.nix @@ -9,8 +9,8 @@ cabal.mkDerivation (self: { pname = "http-conduit"; - version = "1.9.0"; - sha256 = "1b6f2sg96fddk5ywbfvbvj9z81695d35qymf31idpkyshcp9argk"; + version = "1.9.1"; + sha256 = "1ypwqd5f6m459kjw2x3knig924s93b6yiviy7jlaxllpaw2lrial"; buildDepends = [ asn1Data base64Bytestring blazeBuilder blazeBuilderConduit caseInsensitive certificate conduit cookie cprngAes dataDefault From 8dc669a7268f3aac304d31524836547ca4fa7052 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 12:53:15 +0100 Subject: [PATCH 244/407] haskell-uulib: update to version 0.9.15 --- pkgs/development/libraries/haskell/uulib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/uulib/default.nix b/pkgs/development/libraries/haskell/uulib/default.nix index 991f3808098..2521c44bec6 100644 --- a/pkgs/development/libraries/haskell/uulib/default.nix +++ b/pkgs/development/libraries/haskell/uulib/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "uulib"; - version = "0.9.14"; - sha256 = "0bi62l9fp1ghqq4dagdy4nsxmm08gpsrnfgy6d6k8f4239s3yr0z"; + version = "0.9.15"; + sha256 = "0433shh493c04qmi0sd9mfzpy198zi11gxdmcs6nz2gcnxm812zm"; meta = { homepage = "http://www.cs.uu.nl/wiki/HUT/WebHome"; description = "Haskell Utrecht Tools Library"; From 7db1b1e08515e7cfd1bf1149df66d509415289c4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:26:17 +0100 Subject: [PATCH 245/407] haskell-zip-archive: disable test suite The test suite fails because it expects to find /usr/bin/zip. --- pkgs/development/libraries/haskell/zip-archive/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/zip-archive/default.nix b/pkgs/development/libraries/haskell/zip-archive/default.nix index 2e658b15a15..38290c8cd54 100644 --- a/pkgs/development/libraries/haskell/zip-archive/default.nix +++ b/pkgs/development/libraries/haskell/zip-archive/default.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { isExecutable = true; buildDepends = [ binary digest filepath mtl time utf8String zlib ]; testDepends = [ HUnit time ]; + doCheck = false; meta = { homepage = "http://github.com/jgm/zip-archive"; description = "Library for creating and modifying zip archives"; From f805ec1e0ad55239da89f73a43a651bcafdc2fad Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:36:45 +0100 Subject: [PATCH 246/407] happstack-server: disable test suite to fix build error --- .../development/libraries/haskell/happstack/happstack-server.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/happstack/happstack-server.nix b/pkgs/development/libraries/haskell/happstack/happstack-server.nix index 370896f77e8..0185e4e6ce9 100644 --- a/pkgs/development/libraries/haskell/happstack/happstack-server.nix +++ b/pkgs/development/libraries/haskell/happstack/happstack-server.nix @@ -16,6 +16,7 @@ cabal.mkDerivation (self: { utf8String xhtml zlib ]; testDepends = [ HUnit parsec zlib ]; + doCheck = false; meta = { homepage = "http://happstack.com"; description = "Web related tools and services"; From d7bc87693fead8665cb0f88aa1968af834c2459f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:43:21 +0100 Subject: [PATCH 247/407] haskell-quickcheck: update to version 2.6 --- pkgs/top-level/haskell-packages.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index c360214e2c6..45bf00ca46d 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -133,7 +133,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); OpenGL = self.OpenGL_2_6_0_1; # 7.6 ok parallel = self.parallel_3_2_0_3; # 7.6 ok parsec = self.parsec_3_1_3; # 7.6 ok - QuickCheck = self.QuickCheck_2_5_1_1; # 7.6 ok + QuickCheck = self.QuickCheck_2_6; # 7.6 ok random = self.random_1_0_1_1; # 7.6 ok regexBase = self.regexBase_0_93_2; # 7.6 ok regexCompat = self.regexCompat_0_95_1; # 7.6 ok @@ -1468,8 +1468,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); QuickCheck_2_4_1_1 = callPackage ../development/libraries/haskell/QuickCheck/2.4.1.1.nix {}; QuickCheck_2_4_2 = callPackage ../development/libraries/haskell/QuickCheck/2.4.2.nix {}; QuickCheck_2_5_1_1 = callPackage ../development/libraries/haskell/QuickCheck/2.5.1.1.nix {}; + QuickCheck_2_6 = callPackage ../development/libraries/haskell/QuickCheck/2.6.nix {}; QuickCheck1 = self.QuickCheck_1_2_0_1; - QuickCheck2 = self.QuickCheck_2_5_1_1; + QuickCheck2 = self.QuickCheck_2_6; QuickCheck = self.QuickCheck2; RangedSets = callPackage ../development/libraries/haskell/Ranged-sets {}; From cf53885d84dce5462d9193253456a14034b9c0ad Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:43:35 +0100 Subject: [PATCH 248/407] haskell-syb: update to version 0.4.0 --- pkgs/top-level/haskell-packages.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 45bf00ca46d..8ee50c5ae93 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -140,7 +140,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); regexPosix = self.regexPosix_0_95_2; # 7.6 ok split = self.split_0_2_1_2; # 7.6 ok stm = self.stm_2_4_2; # 7.6 ok - syb = self.syb_0_3_7; # 7.6 ok + syb = self.syb_0_4_0; # 7.6 ok text = self.text_0_11_2_3; # 7.6 ok transformers = self.transformers_0_3_0_0; # 7.6 ok vector = self.vector_0_10_0_1; # 7.6 ok @@ -1621,6 +1621,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); syb_0_3_6_1 = callPackage ../development/libraries/haskell/syb/0.3.6.1.nix {}; syb_0_3_6_2 = callPackage ../development/libraries/haskell/syb/0.3.6.2.nix {}; syb_0_3_7 = callPackage ../development/libraries/haskell/syb/0.3.7.nix {}; + syb_0_4_0 = callPackage ../development/libraries/haskell/syb/0.4.0.nix {}; syb = null; # by default, we assume that syb ships with GHC, which is # true for the older GHC versions From 1f38a4ca66a910129d5b3152a4325c859e6eb080 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:44:59 +0100 Subject: [PATCH 249/407] haskell-cabal2nix: update to version 1.47 --- pkgs/development/tools/haskell/cabal2nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/haskell/cabal2nix/default.nix b/pkgs/development/tools/haskell/cabal2nix/default.nix index 5fe5fc3639f..22dde229a2b 100644 --- a/pkgs/development/tools/haskell/cabal2nix/default.nix +++ b/pkgs/development/tools/haskell/cabal2nix/default.nix @@ -3,8 +3,8 @@ cabal.mkDerivation (self: { pname = "cabal2nix"; - version = "1.45"; - sha256 = "0xj4qkh4kp2q1a73q5da71spzskpxcfnn4pga9s492baf9yflhlf"; + version = "1.47"; + sha256 = "1ba0ny610ibynwvzqnk5h2461sdkmza5jqrizqxvhp9wknn50fc6"; isLibrary = false; isExecutable = true; buildDepends = [ Cabal filepath hackageDb HTTP mtl regexPosix ]; From 7ac086aab7453938cd70be5b97c8f1e1499f0e09 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:56:00 +0100 Subject: [PATCH 250/407] haskell-test-framework-quickcheck2: jailbreak to support QuickCheck version 2.6 --- .../libraries/haskell/test-framework-quickcheck2/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix b/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix index 77e201ca63d..b944c1e104c 100644 --- a/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix +++ b/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { buildDepends = [ extensibleExceptions QuickCheck random testFramework ]; + jailbreak = true; meta = { homepage = "http://batterseapower.github.com/test-framework/"; description = "QuickCheck2 support for the test-framework package"; From c8ff45b5c75c9679c137dcd2c9cc25bdfb1dcecb Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Mar 2013 13:56:12 +0100 Subject: [PATCH 251/407] haskell-doctest: jailbreak to support QuickCheck version 2.6 --- pkgs/development/libraries/haskell/doctest/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix index 3c8988400bc..fd9728f4fb8 100644 --- a/pkgs/development/libraries/haskell/doctest/default.nix +++ b/pkgs/development/libraries/haskell/doctest/default.nix @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { silently stringbuilder syb transformers ]; doCheck = false; + jailbreak = true; meta = { homepage = "https://github.com/sol/doctest-haskell#readme"; description = "Test interactive Haskell examples"; From f80dfee0c52f356323cc2df0697c308947aa9395 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Fri, 8 Mar 2013 17:54:31 +0400 Subject: [PATCH 252/407] SBCL: patch for new Glibc no longer needed --- pkgs/development/compilers/sbcl/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 22a561d2c2d..6c8c83fe056 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -23,9 +23,6 @@ rec { /* doConfigure should be removed if not needed */ phaseNames = ["setVars" "doFixNewer" "doFixTests" "setVersion" "doPatch" "doBuild" "doInstall" "doWrap"]; - patches = [ ./newglibc.patch ]; # https://bugs.launchpad.net/sbcl/+bug/1095036 - patchFlags = "-p2"; - setVars = a.fullDepEntry ('' export INSTALL_ROOT=$out mkdir test-home From 7fcfcb2614d3893cb3751cc61163b4556d0d5f1c Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Fri, 8 Mar 2013 07:40:47 -0800 Subject: [PATCH 253/407] linux-firmware.git moved, and so did the intel wireless firmware urls. --- pkgs/os-specific/linux/firmware/bcm43xx/default.nix | 4 ++-- .../linux/firmware/iwlwifi-4965-ucode/version-2.nix | 7 ++++--- .../linux/firmware/iwlwifi-5000-ucode/default.nix | 5 +++-- pkgs/os-specific/linux/firmware/rtl8168e-2/default.nix | 3 ++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pkgs/os-specific/linux/firmware/bcm43xx/default.nix b/pkgs/os-specific/linux/firmware/bcm43xx/default.nix index edc15a360ff..fb43c7d67e1 100644 --- a/pkgs/os-specific/linux/firmware/bcm43xx/default.nix +++ b/pkgs/os-specific/linux/firmware/bcm43xx/default.nix @@ -2,13 +2,13 @@ let src1 = fetchurl { - url = "https://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=blob_plain;f=brcm/bcm43xx_hdr-0.fw;hb=15888a2eab052ac3d3f49334e4f6f05f347a516e"; + url = "http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git;a=blob_plain;f=brcm/bcm43xx_hdr-0.fw;hb=15888a2eab052ac3d3f49334e4f6f05f347a516e"; sha256 = "d02549964d21dd90fc35806483b9fc871d93d7d38ae1a70a9ce006103c2a3de3"; name = "bcm43xx_hdr-0.fw"; }; src2 = fetchurl { - url = "https://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=blob_plain;f=brcm/bcm43xx-0.fw;hb=15888a2eab052ac3d3f49334e4f6f05f347a516e"; + url = "https://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git;a=blob_plain;f=brcm/bcm43xx-0.fw;hb=15888a2eab052ac3d3f49334e4f6f05f347a516e"; sha256 = "f90f685903127e4db431fe1efccefebf77272712bd4bfe46d1d1d5825ee52797"; name = "bcm43xx-0.fw"; }; diff --git a/pkgs/os-specific/linux/firmware/iwlwifi-4965-ucode/version-2.nix b/pkgs/os-specific/linux/firmware/iwlwifi-4965-ucode/version-2.nix index e1771c7a5cf..3e15374c65f 100644 --- a/pkgs/os-specific/linux/firmware/iwlwifi-4965-ucode/version-2.nix +++ b/pkgs/os-specific/linux/firmware/iwlwifi-4965-ucode/version-2.nix @@ -1,11 +1,12 @@ {stdenv, fetchurl}: stdenv.mkDerivation rec { - name = "iwlwifi-4965-ucode-228.57.2.21"; + name = "iwlwifi-4965-ucode-228.61.2.24"; src = fetchurl { - url = "http://intellinuxwireless.org/iwlwifi/downloads/" + name + ".tgz"; - sha256 = "1ss8r9l8j28n4zplpcwf81n74yy7p4q9dldnblmh4g0h9nyr8nf0"; + url = "http://wireless.kernel.org/en/users/Drivers/iwlegacy?action=AttachFile&do=get&target=iwlwifi-4965-ucode-228.61.2.24.tgz"; + name = "iwlwifi-4965-ucode-228.61.2.24.tgz"; + sha256 = "1n5af3cci0v40w4gr0hplqr1lfvhghlbzdbf60d6185vpcny2l5m"; }; buildPhase = "true"; diff --git a/pkgs/os-specific/linux/firmware/iwlwifi-5000-ucode/default.nix b/pkgs/os-specific/linux/firmware/iwlwifi-5000-ucode/default.nix index 49269fffe47..8805f1393fb 100644 --- a/pkgs/os-specific/linux/firmware/iwlwifi-5000-ucode/default.nix +++ b/pkgs/os-specific/linux/firmware/iwlwifi-5000-ucode/default.nix @@ -4,8 +4,9 @@ stdenv.mkDerivation rec { name = "iwlwifi-5000-ucode-8.83.5.1-1"; src = fetchurl { - url = "http://www.intellinuxwireless.org/iwlwifi/downloads/${name}.tar.gz"; - sha256 = "0n4f6wsppspvvdpcab52n2piczhgfq7a4y7gazxzzlj5halchnx3"; + url = "http://wireless.kernel.org/en/users/Drivers/iwlwifi?action=AttachFile&do=get&target=iwlwifi-5000-ucode-8.83.5.1-1.tgz"; + name = "iwlwifi-5000-ucode-8.83.5.1-1.tgz"; + sha256 = "0pkzr4gflp3j0jm4rw66jypk3xn4bvpgdsnxjqwanyd64aj6naxg"; }; buildPhase = "true"; diff --git a/pkgs/os-specific/linux/firmware/rtl8168e-2/default.nix b/pkgs/os-specific/linux/firmware/rtl8168e-2/default.nix index a73ae978597..dbd2fa45b7b 100644 --- a/pkgs/os-specific/linux/firmware/rtl8168e-2/default.nix +++ b/pkgs/os-specific/linux/firmware/rtl8168e-2/default.nix @@ -1,8 +1,9 @@ { stdenv, fetchurl }: +# http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git let src = fetchurl { - url = "http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=blob_plain;f=rtl_nic/rtl8168e-2.fw"; + url = "http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git;a=blob_plain;f=rtl_nic/rtl8168e-2.fw"; sha256 = "11lkwc6r6f5pi8clxajp43j6dzapydgxaxaschribpvhn8lrjj0a"; name = "rtl8168e-2.fw"; }; From e863477995d28b77f5fbe7cdd64cc6d87a09c6ff Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Fri, 8 Mar 2013 07:43:30 -0800 Subject: [PATCH 254/407] need to link against -lgcc_s for the testsuite to work --- pkgs/tools/security/tor/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix index c56f9454fcd..7b022bc875c 100644 --- a/pkgs/tools/security/tor/default.nix +++ b/pkgs/tools/security/tor/default.nix @@ -15,6 +15,8 @@ stdenv.mkDerivation rec { buildInputs = [ libevent openssl zlib ]; + NIX_CFLAGS_LINK = "-lgcc_s"; + doCheck = true; meta = { From 1e2e5babf17ae694c7a5f343311f1f6fa42062c6 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Fri, 8 Mar 2013 07:44:30 -0800 Subject: [PATCH 255/407] XML-LibXML-2.0014, as XML-LibXML-2.0001 doesn't exist upstream anymore --- pkgs/top-level/perl-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 03d074d094d..bff7911d843 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -5244,10 +5244,10 @@ rec { }; XMLLibXML = buildPerlPackage rec { - name = "XML-LibXML-2.0001"; + name = "XML-LibXML-2.0014"; src = fetchurl { url = "mirror://cpan/modules/by-module/XML/${name}.tar.gz"; - sha256 = "1zx4fqi531yzaf1c5cw1qwb9vy37fksz35a7pp6pic9v8jvz09x6"; + sha256 = "0r2mw6pnygj2bpng9f4q5jfn4iawhkj47ys3sbnvqymyp1afihf6"; }; SKIP_SAX_INSTALL = 1; buildInputs = [ pkgs.libxml2 ]; From 63256d08345a8a31fef267a9e01a18f9c9aa2219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=A6=D0=B0=D0=BC=D1=83=D1=82=D0=B0=D0=BB=D0=B8?= Date: Fri, 8 Mar 2013 20:58:48 +0400 Subject: [PATCH 256/407] games/unvanquished: Update to 0.13.1. --- pkgs/games/unvanquished/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/games/unvanquished/default.nix b/pkgs/games/unvanquished/default.nix index 03069f9fe14..6d1c8e5607c 100644 --- a/pkgs/games/unvanquished/default.nix +++ b/pkgs/games/unvanquished/default.nix @@ -3,10 +3,10 @@ , makeWrapper }: stdenv.mkDerivation rec { name = "unvanquished-${version}"; - version = "0.12.0"; + version = "0.13.1"; src = fetchurl { url = "https://github.com/Unvanquished/Unvanquished/archive/v${version}.tar.gz"; - sha256 = "0spwin0vms1zzkbgzkm423k804nqr5d54xppjbwhdnrd5fdv0gyl"; + sha256 = "1k7mlpwalimn6xb2s760f124xncpg455qvls6z3x0ii5x0wc1mp2"; }; buildInputs = [ cmake mesa SDL libjpeg libpng glew libwebp ncurses gmp curl nettle openal speex libogg libvorbis libtheora xvidcore From b938cacbe19159062242f389627a14f3b661d5cc Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 8 Mar 2013 15:49:22 -0500 Subject: [PATCH 257/407] tmux: Update to 1.7 --- pkgs/tools/misc/tmux/default.nix | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/pkgs/tools/misc/tmux/default.nix b/pkgs/tools/misc/tmux/default.nix index 2e26fb7ddba..e899c4391f9 100644 --- a/pkgs/tools/misc/tmux/default.nix +++ b/pkgs/tools/misc/tmux/default.nix @@ -1,22 +1,21 @@ -{stdenv, fetchurl, ncurses, libevent}: +{stdenv, fetchurl, ncurses, libevent, pkgconfig}: stdenv.mkDerivation rec { pname = "tmux"; - version = "1.5"; + version = "1.7"; name = "${pname}-${version}"; src = fetchurl { url = "mirror://sourceforge/${pname}/${name}.tar.gz"; - sha256 = "eb8215b57c05b765d2446d9acb2bc5edcdb3eb4ea31af89ee127a27e90056306"; + sha256 = "0ywy1x2g905hmhkdz418ik42lcvnhnwr8fv63rcqczfg27d6nd38"; }; - makeFlags = "PREFIX=\${out}"; + buildNativeInputs = [ pkgconfig ]; - crossAttrs = { - preBuild = '' - makeFlags=" $makeFlags CC=${stdenv.cross.config}-gcc " - ''; - }; + # There's a bug in tmux's configure script, --disable-static actually enables it + # Fixed upstream in revision ThomasAdam/tmux@e964ff70e696f30f0301d11deb45c8ada54e0c55 + # Remove on next update + dontDisableStatic = true; buildInputs = [ ncurses libevent ]; @@ -41,6 +40,6 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.bsd3; platforms = stdenv.lib.platforms.unix; - maintainers = [ stdenv.lib.maintainers.thammers ]; + maintainers = with stdenv.lib.maintainers; [ shlevy thammers ]; }; } From f2c79c45428157ff346d5246d11830e8444d9752 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 8 Mar 2013 16:36:59 -0500 Subject: [PATCH 258/407] Remove some references to non-existent packages --- pkgs/top-level/release-python.nix | 1 - pkgs/top-level/release-small.nix | 1 - pkgs/top-level/release.nix | 8 +------- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/pkgs/top-level/release-python.nix b/pkgs/top-level/release-python.nix index d82056d4297..9d8319141dd 100644 --- a/pkgs/top-level/release-python.nix +++ b/pkgs/top-level/release-python.nix @@ -260,7 +260,6 @@ in electricsheep = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; elinks = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; emacs = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; - emacs22 = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; emacs23 = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; emacs24Packages = { autoComplete = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; diff --git a/pkgs/top-level/release-small.nix b/pkgs/top-level/release-small.nix index 97a158430ca..faefdc5a0c3 100644 --- a/pkgs/top-level/release-small.nix +++ b/pkgs/top-level/release-small.nix @@ -135,7 +135,6 @@ with (import ./release-lib.nix); openssl = all; pam_console = linux; pam_login = linux; - pam_unix2 = linux; pan = gtkSupported; par2cmdline = all; pciutils = linux; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index ccf7d458536..473db5f4384 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -33,7 +33,6 @@ with (import ./release-lib.nix); bc = all; binutils = linux; bind = linux; - bison26 = all; bitlbee = linux; bittorrent = linux; blender = linux; @@ -73,7 +72,6 @@ with (import ./release-lib.nix); e2fsprogs = linux; ejabberd = linux; elinks = linux; - emacs22 = gtkSupported; emacs23 = gtkSupported; enscript = all; eprover = linux; @@ -211,7 +209,6 @@ with (import ./release-lib.nix); openssl = all; pam_console = linux; pam_login = linux; - pam_unix2 = linux; pan = gtkSupported; par2cmdline = all; pavucontrol = linux; @@ -332,15 +329,12 @@ with (import ./release-lib.nix); zsh = linux; zsnes = ["i686-linux"]; - emacs22Packages = { + emacs23Packages = { bbdb = linux; cedet = linux; ecb = linux; emacsw3m = linux; emms = linux; - }; - - emacs23Packages = emacs22Packages // { jdee = linux; }; From 1de517844be93954227b3f0dc8f30ddfea7be0bc Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 8 Mar 2013 16:39:09 -0500 Subject: [PATCH 259/407] Whoops, buildNativeInputs is now nativeBuildInputs --- pkgs/tools/misc/tmux/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/misc/tmux/default.nix b/pkgs/tools/misc/tmux/default.nix index e899c4391f9..435b9cdcee9 100644 --- a/pkgs/tools/misc/tmux/default.nix +++ b/pkgs/tools/misc/tmux/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { sha256 = "0ywy1x2g905hmhkdz418ik42lcvnhnwr8fv63rcqczfg27d6nd38"; }; - buildNativeInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig ]; # There's a bug in tmux's configure script, --disable-static actually enables it # Fixed upstream in revision ThomasAdam/tmux@e964ff70e696f30f0301d11deb45c8ada54e0c55 From fd48192018f1ef14fd2eec6820e7d5f9deb15dce Mon Sep 17 00:00:00 2001 From: orbitz Date: Fri, 8 Mar 2013 22:42:22 +0100 Subject: [PATCH 260/407] Add opam 0.9.5 --- pkgs/development/tools/ocaml/opam/default.nix | 59 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/tools/ocaml/opam/default.nix diff --git a/pkgs/development/tools/ocaml/opam/default.nix b/pkgs/development/tools/ocaml/opam/default.nix new file mode 100644 index 00000000000..670c37a4e93 --- /dev/null +++ b/pkgs/development/tools/ocaml/opam/default.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchgit, fetchurl, ocaml, unzip, ncurses, curl }: + +let + srcs = { + cudf = fetchurl { + url = "https://gforge.inria.fr/frs/download.php/31910/cudf-0.6.3.tar.gz"; + sha256 = "6e9f1bafe859df85c854679e2904a8172945d2bf2d676c8ae3ecb72fe6de0665"; + }; + extlib = fetchurl { + url = "http://ocaml-extlib.googlecode.com/files/extlib-1.5.3.tar.gz"; + sha256 = "c095eef4202a8614ff1474d4c08c50c32d6ca82d1015387785cf03d5913ec021"; + }; + ocaml_re = fetchurl { + url = "https://github.com/ocaml/ocaml-re/archive/ocaml-re-1.2.0.tar.gz"; + sha256 = "a34dd9d6136731436a963bbab5c4bbb16e5d4e21b3b851d34887a3dec451999f"; + }; + ocamlgraph = fetchurl { + url = "http://ocamlgraph.lri.fr/download/ocamlgraph-1.8.1.tar.gz"; + sha256 = "ba6388ffc2c15139b0f26330ef6dd922f0ff0f364eee99a3202bf1cd93512b43"; + }; + dose3 = fetchurl { + url = "https://gforge.inria.fr/frs/download.php/31595/dose3-3.1.2.tar.gz"; + sha256 = "3a07a08345be157c98cb26021d7329c72c2b95c99cfdff79887690656ec9f1a3"; + }; + cmdliner = fetchurl { + url = "http://erratique.ch/software/cmdliner/releases/cmdliner-0.9.3.tbz"; + sha256 = "5421559aa12b4debffef947f7e1039c22e9dffd87a4aa68445a687a20764ae81"; + }; + opam = fetchurl { + url = "https://github.com/OCamlPro/opam/archive/0.9.5.zip"; + sha256 = "2ec706330a3283b4d057abc562c6078351988d0ae98ad507fe51cae598b43afd"; + }; + }; +in +stdenv.mkDerivation rec { + name = "opam-0.9.5"; + + buildInputs = [unzip curl ncurses ocaml]; + + src = srcs.opam; + + postUnpack = '' + ln -sv ${srcs.cudf} $sourceRoot/src_ext/${srcs.cudf.name} + ln -sv ${srcs.extlib} $sourceRoot/src_ext/${srcs.extlib.name} + ln -sv ${srcs.ocaml_re} $sourceRoot/src_ext/${srcs.ocaml_re.name} + ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/${srcs.ocamlgraph.name} + ln -sv ${srcs.dose3} $sourceRoot/src_ext/${srcs.dose3.name} + ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/${srcs.cmdliner.name} + ''; + + makeFlags = ["HOME=$(TMPDIR)"]; + + doCheck = false; + + meta = { + description = "A package manager for ocaml"; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 00ecacc1245..0fd838763dc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2625,7 +2625,7 @@ let pycaml = callPackage ../development/ocaml-modules/pycaml { }; - opam = callPackage ../development/tools/ocaml/opam/0.9.4.nix { }; + opam = callPackage ../development/tools/ocaml/opam { }; }; ocamlPackages = recurseIntoAttrs ocamlPackages_3_12_1; From 98a6759bc78e0431a247843c839ca756ac0ce6bd Mon Sep 17 00:00:00 2001 From: orbitz Date: Fri, 8 Mar 2013 22:48:58 +0100 Subject: [PATCH 261/407] Delete 0.9.4 --- pkgs/development/tools/ocaml/opam/0.9.4.nix | 59 --------------------- 1 file changed, 59 deletions(-) delete mode 100644 pkgs/development/tools/ocaml/opam/0.9.4.nix diff --git a/pkgs/development/tools/ocaml/opam/0.9.4.nix b/pkgs/development/tools/ocaml/opam/0.9.4.nix deleted file mode 100644 index c69d4d83626..00000000000 --- a/pkgs/development/tools/ocaml/opam/0.9.4.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ stdenv, fetchgit, fetchurl, ocaml, unzip, ncurses, curl }: - -let - srcs = { - cudf = fetchurl { - url = "https://gforge.inria.fr/frs/download.php/31910/cudf-0.6.3.tar.gz"; - sha256 = "6e9f1bafe859df85c854679e2904a8172945d2bf2d676c8ae3ecb72fe6de0665"; - }; - extlib = fetchurl { - url = "http://ocaml-extlib.googlecode.com/files/extlib-1.5.3.tar.gz"; - sha256 = "c095eef4202a8614ff1474d4c08c50c32d6ca82d1015387785cf03d5913ec021"; - }; - ocaml_re = fetchurl { - url = "https://github.com/ocaml/ocaml-re/archive/ocaml-re-1.2.0.tar.gz"; - sha256 = "a34dd9d6136731436a963bbab5c4bbb16e5d4e21b3b851d34887a3dec451999f"; - }; - ocamlgraph = fetchurl { - url = "http://ocamlgraph.lri.fr/download/ocamlgraph-1.8.1.tar.gz"; - sha256 = "ba6388ffc2c15139b0f26330ef6dd922f0ff0f364eee99a3202bf1cd93512b43"; - }; - dose3 = fetchurl { - url = "https://gforge.inria.fr/frs/download.php/31595/dose3-3.1.2.tar.gz"; - sha256 = "3a07a08345be157c98cb26021d7329c72c2b95c99cfdff79887690656ec9f1a3"; - }; - cmdliner = fetchurl { - url = "http://erratique.ch/software/cmdliner/releases/cmdliner-0.9.3.tbz"; - sha256 = "5421559aa12b4debffef947f7e1039c22e9dffd87a4aa68445a687a20764ae81"; - }; - opam = fetchurl { - url = "https://github.com/OCamlPro/opam/archive/0.9.4.zip"; - sha256 = "6d86e9a64d1a1217cd81fc65ec5c41d1c1e0ff888237d819a0b17a4d3096c316"; - }; - }; -in -stdenv.mkDerivation rec { - name = "opam-0.9.4"; - - buildInputs = [unzip curl ncurses ocaml]; - - src = srcs.opam; - - postUnpack = '' - ln -sv ${srcs.cudf} $sourceRoot/src_ext/${srcs.cudf.name} - ln -sv ${srcs.extlib} $sourceRoot/src_ext/${srcs.extlib.name} - ln -sv ${srcs.ocaml_re} $sourceRoot/src_ext/${srcs.ocaml_re.name} - ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/${srcs.ocamlgraph.name} - ln -sv ${srcs.dose3} $sourceRoot/src_ext/${srcs.dose3.name} - ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/${srcs.cmdliner.name} - ''; - - makeFlags = ["HOME=$(TMPDIR)"]; - - doCheck = false; - - meta = { - description = "A package manager for ocaml"; - platforms = stdenv.lib.platforms.all; - }; -} From 55be059467ce77ae48298d97b48df803093b0c39 Mon Sep 17 00:00:00 2001 From: orbitz Date: Fri, 8 Mar 2013 22:51:34 +0100 Subject: [PATCH 262/407] Add myself to maintainers, remove 0.9.4, set maintainer for this packge to me --- pkgs/development/tools/ocaml/opam/default.nix | 3 ++- pkgs/lib/maintainers.nix | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/ocaml/opam/default.nix b/pkgs/development/tools/ocaml/opam/default.nix index 670c37a4e93..714c5aca686 100644 --- a/pkgs/development/tools/ocaml/opam/default.nix +++ b/pkgs/development/tools/ocaml/opam/default.nix @@ -53,7 +53,8 @@ stdenv.mkDerivation rec { doCheck = false; meta = { + maintainers = stdenv.lib.maintainers.orbitz; description = "A package manager for ocaml"; - platforms = stdenv.lib.platforms.all; + platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/lib/maintainers.nix b/pkgs/lib/maintainers.nix index 76aa2de723d..a2e8b50c10e 100644 --- a/pkgs/lib/maintainers.nix +++ b/pkgs/lib/maintainers.nix @@ -27,6 +27,7 @@ marcweber = "Marc Weber "; mornfall = "Petr Ročkai "; neznalek = "Vladimír Čunát "; + orbitz = "Malcolm Matalka "; page = "Carles Pagès "; phreedom = "Evgeny Egorochkin "; pierron = "Nicolas B. Pierron "; From b634efe63c846a35fcc12ef0a5183e54a1ee4cbd Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 8 Mar 2013 17:12:56 -0500 Subject: [PATCH 263/407] ocamlPackages.opam: Fix indentation Signed-off-by: Shea Levy --- pkgs/development/tools/ocaml/opam/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/tools/ocaml/opam/default.nix b/pkgs/development/tools/ocaml/opam/default.nix index 714c5aca686..0a0dd4e6fe2 100644 --- a/pkgs/development/tools/ocaml/opam/default.nix +++ b/pkgs/development/tools/ocaml/opam/default.nix @@ -40,12 +40,12 @@ stdenv.mkDerivation rec { src = srcs.opam; postUnpack = '' - ln -sv ${srcs.cudf} $sourceRoot/src_ext/${srcs.cudf.name} - ln -sv ${srcs.extlib} $sourceRoot/src_ext/${srcs.extlib.name} - ln -sv ${srcs.ocaml_re} $sourceRoot/src_ext/${srcs.ocaml_re.name} - ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/${srcs.ocamlgraph.name} - ln -sv ${srcs.dose3} $sourceRoot/src_ext/${srcs.dose3.name} - ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/${srcs.cmdliner.name} + ln -sv ${srcs.cudf} $sourceRoot/src_ext/${srcs.cudf.name} + ln -sv ${srcs.extlib} $sourceRoot/src_ext/${srcs.extlib.name} + ln -sv ${srcs.ocaml_re} $sourceRoot/src_ext/${srcs.ocaml_re.name} + ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/${srcs.ocamlgraph.name} + ln -sv ${srcs.dose3} $sourceRoot/src_ext/${srcs.dose3.name} + ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/${srcs.cmdliner.name} ''; makeFlags = ["HOME=$(TMPDIR)"]; From 9a5ca5aced8019d04adac88f0d5a1b7d63927841 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 8 Mar 2013 19:14:43 -0500 Subject: [PATCH 264/407] tor: Don't use NIX_CFLAGS_LINK where CFLAGS will do --- pkgs/tools/security/tor/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix index 7b022bc875c..f896e8c7b40 100644 --- a/pkgs/tools/security/tor/default.nix +++ b/pkgs/tools/security/tor/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { buildInputs = [ libevent openssl zlib ]; - NIX_CFLAGS_LINK = "-lgcc_s"; + CFLAGS = "-lgcc_s"; doCheck = true; From 8934644d207cc6744fe44e61fbce0436d29638e4 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 8 Mar 2013 19:15:26 -0500 Subject: [PATCH 265/407] tor: minor cleanups Signed-off-by: Shea Levy --- pkgs/tools/security/tor/default.nix | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix index f896e8c7b40..e8c27c5f2b1 100644 --- a/pkgs/tools/security/tor/default.nix +++ b/pkgs/tools/security/tor/default.nix @@ -8,11 +8,6 @@ stdenv.mkDerivation rec { sha256 = "bb2d6f1136f33e11d37e6e34184143bf191e59501613daf33ae3d6f78f3176a0"; }; -# patchPhase = - # DNS lookups fail in chroots. -# '' sed -i "src/or/test.c" -es/localhost/127.0.0.1/g -# ''; - buildInputs = [ libevent openssl zlib ]; CFLAGS = "-lgcc_s"; @@ -37,7 +32,7 @@ stdenv.mkDerivation rec { maintainers = [ # Russell O’Connor ? - stdenv.lib.maintainers.ludo + stdenv.lib.maintainers.ludo ]; platforms = stdenv.lib.platforms.gnu; # arbitrary choice }; From 23cbda5b3ccf97eb9871382b5867fb2fd76447b0 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 8 Mar 2013 19:49:53 -0500 Subject: [PATCH 266/407] man-pages: Update to 3.48 --- pkgs/data/documentation/man-pages/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/data/documentation/man-pages/default.nix b/pkgs/data/documentation/man-pages/default.nix index d00ca6c869f..032a59e5c50 100644 --- a/pkgs/data/documentation/man-pages/default.nix +++ b/pkgs/data/documentation/man-pages/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "man-pages-3.45"; + name = "man-pages-3.48"; src = fetchurl { - url = "mirror://kernel/linux/docs/man-pages/Archive/${name}.tar.xz"; - sha256 = "1lwqrp79xcyhnjlyg1n0imz5wc88lpgv909xxz8bdgbk7c1mky0h"; + url = "mirror://kernel/linux/docs/man-pages/${name}.tar.xz"; + sha256 = "6944cc3ad5131abab01c6703e63672b2e44be52737cdb1144f6ddaebb7f7d682"; }; preBuild = From b26c770651742b8fe0eb588f384d5a5b7fe01892 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 9 Mar 2013 12:20:19 +0400 Subject: [PATCH 267/407] Exporting XFCE gvfs: it is referenced in NixOS, it is unclear how to remove the dependency cleanly and it affects rebuild even with config that doesn't mention XFCE at all. --- pkgs/desktops/xfce/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix index 07a3ffc6baf..d57184a19eb 100644 --- a/pkgs/desktops/xfce/default.nix +++ b/pkgs/desktops/xfce/default.nix @@ -62,6 +62,10 @@ xfce_self = rec { # the lines are very long but it seems better than the even-od xfce4_systemload_plugin = callPackage ./panel-plugins/xfce4-systemload-plugin.nix { }; xfce4_cpufreq_plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin.nix { }; + #### SUPPORT + + gvfs = deps.gvfs; + }; # xfce_self in xfce_self From dcf04b60632862c28e1ca2234b97eb9107f727c8 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 9 Mar 2013 12:59:45 +0400 Subject: [PATCH 268/407] zbar requires v4l1; disabe video --- pkgs/tools/graphics/zbar/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/tools/graphics/zbar/default.nix b/pkgs/tools/graphics/zbar/default.nix index 4bced99820b..d5cea08f3df 100644 --- a/pkgs/tools/graphics/zbar/default.nix +++ b/pkgs/tools/graphics/zbar/default.nix @@ -30,6 +30,8 @@ rec { /* doConfigure should be removed if not needed */ phaseNames = ["doConfigure" "doMakeInstall"]; + + configureFlags = ["--disable-video"]; meta = { description = "Bar code toolset"; From de36ddf7e7ec6f526758b3d68ba2791dfd92c639 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 9 Mar 2013 10:24:08 +0100 Subject: [PATCH 269/407] add older pycrypto25 --- .../python-modules/pycrypto/2.5.nix | 29 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 5 ++++ 2 files changed, 34 insertions(+) create mode 100644 pkgs/development/python-modules/pycrypto/2.5.nix diff --git a/pkgs/development/python-modules/pycrypto/2.5.nix b/pkgs/development/python-modules/pycrypto/2.5.nix new file mode 100644 index 00000000000..de192c64b72 --- /dev/null +++ b/pkgs/development/python-modules/pycrypto/2.5.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, python, buildPythonPackage, gmp }: + +buildPythonPackage rec { + name = "pycrypto-2.5"; + namePrefix = ""; + + src = fetchurl { + url = "http://pypi.python.org/packages/source/p/pycrypto/${name}.tar.gz"; + md5 = "783e45d4a1a309e03ab378b00f97b291"; + }; + + buildInputs = [ python gmp ]; + + buildPhase = + '' + python ./setup.py build_ext --library-dirs=${gmp}/lib + ''; + +# installPhase = +# '' +# python ./setup.py install --prefix=$out +# ''; + + meta = { + homepage = "http://www.pycrypto.org/"; + description = "Python Cryptography Toolkit"; + platforms = stdenv.lib.platforms.gnu; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 0baf3457966..0c31d75b228 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -68,6 +68,11 @@ pythonPackages = python.modules // rec { inherit python buildPythonPackage; }; + pycrypto25 = import ../development/python-modules/pycrypto/2.5.nix { + inherit (pkgs) fetchurl stdenv gmp; + inherit python buildPythonPackage; + }; + pygobject = import ../development/python-modules/pygobject { inherit (pkgs) stdenv fetchurl pkgconfig glib; inherit python; From a49bd047c0fd7806603caa41a21836c0ed684657 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 9 Mar 2013 10:41:14 +0100 Subject: [PATCH 270/407] add older buildout152 --- pkgs/top-level/python-packages.nix | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 0c31d75b228..631f5c907ed 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -456,6 +456,28 @@ pythonPackages = python.modules // rec { }; + buildout152 = buildPythonPackage rec { + name = "buildout-${version}"; + version = "1.5.2"; + + src = fetchurl { + url = "http://pypi.python.org/packages/source/z/zc.buildout/zc.${name}.tar.gz"; + md5 = "87f7b3f8d13926c806242fd5f6fe36f7"; + }; + + # TODO: consider if this patch should be an option + # It makes buildout useful in a nix profile, but this alters the default functionality + patchPhase = '' + sed -i "s/return (stdlib, site_paths)/return (stdlib, sys.path)/g" src/zc/buildout/easy_install.py + ''; + + meta = { + homepage = http://www.buildout.org/; + description = "A software build and configuration system"; + }; + }; + + carrot = buildPythonPackage rec { name = "carrot-0.10.7"; From c3511c115dfc8fc2bae2c67152fe34134c1f23de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 10:51:34 +0100 Subject: [PATCH 271/407] xfce: fix NixOS support Sorry for this forgotten commit. --- pkgs/desktops/xfce/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix index d57184a19eb..03e0def7853 100644 --- a/pkgs/desktops/xfce/default.nix +++ b/pkgs/desktops/xfce/default.nix @@ -17,6 +17,11 @@ deps = rec { # xfce-global dependency overrides should be here xfce_self = rec { # the lines are very long but it seems better than the even-odd line approach + #### NixOS support + + inherit (deps) gvfs; + xinitrc = "${xfce4session}/etc/xdg/xfce4/xinitrc"; + #### CORE from "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2" exo = callPackage ./core/exo.nix { }; @@ -62,10 +67,6 @@ xfce_self = rec { # the lines are very long but it seems better than the even-od xfce4_systemload_plugin = callPackage ./panel-plugins/xfce4-systemload-plugin.nix { }; xfce4_cpufreq_plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin.nix { }; - #### SUPPORT - - gvfs = deps.gvfs; - }; # xfce_self in xfce_self From d5288c7e3a1e39bbaaac9dee54c6c6afe4060fe6 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 9 Mar 2013 14:24:09 +0400 Subject: [PATCH 272/407] TPTP had a bugfix without version change --- pkgs/applications/science/logic/tptp/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/science/logic/tptp/default.nix b/pkgs/applications/science/logic/tptp/default.nix index 87a32006713..5c8cb720324 100644 --- a/pkgs/applications/science/logic/tptp/default.nix +++ b/pkgs/applications/science/logic/tptp/default.nix @@ -14,7 +14,7 @@ let version="5.4.0"; name="${baseName}-${version}"; url="http://www.cs.miami.edu/~tptp/TPTP/Distribution/TPTP-v${version}.tgz"; - hash="0nyq2kkiphwgj3hczc7zglzqjj6hxxsh6zcygpy4yhxh9a9rpkg1"; + hash="0rvrmh3vw4bk7mj29bx1pi76g2bsqyc13gsnpa1cbjs5pzyhm780"; }; in rec { From f0f34067e72991c110f3cc023e5673f38ba1e48e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 11:31:16 +0100 Subject: [PATCH 273/407] recode: fix build after stdenv merge + #354 ToDo: tests don't pass yet. --- pkgs/tools/text/recode/default.nix | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/text/recode/default.nix b/pkgs/tools/text/recode/default.nix index e3a58bbb5a8..db9ed5d30f3 100644 --- a/pkgs/tools/text/recode/default.nix +++ b/pkgs/tools/text/recode/default.nix @@ -1,6 +1,6 @@ # XXX: this may need -liconv on non-glibc systems.. -{stdenv, fetchgit, python, perl}: +{ stdenv, fetchgit, python, perl, autoconf, automake, libtool, intltool, flex }: stdenv.mkDerivation rec { name = "recode-3.7-pff85fdbd"; @@ -11,9 +11,19 @@ stdenv.mkDerivation rec { sha256 = "1xhlfmqld6af16l444jli9crj9brym2jihg1n6lkxh2gar68f5l7"; }; - buildInputs = [ python perl ]; + buildInputs = [ python perl autoconf automake libtool intltool flex ]; - doCheck = true; + preConfigure = '' + # fix build with new automake, https://bugs.gentoo.org/show_bug.cgi?id=419455 + #rm acinclude.m4 + substituteInPlace Makefile.am --replace "ACLOCAL = ./aclocal.sh @ACLOCAL@" "" + sed -i '/^AM_C_PROTOTYPES/d' configure.ac + substituteInPlace src/Makefile.am --replace "ansi2knr" "" + + autoreconf -fi + ''; + + #doCheck = true; # doesn't work yet preCheck = '' checkFlagsArray=(CPPFLAGS="-I../lib" LDFLAGS="-L../src/.libs -Wl,-rpath=../src/.libs") From e218c79b855bb22cabb5d0ce343234fceb308bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 12:27:38 +0100 Subject: [PATCH 274/407] grive: fix build with new binutils headers --- pkgs/tools/filesystems/grive/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/filesystems/grive/default.nix b/pkgs/tools/filesystems/grive/default.nix index 67c6d2f8581..dce7757d23a 100644 --- a/pkgs/tools/filesystems/grive/default.nix +++ b/pkgs/tools/filesystems/grive/default.nix @@ -1,7 +1,8 @@ { stdenv, fetchgit, cmake, libgcrypt, json_c, curl, expat, boost, binutils }: stdenv.mkDerivation rec { - name = "grive-0.3.0"; + version = "0.3.0"; + name = "grive-${version}"; src = fetchgit { url = "https://github.com/Grive/grive.git"; @@ -11,6 +12,13 @@ stdenv.mkDerivation rec { buildInputs = [cmake libgcrypt json_c curl expat stdenv binutils boost]; + # work around new binutils headers, see + # http://stackoverflow.com/questions/11748035/binutils-bfd-h-wants-config-h-now + prePatch = '' + sed -i '1i#define PACKAGE "grive"\n#define PACKAGE_VERSION "${version}"' \ + libgrive/src/bfd/SymbolInfo.cc + ''; + meta = { description = "an open source (experimental) Linux client for Google Drive"; homepage = https://github.com/Grive/grive; From 3704855f78434fd8b193e3d49dca69d2aa721f99 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 9 Mar 2013 12:36:51 +0100 Subject: [PATCH 275/407] pkgs/top-level/haskell-defaults.nix: cosmetic --- pkgs/top-level/haskell-defaults.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix index f99e790de94..16bcd252a4a 100644 --- a/pkgs/top-level/haskell-defaults.nix +++ b/pkgs/top-level/haskell-defaults.nix @@ -95,9 +95,9 @@ extensibleExceptions = self.extensibleExceptions_0_1_1_0; deepseq = self.deepseq_1_1_0_2; monadPar = self.monadPar_0_1_0_3; + # deviating from Haskell platform here, to make some packages (notably statistics) compile jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_14_0; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; - # deviating from Haskell platform here, to make some packages (notably statistics) compile }; ghc6104Prefs = @@ -109,9 +109,9 @@ text = self.text_0_11_0_6; deepseq = self.deepseq_1_1_0_2; monadPar = self.monadPar_0_1_0_3; + # deviating from Haskell platform here, to make some packages (notably statistics) compile jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_14_0; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; - # deviating from Haskell platform here, to make some packages (notably statistics) compile }; # Abstraction for Haskell packages collections From 78140c3acd932f12005d278eff64626d1d737b5f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 9 Mar 2013 12:58:08 +0100 Subject: [PATCH 276/407] haskell-packages.nix: add 'disableTests' convenience function --- pkgs/top-level/haskell-packages.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 8ee50c5ae93..110e19b72b3 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -106,6 +106,18 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); enableLibraryProfiling = enableLibraryProfiling; }; + # A variant of the cabal build driver that disables unit testing. + # Useful for breaking cycles, where the unit test of a package A + # depends on package B, which has A as a regular build input. + cabalNoTest = { + mkDerivation = x: rec { + final = self.cabal.mkDerivation (self: (x final) // { doCheck = false; }); + }.final; + }; + + # Convenience helper function. + disableTest = x: x.override { cabal = self.cabalNoTest; }; + # Haskell Platform # # We try to support several platform versions. For these, we set all From 63cd00856eb54e03309510473456997e9e492e51 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 9 Mar 2013 12:58:48 +0100 Subject: [PATCH 277/407] haskell-defaults.nix: don't pass inconsistent Cabal versions to cabal2nix --- pkgs/top-level/haskell-defaults.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix index 16bcd252a4a..59a94d4f4b3 100644 --- a/pkgs/top-level/haskell-defaults.nix +++ b/pkgs/top-level/haskell-defaults.nix @@ -85,7 +85,7 @@ deepseq = self.deepseq_1_1_0_2; # deviating from Haskell platform here, to make some packages (notably statistics) compile jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; - cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_14_0; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; + cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; }; ghc6121Prefs = @@ -97,7 +97,7 @@ monadPar = self.monadPar_0_1_0_3; # deviating from Haskell platform here, to make some packages (notably statistics) compile jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; - cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_14_0; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; + cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; }; ghc6104Prefs = @@ -111,7 +111,7 @@ monadPar = self.monadPar_0_1_0_3; # deviating from Haskell platform here, to make some packages (notably statistics) compile jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; - cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_14_0; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; + cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; }; # Abstraction for Haskell packages collections From edfcb485a8e7d093166e3fce2b58aa2064e0f503 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 9 Mar 2013 13:02:37 +0100 Subject: [PATCH 278/407] jailbreak-cabal: build jailbreak-cabal with a version of Cabal that has its unit tests disabled Cabal's unit test suite depends on testFrameworkQuickcheck2, which depends on jailbreakCabal, which depends on Cabal: *BOOM* --- pkgs/top-level/haskell-defaults.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix index 59a94d4f4b3..e7e206e2266 100644 --- a/pkgs/top-level/haskell-defaults.nix +++ b/pkgs/top-level/haskell-defaults.nix @@ -52,7 +52,7 @@ cabalInstall_0_14_0 = self.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; }; cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; }; monadPar = self.monadPar_0_1_0_3; - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; + jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; }; ghc703Prefs = @@ -61,7 +61,7 @@ cabalInstall_0_14_0 = self.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; zlib = self.zlib_0_5_3_3; }; cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; zlib = self.zlib_0_5_3_3; }; monadPar = self.monadPar_0_1_0_3; - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; + jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; }; ghc702Prefs = ghc701Prefs; @@ -72,7 +72,7 @@ cabalInstall_0_14_0 = self.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; zlib = self.zlib_0_5_3_3; }; cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; zlib = self.zlib_0_5_3_3; }; monadPar = self.monadPar_0_1_0_3; - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; + jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; }; ghc6123Prefs = ghc6122Prefs; @@ -84,7 +84,7 @@ monadPar = self.monadPar_0_1_0_3; deepseq = self.deepseq_1_1_0_2; # deviating from Haskell platform here, to make some packages (notably statistics) compile - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; + jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; }; @@ -96,7 +96,7 @@ deepseq = self.deepseq_1_1_0_2; monadPar = self.monadPar_0_1_0_3; # deviating from Haskell platform here, to make some packages (notably statistics) compile - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; + jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; }; @@ -110,7 +110,7 @@ deepseq = self.deepseq_1_1_0_2; monadPar = self.monadPar_0_1_0_3; # deviating from Haskell platform here, to make some packages (notably statistics) compile - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.Cabal_1_14_0; }; + jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; }; From acd06b6ea0ec1f7e7824a4df148c984ede581d42 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 9 Mar 2013 13:11:48 +0100 Subject: [PATCH 279/407] haskell-shake: add version 0.9.1 --- .../libraries/haskell/shake/default.nix | 21 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/development/libraries/haskell/shake/default.nix diff --git a/pkgs/development/libraries/haskell/shake/default.nix b/pkgs/development/libraries/haskell/shake/default.nix new file mode 100644 index 00000000000..dd4f985e618 --- /dev/null +++ b/pkgs/development/libraries/haskell/shake/default.nix @@ -0,0 +1,21 @@ +{ cabal, binary, deepseq, filepath, hashable, random, time +, transformers, unorderedContainers +}: + +cabal.mkDerivation (self: { + pname = "shake"; + version = "0.9.1"; + sha256 = "19jpnf7794ii1v0rfafmcrs71flwz6hmz72ng529ll12iy64xwkv"; + isLibrary = true; + isExecutable = true; + buildDepends = [ + binary deepseq filepath hashable random time transformers + unorderedContainers + ]; + meta = { + homepage = "http://community.haskell.org/~ndm/shake/"; + description = "Build system library, like Make, but more accurate dependencies"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 110e19b72b3..8275aee4f52 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1653,6 +1653,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); SHA = callPackage ../development/libraries/haskell/SHA {}; + shake = callPackage ../development/libraries/haskell/shake {}; + shakespeare = callPackage ../development/libraries/haskell/shakespeare {}; shakespeareCss = callPackage ../development/libraries/haskell/shakespeare-css {}; From cf3ff172cd9d4b2f2ea743cbbf3920e076fb3c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 13:15:59 +0100 Subject: [PATCH 280/407] panotools: disabling tests due to strange failures --- pkgs/applications/graphics/panotools/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/graphics/panotools/default.nix b/pkgs/applications/graphics/panotools/default.nix index e71537f108a..17e1b2e8b14 100644 --- a/pkgs/applications/graphics/panotools/default.nix +++ b/pkgs/applications/graphics/panotools/default.nix @@ -10,7 +10,8 @@ stdenv.mkDerivation rec { buildInputs = [ perl libjpeg libpng libtiff ]; - doCheck = true; + # one of the tests succeeds on my machine but fails on Hydra (no idea why) + #doCheck = true; meta = { homepage = http://panotools.sourceforge.net/; From 87ec597ce795e1404a9e5d7b97e1a5d780e1b4d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 13:24:31 +0100 Subject: [PATCH 281/407] recutils: fix build with new glibc --- pkgs/tools/misc/recutils/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/tools/misc/recutils/default.nix b/pkgs/tools/misc/recutils/default.nix index 8e159f48b63..739fe8b801c 100644 --- a/pkgs/tools/misc/recutils/default.nix +++ b/pkgs/tools/misc/recutils/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "1v2xzwwwhc5j5kmvg4sv6baxjpsfqh8ln7ilv4mgb1408rs7xmky"; }; + patches = [ ./glibc.patch ]; + doCheck = true; buildInputs = [ curl emacs ] ++ (stdenv.lib.optionals doCheck [ check bc ]); From b494b3b4684c6631e841fa1c8e71048459d08a52 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 9 Mar 2013 15:02:44 +0400 Subject: [PATCH 282/407] Update lrzip --- pkgs/tools/compression/lrzip/default.nix | 14 ++++---------- pkgs/tools/compression/lrzip/default.upstream | 8 ++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 pkgs/tools/compression/lrzip/default.upstream diff --git a/pkgs/tools/compression/lrzip/default.nix b/pkgs/tools/compression/lrzip/default.nix index 35df411fd0f..23b516e32e4 100644 --- a/pkgs/tools/compression/lrzip/default.nix +++ b/pkgs/tools/compression/lrzip/default.nix @@ -1,26 +1,20 @@ {stdenv, fetchurl, zlib, lzo, bzip2, nasm, perl}: -let - md5fix = fetchurl { - url = "https://github.com/ckolivas/lrzip/commit/9430b6ff4a58adb69ef4cf74f1245fd5b3b313dd.patch"; - sha256 = "084x4wi3mamcxphzwf43iw287v1ylrk0xjghg6b5k6vgm9gkqlx8"; - }; -in stdenv.mkDerivation rec { - name = "lrzip-0.612"; + version = "0.614"; + name = "lrzip-${version}"; src = fetchurl { url = "http://ck.kolivas.org/apps/lrzip/${name}.tar.bz2"; - sha256 = "15rfqpc4xj7wbv117mr2g9npxnrlmqqj97mhxqfpy8360ys9yc1c"; + sha256 = "16i6mz2z6gx8xiva7zb0j78yvkwq1bjbdkl7w3i10195ll097ad8"; }; buildInputs = [ zlib lzo bzip2 nasm perl ]; - patches = [ md5fix ]; - meta = { homepage = http://ck.kolivas.org/apps/lrzip/; description = "The CK LRZIP compression program (LZMA + RZIP)"; license = "GPLv2+"; + inherit version; }; } diff --git a/pkgs/tools/compression/lrzip/default.upstream b/pkgs/tools/compression/lrzip/default.upstream new file mode 100644 index 00000000000..1b834598637 --- /dev/null +++ b/pkgs/tools/compression/lrzip/default.upstream @@ -0,0 +1,8 @@ +url http://ck.kolivas.org/apps/lrzip/ +version_link '[.]tar[.]bz2$' + +do_overwrite () { + ensure_hash + set_var_value version "$CURRENT_VERSION" + set_var_value sha256 "$CURRENT_HASH" +} From 5ec1806564f91eca4cb84d93babef63133d13be9 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 9 Mar 2013 16:30:22 +0400 Subject: [PATCH 283/407] Adding ZPAQ archiver --- .../upstream-updater/urls-from-page.sh | 2 +- pkgs/tools/archivers/zpaq/default.nix | 51 +++++++++++++++++++ pkgs/tools/archivers/zpaq/default.upstream | 3 ++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 pkgs/tools/archivers/zpaq/default.nix create mode 100644 pkgs/tools/archivers/zpaq/default.upstream diff --git a/pkgs/build-support/upstream-updater/urls-from-page.sh b/pkgs/build-support/upstream-updater/urls-from-page.sh index f1ddf0bfd88..3c494114e91 100755 --- a/pkgs/build-support/upstream-updater/urls-from-page.sh +++ b/pkgs/build-support/upstream-updater/urls-from-page.sh @@ -9,6 +9,6 @@ relpath="${path#$server}" echo "URL: $url" >&2 -curl -L -k "$url" | sed -re 's/^/-/;s/[hH][rR][eE][fF]="([^"]*)"/\n+\1\n-/g' | \ +curl -L -k "$url" | sed -re 's/^/-/;s/[hH][rR][eE][fF]=("([^"]*)"|([^" <>&]+)[ <>&])/\n+\2\3\n-/g' | \ sed -e '/^-/d; s/^[+]//; /^#/d;'"s/^\\//$protocol:\\/\\/$server\\//g" | \ sed -re 's`^[^:]*$`'"$protocol://$basepath/&\`" diff --git a/pkgs/tools/archivers/zpaq/default.nix b/pkgs/tools/archivers/zpaq/default.nix new file mode 100644 index 00000000000..2188668d3bf --- /dev/null +++ b/pkgs/tools/archivers/zpaq/default.nix @@ -0,0 +1,51 @@ +{stdenv, fetchurl, unzip}: +let + s = # Generated upstream information + rec { + baseName="zpaq"; + version="622"; + name="${baseName}-${version}"; + hash="19avac9spq5kgcgbixd9kvjhy9j0ga75izwqhif44h3jlzdydsmc"; + url="http://mattmahoney.net/dc/zpaq622.zip"; + sha256="19avac9spq5kgcgbixd9kvjhy9j0ga75izwqhif44h3jlzdydsmc"; + }; + buildInputs = [ + unzip + ]; + isUnix = stdenv.isLinux || stdenv.isGNU || stdenv.isDarwin || stdenv.isBSD; + isx86 = stdenv.isi686 || stdenv.isx86_64; + compileFlags = "" + + (stdenv.lib.optionalString isUnix " -Dunix -pthread ") + + (stdenv.lib.optionalString (!isx86) " -DNOJIT ") + + " -DNDEBUG " + + " -fPIC " + ; +in +stdenv.mkDerivation { + inherit (s) name version; + inherit buildInputs; + src = fetchurl { + inherit (s) url sha256; + }; + sourceRoot = "."; + buildPhase = '' + g++ -shared -O3 libzpaq.cpp divsufsort.c ${compileFlags} -o libzpaq.so + g++ -O3 -L. -L"$out/lib" -lzpaq zpaq.cpp -o zpaq + g++ -O3 -L. -L"$out/lib" -lzpaq zpaqd.cpp -o zpaqd + ''; + installPhase = '' + mkdir -p "$out"/{bin,include,lib,share/doc/zpaq} + cp libzpaq.so "$out/lib" + cp zpaq zpaqd "$out/bin" + cp libzpaq.h divsufsort.h "$out/include" + cp readme.txt "$out/share/doc/zpaq" + ''; + meta = { + inherit (s) version; + description = ''An archiver with backward compatibility of versions for decompression''; + license = stdenv.lib.licenses.gpl3Plus ; + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.linux; + homepage = "http://mattmahoney.net/dc/zpaq.html"; + }; +} diff --git a/pkgs/tools/archivers/zpaq/default.upstream b/pkgs/tools/archivers/zpaq/default.upstream new file mode 100644 index 00000000000..2d62f834647 --- /dev/null +++ b/pkgs/tools/archivers/zpaq/default.upstream @@ -0,0 +1,3 @@ +url http://mattmahoney.net/dc/zpaq.html +version_link "/zpaq[0-9]+[.]zip" +version "[^0-9]*([0-9]+)[^0-9]*" '\1' From 2e1dd8e0763939d8ebe169cc8581fa906cbb4f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 13:54:20 +0100 Subject: [PATCH 284/407] recutils: supply the forgotten patch --- pkgs/tools/misc/recutils/glibc.patch | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 pkgs/tools/misc/recutils/glibc.patch diff --git a/pkgs/tools/misc/recutils/glibc.patch b/pkgs/tools/misc/recutils/glibc.patch new file mode 100644 index 00000000000..8b4997f099d --- /dev/null +++ b/pkgs/tools/misc/recutils/glibc.patch @@ -0,0 +1,29 @@ +--- recutils-1.5/lib/stdio.in.h ++++ recutils-1.5/lib/stdio.in.h +@@ -699,22 +699,11 @@ + # endif + #endif + +-#if @GNULIB_GETS@ +-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ +-# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +-# undef gets +-# define gets rpl_gets +-# endif +-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1))); +-_GL_CXXALIAS_RPL (gets, char *, (char *s)); +-# else +-_GL_CXXALIAS_SYS (gets, char *, (char *s)); +-# undef gets +-# endif +-_GL_CXXALIASWARN (gets); + /* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + #endif + From 2f39e18b7f91d2189eb7b96f081d3bce67ea1998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 9 Mar 2013 13:56:26 +0100 Subject: [PATCH 285/407] ffmpeg: update 1.1 to 1.1.3 --- pkgs/development/libraries/ffmpeg/1.1.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/ffmpeg/1.1.nix b/pkgs/development/libraries/ffmpeg/1.1.nix index 7cb83db5e8d..100e3456ca4 100644 --- a/pkgs/development/libraries/ffmpeg/1.1.nix +++ b/pkgs/development/libraries/ffmpeg/1.1.nix @@ -25,7 +25,7 @@ assert faacSupport -> faac != null; assert x11grabSupport -> libXext != null && libXfixes != null; stdenv.mkDerivation rec { - name = "ffmpeg-1.1"; + name = "ffmpeg-1.1.3"; src = fetchurl { url = "http://www.ffmpeg.org/releases/${name}.tar.bz2"; From f5195531ae4a4bb9f50926804862bb6765ec0d3f Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 9 Mar 2013 16:36:37 +0400 Subject: [PATCH 286/407] Adding reference to ZPAQ in all-packages --- pkgs/top-level/all-packages.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8b4130dd75a..18d0e93220e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1871,6 +1871,8 @@ let zip = callPackage ../tools/archivers/zip { }; + zpaq = callPackage ../tools/archivers/zpaq { }; + zsync = callPackage ../tools/compression/zsync { }; From 241f94f59f4d2be212064c8fcd2aefbb4fd64877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=A6=D0=B0=D0=BC=D1=83=D1=82=D0=B0=D0=BB=D0=B8?= Date: Sat, 9 Mar 2013 17:54:03 +0400 Subject: [PATCH 287/407] applications/audio/caps: New nixpkg. --- pkgs/applications/audio/caps/default.nix | 29 ++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 31 insertions(+) create mode 100644 pkgs/applications/audio/caps/default.nix diff --git a/pkgs/applications/audio/caps/default.nix b/pkgs/applications/audio/caps/default.nix new file mode 100644 index 00000000000..81fb77c1c9a --- /dev/null +++ b/pkgs/applications/audio/caps/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl }: +stdenv.mkDerivation rec { + name = "caps-${version}"; + version = "0.9.7"; + src = fetchurl { + url = "http://www.quitte.de/dsp/caps_${version}.tar.bz2"; + sha256 = "0ks98r3j404s9h88x50lj5lj4l64ijj29fz5i08iyq8jrb7r0zm0"; + }; + configurePhase = '' + echo "PREFIX = $out" > defines.make + ''; + + meta = { + description = "A selection of LADSPA plugins implementing classic effects"; + longDescription = '' + The C* Audio Plugin Suite is a selection of classic effects, + unique filters and signal generators.  The digital guitarist + finds in CAPS a range of processors recreating key aspects of + the formation of tone in traditional electronic instrument + amplification.  Beyond sound quality, central design + considerations are latency-free realtime operation, modesty of + resource demands and meaningful control interfaces. + ''; + homepage = http://www.quitte.de/dsp/caps.html; + license = stdenv.lib.licenses.gpl3; + maintainers = [ stdenv.lib.maintainers.astsmtl ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 18d0e93220e..871c0e22824 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7313,6 +7313,8 @@ let fftw = fftwSinglePrec; }; + caps = callPackage ../applications/audio/caps { }; + lastwatch = callPackage ../applications/audio/lastwatch { }; lci = callPackage ../applications/science/logic/lci {}; From 03ba2960a44a23a5683ceac3bea30bf724792594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 14:54:43 +0100 Subject: [PATCH 288/407] vdrift: update and fix Tested on two laps :-) --- pkgs/development/libraries/bullet/default.nix | 19 +++++++++++-------- pkgs/games/vdrift/default.nix | 12 ++++++++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/pkgs/development/libraries/bullet/default.nix b/pkgs/development/libraries/bullet/default.nix index b725f6bbf9f..6320dd58e4c 100644 --- a/pkgs/development/libraries/bullet/default.nix +++ b/pkgs/development/libraries/bullet/default.nix @@ -1,14 +1,17 @@ -{stdenv, fetchurl, unzip, cmake}: +{ stdenv, fetchurl, cmake, mesa, freeglut }: -stdenv.mkDerivation { - name = "bullet-2.78"; +stdenv.mkDerivation rec { + name = "bullet-2.80"; # vdrift 2012-07-22 doesn't build with 2.81 + rev = "2531"; src = fetchurl { - url = "http://bullet.googlecode.com/files/bullet-2.78.zip"; - sha256 = "10l2dclvv0di9mi9qp6xfy9vybx182xp2dyygabacrpr3p75s77k"; + url = "http://bullet.googlecode.com/files/${name}-rev${rev}.tgz"; + sha256 = "0dig6k88jz5y0cz6dn186vc4l96l4v56zvwpsp5bv9f5wdwjskj6"; }; - buildInputs = [ unzip cmake ]; + + buildInputs = [ cmake mesa freeglut ]; configurePhase = '' - cmake -DBUILD_SHARED_LIBS=ON -DBUILD_EXTRAS=OFF -DBUILD_DEMOS=OFF . + cmake -DBUILD_SHARED_LIBS=ON -DBUILD_EXTRAS=OFF -DBUILD_DEMOS=OFF \ + -DCMAKE_INSTALL_PREFIX=$out . ''; meta = { @@ -19,6 +22,6 @@ stdenv.mkDerivation { ''; homepage = http://code.google.com/p/bullet/; license = stdenv.lib.licenses.zlib; - maintainers = [ "Alexander Foremny " ]; + maintainers = with stdenv.lib.maintainers; [ aforemny ]; }; } diff --git a/pkgs/games/vdrift/default.nix b/pkgs/games/vdrift/default.nix index 0f9da888382..63a8f508684 100644 --- a/pkgs/games/vdrift/default.nix +++ b/pkgs/games/vdrift/default.nix @@ -2,13 +2,21 @@ asio, boost, SDL_gfx, pkgconfig, bullet, curl, libarchive }: stdenv.mkDerivation rec { - name = "vdrift-2011-10-22"; + version = "2012-07-22"; + name = "vdrift-${version}"; + patch = "c"; # see https://github.com/VDrift/vdrift/issues/110 src = fetchurl { url = "mirror://sourceforge/vdrift/${name}.tar.bz2"; - sha256 = "0vg1v1590jbln6k236kxn2sfgclvc6g34kykhh4nq9q3l1xgy38s"; + sha256 = "1yqkc7y4s4g5ylw501bf0c03la7kfddjdk4yyi1xkcwy3pmgw2al"; }; + patches = fetchurl { + url = "mirror://sourceforge/vdrift/${name}${patch}_patch.diff"; + sha256 = "08mfg4xxkzyp6602cgqyjzc3rn0zsaa3ddjkpd44b83drv19lriy"; + }; + patchFlags = "-p0"; + buildInputs = [ scons mesa SDL freeglut SDL_image glew libvorbis asio boost SDL_gfx pkgconfig bullet curl libarchive ]; From 56b4a71c21c0a4c0d9ee747ce7a02555055c324e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 14:59:06 +0100 Subject: [PATCH 289/407] netpbm: update and attempt to fix i686 build --- pkgs/tools/graphics/netpbm/default.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pkgs/tools/graphics/netpbm/default.nix b/pkgs/tools/graphics/netpbm/default.nix index 06a89a1e2da..2af863e37bc 100644 --- a/pkgs/tools/graphics/netpbm/default.nix +++ b/pkgs/tools/graphics/netpbm/default.nix @@ -1,17 +1,18 @@ -{stdenv, fetchsvn, libjpeg, libpng, flex, zlib, perl, libxml2, makeWrapper }: +{stdenv, fetchsvn, pkgconfig, libjpeg, libpng, flex, zlib, perl, libxml2, makeWrapper, libX11 }: +let rev = 1742; in stdenv.mkDerivation { - name = "netpbm-advanced-1177"; + name = "netpbm-advanced-${toString rev}"; src = fetchsvn { url = https://netpbm.svn.sourceforge.net/svnroot/netpbm/advanced; - rev = 1656; - sha256 = "0mbrvd8nc52yrg8wgxcvxsajxc9qrnjqhlcks6dpdzq7qmwjy6g9"; + inherit rev; + sha256 = "0csx6g0ci66nx1a6z0a9dkpfp66mdvcpp5r7g6zrx4jp18r9hzb2"; }; - NIX_CFLAGS_COMPILE = if stdenv.system == "x86_64-linux" then "-fPIC" else ""; + NIX_CFLAGS_COMPILE = "-fPIC"; # Gentoo adds this on every platform - buildInputs = [ flex zlib perl libpng libjpeg libxml2 makeWrapper ]; + buildInputs = [ pkgconfig flex zlib perl libpng libjpeg libxml2 makeWrapper libX11 ]; configurePhase = "cp config.mk.in config.mk"; From a39f05f46a880da5a5c3350f7606b828c3858e63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=A6=D0=B0=D0=BC=D1=83=D1=82=D0=B0=D0=BB=D0=B8?= Date: Sat, 9 Mar 2013 18:02:35 +0400 Subject: [PATCH 290/407] applications/audio/jack-rack: New nixpkg. --- pkgs/applications/audio/jack-rack/default.nix | 23 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 25 insertions(+) create mode 100644 pkgs/applications/audio/jack-rack/default.nix diff --git a/pkgs/applications/audio/jack-rack/default.nix b/pkgs/applications/audio/jack-rack/default.nix new file mode 100644 index 00000000000..1d1128e663d --- /dev/null +++ b/pkgs/applications/audio/jack-rack/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, jackaudio, ladspaH, gtk, alsaLib, libxml2, librdf }: +stdenv.mkDerivation rec { + name = "jack-rack-1.4.7"; + src = fetchurl { + url = "mirror://sourceforge/jack-rack/${name}.tar.bz2"; + sha256 = "1lmibx9gicagcpcisacj6qhq6i08lkl5x8szysjqvbgpxl9qg045"; + }; + buildInputs = [ pkgconfig jackaudio ladspaH gtk alsaLib libxml2 librdf ]; + + meta = { + description = ''An effects "rack" for the JACK low latency audio API''; + longDescription = '' + JACK Rack is an effects "rack" for the JACK low latency audio + API. The rack can be filled with LADSPA effects plugins and can + be controlled using the ALSA sequencer. It's phat; it turns your + computer into an effects box. + ''; + homepage = http://jack-rack.sourceforge.net/; + license = stdenv.lib.licenses.gpl2Plus; + maintainers = [ stdenv.lib.maintainers.astsmtl ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 871c0e22824..80871cef38b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7269,6 +7269,8 @@ let jack_oscrolloscope = callPackage ../applications/audio/jack-oscrolloscope { }; + jack_rack = callPackage ../applications/audio/jack-rack { }; + jackmeter = callPackage ../applications/audio/jackmeter { }; jalv = callPackage ../applications/audio/jalv { }; From feff239bcb4fe2fcc1e55eff9c744e1bf0eeb6f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 4 Mar 2013 19:18:15 +0100 Subject: [PATCH 291/407] xfdesktop: minor update --- pkgs/desktops/xfce/core/xfdesktop.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/xfce/core/xfdesktop.nix b/pkgs/desktops/xfce/core/xfdesktop.nix index 4f287af6437..b106cccbf6d 100644 --- a/pkgs/desktops/xfce/core/xfdesktop.nix +++ b/pkgs/desktops/xfce/core/xfdesktop.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { p_name = "xfdesktop"; ver_maj = "4.10"; - ver_min = "0"; + ver_min = "1"; src = fetchurl { url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; - sha256 = "0yrddj1lgk3xn4w340y89z7x2isks72ia36pka08kk2x8gpfcyl9"; + sha256 = "1bfl2xzmci7vqwwz2k2gp7ykysjnq9dcwpnzkwbpv5hv3qwgx0r8"; }; name = "${p_name}-${ver_maj}.${ver_min}"; From 29442fd614a5c590dcb8a6d3656d107c7c2ee16b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 18:44:41 +0100 Subject: [PATCH 292/407] jbig2dec: fix download URI --- pkgs/development/libraries/jbig2dec/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/libraries/jbig2dec/default.nix b/pkgs/development/libraries/jbig2dec/default.nix index 60c6e9922a4..e15c5c8d179 100644 --- a/pkgs/development/libraries/jbig2dec/default.nix +++ b/pkgs/development/libraries/jbig2dec/default.nix @@ -1,13 +1,13 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchurl }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "jbig2dec-0.11"; - + src = fetchurl { - url = http://ghostscript.com/~giles/jbig2/jbig2dec/jbig2dec-0.11.tar.gz; - sha256 = "1ffhgmf2fqzk0h4k736pp06z7q5y4x41fg844bd6a9vgncq86bby"; + url = "mirror://sourceforge/jbig2dec/${name}.tar.xz"; + sha256 = "1xddc30garsg5j8p348cz5l8vn8j7723c0sykv0kc1w5ihaghsq1"; }; - + meta = { homepage = http://jbig2dec.sourceforge.net/; description = "Decoder implementation of the JBIG2 image compression format"; From 74d631502439ec4e17182e0e812eb030e729dc6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Sat, 9 Mar 2013 21:38:49 +0100 Subject: [PATCH 293/407] graphviz: fix vimdot program vimdot doesn't work at the moment because one of its dependencies, 'which', is missing; vimdot fails to find gvim or vim and aborts. Instead of adding a dependency on 'which', replace it with the POSIX command 'command -v'. --- pkgs/tools/graphics/graphviz/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/tools/graphics/graphviz/default.nix b/pkgs/tools/graphics/graphviz/default.nix index 96ae324b01f..a5d2d20968a 100644 --- a/pkgs/tools/graphics/graphviz/default.nix +++ b/pkgs/tools/graphics/graphviz/default.nix @@ -32,8 +32,10 @@ stdenv.mkDerivation rec { sed -e 's@am__append_5 *=.*@am_append_5 =@' -i lib/gvc/Makefile ''; + # "command -v" is POSIX, "which" is not postInstall = '' sed -i 's|`which lefty`|"'$out'/bin/lefty"|' $out/bin/dotty + sed -i 's|which|command -v|' $out/bin/vimdot ''; meta = { From b8339a1c1d6b973d9feb37c90cae157745d2804d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 22:30:06 +0100 Subject: [PATCH 294/407] xfce4-power-manager: update this forgotten package --- pkgs/desktops/xfce/core/xfce4-power-manager.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/desktops/xfce/core/xfce4-power-manager.nix b/pkgs/desktops/xfce/core/xfce4-power-manager.nix index 7a9b2596e75..1e77ba39f8f 100644 --- a/pkgs/desktops/xfce/core/xfce4-power-manager.nix +++ b/pkgs/desktops/xfce/core/xfce4-power-manager.nix @@ -3,12 +3,12 @@ stdenv.mkDerivation rec { p_name = "xfce4-power-manager"; - ver_maj = "1.0"; - ver_min = "10"; + ver_maj = "1.2"; + ver_min = "0"; src = fetchurl { url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; - sha256 = "1w120k1sl4s459ijaxkqkba6g1p2sqrf9paljv05wj0wz12bpr40"; + sha256 = "1sc4f4wci5yl3l9lk7vcsbwj6hdjshbxw9qm43s64jr882jriyyp"; }; name = "${p_name}-${ver_maj}.${ver_min}"; From 4c9ebb62d46b1d803297b8b94a96b291f3f4265d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 9 Mar 2013 23:57:57 +0100 Subject: [PATCH 295/407] git: link binaries with libgcc_s.so to ensure pthread_cancel() works --- .../version-management/git-and-tools/git/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix index 2f293c317d3..e96f31c0690 100644 --- a/pkgs/applications/version-management/git-and-tools/git/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git/default.nix @@ -31,6 +31,9 @@ stdenv.mkDerivation { docbook_xsl docbook_xml_dtd_45 libxslt ] ++ stdenv.lib.optionals guiSupport [tcl tk]; + # required to support pthread_cancel() + NIX_LDFLAGS = "-lgcc_s"; + makeFlags = "prefix=\${out} PERL_PATH=${perl}/bin/perl SHELL_PATH=${stdenv.shell} " + (if pythonSupport then "PYTHON_PATH=${python}/bin/python" else "NO_PYTHON=1"); From 35f59257db25be14195de935f6620f6e00400d25 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 296/407] haskell-blaze-html: update to version 0.6.1.1 --- pkgs/development/libraries/haskell/blaze-html/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/blaze-html/default.nix b/pkgs/development/libraries/haskell/blaze-html/default.nix index 2063e3a862d..ec21e3fcd84 100644 --- a/pkgs/development/libraries/haskell/blaze-html/default.nix +++ b/pkgs/development/libraries/haskell/blaze-html/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "blaze-html"; - version = "0.6.1.0"; - sha256 = "1y2z2md62kpl57qcvwvswmrjq7zhkqwfv8zr2acdvcxcxnyc47fm"; + version = "0.6.1.1"; + sha256 = "08zfmkvahmm613r0nrabwl5zv9ragcrhdqsa8jfdrfdkrf6ckbrc"; buildDepends = [ blazeBuilder blazeMarkup text ]; testDepends = [ blazeBuilder blazeMarkup HUnit QuickCheck testFramework From a71fff4364404df8209f763f0610d52f610eda36 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 297/407] haskell-blaze-markup: update to version 0.5.1.5 --- pkgs/development/libraries/haskell/blaze-markup/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/blaze-markup/default.nix b/pkgs/development/libraries/haskell/blaze-markup/default.nix index afd607fe5e8..0c544119d5f 100644 --- a/pkgs/development/libraries/haskell/blaze-markup/default.nix +++ b/pkgs/development/libraries/haskell/blaze-markup/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "blaze-markup"; - version = "0.5.1.4"; - sha256 = "0g316qhk7yv6y680w93613apfhm458a01g3jmq42yv4ndydkv4rr"; + version = "0.5.1.5"; + sha256 = "0g3smm1ym7h45bkzx94b77ssyg0z0gqfwbnap3ywa2381rb39l74"; buildDepends = [ blazeBuilder text ]; testDepends = [ blazeBuilder HUnit QuickCheck testFramework testFrameworkHunit From 119bf8ef28ea475c73f53a0278db84cc6cd78abb Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 298/407] haskell-citeproc-hs: update to version 0.3.8 --- pkgs/development/libraries/haskell/citeproc-hs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/citeproc-hs/default.nix b/pkgs/development/libraries/haskell/citeproc-hs/default.nix index b62714749e3..2c68fd24d1f 100644 --- a/pkgs/development/libraries/haskell/citeproc-hs/default.nix +++ b/pkgs/development/libraries/haskell/citeproc-hs/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "citeproc-hs"; - version = "0.3.7"; - sha256 = "0ix9y7z8m8x4l10h96fgv820grywvwcp3019wxjja4y4w6irid3b"; + version = "0.3.8"; + sha256 = "0wlfwjxg852qcgx54m99xm7hxsmcw8c8r7fyrsxyxl3054xnfwz8"; buildDepends = [ filepath hexpat hsBibutils HTTP json mtl network pandocTypes parsec syb time utf8String From 6042de5fae0335bd19ebb8f104dd96bce02cd195 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 299/407] haskell-distributive: update to version 0.3.1 --- pkgs/development/libraries/haskell/distributive/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/distributive/default.nix b/pkgs/development/libraries/haskell/distributive/default.nix index bd8b64aa509..d40952024ef 100644 --- a/pkgs/development/libraries/haskell/distributive/default.nix +++ b/pkgs/development/libraries/haskell/distributive/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "distributive"; - version = "0.3"; - sha256 = "0z6vwak2n91vpx9ps9j1pbiw0zlh9jmds84yx1yqssbqx8npi32f"; + version = "0.3.1"; + sha256 = "0zf3wq1xz9sbb0g6fg852jckrwkffsfkghq3zx03d2q9ginc6jbc"; buildDepends = [ transformers transformersCompat ]; testDepends = [ doctest filepath ]; meta = { From 126100e7a9b7b23d7d63f224a5d02de9ebe8499f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 300/407] haskell-gitit: update to version 0.10.3 --- pkgs/development/libraries/haskell/gitit/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/gitit/default.nix b/pkgs/development/libraries/haskell/gitit/default.nix index b38774cd02b..1c7dfdd10e1 100644 --- a/pkgs/development/libraries/haskell/gitit/default.nix +++ b/pkgs/development/libraries/haskell/gitit/default.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { pname = "gitit"; - version = "0.10.2"; - sha256 = "07zdc1qx429rmisb39gdamwn9b1jblvjg7py4fcxx3qj01b6mvxx"; + version = "0.10.3"; + sha256 = "1hz4ddym2vn01nd22gb995dya48fzc7nsmsqywdc8hjczmn93qyg"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -18,7 +18,6 @@ cabal.mkDerivation (self: { safe SHA syb tagsoup text time url utf8String xhtml xml xssSanitize zlib ]; - jailbreak = true; meta = { homepage = "http://gitit.net"; description = "Wiki using happstack, git or darcs, and pandoc"; From 9f90185d420743c9ea33fccfa9b0095cb664b4a8 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 301/407] haskell-hakyll: update to version 4.2.1.1 --- pkgs/development/libraries/haskell/hakyll/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix index eb27fde823f..86b70bfed52 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { pname = "hakyll"; - version = "4.2.1.0"; - sha256 = "05w5j8wc47j8g4x2lsm0zs3aspb4rjvgnrxbjlxps0mfz3csqfhh"; + version = "4.2.1.1"; + sha256 = "072fl5k8fwmrx1rwb964cz0kn1hcyda13l597mqdmdi2ky5s5hf0"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -19,9 +19,10 @@ cabal.mkDerivation (self: { testDepends = [ binary blazeHtml blazeMarkup citeprocHs cmdargs cryptohash deepseq filepath httpConduit httpTypes HUnit lrucache mtl pandoc parsec - QuickCheck random regexBase regexTdfa tagsoup testFramework - testFrameworkHunit testFrameworkQuickcheck2 text time + QuickCheck random regexBase regexTdfa snapCore snapServer tagsoup + testFramework testFrameworkHunit testFrameworkQuickcheck2 text time ]; + patchPhase = "sed -i -e 's|pandoc.*,|pandoc,|' hakyll.cabal"; doCheck = false; meta = { homepage = "http://jaspervdj.be/hakyll"; From dd230dee8084d4bfe6a3fb770dadddd4efb6c329 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 302/407] haskell-haskell-src-meta: update to version 0.6.0.2 --- .../libraries/haskell/haskell-src-meta/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/haskell-src-meta/default.nix b/pkgs/development/libraries/haskell/haskell-src-meta/default.nix index 1d9bba47b4b..7b6ccb69633 100644 --- a/pkgs/development/libraries/haskell/haskell-src-meta/default.nix +++ b/pkgs/development/libraries/haskell/haskell-src-meta/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "haskell-src-meta"; - version = "0.6.0.1"; - sha256 = "181xjajvppipzgknmbhbb1i2r8rimbr5vzn6gf1ksddgw12sargd"; + version = "0.6.0.2"; + sha256 = "1msqnsavghsc5bil3mm9swpi9a54pki4162jdfwwvlzvdmfvk9hp"; buildDepends = [ haskellSrcExts syb thOrphans uniplate ]; meta = { description = "Parse source to template-haskell abstract syntax"; From 5cd47b2c18c540fc9d5614aeb417f3dca94b6a6a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 303/407] haskell-pandoc: update to version 1.11 --- .../libraries/haskell/pandoc/default.nix | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/pkgs/development/libraries/haskell/pandoc/default.nix b/pkgs/development/libraries/haskell/pandoc/default.nix index 93f7e8add42..184e3fd9536 100644 --- a/pkgs/development/libraries/haskell/pandoc/default.nix +++ b/pkgs/development/libraries/haskell/pandoc/default.nix @@ -1,13 +1,15 @@ -{ cabal, base64Bytestring, blazeHtml, blazeMarkup, citeprocHs -, dataDefault, extensibleExceptions, filepath, highlightingKate -, HTTP, json, mtl, network, pandocTypes, parsec, random, syb -, tagsoup, temporary, texmath, text, time, xml, zipArchive, zlib +{ cabal, ansiTerminal, base64Bytestring, blazeHtml, blazeMarkup +, citeprocHs, dataDefault, Diff, extensibleExceptions, filepath +, highlightingKate, HTTP, HUnit, json, mtl, network, pandocTypes +, parsec, QuickCheck, random, syb, tagsoup, temporary +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +, texmath, text, time, xml, zipArchive, zlib }: cabal.mkDerivation (self: { pname = "pandoc"; - version = "1.10.1"; - sha256 = "127pxs1w99nr6hdancaajm20w3vgmch4xlj0v7221y7i9qcr1y1y"; + version = "1.11"; + sha256 = "1v32z6fmfkllwf5y64sjbk3ckss2kfcs71b64a7fjdhp82m4i4yh"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -16,10 +18,13 @@ cabal.mkDerivation (self: { network pandocTypes parsec random syb tagsoup temporary texmath text time xml zipArchive zlib ]; + testDepends = [ + ansiTerminal Diff filepath highlightingKate HUnit pandocTypes + QuickCheck syb testFramework testFrameworkHunit + testFrameworkQuickcheck2 text + ]; configureFlags = "-fblaze_html_0_5"; - patchPhase = '' - sed -r -i -e 's|blaze-html >= 0.5 && < 0.6,|blaze-html >= 0.5,|' pandoc.cabal - ''; + patchPhase = "sed -i -e 's|QuickCheck >= 2.4 && < 2.6,|QuickCheck,|' pandoc.cabal"; doCheck = false; meta = { homepage = "http://johnmacfarlane.net/pandoc"; From 87eaefbe6f02c2ca7bf3462e92be71072887b87d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 304/407] haskell-publicsuffixlist: update to version 0.0.4 --- .../libraries/haskell/publicsuffixlist/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/publicsuffixlist/default.nix b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix index 1f38962ddd3..a091b62b3b1 100644 --- a/pkgs/development/libraries/haskell/publicsuffixlist/default.nix +++ b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "publicsuffixlist"; - version = "0.0.3"; - sha256 = "1drsm1zp30629rzy0693ggzcx46b7ydzzafmf07mjanmn1kyyqci"; + version = "0.0.4"; + sha256 = "0qwx2739pmmjfy6w3iri1fgyin3295vzn6rvazh34qd89i5vi3pb"; buildDepends = [ cereal dataDefault text utf8String ]; testDepends = [ cereal dataDefault HUnit idna text utf8String ]; meta = { From 29dac4ea3989245270fdf7c4f060418ab6015118 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 305/407] haskell-stylish-haskell: update to version 0.5.6.1 --- .../development/libraries/haskell/stylish-haskell/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/stylish-haskell/default.nix b/pkgs/development/libraries/haskell/stylish-haskell/default.nix index 18105124962..1d2cea756ff 100644 --- a/pkgs/development/libraries/haskell/stylish-haskell/default.nix +++ b/pkgs/development/libraries/haskell/stylish-haskell/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "stylish-haskell"; - version = "0.5.6.0"; - sha256 = "1cy40b7csna3fwq0bm5mx9d09x52vj517mf38yn8ymd0afff67sb"; + version = "0.5.6.1"; + sha256 = "0fxncnl9bvb7qjha3r06qli9qlzfljism6k688hrr9y6l06jdc2c"; isLibrary = true; isExecutable = true; buildDepends = [ From 3dcc961cffe1dc260f715d32fd96f0a35b9c4e71 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 306/407] haskell-void: update to version 0.5.12 --- pkgs/development/libraries/haskell/void/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/void/default.nix b/pkgs/development/libraries/haskell/void/default.nix index cdf21c78233..91b641c5f9a 100644 --- a/pkgs/development/libraries/haskell/void/default.nix +++ b/pkgs/development/libraries/haskell/void/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "void"; - version = "0.5.11"; - sha256 = "0fi8ccnhg0ckz5v3cgxhdd67p0v3g9yawin917ik4vxfbwz5j3v6"; + version = "0.5.12"; + sha256 = "03fqcap94saj7mx3y4pvvfj4z8dy6rsk2kvhgbnk2wvz5xm7xvci"; buildDepends = [ semigroups ]; meta = { homepage = "http://github.com/ekmett/void"; From 7a36e6fa03700ed75f70b1349c68a4e66f4a8ebe Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 307/407] haskell-wl-pprint-extras: update to version 3.4 --- .../libraries/haskell/wl-pprint-extras/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/wl-pprint-extras/default.nix b/pkgs/development/libraries/haskell/wl-pprint-extras/default.nix index 18adfb1cd60..77670b4f117 100644 --- a/pkgs/development/libraries/haskell/wl-pprint-extras/default.nix +++ b/pkgs/development/libraries/haskell/wl-pprint-extras/default.nix @@ -1,10 +1,10 @@ -{ cabal, nats, semigroupoids, semigroups, utf8String }: +{ cabal, nats, semigroupoids, semigroups, text, utf8String }: cabal.mkDerivation (self: { pname = "wl-pprint-extras"; - version = "3.3"; - sha256 = "1q3wiw62k53yl9ny9l54b281zprrnshw94pd52rlcxbw9cgj8xzx"; - buildDepends = [ nats semigroupoids semigroups utf8String ]; + version = "3.4"; + sha256 = "17vxyckx2pj4sc2d1yw1rcsxn1rp4nzdjp0hgpy78xsp9plccgsy"; + buildDepends = [ nats semigroupoids semigroups text utf8String ]; meta = { homepage = "http://github.com/ekmett/wl-pprint-extras/"; description = "A free monad based on the Wadler/Leijen pretty printer"; From 4e494d0722c3bd9225b6be60bdf991cb86bc8a66 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 308/407] haskell-wl-pprint-terminfo: update to version 3.6 --- .../libraries/haskell/wl-pprint-terminfo/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix b/pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix index 0cb626016d4..d2bd35eebd4 100644 --- a/pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix +++ b/pkgs/development/libraries/haskell/wl-pprint-terminfo/default.nix @@ -1,12 +1,13 @@ -{ cabal, nats, semigroups, terminfo, transformers, wlPprintExtras +{ cabal, nats, semigroups, terminfo, text, transformers +, wlPprintExtras }: cabal.mkDerivation (self: { pname = "wl-pprint-terminfo"; - version = "3.4"; - sha256 = "1wnlm74fwcn171a533bv15bvlhabrzh192wabala0wyvwgl8hwzk"; + version = "3.6"; + sha256 = "14dq0inv6i8pwjzrpys420iwi6002mard1n73z96k89zq5xhwlbg"; buildDepends = [ - nats semigroups terminfo transformers wlPprintExtras + nats semigroups terminfo text transformers wlPprintExtras ]; meta = { homepage = "http://github.com/ekmett/wl-pprint-terminfo/"; From 83bd0eec4777762a43a4f5634a5d986fa56f69e3 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:26:26 +0100 Subject: [PATCH 309/407] haskell-yst: update to version 0.3.1.1 --- pkgs/development/libraries/haskell/yst/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yst/default.nix b/pkgs/development/libraries/haskell/yst/default.nix index 5087bfce12c..d194b1970c8 100644 --- a/pkgs/development/libraries/haskell/yst/default.nix +++ b/pkgs/development/libraries/haskell/yst/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "yst"; - version = "0.3.1"; - sha256 = "1ax3j21b4ac9x4vvvfgnhz0sczd7l7ia6mcxnqhbc3166sn91vig"; + version = "0.3.1.1"; + sha256 = "1wc2s5aan4rqdrpqgqvka5pqm3d691si5hdf0m0wpi2hzkwl3qv3"; isLibrary = false; isExecutable = true; buildDepends = [ From 8cc83593519e30572d340b9e3b57f84479bfa323 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:32:32 +0100 Subject: [PATCH 310/407] haskell-doctest: re-generate expression with recent version of cabal2nix --- pkgs/development/libraries/haskell/doctest/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix index fd9728f4fb8..ce418a8d053 100644 --- a/pkgs/development/libraries/haskell/doctest/default.nix +++ b/pkgs/development/libraries/haskell/doctest/default.nix @@ -13,8 +13,8 @@ cabal.mkDerivation (self: { baseCompat deepseq filepath ghcPaths hspec HUnit QuickCheck setenv silently stringbuilder syb transformers ]; - doCheck = false; jailbreak = true; + doCheck = false; meta = { homepage = "https://github.com/sol/doctest-haskell#readme"; description = "Test interactive Haskell examples"; From f59aaaed4bf9caa327eb1ccd224aec1693c7553a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 10 Mar 2013 00:43:08 +0100 Subject: [PATCH 311/407] smartmontools: update drivedb.h to the latest version --- pkgs/tools/system/smartmontools/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/system/smartmontools/default.nix b/pkgs/tools/system/smartmontools/default.nix index 7a37e1200b4..1e310ce6c43 100644 --- a/pkgs/tools/system/smartmontools/default.nix +++ b/pkgs/tools/system/smartmontools/default.nix @@ -2,8 +2,8 @@ let driverdb = fetchurl { - url = "http://smartmontools.svn.sourceforge.net/viewvc/smartmontools/trunk/smartmontools/drivedb.h?revision=3742"; - sha256 = "04xsgxzc1mqn9szazyr6v3xcpw0pszi8vz7xcsb661rww5482rw0"; + url = "http://smartmontools.svn.sourceforge.net/viewvc/smartmontools/trunk/smartmontools/drivedb.h?revision=3781"; + sha256 = "0m39ji2kf80dsws5ksg2pmkpn8x00lrlvl5nlc6ldjfss7sjvc9x"; name = "smartmontools-drivedb.h"; }; in From 54e0fe3ec144daa84c4ae99d6d861519d8834c62 Mon Sep 17 00:00:00 2001 From: Andres Loeh Date: Sun, 10 Mar 2013 21:14:45 +0100 Subject: [PATCH 312/407] ghc: update HEAD snapshot --- pkgs/development/compilers/ghc/head.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index 376033fe239..157b25779b3 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, ghc, perl, gmp, ncurses }: stdenv.mkDerivation rec { - version = "7.7.20121213"; + version = "7.7.20130223"; name = "ghc-${version}"; src = fetchurl { url = "http://haskell.org/ghc/dist/current/dist/${name}-src.tar.bz2"; - sha256 = "0z9ld6271jzv3mx02vqaakirj79pm2vzxnv5a178r6v874qbzx3p"; + sha256 = "1naw6x1mjij10h9k4biard2pkzi6zml26vv4h34asprv0h6ymdbg"; }; buildInputs = [ ghc perl gmp ncurses ]; From 859c7dfae8d9d89405861fcbcc6446ecd3381208 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Sun, 10 Mar 2013 21:17:17 +0100 Subject: [PATCH 313/407] msmtp: Update to 1.4.30, added optional libraries as dependency and point to correct license --- .../applications/networking/msmtp/default.nix | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/networking/msmtp/default.nix b/pkgs/applications/networking/msmtp/default.nix index 098d06bd077..bf0ca68177b 100644 --- a/pkgs/applications/networking/msmtp/default.nix +++ b/pkgs/applications/networking/msmtp/default.nix @@ -1,17 +1,18 @@ -{stdenv, fetchurl, openssl}: -stdenv.mkDerivation { - name = "msmtp-1.4.21"; +{ stdenv, fetchurl, openssl, pkgconfig, gnutls, gsasl, libidn }: +stdenv.mkDerivation rec { + name = "msmtp-1.4.30"; src = fetchurl { - url = mirror://sourceforge/msmtp/msmtp-1.4.21.tar.bz2; - sha256 = "1yjgy56n02qs25728psg296amhbdkxq2pv1q3l484f3r9pjrpcrg"; + url = "mirror://sourceforge/msmtp/${name}.tar.bz2"; + sha256 = "11lq82byx9xyfkf4nrcfjjfv5k8gk3bf8zlw0kml1qrndqlvjlpi"; }; - buildInputs = [ openssl ]; + buildInputs = [ openssl pkgconfig gnutls gsasl libidn ]; - meta = { + meta = { description = "a MUA"; - homepage = http://msmtp.sourceforge.net/; - license = "GPL"; - }; + homepage = "http://msmtp.sourceforge.net/"; + license = stdenv.lib.licenses.gpl3; + maintainers = [ stdenv.lib.maintainers.garbas ]; + }; } From feb063cbdc3ba460b6a94b284bf7551336cbdcc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 10 Mar 2013 22:58:32 +0100 Subject: [PATCH 314/407] xfce.xfdesktop: regression-fix release --- pkgs/desktops/xfce/core/xfdesktop.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/xfce/core/xfdesktop.nix b/pkgs/desktops/xfce/core/xfdesktop.nix index b106cccbf6d..8067e1841ca 100644 --- a/pkgs/desktops/xfce/core/xfdesktop.nix +++ b/pkgs/desktops/xfce/core/xfdesktop.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { p_name = "xfdesktop"; ver_maj = "4.10"; - ver_min = "1"; + ver_min = "2"; src = fetchurl { url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; - sha256 = "1bfl2xzmci7vqwwz2k2gp7ykysjnq9dcwpnzkwbpv5hv3qwgx0r8"; + sha256 = "0zbrvfj4fxnjz593brxjsjy9pv5bbf12jnbydy4pwc1ya6zf19j9"; }; name = "${p_name}-${ver_maj}.${ver_min}"; From 5e3e07293ff80f07304e64ebf3c11e61820e4bea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 10 Mar 2013 23:58:46 +0100 Subject: [PATCH 315/407] Updating glibc locales and info to 2.17 too. --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 80871cef38b..c642a238a65 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3744,9 +3744,9 @@ let installLocales = config.glibc.locales or false; }; - glibcLocales = callPackage ../development/libraries/glibc/2.13/locales.nix { }; + glibcLocales = callPackage ../development/libraries/glibc/2.17/locales.nix { }; - glibcInfo = callPackage ../development/libraries/glibc/2.13/info.nix { }; + glibcInfo = callPackage ../development/libraries/glibc/2.17/info.nix { }; glibc_multi = runCommand "${glibc.name}-multi" From 1c861818578cf221c4b9ccb35164871b00d9b235 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sun, 10 Mar 2013 19:47:59 -0400 Subject: [PATCH 316/407] glibc-2.17: Don't link to stdenv.lib.gcc if it's null. This fixes the tarball Signed-off-by: Shea Levy --- pkgs/development/libraries/glibc/2.17/common.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/glibc/2.17/common.nix b/pkgs/development/libraries/glibc/2.17/common.nix index ea2f3b6d140..3006ff49013 100644 --- a/pkgs/development/libraries/glibc/2.17/common.nix +++ b/pkgs/development/libraries/glibc/2.17/common.nix @@ -143,7 +143,9 @@ stdenv.mkDerivation ({ configureScript="`pwd`/../$sourceRoot/configure" - makeFlags="$makeFlags BUILD_LDFLAGS=-Wl,-rpath,${stdenv.gcc.libc}/lib" + ${stdenv.lib.optionalString (stdenv.gcc.libc != null) + ''makeFlags="$makeFlags BUILD_LDFLAGS=-Wl,-rpath,${stdenv.gcc.libc}/lib"'' + } ${preConfigure} ''; From c94595f13b24dcde98688134cb29d4b0b06602ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 11 Mar 2013 09:41:55 +0100 Subject: [PATCH 317/407] Fixing tarball build (failure evaluating glibcInfo in powerpc-linux) --- pkgs/development/libraries/glibc/2.17/common.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/glibc/2.17/common.nix b/pkgs/development/libraries/glibc/2.17/common.nix index 3006ff49013..45d2c6f38e6 100644 --- a/pkgs/development/libraries/glibc/2.17/common.nix +++ b/pkgs/development/libraries/glibc/2.17/common.nix @@ -16,6 +16,7 @@ let in +assert stdenv.gcc != null; assert cross != null -> gccCross != null; assert mig != null -> machHeaders != null; assert machHeaders != null -> hurdHeaders != null; From 3ac299934d41de9e9e7afd29920ec8c7e89036f6 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Mon, 11 Mar 2013 02:31:51 -0700 Subject: [PATCH 318/407] enable 802.11n by default. --- pkgs/os-specific/linux/hostapd/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/hostapd/default.nix b/pkgs/os-specific/linux/hostapd/default.nix index f13a1033f8b..b8e5055f056 100644 --- a/pkgs/os-specific/linux/hostapd/default.nix +++ b/pkgs/os-specific/linux/hostapd/default.nix @@ -16,6 +16,7 @@ stdenv.mkDerivation rec { substituteInPlace Makefile --replace "/usr/local/bin" "$out/bin" mv defconfig .config echo CONFIG_LIBNL32=y | tee -a .config + echo CONFIG_IEEE80211N=y | tee -a .config export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags libnl-3.0)" ''; preInstall = "mkdir -p $out/bin"; @@ -27,4 +28,4 @@ stdenv.mkDerivation rec { maintainers = [ maintainers.phreedom ]; platforms = platforms.linux; }; -} \ No newline at end of file +} From 4610d8b81ab1917ffb155b090b05020967d09a8d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 10:47:04 +0100 Subject: [PATCH 319/407] jhc: enable Hydra build on Linux --- pkgs/development/compilers/jhc/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/jhc/default.nix b/pkgs/development/compilers/jhc/default.nix index 4b4d85df890..d36c8c2755a 100644 --- a/pkgs/development/compilers/jhc/default.nix +++ b/pkgs/development/compilers/jhc/default.nix @@ -1,4 +1,4 @@ -{ +{ stdenv, fetchurl, perl, ghc, binary, zlib, utf8String, readline, fgl, regexCompat, HsSyck, random }: @@ -19,11 +19,12 @@ stdenv.mkDerivation rec { ]; meta = { - description = '' - A Haskell compiler which aims to produce the most efficient programs - ''; + homepage = "http://repetae.net/computer/jhc/"; + description = "A Haskell compiler which aims to produce the most efficient programs"; license = stdenv.lib.licenses.gpl2; - maintainers = [ stdenv.lib.maintainers.aforemny ]; + + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.aforemny stdenv.lib.maintainers.simons ]; }; } From 746bf427a880a38f8f3877120e2aa1d0339a1f89 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:00:00 +0100 Subject: [PATCH 320/407] pkgs/tools/networking/snx/snx_install.sh: delete file accidentally checked in earlier --- pkgs/tools/networking/snx/snx_install.sh | Bin 965717 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 pkgs/tools/networking/snx/snx_install.sh diff --git a/pkgs/tools/networking/snx/snx_install.sh b/pkgs/tools/networking/snx/snx_install.sh deleted file mode 100755 index 759f870468d7ae3a5686eaee85d6cbdee02010a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965717 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

lqj=l<-58iCRa%!x)J*w&&v1hGX_6bqjq5 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

@~OwRNJNEiTyce4B3=uTVN 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

#(HvS3xAt{49 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%0A~zFGp?c>5p^#r+^4Y$s4g zF%XmkUgE1uaZe9qui~sJR^?~(7{Q1rA}TOOL=X^RgCgS3=z5G*+B5#!J6g0b zh=_RNp^u5d0f43b2>;?}4jla*ccthcwoHH%P*Q;&}BzEX2DiVc}B#~fj&cX8Vcjvry`BmWWZm#;chPsDcRj!viBP?y@W_4Y24acJe z5jM!_BS?*#P446ABq5Z=+9Hxk6g}*h9t~FCUa_2@ zw>8J_Cue_M&2zK4>I}2v3Z3eoDm9lm)7p9JuJ-NCrxnV;2}rBB2JM2Omfb$O?W20? z>rf^T9LjhYE+^JP^5I;D&snkc{Er9yVYTx6jJC&2ZSTX+lo1%a%TuRYLm68um2XR< z!L{UW_n)t}s@J@^>#tS2ECz$YS%1ek!AVI$(SNMeW9iSKGBdb18uku@i*4voID0=( z(|--KFJE~%m7X&w@C?IP#(dW5hWO9PGYnOgl8H>jr67v?TZ_rXwdc%!EYByT^T*07 zKe%P78E;-?qjcwlW_(Q^i#3C#eQl&yCEuZJAJ!YrZn3``aq+5jWFjj62VcD3H(gwt z@DF{~ZTJkkowhm1+9GF&P|}VWj51g~ZT8Ny4MvE;;SX@{wCsIs*H$+?&(bY&Pk05s z_I~@9w#6d)&dV;nT(!=9_p#Tv?e#-uG5iI(3Vu!YX+&qAJB*Cd_*t;t|O4t=`cU`n@>P89PVa68Kxh{d(NIy z56R&v$@n63wd~bIg||apE+(G=TKf(EeH+EAAd9E+1uv6gp9+S!`!p?1ef}|K=aXnj z%HvhOo;J6kY|Jy!Zm+r*3rtOh|IFO`;JIy9U7RlIc{J&XMbCEi5YgCtq~K+of9@)u zU&Zf}z@Y9mwYW4qV#>*XeCu@7QK&w55qOhTwR*PWWHVh)zCX8H_op$or@dGHE!;;w zUp+zgm#ls1E`}ns0hF>Kz~O%XavXXX+i$8{V=v7t20Z$0qBc%f!Ul`AIhtLQ26!Iu6cERjF@;Yk0(`z&V9b!WTWy*_y<}=5smG6*jya7S*1}e(A;S@ z9lz%x0iHwLg3a@$_dTLYUfD%z2g0I(oCzqaoUG)quHUAgg z$lEb*gRZ_iEzq)HK0B{AxrO>aaRsvdydhT63#9YzHgVi6mT4Wf%aL}r^t3OswuTp7 zthOPt>tl6;7;aW|Mq-B%YhA3-wr_nn=r1PeZx?fk{OgTpsI}ldo%-$d&H~fS;CbeB z-NpG{sKc)fn(9Qk=QrDZa+cd0Z)nLU(KBTD+M*m0O@QJh)DOmtUpC>!=a8{orspY_3mT?Am&KnhhI&0UHN! zckk9h6n6Z3bjaIWIv!+RTiGnsm^nR|m~zA}+~}DwY?l1z3hd~*O3_~Gbt-9ad5xxH zr2j+a*k3-kIRDyLtp9(}9;MHp9i5=<)Y&djy6!N(z`?kD@K%`(bP&>-sOSP_$mjI; zd=ML}6~?axf$8yVb8WL)&V9M9MROnX&4F- ze{5_p|H}62dq1U4q1b80nd0skghvp186RyEXNuD@DHSakT{dYPuDisdiSueCRP@|$ z%rF}5B0FLE?!#O&8kZa#)tMQ+I=JPM#>+kf9-FruK$$S@< zmn=4x+Q=;vpS{-YTUyATy+qAMYZYwPGIU-yt(tWoM$5N2^>p3q!mVaYIOP1<)z$PM zjSc2@;yX6mT|=!m;;oL3`zYF4mlQhIJIT3NW*1ekGrG)Mw+f1JA5y3KuVhzynuv|S z19m^MPHuot;Ic3s69aGmnlu5dXY$Zk4RiwF{e5-msH~Kk!r8;r*!7XYA>=&(MByIN z0Sw6;$n{(M$k;xMP-#?TNd>JFG*FpaZb1v3Mavc64wmM{J{zngvRN6g0s1!@HC;eq zApGf7{3}=)^fpG@6NX~*fR%&m3?YYn3yxy>wC~oSov)i5ANmt4h^!_YAh8EvA;vbw7gxbdHDL@M*kIiYv2C=lzn?9rQcic@wt5SG(P`e9x&zwbmn#=|l8b-9?< ze&_LpeP0hL+3i?WdjCUS_k60yet=9?mcKO1t5narp4Rx;f5_FBzBp#nEt?9$_5+S|>@i z_7jobiuZAaE(063z*79<9kDSjj>=`SmWgUrHh!*Ul3!HNQouQ+w}t!&Ly3%E1TH)}1* zE?+$-i_|!@M&q#c4a~K>O-xkp+wyweLv;M}YlqQ77Pafi==?bJvk*({TdK<6g$pH% zhheeWE?z7i=~V5X0Yc8>a)6!ZVd8r=rAS9&^Lt<3VZD43j{Qg5)y-qigJ$FP`29&P zzbeY2C*h7i=0l$mdHy8_pmMTzi#dhS(&v@5viWfBuXX=fOV==)8;3_vQF*28UuYTm z+#mPyGpBa6Ik0a3To%#AI`tm67>TRx$xPHL#t{v;5!cqk*6OvNd_=DaT7NdyPxqp~ zv9d#EvmVbsCKIn;(xvR%bbd6`n@rX_SF1}26fSl;3>>e)+adn3#XZvA;yqd?F`Ss_ zV{S|Lx9-vJ{F_&=oYkxSSlcxp8;qYG<0sCheTiiFDY;8Y33-_kN zf7%OfE17S?dfsoJKYCJ@tyRLwa*fblXRE%dNN z2aoqEkHOOE{Q14ST}O*hWa`hZ#6RQV;K?OSuz<#GL%+B|jWaMsgk(fT{F<5=rkDZi zoK_H02dLj()r%O34w?jt_z+LS?de{)j6H90^x^Y)j%UjLUt{~3<0q)H+Q3A#j&^b~ z1PnN+na&%-a^ODJc09kdYYTElRfyqf@4v{E0Cj$?Ef?qktJH0HsPG2F`{{JaSHB9r zTb=Ki_E5$#t;7yN=bb<3gn-P#AY(n_?HC&!CO6=5oHJI7A&-w zEeaLjvdvCW3mlw?z!8ZO3PDXfXVnV)i`+k!^_9qsMkqlDixFc2AQ2W3B9Tf=zXF=t zKBuJRVZ0n?r&Rk%zd!A?2koCbe;UJ2wdqSdL=i_^WQSu&2nrU376b>h0>k-8bTaUU z(GiOnA_3OdO%XysDndvsq9|1F4IE_L`7xGie*8?I6H0SSpd)Jk@O2cdg zARk7;R0QdEQUQZbE1KzWWL;QSDmF+$Nj}Tl_?sbduVLe_-N%_YM;GecLy;c_Cyas4 z#M2*>s)YpW8T3dS`Z`Gp!{4C}v(Tyw*JxwtCwbF}ML%?X+#j!gtL$pquF>gI#zr_w zaho%8Ox7CpMB?ev!+Ct7TK|3zXnz_zIv?PhFJn$ijfui#F&}TDrV`|s{`Piv} zjR5yhK@%9FK86oX2ORi&o(vE#1!^FgVt{*J57Ga7%TEP(jp5PZO@_}Mk;+a^nVw5H zOte!O4Ipw(HBI!S7H^6}Pc+i8=VfH`dGzjQfdJU~-E_uq${~!L3Yg4yw{pm9psSj{7Oh3lQug+L$N21`WxfT{q70m z?c*Vj3=8JvpD>$25^RC{(g%Mo!PB&Ochaf!=0j8)nDJWcFD0AhfZEa;#T-M-POPko z#$=imINIt|-f&WOXH08IA)29u6B!pbOx2lTYNQd2&X_lAImLrv7fog2WL904vmqS@ zadj9ASee#^tc%8TU?;3=Cc|$Sovw)3ZHuIgu~``-36XHi(p0gE6pM+$W{5b$NHv|P zV+dwQ)&dzPD9F0dIfQeT^|l^%NNg4c*$WVgW~g2x5~N7P6`I=eUT_0>SFK>?Y0Egy z(yWCsoea>e4A`J`j9C~57g-mH%dJi!3c7=t!F8f2jONC)END(NV;7b)s?_bW+UXo< zhW6OuRKmvDrl%tWGn{HhtciD(HpJZS;ku0ANh33*j17$#oFEW1MkQD%ia11}S+|!g z29;67G)q*&MMxrXp~#3t0NX1(Zjv2{ES-C^mrTfYx=+`*1Ll!rMod7BwYQ-{q##e4=XybR zXQQt+FwC3u4Pv;QcD@wN9-X+Y8o}FoXlQ_v+OV!(t#h>U>`I-hIlKwFmo8fyP^q4a zM0c!XyE^HHDrfT$5%GQ=|49Ytt zgpu9cRqIqSdIrn^y`wT*Y;5Und!*4PqvGC+7kzSU&`$cAhf z-j+<#hIKX0MILk$R4Q+;o^Z~jKF`5?L+%oZ5fO)?kn3dYPen5&2HueGy}7uA;ebiv zL11##A>|-*bK{XRfFuNY7Q%sGhv1v89XkXMfxJ|lR%1mNO)CdM{HaypS@3DzWr zM3*9Dtc`*e$R}_@9XK3!5H;V^fkUB1sPdl)K?im%;JSB$jmRaSy7)VW{M^3vTSi>Y zHe(Yj>xI+HS>rdps7cy}&;q_c4DrLaQcmQjjeKT z6TwOkTLO6)gpkz@xxsojqV2#kn;I`?G8F-FhM2CXf@>!dW3#_u-im90S~_jxKKm&^gN5D9=e zl1YIa7BmqiaCTv{93o+b50U98O%YN|_0Sv|@3~qnwqDh_hIO7q18xTl1T%}w4OlN#tqG(2c`Cw(Cl4KhUqf!<-DR&3vCs#5C>|a~+m@W3 zwjCKg!wRXC${M$H%Q|&Qv#f?QI;zD@F+kgmMBFmZY;-f5fiB4JykQLvnY?6-<0NY& z4&qD@V3I@#9ZA5>mfGVEs*313Pd(~+B95WHa@8eJa~4?yo<<3XBw$|Gw`~p{zh1$~S2f*4 zBCsaK&EQBXc4F?3VK-6`a&R;T!~x9?rU!Cxl_nLdk6(4(rRZVTFDx+YZvAb;t2vMs zISdTW^T4ewn$?Tb1}c=T^j4joMC{Jk{x_bdYupeCnf+y4J951APuCF z2VT?K`fo6{zPbZh)>d^)OwDICL~A+J06BvLat8BH$V36i`nwIX95CLmx!vcIgNH9M08_wp;t0pW~e83fuRFnLL`bIc&NIfYKgm2QW~NwlmikFtR-P3 zLMTWmq!ExfK<$reQLH;&RIw7+Kj1ITa zN}i`m9_uOBO`Fxi&q*QZK3iu-6-EapEIh3AkeXl+)j|tKtWIKM1+9Bx8O1|5Dx7GJ zm~${sO#^Bxh@&M^TfN$>H49h}v)Ga*l zQS%(mYbn@l+6>$_6q-2{JnC|lo@}M!*)t3bNOFvmDHvm75Sf=U)5PO|;%MJ+^@k{P z9*07%Co^IqCcxwbY$%MQ7%3>gN7lHHCm9>0QY9pUi{FNm1-X|bQ=v*-1yZI`Pke$< zj1mDLn5tgB!=o*<)(<08xuMKPnUU78P#VYsAZ1u_W?aaS$dMvtw=pG5scoyA`Ut8b zCoYF1+bULwQ6*HYP@)t`odCcrl6Cq#6wc~+azODt@DAdH^J30@i#v0LPX8H=-Ypj` zwFa(3Mi~}#!FRW*K(UI`M0pVny^2F{iW@{h-GE4vBc^E}s_coqzd(zWP+Xz_$RaWT z3Tutvmw*|O0WgZGA_W86yOBd|l1RJLm{&|52N<%ta8HVE`u<#G(SlHlOo=r)3L6d0jg!nW z0pw?k!A}uN8eBY?4+{DWIZ*getKz9V~gm6*iazJ{TFylS3|mVuAv;s$?v&oCz4hwBh->OOlb( za2i1n5fHR6BsqWyWI~}qhq9768pS#>jkii>0w8N#mar9+MS;=oT#LNTn9#jEU2ddk z$Rf)b2m!i4P~QhaL?RHP4g)~P8jxO3Kw(X)k%=Zs6)I%53JLKtIaNqB9Z27K%>hE> zl(@@vS0Y_p%#<>hBZjhQ=#C77W+KSgFqRO}=du|zK(In1WQIYGEVdZ1p$ZF;3{NHo z`=JqMVj>2P+R>RA2Z9v}J3UPR=>p>!p*5DQN@oN~+}$DQ9NH8?qylNwsAJLP#Z^gR z@ZV|zG-Iw`G7l;Pm?N{X2;y!>1#MwJSKHLvcZZBrw3hKxadl3xh*IeQ##ms5TR(r70UZRm8+0H)3vPLunx-5N25| zrrW04Nhxi%%V7rCVYVAZ7$vsb4yI&G^BjiUYa-Tie(wM1bYIdj`=c+N zsnNGJpo?+)5EtjghmYTEbLaX~4k{UvVhKSKC}ymPF5kjKvG(5Qq~HB1@%0DYJ2X_- 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 Bp8eFOBv2uTuCA)*$D|`2 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

?N_$1UV(V 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

UT>o2e`}fB;`aOW=72v!2SggD$D6q%ief{C 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 z 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

Ad&^f&)w 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

wK$nLW8e@Bv@HeMd^zN%_;fIw*7TFAkX znb+}!mawwg5T3PK^DS_uQ>1skob! zhb`r&lIMy&68EX=PBFN#NDYN2@5-uB{UE3o8K z_3Q1`oAjfMV=;xz5{*`-sv)lw;-G!C!w@(Sd zHFT4zBN4K#UP%IhS~KR54sIwMDy-(NrMf3dx{ST3zLdSpaJtgF?4k6tFk;N0f($S* z%J2z_QO3Psj%Q)E4tigGu8TGu4+@ooU}LZ>LVo!fxkCgvFiCp~uU&$ro>|)f2!yZO zgB+41&V}MERiCp}%K}sil8b?2y#z&BPMVF(Vj9vRnoCk;P?xO0CYAl!UujaSN)tkX zh-3Z3%$Rz@t!D5s?^jC{hZSHCM*C zHden=Upp}zr*NqNA_PEz7LuV-Ixyf?bkoX|8CDI%aML6Hrbdi8^s1o|5dc#9NDVwF zS}Ps+Nk=sdnRlhG7!shKdh36=d}5I$<{>I+tIt+rL@|Jr zh+z=W!w_1hJn`V)E^TKISD3d?L%*J!4H(u?@gC4X?7%iQDeSf=LEkJ?ULi+lIk}?e zK(6NHppC)4wH-hJjP}M0Z41hvVixsaxbz1LW_r3Zwpow~%;R-XNz4cCTVj(GVdalV zGh%>7BBBtZ0Z3IOTk*+z4M9vWx|o!yFo_}~WN2g+j#y%_q=m4{UI=8W+V+AA#`PkV z2La_-1suJ52R|+2l^%TsBc5VpR76BhZ5{=1nAB)+7%)|?MpoAai+Hd@CAQS)REd!;+a%beB_-cb;2|ihyp~} zd24aYH79P1uZvEd!EM0Y$*V)Y`5ZUV%8g51FsQoM4O?*2tH9OsJ#PK%TGS9Cswt?c zT$rjFUYQk{m_UdHLj7e`f&_U+3}dd_rw{F*!9dV>M;bpIXdVu=Ev<^XojM62Wa}3e zdEH)ESOa#6xC$$Foe9_31w_t)ZCg;^pQM~z1E?(dw3q5c(dHDxb*T`>Rty-08JX)u z-s<}<6pKAh6ELC8TJ^3Dro#nlweWUoE4v4G4Mn2BY7k3i3I);xKvm5kMR33ebyn&M z%PD1z0i2Z*Wg;<4MXhX5QtDMiV-aS$Ay`e?_AFP~Xm*?UvO+?s(qMpwrC9=vre;co zW|psrepHt?MwH_y058ZTF&amaCNoi@kRhsIS1b!=NS1Eg#bj8G>$R(D?u6{K^Rl(= z)vsI>f-d6_h=>Dp_^`i9<7*Wh3g;)`QGkQr7jwv>ZPj_+yelZkL{A8eDkj`o(&Bp` z`1PIM|Lyr-gT|lf|4)k*ik2G}`zn~hCk*7S53cQ6UW+$kE0kIq^Ls_=w7wHZYZzsvdzq0B zg3_)k_Y}P?OGHi=y+fPQ8yH*(TPd}g79pyl?O2-8Ye4sk-wIu=Y%|ZOBDm9lVcw;* zW2DILp+^plTPc=t76zv6l&@YM{iF`VuWv^IOyAMdI!0(`H#3Qnvn`VbKCH5MvtfDL zShJl|mi{X*jp#6gfxgbzHk}1$Qun;N_Z0E>{Fm+VMxwcRByga*hyond&|Yc*ZiXWk zR+~Uj2WG-RDq)RFT~Rt)D&o8@U3ejbaLrLjs_-;Kb%8wEPkAksVzh&wwNn^?ky z1sQ4>)@?&VYZG?GRjle>mW6h^Eg5KPt7f@kv|=W1koK`)*Si?3Y>YdltKOEz8Lei< zxKz2LOUu4Bc)Z&6hgwp$%Htkg8e4C7OL2mYx~a|rCgTCj!I#+`yHA!YVo&hIbyT8PdocYw%{o+H&l-A=ji`SfVj^3%6ydBac)(LCe&; zlmHG(X{UoSUm=1c*(R(p&&AW zjA~w;Ag-p>sa1C6I~h_)ji$C3l>9YjekMZNh{6W-6nva?g$Z!?P|Vvctm?M?IskwG z1azBcgR5bp;5c`(NXIL&oF z;3Hn8L!K8woD;})ZZ&ewo7pqb!LNf~Bo1x2ddjq@D_L2Hh*)UqRbC@uZA;d*siM{z zvs&7#7NwRf>o$v8VdtJ>f(l@M5acB5>xw`rL#<+^a2H%vswWXT(AThL06`reoN->; zyNWhM>;g_Y7(zeRvqS>CP|%I#PWO2sJ+N>Y}k7MD=$;op8D zB+SgsDKj$|2#AWnhNc9+ntKOOMG(0@m?Et zd^|PX0y>C1JmHhuoY0rlp)|mud2{l1GojIjgyH;t&1Wt3{yiA-fzZN$kO>?Y+h*Q% zekFHTWeQV=Lonhl`eFDC%+AugUkE!puH3-KzL*!-Y7 zAYA6jR;#BvtTkkL4p`eQTI-g37BEy|l=F>h>`8L9mzR6h;`3|P9e2hjPd@gGzFSMu zP3`TCR66wQ!KL1@M-g2E0le8@4Di*phP9(TEctN-b1gb6JXBz;^j%4cjmfq4^Wf8L zE-QA<_R`@iUPeIo%x#AO%01UfO5=7ya~n#J0Z^s&DQrs&#TS81J%ORcgS3`*hzrL+>W-Gsi}qdiFN0YeO}t)~>pjG--KvyAm}&~DVW*4wA2ZDpz2H&niWdGg-lUWV?y_s@cpE0u_dhyu8(XPPNsk!a;hb=8%W z06`tpg;;?M0aP(1ltzmbwc%xSy+~4)m`?MH3S~;Q*Z{I*FBp{Yo1SgU#qd{AkEb=+K7#e27G zzHpjHhTZonJYl966m?J~RB2gNd%WE6@^q-fRy@uSMyBHn5XVA^)}wbu7q2C3c(%Ew zNV%mNdR`8F3egy$-BcwsW~rG8&Cgax9o8$*=j2JpF7epV5U12YDpUk zX{s1hqG_sMrtvsHN|$4$le)IQZK0qD={i;_7y>)9)s=;FCK4E7eE(*wJVLogbOgOQ(s7~y<=F|iVk&s`BJp5;e(_{5CL&5 zM>cY>+e@X001}y?mRoX%2nv$2(k~rG)m@2j!&p`U;}SYROti6H+Moti9u&a3h6SS) zNbDX{@zLkT^wFmdJ@dV@y{c(i?b;gDTUUam%GO?8?^lhUeX)_8Vxg4`L3bT%OO&2` zD2Zowl$7mcD+d^{NwkKUijf3<=&f}z*~UPMs0CT)rzh&(rUvz|y?P4RuuDo-jEW|j z+iyn1HgM3LTqY?P8b-n0=>$Kk@4Gh)9i7WLQeBzU>sd`}S#@cxYg)Q-bmpt6SXuGo+`*FyD3X*ZhZ5HEz;YDg#Zsjtfld`nY^jk(DNY*eop?Q# zydwbPI=wKwKmuNNg&o8^K2YnP)WVSo#eN_Q7VmPIh6txc87fCqfK%R~W|nh^~btnsTw<8CM{K`9*WtEM2De{JGQ=1Ec4RXraN47VEV@vp}$&N zM%HXFmciWDX?Lp}FTJsD2hPi{99eP3^R^#8Lc&13^RuNYuY!c@OFO3B7gI)~$_3 zEptM-EnC60SwgJY-RThQ)HYUFS5pS6t8kZwMRCr&FU$_N#@1bYSm=$tG8t;) zVW&f06?S-gJ_=fFaBY);0yWmJiG1>CqHUCJB|(N%+jPEdy6M;{jTJdc4Uz(6I;x9| z!}1k?G_>NAny&NjX}$Qd*G>)2gEB;(M(53GQPEOa9~bFw$2G?@zE;r4`#oe~T&fQ% zrtZBMVSovH9%}N9-Gw{b_&YxwJGO3k7olo3qPC+r+PqjXyq3POd`p}EL4?&H+rq>V>wYS||LFf>q1N`+RVl~5iD%_Da5hGr|| zMV4emP{;#1)gqKeX&iDfYnuaEZR;)txbj5WUY4U-i}AdQP__)iT1HrCegxpsGD1#; z0NFs&rrUiPi>D2@ZNbU_8CPD;-pk)7jW}wfnVMQ@TH4UoqT0JvE>}ucl-p+mXmc7S z)$$E@SHajlQ*b`dQ*|-hw;0Jhl_sD_ORHT$>BU>YVizI9LoL4~kuaBW*VjoK$4jo( zh)mLw2P5z*CL$stE10gOr9+1NS(iix95k^pE!w!1R6%wNs&)pEK>k|q;R<9S!3`Lo zb^?+-OgJ29mlCFqDR4Tt-Hg?CG^}Y%N?14{kr^y+0+_?ALZRtcuv8gCIuw9}-_x?m zsHVwBHoCh}w6=+N(5_mH#Ej1sFR6BLwJFg|L`64I#2g!!I$$QRT*g?azbDx@{G?U8KrsC^xE$Pp4ZEs@1tx zmIkSn*E~N*PdHy(?K;Y)>F8S^j$9q!sUaS3c117C_k*p~Ih5EWGFMk3Ab1pDzu39msj2B= z70bCL6vsHh*2#$kwr=xZ=M#69&)O;KF6^c{;xdpl8Q#kYQKiD{U^!WToo z5>OP}xxOF^5~e-JvQyY$MHF&GVj2uoQ9qhw>>>*EQxL@x3kliqX0!A)jL{al87u}_ zEY(xy?qHZ6HT)z7P&tDbb_M0_s*>e3g_fOa^R9-cx&Wi*`8cA!NK6BhwaXY9T&E&_ zDCM$Q8WMxDn7N}^2^O3dnmPs~e&mEE%V_nxRt4~oXsUL?k5af;vK=Nk>#in+xo{oMvSlG9(U+W93*Zc|Fon}%q=&orL)zt>-xIfTU>v6=_uHd+!I?DBy6!-#CIyo|} zpoA&+LzpODL&Z*Wvj`5sM+ZrWwc68-)aDWHBJ~cL06)iRrHcYU2sAS z{Hm}B6&svXA-Tr&R9UNXS*w(#>>liOEQjbCb$J>GK8#-GBWc6RY;!-x!Vun;bmcH7 zsA3xnf;fNGo7AxhXNl$Y7Zrx(4Xx+xrF_{!$t_3ndN$9f-4-)bGp8Tu%5{7xup&(- zah6V|F5~G_ymg_SK_;|`Iu7ILB`M#awN=+#o|dLrU{#rGL{Yi1!?0o`=@26jFvvt} z0E3!%9Zj|)=))@3ig7EiRC9S1KphJ+X1JXWBI>tpT+fqKe&2+&R&gHZq(=a8azCy+ z_^NSY*dSXKMHQNqZaFwbSt$ba%fIspGwamcG;qgMAXM%EMX7B}G$Y0!%PUA5;|QVh zsD}uyg8&f{co^&UBs8~KBY+30oS0r-=U~6ql!-zY*;vrgr0YNdTKyg8L}CF+pgf`K zX&SbOVS)-nmxa98X5h$rgguIJ;sI{RQ8I^-1cgpgQ3**9sg(MkvH2!Ul3FsPzEh5I z66k!WNMSN8I#lWsSx2aAVx9cctMm1xe5-S(PMk#ix=FXkHTUMLQy8tDIIM*t?6!tf z;_`T=3xM}@$Gwi$rod_ArlMY;Z0iM#byG#(u~VT=Ja=-Cq}A3rC&`!-tBhG2XfxHO zt}+iYr-&+uIIa`%np%OZ9i&LWjoGt05rn}yUIMvuxzrU-Ci=xl@+I&d6#KAixNU9m z-^)^`2=WpT+jvk~ZSIUSrlW(S7EDN5?ILIA*DxH%N@qJ@`lz}6x~DNoqOFaDoAg$F z^JKoYg;_b`fU?P0E{j;z`4Xy3xB=~^HanhjkR3PIDQiAWeUEKFj`Irj*$M25@%plA z*w73NlQ~WGUQoS*h>~Tf<0d zSag!A<`fK_Ap-`y;*++1R4FeGb*rkTC`4GaE6!NUP@m_5UVSCj86_M>Ru!qMi5iW5 z@DiC;qrg|;My5yUii4S6Os@^6-H5e>kpxywOGU+om(wBhIH$WxYNPXJK`;kc_o_Y8 zkc}xt8l?i$ctdXUV4{9?+eTfu+-ok1jizY#cwMO98ko$a!iipS($vTvbp&xC4-aqgPsYnSD)F#W*OI}e0kfF9(s>)o?0au3gF>?^1qEG~GtkGp# zwuMXQW=Xb}Wo*zq0o3b?oM&tJ-GTk~!}fWYl0bh25gC4+h>9_)!WZx-v5OXXkn3<8E#&*#{nuD%G7Ya?Kv@TcF+in^9uXQ%u00hx6@E(MW~uxa%KoJs)kK8bWx@oG z2-4uVfh|H#A3?*1a2=7jeY2~N*r z;qC5?fv?1k=T^4>oA2{MQ@syI*yz*pBlm{Fw?+3;vY!d)Lf`wsPo>30*yeg}2i_*Z zb{JZfQ?Z^xt{Sq0^^T6p%X8)j%}kcnL2ctQeS0sXAKO}o0Hx2O)+1QCW0pKKOT}Yl0M|a3_T`eQ ztFBeiJXX`oUe>y=$FchrWGNsaMEp2fn2oCFxqq#+0C)oZdV4R}XKy>3^Zv@^_L9gL zuRR7#wSq^ubJ^ZFa%Bq>@A`vQ8F^Vu_zwdm<6@)g!)kJ=T1`YW89J0`2naAxz;vm+ zLTY1-F3&G655s}lzky9J{|u)Pgb46}hO@h<{Bh(V@r4eTAjA0@MH& zq}pG%uX^VW{b!s=v%()Se#aSs^paoe&<<3kd!M=(?ZGUMQL`lC6H0#{_Y?L|6}IzH zNq(7i5T?gR3bNCw0GSDy8z`dZ#s?M5x8R_}S260XE#mc(@O0mdBbkwkM4zR+; zcgA5`~#*tC4s{~&IgCy|+0+WiIfp|+N52&x*XljsiZ8v21LcO%579NLs zoArC#!@QY8-F{CUo9KfBj|R1A<#P9G#*C0~5?CHh`u%ul|CCw&$r;l3{ID)~v+2be zAqpDVcu#)FlDpV%#`Q=I@z0|D|U#*F_npFg`s{_KPZh5y@)zWp9Yv)t(b&Du3Z`-vgBZkoR+u3Ocspj zZNWQTQ_<@~GsIzdOO|7JTyxTMhG=-Y@trlMRt<7;O0q0g%L+~3P$l|b-W&H?d|W)P zXu(zZumF>D-3OwNl~0u5vw5x+NQXx#L_&eUUp9wp10UD$>uMWuIK3XSj-(JV#s{c7 zF{J0f(wZohW&w%Flk--{+%zidU2oWq9E=;Qg$GHczk-q?lIeTu;Q<(Rpkn*u*@vZL`cx8h*7Vn$yozMU6a^>Y7Fd zyizr08iQb0xJac!(+^@!?lVbXxo0w<`-Nn;v)LAyH;P#e~4Zy&!|y z{t5Dk=?5JI15dQla`w;M4Ua+B9s+}6DR$PghRt)H+hoCFu+?BSfQy>cB@G9!KIp>8 zp`NvQOCyB0SG*w1(qy2_G9c)#{?53eKX#t9>65UJWs^$Cs4ibAIdCfZUK56+2PdMa zDmgHSIc3}Ld-RO}VaFemGvvNrIE$$W;!xzM8{I1Czc< z5d))m4nC}WF#h~?i0Qk~J&8518(23V)10`Cx8$aNR}SP}SsHhO&8fytO}na_%n1A9 zTxCc*vgZyq${ZLzWVK#>(8cc-HzY&=l2IJbqif`FN(>LNe<)-5nGzMS zw+C?@s?uqoS4W#Cw4SrYbn;K0-snL89^XA-GQbZ2;UCkg#(!m8&aCgp2|4~2({dt< zd@T_UzQ{Q*zG95ImYIrEu%V^M6BQ6j3MQzt13zAN!w!|L&VG z>hwQj{WMpLwEUJl$@To7C~5kc@PC7~os9E;$I~?ZzlkJCtMx2PGXH;Yno9m(H{<)C z!I^$8_>DAC%32$zPyABG^zFQJO>7i@^;#5nHS_~NV6waNFE)LrY0 zv7xDZR~Umb+x^S0=QCe7UG#=VNT z&^#B7!t5KLt}l0QP~5VUxqUvgvpu=#ip?9~G4{2lp^u4EZy*7@`ZbDQ_-`s6WbUQK zgw<9Hmq*&$E{dC{Ra&C zy3{gX#6eC$+Fu2J5yS^wBN`#m(OjNbSg81kE98RYRJTw8!5U+JK>RNG#fgMp9C<$zldfeFxw2*7R6d6w% zPdE(ykAx7(po|GgB08WbL=y=t0$spJ@Mnn(sep!H&>&`_NCYY{csL^z1;}7DQX-=Y zqA?*&5MjbEOd7#(V5q<3eE~p9gv68w31FZs35a3|g6g$5Gvl5E?hg&0g{}PJqwAVc zb3Qvdkj-~IJ3Z{?#8WS+7YXkGdMXxr-t_2TrV24M?rC#bcyq$96TDl*ZrP3tCD%?E zt|x;quH?$@-)Qc+_STU8B8Gk|EfxeLYTWMjr=nA>_l4Jdoo4$Rep><_dbF^-8`*HF zdb0Y;;;j0mBt|8eP2Aq#ZHiTZy6xHQd{<%6 zRW^$qu$KPqw!Uk=f1dPblOI_LyfkJ`)JWhqYsj-qg<;Z+R)SMLSwSp^3S=pzDMpog zhY!z_SWy!~IXxd9D~a5#2$Tj8V0ptf%7f>-B^H3 zS3hYRySeu_5lm!JVAwhQCwUwo$@q7_8np`cqF4*t#11#A-7#H9haVk^$qUP|J_402 z(S^ViG1lw}XyMMT@XzTs?Y0yz%s=u|`N788Z= zgH;cG&K#PTwd}9ns}4`JQ*T?2^2#v8iY*B(_KHO*C+ zab+k{61g&hLKPU3pv+B+QQyRQj+FV&Rc(20M3B z+B9Q$DK2q`8fkt1k?u_Oqnz6Idoh(QS}{JTV*2^va66|H!9f%~E} zHCXvWZsPR>Xw2P|_h%}dJDVGDrC(a(tM>tcB3?U~F(zxxp?%Tc^uJj9KsfV8AbEEA z`9>JWVszi!+3ssC7fnu1Z!wl$s^z5}Z20Z0eWzmbE3W7Ov|_)FYZ#+H-FVjPDzLx$ zv!?AAyC?}zV#oRX&(<4~s1Hhh^H*{oURoHAm~b3Rv|Lx<(b?N(A>m3Rt$!1Nt}gFj zO~~@CuO2Dv?+jh7h)Mo7fB9?kClBz+TGHGel-Y}-xfoPA0l40tahIL5=cdeiQ&Hxdvw7i)t5mnG^qzm+HTmj&j(feS zFuLCT>WaEDn^4wozdvCoK-2Q1vNf09K9~pBa`3sO+MDO=3lP9UNgn|U1i?uP4#o_) zaSuY#=37?9}jm>fKVRt^MrIVzXI$;&1%YpL)w1JUkRUX9;TDSrPk%ux+37XossVV+!VCpMqf#iU@YAyLd+w$5 zk4Rcg28^ZW;=n>+3my6Pi#VA0Qk7n1`HPBt+bGuKAMAV`grh>ESC`o!xbT7gW=G6P z9j?Fk#>ibd0koOH?XrOehr!@b=ikO?pWule(WR1Kg==665PqEA*L71>E$b-kh`m;8 z_L{)$jFh?ar}9U=uS~JEMB@b+9EyY^G4zuv5{leAgFR~)hN9V)h`TUQ6ext7F}Dyo zBC%lML?a=AeJh1&_7(G)G6?@YFGzP?5M+L?na*b|n6c2d@U_GPX5U1~*UXHD0xva# z%@4XGe1T7k>f9bZD(h&}-EO>^S8nSz!#m9{gjUutuole|$hdHS&mDPk)(s1*e0u&& zgGm#YLY)!FFHn#Yt&&QCQc8(X{@^#h14wmQ=QY!c=pXs_YtNUf%LHQilD=dt-Kq&>P;V?XVUGJYZ-nKUlbM|S! z@bdnW{Ri5n;A1rTt5@AFB@Ak~KvO=RUi1!=qkF!z2Zln4TS^WQVkLV742lW9M0(Bn zc3&b2#Pi{=hzM(Q{HYmg#fzHM0}owFB+QDm0x9@5c6I9tHHbrJ0SDBsdP_=%R-OHAjqFLcUdL(T+DC6H<-g2f-!H45dkeEu;{#>W zehmm=XlhdpI_mwV?s01odak)@cXkI^+CJ_wqurGJn3Ct0jj6O8Qv}%au6^Nd^01Rn z>Q8(@+!zNUb0NO`LHsHi)wfYY{&0m8Jsx2p{ZsU zcyO+M-LGu#m3%8LlY4tHWd>^1TFp|K8xq5|U{Hu~gAnOl4NhTM00j2ZpZb6LunK!fZUg)(u9YJx-3nF503*-cp<`-`>!E-8FLMxDkH3LEIVMvo!WT-!^w@U+yJuLH{TE@pNXmE=~`( za6k!$LcQR?Z58}GPS3sih+huD+*x@K<2iO?hJPlQI{C=gR<`EiE9-@sD3YN2sU*|B z_4ynQc7%JCDC)r|=6lNR6VjQ9kJxXgqk40<(ik?nn*#BYUE9$P6{-uK$$W1up2<{~ z*YAb_dk*>Kn%d#4~bZ z*uu&KpccJ$sv-};E3kRc-EKAN@V&WtDY`cLCI#<0O#Lo?T;TXzzxc~lY3r3|Gu69G zG^4!sYX@(Y^!?q?Hu;u8-wwO0qV|yrw?i{~S~LjZs%HMM5ySK?mTzY-J$Q0ad)IW| z{GN^;?_!cf7vS^>>YdHo-T2$5di&q?&6icjfGu%c1(>Y{=cHp*!YInRWRNlLp#x^% zBL!l^4*$hFxu(BD7cC9(k6p_e6S@>2cwMJw#;mtIENH;?%MPmo_9<;;X@~`a0cz>0 z%qI|N6>9h$sr{<3A}}xuY9kmC;P`^^TKWMWtA;v}_a&azoNM($U^Pa`p&EZSt~rijAe8VP zye!`q{`HxPhkI~oBwrh`QJc8jH+OxpShu!Xv_C`Z^weSYyzMj*ERjDMnOJCX9r+U}NarI0t9#O5d?KTd!59QUURl~4^bKWk)Z zmWLsX?Z@*kDDU1@%va^zL7v_fRZ)a7^~tl0XBFdWs(OtRm@r2!O1JbZ5Bl#`40aB% zwAY8&$m`bzV$#Iu`c)gceF>@Yzk4|`-`40Z&9|vQUXmnl zp9Dm?yg|UOQknKUBe8?p4v~7-c|+C1$~-gYd|Itj>Uf9!26dVoHv^l&kI@iz#$p5g zyA5dxFmU)`XW>H&A}v)_7U~Xe@&>_%Z7iPe8*<#im7(84!~a?XmAgj$SFW`A&E{az zC%gA3O&wo-r!BL7VTfCe*@VS$`nXP;-k@NyTxE!SLc%Wz=ZuzfSWUF{lgq4+MvPSI)MwHL7>McYIx0ha~5gRo6T^N|XeZL;On zvyUPYik=o~#Tc2H`OA<^y%Kao& zqnUZA*(Mb0S2WoeVH)4FhNAXPYEO^JZg#4~gCl5tYRByi5;t`7eP2{qta|7LQ?4-3EcySmU^RG39K%InGSlk9EM3}XN8@g|}fib3o zS1Z;=Cbe%R83MktZlAIV@K*S6nN0GGnrbKR0GuEy}a717HE1SLmp2+NH z$nNW;3FW7~Z>`)CIcw{pZ9yrax5`U+*iJdPoYoW31Hdku5@j_P>DJ9qBp^t?NR@+V8%cU+my>+kRGZZg$h0Mp@^qu)ybpnRmPCz#3WdS&He0X)V;k z(b|4r=}(|ltr|!ba;MLmOB*}-Vu}JlT0DT%nE_htlTHC zxy!rI)!sNLtiFYM@>qtb#`oX6Bm0Vq=qz7#{4Q)A-aI;QC0@PDXlLlMX3ZS8m8%q; zURq#x;RDn>ns?sMIr|%52pO|!lx(8g^4dW{`j%<|kG+b~@w}Nw)cU0U z^xd+Z#$+Lhg*lpsPtut5^begtD)0URaG-DB{6#n6Y~}k=Sy+%mO?XwG-nWYcLa1V+ zD`Q?vrXW=8!D)!4VF8-fF7+Ujl*A$Nd6r>dX zt91zVZ2Y&%-=F3-SQ2|b^79# z%yo^YR0@@<4YDL@3YAK^5=BAee`339$)gH^X?o{;u(ic=#k*tS`kYyl$P!%a zx$dPn=cW9W2d3obGv&}-Cb*w#Cfr8T==u1?qyCtM`+A)Ijo`(tHvO5(l|d#K&XfH>4uv7a7#~kWaa6xUnLi17+P^awjx5fyjaZ@NidGe+V zpR`+GHE7@_!Bc|z!M@>F)8`1*crlfFW&nCQQz0k-^;f%QCE$Vz)X!r8cWlMM zTbmq2QL9NSy(tc4wW-9+!||#F2~sc=n1QlS+@tLZdq&0Bs&f*qH99?I;EGs}+D;qp zHMF@zWftHok4!UYgnRO$(FP6ht8Kc8H*ID0L|(vKiz(MbfHtc?6s~ZU7&r-IfqZ$( z!2Cp9gQ+TBsz43<#$su7uc%txAvtNjSiQ9g&VqacRN`Jw=_@W)SLTR!Mb&7*viV2T zwXv0!NFm*w;FU@imX%6g{K`$c{q}!fGRE3!E(;Ii zk|cG`U7R8!iL@FuLHY3$(KzNKu(>p7-LdNM>cBra!#7GH5|BYoGaaA_)M~bqX89KQ z`W_1Cp6h9a!o0!QRe`m!Tm>;c3?*H@~GJ2b1S6jL!fD`Id$a3 z{-B?A6UX$SYSU%-*?ZmFx$|)b=+XCRPtES_iR5a%$qmEX^T6&4QDDGa@rbY&9!@2A zYq{dF!aG=1=C|I>Gg&Na_8_w;Ti06G2tzHtDJ;WgXt}VaJ$^8rlCv^4_9eLKoyNM5 z`X1@qG-?0tWq#z>PTu1s3hNe7Y}zjG$^F=g^B=$26pMY?ocyLkV%??%44F^aOYTQ( zZG0BjjLl5rb6uX~4DxRVCN=P1q}s1uRQSNzs4S?pK!5*{e*?%Ds~xE|V4Ii6>VM3r zCgkK7mx9keetWKt!?@+7m7Q-q)H)8dwafEcs6i&c6Q)BYdA((jBGHQ4c6R_D07 zz;ZCczKT)KoeBqoJ!beF(hxiyhw{NjYnxu)aS23z6kPj(lee}V zj}5ZPSZ&&*&gXX+3_pQ>sQJidnt?4MwY>tWs}tI0tKAF##Kw~wH~t1*Tr=@>C)@N1 zcy`~Tx7q6L3^nA(*&PwJo6U_r3Y`yKZ(ry7hzF>+PP*74j5ss_LBO)9R1<>61sU+{}*@GkL}N zQgQNx$8#XBGxq=`RI()56%tTLJtTu01oJ+kqSS>#K$z8rGc)SOGXg)EUwsnjkAVNF z>~Jypj0>C{KFoR=3w2V%u?TXO=rbvrUznDi*JI;Czc!Q~QPW#aU*i9iR~#-d8UP`z zM!%~F{+Z20!!5I9y1@}_nxxyNvN!E;*lNT3-ot&I(=h(mtNSE`p6`XSf!z-K!j2XQ;l?R%6U3^cgKL-_%f( zVWUl6VwhJJ?%wGPeyG8mY~G_!Tr7GM}b z(eTb}0e?sRa_WA;Zc)duyJGWLJ42cPr}U2we05FTb;He>MysoXa4p=m)7NIxPyqPZXW0ZEu86aG<)W| z%ux415zZoT$D5@WWo5EJ`==G=ujmhzf*VF`FIj^Xzw}kSsyh_@-yZB?7a3Gg8n`F# z@1QGtQB=i}8;<(=ProR&pEOBNZu6nNnEBOm_XX2p+W4<2?-bUWw69kGzdSEqYDz<} zKHFwb#raLNhWPGV56C8zh=Ya>A3odZ8pijIIe_P<0(f}%jQ1n5Z!>UX*Y`M3ullIm zch#RNgoX||opNPmG&ceeetVj4{co#Od@@~t=#xe>8 zpS||(@@EU()JQ>5;9~rM;sF{ejXqQ~lPH+y#bHWxin1~obWxGH*dF`TaP=Qwx?UPE~r$U2m0ET)Msa2MMOID0XV7e(Cv-!XEaS-`Ojp5c2kocZEx{|UlYC? zf@U`OYqs#l(OAM&)<`+aEAs8=kKDvts>nOL*Olq03K~nXY9sGtPXKBGXa3 zPWy!~WmZyKiYB&)E}t#!Vj@g^lyJYW&_}?R!{zm4W!$Nmc%)wQLHTUt8^7)Cqqc)k z+MWNXSE-TZ+iW&-@ zSNh{H$!&gmKznXNr;dB#pES0)>PF(ntueKcmbyTaGJbS_*W%p;AlJg7c)RHJz2mVD z+k%~(FW+hP=JoCB*QL1ioUE)E{fOKk!@*3CH2w3Y;XG(mPGt=DkClNE`^Vezp5~ja zUWiH)9<_{QE_BjhoB-*|P~P97H9b!etTn4sPC?RO%1o0|btomD$NX&-62);Mv zV%HyRwI?$v*jzODtgTbo7>#f zmK*ma-VO^?Ah^e2E8+Qu?cDHySaqy=|1^E$=~G^=3JFy^3~6K(vcZ}Ofe>slgMdLM zV&?79i^q`1$4Y08q<_%(v$Gl=N)rb3h_G_tyc7?*n+(lsKfCUNwKTm+kvFg)Ol@a6L#Z(}GqmU{nn|0>YV@Pzh4qq2 zN{D4QbO_cen>d;1%PO18E7VElydK*O>)yAxKfGJU%XS{OMhqMVLc*_9Ucd5OK7?ol zYPvLJq3xHMex;<UeBCd6s&rcX#{j0uKW?u!RX zv~i&ke_aNsyj&00lGSXpz3|3ZAAVhV;8v%Q#y#EL*l**iYT1lbe>Prt67TRESVTBA zat;{2H>k_z=!FgQ@m;Qdk;@jHb$VChj{08*$Kx;aKEL_zeDEfH95rfYT`d@@8PG=d(IBfJzgojnX6A! z7LmU^Xi9OsbuZ&DDWh6SJ-BjlnsmjyY1@J80ofI*Oap6}1;IdQ5|l^&4AXXy-Rnai z0)@$=V_NKtr~bB3n%9^{=JF`R+DJSau5s>+**}SP7-BUNIXwxNXPO`%O1W+I=RdjB z-z&b620mljNuQ_`t|Pd%Y=SG)5(1Nm1RA5AH}fK&7%1Z))&A!Qb>xXE7tTx3(pAS5 zO^v<#A2r;0Fjs$;Ns+j^!ICD?gg|NnaRK`40KJ9AlT$anhxZ~~D)x^LdTPS`qtwAR zUhk^}^f0$<-^AaX2g`~-I6SSL#}d;lPSA%ocb;1#c*bcxaj{I>!Zc>xbLTk;0AWtg z8XMHsy+3glUC(gMy?;E|LdjVv94xok;aqwyQzpKyG9JWyTRPG5=WQI%Pwn+Qde&`EM|~s_AkQ@8MfUo-8&52bA2DUoT4`-q z+n7tup}67sIs1o`a26PrH^P(Hqxd3G`rI{WUS;!c)hy&K^4LCh^ZdiJGdGiFrZ+Ox z%)GdEec#3axl$e;(LLcvV$0OpDE^kV%lEmxB15Avv56Nq+ z8eDlIVC*FAr_EZF0kU#S+N2tVeL4Z+wcqUDcqzT?pUfV;uXNu5OVyT7z#)+r!xK>e z_?vCuJHJjE9)^yh2?Y}~h3R@AW4QNx;II9eQ_Fid@2&h{=ZSAKK1~QcGqQOs6wLm* zh7h0~yd=Scldpeaz<(hQ=SK?DXEU&iF-^+Tipo~f9q7>bM)23#vp`*nl=())U%$nl zyy=zt8myDX)TmO(jm|lsCi+Fd#B^%oBd>aA#P;G>o2JEYY<1}MPXJyP$L_YPZ>}qz z+-4K%kliP9J$&=E?MLOd$!uYD&qkhx8?xK)n0kZL{5u#rCHX%-O*Zr)zm>$PN^ zik9xp+Kq%jm`m<;dtCfHxKbqZ6q}HXO4fZGFB0R*bSpI*6f&Ag1>KEVp ze9s6*90j}yix`SuR!k-rJh(BF%Htz{gYDo$SLw`?%1(ZE|te9J$ruDiaufHp03%o>AJQgPWltb z-vzC$91y%9>}L4%iyVUK0TU_Oh(s?Z))=^(h%*}cP(f@Lr6QiVKF=Bp6coBa6bxN} zdGt)JAR}56Emt6#o(2P`I9^dpVor@1{*&HDVQ-VnTwVV!)756gn~VU*aJ_qam;#phNRgj!*#wF-7EGMs$!N)$pKxK|y2U2CA~iiYQE~ zf}tR)K~>c#;vbe^WWOS+stBqAk}7dUP!MqebVY@r!CxA5sc~X4XlUrNpdb;&aK<1q zsYqzTdJ<%c@FAmqG$b^slt>Z9$c92gHDV;AAhqy9B*KcwvT#Nfv`C7dt5gi9X;Fi! zM;8TCqX@54j6zgU5RI%ys}3rl>KBoq5y7meC`Uqtu@McgsL)cCN+m{LN>Gig3a1f8 z6Ravo2qGMcEEozOLKQ?OrifNUU#6lGQB;tKSHYxFRg4x@p;C>4fUYu%45uon2(Lr^ zVN#(X6Bkra5z`9&+*cD(%pbUh;C}#BqcoV|V_H-+XbMJ=B;Y|6l}JWI;G&ArMg_s( z=+KPxfY`9gX8Wke(sO0j4b#)-r0PyNw_3QA(e@Fe&4)FF)(Kp8yWYvYcjw<(PokS& z2nN%C|CD`59G`yZO@~@d{9t4MiF1k>V3E4WJb5f)tDZYHjFv_8UdXVPyPn}99{LW? z+3{;gq=(~73ovZN7-0`!hB|lLrJuSj0F@+uHZdY^&>JFjmy<%Sajvu6v^d5Zu{>?Q z#U?!Coi9Spg&+U0z<9=GDTh@#PB52ww&xFg+-HR@sj;cfet6y7)(G!KeGv8$wk0($ z__A9J=y`^L(K`k{I%&4>vrFdBwDsTVm?z>G$rf04z{wOCO*m=ee^_AhGZ)>~#>Cm_p$}@~z{MT!; zps9i}D~o#+C1b=NL_}aypvLv9mu_s87)o%3&SPgWWm6iT!P77KW4LW@?AGlt<>8#h z**QkcXJN~9L|_HP`$qHiqaz|2_-4p$zejQEZxn-N8QtrJCU>*;h-mBL)1)|7tZ0DN z4aj$4D2_}SVg6iV>Tq06GO?+THp_%OYNpE25g`fjW#S37QBM2|7Oa!acc*3knCjR~ z{_%i@4AqLiZvrJ99bbr6GlVhV87i3$*iV_vg0_jC*=V<%yGC1Qc;+DK7s$;B+57Y7 zc-q7z0(ba0B~|q7TIp#j{h2&%A7t=k(WxBWW#>N5yoytDfzsEh5_76WR1a;xU zFxCy$Y@@S;lE@z?0Jww1a7>}0go5r>e{z07(rlh&e~FhU7ZnvLjd_fdje9sY>HF}- zn8tSYle_tay2*@FN}iZ?ZT{Rrb28^Q8D9FWDyy0XC5hT|BhmyV1$WFzH%r@GscwmX zsdP?aVsP|PM62P8jcXf`&s|??xBb$=$?ii+n(iun+u%6a@g&Rd%KT;vw{tk`It?{K zf+i^mByEi~1e7+k;35du02?*xHw0ahD^NfE0|&By#M4JTAboT2w`h0nPjo6P*8b zZum_KP~P@zAF(zqfo9>7_@k4r^Pk1r6#d=qDykbxiC*#4;s-rXz>V(LO4|A7^_NCm z(_724qE_!5NZ;~sVO7($%%=ASN>h}G0%k^0RYe=W;;b~_|gREW1d33d@<;60Q{6wX-l}#&sDm;9>VtRPj5Or z!!mR*Cm4W<{Lkn-*Pxd3_-hMwruu42u5?{zJ7566={`H&df%)(d|`H^`iva``0Q~Q z&AZ&ey3;GWPGOw`Z4y#tcWRXmJ>@sU^E9%4ilJ@9Ge2o|0fRcJPvU=cPLr>=-%oR4 zqdET%kw9+0ekVgcW*lGneoT%lhuegb1d1&GU7`4ROKrRUcwhLl-kttGFqgAn1x%zC zkxl;>+r$IwAs7-e3KiJn$b4{u2Fd=;u1wEc_spmqG39@nECRles<+h>eF63ZElOeE z0{7}F8tt0>``3-uxPixRW`8TfFYtBZAxo+gFXmw^BM;NfbftYO=V)dztw|Cea$gVc zHlS=OeNU=SKxVOajl`fvE&rQq+=yj^GazON5*Q$cL`ef6cg4#R>Iz(zv-Klf5>d+R zJO2aC{7<0#j$e!YZ&$raQk11B z^!_YIG6NC*lK#m+O!pILwF)rwstSvbw`12@gbZS(gwbutrHmR+rBK_ zu};BGX9ua*cB1vJ{r-ffjqk7WXxPkYo^`lv7#y_*wf^YrH+Lk<>VG&rXRbf_=E80J zFSe=JiObs^gwydTd|!5HjNdpktSwv zun)&gs0$d40@efY%@sW7ZA5cc5@WuIx~xt7wo|{}Q^h_l|Iub#HyiIcZ;zTnOx60m z4|({x57fBRL0JN~oh11(gL* zT9pfFSyikSN?Blo7AV>+WojuAg%T{bg%v4iELm*;TWb)iB}EHVq9CzAQX&yyQY>t+ zwu&sagIg`CrD{bPzb-|UsIg*J)T+pcD6~vTGBCo`1-6x}S!+l(TuR8|DPp2jZIMB% zLaL02q6KRak!7?J($uRhmQ}S{HK{>CMO9j;EoDNDMX@5Ps8oePtt%UADh;xtjV%_m zjV&0hqiGZr%*?E@ix{@nRHGt;TNGF|){3H$OKobF zma>-CrC7Gr6cV*Xf+2b1!*&)By=fp?;d=~c%zcf zdHQ55wn9~+qM!l@^y}u=1Lz;X(PoAJe&dE>ujL*wmxMS-3J4%b^K=iB*DRiY#Vb&LglKg!K+-;v|G9tK2+aGV7e5cg-hHlB#wzz{^lxkVQ!$R`QH0XRs&=449n zH{S3z0GTvO4TCCzF^2>5bjao^bsqkQ^tf=J_7fS~$H+Se24gr7+t`j|NgzSY$Q+6z zJ+NACE|Vg`)@r?3fx2Y06YU?%P>4dYJ(86q9uZ`DTFi_jVk^2#NzhiT;Ra>8kBVfQ z!LoRBU#PjW$fOMZQ9kqCe29-)2>He!l>l}4lmP_=J&(k19P{>;`Yx}gkqpf-Q`~`;Gs8F1HT4PpOKICEp#cRWiX`?W;x?)rt1w1n}%u>IT;2} zRE;#=piU34kQq4$s}QOR3$3i-pdWWzTjT7iQcX%eigK&~PN2*w~}BFSAw>(LkHa%zvwd=EFo z(gg`CN-8P=BS2eYkVdL#`wXl;XLIh7b`Cm9e!bQB!5y(1z9 zzo@uuHdhxK;@8$D2E|z!G*XXU+=$JT6xLqi2J>pHfzY!QH|L9?q!oZ>+R2z5vf*Lu=c znO2%MBPQk18hYtDJv#jFT}%^wsEFTmRW+LPMDtXb*7 zP}|zri42-_8%!vFI8Bq|tPUz_4cK*Bkl1|;+g!X31BW81w)fuw*5s23e`e>iX#*uq z2|N(IBmCtPbQ!6z8v?wGj3!`YM+61VpSeY@GH`V%j41E9tFzzfqi5V1I(-#DvJFFmG01Nn7-)Q){yUV4W?<`9}}9RGhp?UPQB8y#!7ry%eJZMJ{>;Ioh{PUzu> z6+{V9wiE>c#DxG`LL07t791;p$mCqmDgkOx>`TjfV-D7(R^Cef*cKaDoCo= z5UfgMP}|B-psVjtYpDdHNfHO-P?f+fc3F;rGvojw1zgejXQBWd3UfyUcU`F8a6>X5 z;I@EHEqj~MGJ+ytL1>DW0(8nF48G!3G7ACWIpy539q{P7WFOE(#E=HuhZ7`@j3)E_4aB8J`h^xyh-vMlO_1#@40V>-ivRo)POQU50{Db%Fe$PilmwFv z_dt>`IZr$HD`w(t@1E9+9KJcjmG(dr$={=?cm*Q8<4t&N0X%vzH#dLxhG~8kfn-mg z+rK@dna|eqx^mpNb_Oz)qeBV~&MIR?RJbkMX(-YGARs8ZI@qXg+n<0>y_a?q9EwO|+vNr7Xe zBC6Y1ZpDVh7QRg#>!`3D$-%ZvmJ69dSdZZ!% zF1m#xBBD{ogoRm3Aqm8EB32U6lsvszY+GBCAV=O-oP;4@LYy*yYz=Ycff0$$m(oNgAYT^C0jvux3)MmpH1BA6CuX$U3A1UOMj6eu9T(zkFtcPZ!(IZn0)R=c zp=~a=FsOTEK1hV)J5ND$=I6TXmN(n)M;o|l;Cfc#6hTTTL2V&BX=VjcNe$hmWJTWgtcvWz)N!>^n533E`{szwxTm>(S z5*)4tUuG1((8Qs$JEc!~oVBo`!BvQ=Gs4vbo>irsP+|)>)Q}Ef8V1E7xWS_n8#=&i zVQPv%I^P;wovD?T0m~$(boZ!|m<&@LTTIZ9SsN;i5DIJBibAUCB14Q8*#NrrRSB^e zGYLfWWiP&{=7!hX&8jJx0)bU1q6J@M;@-u%mf{@nL}7i^3m9*{WMwQIDyUI??UpI16Q`^Z0`%E=_cGA{ z1Qj3z3ulcC!Z@^C+aMsw)CZj4HjyBc6t*xoBN19kmvzDd0w3;3Xwm3VxlR+I7dk0vv()0`pCKMOl z#_l+&HJ04Y@kQv)L1zh#SA~t0#zajbitT}Nfd;ZQ5I5U-f+scsG=?>!hAEIdyX9hx z-hnn`4aq5Za=Z?n!z;;mXv8xIRe)@TJQAxDc*70u4+h>1%jnVqvAGiUTqcBL*VUtr z2^#ua&6Y!1Ab2*=>IjBr3ay^X!HVd2Hm4g0{2JK~{V-${7lu1ZHlPt*LbQB1X3J}p zx-{Q;+e+LuSd({zXyov;WMJE#k;ZUorkz;;%fW&s(H0=C#tN@NaxlK)mNi_J@u;w~ z)<&pNHecqolMOMR6Y3h`|97&i3jdXUdJRACU-NhVXL0@t`-)!o|37;FI{cF(xxQq* zP9JKVe2GESIVw{HK?F4R!h!&1TMe|L-kUPf1Mh9<@N{6ypbYo*-()7Ja!Z>?aE!?+ z*rFE;FE(h_dB`oiEQ1s5E(WpZj!GE(OA|<=)_^VXc5QU1h(bvP2qcssh?KZ1jr0qV zdZV_Qj4bXl^c$Rn8PRMBAe8P-gad8#5<<{9yn~pZYEi)u=TkY>F=uA7!D=jx=opJN zEM8`U0eXen0USVYIjZw)0Knuc9hSq3nI?ce9_oeDFk)$d76>CHjRDP6I&v+)w%Xa_n$C272VsMaTC_@N(xJ{fbmMmiH4u4r zJbOL%>e@lPXMKjC9t{UTJ$MSPrafAvH0^A*#dS6XwAHL{j;$*=z_6Xbpk^#lU7x~E zE^iE=gp73fnj?crq$@r~v_eQE?=e$g7;xx%2!#r@FX2kLfXc*6zQ|U?TH&EN(@G_> zo3|@y-pc!tHssg#Q(?A{oMX69gT*;5{6|bEy=~C7Nap_?GsGEaRS1DghNdF z=%P@-EdZ>&eSX_zUAv&QG1Qnq88D?ZGETzF%plN2D!m3Kgl87cF5y9EnWiSwT&FEo zDBs5WYMFh_eGCCTT|L>R91;UEm$?I110#?ij4FP+vxe3oxe;p;<0h8qY;lx^Nir&s$8Kj$C3s{g)Gro^*;5X8 zC@RInFwH8e%15LCX>)yr3cq0#XQ4@7%jM z7F1Fg5KhkiHya$Lnk&X8He6w*isE}wGwSyC#b`KHTcMzR3K%l@az4nvfxxJ%7szbJp*p$PnA*jh@b(RHfOa? z%D64a)f_;meo2-Rs#8bQMNYo zc%oa>ANJ0T1h62ziGQb4{lpv8H!z>PYEW;NAn z^?PYn|=4m0FQ8ZI;2RpZcLV$dPTrb9s7W&j=q$hTZ=5d9$bYHZarXA2^r zXNWWhT`v@qHqaA&G@#FoZ_QQJlHkgNvew|2h1OA6X*YHQJ64U_tb*Ew1K7HY=}|$N ziHZrv(~EQ53lUo?Fh)h9=m0q4P!pt6WP(s^Q4<`igLHYiB>1BHwfT#fDc+f9~(uZpex7E7#It}fTOYVb9_pMQiXzXU%@Wcr^%hwgg!W%g` zkfATZgXLO{+Kx;#$f%7Xw`Yl?=*RE%2bdv;7*zC%gWCk)ZAd13AsZ)2W zpe8Z{5lEyW$n1zFy}Du|DXT&hWf6$wy>!_o_BO*x!dR z4YU=cejR?IS)a$wsr_UD`mjLc3-bfN4Zt z945hSqN=9}sKh9f<5HDSoVL#!>A zoN3_22GNs{so~;|ERzE+o=H6dxB1-IPNKIrrTQC~XmV_n%?y+6&(w%fJ`si;p`gN( z4F|&$VKx&%u^A2TLR1t!f91lu)GjslW5+k63VR-6%FO69p{kjDcror5f=z zyM?zKYr4*HVJC0!9o+XjkEUzQ?zEU4Kc~y$e8%Uzp7&Lv<7AOuVl>m)u8-k5PBqlWSWIgl{ouFTV?(=+$|j*|byLdHxqeW=60I>sqbYT{Q0k=aWUW=2+wUrM0pD8hR9SZl*##^&z3=gB zqL$VJ+G(>$X*m)jfWi0&onRzvB*02`nK<5Wj%QS|&ml9wnelzP7f8=Dm~#ycSfjfG zk%5}Q%1<4Jw}fR26j+5uj8*~BF&iDDeA#}#o^BVjas#8 zpMCe=%zvT4wcC1oiv{|81rtbyG%XDT_jvublE6~Eq4fYzUum3z2h}IO`rjYS@($&D zL%ZUu#XOysv$)uxAbtS=W*9H&sJGestHr&hYO$X`_H)#1vo7(=?=l8hKzA_UF)C1*hpO()zvgy6Y_4Hr5rKh%CSS|@S|cr7{~jK=h8SIZMOLg)MHl#FelOpg-;z%Tu`$S;zggH@3ts*;y!A*i#|!b@_dBC-ilE+2>T`dC+0RWhSNytZ zq1vu}D;DdvD4===c#yqA@4x)cKMS(MBs%|p6VdRXk_kVqc)$-D%mF}=QIS$cMMEur zCTy6rvFKpG&RveoR&x6I_BviZEP`7k6bTVgkx`LSL|mE~acN4|So)oH+`SKC^%KDy zKb^TNv3nT*o%msej@rmGs%gJc*SU%KmJAsgGRqq}mPHAeZdU!5BHD;|t&GRD+OU@K zE}7RNpp=}9y#Rp>c*2SVRia8h@)7(mzKi~Je%3T902{(mUt@z9!OzUdfW*>j5aSl! zo*#dP;7+blKpBAo9b7hO$OYN*I$%J71hbdkSJ##4{aMvb(Z7us1%&7Bf8I#8o%=uM z=XM>g#{LK(amO5T<@>QsS9+W_4#)!~8LORE;I6U+R+@juJ ze~z0Tm&n>QWBQG6DPJuY2)@{&C?|zf*Ec%vxPjZtb^MkL6}zuhuCsLiwfmoZ<9Efk z)eMdg1DnI{ai3qdJ$lRtCzq2@uF__o^$i+md;0$bO9Kjwveb1773y=bn3uXHj`xZ~ z*fN|^3KO${#!cQc+B%#G73}_}qGOtS<2-P{2^L8qWjsE`qbpI1}Rcg}hc!zdpSax=bMJ8yo4iF$jB@qHK0##&@V4)2}D%^6(S%k z77<02g=7?qC2Fu6YM?ACRwy9UsH+2OMIebI5+VYq2p}mUGDVUovI+|nfUr_ILZZk; zSrk!V#tI0*Q2~eoBEq#;D#2v@mDO9BUf&+b5fKN_Lmi;> zUF;}Eb)qP>{(n8r`oh95s#!2`%*BXdrP5g>vdZ)D#W($c`eXtZ9mO+?t6)ovp#_;#_sy$aCb z+Gc5f4aYrw3aLL1245c0&1xW?i|}UKj~yS|2eIx!)Xx6b>UOwTzgg^lG+IoT_G!$y zC4Z3I`}Xer-=A_bm&BA<&Li!z+-D&3zYR-(xRvWfXdXyX*Ku&}|jtZ%;c-kPEwqT*cxvkMDb z4lXLqu(6`l)YAgPD3VVeS9X+{nHBXO;omHV4Ovn=r?2llZ^NgcMn!mGLfnuPmDvz>4oDK4S#!r9Qf3yFuHjJJ(}A^*Murz0dBhPtG`7ul0y;`1;Q@ zfM>Jx)NXkBdg~{TD&*>7X3a(7V00EW&{Mf?BFK7NwjM*1gWE(fMzSJ|a)pgoHJ{F( zdao(9`g%K6{emG@IRrJJg#Fs5IRiq7P=>lF(#Zw0Dlj#-6?#nty3l;P!Y4W3&_xym zacLxyNhFd@31Cu5B##I5z}@b1xWV-}U|k&s zMZaJ<@8s70+2~{HHrQP#f1mUVEA+y=fc7T9Cf@%BwiE9h$IhsW&7K5Fi|IY`GTPZ^ zH>*|;k{Df-eW##iM~bfFb*EX{P7@C7Mmtz6zDT4Swc-1cKg`UQ4vcjYm3Yk?I99MRKv{5{3b>7348^{t&48SHp2hw`tT2}P+UT#B)$pBv79cUp#LTyS zJPS8$d+n%#z1WjMVeiU6S^1nD9#%W^`OrVY3rzaKYi&HCr?HgLPX_D}7%SI_uX|19P&_~cv*fH*@Z(2fJi7wfl47s!bU_Nm;3aY4uBwI6yewzETIQ;gQKwG z*^YDIV7PEdTs!_x$L2*&3>WX;zkdGbF3tQJTto#;ZUELDPc*-=TouYzrsET}15 z`x;`s2vre9CYT;gCr&`wH|s7yz(@>8WK@-%89^F_VG|}~#&}ykuW5;g*JFe$3`Z<6 z5sp^2l3BkjDs;!RL!(p*glT$&jvt9YF8zPxt#DI{nWi@(aiDOP*u>dI4|U++y>s`B zGEA7W!p|!e;_bE#%i&fgOgLU7EZv2X8rw+&Dt%Adp}Fj+I=?c9tcB9}U@1?lLWzj+ z^uK2h)OP$I`m(wE38($|jX<~UQ3^<1q#fFZIw}Y47;Wb7bUJx-IEu{S_F)4_XSLVG z2-vY}2AmJkNq^em<9%m{H{+>ghx_M5V(ScMA41%Dcz8JrXk4 zgL4w!tBW|=Bd4^d7p~rNy!&hk168qQ!~WGPBU(>owN>0s;p7CfsWK8nGKy6o&8&_( zg1eNtBAn&h#oa7}c(L0APMf?`Hl`83zp;k~%Wc;jvd?pMcufyvQ)9Po%PqJ0Ylh~h zedT!hDq!cyMIq5=1{87QMbJg06_SgUXE$b`I26fi+>R5O`0Rzi!(pkmW}+vfrN?2O z*B0%e^U*Y6vQqg=Q)=|x+MRB-s)QI6xdS2v6-LP!9j*O$J5ai^U&Q#hkn(n$yag}Xb$`esdoYtkzDxh0&T&FNjAf3=*ry4fB47l>lOeDW{ zWnz^c^GL6e47Y=3=HTJ*SXPBq;W&`)B(cS4Fl$dx*3z(o}0sA zx0PRAR%3CwhxuiGTz+nL(R$`#CTe{@FHXjp+1v`gk4En|ZtHkpuQ1e;aQg_z4O?2< zDu~-l?^Q&5T+PY!2Kb;d*);gRyS1-|WDJV%T4o)i3MlaupX@s^KOgdgG^&6~0)SfD zN1M|6PA{eN`hQ9)2>|@KBP=!Koki5a%)v8hV!$K-?%vfH%Gnkh#sbx%(q|SH%a zAc7J&1Fim($x9a@XrSw?4M_rue(DTT1J)GUihnZ0pUB*W57= zkPo+PN3OER!(m~9ykS^37Mc&6I(d6@3a^~%*20y`L|Le<17x5m4i2XR(^PNRmkduw z*XlaDvT@`KQs2(Xr4LIi^;$~2whjvdpO2UKbxpK=&N!;N94|ojBf23pm>`A86Nvz! zM9P%-l)*h6R+rop{y!Q}egEiD?Hsa$xDY6>qbM#vng0)4^8IW6t`|iH9rIpqFT90t zPi;`0LXO-g_TOx3XT1=}xP(vyVBN~XIJt|{I0gn$H_|{Tdl3CbG9!!WDtg&%Q;s(= z%>CU5US4Vl$CN|q10aBi7|mf2H6X-9K#W4H3jx_yzPL)Vj9$QgGLSUYo36&Qx#h>N z_%G^IbzNj0`u*Gmv)vsj0dsf{0n9lB9zh3ykRW%UKq3(cNl~`cbDAak-&c3gp@03= zluRcRgdyVkPahv)56rIUAN{DuK3%qmf(u|MC@4{&GpfPBwO!6@_Vc08m;*7(`;1gZ z(K3%IFeh(Vi6~BzCnKODkw!B7^f4G=G*@pc*c!9y#Tu%vSyf%@5%q6K{kGCK6L|Pm zJ#T|W{7;7Xm#dwLZ-kP3I&<$HcBd0Nv#$vP+dx08DzoAtE98E?rO^9NTi0;DU%IK2 zG$kR1tdr&F7!o8IkRNnd6J9`3!y#j`LFBMEw|FHyP9i@@KX1;~yY;I_c#AWWxje31 zJ|HhE$~2^v{QZ;cC4LRq&@dd+eIx!AFOCUq&ns!g^0$MB1WGR=W1g#$7&y>Pj_n_6ADMI zDhULTT)7?8cX;sk-R~Xy?_b~NT$a7#Fb5gCb=iVCgzN904yaCp8WEaN{9`t`TQ zbgma&9-oV3(&YN|_U5N+vs;7Ud^rn&Si}BNREg83IeE^Kbs@E%#NcJ*fY8~YuB60H z4fm$QzVW$~aQg_nW_dAnhC9D(-Y?a2(E&S}4=%A%a~uHr7gjc&xH)(a}<*qZ=Rh4P*Nz&_A>9zLec;qYsN#Rn}A~Ep`bbZR=srp-#4UJSa+>nN5pxTNL`(|9P%9(K1Om#fPIU?U$ zjV+oqSs&Z@GYFw-QiAwEiZU|{IQp}ZR8v$!FKK&>JlXi_J^7$MLIq{=fsRh7P0t1u zcw=XNIXspi;_~?QVR7)J@Z&Kc5DChu2zm^B$>zjGCX_I({P{HiyJjpc!WIfuCr`U*yh=_;~AY_QIi}qo~f0NdXH^hI*$UrS&f(&q> zz~KsGK@4q3I?Z_RFLDP`sT+|BhJJ?C#z>2>gE-V6Y%?9R}{>$4H@FYj#g z5M8!LCAF*$dln@sEL1s33;q)EfKih5?(OK9!{%8662jj(JlQiin(4hOk_u32x^;Vq zI+1tKcQp4fWnhv;$t038KZ3cYs?|V&_uyNh_Y~tCamXKfdFP%H5ycc!#?ZE*wX0gz zrLs8VjyNW(-}LL(@8a*{pixB=(Gd}=VsueYGZ~NVPQ~fT8~fle-EF}`*r)p zR%T^ZW@b>T@eb~=?&=j;OaJ7LQPAjse^W-iof}-*_~FM#ZLwm@xdMW8K;sV=cq!wN z3InE60Z)Q6IG|IXdS7_}3-PfIzyPUQl~W9i-yofb33S`BNy$^msZvZufESK58nmG( zk+6_Uvhr}A{7r3bXs*AiPIO4&)g=qu6u2l*7&hc%JQ4#R1dNn?Y>lfK-g(2s@oKk& zoXeNMPSrf|J$cQJch}?l?yi0g$LCQ?PwMjrnT%#iIyEQqjw25?2L&SAfwW*%C&A!T z9ZIu)?r_e_bo+GU3m;2!XkfP|j{pEbGZZz>?1(XpU=c9leU6+ye{uL9z0cQb<;$6J z<8EeL%W~XqwQk?%{htVD*W1YQl82m1cG#57y5b7ligKO6D*+Ti(gkE7E-5Snc)6Gp z@vDX)cb)r$i9f18{dRNY1VUQM83zi`Vf)y$(-i~uuowpStAhhzs?gr%1(--CeyO%z z7h|lWp|#2LFF!H!UvG)bYD#^<4#b`}i~_}Ja!4?aGtPX}fkTEj-qdHdsfL-DKN!L& z!VM)6%Mbe(4@JTFU3bl*iR)tsgA|0!f~p@9QvR@Nd0HpaB?J9;r**(BKmZXEek=WLmxV9acg*{^*4Ugc z^5*5f-u3k~QTqJeXThg$axiLf**Q+_UagmC`Z@@T2wDap!pCHUV6(z*;c4#{i4Pq9 zX57NZ6BaDMB53o6^vK}`KgINV{>4<1QOPCMRIz7a3HY?CAsgK-?@O1fo>P&p4mDpN z9T)g`9C_g1=54ZVBoUGcB3|8VXUXycL)kp1J>Pku-mr7+N;sD=#gIZTL!Xw=CA|?| zm@R#+js6-$aLmhnfD=!T-Ty=lU)BDW^0lAX+}+Rsh!g6^@`}}?`X7AEFg+gsZ)16n z);o`lz4HEGxV5JiQV#lFnCB9W3@H_cpYaEYKQ>2Vzlr-}pmG5IpEP`Ek3q{nV*tP; z0!R044QtIKqCMj`J!G5|FMt?&ae+I-D^|B=09ay?*=(n0tORhQ&`iqx@k|M zrz4`J`V=2|@3yksw-fK`<@8tB0l_3)jupai!R5Zj$O1ObdZa0G77c&^>G!ph(2zsc zvY=;*y_{eRy#?BkxFHk%#Z>3qyzrxk;HsQj090G9r|9 zXG#fFBVYMg``!5ZC1-#dsa>8a*=Z!O|{-)=nj6Y+^#0~l0buk)g$Q#Jf`yRTk-cB`(x zA5Ur6>tGESlTK@PS^$~`o`p-GmG?U&zN(+v{k)E)_d30d?|a|qhM(Vk>Gt8-3k9ev z@IOsd@FCyJ0QCKp7Eb^ncd@$$0^7m@jHQ@c*5d5%CQ=LlF@cC+2*wH%gNH^)E4-ZN zQ+wR0c4oRnXCEb4z(6++CXx#mc;FU}#A;K(h^fvSI(nm->-wb~>i?B6%QX1{Fmw zEpEVSa_T|Z8`UUetD3h4CAF&ZX0WG$orjrB^wU;2pp21b`joY%+Twq6yqX80eTtQk z%-Z!{wGfb1@_oj7bg__kxHsEPtaRz#cfN>@9xGw0*l=7n&CWXG|E@|KI}LYYHe`ZDSrU>eq@^EZ&{8bjDELA_J&qQ`CbdE= z3<)G{*)anUW-fCzUV-01ZMNuiRod;dQyX?x5z3ce{@7W2rJD9op_;j3JUopzcRS?l zyGZb!j3D+e(-N(Wi63>eOMszbv2(g8n`flZL}xD-=?v}7ZX-4a0gwU5FG&HnAmc&} zL8;aB?L14?_f-nda!uIZ?C*-|(Alj<_@L`D5^?IS)0o5mFjDP|O{C3h*|;!Dkr)O5 zL;(>HpTRNTy6T@fyZDsw3H!Jk=cZ;~D}kZGtKVQ1rX5bRE?KFSk*TV^e4#J8>)o-P zV#SJVSW?`rU(CH$sF~+w-?e^Y1iX)Jv0}}G4N5QI!GitT*YfbccLnz}ux3`nCJYs?-@ktK`|e-9mA7x$zkdDt zZ)#q>YV)@vw{i=YDXnhh%b2bEt%AL~cC0~`^{rQo+c3$71b!xGvqh zGm_l7b1LP_mo8g!8#S__n#FcGe$AUUZ1HTnV#Jf*v0lY{6gi3q*)}Tm-o0A2de@z; zTC}pyTDCgc`)h|4?s|V!;(k|)?>+nc2Y)ZUj^1P8{=e|LyZXOL`X2)HsjXeD3la6c zSNMJ{e$uLIS8Er4nfWP!9^7N9J=1lf6pPr>6B4#N{vZZNZ zQohjPYNBJSn5^wwPAt`* z{3=WjZRNC7S7t5**4qm=4Sa)K$ z`7L)5FQRLn9Lt%H6^pMr+o^ju0@vbbsb8m-krLBY6NZUu#zol1@lv&zJlpG?bx|p* z@hx=`Fq$3&PW`3+p=-}XxOthm-=@0xa1!g!otNtv%n_!|bt!L>m4k}vvlyBbAT!QQ zyu@B4M>Fs)&y$A05}8=RW(c@HWv|Uf1`RzIorhxM}}g?Q7o*JWMpc zt*_9%zJmUX@PDI>&N%7Uh8x!Uf3y6bM`MNzIs*mih41<6-> z`|raB2U($#XQ1EkcrOQH_I_QAU7XrnC-z{Pm}t$7*0Psflj8BQy|Bj6{{F8KuFoWP zV0W*Z6Jw3XExT#=Ty_4R8;tfBUw!y)ZF4z#5Ipxfq!?UBDH&HTDf?%Q%~Zmi)tX+L z9t`0)Pm4ZA{cBnnh~$mV*H7q8CvBU0?lXg1f9Jm5xz1*1S;Try0HOKeg9{nPp`B*y zR@b>&n@xrWMYzU1^J{ThwqO@lr#J~~^_NxU^!Irz6Z6yMD{pwWSIMPo;vy$PMXh`# zb5@9%dK%s9cG`yK7?-)fMDA~^hHK_*aC&U6_JWfFZ0BaFY}nXKcBxwCz^cpG&RUH1 zjR)%)>TxvTV>UAO6ubzCl`^xIvps`DtZCFd?Bw|u?x{w7jm*`r4izi6xvaI)iJ3~3 zsa;CNT`=KNy-FqRo=@-o%Njf#WK0;;t7s7RtK(AY#@o0Q%osIQbEu_2X8wJ=OJ&ST zaMzDBD+2QHtAczC`??EdluaC~t67=Z$cn6qhX#7rcAoztE_(`Rnw(uMZ(?11E_hXM zzm)dhAN3x19omj~cCys11-PT1li)Zz7vx@r86m37nU4J#8j6P6CqAV|7cPpP!Iq}w zu~pB(vz(=7Beij8u_6+kL*{GCzZ9jPNokN<_mQ-CBLP`W*E6 z=j8nMaW~>+spa&vhtQ&WtMVX zZ`l9GY3U*4Ui($60-n;fA8Qh^HQ`GHPwAo_o2X;s!Ya@zAq@!C0kxa}cJheF=ECs8 z@4d_y&Y@pE4OEn~&Ru2OL-x6BBG@wv`&MG|o~@-0h}gYlCJyC z@KtMk(Ud@Ziqe z%wh6aoZS9q(A^FG1Mpa$-1y!J-5h56{{Zy2*SA=;Zf`@J2E!s!>?>ACU08mem$=K+0%=~ z{;l!7deiIP2pk-V_#7t>LfshxAs}qBwICAH-fjJ3M98GmUM{b_*RQS=inzgp9 ztvL|`1BOK)^UGdnRwum1C{{|zSpse3DC2HA%t{q0Rer;CMBfeYrASn%?2EfY)?B>Q zNA1TPS0BzYd(A(CJcM@@GLt}L9dtMB;$l zW)x~8Ty!X^^ghLw-EXu@-{$i@GmZb7@6Y4UlfAnCsCpd-r=HK?yzG$n6n0zoHjA1x zzT0(f{M_06sasmVtmt*CLDn-tl~LJ_+idpZWT* zK8;h~7x9^d6hyzC%#Qx`gD>2&IR2shOLv^pXvZ>%U0S+IoI8Jd+S1o1E-b&|rxl-{ zu)>PXsrE~XdEQ8DOiR0_FgDMM-S%3I4^RK-UAg)Sk90Y>a4Z&flO?mUnHV7oQ&zkMixqjPJA z4Y)4#cFewEGj~>9f>i3xNT(+5&Z&IF$DummUmL2i!RA#G5qxW z;IW;isFp=Uim_ON#SB_jLt+%HQDL~D`0C0|+V-ncz@%8RRxE~+vY9LmrsPpp3mC*z zMO73OiUKfLpDX3$#z9a)L0~cIYXyu+T9uSo%7u+*u@Yc26)LPnD=cC1l94jXuwqIu z*#Kuin7=YA3}VDUQY`W%V5$*ALr^WMCa4*dRRtiV6oQqD1+5y&F=B$JZ4AIU3R7Qm z-1a-El%WHal^FNk!iFh@msUzDbd_fH1h$4WaSE?vQ2Y)Z8?%c0Z9dC3|9hTK;n|# zbENdiNj0VF%1bWj_r81DWxIPg&YgKWK{gyTxx!F-V=IlF+?%t`})<_P` zdI?uG5X0~Sj#B_>0AhjOz5@mm3>J_{0E7}ny?pqc9pBskTTl z-J88eh22j z0;L5LzNEw;gf795RE8B7|KR80=XB9FeF4%Iq%AkTIDW*WBXH|hlMJYz@_S@#I3(1T>1P`G!+|f15 zB;-6D1x*;*!%)aDVSCVIJ^1?>UM6!uf#jC(iC&Ius{p?gavU@treQ%q{H|G_ao|Gq zkahSyz2gJ^ZiYf9bAr;tIy0+k<$qlMp3P-_)htC}UrCZ5bJo*a!Gjk|7MKRnB$H6$ zOvKz1t1fX6APIaw9Y0F~eN~PD|MdHofn#-h{rFn=90|A{QJ)u#q$C*umWJXm2R9d5 z>BoAtL_%Th`Yt93RnoQNV{pH~YTfEB8C@-c_P2@AqD8~Bhx7fz=ti*|#& zu3|N4uxF~9I~6VBE0HAVl6KB86n4NIz~0q48kKfTE~HJxoLD z^w_2)b2A9kf@0-6mD)bxf!cl!AQhbbz4oTYsw-W4I?wCzmh5p#90&mrr)9ok@ObDI z?XbN1tPTHVy5QUXThCu}n{C?cCH#7c{3oV@sdc`D31J&+$>xmT+}`P-JJ_G-n zz!PJVOl)({)isHOXW%vLrp1j8)$bFeXZN*i|EJUV&(ybutgZ3&!#K^|5!oC4cXl}L zOl~;lWO_);Sj8mG6xS5qcouJ4Yr9)Df#T0v+{w*|XZ*(~jBaIOZ59vHC2t{2jADEp zlE%#;81&d+uT3ilGDtKmKFF?JzJj!WjO27baZP( z$!kfmV#JBcp;wRnBz;!7jlpisnz6}YFQc3$+m*~5n)hwCmEg68x~@>`t&YW|yG3j< z;R@@ux3j@+II3i`%c_m3m18NiS(7U5xl(lfGs=zSXSFOlpUSNwWALl={_DFvCAGy4 zX@Pn3=PQVxDa~yaM0;cXdU+r1wS(D+s9@>lsa&l+gHob>dc(?vs@4f_l&$ofUNaiB9iJAZ zYTV@%fX=-Yl%%y=JzP^%h?OhZH9EU6vcQ5St9@lcs#%iFmRVW_TeDitoYkyuSF5<- zTd9Xbr$x(PI)XjA>GV4IDrJpRikY>#0<*^W=kMI>(|rDSUx6uWukq@1`)3vz$?dt2 zTGyTP0Z{ZUO9~5jw+Rp{-0dAY+k;$6A2` zEh!+GKATm`{%oSU?XIpkyq#@f4Q^P+8kRtgd@`;;&dNE8b8o0q@ssdD0Y>-&sy*W7V-xNb5C@b!?b!UW=H!gUJd&TtoNB=Hh+`#Up-;pD$HyYj!I>`Mrfg#chK& z7QC}SXrxm3veNNi_M(3y=an(8Sqr#n%O@71z25U#T%IeDwWl9%Od;{UE^^8-yjV6h zdRW9W<6Epu*B7eeKyhX@y#B6|tn@6c030jACzEQq^2= z!x}u<=_Rj06K9++W_sGMTo(vz8fYl>se8UZ{I&xrr7v@qBNfVE-o{$5dR~(DTRkQ( zc$GLU?S##4A}w3Et`(WR+{K=eDl0}|<(uIa!EI|)VAE4qVSGXyYMu>#2il0ZAbJ8?@N3A$pQc~zKGhDNRv+YNY2sy&`b_=%F8gQBaZFGtS*<=R z3d0TbH*l(Hn_CUnGh`*o2f|^wF#-O)C+W~J|A8}g4Lmqm!IPu1pY)-<-fH}!NR3+9 zH(}=cO91vOH=zo!^d9xQ0Y02Q8SKz(aFDRh4(}-ZZ-n0d*w)v*5G4{K8THWyKqqT9 z(Y$He(zzK_NI1tXa0m48OysDVQGBm%TJ|3CkE;3GxOw8s8=;XBVwQ9i*s8NdR#cIrwVkDM>y^SQZtjq|yweVBhenm{LB0&l+`*~L;B)spo)-^eUK;m?u)7|((BAO& zG~db?O8~)as@xj-=ryVwo9fy%Iy+@PWt_*?q7|hcg`u}tTP?ECtDm+{PJ8d`(ah27 z_v4GqxsRDB!=yJ|z%E?UJ%P75!3E)qD?qb@n?=MevT{hjs<%^#*Rix>L8YK822|0l zmNpAWX>1mV*tAu)1%j>Dar7`(E$w%*RobjI?Vh{WE0+XsIb&#ytdZ&qBK88wm8YrA zGMuI{#NLf9Gg(ktg=}ZI%bJCjg4_d(Hy4Sy{#8|iI~0t)YSeI*VOce5jdIHx>n(D| zQRocY`SrVc_c~n>Z;jUA-xj_BV&w9LWJ~3mEo&8PLo{pZXb7eh^*D*ct#^p6&0QT0 zaC#?h)}FRtL9SXN>cwsPIcT*D70K!3XbkGKUdtNlgl1R~&K(&wi!4`A%hoERTEoX$ zYW#eB{zn~FxIB$&wc!wsg|=F_txfK0`sH+{xKr@U2-u??z9&MYj6Fc$qPAUrMu4vw z>6V#3H24LWGjqmly3%m-b~d+5K?Z*M*nsP3T98~46HilK(AO-%R&8>c!CsySu4-pj z=xq(X_^>PucdEgdHAZf+W(7_u)h$g?6fJ9j`4#bsm#qE)zMpM{^3i;!ipS5dZr{DiC?hZY^-R-Kjv<7}KnfeoG8_OpH zLYfvRIj{!9LcazygncECRaAyAQfibjRt6+7Qe_}|lt>j=V3GlDtpQRqI=PUfWnDaq zP+E{!S;4Q{5ilI&M;V>D5fCMtbwP;U@341&lehApYwPTK-}(5SANu&OS+d;IYJj6! z9^yt8LWvatQCO(4MTrC7Ysv@a8GEY*ew9xF8EwVR{Dur=;JS2-w=A*TyXNQanf^3@ zaU3zbJPre^eRcW#z<5E2_q_Xj9^idCwGmNK6??=Yl^~imL~04qQo!bQXs8X7!Hnhx zG6U|!$%DeQ#Xr_L?!Uja)i{OKeoaJsex`?4f$%u;_5Kw$ey4?Z8E`R-U_Fj5RlWzQ zzP4Ydu&!%<4Fxj_;*6d?KAlb`M$(cd9q4U=}8@NJP*>VW~;b+%D z9zaI*;Ga)f{BOt+0}26RVd98D^scAe`TaYLgM2KiAf70ZL|I0i9{fQkFDP9Jj3 zb*Hn>`|~U0w@_4qcd;w>;%a{xD&HSJ2*1g`%HW)rUIZY(4Lx@jx0zR#(rWk=x@cD} zErZC-M%!bPosY}h<9d0S)-D3rtKIE_%-M_ax$t^VOXoW7XRf1b z=1V#YIvVv?6o(Txs4FBb%9Ii}aXPq*UIx}c_;r&&5roO+PZ<_T6Zs(M(|1*z%53}h z#>R%0;*lV<7@2@(aDUZWv>kq5R${wi;0(4o#PCsUHV7=0_Bp->C9{C8V~OWEUA~d0 zcSYDCTJXgAY)(Qa$hS)CsO5N=D}3De0mnqiow?Q`*iOS+o}HFp8bu`;4OBH z$LmnP6xh521GRx1CSYuRxo$<@x7+8~0Ad2wM=66#pWD4=*)BGYMT*?1V+{hkh4RN- zp*Z31w%^z4yyLzq7%+waK0rWwR+LKTRaaQJdA*%dyySpe?J3LrB3F@ZKT$RI8@)OB-s-Jh z7Y1-Anf&%shI$M|^|~6-=Ww^%TH88~6~gd=Yj%aGUo6P0jAU7PNI)C)$za|xgDdlO zjHU0-)s?yv=wo5nDxc_;oX%DWs;EbQ=*!w*OE4&Gf{N~!`&7@!S)mgww#M0+V;GFe z&{8x+SS~ej{5+`ozdMKIZoeY#ZvB(cy3(%U%y?T=+&)U>Lw~HO3+~pK$_dbU_}k#3qV0GS31+x zS{M(V-!)nOlR$Mm^g|+K5p_bESW(ml2!n(1KM`F&$N%rL_dK7n|4-oIeH!J@)CS_h zP}8AMHI%v3)_7Xk)rI#AdkVnuxr-HPDUuMw7v(Ckn zeU|2YZY2>fJ#S=wcf^3c-&b3j7C;dKVD+E+)~)j_zxm(8`X3#}mk&AZ;&`78&{_Pq zb@?v4>~z%5mX_;t-efrruGXenhoU=6(Kw)sj-5(Hgi33bu)1`+l3P6Gga~Bk+)hkR zUF>rii>}H2T!i)6sz%Vn$2YN1vYL%x&g7p3kDzlKAG|T-{*H~ctZ_8DojUT{>D=kz zMa|<5!QlpO2E*4gZiqcmp8 zRauktN`g?_{+n*>yH-~2q1joNFfoUQj{NJpWY|gIrMvWA{srRVp*;*Ru|i~%Q1GSA zdwH)j&Vv_QQ=L_O%Th}S$3<%8ior=CTd2Ybe3&MdRgj>Oz75%UX(fRL2?8mAU`VFo z((x`7QELhW6fgD?KLh7}AE2NxRHe-WfC*8|-Y@q6zfRqzamUj^WS_b5zI_q?-u#Yj z`+Dz<*yJ)LlPz)OM2K|uv;YvvN)}0R{UV-mY4+483(}=(=@V;O71T|fq8CtU09K^L ze~Ycu>8EqyBKM_LK|QXq5c%>o@OON8N8;HAl*&peW2?L_0eY zO1P+sphD1VD#poaq97oO1yl%FP^mT)sb>I>0`UXA!@97g)@;jQA>JT3sKGHWMr$aj z#vnmv075WDK}Fe57p;DOes3}mEUX|0(gtIui-<$xx`P6tbOfMq{~Y!l(O4XeqWLIu zySfJXI4E>Dc@NsZ<~lPEN1O#f!~nPCEsSwIIgF->cTzfAN5hnT?_jW&I@|RRlObD& z$Y8fPr=P!j32MmkKhF@)Kw@He60X?D8@jJms>6*>r%Y~a{w-pS^MZE04sF{!)f`t9 z1~JP`WD+PQ7GdkaZzLIZ;Xaj2GaBpy&yS{>k3Wd~n|&TP(T1b`@t?r{96Vp3tJ;0f z{D0mO?>eRbr4*)pGb9~x+c2elb}d&-^Q%=J@7TF-*+lI|vgE?&6+w`}gn$PI6ouef zTacM)R_{@FzGSjf6z};tkCeY!BYC7~xWaY!pNn?(OCR9lx&`2#9uv~xrEGAP?B%mf zrsplTMa9~oZW65!P;1=Xn&I9sEM_$k4bdpb%x~b~^cGx6Zm26A{wm7ClFK-pT(mh~ zb~HDG;b9_dq7{fBg})+3=lj9d5*nKk5(F_Z-H&yJcYYV^f4U8y z$#~Oc^2@pZJe#boDI@`10$&+{K53zY1yKW3p)e{jMcJ?21^dkZA;WaZPtOe2=EPNx zvaBgq&&Y2xPKt|(MG-#nG~`5br15MnT%4VH2te!23gGi~`rD8??KM{!z4PV9ZKFmR zyIqrp06}I;7IUdNfs!_^<#6mcK-=-|&=Z-re-*}^;+s2>kGOH}5n5gDnqL9E`|qWC zu8}<0LNwqhZ8Kh){+Q2z11f`=h3vxPA>r&d1yfPcTPP^DIM+N>&M&m+N4(`blUGZB z^c^D1GO1GSu1%~9amHNba_0(1-wwF^0T{R-2z&(hdM|AnR;sJJ0G@jm2j?@yV%mz7 z$V3?xfS{rV2Ln6(U7iy(9TR?j7opsqzP7RJiId@fJFYsw!$PKv%#|@M8tBv{D3yvc zM%18I0z{}}?&y;zM8XRC<0(b@GK z*A1lIG{@$j?_8nfvABWkbi5;=_G=}H8T@u*S4C%`hTu_C#M*T?6j>-*v$lI8yz4tN zVys(%jMiu~*buSVQL-Skk7u+LVa}S+Xo}}8Nt2kd%@9okeQ?dq37?2AZhQ!CiQ}Ee zN1^$DkKuh^*ZKc(3GY+B7Ty1+y4uskhKU8@hd(%mnR-#t6@S2DK#iB=%2!LcETF(P`rQPDI zgG*NF@i=Dqd@qT_K(E;>xXcXA&Fe%4QkeI1e4qQ|nb<$MP4=76%~-a=F~=4X7P3r1 z%#3Ma^#~l&#fnO?D>8=EHI0GU(9vC=hkq~Ybam!KQfWV1!}PB>6T!-ef-DS%A|iNf zU(2F~%vkQGgiri;frs06(*!?%?f*lg%5v7Me2eGsAlCrOEbQToA)m_2?G$xBY9R92 z2aUciG0R#arz+!HaKUgO$cx zRsoQNV28ELreh)mVg+tiqT2YP-l0JVF#-;Kw-wi3+FkM`ZraN85EBeuHWjT9k@!03 zKIsFSt4JaUfPzFsh$mp{lvqQ}5?nyj*{w>c=esDss9X$w5mQM1QKE-Vi-5_!4gX+h zk_G{d=p_VTf*{HDZdLU3eO&Hf7~@uFw|JZzznIBp(OOEQfO8R+XlE+&ys72TDAi}i| z)g;DZ3Ra3z#Rygis4T5zWn`^u7NJ=|1q#*{&{8VFK}e#ISPLS8sVYLTK&&biqbdqi zDz%q`n7-SHVuA`wWfV~cL5x)tWx8_`Sy8rIEEN%n7FL2N#1`3ASk|&JRSJUGg|rYw zin6Ly6j@TR6spuwL||7Eq{JxJN`*mUv0@Zd3W@^y>A@SFRDsp#DDHi7h#-)edOnjU zIf4lp5aeN4Z&M8}Vc^!C&jTBpQ^4KZX{i?#X;l=aDX9r)G8Rq*p|HxTDJV&i3MB`` z{NIb@{atA=>jal!`^R?u=5T6ir)MzI+_t!CYgMI^p;Z5#CKR7f-~ znvS#Mlns>1+E#l^^9hU_RGa_|XbTAlD6m)%i4hf%U?~PE5fBj;06~bLC@dnZSOStl zMT7+c0Tx9R76Qoy07N7OASgltDk7v5ib5z02rPmj1~E~Js;VLipem>eAgoalREhwk zQY?a~qN*Z;5JiHbh{aSAF+@~V7BLhMiU6pJNGw>e76O8jD!^7EBvFirsE8=4q!CgG z$O{$%ibW!d3k3yOD4`WVRRmTB86hv7f!9@WWC<_)vf`CN;P(fn^V8Dw2Ss)5Ugi%q9K}11{3mA&1$c!SAERl?o zD*}NNUT*@BE*V_kzoZEDvVW#K}azXMkPjKprET2B!VEL7%*4^6hu`8j8H`tMNvj9 zQ50213|OKpL{)+*5n>{!3Xug=V#u*ru>}zoWLT_JkWmpqU;sXcnen`c^9P)*=6PYP ztGj?*pn6>}K_G=1eC4N`9dr6{$=EK0=P)CYzzAA0Q2E`fMV5G7mURPRv5{40L+!?Z`{nDMZQir2>sGFV7M%TmQq-7ryl1%40^Mi^V7Ic7QVE1$gFQ~a zBE_`HWS6XmCz~evqe%~K^WFIT+ixPSuaCZQyx_JE@OuuT@E3px2chbF-imyNLdbev zl|?CVs!xmM_25qr(WBw(MenB|VkVS9&>%%|frcXpdwe`yiu9XA^{~I-=_pJECK}6+ zbh_Y^g{P(BcG?+AV?f@+dCS=x&!)oZ= z>H8fDQ_x#vEx4ikHS3Fe4jh_wFHutY>1k3aex3&)`eM@E)V${o|3LqM=YT{tsNoHw zA>tZm?a(#CZ}JWH`8@6RxDVCey$SBD6oWA%TEYeZ4=P5bkbkh=wk{q$E0!A7yNJ`p zRpMRuxgV+;j@_rBNn*`zbTXV>KF|G-VP7O>3Nwq*0*jS>l_^k02|xg#=o(mn3aem- zGiN<*dSrC8$Lz1s7WuWJMH$FA^sh?Kv!GLC)m-CQf`T!C1`b3h3{p#E{^_krmPyJH zs;4~|DV@|~!4%*6oTu6W3=RYTeg4x!JamSSDuGEAaw#J|iZ5Tnsr&Wt=1*7WqNT)8 z;!qTAe;)#E0;FNbdu_(RPX5r=17Ui-R~|TPc@OYPbs;Z@U z$U}+!?ftAuIN{L9(aa2O}qe-mxMd9E1 z*=K*s{pG%+hwnaz94xKp>RObEz3q>&Ee|0Bo(dA=Kc1?l2BV)Z%J10;hrViLn$dg2 zvK;uvLBO?{B~CR`f$H^F^Yy|*t{z8p2DI{!BBEN0>m+waYubRUwv}eX|NhP5>)0ZD+NGU$OL3S z$}|KEnACXP14Y6beB^KRYL8!!VV!RC)ok_~c>RaS{rACYE>2U`NLB+IhAUMCm8A-b z@e(Fz2p=(Vd;Mbj?*ITzP*&<8E9dm`c6{!=edjy1?K>A0GApX*ZQ8>lA%Ty^_-1pX zl+sZVC<9!j8ysEUC$&3#qRdsY*Dbepp|m>cVlO+cmM?S4#cpw2{rs;FHtQBG1l$C* z(9sAL-1kf!k&?{J)QFtaQ4Ju-JbnJdIDe6goNj(UzxA9)p(|!zS)WIjnZ#?RUTn!v zt>1DS3>5X~M4(`K-f|0K+Qzc_VAN({&&l!Gyni#wU`z1nB(x4_^5T;IQRfXf5CW7$ zPc4-IPcrI(5IICr0wiqwB^w8^?ieQ9H*m?CY}&Zyx0QuCW|JT-@6sKt)pm-S({ria z*u0FolNpFik->~Xm^hr^gIUgMD-d|>U#E@}=!K9|PgmP8)CSNphv3`p=8aV-GuNVM z$9z)0gKaw}>QdvQJxgd6Q#&m^eGZwk4_~{|&v~X8NTYs{^HMD!eaeo*HN%ax93#^= z^Y}Pu&ao|GfQ>wAOUb)p%^aU7wpXcw>|59wHWYn6J_u#3=wq3I$&Yd2)>8PUGqXCq zLd{9)YgWha`28>Hd6hf4N0cYEot&`Ir8ep-DXXv7C(W_orN=mKvjLjkWg=oUXy41& z)0XS*uBCT1H_SM7tlyciW=Q^)&lP3+La^ZkQ0xLX0p5j9i%$lkiYUKTRG_VWx9Ptx z^Ci4>%gIqRe<4}ctK?sA&$IaQGxD=xTojSxvuW~H0R)i^+zUB?LDj2M6~VS|Av0^C z^0c>CtxofE-MzFVIE?e=|m7pwP<*}554~{!^~#V61+zKcrP&bQ_zLr@`JoV&?T8MKS zPkubd1k`DX4eh&mnPgB-B5#v3bO!-t13=Cw=@yy>f@e8cls{V{m~&y70dTP0FfXjB zzRklryjbYo67zb144KZF@2*M>W_%p-*3U|EXSHyvWu{>fki1!eB9O=|m^AGHp{3lw zN?Mebg%yeVfQ@LlfJcNt1$P0s#q~O5fVis2pj2HnkpT{N7K(u-7Np6duV8&m-F%t; zw4RNuLIdvVddUfm&wKN*I$M*jiPVSM5Dxazd;#wxC8IJ@8*8*+~a>Y)#@rLDzD7=M?f;~ zcwwEGn1PLB@`^VFe@>Dw0Gj3R_pf`nNWRS;MT2$5s~MUfE_1XzFs7^xV7Jx$`J{s)Dqd9t+7>CShX zob8E8+EF@$j=&HU?*}lVL}EBP$xX!!+yaGWihDVmK_o^9L7j&>?=vMYm#J%Fo==_i zJG)gxulLR`x%=s!Uw__s9nW>(XUH7}0Rl42Ff>Srh>t;t9neON?ubxf=|aa>>%Aa> zQ64l&^&xULG~WDt&(8gCLtDAff7@?kdVI^qenV$;x-+;v94&~r3Pel{U^4_`01RQF z2A8zAF9e>nF>nc_wUk(}7A?#M=GkwLY1h36ih!dYCB$CKW6QR7bVh#vcuyN`FqHALO(?PE7L zR>22LqJ%^N1s7g^uZQ(y|Cg@dN606i8rBoO@QD^^Bm`Yo0E55q>!)Y&YE^x2nQ@5GAFhQS&he?zvCtjyG|~)wTxk+(hp7 z?LT{nQ3Trr->rgdq@<*ggtJ%~|6!&CnFu2Wjf;DaS&}S-N@VxRe2b%Sz7nLeIUN8f z%07fb_MxnjSk2LIznGnFlZ~F3B_cXD3aF~8Iq465_qurg6-W{jMx38>0H1q3IAM1` z3f4CxHR;9hwL>gQDuGR}cu!3C?+jv!A~aQNb%A187C|6#N`PBJ#gai4Mw=kLllQ+# znoUV-Wn)_gmTb&HW-(=`V{0pcyfWdZJsaqHpF8Tc^M5D9JKd|>#ubxaBMRY4Q^;n- zkW4C)NYS23fDfN>==MCA^v7YfO74`~v~wX*nM1*Al2uP{~1t*^NJG$;>PYRZAI&Q|y+uGl!rQ~{Q-G0m*&ogy=*<6@` zm<1WpAOHaidV5744*^KM=qZQ_#6=r4gKZVw!yv_gz1*!g1`!(BM|x?a#V0e%>$VMh zThzu-IT#x(0V1thqN6MV5CYK1B+Ba#Xn3Q#+cBRntfY02(otCJf z5lUF13XCd(<{9kqbYbOUW09DGgXMipc_e-JSzVsmZ_86Z>05{_f!gS%G6yT4S4V~JWiYOzTqHys zO41Aud3plKx2lja^?tiMUak0}(=<9_klybenqDKn-jqO5$r~|9XJ@te))(GesK#w3P->Nh8ypKJYI#l{&n86S;Slw|}GHLEy!thow8 zuNScsr1tB`wUbH^paKwiJ~+_Al&(G2g_P-hPs8~X{_pu|?)yDh2fftmN~!rEXEjug zA-9*|80~?PdqWPWlG2=edDQ|0BpWxeu-T2YD=sQG5OQ~;D|Y3;-@(VZ`yf-&07L=A zcdX|7kqYJY7A$s=kc7#k?L!09J<`qX5yuByI+`p8vTLAG&q-!q;uZ@d&_Fh&h09<= zNZy~{H2?sJ4zn=`ArXWkFr?ll$-TVEu&u`NdgX^*PQB%g=?&8aLyO(7Z`ASfdj?|7 z(-`vxVUqG*Q6{Prb*JR@zB;zI*17z=4)y%pzN8Li<@3CbZ+qmc2R8?>t&%XXTEJ=O zSbDt6)LHYww3cQXj35E&-~uP678J`M5Ja7Wvv)rslBIgr$=bTg=<<|5r3@{^V;I0O z*nFC!Ps@ZSl@x-9*aW%dhD^#v6wHt9mXz!clCKu%49H?~7FVRjN|KV0 z8${sl-WG{;3X1Z;Bqp4I+xRcP^sZt33MAe3*&0Z3$vNTDO@`vwu|p!UhK+~B^4ZzH ztMNTbxqPpC*Xv*$9#=r>b-hF5V-MZ1IVOPIv0U|KGw~b>aREf}#V@k;))jFY7k=0-ZXHcvl3{&NmVVcy)_*53$qwX#%&eQhs`1-3t=EJc738bQc zA^?G{XhM`JlLU<32o^OR12N8f*UTyc;&EQ&6K=w665sm5!dZa-?jAbfHdew z%lJ5KHYyX&*na-ff*B)%O!Pi>k)%sF<8z2F@H`Sp(=)w+$J*KGrn$Mt*@y8JpUT?$ z;3sdzjEI7%DO@z8z`RCVli=|*#xaN>7z!*p7+Z+P zp`?qCK^Yk#KoBJW)<8fIfT1xbo89?*t|sSoTe|M@Io-u(L?ZlsUvj>8h3y=4!wd|) zEloCG@-h!&FHn=Z$q8hdUci&8IG{MtZzRPbyxM`m^bE6N-;i74l?^qD7S&k&nv`0^ zJ{+Gk{m()Ood#xYc83#aVB>Yn zg_(7lR~Q|gXl@j_IRRwfXjsy$3 z+cp|>nv;K>G6_+zu&#S3j(LV&u-L*FF+}rW*Y#$u)@_$h@7i~NXZ}xDF*_R8q5Mxz zwcnuGkI$uIk5)SZN&KWRK3L+4hqwFt8qm8xy`f-`d%Ebj@E>IM^IRFxX?`bm+J}5P zfXwIXD58jp{0>k&{Tnmqes-H9YMWiol}lQTH`%vpFDa#yF=qR0ylmWfcUQKKJ` z^N3((ug@S5+9Z&>OCfe(DFsnMV-jp3Vkn6i)Qdz?_?IIXGA`D}BCJz$3b6$i3Nbdc zR7DtqB}%c1CF5w;XyR=1|&8ECSK?2xEpWu^&PT8b4avfBh=pp~ks zWT9G0s`Knp{dcWvU?Q1&&vov--dK)RG$m!cmxE~SnaaYBGBQ|TO+Hr^bLJm2H4>_j zLMc`$j+@w9q*9P6BM413?0+xsKBxXp_V=luwf`9OKrk}H85K87TT|+$$(fA=&P_fs zXj?MhbVaes=!7PPm9rx^c3KUT0E`G$&`h9ZHgGi=uTkO2EDPQ zo6YZy<#ze@pEDmxlT}pQ&cbEIFbdEE2JLySQsTm3Xq5ud8f%=2IC63=_lS>3Lt5($VdEkNf}G?_2%fYjWM~<$GEB zSoO8Hxml9v`nw#x4A4UU0i3EpST4Ma;9pw7ST8Wk#Rg=1W4Sp}p*tF#C4tP^G*3*e z!IZ{5*DXhj(apflFGaX9#l0Ie)VK!|+T|&K)JsevN?{5H3k8%j<$coNOHzBxm~buW z5u{82E#eiRXikIz$PRkG%Iq1fybIPKz@h+L+V>Qq)_rqkU&dD#I(OF zGe7HIr(5;$xq>JmUXgkNIY76I?i8XhQB+W zj&_Rdp=W8%Tn@AmfL;O@aq7FCf1~Za?@k)NK@fv4mBUT&-UUHKlG%v^roO0gZu`^a)XxjSvuYN>CKC0cKD2fjKkHeIq|{ui*LYkww;! zs27>%j_s{$ap8KKG(nLawcfxOu6P*MYhv((0}#Ri4~3jPjmr72@hn4&WaJVU7Y|wd zwdz*W&+8jKPsr$jYnYP79Z=53-l9hE;i7zULlGU-OYCINq-ukyO$?ux z%MVQmV&&r0ivpYw{~}yK_USYqY0~4akDvGaj~jHe%*|z1D*6%L z3x#T4_O#ZaYg*Q|ii1N{Wvyvi)|E91)vYU8twPqdt!ot~hM`)ut!oux1qvPEDiVy$ z11x7Sv`8_EQ-R})S6>mBn0LDEO zwG;H@+=Uv3h_(psfZ!cqAQmUYRq25&3YGMeSp{YljYovLAYzIAPpNOtOwYJpah6q$ zi}PWGFuM@H=`aqlPOOTQ6FmF&V>K}ikx--p1R;n6(1>6Fcu*2}No^FpeUBN-KAUTJ z<5~m;_}WCMh#Us`qe6V3A74)rPw&S@0Fx(FOlLny+#>luDbxM8w7M`etT_>xEE!+T zixG&F?&*GK%jHA|3fKqQ04=U_Jq04W1nV6DDbZ29LC(tr7(r|3>iJ(O!`}@3+poBa zvO0>Whi_R%(3^qnp-0D}k_2t`0pbRXff=Ne>gcfQp?l^w)s#5$%ad+*L14fSLtKij z%5MX8%S^r()Pkf3ud?<@mB7dd4BXARuCB)QSsHuF3~sL8A<2B%n-~jIMl+M0yLm;X9d}2jcKqO<>^nZ z!{7LrK2^;q1Qf{}$jHSSBqSgKnkf7fQIO@FCO)z3o_B}B_N#ckmh!Ktc~L&@umi+A zP%Icbs0fq50Q%cr8KaE|pkU0wgYYbP-r?^9D{)<{J<_k-DVaA$cL9q@?}6EUf*O0_ zD!Fvo`R^NS{s2utvcG$XTWM_B_DxY#tVK`XB}8B8C#;x=o(m+9BUt@~q?4nt>h?WF zHLdHF#O(TQd5LKraeFI5GlsciNoVHBdOW5?Tg5koW1OEz{R% z1<@{aUe+fDeD+anTU#qq%v;LT&P{3*6V}SiF%l_CGsVR+D#X<)xGe!#0D+%@7z`E) zQZe-D3k`x02uNf|pCOYGCwV9bv``n`17zw_xwyG&MY1Ygn(o%b;eofjU1$PhCemQK z{5fb3HKQ3Jp2R=(XAl%~n02?^*C}_)?f-+c{vBW4=kmSDI^KN=NjmbztbOnfNgn)s z%e?780QvLpOOT&K1K$U!-6z$=?RB72KxD3-+f^ci=Z!hBi$L~Z3jh^SHK6z6Jv|dB z?9Kh&k8PvKWhI}_pKbc-X_fDrJ{s#&sz3aE8Mx@`|W=aG6^bG)rNJ|G^HzB+re?JU$jtb^w(W53gwjf#1saf1P}^PxNHWMDhx9^vVI?TG1*{g ziUu803E?3EQ7J>DnL0cK0>K5>I507gHS~bK(*M>w^sw?t=W*Aa5`2o#+5ioFiupAkr|c#M575oI3MY<$VLNjg z?P>L6MRhK$xY=qnYh&`PqD02USk$DWHHI-zM1HE%*uM+r*{*(<4Y; zMKiRNc^=Et_WlQ_m#4v_qd$N0iVlM*-^_b$!DXz_GMQ;LIygBSb+wvNg9j~zwk=Lg z&k-1P5H9ShL5xHVC{`Ee)Bt{clt3s@kV3@PiP1WsU>FkxNGm!C$ZJSnz4O1G8Z$Zz z*D8aL;_`l$vJitPnRHuPZxD;CUvld6p~#e1_+0>Fr(q~x!)5vpVaGK z-o8VX%j9RIb~!&feitfkOhdHl!rHfQL2unvj*gEz-Cp;O5GTAixw)Bb$l;pIOb7+E zAd?72C_7qrrc`;qT{Wqr(P6z?^-&7rOl&AIz}*^p83Q_y${SR8kc&~s#uEi^3ScpT z)hhAoo#ViFjr;9%K=^1N2-UmOviHKwanL{?!i#;~ZD)9V`TcK0o9QBr{p`FQ{LOQJ zz`KjQew;3o#x6jM-UX;|j_`CxL;f%znX7bZgD4{QY%%B6etRcnRZq4))2@4-?du8c zoS)NYj{B6XRvOGkp#-b|X3OdqJsUld7L@7&0DcLW*8-*_$fjI)GEB?j{tawyWHVO) z(*$pk(hL$2N14#SrO(v&UU(0EC=;R7?5%X--&?lyJWe-XHEZs5_4reHGQY{-RpD{> zIPuyt1u>bKg3ijyP_QwXp=ReGb%-tu)LGyMzkJbp2o%U!oJ>t(P6CqrdRo3oomS?O zQZ4<43SOZ~!(Km!^LW0~hxNYKZ+B<;x-LI9Xk|9>*~-CHd3^Z~&4zO{n`Y+V=>4~& zc3rk|7Ic?J{aNCCjL)QGqr%HdB`ijJscNMaLOo$tyD|`j63T>yWKyblZ`9}NY(({I zexiqit&=qj;cH>eb1jj&OEWMGq!~_p1pvIxg?pNsT}vG{566BxaS&BcdEWJ#$m+|z zufnIkdxp(xTrVNMXJv`b)~Fw{3=vrSu!U$Frx}3kO#$E>h!F_VJF;~s5;TXC#hoWc z5eQ=lu(g3)YJXl@+m5TrX31gaRr6Md0AK-uTIO0z41?gX$TrA3KqQ<;m^c%& zwb9WMk6*`e*Edf?^IUnkpJh*a=>((*A8Xh<$KX@A=kvYd`rmE0-NyvG8JoDMqn#l= zJ1w@Q{!g#&yvaIF@+}ZUfiPneI66ZpIWr2mUpEKbTG_Qx>^hP7IaBUI3XHZ&xKCa%x6eIBG5XB{Of!of4o zdsKQhx)kb=5lXE~R)NSt!mVM&ol>bitDmAPi2!kp7D)ugxzVGc(*W!P!?%vDV@Mnf zfxfGRhM%f?p~iVO zxPxvUtBQgE<45AXa&Xdlw;qaUj0PWy2`WkfLUnXCQ)U)b5u64E@z~aU(ZkPZ1t2Qg z%@9a{B35(Q(Mg%$6F?>uAS=ccsv`n8&;&%dhhss|Id=_P+yDYu^>Q6) zJCv(dIm2Gl!2FH296%hrU{HYJAVy>-WM<*0OiUtJTcH5cdaYHB1(XH(?-aj)g=-!c zkqsY^6qTq)pv#us%FP*AVh@EV%+C-te^ngTE=K{TKD$Duji}^x)o2XV0j(^eP)s@R zQ$b@j9qPf*w}wOrVCr5gM+=1OQ9w~>(5zsW6sUQ)8*131+1V4B&L^ByG?5Wf7|Sqq za=Xz(p@f`e7TgLlL`c->+!CQMCY*_@!!YF38d2UIv(vEl$cR?w^1 zEYug2FcKn!2_4la1T0xA))y*6@#LNO1cx9*H30I72vV5{iN!93Ah2R1a#{nbTCr7< ztOx{X+(8ucrXCXMJn&({{pq0D$KYr`BwVk9Nkw(dI87@!~x7UMTT&irp!wB)C1Q*;n50v4?r z%}}-4%|kp>04Oj-81dJnIbwtgfa{x)-ev84C^m98HofOkoqI2N-1D@hID1TNliuf` z^SZIqrZRY~H5$y)tE;F&@8F5|Pg6SG%P*oO7A)cn*DI>cYoVqULV`LnB8CSUoEI^L zp74pGBp^mLAJA|G%m^lcVQJ3X&GLqd=b@onrtVRtO>=$`M7Qd$s{=5|;_Q=<+a*H` zNnx@W$8Gky>6~b^K~54W%Df$#!cuv$;(F3L9JgBp@rD2e$Za%MiOQnTcIu+g z#2i}PiWUS0EP^PS7ed%*qYn}T2ocsuPYd`(>)7U=i3$4EqEQ+rRhg!9m^WB>d!~bb z!oyLHx=!w{w^3D9RY*HoB2owd1HaeRqfAf(pDz2YHg*;Es|SRuFJosIIm!bKFuN$s z_hYj_41x8WyxN_AU)OWGDn@jATuMf;{g~oWWv(q`>Isk~| zf`q0)VGfUSiD#R^y`;X}tvnK|otzrXrLY%*mKhm8&h3M2NABR8>(1TNb22sG*DuW+jLyq^SpMimZ+` zKwTupDU3wMvjj#_6i`G}7!0P8gr-v|SW+E-Yt!lWdbs9-jw88eU`hg0n{IhsIWr4| z6h9;eI#fe+8AvA;RXXiE@~l*3#25T@F(xs#L*w6{U-&RA1BO17oLXnS-#-u$AO3l$ zT;0?i$@9z+FL(%o(b@oh*R@c~7P>ucJboinBN>ZqlVVARRPGi?D;-W^rK}nT0pa=y z=`rA5!6O_*WeA7--(iIM*!RsnuLqqcunyR*HjkNlo*2+zQV8IY$uk?22Mh+`aI~RH zM?Qzw=o`_UJF#TXY2#^p{ZFU)K3~W4-iwO-e@iCCI)ZV}6w20s6{Q;16s$`?cZYJt zYj$jRe&4p?|ITh0BLmd~5#u`wB%K0|Vmblj^Hia~Hl&{Ot0vQ=V<11daZ?9&WXdCD zX-rbkxKY_8kKouQ&Ufh?ep%vj(j!@h!+^KSTJ#OA{*1{A!tL~ zAYP_G%~>}yV8#@Bgk(4wkTbhI$3p&~;-D zrnyY0gqV;bD8YsCUKw+VCI~V?(<})_b85u^a>^88C9k4hK+&?T#wsGBH`jVJ<;^6T zPP8WBXmnq2=plTGB>Ks^Ov{Ga$4~*hiy-b0sxa*J_+J#(Q)!)wVjCR>ZLq^vb`*!a zU`x(glLv4y@k7TEDO7j#z=-F(rR=Z;?Z~B%P0}UEv%OQGLOc|mqg_;yq z!yCIiCZ4ap85ATIO#NFyh_V90PUh364S}(YL}IEY!zl5WHoOgI1CMih=PGj=X07oK zdnO4Oye^@2>6CR1-MA1l0eelS4+IJT=?)--pgn2GCXv2S3h2?1+fIRk#&yhyq=?AK zg`SqkSlr>!1FM0SfLg`U0f;y2b*)EZxPo56pDs<#sN&JQ8Ac*NA&^MawgjL{!0s(vHOeMo_;**qx2M)dTS0k%AzA z3M7mc2WP*ahVag&q9VIG+4t?Gz{c2BrR_wd;TS_CEUJ3#Vlhk$P>M5Qt01VU9Hho( z8?${bjdomjYCxsiL3Yp?iIZt?%h@G$iyBLm#Ab&q>iPErB~6lYu*)30EoRhH?KUjh z%Jyi!TQ!@q_TA2HbwPq-xVw7_FGQ^ZfE{N_*maaF1w%y(S3ywqfYwkHiF zn!%7Wghc1x9n_G4^O$omyAI&ZfE&axyU!%ojLE^JN-!Qg?>EkbVw6544bxfLcLRL0 zz?KGZbBef(+&Dft;QIb%9|Nb)+NY9>T9~xxo4wn?0K#`n02E{7?f5>EyVBX2=lKT- z<)I>5Wf46VW+{CqAAac^)hZ{P1GqoP|2OCHXR_UFRxCu@gyWji(5Z54vQRVLC?DNu zaTGX)Ea)ZSYcn%j}Q=A91RYPBP?eO)Xq7>&-T%w#U*w$IRD4({>SsZ z{PKL?ckR72+q@jA=hoS2SOMd4JdXRzTg@9Cqrl`2cq#=od9GO#eQbdQLI}l?85RmZ z4*qP0tKsi$MfFI1J+=*4+v7TP_mN;zDoENg8ddnUK@&ml$Oau8uEFpB;rJ*u`kiu^3+&!i6 zg2vFQgw22~S%;BIu`TIXHUJ=EON`9vFuaABB0x|4p^@9+>#8TWcbl5YwzS;dw?Tt< zb$acLPY^1Si(qP*eUmK{L&bRqZr}m$l(HPSFu#V@SExPXx`P1`7y#Tx0XYKz*OQgQy~*1jZBOqh zvO)Q^_1V@VbBKLr4);lX&5EzNrcwpTy^Pd0wCrYW?d~w#{ad2ZC^=bcJC2(J*A2_z zPYFHw@cr5JdB<;rNPZz8!n(3Y3ysEknoRRv;kdND}`Nh~}z0!#6&P65R*!z14hhv7k$HgKDEYS6kvk@WJ$m*IBK_bC2a~) z#$vXwfoKJ73#LnqM!kVZsAtJQF~$(-+uG_WkqhdYT-M=Wp#_l1_RRT-B#}8NJ7}f| zJ+u)#q-z{{0vcgpR~Uy{up+3ekp+l=utXwJOHn{#h#-o*8sh|04EH2DP?L5^^Zve2 z2jr?GN`x@ck)4B3{kx-{8#Iw(FOXYGEE}_cIRRlo0JTnJvlt-b1|_ILY@9rPl@kua z2Iy!5Oo(?K9!OKkRv2fsCbD2^L`Y0zP!t(ZtFvCU08rPW42zOfA)>Wu1ExUrNzjv_ ztxmc_t8S{>(gH!DM2tzm(q5*AXnHjaBrvTwNyk3)Ek#D#188D0wgFO27&sGc^xK6c zD*;Q4FERsrdqvo=TWqM(Qk6{3yMwKrWxpsTPN?&+XOKia8$~4dP@%IxLHv-+GW*GeI#WP=|cnluV82m<^G@5kNtyU%Rn0+Bg*R*36Q@5u`eRPFe@x zKpZgBB#9g_W`+>qT9x5js4;llJzl>j!}7DWIX%AnS4XnZo^UMn`#w&Fn_M$%+KyxF zoD47rd}dIQ_!wYIZXe(;c>wWiXzkXp& z21Ap-C5R$|!FoNG#=!%Kg#)$i)rXtm-R^vB_=bya{oC=aHWK_!1<7LO0+^zLHj*P* zI!l*ln|hM$h{++61(F1W+?$;mJ~kTK&6oo0g+OxT>NHb+jkgTeUA2bJk~y$ksfIgd zuAGH%CiYF+XxSOL4YCzr8*eun+|(gVDVw9Xa#4v|?L>D22MsyowgIi%8?L5pt1?>U zW+^7G3@YV?rsm?izPqc2&?`;0k6!(>&yLNounE1J%(XDoxb8z?(iyDi*y*!!JCk#6 zq?HYX5Y3IQJByIr1T_P7F)=oFjbW+34Q;{9-N86$(gY zjL27H4K|ldJqF#zdOfGN>w0`R`7aK#gafHAQAjAH&d5!*V3xuO1OXmMOFL|nOfc@0 zk_E$m1h7Me3R6jTA9O-+-Nml9O*!v#YU9NQk55~T;6d0bSV1?E5HdDd2;1Z_aJt@W zchqsb7o6<-42hpCk{ex4LTNnpA83P9F0zz~%IfAwjAN!l8aT)AtFA*D%1Q}=r#)C0 zLcyX@lya!{A(^kIe5$U=3?G$M3J!j~AHhprgQ)12o}KLAiUn2-N>SWOQqmlN54Mn@ zwdf_>Fat@V6hdOmUG#@d4Y1L1Fg18YJ@9qQgRRcv2WA&jWp!}CxPUep&T0fswrhn< zxJf|#-1n=5cOGVKa*8SNFG8?bB1Q;dl#`-L!>BoO)iL#ILp~kjR=`j!&yIvrZ4wlz z2rT*NK(Jscj6`D@4=$&AK%J>gjR+un>xQ3@oOu!-z#YVbz#)2|;(nJ=-w^BZ5DAB6 z0KozkY^2j6j?{IkS-;}+n!*-2Fr;EkV7*J^Wj zCoYIi?xM&qZWwM)u&}WP4#`vJ{do^p1V`t@0iz9z@Do%)@@FvUsdSH(+`J>}$Qx?-8J0ppdpmEjpNTEV;>+L*voiENw@5VwMGqg=6 zJn~k`XgN#c6k%YuQr)aJ`00O9|(Kn3M@Kkudm1aFJqFX_Ld#^_C=~mc3dR?xKc}yLN z6o`N{ATh0m-)yT3L&6k_OlY7o1oKTtkrI*4YjX18lsii(Xi(+oywq9m79U1>Q=~>r zp-Bo9f!8U5$AKeTG?n}9FEOa>Z!Wb~KN}Pcv(=4Drn8QR_MBFtuI>*@LeNGf9gL8* zYAd4bbD%Gh3S0|XMOAC`ikVO2th9QtRQbk4!OXkB09BkJZ&Njmv22w0+%h|hD z5-`wRPH-_UQnDVEQIM6i$ZTU073l9m)KN*`%uVnXz}E8)*1I^O+<@anIRkd$Q#h38B-9}OoAEmk~EhYrs|t=>j1X6zi!!|VUSW!T~KJFb7g z`1!EB=pmBD`$=>dH69k!71Hjtkf4TIhI(4)zPK_|d>U#5OyRm)w08ECA}X96us5>s zj6}ihoyWVU4tF}VYs*!j-GcNIkwr^0N|GFt0M0MG7L1TdBQyvgpm?~$JR=d4HJm|W zLy$j$qknBYep$*=|+x=YNh1}5c>GRl<1mbM+GgVz-R zEfxw_5oef(3dvSFF>y4Yngswt)dV<14x(^sz)%@$N{n$q2}=oOu23#6xy-Po?4*Lr z3W+L=h|rnnSTG?d6(o#LXfA^>K&8Q<3ZoUhg5eCx@X`unfH$LoOAJE>7Qh18j0{Eb zdnM;E*v!Rr;eZ4Haa(R;8#FE_A{f}Jg$tnMMx??8mC*xDR0CCT6s;5~hZBK(hKpiy zM#@H71AyghAfOp2sr1@ZPOO-lInt~VtO~hE${3InPNfV0H6=oVC2@BHKyg|sAbk)K zFnGqAFh~k(WUNuKBuZRhEH7vfMaC$#7$SfOL{fuEMks1plycX=)gvbr7Ig$DAb_I> z#;WOkOG1E{1xZWJcqW~3N@!fphZ_mpodZxJkRM_fx3JM&Iqzk`VNW(^ksv18DyRc8 zt&QMWmc-9S<|}JVEg_W{Cv8WNnM&O-wh*bjySFTd2OHf!BWM*p9`o1U?Y=$gfIDhP zg`~AOP>@$+juItwzOieF>VS#n65YTQR~|qy%r=P0R8kBoA`!Oc-Kmb+4MsCF6%SP; z%5-6US4Jdg(<_RIl}rK3^=Bx6K7Rl(t`>xKI07~~txq5Wnh*f2`pnuK4m1cxUj%6b zA#l)32^!E{y&4BzCidVLlG$gRl`a?Is@)U`NCj*JYKIn(p)8GrBv1lCc}h{*2to!J z-C}K%bl7)YGH-T{*M2@rzMHPvB_Vx!D)Ss_unk58H^_jnfH48&B{2DL2DKEw1&DiC z4XFbezgtx!aSV_EHhs5E+?>8(lJpd%1F>k0XPJXSA`Z`JG{ufG5s4wt1_qE@DCjB| z&>F!Kta^Kifd?U`U((NGzL28^Fj$+bONoeK(P(8{b%9MP5g5jSW{oC>Oqu4S#Ux3% z#H5M}F1JA3bVFrF*O(n9LSn!rX{ikin7%(sq{Ra16vdNsz0Iv;*47y2QZG_$DiuFN=^mvTT7aZ3wesKnMGnw48H!lI(}R;8KPV9iug zR0^uj1nH|w+|*iZ#E?jNry~r4M5soP5ikV;Iut{)fCNC6ha}-fKm@r0q%gYK+%ctH z$gHq-&d_Wm2_ct}+z>8^0@z1Q#_2$7OE{>lrWH4gCIM*?TxyM4a}E41;gs8AkU|qR zd=y?33=TlCAfO>YQCD25rC}P=EE5_oK+OVWTWGgcxdpZ1jcutU*2H8ao9v|A$Z^$> z;EN|~I_28v+9fbB7m;vp4r0BU4( zc;5hN0^oswfw02jfgB)`8sw*qVwL6G<>BNonzuKM*(Wu$D^O}AiLrw8Rcwk$ffvqh zlHk1vV#-XmErAklbin*;@)~Lwpe%|CK+NEjd^1$m$t^KC4H-b&&dcHutHfbvGSM^P z=~~f-$-bGJCWC+vfCm*twPE2-cuAI%dvacHeb$Xd<|O1z_L%d+kHjdX*WE5#6RXOs zGhO&JhJ@q4DV!yyibx4?2$rV>=gGc__;r4wr@qY0^mvvu24KC@Y zB2NAmDYds-XJCe{)}`%PwoSBH8fKw2U;(H(4X$A&)q|E8&T|7nmrz4)29rU-gfxce zGp{puVYWOHn%ZPYYEGWd*z@y&(m?Cla~3KBB5JnXGQp}8YsZr~6h@hSwWJFW^KTVrjgX-J0)8%?L0j|@Ozw@8Aa zWWqh6v@48oqX25G*H{z3OIAUzT7vTQUD6{256Tus3ZnTnid5<kAL8-v!nHCRxv(M2KgDgvLH^(8W z+?nRuieRd2(7AQ8?&$=-$x_m*b2;MbIp`t^9Sf9fB?gjiLO|U>osc&^&0eu7kf@9U zH#+haF@aTrl_cwbNSUBo91LV+mUAqkoCD#eG*B4CQKZ#uaK@tq^Qfj`NqbxCbqIcd zB19Py0*H(Rgcu_ckzfWzC=WDuMZQ8lv%2N-`QzFzi?(w0tA%}P*#9X}h{l#zcwmgw zK$c`($;Fx4;r2b(Vbgy6CmJ6SN=@B#TQ5oqUf(y5d)U+7cHXBdy=fy3_X_MD?Yn;3 z+r?;X0x(#zvh!AY4A4f~Gq5{lJDM|xZEaZT&%-Ld^T9l?2#0&MX=opB-ml%Thu_$# zn*P=F_92^edr|Ze~ft3?1F`VKF7o z7A7u6-R5Inw3}!FiJ|Oe7+LK}(}SYXvH51e`oJ zL`X0WC>R5i8hnfOdzI^iMO!-7(ADgw%2a;RCdxVS=KP@5!%q0b8FnTrjdRH2QE_lLcrhQVW6)Mk+x5?PdODM_uDJkl*A~A}x)f0;dTLPn{iZS@-K!O+q2Bi#JUrNRHJrYW zbIg&pVC%Bh#x1?ko(_qar;jz|Gof*8r=WACB{JdW-PgT))GkL$m%;n;ISZTFcwJhn zxq_Ho$t!7*`D9(l-fdd7QoL8~xGS7TA=mXX(KR`Crn>#sIcv{ycyKch#YWnHAoKK1 zcd7K;J4Q6)zkuH`MuIqtYNo=~L9#Ir&T7cO$ah(jH>k#3zm8TY@~YvcIR+Gc%E*pk zfvmFCKXSURJos)2TvbI)dR9o>b}cAbsRZ(5xa{=WIw^cObib7KFsW1r7ik%G+2~Ot zLB%_;!(qiFkyNnSBtr&Z&t!-X1i(>UGrjPIefPJUlT7I0J^d7RsQ7W7%yTZ~9I zcc8ciRFcP0m<&E&$itJr@;y(T&4!$V*t;1axXr|~6+lpzPp(lXx5D;;f(o#|q3%m> zlTQcW^ZkFf{6046*?e5%y6M&xHo3dLzaOGbU;|@NJlI$n5DRAC(mBrRlmlW&zXCxn z!}e;wGK%!W9@UoaZS1nePesM9422aI3#boU*ie9vA9jaU>U*S3gb{}3NMNSo$qYyq zf+Ql|Qbra-w{)molZ6aec`V79V?ii@s+lqxa;N}z888siZX8E0_81-+4UU_H`E_?q z&0A|ZYZXt;QGx6B|{hnxi}tD4(}|fyf~B^ zsYPiD6Gc?9F<3TOTrUA|AZw5{h|v2j&Wt7$YDnmsv?`z|B8ah75o~phY!%V8Him5R zu2vv{nwZN`s15MHFie29d*mYeKv+yzG%jT!?OjwkdJN5yBUXD{O$`kf1jD~A10z8T zF^G(Qx88V|`hBmf=VoD~QCNMNM0?DXStK((6j7fr2*4*dOt&k)!#bQUT)u}6E=+t# z$`5IO+vE1`xI{gzR6&m-p2nHE*=}Y$*GdP2>&#s0EZ4?tC!HC#DZ-Se1Sv7>0qrNW zxnPDAD+O42n&r`&WX3`YL`!axWEd5ibeb(Q3K%-dUN*dBxVFZK(?Scja@6wDQax>3!7<`1DLId%FmOF(8-TmOI z&s8|jg|H<66ez+9p%NgV#0wda$k0(^bx6e!jD|vzA}~@lRpndHs2~~16_6wbS%$t& z7DV)!ZZa8Obz%mS3(AIi_E3yOn#7h39<8J{+Zz>tSRJ5Fo{rlWNWo4FhX@_|NVB(6 zWhJ0fL7hG4Zg~L>xmXv=IdJKGro=CN_PVgf2#oaQ7%W*?ZI+fSSk}+Z{S}K?2u6kt zNPx$}0Z5}mPT3G?=0B&Op5Ss_9Xz-*8=u#qfRMu}B#{1U8e51vO3)7XlhyC{yq|XP zh74P6*Evzi%y3*zFKa8+`2M@ibilh77uddDG_QXQ0b&o5<783P(?5 zJ}C5^pnQc`nPnwhSQPd*z8TU)6yN}P6YG5ck=*_3AP}Rahx0 z+1JxrwZD1;nW$L?2A%N9%-4A)7 zQA9zABQ}7*s3@#9hMA@Vr-|yo*h4Zwf!0%@rQ}}df?gzuQiT$VixH5(0zxGqq1e+h znTq*aG+xnIZAO4dd`{bL_KNH zcYE73L$1(AiwRaD3`7(gS7@(#)ue{2c+BM%`MR2KX+WV2R?ER5AcpN1hL%|;F2I)D z5XA`XLbO5~nVoL62B)J(L9(J{(ZQ|zbC%c>EKg?YYI^Uk_tmiD!B{ScaR>U zq(IPS0aZ3z*~<3UPB>^STN$XUG@of;$Do%i@`*^X;EZdnZlvkggaZsK$wBO zu_m;3;9z1K51#V9rnaX(IqXABP~06dOg$a}xsNN2x3eoopu)A6HY+yBupp6=O=HJ5 z;$fb&kUj(!5cKW@cfch#(7hciN~e=a4wqYdQHNi{)4?YO{Yn)%8e&K&oH|X&ZtRrp zRJlxL&dnaY^yzmH4ZURYwN6ze?by)+PljnZx1v4u8GK%aW7_$A{cm{h@AK26*H3Q36Ud#! zqtck2*xSb|nA1OfM)P7HCBx(Mm=4(R9;c~>{U&E$X*J=QcF1@^4nYAZidWe8 zoo|+32J{+wtblXOU@{{k7mP*=R^3hJsHxy?Z*?{`VcVS^NA|m|%h=rx5h2wdSdvyI zJfXDqURY^6IjzQw<7<`?j<6rJy_YH{tC^oj8X^{$$*+u;W{g;D%NQFTfnzoUE)|N@ zBW!D1NDyo|AbrPnqHjPd?ha%J0XH!7i`6#eED`k{qku8D6#Q{qcQdP~4a{~ZnmW&Md0HuRqw|k~!nPd(R+q}Jxmd60&daq+t z?Ye(kP|oW}qlOHMk{fnfa(ohtqOmuP_tEFeiu636HRxKrBh0?%b60NocIwsK@XqU^ z+FO4HW^6lMgOq5k^rb4-B*8{sa%p^@W7>DM)!<~JB-mi zB8iygEkq55;j}GtlmoEs_tK59WpL3PVkk^Dzs7H z_bTsRyJvxWFP>HzZoS_$z3ILNp_%l(PH)?lx_%Zd+fSF#z25Nep42G>_8eABu%vyf z?@e7>2X?8f%4i*&!)iH!?<+#900&O>whNqBi^H2u=%K|>IC`gM{_`FIkwxOB zA_|y2Z1~ZXN;?3%j`%y(dz>gDs}8QIdejL32_s}I{FXjara+wyCdzcTqh3w0jKOO6 zu{@*Jg=QEV@X0*@HFW2hb3wvktgU!fxp+fkj6Wg0RvRRSvWR&T>2zp;qw4XB3zn*U z`kY^+$L2^AvKR+%aGWh}%|(MlN0FOaoBHU@@^ zT3CfGPbav~cu^Qs6%CN+i3~{~88CsJs!8P$NakDwdg4n43keQMAp*exLVKD68I0Nq zQ{L^9i8%ObQi<+sM6{H^I*0+)O?V0vCFqxC(4SuhIU)m5cKcHX zM+teoX}LCsZJeY%EYwY=(6MenJU4V1xe`QFWJLpepw|N?Q*OpWO`U2mlWeJUs4Q4` zA$O@#kxMB`uvvwLModCtL)PJ}fFLo}vO_gAgqQ?&1Z!=}bW0#em@_>Cp@-9B=k;6F zfVx@6@kOTRJNWpJm_vjy?1+qVKT=qgi~z@Hug)ohlro!#S6!y0J*S80mfO$I>TGz7 z1GNvgL-a^(ClGOv4AC3Rx;&8FcuXAT9QXxvcVgPM%&IA79lh6Jp+Iyr_Y^IFT4|JU zIBHZ=XEOJ@f$ySg!%@VbVGu8dnplRBq#*&y%h{dnfxNDsTRc~#*vf8duxbYhh+}Sx zGDX#FPjxx)PiR=j>MD|;s{KMPCRRX3CdB`QAmUOaa<&!647ej)Pi(t2kr|%wC1Jk34t=;<_#k0K8bn zGXqyBg+{Ec5OF|I#9&rOfog1kmaB1ina)2exBEX^rI(A*)i-w$BMRCg3i2&$ewU5+ z|Ec;CT;Gb|St(|i0A{|L?t};o6~X3ux||Kog@q$L&_P;a&qYGJDYJpW(y zTgZCHZ`Cx()1=@SA);MVqdx%jz`9=geo=CL48mR{o=hb^X0t6h{Xc}kVX!rln3&i+ zdm9kq3BDwY4%Y@}nn+@XCQ#unRJ$=I&SEHu77ld^Q9+PZ1Y}|g2!g?k5P&R2VnGP7 z(o)rHlA)Z-k1Dc&p}mu=Gh){ite`!>l{>mj@Izavpq+^|qzcy}gu{+2jtqqHsBEQG zmW9ff6;6H^{LLw5bMzQ93xF>J17N5ZHMU;Sz?DYCBof?UXXb00OIKlpIk1A_IodCn zj<#_en@0(L0$vng=8}wW3v?3jh(;N-GDC)J=HcjG*JVq76>JDwt9LsrZ|-ic0FEd{ z$zflCv28?*E`SsbjYUMMgB5n>1ji~;f@By>Zhcc$alPh{4^5M$hdVsjoAaDdYVmNe zAOd=ybJNG%{p&8S|Iqq|@ZJ1-9}Vf^GWeD5^s_WYYWhI@EN2ROJcg0c?noi()mb52 z>LU3Jv1alF#XbLbAEM;^pMSaX{4H39v^;+jyaT;ezd=uPZZ^9-7Zp}m#^#3+(ZLeMGIdWAZs6ZA0 zin7euVyS`(0Y(*~!!4F;Sr#gWvklN7u#VP2d;Ns~ZGd?YZ%_-(`T$y8K=G|DsJ6r= zGEb9e9^yjHphTbw5-}ie>oMyX^pv=DOy96*$902TbZsY@5xB^T9%rJ#a2 zXy|MDF%a0S8wHJ!#8^>BtE~SE^|U^z`+WP|@I0L`usZV*6>#if3QX&gNsP!%8*0r1 zp#)H1h$@U0cK`;DFMF$IP^`-YEd=ZBSaNp`(r;7>aNiCUB^bbzckW1Y%{d(_`js^7 zqe-0s>~XA?`*a6OU7(YONdTY;q^vOYk0>drH0+b1VBC{R03#Mi&GjI~P(?-f2B;T#KkwX)3&CG&j3MS@VsSHd~${5U%A#T_JWNNfZGPL{%hPjZMWW$!VnKhX@)~Kwu2@wjQ+W z9`|?BzrOdM0oL@p{)XHR^{|<|zJujiYFxA%a{*mJ&|0wpIc#7^@YCQ`)l-kcu9P zQ3)ZfUFZuW)4d9W6^mq~839BYwqVWMjK)D4Fox$Htwf9}SPLTX1S$fODZVRGfRL#G zhhB3T0wN$l$(R}+-Q4ome4_;NL_~%V zV1kH4SR^3)nL-p|THzTuSt6i7M2@gMECOB9f^NxuUBb`A8cJdi@c)xg*Sc>)$?%?O zH)NqTs%Vi4=+$Xp5*Khyr4ll9-MKBsICCqk5JjNo1Iy_aA~?jFLrphOAh9tN9UvSU zqRgB$=K$h6x(PxV4DpXCpq4iD#3~Cm%4JA22gv8``w^OVb#hDI{kTJ>T};EAjFM0& z+)eWhb6IM*bd9CSS*;M1I;x3m62>;Z)`o$5zoB&Npg*qob48le_jhX0v?j8)3#Az$%I$$AzqfMMxl;kUe$~ib*+*6hk{vAhw?7qJ;=d z(jDZGvQ4#Qnr4tt6%u8op>3csfwyMt!EB=Cc%P48*GYR- z|4&v~l8PZW5EdyIB+qnvsZ10U1w{!2OHIu_s!N7g5Fnz2UjEp3Fvn7Lz+r%qod>im zYz&Jck_#ZQ7_cI&SqQ;VASQ|^7%c7@Attn>lC??U5~1RqsK7#qeni4qoBhKy+|eju zNjy3#S!UQ6x^^g=wht8y1cjIlL&;8^!{;PlsBQ+}a0yrE&iwtKqi{OT^d~xK(5fmb zswpCfg30M2Rws7mf(8s53q(OWzJkL=Zpmb}uGGcZl+cwZB|_4|!4VqOQXy$rTSTcy z!{qEykVM_P4D)g76=0$%9ksxd)3hawxIe4osgfD)$`0FRnE=H(VVLR{qPkguu+Y%j z#|)4}6+sdU@>3E4`!*c~BgcXa5mZG@y&H6TS%V_Tq?m-_sS9i)Hgzh4Qz<0l>mK)x zA!dHlS``=?LJg#-QYzLph*l|K21QE7{7T@kw%Z&VjJNV8igy6u=D#&ju56@KnE|tM ze^mCDm`qM z&)l%<_xl-%>3`R(4c2^r!uZ>14jp#}e0HJn%S91gnuocR&w&7%Cm{Dd(7rk>DerZl z)t@N2v^M%5gTNiVeV%}&Wt6GDw{RmroO@E?s?>4@Ft<`{iMWrHROoi<>A{}ug2m{~ z+>O{vkIXV?@7nefC#qp?f=-gvemNE+{{N@^zV|=$Kg+rL{2p$N?3S$@#su8t6$}Hk zlMxn3vkuQTF*M*{;*lC_v&vYyb-|nX)i(RCpR173!*!{9X^srGxi`!Zos1zMLn?gCgkAFkjAPMY8CeeVgi#IN%aK~A^^?ToJNwP5*68j z=K4Kz9ralotGXiS;zm*pMzUE8`Q$y{yG5QPRlx0j3e(tv9rt@)~ z8$gu`z*VilXA5HGN$uEebUU<3$|-9RJWcxO_DRnB)D{_jSoO|qMB!^W7K7wKy%Y(u z6F?@Z5TY^Kf+azOMj?`w2%$Lni4H)MtC7VG0;<0^uxQwr$Oqpbkcp~liON`-gGyE+ zv0SV;Ln9sHsrvD_#2w=EzIi!E&TNFWN!v+GTM;AF%MdpG!?3X+tPwf z7dhj)g>F&y49s9VE>auYCJZqf%W+6sZab#96NYaawpD99sYQxt1%~3gAe+;lzp`r7 z4M5wPTD1n|HkgL&I`E=g)Ubz>Ezbt=;7887x_nwzqC^RK?RqQpZ^jn&S=nqM5gwB` zR(S+T6RA^+TWE+Q52Ume5k&=nh$xE13`&Zs#1<+tu&MT=EM_gFs91uiqQpRB7fGJ} znu7&n6vay!7BLh=V-%@E(4dM|#EP(~6sQ8q)(QnewFRRn*4q{%7N~)yrZQ2fQC9sX zFa?zXBM0=JB)}WSginmD3VLGDq065jsZ;4Jx^_;BWo@#mu9irA6dVu&*pZ&j89^x2Fnsb zki;MCX9qDI0DBNX=VJ5w7oEAOc_>q21^WYxw#tANfM#YBhbNIB%YECEsmyvoTcy;> zIo+9GWlGOc=Ho|*0R)qwLXqaG080b|?@9=0K5vS&_P*oM{U3{ZaS>8DSHJSSh|nce zeCqj}9*btotX-*MYS)DP)%7`?NeA-#p6C-)BfMu_4wRgx9IXX z*zEOm?+Y+Wk!&2DgED0{!RIZkoC`P30ZyGEX71Y zNWn>IK@?XY%E1M;h{L>PV-RAg1ym7Yh$In!EHu*Q7^1|2prWQQD69ol6hbUuDk>~g zL{#^zD2l;>vqgQnN(&t0>c3CSmORLAIc1f~fFM)L?t;eV03NRA~$>c{mxp zB;s(2TxKANnYMa5U#;Sy_<)jqFeocnk(=LA*=vEOMBt#IL`Et*AwjVZz}sS5Z#V+* zl|9N@`M|{cg>9;0xowjHfWfsDCdr*SBqV?$$TCOH*+WY(K| z-G)s*T3H~lSs?31flEoBr`sKe%>dw{@Mi3KNtyQcB#9CNDDySr8Dk+;U#9HgfUz}X zPgjaEL%*BKWfO_4b2UdHqb)Yp^R^sCig`~@$IUk#!Q=w@s8a$Z4#T>x6rZEAOg*p2 z@&7khYd+*m%0y5t0>S7crdi;t37&q+yO9AzSOUn&E`VxkmibF0x)Ayl)m-Hh)Onu! zv-&=Y;Ls+w1UaBZB9K-?ZQ>loP8WvcqIU)mv~lQ~6C;>m;u(}A-jF?iT}1dvVGlu) zC^j3Mj0EZ+R0!sK+H9gWDBz;{w-$WKac#&Dp@NGe1Og9k@W4Tc5dmsV6Sy*hX03%S z;XBA85RM>k6az)82svqBqCr4IE<*!C0kHe%cy+0?Du88~kTS!KgR#xb8Z3VM(6Dcy z85#x~pfU;?ijq_UwOU7`S0{*b4*voX1dJKrs!}Obz$V*5hPd~T7BDVNWV2#WVFe99 z!)V_yZQ6#*K?HP$_6cYjNBB6%jyD7_ed~1}h~N3=t=PDhB=(fwjIyPap+FI&6kO+{J?# zB;P(%vxbB>B}^MaVq_J9$hdE_1dK(PNHC}|K>-lnlB~#B7i9*~+b$+>(YCB4tl(<` z#o-`cB4uGfnSOhtuPY-4Ita}&LpyEk4UXo()&ikY5ZLi?F({23sAkiFP43N6dlj;! ztwf=hAmHOnhB=g4HE9}OYam%39>R)RMbZ>EL>$})N_TTeN9ub1yw%ur$4{r&Gq6P& zoo+kQ(*s~djGo%jxmhi!?4t}Y*c&b{aM3crhAHsX%&NaJ<9oxhsS-h4Q8Esy5cRLa z@%~1Oo;7d$pV#^t@&o-lkNztT@8sHq7C~nF!Z~f&FXQ`hSS}(|hb_4ZVf&d>W7`;& z;9iveWJaJ;VZ^Nj?!${tXwOKj5nBo$|w4=!lMwxYl$;`QDy%-He!E18}bvF3VjpPw(0 zx99l#zSq+_>4GA%S4EqHnzA6fhyfwzm~sRaRl?u!xJw+0LLk$=BiO2zx1zGhWT1Z& zH8bM6n_vmd)NN_j2(dsWVe)>9Me%-1JYAiWb*;91HhuP18PT5_)kHC#|C4hv#J~eq zPp3z)`%T}v$S;k4hKlJDY$SSz!&iF_`UXv=5TIG_ai@A{9u+c>xJ^-kOw?SI zjm40RuV`ifz*9>c90=!yfjL@^=&-f zl?@HpT@W`MafNB2+_nZh{I=*XprvUD$Y?;b3jm2ktP92!n1TZ6F#$uHXsQc&WkXKx zQqVbeWun+w+iH{ACn^xL0KpH~Wg@`)7A+n-cYQ?E=FbVe6yAk^twM2Ih7`bv5XlNU zP&&G;t3puoEjXM+3+nQDU!m_hZT=6J_ufD0{6AmmCg9k+09`lMh!JZjtvKDqCftk0 z#+)S+X9 zbi;wNP;z>zG~lFV7%~D4I*P`LX?p6#5~eO8MaD|lAogL0V>1l{6TjRpUe=VTA#Qm8`u*oFFvcJQ4D_)B;=js-1I z>C2dIhvT-VLmry`iJ%Eti7&~{t+rKERaGYYLT?6eNfc%-={Rx?{HhELPzn-zPghA* z9TwG-Y5{n64|iB^4ae=0Q;RcfPlq5z9!zD#h5eosB0}P@EMEbcs!QQcm_yKqo)9{I z*(ao_&4P*wA})k+LOMGK6&;{za@J?p2M7ijVRjn#UK~USx*0~osY8(1OMoyz$TG_< zHYb3;)M6MxMNK{SrV->3f>=4%)@*N1%%eEj8XdTLOgCwy>4%#qb2Ni1!OUb1*mDF2AR9I z!U~;=2$Dhy0St=EczV4A*S)VcvB#qVE|^Nf2|7JW3ab~9JN)GLeBt9H?hS7}PQ&H_?zxO_P>jndS#XyriDh-8u={lgP*d#7R{NB?cly&e3up=vawJI4}4! zOotarCM^q^*hok%-TP7f6rH^7*xtg;tBTTF#x`r(Xz@cr`NkHH~5dvF=R09qovrNchMxkXOTcn}1x|*|RfyBFl z!tFeGNISGO!#N$$LK}JdW<;2QnXdP8%KZa^tQb>27j8yn@W@IO@oJ|RC1!BS*J?4* zB=?+$9hIg@qIlSJHft^at-qp4-h;^E@9uUxGW|J+rOY-jnCB%V2DFyjxrk0hR)W zZtY>EBw!RXrZ-0G`SNYGQ&5evK)n>T-Jqy094d$?Asi@D$L0vYhLxdUQA^mXiW=T3F11N^HL+@_AhW~0 zjUoe4d{vWE*HtY6npJERG!S=LU|69HV({RR1T!gU$Fzr`7ooe<8>oQAB8?5v~JKFbqWfM1A~!>#(v?()vZK2+wmHOQ?*4SWJb(5>u?Ichg*xpJn zWGw3{*S73l0Vl2y06vD$eSymSig3jy(uT=~x2oO~ygi&b3r36*%l?awaf`TC+I*0{(H-Nuax+m2a8=wJ6TomdXydMggOvQr#jKVc6Bx(wS10tW#P*vYG~~ zMi*_6VJjUJ8P-<2QvisJGr@*3k9oyJ+{H`6iG{hlfT2oE+*km^36x6|v{xK3#wk+d z;I6fM!6+1R24=7ByMW@X0<;TboMQ8sBBC-dQXqT$;e;^ILZA!*+^Vn`6beNUTq-Ca z-BTeh$id-+rkNa7=8!ZPq6!T-o0q45MEFHGM3}p!xCu^#nA9~b?_?|kHW#Ujj?%R< z)l&g0DlY^wY|Cf6xM@I?J5musER#wLA@6noj^#p;lVbx*DuA>!PQ&tCPf19CY-9$u zho=dzNbpVeW@v=6X%%)+D=S+AR;x@=V4@^gxRpq#RNmaQn<1=`j(QO1AXLU>yqSbM zCixD*#c^3!W>~n8#{O2=l4&L&W?LewQ2{~?7G*kDB-q1bW1CYZ1`Ze^EKQmuF^Udm zv~9Gh9E>yzmKzG>f*CGl%}_)#V+}GCSf;ji(4dI015AUnBWNQPg9QPc{X))8LYc9_H+Zi@6+$Ke)x0oz2bZvBMZ`Nkm+qHvHN|_gM z41m%%*Ek1B0EOc?lnl%)fY|_yNh2NU!1!jKqpMe)F2S|v;ca>{WwOB+a@BN~hls5} zv>B7{#UPLCymhegMhfr9jAa)h`XHUpUr z5pN{`t+=LQCP2`$MuQPF5WK2Ml0zD57@G`0TDuH*v@XJm7Z;%gnNq;fXnD0F0j-3b zy)-aTjLPFJTuk6N7DWPyH?rll+96D>*|rQLm1CBwq^`mk zxvYjoQ4}=j7`eGH!({B*8(=!)|A~a*?zZ5<2b<=8P5gl7+vQ6$SfhY3aof{WbilB^ zcnrr3-2wtzC0KzZivlPR1(IPjH36x!0;WSrn2B3ebC4b`n>zEb#oA3Q3rHbGh|1Df zQ@f}=&3cK5X^#!adR=dUwejF}W$Mc~`du<|BVSC|F}a}w*ayz_k=#hQm7$Rcc9@c& zTYzoI0Tw9`A_7A}(u5m|w}G~b;JrYqF>kk6P|&Gm=BikX7|Ei`7%Uh)M^0d^^f!67 z+iMMvTHW&RX|Sj_HB8Z9>q|;PZijx_-CBsEAjB0`3aMq9*wN^vkQA0^qsy5_Kp=*C zBP8^t(uk2qwreJyJ>Aw^&}IR!sU)HqO?%gc2@DK(z2}~Gs*xBVsX9|=X`9s~JmwS; z0ll74sA8akqwe3Z%X9EELYh{iZAF@4eqH*HsJ~zFcVqJhW~YOsQC7VQ_!_GQ zQPlY=lon*&&-lN0?>;}&{22`$%>FdhFXDVh$D{S0yUR~Aq!jQ``PaKHS5=Xa0M5bn zI{|wAdye1^t!QE;b~hCFTyi!}sQV9O*=qY-wd~i@<=eMCifdxzvA_5V1IZLsm*Ml8l8H55!GMKZE$pWy+^pHX_C5AB> z4u%#oDlAq%4^Vrd1z{8so71_U7WKf`n?#DAHkFTcl^iTPFgj(BrV79g)568gUP)ZS(cfOko|#y0xW2FM+~vLFHnc}~_4qQ&pMa$F58 zki71*#lVOcG7)=qy=_X(mhUY4o*x6?VTW?KWCxt9zMd9}iuO+AqbHNXas##=($CbF zk@U3ZZOstZ1B@CGQU@Zl2X5wFf)_K`AweRNA_%}VFpCNccZLo-`RL&%iXf0731|s{ zR~&HZlFM@!vS8ER?AzM`1sw#4t${9S=9z*7fEea+xpplfj!~q%srhh=uz{dt6??6g zQwu$CwnHOIxkj3j+=QNnpb?G&KE9G0SGwZk)PgL_D8Js{r@_ zSdf4PkE92>?gu!hKl>f6{}adQaB3rnoIVP)y5?~Bj1mU~Z~aesViv^qUaJ zbbVr&x^2R_qN5={PpTfaZk1lIW%w9Arv1)0ZHuYoQaZ4{|Ah^?gS*3g!6^Hzv3FTe4s z4-cqymDa0GlEAhIh(^3|hNxR@%m~I1hPNtE={Zy|*oktgT7>8meuzp&^Sc`pW!C&<&D)9?eX^Tkw!Gtgy_;D8PQI1nw|1hjB9Zaq|)!feJbP zomh<+vs3^GRaH&V!S$q@i>+!C0hd##&~BZ30wjht+CpROO&WkP+izzz0Ere7ELbB4 zM%V|iI%nGqV96LIX%dWLBOr>v7ui2U(c>haStxX|_hn_Rjan?MSh4sGB4c98IdM^b zkt)o;S(1t%Dw0X^yM^HHSCV^v>ahLamlVsp^B#t>JI8kztT4_SH=~W*PCQ0eOJG|n zFj-;RZPP1Fbi*AY1nInFzO$k472R{W-{ks>&KRzONIAbRs@F71MKp$(6d@y8)|7?; z*nk|5XLSi6$RrS(G*qqBMXy$H#afnXkqNRoUr)}x*77I0$;;*P`A}vq4+Xv!FaWp; zn)M7?uFTCHK;ZSM))&u z$qoR&;fL1P{SW2$o+s=7c3=N+|LgKG)u?21p^7Q2p-O^<93lWoNJRk7_ry*8`%I8# zK@~h0DGnqBEeeuRK?1xXE{kfiI=~96d{!MKsg$t(b#on=rfD=Y-0XdRuCNfaAVz3P zxue|!w|M$YRx%=qAf!eS1_Gr*LuBktIn4)(43LZnNU9Nl0IFUD9Dc8(KfcQKPrf9Nivgfz3Ujf{(@eJh+PiFfn!|c8-Z%MuBb=P`xN^t*E?mpwn_TNh>ngog|_3}uCBiYt@ zR|}x_g$nicR8@yi{|&&wnQd8u>*~a43?dMa{f0i9{^9 zdR>13=;hz%*5N@{e(0)0_ks1p(u|kayOeu5`AP|%8-yNkc?SF&ibxzMAodP%X}}*Q zLiWj&g4A81o4eNkZ4Eu|K!FBhzQc~kTbyqP8r%7l4xjuY~;_v$Dz;5N7?Pw zV8pSYu!1A>+*$dlLKr}Ziiod`0Wu7V1WBpEL?pRzC`3d)FS)jI@_y4byeTa#l~qvc zFqA~l2#AR&7=j3q0hed7?&od(zpL7l=kdIr(}2PRTu*H%j1)Ve}>M+4UN9<3NKzmQJr%pe@>*4TNT=__P=vU+3 zOmDks4b}xA+vW4u$hqJfg+hcuFW>R|zDI~T84(c#*H>+4Xa!XA9VX=l!*;Z=yE3&| zar3q&$fZw+5h{6v0>u0;v)kJH9o*kr4z$F_^`Q zvamKo5n`+rOllt|DGW$jRapE>3~`p(1r{iPq{f~xPb zn3V=mp<1y9FcFHzwNM#b3bwI|D#fWm1r`Ha1&`IzR9NL%bwH{zBMX+Z97JqEKvPUH z2Ph+0zu5=bbb+}&*K?#4_&ISG;QO{>drr1mz*PpJ*J_2mT z4O%HHQWdPIDNsouD15)0f*2V|+f1# z$0FBH1JkhS;x259*F__d)mw@jyrjzIsSFvSA41!?%1F5H=pr~30FJ5ka}Tl*?tti>B_5ei#335bl@C1IsP*;Z5*Rw=7NW;IfzQ9`20QnuQZEh+^{ z%GOaT4YgQNsZd&|RAN*SmbTjplBKkzDOTA~R?)PqZ7gCo+NHUd60m7t*0z;swGuW^ zZ78B8TSlctv`|%*jck=0XqBw3sdFnFN`f@CmdY$kWouZm{EJA8%3DFDT8i6fQ)@&K z6vSCjRaVlgR7p@^gG*M*QH7)#zq!wKp}D1uGFPw%U~v zmK9K<6S6@kGavk9jXuoZS|3WY_BTE$YOL^ibqLm5~s6kYz-T9j;_so6C)HBBPv$2 zp)odUDw( z!mU(_ptYzA=%X$9Jf4@A-CtwW_BnWWRgL@p)v6h<#RR0{JN#UNpEgI+e!tu2mo@)4 z{B{6%KGYg~hjh6Krl8Xj(F%^3>qB0ul)a@KLJ$ay$j4ZN+v)pg7je#_h$Vd8rFoTV z)&RJR;C7?h@2hC=83-Xn6I4$i>(=(}hYVk6^(qen7OJ4xMv!MTb-g{}*=@fXwq7Di zP&Qh7jnA5yJwSVK#DyJBq$>IVL*U%U1vL}0w6~xt$VP=!KTLj4(Cy&a@cCTlHp_f} znfv28(q`s0yR?KzzBm0md>oHj{-gNi`|s!>{X6zBq@G$ZK~W0*23cuU7EVbD3-m?P zEfqmhl7(3G{A|37_>YZ^`}ukpc-nBvvv8`vk81;kc{a_qOumY`KlL=5NTKsLe*5^} zH}8Dx^9Rj(n|rfItmFgA^7J_VE6`hr)}O9sG`VVWx?8^M!ohNg03^*0LIh&O4;!6a z^QT2#7t_NdW*953Jy5F7mOSdC>U)pqeolK;bMRI5CojBtdut0;Q+Z&s_#7=2)hny? zaQTT_HX8r2Xlk6qape2DZ-aA&N9*E#Tm)FZe$ciJmRtj&XS6RoLZq#UkcYP-kXiv1 zX;R>=nTzd>LVMFCotrIL0)DSO&D7NAeNS1%~l7`C_0Y{XG2_T^$C6PfI-Zp{)hKisRSVL0?ei}$wfMmj8*^y8A&?dv0J zh@??gu(r}cKvFCfVuFHzijYx3QA8C$QDVUrBvgnhEMlq)7DN>kR9`1=>^9H9=*w`( zqJpBss-0tsI(isP6B`gyP3VC@+B56+u|lvr(qceZC<2DVD*sQIfTLWt${7s|@BywzC+TLtgJtU{U^@6d#*vt&x0gM1W!i)DViYEie2=|0!+)k(< ziR}sbo@%$Nt%A5Yh%5ZW9E30kQJ;^ z-}`?j!m#L%y%M4k5JN-(5dok>0Fe?@twgua$5>IT5Uo$mFszUF_D{{GD~MD!M$ju+ zqzo8+q8e&f5oM*S?#l%agvnUy%7M88X(6*UdWWKbR?0W)(^hGjF(HN`B#MYUSX>lI z!mOLvaLXW~fg~}K2a%bLB%6^$xl(}82!b$Di~+0}6fa0*m}(ee5I9|AlD&Bj&$Vp( zO;A49RvL838ey_&kkh6@pu`q_sU=<1Axt8ykr+4^lk@&I25c}%i%CgWw95Bn1zrNg z4TggSC0(J_78EQkh!Q{~Igq8F#dto9ti=Pvm6#?N2w4UkJ{H%)^d6_dtC!B^$U;&g+z3JYvs?c^ zRs92pSiEk+0s_b|uw)EnzO5X*n_V>JwU39?Y%SJN$Q(GZTa2?aY@>$mO3GCTKEUKm ztAy>8;{6V%uW#}2b}G6xvmYuZ7n+L(D;pEf(Ehs{Y)v0)Aw{3qK+(=bJDJdki{7+F zv??nR58gF#q6jJU31TDfi7m0Miz!VGIH03SYsV&)(ip$Wh6H^pP9+=H_tpp^JSNnHCSt6ey1)PwP$Gm$S@he zT1yC`~(ie0qTfv=S*AHkGiXPD*(n#b+f5Ae<{woS3**Ja+G;iRUus zIrmLhmBRI$zb<@e==Nm$Ggk})HUF3K zc@VX9w6#r8K#?hM?dq>p(FbT`0ti!k>^7a?xX@BB@oGmutflH+)(+RU`-CDdN7?wE z&q5Dp&3HUu%!0_lnF&M^(?x<&hTT>Bl!#je;L*Vdxg0fvwb3LoxXpi>=eBaf-mmui z{<4p|czx(7=k0a;uRi~KuX4m<`#X%^jm6F6jAmbS10)7GX_=<9&DGV?nN3AATUgeJ z$91)nSz;mp$ieC-c`to0VUwuwIt&OSkA=5W=yRQ=mUk-q29$PpeyjUmCI?+OOb%ld zSbZ5vvW;g?txogR>xppac|9rIuXwB+HiMjqlbk9!&>{p@BjwrXGFE77m!^s~SN@}6 z$K(ET_6~Qa2|4KUNj7Ev(j4o@7c0PL@ z;D`$tip*#%5fNXV`Y(x@qQ)x~LP;N_P%#bBAz4%qv??3D^xgM|=R}n`ONa23c|M29 zP!Vpkh2lN=2HL=A$ms3Hy^c&_TRtayr}FQmIsdQ0+0j$Htq8^>n{B?k4f33OgpRLR6W51#1xEl|a&!kqv70sK z*u)QCtMY#{*5vcVP$FWYTw*d7-MzQ@6Ki^Pwbf*0t#c6|SNXU3zHeZr5UykbB~YX55{q1eRsg#Scv}oGrH-Ii!U*G9)y+&DK6oxkBPa+H3!zW-i3{cd$< z{O}=28!2`@hQh!`hl@N^v@BX>(QPTMQ{%SL-e_ac8Z0MopPS}8?u+dH4zB}+S@>oi zZ==Jy=L0+glZVLidITG-*zuPcj6a8-%FsYG5fQMY0p;A3EexdX%R8Qdg#k9PV$udC zRDq-S>3c>7?5O^}m;b$_7Ho=5|MC1R06@Bg-!1X!@$`RgBoI=iIEYT*x67(SHurI+ zNdTC0yq_I!e9nK5uI2pBD+V~@V<{Q9$(jla9awF-iv@-m>9o5y862oAqAXJtWehdv zuF_pnU^IdWv&*1Hv*F4m9mU)JQ3VDhuhe6BxA%XjMV9sVgB_P@+nU1vHlITyr*2-#T_?R~&T&)SXpVGnXUTkfdUMW^dwKX?^7sxcDWwvXDcHkHbnYe= zpn{a{)e8$Ug9eA4_5RPx(a-l;=Q!!H6s4C_qM>f zk=@)hG7z??+;MSWqaKWm#0Y38CRS$SYc-<7{g-EE`N`%c@|+!6>Axubj;G)JFNK}) zI=3U3YU$eD5+E=P$bWsYS1&6e;jxy-H;=qCoOyTVfGk23Hk1?-g)0=Wl7dNE*N#A} z$jazAlc!+>8XTJgAZat%kqEV@)tNmBkq-s}-29EjTSGEKK@-mJZ`{7s!uy)r z+tAa~LL3J|aW=JR+v2$AN|!rK??;ZDo+Y&r4o_CEVKV`5<^%xxhfepAEgXrQ0;%qU z0AdLvpP!$u_jl>;ccLjyl>rMtcO_@?rL#8b_twhz+M|cS>~{UO_d~HR5a|jd5e{fc zhF4G+svHka5E-7a<12>^&MwWnaN2Ph6YxuJ>x_w%FaAO+^gv_`#>V+Y*`8&6O=m+h zPJ1>pH{auFb#@Q)uUgc~5se^|1p$@iOW2;N>K{bLN+5j9c_v73nMB=eqbnE@p5M90 z+-dD&uxnj4_f1#c=c(@2wpd@TD+qXU*?#tWtYA`vc|3N4DmE$haV~;tEp;IJhWM`tVLD>-}koqZPF-XMIxf2!jM%& z1}ZrDqmM3>bZN1dN1I$wt^%0X3dOI&!skZkRos{}FtPv=7lFR~u3tZW3y!%`b@S<$M2fw1V zXgkkb>!tW!u{mc`)A9!nqLWxS*BbhEJ==Hw!nB2E5VPX1~-UAq$)X`zq~bICQNlo(D<0TnnJ@teZ6^8+D}9+T{5sK9>)2`}Q_Q;uNW zr`UmcxhuMd4CnG5=Usc z)|)QUMi3xK40>$cJ>xx|f;f3>a^9}LSF7UJyQg#c2IP-mwbpFr;BX420hwoH2n;FI zDxq!8QR|uEW;P)_Y9HHGUrM@k{wD9(_`QuuT^`HU`Cq;KpWFW5Z@7C$a>n3~xfF%Z z%W9ahWsczwA-)*HfQC_w13An4cu{qOxzW)$U}9Hfx^A?~ zbUWkyk^J}VK7EdnxuWFKVmtlKuvt#z6F!7cPMj(0G#QO=&k3AD;Q;ZAhj#V_PGyDV zO+e@uUbb&(}q@wYKY^Z22!!&FJy=?Q7xdYwXAi*^Z^mJPIDo z-$pOD)%}(ME^y`Po}+YaJMlr(>Rg!+GO;b!#Huiz#j#NwMr?^$ZoWN$4P*?Fxv^t( zcE{=2;Wx_ne}~uZ{uf>AyR7+qADrIG#&^^2{(SrC>+f;%`_PIVC9>Jj7NELD7O~X@ z7DEPOXZ*k8x=Udu4Aja@u-S9XS{c$c*K_H2%h%J?sL8+~3?P!PU*7nh^6P=Xd+s9| zQPe7;BbF?TmvV1%VmWu&4kZ*=wKiKK>6H@%%Sdn~NL>*)2oaW<2KVe@$pMRc5M##X zO#GyHzunwNY%U;ij$#8`5rv|ygKo?f%gSkRyC+pN;UQ=z0x>L8wG<55*DaVx1d-wz zAFA{Cf6ep1Kj77w{ob8k#-)Y>(q7nL>{zB$4;{DMN0`;Ekla4Qnu`SMYA%`~X;`K; z2mT_`KMs|&s)?q?T4RwF60~4ihv3 zzpAoVV_H7jg4T!n{ks2up$r?|9{;r8Zb(Ej$AI+qBB@&YzzY?SYM6J+w*Jw35RA3xIbHt!Y?p;LqzaYTP{LUs8kNBik8%_F`yZCmUA}aXfIZ zDE>mVnDq-5{RCU6Hg(_+D+MYmrj2qMi(5<6(g^zsR#j_Ns)38PHRJX1o{sNKF)l;x zK-t$G22*w7Aljv!(d2)UdK2T?q$Vz^RG1v4v=UTlIU1=OM>lm{UfL{+1uRkwCnp9e zHY@@B#_+~x>Ot0cK#?;fw}U4@ZSrA9N*U-!EkPAG8N|fo`db$N*s5I{@gF|ReTnts zGuPG2fM>}wX)8C*wQ5le@&ekLykCh|%d!maOZ6kx;yRF{3m z*6t8m$xkM`hH6qxu8Te)1X~Wq3VUx7hjea5uTK(TUWjJX5Zr0 zBONK{^@9?*fqZGox>zofr`(mCT+wh8IY){p*w3FY2`k$4sE8r)Eo&x=oS(01-X{W1 z)^)xa-ew|W4)LARrdaH5&lyue0=|~=_AE^VCP+F#P(xB(bw%!6zwJG2Q}T`G?7yef z$J&0lAAVSz8d(Ecn=EE#4XtFP;e^v~31#|&D-q-^PTt8F-@56Co>IoYAQ{E#9Pr!W zTupnN98!nkd6KK=EiIU3vQT{q_^C{*s8|*_Le9nzQLD=P7a1`;T)B=$wS)mbiDoQL z5^B+~LZrb~ixsIt*;sQB7pEkQrcU*5SQw3JV=fXBGI{=3rE&72VndmZ%+L~Bp@_`# zf=we`*uSP)T=g=X+-o@}@;vo%+oVMNsES%v){(>})fyvBMVV1`Hk$m%a5^LrqcGJ9 zYU7@gD5TT`VhK!FivzZ{nu>@Tt5UqC`)ZXzuNI}Swz4du2Hf@W(e7|nYsZtkdCR4c zcysEX%){fcgOAPldDVB?xkzkcl)_@2tI9RwOV_tNq~N#rKDt?P^jNGbrOrzV|K|^z zyY#<9IyaTCB{wOQ7hnIrc=KC%n%ZIlD&#k+X?$8@{@LB}GOcN}#wpAbz7SEcd<9+ZPRAV%N5;_d z7MI)EX|k&GY|VK6i=gFB#ZRcv;rKBrjk0{&MO$ZN(?z$rnhklit6^U+z<00g z55mfi4PATSDTM}i-)=+d+(^daI}E>z_PHa_TWT&YbeEl3G`NLgEatdWekli?Bxy8YVV#q-HMK`UbtsB8 z9%{L^VGJF+$l$YH=6V-0`ZC6 z$v3~Ol3`HI|CUhTEUj1AN)n}u7niWeI97k&mx+hPkqJ}{q3{&=4byFS*k4#&F1;Yp zR^4(;iiRc*$>NV<4kcW5HJd6s84^EO`Xf5#j<`V!GqXlQG_{uzW!)#)!7E!5`5LkW zfL^()J_-0P(#NbIgWmtsHz|iXTv{qCnL(2$&nRn>7Z|N?f~B=bgMXv{ zmfifapRDn=wn-**<4}F@YX9#3C{C@YtWU0MOQHvnry4H;Vr5b(0TK2{3mrS$=ho0!)vUGJI+Sq8erVq!)w{X&m`RF0ShFAXnwSVh z%Cl{L9$gMxrv#tIMQa3XO(=!He@-M9)5*{2-b6^4r#+EthzLu;>!P2SKM3vuTFpu; zEXA5=@%N`Ia4iv`rXhxn{-P6*@dT)xgcd`fRWwY z(=sLmjxsE2Up(Nv^Yoavb1E6!lzr-WB7Ts7Ht8#0vULII5I7^rxe5ljKz)C$J~n9E z@1F$@k|W#2ZzI9(N4kb8X@wbjzGL0KFrzKCIQ~YY6-cEdP5LhXlhP5u+7}G5|Fdea z`|k;db&F@t4Six++rg2#&lmkMg`CIthvkcZuDvZmn7=D7BEvE^H?I-5qI(7i$RRom z+AVDCr>Ls7qqmUiZk)Ln*%uCo#CQG>Ua?dI zx5P+B{=U$)UmT_)4~N6b{MwTRqfAll|2!fmTUU(QP2c5bwz=%+As0E#8jT-=_XMY9Zs99m&B*?{w6TZ^+g^1MTg`Y7R_#$*O1W+bb(o4ETrfWMjbrWG zY#M%|oM=-LtXci&t)J}P$)v~A{`OE={i3>4arcvRZ-;NEM}3*0qwj>CEVkSwXy(g!Mws`5a7$S#D2AbUXSo^6 z;Vjx6PPMu0&h)hP*3_6fifo4Q;d99TrDSyiR5G>|B=5Ns*#@fEaT-Vh%=(FbK3s`UM!=QajD^*3q&c{G9NFZTDAbFC> zpnBw`^t_taQMyaA*#rpAAQM`!6C)*iVae{7dOh6OMv8a6uY^Q3HjTQHqJ_jXFpw%C z7(@--!p0G3{bVDC8<3|c8EA5!-gnSjx2|Lnj^gV`7y}mvKKQlv0XMfISO#3j)fwF~ zefxfAXG771R?63bs?b8IXs4I>LnIA7gXsJv5;zxrA=p}F#G}&~TRR$iNszey`Z zMClt54hX;xe~o50ua{f-r=^8uN_Ba!;Tpx6uxFZnI$ips9%Mm5wp=k4mBEwdE%T%S zsxV14Y4bpdHpjqUV1bItp_8SF`N>h=z^j*nXS`-Lo|d^MXTWzaqjqRol>sYtx#fL;mDiVRe1!AO8Qqk(k)nn8t4!drWAP_%y$p7>mpteH21>k8Yb!yryTDLJ9}z)#zy` z;Ag(WV(B4}r)c&%B=h?0RfNOW`Z{l~0Epvp%CV3go3UWAP=S%6j0; zrB}x>7!dgjz*E9-&Xg43A=-NAKd3U*E`q0-o0hNDUO7NfC{N?9K`d$+L!hkPF?8KX>YKlBhXxd#vnk zZVmZK?q%g{U6k&_mFdQT@i>%S%Tf7AP``G4eBIK8r!y7j(;YlMtfI@KwfXOdV#JJCtCtLuoGW4tmnecf{o8vGc3y zb>EX~f}f_k&XBc%)NwiVlWX>}#AgX|$p)7V3a8YFK@|Qg0*idjEeuCB{07X!4LleO z-@}e2zPZuGyTY)r)OuD^|HDzU@DrShT?$`!8WXDv>4+=Y)#BQO(w9PG41mpWaP6~qest?IAG8^wnwL?F0*KbSC7JS z5>5J3ogxAOyX;LP{*jOW&L^gBuF6B(S!4N(`~9F|OBku5PGm_SzK52QEp9sByShjG z9hatO27%cWt|PzO|Exk8-Lt45j~KbZ9vaSkdx9tSE-+*R{-J~MBGPk3h{B4WeZVv^ z0%iCgZGXV#aS;+bi>G)xGFOAOl}@d>cWJKm{<+`3)32!*RQv_q<-(!1BbCm@Wp8L6 zDsCK@Nf&zc=pLiU^Vbi5F}a8DeWhUkA*~#dv%R}gTT>R+E73zDT6PO0p4I82f8rd54?IWr^31&&nH&oRl5ehojRDVCF+RYdzD zjhBKYfteOJ(a2VRqpx!kjy-Xp=bb|dhbC!He94hD6Y$1pCfzi$wQ1j}s*8>U3IKZ$ z^VNG={*27xBpPpDtW-%H6-gMv0GLa=502W=RENrs?BKe5agle@#HxdXSjs)(rI836 zbKqc@7(uf|g?kRkz=_|yI>#UP^K<=Rj(y%(0`J@f*{AG2zae>!?p91@FP!CD-G^5W zW(Vb})C<_}*^#3v+TR+P5=)5fP&C{n_)?{If64QfRXx%pA4!s+&*O=gT_a-Df6B9JGzEE zF=>(?4)^W2tnzCKK@+$IVVkGUh#~>e&q+?a}e zg2x&(MDZ)8EZT+9F=E?yoeF!VSrwQEd)LG2KczG+XmL@!%t4k6t}Bc+Q~;!bL{M_W zPP@H?(k3$STyDKojZ-G(znjsCFI zyrx#e!N;4+VFaVw{RzsKr;q{s`4og+vgv(2rzo>nv{If7y4mM_z>PkofU0Qn^su0lvA*f6x}TW^d!K10tx7;cDgMj=odtz2SYLVk@?O2|oilR#G5YE=J^6yp zd?O^*;J^%(-%CnZRw|3(O_;x+f*m%}Exn)2jz2dTZUZ)>3QnG*BK)-Zjwk__8sCA3 z^?`@K#}}px)-GG@uUt9?{R^gku)$LjKz9F_x#IGoy(4KojiT0T(|X(dgNvtCtj_Su$8Pz|vEW#$y>@M=Q*N20gy2 z>a^GIJd#kq2$mv+`F0_=Sy{MZDbT(3q~WeccK+7z@6F}BeQY(!!)KA+^(K-&OFUOv zLFD9)PH~)iTt6l)8TZml2RK}3vcRFnjxlk9#2$T(u&@0khQ+ZIrT4Za;;idIs(kJ3 z;iIkIo0x2tVg>YDTQiBTPMHPg)0@A4O@>)GnU1G%h1`E7r~*HTWaeo*>rfJWf|r=(vR2 zx5yD#H%HwCLH`6M2Xm(}E0>CpMmPDhV8hBhw9`bFs_F57K{+*t&%82ZB%$%Ey`Kgf zOOn};+`_E+QxV!F*41|4`|G)z8UfE^?qWc7ZO~Yv^pq$GK(~=hs#7DVci)ksmb9va zImRVZ2-$J@jp^Fv^4RLKEl3A{Wo0g`Pq7-H49CHzO zOFSLv{k);vpf1!;i9xCq&u=`6Qh6YcgK>d?gl|3Uyz3_D@Vp0{VhINJ|Fzfpb zuhz0xg@B#>^w^-fmV)UhN)Qr6mrL*i46`TC|OoL;~?JlFWq zT|+jO(An|*S&@r+$-^lvLq!g-yI4I%3BAWI$o|!!?ybSNs|&h4tlmCZZEK67cC)0J znB!E{9&HsiME_ogsKg|T;PFXi%Perhsz`cguO1Z+xVw9&!uDXh*c9HIF81Z#{AZEi zPM8GjTUH%Y^$mY_diArnn zdDg&w!oecNArn|Ce1=MOBw=M8;Yx{=%@x)Vwz|e7dR$snnL$Ewi**UY~!-Paam0@&9Pw3lA*BXho)h;d=y0`>VNtCHnql5j8PFKwG#Bo z>Nrp}wy>~Iv@!HWdBOj18x>0xZ5h5aMlecL&@29frQimn{ay1~lZSgP0ntg=#!Ui9dqPrDXZ%kmg6?!7||A~xt`Jfsly)73|&5+Zw6TO+zZBD zXZj3P8h-=gCA3=nTk+66C(aaQLDYrRFEH(JL@x%GcJJ-@P_@r=U`gYHa#cNtk6&W!aLDb@Y z!9U6o1I^DlJQ&lf*whTRWY#87a=DuX)9-n|DMmr4 zrb5HvPKGOB7BX(h32j$g9VL8atZ!NV>-sN5-o{oIu8;>x4Ye$MQWrL&UpKBP|GacoF66`ui(Y(`(|g5x{we;*^qbEZXc)yG!wKq$ zs}sx($UqvaJzA#3D!ILF_b2=5VUh{s(*&JLS`!eE#LviQiO?gGSi|mVXHG=+7Swag zt_wtqtR73w{3%$%qHS(&sx})GIaHq*Emx$ywdZ623&GSqdbNE|2e$WoFSb~m*!O%K zCW;B3xa;gLJ8&W0)EU;W8<3z)P82{3+_PPTgxDp2*c>kU$RvNN0$%Kq6*aeqGGTid zi9R0Z-VNeguAhwG>kmp^dK}X~=oQJD0e%oD_dF4pu6$JW%DJ_p5ML`f4rTy9rZ2kp zu3lode7PRHK8oL_58lWUnt@H6V`Vu(2Q4&Vj16iqs;Ww15%RWNiUYl|t3n0n6DK5# zgb)w`g!q+~>bTF;H{Xn{sxN2aH4{U~A-UmxG`Al$6>K|v5QR5x7r7XCSHYW64>Qc4 z74~#}U9H2wr;>hoAwq7Q5T@i&qzm*1DXJJ{5S)Ugv+o77{<+SY9K9?s4+%)2f$%I{n7HRv0&>Y zMZ}O-3nac&Kp|hzBBzQYIyg8WU`*0~BSVGz;hw3t?`erfmB%LuAE_OZcCOF*fC9D3 zMyjyoc_GvCQ4aVX^+Bgy2Ojsz(J*gfPMe5*>tyoLhrc!pfA+`keR~biA(bm!-6dqX zw5aCnXK%9e>7j-)5kik#rP~XQjSY3CVauz_CBUlX$^EL(aXq>yb^Exu65KMC;5vNv@ zAJ*`Yk_V$a?NCs}{3>4)oYL{~(3Kj1ZM+m52V;pMqL3@HiAq4<2bRFpN(gx4gsr&s z_MJobj7gaQg2H!d+k-kq$>F=CalXXGd==vWy~h@gPMrNKjp;Ti*!O)q=jdAP{E>zf zLQm*Em!EHzPgy4McPv8IrlFR=HjlCkYr0X>_i`{+UmR@ITac*?5AD_PI=6L)3v39lM ziQklsfFPV+sobT|jvb|2eLac>wR%B4=I6{qfo`3Nf;KKlVx@?%JhT6@!ss*#B>biQR}pGJvR~IrAq(b_KexHgtM-ll? zx83wE4k0^wpW#X2@zi(AZu%A5bI2v3e4IG{Ua3+F_@L0x+1;ZN>O3Fx;Au4MOcc@| zzPSFsSbS58(>sYc8$wdV=5~U&&N$W!+84_ET_@%7xWapqMX?k>%NIfkRS6N-_(U^d zaOclm9Q*amkg3{r*OQC1ehBCAfy}InG>$NCc;;VGgRZX_UVRK81t0IDB}IODulY2y zR7?rDclo@WY#i;IF8*Tid>#qXLKz|1J$|L8u`v66oi(kmZ&ksaPF9G3j+!WD_YpsO zeBrIX<0mDXpv^tOGkk9KJan}=F0WDP1O@FE)OyFe&Sdh33YlL@{ksD2#&_e@FU=dh?|wYDz~8kj zPZ_(`xFR=Bl#=cvAJG^YG9ru;p+e~=nvx6-eT|8afqa*S^ZH!n!C3Spm}X8B`pvXTIo?sbRM1IO3#(zSN9B5D`EokN`z4SRs-#LIX;n@ZdIf>FYx#Xp z306iKBoUgzW+g`$H%C)b<=8_?M;jphY@Y*xEYK32Jt4m1sr}7oas&3g-s^j7ahE=pqhwygs#Rf8NOaM4er$frDxw&WetsR9m-|5l%(3Z zTDTt5aOSnfPp8uC0p@kQD5t6J@Q}}&*#O$WaWlSTMVGCWF$>wX88bBGSzyn{8s9(Y zAlH&>Q#eJ3y97q8vf(mR2Nmfjc{WTj0&D>5C4!d8j#F~l9i9wwG%A9joU)?^E`cRzk2@|qAq=K} zJ)|3d`ZFORR{_v9!g#H+;yD`_@McKG4*GHMY)hundq=cEHGjkK2;@)W{mumO!hnUe z{}<;esO8~WZ73ztHN3IrasZl&2UvjX&lN~W;a{%aH$ z)(8dzyOd5uXopUVa-@FC#oO9LzpofQe(lrrz|uJVy;gD44%oUF@Q))cZlFTb<+WP( zIz42hMw98pJm2Arp5YP`SEKr?ov-MDQ|!Tc9jW@7UkIN4p>O(<6Kn~5uE5~Y=RWxS66xznRv6G zF{k;JGG%>c|0<}}>vHKL^0YK-)ugq@#>Q<6CFyM?B5(p1=u|7iP-I382k%yl>u3fI zTg{UG4t!QM45_kKiC2nas;N4Sg~e+|e0EULh#8F;})5>lS2n_ zHTt@zrj?BT;D+^4i*JTd@t_yx?1-@V*&hOrwB=iZe02Wbq06==E7Jt&_4EgV{o08e zPRMDX)O*(ihPMzHzt)3t5LwybN3dDE5ep=yWzTVLNJF4 zEEu$UpN)R&?!^EpsU5O8H8CyL+nByr{N3GOD@SW^%aNbygU?=8D86+h;^`7=gFXIe zuDb{9YNunoKC#|6~|Azrhctv z?p-(R7z&UdKBEgfFZS6mIDcYJa9EX+KRHu6U(d$ImA{;&riLErZcG(0wI_@z=r3>B zW3>CO_1F4P|AEw;gxTYR8fI)96=6wS8Ddu|#7YSr<M0|S{%@eA+9jOt@mH9&0zH(8g1QN>zhZ!v9QzP z!=A}C!Aj#CY4G|j)mdSZKl9LOeQv4?vS?%XK3RE^!6Y$*`esiC0Z5t+5rA)Wk(1u~o%33r%oGzapORnu)PTWrd2A zeHRIu6Ng9dU_;Ug?*VRe`GH1{IGer}(=oeq)^k)|xqJIEy#ytxMC}@?znV^8yk+L# zPBV)1uy*}17m?%}7C#;WR9h@+PO;1r#1&~(P9YzQPa7wnbEP51@&&gk;BS(_2lOfl z-@?E4bHJaw5i@|P`P80XvcJ#%@mIgl@NJV?PU9X&nQfo=Y}mm1@+V^ZfhFuYL0^%QZS!xvn|M zr@CJ$9=uo1l-l;B#sf=FbE-=Z)ZkxnQJfP-RE8&~_V3^`r{{^BkOgLK7iIj|5`!Qh zh^f#1SUAx=f5F^!t$xwl6%kb_7ZAex;w|?hF4;+isi(&f7dbW^6m1f#Mfq5&gpY~O zM|?nuNKC5zf0+Ny$S^Q;_&62F2{&pOnc&!yEbkIiP|+GGwAl@2dihPtE=5H-bUq}G zGNJiTUQ3}mawpODZQFN+^w*G1&||M_{nZlSURPFD*7PpfueH3ZKd zVL1=lG+C;(84^S?V}qajUOHS>0vquc?EJlg<&DROuFz!Mb{t#Q|GVj8+Mxk&Pgq(s7yPBby$;5JIEs-HuAMgj5;ujPtt}0Nf{|SR zk|~gPTz7UUe_gVV)q4c-jb(zhveIGfuWdLQO>e#&9E&iHoL6>$yvX9*7m;Ei;{u~F zV|I20#OQEy(TJhBL@yJ8G>7F{!eNJipBw@$%9KmkaWKxAcp?yAP5(c7nc=VJQqDCn z;Y7$g#_;me^T-G`hT87KMW&kt7&PEs2x>X0@UVy+$?=tmu_6F1J)6lLqa{4p#n17@f~r zIbyFf3n!tbUn*j|?b#J)eL;JkRu}v-kAqVISeAGA_U|esw)*Dkx0#vQqoz;PT)H(f zRSE#GGVnye;%GB5F%jia-lVZT?NgKzRAx4>A+>Gw!LZh3Zm!MAr=DRoH0YF7f5(Wg z1+u34W|?fEvt(B1!R>Pbkh*F&H-BblXRBj(7o2bAGn3^X=lh1MmmqgLY6HH!&E`K3 z&%Wq>tv5)kN=1F4qWVsM2EGDtp?H>klPqsMkJ*K=gxND8YHz$W$62zV)=b5R^&Wz~ z;q=BT)CDtjEcWE_mU zx&>ToLX~`kDaCpc#D3|;BEy<}MbVsg-m|g~5oa-U_=@iR^rd}L_QriYP$z!Nio2ao zAGLONaj+CPos!wv>b90i!bI@kmz2QVt-rcvta}i3y-xgywk8db0sz#`n+X9LT;HYM zP9-j~@{{^aKtgEe=P@yvTwHwe2b!&b5blgh@fJF2?Kt^QIm{k6cn18Ei5R#&v{K$ywW#b&WL57b>{*!oF&inpgUI4f=ND>a^h1Kmko!B4{!<_AUuvw9 zmB)omjWz>rSHx5P^n5L0FP#UR7^XH_05`Lf3w7`0>}UT$0&m+0t;7nu33Y!l_4)3; zBMVk4t=E8lK6^lSS6zqWR}u%-Cq~>wV9k@oW-o{fYK8XfQT5lmOM)l;1zJkLZt8`T z0O$hs#-bLeXJlmR)1@n@PKJ3J`u5u4%!xV}T8m{=v+Nx&@HN z(Z0S-zM5wl&9IWN30>+CbW1!9yo0Wfws=QJ0)%KAIXQ(gPWth}h}D51@%bSM2}y}T zPviVrB_$=r%gd|yxOUR7s;V5~YO1GFgx|gwU}EB-A|loX7e);9i;0=OWYNWF)G;wJ zzaI@*=kp6bf*R!HDe36w9o-`%BO=1~#rq{hMV*aYHkQ4Ah>J^NdEC#PP(I8$Dq)gJ zKcqt0veJS z{A5_-jti4WGyMFA{JiB^XlTg(F~E_d-B0|7e)%9KCMJ5z(+dET^*``3yyZgdo&UXy zt4j3u^_|_%%z!4+GAI3a9Gg(okN5v{Iw$H3BP3POIUkze)yOc}F9pj@IHn0g^(z#2 zt+Ttdg?v-{rYKn-2Tdqq6!rTHYjkAY;EGKa|9OH=*3kxI>Z&GuDptM4jKtH|uz2)R z%5HM;$JFnf5YGKh=C_7CZ(yVT2cDyP@6>l-1P($p?o%AnEj+!p6k*7(vm^cgbqRsSUa?F z*VXdP7T!mGOPS(JK=JL!3e1^sXqh*knpS;0M6%J^gN^TPj z27?+V0U(B|#d;D2>+JoH&4PVy<8@uVrkE6xf)vIzozk&3-p>X+Hy7tFo)h1@*6_ji zZs-2|z0XJj)P3cV_k$fAJ~MQ3%5fYsaJ2IV0?-$)rV7e-a^}=d@tE|o4tNjwPcqm4 zBQw)c=QDoE$HqHHyMEX=ySipM_Ay_$r&PHB-%B%fT{{7UZ+CCQVtbRV)~*D=@9^;7 z@$m3ad?Trq5>8r9Gb^j?JfukZg8ckw4ipky%HCT|>j;xwFq=#a4``F|_1%^~H< zDva8{*}r@Yy&9lTy}vy9m3@Rhl0Dqt$Ez#oFCzi8Y4USuS;jRROV;RMErKYtSmTte z>A%)ei&!E2T`hYIdSc#6AIm`0~$BOnx-i3gHN4w!Y*M_y9x|hAq>Alk33)dkySV8jM zbb>YzDyc)(v<`_;O(IxL8UC2f*CI=TI7dus=wqjK^h4hlzUSG6zx@PgtkAhKc~a`= zCyQ?N6qGZ>%VXupTcvgoTQhCk+#ydR)9xVc+i{EeArm9+OO$N&wHzwxz+70b>0ABm0ppDtLnf7+yYzIPMlt~eA z?qTJIzunahd+L2y!?&Qn>CCUYHB=8Y-L_Q@az~GR^Rq>}$nR=*?cF}+;MI%F@}(Ug z+gq9QaLJs!AUKKMb)T))?-t8^Y143h)8U#p2SoO}yI-{fJf=26?W;F*G#1J|U-|jf z`1trNK)^S8zSM_od-}PnNQ1J+cK(jGwk1EktgI~X6D0%T*Gj`?A8IPcU0?I1OOMpg z+-yjD>51JXicWTHZ%Y5m(TAoS9BNTL)5PjL&`w%9J%AVrLPJAC8mJ1QuWwvMUV?WG z@8E-DO$IRO6excef_P%=e^ic}r$wM|$8y&&l%Pb)R76}x%Z(J2HM(XPu8#sRuACbEa+>zZgTZ6mz9h^_=W}I-`1p)OEFR2GwW!$YApn02S zGIrx@payr#e>9t{XWF85b$ZjuRKW}yV z3|LGqE{D&zZz-^Ap}%l3$J38Sohn=%AJ6oBi3-8PT>rrj*e~rye$*S>*J!zX_|!W| zpGMtM8aDSv9Dx>}0qm2Sm%9xBaZ1i?k@H!bug(?fYF0`@^^@b6dEHdQr*i7z;#180 zG%nKOth>2+kmz*R>PP$-L%?jGFdM>}bp$PY!@1)Vd+%DGIesUK9?2ZW*lf3@dcx%} zA@q$?ttg+0gTjB!=$vTs0=mBdMg&^W0?C725jooeN+y%k`Ucg*k`0=@}RC znq@96*PklT-qD7}Jh`ZmrjhF#pW`C;DudMZ+LN!YjvCH})KRbXrO%{K>jym|qGyin z=-X2lz0Z$AfdUh|#hX%RztmVJYrXXyzV^<}sm`|QbzWYb90NCWjb*9k;?ilpoweb+ zy}h%=6QvSwclYxSL;f50530_ml`WsFRiMB#sC82I%CZR@Yy18&KGJbV3bz0I!h|(m zUNn0*ua+@r*N_MzI%)a{UzxQ8-7l*>8Ng||9nGGqE>yZYw|2IljyzWR z%}Me0u9&k?4F=zijzDJ{s1M^?AE%NxG*80-?_oge1_?!X zSTV-uyBa*KOo;Y6SQDd&Q|oK~%nRsY19He;j7`QapHwHbn^;hzzTJN#kx6PB*l%?d z>4mD@0n>eRY1PUMUh*R&A{yO2y2N8hc4tpx%wC;a!tik8*&Cs2rW3|oK){B6qWg+` zMO{OrtK zb+n_YrKaPSPtHCam5g9YyI-L#sNMYbj(Ii#55aOhd(zLDuPL|r(*`dsrR$uC>G~$+ z+1l%KTc-a&Q9r&QWb>~QAQc+=SuJ`q-}llD&7PG0+`+g0Vb7DIzcbaZdi+Tzuz=4E z;JN)v-|GeGQ;~dlaohg@12W3{+vkUO<`ZYn=x?VL6wp6Gdpe^gz1jn!b}n_?bTVyR zr~nO8PF+1cJvV%KrY}e}QcBfMfYk<%U_R!jXHwoA?R zz>T0|$G7&f59VJdWU<3LR~P8$`o)z&2RMGzC$^Oz*&BKw&<6pqIn-xSw!L{C?(jd3 zw%^Z4vb|kn`BI|y>s{`zudhnWZ=LDDpUE)G<7|EJ*i^I6q4n<{lqNR2RNk$ce2+V( zylSUjJJbZ({Eb<|S~@PKrb&QK>~!WF=VzZ2yA62D7r{M-zbS1U@M7$= z!7j`F{BLZ?*%x)w=$K45OrR7Et%|~v=)klOVP!!3bGsU@6iKbyut4>U+;&@1Z0ZA7 z74G;r_*KrVek!wgc$%nN_Ndasqr$s%>g+l>fXgPlD-AOU0&R)=mKVBbW#0cQD5y*@up`PD0ZO2_tNEIOguqF-l@*q@v9 zy^iPB@q3V9q5WIuS^KRz>CkBhO3|P8yI>Id78?ltpx}34yG|{blXEH}RzH7s`HS+z$jN{4UShE@X zW~EhXxbS|3hmrVWUj3qS=r=f9-?dr`kp5cU_hPbkwzyij@|=)#*L!-F3V-_U^ASDh z?|;|jnGL>;&G7jwz1-_2Kby;Z7MQ#*&Gxa6AZ76kIAa$1I8bxT}Y+OUbx1_GBc-jmanay zd|uSJ8K`%yU$lIn@-@m4U5i6LGWks`>K=vMmN*>OI8lh z^8Mrj%*AInZJ~U7r?%pE$*#ePu7Z zFt0Wka0Acv{|3{xq{Uii#W;(fEhoCPIvi!Jx8ukI>0Zmu*ba1;crR>nmK0lC+jf9e ziyuY0dae)S^_}+*TMw2+O_^m<(R~+uRa{KRC-*KT)3#43RT)7|%+-;u&Wj(;RasJm zZf7RN?CU3U70W=c`ZvFvU(VSFBfISj8_73zWyHj7=X|yq8ClLbD&I4mZ*4x(%udSL zro8b4Mc+0o+}pL1$85ND^~z%uCe@PmxvL$V!AE#Jx5Vq2f?zuXEkJ*0!b~fVC2?kx z4hRf#PAtLEWW|fgTsv-C0r3cb*bZ;7zy;f{#55(@-QTV?xU{+8`Y%_!-Bl80)@S59 z(syvPLcys^hXEU+M<(oF=QD!X z%Eij}J2wdaW;@%$n(;We>f6^=xVX5l-$<5D3=j6cTwk{417QP-QYU8hOa@=CStkaBYO<<~kmId1Vwmthxcm6ePbq*$v0%8IX5Fv{hl9^2X9ueR5I z9K1YUTZEVlU;sJ69F7hk{TppWUk90vtIFfPb{V_I3opZ$wBhD?uO6#*GrLK^>|`^2 zsw|Yn+fS>&FS-9b8n;|yr^m#;y%}Tqwx?tUYUQH}B-ov|jbr<(XhmE7HYufj9 z)ZfQm=3h~%{AwO0E8cV3|7SsW_lvrB-LBlZVn1&WZ#ixIv#Y;5zfA7&Ip%nt@A;jV z(bhV;^Eg=Uho?!IUwYX4|E^faejf$-=aJ(3-*|jCjwS)=>(8-!dBwcEyE*uFU2G$( zuPN^`@5g!hVP3z>xi2pt*IsY0g!QDY*{@&XUcZ&)(rh>H8hl2H&*t*;pW4?tuH|z$ zwOz+g*3Vw;p?F<~bMQO&{8ju8p51>b-~L}y>FI2qSG+qfcUA15_?zQ^P+pC+EUr&AV);nJF^^PmI-z$%y%kt^jsB>K7o5<>MZq3)P}?b*$C?u)Ykk<=rPf9tQ;Hkn6Z`H|`D?M@`jVG20sHm92H;W8At`dB-fT z*Wl^L!TJ}u@iX-Lr$=?}i}d`ho1?P+Zkqqt>Fu4DIrnLB8kZcKv$m(!z0rG%k25Q& z;QPCKOs3x|=grb+*HpUs9Co~ZYUe%9=ltuW=Ik8secs)FfqSl&!~u*f;pRI`Hq}VJ zN@=Uh#;ILIddFyl`0eFuA7Af^XJIqt-G%jmhZM>Om`?%y$56+>SWYTF)2%OF7#WKc8&ICsA5oo=SYoErY5?M69_ccYvBXgE0l#7uO^AAi`kvhx~O z**x8g-Ov2x^v`R3t5*K!ZW!)!qTjmL9J>WqpDwY3^tP?qHYc9Mv1KCLO(P2n%}WM) zEp44=wl!-C%w6tpOt&?hVp_Id*BrMVvvE0HF#9)t;^J~~EKv7#v8+5_EOQE|>vo^m zv4&5EvWiT`26BWs40YReIdiaFC$}lyUM_46D?!;|v{|?-7D5qkNuE-I^J$M_FygSW z^5_{Zt@?E>G$%5`K!M8bZ8%+cJ>;lCFgZ@50N;p`3GKOtE;Q5M8mVQo3Aa|$-je!a^X7iITrU^!_JZt{erL0I^>@HuAU6; zy75JhT;WMZy7_~ znatze7h`nJvuoXVjn3}-W!N8cyK~dZ<;$0JoiI9os`yuo()^RFtoG9~?&A-FU7_tg zXjwlU!8TzFLm{2*YKUX7?u0)ZAIzb-E-3Hn)+Qo4bqB=iiz%{ zjO^#?-Z^HTD{3gWPkJoM`rO9nH}idWm0v*Zgm!hrI=Z^L=3Xf`?Y=JKo+GU9m0hrP zfz^?KFcie^r!{2-T}4y`_NTFhcd~qzFqGzJRRU@Tb@i8wHaoWo$XY8~nZBCEI!n`H zkTzsvHEd42qKG0;L;@sdJ>nlK<4Z2$^?o6GmNX)QWrorF+pkaS7Ql}l$|M!g4=FBK zv8}mGP(>Ijih?Stg9K59s+Lb(3WzPMQf${)EjxG4Uk3JU#-aH6NT-nuLTH3DkqCjG zh?~zL$^YKvI^S2X{hX|*ogn2~e~E9IqjO7I+&VbB)f9*IDeFCct#8WPrQ*b7KD1~H zft`TV49vv?eP}Ip&71@WQ50qMzSl=FV4KGz1*$pc<(oD1RiQ02qa|Gb&Q4~)1a{Fe zRn*~SXJ%>e^tS(NPQ-FcpHe;UYdD)9g$C1j-&Q^uNUu9~ER*=Q`f@Bn592CH=A`rW zdc8W6gop&kQy4HJ8>QE#e+DO6`we1mx0 zTyH|-|WNGTovR|0(9o}$Pmiu(qLW( zp@lHDrgUeT!~ypgaLr0HAIZ+{3%4=ZnG4=R3w|fSe1EbYyASQ4c%SPBbuC45@LQwb z@A3D!=QoA&e{XM3SQMm4ls71kM&BaHxsJyFX`NdxtmYyOR%5`&%Fe%7AFg~8n$xOx za49i`a8AU{0ow1@-{iJ;`^|n^4lSJys(iBjwJn81&Tgqy?QWxU02H4I!YTOO-Bt_3 zCR^W8cz;TQmMMQ5+1vV>s}O*~V_e8(SwJF{3Iidq3@w`6HiJ_asNyk8#i>#iDSFat zXBX1E`0l0J z+_QDHD*~#bg2J#X0;Zb97CB^9WMyEXRauP03{xzz1q^E41Qft&n|yxUMi+dtTnYF2)_pgM$V)E<@de3SV=#9%tiV8gKVWj;TcP1`GPMS)Sf69YKmQ-+Lg1wS z!IRjbP$sZIlM&%s*;0c=i8Am~$6ESsrd~s|f+p|Sc^ylh303Q6mBlhu?7m;#V_B*7 zsJ{Kv$z&RD{&gMSK_e(oe5p{4;E7LsiA znC6Ik<_^XpO{)`}x=}1!FC41xak{Zf%^Wf`Gs)gFiJX(GPzn0xfEv4L z`-|VCgTq?vPNgXg&$aV5&(au%EzhOd$@K$bJfolw%>c-E5CizBQGL^|c-n77wO3=E zzx4jcl@EH7d=&~AmPACUXixwMw0FVkE)hs23)1mqh?NRhFji|V(Gec@EcW}L0#eN` zLsIu+bx>^~T9#)4)d*u-t>i%ZA_76Z@-t@M=j-(Sw%@?hwdi~q1iSoOzXphRyOVpb zYwoz5IRQiK7bExuAM0`M&48=|{q*zC3qlc#2jd?De{WdwDNNUH4gvT`ZwX0&d#>t> z3VY`+z9vzG`_(!eI0R`n1x{osrxqP-rV#z$d#A1em>=ByYmq8bKKiqj&DUVw*QpI_ z3(xdf_-m&Rc0x9O^Io^5UQH#K0QTp9o7t(7Z7ZV9V=)Y8t<(-73xe#ZZscNIDI*4zFT z;dj|%FC8i83P(0iH2a5+YAMR0!TrI$?|N-*Y;3vRJ8iRzL9k{b3G8TJ7I3h#Gdavm z{%vCX4r7j3{4r{KYqz|PUtD85{f9-xX!gF)?=|V#;xQO$M$YQB7(j$~4U1=im$1X4 z`dTaSlH+6Wiu8<*nfxNYw(l{O;=9d0OPN&^nS7nz#&zy0DlgarD8WO6r`^#}Vk#)d z{%_=8*XoQ#jkOiFm86n{A`n3|DTa-Pjpy2+dTr1WGHWvRZMijlr(m$GBo?S|SE3-| zLBxW0UG>+US6^tv!$UP@{QN5Cd=_7;8`-jAK0dmxu3N`~la0T3e%pILW4&%)JK}g= z=<(+5uW?-MEsnmgUm4(dUhji+baZrgT<3x5++2KoS87R!CF}B^m%QWS&xO&?%DH_G zjnUtul)}1Rr6u$3ZM|=@>8EUytE;;AS65x%`FihS<;%R9{U>RD9{A~Cba8Q9yIASD zpUqjE++1d!9v(4RMa$fvJ&wz%HxBpp>)d?{?)EolXJ<_+_l3)sF7HZLZg6==8K*Zs zCehxpzr|4M>e;6EaGn<~T{q#$<~FX}#qQ3NtJnB-uCC6m6He~atDN@^xOaCMXB_XH z#*ZNC>%qWmm%3q{oiA6XS67EU%cGN~-vbSUqWJCaj?S*GxJ%=spcuee4t1u*Yt_&q zlFBXY-&=D!)-%#;Ss>652ZK{6H9Afsraj;?{>-O=k(r!t%c&gHPXnhrW`2lO1RJLl z?mPR=Hc!U?_wIfd*%Atmt-{bP3^w~= z%^x4ZYjfQO9i8y;H9jp>+n71fg%<(q6n(8_RTvM_89OUp`ufIC}_&A^agI+rHIT&`&?m`R#O2<(5 zA9-rx!ROK3ZfB9dqJ}oFD~v@7t`6z5Bf_R^t$E+X=;@Gq(4@T_<~hANfMT(ckC4fD zB&^$c`?eNd-D0<`#jDgW!B}>_^SsTD!+GXEuczcQyFX*ArR9FEGg@W9xFS`Mgg=6h z(~#a!r`x+nyyPd>7y9zt?&VPAA)!-Rw0oD8`uEhwc2}W09VV$q>>(OuHbVqaf`W*M zs-n3lkgTaKT1JXlX<B0;JX>Dz%v;{9)bmDvkn&M+P`9{&Fmfd=~?XP3Uq$7h8cfN&wtb6M?et*z#z zSt9~HYgc$T^xk*hm>-&J1~a#{mLOWPn+~`&49v?d;k%#z$5g`Jm=%AMOq6Of06`jP z>B&qozTz58K7$6j)|9H8FwwhO-4Gx`00-vJq0`0WZ2P|8c)z)?$IIfyAQQ&jiQFCD z8So>JS9YHvU~9vnv9~N)j_w&!Whs&v7$vN%Y{;v4F$~x82D@A#gO@1<#vr<5-Mc!2 z41Htx#C@@f`c+<)k($+2LZQ^Er|VU9s&ZCB^D92(PFL*N5CBXw-yZzN<=zg?*5^q} z;cy_$gQ`0)U`csMQEp+1%3L>cg~STW4b(ZR2Me3V7q$XsQRot|T=#?$$Ou zo_}w>r{12_(XGt!cH2^}7;(T8=l-f68(bZyJLn!D`sKtRh5(F%w_5EluHwGH9kcSx>o z@1(svF_;;MiPraUi&utD)b$M?ZIyCb>Akq>BoXdvWbNYI!O(0(QS=_~GkIC^x*fQP zU>Sk=S`sTr#?z+Fb?G>dNadtOpg4mO$tsOxSy&;$G!9zw)!A$#1W)XmM?+jvshXup zj+asi#@Fa$`_~pI=y{3!$4EPJA8V!Ca$BRt(8e_J-{@uK#t3yv z*_P&(e#bvQv(|pN2LX`T6i(iZD&d7WmzL(ID_yL@D?_h(%wl!2V}6e7(yRPFdDiZ@ znnV1>)~st>3WZM{cvOk+)DAE;@ymIL`{B-c5d$O^ktJSEzIiFB zqkFL3hbI0a(gw6n>-`j>_iInQ2l`xj5fFQ?T~DR^(Gq)$(e)I6t@*sq>i_6};Yv0C z$GGs~B3gA5*wyp=hU1;v^E=J|b;w)1-CK_+s)z47l*kBi^6FYl1=_^clj#A5BEzhl2+#B0Bn z+q*HwpAh(e5O~vkJj{|5(W^&~K4s@Qqirt(mlIL7D7>C9KK$Lg&}CI} zmN|1(<)^8l)>L@;+^JR2t-S7XuP-8xD)QM5UO`lw^OWM_ElXVvw>xu==2)t(S$VW_ zXS#U#)O^m|@t$es^!)yIK6&Om^nCA|&y|*W$GGN`*5L9qknM|kYjxuXcq8^KgF6-h zizs0?ibFd|YSCH-XE1a5T$Is_H{&n*nDEX;RH<|NPYN~ms zdCQYn_<4-#O3DvE#`RIhUEu$IR=%vKPZN;D!C8RBkL zzAKjU@v7Qe<4$-dHR8zg73XI;%<$)1Yi~YYFBEu+@yaVNfbpeHE8zGD$BjG=A}<-= z;I%6|j``tQ_!Lhse|WXF_-1E!pg8ys8i#@%<>P8u$IfBLl5*n{mAt1OR;}e;J^X7| zzcU-hM}j;`ryNI*eo~C@uX>^74(Z-1d3(Fom8Cm;z117bGZ60Y?=O12_Kfeq@24be z@9+@>?(kQ_t9$Qwcq@w<3U|)tJ^mR~SI0#-_)upaFB3S|!1Ni{$B4X7H!0u69xWPC z@x9gXUP|6aqsGE$*4C#pmOF&y&hy0Q=BJ;L&E|3xSoy{_bDYj<^EjRF6PFq0OQ&ha zNb;2)RH0??^Oz?kPDc>rs(5k*hac9?ca&MnyP3xGTWWFh+;!)tEyK@|$DL6gdCQVA zayfbjBD0p0!g8&zDcx6(7`UzT=4Gt!d0tNn^BFktMsedfwHJz~e2c-Narcyh`^S{npWa9z?p+6N%x)MDRGriN?ig==rMWGo0ti zQRiFFn2F3SuzUl+Uj^>UqUU*&M}AV5zNeSV-uJkVn)rAkpq>YME8*OCo(*YKUl+dd z;^EJhY1KKL^J30ub9kNzFB)+;oOp}p8gefbc$}!V#XP5Z;aYjXIHwWKglBr1;unas zy*RhTad~kkA@4Y%iNtRc!;D$u-8pzho*q7Zjl6d*oTYiXIH`pr@MA zto1|d3(xowvBuKn(LLK?BofC(~9_UseAjYPc`q9@9rM@_jmWov2U8QyS#h5 znqzyWk$aj}l=8jBdz7N1#?waqs2KDOb)QxsQjRIrA4@9G-Dj@_8I=PD&hS6?{ARsJ4@h z@{_^vOKZjjswkb@c6~DiQU9JJST)i@0_@`pWoNcEb?k|U#x#8n#yqkGjWluwtuRc{CcsVa3^9#$0 zqH^QMl~FC^m%9^>7~5}$jOUwedG0xh%JLfV;wG(mTg2odq~*z;H=BZU=gmd6r8~Lt z1$q+-DHF=zb=SR!Uc=2&K=4GwS?`wI7 zE=nAY9rbvXYs<}f^5@5xo@DVw@edQmTYN=Memv6NT;E3v&&IKNJI@1? zTJc;?C~-S{9}7=4@8a3vtlPs_l{`EA6mN~==i_-wi^$@Wl{njcRC(1`ofJFjQF)Z* zOJ%P zjzh-s;>EEehMG<-JbIU8u%*w8RM(TAh4vEo4PLDiQ=u<19 z&yPTAs3_=gUXCelB8Qu^&pMprn>>Zhy_cLXH#DVrr5to})Ok)>$~=6d(`jOHoSd{! zn~OKM`8ph&uND}bd^OLVtIs9oXEKj2LWdqPRrDfK@~X~D%G>B2uW)yn;gZhp4-X8q zsJ;hyz7&053B=>!#=J#1ym+9!(~CS3w)LOtja8RN(;eNQ%c&lQ}`aZX1bR?gG8QCGYn-RTxd z@!CWIKO8|6q(O+q--wbR$P`zkMO6j)i2QnDD2!1=X>8L7AdGHcBO*Ww(l9n?hJ#3^ z!HBgoEW5A5RI%7w536r;a%Eh((ZO@W#uY$WoUmGL$cwISDWXn6Bn>8oB7lhkxS#AD kut6ZLD_6?igfJ!|8Sd?wuwIhFod5W{k}1N3hdyp?u&$zMa{vGU From 53ee192dc53e22100254a0b69b83d3f5314eb2e4 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Mon, 11 Mar 2013 11:10:10 +0100 Subject: [PATCH 321/407] perl-Error: bump to 0.17019 --- pkgs/top-level/perl-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index bff7911d843..a03abaf73e7 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -1763,10 +1763,10 @@ rec { }; Error = buildPerlPackage rec { - name = "Error-0.17016"; + name = "Error-0.17019"; src = fetchurl { url = "mirror://cpan/authors/id/S/SH/SHLOMIF/${name}.tar.gz"; - sha256 = "1akr35g7nbhch8fgkrqixjy08gx19brp981wyxplscizwcya64zh"; + sha256 = "0m09jwjs2x8j50bh3cg3m2mbxa7qh9i2krgq7z8h1pgl5dscyg2i"; }; }; From e45d55964b870faef47fe7566d3d017411b664b0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:03:29 +0100 Subject: [PATCH 322/407] alex: update to version 3.0.5 --- .../development/tools/parsing/alex/{3.0.4.nix => 3.0.5.nix} | 5 ++--- pkgs/top-level/haskell-packages.nix | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) rename pkgs/development/tools/parsing/alex/{3.0.4.nix => 3.0.5.nix} (81%) diff --git a/pkgs/development/tools/parsing/alex/3.0.4.nix b/pkgs/development/tools/parsing/alex/3.0.5.nix similarity index 81% rename from pkgs/development/tools/parsing/alex/3.0.4.nix rename to pkgs/development/tools/parsing/alex/3.0.5.nix index 3160570b240..683ada1bf02 100644 --- a/pkgs/development/tools/parsing/alex/3.0.4.nix +++ b/pkgs/development/tools/parsing/alex/3.0.5.nix @@ -2,13 +2,12 @@ cabal.mkDerivation (self: { pname = "alex"; - version = "3.0.4"; - sha256 = "0fgh7ziwxyb140wghh7dpndh41sixcssnba0q942cvkg77m6ah6d"; + version = "3.0.5"; + sha256 = "0ncnp7cl7dlfcrwzzcp8j59i9j5r66wim1yib9g3b3jkl0bn8cn3"; isLibrary = false; isExecutable = true; buildDepends = [ QuickCheck ]; buildTools = [ perl ]; - doCheck = false; meta = { homepage = "http://www.haskell.org/alex/"; description = "Alex is a tool for generating lexical analysers in Haskell"; diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 8275aee4f52..d1a0262bc1c 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -159,7 +159,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); xhtml = self.xhtml_3000_2_1; # 7.6 ok zlib = self.zlib_0_5_4_1; # 7.6 ok cabalInstall = self.cabalInstall_1_16_0_2; # 7.6 ok - alex = self.alex_3_0_4; # 7.6 ok + alex = self.alex_3_0_5; # 7.6 ok haddock = self.haddock_2_13_1; # 7.6 ok happy = self.happy_1_18_10; # 7.6 ok primitive = self.primitive_0_5_0_1; # semi-official, but specified @@ -2013,8 +2013,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); alex_2_3_5 = callPackage ../development/tools/parsing/alex/2.3.5.nix {}; alex_3_0_1 = callPackage ../development/tools/parsing/alex/3.0.1.nix {}; alex_3_0_2 = callPackage ../development/tools/parsing/alex/3.0.2.nix {}; - alex_3_0_4 = callPackage ../development/tools/parsing/alex/3.0.4.nix {}; - alex = self.alex_3_0_4; + alex_3_0_5 = callPackage ../development/tools/parsing/alex/3.0.5.nix {}; + alex = self.alex_3_0_5; alexMeta = callPackage ../development/tools/haskell/alex-meta {}; From 807cd9ff1698fa7133bd35511a56cc209c6772ed Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:20:20 +0100 Subject: [PATCH 323/407] haskell-idris: update to version 0.9.7 --- pkgs/development/compilers/idris/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/idris/default.nix b/pkgs/development/compilers/idris/default.nix index babaa2e2482..b5f9446b8a4 100644 --- a/pkgs/development/compilers/idris/default.nix +++ b/pkgs/development/compilers/idris/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "idris"; - version = "0.9.6.1"; - sha256 = "1wy79rrm5pvg77i9nvwkcg6swsdbmg2izch48n4lj4idj0ga5g62"; + version = "0.9.7"; + sha256 = "0y3rnxbs2s7kxlzlc347vwpylw2p0pdz50zgkyii21gd6klqvd45"; isLibrary = false; isExecutable = true; buildDepends = [ From 0f18c143e5ed27bb7b75af707830646f2f6ed23f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:20:20 +0100 Subject: [PATCH 324/407] haskell-hakyll: update to version 4.2.1.2 --- pkgs/development/libraries/haskell/hakyll/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix index 86b70bfed52..35204f853a3 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { pname = "hakyll"; - version = "4.2.1.1"; - sha256 = "072fl5k8fwmrx1rwb964cz0kn1hcyda13l597mqdmdi2ky5s5hf0"; + version = "4.2.1.2"; + sha256 = "0b2jmi9hi5l72lkyjn2w3gwn52zvnvv7c10x5329hp000gzmwbvi"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -22,7 +22,6 @@ cabal.mkDerivation (self: { QuickCheck random regexBase regexTdfa snapCore snapServer tagsoup testFramework testFrameworkHunit testFrameworkQuickcheck2 text time ]; - patchPhase = "sed -i -e 's|pandoc.*,|pandoc,|' hakyll.cabal"; doCheck = false; meta = { homepage = "http://jaspervdj.be/hakyll"; From b749ce135da3d662fe2fbebb2c3dcfb1aff3133f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:20:20 +0100 Subject: [PATCH 325/407] haskell-monad-logger: update to version 0.3.1 --- pkgs/development/libraries/haskell/monad-logger/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/monad-logger/default.nix b/pkgs/development/libraries/haskell/monad-logger/default.nix index 173529b443d..5b580a8594e 100644 --- a/pkgs/development/libraries/haskell/monad-logger/default.nix +++ b/pkgs/development/libraries/haskell/monad-logger/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "monad-logger"; - version = "0.3.0.1"; - sha256 = "05pwccs2f5qn22cwvzaiw6bflyxl3avrl89y737rjcsw6755r5sr"; + version = "0.3.1"; + sha256 = "09bgj436hyyc5x0flkwcxx3m97y5pm8whd5cc6a0q7bc4bnzf80j"; buildDepends = [ conduit fastLogger monadControl mtl resourcet text transformers transformersBase From c3dc9fbe6174af126314ab7d30ebedfde703f93d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:20:20 +0100 Subject: [PATCH 326/407] haskell-yesod-json: update to version 1.1.2.2 --- .../libraries/haskell/yesod-json/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-json/default.nix b/pkgs/development/libraries/haskell/yesod-json/default.nix index 4b1777676a8..b395645557b 100644 --- a/pkgs/development/libraries/haskell/yesod-json/default.nix +++ b/pkgs/development/libraries/haskell/yesod-json/default.nix @@ -1,16 +1,17 @@ -{ cabal, aeson, attoparsecConduit, blazeBuilder, conduit, safe -, shakespeareJs, text, transformers, vector, wai, waiExtra -, yesodCore, yesodRoutes +{ cabal, aeson, attoparsecConduit, blazeBuilder, conduit, hspec +, safe, shakespeareJs, text, transformers, vector, wai, waiExtra +, waiTest, yesodCore, yesodRoutes }: cabal.mkDerivation (self: { pname = "yesod-json"; - version = "1.1.2.1"; - sha256 = "0vrhn3v26q7cqwds99hqyibq09vyxnviqzgyn7w5ldnl3ycg7dqd"; + version = "1.1.2.2"; + sha256 = "1bl4rs3biv2man0n8ijldil32lyswjqk5ykz0nv06qsaaafjpc3g"; buildDepends = [ aeson attoparsecConduit blazeBuilder conduit safe shakespeareJs text transformers vector wai waiExtra yesodCore yesodRoutes ]; + testDepends = [ hspec text waiTest yesodCore ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Generate content for Yesod using the aeson package"; From f21539578e680352b12885fd43d93b0006ceeca4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:20:20 +0100 Subject: [PATCH 327/407] haskell-alex: update to version 3.0.5 --- pkgs/development/tools/parsing/alex/3.0.5.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/parsing/alex/3.0.5.nix b/pkgs/development/tools/parsing/alex/3.0.5.nix index 683ada1bf02..f85aa42d165 100644 --- a/pkgs/development/tools/parsing/alex/3.0.5.nix +++ b/pkgs/development/tools/parsing/alex/3.0.5.nix @@ -1,4 +1,4 @@ -{ cabal, perl, QuickCheck }: +{ cabal, fetchurl, perl, QuickCheck }: cabal.mkDerivation (self: { pname = "alex"; @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { isExecutable = true; buildDepends = [ QuickCheck ]; buildTools = [ perl ]; + patches = [ (fetchurl { url="https://github.com/simonmar/alex/pull/21.patch"; sha256="0apv3rk00gwkf5rqw3467bg6pnamr07zdksbp9khhzzi73k9aq4f"; }) ]; meta = { homepage = "http://www.haskell.org/alex/"; description = "Alex is a tool for generating lexical analysers in Haskell"; From e1f633bdaed8c48bc881f6370067ad8104d972d7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 11:36:15 +0100 Subject: [PATCH 328/407] all-packages.nix: strip trailing whitespace --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c642a238a65..6325b0a52da 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5928,7 +5928,7 @@ let linuxPackagesFor = kernel: let - callPackage = newScope self; + callPackage = newScope self; self = { kernel = kernel.dev or kernel; From ffd11da9d925fe7bd3184807d515456b53e2f158 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 12:25:53 +0100 Subject: [PATCH 329/407] pkgs/build-support/cabal: enable 'doCheck' only on GHC versions 7.x or later Older GHC's come with a version of Cabal that doesn't even understand the --{enable,disable}-tests command line arguments. --- pkgs/build-support/cabal/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index 38f2c4c6115..c1b8d6d5fea 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -92,13 +92,12 @@ # pass the '--enable-tests' flag to cabal in the configure stage # and run any regression test suites the package might have - doCheck = true; + doCheck = stdenv.lib.versionOlder "7" ghc.ghcVersion; extraConfigureFlags = [ (stdenv.lib.enableFeature enableLibraryProfiling "library-profiling") (stdenv.lib.enableFeature self.enableSplitObjs "split-objs") - (stdenv.lib.enableFeature self.doCheck "tests") - ]; + ] ++ stdenv.lib.optional (stdenv.lib.versionOlder "7" ghc.ghcVersion) (stdenv.lib.enableFeature self.doCheck "tests"); # compiles Setup and configures configurePhase = '' From db104a8c3fce7aea8974a95ca34b1648717eb488 Mon Sep 17 00:00:00 2001 From: Andres Loeh Date: Mon, 11 Mar 2013 12:46:26 +0100 Subject: [PATCH 330/407] haskell-constraints: add package --- .../libraries/haskell/constraints/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/constraints/default.nix diff --git a/pkgs/development/libraries/haskell/constraints/default.nix b/pkgs/development/libraries/haskell/constraints/default.nix new file mode 100644 index 00000000000..0fe2cb8864a --- /dev/null +++ b/pkgs/development/libraries/haskell/constraints/default.nix @@ -0,0 +1,15 @@ +{ cabal, newtype }: + +cabal.mkDerivation (self: { + pname = "constraints"; + version = "0.3.2"; + sha256 = "1fmjl6dh2iswvmq8r3izplp6zg9m8yq1c4rj0zpqjbv2iqsi4kl1"; + buildDepends = [ newtype ]; + meta = { + homepage = "http://github.com/ekmett/constraints/"; + description = "Constraint manipulation"; + license = self.stdenv.lib.licenses.bsd3; + platforms = self.ghc.meta.platforms; + maintainers = [ self.stdenv.lib.maintainers.andres ]; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index d1a0262bc1c..4ffd314f3c9 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -630,6 +630,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); configurator = callPackage ../development/libraries/haskell/configurator {}; + constraints = callPackage ../development/libraries/haskell/constraints {}; + convertible = callPackage ../development/libraries/haskell/convertible {}; continuedFractions = callPackage ../development/libraries/haskell/continued-fractions {}; From 7868a3e6b2e4b2035e00990abdb96777316a1851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 11 Mar 2013 14:02:16 +0100 Subject: [PATCH 331/407] Revert "Fixing tarball build (failure evaluating glibcInfo in powerpc-linux)" This reverts commit c94595f13b24dcde98688134cb29d4b0b06602ff. This was fixed by shlevy in 1c861818578cf221c4b9ccb35164871b00d9b235, and I didn't notice it. --- pkgs/development/libraries/glibc/2.17/common.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/development/libraries/glibc/2.17/common.nix b/pkgs/development/libraries/glibc/2.17/common.nix index 45d2c6f38e6..3006ff49013 100644 --- a/pkgs/development/libraries/glibc/2.17/common.nix +++ b/pkgs/development/libraries/glibc/2.17/common.nix @@ -16,7 +16,6 @@ let in -assert stdenv.gcc != null; assert cross != null -> gccCross != null; assert mig != null -> machHeaders != null; assert machHeaders != null -> hurdHeaders != null; From 3d55f1d222a1f47f30925c18af051dd4db49e24a Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Mon, 11 Mar 2013 17:43:59 +0100 Subject: [PATCH 332/407] nijs: Bump to 0.0.4 --- pkgs/top-level/node-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix index 19ad2164851..db5b672a599 100644 --- a/pkgs/top-level/node-packages.nix +++ b/pkgs/top-level/node-packages.nix @@ -751,13 +751,13 @@ let self = { ]; }; - "nijs" = self."nijs-0.0.3"; + "nijs" = self."nijs-0.0.4"; - "nijs-0.0.3" = self.buildNodePackage rec { - name = "nijs-0.0.3"; + "nijs-0.0.4" = self.buildNodePackage rec { + name = "nijs-0.0.4"; src = fetchurl { url = "http://registry.npmjs.org/nijs/-/${name}.tgz"; - sha256 = "0rcqycb4nigfasxfjw1ngh556r5ik1qr58938nx6qbxzkrm0k1ip"; + sha256 = "0hr7chc4wrynq5mlakchx3p715i50ycakbqj4jcngx62wk9l42qd"; }; deps = [ self."optparse" From 65a4f741fd0bb5cce0ec123476df5751b607a4e4 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Mon, 11 Mar 2013 18:12:46 +0100 Subject: [PATCH 333/407] Set platform and maintainer for xbmc pkg --- pkgs/applications/video/xbmc/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/applications/video/xbmc/default.nix b/pkgs/applications/video/xbmc/default.nix index 96423a52369..66c0938eeab 100644 --- a/pkgs/applications/video/xbmc/default.nix +++ b/pkgs/applications/video/xbmc/default.nix @@ -86,5 +86,7 @@ stdenv.mkDerivation rec { homepage = http://xbmc.org/; description = "XBMC Media Center"; license = "GPLv2"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.iElectric ]; }; } From 5186e75c4f171680ccd20bf18c324bb0c6d77362 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 11 Mar 2013 19:05:45 +0100 Subject: [PATCH 334/407] emacs: update to version 24.3 The builder.sh script used to call "make bootstrap" before running the build. This build step, however, removes all kinds of generated files normally included in the distributions -- such as the 'configure' script. If that target is run, then new version of Emacs require Autoconf and Automake to compile. Since the benefit of running "make bootstrap" is unclean to me, I chose to remove that build step instead. As far as I can tell, the Emacs binary that results from this build works fine. --- pkgs/applications/editors/emacs-24/builder.sh | 2 -- pkgs/applications/editors/emacs-24/default.nix | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/editors/emacs-24/builder.sh b/pkgs/applications/editors/emacs-24/builder.sh index d04e7a4fdd3..c472d2b1a64 100644 --- a/pkgs/applications/editors/emacs-24/builder.sh +++ b/pkgs/applications/editors/emacs-24/builder.sh @@ -29,6 +29,4 @@ preConfigure() { done } -preBuild="make bootstrap" - genericBuild diff --git a/pkgs/applications/editors/emacs-24/default.nix b/pkgs/applications/editors/emacs-24/default.nix index 82238a55d1c..a781cb37346 100644 --- a/pkgs/applications/editors/emacs-24/default.nix +++ b/pkgs/applications/editors/emacs-24/default.nix @@ -9,13 +9,13 @@ assert (libXft != null) -> libpng != null; # probably a bug assert stdenv.isDarwin -> libXaw != null; # fails to link otherwise stdenv.mkDerivation rec { - name = "emacs-24.2"; + name = "emacs-24.3"; builder = ./builder.sh; src = fetchurl { - url = "mirror://gnu/emacs/${name}.tar.bz2"; - sha256 = "13wbjfjmz13qpjwssy44nw2230lllmkkgjsy0rqfm6am2cf87n3k"; + url = "mirror://gnu/emacs/${name}.tar.xz"; + sha256 = "1385qzs3bsa52s5rcncbrkxlydkw0ajzrvfxgv8rws5fx512kakh"; }; buildInputs = From 859a22759527d6479f7836fe9638a5e3290f84a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Sun, 10 Mar 2013 21:23:56 +0100 Subject: [PATCH 335/407] sdcc: new nixpkg (SDCC -> Small Device C Compiler) SDCC is a retargettable, optimizing ANSI - C compiler suite that targets the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based (hc08, s08) and Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit 2000/3000, Rabbit 3000A). Work is in progress on supporting the Microchip PIC16 and PIC18 targets. It can be retargeted for other microprocessors. --- pkgs/development/compilers/sdcc/default.nix | 32 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +++ 2 files changed, 36 insertions(+) create mode 100644 pkgs/development/compilers/sdcc/default.nix diff --git a/pkgs/development/compilers/sdcc/default.nix b/pkgs/development/compilers/sdcc/default.nix new file mode 100644 index 00000000000..ebc052764f2 --- /dev/null +++ b/pkgs/development/compilers/sdcc/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, bison, flex, boost, gputils ? null }: + +stdenv.mkDerivation rec { + version = "3.2.0"; + name = "sdcc-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/sdcc/sdcc-src-${version}.tar.bz2"; + sha256 = "15gdl04kqpvmwvvplss5nmp3bz8rhz48dhb0wmb2v9v9sn7qj01d"; + }; + + # TODO: remove this comment when gputils != null is tested + buildInputs = [ bison flex boost gputils ]; + + configureFlags = '' + ${if gputils == null then "--disable-pic14-port --disable-pic16-port" else ""} + ''; + + meta = { + description = "Small Device C Compiler"; + longDescription = '' + SDCC is a retargettable, optimizing ANSI - C compiler suite that targets + the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim + (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based + (hc08, s08) and Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit 2000/3000, + Rabbit 3000A). Work is in progress on supporting the Microchip PIC16 and + PIC18 targets. It can be retargeted for other microprocessors. + ''; + homepage = http://sdcc.sourceforge.net/; + license = stdenv.lib.licenses.gpl2; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 80871cef38b..edc90deb7e0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2664,6 +2664,10 @@ let scala = callPackage ../development/compilers/scala { }; + sdcc = callPackage ../development/compilers/sdcc { + boost = boost149; # sdcc 3.2.0 fails to build with boost 1.53 + }; + stalin = callPackage ../development/compilers/stalin { }; strategoPackages = recurseIntoAttrs strategoPackages018; From 897840f76fe3866f434d7c691da6a4c30d43317c Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 11 Mar 2013 19:19:48 -0400 Subject: [PATCH 336/407] Add cairo-1.12.2 Needed for an upcoming fix to eclipse. Signed-off-by: Shea Levy --- pkgs/development/libraries/cairo/1.12.2.nix | 85 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 86 insertions(+) create mode 100644 pkgs/development/libraries/cairo/1.12.2.nix diff --git a/pkgs/development/libraries/cairo/1.12.2.nix b/pkgs/development/libraries/cairo/1.12.2.nix new file mode 100644 index 00000000000..254998b6e7a --- /dev/null +++ b/pkgs/development/libraries/cairo/1.12.2.nix @@ -0,0 +1,85 @@ +{ postscriptSupport ? true +, pdfSupport ? true +, pngSupport ? true +, xcbSupport ? false +, gobjectSupport ? true, glib +, stdenv, fetchurl, pkgconfig, x11, fontconfig, freetype, xlibs +, zlib, libpng, pixman, libxcb ? null, xcbutil ? null +, gettext, libiconvOrEmpty +}: + +assert postscriptSupport -> zlib != null; +assert pngSupport -> libpng != null; +assert xcbSupport -> libxcb != null && xcbutil != null; + +stdenv.mkDerivation rec { + name = "cairo-1.12.2"; + + src = fetchurl { + url = "http://cairographics.org/releases/${name}.tar.xz"; + sha1 = "bc2ee50690575f16dab33af42a2e6cdc6451e3f9"; + }; + + buildInputs = + [ pkgconfig x11 fontconfig xlibs.libXrender ] + ++ stdenv.lib.optionals xcbSupport [ libxcb xcbutil ] + + # On non-GNU systems we need GNU Gettext for libintl. + ++ stdenv.lib.optional (!stdenv.isLinux) gettext + + ++ libiconvOrEmpty; + + propagatedBuildInputs = + [ freetype pixman ] ++ + stdenv.lib.optional gobjectSupport glib ++ + stdenv.lib.optional postscriptSupport zlib ++ + stdenv.lib.optional pngSupport libpng; + + configureFlags = + [ "--enable-tee" ] + ++ stdenv.lib.optional xcbSupport "--enable-xcb" + ++ stdenv.lib.optional pdfSupport "--enable-pdf"; + + preConfigure = '' + # Work around broken `Requires.private' that prevents Freetype + # `-I' flags to be propagated. + sed -i "src/cairo.pc.in" \ + -es'|^Cflags:\(.*\)$|Cflags: \1 -I${freetype}/include/freetype2 -I${freetype}/include|g' + '' + + # On FreeBSD, `-ldl' doesn't exist. + + (stdenv.lib.optionalString stdenv.isFreeBSD + '' for i in "util/"*"/Makefile.in" boilerplate/Makefile.in + do + cat "$i" | sed -es/-ldl//g > t + mv t "$i" + done + ''); + + enableParallelBuilding = true; + + # The default `--disable-gtk-doc' is ignored. + postInstall = "rm -rf $out/share/gtk-doc"; + + meta = { + description = "A 2D graphics library with support for multiple output devices"; + + longDescription = '' + Cairo is a 2D graphics library with support for multiple output + devices. Currently supported output targets include the X + Window System, Quartz, Win32, image buffers, PostScript, PDF, + and SVG file output. Experimental backends include OpenGL + (through glitz), XCB, BeOS, OS/2, and DirectFB. + + Cairo is designed to produce consistent output on all output + media while taking advantage of display hardware acceleration + when available (e.g., through the X Render Extension). + ''; + + homepage = http://cairographics.org/; + + licenses = [ "LGPLv2+" "MPLv1" ]; + + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7d7f95f98b3..47ab2c0f6d7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3894,6 +3894,7 @@ let cairo = callPackage ../development/libraries/cairo { }; cairomm = callPackage ../development/libraries/cairomm { }; + cairo_1_12_2 = callPackage ../development/libraries/cairo/1.12.2.nix { }; pango = callPackage ../development/libraries/pango/1.30.x.nix { }; pangomm = callPackage ../development/libraries/pangomm/2.28.x.nix { }; From 3e610840061b98b0bd11b30a8b1dc10d5b9a8637 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 11 Mar 2013 19:29:39 -0400 Subject: [PATCH 337/407] eclipses: use older cairo In #167, Marc Weber reported that eclipse crashes after selecting a workspace with the current nixpkgs cairo. This has the same functional change as #167, but IMO the implementation is cleaner. Fixes #167 Signed-off-by: Shea Levy --- pkgs/top-level/all-packages.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 47ab2c0f6d7..24b1d25e601 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6762,7 +6762,11 @@ let eaglemode = callPackage ../applications/misc/eaglemode { }; - eclipses = recurseIntoAttrs (callPackage ../applications/editors/eclipse { }); + eclipses = recurseIntoAttrs ( + (callPackage ../applications/editors/eclipse { }).deepOverride { + cairo = cairo_1_12_2; + } + ); ed = callPackage ../applications/editors/ed { }; From a69d56a807eea26165722d767f3e9601ea17f9e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Tue, 12 Mar 2013 01:11:28 +0100 Subject: [PATCH 338/407] upgrade deluge to 1.3.6 --- pkgs/top-level/python-packages.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 631f5c907ed..877d2d3ed7c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -789,11 +789,11 @@ pythonPackages = python.modules // rec { }; deluge = buildPythonPackage rec { - name = "deluge-1.3.5"; + name = "deluge-1.3.6"; src = fetchurl { url = "http://download.deluge-torrent.org/source/${name}.tar.gz"; - md5 = "fbf52593a85bfa7c8520834fa9177fba"; + md5 = "33557678bf2f320de670ddaefaea009d"; }; # TODO: gui, procsettitle @@ -805,6 +805,7 @@ pythonPackages = python.modules // rec { description = "Torrent client"; license = "GPLv3"; maintainers = [ stdenv.lib.maintainers.iElectric ]; + platforms = stdenv.lib.platforms.all; }; }; From acf4697a5f17d460295b5eff3a2b119a35ea46d2 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Tue, 12 Mar 2013 01:35:16 +0100 Subject: [PATCH 339/407] upgrade xbmc to 12.0 --- pkgs/applications/video/xbmc/default.nix | 8 ++++---- pkgs/development/libraries/tinyxml/2.6.2.nix | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/video/xbmc/default.nix b/pkgs/applications/video/xbmc/default.nix index 66c0938eeab..0588f580cc2 100644 --- a/pkgs/applications/video/xbmc/default.nix +++ b/pkgs/applications/video/xbmc/default.nix @@ -2,7 +2,7 @@ , pkgconfig, cmake, gnumake, yasm, python , boost , gettext, pcre, yajl, fribidi -, openssl, gperf +, openssl, gperf, tinyxml2, taglib, libssh, swig, jre , libX11, xproto, inputproto , libXt, libXmu, libXext, xextproto , libXinerama, libXrandr, randrproto @@ -30,11 +30,11 @@ assert sambaSupport -> samba != null; assert vdpauSupport -> libvdpau != null && ffmpeg.vdpauSupport; stdenv.mkDerivation rec { - name = "xbmc-11.0"; + name = "xbmc-12.0"; src = fetchurl { url = "http://mirrors.xbmc.org/releases/source/${name}.tar.gz"; - sha256 = "1fe5d310c16138f26e2b13bc545604e95f48ace6c8636f23e77da402cd7b0b19"; + sha256 = "0vy1a38gfbp9vhbjvwqm11sd76gl3s9q0h7gwpsks85m2k88q0ak"; }; buildInputs = [ @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { pkgconfig cmake gnumake yasm python boost gettext pcre yajl fribidi - openssl gperf + openssl gperf tinyxml2 taglib libssh swig jre libX11 xproto inputproto libXt libXmu libXext xextproto libXinerama libXrandr randrproto diff --git a/pkgs/development/libraries/tinyxml/2.6.2.nix b/pkgs/development/libraries/tinyxml/2.6.2.nix index 8770859817c..fb2ff0b84f0 100644 --- a/pkgs/development/libraries/tinyxml/2.6.2.nix +++ b/pkgs/development/libraries/tinyxml/2.6.2.nix @@ -20,8 +20,12 @@ in stdenv.mkDerivation { buildInputs = [ unzip ]; buildPhase = '' + # use STL (xbmc requires it) + sed '1i#define TIXML_USE_STL 1' -i tinyxml.h + sed '1i#define TIXML_USE_STL 1' -i xmltest.cpp + # build xmltest - make + make # build the lib as a shared library g++ -Wall -O2 -shared -fpic tinyxml.cpp \ From 2d4d0cbef79db9cd0de37fcab0e03966508b802e Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Mon, 11 Mar 2013 21:22:59 -0400 Subject: [PATCH 340/407] tinyxml: fix whitespace Signed-off-by: Shea Levy --- pkgs/development/libraries/tinyxml/2.6.2.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/tinyxml/2.6.2.nix b/pkgs/development/libraries/tinyxml/2.6.2.nix index fb2ff0b84f0..fde30a98fe9 100644 --- a/pkgs/development/libraries/tinyxml/2.6.2.nix +++ b/pkgs/development/libraries/tinyxml/2.6.2.nix @@ -25,7 +25,7 @@ in stdenv.mkDerivation { sed '1i#define TIXML_USE_STL 1' -i xmltest.cpp # build xmltest - make + make # build the lib as a shared library g++ -Wall -O2 -shared -fpic tinyxml.cpp \ From 36c6b4260bc3351a3a139427321eed6225eb8240 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Tue, 12 Mar 2013 10:05:49 +0100 Subject: [PATCH 341/407] cyrus-sasl-2.1.26 --- pkgs/development/libraries/cyrus-sasl/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/cyrus-sasl/default.nix b/pkgs/development/libraries/cyrus-sasl/default.nix index c5aefbe3214..741d47075d9 100644 --- a/pkgs/development/libraries/cyrus-sasl/default.nix +++ b/pkgs/development/libraries/cyrus-sasl/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, openssl, db4, gettext, pam }: stdenv.mkDerivation rec { - name = "cyrus-sasl-2.1.25"; + name = "cyrus-sasl-2.1.26"; src = fetchurl { - url = "ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/${name}.tar.gz"; - sha256 = "418c16e6240a4f9b637cbe3d62937b9675627bad27c622191d47de8686fe24fe"; + url = "ftp://ftp.cyrusimap.org/cyrus-sasl/${name}.tar.gz"; + sha256 = "1hvvbcsg21nlncbgs0cgn3iwlnb3vannzwsp6rwvnn9ba4v53g4g"; }; buildInputs = [ openssl db4 gettext ] ++ stdenv.lib.optional stdenv.isLinux pam; From 183b37645b62bbc191e0f60364007937b73d7763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 12 Mar 2013 11:31:58 +0100 Subject: [PATCH 342/407] cmake setup-hook: fixing cmakeFlagsArray The array wasn'te expanded properly, the spaces weren't preserved. --- pkgs/development/tools/build-managers/cmake/setup-hook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh index 0a47ee6aa99..175e538e519 100755 --- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh +++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh @@ -42,7 +42,7 @@ cmakeConfigurePhase() { echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}" - cmake ${cmakeDir:-.} $cmakeFlags ${cmakeFlagsArray[@]} + cmake ${cmakeDir:-.} $cmakeFlags "${cmakeFlagsArray[@]}" eval "$postConfigure" } From 4684a4798984b89fa6b1a7ab94c07fefd141ad6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 12 Mar 2013 11:46:09 +0100 Subject: [PATCH 343/407] glibcInfo: fixing build The manual is built into 'build', not sourceRoot. --- pkgs/development/libraries/glibc/2.17/info.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/glibc/2.17/info.nix b/pkgs/development/libraries/glibc/2.17/info.nix index 322f07f0236..e4cdb42dd68 100644 --- a/pkgs/development/libraries/glibc/2.17/info.nix +++ b/pkgs/development/libraries/glibc/2.17/info.nix @@ -19,7 +19,7 @@ build null { # libc.info hasn't a Top node. installPhase = '' mkdir -p "$out/share/info" - cp -v "../$sourceRoot/manual/"*.info* "$out/share/info" + cp -v "manual/"*.info* "$out/share/info" ''; meta.description = "GNU Info manual of the GNU C Library"; From 9ec69c077eaf438849f1a75128eb5e8c41daa21e Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Tue, 12 Mar 2013 17:23:03 +0100 Subject: [PATCH 344/407] Make xcode version configurable --- pkgs/development/mobile/xcodeenv/xcodewrapper.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix index 39804b1a248..77d2c4c867e 100644 --- a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix +++ b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix @@ -1,8 +1,5 @@ -{stdenv}: +{stdenv, version ? "4.6"}: -let - version = "4.5.2"; -in stdenv.mkDerivation { name = "xcode-wrapper-"+version; buildCommand = '' From 03e6a6f85fb419ed30c8dffd29f8f7a7a2c6db82 Mon Sep 17 00:00:00 2001 From: Paolo Capriotti Date: Tue, 12 Mar 2013 18:22:48 +0000 Subject: [PATCH 345/407] Add patch to fix build for bip. --- .../networking/irc/bip/bip-0.8.8-yyparse.patch | 11 +++++++++++ pkgs/applications/networking/irc/bip/default.nix | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch diff --git a/pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch b/pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch new file mode 100644 index 00000000000..5d48fc99a0d --- /dev/null +++ b/pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch @@ -0,0 +1,11 @@ +--- bip-0.8.8/src/lex.l.orig ++++ bip-0.8.8/src/lex.l +@@ -16,7 +16,7 @@ + int linec; + #include "util.h" + extern list_t *root_list; +-void yyparse(void); ++int yyparse(void); + void free_conf(list_t*); + int conf_error; + typedef struct bip bip_t; diff --git a/pkgs/applications/networking/irc/bip/default.nix b/pkgs/applications/networking/irc/bip/default.nix index eaee36b9711..89fdf0d8df8 100644 --- a/pkgs/applications/networking/irc/bip/default.nix +++ b/pkgs/applications/networking/irc/bip/default.nix @@ -36,6 +36,10 @@ in stdenv.mkDerivation { } ]; + postPatch = '' + patch -p1 < ${./bip-0.8.8-yyparse.patch} + ''; + configureFlags = [ "--disable-pie" ]; buildInputs = [ bison flex autoconf automake openssl ]; @@ -45,4 +49,4 @@ in stdenv.mkDerivation { homepage = http://bip.milkypond.org/; license = stdenv.lib.licenses.gpl2; }; -} \ No newline at end of file +} From 90bca24b383b0f4fc0d65d8cc4af5fb983937670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 12 Mar 2013 19:43:57 +0100 Subject: [PATCH 346/407] Adding mktorrent 1.0 --- pkgs/tools/misc/mktorrent/default.nix | 27 +++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 29 insertions(+) create mode 100644 pkgs/tools/misc/mktorrent/default.nix diff --git a/pkgs/tools/misc/mktorrent/default.nix b/pkgs/tools/misc/mktorrent/default.nix new file mode 100644 index 00000000000..e7104ce2aaf --- /dev/null +++ b/pkgs/tools/misc/mktorrent/default.nix @@ -0,0 +1,27 @@ +{stdenv, fetchurl, openssl}: + +stdenv.mkDerivation { + name = "mktorrent-1.0.0"; + + src = fetchurl { + url = mirror://sourceforge/mktorrent/mktorrent-1.0.tar.gz; + sha256 = "17qi3nfky240pq6qcmf5qg324mxm83vk9r3nvsdhsvinyqm5d3kg"; + }; + + makeFlags = "USE_PTHREADS=1 USE_OPENSSL=1 USE_LONG_OPTIONS=1" + + stdenv.lib.optionalString stdenv.isi686 " USE_LARGE_FILES=1"; + + preInstall = '' + installFlags=PREFIX=$out + ''; + + buildInputs = [ openssl ]; + + meta = { + homepage = http://mktorrent.sourceforge.net/; + license = "GPLv2+"; + description = "Command line utility to create BitTorrent metainfo files"; + platforms = with stdenv.lib.platforms; linux; + maintainers = with stdenv.lib.maintainers; [viric]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 24b1d25e601..e574aed4f1d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1142,6 +1142,8 @@ let mktemp = callPackage ../tools/security/mktemp { }; + mktorrent = callPackage ../tools/misc/mktorrent { }; + modemmanager = callPackage ../tools/networking/modemmanager {}; monit = builderDefsPackage ../tools/system/monit { From 8d1ff12cdcb2d714515517417b9f3a4d4bdb2171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 12 Mar 2013 20:01:07 +0100 Subject: [PATCH 347/407] mktorrent: fixing the usual pthread_cancel problem --- pkgs/tools/misc/mktorrent/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/misc/mktorrent/default.nix b/pkgs/tools/misc/mktorrent/default.nix index e7104ce2aaf..713d6dc70b8 100644 --- a/pkgs/tools/misc/mktorrent/default.nix +++ b/pkgs/tools/misc/mktorrent/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation { sha256 = "17qi3nfky240pq6qcmf5qg324mxm83vk9r3nvsdhsvinyqm5d3kg"; }; - makeFlags = "USE_PTHREADS=1 USE_OPENSSL=1 USE_LONG_OPTIONS=1" + + makeFlags = "CFLAGS=-lgcc_s USE_PTHREADS=1 USE_OPENSSL=1 USE_LONG_OPTIONS=1" + stdenv.lib.optionalString stdenv.isi686 " USE_LARGE_FILES=1"; preInstall = '' From b512e3e93477c917a876bc18f401ec231328e10c Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Mon, 2 Jul 2012 10:46:30 +0200 Subject: [PATCH 348/407] Initial try to update spotify to version 0.8.4.103. Still need to get rid of LD_LIBRARY_PATH wrapper, and properly patchelf any libs in the spotify prefix. --- pkgs/applications/audio/spotify/default.nix | 50 ++++++++++++++++----- pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix index a5c7918e4b6..9e1f955a843 100644 --- a/pkgs/applications/audio/spotify/default.nix +++ b/pkgs/applications/audio/spotify/default.nix @@ -1,29 +1,44 @@ -{ fetchurl, stdenv, dpkg, xlibs, qt4, alsaLib, makeWrapper, openssl }: +{ fetchurl, stdenv, dpkg, xlibs, qt4, alsaLib, makeWrapper, openssl, freetype, glib, pango, cairo, atk, gdk_pixbuf, gtk, cups, nspr, nss, libpng12, GConf, libgcrypt, chromium, sqlite, gst_plugins_base, gstreamer }: assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; -let version = "0.8.3.278"; in +let + version = "0.8.4.103"; + qt4webkit = + if stdenv.system == "i686-linux" then + fetchurl { + name = "libqtwebkit4_2.2_i386.deb"; + url = http://mirrors.us.kernel.org/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.2~2011week36-0ubuntu1_i386.deb; + sha256 = "0hi6cwx2b2cwa4nv5phqqw526lc8p9x7kjkcza9x47ny3npw2924"; + } + else + fetchurl { + name = "libqtwebkit4_2.2_amd64.deb"; + url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.2~2011week36-0ubuntu1_amd64.deb; + sha256 = "0bvy6qz9y19ck391z8c049v07y4vdyvgykpxi7x1nvn078p1imiw"; + }; +in stdenv.mkDerivation { name = "spotify-${version}"; src = - if stdenv.system == "i686-linux" then + if stdenv.system == "i686-linux" then fetchurl { - url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g21c7566.632-1_i386.deb"; - sha256 = "7f587585365498c5182bd7f3beafaf511d883102f5cece66cf84f4f94077765b"; + url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g9cb177b.260-1_i386.deb"; + sha256 = "1iri6pgavgb06nx0l3myqryx7zd7cf22my8vh2v6w4kbvaajjl31"; } - else if stdenv.system == "x86_64-linux" then + else if stdenv.system == "x86_64-linux" then fetchurl { - url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g21c7566.632-1_amd64.deb"; - sha256 = "a37a13b1c1a8088a811054c732d85b9d6ccf0bd92ad4da75bfee6d70dc344b5e"; + url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g9cb177b.260-1_amd64.deb"; + sha256 = "0y5kyfa1gk16d9z67hgssam8hgzw6g5f7xsxk0lz3ak487xdwl6k"; } else throw "Spotify not supported on this platform."; buildInputs = [ dpkg makeWrapper ]; unpackPhase = "true"; - + installPhase = '' mkdir -p $out @@ -36,17 +51,30 @@ stdenv.mkDerivation { mkdir $out/lib ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.0.9.8 ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.0.9.8 + ln -s ${nss}/lib/libnss3.so $out/lib/libnss3.so.1d + ln -s ${nss}/lib/libnssutil3.so $out/lib/libnssutil3.so.1d + ln -s ${nss}/lib/libsmime3.so $out/lib/libsmime3.so.1d + ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so.0d + ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so.0d + + for f in ${chromium}/libexec/chromium/*; do + ln -s $f $out/bin/$(basename $f) + done patchelf \ --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ - --set-rpath ${stdenv.lib.makeLibraryPath [ xlibs.libXScrnSaver xlibs.libX11 qt4 alsaLib openssl stdenv.gcc.gcc ]}:${stdenv.gcc.gcc}/lib64:$out/lib \ + --set-rpath $out/lib:$out/share/spotify:${stdenv.lib.makeLibraryPath [ xlibs.libXScrnSaver xlibs.libX11 qt4 alsaLib stdenv.gcc.gcc freetype glib pango cairo atk gdk_pixbuf gtk GConf cups sqlite]}:${stdenv.gcc.gcc}/lib64 \ $out/bin/spotify + dpkg-deb -x ${qt4webkit} ./ + mkdir -p $out/lib/ + cp -v usr/lib/*/* $out/lib/ + preload=$out/libexec/spotify/libpreload.so mkdir -p $out/libexec/spotify gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC - wrapProgram $out/bin/spotify --set LD_PRELOAD $preload + wrapProgram $out/bin/spotify --set LD_PRELOAD $preload --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ GConf libpng12 cups libgcrypt sqlite gst_plugins_base gstreamer]}:$out/lib" ''; # */ dontStrip = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e574aed4f1d..428443c1daa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7741,7 +7741,9 @@ let sox = callPackage ../applications/misc/audio/sox { }; - spotify = callPackage ../applications/audio/spotify { }; + spotify = callPackage ../applications/audio/spotify { + inherit (gnome) GConf; + }; libspotify = callPackage ../development/libraries/libspotify { apiKey = config.libspotify.apiKey or null; From 784d2b2d16203d9a623ce32e9f80fc6e52bcacee Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Tue, 12 Mar 2013 22:12:39 +0100 Subject: [PATCH 349/407] Update to latest spotify --- pkgs/applications/audio/spotify/default.nix | 23 ++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix index 9e1f955a843..110d222c238 100644 --- a/pkgs/applications/audio/spotify/default.nix +++ b/pkgs/applications/audio/spotify/default.nix @@ -3,7 +3,7 @@ assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; let - version = "0.8.4.103"; + version = "0.8.8.323"; qt4webkit = if stdenv.system == "i686-linux" then fetchurl { @@ -25,13 +25,13 @@ stdenv.mkDerivation { src = if stdenv.system == "i686-linux" then fetchurl { - url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g9cb177b.260-1_i386.deb"; - sha256 = "1iri6pgavgb06nx0l3myqryx7zd7cf22my8vh2v6w4kbvaajjl31"; + url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.gd143501.250-1_i386.deb"; + sha256 = "13q803qlvq16yrr7f95izp9mqqdb8kpcsyrb5gc5i2pya68ra906"; } else if stdenv.system == "x86_64-linux" then fetchurl { - url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g9cb177b.260-1_amd64.deb"; - sha256 = "0y5kyfa1gk16d9z67hgssam8hgzw6g5f7xsxk0lz3ak487xdwl6k"; + url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.gd143501.250-1_amd64.deb"; + sha256 = "0ny3z499wks1dhrd3qq4d6cp0zd33198z9vak8ffgm5x24sdpghf"; } else throw "Spotify not supported on this platform."; @@ -43,8 +43,8 @@ stdenv.mkDerivation { '' mkdir -p $out dpkg-deb -x $src $out - mv $out/usr/* $out/ - rmdir $out/usr + mv $out/opt/spotify/* $out/ + rm -rf $out/usr $out/opt # Work around Spotify referring to a specific minor version of # OpenSSL. @@ -57,14 +57,13 @@ stdenv.mkDerivation { ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so.0d ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so.0d - for f in ${chromium}/libexec/chromium/*; do - ln -s $f $out/bin/$(basename $f) - done + mkdir -p $out/bin + ln -s $out/spotify-client/spotify $out/bin/spotify patchelf \ --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ - --set-rpath $out/lib:$out/share/spotify:${stdenv.lib.makeLibraryPath [ xlibs.libXScrnSaver xlibs.libX11 qt4 alsaLib stdenv.gcc.gcc freetype glib pango cairo atk gdk_pixbuf gtk GConf cups sqlite]}:${stdenv.gcc.gcc}/lib64 \ - $out/bin/spotify + --set-rpath $out/lib:$out/spotify-client:${stdenv.lib.makeLibraryPath [ xlibs.libXScrnSaver xlibs.libX11 qt4 alsaLib stdenv.gcc.gcc freetype glib pango cairo atk gdk_pixbuf gtk GConf cups sqlite]}:${stdenv.gcc.gcc}/lib64 \ + $out/spotify-client/spotify dpkg-deb -x ${qt4webkit} ./ mkdir -p $out/lib/ From af656c6698bc1977e47aafe5c4137370d2e03d86 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Wed, 13 Mar 2013 10:44:12 +0100 Subject: [PATCH 350/407] kdepimlibs break against newer cyrus-sasl. Including this extra header fixes it --- pkgs/desktops/kde-4.7/kdepimlibs.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/desktops/kde-4.7/kdepimlibs.nix b/pkgs/desktops/kde-4.7/kdepimlibs.nix index 736508eaf0f..1c4ccec8423 100644 --- a/pkgs/desktops/kde-4.7/kdepimlibs.nix +++ b/pkgs/desktops/kde-4.7/kdepimlibs.nix @@ -8,6 +8,12 @@ kde { ]; propagatedBuildInputs = [ kdelibs ]; + + preConfigure = '' + echo '#include ' > tmp.h + cat tmp.h kioslave/smtp/command.h > tmp2.h + mv tmp2.h kioslave/smtp/command.h + ''; meta = { description = "KDE PIM libraries"; From 15e1daf0c32495908442110cea09f7265e73abfb Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Wed, 13 Mar 2013 13:02:19 +0100 Subject: [PATCH 351/407] Make iOS SDK version configurable --- pkgs/development/mobile/xcodeenv/build-app.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/mobile/xcodeenv/build-app.nix b/pkgs/development/mobile/xcodeenv/build-app.nix index 3ac9e4bb958..8f2594e8433 100644 --- a/pkgs/development/mobile/xcodeenv/build-app.nix +++ b/pkgs/development/mobile/xcodeenv/build-app.nix @@ -1,6 +1,7 @@ {stdenv, xcodewrapper}: { name , src +, sdkVersion ? "6.1" , target ? null , configuration ? null , scheme ? null @@ -36,7 +37,7 @@ let _sdk = if sdk == null then - if release then "iphoneos6.0" else "iphonesimulator6.0" + if release then "iphoneos" + sdkVersion else "iphonesimulator" + sdkVersion else sdk; # The following is to prevent repetition From 94f2013c0cc006cec80f42b8d956f6022db571a2 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Wed, 13 Mar 2013 13:09:58 +0100 Subject: [PATCH 352/407] pythonDocs: recurseIntoAttrs does not recurse, bypass problem --- pkgs/development/interpreters/python/docs/default.nix | 4 ++++ pkgs/development/interpreters/python/docs/generate.sh | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/python/docs/default.nix b/pkgs/development/interpreters/python/docs/default.nix index 7e3ff6abbe9..16ade3af3f9 100644 --- a/pkgs/development/interpreters/python/docs/default.nix +++ b/pkgs/development/interpreters/python/docs/default.nix @@ -3,6 +3,7 @@ let pythonDocs = { html = { + recurseForDerivations = true; python33 = import ./3.3-html.nix { inherit stdenv fetchurl lib; }; @@ -23,6 +24,7 @@ pythonDocs = { }; }; pdf_a4 = { + recurseForDerivations = true; python33 = import ./3.3-pdf-a4.nix { inherit stdenv fetchurl lib; }; @@ -43,6 +45,7 @@ pythonDocs = { }; }; pdf_letter = { + recurseForDerivations = true; python33 = import ./3.3-pdf-letter.nix { inherit stdenv fetchurl lib; }; @@ -63,6 +66,7 @@ pythonDocs = { }; }; text = { + recurseForDerivations = true; python33 = import ./3.3-text.nix { inherit stdenv fetchurl lib; }; diff --git a/pkgs/development/interpreters/python/docs/generate.sh b/pkgs/development/interpreters/python/docs/generate.sh index 554bf79e334..bebefc10ccd 100755 --- a/pkgs/development/interpreters/python/docs/generate.sh +++ b/pkgs/development/interpreters/python/docs/generate.sh @@ -16,7 +16,11 @@ pythonDocs = { EOF for type in $TYPES; do - echo " ${type/-/_} = {" >> default.nix + cat >>default.nix < Date: Wed, 13 Mar 2013 11:58:44 +0100 Subject: [PATCH 353/407] haskell-NumInstances: update to version 1.2 --- pkgs/development/libraries/haskell/NumInstances/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/NumInstances/default.nix b/pkgs/development/libraries/haskell/NumInstances/default.nix index 4d258f5634d..4f06a97002d 100644 --- a/pkgs/development/libraries/haskell/NumInstances/default.nix +++ b/pkgs/development/libraries/haskell/NumInstances/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "NumInstances"; - version = "1.0"; - sha256 = "1fmg3slwma5f88a2qxj54ny40s67qbdyvsyh506bkp11v54958fy"; + version = "1.2"; + sha256 = "0s26j3h0xg16lcz95qs21iyfnzx8q8w2k2lnq55gakkr1wl4ap59"; meta = { description = "Instances of numeric classes for functions and tuples"; license = self.stdenv.lib.licenses.bsd3; From 2ead0aa4c69b84ccfb65e9db6fc81297a9c95433 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:44 +0100 Subject: [PATCH 354/407] haskell-conduit: update to version 1.0.3 --- pkgs/development/libraries/haskell/conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix index 21f81ee038c..8614b24bacc 100644 --- a/pkgs/development/libraries/haskell/conduit/default.nix +++ b/pkgs/development/libraries/haskell/conduit/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "conduit"; - version = "1.0.2"; - sha256 = "03hyryljvkbgyvwx63qrkvf2wm1qm8640rsm8yb4mahgzp4r130f"; + version = "1.0.3"; + sha256 = "1jvbm5v25h1m5a9gd0f417mhpabp3kcfzsjm8887gcyimp2d0z07"; buildDepends = [ liftedBase monadControl resourcet text transformers transformersBase void From b8550949a82f534d008cb08ab717542cb50e7b01 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 355/407] haskell-ghc-mod: update to version 1.12.2 --- pkgs/development/libraries/haskell/ghc-mod/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix index 1109a512a8d..3e86d440d5d 100644 --- a/pkgs/development/libraries/haskell/ghc-mod/default.nix +++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "ghc-mod"; - version = "1.12.1"; - sha256 = "0m876lfxi0k7v27rg4ipq3rpk7qvsrzfdflp5fayxvmi9wgdvm3r"; + version = "1.12.2"; + sha256 = "0kwf1szw26iz4sw2slv10birpngf1cfy9jzmllzr0nvybh1pv7a9"; isLibrary = false; isExecutable = true; buildDepends = [ From 2533c325951d46db30e17406d188a372b5999157 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 356/407] haskell-hint: update to version 0.3.3.6 --- pkgs/development/libraries/haskell/hint/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/hint/default.nix b/pkgs/development/libraries/haskell/hint/default.nix index 106b8591778..8cf1accca9c 100644 --- a/pkgs/development/libraries/haskell/hint/default.nix +++ b/pkgs/development/libraries/haskell/hint/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "hint"; - version = "0.3.3.5"; - sha256 = "09pd4b105c2ikf4ap96fz8091qra7hypq3k3ik0kay3bb532hmlq"; + version = "0.3.3.6"; + sha256 = "080wnds99lg9p4n2h9d4bpgvk73yzc3im2ysn1r8f3nqai4b2can"; buildDepends = [ extensibleExceptions filepath ghcMtl ghcPaths haskellSrc MonadCatchIOMtl mtl random utf8String From 72d80f0419e649ba3d2f73902f95e89fc153dc02 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 357/407] haskell-http-conduit: update to version 1.9.2.1 --- pkgs/development/libraries/haskell/http-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix index 683396eea81..715d5ce7dba 100644 --- a/pkgs/development/libraries/haskell/http-conduit/default.nix +++ b/pkgs/development/libraries/haskell/http-conduit/default.nix @@ -9,8 +9,8 @@ cabal.mkDerivation (self: { pname = "http-conduit"; - version = "1.9.1"; - sha256 = "1ypwqd5f6m459kjw2x3knig924s93b6yiviy7jlaxllpaw2lrial"; + version = "1.9.2.1"; + sha256 = "1zzw9gdljn7pmp0d6k051gp1wiw9412c3gdbpwbpng6m5jhk079i"; buildDepends = [ asn1Data base64Bytestring blazeBuilder blazeBuilderConduit caseInsensitive certificate conduit cookie cprngAes dataDefault From 79d3d6e698f329b7247817a8e574417d0534c04d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 358/407] haskell-liblastfm: update to version 0.1.1.0 --- pkgs/development/libraries/haskell/liblastfm/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/liblastfm/default.nix b/pkgs/development/libraries/haskell/liblastfm/default.nix index d9a04355e2e..3222f4607e7 100644 --- a/pkgs/development/libraries/haskell/liblastfm/default.nix +++ b/pkgs/development/libraries/haskell/liblastfm/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "liblastfm"; - version = "0.1.0.0"; - sha256 = "1777p2zysha9z389dkzvc22wph5k2xa6f23xk1ckr8j1q5v9dg6x"; + version = "0.1.1.0"; + sha256 = "1yrgyb0m1gdhsrkv3b8a5a0qii67v9gx1kbv79ixlac60bsm4q95"; buildDepends = [ aeson cereal cryptoApi httpConduit httpTypes network pureMD5 text ]; From 865a59815bc1735b2c234b9840dbc0d49a3a11db Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 359/407] haskell-monad-logger: update to version 0.3.1.1 --- pkgs/development/libraries/haskell/monad-logger/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/monad-logger/default.nix b/pkgs/development/libraries/haskell/monad-logger/default.nix index 5b580a8594e..c06809c261d 100644 --- a/pkgs/development/libraries/haskell/monad-logger/default.nix +++ b/pkgs/development/libraries/haskell/monad-logger/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "monad-logger"; - version = "0.3.1"; - sha256 = "09bgj436hyyc5x0flkwcxx3m97y5pm8whd5cc6a0q7bc4bnzf80j"; + version = "0.3.1.1"; + sha256 = "11qqmflcydjfm5py7rkbi9qd0mkhw4kxzxff95wf0jmaia9knvx6"; buildDepends = [ conduit fastLogger monadControl mtl resourcet text transformers transformersBase From 9d52ffce0288ebe3bff1ded360a75111debc5e15 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 360/407] haskell-numbers: update to version 3000.1.0.3 --- pkgs/development/libraries/haskell/numbers/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/numbers/default.nix b/pkgs/development/libraries/haskell/numbers/default.nix index e0136ad5d45..81a3e866dc0 100644 --- a/pkgs/development/libraries/haskell/numbers/default.nix +++ b/pkgs/development/libraries/haskell/numbers/default.nix @@ -2,14 +2,13 @@ cabal.mkDerivation (self: { pname = "numbers"; - version = "3000.1.0.1"; - sha256 = "0r2s47nfdxasnp8j7giwpxls9v48f6ld0gc2hg2p7y2ar5xfrcc4"; + version = "3000.1.0.3"; + sha256 = "0w2m2m3vp3lpvnc7wkw6pqfz741a68dma4s0asl7cryykwf94xgz"; testDepends = [ QuickCheck testFramework testFrameworkQuickcheck2 ]; - doCheck = false; meta = { - homepage = "https://github.com/DanBurton/numbers"; + homepage = "https://github.com/DanBurton/numbers#readme"; description = "Various number types"; license = self.stdenv.lib.licenses.bsd3; platforms = self.ghc.meta.platforms; From 67e72eea764761a66590bda280511bb64cfb205c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 361/407] haskell-persistent-template: update to version 1.1.2.5 --- .../libraries/haskell/persistent-template/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/persistent-template/default.nix b/pkgs/development/libraries/haskell/persistent-template/default.nix index 117a63618d4..8cdc7caafc9 100644 --- a/pkgs/development/libraries/haskell/persistent-template/default.nix +++ b/pkgs/development/libraries/haskell/persistent-template/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "persistent-template"; - version = "1.1.2.4"; - sha256 = "0fsqyv5r6h356shmah6bs75fzds0fsmyizbnvj5ywzhc003jv5h9"; + version = "1.1.2.5"; + sha256 = "142b02ini1b5c566rzhykv45n4byzvhp9r6yyavy4zyvgdj7ligj"; buildDepends = [ aeson monadControl persistent text transformers ]; testDepends = [ aeson hspec persistent QuickCheck text ]; meta = { From a48730439780d5985d82f845cfb2955eebe165a6 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 362/407] haskell-smallcheck: update to version 1.0.2 --- pkgs/development/libraries/haskell/smallcheck/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/smallcheck/default.nix b/pkgs/development/libraries/haskell/smallcheck/default.nix index b7b0dc8e974..6d82e7e5132 100644 --- a/pkgs/development/libraries/haskell/smallcheck/default.nix +++ b/pkgs/development/libraries/haskell/smallcheck/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "smallcheck"; - version = "1.0.1"; - sha256 = "1b8g7vgvwyz2smx16gbn73k749mazj2zmr2hjhqj4rk0433i6lpk"; + version = "1.0.2"; + sha256 = "09zlsvgbwgpjwkjhizbzzww2nvkyxvkf214yqxzfaa1cj9xzbbdi"; buildDepends = [ logict mtl ]; meta = { homepage = "https://github.com/feuerbach/smallcheck"; From a356a2e59fd4a445b6db86670639ed5141863932 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 363/407] haskell-threads: update to version 0.5.0.2 --- pkgs/development/libraries/haskell/threads/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/threads/default.nix b/pkgs/development/libraries/haskell/threads/default.nix index 533a67c99c8..d802790da9d 100644 --- a/pkgs/development/libraries/haskell/threads/default.nix +++ b/pkgs/development/libraries/haskell/threads/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "threads"; - version = "0.5.0.1"; - sha256 = "0amyaxa70q6v021nab6v3cfqc40mwj5dr2fwla9d4bm6ppmq6lyy"; + version = "0.5.0.2"; + sha256 = "14ccmjg56429a3mzx11ccv18bvkqg56ph9kbpmhdx2ajar80g6jm"; buildDepends = [ baseUnicodeSymbols stm ]; testDepends = [ baseUnicodeSymbols concurrentExtra HUnit stm testFramework From 4a1d32134bcd23f4e25cab8035ecff2c7e439376 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 11:58:45 +0100 Subject: [PATCH 364/407] haskell-wai-extra: update to version 1.3.3.1 --- pkgs/development/libraries/haskell/wai-extra/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/wai-extra/default.nix b/pkgs/development/libraries/haskell/wai-extra/default.nix index 53a1ccaf55a..7e331d69da0 100644 --- a/pkgs/development/libraries/haskell/wai-extra/default.nix +++ b/pkgs/development/libraries/haskell/wai-extra/default.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { pname = "wai-extra"; - version = "1.3.2.4"; - sha256 = "12hdg5h4bk04nhcmjm5mc62dng9np0dlik4b1w1syd2lxqv6pdb9"; + version = "1.3.3.1"; + sha256 = "0ss58s5m8yp326q0651znifbfl6kpimyhm479wx8r3zx3ndl47q9"; buildDepends = [ ansiTerminal blazeBuilder blazeBuilderConduit caseInsensitive conduit dataDefault dateCache fastLogger httpTypes network From 6d5c6af42734a04903360b799b6c58bb999a3c94 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 13:59:19 +0100 Subject: [PATCH 365/407] lzip: update to version 1.14 --- pkgs/tools/compression/lzip/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/compression/lzip/default.nix b/pkgs/tools/compression/lzip/default.nix index 710c58029aa..87faacddff0 100644 --- a/pkgs/tools/compression/lzip/default.nix +++ b/pkgs/tools/compression/lzip/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "lzip-1.14-rc3"; + name = "lzip-1.14"; src = fetchurl { url = "http://download.savannah.gnu.org/releases/lzip/${name}.tar.gz"; - sha256 = "040mmfadvhry68bv10baqi1bs8g5wwbf5rx0widyz69llpn64mw9"; + sha256 = "1rybhk2pxpfh2789ck9mrkdv3bpx7b7miwndlshb5vb02m9crxbz"; }; doCheck = true; From 0a52bc5d8eb2f8809e781bb5cf8b034435781596 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Wed, 13 Mar 2013 09:01:47 -0400 Subject: [PATCH 366/407] Add Catalyst::Action::REST perlPackage Signed-off-by: Shea Levy --- pkgs/top-level/perl-packages.nix | 106 +++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index a03abaf73e7..12702dbb105 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -335,6 +335,19 @@ rec { [ CatalystRuntime HTTPRequestAsCGI DataVisitor MROCompat ]; }; + CatalystActionREST = buildPerlPackage { + name = "Catalyst-Action-REST-1.06"; + src = fetchurl { + url = mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Action-REST-1.06.tar.gz; + sha256 = "0z72cf8zgmwmcqlhkawz9fikc0g44972sidfs16x7rwdhzavd01k"; + }; + propagatedBuildInputs = [ CatalystRuntime ClassInspector ConfigGeneral DataSerializer DataTaxi FreezeThaw HTMLParser JSONXS LWPUserAgent Moose MROCompat namespaceautoclean ParamsValidate PHPSerialization URIFind XMLSimple YAMLSyck ]; + meta = { + description = "Automated REST Method Dispatching"; + license = "perl"; + }; + }; + CatalystAuthenticationStoreHtpasswd = buildPerlPackage rec { name = "Catalyst-Authentication-Store-Htpasswd-1.003"; src = fetchurl { @@ -837,6 +850,14 @@ rec { }; }; + ClassISA = buildPerlPackage { + name = "Class-ISA-0.36"; + src = fetchurl { + url = mirror://cpan/authors/id/S/SM/SMUELLER/Class-ISA-0.36.tar.gz; + sha256 = "0r5r574i6wgxm8zsq4bc34d0dzprrh6h6mpp1nhlks1qk97g65l8"; + }; + }; + ClassMakeMethods = buildPerlPackage rec { name = "Class-MakeMethods-1.009"; src = fetchurl { @@ -1323,6 +1344,27 @@ rec { propagatedBuildInputs = [TestException ClassAccessorChained]; }; + DataSerializer = buildPerlPackage { + name = "Data-Serializer-0.59"; + src = fetchurl { + url = mirror://cpan/authors/id/N/NE/NEELY/Data-Serializer-0.59.tar.gz; + sha256 = "1mydpbacrkirafcjxcg1c0gnls1kxiv0qvdd4q2yd6vsyay0ayqr"; + }; + meta = { + description = "Modules that serialize data structures"; + license = "perl"; + }; + }; + + DataTaxi = buildPerlPackage { + name = "Data-Taxi-0.96"; + propagatedBuildInputs = [DebugShowStuff]; + src = fetchurl { + url = mirror://cpan/authors/id/M/MI/MIKO/Data-Taxi-0.96.tar.gz; + sha256 = "0y4wls4jlwd6prvd77szymddhq9sfj06kaqnk4frlvd0zh83djxb"; + }; + }; + DataUUID = buildPerlPackage rec { name = "Data-UUID-1.217"; src = fetchurl { @@ -1428,6 +1470,19 @@ rec { propagatedBuildInputs = [ ClassLoad ClassSingleton ParamsValidate TryTiny ]; }; + DebugShowStuff = buildPerlPackage { + name = "Debug-ShowStuff-1.14"; + src = fetchurl { + url = mirror://cpan/authors/id/M/MI/MIKO/Debug-ShowStuff-1.14.tar.gz; + sha256 = "023c6f7y93k9qxxfa2fsvc5jkbv3rh6i3nw6zvxa5cg57xfypd7h"; + }; + propagatedBuildInputs = [ ClassISA DevelStackTrace StringUtil TermReadKey TextTabularDisplay TieIxHash ]; + meta = { + description = "Debug::ShowStuff - A collection of handy debugging routines for displaying the values of variables with a minimum of coding."; + license = "perl"; + }; + }; + DevelCaller = buildPerlPackage { name = "Devel-Caller-2.06"; src = fetchurl { @@ -1998,6 +2053,7 @@ rec { url = mirror://cpan/authors/id/I/IL/ILYAZ/modules/FreezeThaw-0.43.tar.gz; sha256 = "1qamc5aggp35xk590a4hy660f2rhc2l7j65hbyxdya9yvg7z437l"; }; + doCheck = false; }; GD = buildPerlPackage rec { @@ -3837,6 +3893,18 @@ rec { }; }; + PHPSerialization = buildPerlPackage { + name = "PHP-Serialization-0.34"; + src = fetchurl { + url = mirror://cpan/authors/id/B/BO/BOBTFISH/PHP-Serialization-0.34.tar.gz; + sha256 = "0yphqsgg7zrar2ywk2j2fnjxmi9rq32yf0p5ln8m9fmfx4kd84mr"; + }; + meta = { + description = "Simple flexible means of converting the output of PHP's serialize() into the equivalent Perl memory structure, and vice versa."; + license = "unknown"; + }; + }; + Plack = buildPerlPackage { name = "Plack-1.0015"; src = fetchurl { @@ -4305,6 +4373,18 @@ rec { [ LinguaENInflectPhrase TextUnidecode namespaceclean ]; }; + StringUtil = buildPerlPackage { + name = "String-Util-1.21"; + src = fetchurl { + url = mirror://cpan/authors/id/M/MI/MIKO/String-Util-1.21.tar.gz; + sha256 = "1ndvm9pbngf1j0fm02ghl4nfcqi5404sxdlm42g3ismf1ms1fnxa"; + }; + meta = { + description = "String::Util -- String processing utilities"; + license = "perl"; + }; + }; + SubExporter = buildPerlPackage { name = "Sub-Exporter-0.984"; src = fetchurl { @@ -5132,6 +5212,20 @@ rec { }; }; + URIFind = buildPerlModule { + name = "URI-Find-20111103"; + src = fetchurl { + url = mirror://cpan/authors/id/M/MS/MSCHWERN/URI-Find-20111103.tar.gz; + sha256 = "1igbbj14j5fssdqrbr60mg3w95wldfxdikplqdmqgf2zn5j65ibr"; + }; + propagatedBuildInputs = [ URI URIURL ]; + meta = { + homepage = http://search.cpan.org/dist/URI-Find; + description = "Find URIs in arbitrary text"; + license = "perl5"; + }; + }; + UriGoogleChart = buildPerlPackage rec { name = "URI-GoogleChart-1.02"; src = fetchurl { @@ -5141,6 +5235,18 @@ rec { buildInputs = [URI TestMore]; }; + URIURL = buildPerlPackage { + name = "URI-URL-5.04"; + src = fetchurl { + url = mirror://cpan/authors/id/G/GA/GAAS/URI-1.60.tar.gz; + sha256 = "0xr31mf7lfrwhyvlx4pzp6p7alls5gi4bj8pk5g89f5cckfd74hz"; + }; + meta = { + description = "Uniform Resource Identifiers (absolute and relative)"; + license = "perl"; + }; + }; + VariableMagic = buildPerlPackage rec { name = "Variable-Magic-0.48"; src = fetchurl { From a07ae64cee3d3d1c0623d3543f4b5f5a26fc27c1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 13:36:56 +0100 Subject: [PATCH 367/407] haskell-punycode: disable the test suite The test suite runs for 20+ minutes on my EeePC. That seems a little excessive. --- pkgs/development/libraries/haskell/punycode/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/punycode/default.nix b/pkgs/development/libraries/haskell/punycode/default.nix index ade7685be6e..a4ad760d8ff 100644 --- a/pkgs/development/libraries/haskell/punycode/default.nix +++ b/pkgs/development/libraries/haskell/punycode/default.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "192jgfixnpxdj6jiiz92kx5bi6ij3c389b76q9f4vyfmvcajj1sr"; buildDepends = [ cereal mtl text ]; testDepends = [ cereal encoding HUnit mtl QuickCheck text ]; + doCheck = false; meta = { homepage = "https://github.com/litherum/punycode"; description = "Encode unicode strings to ascii forms according to RFC 3492"; From 0f0e4b856a3330af13f543b2c147d2b4c55a647a Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Wed, 13 Mar 2013 15:09:13 +0100 Subject: [PATCH 368/407] Make system identifier configurable (except for iphone targets) --- pkgs/development/mobile/titaniumenv/examples/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/mobile/titaniumenv/examples/default.nix b/pkgs/development/mobile/titaniumenv/examples/default.nix index a2146d9b97c..f5fbf79e86d 100644 --- a/pkgs/development/mobile/titaniumenv/examples/default.nix +++ b/pkgs/development/mobile/titaniumenv/examples/default.nix @@ -1,7 +1,9 @@ -{ nixpkgs ? }: +{ nixpkgs ? +, system ? builtins.currentSystem +}: let - pkgs = import nixpkgs {}; + pkgs = import nixpkgs { inherit system; }; pkgs_darwin_x86_64 = import nixpkgs { system = "x86_64-darwin"; }; in rec { From c18751615229efb70a7824db94922c44feb939ff Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 14:04:33 +0100 Subject: [PATCH 369/407] lzip: enable documentation build --- pkgs/tools/compression/lzip/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/compression/lzip/default.nix b/pkgs/tools/compression/lzip/default.nix index 87faacddff0..88cbe7f19e2 100644 --- a/pkgs/tools/compression/lzip/default.nix +++ b/pkgs/tools/compression/lzip/default.nix @@ -1,8 +1,10 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchurl, texinfo }: stdenv.mkDerivation rec { name = "lzip-1.14"; + buildInputs = [ texinfo ]; + src = fetchurl { url = "http://download.savannah.gnu.org/releases/lzip/${name}.tar.gz"; sha256 = "1rybhk2pxpfh2789ck9mrkdv3bpx7b7miwndlshb5vb02m9crxbz"; From 5f758431d4bab1043d4cfc48c91178db885cdea0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 14:05:54 +0100 Subject: [PATCH 370/407] lzip: build the binary with -O3 and assertions disabled --- pkgs/tools/compression/lzip/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/tools/compression/lzip/default.nix b/pkgs/tools/compression/lzip/default.nix index 88cbe7f19e2..de29c34f150 100644 --- a/pkgs/tools/compression/lzip/default.nix +++ b/pkgs/tools/compression/lzip/default.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation rec { sha256 = "1rybhk2pxpfh2789ck9mrkdv3bpx7b7miwndlshb5vb02m9crxbz"; }; + configureFlags = "CPPFLAGS=-DNDEBUG CFLAGS=-O3 CXXFLAGS=-O3"; + doCheck = true; meta = { From a8a6fd4063b4f74a11e10e64f9637f8806f175e6 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Mar 2013 14:07:54 +0100 Subject: [PATCH 371/407] texinfo: update to version 5.1 --- pkgs/development/tools/misc/texinfo/{5.0.nix => 5.1.nix} | 4 ++-- pkgs/top-level/all-packages.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename pkgs/development/tools/misc/texinfo/{5.0.nix => 5.1.nix} (92%) diff --git a/pkgs/development/tools/misc/texinfo/5.0.nix b/pkgs/development/tools/misc/texinfo/5.1.nix similarity index 92% rename from pkgs/development/tools/misc/texinfo/5.0.nix rename to pkgs/development/tools/misc/texinfo/5.1.nix index a4fb2e9b468..807a3388b4b 100644 --- a/pkgs/development/tools/misc/texinfo/5.0.nix +++ b/pkgs/development/tools/misc/texinfo/5.1.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, ncurses, perl }: stdenv.mkDerivation rec { - name = "texinfo-5.0"; + name = "texinfo-5.1"; src = fetchurl { url = "mirror://gnu/texinfo/${name}.tar.xz"; - sha256 = "1p34f68h9ggfj6ckgj0p62qlj7pmz3ha3vc91kh4hr44pnwm1pla"; + sha256 = "0864v5i488x3mb3v5p6nhy2kw0mqkzpa3b0453iibj81zlpq078q"; }; buildInputs = [ ncurses perl ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 428443c1daa..9ec3a5cc60f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3318,7 +3318,7 @@ let texinfo413 = callPackage ../development/tools/misc/texinfo/4.13a.nix { }; texinfo49 = callPackage ../development/tools/misc/texinfo/4.9.nix { }; - texinfo5 = callPackage ../development/tools/misc/texinfo/5.0.nix { }; + texinfo5 = callPackage ../development/tools/misc/texinfo/5.1.nix { }; texinfo = texinfo413; texi2html = callPackage ../development/tools/misc/texi2html { }; @@ -7741,7 +7741,7 @@ let sox = callPackage ../applications/misc/audio/sox { }; - spotify = callPackage ../applications/audio/spotify { + spotify = callPackage ../applications/audio/spotify { inherit (gnome) GConf; }; From 74275af383192521d969d527b570122f7e981cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 13 Mar 2013 16:46:50 +0100 Subject: [PATCH 372/407] boost: properly quoting cflags parameters --- pkgs/development/libraries/boost/1.53.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/boost/1.53.nix b/pkgs/development/libraries/boost/1.53.nix index c3272e98a14..ff09dfd5954 100644 --- a/pkgs/development/libraries/boost/1.53.nix +++ b/pkgs/development/libraries/boost/1.53.nix @@ -28,7 +28,7 @@ let layout = if taggedLayout then "tagged" else "system"; cflags = if enablePIC && enableExceptions then - "cflags=-fPIC -fexceptions cxxflags=-fPIC linkflags=-fPIC" + "cflags=\"-fPIC -fexceptions\" cxxflags=-fPIC linkflags=-fPIC" else if enablePIC then "cflags=-fPIC cxxflags=-fPIC linkflags=-fPIC" else if enableExceptions then From 729c3a81744b7438fb30ba8338f88041d373fba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 13 Mar 2013 16:47:56 +0100 Subject: [PATCH 373/407] gamin: adding a patch against a deadlock https://bugzilla.gnome.org/show_bug.cgi?id=667230 We've seen this annoying deadlock sometimes, and all in kde blocked until gam_server was killed. --- .../libraries/gamin/deadlock.patch | 68 +++++++++++++++++++ pkgs/development/libraries/gamin/default.nix | 2 +- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/gamin/deadlock.patch diff --git a/pkgs/development/libraries/gamin/deadlock.patch b/pkgs/development/libraries/gamin/deadlock.patch new file mode 100644 index 00000000000..e2abc8ce2d9 --- /dev/null +++ b/pkgs/development/libraries/gamin/deadlock.patch @@ -0,0 +1,68 @@ +Fix for a deadlock: +https://bugzilla.gnome.org/show_bug.cgi?id=667230 + +From cc14440eface093548cb3bc7814da11d9a99d283 Mon Sep 17 00:00:00 2001 +From: Anssi Hannula +Date: Wed, 4 Jan 2012 00:23:55 +0200 +Subject: [PATCH] fix possible server deadlock in ih_sub_cancel + +ih_sub_foreach() calls ih_sub_cancel() while inotify_lock is locked. +However, ih_sub_cancel() locks it again, and locking GMutex recursively +causes undefined behaviour. + +Fix that by removing locking from ih_sub_cancel() as ih_sub_foreach() +is its only user. Also make the function static so that it won't +accidentally get used by other files without locking (inotify-helper.h +is an internal server header). + +This should fix the intermittent deadlocks I've been experiencing +causing KDE applications to no longer start, and probably also +http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542361 +--- + server/inotify-helper.c | 7 ++----- + server/inotify-helper.h | 1 - + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/server/inotify-helper.c b/server/inotify-helper.c +index d77203e..0789fa4 100644 +--- a/server/inotify-helper.c ++++ b/server/inotify-helper.c +@@ -123,13 +123,11 @@ ih_sub_add (ih_sub_t * sub) + + /** + * Cancels a subscription which was being monitored. ++ * inotify_lock must be held when calling. + */ +-gboolean ++static gboolean + ih_sub_cancel (ih_sub_t * sub) + { +- G_LOCK(inotify_lock); +- +- + if (!sub->cancelled) + { + IH_W("cancelling %s\n", sub->pathname); +@@ -140,7 +138,6 @@ ih_sub_cancel (ih_sub_t * sub) + sub_list = g_list_remove (sub_list, sub); + } + +- G_UNLOCK(inotify_lock); + return TRUE; + } + +diff --git a/server/inotify-helper.h b/server/inotify-helper.h +index 5d3b6d0..d36b5fd 100644 +--- a/server/inotify-helper.h ++++ b/server/inotify-helper.h +@@ -34,7 +34,6 @@ gboolean ih_startup (event_callback_t ecb, + found_callback_t fcb); + gboolean ih_running (void); + gboolean ih_sub_add (ih_sub_t *sub); +-gboolean ih_sub_cancel (ih_sub_t *sub); + + /* Return FALSE from 'f' if the subscription should be cancelled */ + void ih_sub_foreach (void *callerdata, gboolean (*f)(ih_sub_t *sub, void *callerdata)); +-- +1.7.7.2 + diff --git a/pkgs/development/libraries/gamin/default.nix b/pkgs/development/libraries/gamin/default.nix index 6d94eee865f..b61101654ba 100644 --- a/pkgs/development/libraries/gamin/default.nix +++ b/pkgs/development/libraries/gamin/default.nix @@ -16,5 +16,5 @@ stdenv.mkDerivation rec { # with Glibc 2.9. configureFlags = "--disable-debug --with-python=${python} CPPFLAGS=-D_GNU_SOURCE"; - patches = map fetchurl (import ./debian-patches.nix); + patches = [ ./deadlock.patch ] ++ map fetchurl (import ./debian-patches.nix); } From 8db4152ddf20d60f07832e1c2f1f2de937961361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Wed, 13 Mar 2013 21:06:37 +0100 Subject: [PATCH 374/407] A more complete fix of cyrus-sasl update (broken KDEs). This amends commit af656c6698bc1977e47aafe5c4137370d2e03d86. --- pkgs/desktops/kde-4.7/kdepimlibs.nix | 6 ------ pkgs/development/libraries/cyrus-sasl/default.nix | 9 ++++++--- .../libraries/cyrus-sasl/missing-size_t.patch | 13 +++++++++++++ 3 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 pkgs/development/libraries/cyrus-sasl/missing-size_t.patch diff --git a/pkgs/desktops/kde-4.7/kdepimlibs.nix b/pkgs/desktops/kde-4.7/kdepimlibs.nix index 1c4ccec8423..736508eaf0f 100644 --- a/pkgs/desktops/kde-4.7/kdepimlibs.nix +++ b/pkgs/desktops/kde-4.7/kdepimlibs.nix @@ -8,12 +8,6 @@ kde { ]; propagatedBuildInputs = [ kdelibs ]; - - preConfigure = '' - echo '#include ' > tmp.h - cat tmp.h kioslave/smtp/command.h > tmp2.h - mv tmp2.h kioslave/smtp/command.h - ''; meta = { description = "KDE PIM libraries"; diff --git a/pkgs/development/libraries/cyrus-sasl/default.nix b/pkgs/development/libraries/cyrus-sasl/default.nix index 741d47075d9..87165fa8e7f 100644 --- a/pkgs/development/libraries/cyrus-sasl/default.nix +++ b/pkgs/development/libraries/cyrus-sasl/default.nix @@ -10,13 +10,16 @@ stdenv.mkDerivation rec { buildInputs = [ openssl db4 gettext ] ++ stdenv.lib.optional stdenv.isLinux pam; + patches = [ ./missing-size_t.patch ]; # https://bugzilla.redhat.com/show_bug.cgi?id=906519 + patchFlags = "-p0"; + # Set this variable at build-time to make sure $out can be evaluated. preConfigure = '' configureFlagsArray=( --with-plugindir=$out/lib/sasl2 --with-configdir=$out/lib/sasl2 - --with-saslauthd=/run/saslauthd - --enable-login - ) + --with-saslauthd=/run/saslauthd + --enable-login + ) ''; meta = { diff --git a/pkgs/development/libraries/cyrus-sasl/missing-size_t.patch b/pkgs/development/libraries/cyrus-sasl/missing-size_t.patch new file mode 100644 index 00000000000..42f20fb8096 --- /dev/null +++ b/pkgs/development/libraries/cyrus-sasl/missing-size_t.patch @@ -0,0 +1,13 @@ +Gentoo bug #458790 +--- include/sasl.h 2012-10-12 17:05:48.000000000 +0300 ++++ include/sasl.h 2013-02-23 16:56:44.648786268 +0200 +@@ -121,6 +121,9 @@ + #ifndef SASL_H + #define SASL_H 1 + ++/* stddef.h to get size_t defined */ ++#include ++ + /* Keep in sync with win32/common.mak */ + #define SASL_VERSION_MAJOR 2 + #define SASL_VERSION_MINOR 1 From 0d191de368ed76fed9fa567a668933e452c807e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Thu, 14 Mar 2013 01:22:55 +0100 Subject: [PATCH 375/407] Fix wicd to find the python gobject on its PYTHONPATH --- pkgs/development/python-modules/pygobject/default.nix | 8 -------- pkgs/tools/networking/wicd/default.nix | 8 ++++---- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/pkgs/development/python-modules/pygobject/default.nix b/pkgs/development/python-modules/pygobject/default.nix index 8d6a1368d8b..d8504540137 100644 --- a/pkgs/development/python-modules/pygobject/default.nix +++ b/pkgs/development/python-modules/pygobject/default.nix @@ -12,14 +12,6 @@ stdenv.mkDerivation rec { buildInputs = [ python pkgconfig glib ]; - # in a "normal" setup, pygobject and pygtk are installed into the - # same site-packages: we need a pth file for both. pygtk.py would be - # used to select a specific version, in our setup it should have no - # effect, but we leave it in case somebody expects and calls it. - postInstall = '' - mv $out/lib/${python.libPrefix}/site-packages/{pygtk.pth,${name}.pth} - ''; - meta = { homepage = http://live.gnome.org/PyGObject; description = "Python bindings for Glib"; diff --git a/pkgs/tools/networking/wicd/default.nix b/pkgs/tools/networking/wicd/default.nix index 57c2e1d6d3c..aa4df61306c 100644 --- a/pkgs/tools/networking/wicd/default.nix +++ b/pkgs/tools/networking/wicd/default.nix @@ -26,14 +26,14 @@ stdenv.mkDerivation rec { substituteInPlace in/scripts=wicd.in --subst-var-by TEMPLATE-DEFAULT $out/share/other/dhclient.conf.template.default sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin:${wpa_supplicant}/sbin:${dhcpcd}/sbin:${dhcp}/sbin:${wirelesstools}/sbin:${nettools}/sbin:${openresolv}/sbin:${iproute}/sbin" in/scripts=wicd.in - sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pygobject})/gtk-2.0:$(toPythonPath ${pythonDBus})" in/scripts=wicd.in + sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pygobject}):$(toPythonPath ${pythonDBus})" in/scripts=wicd.in sed -i "4iexport LC_ALL=\\\"${locale}\\\"" in/scripts=wicd.in sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin" in/scripts=wicd-client.in - sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject})/gtk-2.0:$(toPythonPath ${pycairo}):$(toPythonPath ${pythonDBus})" in/scripts=wicd-client.in + sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject}):$(toPythonPath ${pycairo}):$(toPythonPath ${pythonDBus})" in/scripts=wicd-client.in sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin" in/scripts=wicd-gtk.in - sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject})/gtk-2.0:$(toPythonPath ${pycairo}):$(toPythonPath ${pythonDBus})" in/scripts=wicd-gtk.in + sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject}):$(toPythonPath ${pycairo}):$(toPythonPath ${pythonDBus})" in/scripts=wicd-gtk.in sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin" in/scripts=wicd-cli.in - sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject})/gtk-2.0:$(toPythonPath ${pycairo}):$(toPythonPath ${pythonDBus})" in/scripts=wicd-cli.in + sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject}):$(toPythonPath ${pycairo}):$(toPythonPath ${pythonDBus})" in/scripts=wicd-cli.in ''; configurePhase = '' From 0576a0054bad5f6dd8b21e2481dab7e725c5e103 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Thu, 14 Mar 2013 13:52:45 +0100 Subject: [PATCH 376/407] Implemented an unelegant workaround that allows nodejs to be used on darwin using xcode --- pkgs/development/web/nodejs/default.nix | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix index 7f1aafa64f7..138b4180b89 100644 --- a/pkgs/development/web/nodejs/default.nix +++ b/pkgs/development/web/nodejs/default.nix @@ -12,26 +12,36 @@ stdenv.mkDerivation rec { configureFlags = [ "--openssl-includes=${openssl}/include" "--openssl-libpath=${openssl}/lib" + ] + ++ (if !stdenv.isDarwin then [ # Shared V8 is broken on Mac OS X. Who can fix V8 on Darwin makes me very happy, but I gave up studying python-gyp. "--shared-v8" "--shared-v8-includes=${v8}/includes" "--shared-v8-libpath=${v8}/lib" - ]; + ] else []); #patches = stdenv.lib.optional stdenv.isDarwin ./no-arch-flag.patch; + # Expose the host compiler on darwin, which is the only compiler capable of building it + preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' + export OLDPATH=$PATH + export PATH=/usr/bin:$PATH + ''; + prePatch = '' sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i tools/{*.py,waf-light,node-waf} configure ''; - postInstall = '' - + postInstall = stdenv.lib.optionalString stdenv.isDarwin '' + export PATH=$OLDPATH + '' + '' sed -e 's|^#!/usr/bin/env node$|#!'$out'/bin/node|' -i $out/lib/node_modules/npm/bin/npm-cli.js - '' + stdenv.lib.optionalString stdenv.isDarwin '' + '' /*+ stdenv.lib.optionalString stdenv.isDarwin '' install_name_tool -change libv8.dylib ${v8}/lib/libv8.dylib $out/bin/node - ''; + ''*/; - buildInputs = [ python openssl v8 zlib ] ++ stdenv.lib.optional stdenv.isLinux utillinux; - + buildInputs = [ python openssl zlib ] + ++ stdenv.lib.optional stdenv.isLinux utillinux + ++ stdenv.lib.optional (!stdenv.isDarwin) v8; setupHook = ./setup-hook.sh; meta = with stdenv.lib; { From 46196750114d85bcd28ff3a91b559b58767c6a53 Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Thu, 14 Mar 2013 14:07:56 +0100 Subject: [PATCH 377/407] Add rsyslog 7.2.6 and its dependencies --- pkgs/development/libraries/libee/default.nix | 16 +++++++++++++++ .../development/libraries/libestr/default.nix | 8 ++++++++ pkgs/tools/system/rsyslog/default.nix | 20 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 4 files changed, 49 insertions(+) create mode 100644 pkgs/development/libraries/libee/default.nix create mode 100644 pkgs/development/libraries/libestr/default.nix create mode 100644 pkgs/tools/system/rsyslog/default.nix diff --git a/pkgs/development/libraries/libee/default.nix b/pkgs/development/libraries/libee/default.nix new file mode 100644 index 00000000000..c3c73381acd --- /dev/null +++ b/pkgs/development/libraries/libee/default.nix @@ -0,0 +1,16 @@ +{ stdenv, fetchurl, pkgconfig, libestr }: +stdenv.mkDerivation { + name = "libee-0.4.1"; + + src = fetchurl { + url = http://www.libee.org/download/files/download/libee-0.4.1.tar.gz; + md5 = "7bbf4160876c12db6193c06e2badedb2"; + }; + + buildInputs = [pkgconfig libestr]; + + meta = { + homepage = "http://www.libee.org/"; + description = "An Event Expression Library inspired by CEE"; + }; +} diff --git a/pkgs/development/libraries/libestr/default.nix b/pkgs/development/libraries/libestr/default.nix new file mode 100644 index 00000000000..74d86667b5b --- /dev/null +++ b/pkgs/development/libraries/libestr/default.nix @@ -0,0 +1,8 @@ +{ stdenv, fetchurl }: +stdenv.mkDerivation { + name = "libestr-0.1.4"; + src = fetchurl { + url = http://libestr.adiscon.com/files/download/libestr-0.1.4.tar.gz; + sha256 = "1qw5vqryawdm434l9ql3r160ap2f5mmp7b6pciac7qli62y0a2z3"; + }; +} diff --git a/pkgs/tools/system/rsyslog/default.nix b/pkgs/tools/system/rsyslog/default.nix new file mode 100644 index 00000000000..fbe3f97dd8a --- /dev/null +++ b/pkgs/tools/system/rsyslog/default.nix @@ -0,0 +1,20 @@ +{stdenv, fetchurl, eventlog, pkgconfig, libestr, libee, json_c, libuuid, zlib}: + +stdenv.mkDerivation { + name = "rsyslog-7.2.6"; + + src = fetchurl { + url = http://www.rsyslog.com/files/download/rsyslog/rsyslog-7.2.6.tar.gz; + sha256 = "19a5c60816ebce6c86468eb8c5fe1c4cc1febf23c9167ce59d2327fe5e047ed9"; + }; + + buildInputs = [pkgconfig libestr libee json_c libuuid zlib]; + + meta = { + homepage = "http://www.rsyslog.com/"; + description = "Rsyslog is an enhanced syslogd. It can be used as a drop-in replacement for stock sysklogd."; + license = "GPLv3"; + + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9ec3a5cc60f..941ba2a2bad 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -496,6 +496,7 @@ let mcrl2 = callPackage ../tools/misc/mcrl2 { }; syslogng = callPackage ../tools/system/syslog-ng { }; + rsyslog = callPackage ../tools/system/rsyslog { }; mcelog = callPackage ../os-specific/linux/mcelog { }; @@ -1060,6 +1061,10 @@ let libconfig = callPackage ../development/libraries/libconfig { }; + libee = callPackage ../development/libraries/libee { }; + + libestr = callPackage ../development/libraries/libestr { }; + libtirpc = callPackage ../development/libraries/ti-rpc { }; libshout = callPackage ../development/libraries/libshout { }; From 23c78e41db9bbc2871d72412d6316009598da5fd Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Thu, 14 Mar 2013 14:57:40 +0100 Subject: [PATCH 378/407] git: Adding -lgcc_s on darwin causes the build to fail, so we disable it for that platform --- .../version-management/git-and-tools/git/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix index e96f31c0690..9aeea223ba7 100644 --- a/pkgs/applications/version-management/git-and-tools/git/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation { ++ stdenv.lib.optionals guiSupport [tcl tk]; # required to support pthread_cancel() - NIX_LDFLAGS = "-lgcc_s"; + NIX_LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s"; makeFlags = "prefix=\${out} PERL_PATH=${perl}/bin/perl SHELL_PATH=${stdenv.shell} " + (if pythonSupport then "PYTHON_PATH=${python}/bin/python" else "NO_PYTHON=1"); From ccb2c7ebb7436a734bf57f5d242983d766aff008 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Thu, 14 Mar 2013 15:18:55 +0100 Subject: [PATCH 379/407] Removed Xrender from cairo and add fontconfig to pango on Darwin: this fixes the compilation of graphviz and imagemagick on these platforms --- pkgs/development/libraries/cairo/default.nix | 3 ++- pkgs/development/libraries/pango/1.30.x.nix | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/cairo/default.nix b/pkgs/development/libraries/cairo/default.nix index d21f303e741..72ea24c9f8a 100644 --- a/pkgs/development/libraries/cairo/default.nix +++ b/pkgs/development/libraries/cairo/default.nix @@ -21,7 +21,8 @@ stdenv.mkDerivation rec { }; buildInputs = - [ pkgconfig x11 fontconfig xlibs.libXrender ] + [ pkgconfig x11 fontconfig ] + ++ stdenv.lib.optional (!stdenv.isDarwin) xlibs.libXrender ++ stdenv.lib.optionals xcbSupport [ libxcb xcbutil ] # On non-GNU systems we need GNU Gettext for libintl. diff --git a/pkgs/development/libraries/pango/1.30.x.nix b/pkgs/development/libraries/pango/1.30.x.nix index 2fd828a8737..c32891b95cf 100644 --- a/pkgs/development/libraries/pango/1.30.x.nix +++ b/pkgs/development/libraries/pango/1.30.x.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, gettext, x11, glib, cairo, libpng }: +{ stdenv, fetchurl, pkgconfig, gettext, x11, glib, cairo, libpng, fontconfig }: stdenv.mkDerivation rec { name = "pango-1.30.1"; @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "3a8c061e143c272ddcd5467b3567e970cfbb64d1d1600a8f8e62435556220cbe"; }; - buildInputs = stdenv.lib.optional stdenv.isDarwin gettext; + buildInputs = stdenv.lib.optionals stdenv.isDarwin [ gettext fontconfig ]; nativeBuildInputs = [ pkgconfig ]; From 629c36cfefb0adb2cf108e646b2ad1c47ef6d45c Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Thu, 14 Mar 2013 15:27:34 +0100 Subject: [PATCH 380/407] rsyslog: enable TLS support --- pkgs/tools/system/rsyslog/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/system/rsyslog/default.nix b/pkgs/tools/system/rsyslog/default.nix index fbe3f97dd8a..0189d04902a 100644 --- a/pkgs/tools/system/rsyslog/default.nix +++ b/pkgs/tools/system/rsyslog/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, eventlog, pkgconfig, libestr, libee, json_c, libuuid, zlib}: +{stdenv, fetchurl, eventlog, pkgconfig, libestr, libee, json_c, libuuid, zlib, gnutls}: stdenv.mkDerivation { name = "rsyslog-7.2.6"; @@ -8,7 +8,9 @@ stdenv.mkDerivation { sha256 = "19a5c60816ebce6c86468eb8c5fe1c4cc1febf23c9167ce59d2327fe5e047ed9"; }; - buildInputs = [pkgconfig libestr libee json_c libuuid zlib]; + buildInputs = [pkgconfig libestr libee json_c libuuid zlib gnutls]; + + configureFlags = "--enable-gnutls"; meta = { homepage = "http://www.rsyslog.com/"; From 00e272a11c246d7c5239244df368dd1c03e9c6ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 9 Mar 2013 22:50:24 +0100 Subject: [PATCH 381/407] libnotify: major update, no dependency on gtk+ now As a result it can be easily used with both gtk2 and gtk3. --- .../libraries/libnotify/default.nix | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/pkgs/development/libraries/libnotify/default.nix b/pkgs/development/libraries/libnotify/default.nix index 7bfd8c05104..ab8034c781e 100644 --- a/pkgs/development/libraries/libnotify/default.nix +++ b/pkgs/development/libraries/libnotify/default.nix @@ -1,17 +1,34 @@ -{ stdenv, fetchurl, pkgconfig, dbus, dbus_glib, gtk, glib }: - +{ stdenv, fetchurl, pkgconfig, automake, autoconf, libtool, glib, gdk_pixbuf }: + stdenv.mkDerivation rec { - name = "libnotify-0.4.5"; + ver_maj = "0.7"; + ver_min = "5"; + name = "libnotify-${ver_maj}.${ver_min}"; src = fetchurl { - url = "http://www.galago-project.org/files/releases/source/libnotify/${name}.tar.gz"; - sha256 = "1ndh7wpm9qh12vm5avjrq2xv1j681j9qq6j2fyj6a2shl67dp687"; + url = "mirror://gnome/sources/libnotify/${ver_maj}/${name}.tar.xz"; + sha256 = "0lmnzy16vdjs9vlgdm0b7wfyi1nh526hv2dpb7vxb92bhx3wny23"; + }; + src_m4 = fetchurl { + url = "mirror://gentoo/distfiles/introspection-20110205.m4.tar.bz2"; + sha256 = "1cnqh7aaji648nfd5537v7xaak8hgww3bpifhwam7bl0sc3ad523"; }; - buildInputs = [ pkgconfig dbus.libs dbus_glib gtk glib ]; + # see Gentoo ebuild - we don't need to depend on gtk+(2/3) + preConfigure = '' + cd m4 + tar xvf ${src_m4} + cd .. + + sed -i -e 's:noinst_PROG:check_PROG:' tests/Makefile.am || die + sed -i -e '/PKG_CHECK_MODULES(TESTS/d' configure.ac || die + AT_M4DIR=. autoreconf + ''; + + buildInputs = [ pkgconfig automake autoconf glib gdk_pixbuf ]; meta = { - homepage = http://galago-project.org/; + homepage = http://galago-project.org/; # very obsolete but found no better description = "A library that sends desktop notifications to a notification daemon"; }; } From 9ac8a16277705dd43bc8509c9589910f8ca7abc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 14 Mar 2013 16:01:53 +0100 Subject: [PATCH 382/407] vimprobable2, surf: fix the settings-schemas problem Note that they still segfault. --- pkgs/applications/misc/surf/default.nix | 11 ++++++----- .../browsers/vimprobable2/default.nix | 18 ++++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/pkgs/applications/misc/surf/default.nix b/pkgs/applications/misc/surf/default.nix index 94133e633dd..d6083da5ce4 100644 --- a/pkgs/applications/misc/surf/default.nix +++ b/pkgs/applications/misc/surf/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, makeWrapper, gtk, webkit, pkgconfig, glib, glib_networking, libsoup, patches ? null}: +{stdenv, fetchurl, makeWrapper, gtk, webkit, pkgconfig, glib, glib_networking, libsoup, gsettings_desktop_schemas, patches ? null}: stdenv.mkDerivation rec { name = "surf-${version}"; @@ -19,13 +19,14 @@ stdenv.mkDerivation rec { # `-lX11' to make sure libX11's store path is in the RPATH NIX_LDFLAGS = "-lX11"; preConfigure = [ ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk'' ]; - installPhase = '' + installPhase = '' make PREFIX=/ DESTDIR=$out install - wrapProgram "$out/bin/surf" --prefix GIO_EXTRA_MODULES : \ - ${glib_networking}/lib/gio/modules + wrapProgram "$out/bin/surf" \ + --prefix GIO_EXTRA_MODULES : ${glib_networking}/lib/gio/modules \ + --prefix XDG_DATA_DIRS : "${gsettings_desktop_schemas}/share" ''; - meta = { + meta = { description = "surf is a simple web browser based on WebKit/GTK+. It is able to display websites and follow links. It supports the XEmbed protocol which makes it possible to embed it in another application. Furthermore, one can point surf to another URI by setting its XProperties."; homepage = http://surf.suckless.org; license = "MIT"; diff --git a/pkgs/applications/networking/browsers/vimprobable2/default.nix b/pkgs/applications/networking/browsers/vimprobable2/default.nix index 7fd352ff6f7..ee8e4b8434a 100644 --- a/pkgs/applications/networking/browsers/vimprobable2/default.nix +++ b/pkgs/applications/networking/browsers/vimprobable2/default.nix @@ -1,11 +1,12 @@ -{ stdenv, fetchurl, makeWrapper, glib_networking, gtk, libsoup, libX11, perl, - pkgconfig, webkit }: +{ stdenv, fetchurl, makeWrapper, glib, glib_networking, gtk, libsoup, libX11, perl, + pkgconfig, webkit, gsettings_desktop_schemas }: -stdenv.mkDerivation { - name = "vimprobable2-1.2.0"; +stdenv.mkDerivation rec { + version = "1.2.1"; + name = "vimprobable2-${version}"; src = fetchurl { - url = "mirror://sourceforge/vimprobable/vimprobable2_1.2.0.tar.bz2"; - sha256 = "0fjakrmz1syjwgx01j2icpdv69jgvfl2nlxbj8zxfr8mw0h2wg1f"; + url = "mirror://sourceforge/vimprobable/vimprobable2_${version}.tar.bz2"; + sha256 = "19zx1k3s2gnhzzd2wpyqsk151w9p52ifl64xaz9a6qkgvrxlli8p"; }; # Nixos default ca bundle @@ -17,8 +18,9 @@ stdenv.mkDerivation { installPhase = '' make PREFIX=/ DESTDIR=$out install - wrapProgram "$out/bin/vimprobable2" --prefix GIO_EXTRA_MODULES : \ - ${glib_networking}/lib/gio/modules + wrapProgram "$out/bin/vimprobable2" \ + --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules" \ + --prefix XDG_DATA_DIRS : "${gsettings_desktop_schemas}/share" ''; meta = { From 3bf249cb12778ada25e80e6a2879a77378e8e759 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 14 Mar 2013 16:37:18 +0100 Subject: [PATCH 383/407] Module::Find: Update to 0.11 --- pkgs/top-level/perl-packages.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 12702dbb105..1110bd14e42 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -3031,10 +3031,14 @@ rec { }; ModuleFind = buildPerlPackage { - name = "Module-Find-0.06"; + name = "Module-Find-0.11"; src = fetchurl { - url = mirror://cpan/authors/id/C/CR/CRENZ/Module-Find-0.06.tar.gz; - sha256 = "1394jk0rn2zmchpl11kim69xh5h5yzg96jdlf76fqrk3dcn0y2ip"; + url = mirror://cpan/authors/id/C/CR/CRENZ/Module-Find-0.11.tar.gz; + sha256 = "15ykcwplbqh5hc0fw4cx6g0f22zr0hrfkdkv1s34n9yg574dq3b5"; + }; + meta = { + description = "Find and use installed modules in a (sub)category"; + license = "perl"; }; }; From e0b0be9fb37e519688b4665d91dccb049fa60d60 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 14 Mar 2013 19:25:27 +0100 Subject: [PATCH 384/407] pkgs/top-level/release.nix: enable Hydra builds of GHC versions 6.10.4, 6.12.3, 7.0.4, 7.4.2, and 7.6.2 Ensure that binary packages of the compiler itself are available from Hydra. --- pkgs/top-level/release.nix | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 194e6085e15..595c6b427a2 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -347,43 +347,25 @@ with (import ./release-lib.nix); gnome_vfs = linux; }; - /* haskellPackages_ghc6104 = { ghc = ghcSupported; - haskellPlatform_2009_2_0_2 = ghcSupported; - }; - - haskellPackages_ghc6121 = { - ghc = ghcSupported; - haskellPlatform_2010_1_0_0 = ghcSupported; }; haskellPackages_ghc6123 = { ghc = ghcSupported; - gitit = linux; - gtk = linux; - haskellPlatform = ghcSupported; - }; - - haskellPackages_ghc701 = { - ghc = ghcSupported; - }; - - haskellPackages_ghc702 = { - ghc = ghcSupported; - haskellPlatform = ghcSupported; }; haskellPackages_ghc704 = { - darcs = ghcSupported; ghc = ghcSupported; - gitit = linux; - gtk = linux; - haskellPlatform = ghcSupported; - lhs2tex = ghcSupported; - xmonad = linux; }; - */ + + haskellPackages_ghc742 = { + ghc = ghcSupported; + }; + + haskellPackages_ghc762 = { + ghc = ghcSupported; + }; strategoPackages = { sdf = linux; From 2393f6b96f1a1fd28cbbb7e344ea0366ddf4cc64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Fri, 15 Mar 2013 00:14:30 +0100 Subject: [PATCH 385/407] #379 Update wicd to 1.7.2.4, fix patches, disable translations --- pkgs/tools/networking/wicd/default.nix | 40 ++++++++++--------- .../networking/wicd/no-optimization.patch | 12 +++--- pkgs/tools/networking/wicd/no-trans.patch | 15 +++++++ .../networking/wicd/no-var-install.patch | 38 +++++++----------- 4 files changed, 58 insertions(+), 47 deletions(-) create mode 100644 pkgs/tools/networking/wicd/no-trans.patch diff --git a/pkgs/tools/networking/wicd/default.nix b/pkgs/tools/networking/wicd/default.nix index aa4df61306c..0f723f98a23 100644 --- a/pkgs/tools/networking/wicd/default.nix +++ b/pkgs/tools/networking/wicd/default.nix @@ -6,16 +6,17 @@ # on urwid which has not been packaged at this time (2009-12-27). stdenv.mkDerivation rec { - name = "wicd-1.7.1-beta2"; + name = "wicd-${version}"; + version = "1.7.2.4"; src = fetchurl { - url = "mirror://sourceforge/wicd/wicd-1.7.1b2.tar.bz2"; - sha256 = "13ga6a2ip8dy8h49wvv02jxxfvpk5q5sm2wz76dy62y1xsrm23c1"; + url = "https://launchpad.net/wicd/1.7/${version}/+download/${name}.tar.gz"; + sha256 = "15ywgh60xzmp5z8l1kzics7yi95isrjg1paz42dvp7dlpdfzpzfw"; }; buildInputs = [ python ]; - patches = [ ./no-var-install.patch ./mkdir-networks.patch ./pygtk.patch ./no-optimization.patch ]; + patches = [ ./no-var-install.patch ./no-trans.patch ./mkdir-networks.patch ./pygtk.patch ./no-optimization.patch ]; # Should I be using pygtk's propogated build inputs? # !!! Should use makeWrapper. @@ -24,7 +25,7 @@ stdenv.mkDerivation rec { substituteInPlace wicd/wicd-daemon.py --replace 'misc.find_path("python2")' "'${python}/bin/python'" substituteInPlace in/scripts=wicd.in --subst-var-by TEMPLATE-DEFAULT $out/share/other/dhclient.conf.template.default - + sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin:${wpa_supplicant}/sbin:${dhcpcd}/sbin:${dhcp}/sbin:${wirelesstools}/sbin:${nettools}/sbin:${openresolv}/sbin:${iproute}/sbin" in/scripts=wicd.in sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pygobject}):$(toPythonPath ${pythonDBus})" in/scripts=wicd.in sed -i "4iexport LC_ALL=\\\"${locale}\\\"" in/scripts=wicd.in @@ -57,11 +58,14 @@ stdenv.mkDerivation rec { --suspend=$out/etc/acpi/suspend.d/ \ --pmutils=$out/lib/pm-utils/sleep.d/ \ --dbus=$out/etc/dbus-1/system.d/ \ + --dbus-service=$out/etc/dbus-1/system-services/ \ + --systemd=$out/lib/systemd/ \ + --logrotate=$out/etc/logrotate.d/ \ --desktop=$out/share/applications/ \ --icons=$out/share/icons/hicolour/ \ --translations=$out/share/locale/ \ --autostart=$out/etc/xdg/autostart/ \ - --varlib=/var/lib/wicd/ \ + --varlib=$out/var/lib/ \ --docdir=$out/share/doc/ \ --mandir=$out/share/man/ \ --kdedir=$out/share/autostart/ \ @@ -76,7 +80,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - python setup.py install --prefix=$out + python setup.py install --prefix=$out --install-lib=$out/lib/${python.libPrefix}/site-packages mkdir -p $out/share/other cp other/dhclient.conf.template.default $out/share/other/dhclient.conf.template.default @@ -87,17 +91,17 @@ stdenv.mkDerivation rec { echo "wpa2-ttls" >> "$out/etc/encryption/templates/active" # have wicd generate upstart events - echo '#!/bin/sh -initctl emit -n wicd-preconnect ITYPE="$1" ESSID="$2" BSSID="$3"' > $out/etc/scripts/preconnect/upstart-emit - echo '#!/bin/sh -initctl emit -n wicd-postconnect ITYPE="$1" ESSID="$2" BSSID="$3" -initctl emit -n ip-up' > $out/etc/scripts/postconnect/upstart-emit - echo '#!/bin/sh -initctl emit -n wicd-predisconnect ITYPE="$1" ESSID="$2" BSSID="$3"' > $out/etc/scripts/predisconnect/upstart-emit - echo '#!/bin/sh -initctl emit -n wicd-postdisconnect ITYPE="$1" ESSID="$2" BSSID="$3" -initctl emit -n ip-down' > $out/etc/scripts/postdisconnect/upstart-emit - chmod a+x $out/etc/scripts/*/upstart-emit +# echo '#!/bin/sh +# initctl emit -n wicd-preconnect ITYPE="$1" ESSID="$2" BSSID="$3"' > $out/etc/scripts/preconnect/upstart-emit +# echo '#!/bin/sh +# initctl emit -n wicd-postconnect ITYPE="$1" ESSID="$2" BSSID="$3" +# initctl emit -n ip-up' > $out/etc/scripts/postconnect/upstart-emit +# echo '#!/bin/sh +# initctl emit -n wicd-predisconnect ITYPE="$1" ESSID="$2" BSSID="$3"' > $out/etc/scripts/predisconnect/upstart-emit +# echo '#!/bin/sh +# initctl emit -n wicd-postdisconnect ITYPE="$1" ESSID="$2" BSSID="$3" +# initctl emit -n ip-down' > $out/etc/scripts/postdisconnect/upstart-emit +# chmod a+x $out/etc/scripts/*/upstart-emit ''; meta = { diff --git a/pkgs/tools/networking/wicd/no-optimization.patch b/pkgs/tools/networking/wicd/no-optimization.patch index fb04846d85b..785cae7b6ed 100644 --- a/pkgs/tools/networking/wicd/no-optimization.patch +++ b/pkgs/tools/networking/wicd/no-optimization.patch @@ -8,14 +8,14 @@ With optimizations on, python will overwrite the nix store. -exec %PYTHON% -O %SHARE%daemon/wicd-daemon.py $@ +exec %PYTHON% -B %SHARE%daemon/wicd-daemon.py $@ ---- wicd-1.7.1b2/wicd/wicd-daemon.py.old 2011-04-07 08:28:38.668311226 -0400 -+++ wicd-1.7.1b2/wicd/wicd-daemon.py 2011-04-07 08:28:59.111311223 -0400 -@@ -1806,7 +1806,7 @@ - wicd_bus = dbus.service.BusName('org.wicd.daemon', bus=bus) +--- wicd-1.7.2.4/wicd/wicd-daemon.py 2012-04-30 21:19:45.000000000 +0200 ++++ wicd-1.7.2.4/wicd/wicd-daemon.pynew 2013-03-14 21:35:23.250306592 +0100 +@@ -1812,7 +1812,7 @@ daemon = WicdDaemon(wicd_bus, auto_connect=auto_connect) + child_pid = None if not no_poll: -- child_pid = Popen([misc.find_path("python2"), "-O", -+ child_pid = Popen([misc.find_path("python2"), "-B", +- child_pid = Popen([wpath.python, "-O", ++ child_pid = Popen([wpath.python, "-B", os.path.join(wpath.daemon, "monitor.py")], shell=False, close_fds=True).pid atexit.register(on_exit, child_pid) diff --git a/pkgs/tools/networking/wicd/no-trans.patch b/pkgs/tools/networking/wicd/no-trans.patch new file mode 100644 index 00000000000..a4c5018e181 --- /dev/null +++ b/pkgs/tools/networking/wicd/no-trans.patch @@ -0,0 +1,15 @@ +--- wicd-1.7.2.4/setup.py 2013-03-14 21:28:21.360580941 +0100 ++++ wicd-1.7.2.4/setup.py 2013-03-14 21:22:50.125721943 +0100 +@@ -599,12 +599,6 @@ + if not wpath.no_install_pmutils: + data.append((wpath.pmutils, ['other/55wicd'])) + print 'Using pid path', os.path.basename(wpath.pidfile) +- print 'Language support for', +- for pofile in glob('po/*.po'): +- language = pofile.replace('po/', '').replace('.po', '') +- print language, +- data.append((wpath.translations + language + '/LC_MESSAGES/', +- ['translations/' + language + '/LC_MESSAGES/wicd.mo'])) + print + except Exception, e: + print str(e) diff --git a/pkgs/tools/networking/wicd/no-var-install.patch b/pkgs/tools/networking/wicd/no-var-install.patch index 95a5499f283..b01f0e5a438 100644 --- a/pkgs/tools/networking/wicd/no-var-install.patch +++ b/pkgs/tools/networking/wicd/no-var-install.patch @@ -1,25 +1,17 @@ The install tries to create files in /var. This patch removes those steps. ---- wicd-1.7.0/setup.py 2010-01-14 23:49:11.000000000 -0500 -+++ wicd-1.7.0/setup.py 2010-11-16 22:15:33.855977242 -0500 -@@ -493,11 +493,8 @@ - print "Using init file",(wpath.init, wpath.initfile) - data = [ - (wpath.dbus, ['other/wicd.conf']), -- (wpath.log, [empty_file]), -- (wpath.etc, ['other/dhclient.conf.template.default']), - (wpath.encryption, [('encryption/templates/' + b) for b in - os.listdir('encryption/templates') if not b.startswith('.')]), -- (wpath.networks, [empty_file]), - (wpath.sbin, ['scripts/wicd']), - (wpath.daemon, ['wicd/monitor.py', 'wicd/wicd-daemon.py', - 'wicd/suspend.py', 'wicd/autoconnect.py']), -@@ -558,7 +555,7 @@ - if not wpath.no_install_docs: - data.append((wpath.docdir, ['INSTALL', 'LICENSE', 'AUTHORS', - 'README', 'CHANGES', ])) -- data.append((wpath.varlib, ['other/WHEREAREMYFILES'])) -+ data.append((wpath.share, ['other/WHEREAREMYFILES'])) - if not wpath.no_install_kde: - if not wpath.no_install_gtk: - data.append((wpath.kdedir, ['other/wicd-tray.desktop'])) +--- wicd-1.7.2.4/setup.py 2013-03-14 21:28:21.360580941 +0100 ++++ wicd-1.7.2.4/setup.py 2013-03-14 21:22:50.125721943 +0100 +@@ -505,11 +505,8 @@ + (wpath.dbus_service, ['other/org.wicd.daemon.service']), + (wpath.systemd, ['other/wicd.service']), + (wpath.logrotate, ['other/wicd.logrotate']), +- (wpath.log, [empty_file]), +- (wpath.etc, ['other/dhclient.conf.template.default']), + (wpath.encryption, [('encryption/templates/' + b) for b in + os.listdir('encryption/templates') if not b.startswith('.')]), +- (wpath.networks, [empty_file]), + (wpath.sbin, ['scripts/wicd']), + (wpath.daemon, ['wicd/monitor.py', 'wicd/wicd-daemon.py', + 'wicd/suspend.py', 'wicd/autoconnect.py']), + From ef3da5eecd2ae96f1953efc8e9ddf1110b3ab2b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Fri, 15 Mar 2013 00:58:19 +0100 Subject: [PATCH 386/407] #379 wicd: Add ifconfig and ping to the PATH /var/log/wicd/wicd.log showed that it failed to find ifconfig that was probably the main issue (after the gobject import failure) --- pkgs/tools/networking/wicd/default.nix | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/pkgs/tools/networking/wicd/default.nix b/pkgs/tools/networking/wicd/default.nix index 0f723f98a23..d63711e12ac 100644 --- a/pkgs/tools/networking/wicd/default.nix +++ b/pkgs/tools/networking/wicd/default.nix @@ -1,5 +1,5 @@ {stdenv, fetchurl, python, pygobject, pycairo, pyGtkGlade, pythonDBus, - wpa_supplicant, dhcp, dhcpcd, wirelesstools, nettools, openresolv, iproute, + wpa_supplicant, dhcp, dhcpcd, wirelesstools, nettools, openresolv, iproute, iputils, locale ? "C" }: # Wicd has a ncurses interface that we do not build because it depends @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { substituteInPlace in/scripts=wicd.in --subst-var-by TEMPLATE-DEFAULT $out/share/other/dhclient.conf.template.default - sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin:${wpa_supplicant}/sbin:${dhcpcd}/sbin:${dhcp}/sbin:${wirelesstools}/sbin:${nettools}/sbin:${openresolv}/sbin:${iproute}/sbin" in/scripts=wicd.in + sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin:${wpa_supplicant}/sbin:${dhcpcd}/sbin:${dhcp}/sbin:${wirelesstools}/sbin:${nettools}/sbin:${nettools}/bin:${iputils}/sbin:${openresolv}/sbin:${iproute}/sbin" in/scripts=wicd.in sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pygobject}):$(toPythonPath ${pythonDBus})" in/scripts=wicd.in sed -i "4iexport LC_ALL=\\\"${locale}\\\"" in/scripts=wicd.in sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin" in/scripts=wicd-client.in @@ -89,19 +89,6 @@ stdenv.mkDerivation rec { # . cp -v "${./wpa2-ttls}" "$out/etc/encryption/templates/wpa2-ttls" echo "wpa2-ttls" >> "$out/etc/encryption/templates/active" - - # have wicd generate upstart events -# echo '#!/bin/sh -# initctl emit -n wicd-preconnect ITYPE="$1" ESSID="$2" BSSID="$3"' > $out/etc/scripts/preconnect/upstart-emit -# echo '#!/bin/sh -# initctl emit -n wicd-postconnect ITYPE="$1" ESSID="$2" BSSID="$3" -# initctl emit -n ip-up' > $out/etc/scripts/postconnect/upstart-emit -# echo '#!/bin/sh -# initctl emit -n wicd-predisconnect ITYPE="$1" ESSID="$2" BSSID="$3"' > $out/etc/scripts/predisconnect/upstart-emit -# echo '#!/bin/sh -# initctl emit -n wicd-postdisconnect ITYPE="$1" ESSID="$2" BSSID="$3" -# initctl emit -n ip-down' > $out/etc/scripts/postdisconnect/upstart-emit -# chmod a+x $out/etc/scripts/*/upstart-emit ''; meta = { From 579082350c24647dececfef3b58da7348068dcc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Fri, 15 Mar 2013 01:06:55 +0100 Subject: [PATCH 387/407] pygobject, revert accidental change I suspect we don't need the postInstall step which moves pygtk.pth to pygobject.pth any more, but I didn't mean to include it in this change set --- pkgs/development/python-modules/pygobject/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/development/python-modules/pygobject/default.nix b/pkgs/development/python-modules/pygobject/default.nix index d8504540137..8d6a1368d8b 100644 --- a/pkgs/development/python-modules/pygobject/default.nix +++ b/pkgs/development/python-modules/pygobject/default.nix @@ -12,6 +12,14 @@ stdenv.mkDerivation rec { buildInputs = [ python pkgconfig glib ]; + # in a "normal" setup, pygobject and pygtk are installed into the + # same site-packages: we need a pth file for both. pygtk.py would be + # used to select a specific version, in our setup it should have no + # effect, but we leave it in case somebody expects and calls it. + postInstall = '' + mv $out/lib/${python.libPrefix}/site-packages/{pygtk.pth,${name}.pth} + ''; + meta = { homepage = http://live.gnome.org/PyGObject; description = "Python bindings for Glib"; From f670aa50d7bfc48c2959ded3efde818aee665705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Fri, 15 Mar 2013 01:08:16 +0100 Subject: [PATCH 388/407] dbus-python: update the ancient version This was probably the root of #379. --- pkgs/development/python-modules/dbus/default.nix | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/dbus/default.nix b/pkgs/development/python-modules/dbus/default.nix index 0183944e201..bfce358a2aa 100644 --- a/pkgs/development/python-modules/dbus/default.nix +++ b/pkgs/development/python-modules/dbus/default.nix @@ -1,16 +1,22 @@ -{ stdenv, fetchurl, python, pkgconfig, dbus, dbus_glib }: +{ stdenv, fetchurl, python, pkgconfig, dbus, dbus_glib, dbus_tools }: stdenv.mkDerivation rec { - name = "dbus-python-0.84.0"; + name = "dbus-python-1.1.1"; src = fetchurl { url = "http://dbus.freedesktop.org/releases/dbus-python/${name}.tar.gz"; - sha256 = "01jrmj7ps79dkd6f8bzm17vxzpad1ixwmcb1liy64xm9y6mcfnxq"; + sha256 = "122yj5y0mndk9axh735qvwwckck6s6x0q84dw6p97mplp17wl5w9"; }; - buildInputs = [ python pkgconfig dbus dbus_glib ]; + postPatch = "patchShebangs ."; + + buildInputs = [ python pkgconfig dbus dbus_glib ] + ++ stdenv.lib.optional doCheck dbus_tools; + + doCheck = false; # https://bugs.freedesktop.org/show_bug.cgi?id=57140 meta = { description = "Python DBus bindings"; + license = "MIT"; }; } From 89a802d82b93dafaa3437558428db761c2dda2d7 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Fri, 15 Mar 2013 10:31:17 +0100 Subject: [PATCH 389/407] androidsdk: Small fix in generating the build product --- pkgs/development/mobile/androidenv/build-app.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/mobile/androidenv/build-app.nix b/pkgs/development/mobile/androidenv/build-app.nix index 07f3797f0cd..3f8af65f3bd 100644 --- a/pkgs/development/mobile/androidenv/build-app.nix +++ b/pkgs/development/mobile/androidenv/build-app.nix @@ -39,6 +39,6 @@ stdenv.mkDerivation { mv bin/*-${if release then "release" else "debug"}.apk $out mkdir -p $out/nix-support - echo "file binary-dist $(ls $out/*.apk)" > $out/nix-support/hydra-build-products + echo "file binary-dist $(echo $out/*.apk)" > $out/nix-support/hydra-build-products ''; } From fb600a5d99234f7c8c3d20d099ad4502369a795f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 15 Mar 2013 12:48:35 +0100 Subject: [PATCH 390/407] Debian VM image: Update to 6.0.7 --- pkgs/build-support/vm/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 9d9bdb2033e..1251866252c 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -1367,22 +1367,22 @@ rec { }; debian60i386 = { - name = "debian-6.0.6-squeeze-i386"; - fullName = "Debian 6.0.6 Squeeze (i386)"; + name = "debian-6.0.7-squeeze-i386"; + fullName = "Debian 6.0.7 Squeeze (i386)"; packagesList = fetchurl { url = mirror://debian/dists/squeeze/main/binary-i386/Packages.bz2; - sha256 = "18c0473jacd877nkky1x21dkmp4992d8qra6wj07sq0yz5gdc9c4"; + sha256 = "a770f26b5fce1a16460b68f135dfe97f4f4a9894b538ece0104a508c83ec65d5"; }; urlPrefix = mirror://debian; packages = commonDebianPackages; }; debian60x86_64 = { - name = "debian-6.0.6-squeeze-amd64"; - fullName = "Debian 6.0.6 Squeeze (amd64)"; + name = "debian-6.0.7-squeeze-amd64"; + fullName = "Debian 6.0.7 Squeeze (amd64)"; packagesList = fetchurl { url = mirror://debian/dists/squeeze/main/binary-amd64/Packages.bz2; - sha256 = "1n1h3pz6axcaraxq8gfzq0jywlpdrqand1dnd4q79dy6cl788bi2"; + sha256 = "b2bb561bde59ac67e07c70aa7c86a33f237436e6891796a93c6ed6ffb032080e"; }; urlPrefix = mirror://debian; packages = commonDebianPackages; From 101eba7befb4544b0ae9cb667d6aadc3bb5fc7e9 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 15 Mar 2013 08:55:48 -0400 Subject: [PATCH 391/407] rubyLibs.libv8 needs python Signed-off-by: Shea Levy --- pkgs/development/interpreters/ruby/patches.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/ruby/patches.nix b/pkgs/development/interpreters/ruby/patches.nix index adfea12da95..10b0b202387 100644 --- a/pkgs/development/interpreters/ruby/patches.nix +++ b/pkgs/development/interpreters/ruby/patches.nix @@ -1,5 +1,5 @@ { fetchurl, writeScript, ruby, ncurses, sqlite, libxml2, libxslt, libffi -, zlib, libuuid, gems, jdk }: +, zlib, libuuid, gems, jdk, python }: let @@ -14,6 +14,8 @@ in { sup = { buildInputs = [ gems.ncursesw ]; }; + + libv8 = { buildInputs = [ python ]; }; sqlite3 = { propagatedBuildInputs = [ sqlite ]; }; From 4c67972e9b35c429452652751d381b1db54cd172 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 15 Mar 2013 13:28:07 +0100 Subject: [PATCH 392/407] checkinstall: Support Glibc >= 2.16 --- pkgs/tools/package-management/checkinstall/glibc-check.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/package-management/checkinstall/glibc-check.patch b/pkgs/tools/package-management/checkinstall/glibc-check.patch index 9376da41d9e..7f8cbccae8e 100644 --- a/pkgs/tools/package-management/checkinstall/glibc-check.patch +++ b/pkgs/tools/package-management/checkinstall/glibc-check.patch @@ -52,7 +52,7 @@ diff -x '*~' -rc checkinstall-1.6.2pre20081116-orig/installwatch/create-localdec 6) echo '#define GLIBC_MINOR 6' >> $OUTFILE SUBVERSION='glibc-2.6' ;; -! 7|8|9|10|11|12|13|14|15) +! 7|8|9|10|11|12|13|14|15|16|17|18) echo '#define GLIBC_MINOR 7' >> $OUTFILE SUBVERSION='glibc-2.7' ;; *) From 82dc43c28b2703733cff0210a562879cf54e5d7e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 15 Mar 2013 14:01:11 +0100 Subject: [PATCH 393/407] checkinstall: Make installwatch.so work with old Glibcs --- .../package-management/checkinstall/default.nix | 4 ++++ .../checkinstall/use-old-memcpy.patch | 12 ++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/tools/package-management/checkinstall/use-old-memcpy.patch diff --git a/pkgs/tools/package-management/checkinstall/default.nix b/pkgs/tools/package-management/checkinstall/default.nix index aa935076eb9..a2b9c11eb09 100644 --- a/pkgs/tools/package-management/checkinstall/default.nix +++ b/pkgs/tools/package-management/checkinstall/default.nix @@ -29,6 +29,10 @@ stdenv.mkDerivation { # Fix a `conflicting types for 'scandir'' error on Glibc 2.11. ./scandir.patch + + # Force use of old memcpy so that installwatch works on Glibc < + # 2.14. + ./use-old-memcpy.patch ]; buildInputs = [gettext]; diff --git a/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch b/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch new file mode 100644 index 00000000000..c8be7f0b5e2 --- /dev/null +++ b/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch @@ -0,0 +1,12 @@ +diff -ru -x '*~' checkinstall-1.6.2-orig/installwatch/installwatch.c checkinstall-1.6.2/installwatch/installwatch.c +--- checkinstall-1.6.2-orig/installwatch/installwatch.c 2008-11-16 17:20:53.000000000 +0100 ++++ checkinstall-1.6.2/installwatch/installwatch.c 2013-03-15 13:50:12.717646381 +0100 +@@ -28,6 +28,8 @@ + * + */ + ++asm (".symver memcpy, memcpy@GLIBC_2.2.5"); ++ + #include + #include + #include From cf20b47473b946917bd2f3e5c8f5e398d7f4283c Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 15 Mar 2013 09:22:52 -0400 Subject: [PATCH 394/407] Update rubygems Signed-off-by: Shea Levy --- .../interpreters/ruby/generated.nix | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index 5a959eeb26f..d41c6a28db7 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -13,20 +13,20 @@ g: # Get dependencies from patched gems arel = g.arel_3_0_2; atoulme_Antwrap = g.atoulme_Antwrap_0_7_4; autotest_rails = g.autotest_rails_4_1_2; - aws_sdk = g.aws_sdk_1_8_3_1; + aws_sdk = g.aws_sdk_1_8_5; bitbucket_backup = g.bitbucket_backup_0_2_2; builder = g.builder_3_2_0; buildr = g.buildr_1_4_10; - bundler = g.bundler_1_3_1; + bundler = g.bundler_1_3_4; childprocess = g.childprocess_0_3_9; daemons = g.daemons_1_1_9; diff_lcs = g.diff_lcs_1_1_3; dimensions = g.dimensions_1_2_0; erubis = g.erubis_2_7_0; - eventmachine = g.eventmachine_1_0_1; + eventmachine = g.eventmachine_1_0_3; fakes3 = g.fakes3_0_1_5; ffi = g.ffi_1_4_0; - foreman = g.foreman_0_61_0; + foreman = g.foreman_0_62_0; highline = g.highline_1_6_15; hike = g.hike_1_2_1; hoe = g.hoe_3_1_0; @@ -50,7 +50,7 @@ g: # Get dependencies from patched gems polyglot = g.polyglot_0_3_3; rack = g.rack_1_5_2; rack_cache = g.rack_cache_1_2; - rack_protection = g.rack_protection_1_4_0; + rack_protection = g.rack_protection_1_5_0; rack_ssl = g.rack_ssl_1_3_3; rack_test = g.rack_test_0_6_2; rails = g.rails_3_2_12; @@ -66,7 +66,7 @@ g: # Get dependencies from patched gems rspec_mocks = g.rspec_mocks_2_11_3; rubyforge = g.rubyforge_2_0_4; rubyzip = g.rubyzip_0_9_9; - sass = g.sass_3_2_6; + sass = g.sass_3_2_7; selenium_webdriver = g.selenium_webdriver_2_31_0; sinatra = g.sinatra_1_3_2; sprockets = g.sprockets_2_2_2; @@ -74,9 +74,9 @@ g: # Get dependencies from patched gems therubyracer = g.therubyracer_0_10_2; thin = g.thin_1_5_0; thor = g.thor_0_17_0; - tilt = g.tilt_1_3_4; + tilt = g.tilt_1_3_5; treetop = g.treetop_1_4_12; - tzinfo = g.tzinfo_0_3_36; + tzinfo = g.tzinfo_0_3_37; uuid = g.uuid_2_3_7; uuidtools = g.uuidtools_2_1_3; websocket = g.websocket_1_0_7; @@ -156,7 +156,7 @@ installed versions.''; longDescription = ''Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes. Strong conventions for associations, validations, aggregations, migrations, and testing come baked-in.''; }; name = ''activerecord-3.2.12''; - requiredGems = [ g.activesupport_3_2_12 g.activemodel_3_2_12 g.arel_3_0_2 g.tzinfo_0_3_36 ]; + requiredGems = [ g.activesupport_3_2_12 g.activemodel_3_2_12 g.arel_3_0_2 g.tzinfo_0_3_37 ]; sha256 = ''0fl8iyv3gcy72y79iv4ccyck8ik02rrl3pdy7yxfhlnqgryp8syi''; }; activeresource_3_2_12 = { @@ -233,16 +233,16 @@ rails support and extra plugins for migrations and fixtures.''; requiredGems = [ g.ZenTest_4_9_0 ]; sha256 = ''1wkb5jayb39yx0i8ly7sibygf9f9c3w24jg2z1qgm135zlb070v4''; }; - aws_sdk_1_8_3_1 = { + aws_sdk_1_8_5 = { basename = ''aws_sdk''; meta = { description = ''AWS SDK for Ruby''; homepage = ''http://aws.amazon.com/sdkforruby''; longDescription = ''AWS SDK for Ruby''; }; - name = ''aws-sdk-1.8.3.1''; + name = ''aws-sdk-1.8.5''; requiredGems = [ g.uuidtools_2_1_3 g.nokogiri_1_5_6 g.json_1_7_7 ]; - sha256 = ''1yiv2skrrwqw8ihznnqqznh4yax75hbv497xqllp7b5qqmnrpvy4''; + sha256 = ''0rhkkkfsw0qzckn99mnvpbnl7b1kysma3x8bbqwah2x438kwygpb''; }; bitbucket_backup_0_2_2 = { basename = ''bitbucket_backup''; @@ -316,19 +316,19 @@ for those one-off tasks, with a language that's a joy to use. ''; }; name = ''buildr-1.4.10''; - requiredGems = [ g.rake_0_9_2_2 g.builder_3_1_3 g.net_ssh_2_6_0 g.net_sftp_2_0_5 g.rubyzip_0_9_9 g.highline_1_6_2 g.json_pure_1_7_5 g.rubyforge_2_0_4 g.hoe_3_1_0 g.rjb_1_4_2 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_1_3 g.rspec_expectations_2_11_3 g.rspec_mocks_2_11_3 g.rspec_core_2_11_1 g.rspec_2_11_0 g.xml_simple_1_1_1 g.minitar_0_5_3 g.bundler_1_3_1 ]; + requiredGems = [ g.rake_0_9_2_2 g.builder_3_1_3 g.net_ssh_2_6_0 g.net_sftp_2_0_5 g.rubyzip_0_9_9 g.highline_1_6_2 g.json_pure_1_7_5 g.rubyforge_2_0_4 g.hoe_3_1_0 g.rjb_1_4_2 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_1_3 g.rspec_expectations_2_11_3 g.rspec_mocks_2_11_3 g.rspec_core_2_11_1 g.rspec_2_11_0 g.xml_simple_1_1_1 g.minitar_0_5_3 g.bundler_1_3_4 ]; sha256 = ''1x192r8ab5zr9rlp1i9b3pi3y74f9pj2w491wkgshgwj22akh6vn''; }; - bundler_1_3_1 = { + bundler_1_3_4 = { basename = ''bundler''; meta = { description = ''The best way to manage your application's dependencies''; homepage = ''http://gembundler.com''; longDescription = ''Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably''; }; - name = ''bundler-1.3.1''; + name = ''bundler-1.3.4''; requiredGems = [ ]; - sha256 = ''1nmvfsk9148nkl0bdcs167kiihp89zwkyvjs0khvi4df6s9km725''; + sha256 = ''1vgrc71nhnqlrg08zvs63afa1z9kzn2vvn95b14dvy14k2br3qhj''; }; childprocess_0_3_9 = { basename = ''childprocess''; @@ -411,7 +411,7 @@ is the MIT license.''; requiredGems = [ ]; sha256 = ''1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3''; }; - eventmachine_1_0_1 = { + eventmachine_1_0_3 = { basename = ''eventmachine''; meta = { description = ''Ruby/EventMachine library''; @@ -427,9 +427,9 @@ are provided with the package, primarily to serve as examples. The real goal of EventMachine is to enable programs to easily interface with other programs using TCP/IP, especially if custom protocols are required.''; }; - name = ''eventmachine-1.0.1''; + name = ''eventmachine-1.0.3''; requiredGems = [ ]; - sha256 = ''1v7im8v9y5jb863794irgnlqzdg669w6v1g89sln0l511gjnjv52''; + sha256 = ''09sqlsb6x9ddlgfw5gsw7z0yjg5m2qfjiqkz2fx70zsizj3lqhil''; }; fakes3_0_1_5 = { basename = ''fakes3''; @@ -452,16 +452,16 @@ using TCP/IP, especially if custom protocols are required.''; requiredGems = [ ]; sha256 = ''06a29qvg487yk9pyi7wzyj5700mf7s3mjdqc6dsrh0467mjj9768''; }; - foreman_0_61_0 = { + foreman_0_62_0 = { basename = ''foreman''; meta = { description = ''Process manager for applications with multiple components''; homepage = ''http://github.com/ddollar/foreman''; longDescription = ''Process manager for applications with multiple components''; }; - name = ''foreman-0.61.0''; + name = ''foreman-0.62.0''; requiredGems = [ g.thor_0_17_0 ]; - sha256 = ''1h9dmzq1cwz87qyzx2ibpjghsxjnnqbh485l3sdxyfh5k3v79k7z''; + sha256 = ''08i34rgs3bydk52zwpps4p0y2fvcnibp9lvfdhr75ppin7wv7lmr''; }; highline_1_6_15 = { basename = ''highline''; @@ -818,16 +818,16 @@ Also see http://rack.github.com/. requiredGems = [ g.rack_1_5_2 ]; sha256 = ''073ffpsqmy4nqxz178qisb3a4v3305c49ypj0jw6s9mkz02yvgq2''; }; - rack_protection_1_4_0 = { + rack_protection_1_5_0 = { basename = ''rack_protection''; meta = { description = ''You should use protection!''; homepage = ''http://github.com/rkh/rack-protection''; longDescription = ''You should use protection!''; }; - name = ''rack-protection-1.4.0''; + name = ''rack-protection-1.5.0''; requiredGems = [ g.rack_1_5_2 ]; - sha256 = ''0dfydg04fzj9rz34npy6cpp0827lij440s7fls0db41lz4vb94k0''; + sha256 = ''10wm67f2mp9pryg0s8qapbyxd2lcrpb8ywsbicg29cv2xprhbl4j''; }; rack_ssl_1_3_3 = { basename = ''rack_ssl''; @@ -863,7 +863,7 @@ request helpers feature.''; longDescription = ''Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.''; }; name = ''rails-3.2.12''; - requiredGems = [ g.activesupport_3_2_12 g.actionpack_3_2_12 g.activerecord_3_2_12 g.activeresource_3_2_12 g.actionmailer_3_2_12 g.railties_3_2_12 g.bundler_1_3_1 ]; + requiredGems = [ g.activesupport_3_2_12 g.actionpack_3_2_12 g.activerecord_3_2_12 g.activeresource_3_2_12 g.actionmailer_3_2_12 g.railties_3_2_12 g.bundler_1_3_4 ]; sha256 = ''1jjnm74nzl5v3461c0mrbpa471yd6s8hnkmnxb64c2rm95c61wxz''; }; railties_3_2_12 = { @@ -1042,7 +1042,7 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''1khf6d903agnwd8965f5f8b353rzmfvygxp53z1199rqzw8h46q2''; }; - sass_3_2_6 = { + sass_3_2_7 = { basename = ''sass''; meta = { description = ''A powerful but elegant CSS compiler that makes CSS fun again.''; @@ -1053,9 +1053,9 @@ See RDoc for a description of RDoc's markup and basic use.''; command line tool or a web-framework plugin. ''; }; - name = ''sass-3.2.6''; + name = ''sass-3.2.7''; requiredGems = [ ]; - sha256 = ''10xy6k663399r881cj30fapbdsrq8jwzvnp97y8n3mhxmrvzpq28''; + sha256 = ''0c494gh1i4llk4lbi35vidsgclf3cgxind1a7nm499ac9sdz084s''; }; selenium_webdriver_2_31_0 = { basename = ''selenium_webdriver''; @@ -1076,7 +1076,7 @@ See RDoc for a description of RDoc's markup and basic use.''; longDescription = ''Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.''; }; name = ''sinatra-1.3.2''; - requiredGems = [ g.rack_1_5_2 g.rack_protection_1_4_0 g.tilt_1_3_4 ]; + requiredGems = [ g.rack_1_5_2 g.rack_protection_1_5_0 g.tilt_1_3_5 ]; sha256 = ''05blf915zpiwyz7agcn9rwdmddwxz0z4l3gd4qlqmrgd2vkw4sxc''; }; sprockets_2_2_2 = { @@ -1087,7 +1087,7 @@ See RDoc for a description of RDoc's markup and basic use.''; longDescription = ''Sprockets is a Rack-based asset packaging system that concatenates and serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.''; }; name = ''sprockets-2.2.2''; - requiredGems = [ g.hike_1_2_1 g.multi_json_1_6_1 g.rack_1_5_2 g.tilt_1_3_4 ]; + requiredGems = [ g.hike_1_2_1 g.multi_json_1_6_1 g.rack_1_5_2 g.tilt_1_3_5 ]; sha256 = ''15ngw3bjbyr31ygzmmdxxa30ylah6pdn8akgdy9w30vfx2vr7s7s''; }; systemu_2_5_2 = { @@ -1120,7 +1120,7 @@ See RDoc for a description of RDoc's markup and basic use.''; longDescription = ''A thin and fast web server''; }; name = ''thin-1.5.0''; - requiredGems = [ g.rack_1_5_2 g.eventmachine_1_0_1 g.daemons_1_1_9 ]; + requiredGems = [ g.rack_1_5_2 g.eventmachine_1_0_3 g.daemons_1_1_9 ]; sha256 = ''14sd2qbbk6y108z6v723mh3f1mk8s4fwxmmn9f8dk4xkhk4rwvq1''; }; thor_0_17_0 = { @@ -1134,16 +1134,16 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''0gf46qafcfgmi20a2mnb3wkd9y6spgy2hq22h70377daj4zjxla2''; }; - tilt_1_3_4 = { + tilt_1_3_5 = { basename = ''tilt''; meta = { description = ''Generic interface to multiple Ruby template engines''; homepage = ''http://github.com/rtomayko/tilt/''; longDescription = ''Generic interface to multiple Ruby template engines''; }; - name = ''tilt-1.3.4''; + name = ''tilt-1.3.5''; requiredGems = [ ]; - sha256 = ''0hw59shnf3vgpx1jv24mj0d48m72h5cm1d4bianhhkjj82mc406a''; + sha256 = ''081saxdxnal4ky38a904jw3n2837m80g211w0zm5rx6m712mb6qd''; }; treetop_1_4_12 = { basename = ''treetop''; @@ -1155,16 +1155,16 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ g.polyglot_0_3_3 g.polyglot_0_3_3 ]; sha256 = ''1jlfjq67n933sm0px0s2j965v1kl1rj8fbx6xk8y4yppkv6ygxc8''; }; - tzinfo_0_3_36 = { + tzinfo_0_3_37 = { basename = ''tzinfo''; meta = { description = ''Daylight-savings aware timezone library''; homepage = ''http://tzinfo.rubyforge.org/''; longDescription = ''TZInfo is a Ruby library that uses the standard tz (Olson) database to provide daylight savings aware transformations between times in different time zones.''; }; - name = ''tzinfo-0.3.36''; + name = ''tzinfo-0.3.37''; requiredGems = [ ]; - sha256 = ''1dk7jnhrr5lbhckgq7bh6yxgy8j7vd13qb4kr4vlk76j5ngs2whv''; + sha256 = ''0pi2vabsg73h6z4wfwyd27k63issp2qp1nh0vd74rdk740gmb3kc''; }; uuid_2_3_7 = { basename = ''uuid''; From bbf57c5a25968683bfaa719541afc8ee259a7690 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 15 Mar 2013 09:23:53 -0400 Subject: [PATCH 395/407] Add remote_syslog rubygem Signed-off-by: Shea Levy --- .../interpreters/ruby/generated.nix | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index d41c6a28db7..5f6aa0d0ade 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -22,10 +22,13 @@ g: # Get dependencies from patched gems daemons = g.daemons_1_1_9; diff_lcs = g.diff_lcs_1_1_3; dimensions = g.dimensions_1_2_0; + em_resolv_replace = g.em_resolv_replace_1_1_3; erubis = g.erubis_2_7_0; eventmachine = g.eventmachine_1_0_3; + eventmachine_tail = g.eventmachine_tail_0_6_4; fakes3 = g.fakes3_0_1_5; ffi = g.ffi_1_4_0; + file_tail = g.file_tail_1_0_12; foreman = g.foreman_0_62_0; highline = g.highline_1_6_15; hike = g.hike_1_2_1; @@ -59,6 +62,7 @@ g: # Get dependencies from patched gems rb_fsevent = g.rb_fsevent_0_9_3; rdiscount = g.rdiscount_2_0_7_1; rdoc = g.rdoc_3_12_2; + remote_syslog = g.remote_syslog_1_6_13; rjb = g.rjb_1_4_6; rspec = g.rspec_2_11_0; rspec_core = g.rspec_core_2_11_1; @@ -68,13 +72,16 @@ g: # Get dependencies from patched gems rubyzip = g.rubyzip_0_9_9; sass = g.sass_3_2_7; selenium_webdriver = g.selenium_webdriver_2_31_0; + servolux = g.servolux_0_10_0; sinatra = g.sinatra_1_3_2; sprockets = g.sprockets_2_2_2; + syslog_protocol = g.syslog_protocol_0_9_2; systemu = g.systemu_2_5_2; therubyracer = g.therubyracer_0_10_2; thin = g.thin_1_5_0; thor = g.thor_0_17_0; tilt = g.tilt_1_3_5; + tins = g.tins_0_7_2; treetop = g.treetop_1_4_12; tzinfo = g.tzinfo_0_3_37; uuid = g.uuid_2_3_7; @@ -82,7 +89,7 @@ g: # Get dependencies from patched gems websocket = g.websocket_1_0_7; xml_simple = g.xml_simple_1_1_1; }; - gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''bitbucket-backup'' ''buildr'' ''fakes3'' ''foreman'' ''jsduck'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''thin'' ''uuid'' ]; + gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''bitbucket-backup'' ''buildr'' ''fakes3'' ''foreman'' ''jsduck'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''remote_syslog'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''thin'' ''uuid'' ]; gems = { ZenTest_4_9_0 = { basename = ''ZenTest''; @@ -388,6 +395,16 @@ is the MIT license.''; requiredGems = [ ]; sha256 = ''1pqb7yzjcpbgbyi196ifqbd1wy570cn12bkzcvpcha4xilhajja0''; }; + em_resolv_replace_1_1_3 = { + basename = ''em_resolv_replace''; + meta = { + description = ''EventMachine-aware DNS lookup for Ruby''; + homepage = ''http://github.com/mperham/em-resolv-replace''; + }; + name = ''em-resolv-replace-1.1.3''; + requiredGems = [ ]; + sha256 = ''1w5y4rzmp51ni56v05qwgay5wrs2i6i3q92pvlcrghmhxhgsbqg7''; + }; erubis_2_7_0 = { basename = ''erubis''; meta = { @@ -431,6 +448,17 @@ using TCP/IP, especially if custom protocols are required.''; requiredGems = [ ]; sha256 = ''09sqlsb6x9ddlgfw5gsw7z0yjg5m2qfjiqkz2fx70zsizj3lqhil''; }; + eventmachine_tail_0_6_4 = { + basename = ''eventmachine_tail''; + meta = { + description = ''eventmachine tail - a file tail implementation with glob support''; + homepage = ''http://code.google.com/p/semicomplete/wiki/EventMachineTail''; + longDescription = ''Add file 'tail' implemented with EventMachine. Also includes a 'glob watch' class for watching a directory pattern for new matches, like /var/log/*.log''; + }; + name = ''eventmachine-tail-0.6.4''; + requiredGems = [ g.eventmachine_1_0_3 ]; + sha256 = ''1pvlb34vdzd81kf9f3xyibb4f55xjqm7lqqy28dgyci5cyv50y61''; + }; fakes3_0_1_5 = { basename = ''fakes3''; meta = { @@ -452,6 +480,17 @@ using TCP/IP, especially if custom protocols are required.''; requiredGems = [ ]; sha256 = ''06a29qvg487yk9pyi7wzyj5700mf7s3mjdqc6dsrh0467mjj9768''; }; + file_tail_1_0_12 = { + basename = ''file_tail''; + meta = { + description = ''File::Tail for Ruby''; + homepage = ''http://github.com/flori/file-tail''; + longDescription = ''Library to tail files in Ruby''; + }; + name = ''file-tail-1.0.12''; + requiredGems = [ g.tins_0_7_2 ]; + sha256 = ''0mzxxnwj7k5pwxs0rdbmb3b41zgvzw7x40sf3qlkch4zdfx91i1j''; + }; foreman_0_62_0 = { basename = ''foreman''; meta = { @@ -946,6 +985,17 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ g.json_1_7_7 ]; sha256 = ''1v9k4sp5yzj2bshngckdvivj6bszciskk1nd2r3wri2ygs7vgqm8''; }; + remote_syslog_1_6_13 = { + basename = ''remote_syslog''; + meta = { + description = ''Monitor plain text log file(s) for new entries and send to remote syslog collector''; + homepage = ''http://github.com/papertrail/remote_syslog''; + longDescription = ''Lightweight daemon to tail one or more log files and transmit UDP syslog messages to a remote syslog host (centralized log aggregation). Generates UDP packets itself instead of depending on a system syslog daemon, so it doesn't affect system-wide logging configuration.''; + }; + name = ''remote_syslog-1.6.13''; + requiredGems = [ g.servolux_0_10_0 g.file_tail_1_0_12 g.eventmachine_1_0_3 g.eventmachine_tail_0_6_4 g.syslog_protocol_0_9_2 g.em_resolv_replace_1_1_3 ]; + sha256 = ''0q35j02k2l3fw3fdzq0i3rd6chsqr982gj13f3m3lsxm7kms03nw''; + }; rjb_1_4_2 = { basename = ''rjb''; meta = { @@ -1068,6 +1118,20 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ g.multi_json_1_6_1 g.rubyzip_0_9_9 g.childprocess_0_3_9 g.websocket_1_0_7 ]; sha256 = ''1nv3ff31g183kdb97jjz0y7ny3vdnccd09pgblpj87bzhrrdfv3r''; }; + servolux_0_10_0 = { + basename = ''servolux''; + meta = { + description = ''* {Homepage}[http://rubygems.''; + homepage = ''http://gemcutter.org/gems/servolux''; + longDescription = ''Serv-O-Lux is a collection of Ruby classes that are useful for daemon and +process management, and for writing your own Ruby services. The code is well +documented and tested. It works with Ruby and JRuby supporting both 1.8 and 1.9 +interpreters.''; + }; + name = ''servolux-0.10.0''; + requiredGems = [ ]; + sha256 = ''08jdrk35f61ab8b48ffm85p9lgfpbnzq3n4is00gqhpcrrq72dhs''; + }; sinatra_1_3_2 = { basename = ''sinatra''; meta = { @@ -1090,6 +1154,17 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ g.hike_1_2_1 g.multi_json_1_6_1 g.rack_1_5_2 g.tilt_1_3_5 ]; sha256 = ''15ngw3bjbyr31ygzmmdxxa30ylah6pdn8akgdy9w30vfx2vr7s7s''; }; + syslog_protocol_0_9_2 = { + basename = ''syslog_protocol''; + meta = { + description = ''Syslog protocol parser and generator''; + homepage = ''https://github.com/eric/syslog_protocol''; + longDescription = ''Syslog protocol parser and generator''; + }; + name = ''syslog_protocol-0.9.2''; + requiredGems = [ ]; + sha256 = ''1yb2cmbyj0zmb2yhkgnmghcngrkhcxs4g1svcmgfj90l2hs23nmc''; + }; systemu_2_5_2 = { basename = ''systemu''; meta = { @@ -1145,6 +1220,17 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''081saxdxnal4ky38a904jw3n2837m80g211w0zm5rx6m712mb6qd''; }; + tins_0_7_2 = { + basename = ''tins''; + meta = { + description = ''Useful stuff.''; + homepage = ''http://flori.github.com/tins''; + longDescription = ''All the stuff that isn't good/big enough for a real library.''; + }; + name = ''tins-0.7.2''; + requiredGems = [ ]; + sha256 = ''142mvgn8218wikwdvd5gq4g6k3p24f273wlqvczzfhz02livrz90''; + }; treetop_1_4_12 = { basename = ''treetop''; meta = { From 725e27fb582ac9c07c8f9a30b0c790ffa732c161 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 15 Mar 2013 09:25:06 -0400 Subject: [PATCH 396/407] Add papertrail-cli rubygem Signed-off-by: Shea Levy --- .../interpreters/ruby/generated.nix | 99 ++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index 5f6aa0d0ade..2f276fc163a 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -10,6 +10,7 @@ g: # Get dependencies from patched gems activerecord = g.activerecord_3_2_12; activeresource = g.activeresource_3_2_12; activesupport = g.activesupport_3_2_12; + addressable = g.addressable_2_3_3; arel = g.arel_3_0_2; atoulme_Antwrap = g.atoulme_Antwrap_0_7_4; autotest_rails = g.autotest_rails_4_1_2; @@ -19,6 +20,7 @@ g: # Get dependencies from patched gems buildr = g.buildr_1_4_10; bundler = g.bundler_1_3_4; childprocess = g.childprocess_0_3_9; + chronic = g.chronic_0_9_1; daemons = g.daemons_1_1_9; diff_lcs = g.diff_lcs_1_1_3; dimensions = g.dimensions_1_2_0; @@ -27,6 +29,8 @@ g: # Get dependencies from patched gems eventmachine = g.eventmachine_1_0_3; eventmachine_tail = g.eventmachine_tail_0_6_4; fakes3 = g.fakes3_0_1_5; + faraday = g.faraday_0_8_6; + faraday_middleware = g.faraday_middleware_0_8_8; ffi = g.ffi_1_4_0; file_tail = g.file_tail_1_0_12; foreman = g.foreman_0_62_0; @@ -45,10 +49,13 @@ g: # Get dependencies from patched gems mime_types = g.mime_types_1_21; minitar = g.minitar_0_5_3; multi_json = g.multi_json_1_6_1; + multipart_post = g.multipart_post_1_2_0; net_sftp = g.net_sftp_2_0_5; net_ssh = g.net_ssh_2_6_6; nix = g.nix_0_1_1; nokogiri = g.nokogiri_1_5_6; + papertrail = g.papertrail_0_9_7; + papertrail_cli = g.papertrail_cli_0_9_3; parallel = g.parallel_0_6_2; polyglot = g.polyglot_0_3_3; rack = g.rack_1_5_2; @@ -88,8 +95,9 @@ g: # Get dependencies from patched gems uuidtools = g.uuidtools_2_1_3; websocket = g.websocket_1_0_7; xml_simple = g.xml_simple_1_1_1; + yajl_ruby = g.yajl_ruby_1_1_0; }; - gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''bitbucket-backup'' ''buildr'' ''fakes3'' ''foreman'' ''jsduck'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''remote_syslog'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''thin'' ''uuid'' ]; + gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''bitbucket-backup'' ''buildr'' ''fakes3'' ''foreman'' ''jsduck'' ''nix'' ''papertrail-cli'' ''rails'' ''rake'' ''rb-fsevent'' ''remote_syslog'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''thin'' ''uuid'' ]; gems = { ZenTest_4_9_0 = { basename = ''ZenTest''; @@ -188,6 +196,20 @@ installed versions.''; requiredGems = [ g.i18n_0_6_4 g.multi_json_1_6_1 ]; sha256 = ''1giqkprxjf5gyfyhn5nz9q8a5gi3v8irxhkpqr00zc5fw1azllsg''; }; + addressable_2_3_3 = { + basename = ''addressable''; + meta = { + description = ''URI Implementation''; + homepage = ''http://addressable.rubyforge.org/''; + longDescription = ''Addressable is a replacement for the URI implementation that is part of +Ruby's standard library. It more closely conforms to the relevant RFCs and +adds support for IRIs and URI templates. +''; + }; + name = ''addressable-2.3.3''; + requiredGems = [ ]; + sha256 = ''0nn583ba8kq4hhpr4lr2zzpm4r0mga0zfalxxpa6a4v27q71v5hh''; + }; arel_3_0_2 = { basename = ''arel''; meta = { @@ -348,6 +370,17 @@ for those one-off tasks, with a language that's a joy to use. requiredGems = [ g.ffi_1_4_0 ]; sha256 = ''0jbz2ix7ff9ry8717lhcq9w8j8yd45akw48giwgdqccay5mlph7d''; }; + chronic_0_9_1 = { + basename = ''chronic''; + meta = { + description = ''Natural language date/time parsing.''; + homepage = ''http://github.com/mojombo/chronic''; + longDescription = ''Chronic is a natural language date/time parser written in pure Ruby.''; + }; + name = ''chronic-0.9.1''; + requiredGems = [ ]; + sha256 = ''0kspaxpfy7yvyk1lvpx31w852qfj8wb9z04mcj5bzi70ljb9awqk''; + }; daemons_1_1_9 = { basename = ''daemons''; meta = { @@ -469,6 +502,27 @@ using TCP/IP, especially if custom protocols are required.''; requiredGems = [ g.thor_0_17_0 g.builder_3_2_0 ]; sha256 = ''1na5wrbarla6s414svqmr5spbpv6vmcgpswal444x4clcpmadhib''; }; + faraday_0_8_6 = { + basename = ''faraday''; + meta = { + description = ''HTTP/REST API client library.''; + homepage = ''https://github.com/lostisland/faraday''; + }; + name = ''faraday-0.8.6''; + requiredGems = [ g.multipart_post_1_2_0 ]; + sha256 = ''16jd0gnqfrh5v4v88nlasyjjm8cmf2w2p6gphxq64mvdxlcdy5jy''; + }; + faraday_middleware_0_8_8 = { + basename = ''faraday_middleware''; + meta = { + description = ''Various middleware for Faraday''; + homepage = ''https://github.com/pengwynn/faraday_middleware''; + longDescription = ''Various middleware for Faraday''; + }; + name = ''faraday_middleware-0.8.8''; + requiredGems = [ g.faraday_0_8_6 ]; + sha256 = ''1n0g8pm7ynx6ffyqhscc1cqw97zhvd8isr31yfyj15335j1jsncz''; + }; ffi_1_4_0 = { basename = ''ffi''; meta = { @@ -727,6 +781,17 @@ added from the the {LTSW collection}[http://www.ltsw.se/knbase/internet/mime.htp requiredGems = [ ]; sha256 = ''0p33swcl9i97wvv0cq9jkdl8q7xbc3j07apy35vsgldnhw99krcg''; }; + multipart_post_1_2_0 = { + basename = ''multipart_post''; + meta = { + description = ''A multipart form post accessory for Net::HTTP.''; + homepage = ''https://github.com/nicksieger/multipart-post''; + longDescription = ''Use with Net::HTTP to do multipart form posts. IO values that have #content_type, #original_filename, and #local_path will be posted as a binary file.''; + }; + name = ''multipart-post-1.2.0''; + requiredGems = [ ]; + sha256 = ''12p7lnmc52di1r4h73h6xrpppplzyyhani9p7wm8l4kgf1hnmwnc''; + }; net_sftp_2_0_5 = { basename = ''net_sftp''; meta = { @@ -786,6 +851,28 @@ enough of it.''; requiredGems = [ ]; sha256 = ''1235h8k242f6yi5qgb8rfcx6gp7g99djwqgrz0vb6w12pbp9kar8''; }; + papertrail_0_9_7 = { + basename = ''papertrail''; + meta = { + description = ''Command-line client for Papertrail hosted log management service.''; + homepage = ''http://github.com/papertrail/papertrail-cli''; + longDescription = ''Command-line client for Papertrail hosted log management service. Tails and searches app server logs and system syslog. Supports Boolean search and works with grep and pipe output (Unix).''; + }; + name = ''papertrail-0.9.7''; + requiredGems = [ g.addressable_2_3_3 g.yajl_ruby_1_1_0 g.chronic_0_9_1 g.faraday_0_8_6 g.faraday_middleware_0_8_8 ]; + sha256 = ''0v0m1v0qabbr9pmyl77znz39qy1m7p0xwvf3lf9hyq6n524f2dwr''; + }; + papertrail_cli_0_9_3 = { + basename = ''papertrail_cli''; + meta = { + description = ''Placeholder gem to point to new papertrail gem''; + homepage = ''http://github.com/papertrail/papertrail-cli-gem''; + longDescription = ''Placeholder gem to point to new papertrail gem.''; + }; + name = ''papertrail-cli-0.9.3''; + requiredGems = [ g.papertrail_0_9_7 ]; + sha256 = ''1914dcfqsmw5rl4xd1zwjrfbgwglyncxm8km06bgxaqn4wnaq5iv''; + }; parallel_0_6_2 = { basename = ''parallel''; meta = { @@ -1298,5 +1385,15 @@ interpreters.''; requiredGems = [ ]; sha256 = ''0zlwz8kvpm45m227aazg369fapbqyhvd5v9aga8cvxyhqnq0b87i''; }; + yajl_ruby_1_1_0 = { + basename = ''yajl_ruby''; + meta = { + description = ''Ruby C bindings to the excellent Yajl JSON stream-based parser library.''; + homepage = ''http://github.com/brianmario/yajl-ruby''; + }; + name = ''yajl-ruby-1.1.0''; + requiredGems = [ ]; + sha256 = ''0sj46j47icb12hdhcfh76rnvddyiic5ifqzkh3kla1vcr505kf4m''; + }; }; } From 098190c9dde7061eb34676ccf4d648fc05efb484 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 15 Mar 2013 14:30:51 +0100 Subject: [PATCH 397/407] firefox: Update to 19.0.2 --- pkgs/applications/networking/browsers/firefox/19.0.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox/19.0.nix b/pkgs/applications/networking/browsers/firefox/19.0.nix index 1881c7d7af6..7a65635849e 100644 --- a/pkgs/applications/networking/browsers/firefox/19.0.nix +++ b/pkgs/applications/networking/browsers/firefox/19.0.nix @@ -15,9 +15,9 @@ assert stdenv.gcc ? libc && stdenv.gcc.libc != null; rec { - firefoxVersion = "19.0.1"; + firefoxVersion = "19.0.2"; - xulVersion = "19.0.1"; # this attribute is used by other packages + xulVersion = "19.0.2"; # this attribute is used by other packages src = fetchurl { @@ -27,7 +27,7 @@ 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 = "6a3a965c165ceda8c5ba038e9fe0136fbd1690ff"; + sha1 = "d108d356225379a86d69a4906c706289135f6342"; }; commonConfigureFlags = From 9db9af4fa613187c42f50b0f099d95f2c3f7aa09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 15 Mar 2013 14:34:07 +0100 Subject: [PATCH 398/407] opencascade: Adding ode version (Open Community version) --- .../development/libraries/opencascade/oce.nix | 26 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 pkgs/development/libraries/opencascade/oce.nix diff --git a/pkgs/development/libraries/opencascade/oce.nix b/pkgs/development/libraries/opencascade/oce.nix new file mode 100644 index 00000000000..500e6229050 --- /dev/null +++ b/pkgs/development/libraries/opencascade/oce.nix @@ -0,0 +1,26 @@ +{stdenv, fetchurl, mesa, tcl, tk, file, libXmu, cmake, libtool, qt4, +ftgl, freetype}: + +stdenv.mkDerivation rec { + name = "opencascade-oce-0.13-dev"; + src = fetchurl { + url = https://api.github.com/repos/tpaviot/oce/tarball/bd77743bfa0e765c3a57d116a62d75b50e1a455; + name = "${name}.tar.gz"; + sha256 = "1w7z326la9427yb23hbalsksk6w4ma5xil4jscnvi8mk6g48wyxv"; + }; + + buildInputs = [ mesa tcl tk file libXmu libtool qt4 ftgl freetype cmake ]; + + preConfigure = '' + cmakeFlags="$cmakeFlags -DOCE_INSTALL_PREFIX=$out" + ''; + + enableParallelBuilding = true; + + meta = { + description = "Open CASCADE Technology, libraries for 3D modeling and numerical simulation"; + homepage = http://www.opencascade.org/; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 941ba2a2bad..3b7623a97e9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4660,6 +4660,8 @@ let ftgl = ftgl212; }; + opencascade_oce = callPackage ../development/libraries/opencascade/oce.nix { }; + opencsg = callPackage ../development/libraries/opencsg { }; openct = callPackage ../development/libraries/openct { }; From eacb6c15065dfe5b5f41c14369ea02df03fcaaa9 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Fri, 15 Mar 2013 16:18:45 +0100 Subject: [PATCH 399/407] xcodeenv: Add IPA file to Hydra build products --- pkgs/development/mobile/xcodeenv/build-app.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/mobile/xcodeenv/build-app.nix b/pkgs/development/mobile/xcodeenv/build-app.nix index 8f2594e8433..535ec0992c1 100644 --- a/pkgs/development/mobile/xcodeenv/build-app.nix +++ b/pkgs/development/mobile/xcodeenv/build-app.nix @@ -80,6 +80,10 @@ stdenv.mkDerivation { ${stdenv.lib.optionalString generateIPA '' # Produce an IPA file xcrun -sdk iphoneos PackageApplication -v $out/*.app -o $out/${name}.ipa + + # Add IPA to Hydra build products + mkdir -p $out/nix-support + echo "file binary-dist $(echo $out/*.ipa)" > $out/nix-support/hydra-build-products ''} # Delete our temp keychain From 893c684e994eb6d6723e675d35a6256397b0783f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 15 Mar 2013 19:58:08 +0100 Subject: [PATCH 400/407] pkgs/development/compilers/ghc/with-packages.nix: include share/emacs/site-lisp in the generated environment This change allows 'ghc-mod' to be included in such a GHC environment, which is important because the tool is GHC version-specific. --- .../development/compilers/ghc/with-packages.nix | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pkgs/development/compilers/ghc/with-packages.nix b/pkgs/development/compilers/ghc/with-packages.nix index 3494f63c11c..99e91901d00 100644 --- a/pkgs/development/compilers/ghc/with-packages.nix +++ b/pkgs/development/compilers/ghc/with-packages.nix @@ -60,17 +60,22 @@ stdenv.mkDerivation rec { echo -n . done for f in "$currentPath/etc/bash_completion.d/"*; do - mkdir -p $out/etc/bash_completion.d + mkdir -p $out/etc/bash_completion.d ln -s $f $out/etc/bash_completion.d/ echo -n . done - for s in 1 2 3 4 5 6 7 8 9; do - for f in "$currentPath/share/man/man$s/"*; do - mkdir -p $out/share/man/man$s + for s in 1 2 3 4 5 6 7 8 9; do + for f in "$currentPath/share/man/man$s/"*; do + mkdir -p $out/share/man/man$s ln -sv $f $out/share/man/man$s/ echo -n . - done - done + done + done + for f in "$currentPath/share/emacs/site-lisp/"*; do + mkdir -p $out/share/emacs/site-lisp + ln -s $f $out/share/emacs/site-lisp/ + echo -n . + done for f in "$currentPkgDir/"*.conf; do ln -s $f $linkedPkgDir echo -n . From d09269a22eed2e844b046c31899887aa6c1fb42d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 15 Mar 2013 20:38:15 +0100 Subject: [PATCH 401/407] Use the same directory layout for user-installed Haskell libraries that GHC uses for its core libraries, so that these files integrate seamlessly into one profile, living right next to each other. This change is eventually going to simply our with-packages wrapper quite a bit. --- pkgs/build-support/cabal/default.nix | 4 ++-- pkgs/development/compilers/ghc/ghc-get-packages.sh | 2 +- pkgs/development/compilers/ghc/with-packages.nix | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index c1b8d6d5fea..2eedd315830 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -121,7 +121,7 @@ done echo "configure flags: $extraConfigureFlags $configureFlags" - ./Setup configure --verbose --prefix="$out" $extraConfigureFlags $configureFlags + ./Setup configure --verbose --prefix="$out" --libdir='$prefix/lib/$compiler' --libsubdir='$pkgid' $extraConfigureFlags $configureFlags eval "$postConfigure" ''; @@ -156,7 +156,7 @@ ensureDir $out/bin # necessary to get it added to PATH - local confDir=$out/lib/ghc-pkgs/ghc-${ghc.ghc.version} + local confDir=$out/lib/ghc-${ghc.ghc.version}/package.conf.d local installedPkgConf=$confDir/${self.fname}.installedconf local pkgConf=$confDir/${self.fname}.conf ensureDir $confDir diff --git a/pkgs/development/compilers/ghc/ghc-get-packages.sh b/pkgs/development/compilers/ghc/ghc-get-packages.sh index 9ed1455d232..71e58e66a5e 100755 --- a/pkgs/development/compilers/ghc/ghc-get-packages.sh +++ b/pkgs/development/compilers/ghc/ghc-get-packages.sh @@ -12,7 +12,7 @@ fi PATH="$2:$PATH" IFS=":" for p in $PATH; do - PkgDir="$p/../lib/ghc-pkgs/ghc-$version" + PkgDir="$p/../lib/ghc-$version/package.conf.d" for i in $PkgDir/*.installedconf; do # output takes place here test -f $i && echo -n " $prefix$i" diff --git a/pkgs/development/compilers/ghc/with-packages.nix b/pkgs/development/compilers/ghc/with-packages.nix index 99e91901d00..28a639246ce 100644 --- a/pkgs/development/compilers/ghc/with-packages.nix +++ b/pkgs/development/compilers/ghc/with-packages.nix @@ -51,7 +51,7 @@ stdenv.mkDerivation rec { echo "Linking selected packages and dependencies:" for currentPath in ${stdenv.lib.concatStringsSep " " allPackages}; do - currentPkgDir="$currentPath/lib/ghc-pkgs/ghc-${ghc.version}" + currentPkgDir="$currentPath/lib/ghc-${ghc.version}/package.conf.d/" # Check if current path is a Cabal package for the current GHC if test -d $currentPkgDir; then echo -n "Linking $currentPath " From 90fc42c2f2bef844f5689b5939bcf760a23e4a63 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 15 Mar 2013 21:11:31 +0100 Subject: [PATCH 402/407] pkgs/development/compilers/ghc/with-packages.nix: simply this wrapper on top of buildenv --- .../compilers/ghc/with-packages.nix | 130 ++++-------------- 1 file changed, 23 insertions(+), 107 deletions(-) diff --git a/pkgs/development/compilers/ghc/with-packages.nix b/pkgs/development/compilers/ghc/with-packages.nix index 28a639246ce..74a8253b838 100644 --- a/pkgs/development/compilers/ghc/with-packages.nix +++ b/pkgs/development/compilers/ghc/with-packages.nix @@ -1,122 +1,38 @@ -{stdenv, ghc, packages ? [], makeWrapper}: +{ stdenv, ghc, packages, buildEnv, makeWrapper }: -stdenv.mkDerivation rec { +assert packages != []; + +let + ghc761OrLater = stdenv.lib.versionOlder "7.6.1" ghc.version; + packageDBFlag = if ghc761OrLater then "--package-db" else "--package-conf"; + libDir = "$out/lib/ghc-${ghc.version}"; + packageCfgDir = "${libDir}/package.conf.d"; +in +buildEnv { name = "haskell-env-${ghc.name}"; - - allPackages = stdenv.lib.closePropagation packages; - buildInputs = allPackages ++ [makeWrapper]; - propagatedBuildInputs = packages; - - unpackPhase = "true"; - - installPhase = '' - numversion=$(${ghc}/bin/ghc --numeric-version) - majorversion=''${numversion%%.*} - minorversion=''${numversion#*.} - minorversion=''${minorversion%%.*} - - if [[ $majorversion -gt 6 ]] && [[ $minorversion -gt 4 ]]; then - globalConf="--global-package-db" - else - globalConf="--global-conf" - fi - - originalTopDir="${ghc}/lib/ghc-${ghc.version}" - originalPkgDir="$originalTopDir/package.conf.d" - linkedTopDir="$out/lib" - linkedPkgDir="$linkedTopDir/package.conf.d" - - mkdir -p $out/bin - mkdir -p $linkedTopDir - mkdir -p $linkedPkgDir - - echo "Linking GHC core libraries:" - - echo -n "Linking $originalTopDir " - for f in "$originalTopDir/"*; do - if test -f $f; then - ln -s $f $linkedTopDir - echo -n . - fi - done - echo - - echo -n "Linking $originalPkgDir " - for f in "$originalPkgDir/"*.conf; do - ln -s $f $linkedPkgDir - echo -n . - done - echo - - echo "Linking selected packages and dependencies:" - - for currentPath in ${stdenv.lib.concatStringsSep " " allPackages}; do - currentPkgDir="$currentPath/lib/ghc-${ghc.version}/package.conf.d/" - # Check if current path is a Cabal package for the current GHC - if test -d $currentPkgDir; then - echo -n "Linking $currentPath " - for f in "$currentPath/bin/"*; do - ln -s $f $out/bin - echo -n . - done - for f in "$currentPath/etc/bash_completion.d/"*; do - mkdir -p $out/etc/bash_completion.d - ln -s $f $out/etc/bash_completion.d/ - echo -n . - done - for s in 1 2 3 4 5 6 7 8 9; do - for f in "$currentPath/share/man/man$s/"*; do - mkdir -p $out/share/man/man$s - ln -sv $f $out/share/man/man$s/ - echo -n . - done - done - for f in "$currentPath/share/emacs/site-lisp/"*; do - mkdir -p $out/share/emacs/site-lisp - ln -s $f $out/share/emacs/site-lisp/ - echo -n . - done - for f in "$currentPkgDir/"*.conf; do - ln -s $f $linkedPkgDir - echo -n . - done - echo - fi - done - - echo -n "Generating package cache " - ${ghc}/bin/ghc-pkg $globalConf $linkedPkgDir recache - echo . - - echo -n "Generating wrappers " + paths = stdenv.lib.closePropagation (packages ++ [ghc]); + postBuild = '' + . ${makeWrapper}/nix-support/setup-hook for prg in ghc ghci ghc-${ghc.version} ghci-${ghc.version}; do - # The NIX env-vars are picked up by our patched version of ghc-paths. - makeWrapper ${ghc}/bin/$prg $out/bin/$prg \ - --add-flags "-B$linkedTopDir" \ - --set "NIX_GHC" "$out/bin/ghc" \ - --set "NIX_GHCPKG" "$out/bin/ghc-pkg" \ - --set "NIX_GHC_LIBDIR" "$linkedTopDir" - echo -n . + rm -f $out/bin/$prg + makeWrapper ${ghc}/bin/$prg $out/bin/$prg \ + --add-flags '"-B$NIX_GHC_LIBDIR"' \ + --set "NIX_GHC" "$out/bin/ghc" \ + --set "NIX_GHCPKG" "$out/bin/ghc-pkg" \ + --set "NIX_GHC_LIBDIR" "${libDir}" done for prg in runghc runhaskell; do + rm -f $out/bin/$prg makeWrapper ${ghc}/bin/$prg $out/bin/$prg --add-flags "-f $out/bin/ghc" - echo -n . done for prg in ghc-pkg ghc-pkg-${ghc.version}; do - makeWrapper ${ghc}/bin/$prg $out/bin/$prg --add-flags "$globalConf $linkedPkgDir" - echo -n . + rm -f $out/bin/$prg + makeWrapper ${ghc}/bin/$prg $out/bin/$prg --add-flags "${packageDBFlag} ${packageCfgDir}" done - for prg in hp2ps hpc hasktags hsc2hs haddock haddock-${ghc.version}; do - if test -x ${ghc}/bin/$prg -a ! -x $out/bin/$prg; then - ln -s ${ghc}/bin/$prg $out/bin/$prg && echo -n . - fi - done - echo + $out/bin/ghc-pkg recache ''; - - meta = ghc.meta; } From 7cb4d92bec10e893574507d0b6afcd367ac74c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 17 Mar 2013 10:15:03 +0100 Subject: [PATCH 403/407] amule: update and fix build on gcc47 --- pkgs/tools/networking/p2p/amule/default.nix | 8 +++++--- pkgs/tools/networking/p2p/amule/gcc47.patch | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 pkgs/tools/networking/p2p/amule/gcc47.patch diff --git a/pkgs/tools/networking/p2p/amule/default.nix b/pkgs/tools/networking/p2p/amule/default.nix index eafa51fb4f2..3347ad010c7 100644 --- a/pkgs/tools/networking/p2p/amule/default.nix +++ b/pkgs/tools/networking/p2p/amule/default.nix @@ -12,17 +12,19 @@ let edf = enabled: flag: if enabled then "--enable-" + flag else "--disable-" + flag; in mkDerivation rec { - name = "aMule-2.2.6"; + name = "aMule-2.3.1"; src = fetchurl { - url = "mirror://sourceforge/amule/${name}.tar.bz2"; - sha256 = "08l1931hcg1ia8yvhgx70hx64mknjnfn6l78m0ja44w13mgjpqvc"; + url = "mirror://sourceforge/amule/${name}.tar.xz"; + sha256 = "0hvpx3c005nvxsfand5bwfxxiq3mv0mpykajfm2lkygjh1rw2383"; }; buildInputs = [ zlib wxGTK perl cryptopp libupnp gettext pkgconfig makeWrapper ] ++ lib.optional httpServer libpng; + patches = [ ./gcc47.patch ]; # from Gentoo + configureFlags = '' --with-crypto-prefix=${cryptopp} --disable-debug diff --git a/pkgs/tools/networking/p2p/amule/gcc47.patch b/pkgs/tools/networking/p2p/amule/gcc47.patch new file mode 100644 index 00000000000..e776dda3240 --- /dev/null +++ b/pkgs/tools/networking/p2p/amule/gcc47.patch @@ -0,0 +1,21 @@ +# http://code.google.com/p/amule/source/detail?r=10772 +diff -ur aMule-2.3.1.orig//src/ObservableQueue.h aMule-2.3.1/src/ObservableQueue.h +--- aMule-2.3.1.orig//src/ObservableQueue.h 2012-04-22 19:40:05.560084120 +0200 ++++ aMule-2.3.1/src/ObservableQueue.h 2012-04-22 19:40:32.479085322 +0200 +@@ -331,14 +331,14 @@ + template + void CObservableQueue::ObserverAdded( ObserverType* o ) + { +- NotifyObservers( EventType( EventType::STARTING ), o ); ++ this->NotifyObservers( EventType( EventType::STARTING ), o ); + } + + + template + void CObservableQueue::ObserverRemoved( ObserverType* o ) + { +- NotifyObservers( EventType( EventType::STOPPING ), o ); ++ this->NotifyObservers( EventType( EventType::STOPPING ), o ); + } + + \ No newline at end of file From 99da34c204eba62a66e111e4b92b38053cd49162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 17 Mar 2013 10:26:44 +0100 Subject: [PATCH 404/407] elfutils: fix build via update --- pkgs/development/tools/misc/elfutils/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/tools/misc/elfutils/default.nix b/pkgs/development/tools/misc/elfutils/default.nix index 5a1a19068a7..ef1e7e781fa 100644 --- a/pkgs/development/tools/misc/elfutils/default.nix +++ b/pkgs/development/tools/misc/elfutils/default.nix @@ -3,20 +3,20 @@ # TODO: Look at the hardcoded paths to kernel, modules etc. stdenv.mkDerivation rec { name = "elfutils-${version}"; - version = "0.152"; - + version = "0.155"; + src = fetchurl { urls = [ - "https://fedorahosted.org/releases/e/l/elfutils/${version}/${name}.tar.bz2" + "http://fedorahosted.org/releases/e/l/elfutils/${version}/${name}.tar.bz2" "mirror://gentoo/distfiles/${name}.tar.bz2" ]; - sha256 = "19mlgxyzcwiv64ynj2cibgkiw4qkm3n37kizvy6555dsmlaqfybq"; + sha256 = "1n0fsg2q961i0lj355w2ad3cmp7d1jjcdhrfhmlgsvs14r2lli38"; }; patches = [ (fetchurl { - url = https://fedorahosted.org/releases/e/l/elfutils/0.152/elfutils-portability.patch; - sha256 = "0q318w4cvvqv9ps4xcwphapj1gl31isgjyya4y9sm72qj68n61p0"; + url = "http://fedorahosted.org/releases/e/l/elfutils/${version}/elfutils-portability.patch"; + sha256 = "0w8i94x9hqirgs2lwcd1g36s77r5svh4j1fgcrd6lx5w18vch0di"; }) ]; # We need bzip2 in NativeInputs because otherwise we can't unpack the src, From c78bad69e1349713adec91ac07fd842ee0ff5925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 17 Mar 2013 11:01:49 +0100 Subject: [PATCH 405/407] gsl: attempt to fix ToDo: there may be more impurities than this processor-feature test. --- pkgs/development/libraries/gsl/default.nix | 4 +++ .../libraries/gsl/disable-fma.patch | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 pkgs/development/libraries/gsl/disable-fma.patch diff --git a/pkgs/development/libraries/gsl/default.nix b/pkgs/development/libraries/gsl/default.nix index 474d2f97dd0..0eefda50c20 100644 --- a/pkgs/development/libraries/gsl/default.nix +++ b/pkgs/development/libraries/gsl/default.nix @@ -8,6 +8,10 @@ stdenv.mkDerivation rec { sha256 = "18qf6jzz1r3mzb5qynywv4xx3z9g61hgkbpkdrhbgqh2g7jhgfc5"; }; + # ToDo: there might be more impurities than FMA support check + patches = [ ./disable-fma.patch ]; # http://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html + patchFlags = "-p0"; + doCheck = true; meta = { diff --git a/pkgs/development/libraries/gsl/disable-fma.patch b/pkgs/development/libraries/gsl/disable-fma.patch new file mode 100644 index 00000000000..d5c0d620863 --- /dev/null +++ b/pkgs/development/libraries/gsl/disable-fma.patch @@ -0,0 +1,32 @@ +--- configure.ac 2011-09-22 16:13:22 +0000 ++++ configure.ac 2011-11-26 23:55:24 +0000 +@@ -381,6 +381,28 @@ + AC_SUBST(HAVE_DARWIN_IEEE_INTERFACE) + AC_SUBST(HAVE_DARWIN86_IEEE_INTERFACE) + ++dnl check for compiler flags to disable use of FMA ++save_cflags="$CFLAGS" ++AC_CACHE_CHECK([for compiler flags to disable use of FMA], ac_cv_c_fma_flags, ++[ ++if test X"$GCC" = Xyes; then ++ fma_flags='-ffp-contract=off' ++else ++ fma_flags= ++fi ++if test X"$fma_flags" != X; then ++ CFLAGS="$fma_flags $CFLAGS" ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int foo;]])],[ac_cv_c_fma_flags="$fma_flags"],[ac_cv_c_fma_flags="none"]) ++else ++ ac_cv_c_fma_flags="none" ++fi]) ++ ++if test "$ac_cv_c_fma_flags" != "none" ; then ++ CFLAGS="$ac_cv_c_fma_flags $save_cflags" ++else ++ CFLAGS="$save_cflags" ++fi ++ + dnl Check for IEEE control flags + + save_cflags="$CFLAGS" + From c3cefc669cd11fd5942661e142aeb20c155cc130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 17 Mar 2013 12:02:55 +0100 Subject: [PATCH 406/407] asc: fix build for gcc47 --- pkgs/games/asc/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/games/asc/default.nix b/pkgs/games/asc/default.nix index 86cf929aede..bf2fb1e89c2 100644 --- a/pkgs/games/asc/default.nix +++ b/pkgs/games/asc/default.nix @@ -10,6 +10,10 @@ stdenv.mkDerivation rec { sha256 = "1r011l4gsliky6szjvda8xzyhkkc50ahrr7p14911v5ydar0w3hh"; }; + configureFlags = [ "--disable-paragui" "--disable-paraguitest" ]; + + NIX_CFLAGS_COMPILE = "-fpermissive"; # I'm too lazy to catch all gcc47-related problems + buildInputs = [ SDL SDL_image SDL_mixer SDL_sound libsigcxx physfs boost expat freetype libjpeg wxGTK lua perl pkgconfig zlib zip bzip2 libpng From 3c472d53aaa1bc11e3f927364cd0cdde0df0f50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 17 Mar 2013 12:37:39 +0100 Subject: [PATCH 407/407] sword: fix build with gcc47 via a patch from Gentoo --- pkgs/development/libraries/sword/default.nix | 2 +- pkgs/development/libraries/sword/gcc47.patch | 35 ++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/sword/gcc47.patch diff --git a/pkgs/development/libraries/sword/default.nix b/pkgs/development/libraries/sword/default.nix index 3486981463f..f62bc2eb11d 100644 --- a/pkgs/development/libraries/sword/default.nix +++ b/pkgs/development/libraries/sword/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig icu cluceneCore curl ]; # because curl/types.h disappeared since at least curl 7.21.7 - patches = [ ./dont_include_curl_types_h.patch ]; + patches = [ ./dont_include_curl_types_h.patch ./gcc47.patch ]; prePatch = '' patchShebangs .; diff --git a/pkgs/development/libraries/sword/gcc47.patch b/pkgs/development/libraries/sword/gcc47.patch new file mode 100644 index 00000000000..7b55de75b64 --- /dev/null +++ b/pkgs/development/libraries/sword/gcc47.patch @@ -0,0 +1,35 @@ +https://bugs.gentoo.org/419505 + + +--- a/include/multimapwdef.h ++++ b/include/multimapwdef.h +@@ -12,21 +12,21 @@ class multimapwithdefault : public std::multimap { + public: + typedef std::pair value_type; + T& getWithDefault(const Key& k, const T& defaultValue) { +- if (find(k) == this->end()) { +- insert(value_type(k, defaultValue)); ++ if (this->find(k) == this->end()) { ++ this->insert(value_type(k, defaultValue)); + } +- return (*(find(k))).second; ++ return (*(this->find(k))).second; + } + + T& operator[](const Key& k) { +- if (find(k) == this->end()) { +- insert(value_type(k, T())); ++ if (this->find(k) == this->end()) { ++ this->insert(value_type(k, T())); + } +- return (*(find(k))).second; ++ return (*(this->find(k))).second; + } + bool has(const Key& k, const T &val) const { +- typename std::multimap::const_iterator start = lower_bound(k); +- typename std::multimap::const_iterator end = upper_bound(k); ++ typename std::multimap::const_iterator start = this->lower_bound(k); ++ typename std::multimap::const_iterator end = this->upper_bound(k); + for (; start!=end; start++) { + if (start->second == val) + return true;

;v)TC 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