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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

yw{8To~5D7Gf(=L;l1v=Ka1-m z3$o8u6s)aSuzBCwslTHYJ=dkVUVn9TXO|Cu*~;&H-``(5dp|cU*I+VR72okQHxq6t z$7dxSV&)h6v*n}Ap+nD7mvg5a4~l&b5?ETXp=&5oTOcC++e=$k_oo6c*mYH1rHt4h~gt6cfgH%qTzm+g%=@3->pl$K9q z)P9_{;K#p8*^_z41G(-0tlobn*Dp2Y*ZOIP-@TI+_&WFIPA;jv?=_j8J6v4z{^OS4 zL8WhgT;BiMdqw8lkeGXoF=yV*c2`TYSQ&l#@~_rklfK#oul!tGd4lg zNlg8I_2ug?H>KnB9&P@baq_T@d~#XEuRRv?&IfXn9& zfPjG8^R6tG`B`3ie&@lBDi6{W=J*un^S+v5yy)|>8pm7Qo$FP1eSdO&Z?|rMsuS-CP_ewejGT?4z}_OWwq#ocH?t`f#1^jGOIg zbzJ^sbKMtxyPtC8WPi%l$7h%7-<&r)d+k0;jT5X)ENsrEk~1co?Aqw>rezS^9OV=*8dHLYf)8kLRq`%sD zXJOf_^>WwOI{%NE`faVB(aWup+peFP+q5Nkh5fBwndNhp`7)oWXP)l3@ndzeblui; z^+&t@rllXTm4CELi+jzccj2EdS81%Q{O)W0Zdqfxo6EDMF&9JUN*Uyil?)Z(i z)w}!lvoj`YeSNfD)~fJqipp`@=!{*l|9GS|%V#KFni;=q&zGCYWhqHtA7%OW?$~he z^|Gz%izb%sQ**r@b~bO*-#4EZ++XHdk^MmP`TjGN^QYR}QeCoO(^0>>7T+x{y|~WD z`u@$nRVx(VmOXiN=jP@)H-GG&@-Dy7+`Pd5lf`?ri=~`l+%MH0*z!Cwi<-;!e2(XG zJs*{gdc|i~Gk>{rQt$1}cA1HJ9lpBUN{_FdUOc=Cf<`<~Q*;)E?1!;+B zgvd{sAT(>ytcd2*vF*XC-rtYB%v=3zZ*+2UfueHFSJRCF>Q4jKZi(J|`Sz*2%Sos9 zeyx5{=)z$HrMYCr{UQ(EAZNkQBl(I>!r`dHbhl^226;EDS%K zx!sraWXfbEH@QukGN#X#?D0xF`shIV;YDSk^VV}o8EikY{2wP{tH{2Zt23rTDJvZ)7MkM1rpC1D>C+?2mhJJo9yTNC=C++mcf)iNRNnVQ zN8Vn3C2Q5)m1R$!uFnw~9ID|>Lh->*FRuxWX?kJ_5W+YMV)cc`w2 zo4MhkaopM!tiKH1V|{;RFEIb|V$rM2l9PXoPj0^S_uZ0hZ$q!HukJKk9i61M$J_aE z8~5d)n;J)1U6jTyeTx=*4~W1 z?b}?v>DjY#^(XHFx9o4$|6Y)CQvLL@n%#Bp?O)Z;H}=0$aDC#`4U6s_ttvTrp|sj} zy`~StVyj5z<^9)R{}i)&BW+b7+2^%9vAmu0<1Mek>s)_V?yV7-fBxmuy_K`YC#_Cc z!C+8Qvg`WYr|Oe$HotD<%m21%(pK-}lYMJn=WW_+R$#wm1w(=PU6-~$A1t!WJVNWL zeOdQKepmS(b>j84dtvU?lKVur`*;4hWu2_D`G0!jG^v(bRy|v`-0$iA>EEVKDYVuZC;|nf73sl^={qr-_BpZK6H#`ypgwCd`t4{ z*EY30m)Y){{CL0Ux1pHS+YW&RXQqf)WU;l}Qd;HZ*59ZiJF7Bp%^9Ka+8>Yq`dsOL z?|UF={tEvJ&#vwlOKop|va4Q~wV~)DKa;UR>aJ(GcGuOnTyLuhejog{Bxkqu-u=RC zZzGgvwVbc%@F*3NRMR?fd*_bdw@YqsHl8_m>5Qe#o8Ovl(T&)=W>bo;+`%hhf-?2WB`TT!SL=aX|IlI2#w zjoJQsZTI))m`(oj@0P&cuX~Pc|NFdfNA#&vugks{--uoN6-g2pFZF2yCAkWvq}H9K_Z8Q-1qwh zN=>`=$l9|^DZLcDdhMN~SMAr$^IJ7H5jjOiyneBAZDxN@Jfq`zI+qfg%3PRfNT z7hE)7m2MQ*?lU{fQnq_eZBy`c!^m0wS>c~{{I&gZKlFe8yB%#G0w<;V$_cvpdHh?} z{wwGI;*8=aH$-PfM`vg#7yX*N-F`!1O5BWv;j1Jj9Ci3@@+r+G#iDIFC$E3rUa7}= zeWENk*4_I*+kKw-mp}97Z~CUiT6Lm#i`3aipC&H465{aj-~rooL$(jU{;Y^^cN5DN zefDKr5U=~EdEfplbmt*bDsFp5A#;Go9+s>N-~qG zk8+jxw_5CcN$=(yw9W~@%H5VmL{=49D#R-cZv3I*}tz3I{!`kh^yx$vImR(mA zXj}2%>+Lh#JdZzCulTWl6<^?wp7_`I53pbPYq0-wEL*WR_bnH0&9(Quz8jjr`ai|>X23p|eShRH%nQ1jUo^kStmn*my}I__Ki=1^`@8&6 zl2CQ}(XG)gwGkVe>o@-UR;a6E{fE0LUEsj=bhj^ut2`<@JOln|`3U^pe!^M!-f3OC zvLxp+#g&c>_a=89+PElYj!dv?j#hTN#Li0B)V=F-&t9;Y^|Ry*DOdlxvrc*@*U`}}^|k@a^E&3U+g_Wkld*OomF($3(qoFHVP zWLU0sx4it>*Qrx)?vj1Ka?&BwU>8G$09_HyUn}EZMX8$gXy?nOSe{9{xN-JvmD|#< zti83@&0&r@r*@OKfj@b%sydHOCP$E}#o>k}Z49++&8rh{y#M{)G4tc@_5M{kW$OeV z&hc%(Ii-;2@)FVC|0nLu_;0m$(sPTK`FCx@i>#(^%I>Ls{=RD8Ccogl$M}p={uunR z`o7k1`l}N5*9le&mOFCnT#~=;>xS8Ko2?v#-zhA1jOXU^nPTzDo=wHz-tOzKy?$=$ zE~##xG*R2DeUJA!^E$5oI!fDe>1j*B8fo1RhDKvpn6*b<^V+)52wSG70S4KOS7-%#dNBu|)Z8Tp*vy3(n}sq+QeU zKOLW3_x8J;zuU{Z3*%CsXXkE`c9u@^c8@>z{8DF+{>Ic(!e?6&rVBq))0Mlnlhrro zM8fSFW!0|y6U%F3J8cvnDT`=||2V_qIjKwJz;DjS=U-LM;q9%+|2k=VZ;IlJ*GsnU zdi(#_L2oJciewJOWsc1E^$gbfWL5iyh{<2_^e=dz|3`8Whaj8h_un5jvGv5g%w4pp z=6ChYApe{HQkf6VK7XiI^T{X16P6$I=Z6(IR_!Lv%+}CYQ1^B6p_=N&>c34E%?g_uwncpV zOHK0}k-u+0{<38}m+C6ARxka9%&q8jjq;PcogH=2oWYWjks9;0KC3P4(fuX-wR(Q; z<^Sw|=5#4*i0pj0A)$8Dg8FZosRHdme-(Bn)V%GVAh%DoZPkpg6BF!LZH;xRyW8^Y zeq%$3`X2Qw|C;8j&Pn;O_rv-2Wvre%^}m}PDZCc5{=*xqlG~~Y9F4D*vJ|*Pr>tsL zu-&MkprrWr{>4hZ(+B!<=0=}+{psJ~#wYgMy-)AhUCW-hO) zusO3LKgY#HI7>>V?2~SSkI%=VynSg&i*s}e_GGZ~+}y~<=E-X&t+sH*DwY3RKhL!- z^6*sZRb<+{?9MNpyUSVkNXNdezGGQ>!gt1p2@l@yc=y!waQ~&fFAq)M67qU+Q{+wy zE2GKWH_yH*xL{xZZ#(a+u4TG&uWeB?+4A-BX-$nQOXN+vYEQ?kz8YaR>C%FgUqeIc zwX#e@#b+OW5pv(G_R7ph!rH6SOM6f3wO;a8I@LR->{@vH{)=m7zS#eTU-ju*p*@0@ z!o8x;ex7IGSjAV$t$|Pr6stT=l`>aG`Rs|1JyW+_=cUIxJ)Bhw`sHzOy7- zwI0`VvA5<$zI*kwYn^>@;KE}kPqw|d@h>lU-9O(#{tJaxo|mGx>3(`=H1X5=TeY5( zSNf{Fj6K^J;_SYar&ezH+S&i_=B;30?pOL-JkL1o{q@#nzMFeXBh3ws%<|Uj z{?gCW()rGJJZ75Nk(^EYdMY`*&KAsVH}O~Fo%!kfv}!AjWy?1{SUF$y!>(7eUSv*Z zoqfYlOh%->|N6=GMZTw39o)NVjg^JXGqz*qw%Px3x4ymUI_+?n(Xq$7+|n#F9u@8| zeSKq-^rY-b_q4y}f7D4$Pv`r)@Z+7!+f_F`mF~~melnl8WWT|KUdc9JtL*6xi{9M6 z;`j4wGT-TqKhjpUh59|e{yca4gL~UeEngj(d~>aF=KLb5@a1w9yLe2*#loc8Ev*y;NdKfD(d`XQT|vb2W# zZMWX%htmFbr?xg!t5rA6G$}tQn>bfrP-{c-%G)-bckHi!zx~%Yy!o5OuHSr1rYv3kYLwQrnm8D z60I{8H}Gp5HvE&jV57&vFZSQ#*W68Ss=kr@`pe!5uC zt;z@YqqpYXZ2LRQbp7>&-%20X>{xvFs&?M=k}4ge(>0xwulzW%ls_t*yCiC#9{=I1 zZt2H zo0HnFE|>MTJZ5|5%In_cdnF(Cu{T>BIOF%oS+C2$F6#C9O?xG}WovVHU%qa-etL1~ zO};zL?RG1R(*EAszOel7lieY=|3r(YehTL*eYVUi^}v~+Hxu&wH*;Q(H9Ehu-Ar0> z+Fobg^f`+Uv>!OIM`yp>%Xz1bXK#w$!}-Z~TJFTfUWu2sn$4+v(@|q^cALc4WS_J5 zr$z4#J5_qoc9qZUtaT-E-bVUqbFE)n#7~?(bH|L07p6q_`B>+zi?uR(I(G`Uw$2RU z)cn({Svof^^;_E-l5*#GcfPRAy^QUzZRdRX8++$tZrg3UL;hri*v+tIv6nF3g^(xHjy`-Xp8C zpY(4#ZmNDg>3GT?PjPwnhtEF-S#BwLuaK4Urr_1hYt_^LNG-ZkYg^C!=Ks=HFZ_?o);W_;-MwfjzG>s$-+b*_+Ku5`scF5NcDx!7zOy^iPPwtYNXr*6NysAk*wevv)WlY$Rc zTNv!R$!2prvv#4R@_GGz|3dby6%O3Jy5nypf6Mj?lVvO#FDKsYK3Az*SLDabrpn5* zBF?jT!Z`=NHB%N?O!@fW?yVoYB#&Ke-Tg&fj3+<$IJ0fJ*q2)${mMeCvyRvE)@WMX zU7l9CI<_Q!nvF+c;kEPg=NxbR(%4uhU14y#d2;cosMxUW9}7O6Hx2cx+L(D-@All| zY63pnA3S|{Gfj8vt2+<(CvTE_TN*Mu_wekx*gc+RZdqyf1lc)xjbY4y%fHc zUd2;?ox3^P^7o=;n>-6&O5eYKuX6L}5U%)Bw|=*ub$Y&7arL#SH*HTDH{QILb8()~ z?oAhUy@Eo^Vm168?K@h$(0t9)*s8r#uI>rFs}ffqz3lqyExTfu?X?eIp|a=A%a@0C zUA9(T>wSZ@qwT6n=Eutm4u@|p-)2$v+5dIzGI{H_n}6pTT)$QE{6b!E*y>5oPWIl+ zJ27Fgo9}sfS%IAEcGfdjF8@?|aezFCJ%DGz0?MB&q zXMV`=sSx{ZyUzCPJ+)5#PPe}+xQ-`p%gMVtIquO*^Tf+~bHab+wSMwy->5j(jqAw@ z&OMAy?27~f&Uf3)*!iC=cS(iQ@vUu6fzF}JyfZku7Dni&{FMDU`Ny9#rgIhMKiQ)3 zX6ijx%iNBpEYWZ~{;6-C?b-FU%FaEl`i{-@{ps7!*Opb^UA6e4R$r%+N)c;)bHzzh z{Y08=a#Yq`XDDU#3@mIoQI)LJ)Y7paz|zk{vA&$qZ>DeZn~My-i_-{#_mlG-Tm+dyZ8A|$L)8YlPNv$ z%g^B8(W57=w6+&}K71jx;*n1O^OH+YH>XvLn@VoH@pjXiPmZ5Ocj>NQurT=X`IKqbO)Kx` zbr~AGI&1dku<5OgJ6G3-TJJW`IhuCHs^t7;nP26lt#{dcyJC|9^A_JJ)f0`Ht8sZZ|~$K77C?d0k53v<=B{L<1qeDC(XM|qQjx4hq^{eF+o z{nad||1EJzudbYWanFzHjiaoJ4BC;Z-haoh9r)kGhkzI<@rW--BKv*(sy z{2%d3@(o~7ob$4%*X)Isx82m)cey?|Vbz5NA#1FQPnkG=xxFlAm+sZMrLSyH-&R(;e|E3$ zxA*UN+j*HKmWqppc`h@!d++T2MK=?TGtbVmvWl6p?e&KBGk2)&4zqo8HL-a4#qMC~ z$<1lEzS)-E@R_T-ySUkR&BdIf?Q&nI#OvwKp3QW7dU5THd4D4G)>&&`@2;;3w~97? zxGi~exm)hH>_a!w?w2ue-E8xh9^N6XJC%_ElM}Zvd}cP1PZn zS*xQKK3LRRD^s>@qFDd=XE)z$&zSqwA|X8RbLA9s*&CcVpt*6yN)@Px^fPsE6;)FCSjmov<)nkx;*Z-#+$f@3Pb{rI)VF zd$LPybFjCm zMQS>(Uu~_qTWnhIu}H^<_xiXqrgrk@XN0{Hiv7n9sM z4u=vAX85o!ocF*#e=m1YhuFmnkr7KHW=%-mbqAF3!UtOo{bH*JV@`~PFfGWDGPKmE|}o8{l?-hF@W`=;>x_Rb%2+!njO)gRY?yj-|<@%0j`LY>UI z-D0xOwWeL1*jVGE;E?&i((~_IZZWRsPoq^6e+$>MpYQ!uka7Cl=|8X6yege(cCF%u z{=ajsdi&zt10Q^Su9;R~`CWR;vHw<0dyhPAGkTsn{b%aQSCy5&Z~4lK6y@}5?o<5q zTy64!wLeV`=C&HXySe;CUE!W?p$ostf4=;i_|SjFF+Qay;syf8e2!hn@jb0GV}i=D z?Kciz`sMHYIQY%pDYo*PlMTu$ZS5=qC*Cl!RardiI8&*qf7}1KSM!(}KK@D8jcvJS zc19#k`_W&CqVD31BASe(!La?WdURQ8>;oXH8|RX6PI_~T`) zZ*N`gsjn-|ANs|*IJNlEezV%0N+Gv>t=?St^<8<|-!}z3TFNn#E>Dk3Jw5fR!2#_2p{6KNYhU_fG1q{<&36Q%52r`R&np zk94`WX~aln`Ic->eD=Gtu>M-a{R}pdqQoSwiQ67tjk>u$?)2K8_afXGEk;kSc3l&z z-I=p+XTi%wr@zMVUgvy$=$YfvU9&ze`=S&1F3nSYzt5_9MFzRno+)Au5nWE9J?B&! zQ+LXRDo%EOvM2Jlm0GxbNo~uC*>{Q_)nC4!;3Ox?mCrnZ@k`Lc2?1L~*w-=0OpIdi zFJmck-p8!vpy}l_#W{fM3G){rzDu1eVia9ZXlQVWcscU4o(#C>dNNZ=;7Uh|B=-bu zuPF;BA7VTyaAkp{0y{^n=LAcR08TIKQ#*APkA)P8c!h8|EMPv#cd4Ofg;@i?inS9f z!z;E{BNwB9ZHK3F zI3djmyS*oLdMy%ZRS;RYLO953ip7B^BHHKVgxHouEs$bZ65PT(VNnXxhbg>Ht(s2C z6ISl&$O<%@V#Ju~AG4sK`MmNLehG$?PE*{b7C9O@TB$OtM!9%}ER-^0RtdPGIANW~ zOp_G>Tc$L7h%f|jh%ii9A;L5#XNr`Ark9_9-h$wuPpw6ayiO}8ab0ND+{1m5`JzU? z-Uqc0a~_H-#ClnKb)|F#Xk2PrDzG%`u(l#U;cWFX)konH$58Q z?7O%>tH1r~#|m|KXXc2vO9M?7q&&KIOi@CaC6aOC{QD1|KD@~Mv;Ity+H==ai<%S` zEYUD#d^4{*qr7jfocHo#-Um$6rY_a6dQjxLWXTezX%m(;F3gB%(2Qc5#bBAH(aIGh z^O;pjY=zhaF1JY&7KXKE3NCrd=fvr2qE##Sx$?7b!#&SMnNBOZ@(d>yZd!CrA~eLu zf9ZDN!`2I~l(@6S^L|{s;*+JafHF&-gYQ#|=@$0|1 zWj{C>|18RRv)A0uGvX4ngA;C?JjxlVG41i<^CdfMV>1;tE-_=yT)K3@jE*G>mT1TY z%nar9O5yVe<@D7!!zv=`mKN;kbV1!MRd0!r%yb1!so({3rmkAWw01L><^rwdvqCCr zyA?w8L#8SnVp9-Uu~9(NMKelhA{WC#h9z#QnyVPSLYP{lM4cu^xh&0;T9~0JxHMp4 z=u)Q^F2|)>Q!+C}H5ryony4YTe4W6F01XXI$4s$_ZWA&YmuLtqaB9>Lnl?3P;!>uz zi3_zRXe@P`=;e|Tx>SQ9Gh`u`ri-S_f{dU^6TGBEGzFH3ELjl6%H^1;AE_7JvuuyY})5L|W8Db4f9WIApMPwY9n| z32Vs+;nHwe;uWIdkSWx~=+@$!FJr8E=A6J2IX%xWu}jK%Q}36ZaGGM`(2`_b*vVYP z{3~*UgZ=#;r%8*Z-16dj+Z{0o`C z>@W50l8U-zq@k(d<+gHB(}X1De?9@{eV!Pp|1I%&$Q!J1((Jaq_WWXDi~3B331?QD z*d5n)J@IDE!)mW0;np*&FSJg3xJOo<*_!{m!p*RSatG&cNnau1yV4?e%Z)s~`6k_> zw!wP#?%MAYwRe8rl%=;iSY)fN_F|=-KX&g8dwndsH+%8Am#z!1oJ@)py)iwN?H}__ zw-6g=7RliEQ+?Uy+Rlg#cIlp4oMXw==y1y9VnXz))f>`0InHU`S-nZX#B)|2N2aH~ z(8_4>v}}~+_;hAvCQ)q5l@|@MDj_x^=mzFnsPleW}wH3<6T&@#3 zLRt+~o7wIfEs1hzR(rVZtn4kzqSt+|9$qy)73&l8c=m4N8OeL{mCl~gi@jMKYw2t8 zc+Q@~(?u^{xAe)&`)skYShqOusnmP3jd$0Z%SHJz>Sre2U9GX{%pso>ITut5i>VTeB~;aY5(O2{Jzv1UKQDNhX2zPH9>zchV`D>&RgwxzJEXK0 zEnGCK(~D)jb+7?N1aS64pT9FjxG)t>()e0{q zkIBbp1cbU6>RjPvWj1l{Zj0gypQ>iPEdBuI*`}O{yu2 zS*L0(SZvv6@+H#Lxh`I2g_2j*X3bSe(aU9KJZuXMWHsR_kNmoSsh$1p{JqDDG`W^6 zn?1M1^|Q{TSzOjNCGw$P?6#HOU!QONbh>7x_ZGt@E~ej-RX1xh0|G*lx|mj6`+wD8 zUl-HK5Zfg@iJfAuAqmrN^llA5uVWA@yjf#o$gP`!q5e*R;H%ZmzuT~U!KjGh>4*5@~q}4AK9-1$bdpi@o&pRlb}nX&)XN7&e*fmcDn1VQwNzQ_Rz3$V^eB3{aciy$s zJSX}*+M9XL!;3tpgP7*th-VXRxfdubAFC}^W1SMgr88I6)nkq0`_!r|t)?Yn8ag5o zX757%?rau_Gu#@o>Wa;TM~Qz-K7QJ_Mz`=-%#QBP>6`Mp?(N7q-1^L9$K}4<-7l){ zdY|gsxl&#(&;LPqY}(QF)3cUrxc2O{+H8k6X(v=B{+{$!pnmt~$tiWbyc<1&UhWbN zdDrc@BI7it35T$rri0UEu{Aft)t0CTEe?w0OV?dlt{+`-H+RS5W~qlobFHsFd2nl~ z$YqXgPq(BP_}>Ux(6maEMKVz=rQK}K%tBw!N6tG}Gfm=XI5g8V)Z=m`+sm9{P2Y0v zYgU#L5l(_>w>E6qBz2AJ__PHTfA_X~u38Zt`YFrMb@9c{7k|!KyQ-?Hnx5~Q9)8z( zb>Iv>4jI?;(sq8QxMrO#xRe{Za^*@}w@p^7&!ldD5Ozbx<@;rUok?F)S%cs0cl;u$ zwn=N%3jKrcp0sZ{ze&_}+s44$Rh=)FJ1l&1B1Fu%XQlADS4q33u8nW^TA=xP@A-dq z>*t6pYYYx-}du< z%;L&ET02Kmq%CSAEAz8OiO#;9Tb-N2=NU0=@3UL;H7@(xAOGHm59euKKbonpnQP^| zfccwDD6IR+^*@0z(QFZ}Swsv8IGR~_@2JjEkz(yL-krdHu#w;3*%xL0ge zR9Um#*W~Of<#IjiYtpCoJl(Fj?U{LL-p*y2J3Cixdv;h;=tjy?za+=t%#&O}np-56 z1{=g^DqdR9+%;ix$>CzXj8&{6nHwHu`D$foO^bWGX@b|xMNdv?<(yvQ=`ROWsW>6);D|>x;o|-ALq6-aqgLu zjSWv9xpQmksi<{@H+MWx3!D1v<@6k*=`t~U9t%!PyyWyZyw7q4$B|CmjcIv46a6B1 z|1>R+K6W5_#>a5>@=1?RTy3{ob)ZAP@uW*bOhb&{B(~<&k!&g#ziz(aoxjC#7DO zvv#|fv0%ZXrUSLt_9``KY;>0DlnZ*uzU=e&=gV&&Znt@Ov-0iTMYp5)rd7#RMXy}H za7K=Wf@RNvz@!t4rY?Tyb@HWeqM`Gz>(}3Z`}lhOs?D4EUaA{Ka6Pv)3EFG+@87{y zE0<`l;@z;=;xG@ldTj9W5LefUuD4yjt?&96U9sWBI~!fe8PB_|*7b+;+D^#VJh@7! z>&=|Dl?|&jHMQ1-^Hscc@ABqRSl&DJxXg_9DT%svl1}+DDbF?Jb{~^i!L(}5YxUfX zO+DRjr$ul-Ij|}${KB`wPoFolWr=?DpYM10Mn;+HjfV4{HPdBOHCRuF&Jy*XawH*@ z!E%o8zW*CbyIDmddII>3F7I@0{JQPO(y|-#t|dGQQCcAzIn!ew506JuSI9~hzX|K5 zq$d5TVpDv$*ZOnK(gjNdCe3s@IN2!J*tgMznRm+tl?i8-XiW(Sai8Y;eYI}s#v3V# zu13ElqWRL6Y&G{Y-(~F6+|qK(Z_=bI({2b!U7PmBa%MSixlgRQ?wr%BX9X9V7mKMm z3P~h}EDtYxI(t)Nlctth<}#jkgI04*%dWK0kj~UqQxz^6^|Z;Hb~kQamKRX+AVE*5y(ZRakoXOS}t1()TX%U&t$8vMZ8JM(ZoTuk@XYQrXSeu-sQXM+ z_+i=H;lNqO!ZLTUTHevmZVBrytl`+;ept|H>5J2oUu$>_ulf4tyC!=`4(KB50xw(9=$=iGGHfcu;G&R_c`x2zU4I{WEaqR{`93sn^7 z+}JHzxa1w*nj;s@1hPIaJ-5~9=##I#AxiA?_}M3(&E4>&^!@!wu5Y%nulV=kP31e! zZ4++3OW%Lwm3w-P$N3YV&z?`bEyTaG@HxwTpF;{FPP&SVIlCDh!?r(udNfdY{g>MJ z_kVn;{IlecS?#&0eUSF8l(c|`H*|A#ZfVID_UEWx3CM-Q= z>xskMb7xeX4_H+ms(`%EmPkGx|<%(7E=+NZDfRnVn~KJ|B7! z7rXS4%9o{U6wjB%`RlzpzTNMqnOU8VZ)VlpX4!4mvWr5ddJmv6{ zn%h2nPZscsBrdT0Dcv#I(NT+Y=A@2}MzKpqT%4!ax_>Ln5i8*a_5oM4J(iCyYp<`%w8_L{De!N)0Zw$r@+G0<9)x}%q@TN{S48wyuioo z@=#T~l}Fc0iMeozQ0|-wr)HU_hni;=<$0{xxU{;oVP@Ks*ZaK^FFZ6(O`Wa`v1#*3{9_G-vbut<3kIeY5&&H~H~jx!-qooIa<)Hz9M` z%EUEOP8tPkEK^d*Q0AF7q2~CXHsT;T`{5R z%9691QzS*6r5I@iWVV~!Xz|R86$@6_cJW)L)u%1~o4Y5z*<}@EZ1g1V)m1%6COOR#RuP!o&FP`ky;bb#_v*N~g=-=Wg7i0E`nl?kqe}jaMN3|2i7TBO}n$Z_u`$Mc~6bb2puU~bf#sg%2RbVbF*$!iph+b+k@M~v?gql_G-1%IqP%6jc3^ygjJViR(%1ETO?6&q7JK@}kJXlorDbKA zRdOcn$W3dBN-na^snpiyDa~AYI^W#ID$PH&?78l>yV*geaevxQJF@LuC8^x|s{49J z?vj&St27qPFtU>mPe1w1yl3--C+S`KuAWy@&rY4Bmu_e!=Gw0o-^n_OO(7>Ua@wTq zw`DoGb!$6+?~2{DaM|LcUJh@bSnZU0>hR;t@}iXmiRNE86)pwsI<@d@Axp8h|xyZ%(jLDj8mHcysH zF_`wjhcD&&+lf;SbYAs1x%uFSw3ziiZCfTseZ6stLzX>~`_v-Mw^pjFmwtOM9VR{5 zTx{Eyn-=Xm4otCq`0npA4 z(zR`tPr98?J(=A6%uzn(k)$)j@5|~}ziB-`eD~U_e(rLsP@clrQd?O@IDoe#L`#zuEjdH#zg8Q`t?vS(;p2Qd-8-_g=mFUOs$3-`)Rm zVm~gdF}v_1Q?J@0L0>m8@xz7Z7e9udNczcsqH>XMm`t6m455`d&LaGQxr`dw|fOIH89faJQGY{^Q$=>IN!Z(`3otgl^I@IMJ6pPzv>*z%3Z{@;>1SBunWfm zMOFwa&A29ZLu0bsO%?970xL9hb-xv8x%Q;T2cKVgf2H64b?R5s%5C=k*PV8=($AFr z*rY(mgym^FuDLdvU#?!3VK#l6#KkWgJ&MlMo9oLaT)1SY==7;wPkHNc&(=`qQ%*gv zvKI48Ge>r03C|4lzqq;Qn8t?ZmP{Mpx##(2M{U+GuXtclvXr|*<%;Pi|5@CV&2@ey zKT>hnwzJ*n_L6vhiRWtKrj}n0cKwO@`T5DIIU0xd%$e@}PuAu2qLmc1`@e zws`82rE4!OI(Tk(xcBqsSJ~HtJdM8SM6wD$UwC@);!mHCsc@~-h}k^Hn}^lJcu|h` zdUb&rixj3xeJZ`78~y9MY|6$(F4bq|TsV1|InvrWz%OD}WA;6rP&4(stq0d`&=-}i z&_5XbXtr$r>HS^pPR8fG(=|V*2#Kj)YJAZA%4&k=o}F8tBpnYryl>J54>8vAaI4ci z%lEv$t-jTJ>erYlzvkGST35S%#fM2AdHju^YQBZ9S^iY%k5<}NODV0RwxvFI4O2>g zZ21}6GsWfW0-Jq4PcoY(o?h3w&EwAJ(~@&moJ^i4b~9#Ei-FxYPv#!x3m!#Qd@Ijs zzuTuIv~3md=XJq?Dk)Qs>D)=4>d|@cMT_ndo{pspLL$4WXS1$7Vr*LEe){m5!^Pb~ zKE6yVf{U*Ee0S`rlnU9d>;2|zLZildOIe4ho2R5!)K(^EKbhCUKe5MMST*BOWS_{6 z2u_aknYK%A%N>8JtEr>zaCotmZc^5&l$~=X-)FtDjhQ=%X~vO*2acu{B@}T;PBi38 zTb!YtWR`4s|LXM0UzUBlo*lC0`#RJ1pC#YazC8g7TP7_jI`WRYWLfXpnXDh(j(url zJ=$39~U&!mN%APx-gIi3GH=g@ z2$f~U8uOK2M%tY__p+2TDCN!Hd23faF4(ijeDjrag3E(loVh+Hc2AS23Vd(sa`v0o z&Ik$DwrM(XfvWz-Qr;p{WDA$Ptw=iad}i?e3@M={x0ZSBA2xTJ2hZH5em}9W?$?y#rrn<|yKmVq$hRks^UPPX z$RECWO}7soKHexNkhrFFo>t|A&3!*#$*GDZJ^l3gM@rnc*15M{Jx<%&H{G%L^iyNY z<2#-@rE{vLF$Fy}duf@~TnYYR^XTvLB-?<^6WW zhWn46sO1QHdG*QllDIo-fx@i+nJt{x$bM$5nO!a zS)r%I#!8uU{i1E31-vKxoOwYpVOcjb>m*M@(+`C@2^OZEnX2xEKE6V(=i_eA6s~?& zP_y2xT~eZ!Q%y=wZHM9S6F<`ojRf~jatL*vsVjO;Z1csKaEbftiW?6<&908|$X@c` zT=>eD#p}&}9B*#DJ!ezRWs$gL+omzJiXYCA3=D3~^PO&Dq~CbQ=VIlxZDCX0S=p@l zTE1y4-tTfoS@v1KlJPy4ujPdgKBP;3JXgRY6fWCUz3fvL_kr?bN^f?}H=lHKSB>D& z=zSgW`N6AHIUOI|i(PGyH}i{1+Z`VhEsg-s%9DZJ1?GZ&5`H#v_f@}!GCq7f^>^H! zM^(p4_Zrq^?+N{#y-@hW+Rd#JmSQJ)o95XTS(rvGiPHCE=5=2X!+S}>C$qXZtH>;u zzdP9W1@p@d&#Q}OPrHzp-21#&I=T7CvA&Huvv{h70=3sjB(2VwpfKx*>j%T)f^e@d zn>tl3uNQA|&9)YHJ$C18@r>YO+fFiH|HoZ*PQaMkSaqJ!iV4g2M+KZ+GJ_+{GI-*v zFV{HkFU+kBcv2~`>W=Nn&(~$YrXMM=`jI{T;M%|Z?S@ThcU|&RH7XW6h>Je)5!x-} z^l2GialXcywYrvbu3fp~+A>Qi@iNz)txX5Qw-v3saqx^LZ%W4EEw2|GvsUv`ZD)F; z8C9q`y+o(_>GdgF z((5em8`ti0?$UFT4u!Uw__@d1oKc-=()Z=)q{w_V%R-BY5|ax;+-b+9P6djel+fi> z;Z_e0+0g7Ur>`r}a?hQoVaL~|YQ0Mq3R~2%aN$es#=RSqlix4Avf<=3myjqEZ+7RP z^O`elJIZIQ?6=lW6O&l5W6O)FnR_iv*!F5`KAO1jCr9pG^C#0x&X$zM3bgO$y|mbG zoxYi%a7f$q>{y*Cvt%x(_7{EHYq-{Z&y`@Er1wmX|Mi}iTw zQn7t^)RuW_9QzsF)0%4AzBBP;*{T&a>pYqazDNjq?0mMcPh@uI!WBI?5(`d-NGhF^ z;CPm2)UxAt^>wA=Lesd^&De#OT&Rpc^tB~(PQPb3$GvAa7hasWteH)vM@LOKjOz(s zbq4q836HfGs~Fx@QNJ_E#LeAubwu{p7u6g=FDJFnd^1(<##jsLqQehp*k9FDj6@VYcOBp4piPR@^(gC?epNSbkdMUAxD#LiY>j zMtk<$dZu?tSg?EA*Deh!h3k64QeO|d7A)U)@8-Mt%r zFz1lh@kQr$OBJ2C?oqVxMn&{q?f8{_Da)<9J?Cv&6?*S++stX3D!ZR z*M>)&E@(V?dv=ww>w}Uv6Sq&BUlu-lx^(Z|vZJ?Cg2*l;QN(l3eVyrky_>HR_> z?z59DL=uuF#YCVaqMi94x^qDl|_fAw6fN5&YNnw zK_SRBv$ab|=ktcX*!I>94$7Px?z)^iIpN2oV@3;Xyk{M%%dYzQ;HaFX-T?`97PZJt z#i1>&O>B=u661taULWlHDf&L(nRk$h@1@(_i_2jpOgIa+bh2m$=;Y4x9k4=(7QP=+H)Oz#nu#w_5{D!`#&|Oo7wA! z(VcJ6)z1}n`LPCibZBX=6xnr2$nWivl5p*=s*5K|)tDSYuh&pdG=Jbg=bDoxR)JM5*vN8wRPnw<;yIRU5`>Oh-Xf@?!Bta+;K+OH@zG+ zvCY9Zjjz{TxAV(3KY7sd?lb?nbNrVSp7gxSJFCga$@pQgXU1b8qjZ)D+m{$-AKW^< z&gWbH>uW_~uFTtbk~F6ucb||m=g{u1(+LMt&ZNfd^epL3d-Y^;^z4%UT#la~G$ud4 zlOr=naLx6S7kj>Z{qsfc_Z~I__tftj-iADJZBCeDn6gEa(?D0rajDXoz@7_Jw;R3- z4KO=(cLD`wsR?xT7CkDS zYZT;R`e;{&@blPTh9@U8KkHRnP_*#IhN#|^MjX%09cFaZeqHk><&by!K1a^ejL&kS za+?lL=`-|cn^2{lXl5O=kK@W@-LuoKuf5iFSL?=#jm!4*td!g2xW4c$|12}_`P#Bm zZoBf%J-6r5&V^CmGYh7j+0k!&$sVbF>9g@idkK|Hd$J;H*m>gn`_U~Ww)DcKlVd5YoqGZuU{3^ zwa(de?Miypl=9-uiIb5xRgKoEY|=b)GN(59?8f&cGEdL>+o%-fn7N(%@+Ib1&DZXi zEhi@w9s9i9QITb4bKl!#W?yzHJ!aE=`a{1j+@s%K#c0pJKCR8kN`=0?dUu~r^3?2` z&U(GnS4{Nwxzy0Cn6C$2oE9zouCPqQlPOu=>acd)Y2D)a_FS@;r6v}idl_z>zf;Ep^3{Mb~`H=PWg}yF6|A)}BtD^Xj{L+|4+WwZf~5 zPnG4}_Fho+D5<+bRz{D{S@}U-rseCXKfW6JEW(>yddklH)N0?BuY9VHX+Ase=QTbb z&#mSXS!uP^RWr$SZNjlLd8?W4uq&N8sP1W`xXvQ5&oH*?+Mkr~J2j>muM0_7nH;HE zmf17OWaUPt!?$C(XL(5-zb{;D@lojXq2S4<4YzC#RJx|Qz2}U`rHkVGl7+G@i)M3j zNw=I!nQ3Zt_J>>Yfrv-HrYnYpU)gpt_KMkC!@{7OhXh?F2+M1WP5-^e=HouroC$Gm zyH~y|f6?$o_E^xSAA8bQ8`Zc!N^`@3_*#oDb z#Z1?wZ!4=D@XkEC`O=*W22N`@E{QD3j%C^zWN7qcf283Px0kZHe#g}_@qWHB%hPX0 ziiVW#HPtX|23l&a~CC=8jqksWV?)PYsC|pC&ZH^rpCyw6i8E#p;Ep5<0Y3D5QuQOQggKvZe0N z^gWf`m$vhC;kw)_!P(iT;#U9i6i;jB_*-EXb8%+NMWLR*-j&WDyyb&J(m7IB-iuij zvuo9))Fz2kAxX}ydOq)N?A$Tw-Le(adY5>LmZjWfX;fS$thk~iREtwrE9~yK82@^pcXr#YPYAS*Z2i>fI-9v}?;wzvx)g72P{0X52YyY`S}` z=B(|!@z(8nbJxAiy{GRExYNT?)4n zSC#ZEdup@HFYR;ow0_fdh0k2FeGgVVvUA}1`u-1f&9-a%H#AtODJ@#5shQEV(w0a1cBW9Z_q#8d z=c`wJzV*K7c)V@XHJxQW&jjX~nB9;(!;ze>r15y}ZRx9i$ILWsr``H@yz1OE_nmJ) z?uhG^>zw}Nk$Y5m-K!{D-luu|6Zc+ebJn}H>dD6rt#4Dxj5xk8<@V^~*z1$8-QL@_FGWD`)&WlVNiFoeBzSEak;+nQhpMKC@w|`fW`C6VQQ7TinJ>QUWT8hiV zbZf*huPd{*u5p=e(x1J$V9u&n2C6fE-CUk3k-jxMR_3{tLB;AtuWDM~cQ00*TXeMV zc1`9om5cTsOBz$Y%I#0D=e_twX-{nTgBjmj^m{+5XudsS`?PnF6kmDO`nvUXtLw^c z^W1F}+xu(M`Kzg!UZ!ku{@gPpI}R4cZS4t6I%Bb;ZH}Mh>?3_C?0V~V>0CG0EZV&C z_O>Xs%(#GwJ+3AvA}eovi`yKz*6_s{wpee6WnTVA^OZ`L-1(AFBgcEZV!PVA2amV^ z?uoc5xv^X3>71kcO?Q~idmC+j&!grpuTN7~#{wmdKf6TSte7XgGs4X*kn$5+3Z{fp|yhjBwy)Uy6Y2F+4dwDu}=?7kOZOh(RzOz2yLz!*VOLc$M-x`+p zH{I*EP8Zr}c4eNMZhW1FLh-d#HFA6!g;z7|;^LOc?X6J4tLYQY}$)|vAPBxzk zbEhiRNTj&>n_RjsBO$0aT;OmNHWX~jM~iF(-_4|#aE)wF8+Wz6m}u~?tnYjilOs#Q64ScN zmrGlv`-jgDUC$Z2Vf}{F8Adl!_c0qf3ro+DQDAXasfjN=TK&GZNc`L?dy(r$y{GFp zDY+l|G5gCIwhPZvqbH=S>2&RO%l^L6T9Y>>xWzM*SI~9BHK(Z?3sN{Hd2PM4aE8QT zyD$7sg8VwZW=DCQ1zul|l`j2W^*2|q;qJb$(6obFFUbky3cO01VtBcv(GtXG}pby<7BOPtAD`R;*}Qo@h>*!QY)@GhLz)cb5v7q{$|Z6_nb z7`n8KYL-lC^{9?}waNB!|22iaL$+Vfyb1cgGS{~DKlkC6KASXt#XBBRE_eB;bxx97 z%3SaGsY4~kTeIUPS3KJn8{JzY#V#H8_Rp>6vnGG;$FI6^D=B_ayNd0?4RSkP|F|2T zzueAWPEIZ_I`{5ri%S2=YhL}h8@a{q%am_tQy%;B3Q8mLN-pLW1J$uGhz6xi19S zd8(SIw|nj|WsaBmd^?tRz1PBD71w3w`#$>M`Pz2wrYmhXa=r`PnzizC?6fJ%PHoo9 z%Q$Ru=!MjW4e9K-j3ydbEmsZ^Y9V5*^(I?qH2_}pjqu@>tVBJ+-=X^-R^8lEB3j#Y}+04 z^1P=9V>TNsTP?!ePg{JBjvPp;oiu~vC`ja7tI)MFFp#T?F6=Ds^lZxTDR=v`jQ zQ@sp_o(0){#VVcw589K@idBkxSY8UBx0&b7l~U{TYGJFMq?=^C{W#xD(b>l^H({~b zjo=BImQ!!8`nn-u<5s6lF%xnpxynlVEv$Sst%7y?itN<6XG>nT8Mv=lS-tVHo#c|p zbHSI*?QXs}H0|i|Xu*qxO*6NA;_G@{bkA7jfsxzp>2p3`RMXM(^t^LYD`xZDYje0+ z^cRKQDxC1-sEyd^H2yuox*4ZBYi_S^_T0&N_0!swXO=y0eP->vDJaZ5Ew5zV)Y9v# zjHQ?>sxIo8Jl_}ouTuSid*jXa<+lEnXAVtfeNbr;v}(tl<@@*kZMpa9 zJlAR{;!?PPa?kgTjUeK?<$h5Oc z%1R?pZ{mhmSF)7Wh-R6oxo(tTP;ltb<_^Bnl6I7R{l8_R8BUQsFL&4PdYIO?IwU(L zPf(`2`z+fdIx?$f}DXn(eXM3@Fd(AxK-8N^6lzUP|Y!ptM zu#=8|G{NY3wya|K<&tWh-HYsmB$nQe?68ZQ%iYa)T5-bMyEnHscg=iaAG8Z}Tg91* zh=wq3^U6Q@jQz-uefhZ)0wUJD&*ZuyRuN?oz~l4wfSE^A7nfJudiBY1{%STB_w;JM zNL}5w^px=NRX)p?wi)_lxi+;$h+Y?XbLyM(wR0-3yspG#3r-C5`L#OW$jTKGdsiMg zxvgu7i1=~@94YZGZ8zrhT4#<79mnCb7)T*QyrP6bSZO z&s>&v>hA5!hwk1MdhL6-+%NCWo!cvOjWcJcB~F{%{-*!5m3<1^`y&c1E9%*`Soh?V8=gTypZaq1^7M+Qckel4US2w5>8>|Rk4HS5 zIYalU;d8@1QF(mD$>$QT>g#K~E7iDI;xbjSU8Ct>p3lk53A1-jI@0p=NVDrMwI!Ek zwrE&QNWJQrVddv^U8d3~-{A4qJC9F2)!Vfza>Ma?S8vQU*<*CNO*ZXo`Rs%3g07P{ z2ZnJ)2WH7lOVZ+R3J?@*nwTu&6?$IaKu6ZB;3S`}%{+Y?E#?ZZW1s(9&&+Hl$@=|< z(a~Z1mZ;r^BY{OM^K0VY} zdvGNS=k|LB3HgkBoNaHHeGxB@J9*2WiP6-U?dT$_8=2`xr8D-N4ZfPS;QZNjCJDQ~ zs0uP&_HVz}R5kgp&izmmznhOYh}`ix)m8DYO3bstz<1S44x?`4-D+XkmS^q=u3NV4 z)2`*Is;lNs&DgymvSzzqm<`W@NX}+o)6%P_nH{qQS7%&J$PB-lZKGK>>tQjE>)iRh z%jV5}t^L@m)OEk-p$&=rnjA+x0?ugIezd*URQ_&Wt3r#+uI|s?;!?_dh1ZS>-fc7v zz8E00>wR&P)l-L!CDxy7v)tGNWgn+T1?n9ywu`*i9`7n~_MM8|L5{hX?>>3+;kL7` z@y*L63vYZresg(w*2N`a%oT4Ri{IRMj3=<;!Mtpl?f2dtxG3{0^})9Wn~BL2H5hU| zGR`IKx^pOWPjO3fS>LV&$5&3jxKC%L=*JEF{}{tw|_}Ip=i41oBE2?`}f;S zeiwRr^LqDH*TWe1{CJ#ct^4>+bETE?QR}PE&S*w?@=Q54Vd1il1+^U-SK8J^B(nS1 zhdas^q~6ayKhL>8{Ay0We}IDA-;nTID?h4cGjX=JH#6{AsU2kAy`TML^`!UbFJ4?b znUmk=Lcy}~p2xG@{#vMg$mMhM`)+xQ$2PBUAdytk=zqp_N1T)N6fJNKz&nMEryD|~WNCd+2W z-p*d8a^1CYm$dk{G>26V6Is3&%oBTJRPov1eV*CO&?B7 z`=wIg5*{UHeLdmHiar;vOP}Rh$_%!yWt*6FHBx1(kJ0B1vF1j>^QQTxJn>u0>5*e} zMe*lTq3Z8W%U9Q~V%WrPd!=nX_U+@|Elx&vNpX&zaR3N30Sv`Lja43cZTE@h$O^gDacBmmg=GH9dQN zG2Rbty(hs{G+Sl**7g(5J0`J*EL^U`QK4?ovBG_g7voZ0bRy%VoeOo zdt}F97r|!cqwHsAC$pJODW31;a^^a-WNVi7{mt?-KmPuDsI2yT*}TKr0>Y~p<6|#d za+t_5%FX=7$vj<{Z}yETwIz4YetsD6Sj;cxq@7iwM3U6crOjdY?)S$?*v_kAj#=n}&;l!;|WX3mylSsfw?6TmH3o}~z2x>sD(cobAN8qzKlAy;Jx|hen)lf5 zRo|7tyuKs(t$XN7{_JUT0ju zzc_n~ja!pxn|sZi6!VXd_a2zeU&JlJdv+>gV8DiEv(7&K6+BD(X1=JId{{A=Tl`%1 zfmdJhi?67+NU1DUetz!Fss2Down)t_e{!7oE*5XIe>GjO{j$hRHAjKls_k12AAjVP zzxUksTS7&KHS;5BK6x^?Z%E>)z}m$k3o=u!FKOkzo{^BGDz=wrdWb}@NAlLjwySN<9jDesot*1p zeNiW2qqeR0R7E#VhP>|+cdqTpe>88`nv+vfil-k)Y%|mGP+6M6baj)r`?1FRt64re zK5clrJH@o(`Q7$O?g?58IZkJ&9d+!udRN?FXSdOV8y=C@uBvQ~+VkG;PixqFj_wbu zPjd)XF1V5)_08v|zyY~GA1=+~c!KZBn#baz(7$s-VszCK4ZV4;`P% znzLB1Y{o;OGdz9Up2at2l-V&*lX7k;(azW0gZTQak7uBe|ymNT-kv_pw$AjK43O-$I*T3qi((;om9|XR$ z2?x$RZSA(K+a~4Z&Sxu%XScIYd8WU9`ueJCZ)Y!$s8G)f2#)C0h%gfI&(}z-Z8!*oTZ~4A?TjBX=&&OV^&V2%x9j{lcU$Jiy-_M6PXUx3Xd5(Ee&bi$!`FaI! z4w?pfdONGu|9d3!?((g}M{|4>(*^bj7^rjdbN@y2)e3EQ3gF}9Xt8nKu;@ZusLUjmV^)*C zY_!V_?JxN$Rz0gTDE-Q+zD*h(JxuJI*KUeJzE`ARZb~1>+a#3!Ewzh%z#TvUALR<#F1** zd*`MX&FsFl_{Ed&wL878Y+!Lbd1%q1m8%v_Q_5Hr#j#W^Gj&PRoMwepN^BaFW<{l) zG@Pk4W0Mh=$HYLds}qwJXc@YCdu6!31hLXjTI`{LQp5A|7Ye7o==~q`mRb2%Rep#Bwk_w2`#dq*J?gzj?3lgE!$tZ@SA?ML{Po-3-ZcBaPjU zms+GH=Pu`ZcXw~}>D86J3)iiE*6y~FYpSNNu)?hAs@aDh-L!oYv8ixT_r!EXw`(3> z%O>9MF$+*W6!>Ve>TE6zs|8EbQd5m3x4Rs8reirdd1leGBxlj-cH7q#T<^)9CpppV z{NxRv(>A<#t>?btg#^cuEk2w|CR`Irj&;lO`*kn&SFZhjuWU(ZvcjAXj;Rx-T{<}J z!qlC9E2lgQHFL}Em%U?dUUY0mjCSm;rKe97TAs_24tVJ~OVLup*XKl0q~b-*n;{{) zCtlZjwcI?d(A45{yVT0IEsNWlnvl{w+Qp8y#<7Zh54`%IO@mGxdYvBIR8d`tD18 zobz*n`@AjBiw}0bn7UwAmy(A}LZ{8Wi>__=-LhL;MMNDU1*{wbUQR3&HC)yB%4w6< z8p8#lem9*1Opi}Xa#xMX(o_nX!m1;atYmCt)_%4ucG};G?dfr)rO)1{ZMNEAwMxUc z;K8fTRZ&r%{7!!AktyI`C16dkV7M!REoxDoPD`6HF zOK6CU=Ni#dQZ1`lgSa^k7`R@qO!@LlJ$w6(uT$>oo=Z2k2rsNmx>j~*)#5F8raavl zTVw95`H|9&8?S=+!b`abuBV zGfyA9o6q*_QB>s2WzlE$tgY;OCUY;hbLUR!uHMo;cPfIGhR=AFclUZ+=8O+JHD^4^ z>NUBTyPYfcj%?ZVnRCj;W6R24FI1Vy({%LAEe=zosan1&PyJ-R@w1&2UVLNEgfg$> zgZKT8?z6Cq-u8Gkd%LvoCg5Y1X}(ezI1`?e#$ zd}rvI?36g~n#K?@W#eJvqCeHKA(p4Q+1GylS@O;J^6o3&g0Cr@Pu%F3zOlxrf7g}v zlOI2e`k1`W_#uOL6`NbTXT3gvg-xl0k)ts?MkipE%Y(}`icXr8H zYMPq&5>ok>z1Qpa`?b5KLTXWzhRyf#)#um#h*j@<`}pa}e&Lha%r|ewy$np-bWkMn z$drVzk_SuXs$AjDa|mEb(o<7l6AWo;=!~pg(zaRHGV#b_mt!1FE=q#^2J*iy$%+TQ zJjpX>*#*uw%az^M|WfOb&gH0!&&N<}5ELUqeYDWT3i zQ&|IRRx-=YGxBqENtzJ5CuNSGLJ`Lytuv|FN%KmU`^=cke)#!biMK~&_r81F`pMvO zj=BC))4rfjkB_X#3N2sY;Jr;NEk#sMT_d1YBL28n;kksgNkXeU6ZNK=bT*3!-SsG1 zbIPe#azU2Iw9{>~`BFTKW(7s=Ogtr?ainQZ*Obg@%TimUOPE)wX{iLcO!eFn8oYAR zs*pRfUUPPOPdOG{oR|0b^zPhew+l>jmrdjfUdk1mJH_*PkjmMWx-&CYvYngt?$Xt} z2B%)#S-NhfUha|Y<>q;uLGSXm=PkXR>1*^j@6E1M9r1Fb<;F3~KItMf{uB^s$GG-V&FwTA@y>at{u z3(a!a_4sU!b>el^>RD&z?T)>(by?%C85+seVjFGxW-5kHS~KmX(NgPkGc+5guU>gQ zauN5E{z#YdiVH#oS-ORB4o7COOcT$x70Nl$5ORF+$)i0s3X@iao78!3SF4APjuXQJ z)#cPXSNqzO^@z$3rh6#w9W-p7qxvSKq z^{mXE7=5GUrCaqL-3r?79djji*JER&vmtGrGgcP7N(mM5Qk^Qbo0!|T~{miMmU;?-Muua6u0 zdgsZ_y&TnhUGwN+apSV5;ihM{oH4JeJSVwhw!7Zd>n7SsQLm#C*YYH*g_?(~Y)VT} zaoN-}(J|22#b{&E(GTZlrJI)LrDeG!tzn%!_c&7$yD{^eS6p5N#IcQ^Jw0~xad~K%RLwFO8iu@nf#)`&V_w1fA@0c z3iUhQS(DGsSCxx#?$ox`{CHnH#`)}=B++A{l_wM@EmB=$#P#K8ac+X8u1Qs)A%B+B zqJ@lKPxT2Y3mdyQ$X#KQcHhWV{JOf?qoQMlf_z?p^+}taOZ+RQS%2i)yj(zBl6jfG z%nJ1dQ=9`nO=Uf~@O9sc_q|K_Ig77$R4&{qd0pD?lKI|wEBI~HE)?%taBZVc%X7{r zh6k;lUwt6a&h^4-OWW77Q{NAMJW+Gxlh(q#9&O=c?b}{+?7KfzPpF$IZo?`5PJwfG z_A9*l7`E)m&Q|_JjmIJP5=%B!%dSvuz!Y(N zyHW5g(U72kpum~!#-cw3jkrZ3R{1(Dj5SbG)8dl1^%GpVXwtNIc4(R6}Q(fyLxo{w3j>rs&f@~zq@c#VM(dQB$*E(*w|&{CcIj!{hI>6Gnl(nOu`Uy_(m69ZZH31w-&rDeT2hyt_T9kkGhvqE z^rA&hj_>XypNlM$>`KY0qPvR}ZqMp#H(M?~=W_X+Wkt*Nlq7fV zJYIQNoi*(7@tMc_?(BGaJUC(5s#u?^k|oOujgy)@qFpu1B4=qT_yoxj4%yrQqUbSL z*vktIQXp%ZFYig2#p8Cv+pVovrDi-SX8U++b|+ttr-og~@~P*9 z7Isg`^kw!9o_2b6>GaaG&rOPA@9MoNIpbVOD_i$F{mLp5uVtvx$)}@NA_PZTy)})oT z(AQ@>?@5=Pll3yMD!R|gJ#(}?>+SKG%RX=N<#LUdFa5d!&V^ji%z9~yUO$z5hj68Pb_?-T34e}CMCm(`>>?@%mD+*7^J-fr&pEdS2bA5ZrG;4xnkRqg?@1!%<3v( zfggee*|piU*W~VLaq)7_{q)6kqIGNOhC<2cq!oAds?OZ#GE`GinJnP(b(XZw^s_%L zoVM=QJuc1h^!n-0%^O5l^ldf~y_E8?s}ky&fiu*-fkUj(1z0 z>-(Z8+Zgs`qhjx}M+O`WN*XVoPg!|t-p$f&EFQ|zq9TEA%0*?ho0Mf|Csoc;Qg)HM zy6D8+zWxQA9I?yPEfPW!7jFC7xAMxDvpo$~-9~PjVgk)QK9?`=y^?nITWX0BgY;t` z?_L{0(R0rVqod}Tv=lDjc$|LLlke&33#SAv4%PTcD=D+&?$c)taZ}Bia-?BmN2BRE zw}kwqjcfE1jwI(W&cFd?u$w))<_GD@94M!pj1!FtXQg0UDkeSHubGl~3qy_4p zl~Wg8iaDd+{PHP7T{zdiyEYtdOopN{pU>_5a!fr|KyZ@k0=Da&Gxy|1+!tgmwd3g1 zefIj`iGt+Bb%t#T4o~ufs+XO(ui( z8~qD+918RIRt!9|KCNw0@4^?$&)n^Pu{Cy;*gYkKl`nnM3LdaUa;;t%b9BMccGcgm zUCs?tcRaVg@J0KmbxmrHk;3ddKeCGJ?3v~)DVjxT+VGSKI3~rghN9)Y6A0vv{xn0iB++sTi-rDa8Y#E zf@JQ^wPEb7cGYG1(G!;~d~I^&;psav4Ep7fT8^bQr52^tybhIIj)Iee_wpn-XEcT! zjZoasYtkX)sF$(HH^oivtJlTJ&)M$os%%>NiN`h4=_OOJ)eE^_t(i$aH#D0Z4{u&) z^sypcSaYW0ys(#wtLG^FOqWe(e8;g-Y?GxxnY*OZQdPB=4}GG_w3<|9*PanJNGWjf zoys1XxmJATCea6vrin7wGzvSj7Kp`*C<<;fo!cIEk4Yyz`jo{yvxN?GMBA=Da`j;K z?N*L+v78|(;NvLRq;!c>u4M@VGur)jYsCH2X-vxaG&i}>v3+gxN%j>+H=8U4 z86AbEFo-1?$E6(LvrzWj(f2Fh0hf0w^Q8w73l$plH*OS+bLse?%EZZ>uawdm+nTf2 zSk$6o?j)x8Xfc05Q*GX`s_)Bpns#xkL>QG!oxAR3tfQfz3G2*>t~xte8J)Ju&rD5N zu!+ZF@=-%R^|U0VDIZc-`rMy)cb0Fr@!kz*Z*A6O=r|j!G@GegDRf%da;KH2mAp6a z>DHfj&fn_F>p8cVy!5aZn9wk%(<4~b=VH-iqXd2{@u1_ZHd<4)S$3FuZq_uJ=oEU% z&}+rPq8q-aXL`*RQMs%cv~t4Sg&Eu3CMm4cIJ-pes-jYkPqRrxsn-&vTT2zUtyDKv zi)r@I>eLG=H92!pD8<*{P|`;&y|7)WSC$$Z7nU2{%DrCL$+}W^%M-ID3N3AORHBNW zOb-=$dS+8rn$Kn7lgm1cQ!Q1ri&A&^MFx9DZ?yD2^l-(CUzCTl2W%&5C)i!61iR%utYXxsMp0jK2w-d`6m#Hl4Ui4|#(TCFR9C7?Cu1#yY znA!6-bWf}b(KGVhA1q9(ojCFOdfKW^Tb<`2N0eIcJNY=e zBxr2#G-c{DD$k$YDiW$I>T07dysNm+`__aH>6R&PudE3T6^U^1&FNmTq)TJbU9WH1 zrjc4d@|-XHvK7B@?!cV4MbW9-_vJCJ=5n$57i#j7Y2&FEf8C$d7ythC_DRvIRfm4Oj@RuVVykpF5}*i`IZ0b)u;dde@pol|Jgs9JI}dI zn$eK<(@fy~v4={g%G`^iZaJN;^4DB?=l%ZIpX=^lfAn?dvJL&y*(S8eDl%PA6qxtg zCf@JgtZ$AtzWALgKKgXRr{D8;?Gjmgr>_5H>f5iM-=|mX==YwqW>($%e&3j%uPU>* zH~#&!(mw831=sE!@>8Du7d$0qz4iU^y}hr3jy!s!SXVs1d(Xe?){np5{7@fuY4Tk? z*(GI*JD;CfwCT%}ihpr_`N`GxKX2cwsF+{3RCI6d`Lx}Mq5JnN{P4y+e=)=1^n>%X z9FIKx>VD&&(8qh-jSD|+dLLflP|f&-*}iqUP{4)z&3dnS{{LFktJ+p;tmakjd^ajm z(#qC1_wN2CS4)vJK-|{(iX=29b zfD2}v3};-wrm0WYp5->p>1CL1=Fawi)04cesdjC86)zQE{#tO-M^24ROh%8FW-HI; z*|AchcB5;jZJumqi<}esFe^y-7GVw&#^6J}91m`^Nm@qA< zc-QJ*eOGr+nR6?^{d{$euQB`N9M;=bJ@0xK>(7f{ndI}p>X74w(pmSvJPo|8Y89hx z`m6Th^j8)>q22mEiBm*&$NhD0H1?Z%vuUZ)#K3c^x>1wA*Z*`(KX5GViTc9sVBS8a z%;S3c%Jtz*DZ87KHipeTXE=Gw?!EuEy!Cc_f92|HZNBR_K2JCszOpvEWy0@*>R%PUN+08q~{`PQ8(XZ1PArDk{2^re*&rYgOKD3>0_xynPx$awUPuE`YIQO)u zUq(mti)qtC)?3__Z`J-D;$b)WYbOo=MES@zva#?QX)$aRM6{kz{hdN$|4tr9hDJ1LQ`Z0Gh1 zoKmSiS>KkI*7>tA*k{7k!wm~QiG(>xnp-s9SGdW~=uXOcOg*^ZTe}b^q&q z4_E2$cNSmuSh+TQ`yAoD&-eO-yCpve`}=;~!b1<-3>RH^y^ZPmhSz^ogJRXq*X%NK z@2s4OSw{&6t2rYn|N0F_}lLrJh$xfp4av<=CYRMx9M8$*9uA( zOmB(`-+SNawfB+PUr+2&TK8`4lUXSl0aw+(Z~iJQc2UmD^@i?M#m)IuF7vy?mj$Pv zkq=#R-}j;M|J&EuHP_!?v{HJW6DW}8t=Wf{6|8a$Q<+cp- zD_5(3&H3h$nib>n_gcSbnQ_LKDKj&|e`G&C+vB@lNA>;cw#ifH+a2EZ$u&H1X}zhdgO z`-RjOeksTcn*4m1?T5gMs53IMUvqP&f0C_}GY-7{e{JTe_c_tq47S`{U8252y2oDL z|5g0;TXW9dJC}C?j3czvo_wU zuhhO^ay;aXe!Rt{L7E+ik~s3xu_hRzkh!oe}dxiM><(Q zuV*fl`)RrRjqzX6FTTHJgv6caPFi*G(E7`-y3>;uJ};WUyPUyG;;hgtmD?v5J&2w8 z#vvk6AY;E^^?vQQj-Qu^YY8{b{+00ON>$CO51NviA3y!%;yV<#y6lRktt=qZIWi0cFj#fzpB->F10>mIo8#6qU`$T@{{}IZ!CNNCS=9S3(Bsq zw`s|z-jA>6zPrku_tgH6-xp20op9p(#_Qb763P$XJXQH+pZfOj(vH>PY**ItKPkC- zp^W$T<%hpw0=Jy{+Zt^1OV^HFZQrTr{M9cipWU#R>sY#;r@?0$M?l=1yLzWs3&NI% z{j%7w)p1_MrN)9eZgaML_>vm>_uplqjQ4l;s(rn@;Ps@B_m;f6`%y&4^iBFUpW}Bq z4nKEIR=J!nzwQ4w<_L-BGRg}7rfZq{e+r%II;k=K$kX7v{!zIvA6l;7x904>h1Y5W z=kVE0-?itKaOYn9wx+v$Awa?wxi_&TR~?2l%!-H+3)%>1!IaOs=xpKmXjyvy|4-RH~V zs+xaX68N)i`M>*}vC7fAlOzA^cw4eBrloi5nPoS&?`5cGOy0cVeLauL69219U#?bv z_1oE7`?Ced-%^)5=ihQoXI{VSUU_KMu31<1DIFF*XZ_jb|M3?BmsUw{uKnBIo7~g0 zVTHKdeXR-A&Ov@3MCvrwpRRnK=Ij40KQ8cd>YkZj?XM;otx=n^_wd3QU-P~SnH$W$ zzv=X)@>HpFhxe@i`7LuMv(fAA-xwD%|r*|%4^8ky{AD+ zgze+$tqd0ujK5WHd&O+E`$N=$ycxWg>s=YQ_LwA?H1OW6-pRO}A?M@&2;P;ek{I_d zFlFHREc1uir{T85oCe7gY#$hI*7L96nZumiaOZ=x`qkyD_b>mpT1T|%^##A@pRN}r zltszfEUi7w?31*DfrpvLfZ>4fBZ&lw1dhjV@?9DZFy<*pENDpR7dXszVQomEf`NYW zC(}RS>Rk7Dr8m`=R-0Kb^gr_;j|-?Tg~sBmY`F>}C5` z_U79&OJ@G44Djp<{8nyps;wSkhs~=pp<89q!yZsv9 zI=WWzsV`f+dqUp?mNWT3-Ciz9i3$lg__1`W{mc6Fxc|(a6VELvUgi_`^wEvl>+UiYp1HD*H-)v{J7%A zo74rdHRqr_bx&%J%shSI z!G(zTW{QTok7m7oS$gTNyp{eT?W?&L-n_M_{HBxTzv}kSl(SZMN@|&(t$$f?Y~`;X zhl+U%H>KV#Uo)>(U0%0E>S+F?>HE$VW`7L&BUGrqu13hq-tPOB??TzB$uDlcnpkBr zb!)lteDiL%xpsdKdmrfDVDz#zKKaAi2X>WaJh!UOAF+M6G<;d0t?|;7n;E+|W_xYmVGYk+b@A zu3es8oawUB%fhZ}yF%mcOU@O4y4!7TU&yrUKleq=KQ?cx{`>D&ywbOue^>ucpXoCtmRm1t+v<5+Pk$*(-G1sqygb*nl4;e4 zJ<~%^J%9Rp_3p@j{L{qeZP9W>0T`k(hIHRX* z3=jGBK5DDaKl{JE{Bdu8y!sks{lfIu%e!avl~d~P@-MmL`|r=JoU_+%X`j2l{q+1V zPDyKCif&B29K^YD$KDHHev8cMza%$3-Q!4V!)cNE=FvN1cE#K>a5|=cRR8DOKa1zR zXkPgK#H@F}bnnmTuPYC7Dw-a>vEiEQu87>1OCCjj-aUC%^>Ll|&$8z=RZT3;+4Zqy z@v*0@2U;G#t-F6dx3seOzFO}7*Nop6N6%g`EpE&aM&AO#V zY2RZKU2C83UU^@!ZF!>;Yya9*Zo4^?zm!;nXUea+QDyW!ee=Y{-2va%>-E-t-FIBy zyJJi9^yN>#T19yAD6Ht3`!J)+*Kvhb_?wldx0`W(s_A{kWP8`^#Y5xrm6==176yo& zKE0CV=2U*Kq>iZ^@{jk3xan>+XkA|Y{@SM*Mhd~^{x2AHTxUsNy!Yi#a_9W(an{Ys zHU^Dn?}wda+Vdpl$eIr&lkVJkocRCUVg6qQ2mBp1umAD3Zo73OPMO!&Z9yV?!e*_| zR>qA6Q(YC4H(b2_PN~FFH01dIzO%gdUhGo(Id_dq`M>k*>fsJQ?=9XMH*M|2Zwo)9 zzI|p_x6AT+&es5~kB@(I-uFw6X?|9u6g>52)+?XWo#v&_Qt!pM8LcV#dhem;<`lI#J){4B8_Mdva z+CTNWdqnIW`H~a&+qb+7Q+;%8)uB-Rz}egTs`g5aoJNTx3U(L@yhO>uYatoIkaO-+~&uJ&)hHE9D2Cc*XQLs zmxKR)30rJ8eY>?d?qAyV^K&oUE?n|ZTEyCP)vD*a>`u+k<6HXNW2gGc-uLTFuGjCM zYjQ^FsGi+TzFp6G?=4^NeE(CCd702|ohv_D z_dfCY-M@3T+}pzS>fYJ9=IkpT4;FO^$-M9WtK6~tV9pFkQX?A}TzyG|maLMyGw`*+I`Q_C9?%#Pk{ps2- z;aStS-|gQ%`~1SibGQBdV-b=u+t2>{(?5rv*spl5e>w1P+01<>B{HO?`}c&b&-VNB zfAjBBd)E*noBivfmMm)R<4XB$%(v0Do_pQrt6wIS2=P_zEeWkYTc$1Bf0Ezk*!!mU z3;gb-=P%rlr8IBj%+D*L@0+gGk9v{Te|&Dy;khUK9(>f?e?y?bly{f+6a(4Y9Ew46 zCjLyjw*R)@)6@L#KYeAKRbR}g_;>BAH3hc+mhW42{MKymn_pjDEHb|Jx9Q8|4_45Y~RxMrO{fpsmbba^Cn$z%i`Hxrsetip#{9cp3 zhvgiL_$h~F^3%3|yps9-`-A>pdvgBIox@$(AG1|n?zd)sZt!o7^BW&;{b$};JX`Wt z@DA_o(}VqYvv}o|IBysBJ`y3;+x@Yb<+|s=l0{!XY25q!{oa&UagO5ibnAaCt3JPQ z?vjtyYbOO?3$L%RR{hslHG4I`OUvt_W84}e%AH=zU@WO@uGe8rf!Zw61jX)~7x*zWn=gxvTcntnPQ;r5}9CcHXTXUOroUy_12%tJcFZ+RMw>j0$pl z*?o(Q{{7S5?N`fnZpwP@Klkz$&VN+EkSG5;tvWjD>edqv9L!h$zyEL|Q}!C= zA9M2audLfT^UJ*JFFYF;_k5NQd}_y(`rm%3+?kJ4-u)C(cMpn_dBD&TB!#`?hUw$}q-Z!6x9{LO| z+cLE;&9=MDRr&T@lDeOj;&1!V{>i~VqM!5rx8ZxQdAjMrqT~EUw?Ft*?p(Caqmo1I z{S_}I<<@uqPOkB|{_lk`A0sEjEw(mRk%xg1!kz!4<7WInUgVa3#JHh-^S}L@e#}2{ z!|hkf(PO`NF8(#;W7>~xpP5)cFXHdt@mlMTuzlq0#j}32?X}Ch|EWLu+|%nD(vNrC z5j!(w_NTi&-_pK1ZBBe!rz-mR&svXvDt{ksjhWE(N;pfvn3N?d4YAZ9Tua(sg3ibI0RHF4gRpdOPj%#Yg8YyniexGT-aH z_J~YKyxjNr+-slG-)wmEQ=YeM-Kqbsu7+yM_kQ*}zw74luhviWd$Ww0 zRhB16<$bs1rZx^Q2#bn)D758|}WCNcS+l<(4cEueOZ!vo{+iSYk`7QTm zzR6luJ=L4XI=FYWX3)x?F*Y_Q?WCX2t_*O0+%!G?{;?-{TUQF++F!DStGVy<>=prw zqu~;p{%Oio)u-w9?tQq)sz&Y^<6ik<&H1yB%PR2~C!7hm!eUjvX`y;)*=)V=GONex z{Gpp1dcWs=eP<$ad{)VB+gKqVqb#=lX7xK(p5GyQzEm?ZQT=iMn+p%Bo>)A!7ysv7 zHK#81swnrLuxYHU{kj{Mb{#st+O;bhw@ke0o}Fm+e_iggUwI*^M>7|8GC0ebaB^!b7M0=d zi+2mYFj>iMy64qZe-$^6&EwKZ?mBbzkC zg&VT-t2C;*GfQF`^mb)fOSPRjFZZT*PS>PrscL3*iRI?IpWTRLKhAVqRz-L1?WWt` zf-Y{gQGU^7{zgSQF5?6Lyx_`^qHh+AULp;*BY#f)m3^D9qd=Tdb%B};_w5kh+`rKc zy9$n_c4XbmJ$$(N$hJFCtJ;r-IVN(IaPQvqgOB~p*S+?Y8NBy%juk(<{^1@|*U6?& zAI$&k+<(kHdBNE=Uz8ueKXK4uQ}^K==eK{KD7nqLom*ah`;NWWs!qOm_22OAj=yX_ zj!oYrD_-@x*WKEC-KB_UU#{<#JEd`Z{*?2LJDc1@^%~nRoMO?r)EdnG`n}bw zPk*BwI}q~SrQjEXMg+UlIx*6-xmD3lYh5qU6{Ipj*&$#nWE?m9E;J^}tl=>U< zdu*ogNPm|zH~klK?|jYA?WNOymL&=Q(_B9L`(*#BXMUl|{ek9Bk1ksDb8o=Ag5rB? z&+PwZ&3ILQYR~!kFE3>NzHfi&p^Wbt_Uiiog$9a0w%_%iFn4~<4Cy(&>Gt|3^VybO zi^#s0_+j!&-96TKbEeeqzPtXq&3ozU)|%Sd-eN6R7nMsTUYvU>PSnmz37;m{C~#Wc zX#cADwqnXW)lV`r(IQy)6+IOMJ#xrxQp7Uli{ncMr+P<^q z|GzUgDn%lH?fN$FN$)u`_wbf|>t}Dhm$`dx9{a+nVf(+Vjh%P9_V3oJT}N!HPVI@F zx83f*vcA)e`+vW*{ZJLZT&j50*O@oZwO4gd`dPGm?wW8rxmn-OtM@vtbvwzV&zPn4 zSNL@M@jO}S7uC1VmR!3Vajf_~*O9PmUw==wulv4zJ@1wOA_i-n)mKhgIN{WfSNAts z+ub}T`{!I+SYFoQ^`Cjyz5IUTV{>v--eiTpcf^jr_5A4h>eNS*`BV2Ff4+ak|M=3s z#qwHPUln)TsJQ<{(c>MGqmExVwK!2|JGkh@7r;#uj^{uTMz3kA3bubU#yV6 zR6qOQ^i?NLu2p|3s&{C2OfT;vL)CJ9-ACp>H@MqouB)q?x9!gV)IBQExyoUA%QKVC zKRUy8@>G)>tNQ+Pr<|wD2j}*jX>Km=+q-e$de?^B_g|E*+_c^GdEYJGY5BVPzpsCl z=~-F!etz<&SEm2I`JRt0{XcbMoclqsE=L z9;>bxp+yU)y8*tG1rHf8csqd7jwr5YMXp)?&BT9~94b z+P?bi-;&#N)2zOnvEL#xPdaYjFV)YJpF}@i@k8-;s%F-&S z{>2X~F9%tegr3fvEB*8I-^TFV9aAqKTXQozy@_eA%PgjROOxnm`S#co(^b|SOSjBh zcmHAd6A#}@mCJS+2x)4zewWgT3}a+g$UZHrk)YkecrxLw`-{rlH#yZ}p{b!^EG_Y( z+(9#s6uip|<_rnCbs?v?a`wK?rB__HY(9C^KX3n0j@~3s^+)S=Ii{y<_{(#{PE844Yxi9DnP%wGzVP>_%%?IwK9XgSJ^kVN;t`F|MiIQ4%|cJV)x$gQ%71Q{Y!dVCxY?p;+x^eq{VBX=CzqmFH$EmUy}4_DypqcP z=!ff`l}+FF)lT>C!Bz8@D~g}I{`IGMXgwQm?2*eNOON&3DwEKD8h!GU#+7>&rW(G* zb3XoXale(#vte$dGvo4WDe?W9bD2-MxLn<~f9vCt_Pe>W0-h8q=TG0g-=;phe)~y( zc4tOo_b)bwbNRRJ><|5N=Z)m8$KOKFRQskabZ$DSyV^&w-C^n0%MYcEAI$o>G=I^$ z59t=~>oX+mwBxridW$Z*f03`ewAJ?fjbD%J?Q~?7K?bPK- zy+>uP=5MuoZMI0_{<+2Z%~vn^Zx5gKsPMz?j$@(H;fsIWIlIgM-1NokPhGJ-8M^(& zjg>wg*Ti*sl_p>R7x^Q1^-CdBKe1Q8C;w-gdgJ}3GuNB%c79L1uk+Yydz4#2lBL#n%2{_ol2XWP7d{@WPnOqwt9et+(osokHW|6ZS7y>H^4A6IW3{}Uz^ zWF1^(I;(z>`|3#shnXfMJ=-zA@7k5HKR?X+tF@lAC@?EXM;mk=eY$9Up{$~~SH@@>+Me&ykF*TK20^1YoFWr4M(X7$- znh`^N=QajC;gtgR|DOoo^l-7;Tz~%a4MvLtsv1)iPv88Ntki$4PxaUDFOmPsN^O*c z>QAY-F#HRWG772<*?GRNh0lIfo$$x9koV=PpI(ap`rqH)_T{$QR@X^O_kLms3=(4B z>U7|pdZ6d3MOi(E|GD31SUE}dY>3hU6Jx;)RhG6Zm+U{DvDooug?wjM%pAtGnTl+| z-t3NnD(sd5w*<;nof@M59jN|dx6{wqVSlPR&q48knjQm}_YLL^OY57NCoQ_PR7>vg z)wSvz$%h#auQ*WFmT*JOz>srcW>Y3-m3{G-I{W9VmTW)m;r;b(h1~&#Qw#_DW`8$f z=`m1wS-ZgF7|Rr99)kj{MLS=7o4j*%`0n)1Tl3S`Z{M+g=Hr^1w+t`+jp4nXC3i^L z=WgBW`}@8}TVDOIzbAj=+gbDHf74rjKJ@yZZ4VCS6;xL1e^!_O`|w2DjMlaH3tlFs zZ>?TCwI;Ri`^pWw9^J0Vt-kfL*FO9C_6PR^OU&oIs=p@Re17AmwO>B$4!wGB|Jk24 z{(t|U@BeL=_D+sx&k}oU=`|dmQ(uTr@KdSZGVRTU2}@sTGONwdh}fS!Z~8~=pUb`k z1b+DV;lEV=<_(&ui~ro4AZNXERi0al|KDHn7CEteY|PS1=Wl#tUac)w^Z1IGP_f%; zc29Ac*{+`7lRjVHvA^u^?JDiN6OZxcT)tae>@IE9>@#n_)sw%s-4lCtet)V;IawHJ zYyaPH-wpY3QprD|Lf~Qjs(Ag2_7kI6_J5nS=8E4^ zHQ&5jPLm##dHQWVFUCK;(`8Y%Ui;I$vpZfG)XjEOFM2H8{>y5$ZPAyvj(?AxzHIH0 z-uFHD;myb`e`4)Kdlc(7YX#+rwl|xcoo2HvQegeh%lgL(>eTl}>P+rAQFGB|=F`Y? z`}WrVS+k0-Ja+oZC0xpEQq^w1A3xghSMkRE=X*cQJ*s3Z8)c2 znZ@QgfAjhH-1o72E+j`hJMzou>87M#SNhA(r~kQb%F$gn?SK7g-or7Q)n6q#Om6=E z;`qm^i~IKUA5*({d;Uf9saL)|@?87nyU6$I*z1jxly9!R_Ts@jo67(1CH9@>(tJ4a z1)I3%rfsLEpG#PNhrjQ2|E7|2Va18p(r)j}E-HE&YR27Hd1vL@tE|`0Ps=`Y{;jdq z_B$`7FJ$;%td`ia&Zhrt)A4%eyL*pT{4rkrOS10zhiBO$lZR?5mfu@-Qq6>a$w|hDzU#WW-WsX1I_c-v~*_5Bhi_fP+uBPaM@oU?qU#p~s7b9B<;L-y90ciye9cenp_ z@2Ai8ki3gwK{~7U?0z}#aCpJ`dq+0s^G$D@xAsY5=|ctahhMAgU+F6cA6`1Mpndnu zi4(Ve|FeVXcH-OZVFDG4{#x7r-9D#%&N1n>n|app`}aTjJL|&FH^1c-rRQ}lobe{b zC{tqTuYYydg$`YCT+-MTalQUlbyfegWBFNEMgAL_zqwgdX_ao>wU1loZ?UID<%Z>Q zm+aTJL~M$!-q!KwowDfs`ia@^j>P{+{d4N4LD{{!!aKZfj1pU9Yuiei-q|(nzIpF| zO05j<;^a`yD|=Pdy)(Zwr@ixe{iH_T_((+iSd7o}GXD-T2ej z|AZ_2yL-kb`paYw+jFs*S*y={e-z#K=snlm%41iP&A!gxz4yd2-p{(%>R$gnzq0LU zNa^mL6Sv-5brtT2lU?t;p*J#luE^!jAF8gG#H%LF;S-wX-akL==glo|cjrzoT%{{j zf5ZNpxbeof-V;9Wt6OAmR`%`8`Y0CH^=a=WTWzyfZ@zB{n{9^Z!&=--_wQ76TeV$X*>YgQi_U`dZ^Q&%GzPPc=s>4du ze>ubci|5aW-g%$qeqsHEYp=e(zqXg-%No-?Umr!)PduEn^2y_U(|-NS-B)^Tq9L!@ zh7WU&on>3C#bv+pYSp*Uy67*~v6p_!?R(DjWbam$1}(Ae||4LclCp1-TUxU=JuQa z++MJ7d&OpZ|D(U%YkU0vKGuq=sM6216+iCx{f zpZDRd!~C+>TdyAaK5zNGdhr={i}|{|ul`zp`%KREU+THuilH+nZ~ap%S{(CA%IyA1 z{$Ih1?|)4_RaM)6;_p}C4AG37c-bFwKa1=Me_0!^cKAS1RhRtNnam$gMkK#biaTO{ z{?+f_l~YeWi(+59H#NTh)<%hW{i2s2{@y1PCmH?jTiensDb<@F7k~X$R0OSMFMu$$z=^ZAtTs6^Z|OLuZ|9*^+*K z>HEt4SF{&D@q1-8boc;hXvE&wKy5uA7cJBu;iXa(`Cj+GXW^ADZ6y+q+$H zub+Cg?(W3o^wUdk$IqJlckzPW_ctxy|KBBN_lmvm=_PiL|Lk1h!E1$12A$nJeVfyCuu* z?Zbj!v(DS!|K!}BZ++o?=dC)8$BE}w?x}yIU2k4_JV3u*;MroaO|!c%MumRaF}JdA z{%&9Ya~tiqd|&h0=5BuP(yZx^PoF8jVe?66s`~yZd%LsF*Ut^tpBaAL?|M#(|KGAX zC+eH#F#n#mJvA`(^5ykQw!K>(ADMQoSWozMg0a-ydG$N~&uxD-X?6O{gZc}!!ba zTQP5+*PXVSirnv#VW-b?>y+L8`F?}$n)@I9ML)~*1nhfIwSGrs)KZ()9sTNE{623B zxA_`-uSxoN@X`Okz%S+DnQMHdRpXbP6;Wic)Z24yeXj5~`;+>&FHbU^b^62M^=GGD z|G!9Ux8AID{ppLFC2l@m8S(1x@;#f)%rowJ{qA#FcmMmDor}M^B^hlv_v-VcY1iZB z_RL*$>pZLJEqi6*{__=?4JCiSzu&sQ(Il?E?4SD?_f?WTER|cIsoM1)y0d%AwHcqK z&R$h#a=y%18T0n@=C@U^w^fJz@Y7B9kKg+BdYERwv$T)0;ljUXsmqjWWTiZRn>cs5 z_WJHSn_gW0DWCPZuAqjkF8sUVWY5_jG`~FjFR-q1#f#hOpQrxkjQjgOKh$?s`5NyJi^N}V%(45q^|xk5R;Fb?+b!0o z6N}qr-yib{I+zkuaWvz?^|0iR_I2`BXMLOg@78xa9rq`0f8(aN8;e%-9{c-4sIzzK zIU4p03z^%|F_ggw9Ukxefn-p4)q zdcE~u^!dHpAA7uAZdUtscKew>elhaK&EM1yTK|bT3wrEJ_t^d~hBR0#%s2FUSB@-HG+A7h!al>MPmP8%~t%4^_ zGK!_1)1Cj-AFKD>pZWX!tNMLkU*D_vAW?jO+N<7w&x<23ym=o}VH#>v@z;C*;;n1G zZhCuP!dT~-(!DF!KUbB=cAr~j)_cBQTwQqI#04KeSp>^k)TvMVce{V%kN;)Xf8M9m zh&^lm_p&0lV14F2{Z~(IubA!PlNUPv-q*W&=em!73|H?j+5Y#w-S(rG)_*#m6jYhJ z$vQT!?0a!wvd0#a2^@@Hq8BhWByMi8kgtCG`)gR<-rir`mdigaTe9cEjdpuJ_mX~p z=Z&c$n^ks8E_PbL^!*}-1B+->&=Qr5jr#Jje#gg*R{s58UtE&qj6XR-%U%UuGM6s@6LS5}dG>|#e@$#m-u8aS zkBOPpwVCDf*6J=luATiPbot+>|5xqZC$>U6;e11_mCdpoKlY2O&wu*uBQsB4d~VRk z?svrtlcycBnezEUL~qXdIr|QOD_FDXlTy(&UFChBYxPY3 z`e;4QHE_*d*00AMWozaB{pg-QOgf=uOVhJA|7z1{`YH3DyQD?_(KY1@Ne>b?N^H86 z{=;Qi{nXUYla$uJtNN|${x$32w@3AV|FwS1*^qBkE_v?9XMWu7lLtG>M5F8pm*&!-P} z%^t7qZk$l^E?|Aa#_ttpHqDIOwdaLm#-NpF&t(%z}Da}MRWe7?Hw}% z81A#JI-h*O)%IHShgUKd`L(iX$G-jx)~yZixc%Ygg@03mp7r``ugbZmmhq?N>h80b z-+ec{)|x9Q9l544dYa|l%>gg%x9cpw{m}cI+()C^d(;=pFRzZg{WnN<8_(I#ZT(wj z|Jdc0Xtpv}{nzSvrekwuUM%1;x7+t`!Bml3jiM`S3tV-0i?qagk14eHl+LQ|wpg|) zPwGWVw@PGkx5xUyx@<~zcd z)~J-V1?I|%zIJ3e_GenV_f;uYBhCq)>v}T&lx+X=vEvS%zcK)lHUi0X7 z>|&Y7373mgGrDG-FjRkZfLrBgk+$u#YPE!b`&EGgjR!){?^~0sx$W%HX%_{J;)Bv1 zmtA_9l(-;1(T8(mER)W?RRQiHO+n>0rzQ)pG?=Mu@oY+<5GUuRO_PPsX}y0{HIqeZ z+mtPm&zm>AG&mK-lpd%Y8u7JthVrsSqKjsjB=7bzb$T`7h^#%oDlfCbRjaO_ixW}{ zW_re?e$SXC8?b(cm&+wXpBcINUOuj}8Z%YDIr;nBiA(Q5r;b4sI1OBb)@`ZYn*MWvB(BJ;)Yy`I|bx57d%Mav0ZIHtGy<<@-G z@HzM6MWPd;zN$x03X>1L8+hmX{o64SLDLssysQ2|Dnag%xZL&dV~o~YQ;W{Zrq7gF zx3o(%vo>)`t8L=UPnSNuK6}>J<*>Jej?J8pZ4#H>8g))SwM+FRTS&!p3DyI?Av&oS zZPu{JEHK)nv}WZ7k@G7TA3lDF)Tgzk zj*6x{?;be)p8Tvwydkko%0z8zineSdY~mVf`h-LE+(cUpiy z?R@WkJ;7Y#*9*X2~^;D*MkT-hFGgz4Xbpd)?n6V!D4HZfTL2l>GA2*>8>J zCTDq=A8mH|FYs?+u6=jqa;}H&oq9LVZpdBO`*VNv^ACq^mb!$ljy}H4?6RBA21VKD z0ZHAq=kH!SYPpP~si|r)=YyKutJ`nP_IpxmPT zKhDjs0+y>so&OmiBK_Ww@qd=6gQ=3Fq8E$DA{U`%11(`zWd&7+4J=A0w3u8j2rQCR znAD=+%;otS$#fi_kZ(ekK6gK-}kl$AAV?F!oD~_AdR5<O|$|I&GDC@_6$+!M1!B~csx8L2<_>+fDB?Q>r~Z?c4c_{oKW zV*9fYlqu&(W%)%7K(XdO^ zY8IRO7d_Sa@{7NDpM5q#=B;_#{`Na=?ZL*8GqxUE(Yk8Sre4jNYb?`tZC8(O%gTDm zv@u&mi#vG9?9-~H*CjhGCVI_!7F1j1dC9rcV*TXnd3lqUckcEpIxN{CJ?Er(ZlU26 zXUVR03fZj3vb8pe^3CMBR?_!%UCYs`@0vH?%`IQ{JR)2;sy#cbykf@TC37!muhJ0B z*6x(_I<$ZJ;x((Dh{fIGzBJ3j;G9Cj?2z}}eczWS-%vSU&rqFUQFNrlc}rH2yD@+4 z+T*L;Ei~MdxH1-KER^!Hn4s~*57%SxANwb!&6k1|JIianD;Jf z@R`iRVA0qYV57LhakWj~-+eZIY%U4Mcwe#3D3JSbq||5KBZla;#dj*AU%h-{-h2Iv)v))TgZYvu=-w@{Z%X zE;7ITm}DE2bGUq!U~9wHtxk@%^R!qLW;9jL{p2*Qq;bQAhifuB`6KU0s5^n zz8OE|;a~3jtnvnzpWMu)TurR1YH#GOeqMOtxX<#}DU_5pb{lz!EJ2NjRCb?3)K53}OdaChwz00PzleD>yaNID6?q-^OM&Y{Y_6^lG{<;q* zdE2&EC?u|#lAStx(iGFHLgtpoCAlVTiutZ69VhC}9=R*3^R->u(;pR6w3KZ-`1|ue zm9J_!FShD{z?8?H5i6=M%(zils8I8vyzX!Lb>oZsE?cg=@@mcUZQJT=->;v@E&1_# zNL+zwctCxe+;7(H?O(2LDcxNA_c%|k%QQK^*K;MK6~BM0s{C-zQhvJL`M1!WkWNY{TLXG;BKX=WXoqN15S@|dDOW$d~+WJ3kp0zsQK*g$E z+HE)YzAE2XEh=;FUZyJI)zjRkoPTtAv3uOrBsXTl4)EmN(CyIN2#no7vi2+4$$Y`x}*mV|IA%_g(WLVc%NIbv3cwb+!LJ zt}M8GaN2FxVrzp+i<>q)XWsN&?atZr=FFWtPgNWn68Ms4rR%>_>PzrHG412=_hB77 z`**T7EO@B6&?w>boKM#m@NjEo?0oRBd$wN3r(N>)398jobj7En?VXb+o<4hSV#;Hc z`t^(5l#=JX%6*@__45B^bGMXbUcT4)>mFNQ@Z;l4ww}G|WvMpH{dSI0osEaw>-TqK z5;@q?1w0y_pWrxhk%5nOIy%d$XR~;wtbMlDn_`!L_w!_CoLU~d zLx}yyi$kiLx%MnNK4ocd)BrJZ?u>g(ti2IkB>D$${+Wy|Jyld z{`SXzF6I|=P5oDIYkDteS%ZUeL4(0zk;Yf=W`$|Kf4x^&wl9D2;po$!jPhTL&f6*U zGDrTz|NV!b3SYQgYEc?kI#;?ru6}>>$48kFFaQ4i^L}aD{MbcL?tjkKH262gKDuw~ z+vV1i@71jOd$Ynk?)TgE^55%|FWtFOxuNK9WyGb)fByU2UEkb(bLYP*n;6{;7QMx8 zc5fI8vsmpEq^|d|mVfQ9x9WPoTx_$_|G8Vu4QtJ(@BQQw^Ze*huOq)hA`kxlZY#Cx z{_*?&?%%oi#U^s+&3ZLG+x+mmcUJ$t>ywwauiUhBzPR_DzuUWCrZ>M{fAB{|e5uFO zUa`2ES2fkY-!Hv?ddrf}FaK4qwX3kZzbkcZP5h&Pw;@7L)}Q-c(f4=mZ*l&YrJo-@ zc>Lg`a%8=3eoQ4rv03qoc%`nj7$FclkeYjeYjb@;O67^`)9A4zw1A*S99X7D<6J#{o*k^U}X5Y zFJ13hT57uLoO5T-WjUD(zde8Xz1sdwUq0z5JuEscbnm5bT*Sum28Dx@TAFq+sm_>x ze#-eDmM@+K*@<&m_4#k{Z@>7BV^znMxlfBFebsuUR=@tcMQ+P~$;Lf8U*6i=?7U}G zndPj^6w$^S$Z)QSacW}^|HOAo_8f0zDA6&wamV!OttUJ4%Dk4zGRL&{?s0!pf7kVV z(O-W5zRt>fe0;CDdl=m?#TtUH@n(1jIPRE zQeCCfr(9NH@qARD_F--*oAV?s)omB1uhih0AhEJYN%MlshopG{zhCr(nDVMSGNlLy zT-uSw6zI8<*KMD!O$-HxHt@igD&PhxS zk>~%tBg=nj$9fe_CkG8t<%fQZ6B!@oxfn6FNzUG_I26V5R>e7Q)~k5s*>Bcg_`24FFL0KopGe*8tExvo z+m?LYRNX78zSvT{xqd2h^6{Ua7VRsYwzr=D{>5JtU*5>5{c}2R`l9;o^b@b|mDrp9 z+H&D)4>RwkQhw(Qfg4;8EJR zKI^jh?5Q{QeEXACZ~ih~>bl(W-O`t)W+t~^KXZ2bfgN9}t9$Qe{a1DS_xS9mGym?_ z=Dv&mV{B?_H{W!r?~-q+4!3Wuy_4$yP5q^$;)b;cEW1Lr{)sHh4NZ5HfB5BhuF#c|dzTd!tsE^PJg_oBmGv5nq(pV`%|d5^E0 z+S}h#Z+hhWYJ1Pq&+i?*AwKuzZL5kh8?HN^nH(pz#n0yz zMTG*vreKv#R+lPgPOFtUo0gVWmRGK5z-S%zayB=2FJ~{m;z_fNoIe$h6<_8a;Cji( zaWL}7bIy*`+(_1K0dG6yqQh_I@?QUY=r=fl79yT8JWzwS>fU4KR7 z1&^Shr1cv6t7`sPX$p5H^j^sLU3aTw)pV2XsW&!X*w(&LNQ!iBSC)%cD-!Dl4+e%(N0P(_D}#v*mv( z&!KaDO=-;QJAcHj&wjhN;rwn{`Bd%D?|=6E+~8KY@-G3E-m*3d8r$+Go zI-5T)`ab_s{aCN~U~`1a55=GE+$4T{vRi%J$taF(UD7yRh5y!{8xl$<1Yn| z!kKDE7PCsscK#KRrk-(Wy3<@9qfCwrLsmgGPwfr{#zw=IQzwmD_)^)`t55vy4cq+p z^|SB%Zy)ThzrX!twY|RB!h3g9zLb3VvoAZ$s%LQuk8khV=kCFuu3dV1BuD(k|Jm{7 z>|2Y=zh3%wf6L{-UFPlHcgwAmU85IW+@JEMvOa46@uuq1&}%E6x#eoTdSmc?OUSU!C~t_xrOi_pkp@r*HnU;@36~=K6QaFE6V6$((HS@2llh z#SQ*fu6YJMiM-`sQ?|q2|2Tu%Oc~q#LcPZpS=3w0^OYX>bDMj%e`vk`N$*io-j|qXcDELG zbFeY?bR;jA>a>z_a#PT|-o4bVzkBMl$lFbPdQK))PX0|Cf=;UgXNRvnFuAWFXrJl+ z@Ogd=k`c~IqF!1P`X+3M4N2q;4W4oG4pTFa)Yps0uE}e#Ff=&xDDv)POzBZzZ1pqX zHNB@Ho#M~;F8`-$pk?9N(;sCc{(Si}l|S>nRi*yq%>v3%7bf&xa=O-4{Ga!!@{I*o zMI1we*6~Xv9M)nuu*^X7QslnK>(5`ju9fGGHao)h_aZCTy=mQd8(FzaI}{G8hEDZX zV^Gg*T)sQ=SAF$YbGzqfYU2yP+8&#hIa%&buFtj`W^KnVwb(}ceSW_a&^K+>4w3D3Lyphwnb7l%FZM17O>5SgJM{DP~ zR~26;tX}5VSLVFE>YUANGvKiV5;JTpF}^P3hFfj;8#RRkx|VeN!2vyYH3S ztcS%p^OpOaTARJR>b{O%5mA zI1_r_B1h3>n(mSBc9BxQG#am`-pE+D(daa5cw%$XF6Wi2j-4nvl*M~ytFp_)X^TA1 z?MzuFlVLi+;?k>WR`2JoF1t%<;u(4S!sHYW8XE*+9A3$VtV{q)-C6YSzQ(; zHY=O5N(!h-&T49V7Qr(;KF;gqvZc2VGcMivdD>59o_@=fDL$v;xW4=moo+E_WBS${ zbJMNIe%`K4Uo2L3G%fCog+0H&@3zdIqn%q<&Yf%X*V#GLEqnEiJWeL=lDMPC!fHJj zMNL|yrf=20Ty@hjL~7~Ige!+m6iOuXthb8#dMWY=8^_5Bg#F32Z4Y@`E z8_qMD8n6^5)wu*;?BG`Z&^w#^pz8xI#~J4`1kNzun|5dQ%;kH(-dlY=_rU8H(oT}c zg-q*2o8AS-s*o%7Z=XFYc=-O4}D z{KH9wS9?WuPDV~W$1k?watqtDJjow(vbG7CSU5h)T-+mfHr4R+(+!DSOojR?QztBW z_%H7B;W!x31?~iS9CEC&@7w#`HAKXGy5LNw+IMpz<&0e>@D)F~w^%vHfboZS zF|*s5u-6PXCu!Aw&h>~BIg_4U6Wk=_aZF(9mLn6&rt&o|o)vi7f>*$eQI}&%N0!lq zh8TaoKFgk#%Cr}67oD{aS#Uerty}l}?fdJ({pOb)F0Kj=-udCtGq=fCRz_>j-Bs{K z=0~bRVD_?3x6^t1!%+c}Fn+Du#5 z%R5ALbG+P@vLiz=^hihfebJdbGYjWFo3uH!ch8Q^WhQcc<{zKr=yN?gaU^(C%PqUv zA1g!~)*q+{?1@skRvogc^{&5X&E?w{_lHPd`y&%@bTXfeyS~5TSKf^7{+x*Bj+qy3 zYbhm47R}2!*3Gub$Vz)<;L;2ZNhT%Zhi}&0?q9P~WrgwdZLTc3jDIASK9bzHRw+@M z>1DD<-fMTshU}A~3w5L??)cDjEVa8dN%nj6>W&)c-L{ccSEXl6%Q30pJ)XPf;;~m* z(ZcCGQ?jgrims$E%Pnqs7G`u>b-E<)<9p}lTbbNQb7|Z2$M>{J%8l~W=Rdn1F)Hn3 zQZ9Fk*?PD3z=^YZf?Ps;rvH~d+2fUeHB9OlUxSa_+e5qK(xx-1i>g%};xoSZ8PobY+r3dQ&aY~iWG)+V zy=nKkr;A<*UNYI_GM&5b{&bP_)i$#pO2_T;tns|I{jF!rsZH&_cVFb2OF)>pk6{^w@Y`z~g%3PBxE%S(ci4C-$s( zb|TN5kKNn5@8ldQUa_9kgWU zQj|Y~+qtvUwa-LM`nh0d{;n5SJjG_6cwrs$pxl&Gk+)S$lyBbk^Xl^|WHw%(aQ9K6 zzRa%+9;br?w)gZE-RE7KFLCSQ+Bc71lv~!GH{SNVdetl|%cJl2bj{thxv|fDm(3TE zrf|D3o5dOv^I{B6^{_}KbKh57CpaTjJ!1pUrYOw~nqHGu+s^lqSZ1+o&w6V;@yUJ< zo=J;Z-FH0a+ov)6q0o#L)tK{BFGL)lu>SCe)t~B(6?_GSlMHuwglwI8jqTX1v}}V5 zw>?`H^H>Np3MfN@^6RLwSOsion6EPJMu=RC zjwp-qG4Dgy?@R1#oVL$(IyawwMx<@8>y)V6izdH5>Sv~(+j4Wk^`5trm8Kasf4+SC zdPi*g!G|A1JU@!|3;7Ba>swvgs=?gQ-YYe2!fS0t&`$DhD!Lhbp(7hkKK zmwolgs*E#fizBBmOsHC>X>1zvqqUrkV>v@+*BQ$w=f%lj)Gy@Fb2MXDb5>vQ+8pA&7c zE>^PWeB-vouZpkDyjD2>m*~?U>=sv+rk{BF|Nif?f2qaJOQ#;`R{y_S&ve`Cr7I6S z{meD-&D!nx+iOi)rP-afawcjRWgcvC*|>gpgjYn1rPRh(x+c#|Tt7tY)nz*?=<)H+ zoIDf3z{Gck0_Yh|ByqV!^@ZD0Sk%;|ZZxJ|^azer9p$cFsD##2ral zOio7^Sst3|wd!E?V!j})nT31Kvw6KTS5}_(OYCOqu9??%T=iq>e!4OAllftA(#?HZ%}&ep2PNf|AKW;fEfX{+rC8wFrkY7>6$-LdHat`gT-oNy6~1vz zii&dKNePe3F{@Sy8HGKwOrIco`OvBr)k}LWEKud2c%{weF0=4db&mL@I<+(2|0~Rx zw8r4rPL=JN_e;wX-F=(VWMmtS&V0%BvyeW`%dUN0^0n$|F}wEl+^!{zi?Y>jt}*qJ zGUR!8(Q?vG!X1 zt+0^Xp15{xcZqY-=VcukYgg`6dfBskfqBWX$5K6NLPDoLDKY3w-L3m6k?nEHw$sx0 z$~3P|USZV7alr8UEuU%G%gt_mi3;1X;qXisY1M*Nm8<6Xg_us=EnIng{>&4s3nLub zESk=AYRuLb%}ToUEctM;(Lq(or;iGXcD}zS>h0F8&Z9YV+T`rsJ!K!iHQl+Z#w$JX zYG0+%W81q|AKxnMtCHwXj@SAkGJCp8Sd~}I^i6;Kq&IB};^|d6G+E}bJKM8tuI7Zt{Vq#9I~KiAp08HL zP;jvC>YLTJ?t-8ygMu5|%#8hOw0H5C7xV&3|E za@Etdsq4L>j0%kwPpkTHyiQm+?c72=GnvU}+g}ID`knB&dU^M5Zx%&QhgC_UB?sB= z9*VxsH^>bD?N<-^=9(mKn0HGUr1es1f&n;WL6xvia+GA&Gv-OIgV!a~XA z(~gUaDKTZF%(30k&9bz=e@cqB@R`%_R+{A3WH6lWyBB#t& zY$}hWf%K>6yV;~$)tQCeI4;GOp7z$}Gg+7UCTEMjT*fs<*BypI{o1@)h1<5QJeRrU zgW{TA7rBTJVLP=GdM~u7xlUe?_<3@;O2_1-63-@XKWX%2QdQ2Gt?Sam{zTMt1Z3Z@ zNntS*dG7c)DRs5n4ZXz0Dy?e82X=NXZMR!9Rm^S9`FWyFftoiR_cj>_&Ud=TrF*b9 z>yQUW$HvqX-O)F;J1%5pdoDe5s@UP6GcAFP`c5*RD{5-?9OY7 zMO=@ca4k4h#MF4RndS?t#HMD}Wiu?YYDHPMMQ!q4*f_J)=l6sy3y+zo$VT60YDiw6 z*Lhd7&2;s|{-jekCF?9TQa*O{oa+)~naa(*qM7r!u!mK%#%bxtIvh_Y_-vjPVtrlv zOxGjNM=gP#hSTEso-bIfbNykQ&ZUc?oPEAZFRgleD>j^bwl}oO>TKxF@VBSW-cVuM zxw-C+SRk)+y3ULnI(Cz}zm|XWIX5}Qu46_?1;c8kADbMu9o@{L;nZ-#D`?8n6Fe;^ zG$fQ&8TZZ&KVux*SrN78jJ2M@n=|I_MxJe%;s=e?(lL7>!=b5tg_;ta z97a6a5sxIK-u_eB7%pvkYKd=2ig?(mtYrn;KKz|?YLoG?5Y_w?GcR@1CyUv*p3nUH zbWyO;#6>yJ^Qt~2m$QD2H1u|g-FZ@KXP0X3iJxrJD^s6kr*2N#pZqDlFV@s7EB%P! zi&H6{5z{vPzIgFue|%_!>BJ1i%{Lu5cybtdR#kiWHa*JHId(^}By+WwT})-chPh0$ zG@E&L1nXTpw=M8Us&T-Kli$ypxrM4m?+~p}JFDbdveGO4&aUl`%d|Fn&oxL+m5P(^ zcS^idxS`F+N9f89ItxVbWS|PnS zE#1X+^#r@eoA@5wIef8%E2jRebN$VK_aC-jbZHXiWY86x7Nqm~uH=t`_o??SKm07- zyvEdfep9V=bK1eJZx`2>g%-4}tZ?+rQ{xi|Id_g`j@;Z%N6P$S-lzQ86@`>OS<<5*KX2Byx0h8>vBy{!a246HT?#(`TJYcUe9>uTv#+=w#Sm?$39*yy7J&n)bZl078|s* zuNrs$FS_D8-u|I}5> zdV5P(W}FLIXZAc=;o`GOKc>x37TIL34^oV>EWXQEa4tI|VU@?8OE z6Dn0r`Q96T%<%1Cczf-a!*h;&U0#=G5=Ugb6^~7-PBGZZ(eAU@g40**+@`i@o$QFf zmJ9xDGLA{@9)%Jg6|XoeUF5#`c3YUv3qP6dIg>WLId7w0`|$CT-}?jRTm9b3v1P@o z50f~6vgM{__dSI$t4n_8<7 zd0B4xD!*-Uo8PnTj5<7N){Ve)KW(82mk%su=8>7C8omD<+rG)ltTjUFGPaqQ+?P~K zc!xc7@Nl@%CIeWZKQ-HXSMy*zRE(|OIlidj#ce#B&`eVcjk+}f5J3+bNp$V0oN zOxGlZYhS%rG)>G+>F~6G2j|k>T$kSHs&+t*OJF98$2IAgOIvJqF$L|mkk*{ywKGxq z$#2??-+*n=Y0fLpPU?u< z(z-vS;u=FwTTIlE)O)9%Khu>s^7-=4Ptkwl`G`#jLfwxapZ>vicEP@!zDLK`E}wX2#e$X< zoJ%J198z7F;>mAX_H25`4PP%+N$G{U{^`EEt>b$Y1T}d+na@zj=o4RiV8OGVpSG20 z{~k+PDY-6ceQ)%y*62itB-5zfM{f#oA)~+VRt|INpg_^N!`5*cANt{}mVh zEQz;oQ`|R%@OHd^%)r>>%*?_d@kH0&SJUYAagN_zx4zyoe5CRG#1Fu!Qv%Lz+iVr;bA>c26_VcpROd*5X=q;f01espY!nRTeY)5F{yF*BTP4obJK zdM2?>f$buXg`3~P70MI;izm%(Uv8(@ZCLPh?MXA%TYeWUw|M$FO}Zl?81nuNmsCvY zv9$}XJ~?$tY1Y)O;#2aTMnukI2;x&@GT~58`l5S8fd<8>g?wgr92dKHQ&B{&l8;7 z!sZyrt81c}RWq~c(jH$a!`17RmT44teG@vmY~QIK@g*mM zOQO};kxiwu^@G1+OwOy66y*`6_M7rDdKe|6^vXxOL={xSmtA;`GioOOD&K6m9OY9^$I$*qj=d zX(+?nCZM}I*{aFMEtYduREXn_vr%4_S<5Z^?rysJ>DI5Kv01;9x63T^sbutu(rDw# z-O$FjBlzkE(@4|UW#>iR4T@^)71>Q5PrX|ynVV_5@#Jy&#iuRPZ&vpHntIi`dHcq? z*uVWLeal{4yir-3b-|(d&V@uTM#n>?#xd`oen{J5@o<6L_T;^Z(VC9Qc^mE?-!o~( z(gO+VyS3hOZdkKridb0C$#X0ASEfEzi9IO3nRT}zpVG0s2}&$tz0I?BhHdB0pW$`D z!17p#ppr#ha?hcaGpB2c?)FIOv~AKbgB=i#T zzOgbFBqUjM@)$ZCy2!t{aZkrQLnoWeup{12K25Rcz8CuaDgi zli%Z1LV|1Xrm7trmzVxp?x4R>l-D`R$Bb)QU~5wN6xMJd#(R65T$uvboz;(6+dO&d zvN<9dQ$>^>$E@rH51mNP+ju3m##w678oSFC zycYsvKOgxb-O%2{&A|I{&7Mz60d>X=?K_!^7wPNS?D(`Vq-t^P^`2IRP*rXx-rgq{ zA3tx`(C^ibotbfxZ;Q^RUZK(>fucuR?RK_k6rIT6TcF|)yD`M-`)Z{o1vAETR}`-1 z&fsiXuateOA;4u#+mgZ)pTq6tsu#TKpZ{E!d+z1)7bm@s%b555&^wU_IeRTFv>$G` zJ1aHaAQF8R&I9Jl!o<=Ig1kto=y6-Zt3iEzGtJEW3O4{45Ij2Nx>X!V*u<7E!(=ec01zW6^QX+ml@l zo6^-qj_tUp^7+KJE|rqi=ORB}`eJj~Zt95>QszvzE=RJNY}KV}uN#?or!CKU^z~ShTZ0^>c?$n4f=ZNMhhw_AL{32`% z6YX_=97#DD(DH7=WG)Z{OJiV-4w2NWY z&Vq%f79LpdF=5SIEhV8Pg?2CJY2+3(Md~J;V$JRgQz_JYaq7fcflCpNF9jxTyyElf zBTvipb3gr91XgR$<~($7Qm7uIN|Uf};LSR(6=J&-XXib*9l*3??zbYOz~l8RD6DLb+cF<>q{27(;JUP% zz_E4w<}KOErCyaL=WblvxU$M($C~L@r#@R57=^uvWef~fS@Ge*7yQbxg)ujkY$AZ0=PGvf&e$z=T6}AkWIqOoyp;wa11_y##7Yjdc zn01%8LY!r9M8^`9^~$ZGo0SVgg5DWCU`#pj+WF8esh#WBok^V*EWr^I!Oh8}cCK(c zpHzA;v!=`@F`ewxvZEnf8}ybwH8z~s-Y_fd$ekyCOBe8k1|=K~+%Ix&y0u=F?(>}9 z^^8`_<1J5{S%zCbtNCGB$-DKiS#-*T1;qjf7k)~N5ZZ61T&$nPbK}7U^?9>YPPuLH zHWg|=_I|ft;`PI~t3&haq}K@--{Q4>*rL5%RARkLe(40u$3Y6u@2}Q-$0KOE(9j~f zKi4s2^>S5-9cLONtem%M*oC;gx#P3EF5TK-zRePz84rG^-nnn|Xl<&y$fwLl;w+D9 zV{GDdjT0^&J79E4UD6`w(L=*yb4}(x*|mAS@Sz`{t>&tha_Gc%J!(AS{arWE@@`&C zYp~#|Ooq&>URw(NjVm8deipdH@7p%x4;}|AXPr>FDY$fT)(6A2rn60@)8o?9r#WtU zvGbDU5~K9(Cj`!{%Mui7lw4`v9e1BAXZH0XIX0$~1-4=7rw=DJvaL=C7ZBZgK3H|v zL>-IVa2|27qdWqa*-Y5hJI5L*SKsQ*Qz&w`%M%iKFjH;D1nE?lSmHp@(E z>!N}b*OY03+pS#JzJ73R!?B}#qT50{5{|fRUvBGRr2hEZt~LA0`%$%)kM2B}Fi**$Ht3ZTM`}A;L5W3Y$3y`wp@=6LMxN~|nYl~0 zcyk+XnY>ugB}hilX2TS<;|uS*np_BUbSRzT>Ec?YtlXC@;^}fUU?%rup}=D&GWh)h|_ z=qPZN+hck&o0ov8$93C{3>OU!1qBLv1gUWPgfhIC&eGbIvXt*}o6_B7j1c|Ju3eh(&mt4LLQvT%yfr^zl0PdNoDu3Dp^GV4T;<(BD89e>g)Ht>cy zZJ64AEIsA!`SMG_mV94UbRE@k2?_Cylr$DJx%g^>mYSAAlY;5oqO55dOIBscmbPUs zTOP5~Md+Dc(D~3Q+00Ttlf~kCjFxF}t<=)EnsQ}|PjZ#Okx)U0_^2=iO;KfmmF8L- z-KDs+RxIxH=VXjiIVL!5->is2#bsQ~2Tuet?_PRt6Wi~7>RLOQPIs_veh^yFD3Y*1 zLPuC3nRn`gr6LRc-r5|TQgT;ZR4{SQyvghan~STwG??>2~KPRcb|71r@!ScP7;B4bQI4d(MPQN#t`I>8)Hfec9p5JmT@1dz7Uo z?VGNAPqQ}V$#%)bODZPL?9^mA`RU1~`Br?wUWKI=&4#k=ZLbSMdRDK|d4Fib^R+J& zKA(y+tDAT`_tKow1kc;m+mFmTa9dJh;B}g5}NCM&iCwOF1tvb zI)*(r-%d!0(_F^sR(T`Bt29lZv~tZ0;=+z!p-54gn0s_7-TU(aWz zz|q&c-Et+n)l6q^3i$9vEwHXp_u?5nwPQa&CN`c7@|)z${N`lFd|7v^rBz!ZRTvK1 zSv@E^>vLvR`$fmKy*8;;uZ}zw6fQa+k+G>M!RUPDnofV!X<;ib@Yx1l*daDe>lH6%3b-HIW7*8o;NO;eV6F4<)mB;3#oF3#AB_@LzTCZh_1d{*k)GE|yCi!< z>hf;(EY%1L4@x$=v~_X!+&k_9D}JVNuTATW)Qdcu86Wwu>gk@hZR)*?-mbdVziO`5 z&L?K&HI~&zy&IotOFa%3`?a>415GdEVK z78;y$z+6^cO3Be^Y%XS-5$3fVTlB%b_JZ=DlofWt!EyP~pV-mB%Xgwf97> z&9*V>a-X}bSlTrE^n~lt+hw!DmS#uiXvuAtNeo?OG9fLh(S_CQWVm`|=b?j(*%uvM z;xWNr?Ia7QR&@l=8wVFT)|U&LeU21VRmTaRe_W%_-}qkn>GOiA3wxEnPIH$De`_+` zSD4|mxgFk%V)kyBcJPd9(dVF-!cq@C&sh4UWg4qVc+bk4 zXzp@s>Xu%^tp;;#Zh4=x@X9;)^5*kcRVCi#k*X%e9M@a@GA;cqy!8#H$8b-Q66(=t z)H$PFUahOOBRg_wjBkIjh4j(t@AH22DQK`A_|e+Av1G#C`*|BXVc${m?FP3p7Oi9x&NkJ zos?f`O2M;llRntwT1;iz<Wd#|dsl1AAARG|le>%u54&tRdi&3` zr7@qKf4-|rEZuGur62IXuzzCH?uv~Evy&B=d<2#(aXQ?3{lTW9=hu_nt*`YT^>QjH^1~_&xBo07tU6EblW4OmNnDpw6R6ExxMTr-wog2^-M7j zF_|Q`<4KO_y6lgqIDgHY_>N~<=8d&Msh&r#W+y%}dowxfWc#e={BwU+?6P&9rz*&! zB3pOH=lYq4FG}aIr>frQDG<1?eOlHtSnl5}KbJY~-o4*WGXDOrzvj=n%i;$OKc_zp z-h1@m$$Lw*E-~jy!)G-TPo$Fc0 z%&xJ$E{yeGQTFqr{MNnV=W6nAzS28q9{u)zS-o854Xu9lN4FcV&bglI9(?Rf$jddA z-(~prv;R$fd}PUWhQkaD=a|?p9{=d&nzibb`J^Et1X^7&>y?;)S~(N*gM%U&K9y@S@eAu@Wfcc=Y5B&LxHY~IyE#MZ zpr*!#Hw$K764XqK;%EE7Ad~jRiCs6>{ABvfFaEbT{PmM9?$E!G;qQL>*|GOVegTTD zuWp_VF5CTUbMVCO8`5|0r^dOdN-gnUVawpDz+qnNWEC#=*kt}U(T2=b|CJp7a4d!oz$@yPw=~Evh8P>Rnp$p1XT2^e@`;uDd?-=eF;zYK21-3vg~Qf z-t@GzwCCx(7e$RqcFJA2!Ww!bwPcb_mG)A(xoO+3N53(M*;(}T^v#qNW$Tw2g&TN0 zNSH|M=9ddc$rf3No+#=md2 zvH30(y6jlX-zrq+RJ-)~Wzp=+=%KbB@-#&-#fB1dIqR6XNRh7Ovd%e?xnx}m}9P`ycu{LS8_h&(So?baQ}N~OqU!SO`bQr8nm2iOeVA8Ad)1N4$6UlCLUz}QyeTqhQ4jU!Kc_n7 z`IfKo*Z)OcT)W&~;P%QX%O6{6I=uRPt?HRg)H(h`j79rYUwa<9diL$)TY_^gE}1mz z@Sem~PSQZhmy~O&im~ryf-<<>+{`UFxN@jDM84JvZ|Lk11bgx_-_1^8LXU3yS$B6lsWGTD!3}T7IqE&S!Q44;^p(^FFxwI(tER z%x$J~|6P-gEGzn!nVDH6+i`bNSo^cwlBF|28SyG|D63?x9VT? zTDGNuDIcmX`u9{GeZ@ZWB}b<;fS`bJ8TuC_=H0-HlC5w4m<3 zsAjU)>svzN*S`K2GhMPw{aaPR-<_KOkCn1`)lb>9a6;Vutx-ps|Lv52`M)^IZrt`%i#YZPPKoBS{=F;HSC{wdpU1Pmn*AW@cZ=_>f-nR zS+{@Z`cgeZYxR}e5B1B)&cADaR_M<0lEmu2t%Zd$x1L6StC~`>^IP?T`w@wSx>C1I z|K{n|H|;EMUU@emaNqYeFJ8_{p1*763)!__b^pySKJ?{!rOvilGr6qx$1R^+-z_Pv zd;5lK$>z_t`{%0NJ}!CVWnkHQEBWtY-^*7AOC(4nL`6F4E|u?J`Bmp-b$Q6v*c{8< z+-J*+^R2i42`v91t6Qe-|N4*ry?ejy18;i?*|A#LBpS@|HoW1+{i{DOseOQy7^QItAYybTYZohu6 z3HcvZZLO#fkJwQm{>i>VqUx>5I^BD|t>y3kZ2YzL(2m0=0=C?Vdh$FqA?@DX)O*hp zwkB;&)xZDd|BV@yGb(rNtcN7R*ekdHi+Am*rjY;N|F8R| z*SNRfT0QgB|8LvaKOcAFvc0t5_xt^ipR4`9N7R3+|9wtGw5i^AD#x#v+JX{oK|S?+ zS1j**zBglXRjG5(5=VEwT*KaN#}0oi-Phdv-1=PAu5-n6_P#p!x$fDj(hX7B^Y@$Z z=c{zc%Uxt~2vi6bzv$J(pu)h$w3vsvfwyMs-dCl+WbfJBlGttj`+m*!$J3RI&&+@1 zR8g5zC~i~{T(OpaUCiD1%46nyv)6vypE!B-qig@GE=-*hckR>li`y$^&0KkO%KW>L zr5hK1F0cDpACq={`NFS1ZSB{-{&)Rn4d4IYHToB~{ICmUVl1oPc-Vw-_m&CS5+|&d zD>58rWa4I8cysO5^m?zlUjMJ^7U5Aw|0ZOt-hAzR{)Xk1GWY6?7PU*4haX?QW6!&I zm4hA3+RMLg+U>t-+wHs0e%8zV>U$ez@Bj4lv-0ZMe3xRcng^dv3!d*^*c^UsV}t&K zV=`9r{zT38e*b*)$HW(Vb{zV7UH<)F1+6OaucEF0;`dmr@4tP!yZ`q&)AX;~cBva} zf8*YF|A*_V=&i@%GGiVlr#+6S`Lyr0CZ|F>`F|G)q8fBXLb^)mM7fByG>{#WyDn}TpAry@^=!wr=!E0q8LRA{I>|7-vG z3mxl!+nxV^Y>M#r`)?DJoVaJPG~}vGVzz$rev=bR?fu`s@YM(;gjYocQ8ay#0+sr%!Uf z`s@9}+$(S9#5)@Ve;$6GSNboOcYCvCL`0SB^z-xQTHbKHxi#44w39bG_tpCEq8Ij- z#dg15w!4ghiLdVZsVk zrdAFfCIKFULjnwkc@!AtC^)w_zDW3+W3}g*tIV#~Ig;I{<}+Uvs?L^MtF@icdc&Vt zb0P{PO>7@ThOqOu38}~h{rP_22Gh#@XST20)E8a#^kcc10psH4o*stcLt+a*-_O}^ z<-IlXxN~zz@4*||+KrA4!OjhQY+EKQ<;vVWH{kNJbsm8UJP|vK-u$@HBH$T&ql&lU z)9Kcg|9?wd4CbycWc>Vit`57P?{u?H@kU4IOg8PhL?-HA~pZ5esS#PvcuW= zE7y4&?ED-WvGUQbJ6mF2?|g1@UOn2?f9mV=wgz)gm-z-xi@FnXX=iN6Wzm$KrCD*6 zDhrnP_B{Xp;r}FWdDqEn!ggisS+P%WmPqzwo_R2-K=G?(I!`( z-8i<+Q$KXeqxaJ9S?6!LpCQ`+I(Pp*$6WDsPxSxuC)`)neH5_v&G+4x9QL%Q%Px~x z%-1_{avi6_@|VZ|iTWRWV|%pGUc9z5K7C{_o!iTtx3zCY2br_-*%`kMqtYZ{Onm z%3;;h^AaVG3Y{-2wS5+I7kqYO^&|}$=0ug7JyY3CwTzXR5|~9dONl!D`IyYVZ2$8M zJ9%<{e64@(ZZ6Bz+t+i+k%fapefxqRe!JrrbZ5;7oNp_lpz^x8_^|5Vn-da3XK6Gx zw(fEKF{RwUA@)bLc*h4%IiUXp8imyI%*6?5)QHNzTV!l=kb(=hwTL~`8g~n6f2%~+u&GR_Un@DdDp;K zhraXQX()eqV$rtqa(|CSy?L>w(0jSfu@6@9Tn-k}9E#jZ@quDIMoho{Cbv4TTQm12 z)0EAJUcR{O@=^0m)vF(J>jgdvRaCGZK6u=S(>(Kf!lSIOHYLd{oJ>m&IchK*aLL=8 zRI`1ZliAd&o3Gx&O}t%}T!JaFN>uwM48t@Jv#Kkpq?w)H(RWNQ|Ro1GJQLP(jj z?&fM`N$r;lcHid_eCE1_D~em2;q@QeT|E1r^SzO)m1#Kdve9X;X|Y2 zNhI&e7F&aql_yOrCVS;-@SIvG;?S)ilF)C}VknhjeD>m};0ZS_#7*y0?7XJ#-p6mP z=peF_&tsWTWK$O779Ab0#&LbjrMETU-@KjUcG*5zg|>$;LbHq=eY$Je*KQvQ``1G-+kMJbEh}Xdj9U! zKWm%y(>Cs5NNmWmyb#ZrHHR(3MJ2WNMAIDCH(s zD}A4O<>R}b-%94&`^7Ff*8cq4_doVBYv%Jl@A`l7-HWtuGwOnOn3`Vyx%d4%ar5UN z{_n1sKil6l-u>(B+~8k-D*nXok-GDK+kLK0ced_-{&C{F-;W>u{a5sT{`o~`^YT>x zh51&s&b_BvyLM@xUhdbeTaTH(eU*Ckn(jN%N8i-+a+mR$g{76Lx%ueX`IW`REjG8d z?l54@ILvUk=F0feZ-pX^zXiPJ@c&o)C<|7ejN)s_X)iFxy|kOE@2tVHK}%$djnHA zjkX_o7j#fUkMqLk{*E+l(|4A^xApGN;c1w>YquW9)UU zw-!BI_iK7(j>(rDB@gF&9x4A_bFbu7^4qoOvebQZ+TS|6Zw9AMEN*C*VV^B@QDvgSM%(AQ zn+nhDdR}QF{Uv=n&n|&KVr>tyC5uxw_kb?Kd~pw33pU=bq1w>d1=wr~ciqwEi|<`tp zdjEX8zg@02KR)eu^OBhr`Q0<8y~s+jnQ?a7y&3<%E|>gyzV=D~o#_A9WhLL0^PP(; zzWU|WJI&0*z5n&^q@S+d_~B-$^8cB4|BEZNRXwY2^*{OJT#vzFo{#k>UwqR1H~;3V zCv%^^yZm>DRq)&#eAgYu_7KzrRm3tN!`>?yvjz{JB%FZ)#RqaZ_URjBh{YA3Oc~jZV&--Djeo z-?3TKv(`^7PfpG+&CLJH|M$=T+W-Dl@3&RYbJjNf--*v}eOdD`V$W=rvL1mx_Fr{; zU*_+9y}0yi@$}Cc_6D`gT!}iVIY*{wuk7gSoFLcqUdhw*wW?5nE6akYdkkiu z8z--ksqJs+T(Qa4$@`m_%#@3dnnR-hH8cERTG0}!uCOX?;`Ql^nm!0kG`^l@cfPMG zX+}}j#*4hu-%q~oE*|>u?tz=1S-1Q5SR4{$(Xeeb*vu|=zByo2@V=KBk`@ZYGpVa{Ei&HdoR zhS@)FSIk~nb^nUk^jTbI-7n|!U1D<&)jhR+AxB%Bo$v|+=K578{Bxbtg#u1izECTE zvG$DL+yD;`Gso{PpN_nk!Yrz58<=_UbBs#A|GZ$w56bu1&u+gia&O0s_lJ$0lp@Q$ zZrIJ)8t^xtCFr)|?*bjuwQ8@{FFDw`@kx93WLfE@RmO&X>GK;+7VhchoK;~L@nCwo zWrCpPWy@QVk@MS^oZw)sKb~{{*l|sY`r})Yac)M_^)u_{O(Wbf3<9qKiFAU9n5A(Ir#V13x^-|d&82y zv9p@3{2SQ*N7XK_EA)Wm{x3)FRPC=#|5x|d{(l$;gAUt?-Gv$TY$p~jYHE0?@QI;T z+di+}W#3VKPkMGPxl!ND|6cy{{RQzlsil9JZt%SIvkiK>`MK&bfrZcS7?rpD zyZOQP_01UvQ!It;S6pAsXWVowj7jNG&w@qL=agK8eBZ6O(duS1jbsJfm>u1bdr{^CebYe)(SVbjFj)+s}^w+Ig(j*zL06t#t16`_2Epi+qo+ zE9#BC_xbClt#|MKTm0UB=B3Yb{`0-IIUT?1;qkw-O=~>ox4*y1EZ_h3)6)lkO(*}3 zy|avOePi~OXL)NgbrXNi{u^203WUOxYy}SSV%CQ%(`YsjLl*yi| z+pqn6=e!#Q-%sw9+m!$Pck9;Iw?F>4=ld*nz4>A9nLnR=*%QyxJtzL|;rH`)AG`kf zQ(<+@`ss`R#XPnCQZ4)Yw*J|raq_cQ=Lg^Y_rKuJmb*ONv;VVR3r(N?_}S?ffAZga z+$$-+>;3nA=T7Rq|NisjmD*gLy7{wj+pOKXcWJZk+pp*HLeKwtcH7*#IKR5JcXHkS z-sY*@bAHZjO4j4&7T4F-m)AGfwzf96zTfKp=jq(to6p?H{CQLQzk<5amBN2j>)x_| zzaJWUrqxW-GGoc9Bh{*R*F0|TwN+o4v1LMW{x9+%bjV8;FkvvdJVRf z#c+kG{W*8(!wp^&si>twYaUN~9d(UsU)|;K{o9`vUaZ^wMT&Vr1%r3`@291jf9t1) zWsCPu-LUZOtKH`-pU>KPq(x@d%=-FQ@Bif*bg4G(>c98lZ@Qd|(h+v`3}3&xM*pW@ zFF%%v-G8^tm4CJ#p?-DG*O!mzbdAAfjQJ72xKqv_Mr-|Ie>j_2tU%_F29Q zeEctW!e5EppM`a57VVcK=1WZ1)BkC6bt(7yZTqcX2md>DTiM$o2p(<`2h|396m zI<&;j#vp>t^;?)E|AFS09q%qFnto>#Z_K>&@w13cj;J>jRx%h%e?^ zeSA+vtcblEtpC zxHs8M=9m~kEpvOJ=kI27b7goM{hx4~{HV38J zTlDs?__1_^E~O_Z8^L4k?6FL5009ybxonn=4m=j?jJjp z-wXbhS6@_P^W&r9MXir*Z@%5Sda?Lk`}b1@#{VA1#pw7Q50?EEmNvV8bI6&?9G|Sp zA}?{}wH)~xl>E#3VPkXJwa711WzXNwP@Ei*ujcVnI`ia)I>r9)t!v-c71{dk_5Ivh zbBU>B*O^+;%!c$8K0S%v8Z+&@%d?T;IuTx*1UfFDX_SLl;FIFX;H?nc-IMyfS!S{CB?hD82IvbZQ@_aV! z{`%Z+`FVvUPNp|n%$hEVXC&!;tp4`MX6NlqZoj`NZ+R%)abwT+HT9cKcBk-Y6&ZzU zKDx27ciBqLLx*EUPX|lgyky9K;mDcGZ%Z@;Uu(GZt!EONuJsXy8**H(j;w-<+JEuuX{1YTPQu@se zeRDdb@3JlS5YUQjy>?i|Sa`XpRmR@7#%_D;X28(pus3Ab?uZE?6LlJB|Ok7EuSzii`y#q)2ZxtV>)gIu2*k~n%(5RmCV}eEV0i2*PQd~H(YpX7X!{I^S~aaK>q-i5QS)L-)SxbwD(m$N*4QlIcYwLNU!g(;i@ z*M720a8-QE__0Y|^uwd``={Ajs=nLvMSRIaA(dYJ(2dKFy{rrjwkWr#YO(Oyo_26U z^cD90#|oCKxMiKRUo%DjIL+B|d__X}e2oPfHm3|XJh<;v9xwEC@=y8C24@%kd6*z^ zd4l}I|ID^~IR1bBEl}rJ61%_YWopjv-!>L)YmPrVS+E@YA=bAu{}lY~aL7Gpz zLe`DlYYf-;S(|_PW?=0lxAm>t``OIdTjs1SihPt+@vpu7?2%xpf1jrBOf+0xS98hQ z!{vj`f4-de%s0<2YI<^`&f0(5oISI+_RdYUO+WQXcKeG@w%a%S*xSGR`(O8eKi7Z# zVt@Mob{k_pj!b;^XdwdZXMg^6Q_K zzT%(%{^FM{U+eTLJT33N+H(K2oaoE*%TGOi-8udGvA@xeqVGR?bm#Gd)cAUf>*5mT zGk4rR^Lo#mm>eG+lczDYXVvV|jPL2$g_V`1h2^D{mB{A@FXg|fAQWsF|L)Gq_^ZmS zukHF1`2!};d;M^G6-#L7$@i0;-q!@Dwgwuo9SzMZ9I9p43&H)hj+Z+#oG<@b93 zoz42|h0~tTILmV@wD-j$^$OF@{l0T1#U2yARe4-Zdp=i@Q&3dfS^K7j_$@hJZf8C| z7i3ViTJ`$OMiVn`CC5t_i*GXBPV?)=9Bou>&i(`BXU3ST^xvcv9 z%dsQv#+E9%*wF^->;>4WTu*dOwEn>hyOPJvA_Sa-u&hE@H@X`FNfQ_@(Wgd`o!Me>$ymK%z{7X z!|rSUvlIW*|0Yi^p1<(*zTU47t@s+z=w0Kbq`w_#2RRwklNV#LENNfz5Ugo zpItBO*w6fO4S(46Uc5eDf6rfL_ZbuHu5aKe$o|#ndr0d?PnATo)BPU2@qE$MMGogqO%Phx+*G`ML&4I6nL9YvsW*97WH+A-D14G8z(3D5 zH`&H7j5)V1WkNiMMS4w`^qp5{x&H@cO>vN2u|?61TOH z@(+-ZxR}J&c5s=&r~8M(=Ny0Z{*vnYbwZPPPTR$+PFj3n(}qr!X-tZL|9|;Eal^9v zCyu_ny!zMQ9ofY{=a{)Xmg%zEQj~h+)Q!^6`(NV@H7>p%_xp3~(UlrfIT=#L=TwAp zep$Ee$Vz;fSf766U_!{@$m^lgKWAO|SmpJ4+pfse*$LM_t^SZNZ2T;7(abdml>gc0 zJ?dX2RlMljr6)_Lm7ZaTyH>0P#*rgV_%%Z4qqS4F7 zh`GxqRd3b34z)o-Y%sExWl{wXuCe{GNo3A{mp8XVxV&f6IKjYI(>?3r!aF zc_FbK?8yxI$8A}ol04b>+|#`I%sqyCLkjDK9ld=LvdQlxeKwzQlDk(rL1m>)dg}ze zBYWCi`HQ#2WzRR@xcRGg?`@uAhV3jRN{uP&0|e%#yx*|z#Drx_tazOEH+|%J=oYfI z>e8CYVOuY-$Z|ZI7Lt9Slr2p?^S}8on}$12pQ>)jRk~fsB%S(L{r=IeZ;Q9)#c!Os zEbg>tx2WJ;{*cv|^j}W-W_suVtGDi>%iRa(b)3CA!TF$+h)ir~U7H+c zEPS+yDR>W~D$kttMxGjX7BU3(E^3x$wtLYOu!if}XRE1GQ+u>eZHt%pJDHk1dHU@K zPh+j$@O1Y7v0D1`e6W+%AvXDfBx4p0R=I-yr7s+g2bkrFFyyb^J*_aiQO-kdtHy`3 z846n_uyNjA;GB1Cj)2F(E`#;!Yy1?r?=mXY|-&Rl3@ zV&ENcWRoECo+O8S))vnm?Pv4Fu3s);)AEaEj8N|q;B_z(Q)m+V5F{FEJ#%K}q7{Y# z^Q$bDORRMmaTVzr--AKB!_tvo6F;3VU|D!IuX?k-7A z7yiH6Fo{E@ajp2I3od~IoV}Xv%mNb?KNPIr(s`!srVlQ^vcn&p=5TCwbi*+JiP zjxim)8&~N|MBM$@CnCG>W807a%hCd>-cHx~B|Rf&M#K(hWAz2wxc2|m6;I@7-g@(C z@wcntpCxC`Sj}@FeByuk_1`k?hu=?f`u|M!%A&if_Y-|DpW3|3?v?e=>-#MBK5Yq4 zY<}GO^5&k*ZD;+i--#)$n;zvoIpy}rk4Y!@y)(097xP-tz z@%L2z+27w9diUrZUY7h-?n1kjCu%!izj~wo>|@^^gToBGW(pFjx-JIIr}h8ct6iVI zT~_}7^RwE|k3T=3cB5|B^!;3M*G_-l|F3HAzue`)(#v<>E)3e!S=Y7p@PDuGOPAh_ zODU|})BT^nU;F8u6DPvfZa8@=>2me|>5{SB{O@u<&9A$xef#?A-G{$C__oh}>D}wkKl|QP{<^y{cJ}P4 z$*I5orA5c2*gZ)v&ND9EuOnl<$L98#*MD+sVq)&BJ(uQZm*y50Ru)%QRgPlG%jCtQ+>JU9m$*T zE9!q<3jcN9`CD~<)Fbxiv->qw`Ts7Dk9xk~cK*E`o7LAvpMK@dz3zidEytp?E3P`6 zCzk$xe#B2eSxa4Wx#kK@Ic?idL1L$EzXtqU@%*@84S(aN69-eDGMQ>F=zidNc)q94 zev6ZfQyPQJr9{)NuK08>V>-nH_y?J zuYSRGYO~hPQwiVp-H>C5Tv&hl?N&Xj_=NRcu1B{qSSeo5J6#=U+5RW*UjFPGGC6xA z8LvNmIj`e`f1P{#lcSniQde5MwmqIGEVOm`pI6x?enNBf(?6MAtITX~mOc5n>S~~9 zVC`<-dH;WgAC7GQR$(!tN=pwN3qKhB$M)|Yld||Z{e90WgJa(= zoHhGi-ZAl$Qj71FpZoo@-fL_9`STW*Q*QUn=eM-kU=ZAY@d}?v*wbqHO|#yucpMVV z-+x#x@W@J)mp-!&Toz${zIZve$SRovhERb+LPB2WE=87a^5on7J;G&C@Y2m6|2=vf z^)G4vkM()0)V}SzZ<`+f;`8gpFZXY@|NFQ9Q>EG!Z8099E05px7I}t$t%*OpZFcr% zzBs22xgw(r9H-tH{!d<^RJ`H&cX7@;`&rk2++W%5aB>w-@}Jc=t&eYN`ugnk@_lMW z{G}^at(b9J`re}T-#RUS{8#^H74ud5d(HZF3aKxuf4)ypyrq3LCg%N@KOS;wi|$L7 zo}akzugkxJe{*upIye2EfB%MoS$*jYotmv@-#-5?{<<@8$-=ocS3m8z@jjMc-u4{x z&#SMhY-M@hZmG}Xu2dCvJ@PCpEvvHl;vcKnx!Z$lcWiK#f9L%@i;==b> z|Ng&oOe((b+<4nb`}5k*wW93i_1X2em)7qVer_E7<0 zhhm#R8)F*-g9g9x70EA0H=TaVcDA7CeszfOwlx~fa<+TJ?me9S{Flb(YEe(OL&5DY zXMN7w)q2tQ)gtM;My2cSS6e$59Fk5sF8wYn;?|0#5!YV5TDoK3&)@&9yU+N&^{za-?yg&;PAeM}rTzSl2^c-eexg4}mSr`EU!Vq)Ag zH{Y#Owz4sJ_CDElft{+A(1KO|0Sj4|{QRJJ)cmL4(x+-mmxa_!nY*t^r22Nm9L^A} zRgtajo48KBmRa!qgy^5fxv|bF&(3;!`nNvV&ULG)lrQ>IP3tAD=UZKO$6j}85m7ff z=%~o*w#DN1e!h9d2e&Sp@~g6z*Dn6;(ZomW4?QEVT+HMDDQGr#&0Ag;Zlz$|@=AfH zZ_B6OzPJ6`jk<5OcKhr9zTE!uTcn(8y-e>|79Y`u2o z-_v*ImNVk}Wv*wamrl48(%^gI!NMd9|L%z)7ROw8l%!c4|K2-i_jUjKU(c-Xo6B!p z7Qef{_{qNQH+OrV4gY#G+3EiObv$LEsuwpKE4SXTx$}u>{f*SWO=*f3d(u=)nb|I` za8dbl$6=-Yz1q(Ivp@FBGj9(+^))m`{kp950;P_7yWTE3^UL>Rn(WRQS{$b&CPx~? zrX`wdZn=L(s!efnN9Oz_<)?1jTQ7eXt>1R|@$Jy1|9w+!HW>VQzR$BkB6ogw?WbJl z`YF$@x*p3ddieEDMvb<7$~vcbgMHzwd9> zn(fn#>uNvGTReOI#KM<<{>1gMdr6tQKe`@yH2wdpi2rN8>C3-8J$vo;$G@IDNpWCc zI_}9Oy0<@dZO-3kZrelh9#7r4ZO7mL_OCC?*1TJ{X}Wg${#EP0zWXg8F1m#kUmjnnDYW_j z`i=b7@O%5kmlj=@Zrprs#rJYi#qBdHjvD8G+-p&P`qY~Iv)^)$?K}1PqiuHl%)cl8 z+KC=Gt$+A+dJ4rT9$o9WyI#&WxPU$8Q-qqvGw&oo{l^^t@TK=gggF z`BIH7KJ&gaD(3g>zOhi(T7*fYqxfUb_w_-I{VL~k3tgC4?2px} zT@DK7kB@Y zDb-kPzk9OQyV*?+57fS~^~7^6Z7Y}lo3C^}SHk(qhhoEwzZ*B*QQ3a>`ns=Ou5JM(w+``4%8&hfX;MOj61UuA?R5K_Q`xtrM7~ie zj$eGu`?{^J#=h{BX)oWu@K~y#QlF*2N22E5m8%j;-S6w29?bqff5HELP0y2u&Zu}w zY5zHY^ZtbgjA49@3A;5lxDHR3?C)q&t*-;TA%o}c4^uEiQjgV^>3N^XT}1_-D(|zT0zPee))cToO;dJ+*+S} ziIcbQ=E&algYD}2XSesPSlWH%%GtE-`BJ9$-fe%bzWmkus{JB$Hvi;<&M_Z;`ONOs zvn1_gwO!}+h3(&6z00C+Hf{aY%+r@%?0aCq173FfRjDcBDD%Iz6(^nt^gTVfL}aPu zNhMLw<&H|e3SVOL|E~|ND4F};?*GfL&#zb5PuU;8eCKlW=y%uu7XB*z{LTK`>CUKP>~8!0c-PmvNw*_XA3ciwz0NeA zt7ebFayA$>v{rA71AbeB#Pl=xv5;t~6 zRNS2Jvt~|B&6+)X_B}OA%PXpS>vwbM3C+Nop5*TGbL-E){kE_^$}s8TYTwv@_a?0T zx24GF+lHuFWkLKCXC43c?_Hl-d1GLDPt3__*9#?MZ@kdWFzL*VI_Mngv8p7Uw%E^K6kp#)|JH)ZChOL^7#Bb&6n2j@u}#{Wudv;;;*(p zT_5wxY}c>-R%i9MmmgmD`eoWOSy_4M$#tvy?OKI&3~`n?Y(y4t1R!aUnB0 zGcz-zDR0;3pR>=-vwCxGsqWABxnXsySC>Yo*uOj%S6BCeWy_A;%_|<1)`?EtBU2sK zyX@qimujES&+HL8+{c`CD24gw-YabK@8c{2CRof{vT9w#o5N)#HxKeWK9(Ra9G?96 zeAJFh*?nQ#?eG2y{4K|qe^$AzI`HkA_j+MdtQdA#*=}eI2v+L(zsr20)!N-R|E|1e zcf0WUgYt`pQ#|sSesT03*|#o!gS`)@%FI>oV}Ds5`TUY~QpKF7{pLb>?Ki)0UAMit zMLj^#p*6KOH8-;`NQ1WwbX@~ z1#5RpvdxxHY1g{bo(PF3hk{uR1qc5(~EZ<(UPv7p;wcla8_CJmP`z9&rv3AmjtiRvx)g3o_esb!+ z<$gEIUzSd)U%zS7pM2{ymX8Im{#wK~Eqo*Nl6l|%7XH;dN(Y3$?AYyD!^P3x_2=XpWe6R*e-Qj9I$ZAM&!cOL%IfyH%qMdUJo$vvP<23!gqEM_YVWFg>7DL!7~Cf ziW{2)7iY;WTy(&Cu21Fiwinx!|JKz9>A&5zehuFa%Wbnh7VvN#w=MaldauSQnq|NA zx2%b2%?_28PoI2O@w_B;$%!d;&lK@BCMQMDeD?|Eatc19nC2*wkA z(ibdKR6izZu+&a=lg!emT=zmXVkl0*WpKI4QY7tnu*opGH~j;jcEBx%$gW*S>OYGpAL(%N zJF@!xjC2s-pJzZHIDRaOzdlw-;U#VIfX-it`X z>#OY^d74$M|M(`oGDp5bXNP^+x#Ub!!Rfo+yO%7n7mRwJp7ea;v5h;v|En#i?c@7Z z&;8PK@uW%res4~xi@oEYP<~7zf#LCc87hy!FkypntF4>*=L!3)c|~-?!?0Y*4Ce+P3TZa+j71Jv&(bv9|a9-7s%*!0TG+zKr#eo9vE zyt#Ac&ASB*5(!aXpWcdJ_NCi$=ev6sbB$Gb_DIW3?t17}yx>dBWzO~~uOAB^USqrU zxA`0XYbF-24ANZsy5|13W4)xx|9kVkZ@1$+AC@d+;ks*Ruu}GNl>GtW6SE8oUPm>w zO!fKjtK>WHpD@#FCAFP;&xH>w-V>N+elbIUVf9j>pyg|7?b&%g&ATP)=5Dj}RH6WT zd(p|jSF!wQD~+?N#aVv#Gnm~nuaONB+%?&ocYUnNImJpH@1LBvzD+X~zUZW>dG}G4 z(DvCG$L6g{fAC}yw@Xg8xKRIZmqj;zD`Pz@2cD~)ET6%vME%a=B zv+sVTc(BRSvIVo&#oKS>x}Rh1p1>CEJc+`D~owQFAl59J@8W!qD> zRA1@hf4PO>?^$L?3s^ZP9Ij%}*}Zo6u^78P9nXn9JXy;(ubVO}^3X!(ycCNYr&IpK zKZ;1d=qL5}+mGlT&(8{fQZAV>Jdt+2@m;=VCC9Qi{bAYH*1ddXXXhWi#PwxlxNgjD zIqolpk5=%`aViyf`M+d>(LNJ~t$%kU*rdF?yP&=aizdCG?=ouL38)TvL=XTn$v&HMa)XjJrQ@3lPb(N>i zXVa}AFC7K#S6m2)&R(c&^ee0e(kUcYMdn}!+Nt!}@IKX?0nVfcYRB{@a4 zbNYOb@7=!h%d)?(w{HF-yZhbo@27oc-}(OdXU)EB8U9u7r%!%3RQbMbd8O~maE*1J zEb6QCm#};FZriti%J$R0)~tK9KYsO}peF|I7dnpC3x6_J zyM1$u-)ig5S@o0mz5TJdy8GY$dV9~psq@#n%We-AwZ54nv(I;`?@d`@kxMLdj(It% z)nA%_=--CboexqR**O0{2;%06=&h+;-{EVa0os-aWSp>YN;!U%n^qTl+Ql)o%;R=WP>b{cIb`ogpWGbMM=I-*3My z75Q%^zBKLoyXw7=n z7Tf86f4_a*_r3kj&9`4Z7X5j7NA7)ne(&}F`|nH6u_$@Kz_|60M8d^x3(X%vzw5Y` z)k=rITd?qw*~5>2tEztO%fGf&xjFsSjq2(zp;Knc-W`S zcLQrb+^*SNusc@vz5L9{rS6U4mnyfu{8weNeNXmp?(@&*t(yNiy!O_wTgAWs?=KI( z{(ke`73x1ofNJxkC2vAcgW z`?ckz)mEFBPyhBdnf0&p^Ob<+&-_{UL_#lJuU+qc=Dx9>>x5X*hv8pd+pV~Ae$J<= z9kKfUtXp5loDVvE{zvla1&*EN%ce!y%$cA1G05%yJBvxD3M%JjMw}E~BNTNhZQGP7 z_veX-&tz)V-E#1SOZo4*sAsHCmRnldOw!~M(LbplpC&5#j(t+~rOWEy7*qCW{t%xb zZ^wQ^!1C>8rKM#LH>-KC)fZ%$Xn50j_S;{k9{z?u2{K=DCF^%_zSjM^HabVz<(idyq};M@-uqYN zPgzT^_7UB;>~_+8m+YhOFIy+cFgDmK+ZG)tTekrPyg!{!-u|21m#F## zjr1qKnf^HIOBr3~sFp5CnD~eBL9-eo>W7e$Aw-5ehXSg^yLXB_BJm$5R550R;8hn+# z?@Wlw&y+H$-)wAZZf;T0+rq*U|LhkO@Rxj_!6(0MyV$8|=UW%|y*d6wCT7=rS)aB2 zT^ps&Yt8$}Wg=GljC1joOJ~kr&Dgi@T|$eW$V$VaC8yas^H;0?P-#-*jGM9Z{@;Cd zd_LQ6ZhGGQM!39je|F3*yZyZ&0CB!vhDBJJ>PV;CUVEr z|5fi*r(b^jYUSso=nTW}v+wU`zwDm;=f{nD{dzOAdi$$;w=Or||MPj=ulnf`7cYxo^8IDL450 ziFNkVi)K+=lFHmOg$;wWW~nCcn|Q==|2+Mel~D&98oSxU#hun2`V)SwYhT~}L(&OIyB z=U;i3s1)v)yVDbsw;JAr(B;|HI;eN|fc=k|ZOX|E@r+q!%2qTdDExa#8Pr#ITJd6&0Wwr>07-__fX-^%^9 zO0%Fh>*^Zj3JU>A1xw*S$$(-*J*{vmR6@ZYLh?sEUBcmMmZzk2`Q zzyC5C@0VXYu6I8C-;a=_ifqL~1G}&B-95X1+qxdh&A)#7&8eSBaf!E|#6C|;{ij!` zvA=Tv{>%T&a-Xq%J1_LweP(Itza6LcoH=rI@4?e&4j;-ocJj=blhzYHPoFz=>dcw5 z=bdYBU;S+t(}N<)Cpi~94E+0``S|CrYb$mq2~9ifvr5g}(>6W- z^$P##@?Vck%U#gHa8<0e!zJbM`uAJ6tebai-%N|yUs5Gpo$vU%zS5MBb$IK1deQE+ z`@EjZ-2XCR--?s}CNljrcpPo^<;EF5qc#5+J?Ywb5AAf#5Q>Qt?G=O`uMxn8JVRz zu1j{gy)uSg`d@d+`+g`6t~t4F(hS~Y zw&jyw7kWQR{}5(ArDS=Eyc?JC4@H5WZ|%>nIe9nkz%u5S2haQET;8wolymOL zf6AgaDM-X+$&{4jmzo?eRsAAcpM1NaaZ)Sh<>BN0vesK1+RnPVdR(8Uyl(4;=Fi_0 zSu_?nHp|~U-?jY0rgh6=cJgbd^m%(01a&=q>nCUX{Zv5z^E|srO+xY zx8II?a?RT`y~d?$xBXnZa-*yFfy*UVuFkMj`Npuk^Gxje`7$&2F8{n!()9J*-|utx z3ZAmcUVmoWnGa8j3RRW=%zE$MEmO}ZRw=~lT|E2N|94_b)UQpOpnEOnyVr+++8Bj8 z&kx`86*VeUPXAx}@>$}K_@!3Y=jL6uUOV&F%b@&f+xzlN=Ps{&wrkz<8q0s@kGwTo zA1?ap?ETx3<)rShpo8>CNx8_BAIHUYz=q9~5Y+aM2>+r}f^*28(r>wx|-P(EWayp-4`c_Alo9voB+cv6j<>vaI zygL@M2-#FdoD%gr-qWAC&uKOH@9TDl=a26r$1#B@3x#eci!yfw_je^@Z;l# zn6>-gt(l@LcWQpA>6YJn-D5wL-nXt(tNZUXTZMr^$f;Z+VH@8G*9is(|7$ng&41^! z?su(7%Dc<2PaZgX<&||E&)azZgWI(uq~Ow6{{Qy6w7D`jv*coBZDFn7n)|KQmF3q@?4C3I zQ6ek?bm#y zWx;<^VWaZo;AL7)pW++-J2ri} zpCYz*q4t(bnKl8ZmSl70z23L`-yX><;qGLX+s7W&gl9cEAN6(r;a7HI!8^9kuV$-ZZ1y}2^9Q<<-k&^u=Wp5UCXdc*EPt{aA0I8-_hO32yF1U9ADsKj6+pR?HEaLmJ9hkkJ0tr3?_Jey*T2gh>^**slV!I5_P-}C$ax%mGU#22dN_#4Bspc{meR0zx>Z%{rlfCRx3W? zi+KBRmL&tT{r?V`#7k|`f-0x%CS^FxnUvL0dTw&?{L8g16&L&Y7tO5R?VWcmJGkuI zlft`s+s|u;-}TaK5t+pCP)XT-4Nu6b0~UM%lj7GbxotfyJ$<9{&dGm^gI6AZQ7JiX zOID-Mt)7~jUqVVsQqmJ>s{#iSIKfn7o&8))tpn!gd za_tXK4);mwZqP`7QXE9FXm~nZ=0x_XsUO*0ZXchoed{m>HDw28mI%j4vW0yPo4H4Wui z2}QOKzi&xqw0%6=w_knBUZWYwJbM>r&Dr4C9ewp+nv|4&ws>{$y-82^_?`cMZ}O#c zljmyAoc?RyJ=Nb+WO6zuO%XV@%sX{w@|t4`r~YnOb#bA)nc@DsoOPe?ekyc&?teu5 zRQtQ2#V_pFA2lrb@&1fG?{mf%-`oxP zqZAZZ9ND~Z5qn)t(5jOyJOT>ly6h`9`n=$o`NsC|S-yuAf0foa_*i8f*X1=UoZW1di7iX)5_vc$>sg?w_G#0@c!TbwbRqTrZzrU^}}`Z zi=4MRHww=vHM6eob6)%8@%d!+kk^|&U9K<-yFG7S{nej0Txy=Zeq^>wfk8rrmwAB% z;|{s^Pi;eMW%)giw_n-*{&L9UzrX+8O)XvPlX5<3d-cvuS3j+`+%o0gyY1ZzQzxtp zJof3|Pi@h-GxP6%n!fkwzEy9&RZDyqc_Ud`w`}Y3`0)6b6YuSNeYyUg{L$_AS5N%* z=HY+)nc+WT@0;KLo&PW8kn`W=4_8s{rm#SANJWnzi@FAqGS5eUD`A&)k~oq?>;@ zS^VysdhYB}$8|s0-zfgJjZdDwd3#UA-h?ct7SbK8IF_UqRVHh)+? z_r4cn#wy+9=Y_iS7ur6We&bh+9c$iBvp>%lO%2rId13rZ_SGMjs2%TLroO%yXS~I4 z%RO~rK246dx3)9i@?+_-O|q!C%dhssioLA1#n@=~*BwXNN~Ui=zop11DCnPYyvY;& zrVP)*x+kS+D~|sCZe%%8uwnLvzUSsfue7x0O=CHpr5-J7Tx9(Em0MXy*rit|4v1RE zJMIzXOZvS3d`hwAoJZ;V7d*W)JNWDR7ju4`i)+vMKbiN^`%^v1JC1JqBcI>5X-2Jy zjK~7dJtwLr#h(6}#3}X{b6xH)|+OL1){T1__$sCr}Uu>TEv4s5%3=I9X{NFOK zOZxhbI)_VVJ#vrx)5t1ecb|95>Eyt2zH0xCfkB71tM0XWboTS_Z??%cHF zO|;WeFTUuM`UMd`TeSZ3pLwc(LoYJSF65Ic3tux!$fRkG*B^Mk=U8H4sDH%h&Zl&i z1?_)28c%4M$evtwe`CRxbN50lA6%0!=j+_>_;BX$Re_bVo(i?hPQRz4?v4YO`1{s?G1W81q|!G2lcA3s-yiw9&hHj89!lYFtK zSIc<&seSzS%R?sZpSpMXi4VomYk$76UHwny_Zzd5yFVUy{X6B^yK4W>f<7Dea@_m- zWNjUL-1oCvmOXlHmsj`mhQ9Y3b@@oa?ad4lriUchy4VAx>Rw-5I%(SBS%&6!x>r8< zvrFoHXu0@B)g!+ucg(N7K6~+-=l?9G@Jx+a)9u6mw)`~rT+h1cJO8|^e-(es_v^KH zkKT22?{0tpEwC1$tU8lp_q|PPvpMtp?&}-F-q)|K+4ukcB$pkPo6t{_S`uO=O}Jxy2sJR z6?@F)W-yaPwp!Ai%Yw5RZq)inWV)b>C7e4f1yeRd&LHmPk&)jvYV)nM%md6|}dpJ4p+~*}} zH79d)#lLv79NCxq=Y7!adl8DR_nywqzrF8AK10}l+x@#z|IDvjCh7W8&nDrJfaZbK zhfkztwL}=J{#o~A>EhgrlZAyQU0NzI!<+AVfZ&c)E+cjszIoRcMB24- z>Hqotaoh5%FJAtw<^Oe1-1A4hoJPO=#*VlP8ru|wP6)LAy5@K!NlVSHGx@~}`^7I; zi%$J3`%kV%Q(R*5cK!2=s~>Nxm&i6$`FvLH^XDtYnU9nV3CCj;eDn z?S1#MV&%Tr^H1|19lEux@A}inuX!bNFF%&o5VGC!h`ZZu%D=P6v{&dZiLL+rF=A(( zPwWq)v&#Q>>HOy43;yuSy;yYy%bIN!|JEOfdHcOg@3)!mx|P>v-P@gM@NMongYd`M zCxyA6OibrV{hE60bEx3_m-X@4-{+h^+Q!P;?e20>q36-UsiLB+T+OOU=IYW%RIb#i ztLq$lBJt4MC-eVZW2XPB&Lw0Sc4>&ey_BeG#@pN9*5V#0GW}=mr1QNGZr&{ZSpN0j z`ngti>lEw$J3l({+djN^rY+yIjn$^r?pw}BuQ53MVs^R2ZQU(P?ayyH8|%O2Z|OSg z34FWfXB(?d3;)*le$&U^@cVO@eEjh>#@@88{pE!_`Tsl}3=Z2f+&+IUbS;m``}cRv zpWeNht7~2Bso(n4d|G$HWZBgh9{)~!z0G7t^*Y(O{XdsHsjaek^)BvqVDh&AYu4?Y zZ#Tbdb?xo<#rxl%ofq4mzO}vj&Hb96GV{L4zK!3#@Y3@uIj?H$sF~)348z4F4Hn8F^FU=FQ5@l{*V& z-kiDfe&VkE?^H_OEQ*TmO_$ftzQ2-v-g3?C{5Qvfe_p(o6S2W>d4k-GxvMsMKKy3H zdE0A_l)62m$(Ea}{c49McC24GV|8jrnX^Fp-S@o;_g<$x37);rX$UTuzA#`-rx<%r^hw;Zu|qkgp5WN91R+y3Yo$NnWRWWqO3{Sm&l%AEOW zUya@Ekgc~{LUL1^nQq-)oXKL&eCtE&lXaJ)D*jtdt=!v~r&$(~C$_uv>728I@1sr~ zGjVTKRXgeTd!fhi#Si{{RZ2UP^0x4)jk!djmGQg3O@CAO=N+ovz5i)&^tvtjU(2j! z`nxR4(QDY>t-bf@;rAs!gJ;*-+dq7;Xwf$>OJ+o$-_J zcxiY1`SB0)f4z>nwyk>J_tQx`uC1x`3zSQkWd5sT#liqb{r{DJ4yN`z-Q9oA|K}z7 zMfFLw$G_)Hx>EUb&5Yw8?Y~c+y}8rn?RI-llZ*A&FZIr5D!EeVG{MV@Ye|B3fbh=4 zId$uQKK^>{f8)XX9QPc)9&=}qaAG|$myx0Q>cL+e9E`^pkMDSYOfTi*@B7)=k>9xY z1po65`~P^}#Z`3~d*+{uUo2lZ`EoDe_L|5^!dYAOm(lEId8SAUHq@+X7e{cvYx3K>@)bK&2p2mAweQjK-$@iTfv~n zh51E0WBcMiU+U+7oo;fh{J!zq?%DC1AKtCmA1mMI_Un7^@9RHp>+Qdt{<#0o+f_fy zXU15)W3N?S{p#h@P07#8Kkt_1t3SQ>-@$`Fs`K~DpI1GzSALz@nRdRuys-N3 zzejg(-b{HLm7qJ_VAe+CJVX2YPohts{>S?Eon4$PUtXEHxV5~#wzYNzUXs83t9(RD}tfl2W%`#K+qm_~kn(NNnp z&r$!t;tQ6iyo|msqDm!j*ndPSknB?idh-xeiJ|OR_>(2iX{%kr)>@kM6ZwE z{`b|P*KY;f#ln3vmQKF=&+^@#ioAl{jdq*m{4Z+0e10UNPqz2DgQoA>*_Rjsbu-TU zaEN_netULW5WncHJLl3?wl?wYS~)efpS8DKIyBnFT{z+NL7kIITn%$}ZEbbDAN)Ax zn1Nm8I;rQ;x2>1VAyY;a2Y*0={;gg+a+X|yE|KPExZ*hzBZj&?M?0(pC zXPu4I&DO3DO6zY_Up@VUZI4V#e~#X#RTq;l1x=dy{pgI)X_b*4xx(Dy`@7_L*~|Zy z%d8i%4fs5lwRn=_o|zAg+~4Y#KeW1`nLESrhS^=d3mMc(?J~xl; z`W$@so0dpF|K03rkF31;XM@i9+5cWxF!5sLL!A=;KRYXD=85}H-n3xC_s_e2%I?yA zdVbsDo0q3SNCtj-Au*fQ%u7=F3iEzp}sIp<4z@qZ(`4CE2hTUV%{>T z6FC)IR&Hcqc+?=lEYZ@Uv@&aDwNvYjt?FT`c5J(z`NeJj!+AYLdqTu`Z1u9=|NA&Q zJF1ZR-TG7RYn%5l%3EjN-qy9(dUd$Kz5Cn$%K@9M&9?vl>r&HvPT{Oa6o)eNa?R|cCr|cIVoyAv_|yNj;eun;pD%YR zwP>~)E}4|Mw6WFms7O(jOQ-IQz4HsLcX6IfR*h8p?Rr$1wNJR}!z;JVU$5`q@Hy=H z^lcUIXSxYyo$3}=2@^45JrO8iP{Z)U&tr2sFv2240rLicGH7ExAq+*H*C$D7SeC&0`Mh zagvjsu(D#`#w#8Z?ycEg=(08ZeJn-*sXZm!hUghSx_MA4=T>x*g|D{n@2|hU zW5t)~?<=?M%j&V~3qM``H15-vw|oB0U;5Sk_}p#JqO0rW=Y_xj{`>E**2B-{cHEmKdeSF>i)UVaj>C4{S3aNL|BjMqp80jx?*&&^{;k=qI+syq zaxL$D=@|zvyu0^D@XWU5*Z0OG2OLq-b@?Cc!CuO4ytM; zU6UDZMY6VT40Lar!kT#GgRxH@)0qoT@91!qHuRiN))v@oq?dZl{J;P1-!|%rZz|*5pWSS{ zaa!N~;WpjW(0_9CXaBe_elz)a`NR&@qX&X!2>rL58T!>eHFp12`F`CS%a8sp4fVf0 zIelt(3h#2IR|{N=Y;GqCDu3#)S$*lsQ{A;?wR3alMSONMHgx|pd3M_q%gII?O;-K7 zQM*&de%~a4g|YUZ_v`+B{KxLtvvvDFKfTRc$QJkaLN(j-h`Qf=Qh$RhIevVbzRt0E ziVVBVN>)yTZEVaw$<=LDubve<@3zonwpU`fF#VcUYwbM#<9{Z9c%y&s@1j{zi`QCC z+IK3HJKScqd|Cb_@yl=jgzY>1?yKCj-uP>;erH~-|FZqZE@`X$`JYo4ehL0vcKg;Z z-s9p&TNOV(K6y4NG|8c{r35ZiQW16wx7S(uUYfPOpHf-hnRi!X|FfY{?8u0`d-s)^_%Ow@z28Q z^1pj`?>%sG_t8^F_Z>TX@bIxSr%xR_bMExnbLY;Td-wil#ys`IbH#egbd1XO_v5qgi>((v(C@R@lKeIyVa>xoOa-4W38rYymH3qMvP1KR$iZe-PJx4Lf2HEZ zm{QpJorIi>r_Go$ZBxjBhL7E9N-Mc+(u54l!_S1;eGDpV6xGezAgigiPs2z5rDTb8 zxGy)8=Kj^E>aAFQdbBO;y7zwGLP_ge;ZF{n-8s!`otMwPfaJvRR$rI)C9zTOrw2Tl zly%X!wsCgtefQ=h|J!z!>2p@C-NSeFUeEUD-~8{`w{uSlu6lG)_u$>UZNEI?E*j6C zcIWsKot?VdZ%ds!?e|I6gcNjJSTdQY zHQDTT$~eOObzk}fpW6cemCP1=NZUDeqt~RzA${vyZx)5AC3AFd7OE2z`7b8#`hQx9 zqJZ)2@F{UklEo`0CFk~<<}YdrKgV`H`+0vu(LH~rmEn30c`8D$p2}M#O=&tQ#ymx^ z;eh29heHZ&cUX3{r-r}E37wQ;^6#6(-&yri_1WKk{(t_}eE-Ypdn%V5ul9JfiELNh z&+tD<(s*{trE`A;Qx_C1dse>q!@i&UmxtMvZcTH0#@>7GQ{Au6agi&`&wifw_PgXO z(fj+aUHesHFm;dndbaR&`P%2bozI^?aI*7xZP-Xui5 z`mo4uQ_06|f8<2#v%J*~Kb`mY+FOe|>-VqsyuSJH{q$VR|9Py-;}2f@Q1gH9{^j}g zKOTNqT`xJ8M~`{eb$j)d&GA28mT1-Osb0_9sv|os{nw*?%a<0;41c`hEq{4u#H%#t-qZgpE$d_vi9eZy@$^2K6UJ0WL?hVH|tja z54*8*hWHP$ofQ(>e_FnO|J#`F-G8m`%GT!E+K<1TIj4K;^qDiK&z?DZ=G?j5-Tw;z zR_V^qg} z?Bm4S$5?LRCLsD<`dH>oF^eaUzpmoD6QC)e9CN0HBVorQ`&Tc@;wEY>zwl}C&b>7k z;{EPiv&))%itUQ!%Xm2dbii3+{`->L9h zPP@gUdg<(cjr~jZ#8*G7|5s+8`EB3)%eEJ46xsJl{QZA$w|dDmseo5Z5hoTHs!XzY zJjvtlB}U~n7PdVsw=SIay0uiwH|v4CpXa`6TfYna?<~sV7oR+@9CRvkQOB{@Ih%I9 zUiW(4+qO9epSYftyK+cCA#%r@H4D$ApZhUsg4wN^``zE!Y`kdr&hWN?(V{7PLwX+x zwtY?SO?~`_OTbcKVNdG)RX154EO7Ija6380qF{08|4U|NRp-@@m4wRGeTjQzb@H5T zYW5Q&wmzGQA9>!$8}9Z$+N6IZWY3*z|HFUoUAg}L{@FXfzF#)q(7J4Of7j2t)!Kir zp0N>ofBwtc)3KSFKd#TN@;d&uZR)=IOiSlAN9I2EO{y=y5jXwD8Sm)&-?7GjKYr8v zQTkWkrscidyYTc&SFZZKuPyT2ysNPxanib^Lnds}6D=$l1Oiqt92Q_OX?V(zdo|yB zO}g~{;vXmMC;PA6@%`h3n7W!jb4#B;K0U4d;<=6gOY4kx-)Bv_d)NPX{g)5#wTz6+ zL`~{%#Z6z^&aBTacV7Q!?dQ{9LnH2#?4OslYQ2Bn$yxiY=HHtkw*Rrke*gMq*M+}l zMoyjHb1?jG-@pI*`es7)_QksAkH0VfbmTzNv0t?X>ovKo%aML z>CES!9%}A?(411)$gzxlQ!b~;nwUvP_po*>G-7Gd5EoozqQB6wwl0+O%o4VP40=pV z+n$~&^3>^K<6h)luv&b2xL_cgr_TijgpVK&bmungP_AQq+73ST&rv2pBJon7otIwA`xU_#^eL!v8$}gMmm2H)^ z{kA%B-8q-58SA~=LJD>oo-_HXe|e8qq-ovEv-@K=O3zm74BZ#?*E?5S|CxkNskfN) zm;c4-olom77M02wPdUA$B-7s-!fKJ7miBWZ) zJq+^{6dd&27#TboSm*nHHZ8Q{5WKc`RXlr1{?EJep}YTNOq>;X@qL)+4%VRi8)E8i zf1Z*Z8GKEb*CO98$oN`}&8f}l%zmmO7j;&@tM6yuU)TO4X6^5_tOZVj`#&~cZ=Uo1 z_hPdH3wMZ^xBa*)!(5Z!$6%nUDr?um?y$n(fx&@kn_ZSZxV3o2++{b{ty*|ZWvjaO znnOP>m3qI@;(Qa6x>eOI^q9mm(|^@nzix|F*3Mq-aia(Q`q z-tzJ4uH!w&`;L#JAt(89ucOBWxigY%@sU=uKc?%e>A6ZDGjwgg%{e2qqy2nPQ@5p; zVWc3pmwk|Dmi?Pr^IY4Hk3Yqq7uHq(v8|dT+a!>8^_kH9pWc70nt5?agjW27QkI=h7e367g5h?7nXDcKtfLMWrZ*r&sP=l+i^gomoHc#H6@;dkSfPJkx&Y z-+r;cH(yuTrW$>*zZA+Cq2G3@qwQ;(&|x;=_+`@KyHlsHpX|z=w72x7HkyXiFu;}bH?S1Lz_8eoC znPAgy)@H%V@!7%PUQC4LyU)DG?UpxGTVA`)U;AgjKzmwcl#cGE4!e*e!5X)1Unn>> zU2%}-_vDsO6=Y_t1zP;_#iMutG_xaQN)n*^Owd>1o zYuRjT-Foub6b6TFZ7%1-){Zi{qarFKP!J7-(G(D?(loa{-<+19;p+-+`6*8m zsXRZmqGr~t)xklUMz4ISehK} zKQK$~imPXF<+GZzGweUDn*FK%)wb9-{oi8?=YKT&vZT4z{=Z;E-YV{SZ-n&D+XgSw z2zJl<@2|Y`amkga>SO0xKNWC_e0zRK_d`oc|4W6GC4!u+9y8=l7la;?wO_g?&iYf? z2d!+O%*g^@LWHiHcb}XX-nr(L_N}wpT6?6f2?yIPI<>UAFjD_j(vR@>PrjV%tufnn z>QrQS=+v#Mp{lAPPh5^o*~-H6BJ%d7n?chriOGo0x)K#UD=K1E_{|%VwA`yagCrvt@o+@9@6WMEqtDunW?Uwt^X?N zcX8ae-N(+iu$0Z-EuS6papl8JE`Lh{x7^wnT((bZ*Xz_mNq=ce-MOzDf*BZRDU>>x zyk(5lQ+t2aJNHTd%iBNqe7+`|XUZ%7x;}N=v$w0XZL70h&E4sh`AhmrY&!GD*zC>Q zkGv@VWjpVz+^zZFE3cl|zT@v_y(gP*%!_?*Tz%m4-SE3L@^-S(>%^7MCgxAQ^!JOw z?|Q3s|AWm=*WLAgdVK4?JqQ0(ze%&b@;&;_Hm4JB=4ZdJ%YA?N_}4?u7KO39v zi`gTizGhF)ot#deGkey|IdkVq%$-O3KQJ&HFt<-wo%Z!9W4FAvqrBJTb6>v2=B&Oj zmn}jq($4Kr)sGz~-9mYfo^(^qz7*`-eBi{dqBCLoCj1Cp z5m~f)MVqo!=-ri5W<-2m)g7?xdW+4R2~(Zl)c*N1z4n076pPFg5BIzb5pC7as`{sX zY}b*p7i&AJE0X?hnHQ3@rRddf?n_(0y)HfM_&+GZHd_7Bo-mh4mMKeqUo=%IY@T>9 zeuK}w3wxAGONIQW&YSkVA+MJC9T(U74_lZYCq-<1x$;TyFT3a(@zbi?Z~lAx`v2sQ z#oM<$c~@F}TU@@S=z71=t5oyclbtJHt*%&T-Ph6meb;#tF`G62>Y{hQIGc4t{f%C^ zbi@8f{Tms?-LLLeU{BmrGX47xTk}Iv%k`cgFcaT6@k9KlSr4z8?n#<6E2ysj-~Y~h z<^JV<=NgYFNUZ1;uvFqwWU6cmYM7$Rk~U}Ft37?^zi0lP_C4>)zGLUVq)T54+WWEa zjgQc_xmUDo*WP*bJ~A<{cy812o&O9U8tslheEapb>09U7%%Al+yzunjgoh1}-aI}z z|JlEExqs_<9&a{Vy;XaIrrtu|Y`;vuB)>S{*zCwe|Hy)<{Kz~I49gBr&r8in%_vCD zySx4G{kjL{`-TdHdMc5R6lZ1yGw@F`d%9XwxUjHDetM*lBV4b>F zLGq6JoGY_U!jx0^O)gAQH;a>MY@XvRmHD}v|H-#`@yCzF&13(*PC}wg{^Jc6ttULp zoWe{yY6Tr6mT$j*V&bmrXEQ9$*B-IHvMWF5u?pMf8<&qiOt@DYJ|+Ci7mM=WTH2Dc z>;B&EW|sP{yMKSI^31~@Kcw!FUUxQTi{J6EztZAcCbk~>U6sGr@~S=-Ibp7C_2jy?Ng zRsR2L__ghK_nv!OvE$pf6>vae!ua$pS$##{pQDiw(T!Ib#T4MmcKDKUvF5O z_r6g3P4@q**KXY0u|2}#TiLYfKgA=yuO!yk!_#p!zbP|TK2#EQMuyd%-i?E79I5Z zJtc9WyKAq}`+wg)%xT#)U1uJi>^Z9GN?s+K+M?S%mzIIxTLbQ^>a? zBKqgK1@C`siL5*OLCT`bdzHPWPL9;AEsJHdayz}AEO?l+x5_N{+dSsgYomX4TAyz} z{_VlHf4_Bogy$b~k4g1*-DSPAkVWgMMTtq(-6SWkck2^2-uAkAu`*38O7@L)!O`3C znf1%J-{&{$Z!cP9`t?nspuz>a$Klt1{OjV_@a{>)DKBGDwm|!imlLnJD4r=4+pkn( z^>6b}Y5r={2{VfAFTbyuYFGFDrpq^B!NwVqW^9h%k|u5YMJ6R#WxmQJ0gjKV z4$hyP|1ouX-unBK!BIu{lVe(b=H&bCci%h+U-T~O>ni(D)t9=vrf2$xtlE74iuM!N zy4&K@OZfMk)U(~bFf%sR*VR%qF)>tAQ&Cn@FfuYQFwoy^&d<%y&(4l#+s9iYeMkC_ zjEqd-aaF#ICkt5x7fo53@N9Zc{f#z`+SAS->Vsx>E&5Z}I-mLDlS3zp<{voxJ>aah z*=@EHGoA?L_HOJ+K6mTg<};e>zr{UXbkFvG{DI$ZfA2Z{W6p&Z4J3p!$}KKiz!Ua?7-ZnmG?UE{^_HxBQis z^*mdj>9baye!rpO&E|Kz%T|A%Ihl7u-EyfFKlj&c51zlR^Z#u%+V*Qj~_mM@bKEB z=cy^rN{xbzK4sWf?yTLj=FFQnkN19LRyE+SbdQv*U$^XRm4V?xa}GBC9UQVtj(=p} zNNmViGO?+}diR2pa%|}xmOR3m=dHxn&8h1vy(pewV9KY#$j7YQWTDfMlDXx4Nj6`* zn08yiqe>S)wadT%>FMk%KH|`*TC37H{r=96cUt=Y{oIg!KjxS1JF9zK{Cx-i|7#Ka ze`10{<6V(O|F<*${=>8ImQG3w%YWhjM`OM9TGuLtt8G1und2iF{zS-Z06UFOWJr)GDWEvA@fy}P;QPSMhnQ@2j%*0Wg{vs<$> zXXng3R<3)gCc7){+-eIJEn2H-x!LT+wui++YuBwy)=SLRa^={aA#oyP)v3c0t7e54 zb8gwOT9i2^u{A@d=vj2GIVGvu$ZMi^nqGwwK%4x;vYm>g29iSx?2gT?*ORi(Tsic*@W_^hMlmg>45rt@+4X`IS3KzE)^IDl>f?2)VS{cn zmvBd#*n%aYZ2`|bMNE|rtTFIN3y4SyW?UQgELiN)MM0q}XLfd{C2l*C_KuC;;#Oj% zi}x^UXjqzbo7YCif-OjuASw^5!tgW6Y|(zY&eoD z?Ha0~Cv0?FBbqnmZuhz#UP+T}TSZm3<}x~_EYe%3rR-g-wQ8clR;}1GXYU?%bS!Py z^txip29-I9tgTygERwTh7?OBS-4;>gQ*K=$IbG1nR@Su5)b3$_}p;*_^9pbgT8;+2oyj z+c094Mo81iK9xD1!I2S#S~3Y)qNZ&;ZHBSj>^UoRu3TeT(_-whNyf!yzxg!x$#%<2 zL!5ORI6bDa{5yF3=PkQe9?jqF{w26yuIK)K|EK<+Ge`VSX@2$6e)IaN}^W_s?R~aliown|D&i_t^zX#3Vd^(zA>8vCX?|A6=C(`KmK{A^3xMqa+|2`*Fbf8RX+(AyvX zZe@Jkq456qjvu`>|G$0`iaZk^IY++r*!$0ae3|$?e%S5z*S@q$rriIKr(XJ+7Ad}? zsdKh5`8l`UN>-e3d#TZsh^z?T6xj{gTpsH!B6eq6tWwP@&g@*}Ec8S#_TpXF?o}2t zyBmUC=4_i5tnHbSb6HH)$0xOO%Z6S^?D zSI>mpGaEP!5_=}=nmtODbes^Ww&BRZBQ4K)VsE8dMiw$Agy|S6cA6XR=twIrt1tgK zW&U>m@AbY_>8mmp+ql20d6ONXsN*jz9{whg{qp<0(|`Ez>z)6S6w{y1P}8>G{b9pz zosVy9zAMWFHh!ia=3kM5Xo9|~^uK5jgth;NEd-c{a2 zK{3Xa3Nani9Ht~JStC2O%wU1lp$?s6453JnS`D`xkuZko)pEu2N~;qI+s z=0?dPF;dTTj+|wC72=j#tj85u$juea!?iLuC*Ce^J>=vi>0QnUM6{Y$MlIjw?f>cR?ZA_XlGHe zJ@-F!X36H{f3F>!JnT1Q2ztuj&td!#wP%*op~Z}xFZCY2nrW1A^sx$$q~T;=F2=K) zHW*Hn6zOtw$?Y|KCcP`N;&W?7nq))oqZr51j#FpDb{R{s?zzXO`Aul={Et=9j?oi5 zT6%7MR%uq|Qrq~b(#U1)xt=GN-P)86d39?a5V|cU8#~E)#zoD5-Or!9_J;A5eF6K9jaUnj`wS`k`L9& zmIk*;OE#_vXA^qcw^HWZToc&~GWHL@ZF{yHCym8CV ze{btdJNahoH9C383=-FT*G#;^lEJ+tbh4Zu!;=r`XD4jDBD0WN)U|J({Wi;c`bPr! z3}do4`KWXpu>Ldm``p=cm-JRMojs&dwL@`X)=Liai%YjGVNTB6qPpSE0^X~Wf8~Zn z_%M35l-3@PJ$+$uvW25_{T=xwvRZF7KidU-*=4<>>*?qFdWSx4e5Gup7*KGWb*hBd z2|MwFEgSFoJ$mePGVhFx&(v?uVr;?-ErpUTuf*5XX`a7TW-pYwo^f^Ly1SlUzWcs5 zPTllys}F6I?aRo>mWGqI;Np<{{Q@g?_tpKEKG-pMuExOUT-Lr)Jl981;KTEx4h z+_Q6r$BoI)*SHFJG^cF(+VduPm&Dq|EPkDZ+6-$x_@~ZTW4ONaectc%ht;+V3V*~^ ze=Mu~zv=Ro7QgjhC90p5fBN)LuziuHcJ87jE-YKNU7e_{s=7GqDBIOFOFJDGW{0U} zELyN6L|4QmaILnK2^+7}X;-f;Az?)!4HjyDeCeKR)CopU@QSm5N#PJ6yzWq(gT zD3QH;?whI7Hjz~-MiwU`{e53=zFg1{_5G1StesC(U|Vam=WT{Zx(6*EPSQB05NdFv z=j?XdNKK!$+g9K8+0S*$>fwqskt4mf_geO=oPQ!GC8uo2cW9DB6Jyhib+r=((p;nL z?2bL%EO9Gb=FHXDwT?Tx&C3OM=~>PQduHjf?L?Q<*|6-GJ4d^;HkTV-&z&)KM%uHf zJD1Lsdb;dkd30paneAG)cDHexvd+4uIn$i)M82r8HmlL)p3tX@+Lk?gVy-tcq3iLq z<5CZ2HnRr0>xtdT+i~#PV%gI(rzMv)MNgZZ7jq_Dcg0piZNs~Ixif+~p52^vVZ}1* zwO4lP#h#L!xm)e-Rr9i)Y?pNnw(Q={b~zw)hQ=bZgKM>d<8toBrR>S=n)d9S+Ex+M znL+E4`$U$y9&2Ory56sRyxDkW)17V4#I>hw>erXK`Yh?p&Q{kGS7lc3^wo_{yEHq` zvY2&t<_>eQUY^;7T&?1{GMBcQ_HF7-i%S=-#}4pFJH=)fNRU9E;HrM%=B8jcIlc^sXG?O z=uQ=$mX*}G-gwT<>C$J{MH`x)*>&itpw{O(yNyew&z>ng>U;OF*@Dfvr+4TYmxmh7 zZcFu^_AH!xyKwHdS+jF?+>yPdE0tWV7kKR8-I!c+)l&D!j_&EwdZ{~7b{kpmUV7qj z-h*4#*_AWrEH};E@yy+v%iMc<%(NTXJu|0;=UJB*+?nk5Fm>HBkFD#r>ph+}Q#88V z@WkCSr>ApGd$==AdgbnISGT1_c4@5I>D8vZow1nby55tkNo`hlHbldAb4EAlbir!n7-6HtDXV7A2=rN`xApX~LPM_C z>vrc{kDeYq%_86!ciY2`naMjRcII}jdfcVGN>^C3;7r)5hq*Ei#}d}XEZ&u+C%JRC zuh8n*si&i3PG)QuIUV&VEYIv++A5A~+n$-+(K8p7RWmp1j(qgsRPRj)6KHlRTlRUk9t4reAaLwY(^30}QskcW~uH5tFMA}uY=~{`od$vo(ZYX;3 zY8`i9wz*X5oh^6RqkFCg`|Nsl_v}u?MVEHH^F8%+NA_gBM}3k#D+}*zmfb2@GAmfE&>FqGtj)o?8asp5nlsJJ zJ-D#LWL-k4)1!CX%iaYBY}a^t=r?clUb+#ZYrLc9d)W>d*;mD%cQ-F)e?91-O9QpS**Kw)>EIPzG%srKE|0H)6Gk- z^+h-9EiN?5N|SoxtC!iP7i*rHye=_2e;>Q(XLSMDR*|ICH1A5%{Y6;aN9OR zU4uJ2n`iIf?(UuO=u&s*PS;sxQ`Rku5{-@q{n=*Q}GdteBJJq!`>1}4O?~YyXEZbtwT-!c-M(&;+DaV$jay9Q< zCoLKDEV9sBYs0mNVOzYnp5f`3UM{n4=I*v*Zx?B(@pR`N*{QSbRA2JUX`1E6+HSX| z8s^S;mKPYRm1kLSaMjs6Mz0IEc)KpWb4J^1TDIg;!vkrnmRYtvoU`t(W4UE_!7A&v zXVZ(LcfHbFv31pzBTIMBT6cT3cd=%0Y@w;a?Z`#9SKKa|Y1H@Z&8pW$ec{D1H)l>a zdp0|0yMWu&)}%YpO==;#?)Waf$vaXCm(#Xn(v~|A^!XC{P{+gnvB<`WqeM!RB%y8WPwIm z;}z8)lbthO3C-!6IZfoyNfCpH1!p#_N$yfvl;y=-=$;|6G+5Do_oHVbzs@z@VHQ98 z#?<%vy5rq$=N3*q6TiCP>4(43J#sD%ia?k3YFZ=88YEem;g~Y$8f9h9b5+oA(w`bpBxN>u1?W)MU zxc=xbH;@0Z`OmNO|M5%Lz>ROe{`ZyJcmMqA$G?B?h<^P}b>F>Rzn9wHx)>8ySa0WZ zzn{N;!qvG~_dfktci-cG&es3tYj6Dvyx9#5k@l*2O{dT8c-}-;{RBUOf@7H&BY_ikuE8qRL`r7||o%On__g%XY zxwHQC>^IWC_kSzhR69*~`FCb>`Cp$WPA_k*u5a(0ec{l_(=Q*VJ$d}>$@A1_&(of( zF~ryXoX3`bcbTisp#+sReGI&*FLti1j+I&+Z_TCsk@J7n{N2~Z|2<4*&fG}U1y!Ww01Ltq?u8}nny8q8NdI3(dSK%{duFFQ{~$GB0<$t z+A&gj_b-3n&-`oYzh~1Q z>Nf7~$!LDAv5)1rSEIC0O6%$UW_vtxewE zxOw?0fqk5Qoxzh1M)&-`!}D>YMd`{H|7$a{3`#$lipuXUIVtyoXO2kT{RHp1){3gj z+^s9)H;LNps@$>bS>@mS8wYk6B~8BZHbG5RsNx7Hil-4 ze=t9|b9wS1_3E8V^U9Z=S$O<Crz=>kKO-{#U2{`&&Nwchkx6wg0}>UZ1~fjvsTZ^rhmO{fRZFSej)wFskgE zd*gwR=&vn5PKSiOn%H^PhQV^Ns@LR)#v4^8SoF30oSY!lQquC-rro%mH$ArIZL`h- zmO_uP$u}4~ES{+9FmX69t^A^Lfa}Ro&gWO;C(ZoC|Ji7P_5M>{H(T7qd(X%`kY+PT z66I3p5Zl6?%GI($l$Cw)zZ|Z#9elD={y!AjCG%oo)xv;)Vx}`b3MZGTsm+)<W>(u=rKr+v2B-OaEo`^uIZt^!Uez z-)A3{sZ@o1t@V;RYxj$?J^r@DE!-28w-65YNQy8~Z#(8tbP8UwT z+P~;(aM6}4o92h~AAioh{PcbGtgoi>xAgCs@@<%R?EYQ*bB7+jTl=Tx{ND7*E1!P3 z_-WNmjh{06>v#X#^S1KG)<5=cdg}cDKGkPiNv^*x_BEzv{`GI?|GoI7WbpgHb@f^E z?biI;>!1E#tM#_VV%xuZ-_-QSXa619y>V6TreAmK*RPk$x8u5h>o&W1{PBIa_C{UX zb?@3|ezV8Mf2(tI|83c^clZ8-cjKS@-)QiD^9F+rRWk9_|KDHXaBsVy!u_yfXZ%YO z_L>9tXR*jll$-H-yHCu`c;U$1|4MxBuaC)_6ukY)_K)eGL!ZA3+M#dwN-t~9$jr>_clJ6^ksK-ufYbUKFj^BA2PY9JA1jT zm12CeOZB6tjO+0y75ST(4r_MQy?J5bo)tB|A`m5b`rbZ%55mkInw+p zZQ@4;&se`p8;j=stSyq)tBzo2EIGBjy?=$`6(PHowzHNOAKDie&pWpw_+{|FHwlN% zS(wybxKMQ2?(6AJrSOjRFICc~q%q1~zxn#*%f_#vY*8ZimztYTm@S&`p#Io!;f;1X zxj>H7U8hAqoLr#pyl#i)lX+}?cHg5ces2)?slQF(QU0$jQx0CS`^dLc^j=Kbch-qz zyG&Sjz87UGYHb&Z^~*jS zD0b6t`-$3^f2Y~Dhc^fA+u7alL74T_#)pAZq&a#vcI?qlt^9iV!)eB(XB;w)>vS)@ zn!NofKVS0h%TpF>?V01)8*+c1SH{Cj&(>UWXW7WO`_K`0mGTazXOs7eJN^>*x9)%a zk+<@u&*QiK+Oz+-WY-$Qt}+F&MJ!FMU!T;c{;&CMC0m&`o0~uT;v?-pCR(cu1H)g; z-;%TKX8bp+1J9mc`MO+bHUIzi#d#Bxf9lVxf1iKzlWEA;yR3WvoRIb`f5hN%uaWg< z?Y!HO&E=n^^@Pvm$?i7`R`~dkr^ozs_5;^hndhA)vb-M1{Q9I2{G(@b)yp#_|K6Tr z?0cbat@S?N>g$=yTt3ngQS#4rKG|`w&{#6(o-VHkpMn6#_8t8WRg;e1`2KpgIcwLM zkcQ@U79aH=K78?SReJsYyV0WkYO1a}sr&vf{`UBK&9cC+r&YeS?2~_E)w%ulZ>y~5 z&$JllFZ=WG)CWP^eC^Bs)sOrxFTPhfSMkK=8O~h)gzo--nZ0;Nq=l=v^Ye*;Rxa?{x_*0^8e+$m-Eu^zbgyw`t?$>^6pdSyGt2f@L&B`_Udz! zRfOo&Z~fcCDywtPmm8*cJT{&y{P?l;+S!}epL@C}dq-q!Z&v7rqK^hY_07ef>MQ1} z{jtkC^=taWc`Gh*$LE&uuda9gnRe!aN1pNjKKJNP`=9;3c=*EiL=_=luA;o_U{* zi=)E)udTmUbghZukuo!sGM$-g|8>{>_1j!Sd3!Q@=ky0_md~p{d+&?A|Gsbg4!^wn z{!GmCN1rT1Vo&{af5ormonzv1>*RVy#@ky|4fmG6{m-|2=biuCLmzyU*cIQu)y&vM z;Dm74kHzW*N0&+4IZkT4QR1b{EFJkZ-KOuhUV-iJxl9fx*&7mE9X5sg_FY%+?H0e9 z_hZM}dclc;7w#8#Yi0cVvB!0>TG?#9^5&DS`%VNJai_H(lWE)d!%=aPSkm{;B`S;o zFTZE;x_&=Y;uNoFQMus8%eq4@=EBF8C}t#euJ%tYKPu3F*EN3sM%j*?LDGSzu6DDq zX-?QWZR!fcKdQ%L_X&vf9JxGUd*mhYiWUW>mX0tdg$U`T>c=;~@hdX#eSEy~aM!}G z>-O&Ze|`3!x7XxepD0jYnO5WeD_B==!XBRgvdznqRhO(=|6-Z?vv(X)`(~{+O@3?8 zDzMXG%hw%FCu({R{n%8%^n?4auQ21D{I?kvu0f%DyJN4qf2=p3t1n$LCEy9yF~2SU z63v(Y?_YSg;@|B*Y5#05y2U=+VVPpBf8@@gH*58d96ro(>u@+n{LjGt1$m}H3l!a4 z8;>n&u`q~{DHL=Q*r-#m^3lOvf6sIjZrH!_5tEa~V!`J|p8S?ct>12a>vsQda`T$c zgNqAor~fn4mO62}Mz_%Z(tove)%7>}K0evH?cvFVv%6hZPBhRHnKj~VY^%R4rF~=vT&X@M&Qtv2VOn znm^&L*_o+ofjshO`DK`#ycs74Jvr%P&Q|890+Ybho zxLa#yxiwg_l$EZZmbYc=!(}y{OdNNPJ!pJ1b>H1oi|9(@&L!@x-YnkAQ{INYnDIEv z#3E~1n&hQ78r>iN`kZOfv1jJ-5^}%(IarY;?1jBeC;kt2b3y)jJ|ByjQr`Eu%|2x3Y3#yy*W-YFk<*-p z-(NVQ{+0jv{^`%L#K`yGqb8mIr+V@K{p+>$hvvV3!gql2!AT|d>5p5P{<9x_J^Nyc z;eN4yeI@r#A6A;7e0JVXH=a{VRweGRFZ=Y#HO%jP=HqX7@7wD=GCp?WhuEV3M!)Rm z@960MwJKuyY00;>#c^lKyY1DzUu5$NPu`!qPQ$;URalYP=g7Hdci48suG0Ln%P{nh zL~vfz1zyd+n-8z{9g#ITp|R6?U}y{ehyd{2o{hAk(;jG2LF?)}+}oBms#E_h?>x2nqY;>8IQCRmy8 z-B7i=dG=w2l=b{g2g}cW`1*$Z_sk}|6Na-UgM*}%+V`I3D zCch31a$u0#b6$P|596os+3eM>Y^n-23@snD)n!~w!WQg*eDk%{FTUqD4t9J{-`4NB zT!M9lM%$tv_k&YR!u!>!-bcDZFuU-zJ%y*?I2{DA*V)Uef!Oy*rhiwk>7YY@-r$M(xz>Y4KC@A6H?N9FzI=RZj_ zj_%aIa!8;^m~Zk6-c?pPf|qZ-z9$y{;K}UCRcAtXA8%~Bq}u#57mEHLTduk^G<~L~+n19&t(3Ey+7l}KPKTJ? zYGO+5o+)>H<(2({Qj>Yrt{r3+>oxh9dcAM!!_%491%*;(o~XM#d12m~gsx4wEFcq=HW_}zNdi&tvxO1xN)KJkq{T*6`^*I9Y>wX?G0nRz~`>|fbq znHJ1sXZfdjW4G|@Nw;|Q8qIjU;<#iLP1Qn=ANYBpCNa(5??S=c=Zi$nZV$Bdc#(V2 zob%GkENjm%-os~6|*PdbJ|Dy12^|AveWhcD)W>NX5xuEsb z-q#F#Cpbb6^fd-@2p)ZOFuCDq=6^L67w1Qd3@bGsxy|r+;IOb`=49=wui5X{oO^xl z_mk@6<(3;>^(*aao)cKkg|3Ev|FfLofz!k$kuBjd54T+E44t8}ifdo;q*VWc zy+utSo6oEXzF)H?N>3zNEo@CW=Th%=A)DGd8&B$_1e)l*W^F7!TdEZ5v3OU0xJzj9 zl)j(I@AuvR5a>Czq3FN(2WR(x)1KttSsan&kosud3ghKHA!pw_I`Ven#0ksw?xgFj zGtCOQ+u0jGJ-4AmCp{y1`P=$Q7Ec(@zR2JA$uKxse2<6947Ixn3O{9z>$bV686Ar` z-Q#w~L)bL4Cp2pH*Q(kTuVk0MYxwhj+26z;hhJZ@-}JLbsP14S>%{MUhXeXv1{h6W zy=nc2>2FS?vlc}EaXQwr$?0y62b0$XOQky#%ma2Z>98~wG6t3(VVpY{Dc3E7a|W2y6>6%v}pHlbIlXaCG5hlKl*j6a-P@z z>g8c~-|zjt=X~r#-tURJ@*W>{HB7kwd8Kev)y3K}v*n(B8@B9x9I}Ev$Zu)>o08s@ z-)_Zj=~MXoeCdOdJ@;?@`=-a}@4l&_@N7rkhj}ex`@R}67Oz@uvGA&P<6)JLuOI$k zZCDn)^b#y}xKoxIXuM=PunaCRWFPS%3eR zvj}kf+wkgd{XO0#+Yi-0m|A4_EoEklpvBQyoJqTGKcC=#|I)_zZ|8r+7##S2>+T|@ zgA=c+auk>yTloAp$G?BS*8DH^3{QW)Q)DXt#eebr8{_^TSpHKq$jSM;MEG z4pyCgMZMN0%6?`)Yt@9_GAHT zft0b{v(}xfD({`|G-x`piLp^|eR-<9)n9iF37(>{>0(o$3+4+Znp`B$sJSt_wDTD?~@w0eXU=< z;{UwGx4!zP{=R#LKZ3)yNx@bHaXur5%y!+cB?N5buX%AR|`sByLh!C>$mNt zG83))dEVcDpAFe~*Ee7xyV&kOT+GkBtL{j&R0g+&y_Hrkxi_0*!2;FbwOpSk%+&VO zD9?2MAUwJ6b(b7#T~}u7)b*c*g~eXxo4j%Q&CRv)YN*zisnZAZ!x_R?E-Y*p(Ok)_x;txQMPcpovS~MdAI)Qa zT)14_(|LJ9-0c!}zePvfwl2)+ahg!(I8#y4@RXRC=reU^l|_qI&vWmstnTTrX>1HX zf84{-`NT5Uqel#MT{mym+q7u0yU7u?{q8F@`4-C^UKkM?d4AUmiI~V4GgVS%$YyL2 zeV<^pTuQ>U`Ltx;_lNW6JO4Ys& zxBBGsivKe|71y%&zS$ao^-twmnLGEG<1U5T%I#CH*7KWaaK(MojI0~Ca%{cZE`Q}) zR8p7uNBpy`?T5$W$J+b<+S#hjO*y8eWvpfxBQ#s~;{=oAKJm++|GOuC_MKgQxQcPs zB(ax|B$K}Xoce0tXO1l&*OxtaVBli>^yt6&@_+oxUS#uHNP8*VH*~I89dG~g`emDU z#q0f6Yj@W#`Qtm|`<;X9Y9{^o>9^|bbo-z?tqv@OVM!H-*MEB>!0+6r*p=E*#3}Hk zqbX9!k0URL^G)<}|8nW=-mxY>?UHBA-10(s(Th~&|GT|prab!IT6yVxOYSC9&c-YI zW3=Ba{^-}bZ9i|x!sJC4I&GZgg#|YrUnS!tGbK5X6MPX&F7}LYgNoHtyjxs^QvtYwC1*# zK6qDRalYN>_NF~H9XCJk->~`8lz02)-~U=4{(Zt_P8XN`CcY;pDxR6BX)3f~`-FPu z_wQ%QT`pfesm^Uh-#4r4_h(D(tWOrdpPk!(ioDmFTJT}Jxb*a z_vD?=eHfBcv~GIU?&g5}l>tU<9x5I;zRO;J{C?HTJ^idtw)1T+|1NL-`g@I^&>Q94 zL)X$3H*UEtom{9o`AzGHRq^ll{b~Ah-Q;cauba_stmembwp&J7vdoibod10OJZbrYzdQe)nsmzk zSLZV6DF;Ov>Xu9W|91b~@&iv<7m0Ov3gv%Z>Njm8)9+n**{+&?yO@=X6&fC9e3=y+ zsPSU)bg?@Q2@C#zo$>G{Ptx(I@R-12i7LTe!SgTMD5!G=#y*ddSnu%O^<}MTU23*Q z$fTvdv(1+kO8Xc*U~b@J{28t0Tr_#<(?=DOy_ONSV*vq>bj{h!reGST$1aAiq^Tf=s%#sanE`Pe= z@Ur-siJ$DRf0TdzSblTGciV^W#M|PM_ZzketUr`AYyOJ4?c%$B?>9MJB~xkn%=d+K z(1&UIZdrva&hjgNIdrrtzgSrB5XHvhA?8@ycAopfyN@QnduU7fj?%g?=HP0-VY_XUK`%bvo?-I>QC->@W4jHtk=T z`u@b{aOIRMi=0=5=X@8ce8+b)Q0ugBssGlXlSd4=oMz6}ab~t_Vb8U^AOF;lPu}qG z4TGIaPO+MAXb{zIZTk1K*;xHgIGbC!tzAlAmCpJ-%M(*%g@4{nfBo_Eo3|gAru1oyf8jsxZ~Jub|BBV@_0M+1&fJ%D z_<#N9Uwb6)ootk-JpbBkxyEz_^Zj|hIvJ)N*FO8u)I;q+ew)bQbxY3i9X>60R-#69 zj`O=S=eEgh68F$x6ZKPH#(PJ?`jLc^rSs}#%Ng!oKbQRXk8Ru9*;POPTvJ`i@>|G5 znJv`fVX{fglqnk+xAD9T>+V}7ertk4w?;wxv$?P4UR$3YZk6${v2a7V`o7cOm;Tjk z_2qC-Wbo1}E(i*FKK0xLXM=_|ug72i#fG2yVsWlzWlNEa|CWEHuT|rdAK$&^`uafi z8^@FX>z8HR*rKkTaZJF!z5D&&Ie+~9-|VT|R-gZN4}bpK+T)HVzunAeUelVAE)xAdXyc@c zzf1o&F^K$4JNef5$^7|~Z!3JAE7aNhPRPPT@IYY9f$z6lQkPAb>$viwh}ecgiT1!W zjw4?Goqo2IHn^z25n?G9Zl5R1k(6Cx|1p1o{5~@t4_>8p2PSATIdHvTTk6Qkrsc@U z)X8cD5isNbjYnl~&Y+01`t$EYS3;v1!dmkPj|F-7=M|D}G_7=Gv&H*C* zPaHZDZn-=XoVSSKxpC2_^-msXJ4DQ|cji>$j6d!4q-yc})th}^@XgM%{%7+fAhK6v z8=s7eb8=0Kv)uc)_S=8_)7t8{JMyFL^51V>S*Hj6zps1Zu2YFa_|)F)?OGuT43`h~ zFbJ}RO}pNZ-y7oFK0SZq=XdiHtoF#MDsA_%RbiPZtm0AA%Tdx*uu19UjV~p=ftyWS zAAhf3d8Kac_rLq%7r(JhJHO@lTcd*icJ`<5+iojAV{&Enu4_e7nUl9|{_VB(MtAap z3J31ssS58{nkRK8$;TXj{qFc&!5vq5B^Bc`>gP=y2!#f!IQ+r5i_ z(2@xeu@BjU4u;3%>Zh}UHST$O zJRK1~g_MlC zCaqZ0X2_GYcW&GM`}0MA-ny;4AZgd@84N7z-(?4s72i2jWpF#lHQ7-8ReQ3HK>o}v ztaCfR7Pgf(s>g}NB}?BkeideDx9-xV=Ua=9>1RftO;o>o_v|?~e%u24qcNUSzT&!RduGaZg%xN=|mYOo^vspdw)Jwo*y4CU78$|e@M2?>R0gs zpE&}zde40i-lpIC{;+`IE2ba5^MowhH~4Hi@#<2_gw#L*557+0n!hpEl-L3e^K9@u zp*T&IX=%Uw^wVb?9^8E}$v3<{K|L7n**Od2Z>&19RNOdJUJ%Tsv!lWD7^U zuvM3*&K|epvFnUZYgJV-=X@)E^X}dIS6w&qA3r@Mp6#;v$wxB>5eGMK-4#(WoX33` zG;+k}iUvl#UZd;L9T70eN$C)0Pj(2ykt$nx@fO?m(}xe+@H=TNh`nPf5@2l3>ng(U za(44<#UlYhRmIavmkYWweV&n}v80`0LfdBxIGn=jqE3QT0U>|TF&#J%cZu+&d|7nag#&u!=tD9mgtCI3oD)R zyq!G={h`)^50^xD zevC`d7Gj%_+U**!>&+?AYlp<*Y-U+m?lOxyd9KJ~wlv#O&2v$6w^xF^`0m;AL+66$ zJXn>NdE_~3@Y>hw3PLSv6#hr@M;>_Krm-Z1uQqvcsNk^^b_b5$nJXG}IB!nUw)<6r zg;E_~T#5~ukEk&S8P7TGyXJAC`6L8e&L<})cukpdGgi~rqDw=@>O)m^*_{_}x^!lId!Bcz zq)S73cH5#ZcFWuS{;^!kLl!39?vLGRG2QaYP0Nedt)3{JoVmy9rDLMRftOr+yck)+ z{8#<3`~T|k{U3kTylb}AHSSm;S@QI7yO@m2f_D=3@)AFeFtSX%QTuwjE|)>iQr3m4 z{NahOEWXz63$WRDe*NnVv)j`7&z`4Wn>g>-!Hs^!Q*LU$X_~BY?AU?lpya{*;`Q7j z=OqCVh0nfTo2%5tmiKVQqQ>IMeREtzcxSk$<4N0!Ed>bpG$T@qsM?RveU;9PUm zRa3{c(PAuHdH7~6Qx-V0*3h2w{=~%82^J!(*Q);39p6x`v8b^kUvs&jEA#9#rXm3r z+02!o;1KV(1X0rGQrZ?ZO*Sr)I@-m)b)dnr6Ik0l2jL$_iiwI&s|Y}X|8kmHtP-1!7Ch0Kw8H>@81woU~uU@@=9cx0<_YY^L-D+wedbf@Vta21^3EZ4%QJj4 zKtUFi9&U2XZ~sg}bz7&xYWc7ta+ptvvJG@?Z#GhmYFynTPAF zXD@q`8Wdvj^Up8lliS1dZNJ~Ib$I>ujKjOw*0unZ?@W?O0h*rocd|a%`mLkty!+~_ zFKs;*HI{>{x(l+(7?huQzny(*@>qJ#)9I`J-Z4;0*ossT+<0KFE7*T_x$Mc zqvzDB=clLZDQ>)wZnZ+-nZig%_6uu4z~A z4=iaB^Spj*hsL|4`A^eYAJ4V-{qS~Aarm+2JDk$>%N+vRG7fT1lkMcu6u7dMz3$)r z0}S7GFdccZSe?gDz^VLeQ|AV@hs@%QK?3h*Z$4^n&R6t>=Tqgg>g6-z_7*Uo6KFV) z;ORQCgqg`%lUvEpi*eEd4~HWa`NxwJWj#BDw(ef)RkTV=EBPgwVt7dzL{M`eBXVm&^KQ+4^^sp2CzwMFERCnLGm*ir; zh24Iq`Y(80xW_?_iPrnwU;P$g-fsIcrO)}r%&cSW$K@}t_}f4A-+Hg|iF>AAR=s|m zRr06X=9QfNA9sDaG5e}T?n)K)=d1PZzx(X;CfvB&>dWzps}lUF&08-RKe?Pb|A24V zroRn$^QoRO*2`(%gldwN~L~B z)5)*1(wM%~$V@hvYGgk}Da%daQH9U@`u~r29-NXOvF_-te`{H7`u1KroI1%a*L&fO z|C&kvt$rA{oU*?z_E-5(`mwz-O409R{?81vy0%b5W^p1@`_0>GZ~pn(F4o>A|GQ`9 zmnj>4v+E!J{q{|%;QXQ{?WALivNmL7a0Hny_J3D@c_|a`oq*?3H}}QpJ-PT}Zhn^0 z`l5qR?A&{zLXO_twEt{VP()9SP5+|E*_$8n%~g1`b=iiS)@=!YZU+6FuytzGSC^kU z_a>gYbzt94?#F zuk+s$kd2N_y6>Z9@8A0R`@G9H|4;whhX(1&_VBXYQ^2y>G_r;G8Sw$5vZQ1TT5nQWGfm_}JI)k>C4% zw&=dv^ws`n{<6p4>$m@rtpE) z8l?aDowQ{?D=$(ucX4jOq4N`8)#UFCYCqx1s{Tz~_HESzzZn}-u3KL7C=?NyZmwb~ zA~G9PQL&|ckt!4kFrRbanudn-Zcx=_JO@;(7Z*7PI(qK8mw6=6Vb7fjR|104@<8R^ zY)}d9m-kt1j;jcFKe)`?Zu&g7L~Hi(InP;xp3QmA8oZ)(Z|1^(KL3qBoNk}^X8-r8 zMfd$5SM@eOeetDA#a3g%l6`CatO`W}Eccu=?H1v^dy?0cRqYw5W||4Ajq*Sii9_57 zauMs@yP`>)J9nGdbk2Eu`EctFOD&OED7BtSB*IK>bYe7vqA+@R27eRwX|PpOOb z$a6igWhvKm0`%T_WNB#H@DT5^%xCXjxpT)< zB!|-v(z3})Xxn7;t(S8yZ0jjup?j?e1#By+QIP=`(k;Z~z zb7)g98C+e9TY}uJm;kjkoqAs>)pn#ri3{FXq^fY@9 z$b}CdKfPY}S9YQ+Gq}p@^z#%>PPnnwy2pZv+L6<{;E>}W= zbp-`EeO*H)8yplCHFae*HWYMeIm;R%XzaUjCU0NXzS8NjiYg_MEuzo%q{(f3XCAS2 zcDYNQ_=V1^+{zAn_Jye2t6QeY$$Pbn+vMv3!$yT8_7z3K_oK=VoS*;m{9&O@CE6BJ zcl~Vqv~n(NTd5Oa?&Hy!o!4KSoBCs~irm`;LaPnTI&wuOs<6zpZ#^PBL;JH}s+j8$ zmIEmfoZ*6r;v%97Dx9fatRK??Vz$^8g|9nvKwi{KpJnUxq{~aUXKzWdyq&EjIYGCn zFRgE8$Q8|_=aTnlyoIwt7xM=%jV4mYN)!v&6m1PngYkTWvvpy7@Up&3Ehd zJQ!>@G92K}`fj;BddKX4_ndv-m${#vT$Oxg{<^GY)_}M;)|QRi^4=` z@f6>z&HQ`l`#HH^C%;$gu8Uv!TXlKr)k|^i;bDH8`nfENJ(9`Oy;e<$#l+7Ti$4^-z(n!{E6vg8I9+=vrL+8R;==QEmN`i z%Pg1kkM$4#UB(+{D?j_{8lLAy&nvGPuxt$77$WlSe@a!2RdcW@E~=ZXxpdtZ*K<7=Lq#t2rKTxqHqO;`$-Xb%72x;vsKjwBCtf=HvAOJ1^b) zb>H}byW>Um^741((zL8fPZv-RgHflH%Fs;M>m0 zG_(2gd}Z~_4x81tuKl|oaO?qtfJ)Q9H|&CjAqkRV41!BC1Ew*_t(Uzz+t&Egj_md6 zrtNa4x@OCk`7++CS;1ZEU$f>n^M1?rdXc4mbAR%rhVJOPx_d^K{gOPH?VIBr1?YsQihECer zn`(ZQ_GG>@Z(hoOauryK;BBBv-xF)i|#0*A%=Z>)DZV$5p(h z`8&$C)RijkKlaU@h2zKMdg~j(t?zsHOcM2FUZ=Hg%OVxcODror7!NeLD6tvNH#)dW zVd8OB6NixCEy`O8@7ysurD8w*w(zdoulOgOIqh$K)Fk{{NB#7Y^4ETM>lYUFfBRc( zdv?D6dl{BOsf||o^-G(7?{oZAG^?jEqsV)Gze0D>rX@@a?}MF$9CGjErmb4H{+gcd zzh*0*oV1&l+_wjHxo+1vIRDJ*&0IKj&-rIlI3;BxiWPMv zA6|SOeqv2Fx8&c_uLUc<+^S+8@uv}wgL_xC!K}(O%+EFj(mGIr3yDHLX^V(Iv zejBK(z4c>H9XdK4-!t;*xcr%$Ebm&>x}OYbe+bIy3(N%l&= z4}P0ejdq+pIJa%SnBZQadu^7f*K9=<7tYl8*p;;Y?8OI115?CBBYoC)7Um?V7+zVI z^(>9Y%H*oG=k2C5tre$DzH6;eh~n64iv>>PWNl@d!u-Rl{3zqgh84`lUwPhGA6Tn2L8b8d$(rYz*KWJZZgp#$9Q$xAGv8i(FVpu|dslBew0)(#>f*xU(kgaSuQ|)D zR(-#+;QxiDSF4n(6va1Be)ywE&qnin=AyqL`xdY3d@Hl!`GVIQ7HAy^|HC#*M#_bS zgI#SI*DZy$Pv5F-o_xRHlh%oYUj**f3;vN?7nyopXVYnw z>FJX^wR%9RZgV(`@hA6XE}NCPc2?%5lPZ%uyCRb%jv4kOe+%qM&PkSd+4d$`c6Cp( z#BrNRp57no_tYMl(mx{gkV`fByOWWx}gU=<5~Il!#Q&$?nH6PmwZh^&J&M4-|2Z# z<<4@S+g_fMnmfH^Iv@Ka38u`IciI-LDehe+Xy?It%2h{vky+NJF2f5COV1sNvQiJ7 zzHpMI%4E~Ia(gP?3T6tuiFejg<62qlv2LHnH5sOiHW*${&( z-@gQP$;Y1CC*3L@tgCmied){0UdG-F?RuQEo<3PL_hw1XsyjXXUUw$>oP5Et?e9eK z^$!Dt)~1A94tp$k`}EDO3x}`NOIOmA}tOy6Qi=Q}Q{}rBnnf*qXi@*(@wLiMyQhm^{V(3zeedmppEB7dpH{8! zPrn%-&KsTaR_yIL^V{CX51ZZdx$%3>rtLePfAC!$ZhPWU?%S-rh7YdpKGa;S=T@kB z`^>$w?$XXnp1*r0=a*jS7spv~twj3y(St{hp8sU|I8bBN$y2MdSmos!KdCV&NClsY z?fpFc@4>t6{05VbE?E>{ePoeyi<1(A+xm7*;WNdLcE+ZzFXh>P`)qXTyM~H{siI$7 zu1<8kI`eL+x^HFQi^gloO)T@*Z~PlmTk|(llP8IjY2(U7KR(lIrkdOwwfk08Mx0yq zH1+H87>^YXlpn28`qz$@|?_>JF3?!FP-Z$@$QzU?K4@-&f124 z3+X;8+H>QmzpA(Hjf3kI_p~_Nvz5?xXArx}(6V4}blGbqz3c1BngZB3OnJ^Uz7v^T zsCnlYZ_1-&&2v(WHy+GOJ#-{lTEcMlUB`owYN@(WUus3isY zNcE${OHZB&W*u=^`{?Gr?6YStCK_B{U7q(Z+iO)lN(E?%e4Ju_xM_P!o!Ef za`l80ry@E^E-UW7wvErK{g`yEc0$J!v4>B13?6W^283cu?OS}1d& z>w4Ayc>DaH^0tRQw>CeQR#kYEa!hcK#3#dGhZFMG6HO&~R6cPTUD#uZ$C)+vrJk=|*e@@6^L=Rhq)nC6cV6w?WTKhhmy-0|&azUv>$UZ? zidv~1=bvOtuHk&DZ`!7F-EQfcOFGd`DRSF?yDiB*bU)^NXp*H))=Rt0Hz|)U+=d_EZ`xII;?2Zz0f7S=uj(5=|2T2Xy!p(`su0cHFL$!9Z@v9^ zp7l~5FHY`=*R>_HWB=(qIs4LZvb)q%uiWir({u%X7S27>^Wm$;@$N${@6Vq+%k|i^ z*yYrsFI!CdlW*PfO8DC0E|YX<<_S&9Sr?_2)S5`Yn#U}ys;Fn0&e*UvUaIUR%O!p} zo}){r1gcJ5`YAo8d&}P9Pn{uF6Ir>HPjxb;&C8!(6&1PMYsSV0g4t)Bgc(vI6U72j zL>fHUCMKrT+|jIX2=d-`>>Q61pVw0T$N4L!uFld}v{mThhDQn-M`nbaQd(rPWXTG( z#Lk+Xm*0Fp!>`|~W27Sd^2?F=QyZ%G^8epi|A_yy|EHwq|DqSlzkMTjf64}DVJ?r0 zUK>LKeR4N$x%2$=_dCb;to~U0dzV$Ej@;!>|8w=K_BUiSxQJVDu!J6LV{F?M^z_%R zop&V3-%lK6v(pru%!RpecR10e~O80j(t|P@cdept9hp{mmHaUrTAr?^}V(6 z#kyzz>au?n%6HzqR>4A+XHLA{oxYkgOv4Q?EA8C5BiwuDcAljxeb4OP zy|kQl@r)#mZJmX;8#&HD<-cEd{QLhyKj#arewUT!^RIl>*%+la#*NdPQ?^Vn{LT@1 zNGD8oPxsN)liMpgCFZDiE;lVXxlCwz$*a*drj+WJ{<@prE0uq9bpp zu%NSZ$i<+;K1Zes2L-aGwwekB9eKz(;bLHDh|9@PPe;i%p{b#s4grxCF5eGMh)!6o z&?)j}DkIOGV;Y*GUQ%8QI)oHDS0$|Ea&_#|=2+C_rnz&Ek)2)lyz<4|R%7N^ew?1xQpKx4DCh6xBhC@vr22+YM9ywaw$(`F4`t*Q^xx%vJaBwluYLG5FS#LA(Ql3qpF?N4C2;ZG?z=O2U+DPFA)lKapX04a_qRJrx%Y)N9H3V0ZX$p z<_juz)QWDjE&uUuv*FrXIi{Cq3*FP5EO|enOImQF<*h!$NxPNoPdi_}a#O7FRrV_%-MEmmYen zPWCIw{Zpu~c&_^5yu_(-U;jRGXASUO8t_7NR@9q6;&c9qylelkC-?Mko8|9yMYE!J zp3PZ#eaTPx1Ao8DKlt~iPH@Lb0sYVMV)j}a8~2CHygFvD7jfgAXC{A9YUifwKjm~Q z-0sfb$MQf#huwlpTy0(Togbf0G%_u(>WkT3>GwKKuIc2(&B_G}PU)4{>)sLSyZ$-& z>UZOZ&!@}ADJ?*Y(a^04`O65!LLciXAx^{o|3N0|nCEBrRlv=DmR82qs7trA zCLCeeQt&t3+*j2|ply-)LlQV+wG;ps=8KAAjs zq9D)b*$Z->uKRp->Q$ze+Zm}cJUKa;8#gx>RNkyw`B5(X@$35fhkx&LJ=D9{Q&(cO z-m0bHxZ0%BtV2hOgO6VGyc=a{T{ZtgPhaO=`OwLsQ(o+uldb5zv2^CapVO57&UY_V zx_dM9zRHWmv+gbYd-q>kbk=Mh+vUn9PDJf-@++6gH)wD$&=gtYXyd?UTJYF6E7e0f zXx7;Vzv)4p_doF6OZ>5G#;$6oCmcSD7Z~{$*Dg`|x#1ym*7QrIPnJxYGR^Z+lMJIm z2`i_>CC8*$XRBIoY@cb)arayJ8>`={AqU)?dW5SM{?D4a{&!*QJF-4|X8dXX6njSNPp?40 z-rV3%Ww%Ql1%vy({XSLxx}&r}?jTb@!j&8s<0eOuBeTL~e$7nZ@Zg)6rqdbznuMQA zLL2Tz70(OhC@$u*kQSMxa&^{ww$&wu8%~^QlIV1FXjsQux~)fL!Ld+pm1&Vq>))y! z=g}8wU@Xc^I(wzr>Csuw^_mZ#rFI(!tn^83K6AM7B*$4sla?mN1`h`XPdA4I$xxL@ zr&hb~C&eEH@;z(zmNXGDoHg0y!bF!)r(H~o92G=={8Wie3ybk)&0_DD)j7hYahr?p zYu545(pJrz`iAlSR$G1>-v1p~|JX8R!G{e#TF>9D&D}ZG>|kHYQZ?i2J9IW5KXY%9 zb=2p2hr32?1}&8_dMnj>xs0W*!#<`O_;guztX?V3fYwl zne_h(SoVrf4?5D8o0nd4&xhg8-|ydF%B|_H%K88MlhFc>L{U5T)AJoF99k+Kscyaa z;-lNj6tk}Byt_iUCvH?wR_75lD|omvWm?vr)`baGsms^LcfZd2x*+UAoq@f?nbWs< z>RfGi%oVpUeS2Wa>Jwr=bbmlOKa=)dc-%tZzS8UP&%_wE9%_#?}|P@<)?;CO$s3%foBt^yMc4 zckTQu8fmMkm~?7gPRXSg8Lyibe7U{sYrne8e96yCRL+~*%vVtHb-UbbUK;aGj(>7+ zT=&5>Qs;D}u5Atu3HQDbYveDO61Uf8_j>>6Ro5OlWe4WDEnLFHx`l(aVCI?)0rK}X zw)?HMdLZ7#-o2LXGFvOBvy#H<`?fOt%U?cgk`f6DyI06u^2jhUJQO6f-uUM2aJlztS&VGK@1$1U*|e-HmC14`^ZM&cHKt8H zcW74TGDdHcs4F7Im9rj8PIzMC(|mTt`x@6WKVWubN3y-+Vq%5DRJ;8ID+-Wh@tbMbcYyC6>WPY5ha#eNpsoaq#uzjWzebE?W70HA~C=^8JqPXW##kIitil_2ONYwXbEj z#PG56^gLuZ<^THV*(oP|CMkynl&`gTGAZx5{SuAv=?0e^9&HlbSeWSN733tkO5gyi zz>Wt4~h%%Zbcb&(q|1`=|OeMTt+FmX{ZM z`rBLd>grmzChx5l{r3KUd~M2ezWt1ECCYVb9IWR_$~*2 zO9fuV8!GzB_m9{e`Ni_3;0yodXLtVgeEoGV<*edkFcm#N-FZr5>GML@ zM@4b>}0pxS6AlciA{SDcO#nb?d(qX*mtEm zv);`x?kkK@PuSW{Z+VH+h$2O{e-|!^*_Fw-6hn607*rK7- zF3x{uy~`-ySa9)HMbi570s4y;{`lV2a8+Z;vAG^PSto*h3#3jl zHyLRt9tn(ncfZfC!u;%GDZvYwl7fOuZs`g7iNynIb{BtTUDtAbnnyMhLaP9O_5!sAlrTlf*W=&Ys!@oW_nd4CY%Zu`N>-$go zee0XgbzsNlwC{4=!8~n~3hQPXY!>m{ci`_#!?#%&_T*!72jfuS+%cJ$*v*Fp-n?)vll(?L{kN!Vi5ue!X7b z{#L9F@8`X79|hz4x!v5CZk2sq{=cp&+Crn%=kFQSpz2+>?p-**cSx~OwqO!l$jRAn z)ib2KIiGxKJZ|Xha`LFFs$_PLMPV+U7{5-e-Tr6hzhhO|9-37#cfOg4%5Q(` z6|eh1`d!aXx9i!C-$mZ-Y2n+rUU_@XD)HS~Q#^9kaa`LWoh+TZHbm`xaP$A}Y?~u) zdx{=0B!x0gJ7QG8z##VRduhSHN5-|=??t;?zAd}<+vM*m0seEVeH5Pk%~>|havEE2 zi_OLbW<~m&x7I!hc)LUI^UFEgCiuA6upfSMqr>+KG<^0=NYG1=dF zb+?q9*}Z7S({3io6&D$s_HbzAX}mhHgl*E<-Z>wbrJ2~y&$V*c%enfZ>n zkHj~&22Wl(jeDJa{EsQlCw{g4o3h2SZh5G$SX=$M%gy}h*EJsZou1w$8nLk{hC^qn z(4%{*g>|Rz{1W{WukvKdG_T)9wx7j+N@>1~c=UPI-P{|wd0i$47?`GrHcVlbi|ST> zI$dY7S4uv&@$SR2>z8vcpJTP;c=z#4A=S;1fBYr(2!~4cIXE<|INNV{;P$sA$sY0( zXXZ4S&*(e;-D_@6y7u1)M{WLJ)?Tj4_kQ_L?XzEH<#qSwr)>hqr6ojWZaEyBzp&$H zAD7(5gL)TQIcKtSXE=2$9BewUAl*vsdd}mmy=FxV&UQN~E}8xM*A`m_)tmx3kqr+l znVU{Nbzp2WvDp@{xN8&V{c{^8K05ncF5cTMa{22;TZ#?_Brte!OipItnbo_!*XQHc zzgiR0{Ac|*eE9u-^Xl`v7fzTL`QU(k)s%1j$D}OfV_tt->uR&JK~lnF@|{Txsv)xl z7qKf$;w;dzc-&G_7{nngEbuC^yw?5RY2D(=eJB61)J?w@8k+O#{>(?JQ||lU`?0^? z_?_bKyT`vQU%cnFdO-Gxwi#aCv$po^wKvR1ltL(l622k)8h@q7Pu&-vLe zOzT_b`tRC#wY2PR?zFpw#fAxrF1DX@7?xJGvK?y({o_gWhSm4?cRnwBwOq%n?CtC2!Il28&eLWt zUszyRKU;ZCroF{E^SQUze8^m@DpTD2{e(ot=c}7oxwx(geqj}SHK|))Cd%Yw7?am= zC#kLpCMgS+uupKEbM2qN^k!kD{Vta({q0{ee)8qg+^gi{@v_yyR^Q&{e814Y1)Ha> zX!Du%l4~p@2tOc=2wX3<&D4k-4i;r72qrXN(RayR~({5_@r z>J&bWNwUpWi7doDw%?#tqY2b0-=Ue|g@#58ro@mFn-)-~wf6lotxN)XM0^6_cajTX^wf$bX zhg&wZWS^!F|JelBI_h>Oo@EfrD3kU`=B=G9J2>koZ z*4Mu1vhSwP1=V-CJ-6r_breYO2wWT-=6)yepXtjw|E;gLZ+{)Zap{?*`au~Ec|}g~ zTkHC6-8aTmRD?i^LhCU{XL>h zA~k$Tu9L$#IEALqJ7a(U>4CD4JttD)U+v0UyyDfbs5cQ4RPGyB2~D)Pn#!T*^XdK} zeS?d47h7$edNO|ED(!97l4~r20=j>1^86NmkUeWZnnD3kxLUcRrmhmUX#Fk<^4aq zbQk`-dy`LPfwAP%qwE~FSBrPE3;&*we8}#>ZGk)A4emYY+0P=BvEa(ls;@8Cxz6GV z-5POP=r6~Oo>dt$?)*A%c+shD7T4}0Q?mSfu2s!ixA4NfZhO@>`x`~U5j*FTyU)j7*1AM$m4Uo&ynjyFhZgVqb<~t8rt{mTywxIczb{TZ)4KlYBhN!2suQ>}rf!!} zOvrJo%RVk*R&238)>}V(o53OTklp=GwP#-l44F+j#}?YD&onk)&!f#h zZ)w2w&YqGDbLSoZKk+4(Y_FK?TfUZvMF!zIId7*KOK^qyCLK6pby4%5G@tPXo<|yA zJvL37=OYq4bH>8kJ_jA$y}#PYuPwe=@bORDi#Hdz|G5hr|JgIyghko;)&7nD_CF1O z@X*ozMn?Y}hV}ny@-AQgd|&<5%GY12@+1G-KVSW-Zu`s&Q%)pI7fTSKr(i*3B`uO6FbL_uo39_dIWDPdJdl@lrqS^y)WN z|D>vI&gC5F{FQM?BH)mgr2B$?TBMdzmns8QGB(SK)LaJPL|kPZAKZ-`PFVa^en75 zSiu#^uuXL8*@ddha!xh+tZhq6YzRArNkq0nibgDS!Tt%58LA>M+50xW0h zk8rJ6|I0?;om`_OJ8P1~L|KbH!S0ns&Ko#hzc!Fd4Kdjg8Y;xoz5Z9_PsP~!tv?=b zlx8@@&-4FD^vlDwit;Jy*ZZ439-0~YzewKUzWBOq8Hsm?AAbs&B-n1UFXzI4|IlqKmX}|BBp)5jmCl*5V%CbTuC7(9R&}lF08^`vGgvTu`Kna*`)a_| zkPz1=3a=y-uL;DyH(E7IYt^o6!e>{lTC_-Mk)@r|!v7g<2+X`-0hL8|f7Z=x%FoB7+ul64~cvRWoxS>e) zjIA-p&T!9=*!J{{(VeWPGG_#f4T5&)r6u*LMF(?x_iCky-AX-Oq5(@HW}Yjr*euqYb1?R6 z%qL#(Ffg|KfA9QkrfbvOCEt<~Q$EGkpW{htWC`4Qa<|HqEpM~c@=~A6MKJ7~?AADK zoABf3E~kT>0~tqHFlmgrn&qFT_+dW-U0vl@q|681f_k;O)xHTa(Rf;+sn!+Rkyf zpk~Iq(9CR4|GNMCKOMZ6wR?}9_rcY6b>91z*M?{~X3}$@Rr>sS^*wbcM@9l1st1Jv8f$1>$;e7>i0t(hb{?`Uy4o6NsemGv40~c ztCw?EymRDG7fw-{5frR$_^Cbfk@CrH>6O;IcPHeUc(YQ(S|#E?sat zciXf}Tc`EvF1lvYk)>>>s_t~#ueMLYeBFOftz*he0s>5Kt&FVSCKWx2JA6=X1H-91 z|95K~2|E3R(<}6UWB`B79K{9q1dCiX8SKSePdH6XRBBPSof35E)Wt1Jm)b8mnAC6b z_pSM@?_AYBR-JbyOz?>CYhQ4-ut`bCllg4K7QxMubJJ>`*(`eL_eCVHU`a?@p|FQ> zl5zPeIkC-AdFgSd_%B52Y%31ZFpN2Dc+#b`#o{n?OF_`|rd3~Sy8|T*m!&eiH8c3u;B9{f4E?f8c3&Z^!p34S@L zg3{)qLjCN!obH|~c`hlBZ|65V%k^~4*&}&xiI82#j(Zi484fUNWxtqmm3!OMz$NFC zmW9YlJ1I6WLNEqM?Yz zMfUEaTW2rY$@W2d$%7^m^;)}CbG_+JMmVr zZF#D8*S3G>&Od(jtNv9v)B7(Lw$E!8UuB&5VoQ{ghmvpC?z+!A*2^0G)Y%!;VpbY` zhwC3>r&$cI;wHukW(JcI%h!C}m%Q%RpZeJ+yFP7o;*=t`90lXx87C(j za7;L3Xi@#~M83QK{Po)>*vd+{S|kZ73KZM?W#4;$-P}C2KNSsUW**Zx#c{2$P3ldC zzR84JW_gAK7QlIY~HFt7?C*HDBa{cPlF6BVGE;n<`)bDLY@t@vOWy zHv3tL+xN@NkLQ(|EG@tH*tv>F#`~$pw?|KzZ`K^s z`&8h0T_QKBMnqDx6tHfE>tKE8>@hdblCC8xl3%H6N5FcPG-KYsI_nIju+GUtR2~B$j(v~-1s8z zpqk&Jv<%tG%8g1ZGt2izZE3XFx5c!#Xx`fJe39q5J8B&FUcOs;#eY`t-1XKrIVNJ; zmUF!MGUwd+?2VUUSZ7_MVrat!tJzX;rLUzdlkW zHMOrQx5&gZ_U(^NoqIRDZ}z%uCEGA5E9}{%Wo8Ffw?z5#uUIUgaJfaS_s}cOBGIs& z8g1rU-qR!Zrp^5x_xK@rfFdX<=8{|^`Nm$YG`WuVdb?>*%J+viE;ntBqGydv--(1U=)&4Wc_HNpjyni(d zZ@%3T@Jr_jx6c+yqgxjnCU|s8&ARuC?cCl4HVmIyq@J$7ef!_yjG%k347Zdnl5)Jo zyzj_VkHl>X<_F9o+tM;KZAv|~^?T(sgfzrguRpLSuC#RpuT1%A^-9(@E9Rm67m9xQA9MckaF--Q^j;O8lT+quHb_3XWMndh zNn&BU4-fDEtY1f3Yt!xre)+Q_=R<75!wU(G%{;kDlP5_u%Qs3?CGsxlSpKHY^Qhp% zl8^t7HOXC4`qAcmqK#c{^Jdmyj~x9YKaKORWC!%-G{-StxWXL0PDAQQ#Ia)sryASv z>fI3MuE@zrmN2_4-qYF=&^bq4aL0?>hpRS4w!Y>O&M-HVp6n^wq{@AC&axKW#%VcT zN2KN6Xw)P>wC=dp$M$^5&5FejiUoNyCpguK$eik$F|A`!Mh3@>RT_#CoWVT{FRJye zlQ?pr&i|Eh@a37Ip&=omA>1wzEFC`;M6S(Yv}ln1B%k0RqUlth^RNEm+;9_0iF`nraMgt~-=x*m1EW5L$+O@Lqd;-VjluU;v;`U)zsaEg73 zEDQM_d%jfnj*zL+8}aPrK|(Tn4mXFqckUM0x@J@Gu5H&kLqmlT_?CkkgY%^PA~P7{!NRmE49qGmiQf0d|bS&h$&@4hUkMur+TNX3eriMsQgko zhDk7Bg`xnza>vgp8_Z1Fz6(D*^yuXM8up!j^AaAOGCl4t__d<)zwEnPtGBn6dt49c z-}Ra8vaE}qOqzPm%dfV)syzkAuFupBXYyu6(D){NN^w0|FN|GBHRLa;``*{hPy4 zdr@%u92x(j%vV{NGCTH`v;Ti{{@?C}ud4s{8Gn*HEYBEHYQO2+`h7F)Hm~!yedNDv z{WX&-=Vvr7zkW2eaNj9$H-Uz>TirhtZcBct3O=RAz)vp~YS+nOGLIXkFrFF;H;fTFS)e#UZqrt2v-+!=e)_IVK8l zU07wrAfTh7C8XfcsIu9RiB;p2qOc+dOE1SH28Tl}j+#L_I+~g)DnhfS>4c>wv-;ew z*|>I!%W_9OEk4#a(%bjg*el*Cx>FmR?o?*KX-=K|6Vr6*eWypeRh&C?|4G=I7xzql%s-?5?f>Ry-~L{go^!R+_k4h9%5fRGMA1VY>Rv zwDLQ-QRh^f(xtD(&cAi=RjZ zt+8Mk(`u=S-P07Aav~N_JTrCu*1qO-nI1dz7S%B?@m8|(JhJ+rxc%J?K3|Wi8sA*6 zv~G@J)v*VA1+P9{t-M;&xWVJ;-3MF4uWDonM$9==e6ILJ_moX*_Z1h<^Ij-%+|=^I z_pX->9zAY-db#2x9FP}rg?6wzfES>#ak<0RP9LrZJ z3E@@^n-#G!7vJ1ocW&+LBe$P-)@-%)?kldW-P9;~?XFR{y4f$Tmvb&{*t{sBgtc73 zwR2vW?uFu>zA&Y8Q#?EqZ8ep>Rora?c0Q|Ui7QC-dAxJk2me&h;_$?EHJ;v?+0CK3S!$m#tjhYg2gU;;yNt8Z9=Of~le=f@{yMozW$Jx+yY6 z%!iMy$maS)XZt2&mh)#FRCL#~Zri*|D^$%ua`(>O!ii60-&nr+&^k+x>4H{Lo!_~A znc)w4HLPrk6pJpMmwmdw>Wb(U&SM>`l+u=IO1JTQ9&z#I2y$Zo zTacHq+Eh{H+PvQzP9HmP^_1&7E#qsukNgZ{na|l`lht!4XXcr^dZ$k3yUDAyw;%tN z>hdc!^FxiOalxP0-4ahNr~J2Ex7X-4>r}2&M$3$za-BLgUD4U-`2}W;>{WL*_8d8G zY$S2)=`oGg(?&~Weq2yL&*W)j(=z2j_9;SL<@W_`ZUR{ zx9x(^g{Id6+=fefUOrs*{Xo`pkx=QbkAa^iZkHEpscBzhw^Y28Ir*|_C>RI^2Ju8a z^EWq|yz_ukWo5XGSn-uYtpl!pO)OncY-mG&2NGDtjYzs;w3oROh{L4?UwBe8)gxA1?|()7U9Qxb~;yu&ME z?UO(LOFw(#XXuBNwAHsSOg(Lu;eU4h+E456zq@j#=$G;4Cp-02e(n5o=-E4E=4Hz{ zPR6t2nk`J5 zbU1VwdU|xcbvY&{9Nf|}S+=xXroHuWwe-E%J5i^*-+Owr^zAXZ#S$FEu-j`Hqoyto z!;A}Dz6t>$C9(VSXWfa_`*dOLd^f$@GiEypFLRVzAvEFYim(W_<^UO0udde?FDtqK zyq|fr@0+9bD}h-IZh}pmk^lbsJ2q$g+Mj%~$MW;nnlo%HmmD_qvc9|R#2sU8apq)L zqpn#?l!=(%S&kb)+Y~~#EGv@u{p)$t>oqK58$~p}{q>m9>e!aD?y9$>ZRxKtZ3#W= z(x=tu-fz!yyfJsz+Ypw%o7?8F7X)ap-DcEscn**G*YZ$}{jCz8HhubD^*(09BiUvqeGQmq}jr`{wJKS~$i+5OQ1Q6+p;OTcFY6xP{M}-4jFWx2%SkmJ`I{dsIj2q1 zES~#n{cSnR39kbMJKlX0UVPXyV0vWTx#j8e(zircl!k458g*zY@2(`vqTeScvhPi= z&2nwK!obiXFgIh;6S)uC_bs=FxK^cgcoih=tvQsW>srQl+2Pv~#tN;2eXB3OSNUBn zdq!yYlY=J@{JL=X?I(F|g{IpQiVeqZvAx(UcPn}2_cMKIO5Fwwo0(PIE169~RSJdL zGCEcq`F&;i!ab)uW?cOI{rBh2%1_Tic6WR&R}B?^-ZbS^^*`72<=ZFJ{OsP(nBwc7 zBw#PR?$o|CuBc-YS{@FHw+d#lsB}-9W|{HR>x;ke(<74~-`h0J-08p(<{fownX zF?^_6#weTkC?I&pt5D}9H+b8F1%*Rg3|#_5RSa2#U0GaJ**2VNN?Vnsp|)bxs*F{$ zIuSCb@|9=i5v38E(yAw!=!)v-jXf zeg%PCmt@`vu`P#YR~so*a&#y(ZoEHr9q;TSTlSbLja%2YEU(zvG4tiUH^G$;TThkS zPF`0SU*Me;?H0cEN6xvomXDqudK7eZt!{4IwwX&;W`%0$YD)!fS^P{i#d8&_T(Hk6o>tg)=L^x{;P*dN=4U6$vp)6Esx*86_aqqVCAy>laO z2i?w(oS7|km33`yPGFSi>aec`hBXE!dsk*%^}cU-YESl*Xcwm~YgZ|$uB;JSr?Ymg z(5)V?Uj6Li8A;Vwu8JfjdxcG#8X0%pXzHTXsT!vx1zt6?9pscQ2ryfqoGJI|&`I$n z@6J1Br0z|gp|$#nY`plNF^TjZ8=>MWOxcp{hmoFzC@ z@Iv_%*ZC3clXE4M#U5UoaA?vQ=TAW?9aDmzrnwqL2X8CZ&kN?7wsiAW>#DrB>`$Mb z3>DK@9)9qkxP-3UwI9)v*Whd&MAkscI};6_;a1k!L@rWA7?D@K6)~)XzsQ}-7KN<+7Dmsy}UWz`Qf&5 znViQm$1nR%Lw4C>mgxaAVqx-UdaE#*a}4 z-1vU+Bz11K^>HYCUbj$DY$0bu?>VWn`+Mfi-0?tTyCYX4ZdeUX=gE1AXZOAsWi`7p z9a7ZWp7Hz4TE>Vu?FWpT)~Bz0dAa+j+wxj2gH?qlFA7VI__tqK@_1|IbIGV@u^znd zJ|2pEXJKJI``!7RZ?iX;DXJPzuoDebYs)Cj4>RpM+qP`|Jj*L@=VY31I~^f8_j7q# z%9&Mb5<2T6_-CSEeRp}e>> z`g_rdi}$$|(+|C08}M40;ZbgD=)ty1srP4NSv+>H)!Lf8vM`_{RkW|~xN*|*%sIY^ zoY^w-Hl2OW*fVkK+l|2~i>znejlA-9CG(!nVyBlLbF9-ktyPU?9B!FBRhg|uMJ=SM zEw(vCaC!A*nJ_8K%DJZ9ON3f`R|=@ix%yz`)y>A86VtMprpI!bi{%(J&3Gd0=cUgTFVfcA@;htYg=izow5%xBg%g&(nmpO@ z#KBIso+}%SLW{$XWu8#56>U@#WX%@(SZma^%JoQZ{6rtE?+S%oJGROALyHB4z6+Uz}Us(I< zOKH^P6T8m&-PmQ+%PHwq>Y$phZn7bD!{VCjt&cu7wm(=CAf0q>yGOoG)Qu@G^k(?I zu-z1M=GomB*Hl`TbF)lYJuNg?!s)40#hlP6u6ue}Qcv#b?N-+-*2$lyBAGBnKx6J& z7MGJODw7VET_}H$eB9#TJm052vf09q@;*$C*f>eRD6(_Uj0BVXLOsW0Zq;h*?(v*> z|3TYy?uI$1m7-KDu1C+-^n6tQWdp!91sMR~-R%CWIckbNj z+Q+RgU6zhbxLvS2cv)82-IJ56jLMg;4%G=gbEidbIJKPDz>1y!X2I?K@BR z$CqJes*_+$%QHD<|TO-Gz~nxI%e?585&=S+&fR_ zk5%H^eKBu#pIh=odlTPv<9mnsC+#x~udH4ASUJ=Bao5r|rm||EH>o$-mucl)dYEzP z&a$d)r?;(0UFPc7ueY)^VM5`ym6MKgxqdd1x^3ke8J-@uZPBGKvnQ^;K6^%ZN(G;U zVV`s3AyYPyJHm5ZpL{y!#KLz&L2bp^t_me?9x+kobOGM{(mQXC9#Fr?ta#%I!@_2U zuVO-v-`$+*awSbKFwikv;I-)j)p$KEg)L`KUp>xyP%mpykcv_5pVqZj&TShOH_ll) z?T3)wq)R_vE<1mJTF1{dla#zd@>*Zcvi4q*7~t~pgYf=>cV%F|s7f6Mt9QWhL^oV@eKnaeyI z#Fz|t999N}N^lrV{=UZ0C)e5I#DR3?i?dJr8759_S|PthN6T2(R$Xyk>!pPv3ClHf zrX>E^vdA$1w!h$8=KcN^B5zi3F_kas&WH%#5tunasD<&>i7WZnWb$`1Tiy&g^46fS z;6NIyhS=q#Eus?V_}UE%W3zKLf&~-QZfFE5O%-EVaH7g6Zrg^{BOSwn3!eB z>XDV~k}SM>am-JxgttN>f+qQrtQLX-!F~0KyV}m%E0wjFS0_pq`m?JvY?u^thA~vv z;J{gxixW*=a}@9uUGwW_o-lKLnZU+ZH>zfFbfms1RV-W3xa!tPHQ(NrD>@l7n<9M| zaZCT^y=*!Ay(i$t~b0nKt`1G~Hz_Pf{ zANRLkJXy}N^T!6WH3lE&#;A#1Y!tdQB}hb-F=RT=NhXOyCzi8uab|jd`;nw_WT{tc z!;)q#H-!+lH`Av`nN8UE@kGX>G@Y-@YumqC^S!Iy<8?3~@v>T(;R7KJp%jaS4==~X zXBn;Vskt5vI^cqee} z50%g(o&{4EBv0&~G{a+to@C2uo2eDQum7?<700l0T2x0tT+2k>xP%+djT0`FJl_3J z{@{#1+`q)H%B`RL_ioK$#+F>e8EqW}7mhhgsR*WXZvMDw&+^{zX=hJ*9|(NCEwC{$ zL*k6@R%YMOzrSuoUR}x;p7o`6-qh*q&Ef;v4m9MN@(cDeHcZ!L{v#^J+moFB!!+{h z);x`^yr+3vlSMyHP+N6!{(RlCrBBv`@krdCd~Q3dR0(aecm}+uE3H6kH#?e7pbXycyqxBd0%_*MH$z!ZIa&j*qtcQ=eJA+TT)c z_DrwB{I`R{%G6M{g>9(`Q$<#EMeApKELx^?>h$rhY?jVB6AeDI&koqIZMxf$*+IEa zKItERU(?a|zQ)J+q~y*>A>P~jKP=iAskEMrBUyS|%(PvtYIoDKD&j89^gncEx}fo) zvooKv&oU|enr3{8$2g|V?9W2>$jC)vXX6%2^JqP~#rI}<>Z5f#pYlma@N=pxxRtZ< z#DUY1OCB4^8k~0bjXN_hZ|Nr!7v)o%mTl(Q!#LOMwP9x-X%fjeP^$fSoQDkM%HaNe(1&P%(?mGnE5w@AJS)I>}8+quK)Hw z-uU&0a^+|KKTc?F%wS-az4qnep?WsGV4Hu&cLW|79Af0tOFY=@E7t8Fv}Wg|poGiW zlU5uk)Na1Ev2dct`9;$?{MO5-Kk@kbY0sr*9)4@QHx>P32c zTm4ru9buW#a^bShKhf{J?zlO7XwCaK!D_wG2H=ezCk@;Clm->%-hF(>l%xiw6Q zZ~shUYP|Ph-mItPY25*_*2g_2nzi2P_BdLk8NK3^>Jz;Z?RynpWHz%tGIaJZu1*Zk zm%KH5omRQ%(;H?}165fZ0!>1L0zF-hDqL_32^RJY3=(E_2|3~u7%0N&_`NGhc}8#R zVy$$oSl;|SmAB4s)oo3-bc;}wSQrs0CVH^3Ro;m6xv+c99%tqwee+Z`9zQ6(tzyl& zXjx2bW@6p6ir=SqYjf-mQrf{GU)azn`#8cWAi7Ot!kIAF;LZz-sXMuxm-&7x*3n#D zbIZzm;+%;ypZV-p<~y65YyRbt>9+6g871}Z?+-d{I`&AV<87MXwMBD2by_Giw)VG8 zKk@5b%D&^r-|fGAC1dL2|CRss-!1zR#@BG+U!MU3kAYI}mVk9lmv&^AXe0()NqYIb zA*F#lpPBX6wGGS3{{oNrW z{pL({=gu7oYZVvY5|dY{UlsSHFL`t1nkC8_DHGW*OI}{SkCCnA)u&D84u(aQ^R%2$ zbY#&`NZESa%BA_J|MF)a>saN2uN-GT@O;nz@@GHl>gJ!=eDTTSO>QB(v?rNd)HU_b zEsM_G!hI#e&QKxw!-SsLJIezWDKfwNzsBgo_MaECu6>SDiD*+gpcp4*aQs5-IqN$1 zoq1WwUsdLRXq#g(aZ^syhNf1g)M*<$_9wlnX|M2#OgAWhUQ@swB^SS7-NxSiyhopO z-`U>V*2J$iK{5E=tP0~**FvYf^FIV}mKYMKaSPFipH*dWw_EPB4nfvwieEz)stTyK)HIskWC`_!fJKj3K>UTDa z!};xU-$nf1=A=A6nI=Bl|LK9yB#z+3MLccy875^3UuBsnlzM*hhlK%Ea?%Qu*H3Da zepvhb{HvPwLz{N1Yi9gacjJ8I#hCf=Ka)V43`>^*52H)a+r=L`b#BZ&yld%Up$CR? z(h4n?@8{+FO}}+>p$X^a<5d9@Zu-hf7$rXrAPy`Mv!iCyK8eXGvtyEIjaR8+(v1!}hCH!Q3Y2tnDWzv(9Lr zs9LsF;>f<8mki<_hb(=^xr9$bYIki*-zpZ%q@tobD@Tk?`|yyWf1fS|)|V z42N8#Dj0hb+YU8v=gU>y`OPsygw^4P-P5mM-apCze9hyaK)KBHUZqt*Z|BLK|GevE zsGw*_V5p00P4ffqnuQN{6r8%=b9#NB-fnyKES|2WvKNdq(v8-nG&nwL{ue*fo_odT z^4yt{oHKi8y!g`aZ&y^5P~+AInT6F)?75Sa+Aq!hzja4Dzx`tCJtbR~>R*#$Wb<=q za|$Z5fAxR%g}@JIj3#XU&=w_ly7(Fk=o)H%ycn(%Yk)Xd8LV_ zy=IJa*L}~5ON?yTzScW$X{mR_&T{jTyVpYvckY<3_p-d)*XQox(mShX&)#k>GvnRt zqPI65&)i*79&Vg#ZX8=|aChg6JJr}e&RL{J8rrw=Hllh97OO_iK+>2ax=`C;evA44h8*VN( z`gB8nnvqAumz(F-9=l^1lD4wNlVg>Sn9H`K61=kt4i@b=Y_j!PUhy<_U7x4T$6lU_ z-92s2W??^#Rm#=ACp>1n)x0XVbFyrU#IaRcT1tzwR;|)fT9mtS`?JN`9L~jew>;Nn z5?DU%N?)q`5Vj9tAZh+_sZLAeL^m@TyZRw-eDWl zYgH4oV-7EeQdGib)hTC9(sm@DaLX`idHD0jX-?NIjiLvH4f&F{vj_!CELw3|QhgGm zvfF~SX|=yDi8}Nzeo*p_<&(hHwlg`I+YGmxq-M{&!GCOBwFIZ7pXXt=KVrTWCuRq6 zXm{kFvS0r6-;z}y{~f;Zs^X~EmV^lo(tjcx-*YiKG92PQ8S=1AB7rqxx4g^5=zn(0 zkDmR$tKqPWWnaCA`Wv4wOWe-yUiVW^R(f8Qt81m~g>6$MH>X{F78EeQ^jOHFzrru> zl+N~x;Lte26p`k=KJ9@O!X4wPQRjqon-?{8h_f#zLt5x^p3z`xCv3}}{zsG&jEkF76u2APx z=BRY=IiUWX`<+e!Q$l-GuFRF1nv&ApED1d35e~}jZVW76r`W&sS=W8{==?WNJ%Z$J z8Sym;U*Gv`-oI~CL;q&oUUg$tSI!h>wx>dey31YnXXu|W4oTxR6wLo@xU$M@U+U?} zpWgcy{VR`a*1G)S_x{p1=|OCTIxp_FTzmIqU&-QMU5}cdXFq&m^KX{F{o?E8{g=P% zdD?zo5?}vGb=~Hl@fQ^u?GJ9=GjF}0>ep1xu0Q-q*B?rI^Opbmv+vNY&oMU-D))XZ z_@5S662E@ko1&+$Cmp+-u=`kJqgD!wU<=2S4G|8JY>a$DGZq@PaVmN(NMu^fve=26 zg;`P{kmZJ2n$+Xt^Us!72(=V;=?EQ2X*3d@R%qa)qcBZqQ%bvxQx~%^yVwz?4)5u@ zy_ziAAGf}(zmO*_#8Ey!!KrR9%U^|D!Nz~tj0s^)35zlo+_Ze4P``w;-L26_fq$!+ z%k_i>(hj^DNef^O*Vyd!6w(9Qh*fA?4I@Alh2*G;hBJ4Z@G|KkRo+Y8>mI%N@b z;a{*&nNjtew-NusPAj!mha63aJo9I|c(Pe{o@X((#il8pX9Pn zslBjqR1J$>78+`>NN9#?&T+vr+b6p+xxD0Hc=%1aeCjOIZMo-8y6aiopOf(R=ZWU+ zn|MTX?zH8HwOAf8JK!X8VQJkLDSKIVk)7?c_U=?WqHmkX@JY(#!?Wc)42GLo|9q3J ztlYcv`<$UgY+Hr6{@bzwf{G+#e3EwBPPKsj94W_Q?`Dysw)p=lqgB?oyy^t)*a!u>!`(U zuejRJnrTVDcdw{Qb&F(PGPPpj9sPwfe$8Oo`)>cmPrK(m{q#eQ|95Hm`|o?pc_uj; zzx-+U+G_EWvaq;JJw>z2nOqN7oKfB|M=yd+V#|Z37>9(18&9h7Y&gvDTW5vI*^4e5 z)A?^d4nJpAGFRs17PI-D&r~=Zz4SMCzE<6FMq^{LLD<<>QOu%`UG7B|hc4TlXgYOw z?CY8~$@{&zURkoitBP&Y!}pf2aB1H3oa>vZn6f69&+q#;O+-br{lBqXT6QETG)UCd zSkV8K@6X&h!k>{fS$|&bsp)%KHpID({o9sn5Bd zze-5Vd7}-(LFGM8k(K_kar;&upW_rVO{6^SgPV~{+==pemZ>?#>twH$zh3nwQ}%E5zx7!E?Ec#?FFd)d{^0*wAO5XU%VQ3G zslR=0|K2x=;``PvGqL8dPWtiC)6mSy^Q5ML%>PVJ`?)W7-U|P06Q5ch|NXD|)GY_D zJ^vRV>m5_pq44oO|I7F82VVSl-|}1jWzhW{eq1gtydQcxou#BFJUdkOc#MVDubCqJ=PIxsKidv@>3s;-`pb=?pA=I*#~r~Xuyz_)DkUr$^XShBtkcbc{7 z@WKby42%;SoO$$iX{Ynd@L@Z|<)bXAs9zTp!jVwH+ppB;PMkk;ZgbiBbtfNAYqQW#&))E)TdVQhy9@DC zRrJGVv`jnMu%fReU}|9Sy}BhwLx107HJ_j)@c828t51CC8vJj+GoE0;&>o%!DK0gx&Ncz{oB%i z^;iA6*xku25~aVk{(3bvqUdGa)|(={bD260s^{ibuG_iucG0`X;+oo$dDXvXp3}X% zd*-UAJGbTDy*hjLu4M1o8?MXTHa2D`YMwG_av(#^KH*t=%$9fsJ>6jW_sWhr={@yI zMSeR@b@68NdWrCPPk6!**|{<}*fU#-alrzkB40mK*V5n#6V=5c@2Ye*C^G~zJh{PL zqB^xa@6(%>J$LsVKG89ALNu4u?xQy+zFE_AX=j?#H%3mD37i++S6A5EZHb;ZqxI9x z_Q)mTKZKa9ukU{n?0vydnR};lW#s3ZJHGT;Czh9&H>7zylTs=OkIvn9@r@?S>!v!aoMjeSsY(HUgcMr+}6FTbm;iq&-uLP8hu5+-F)0KS89p3jD1I*F-)L8UcU7D0vKum!U+(>Xx%TSs-fD$U zKkKXbPJW*9(Ve00YSppOe~S|MM0y{b3}P^GaiXuJM3TCI+-sS&q|9Q!$s`c#e^Z&U1-F@-NZ;38Lwh0NDg>2#n8xq*3 zbDF8%i)H#zVSP5be|vFh)6J}Pe7m+^UhqjlrpRoGD)Y*cNs>`7?xsm{H)#9yi`$$C zc`|wP`Mtc0S8km4+<#W#k8j&&7<>JFRxJL$SkUf%x$}Sd>mTjx+REFnXKz;BJY$Md z7DsMRf`zk)3(o|J6*IY4vi#9s{_*qk6uEQh$NOS-w)^q5ut{80_E$Duw_ox@y!4g1 z>SZDAg}i^3hW+l-D$*@oBFMXR^R9Swi$`a#f50vR2FPL{w4RwmJ2QdkuE{H@6|fDnBR+CIy;o< z>uLV-`0`5$d)L0#XER@Ecg%b5w~M{64HFL4lTYQ)^K#US-F_+nTXiDm_A94Z?RV!72ZglxSe~%u<`KR^Xk)l z4$WEH;ydT3tEGb%SH_EXZtM1*&z73jbHc4~p^~@lQl4XHmhGN&S!GQJ>nzDL+r8@c zp1g0|%P@7f&m?a?BgKU>Y@6hbZ#~#>EhKH_1{sM-X&H%4t_A9ADh72$PBkYP_`h&mU;DP8$5XK_BU!=9 z;aIg$sH`yGd;?d3=n1nsy3Tys()3yXc`D0f<7snPnI6u3?33f!65pe7D2Ve?iK_jL zrIH>YY!Sj#7f0qlH!c7Y=9XNc>cHWwMMN-b{ z>ZiE_7p5d`&J1icw~b*-=#^kf=2rK5YH&^H*%QBjTap5TbCn!-H8w7BGMRVmZ~4iW zwufBXDq|dTcU;?I#B`!sB1owvbpMTQpHc#}AMsZ48&p^9-;;bmuAxUsh2a**#{fp< zNVm(TzbtQ6F>st&b0A+KW`oN1kV)*l44RU9W`&bHPQ;zC4CLWa-P6gDRlK-{FY~?#?If&qNUa~Yeh!p+Jq!l6<sKQD@9v&J0$yedde+jaGRwFWXx)%Vf>(XNM9DY?~R& zJcMW0{t z-KyfZ?GMAxD?dCu^OO8y+a&cviwxe(I-U8Z?04BAMnQey^f|4TebHa1cb6ZIW-(9N z;2Po@66z8XzTuj{QPEjlyN|wZ``&Tq`wy-3vYq$i*IWE)e)_z9)9M#mE&LWPBZ08oQWUL zmA*Dt@8tQq>zJ7O3iYc^6W85#%HL|`ZhJZ5+l$b!qnEG7b9XfdzkhYtOY51Fy2$>u z=jxm1{&r&T(rTGHRbhk5zreqL=RZ+ccZqdhIV0OrDgKM6QcPMrJ?wV>Y8n(iLlL_tG~Y6${yD^;x*s@UwmED39pYV3s=NlwKBi+?Z=Z9My5Zj*EI0Y zzI8fBHGigh_p?Q!Q~mdTP`IRcX~uJNw_kEov!7>|ntfdu_t|itrh?p`XC=oIm_FXQ zKk4rOBYby*E_3f*+P8?s%csuzw&r2eqZ-GzDF&#pD{#s;EmyHh%w8 zZ|YpQwf0)}ON9VMg~o2x?DebWd|dllZ%;8F%WY*_mCUbq{1bnFU!VSX=X~v@-|Fk$ zx1Y<;o+)FpL}#7!y&8Le?Zv^a3vzv#i+ipJ*UrCsdy`_j)pf7BrS|-JEtY@feO&Bz zI~rYesY%-)(DI}xwEe+S#)aO_^}qhVG<6Z>aVh#MQ`W!i(TDp#L$eegbCVP*6Ch7Rwv3{$UwT>gb-iQB%G>}@*zeL`3K!KO8DL?tU@ z(l`n=AAYEQeE!2q#;XP_S-)orXo@QT*8Vfc3#zN$5#;^2@QMq>T`Ra z`&6&3eer$FyY)LC{(qi(rgmO`-tnrJY0D}zr_EfoXjbN`)1hCNxVU&Jh=v}R-fnS$ zJ%s(nj{x4QYf5-?7DoI^>^fC#CcdC%>TK=W`n8+IPD`{}9^9lob?d!d#dmc)jEi<% z`E34bf!r2tmh_GT58T(BlU7;lVZG2y&0~d=j&4iQ!s9WrHw~FyH1K<(vGe)Z29K8~uT%qLG98XIY8w01O3Tp@Na*mmY#%M&_< zx4mo*8Y(iRaVka~xna`LKCPtV$5rQLeh5hQ=fMAaptM?0IxBZJd#m;}kdAD8u0jY-_ZjS_#bx`!i-3JD{FL6kI68~nsQ9?`UU;F#6 zB(0TKCx4vZ{K4M$`t@3U*J)?guPwF}i&z@wpH4&F_T0FW2?XfW`^3&5?7~w z{&M?X+?U1D8SU(Wd~YmO_#7HVpYZn>D9m5voImfI!mTBX4p^>R-s+xh`c8Q=L;ux_ zYv#XIEi<`r%qGtI#pk(ZPj|hki$C~1X8)bN>%TcxF!o>Dz-BV_*58uUGXj-~tAb}< zx)JHs5}C-Nw)Dy0`wQMaOOP+W`rXR-pM?IB1Sx0EZ*!KHZ=Lx>_T1b%1rqwnQfJ?5 zS#OK4yLf+%xAgSYe+IRS(-;Bu@5B)e|^~~4*PC|yxO{JyJ;(RLhc86Zw zB79_RoVO}p=w;Q!t#A64_r01QXOy2`aP3vVI^_)tS}MCWR!nGJ_`Lr@Ypba+*8v4X z2c1*We=kdjF-kmT{FeBwKuG13lS_LD(+nB^tF`aMqSfoyPt^~L+pis&8$Q=jVcnsX zlbCNWeK*5!F%v^*$h(xdDPB=6O%IOqwre&Rcv`n4u8q2zSeUieCov&B^+|xVwquYh zbLqpsHZECPXPwP`o$|H1c6RB+d0D;EH(o5*%f`4;p_hM|$%#VSmii1K#VuPJ`Trb;Xz6klg_(`d=bmF@P+T}`iC*ix_>F>*%ieu=bKYxp@4?>_CG7q$Pc(Hb znAO~}i1VQJ-}}WA8s>8zk;~+33>AHTVfnt@osBOAWQ&gS?h0P(ex~8OtdLFJ|J4=& z5;hCiS$Pb7n3m4yTA|dU*^uF-(Ww-8#*mA1S%gQhLcz=ehR^KbKYjo0oWEQCuHI(` ztLbjD8kVwq&0?r6ludA-#xU_J^Zstxjoe=~e)={$)js`|$o?Yrmh1Ni8eXoMfhT1q zd{Dsb1K=H!$rAv+rl+0s!9^AUm?1p(@U}$Kdpr~lc ze%l(AbmK>-b%UccXYXFTbH6v|x3rbg(m%E%jTsCv}uHEG( zlkRMD(hAvjdCHL`CxRyB`D}XTtSt5H;m%#Jw(8|xFEu$^o_hA=?se{EjoLF_&n^AT zTsF0fOKXvml52=72!x2X-xicPSoN3LGsxA{|I$7y%?ja`WwH&^SM<9%{Rr9hlZ~Un za)$Q)gYsR@^63w2XP(r((ZUy4m&sw*yzyq`{#(XAeBK>o{y!Kw1I@Nut zTr;A2T)rLHd(hVK8+Y5XXIXO+43bYO&3&h$Dt1%+4(}%YNk?X81SmDVVY$@0!NgBC zv}|jjx;by652vJvMog<_qt+Q)owtvfzNj{QDrk0^ajb9CixnFS10Fu!eof)0!m+fp z#D0cZf}6JNIK6M>?gf>GFFYAGZjCTpCMxREE$R}qg!}Sh0TV6B{wfC+PZeE{wJ%Kj z*#ej+E?@2)cInm@@6scC?GE0me)#sh|NgBxHd^5~zow5FFNJ*wkr$^^*S(W=xcH`VNud{6yee2;}oOofim`nF0N$n*LuWp^$ za7K2QC(D^Ds>*Q=%E^M_zsH>>2A+y9~>z@xJ z!aiPbUCzhdAt5vUgo*(tr+`6*ni9joM46_>Upq8185Fw@6kc<0d)T{B?1vS%?vtdw z!TaB?Y`b!iPuedrWSLLX^3Lr6kJo>f3VO1t&->QRyYK%WS~uOi{?YO@jc0t`3!YqP zV0u-yy5{$zl$GgiZ|=t>U8(Rru6O-~;rz#mA?`BH`x>5bI9*@HpwXbQrtu(;e-D&z?c1_vo>ubJkzmO$hQ5%}WT~@hxdGT$Ptk<=nOAp9Q;G4S6M`6KI<2#zF zOM@1OF!u|n^)C6zAGAe;Z>4J(E4%ZG>yt8eC4TbRl5WbmL1T^Qy1a;62QwTvx{Fx#6jkSiF_{uBSTSR zhR^puzpriGb~|j_?T?4Azwu9Cc#tz;Mnc`!2+>FF1=a_zH85ULV=vnGiR}P`*c}Do z4X!m4g!Xrerj1!nL^9uJ_*U3%dO;@_KSP3%+6~wO0P_}U4LhO zPu-izFE924hUr9f%=WPfV%?n|926JwDWUKGp-+7R2_C#fVgjB5(|Fpu)2!caInwv; z#3n(*6;g3VRh0*4KX6u6*l>CBo)b)sjZF1f(GxCvn#|6bB%S%{qA1t3?8voIZ_Ev@ zKdLDH5%;9#fNewMLQy8Bk4+P{pENaHyUf7v;mdH3;~hMWmpnDkcib@4(D>R}zr%Jf z^L^*z=ZwBQp7da;{yTG{tS}D+MpNc$y`Bk^44!oUIP%Od>PpMRC`0kav&SD?==^eb z+uX(Zn^dcH`8&lPJU`(UCmgAK#lt5edvEcSuCQ6_lOeNLi-+2=eXmXGA1ex%IW;OVy!>%M>Erpm=jYDtcP~%P zXo)!(SzprgZPRI+b?wp_dN&v78?9IU^3KTgS_qf^rt5miDk^aqGpkOh2zTypeq-fBTamm4;(+%IweO`52cfOHi6UX*l7B1eaUQ7=^%TfH5Q>Ih9rI1C{ z@xuuzzJ;>QOuxJwnL@0NNIw*qreXN?dHmJe@1%r2T9sZ)aC-H$f5*zO2~*cN`pGG- zyT0jddcmn1^^b1L?K$(}QRWOyA4w^vZt>dvymvn? zO^|3$+dDOM+hKd}&S{@i<-cW{&pFR{(dm_!+|H*mp%WdtIpdzGGIz@V-5w-yK#Td2 zWYY|TH52{W1?Fy>RJZfEgtG1IDYnLQ42@3Od|pv^v!BCS&0Zvxivzc#Kl%l<2(RWf(p>Pulj~ zQKmoMYpiau&sKGAm#KdHNY_bLK+WL@FDu8j7a_+Sx9PC9E?qPw>b^|-1KZ*!iNPn; zKig<7);L@=Z^;LXDw~&kUae10mArZ2W4gp9i397@&!;w>%?`>B6HaD5Y%smHTso&D zQt_Nz=ZTAjQ&0Zd_wH?t;>Vf_JKv8g`D%Z@NR=rxDV>!4Eb^VRzMgYZ^g3rphoIc^ z{jxti@)t+BANqC3FX)4@+r|v9fCX87(o&q4ayK2}xaQTu%5KT`N&>@eTL@Zy1;54sswE%|q^e!J^$n`5O59{h5zSy>%3 zb)A!yle7E$`=S40biXdOzwWue_?9V8f-?hiz#)c0Mur0pC;Dq9EUWbJSb5=ENiDnS z9}D?k2UBP0#|7PA`EX~B@`)?c+}6#nKjnQ!AfmGB<~{3>Z zbI){$_W$}_{%i5x+8}@7EwjSR#dJiP6atQXd?=Fn%_GSFh28hN#s@yyJ-*fdxPT$N zZ0DkkjIFIx874j4!|-`= z<9o*P**7^A>@Ha3-*7d{ZjK~p2PuKu3|G4U)k$kE@N!?r|K@g1g8V`+Nna;v zksnUn8}A%HIr{7DSNuOU zPmfo~#aw(<(7d|}8n=@t7Qd-k<#Bmi!M%+;-pOq}?(C`Q#a|g{oFwWI5+l^rExKjd zwxTP6^2f_HzbREQiuf-3Hiaqf)$UW$P76XDINvlFFjN%Y+Ir>utgm^iea=>HY}%N# zle>Z^F@Ep5Td8mD3lEft-q%nS`16f>-NgRvXB!s!`YpbBvDnQ2#f4|DGS>+2$h-BI zf#GiI;`&n#vN_YW|HnP|%U{3F-B80~KYQ}d_uoQq8ZXtKzhcO&a{0{rA?k_H@*`)T&3N?W*M3#jzwK4K+5GzI zb@#qlb71c~tzNOT>l^j`uGr+*-o7M%`#4MdrB}QDn1(!g^y>HS-Wd;r!t1lv`zX%7 zP!Z~wY8eq*$iJJl({=sn{ub5;S1(4s+aLaE!>2fN?KRtOhNn)wox1bpoR8OJ^&%!s z%IxKA_DNjq2zcqP1t2}sOd3- z*N$^%Ot#Wmc>FQ5zWaysTP8Ti&->SZ{E|??qvZy5k65%470-(m3jW=zf8kbD+i&&H zUxGhAkS@H#XZ|yin|ZCJ$*ttv+W&v={YyD_zVGF(eskWrGhRKOsJt?Pr6WP2xV?>W z=Z{@$7o`+y{`<6ifdkVQKDGl7|LvRnuX^#f50es>?)hxhKeK+*8z;GU&)@Ivp7Q?s zU(GY8^cdb%Ro9g9-QPJ~|J~flf>mBI$3vVCXSVD)Uf}(aCsA#y z>WMwV=I4%n*Rd2lBC}2}UC8vvyDxv^`JX*4lKt-9FK6fXcgn#y?)CQ%HvLeE7r3zI zc&FVoBX%G0qL(tOJVMVXSO%8(gN_8?>mb|^&<~$PrS$#YCef{_HGwqikn;Zn5uFZN-o!`I^6PM&{iA zdr$M`I=#Sk9$(+q^xE&e|7^y)4oxHg)QA~=^E)|){`!7^+&(hO(+qP&%(V{M+U!vU? zX6wkL99^XM{K1u&tt`yH3|3#|b~66h@aN3b{b!kGy zi3W$1^aBhMYibkq~wwyj{mYdEf6V|EGT{p3A=fX6d~z ze^y(&%|6KdHmmA)(VG2-|4n3{*q-D4@7`1UCQ-*CNpCNgJ#2H1-x1=OdOk(!-Rs@& zo*gW?{I?){-4}(r2IhqD53SV;i;}K&-{6+xnW@?@xybu5Cri)UhX>DhPMCe}XI#Mc zi_YHpDXPbe%q}vf?RfR+cH+lR9g3$iI-LIo)@Ot?q%VK|?Qh0^ox1RE|9Ad>eN~3XjWdf4=MGcAifwu08Z!B7N8PMVNZ=)@=(P zO?7GexT@!v$^59^@-2Ob!(MrwE9lMe{tbRK9w}z8&!b??``K^`I~pHjpN_3-h)1? z&+WEtH44?&Ty<(zu=>x|Js;11SDmx%U)#QgYd)8HyL|HUTDGC^Pm+wl6bFaWYUinf zj?QysnnD*pQPy>i|DzG)TpMhku7Vqz=yG3?XWWte~H z%cFluUv}PZn-_Q6_mS22$Go{mV=r)e+=ydmn=CR};#>xIO7=~&W4qbUy(PVspH94F>qnc=&zci%>fTJd)us?WZg7QW-jP5&j2 z_pYD%Mb6v#=f|=Khxw*26;YCA>P%*Enf;~MY*UR|S1^O&3^lgbbA&%LM6h#in`U;^ zx<2=C>C3hMj=g z*FS$CTh;vSS7X5f@!;G^d|}FMPc5_m#eIE}t$#bYcLoRZ31{ZBS?W4>E(^tf*jw=M zZ%@7U*}uGI98=^u3Xi(ei(`K!(B+MApl zHPhh6ZDuzvCu_&bO?SV?5-1&r4u@tWx_p~RxY7Qx^9tdzClyC%M&kd(B=&cx)GtQq_m==<5-%*Syd&$ z!^WQ7cOPC}aQ>I^adypvPm<=U@LhV*`l3fwYi9A&Oyi5^ixU@bINZ9(qcd^oib-5% zt+O+Xc;@7bIv$ffX>lw4y&lUuXYUDWz9Mqs4s-962%GFOKXt;P?O0d0qH}cig(W`c zTAvgKpEzTzd+Ead+DM)p?Jd)7n+;`FDz)aW`C_iSHfeQ2)y2fiLbq1h?mxBg`ou(Q z{kh*F?_G*CTR!{b#kK2S{xV(st z)wXL(mnEJo(%oPb)-+SCRnYbG>1o=>j>TMW+`L9{=LX&bszGO(a-*0{7iuus+}n1% z{g&K({@Bg;ZI|dA&h$KV@o4Hd&4Y7pb%|X((duY%A}=i5EWUV(Xh+k5Qb=gtEsj+?B0xIJQ$V=bOcP05akqMijasfafiVbfn0bxIt(dT5`F z?Cv$YSM18mPG@*zwzu%M^xBW7POdW!IymLyviG^41LajpWXt%Tf4qI?cT99UkHUjV zXxvj-f&B3pK?wu<8=$R+OW1p;Lvd)X2@pAdqNWlw7w>9T> ziS6C^agNT5)K*K~nA$t%{HOi+L+(n=?{M=j9tuy?gdu zz^gFc4|x&?d$-+~{b#?OO>lgxXVdq)A678e!h zRhuY!Kwx(M?-P>$jy9C1DMr|zSTeOeW%A)^jt=h{^#Aq+Eo83R@RF%wsl%0*oQK4N ztex2Z-KaR|xp&f>#fs*wj}FPNN?XY5d6)Cd25SWwPvfmjn+gq?&o-_otMXiV_fg%^ z4=HkA)bFdaMI^}=3plGCI_BFnd2f}t;QZx}|Jt+uy_>%F?zhMO(YtHvpTDy7oy9C~ zzr^$zOWT*NYk3yGTi0E6RfO+c!Yn3%7OQoJf#;g+HFhR22=)fXx5ZDj+{CBCwCFtZ z=I?v^=XmJP-ub|pL7(xMfywhZ$CrE#^yhz7Bbkz3bS|jitSL9^ibwmbjE>b+{XSu{ z;W|&=Oq+Rbk0&|iDBG6DPF#H9RQ>H=;hHZ6wmn~e^tR9v%W1hk9o$@PI+PgGx%X(N zFHm3%$)3j;pwGe}zSQZ^v3mI>5ye;L+V{N|-&rf1k$QG|jN?n*ItkMkr;a~w{B5;b zv_AY%Ot^8m``!H6XEqADBq=S=p0H<9XaC9xhky67D3*OpJudH};_{GFG3H2P^tAWM zHNUu&6*YNYsI{86H%RPG z>#7~W2OQoM2-MW+D^8oh63kap$k zjHmOAzgu0nTVy4gx#*1eVR75&YDa;GMUzd|_e_`ILGC1H_scVtJM zEDklz@|}Kf*P3U4tx%&*43s^ZkGG z9r{zB|KhJ)=u{=)e@jHB8*^+oW_^|8Ua8s^bYPO?;>D|Oc;4Lk@P^m|vD{^Q)_69y z024W6FY#Ngf@W zvQC{jY^0~3n)c>U$=(JhX`W2U91pX<=Z($kwO+i}_qR`XKl7<_-HkJc4y{_Wdg}A< zI`89MxZ35XfBdrOYwqV?uHK#Rb2q7bR4#tDuF*u{SYsQDhS6b1sgF{3W>)xwWi8EM zoWpW(Q&v)%-{d^iTi=vy?WI?r{%pIrL7hYB=j;rlbjNuoIX4__YrZ%)WYwR`Q&^g| z^OPtEZoRqtk&suh_JqcKiQ>Rn>-u>^8XW8OeYK7*XzW1d>q484KVzT!Z~W|A zoZr6nYxVN;65Z7c8h&W>dZNEX-UVobOEbUvh6X42~L-|~6~ZEdR7>|SvB zbb>%WfmEf){zX^zDp*V3`>QOSEaSV%=i9 z-_81cVlGQ)=b>twlMETcu4}d!J(OL~-D!9rdD24Tl{Z%|o6Gx}=b(z%p`5P{S(_Mi zHYH_UC~6i`7W6UTa}-PnC|b{Ob?NHW9p`dfs_j+3&D&f4b>`QAulsk}RlelU^C>q` z73t(;dg^oVI|m1g+b4FRCDt>=TlR>*Kl6iA``$;neOeZq5^GrZt9@2$lxvAn>Dd-g zy0OP}oAm9n{5Xr$I?GpLVY|I{*SUwseKXwWXYhP!OcR&-GAHFVlfFICQ(|j&zRD-} z>3Bm+(IM}2?jL4~BVD7 zRwbK`vrqM6NSYhnFumcvr{J2TEl185C9p0#{Nnbmt-LO)Qj0$4EA8Z4BlmBMhvI^u zEsDFYEzI6E?Ga1vPD#fDVpf7(0fx)k-|pm<`D0_1(wyL|bBif3m&T**jpzvHJt2E(Ojf1 z^Ni^goHByf9tp_V`)EB8T`TYR^y@8Ng}fLc8sfrdv57T#83Y(izH4fZ z3JrI4&6-B7rAu9^IcFBXn5;Kltx{prkwz|-OJ11^+vE}>*ygEvmB`L%J~;c$=5&^= zoL-@RtJ0(oXq~n0RkGgj`f|TLTl9=KIh!XQ%jr)loE$g#&954l3gegdl5(@-ggWd( z!~*Ifce`BqaVga_i{F0r~4Z_tj^(EOm$)}-L#(6Na-Sa%!mrdO4D`5!)UeYz`p zD4=^uuglS}H(>&WpE!T?2tHJDjk!=@@b#q2*AIbx3Ac7lknHhJ`mScU*0yjEdLWp^)>KA@b{ih@}b&4pY|U zEV`%sBkt7C*;g1g)_yOn*pN5ZW{ySr-L!XyFHRH?WE42N`}y?AI}%dwyePeCJM9dI zfbQ(qvsRr5c1%3Rsjd4c>7Imt-NM~dKQtv??Q}McDp@DOQ}Ox)+iCHJa3({W?wM2F zirj=Fj;&p*9oKg$Sl1}nbHns0mUgno)7?yJ&P1;7;gC+(t36@nDxm5e#JKGm&vSo< zv}Ziu++`D|GZfA15pOx#@%%*o@!EqGnp+H(Ry%0SeUm9&7^Nff=+MsDg~>vl3tTvZ zb{=Gz;#@q9qv-oLMY#nHZ7&-hG$blEGF@?;ee;XTDz^AL>$4{ARYB+l2EvLOS-_?19WlkXPPR_N;6;3z!R1WO2 zP`x|h`N|WYL(94yy^ieWlc_b#o35FD;)!wa?K6?jWg?C%A30If{M=t*MZ*gRK}O?O z2N%|I{cN3D(Rtc#VW=}_8ym5<-1MmL6R|9-|7Kh=4X8LC-xR-^|`MOiHjb-PZeHlE=nP%my1o;-=o?I{MVWrSmp( zgz(&KgRe(+I%gj%b{9FO_|EUQx_Ynb z<&6+Hhr#{ zZdUoJTlcwLvU?B92wGU(N~^eU9r56Un?B?FL$|`E?|R;9J^I?yHh{%oIf zdS+9a%Y3`p%Vr#!b}j9$;#6ZD$0U$2$*;fuKU?q++Db@N=;J@V6(O^YdJZ{}Cq!+Bi><`xk9DZ=Hm=mtct8i4)ql zqZs8pjM$oUCxu5xEaP%wQc`e~pStV5y!)DO#9h08HbuwYkK6FJK>P{60RpjM?s4OD<1o7X;<$x=P=I7 zUF7*Rq-)Z`qr#V7KT=oJD4S=Jpi$tUvOyr4LH9GS;Rmb5nH_QTbxkQB*$X`!CT8$EHnT`;W-mLoaRPt3)6woThf5!D-8iVulN}b(s_Q#X zzgCa;NGB(g!_uHNy-nH*qS`JNpR9`mG}p{KUi=`KGyjZ335uneX6`sRkySe-y^5_tOzH6104s404L@@phYiv#=N>Hf zW4WuIyHP}7YU!%E&T&VhR(q!LEizJCni%f&g>}c>H95_}KZU2PU*y)PuzgBnc8SIZ5*Y&T z&k%a5Fl(8Ej1yZ({G6P&MG=xA%bpm^DJVo$T#j5Oux_oXch2478I4Ciy;F7jZEeT9 zBSD(~=!}oz&W7&|=9f!9pMaH^HesePv(47L2_Qr=iEA@nU_!6buzcJPW7rvZ0;z2qBv!aOL*kWLMuMs zO?-0hYJrLIldh)TP5r&xW$Wo9DXxoWT;`q@a7|YFrgMj>lV|y>#Vqk5TiBkgD)bcF zBz2Ijkl8zU$En+z((IDF{pvgJ2u|+#{`lJ0m?rU^*B9jH_Uk)-U|OGNq3x6DU;2!7MIC7`b`Zh zrDU5z{Z&@o7qW=q+ZCd#;9Swp=f3vXqnxDw!5?3I8mc}nx9aT_d6v^CkBVJ9BVmD1ay-5rYElx zc{N{U{llq0qtfSoIVRJT-Q|2J``p6boOFw2t|=>yRfk<&b4F6>w6@5dXA5h$yQ)SQwHWLFCpt_TQX!eR*sDoJrB%aPQ%c8KJ@osxz@ej~ z&Fu2hHmPl|OJ4MRNnI%F?d)ab?dE(csw7{mCNiyX3S*OI*QAW5hTz$J;Y`VQ9yA?r zHc;{k*I9VN{PO8nRkGq%nd_gF#N06}&OEp#zdhEva@oz5zG+F5&Zt(n=h*25U$hr| z@WEa3W8e>t;{6GKu5EqmZ&0~<>E1g#injF^a!wRj6w;DAtG$Qgls~ghhUfNqFQ-`? zos!6V|Mpvv<$RU?;V#Vo-DJ`QLzR>z4DGjUeKq4z)U69s&wl^AMk9HqQSw%nlew)< ziJS}Dx=joYGYMyJoxSSZ;={^|)y==MYHdhqjQj5Y-@Miz-f`}(c0+~{@2|kR{hU|pd25&PegAZC#{Fd)@#e>RCo>%1?OnNfR?VeI)=3}h+aLY4^?g$-vrQ*> z&VdDc7V@=C7C&&rlVReg1wVcT3r4(2VzPVG;@=|wW{#xJ$LqIVT+}%6@O^e&c99!X zPTTwHnVOSLS2GJL&b#;g){lR`Kh!fR#$^SpJbdZ@QQ5n@GrxK}JO6%JWOH)n$Q+Kv75iJDwAK#5SDhP~*z%Sfr-#^LL0F(^=I$X)LF_ zgo_QPeN^1Cn`gqw)#1Nx8Sr|pQ zNvX>!q7J+9xcG5Me2JRdXsJ6+L%dUpYN|vJNy0O#j9I%xvuQ9d@h!1 z7M+-@6@D@Q+;Yp$7W~V3W(n(COV760$lSS@&n%&)HjYbl%%d924ih)~~(yTy*x@S(~=1xpW`0aMcM|+wx^L>q?{3 zGHbW0Y~Cz5SK6;6aNYecYosHeb=Eqt+)~S(+PnSEhUc}Df2>gtG)b{P;^efbw5{Rw z!#VSJO=D?x%KcpP&*1#SUCdzu2{z3eK57YzEL0VGzWqr1OVuT&%s&kz)lR(PIPv-4 zlh+@XvLhd@9AyRK%mnarUGuAwK8+3TQTVYxAwIsP9{qt0B9``IK$>ET4wODh%H^%pQL{ z)xxi-AXjt1{rvXkh0HgZT&f%_<)8jGsW!gB{Qp_T-Uqk1GQ^XL6r4?B%qBdY!r`)h zUYdvP!joz|>lSSmThgnsKE|SNCDZZx<-b?kZi(^}v2=f6bTgNfI<^)C zXD)S{#5F`Dx)Z1K$U+iWhOxMh`AmsZ2V&}q?+KKP4AKECqzpukz5 zi#$_ZSVThugdD^CLRlkcTy+d&SgSBoPt{4&mn*2@im%azWqdp#5?lcy8k1QPR+i4K za%oAs@>PL#1#4tu&@RWRtLEJ3Y4$Z(xJUA`uA;MtAw$+j$zGcTBj3YIeu>9jzJ0Ca zlk3Oz%S2A-C0Li0t((2Gz`Wf-_|{9=f}iD|?zYG&_4P5#%S(_sZ&S{4z9m6De*b|* zE-O^H)ReT8+ETY%a~R&ARbMbKBLYO>$eVCK^aBNL*0>QMvUf4Oci|3Zrki) zSdyYC>3EhYKq3BC?}p?IhBPG(9q!XbEpY-VCz72M7jLuDxW51PJ1Nt*vT8-OTr2`h z1jN%-bXR$N&}cuyDPKL5#U-T~pvPyejs`04a*i;JxWvrP4_&rxq$3QJR@XB7W5 z{2M#}N6IhWSLRx$ju~EDk!xml@KgV}|B|2Ll^dp?e_-36nQy)@(eA{rJ*g{L*RNyH znz_$;|KYX2tncYREtPed_?Y2AOw6BOx;!T){L1}Tb8lnUG&xz3l#)78Gq(AuOP?%s zHQm+N+}wNQ`&x-GAznXIb6>U-*Rm#ZF{(A(L{&8emVJ@UM*5IT_o4=S3^EoOD6tu9n&K{mxE0g4$R=2 z-1zE3?}=dU7p$?opM?T%s2(lc?6~0@fy^C_4x@e(t~e$<=0Qh-jc- zXh7$Z20aBf+2Yu2)>+qrvVJISO=(^|b!o}joK)XM+a@(Wuru*?*vb*R7qB&$7CGu-}nu338U zGfTb8@1i&Vv2Ffk*Y|h->6Jg?KJPxgHb{QaBu6%xkL-``+vTU8crT~Vx&ChX`HtJU z@6Og7pR=%Ypvt+dEs

yKM!5`!Mqhs3QAShlEdmEtbD##5X@ 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
!oV1KF_!R(52`+Tefp*(I4|NFZVPDP24Si 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

}V3@4fY9gEIk_ZF<0={jy`FTM8Ugv7RvOo+zvP? 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ΝoF#Q% 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 z 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 Sq^zu#n=Z}KF{QRA*xL>?? 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%0D&l`^zBl)uy}|U&39LR##3uUw7r%Xk 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 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;