From 18180858af59960354968918cef5091cf11daa8b Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Sat, 26 Jan 2013 13:17:31 +0100 Subject: [PATCH 001/572] 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 002/572] 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 003/572] 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 004/572] 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 2d61716061c6613133e9ff89d5879f43a32fcf26 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Fri, 15 Feb 2013 18:01:37 -0800 Subject: [PATCH 005/572] compile fix: needed for size_t --- pkgs/servers/mediatomb/default.nix | 4 +++- pkgs/servers/mediatomb/zmm_new.patch | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 pkgs/servers/mediatomb/zmm_new.patch diff --git a/pkgs/servers/mediatomb/default.nix b/pkgs/servers/mediatomb/default.nix index d040a4c9a57..e531f6160ff 100644 --- a/pkgs/servers/mediatomb/default.nix +++ b/pkgs/servers/mediatomb/default.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation rec { sha256 = "1k8i5zvgik7cad7znd8358grzwh62frpqww1a5rwkldrlws3q5ii"; }; + patches = [ ./zmm_new.patch ]; + buildInputs = [ sqlite expat spidermonkey taglib libexif curl ffmpeg file ]; configureFlags = [ "--enable-inotify" ]; @@ -21,4 +23,4 @@ stdenv.mkDerivation rec { maintainers = [ maintainers.phreedom ]; platforms = platforms.linux; }; -} \ No newline at end of file +} diff --git a/pkgs/servers/mediatomb/zmm_new.patch b/pkgs/servers/mediatomb/zmm_new.patch new file mode 100644 index 00000000000..5238b42035b --- /dev/null +++ b/pkgs/servers/mediatomb/zmm_new.patch @@ -0,0 +1,13 @@ +diff -rc mediatomb-0.12.1.old/src/zmm/object.h mediatomb-0.12.1/src/zmm/object.h +*** mediatomb-0.12.1.old/src/zmm/object.h 2010-03-25 07:58:08.000000000 -0700 +--- mediatomb-0.12.1/src/zmm/object.h 2013-02-15 17:57:02.000000000 -0800 +*************** +*** 33,38 **** +--- 33,39 ---- + #define __ZMM_OBJECT_H__ + + #include // for size_t ++ #include + #include "atomic.h" + + namespace zmm From ff47b7b6ec5df0eb16c931c3c93197f488bdee08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Sat, 9 Feb 2013 14:07:30 +0100 Subject: [PATCH 006/572] openocd: bump from 0.4.0 to 0.6.1 Also: * Remove commented out "GuruPlug installer" stuff that hasn't worked since openocd 0.2.0 (according to the comments). * Build with support for the following JTAG hardware: - Segger J-Link - Raisonance RLink - Keil ULINK - STMicroelectronics ST-Link --- .../tools/misc/openocd/default.nix | 37 +++++-------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/pkgs/development/tools/misc/openocd/default.nix b/pkgs/development/tools/misc/openocd/default.nix index 4b01c9d33e8..5c0b1a3b101 100644 --- a/pkgs/development/tools/misc/openocd/default.nix +++ b/pkgs/development/tools/misc/openocd/default.nix @@ -1,39 +1,22 @@ {stdenv, fetchurl, libftdi}: -let - # The "GuruPlug installer" from Marvell. See - # , - # linked from . - guruplug_installer = fetchurl { - url = "http://www.plugcomputer.org/index.php/us/resources/downloads?func=download&id=65&chk=d6878f4bf86070f7b4f7bc93317fcb0f&no_html=1"; - sha256 = "1nps9li9k1kxb31f9x6d114hh0a3bx886abvgh8vg004ni996hlv"; - name = "guruplug-installer.tar.gz"; - }; -in -stdenv.mkDerivation { - name = "openocd-0.4.0"; +stdenv.mkDerivation rec { + name = "openocd-${version}"; + version = "0.6.1"; src = fetchurl { - url = "http://download.berlios.de/openocd/openocd-0.4.0.tar.bz2"; - sha256 = "1c9j8s3mqgw5spv6nd4lqfkd1l9jmjipi0ya054vnjfsy2617kzv"; + url = "http://downloads.sourceforge.net/project/openocd/openocd/${version}/openocd-${version}.tar.bz2"; + sha256 = "0argjhff9x4ilgycics61kfgkvb6kkkhhhmj3fxcyydd8mscri7l"; }; - configureFlags = [ "--enable-ft2232_libftdi" "--disable-werror" ]; + configureFlags = [ "--enable-ft2232_libftdi" + "--enable-jlink" + "--enable-rlink" + "--enable-ulink" + "--enable-stlink" ]; buildInputs = [ libftdi ]; - # Copy the GuruPlug stuff. - # XXX: Unfortunately, these files were written for OpenOCD 0.2.0 and don't - # work with 0.4.0. - # postInstall = - # '' tar xf "${guruplug_installer}" - # for dir in interface target board - # do - # cp -v "guruplug-installer/openocd/$dir/"* \ - # "$out/share/openocd/scripts/$dir/" - # done - # ''; - meta = { homepage = http://openocd.berlios.de; description = "OpenOCD, an on-chip debugger"; From 79c3f992b4998631b47e26b6c2725af70cb94aaf Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 19 Feb 2013 11:49:31 -0500 Subject: [PATCH 007/572] makeInitrd: Make the compressor configurable --- pkgs/build-support/kernel/make-initrd.nix | 3 ++- pkgs/build-support/kernel/make-initrd.sh | 2 +- pkgs/top-level/all-packages.nix | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/build-support/kernel/make-initrd.nix b/pkgs/build-support/kernel/make-initrd.nix index 2c0ca37553d..38def9c59a6 100644 --- a/pkgs/build-support/kernel/make-initrd.nix +++ b/pkgs/build-support/kernel/make-initrd.nix @@ -12,7 +12,7 @@ # `contents = {object = ...; symlink = /init;}' is a typical # argument. -{stdenv, perl, cpio, contents, ubootChooser}: +{stdenv, perl, cpio, contents, ubootChooser, compressor}: let inputsFun = ubootName : [perl cpio] @@ -40,4 +40,5 @@ stdenv.mkDerivation { buildNativeInputs = inputsFun stdenv.cross.platform.uboot; makeUInitrd = makeUInitrdFun stdenv.cross.platform.uboot; }; + inherit compressor; } diff --git a/pkgs/build-support/kernel/make-initrd.sh b/pkgs/build-support/kernel/make-initrd.sh index b2c78463569..f6cadaf0281 100644 --- a/pkgs/build-support/kernel/make-initrd.sh +++ b/pkgs/build-support/kernel/make-initrd.sh @@ -36,7 +36,7 @@ storePaths=$(perl $pathsFromGraph closure-*) # Put the closure in a gzipped cpio archive. mkdir -p $out -(cd root && find * -print0 | cpio -o -H newc --null | gzip -9 > $out/initrd) +(cd root && find * -print0 | cpio -o -H newc --null | $compressor > $out/initrd) if [ -n "$makeUInitrd" ]; then mv $out/initrd $out/initrd.gz diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2beabc6a327..adb4c65a4be 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -323,9 +323,10 @@ let inherit lib; }; - makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix { - inherit stdenv perl cpio contents ubootChooser; - }; + makeInitrd = {contents, compressor ? "gzip -9"}: + import ../build-support/kernel/make-initrd.nix { + inherit stdenv perl cpio contents ubootChooser compressor; + }; makeWrapper = makeSetupHook { } ../build-support/setup-hooks/make-wrapper.sh; From 3aba773ad1fb668fbf70e8f84393209a07496930 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Wed, 20 Feb 2013 10:01:55 +0400 Subject: [PATCH 008/572] Give older boost to blobby volleyball to fix build --- pkgs/top-level/all-packages.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index adb4c65a4be..f6e6164aa99 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8197,7 +8197,9 @@ let blackshadeselite = callPackage ../games/blackshadeselite { }; - blobby = callPackage ../games/blobby {}; + blobby = callPackage ../games/blobby { + boost = boost149; + }; bsdgames = callPackage ../games/bsdgames { }; From 773c5a04e4bcf357499ed9c74853a3c3efa5add0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:35:36 +0100 Subject: [PATCH 009/572] haskell-alex: update to version 3.0.4 --- pkgs/development/tools/parsing/alex/3.0.4.nix | 18 ++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 5 +++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/tools/parsing/alex/3.0.4.nix diff --git a/pkgs/development/tools/parsing/alex/3.0.4.nix b/pkgs/development/tools/parsing/alex/3.0.4.nix new file mode 100644 index 00000000000..bc82079aa79 --- /dev/null +++ b/pkgs/development/tools/parsing/alex/3.0.4.nix @@ -0,0 +1,18 @@ +{ cabal, perl, QuickCheck }: + +cabal.mkDerivation (self: { + pname = "alex"; + version = "3.0.4"; + sha256 = "0fgh7ziwxyb140wghh7dpndh41sixcssnba0q942cvkg77m6ah6d"; + isLibrary = false; + isExecutable = true; + buildDepends = [ QuickCheck ]; + buildTools = [ perl ]; + meta = { + homepage = "http://www.haskell.org/alex/"; + description = "Alex is a tool for generating lexical analysers in Haskell"; + 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 b2b7915eb63..91e51b694fb 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -147,7 +147,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_0; # 7.6 ok cabalInstall = self.cabalInstall_1_16_0_2; # 7.6 ok - alex = self.alex_3_0_2; # 7.6 ok + alex = self.alex_3_0_4; # 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 @@ -1948,7 +1948,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 = self.alex_3_0_2; + alex_3_0_4 = callPackage ../development/tools/parsing/alex/3.0.4.nix {}; + alex = self.alex_3_0_4; alexMeta = callPackage ../development/tools/haskell/alex-meta {}; From 1152fb2e22c027f673c919ec609d066bb414eee8 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:49:02 +0100 Subject: [PATCH 010/572] haskell-smallcheck: add version 1.0.1 --- .../haskell/smallcheck/{default.nix => 0.6.2.nix} | 0 .../libraries/haskell/smallcheck/1.0.1.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 4 +++- 3 files changed, 18 insertions(+), 1 deletion(-) rename pkgs/development/libraries/haskell/smallcheck/{default.nix => 0.6.2.nix} (100%) create mode 100644 pkgs/development/libraries/haskell/smallcheck/1.0.1.nix diff --git a/pkgs/development/libraries/haskell/smallcheck/default.nix b/pkgs/development/libraries/haskell/smallcheck/0.6.2.nix similarity index 100% rename from pkgs/development/libraries/haskell/smallcheck/default.nix rename to pkgs/development/libraries/haskell/smallcheck/0.6.2.nix diff --git a/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix b/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix new file mode 100644 index 00000000000..a11eb501a86 --- /dev/null +++ b/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix @@ -0,0 +1,15 @@ +{ cabal, dlist }: + +cabal.mkDerivation (self: { + pname = "smallcheck"; + version = "0.6.2"; + sha256 = "0yz7an3k71ia7sgs8xpkh37xz9ipsnbf13680185cij8llq8zbyr"; + buildDepends = [ dlist ]; + meta = { + homepage = "https://github.com/feuerbach/smallcheck"; + description = "A property-based testing library"; + 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 91e51b694fb..efb302648d2 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1544,7 +1544,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); skein = callPackage ../development/libraries/haskell/skein {}; - smallcheck = callPackage ../development/libraries/haskell/smallcheck {}; + smallcheck_0_6_2 = callPackage ../development/libraries/haskell/smallcheck/0.6.2.nix {}; + smallcheck_1_0_1 = callPackage ../development/libraries/haskell/smallcheck/1.0.1.nix {}; + smallcheck = self.smallcheck_1_0_1; snap = callPackage ../development/libraries/haskell/snap/snap.nix {}; From b516b13441386bf562a8ae8b010bd8af65a8733e Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:49:37 +0100 Subject: [PATCH 011/572] haskell-show: this package needs smallcheck version < 1 --- pkgs/development/libraries/haskell/show/default.nix | 3 +++ pkgs/top-level/haskell-packages.nix | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/haskell/show/default.nix b/pkgs/development/libraries/haskell/show/default.nix index 7fe0013d0d2..70e629e1ebf 100644 --- a/pkgs/development/libraries/haskell/show/default.nix +++ b/pkgs/development/libraries/haskell/show/default.nix @@ -5,6 +5,9 @@ cabal.mkDerivation (self: { version = "0.4.1.2"; sha256 = "1qaphxjaxng7d0kcn3vvxbvqljzzs1hvmsrdsm3pbi19qlsavd5w"; buildDepends = [ QuickCheck random smallcheck syb ]; + patchPhase = '' + sed -i -e 's|smallcheck>=0.4|smallcheck >=0.4 \&\& <= 1|' show.cabal + ''; meta = { description = "'Show' instances for Lambdabot"; license = "GPL"; diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index efb302648d2..5b9a793eb8b 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1619,7 +1619,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); Shellac = callPackage ../development/libraries/haskell/Shellac/Shellac.nix {}; - show = callPackage ../development/libraries/haskell/show {}; + show = callPackage ../development/libraries/haskell/show { + smallcheck = self.smallcheck_0_6_2; + }; SMTPClient = callPackage ../development/libraries/haskell/SMTPClient {}; From 4c620d55013c8d4b4e6dace4cb47aea1edf60d6f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:50:05 +0100 Subject: [PATCH 012/572] haskell-hoogle: jailbreak to support recent versions of conduit --- pkgs/development/libraries/haskell/hoogle/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/hoogle/default.nix b/pkgs/development/libraries/haskell/hoogle/default.nix index 153cee7db75..a54802ef9b0 100644 --- a/pkgs/development/libraries/haskell/hoogle/default.nix +++ b/pkgs/development/libraries/haskell/hoogle/default.nix @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { haskellSrcExts httpTypes parsec random safe tagsoup time transformers uniplate wai warp ]; + jailbreak = true; meta = { homepage = "http://www.haskell.org/hoogle/"; description = "Haskell API Search"; From 3a740edab7d70fb09cb85178c1d310e4688cd78a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:51:37 +0100 Subject: [PATCH 013/572] haskell-DAV: jailbreak to support recent versions of conduit --- pkgs/development/libraries/haskell/DAV/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/DAV/default.nix b/pkgs/development/libraries/haskell/DAV/default.nix index c10e56d1146..b1932966675 100644 --- a/pkgs/development/libraries/haskell/DAV/default.nix +++ b/pkgs/development/libraries/haskell/DAV/default.nix @@ -13,6 +13,7 @@ cabal.mkDerivation (self: { 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 598c958a7d640bae71ae7eb12b306c911623619a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:01 +0100 Subject: [PATCH 014/572] haskell-idris: update to version 0.9.6.1 --- 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 15b4aa00986..babaa2e2482 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"; - sha256 = "1yml1k4bis210hgi898hgs4wj5p34ainlj7vwy5lh7bjkvrksgq1"; + version = "0.9.6.1"; + sha256 = "1wy79rrm5pvg77i9nvwkcg6swsdbmg2izch48n4lj4idj0ga5g62"; isLibrary = false; isExecutable = true; buildDepends = [ From 83321e139f054191b58be28bdf9a08de0127e55d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:01 +0100 Subject: [PATCH 015/572] haskell-attoparsec-conduit: update to version 1.0.0 --- .../libraries/haskell/attoparsec-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix b/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix index 9c969ed858f..916f38f66c5 100644 --- a/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix +++ b/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "attoparsec-conduit"; - version = "0.5.0.3"; - sha256 = "1n35v7mq93marx6ayja7zfk2hib4whspvysf0a7hjikylp4lfydw"; + version = "1.0.0"; + sha256 = "1aw071qcwhxwpd6azhgaiia97rhj50rms4pysbc19iihmdih3ib8"; buildDepends = [ attoparsec conduit text transformers ]; meta = { homepage = "http://github.com/snoyberg/conduit"; From fee385a3fbbf09493a164012dd14ad407c90b9c1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:01 +0100 Subject: [PATCH 016/572] haskell-base64-conduit: update to version 1.0.0 --- pkgs/development/libraries/haskell/base64-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/base64-conduit/default.nix b/pkgs/development/libraries/haskell/base64-conduit/default.nix index 851dda488dc..c6d25384be2 100644 --- a/pkgs/development/libraries/haskell/base64-conduit/default.nix +++ b/pkgs/development/libraries/haskell/base64-conduit/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "base64-conduit"; - version = "0.5.1"; - sha256 = "1zmp6iv55rac7x7w59az7zaarq79fr7zvgg2wcb5b627axlw909l"; + version = "1.0.0"; + sha256 = "10wjgdixk5da48jpm2i91vy3ckdqpbpgba6hzn7ak6d3qac22m9q"; buildDepends = [ base64Bytestring conduit ]; meta = { homepage = "http://github.com/snoyberg/conduit"; From 0104e27e3b672e8644026e9ea89fa6b78593f763 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:01 +0100 Subject: [PATCH 017/572] haskell-blaze-builder-conduit: update to version 1.0.0 --- .../libraries/haskell/blaze-builder-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix b/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix index a9568dde496..89ff67fac37 100644 --- a/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix +++ b/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "blaze-builder-conduit"; - version = "0.5.0.3"; - sha256 = "0dbymh29zg0bvhlmai5s6qiqypx46hmlg375jpcq1597vzaanwnw"; + version = "1.0.0"; + sha256 = "15q0b0k5dxrp9cw2b4qf9mmjwz1mmxrn3890df5rc9z6yajajrc6"; buildDepends = [ blazeBuilder conduit text transformers ]; meta = { homepage = "http://github.com/snoyberg/conduit"; From bcdf686d388201c140f7e4bd9e57e977c0748bf3 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:02 +0100 Subject: [PATCH 018/572] haskell-classy-prelude-conduit: update to version 0.5.1 --- .../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 0b4ae85c73a..85a1fb7bdef 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.0"; - sha256 = "1c1j9cxj08nz1pkrdxhphk6zyn1dxf3wbl8phcrzi8qk6q1vi0bi"; + version = "0.5.1"; + sha256 = "1vwcxwrbnczchq2b773kjjr3ysc47widak8qj0kwi26nf3jics4k"; buildDepends = [ classyPrelude conduit monadControl resourcet transformers void xmlConduit From 03817721c3932da33137f93231d61673b6ea1f85 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:02 +0100 Subject: [PATCH 019/572] haskell-conduit: update to version 1.0.0 --- 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 74827d407b7..3ea60db5fb5 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 = "0.5.6"; - sha256 = "1a5apcds3jjksz7hzw4ag725796axqk9nm5fhn5i4l82zphq2cxs"; + version = "1.0.0"; + sha256 = "1sx7s3awzb7y51prmmvrx9gxhd5068rbzwl719lfx3r50k94r00d"; buildDepends = [ liftedBase monadControl resourcet text transformers transformersBase void From 1d72357ea446d0ccc762e6d74addf89340750751 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:02 +0100 Subject: [PATCH 020/572] haskell-crypto-api: update to version 0.11 --- pkgs/development/libraries/haskell/crypto-api/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/crypto-api/default.nix b/pkgs/development/libraries/haskell/crypto-api/default.nix index 5f71e622250..dbfc60c189c 100644 --- a/pkgs/development/libraries/haskell/crypto-api/default.nix +++ b/pkgs/development/libraries/haskell/crypto-api/default.nix @@ -1,10 +1,10 @@ -{ cabal, cereal, entropy, largeword, tagged }: +{ cabal, cereal, entropy, tagged, transformers }: cabal.mkDerivation (self: { pname = "crypto-api"; - version = "0.10.2"; - sha256 = "06dbvdwyw2hf5cafpjfhasgyzzbigvvg74c47lafvqvgxvn9v4ms"; - buildDepends = [ cereal entropy largeword tagged ]; + version = "0.11"; + sha256 = "1v42dmm4cx8brb5mpz34wa20c3s27r0v7qiqlb54svzsl0jkfmiy"; + buildDepends = [ cereal entropy tagged transformers ]; meta = { homepage = "http://trac.haskell.org/crypto-api/wiki"; description = "A generic interface for cryptographic operations"; From f046fc687dd0cb2f6188f7e49646ab505caff697 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:02 +0100 Subject: [PATCH 021/572] haskell-crypto-conduit: update to version 0.5.0 --- pkgs/development/libraries/haskell/crypto-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/crypto-conduit/default.nix b/pkgs/development/libraries/haskell/crypto-conduit/default.nix index d22bfa840e7..29163f89737 100644 --- a/pkgs/development/libraries/haskell/crypto-conduit/default.nix +++ b/pkgs/development/libraries/haskell/crypto-conduit/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "crypto-conduit"; - version = "0.4.3"; - sha256 = "0h9dmr88hqmz2876mlnzz8s5kmi368zs9pljvvmb9vn7m44gpyrk"; + version = "0.5.0"; + sha256 = "0mlf2l784w0wyfjqsxzfdwmn1wb0z1s6mb8kdhw8x1z4a8gy9a92"; buildDepends = [ cereal conduit cryptoApi transformers ]; meta = { homepage = "https://github.com/meteficha/crypto-conduit"; From 32bd11db4184073ae8f29ada4cbd42c4899278b1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:02 +0100 Subject: [PATCH 022/572] haskell-filesystem-conduit: update to version 1.0.0 --- .../libraries/haskell/filesystem-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/filesystem-conduit/default.nix b/pkgs/development/libraries/haskell/filesystem-conduit/default.nix index fd20b7c7547..681ee682073 100644 --- a/pkgs/development/libraries/haskell/filesystem-conduit/default.nix +++ b/pkgs/development/libraries/haskell/filesystem-conduit/default.nix @@ -3,8 +3,8 @@ cabal.mkDerivation (self: { pname = "filesystem-conduit"; - version = "0.5.0.2"; - sha256 = "0vpxl32k6734vli8nky9cwyabw9alvpjm0g5q822yj9rk2439yfq"; + version = "1.0.0"; + sha256 = "1fz3iihcqpg6m3svjqdg8lvkpza955qn8cbs9b3w333vxkglhi6v"; buildDepends = [ conduit systemFileio systemFilepath text transformers ]; From ecf89e09171f6747f24dda6a50e1a78a94945fd0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 023/572] haskell-hamlet: update to version 1.1.6.3 --- pkgs/development/libraries/haskell/hamlet/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/hamlet/default.nix b/pkgs/development/libraries/haskell/hamlet/default.nix index 39df11063ad..28881da84c3 100644 --- a/pkgs/development/libraries/haskell/hamlet/default.nix +++ b/pkgs/development/libraries/haskell/hamlet/default.nix @@ -4,12 +4,11 @@ cabal.mkDerivation (self: { pname = "hamlet"; - version = "1.1.6.2"; - sha256 = "00asrmyb4k9xpsbwwafm3rj1lisssrc3hj3dsr827w9x86xxargy"; + version = "1.1.6.3"; + sha256 = "1kpj8j47licmdf364n0fn5908hsl6ib1wkiqhcx3m0nimb7pjnss"; buildDepends = [ blazeBuilder blazeHtml blazeMarkup failure parsec shakespeare text ]; - jailbreak = true; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Haml-like template files that are compile-time checked"; From a0deb846901df77d47914143d5a0bb46757b7dbe Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 024/572] haskell-highlighting-kate: update to version 0.5.3.6 --- .../development/libraries/haskell/highlighting-kate/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/haskell/highlighting-kate/default.nix b/pkgs/development/libraries/haskell/highlighting-kate/default.nix index ef46b12747b..9c3c25eff0a 100644 --- a/pkgs/development/libraries/haskell/highlighting-kate/default.nix +++ b/pkgs/development/libraries/haskell/highlighting-kate/default.nix @@ -7,8 +7,8 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ blazeHtml filepath mtl parsec regexPcre ]; - prePatch = "sed -i -e 's|regex-pcre-builtin|regex-pcre|' highlighting-kate.cabal"; jailbreak = true; + prePatch = "sed -i -e 's|regex-pcre-builtin|regex-pcre|' highlighting-kate.cabal"; meta = { homepage = "http://github.com/jgm/highlighting-kate"; description = "Syntax highlighting"; From 2b2cf88d1e1b047a7d73c7e9099456dc8db366cd Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 025/572] haskell-html-conduit: update to version 1.1.0 --- pkgs/development/libraries/haskell/html-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/html-conduit/default.nix b/pkgs/development/libraries/haskell/html-conduit/default.nix index 28216a54815..ff4b03c1e6a 100644 --- a/pkgs/development/libraries/haskell/html-conduit/default.nix +++ b/pkgs/development/libraries/haskell/html-conduit/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "html-conduit"; - version = "0.1.0.4"; - sha256 = "1g217856dz1ad545slk020n5w0la4yyd5ygva2gg2g0999padi78"; + version = "1.1.0"; + sha256 = "11mkr7plhbn8kyki0h362habzhsnlb7yrg4ypy48d0l3i7p7vm53"; buildDepends = [ conduit filesystemConduit resourcet systemFilepath tagstreamConduit text transformers xmlConduit xmlTypes From a443d513fb953dc8421b765c904627dae6c05826 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 026/572] haskell-http-conduit: update to version 1.8.9 --- 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 544f6c0d674..ebb44f1512b 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.8.7.1"; - sha256 = "1m0f9snc2zxj8hvxw3ngw0h78ckvdlxxfjvrryk93blfwbamssi5"; + version = "1.8.9"; + sha256 = "0v99nc29h4qm1dbs7bwk4nwhxwk22vzl4ghrq9r3vishi6gwr7hb"; buildDepends = [ asn1Data attoparsec attoparsecConduit base64Bytestring blazeBuilder blazeBuilderConduit caseInsensitive certificate conduit cookie From 394cdd989671dc9544343064f5d83a147965590e Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 027/572] haskell-monad-logger: update to version 0.3.0.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 97078f2fb84..173529b443d 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.2.3.2"; - sha256 = "0b5jfmzmsb7pdawcm5i74sy934q2d78pjs39invas502kx5bxzk5"; + version = "0.3.0.1"; + sha256 = "05pwccs2f5qn22cwvzaiw6bflyxl3avrl89y737rjcsw6755r5sr"; buildDepends = [ conduit fastLogger monadControl mtl resourcet text transformers transformersBase From 2a5cd3377f9da4a5063f58501bb8e033cf02e9c8 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 028/572] haskell-network-conduit: update to version 1.0.0 --- .../development/libraries/haskell/network-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/network-conduit/default.nix b/pkgs/development/libraries/haskell/network-conduit/default.nix index a56c35a214b..67d44bd1ebb 100644 --- a/pkgs/development/libraries/haskell/network-conduit/default.nix +++ b/pkgs/development/libraries/haskell/network-conduit/default.nix @@ -3,8 +3,8 @@ cabal.mkDerivation (self: { pname = "network-conduit"; - version = "0.6.2.2"; - sha256 = "1v8abhw977hr78hkshrbxy04abbbhafvvnhr4xxgqc0phwch02mc"; + version = "1.0.0"; + sha256 = "16kgg6wkpl10kcwfijm9iqi7r5gababaymxyhmjab6axfzknppk3"; buildDepends = [ conduit liftedBase monadControl network transformers ]; From 1ec7fe92bf685922bf85afbe55c1579e7f0f3b1b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 029/572] haskell-persistent-sqlite: update to version 1.1.3.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 17b9a666436..46c4a39c196 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.3"; - sha256 = "0rhwq9s6w48y867dmy5c0kvgrh9ixy3sqwq1i2zfacak82r6kki1"; + version = "1.1.3.1"; + sha256 = "0kbsi6njk4c10khlh81pmqai20jcq5v9cgy1xyskkp26d3y0llya"; buildDepends = [ aeson conduit monadControl persistent text transformers ]; From e954f13e153c38e8bbc0c5871fcf08dc87eca846 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:03 +0100 Subject: [PATCH 030/572] haskell-persistent-template: update to version 1.1.2.4 --- .../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 284c7116ce6..2816a38c413 100644 --- a/pkgs/development/libraries/haskell/persistent-template/default.nix +++ b/pkgs/development/libraries/haskell/persistent-template/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "persistent-template"; - version = "1.1.2.2"; - sha256 = "168cxlnpcgkm7m7kzl3zlcvpgdl9wz7vx3anw8z8pc50qjns8dy0"; + version = "1.1.2.4"; + sha256 = "0fsqyv5r6h356shmah6bs75fzds0fsmyizbnvj5ywzhc003jv5h9"; buildDepends = [ aeson monadControl persistent text transformers ]; meta = { homepage = "http://www.yesodweb.com/book/persistent"; From d29fd88438f19bfe90dcd3538d1b08b8b483d4b2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:04 +0100 Subject: [PATCH 031/572] haskell-persistent: update to version 1.1.5.1 --- pkgs/development/libraries/haskell/persistent/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/persistent/default.nix b/pkgs/development/libraries/haskell/persistent/default.nix index 3babf872735..f7812a2692d 100644 --- a/pkgs/development/libraries/haskell/persistent/default.nix +++ b/pkgs/development/libraries/haskell/persistent/default.nix @@ -6,8 +6,8 @@ cabal.mkDerivation (self: { pname = "persistent"; - version = "1.1.5"; - sha256 = "0jk4vkisc4as6xi0glc0sdldqf4xdj3s5xvv2vwzgjliyalggxga"; + version = "1.1.5.1"; + sha256 = "1ds0q3mzgg60makx7impyxsvpzd3issa89igcy176yb54ypjwfnz"; buildDepends = [ aeson attoparsec base64Bytestring blazeHtml blazeMarkup conduit liftedBase monadControl monadLogger pathPieces poolConduit From 4287ca08adf3c344ac3c495a06bfb64f95c61a48 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:04 +0100 Subject: [PATCH 032/572] haskell-simple-sendfile: update to version 0.2.11 --- .../development/libraries/haskell/simple-sendfile/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/simple-sendfile/default.nix b/pkgs/development/libraries/haskell/simple-sendfile/default.nix index 6f858398bc9..7ecd70f25f7 100644 --- a/pkgs/development/libraries/haskell/simple-sendfile/default.nix +++ b/pkgs/development/libraries/haskell/simple-sendfile/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "simple-sendfile"; - version = "0.2.10"; - sha256 = "07js189yyya2vs3wsc49b7c2zbh63f48kywmz88g7s394bp3n9am"; + version = "0.2.11"; + sha256 = "1q9m9lxv9jfkn6a1lf07jcl4li3n5996df1qrfkfjq2n0bvn4qfj"; buildDepends = [ network ]; meta = { description = "Cross platform library for the sendfile system call"; From 3cd5fe7f4a560991c09c4b75e3c25a856c5579a2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:04 +0100 Subject: [PATCH 033/572] haskell-skein: update to version 0.1.0.12 --- pkgs/development/libraries/haskell/skein/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/skein/default.nix b/pkgs/development/libraries/haskell/skein/default.nix index 1ccedad6d11..cc910711768 100644 --- a/pkgs/development/libraries/haskell/skein/default.nix +++ b/pkgs/development/libraries/haskell/skein/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "skein"; - version = "0.1.0.11"; - sha256 = "16iy3frzxzkiybl5cglvnmvxzziwr8361s00m7130dh82r3vc21q"; + version = "0.1.0.12"; + sha256 = "1nx0ad0y7zmljc7phwin2aph6frs70hvz3di8q52kzpi5m1h3g3a"; buildDepends = [ cereal cryptoApi tagged ]; meta = { homepage = "https://github.com/meteficha/skein"; From 007060ae492bc593d224f1d5be24615bb49e9be1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:04 +0100 Subject: [PATCH 034/572] haskell-smallcheck: update to version 1.0.1 --- pkgs/development/libraries/haskell/smallcheck/1.0.1.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix b/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix index a11eb501a86..b7b0dc8e974 100644 --- a/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix +++ b/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix @@ -1,10 +1,10 @@ -{ cabal, dlist }: +{ cabal, logict, mtl }: cabal.mkDerivation (self: { pname = "smallcheck"; - version = "0.6.2"; - sha256 = "0yz7an3k71ia7sgs8xpkh37xz9ipsnbf13680185cij8llq8zbyr"; - buildDepends = [ dlist ]; + version = "1.0.1"; + sha256 = "1b8g7vgvwyz2smx16gbn73k749mazj2zmr2hjhqj4rk0433i6lpk"; + buildDepends = [ logict mtl ]; meta = { homepage = "https://github.com/feuerbach/smallcheck"; description = "A property-based testing library"; From e23aab7f802cf0a4e6d17f279e4b1cde2255d57c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:04 +0100 Subject: [PATCH 035/572] haskell-socks: update to version 0.5.0 --- pkgs/development/libraries/haskell/socks/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/socks/default.nix b/pkgs/development/libraries/haskell/socks/default.nix index d1b4494090c..34e4bf978a4 100644 --- a/pkgs/development/libraries/haskell/socks/default.nix +++ b/pkgs/development/libraries/haskell/socks/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "socks"; - version = "0.4.2"; - sha256 = "1nbhx2jjij5kjqa0l68s401ach4yziq6w8mvcv589fcscw212w8r"; + version = "0.5.0"; + sha256 = "1lk6yvx5a65nz7z89i0sgqzcqw2v6j645nq15kgbpxhcinfdvqs7"; buildDepends = [ cereal network ]; meta = { homepage = "http://github.com/vincenthz/hs-socks"; From a97dcd769b20077a2b632b6753d7e1c4d97c1e4f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:04 +0100 Subject: [PATCH 036/572] haskell-tagstream-conduit: update to version 0.5.4 --- .../libraries/haskell/tagstream-conduit/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/haskell/tagstream-conduit/default.nix b/pkgs/development/libraries/haskell/tagstream-conduit/default.nix index 84187bb4c1f..38f4375becd 100644 --- a/pkgs/development/libraries/haskell/tagstream-conduit/default.nix +++ b/pkgs/development/libraries/haskell/tagstream-conduit/default.nix @@ -1,13 +1,14 @@ -{ cabal, attoparsec, blazeBuilder, blazeBuilderConduit, conduit -, text +{ cabal, attoparsec, attoparsecConduit, blazeBuilder +, blazeBuilderConduit, caseInsensitive, conduit, text, transformers }: cabal.mkDerivation (self: { pname = "tagstream-conduit"; - version = "0.5.3"; - sha256 = "08g34dbb59mrpj0lym5a0zlygvj7in57nkhbk84kxvggrhl0jndl"; + version = "0.5.4"; + sha256 = "1djf66kn3m4sdwmis82f9w2nkmjyrq12zda7ic9pcsvra579868i"; buildDepends = [ - attoparsec blazeBuilder blazeBuilderConduit conduit text + attoparsec attoparsecConduit blazeBuilder blazeBuilderConduit + caseInsensitive conduit text transformers ]; meta = { homepage = "http://github.com/yihuang/tagstream-conduit"; From 0c21d4735270c64a069b3c296f86f67643112ad7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:04 +0100 Subject: [PATCH 037/572] haskell-wai-app-static: update to version 1.3.1.2 --- pkgs/development/libraries/haskell/wai-app-static/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/wai-app-static/default.nix b/pkgs/development/libraries/haskell/wai-app-static/default.nix index 8970c1d1042..36ec82d88c3 100644 --- a/pkgs/development/libraries/haskell/wai-app-static/default.nix +++ b/pkgs/development/libraries/haskell/wai-app-static/default.nix @@ -6,8 +6,8 @@ cabal.mkDerivation (self: { pname = "wai-app-static"; - version = "1.3.1.1"; - sha256 = "0zbkjh2l9qjm4s9z7cm327kdrf58rhasn764pv347ll2n7gphgqq"; + version = "1.3.1.2"; + sha256 = "1i0j3n0cp1zq43g06nb3cxajd4k9isg4chdwzzlyimm078a9w54x"; buildDepends = [ base64Bytestring blazeBuilder blazeHtml blazeMarkup cereal cryptoConduit cryptohash fileEmbed httpDate httpTypes mimeTypes From c03d3e1562c1f0dd4fa7532ce3c86e9ea913f912 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:05 +0100 Subject: [PATCH 038/572] haskell-wai-extra: update to version 1.3.2.4 --- 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 3ba52da0050..7a4e18b3295 100644 --- a/pkgs/development/libraries/haskell/wai-extra/default.nix +++ b/pkgs/development/libraries/haskell/wai-extra/default.nix @@ -6,8 +6,8 @@ cabal.mkDerivation (self: { pname = "wai-extra"; - version = "1.3.2.3"; - sha256 = "1xqx00s1y87ji8n092f0rq150b3ahl1p4xwas5cl01ayp106ywzs"; + version = "1.3.2.4"; + sha256 = "12hdg5h4bk04nhcmjm5mc62dng9np0dlik4b1w1syd2lxqv6pdb9"; buildDepends = [ ansiTerminal blazeBuilder blazeBuilderConduit caseInsensitive conduit dataDefault dateCache fastLogger httpTypes network From d8a741b342df06eb7eaa74a6e71a7e9625ec89d4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:05 +0100 Subject: [PATCH 039/572] haskell-wai-test: update to version 1.3.0.4 --- pkgs/development/libraries/haskell/wai-test/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/wai-test/default.nix b/pkgs/development/libraries/haskell/wai-test/default.nix index d0dc0a5b571..9995cd6b977 100644 --- a/pkgs/development/libraries/haskell/wai-test/default.nix +++ b/pkgs/development/libraries/haskell/wai-test/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "wai-test"; - version = "1.3.0.2"; - sha256 = "0awr1wwhky0mbllfdan42shfckmnnf66dji5zx7rhwjdfqvbbhzn"; + version = "1.3.0.4"; + sha256 = "1si54frsn8s8r0ykqc9h571rqbapf82jcvbz8bd49bbylv4j6yy0"; buildDepends = [ blazeBuilder blazeBuilderConduit caseInsensitive conduit cookie httpTypes HUnit text transformers wai From d91697876e8ab47e6e275de48ae47a360fe32ed5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:05 +0100 Subject: [PATCH 040/572] haskell-wai: update to version 1.4.0 --- pkgs/development/libraries/haskell/wai/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/wai/default.nix b/pkgs/development/libraries/haskell/wai/default.nix index f1922a95b7e..deb1090dd4a 100644 --- a/pkgs/development/libraries/haskell/wai/default.nix +++ b/pkgs/development/libraries/haskell/wai/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "wai"; - version = "1.3.0.3"; - sha256 = "091qykycxfh9f1jysdjxkw4msdgxp796as3yzv9sgqsxvz58rv1n"; + version = "1.4.0"; + sha256 = "1213sib2qp1xafrrnmkxabgkba0g00awy6dx9jnlfkj5r6m32wdq"; buildDepends = [ blazeBuilder conduit httpTypes network text transformers vault ]; From 273e26780e468510e84f016f214f15640417bf84 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:05 +0100 Subject: [PATCH 041/572] haskell-warp: update to version 1.3.7.4 --- pkgs/development/libraries/haskell/warp/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/warp/default.nix b/pkgs/development/libraries/haskell/warp/default.nix index 135d57f0024..290e60ff3b7 100644 --- a/pkgs/development/libraries/haskell/warp/default.nix +++ b/pkgs/development/libraries/haskell/warp/default.nix @@ -5,8 +5,8 @@ cabal.mkDerivation (self: { pname = "warp"; - version = "1.3.7.3"; - sha256 = "0k68dqnz0j9x5698sr2yqcxh1bd3ppv2qh2dn4919lrlpzn3xd93"; + version = "1.3.7.4"; + sha256 = "0z043v1fjblbvkn44hzp7j8iawqzbwf67qxq7gsv7jfq1q58xbrx"; buildDepends = [ blazeBuilder blazeBuilderConduit caseInsensitive conduit hashable httpTypes liftedBase network networkConduit simpleSendfile From bcf838bf76e31efe400d5f781d050fe2754aa907 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:05 +0100 Subject: [PATCH 042/572] haskell-xml-conduit: update to version 1.1.0.2 --- pkgs/development/libraries/haskell/xml-conduit/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/xml-conduit/default.nix b/pkgs/development/libraries/haskell/xml-conduit/default.nix index 452c75e2865..39bcc63248e 100644 --- a/pkgs/development/libraries/haskell/xml-conduit/default.nix +++ b/pkgs/development/libraries/haskell/xml-conduit/default.nix @@ -6,14 +6,13 @@ cabal.mkDerivation (self: { pname = "xml-conduit"; - version = "1.0.3.3"; - sha256 = "0jw1r4vmcbxj8kgkdj4pgibihcdmbdj15g06i9p8mdklmmd7gqnz"; + version = "1.1.0.2"; + sha256 = "17wv4rngmn8jvg6c3ia48w5q9s9dww9aisrmans9llqs7ks3ndqc"; buildDepends = [ attoparsec attoparsecConduit blazeBuilder blazeBuilderConduit blazeHtml blazeMarkup conduit dataDefault failure monadControl resourcet systemFilepath text transformers xmlTypes ]; - jailbreak = true; meta = { homepage = "http://github.com/snoyberg/xml"; description = "Pure-Haskell utilities for dealing with XML with the conduit package"; From 90f1e88d4db924ee5753158fa2408cc38dffcdd6 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:05 +0100 Subject: [PATCH 043/572] haskell-xmlhtml: update to version 0.2.0.4 --- pkgs/development/libraries/haskell/xmlhtml/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/xmlhtml/default.nix b/pkgs/development/libraries/haskell/xmlhtml/default.nix index fc6c189db8e..aff309b184f 100644 --- a/pkgs/development/libraries/haskell/xmlhtml/default.nix +++ b/pkgs/development/libraries/haskell/xmlhtml/default.nix @@ -4,12 +4,11 @@ cabal.mkDerivation (self: { pname = "xmlhtml"; - version = "0.2.0.3"; - sha256 = "03bwsm3dazc01cwndlm92nr35a4fllsxx17rp72d2vnf1571a1vb"; + version = "0.2.0.4"; + sha256 = "1z40hkq9l6nw3hcnz6d1x0han7ynjkvbvjy8bl5mq7zmhk1xhmr6"; buildDepends = [ blazeBuilder blazeHtml blazeMarkup parsec text unorderedContainers ]; - jailbreak = true; meta = { description = "XML parser and renderer with HTML 5 quirks mode"; license = self.stdenv.lib.licenses.bsd3; From caf11199f90cdd0fcb06d6c3ea75624df26cbaf9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:07 +0100 Subject: [PATCH 044/572] haskell-yesod-auth: update to version 1.1.5.2 --- .../libraries/haskell/yesod-auth/default.nix | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-auth/default.nix b/pkgs/development/libraries/haskell/yesod-auth/default.nix index 59eca41fff3..b441dc32458 100644 --- a/pkgs/development/libraries/haskell/yesod-auth/default.nix +++ b/pkgs/development/libraries/haskell/yesod-auth/default.nix @@ -1,6 +1,6 @@ -{ cabal, aeson, authenticate, blazeHtml, blazeMarkup, hamlet -, httpConduit, httpTypes, liftedBase, mimeMail, network, persistent -, persistentTemplate, pureMD5, pwstoreFast, random, SHA +{ cabal, aeson, authenticate, blazeHtml, blazeMarkup, fileEmbed +, hamlet, httpConduit, httpTypes, liftedBase, mimeMail, network +, persistent, persistentTemplate, pureMD5, pwstoreFast, random, SHA , shakespeareCss, shakespeareJs, text, transformers , unorderedContainers, wai, yesodCore, yesodForm, yesodJson , yesodPersistent @@ -8,16 +8,15 @@ cabal.mkDerivation (self: { pname = "yesod-auth"; - version = "1.1.4.1"; - sha256 = "18x2m1clk3nqaap51c6ayxbh5q6v0i4srcphgyf26lrxq514pvad"; + version = "1.1.5.2"; + sha256 = "0gpfbfhqdsyzyxjg5d36fkg6bzspbph5h14kwp264wm166dkcskf"; buildDepends = [ - aeson authenticate blazeHtml blazeMarkup hamlet httpConduit - httpTypes liftedBase mimeMail network persistent persistentTemplate - pureMD5 pwstoreFast random SHA shakespeareCss shakespeareJs text - transformers unorderedContainers wai yesodCore yesodForm yesodJson - yesodPersistent + aeson authenticate blazeHtml blazeMarkup fileEmbed hamlet + httpConduit httpTypes liftedBase mimeMail network persistent + persistentTemplate pureMD5 pwstoreFast random SHA shakespeareCss + shakespeareJs text transformers unorderedContainers wai yesodCore + yesodForm yesodJson yesodPersistent ]; - jailbreak = true; meta = { homepage = "http://www.yesodweb.com/"; description = "Authentication for Yesod"; From 412eb8c2f241d5087743724a4e830f8d0cf0836b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:07 +0100 Subject: [PATCH 045/572] haskell-yesod-core: update to version 1.1.8.2 --- pkgs/development/libraries/haskell/yesod-core/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-core/default.nix b/pkgs/development/libraries/haskell/yesod-core/default.nix index 6ddbaa13eff..e2a36c2f184 100644 --- a/pkgs/development/libraries/haskell/yesod-core/default.nix +++ b/pkgs/development/libraries/haskell/yesod-core/default.nix @@ -9,8 +9,8 @@ cabal.mkDerivation (self: { pname = "yesod-core"; - version = "1.1.8.1"; - sha256 = "1bkqh8k7wwyj5s8pyxmlc1lrz47rz1mj49mqmpbislkjk0p6hbks"; + version = "1.1.8.2"; + sha256 = "0brrvij1vldb5zr3vnynikaf1x479qrgf7k3162nhrmwl57lm9sz"; buildDepends = [ aeson blazeBuilder blazeHtml blazeMarkup caseInsensitive cereal clientsession conduit cookie failure fastLogger hamlet httpTypes @@ -19,7 +19,6 @@ cabal.mkDerivation (self: { text time transformers transformersBase vector wai waiExtra yesodRoutes ]; - jailbreak = true; meta = { homepage = "http://www.yesodweb.com/"; description = "Creation of type-safe, RESTful web applications"; From 2abefe57197e49077aad431d2c9dfac67262a995 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:07 +0100 Subject: [PATCH 046/572] haskell-yesod-default: update to version 1.1.3.2 --- pkgs/development/libraries/haskell/yesod-default/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-default/default.nix b/pkgs/development/libraries/haskell/yesod-default/default.nix index 65a86b46cca..b0e720ff487 100644 --- a/pkgs/development/libraries/haskell/yesod-default/default.nix +++ b/pkgs/development/libraries/haskell/yesod-default/default.nix @@ -5,8 +5,8 @@ cabal.mkDerivation (self: { pname = "yesod-default"; - version = "1.1.3.1"; - sha256 = "16kxq93q5q6bz47s1rfgswrygyp1g090b8r11n56r8mnr24ix0mi"; + version = "1.1.3.2"; + sha256 = "07gm9sj4c231wdmfmb7df1s8wvqa6fw7nhcq554h16h2ibv5pcqg"; buildDepends = [ dataDefault hamlet networkConduit safe shakespeareCss shakespeareJs text transformers unorderedContainers wai waiExtra warp yaml From ad96740034ffe6a946e2b751249bfc14e073f3e1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:07 +0100 Subject: [PATCH 047/572] haskell-yesod-form: update to version 1.2.1.3 --- pkgs/development/libraries/haskell/yesod-form/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-form/default.nix b/pkgs/development/libraries/haskell/yesod-form/default.nix index 0e9999532a0..d853e217a7f 100644 --- a/pkgs/development/libraries/haskell/yesod-form/default.nix +++ b/pkgs/development/libraries/haskell/yesod-form/default.nix @@ -6,15 +6,14 @@ cabal.mkDerivation (self: { pname = "yesod-form"; - version = "1.2.1.2"; - sha256 = "121c6ln8y6l2f9n6pjs2nrghz7w94pb34vp12cj8fabc71vk029j"; + version = "1.2.1.3"; + sha256 = "1mrqr6pfrhkk0vv9lhd4wxiic8d1hsraiqmjcqsfbpdyrc6fqypq"; buildDepends = [ aeson attoparsec blazeBuilder blazeHtml blazeMarkup cryptoApi dataDefault emailValidate hamlet network persistent shakespeareCss shakespeareJs text time transformers wai xssSanitize yesodCore yesodPersistent ]; - jailbreak = true; meta = { homepage = "http://www.yesodweb.com/"; description = "Form handling support for Yesod Web Framework"; From 02a48586cff920b7b7e35bf93cf90f49ba2ffbdb Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:08 +0100 Subject: [PATCH 048/572] haskell-yesod-static: update to version 1.1.2.2 --- pkgs/development/libraries/haskell/yesod-static/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-static/default.nix b/pkgs/development/libraries/haskell/yesod-static/default.nix index 5af1efc31f2..a661a83c731 100644 --- a/pkgs/development/libraries/haskell/yesod-static/default.nix +++ b/pkgs/development/libraries/haskell/yesod-static/default.nix @@ -5,8 +5,8 @@ cabal.mkDerivation (self: { pname = "yesod-static"; - version = "1.1.2.1"; - sha256 = "0hpab9sgm6pa0lw2nl1p6l4gl3ciscsc21q0d2cp3aa75gavyrjz"; + version = "1.1.2.2"; + sha256 = "1z1afpr9xbclpwswlbys7f7w8761vvr06hxhqhnqfzf4ky8g3671"; buildDepends = [ base64Bytestring cereal conduit cryptoConduit cryptohash fileEmbed httpTypes systemFilepath text transformers unixCompat wai From c7c79828de769ac3d2d62211fc6d067112aacc19 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:08 +0100 Subject: [PATCH 049/572] haskell-yesod: update to version 1.1.9 --- pkgs/development/libraries/haskell/yesod/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod/default.nix b/pkgs/development/libraries/haskell/yesod/default.nix index dc412ca9a9e..ebb46f68bc8 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.8.1"; - sha256 = "01s9b0pqqj7q760vm62ni95k5fqwccw8l6531kqav2vnfvi08ric"; + version = "1.1.9"; + sha256 = "0fcvf0bg7dsrka639q20dncinqq0fdv21zyvwpx63qfcmilhmjlm"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -27,7 +27,6 @@ cabal.mkDerivation (self: { yesodAuth yesodCore yesodDefault yesodForm yesodJson yesodPersistent zlib ]; - jailbreak = true; meta = { homepage = "http://www.yesodweb.com/"; description = "Creation of type-safe, RESTful web applications"; From 00370e2fb69afd63926017c35c8d8a9861a696d4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 20 Feb 2013 11:58:08 +0100 Subject: [PATCH 050/572] haskell-zlib-conduit: update to version 1.0.0 --- pkgs/development/libraries/haskell/zlib-conduit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/zlib-conduit/default.nix b/pkgs/development/libraries/haskell/zlib-conduit/default.nix index e902cce44e5..cf62afc6c01 100644 --- a/pkgs/development/libraries/haskell/zlib-conduit/default.nix +++ b/pkgs/development/libraries/haskell/zlib-conduit/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "zlib-conduit"; - version = "0.5.0.3"; - sha256 = "05rlbyxcwq952psbfp94irmygabqxyf1kkm80pwdanlaaky03nsb"; + version = "1.0.0"; + sha256 = "0q0l4qw1f2cwjj71n4i082ba47x1xba695q8xk0ky2vw5s8cg0bv"; buildDepends = [ conduit transformers void zlibBindings ]; meta = { homepage = "http://github.com/snoyberg/conduit"; From 224a5ea9da36cbdc0b76d0959ca71781e0163b90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Wed, 20 Feb 2013 21:00:48 +0100 Subject: [PATCH 051/572] Add evtest, a simple tool for input event debugging --- pkgs/applications/misc/evtest/default.nix | 19 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 pkgs/applications/misc/evtest/default.nix diff --git a/pkgs/applications/misc/evtest/default.nix b/pkgs/applications/misc/evtest/default.nix new file mode 100644 index 00000000000..9d7b6fa7a28 --- /dev/null +++ b/pkgs/applications/misc/evtest/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchgit, autoconf, automake, pkgconfig, libxml2 }: + +stdenv.mkDerivation rec { + name = "evtest-1.30"; + + preConfigure = "autoreconf -iv"; + + buildInputs = [ autoconf automake pkgconfig libxml2 ]; + + src = fetchgit { + url = "git://anongit.freedesktop.org/evtest"; + rev = "1a50f2479c4775e047f234a24d95dda82441bfbd"; + }; + + meta = { + description = "Simple tool for input event debugging"; + license = "GPLv2"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f6e6164aa99..2955262a0c6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -718,6 +718,8 @@ let euca2ools = callPackage ../tools/virtualization/euca2ools { pythonPackages = python26Packages; }; + evtest = callPackage ../applications/misc/evtest { }; + exif = callPackage ../tools/graphics/exif { }; exiftags = callPackage ../tools/graphics/exiftags { }; From 23bff22fc1c0e350d7cdbb8790eaa41a273c31fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Wed, 20 Feb 2013 22:34:55 +0100 Subject: [PATCH 052/572] Add yaws, an Erlang HTTP server --- pkgs/servers/http/yaws/default.nix | 35 ++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 37 insertions(+) create mode 100644 pkgs/servers/http/yaws/default.nix diff --git a/pkgs/servers/http/yaws/default.nix b/pkgs/servers/http/yaws/default.nix new file mode 100644 index 00000000000..7828cf84398 --- /dev/null +++ b/pkgs/servers/http/yaws/default.nix @@ -0,0 +1,35 @@ +{stdenv, fetchurl, erlang, pam, perl }: + +stdenv.mkDerivation rec { + name = "yaws-${version}"; + version = "1.95"; + + src = fetchurl { + url = "http://yaws.hyber.org/download/${name}.tar.gz"; + sha256 = "01jlp6v8l95n9k5rbp4kvklnh95q7yv9lp2a6ahyixb1cn1sxvz4"; + }; + + # The tarball includes a symlink yaws -> yaws-1.95, which seems to be + # necessary for importing erlang files + unpackPhase = '' + tar xzf $src + cd $name + ''; + + configureFlags = "--with-extrainclude=${pam}/include/security"; + + buildInputs = [ erlang pam perl ]; + + postInstall = '' + sed -i "s#which #type -P #" $out/bin/yaws + ''; + + meta = with stdenv.lib; { + description = "A high performance HTTP 1.1 server in Erlang"; + homepage = http://http://yaws.hyber.org; + license = licenses.bsd2; + platforms = platforms.linux; + maintainers = [ maintainers.goibhniu ]; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f6e6164aa99..efdb5887251 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5671,6 +5671,8 @@ let xorgVideoUnichrome = callPackage ../servers/x11/xorg/unichrome/default.nix { }; + yaws = callPackage ../servers/http/yaws { }; + zabbix = recurseIntoAttrs (import ../servers/monitoring/zabbix { inherit fetchurl stdenv pkgconfig postgresql curl openssl zlib; }); From 073c797444824ce42d610eea01fc40e3987a3aeb Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 20 Feb 2013 05:48:22 +0100 Subject: [PATCH 053/572] chromium: Update stable and beta channels. stable: 24.0.1312.69 -> 24.0.1312.70 (builds fine, tested) beta: 25.0.1364.68 -> 25.0.1364.84 (builds fine, tested) 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 700aa9a4e00..416e08c0c97 100644 --- a/pkgs/applications/networking/browsers/chromium/sources.nix +++ b/pkgs/applications/networking/browsers/chromium/sources.nix @@ -6,13 +6,13 @@ sha256 = "1pn7qv1s6lcx8k26h89x9zdy43rzdq12f92s2l6cfdhr9ls9wv0s"; }; beta = { - version = "25.0.1364.68"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-25.0.1364.68.tar.bz2"; - sha256 = "0ps3dnpih2nxb0zkw251cfrls126ysnp818bjzcbl325cbypcgc9"; + version = "25.0.1364.84"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-25.0.1364.84.tar.bz2"; + sha256 = "1p5k7vpk4v2m5yhhdkplq4iq4mm1vv297m9sp7max1sjbngwq6m5"; }; stable = { - version = "24.0.1312.69"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-24.0.1312.69.tar.bz2"; - sha256 = "1nvnhkky72nywk601vx5bbjp1m2f5dygza9h34y20inz3jgg8nbr"; + version = "24.0.1312.70"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-24.0.1312.70.tar.bz2"; + sha256 = "01z2xdfrlw2iynh9ink3d7hddldh2krgx3w9qnq9nq9z54vwwzfq"; }; } From 96d298e7c424a07022c728ec14b7f3fd30ed8b4e Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 20 Feb 2013 06:11:40 +0100 Subject: [PATCH 054/572] python-pyserial: Add new package with version 2.6. Signed-off-by: aszlig --- pkgs/top-level/python-packages.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 756509a4b95..2364c1f2827 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2768,6 +2768,24 @@ pythonPackages = python.modules // rec { }); + pyserial = buildPythonPackage rec { + name = "pyserial-2.6"; + + src = fetchurl { + url = "http://pypi.python.org/packages/source/p/pyserial/${name}.tar.gz"; + md5 = "cde799970b7c1ce1f7d6e9ceebe64c98"; + }; + + doCheck = false; + + meta = { + homepage = "http://pyserial.sourceforge.net/"; + license = stdenv.lib.licenses.psfl; + description = "Python serial port extension"; + }; + }; + + pysqlite = buildPythonPackage (rec { name = "pysqlite-2.5.5"; From 75c3ab1f554ce0be0f7057e6a51d61b1891b4d5a Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 20 Feb 2013 06:12:52 +0100 Subject: [PATCH 055/572] python-pyglet: Add new package with version 1.1.4. This involved a bit of patching, because pyglet is searching libraries at runtime, so we hardcode the library paths into pyglet/lib.py. Signed-off-by: aszlig --- 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 2364c1f2827..43c2aa4dba5 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2502,6 +2502,28 @@ pythonPackages = python.modules // rec { }; }; + pyglet = buildPythonPackage rec { + name = "pyglet-1.1.4"; + + src = fetchurl { + url = "http://pyglet.googlecode.com/files/${name}.tar.gz"; + sha256 = "048n20d606i3njnzhajadnznnfm8pwchs43hxs50da9p79g2m6qx"; + }; + + patchPhase = let + libs = [ pkgs.mesa pkgs.xlibs.libX11 pkgs.freetype pkgs.fontconfig ]; + paths = pkgs.lib.concatStringsSep "," (map (l: "\"${l}/lib\"") libs); + in "sed -i -e 's|directories\.extend.*lib[^]]*|&,${paths}|' pyglet/lib.py"; + + doCheck = false; + + meta = { + homepage = "http://www.pyglet.org/"; + description = "A cross-platform windowing and multimedia library"; + license = stdenv.lib.licenses.bsd3; + }; + }; + pygments = buildPythonPackage rec { name = "Pygments-1.5"; From 7e5109a54188bf84fcd57f2f71b385e5a391c142 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 20 Feb 2013 06:39:52 +0100 Subject: [PATCH 056/572] chromium: Update dev channel to v26.0.1410.5. The upgrade currently doesn't involve the -lite package, as we need to use a few more dependencies from nixpkgs first before we can finally fully switch over to the lite package, even though the update script will try to fetch it anyway. In this update, one particular problem that arises in conjuction with the seccomp BPF sandbox is caused by this commit: https://chromiumcodereview.appspot.com/12209029 Which particularily filters flags to the clone() syscall. I've spent (wasted?) a few hours figuring out the troublesome flag, eventually figuring it out and - just by curiousity ("Do other distributions have the same problem?") - searched the web for "chromium CLONE_DETACHED" and BEHOLD... A post from our OWN mailinglist pops up with the same patch I intended to do: http://article.gmane.org/gmane.linux.distributions.nixos/10356 So shame on me for not being subscribed to the mailing list, and big thanks to Ian Farmer for the patch. As a consequence I'm now subscribed. So, back to chromium itself, version 26 builds fine and works so far without much (more to come in later commits) trouble. We also had to introduce three more dependencies: * protobuf: This one is because we don't need to use the bundled one anymore, so we can use the version in nixpkgs. * speechd: Not sure whether this was bundled or not, but let's use nixpkgs version as well to keep down build time. * libXdamage: Needed for screen capturing support. Signed-off-by: aszlig --- .../browsers/chromium/clone_detached.patch | 19 +++++++++++++++++++ .../networking/browsers/chromium/default.nix | 14 ++++++++++++-- .../networking/browsers/chromium/sources.nix | 6 +++--- 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 pkgs/applications/networking/browsers/chromium/clone_detached.patch diff --git a/pkgs/applications/networking/browsers/chromium/clone_detached.patch b/pkgs/applications/networking/browsers/chromium/clone_detached.patch new file mode 100644 index 00000000000..682de656459 --- /dev/null +++ b/pkgs/applications/networking/browsers/chromium/clone_detached.patch @@ -0,0 +1,19 @@ +From 222f1e980ab84ffd3a21001feaf06dd537570a1a Mon Sep 17 00:00:00 2001 +From: Ian Farmer +Date: Sat, 16 Feb 2013 09:38:10 -0800 +Subject: [PATCH] Update Chromium dev channel version to 26.0.1410.5. + +This version requires a patch for compatibility with versions +of glibc that support older kernel versions. + +--- a/content/common/sandbox_seccomp_bpf_linux.cc 2013-02-15 23:26:06.000000000 -0800 ++++ b/content/common/sandbox_seccomp_bpf_linux.cc 2013-02-15 23:26:24.000000000 -0800 +@@ -1313,7 +1313,7 @@ + return Sandbox::Cond(0, ErrorCode::TP_32BIT, ErrorCode::OP_EQUAL, + CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | + CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS | +- CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID, ++ CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_DETACHED, + ErrorCode(ErrorCode::ERR_ALLOWED), + Sandbox::Trap(ReportCloneFailure, NULL)); + } else { diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 3aeaf41ad57..d2fef932a78 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -14,6 +14,9 @@ , glib, gtk, dbus_glib , libXScrnSaver, libXcursor, mesa +# dependencies for >= v26 +, protobuf, speechd, libXdamage + # optional dependencies , libgcrypt ? null # gnomeSupport || cupsSupport @@ -59,6 +62,7 @@ let use_system_xdg_utils = true; use_system_yasm = true; use_system_zlib = false; # http://crbug.com/143623 + use_system_protobuf = post25; use_system_harfbuzz = false; use_system_icu = false; @@ -78,6 +82,7 @@ let 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; maybeFixPulseAudioBuild = optional (only24 && pulseSupport) @@ -109,7 +114,8 @@ in stdenv.mkDerivation rec { ++ optional enableSELinux libselinux ++ optional cupsSupport libgcrypt ++ optional pulseSupport pulseaudio - ++ optional post24 pciutils; + ++ optional post24 pciutils + ++ optionals post25 [ protobuf speechd libXdamage ]; opensslPatches = optional useOpenSSL openssl.patches; @@ -117,12 +123,16 @@ in stdenv.mkDerivation rec { patches = optional cupsSupport ./cups_allow_deprecated.patch ++ optional pulseSupport ./pulseaudio_array_bounds.patch - ++ maybeFixPulseAudioBuild; + ++ maybeFixPulseAudioBuild + ++ optional post25 ./clone_detached.patch; postPatch = 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 ''; gypFlags = mkGypFlags (gypFlagsUseSystemLibs // { diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix index 416e08c0c97..da3de4c968d 100644 --- a/pkgs/applications/networking/browsers/chromium/sources.nix +++ b/pkgs/applications/networking/browsers/chromium/sources.nix @@ -1,9 +1,9 @@ # This file is autogenerated from update.sh in the same directory. { dev = { - version = "25.0.1364.36"; - url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-25.0.1364.36.tar.bz2"; - sha256 = "1pn7qv1s6lcx8k26h89x9zdy43rzdq12f92s2l6cfdhr9ls9wv0s"; + version = "26.0.1410.10"; + url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-26.0.1410.10.tar.xz"; + sha256 = "1s5c69j0g2nanapvq3fmkc5iv7s53x2q5d8fxgdzd7c5c8pzlbby"; }; beta = { version = "25.0.1364.84"; From 3a23e63dbfe0a3731e52da55003c566db3ba7bb4 Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 21 Feb 2013 06:23:50 +0100 Subject: [PATCH 057/572] chromium: Use system libvpx for version 25. Unfortunately, we have build errors for version 25 in the bundled libvpx: http://hydra.nixos.org/build/4173075 http://hydra.nixos.org/build/4173066 As I can't reproduce this on my local system (I've disabled the option CONFIG_CC_STACKPROTECTOR here), let's just hope that libvpx is the only part that fails during build because of this. Signed-off-by: aszlig --- pkgs/applications/networking/browsers/chromium/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index d2fef932a78..f6832b2fd3b 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -14,6 +14,9 @@ , glib, gtk, dbus_glib , libXScrnSaver, libXcursor, mesa +# dependencies for v25 +, libvpx + # dependencies for >= v26 , protobuf, speechd, libXdamage @@ -70,6 +73,8 @@ let use_system_skia = false; use_system_sqlite = false; # http://crbug.com/22208 use_system_v8 = false; + } // optionalAttrs (post24 && !post25) { + use_system_libvpx = true; }; defaultDependencies = [ @@ -115,6 +120,7 @@ in stdenv.mkDerivation rec { ++ optional cupsSupport libgcrypt ++ optional pulseSupport pulseaudio ++ optional post24 pciutils + ++ optional (post24 && !post25) libvpx ++ optionals post25 [ protobuf speechd libXdamage ]; opensslPatches = optional useOpenSSL openssl.patches; From 059c30bf9d4845be09c88862d167e128e6cec9ef Mon Sep 17 00:00:00 2001 From: David Guibert Date: Thu, 21 Feb 2013 08:53:16 +0100 Subject: [PATCH 058/572] add kernel 3.8 --- pkgs/os-specific/linux/kernel/linux-3.8.nix | 277 ++++++++++++++++++++ pkgs/os-specific/linux/spl/default.nix | 4 +- pkgs/os-specific/linux/zfs/default.nix | 6 +- pkgs/top-level/all-packages.nix | 13 + 4 files changed, 295 insertions(+), 5 deletions(-) create mode 100644 pkgs/os-specific/linux/kernel/linux-3.8.nix diff --git a/pkgs/os-specific/linux/kernel/linux-3.8.nix b/pkgs/os-specific/linux/kernel/linux-3.8.nix new file mode 100644 index 00000000000..58e6f28453a --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-3.8.nix @@ -0,0 +1,277 @@ +args @ { stdenv, fetchurl, extraConfig ? "" +, perl, mktemp, module_init_tools +, ... }: + +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 + + # 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.8"; + modDirVersion = "3.8.0"; + testing = false; + + 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 = "0jqqhfskd88480hkwnkc8rlwkwb56p322irp9xm6gmfyzfyx2w70"; + }; + + config = configWithPlatform stdenv.platform; + configCross = configWithPlatform stdenv.cross.platform; + + features.iwlwifi = true; + features.efiBootStub = true; + features.needsCifsUtils = true; + features.canDisableNetfilterConntrackHelpers = true; + features.netfilterRPFilter = true; + } + + // removeAttrs args ["extraConfig"] +) diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix index c95060a5ffb..b07a51c1ace 100644 --- a/pkgs/os-specific/linux/spl/default.nix +++ b/pkgs/os-specific/linux/spl/default.nix @@ -25,8 +25,8 @@ stdenv.mkDerivation { ''; configureFlags = '' - --with-linux=${kernel}/lib/modules/${kernel.version}/build - --with-linux-obj=${kernel}/lib/modules/${kernel.version}/build + --with-linux=${kernel}/lib/modules/${kernel.modDirVersion}/build + --with-linux-obj=${kernel}/lib/modules/${kernel.modDirVersion}/build ''; meta = { diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix index 4769d78a2fd..33a5dbc0735 100644 --- a/pkgs/os-specific/linux/zfs/default.nix +++ b/pkgs/os-specific/linux/zfs/default.nix @@ -29,9 +29,9 @@ stdenv.mkDerivation { ''; configureFlags = '' - --with-linux=${kernel}/lib/modules/${kernel.version}/build - --with-linux-obj=${kernel}/lib/modules/${kernel.version}/build - --with-spl=${spl}/libexec/spl/${kernel.version} + --with-linux=${kernel}/lib/modules/${kernel.modDirVersion}/build + --with-linux-obj=${kernel}/lib/modules/${kernel.modDirVersion}/build + --with-spl=${spl}/libexec/spl/${kernel.modDirVersion} ${if stdenv.system == "i686-linux" then "--enable-atomic-spinlocks" else ""} ''; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index efdb5887251..fcd4a4af6ae 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5992,6 +5992,18 @@ let ]; }; + linux_3_8 = makeOverridable (import ../os-specific/linux/kernel/linux-3.8.nix) { + inherit fetchurl stdenv perl mktemp 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 @@ -6111,6 +6123,7 @@ let 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); # The current default kernel / kernel modules. linux = linuxPackages.kernel; From 0d7f427620a1338570fff0c90eb660abff41b602 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 12:00:11 +0100 Subject: [PATCH 059/572] davfs2: read config files from /etc/davfs2 instead of ${out}/etc/davfs2 This patch makes the 'noDavsUser' argument to the build expression obsolete. --- pkgs/tools/filesystems/davfs2/default.nix | 27 +++++---- .../filesystems/davfs2/fix-sysconfdir.patch | 60 +++++++++++++++++++ 2 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 pkgs/tools/filesystems/davfs2/fix-sysconfdir.patch diff --git a/pkgs/tools/filesystems/davfs2/default.nix b/pkgs/tools/filesystems/davfs2/default.nix index ce4421f9ca7..d16af28010c 100644 --- a/pkgs/tools/filesystems/davfs2/default.nix +++ b/pkgs/tools/filesystems/davfs2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, neon, zlib, noDavsUser ? false}: +{ stdenv, fetchurl, neon, zlib }: stdenv.mkDerivation rec { name = "davfs2-1.4.7"; @@ -8,19 +8,26 @@ stdenv.mkDerivation rec { sha256 = "0i7hrwlfzisb4l2mza1kjj9q9xxixggjplsjm339zl7828mfxh2h"; }; - prePatch = stdenv.lib.optional noDavsUser '' - echo "dav_user root" >> etc/davfs2.conf - echo "dav_group root" >> etc/davfs2.conf - ''; - buildInputs = [ neon zlib ]; - patches = [ ./davfs2-install.patch ./isdir.patch ]; + patches = [ ./davfs2-install.patch ./isdir.patch ./fix-sysconfdir.patch ]; + + configureFlags = "--sysconfdir=/etc"; meta = { - longDescription = "Web Distributed Authoring and Versioning (WebDAV), an extension to the HTTP-protocol, allows authoring of resources on a remote web server. davfs2 provides the ability to access such resources like a typical filesystem, allowing for use by standard applications with no built-in support for WebDAV."; + homepage = "http://savannah.nongnu.org/projects/davfs2"; + description = "mount WebDAV shares like a typical filesystem"; + license = stdenv.lib.licenses.gpl3Plus; - license = "GPLv3+"; - homepage = http://savannah.nongnu.org/projects/davfs2; + longDescription = '' + Web Distributed Authoring and Versioning (WebDAV), an extension to + the HTTP-protocol, allows authoring of resources on a remote web + server. davfs2 provides the ability to access such resources like + a typical filesystem, allowing for use by standard applications + with no built-in support for WebDAV. + ''; + + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.simons ]; }; } diff --git a/pkgs/tools/filesystems/davfs2/fix-sysconfdir.patch b/pkgs/tools/filesystems/davfs2/fix-sysconfdir.patch new file mode 100644 index 00000000000..f71248a28f4 --- /dev/null +++ b/pkgs/tools/filesystems/davfs2/fix-sysconfdir.patch @@ -0,0 +1,60 @@ +diff -ubr davfs2-1.4.7-orig/etc/Makefile.am davfs2-1.4.7/etc/Makefile.am +--- davfs2-1.4.7-orig/etc/Makefile.am 2013-02-21 11:45:00.185763558 +0100 ++++ davfs2-1.4.7/etc/Makefile.am 2013-02-21 11:53:05.423197775 +0100 +@@ -24,17 +24,17 @@ + + install-data-local: $(dist_pkgdata_DATA) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(pkgsysconfdir) +- $(INSTALL_DATA) -b davfs2.conf $(DESTDIR)$(pkgsysconfdir)/davfs2.conf +- $(INSTALL_DATA) -b -m 600 secrets $(DESTDIR)$(pkgsysconfdir)/secrets +- $(mkinstalldirs) $(DESTDIR)$(pkgsysconfdir)/certs +- $(mkinstalldirs) $(DESTDIR)$(pkgsysconfdir)/certs/private +- chmod 700 $(DESTDIR)$(pkgsysconfdir)/certs/private ++ $(mkinstalldirs) $(out)$(pkgsysconfdir) ++ $(INSTALL_DATA) -b davfs2.conf $(out)$(pkgsysconfdir)/davfs2.conf ++ $(INSTALL_DATA) -b -m 600 secrets $(out)$(pkgsysconfdir)/secrets ++ $(mkinstalldirs) $(out)$(pkgsysconfdir)/certs ++ $(mkinstalldirs) $(out)$(pkgsysconfdir)/certs/private ++ chmod 700 $(out)$(pkgsysconfdir)/certs/private + + uninstall-local: + @$(NORMAL_UNINSTALL) + @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " rm -f $(DESTDIR)$(pkgsysconfdir)/$$f"; \ +- rm -f $(DESTDIR)$(pkgsysconfdir)/$$f; \ ++ echo " rm -f $(out)$(pkgsysconfdir)/$$f"; \ ++ rm -f $(out)$(pkgsysconfdir)/$$f; \ + done +diff -ubr davfs2-1.4.7-orig/etc/Makefile.in davfs2-1.4.7/etc/Makefile.in +--- davfs2-1.4.7-orig/etc/Makefile.in 2013-02-21 11:45:00.185763558 +0100 ++++ davfs2-1.4.7/etc/Makefile.in 2013-02-21 11:53:27.241207128 +0100 +@@ -408,19 +408,19 @@ + + install-data-local: $(dist_pkgdata_DATA) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(pkgsysconfdir) +- $(INSTALL_DATA) -b davfs2.conf $(DESTDIR)$(pkgsysconfdir)/davfs2.conf +- $(INSTALL_DATA) -b -m 600 secrets $(DESTDIR)$(pkgsysconfdir)/secrets +- $(mkinstalldirs) $(DESTDIR)$(pkgsysconfdir)/certs +- $(mkinstalldirs) $(DESTDIR)$(pkgsysconfdir)/certs/private +- chmod 700 $(DESTDIR)$(pkgsysconfdir)/certs/private ++ $(mkinstalldirs) $(out)$(pkgsysconfdir) ++ $(INSTALL_DATA) -b davfs2.conf $(out)$(pkgsysconfdir)/davfs2.conf ++ $(INSTALL_DATA) -b -m 600 secrets $(out)$(pkgsysconfdir)/secrets ++ $(mkinstalldirs) $(out)$(pkgsysconfdir)/certs ++ $(mkinstalldirs) $(out)$(pkgsysconfdir)/certs/private ++ chmod 700 $(out)$(pkgsysconfdir)/certs/private + + uninstall-local: + @$(NORMAL_UNINSTALL) + @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " rm -f $(DESTDIR)$(pkgsysconfdir)/$$f"; \ +- rm -f $(DESTDIR)$(pkgsysconfdir)/$$f; \ ++ echo " rm -f $(out)$(pkgsysconfdir)/$$f"; \ ++ rm -f $(out)$(pkgsysconfdir)/$$f; \ + done + + # Tell versions [3.59,3.63) of GNU make to not export all variables. From 4b41e4b61f05f96a49bed75399de1d558dedb6bd Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 12:02:15 +0100 Subject: [PATCH 060/572] all-packages.nix: remove redundant 'neon = neon029' overrides --- pkgs/top-level/all-packages.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 47dd4766429..f13221d4afe 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -616,9 +616,7 @@ let dar = callPackage ../tools/archivers/dar { }; - davfs2 = callPackage ../tools/filesystems/davfs2 { - neon = neon029; - }; + davfs2 = callPackage ../tools/filesystems/davfs2 { }; dbench = callPackage ../development/tools/misc/dbench { }; @@ -7830,7 +7828,6 @@ let sublime = callPackage ../applications/editors/sublime { }; subversion = callPackage ../applications/version-management/subversion/default.nix { - neon = pkgs.neon029; bdbSupport = true; httpServer = false; httpSupport = true; From 95935e65c1441676ee59ba8d9ed3bde9bc2f48fa Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 12:03:18 +0100 Subject: [PATCH 061/572] neon: remove obsolete versions 0.26 and 0.28 --- pkgs/development/libraries/neon/0.26.nix | 33 ----------------- pkgs/development/libraries/neon/0.28.nix | 37 ------------------- .../libraries/neon/{0.29.nix => default.nix} | 0 pkgs/top-level/all-packages.nix | 14 +------ 4 files changed, 1 insertion(+), 83 deletions(-) delete mode 100644 pkgs/development/libraries/neon/0.26.nix delete mode 100644 pkgs/development/libraries/neon/0.28.nix rename pkgs/development/libraries/neon/{0.29.nix => default.nix} (100%) diff --git a/pkgs/development/libraries/neon/0.26.nix b/pkgs/development/libraries/neon/0.26.nix deleted file mode 100644 index 6b06e54e73d..00000000000 --- a/pkgs/development/libraries/neon/0.26.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ stdenv, fetchurl, libxml2, pkgconfig -, compressionSupport ? true, zlib ? null -, sslSupport ? true, openssl ? null -}: - -assert compressionSupport -> zlib != null; -assert sslSupport -> openssl != null; - -stdenv.mkDerivation { - name = "neon-0.26.4"; - - src = fetchurl { - url = http://www.webdav.org/neon/neon-0.26.4.tar.gz; - sha256 = "1pjrn5wb18gy419293hmwd02blmh36aaxsrgajm9nkkkjzqakncj"; - }; - - buildInputs = [libxml2] - ++ stdenv.lib.optional compressionSupport zlib - ++ (if sslSupport then [ openssl pkgconfig ] else []); - - configureFlags = '' - ${if compressionSupport then "--with-zlib" else "--without-zlib"} - ${if sslSupport then "--with-ssl" else "--without-ssl"} - --enable-shared - ''; - - passthru = {inherit compressionSupport sslSupport;}; - - meta = { - description = "An HTTP and WebDAV client library"; - homepage = http://www.webdav.org/neon/; - }; -} diff --git a/pkgs/development/libraries/neon/0.28.nix b/pkgs/development/libraries/neon/0.28.nix deleted file mode 100644 index 8e717ff52d8..00000000000 --- a/pkgs/development/libraries/neon/0.28.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ stdenv, fetchurl, libxml2, pkgconfig -, compressionSupport ? true, zlib ? null -, sslSupport ? true, openssl ? null -, static ? false -, shared ? true -}: - -assert compressionSupport -> zlib != null; -assert sslSupport -> openssl != null; -assert static || shared; - -stdenv.mkDerivation rec { - name = "neon-0.28.6"; - - src = fetchurl { - url = "http://www.webdav.org/neon/${name}.tar.gz"; - sha256 = "03ncisn1iziz79vw678wsrv8jf63m2szd2qml5baj53slcd8pvh6"; - }; - - buildInputs = [libxml2 pkgconfig openssl] - ++ stdenv.lib.optional compressionSupport zlib; - - configureFlags = '' - ${if shared then "--enable-shared" else "--disable-shared"} - ${if static then "--enable-static" else "--disable-static"} - ${if compressionSupport then "--with-zlib" else "--without-zlib"} - ${if sslSupport then "--with-ssl" else "--without-ssl"} - --enable-shared - ''; - - passthru = {inherit compressionSupport sslSupport;}; - - meta = { - description = "An HTTP and WebDAV client library"; - homepage = http://www.webdav.org/neon/; - }; -} diff --git a/pkgs/development/libraries/neon/0.29.nix b/pkgs/development/libraries/neon/default.nix similarity index 100% rename from pkgs/development/libraries/neon/0.29.nix rename to pkgs/development/libraries/neon/default.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f13221d4afe..4786e4e1345 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4678,19 +4678,7 @@ let else stdenv; }; - neon = neon029; - - neon026 = callPackage ../development/libraries/neon/0.26.nix { - compressionSupport = true; - sslSupport = true; - }; - - neon028 = callPackage ../development/libraries/neon/0.28.nix { - compressionSupport = true; - sslSupport = true; - }; - - neon029 = callPackage ../development/libraries/neon/0.29.nix { + neon = callPackage ../development/libraries/neon { compressionSupport = true; sslSupport = true; }; 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 062/572] 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 e270a609eb7fb4ad1c637d8e432ac0e7969309cc Mon Sep 17 00:00:00 2001 From: Song Wenwu Date: Thu, 21 Feb 2013 09:44:41 +0800 Subject: [PATCH 063/572] love: update to 0.8.0 --- .../development/interpreters/love/default.nix | 73 ++++++------------- 1 file changed, 24 insertions(+), 49 deletions(-) diff --git a/pkgs/development/interpreters/love/default.nix b/pkgs/development/interpreters/love/default.nix index ee68f85725a..287f9f7fb12 100644 --- a/pkgs/development/interpreters/love/default.nix +++ b/pkgs/development/interpreters/love/default.nix @@ -1,58 +1,33 @@ -x@{builderDefsPackage - , lua5, mpg123, physfs, freetype, libdevil, openal, SDL, libvorbis - , libogg, flac, mesa, libtiff, libpng, libjpeg, libmodplug - , ...}: -builderDefsPackage -(a : -let - helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ - []; +{ stdenv, fetchurl, pkgconfig +, SDL, mesa, openal, lua5 +, libdevil, freetype, physfs +, libmodplug, mpg123, libvorbis, libogg +}: - buildInputs = map (n: builtins.getAttr n x) - (builtins.attrNames (builtins.removeAttrs x helperArgNames)); - sourceInfo = rec { - baseName="love"; - version="0.7.2"; - name="${baseName}-${version}"; - url="https://bitbucket.org/rude/love/downloads/${name}-linux-src.tar.gz"; - hash="0s7jywkvydlshlgy11ilzngrnybmq5xlgzp2v2dhlffwrfqdqym5"; - }; -in -rec { - src = a.fetchurl { - url = sourceInfo.url; - sha256 = sourceInfo.hash; +stdenv.mkDerivation rec { + name = "love-0.8.0"; + src = fetchurl { + url = "https://bitbucket.org/rude/love/downloads/${name}-linux-src.tar.gz"; + sha256 = "1k4fcsa8zzi04ja179bmj24hvqcbm3icfvrvrzyz2gw9qwfclrwi"; }; - inherit (sourceInfo) name version; - inherit buildInputs; + buildInputs = [ + pkgconfig SDL mesa openal lua5 + libdevil freetype physfs libmodplug mpg123 libvorbis libogg + ]; - /* doConfigure should be removed if not needed */ - phaseNames = ["setVars" "fixSrc" "doConfigure" "doMakeInstall"]; - - fixSrc =a.fullDepEntry '' - sed -e '/typedef void (\*__GLXextFuncPtr)/d' -i src/modules/graphics/opengl/GLee.h - '' ["minInit" "doUnpack"]; - - setVars = a.noDepEntry '' - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${SDL}/include/SDL" - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${freetype}/include/freetype2" + NIX_CFLAGS_COMPILE = '' + -I${SDL}/include/SDL + -I${freetype}include/freetype2 ''; meta = { + homepage = "http://love2d.org"; description = "A Lua-based 2D game engine/scripting language"; - maintainers = with a.lib.maintainers; - [ - raskin - ]; - platforms = with a.lib.platforms; - linux; - license = a.lib.licenses.zlib; - }; - passthru = { - updateInfo = { - downloadPage = "http://love2d.org/"; - }; - }; -}) x + license = "zlib"; + + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.matainters.raskin ]; + }; +} From afb514734b724ac606c3cb90785b0db0f7221557 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 14:27:02 +0100 Subject: [PATCH 064/572] physfs: update to version 2.0.3 --- pkgs/development/libraries/physfs/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/physfs/default.nix b/pkgs/development/libraries/physfs/default.nix index fef902fec03..b39d8bc4aff 100644 --- a/pkgs/development/libraries/physfs/default.nix +++ b/pkgs/development/libraries/physfs/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, cmake}: stdenv.mkDerivation rec { - name = "physfs-2.0.2"; + name = "physfs-2.0.3"; src = fetchurl { - url = "${meta.homepage}/downloads/${name}.tar.gz"; - sha256 = "02dwy0vsn2dp31f15vxd3yxxr1rgy25ab7ncavyh73i290qnsadf"; + url = "${meta.homepage}/downloads/${name}.tar.bz2"; + sha256 = "0sbbyqzqhyf0g68fcvvv20n3928j0x6ik1njmhn1yigvq2bj11na"; }; buildNativeInputs = [ cmake ]; @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://icculus.org/physfs/; + homepage = "http://icculus.org/physfs/"; description = "Library to provide abstract access to various archives"; license = "free"; }; From 210126bbae8c0688e4b5e55879a0d0c9850c224b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 14:28:58 +0100 Subject: [PATCH 065/572] love: fix typo in meta.maintainer attribute --- pkgs/development/interpreters/love/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/love/default.nix b/pkgs/development/interpreters/love/default.nix index 287f9f7fb12..318a336faa6 100644 --- a/pkgs/development/interpreters/love/default.nix +++ b/pkgs/development/interpreters/love/default.nix @@ -27,7 +27,6 @@ stdenv.mkDerivation rec { license = "zlib"; platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.matainters.raskin ]; + maintainers = [ stdenv.lib.maintainers.raskin ]; }; } - From 857135c59a6101d317227d2112c346b208dc7bba Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 21 Feb 2013 13:57:13 +0100 Subject: [PATCH 066/572] chromium: Use system protobuf for versien 25. This should at least mitigate our build error to only occur in v8 anymore. Unfortunately we can't use v8 from nixpkgs right now, so we're going to put out our sledgehammer in the next commit. Meanwhile, it doesn't hurt to get rid of the bundled protobuf library, so let's do it. Signed-off-by: aszlig --- .../networking/browsers/chromium/default.nix | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index f6832b2fd3b..c7414eec671 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -17,8 +17,11 @@ # dependencies for v25 , libvpx +# dependencies for >= v25 +, protobuf + # dependencies for >= v26 -, protobuf, speechd, libXdamage +, speechd, libXdamage # optional dependencies , libgcrypt ? null # gnomeSupport || cupsSupport @@ -75,6 +78,7 @@ let use_system_v8 = false; } // optionalAttrs (post24 && !post25) { use_system_libvpx = true; + use_system_protobuf = true; }; defaultDependencies = [ @@ -89,6 +93,7 @@ let 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; @@ -119,9 +124,9 @@ in stdenv.mkDerivation rec { ++ optional enableSELinux libselinux ++ optional cupsSupport libgcrypt ++ optional pulseSupport pulseaudio - ++ optional post24 pciutils - ++ optional (post24 && !post25) libvpx - ++ optionals post25 [ protobuf speechd libXdamage ]; + ++ optionals post24 [ pciutils protobuf ] + ++ optional only25 libvpx + ++ optionals post25 [ speechd libXdamage ]; opensslPatches = optional useOpenSSL openssl.patches; From b7cbb4da11fb409d597df473d480c51fa0d11536 Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 21 Feb 2013 13:59:58 +0100 Subject: [PATCH 067/572] chromium: Force -fno-stack-protector for v25. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit So, this is our sledgehammer, forcing -fno-stack-protector for every gcc/g++ in the univ... Chromium build. Of course this is a somewhat nasty fix and there should be a real fix somewhere in Chromium 26. But instead of wandering around and picking cherries, we now go out for the slaughter until someone brings us the damn cherries because we are FUURRRIII... no well... time for sleep :-) May the mighty Hydra be with us! Thanks to our great fellow @cillianderoiste, for joining the battle with his almighty battle axe, crushing and burning some CPUs. Signed-off-by: aszlig Tested-by: Cillian de Róiste --- pkgs/applications/networking/browsers/chromium/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index c7414eec671..8578514f968 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -223,4 +223,6 @@ in stdenv.mkDerivation rec { license = licenses.bsd3; platforms = platforms.linux; }; +} // optionalAttrs only25 { + NIX_CFLAGS_COMPILE = "-fno-stack-protector"; } From 45eb9f558909a1888c69f87df11e0ea8e9e50c72 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 15:56:09 +0100 Subject: [PATCH 068/572] snx: add version 800007027 of the CheckPoint SSL Network Extender --- pkgs/tools/networking/snx/default.nix | 40 +++++++++++++++++++++++ pkgs/tools/networking/snx/snx_install.sh | Bin 0 -> 965717 bytes pkgs/top-level/all-packages.nix | 5 +++ 3 files changed, 45 insertions(+) create mode 100644 pkgs/tools/networking/snx/default.nix create mode 100755 pkgs/tools/networking/snx/snx_install.sh diff --git a/pkgs/tools/networking/snx/default.nix b/pkgs/tools/networking/snx/default.nix new file mode 100644 index 00000000000..7a73314d0e3 --- /dev/null +++ b/pkgs/tools/networking/snx/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, makeWrapper, libX11, pam, gcc33 }: + +let + # The proper value for this offset can be found at the top of the snx_install script. + archiveOffset = "78"; + libraryPath = stdenv.lib.makeSearchPath "lib" [libX11 pam gcc33.gcc]; +in +stdenv.mkDerivation rec { + name = "snx-800007027"; + + src = fetchurl { + url = "https://remote.us.publicisgroupe.net/CSHELL/snx_install.sh"; + sha256 = "1yq0r8gb6jw5pyfrw3wxvplrxxfhbhgm9ph4gyd754fyn52iwgxv"; + }; + + buildInputs = [makeWrapper]; + + unpackPhase = '' + tail -n +${archiveOffset} ${src} | bunzip2 -c - | tar xfvp - + ''; + + buildPhase = '' + patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" snx + ''; + + installPhase = '' + mkdir -p "$out/sbin" "$out/libexec" + mv snx "$out/libexec/" + makeWrapper "$out/libexec/snx" "$out/sbin/snx" --prefix LD_LIBRARY_PATH ":" "${libraryPath}" + ''; + + meta = { + homepage = "https://www.checkpoint.com/"; + description = "Check Point SSL Network Extender"; + license = "unknown"; + + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.simons ]; + }; +} diff --git a/pkgs/tools/networking/snx/snx_install.sh b/pkgs/tools/networking/snx/snx_install.sh new file mode 100755 index 0000000000000000000000000000000000000000..759f870468d7ae3a5686eaee85d6cbdee02010a2 GIT binary patch literal 965717 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

yw{8To~5D7Gf(=L;l1v=Ka1-m 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

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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 literal 0 HcmV?d00001 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4786e4e1345..cafe8075831 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1531,6 +1531,11 @@ let smbnetfs = callPackage ../tools/filesystems/smbnetfs {}; + snx = callPackage_i686 ../tools/networking/snx { + inherit (pkgsi686Linux) pam gcc33; + inherit (pkgsi686Linux.xlibs) libX11; + }; + stardict = callPackage ../applications/misc/stardict/stardict.nix { inherit (gnome) libgnomeui scrollkeeper; }; From f684c61325f9c1b1afbb1d1ca13fe26658765eea Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:04:50 +0100 Subject: [PATCH 069/572] haskell-smallcheck: delete obsolete version 0.6.2 --- .../libraries/haskell/smallcheck/0.6.2.nix | 15 --------------- .../haskell/smallcheck/{1.0.1.nix => default.nix} | 0 pkgs/top-level/haskell-packages.nix | 4 +--- 3 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 pkgs/development/libraries/haskell/smallcheck/0.6.2.nix rename pkgs/development/libraries/haskell/smallcheck/{1.0.1.nix => default.nix} (100%) diff --git a/pkgs/development/libraries/haskell/smallcheck/0.6.2.nix b/pkgs/development/libraries/haskell/smallcheck/0.6.2.nix deleted file mode 100644 index a11eb501a86..00000000000 --- a/pkgs/development/libraries/haskell/smallcheck/0.6.2.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ cabal, dlist }: - -cabal.mkDerivation (self: { - pname = "smallcheck"; - version = "0.6.2"; - sha256 = "0yz7an3k71ia7sgs8xpkh37xz9ipsnbf13680185cij8llq8zbyr"; - buildDepends = [ dlist ]; - meta = { - homepage = "https://github.com/feuerbach/smallcheck"; - description = "A property-based testing library"; - license = self.stdenv.lib.licenses.bsd3; - platforms = self.ghc.meta.platforms; - maintainers = [ self.stdenv.lib.maintainers.andres ]; - }; -}) diff --git a/pkgs/development/libraries/haskell/smallcheck/1.0.1.nix b/pkgs/development/libraries/haskell/smallcheck/default.nix similarity index 100% rename from pkgs/development/libraries/haskell/smallcheck/1.0.1.nix rename to pkgs/development/libraries/haskell/smallcheck/default.nix diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 5b9a793eb8b..27012c9bff8 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1544,9 +1544,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); skein = callPackage ../development/libraries/haskell/skein {}; - smallcheck_0_6_2 = callPackage ../development/libraries/haskell/smallcheck/0.6.2.nix {}; - smallcheck_1_0_1 = callPackage ../development/libraries/haskell/smallcheck/1.0.1.nix {}; - smallcheck = self.smallcheck_1_0_1; + smallcheck = callPackage ../development/libraries/haskell/smallcheck {}; snap = callPackage ../development/libraries/haskell/snap/snap.nix {}; From 7210f218743ab9b152e9c3599e6be8ec4b7adb34 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:04:59 +0100 Subject: [PATCH 070/572] haskell-show: update to version 0.5 --- pkgs/development/libraries/haskell/show/default.nix | 11 ++++------- pkgs/top-level/haskell-packages.nix | 4 +--- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/pkgs/development/libraries/haskell/show/default.nix b/pkgs/development/libraries/haskell/show/default.nix index 70e629e1ebf..411684e4953 100644 --- a/pkgs/development/libraries/haskell/show/default.nix +++ b/pkgs/development/libraries/haskell/show/default.nix @@ -1,13 +1,10 @@ -{ cabal, QuickCheck, random, smallcheck, syb }: +{ cabal, QuickCheck, random, simpleReflect, smallcheck, syb }: cabal.mkDerivation (self: { pname = "show"; - version = "0.4.1.2"; - sha256 = "1qaphxjaxng7d0kcn3vvxbvqljzzs1hvmsrdsm3pbi19qlsavd5w"; - buildDepends = [ QuickCheck random smallcheck syb ]; - patchPhase = '' - sed -i -e 's|smallcheck>=0.4|smallcheck >=0.4 \&\& <= 1|' show.cabal - ''; + version = "0.5"; + sha256 = "1s9nwhbc1935359r76glirg858c1sg8nfvv0bzzrncrgf0gxcl4f"; + buildDepends = [ QuickCheck random simpleReflect smallcheck syb ]; meta = { description = "'Show' instances for Lambdabot"; license = "GPL"; diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 27012c9bff8..91e51b694fb 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1617,9 +1617,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); Shellac = callPackage ../development/libraries/haskell/Shellac/Shellac.nix {}; - show = callPackage ../development/libraries/haskell/show { - smallcheck = self.smallcheck_0_6_2; - }; + show = callPackage ../development/libraries/haskell/show {}; SMTPClient = callPackage ../development/libraries/haskell/SMTPClient {}; From 9e5d5488e0b3ea7b0af8dd884ab2ad5fc6c172b9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:05:24 +0100 Subject: [PATCH 071/572] haskell-simple-reflect: add version 0.3.1 --- .../libraries/haskell/simple-reflect/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/simple-reflect/default.nix diff --git a/pkgs/development/libraries/haskell/simple-reflect/default.nix b/pkgs/development/libraries/haskell/simple-reflect/default.nix new file mode 100644 index 00000000000..7a7f40c6d83 --- /dev/null +++ b/pkgs/development/libraries/haskell/simple-reflect/default.nix @@ -0,0 +1,13 @@ +{ cabal }: + +cabal.mkDerivation (self: { + pname = "simple-reflect"; + version = "0.3.1"; + sha256 = "189pc7fk28bwl0mq6hw502kc048n203rb4vpf2wva490r36xiw6s"; + meta = { + homepage = "http://twan.home.fmf.nl/blog/haskell/simple-reflection-of-expressions.details"; + description = "Simple reflection of expressions containing variables"; + 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 91e51b694fb..5cce38ae624 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1536,6 +1536,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); shelly = callPackage ../development/libraries/haskell/shelly {}; + simpleReflect = callPackage ../development/libraries/haskell/simple-reflect {}; + simpleSendfile = callPackage ../development/libraries/haskell/simple-sendfile {}; silently = callPackage ../development/libraries/haskell/silently {}; From 7785d0598decef6820a6a135faee90897c48c4e9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:05:33 +0100 Subject: [PATCH 072/572] haskell-publicsuffixlist: add version 0.0.3 --- .../libraries/haskell/publicsuffixlist/default.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/haskell/publicsuffixlist/default.nix diff --git a/pkgs/development/libraries/haskell/publicsuffixlist/default.nix b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix new file mode 100644 index 00000000000..53b7062cd0d --- /dev/null +++ b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix @@ -0,0 +1,14 @@ +{ cabal, cereal, dataDefault, text, utf8String }: + +cabal.mkDerivation (self: { + pname = "publicsuffixlist"; + version = "0.0.3"; + sha256 = "1drsm1zp30629rzy0693ggzcx46b7ydzzafmf07mjanmn1kyyqci"; + buildDepends = [ cereal dataDefault text utf8String ]; + meta = { + homepage = "https://github.com/litherum/publicsuffixlist"; + description = "Is a given string a domain suffix?"; + 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 5cce38ae624..36069e8854f 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1427,6 +1427,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); PSQueue = callPackage ../development/libraries/haskell/PSQueue {}; + publicsuffixlist = callPackage ../development/libraries/haskell/publicsuffixlist {}; + pureMD5 = callPackage ../development/libraries/haskell/pureMD5 {}; pwstoreFast = callPackage ../development/libraries/haskell/pwstore-fast {}; From d81088839f366b3191f1ff2f26713980e78c59b7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:05 +0100 Subject: [PATCH 073/572] haskell-authenticate: update to version 1.3.2.6 --- .../libraries/haskell/authenticate/default.nix | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pkgs/development/libraries/haskell/authenticate/default.nix b/pkgs/development/libraries/haskell/authenticate/default.nix index c6624208048..f0a1969ffba 100644 --- a/pkgs/development/libraries/haskell/authenticate/default.nix +++ b/pkgs/development/libraries/haskell/authenticate/default.nix @@ -1,17 +1,16 @@ -{ cabal, aeson, attoparsec, blazeBuilder, blazeBuilderConduit -, caseInsensitive, conduit, httpConduit, httpTypes, monadControl -, network, resourcet, tagsoup, text, transformers +{ cabal, aeson, attoparsec, blazeBuilder, caseInsensitive, conduit +, httpConduit, httpTypes, network, tagsoup, text, transformers , unorderedContainers, xmlConduit }: cabal.mkDerivation (self: { pname = "authenticate"; - version = "1.3.2.4"; - sha256 = "1xakp54g5dyppzpm1q3bbx6g4pvs7p2903pyq6bya1n82zsk7yg7"; + version = "1.3.2.6"; + sha256 = "12sgi6q6kajjhh8mns9nklxj0kwn32xs5kzi7wmw50shx0smnjrz"; buildDepends = [ - aeson attoparsec blazeBuilder blazeBuilderConduit caseInsensitive - conduit httpConduit httpTypes monadControl network resourcet - tagsoup text transformers unorderedContainers xmlConduit + aeson attoparsec blazeBuilder caseInsensitive conduit httpConduit + httpTypes network tagsoup text transformers unorderedContainers + xmlConduit ]; meta = { homepage = "http://github.com/yesodweb/authenticate"; From ccec03edc445670964a5c5a233b45adeec7e8338 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:05 +0100 Subject: [PATCH 074/572] haskell-highlighting-kate: update to version 0.5.3.7 --- .../libraries/haskell/highlighting-kate/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/highlighting-kate/default.nix b/pkgs/development/libraries/haskell/highlighting-kate/default.nix index 9c3c25eff0a..805519d3d30 100644 --- a/pkgs/development/libraries/haskell/highlighting-kate/default.nix +++ b/pkgs/development/libraries/haskell/highlighting-kate/default.nix @@ -2,12 +2,11 @@ cabal.mkDerivation (self: { pname = "highlighting-kate"; - version = "0.5.3.6"; - sha256 = "0ypgw56gaa2hvh05ks079lfcaaynki3da471g39f23m3scgkawlr"; + version = "0.5.3.7"; + sha256 = "04wa1al83v5ak6gvrwqy2b63mda0qfi2ircxfs9ddk1gkdscrlrl"; isLibrary = true; isExecutable = true; buildDepends = [ blazeHtml filepath mtl parsec regexPcre ]; - jailbreak = true; prePatch = "sed -i -e 's|regex-pcre-builtin|regex-pcre|' highlighting-kate.cabal"; meta = { homepage = "http://github.com/jgm/highlighting-kate"; From 954424d2229ade67c20d3b03fa886f33d7c8f617 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:05 +0100 Subject: [PATCH 075/572] haskell-hjsmin: update to version 0.1.4.1 --- pkgs/development/libraries/haskell/hjsmin/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/hjsmin/default.nix b/pkgs/development/libraries/haskell/hjsmin/default.nix index 58720e33f7b..6538e17c41a 100644 --- a/pkgs/development/libraries/haskell/hjsmin/default.nix +++ b/pkgs/development/libraries/haskell/hjsmin/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "hjsmin"; - version = "0.1.4"; - sha256 = "1w4w560p7xy3lci36xy01dpwl0hhf9iv8gy4ldqvh33931pkxhxn"; + version = "0.1.4.1"; + sha256 = "0r73hd6kn37mdbm2i3g6v3qqm696kyflqs6ajq68qr5sr62sjb1a"; buildDepends = [ blazeBuilder languageJavascript text ]; meta = { homepage = "http://github.com/alanz/hjsmin"; From 7923c79891cbfe43ae3ae9fb239c84a7f53ea17d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:05 +0100 Subject: [PATCH 076/572] haskell-http-reverse-proxy: update to version 0.1.1.3 --- .../libraries/haskell/http-reverse-proxy/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix index 05e97291f37..618438e927f 100644 --- a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix +++ b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix @@ -5,8 +5,8 @@ cabal.mkDerivation (self: { pname = "http-reverse-proxy"; - version = "0.1.1.2"; - sha256 = "179j6zfmx3g6gc7mzhzhl7ymxkijg9vahjvwjwm0wm15vna52iqa"; + version = "0.1.1.3"; + sha256 = "0z2h2xbvg034snfh3hzc0v2zp5j57lcak2h4vz10lwaqr3jxqnpn"; buildDepends = [ blazeBuilder caseInsensitive classyPrelude conduit dataDefault httpConduit httpTypes liftedBase monadControl network From fdf04063aaf1641c12b4ea61fd57f989956c72ec Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:05 +0100 Subject: [PATCH 077/572] haskell-persistent-postgresql: update to version 1.1.3.1 --- .../libraries/haskell/persistent-postgresql/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/persistent-postgresql/default.nix b/pkgs/development/libraries/haskell/persistent-postgresql/default.nix index 638f2e2c3bf..52c74af4d4d 100644 --- a/pkgs/development/libraries/haskell/persistent-postgresql/default.nix +++ b/pkgs/development/libraries/haskell/persistent-postgresql/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "persistent-postgresql"; - version = "1.1.3"; - sha256 = "0dxazkdck2l5wxiyd7lcgd4xj95c7ql067s5hi3w1k89jf1wcx12"; + version = "1.1.3.1"; + sha256 = "1lbr4x45hzk73439x6is9zw6y3mqy1ivmblncvg70kzw0kmjhpnk"; buildDepends = [ aeson conduit monadControl persistent postgresqlLibpq postgresqlSimple text time transformers From f391645a7b3c1e7cffc5f50f0f8ce538d13d95c0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:05 +0100 Subject: [PATCH 078/572] haskell-persistent-sqlite: update to version 1.1.4 --- .../libraries/haskell/persistent-sqlite/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix index 46c4a39c196..418c8c4ca74 100644 --- a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix +++ b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix @@ -1,13 +1,13 @@ -{ cabal, aeson, conduit, monadControl, persistent, text -, transformers +{ cabal, aeson, conduit, monadControl, monadLogger, persistent +, text, transformers }: cabal.mkDerivation (self: { pname = "persistent-sqlite"; - version = "1.1.3.1"; - sha256 = "0kbsi6njk4c10khlh81pmqai20jcq5v9cgy1xyskkp26d3y0llya"; + version = "1.1.4"; + sha256 = "1xllj5bq7rw9v32ddm515705nviarw0hp4yxj0z8jf5q5jdz2vz0"; buildDepends = [ - aeson conduit monadControl persistent text transformers + aeson conduit monadControl monadLogger persistent text transformers ]; meta = { homepage = "http://www.yesodweb.com/book/persistent"; From 51a4c6d6018a538e24bfbcd0c8c57162f8ca6d1f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:06 +0100 Subject: [PATCH 079/572] haskell-snap: update to version 0.11.2 --- pkgs/development/libraries/haskell/snap/snap.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/snap/snap.nix b/pkgs/development/libraries/haskell/snap/snap.nix index 7316e519d65..b87cde89447 100644 --- a/pkgs/development/libraries/haskell/snap/snap.nix +++ b/pkgs/development/libraries/haskell/snap/snap.nix @@ -8,8 +8,8 @@ cabal.mkDerivation (self: { pname = "snap"; - version = "0.11.1"; - sha256 = "0dd66496fjfp80i6whl356sqk7n03rx4ycsah7x11fc9rvplmr3q"; + version = "0.11.2"; + sha256 = "1z9n15dhbxg0j17c1ik0vhdhxy2mz70915xd4jffg9jrdvlky51a"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -19,6 +19,7 @@ cabal.mkDerivation (self: { snapCore snapServer stm syb text time transformers unorderedContainers vector vectorAlgorithms xmlhtml ]; + jailbreak = true; meta = { homepage = "http://snapframework.com/"; description = "Top-level package for the Snap Web Framework"; From 9cff61881d7391c92000eb83f94b515f763edbf9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Feb 2013 16:13:06 +0100 Subject: [PATCH 080/572] haskell-yesod-auth: update to version 1.1.5.3 --- pkgs/development/libraries/haskell/yesod-auth/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/yesod-auth/default.nix b/pkgs/development/libraries/haskell/yesod-auth/default.nix index b441dc32458..8456aa39a8e 100644 --- a/pkgs/development/libraries/haskell/yesod-auth/default.nix +++ b/pkgs/development/libraries/haskell/yesod-auth/default.nix @@ -8,8 +8,8 @@ cabal.mkDerivation (self: { pname = "yesod-auth"; - version = "1.1.5.2"; - sha256 = "0gpfbfhqdsyzyxjg5d36fkg6bzspbph5h14kwp264wm166dkcskf"; + version = "1.1.5.3"; + sha256 = "07srz4zpkn8w382xwi8ri6mh9kgplf0m51819zw1hympphmd9z82"; buildDepends = [ aeson authenticate blazeHtml blazeMarkup fileEmbed hamlet httpConduit httpTypes liftedBase mimeMail network persistent From 30e1158101738157168839ae755001c0025f882b Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 21 Feb 2013 11:28:52 -0500 Subject: [PATCH 081/572] kmod: Update to kmod-12 --- pkgs/os-specific/linux/kmod/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/kmod/default.nix b/pkgs/os-specific/linux/kmod/default.nix index afa19491ce5..96d756bc7d2 100644 --- a/pkgs/os-specific/linux/kmod/default.nix +++ b/pkgs/os-specific/linux/kmod/default.nix @@ -1,16 +1,16 @@ -{ stdenv, fetchurl, xz, zlib, pkgconfig }: +{ stdenv, fetchurl, xz, zlib, pkgconfig, libxslt }: stdenv.mkDerivation rec { - name = "kmod-9"; + name = "kmod-12"; src = fetchurl { url = "mirror://kernel/linux/utils/kernel/kmod/${name}.tar.xz"; - sha256 = "1kyfplx0gygzxp5dn81yk3cn8zzraqm497vis04r1g1dnry2c1q6"; + sha256 = "c6189dd8c5a1e8d9224e8506bd188c0cd5dfa119fd6b7e5869b3640cbe8bf92f"; }; # Disable xz/zlib support to prevent needing them in the initrd. - buildInputs = [ pkgconfig /* xz zlib */ ]; + buildInputs = [ pkgconfig libxslt /* xz zlib */ ]; configureFlags = [ "--sysconfdir=/etc" /* "--with-xz" "--with-zlib" */ ]; From 085a51f60a2643782ae29d3c71a280d36f00be39 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 21 Feb 2013 16:47:46 +0100 Subject: [PATCH 082/572] nspr: Update to 4.9.5 --- pkgs/development/libraries/nspr/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/nspr/default.nix b/pkgs/development/libraries/nspr/default.nix index 928e9723e08..42740ea2e1b 100644 --- a/pkgs/development/libraries/nspr/default.nix +++ b/pkgs/development/libraries/nspr/default.nix @@ -1,13 +1,13 @@ { stdenv, fetchurl }: -let version = "4.9.4"; in +let version = "4.9.5"; in stdenv.mkDerivation { name = "nspr-${version}"; src = fetchurl { url = "http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v${version}/src/nspr-${version}.tar.gz"; - sha256 = "196l8123gg5knxp7pgksngfcwm9k7n3qilkl725jyzz1bg3ld43l"; + sha1 = "03885e992607e2be975f6525c6764c2167fe2eff"; }; preConfigure = "cd mozilla/nsprpub"; From 95ca031be961fd4d8489bd6c95ca33f6bb66a6a1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 21 Feb 2013 17:45:20 +0100 Subject: [PATCH 083/572] firefox: Update to 19.0 --- .../browsers/firefox/{18.0.nix => 19.0.nix} | 12 ++++++------ .../mozilla-plugins/flashplayer-11/default.nix | 3 +-- pkgs/top-level/all-packages.nix | 6 +++--- pkgs/top-level/release.nix | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) rename pkgs/applications/networking/browsers/firefox/{18.0.nix => 19.0.nix} (93%) diff --git a/pkgs/applications/networking/browsers/firefox/18.0.nix b/pkgs/applications/networking/browsers/firefox/19.0.nix similarity index 93% rename from pkgs/applications/networking/browsers/firefox/18.0.nix rename to pkgs/applications/networking/browsers/firefox/19.0.nix index f9258792a2e..a46143066c1 100644 --- a/pkgs/applications/networking/browsers/firefox/18.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, nss, libnotify +, freetype, fontconfig, file, alsaLib, nspr, 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 = "18.0.2"; + firefoxVersion = "19.0"; - xulVersion = "18.0.2"; # this attribute is used by other packages + xulVersion = "19.0"; # 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 = "fe5810d61edf6f4dc8bc477a08f9483b955f747b"; + sha1 = "816d64e8c9432349cd208fd181d210c54f985351"; }; commonConfigureFlags = @@ -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 nss libnotify xlibs.pixman yasm mesa + alsaLib nspr 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 nss libnotify + dbus dbus_glib pango freetype fontconfig alsaLib nspr libnotify xlibs.pixman yasm mesa sqlite file unzip pysqlite ]; 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 47f99a1d555..202dfe2b02e 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix @@ -3,7 +3,6 @@ , zlib , alsaLib , curl -, nss , nspr , fontconfig , freetype @@ -77,7 +76,7 @@ stdenv.mkDerivation { }; rpath = stdenv.lib.makeLibraryPath - [ zlib alsaLib curl nss nspr fontconfig freetype expat libX11 + [ zlib alsaLib curl nspr fontconfig freetype expat libX11 libXext libXrender libXcursor libXt gtk glib pango atk cairo gdk_pixbuf libvdpau ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cafe8075831..311b1ccdf7b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7075,7 +7075,7 @@ let firefoxWrapper = wrapFirefox { browser = pkgs.firefox; }; - firefoxPkgs = pkgs.firefox18Pkgs; + firefoxPkgs = pkgs.firefox19Pkgs; firefox36Pkgs = callPackage ../applications/networking/browsers/firefox/3.6.nix { inherit (gnome) libIDL; @@ -7089,12 +7089,12 @@ let firefox13Wrapper = lowPrio (wrapFirefox { browser = firefox13Pkgs.firefox; }); - firefox18Pkgs = callPackage ../applications/networking/browsers/firefox/18.0.nix { + firefox19Pkgs = callPackage ../applications/networking/browsers/firefox/19.0.nix { inherit (gnome) libIDL; inherit (pythonPackages) pysqlite; }; - firefox18Wrapper = lowPrio (wrapFirefox { browser = firefox18Pkgs.firefox; }); + firefox19Wrapper = lowPrio (wrapFirefox { browser = firefox19Pkgs.firefox; }); flac = callPackage ../applications/audio/flac { }; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index b3b58f43e1b..9772c353102 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -349,7 +349,7 @@ with (import ./release-lib.nix); }; firefox36Pkgs.firefox = linux; - firefox18Pkgs.firefox = linux; + firefox19Pkgs.firefox = linux; gnome = { gnome_panel = linux; From f9c4ce79c88af1e9b0a2a50793990e7af192db2c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 21 Feb 2013 17:48:46 +0100 Subject: [PATCH 084/572] Comment out non-existent maintainer attribute http://hydra.nixos.org/build/4191101 --- pkgs/tools/security/aespipe/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/security/aespipe/default.nix b/pkgs/tools/security/aespipe/default.nix index b16adbea868..36b0ccc7e09 100644 --- a/pkgs/tools/security/aespipe/default.nix +++ b/pkgs/tools/security/aespipe/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { description = "AES encrypting or decrypting pipe"; homepage = http://loop-aes.sourceforge.net/aespipe.README; license = "GPL"; - maintainers = stdenv.lib.maintainers.goibniu; + #maintainers = stdenv.lib.maintainers.goibniu; platforms = stdenv.lib.platforms.linux; }; } From 6a1c64a4699caeccad29e155697503f9d2ebc3cb Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 21 Feb 2013 11:30:32 -0500 Subject: [PATCH 085/572] Unmaintain v86d. I don't use it any more, and don't even remember what it was for --- pkgs/os-specific/linux/v86d/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/os-specific/linux/v86d/default.nix b/pkgs/os-specific/linux/v86d/default.nix index f0f7fcbb9ce..220abf88ae7 100644 --- a/pkgs/os-specific/linux/v86d/default.nix +++ b/pkgs/os-specific/linux/v86d/default.nix @@ -26,7 +26,6 @@ stdenv.mkDerivation rec { description = "A userspace helper that runs x86 code in an emulated environment"; homepage = http://dev.gentoo.org/~spock/projects/uvesafb/; license = "BSD"; - maintainers = [ stdenv.lib.maintainers.shlevy ]; platforms = [ "i686-linux" "x86_64-linux" ]; }; } From afe3758b1b12b43ce1f47e3170266d5909d59812 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 21 Feb 2013 11:31:37 -0500 Subject: [PATCH 086/572] Remove myself from kernel maintainers. I use manual config now. --- pkgs/os-specific/linux/kernel/generic.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index a58430401c5..48f050f98cc 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -134,7 +134,6 @@ stdenv.mkDerivation { homepage = http://www.kernel.org/; maintainers = [ lib.maintainers.eelco - lib.maintainers.shlevy lib.maintainers.chaoflow ]; platforms = lib.platforms.linux; From 754f9a44fdde56bcfa76314ba65580d420e82470 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 21 Feb 2013 12:06:03 -0500 Subject: [PATCH 087/572] Gummiboot: Update to 23. Requires a corresponding change in nixos to work there. --- pkgs/tools/misc/gummiboot/default.nix | 14 +++--- pkgs/tools/misc/gummiboot/no-usr.patch | 69 ++++++++++++++++++++++++-- 2 files changed, 70 insertions(+), 13 deletions(-) diff --git a/pkgs/tools/misc/gummiboot/default.nix b/pkgs/tools/misc/gummiboot/default.nix index 341939ea40f..cf2fe713461 100644 --- a/pkgs/tools/misc/gummiboot/default.nix +++ b/pkgs/tools/misc/gummiboot/default.nix @@ -1,21 +1,19 @@ -{ stdenv, fetchurl, gnu_efi, unzip }: +{ stdenv, fetchurl, gnu_efi, unzip, pkgconfig, utillinux, libxslt, docbook_xsl, docbook_xml_dtd_42 }: stdenv.mkDerivation rec { - name = "gummiboot-16"; + name = "gummiboot-23"; - buildInputs = [ unzip ]; + buildInputs = [ unzip pkgconfig utillinux libxslt docbook_xsl docbook_xml_dtd_42 ]; patches = [ ./no-usr.patch ]; - buildFlags = [ - "GNU_EFI=${gnu_efi}" - ] ++ stdenv.lib.optional (stdenv.system == "i686-linux") "ARCH=ia32"; + buildFlags = [ "GNU_EFI=${gnu_efi}" ]; - installPhase = "mkdir -p $out/bin; mv gummiboot.efi $out/bin"; + makeFlags = [ "PREFIX=$(out)" ]; src = fetchurl { url = "http://cgit.freedesktop.org/gummiboot/snapshot/${name}.zip"; - sha256 = "0as5svmvsbz08qgbvns77qfb36xi9lx2138ikiinqv6finzm8fi1"; + sha256 = "1lmfk4k52ha00ppna5g7h51vhd27i9fipf5k7mc2d9jkm2480z4j"; }; meta = { diff --git a/pkgs/tools/misc/gummiboot/no-usr.patch b/pkgs/tools/misc/gummiboot/no-usr.patch index 7f63e20d3e9..db906894740 100644 --- a/pkgs/tools/misc/gummiboot/no-usr.patch +++ b/pkgs/tools/misc/gummiboot/no-usr.patch @@ -1,14 +1,24 @@ -diff -Naur gummiboot-16-orig/Makefile gummiboot-16/Makefile ---- gummiboot-16-orig/Makefile 2013-01-24 04:20:58.000000000 -0500 -+++ gummiboot-16/Makefile 2013-02-01 17:27:42.922371399 -0500 -@@ -1,13 +1,13 @@ - VERSION=16 +diff -Naur gummiboot-23-orig/Makefile gummiboot-23/Makefile +--- gummiboot-23-orig/Makefile 2013-02-20 00:55:44.000000000 -0500 ++++ gummiboot-23/Makefile 2013-02-21 12:00:35.783637645 -0500 +@@ -10,7 +10,8 @@ + export E Q ARCH=$(shell $(CC) -dumpmachine | sed "s/\(-\).*$$//") -LIBDIR=$(shell echo $$(cd /usr/lib/$$(gcc -print-multi-os-directory); pwd)) ++PREFIX=/usr +LIBDIR=$(GNU_EFI)/lib LIBEFIDIR=$(or $(wildcard $(LIBDIR)/gnuefi), $(LIBDIR)) + ifeq ($(ARCH),i686) +@@ -25,13 +26,13 @@ + -mno-red-zone + endif + +-all: gummiboot$(MACHINE_TYPE_NAME).efi gummiboot ++all: gummiboot$(MACHINE_TYPE_NAME).efi gummiboot man + + # ------------------------------------------------------------------------------ CPPFLAGS = \ -I. \ - -I/usr/include/efi \ @@ -18,3 +28,52 @@ diff -Naur gummiboot-16-orig/Makefile gummiboot-16/Makefile CFLAGS = \ -DVERSION=$(VERSION) \ +@@ -82,6 +83,7 @@ + `pkg-config --cflags --libs blkid` \ + src/setup/setup.c \ + src/setup/efivars.c \ ++ -DPREFIX=\"$(PREFIX)\" \ + -o $@ + + # ------------------------------------------------------------------------------ +@@ -101,11 +103,11 @@ + rm -f src/efi/gummiboot.o src/efi/gummiboot.so gummiboot gummiboot$(MACHINE_TYPE_NAME).efi + + install: all +- mkdir -p $(DESTDIR)/usr/bin/ +- cp gummiboot $(DESTDIR)/usr/bin +- mkdir -p $(DESTDIR)/usr/lib/gummiboot/ +- cp gummiboot$(MACHINE_TYPE_NAME).efi $(DESTDIR)/usr/lib/gummiboot/ +- [ -e gummiboot.1 ] && mkdir -p $(DESTDIR)/usr/share/man/man1/ && cp gummiboot.1 $(DESTDIR)/usr/share/man/man1/ || : ++ mkdir -p $(DESTDIR)$(PREFIX)/bin/ ++ cp gummiboot $(DESTDIR)$(PREFIX)/bin ++ mkdir -p $(DESTDIR)$(PREFIX)/lib/gummiboot/ ++ cp gummiboot$(MACHINE_TYPE_NAME).efi $(DESTDIR)$(PREFIX)/lib/gummiboot/ ++ [ -e gummiboot.1 ] && mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1/ && cp gummiboot.1 $(DESTDIR)$(PREFIX)/share/man/man1/ || : + + tar: + git archive --format=tar --prefix=gummiboot-$(VERSION)/ $(VERSION) | xz > gummiboot-$(VERSION).tar.xz +diff -Naur gummiboot-23-orig/src/setup/setup.c gummiboot-23/src/setup/setup.c +--- gummiboot-23-orig/src/setup/setup.c 2013-02-20 00:55:44.000000000 -0500 ++++ gummiboot-23/src/setup/setup.c 2013-02-21 11:57:43.295324700 -0500 +@@ -736,7 +736,7 @@ + char *p = NULL, *q = NULL, *v = NULL; + int r; + +- if (asprintf(&p, "/usr/lib/gummiboot/%s", name) < 0) { ++ if (asprintf(&p, PREFIX "/lib/gummiboot/%s", name) < 0) { + fprintf(stderr, "Out of memory.\n"); + r = -ENOMEM; + goto finish; +@@ -791,9 +791,9 @@ + return r; + } + +- d = opendir("/usr/lib/gummiboot"); ++ d = opendir(PREFIX "/lib/gummiboot"); + if (!d) { +- fprintf(stderr, "Failed to open /usr/lib/gummiboot: %m\n"); ++ fprintf(stderr, "Failed to open " PREFIX "/lib/gummiboot: %m\n"); + return -errno; + } + From d13851c6a00350c83e589c6a11f4d29ee641c495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 21 Feb 2013 19:39:51 +0100 Subject: [PATCH 088/572] webkit: hot-fix the build, use default libpng and perl --- pkgs/development/libraries/webkit/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/pkgs/development/libraries/webkit/default.nix b/pkgs/development/libraries/webkit/default.nix index d229228b94f..1ba90e67d85 100644 --- a/pkgs/development/libraries/webkit/default.nix +++ b/pkgs/development/libraries/webkit/default.nix @@ -9,7 +9,7 @@ rec { sha256 = s.hash; }; - buildInputs = [gtk glib atk cairo curl fontconfig freetype + 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 @@ -91,6 +91,6 @@ rec { 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 271022d8e7f..a5ecbfd6e3a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5015,7 +5015,7 @@ let webkit = builderDefsPackage ../development/libraries/webkit { inherit (gnome) gtkdoc libsoup; - inherit atk pango glib; + 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 @@ -5025,8 +5025,7 @@ let inherit gstreamer gst_plugins_base gst_ffmpeg gst_plugins_good; inherit (xlibs) libXt renderproto libXrender kbproto; - libpng = libpng12; - perl = perl510; + inherit libpng perl; }; webkit_gtk2 = @@ -5041,8 +5040,7 @@ let inherit gstreamer gst_plugins_base gst_ffmpeg gst_plugins_good; inherit (xlibs) libXt renderproto libXrender; - libpng = libpng12; - perl = perl510; + inherit libpng perl; }; webkitSVN = @@ -5057,7 +5055,7 @@ let inherit gstreamer gst_plugins_base gst_ffmpeg gst_plugins_good; inherit (xlibs) libXt renderproto libXrender; - libpng = libpng12; + inherit libpng; }; wvstreams = callPackage ../development/libraries/wvstreams { }; From 207443b1849e7b1ce65059d2fdad81db04cc75d8 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Thu, 21 Feb 2013 21:18:26 +0100 Subject: [PATCH 089/572] upgrade bacula --- pkgs/tools/backup/bacula/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/backup/bacula/default.nix b/pkgs/tools/backup/bacula/default.nix index c6ad0876823..f0a6ade8444 100644 --- a/pkgs/tools/backup/bacula/default.nix +++ b/pkgs/tools/backup/bacula/default.nix @@ -4,8 +4,8 @@ stdenv.mkDerivation { name = "bacula-5.0.3"; src = fetchurl { - url = mirror://sourceforge/bacula/bacula-5.0.3.tar.gz; - sha256 = "1d7x6jw5x9ljbdxvcc8k635lsxcbxw9kzjyxf6l4zsdv3275j1cr"; + url = mirror://sourceforge/bacula/bacula-5.2.13.tar.gz; + sha256 = "1n3sc0kd7r0afpyi708y3md0a24rbldnfcdz0syqj600pxcd9gm4"; }; buildInputs = [ sqlite zlib acl ncurses openssl readline ]; From 787b1500892ae03aecfc1c3a7d1ca7bae33ca9a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 5 Feb 2013 22:41:22 +0100 Subject: [PATCH 090/572] gnome2.libart_lgpl: update --- pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix b/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix index 320372786a5..7b1ccb97dc4 100644 --- a/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix +++ b/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix @@ -1,9 +1,9 @@ {stdenv, fetchurl}: -stdenv.mkDerivation { - name = "libart_lgpl-2.3.20"; +stdenv.mkDerivation rec { + name = "libart_lgpl-2.3.21"; src = fetchurl { - url = mirror://gnome/sources/libart_lgpl/2.3/libart_lgpl-2.3.20.tar.bz2; - sha256 = "0iyqsc517lj8xnidchnk0fxa6aqvss4hv8p9fk6bba86lbiillym"; + url = "mirror://gnome/sources/libart_lgpl/2.3/${name}.tar.bz2"; + sha256 = "1yknfkyzgz9s616is0l9gp5aray0f2ry4dw533jgzj8gq5s1xhgx"; }; } From c2ba006ec92ae6b5fea7bfd4b1a9fabdba4c24ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Thu, 21 Feb 2013 22:30:14 +0100 Subject: [PATCH 091/572] aespipe: Fix typo in maintainer id --- pkgs/tools/security/aespipe/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/security/aespipe/default.nix b/pkgs/tools/security/aespipe/default.nix index 36b0ccc7e09..9e4b8d12712 100644 --- a/pkgs/tools/security/aespipe/default.nix +++ b/pkgs/tools/security/aespipe/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { description = "AES encrypting or decrypting pipe"; homepage = http://loop-aes.sourceforge.net/aespipe.README; license = "GPL"; - #maintainers = stdenv.lib.maintainers.goibniu; + maintainers = stdenv.lib.maintainers.goibhniu; platforms = stdenv.lib.platforms.linux; }; } From e0344da28cdac23eb452b3bc3e3d5ff4a8164b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Fri, 22 Feb 2013 00:02:24 +0100 Subject: [PATCH 092/572] update gtk c++ bindings --- .../atkmm/{2.22.x.nix => default.nix} | 0 pkgs/development/libraries/glibmm/2.30.x.nix | 24 ------------------- pkgs/development/libraries/glibmm/default.nix | 24 +++++++++++++++++++ .../libraries/gtkmm/{2.24.x.nix => 2.x.nix} | 0 .../libraries/gtkmm/{3.2.x.nix => 3.x.nix} | 0 pkgs/top-level/all-packages.nix | 18 +++++--------- 6 files changed, 30 insertions(+), 36 deletions(-) rename pkgs/development/libraries/atkmm/{2.22.x.nix => default.nix} (100%) delete mode 100644 pkgs/development/libraries/glibmm/2.30.x.nix create mode 100644 pkgs/development/libraries/glibmm/default.nix rename pkgs/development/libraries/gtkmm/{2.24.x.nix => 2.x.nix} (100%) rename pkgs/development/libraries/gtkmm/{3.2.x.nix => 3.x.nix} (100%) diff --git a/pkgs/development/libraries/atkmm/2.22.x.nix b/pkgs/development/libraries/atkmm/default.nix similarity index 100% rename from pkgs/development/libraries/atkmm/2.22.x.nix rename to pkgs/development/libraries/atkmm/default.nix diff --git a/pkgs/development/libraries/glibmm/2.30.x.nix b/pkgs/development/libraries/glibmm/2.30.x.nix deleted file mode 100644 index 4792ae790be..00000000000 --- a/pkgs/development/libraries/glibmm/2.30.x.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, glib, libsigcxx }: - -stdenv.mkDerivation rec { - name = "glibmm-2.30.1"; - - src = fetchurl { - url = mirror://gnome/sources/glibmm/2.30/glibmm-2.30.1.tar.xz; - sha256 = "15zqgx6rashyhxk89qjqq05p6m40akpgzyjk8bfb3jk68rc2nn39"; - }; - - buildNativeInputs = [pkgconfig]; - propagatedBuildInputs = [glib libsigcxx]; - - meta = { - description = "C++ interface to the GLib library"; - - homepage = http://gtkmm.org/; - - license = "LGPLv2+"; - - maintainers = with stdenv.lib.maintainers; [urkud raskin]; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/development/libraries/glibmm/default.nix b/pkgs/development/libraries/glibmm/default.nix new file mode 100644 index 00000000000..05efa275756 --- /dev/null +++ b/pkgs/development/libraries/glibmm/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, glib, gdk_pixbuf, libsigcxx }: + +stdenv.mkDerivation rec { + name = "glibmm-2.34.1"; + + src = fetchurl { + url = "mirror://gnome/sources/glibmm/2.34/${name}.tar.xz"; + sha256 = "1i4jsvahva2q0mig7kjnpsw0r3fnpybm8b6hzymfm2hpgqnaa9dl"; + }; + + buildNativeInputs = [ pkgconfig ]; + propagatedBuildInputs = [ glib gdk_pixbuf libsigcxx ]; + + meta = { + description = "C++ interface to the GLib library"; + + homepage = http://gtkmm.org/; + + license = "LGPLv2+"; + + maintainers = with stdenv.lib.maintainers; [urkud raskin]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/development/libraries/gtkmm/2.24.x.nix b/pkgs/development/libraries/gtkmm/2.x.nix similarity index 100% rename from pkgs/development/libraries/gtkmm/2.24.x.nix rename to pkgs/development/libraries/gtkmm/2.x.nix diff --git a/pkgs/development/libraries/gtkmm/3.2.x.nix b/pkgs/development/libraries/gtkmm/3.x.nix similarity index 100% rename from pkgs/development/libraries/gtkmm/3.2.x.nix rename to pkgs/development/libraries/gtkmm/3.x.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 311b1ccdf7b..8707db52520 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3470,8 +3470,6 @@ let caelum = callPackage ../development/libraries/caelum { }; - cairomm = callPackage ../development/libraries/cairomm { }; - scmccid = callPackage ../development/libraries/scmccid { }; ccrtp = callPackage ../development/libraries/ccrtp { }; @@ -3955,31 +3953,27 @@ let }; glib = callPackage ../development/libraries/glib/2.34.x.nix { }; - - glibmm = callPackage ../development/libraries/glibmm/2.30.x.nix { }; + glibmm = callPackage ../development/libraries/glibmm { }; glib_networking = callPackage ../development/libraries/glib-networking {}; atk = callPackage ../development/libraries/atk/2.6.x.nix { }; - - atkmm = callPackage ../development/libraries/atkmm/2.22.x.nix { }; + atkmm = callPackage ../development/libraries/atkmm { }; cairo = callPackage ../development/libraries/cairo { }; + cairomm = callPackage ../development/libraries/cairomm { }; pango = callPackage ../development/libraries/pango/1.30.x.nix { }; - pangomm = callPackage ../development/libraries/pangomm/2.28.x.nix { }; gdk_pixbuf = callPackage ../development/libraries/gdk-pixbuf/2.26.x.nix { }; gtk2 = callPackage ../development/libraries/gtk+/2.24.x.nix { }; - + gtk3 = lowPrio (callPackage ../development/libraries/gtk+/3.2.x.nix { }); gtk = pkgs.gtk2; - gtkmm = callPackage ../development/libraries/gtkmm/2.24.x.nix { }; - gtkmm3 = callPackage ../development/libraries/gtkmm/3.2.x.nix { }; - - gtk3 = lowPrio (callPackage ../development/libraries/gtk+/3.2.x.nix { }); + gtkmm = callPackage ../development/libraries/gtkmm/2.x.nix { }; + gtkmm3 = callPackage ../development/libraries/gtkmm/3.x.nix { }; gtkmozembedsharp = callPackage ../development/libraries/gtkmozembed-sharp { gtksharp = gtksharp2; From fec1d4b2f7070d92d4c28732b43d0d4d0a1ff5aa Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Fri, 22 Feb 2013 09:24:48 +0100 Subject: [PATCH 093/572] 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 248ccf393b00636ee7078162510a58023afe842f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 12:56:26 +0100 Subject: [PATCH 094/572] haskell-network: add version 2.4.1.2 --- .../libraries/haskell/network/{2.4.1.0.nix => 2.4.1.2.nix} | 4 ++-- pkgs/top-level/haskell-packages.nix | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) rename pkgs/development/libraries/haskell/network/{2.4.1.0.nix => 2.4.1.2.nix} (80%) diff --git a/pkgs/development/libraries/haskell/network/2.4.1.0.nix b/pkgs/development/libraries/haskell/network/2.4.1.2.nix similarity index 80% rename from pkgs/development/libraries/haskell/network/2.4.1.0.nix rename to pkgs/development/libraries/haskell/network/2.4.1.2.nix index 9d5ac3abe78..4009bbd9464 100644 --- a/pkgs/development/libraries/haskell/network/2.4.1.0.nix +++ b/pkgs/development/libraries/haskell/network/2.4.1.2.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "network"; - version = "2.4.1.0"; - sha256 = "0m44iqlcnpsaa3iqxb4wbx2l1k2ycxzq8v07bwz7br7yyikv16y3"; + version = "2.4.1.2"; + sha256 = "0f7ykdv7xbsr5m3h2ml0hw3nlbnq785m0gr624pwk2s289jwakdh"; buildDepends = [ parsec ]; meta = { homepage = "https://github.com/haskell/network"; diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 36069e8854f..828f158376a 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -129,7 +129,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); HTTP = self.HTTP_4000_2_8; # 7.6 ok HUnit = self.HUnit_1_2_5_1; # 7.6 ok mtl = self.mtl_2_1_2; # 7.6 ok - network = self.network_2_4_1_0; # 7.6 ok + network = self.network_2_4_1_2; # 7.6 ok 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 @@ -1286,8 +1286,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); network_2_3_0_5 = callPackage ../development/libraries/haskell/network/2.3.0.5.nix {}; network_2_3_0_13 = callPackage ../development/libraries/haskell/network/2.3.0.13.nix {}; network_2_3_1_0 = callPackage ../development/libraries/haskell/network/2.3.1.0.nix {}; - network_2_4_1_0 = callPackage ../development/libraries/haskell/network/2.4.1.0.nix {}; - network = self.network_2_4_1_0; + network_2_4_1_2 = callPackage ../development/libraries/haskell/network/2.4.1.2.nix {}; + network = self.network_2_4_1_2; networkConduit = callPackage ../development/libraries/haskell/network-conduit {}; From 6aa834ad6e77cffd2fddd94a65dedbd7c5340136 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 14:41:35 +0100 Subject: [PATCH 095/572] haskell-happstack-server: update to version 7.1.6 --- .../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 4dd789b49e5..3a0b9ab59b9 100644 --- a/pkgs/development/libraries/haskell/happstack/happstack-server.nix +++ b/pkgs/development/libraries/haskell/happstack/happstack-server.nix @@ -6,15 +6,14 @@ cabal.mkDerivation (self: { pname = "happstack-server"; - version = "7.1.5"; - sha256 = "0w00y84arc8z92d1d3l6f7gh1hmkm4yrj70pnnrsaca3i603w11a"; + version = "7.1.6"; + sha256 = "0gifq625kclam6sgblwa8a1vhxmx8saanzlrikch0l9q0l95nfwd"; buildDepends = [ base64Bytestring blazeHtml extensibleExceptions filepath hslogger html monadControl mtl network parsec sendfile syb systemFilepath text threads time timeCompat transformers transformersBase utf8String xhtml zlib ]; - jailbreak = true; meta = { homepage = "http://happstack.com"; description = "Web related tools and services"; From 4b91db3ba7461dbaf646b364b995c2358040418a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 14:41:35 +0100 Subject: [PATCH 096/572] haskell-hoogle: update to version 4.2.16 --- pkgs/development/libraries/haskell/hoogle/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/hoogle/default.nix b/pkgs/development/libraries/haskell/hoogle/default.nix index a54802ef9b0..1e722a186dc 100644 --- a/pkgs/development/libraries/haskell/hoogle/default.nix +++ b/pkgs/development/libraries/haskell/hoogle/default.nix @@ -5,8 +5,8 @@ cabal.mkDerivation (self: { pname = "hoogle"; - version = "4.2.15"; - sha256 = "0mhxdbbzq7hl5zxz3dhxyrs5q08y8hxwsm19ba0gx47qvg3znzki"; + version = "4.2.16"; + sha256 = "1hamwqhndrkajm4xvxxfhr2rnlmf3z2ysyfxx3y6d24jawjyqf8a"; isLibrary = true; isExecutable = true; buildDepends = [ @@ -14,7 +14,6 @@ cabal.mkDerivation (self: { haskellSrcExts httpTypes parsec random safe tagsoup time transformers uniplate wai warp ]; - jailbreak = true; meta = { homepage = "http://www.haskell.org/hoogle/"; description = "Haskell API Search"; From 2569cc1286776ed18a4405f22760504e36b34717 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 14:41:35 +0100 Subject: [PATCH 097/572] haskell-shakespeare-css: update to version 1.0.3 --- .../development/libraries/haskell/shakespeare-css/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/shakespeare-css/default.nix b/pkgs/development/libraries/haskell/shakespeare-css/default.nix index 6ed553516b6..5016b816ff7 100644 --- a/pkgs/development/libraries/haskell/shakespeare-css/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-css/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "shakespeare-css"; - version = "1.0.2.1"; - sha256 = "1ik0128gwziv1dajz2g73rk1yac0ymd1w59q3g8c9g8ibwxn9hca"; + version = "1.0.3"; + sha256 = "0zk4nb4v9x04vkkgbzqanfpqgw9pqinf76l7d85fzclfgwacd0bz"; buildDepends = [ parsec shakespeare text transformers ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; From 59ef5ef0e822f680f8a72c9df82ec9dd2d8ec7f7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 14:41:36 +0100 Subject: [PATCH 098/572] haskell-snap-server: update to version 0.9.3.3 --- pkgs/development/libraries/haskell/snap/server.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/snap/server.nix b/pkgs/development/libraries/haskell/snap/server.nix index 3d25c6c215f..c11dfe4f398 100644 --- a/pkgs/development/libraries/haskell/snap/server.nix +++ b/pkgs/development/libraries/haskell/snap/server.nix @@ -6,8 +6,8 @@ cabal.mkDerivation (self: { pname = "snap-server"; - version = "0.9.3.1"; - sha256 = "0wagx1zy52fi4fldbzpsvk5hpdrma9lwsip9zrrbszxf446amd53"; + version = "0.9.3.3"; + sha256 = "1n50xyhg4rva7ifv70825177606q87ip7f9p5kf94i9kci0kmlig"; buildDepends = [ attoparsec attoparsecEnumerator blazeBuilder blazeBuilderEnumerator caseInsensitive enumerator MonadCatchIOTransformers mtl network From efe445f5f57fd3a832323dfeece37111e233912a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 15:03:36 +0100 Subject: [PATCH 099/572] xmobar: drop unnecessary override for 'stm' --- pkgs/top-level/haskell-packages.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 828f158376a..ab60ca32ff0 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -2017,9 +2017,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); QuickCheck = self.QuickCheck2; }; - xmobar = callPackage ../applications/misc/xmobar { - stm = self.stm_2_3; - }; + xmobar = callPackage ../applications/misc/xmobar {}; xmonad = callPackage ../applications/window-managers/xmonad {}; From eb5ebb6063fd69d2ce321ed0619d9e6ca02d970a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 15:04:03 +0100 Subject: [PATCH 100/572] network-protocol-xmpp: fix spelling of the attribute name --- .../applications/version-management/git-and-tools/default.nix | 2 +- .../version-management/git-and-tools/git-annex/default.nix | 4 ++-- pkgs/top-level/haskell-packages.nix | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix index 75c71f9cfdf..b7bf00f07dd 100644 --- a/pkgs/applications/version-management/git-and-tools/default.nix +++ b/pkgs/applications/version-management/git-and-tools/default.nix @@ -49,7 +49,7 @@ rec { 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 networkPprotocolXmpp async dns DAV uuid Glob; + SafeSemaphore networkProtocolXmpp async dns DAV uuid Glob; }; 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 7f11462aa02..3d11b484173 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 @@ -8,7 +8,7 @@ , networkMulticast, pcreLight, QuickCheck, SHA, stm, text, time , transformers, transformersBase, utf8String, wai, waiLogger, warp , yesod, yesodDefault, yesodStatic, testpack, SafeSemaphore -, networkPprotocolXmpp, async, dns, DAV, uuid, Glob +, networkProtocolXmpp, async, dns, DAV, uuid, Glob }: let @@ -30,7 +30,7 @@ stdenv.mkDerivation { 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 networkPprotocolXmpp + yesodDefault yesodStatic testpack SafeSemaphore networkProtocolXmpp async dns DAV uuid Glob ]; checkTarget = "test"; diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index ab60ca32ff0..ff8fd6a24c7 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1295,7 +1295,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); networkMulticast = callPackage ../development/libraries/haskell/network-multicast {}; - networkPprotocolXmpp = callPackage ../development/libraries/haskell/network-protocol-xmpp {}; + networkProtocolXmpp = callPackage ../development/libraries/haskell/network-protocol-xmpp {}; networkTransport = callPackage ../development/libraries/haskell/network-transport {}; From c3a7017cb6a1fd7519b060c4e2e9ab2e2c79e5d7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 16:14:36 +0100 Subject: [PATCH 101/572] haskell-xmlhtml: update to version 0.2.1 --- pkgs/development/libraries/haskell/xmlhtml/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/xmlhtml/default.nix b/pkgs/development/libraries/haskell/xmlhtml/default.nix index aff309b184f..66c1f645267 100644 --- a/pkgs/development/libraries/haskell/xmlhtml/default.nix +++ b/pkgs/development/libraries/haskell/xmlhtml/default.nix @@ -4,8 +4,8 @@ cabal.mkDerivation (self: { pname = "xmlhtml"; - version = "0.2.0.4"; - sha256 = "1z40hkq9l6nw3hcnz6d1x0han7ynjkvbvjy8bl5mq7zmhk1xhmr6"; + version = "0.2.1"; + sha256 = "1nqkjbhpzr7zxpjvlxy6pync6zyarvjblcxg8igq75dyzk7qhafg"; buildDepends = [ blazeBuilder blazeHtml blazeMarkup parsec text unorderedContainers ]; From 074137a19b1472bdb6618cecda51b4802204c4a7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 22 Feb 2013 16:53:23 +0100 Subject: [PATCH 102/572] pkgs/build-support/cabal/default.nix: add support for running test suites via Cabal Set 'doCheck = true' to enable building and running of the test suite. --- pkgs/build-support/cabal/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index a5884786b00..650807c324a 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -89,7 +89,8 @@ eval "$preConfigure" ${lib.optionalString (lib.attrByPath ["jailbreak"] false self) "${jailbreakCabal}/bin/jailbreak-cabal ${self.pname}.cabal && " - }for i in Setup.hs Setup.lhs; do + }${lib.optionalString (lib.attrByPath ["doCheck"] false self) "configureFlags+=\" --enable-test\" && " + }for i in Setup.hs Setup.lhs; do test -f $i && ghc --make $i done @@ -115,7 +116,8 @@ ./Setup build - export GHC_PACKAGE_PATH=$(ghc-packages) + ${lib.optionalString (lib.attrByPath ["doCheck"] false self) "./Setup test && " + }export GHC_PACKAGE_PATH=$(ghc-packages) [ -n "$noHaddock" ] || ./Setup haddock eval "$postBuild" From 0202ddea63eaee3542861b07765dfd8a85bd7d01 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 22 Feb 2013 11:08:50 -0500 Subject: [PATCH 103/572] Update rubygems --- .../interpreters/ruby/generated.nix | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index 08c07a71973..ae6806a258a 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -13,17 +13,17 @@ 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_1_2; + aws_sdk = g.aws_sdk_1_8_3; builder = g.builder_3_1_4; - buildr = g.buildr_1_4_9; - bundler = g.bundler_1_2_3; + buildr = g.buildr_1_4_10; + bundler = g.bundler_1_2_4; childprocess = g.childprocess_0_3_8; daemons = g.daemons_1_1_9; diff_lcs = g.diff_lcs_1_1_3; erubis = g.erubis_2_7_0; eventmachine = g.eventmachine_1_0_0; fakes3 = g.fakes3_0_1_5; - ffi = g.ffi_1_3_1; + ffi = g.ffi_1_4_0; foreman = g.foreman_0_61_0; highline = g.highline_1_6_2; hike = g.hike_1_2_1; @@ -37,7 +37,7 @@ g: # Get dependencies from patched gems 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_5_1; + multi_json = g.multi_json_1_6_1; net_sftp = g.net_sftp_2_0_5; net_ssh = g.net_ssh_2_6_5; nix = g.nix_0_1_1; @@ -61,7 +61,7 @@ g: # Get dependencies from patched gems rubyforge = g.rubyforge_2_0_4; rubyzip = g.rubyzip_0_9_9; sass = g.sass_3_2_5; - selenium_webdriver = g.selenium_webdriver_2_29_0; + selenium_webdriver = g.selenium_webdriver_2_30_0; sinatra = g.sinatra_1_3_2; sprockets = g.sprockets_2_2_2; systemu = g.systemu_2_5_2; @@ -70,7 +70,7 @@ g: # Get dependencies from patched gems tilt = g.tilt_1_3_3; treetop = g.treetop_1_4_12; tzinfo = g.tzinfo_0_3_35; - uuid = g.uuid_2_3_6; + uuid = g.uuid_2_3_7; uuidtools = g.uuidtools_2_1_3; websocket = g.websocket_1_0_7; xml_simple = g.xml_simple_1_1_1; @@ -171,7 +171,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_5_1 ]; + requiredGems = [ g.i18n_0_6_1 g.multi_json_1_6_1 ]; sha256 = ''1giqkprxjf5gyfyhn5nz9q8a5gi3v8irxhkpqr00zc5fw1azllsg''; }; arel_3_0_2 = { @@ -226,16 +226,16 @@ rails support and extra plugins for migrations and fixtures.''; requiredGems = [ g.ZenTest_4_9_0 ]; sha256 = ''1wkb5jayb39yx0i8ly7sibygf9f9c3w24jg2z1qgm135zlb070v4''; }; - aws_sdk_1_8_1_2 = { + aws_sdk_1_8_3 = { 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.1.2''; + name = ''aws-sdk-1.8.3''; requiredGems = [ g.uuidtools_2_1_3 g.nokogiri_1_5_6 g.json_1_7_7 ]; - sha256 = ''0z3ins8rd8v3r40sn70kg21f5di58lqjfxppl19hi3pdjxgdrr7x''; + sha256 = ''0ggvwiya4swyjyswfgwhzw09hap2slz7djp0svq22y7j0xci1axy''; }; builder_3_0_4 = { basename = ''builder''; @@ -285,7 +285,7 @@ simple to do. Currently the following builder objects are supported: requiredGems = [ ]; sha256 = ''1p0bjy1vb0zbswd6bsh5qda0f0br53p8vak8cm7hls62094r405p''; }; - buildr_1_4_9 = { + buildr_1_4_10 = { basename = ''buildr''; meta = { description = ''Build like you code''; @@ -297,20 +297,20 @@ to do, and it takes care of the rest. But also something we can easily extend for those one-off tasks, with a language that's a joy to use. ''; }; - name = ''buildr-1.4.9''; - 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 ]; - sha256 = ''1ws8cdc7ylfq0aqbcmgwj3d8jxh8lp8zgxx0w0a7ippvvjjxb7az''; + 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 ]; + sha256 = ''1x192r8ab5zr9rlp1i9b3pi3y74f9pj2w491wkgshgwj22akh6vn''; }; - bundler_1_2_3 = { + bundler_1_2_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.2.3''; + name = ''bundler-1.2.4''; requiredGems = [ ]; - sha256 = ''0bf6ync0901d9q4cg5ws4ra0qh9ssw2xgsip8dka34sbm59kav4w''; + sha256 = ''0p90abn29wvg6ic1230f4dj7zs55r9r772b0xq02fwqd0ry3pdgl''; }; childprocess_0_3_8 = { basename = ''childprocess''; @@ -320,7 +320,7 @@ for those one-off tasks, with a language that's a joy to use. 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''; - requiredGems = [ g.ffi_1_3_1 ]; + requiredGems = [ g.ffi_1_4_0 ]; sha256 = ''08rp4krw0g60567ih4w51ndlq2pg92al0dycy0bs0m3msq68nlq4''; }; daemons_1_1_9 = { @@ -412,16 +412,16 @@ using TCP/IP, especially if custom protocols are required.''; requiredGems = [ g.thor_0_17_0 g.builder_3_1_4 ]; sha256 = ''1na5wrbarla6s414svqmr5spbpv6vmcgpswal444x4clcpmadhib''; }; - ffi_1_3_1 = { + ffi_1_4_0 = { basename = ''ffi''; meta = { description = ''Ruby FFI''; homepage = ''http://wiki.github.com/ffi/ffi''; longDescription = ''Ruby FFI library''; }; - name = ''ffi-1.3.1''; + name = ''ffi-1.4.0''; requiredGems = [ ]; - sha256 = ''0hbrfwgaw3ilmb47lvg9gzdnnfs0q0dzp6dki7rphcvsgirhp0sb''; + sha256 = ''06a29qvg487yk9pyi7wzyj5700mf7s3mjdqc6dsrh0467mjj9768''; }; foreman_0_61_0 = { basename = ''foreman''; @@ -611,16 +611,16 @@ added from the the {LTSW collection}[http://www.ltsw.se/knbase/internet/mime.htp requiredGems = [ ]; sha256 = ''035vs1knnnjsb8arfp8vx75warvwcdpiljjwv38lqljai9v8fq53''; }; - multi_json_1_5_1 = { + multi_json_1_6_1 = { basename = ''multi_json''; meta = { description = ''A gem to provide swappable JSON backends.''; homepage = ''http://github.com/intridea/multi_json''; longDescription = ''A gem to provide easy switching between different JSON backends, including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, and OkJson.''; }; - name = ''multi_json-1.5.1''; + name = ''multi_json-1.6.1''; requiredGems = [ ]; - sha256 = ''0c2jxjg6lx811515s35vnyjl9m9rsb2adw6yj2fxgqkc7yx1fjsz''; + sha256 = ''0p33swcl9i97wvv0cq9jkdl8q7xbc3j07apy35vsgldnhw99krcg''; }; net_sftp_2_0_5 = { basename = ''net_sftp''; @@ -787,7 +787,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_3 ]; + 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 ]; sha256 = ''1jjnm74nzl5v3461c0mrbpa471yd6s8hnkmnxb64c2rm95c61wxz''; }; railties_3_2_12 = { @@ -971,16 +971,16 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''1ys7pfadw61dm09yyk28zrssi8zsyj99fyq6bdf2xmi8yp1avs6k''; }; - selenium_webdriver_2_29_0 = { + selenium_webdriver_2_30_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.29.0''; - requiredGems = [ g.multi_json_1_5_1 g.rubyzip_0_9_9 g.childprocess_0_3_8 g.websocket_1_0_7 ]; - sha256 = ''0c5fybp19mawq07h59b16h736pz8sz017m1pwalb6mcyliqmlwcj''; + 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''; }; sinatra_1_3_2 = { basename = ''sinatra''; @@ -1001,7 +1001,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_5_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_3 ]; sha256 = ''15ngw3bjbyr31ygzmmdxxa30ylah6pdn8akgdy9w30vfx2vr7s7s''; }; systemu_2_5_2 = { @@ -1069,7 +1069,7 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''1c52ndjqcxpgxhlclbxf98clcpni216xk5zgrkcd4px84riyjbmp''; }; - uuid_2_3_6 = { + uuid_2_3_7 = { basename = ''uuid''; meta = { description = ''UUID generator''; @@ -1078,9 +1078,9 @@ See RDoc for a description of RDoc's markup and basic use.''; (http://www.ietf.org/rfc/rfc4122.txt). ''; }; - name = ''uuid-2.3.6''; + name = ''uuid-2.3.7''; requiredGems = [ g.macaddr_1_6_1 ]; - sha256 = ''194xznnxncfgr0nx84l11gnafvkfzr1nj1swnwas75q0ld0ri2l8''; + sha256 = ''04q10an3v40zwjihvdwm23fw6vl39fbkhdiwfw78a51ym9airnlp''; }; uuidtools_2_1_3 = { basename = ''uuidtools''; From 07bd695e455248d37405498b5d8c6baf3e2757ec Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 22 Feb 2013 11:12:49 -0500 Subject: [PATCH 104/572] Add jsduck rubygem --- .../interpreters/ruby/generated.nix | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix index ae6806a258a..68c83a8e78c 100644 --- a/pkgs/development/interpreters/ruby/generated.nix +++ b/pkgs/development/interpreters/ruby/generated.nix @@ -31,8 +31,10 @@ 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; json = g.json_1_7_7; json_pure = g.json_pure_1_7_7; + libv8 = g.libv8_3_3_10_4_x86_64_linux; macaddr = g.macaddr_1_6_1; mail = g.mail_2_4_4; mime_types = g.mime_types_1_21; @@ -42,6 +44,7 @@ g: # Get dependencies from patched gems net_ssh = g.net_ssh_2_6_5; 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; @@ -52,6 +55,7 @@ g: # Get dependencies from patched gems 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; rdoc = g.rdoc_3_12_1; rjb = g.rjb_1_4_6; rspec = g.rspec_2_11_0; @@ -65,6 +69,7 @@ g: # Get dependencies from patched gems 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; @@ -75,7 +80,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'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''thin'' ''uuid'' ]; + 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'' ]; gems = { ZenTest_4_9_0 = { basename = ''ZenTest''; @@ -513,6 +518,17 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf''; requiredGems = [ ]; sha256 = ''1kgqsn0bagr41gf5kbqaxbs38a7s5bm85m0pdx4qz7d70v9nc9cl''; }; + jsduck_4_6_1 = { + 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''; + }; json_1_7_7 = { basename = ''json''; meta = { @@ -546,6 +562,17 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf''; requiredGems = [ ]; sha256 = ''0jxp0amx9xhka0ixnhvfgwc5ydr82hkxp81pvw32z31arx7jrwl6''; }; + libv8_3_3_10_4_x86_64_linux = { + 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''; + requiredGems = [ ]; + sha256 = ''13lnmkm9z3xqyi8rlsycfd7wybv044pxcisrkyq0cx7ig91a0dmc''; + }; macaddr_1_6_1 = { basename = ''macaddr''; meta = { @@ -681,6 +708,16 @@ enough of it.''; requiredGems = [ ]; sha256 = ''1235h8k242f6yi5qgb8rfcx6gp7g99djwqgrz0vb6w12pbp9kar8''; }; + parallel_0_6_2 = { + basename = ''parallel''; + meta = { + description = ''Run any kind of code in parallel processes''; + homepage = ''http://github.com/grosser/parallel''; + }; + name = ''parallel-0.6.2''; + requiredGems = [ ]; + sha256 = ''05rdbb1jqv0179wjfj74a1739rsqv7ijf4jp1i5s6lzh878c6l6p''; + }; polyglot_0_3_3 = { basename = ''polyglot''; meta = { @@ -845,6 +882,16 @@ request helpers feature.''; requiredGems = [ ]; sha256 = ''0bdnxwdxj4r1kdxfi5nszbsb126njrr81p912g64xxs2bgxd1bp1''; }; + rdiscount_2_0_7 = { + basename = ''rdiscount''; + meta = { + description = ''Fast Implementation of Gruber's Markdown in C''; + homepage = ''http://github.com/rtomayko/rdiscount''; + }; + name = ''rdiscount-2.0.7''; + requiredGems = [ ]; + sha256 = ''1cj9dn59xqjaglvzvd1ninid62xmih74az0glqqb90n2p42s2zs1''; + }; rdoc_3_12_1 = { basename = ''rdoc''; meta = { @@ -1015,6 +1062,17 @@ See RDoc for a description of RDoc's markup and basic use.''; requiredGems = [ ]; sha256 = ''0h834ajdg9w4xrijp31fn98pjfj08gi08xjvp5xh3i6hz9a25fhr''; }; + therubyracer_0_10_2 = { + basename = ''therubyracer''; + meta = { + description = ''Embed the V8 Javascript interpreter into Ruby''; + homepage = ''http://github.com/cowboyd/therubyracer''; + 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 ]; + sha256 = ''111hm2l613v06sy7pzjzmnyi4x11rg3c2syhnpv8fn0wnn9rdiyb''; + }; thin_1_5_0 = { basename = ''thin''; meta = { From 2c4d695a1bde57ed6be5af24eebf8ab0ce988678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Fri, 22 Feb 2013 21:05:40 +0100 Subject: [PATCH 105/572] bacula: fix version mismatch between name and src attribute Commit 207443b1849e7b1ce65059d2fdad81db04cc75d8 ("upgrade bacula") updated the backula version in the src attribute but forgot to update the version number in the name attribute. --- pkgs/tools/backup/bacula/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/backup/bacula/default.nix b/pkgs/tools/backup/bacula/default.nix index f0a6ade8444..9af44446c78 100644 --- a/pkgs/tools/backup/bacula/default.nix +++ b/pkgs/tools/backup/bacula/default.nix @@ -1,7 +1,7 @@ {stdenv, fetchurl, sqlite, zlib, acl, ncurses, openssl, readline}: stdenv.mkDerivation { - name = "bacula-5.0.3"; + name = "bacula-5.2.13"; src = fetchurl { url = mirror://sourceforge/bacula/bacula-5.2.13.tar.gz; From c3a55db090ba12e0ceb943c990fa8c6f66f9a51b Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 22 Feb 2013 15:24:20 -0500 Subject: [PATCH 106/572] bacula: Remove some duplication to avoid errors when updating. --- pkgs/tools/backup/bacula/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/backup/bacula/default.nix b/pkgs/tools/backup/bacula/default.nix index 9af44446c78..5f3cb2b48d3 100644 --- a/pkgs/tools/backup/bacula/default.nix +++ b/pkgs/tools/backup/bacula/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, sqlite, zlib, acl, ncurses, openssl, readline}: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "bacula-5.2.13"; src = fetchurl { - url = mirror://sourceforge/bacula/bacula-5.2.13.tar.gz; + url = "mirror://sourceforge/bacula/${name}.tar.gz"; sha256 = "1n3sc0kd7r0afpyi708y3md0a24rbldnfcdz0syqj600pxcd9gm4"; }; From 937fa72d4fc7f19bd8f74182b634760563eb5c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 10:25:52 +0100 Subject: [PATCH 107/572] taglib: update --- pkgs/development/libraries/taglib/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/taglib/default.nix b/pkgs/development/libraries/taglib/default.nix index 0842836ccec..cd083f0d80a 100644 --- a/pkgs/development/libraries/taglib/default.nix +++ b/pkgs/development/libraries/taglib/default.nix @@ -1,13 +1,13 @@ {stdenv, fetchurl, zlib, cmake}: stdenv.mkDerivation rec { - name = "taglib-1.7.1"; - + name = "taglib-1.8"; + src = fetchurl { url = "https://github.com/downloads/taglib/taglib/${name}.tar.gz"; - sha256 = "1nc7zd9jxx5gw4n6zqgvjh0wxlm89ihcyyrzk2rbf15njw4lgpjj"; + sha256 = "16i0zjpxqqslbwi4kl6y15qwm15mh7ykh74x19m2741wf20k9lv6"; }; - + cmakeFlags = "-DWITH_ASF=ON -DWITH_MP4=ON"; buildInputs = [zlib]; From 71a9716fd4c4b071c1ef666d662d544c9881dbe0 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Sat, 23 Feb 2013 10:51:14 +0100 Subject: [PATCH 108/572] offlineimap: update to 6.5.5-rc2 --- pkgs/tools/networking/offlineimap/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/networking/offlineimap/default.nix b/pkgs/tools/networking/offlineimap/default.nix index 5a8f6b8caae..2c2557cdc5c 100644 --- a/pkgs/tools/networking/offlineimap/default.nix +++ b/pkgs/tools/networking/offlineimap/default.nix @@ -1,13 +1,13 @@ { fetchurl, buildPythonPackage }: buildPythonPackage rec { - version = "6.5.3"; + version = "6.5.5-rc2"; name = "offlineimap-${version}"; src = fetchurl { - url = "https://github.com/spaetz/offlineimap/tarball/v${version}"; + url = "https://github.com/OfflineIMAP/offlineimap/tarball/v${version}"; name = "${name}.tar.bz"; - sha256 = "8717a56e6244b47b908b23b598efb3470d74450ecd881b6d3573d8aec4a5db38"; + sha256 = "03w3irh8pxwvivi139xm5iaj2f8vmriak1ispq9d9f84z1098pd3"; }; doCheck = false; From e6b245a3eefa4cb78870773a82526689a469743c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 10:54:35 +0100 Subject: [PATCH 109/572] cryptopp: fix via minor update --- .../libraries/crypto++/default.nix | 18 +++--- pkgs/development/libraries/crypto++/pic.patch | 22 ------- .../libraries/crypto++/salsa-gcc4.6.patch | 62 ------------------- 3 files changed, 7 insertions(+), 95 deletions(-) delete mode 100644 pkgs/development/libraries/crypto++/pic.patch delete mode 100644 pkgs/development/libraries/crypto++/salsa-gcc4.6.patch diff --git a/pkgs/development/libraries/crypto++/default.nix b/pkgs/development/libraries/crypto++/default.nix index 43d1011ec0a..e9efcfaf7f0 100644 --- a/pkgs/development/libraries/crypto++/default.nix +++ b/pkgs/development/libraries/crypto++/default.nix @@ -1,20 +1,16 @@ { fetchurl, stdenv, unzip, libtool }: stdenv.mkDerivation rec { - name = "crypto++-5.6.1"; + name = "crypto++-5.6.2"; src = fetchurl { - url = "mirror://sourceforge/cryptopp/cryptopp561.zip"; - sha256 = "0s7jhvnfihikqp1iwpdz03fad62xkjxci6jiahrh6f3sn664vrwq"; + url = "mirror://sourceforge/cryptopp/cryptopp562.zip"; + sha256 = "0x1mqpz1v071cfrw4grbw7z734cxnpry1qh2b6rsmcx6nkyd5gsw"; }; - patches = [ - ./pic.patch - ./salsa-gcc4.6.patch - ] ++ stdenv.lib.optional (stdenv.system != "i686-cygwin") ./dll.patch; + patches = stdenv.lib.optional (stdenv.system != "i686-cygwin") ./dll.patch; - - buildInputs = [ unzip ]; + buildInputs = [ unzip libtool ]; # Unpack the thing in a subdirectory. unpackPhase = '' @@ -37,7 +33,7 @@ stdenv.mkDerivation rec { # I add what 'enableParallelBuilding' would add to the make call, # if we were using the generic build phase. buildPhase = '' - make PREFIX="$out" all libcryptopp.so -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES + make PREFIX="$out" all -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES ''; # TODO: Installing cryptotest.exe doesn't seem to be necessary. We run @@ -53,7 +49,7 @@ stdenv.mkDerivation rec { meta = { description = "Crypto++, a free C++ class library of cryptographic schemes"; homepage = http://cryptopp.com/; - license = "Public Domain"; + license = "Boost 1.0"; maintainers = [ stdenv.lib.maintainers.ludo ]; }; } diff --git a/pkgs/development/libraries/crypto++/pic.patch b/pkgs/development/libraries/crypto++/pic.patch deleted file mode 100644 index c01550b132a..00000000000 --- a/pkgs/development/libraries/crypto++/pic.patch +++ /dev/null @@ -1,22 +0,0 @@ -Build position-independent code, for shared libraries. Fix $(DLLSRCS) -while we're at it (it lacks `pssr.cpp', for instance). - ---- a/GNUmakefile 2009-03-15 02:48:02.000000000 +0100 -+++ b/GNUmakefile 2009-08-11 00:13:43.000000000 +0200 -@@ -104,6 +104,7 @@ TESTOBJS = bench.o bench2.o test.o valid - LIBOBJS = $(filter-out $(TESTOBJS),$(OBJS)) - - DLLSRCS = algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp channels.cpp cryptlib.cpp des.cpp dessp.cpp dh.cpp dll.cpp dsa.cpp ec2n.cpp eccrypto.cpp ecp.cpp eprecomp.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gf2n.cpp gfpcrypt.cpp hex.cpp hmac.cpp integer.cpp iterhash.cpp misc.cpp modes.cpp modexppc.cpp mqueue.cpp nbtheory.cpp oaep.cpp osrng.cpp pch.cpp pkcspad.cpp pubkey.cpp queue.cpp randpool.cpp rdtables.cpp rijndael.cpp rng.cpp rsa.cpp sha.cpp simple.cpp skipjack.cpp strciphr.cpp trdlocal.cpp -+DLLSRCS = $(SRCS) - DLLOBJS = $(DLLSRCS:.cpp=.export.o) - LIBIMPORTOBJS = $(LIBOBJS:.o=.import.o) - TESTIMPORTOBJS = $(TESTOBJS:.o=.import.o) -@@ -162,7 +162,7 @@ endif - $(CXX) $(CXXFLAGS) -DCRYPTOPP_IMPORTS -c $< -o $@ - - %.export.o : %.cpp -- $(CXX) $(CXXFLAGS) -DCRYPTOPP_EXPORTS -c $< -o $@ -+ $(CXX) $(CXXFLAGS) -fPIC -DCRYPTOPP_EXPORTS -c $< -o $@ - - %.o : %.cpp - $(CXX) $(CXXFLAGS) -c $< diff --git a/pkgs/development/libraries/crypto++/salsa-gcc4.6.patch b/pkgs/development/libraries/crypto++/salsa-gcc4.6.patch deleted file mode 100644 index 609d2f55d22..00000000000 --- a/pkgs/development/libraries/crypto++/salsa-gcc4.6.patch +++ /dev/null @@ -1,62 +0,0 @@ -From fbccde3578feddb16f07be981da1d0f26209fd04 Mon Sep 17 00:00:00 2001 -From: weidai -Date: Sun, 5 Jun 2011 21:07:11 +0000 -Subject: [PATCH 1/4] fix Salsa validation failure when compiling with GCC 4.6 - (https://sourceforge.net/apps/trac/cryptopp/ticket/12) - -git-svn-id: https://cryptopp.svn.sourceforge.net/svnroot/cryptopp/trunk@529 57ff6487-cd31-0410-9ec3-f628ee90f5f0 ---- - c5/salsa.cpp | 21 +++++++++++---------- - 1 file changed, 11 insertions(+), 10 deletions(-) - -# NOTE: remove the c5 path component - -diff --git a/salsa.cpp b/salsa.cpp -index bd216ee..bdc5d75 100755 ---- a/salsa.cpp -+++ b/salsa.cpp -@@ -122,17 +122,17 @@ void Salsa20_Policy::OperateKeystream(KeystreamOperation operation, byte *output - if (HasSSE2()) - { - #if CRYPTOPP_BOOL_X64 -- #define REG_output %4 -- #define REG_input %1 -+ #define REG_output %1 -+ #define REG_input %0 - #define REG_iterationCount %2 -- #define REG_state %3 -- #define REG_rounds %0 -+ #define REG_state %4 /* constant */ -+ #define REG_rounds %3 /* constant */ - #define REG_roundsLeft eax - #define REG_temp32 edx - #define REG_temp rdx -- #define SSE2_WORKSPACE %5 -+ #define SSE2_WORKSPACE %5 /* constant */ - -- FixedSizeAlignedSecBlock workspace; -+ CRYPTOPP_ALIGN_DATA(16) byte workspace[16*32]; - #else - #define REG_output edi - #define REG_input eax -@@ -457,12 +457,13 @@ void Salsa20_Policy::OperateKeystream(KeystreamOperation operation, byte *output - #ifdef __GNUC__ - AS_POP_IF86( bx) - ".att_syntax prefix;" -- : - #if CRYPTOPP_BOOL_X64 -- : "r" (m_rounds), "r" (input), "r" (iterationCount), "r" (m_state.data()), "r" (output), "r" (workspace.m_ptr) -- : "%eax", "%edx", "memory", "cc", "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15" -+ : "+r" (input), "+r" (output), "+r" (iterationCount) -+ : "r" (m_rounds), "r" (m_state.m_ptr), "r" (workspace) -+ : "%eax", "%rdx", "memory", "cc", "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15" - #else -- : "d" (m_rounds), "a" (input), "c" (iterationCount), "S" (m_state.data()), "D" (output) -+ : "+a" (input), "+D" (output), "+c" (iterationCount) -+ : "d" (m_rounds), "S" (m_state.m_ptr) - : "memory", "cc" - #endif - ); --- -1.7.9.2 - From 6b30610672a29d9206f60db79ca0a7f281efc881 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Sat, 23 Feb 2013 10:55:11 +0100 Subject: [PATCH 110/572] offlineimap: updating license and add myself as maintainer --- pkgs/tools/networking/offlineimap/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/offlineimap/default.nix b/pkgs/tools/networking/offlineimap/default.nix index 2c2557cdc5c..6ecba1add76 100644 --- a/pkgs/tools/networking/offlineimap/default.nix +++ b/pkgs/tools/networking/offlineimap/default.nix @@ -1,4 +1,4 @@ -{ fetchurl, buildPythonPackage }: +{ pkgs, fetchurl, buildPythonPackage }: buildPythonPackage rec { version = "6.5.5-rc2"; @@ -15,6 +15,7 @@ buildPythonPackage rec { meta = { description = "OfflineImap synchronizes emails between two repositories, so that you can read the same mailbox from multiple computers."; homepage = "http://offlineimap.org"; - license = "GPLv2+"; + license = pkgs.lib.licenses.gpl2Plus; + maintainers = [ pkgs.lib.maintainers.garbas ]; }; } From e4236f1ade9bf4471d5e5088c7c066ec0bb176d4 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Sat, 23 Feb 2013 11:38:30 +0100 Subject: [PATCH 111/572] girara: update to 0.1.5, correct license and add myself as maintainer --- pkgs/applications/misc/girara/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/misc/girara/default.nix b/pkgs/applications/misc/girara/default.nix index 73db728b1a6..e112427126a 100644 --- a/pkgs/applications/misc/girara/default.nix +++ b/pkgs/applications/misc/girara/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, pkgconfig, gtk, gettext }: stdenv.mkDerivation rec { - name = "girara-0.1.4"; + name = "girara-0.1.5"; src = fetchurl { url = "http://pwmt.org/projects/girara/download/${name}.tar.gz"; - sha256 = "831cf523b131bfa1c182efbf146d68fb642fe62d22ee199caf0cd71408a85739"; + sha256 = "1hfi3jmx8ydvrqm3h6p6py2csavh7xx0223vxyca51kjl9mfnbld"; }; buildInputs = [ pkgconfig gtk gettext ]; @@ -19,8 +19,9 @@ stdenv.mkDerivation rec { girara is a library that implements a GTK+ based VIM-like user interface that focuses on simplicity and minimalism. ''; - license = "free"; + license = stdenv.lib.licenses.zlib; platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.garbas ]; }; } From 5077600d9abedefdf56cea4ee7c9022e88c9a9cd Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Sat, 23 Feb 2013 11:39:32 +0100 Subject: [PATCH 112/572] zathura: update to 0.2.2 (also plugins), added correct license and myself as maintainer --- pkgs/applications/misc/zathura/core/default.nix | 7 ++++--- pkgs/applications/misc/zathura/default.nix | 4 +++- pkgs/applications/misc/zathura/djvu/default.nix | 3 ++- pkgs/applications/misc/zathura/pdf-poppler/default.nix | 8 +++++--- pkgs/applications/misc/zathura/ps/default.nix | 3 ++- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/pkgs/applications/misc/zathura/core/default.nix b/pkgs/applications/misc/zathura/core/default.nix index 6c3ff038c74..f56becf4512 100644 --- a/pkgs/applications/misc/zathura/core/default.nix +++ b/pkgs/applications/misc/zathura/core/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { - version = "0.2.1"; + version = "0.2.2"; name = "zathura-core-${version}"; src = fetchurl { url = "http://pwmt.org/projects/zathura/download/zathura-${version}.tar.gz"; - sha256 = "075b9def201c77ca738dc9e15b252bc23c085b7c4671a1810d1d962e8d0bd790"; + sha256 = "1ja2j9ygymr259fxf02j1vkvalypac48gpadq8fn3qbclxxj61k5"; }; buildInputs = [ pkgconfig gtk girara gettext ]; @@ -18,8 +18,9 @@ stdenv.mkDerivation rec { meta = { homepage = http://pwmt.org/projects/zathura/; description = "A core component for zathura PDF viewer"; - license = "free"; + license = stdenv.lib.licenses.zlib; platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.garbas ]; # Set lower priority in order to provide user with a wrapper script called # 'zathura' instead of real zathura executable. The wrapper will build diff --git a/pkgs/applications/misc/zathura/default.nix b/pkgs/applications/misc/zathura/default.nix index 5ed445b6984..b5e0092975c 100644 --- a/pkgs/applications/misc/zathura/default.nix +++ b/pkgs/applications/misc/zathura/default.nix @@ -34,7 +34,9 @@ rec { is an application that provides a minimalistic and space saving interface as well as an easy usage that mainly focuses on keyboard interaction. ''; - license = "free"; + license = stdenv.lib.licenses.zlib; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.garbas ]; }; }; } diff --git a/pkgs/applications/misc/zathura/djvu/default.nix b/pkgs/applications/misc/zathura/djvu/default.nix index bddb3471bfe..9486acfef65 100644 --- a/pkgs/applications/misc/zathura/djvu/default.nix +++ b/pkgs/applications/misc/zathura/djvu/default.nix @@ -21,8 +21,9 @@ stdenv.mkDerivation rec { The zathura-djvu plugin adds DjVu support to zathura by using the djvulibre library. ''; - license = "free"; + license = stdenv.lib.licenses.zlib; platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.garbas ]; }; } diff --git a/pkgs/applications/misc/zathura/pdf-poppler/default.nix b/pkgs/applications/misc/zathura/pdf-poppler/default.nix index e0fcb0573a4..faf4e49b968 100644 --- a/pkgs/applications/misc/zathura/pdf-poppler/default.nix +++ b/pkgs/applications/misc/zathura/pdf-poppler/default.nix @@ -1,11 +1,12 @@ { stdenv, fetchurl, pkgconfig, zathura_core, girara, poppler, gettext }: stdenv.mkDerivation rec { - name = "zathura-pdf-poppler-0.2.1"; + version = "0.2.2"; + name = "zathura-pdf-poppler-${version}"; src = fetchurl { url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz"; - sha256 = "1c162ea887e52f48d6dc80f8427a773768f2df2e37242dab7efddeb3d2e361cd"; + sha256 = "0px59f0bnmb9992n3c9iyzcwd6w7vg8ga069vc8qj4726ljml4c7"; }; buildInputs = [ pkgconfig poppler gettext zathura_core girara ]; @@ -19,7 +20,8 @@ stdenv.mkDerivation rec { The zathura-pdf-poppler plugin adds PDF support to zathura by using the poppler rendering engine. ''; - license = "free"; + license = stdenv.lib.licenses.zlib; platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.garbas ]; }; } diff --git a/pkgs/applications/misc/zathura/ps/default.nix b/pkgs/applications/misc/zathura/ps/default.nix index 7f70eb952e1..7c0dd552a66 100644 --- a/pkgs/applications/misc/zathura/ps/default.nix +++ b/pkgs/applications/misc/zathura/ps/default.nix @@ -21,8 +21,9 @@ stdenv.mkDerivation rec { The zathura-ps plugin adds PS support to zathura by using the libspectre library. ''; - license = "free"; + license = stdenv.lib.licenses.zlib; platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.garbas ]; }; } From bc4e786187ba008b0c69c826736cc176eff5cb22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 12:59:28 +0100 Subject: [PATCH 113/572] alsa-lib: fix a stdint.h problem --- pkgs/os-specific/linux/alsa-lib/default.nix | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/alsa-lib/default.nix b/pkgs/os-specific/linux/alsa-lib/default.nix index 3be6d0c3c33..26d32594fba 100644 --- a/pkgs/os-specific/linux/alsa-lib/default.nix +++ b/pkgs/os-specific/linux/alsa-lib/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { name = "alsa-lib-1.0.26"; - + src = fetchurl { urls = [ "ftp://ftp.alsa-project.org/pub/lib/${name}.tar.bz2" @@ -10,12 +10,17 @@ stdenv.mkDerivation rec { ]; sha256 = "0zbfkwqn7ixa71lsna9llq6i2gic540h8r8r0rjdphrwc1hq37wc"; }; - + configureFlags = "--disable-xmlto"; - + # Fix pcm.h file in order to prevent some compilation bugs + # 2: see http://stackoverflow.com/questions/3103400/how-to-overcome-u-int8-t-vs-uint8-t-issue-efficiently postPatch = '' sed -i -e 's|//int snd_pcm_mixer_element(snd_pcm_t \*pcm, snd_mixer_t \*mixer, snd_mixer_elem_t \*\*elem);|/\*int snd_pcm_mixer_element(snd_pcm_t \*pcm, snd_mixer_t \*mixer, snd_mixer_elem_t \*\*elem);\*/|' include/pcm.h + + + sed -i -e '1i#include ' include/pcm.h + sed -i -e 's/u_int\([0-9]*\)_t/uint\1_t/g' include/pcm.h ''; crossAttrs = { @@ -23,7 +28,7 @@ stdenv.mkDerivation rec { sed -i s/extern/static/g include/iatomic.h ''; }; - + meta = { description = "ALSA, the Advanced Linux Sound Architecture libraries"; From 0de7b2dfd82a7972066e220367cc2883a29b72e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 13:00:09 +0100 Subject: [PATCH 114/572] baresip: a minor update --- .../networking/instant-messengers/baresip/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/baresip/default.nix b/pkgs/applications/networking/instant-messengers/baresip/default.nix index ba530374c71..61cd62fefd4 100644 --- a/pkgs/applications/networking/instant-messengers/baresip/default.nix +++ b/pkgs/applications/networking/instant-messengers/baresip/default.nix @@ -4,11 +4,11 @@ , gsm, speex, portaudio, spandsp, libuuid }: stdenv.mkDerivation rec { - version = "0.4.2"; + version = "0.4.3"; name = "baresip-${version}"; src=fetchurl { url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz"; - sha256 = "3ac15b3d3cf17b2417ba871e7eaaaf41ab10cb30b900adcee357d5e91ea033e7"; + sha256 = "03vpzn0c3mybnwn84ha3yci780qsjm669dwja1srj0hbrq81rbil"; }; buildInputs = [zlib openssl libre librem pkgconfig cairo mpg123 gstreamer gst_ffmpeg gst_plugins_base gst_plugins_bad gst_plugins_good From 40b7ecf930610b06f413640b5f4ed95fcea74937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 13:25:48 +0100 Subject: [PATCH 115/572] gnutls2: fix via a minor update --- pkgs/development/libraries/gnutls/2.12.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/gnutls/2.12.nix b/pkgs/development/libraries/gnutls/2.12.nix index cbb72754b1b..85a676a05b1 100644 --- a/pkgs/development/libraries/gnutls/2.12.nix +++ b/pkgs/development/libraries/gnutls/2.12.nix @@ -5,11 +5,11 @@ assert guileBindings -> guile != null; stdenv.mkDerivation rec { - name = "gnutls-2.12.11"; + name = "gnutls-2.12.23"; - src = fetchurl { - url = "mirror://gnu/gnutls/${name}.tar.bz2"; - sha256 = "0q0kk69y1vpdxdz0mxqw603zi2y5kkgz3rvinc6bv6z9mwd8xd80"; + src = fetchurl { # missing on standard mirrors + url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v2.12/${name}.tar.bz2"; + sha256 = "1lkys703z4yxfgzarmgas5ccvn6m254w9wvm7s8v0zkj81z7m9nz"; }; configurePhase = '' From 350bd42274ef6f1cb1687c2142941ad9114be87e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 14:00:49 +0100 Subject: [PATCH 116/572] opensc stuff: fix some packages by updating --- pkgs/tools/security/ccid/default.nix | 13 +++++++------ pkgs/tools/security/pcsclite/default.nix | 15 +++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/pkgs/tools/security/ccid/default.nix b/pkgs/tools/security/ccid/default.nix index 896e034ee76..0e607092412 100644 --- a/pkgs/tools/security/ccid/default.nix +++ b/pkgs/tools/security/ccid/default.nix @@ -1,20 +1,21 @@ -{stdenv, fetchurl, pcsclite, pkgconfig, libusb, perl}: -stdenv.mkDerivation { - name = "ccid-1.3.11"; +{ stdenv, fetchurl, pcsclite, pkgconfig, libusb1, perl }: +stdenv.mkDerivation rec { + name = "ccid-1.4.9"; src = fetchurl { - url = https://alioth.debian.org/frs/download.php/3080/ccid-1.3.11.tar.bz2; - sha256 = "01l9956wids087d38bprr8jqcl05j48cdp25k9q7vzran215mgzp"; + url = "https://alioth.debian.org/frs/download.php/3866/${name}.tar.bz2"; + sha256 = "1dj0cw4js4ab678l94rf9p8a8gppkf1hm66qhmq5ajra6r5nv3m9"; }; patchPhase = '' sed -i 's,/usr/bin/env perl,${perl}/bin/perl,' src/*.pl + substituteInPlace src/Makefile.in --replace /bin/echo echo ''; preConfigure = '' configureFlags="$configureFlags --enable-usbdropdir=$out/pcsc/drivers" ''; - buildInputs = [ pcsclite pkgconfig libusb ]; + buildInputs = [ pcsclite pkgconfig libusb1 ]; meta = { description = "ccid drivers for pcsclite"; diff --git a/pkgs/tools/security/pcsclite/default.nix b/pkgs/tools/security/pcsclite/default.nix index a6f8b2dc064..de0fef9b73f 100644 --- a/pkgs/tools/security/pcsclite/default.nix +++ b/pkgs/tools/security/pcsclite/default.nix @@ -1,21 +1,24 @@ -{ stdenv, fetchurl, udev, pkgconfig, dbus_libs }: +{ stdenv, fetchurl, pkgconfig, udev, dbus_libs, perl }: stdenv.mkDerivation rec { - name = "pcsclite-1.7.4"; + name = "pcsclite-1.8.8"; src = fetchurl { - url = "http://alioth.debian.org/frs/download.php/3598/${name}.tar.bz2"; - sha256 = "1lc3amxisv2ya51v0gysygldj25kv7zj81famv69s205mvmagr6q"; + url = "http://alioth.debian.org/frs/download.php/3862/${name}.tar.bz2"; + sha256 = "1rw5530vr2jf02ziyf32jbd98n5q8zjcfwp5nkw3x3bkgr53arpy"; }; # The OS should care on preparing the drivers into this location - configureFlags = [ "--enable-usbdropdir=/var/lib/pcsc/drivers" ]; + configureFlags = [ + "--enable-usbdropdir=/var/lib/pcsc/drivers" + "--with-systemdsystemunitdir=$out/lib/systemd/system" # probably + ]; preConfigure = '' configureFlags="$configureFlags --enable-confdir=$out/etc" ''; - buildInputs = [ udev dbus_libs ]; + buildInputs = [ udev dbus_libs perl ]; nativeBuildInputs = [ pkgconfig ]; From e6e3035dbfeb12cf29c91e1d7a78911b924aa867 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 14:44:38 +0100 Subject: [PATCH 117/572] autogen: minor update and fix by disabling tests /dev/tty is missing --- pkgs/development/tools/misc/autogen/default.nix | 8 ++++---- pkgs/top-level/all-packages.nix | 4 +--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/pkgs/development/tools/misc/autogen/default.nix b/pkgs/development/tools/misc/autogen/default.nix index b11aba8ade7..4284e20dd50 100644 --- a/pkgs/development/tools/misc/autogen/default.nix +++ b/pkgs/development/tools/misc/autogen/default.nix @@ -1,13 +1,13 @@ { fetchurl, stdenv, guile, which }: -let version = "5.15"; in +let version = "5.17"; in stdenv.mkDerivation { name = "autogen-${version}"; src = fetchurl { url = "mirror://gnu/autogen/rel${version}/autogen-${version}.tar.gz"; - sha256 = "8a37effa66d285471851e445d3bdeb60c0940f9efd7852828ebb8116e1c5cc1f"; + sha256 = "065mg9gfb605wxbsk3inf93528ygcjgg6j8ml51691f6ghj363ff"; }; buildInputs = [ guile which ]; @@ -22,7 +22,7 @@ let version = "5.15"; in # The tests rely on being able to find `libopts.a'. configureFlags = "--enable-static"; - doCheck = true; + #doCheck = true; # 2 tests fail because of missing /dev/tty meta = { description = "GNU AutoGen, an automated text and program generation tool"; @@ -46,7 +46,7 @@ let version = "5.15"; in documentation of program options. ''; - license = "GPLv3+"; + licenses = ["GPLv3+" "LGPLv3+" ]; homepage = http://www.gnu.org/software/autogen/; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a5ecbfd6e3a..80e17439008 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -449,9 +449,7 @@ let atftp = callPackage ../tools/networking/atftp {}; - autogen = callPackage ../development/tools/misc/autogen { - guile = guile_1_8; - }; + autogen = callPackage ../development/tools/misc/autogen { }; autojump = callPackage ../tools/misc/autojump { }; From c5561a8e7657dd13eb7aa5864d58c9fa1cc205fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 14:49:23 +0100 Subject: [PATCH 118/572] gsasl: fix via a major update --- pkgs/development/libraries/gsasl/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/gsasl/default.nix b/pkgs/development/libraries/gsasl/default.nix index 9f71bc5e202..3b52133058f 100644 --- a/pkgs/development/libraries/gsasl/default.nix +++ b/pkgs/development/libraries/gsasl/default.nix @@ -1,11 +1,11 @@ { fetchurl, stdenv, gss, libidn }: stdenv.mkDerivation rec { - name = "gsasl-1.6.1"; + name = "gsasl-1.8.0"; src = fetchurl { url = "mirror://gnu/gsasl/${name}.tar.gz"; - sha256 = "02dmras3kqik08p14mpq0lj678w7wmmaxpcvdrx116wkcgspv2z6"; + sha256 = "1rci64cxvcfr8xcjpqc4inpfq7aw4snnsbf5xz7d30nhvv8n40ii"; }; buildInputs = [ gss libidn ]; From 4601e6734a2b07ebd80d63f95a5ecacf5fd049c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 14:51:40 +0100 Subject: [PATCH 119/572] dico: minor update, but still bad: wants "gets" --- pkgs/servers/dico/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/servers/dico/default.nix b/pkgs/servers/dico/default.nix index ac897554ce2..d711d8a75ca 100644 --- a/pkgs/servers/dico/default.nix +++ b/pkgs/servers/dico/default.nix @@ -1,16 +1,16 @@ { fetchurl, stdenv, libtool, gettext, zlib, readline, gsasl -, guile, python }: +, guile, python, pcre }: stdenv.mkDerivation rec { - name = "dico-2.1"; + name = "dico-2.2"; src = fetchurl { - url = "mirror://gnu/dico/${name}.tar.gz"; - sha256 = "0cs4jxnz6g5xqrhkbnycn7jl9fs8jfjh33vza7i68m8qmjwx2vza"; + url = "mirror://gnu/dico/${name}.tar.xz"; + sha256 = "04pjks075x20d19l623mj50bw64g8i41s63z4kzzqcbg9qg96x64"; }; # XXX: Add support for GNU SASL. - buildInputs = [ libtool gettext zlib readline gsasl guile python ]; + buildInputs = [ libtool gettext zlib readline gsasl guile python pcre ]; doCheck = true; From 5f758e6ea38be047b02f862d6a40b71c28788958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 14:57:31 +0100 Subject: [PATCH 120/572] dragonegg: fix via update --- pkgs/development/compilers/llvm/dragonegg.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/llvm/dragonegg.nix b/pkgs/development/compilers/llvm/dragonegg.nix index 9fd308a7e21..42d337b8eac 100644 --- a/pkgs/development/compilers/llvm/dragonegg.nix +++ b/pkgs/development/compilers/llvm/dragonegg.nix @@ -1,11 +1,12 @@ {stdenv, fetchurl, llvm, gmp, mpfr, mpc}: stdenv.mkDerivation rec { - name = "dragonegg-3.0"; + version = "3.2"; + name = "dragonegg-${version}"; src = fetchurl { - url = "http://llvm.org/releases/3.0/${name}.tar.gz"; - sha256 = "09v8bxx676iz93qk39dc2fk52iqhqy9pnphvinmm9ch1x791zpvj"; + url = "http://llvm.org/releases/${version}/${name}.src.tar.gz"; + sha256 = "0jfxhqy3177drlvzgp6m0kwnbfyzrd4vzidnxjhck8a7a69a26bg"; }; # The gcc the plugin will be built for (the same used building dragonegg) From 4ebcc87f6b8050878f5ae789fa94d6a2ddcf5f90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 15:10:01 +0100 Subject: [PATCH 121/572] compiz: fix build and update --- .../window-managers/compiz/default.nix | 14 ++++++++------ pkgs/top-level/all-packages.nix | 3 ++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pkgs/applications/window-managers/compiz/default.nix b/pkgs/applications/window-managers/compiz/default.nix index ba9d9574366..46aa6e4d77e 100644 --- a/pkgs/applications/window-managers/compiz/default.nix +++ b/pkgs/applications/window-managers/compiz/default.nix @@ -1,6 +1,7 @@ {stdenv, fetchurl, cmake, pkgconfig , libXrender, renderproto, gtk, libwnck, pango, cairo , GConf, libXdamage, damageproto, libxml2, libxslt, glibmm +, metacity , libstartup_notification, libpthreadstubs, libxcb, intltool , ORBit2, libXau , dbus, dbus_glib, librsvg, mesa @@ -14,15 +15,15 @@ let s = # Generated upstream information rec { baseName="compiz"; - version="0.9.8.6"; - name="compiz-0.9.8.6"; - hash="0agz5s11lwrkhk3svz3rwimlb6318ln3zcywlzczwks139svxnk6"; - url="https://launchpad.net/compiz/0.9.8/0.9.8.6/+download/compiz-0.9.8.6.tar.bz2"; - sha256="0agz5s11lwrkhk3svz3rwimlb6318ln3zcywlzczwks139svxnk6"; + version="0.9.9.0"; + name="compiz-${version}"; + url="https://launchpad.net/compiz/0.9.9/${version}/+download/${name}.tar.bz2"; + sha256="0nxv9lv0zwzs82p2d5g38sbvzbqgfs837xdgwc26lh5wdv31d93s"; }; buildInputs = [cmake pkgconfig libXrender renderproto gtk libwnck pango cairo GConf libXdamage damageproto libxml2 libxslt glibmm libstartup_notification + metacity libpthreadstubs libxcb intltool ORBit2 libXau dbus dbus_glib librsvg mesa @@ -40,7 +41,8 @@ stdenv.mkDerivation rec { }; inherit buildInputs; - NIX_CFLAGS_COMPILE=" -Wno-error "; + NIX_CFLAGS_COMPILE = " -Wno-error "; + NIX_CFLAGS_LINK = "-lm -ldl -pthread -lutil"; postInstall = '' wrapProgram "$out/bin/ccsm" \ --prefix PYTHONPATH : "$PYTHONPATH" \ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 80e17439008..10926f299d3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6644,7 +6644,8 @@ let cmus = callPackage ../applications/audio/cmus { }; compiz = callPackage ../applications/window-managers/compiz { - inherit (gnome) GConf ORBit2; + inherit (gnome) GConf ORBit2 metacity; + boost = boost149; # https://bugs.launchpad.net/compiz/+bug/1131864 intltool = intltool_standalone; }; From aacc9a6d0d6d1bd8e7b28cd81a7b86a659af6c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 15:23:18 +0100 Subject: [PATCH 122/572] etherape: fix build --- .../networking/sniffers/etherape/default.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/sniffers/etherape/default.nix b/pkgs/applications/networking/sniffers/etherape/default.nix index e268cdb7bba..3b9b8cce9e7 100644 --- a/pkgs/applications/networking/sniffers/etherape/default.nix +++ b/pkgs/applications/networking/sniffers/etherape/default.nix @@ -1,5 +1,5 @@ -{stdenv, fetchurl, pkgconfig, gtk, libpcap, libglade, libgnome, libgnomeui, -gnomedocutils, scrollkeeper, libxslt}: +{ stdenv, fetchurl, pkgconfig, libtool, gtk, libpcap, libglade, libgnome, libgnomeui +, gnomedocutils, scrollkeeper, libxslt }: stdenv.mkDerivation rec { name = "etherape-0.9.12"; @@ -9,8 +9,10 @@ stdenv.mkDerivation rec { }; configureFlags = [ "--disable-scrollkeeper" ]; - buildInputs = [ gtk libpcap pkgconfig libglade libgnome libgnomeui gnomedocutils - scrollkeeper libxslt ]; + buildInputs = [ + pkgconfig libtool gtk libpcap libglade libgnome libgnomeui gnomedocutils + scrollkeeper libxslt + ]; meta = { homepage = http://etherape.sourceforge.net/; From 0961084afb048bebc2f71f04314772119de86d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 23 Feb 2013 15:40:20 +0100 Subject: [PATCH 123/572] linux 3.7, 3.8: Enabling CFG80211_WEXT (for ipw2200) My computer with a ipw2200 nic needs that, to have the ipw2200 driver. --- pkgs/os-specific/linux/kernel/linux-3.7.nix | 1 + pkgs/os-specific/linux/kernel/linux-3.8.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/pkgs/os-specific/linux/kernel/linux-3.7.nix b/pkgs/os-specific/linux/kernel/linux-3.7.nix index 9c96c2a8fd2..c1847809c06 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.7.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.7.nix @@ -78,6 +78,7 @@ let ATH9K_AHB y # Ditto, AHB bus B43_PHY_HT y BCMA_HOST_PCI y + CFG08211_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. diff --git a/pkgs/os-specific/linux/kernel/linux-3.8.nix b/pkgs/os-specific/linux/kernel/linux-3.8.nix index 58e6f28453a..927b249a924 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.8.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.8.nix @@ -78,6 +78,7 @@ let ATH9K_AHB y # Ditto, AHB bus B43_PHY_HT y BCMA_HOST_PCI y + CFG08211_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. From 611df1d062a2727479e8a13f1a420510417abaac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sat, 23 Feb 2013 11:53:34 +0100 Subject: [PATCH 124/572] Suil: update to 0.6.10 --- pkgs/development/libraries/audio/suil/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/audio/suil/default.nix b/pkgs/development/libraries/audio/suil/default.nix index 0358e1c982c..45253b65edb 100644 --- a/pkgs/development/libraries/audio/suil/default.nix +++ b/pkgs/development/libraries/audio/suil/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "suil-${version}"; - version = "0.6.4"; + version = "0.6.10"; src = fetchurl { url = "http://download.drobilla.net/${name}.tar.bz2"; - sha256 = "12pz2w74rhhi6gsskfs6l71vw8qfz8906kbjf5w6jyy1x4kkdca2"; + sha256 = "1y7zgfciphr3icamikdfv2gh8xwix5blpq4npl426399i8f4ya5y"; }; buildInputs = [ gtk lv2 pkgconfig python qt4 serd sord sratom ]; From 5e1bfa8053b1ddcb162cf91cad54ce01c458844d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 17:22:45 +0100 Subject: [PATCH 125/572] firebird: update and fix, hopefully works but it depends on #334 --- pkgs/servers/firebird/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/servers/firebird/default.nix b/pkgs/servers/firebird/default.nix index ebacc84e8c6..12dfc20e736 100644 --- a/pkgs/servers/firebird/default.nix +++ b/pkgs/servers/firebird/default.nix @@ -21,9 +21,9 @@ */ -stdenv.mkDerivation { - - name = "firebird-2.3.1"; +stdenv.mkDerivation rec { + version = "2.5.2"; + name = "firebird-${version}"; configureFlags = [ "--with-serivec-port=${builtins.toString port}" @@ -34,8 +34,8 @@ stdenv.mkDerivation { ++ (stdenv.lib.optional superServer "--enable-superserver=true"); src = fetchurl { - url = mirror://sourceforge/firebird/files/2.1.3-Release/Firebird-2.1.3.18185-0.tar.bz2; - sha256 = "0a7xy016r0j1f97cf2lww8fkz1vlvvghrgv9ffz2i6f7ppacniw0"; + url = "mirror://sourceforge/firebird/Firebird-${version}.26539-0.tar.bz2"; + sha256 = "1j5bcfl35hr6i4lcd08zls19bal2js3ar16gnwkzbhwxkxbyb43b"; }; buildInputs = [libedit icu]; From def9a6c06b5e80751711c46bcd6ba6125f4ff581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sat, 23 Feb 2013 11:52:53 +0100 Subject: [PATCH 126/572] Ardour3: update to RC2 --- pkgs/applications/audio/ardour/ardour3.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/audio/ardour/ardour3.nix b/pkgs/applications/audio/ardour/ardour3.nix index cfa86af3c37..d2d2ab37d30 100644 --- a/pkgs/applications/audio/ardour/ardour3.nix +++ b/pkgs/applications/audio/ardour/ardour3.nix @@ -1,13 +1,13 @@ { stdenv, fetchsvn, alsaLib, aubio, boost, cairomm, curl, fftw -, fftwSinglePrec, flac, glib, glibmm, gtk, gtkmm, jackaudio +, fftwSinglePrec, flac, glibc, glibmm, gtk, gtkmm, jackaudio , libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf , librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile , libusb, libuuid, libxml2, libxslt, lilv, lv2, makeWrapper, pango , perl, pkgconfig, python, serd, sord, sratom, suil }: let - # Ardour 3 Beta 5 - rev = "13072"; + # Ardour 3 RC2 + rev = "14092"; in stdenv.mkDerivation { @@ -16,12 +16,12 @@ stdenv.mkDerivation { src = fetchsvn { url = http://subversion.ardour.org/svn/ardour2/branches/3.0; inherit rev; - sha256 = "17k990kdb5q17z6jcz5b60imvvfbjw9zfxzy9fk0vg8gd6yq7736"; + sha256 = "1zyy74z3xcsdhrzw4g6y1qm1ai2fl3bgabscl0wn7m1kkscr9nzg"; }; buildInputs = [ alsaLib aubio boost cairomm curl fftw fftwSinglePrec - flac glib glibmm gtk gtkmm jackaudio libgnomecanvas + flac glibc glibmm gtk gtkmm jackaudio libgnomecanvas libgnomecanvasmm liblo libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2 pango perl pkgconfig python serd sord @@ -32,6 +32,7 @@ stdenv.mkDerivation { printf '#include "ardour/svn_revision.h"\nnamespace ARDOUR { const char* svn_revision = \"${rev}\"; }\n' > libs/ardour/svn_revision.cc sed -e 's|^#!/usr/bin/perl.*$|#!${perl}/bin/perl|g' -i tools/fmt-bindings sed -e 's|^#!/usr/bin/env.*$|#!${perl}/bin/perl|g' -i tools/*.pl + sed 's|/usr/include/libintl.h|${glibc}/include/libintl.h|' -i wscript ''; configurePhase = "python waf configure --prefix=$out"; From 691147f4524c6641139ef8f4d5f07fa4b2378395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 18:27:12 +0100 Subject: [PATCH 127/572] agg: fix for new automake --- pkgs/development/libraries/agg/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/agg/default.nix b/pkgs/development/libraries/agg/default.nix index 9ef13735b08..8c24ae6fdbe 100644 --- a/pkgs/development/libraries/agg/default.nix +++ b/pkgs/development/libraries/agg/default.nix @@ -8,7 +8,12 @@ stdenv.mkDerivation rec { sha256 = "07wii4i824vy9qsvjsgqxppgqmfdxq0xa87i5yk53fijriadq7mb"; }; buildInputs = [ autoconf automake libtool pkgconfig freetype SDL libX11 ]; - preConfigure = "sh autogen.sh"; + + # fix build with new automake, from Gentoo ebuild + preConfigure = '' + sed -i '/^AM_C_PROTOTYPES/d' configure.in + sh autogen.sh + ''; configureFlags = "--x-includes=${libX11}/include --x-libraries=${libX11}/lib"; From 80ccdf1a23881d0a46a143592ee58b24b2d22614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 19:15:14 +0100 Subject: [PATCH 128/572] net_snmp: fix build and a minor update --- pkgs/servers/monitoring/net-snmp/default.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/monitoring/net-snmp/default.nix b/pkgs/servers/monitoring/net-snmp/default.nix index 190c48ba56e..a9d1578495a 100644 --- a/pkgs/servers/monitoring/net-snmp/default.nix +++ b/pkgs/servers/monitoring/net-snmp/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, file, openssl, perl }: stdenv.mkDerivation rec { - name = "net-snmp-5.7.1"; + name = "net-snmp-5.7.2"; src = fetchurl { url = "mirror://sourceforge/net-snmp/${name}.tar.gz"; - sha256 = "07qqdgs3flraqccwry4a4x23jcg6vfi0rqj7clsibdv51ijwjwbw"; + sha256 = "05mqrv22c65405d6v91cqf4hvczkkvvyy5lsxw8h8g0zrjs33v89"; }; preConfigure = @@ -13,6 +13,9 @@ stdenv.mkDerivation rec { perlversion=$(perl -e 'use Config; print $Config{version};') perlarchname=$(perl -e 'use Config; print $Config{archname};') installFlags="INSTALLSITEARCH=$out/lib/perl5/site_perl/$perlversion/$perlarchname INSTALLSITEMAN3DIR=$out/share/man/man3" + + # http://comments.gmane.org/gmane.network.net-snmp.user/32434 + substituteInPlace "man/Makefile.in" --replace 'grep -vE' '@EGREP@ -v' ''; configureFlags = From 06cd4df3b1dbd404f0008029c4c1195f5855a65e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 19:16:42 +0100 Subject: [PATCH 129/572] goffice_0_8: finally fix --- pkgs/development/libraries/goffice/default.nix | 3 +++ pkgs/development/libraries/goffice/pcre_info.patch | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/goffice/pcre_info.patch diff --git a/pkgs/development/libraries/goffice/default.nix b/pkgs/development/libraries/goffice/default.nix index 1eaa1baf86d..14da5f3468b 100644 --- a/pkgs/development/libraries/goffice/default.nix +++ b/pkgs/development/libraries/goffice/default.nix @@ -10,6 +10,9 @@ stdenv.mkDerivation rec { sha256 = "165070beb67b84580afe80a8a100b674a81d553ab791acd72ac0c655f4fadb15"; }; + # fix linking error: undefined reference to pcre_info + patches = [ ./pcre_info.patch ]; # inspired by https://bugs.php.net/bug.php?id=60986 + buildInputs = [ pkgconfig libglade bzip2 libart intltool gettext gconf libgnomeui pcre diff --git a/pkgs/development/libraries/goffice/pcre_info.patch b/pkgs/development/libraries/goffice/pcre_info.patch new file mode 100644 index 00000000000..cd4ef3c9fed --- /dev/null +++ b/pkgs/development/libraries/goffice/pcre_info.patch @@ -0,0 +1,13 @@ +diff --git a/goffice/utils/regutf8.c b/goffice/utils/regutf8.c +index bc4aae4..3adb696 100644 +--- a/goffice/utils/regutf8.c ++++ b/goffice/utils/regutf8.c +@@ -155,7 +155,7 @@ go_regcomp (GORegexp *gor, const char *pat, int cflags) + default: return GO_REG_BADPAT; + } + } else { +- gor->re_nsub = pcre_info (r, NULL, NULL); ++ gor->re_nsub = pcre_fullinfo (r, NULL, NULL, NULL); + gor->nosub = (cflags & GO_REG_NOSUB) != 0; + return 0; + } From c173ddecbbfe6cb0677273467800d6483e735bce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 19:23:58 +0100 Subject: [PATCH 130/572] kdePackages.libalkimia: fix build --- pkgs/development/libraries/libalkimia/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libalkimia/default.nix b/pkgs/development/libraries/libalkimia/default.nix index 7a37c61c495..d372c5cf8fc 100644 --- a/pkgs/development/libraries/libalkimia/default.nix +++ b/pkgs/development/libraries/libalkimia/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, kdelibs, gmpxx }: +{ stdenv, fetchurl, pkgconfig, kdelibs, gmpxx }: stdenv.mkDerivation rec { name = "libalkimia-4.3.2"; @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { }; patchPhase = "sed -e 's/KDE4_DATA_DIR/DATA_INSTALL_DIR/' -i CMakeLists.txt"; - buildInputs = [ kdelibs gmpxx ]; + buildInputs = [ pkgconfig kdelibs gmpxx ]; meta = { maintainers = [ stdenv.lib.maintainers.urkud ]; From 0eeae100fd039067347f814dde29a351d13799e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 19:29:02 +0100 Subject: [PATCH 131/572] wv2: update and fix --- pkgs/tools/misc/wv2/default.nix | 21 +++++++++++++++------ pkgs/tools/misc/wv2/fix-include.patch | 12 ++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 pkgs/tools/misc/wv2/fix-include.patch diff --git a/pkgs/tools/misc/wv2/default.nix b/pkgs/tools/misc/wv2/default.nix index 7a30d011be2..a3938c1af4c 100644 --- a/pkgs/tools/misc/wv2/default.nix +++ b/pkgs/tools/misc/wv2/default.nix @@ -1,10 +1,19 @@ -{stdenv, fetchurl, pkgconfig, libgsf, glib, libxml2}: +{ stdenv, fetchurl, pkgconfig, cmake, libgsf, glib, libxml2 }: -stdenv.mkDerivation { - name = "wv2-0.3.1"; +stdenv.mkDerivation rec { + name = "wv2-0.4.2"; src = fetchurl { - url = mirror://sourceforge/wvware/wv2-0.3.1.tar.bz2; - sha256 = "896ff8ec59e280e8cb1ef9a953b364845dd65de1cdf8e4ed8a7e045a3f81c546"; + url = "mirror://sourceforge/wvware/${name}.tar.bz2"; + sha256 = "1p1qxr8z5bsiq8pvlina3c8c1vjcb5d96bs3zz4jj3nb20wnsawz"; + }; + + patches = [ ./fix-include.patch ]; + + buildInputs = [ pkgconfig cmake libgsf glib libxml2 ]; + + meta = { + description = "Excellent MS Word filter lib, used in most Office suites"; + license = "LGPLv2"; + homepage = http://wvware.sourceforge.net; }; - buildInputs = [ pkgconfig libgsf glib libxml2 ]; } diff --git a/pkgs/tools/misc/wv2/fix-include.patch b/pkgs/tools/misc/wv2/fix-include.patch new file mode 100644 index 00000000000..df34d24af94 --- /dev/null +++ b/pkgs/tools/misc/wv2/fix-include.patch @@ -0,0 +1,12 @@ +From: http://sourceforge.net/tracker/?func=detail&aid=3544851&group_id=10501&atid=110501 +--- a/src/olestream.h ++++ b/src/olestream.h +@@ -23,7 +23,7 @@ + #include "global.h" // U8,... typedefs + #include + +-#include // GSeekType ++#include // GSeekType + + namespace wvWare { + From 5e8747300eea9bca1b8bae945fe61e2918a7f560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 20:09:11 +0100 Subject: [PATCH 132/572] openscenegraph: update and fix --- .../libraries/openscenegraph/default.nix | 16 +++++++++------- .../libraries/openscenegraph/xine.patch | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 pkgs/development/libraries/openscenegraph/xine.patch diff --git a/pkgs/development/libraries/openscenegraph/default.nix b/pkgs/development/libraries/openscenegraph/default.nix index 08e08b876b6..01993fa1cd8 100644 --- a/pkgs/development/libraries/openscenegraph/default.nix +++ b/pkgs/development/libraries/openscenegraph/default.nix @@ -2,22 +2,22 @@ x@{builderDefsPackage , cmake, giflib, libjpeg, libtiff, lib3ds, freetype, libpng , coin3d, jasper, gdal, xproto, libX11, libXmu, freeglut, mesa , doxygen, ffmpeg, xineLib, unzip, zlib, openal, libxml2 - , curl + , curl, a52dec, faad2, gdk_pixbuf , ...}: builderDefsPackage (a : -let - helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ +let + helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ []; buildInputs = map (n: builtins.getAttr n x) (builtins.attrNames (builtins.removeAttrs x helperArgNames)); sourceInfo = rec { baseName="OpenSceneGraph"; - version="2.8.3"; + version="3.0.1"; name="${baseName}-${version}"; url="http://www.openscenegraph.org/downloads/stable_releases/${name}/source/${name}.zip"; - hash="0phihxs7zgir9n1z54xsrsha8wa0xll7xl6lvqvrrczf0bm80yrs"; + hash="15l23mxv93mw6wkc90x52jhwxh7r3d7lahwdsv3jfnha9dbh648c"; }; in rec { @@ -30,7 +30,9 @@ rec { inherit buildInputs; /* doConfigure should be removed if not needed */ - phaseNames = ["setVars" "addInputs" "doUnpack" "doCmake" "doMakeInstall"]; + phaseNames = ["setVars" "addInputs" "doUnpack" "doPatch" "doCmake" "doMakeInstall"]; + + patches = [ ./xine.patch ]; # http://forum.openscenegraph.org/viewtopic.php?t=9659 cmakeFlags = [ "-D MATH_LIBRARY=" @@ -39,7 +41,7 @@ rec { setVars = a.noDepEntry '' export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -D__STDC_CONSTANT_MACROS=1" ''; - + meta = { description = "A 3D graphics toolkit"; maintainers = with a.lib.maintainers; diff --git a/pkgs/development/libraries/openscenegraph/xine.patch b/pkgs/development/libraries/openscenegraph/xine.patch new file mode 100644 index 00000000000..8fbc8ceec52 --- /dev/null +++ b/pkgs/development/libraries/openscenegraph/xine.patch @@ -0,0 +1,18 @@ +--- OpenSceneGraph-3.0.1.orig/src/osgPlugins/xine/video_out_rgb.c ++++ OpenSceneGraph-3.0.1/src/osgPlugins/xine/video_out_rgb.c +@@ -2769,8 +2769,14 @@ init_class(xine_t* xine, void* vo_visual + clear(rgb_class, sizeof(rgbout_class_t)); + + rgb_class->driver_class.open_plugin = open_plugin; ++#if XINE_MAJOR_VERSION < 1 || (XINE_MAJOR_VERSION == 1 && XINE_MINOR_VERSION < 2) + rgb_class->driver_class.get_identifier = get_identifier; + rgb_class->driver_class.get_description = get_description; ++#else ++ rgb_class->driver_class.identifier = get_identifier(NULL); ++ rgb_class->driver_class.description = get_description(NULL); ++#endif ++ + rgb_class->driver_class.dispose = dispose_class; + + return(rgb_class); + From 871c9ff726792cf093f72aec9ffd35d91f66a1d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 20:10:15 +0100 Subject: [PATCH 133/572] simgear: fix via update --- .../development/libraries/simgear/default.nix | 22 +++++++++---------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkgs/development/libraries/simgear/default.nix b/pkgs/development/libraries/simgear/default.nix index 961d1475333..de8e1d1df1d 100644 --- a/pkgs/development/libraries/simgear/default.nix +++ b/pkgs/development/libraries/simgear/default.nix @@ -1,23 +1,23 @@ x@{builderDefsPackage , plib, freeglut, xproto, libX11, libXext, xextproto, libXi , inputproto , libICE, libSM, libXt, libXmu, mesa, boost, zlib, libjpeg , freealut - , openscenegraph, openal + , openscenegraph, openal, expat, cmake , ...}: builderDefsPackage -(a : -let - helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ +(a : +let + helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ []; buildInputs = map (n: builtins.getAttr n x) (builtins.attrNames (builtins.removeAttrs x helperArgNames)); sourceInfo = rec { - baseName="SimGear"; - version="2.0.0"; + baseName="simgear"; + version="2.10.0"; name="${baseName}-${version}"; - extension="tar.gz"; - url="ftp://ftp.goflyflightgear.com/simgear/Source/${name}.${extension}"; - hash="08fia5rjrlvw45i3v09fn90vhdhb54wjl6kn3d8vpspxmsw4fn55"; + extension="tar.bz2"; + url="http://mirrors.ibiblio.org/pub/mirrors/simgear/ftp/Source/${name}.${extension}"; + hash="0pb148hb35p1c5iz0kpiclmswjl9bax9xfm087ldpxsqg9a0sb2q"; }; in rec { @@ -30,8 +30,8 @@ rec { inherit buildInputs; /* doConfigure should be removed if not needed */ - phaseNames = ["doConfigure" "doMakeInstall"]; - + phaseNames = [ "doCmake" "doMakeInstall" ]; + meta = { description = "Simulation construction toolkit"; maintainers = with a.lib.maintainers; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 10926f299d3..c7fe618bce6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4848,7 +4848,7 @@ let silgraphite = callPackage ../development/libraries/silgraphite {}; - simgear = callPackage ../development/libraries/simgear {}; + simgear = callPackage ../development/libraries/simgear { }; sfml_git = callPackage ../development/libraries/sfml { }; From 82a0df8bad1c25525034a59d03189ba850cb52ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 20:32:12 +0100 Subject: [PATCH 134/572] flightgear: fix build via update; but no testing, hope it works --- pkgs/games/flightgear/default.nix | 20 ++++++++++---------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkgs/games/flightgear/default.nix b/pkgs/games/flightgear/default.nix index fe90156d84c..fa0bb9bb4f7 100644 --- a/pkgs/games/flightgear/default.nix +++ b/pkgs/games/flightgear/default.nix @@ -1,23 +1,23 @@ x@{builderDefsPackage , freeglut, freealut, mesa, libICE, libjpeg, openal, openscenegraph, plib , libSM, libunwind, libX11, xproto, libXext, xextproto, libXi, inputproto - , libXmu, libXt, simgear, zlib, boost + , libXmu, libXt, simgear, zlib, boost, cmake, libpng , ...}: builderDefsPackage -(a : -let - helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ +(a : +let + helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ []; buildInputs = map (n: builtins.getAttr n x) (builtins.attrNames (builtins.removeAttrs x helperArgNames)); sourceInfo = rec { - baseName="FlightGear"; - version="2.0.0"; + baseName="flightgear"; + version="2.10.0"; name="${baseName}-${version}"; - extension="tar.gz"; + extension="tar.bz2"; url="http://ftp.linux.kiev.ua/pub/fgfs/Source/${name}.${extension}"; - hash="17h7ns955xkd0cakfk22aym0id65rd8kylcamkmycbgnnhs4b1wg"; + hash="0pq5nwyxwp8ar5rr0jh8p04bv0i9i841m374jwd748csnsn28zh6"; }; in rec { @@ -35,14 +35,14 @@ rec { inherit buildInputs; /* doConfigure should be removed if not needed */ - phaseNames = ["doConfigure" "doMakeInstall" "deployData"]; + phaseNames = ["doCmake" "doMakeInstall" "deployData"]; deployData = a.fullDepEntry '' mkdir -p "$out/share/FlightGear" cd "$out/share/FlightGear" tar xvf ${datasrc} '' ["minInit" "defEnsureDir"]; - + meta = { description = "A flight simulator"; maintainers = with a.lib.maintainers; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c7fe618bce6..290b841553e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8122,7 +8122,7 @@ let libpng = libpng12; }; - flightgear = callPackage ../games/flightgear {}; + flightgear = callPackage ../games/flightgear { }; freeciv = callPackage ../games/freeciv { }; From e469bc503ef7cf9c8f27ba81aa8f9e3df2db2990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 20:32:54 +0100 Subject: [PATCH 135/572] kdePackages.partitionManager: fix via update to Gentoo version --- pkgs/tools/misc/partition-manager/default.nix | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/pkgs/tools/misc/partition-manager/default.nix b/pkgs/tools/misc/partition-manager/default.nix index 46be78965fb..19a0df26169 100644 --- a/pkgs/tools/misc/partition-manager/default.nix +++ b/pkgs/tools/misc/partition-manager/default.nix @@ -1,16 +1,21 @@ -{ stdenv, fetchurl, cmake, gettext, parted, libuuid, qt4, kdelibs, kde_baseapps, - automoc4, phonon, perl }: +{ stdenv, fetchurl, pkgconfig, cmake, gettext, automoc4, perl +, parted, libuuid, qt4, kdelibs, kde_baseapps, phonon, libatasmart +}: -stdenv.mkDerivation { - name = "partitionmanager-1.0.0"; +stdenv.mkDerivation rec { + name = "partitionmanager-1.0.3_p20120804"; src = fetchurl { - url = http://www.kde-apps.org/CONTENT/content-files/89595-partitionmanager-1.0.0.tar.bz2; - sha256 = "03ibn4vns7pa0ygkp2jh6zcdy106as5cc7p6rv1f5c15wxx0zsk1"; + #url = "mirror://sourceforge/partitionman/${name}.tar.bz2"; + # the upstream version is old and doesn't build + url = "http://dev.gentoo.org/~kensington/distfiles/${name}.tar.bz2"; + sha256 = "1j6zpgj8xs98alzxvcibwch9yj8jsx0s7y864gbdx280jmj8c1np"; }; - buildInputs = - [ cmake gettext parted libuuid qt4 kdelibs kde_baseapps automoc4 perl phonon ]; + buildInputs = [ + pkgconfig cmake gettext automoc4 perl + parted libuuid qt4 kdelibs kde_baseapps phonon libatasmart + ]; preConfigure = '' export VERBOSE=1 @@ -19,13 +24,13 @@ stdenv.mkDerivation { postInstall = '' set -x - rpath=`patchelf --print-rpath $out/bin/partitionmanager-bin`:${qt4}/lib + rpath=`patchelf --print-rpath $out/bin/partitionmanager-bin`:${qt4}/lib for p in $out/bin/partitionmanager-bin; do patchelf --set-rpath $rpath $p done ''; - meta = { + meta = { description = "Utility program to help you manage the disk devices"; homepage = http://www.kde-apps.org/content/show.php/KDE+Partition+Manager?content=89595; # ? license = "GPL"; From ce9500ea1d4e0cb4e38916306ffc29fc92570ebf Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 23 Feb 2013 20:44:13 +0100 Subject: [PATCH 136/572] grip: update to version 3.3.1 --- pkgs/applications/misc/grip/default.nix | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/applications/misc/grip/default.nix b/pkgs/applications/misc/grip/default.nix index 1eb9ee1186f..0c2b957bc7c 100644 --- a/pkgs/applications/misc/grip/default.nix +++ b/pkgs/applications/misc/grip/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, gtk, glib, pkgconfig, libgnome, libgnomeui, vte , curl, cdparanoia, libid3tag, ncurses, libtool }: -stdenv.mkDerivation { - name = "grip-3.2.0"; +stdenv.mkDerivation rec { + name = "grip-3.3.1"; src = fetchurl { - url = http://prdownloads.sourceforge.net/grip/grip-3.2.0.tar.gz; - sha256 = "1jh5x35rq15n8ivlp9wbdx8x9mj6agf5rfdv8sd6gai851zsclas"; + url = "mirror://sourceforge/grip/${name}.tar.gz"; + sha256 = "1zb6zpq7qmn6bflbgfwisyg3vrjr23yi1c1kqvwndl1f0shr8qyl"; }; buildInputs = [ gtk glib pkgconfig libgnome libgnomeui vte curl cdparanoia @@ -14,9 +14,10 @@ stdenv.mkDerivation { meta = { description = "GTK+-based audio CD player/ripper"; - homepage = http://nostatic.org/grip; + homepage = "http://nostatic.org/grip"; license = "GPLv2"; - maintainers = [ stdenv.lib.maintainers.marcweber ]; - #platforms = args.lib.platforms.linux; + + maintainers = [ stdenv.lib.maintainers.marcweber stdenv.lib.maintainers.simons ]; + platforms = stdenv.lib.platforms.linux; }; } From e02153a3c0940ddc278f13e7df82623931496649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 21:12:24 +0100 Subject: [PATCH 137/572] lash: fix for new gcc --- pkgs/applications/audio/lash/default.nix | 3 ++- pkgs/applications/audio/lash/gcc-47.patch | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 pkgs/applications/audio/lash/gcc-47.patch diff --git a/pkgs/applications/audio/lash/default.nix b/pkgs/applications/audio/lash/default.nix index 3bbc9e4277b..72087c76b05 100644 --- a/pkgs/applications/audio/lash/default.nix +++ b/pkgs/applications/audio/lash/default.nix @@ -12,7 +12,8 @@ stdenv.mkDerivation rec { sha256 = "05kc4brcx8mncai0rj2gz4s4bsrsy9q8xlnaddf75i0m8jl7snhh"; }; - patches = [ ./socket.patch ]; + # http://permalink.gmane.org/gmane.linux.redhat.fedora.extras.cvs/822346 + patches = [ ./socket.patch ./gcc-47.patch ]; buildInputs = [ alsaLib gtk jackaudio libuuid libxml2 makeWrapper pkgconfig readline ]; diff --git a/pkgs/applications/audio/lash/gcc-47.patch b/pkgs/applications/audio/lash/gcc-47.patch new file mode 100644 index 00000000000..774add431fa --- /dev/null +++ b/pkgs/applications/audio/lash/gcc-47.patch @@ -0,0 +1,11 @@ +diff -rupN liblash/lash.c lash-0.5.4/liblash/lash.c +--- a/liblash/lash.c 2007-03-09 10:34:40.000000000 -0500 ++++ b/liblash/lash.c 2012-07-22 18:17:46.003963521 -0400 +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + #include From c9d3702c9742b08a99701c18048dea04192db23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 22:20:42 +0100 Subject: [PATCH 138/572] telepathy-related: fix via update Some updates were restricted by gstreamer being <1.0 --- .../telepathy/gabble/default.nix | 6 +++--- .../telepathy/haze/default.nix | 4 ++-- .../instant-messengers/telepathy/kde/0.4.0.nix | 16 ---------------- .../instant-messengers/telepathy/kde/0.5.3.nix | 16 ++++++++++++++++ .../instant-messengers/telepathy/kde/default.nix | 2 +- .../telepathy/logger/default.nix | 4 ++-- .../telepathy/mission-control/default.nix | 4 ++-- pkgs/development/libraries/farstream/default.nix | 4 ++-- pkgs/development/libraries/libnice/default.nix | 6 +++--- pkgs/development/libraries/qjson/default.nix | 4 ++-- .../libraries/telepathy/farstream/default.nix | 6 +++--- .../libraries/telepathy/glib/default.nix | 6 +++--- .../libraries/telepathy/qt/default.nix | 8 ++++---- 13 files changed, 43 insertions(+), 43 deletions(-) delete mode 100644 pkgs/applications/networking/instant-messengers/telepathy/kde/0.4.0.nix create mode 100644 pkgs/applications/networking/instant-messengers/telepathy/kde/0.5.3.nix diff --git a/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix b/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix index c7a0401f3ee..8863af25984 100644 --- a/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix +++ b/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix @@ -2,18 +2,18 @@ , sqlite, libsoup, libnice, gnutls }: stdenv.mkDerivation rec { - name = "telepathy-gabble-0.16.0"; + name = "telepathy-gabble-0.17.2"; src = fetchurl { url = "${meta.homepage}/releases/telepathy-gabble/${name}.tar.gz"; - sha256 = "0fk65f7q75z3wm5h4wad7g5sm2j6r8v2845b74ycl29br78ki2hf"; + sha256 = "137sslbgh0326lmwihcr2ybljgq9mzsx5wnciilpx884si22wpk8"; }; nativeBuildInputs = [pkgconfig libxslt]; buildInputs = [ libxml2 dbus_glib sqlite libsoup libnice telepathy_glib gnutls ]; configureFlags = "--with-ca-certificates=/etc/ca-bundle.crt"; - + meta = { homepage = http://telepathy.freedesktop.org; }; diff --git a/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix b/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix index c8c685196cd..b2fd13837d7 100644 --- a/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix +++ b/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "telepathy-haze"; - name = "${pname}-0.6.0"; + name = "${pname}-0.7.0"; src = fetchurl { url = "http://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz"; - sha256 = "1qrgmcr8ga6nvaz9hhn0mv0p7v799wsawrg3k5l791cgxx5carz2"; + sha256 = "1gaj8518ilm3gnzqf3lmiqgnwkay8wfbsqngcz15whzji8sl608b"; }; buildInputs = [ glib telepathy_glib dbus_glib pidgin ]; diff --git a/pkgs/applications/networking/instant-messengers/telepathy/kde/0.4.0.nix b/pkgs/applications/networking/instant-messengers/telepathy/kde/0.4.0.nix deleted file mode 100644 index aadeb3e2a67..00000000000 --- a/pkgs/applications/networking/instant-messengers/telepathy/kde/0.4.0.nix +++ /dev/null @@ -1,16 +0,0 @@ -[ -{name="ktp-accounts-kcm";key="accounts_kcm";sha256="1a312cfm1i8ipqp0r09zfhlk7vacp006pbhwwvyf0sgracizr0cp";} -{name="ktp-approver";key="approver";sha256="0wfpwlk5f3n37xl619jzjxmgrq81qnr9kg9m955zbcad2jsx3z35";} -{name="ktp-auth-handler";key="auth_handler";sha256="1q5jjj3np3kg7py28jb74q8lpi6camw7907950igpnwzbzmacxwa";} -{name="ktp-call-ui";key="call_ui";sha256="08k59q0gf6fq0mmz72akiqkldqy6grw1gs7jz44gzmr82jvaqjb3";} -{name="ktp-common-internals";key="common_internals";sha256="1cmil7wp6rgqzl0bciphqmvdzipm856c45kx2mzrk6n1vnl9l500";} -{name="ktp-contact-applet";key="contact_applet";sha256="1j42yqq06bkpfb4jgm88qqbwnz9538ys5aghyfg147jr50h9pk8k";} -{name="ktp-contact-list";key="contact_list";sha256="1ndpr2z99clmy8f7l8l6ws7bljmmqvfrb5f0nrym91lyvcdz7sb2";} -{name="ktp-contact-runner";key="contact_runner";sha256="1v8mcp8q1cfmxdg65qqh159q9pynz3pc3y0ycr6hn1nrgxncs48k";} -{name="ktp-filetransfer-handler";key="filetransfer_handler";sha256="0dj2if34wxajwylgfxwd5chvxk63lxmsq52sc039dsj9p174cp3y";} -{name="ktp-kded-integration-module";key="kded_integration_module";sha256="0p873h6cjdinfinfz1cggyw611v2gllmkvzczszxnl8q2hcprx96";} -{name="ktp-presence-applet";key="presence_applet";sha256="1y8yhbbjp9qgycn93lqd6ss7jln1hpxa0dnqgirijfjn15c20nfl";} -{name="ktp-send-file";key="send_file";sha256="0sacvda2xs5g7w2xca9p6z61f2w69sgw0g3sj2fazrsm0x7a0z0d";} -{name="ktp-text-ui";key="text_ui";sha256="1xsslwaisk90wa45rgps3500wl1fbxq4qp6njljf4qbysyw4wfdb";} -{name="telepathy-logger-qt";key="telepathy_logger_qt";sha256="1398iyb72grhwwi0idxdwj1qdi2s02cp2wvjv72wvv3vyfwb51kn";} -] diff --git a/pkgs/applications/networking/instant-messengers/telepathy/kde/0.5.3.nix b/pkgs/applications/networking/instant-messengers/telepathy/kde/0.5.3.nix new file mode 100644 index 00000000000..eb0543aa5b0 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/telepathy/kde/0.5.3.nix @@ -0,0 +1,16 @@ +[ +{name="ktp-accounts-kcm";key="accounts_kcm";sha256="0nmjwbm7ycy5awwlx359889am7qbvs64gk0bd1800a9jl2lhvw56";} +{name="ktp-approver";key="approver";sha256="0n0a2abbz7xvzp3p4l6khgbhbjylppvskcyma440fmfv3j3jdc12";} +{name="ktp-auth-handler";key="auth_handler";sha256="11vfim3ck60cy22x84bz6cw0267kf884qa00nbm033kpwjbx4zr6";} +{name="ktp-call-ui";key="call_ui";sha256="0gmppn4f5a9yd3pnzga3sdwz37c7qpmx586914r64jbkii196xg4";} +{name="ktp-common-internals";key="common_internals";sha256="1lkmaym8bv5ijy7sksbihr63qify9b9vrhrikck6q23n8sk112n9";} +{name="ktp-contact-applet";key="contact_applet";sha256="0gsf1m276mhvysy30qqw1h7ssdipyyjh43jbf2lx4bb934by9wby";} +{name="ktp-contact-list";key="contact_list";sha256="19nlzs650lwmzr30lrviv0qw1xd061pdrk17cm512ldvzibc70ab";} +{name="ktp-contact-runner";key="contact_runner";sha256="0x3zkk11x9npx30w330s8n49ybqlyhgcndvqizg4sbj1lfbrmhn1";} +{name="ktp-filetransfer-handler";key="filetransfer_handler";sha256="0w90hsypzgakqx96xkf0wk2qqns6v5ji814gvc3rf9ajcwh0d024";} +{name="ktp-kded-integration-module";key="kded_integration_module";sha256="0sz0d1yfj35q5r1gc4m6v2c8r0cik2vzvkqfx9pqy8g97d7q1nmj";} +{name="ktp-presence-applet";key="presence_applet";sha256="081jas1vzh6nwj3w60bw3w95gpdbi74pdi9rdxv0wvra5w76s4i6";} +{name="ktp-send-file";key="send_file";sha256="19nlm4sfa0m0y856nzs3hrncbznc35zwbsxavssd9wrbb8p9cns6";} +{name="ktp-text-ui";key="text_ui";sha256="0g8114adqyvzsdm8ldhidf2gyxkv0bnky71zg70gmhkdmzcfssyn";} +{name="telepathy-logger-qt";key="telepathy_logger_qt";sha256="17bfkbxc7gfcspmjd5w6vn9a75f36qinj7illqafb7k0jqqz2nq6";} +] diff --git a/pkgs/applications/networking/instant-messengers/telepathy/kde/default.nix b/pkgs/applications/networking/instant-messengers/telepathy/kde/default.nix index 5c1c399ab49..d41db2e4498 100644 --- a/pkgs/applications/networking/instant-messengers/telepathy/kde/default.nix +++ b/pkgs/applications/networking/instant-messengers/telepathy/kde/default.nix @@ -3,7 +3,7 @@ let pkgconfig = pkgconfigUpstream; - version = "0.4.0"; + version = "0.5.3"; manifest = import (./. + "/${version}.nix"); overrides = { diff --git a/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix b/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix index 4dacdb9f1ed..527642348d2 100644 --- a/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix +++ b/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation rec { project = "telepathy-logger"; - name = "${project}-0.4.0"; + name = "${project}-0.8.0"; src = fetchurl { url = "http://telepathy.freedesktop.org/releases/${project}/${name}.tar.bz2"; - sha256 = "1rb58ipz56c9bac8b31md5gk1fw7jim8x9dx3cm5gmxg2q3apd86"; + sha256 = "18i00l8lnp5dghqmgmpxnn0is2a20pkisxy0sb78hnd2dz0z6xnl"; }; buildInputs = [ dbus_glib libxml2 sqlite telepathy_glib pkgconfig intltool ]; diff --git a/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix b/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix index 1b2081c4dd0..56abf34e1b3 100644 --- a/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix +++ b/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, pkgconfig, telepathy_glib, libxslt }: stdenv.mkDerivation rec { - name = "${pname}-5.12.0"; + name = "${pname}-5.14.0"; pname = "telepathy-mission-control"; src = fetchurl { url = "http://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz"; - sha256 = "0xsycjk2l19h026adqms8ik7c2xj9j9rba76znfh46ryaijyn2k6"; + sha256 = "0c4asjgk7pk39i8njf0q1df0mhisif83lq716ln6r0wja9zh9q2q"; }; buildInputs = [ telepathy_glib ]; diff --git a/pkgs/development/libraries/farstream/default.nix b/pkgs/development/libraries/farstream/default.nix index 87764483f47..7d84cf88993 100644 --- a/pkgs/development/libraries/farstream/default.nix +++ b/pkgs/development/libraries/farstream/default.nix @@ -10,11 +10,11 @@ stdenv.mkDerivation rec { sha256 = "1nbkbvq959f70zhr03fwdibhs0sbf1k7zmbz9w99vda7gdcl0nps"; }; - buildInputs = [ libnice python pygobject gupnp_igd ]; + buildInputs = [ libnice python pygobject gupnp_igd libnice ]; nativeBuildInputs = [ pkgconfig ]; - propagatedBuildInputs = [ gstreamer gst_plugins_base gst_python + propagatedBuildInputs = [ gstreamer gst_plugins_base gst_python gst_plugins_good gst_plugins_bad gst_ffmpeg ]; diff --git a/pkgs/development/libraries/libnice/default.nix b/pkgs/development/libraries/libnice/default.nix index 5a3cb9d041b..4ccb7d4df8b 100644 --- a/pkgs/development/libraries/libnice/default.nix +++ b/pkgs/development/libraries/libnice/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, pkgconfig, glib, gupnp_igd, gstreamer, gst_plugins_base }: stdenv.mkDerivation rec { - name = "libnice-0.1.1"; - + name = "libnice-0.1.4"; + src = fetchurl { url = "http://nice.freedesktop.org/releases/${name}.tar.gz"; - sha256 = "0jcpb953jn7c3ng2vbkljybzh63x6mg4m6rjxj1s1iccm3fi6qki"; + sha256 = "0mxzr3y91hkjxdz1mzhxwi59la86hw2rzmd3y9c32801kkg1gra4"; }; buildInputs = [ pkgconfig glib gupnp_igd gstreamer gst_plugins_base ]; diff --git a/pkgs/development/libraries/qjson/default.nix b/pkgs/development/libraries/qjson/default.nix index af960c1b993..e69ae5f98f7 100644 --- a/pkgs/development/libraries/qjson/default.nix +++ b/pkgs/development/libraries/qjson/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, cmake, qt4 }: stdenv.mkDerivation rec { - name = "qjson-0.7.1"; + name = "qjson-0.8.1"; src = fetchurl { url = "mirror://sourceforge/qjson/${name}.tar.bz2"; - sha256 = "155r7nypgnsvjc6w3q51zmjchpqxi4c3azad9cf1fip8bws993iv"; + sha256 = "1n8lr2ph08yhcgimf4q1pnkd4z15v895bsf3m68ljz14aswvakfd"; }; buildInputs = [ cmake qt4 ]; diff --git a/pkgs/development/libraries/telepathy/farstream/default.nix b/pkgs/development/libraries/telepathy/farstream/default.nix index b6b96a2439f..a6a624c0a87 100644 --- a/pkgs/development/libraries/telepathy/farstream/default.nix +++ b/pkgs/development/libraries/telepathy/farstream/default.nix @@ -2,16 +2,16 @@ , pkgconfig, libxslt, python, gstreamer, gst_python, pygobject }: stdenv.mkDerivation rec { - name = "${pname}-0.2.3"; + name = "${pname}-0.4.0"; pname = "telepathy-farstream"; src = fetchurl { url = "http://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz"; - sha256 = "1a163gk9y3ckabm4a43lxc5a7j2s42hykbwr6r7b5mlfyqq8myx1"; + sha256 = "13mllgfx4b1hh1vpzq8lk5qfr3ivkkkmwbxgi6d47avgk746kznd"; }; buildInputs = [ gst_plugins_base gst_python pygobject ]; - propagatedBuildInputs = [ dbus_glib farstream telepathy_glib gstreamer ]; + propagatedBuildInputs = [ dbus_glib telepathy_glib gstreamer farstream ]; nativeBuildInputs = [ pkgconfig python libxslt]; } diff --git a/pkgs/development/libraries/telepathy/glib/default.nix b/pkgs/development/libraries/telepathy/glib/default.nix index b31338a6595..46aba67702d 100644 --- a/pkgs/development/libraries/telepathy/glib/default.nix +++ b/pkgs/development/libraries/telepathy/glib/default.nix @@ -1,15 +1,15 @@ { stdenv, fetchurl, dbus_glib, glib, python, pkgconfig, libxslt }: stdenv.mkDerivation rec { - name = "telepathy-glib-0.18.1"; + name = "telepathy-glib-0.20.1"; src = fetchurl { url = "${meta.homepage}/releases/telepathy-glib/${name}.tar.gz"; - sha256 = "0vac5wk9rpaniqxwa50szcc5ql779ks37sy4z7fj4k73i5k2af1p"; + sha256 = "1dk1s977zv8c935jsiv7ll51a52rlwd7a6f8v7z8klzvc4zk9801"; }; propagatedBuildInputs = [dbus_glib glib python]; - + buildInputs = [pkgconfig libxslt]; meta = { diff --git a/pkgs/development/libraries/telepathy/qt/default.nix b/pkgs/development/libraries/telepathy/qt/default.nix index a4c90cd1c61..b535961357b 100644 --- a/pkgs/development/libraries/telepathy/qt/default.nix +++ b/pkgs/development/libraries/telepathy/qt/default.nix @@ -1,16 +1,16 @@ { stdenv, fetchurl, cmake, qt4, pkgconfig, python, libxslt, dbus_glib -, telepathy_farstream, telepathy_glib }: +, telepathy_farstream, telepathy_glib, pythonDBus }: stdenv.mkDerivation rec { - name = "telepathy-qt-0.9.1"; + name = "telepathy-qt-0.9.3"; src = fetchurl { url = "http://telepathy.freedesktop.org/releases/telepathy-qt/${name}.tar.gz"; - sha256 = "0rwyxjk6646r43mvsg01q7rfsah0ni05fa8gxzlx1zhj76db95yh"; + sha256 = "1yabyhsikw828ns7cf6hvzbxdxh53na1ck0q7qsav1lvlyz5gzy0"; }; nativeBuildInputs = [ cmake pkgconfig python libxslt ]; - propagatedBuildInputs = [ qt4 dbus_glib telepathy_farstream telepathy_glib ]; + propagatedBuildInputs = [ qt4 dbus_glib telepathy_farstream telepathy_glib pythonDBus ]; preBuild = '' NIX_CFLAGS_COMPILE+=" `pkg-config --cflags dbus-glib-1`" ''; From 4768a0cea6b267a001bc29eb1f19c82f077a6f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 23:19:35 +0100 Subject: [PATCH 139/572] netboot: change to a fixed version, fix build --- pkgs/tools/networking/netboot/default.nix | 35 +++++++---------------- 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/pkgs/tools/networking/netboot/default.nix b/pkgs/tools/networking/netboot/default.nix index 684507a1d2e..ec49770d269 100644 --- a/pkgs/tools/networking/netboot/default.nix +++ b/pkgs/tools/networking/netboot/default.nix @@ -1,46 +1,33 @@ x@{builderDefsPackage - , fetchgit, ...}: + , fetchurl, yacc, bison, ...}: builderDefsPackage -(a : -let - helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ - ["fetchgit"]; +(a : +let + helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ + []; buildInputs = map (n: builtins.getAttr n x) (builtins.attrNames (builtins.removeAttrs x helperArgNames)); sourceInfo = rec { - version="git-head-${rev}"; + version="0.10.2"; baseName="netboot"; - rev="19a955cd87b399a5b56"; - name="${baseName}-git-head"; - url="git://github.com/ITikhonov/netboot.git"; - hash="7610c734dc46183439c161d327e7ef6a3d5bc07b5173850b92f71ec047b109d6"; + name="${baseName}-${version}"; + url="mirror://sourceforge/netboot/${name}.tar.gz"; + hash="09w09bvwgb0xzn8hjz5rhi3aibysdadbg693ahn8rylnqfq4hwg0"; }; in rec { - srcDrv = a.fetchgit { + src = a.fetchurl { url = sourceInfo.url; sha256 = sourceInfo.hash; - rev = sourceInfo.rev; }; - src=srcDrv + "/"; - inherit (sourceInfo) name version; inherit buildInputs; /* doConfigure should be removed if not needed */ - phaseNames = ["doBuild" "doDeploy"]; + phaseNames = ["doUnpack" "doConfigure" "doMakeInstall"]; - doBuild = a.fullDepEntry '' - gcc netboot.c -o netboot - '' ["doUnpack" "addInputs"]; - - doDeploy = a.fullDepEntry '' - mkdir -p "$out/bin" - cp netboot "$out/bin" - '' ["defEnsureDir" "minInit"]; - meta = { description = "Mini PXE server"; maintainers = with a.lib.maintainers; From 25d00bf76509415e72ca425a0b1a921c92a9d64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 23:49:48 +0100 Subject: [PATCH 140/572] oprofile: fix via minor update --- pkgs/development/tools/profiling/oprofile/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/profiling/oprofile/default.nix b/pkgs/development/tools/profiling/oprofile/default.nix index 4e4bcd3f9b6..af83765c7a2 100644 --- a/pkgs/development/tools/profiling/oprofile/default.nix +++ b/pkgs/development/tools/profiling/oprofile/default.nix @@ -6,11 +6,11 @@ assert withGUI -> qt4 != null; stdenv.mkDerivation rec { - name = "oprofile-0.9.7"; + name = "oprofile-0.9.8"; src = fetchurl { url = "mirror://sourceforge/oprofile/${name}.tar.gz"; - sha256 = "09ymfgcvp6372xnxdbq664ba8f4nzz4cxlya7wi8s1gabmym0nyb"; + sha256 = "1g31lwgpacql6w5z1z2f31pgwzn14rgsbh7kmmdmsgm2l47r0idb"; }; patchPhase = '' @@ -23,8 +23,7 @@ stdenv.mkDerivation rec { buildInputs = [ binutils zlib popt makeWrapper gawk which gnugrep pkgconfig ] ++ stdenv.lib.optionals withGUI [ qt4 ]; - configureFlags = - [ "--with-kernel-support" + configureFlags = [ "--disable-shared" # needed because only the static libbfd is available ] ++ stdenv.lib.optional withGUI "--with-qt-dir=${qt4} --enable-gui=qt4"; From df0e2bbf4de28b728c7959cf34ca9625fb864aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 00:14:58 +0100 Subject: [PATCH 141/572] gtk-sharp-2: fix for new glib --- pkgs/development/libraries/gtk-sharp-2/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/development/libraries/gtk-sharp-2/default.nix b/pkgs/development/libraries/gtk-sharp-2/default.nix index 7ffc918f678..9baac518ff7 100644 --- a/pkgs/development/libraries/gtk-sharp-2/default.nix +++ b/pkgs/development/libraries/gtk-sharp-2/default.nix @@ -26,6 +26,13 @@ stdenv.mkDerivation { # patches = [ ./dllmap-glue.patch ]; + # patch bad usage of glib, which wasn't tolerated anymore + prePatch = '' + for f in glib/glue/{thread,list,slist}.c; do + sed -i 's,#include ,#include ,g' "$f" + done + ''; + buildInputs = [ pkgconfig mono glib pango gtk GConf libglade libgnomecanvas libgtkhtml libgnomeui libgnomeprint libgnomeprintui gtkhtml libxml2 From 37bae3193d1b9975eee8cfda6757400c780cfa9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 00:31:20 +0100 Subject: [PATCH 142/572] monotone: fix --- .../version-management/monotone/default.nix | 8 +- .../monotone/glibc-file-handle.patch | 166 ++++++++++++++++++ 2 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 pkgs/applications/version-management/monotone/glibc-file-handle.patch diff --git a/pkgs/applications/version-management/monotone/default.nix b/pkgs/applications/version-management/monotone/default.nix index cde31b5cef9..0df1c652761 100644 --- a/pkgs/applications/version-management/monotone/default.nix +++ b/pkgs/applications/version-management/monotone/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, boost, zlib, botan, libidn -, lua, pcre, sqlite, perl, pkgconfig }: +, lua, pcre, sqlite, perl, pkgconfig, expect }: let version = "1.0"; @@ -16,7 +16,9 @@ stdenv.mkDerivation rec { sha256 = "5c530bc4652b2c08b5291659f0c130618a14780f075f981e947952dcaefc31dc"; }; - buildInputs = [boost zlib botan libidn lua pcre sqlite pkgconfig]; + patches = [ ./glibc-file-handle.patch ]; + + buildInputs = [ boost zlib botan libidn lua pcre sqlite pkgconfig expect ]; postInstall = '' mkdir -p $out/share/${name} @@ -25,6 +27,8 @@ stdenv.mkDerivation rec { cp -v contrib/Monotone.pm $out/lib/perl5/site_perl/${perlVersion} ''; + #doCheck = true; # some tests fail (and they take VERY long) + meta = { description = "A free distributed version control system"; maintainers = [stdenv.lib.maintainers.raskin]; diff --git a/pkgs/applications/version-management/monotone/glibc-file-handle.patch b/pkgs/applications/version-management/monotone/glibc-file-handle.patch new file mode 100644 index 00000000000..601b6ede0fb --- /dev/null +++ b/pkgs/applications/version-management/monotone/glibc-file-handle.patch @@ -0,0 +1,166 @@ +Revision: da62cad10eda55aa233ac124273f3db4f541137a +Parent: 65bcb8cf8b32f68a5b48629b328f6d65979e58df +Author: Thomas Moschny +Date: 07.05.2011 13:32:06 +Branch: net.venge.monotone + +Changelog: + +* src/rcs_file.cc: Rename struct "file_handle" to "rcs_file_handle" + to avoid a name clash with a struct of same name defined by newer + glibc's "fcntl.h". For aesthetic reasons, also rename struct + "file_source". + +References: +https://code.monotone.ca/p/monotone/source/commit/da62cad10eda55aa233ac124273f3db4f541137a/ +https://bugs.gentoo.org/396651 + +============================================================ +--- a/src/rcs_file.cc 885b3fbe7b6cfed78816f0e57cd71d44616213c6 ++++ b/src/rcs_file.cc 03cf68912a4a708545ebce3d415c0e970ddead0b +@@ -42,12 +42,12 @@ struct + + #ifdef HAVE_MMAP + struct +-file_handle ++rcs_file_handle + { + string const & filename; + off_t length; + int fd; +- file_handle(string const & fn) : ++ rcs_file_handle(string const & fn) : + filename(fn), + length(0), + fd(-1) +@@ -60,13 +60,13 @@ file_handle + if (fd == -1) + throw oops("open of " + filename + " failed"); + } +- ~file_handle() ++ ~rcs_file_handle() + { + if (close(fd) == -1) + throw oops("close of " + filename + " failed"); + } + }; +-struct file_source ++struct rcs_file_source + { + string const & filename; + int fd; +@@ -91,7 +91,7 @@ struct file_source + ++pos; + return good(); + } +- file_source(string const & fn, ++ rcs_file_source(string const & fn, + int f, + off_t len) : + filename(fn), +@@ -104,7 +104,7 @@ struct file_source + if (mapping == MAP_FAILED) + throw oops("mmap of " + filename + " failed"); + } +- ~file_source() ++ ~rcs_file_source() + { + if (munmap(mapping, length) == -1) + throw oops("munmapping " + filename + " failed, after reading RCS file"); +@@ -112,12 +112,12 @@ struct + }; + #elif defined(WIN32) + struct +-file_handle ++rcs_file_handle + { + string const & filename; + off_t length; + HANDLE fd; +- file_handle(string const & fn) : ++ rcs_file_handle(string const & fn) : + filename(fn), + length(0), + fd(NULL) +@@ -134,7 +134,7 @@ file_handle + if (fd == NULL) + throw oops("open of " + filename + " failed"); + } +- ~file_handle() ++ ~rcs_file_handle() + { + if (CloseHandle(fd)==0) + throw oops("close of " + filename + " failed"); +@@ -142,7 +142,7 @@ struct + }; + + struct +-file_source ++rcs_file_source + { + string const & filename; + HANDLE fd,map; +@@ -167,7 +167,7 @@ file_source + ++pos; + return good(); + } +- file_source(string const & fn, ++ rcs_file_source(string const & fn, + HANDLE f, + off_t len) : + filename(fn), +@@ -183,7 +183,7 @@ file_source + if (mapping==NULL) + throw oops("MapViewOfFile of " + filename + " failed"); + } +- ~file_source() ++ ~rcs_file_source() + { + if (UnmapViewOfFile(mapping)==0) + throw oops("UnmapViewOfFile of " + filename + " failed"); +@@ -193,7 +193,7 @@ file_source + }; + #else + // no mmap at all +-typedef istream file_source; ++typedef istream rcs_file_source; + #endif + + typedef enum +@@ -220,7 +220,7 @@ static token_type + } + + static token_type +-get_token(file_source & ist, ++get_token(rcs_file_source & ist, + string & str, + size_t & line, + size_t & col) +@@ -303,14 +303,14 @@ struct parser + + struct parser + { +- file_source & ist; ++ rcs_file_source & ist; + rcs_file & r; + string token; + token_type ttype; + + size_t line, col; + +- parser(file_source & s, ++ parser(rcs_file_source & s, + rcs_file & r) + : ist(s), r(r), line(1), col(1) + {} +@@ -489,8 +489,8 @@ parse_rcs_file(string const & filename, + parse_rcs_file(string const & filename, rcs_file & r) + { + #if defined(HAVE_MMAP) || defined(WIN32) +- file_handle handle(filename); +- file_source ifs(filename, handle.fd, handle.length); ++ rcs_file_handle handle(filename); ++ rcs_file_source ifs(filename, handle.fd, handle.length); + #else + ifstream ifs(filename.c_str()); + ifs.unsetf(ios_base::skipws); From 626cdf1cb6f5af930ebfe8c545a464507a6d87d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 02:27:18 +0100 Subject: [PATCH 143/572] Ardour3 fix gtk theme engine --- pkgs/applications/audio/ardour/ardour3.nix | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pkgs/applications/audio/ardour/ardour3.nix b/pkgs/applications/audio/ardour/ardour3.nix index d2d2ab37d30..8a5a65f8ed0 100644 --- a/pkgs/applications/audio/ardour/ardour3.nix +++ b/pkgs/applications/audio/ardour/ardour3.nix @@ -20,12 +20,11 @@ stdenv.mkDerivation { }; buildInputs = - [ alsaLib aubio boost cairomm curl fftw fftwSinglePrec - flac glibc glibmm gtk gtkmm jackaudio libgnomecanvas - libgnomecanvasmm liblo libmad libogg librdf librdf_raptor - librdf_rasqal libsamplerate libsigcxx libsndfile libusb libuuid - libxml2 libxslt lilv lv2 pango perl pkgconfig python serd sord - sratom suil + [ alsaLib aubio boost cairomm curl fftw fftwSinglePrec flac glibc + glibmm gtk gtkmm jackaudio libgnomecanvas libgnomecanvasmm liblo + libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate + libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2 + makeWrapper pango perl pkgconfig python serd sord sratom suil ]; patchPhase = '' @@ -39,13 +38,14 @@ stdenv.mkDerivation { buildPhase = "python waf"; - installPhase = "python waf install"; - - postInstall = '' - mkdir -pv $out/gtk-2.0/2.10.0/engines - mv lib/ardour3/libclearlooks.so $out/gtk-2.0/2.10.0/engines/ - wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk-2.0 - ''; + # For the custom ardour clearlooks gtk-engine to work, it must be + # moved to a directory called "engines" and added to GTK_PATH + installPhase = '' + python waf install + mkdir -pv $out/gtk2/engines + mv $out/lib/ardour3/libclearlooks.so $out/gtk2/engines/ + wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk2 + ''; meta = with stdenv.lib; { description = "Multi-track hard disk recording software"; From 880486b2d3475f953e94d152a1d5f3601c072e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 02:27:54 +0100 Subject: [PATCH 144/572] lilv: upgrade to 0.16.0 --- pkgs/development/libraries/audio/lilv/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/audio/lilv/default.nix b/pkgs/development/libraries/audio/lilv/default.nix index a02a6ebabac..1baa96cd6da 100644 --- a/pkgs/development/libraries/audio/lilv/default.nix +++ b/pkgs/development/libraries/audio/lilv/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "lilv-${version}"; - version = "0.14.2"; + version = "0.16.0"; src = fetchurl { url = "http://download.drobilla.net/${name}.tar.bz2"; - sha256 = "0g9sg5f8xkkvsad0c6rh4j1k2b2hwsh83yg66f4qznxh43np7zlx"; + sha256 = "1ddrcikypi7gfmj5cqn975axzrgv7mhzif4h0ni9w5b4v64rvcyg"; }; buildInputs = [ lv2 pkgconfig python serd sord sratom ]; From 472016f9252d40cee3f76e47068dde6cb95a894a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 02:28:40 +0100 Subject: [PATCH 145/572] lv2: upgrade to 1.4.0 --- pkgs/development/libraries/audio/lv2/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/audio/lv2/default.nix b/pkgs/development/libraries/audio/lv2/default.nix index 136a825eef9..ce8ad3f9d52 100644 --- a/pkgs/development/libraries/audio/lv2/default.nix +++ b/pkgs/development/libraries/audio/lv2/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "lv2-${version}"; - version = "1.0.0"; + version = "1.4.0"; src = fetchurl { url = "http://lv2plug.in/spec/${name}.tar.bz2"; - sha256 = "0lfp7679wwqd49k4mjxwqslpfx5fz2q7akxqayg400zqn70whzl5"; + sha256 = "035hlfva2mij698nj3z1mz9g4mj4z5jx9axs6ww47jgyjcq38asz"; }; buildInputs = [ gtk libsndfile pkgconfig python ]; From dae693c7a3406b917d5cdfb737b848969c5e6c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 02:29:09 +0100 Subject: [PATCH 146/572] sratom: upgrade to 0.4.2 --- pkgs/development/libraries/audio/sratom/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/audio/sratom/default.nix b/pkgs/development/libraries/audio/sratom/default.nix index b23b58a3f82..daaf780e45d 100644 --- a/pkgs/development/libraries/audio/sratom/default.nix +++ b/pkgs/development/libraries/audio/sratom/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "sratom-${version}"; - version = "0.2.0"; + version = "0.4.2"; src = fetchurl { url = "http://download.drobilla.net/${name}.tar.bz2"; - sha256 = "12wi0ycjnn6mlddcp476wzr6k2bb4ig1489gg8h1k7v0w7d6ry1a"; + sha256 = "16i5snknl9frz638mgr58lp11ap1xmkbrkb3l6f0ad8ddqpcjm3i"; }; buildInputs = [ lv2 pkgconfig python serd sord ]; From 499f539b468536a372c8d0a3fc72b6784b4331a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 02:29:34 +0100 Subject: [PATCH 147/572] serd: upgrade to 0.18.2 --- pkgs/development/libraries/serd/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/serd/default.nix b/pkgs/development/libraries/serd/default.nix index 8deb26abc1d..63733a35b20 100644 --- a/pkgs/development/libraries/serd/default.nix +++ b/pkgs/development/libraries/serd/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "serd-${version}"; - version = "0.14.0"; + version = "0.18.2"; src = fetchurl { url = "http://download.drobilla.net/${name}.tar.bz2"; - sha256 = "023gsw0nwn2fh2vp7v2gwsmdwk6658zfl1ihdvr9xbayfcv88wlg"; + sha256 = "1hgajhm4iar4n2kh71pv6yr0yhipj28kds9y5mbig8izqc188gcf"; }; buildInputs = [ pcre pkgconfig python ]; From 60d2657f60b2e93003d78b90761cb82ae15c9f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 02:30:02 +0100 Subject: [PATCH 148/572] sord: upgrade to 0.12.0 --- pkgs/development/libraries/sord/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/sord/default.nix b/pkgs/development/libraries/sord/default.nix index ee9d241424c..0f2326420cb 100644 --- a/pkgs/development/libraries/sord/default.nix +++ b/pkgs/development/libraries/sord/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "sord-${version}"; - version = "0.8.0"; + version = "0.12.0"; src = fetchurl { url = "http://download.drobilla.net/${name}.tar.bz2"; - sha256 = "0ncaplfr3wal9h8h3lafw0bhx34w046r7md74djgrysrm2h77pwr"; + sha256 = "1f0wz7ynnk72hyr4jfi0lgvj90ld2va1kig8fkw30s8b903alsqj"; }; buildInputs = [ pkgconfig python serd ]; From b2ad9627d633f93d58a1d4556db0d34e1dfcc13c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 02:30:53 +0100 Subject: [PATCH 149/572] oxygen-gtk: upgrade gtk2 version to 1.3.2.1 --- pkgs/misc/themes/gtk2/oxygen-gtk/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix b/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix index 9910768b547..185532589c6 100644 --- a/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix +++ b/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix @@ -2,12 +2,12 @@ cmake, dbus_glib, glib, gtk, gdk_pixbuf, pkgconfig, xorg }: stdenv.mkDerivation rec { - version = "1.1.1"; - name = "oxygen-gtk-${version}"; + version = "1.3.2.1"; + name = "oxygen-gtk2-${version}"; src = fetchurl { - url = "mirror://kde/stable/oxygen-gtk/${version}/src/${name}.tar.bz2"; - sha256 = "66d571f08ec999f56de412f42a0395c9dc60b73adaaece96c6da6e98353fe379"; + url = "mirror://kde/stable/oxygen-gtk2/${version}/src/${name}.tar.bz2"; + sha256 = "19l0dhjswvm7y99pvbd3qnz37k0p5y2slljy8mm4r8awjff3v4qi"; }; buildInputs = [ cmake dbus_glib glib gtk gdk_pixbuf From dbc343c49a25514657c799c3c97c8dc231b468d5 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Sat, 23 Feb 2013 19:35:19 -0800 Subject: [PATCH 150/572] 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 0415253eaffebf16b2ecfa67487e444c9442bacc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 09:22:50 +0100 Subject: [PATCH 151/572] octave: fix via minor update --- pkgs/development/interpreters/octave/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix index 3ffdc415f88..b545fe8b55f 100644 --- a/pkgs/development/interpreters/octave/default.nix +++ b/pkgs/development/interpreters/octave/default.nix @@ -3,10 +3,10 @@ libX11, graphicsmagick, pcre, liblapack, texLive, pkgconfig, mesa, fltk, fftw, fftwSinglePrec, zlib, curl, qrupdate }: stdenv.mkDerivation rec { - name = "octave-3.6.2"; + name = "octave-3.6.3"; src = fetchurl { url = "mirror://gnu/octave/${name}.tar.bz2"; - sha256 = "1bn48ldhx585iyrylnz59b6mb3wlpvmz2i3ri8q75s5ys29rpdhb"; + sha256 = "11i82vyf514rvdqcgdanw0ppvag8lcm6198rars0dd0w1xahjzg3"; }; buildInputs = [ gfortran readline ncurses perl flex texinfo qhull libX11 From fa42471a2f0732ddf923522a75727a530f64deaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 09:42:26 +0100 Subject: [PATCH 152/572] boost147: remove, seemed unneeded --- pkgs/development/libraries/boost/1.47.nix | 90 ------------------- .../boost/boost_filesystem_1_47_0.patch | 24 ----- pkgs/top-level/all-packages.nix | 3 +- 3 files changed, 1 insertion(+), 116 deletions(-) delete mode 100644 pkgs/development/libraries/boost/1.47.nix delete mode 100644 pkgs/development/libraries/boost/boost_filesystem_1_47_0.patch diff --git a/pkgs/development/libraries/boost/1.47.nix b/pkgs/development/libraries/boost/1.47.nix deleted file mode 100644 index 195cb469051..00000000000 --- a/pkgs/development/libraries/boost/1.47.nix +++ /dev/null @@ -1,90 +0,0 @@ -{ stdenv, fetchurl, icu, expat, zlib, bzip2, python -, enableRelease ? true -, enableDebug ? false -, enableSingleThreaded ? false -, enableMultiThreaded ? true -, enableShared ? true -, enableStatic ? false -, enablePIC ? false -, enableExceptions ? false -}: - -let - - variant = stdenv.lib.concatStringsSep "," - (stdenv.lib.optional enableRelease "release" ++ - stdenv.lib.optional enableDebug "debug"); - - threading = stdenv.lib.concatStringsSep "," - (stdenv.lib.optional enableSingleThreaded "single" ++ - stdenv.lib.optional enableMultiThreaded "multi"); - - link = stdenv.lib.concatStringsSep "," - (stdenv.lib.optional enableShared "shared" ++ - stdenv.lib.optional enableStatic "static"); - - # To avoid library name collisions - finalLayout = if ((enableRelease && enableDebug) || - (enableSingleThreaded && enableMultiThreaded) || - (enableShared && enableStatic)) then - "tagged" else "system"; - - cflags = if enablePIC && enableExceptions then - "cflags=-fPIC -fexceptions cxxflags=-fPIC linkflags=-fPIC" - else if enablePIC then - "cflags=-fPIC cxxflags=-fPIC linkflags=-fPIC" - else if enableExceptions then - "cflags=-fexceptions" - else - ""; -in - -stdenv.mkDerivation { - name = "boost-1.47.0"; - - meta = { - homepage = "http://boost.org/"; - description = "Boost C++ Library Collection"; - license = "boost-license"; - - maintainers = [ stdenv.lib.maintainers.simons ]; - }; - - src = fetchurl { - url = "mirror://sourceforge/boost/boost_1_47_0.tar.bz2"; - sha256 = "815a5d9faac4dbd523fbcf3fe1065e443c0bbf43427c44aa423422c6ec4c2e31"; - }; - - # See . - patches = [ ./boost_filesystem_1_47_0.patch ]; - - enableParallelBuilding = true; - - buildInputs = [icu expat zlib bzip2 python]; - - configureScript = "./bootstrap.sh"; - configureFlags = "--with-icu=${icu} --with-python=${python}/bin/python"; - - buildPhase = "./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat}/include -sEXPAT_LIBPATH=${expat}/lib --layout=${finalLayout} variant=${variant} threading=${threading} link=${link} ${cflags} install"; - - installPhase = ":"; - - crossAttrs = rec { - buildInputs = [ expat.crossDrv zlib.crossDrv bzip2.crossDrv ]; - # all buildInputs set previously fell into propagatedBuildInputs, as usual, so we have to - # override them. - propagatedBuildInputs = buildInputs; - # We want to substitute the contents of configureFlags, removing thus the - # usual --build and --host added on cross building. - preConfigure = '' - export configureFlags="--prefix=$out --without-icu" - ''; - buildPhase = '' - set -x - cat << EOF > user-config.jam - using gcc : cross : $crossConfig-g++ ; - EOF - ./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat.crossDrv}/include -sEXPAT_LIBPATH=${expat.crossDrv}/lib --layout=${finalLayout} --user-config=user-config.jam toolset=gcc-cross variant=${variant} threading=${threading} link=${link} ${cflags} --without-python install - ''; - }; -} diff --git a/pkgs/development/libraries/boost/boost_filesystem_1_47_0.patch b/pkgs/development/libraries/boost/boost_filesystem_1_47_0.patch deleted file mode 100644 index f32e9ed572d..00000000000 --- a/pkgs/development/libraries/boost/boost_filesystem_1_47_0.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -ubr boost_1_47_0/libs/filesystem/v2/src/v2_path.cpp boost_1_47_0-patched/libs/filesystem/v2/src/v2_path.cpp ---- boost_1_47_0/libs/filesystem/v2/src/v2_path.cpp 2011-01-11 22:39:33.000000000 +0100 -+++ boost_1_47_0-patched/libs/filesystem/v2/src/v2_path.cpp 2011-07-21 01:06:26.000000000 +0200 -@@ -45,7 +45,7 @@ - { - #if !defined(macintosh) && !defined(__APPLE__) && !defined(__APPLE_CC__) - // ISO C calls this "the locale-specific native environment": -- static std::locale lc(""); -+ static std::locale lc; - #else // Mac OS - // "All BSD system functions expect their string parameters to be in UTF-8 encoding - // and nothing else." -diff -ubr boost_1_47_0/libs/filesystem/v3/src/path.cpp boost_1_47_0-patched/libs/filesystem/v3/src/path.cpp ---- boost_1_47_0/libs/filesystem/v3/src/path.cpp 2011-07-05 16:49:42.000000000 +0200 -+++ boost_1_47_0-patched/libs/filesystem/v3/src/path.cpp 2011-07-21 01:06:26.000000000 +0200 -@@ -767,7 +767,7 @@ - // or LANG are wrong, for example), so dynamic initialization is used to ensure - // that exceptions can be caught. - -- return std::locale(""); -+ return std::locale(); - - # endif - } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 290b841553e..8a786c82e4c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3395,7 +3395,6 @@ let boolstuff = callPackage ../development/libraries/boolstuff { }; boost144 = callPackage ../development/libraries/boost/1.44.nix { }; - boost147 = callPackage ../development/libraries/boost/1.47.nix { }; boost149 = callPackage ../development/libraries/boost/1.49.nix { }; boost153 = callPackage ../development/libraries/boost/1.53.nix { }; boost = boost153; @@ -8423,7 +8422,7 @@ let kipi_plugins = callPackage ../applications/graphics/kipi-plugins { }; koffice = callPackage ../applications/office/koffice { - boost = boost147; + boost = boost149; }; konq_plugins = callPackage ../applications/networking/browsers/konq-plugins { }; From fb81c8e4558ca64ca2a8368069d7f695d88f9009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 09:44:10 +0100 Subject: [PATCH 153/572] kde48.kdebase_workspace: disable parallel build There were frequent problems with this on Hydra. --- pkgs/desktops/kde-4.8/kde-package/default.nix | 2 +- pkgs/desktops/kde-4.8/kde-workspace.nix | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/desktops/kde-4.8/kde-package/default.nix b/pkgs/desktops/kde-4.8/kde-package/default.nix index da6440b58fa..cd2860920d6 100644 --- a/pkgs/desktops/kde-4.8/kde-package/default.nix +++ b/pkgs/desktops/kde-4.8/kde-package/default.nix @@ -51,7 +51,7 @@ rec { "-DBUILD_${subdir}=TRUE" ] ++ cmakeFlags; meta = defMeta // meta; - enableParallelBuilding = true; + enableParallelBuilding = module.enableParallelBuilding or true; } // (removeAttrs a [ "meta" "name" "cmakeFlags" ])); # A KDE monolithic module diff --git a/pkgs/desktops/kde-4.8/kde-workspace.nix b/pkgs/desktops/kde-4.8/kde-workspace.nix index 97192e55be3..394cd550b96 100644 --- a/pkgs/desktops/kde-4.8/kde-workspace.nix +++ b/pkgs/desktops/kde-4.8/kde-workspace.nix @@ -28,6 +28,8 @@ kde { --replace /usr/share/X11 ${xkeyboard_config}/etc/X11 ''; + enableParallelBuilding = false; # frequent problems on Hydra + meta = { description = "KDE workspace components such as Plasma, Kwin and System Settings"; license = "GPLv2"; From b913af9fce3d0da5cf4ca401d5bc8123bbbd475b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 10:32:47 +0100 Subject: [PATCH 154/572] pltScheme: remove -- didn't build and it's "racket" now --- .../interpreters/plt-scheme/default.nix | 29 ------------------- pkgs/top-level/all-packages.nix | 8 +---- 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 pkgs/development/interpreters/plt-scheme/default.nix diff --git a/pkgs/development/interpreters/plt-scheme/default.nix b/pkgs/development/interpreters/plt-scheme/default.nix deleted file mode 100644 index f3d68c931e6..00000000000 --- a/pkgs/development/interpreters/plt-scheme/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -args: with args; -let version = lib.attrByPath ["version"] "4.2.4" args; in -rec { - src = fetchurl { - url = "ftp://infogroep.be/pub/plt/bundles/${version}/plt/plt-${version}-src-unix.tgz"; - sha256 = "05azb9k0m1sp3qm3all4s39m97xwrbnqcys2vgc888nhxbff4d6g"; - }; - - buildInputs = [cairo fontconfig freetype libjpeg libpng openssl - libXaw libXft perl mesa libX11 libXrender libICE xproto renderproto - pixman libSM libxcb libXext xextproto libXmu libXt zlib which]; - configureFlags = ["--enable-shared" "--enable-pthreads" "--with-x"]; - goSrcDir = "cd src"; - - /* doConfigure should be specified separately */ - phaseNames = ["preConfigure" "doConfigure" "doMakeInstall"]; - - preConfigure = fullDepEntry ('' - sed -e 's@/usr/bin/uname@'"$(which uname)"'@g' -i configure - '') ["minInit" "addInputs" "doUnpack"]; - - name = "plt-scheme" + version; - meta = { - description = "PLT scheme environment"; - homepage = http://plt-scheme.org/ ; - license = "LGPL-2.1"; - licenses = ["LGPL-2.1"]; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8a786c82e4c..db6b461e6ee 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2823,13 +2823,7 @@ let picolisp = callPackage ../development/interpreters/picolisp {}; - pltScheme = builderDefsPackage (import ../development/interpreters/plt-scheme) { - inherit cairo fontconfig freetype libjpeg libpng openssl - perl mesa zlib which; - inherit (xorg) libX11 libXaw libXft libXrender libICE xproto - renderproto pixman libSM libxcb libXext xextproto libXmu - libXt; - }; + pltScheme = racket; # just to be sure polyml = callPackage ../development/compilers/polyml { }; From 8e148fa50e372db93181008889406b5ecefc1a19 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 10:41:44 +0100 Subject: [PATCH 155/572] haskell-gitit: jailbreak to fix build with recent blazehtml --- pkgs/development/libraries/haskell/gitit/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/gitit/default.nix b/pkgs/development/libraries/haskell/gitit/default.nix index db1b3c6c467..b38774cd02b 100644 --- a/pkgs/development/libraries/haskell/gitit/default.nix +++ b/pkgs/development/libraries/haskell/gitit/default.nix @@ -18,6 +18,7 @@ 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 c2fc8c6da33ecad97479d3055bbd6e0ecfd96295 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 10:42:08 +0100 Subject: [PATCH 156/572] cabal-dev: update to Git version to fix build with ghc 7.6.2 --- .../tools/haskell/cabal-dev/default.nix | 14 +++++++++----- pkgs/top-level/haskell-packages.nix | 6 +----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/development/tools/haskell/cabal-dev/default.nix b/pkgs/development/tools/haskell/cabal-dev/default.nix index 79385bd88a9..df7f728c752 100644 --- a/pkgs/development/tools/haskell/cabal-dev/default.nix +++ b/pkgs/development/tools/haskell/cabal-dev/default.nix @@ -1,15 +1,19 @@ -{ cabal, Cabal, cabalInstall, filepath, HTTP, mtl, network, tar -, transformers, zlib +{ cabal, fetchurl, Cabal, cabalInstall, filepath, HTTP, mtl, network, tar +, transformers, zlib, setenv }: cabal.mkDerivation (self: { pname = "cabal-dev"; - version = "0.9.1"; - sha256 = "1brz0nw959jdyjrhjqy9sixsb316hjmw4pxxsybfl8vixsivdfh6"; + version = "0.9.1-git"; + src = fetchurl { + url = "https://github.com/creswick/cabal-dev/archive/54e7d93d5b309c56192c146c7a807ac3591bc464.tar.gz"; + sha256 = "1isi02jik0vrg48l7r2mj4cf9ms6hpxxz1mmhl7s3kkxx775cxj9"; + name = "${self.name}.tar.gz"; + }; isLibrary = false; isExecutable = true; buildDepends = [ - Cabal filepath HTTP mtl network tar transformers zlib + Cabal filepath HTTP mtl network tar transformers zlib setenv ]; buildTools = [ cabalInstall ]; meta = { diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index ff8fd6a24c7..51b08f8c30c 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -2029,11 +2029,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); cabal2nix = callPackage ../development/tools/haskell/cabal2nix {}; - cabalDev = callPackage ../development/tools/haskell/cabal-dev { - mtl = self.mtl_2_0_1_0.override { transformers = self.transformers_0_2_2_0; }; - transformers = self.transformers_0_2_2_0; - tar = self.tar_0_3_2_0; - }; + cabalDev = callPackage ../development/tools/haskell/cabal-dev {}; cabalGhci = callPackage ../development/tools/haskell/cabal-ghci {}; From d4b8008a44fdaa0f78082632541c4052a827be55 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 10:44:17 +0100 Subject: [PATCH 157/572] haskell-tar: dropped obsolete version 0.3.2.0 --- .../haskell/tar/default.nix} | 0 pkgs/development/tools/haskell/tar/0.3.2.0.nix | 14 -------------- pkgs/top-level/haskell-packages.nix | 4 +--- 3 files changed, 1 insertion(+), 17 deletions(-) rename pkgs/development/{tools/haskell/tar/0.4.0.1.nix => libraries/haskell/tar/default.nix} (100%) delete mode 100644 pkgs/development/tools/haskell/tar/0.3.2.0.nix diff --git a/pkgs/development/tools/haskell/tar/0.4.0.1.nix b/pkgs/development/libraries/haskell/tar/default.nix similarity index 100% rename from pkgs/development/tools/haskell/tar/0.4.0.1.nix rename to pkgs/development/libraries/haskell/tar/default.nix diff --git a/pkgs/development/tools/haskell/tar/0.3.2.0.nix b/pkgs/development/tools/haskell/tar/0.3.2.0.nix deleted file mode 100644 index 15bb647b542..00000000000 --- a/pkgs/development/tools/haskell/tar/0.3.2.0.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ cabal, filepath }: - -cabal.mkDerivation (self: { - pname = "tar"; - version = "0.3.2.0"; - sha256 = "0yplrfai8bwihyn18whi0jiz1qzll9hgbc37xcy2jkr28480jba9"; - buildDepends = [ filepath ]; - meta = { - description = "Reading, writing and manipulating \".tar\" archive files."; - 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 51b08f8c30c..ae0717cdd52 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1999,9 +1999,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); haskellSrcExts = self.haskellSrcExts_1_11_1; }; - tar_0_3_2_0 = callPackage ../development/tools/haskell/tar/0.3.2.0.nix {}; - tar_0_4_0_1 = callPackage ../development/tools/haskell/tar/0.4.0.1.nix {}; - tar = self.tar_0_4_0_1; + tar = callPackage ../development/tools/haskell/tar {}; threadscope = callPackage ../development/tools/haskell/threadscope {}; From b6e9efb0b60c30d3b18f562ec03fb67fd9ca4ac9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 10:57:38 +0100 Subject: [PATCH 158/572] haskell-packages.nix: fix path to haskell 'tar' library --- pkgs/top-level/haskell-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index ae0717cdd52..20790e6f7d3 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1999,7 +1999,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); haskellSrcExts = self.haskellSrcExts_1_11_1; }; - tar = callPackage ../development/tools/haskell/tar {}; + tar = callPackage ../development/libraries/haskell/tar {}; threadscope = callPackage ../development/tools/haskell/threadscope {}; From 07d26cea06c6609322944b67f0a75232fc202465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 10:59:54 +0100 Subject: [PATCH 159/572] racket: fix by update --- pkgs/development/interpreters/racket/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/interpreters/racket/default.nix b/pkgs/development/interpreters/racket/default.nix index db92e0fa55b..4a6713580da 100644 --- a/pkgs/development/interpreters/racket/default.nix +++ b/pkgs/development/interpreters/racket/default.nix @@ -4,12 +4,12 @@ stdenv.mkDerivation rec { pname = "racket"; - version = "5.2.1"; + version = "5.3.3"; name = "${pname}-${version}"; src = fetchurl { url = "http://download.racket-lang.org/installers/${version}/${pname}/${name}-src-unix.tgz"; - sha256 = "1v5kvp7vfi4a4bn08jlaga441amlfxpjw9dm6vc1fazwzd72m539"; + sha256 = "1qp0fmsh4dkxvlj35xnwdcf4m97jcf927cwhnckjicqx1lfa0wj7"; }; # Various racket executables do run-time searches for these. @@ -44,7 +44,7 @@ stdenv.mkDerivation rec { ''; meta = { - description = "Racket (formerly called PLT Scheme) is a programming language derived from Scheme."; + description = "A programming language derived from Scheme (formerly called PLT Scheme)."; longDescription = '' Racket (formerly called PLT Scheme) is a programming language derived from Scheme. The Racket project has four primary components: the @@ -56,7 +56,7 @@ stdenv.mkDerivation rec { ''; homepage = http://racket-lang.org/; - license = stdenv.lib.licenses.lgpl2Plus; + license = stdenv.lib.licenses.lgpl2Plus; # and licenses of contained libraries maintainers = [ stdenv.lib.maintainers.kkallio ]; platforms = stdenv.lib.platforms.linux; }; From 9fc277e0b66a9719914f29a917148d21388fa0b6 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 11:00:52 +0100 Subject: [PATCH 160/572] haskell-cabal2ghci: add version 0.0.1.0 --- .../tools/haskell/cabal2ghci/default.nix | 20 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/development/tools/haskell/cabal2ghci/default.nix diff --git a/pkgs/development/tools/haskell/cabal2ghci/default.nix b/pkgs/development/tools/haskell/cabal2ghci/default.nix new file mode 100644 index 00000000000..881328d875b --- /dev/null +++ b/pkgs/development/tools/haskell/cabal2ghci/default.nix @@ -0,0 +1,20 @@ +{ cabal, Cabal, cmdargs, stylishHaskell, systemFileio +, systemFilepath, text, unorderedContainers, yaml +}: + +cabal.mkDerivation (self: { + pname = "cabal2ghci"; + version = "0.0.1.0"; + sha256 = "0l5225gwm6j25694cp94d4z31i1p68pq6js3psbr7m204q409dr5"; + isLibrary = false; + isExecutable = true; + buildDepends = [ + Cabal cmdargs stylishHaskell systemFileio systemFilepath text + unorderedContainers yaml + ]; + meta = { + description = "A tool to generate .ghci file from .cabal"; + 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 20790e6f7d3..4f3cd1b5363 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -2029,6 +2029,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); cabalDev = callPackage ../development/tools/haskell/cabal-dev {}; + cabal2Ghci = callPackage ../development/tools/haskell/cabal2ghci {}; + cabalGhci = callPackage ../development/tools/haskell/cabal-ghci {}; cabalInstall_0_6_2 = callPackage ../tools/package-management/cabal-install/0.6.2.nix {}; From d062be36e6e1a692dd6dc91ba52125b6d1641129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 11:03:51 +0100 Subject: [PATCH 161/572] Calf: upgrade to the final release 0.0.19 --- pkgs/applications/audio/calf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/audio/calf/default.nix b/pkgs/applications/audio/calf/default.nix index bc7b3c57e60..6ed4b7cce98 100644 --- a/pkgs/applications/audio/calf/default.nix +++ b/pkgs/applications/audio/calf/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation rec { name = "calf-${version}"; - version = "0.0.19-rc7"; + version = "0.0.19"; src = fetchurl { url = "mirror://sourceforge/calf/${name}.tar.gz"; - sha256 = "0515pzc7ishrq0j5hza83s0yp3x34r977h776lpky389whcyf45j"; + sha256 = "1v1cjbxv5wg6rsa2nfz1f8r7cykcpx6jm5ccqmzx866dggiff1hi"; }; buildInputs = [ From ae35f74dbe2144fbaa911499b3cecceddc421e56 Mon Sep 17 00:00:00 2001 From: Jack Cummings Date: Sun, 24 Feb 2013 02:17:24 -0800 Subject: [PATCH 162/572] 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 163/572] 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 51c54301a6373cd28fa7bb0a683e0f50101cf0f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Sun, 24 Feb 2013 11:26:32 +0100 Subject: [PATCH 164/572] Add mda-lv2 audio plugins --- pkgs/applications/audio/mda-lv2/default.nix | 27 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 29 insertions(+) create mode 100644 pkgs/applications/audio/mda-lv2/default.nix diff --git a/pkgs/applications/audio/mda-lv2/default.nix b/pkgs/applications/audio/mda-lv2/default.nix new file mode 100644 index 00000000000..8b7d5527372 --- /dev/null +++ b/pkgs/applications/audio/mda-lv2/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, python }: + +stdenv.mkDerivation rec { + name = "mda-lv2-${version}"; + version = "1.0.0"; + + src = fetchurl { + url = "http://download.drobilla.net/${name}.tar.bz2"; + sha256 = "1dbgvpz9qvlwsfkq9c0dx45bm223wwrzgiddlyln1agpns3qbf0f"; + }; + + buildInputs = [ fftwSinglePrec lv2 pkgconfig python ]; + + configurePhase = "python waf configure --prefix=$out"; + + buildPhase = "python waf"; + + installPhase = "python waf install"; + + meta = with stdenv.lib; { + homepage = http://drobilla.net/software/mda-lv2/; + description = "An LV2 port of the MDA plugins by Paul Kellett"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.goibhniu ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8707db52520..52003c17618 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7449,6 +7449,8 @@ let matchbox = callPackage ../applications/window-managers/matchbox { }; + mda_lv2 = callPackage ../applications/audio/mda-lv2 { }; + meld = callPackage ../applications/version-management/meld { inherit (gnome) scrollkeeper; pygtk = pyGtkGlade; From 17d289498fc25dfdb824eeda5ed404a5f82e1aef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 24 Feb 2013 12:06:50 +0100 Subject: [PATCH 165/572] linux: Typo: CFG80211_WEXT --- pkgs/os-specific/linux/kernel/linux-3.7.nix | 2 +- pkgs/os-specific/linux/kernel/linux-3.8.nix | 2 +- 2 files 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 c1847809c06..df6387b1f81 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.7.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.7.nix @@ -78,7 +78,7 @@ let ATH9K_AHB y # Ditto, AHB bus B43_PHY_HT y BCMA_HOST_PCI y - CFG08211_WEXT y # Without it, ipw2200 drivers don't build + 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. diff --git a/pkgs/os-specific/linux/kernel/linux-3.8.nix b/pkgs/os-specific/linux/kernel/linux-3.8.nix index 927b249a924..1c59a2ff486 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.8.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.8.nix @@ -78,7 +78,7 @@ let ATH9K_AHB y # Ditto, AHB bus B43_PHY_HT y BCMA_HOST_PCI y - CFG08211_WEXT y # Without it, ipw2200 drivers don't build + 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. 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 166/572] 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 7d5056f8a3cf76b20d9b24e6644f2fc7fdf4a0f8 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: Sun, 24 Feb 2013 18:02:53 +0400 Subject: [PATCH 167/572] games/unvanquished: New nixpkg. --- pkgs/games/unvanquished/default.nix | 68 +++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 70 insertions(+) create mode 100644 pkgs/games/unvanquished/default.nix diff --git a/pkgs/games/unvanquished/default.nix b/pkgs/games/unvanquished/default.nix new file mode 100644 index 00000000000..03069f9fe14 --- /dev/null +++ b/pkgs/games/unvanquished/default.nix @@ -0,0 +1,68 @@ +{ stdenv, fetchurl, cmake, mesa, SDL, libjpeg, libpng, glew, libwebp, ncurses +, gmp, curl, nettle, openal, speex, libogg, libvorbis, libtheora, xvidcore +, makeWrapper }: +stdenv.mkDerivation rec { + name = "unvanquished-${version}"; + version = "0.12.0"; + src = fetchurl { + url = "https://github.com/Unvanquished/Unvanquished/archive/v${version}.tar.gz"; + sha256 = "0spwin0vms1zzkbgzkm423k804nqr5d54xppjbwhdnrd5fdv0gyl"; + }; + buildInputs = [ cmake mesa SDL libjpeg libpng glew libwebp ncurses gmp curl + nettle openal speex libogg libvorbis libtheora xvidcore + makeWrapper ]; + preConfigure = ''prefix="$prefix/opt"''; + postInstall = '' + # cp -r ../main "$prefix/Unvanquished/" + mkdir -p "$out/bin" + substituteInPlace download-pk3.sh --replace /bin/bash ${stdenv.shell} + cp -v download-pk3.sh "$out/bin/unvanquished-download-pk3" + makeWrapper "$prefix/Unvanquished/daemon" "$out/bin/unvanquished" \ + --run '[ -f ~/.Unvanquished/main/md5sums ] && + cd ~/.Unvanquished/main/ && + md5sum --quiet -c md5sums || + unvanquished-download-pk3' \ + --run "cd '$prefix/Unvanquished'" + makeWrapper "$prefix/Unvanquished/daemonded" "$out/bin/unvanquished-ded" \ + --run '[ -f ~/.Unvanquished/main/md5sums ] && + cd ~/.Unvanquished/main/ && + md5sum --quiet -c md5sums || + unvanquished-download-pk3' \ + --run "cd '$prefix/Unvanquished'" + ''; + + meta = { + description = "A FLOSS FPS combining RTS elements with a futuristic, sci-fi setting."; + longDescription = '' + Unvanquished is a free, open-source first-person shooter + combining real-time strategy elements with a futuristic, sci-fi + setting. It is available for Windows, Linux, and Mac OS X. + + Features: + + * Two teams + Play as either the technologically advanced humans or the highly + adaptable aliens, with a fresh gameplay experience on both + sides. + + * Build a base + Construct and maintain your base with a variety of useful + structures, or group up with teammates to take on the other + team. + + * Level up + Earn rewards for victories against the other team, whether it's + a deadly new weapon or access to a whole new alien form. + + * Customize + Compatibility with Quake 3 file formats and modification tools + allows for extensive customization of the game and its + setting. + ''; + homepage = http://unvanquished.net; + #license = "unknown"; + maintainers = with stdenv.lib.maintainers; [ astsmtl ]; + # This package can take a lot of disk space, so unavailable from channel + #platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 52003c17618..308d5cdca9b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8398,6 +8398,8 @@ let lua = lua5; }; + unvanquished = callPackage ../games/unvanquished { }; + uqm = callPackage ../games/uqm { }; urbanterror = callPackage ../games/urbanterror { }; From 7421ee673ceb2da35429c9a3d208b7c1428eae23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 15:11:19 +0100 Subject: [PATCH 168/572] qucs: minor update and fix for new gcc --- pkgs/applications/science/electronics/qucs/default.nix | 7 +++++-- .../science/electronics/qucs/tr1-complex.patch | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 pkgs/applications/science/electronics/qucs/tr1-complex.patch diff --git a/pkgs/applications/science/electronics/qucs/default.nix b/pkgs/applications/science/electronics/qucs/default.nix index 979faa2e597..e434c97db2b 100644 --- a/pkgs/applications/science/electronics/qucs/default.nix +++ b/pkgs/applications/science/electronics/qucs/default.nix @@ -1,13 +1,16 @@ {stdenv, fetchurl, qt3, libX11}: stdenv.mkDerivation rec { - name = "qucs-0.0.15"; + name = "qucs-0.0.16"; src = fetchurl { url = "mirror://sourceforge/qucs/${name}.tar.gz"; - sha256 = "0ggs2nicj8q270l0rbmzg4jc0d0zdxvfsjh4wgww670ma5855xsp"; + sha256 = "1h8ba84k06rix5zl5p9p414zj2facbnlf1vxwh4a1sp4h9dbfnzy"; }; + patches = [ ./tr1-complex.patch ]; + patchFlags = "-p0"; + buildInputs = [ qt3 libX11 ]; meta = { diff --git a/pkgs/applications/science/electronics/qucs/tr1-complex.patch b/pkgs/applications/science/electronics/qucs/tr1-complex.patch new file mode 100644 index 00000000000..0be7ae00eb9 --- /dev/null +++ b/pkgs/applications/science/electronics/qucs/tr1-complex.patch @@ -0,0 +1,10 @@ +--- qucs-core/configure.orig 2011-07-03 07:34:09.069218113 -0500 ++++ qucs-core/configure 2011-07-03 07:34:46.618990497 -0500 +@@ -5884,7 +5884,6 @@ + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-#include + using namespace std; + using namespace std::tr1; + int From f20ff74afe62857376f1e3a081944500cca4e3ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 16:40:36 +0100 Subject: [PATCH 169/572] recode: fix with new automake --- pkgs/tools/text/recode/default.nix | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pkgs/tools/text/recode/default.nix b/pkgs/tools/text/recode/default.nix index e7c5997021d..f3f8520a918 100644 --- a/pkgs/tools/text/recode/default.nix +++ b/pkgs/tools/text/recode/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, autoconf, automake, libtool, gettext, perl}: +{ stdenv, fetchurl, autoconf, automake, libtool, gettext, perl, flex }: let asIfPatch = ./recode-3.6-as-if.patch; @@ -6,8 +6,8 @@ let 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"; + url = "http://ftp.de.debian.org/debian/pool/main/r/recode/recode_3.6-17.diff.gz"; + sha256 = "1iwrggw64faf6lghgm9nzh64vh8m8jd79h6pxqgrmfmplzrzpzjp"; }; in stdenv.mkDerivation { @@ -18,15 +18,21 @@ stdenv.mkDerivation { sha256 = "1krgjqfhsxcls4qvxhagc45sm1sd0w69jm81nwm0bip5z3rs9rp3"; }; - buildInputs = [ autoconf automake libtool gettext perl ]; + buildInputs = [ autoconf automake libtool gettext perl flex ]; patchPhase = '' - patch -Np1 -i ${asIfPatch} patch -Np1 -i ${gettextPatch} + patch -Np1 -i ${asIfPatch} gunzip <${debianPatch} | patch -Np1 -i - sed -i '1i#include ' src/argmatch.c - rm -f acinclude.m4 - autoreconf -fi + + # 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.in + substituteInPlace src/Makefile.am --replace "ansi2knr" "" + + autoreconf -i libtoolize ''; From 0e9b88cc4a00851e2ea8d59b2975c96dd7ce44b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 18:20:57 +0100 Subject: [PATCH 170/572] sbcl: fix and minor update --- pkgs/development/compilers/sbcl/default.nix | 13 +++--- .../development/compilers/sbcl/newglibc.patch | 43 +++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 pkgs/development/compilers/sbcl/newglibc.patch diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 794a97b205f..2535fb603ba 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.4"; name="${baseName}-${version}"; - hash="1qy64fy0nvjdgzlmasswgvzg1b2h2rygnnjvlf9vj7wg16i5383i"; - url="mirror://sourceforge/project/sbcl/sbcl/1.1.3/sbcl-1.1.3-source.tar.bz2"; - sha256="1qy64fy0nvjdgzlmasswgvzg1b2h2rygnnjvlf9vj7wg16i5383i"; + hash="1k7p986hsd3yygzrsc0w68maflvhbg4gcmi3rbylyn0mi8pxb2s6"; + url="mirror://sourceforge/project/sbcl/sbcl/${version}/sbcl-${version}-source.tar.bz2"; + sha256="1k7p986hsd3yygzrsc0w68maflvhbg4gcmi3rbylyn0mi8pxb2s6"; }; buildInputs = with a; [ clisp makeWrapper @@ -21,7 +21,10 @@ rec { configureFlags = []; /* doConfigure should be removed if not needed */ - phaseNames = ["setVars" "doFixNewer" "doFixTests" "setVersion" "doBuild" "doInstall" "doWrap"]; + 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 diff --git a/pkgs/development/compilers/sbcl/newglibc.patch b/pkgs/development/compilers/sbcl/newglibc.patch new file mode 100644 index 00000000000..dbc94b06d4c --- /dev/null +++ b/pkgs/development/compilers/sbcl/newglibc.patch @@ -0,0 +1,43 @@ +Fixes for glibc 2.17. + +linux-os.c is just a missing header (for personality()). + +In x86-64-linux-os.c, __USE_GNU is a glibc-internal name that features.h +defines; _GNU_SOURCE is what it should actually be using to get GNU extensions. + +diff -x config.log -x config.status -ru tmp/sbcl-1.1.2/src/runtime/linux-os.c work/sbcl-1.1.2/src/runtime/linux-os.c +--- tmp/sbcl-1.1.2/src/runtime/linux-os.c 2012-12-01 11:32:38.000000000 +0000 ++++ work/sbcl-1.1.2/src/runtime/linux-os.c 2012-12-31 01:20:37.619000000 +0000 +@@ -46,6 +46,7 @@ + #include + #include + #include ++#include + + #include "validate.h" + #include "thread.h" +diff -x config.log -x config.status -ru tmp/sbcl-1.1.2/src/runtime/x86-64-linux-os.c work/sbcl-1.1.2/src/runtime/x86-64-linux-os.c +--- tmp/sbcl-1.1.2/src/runtime/x86-64-linux-os.c 2012-12-01 11:32:38.000000000 +0000 ++++ work/sbcl-1.1.2/src/runtime/x86-64-linux-os.c 2012-12-31 01:20:25.450000000 +0000 +@@ -14,6 +14,9 @@ + * files for more information. + */ + ++/* This is to get REG_RAX etc. from sys/ucontext.h. */ ++#define _GNU_SOURCE ++ + #include + #include + #include +@@ -21,11 +24,7 @@ + #include + #include + #include +- +-#define __USE_GNU + #include +-#undef __USE_GNU +- + + #include "./signal.h" + #include "os.h" From 7181888c23a5ccf6f5b4721fa3bc305477af8179 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 19:28:24 +0100 Subject: [PATCH 171/572] pkgs/lib/strings.nix: add 'enableFeature' function to simplify generation of GNU Autoconf "--{enable,disable}-feature" strings --- pkgs/lib/strings.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/lib/strings.nix b/pkgs/lib/strings.nix index 19d1738182f..8ea4106709a 100644 --- a/pkgs/lib/strings.nix +++ b/pkgs/lib/strings.nix @@ -171,4 +171,9 @@ rec { assert ! eqStrings name filename; name; + + # Create an --{enable,disable}- string that can be passed to + # standard GNU Autoconf scripts. + enableFeature = enable: feat: "--${if enable then "enable" else "disable"}-${feat}"; + } From 726574a5e41966381200ba31aac3431837fdab5e Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 19:28:38 +0100 Subject: [PATCH 172/572] pkgs/lib/strings.nix: strip trailing whitespace --- pkgs/lib/strings.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/lib/strings.nix b/pkgs/lib/strings.nix index 8ea4106709a..6c4adfaa1a7 100644 --- a/pkgs/lib/strings.nix +++ b/pkgs/lib/strings.nix @@ -161,7 +161,7 @@ rec { getVersion = drv: (builtins.parseDrvName drv.name).version; - # Extract name with version from URL. Ask for separator which is + # Extract name with version from URL. Ask for separator which is # supposed to start extension nameFromURL = url: sep: let components = splitString "/" url; From 26b192edcc7c510c62932f221006247927320040 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 21:14:01 +0100 Subject: [PATCH 173/572] pkgs/build-support/cabal: unify all non-user-specified configure flags in the internal 'extraConfigureFlags' variable --- pkgs/build-support/cabal/default.nix | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index db57e97b294..051da9dc2f8 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -86,13 +86,11 @@ # pass the '--enable-split-objs' flag to cabal in the configure stage enableSplitObjs = true; - # configure flag to pass to enable/disable library profiling - libraryProfiling = - if enableLibraryProfiling then ["--enable-library-profiling"] - else ["--disable-library-profiling"]; - - # configure flag to pass to enable/disable object splitting - splitObjects = if self.enableSplitObjs then "--enable-split-objs" else "--disable-split-objs"; + extraConfigureFlags = [ + (stdenv.lib.enableFeature enableLibraryProfiling "library-profiling") + (stdenv.lib.enableFeature self.enableSplitObjs "split-objs") + (stdenv.lib.enableFeature self.doCheck "tests") + ]; # compiles Setup and configures configurePhase = '' @@ -106,19 +104,17 @@ for p in $extraBuildInputs $propagatedNativeBuildInputs; do if [ -d "$p/include" ]; then - extraLibDirs="$extraLibDirs --extra-include-dir=$p/include" + extraConfigureFlags+=" --extra-include-dir=$p/include" fi for d in lib{,64}; do if [ -d "$p/$d" ]; then - extraLibDirs="$extraLibDirs --extra-lib-dir=$p/$d" + extraConfigureFlags+=" --extra-lib-dir=$p/$d" fi done done - test -z "$doCheck" || configureFlags+=" --enable-tests" - - echo "configure flags: $libraryProfiling $splitObjects $extraLibDirs $configureFlags" - ./Setup configure --verbose --prefix="$out" $libraryProfiling $splitObjects $extraLibDirs $configureFlags + echo "configure flags: $extraConfigureFlags $configureFlags" + ./Setup configure --verbose --prefix="$out" $extraConfigureFlags $configureFlags eval "$postConfigure" ''; From bf5ac530737cd6591dd2c9e590e4b07d907043e1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 21:15:25 +0100 Subject: [PATCH 174/572] pkgs/build-support/cabal: add 'testDepends' field to specify build-time dependencies that are required only for running the test suites --- pkgs/build-support/cabal/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index 051da9dc2f8..26100c98ad7 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -8,7 +8,7 @@ # environment overly, but also to keep hash-backwards-compatible with the old cabal.nix. internalAttrs = [ "internalAttrs" "buildDepends" "buildTools" "extraLibraries" "pkgconfigDepends" - "isLibrary" "isExecutable" + "isLibrary" "isExecutable" "testDepends" ]; # Stuff happening after the user preferences have been processed. We remove @@ -55,6 +55,7 @@ # but often propagatedBuildInputs is preferable anyway buildInputs = [ghc Cabal] ++ self.extraBuildInputs; extraBuildInputs = self.buildTools ++ + (stdenv.lib.optionals self.doCheck self.testDepends) ++ (if self.pkgconfigDepends == [] then [] else [pkgconfig]) ++ (if self.isLibrary then [] else self.buildDepends ++ self.extraLibraries ++ self.pkgconfigDepends); @@ -68,6 +69,9 @@ # build-depends Cabal field buildDepends = []; + # build-depends Cabal fields stated in test-suite stanzas + testDepends = []; + # build-tools Cabal field buildTools = []; From 1dba3fe14af4c67b80d811962db9973e22fa635c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 21:15:43 +0100 Subject: [PATCH 175/572] pkgs/build-support/cabal: enable 'doCheck=true' by default --- pkgs/build-support/cabal/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index 26100c98ad7..038b05df8a4 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -90,6 +90,10 @@ # pass the '--enable-split-objs' flag to cabal in the configure stage enableSplitObjs = true; + # pass the '--enable-tests' flag to cabal in the configure stage + # and run any regression test suites the package might have + doCheck = true; + extraConfigureFlags = [ (stdenv.lib.enableFeature enableLibraryProfiling "library-profiling") (stdenv.lib.enableFeature self.enableSplitObjs "split-objs") From 5b9a7fc95a0ed8f60c6bd9e302fc5c25e3282477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Sat, 23 Feb 2013 12:32:15 +0100 Subject: [PATCH 176/572] my-env/default.nix: fix "sdl-env" vs "env-sdl" typo my-env/default.nix lists an example on how to create an SDL environment that can be installed with "nix-env -i sdl-env". That is actually wrong and will not work. The correct command is "nix-env -i env-sdl". --- pkgs/misc/my-env/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/misc/my-env/default.nix b/pkgs/misc/my-env/default.nix index 19c105bf4f0..39fd9979266 100644 --- a/pkgs/misc/my-env/default.nix +++ b/pkgs/misc/my-env/default.nix @@ -12,7 +12,7 @@ } # Then you can install it by: - # $ nix-env -i sdl-env + # $ nix-env -i env-sdl # And you can load it simply calling: # $ load-env-sdl # and this will update your env vars to have 'make' and 'gcc' finding the SDL From e779adc60706ade4ccdc837e54dcb4b0ffd94405 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 21:48:36 +0100 Subject: [PATCH 177/572] pkgs/build-support/cabal: set 'checkPhase' only if 'doCheck' is true --- pkgs/build-support/cabal/default.nix | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index 038b05df8a4..334b7e6f2c2 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -139,14 +139,12 @@ eval "$postBuild" ''; - checkPhase = '' - if [ -n "$doCheck" ]; then - eval "$preCheck" + checkPhase = stdenv.lib.optional self.doCheck '' + eval "$preCheck" - ./Setup test + ./Setup test - eval "$postCheck" - fi + eval "$postCheck" ''; # installs via Cabal; creates a registration file for nix-support From 7165babaf12b48ae5ddfc92d500c4016acae45c7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:09:07 +0100 Subject: [PATCH 178/572] Re-generate all Haskell packages with the latest version of cabal2nix. This change brings support for building and running the regressions test suites. --- pkgs/applications/editors/leksah/default.nix | 1 + .../libraries/haskell/Cabal/1.14.0.nix | 8 +++++++- .../libraries/haskell/Cabal/1.16.0.3.nix | 8 +++++++- .../libraries/haskell/CouchDB/default.nix | 3 ++- .../libraries/haskell/HTTP/4000.2.1.nix | 7 ++++++- .../libraries/haskell/HTTP/4000.2.2.nix | 7 ++++++- .../libraries/haskell/HTTP/4000.2.3.nix | 7 ++++++- .../libraries/haskell/HTTP/4000.2.5.nix | 9 ++++++++- .../libraries/haskell/HTTP/4000.2.8.nix | 9 ++++++++- .../libraries/haskell/IORefCAS/default.nix | 3 ++- .../libraries/haskell/ReadArgs/default.nix | 3 ++- .../haskell/SafeSemaphore/default.nix | 3 ++- .../libraries/haskell/active/default.nix | 7 ++++++- .../libraries/haskell/aeson/default.nix | 7 ++++++- .../libraries/haskell/async/2.0.1.3.nix | 3 ++- .../libraries/haskell/async/2.0.1.4.nix | 3 ++- .../haskell/attoparsec-conduit/default.nix | 4 +++- .../libraries/haskell/attoparsec/default.nix | 7 ++++++- .../haskell/base64-bytestring/default.nix | 8 +++++++- .../haskell/base64-conduit/default.nix | 6 +++++- .../libraries/haskell/binary/default.nix | 7 ++++++- .../haskell/blaze-builder-conduit/default.nix | 7 ++++++- .../libraries/haskell/blaze-html/default.nix | 8 +++++++- .../libraries/haskell/blaze-markup/default.nix | 8 +++++++- .../haskell/blaze-textual/default.nix | 8 +++++++- .../libraries/haskell/bson/default.nix | 8 ++++++-- .../haskell/case-insensitive/default.nix | 5 ++++- .../libraries/haskell/cipher-aes/default.nix | 5 ++++- .../libraries/haskell/cipher-rc4/default.nix | 5 ++++- .../haskell/classy-prelude-conduit/default.nix | 5 +++-- .../haskell/classy-prelude/default.nix | 5 +++-- .../haskell/clientsession/default.nix | 3 ++- .../libraries/haskell/conduit/default.nix | 7 +++++-- .../haskell/crypto-conduit/default.nix | 8 +++++++- .../haskell/crypto-numbers/default.nix | 8 +++++++- .../haskell/crypto-pubkey/default.nix | 7 ++++++- .../libraries/haskell/cryptocipher/default.nix | 9 +++++++-- .../libraries/haskell/cryptohash/default.nix | 8 +++++++- .../libraries/haskell/css-text/default.nix | 3 ++- .../libraries/haskell/cuda/default.nix | 2 +- .../libraries/haskell/deepseq-th/default.nix | 1 + .../libraries/haskell/diagrams/contrib.nix | 9 +++++++-- .../haskell/digestive-functors/default.nix | 3 ++- .../haskell/distributed-process/default.nix | 12 +++++++++--- .../libraries/haskell/distributive/default.nix | 3 ++- .../libraries/haskell/doctest/default.nix | 8 +++++++- .../haskell/double-conversion/default.nix | 3 ++- .../haskell/email-validate/default.nix | 8 +++++++- .../haskell/exception-transformers/default.nix | 3 ++- .../libraries/haskell/fast-logger/default.nix | 4 +++- .../libraries/haskell/file-embed/default.nix | 3 ++- .../haskell/filesystem-conduit/default.nix | 6 +++++- .../libraries/haskell/fsnotify/default.nix | 8 +++++++- .../libraries/haskell/ghc-events/default.nix | 1 + .../libraries/haskell/graphviz/default.nix | 8 ++++++-- .../libraries/haskell/hakyll/default.nix | 13 ++++++++++--- .../libraries/haskell/hamlet/default.nix | 5 +++-- .../haskell/happstack/happstack-server.nix | 8 +++++--- .../libraries/haskell/hashable/1.1.2.5.nix | 7 ++++++- .../libraries/haskell/hastache/default.nix | 3 ++- .../libraries/haskell/hjsmin/default.nix | 8 +++++++- .../libraries/haskell/hsemail/default.nix | 3 ++- .../haskell/hspec-expectations/default.nix | 3 ++- .../libraries/haskell/hspec/default.nix | 9 +++++++-- .../libraries/haskell/html-conduit/default.nix | 6 ++++-- .../libraries/haskell/http-conduit/default.nix | 16 ++++++++++++---- .../libraries/haskell/http-date/default.nix | 3 ++- .../haskell/http-reverse-proxy/default.nix | 9 +++++++-- .../libraries/haskell/http-types/default.nix | 3 ++- .../libraries/haskell/io-choice/default.nix | 4 +++- .../libraries/haskell/iproute/default.nix | 7 ++++++- .../haskell/language-c-quote/default.nix | 6 +++++- .../haskell/language-javascript/default.nix | 8 +++++++- .../libraries/haskell/largeword/default.nix | 8 +++++++- .../libraries/haskell/leksah/leksah-server.nix | 5 +++-- .../libraries/haskell/lens/default.nix | 18 +++++++++++++----- .../libraries/haskell/libmpd/default.nix | 7 ++++++- .../libraries/haskell/lifted-base/default.nix | 8 +++++++- .../haskell/math-functions/default.nix | 8 +++++++- .../libraries/haskell/minimorph/default.nix | 3 ++- .../libraries/haskell/miniutter/default.nix | 4 +++- .../libraries/haskell/monad-par/0.3.4.nix | 11 +++++++++-- .../libraries/haskell/mwc-random/default.nix | 8 +++++++- .../haskell/network-conduit/default.nix | 1 + .../haskell/network-transport-tcp/default.nix | 12 +++++++++++- .../libraries/haskell/network/2.3.0.13.nix | 3 ++- .../libraries/haskell/network/2.3.1.0.nix | 3 ++- .../libraries/haskell/network/2.4.1.2.nix | 7 ++++++- .../libraries/haskell/numbers/default.nix | 5 ++++- .../haskell/optparse-applicative/default.nix | 7 ++++++- .../libraries/haskell/path-pieces/default.nix | 3 ++- .../libraries/haskell/pem/default.nix | 7 ++++++- .../haskell/persistent-template/default.nix | 5 ++++- .../libraries/haskell/persistent/default.nix | 8 +++++--- .../haskell/postgresql-simple/default.nix | 6 ++++-- .../haskell/project-template/default.nix | 7 ++++++- .../haskell/publicsuffixlist/default.nix | 3 ++- .../haskell/reactive-banana/default.nix | 8 +++++++- .../libraries/haskell/resourcet/default.nix | 3 ++- .../libraries/haskell/setenv/default.nix | 3 ++- .../haskell/shakespeare-css/default.nix | 3 ++- .../haskell/shakespeare-js/default.nix | 3 ++- .../haskell/shakespeare-text/default.nix | 3 ++- .../libraries/haskell/shakespeare/default.nix | 3 ++- .../libraries/haskell/shelly/default.nix | 6 +++++- .../libraries/haskell/silently/default.nix | 3 ++- .../haskell/simple-sendfile/default.nix | 3 ++- .../libraries/haskell/skein/default.nix | 3 ++- .../libraries/haskell/split/0.2.1.1.nix | 3 ++- .../libraries/haskell/split/0.2.1.2.nix | 3 ++- .../libraries/haskell/statistics/default.nix | 10 ++++++++-- .../haskell/stylish-haskell/default.nix | 8 ++++++-- .../haskell/tagstream-conduit/default.nix | 4 +++- .../libraries/haskell/text/0.11.1.13.nix | 8 +++++++- .../libraries/haskell/text/0.11.2.0.nix | 8 +++++++- .../libraries/haskell/text/0.11.2.3.nix | 8 +++++++- .../libraries/haskell/threads/default.nix | 8 +++++++- .../libraries/haskell/time/1.4.0.2.nix | 7 ++++++- .../libraries/haskell/tls/default.nix | 9 +++++++-- .../libraries/haskell/unix-time/default.nix | 3 ++- .../haskell/unordered-containers/default.nix | 8 +++++++- .../libraries/haskell/utility-ht/default.nix | 3 ++- .../libraries/haskell/uuid/default.nix | 7 ++++++- .../libraries/haskell/vty/default.nix | 8 ++++++-- .../haskell/wai-app-static/default.nix | 10 +++++++--- .../libraries/haskell/wai-extra/default.nix | 9 +++++++-- .../libraries/haskell/warp/default.nix | 10 ++++++++-- .../libraries/haskell/word8/default.nix | 3 ++- .../libraries/haskell/xml-conduit/default.nix | 7 +++++-- .../libraries/haskell/xml-hamlet/default.nix | 3 ++- .../libraries/haskell/xss-sanitize/default.nix | 7 ++++++- .../libraries/haskell/yaml/default.nix | 7 +++++-- .../libraries/haskell/yesod-core/default.nix | 14 +++++++++----- .../libraries/haskell/yesod-form/default.nix | 3 ++- .../libraries/haskell/yesod-routes/default.nix | 3 ++- .../libraries/haskell/yesod-static/default.nix | 7 ++++++- .../libraries/haskell/yesod-test/default.nix | 1 + .../haskell/zeromq-haskell/default.nix | 7 ++++++- .../haskell/zeromq3-haskell/default.nix | 7 ++++++- .../libraries/haskell/zip-archive/default.nix | 5 ++++- .../haskell/zlib-bindings/default.nix | 3 ++- .../libraries/haskell/zlib-conduit/default.nix | 5 ++++- .../tools/documentation/haddock/2.10.0.nix | 1 + .../tools/documentation/haddock/2.11.0.nix | 1 + .../tools/documentation/haddock/2.12.0.nix | 1 + .../tools/documentation/haddock/2.13.1.nix | 1 + .../tools/documentation/haddock/2.9.4.nix | 4 +++- 147 files changed, 681 insertions(+), 181 deletions(-) diff --git a/pkgs/applications/editors/leksah/default.nix b/pkgs/applications/editors/leksah/default.nix index 81fbf5ad98a..86f0106ed05 100644 --- a/pkgs/applications/editors/leksah/default.nix +++ b/pkgs/applications/editors/leksah/default.nix @@ -16,6 +16,7 @@ cabal.mkDerivation (self: { QuickCheck regexBase regexTdfa strict text time transformers utf8String ]; + testDepends = [ Cabal QuickCheck ]; noHaddock = true; meta = { homepage = "http://www.leksah.org"; diff --git a/pkgs/development/libraries/haskell/Cabal/1.14.0.nix b/pkgs/development/libraries/haskell/Cabal/1.14.0.nix index b424551a2f9..09171ab2570 100644 --- a/pkgs/development/libraries/haskell/Cabal/1.14.0.nix +++ b/pkgs/development/libraries/haskell/Cabal/1.14.0.nix @@ -1,10 +1,16 @@ -{ cabal, filepath }: +{ cabal, extensibleExceptions, filepath, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "Cabal"; version = "1.14.0"; sha256 = "1r5b4x1ham5gdg9m9l8idpvr9czlk1q21vqmg0di4adkp2fhlm3j"; buildDepends = [ filepath ]; + testDepends = [ + extensibleExceptions filepath HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "http://www.haskell.org/cabal/"; description = "A framework for packaging Haskell software"; diff --git a/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix b/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix index 68b985507b6..2814eae845f 100644 --- a/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix +++ b/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix @@ -1,10 +1,16 @@ -{ cabal, filepath }: +{ cabal, extensibleExceptions, filepath, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "Cabal"; version = "1.16.0.3"; sha256 = "11lzqgdjaix8n7nabmafl3jf9gisb04c025cmdycfihfajfn49zg"; buildDepends = [ filepath ]; + testDepends = [ + extensibleExceptions filepath HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "http://www.haskell.org/cabal/"; description = "A framework for packaging Haskell software"; diff --git a/pkgs/development/libraries/haskell/CouchDB/default.nix b/pkgs/development/libraries/haskell/CouchDB/default.nix index 705a0a5fdea..4a413e2e7b8 100644 --- a/pkgs/development/libraries/haskell/CouchDB/default.nix +++ b/pkgs/development/libraries/haskell/CouchDB/default.nix @@ -1,10 +1,11 @@ -{ cabal, HTTP, json, mtl, network, utf8String }: +{ cabal, HTTP, HUnit, json, mtl, network, utf8String }: cabal.mkDerivation (self: { pname = "CouchDB"; version = "1.2"; sha256 = "0a9g0iblfyqppcy1ni3ac8f3yv5km95bfblhwqlsk6khydi5ka98"; buildDepends = [ HTTP json mtl network utf8String ]; + testDepends = [ HTTP HUnit json mtl network utf8String ]; meta = { homepage = "http://github.com/arjunguha/haskell-couchdb/"; description = "CouchDB interface"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix index 5c6057ace9e..0c7fa0bfa78 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix @@ -1,10 +1,15 @@ -{ cabal, mtl, network, parsec }: +{ cabal, httpdShed, HUnit, mtl, network, parsec, split +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.1"; sha256 = "01076rk7ly5228pszn54x4nqc6rqq1xw11ij9ajvhzf419islh0a"; buildDepends = [ mtl network parsec ]; + testDepends = [ + httpdShed HUnit network split testFramework testFrameworkHunit + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix index 5fbb2ed8a84..805bf36f5df 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix @@ -1,10 +1,15 @@ -{ cabal, mtl, network, parsec }: +{ cabal, httpdShed, HUnit, mtl, network, parsec, split +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.2"; sha256 = "0qrr9wdj25sdfxifppmw0w14g8skpgf42ic4iqcqylxxzfa8v7vh"; buildDepends = [ mtl network parsec ]; + testDepends = [ + httpdShed HUnit network split testFramework testFrameworkHunit + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix index cff762864bc..a0b328d702c 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix @@ -1,10 +1,15 @@ -{ cabal, mtl, network, parsec }: +{ cabal, httpdShed, HUnit, mtl, network, parsec, split +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.3"; sha256 = "1z7s5rkyljwdl95cwqbqg64i207wjwxgpksrdmvcv82k39srzx80"; buildDepends = [ mtl network parsec ]; + testDepends = [ + httpdShed HUnit network split testFramework testFrameworkHunit + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix index f345e7c98e1..4adae562476 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix @@ -1,10 +1,17 @@ -{ cabal, mtl, network, parsec }: +{ cabal, caseInsensitive, conduit, deepseq, httpdShed, httpTypes +, HUnit, mtl, network, parsec, pureMD5, split, testFramework +, testFrameworkHunit, wai, warp +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.5"; sha256 = "03ij1zkykc438x2r1szz6ddvfhrjywlx61nrz377srcpbdmhxpb7"; buildDepends = [ mtl network parsec ]; + testDepends = [ + caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl + network pureMD5 split testFramework testFrameworkHunit wai warp + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix index 6cb7ed57b4c..f0c103622a9 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix @@ -1,10 +1,17 @@ -{ cabal, mtl, network, parsec }: +{ cabal, caseInsensitive, conduit, deepseq, httpdShed, httpTypes +, HUnit, mtl, network, parsec, pureMD5, split, testFramework +, testFrameworkHunit, wai, warp +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.8"; sha256 = "0p0cwzjw2102bsyfaga6m8b53s6qnhd6byg2j2qla653f6kjlsh8"; buildDepends = [ mtl network parsec ]; + testDepends = [ + caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl + network pureMD5 split testFramework testFrameworkHunit wai warp + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/IORefCAS/default.nix b/pkgs/development/libraries/haskell/IORefCAS/default.nix index fc9b09bd0d7..beec7ded789 100644 --- a/pkgs/development/libraries/haskell/IORefCAS/default.nix +++ b/pkgs/development/libraries/haskell/IORefCAS/default.nix @@ -1,10 +1,11 @@ -{ cabal, bitsAtomic }: +{ cabal, bitsAtomic, HUnit, QuickCheck }: cabal.mkDerivation (self: { pname = "IORefCAS"; version = "0.2"; sha256 = "18hyy3jqr9yky5r873816fqnywrwba90sq6zx61i2vkqlfbll1k9"; buildDepends = [ bitsAtomic ]; + testDepends = [ bitsAtomic HUnit QuickCheck ]; meta = { description = "Atomic compare and swap for IORefs and STRefs"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/ReadArgs/default.nix b/pkgs/development/libraries/haskell/ReadArgs/default.nix index 4b8a513914a..12c3e34571e 100644 --- a/pkgs/development/libraries/haskell/ReadArgs/default.nix +++ b/pkgs/development/libraries/haskell/ReadArgs/default.nix @@ -1,4 +1,4 @@ -{ cabal, systemFilepath, text }: +{ cabal, hspec, systemFilepath, text }: cabal.mkDerivation (self: { pname = "ReadArgs"; @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ systemFilepath text ]; + testDepends = [ hspec systemFilepath text ]; meta = { homepage = "http://github.com/rampion/ReadArgs"; description = "Simple command line argument parsing"; diff --git a/pkgs/development/libraries/haskell/SafeSemaphore/default.nix b/pkgs/development/libraries/haskell/SafeSemaphore/default.nix index ad161f97102..d4cc7490277 100644 --- a/pkgs/development/libraries/haskell/SafeSemaphore/default.nix +++ b/pkgs/development/libraries/haskell/SafeSemaphore/default.nix @@ -1,10 +1,11 @@ -{ cabal, stm }: +{ cabal, HUnit, stm }: cabal.mkDerivation (self: { pname = "SafeSemaphore"; version = "0.9.0"; sha256 = "1xa30cciw8wmri675kdsz4pb5qwrh592pzylbhawqsvsarf80gz4"; buildDepends = [ stm ]; + testDepends = [ HUnit ]; meta = { homepage = "https://github.com/ChrisKuklewicz/SafeSemaphore"; description = "Much safer replacement for QSemN, QSem, and SampleVar"; diff --git a/pkgs/development/libraries/haskell/active/default.nix b/pkgs/development/libraries/haskell/active/default.nix index d3307d0a30d..19afa5ab75e 100644 --- a/pkgs/development/libraries/haskell/active/default.nix +++ b/pkgs/development/libraries/haskell/active/default.nix @@ -1,10 +1,15 @@ -{ cabal, newtype, semigroupoids, semigroups, vectorSpace }: +{ cabal, newtype, QuickCheck, semigroupoids, semigroups +, vectorSpace +}: cabal.mkDerivation (self: { pname = "active"; version = "0.1.0.3"; sha256 = "0jarc270z6raak1vz30jy2gl0pkj9a2x3ib5hq7vsl2ljbvbgyqi"; buildDepends = [ newtype semigroupoids semigroups vectorSpace ]; + testDepends = [ + newtype QuickCheck semigroupoids semigroups vectorSpace + ]; jailbreak = true; meta = { description = "Abstractions for animation"; diff --git a/pkgs/development/libraries/haskell/aeson/default.nix b/pkgs/development/libraries/haskell/aeson/default.nix index b0f89619b1c..515cec37a99 100644 --- a/pkgs/development/libraries/haskell/aeson/default.nix +++ b/pkgs/development/libraries/haskell/aeson/default.nix @@ -1,5 +1,6 @@ { cabal, attoparsec, blazeBuilder, deepseq, dlist, hashable, mtl -, syb, text, time, unorderedContainers, vector +, QuickCheck, syb, testFramework, testFrameworkQuickcheck2, text +, time, unorderedContainers, vector }: cabal.mkDerivation (self: { @@ -10,6 +11,10 @@ cabal.mkDerivation (self: { attoparsec blazeBuilder deepseq dlist hashable mtl syb text time unorderedContainers vector ]; + testDepends = [ + attoparsec QuickCheck testFramework testFrameworkQuickcheck2 text + time + ]; meta = { homepage = "https://github.com/bos/aeson"; description = "Fast JSON parsing and encoding"; diff --git a/pkgs/development/libraries/haskell/async/2.0.1.3.nix b/pkgs/development/libraries/haskell/async/2.0.1.3.nix index a0da6384e95..1b943208dea 100644 --- a/pkgs/development/libraries/haskell/async/2.0.1.3.nix +++ b/pkgs/development/libraries/haskell/async/2.0.1.3.nix @@ -1,10 +1,11 @@ -{ cabal, stm }: +{ cabal, HUnit, stm, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "async"; version = "2.0.1.3"; sha256 = "1rbjr6xw5sp8npw17fxg0942kikssv2hyci2sy26r0na98483mkh"; buildDepends = [ stm ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "https://github.com/simonmar/async"; description = "Run IO operations asynchronously and wait for their results"; diff --git a/pkgs/development/libraries/haskell/async/2.0.1.4.nix b/pkgs/development/libraries/haskell/async/2.0.1.4.nix index c5caa55e97f..5dd76b4d6e0 100644 --- a/pkgs/development/libraries/haskell/async/2.0.1.4.nix +++ b/pkgs/development/libraries/haskell/async/2.0.1.4.nix @@ -1,10 +1,11 @@ -{ cabal, stm }: +{ cabal, HUnit, stm, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "async"; version = "2.0.1.4"; sha256 = "1hi40bjwpl65mz7zj0sgh16bp9dwafbm5ysi2q8fzwwq5l0zxpa1"; buildDepends = [ stm ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "https://github.com/simonmar/async"; description = "Run IO operations asynchronously and wait for their results"; diff --git a/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix b/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix index 916f38f66c5..37af5eec0af 100644 --- a/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix +++ b/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix @@ -1,10 +1,12 @@ -{ cabal, attoparsec, conduit, text, transformers }: +{ cabal, attoparsec, conduit, hspec, resourcet, text, transformers +}: cabal.mkDerivation (self: { pname = "attoparsec-conduit"; version = "1.0.0"; sha256 = "1aw071qcwhxwpd6azhgaiia97rhj50rms4pysbc19iihmdih3ib8"; buildDepends = [ attoparsec conduit text transformers ]; + testDepends = [ attoparsec conduit hspec resourcet text ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Consume attoparsec parsers via conduit"; diff --git a/pkgs/development/libraries/haskell/attoparsec/default.nix b/pkgs/development/libraries/haskell/attoparsec/default.nix index fda3ae1474b..c352ce7ca8e 100644 --- a/pkgs/development/libraries/haskell/attoparsec/default.nix +++ b/pkgs/development/libraries/haskell/attoparsec/default.nix @@ -1,10 +1,15 @@ -{ cabal, deepseq, text }: +{ cabal, deepseq, QuickCheck, testFramework +, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "attoparsec"; version = "0.10.4.0"; sha256 = "0inkcrl40j9kgcmmi0xkcszayqjd5yn7i9fyvv0ywfqwpl6lxf5n"; buildDepends = [ deepseq text ]; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 text + ]; meta = { homepage = "https://github.com/bos/attoparsec"; description = "Fast combinator parsing for bytestrings and text"; diff --git a/pkgs/development/libraries/haskell/base64-bytestring/default.nix b/pkgs/development/libraries/haskell/base64-bytestring/default.nix index 5891131d7e8..67450dc8887 100644 --- a/pkgs/development/libraries/haskell/base64-bytestring/default.nix +++ b/pkgs/development/libraries/haskell/base64-bytestring/default.nix @@ -1,9 +1,15 @@ -{ cabal }: +{ cabal, HUnit, QuickCheck, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "base64-bytestring"; version = "1.0.0.1"; sha256 = "0l1v4ddjdsgi9nqzyzcxxj76rwar3lzx8gmwf2r54bqan3san9db"; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/base64-bytestring"; description = "Fast base64 encoding and decoding for ByteStrings"; diff --git a/pkgs/development/libraries/haskell/base64-conduit/default.nix b/pkgs/development/libraries/haskell/base64-conduit/default.nix index c6d25384be2..3a2d044de64 100644 --- a/pkgs/development/libraries/haskell/base64-conduit/default.nix +++ b/pkgs/development/libraries/haskell/base64-conduit/default.nix @@ -1,10 +1,14 @@ -{ cabal, base64Bytestring, conduit }: +{ cabal, base64Bytestring, conduit, hspec, QuickCheck, transformers +}: cabal.mkDerivation (self: { pname = "base64-conduit"; version = "1.0.0"; sha256 = "10wjgdixk5da48jpm2i91vy3ckdqpbpgba6hzn7ak6d3qac22m9q"; buildDepends = [ base64Bytestring conduit ]; + testDepends = [ + base64Bytestring conduit hspec QuickCheck transformers + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Base64-encode and decode streams of bytes"; diff --git a/pkgs/development/libraries/haskell/binary/default.nix b/pkgs/development/libraries/haskell/binary/default.nix index ef95d13809f..b4f205e41b2 100644 --- a/pkgs/development/libraries/haskell/binary/default.nix +++ b/pkgs/development/libraries/haskell/binary/default.nix @@ -1,9 +1,14 @@ -{ cabal }: +{ cabal, QuickCheck, random, testFramework +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "binary"; version = "0.6.4.0"; sha256 = "0vq80fzhwil5bx4a2vbd3jvfh1awhg1pwxgvq3lvbi37yzl0ydgh"; + testDepends = [ + QuickCheck random testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/kolmodin/binary"; description = "Binary serialisation for Haskell values using lazy ByteStrings"; diff --git a/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix b/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix index 89ff67fac37..16c352b7a33 100644 --- a/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix +++ b/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix @@ -1,10 +1,15 @@ -{ cabal, blazeBuilder, conduit, text, transformers }: +{ cabal, blazeBuilder, conduit, hspec, QuickCheck, text +, transformers +}: cabal.mkDerivation (self: { pname = "blaze-builder-conduit"; version = "1.0.0"; sha256 = "15q0b0k5dxrp9cw2b4qf9mmjwz1mmxrn3890df5rc9z6yajajrc6"; buildDepends = [ blazeBuilder conduit text transformers ]; + testDepends = [ + blazeBuilder conduit hspec QuickCheck transformers + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Convert streams of builders to streams of bytestrings"; diff --git a/pkgs/development/libraries/haskell/blaze-html/default.nix b/pkgs/development/libraries/haskell/blaze-html/default.nix index 44f0e0b0e23..59e0f718751 100644 --- a/pkgs/development/libraries/haskell/blaze-html/default.nix +++ b/pkgs/development/libraries/haskell/blaze-html/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, blazeMarkup, text }: +{ cabal, blazeBuilder, blazeMarkup, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "blaze-html"; version = "0.6.0.0"; sha256 = "0n8jpmslcs29pfyb8jhp43dg4058ahd9y3kf2p2wr3r6b9yr5dll"; buildDepends = [ blazeBuilder blazeMarkup text ]; + testDepends = [ + blazeBuilder blazeMarkup HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 text + ]; meta = { homepage = "http://jaspervdj.be/blaze"; description = "A blazingly fast HTML combinator library for Haskell"; diff --git a/pkgs/development/libraries/haskell/blaze-markup/default.nix b/pkgs/development/libraries/haskell/blaze-markup/default.nix index becd1a24ec6..afd607fe5e8 100644 --- a/pkgs/development/libraries/haskell/blaze-markup/default.nix +++ b/pkgs/development/libraries/haskell/blaze-markup/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, text }: +{ cabal, blazeBuilder, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "blaze-markup"; version = "0.5.1.4"; sha256 = "0g316qhk7yv6y680w93613apfhm458a01g3jmq42yv4ndydkv4rr"; buildDepends = [ blazeBuilder text ]; + testDepends = [ + blazeBuilder HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 text + ]; meta = { homepage = "http://jaspervdj.be/blaze"; description = "A blazingly fast markup combinator library for Haskell"; diff --git a/pkgs/development/libraries/haskell/blaze-textual/default.nix b/pkgs/development/libraries/haskell/blaze-textual/default.nix index 65f39c8cc08..ede82e5c2ed 100644 --- a/pkgs/development/libraries/haskell/blaze-textual/default.nix +++ b/pkgs/development/libraries/haskell/blaze-textual/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, text, time, vector }: +{ cabal, blazeBuilder, doubleConversion, QuickCheck, testFramework +, testFrameworkQuickcheck2, text, time, vector +}: cabal.mkDerivation (self: { pname = "blaze-textual"; version = "0.2.0.8"; sha256 = "0zzqh53ywzz8ss58glp3i8is8gry5yqzvdjw4xh95fbbzcz4cgc7"; buildDepends = [ blazeBuilder text time vector ]; + testDepends = [ + blazeBuilder doubleConversion QuickCheck testFramework + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/bos/blaze-textual"; description = "Fast rendering of common datatypes"; diff --git a/pkgs/development/libraries/haskell/bson/default.nix b/pkgs/development/libraries/haskell/bson/default.nix index 20107eb1784..6b76aee47a1 100644 --- a/pkgs/development/libraries/haskell/bson/default.nix +++ b/pkgs/development/libraries/haskell/bson/default.nix @@ -1,5 +1,5 @@ -{ cabal, binary, cryptohash, dataBinaryIeee754, mtl, network, text -, time +{ cabal, binary, cryptohash, dataBinaryIeee754, mtl, network +, QuickCheck, testFramework, testFrameworkQuickcheck2, text, time }: cabal.mkDerivation (self: { @@ -9,6 +9,10 @@ cabal.mkDerivation (self: { buildDepends = [ binary cryptohash dataBinaryIeee754 mtl network text time ]; + testDepends = [ + binary cryptohash dataBinaryIeee754 mtl network QuickCheck + testFramework testFrameworkQuickcheck2 text time + ]; meta = { homepage = "http://github.com/selectel/bson-haskell"; description = "BSON documents are JSON-like objects with a standard binary encoding"; diff --git a/pkgs/development/libraries/haskell/case-insensitive/default.nix b/pkgs/development/libraries/haskell/case-insensitive/default.nix index 58e0ebbbe00..51425084e1c 100644 --- a/pkgs/development/libraries/haskell/case-insensitive/default.nix +++ b/pkgs/development/libraries/haskell/case-insensitive/default.nix @@ -1,10 +1,13 @@ -{ cabal, deepseq, hashable, text }: +{ cabal, deepseq, hashable, HUnit, testFramework +, testFrameworkHunit, text +}: cabal.mkDerivation (self: { pname = "case-insensitive"; version = "1.0"; sha256 = "1x437b5yyh930a5dr642lvfdgpx12w4ms70whiw1ffjjhssb88zk"; buildDepends = [ deepseq hashable text ]; + testDepends = [ HUnit testFramework testFrameworkHunit text ]; meta = { homepage = "https://github.com/basvandijk/case-insensitive"; description = "Case insensitive string comparison"; diff --git a/pkgs/development/libraries/haskell/cipher-aes/default.nix b/pkgs/development/libraries/haskell/cipher-aes/default.nix index bae23737585..ca2f3615929 100644 --- a/pkgs/development/libraries/haskell/cipher-aes/default.nix +++ b/pkgs/development/libraries/haskell/cipher-aes/default.nix @@ -1,9 +1,12 @@ -{ cabal }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { pname = "cipher-aes"; version = "0.1.7"; sha256 = "1iai9c4rvxframylvc0xwx2nk6s0rsj4dc42wi334xyinilvfyng"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-cipher-aes"; description = "Fast AES cipher implementation with advanced mode of operations"; diff --git a/pkgs/development/libraries/haskell/cipher-rc4/default.nix b/pkgs/development/libraries/haskell/cipher-rc4/default.nix index 234491cde36..7d3cacdd67a 100644 --- a/pkgs/development/libraries/haskell/cipher-rc4/default.nix +++ b/pkgs/development/libraries/haskell/cipher-rc4/default.nix @@ -1,9 +1,12 @@ -{ cabal }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { pname = "cipher-rc4"; version = "0.1.2"; sha256 = "0nyrqms7h3hq236h03sjjjqdcxn3iz3fg4ifqj43f4nb8gv0ifb1"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-cipher-rc4"; description = "Fast RC4 cipher implementation"; diff --git a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix index 85a1fb7bdef..6af68223834 100644 --- a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix @@ -1,5 +1,5 @@ -{ cabal, classyPrelude, conduit, monadControl, resourcet -, transformers, void, xmlConduit +{ cabal, classyPrelude, conduit, hspec, monadControl, QuickCheck +, resourcet, transformers, void, xmlConduit }: cabal.mkDerivation (self: { @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { classyPrelude conduit monadControl resourcet transformers void xmlConduit ]; + testDepends = [ conduit hspec QuickCheck transformers ]; meta = { homepage = "https://github.com/snoyberg/classy-prelude"; description = "conduit instances for classy-prelude"; diff --git a/pkgs/development/libraries/haskell/classy-prelude/default.nix b/pkgs/development/libraries/haskell/classy-prelude/default.nix index 01c26aab79f..4c2f076039e 100644 --- a/pkgs/development/libraries/haskell/classy-prelude/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude/default.nix @@ -1,5 +1,5 @@ -{ cabal, basicPrelude, hashable, liftedBase, systemFilepath, text -, transformers, unorderedContainers, vector +{ cabal, basicPrelude, hashable, hspec, liftedBase, QuickCheck +, systemFilepath, text, transformers, unorderedContainers, vector }: cabal.mkDerivation (self: { @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { basicPrelude hashable liftedBase systemFilepath text transformers unorderedContainers vector ]; + testDepends = [ hspec QuickCheck transformers ]; meta = { homepage = "https://github.com/snoyberg/classy-prelude"; description = "A typeclass-based Prelude"; diff --git a/pkgs/development/libraries/haskell/clientsession/default.nix b/pkgs/development/libraries/haskell/clientsession/default.nix index 81ae5ebddb0..edbb079eec4 100644 --- a/pkgs/development/libraries/haskell/clientsession/default.nix +++ b/pkgs/development/libraries/haskell/clientsession/default.nix @@ -1,5 +1,5 @@ { cabal, base64Bytestring, cereal, cipherAes, cprngAes, cryptoApi -, entropy, skein, tagged +, entropy, hspec, HUnit, QuickCheck, skein, tagged, transformers }: cabal.mkDerivation (self: { @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { base64Bytestring cereal cipherAes cprngAes cryptoApi entropy skein tagged ]; + testDepends = [ cereal hspec HUnit QuickCheck transformers ]; meta = { homepage = "http://github.com/yesodweb/clientsession/tree/master"; description = "Securely store session data in a client-side cookie"; diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix index 3ea60db5fb5..4dada245791 100644 --- a/pkgs/development/libraries/haskell/conduit/default.nix +++ b/pkgs/development/libraries/haskell/conduit/default.nix @@ -1,5 +1,5 @@ -{ cabal, liftedBase, monadControl, resourcet, text, transformers -, transformersBase, void +{ cabal, doctest, hspec, liftedBase, monadControl, QuickCheck +, resourcet, text, transformers, transformersBase, void }: cabal.mkDerivation (self: { @@ -10,6 +10,9 @@ cabal.mkDerivation (self: { liftedBase monadControl resourcet text transformers transformersBase void ]; + testDepends = [ + doctest hspec QuickCheck resourcet text transformers void + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Streaming data processing library"; diff --git a/pkgs/development/libraries/haskell/crypto-conduit/default.nix b/pkgs/development/libraries/haskell/crypto-conduit/default.nix index 29163f89737..69351a2a5aa 100644 --- a/pkgs/development/libraries/haskell/crypto-conduit/default.nix +++ b/pkgs/development/libraries/haskell/crypto-conduit/default.nix @@ -1,10 +1,16 @@ -{ cabal, cereal, conduit, cryptoApi, transformers }: +{ cabal, cereal, conduit, cryptoApi, cryptocipher, cryptohash +, hspec, skein, transformers +}: cabal.mkDerivation (self: { pname = "crypto-conduit"; version = "0.5.0"; sha256 = "0mlf2l784w0wyfjqsxzfdwmn1wb0z1s6mb8kdhw8x1z4a8gy9a92"; buildDepends = [ cereal conduit cryptoApi transformers ]; + testDepends = [ + cereal conduit cryptoApi cryptocipher cryptohash hspec skein + transformers + ]; meta = { homepage = "https://github.com/meteficha/crypto-conduit"; description = "Conduit interface for cryptographic operations (from crypto-api)"; diff --git a/pkgs/development/libraries/haskell/crypto-numbers/default.nix b/pkgs/development/libraries/haskell/crypto-numbers/default.nix index 70cd3f44252..af6985cd9ed 100644 --- a/pkgs/development/libraries/haskell/crypto-numbers/default.nix +++ b/pkgs/development/libraries/haskell/crypto-numbers/default.nix @@ -1,10 +1,16 @@ -{ cabal, cryptoRandomApi, vector }: +{ cabal, cryptoRandomApi, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, vector +}: cabal.mkDerivation (self: { pname = "crypto-numbers"; version = "0.1.3"; sha256 = "115lgnay3ly5r53flh3v5jygqks0rg1i8qmbvrqf9nkmnmw6a5x1"; buildDepends = [ cryptoRandomApi vector ]; + testDepends = [ + cryptoRandomApi HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "http://github.com/vincenthz/hs-crypto-numbers"; description = "Cryptographic numbers: functions and algorithms"; diff --git a/pkgs/development/libraries/haskell/crypto-pubkey/default.nix b/pkgs/development/libraries/haskell/crypto-pubkey/default.nix index dc6d83a765d..b095b1ea5f4 100644 --- a/pkgs/development/libraries/haskell/crypto-pubkey/default.nix +++ b/pkgs/development/libraries/haskell/crypto-pubkey/default.nix @@ -1,5 +1,6 @@ { cabal, cryptohash, cryptoNumbers, cryptoPubkeyTypes -, cryptoRandomApi +, cryptoRandomApi, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { @@ -9,6 +10,10 @@ cabal.mkDerivation (self: { buildDepends = [ cryptohash cryptoNumbers cryptoPubkeyTypes cryptoRandomApi ]; + testDepends = [ + cryptohash cryptoNumbers cryptoRandomApi HUnit QuickCheck + testFramework testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-crypto-pubkey"; description = "Public Key cryptography"; diff --git a/pkgs/development/libraries/haskell/cryptocipher/default.nix b/pkgs/development/libraries/haskell/cryptocipher/default.nix index 275622d3cad..dba34752611 100644 --- a/pkgs/development/libraries/haskell/cryptocipher/default.nix +++ b/pkgs/development/libraries/haskell/cryptocipher/default.nix @@ -1,5 +1,6 @@ -{ cabal, cereal, cipherAes, cipherRc4, cpu, cryptoApi -, cryptoPubkeyTypes, primitive, tagged, vector +{ cabal, cereal, cipherAes, cipherRc4, cpu, cryptoApi, cryptohash +, cryptoPubkeyTypes, entropy, primitive, QuickCheck, tagged +, testFramework, testFrameworkQuickcheck2, vector }: cabal.mkDerivation (self: { @@ -12,6 +13,10 @@ cabal.mkDerivation (self: { cereal cipherAes cipherRc4 cpu cryptoApi cryptoPubkeyTypes primitive tagged vector ]; + testDepends = [ + cryptoApi cryptohash entropy QuickCheck testFramework + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "http://github.com/vincenthz/hs-cryptocipher"; description = "Symmetrical block and stream ciphers"; diff --git a/pkgs/development/libraries/haskell/cryptohash/default.nix b/pkgs/development/libraries/haskell/cryptohash/default.nix index 2dc0cad9772..81b361a2477 100644 --- a/pkgs/development/libraries/haskell/cryptohash/default.nix +++ b/pkgs/development/libraries/haskell/cryptohash/default.nix @@ -1,10 +1,16 @@ -{ cabal, cereal, cryptoApi, tagged }: +{ cabal, cereal, cryptoApi, HUnit, QuickCheck, tagged +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "cryptohash"; version = "0.8.3"; sha256 = "1fcqbbclii2hmbhi7h64v0nnbc34zzs107m3lqq38iiyy5fvqqv2"; buildDepends = [ cereal cryptoApi tagged ]; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-cryptohash"; description = "collection of crypto hashes, fast, pure and practical"; diff --git a/pkgs/development/libraries/haskell/css-text/default.nix b/pkgs/development/libraries/haskell/css-text/default.nix index 9970d87fbe0..f59a80b2b65 100644 --- a/pkgs/development/libraries/haskell/css-text/default.nix +++ b/pkgs/development/libraries/haskell/css-text/default.nix @@ -1,10 +1,11 @@ -{ cabal, attoparsec, text }: +{ cabal, attoparsec, hspec, HUnit, QuickCheck, text }: cabal.mkDerivation (self: { pname = "css-text"; version = "0.1.1"; sha256 = "10vb08rnfq987w7wrirw8ib1kzafxaaancswm4xpw46ha3rq1m0y"; buildDepends = [ attoparsec text ]; + testDepends = [ attoparsec hspec HUnit QuickCheck text ]; meta = { homepage = "http://www.yesodweb.com/"; description = "CSS parser and renderer"; diff --git a/pkgs/development/libraries/haskell/cuda/default.nix b/pkgs/development/libraries/haskell/cuda/default.nix index bb7f0e23fbf..3baa02d2674 100644 --- a/pkgs/development/libraries/haskell/cuda/default.nix +++ b/pkgs/development/libraries/haskell/cuda/default.nix @@ -21,7 +21,7 @@ cabal.mkDerivation (self: { test -f $i && ghc --make $i done - for p in $extraBuildInputs $propagatedNativeBuildInputs; do + for p in $extraBuildInputs $propagatedBuildNativeInputs; do if [ -d "$p/include" ]; then extraLibDirs="$extraLibDirs --extra-include-dir=$p/include" fi diff --git a/pkgs/development/libraries/haskell/deepseq-th/default.nix b/pkgs/development/libraries/haskell/deepseq-th/default.nix index 2af4bb9f3f1..228fcd28c78 100644 --- a/pkgs/development/libraries/haskell/deepseq-th/default.nix +++ b/pkgs/development/libraries/haskell/deepseq-th/default.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.1.0.4"; sha256 = "12wk8higrp12b22zzz1b4ar1q5h7flk22bp2rvswsqri2zkbi965"; buildDepends = [ deepseq ]; + testDepends = [ deepseq ]; meta = { description = "Template Haskell based deriver for optimised NFData instances"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/diagrams/contrib.nix b/pkgs/development/libraries/haskell/diagrams/contrib.nix index a25603453a7..3ecfe2db852 100644 --- a/pkgs/development/libraries/haskell/diagrams/contrib.nix +++ b/pkgs/development/libraries/haskell/diagrams/contrib.nix @@ -1,5 +1,6 @@ -{ cabal, colour, dataDefault, diagramsLib, forceLayout, lens, mtl -, vectorSpace +{ cabal, colour, dataDefault, diagramsLib, forceLayout, HUnit, lens +, mtl, QuickCheck, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2, vectorSpace }: cabal.mkDerivation (self: { @@ -9,6 +10,10 @@ cabal.mkDerivation (self: { buildDepends = [ colour dataDefault diagramsLib forceLayout lens mtl vectorSpace ]; + testDepends = [ + diagramsLib HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://projects.haskell.org/diagrams/"; description = "Collection of user contributions to diagrams EDSL"; diff --git a/pkgs/development/libraries/haskell/digestive-functors/default.nix b/pkgs/development/libraries/haskell/digestive-functors/default.nix index 4ba8b16ec46..0b956680a84 100644 --- a/pkgs/development/libraries/haskell/digestive-functors/default.nix +++ b/pkgs/development/libraries/haskell/digestive-functors/default.nix @@ -1,10 +1,11 @@ -{ cabal, mtl, text }: +{ cabal, HUnit, mtl, testFramework, testFrameworkHunit, text }: cabal.mkDerivation (self: { pname = "digestive-functors"; version = "0.6.0.1"; sha256 = "1ni1hfmpz14yvgjphwz64hqhg7xbhvvqbdnapspipplvnl0rcmhi"; buildDepends = [ mtl text ]; + testDepends = [ HUnit mtl testFramework testFrameworkHunit text ]; meta = { homepage = "http://github.com/jaspervdj/digestive-functors"; description = "A practical formlet library"; diff --git a/pkgs/development/libraries/haskell/distributed-process/default.nix b/pkgs/development/libraries/haskell/distributed-process/default.nix index 1e83cbaa8d9..0427a937f84 100644 --- a/pkgs/development/libraries/haskell/distributed-process/default.nix +++ b/pkgs/development/libraries/haskell/distributed-process/default.nix @@ -1,6 +1,7 @@ -{ cabal, binary, dataAccessor, distributedStatic, mtl -, networkTransport, random, rank1dynamic, stm, syb, time -, transformers +{ cabal, ansiTerminal, binary, dataAccessor, distributedStatic +, HUnit, mtl, network, networkTransport, networkTransportTcp +, random, rank1dynamic, stm, syb, testFramework, testFrameworkHunit +, time, transformers }: cabal.mkDerivation (self: { @@ -13,6 +14,11 @@ cabal.mkDerivation (self: { binary dataAccessor distributedStatic mtl networkTransport random rank1dynamic stm syb time transformers ]; + testDepends = [ + ansiTerminal binary distributedStatic HUnit network + networkTransport networkTransportTcp random stm testFramework + testFrameworkHunit + ]; noHaddock = true; meta = { homepage = "http://github.com/haskell-distributed/distributed-process"; diff --git a/pkgs/development/libraries/haskell/distributive/default.nix b/pkgs/development/libraries/haskell/distributive/default.nix index 6709569b054..bd8b64aa509 100644 --- a/pkgs/development/libraries/haskell/distributive/default.nix +++ b/pkgs/development/libraries/haskell/distributive/default.nix @@ -1,10 +1,11 @@ -{ cabal, transformers, transformersCompat }: +{ cabal, doctest, filepath, transformers, transformersCompat }: cabal.mkDerivation (self: { pname = "distributive"; version = "0.3"; sha256 = "0z6vwak2n91vpx9ps9j1pbiw0zlh9jmds84yx1yqssbqx8npi32f"; buildDepends = [ transformers transformersCompat ]; + testDepends = [ doctest filepath ]; meta = { homepage = "http://github.com/ekmett/distributive/"; description = "Haskell 98 Distributive functors -- Dual to Traversable"; diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix index df92c4a6cf5..5dffb52ce1e 100644 --- a/pkgs/development/libraries/haskell/doctest/default.nix +++ b/pkgs/development/libraries/haskell/doctest/default.nix @@ -1,4 +1,6 @@ -{ cabal, deepseq, filepath, ghcPaths, syb, transformers }: +{ cabal, baseCompat, deepseq, filepath, ghcPaths, hspec, HUnit +, QuickCheck, setenv, silently, stringbuilder, syb, transformers +}: cabal.mkDerivation (self: { pname = "doctest"; @@ -7,6 +9,10 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ deepseq filepath ghcPaths syb transformers ]; + testDepends = [ + baseCompat deepseq filepath ghcPaths hspec HUnit QuickCheck setenv + silently stringbuilder syb transformers + ]; meta = { homepage = "https://github.com/sol/doctest-haskell#readme"; description = "Test interactive Haskell examples"; diff --git a/pkgs/development/libraries/haskell/double-conversion/default.nix b/pkgs/development/libraries/haskell/double-conversion/default.nix index 878eba660a0..cad61e52ee0 100644 --- a/pkgs/development/libraries/haskell/double-conversion/default.nix +++ b/pkgs/development/libraries/haskell/double-conversion/default.nix @@ -1,10 +1,11 @@ -{ cabal, text }: +{ cabal, testFramework, testFrameworkQuickcheck2, text }: cabal.mkDerivation (self: { pname = "double-conversion"; version = "0.2.0.6"; sha256 = "1c6hy0ghdqf44fvhdpdxjbcr0ahimw283x5fnvjxja36i71qshjp"; buildDepends = [ text ]; + testDepends = [ testFramework testFrameworkQuickcheck2 text ]; meta = { homepage = "https://github.com/bos/double-conversion"; description = "Fast conversion between double precision floating point and text"; diff --git a/pkgs/development/libraries/haskell/email-validate/default.nix b/pkgs/development/libraries/haskell/email-validate/default.nix index 482fd766487..3ba05926179 100644 --- a/pkgs/development/libraries/haskell/email-validate/default.nix +++ b/pkgs/development/libraries/haskell/email-validate/default.nix @@ -1,10 +1,16 @@ -{ cabal, attoparsec }: +{ cabal, attoparsec, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "email-validate"; version = "1.0.0"; sha256 = "0sj1cvn9ap0m8d4cg4cqavvmkd74vp86lyyra9g6f17815sxdbsg"; buildDepends = [ attoparsec ]; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://porg.es/blog/email-address-validation-simpler-faster-more-correct"; description = "Validating an email address string against RFC 5322"; diff --git a/pkgs/development/libraries/haskell/exception-transformers/default.nix b/pkgs/development/libraries/haskell/exception-transformers/default.nix index 5c4a9402020..a4d0cfd247a 100644 --- a/pkgs/development/libraries/haskell/exception-transformers/default.nix +++ b/pkgs/development/libraries/haskell/exception-transformers/default.nix @@ -1,10 +1,11 @@ -{ cabal, stm, transformers }: +{ cabal, HUnit, stm, transformers }: cabal.mkDerivation (self: { pname = "exception-transformers"; version = "0.3.0.3"; sha256 = "0z3z5pppaqqbndd4fgv1czr8f9f4a8r86bwc3bcv88yf7y8cfbwz"; buildDepends = [ stm transformers ]; + testDepends = [ HUnit transformers ]; meta = { homepage = "http://www.eecs.harvard.edu/~mainland/"; description = "Type classes and monads for unchecked extensible exceptions"; diff --git a/pkgs/development/libraries/haskell/fast-logger/default.nix b/pkgs/development/libraries/haskell/fast-logger/default.nix index e266aa15ff8..c9544b2c1f6 100644 --- a/pkgs/development/libraries/haskell/fast-logger/default.nix +++ b/pkgs/development/libraries/haskell/fast-logger/default.nix @@ -1,10 +1,12 @@ -{ cabal, blazeBuilder, dateCache, filepath, text, unixTime }: +{ cabal, blazeBuilder, dateCache, filepath, hspec, text, unixTime +}: cabal.mkDerivation (self: { pname = "fast-logger"; version = "0.3.1"; sha256 = "0sjn3vad0fbchv1fhap71wfnihlwnfhk6p9h9hpnbr0i4b32f1ks"; buildDepends = [ blazeBuilder dateCache filepath text unixTime ]; + testDepends = [ hspec ]; meta = { description = "A fast logging system"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/file-embed/default.nix b/pkgs/development/libraries/haskell/file-embed/default.nix index 119d9d185e5..145d3c1c203 100644 --- a/pkgs/development/libraries/haskell/file-embed/default.nix +++ b/pkgs/development/libraries/haskell/file-embed/default.nix @@ -1,10 +1,11 @@ -{ cabal, filepath }: +{ cabal, filepath, HUnit }: cabal.mkDerivation (self: { pname = "file-embed"; version = "0.0.4.7"; sha256 = "1hn08499kay0y6ik5z1s58s8r9h1nzf116avgi6ia4b565wpzkvi"; buildDepends = [ filepath ]; + testDepends = [ filepath HUnit ]; meta = { homepage = "https://github.com/snoyberg/file-embed"; description = "Use Template Haskell to embed file contents directly"; diff --git a/pkgs/development/libraries/haskell/filesystem-conduit/default.nix b/pkgs/development/libraries/haskell/filesystem-conduit/default.nix index 681ee682073..46ae27fc090 100644 --- a/pkgs/development/libraries/haskell/filesystem-conduit/default.nix +++ b/pkgs/development/libraries/haskell/filesystem-conduit/default.nix @@ -1,4 +1,5 @@ -{ cabal, conduit, systemFileio, systemFilepath, text, transformers +{ cabal, blazeBuilder, conduit, hspec, QuickCheck, systemFileio +, systemFilepath, text, transformers }: cabal.mkDerivation (self: { @@ -8,6 +9,9 @@ cabal.mkDerivation (self: { buildDepends = [ conduit systemFileio systemFilepath text transformers ]; + testDepends = [ + blazeBuilder conduit hspec QuickCheck text transformers + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Use system-filepath data types with conduits"; diff --git a/pkgs/development/libraries/haskell/fsnotify/default.nix b/pkgs/development/libraries/haskell/fsnotify/default.nix index 80b6760a3b7..142b513e592 100644 --- a/pkgs/development/libraries/haskell/fsnotify/default.nix +++ b/pkgs/development/libraries/haskell/fsnotify/default.nix @@ -1,10 +1,16 @@ -{ cabal, hinotify, systemFileio, systemFilepath, text, time }: +{ cabal, Cabal, Glob, hinotify, hspec, QuickCheck, random +, systemFileio, systemFilepath, text, time, uniqueid +}: cabal.mkDerivation (self: { pname = "fsnotify"; version = "0.0.6"; sha256 = "0ib6ansj3vaq9hxxbsq5jw14w2b61wp4jfahzb3c3x46mdb1bqw5"; buildDepends = [ hinotify systemFileio systemFilepath text time ]; + testDepends = [ + Cabal Glob hinotify hspec QuickCheck random systemFileio + systemFilepath text time uniqueid + ]; meta = { description = "Cross platform library for file creation, modification, and deletion notification"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/ghc-events/default.nix b/pkgs/development/libraries/haskell/ghc-events/default.nix index 7eb49668e3c..1c12e5dbb0b 100644 --- a/pkgs/development/libraries/haskell/ghc-events/default.nix +++ b/pkgs/development/libraries/haskell/ghc-events/default.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ binary mtl ]; + testDepends = [ binary mtl ]; meta = { description = "Library and tool for parsing .eventlog files from GHC"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/graphviz/default.nix b/pkgs/development/libraries/haskell/graphviz/default.nix index 609863e808f..9d370993a22 100644 --- a/pkgs/development/libraries/haskell/graphviz/default.nix +++ b/pkgs/development/libraries/haskell/graphviz/default.nix @@ -1,5 +1,5 @@ -{ cabal, colour, dlist, fgl, filepath, polyparse, temporary, text -, transformers, wlPprintText +{ cabal, colour, dlist, fgl, filepath, polyparse, QuickCheck +, temporary, text, transformers, wlPprintText }: cabal.mkDerivation (self: { @@ -10,6 +10,10 @@ cabal.mkDerivation (self: { colour dlist fgl filepath polyparse temporary text transformers wlPprintText ]; + testDepends = [ + colour dlist fgl filepath polyparse QuickCheck temporary text + transformers wlPprintText + ]; meta = { homepage = "http://projects.haskell.org/graphviz/"; description = "Bindings to Graphviz for graph visualisation"; diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix index 68b79bdcc3b..59a32b0d290 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -1,7 +1,8 @@ { cabal, binary, blazeHtml, blazeMarkup, citeprocHs, cmdargs -, cryptohash, deepseq, filepath, httpConduit, httpTypes, lrucache -, mtl, pandoc, parsec, random, regexBase, regexTdfa, snapCore -, snapServer, tagsoup, text, time +, cryptohash, deepseq, filepath, httpConduit, httpTypes, HUnit +, lrucache, mtl, pandoc, parsec, QuickCheck, random, regexBase +, regexTdfa, snapCore, snapServer, tagsoup, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, text, time }: cabal.mkDerivation (self: { @@ -15,6 +16,12 @@ cabal.mkDerivation (self: { filepath httpConduit httpTypes lrucache mtl pandoc parsec random regexBase regexTdfa snapCore snapServer tagsoup text time ]; + 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 + ]; jailbreak = true; meta = { homepage = "http://jaspervdj.be/hakyll"; diff --git a/pkgs/development/libraries/haskell/hamlet/default.nix b/pkgs/development/libraries/haskell/hamlet/default.nix index 28881da84c3..7b61aee26df 100644 --- a/pkgs/development/libraries/haskell/hamlet/default.nix +++ b/pkgs/development/libraries/haskell/hamlet/default.nix @@ -1,5 +1,5 @@ -{ cabal, blazeBuilder, blazeHtml, blazeMarkup, failure, parsec -, shakespeare, text +{ cabal, blazeBuilder, blazeHtml, blazeMarkup, failure, hspec +, HUnit, parsec, shakespeare, text }: cabal.mkDerivation (self: { @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ blazeBuilder blazeHtml blazeMarkup failure parsec shakespeare text ]; + testDepends = [ blazeHtml blazeMarkup hspec HUnit parsec text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Haml-like template files that are compile-time checked"; diff --git a/pkgs/development/libraries/haskell/happstack/happstack-server.nix b/pkgs/development/libraries/haskell/happstack/happstack-server.nix index 3a0b9ab59b9..dba052a0fc1 100644 --- a/pkgs/development/libraries/haskell/happstack/happstack-server.nix +++ b/pkgs/development/libraries/haskell/happstack/happstack-server.nix @@ -1,7 +1,8 @@ { cabal, base64Bytestring, blazeHtml, extensibleExceptions -, filepath, hslogger, html, monadControl, mtl, network, parsec -, sendfile, syb, systemFilepath, text, threads, time, timeCompat -, transformers, transformersBase, utf8String, xhtml, zlib +, filepath, hslogger, html, HUnit, monadControl, mtl, network +, parsec, sendfile, syb, systemFilepath, text, threads, time +, timeCompat, transformers, transformersBase, utf8String, xhtml +, zlib }: cabal.mkDerivation (self: { @@ -14,6 +15,7 @@ cabal.mkDerivation (self: { text threads time timeCompat transformers transformersBase utf8String xhtml zlib ]; + testDepends = [ HUnit parsec zlib ]; meta = { homepage = "http://happstack.com"; description = "Web related tools and services"; diff --git a/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix b/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix index 96fe7ae0eb1..ffb3f98e8b3 100644 --- a/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix +++ b/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix @@ -1,10 +1,15 @@ -{ cabal, text }: +{ cabal, QuickCheck, random, testFramework +, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "hashable"; version = "1.1.2.5"; sha256 = "0gbiaj5ck2bvvinndp2pg7qsm2h2izbnz9wi97dbm7i8r4qd9d9z"; buildDepends = [ text ]; + testDepends = [ + QuickCheck random testFramework testFrameworkQuickcheck2 text + ]; meta = { homepage = "http://github.com/tibbe/hashable"; description = "A class for types that can be converted to a hash value"; diff --git a/pkgs/development/libraries/haskell/hastache/default.nix b/pkgs/development/libraries/haskell/hastache/default.nix index ff8aa25bd2d..15d32de346d 100644 --- a/pkgs/development/libraries/haskell/hastache/default.nix +++ b/pkgs/development/libraries/haskell/hastache/default.nix @@ -1,4 +1,4 @@ -{ cabal, blazeBuilder, filepath, ieee754, mtl, syb, text +{ cabal, blazeBuilder, filepath, HUnit, ieee754, mtl, syb, text , transformers, utf8String }: @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ blazeBuilder filepath ieee754 mtl syb text transformers utf8String ]; + testDepends = [ HUnit mtl syb text ]; meta = { homepage = "http://github.com/lymar/hastache"; description = "Haskell implementation of Mustache templates"; diff --git a/pkgs/development/libraries/haskell/hjsmin/default.nix b/pkgs/development/libraries/haskell/hjsmin/default.nix index 6538e17c41a..9551581dadf 100644 --- a/pkgs/development/libraries/haskell/hjsmin/default.nix +++ b/pkgs/development/libraries/haskell/hjsmin/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, languageJavascript, text }: +{ cabal, blazeBuilder, Cabal, HUnit, languageJavascript, QuickCheck +, testFramework, testFrameworkHunit, text +}: cabal.mkDerivation (self: { pname = "hjsmin"; version = "0.1.4.1"; sha256 = "0r73hd6kn37mdbm2i3g6v3qqm696kyflqs6ajq68qr5sr62sjb1a"; buildDepends = [ blazeBuilder languageJavascript text ]; + testDepends = [ + blazeBuilder Cabal HUnit languageJavascript QuickCheck + testFramework testFrameworkHunit text + ]; meta = { homepage = "http://github.com/alanz/hjsmin"; description = "Haskell implementation of a javascript minifier"; diff --git a/pkgs/development/libraries/haskell/hsemail/default.nix b/pkgs/development/libraries/haskell/hsemail/default.nix index bffe1ad5809..3880537e7ea 100644 --- a/pkgs/development/libraries/haskell/hsemail/default.nix +++ b/pkgs/development/libraries/haskell/hsemail/default.nix @@ -1,10 +1,11 @@ -{ cabal, mtl, parsec }: +{ cabal, doctest, hspec, mtl, parsec }: cabal.mkDerivation (self: { pname = "hsemail"; version = "1.7.5"; sha256 = "0ls6y48bndwgb7ng29wxim4h36rs6b07dqi6ic4hqgbb7lg6fma4"; buildDepends = [ mtl parsec ]; + testDepends = [ doctest hspec parsec ]; meta = { homepage = "http://gitorious.org/hsemail"; description = "Internet Message Parsers"; diff --git a/pkgs/development/libraries/haskell/hspec-expectations/default.nix b/pkgs/development/libraries/haskell/hspec-expectations/default.nix index e7d5756b759..4b84ad62784 100644 --- a/pkgs/development/libraries/haskell/hspec-expectations/default.nix +++ b/pkgs/development/libraries/haskell/hspec-expectations/default.nix @@ -1,10 +1,11 @@ -{ cabal, HUnit }: +{ cabal, hspec, HUnit, markdownUnlit, silently }: cabal.mkDerivation (self: { pname = "hspec-expectations"; version = "0.3.0.3"; sha256 = "1ppcbfmcgrd1lwswa293fxwny6khhg4blygfbcsawrvgc5ji0q74"; buildDepends = [ HUnit ]; + testDepends = [ hspec HUnit markdownUnlit silently ]; meta = { homepage = "https://github.com/sol/hspec-expectations#readme"; description = "Catchy combinators for HUnit"; diff --git a/pkgs/development/libraries/haskell/hspec/default.nix b/pkgs/development/libraries/haskell/hspec/default.nix index 4c897f20ef7..949874bfa91 100644 --- a/pkgs/development/libraries/haskell/hspec/default.nix +++ b/pkgs/development/libraries/haskell/hspec/default.nix @@ -1,5 +1,6 @@ -{ cabal, ansiTerminal, filepath, hspecExpectations, HUnit -, QuickCheck, setenv, silently, time, transformers +{ cabal, ansiTerminal, doctest, filepath, ghcPaths +, hspecExpectations, hspecMeta, HUnit, QuickCheck, setenv, silently +, time, transformers }: cabal.mkDerivation (self: { @@ -12,6 +13,10 @@ cabal.mkDerivation (self: { ansiTerminal filepath hspecExpectations HUnit QuickCheck setenv silently time transformers ]; + testDepends = [ + ansiTerminal doctest filepath ghcPaths hspecExpectations hspecMeta + HUnit QuickCheck setenv silently time transformers + ]; meta = { homepage = "http://hspec.github.com/"; description = "Behavior-Driven Development for Haskell"; diff --git a/pkgs/development/libraries/haskell/html-conduit/default.nix b/pkgs/development/libraries/haskell/html-conduit/default.nix index ff4b03c1e6a..eaf1754b622 100644 --- a/pkgs/development/libraries/haskell/html-conduit/default.nix +++ b/pkgs/development/libraries/haskell/html-conduit/default.nix @@ -1,5 +1,6 @@ -{ cabal, conduit, filesystemConduit, resourcet, systemFilepath -, tagstreamConduit, text, transformers, xmlConduit, xmlTypes +{ cabal, conduit, filesystemConduit, hspec, HUnit, resourcet +, systemFilepath, tagstreamConduit, text, transformers, xmlConduit +, xmlTypes }: cabal.mkDerivation (self: { @@ -10,6 +11,7 @@ cabal.mkDerivation (self: { conduit filesystemConduit resourcet systemFilepath tagstreamConduit text transformers xmlConduit xmlTypes ]; + testDepends = [ hspec HUnit xmlConduit ]; meta = { homepage = "https://github.com/snoyberg/xml"; description = "Parse HTML documents using xml-conduit datatypes"; diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix index ebb44f1512b..5ff4b4cd95e 100644 --- a/pkgs/development/libraries/haskell/http-conduit/default.nix +++ b/pkgs/development/libraries/haskell/http-conduit/default.nix @@ -1,10 +1,10 @@ { cabal, 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 +, filepath, hspec, httpTypes, HUnit, liftedBase, mimeTypes +, monadControl, mtl, network, networkConduit, random, regexCompat +, resourcet, socks, text, time, tls, tlsExtra, transformers +, transformersBase, utf8String, void, wai, warp, zlibConduit }: cabal.mkDerivation (self: { @@ -19,6 +19,14 @@ cabal.mkDerivation (self: { 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 + regexCompat resourcet socks text time tls tlsExtra transformers + transformersBase utf8String void wai warp zlibConduit + ]; meta = { homepage = "http://www.yesodweb.com/book/http-conduit"; description = "HTTP client package with conduit interface and HTTPS support"; diff --git a/pkgs/development/libraries/haskell/http-date/default.nix b/pkgs/development/libraries/haskell/http-date/default.nix index 58d4dd7ecbf..3571c160f6b 100644 --- a/pkgs/development/libraries/haskell/http-date/default.nix +++ b/pkgs/development/libraries/haskell/http-date/default.nix @@ -1,10 +1,11 @@ -{ cabal, attoparsec }: +{ cabal, attoparsec, doctest, hspec, time }: cabal.mkDerivation (self: { pname = "http-date"; version = "0.0.4"; sha256 = "1pbm066i1cpa3z2kfsqpva0qixnx87s76dpafz3wf6dkaqj8n8i5"; buildDepends = [ attoparsec ]; + testDepends = [ doctest hspec time ]; meta = { description = "HTTP Date parser/formatter"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix index 618438e927f..39091256ec0 100644 --- a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix +++ b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix @@ -1,6 +1,7 @@ { cabal, blazeBuilder, caseInsensitive, classyPrelude, conduit -, dataDefault, httpConduit, httpTypes, liftedBase, monadControl -, network, networkConduit, text, wai, warp, word8 +, dataDefault, hspec, httpConduit, httpTypes, liftedBase +, monadControl, network, networkConduit, text, transformers, wai +, warp, word8 }: cabal.mkDerivation (self: { @@ -12,6 +13,10 @@ cabal.mkDerivation (self: { httpConduit httpTypes liftedBase monadControl network networkConduit text wai warp word8 ]; + testDepends = [ + blazeBuilder conduit hspec httpConduit httpTypes liftedBase network + networkConduit transformers wai warp + ]; meta = { homepage = "https://github.com/fpco/http-reverse-proxy"; description = "Reverse proxy HTTP requests, either over raw sockets or with WAI"; diff --git a/pkgs/development/libraries/haskell/http-types/default.nix b/pkgs/development/libraries/haskell/http-types/default.nix index d0837d21bff..c4c064fbf81 100644 --- a/pkgs/development/libraries/haskell/http-types/default.nix +++ b/pkgs/development/libraries/haskell/http-types/default.nix @@ -1,10 +1,11 @@ -{ cabal, blazeBuilder, caseInsensitive, text }: +{ cabal, blazeBuilder, caseInsensitive, hspec, QuickCheck, text }: cabal.mkDerivation (self: { pname = "http-types"; version = "0.8.0"; sha256 = "14d1gzgwhinkwx3lmc6hvqj6ivjrvy4m6fm2walnyk1zv24zli75"; buildDepends = [ blazeBuilder caseInsensitive text ]; + testDepends = [ blazeBuilder hspec QuickCheck text ]; meta = { homepage = "https://github.com/aristidb/http-types"; description = "Generic HTTP types for Haskell (for both client and server code)"; diff --git a/pkgs/development/libraries/haskell/io-choice/default.nix b/pkgs/development/libraries/haskell/io-choice/default.nix index f8b1f1d51a4..cdf269b0d3c 100644 --- a/pkgs/development/libraries/haskell/io-choice/default.nix +++ b/pkgs/development/libraries/haskell/io-choice/default.nix @@ -1,4 +1,5 @@ -{ cabal, liftedBase, monadControl, transformers, transformersBase +{ cabal, hspec, liftedBase, monadControl, transformers +, transformersBase }: cabal.mkDerivation (self: { @@ -8,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ liftedBase monadControl transformers transformersBase ]; + testDepends = [ hspec liftedBase monadControl transformers ]; meta = { description = "Choice for IO and lifted IO"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/iproute/default.nix b/pkgs/development/libraries/haskell/iproute/default.nix index c342f80a6c2..1ec2b659f0c 100644 --- a/pkgs/development/libraries/haskell/iproute/default.nix +++ b/pkgs/development/libraries/haskell/iproute/default.nix @@ -1,10 +1,15 @@ -{ cabal, appar, byteorder, network }: +{ cabal, appar, byteorder, doctest, hspec, network, QuickCheck +, Safe +}: cabal.mkDerivation (self: { pname = "iproute"; version = "1.2.10"; sha256 = "1ni91llvq1mfdsjmw1laqhk964y4vlpyk5s25j8klsfn27mq6c68"; buildDepends = [ appar byteorder network ]; + testDepends = [ + appar byteorder doctest hspec network QuickCheck Safe + ]; meta = { homepage = "http://www.mew.org/~kazu/proj/iproute/"; description = "IP Routing Table"; diff --git a/pkgs/development/libraries/haskell/language-c-quote/default.nix b/pkgs/development/libraries/haskell/language-c-quote/default.nix index fc569f996a8..fc8c15edf57 100644 --- a/pkgs/development/libraries/haskell/language-c-quote/default.nix +++ b/pkgs/development/libraries/haskell/language-c-quote/default.nix @@ -1,5 +1,6 @@ { cabal, alex, exceptionMtl, exceptionTransformers, filepath, happy -, haskellSrcMeta, mainlandPretty, mtl, srcloc, syb, symbol +, haskellSrcMeta, HUnit, mainlandPretty, mtl, srcloc, syb, symbol +, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { @@ -10,6 +11,9 @@ cabal.mkDerivation (self: { exceptionMtl exceptionTransformers filepath haskellSrcMeta mainlandPretty mtl srcloc syb symbol ]; + testDepends = [ + HUnit srcloc symbol testFramework testFrameworkHunit + ]; buildTools = [ alex happy ]; jailbreak = true; meta = { diff --git a/pkgs/development/libraries/haskell/language-javascript/default.nix b/pkgs/development/libraries/haskell/language-javascript/default.nix index e05b93655e4..4571b869e3b 100644 --- a/pkgs/development/libraries/haskell/language-javascript/default.nix +++ b/pkgs/development/libraries/haskell/language-javascript/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, happy, mtl, utf8Light, utf8String }: +{ cabal, blazeBuilder, Cabal, happy, HUnit, mtl, QuickCheck +, testFramework, testFrameworkHunit, utf8Light, utf8String +}: cabal.mkDerivation (self: { pname = "language-javascript"; version = "0.5.7"; sha256 = "0mndz0bqxkayzm7g92cvai9ahb9msr99syp9djhaya1d45595ad3"; buildDepends = [ blazeBuilder mtl utf8Light utf8String ]; + testDepends = [ + blazeBuilder Cabal HUnit mtl QuickCheck testFramework + testFrameworkHunit utf8Light utf8String + ]; buildTools = [ happy ]; meta = { homepage = "http://github.com/alanz/language-javascript"; diff --git a/pkgs/development/libraries/haskell/largeword/default.nix b/pkgs/development/libraries/haskell/largeword/default.nix index 991213067f6..aa3cd5fcdf6 100644 --- a/pkgs/development/libraries/haskell/largeword/default.nix +++ b/pkgs/development/libraries/haskell/largeword/default.nix @@ -1,9 +1,15 @@ -{ cabal }: +{ cabal, HUnit, QuickCheck, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "largeword"; version = "1.0.4"; sha256 = "19nrzbbbmsvxdhfhh6wc53lbk0xyjvbcwvjw0snym666j1w2b2l5"; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/idontgetoutmuch/largeword"; description = "Provides Word128, Word192 and Word256 and a way of producing other large words if required"; diff --git a/pkgs/development/libraries/haskell/leksah/leksah-server.nix b/pkgs/development/libraries/haskell/leksah/leksah-server.nix index cfcc69641b5..1a907a384f1 100644 --- a/pkgs/development/libraries/haskell/leksah/leksah-server.nix +++ b/pkgs/development/libraries/haskell/leksah/leksah-server.nix @@ -1,6 +1,6 @@ { cabal, attoparsec, attoparsecEnumerator, binary, binaryShared -, Cabal, deepseq, enumerator, filepath, haddock, hslogger, ltk -, network, parsec, processLeksah, strict, time, transformers +, Cabal, deepseq, enumerator, filepath, haddock, hslogger, HUnit +, ltk, network, parsec, processLeksah, strict, time, transformers }: cabal.mkDerivation (self: { @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { enumerator filepath haddock hslogger ltk network parsec processLeksah strict time transformers ]; + testDepends = [ enumerator hslogger HUnit transformers ]; meta = { homepage = "http://leksah.org"; description = "Metadata collection for leksah"; diff --git a/pkgs/development/libraries/haskell/lens/default.nix b/pkgs/development/libraries/haskell/lens/default.nix index b5f8851796e..bba84668958 100644 --- a/pkgs/development/libraries/haskell/lens/default.nix +++ b/pkgs/development/libraries/haskell/lens/default.nix @@ -1,9 +1,11 @@ { cabal, bifunctors, comonad, comonadsFd, comonadTransformers -, contravariant, distributive, filepath, genericDeriving, hashable -, MonadCatchIOTransformers, mtl, parallel, profunctorExtras -, profunctors, reflection, semigroupoids, semigroups, split, tagged -, text, transformers, transformersCompat, unorderedContainers -, vector, void +, contravariant, deepseq, distributive, doctest, filepath +, genericDeriving, hashable, HUnit, MonadCatchIOTransformers, mtl +, nats, parallel, profunctorExtras, profunctors, QuickCheck +, reflection, semigroupoids, semigroups, simpleReflect, split +, tagged, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2, testFrameworkTh, text, transformers +, transformersCompat, unorderedContainers, vector, void }: cabal.mkDerivation (self: { @@ -17,6 +19,12 @@ cabal.mkDerivation (self: { reflection semigroupoids semigroups split tagged text transformers transformersCompat unorderedContainers vector void ]; + testDepends = [ + deepseq doctest filepath genericDeriving HUnit mtl nats parallel + QuickCheck semigroups simpleReflect split testFramework + testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text + transformers unorderedContainers vector + ]; meta = { homepage = "http://github.com/ekmett/lens/"; description = "Lenses, Folds and Traversals"; diff --git a/pkgs/development/libraries/haskell/libmpd/default.nix b/pkgs/development/libraries/haskell/libmpd/default.nix index fc77388727f..7402d6f31db 100644 --- a/pkgs/development/libraries/haskell/libmpd/default.nix +++ b/pkgs/development/libraries/haskell/libmpd/default.nix @@ -1,10 +1,15 @@ -{ cabal, filepath, mtl, network, text, time, utf8String }: +{ cabal, dataDefault, filepath, hspec, HUnit, mtl, network +, QuickCheck, text, time, utf8String +}: cabal.mkDerivation (self: { pname = "libmpd"; version = "0.8.0.2"; sha256 = "1phlbb5lsapw2hb0db7906ddlmvnpyk1xbgxvl9zp9zfd0sn40aj"; buildDepends = [ filepath mtl network text time utf8String ]; + testDepends = [ + dataDefault hspec HUnit mtl network QuickCheck text time utf8String + ]; meta = { homepage = "http://github.com/joachifm/libmpd-haskell"; description = "An MPD client library"; diff --git a/pkgs/development/libraries/haskell/lifted-base/default.nix b/pkgs/development/libraries/haskell/lifted-base/default.nix index fbb09db9bb8..1d675e88d87 100644 --- a/pkgs/development/libraries/haskell/lifted-base/default.nix +++ b/pkgs/development/libraries/haskell/lifted-base/default.nix @@ -1,4 +1,6 @@ -{ cabal, baseUnicodeSymbols, monadControl, transformersBase }: +{ cabal, baseUnicodeSymbols, HUnit, monadControl, testFramework +, testFrameworkHunit, transformers, transformersBase +}: cabal.mkDerivation (self: { pname = "lifted-base"; @@ -7,6 +9,10 @@ cabal.mkDerivation (self: { buildDepends = [ baseUnicodeSymbols monadControl transformersBase ]; + testDepends = [ + HUnit monadControl testFramework testFrameworkHunit transformers + transformersBase + ]; meta = { homepage = "https://github.com/basvandijk/lifted-base"; description = "lifted IO operations from the base library"; diff --git a/pkgs/development/libraries/haskell/math-functions/default.nix b/pkgs/development/libraries/haskell/math-functions/default.nix index 158feeee18a..2e29269a9fd 100644 --- a/pkgs/development/libraries/haskell/math-functions/default.nix +++ b/pkgs/development/libraries/haskell/math-functions/default.nix @@ -1,10 +1,16 @@ -{ cabal, erf, vector }: +{ cabal, erf, HUnit, ieee754, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, vector +}: cabal.mkDerivation (self: { pname = "math-functions"; version = "0.1.3.0"; sha256 = "06wxr8fbhmsgkpyx2vimx9l6apk0p27mwrxrvbjk0b7m9vsg3ay5"; buildDepends = [ erf vector ]; + testDepends = [ + HUnit ieee754 QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "https://github.com/bos/math-functions"; description = "Special functions and Chebyshev polynomials"; diff --git a/pkgs/development/libraries/haskell/minimorph/default.nix b/pkgs/development/libraries/haskell/minimorph/default.nix index 54fc100b7dd..06dcfaa1139 100644 --- a/pkgs/development/libraries/haskell/minimorph/default.nix +++ b/pkgs/development/libraries/haskell/minimorph/default.nix @@ -1,10 +1,11 @@ -{ cabal, text }: +{ cabal, HUnit, testFramework, testFrameworkHunit, text }: cabal.mkDerivation (self: { pname = "minimorph"; version = "0.1.4.0"; sha256 = "16ri9hfriszrgqcm111b1pp5x65s034hrc35kjz5qax32mnc9rn6"; buildDepends = [ text ]; + testDepends = [ HUnit testFramework testFrameworkHunit text ]; meta = { homepage = "http://darcsden.com/kowey/minimorph"; description = "English spelling functions with an emphasis on simplicity"; diff --git a/pkgs/development/libraries/haskell/miniutter/default.nix b/pkgs/development/libraries/haskell/miniutter/default.nix index b06ee1363c8..22018087226 100644 --- a/pkgs/development/libraries/haskell/miniutter/default.nix +++ b/pkgs/development/libraries/haskell/miniutter/default.nix @@ -1,10 +1,12 @@ -{ cabal, minimorph, text }: +{ cabal, HUnit, minimorph, testFramework, testFrameworkHunit, text +}: cabal.mkDerivation (self: { pname = "miniutter"; version = "0.4.0"; sha256 = "1l275aad8svrqp22jv9s0mmlam7wbdlf6m4m97658rm8ks4j2mbx"; buildDepends = [ minimorph text ]; + testDepends = [ HUnit testFramework testFrameworkHunit text ]; meta = { homepage = "https://github.com/Mikolaj/miniutter"; description = "Simple English clause creation from arbitrary words"; diff --git a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix index 8407daef642..f22ae9e106f 100644 --- a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix +++ b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix @@ -1,5 +1,7 @@ -{ cabal, abstractDeque, abstractPar, deepseq, monadParExtras, mtl -, mwcRandom, parallel +{ cabal, abstractDeque, abstractPar, deepseq, HUnit, monadParExtras +, mtl, mwcRandom, parallel, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, testFrameworkTh +, time }: cabal.mkDerivation (self: { @@ -10,6 +12,11 @@ cabal.mkDerivation (self: { abstractDeque abstractPar deepseq monadParExtras mtl mwcRandom parallel ]; + testDepends = [ + abstractDeque abstractPar deepseq HUnit monadParExtras mtl + mwcRandom QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 testFrameworkTh time + ]; meta = { homepage = "https://github.com/simonmar/monad-par"; description = "A library for parallel programming based on a monad"; diff --git a/pkgs/development/libraries/haskell/mwc-random/default.nix b/pkgs/development/libraries/haskell/mwc-random/default.nix index 1e2d56147c3..d20f4f061e4 100644 --- a/pkgs/development/libraries/haskell/mwc-random/default.nix +++ b/pkgs/development/libraries/haskell/mwc-random/default.nix @@ -1,10 +1,16 @@ -{ cabal, primitive, time, vector }: +{ cabal, HUnit, primitive, QuickCheck, statistics, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, time, vector +}: cabal.mkDerivation (self: { pname = "mwc-random"; version = "0.12.0.1"; sha256 = "1sq4yxi231ka8rzwsihqziibs7amvl27ycr018wymm3yz36vsy7c"; buildDepends = [ primitive time vector ]; + testDepends = [ + HUnit QuickCheck statistics testFramework testFrameworkHunit + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "https://github.com/bos/mwc-random"; description = "Fast, high quality pseudo random number generation"; diff --git a/pkgs/development/libraries/haskell/network-conduit/default.nix b/pkgs/development/libraries/haskell/network-conduit/default.nix index 67d44bd1ebb..032592f974b 100644 --- a/pkgs/development/libraries/haskell/network-conduit/default.nix +++ b/pkgs/development/libraries/haskell/network-conduit/default.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { buildDepends = [ conduit liftedBase monadControl network transformers ]; + testDepends = [ conduit ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Stream socket data using conduits"; diff --git a/pkgs/development/libraries/haskell/network-transport-tcp/default.nix b/pkgs/development/libraries/haskell/network-transport-tcp/default.nix index fb313005bda..840712e3416 100644 --- a/pkgs/development/libraries/haskell/network-transport-tcp/default.nix +++ b/pkgs/development/libraries/haskell/network-transport-tcp/default.nix @@ -1,10 +1,20 @@ -{ cabal, dataAccessor, network, networkTransport }: +{ cabal, dataAccessor, dataAccessorTransformers, HUnit +, lockfreeQueue, mtl, network, networkTransport +, networkTransportTests, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, transformers +}: cabal.mkDerivation (self: { pname = "network-transport-tcp"; version = "0.3.1"; sha256 = "15i4qbx1s3dxaixn6kd2z1hsymfvpqzf4jpqd3mcbpjlgrn6craf"; buildDepends = [ dataAccessor network networkTransport ]; + testDepends = [ + dataAccessor dataAccessorTransformers HUnit lockfreeQueue mtl + network networkTransport networkTransportTests QuickCheck + testFramework testFrameworkHunit testFrameworkQuickcheck2 + transformers + ]; meta = { homepage = "http://github.com/haskell-distributed/distributed-process"; description = "TCP instantiation of Network.Transport"; diff --git a/pkgs/development/libraries/haskell/network/2.3.0.13.nix b/pkgs/development/libraries/haskell/network/2.3.0.13.nix index 29452da7b2e..557dea081fd 100644 --- a/pkgs/development/libraries/haskell/network/2.3.0.13.nix +++ b/pkgs/development/libraries/haskell/network/2.3.0.13.nix @@ -1,10 +1,11 @@ -{ cabal, parsec }: +{ cabal, HUnit, parsec, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "network"; version = "2.3.0.13"; sha256 = "0xw53czvcw8k49aqxmchc1rcd6pyxp4icwgp64625fnm3l4yjiq7"; buildDepends = [ parsec ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "http://github.com/haskell/network"; description = "Low-level networking interface"; diff --git a/pkgs/development/libraries/haskell/network/2.3.1.0.nix b/pkgs/development/libraries/haskell/network/2.3.1.0.nix index 28fa50d8342..dc0c1811e59 100644 --- a/pkgs/development/libraries/haskell/network/2.3.1.0.nix +++ b/pkgs/development/libraries/haskell/network/2.3.1.0.nix @@ -1,10 +1,11 @@ -{ cabal, parsec }: +{ cabal, HUnit, parsec, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "network"; version = "2.3.1.0"; sha256 = "1fp25wkl5cc4kx0jv5w02b7pzgqadjg1yrknzzwsqxc5s3cpyz6l"; buildDepends = [ parsec ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "http://github.com/haskell/network"; description = "Low-level networking interface"; diff --git a/pkgs/development/libraries/haskell/network/2.4.1.2.nix b/pkgs/development/libraries/haskell/network/2.4.1.2.nix index 4009bbd9464..6f245cf1840 100644 --- a/pkgs/development/libraries/haskell/network/2.4.1.2.nix +++ b/pkgs/development/libraries/haskell/network/2.4.1.2.nix @@ -1,10 +1,15 @@ -{ cabal, parsec }: +{ cabal, HUnit, parsec, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "network"; version = "2.4.1.2"; sha256 = "0f7ykdv7xbsr5m3h2ml0hw3nlbnq785m0gr624pwk2s289jwakdh"; buildDepends = [ parsec ]; + testDepends = [ + HUnit testFramework testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/haskell/network"; description = "Low-level networking interface"; diff --git a/pkgs/development/libraries/haskell/numbers/default.nix b/pkgs/development/libraries/haskell/numbers/default.nix index d1485b7cf1f..002f68eded7 100644 --- a/pkgs/development/libraries/haskell/numbers/default.nix +++ b/pkgs/development/libraries/haskell/numbers/default.nix @@ -1,9 +1,12 @@ -{ cabal }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { pname = "numbers"; version = "3000.1.0.1"; sha256 = "0r2s47nfdxasnp8j7giwpxls9v48f6ld0gc2hg2p7y2ar5xfrcc4"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/DanBurton/numbers"; description = "Various number types"; diff --git a/pkgs/development/libraries/haskell/optparse-applicative/default.nix b/pkgs/development/libraries/haskell/optparse-applicative/default.nix index 3e04a33990e..46f530b8cd4 100644 --- a/pkgs/development/libraries/haskell/optparse-applicative/default.nix +++ b/pkgs/development/libraries/haskell/optparse-applicative/default.nix @@ -1,10 +1,15 @@ -{ cabal, transformers }: +{ cabal, HUnit, testFramework, testFrameworkHunit +, testFrameworkThPrime, transformers +}: cabal.mkDerivation (self: { pname = "optparse-applicative"; version = "0.5.2.1"; sha256 = "0w4mk851mx8dch8lnck0g82asmzrsc47xrf34jygh0f6v4kbj40i"; buildDepends = [ transformers ]; + testDepends = [ + HUnit testFramework testFrameworkHunit testFrameworkThPrime + ]; meta = { homepage = "https://github.com/pcapriotti/optparse-applicative"; description = "Utilities and combinators for parsing command line options"; diff --git a/pkgs/development/libraries/haskell/path-pieces/default.nix b/pkgs/development/libraries/haskell/path-pieces/default.nix index 5abc6309146..14b9f8d7081 100644 --- a/pkgs/development/libraries/haskell/path-pieces/default.nix +++ b/pkgs/development/libraries/haskell/path-pieces/default.nix @@ -1,10 +1,11 @@ -{ cabal, text, time }: +{ cabal, fileLocation, hspec, HUnit, QuickCheck, text, time }: cabal.mkDerivation (self: { pname = "path-pieces"; version = "0.1.2"; sha256 = "1cxsa8lq1f2jf86iv6f17nraiav8k2vzjxln1y7z45qhcp1sbbaa"; buildDepends = [ text time ]; + testDepends = [ fileLocation hspec HUnit QuickCheck text ]; meta = { description = "Components of paths"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/pem/default.nix b/pkgs/development/libraries/haskell/pem/default.nix index b82dc4ed83d..16b47a9c8ae 100644 --- a/pkgs/development/libraries/haskell/pem/default.nix +++ b/pkgs/development/libraries/haskell/pem/default.nix @@ -1,10 +1,15 @@ -{ cabal, attoparsec, base64Bytestring, cereal, mtl }: +{ cabal, attoparsec, base64Bytestring, cereal, mtl, QuickCheck +, testFramework, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "pem"; version = "0.1.2"; sha256 = "1p2sw36b9w6lf53jzj86ibyy9a48fjd786mx3x8mvc5lczx8v78m"; buildDepends = [ attoparsec base64Bytestring cereal mtl ]; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-pem"; description = "Privacy Enhanced Mail (PEM) format reader and writer"; diff --git a/pkgs/development/libraries/haskell/persistent-template/default.nix b/pkgs/development/libraries/haskell/persistent-template/default.nix index 2816a38c413..117a63618d4 100644 --- a/pkgs/development/libraries/haskell/persistent-template/default.nix +++ b/pkgs/development/libraries/haskell/persistent-template/default.nix @@ -1,10 +1,13 @@ -{ cabal, aeson, monadControl, persistent, text, transformers }: +{ cabal, aeson, hspec, monadControl, persistent, QuickCheck, text +, transformers +}: cabal.mkDerivation (self: { pname = "persistent-template"; version = "1.1.2.4"; sha256 = "0fsqyv5r6h356shmah6bs75fzds0fsmyizbnvj5ywzhc003jv5h9"; buildDepends = [ aeson monadControl persistent text transformers ]; + testDepends = [ aeson hspec persistent QuickCheck text ]; meta = { homepage = "http://www.yesodweb.com/book/persistent"; description = "Type-safe, non-relational, multi-backend persistence"; diff --git a/pkgs/development/libraries/haskell/persistent/default.nix b/pkgs/development/libraries/haskell/persistent/default.nix index f7812a2692d..036deebae20 100644 --- a/pkgs/development/libraries/haskell/persistent/default.nix +++ b/pkgs/development/libraries/haskell/persistent/default.nix @@ -1,7 +1,8 @@ { cabal, aeson, attoparsec, base64Bytestring, blazeHtml -, blazeMarkup, conduit, liftedBase, monadControl, monadLogger -, pathPieces, poolConduit, resourcet, silently, sqlite, text, time -, transformers, transformersBase, unorderedContainers, vector +, blazeMarkup, conduit, hspec, liftedBase, monadControl +, monadLogger, pathPieces, poolConduit, resourcet, silently, sqlite +, text, time, transformers, transformersBase, unorderedContainers +, vector }: cabal.mkDerivation (self: { @@ -14,6 +15,7 @@ cabal.mkDerivation (self: { resourcet silently text time transformers transformersBase unorderedContainers vector ]; + testDepends = [ hspec text ]; extraLibraries = [ sqlite ]; meta = { homepage = "http://www.yesodweb.com/book/persistent"; diff --git a/pkgs/development/libraries/haskell/postgresql-simple/default.nix b/pkgs/development/libraries/haskell/postgresql-simple/default.nix index 3e3a1b7dbfd..29c74d84015 100644 --- a/pkgs/development/libraries/haskell/postgresql-simple/default.nix +++ b/pkgs/development/libraries/haskell/postgresql-simple/default.nix @@ -1,5 +1,6 @@ -{ cabal, attoparsec, blazeBuilder, blazeTextual, postgresqlLibpq -, text, time, transformers, vector +{ cabal, attoparsec, base16Bytestring, blazeBuilder, blazeTextual +, cryptohash, HUnit, postgresqlLibpq, text, time, transformers +, vector }: cabal.mkDerivation (self: { @@ -10,6 +11,7 @@ cabal.mkDerivation (self: { attoparsec blazeBuilder blazeTextual postgresqlLibpq text time transformers vector ]; + testDepends = [ base16Bytestring cryptohash HUnit text time ]; meta = { description = "Mid-Level PostgreSQL client library"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/project-template/default.nix b/pkgs/development/libraries/haskell/project-template/default.nix index 541fa2026d9..fa60370f1f5 100644 --- a/pkgs/development/libraries/haskell/project-template/default.nix +++ b/pkgs/development/libraries/haskell/project-template/default.nix @@ -1,5 +1,6 @@ { cabal, base64Bytestring, base64Conduit, classyPrelude, conduit -, mtl, resourcet, systemFileio, systemFilepath, text, transformers +, hspec, mtl, QuickCheck, resourcet, systemFileio, systemFilepath +, text, transformers }: cabal.mkDerivation (self: { @@ -10,6 +11,10 @@ cabal.mkDerivation (self: { base64Bytestring base64Conduit classyPrelude conduit mtl resourcet systemFileio systemFilepath text transformers ]; + testDepends = [ + base64Bytestring classyPrelude conduit hspec QuickCheck + transformers + ]; meta = { homepage = "https://github.com/fpco/haskell-ide"; description = "Specify Haskell project templates and generate files"; diff --git a/pkgs/development/libraries/haskell/publicsuffixlist/default.nix b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix index 53b7062cd0d..1f38962ddd3 100644 --- a/pkgs/development/libraries/haskell/publicsuffixlist/default.nix +++ b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix @@ -1,10 +1,11 @@ -{ cabal, cereal, dataDefault, text, utf8String }: +{ cabal, cereal, dataDefault, HUnit, idna, text, utf8String }: cabal.mkDerivation (self: { pname = "publicsuffixlist"; version = "0.0.3"; sha256 = "1drsm1zp30629rzy0693ggzcx46b7ydzzafmf07mjanmn1kyyqci"; buildDepends = [ cereal dataDefault text utf8String ]; + testDepends = [ cereal dataDefault HUnit idna text utf8String ]; meta = { homepage = "https://github.com/litherum/publicsuffixlist"; description = "Is a given string a domain suffix?"; diff --git a/pkgs/development/libraries/haskell/reactive-banana/default.nix b/pkgs/development/libraries/haskell/reactive-banana/default.nix index ef4016d003d..8d62f67a128 100644 --- a/pkgs/development/libraries/haskell/reactive-banana/default.nix +++ b/pkgs/development/libraries/haskell/reactive-banana/default.nix @@ -1,10 +1,16 @@ -{ cabal, hashable, transformers, unorderedContainers, vault }: +{ cabal, hashable, HUnit, testFramework, testFrameworkHunit +, transformers, unorderedContainers, vault +}: cabal.mkDerivation (self: { pname = "reactive-banana"; version = "0.7.1.1"; sha256 = "0d4dqpzglzkygy2hhn1j1c7vk2782mk66f8aqaadkyhijn7kc6i5"; buildDepends = [ hashable transformers unorderedContainers vault ]; + testDepends = [ + hashable HUnit testFramework testFrameworkHunit transformers + unorderedContainers vault + ]; meta = { homepage = "http://haskell.org/haskellwiki/Reactive-banana"; description = "Practical library for functional reactive programming (FRP)"; diff --git a/pkgs/development/libraries/haskell/resourcet/default.nix b/pkgs/development/libraries/haskell/resourcet/default.nix index f657f4e0ca5..35b7fec3276 100644 --- a/pkgs/development/libraries/haskell/resourcet/default.nix +++ b/pkgs/development/libraries/haskell/resourcet/default.nix @@ -1,4 +1,4 @@ -{ cabal, liftedBase, monadControl, mtl, transformers +{ cabal, hspec, liftedBase, monadControl, mtl, transformers , transformersBase }: @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ liftedBase monadControl mtl transformers transformersBase ]; + testDepends = [ hspec liftedBase transformers ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Deterministic allocation and freeing of scarce resources"; diff --git a/pkgs/development/libraries/haskell/setenv/default.nix b/pkgs/development/libraries/haskell/setenv/default.nix index 8ce0b125416..fd94874e364 100644 --- a/pkgs/development/libraries/haskell/setenv/default.nix +++ b/pkgs/development/libraries/haskell/setenv/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, hspec, QuickCheck }: cabal.mkDerivation (self: { pname = "setenv"; version = "0.1.0"; sha256 = "04w42bpfbrs5crjp19zzi9dg61xpz4wvmjs2vc7q7qxblyhdfdsy"; + testDepends = [ hspec QuickCheck ]; meta = { description = "A cross-platform library for setting environment variables"; license = self.stdenv.lib.licenses.mit; diff --git a/pkgs/development/libraries/haskell/shakespeare-css/default.nix b/pkgs/development/libraries/haskell/shakespeare-css/default.nix index 5016b816ff7..56174254c21 100644 --- a/pkgs/development/libraries/haskell/shakespeare-css/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-css/default.nix @@ -1,10 +1,11 @@ -{ cabal, parsec, shakespeare, text, transformers }: +{ cabal, hspec, HUnit, parsec, shakespeare, text, transformers }: cabal.mkDerivation (self: { pname = "shakespeare-css"; version = "1.0.3"; sha256 = "0zk4nb4v9x04vkkgbzqanfpqgw9pqinf76l7d85fzclfgwacd0bz"; buildDepends = [ parsec shakespeare text transformers ]; + testDepends = [ hspec HUnit shakespeare text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Stick your haskell variables into css at compile time"; diff --git a/pkgs/development/libraries/haskell/shakespeare-js/default.nix b/pkgs/development/libraries/haskell/shakespeare-js/default.nix index 01bf73fd501..55bf276d1f8 100644 --- a/pkgs/development/libraries/haskell/shakespeare-js/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-js/default.nix @@ -1,10 +1,11 @@ -{ cabal, aeson, shakespeare, text }: +{ cabal, aeson, hspec, HUnit, shakespeare, text }: cabal.mkDerivation (self: { pname = "shakespeare-js"; version = "1.1.2"; sha256 = "0iwajn0d0yngzp10j9qbb2gpq1g7r390yqd7pj5dri35rjc6mr8n"; buildDepends = [ aeson shakespeare text ]; + testDepends = [ aeson hspec HUnit shakespeare text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Stick your haskell variables into javascript/coffeescript at compile time"; diff --git a/pkgs/development/libraries/haskell/shakespeare-text/default.nix b/pkgs/development/libraries/haskell/shakespeare-text/default.nix index 4e9516d107c..d4cc135cc62 100644 --- a/pkgs/development/libraries/haskell/shakespeare-text/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-text/default.nix @@ -1,10 +1,11 @@ -{ cabal, shakespeare, text }: +{ cabal, hspec, HUnit, shakespeare, text }: cabal.mkDerivation (self: { pname = "shakespeare-text"; version = "1.0.0.5"; sha256 = "176yzx43sh0fnxpszn8kximd6i96yf2s374z55kvc1kspf7jk736"; buildDepends = [ shakespeare text ]; + testDepends = [ hspec HUnit text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Interpolation with quasi-quotation: put variables strings"; diff --git a/pkgs/development/libraries/haskell/shakespeare/default.nix b/pkgs/development/libraries/haskell/shakespeare/default.nix index 0e04ff4fd44..d38002eebda 100644 --- a/pkgs/development/libraries/haskell/shakespeare/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare/default.nix @@ -1,10 +1,11 @@ -{ cabal, parsec, text }: +{ cabal, hspec, parsec, text }: cabal.mkDerivation (self: { pname = "shakespeare"; version = "1.0.3.1"; sha256 = "08w1g19k9v9dvdy45j32kdic8vjhc10ad4g20q5ya0id4cd13qfs"; buildDepends = [ parsec text ]; + testDepends = [ hspec parsec text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "A toolkit for making compile-time interpolated templates"; diff --git a/pkgs/development/libraries/haskell/shelly/default.nix b/pkgs/development/libraries/haskell/shelly/default.nix index 15245bfe0bc..325021c1cca 100644 --- a/pkgs/development/libraries/haskell/shelly/default.nix +++ b/pkgs/development/libraries/haskell/shelly/default.nix @@ -1,4 +1,5 @@ -{ cabal, mtl, systemFileio, systemFilepath, text, time, unixCompat +{ cabal, hspec, HUnit, mtl, systemFileio, systemFilepath, text +, time, unixCompat }: cabal.mkDerivation (self: { @@ -8,6 +9,9 @@ cabal.mkDerivation (self: { buildDepends = [ mtl systemFileio systemFilepath text time unixCompat ]; + testDepends = [ + hspec HUnit mtl systemFileio systemFilepath text time unixCompat + ]; meta = { homepage = "https://github.com/yesodweb/Shelly.hs"; description = "shell-like (systems) programming in Haskell"; diff --git a/pkgs/development/libraries/haskell/silently/default.nix b/pkgs/development/libraries/haskell/silently/default.nix index c8223cecac4..fcd7a0a872a 100644 --- a/pkgs/development/libraries/haskell/silently/default.nix +++ b/pkgs/development/libraries/haskell/silently/default.nix @@ -1,10 +1,11 @@ -{ cabal, deepseq }: +{ cabal, deepseq, nanospec }: cabal.mkDerivation (self: { pname = "silently"; version = "1.2.4.1"; sha256 = "035dw3zg680ykyz5rqkkrjn51wkznbc4jb45a8l2gh3vgqzgbf52"; buildDepends = [ deepseq ]; + testDepends = [ deepseq nanospec ]; meta = { homepage = "https://github.com/trystan/silently"; description = "Prevent or capture writing to stdout and other handles"; diff --git a/pkgs/development/libraries/haskell/simple-sendfile/default.nix b/pkgs/development/libraries/haskell/simple-sendfile/default.nix index 7ecd70f25f7..9ad2bd4405b 100644 --- a/pkgs/development/libraries/haskell/simple-sendfile/default.nix +++ b/pkgs/development/libraries/haskell/simple-sendfile/default.nix @@ -1,10 +1,11 @@ -{ cabal, network }: +{ cabal, conduit, hspec, HUnit, network, networkConduit }: cabal.mkDerivation (self: { pname = "simple-sendfile"; version = "0.2.11"; sha256 = "1q9m9lxv9jfkn6a1lf07jcl4li3n5996df1qrfkfjq2n0bvn4qfj"; buildDepends = [ network ]; + testDepends = [ conduit hspec HUnit network networkConduit ]; meta = { description = "Cross platform library for the sendfile system call"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/skein/default.nix b/pkgs/development/libraries/haskell/skein/default.nix index cc910711768..7fdb7e3a1dc 100644 --- a/pkgs/development/libraries/haskell/skein/default.nix +++ b/pkgs/development/libraries/haskell/skein/default.nix @@ -1,10 +1,11 @@ -{ cabal, cereal, cryptoApi, tagged }: +{ cabal, cereal, cryptoApi, filepath, hspec, tagged }: cabal.mkDerivation (self: { pname = "skein"; version = "0.1.0.12"; sha256 = "1nx0ad0y7zmljc7phwin2aph6frs70hvz3di8q52kzpi5m1h3g3a"; buildDepends = [ cereal cryptoApi tagged ]; + testDepends = [ cereal cryptoApi filepath hspec tagged ]; meta = { homepage = "https://github.com/meteficha/skein"; description = "Skein, a family of cryptographic hash functions. Includes Skein-MAC as well."; diff --git a/pkgs/development/libraries/haskell/split/0.2.1.1.nix b/pkgs/development/libraries/haskell/split/0.2.1.1.nix index e106b2687f5..0fb28b53ac9 100644 --- a/pkgs/development/libraries/haskell/split/0.2.1.1.nix +++ b/pkgs/development/libraries/haskell/split/0.2.1.1.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, QuickCheck }: cabal.mkDerivation (self: { pname = "split"; version = "0.2.1.1"; sha256 = "1zzp4dwf846s74a4lhw2gf4awsk9iblhl5zcg2zccgv1lr4w2dmz"; + testDepends = [ QuickCheck ]; meta = { description = "Combinator library for splitting lists"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/split/0.2.1.2.nix b/pkgs/development/libraries/haskell/split/0.2.1.2.nix index e88f478f976..e98e36fe655 100644 --- a/pkgs/development/libraries/haskell/split/0.2.1.2.nix +++ b/pkgs/development/libraries/haskell/split/0.2.1.2.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, QuickCheck }: cabal.mkDerivation (self: { pname = "split"; version = "0.2.1.2"; sha256 = "0wjw4j9wgk66h7filzfh0py9b0wwmaynvwqvd6kinxgms86fpvyi"; + testDepends = [ QuickCheck ]; meta = { description = "Combinator library for splitting lists"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/statistics/default.nix b/pkgs/development/libraries/haskell/statistics/default.nix index de1fd4533ef..923cdf879a5 100644 --- a/pkgs/development/libraries/haskell/statistics/default.nix +++ b/pkgs/development/libraries/haskell/statistics/default.nix @@ -1,5 +1,7 @@ -{ cabal, deepseq, erf, mathFunctions, monadPar, mwcRandom -, primitive, vector, vectorAlgorithms +{ cabal, deepseq, erf, HUnit, ieee754, mathFunctions, monadPar +, mwcRandom, primitive, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, vector +, vectorAlgorithms }: cabal.mkDerivation (self: { @@ -10,6 +12,10 @@ cabal.mkDerivation (self: { deepseq erf mathFunctions monadPar mwcRandom primitive vector vectorAlgorithms ]; + testDepends = [ + erf HUnit ieee754 mathFunctions primitive QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 vector vectorAlgorithms + ]; meta = { homepage = "https://github.com/bos/statistics"; description = "A library of statistical types, data, and functions"; diff --git a/pkgs/development/libraries/haskell/stylish-haskell/default.nix b/pkgs/development/libraries/haskell/stylish-haskell/default.nix index 1ca325cbf17..18105124962 100644 --- a/pkgs/development/libraries/haskell/stylish-haskell/default.nix +++ b/pkgs/development/libraries/haskell/stylish-haskell/default.nix @@ -1,5 +1,5 @@ -{ cabal, aeson, cmdargs, filepath, haskellSrcExts, mtl, strict, syb -, yaml +{ cabal, aeson, cmdargs, filepath, haskellSrcExts, HUnit, mtl +, strict, syb, testFramework, testFrameworkHunit, yaml }: cabal.mkDerivation (self: { @@ -11,6 +11,10 @@ cabal.mkDerivation (self: { buildDepends = [ aeson cmdargs filepath haskellSrcExts mtl strict syb yaml ]; + testDepends = [ + aeson cmdargs filepath haskellSrcExts HUnit mtl syb testFramework + testFrameworkHunit yaml + ]; meta = { homepage = "https://github.com/jaspervdj/stylish-haskell"; description = "Haskell code prettifier"; diff --git a/pkgs/development/libraries/haskell/tagstream-conduit/default.nix b/pkgs/development/libraries/haskell/tagstream-conduit/default.nix index 38f4375becd..1b290bd310b 100644 --- a/pkgs/development/libraries/haskell/tagstream-conduit/default.nix +++ b/pkgs/development/libraries/haskell/tagstream-conduit/default.nix @@ -1,5 +1,6 @@ { cabal, attoparsec, attoparsecConduit, blazeBuilder -, blazeBuilderConduit, caseInsensitive, conduit, text, transformers +, blazeBuilderConduit, caseInsensitive, conduit, hspec, HUnit +, QuickCheck, text, transformers }: cabal.mkDerivation (self: { @@ -10,6 +11,7 @@ cabal.mkDerivation (self: { attoparsec attoparsecConduit blazeBuilder blazeBuilderConduit caseInsensitive conduit text transformers ]; + testDepends = [ conduit hspec HUnit QuickCheck text ]; meta = { homepage = "http://github.com/yihuang/tagstream-conduit"; description = "streamlined html tag parser"; diff --git a/pkgs/development/libraries/haskell/text/0.11.1.13.nix b/pkgs/development/libraries/haskell/text/0.11.1.13.nix index edf109a79cf..aaf278a0a69 100644 --- a/pkgs/development/libraries/haskell/text/0.11.1.13.nix +++ b/pkgs/development/libraries/haskell/text/0.11.1.13.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq }: +{ cabal, deepseq, HUnit, QuickCheck, random, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "text"; version = "0.11.1.13"; sha256 = "0lbc4yfqpydps0rd1qjymnnhp87sl9w7n1f5vd5lsixby93zjv2f"; buildDepends = [ deepseq ]; + testDepends = [ + deepseq HUnit QuickCheck random testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.0.nix b/pkgs/development/libraries/haskell/text/0.11.2.0.nix index 213464f3f19..870438ea31f 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.0.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.0.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq }: +{ cabal, deepseq, HUnit, QuickCheck, random, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "text"; version = "0.11.2.0"; sha256 = "1fx5302m41awzbms410x3gcixsck36rl7i1ma7pz6l5d1pmi538p"; buildDepends = [ deepseq ]; + testDepends = [ + deepseq HUnit QuickCheck random testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.3.nix b/pkgs/development/libraries/haskell/text/0.11.2.3.nix index e1f0c6ea72d..a7089c94cfb 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.3.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.3.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq }: +{ cabal, deepseq, HUnit, QuickCheck, random, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "text"; version = "0.11.2.3"; sha256 = "0jrl3qbi91gkcnws9crsa59jsmmbjy91fwvl07qka9m48nq3f9rm"; buildDepends = [ deepseq ]; + testDepends = [ + deepseq HUnit QuickCheck random testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/threads/default.nix b/pkgs/development/libraries/haskell/threads/default.nix index 8f5008032f6..a3327e88ba6 100644 --- a/pkgs/development/libraries/haskell/threads/default.nix +++ b/pkgs/development/libraries/haskell/threads/default.nix @@ -1,10 +1,16 @@ -{ cabal, baseUnicodeSymbols, stm }: +{ cabal, baseUnicodeSymbols, concurrentExtra, HUnit, stm +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "threads"; version = "0.5.0.1"; sha256 = "0amyaxa70q6v021nab6v3cfqc40mwj5dr2fwla9d4bm6ppmq6lyy"; buildDepends = [ baseUnicodeSymbols stm ]; + testDepends = [ + baseUnicodeSymbols concurrentExtra HUnit stm testFramework + testFrameworkHunit + ]; meta = { homepage = "https://github.com/basvandijk/threads"; description = "Fork threads and wait for their result"; diff --git a/pkgs/development/libraries/haskell/time/1.4.0.2.nix b/pkgs/development/libraries/haskell/time/1.4.0.2.nix index ce429c8d602..62232d1aa5a 100644 --- a/pkgs/development/libraries/haskell/time/1.4.0.2.nix +++ b/pkgs/development/libraries/haskell/time/1.4.0.2.nix @@ -1,10 +1,15 @@ -{ cabal, deepseq }: +{ cabal, Cabal, deepseq, QuickCheck, testFramework +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "time"; version = "1.4.0.2"; sha256 = "0p4ncankr9968lp4fnbq6pc5xwv2198gxhbds656da9jbv74w7j8"; buildDepends = [ deepseq ]; + testDepends = [ + Cabal deepseq QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://semantic.org/TimeLib/"; description = "A time library"; diff --git a/pkgs/development/libraries/haskell/tls/default.nix b/pkgs/development/libraries/haskell/tls/default.nix index af7b4c57bb7..a935b8ad4d5 100644 --- a/pkgs/development/libraries/haskell/tls/default.nix +++ b/pkgs/development/libraries/haskell/tls/default.nix @@ -1,5 +1,6 @@ -{ cabal, cereal, certificate, cryptohash, cryptoPubkey -, cryptoRandomApi, mtl, network +{ cabal, cereal, certificate, cprngAes, cryptohash, cryptoPubkey +, cryptoRandomApi, mtl, network, QuickCheck, testFramework +, testFrameworkQuickcheck2, time }: cabal.mkDerivation (self: { @@ -10,6 +11,10 @@ cabal.mkDerivation (self: { cereal certificate cryptohash cryptoPubkey cryptoRandomApi mtl network ]; + testDepends = [ + cereal certificate cprngAes cryptoPubkey cryptoRandomApi mtl + QuickCheck testFramework testFrameworkQuickcheck2 time + ]; meta = { homepage = "http://github.com/vincenthz/hs-tls"; description = "TLS/SSL protocol native implementation (Server and Client)"; diff --git a/pkgs/development/libraries/haskell/unix-time/default.nix b/pkgs/development/libraries/haskell/unix-time/default.nix index 24edaf80626..ddb24e46f4d 100644 --- a/pkgs/development/libraries/haskell/unix-time/default.nix +++ b/pkgs/development/libraries/haskell/unix-time/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, doctest, hspec, QuickCheck, time }: cabal.mkDerivation (self: { pname = "unix-time"; version = "0.1.5"; sha256 = "13xks5kshr51mbs112j8vvhirzhbi3fq6zjw7l4z2iwn8chh4hwg"; + testDepends = [ doctest hspec QuickCheck time ]; meta = { description = "Unix time parser/formatter and utilities"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/unordered-containers/default.nix b/pkgs/development/libraries/haskell/unordered-containers/default.nix index 786eb59ec10..2f786eba949 100644 --- a/pkgs/development/libraries/haskell/unordered-containers/default.nix +++ b/pkgs/development/libraries/haskell/unordered-containers/default.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq, hashable }: +{ cabal, ChasingBottoms, deepseq, hashable, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "unordered-containers"; version = "0.2.3.0"; sha256 = "1vzgjr9jxdkmgq970ng9zi2j60awvx8iv1v6kzjlrkwzxx1a9dpd"; buildDepends = [ deepseq hashable ]; + testDepends = [ + ChasingBottoms hashable HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/tibbe/unordered-containers"; description = "Efficient hashing-based container types"; diff --git a/pkgs/development/libraries/haskell/utility-ht/default.nix b/pkgs/development/libraries/haskell/utility-ht/default.nix index 93b4cc1480e..c921b4198ed 100644 --- a/pkgs/development/libraries/haskell/utility-ht/default.nix +++ b/pkgs/development/libraries/haskell/utility-ht/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, QuickCheck }: cabal.mkDerivation (self: { pname = "utility-ht"; version = "0.0.8"; sha256 = "02sm1xj5xa65hpkvl2yk89d9dlg3c2ap8qcviq9zj10asmsbzyd8"; + testDepends = [ QuickCheck ]; meta = { description = "Various small helper functions for Lists, Maybes, Tuples, Functions"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/uuid/default.nix b/pkgs/development/libraries/haskell/uuid/default.nix index 5b939ccb6cc..55ac6cf9e68 100644 --- a/pkgs/development/libraries/haskell/uuid/default.nix +++ b/pkgs/development/libraries/haskell/uuid/default.nix @@ -1,10 +1,15 @@ -{ cabal, binary, cryptohash, maccatcher, random, time }: +{ cabal, binary, criterion, cryptohash, deepseq, HUnit, maccatcher +, mersenneRandomPure64, QuickCheck, random, time +}: cabal.mkDerivation (self: { pname = "uuid"; version = "1.2.9"; sha256 = "088wbhf21w91774icddbm3a8p8jikwjqgg8zdad0pdv8zbi7flsi"; buildDepends = [ binary cryptohash maccatcher random time ]; + testDepends = [ + criterion deepseq HUnit mersenneRandomPure64 QuickCheck random + ]; meta = { homepage = "http://projects.haskell.org/uuid/"; description = "For creating, comparing, parsing and printing Universally Unique Identifiers"; diff --git a/pkgs/development/libraries/haskell/vty/default.nix b/pkgs/development/libraries/haskell/vty/default.nix index e475ca7e856..9adc35b1bdf 100644 --- a/pkgs/development/libraries/haskell/vty/default.nix +++ b/pkgs/development/libraries/haskell/vty/default.nix @@ -1,5 +1,5 @@ -{ cabal, deepseq, mtl, parallel, parsec, stringQq, terminfo -, utf8String, vector +{ cabal, Cabal, deepseq, mtl, parallel, parsec, QuickCheck, random +, stringQq, terminfo, utf8String, vector }: cabal.mkDerivation (self: { @@ -11,6 +11,10 @@ cabal.mkDerivation (self: { buildDepends = [ deepseq mtl parallel parsec stringQq terminfo utf8String vector ]; + testDepends = [ + Cabal deepseq mtl parallel parsec QuickCheck random terminfo + utf8String vector + ]; meta = { homepage = "https://github.com/coreyoconnor/vty"; description = "A simple terminal UI library"; diff --git a/pkgs/development/libraries/haskell/wai-app-static/default.nix b/pkgs/development/libraries/haskell/wai-app-static/default.nix index 36ec82d88c3..7feed2df4bc 100644 --- a/pkgs/development/libraries/haskell/wai-app-static/default.nix +++ b/pkgs/development/libraries/haskell/wai-app-static/default.nix @@ -1,7 +1,7 @@ { cabal, base64Bytestring, blazeBuilder, blazeHtml, blazeMarkup -, cereal, cryptoConduit, cryptohash, fileEmbed, httpDate, httpTypes -, mimeTypes, systemFileio, systemFilepath, text, time, transformers -, unixCompat, wai +, cereal, cryptoConduit, cryptohash, fileEmbed, hspec, httpDate +, httpTypes, mimeTypes, network, systemFileio, systemFilepath, text +, time, transformers, unixCompat, wai, waiTest }: cabal.mkDerivation (self: { @@ -13,6 +13,10 @@ cabal.mkDerivation (self: { cryptoConduit cryptohash fileEmbed httpDate httpTypes mimeTypes systemFileio systemFilepath text time transformers unixCompat wai ]; + testDepends = [ + hspec httpDate httpTypes mimeTypes network text time transformers + unixCompat wai waiTest + ]; meta = { homepage = "http://www.yesodweb.com/book/web-application-interface"; description = "WAI application for static serving"; diff --git a/pkgs/development/libraries/haskell/wai-extra/default.nix b/pkgs/development/libraries/haskell/wai-extra/default.nix index 7a4e18b3295..53a1ccaf55a 100644 --- a/pkgs/development/libraries/haskell/wai-extra/default.nix +++ b/pkgs/development/libraries/haskell/wai-extra/default.nix @@ -1,7 +1,8 @@ { cabal, ansiTerminal, blazeBuilder, blazeBuilderConduit , caseInsensitive, conduit, dataDefault, dateCache, fastLogger -, httpTypes, network, resourcet, stringsearch, text, time -, transformers, void, wai, waiLogger, zlibConduit +, hspec, httpTypes, HUnit, network, resourcet, stringsearch, text +, time, transformers, void, wai, waiLogger, waiTest, zlib +, zlibBindings, zlibConduit }: cabal.mkDerivation (self: { @@ -14,6 +15,10 @@ cabal.mkDerivation (self: { resourcet stringsearch text time transformers void wai waiLogger zlibConduit ]; + testDepends = [ + blazeBuilder conduit dataDefault fastLogger hspec httpTypes HUnit + text transformers wai waiTest zlib zlibBindings + ]; meta = { homepage = "http://github.com/yesodweb/wai"; description = "Provides some basic WAI handlers and middleware"; diff --git a/pkgs/development/libraries/haskell/warp/default.nix b/pkgs/development/libraries/haskell/warp/default.nix index 290e60ff3b7..d924d4f38b0 100644 --- a/pkgs/development/libraries/haskell/warp/default.nix +++ b/pkgs/development/libraries/haskell/warp/default.nix @@ -1,6 +1,7 @@ { cabal, blazeBuilder, blazeBuilderConduit, caseInsensitive -, conduit, hashable, httpTypes, liftedBase, network, networkConduit -, simpleSendfile, transformers, unixCompat, void, wai +, conduit, hashable, hspec, httpTypes, HUnit, liftedBase, network +, networkConduit, QuickCheck, simpleSendfile, transformers +, unixCompat, void, wai }: cabal.mkDerivation (self: { @@ -12,6 +13,11 @@ cabal.mkDerivation (self: { httpTypes liftedBase network networkConduit simpleSendfile transformers unixCompat void wai ]; + testDepends = [ + blazeBuilder blazeBuilderConduit caseInsensitive conduit hashable + hspec httpTypes HUnit liftedBase network networkConduit QuickCheck + simpleSendfile transformers unixCompat void wai + ]; meta = { homepage = "http://github.com/yesodweb/wai"; description = "A fast, light-weight web server for WAI applications"; diff --git a/pkgs/development/libraries/haskell/word8/default.nix b/pkgs/development/libraries/haskell/word8/default.nix index 4b05c0b70d0..e8abded2438 100644 --- a/pkgs/development/libraries/haskell/word8/default.nix +++ b/pkgs/development/libraries/haskell/word8/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, hspec }: cabal.mkDerivation (self: { pname = "word8"; version = "0.0.3"; sha256 = "1k5sq91pidgw7w8fc62k9gl8iynb65pcza6mjx8pa3n2lslp7125"; + testDepends = [ hspec ]; meta = { description = "Word8 library"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/xml-conduit/default.nix b/pkgs/development/libraries/haskell/xml-conduit/default.nix index 39bcc63248e..7ebc0b003e5 100644 --- a/pkgs/development/libraries/haskell/xml-conduit/default.nix +++ b/pkgs/development/libraries/haskell/xml-conduit/default.nix @@ -1,7 +1,7 @@ { cabal, attoparsec, attoparsecConduit, blazeBuilder , blazeBuilderConduit, blazeHtml, blazeMarkup, conduit, dataDefault -, failure, monadControl, resourcet, systemFilepath, text -, transformers, xmlTypes +, failure, hspec, HUnit, monadControl, resourcet, systemFilepath +, text, transformers, xmlTypes }: cabal.mkDerivation (self: { @@ -13,6 +13,9 @@ cabal.mkDerivation (self: { blazeHtml blazeMarkup conduit dataDefault failure monadControl resourcet systemFilepath text transformers xmlTypes ]; + testDepends = [ + blazeMarkup conduit hspec HUnit text transformers xmlTypes + ]; meta = { homepage = "http://github.com/snoyberg/xml"; description = "Pure-Haskell utilities for dealing with XML with the conduit package"; diff --git a/pkgs/development/libraries/haskell/xml-hamlet/default.nix b/pkgs/development/libraries/haskell/xml-hamlet/default.nix index 1be00fa0c0f..9c85223d654 100644 --- a/pkgs/development/libraries/haskell/xml-hamlet/default.nix +++ b/pkgs/development/libraries/haskell/xml-hamlet/default.nix @@ -1,10 +1,11 @@ -{ cabal, parsec, shakespeare, text, xmlConduit }: +{ cabal, hspec, HUnit, parsec, shakespeare, text, xmlConduit }: cabal.mkDerivation (self: { pname = "xml-hamlet"; version = "0.4.0.4"; sha256 = "1s4s5z1xir9zmcbfz8mrznf2byclmg0qjjhwmpal2r9ly9g3na98"; buildDepends = [ parsec shakespeare text xmlConduit ]; + testDepends = [ hspec HUnit parsec shakespeare text xmlConduit ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Hamlet-style quasiquoter for XML content"; diff --git a/pkgs/development/libraries/haskell/xss-sanitize/default.nix b/pkgs/development/libraries/haskell/xss-sanitize/default.nix index f592568cb32..89bdab65b17 100644 --- a/pkgs/development/libraries/haskell/xss-sanitize/default.nix +++ b/pkgs/development/libraries/haskell/xss-sanitize/default.nix @@ -1,4 +1,6 @@ -{ cabal, attoparsec, cssText, network, tagsoup, text, utf8String }: +{ cabal, attoparsec, cssText, hspec, HUnit, network, tagsoup, text +, utf8String +}: cabal.mkDerivation (self: { pname = "xss-sanitize"; @@ -7,6 +9,9 @@ cabal.mkDerivation (self: { buildDepends = [ attoparsec cssText network tagsoup text utf8String ]; + testDepends = [ + attoparsec cssText hspec HUnit network tagsoup text utf8String + ]; meta = { homepage = "http://github.com/yesodweb/haskell-xss-sanitize"; description = "sanitize untrusted HTML to prevent XSS attacks"; diff --git a/pkgs/development/libraries/haskell/yaml/default.nix b/pkgs/development/libraries/haskell/yaml/default.nix index 9641cef56aa..f1cbb7ee7b8 100644 --- a/pkgs/development/libraries/haskell/yaml/default.nix +++ b/pkgs/development/libraries/haskell/yaml/default.nix @@ -1,5 +1,5 @@ -{ cabal, aeson, attoparsec, conduit, resourcet, text, transformers -, unorderedContainers, vector +{ cabal, aeson, attoparsec, conduit, hspec, HUnit, resourcet, text +, transformers, unorderedContainers, vector }: cabal.mkDerivation (self: { @@ -10,6 +10,9 @@ cabal.mkDerivation (self: { aeson attoparsec conduit resourcet text transformers unorderedContainers vector ]; + testDepends = [ + conduit hspec HUnit text transformers unorderedContainers + ]; meta = { homepage = "http://github.com/snoyberg/yaml/"; description = "Support for parsing and rendering YAML documents"; diff --git a/pkgs/development/libraries/haskell/yesod-core/default.nix b/pkgs/development/libraries/haskell/yesod-core/default.nix index e2a36c2f184..a25916316de 100644 --- a/pkgs/development/libraries/haskell/yesod-core/default.nix +++ b/pkgs/development/libraries/haskell/yesod-core/default.nix @@ -1,10 +1,10 @@ { cabal, aeson, blazeBuilder, blazeHtml, blazeMarkup , caseInsensitive, cereal, clientsession, conduit, cookie, failure -, fastLogger, hamlet, httpTypes, liftedBase, monadControl -, monadLogger, parsec, pathPieces, random, resourcet, shakespeare -, shakespeareCss, shakespeareI18n, shakespeareJs, text, time -, transformers, transformersBase, vector, wai, waiExtra -, yesodRoutes +, fastLogger, hamlet, hspec, httpTypes, HUnit, liftedBase +, monadControl, monadLogger, parsec, pathPieces, QuickCheck, random +, resourcet, shakespeare, shakespeareCss, shakespeareI18n +, shakespeareJs, text, time, transformers, transformersBase, vector +, wai, waiExtra, waiTest, yesodRoutes }: cabal.mkDerivation (self: { @@ -19,6 +19,10 @@ cabal.mkDerivation (self: { text time transformers transformersBase vector wai waiExtra yesodRoutes ]; + testDepends = [ + blazeBuilder conduit hamlet hspec httpTypes HUnit QuickCheck random + shakespeareCss shakespeareJs text transformers wai waiTest + ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Creation of type-safe, RESTful web applications"; diff --git a/pkgs/development/libraries/haskell/yesod-form/default.nix b/pkgs/development/libraries/haskell/yesod-form/default.nix index d853e217a7f..adf11916b90 100644 --- a/pkgs/development/libraries/haskell/yesod-form/default.nix +++ b/pkgs/development/libraries/haskell/yesod-form/default.nix @@ -1,5 +1,5 @@ { cabal, aeson, attoparsec, blazeBuilder, blazeHtml, blazeMarkup -, cryptoApi, dataDefault, emailValidate, hamlet, network +, cryptoApi, dataDefault, emailValidate, hamlet, hspec, network , persistent, shakespeareCss, shakespeareJs, text, time , transformers, wai, xssSanitize, yesodCore, yesodPersistent }: @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { shakespeareJs text time transformers wai xssSanitize yesodCore yesodPersistent ]; + testDepends = [ hspec text time ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Form handling support for Yesod Web Framework"; diff --git a/pkgs/development/libraries/haskell/yesod-routes/default.nix b/pkgs/development/libraries/haskell/yesod-routes/default.nix index c1dd27e377d..0ebfeb92bf1 100644 --- a/pkgs/development/libraries/haskell/yesod-routes/default.nix +++ b/pkgs/development/libraries/haskell/yesod-routes/default.nix @@ -1,10 +1,11 @@ -{ cabal, pathPieces, text, vector }: +{ cabal, hspec, HUnit, pathPieces, text, vector }: cabal.mkDerivation (self: { pname = "yesod-routes"; version = "1.1.2"; sha256 = "17yv2z7k1s958xyn552wpk0cwpivsnkvia8477yhgbp4n2d1i5jv"; buildDepends = [ pathPieces text vector ]; + testDepends = [ hspec HUnit pathPieces text ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Efficient routing for Yesod"; diff --git a/pkgs/development/libraries/haskell/yesod-static/default.nix b/pkgs/development/libraries/haskell/yesod-static/default.nix index a661a83c731..a7e90de2990 100644 --- a/pkgs/development/libraries/haskell/yesod-static/default.nix +++ b/pkgs/development/libraries/haskell/yesod-static/default.nix @@ -1,5 +1,5 @@ { cabal, base64Bytestring, cereal, conduit, cryptoConduit -, cryptohash, fileEmbed, httpTypes, systemFilepath, text +, cryptohash, fileEmbed, hspec, httpTypes, systemFilepath, text , transformers, unixCompat, wai, waiAppStatic, yesodCore }: @@ -12,6 +12,11 @@ cabal.mkDerivation (self: { httpTypes systemFilepath text transformers unixCompat wai waiAppStatic yesodCore ]; + testDepends = [ + base64Bytestring cereal conduit cryptoConduit cryptohash fileEmbed + hspec httpTypes systemFilepath text transformers unixCompat wai + waiAppStatic yesodCore + ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Static file serving subsite for Yesod Web Framework"; diff --git a/pkgs/development/libraries/haskell/yesod-test/default.nix b/pkgs/development/libraries/haskell/yesod-test/default.nix index b11c88534b2..3753067d958 100644 --- a/pkgs/development/libraries/haskell/yesod-test/default.nix +++ b/pkgs/development/libraries/haskell/yesod-test/default.nix @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { persistent poolConduit text time transformers wai waiTest xmlConduit xmlTypes ]; + testDepends = [ hspec htmlConduit HUnit xmlConduit ]; meta = { homepage = "http://www.yesodweb.com"; description = "integration testing for WAI/Yesod Applications"; diff --git a/pkgs/development/libraries/haskell/zeromq-haskell/default.nix b/pkgs/development/libraries/haskell/zeromq-haskell/default.nix index f5166f0f1f0..20d414ac6b1 100644 --- a/pkgs/development/libraries/haskell/zeromq-haskell/default.nix +++ b/pkgs/development/libraries/haskell/zeromq-haskell/default.nix @@ -1,9 +1,14 @@ -{ cabal, zeromq }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 +, zeromq +}: cabal.mkDerivation (self: { pname = "zeromq-haskell"; version = "0.8.4"; sha256 = "0lvjszi08r5wm5ch03153y7lir6cdgqr2gnhq45j4b0kid6gkpv3"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; extraLibraries = [ zeromq ]; meta = { homepage = "http://github.com/twittner/zeromq-haskell/"; diff --git a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix index 4db350f93b5..3a3e700cfbb 100644 --- a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix +++ b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix @@ -1,9 +1,14 @@ -{ cabal, zeromq }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 +, zeromq +}: cabal.mkDerivation (self: { pname = "zeromq3-haskell"; version = "0.2"; sha256 = "12qljfkcd4l9h3l80jibxgw2an6v782w0sxwvzxqmma29jv6hvky"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; extraLibraries = [ zeromq ]; meta = { homepage = "http://github.com/twittner/zeromq-haskell/"; diff --git a/pkgs/development/libraries/haskell/zip-archive/default.nix b/pkgs/development/libraries/haskell/zip-archive/default.nix index 300de9df4c9..6bbe2844612 100644 --- a/pkgs/development/libraries/haskell/zip-archive/default.nix +++ b/pkgs/development/libraries/haskell/zip-archive/default.nix @@ -1,4 +1,6 @@ -{ cabal, binary, digest, filepath, mtl, time, utf8String, zlib }: +{ cabal, binary, digest, filepath, HUnit, mtl, time, utf8String +, zlib +}: cabal.mkDerivation (self: { pname = "zip-archive"; @@ -7,6 +9,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ binary digest filepath mtl time utf8String zlib ]; + testDepends = [ HUnit time ]; meta = { homepage = "http://github.com/jgm/zip-archive"; description = "Library for creating and modifying zip archives"; diff --git a/pkgs/development/libraries/haskell/zlib-bindings/default.nix b/pkgs/development/libraries/haskell/zlib-bindings/default.nix index d2c3a838adf..f69be8ae99e 100644 --- a/pkgs/development/libraries/haskell/zlib-bindings/default.nix +++ b/pkgs/development/libraries/haskell/zlib-bindings/default.nix @@ -1,10 +1,11 @@ -{ cabal, zlib }: +{ cabal, hspec, QuickCheck, zlib }: cabal.mkDerivation (self: { pname = "zlib-bindings"; version = "0.1.1.3"; sha256 = "18jhav7chbapakm9mwn7bn9lgvip7qaz61dw5gwv2nyalvm96qfr"; buildDepends = [ zlib ]; + testDepends = [ hspec QuickCheck zlib ]; meta = { homepage = "http://github.com/snoyberg/zlib-bindings"; description = "Low-level bindings to the zlib package"; diff --git a/pkgs/development/libraries/haskell/zlib-conduit/default.nix b/pkgs/development/libraries/haskell/zlib-conduit/default.nix index cf62afc6c01..b283c496a29 100644 --- a/pkgs/development/libraries/haskell/zlib-conduit/default.nix +++ b/pkgs/development/libraries/haskell/zlib-conduit/default.nix @@ -1,10 +1,13 @@ -{ cabal, conduit, transformers, void, zlibBindings }: +{ cabal, conduit, hspec, QuickCheck, resourcet, transformers, void +, zlibBindings +}: cabal.mkDerivation (self: { pname = "zlib-conduit"; version = "1.0.0"; sha256 = "0q0l4qw1f2cwjj71n4i082ba47x1xba695q8xk0ky2vw5s8cg0bv"; buildDepends = [ conduit transformers void zlibBindings ]; + testDepends = [ conduit hspec QuickCheck resourcet transformers ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Streaming compression/decompression via conduits"; diff --git a/pkgs/development/tools/documentation/haddock/2.10.0.nix b/pkgs/development/tools/documentation/haddock/2.10.0.nix index 5c608c440aa..8f16c6c65c4 100644 --- a/pkgs/development/tools/documentation/haddock/2.10.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.10.0.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.11.0.nix b/pkgs/development/tools/documentation/haddock/2.11.0.nix index 92dccbf05a6..32b3a5ec8b5 100644 --- a/pkgs/development/tools/documentation/haddock/2.11.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.11.0.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.12.0.nix b/pkgs/development/tools/documentation/haddock/2.12.0.nix index 39610f9a08c..b1228dab18a 100644 --- a/pkgs/development/tools/documentation/haddock/2.12.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.12.0.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.13.1.nix b/pkgs/development/tools/documentation/haddock/2.13.1.nix index 1eed852f537..5b6ddfc1610 100644 --- a/pkgs/development/tools/documentation/haddock/2.13.1.nix +++ b/pkgs/development/tools/documentation/haddock/2.13.1.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.9.4.nix b/pkgs/development/tools/documentation/haddock/2.9.4.nix index 15ed35f5758..2a29ee950a8 100644 --- a/pkgs/development/tools/documentation/haddock/2.9.4.nix +++ b/pkgs/development/tools/documentation/haddock/2.9.4.nix @@ -1,4 +1,5 @@ -{ cabal, alex, Cabal, filepath, ghcPaths, happy, xhtml }: +{ cabal, alex, Cabal, filepath, ghcPaths, happy, regexCompat, xhtml +}: cabal.mkDerivation (self: { pname = "haddock"; @@ -7,6 +8,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath regexCompat ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; From fbb1665cec6fccf4f2ebbf9609ee306f931f54c7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:09:56 +0100 Subject: [PATCH 179/572] haskell-base-compat: add version 0.2.1 --- .../libraries/haskell/base-compat/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/base-compat/default.nix diff --git a/pkgs/development/libraries/haskell/base-compat/default.nix b/pkgs/development/libraries/haskell/base-compat/default.nix new file mode 100644 index 00000000000..ca208b7c1a3 --- /dev/null +++ b/pkgs/development/libraries/haskell/base-compat/default.nix @@ -0,0 +1,13 @@ +{ cabal, hspec, setenv }: + +cabal.mkDerivation (self: { + pname = "base-compat"; + version = "0.2.1"; + sha256 = "1yssx3nww89dmkw8i55bp1vinbczbxhhh0kh4f3b9fyw5ylnai43"; + testDepends = [ hspec setenv ]; + meta = { + description = "A compatibility layer for base"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 4f3cd1b5363..fbb8b94396d 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -485,6 +485,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); base64Conduit = callPackage ../development/libraries/haskell/base64-conduit {}; + baseCompat = callPackage ../development/libraries/haskell/base-compat {}; + baseUnicodeSymbols = callPackage ../development/libraries/haskell/base-unicode-symbols {}; basicPrelude = callPackage ../development/libraries/haskell/basic-prelude {}; From 23d73151354f14e46fec3bd861756107ed31d048 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:08 +0100 Subject: [PATCH 180/572] haskell-ChasingBottoms: add version 1.3.0.5 --- .../libraries/haskell/ChasingBottoms/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/ChasingBottoms/default.nix diff --git a/pkgs/development/libraries/haskell/ChasingBottoms/default.nix b/pkgs/development/libraries/haskell/ChasingBottoms/default.nix new file mode 100644 index 00000000000..48231a1b6d2 --- /dev/null +++ b/pkgs/development/libraries/haskell/ChasingBottoms/default.nix @@ -0,0 +1,15 @@ +{ cabal, mtl, QuickCheck, random, syb }: + +cabal.mkDerivation (self: { + pname = "ChasingBottoms"; + version = "1.3.0.5"; + sha256 = "0g3c52c8gpm0xlnxxdgazz0f7zpnjvdx5vffsv1zr3vcn3kp1xy0"; + isLibrary = true; + isExecutable = true; + buildDepends = [ mtl QuickCheck random syb ]; + meta = { + description = "For testing partial and infinite values"; + license = "unknown"; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index fbb8b94396d..efd401f3764 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -582,6 +582,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); Chart = callPackage ../development/libraries/haskell/Chart {}; + ChasingBottoms = callPackage ../development/libraries/haskell/ChasingBottoms {}; + citeprocHs = callPackage ../development/libraries/haskell/citeproc-hs {}; cipherAes = callPackage ../development/libraries/haskell/cipher-aes {}; From d4aa0c77f02de51c32414f502b740ac916a7f08b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:20 +0100 Subject: [PATCH 181/572] haskell-concurrent-extra: add version 0.7.0.5 --- .../haskell/concurrent-extra/default.nix | 20 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/development/libraries/haskell/concurrent-extra/default.nix diff --git a/pkgs/development/libraries/haskell/concurrent-extra/default.nix b/pkgs/development/libraries/haskell/concurrent-extra/default.nix new file mode 100644 index 00000000000..db380f03b5b --- /dev/null +++ b/pkgs/development/libraries/haskell/concurrent-extra/default.nix @@ -0,0 +1,20 @@ +{ cabal, baseUnicodeSymbols, HUnit, stm, testFramework +, testFrameworkHunit, unboundedDelays +}: + +cabal.mkDerivation (self: { + pname = "concurrent-extra"; + version = "0.7.0.5"; + sha256 = "0g1ckrwgdyrlp1m352ivplajqzqhw5ymlkb4miiv7c5i9xyyyqnc"; + buildDepends = [ baseUnicodeSymbols stm unboundedDelays ]; + testDepends = [ + baseUnicodeSymbols HUnit stm testFramework testFrameworkHunit + unboundedDelays + ]; + meta = { + homepage = "https://github.com/basvandijk/concurrent-extra"; + description = "Extra concurrency primitives"; + 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 efd401f3764..69f2f4cecef 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -624,6 +624,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); contravariant = callPackage ../development/libraries/haskell/contravariant {}; + concurrentExtra = callPackage ../development/libraries/haskell/concurrent-extra {}; + converge = callPackage ../development/libraries/haskell/converge {}; cookie = callPackage ../development/libraries/haskell/cookie {}; From b0fb01de00531298ac71464ae981fa83a69f37a2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:30 +0100 Subject: [PATCH 182/572] haskell-data-accessor-transformers: add version 0.2.1.4 --- .../data-accessor/data-accessor-transformers.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix diff --git a/pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix b/pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix new file mode 100644 index 00000000000..83712b858c2 --- /dev/null +++ b/pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix @@ -0,0 +1,14 @@ +{ cabal, dataAccessor, transformers }: + +cabal.mkDerivation (self: { + pname = "data-accessor-transformers"; + version = "0.2.1.4"; + sha256 = "1bf1j8g5q81zw51bri89hj3i9jnlmhdggw8rhw3n2v103399pf7d"; + buildDepends = [ dataAccessor transformers ]; + meta = { + homepage = "http://www.haskell.org/haskellwiki/Record_access"; + description = "Use Accessor to access state in transformers State monad"; + 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 69f2f4cecef..cd4d09095ea 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -668,6 +668,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); dataAccessorTemplate = callPackage ../development/libraries/haskell/data-accessor/data-accessor-template.nix {}; + dataAccessorTransformers = callPackage ../development/libraries/haskell/data-accessor/data-accessor-transformers.nix {}; + dataBinaryIeee754 = callPackage ../development/libraries/haskell/data-binary-ieee754 {}; dataDefault = callPackage ../development/libraries/haskell/data-default {}; From a831ca8a4c805c27e5b4edfff5a7966c46680855 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:41 +0100 Subject: [PATCH 183/572] haskell-encoding: add version 0.6.7.2 --- .../libraries/haskell/encoding/default.nix | 16 ++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/development/libraries/haskell/encoding/default.nix diff --git a/pkgs/development/libraries/haskell/encoding/default.nix b/pkgs/development/libraries/haskell/encoding/default.nix new file mode 100644 index 00000000000..1b7ef1bcd1d --- /dev/null +++ b/pkgs/development/libraries/haskell/encoding/default.nix @@ -0,0 +1,16 @@ +{ cabal, binary, extensibleExceptions, HaXml, mtl, regexCompat }: + +cabal.mkDerivation (self: { + pname = "encoding"; + version = "0.6.7.2"; + sha256 = "0b1z5824vdkcc51bd1vgcbaniw3fv9dmd5qczjc89b5lhrl7qq0d"; + buildDepends = [ + binary extensibleExceptions HaXml mtl regexCompat + ]; + meta = { + homepage = "http://code.haskell.org/encoding/"; + description = "A library for various character encodings"; + 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 cd4d09095ea..68d7d4cee23 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -769,6 +769,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); emailValidate = callPackage ../development/libraries/haskell/email-validate {}; + encoding = callPackage ../development/libraries/haskell/encoding {}; + enumerator = callPackage ../development/libraries/haskell/enumerator {}; entropy = callPackage ../development/libraries/haskell/entropy {}; From 52c8f2a8f6b4567efb4de476ebe5d4285daced26 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:49 +0100 Subject: [PATCH 184/572] haskell-file-location: add version 0.4.5.2 --- .../libraries/haskell/file-location/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/file-location/default.nix diff --git a/pkgs/development/libraries/haskell/file-location/default.nix b/pkgs/development/libraries/haskell/file-location/default.nix new file mode 100644 index 00000000000..8a28d0b27fb --- /dev/null +++ b/pkgs/development/libraries/haskell/file-location/default.nix @@ -0,0 +1,15 @@ +{ cabal, liftedBase, transformers }: + +cabal.mkDerivation (self: { + pname = "file-location"; + version = "0.4.5.2"; + sha256 = "0dyzf2lhh0n4hwbh44qfh6bw9snl4hha9sv76c4ndi7v1rvnx197"; + buildDepends = [ liftedBase transformers ]; + testDepends = [ liftedBase transformers ]; + meta = { + homepage = "https://github.com/gregwebs/FileLocation.hs"; + description = "common functions that show file location information"; + 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 68d7d4cee23..8d9a2d80899 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -792,6 +792,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); filepath_1_3_0_0 = callPackage ../development/libraries/haskell/filepath {}; filepath = null; # a core package in recent GHCs + fileLocation = callPackage ../development/libraries/haskell/file-location {}; + extensibleExceptions_0_1_1_0 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.0.nix {}; extensibleExceptions_0_1_1_2 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.2.nix {}; extensibleExceptions_0_1_1_3 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.3.nix {}; From cc4339006599be47a4052ed76b07a2b0dff1a642 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:11:11 +0100 Subject: [PATCH 185/572] haskell-hspec-meta: add version 1.4.4 --- .../libraries/haskell/hspec-meta/default.nix | 22 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/development/libraries/haskell/hspec-meta/default.nix diff --git a/pkgs/development/libraries/haskell/hspec-meta/default.nix b/pkgs/development/libraries/haskell/hspec-meta/default.nix new file mode 100644 index 00000000000..c86db3bf0d7 --- /dev/null +++ b/pkgs/development/libraries/haskell/hspec-meta/default.nix @@ -0,0 +1,22 @@ +{ cabal, ansiTerminal, filepath, hspecExpectations, HUnit +, QuickCheck, setenv, silently, time, transformers +}: + +cabal.mkDerivation (self: { + pname = "hspec-meta"; + version = "1.4.4"; + sha256 = "1p1miiaa38rd92bz695znlwd6wyvs8zpp2idyw5pkzvhqi8w10a1"; + isLibrary = true; + isExecutable = true; + buildDepends = [ + ansiTerminal filepath hspecExpectations HUnit QuickCheck setenv + silently time transformers + ]; + doCheck = false; + meta = { + homepage = "http://hspec.github.com/"; + description = "A version of Hspec which is used to test Hspec itself"; + 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 8d9a2d80899..df71e01d0f2 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1079,6 +1079,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); hspecExpectations = callPackage ../development/libraries/haskell/hspec-expectations {}; + hspecMeta = callPackage ../development/libraries/haskell/hspec-meta {}; + hsyslog = callPackage ../development/libraries/haskell/hsyslog {}; html_1_0_1_2 = callPackage ../development/libraries/haskell/html/1.0.1.2.nix {}; From 9bf8e18584514746db4f5970d37f3e1d2208953d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:16 +0100 Subject: [PATCH 186/572] haskell-idna: add version 0.2 --- pkgs/development/libraries/haskell/idna/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/idna/default.nix diff --git a/pkgs/development/libraries/haskell/idna/default.nix b/pkgs/development/libraries/haskell/idna/default.nix new file mode 100644 index 00000000000..1d5bc92bf6f --- /dev/null +++ b/pkgs/development/libraries/haskell/idna/default.nix @@ -0,0 +1,13 @@ +{ cabal, punycode, stringprep, text }: + +cabal.mkDerivation (self: { + pname = "idna"; + version = "0.2"; + sha256 = "0gl1mn2fjyxdpzl024imspf7hk4xvj9r8mvisqnlkdsng8i5jnyz"; + buildDepends = [ punycode stringprep text ]; + meta = { + description = "Implements IDNA (RFC 3490)"; + 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 df71e01d0f2..62036e55e80 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1112,6 +1112,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); hxtUnicode = callPackage ../development/libraries/haskell/hxt-unicode {}; + idna = callPackage ../development/libraries/haskell/idna {}; + IfElse = callPackage ../development/libraries/haskell/IfElse {}; ieee754 = callPackage ../development/libraries/haskell/ieee754 {}; From 0a18c04e95172e54298501b270b690fbcd303a76 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:25 +0100 Subject: [PATCH 187/572] haskell-lockfree-queue: add version 0.2 --- .../haskell/lockfree-queue/default.nix | 19 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 pkgs/development/libraries/haskell/lockfree-queue/default.nix diff --git a/pkgs/development/libraries/haskell/lockfree-queue/default.nix b/pkgs/development/libraries/haskell/lockfree-queue/default.nix new file mode 100644 index 00000000000..7efe6b25b39 --- /dev/null +++ b/pkgs/development/libraries/haskell/lockfree-queue/default.nix @@ -0,0 +1,19 @@ +{ cabal, abstractDeque, HUnit, IORefCAS, testFramework +, testFrameworkHunit +}: + +cabal.mkDerivation (self: { + pname = "lockfree-queue"; + version = "0.2"; + sha256 = "0m76wjw13nyj2mpz1dv2crg9sk66nlf62qgk2hbsa7ymydkq797c"; + buildDepends = [ abstractDeque IORefCAS ]; + testDepends = [ + abstractDeque HUnit IORefCAS testFramework testFrameworkHunit + ]; + meta = { + homepage = "https://github.com/rrnewton/haskell-lockfree-queue/wiki"; + description = "Michael and Scott lock-free queues"; + 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 62036e55e80..b3686cd2637 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1195,6 +1195,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); ltk = callPackage ../development/libraries/haskell/ltk {}; + lockfreeQueue = callPackage ../development/libraries/haskell/lockfree-queue {}; + logfloat = callPackage ../development/libraries/haskell/logfloat {}; logict = callPackage ../development/libraries/haskell/logict {}; From a123d5704c39c42155a513f9c8c69b92c7578552 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:38 +0100 Subject: [PATCH 188/572] haskell-markdown-unlit: add version 0.2.0.1 --- .../libraries/haskell/markdown-unlit/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/markdown-unlit/default.nix diff --git a/pkgs/development/libraries/haskell/markdown-unlit/default.nix b/pkgs/development/libraries/haskell/markdown-unlit/default.nix new file mode 100644 index 00000000000..06c1b9e2fca --- /dev/null +++ b/pkgs/development/libraries/haskell/markdown-unlit/default.nix @@ -0,0 +1,15 @@ +{ cabal, hspec, QuickCheck, silently, stringbuilder }: + +cabal.mkDerivation (self: { + pname = "markdown-unlit"; + version = "0.2.0.1"; + sha256 = "1bc3vcifv2xcddh8liq380c6sxarrs5pf21pfs9i4dx9rfl3hvhq"; + isLibrary = true; + isExecutable = true; + testDepends = [ hspec QuickCheck silently stringbuilder ]; + meta = { + description = "Literate Haskell support for Markdown"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index b3686cd2637..cbd62d80f24 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1203,6 +1203,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); maccatcher = callPackage ../development/libraries/haskell/maccatcher {}; + markdownUnlit = callPackage ../development/libraries/haskell/markdown-unlit {}; + mathFunctions = callPackage ../development/libraries/haskell/math-functions {}; mainlandPretty = callPackage ../development/libraries/haskell/mainland-pretty {}; From b27fd14fb07b52f97314324c9d1a10faaa747cff Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:46 +0100 Subject: [PATCH 189/572] haskell-nanospec: add version 0.1.0 --- .../libraries/haskell/nanospec/default.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/haskell/nanospec/default.nix diff --git a/pkgs/development/libraries/haskell/nanospec/default.nix b/pkgs/development/libraries/haskell/nanospec/default.nix new file mode 100644 index 00000000000..b7f498a35c8 --- /dev/null +++ b/pkgs/development/libraries/haskell/nanospec/default.nix @@ -0,0 +1,14 @@ +{ cabal, hspec, silently }: + +cabal.mkDerivation (self: { + pname = "nanospec"; + version = "0.1.0"; + sha256 = "16qpn199p8nrllg800zryhb8795jgk78znng5fjq1raj8l3snjk0"; + testDepends = [ hspec silently ]; + doCheck = false; + meta = { + description = "A lightweight implementation of a subset of Hspec's API"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index cbd62d80f24..531a81db782 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1290,6 +1290,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); NanoProlog = callPackage ../development/libraries/haskell/NanoProlog {}; + nanospec = callPackage ../development/libraries/haskell/nanospec {}; + nat = callPackage ../development/libraries/haskell/nat {}; nats = callPackage ../development/libraries/haskell/nats {}; From 0b0905be3b6644d4f39f59d1f66f646ae9e0fae9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:53 +0100 Subject: [PATCH 190/572] haskell-network-transport-tests: add version 0.1.0.1 --- .../haskell/network-transport-tests/default.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/haskell/network-transport-tests/default.nix diff --git a/pkgs/development/libraries/haskell/network-transport-tests/default.nix b/pkgs/development/libraries/haskell/network-transport-tests/default.nix new file mode 100644 index 00000000000..7aedea7995b --- /dev/null +++ b/pkgs/development/libraries/haskell/network-transport-tests/default.nix @@ -0,0 +1,14 @@ +{ cabal, ansiTerminal, mtl, networkTransport, random }: + +cabal.mkDerivation (self: { + pname = "network-transport-tests"; + version = "0.1.0.1"; + sha256 = "15vdkjq10mm378iyci1lpj6b77m7sil5mk3yhzf6vcbfj54pwca6"; + buildDepends = [ ansiTerminal mtl networkTransport random ]; + meta = { + homepage = "http://github.com/haskell-distributed/distributed-process"; + description = "Unit tests for Network.Transport implementations"; + 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 531a81db782..1029d47918e 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1323,6 +1323,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); networkTransportTcp = callPackage ../development/libraries/haskell/network-transport-tcp {}; + networkTransportTests = callPackage ../development/libraries/haskell/network-transport-tests {}; + newtype = callPackage ../development/libraries/haskell/newtype {}; nonNegative = callPackage ../development/libraries/haskell/non-negative {}; From 1dfe6d4e6b99d3b372f188f11c144c4c97835dbd Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:01 +0100 Subject: [PATCH 191/572] haskell-punycode: add version 2.0 --- .../libraries/haskell/punycode/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/punycode/default.nix diff --git a/pkgs/development/libraries/haskell/punycode/default.nix b/pkgs/development/libraries/haskell/punycode/default.nix new file mode 100644 index 00000000000..ade7685be6e --- /dev/null +++ b/pkgs/development/libraries/haskell/punycode/default.nix @@ -0,0 +1,15 @@ +{ cabal, cereal, encoding, HUnit, mtl, QuickCheck, text }: + +cabal.mkDerivation (self: { + pname = "punycode"; + version = "2.0"; + sha256 = "192jgfixnpxdj6jiiz92kx5bi6ij3c389b76q9f4vyfmvcajj1sr"; + buildDepends = [ cereal mtl text ]; + testDepends = [ cereal encoding HUnit mtl QuickCheck text ]; + meta = { + homepage = "https://github.com/litherum/punycode"; + description = "Encode unicode strings to ascii forms according to RFC 3492"; + 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 1029d47918e..791678ab55c 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1426,6 +1426,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); prettyShow = callPackage ../development/libraries/haskell/pretty-show {}; + punycode = callPackage ../development/libraries/haskell/punycode {}; + primitive_0_4_1 = callPackage ../development/libraries/haskell/primitive/0.4.1.nix {}; primitive_0_5 = callPackage ../development/libraries/haskell/primitive/0.5.nix {}; primitive_0_5_0_1 = callPackage ../development/libraries/haskell/primitive/0.5.0.1.nix {}; From 15ff301d63f72808fd5662d878e8c99f282b2081 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:13 +0100 Subject: [PATCH 192/572] haskell-stringbuilder: add version 0.4.0 --- .../libraries/haskell/stringbuilder/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/stringbuilder/default.nix diff --git a/pkgs/development/libraries/haskell/stringbuilder/default.nix b/pkgs/development/libraries/haskell/stringbuilder/default.nix new file mode 100644 index 00000000000..efe0956afc0 --- /dev/null +++ b/pkgs/development/libraries/haskell/stringbuilder/default.nix @@ -0,0 +1,13 @@ +{ cabal, hspec, QuickCheck }: + +cabal.mkDerivation (self: { + pname = "stringbuilder"; + version = "0.4.0"; + sha256 = "0v0lpb13khpiygfdkyzzsf64anxjykwvjsrkds836whm1bv86lhl"; + testDepends = [ hspec QuickCheck ]; + meta = { + description = "A writer monad for multi-line string literals"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 791678ab55c..1c988362d72 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1677,6 +1677,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); libc = pkgs.stdenv.gcc.libc; }; + stringbuilder = callPackage ../development/libraries/haskell/stringbuilder {}; + symbol = callPackage ../development/libraries/haskell/symbol {}; systemFilepath = callPackage ../development/libraries/haskell/system-filepath {}; From e82f5c750e6d64d68a89ac0d15466bddf7eafcda Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:30 +0100 Subject: [PATCH 193/572] haskell-stringprep: add version 0.1.5 --- .../libraries/haskell/stringprep/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/stringprep/default.nix diff --git a/pkgs/development/libraries/haskell/stringprep/default.nix b/pkgs/development/libraries/haskell/stringprep/default.nix new file mode 100644 index 00000000000..f1654751f75 --- /dev/null +++ b/pkgs/development/libraries/haskell/stringprep/default.nix @@ -0,0 +1,13 @@ +{ cabal, ranges, text, textIcu }: + +cabal.mkDerivation (self: { + pname = "stringprep"; + version = "0.1.5"; + sha256 = "1a25b18kd1zx06gi677g3xvsm49izhhf26z2dfljkjfykf05kqmp"; + buildDepends = [ ranges text textIcu ]; + meta = { + description = "Implements the \"StringPrep\" algorithm"; + 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 1c988362d72..38ca6684f02 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1604,6 +1604,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); stringQq = callPackage ../development/libraries/haskell/string-qq {}; + stringprep = callPackage ../development/libraries/haskell/stringprep {}; + stringsearch = callPackage ../development/libraries/haskell/stringsearch {}; strptime = callPackage ../development/libraries/haskell/strptime {}; From 5b4b656e514136d15043c2244102a64ede609936 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:41 +0100 Subject: [PATCH 194/572] haskell-Safe: add version 0.1 --- pkgs/development/libraries/haskell/Safe/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create 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 new file mode 100644 index 00000000000..f35877cd656 --- /dev/null +++ b/pkgs/development/libraries/haskell/Safe/default.nix @@ -0,0 +1,13 @@ +{ 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 38ca6684f02..686c406f00d 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1550,6 +1550,8 @@ 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 c1227815797f16745acfcef37f56578c07e1ca7b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:49 +0100 Subject: [PATCH 195/572] haskell-text-icu: add version 0.6.3.5 --- .../libraries/haskell/text-icu/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/text-icu/default.nix diff --git a/pkgs/development/libraries/haskell/text-icu/default.nix b/pkgs/development/libraries/haskell/text-icu/default.nix new file mode 100644 index 00000000000..16115809f5b --- /dev/null +++ b/pkgs/development/libraries/haskell/text-icu/default.nix @@ -0,0 +1,15 @@ +{ cabal, icu, text }: + +cabal.mkDerivation (self: { + pname = "text-icu"; + version = "0.6.3.5"; + sha256 = "1blfw9377yl732ypbjhkvi3vfg6c1f1rkxcsvwmqyhkdzb2agg0a"; + buildDepends = [ text ]; + extraLibraries = [ icu ]; + meta = { + homepage = "https://bitbucket.org/bos/text-icu"; + description = "Bindings to the ICU library"; + 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 686c406f00d..c3ecfc4290e 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1731,6 +1731,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); text_0_11_2_3 = callPackage ../development/libraries/haskell/text/0.11.2.3.nix {}; text = self.text_0_11_2_3; + textIcu = callPackage ../development/libraries/haskell/text-icu {}; + thespian = callPackage ../development/libraries/haskell/thespian {}; thExtras = callPackage ../development/libraries/haskell/th-extras {}; From 4846709d5004fdf4a280efdf6d83a091c4cc297f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:56 +0100 Subject: [PATCH 196/572] haskell-unbounded-delays: add version 0.1.0.5 --- .../libraries/haskell/unbounded-delays/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/unbounded-delays/default.nix diff --git a/pkgs/development/libraries/haskell/unbounded-delays/default.nix b/pkgs/development/libraries/haskell/unbounded-delays/default.nix new file mode 100644 index 00000000000..ccccf9d95d3 --- /dev/null +++ b/pkgs/development/libraries/haskell/unbounded-delays/default.nix @@ -0,0 +1,13 @@ +{ cabal }: + +cabal.mkDerivation (self: { + pname = "unbounded-delays"; + version = "0.1.0.5"; + sha256 = "109swgxlv3ywf5g0wgm3gp2y7azd6mqf2lfb9sk21dfzcz28aq4k"; + meta = { + homepage = "https://github.com/basvandijk/unbounded-delays"; + description = "Unbounded thread delays and timeouts"; + 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 c3ecfc4290e..b35e728f6b4 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1773,6 +1773,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); unbound = callPackage ../development/libraries/haskell/unbound {}; + unboundedDelays = callPackage ../development/libraries/haskell/unbounded-delays {}; + uniplate = callPackage ../development/libraries/haskell/uniplate {}; uniqueid = callPackage ../development/libraries/haskell/uniqueid {}; From 9cb00cf14e6f018fea7fb74d7f692e360a804ea1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:18:44 +0100 Subject: [PATCH 197/572] haskell-packages.nix: fix attribute ordering after recent additions --- pkgs/top-level/haskell-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index b35e728f6b4..273cd940316 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1604,10 +1604,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); stringCombinators = callPackage ../development/libraries/haskell/string-combinators {}; - stringQq = callPackage ../development/libraries/haskell/string-qq {}; - stringprep = callPackage ../development/libraries/haskell/stringprep {}; + stringQq = callPackage ../development/libraries/haskell/string-qq {}; + stringsearch = callPackage ../development/libraries/haskell/stringsearch {}; strptime = callPackage ../development/libraries/haskell/strptime {}; @@ -1677,12 +1677,12 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); strictConcurrency = callPackage ../development/libraries/haskell/strictConcurrency {}; + stringbuilder = callPackage ../development/libraries/haskell/stringbuilder {}; + svgcairo = callPackage ../development/libraries/haskell/svgcairo { libc = pkgs.stdenv.gcc.libc; }; - stringbuilder = callPackage ../development/libraries/haskell/stringbuilder {}; - symbol = callPackage ../development/libraries/haskell/symbol {}; systemFilepath = callPackage ../development/libraries/haskell/system-filepath {}; From fa5babd47dab5487176cb61cbb4c1d200579004a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:20:01 +0100 Subject: [PATCH 198/572] haskell-ghc-events: disable 'doCheck' because of test suite failure Running 1 test suites... Test suite test-versions: RUNNING... test-versions: test/queens-ghc-6.12.1.eventlog: openBinaryFile: does not exist (No such file or directory) Test suite test-versions: FAIL Test suite logged to: dist/test/ghc-events-0.4.2.0-test-versions.log 0 of 1 test suites (0 of 1 test cases) passed. --- pkgs/development/libraries/haskell/ghc-events/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/ghc-events/default.nix b/pkgs/development/libraries/haskell/ghc-events/default.nix index 1c12e5dbb0b..5b7decf9416 100644 --- a/pkgs/development/libraries/haskell/ghc-events/default.nix +++ b/pkgs/development/libraries/haskell/ghc-events/default.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { isExecutable = true; buildDepends = [ binary mtl ]; testDepends = [ binary mtl ]; + doCheck = false; meta = { description = "Library and tool for parsing .eventlog files from GHC"; license = self.stdenv.lib.licenses.bsd3; From 6d212a912993ec46f05076ddd66cc986140e1248 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:21:54 +0100 Subject: [PATCH 199/572] haddock: disable 'doCheck' to avoid compilation errors The test-suite stanza is incomplete. --- pkgs/development/tools/documentation/haddock/2.10.0.nix | 1 + pkgs/development/tools/documentation/haddock/2.11.0.nix | 1 + pkgs/development/tools/documentation/haddock/2.12.0.nix | 1 + pkgs/development/tools/documentation/haddock/2.13.1.nix | 1 + pkgs/development/tools/documentation/haddock/2.4.2.nix | 1 + pkgs/development/tools/documentation/haddock/2.7.2.nix | 1 + pkgs/development/tools/documentation/haddock/2.9.2.nix | 1 + pkgs/development/tools/documentation/haddock/2.9.4.nix | 1 + 8 files changed, 8 insertions(+) diff --git a/pkgs/development/tools/documentation/haddock/2.10.0.nix b/pkgs/development/tools/documentation/haddock/2.10.0.nix index 8f16c6c65c4..cfda3b66704 100644 --- a/pkgs/development/tools/documentation/haddock/2.10.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.10.0.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.11.0.nix b/pkgs/development/tools/documentation/haddock/2.11.0.nix index 32b3a5ec8b5..968efe2260b 100644 --- a/pkgs/development/tools/documentation/haddock/2.11.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.11.0.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.12.0.nix b/pkgs/development/tools/documentation/haddock/2.12.0.nix index b1228dab18a..12907a64d21 100644 --- a/pkgs/development/tools/documentation/haddock/2.12.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.12.0.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.13.1.nix b/pkgs/development/tools/documentation/haddock/2.13.1.nix index 5b6ddfc1610..e53ab715992 100644 --- a/pkgs/development/tools/documentation/haddock/2.13.1.nix +++ b/pkgs/development/tools/documentation/haddock/2.13.1.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.4.2.nix b/pkgs/development/tools/documentation/haddock/2.4.2.nix index dd7b9de9725..811ffd2855d 100644 --- a/pkgs/development/tools/documentation/haddock/2.4.2.nix +++ b/pkgs/development/tools/documentation/haddock/2.4.2.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { isExecutable = true; buildDepends = [ Cabal filepath ghcPaths ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.7.2.nix b/pkgs/development/tools/documentation/haddock/2.7.2.nix index 0c744d62419..8dd3460b6f8 100644 --- a/pkgs/development/tools/documentation/haddock/2.7.2.nix +++ b/pkgs/development/tools/documentation/haddock/2.7.2.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self : { sha256 = "4eaaaf62785f0ba3d37ba356cfac4679faef91c0902d8cdbf42837cbe5daab82"; extraBuildInputs = [alex happy makeWrapper]; propagatedBuildInputs = [ghcPaths]; + doCheck = false; postInstall = '' wrapProgram $out/bin/haddock --add-flags "\$(${self.ghc.GHCGetPackages} ${self.ghc.ghcVersion} \"\$(dirname \$0)\" \"--optghc=-package-conf --optghc=\")" diff --git a/pkgs/development/tools/documentation/haddock/2.9.2.nix b/pkgs/development/tools/documentation/haddock/2.9.2.nix index 8e5b79cd519..61e457426de 100644 --- a/pkgs/development/tools/documentation/haddock/2.9.2.nix +++ b/pkgs/development/tools/documentation/haddock/2.9.2.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self : { sha256 = "189vvp173pqc69zgzqqx6vyhvsc13p1s86ql60rs1j5qlhh8ajg8"; extraBuildInputs = [alex happy makeWrapper]; propagatedBuildInputs = [ghcPaths xhtml]; + doCheck = false; postInstall = '' wrapProgram $out/bin/haddock --add-flags "\$(${self.ghc.GHCGetPackages} ${self.ghc.ghcVersion} \"\$(dirname \$0)\" \"--optghc=-package-conf --optghc=\")" diff --git a/pkgs/development/tools/documentation/haddock/2.9.4.nix b/pkgs/development/tools/documentation/haddock/2.9.4.nix index 2a29ee950a8..8a57dd851c2 100644 --- a/pkgs/development/tools/documentation/haddock/2.9.4.nix +++ b/pkgs/development/tools/documentation/haddock/2.9.4.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath regexCompat ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; From 024f036ecd90ba7dcc933185a8d98831f5479909 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:22:02 +0100 Subject: [PATCH 200/572] alex: disable 'doCheck' to avoid compilation errors The test-suite stanza is incomplete. --- pkgs/development/tools/parsing/alex/2.3.1.nix | 1 + pkgs/development/tools/parsing/alex/2.3.2.nix | 1 + pkgs/development/tools/parsing/alex/2.3.3.nix | 1 + pkgs/development/tools/parsing/alex/2.3.5.nix | 1 + pkgs/development/tools/parsing/alex/3.0.1.nix | 1 + pkgs/development/tools/parsing/alex/3.0.2.nix | 1 + pkgs/development/tools/parsing/alex/3.0.4.nix | 1 + 7 files changed, 7 insertions(+) diff --git a/pkgs/development/tools/parsing/alex/2.3.1.nix b/pkgs/development/tools/parsing/alex/2.3.1.nix index e1d77561eb1..7dc17cd4153 100644 --- a/pkgs/development/tools/parsing/alex/2.3.1.nix +++ b/pkgs/development/tools/parsing/alex/2.3.1.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/2.3.2.nix b/pkgs/development/tools/parsing/alex/2.3.2.nix index 5a79036b082..5d10dbd6995 100644 --- a/pkgs/development/tools/parsing/alex/2.3.2.nix +++ b/pkgs/development/tools/parsing/alex/2.3.2.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/2.3.3.nix b/pkgs/development/tools/parsing/alex/2.3.3.nix index b0b40fecbed..bbe413d478f 100644 --- a/pkgs/development/tools/parsing/alex/2.3.3.nix +++ b/pkgs/development/tools/parsing/alex/2.3.3.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/2.3.5.nix b/pkgs/development/tools/parsing/alex/2.3.5.nix index cda27316792..3fb843e6955 100644 --- a/pkgs/development/tools/parsing/alex/2.3.5.nix +++ b/pkgs/development/tools/parsing/alex/2.3.5.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/3.0.1.nix b/pkgs/development/tools/parsing/alex/3.0.1.nix index 85e0474b745..cdcaead8635 100644 --- a/pkgs/development/tools/parsing/alex/3.0.1.nix +++ b/pkgs/development/tools/parsing/alex/3.0.1.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { 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/development/tools/parsing/alex/3.0.2.nix b/pkgs/development/tools/parsing/alex/3.0.2.nix index ec56c74db77..9011db12c7d 100644 --- a/pkgs/development/tools/parsing/alex/3.0.2.nix +++ b/pkgs/development/tools/parsing/alex/3.0.2.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { 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/development/tools/parsing/alex/3.0.4.nix b/pkgs/development/tools/parsing/alex/3.0.4.nix index bc82079aa79..3160570b240 100644 --- a/pkgs/development/tools/parsing/alex/3.0.4.nix +++ b/pkgs/development/tools/parsing/alex/3.0.4.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { 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"; From ea34b78ea60cbcf06c4cf5ef8f5ef0b2db82bf27 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:23:26 +0100 Subject: [PATCH 201/572] haskell-text: disable 'doCheck' to avoid infinite evaluation loop Some of the 'testDepends' of these packages end up depending on 'text' again. --- pkgs/development/libraries/haskell/text/0.11.0.5.nix | 1 + pkgs/development/libraries/haskell/text/0.11.0.6.nix | 1 + pkgs/development/libraries/haskell/text/0.11.1.13.nix | 1 + pkgs/development/libraries/haskell/text/0.11.1.5.nix | 1 + pkgs/development/libraries/haskell/text/0.11.2.0.nix | 1 + pkgs/development/libraries/haskell/text/0.11.2.3.nix | 1 + 6 files changed, 6 insertions(+) diff --git a/pkgs/development/libraries/haskell/text/0.11.0.5.nix b/pkgs/development/libraries/haskell/text/0.11.0.5.nix index 0b415d28aea..59644d05720 100644 --- a/pkgs/development/libraries/haskell/text/0.11.0.5.nix +++ b/pkgs/development/libraries/haskell/text/0.11.0.5.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.11.0.5"; sha256 = "1a5y2i7qrkyyvm112q44rhd7jbqxvfxssz2g5ngbx11yypl3hcdv"; buildDepends = [ deepseq ]; + doCheck = false; meta = { homepage = "http://bitbucket.org/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.0.6.nix b/pkgs/development/libraries/haskell/text/0.11.0.6.nix index 354621fd5cd..04fd250dfe9 100644 --- a/pkgs/development/libraries/haskell/text/0.11.0.6.nix +++ b/pkgs/development/libraries/haskell/text/0.11.0.6.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.11.0.6"; sha256 = "103l1c8jfwpddsqzwj9jqh89vay8ax1znxqgjqprv2fvr7s0zvkp"; buildDepends = [ deepseq ]; + doCheck = false; meta = { homepage = "http://bitbucket.org/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.1.13.nix b/pkgs/development/libraries/haskell/text/0.11.1.13.nix index aaf278a0a69..71d0c28e48d 100644 --- a/pkgs/development/libraries/haskell/text/0.11.1.13.nix +++ b/pkgs/development/libraries/haskell/text/0.11.1.13.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { deepseq HUnit QuickCheck random testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.1.5.nix b/pkgs/development/libraries/haskell/text/0.11.1.5.nix index 3f4132a87a2..03c2d90ff8d 100644 --- a/pkgs/development/libraries/haskell/text/0.11.1.5.nix +++ b/pkgs/development/libraries/haskell/text/0.11.1.5.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.11.1.5"; sha256 = "0fxxhw932gdvaqafsbw7dfzccc43hv92yhxppzp6jrg0npbyz04l"; buildDepends = [ deepseq ]; + doCheck = false; meta = { homepage = "https://bitbucket.org/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.0.nix b/pkgs/development/libraries/haskell/text/0.11.2.0.nix index 870438ea31f..ab784807bfa 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.0.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.0.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { deepseq HUnit QuickCheck random testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.3.nix b/pkgs/development/libraries/haskell/text/0.11.2.3.nix index a7089c94cfb..afa0e7eb5d3 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.3.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.3.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { deepseq HUnit QuickCheck random testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; From 66097c6025da11c2154da6d9a7db307227de3f86 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:24:55 +0100 Subject: [PATCH 202/572] Disable 'doCheck' in more packages to avoid infinite evaluation loops. --- pkgs/development/libraries/haskell/doctest/default.nix | 1 + .../development/libraries/haskell/hspec-expectations/default.nix | 1 + pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix | 1 + pkgs/development/libraries/haskell/monad-par/0.3.4.nix | 1 + pkgs/development/libraries/haskell/mwc-random/default.nix | 1 + pkgs/development/libraries/haskell/setenv/default.nix | 1 + pkgs/development/libraries/haskell/uuid/default.nix | 1 + 7 files changed, 7 insertions(+) diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix index 5dffb52ce1e..3c8988400bc 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 ]; + doCheck = false; meta = { homepage = "https://github.com/sol/doctest-haskell#readme"; description = "Test interactive Haskell examples"; diff --git a/pkgs/development/libraries/haskell/hspec-expectations/default.nix b/pkgs/development/libraries/haskell/hspec-expectations/default.nix index 4b84ad62784..8c9885d4378 100644 --- a/pkgs/development/libraries/haskell/hspec-expectations/default.nix +++ b/pkgs/development/libraries/haskell/hspec-expectations/default.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1ppcbfmcgrd1lwswa293fxwny6khhg4blygfbcsawrvgc5ji0q74"; buildDepends = [ HUnit ]; testDepends = [ hspec HUnit markdownUnlit silently ]; + doCheck = false; meta = { homepage = "https://github.com/sol/hspec-expectations#readme"; description = "Catchy combinators for HUnit"; diff --git a/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix b/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix index 1bfac2b13d2..8692d6267cb 100644 --- a/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix +++ b/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.1.0.3"; sha256 = "1c0yclil152hv06c2sbgam9amd63nnzh7a4xsnxb05wgy93qs2mg"; buildDepends = [ deepseq HUnit ]; + doCheck = false; meta = { homepage = "https://github.com/simonmar/monad-par"; description = "A library for parallel programming based on a monad"; diff --git a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix index f22ae9e106f..342bea47f6b 100644 --- a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix +++ b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix @@ -17,6 +17,7 @@ cabal.mkDerivation (self: { mwcRandom QuickCheck testFramework testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh time ]; + doCheck = false; meta = { homepage = "https://github.com/simonmar/monad-par"; description = "A library for parallel programming based on a monad"; diff --git a/pkgs/development/libraries/haskell/mwc-random/default.nix b/pkgs/development/libraries/haskell/mwc-random/default.nix index d20f4f061e4..3e9be2c5e58 100644 --- a/pkgs/development/libraries/haskell/mwc-random/default.nix +++ b/pkgs/development/libraries/haskell/mwc-random/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { HUnit QuickCheck statistics testFramework testFrameworkHunit testFrameworkQuickcheck2 vector ]; + doCheck = false; meta = { homepage = "https://github.com/bos/mwc-random"; description = "Fast, high quality pseudo random number generation"; diff --git a/pkgs/development/libraries/haskell/setenv/default.nix b/pkgs/development/libraries/haskell/setenv/default.nix index fd94874e364..b19728820aa 100644 --- a/pkgs/development/libraries/haskell/setenv/default.nix +++ b/pkgs/development/libraries/haskell/setenv/default.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.1.0"; sha256 = "04w42bpfbrs5crjp19zzi9dg61xpz4wvmjs2vc7q7qxblyhdfdsy"; testDepends = [ hspec QuickCheck ]; + doCheck = false; meta = { description = "A cross-platform library for setting environment variables"; license = self.stdenv.lib.licenses.mit; diff --git a/pkgs/development/libraries/haskell/uuid/default.nix b/pkgs/development/libraries/haskell/uuid/default.nix index 55ac6cf9e68..ed7e23f6c21 100644 --- a/pkgs/development/libraries/haskell/uuid/default.nix +++ b/pkgs/development/libraries/haskell/uuid/default.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ criterion deepseq HUnit mersenneRandomPure64 QuickCheck random ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/uuid/"; description = "For creating, comparing, parsing and printing Universally Unique Identifiers"; From 1e5df990dbdb76d16420bd98f059f19343c10fc7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:36:44 +0100 Subject: [PATCH 203/572] haskell-simple-sendfile: disable 'doCheck' because of test suite failure Running 1 test suites... Test suite spec: RUNNING... Sendfile sendfile spec: test/inputFile: openFd: does not exist (No such file or directory) - sends an entire file FAILED [1] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends a part of file FAILED [2] spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if length is over spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if offset is over - terminates even if the file is truncated FAILED [3] sendfileWithHeader spec: test/inputFile: openFd: does not exist (No such file or directory) - sends an header and an entire file FAILED [4] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends an header and a part of file FAILED [5] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends a large header and an entire file FAILED [6] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends a large header and a part of file FAILED [7] spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if length is over spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if offset is over - terminates even if the file is truncated FAILED [8] 1) Sendfile.sendfile sends an entire file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 2) Sendfile.sendfile sends a part of file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 3) Sendfile.sendfile terminates even if the file is truncated FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 4) Sendfile.sendfileWithHeader sends an header and an entire file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 5) Sendfile.sendfileWithHeader sends an header and a part of file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 6) Sendfile.sendfileWithHeader sends a large header and an entire file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 7) Sendfile.sendfileWithHeader sends a large header and a part of file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 8) Sendfile.sendfileWithHeader terminates even if the file is truncated FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) --- pkgs/development/libraries/haskell/simple-sendfile/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/simple-sendfile/default.nix b/pkgs/development/libraries/haskell/simple-sendfile/default.nix index 9ad2bd4405b..9e8f638c65c 100644 --- a/pkgs/development/libraries/haskell/simple-sendfile/default.nix +++ b/pkgs/development/libraries/haskell/simple-sendfile/default.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1q9m9lxv9jfkn6a1lf07jcl4li3n5996df1qrfkfjq2n0bvn4qfj"; buildDepends = [ network ]; testDepends = [ conduit hspec HUnit network networkConduit ]; + doCheck = false; meta = { description = "Cross platform library for the sendfile system call"; license = self.stdenv.lib.licenses.bsd3; From 5e495dcff25b69d87eb16db1ede17d1cbdefa7da Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:41:52 +0100 Subject: [PATCH 204/572] haskell-HTTP: disable 'doCheck' to avoid compilation errors Setup: At least the following dependencies are missing: case-insensitive ==0.4.*, conduit >=0.4 && <0.6, http-types >=0.6 && <0.8, wai >=1.2 && <1.4 --- pkgs/development/libraries/haskell/HTTP/4000.0.6.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.0.9.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.1.1.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.1.2.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.1.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.2.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.3.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.5.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.8.nix | 1 + 9 files changed, 9 insertions(+) diff --git a/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix b/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix index c87b38af452..ac4ac232edf 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.0.6"; sha256 = "75af1ac4dc21b10c8a1a54a33179ea822e591887bab7278360a3d6b38304d39b"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix b/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix index 493da3337b9..0beebbfe294 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.0.9"; sha256 = "1e2b4a8b782ad1417c8755bb0d248851bc142b351366ed460e07f2945a5e95ba"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix b/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix index 28a3bd5fe95..31cfdddac79 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.1.1"; sha256 = "09khx5fb673a0d7m3bl39xjdxvc60m52rmm4865cha2mby0zidy3"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix b/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix index a75c72f6a28..8d4a39526b2 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.1.2"; sha256 = "19vcy8xinrvn01caly6sg1p1yvbbf7nwq10kxmnwqssnl4h5cwn8"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix index 0c7fa0bfa78..f3da4a5ccf2 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ httpdShed HUnit network split testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix index 805bf36f5df..e6238a5e738 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ httpdShed HUnit network split testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix index a0b328d702c..d9e422f9e89 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ httpdShed HUnit network split testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix index 4adae562476..93ba5e949db 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix @@ -12,6 +12,7 @@ cabal.mkDerivation (self: { caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl network pureMD5 split testFramework testFrameworkHunit wai warp ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix index f0c103622a9..1b52261dea0 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix @@ -12,6 +12,7 @@ cabal.mkDerivation (self: { caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl network pureMD5 split testFramework testFrameworkHunit wai warp ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; From 01b02925e448b5025de25c20d50620bdc83597ae Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:42:15 +0100 Subject: [PATCH 205/572] haskell-cautious-file: disable 'doCheck' because of test suite failure --- pkgs/development/libraries/haskell/cautious-file/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/cautious-file/default.nix b/pkgs/development/libraries/haskell/cautious-file/default.nix index aa6e87565ae..44ed255bb63 100644 --- a/pkgs/development/libraries/haskell/cautious-file/default.nix +++ b/pkgs/development/libraries/haskell/cautious-file/default.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "1.0.2"; sha256 = "1sw5ngwrarq1lsd4c6v2wdmgbhkkq6kpybb62r8ccm11ddgn3yiq"; buildDepends = [ filepath ]; + doCheck = false; meta = { description = "Ways to write a file cautiously, to reduce the chances of problems such as data loss due to crashes or power failures"; license = self.stdenv.lib.licenses.bsd3; From fb97adb2440228ab4faa97d68bedff49a0f91a1b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:44:48 +0100 Subject: [PATCH 206/572] zeromq3-haskell: disable 'doCheck' because of build errors in test program --- pkgs/development/libraries/haskell/zeromq3-haskell/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix index 3a3e700cfbb..82dae54839f 100644 --- a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix +++ b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { QuickCheck testFramework testFrameworkQuickcheck2 ]; extraLibraries = [ zeromq ]; + doCheck = false; meta = { homepage = "http://github.com/twittner/zeromq-haskell/"; description = "Bindings to ZeroMQ 3.x"; From 9f37804f364389201223c4f287805276287c9f46 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:54:36 +0100 Subject: [PATCH 207/572] haskell-filestore: disable 'doCheck' because of test suite failures running tests /bin/sh: ./dist/build/test-filestore/test-filestore: No such file or directory --- pkgs/development/libraries/haskell/filestore/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/filestore/default.nix b/pkgs/development/libraries/haskell/filestore/default.nix index d114a5aa3af..468a9f711e1 100644 --- a/pkgs/development/libraries/haskell/filestore/default.nix +++ b/pkgs/development/libraries/haskell/filestore/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { buildDepends = [ Diff filepath HUnit mtl parsec split time utf8String xml ]; + doCheck = false; jailbreak = true; meta = { description = "Interface for versioning file stores"; From e2c5dfc3ee16a6faec681faefe01192f3c56a992 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:10:17 +0100 Subject: [PATCH 208/572] haskell-src-exts: disable 'doCheck' because of test suite build errors Test/Runner.hs:5:8: Could not find module `Language.Haskell.Exts.Annotated' Use -v to see a list of the files searched for. Setup: Pattern match failure in do expression at Setup.hs:6:5-15 --- pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix | 1 + pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix b/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix index 9df67a70c6c..1918260cc62 100644 --- a/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix +++ b/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1jqf8l81zw7x5ryf8h2n0b2636yhxkfp3j4ndbqw6hc7i5q581m6"; buildDepends = [ cpphs ]; buildTools = [ happy ]; + doCheck = false; meta = { homepage = "http://code.haskell.org/haskell-src-exts"; description = "Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer"; diff --git a/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix b/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix index 16f6d6362a1..5521e037b4e 100644 --- a/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix +++ b/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "03bzhfp7l9f5hh61qdrr83331nbfgj3jfsfylwmnmcknpisdqnkw"; buildDepends = [ cpphs ]; buildTools = [ happy ]; + doCheck = false; meta = { homepage = "http://code.haskell.org/haskell-src-exts"; description = "Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer"; From 2083fbb03e4a0a40e8dc15a30c136b87577ff6a4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:10:34 +0100 Subject: [PATCH 209/572] haskell-filestore: cosmetic --- pkgs/development/libraries/haskell/filestore/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/haskell/filestore/default.nix b/pkgs/development/libraries/haskell/filestore/default.nix index 468a9f711e1..5e93300b23c 100644 --- a/pkgs/development/libraries/haskell/filestore/default.nix +++ b/pkgs/development/libraries/haskell/filestore/default.nix @@ -11,8 +11,8 @@ cabal.mkDerivation (self: { buildDepends = [ Diff filepath HUnit mtl parsec split time utf8String xml ]; - doCheck = false; jailbreak = true; + doCheck = false; meta = { description = "Interface for versioning file stores"; license = self.stdenv.lib.licenses.bsd3; From b1010d50b5595e98e275511a591c56771d44a9e7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:20:53 +0100 Subject: [PATCH 210/572] haskell-vty: disable 'doCheck' because of build errors Setup: At least the following dependencies are missing: Cabal ==1.17.* --- pkgs/development/libraries/haskell/vty/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/vty/default.nix b/pkgs/development/libraries/haskell/vty/default.nix index 9adc35b1bdf..3121399b3a9 100644 --- a/pkgs/development/libraries/haskell/vty/default.nix +++ b/pkgs/development/libraries/haskell/vty/default.nix @@ -15,6 +15,7 @@ cabal.mkDerivation (self: { Cabal deepseq mtl parallel parsec QuickCheck random terminfo utf8String vector ]; + doCheck = false; meta = { homepage = "https://github.com/coreyoconnor/vty"; description = "A simple terminal UI library"; From a4f092a276198b95e2692125919a567aa7d37ab2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:24:48 +0100 Subject: [PATCH 211/572] haskell-hashed-storage: disable 'doCheck' because of test suite errors running tests /bin/sh: dist/build/hashed-storage-test/hashed-storage-test: No such file or directory --- pkgs/development/libraries/haskell/hashed-storage/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/hashed-storage/default.nix b/pkgs/development/libraries/haskell/hashed-storage/default.nix index 161e81eb375..77a4251259d 100644 --- a/pkgs/development/libraries/haskell/hashed-storage/default.nix +++ b/pkgs/development/libraries/haskell/hashed-storage/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { buildDepends = [ binary dataenc extensibleExceptions filepath mmap mtl zlib ]; + doCheck = false; meta = { description = "Hashed file storage support code"; license = self.stdenv.lib.licenses.bsd3; From 81da0c5194006e5a9383b7097fdb8433966eba6d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:25:00 +0100 Subject: [PATCH 212/572] haskell-sendfile: update to version 0.7.9 --- pkgs/development/libraries/haskell/sendfile/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/sendfile/default.nix b/pkgs/development/libraries/haskell/sendfile/default.nix index 455328ec9cb..dc1f24757af 100644 --- a/pkgs/development/libraries/haskell/sendfile/default.nix +++ b/pkgs/development/libraries/haskell/sendfile/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "sendfile"; - version = "0.7.8"; - sha256 = "0xy9ciikr444gblh3r8z3w4h4rcrfjfciw3dvxgzbygqs5dy6yxl"; + version = "0.7.9"; + sha256 = "0hnw1ym81cff49dwww19kgbs4s0kpandbvn6h5cml3y0p1nxybqh"; buildDepends = [ network ]; meta = { homepage = "http://hub.darcs.net/stepcut/sendfile"; From 36700ed68fda6ddeb6c9ea1a1bbbcd46037ddf4b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:31:32 +0100 Subject: [PATCH 213/572] haskell-numbers: disable 'doCheck' to avoid build errors Setup: At least the following dependencies are missing: test-framework ==0.6.*, test-framework-quickcheck2 ==0.2.* --- pkgs/development/libraries/haskell/numbers/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/numbers/default.nix b/pkgs/development/libraries/haskell/numbers/default.nix index 002f68eded7..e0136ad5d45 100644 --- a/pkgs/development/libraries/haskell/numbers/default.nix +++ b/pkgs/development/libraries/haskell/numbers/default.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { testDepends = [ QuickCheck testFramework testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/DanBurton/numbers"; description = "Various number types"; From 924efa3aaadc21726694fc70bb1ff225d5fd29be Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:33:12 +0100 Subject: [PATCH 214/572] haskell-tls: disable 'doCheck' to avoid build errors Tests/Tests.hs:41:0: error: missing binary operator before token "(" --- pkgs/development/libraries/haskell/tls/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/tls/default.nix b/pkgs/development/libraries/haskell/tls/default.nix index a935b8ad4d5..72e0976ceaf 100644 --- a/pkgs/development/libraries/haskell/tls/default.nix +++ b/pkgs/development/libraries/haskell/tls/default.nix @@ -15,6 +15,7 @@ cabal.mkDerivation (self: { cereal certificate cprngAes cryptoPubkey cryptoRandomApi mtl QuickCheck testFramework testFrameworkQuickcheck2 time ]; + doCheck = false; meta = { homepage = "http://github.com/vincenthz/hs-tls"; description = "TLS/SSL protocol native implementation (Server and Client)"; From 539659248e3c5474de6aeb53d6c8833b850a33d0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:34:35 +0100 Subject: [PATCH 215/572] haskell-zip-archive: disable 'doCheck' to avoid test suite failures Test suite test-zip-archive: RUNNING... Cases: 7 Tried: 1 Errors: 0 Failures: 0/bin/sh: /usr/bin/zip: No such file or directory ### Error in: 1 test-temp/test4.zip: openBinaryFile: does not exist (No such file or directory) Cases: 7 Tried: 4 Errors: 1 Failures: 0 adding: LICENSE (deflated 46%) adding: Codec/ (stored 0%) adding: LICENSE (deflated 46%) adding: Codec/ (stored 0%) adding: Codec/Archive/ (stored 0%) adding: Codec/Archive/Zip.hs (deflated 74%) Cases: 7 Tried: 6 Errors: 1 Failures: 0 creating: test-temp/dir1 extracting: test-temp/dir1/hi creating: test-temp/dir1/dir2 inflating: test-temp/dir1/dir2/hello Cases: 7 Tried: 7 Errors: 1 Failures: 0 Test suite test-zip-archive: FAIL Test suite logged to: dist/test/zip-archive-0.1.3.3-test-zip-archive.log 0 of 1 test suites (0 of 1 test cases) passed. --- 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 6bbe2844612..45f2ac96319 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 ed9cb3942c5291ec19373dd5dc113bd4eab2bfb7 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:39:43 +0100 Subject: [PATCH 216/572] haskell-permutation: disable 'doCheck' to avoid build errors Test/Permute.hs:20:8: Could not find module `Test.QuickCheck' Use -v to see a list of the files searched for. --- pkgs/development/libraries/haskell/permutation/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/permutation/default.nix b/pkgs/development/libraries/haskell/permutation/default.nix index 5903cb27f71..4f38dfcaa12 100644 --- a/pkgs/development/libraries/haskell/permutation/default.nix +++ b/pkgs/development/libraries/haskell/permutation/default.nix @@ -4,6 +4,7 @@ cabal.mkDerivation (self: { pname = "permutation"; version = "0.4.1"; sha256 = "0fgw4ivs8sa18fyphwr3mzp2v7ha2nz2yf3a7jmz9ymqdf2xws97"; + doCheck = false; meta = { homepage = "http://stat.stanford.edu/~patperry/code/permutation"; description = "A library for permutations and combinations"; From c18e2ea90282b56b9407323fd740fa191b708c9d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:41:08 +0100 Subject: [PATCH 217/572] pkgs/build-support/cabal: filter internal 'testDepends' field from the expression to avoid unnecessary hash changes --- 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 650807c324a..9fe917a35f1 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -8,7 +8,7 @@ # environment overly, but also to keep hash-backwards-compatible with the old cabal.nix. internalAttrs = [ "internalAttrs" "buildDepends" "buildTools" "extraLibraries" "pkgconfigDepends" - "isLibrary" "isExecutable" + "isLibrary" "isExecutable" "testDepends" ]; # Stuff happening after the user preferences have been processed. We remove From d8974b47cb7069fa6e0b4e1d1b93d8695ff1e510 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:43:34 +0100 Subject: [PATCH 218/572] pkgs/build-support/cabal: filter 'doCheck=false' field from the expression to avoid unnecessary hash changes In the master branch, doCheck defaults to 'false', which means that no package will change its hash unless its doCheck field is set to 'true' explicitly. In the stdenv-updates branch, however, all Haskell packages have a default setting of 'doCheck=true'. Once that branch has been merged, filtering doCheck is no longer necessary. --- 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 9fe917a35f1..706c9caca1c 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -9,7 +9,7 @@ internalAttrs = [ "internalAttrs" "buildDepends" "buildTools" "extraLibraries" "pkgconfigDepends" "isLibrary" "isExecutable" "testDepends" - ]; + ] ++ stdenv.lib.optional (!args.doCheck or false) "doCheck"; # Stuff happening after the user preferences have been processed. We remove # internal attributes and strip null elements from the dependency lists, all From 80d5273cc6af0c9e3d75a8a5e0009d80f29a12f9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:48:22 +0100 Subject: [PATCH 219/572] haskell-distributed-process: disable 'doCheck' to avoid build errors Setup: At least the following dependencies are missing: ansi-terminal ==0.5.* --- .../libraries/haskell/distributed-process/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/distributed-process/default.nix b/pkgs/development/libraries/haskell/distributed-process/default.nix index 0427a937f84..d23a5ef0228 100644 --- a/pkgs/development/libraries/haskell/distributed-process/default.nix +++ b/pkgs/development/libraries/haskell/distributed-process/default.nix @@ -20,6 +20,7 @@ cabal.mkDerivation (self: { testFrameworkHunit ]; noHaddock = true; + doCheck = false; meta = { homepage = "http://github.com/haskell-distributed/distributed-process"; description = "Cloud Haskell: Erlang-style concurrency in Haskell"; From dd9ff9adb7450e896395d6e3ba002f5f629193bc Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:03:34 +0100 Subject: [PATCH 220/572] darcs: disable test suite to avoid 127 exit code --- pkgs/applications/version-management/darcs/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/version-management/darcs/default.nix b/pkgs/applications/version-management/darcs/default.nix index 86f9be93f68..468e45fcff1 100644 --- a/pkgs/applications/version-management/darcs/default.nix +++ b/pkgs/applications/version-management/darcs/default.nix @@ -19,6 +19,7 @@ cabal.mkDerivation (self: { mkdir -p $out/etc/bash_completion.d mv contrib/darcs_completion $out/etc/bash_completion.d/darcs ''; + doCheck = false; meta = { homepage = "http://darcs.net/"; description = "a distributed, interactive, smart revision control system"; From 1cea746589367a5f9db7fa461b790bf0341d890b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:06:11 +0100 Subject: [PATCH 221/572] haskell-statistics: disable 'doCheck' to avoid test suite failures Running 1 test suites... Test suite tests: RUNNING... Tests for all distributions: Tests for: BetaDistribution: C.D.F. sanity: [OK, passed 100 tests] CDF limit at +tests: : commitBuffer: invalid argument (invalid character) Test suite tests: FAIL Test suite logged to: dist/test/statistics-0.10.2.0-tests.log --- pkgs/development/libraries/haskell/statistics/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/statistics/default.nix b/pkgs/development/libraries/haskell/statistics/default.nix index 923cdf879a5..f53e7a341d6 100644 --- a/pkgs/development/libraries/haskell/statistics/default.nix +++ b/pkgs/development/libraries/haskell/statistics/default.nix @@ -16,6 +16,7 @@ cabal.mkDerivation (self: { erf HUnit ieee754 mathFunctions primitive QuickCheck testFramework testFrameworkHunit testFrameworkQuickcheck2 vector vectorAlgorithms ]; + doCheck = false; meta = { homepage = "https://github.com/bos/statistics"; description = "A library of statistical types, data, and functions"; From 2ae0ca058010e9c387a34e05cf622c3fe78eedcc Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:11:16 +0100 Subject: [PATCH 222/572] haskell-threads: disable 'doCheck' to avoid test suite build errors Setup: At least the following dependencies are missing: test-framework >=0.2.4 && <0.7, test-framework-hunit >=0.2.4 && <0.3 --- pkgs/development/libraries/haskell/threads/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/threads/default.nix b/pkgs/development/libraries/haskell/threads/default.nix index a3327e88ba6..533a67c99c8 100644 --- a/pkgs/development/libraries/haskell/threads/default.nix +++ b/pkgs/development/libraries/haskell/threads/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { baseUnicodeSymbols concurrentExtra HUnit stm testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/basvandijk/threads"; description = "Fork threads and wait for their result"; From cf1df3a9e934a4ed8f0b68182551bd698d09d32f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:13:30 +0100 Subject: [PATCH 223/572] haskell-happstack-server: disable 'doCheck' to avoid test suite build errors tests/Test.hs:3:8: Could not find module `Happstack.Server.Tests' Perhaps you meant Happstack.Server.Types (from happstack-server-7.1.6) Happstack.Server.Auth (from happstack-server-7.1.6) Happstack.Server.Client (from happstack-server-7.1.6) Use -v to see a list of the files searched for. --- .../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 dba052a0fc1..8d8261df97e 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 ab79e29846f8270d7634eb57a66da57ebebd39ed Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:23:57 +0100 Subject: [PATCH 224/572] haskell-pandoc: disable 'doCheck' to avoid test suite build errors Configuring pandoc-1.10.1... Setup: At least the following dependencies are missing: Diff ==0.2.*, HUnit ==1.2.*, QuickCheck >=2.4 && <2.6, ansi-terminal >=0.5 && <0.7, test-framework >=0.3 && <0.9, test-framework-hunit >=0.2 && <0.4, test-framework-quickcheck2 >=0.2.9 && <0.4 --- pkgs/development/libraries/haskell/pandoc/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/pandoc/default.nix b/pkgs/development/libraries/haskell/pandoc/default.nix index df24b4ac022..93f7e8add42 100644 --- a/pkgs/development/libraries/haskell/pandoc/default.nix +++ b/pkgs/development/libraries/haskell/pandoc/default.nix @@ -20,6 +20,7 @@ cabal.mkDerivation (self: { patchPhase = '' sed -r -i -e 's|blaze-html >= 0.5 && < 0.6,|blaze-html >= 0.5,|' pandoc.cabal ''; + doCheck = false; meta = { homepage = "http://johnmacfarlane.net/pandoc"; description = "Conversion between markup formats"; From 6495bf019cc195a8e83b45e302c343eac1bbd312 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:26:18 +0100 Subject: [PATCH 225/572] haskell-fsnotify: disable 'doCheck' to avoid test suite failures Test suite test: RUNNING... canonicalizeDirPath - Absolute path keeps trailing slash FAILED [1] - Absolute path gains trailing slash FAILED [2] - Relative path keeps trailing slash - Relative path gains trailing slash canonicalizePath - Absolute path keeps trailing slash FAILED [3] - Relative path keeps trailing slash findFiles - Non-recursive - Recursive findDirs - Non-recursive - Recursive watchDir - Create file - Modify file - Remove file - Rename file - Debounce watchDirChan - Create file - Modify file - Remove file - Rename file watchTree - Create file (pre-existing directory) - Create file (create directory) - Modify file - Remove file - Rename file watchTreeChan - Create file (pre-existing directory) - Create file (create directory) - Modify file - Remove file - Rename file 1) canonicalizeDirPath Absolute path keeps trailing slash FAILED (uncaught exception) IOException (/home/: canonicalizePath: does not exist (No such file or directory)) 2) canonicalizeDirPath Absolute path gains trailing slash FAILED (uncaught exception) IOException (/home: canonicalizePath: does not exist (No such file or directory)) 3) canonicalizePath Absolute path keeps trailing slash FAILED (uncaught exception) IOException (/home/: canonicalizePath: does not exist (No such file or directory)) Finished in 37.1526 seconds 29 examples, 3 failures Test suite test: FAIL Test suite logged to: dist/test/fsnotify-0.0.6-test.log --- pkgs/development/libraries/haskell/fsnotify/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/fsnotify/default.nix b/pkgs/development/libraries/haskell/fsnotify/default.nix index 142b513e592..cfc80c4d547 100644 --- a/pkgs/development/libraries/haskell/fsnotify/default.nix +++ b/pkgs/development/libraries/haskell/fsnotify/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { Cabal Glob hinotify hspec QuickCheck random systemFileio systemFilepath text time uniqueid ]; + doCheck = false; meta = { description = "Cross platform library for file creation, modification, and deletion notification"; license = self.stdenv.lib.licenses.bsd3; From d0bfd6936e640db813c21d6c6fc34421ff49e941 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:31:34 +0100 Subject: [PATCH 226/572] pkgs/build-support/cabal: add 'testDepends' to 'extraBuildInputs' if 'doCheck' is set to 'true' --- pkgs/build-support/cabal/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index 706c9caca1c..7dc58a0adfe 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -55,6 +55,7 @@ # but often propagatedBuildInputs is preferable anyway buildInputs = [ghc Cabal] ++ self.extraBuildInputs; extraBuildInputs = self.buildTools ++ + (stdenv.lib.optionals (self.doCheck or false) self.testDepends) ++ (if self.pkgconfigDepends == [] then [] else [pkgconfig]) ++ (if self.isLibrary then [] else self.buildDepends ++ self.extraLibraries ++ self.pkgconfigDepends); From a30df956918aab12b7e83539ca98dafa9a829af4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:09:07 +0100 Subject: [PATCH 227/572] Re-generate all Haskell packages with the latest version of cabal2nix. This change brings support for building and running the regressions test suites. --- pkgs/applications/editors/leksah/default.nix | 1 + .../libraries/haskell/Cabal/1.14.0.nix | 8 +++++++- .../libraries/haskell/Cabal/1.16.0.3.nix | 8 +++++++- .../libraries/haskell/CouchDB/default.nix | 3 ++- .../libraries/haskell/HTTP/4000.2.1.nix | 7 ++++++- .../libraries/haskell/HTTP/4000.2.2.nix | 7 ++++++- .../libraries/haskell/HTTP/4000.2.3.nix | 7 ++++++- .../libraries/haskell/HTTP/4000.2.5.nix | 9 ++++++++- .../libraries/haskell/HTTP/4000.2.8.nix | 9 ++++++++- .../libraries/haskell/IORefCAS/default.nix | 3 ++- .../libraries/haskell/ReadArgs/default.nix | 3 ++- .../haskell/SafeSemaphore/default.nix | 3 ++- .../libraries/haskell/active/default.nix | 7 ++++++- .../libraries/haskell/aeson/default.nix | 7 ++++++- .../libraries/haskell/async/2.0.1.3.nix | 3 ++- .../libraries/haskell/async/2.0.1.4.nix | 3 ++- .../haskell/attoparsec-conduit/default.nix | 4 +++- .../libraries/haskell/attoparsec/default.nix | 7 ++++++- .../haskell/base64-bytestring/default.nix | 8 +++++++- .../haskell/base64-conduit/default.nix | 6 +++++- .../libraries/haskell/binary/default.nix | 7 ++++++- .../haskell/blaze-builder-conduit/default.nix | 7 ++++++- .../libraries/haskell/blaze-html/default.nix | 8 +++++++- .../libraries/haskell/blaze-markup/default.nix | 8 +++++++- .../haskell/blaze-textual/default.nix | 8 +++++++- .../libraries/haskell/bson/default.nix | 8 ++++++-- .../haskell/case-insensitive/default.nix | 5 ++++- .../libraries/haskell/cipher-aes/default.nix | 5 ++++- .../libraries/haskell/cipher-rc4/default.nix | 5 ++++- .../haskell/classy-prelude-conduit/default.nix | 5 +++-- .../haskell/classy-prelude/default.nix | 5 +++-- .../haskell/clientsession/default.nix | 3 ++- .../libraries/haskell/conduit/default.nix | 7 +++++-- .../haskell/crypto-conduit/default.nix | 8 +++++++- .../haskell/crypto-numbers/default.nix | 8 +++++++- .../haskell/crypto-pubkey/default.nix | 7 ++++++- .../libraries/haskell/cryptocipher/default.nix | 9 +++++++-- .../libraries/haskell/cryptohash/default.nix | 8 +++++++- .../libraries/haskell/css-text/default.nix | 3 ++- .../libraries/haskell/deepseq-th/default.nix | 1 + .../libraries/haskell/diagrams/contrib.nix | 9 +++++++-- .../haskell/digestive-functors/default.nix | 3 ++- .../haskell/distributed-process/default.nix | 12 +++++++++--- .../libraries/haskell/distributive/default.nix | 3 ++- .../libraries/haskell/doctest/default.nix | 8 +++++++- .../haskell/double-conversion/default.nix | 3 ++- .../haskell/email-validate/default.nix | 8 +++++++- .../haskell/exception-transformers/default.nix | 3 ++- .../libraries/haskell/fast-logger/default.nix | 4 +++- .../libraries/haskell/file-embed/default.nix | 3 ++- .../haskell/filesystem-conduit/default.nix | 6 +++++- .../libraries/haskell/fsnotify/default.nix | 8 +++++++- .../libraries/haskell/ghc-events/default.nix | 1 + .../libraries/haskell/graphviz/default.nix | 8 ++++++-- .../libraries/haskell/hakyll/default.nix | 13 ++++++++++--- .../libraries/haskell/hamlet/default.nix | 5 +++-- .../haskell/happstack/happstack-server.nix | 8 +++++--- .../libraries/haskell/hashable/1.1.2.5.nix | 7 ++++++- .../libraries/haskell/hastache/default.nix | 3 ++- .../libraries/haskell/hjsmin/default.nix | 8 +++++++- .../libraries/haskell/hsemail/default.nix | 3 ++- .../haskell/hspec-expectations/default.nix | 3 ++- .../libraries/haskell/hspec/default.nix | 9 +++++++-- .../libraries/haskell/html-conduit/default.nix | 6 ++++-- .../libraries/haskell/http-conduit/default.nix | 16 ++++++++++++---- .../libraries/haskell/http-date/default.nix | 3 ++- .../haskell/http-reverse-proxy/default.nix | 9 +++++++-- .../libraries/haskell/http-types/default.nix | 3 ++- .../libraries/haskell/io-choice/default.nix | 4 +++- .../libraries/haskell/iproute/default.nix | 7 ++++++- .../haskell/language-c-quote/default.nix | 6 +++++- .../haskell/language-javascript/default.nix | 8 +++++++- .../libraries/haskell/largeword/default.nix | 8 +++++++- .../libraries/haskell/leksah/leksah-server.nix | 5 +++-- .../libraries/haskell/lens/default.nix | 18 +++++++++++++----- .../libraries/haskell/libmpd/default.nix | 7 ++++++- .../libraries/haskell/lifted-base/default.nix | 8 +++++++- .../haskell/math-functions/default.nix | 8 +++++++- .../libraries/haskell/minimorph/default.nix | 3 ++- .../libraries/haskell/miniutter/default.nix | 4 +++- .../libraries/haskell/monad-par/0.3.4.nix | 11 +++++++++-- .../libraries/haskell/mwc-random/default.nix | 8 +++++++- .../haskell/network-conduit/default.nix | 1 + .../haskell/network-transport-tcp/default.nix | 12 +++++++++++- .../libraries/haskell/network/2.3.0.13.nix | 3 ++- .../libraries/haskell/network/2.3.1.0.nix | 3 ++- .../libraries/haskell/network/2.4.1.2.nix | 7 ++++++- .../libraries/haskell/numbers/default.nix | 5 ++++- .../haskell/optparse-applicative/default.nix | 7 ++++++- .../libraries/haskell/path-pieces/default.nix | 3 ++- .../libraries/haskell/pem/default.nix | 7 ++++++- .../haskell/persistent-template/default.nix | 5 ++++- .../libraries/haskell/persistent/default.nix | 8 +++++--- .../haskell/postgresql-simple/default.nix | 6 ++++-- .../haskell/project-template/default.nix | 7 ++++++- .../haskell/publicsuffixlist/default.nix | 3 ++- .../haskell/reactive-banana/default.nix | 8 +++++++- .../libraries/haskell/resourcet/default.nix | 3 ++- .../libraries/haskell/setenv/default.nix | 3 ++- .../haskell/shakespeare-css/default.nix | 3 ++- .../haskell/shakespeare-js/default.nix | 3 ++- .../haskell/shakespeare-text/default.nix | 3 ++- .../libraries/haskell/shakespeare/default.nix | 3 ++- .../libraries/haskell/shelly/default.nix | 6 +++++- .../libraries/haskell/silently/default.nix | 3 ++- .../haskell/simple-sendfile/default.nix | 3 ++- .../libraries/haskell/skein/default.nix | 3 ++- .../libraries/haskell/split/0.2.1.1.nix | 3 ++- .../libraries/haskell/split/0.2.1.2.nix | 3 ++- .../libraries/haskell/statistics/default.nix | 10 ++++++++-- .../haskell/stylish-haskell/default.nix | 8 ++++++-- .../haskell/tagstream-conduit/default.nix | 4 +++- .../libraries/haskell/text/0.11.1.13.nix | 8 +++++++- .../libraries/haskell/text/0.11.2.0.nix | 8 +++++++- .../libraries/haskell/text/0.11.2.3.nix | 8 +++++++- .../libraries/haskell/threads/default.nix | 8 +++++++- .../libraries/haskell/time/1.4.0.2.nix | 7 ++++++- .../libraries/haskell/tls/default.nix | 9 +++++++-- .../libraries/haskell/unix-time/default.nix | 3 ++- .../haskell/unordered-containers/default.nix | 8 +++++++- .../libraries/haskell/utility-ht/default.nix | 3 ++- .../libraries/haskell/uuid/default.nix | 7 ++++++- .../libraries/haskell/vty/default.nix | 8 ++++++-- .../haskell/wai-app-static/default.nix | 10 +++++++--- .../libraries/haskell/wai-extra/default.nix | 9 +++++++-- .../libraries/haskell/warp/default.nix | 10 ++++++++-- .../libraries/haskell/word8/default.nix | 3 ++- .../libraries/haskell/xml-conduit/default.nix | 7 +++++-- .../libraries/haskell/xml-hamlet/default.nix | 3 ++- .../libraries/haskell/xss-sanitize/default.nix | 7 ++++++- .../libraries/haskell/yaml/default.nix | 7 +++++-- .../libraries/haskell/yesod-core/default.nix | 14 +++++++++----- .../libraries/haskell/yesod-form/default.nix | 3 ++- .../libraries/haskell/yesod-routes/default.nix | 3 ++- .../libraries/haskell/yesod-static/default.nix | 7 ++++++- .../libraries/haskell/yesod-test/default.nix | 1 + .../haskell/zeromq-haskell/default.nix | 7 ++++++- .../haskell/zeromq3-haskell/default.nix | 7 ++++++- .../libraries/haskell/zip-archive/default.nix | 5 ++++- .../haskell/zlib-bindings/default.nix | 3 ++- .../libraries/haskell/zlib-conduit/default.nix | 5 ++++- .../tools/documentation/haddock/2.10.0.nix | 1 + .../tools/documentation/haddock/2.11.0.nix | 1 + .../tools/documentation/haddock/2.12.0.nix | 1 + .../tools/documentation/haddock/2.13.1.nix | 1 + .../tools/documentation/haddock/2.9.4.nix | 4 +++- 146 files changed, 680 insertions(+), 180 deletions(-) diff --git a/pkgs/applications/editors/leksah/default.nix b/pkgs/applications/editors/leksah/default.nix index 81fbf5ad98a..86f0106ed05 100644 --- a/pkgs/applications/editors/leksah/default.nix +++ b/pkgs/applications/editors/leksah/default.nix @@ -16,6 +16,7 @@ cabal.mkDerivation (self: { QuickCheck regexBase regexTdfa strict text time transformers utf8String ]; + testDepends = [ Cabal QuickCheck ]; noHaddock = true; meta = { homepage = "http://www.leksah.org"; diff --git a/pkgs/development/libraries/haskell/Cabal/1.14.0.nix b/pkgs/development/libraries/haskell/Cabal/1.14.0.nix index b424551a2f9..09171ab2570 100644 --- a/pkgs/development/libraries/haskell/Cabal/1.14.0.nix +++ b/pkgs/development/libraries/haskell/Cabal/1.14.0.nix @@ -1,10 +1,16 @@ -{ cabal, filepath }: +{ cabal, extensibleExceptions, filepath, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "Cabal"; version = "1.14.0"; sha256 = "1r5b4x1ham5gdg9m9l8idpvr9czlk1q21vqmg0di4adkp2fhlm3j"; buildDepends = [ filepath ]; + testDepends = [ + extensibleExceptions filepath HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "http://www.haskell.org/cabal/"; description = "A framework for packaging Haskell software"; diff --git a/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix b/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix index 68b985507b6..2814eae845f 100644 --- a/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix +++ b/pkgs/development/libraries/haskell/Cabal/1.16.0.3.nix @@ -1,10 +1,16 @@ -{ cabal, filepath }: +{ cabal, extensibleExceptions, filepath, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "Cabal"; version = "1.16.0.3"; sha256 = "11lzqgdjaix8n7nabmafl3jf9gisb04c025cmdycfihfajfn49zg"; buildDepends = [ filepath ]; + testDepends = [ + extensibleExceptions filepath HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "http://www.haskell.org/cabal/"; description = "A framework for packaging Haskell software"; diff --git a/pkgs/development/libraries/haskell/CouchDB/default.nix b/pkgs/development/libraries/haskell/CouchDB/default.nix index 705a0a5fdea..4a413e2e7b8 100644 --- a/pkgs/development/libraries/haskell/CouchDB/default.nix +++ b/pkgs/development/libraries/haskell/CouchDB/default.nix @@ -1,10 +1,11 @@ -{ cabal, HTTP, json, mtl, network, utf8String }: +{ cabal, HTTP, HUnit, json, mtl, network, utf8String }: cabal.mkDerivation (self: { pname = "CouchDB"; version = "1.2"; sha256 = "0a9g0iblfyqppcy1ni3ac8f3yv5km95bfblhwqlsk6khydi5ka98"; buildDepends = [ HTTP json mtl network utf8String ]; + testDepends = [ HTTP HUnit json mtl network utf8String ]; meta = { homepage = "http://github.com/arjunguha/haskell-couchdb/"; description = "CouchDB interface"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix index 5c6057ace9e..0c7fa0bfa78 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix @@ -1,10 +1,15 @@ -{ cabal, mtl, network, parsec }: +{ cabal, httpdShed, HUnit, mtl, network, parsec, split +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.1"; sha256 = "01076rk7ly5228pszn54x4nqc6rqq1xw11ij9ajvhzf419islh0a"; buildDepends = [ mtl network parsec ]; + testDepends = [ + httpdShed HUnit network split testFramework testFrameworkHunit + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix index 5fbb2ed8a84..805bf36f5df 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix @@ -1,10 +1,15 @@ -{ cabal, mtl, network, parsec }: +{ cabal, httpdShed, HUnit, mtl, network, parsec, split +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.2"; sha256 = "0qrr9wdj25sdfxifppmw0w14g8skpgf42ic4iqcqylxxzfa8v7vh"; buildDepends = [ mtl network parsec ]; + testDepends = [ + httpdShed HUnit network split testFramework testFrameworkHunit + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix index cff762864bc..a0b328d702c 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix @@ -1,10 +1,15 @@ -{ cabal, mtl, network, parsec }: +{ cabal, httpdShed, HUnit, mtl, network, parsec, split +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.3"; sha256 = "1z7s5rkyljwdl95cwqbqg64i207wjwxgpksrdmvcv82k39srzx80"; buildDepends = [ mtl network parsec ]; + testDepends = [ + httpdShed HUnit network split testFramework testFrameworkHunit + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix index f345e7c98e1..4adae562476 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix @@ -1,10 +1,17 @@ -{ cabal, mtl, network, parsec }: +{ cabal, caseInsensitive, conduit, deepseq, httpdShed, httpTypes +, HUnit, mtl, network, parsec, pureMD5, split, testFramework +, testFrameworkHunit, wai, warp +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.5"; sha256 = "03ij1zkykc438x2r1szz6ddvfhrjywlx61nrz377srcpbdmhxpb7"; buildDepends = [ mtl network parsec ]; + testDepends = [ + caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl + network pureMD5 split testFramework testFrameworkHunit wai warp + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix index 6cb7ed57b4c..f0c103622a9 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix @@ -1,10 +1,17 @@ -{ cabal, mtl, network, parsec }: +{ cabal, caseInsensitive, conduit, deepseq, httpdShed, httpTypes +, HUnit, mtl, network, parsec, pureMD5, split, testFramework +, testFrameworkHunit, wai, warp +}: cabal.mkDerivation (self: { pname = "HTTP"; version = "4000.2.8"; sha256 = "0p0cwzjw2102bsyfaga6m8b53s6qnhd6byg2j2qla653f6kjlsh8"; buildDepends = [ mtl network parsec ]; + testDepends = [ + caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl + network pureMD5 split testFramework testFrameworkHunit wai warp + ]; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/IORefCAS/default.nix b/pkgs/development/libraries/haskell/IORefCAS/default.nix index fc9b09bd0d7..beec7ded789 100644 --- a/pkgs/development/libraries/haskell/IORefCAS/default.nix +++ b/pkgs/development/libraries/haskell/IORefCAS/default.nix @@ -1,10 +1,11 @@ -{ cabal, bitsAtomic }: +{ cabal, bitsAtomic, HUnit, QuickCheck }: cabal.mkDerivation (self: { pname = "IORefCAS"; version = "0.2"; sha256 = "18hyy3jqr9yky5r873816fqnywrwba90sq6zx61i2vkqlfbll1k9"; buildDepends = [ bitsAtomic ]; + testDepends = [ bitsAtomic HUnit QuickCheck ]; meta = { description = "Atomic compare and swap for IORefs and STRefs"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/ReadArgs/default.nix b/pkgs/development/libraries/haskell/ReadArgs/default.nix index 4b8a513914a..12c3e34571e 100644 --- a/pkgs/development/libraries/haskell/ReadArgs/default.nix +++ b/pkgs/development/libraries/haskell/ReadArgs/default.nix @@ -1,4 +1,4 @@ -{ cabal, systemFilepath, text }: +{ cabal, hspec, systemFilepath, text }: cabal.mkDerivation (self: { pname = "ReadArgs"; @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ systemFilepath text ]; + testDepends = [ hspec systemFilepath text ]; meta = { homepage = "http://github.com/rampion/ReadArgs"; description = "Simple command line argument parsing"; diff --git a/pkgs/development/libraries/haskell/SafeSemaphore/default.nix b/pkgs/development/libraries/haskell/SafeSemaphore/default.nix index ad161f97102..d4cc7490277 100644 --- a/pkgs/development/libraries/haskell/SafeSemaphore/default.nix +++ b/pkgs/development/libraries/haskell/SafeSemaphore/default.nix @@ -1,10 +1,11 @@ -{ cabal, stm }: +{ cabal, HUnit, stm }: cabal.mkDerivation (self: { pname = "SafeSemaphore"; version = "0.9.0"; sha256 = "1xa30cciw8wmri675kdsz4pb5qwrh592pzylbhawqsvsarf80gz4"; buildDepends = [ stm ]; + testDepends = [ HUnit ]; meta = { homepage = "https://github.com/ChrisKuklewicz/SafeSemaphore"; description = "Much safer replacement for QSemN, QSem, and SampleVar"; diff --git a/pkgs/development/libraries/haskell/active/default.nix b/pkgs/development/libraries/haskell/active/default.nix index d3307d0a30d..19afa5ab75e 100644 --- a/pkgs/development/libraries/haskell/active/default.nix +++ b/pkgs/development/libraries/haskell/active/default.nix @@ -1,10 +1,15 @@ -{ cabal, newtype, semigroupoids, semigroups, vectorSpace }: +{ cabal, newtype, QuickCheck, semigroupoids, semigroups +, vectorSpace +}: cabal.mkDerivation (self: { pname = "active"; version = "0.1.0.3"; sha256 = "0jarc270z6raak1vz30jy2gl0pkj9a2x3ib5hq7vsl2ljbvbgyqi"; buildDepends = [ newtype semigroupoids semigroups vectorSpace ]; + testDepends = [ + newtype QuickCheck semigroupoids semigroups vectorSpace + ]; jailbreak = true; meta = { description = "Abstractions for animation"; diff --git a/pkgs/development/libraries/haskell/aeson/default.nix b/pkgs/development/libraries/haskell/aeson/default.nix index b0f89619b1c..515cec37a99 100644 --- a/pkgs/development/libraries/haskell/aeson/default.nix +++ b/pkgs/development/libraries/haskell/aeson/default.nix @@ -1,5 +1,6 @@ { cabal, attoparsec, blazeBuilder, deepseq, dlist, hashable, mtl -, syb, text, time, unorderedContainers, vector +, QuickCheck, syb, testFramework, testFrameworkQuickcheck2, text +, time, unorderedContainers, vector }: cabal.mkDerivation (self: { @@ -10,6 +11,10 @@ cabal.mkDerivation (self: { attoparsec blazeBuilder deepseq dlist hashable mtl syb text time unorderedContainers vector ]; + testDepends = [ + attoparsec QuickCheck testFramework testFrameworkQuickcheck2 text + time + ]; meta = { homepage = "https://github.com/bos/aeson"; description = "Fast JSON parsing and encoding"; diff --git a/pkgs/development/libraries/haskell/async/2.0.1.3.nix b/pkgs/development/libraries/haskell/async/2.0.1.3.nix index a0da6384e95..1b943208dea 100644 --- a/pkgs/development/libraries/haskell/async/2.0.1.3.nix +++ b/pkgs/development/libraries/haskell/async/2.0.1.3.nix @@ -1,10 +1,11 @@ -{ cabal, stm }: +{ cabal, HUnit, stm, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "async"; version = "2.0.1.3"; sha256 = "1rbjr6xw5sp8npw17fxg0942kikssv2hyci2sy26r0na98483mkh"; buildDepends = [ stm ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "https://github.com/simonmar/async"; description = "Run IO operations asynchronously and wait for their results"; diff --git a/pkgs/development/libraries/haskell/async/2.0.1.4.nix b/pkgs/development/libraries/haskell/async/2.0.1.4.nix index c5caa55e97f..5dd76b4d6e0 100644 --- a/pkgs/development/libraries/haskell/async/2.0.1.4.nix +++ b/pkgs/development/libraries/haskell/async/2.0.1.4.nix @@ -1,10 +1,11 @@ -{ cabal, stm }: +{ cabal, HUnit, stm, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "async"; version = "2.0.1.4"; sha256 = "1hi40bjwpl65mz7zj0sgh16bp9dwafbm5ysi2q8fzwwq5l0zxpa1"; buildDepends = [ stm ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "https://github.com/simonmar/async"; description = "Run IO operations asynchronously and wait for their results"; diff --git a/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix b/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix index 916f38f66c5..37af5eec0af 100644 --- a/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix +++ b/pkgs/development/libraries/haskell/attoparsec-conduit/default.nix @@ -1,10 +1,12 @@ -{ cabal, attoparsec, conduit, text, transformers }: +{ cabal, attoparsec, conduit, hspec, resourcet, text, transformers +}: cabal.mkDerivation (self: { pname = "attoparsec-conduit"; version = "1.0.0"; sha256 = "1aw071qcwhxwpd6azhgaiia97rhj50rms4pysbc19iihmdih3ib8"; buildDepends = [ attoparsec conduit text transformers ]; + testDepends = [ attoparsec conduit hspec resourcet text ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Consume attoparsec parsers via conduit"; diff --git a/pkgs/development/libraries/haskell/attoparsec/default.nix b/pkgs/development/libraries/haskell/attoparsec/default.nix index fda3ae1474b..c352ce7ca8e 100644 --- a/pkgs/development/libraries/haskell/attoparsec/default.nix +++ b/pkgs/development/libraries/haskell/attoparsec/default.nix @@ -1,10 +1,15 @@ -{ cabal, deepseq, text }: +{ cabal, deepseq, QuickCheck, testFramework +, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "attoparsec"; version = "0.10.4.0"; sha256 = "0inkcrl40j9kgcmmi0xkcszayqjd5yn7i9fyvv0ywfqwpl6lxf5n"; buildDepends = [ deepseq text ]; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 text + ]; meta = { homepage = "https://github.com/bos/attoparsec"; description = "Fast combinator parsing for bytestrings and text"; diff --git a/pkgs/development/libraries/haskell/base64-bytestring/default.nix b/pkgs/development/libraries/haskell/base64-bytestring/default.nix index 5891131d7e8..67450dc8887 100644 --- a/pkgs/development/libraries/haskell/base64-bytestring/default.nix +++ b/pkgs/development/libraries/haskell/base64-bytestring/default.nix @@ -1,9 +1,15 @@ -{ cabal }: +{ cabal, HUnit, QuickCheck, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "base64-bytestring"; version = "1.0.0.1"; sha256 = "0l1v4ddjdsgi9nqzyzcxxj76rwar3lzx8gmwf2r54bqan3san9db"; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/base64-bytestring"; description = "Fast base64 encoding and decoding for ByteStrings"; diff --git a/pkgs/development/libraries/haskell/base64-conduit/default.nix b/pkgs/development/libraries/haskell/base64-conduit/default.nix index c6d25384be2..3a2d044de64 100644 --- a/pkgs/development/libraries/haskell/base64-conduit/default.nix +++ b/pkgs/development/libraries/haskell/base64-conduit/default.nix @@ -1,10 +1,14 @@ -{ cabal, base64Bytestring, conduit }: +{ cabal, base64Bytestring, conduit, hspec, QuickCheck, transformers +}: cabal.mkDerivation (self: { pname = "base64-conduit"; version = "1.0.0"; sha256 = "10wjgdixk5da48jpm2i91vy3ckdqpbpgba6hzn7ak6d3qac22m9q"; buildDepends = [ base64Bytestring conduit ]; + testDepends = [ + base64Bytestring conduit hspec QuickCheck transformers + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Base64-encode and decode streams of bytes"; diff --git a/pkgs/development/libraries/haskell/binary/default.nix b/pkgs/development/libraries/haskell/binary/default.nix index ef95d13809f..b4f205e41b2 100644 --- a/pkgs/development/libraries/haskell/binary/default.nix +++ b/pkgs/development/libraries/haskell/binary/default.nix @@ -1,9 +1,14 @@ -{ cabal }: +{ cabal, QuickCheck, random, testFramework +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "binary"; version = "0.6.4.0"; sha256 = "0vq80fzhwil5bx4a2vbd3jvfh1awhg1pwxgvq3lvbi37yzl0ydgh"; + testDepends = [ + QuickCheck random testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/kolmodin/binary"; description = "Binary serialisation for Haskell values using lazy ByteStrings"; diff --git a/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix b/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix index 89ff67fac37..16c352b7a33 100644 --- a/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix +++ b/pkgs/development/libraries/haskell/blaze-builder-conduit/default.nix @@ -1,10 +1,15 @@ -{ cabal, blazeBuilder, conduit, text, transformers }: +{ cabal, blazeBuilder, conduit, hspec, QuickCheck, text +, transformers +}: cabal.mkDerivation (self: { pname = "blaze-builder-conduit"; version = "1.0.0"; sha256 = "15q0b0k5dxrp9cw2b4qf9mmjwz1mmxrn3890df5rc9z6yajajrc6"; buildDepends = [ blazeBuilder conduit text transformers ]; + testDepends = [ + blazeBuilder conduit hspec QuickCheck transformers + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Convert streams of builders to streams of bytestrings"; diff --git a/pkgs/development/libraries/haskell/blaze-html/default.nix b/pkgs/development/libraries/haskell/blaze-html/default.nix index 44f0e0b0e23..59e0f718751 100644 --- a/pkgs/development/libraries/haskell/blaze-html/default.nix +++ b/pkgs/development/libraries/haskell/blaze-html/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, blazeMarkup, text }: +{ cabal, blazeBuilder, blazeMarkup, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "blaze-html"; version = "0.6.0.0"; sha256 = "0n8jpmslcs29pfyb8jhp43dg4058ahd9y3kf2p2wr3r6b9yr5dll"; buildDepends = [ blazeBuilder blazeMarkup text ]; + testDepends = [ + blazeBuilder blazeMarkup HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 text + ]; meta = { homepage = "http://jaspervdj.be/blaze"; description = "A blazingly fast HTML combinator library for Haskell"; diff --git a/pkgs/development/libraries/haskell/blaze-markup/default.nix b/pkgs/development/libraries/haskell/blaze-markup/default.nix index becd1a24ec6..afd607fe5e8 100644 --- a/pkgs/development/libraries/haskell/blaze-markup/default.nix +++ b/pkgs/development/libraries/haskell/blaze-markup/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, text }: +{ cabal, blazeBuilder, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "blaze-markup"; version = "0.5.1.4"; sha256 = "0g316qhk7yv6y680w93613apfhm458a01g3jmq42yv4ndydkv4rr"; buildDepends = [ blazeBuilder text ]; + testDepends = [ + blazeBuilder HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 text + ]; meta = { homepage = "http://jaspervdj.be/blaze"; description = "A blazingly fast markup combinator library for Haskell"; diff --git a/pkgs/development/libraries/haskell/blaze-textual/default.nix b/pkgs/development/libraries/haskell/blaze-textual/default.nix index 65f39c8cc08..ede82e5c2ed 100644 --- a/pkgs/development/libraries/haskell/blaze-textual/default.nix +++ b/pkgs/development/libraries/haskell/blaze-textual/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, text, time, vector }: +{ cabal, blazeBuilder, doubleConversion, QuickCheck, testFramework +, testFrameworkQuickcheck2, text, time, vector +}: cabal.mkDerivation (self: { pname = "blaze-textual"; version = "0.2.0.8"; sha256 = "0zzqh53ywzz8ss58glp3i8is8gry5yqzvdjw4xh95fbbzcz4cgc7"; buildDepends = [ blazeBuilder text time vector ]; + testDepends = [ + blazeBuilder doubleConversion QuickCheck testFramework + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/bos/blaze-textual"; description = "Fast rendering of common datatypes"; diff --git a/pkgs/development/libraries/haskell/bson/default.nix b/pkgs/development/libraries/haskell/bson/default.nix index 20107eb1784..6b76aee47a1 100644 --- a/pkgs/development/libraries/haskell/bson/default.nix +++ b/pkgs/development/libraries/haskell/bson/default.nix @@ -1,5 +1,5 @@ -{ cabal, binary, cryptohash, dataBinaryIeee754, mtl, network, text -, time +{ cabal, binary, cryptohash, dataBinaryIeee754, mtl, network +, QuickCheck, testFramework, testFrameworkQuickcheck2, text, time }: cabal.mkDerivation (self: { @@ -9,6 +9,10 @@ cabal.mkDerivation (self: { buildDepends = [ binary cryptohash dataBinaryIeee754 mtl network text time ]; + testDepends = [ + binary cryptohash dataBinaryIeee754 mtl network QuickCheck + testFramework testFrameworkQuickcheck2 text time + ]; meta = { homepage = "http://github.com/selectel/bson-haskell"; description = "BSON documents are JSON-like objects with a standard binary encoding"; diff --git a/pkgs/development/libraries/haskell/case-insensitive/default.nix b/pkgs/development/libraries/haskell/case-insensitive/default.nix index 58e0ebbbe00..51425084e1c 100644 --- a/pkgs/development/libraries/haskell/case-insensitive/default.nix +++ b/pkgs/development/libraries/haskell/case-insensitive/default.nix @@ -1,10 +1,13 @@ -{ cabal, deepseq, hashable, text }: +{ cabal, deepseq, hashable, HUnit, testFramework +, testFrameworkHunit, text +}: cabal.mkDerivation (self: { pname = "case-insensitive"; version = "1.0"; sha256 = "1x437b5yyh930a5dr642lvfdgpx12w4ms70whiw1ffjjhssb88zk"; buildDepends = [ deepseq hashable text ]; + testDepends = [ HUnit testFramework testFrameworkHunit text ]; meta = { homepage = "https://github.com/basvandijk/case-insensitive"; description = "Case insensitive string comparison"; diff --git a/pkgs/development/libraries/haskell/cipher-aes/default.nix b/pkgs/development/libraries/haskell/cipher-aes/default.nix index bae23737585..ca2f3615929 100644 --- a/pkgs/development/libraries/haskell/cipher-aes/default.nix +++ b/pkgs/development/libraries/haskell/cipher-aes/default.nix @@ -1,9 +1,12 @@ -{ cabal }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { pname = "cipher-aes"; version = "0.1.7"; sha256 = "1iai9c4rvxframylvc0xwx2nk6s0rsj4dc42wi334xyinilvfyng"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-cipher-aes"; description = "Fast AES cipher implementation with advanced mode of operations"; diff --git a/pkgs/development/libraries/haskell/cipher-rc4/default.nix b/pkgs/development/libraries/haskell/cipher-rc4/default.nix index 234491cde36..7d3cacdd67a 100644 --- a/pkgs/development/libraries/haskell/cipher-rc4/default.nix +++ b/pkgs/development/libraries/haskell/cipher-rc4/default.nix @@ -1,9 +1,12 @@ -{ cabal }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { pname = "cipher-rc4"; version = "0.1.2"; sha256 = "0nyrqms7h3hq236h03sjjjqdcxn3iz3fg4ifqj43f4nb8gv0ifb1"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-cipher-rc4"; description = "Fast RC4 cipher implementation"; diff --git a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix index 85a1fb7bdef..6af68223834 100644 --- a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix @@ -1,5 +1,5 @@ -{ cabal, classyPrelude, conduit, monadControl, resourcet -, transformers, void, xmlConduit +{ cabal, classyPrelude, conduit, hspec, monadControl, QuickCheck +, resourcet, transformers, void, xmlConduit }: cabal.mkDerivation (self: { @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { classyPrelude conduit monadControl resourcet transformers void xmlConduit ]; + testDepends = [ conduit hspec QuickCheck transformers ]; meta = { homepage = "https://github.com/snoyberg/classy-prelude"; description = "conduit instances for classy-prelude"; diff --git a/pkgs/development/libraries/haskell/classy-prelude/default.nix b/pkgs/development/libraries/haskell/classy-prelude/default.nix index 01c26aab79f..4c2f076039e 100644 --- a/pkgs/development/libraries/haskell/classy-prelude/default.nix +++ b/pkgs/development/libraries/haskell/classy-prelude/default.nix @@ -1,5 +1,5 @@ -{ cabal, basicPrelude, hashable, liftedBase, systemFilepath, text -, transformers, unorderedContainers, vector +{ cabal, basicPrelude, hashable, hspec, liftedBase, QuickCheck +, systemFilepath, text, transformers, unorderedContainers, vector }: cabal.mkDerivation (self: { @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { basicPrelude hashable liftedBase systemFilepath text transformers unorderedContainers vector ]; + testDepends = [ hspec QuickCheck transformers ]; meta = { homepage = "https://github.com/snoyberg/classy-prelude"; description = "A typeclass-based Prelude"; diff --git a/pkgs/development/libraries/haskell/clientsession/default.nix b/pkgs/development/libraries/haskell/clientsession/default.nix index 81ae5ebddb0..edbb079eec4 100644 --- a/pkgs/development/libraries/haskell/clientsession/default.nix +++ b/pkgs/development/libraries/haskell/clientsession/default.nix @@ -1,5 +1,5 @@ { cabal, base64Bytestring, cereal, cipherAes, cprngAes, cryptoApi -, entropy, skein, tagged +, entropy, hspec, HUnit, QuickCheck, skein, tagged, transformers }: cabal.mkDerivation (self: { @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { base64Bytestring cereal cipherAes cprngAes cryptoApi entropy skein tagged ]; + testDepends = [ cereal hspec HUnit QuickCheck transformers ]; meta = { homepage = "http://github.com/yesodweb/clientsession/tree/master"; description = "Securely store session data in a client-side cookie"; diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix index 3ea60db5fb5..4dada245791 100644 --- a/pkgs/development/libraries/haskell/conduit/default.nix +++ b/pkgs/development/libraries/haskell/conduit/default.nix @@ -1,5 +1,5 @@ -{ cabal, liftedBase, monadControl, resourcet, text, transformers -, transformersBase, void +{ cabal, doctest, hspec, liftedBase, monadControl, QuickCheck +, resourcet, text, transformers, transformersBase, void }: cabal.mkDerivation (self: { @@ -10,6 +10,9 @@ cabal.mkDerivation (self: { liftedBase monadControl resourcet text transformers transformersBase void ]; + testDepends = [ + doctest hspec QuickCheck resourcet text transformers void + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Streaming data processing library"; diff --git a/pkgs/development/libraries/haskell/crypto-conduit/default.nix b/pkgs/development/libraries/haskell/crypto-conduit/default.nix index 29163f89737..69351a2a5aa 100644 --- a/pkgs/development/libraries/haskell/crypto-conduit/default.nix +++ b/pkgs/development/libraries/haskell/crypto-conduit/default.nix @@ -1,10 +1,16 @@ -{ cabal, cereal, conduit, cryptoApi, transformers }: +{ cabal, cereal, conduit, cryptoApi, cryptocipher, cryptohash +, hspec, skein, transformers +}: cabal.mkDerivation (self: { pname = "crypto-conduit"; version = "0.5.0"; sha256 = "0mlf2l784w0wyfjqsxzfdwmn1wb0z1s6mb8kdhw8x1z4a8gy9a92"; buildDepends = [ cereal conduit cryptoApi transformers ]; + testDepends = [ + cereal conduit cryptoApi cryptocipher cryptohash hspec skein + transformers + ]; meta = { homepage = "https://github.com/meteficha/crypto-conduit"; description = "Conduit interface for cryptographic operations (from crypto-api)"; diff --git a/pkgs/development/libraries/haskell/crypto-numbers/default.nix b/pkgs/development/libraries/haskell/crypto-numbers/default.nix index 70cd3f44252..af6985cd9ed 100644 --- a/pkgs/development/libraries/haskell/crypto-numbers/default.nix +++ b/pkgs/development/libraries/haskell/crypto-numbers/default.nix @@ -1,10 +1,16 @@ -{ cabal, cryptoRandomApi, vector }: +{ cabal, cryptoRandomApi, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, vector +}: cabal.mkDerivation (self: { pname = "crypto-numbers"; version = "0.1.3"; sha256 = "115lgnay3ly5r53flh3v5jygqks0rg1i8qmbvrqf9nkmnmw6a5x1"; buildDepends = [ cryptoRandomApi vector ]; + testDepends = [ + cryptoRandomApi HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "http://github.com/vincenthz/hs-crypto-numbers"; description = "Cryptographic numbers: functions and algorithms"; diff --git a/pkgs/development/libraries/haskell/crypto-pubkey/default.nix b/pkgs/development/libraries/haskell/crypto-pubkey/default.nix index dc6d83a765d..b095b1ea5f4 100644 --- a/pkgs/development/libraries/haskell/crypto-pubkey/default.nix +++ b/pkgs/development/libraries/haskell/crypto-pubkey/default.nix @@ -1,5 +1,6 @@ { cabal, cryptohash, cryptoNumbers, cryptoPubkeyTypes -, cryptoRandomApi +, cryptoRandomApi, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { @@ -9,6 +10,10 @@ cabal.mkDerivation (self: { buildDepends = [ cryptohash cryptoNumbers cryptoPubkeyTypes cryptoRandomApi ]; + testDepends = [ + cryptohash cryptoNumbers cryptoRandomApi HUnit QuickCheck + testFramework testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-crypto-pubkey"; description = "Public Key cryptography"; diff --git a/pkgs/development/libraries/haskell/cryptocipher/default.nix b/pkgs/development/libraries/haskell/cryptocipher/default.nix index 275622d3cad..dba34752611 100644 --- a/pkgs/development/libraries/haskell/cryptocipher/default.nix +++ b/pkgs/development/libraries/haskell/cryptocipher/default.nix @@ -1,5 +1,6 @@ -{ cabal, cereal, cipherAes, cipherRc4, cpu, cryptoApi -, cryptoPubkeyTypes, primitive, tagged, vector +{ cabal, cereal, cipherAes, cipherRc4, cpu, cryptoApi, cryptohash +, cryptoPubkeyTypes, entropy, primitive, QuickCheck, tagged +, testFramework, testFrameworkQuickcheck2, vector }: cabal.mkDerivation (self: { @@ -12,6 +13,10 @@ cabal.mkDerivation (self: { cereal cipherAes cipherRc4 cpu cryptoApi cryptoPubkeyTypes primitive tagged vector ]; + testDepends = [ + cryptoApi cryptohash entropy QuickCheck testFramework + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "http://github.com/vincenthz/hs-cryptocipher"; description = "Symmetrical block and stream ciphers"; diff --git a/pkgs/development/libraries/haskell/cryptohash/default.nix b/pkgs/development/libraries/haskell/cryptohash/default.nix index 2dc0cad9772..81b361a2477 100644 --- a/pkgs/development/libraries/haskell/cryptohash/default.nix +++ b/pkgs/development/libraries/haskell/cryptohash/default.nix @@ -1,10 +1,16 @@ -{ cabal, cereal, cryptoApi, tagged }: +{ cabal, cereal, cryptoApi, HUnit, QuickCheck, tagged +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "cryptohash"; version = "0.8.3"; sha256 = "1fcqbbclii2hmbhi7h64v0nnbc34zzs107m3lqq38iiyy5fvqqv2"; buildDepends = [ cereal cryptoApi tagged ]; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-cryptohash"; description = "collection of crypto hashes, fast, pure and practical"; diff --git a/pkgs/development/libraries/haskell/css-text/default.nix b/pkgs/development/libraries/haskell/css-text/default.nix index 9970d87fbe0..f59a80b2b65 100644 --- a/pkgs/development/libraries/haskell/css-text/default.nix +++ b/pkgs/development/libraries/haskell/css-text/default.nix @@ -1,10 +1,11 @@ -{ cabal, attoparsec, text }: +{ cabal, attoparsec, hspec, HUnit, QuickCheck, text }: cabal.mkDerivation (self: { pname = "css-text"; version = "0.1.1"; sha256 = "10vb08rnfq987w7wrirw8ib1kzafxaaancswm4xpw46ha3rq1m0y"; buildDepends = [ attoparsec text ]; + testDepends = [ attoparsec hspec HUnit QuickCheck text ]; meta = { homepage = "http://www.yesodweb.com/"; description = "CSS parser and renderer"; diff --git a/pkgs/development/libraries/haskell/deepseq-th/default.nix b/pkgs/development/libraries/haskell/deepseq-th/default.nix index 2af4bb9f3f1..228fcd28c78 100644 --- a/pkgs/development/libraries/haskell/deepseq-th/default.nix +++ b/pkgs/development/libraries/haskell/deepseq-th/default.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.1.0.4"; sha256 = "12wk8higrp12b22zzz1b4ar1q5h7flk22bp2rvswsqri2zkbi965"; buildDepends = [ deepseq ]; + testDepends = [ deepseq ]; meta = { description = "Template Haskell based deriver for optimised NFData instances"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/diagrams/contrib.nix b/pkgs/development/libraries/haskell/diagrams/contrib.nix index a25603453a7..3ecfe2db852 100644 --- a/pkgs/development/libraries/haskell/diagrams/contrib.nix +++ b/pkgs/development/libraries/haskell/diagrams/contrib.nix @@ -1,5 +1,6 @@ -{ cabal, colour, dataDefault, diagramsLib, forceLayout, lens, mtl -, vectorSpace +{ cabal, colour, dataDefault, diagramsLib, forceLayout, HUnit, lens +, mtl, QuickCheck, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2, vectorSpace }: cabal.mkDerivation (self: { @@ -9,6 +10,10 @@ cabal.mkDerivation (self: { buildDepends = [ colour dataDefault diagramsLib forceLayout lens mtl vectorSpace ]; + testDepends = [ + diagramsLib HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://projects.haskell.org/diagrams/"; description = "Collection of user contributions to diagrams EDSL"; diff --git a/pkgs/development/libraries/haskell/digestive-functors/default.nix b/pkgs/development/libraries/haskell/digestive-functors/default.nix index 4ba8b16ec46..0b956680a84 100644 --- a/pkgs/development/libraries/haskell/digestive-functors/default.nix +++ b/pkgs/development/libraries/haskell/digestive-functors/default.nix @@ -1,10 +1,11 @@ -{ cabal, mtl, text }: +{ cabal, HUnit, mtl, testFramework, testFrameworkHunit, text }: cabal.mkDerivation (self: { pname = "digestive-functors"; version = "0.6.0.1"; sha256 = "1ni1hfmpz14yvgjphwz64hqhg7xbhvvqbdnapspipplvnl0rcmhi"; buildDepends = [ mtl text ]; + testDepends = [ HUnit mtl testFramework testFrameworkHunit text ]; meta = { homepage = "http://github.com/jaspervdj/digestive-functors"; description = "A practical formlet library"; diff --git a/pkgs/development/libraries/haskell/distributed-process/default.nix b/pkgs/development/libraries/haskell/distributed-process/default.nix index 1e83cbaa8d9..0427a937f84 100644 --- a/pkgs/development/libraries/haskell/distributed-process/default.nix +++ b/pkgs/development/libraries/haskell/distributed-process/default.nix @@ -1,6 +1,7 @@ -{ cabal, binary, dataAccessor, distributedStatic, mtl -, networkTransport, random, rank1dynamic, stm, syb, time -, transformers +{ cabal, ansiTerminal, binary, dataAccessor, distributedStatic +, HUnit, mtl, network, networkTransport, networkTransportTcp +, random, rank1dynamic, stm, syb, testFramework, testFrameworkHunit +, time, transformers }: cabal.mkDerivation (self: { @@ -13,6 +14,11 @@ cabal.mkDerivation (self: { binary dataAccessor distributedStatic mtl networkTransport random rank1dynamic stm syb time transformers ]; + testDepends = [ + ansiTerminal binary distributedStatic HUnit network + networkTransport networkTransportTcp random stm testFramework + testFrameworkHunit + ]; noHaddock = true; meta = { homepage = "http://github.com/haskell-distributed/distributed-process"; diff --git a/pkgs/development/libraries/haskell/distributive/default.nix b/pkgs/development/libraries/haskell/distributive/default.nix index 6709569b054..bd8b64aa509 100644 --- a/pkgs/development/libraries/haskell/distributive/default.nix +++ b/pkgs/development/libraries/haskell/distributive/default.nix @@ -1,10 +1,11 @@ -{ cabal, transformers, transformersCompat }: +{ cabal, doctest, filepath, transformers, transformersCompat }: cabal.mkDerivation (self: { pname = "distributive"; version = "0.3"; sha256 = "0z6vwak2n91vpx9ps9j1pbiw0zlh9jmds84yx1yqssbqx8npi32f"; buildDepends = [ transformers transformersCompat ]; + testDepends = [ doctest filepath ]; meta = { homepage = "http://github.com/ekmett/distributive/"; description = "Haskell 98 Distributive functors -- Dual to Traversable"; diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix index df92c4a6cf5..5dffb52ce1e 100644 --- a/pkgs/development/libraries/haskell/doctest/default.nix +++ b/pkgs/development/libraries/haskell/doctest/default.nix @@ -1,4 +1,6 @@ -{ cabal, deepseq, filepath, ghcPaths, syb, transformers }: +{ cabal, baseCompat, deepseq, filepath, ghcPaths, hspec, HUnit +, QuickCheck, setenv, silently, stringbuilder, syb, transformers +}: cabal.mkDerivation (self: { pname = "doctest"; @@ -7,6 +9,10 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ deepseq filepath ghcPaths syb transformers ]; + testDepends = [ + baseCompat deepseq filepath ghcPaths hspec HUnit QuickCheck setenv + silently stringbuilder syb transformers + ]; meta = { homepage = "https://github.com/sol/doctest-haskell#readme"; description = "Test interactive Haskell examples"; diff --git a/pkgs/development/libraries/haskell/double-conversion/default.nix b/pkgs/development/libraries/haskell/double-conversion/default.nix index 878eba660a0..cad61e52ee0 100644 --- a/pkgs/development/libraries/haskell/double-conversion/default.nix +++ b/pkgs/development/libraries/haskell/double-conversion/default.nix @@ -1,10 +1,11 @@ -{ cabal, text }: +{ cabal, testFramework, testFrameworkQuickcheck2, text }: cabal.mkDerivation (self: { pname = "double-conversion"; version = "0.2.0.6"; sha256 = "1c6hy0ghdqf44fvhdpdxjbcr0ahimw283x5fnvjxja36i71qshjp"; buildDepends = [ text ]; + testDepends = [ testFramework testFrameworkQuickcheck2 text ]; meta = { homepage = "https://github.com/bos/double-conversion"; description = "Fast conversion between double precision floating point and text"; diff --git a/pkgs/development/libraries/haskell/email-validate/default.nix b/pkgs/development/libraries/haskell/email-validate/default.nix index 482fd766487..3ba05926179 100644 --- a/pkgs/development/libraries/haskell/email-validate/default.nix +++ b/pkgs/development/libraries/haskell/email-validate/default.nix @@ -1,10 +1,16 @@ -{ cabal, attoparsec }: +{ cabal, attoparsec, HUnit, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "email-validate"; version = "1.0.0"; sha256 = "0sj1cvn9ap0m8d4cg4cqavvmkd74vp86lyyra9g6f17815sxdbsg"; buildDepends = [ attoparsec ]; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "http://porg.es/blog/email-address-validation-simpler-faster-more-correct"; description = "Validating an email address string against RFC 5322"; diff --git a/pkgs/development/libraries/haskell/exception-transformers/default.nix b/pkgs/development/libraries/haskell/exception-transformers/default.nix index 5c4a9402020..a4d0cfd247a 100644 --- a/pkgs/development/libraries/haskell/exception-transformers/default.nix +++ b/pkgs/development/libraries/haskell/exception-transformers/default.nix @@ -1,10 +1,11 @@ -{ cabal, stm, transformers }: +{ cabal, HUnit, stm, transformers }: cabal.mkDerivation (self: { pname = "exception-transformers"; version = "0.3.0.3"; sha256 = "0z3z5pppaqqbndd4fgv1czr8f9f4a8r86bwc3bcv88yf7y8cfbwz"; buildDepends = [ stm transformers ]; + testDepends = [ HUnit transformers ]; meta = { homepage = "http://www.eecs.harvard.edu/~mainland/"; description = "Type classes and monads for unchecked extensible exceptions"; diff --git a/pkgs/development/libraries/haskell/fast-logger/default.nix b/pkgs/development/libraries/haskell/fast-logger/default.nix index e266aa15ff8..c9544b2c1f6 100644 --- a/pkgs/development/libraries/haskell/fast-logger/default.nix +++ b/pkgs/development/libraries/haskell/fast-logger/default.nix @@ -1,10 +1,12 @@ -{ cabal, blazeBuilder, dateCache, filepath, text, unixTime }: +{ cabal, blazeBuilder, dateCache, filepath, hspec, text, unixTime +}: cabal.mkDerivation (self: { pname = "fast-logger"; version = "0.3.1"; sha256 = "0sjn3vad0fbchv1fhap71wfnihlwnfhk6p9h9hpnbr0i4b32f1ks"; buildDepends = [ blazeBuilder dateCache filepath text unixTime ]; + testDepends = [ hspec ]; meta = { description = "A fast logging system"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/file-embed/default.nix b/pkgs/development/libraries/haskell/file-embed/default.nix index 119d9d185e5..145d3c1c203 100644 --- a/pkgs/development/libraries/haskell/file-embed/default.nix +++ b/pkgs/development/libraries/haskell/file-embed/default.nix @@ -1,10 +1,11 @@ -{ cabal, filepath }: +{ cabal, filepath, HUnit }: cabal.mkDerivation (self: { pname = "file-embed"; version = "0.0.4.7"; sha256 = "1hn08499kay0y6ik5z1s58s8r9h1nzf116avgi6ia4b565wpzkvi"; buildDepends = [ filepath ]; + testDepends = [ filepath HUnit ]; meta = { homepage = "https://github.com/snoyberg/file-embed"; description = "Use Template Haskell to embed file contents directly"; diff --git a/pkgs/development/libraries/haskell/filesystem-conduit/default.nix b/pkgs/development/libraries/haskell/filesystem-conduit/default.nix index 681ee682073..46ae27fc090 100644 --- a/pkgs/development/libraries/haskell/filesystem-conduit/default.nix +++ b/pkgs/development/libraries/haskell/filesystem-conduit/default.nix @@ -1,4 +1,5 @@ -{ cabal, conduit, systemFileio, systemFilepath, text, transformers +{ cabal, blazeBuilder, conduit, hspec, QuickCheck, systemFileio +, systemFilepath, text, transformers }: cabal.mkDerivation (self: { @@ -8,6 +9,9 @@ cabal.mkDerivation (self: { buildDepends = [ conduit systemFileio systemFilepath text transformers ]; + testDepends = [ + blazeBuilder conduit hspec QuickCheck text transformers + ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Use system-filepath data types with conduits"; diff --git a/pkgs/development/libraries/haskell/fsnotify/default.nix b/pkgs/development/libraries/haskell/fsnotify/default.nix index 80b6760a3b7..142b513e592 100644 --- a/pkgs/development/libraries/haskell/fsnotify/default.nix +++ b/pkgs/development/libraries/haskell/fsnotify/default.nix @@ -1,10 +1,16 @@ -{ cabal, hinotify, systemFileio, systemFilepath, text, time }: +{ cabal, Cabal, Glob, hinotify, hspec, QuickCheck, random +, systemFileio, systemFilepath, text, time, uniqueid +}: cabal.mkDerivation (self: { pname = "fsnotify"; version = "0.0.6"; sha256 = "0ib6ansj3vaq9hxxbsq5jw14w2b61wp4jfahzb3c3x46mdb1bqw5"; buildDepends = [ hinotify systemFileio systemFilepath text time ]; + testDepends = [ + Cabal Glob hinotify hspec QuickCheck random systemFileio + systemFilepath text time uniqueid + ]; meta = { description = "Cross platform library for file creation, modification, and deletion notification"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/ghc-events/default.nix b/pkgs/development/libraries/haskell/ghc-events/default.nix index 7eb49668e3c..1c12e5dbb0b 100644 --- a/pkgs/development/libraries/haskell/ghc-events/default.nix +++ b/pkgs/development/libraries/haskell/ghc-events/default.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ binary mtl ]; + testDepends = [ binary mtl ]; meta = { description = "Library and tool for parsing .eventlog files from GHC"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/graphviz/default.nix b/pkgs/development/libraries/haskell/graphviz/default.nix index 609863e808f..9d370993a22 100644 --- a/pkgs/development/libraries/haskell/graphviz/default.nix +++ b/pkgs/development/libraries/haskell/graphviz/default.nix @@ -1,5 +1,5 @@ -{ cabal, colour, dlist, fgl, filepath, polyparse, temporary, text -, transformers, wlPprintText +{ cabal, colour, dlist, fgl, filepath, polyparse, QuickCheck +, temporary, text, transformers, wlPprintText }: cabal.mkDerivation (self: { @@ -10,6 +10,10 @@ cabal.mkDerivation (self: { colour dlist fgl filepath polyparse temporary text transformers wlPprintText ]; + testDepends = [ + colour dlist fgl filepath polyparse QuickCheck temporary text + transformers wlPprintText + ]; meta = { homepage = "http://projects.haskell.org/graphviz/"; description = "Bindings to Graphviz for graph visualisation"; diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix index 68b79bdcc3b..59a32b0d290 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -1,7 +1,8 @@ { cabal, binary, blazeHtml, blazeMarkup, citeprocHs, cmdargs -, cryptohash, deepseq, filepath, httpConduit, httpTypes, lrucache -, mtl, pandoc, parsec, random, regexBase, regexTdfa, snapCore -, snapServer, tagsoup, text, time +, cryptohash, deepseq, filepath, httpConduit, httpTypes, HUnit +, lrucache, mtl, pandoc, parsec, QuickCheck, random, regexBase +, regexTdfa, snapCore, snapServer, tagsoup, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, text, time }: cabal.mkDerivation (self: { @@ -15,6 +16,12 @@ cabal.mkDerivation (self: { filepath httpConduit httpTypes lrucache mtl pandoc parsec random regexBase regexTdfa snapCore snapServer tagsoup text time ]; + 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 + ]; jailbreak = true; meta = { homepage = "http://jaspervdj.be/hakyll"; diff --git a/pkgs/development/libraries/haskell/hamlet/default.nix b/pkgs/development/libraries/haskell/hamlet/default.nix index 28881da84c3..7b61aee26df 100644 --- a/pkgs/development/libraries/haskell/hamlet/default.nix +++ b/pkgs/development/libraries/haskell/hamlet/default.nix @@ -1,5 +1,5 @@ -{ cabal, blazeBuilder, blazeHtml, blazeMarkup, failure, parsec -, shakespeare, text +{ cabal, blazeBuilder, blazeHtml, blazeMarkup, failure, hspec +, HUnit, parsec, shakespeare, text }: cabal.mkDerivation (self: { @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ blazeBuilder blazeHtml blazeMarkup failure parsec shakespeare text ]; + testDepends = [ blazeHtml blazeMarkup hspec HUnit parsec text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Haml-like template files that are compile-time checked"; diff --git a/pkgs/development/libraries/haskell/happstack/happstack-server.nix b/pkgs/development/libraries/haskell/happstack/happstack-server.nix index 3a0b9ab59b9..dba052a0fc1 100644 --- a/pkgs/development/libraries/haskell/happstack/happstack-server.nix +++ b/pkgs/development/libraries/haskell/happstack/happstack-server.nix @@ -1,7 +1,8 @@ { cabal, base64Bytestring, blazeHtml, extensibleExceptions -, filepath, hslogger, html, monadControl, mtl, network, parsec -, sendfile, syb, systemFilepath, text, threads, time, timeCompat -, transformers, transformersBase, utf8String, xhtml, zlib +, filepath, hslogger, html, HUnit, monadControl, mtl, network +, parsec, sendfile, syb, systemFilepath, text, threads, time +, timeCompat, transformers, transformersBase, utf8String, xhtml +, zlib }: cabal.mkDerivation (self: { @@ -14,6 +15,7 @@ cabal.mkDerivation (self: { text threads time timeCompat transformers transformersBase utf8String xhtml zlib ]; + testDepends = [ HUnit parsec zlib ]; meta = { homepage = "http://happstack.com"; description = "Web related tools and services"; diff --git a/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix b/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix index 96fe7ae0eb1..ffb3f98e8b3 100644 --- a/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix +++ b/pkgs/development/libraries/haskell/hashable/1.1.2.5.nix @@ -1,10 +1,15 @@ -{ cabal, text }: +{ cabal, QuickCheck, random, testFramework +, testFrameworkQuickcheck2, text +}: cabal.mkDerivation (self: { pname = "hashable"; version = "1.1.2.5"; sha256 = "0gbiaj5ck2bvvinndp2pg7qsm2h2izbnz9wi97dbm7i8r4qd9d9z"; buildDepends = [ text ]; + testDepends = [ + QuickCheck random testFramework testFrameworkQuickcheck2 text + ]; meta = { homepage = "http://github.com/tibbe/hashable"; description = "A class for types that can be converted to a hash value"; diff --git a/pkgs/development/libraries/haskell/hastache/default.nix b/pkgs/development/libraries/haskell/hastache/default.nix index ff8aa25bd2d..15d32de346d 100644 --- a/pkgs/development/libraries/haskell/hastache/default.nix +++ b/pkgs/development/libraries/haskell/hastache/default.nix @@ -1,4 +1,4 @@ -{ cabal, blazeBuilder, filepath, ieee754, mtl, syb, text +{ cabal, blazeBuilder, filepath, HUnit, ieee754, mtl, syb, text , transformers, utf8String }: @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ blazeBuilder filepath ieee754 mtl syb text transformers utf8String ]; + testDepends = [ HUnit mtl syb text ]; meta = { homepage = "http://github.com/lymar/hastache"; description = "Haskell implementation of Mustache templates"; diff --git a/pkgs/development/libraries/haskell/hjsmin/default.nix b/pkgs/development/libraries/haskell/hjsmin/default.nix index 6538e17c41a..9551581dadf 100644 --- a/pkgs/development/libraries/haskell/hjsmin/default.nix +++ b/pkgs/development/libraries/haskell/hjsmin/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, languageJavascript, text }: +{ cabal, blazeBuilder, Cabal, HUnit, languageJavascript, QuickCheck +, testFramework, testFrameworkHunit, text +}: cabal.mkDerivation (self: { pname = "hjsmin"; version = "0.1.4.1"; sha256 = "0r73hd6kn37mdbm2i3g6v3qqm696kyflqs6ajq68qr5sr62sjb1a"; buildDepends = [ blazeBuilder languageJavascript text ]; + testDepends = [ + blazeBuilder Cabal HUnit languageJavascript QuickCheck + testFramework testFrameworkHunit text + ]; meta = { homepage = "http://github.com/alanz/hjsmin"; description = "Haskell implementation of a javascript minifier"; diff --git a/pkgs/development/libraries/haskell/hsemail/default.nix b/pkgs/development/libraries/haskell/hsemail/default.nix index bffe1ad5809..3880537e7ea 100644 --- a/pkgs/development/libraries/haskell/hsemail/default.nix +++ b/pkgs/development/libraries/haskell/hsemail/default.nix @@ -1,10 +1,11 @@ -{ cabal, mtl, parsec }: +{ cabal, doctest, hspec, mtl, parsec }: cabal.mkDerivation (self: { pname = "hsemail"; version = "1.7.5"; sha256 = "0ls6y48bndwgb7ng29wxim4h36rs6b07dqi6ic4hqgbb7lg6fma4"; buildDepends = [ mtl parsec ]; + testDepends = [ doctest hspec parsec ]; meta = { homepage = "http://gitorious.org/hsemail"; description = "Internet Message Parsers"; diff --git a/pkgs/development/libraries/haskell/hspec-expectations/default.nix b/pkgs/development/libraries/haskell/hspec-expectations/default.nix index e7d5756b759..4b84ad62784 100644 --- a/pkgs/development/libraries/haskell/hspec-expectations/default.nix +++ b/pkgs/development/libraries/haskell/hspec-expectations/default.nix @@ -1,10 +1,11 @@ -{ cabal, HUnit }: +{ cabal, hspec, HUnit, markdownUnlit, silently }: cabal.mkDerivation (self: { pname = "hspec-expectations"; version = "0.3.0.3"; sha256 = "1ppcbfmcgrd1lwswa293fxwny6khhg4blygfbcsawrvgc5ji0q74"; buildDepends = [ HUnit ]; + testDepends = [ hspec HUnit markdownUnlit silently ]; meta = { homepage = "https://github.com/sol/hspec-expectations#readme"; description = "Catchy combinators for HUnit"; diff --git a/pkgs/development/libraries/haskell/hspec/default.nix b/pkgs/development/libraries/haskell/hspec/default.nix index 4c897f20ef7..949874bfa91 100644 --- a/pkgs/development/libraries/haskell/hspec/default.nix +++ b/pkgs/development/libraries/haskell/hspec/default.nix @@ -1,5 +1,6 @@ -{ cabal, ansiTerminal, filepath, hspecExpectations, HUnit -, QuickCheck, setenv, silently, time, transformers +{ cabal, ansiTerminal, doctest, filepath, ghcPaths +, hspecExpectations, hspecMeta, HUnit, QuickCheck, setenv, silently +, time, transformers }: cabal.mkDerivation (self: { @@ -12,6 +13,10 @@ cabal.mkDerivation (self: { ansiTerminal filepath hspecExpectations HUnit QuickCheck setenv silently time transformers ]; + testDepends = [ + ansiTerminal doctest filepath ghcPaths hspecExpectations hspecMeta + HUnit QuickCheck setenv silently time transformers + ]; meta = { homepage = "http://hspec.github.com/"; description = "Behavior-Driven Development for Haskell"; diff --git a/pkgs/development/libraries/haskell/html-conduit/default.nix b/pkgs/development/libraries/haskell/html-conduit/default.nix index ff4b03c1e6a..eaf1754b622 100644 --- a/pkgs/development/libraries/haskell/html-conduit/default.nix +++ b/pkgs/development/libraries/haskell/html-conduit/default.nix @@ -1,5 +1,6 @@ -{ cabal, conduit, filesystemConduit, resourcet, systemFilepath -, tagstreamConduit, text, transformers, xmlConduit, xmlTypes +{ cabal, conduit, filesystemConduit, hspec, HUnit, resourcet +, systemFilepath, tagstreamConduit, text, transformers, xmlConduit +, xmlTypes }: cabal.mkDerivation (self: { @@ -10,6 +11,7 @@ cabal.mkDerivation (self: { conduit filesystemConduit resourcet systemFilepath tagstreamConduit text transformers xmlConduit xmlTypes ]; + testDepends = [ hspec HUnit xmlConduit ]; meta = { homepage = "https://github.com/snoyberg/xml"; description = "Parse HTML documents using xml-conduit datatypes"; diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix index ebb44f1512b..5ff4b4cd95e 100644 --- a/pkgs/development/libraries/haskell/http-conduit/default.nix +++ b/pkgs/development/libraries/haskell/http-conduit/default.nix @@ -1,10 +1,10 @@ { cabal, 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 +, filepath, hspec, httpTypes, HUnit, liftedBase, mimeTypes +, monadControl, mtl, network, networkConduit, random, regexCompat +, resourcet, socks, text, time, tls, tlsExtra, transformers +, transformersBase, utf8String, void, wai, warp, zlibConduit }: cabal.mkDerivation (self: { @@ -19,6 +19,14 @@ cabal.mkDerivation (self: { 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 + regexCompat resourcet socks text time tls tlsExtra transformers + transformersBase utf8String void wai warp zlibConduit + ]; meta = { homepage = "http://www.yesodweb.com/book/http-conduit"; description = "HTTP client package with conduit interface and HTTPS support"; diff --git a/pkgs/development/libraries/haskell/http-date/default.nix b/pkgs/development/libraries/haskell/http-date/default.nix index 58d4dd7ecbf..3571c160f6b 100644 --- a/pkgs/development/libraries/haskell/http-date/default.nix +++ b/pkgs/development/libraries/haskell/http-date/default.nix @@ -1,10 +1,11 @@ -{ cabal, attoparsec }: +{ cabal, attoparsec, doctest, hspec, time }: cabal.mkDerivation (self: { pname = "http-date"; version = "0.0.4"; sha256 = "1pbm066i1cpa3z2kfsqpva0qixnx87s76dpafz3wf6dkaqj8n8i5"; buildDepends = [ attoparsec ]; + testDepends = [ doctest hspec time ]; meta = { description = "HTTP Date parser/formatter"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix index 618438e927f..39091256ec0 100644 --- a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix +++ b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix @@ -1,6 +1,7 @@ { cabal, blazeBuilder, caseInsensitive, classyPrelude, conduit -, dataDefault, httpConduit, httpTypes, liftedBase, monadControl -, network, networkConduit, text, wai, warp, word8 +, dataDefault, hspec, httpConduit, httpTypes, liftedBase +, monadControl, network, networkConduit, text, transformers, wai +, warp, word8 }: cabal.mkDerivation (self: { @@ -12,6 +13,10 @@ cabal.mkDerivation (self: { httpConduit httpTypes liftedBase monadControl network networkConduit text wai warp word8 ]; + testDepends = [ + blazeBuilder conduit hspec httpConduit httpTypes liftedBase network + networkConduit transformers wai warp + ]; meta = { homepage = "https://github.com/fpco/http-reverse-proxy"; description = "Reverse proxy HTTP requests, either over raw sockets or with WAI"; diff --git a/pkgs/development/libraries/haskell/http-types/default.nix b/pkgs/development/libraries/haskell/http-types/default.nix index d0837d21bff..c4c064fbf81 100644 --- a/pkgs/development/libraries/haskell/http-types/default.nix +++ b/pkgs/development/libraries/haskell/http-types/default.nix @@ -1,10 +1,11 @@ -{ cabal, blazeBuilder, caseInsensitive, text }: +{ cabal, blazeBuilder, caseInsensitive, hspec, QuickCheck, text }: cabal.mkDerivation (self: { pname = "http-types"; version = "0.8.0"; sha256 = "14d1gzgwhinkwx3lmc6hvqj6ivjrvy4m6fm2walnyk1zv24zli75"; buildDepends = [ blazeBuilder caseInsensitive text ]; + testDepends = [ blazeBuilder hspec QuickCheck text ]; meta = { homepage = "https://github.com/aristidb/http-types"; description = "Generic HTTP types for Haskell (for both client and server code)"; diff --git a/pkgs/development/libraries/haskell/io-choice/default.nix b/pkgs/development/libraries/haskell/io-choice/default.nix index f8b1f1d51a4..cdf269b0d3c 100644 --- a/pkgs/development/libraries/haskell/io-choice/default.nix +++ b/pkgs/development/libraries/haskell/io-choice/default.nix @@ -1,4 +1,5 @@ -{ cabal, liftedBase, monadControl, transformers, transformersBase +{ cabal, hspec, liftedBase, monadControl, transformers +, transformersBase }: cabal.mkDerivation (self: { @@ -8,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ liftedBase monadControl transformers transformersBase ]; + testDepends = [ hspec liftedBase monadControl transformers ]; meta = { description = "Choice for IO and lifted IO"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/iproute/default.nix b/pkgs/development/libraries/haskell/iproute/default.nix index c342f80a6c2..1ec2b659f0c 100644 --- a/pkgs/development/libraries/haskell/iproute/default.nix +++ b/pkgs/development/libraries/haskell/iproute/default.nix @@ -1,10 +1,15 @@ -{ cabal, appar, byteorder, network }: +{ cabal, appar, byteorder, doctest, hspec, network, QuickCheck +, Safe +}: cabal.mkDerivation (self: { pname = "iproute"; version = "1.2.10"; sha256 = "1ni91llvq1mfdsjmw1laqhk964y4vlpyk5s25j8klsfn27mq6c68"; buildDepends = [ appar byteorder network ]; + testDepends = [ + appar byteorder doctest hspec network QuickCheck Safe + ]; meta = { homepage = "http://www.mew.org/~kazu/proj/iproute/"; description = "IP Routing Table"; diff --git a/pkgs/development/libraries/haskell/language-c-quote/default.nix b/pkgs/development/libraries/haskell/language-c-quote/default.nix index fc569f996a8..fc8c15edf57 100644 --- a/pkgs/development/libraries/haskell/language-c-quote/default.nix +++ b/pkgs/development/libraries/haskell/language-c-quote/default.nix @@ -1,5 +1,6 @@ { cabal, alex, exceptionMtl, exceptionTransformers, filepath, happy -, haskellSrcMeta, mainlandPretty, mtl, srcloc, syb, symbol +, haskellSrcMeta, HUnit, mainlandPretty, mtl, srcloc, syb, symbol +, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { @@ -10,6 +11,9 @@ cabal.mkDerivation (self: { exceptionMtl exceptionTransformers filepath haskellSrcMeta mainlandPretty mtl srcloc syb symbol ]; + testDepends = [ + HUnit srcloc symbol testFramework testFrameworkHunit + ]; buildTools = [ alex happy ]; jailbreak = true; meta = { diff --git a/pkgs/development/libraries/haskell/language-javascript/default.nix b/pkgs/development/libraries/haskell/language-javascript/default.nix index e05b93655e4..4571b869e3b 100644 --- a/pkgs/development/libraries/haskell/language-javascript/default.nix +++ b/pkgs/development/libraries/haskell/language-javascript/default.nix @@ -1,10 +1,16 @@ -{ cabal, blazeBuilder, happy, mtl, utf8Light, utf8String }: +{ cabal, blazeBuilder, Cabal, happy, HUnit, mtl, QuickCheck +, testFramework, testFrameworkHunit, utf8Light, utf8String +}: cabal.mkDerivation (self: { pname = "language-javascript"; version = "0.5.7"; sha256 = "0mndz0bqxkayzm7g92cvai9ahb9msr99syp9djhaya1d45595ad3"; buildDepends = [ blazeBuilder mtl utf8Light utf8String ]; + testDepends = [ + blazeBuilder Cabal HUnit mtl QuickCheck testFramework + testFrameworkHunit utf8Light utf8String + ]; buildTools = [ happy ]; meta = { homepage = "http://github.com/alanz/language-javascript"; diff --git a/pkgs/development/libraries/haskell/largeword/default.nix b/pkgs/development/libraries/haskell/largeword/default.nix index 991213067f6..aa3cd5fcdf6 100644 --- a/pkgs/development/libraries/haskell/largeword/default.nix +++ b/pkgs/development/libraries/haskell/largeword/default.nix @@ -1,9 +1,15 @@ -{ cabal }: +{ cabal, HUnit, QuickCheck, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "largeword"; version = "1.0.4"; sha256 = "19nrzbbbmsvxdhfhh6wc53lbk0xyjvbcwvjw0snym666j1w2b2l5"; + testDepends = [ + HUnit QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/idontgetoutmuch/largeword"; description = "Provides Word128, Word192 and Word256 and a way of producing other large words if required"; diff --git a/pkgs/development/libraries/haskell/leksah/leksah-server.nix b/pkgs/development/libraries/haskell/leksah/leksah-server.nix index cfcc69641b5..1a907a384f1 100644 --- a/pkgs/development/libraries/haskell/leksah/leksah-server.nix +++ b/pkgs/development/libraries/haskell/leksah/leksah-server.nix @@ -1,6 +1,6 @@ { cabal, attoparsec, attoparsecEnumerator, binary, binaryShared -, Cabal, deepseq, enumerator, filepath, haddock, hslogger, ltk -, network, parsec, processLeksah, strict, time, transformers +, Cabal, deepseq, enumerator, filepath, haddock, hslogger, HUnit +, ltk, network, parsec, processLeksah, strict, time, transformers }: cabal.mkDerivation (self: { @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { enumerator filepath haddock hslogger ltk network parsec processLeksah strict time transformers ]; + testDepends = [ enumerator hslogger HUnit transformers ]; meta = { homepage = "http://leksah.org"; description = "Metadata collection for leksah"; diff --git a/pkgs/development/libraries/haskell/lens/default.nix b/pkgs/development/libraries/haskell/lens/default.nix index b5f8851796e..bba84668958 100644 --- a/pkgs/development/libraries/haskell/lens/default.nix +++ b/pkgs/development/libraries/haskell/lens/default.nix @@ -1,9 +1,11 @@ { cabal, bifunctors, comonad, comonadsFd, comonadTransformers -, contravariant, distributive, filepath, genericDeriving, hashable -, MonadCatchIOTransformers, mtl, parallel, profunctorExtras -, profunctors, reflection, semigroupoids, semigroups, split, tagged -, text, transformers, transformersCompat, unorderedContainers -, vector, void +, contravariant, deepseq, distributive, doctest, filepath +, genericDeriving, hashable, HUnit, MonadCatchIOTransformers, mtl +, nats, parallel, profunctorExtras, profunctors, QuickCheck +, reflection, semigroupoids, semigroups, simpleReflect, split +, tagged, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2, testFrameworkTh, text, transformers +, transformersCompat, unorderedContainers, vector, void }: cabal.mkDerivation (self: { @@ -17,6 +19,12 @@ cabal.mkDerivation (self: { reflection semigroupoids semigroups split tagged text transformers transformersCompat unorderedContainers vector void ]; + testDepends = [ + deepseq doctest filepath genericDeriving HUnit mtl nats parallel + QuickCheck semigroups simpleReflect split testFramework + testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text + transformers unorderedContainers vector + ]; meta = { homepage = "http://github.com/ekmett/lens/"; description = "Lenses, Folds and Traversals"; diff --git a/pkgs/development/libraries/haskell/libmpd/default.nix b/pkgs/development/libraries/haskell/libmpd/default.nix index fc77388727f..7402d6f31db 100644 --- a/pkgs/development/libraries/haskell/libmpd/default.nix +++ b/pkgs/development/libraries/haskell/libmpd/default.nix @@ -1,10 +1,15 @@ -{ cabal, filepath, mtl, network, text, time, utf8String }: +{ cabal, dataDefault, filepath, hspec, HUnit, mtl, network +, QuickCheck, text, time, utf8String +}: cabal.mkDerivation (self: { pname = "libmpd"; version = "0.8.0.2"; sha256 = "1phlbb5lsapw2hb0db7906ddlmvnpyk1xbgxvl9zp9zfd0sn40aj"; buildDepends = [ filepath mtl network text time utf8String ]; + testDepends = [ + dataDefault hspec HUnit mtl network QuickCheck text time utf8String + ]; meta = { homepage = "http://github.com/joachifm/libmpd-haskell"; description = "An MPD client library"; diff --git a/pkgs/development/libraries/haskell/lifted-base/default.nix b/pkgs/development/libraries/haskell/lifted-base/default.nix index fbb09db9bb8..1d675e88d87 100644 --- a/pkgs/development/libraries/haskell/lifted-base/default.nix +++ b/pkgs/development/libraries/haskell/lifted-base/default.nix @@ -1,4 +1,6 @@ -{ cabal, baseUnicodeSymbols, monadControl, transformersBase }: +{ cabal, baseUnicodeSymbols, HUnit, monadControl, testFramework +, testFrameworkHunit, transformers, transformersBase +}: cabal.mkDerivation (self: { pname = "lifted-base"; @@ -7,6 +9,10 @@ cabal.mkDerivation (self: { buildDepends = [ baseUnicodeSymbols monadControl transformersBase ]; + testDepends = [ + HUnit monadControl testFramework testFrameworkHunit transformers + transformersBase + ]; meta = { homepage = "https://github.com/basvandijk/lifted-base"; description = "lifted IO operations from the base library"; diff --git a/pkgs/development/libraries/haskell/math-functions/default.nix b/pkgs/development/libraries/haskell/math-functions/default.nix index 158feeee18a..2e29269a9fd 100644 --- a/pkgs/development/libraries/haskell/math-functions/default.nix +++ b/pkgs/development/libraries/haskell/math-functions/default.nix @@ -1,10 +1,16 @@ -{ cabal, erf, vector }: +{ cabal, erf, HUnit, ieee754, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, vector +}: cabal.mkDerivation (self: { pname = "math-functions"; version = "0.1.3.0"; sha256 = "06wxr8fbhmsgkpyx2vimx9l6apk0p27mwrxrvbjk0b7m9vsg3ay5"; buildDepends = [ erf vector ]; + testDepends = [ + HUnit ieee754 QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "https://github.com/bos/math-functions"; description = "Special functions and Chebyshev polynomials"; diff --git a/pkgs/development/libraries/haskell/minimorph/default.nix b/pkgs/development/libraries/haskell/minimorph/default.nix index 54fc100b7dd..06dcfaa1139 100644 --- a/pkgs/development/libraries/haskell/minimorph/default.nix +++ b/pkgs/development/libraries/haskell/minimorph/default.nix @@ -1,10 +1,11 @@ -{ cabal, text }: +{ cabal, HUnit, testFramework, testFrameworkHunit, text }: cabal.mkDerivation (self: { pname = "minimorph"; version = "0.1.4.0"; sha256 = "16ri9hfriszrgqcm111b1pp5x65s034hrc35kjz5qax32mnc9rn6"; buildDepends = [ text ]; + testDepends = [ HUnit testFramework testFrameworkHunit text ]; meta = { homepage = "http://darcsden.com/kowey/minimorph"; description = "English spelling functions with an emphasis on simplicity"; diff --git a/pkgs/development/libraries/haskell/miniutter/default.nix b/pkgs/development/libraries/haskell/miniutter/default.nix index b06ee1363c8..22018087226 100644 --- a/pkgs/development/libraries/haskell/miniutter/default.nix +++ b/pkgs/development/libraries/haskell/miniutter/default.nix @@ -1,10 +1,12 @@ -{ cabal, minimorph, text }: +{ cabal, HUnit, minimorph, testFramework, testFrameworkHunit, text +}: cabal.mkDerivation (self: { pname = "miniutter"; version = "0.4.0"; sha256 = "1l275aad8svrqp22jv9s0mmlam7wbdlf6m4m97658rm8ks4j2mbx"; buildDepends = [ minimorph text ]; + testDepends = [ HUnit testFramework testFrameworkHunit text ]; meta = { homepage = "https://github.com/Mikolaj/miniutter"; description = "Simple English clause creation from arbitrary words"; diff --git a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix index 8407daef642..f22ae9e106f 100644 --- a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix +++ b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix @@ -1,5 +1,7 @@ -{ cabal, abstractDeque, abstractPar, deepseq, monadParExtras, mtl -, mwcRandom, parallel +{ cabal, abstractDeque, abstractPar, deepseq, HUnit, monadParExtras +, mtl, mwcRandom, parallel, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, testFrameworkTh +, time }: cabal.mkDerivation (self: { @@ -10,6 +12,11 @@ cabal.mkDerivation (self: { abstractDeque abstractPar deepseq monadParExtras mtl mwcRandom parallel ]; + testDepends = [ + abstractDeque abstractPar deepseq HUnit monadParExtras mtl + mwcRandom QuickCheck testFramework testFrameworkHunit + testFrameworkQuickcheck2 testFrameworkTh time + ]; meta = { homepage = "https://github.com/simonmar/monad-par"; description = "A library for parallel programming based on a monad"; diff --git a/pkgs/development/libraries/haskell/mwc-random/default.nix b/pkgs/development/libraries/haskell/mwc-random/default.nix index 1e2d56147c3..d20f4f061e4 100644 --- a/pkgs/development/libraries/haskell/mwc-random/default.nix +++ b/pkgs/development/libraries/haskell/mwc-random/default.nix @@ -1,10 +1,16 @@ -{ cabal, primitive, time, vector }: +{ cabal, HUnit, primitive, QuickCheck, statistics, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, time, vector +}: cabal.mkDerivation (self: { pname = "mwc-random"; version = "0.12.0.1"; sha256 = "1sq4yxi231ka8rzwsihqziibs7amvl27ycr018wymm3yz36vsy7c"; buildDepends = [ primitive time vector ]; + testDepends = [ + HUnit QuickCheck statistics testFramework testFrameworkHunit + testFrameworkQuickcheck2 vector + ]; meta = { homepage = "https://github.com/bos/mwc-random"; description = "Fast, high quality pseudo random number generation"; diff --git a/pkgs/development/libraries/haskell/network-conduit/default.nix b/pkgs/development/libraries/haskell/network-conduit/default.nix index 67d44bd1ebb..032592f974b 100644 --- a/pkgs/development/libraries/haskell/network-conduit/default.nix +++ b/pkgs/development/libraries/haskell/network-conduit/default.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { buildDepends = [ conduit liftedBase monadControl network transformers ]; + testDepends = [ conduit ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Stream socket data using conduits"; diff --git a/pkgs/development/libraries/haskell/network-transport-tcp/default.nix b/pkgs/development/libraries/haskell/network-transport-tcp/default.nix index fb313005bda..840712e3416 100644 --- a/pkgs/development/libraries/haskell/network-transport-tcp/default.nix +++ b/pkgs/development/libraries/haskell/network-transport-tcp/default.nix @@ -1,10 +1,20 @@ -{ cabal, dataAccessor, network, networkTransport }: +{ cabal, dataAccessor, dataAccessorTransformers, HUnit +, lockfreeQueue, mtl, network, networkTransport +, networkTransportTests, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, transformers +}: cabal.mkDerivation (self: { pname = "network-transport-tcp"; version = "0.3.1"; sha256 = "15i4qbx1s3dxaixn6kd2z1hsymfvpqzf4jpqd3mcbpjlgrn6craf"; buildDepends = [ dataAccessor network networkTransport ]; + testDepends = [ + dataAccessor dataAccessorTransformers HUnit lockfreeQueue mtl + network networkTransport networkTransportTests QuickCheck + testFramework testFrameworkHunit testFrameworkQuickcheck2 + transformers + ]; meta = { homepage = "http://github.com/haskell-distributed/distributed-process"; description = "TCP instantiation of Network.Transport"; diff --git a/pkgs/development/libraries/haskell/network/2.3.0.13.nix b/pkgs/development/libraries/haskell/network/2.3.0.13.nix index 29452da7b2e..557dea081fd 100644 --- a/pkgs/development/libraries/haskell/network/2.3.0.13.nix +++ b/pkgs/development/libraries/haskell/network/2.3.0.13.nix @@ -1,10 +1,11 @@ -{ cabal, parsec }: +{ cabal, HUnit, parsec, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "network"; version = "2.3.0.13"; sha256 = "0xw53czvcw8k49aqxmchc1rcd6pyxp4icwgp64625fnm3l4yjiq7"; buildDepends = [ parsec ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "http://github.com/haskell/network"; description = "Low-level networking interface"; diff --git a/pkgs/development/libraries/haskell/network/2.3.1.0.nix b/pkgs/development/libraries/haskell/network/2.3.1.0.nix index 28fa50d8342..dc0c1811e59 100644 --- a/pkgs/development/libraries/haskell/network/2.3.1.0.nix +++ b/pkgs/development/libraries/haskell/network/2.3.1.0.nix @@ -1,10 +1,11 @@ -{ cabal, parsec }: +{ cabal, HUnit, parsec, testFramework, testFrameworkHunit }: cabal.mkDerivation (self: { pname = "network"; version = "2.3.1.0"; sha256 = "1fp25wkl5cc4kx0jv5w02b7pzgqadjg1yrknzzwsqxc5s3cpyz6l"; buildDepends = [ parsec ]; + testDepends = [ HUnit testFramework testFrameworkHunit ]; meta = { homepage = "http://github.com/haskell/network"; description = "Low-level networking interface"; diff --git a/pkgs/development/libraries/haskell/network/2.4.1.2.nix b/pkgs/development/libraries/haskell/network/2.4.1.2.nix index 4009bbd9464..6f245cf1840 100644 --- a/pkgs/development/libraries/haskell/network/2.4.1.2.nix +++ b/pkgs/development/libraries/haskell/network/2.4.1.2.nix @@ -1,10 +1,15 @@ -{ cabal, parsec }: +{ cabal, HUnit, parsec, testFramework, testFrameworkHunit +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "network"; version = "2.4.1.2"; sha256 = "0f7ykdv7xbsr5m3h2ml0hw3nlbnq785m0gr624pwk2s289jwakdh"; buildDepends = [ parsec ]; + testDepends = [ + HUnit testFramework testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/haskell/network"; description = "Low-level networking interface"; diff --git a/pkgs/development/libraries/haskell/numbers/default.nix b/pkgs/development/libraries/haskell/numbers/default.nix index d1485b7cf1f..002f68eded7 100644 --- a/pkgs/development/libraries/haskell/numbers/default.nix +++ b/pkgs/development/libraries/haskell/numbers/default.nix @@ -1,9 +1,12 @@ -{ cabal }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 }: cabal.mkDerivation (self: { pname = "numbers"; version = "3000.1.0.1"; sha256 = "0r2s47nfdxasnp8j7giwpxls9v48f6ld0gc2hg2p7y2ar5xfrcc4"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/DanBurton/numbers"; description = "Various number types"; diff --git a/pkgs/development/libraries/haskell/optparse-applicative/default.nix b/pkgs/development/libraries/haskell/optparse-applicative/default.nix index 3e04a33990e..46f530b8cd4 100644 --- a/pkgs/development/libraries/haskell/optparse-applicative/default.nix +++ b/pkgs/development/libraries/haskell/optparse-applicative/default.nix @@ -1,10 +1,15 @@ -{ cabal, transformers }: +{ cabal, HUnit, testFramework, testFrameworkHunit +, testFrameworkThPrime, transformers +}: cabal.mkDerivation (self: { pname = "optparse-applicative"; version = "0.5.2.1"; sha256 = "0w4mk851mx8dch8lnck0g82asmzrsc47xrf34jygh0f6v4kbj40i"; buildDepends = [ transformers ]; + testDepends = [ + HUnit testFramework testFrameworkHunit testFrameworkThPrime + ]; meta = { homepage = "https://github.com/pcapriotti/optparse-applicative"; description = "Utilities and combinators for parsing command line options"; diff --git a/pkgs/development/libraries/haskell/path-pieces/default.nix b/pkgs/development/libraries/haskell/path-pieces/default.nix index 5abc6309146..14b9f8d7081 100644 --- a/pkgs/development/libraries/haskell/path-pieces/default.nix +++ b/pkgs/development/libraries/haskell/path-pieces/default.nix @@ -1,10 +1,11 @@ -{ cabal, text, time }: +{ cabal, fileLocation, hspec, HUnit, QuickCheck, text, time }: cabal.mkDerivation (self: { pname = "path-pieces"; version = "0.1.2"; sha256 = "1cxsa8lq1f2jf86iv6f17nraiav8k2vzjxln1y7z45qhcp1sbbaa"; buildDepends = [ text time ]; + testDepends = [ fileLocation hspec HUnit QuickCheck text ]; meta = { description = "Components of paths"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/pem/default.nix b/pkgs/development/libraries/haskell/pem/default.nix index b82dc4ed83d..16b47a9c8ae 100644 --- a/pkgs/development/libraries/haskell/pem/default.nix +++ b/pkgs/development/libraries/haskell/pem/default.nix @@ -1,10 +1,15 @@ -{ cabal, attoparsec, base64Bytestring, cereal, mtl }: +{ cabal, attoparsec, base64Bytestring, cereal, mtl, QuickCheck +, testFramework, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "pem"; version = "0.1.2"; sha256 = "1p2sw36b9w6lf53jzj86ibyy9a48fjd786mx3x8mvc5lczx8v78m"; buildDepends = [ attoparsec base64Bytestring cereal mtl ]; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://github.com/vincenthz/hs-pem"; description = "Privacy Enhanced Mail (PEM) format reader and writer"; diff --git a/pkgs/development/libraries/haskell/persistent-template/default.nix b/pkgs/development/libraries/haskell/persistent-template/default.nix index 2816a38c413..117a63618d4 100644 --- a/pkgs/development/libraries/haskell/persistent-template/default.nix +++ b/pkgs/development/libraries/haskell/persistent-template/default.nix @@ -1,10 +1,13 @@ -{ cabal, aeson, monadControl, persistent, text, transformers }: +{ cabal, aeson, hspec, monadControl, persistent, QuickCheck, text +, transformers +}: cabal.mkDerivation (self: { pname = "persistent-template"; version = "1.1.2.4"; sha256 = "0fsqyv5r6h356shmah6bs75fzds0fsmyizbnvj5ywzhc003jv5h9"; buildDepends = [ aeson monadControl persistent text transformers ]; + testDepends = [ aeson hspec persistent QuickCheck text ]; meta = { homepage = "http://www.yesodweb.com/book/persistent"; description = "Type-safe, non-relational, multi-backend persistence"; diff --git a/pkgs/development/libraries/haskell/persistent/default.nix b/pkgs/development/libraries/haskell/persistent/default.nix index f7812a2692d..036deebae20 100644 --- a/pkgs/development/libraries/haskell/persistent/default.nix +++ b/pkgs/development/libraries/haskell/persistent/default.nix @@ -1,7 +1,8 @@ { cabal, aeson, attoparsec, base64Bytestring, blazeHtml -, blazeMarkup, conduit, liftedBase, monadControl, monadLogger -, pathPieces, poolConduit, resourcet, silently, sqlite, text, time -, transformers, transformersBase, unorderedContainers, vector +, blazeMarkup, conduit, hspec, liftedBase, monadControl +, monadLogger, pathPieces, poolConduit, resourcet, silently, sqlite +, text, time, transformers, transformersBase, unorderedContainers +, vector }: cabal.mkDerivation (self: { @@ -14,6 +15,7 @@ cabal.mkDerivation (self: { resourcet silently text time transformers transformersBase unorderedContainers vector ]; + testDepends = [ hspec text ]; extraLibraries = [ sqlite ]; meta = { homepage = "http://www.yesodweb.com/book/persistent"; diff --git a/pkgs/development/libraries/haskell/postgresql-simple/default.nix b/pkgs/development/libraries/haskell/postgresql-simple/default.nix index 3e3a1b7dbfd..29c74d84015 100644 --- a/pkgs/development/libraries/haskell/postgresql-simple/default.nix +++ b/pkgs/development/libraries/haskell/postgresql-simple/default.nix @@ -1,5 +1,6 @@ -{ cabal, attoparsec, blazeBuilder, blazeTextual, postgresqlLibpq -, text, time, transformers, vector +{ cabal, attoparsec, base16Bytestring, blazeBuilder, blazeTextual +, cryptohash, HUnit, postgresqlLibpq, text, time, transformers +, vector }: cabal.mkDerivation (self: { @@ -10,6 +11,7 @@ cabal.mkDerivation (self: { attoparsec blazeBuilder blazeTextual postgresqlLibpq text time transformers vector ]; + testDepends = [ base16Bytestring cryptohash HUnit text time ]; meta = { description = "Mid-Level PostgreSQL client library"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/project-template/default.nix b/pkgs/development/libraries/haskell/project-template/default.nix index 541fa2026d9..fa60370f1f5 100644 --- a/pkgs/development/libraries/haskell/project-template/default.nix +++ b/pkgs/development/libraries/haskell/project-template/default.nix @@ -1,5 +1,6 @@ { cabal, base64Bytestring, base64Conduit, classyPrelude, conduit -, mtl, resourcet, systemFileio, systemFilepath, text, transformers +, hspec, mtl, QuickCheck, resourcet, systemFileio, systemFilepath +, text, transformers }: cabal.mkDerivation (self: { @@ -10,6 +11,10 @@ cabal.mkDerivation (self: { base64Bytestring base64Conduit classyPrelude conduit mtl resourcet systemFileio systemFilepath text transformers ]; + testDepends = [ + base64Bytestring classyPrelude conduit hspec QuickCheck + transformers + ]; meta = { homepage = "https://github.com/fpco/haskell-ide"; description = "Specify Haskell project templates and generate files"; diff --git a/pkgs/development/libraries/haskell/publicsuffixlist/default.nix b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix index 53b7062cd0d..1f38962ddd3 100644 --- a/pkgs/development/libraries/haskell/publicsuffixlist/default.nix +++ b/pkgs/development/libraries/haskell/publicsuffixlist/default.nix @@ -1,10 +1,11 @@ -{ cabal, cereal, dataDefault, text, utf8String }: +{ cabal, cereal, dataDefault, HUnit, idna, text, utf8String }: cabal.mkDerivation (self: { pname = "publicsuffixlist"; version = "0.0.3"; sha256 = "1drsm1zp30629rzy0693ggzcx46b7ydzzafmf07mjanmn1kyyqci"; buildDepends = [ cereal dataDefault text utf8String ]; + testDepends = [ cereal dataDefault HUnit idna text utf8String ]; meta = { homepage = "https://github.com/litherum/publicsuffixlist"; description = "Is a given string a domain suffix?"; diff --git a/pkgs/development/libraries/haskell/reactive-banana/default.nix b/pkgs/development/libraries/haskell/reactive-banana/default.nix index ef4016d003d..8d62f67a128 100644 --- a/pkgs/development/libraries/haskell/reactive-banana/default.nix +++ b/pkgs/development/libraries/haskell/reactive-banana/default.nix @@ -1,10 +1,16 @@ -{ cabal, hashable, transformers, unorderedContainers, vault }: +{ cabal, hashable, HUnit, testFramework, testFrameworkHunit +, transformers, unorderedContainers, vault +}: cabal.mkDerivation (self: { pname = "reactive-banana"; version = "0.7.1.1"; sha256 = "0d4dqpzglzkygy2hhn1j1c7vk2782mk66f8aqaadkyhijn7kc6i5"; buildDepends = [ hashable transformers unorderedContainers vault ]; + testDepends = [ + hashable HUnit testFramework testFrameworkHunit transformers + unorderedContainers vault + ]; meta = { homepage = "http://haskell.org/haskellwiki/Reactive-banana"; description = "Practical library for functional reactive programming (FRP)"; diff --git a/pkgs/development/libraries/haskell/resourcet/default.nix b/pkgs/development/libraries/haskell/resourcet/default.nix index f657f4e0ca5..35b7fec3276 100644 --- a/pkgs/development/libraries/haskell/resourcet/default.nix +++ b/pkgs/development/libraries/haskell/resourcet/default.nix @@ -1,4 +1,4 @@ -{ cabal, liftedBase, monadControl, mtl, transformers +{ cabal, hspec, liftedBase, monadControl, mtl, transformers , transformersBase }: @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ liftedBase monadControl mtl transformers transformersBase ]; + testDepends = [ hspec liftedBase transformers ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Deterministic allocation and freeing of scarce resources"; diff --git a/pkgs/development/libraries/haskell/setenv/default.nix b/pkgs/development/libraries/haskell/setenv/default.nix index 8ce0b125416..fd94874e364 100644 --- a/pkgs/development/libraries/haskell/setenv/default.nix +++ b/pkgs/development/libraries/haskell/setenv/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, hspec, QuickCheck }: cabal.mkDerivation (self: { pname = "setenv"; version = "0.1.0"; sha256 = "04w42bpfbrs5crjp19zzi9dg61xpz4wvmjs2vc7q7qxblyhdfdsy"; + testDepends = [ hspec QuickCheck ]; meta = { description = "A cross-platform library for setting environment variables"; license = self.stdenv.lib.licenses.mit; diff --git a/pkgs/development/libraries/haskell/shakespeare-css/default.nix b/pkgs/development/libraries/haskell/shakespeare-css/default.nix index 5016b816ff7..56174254c21 100644 --- a/pkgs/development/libraries/haskell/shakespeare-css/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-css/default.nix @@ -1,10 +1,11 @@ -{ cabal, parsec, shakespeare, text, transformers }: +{ cabal, hspec, HUnit, parsec, shakespeare, text, transformers }: cabal.mkDerivation (self: { pname = "shakespeare-css"; version = "1.0.3"; sha256 = "0zk4nb4v9x04vkkgbzqanfpqgw9pqinf76l7d85fzclfgwacd0bz"; buildDepends = [ parsec shakespeare text transformers ]; + testDepends = [ hspec HUnit shakespeare text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Stick your haskell variables into css at compile time"; diff --git a/pkgs/development/libraries/haskell/shakespeare-js/default.nix b/pkgs/development/libraries/haskell/shakespeare-js/default.nix index 01bf73fd501..55bf276d1f8 100644 --- a/pkgs/development/libraries/haskell/shakespeare-js/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-js/default.nix @@ -1,10 +1,11 @@ -{ cabal, aeson, shakespeare, text }: +{ cabal, aeson, hspec, HUnit, shakespeare, text }: cabal.mkDerivation (self: { pname = "shakespeare-js"; version = "1.1.2"; sha256 = "0iwajn0d0yngzp10j9qbb2gpq1g7r390yqd7pj5dri35rjc6mr8n"; buildDepends = [ aeson shakespeare text ]; + testDepends = [ aeson hspec HUnit shakespeare text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Stick your haskell variables into javascript/coffeescript at compile time"; diff --git a/pkgs/development/libraries/haskell/shakespeare-text/default.nix b/pkgs/development/libraries/haskell/shakespeare-text/default.nix index 4e9516d107c..d4cc135cc62 100644 --- a/pkgs/development/libraries/haskell/shakespeare-text/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare-text/default.nix @@ -1,10 +1,11 @@ -{ cabal, shakespeare, text }: +{ cabal, hspec, HUnit, shakespeare, text }: cabal.mkDerivation (self: { pname = "shakespeare-text"; version = "1.0.0.5"; sha256 = "176yzx43sh0fnxpszn8kximd6i96yf2s374z55kvc1kspf7jk736"; buildDepends = [ shakespeare text ]; + testDepends = [ hspec HUnit text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "Interpolation with quasi-quotation: put variables strings"; diff --git a/pkgs/development/libraries/haskell/shakespeare/default.nix b/pkgs/development/libraries/haskell/shakespeare/default.nix index 0e04ff4fd44..d38002eebda 100644 --- a/pkgs/development/libraries/haskell/shakespeare/default.nix +++ b/pkgs/development/libraries/haskell/shakespeare/default.nix @@ -1,10 +1,11 @@ -{ cabal, parsec, text }: +{ cabal, hspec, parsec, text }: cabal.mkDerivation (self: { pname = "shakespeare"; version = "1.0.3.1"; sha256 = "08w1g19k9v9dvdy45j32kdic8vjhc10ad4g20q5ya0id4cd13qfs"; buildDepends = [ parsec text ]; + testDepends = [ hspec parsec text ]; meta = { homepage = "http://www.yesodweb.com/book/shakespearean-templates"; description = "A toolkit for making compile-time interpolated templates"; diff --git a/pkgs/development/libraries/haskell/shelly/default.nix b/pkgs/development/libraries/haskell/shelly/default.nix index 15245bfe0bc..325021c1cca 100644 --- a/pkgs/development/libraries/haskell/shelly/default.nix +++ b/pkgs/development/libraries/haskell/shelly/default.nix @@ -1,4 +1,5 @@ -{ cabal, mtl, systemFileio, systemFilepath, text, time, unixCompat +{ cabal, hspec, HUnit, mtl, systemFileio, systemFilepath, text +, time, unixCompat }: cabal.mkDerivation (self: { @@ -8,6 +9,9 @@ cabal.mkDerivation (self: { buildDepends = [ mtl systemFileio systemFilepath text time unixCompat ]; + testDepends = [ + hspec HUnit mtl systemFileio systemFilepath text time unixCompat + ]; meta = { homepage = "https://github.com/yesodweb/Shelly.hs"; description = "shell-like (systems) programming in Haskell"; diff --git a/pkgs/development/libraries/haskell/silently/default.nix b/pkgs/development/libraries/haskell/silently/default.nix index c8223cecac4..fcd7a0a872a 100644 --- a/pkgs/development/libraries/haskell/silently/default.nix +++ b/pkgs/development/libraries/haskell/silently/default.nix @@ -1,10 +1,11 @@ -{ cabal, deepseq }: +{ cabal, deepseq, nanospec }: cabal.mkDerivation (self: { pname = "silently"; version = "1.2.4.1"; sha256 = "035dw3zg680ykyz5rqkkrjn51wkznbc4jb45a8l2gh3vgqzgbf52"; buildDepends = [ deepseq ]; + testDepends = [ deepseq nanospec ]; meta = { homepage = "https://github.com/trystan/silently"; description = "Prevent or capture writing to stdout and other handles"; diff --git a/pkgs/development/libraries/haskell/simple-sendfile/default.nix b/pkgs/development/libraries/haskell/simple-sendfile/default.nix index 7ecd70f25f7..9ad2bd4405b 100644 --- a/pkgs/development/libraries/haskell/simple-sendfile/default.nix +++ b/pkgs/development/libraries/haskell/simple-sendfile/default.nix @@ -1,10 +1,11 @@ -{ cabal, network }: +{ cabal, conduit, hspec, HUnit, network, networkConduit }: cabal.mkDerivation (self: { pname = "simple-sendfile"; version = "0.2.11"; sha256 = "1q9m9lxv9jfkn6a1lf07jcl4li3n5996df1qrfkfjq2n0bvn4qfj"; buildDepends = [ network ]; + testDepends = [ conduit hspec HUnit network networkConduit ]; meta = { description = "Cross platform library for the sendfile system call"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/skein/default.nix b/pkgs/development/libraries/haskell/skein/default.nix index cc910711768..7fdb7e3a1dc 100644 --- a/pkgs/development/libraries/haskell/skein/default.nix +++ b/pkgs/development/libraries/haskell/skein/default.nix @@ -1,10 +1,11 @@ -{ cabal, cereal, cryptoApi, tagged }: +{ cabal, cereal, cryptoApi, filepath, hspec, tagged }: cabal.mkDerivation (self: { pname = "skein"; version = "0.1.0.12"; sha256 = "1nx0ad0y7zmljc7phwin2aph6frs70hvz3di8q52kzpi5m1h3g3a"; buildDepends = [ cereal cryptoApi tagged ]; + testDepends = [ cereal cryptoApi filepath hspec tagged ]; meta = { homepage = "https://github.com/meteficha/skein"; description = "Skein, a family of cryptographic hash functions. Includes Skein-MAC as well."; diff --git a/pkgs/development/libraries/haskell/split/0.2.1.1.nix b/pkgs/development/libraries/haskell/split/0.2.1.1.nix index e106b2687f5..0fb28b53ac9 100644 --- a/pkgs/development/libraries/haskell/split/0.2.1.1.nix +++ b/pkgs/development/libraries/haskell/split/0.2.1.1.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, QuickCheck }: cabal.mkDerivation (self: { pname = "split"; version = "0.2.1.1"; sha256 = "1zzp4dwf846s74a4lhw2gf4awsk9iblhl5zcg2zccgv1lr4w2dmz"; + testDepends = [ QuickCheck ]; meta = { description = "Combinator library for splitting lists"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/split/0.2.1.2.nix b/pkgs/development/libraries/haskell/split/0.2.1.2.nix index e88f478f976..e98e36fe655 100644 --- a/pkgs/development/libraries/haskell/split/0.2.1.2.nix +++ b/pkgs/development/libraries/haskell/split/0.2.1.2.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, QuickCheck }: cabal.mkDerivation (self: { pname = "split"; version = "0.2.1.2"; sha256 = "0wjw4j9wgk66h7filzfh0py9b0wwmaynvwqvd6kinxgms86fpvyi"; + testDepends = [ QuickCheck ]; meta = { description = "Combinator library for splitting lists"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/statistics/default.nix b/pkgs/development/libraries/haskell/statistics/default.nix index de1fd4533ef..923cdf879a5 100644 --- a/pkgs/development/libraries/haskell/statistics/default.nix +++ b/pkgs/development/libraries/haskell/statistics/default.nix @@ -1,5 +1,7 @@ -{ cabal, deepseq, erf, mathFunctions, monadPar, mwcRandom -, primitive, vector, vectorAlgorithms +{ cabal, deepseq, erf, HUnit, ieee754, mathFunctions, monadPar +, mwcRandom, primitive, QuickCheck, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2, vector +, vectorAlgorithms }: cabal.mkDerivation (self: { @@ -10,6 +12,10 @@ cabal.mkDerivation (self: { deepseq erf mathFunctions monadPar mwcRandom primitive vector vectorAlgorithms ]; + testDepends = [ + erf HUnit ieee754 mathFunctions primitive QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 vector vectorAlgorithms + ]; meta = { homepage = "https://github.com/bos/statistics"; description = "A library of statistical types, data, and functions"; diff --git a/pkgs/development/libraries/haskell/stylish-haskell/default.nix b/pkgs/development/libraries/haskell/stylish-haskell/default.nix index 1ca325cbf17..18105124962 100644 --- a/pkgs/development/libraries/haskell/stylish-haskell/default.nix +++ b/pkgs/development/libraries/haskell/stylish-haskell/default.nix @@ -1,5 +1,5 @@ -{ cabal, aeson, cmdargs, filepath, haskellSrcExts, mtl, strict, syb -, yaml +{ cabal, aeson, cmdargs, filepath, haskellSrcExts, HUnit, mtl +, strict, syb, testFramework, testFrameworkHunit, yaml }: cabal.mkDerivation (self: { @@ -11,6 +11,10 @@ cabal.mkDerivation (self: { buildDepends = [ aeson cmdargs filepath haskellSrcExts mtl strict syb yaml ]; + testDepends = [ + aeson cmdargs filepath haskellSrcExts HUnit mtl syb testFramework + testFrameworkHunit yaml + ]; meta = { homepage = "https://github.com/jaspervdj/stylish-haskell"; description = "Haskell code prettifier"; diff --git a/pkgs/development/libraries/haskell/tagstream-conduit/default.nix b/pkgs/development/libraries/haskell/tagstream-conduit/default.nix index 38f4375becd..1b290bd310b 100644 --- a/pkgs/development/libraries/haskell/tagstream-conduit/default.nix +++ b/pkgs/development/libraries/haskell/tagstream-conduit/default.nix @@ -1,5 +1,6 @@ { cabal, attoparsec, attoparsecConduit, blazeBuilder -, blazeBuilderConduit, caseInsensitive, conduit, text, transformers +, blazeBuilderConduit, caseInsensitive, conduit, hspec, HUnit +, QuickCheck, text, transformers }: cabal.mkDerivation (self: { @@ -10,6 +11,7 @@ cabal.mkDerivation (self: { attoparsec attoparsecConduit blazeBuilder blazeBuilderConduit caseInsensitive conduit text transformers ]; + testDepends = [ conduit hspec HUnit QuickCheck text ]; meta = { homepage = "http://github.com/yihuang/tagstream-conduit"; description = "streamlined html tag parser"; diff --git a/pkgs/development/libraries/haskell/text/0.11.1.13.nix b/pkgs/development/libraries/haskell/text/0.11.1.13.nix index edf109a79cf..aaf278a0a69 100644 --- a/pkgs/development/libraries/haskell/text/0.11.1.13.nix +++ b/pkgs/development/libraries/haskell/text/0.11.1.13.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq }: +{ cabal, deepseq, HUnit, QuickCheck, random, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "text"; version = "0.11.1.13"; sha256 = "0lbc4yfqpydps0rd1qjymnnhp87sl9w7n1f5vd5lsixby93zjv2f"; buildDepends = [ deepseq ]; + testDepends = [ + deepseq HUnit QuickCheck random testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.0.nix b/pkgs/development/libraries/haskell/text/0.11.2.0.nix index 213464f3f19..870438ea31f 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.0.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.0.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq }: +{ cabal, deepseq, HUnit, QuickCheck, random, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "text"; version = "0.11.2.0"; sha256 = "1fx5302m41awzbms410x3gcixsck36rl7i1ma7pz6l5d1pmi538p"; buildDepends = [ deepseq ]; + testDepends = [ + deepseq HUnit QuickCheck random testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.3.nix b/pkgs/development/libraries/haskell/text/0.11.2.3.nix index e1f0c6ea72d..a7089c94cfb 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.3.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.3.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq }: +{ cabal, deepseq, HUnit, QuickCheck, random, testFramework +, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "text"; version = "0.11.2.3"; sha256 = "0jrl3qbi91gkcnws9crsa59jsmmbjy91fwvl07qka9m48nq3f9rm"; buildDepends = [ deepseq ]; + testDepends = [ + deepseq HUnit QuickCheck random testFramework testFrameworkHunit + testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/threads/default.nix b/pkgs/development/libraries/haskell/threads/default.nix index 8f5008032f6..a3327e88ba6 100644 --- a/pkgs/development/libraries/haskell/threads/default.nix +++ b/pkgs/development/libraries/haskell/threads/default.nix @@ -1,10 +1,16 @@ -{ cabal, baseUnicodeSymbols, stm }: +{ cabal, baseUnicodeSymbols, concurrentExtra, HUnit, stm +, testFramework, testFrameworkHunit +}: cabal.mkDerivation (self: { pname = "threads"; version = "0.5.0.1"; sha256 = "0amyaxa70q6v021nab6v3cfqc40mwj5dr2fwla9d4bm6ppmq6lyy"; buildDepends = [ baseUnicodeSymbols stm ]; + testDepends = [ + baseUnicodeSymbols concurrentExtra HUnit stm testFramework + testFrameworkHunit + ]; meta = { homepage = "https://github.com/basvandijk/threads"; description = "Fork threads and wait for their result"; diff --git a/pkgs/development/libraries/haskell/time/1.4.0.2.nix b/pkgs/development/libraries/haskell/time/1.4.0.2.nix index ce429c8d602..62232d1aa5a 100644 --- a/pkgs/development/libraries/haskell/time/1.4.0.2.nix +++ b/pkgs/development/libraries/haskell/time/1.4.0.2.nix @@ -1,10 +1,15 @@ -{ cabal, deepseq }: +{ cabal, Cabal, deepseq, QuickCheck, testFramework +, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "time"; version = "1.4.0.2"; sha256 = "0p4ncankr9968lp4fnbq6pc5xwv2198gxhbds656da9jbv74w7j8"; buildDepends = [ deepseq ]; + testDepends = [ + Cabal deepseq QuickCheck testFramework testFrameworkQuickcheck2 + ]; meta = { homepage = "http://semantic.org/TimeLib/"; description = "A time library"; diff --git a/pkgs/development/libraries/haskell/tls/default.nix b/pkgs/development/libraries/haskell/tls/default.nix index af7b4c57bb7..a935b8ad4d5 100644 --- a/pkgs/development/libraries/haskell/tls/default.nix +++ b/pkgs/development/libraries/haskell/tls/default.nix @@ -1,5 +1,6 @@ -{ cabal, cereal, certificate, cryptohash, cryptoPubkey -, cryptoRandomApi, mtl, network +{ cabal, cereal, certificate, cprngAes, cryptohash, cryptoPubkey +, cryptoRandomApi, mtl, network, QuickCheck, testFramework +, testFrameworkQuickcheck2, time }: cabal.mkDerivation (self: { @@ -10,6 +11,10 @@ cabal.mkDerivation (self: { cereal certificate cryptohash cryptoPubkey cryptoRandomApi mtl network ]; + testDepends = [ + cereal certificate cprngAes cryptoPubkey cryptoRandomApi mtl + QuickCheck testFramework testFrameworkQuickcheck2 time + ]; meta = { homepage = "http://github.com/vincenthz/hs-tls"; description = "TLS/SSL protocol native implementation (Server and Client)"; diff --git a/pkgs/development/libraries/haskell/unix-time/default.nix b/pkgs/development/libraries/haskell/unix-time/default.nix index 24edaf80626..ddb24e46f4d 100644 --- a/pkgs/development/libraries/haskell/unix-time/default.nix +++ b/pkgs/development/libraries/haskell/unix-time/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, doctest, hspec, QuickCheck, time }: cabal.mkDerivation (self: { pname = "unix-time"; version = "0.1.5"; sha256 = "13xks5kshr51mbs112j8vvhirzhbi3fq6zjw7l4z2iwn8chh4hwg"; + testDepends = [ doctest hspec QuickCheck time ]; meta = { description = "Unix time parser/formatter and utilities"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/unordered-containers/default.nix b/pkgs/development/libraries/haskell/unordered-containers/default.nix index 786eb59ec10..2f786eba949 100644 --- a/pkgs/development/libraries/haskell/unordered-containers/default.nix +++ b/pkgs/development/libraries/haskell/unordered-containers/default.nix @@ -1,10 +1,16 @@ -{ cabal, deepseq, hashable }: +{ cabal, ChasingBottoms, deepseq, hashable, HUnit, QuickCheck +, testFramework, testFrameworkHunit, testFrameworkQuickcheck2 +}: cabal.mkDerivation (self: { pname = "unordered-containers"; version = "0.2.3.0"; sha256 = "1vzgjr9jxdkmgq970ng9zi2j60awvx8iv1v6kzjlrkwzxx1a9dpd"; buildDepends = [ deepseq hashable ]; + testDepends = [ + ChasingBottoms hashable HUnit QuickCheck testFramework + testFrameworkHunit testFrameworkQuickcheck2 + ]; meta = { homepage = "https://github.com/tibbe/unordered-containers"; description = "Efficient hashing-based container types"; diff --git a/pkgs/development/libraries/haskell/utility-ht/default.nix b/pkgs/development/libraries/haskell/utility-ht/default.nix index 93b4cc1480e..c921b4198ed 100644 --- a/pkgs/development/libraries/haskell/utility-ht/default.nix +++ b/pkgs/development/libraries/haskell/utility-ht/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, QuickCheck }: cabal.mkDerivation (self: { pname = "utility-ht"; version = "0.0.8"; sha256 = "02sm1xj5xa65hpkvl2yk89d9dlg3c2ap8qcviq9zj10asmsbzyd8"; + testDepends = [ QuickCheck ]; meta = { description = "Various small helper functions for Lists, Maybes, Tuples, Functions"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/uuid/default.nix b/pkgs/development/libraries/haskell/uuid/default.nix index 5b939ccb6cc..55ac6cf9e68 100644 --- a/pkgs/development/libraries/haskell/uuid/default.nix +++ b/pkgs/development/libraries/haskell/uuid/default.nix @@ -1,10 +1,15 @@ -{ cabal, binary, cryptohash, maccatcher, random, time }: +{ cabal, binary, criterion, cryptohash, deepseq, HUnit, maccatcher +, mersenneRandomPure64, QuickCheck, random, time +}: cabal.mkDerivation (self: { pname = "uuid"; version = "1.2.9"; sha256 = "088wbhf21w91774icddbm3a8p8jikwjqgg8zdad0pdv8zbi7flsi"; buildDepends = [ binary cryptohash maccatcher random time ]; + testDepends = [ + criterion deepseq HUnit mersenneRandomPure64 QuickCheck random + ]; meta = { homepage = "http://projects.haskell.org/uuid/"; description = "For creating, comparing, parsing and printing Universally Unique Identifiers"; diff --git a/pkgs/development/libraries/haskell/vty/default.nix b/pkgs/development/libraries/haskell/vty/default.nix index e475ca7e856..9adc35b1bdf 100644 --- a/pkgs/development/libraries/haskell/vty/default.nix +++ b/pkgs/development/libraries/haskell/vty/default.nix @@ -1,5 +1,5 @@ -{ cabal, deepseq, mtl, parallel, parsec, stringQq, terminfo -, utf8String, vector +{ cabal, Cabal, deepseq, mtl, parallel, parsec, QuickCheck, random +, stringQq, terminfo, utf8String, vector }: cabal.mkDerivation (self: { @@ -11,6 +11,10 @@ cabal.mkDerivation (self: { buildDepends = [ deepseq mtl parallel parsec stringQq terminfo utf8String vector ]; + testDepends = [ + Cabal deepseq mtl parallel parsec QuickCheck random terminfo + utf8String vector + ]; meta = { homepage = "https://github.com/coreyoconnor/vty"; description = "A simple terminal UI library"; diff --git a/pkgs/development/libraries/haskell/wai-app-static/default.nix b/pkgs/development/libraries/haskell/wai-app-static/default.nix index 36ec82d88c3..7feed2df4bc 100644 --- a/pkgs/development/libraries/haskell/wai-app-static/default.nix +++ b/pkgs/development/libraries/haskell/wai-app-static/default.nix @@ -1,7 +1,7 @@ { cabal, base64Bytestring, blazeBuilder, blazeHtml, blazeMarkup -, cereal, cryptoConduit, cryptohash, fileEmbed, httpDate, httpTypes -, mimeTypes, systemFileio, systemFilepath, text, time, transformers -, unixCompat, wai +, cereal, cryptoConduit, cryptohash, fileEmbed, hspec, httpDate +, httpTypes, mimeTypes, network, systemFileio, systemFilepath, text +, time, transformers, unixCompat, wai, waiTest }: cabal.mkDerivation (self: { @@ -13,6 +13,10 @@ cabal.mkDerivation (self: { cryptoConduit cryptohash fileEmbed httpDate httpTypes mimeTypes systemFileio systemFilepath text time transformers unixCompat wai ]; + testDepends = [ + hspec httpDate httpTypes mimeTypes network text time transformers + unixCompat wai waiTest + ]; meta = { homepage = "http://www.yesodweb.com/book/web-application-interface"; description = "WAI application for static serving"; diff --git a/pkgs/development/libraries/haskell/wai-extra/default.nix b/pkgs/development/libraries/haskell/wai-extra/default.nix index 7a4e18b3295..53a1ccaf55a 100644 --- a/pkgs/development/libraries/haskell/wai-extra/default.nix +++ b/pkgs/development/libraries/haskell/wai-extra/default.nix @@ -1,7 +1,8 @@ { cabal, ansiTerminal, blazeBuilder, blazeBuilderConduit , caseInsensitive, conduit, dataDefault, dateCache, fastLogger -, httpTypes, network, resourcet, stringsearch, text, time -, transformers, void, wai, waiLogger, zlibConduit +, hspec, httpTypes, HUnit, network, resourcet, stringsearch, text +, time, transformers, void, wai, waiLogger, waiTest, zlib +, zlibBindings, zlibConduit }: cabal.mkDerivation (self: { @@ -14,6 +15,10 @@ cabal.mkDerivation (self: { resourcet stringsearch text time transformers void wai waiLogger zlibConduit ]; + testDepends = [ + blazeBuilder conduit dataDefault fastLogger hspec httpTypes HUnit + text transformers wai waiTest zlib zlibBindings + ]; meta = { homepage = "http://github.com/yesodweb/wai"; description = "Provides some basic WAI handlers and middleware"; diff --git a/pkgs/development/libraries/haskell/warp/default.nix b/pkgs/development/libraries/haskell/warp/default.nix index 290e60ff3b7..d924d4f38b0 100644 --- a/pkgs/development/libraries/haskell/warp/default.nix +++ b/pkgs/development/libraries/haskell/warp/default.nix @@ -1,6 +1,7 @@ { cabal, blazeBuilder, blazeBuilderConduit, caseInsensitive -, conduit, hashable, httpTypes, liftedBase, network, networkConduit -, simpleSendfile, transformers, unixCompat, void, wai +, conduit, hashable, hspec, httpTypes, HUnit, liftedBase, network +, networkConduit, QuickCheck, simpleSendfile, transformers +, unixCompat, void, wai }: cabal.mkDerivation (self: { @@ -12,6 +13,11 @@ cabal.mkDerivation (self: { httpTypes liftedBase network networkConduit simpleSendfile transformers unixCompat void wai ]; + testDepends = [ + blazeBuilder blazeBuilderConduit caseInsensitive conduit hashable + hspec httpTypes HUnit liftedBase network networkConduit QuickCheck + simpleSendfile transformers unixCompat void wai + ]; meta = { homepage = "http://github.com/yesodweb/wai"; description = "A fast, light-weight web server for WAI applications"; diff --git a/pkgs/development/libraries/haskell/word8/default.nix b/pkgs/development/libraries/haskell/word8/default.nix index 4b05c0b70d0..e8abded2438 100644 --- a/pkgs/development/libraries/haskell/word8/default.nix +++ b/pkgs/development/libraries/haskell/word8/default.nix @@ -1,9 +1,10 @@ -{ cabal }: +{ cabal, hspec }: cabal.mkDerivation (self: { pname = "word8"; version = "0.0.3"; sha256 = "1k5sq91pidgw7w8fc62k9gl8iynb65pcza6mjx8pa3n2lslp7125"; + testDepends = [ hspec ]; meta = { description = "Word8 library"; license = self.stdenv.lib.licenses.bsd3; diff --git a/pkgs/development/libraries/haskell/xml-conduit/default.nix b/pkgs/development/libraries/haskell/xml-conduit/default.nix index 39bcc63248e..7ebc0b003e5 100644 --- a/pkgs/development/libraries/haskell/xml-conduit/default.nix +++ b/pkgs/development/libraries/haskell/xml-conduit/default.nix @@ -1,7 +1,7 @@ { cabal, attoparsec, attoparsecConduit, blazeBuilder , blazeBuilderConduit, blazeHtml, blazeMarkup, conduit, dataDefault -, failure, monadControl, resourcet, systemFilepath, text -, transformers, xmlTypes +, failure, hspec, HUnit, monadControl, resourcet, systemFilepath +, text, transformers, xmlTypes }: cabal.mkDerivation (self: { @@ -13,6 +13,9 @@ cabal.mkDerivation (self: { blazeHtml blazeMarkup conduit dataDefault failure monadControl resourcet systemFilepath text transformers xmlTypes ]; + testDepends = [ + blazeMarkup conduit hspec HUnit text transformers xmlTypes + ]; meta = { homepage = "http://github.com/snoyberg/xml"; description = "Pure-Haskell utilities for dealing with XML with the conduit package"; diff --git a/pkgs/development/libraries/haskell/xml-hamlet/default.nix b/pkgs/development/libraries/haskell/xml-hamlet/default.nix index 1be00fa0c0f..9c85223d654 100644 --- a/pkgs/development/libraries/haskell/xml-hamlet/default.nix +++ b/pkgs/development/libraries/haskell/xml-hamlet/default.nix @@ -1,10 +1,11 @@ -{ cabal, parsec, shakespeare, text, xmlConduit }: +{ cabal, hspec, HUnit, parsec, shakespeare, text, xmlConduit }: cabal.mkDerivation (self: { pname = "xml-hamlet"; version = "0.4.0.4"; sha256 = "1s4s5z1xir9zmcbfz8mrznf2byclmg0qjjhwmpal2r9ly9g3na98"; buildDepends = [ parsec shakespeare text xmlConduit ]; + testDepends = [ hspec HUnit parsec shakespeare text xmlConduit ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Hamlet-style quasiquoter for XML content"; diff --git a/pkgs/development/libraries/haskell/xss-sanitize/default.nix b/pkgs/development/libraries/haskell/xss-sanitize/default.nix index f592568cb32..89bdab65b17 100644 --- a/pkgs/development/libraries/haskell/xss-sanitize/default.nix +++ b/pkgs/development/libraries/haskell/xss-sanitize/default.nix @@ -1,4 +1,6 @@ -{ cabal, attoparsec, cssText, network, tagsoup, text, utf8String }: +{ cabal, attoparsec, cssText, hspec, HUnit, network, tagsoup, text +, utf8String +}: cabal.mkDerivation (self: { pname = "xss-sanitize"; @@ -7,6 +9,9 @@ cabal.mkDerivation (self: { buildDepends = [ attoparsec cssText network tagsoup text utf8String ]; + testDepends = [ + attoparsec cssText hspec HUnit network tagsoup text utf8String + ]; meta = { homepage = "http://github.com/yesodweb/haskell-xss-sanitize"; description = "sanitize untrusted HTML to prevent XSS attacks"; diff --git a/pkgs/development/libraries/haskell/yaml/default.nix b/pkgs/development/libraries/haskell/yaml/default.nix index 9641cef56aa..f1cbb7ee7b8 100644 --- a/pkgs/development/libraries/haskell/yaml/default.nix +++ b/pkgs/development/libraries/haskell/yaml/default.nix @@ -1,5 +1,5 @@ -{ cabal, aeson, attoparsec, conduit, resourcet, text, transformers -, unorderedContainers, vector +{ cabal, aeson, attoparsec, conduit, hspec, HUnit, resourcet, text +, transformers, unorderedContainers, vector }: cabal.mkDerivation (self: { @@ -10,6 +10,9 @@ cabal.mkDerivation (self: { aeson attoparsec conduit resourcet text transformers unorderedContainers vector ]; + testDepends = [ + conduit hspec HUnit text transformers unorderedContainers + ]; meta = { homepage = "http://github.com/snoyberg/yaml/"; description = "Support for parsing and rendering YAML documents"; diff --git a/pkgs/development/libraries/haskell/yesod-core/default.nix b/pkgs/development/libraries/haskell/yesod-core/default.nix index e2a36c2f184..a25916316de 100644 --- a/pkgs/development/libraries/haskell/yesod-core/default.nix +++ b/pkgs/development/libraries/haskell/yesod-core/default.nix @@ -1,10 +1,10 @@ { cabal, aeson, blazeBuilder, blazeHtml, blazeMarkup , caseInsensitive, cereal, clientsession, conduit, cookie, failure -, fastLogger, hamlet, httpTypes, liftedBase, monadControl -, monadLogger, parsec, pathPieces, random, resourcet, shakespeare -, shakespeareCss, shakespeareI18n, shakespeareJs, text, time -, transformers, transformersBase, vector, wai, waiExtra -, yesodRoutes +, fastLogger, hamlet, hspec, httpTypes, HUnit, liftedBase +, monadControl, monadLogger, parsec, pathPieces, QuickCheck, random +, resourcet, shakespeare, shakespeareCss, shakespeareI18n +, shakespeareJs, text, time, transformers, transformersBase, vector +, wai, waiExtra, waiTest, yesodRoutes }: cabal.mkDerivation (self: { @@ -19,6 +19,10 @@ cabal.mkDerivation (self: { text time transformers transformersBase vector wai waiExtra yesodRoutes ]; + testDepends = [ + blazeBuilder conduit hamlet hspec httpTypes HUnit QuickCheck random + shakespeareCss shakespeareJs text transformers wai waiTest + ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Creation of type-safe, RESTful web applications"; diff --git a/pkgs/development/libraries/haskell/yesod-form/default.nix b/pkgs/development/libraries/haskell/yesod-form/default.nix index d853e217a7f..adf11916b90 100644 --- a/pkgs/development/libraries/haskell/yesod-form/default.nix +++ b/pkgs/development/libraries/haskell/yesod-form/default.nix @@ -1,5 +1,5 @@ { cabal, aeson, attoparsec, blazeBuilder, blazeHtml, blazeMarkup -, cryptoApi, dataDefault, emailValidate, hamlet, network +, cryptoApi, dataDefault, emailValidate, hamlet, hspec, network , persistent, shakespeareCss, shakespeareJs, text, time , transformers, wai, xssSanitize, yesodCore, yesodPersistent }: @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { shakespeareJs text time transformers wai xssSanitize yesodCore yesodPersistent ]; + testDepends = [ hspec text time ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Form handling support for Yesod Web Framework"; diff --git a/pkgs/development/libraries/haskell/yesod-routes/default.nix b/pkgs/development/libraries/haskell/yesod-routes/default.nix index c1dd27e377d..0ebfeb92bf1 100644 --- a/pkgs/development/libraries/haskell/yesod-routes/default.nix +++ b/pkgs/development/libraries/haskell/yesod-routes/default.nix @@ -1,10 +1,11 @@ -{ cabal, pathPieces, text, vector }: +{ cabal, hspec, HUnit, pathPieces, text, vector }: cabal.mkDerivation (self: { pname = "yesod-routes"; version = "1.1.2"; sha256 = "17yv2z7k1s958xyn552wpk0cwpivsnkvia8477yhgbp4n2d1i5jv"; buildDepends = [ pathPieces text vector ]; + testDepends = [ hspec HUnit pathPieces text ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Efficient routing for Yesod"; diff --git a/pkgs/development/libraries/haskell/yesod-static/default.nix b/pkgs/development/libraries/haskell/yesod-static/default.nix index a661a83c731..a7e90de2990 100644 --- a/pkgs/development/libraries/haskell/yesod-static/default.nix +++ b/pkgs/development/libraries/haskell/yesod-static/default.nix @@ -1,5 +1,5 @@ { cabal, base64Bytestring, cereal, conduit, cryptoConduit -, cryptohash, fileEmbed, httpTypes, systemFilepath, text +, cryptohash, fileEmbed, hspec, httpTypes, systemFilepath, text , transformers, unixCompat, wai, waiAppStatic, yesodCore }: @@ -12,6 +12,11 @@ cabal.mkDerivation (self: { httpTypes systemFilepath text transformers unixCompat wai waiAppStatic yesodCore ]; + testDepends = [ + base64Bytestring cereal conduit cryptoConduit cryptohash fileEmbed + hspec httpTypes systemFilepath text transformers unixCompat wai + waiAppStatic yesodCore + ]; meta = { homepage = "http://www.yesodweb.com/"; description = "Static file serving subsite for Yesod Web Framework"; diff --git a/pkgs/development/libraries/haskell/yesod-test/default.nix b/pkgs/development/libraries/haskell/yesod-test/default.nix index b11c88534b2..3753067d958 100644 --- a/pkgs/development/libraries/haskell/yesod-test/default.nix +++ b/pkgs/development/libraries/haskell/yesod-test/default.nix @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { persistent poolConduit text time transformers wai waiTest xmlConduit xmlTypes ]; + testDepends = [ hspec htmlConduit HUnit xmlConduit ]; meta = { homepage = "http://www.yesodweb.com"; description = "integration testing for WAI/Yesod Applications"; diff --git a/pkgs/development/libraries/haskell/zeromq-haskell/default.nix b/pkgs/development/libraries/haskell/zeromq-haskell/default.nix index f5166f0f1f0..20d414ac6b1 100644 --- a/pkgs/development/libraries/haskell/zeromq-haskell/default.nix +++ b/pkgs/development/libraries/haskell/zeromq-haskell/default.nix @@ -1,9 +1,14 @@ -{ cabal, zeromq }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 +, zeromq +}: cabal.mkDerivation (self: { pname = "zeromq-haskell"; version = "0.8.4"; sha256 = "0lvjszi08r5wm5ch03153y7lir6cdgqr2gnhq45j4b0kid6gkpv3"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; extraLibraries = [ zeromq ]; meta = { homepage = "http://github.com/twittner/zeromq-haskell/"; diff --git a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix index 4db350f93b5..3a3e700cfbb 100644 --- a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix +++ b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix @@ -1,9 +1,14 @@ -{ cabal, zeromq }: +{ cabal, QuickCheck, testFramework, testFrameworkQuickcheck2 +, zeromq +}: cabal.mkDerivation (self: { pname = "zeromq3-haskell"; version = "0.2"; sha256 = "12qljfkcd4l9h3l80jibxgw2an6v782w0sxwvzxqmma29jv6hvky"; + testDepends = [ + QuickCheck testFramework testFrameworkQuickcheck2 + ]; extraLibraries = [ zeromq ]; meta = { homepage = "http://github.com/twittner/zeromq-haskell/"; diff --git a/pkgs/development/libraries/haskell/zip-archive/default.nix b/pkgs/development/libraries/haskell/zip-archive/default.nix index 300de9df4c9..6bbe2844612 100644 --- a/pkgs/development/libraries/haskell/zip-archive/default.nix +++ b/pkgs/development/libraries/haskell/zip-archive/default.nix @@ -1,4 +1,6 @@ -{ cabal, binary, digest, filepath, mtl, time, utf8String, zlib }: +{ cabal, binary, digest, filepath, HUnit, mtl, time, utf8String +, zlib +}: cabal.mkDerivation (self: { pname = "zip-archive"; @@ -7,6 +9,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ binary digest filepath mtl time utf8String zlib ]; + testDepends = [ HUnit time ]; meta = { homepage = "http://github.com/jgm/zip-archive"; description = "Library for creating and modifying zip archives"; diff --git a/pkgs/development/libraries/haskell/zlib-bindings/default.nix b/pkgs/development/libraries/haskell/zlib-bindings/default.nix index d2c3a838adf..f69be8ae99e 100644 --- a/pkgs/development/libraries/haskell/zlib-bindings/default.nix +++ b/pkgs/development/libraries/haskell/zlib-bindings/default.nix @@ -1,10 +1,11 @@ -{ cabal, zlib }: +{ cabal, hspec, QuickCheck, zlib }: cabal.mkDerivation (self: { pname = "zlib-bindings"; version = "0.1.1.3"; sha256 = "18jhav7chbapakm9mwn7bn9lgvip7qaz61dw5gwv2nyalvm96qfr"; buildDepends = [ zlib ]; + testDepends = [ hspec QuickCheck zlib ]; meta = { homepage = "http://github.com/snoyberg/zlib-bindings"; description = "Low-level bindings to the zlib package"; diff --git a/pkgs/development/libraries/haskell/zlib-conduit/default.nix b/pkgs/development/libraries/haskell/zlib-conduit/default.nix index cf62afc6c01..b283c496a29 100644 --- a/pkgs/development/libraries/haskell/zlib-conduit/default.nix +++ b/pkgs/development/libraries/haskell/zlib-conduit/default.nix @@ -1,10 +1,13 @@ -{ cabal, conduit, transformers, void, zlibBindings }: +{ cabal, conduit, hspec, QuickCheck, resourcet, transformers, void +, zlibBindings +}: cabal.mkDerivation (self: { pname = "zlib-conduit"; version = "1.0.0"; sha256 = "0q0l4qw1f2cwjj71n4i082ba47x1xba695q8xk0ky2vw5s8cg0bv"; buildDepends = [ conduit transformers void zlibBindings ]; + testDepends = [ conduit hspec QuickCheck resourcet transformers ]; meta = { homepage = "http://github.com/snoyberg/conduit"; description = "Streaming compression/decompression via conduits"; diff --git a/pkgs/development/tools/documentation/haddock/2.10.0.nix b/pkgs/development/tools/documentation/haddock/2.10.0.nix index 5c608c440aa..8f16c6c65c4 100644 --- a/pkgs/development/tools/documentation/haddock/2.10.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.10.0.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.11.0.nix b/pkgs/development/tools/documentation/haddock/2.11.0.nix index 92dccbf05a6..32b3a5ec8b5 100644 --- a/pkgs/development/tools/documentation/haddock/2.11.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.11.0.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.12.0.nix b/pkgs/development/tools/documentation/haddock/2.12.0.nix index 39610f9a08c..b1228dab18a 100644 --- a/pkgs/development/tools/documentation/haddock/2.12.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.12.0.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.13.1.nix b/pkgs/development/tools/documentation/haddock/2.13.1.nix index 1eed852f537..5b6ddfc1610 100644 --- a/pkgs/development/tools/documentation/haddock/2.13.1.nix +++ b/pkgs/development/tools/documentation/haddock/2.13.1.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; diff --git a/pkgs/development/tools/documentation/haddock/2.9.4.nix b/pkgs/development/tools/documentation/haddock/2.9.4.nix index 15ed35f5758..2a29ee950a8 100644 --- a/pkgs/development/tools/documentation/haddock/2.9.4.nix +++ b/pkgs/development/tools/documentation/haddock/2.9.4.nix @@ -1,4 +1,5 @@ -{ cabal, alex, Cabal, filepath, ghcPaths, happy, xhtml }: +{ cabal, alex, Cabal, filepath, ghcPaths, happy, regexCompat, xhtml +}: cabal.mkDerivation (self: { pname = "haddock"; @@ -7,6 +8,7 @@ cabal.mkDerivation (self: { isLibrary = true; isExecutable = true; buildDepends = [ Cabal filepath ghcPaths xhtml ]; + testDepends = [ Cabal filepath regexCompat ]; buildTools = [ alex happy ]; meta = { homepage = "http://www.haskell.org/haddock/"; From 8be18988ee7601fd434fb7d81867e95dbc9df794 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:09:56 +0100 Subject: [PATCH 228/572] haskell-base-compat: add version 0.2.1 --- .../libraries/haskell/base-compat/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/base-compat/default.nix diff --git a/pkgs/development/libraries/haskell/base-compat/default.nix b/pkgs/development/libraries/haskell/base-compat/default.nix new file mode 100644 index 00000000000..ca208b7c1a3 --- /dev/null +++ b/pkgs/development/libraries/haskell/base-compat/default.nix @@ -0,0 +1,13 @@ +{ cabal, hspec, setenv }: + +cabal.mkDerivation (self: { + pname = "base-compat"; + version = "0.2.1"; + sha256 = "1yssx3nww89dmkw8i55bp1vinbczbxhhh0kh4f3b9fyw5ylnai43"; + testDepends = [ hspec setenv ]; + meta = { + description = "A compatibility layer for base"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 4f3cd1b5363..fbb8b94396d 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -485,6 +485,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); base64Conduit = callPackage ../development/libraries/haskell/base64-conduit {}; + baseCompat = callPackage ../development/libraries/haskell/base-compat {}; + baseUnicodeSymbols = callPackage ../development/libraries/haskell/base-unicode-symbols {}; basicPrelude = callPackage ../development/libraries/haskell/basic-prelude {}; From 6d910bf7255150b1dc2184930c6b2a337dda5546 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:08 +0100 Subject: [PATCH 229/572] haskell-ChasingBottoms: add version 1.3.0.5 --- .../libraries/haskell/ChasingBottoms/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/ChasingBottoms/default.nix diff --git a/pkgs/development/libraries/haskell/ChasingBottoms/default.nix b/pkgs/development/libraries/haskell/ChasingBottoms/default.nix new file mode 100644 index 00000000000..48231a1b6d2 --- /dev/null +++ b/pkgs/development/libraries/haskell/ChasingBottoms/default.nix @@ -0,0 +1,15 @@ +{ cabal, mtl, QuickCheck, random, syb }: + +cabal.mkDerivation (self: { + pname = "ChasingBottoms"; + version = "1.3.0.5"; + sha256 = "0g3c52c8gpm0xlnxxdgazz0f7zpnjvdx5vffsv1zr3vcn3kp1xy0"; + isLibrary = true; + isExecutable = true; + buildDepends = [ mtl QuickCheck random syb ]; + meta = { + description = "For testing partial and infinite values"; + license = "unknown"; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index fbb8b94396d..efd401f3764 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -582,6 +582,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); Chart = callPackage ../development/libraries/haskell/Chart {}; + ChasingBottoms = callPackage ../development/libraries/haskell/ChasingBottoms {}; + citeprocHs = callPackage ../development/libraries/haskell/citeproc-hs {}; cipherAes = callPackage ../development/libraries/haskell/cipher-aes {}; From 1c50ed9441fa9639941d9be871667ef1f0198398 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:20 +0100 Subject: [PATCH 230/572] haskell-concurrent-extra: add version 0.7.0.5 --- .../haskell/concurrent-extra/default.nix | 20 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/development/libraries/haskell/concurrent-extra/default.nix diff --git a/pkgs/development/libraries/haskell/concurrent-extra/default.nix b/pkgs/development/libraries/haskell/concurrent-extra/default.nix new file mode 100644 index 00000000000..db380f03b5b --- /dev/null +++ b/pkgs/development/libraries/haskell/concurrent-extra/default.nix @@ -0,0 +1,20 @@ +{ cabal, baseUnicodeSymbols, HUnit, stm, testFramework +, testFrameworkHunit, unboundedDelays +}: + +cabal.mkDerivation (self: { + pname = "concurrent-extra"; + version = "0.7.0.5"; + sha256 = "0g1ckrwgdyrlp1m352ivplajqzqhw5ymlkb4miiv7c5i9xyyyqnc"; + buildDepends = [ baseUnicodeSymbols stm unboundedDelays ]; + testDepends = [ + baseUnicodeSymbols HUnit stm testFramework testFrameworkHunit + unboundedDelays + ]; + meta = { + homepage = "https://github.com/basvandijk/concurrent-extra"; + description = "Extra concurrency primitives"; + 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 efd401f3764..69f2f4cecef 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -624,6 +624,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); contravariant = callPackage ../development/libraries/haskell/contravariant {}; + concurrentExtra = callPackage ../development/libraries/haskell/concurrent-extra {}; + converge = callPackage ../development/libraries/haskell/converge {}; cookie = callPackage ../development/libraries/haskell/cookie {}; From 258fafaaf5ca3ba7cc7d0f5b55a14ddb22119adb Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:30 +0100 Subject: [PATCH 231/572] haskell-data-accessor-transformers: add version 0.2.1.4 --- .../data-accessor/data-accessor-transformers.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix diff --git a/pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix b/pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix new file mode 100644 index 00000000000..83712b858c2 --- /dev/null +++ b/pkgs/development/libraries/haskell/data-accessor/data-accessor-transformers.nix @@ -0,0 +1,14 @@ +{ cabal, dataAccessor, transformers }: + +cabal.mkDerivation (self: { + pname = "data-accessor-transformers"; + version = "0.2.1.4"; + sha256 = "1bf1j8g5q81zw51bri89hj3i9jnlmhdggw8rhw3n2v103399pf7d"; + buildDepends = [ dataAccessor transformers ]; + meta = { + homepage = "http://www.haskell.org/haskellwiki/Record_access"; + description = "Use Accessor to access state in transformers State monad"; + 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 69f2f4cecef..cd4d09095ea 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -668,6 +668,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); dataAccessorTemplate = callPackage ../development/libraries/haskell/data-accessor/data-accessor-template.nix {}; + dataAccessorTransformers = callPackage ../development/libraries/haskell/data-accessor/data-accessor-transformers.nix {}; + dataBinaryIeee754 = callPackage ../development/libraries/haskell/data-binary-ieee754 {}; dataDefault = callPackage ../development/libraries/haskell/data-default {}; From 45e9ea0424813a088410a9334c3a8d4f75841fc3 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:41 +0100 Subject: [PATCH 232/572] haskell-encoding: add version 0.6.7.2 --- .../libraries/haskell/encoding/default.nix | 16 ++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/development/libraries/haskell/encoding/default.nix diff --git a/pkgs/development/libraries/haskell/encoding/default.nix b/pkgs/development/libraries/haskell/encoding/default.nix new file mode 100644 index 00000000000..1b7ef1bcd1d --- /dev/null +++ b/pkgs/development/libraries/haskell/encoding/default.nix @@ -0,0 +1,16 @@ +{ cabal, binary, extensibleExceptions, HaXml, mtl, regexCompat }: + +cabal.mkDerivation (self: { + pname = "encoding"; + version = "0.6.7.2"; + sha256 = "0b1z5824vdkcc51bd1vgcbaniw3fv9dmd5qczjc89b5lhrl7qq0d"; + buildDepends = [ + binary extensibleExceptions HaXml mtl regexCompat + ]; + meta = { + homepage = "http://code.haskell.org/encoding/"; + description = "A library for various character encodings"; + 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 cd4d09095ea..68d7d4cee23 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -769,6 +769,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); emailValidate = callPackage ../development/libraries/haskell/email-validate {}; + encoding = callPackage ../development/libraries/haskell/encoding {}; + enumerator = callPackage ../development/libraries/haskell/enumerator {}; entropy = callPackage ../development/libraries/haskell/entropy {}; From 442342e34ea35c012720670ed12aeba7363c2777 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:10:49 +0100 Subject: [PATCH 233/572] haskell-file-location: add version 0.4.5.2 --- .../libraries/haskell/file-location/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/file-location/default.nix diff --git a/pkgs/development/libraries/haskell/file-location/default.nix b/pkgs/development/libraries/haskell/file-location/default.nix new file mode 100644 index 00000000000..8a28d0b27fb --- /dev/null +++ b/pkgs/development/libraries/haskell/file-location/default.nix @@ -0,0 +1,15 @@ +{ cabal, liftedBase, transformers }: + +cabal.mkDerivation (self: { + pname = "file-location"; + version = "0.4.5.2"; + sha256 = "0dyzf2lhh0n4hwbh44qfh6bw9snl4hha9sv76c4ndi7v1rvnx197"; + buildDepends = [ liftedBase transformers ]; + testDepends = [ liftedBase transformers ]; + meta = { + homepage = "https://github.com/gregwebs/FileLocation.hs"; + description = "common functions that show file location information"; + 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 68d7d4cee23..8d9a2d80899 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -792,6 +792,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); filepath_1_3_0_0 = callPackage ../development/libraries/haskell/filepath {}; filepath = null; # a core package in recent GHCs + fileLocation = callPackage ../development/libraries/haskell/file-location {}; + extensibleExceptions_0_1_1_0 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.0.nix {}; extensibleExceptions_0_1_1_2 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.2.nix {}; extensibleExceptions_0_1_1_3 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.3.nix {}; From 7a79bf93d7ac51667a293b22d2c1bff91d877395 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:11:11 +0100 Subject: [PATCH 234/572] haskell-hspec-meta: add version 1.4.4 --- .../libraries/haskell/hspec-meta/default.nix | 22 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/development/libraries/haskell/hspec-meta/default.nix diff --git a/pkgs/development/libraries/haskell/hspec-meta/default.nix b/pkgs/development/libraries/haskell/hspec-meta/default.nix new file mode 100644 index 00000000000..c86db3bf0d7 --- /dev/null +++ b/pkgs/development/libraries/haskell/hspec-meta/default.nix @@ -0,0 +1,22 @@ +{ cabal, ansiTerminal, filepath, hspecExpectations, HUnit +, QuickCheck, setenv, silently, time, transformers +}: + +cabal.mkDerivation (self: { + pname = "hspec-meta"; + version = "1.4.4"; + sha256 = "1p1miiaa38rd92bz695znlwd6wyvs8zpp2idyw5pkzvhqi8w10a1"; + isLibrary = true; + isExecutable = true; + buildDepends = [ + ansiTerminal filepath hspecExpectations HUnit QuickCheck setenv + silently time transformers + ]; + doCheck = false; + meta = { + homepage = "http://hspec.github.com/"; + description = "A version of Hspec which is used to test Hspec itself"; + 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 8d9a2d80899..df71e01d0f2 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1079,6 +1079,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); hspecExpectations = callPackage ../development/libraries/haskell/hspec-expectations {}; + hspecMeta = callPackage ../development/libraries/haskell/hspec-meta {}; + hsyslog = callPackage ../development/libraries/haskell/hsyslog {}; html_1_0_1_2 = callPackage ../development/libraries/haskell/html/1.0.1.2.nix {}; From 8aa90c7642aabafe2968839d69cac52415840c79 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:16 +0100 Subject: [PATCH 235/572] haskell-idna: add version 0.2 --- pkgs/development/libraries/haskell/idna/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/idna/default.nix diff --git a/pkgs/development/libraries/haskell/idna/default.nix b/pkgs/development/libraries/haskell/idna/default.nix new file mode 100644 index 00000000000..1d5bc92bf6f --- /dev/null +++ b/pkgs/development/libraries/haskell/idna/default.nix @@ -0,0 +1,13 @@ +{ cabal, punycode, stringprep, text }: + +cabal.mkDerivation (self: { + pname = "idna"; + version = "0.2"; + sha256 = "0gl1mn2fjyxdpzl024imspf7hk4xvj9r8mvisqnlkdsng8i5jnyz"; + buildDepends = [ punycode stringprep text ]; + meta = { + description = "Implements IDNA (RFC 3490)"; + 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 df71e01d0f2..62036e55e80 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1112,6 +1112,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); hxtUnicode = callPackage ../development/libraries/haskell/hxt-unicode {}; + idna = callPackage ../development/libraries/haskell/idna {}; + IfElse = callPackage ../development/libraries/haskell/IfElse {}; ieee754 = callPackage ../development/libraries/haskell/ieee754 {}; From 4fbd9acbaf115f49342da632af13951c97835364 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:25 +0100 Subject: [PATCH 236/572] haskell-lockfree-queue: add version 0.2 --- .../haskell/lockfree-queue/default.nix | 19 +++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 pkgs/development/libraries/haskell/lockfree-queue/default.nix diff --git a/pkgs/development/libraries/haskell/lockfree-queue/default.nix b/pkgs/development/libraries/haskell/lockfree-queue/default.nix new file mode 100644 index 00000000000..7efe6b25b39 --- /dev/null +++ b/pkgs/development/libraries/haskell/lockfree-queue/default.nix @@ -0,0 +1,19 @@ +{ cabal, abstractDeque, HUnit, IORefCAS, testFramework +, testFrameworkHunit +}: + +cabal.mkDerivation (self: { + pname = "lockfree-queue"; + version = "0.2"; + sha256 = "0m76wjw13nyj2mpz1dv2crg9sk66nlf62qgk2hbsa7ymydkq797c"; + buildDepends = [ abstractDeque IORefCAS ]; + testDepends = [ + abstractDeque HUnit IORefCAS testFramework testFrameworkHunit + ]; + meta = { + homepage = "https://github.com/rrnewton/haskell-lockfree-queue/wiki"; + description = "Michael and Scott lock-free queues"; + 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 62036e55e80..b3686cd2637 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1195,6 +1195,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); ltk = callPackage ../development/libraries/haskell/ltk {}; + lockfreeQueue = callPackage ../development/libraries/haskell/lockfree-queue {}; + logfloat = callPackage ../development/libraries/haskell/logfloat {}; logict = callPackage ../development/libraries/haskell/logict {}; From 9a96a358f09b4be96e419ef7d43f732e369ce4c1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:38 +0100 Subject: [PATCH 237/572] haskell-markdown-unlit: add version 0.2.0.1 --- .../libraries/haskell/markdown-unlit/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/markdown-unlit/default.nix diff --git a/pkgs/development/libraries/haskell/markdown-unlit/default.nix b/pkgs/development/libraries/haskell/markdown-unlit/default.nix new file mode 100644 index 00000000000..06c1b9e2fca --- /dev/null +++ b/pkgs/development/libraries/haskell/markdown-unlit/default.nix @@ -0,0 +1,15 @@ +{ cabal, hspec, QuickCheck, silently, stringbuilder }: + +cabal.mkDerivation (self: { + pname = "markdown-unlit"; + version = "0.2.0.1"; + sha256 = "1bc3vcifv2xcddh8liq380c6sxarrs5pf21pfs9i4dx9rfl3hvhq"; + isLibrary = true; + isExecutable = true; + testDepends = [ hspec QuickCheck silently stringbuilder ]; + meta = { + description = "Literate Haskell support for Markdown"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index b3686cd2637..cbd62d80f24 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1203,6 +1203,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); maccatcher = callPackage ../development/libraries/haskell/maccatcher {}; + markdownUnlit = callPackage ../development/libraries/haskell/markdown-unlit {}; + mathFunctions = callPackage ../development/libraries/haskell/math-functions {}; mainlandPretty = callPackage ../development/libraries/haskell/mainland-pretty {}; From 59117b299b4f08bfb783ee82af02731ba36fddec Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:46 +0100 Subject: [PATCH 238/572] haskell-nanospec: add version 0.1.0 --- .../libraries/haskell/nanospec/default.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/haskell/nanospec/default.nix diff --git a/pkgs/development/libraries/haskell/nanospec/default.nix b/pkgs/development/libraries/haskell/nanospec/default.nix new file mode 100644 index 00000000000..b7f498a35c8 --- /dev/null +++ b/pkgs/development/libraries/haskell/nanospec/default.nix @@ -0,0 +1,14 @@ +{ cabal, hspec, silently }: + +cabal.mkDerivation (self: { + pname = "nanospec"; + version = "0.1.0"; + sha256 = "16qpn199p8nrllg800zryhb8795jgk78znng5fjq1raj8l3snjk0"; + testDepends = [ hspec silently ]; + doCheck = false; + meta = { + description = "A lightweight implementation of a subset of Hspec's API"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index cbd62d80f24..531a81db782 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1290,6 +1290,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); NanoProlog = callPackage ../development/libraries/haskell/NanoProlog {}; + nanospec = callPackage ../development/libraries/haskell/nanospec {}; + nat = callPackage ../development/libraries/haskell/nat {}; nats = callPackage ../development/libraries/haskell/nats {}; From 7937ea533cd19ffd2edc202a5fcf5001ef5334b2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:16:53 +0100 Subject: [PATCH 239/572] haskell-network-transport-tests: add version 0.1.0.1 --- .../haskell/network-transport-tests/default.nix | 14 ++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/development/libraries/haskell/network-transport-tests/default.nix diff --git a/pkgs/development/libraries/haskell/network-transport-tests/default.nix b/pkgs/development/libraries/haskell/network-transport-tests/default.nix new file mode 100644 index 00000000000..7aedea7995b --- /dev/null +++ b/pkgs/development/libraries/haskell/network-transport-tests/default.nix @@ -0,0 +1,14 @@ +{ cabal, ansiTerminal, mtl, networkTransport, random }: + +cabal.mkDerivation (self: { + pname = "network-transport-tests"; + version = "0.1.0.1"; + sha256 = "15vdkjq10mm378iyci1lpj6b77m7sil5mk3yhzf6vcbfj54pwca6"; + buildDepends = [ ansiTerminal mtl networkTransport random ]; + meta = { + homepage = "http://github.com/haskell-distributed/distributed-process"; + description = "Unit tests for Network.Transport implementations"; + 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 531a81db782..1029d47918e 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1323,6 +1323,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); networkTransportTcp = callPackage ../development/libraries/haskell/network-transport-tcp {}; + networkTransportTests = callPackage ../development/libraries/haskell/network-transport-tests {}; + newtype = callPackage ../development/libraries/haskell/newtype {}; nonNegative = callPackage ../development/libraries/haskell/non-negative {}; From 9bdefae7c2ab16bdf9c639daa8c51401aca324ef Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:01 +0100 Subject: [PATCH 240/572] haskell-punycode: add version 2.0 --- .../libraries/haskell/punycode/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/punycode/default.nix diff --git a/pkgs/development/libraries/haskell/punycode/default.nix b/pkgs/development/libraries/haskell/punycode/default.nix new file mode 100644 index 00000000000..ade7685be6e --- /dev/null +++ b/pkgs/development/libraries/haskell/punycode/default.nix @@ -0,0 +1,15 @@ +{ cabal, cereal, encoding, HUnit, mtl, QuickCheck, text }: + +cabal.mkDerivation (self: { + pname = "punycode"; + version = "2.0"; + sha256 = "192jgfixnpxdj6jiiz92kx5bi6ij3c389b76q9f4vyfmvcajj1sr"; + buildDepends = [ cereal mtl text ]; + testDepends = [ cereal encoding HUnit mtl QuickCheck text ]; + meta = { + homepage = "https://github.com/litherum/punycode"; + description = "Encode unicode strings to ascii forms according to RFC 3492"; + 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 1029d47918e..791678ab55c 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1426,6 +1426,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); prettyShow = callPackage ../development/libraries/haskell/pretty-show {}; + punycode = callPackage ../development/libraries/haskell/punycode {}; + primitive_0_4_1 = callPackage ../development/libraries/haskell/primitive/0.4.1.nix {}; primitive_0_5 = callPackage ../development/libraries/haskell/primitive/0.5.nix {}; primitive_0_5_0_1 = callPackage ../development/libraries/haskell/primitive/0.5.0.1.nix {}; From bbb6aa522cc77be27fc541e59b14737ee78db560 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:13 +0100 Subject: [PATCH 241/572] haskell-stringbuilder: add version 0.4.0 --- .../libraries/haskell/stringbuilder/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/stringbuilder/default.nix diff --git a/pkgs/development/libraries/haskell/stringbuilder/default.nix b/pkgs/development/libraries/haskell/stringbuilder/default.nix new file mode 100644 index 00000000000..efe0956afc0 --- /dev/null +++ b/pkgs/development/libraries/haskell/stringbuilder/default.nix @@ -0,0 +1,13 @@ +{ cabal, hspec, QuickCheck }: + +cabal.mkDerivation (self: { + pname = "stringbuilder"; + version = "0.4.0"; + sha256 = "0v0lpb13khpiygfdkyzzsf64anxjykwvjsrkds836whm1bv86lhl"; + testDepends = [ hspec QuickCheck ]; + meta = { + description = "A writer monad for multi-line string literals"; + license = self.stdenv.lib.licenses.mit; + platforms = self.ghc.meta.platforms; + }; +}) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 791678ab55c..1c988362d72 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1677,6 +1677,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); libc = pkgs.stdenv.gcc.libc; }; + stringbuilder = callPackage ../development/libraries/haskell/stringbuilder {}; + symbol = callPackage ../development/libraries/haskell/symbol {}; systemFilepath = callPackage ../development/libraries/haskell/system-filepath {}; From 13f491df4670bc6e7c9189624d002ed9184ef394 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:30 +0100 Subject: [PATCH 242/572] haskell-stringprep: add version 0.1.5 --- .../libraries/haskell/stringprep/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/stringprep/default.nix diff --git a/pkgs/development/libraries/haskell/stringprep/default.nix b/pkgs/development/libraries/haskell/stringprep/default.nix new file mode 100644 index 00000000000..f1654751f75 --- /dev/null +++ b/pkgs/development/libraries/haskell/stringprep/default.nix @@ -0,0 +1,13 @@ +{ cabal, ranges, text, textIcu }: + +cabal.mkDerivation (self: { + pname = "stringprep"; + version = "0.1.5"; + sha256 = "1a25b18kd1zx06gi677g3xvsm49izhhf26z2dfljkjfykf05kqmp"; + buildDepends = [ ranges text textIcu ]; + meta = { + description = "Implements the \"StringPrep\" algorithm"; + 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 1c988362d72..38ca6684f02 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1604,6 +1604,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); stringQq = callPackage ../development/libraries/haskell/string-qq {}; + stringprep = callPackage ../development/libraries/haskell/stringprep {}; + stringsearch = callPackage ../development/libraries/haskell/stringsearch {}; strptime = callPackage ../development/libraries/haskell/strptime {}; From f99c54d1980ed2707ae73f5b57bd55203f850eb1 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:41 +0100 Subject: [PATCH 243/572] haskell-Safe: add version 0.1 --- pkgs/development/libraries/haskell/Safe/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create 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 new file mode 100644 index 00000000000..f35877cd656 --- /dev/null +++ b/pkgs/development/libraries/haskell/Safe/default.nix @@ -0,0 +1,13 @@ +{ 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 38ca6684f02..686c406f00d 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1550,6 +1550,8 @@ 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 b32d4f15ff95f22a757baf9fa41095250bc053f5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:49 +0100 Subject: [PATCH 244/572] haskell-text-icu: add version 0.6.3.5 --- .../libraries/haskell/text-icu/default.nix | 15 +++++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/haskell/text-icu/default.nix diff --git a/pkgs/development/libraries/haskell/text-icu/default.nix b/pkgs/development/libraries/haskell/text-icu/default.nix new file mode 100644 index 00000000000..16115809f5b --- /dev/null +++ b/pkgs/development/libraries/haskell/text-icu/default.nix @@ -0,0 +1,15 @@ +{ cabal, icu, text }: + +cabal.mkDerivation (self: { + pname = "text-icu"; + version = "0.6.3.5"; + sha256 = "1blfw9377yl732ypbjhkvi3vfg6c1f1rkxcsvwmqyhkdzb2agg0a"; + buildDepends = [ text ]; + extraLibraries = [ icu ]; + meta = { + homepage = "https://bitbucket.org/bos/text-icu"; + description = "Bindings to the ICU library"; + 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 686c406f00d..c3ecfc4290e 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1731,6 +1731,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); text_0_11_2_3 = callPackage ../development/libraries/haskell/text/0.11.2.3.nix {}; text = self.text_0_11_2_3; + textIcu = callPackage ../development/libraries/haskell/text-icu {}; + thespian = callPackage ../development/libraries/haskell/thespian {}; thExtras = callPackage ../development/libraries/haskell/th-extras {}; From 55ec10fff5e3d35c014e070d8f74b2fd31d3dd91 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:17:56 +0100 Subject: [PATCH 245/572] haskell-unbounded-delays: add version 0.1.0.5 --- .../libraries/haskell/unbounded-delays/default.nix | 13 +++++++++++++ pkgs/top-level/haskell-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/libraries/haskell/unbounded-delays/default.nix diff --git a/pkgs/development/libraries/haskell/unbounded-delays/default.nix b/pkgs/development/libraries/haskell/unbounded-delays/default.nix new file mode 100644 index 00000000000..ccccf9d95d3 --- /dev/null +++ b/pkgs/development/libraries/haskell/unbounded-delays/default.nix @@ -0,0 +1,13 @@ +{ cabal }: + +cabal.mkDerivation (self: { + pname = "unbounded-delays"; + version = "0.1.0.5"; + sha256 = "109swgxlv3ywf5g0wgm3gp2y7azd6mqf2lfb9sk21dfzcz28aq4k"; + meta = { + homepage = "https://github.com/basvandijk/unbounded-delays"; + description = "Unbounded thread delays and timeouts"; + 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 c3ecfc4290e..b35e728f6b4 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1773,6 +1773,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); unbound = callPackage ../development/libraries/haskell/unbound {}; + unboundedDelays = callPackage ../development/libraries/haskell/unbounded-delays {}; + uniplate = callPackage ../development/libraries/haskell/uniplate {}; uniqueid = callPackage ../development/libraries/haskell/uniqueid {}; From ae8288ef88bf5a8414e67f7a3027a015566bc6b0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:18:44 +0100 Subject: [PATCH 246/572] haskell-packages.nix: fix attribute ordering after recent additions --- pkgs/top-level/haskell-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index b35e728f6b4..273cd940316 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1604,10 +1604,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); stringCombinators = callPackage ../development/libraries/haskell/string-combinators {}; - stringQq = callPackage ../development/libraries/haskell/string-qq {}; - stringprep = callPackage ../development/libraries/haskell/stringprep {}; + stringQq = callPackage ../development/libraries/haskell/string-qq {}; + stringsearch = callPackage ../development/libraries/haskell/stringsearch {}; strptime = callPackage ../development/libraries/haskell/strptime {}; @@ -1677,12 +1677,12 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); strictConcurrency = callPackage ../development/libraries/haskell/strictConcurrency {}; + stringbuilder = callPackage ../development/libraries/haskell/stringbuilder {}; + svgcairo = callPackage ../development/libraries/haskell/svgcairo { libc = pkgs.stdenv.gcc.libc; }; - stringbuilder = callPackage ../development/libraries/haskell/stringbuilder {}; - symbol = callPackage ../development/libraries/haskell/symbol {}; systemFilepath = callPackage ../development/libraries/haskell/system-filepath {}; From 24dcf491fcac85d7523ceaf373e8b629fbcfa84b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:20:01 +0100 Subject: [PATCH 247/572] haskell-ghc-events: disable 'doCheck' because of test suite failure Running 1 test suites... Test suite test-versions: RUNNING... test-versions: test/queens-ghc-6.12.1.eventlog: openBinaryFile: does not exist (No such file or directory) Test suite test-versions: FAIL Test suite logged to: dist/test/ghc-events-0.4.2.0-test-versions.log 0 of 1 test suites (0 of 1 test cases) passed. --- pkgs/development/libraries/haskell/ghc-events/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/ghc-events/default.nix b/pkgs/development/libraries/haskell/ghc-events/default.nix index 1c12e5dbb0b..5b7decf9416 100644 --- a/pkgs/development/libraries/haskell/ghc-events/default.nix +++ b/pkgs/development/libraries/haskell/ghc-events/default.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { isExecutable = true; buildDepends = [ binary mtl ]; testDepends = [ binary mtl ]; + doCheck = false; meta = { description = "Library and tool for parsing .eventlog files from GHC"; license = self.stdenv.lib.licenses.bsd3; From 1fac9c5a411c8307ef5e1bfb75916e6139f27dd0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:21:54 +0100 Subject: [PATCH 248/572] haddock: disable 'doCheck' to avoid compilation errors The test-suite stanza is incomplete. --- pkgs/development/tools/documentation/haddock/2.10.0.nix | 1 + pkgs/development/tools/documentation/haddock/2.11.0.nix | 1 + pkgs/development/tools/documentation/haddock/2.12.0.nix | 1 + pkgs/development/tools/documentation/haddock/2.13.1.nix | 1 + pkgs/development/tools/documentation/haddock/2.4.2.nix | 1 + pkgs/development/tools/documentation/haddock/2.7.2.nix | 1 + pkgs/development/tools/documentation/haddock/2.9.2.nix | 1 + pkgs/development/tools/documentation/haddock/2.9.4.nix | 1 + 8 files changed, 8 insertions(+) diff --git a/pkgs/development/tools/documentation/haddock/2.10.0.nix b/pkgs/development/tools/documentation/haddock/2.10.0.nix index 8f16c6c65c4..cfda3b66704 100644 --- a/pkgs/development/tools/documentation/haddock/2.10.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.10.0.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.11.0.nix b/pkgs/development/tools/documentation/haddock/2.11.0.nix index 32b3a5ec8b5..968efe2260b 100644 --- a/pkgs/development/tools/documentation/haddock/2.11.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.11.0.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.12.0.nix b/pkgs/development/tools/documentation/haddock/2.12.0.nix index b1228dab18a..12907a64d21 100644 --- a/pkgs/development/tools/documentation/haddock/2.12.0.nix +++ b/pkgs/development/tools/documentation/haddock/2.12.0.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.13.1.nix b/pkgs/development/tools/documentation/haddock/2.13.1.nix index 5b6ddfc1610..e53ab715992 100644 --- a/pkgs/development/tools/documentation/haddock/2.13.1.nix +++ b/pkgs/development/tools/documentation/haddock/2.13.1.nix @@ -9,6 +9,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal deepseq filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.4.2.nix b/pkgs/development/tools/documentation/haddock/2.4.2.nix index dd7b9de9725..811ffd2855d 100644 --- a/pkgs/development/tools/documentation/haddock/2.4.2.nix +++ b/pkgs/development/tools/documentation/haddock/2.4.2.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { isExecutable = true; buildDepends = [ Cabal filepath ghcPaths ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; diff --git a/pkgs/development/tools/documentation/haddock/2.7.2.nix b/pkgs/development/tools/documentation/haddock/2.7.2.nix index 0c744d62419..8dd3460b6f8 100644 --- a/pkgs/development/tools/documentation/haddock/2.7.2.nix +++ b/pkgs/development/tools/documentation/haddock/2.7.2.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self : { sha256 = "4eaaaf62785f0ba3d37ba356cfac4679faef91c0902d8cdbf42837cbe5daab82"; extraBuildInputs = [alex happy makeWrapper]; propagatedBuildInputs = [ghcPaths]; + doCheck = false; postInstall = '' wrapProgram $out/bin/haddock --add-flags "\$(${self.ghc.GHCGetPackages} ${self.ghc.ghcVersion} \"\$(dirname \$0)\" \"--optghc=-package-conf --optghc=\")" diff --git a/pkgs/development/tools/documentation/haddock/2.9.2.nix b/pkgs/development/tools/documentation/haddock/2.9.2.nix index 8e5b79cd519..61e457426de 100644 --- a/pkgs/development/tools/documentation/haddock/2.9.2.nix +++ b/pkgs/development/tools/documentation/haddock/2.9.2.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self : { sha256 = "189vvp173pqc69zgzqqx6vyhvsc13p1s86ql60rs1j5qlhh8ajg8"; extraBuildInputs = [alex happy makeWrapper]; propagatedBuildInputs = [ghcPaths xhtml]; + doCheck = false; postInstall = '' wrapProgram $out/bin/haddock --add-flags "\$(${self.ghc.GHCGetPackages} ${self.ghc.ghcVersion} \"\$(dirname \$0)\" \"--optghc=-package-conf --optghc=\")" diff --git a/pkgs/development/tools/documentation/haddock/2.9.4.nix b/pkgs/development/tools/documentation/haddock/2.9.4.nix index 2a29ee950a8..8a57dd851c2 100644 --- a/pkgs/development/tools/documentation/haddock/2.9.4.nix +++ b/pkgs/development/tools/documentation/haddock/2.9.4.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { buildDepends = [ Cabal filepath ghcPaths xhtml ]; testDepends = [ Cabal filepath regexCompat ]; buildTools = [ alex happy ]; + doCheck = false; meta = { homepage = "http://www.haskell.org/haddock/"; description = "A documentation-generation tool for Haskell libraries"; From a540dd5650c4eab2744bd7fd610e3dc34b665089 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:22:02 +0100 Subject: [PATCH 249/572] alex: disable 'doCheck' to avoid compilation errors The test-suite stanza is incomplete. --- pkgs/development/tools/parsing/alex/2.3.1.nix | 1 + pkgs/development/tools/parsing/alex/2.3.2.nix | 1 + pkgs/development/tools/parsing/alex/2.3.3.nix | 1 + pkgs/development/tools/parsing/alex/2.3.5.nix | 1 + pkgs/development/tools/parsing/alex/3.0.1.nix | 1 + pkgs/development/tools/parsing/alex/3.0.2.nix | 1 + pkgs/development/tools/parsing/alex/3.0.4.nix | 1 + 7 files changed, 7 insertions(+) diff --git a/pkgs/development/tools/parsing/alex/2.3.1.nix b/pkgs/development/tools/parsing/alex/2.3.1.nix index e1d77561eb1..7dc17cd4153 100644 --- a/pkgs/development/tools/parsing/alex/2.3.1.nix +++ b/pkgs/development/tools/parsing/alex/2.3.1.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/2.3.2.nix b/pkgs/development/tools/parsing/alex/2.3.2.nix index 5a79036b082..5d10dbd6995 100644 --- a/pkgs/development/tools/parsing/alex/2.3.2.nix +++ b/pkgs/development/tools/parsing/alex/2.3.2.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/2.3.3.nix b/pkgs/development/tools/parsing/alex/2.3.3.nix index b0b40fecbed..bbe413d478f 100644 --- a/pkgs/development/tools/parsing/alex/2.3.3.nix +++ b/pkgs/development/tools/parsing/alex/2.3.3.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/2.3.5.nix b/pkgs/development/tools/parsing/alex/2.3.5.nix index cda27316792..3fb843e6955 100644 --- a/pkgs/development/tools/parsing/alex/2.3.5.nix +++ b/pkgs/development/tools/parsing/alex/2.3.5.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { isLibrary = false; isExecutable = true; 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/development/tools/parsing/alex/3.0.1.nix b/pkgs/development/tools/parsing/alex/3.0.1.nix index 85e0474b745..cdcaead8635 100644 --- a/pkgs/development/tools/parsing/alex/3.0.1.nix +++ b/pkgs/development/tools/parsing/alex/3.0.1.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { 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/development/tools/parsing/alex/3.0.2.nix b/pkgs/development/tools/parsing/alex/3.0.2.nix index ec56c74db77..9011db12c7d 100644 --- a/pkgs/development/tools/parsing/alex/3.0.2.nix +++ b/pkgs/development/tools/parsing/alex/3.0.2.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { 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/development/tools/parsing/alex/3.0.4.nix b/pkgs/development/tools/parsing/alex/3.0.4.nix index bc82079aa79..3160570b240 100644 --- a/pkgs/development/tools/parsing/alex/3.0.4.nix +++ b/pkgs/development/tools/parsing/alex/3.0.4.nix @@ -8,6 +8,7 @@ cabal.mkDerivation (self: { 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"; From e3bf440ae9d1babd2c00c78038a6bb51abc82f90 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:23:26 +0100 Subject: [PATCH 250/572] haskell-text: disable 'doCheck' to avoid infinite evaluation loop Some of the 'testDepends' of these packages end up depending on 'text' again. --- pkgs/development/libraries/haskell/text/0.11.0.5.nix | 1 + pkgs/development/libraries/haskell/text/0.11.0.6.nix | 1 + pkgs/development/libraries/haskell/text/0.11.1.13.nix | 1 + pkgs/development/libraries/haskell/text/0.11.1.5.nix | 1 + pkgs/development/libraries/haskell/text/0.11.2.0.nix | 1 + pkgs/development/libraries/haskell/text/0.11.2.3.nix | 1 + 6 files changed, 6 insertions(+) diff --git a/pkgs/development/libraries/haskell/text/0.11.0.5.nix b/pkgs/development/libraries/haskell/text/0.11.0.5.nix index 0b415d28aea..59644d05720 100644 --- a/pkgs/development/libraries/haskell/text/0.11.0.5.nix +++ b/pkgs/development/libraries/haskell/text/0.11.0.5.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.11.0.5"; sha256 = "1a5y2i7qrkyyvm112q44rhd7jbqxvfxssz2g5ngbx11yypl3hcdv"; buildDepends = [ deepseq ]; + doCheck = false; meta = { homepage = "http://bitbucket.org/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.0.6.nix b/pkgs/development/libraries/haskell/text/0.11.0.6.nix index 354621fd5cd..04fd250dfe9 100644 --- a/pkgs/development/libraries/haskell/text/0.11.0.6.nix +++ b/pkgs/development/libraries/haskell/text/0.11.0.6.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.11.0.6"; sha256 = "103l1c8jfwpddsqzwj9jqh89vay8ax1znxqgjqprv2fvr7s0zvkp"; buildDepends = [ deepseq ]; + doCheck = false; meta = { homepage = "http://bitbucket.org/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.1.13.nix b/pkgs/development/libraries/haskell/text/0.11.1.13.nix index aaf278a0a69..71d0c28e48d 100644 --- a/pkgs/development/libraries/haskell/text/0.11.1.13.nix +++ b/pkgs/development/libraries/haskell/text/0.11.1.13.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { deepseq HUnit QuickCheck random testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.1.5.nix b/pkgs/development/libraries/haskell/text/0.11.1.5.nix index 3f4132a87a2..03c2d90ff8d 100644 --- a/pkgs/development/libraries/haskell/text/0.11.1.5.nix +++ b/pkgs/development/libraries/haskell/text/0.11.1.5.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.11.1.5"; sha256 = "0fxxhw932gdvaqafsbw7dfzccc43hv92yhxppzp6jrg0npbyz04l"; buildDepends = [ deepseq ]; + doCheck = false; meta = { homepage = "https://bitbucket.org/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.0.nix b/pkgs/development/libraries/haskell/text/0.11.2.0.nix index 870438ea31f..ab784807bfa 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.0.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.0.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { deepseq HUnit QuickCheck random testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; diff --git a/pkgs/development/libraries/haskell/text/0.11.2.3.nix b/pkgs/development/libraries/haskell/text/0.11.2.3.nix index a7089c94cfb..afa0e7eb5d3 100644 --- a/pkgs/development/libraries/haskell/text/0.11.2.3.nix +++ b/pkgs/development/libraries/haskell/text/0.11.2.3.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { deepseq HUnit QuickCheck random testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/bos/text"; description = "An efficient packed Unicode text type"; From 3ac39413ac8635e0b9952a78db21ac843c3ab0e0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:24:55 +0100 Subject: [PATCH 251/572] Disable 'doCheck' in more packages to avoid infinite evaluation loops. --- pkgs/development/libraries/haskell/doctest/default.nix | 1 + .../development/libraries/haskell/hspec-expectations/default.nix | 1 + pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix | 1 + pkgs/development/libraries/haskell/monad-par/0.3.4.nix | 1 + pkgs/development/libraries/haskell/mwc-random/default.nix | 1 + pkgs/development/libraries/haskell/setenv/default.nix | 1 + pkgs/development/libraries/haskell/uuid/default.nix | 1 + 7 files changed, 7 insertions(+) diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix index 5dffb52ce1e..3c8988400bc 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 ]; + doCheck = false; meta = { homepage = "https://github.com/sol/doctest-haskell#readme"; description = "Test interactive Haskell examples"; diff --git a/pkgs/development/libraries/haskell/hspec-expectations/default.nix b/pkgs/development/libraries/haskell/hspec-expectations/default.nix index 4b84ad62784..8c9885d4378 100644 --- a/pkgs/development/libraries/haskell/hspec-expectations/default.nix +++ b/pkgs/development/libraries/haskell/hspec-expectations/default.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1ppcbfmcgrd1lwswa293fxwny6khhg4blygfbcsawrvgc5ji0q74"; buildDepends = [ HUnit ]; testDepends = [ hspec HUnit markdownUnlit silently ]; + doCheck = false; meta = { homepage = "https://github.com/sol/hspec-expectations#readme"; description = "Catchy combinators for HUnit"; diff --git a/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix b/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix index 1bfac2b13d2..8692d6267cb 100644 --- a/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix +++ b/pkgs/development/libraries/haskell/monad-par/0.1.0.3.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.1.0.3"; sha256 = "1c0yclil152hv06c2sbgam9amd63nnzh7a4xsnxb05wgy93qs2mg"; buildDepends = [ deepseq HUnit ]; + doCheck = false; meta = { homepage = "https://github.com/simonmar/monad-par"; description = "A library for parallel programming based on a monad"; diff --git a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix index f22ae9e106f..342bea47f6b 100644 --- a/pkgs/development/libraries/haskell/monad-par/0.3.4.nix +++ b/pkgs/development/libraries/haskell/monad-par/0.3.4.nix @@ -17,6 +17,7 @@ cabal.mkDerivation (self: { mwcRandom QuickCheck testFramework testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh time ]; + doCheck = false; meta = { homepage = "https://github.com/simonmar/monad-par"; description = "A library for parallel programming based on a monad"; diff --git a/pkgs/development/libraries/haskell/mwc-random/default.nix b/pkgs/development/libraries/haskell/mwc-random/default.nix index d20f4f061e4..3e9be2c5e58 100644 --- a/pkgs/development/libraries/haskell/mwc-random/default.nix +++ b/pkgs/development/libraries/haskell/mwc-random/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { HUnit QuickCheck statistics testFramework testFrameworkHunit testFrameworkQuickcheck2 vector ]; + doCheck = false; meta = { homepage = "https://github.com/bos/mwc-random"; description = "Fast, high quality pseudo random number generation"; diff --git a/pkgs/development/libraries/haskell/setenv/default.nix b/pkgs/development/libraries/haskell/setenv/default.nix index fd94874e364..b19728820aa 100644 --- a/pkgs/development/libraries/haskell/setenv/default.nix +++ b/pkgs/development/libraries/haskell/setenv/default.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "0.1.0"; sha256 = "04w42bpfbrs5crjp19zzi9dg61xpz4wvmjs2vc7q7qxblyhdfdsy"; testDepends = [ hspec QuickCheck ]; + doCheck = false; meta = { description = "A cross-platform library for setting environment variables"; license = self.stdenv.lib.licenses.mit; diff --git a/pkgs/development/libraries/haskell/uuid/default.nix b/pkgs/development/libraries/haskell/uuid/default.nix index 55ac6cf9e68..ed7e23f6c21 100644 --- a/pkgs/development/libraries/haskell/uuid/default.nix +++ b/pkgs/development/libraries/haskell/uuid/default.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ criterion deepseq HUnit mersenneRandomPure64 QuickCheck random ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/uuid/"; description = "For creating, comparing, parsing and printing Universally Unique Identifiers"; From 8c58bef5dd226378039b0451e1c3e9af60db9f1c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:36:44 +0100 Subject: [PATCH 252/572] haskell-simple-sendfile: disable 'doCheck' because of test suite failure Running 1 test suites... Test suite spec: RUNNING... Sendfile sendfile spec: test/inputFile: openFd: does not exist (No such file or directory) - sends an entire file FAILED [1] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends a part of file FAILED [2] spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if length is over spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if offset is over - terminates even if the file is truncated FAILED [3] sendfileWithHeader spec: test/inputFile: openFd: does not exist (No such file or directory) - sends an header and an entire file FAILED [4] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends an header and a part of file FAILED [5] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends a large header and an entire file FAILED [6] spec: test/inputFile: openFd: does not exist (No such file or directory) - sends a large header and a part of file FAILED [7] spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if length is over spec: test/inputFile: openFd: does not exist (No such file or directory) - terminates even if offset is over - terminates even if the file is truncated FAILED [8] 1) Sendfile.sendfile sends an entire file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 2) Sendfile.sendfile sends a part of file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 3) Sendfile.sendfile terminates even if the file is truncated FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 4) Sendfile.sendfileWithHeader sends an header and an entire file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 5) Sendfile.sendfileWithHeader sends an header and a part of file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 6) Sendfile.sendfileWithHeader sends a large header and an entire file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 7) Sendfile.sendfileWithHeader sends a large header and a part of file FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) 8) Sendfile.sendfileWithHeader terminates even if the file is truncated FAILED (uncaught exception) IOException (test/inputFile: openBinaryFile: does not exist (No such file or directory)) --- pkgs/development/libraries/haskell/simple-sendfile/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/simple-sendfile/default.nix b/pkgs/development/libraries/haskell/simple-sendfile/default.nix index 9ad2bd4405b..9e8f638c65c 100644 --- a/pkgs/development/libraries/haskell/simple-sendfile/default.nix +++ b/pkgs/development/libraries/haskell/simple-sendfile/default.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1q9m9lxv9jfkn6a1lf07jcl4li3n5996df1qrfkfjq2n0bvn4qfj"; buildDepends = [ network ]; testDepends = [ conduit hspec HUnit network networkConduit ]; + doCheck = false; meta = { description = "Cross platform library for the sendfile system call"; license = self.stdenv.lib.licenses.bsd3; From 28a0367f9ee59267866de0f70782c436492e5a26 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:41:52 +0100 Subject: [PATCH 253/572] haskell-HTTP: disable 'doCheck' to avoid compilation errors Setup: At least the following dependencies are missing: case-insensitive ==0.4.*, conduit >=0.4 && <0.6, http-types >=0.6 && <0.8, wai >=1.2 && <1.4 --- pkgs/development/libraries/haskell/HTTP/4000.0.6.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.0.9.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.1.1.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.1.2.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.1.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.2.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.3.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.5.nix | 1 + pkgs/development/libraries/haskell/HTTP/4000.2.8.nix | 1 + 9 files changed, 9 insertions(+) diff --git a/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix b/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix index c87b38af452..ac4ac232edf 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.0.6.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.0.6"; sha256 = "75af1ac4dc21b10c8a1a54a33179ea822e591887bab7278360a3d6b38304d39b"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix b/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix index 493da3337b9..0beebbfe294 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.0.9.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.0.9"; sha256 = "1e2b4a8b782ad1417c8755bb0d248851bc142b351366ed460e07f2945a5e95ba"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix b/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix index 28a3bd5fe95..31cfdddac79 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.1.1.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.1.1"; sha256 = "09khx5fb673a0d7m3bl39xjdxvc60m52rmm4865cha2mby0zidy3"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix b/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix index a75c72f6a28..8d4a39526b2 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.1.2.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "4000.1.2"; sha256 = "19vcy8xinrvn01caly6sg1p1yvbbf7nwq10kxmnwqssnl4h5cwn8"; buildDepends = [ mtl network parsec ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/http/"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix index 0c7fa0bfa78..f3da4a5ccf2 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.1.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ httpdShed HUnit network split testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix index 805bf36f5df..e6238a5e738 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.2.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ httpdShed HUnit network split testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix index a0b328d702c..d9e422f9e89 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.3.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { testDepends = [ httpdShed HUnit network split testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix index 4adae562476..93ba5e949db 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.5.nix @@ -12,6 +12,7 @@ cabal.mkDerivation (self: { caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl network pureMD5 split testFramework testFrameworkHunit wai warp ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; diff --git a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix index f0c103622a9..1b52261dea0 100644 --- a/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix +++ b/pkgs/development/libraries/haskell/HTTP/4000.2.8.nix @@ -12,6 +12,7 @@ cabal.mkDerivation (self: { caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl network pureMD5 split testFramework testFrameworkHunit wai warp ]; + doCheck = false; meta = { homepage = "https://github.com/haskell/HTTP"; description = "A library for client-side HTTP"; From 86b96bd0e9e0b143e3ddeb8f6f764103dfae4d09 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:42:15 +0100 Subject: [PATCH 254/572] haskell-cautious-file: disable 'doCheck' because of test suite failure --- pkgs/development/libraries/haskell/cautious-file/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/cautious-file/default.nix b/pkgs/development/libraries/haskell/cautious-file/default.nix index aa6e87565ae..44ed255bb63 100644 --- a/pkgs/development/libraries/haskell/cautious-file/default.nix +++ b/pkgs/development/libraries/haskell/cautious-file/default.nix @@ -5,6 +5,7 @@ cabal.mkDerivation (self: { version = "1.0.2"; sha256 = "1sw5ngwrarq1lsd4c6v2wdmgbhkkq6kpybb62r8ccm11ddgn3yiq"; buildDepends = [ filepath ]; + doCheck = false; meta = { description = "Ways to write a file cautiously, to reduce the chances of problems such as data loss due to crashes or power failures"; license = self.stdenv.lib.licenses.bsd3; From b7324d79eb11a3fcd08e85fd455801378e20733f Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:44:48 +0100 Subject: [PATCH 255/572] zeromq3-haskell: disable 'doCheck' because of build errors in test program --- pkgs/development/libraries/haskell/zeromq3-haskell/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix index 3a3e700cfbb..82dae54839f 100644 --- a/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix +++ b/pkgs/development/libraries/haskell/zeromq3-haskell/default.nix @@ -10,6 +10,7 @@ cabal.mkDerivation (self: { QuickCheck testFramework testFrameworkQuickcheck2 ]; extraLibraries = [ zeromq ]; + doCheck = false; meta = { homepage = "http://github.com/twittner/zeromq-haskell/"; description = "Bindings to ZeroMQ 3.x"; From b15b0690dc73694af03dc5aee26ee5f0f0bb6746 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 22:54:36 +0100 Subject: [PATCH 256/572] haskell-filestore: disable 'doCheck' because of test suite failures running tests /bin/sh: ./dist/build/test-filestore/test-filestore: No such file or directory --- pkgs/development/libraries/haskell/filestore/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/filestore/default.nix b/pkgs/development/libraries/haskell/filestore/default.nix index d114a5aa3af..468a9f711e1 100644 --- a/pkgs/development/libraries/haskell/filestore/default.nix +++ b/pkgs/development/libraries/haskell/filestore/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { buildDepends = [ Diff filepath HUnit mtl parsec split time utf8String xml ]; + doCheck = false; jailbreak = true; meta = { description = "Interface for versioning file stores"; From 8a7a2c4e6c538c395a1ea55ac92c46d80f00f491 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:10:17 +0100 Subject: [PATCH 257/572] haskell-src-exts: disable 'doCheck' because of test suite build errors Test/Runner.hs:5:8: Could not find module `Language.Haskell.Exts.Annotated' Use -v to see a list of the files searched for. Setup: Pattern match failure in do expression at Setup.hs:6:5-15 --- pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix | 1 + pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix b/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix index 9df67a70c6c..1918260cc62 100644 --- a/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix +++ b/pkgs/development/libraries/haskell/haskell-src-exts/1.11.1.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1jqf8l81zw7x5ryf8h2n0b2636yhxkfp3j4ndbqw6hc7i5q581m6"; buildDepends = [ cpphs ]; buildTools = [ happy ]; + doCheck = false; meta = { homepage = "http://code.haskell.org/haskell-src-exts"; description = "Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer"; diff --git a/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix b/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix index 16f6d6362a1..5521e037b4e 100644 --- a/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix +++ b/pkgs/development/libraries/haskell/haskell-src-exts/1.13.5.nix @@ -6,6 +6,7 @@ cabal.mkDerivation (self: { sha256 = "03bzhfp7l9f5hh61qdrr83331nbfgj3jfsfylwmnmcknpisdqnkw"; buildDepends = [ cpphs ]; buildTools = [ happy ]; + doCheck = false; meta = { homepage = "http://code.haskell.org/haskell-src-exts"; description = "Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer"; From 50b94835e41198d41af153f5d0a46965918b65ca Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:10:34 +0100 Subject: [PATCH 258/572] haskell-filestore: cosmetic --- pkgs/development/libraries/haskell/filestore/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/haskell/filestore/default.nix b/pkgs/development/libraries/haskell/filestore/default.nix index 468a9f711e1..5e93300b23c 100644 --- a/pkgs/development/libraries/haskell/filestore/default.nix +++ b/pkgs/development/libraries/haskell/filestore/default.nix @@ -11,8 +11,8 @@ cabal.mkDerivation (self: { buildDepends = [ Diff filepath HUnit mtl parsec split time utf8String xml ]; - doCheck = false; jailbreak = true; + doCheck = false; meta = { description = "Interface for versioning file stores"; license = self.stdenv.lib.licenses.bsd3; From 07dd027e6376c9317ba4e8d0a54653f69cbfd672 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:20:53 +0100 Subject: [PATCH 259/572] haskell-vty: disable 'doCheck' because of build errors Setup: At least the following dependencies are missing: Cabal ==1.17.* --- pkgs/development/libraries/haskell/vty/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/vty/default.nix b/pkgs/development/libraries/haskell/vty/default.nix index 9adc35b1bdf..3121399b3a9 100644 --- a/pkgs/development/libraries/haskell/vty/default.nix +++ b/pkgs/development/libraries/haskell/vty/default.nix @@ -15,6 +15,7 @@ cabal.mkDerivation (self: { Cabal deepseq mtl parallel parsec QuickCheck random terminfo utf8String vector ]; + doCheck = false; meta = { homepage = "https://github.com/coreyoconnor/vty"; description = "A simple terminal UI library"; From 0b8ee12f09110e735088b9db0c12a2ee36939de8 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:24:48 +0100 Subject: [PATCH 260/572] haskell-hashed-storage: disable 'doCheck' because of test suite errors running tests /bin/sh: dist/build/hashed-storage-test/hashed-storage-test: No such file or directory --- pkgs/development/libraries/haskell/hashed-storage/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/hashed-storage/default.nix b/pkgs/development/libraries/haskell/hashed-storage/default.nix index 161e81eb375..77a4251259d 100644 --- a/pkgs/development/libraries/haskell/hashed-storage/default.nix +++ b/pkgs/development/libraries/haskell/hashed-storage/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { buildDepends = [ binary dataenc extensibleExceptions filepath mmap mtl zlib ]; + doCheck = false; meta = { description = "Hashed file storage support code"; license = self.stdenv.lib.licenses.bsd3; From 68d4be424d5e2bb6499ad3706bf7f9f430886b7c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:25:00 +0100 Subject: [PATCH 261/572] haskell-sendfile: update to version 0.7.9 --- pkgs/development/libraries/haskell/sendfile/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/sendfile/default.nix b/pkgs/development/libraries/haskell/sendfile/default.nix index 455328ec9cb..dc1f24757af 100644 --- a/pkgs/development/libraries/haskell/sendfile/default.nix +++ b/pkgs/development/libraries/haskell/sendfile/default.nix @@ -2,8 +2,8 @@ cabal.mkDerivation (self: { pname = "sendfile"; - version = "0.7.8"; - sha256 = "0xy9ciikr444gblh3r8z3w4h4rcrfjfciw3dvxgzbygqs5dy6yxl"; + version = "0.7.9"; + sha256 = "0hnw1ym81cff49dwww19kgbs4s0kpandbvn6h5cml3y0p1nxybqh"; buildDepends = [ network ]; meta = { homepage = "http://hub.darcs.net/stepcut/sendfile"; From 34b48b6c3bdec664368d033864666b436d4719eb Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:31:32 +0100 Subject: [PATCH 262/572] haskell-numbers: disable 'doCheck' to avoid build errors Setup: At least the following dependencies are missing: test-framework ==0.6.*, test-framework-quickcheck2 ==0.2.* --- pkgs/development/libraries/haskell/numbers/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/numbers/default.nix b/pkgs/development/libraries/haskell/numbers/default.nix index 002f68eded7..e0136ad5d45 100644 --- a/pkgs/development/libraries/haskell/numbers/default.nix +++ b/pkgs/development/libraries/haskell/numbers/default.nix @@ -7,6 +7,7 @@ cabal.mkDerivation (self: { testDepends = [ QuickCheck testFramework testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/DanBurton/numbers"; description = "Various number types"; From d440431d19f93662d3ec7b6912180b237597dec2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:33:12 +0100 Subject: [PATCH 263/572] haskell-tls: disable 'doCheck' to avoid build errors Tests/Tests.hs:41:0: error: missing binary operator before token "(" --- pkgs/development/libraries/haskell/tls/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/tls/default.nix b/pkgs/development/libraries/haskell/tls/default.nix index a935b8ad4d5..72e0976ceaf 100644 --- a/pkgs/development/libraries/haskell/tls/default.nix +++ b/pkgs/development/libraries/haskell/tls/default.nix @@ -15,6 +15,7 @@ cabal.mkDerivation (self: { cereal certificate cprngAes cryptoPubkey cryptoRandomApi mtl QuickCheck testFramework testFrameworkQuickcheck2 time ]; + doCheck = false; meta = { homepage = "http://github.com/vincenthz/hs-tls"; description = "TLS/SSL protocol native implementation (Server and Client)"; From bc0ab2e5952855c7036afb0402abc56255f3d11d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:34:35 +0100 Subject: [PATCH 264/572] haskell-zip-archive: disable 'doCheck' to avoid test suite failures Test suite test-zip-archive: RUNNING... Cases: 7 Tried: 1 Errors: 0 Failures: 0/bin/sh: /usr/bin/zip: No such file or directory ### Error in: 1 test-temp/test4.zip: openBinaryFile: does not exist (No such file or directory) Cases: 7 Tried: 4 Errors: 1 Failures: 0 adding: LICENSE (deflated 46%) adding: Codec/ (stored 0%) adding: LICENSE (deflated 46%) adding: Codec/ (stored 0%) adding: Codec/Archive/ (stored 0%) adding: Codec/Archive/Zip.hs (deflated 74%) Cases: 7 Tried: 6 Errors: 1 Failures: 0 creating: test-temp/dir1 extracting: test-temp/dir1/hi creating: test-temp/dir1/dir2 inflating: test-temp/dir1/dir2/hello Cases: 7 Tried: 7 Errors: 1 Failures: 0 Test suite test-zip-archive: FAIL Test suite logged to: dist/test/zip-archive-0.1.3.3-test-zip-archive.log 0 of 1 test suites (0 of 1 test cases) passed. --- 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 6bbe2844612..45f2ac96319 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 45d6e82c4878542a72f7b07494746244dedbf013 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:34:56 +0100 Subject: [PATCH 265/572] haskell-postgresql-simple: disable 'doCheck' to avoid test suite failure Test suite test: RUNNING... test: SqlError {sqlState = "", sqlNativeError = -1, sqlErrorMsg = "could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \"/tmp/.s.PGSQL.5432\"?\n"} Test suite test: FAIL Test suite logged to: dist/test/postgresql-simple-0.2.4.1-test.log 0 of 1 test suites (0 of 1 test cases) passed. --- pkgs/development/libraries/haskell/postgresql-simple/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/postgresql-simple/default.nix b/pkgs/development/libraries/haskell/postgresql-simple/default.nix index 29c74d84015..81a5f67c45b 100644 --- a/pkgs/development/libraries/haskell/postgresql-simple/default.nix +++ b/pkgs/development/libraries/haskell/postgresql-simple/default.nix @@ -12,6 +12,7 @@ cabal.mkDerivation (self: { transformers vector ]; testDepends = [ base16Bytestring cryptohash HUnit text time ]; + doCheck = false; meta = { description = "Mid-Level PostgreSQL client library"; license = self.stdenv.lib.licenses.bsd3; From a0919feeadf20b0c03022add9644f83f459acab4 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:39:43 +0100 Subject: [PATCH 266/572] haskell-permutation: disable 'doCheck' to avoid build errors Test/Permute.hs:20:8: Could not find module `Test.QuickCheck' Use -v to see a list of the files searched for. --- pkgs/development/libraries/haskell/permutation/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/permutation/default.nix b/pkgs/development/libraries/haskell/permutation/default.nix index 5903cb27f71..4f38dfcaa12 100644 --- a/pkgs/development/libraries/haskell/permutation/default.nix +++ b/pkgs/development/libraries/haskell/permutation/default.nix @@ -4,6 +4,7 @@ cabal.mkDerivation (self: { pname = "permutation"; version = "0.4.1"; sha256 = "0fgw4ivs8sa18fyphwr3mzp2v7ha2nz2yf3a7jmz9ymqdf2xws97"; + doCheck = false; meta = { homepage = "http://stat.stanford.edu/~patperry/code/permutation"; description = "A library for permutations and combinations"; From 1b25d43132a88ebe44ad7c81bb8b6c45795a1275 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 24 Feb 2013 23:48:22 +0100 Subject: [PATCH 267/572] haskell-distributed-process: disable 'doCheck' to avoid build errors Setup: At least the following dependencies are missing: ansi-terminal ==0.5.* --- .../libraries/haskell/distributed-process/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/distributed-process/default.nix b/pkgs/development/libraries/haskell/distributed-process/default.nix index 0427a937f84..d23a5ef0228 100644 --- a/pkgs/development/libraries/haskell/distributed-process/default.nix +++ b/pkgs/development/libraries/haskell/distributed-process/default.nix @@ -20,6 +20,7 @@ cabal.mkDerivation (self: { testFrameworkHunit ]; noHaddock = true; + doCheck = false; meta = { homepage = "http://github.com/haskell-distributed/distributed-process"; description = "Cloud Haskell: Erlang-style concurrency in Haskell"; From 1420012eca10cb70e383bff734093d036f44ca6c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:03:34 +0100 Subject: [PATCH 268/572] darcs: disable test suite to avoid 127 exit code --- pkgs/applications/version-management/darcs/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/version-management/darcs/default.nix b/pkgs/applications/version-management/darcs/default.nix index 86f9be93f68..468e45fcff1 100644 --- a/pkgs/applications/version-management/darcs/default.nix +++ b/pkgs/applications/version-management/darcs/default.nix @@ -19,6 +19,7 @@ cabal.mkDerivation (self: { mkdir -p $out/etc/bash_completion.d mv contrib/darcs_completion $out/etc/bash_completion.d/darcs ''; + doCheck = false; meta = { homepage = "http://darcs.net/"; description = "a distributed, interactive, smart revision control system"; From b313b3f1c38b39745b5fc5439b2fa46e452f2d69 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:06:11 +0100 Subject: [PATCH 269/572] haskell-statistics: disable 'doCheck' to avoid test suite failures Running 1 test suites... Test suite tests: RUNNING... Tests for all distributions: Tests for: BetaDistribution: C.D.F. sanity: [OK, passed 100 tests] CDF limit at +tests: : commitBuffer: invalid argument (invalid character) Test suite tests: FAIL Test suite logged to: dist/test/statistics-0.10.2.0-tests.log --- pkgs/development/libraries/haskell/statistics/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/statistics/default.nix b/pkgs/development/libraries/haskell/statistics/default.nix index 923cdf879a5..f53e7a341d6 100644 --- a/pkgs/development/libraries/haskell/statistics/default.nix +++ b/pkgs/development/libraries/haskell/statistics/default.nix @@ -16,6 +16,7 @@ cabal.mkDerivation (self: { erf HUnit ieee754 mathFunctions primitive QuickCheck testFramework testFrameworkHunit testFrameworkQuickcheck2 vector vectorAlgorithms ]; + doCheck = false; meta = { homepage = "https://github.com/bos/statistics"; description = "A library of statistical types, data, and functions"; From bab62f09e0b24ddeefefcad1b0b2939998ea837a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:11:16 +0100 Subject: [PATCH 270/572] haskell-threads: disable 'doCheck' to avoid test suite build errors Setup: At least the following dependencies are missing: test-framework >=0.2.4 && <0.7, test-framework-hunit >=0.2.4 && <0.3 --- pkgs/development/libraries/haskell/threads/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/threads/default.nix b/pkgs/development/libraries/haskell/threads/default.nix index a3327e88ba6..533a67c99c8 100644 --- a/pkgs/development/libraries/haskell/threads/default.nix +++ b/pkgs/development/libraries/haskell/threads/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { baseUnicodeSymbols concurrentExtra HUnit stm testFramework testFrameworkHunit ]; + doCheck = false; meta = { homepage = "https://github.com/basvandijk/threads"; description = "Fork threads and wait for their result"; From 94d3f2c692150a775c87952f88ba2049485d26ac Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:13:30 +0100 Subject: [PATCH 271/572] haskell-happstack-server: disable 'doCheck' to avoid test suite build errors tests/Test.hs:3:8: Could not find module `Happstack.Server.Tests' Perhaps you meant Happstack.Server.Types (from happstack-server-7.1.6) Happstack.Server.Auth (from happstack-server-7.1.6) Happstack.Server.Client (from happstack-server-7.1.6) Use -v to see a list of the files searched for. --- .../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 dba052a0fc1..8d8261df97e 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 e906a6e437e8e95d518561b8f059c203b093d9a3 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:23:57 +0100 Subject: [PATCH 272/572] haskell-pandoc: disable 'doCheck' to avoid test suite build errors Configuring pandoc-1.10.1... Setup: At least the following dependencies are missing: Diff ==0.2.*, HUnit ==1.2.*, QuickCheck >=2.4 && <2.6, ansi-terminal >=0.5 && <0.7, test-framework >=0.3 && <0.9, test-framework-hunit >=0.2 && <0.4, test-framework-quickcheck2 >=0.2.9 && <0.4 --- pkgs/development/libraries/haskell/pandoc/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/pandoc/default.nix b/pkgs/development/libraries/haskell/pandoc/default.nix index df24b4ac022..93f7e8add42 100644 --- a/pkgs/development/libraries/haskell/pandoc/default.nix +++ b/pkgs/development/libraries/haskell/pandoc/default.nix @@ -20,6 +20,7 @@ cabal.mkDerivation (self: { patchPhase = '' sed -r -i -e 's|blaze-html >= 0.5 && < 0.6,|blaze-html >= 0.5,|' pandoc.cabal ''; + doCheck = false; meta = { homepage = "http://johnmacfarlane.net/pandoc"; description = "Conversion between markup formats"; From 42db9ae872a138a7d5cded3dc982630baccda17b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:26:18 +0100 Subject: [PATCH 273/572] haskell-fsnotify: disable 'doCheck' to avoid test suite failures Test suite test: RUNNING... canonicalizeDirPath - Absolute path keeps trailing slash FAILED [1] - Absolute path gains trailing slash FAILED [2] - Relative path keeps trailing slash - Relative path gains trailing slash canonicalizePath - Absolute path keeps trailing slash FAILED [3] - Relative path keeps trailing slash findFiles - Non-recursive - Recursive findDirs - Non-recursive - Recursive watchDir - Create file - Modify file - Remove file - Rename file - Debounce watchDirChan - Create file - Modify file - Remove file - Rename file watchTree - Create file (pre-existing directory) - Create file (create directory) - Modify file - Remove file - Rename file watchTreeChan - Create file (pre-existing directory) - Create file (create directory) - Modify file - Remove file - Rename file 1) canonicalizeDirPath Absolute path keeps trailing slash FAILED (uncaught exception) IOException (/home/: canonicalizePath: does not exist (No such file or directory)) 2) canonicalizeDirPath Absolute path gains trailing slash FAILED (uncaught exception) IOException (/home: canonicalizePath: does not exist (No such file or directory)) 3) canonicalizePath Absolute path keeps trailing slash FAILED (uncaught exception) IOException (/home/: canonicalizePath: does not exist (No such file or directory)) Finished in 37.1526 seconds 29 examples, 3 failures Test suite test: FAIL Test suite logged to: dist/test/fsnotify-0.0.6-test.log --- pkgs/development/libraries/haskell/fsnotify/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/fsnotify/default.nix b/pkgs/development/libraries/haskell/fsnotify/default.nix index 142b513e592..cfc80c4d547 100644 --- a/pkgs/development/libraries/haskell/fsnotify/default.nix +++ b/pkgs/development/libraries/haskell/fsnotify/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { Cabal Glob hinotify hspec QuickCheck random systemFileio systemFilepath text time uniqueid ]; + doCheck = false; meta = { description = "Cross platform library for file creation, modification, and deletion notification"; license = self.stdenv.lib.licenses.bsd3; From 2399599a7091e2c855bee188be8cd3e870854e8d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:34:56 +0100 Subject: [PATCH 274/572] haskell-postgresql-simple: disable 'doCheck' to avoid test suite failure Test suite test: RUNNING... test: SqlError {sqlState = "", sqlNativeError = -1, sqlErrorMsg = "could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \"/tmp/.s.PGSQL.5432\"?\n"} Test suite test: FAIL Test suite logged to: dist/test/postgresql-simple-0.2.4.1-test.log 0 of 1 test suites (0 of 1 test cases) passed. --- pkgs/development/libraries/haskell/postgresql-simple/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/postgresql-simple/default.nix b/pkgs/development/libraries/haskell/postgresql-simple/default.nix index 29c74d84015..81a5f67c45b 100644 --- a/pkgs/development/libraries/haskell/postgresql-simple/default.nix +++ b/pkgs/development/libraries/haskell/postgresql-simple/default.nix @@ -12,6 +12,7 @@ cabal.mkDerivation (self: { transformers vector ]; testDepends = [ base16Bytestring cryptohash HUnit text time ]; + doCheck = false; meta = { description = "Mid-Level PostgreSQL client library"; license = self.stdenv.lib.licenses.bsd3; From 2a5028bcc4448e9ed4a73a7468f121da910eb7c6 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:49:27 +0100 Subject: [PATCH 275/572] haskell-crypto-conduit: disable 'doCheck' to avoid test suite build errors --- pkgs/development/libraries/haskell/crypto-conduit/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/crypto-conduit/default.nix b/pkgs/development/libraries/haskell/crypto-conduit/default.nix index 69351a2a5aa..2b967a5b564 100644 --- a/pkgs/development/libraries/haskell/crypto-conduit/default.nix +++ b/pkgs/development/libraries/haskell/crypto-conduit/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { cereal conduit cryptoApi cryptocipher cryptohash hspec skein transformers ]; + doCheck = false; meta = { homepage = "https://github.com/meteficha/crypto-conduit"; description = "Conduit interface for cryptographic operations (from crypto-api)"; From aacbdfab6bab78871f9d492eca46306e79346e95 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:50:31 +0100 Subject: [PATCH 276/572] haskell-unordered-containers: disable 'doCheck' to avoid test suite build errors tests/HashSetProperties.hs:76:0: error: missing binary operator before token "(" tests/HashSetProperties.hs:86:0: error: missing binary operator before token "(" --- .../libraries/haskell/unordered-containers/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/unordered-containers/default.nix b/pkgs/development/libraries/haskell/unordered-containers/default.nix index 2f786eba949..288e559ce98 100644 --- a/pkgs/development/libraries/haskell/unordered-containers/default.nix +++ b/pkgs/development/libraries/haskell/unordered-containers/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { ChasingBottoms hashable HUnit QuickCheck testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/tibbe/unordered-containers"; description = "Efficient hashing-based container types"; From 6dff123e86fe079cb62a5a1bf8d69067c0978635 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:57:13 +0100 Subject: [PATCH 277/572] haskell-lens: disable 'doCheck' to avoid test suite failures Running 4 test suites... Test suite doctests: RUNNING... ### Error in src/Data/Complex/Lens.hs:33: expression `let { a doctests: : hPutChar: invalid argument (invalid character) Test suite doctests: FAIL Test suite logged to: dist/test/lens-3.8.7.3-doctests.log Test suite hunit: RUNNING... Test suite hunit: PASS Test suite logged to: dist/test/lens-3.8.7.3-hunit.log Test suite properties: RUNNING... Test suite properties: PASS Test suite logged to: dist/test/lens-3.8.7.3-properties.log Test suite templates: RUNNING... Test suite templates: PASS Test suite logged to: dist/test/lens-3.8.7.3-templates.log 3 of 4 test suites (3 of 4 test cases) passed. --- pkgs/development/libraries/haskell/lens/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/lens/default.nix b/pkgs/development/libraries/haskell/lens/default.nix index bba84668958..84a66d019dc 100644 --- a/pkgs/development/libraries/haskell/lens/default.nix +++ b/pkgs/development/libraries/haskell/lens/default.nix @@ -25,6 +25,7 @@ cabal.mkDerivation (self: { testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text transformers unorderedContainers vector ]; + doCheck = false; meta = { homepage = "http://github.com/ekmett/lens/"; description = "Lenses, Folds and Traversals"; From cd5f4eefa63cbdd640f1f112be57d69e574d38ff Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:58:28 +0100 Subject: [PATCH 278/572] haskell-graphviz: disable 'doCheck' to avoid test suite failures Test suite graphviz-testsuite: RUNNING... This is the test suite for the graphviz library. If any of these tests fail, please inform the maintainer, including full output of this test suite. ====================================================================== Running test: "Printing and parsing of Attributes". The most common source of errors in printing and parsing are for Attributes. +++ OK, passed 200 tests. All tests for "Printing and parsing of Attributes" were successful! ====================================================================== Running test: "Printing generalised Dot code". When generalising "DotGraph" values to other "DotRepr" values, the generated Dot code should be identical. +++ OK, passed 200 tests. All tests for "Printing generalised Dot code" were successful! ====================================================================== Running test: "Printing and Parsing DotReprs". The graphviz library should be able to parse back in its own generated Dot code for any "DotRepr" instance +++ OK, passed 200 tests. +++ OK, passed 200 tests. +++ OK, passed 200 tests. All tests for "Printing and Parsing DotReprs" were successful! ====================================================================== Running test: "Pre-processing Dot code". When parsing Dot code, some pre-processing is done to remove items such as comments and to join together multi-line strings. This test verifies that this pre-processing doesn't affect actual Dot code by running the pre-processor on generated Dot code. This test is not run on generalised Dot graphs as if it works for normal dot graphs then it should also work for generalised ones. +++ OK, passed 200 tests. All tests for "Pre-processing Dot code" were successful! ====================================================================== Running test: "Augmenting FGL Graphs". The various Graph to Graph functions in Data.GraphViz should only _augment_ the graph labels and not change the graphs themselves. This test compares the original graphs to these augmented graphs and verifies that they are the same. *** Failed! (after 1 test): Exception: Error running utility program: Error messages from neato: -1:']'->[] The tests for "Augmenting FGL Graphs" failed! Not attempting any further tests. Test suite graphviz-testsuite: FAIL Test suite logged to: dist/test/graphviz-2999.16.0.0-graphviz-testsuite.log 0 of 1 test suites (0 of 1 test cases) passed. --- pkgs/development/libraries/haskell/graphviz/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/graphviz/default.nix b/pkgs/development/libraries/haskell/graphviz/default.nix index 9d370993a22..77245ec8c91 100644 --- a/pkgs/development/libraries/haskell/graphviz/default.nix +++ b/pkgs/development/libraries/haskell/graphviz/default.nix @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { colour dlist fgl filepath polyparse QuickCheck temporary text transformers wlPprintText ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/graphviz/"; description = "Bindings to Graphviz for graph visualisation"; From 606d867a60768a0253d634a81772ea788a501c60 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:49:27 +0100 Subject: [PATCH 279/572] haskell-crypto-conduit: disable 'doCheck' to avoid test suite build errors --- pkgs/development/libraries/haskell/crypto-conduit/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/crypto-conduit/default.nix b/pkgs/development/libraries/haskell/crypto-conduit/default.nix index 69351a2a5aa..2b967a5b564 100644 --- a/pkgs/development/libraries/haskell/crypto-conduit/default.nix +++ b/pkgs/development/libraries/haskell/crypto-conduit/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { cereal conduit cryptoApi cryptocipher cryptohash hspec skein transformers ]; + doCheck = false; meta = { homepage = "https://github.com/meteficha/crypto-conduit"; description = "Conduit interface for cryptographic operations (from crypto-api)"; From d38183c803bc15bc9000199b26e534f9d13f58ac Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:50:31 +0100 Subject: [PATCH 280/572] haskell-unordered-containers: disable 'doCheck' to avoid test suite build errors tests/HashSetProperties.hs:76:0: error: missing binary operator before token "(" tests/HashSetProperties.hs:86:0: error: missing binary operator before token "(" --- .../libraries/haskell/unordered-containers/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/unordered-containers/default.nix b/pkgs/development/libraries/haskell/unordered-containers/default.nix index 2f786eba949..288e559ce98 100644 --- a/pkgs/development/libraries/haskell/unordered-containers/default.nix +++ b/pkgs/development/libraries/haskell/unordered-containers/default.nix @@ -11,6 +11,7 @@ cabal.mkDerivation (self: { ChasingBottoms hashable HUnit QuickCheck testFramework testFrameworkHunit testFrameworkQuickcheck2 ]; + doCheck = false; meta = { homepage = "https://github.com/tibbe/unordered-containers"; description = "Efficient hashing-based container types"; From 6789f4c59c744e0a484a147cc3cfea655f4f88ca Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:57:13 +0100 Subject: [PATCH 281/572] haskell-lens: disable 'doCheck' to avoid test suite failures Running 4 test suites... Test suite doctests: RUNNING... ### Error in src/Data/Complex/Lens.hs:33: expression `let { a doctests: : hPutChar: invalid argument (invalid character) Test suite doctests: FAIL Test suite logged to: dist/test/lens-3.8.7.3-doctests.log Test suite hunit: RUNNING... Test suite hunit: PASS Test suite logged to: dist/test/lens-3.8.7.3-hunit.log Test suite properties: RUNNING... Test suite properties: PASS Test suite logged to: dist/test/lens-3.8.7.3-properties.log Test suite templates: RUNNING... Test suite templates: PASS Test suite logged to: dist/test/lens-3.8.7.3-templates.log 3 of 4 test suites (3 of 4 test cases) passed. --- pkgs/development/libraries/haskell/lens/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/lens/default.nix b/pkgs/development/libraries/haskell/lens/default.nix index bba84668958..84a66d019dc 100644 --- a/pkgs/development/libraries/haskell/lens/default.nix +++ b/pkgs/development/libraries/haskell/lens/default.nix @@ -25,6 +25,7 @@ cabal.mkDerivation (self: { testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text transformers unorderedContainers vector ]; + doCheck = false; meta = { homepage = "http://github.com/ekmett/lens/"; description = "Lenses, Folds and Traversals"; From f8cc6962392b0347133882d53dfb8127af2f21fd Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 00:58:28 +0100 Subject: [PATCH 282/572] haskell-graphviz: disable 'doCheck' to avoid test suite failures Test suite graphviz-testsuite: RUNNING... This is the test suite for the graphviz library. If any of these tests fail, please inform the maintainer, including full output of this test suite. ====================================================================== Running test: "Printing and parsing of Attributes". The most common source of errors in printing and parsing are for Attributes. +++ OK, passed 200 tests. All tests for "Printing and parsing of Attributes" were successful! ====================================================================== Running test: "Printing generalised Dot code". When generalising "DotGraph" values to other "DotRepr" values, the generated Dot code should be identical. +++ OK, passed 200 tests. All tests for "Printing generalised Dot code" were successful! ====================================================================== Running test: "Printing and Parsing DotReprs". The graphviz library should be able to parse back in its own generated Dot code for any "DotRepr" instance +++ OK, passed 200 tests. +++ OK, passed 200 tests. +++ OK, passed 200 tests. All tests for "Printing and Parsing DotReprs" were successful! ====================================================================== Running test: "Pre-processing Dot code". When parsing Dot code, some pre-processing is done to remove items such as comments and to join together multi-line strings. This test verifies that this pre-processing doesn't affect actual Dot code by running the pre-processor on generated Dot code. This test is not run on generalised Dot graphs as if it works for normal dot graphs then it should also work for generalised ones. +++ OK, passed 200 tests. All tests for "Pre-processing Dot code" were successful! ====================================================================== Running test: "Augmenting FGL Graphs". The various Graph to Graph functions in Data.GraphViz should only _augment_ the graph labels and not change the graphs themselves. This test compares the original graphs to these augmented graphs and verifies that they are the same. *** Failed! (after 1 test): Exception: Error running utility program: Error messages from neato: -1:']'->[] The tests for "Augmenting FGL Graphs" failed! Not attempting any further tests. Test suite graphviz-testsuite: FAIL Test suite logged to: dist/test/graphviz-2999.16.0.0-graphviz-testsuite.log 0 of 1 test suites (0 of 1 test cases) passed. --- pkgs/development/libraries/haskell/graphviz/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/graphviz/default.nix b/pkgs/development/libraries/haskell/graphviz/default.nix index 9d370993a22..77245ec8c91 100644 --- a/pkgs/development/libraries/haskell/graphviz/default.nix +++ b/pkgs/development/libraries/haskell/graphviz/default.nix @@ -14,6 +14,7 @@ cabal.mkDerivation (self: { colour dlist fgl filepath polyparse QuickCheck temporary text transformers wlPprintText ]; + doCheck = false; meta = { homepage = "http://projects.haskell.org/graphviz/"; description = "Bindings to Graphviz for graph visualisation"; From e993649477b97694ba129d9361532d8d4c006d42 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:13:44 +0100 Subject: [PATCH 283/572] haskell-cabal2nix: update to version 1.44 --- pkgs/development/tools/haskell/cabal2nix/default.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/haskell/cabal2nix/default.nix b/pkgs/development/tools/haskell/cabal2nix/default.nix index e3b6378e3d9..ed26e335870 100644 --- a/pkgs/development/tools/haskell/cabal2nix/default.nix +++ b/pkgs/development/tools/haskell/cabal2nix/default.nix @@ -1,12 +1,14 @@ -{ cabal, Cabal, filepath, hackageDb, HTTP, mtl, regexPosix }: +{ cabal, Cabal, doctest, filepath, hackageDb, HTTP, mtl, regexPosix +}: cabal.mkDerivation (self: { pname = "cabal2nix"; - version = "1.43"; - sha256 = "00blyn8hxj7d0ib7gg0a2gk36scm1isr5m4xsi9nvqay3261b068"; + version = "1.44"; + sha256 = "1j2w5g75nir0ax9pvn1fyj5l1c4s84mbj400any9v0bpv624mffm"; isLibrary = false; isExecutable = true; buildDepends = [ Cabal filepath hackageDb HTTP mtl regexPosix ]; + testDepends = [ doctest ]; meta = { homepage = "http://github.com/NixOS/cabal2nix"; description = "Convert Cabal files into Nix build instructions"; From 7aad2ce1013b7bbe5c4dca02d720c08aba982d42 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:25:05 +0100 Subject: [PATCH 284/572] haskell-defaults.nix: fix build of cabal2nix on GHC versions older than 6.12.x Cabal2nix needs version 1.10.x or later of the Cabal library. --- pkgs/top-level/haskell-defaults.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix index a03f0a6fe46..f99e790de94 100644 --- a/pkgs/top-level/haskell-defaults.nix +++ b/pkgs/top-level/haskell-defaults.nix @@ -85,6 +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; }; }; }; ghc6121Prefs = @@ -95,6 +96,7 @@ deepseq = self.deepseq_1_1_0_2; monadPar = self.monadPar_0_1_0_3; 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 }; @@ -108,6 +110,7 @@ deepseq = self.deepseq_1_1_0_2; monadPar = self.monadPar_0_1_0_3; 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 }; From 90f53a7be1c456f272082d2e87e8022a4c431419 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:41:49 +0100 Subject: [PATCH 285/572] haskell-hakyll: disable 'doCheck' to avoid test suite failures Test suite hakyll-tests: RUNNING... Hakyll.Core.Dependencies.Tests: [ 1] analyze: [OK] [ 2] analyze: [OK] [ 3] analyze: [OK] Hakyll.Core.Identifier.Tests: [ 1] capture: [OK] [ 2] capture: [OK] [ 3] capture: [OK] [ 4] capture: [OK] [ 5] capture: [OK] [ 6] capture: [OK] [ 7] capture: [OK] [ 8] capture: [OK] [ 9] capture: [OK] [10] capture: [OK] [11] capture: [OK] [12] capture: [OK] [13] capture: [OK] [14] capture: [OK] [15] capture: [OK] [ 1] matches: [OK] [ 2] matches: [OK] [ 3] matches: [OK] [ 4] matches: [OK] [ 5] matches: [OK] [ 6] matches: [OK] [ 7] matches: [OK] [ 8] matches: [OK] [ 9] matches: [OK] Hakyll.Core.Provider.Tests: case01: [OK] Hakyll.Core.Routes.Tests: [ 1] runRoutes: [OK] [ 2] runRoutes: [OK] [ 3] runRoutes: [OK] [ 4] runRoutes: [OK] [ 5] runRoutes: [OK] [ 6] runRoutes: [OK] [ 7] runRoutes: [OK] [ 8] runRoutes: [OK] Hakyll.Core.Rules.Tests: runRules: [OK] Hakyll.Core.Runtime.Tests: [ERROR] tests/data/russian.md: hGetContents: invalid argument (invalid byte sequence) [ 1] run: [Failed] ERROR: _testsite/bodies.txt: openFile: does not exist (No such file or directory) Hakyll.Core.Store.Tests: simple get . set: [OK, passed 100 tests] persistent get . set: [OK, passed 100 tests] WrongType get . set: [OK] Hakyll.Core.UnixFilter.Tests: hakyll-tests: tests/data/russian.md: hGetContents: invalid argument (invalid byte sequence) unixFilter rev: [Failed] ERROR: tests/data/russian.md: hGetContents: invalid argument (invalid byte sequence) Hakyll.Core.Util.String.Tests: [ 1] trim: [OK] [ 1] replaceAll: [OK] [ 1] splitAll: [OK] Hakyll.Web.Html.RelativizeUrls.Tests: [ 1] relativizeUrls: [OK] [ 2] relativizeUrls: [OK] [ 3] relativizeUrls: [OK] [ 4] relativizeUrls: [OK] [ 5] relativizeUrls: [OK] Hakyll.Web.Html.Tests: [ 1] demoteHeaders: [OK] [ 1] withUrls: [OK] [ 2] withUrls: [OK] [ 3] withUrls: [OK] [ 4] withUrls: [OK] [ 5] withUrls: [OK] [ 6] withUrls: [OK] [ 1] toUrl: [OK] [ 2] toUrl: [OK] [ 3] toUrl: [OK] [ 1] toSiteRoot: [OK] [ 2] toSiteRoot: [OK] [ 3] toSiteRoot: [OK] [ 4] toSiteRoot: [OK] [ 1] isExternal: [OK] [ 2] isExternal: [OK] [ 3] isExternal: [OK] [ 4] isExternal: [OK] [ 1] stripTags: [OK] [ 2] stripTags: [OK] [ 3] stripTags: [OK] [ 1] escapeHtml: [OK] [ 2] escapeHtml: [OK] Hakyll.Core.Template.Context.Tests: testDateField: [OK] Hakyll.Core.Template.Tests: case01: [OK] applyJoinTemplateList: [OK] Properties Test Cases Total Passed 2 72 74 Failed 0 2 2 Total 2 74 76 Test suite hakyll-tests: FAIL Test suite logged to: dist/test/hakyll-4.1.4.0-hakyll-tests.log --- 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 59a32b0d290..2ca90094bb8 100644 --- a/pkgs/development/libraries/haskell/hakyll/default.nix +++ b/pkgs/development/libraries/haskell/hakyll/default.nix @@ -23,6 +23,7 @@ cabal.mkDerivation (self: { testFrameworkHunit testFrameworkQuickcheck2 text time ]; jailbreak = true; + doCheck = false; meta = { homepage = "http://jaspervdj.be/hakyll"; description = "A static website compiler library"; From e16c5eab9fd5ea3a9d5710c8562cc51acdbbc473 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:44:09 +0100 Subject: [PATCH 286/572] 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 f5b6a52f0ed6b359188c4e1938265312c3f9f957 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:44:44 +0100 Subject: [PATCH 287/572] haskell-hledger-web: re-generate with recent version of cabal2nix --- pkgs/development/libraries/haskell/hledger-web/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/haskell/hledger-web/default.nix b/pkgs/development/libraries/haskell/hledger-web/default.nix index 67adcb0fbdd..4a2d7ef7a95 100644 --- a/pkgs/development/libraries/haskell/hledger-web/default.nix +++ b/pkgs/development/libraries/haskell/hledger-web/default.nix @@ -4,6 +4,7 @@ , parsec, regexpr, safe, shakespeareCss, shakespeareJs , shakespeareText, text, time, transformers, wai, waiExtra, warp , yaml, yesod, yesodCore, yesodDefault, yesodForm, yesodStatic +, yesodTest }: cabal.mkDerivation (self: { @@ -19,6 +20,7 @@ cabal.mkDerivation (self: { shakespeareJs shakespeareText text time transformers wai waiExtra warp yaml yesod yesodCore yesodDefault yesodForm yesodStatic ]; + testDepends = [ yesodCore yesodDefault yesodTest ]; patchPhase = '' sed -r -i -e 's|blaze-html * >= 0.5 *&& < 0.6|blaze-html >= 0.5|' hledger-web.cabal ''; @@ -28,6 +30,5 @@ cabal.mkDerivation (self: { description = "A web interface for the hledger accounting tool"; license = "GPL"; platforms = self.ghc.meta.platforms; - maintainers = [ self.stdenv.lib.maintainers.andres ]; }; }) From f8e282254407ca074e6c43c8f9514c6a12ee117c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:58:19 +0100 Subject: [PATCH 288/572] haskell-cuda: $propagatedBuildNativeInputs is now called $propagatedNativeBuildInputs --- pkgs/development/libraries/haskell/cuda/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/haskell/cuda/default.nix b/pkgs/development/libraries/haskell/cuda/default.nix index 3baa02d2674..2c174b85f63 100644 --- a/pkgs/development/libraries/haskell/cuda/default.nix +++ b/pkgs/development/libraries/haskell/cuda/default.nix @@ -20,8 +20,8 @@ cabal.mkDerivation (self: { for i in Setup.hs Setup.lhs; do test -f $i && ghc --make $i done - - for p in $extraBuildInputs $propagatedBuildNativeInputs; do + + for p in $extraBuildInputs $propagatedNativeBuildInputs; do if [ -d "$p/include" ]; then extraLibDirs="$extraLibDirs --extra-include-dir=$p/include" fi From 32d641d55f2475384a78631e3223ce9bccaf76b0 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:59:05 +0100 Subject: [PATCH 289/572] haskell-cuda: disable 'doCheck' because this package does a mad override of the 'configurePhase' anyway --- pkgs/development/libraries/haskell/cuda/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/libraries/haskell/cuda/default.nix b/pkgs/development/libraries/haskell/cuda/default.nix index 2c174b85f63..d915904b05e 100644 --- a/pkgs/development/libraries/haskell/cuda/default.nix +++ b/pkgs/development/libraries/haskell/cuda/default.nix @@ -34,6 +34,9 @@ cabal.mkDerivation (self: { ./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 6a0c5a2da2e12ed28574aeac27cc44525ac755a5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 01:59:21 +0100 Subject: [PATCH 290/572] haskell-cuda: strip trailing whitespace --- pkgs/development/libraries/haskell/cuda/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/haskell/cuda/default.nix b/pkgs/development/libraries/haskell/cuda/default.nix index d915904b05e..a90efcdf4ca 100644 --- a/pkgs/development/libraries/haskell/cuda/default.nix +++ b/pkgs/development/libraries/haskell/cuda/default.nix @@ -13,9 +13,9 @@ cabal.mkDerivation (self: { # 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 @@ -31,7 +31,7 @@ cabal.mkDerivation (self: { fi done done - + ./Setup configure --verbose --prefix="$out" $libraryProfiling $extraLibDirs $configureFlags ''; From 4417ffa2b50efd50fd79077dd924af7bc667eda9 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 02:01:23 +0100 Subject: [PATCH 291/572] haskell-hledger-web: disable 'doCheck' to avoid test suite build failure tests/main.hs:12:8: Could not find module `HomeTest' Use -v to see a list of the files searched for. --- pkgs/development/libraries/haskell/hledger-web/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/haskell/hledger-web/default.nix b/pkgs/development/libraries/haskell/hledger-web/default.nix index 4a2d7ef7a95..c33026f5fd6 100644 --- a/pkgs/development/libraries/haskell/hledger-web/default.nix +++ b/pkgs/development/libraries/haskell/hledger-web/default.nix @@ -25,6 +25,7 @@ cabal.mkDerivation (self: { sed -r -i -e 's|blaze-html * >= 0.5 *&& < 0.6|blaze-html >= 0.5|' hledger-web.cabal ''; jailbreak = true; + doCheck = false; meta = { homepage = "http://hledger.org"; description = "A web interface for the hledger accounting tool"; From 8f1756e2d417bce5b5b457af2e37f44321483e79 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 25 Feb 2013 02:12:42 +0100 Subject: [PATCH 292/572] 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 293/572] 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 294/572] 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 295/572] 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 296/572] 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 297/572] 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 298/572] 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 299/572] 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 300/572] 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 301/572] 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 302/572] 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 303/572] 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 304/572] 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 305/572] 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 306/572] 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 307/572] 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 308/572] 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 309/572] 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 310/572] 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 311/572] 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 312/572] 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 313/572] 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 314/572] 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 315/572] 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 316/572] 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 317/572] 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 318/572] 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 319/572] 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 320/572] 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 321/572] 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 322/572] 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 323/572] 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 324/572] 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 325/572] 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 326/572] 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 327/572] 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 82f94df719fe9fe5a861eafb575ccb1f8b5b5efb Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 12:37:42 +0100 Subject: [PATCH 328/572] stdenv/setup.sh: Always run postPatch hook. I'm not sure whether this was by intention, but so far postPatch hooks were silently skipped whenever the patches list was empty. This change could possibly change the build results of the following packages: * gcc * cmake (264) * systemtap * quemu-kvm These packages all have in common that they have a postPatch hook and the patches list can be empty when certain conditions are met. Signed-off-by: aszlig --- pkgs/stdenv/generic/setup.sh | 2 -- pkgs/stdenv/mingw/setup.sh | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index c5722c3e874..a474b6a8eaf 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -530,8 +530,6 @@ unpackPhase() { patchPhase() { runHook prePatch - if [ -z "$patchPhase" -a -z "$patches" ]; then return; fi - for i in $patches; do header "applying patch $i" 3 local uncompress=cat diff --git a/pkgs/stdenv/mingw/setup.sh b/pkgs/stdenv/mingw/setup.sh index 4de3c0ddc9b..592580a829e 100755 --- a/pkgs/stdenv/mingw/setup.sh +++ b/pkgs/stdenv/mingw/setup.sh @@ -486,9 +486,7 @@ unpackPhase() { patchPhase() { runHook prePatch - - if test -z "$patchPhase" -a -z "$patches"; then return; fi - + for i in $patches; do header "applying patch $i" 3 local uncompress=cat From 8ad7893bfce1e7585f70aa4e6cc3439fcb3a0019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 23 Feb 2013 17:13:23 +0100 Subject: [PATCH 329/572] make: PATCHES from gentoo also needed for updated firebird to build --- .../gnumake/MAKEFLAGS-reexec.patch | 14 +++ .../gnumake/archives-many-objs.patch | 48 ++++++++ .../gnumake/construct-command-line.patch | 71 ++++++++++++ .../gnumake/copy-on-expand.patch | 58 ++++++++++ .../gnumake/darwin-library_search-dylib.patch | 17 +++ .../tools/build-managers/gnumake/default.nix | 15 +++ .../build-managers/gnumake/glob-speedup.patch | 104 ++++++++++++++++++ .../gnumake/intermediate-parallel.patch | 46 ++++++++ .../gnumake/long-command-line.patch | 54 +++++++++ .../gnumake/memory-corruption.patch | 37 +++++++ .../build-managers/gnumake/oneshell.patch | 24 ++++ .../gnumake/parallel-remake.patch | 39 +++++++ 12 files changed, 527 insertions(+) create mode 100644 pkgs/development/tools/build-managers/gnumake/MAKEFLAGS-reexec.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/construct-command-line.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/copy-on-expand.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/darwin-library_search-dylib.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/glob-speedup.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/long-command-line.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/memory-corruption.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/oneshell.patch create mode 100644 pkgs/development/tools/build-managers/gnumake/parallel-remake.patch diff --git a/pkgs/development/tools/build-managers/gnumake/MAKEFLAGS-reexec.patch b/pkgs/development/tools/build-managers/gnumake/MAKEFLAGS-reexec.patch new file mode 100644 index 00000000000..a2f59657d4c --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/MAKEFLAGS-reexec.patch @@ -0,0 +1,14 @@ +http://bugs.gentoo.org/331975 +https://savannah.gnu.org/bugs/?30723 + +--- main.c 2010/07/19 07:10:53 1.243 ++++ main.c 2010/08/10 07:35:34 1.244 +@@ -2093,7 +2093,7 @@ + const char *pv = define_makeflags (1, 1); + char *p = alloca (sizeof ("MAKEFLAGS=") + strlen (pv) + 1); + sprintf (p, "MAKEFLAGS=%s", pv); +- putenv (p); ++ putenv (allocated_variable_expand (p)); + } + + if (ISDB (DB_BASIC)) diff --git a/pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch b/pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch new file mode 100644 index 00000000000..73c0381ced4 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/archives-many-objs.patch @@ -0,0 +1,48 @@ +diff -u -p -r1.193 -r1.194 +--- read.c 13 Jul 2010 01:20:42 -0000 1.193 ++++ read.c 14 Aug 2010 02:50:14 -0000 1.194 +@@ -3028,7 +3028,7 @@ parse_file_seq (char **stringp, unsigned + { + /* This looks like the first element in an open archive group. + A valid group MUST have ')' as the last character. */ +- const char *e = p + nlen; ++ const char *e = p; + do + { + e = next_token (e); +@@ -3084,19 +3084,19 @@ parse_file_seq (char **stringp, unsigned + Go to the next item in the string. */ + if (flags & PARSEFS_NOGLOB) + { +- NEWELT (concat (2, prefix, tp)); ++ NEWELT (concat (2, prefix, tmpbuf)); + continue; + } + + /* If we get here we know we're doing glob expansion. + TP is a string in tmpbuf. NLEN is no longer used. + We may need to do more work: after this NAME will be set. */ +- name = tp; ++ name = tmpbuf; + + /* Expand tilde if applicable. */ +- if (tp[0] == '~') ++ if (tmpbuf[0] == '~') + { +- tildep = tilde_expand (tp); ++ tildep = tilde_expand (tmpbuf); + if (tildep != 0) + name = tildep; + } +@@ -3152,7 +3152,10 @@ parse_file_seq (char **stringp, unsigned + else + { + /* We got a chain of items. Attach them. */ +- (*newp)->next = found; ++ if (*newp) ++ (*newp)->next = found; ++ else ++ *newp = found; + + /* Find and set the new end. Massage names if necessary. */ + while (1) diff --git a/pkgs/development/tools/build-managers/gnumake/construct-command-line.patch b/pkgs/development/tools/build-managers/gnumake/construct-command-line.patch new file mode 100644 index 00000000000..c504c45291b --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/construct-command-line.patch @@ -0,0 +1,71 @@ +https://savannah.gnu.org/bugs/?23922 + +From 6f3684710a0f832533191f8657a57bc2fbba90ba Mon Sep 17 00:00:00 2001 +From: eliz +Date: Sat, 7 May 2011 08:29:13 +0000 +Subject: [PATCH] job.c (construct_command_argv_internal): Don't assume + shellflags is always non-NULL. Escape-protect characters + special to the shell when copying the value of SHELL into + new_line. Fixes Savannah bug #23922. + +--- + ChangeLog | 7 +++++++ + job.c | 23 ++++++++++++++++------- + 2 files changed, 23 insertions(+), 7 deletions(-) + +diff --git a/job.c b/job.c +index 67b402d..c2ce84d 100644 +--- a/job.c ++++ b/job.c +@@ -2844,12 +2844,12 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + + unsigned int shell_len = strlen (shell); + unsigned int line_len = strlen (line); +- unsigned int sflags_len = strlen (shellflags); ++ unsigned int sflags_len = shellflags ? strlen (shellflags) : 0; + char *command_ptr = NULL; /* used for batch_mode_shell mode */ + char *new_line; + + # ifdef __EMX__ /* is this necessary? */ +- if (!unixy_shell) ++ if (!unixy_shell && shellflags) + shellflags[0] = '/'; /* "/c" */ + # endif + +@@ -2911,19 +2911,28 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + + new_argv = xmalloc (4 * sizeof (char *)); + new_argv[0] = xstrdup(shell); +- new_argv[1] = xstrdup(shellflags); ++ new_argv[1] = xstrdup(shellflags ? shellflags : ""); + new_argv[2] = line; + new_argv[3] = NULL; + return new_argv; + } + +- new_line = alloca (shell_len + 1 + sflags_len + 1 ++ new_line = alloca ((shell_len*2) + 1 + sflags_len + 1 + + (line_len*2) + 1); + ap = new_line; +- memcpy (ap, shell, shell_len); +- ap += shell_len; ++ /* Copy SHELL, escaping any characters special to the shell. If ++ we don't escape them, construct_command_argv_internal will ++ recursively call itself ad nauseam, or until stack overflow, ++ whichever happens first. */ ++ for (p = shell; *p != '\0'; ++p) ++ { ++ if (strchr (sh_chars, *p) != 0) ++ *(ap++) = '\\'; ++ *(ap++) = *p; ++ } + *(ap++) = ' '; +- memcpy (ap, shellflags, sflags_len); ++ if (shellflags) ++ memcpy (ap, shellflags, sflags_len); + ap += sflags_len; + *(ap++) = ' '; + command_ptr = ap; +-- +1.7.12 + diff --git a/pkgs/development/tools/build-managers/gnumake/copy-on-expand.patch b/pkgs/development/tools/build-managers/gnumake/copy-on-expand.patch new file mode 100644 index 00000000000..3f202b4db96 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/copy-on-expand.patch @@ -0,0 +1,58 @@ +fix from upstream cvs + +---------------------------- +revision 1.58 +date: 2011-08-29 12:20:19 -0400; author: psmith; state: Exp; lines: +7 -13; commitid: MdH0jSxpuIy7mqxv; +Save strings we're expanding in case an embedded eval causes them +to be freed (if they're the value of a variable that's reset for example). +See Savannah patch #7534 + +Index: expand.c +=================================================================== +RCS file: /sources/make/make/expand.c,v +retrieving revision 1.57 +retrieving revision 1.58 +diff -u -p -r1.57 -r1.58 +--- expand.c 7 May 2011 20:03:49 -0000 1.57 ++++ expand.c 29 Aug 2011 16:20:19 -0000 1.58 +@@ -197,7 +197,7 @@ variable_expand_string (char *line, cons + { + struct variable *v; + const char *p, *p1; +- char *abuf = NULL; ++ char *save; + char *o; + unsigned int line_offset; + +@@ -212,16 +212,11 @@ variable_expand_string (char *line, cons + return (variable_buffer); + } + +- /* If we want a subset of the string, allocate a temporary buffer for it. +- Most of the functions we use here don't work with length limits. */ +- if (length > 0 && string[length] != '\0') +- { +- abuf = xmalloc(length+1); +- memcpy(abuf, string, length); +- abuf[length] = '\0'; +- string = abuf; +- } +- p = string; ++ /* We need a copy of STRING: due to eval, it's possible that it will get ++ freed as we process it (it might be the value of a variable that's reset ++ for example). Also having a nil-terminated string is handy. */ ++ save = length < 0 ? xstrdup (string) : xstrndup (string, length); ++ p = save; + + while (1) + { +@@ -411,8 +406,7 @@ variable_expand_string (char *line, cons + ++p; + } + +- if (abuf) +- free (abuf); ++ free (save); + + variable_buffer_output (o, "", 1); + return (variable_buffer + line_offset); diff --git a/pkgs/development/tools/build-managers/gnumake/darwin-library_search-dylib.patch b/pkgs/development/tools/build-managers/gnumake/darwin-library_search-dylib.patch new file mode 100644 index 00000000000..de7e4f61521 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/darwin-library_search-dylib.patch @@ -0,0 +1,17 @@ +Fixed default libpatttern on Darwin, imported from prefix overlay. +Got merged upstream: +https://savannah.gnu.org/bugs/?37197 +--- default.c.orig 2009-05-02 12:25:24 +0200 ++++ default.c 2009-05-02 12:25:58 +0200 +@@ -509,7 +509,11 @@ + #ifdef __MSDOS__ + ".LIBPATTERNS", "lib%.a $(DJDIR)/lib/lib%.a", + #else ++#ifdef __APPLE__ ++ ".LIBPATTERNS", "lib%.dylib lib%.a", ++#else + ".LIBPATTERNS", "lib%.so lib%.a", ++#endif + #endif + #endif + diff --git a/pkgs/development/tools/build-managers/gnumake/default.nix b/pkgs/development/tools/build-managers/gnumake/default.nix index cf33e7a5bbc..cb0ab18a40f 100644 --- a/pkgs/development/tools/build-managers/gnumake/default.nix +++ b/pkgs/development/tools/build-managers/gnumake/default.nix @@ -26,6 +26,21 @@ stdenv.mkDerivation { ./impure-dirs.patch ]; + # a bunch of patches from Gentoo, mostly should be from upstream (unreleased) + preConfigure = '' + patch -i ${./archives-many-objs.patch} + patch -i ${./MAKEFLAGS-reexec.patch} + patch -i ${./memory-corruption.patch} + patch -i ${./glob-speedup.patch} + patch -i ${./copy-on-expand.patch} + patch -i ${./oneshell.patch} + patch -i ${./parallel-remake.patch} + patch -p1 -i ${./intermediate-parallel.patch} + patch -i ${./construct-command-line.patch} + patch -i ${./long-command-line.patch} + patch -i ${./darwin-library_search-dylib.patch} + ''; + meta = { description = "GNU Make, a program controlling the generation of non-source files from sources"; diff --git a/pkgs/development/tools/build-managers/gnumake/glob-speedup.patch b/pkgs/development/tools/build-managers/gnumake/glob-speedup.patch new file mode 100644 index 00000000000..c826c2c0e1f --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/glob-speedup.patch @@ -0,0 +1,104 @@ +change from upstream to speed up by skipping unused globs +https://bugs.gentoo.org/382845 + +http://cvs.savannah.gnu.org/viewvc/make/read.c?root=make&r1=1.198&r2=1.200 + +Revision 1.200 +Sat May 7 14:36:12 2011 UTC (4 months, 1 week ago) by psmith +Branch: MAIN +Changes since 1.199: +1 -1 lines +Inverted the boolean test from what I wanted it to be. Added a +regression test to make sure this continues to work. + +Revision 1.199 +Mon May 2 00:18:06 2011 UTC (4 months, 2 weeks ago) by psmith +Branch: MAIN +Changes since 1.198: +35 -25 lines +Avoid invoking glob() unless the filename has potential globbing +characters in it, for performance improvements. + +--- a/read.c 2011/04/29 15:27:39 1.198 ++++ b/read.c 2011/05/07 14:36:12 1.200 +@@ -2901,6 +2901,7 @@ + const char *name; + const char **nlist = 0; + char *tildep = 0; ++ int globme = 1; + #ifndef NO_ARCHIVES + char *arname = 0; + char *memname = 0; +@@ -3109,32 +3110,40 @@ + } + #endif /* !NO_ARCHIVES */ + +- switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl)) +- { +- case GLOB_NOSPACE: +- fatal (NILF, _("virtual memory exhausted")); +- +- case 0: +- /* Success. */ +- i = gl.gl_pathc; +- nlist = (const char **)gl.gl_pathv; +- break; +- +- case GLOB_NOMATCH: +- /* If we want only existing items, skip this one. */ +- if (flags & PARSEFS_EXISTS) +- { +- i = 0; +- break; +- } +- /* FALLTHROUGH */ +- +- default: +- /* By default keep this name. */ ++ /* glob() is expensive: don't call it unless we need to. */ ++ if (!(flags & PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL) ++ { ++ globme = 0; + i = 1; + nlist = &name; +- break; +- } ++ } ++ else ++ switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl)) ++ { ++ case GLOB_NOSPACE: ++ fatal (NILF, _("virtual memory exhausted")); ++ ++ case 0: ++ /* Success. */ ++ i = gl.gl_pathc; ++ nlist = (const char **)gl.gl_pathv; ++ break; ++ ++ case GLOB_NOMATCH: ++ /* If we want only existing items, skip this one. */ ++ if (flags & PARSEFS_EXISTS) ++ { ++ i = 0; ++ break; ++ } ++ /* FALLTHROUGH */ ++ ++ default: ++ /* By default keep this name. */ ++ i = 1; ++ nlist = &name; ++ break; ++ } + + /* For each matched element, add it to the list. */ + while (i-- > 0) +@@ -3174,7 +3183,8 @@ + #endif /* !NO_ARCHIVES */ + NEWELT (concat (2, prefix, nlist[i])); + +- globfree (&gl); ++ if (globme) ++ globfree (&gl); + + #ifndef NO_ARCHIVES + if (arname) diff --git a/pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch b/pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch new file mode 100644 index 00000000000..88f2b238e69 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch @@ -0,0 +1,46 @@ +diff --git a/remake.c b/remake.c +index c0bf709..b1ddd23 100644 +--- a/remake.c ++++ b/remake.c +@@ -612,6 +612,10 @@ update_file_1 (struct file *file, unsigned int depth) + d->file->dontcare = file->dontcare; + } + ++ /* We may have already considered this file, when we didn't know ++ we'd need to update it. Force update_file() to consider it and ++ not prune it. */ ++ d->file->considered = !considered; + + dep_status |= update_file (d->file, depth); + +diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism +index d4250f0..76d24a7 100644 +--- a/tests/scripts/features/parallelism ++++ b/tests/scripts/features/parallelism +@@ -214,6 +214,23 @@ rm main.x"); + rmfiles(qw(foo.y foo.y.in main.bar)); + } + ++# Ensure intermediate/secondary files are not pruned incorrectly. ++# See Savannah bug #30653 ++ ++utouch(-15, 'file2'); ++utouch(-10, 'file4'); ++utouch(-5, 'file1'); ++ ++run_make_test(q! ++.INTERMEDIATE: file3 ++file4: file3 ; @mv -f $< $@ ++file3: file2 ; touch $@ ++file2: file1 ; @touch $@ ++!, ++ '--no-print-directory -j2', "touch file3"); ++ ++#rmfiles('file1', 'file2', 'file3', 'file4'); ++ + if ($all_tests) { + # Jobserver FD handling is messed up in some way. + # Savannah bug #28189 +-- +1.7.12 + diff --git a/pkgs/development/tools/build-managers/gnumake/long-command-line.patch b/pkgs/development/tools/build-managers/gnumake/long-command-line.patch new file mode 100644 index 00000000000..9266786e4da --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/long-command-line.patch @@ -0,0 +1,54 @@ +https://savannah.gnu.org/bugs/?36451 + +From a95796de3a491d8acfc8ea94c217b90531161786 Mon Sep 17 00:00:00 2001 +From: psmith +Date: Sun, 9 Sep 2012 23:25:07 +0000 +Subject: [PATCH] Keep the command line on the heap to avoid stack overflow. + Fixes Savannah bug #36451. + +--- + ChangeLog | 3 +++ + job.c | 13 +++++++++---- + 2 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/job.c b/job.c +index 754576b..f7b7d51 100644 +--- a/job.c ++++ b/job.c +@@ -2984,8 +2984,8 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + return new_argv; + } + +- new_line = alloca ((shell_len*2) + 1 + sflags_len + 1 +- + (line_len*2) + 1); ++ new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1 ++ + (line_len*2) + 1); + ap = new_line; + /* Copy SHELL, escaping any characters special to the shell. If + we don't escape them, construct_command_argv_internal will +@@ -3052,8 +3052,11 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + *ap++ = *p; + } + if (ap == new_line + shell_len + sflags_len + 2) +- /* Line was empty. */ +- return 0; ++ { ++ /* Line was empty. */ ++ free (new_line); ++ return 0; ++ } + *ap = '\0'; + + #ifdef WINDOWS32 +@@ -3194,6 +3197,8 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + fatal (NILF, _("%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"), + __FILE__, __LINE__); + #endif ++ ++ free (new_line); + } + #endif /* ! AMIGA */ + +-- +1.7.12 + diff --git a/pkgs/development/tools/build-managers/gnumake/memory-corruption.patch b/pkgs/development/tools/build-managers/gnumake/memory-corruption.patch new file mode 100644 index 00000000000..b28c07353ec --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/memory-corruption.patch @@ -0,0 +1,37 @@ +--- function.c 2011/04/18 01:25:20 1.121 ++++ function.c 2011/05/02 12:35:01 1.122 +@@ -706,7 +706,7 @@ + const char *word_iterator = argv[0]; + char buf[20]; + +- while (find_next_token (&word_iterator, (unsigned int *) 0) != 0) ++ while (find_next_token (&word_iterator, NULL) != 0) + ++i; + + sprintf (buf, "%d", i); +@@ -1133,21 +1133,14 @@ + + /* Find the maximum number of words we'll have. */ + t = argv[0]; +- wordi = 1; +- while (*t != '\0') ++ wordi = 0; ++ while ((p = find_next_token (&t, NULL)) != 0) + { +- char c = *(t++); +- +- if (! isspace ((unsigned char)c)) +- continue; +- ++ ++t; + ++wordi; +- +- while (isspace ((unsigned char)*t)) +- ++t; + } + +- words = xmalloc (wordi * sizeof (char *)); ++ words = xmalloc ((wordi == 0 ? 1 : wordi) * sizeof (char *)); + + /* Now assign pointers to each string in the array. */ + t = argv[0]; diff --git a/pkgs/development/tools/build-managers/gnumake/oneshell.patch b/pkgs/development/tools/build-managers/gnumake/oneshell.patch new file mode 100644 index 00000000000..fbade127ce6 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/oneshell.patch @@ -0,0 +1,24 @@ +fix from upstream cvs + +---------------------------- +revision 1.245 +date: 2010-08-13 22:50:14 -0400; author: psmith; state: Exp; lines: +1 -1; commitid: 4UaslPqQHZTs5wKu; +- Add oneshell to $(.FEATURES) (forgot that!) + +Index: main.c +=================================================================== +RCS file: /sources/make/make/main.c,v +retrieving revision 1.244 +retrieving revision 1.245 +diff -u -p -r1.244 -r1.245 +--- main.c 10 Aug 2010 07:35:34 -0000 1.244 ++++ main.c 14 Aug 2010 02:50:14 -0000 1.245 +@@ -1138,7 +1138,7 @@ main (int argc, char **argv, char **envp + a macro and some compilers (MSVC) don't like conditionals in macros. */ + { + const char *features = "target-specific order-only second-expansion" +- " else-if shortest-stem undefine" ++ " else-if shortest-stem undefine oneshell" + #ifndef NO_ARCHIVES + " archives" + #endif diff --git a/pkgs/development/tools/build-managers/gnumake/parallel-remake.patch b/pkgs/development/tools/build-managers/gnumake/parallel-remake.patch new file mode 100644 index 00000000000..a19fe7b7d62 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/parallel-remake.patch @@ -0,0 +1,39 @@ +fix from upstream cvs + +---------------------------- +revision 1.247 +date: 2011-09-18 19:39:26 -0400; author: psmith; state: Exp; lines: +5 -3; commitid: 07NxO4T5PiWC82Av; +When we re-exec the master makefile in a jobserver environment, ensure +that MAKEFLAGS is set properly so the re-exec'd make runs in parallel. +See Savannah bug #33873. + +Index: main.c +=================================================================== +RCS file: /sources/make/make/main.c,v +retrieving revision 1.246 +retrieving revision 1.247 +diff -u -p -r1.246 -r1.247 +--- main.c 29 Aug 2010 23:05:27 -0000 1.246 ++++ main.c 18 Sep 2011 23:39:26 -0000 1.247 +@@ -2089,6 +2089,11 @@ main (int argc, char **argv, char **envp + + ++restarts; + ++ /* If we're re-exec'ing the first make, put back the number of ++ job slots so define_makefiles() will get it right. */ ++ if (master_job_slots) ++ job_slots = master_job_slots; ++ + /* Reset makeflags in case they were changed. */ + { + const char *pv = define_makeflags (1, 1); +@@ -2825,9 +2830,6 @@ define_makeflags (int all, int makefile) + && (*(unsigned int *) cs->value_ptr == + *(unsigned int *) cs->noarg_value)) + ADD_FLAG ("", 0); /* Optional value omitted; see below. */ +- else if (cs->c == 'j') +- /* Special case for `-j'. */ +- ADD_FLAG ("1", 1); + else + { + char *buf = alloca (30); From d3821edb9e4485bf1ff5edc6dba557b8132f733d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 10:50:05 +0100 Subject: [PATCH 330/572] gnumake: patch the patches so it looks nice --- .../gnumake/construct-command-line.patch | 6 ++-- .../tools/build-managers/gnumake/default.nix | 29 +++++++++---------- .../build-managers/gnumake/glob-speedup.patch | 4 +-- .../build-managers/gnumake/impure-dirs.patch | 12 ++++---- .../gnumake/intermediate-parallel.patch | 12 ++++---- .../tools/build-managers/gnumake/log.patch | 24 +++++++-------- .../gnumake/long-command-line.patch | 6 ++-- 7 files changed, 46 insertions(+), 47 deletions(-) diff --git a/pkgs/development/tools/build-managers/gnumake/construct-command-line.patch b/pkgs/development/tools/build-managers/gnumake/construct-command-line.patch index c504c45291b..aa4a1afe3fd 100644 --- a/pkgs/development/tools/build-managers/gnumake/construct-command-line.patch +++ b/pkgs/development/tools/build-managers/gnumake/construct-command-line.patch @@ -13,10 +13,10 @@ Subject: [PATCH] job.c (construct_command_argv_internal): Don't assume job.c | 23 ++++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) -diff --git a/job.c b/job.c +diff --git job.c job.c index 67b402d..c2ce84d 100644 ---- a/job.c -+++ b/job.c +--- job.c ++++ job.c @@ -2844,12 +2844,12 @@ construct_command_argv_internal (char *line, char **restp, char *shell, unsigned int shell_len = strlen (shell); diff --git a/pkgs/development/tools/build-managers/gnumake/default.nix b/pkgs/development/tools/build-managers/gnumake/default.nix index cb0ab18a40f..731664f9913 100644 --- a/pkgs/development/tools/build-managers/gnumake/default.nix +++ b/pkgs/development/tools/build-managers/gnumake/default.nix @@ -24,22 +24,21 @@ stdenv.mkDerivation { # Likewise, when searching for included Makefiles, don't look in # /usr/include and friends. ./impure-dirs.patch - ]; - # a bunch of patches from Gentoo, mostly should be from upstream (unreleased) - preConfigure = '' - patch -i ${./archives-many-objs.patch} - patch -i ${./MAKEFLAGS-reexec.patch} - patch -i ${./memory-corruption.patch} - patch -i ${./glob-speedup.patch} - patch -i ${./copy-on-expand.patch} - patch -i ${./oneshell.patch} - patch -i ${./parallel-remake.patch} - patch -p1 -i ${./intermediate-parallel.patch} - patch -i ${./construct-command-line.patch} - patch -i ${./long-command-line.patch} - patch -i ${./darwin-library_search-dylib.patch} - ''; + # a bunch of patches from Gentoo, mostly should be from upstream (unreleased) + ./archives-many-objs.patch + ./MAKEFLAGS-reexec.patch + ./memory-corruption.patch + ./glob-speedup.patch + ./copy-on-expand.patch + ./oneshell.patch + ./parallel-remake.patch + ./intermediate-parallel.patch + ./construct-command-line.patch + ./long-command-line.patch + ./darwin-library_search-dylib.patch + ]; + patchFlags = "-p0"; meta = { description = "GNU Make, a program controlling the generation of non-source files from sources"; diff --git a/pkgs/development/tools/build-managers/gnumake/glob-speedup.patch b/pkgs/development/tools/build-managers/gnumake/glob-speedup.patch index c826c2c0e1f..45971f33590 100644 --- a/pkgs/development/tools/build-managers/gnumake/glob-speedup.patch +++ b/pkgs/development/tools/build-managers/gnumake/glob-speedup.patch @@ -17,8 +17,8 @@ Changes since 1.198: +35 -25 lines Avoid invoking glob() unless the filename has potential globbing characters in it, for performance improvements. ---- a/read.c 2011/04/29 15:27:39 1.198 -+++ b/read.c 2011/05/07 14:36:12 1.200 +--- read.c 2011/04/29 15:27:39 1.198 ++++ read.c 2011/05/07 14:36:12 1.200 @@ -2901,6 +2901,7 @@ const char *name; const char **nlist = 0; diff --git a/pkgs/development/tools/build-managers/gnumake/impure-dirs.patch b/pkgs/development/tools/build-managers/gnumake/impure-dirs.patch index 433f61108db..f6646f1d012 100644 --- a/pkgs/development/tools/build-managers/gnumake/impure-dirs.patch +++ b/pkgs/development/tools/build-managers/gnumake/impure-dirs.patch @@ -1,6 +1,6 @@ -diff -rc make-3.81-orig/read.c make-3.81/read.c -*** make-3.81-orig/read.c 2006-03-17 15:24:20.000000000 +0100 ---- make-3.81/read.c 2007-05-24 17:16:31.000000000 +0200 +diff -rc read.c read.c +*** read.c 2006-03-17 15:24:20.000000000 +0100 +--- read.c 2007-05-24 17:16:31.000000000 +0200 *************** *** 99,107 **** --- 99,109 ---- @@ -15,9 +15,9 @@ diff -rc make-3.81-orig/read.c make-3.81/read.c #endif 0 }; -diff -rc make-3.81-orig/remake.c make-3.81/remake.c -*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100 ---- make-3.81/remake.c 2007-05-24 17:06:54.000000000 +0200 +diff -rc reremake.c +*** remake.c 2006-03-20 03:36:37.000000000 +0100 +--- remake.c 2007-05-24 17:06:54.000000000 +0200 *************** *** 1452,1460 **** --- 1452,1462 ---- diff --git a/pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch b/pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch index 88f2b238e69..9bb7add0bde 100644 --- a/pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch +++ b/pkgs/development/tools/build-managers/gnumake/intermediate-parallel.patch @@ -1,7 +1,7 @@ -diff --git a/remake.c b/remake.c +diff --git remake.c remake.c index c0bf709..b1ddd23 100644 ---- a/remake.c -+++ b/remake.c +--- remake.c ++++ remake.c @@ -612,6 +612,10 @@ update_file_1 (struct file *file, unsigned int depth) d->file->dontcare = file->dontcare; } @@ -13,10 +13,10 @@ index c0bf709..b1ddd23 100644 dep_status |= update_file (d->file, depth); -diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism +diff --git tests/scripts/features/parallelism tests/scripts/features/parallelism index d4250f0..76d24a7 100644 ---- a/tests/scripts/features/parallelism -+++ b/tests/scripts/features/parallelism +--- tests/scripts/features/parallelism ++++ tests/scripts/features/parallelism @@ -214,6 +214,23 @@ rm main.x"); rmfiles(qw(foo.y foo.y.in main.bar)); } diff --git a/pkgs/development/tools/build-managers/gnumake/log.patch b/pkgs/development/tools/build-managers/gnumake/log.patch index ca0d6340790..e6197fd8e78 100644 --- a/pkgs/development/tools/build-managers/gnumake/log.patch +++ b/pkgs/development/tools/build-managers/gnumake/log.patch @@ -1,6 +1,6 @@ -diff -rc make-3.81-orig/job.c make-3.81/job.c -*** make-3.81-orig/job.c 2006-03-20 04:03:04.000000000 +0100 ---- make-3.81/job.c 2009-01-19 19:37:28.000000000 +0100 +diff -rc job.c job.c +*** job.c 2006-03-20 04:03:04.000000000 +0100 +--- job.c 2009-01-19 19:37:28.000000000 +0100 *************** *** 1083,1089 **** appear. */ @@ -18,9 +18,9 @@ diff -rc make-3.81-orig/job.c make-3.81/job.c /* Tell update_goal_chain that a command has been started on behalf of this target. It is important that this happens here and not in -diff -rc make-3.81-orig/main.c make-3.81/main.c -*** make-3.81-orig/main.c 2006-03-20 03:36:37.000000000 +0100 ---- make-3.81/main.c 2009-01-19 19:41:41.000000000 +0100 +diff -rc main.c main.c +*** main.c 2006-03-20 03:36:37.000000000 +0100 +--- main.c 2009-01-19 19:41:41.000000000 +0100 *************** *** 886,891 **** --- 886,900 ---- @@ -87,9 +87,9 @@ diff -rc make-3.81-orig/main.c make-3.81/main.c + int enable_nested_output = 0; + int stdout_nesting_level = 0; + int stderr_nesting_level = 0; -diff -rc make-3.81-orig/make.h make-3.81/make.h -*** make-3.81-orig/make.h 2006-02-16 00:54:43.000000000 +0100 ---- make-3.81/make.h 2009-01-19 19:32:03.000000000 +0100 +diff -rc make.h +*** make.h 2006-02-16 00:54:43.000000000 +0100 +--- make.h 2009-01-19 19:32:03.000000000 +0100 *************** *** 609,611 **** --- 609,614 ---- @@ -99,9 +99,9 @@ diff -rc make-3.81-orig/make.h make-3.81/make.h + extern int enable_nested_output; + extern int stdout_nesting_level; + extern int stderr_nesting_level; -diff -rc make-3.81-orig/remake.c make-3.81/remake.c -*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100 ---- make-3.81/remake.c 2009-01-19 19:39:40.000000000 +0100 +diff -rc reremake.c +*** remake.c 2006-03-20 03:36:37.000000000 +0100 +--- remake.c 2009-01-19 19:39:40.000000000 +0100 *************** *** 1120,1126 **** --- 1120,1137 ---- diff --git a/pkgs/development/tools/build-managers/gnumake/long-command-line.patch b/pkgs/development/tools/build-managers/gnumake/long-command-line.patch index 9266786e4da..39ea05843bf 100644 --- a/pkgs/development/tools/build-managers/gnumake/long-command-line.patch +++ b/pkgs/development/tools/build-managers/gnumake/long-command-line.patch @@ -11,10 +11,10 @@ Subject: [PATCH] Keep the command line on the heap to avoid stack overflow. job.c | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) -diff --git a/job.c b/job.c +diff --git job.c job.c index 754576b..f7b7d51 100644 ---- a/job.c -+++ b/job.c +--- job.c ++++ job.c @@ -2984,8 +2984,8 @@ construct_command_argv_internal (char *line, char **restp, char *shell, return new_argv; } From 9bc36c97295ff82f452240d615f8552e20466ecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 24 Feb 2013 10:55:56 +0100 Subject: [PATCH 331/572] gnumake381: fix the patching because of gnumake --- .../tools/build-managers/gnumake/3.81.nix | 1 + .../build-managers/gnumake/log-3.81.patch | 24 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/pkgs/development/tools/build-managers/gnumake/3.81.nix b/pkgs/development/tools/build-managers/gnumake/3.81.nix index d28198821e3..56d2326c916 100644 --- a/pkgs/development/tools/build-managers/gnumake/3.81.nix +++ b/pkgs/development/tools/build-managers/gnumake/3.81.nix @@ -23,6 +23,7 @@ stdenv.mkDerivation { # /usr/include and friends. ./impure-dirs.patch ]; + patchFlags = "-p0"; meta = { description = "GNU Make, a program controlling the generation of non-source files from sources"; diff --git a/pkgs/development/tools/build-managers/gnumake/log-3.81.patch b/pkgs/development/tools/build-managers/gnumake/log-3.81.patch index 0f3ed6d7299..b98d85a0826 100644 --- a/pkgs/development/tools/build-managers/gnumake/log-3.81.patch +++ b/pkgs/development/tools/build-managers/gnumake/log-3.81.patch @@ -1,6 +1,6 @@ -diff -rc make-3.81-orig/job.c make-3.81/job.c -*** make-3.81-orig/job.c 2006-03-20 04:03:04.000000000 +0100 ---- make-3.81/job.c 2009-01-19 19:37:28.000000000 +0100 +diff -rc job.c job.c +*** job.c 2006-03-20 04:03:04.000000000 +0100 +--- job.c 2009-01-19 19:37:28.000000000 +0100 *************** *** 1083,1089 **** appear. */ @@ -18,9 +18,9 @@ diff -rc make-3.81-orig/job.c make-3.81/job.c /* Tell update_goal_chain that a command has been started on behalf of this target. It is important that this happens here and not in -diff -rc make-3.81-orig/main.c make-3.81/main.c -*** make-3.81-orig/main.c 2006-03-20 03:36:37.000000000 +0100 ---- make-3.81/main.c 2009-01-19 19:41:41.000000000 +0100 +diff -rc main.c main.c +*** main.c 2006-03-20 03:36:37.000000000 +0100 +--- main.c 2009-01-19 19:41:41.000000000 +0100 *************** *** 886,891 **** --- 886,900 ---- @@ -87,9 +87,9 @@ diff -rc make-3.81-orig/main.c make-3.81/main.c + int enable_nested_output = 0; + int stdout_nesting_level = 0; + int stderr_nesting_level = 0; -diff -rc make-3.81-orig/make.h make-3.81/make.h -*** make-3.81-orig/make.h 2006-02-16 00:54:43.000000000 +0100 ---- make-3.81/make.h 2009-01-19 19:32:03.000000000 +0100 +diff -rc make.h +*** make.h 2006-02-16 00:54:43.000000000 +0100 +--- make.h 2009-01-19 19:32:03.000000000 +0100 *************** *** 609,611 **** --- 609,614 ---- @@ -99,9 +99,9 @@ diff -rc make-3.81-orig/make.h make-3.81/make.h + extern int enable_nested_output; + extern int stdout_nesting_level; + extern int stderr_nesting_level; -diff -rc make-3.81-orig/remake.c make-3.81/remake.c -*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100 ---- make-3.81/remake.c 2009-01-19 19:39:40.000000000 +0100 +diff -rc reremake.c +*** remake.c 2006-03-20 03:36:37.000000000 +0100 +--- remake.c 2009-01-19 19:39:40.000000000 +0100 *************** *** 1120,1126 **** --- 1120,1137 ---- From 0a43ce41de63113259566fc5ad5f592b45f937b3 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 27 Feb 2013 03:54:54 +0100 Subject: [PATCH 332/572] 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 333/572] 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 334/572] 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 335/572] 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 336/572] 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 337/572] 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 338/572] 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 339/572] 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 340/572] 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 341/572] 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 342/572] 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 90825913f26efefe671d38fa2abcb4a6c38c62cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 09:54:22 +0100 Subject: [PATCH 343/572] kde48.okteta: disable parallel build It often failed on hydra. --- pkgs/desktops/kde-4.8/kdesdk/okteta.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/desktops/kde-4.8/kdesdk/okteta.nix b/pkgs/desktops/kde-4.8/kdesdk/okteta.nix index 1b53a0e03dc..058636596ad 100644 --- a/pkgs/desktops/kde-4.8/kdesdk/okteta.nix +++ b/pkgs/desktops/kde-4.8/kdesdk/okteta.nix @@ -5,6 +5,8 @@ kde { # TODO: Look what does -DBUILD_mobile add + enableParallelBuilding = false; + meta = { description = "KDE byte editor"; }; From 513a3fb558a04c89091605874e14a1efaac5c507 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 10:40:18 +0100 Subject: [PATCH 344/572] 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 345/572] 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 d6b2f17743b8b2e4b53c24a329db5a9d0e36fe4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 11:14:56 +0100 Subject: [PATCH 346/572] rabbitmq_server: fix via update I haven't tried it, but at least it builds now :-) --- pkgs/servers/amqp/rabbitmq-server/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/servers/amqp/rabbitmq-server/default.nix b/pkgs/servers/amqp/rabbitmq-server/default.nix index 1d93c0c5f22..45ccfc22de7 100644 --- a/pkgs/servers/amqp/rabbitmq-server/default.nix +++ b/pkgs/servers/amqp/rabbitmq-server/default.nix @@ -1,16 +1,17 @@ { 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"; + version = "3.0.2"; + name = "rabbitmq-server-${version}"; 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/v${version}/${name}.tar.gz"; + sha256 = "1xcqv8jmpj768rl3219ksmpsm64imys7h9f3phvmpjfqdw6lnr9x"; }; 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 e23be1b2efa618f20c0006ecda1196d70e918663 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 28 Feb 2013 11:31:44 +0100 Subject: [PATCH 347/572] 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 348/572] 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 349/572] 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 350/572] 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 351/572] 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 352/572] 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 353/572] 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 354/572] 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 355/572] 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 356/572] 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 357/572] 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 358/572] 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 359/572] 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 360/572] 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 361/572] 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 958caa71082d1762501c02795c3ece75aaa94dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 14:06:23 +0100 Subject: [PATCH 362/572] webkit: finally fix (hopefully, but it builds for me) --- .../libraries/webkit/bison26.patch | 515 ++++++++++++++++++ pkgs/development/libraries/webkit/default.nix | 7 +- 2 files changed, 520 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/webkit/bison26.patch diff --git a/pkgs/development/libraries/webkit/bison26.patch b/pkgs/development/libraries/webkit/bison26.patch new file mode 100644 index 00000000000..95898adeb8a --- /dev/null +++ b/pkgs/development/libraries/webkit/bison26.patch @@ -0,0 +1,515 @@ +Index: /trunk/Source/WebCore/ChangeLog +=================================================================== +--- /trunk/Source/WebCore/ChangeLog (revision 124098) ++++ /trunk/Source/WebCore/ChangeLog (revision 124099) +@@ -1,2 +1,27 @@ ++2012-07-30 Alexis Menard ++ ++ Build fix with newer bison 2.6. ++ https://bugs.webkit.org/show_bug.cgi?id=92264 ++ ++ Reviewed by Adam Barth. ++ ++ As stated in http://www.gnu.org/software/bison/manual/html_node/Table-of-Symbols.html ++ YYLEX_PARAM and YYPARSE_PARAM are depecreated since version 1.875. So far all Mac OS ++ version I had access to as well as recent Linux runs at least version 2.3 so it's safe ++ to use the replacement of these deprecated macros in favor of %lex-param and %parse-param. ++ As announced http://lists.gnu.org/archive/html/info-gnu/2012-07/msg00011.html with the release ++ of version 2.6 YYLEX_PARAM and YYPARSE_PARAM are not supported anymore. ++ ++ No new tests : build fix and the patch should not trigger any regressions ++ ++ * css/CSSGrammar.y: ++ * css/CSSParser.cpp: ++ * xml/XPathGrammar.y: Refactored a bit to not use an intermediate PARSER define. ++ * xml/XPathParser.cpp: bison 2.6 declare xpathyyparse in the .h file now, i.e. XPathGrammar.h ++ therefore including this file within the namespace {} declarations leads to xpathyyparse being ++ defined part of WebCore::XPath namespaces but the actual implementation of xpathyyparse is in XPathGrammar.cpp ++ (generated) and not implemented within the WebCore::XPath so it lead to linking issues. Last, XPathGrammar.h needs ++ to be included after the other includes as it uses some XPath types. It breaks the style but CSSParser.cpp is doing the same. ++ + 2012-07-30 Sadrul Habib Chowdhury + +Index: /trunk/Source/WebCore/css/CSSParser.cpp +=================================================================== +--- /trunk/Source/WebCore/css/CSSParser.cpp (revision 124098) ++++ /trunk/Source/WebCore/css/CSSParser.cpp (revision 124099) +@@ -115,5 +115,5 @@ + #endif + +-extern int cssyyparse(void* parser); ++extern int cssyyparse(WebCore::CSSParser*); + + using namespace std; +Index: /trunk/Source/WebCore/css/CSSGrammar.y +=================================================================== +--- /trunk/Source/WebCore/css/CSSGrammar.y (revision 124098) ++++ /trunk/Source/WebCore/css/CSSGrammar.y (revision 124099) +@@ -54,11 +54,10 @@ + #define YYDEBUG 0 + +-// FIXME: Replace with %parse-param { CSSParser* parser } once we can depend on bison 2.x +-#define YYPARSE_PARAM parser +-#define YYLEX_PARAM parser +- + %} + + %pure_parser ++ ++%parse-param { CSSParser* parser } ++%lex-param { CSSParser* parser } + + %union { +@@ -90,5 +89,5 @@ + %{ + +-static inline int cssyyerror(const char*) ++static inline int cssyyerror(void*, const char*) + { + return 1; +Index: /trunk/Source/WebCore/xml/XPathParser.cpp +=================================================================== +--- /trunk/Source/WebCore/xml/XPathParser.cpp (revision 124098) ++++ /trunk/Source/WebCore/xml/XPathParser.cpp (revision 124099) +@@ -33,22 +33,19 @@ + #include "XPathException.h" + #include "XPathNSResolver.h" ++#include "XPathPath.h" + #include "XPathStep.h" + #include + #include + +-int xpathyyparse(void*); +- ++using namespace WebCore; + using namespace WTF; + using namespace Unicode; +- +-namespace WebCore { +-namespace XPath { +- +-class LocationPath; +- +-#include "XPathGrammar.h" ++using namespace XPath; ++ ++extern int xpathyyparse(WebCore::XPath::Parser*); ++#include "XPathGrammar.h" + + Parser* Parser::currentParser = 0; +- ++ + enum XMLCat { NameStart, NameCont, NotPartOfName }; + +@@ -631,4 +628,2 @@ + } + +-} +-} +Index: /trunk/Source/WebCore/xml/XPathGrammar.y +=================================================================== +--- /trunk/Source/WebCore/xml/XPathGrammar.y (revision 124098) ++++ /trunk/Source/WebCore/xml/XPathGrammar.y (revision 124099) +@@ -35,4 +35,5 @@ + #include "XPathPath.h" + #include "XPathPredicate.h" ++#include "XPathStep.h" + #include "XPathVariableReference.h" + #include +@@ -45,6 +46,4 @@ + #define YYDEBUG 0 + #define YYMAXDEPTH 10000 +-#define YYPARSE_PARAM parserParameter +-#define PARSER static_cast(parserParameter) + + using namespace WebCore; +@@ -54,4 +53,5 @@ + + %pure_parser ++%parse-param { WebCore::XPath::Parser* parser } + + %union +@@ -72,5 +72,5 @@ + + static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } +-static void xpathyyerror(const char*) { } ++static void xpathyyerror(void*, const char*) { } + + %} +@@ -119,5 +119,5 @@ + OrExpr + { +- PARSER->m_topExpr = $1; ++ parser->m_topExpr = $1; + } + ; +@@ -139,5 +139,5 @@ + { + $$ = new LocationPath; +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + | +@@ -151,5 +151,5 @@ + $$ = $2; + $$->insertFirstStep($1); +- PARSER->unregisterParseNode($1); ++ parser->unregisterParseNode($1); + } + ; +@@ -160,6 +160,6 @@ + $$ = new LocationPath; + $$->appendStep($1); +- PARSER->unregisterParseNode($1); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->registerParseNode($$); + } + | +@@ -167,5 +167,5 @@ + { + $$->appendStep($3); +- PARSER->unregisterParseNode($3); ++ parser->unregisterParseNode($3); + } + | +@@ -174,6 +174,6 @@ + $$->appendStep($2); + $$->appendStep($3); +- PARSER->unregisterParseNode($2); +- PARSER->unregisterParseNode($3); ++ parser->unregisterParseNode($2); ++ parser->unregisterParseNode($3); + } + ; +@@ -184,9 +184,9 @@ + if ($2) { + $$ = new Step(Step::ChildAxis, *$1, *$2); +- PARSER->deletePredicateVector($2); ++ parser->deletePredicateVector($2); + } else + $$ = new Step(Step::ChildAxis, *$1); +- PARSER->deleteNodeTest($1); +- PARSER->registerParseNode($$); ++ parser->deleteNodeTest($1); ++ parser->registerParseNode($$); + } + | +@@ -195,6 +195,6 @@ + String localName; + String namespaceURI; +- if (!PARSER->expandQName(*$1, localName, namespaceURI)) { +- PARSER->m_gotNamespaceError = true; ++ if (!parser->expandQName(*$1, localName, namespaceURI)) { ++ parser->m_gotNamespaceError = true; + YYABORT; + } +@@ -202,9 +202,9 @@ + if ($2) { + $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$2); +- PARSER->deletePredicateVector($2); ++ parser->deletePredicateVector($2); + } else + $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | +@@ -213,9 +213,9 @@ + if ($3) { + $$ = new Step($1, *$2, *$3); +- PARSER->deletePredicateVector($3); ++ parser->deletePredicateVector($3); + } else + $$ = new Step($1, *$2); +- PARSER->deleteNodeTest($2); +- PARSER->registerParseNode($$); ++ parser->deleteNodeTest($2); ++ parser->registerParseNode($$); + } + | +@@ -224,6 +224,6 @@ + String localName; + String namespaceURI; +- if (!PARSER->expandQName(*$2, localName, namespaceURI)) { +- PARSER->m_gotNamespaceError = true; ++ if (!parser->expandQName(*$2, localName, namespaceURI)) { ++ parser->m_gotNamespaceError = true; + YYABORT; + } +@@ -231,9 +231,9 @@ + if ($3) { + $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$3); +- PARSER->deletePredicateVector($3); ++ parser->deletePredicateVector($3); + } else + $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); +- PARSER->deleteString($2); +- PARSER->registerParseNode($$); ++ parser->deleteString($2); ++ parser->registerParseNode($$); + } + | +@@ -260,6 +260,6 @@ + $$ = new Step::NodeTest(Step::NodeTest::CommentNodeTest); + +- PARSER->deleteString($1); +- PARSER->registerNodeTest($$); ++ parser->deleteString($1); ++ parser->registerNodeTest($$); + } + | +@@ -267,6 +267,6 @@ + { + $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest); +- PARSER->deleteString($1); +- PARSER->registerNodeTest($$); ++ parser->deleteString($1); ++ parser->registerNodeTest($$); + } + | +@@ -274,7 +274,7 @@ + { + $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, $3->stripWhiteSpace()); +- PARSER->deleteString($1); +- PARSER->deleteString($3); +- PARSER->registerNodeTest($$); ++ parser->deleteString($1); ++ parser->deleteString($3); ++ parser->registerNodeTest($$); + } + ; +@@ -294,6 +294,6 @@ + $$ = new Vector; + $$->append(new Predicate($1)); +- PARSER->unregisterParseNode($1); +- PARSER->registerPredicateVector($$); ++ parser->unregisterParseNode($1); ++ parser->registerPredicateVector($$); + } + | +@@ -301,5 +301,5 @@ + { + $$->append(new Predicate($2)); +- PARSER->unregisterParseNode($2); ++ parser->unregisterParseNode($2); + } + ; +@@ -316,5 +316,5 @@ + { + $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + ; +@@ -324,5 +324,5 @@ + { + $$ = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + | +@@ -330,5 +330,5 @@ + { + $$ = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + ; +@@ -338,6 +338,6 @@ + { + $$ = new VariableReference(*$1); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | +@@ -350,6 +350,6 @@ + { + $$ = new StringExpression(*$1); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | +@@ -357,6 +357,6 @@ + { + $$ = new Number($1->toDouble()); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | +@@ -370,6 +370,6 @@ + if (!$$) + YYABORT; +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | +@@ -379,7 +379,7 @@ + if (!$$) + YYABORT; +- PARSER->deleteString($1); +- PARSER->deleteExpressionVector($3); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->deleteExpressionVector($3); ++ parser->registerParseNode($$); + } + ; +@@ -390,6 +390,6 @@ + $$ = new Vector; + $$->append($1); +- PARSER->unregisterParseNode($1); +- PARSER->registerExpressionVector($$); ++ parser->unregisterParseNode($1); ++ parser->registerExpressionVector($$); + } + | +@@ -397,5 +397,5 @@ + { + $$->append($3); +- PARSER->unregisterParseNode($3); ++ parser->unregisterParseNode($3); + } + ; +@@ -413,7 +413,7 @@ + $$->addSubExpression($1); + $$->addSubExpression($3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -431,7 +431,7 @@ + $3->setAbsolute(true); + $$ = new Path(static_cast($1), $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + | +@@ -441,8 +441,8 @@ + $3->setAbsolute(true); + $$ = new Path(static_cast($1), $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($2); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($2); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -454,7 +454,7 @@ + { + $$ = new Filter($1, *$2); +- PARSER->unregisterParseNode($1); +- PARSER->deletePredicateVector($2); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->deletePredicateVector($2); ++ parser->registerParseNode($$); + } + ; +@@ -466,7 +466,7 @@ + { + $$ = new LogicalOp(LogicalOp::OP_Or, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -478,7 +478,7 @@ + { + $$ = new LogicalOp(LogicalOp::OP_And, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -490,7 +490,7 @@ + { + $$ = new EqTestOp($2, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -502,7 +502,7 @@ + { + $$ = new EqTestOp($2, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -514,7 +514,7 @@ + { + $$ = new NumericOp(NumericOp::OP_Add, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + | +@@ -522,7 +522,7 @@ + { + $$ = new NumericOp(NumericOp::OP_Sub, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -534,7 +534,7 @@ + { + $$ = new NumericOp($2, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; +@@ -547,6 +547,6 @@ + $$ = new Negative; + $$->addSubExpression($2); +- PARSER->unregisterParseNode($2); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($2); ++ parser->registerParseNode($$); + } + ; diff --git a/pkgs/development/libraries/webkit/default.nix b/pkgs/development/libraries/webkit/default.nix index 1ba90e67d85..47bdcabd514 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; + s = import ./src-for-default.nix; # 1.10 needs newer gtk3, wait for x-updates version = lib.attrByPath ["version"] s.version args; in rec { @@ -54,13 +54,16 @@ rec { ]; /* doConfigure should be specified separately */ - phaseNames = ["setVars" "fixConfigure" /* "paranoidFixComments" */ "doConfigure" (doPatchShebangs ".") + phaseNames = ["setVars" "doPatch" "fixConfigure" /* "paranoidFixComments" */ "doConfigure" (doPatchShebangs ".") "doReplaceUsrBin" "doMakeInstall" "doAddPrograms"]; setVars = fullDepEntry ('' export NIX_LDFLAGS="$NIX_LDFLAGS -lXt" '') ["minInit"]; + patches = [ ./bison26.patch ]; # http://trac.webkit.org/changeset/124099 + patchFlags = "-p2"; + doReplaceUsrBin = fullDepEntry ('' for i in $(find . -name '*.pl') $(find . -name '*.pm'); do sed -e 's@/usr/bin/gcc@gcc@' -i $i From a606eab76e2537d8e9a16309231bce697add872b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 14:07:50 +0100 Subject: [PATCH 363/572] tangogps: fix bad includes --- pkgs/applications/misc/tangogps/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/misc/tangogps/default.nix b/pkgs/applications/misc/tangogps/default.nix index 854ebb1a438..609849166d1 100644 --- a/pkgs/applications/misc/tangogps/default.nix +++ b/pkgs/applications/misc/tangogps/default.nix @@ -11,6 +11,12 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig gettext gtk gconf curl libexif sqlite libxml2 ]; + # bogus includes fail with newer library version + postPatch = '' + sed -i -e 's,#include ,#include ,g' src/*.c + sed -i -e 's,#include ,#include ,g' src/*.c src/*.h + ''; + meta = { description = "tangoGPS, a user friendly map and GPS user interface"; @@ -30,7 +36,7 @@ stdenv.mkDerivation rec { conveniently pre-cache areas with tangoGPS. ''; - homepage = http://www.tangogps.org/; + #homepage = http://www.tangogps.org/; # no longer valid, I couldn't find any other license = "GPLv2+"; }; From 16ba3d388aeee918d16b8c1293f108218f1c898f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 14:23:20 +0100 Subject: [PATCH 364/572] glibmm: fix buildNativeInputs --- pkgs/development/libraries/glibmm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/glibmm/default.nix b/pkgs/development/libraries/glibmm/default.nix index 05efa275756..962b14bc788 100644 --- a/pkgs/development/libraries/glibmm/default.nix +++ b/pkgs/development/libraries/glibmm/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1i4jsvahva2q0mig7kjnpsw0r3fnpybm8b6hzymfm2hpgqnaa9dl"; }; - buildNativeInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig ]; propagatedBuildInputs = [ glib gdk_pixbuf libsigcxx ]; meta = { From 4cf8fa5f8a6bfd1e8f1100f334d54c25c5029490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 15:11:03 +0100 Subject: [PATCH 365/572] centerim: fix from debian --- .../networking/instant-messengers/centerim/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/instant-messengers/centerim/default.nix b/pkgs/applications/networking/instant-messengers/centerim/default.nix index 6a608e8d950..d746d54974a 100644 --- a/pkgs/applications/networking/instant-messengers/centerim/default.nix +++ b/pkgs/applications/networking/instant-messengers/centerim/default.nix @@ -2,12 +2,18 @@ , withGpg ? true, gpgme ? null}: stdenv.mkDerivation rec { - name = "centerim-4.22.10"; + version = "4.22.10"; + debPatch = "2"; + name = "centerim-${version}"; src = fetchurl { url = "http://centerim.org/download/releases/${name}.tar.gz"; sha256 = "0viz86jflp684vfginhl6aaw4gh2qvalc25anlwljjl3kkmibklk"; }; + patches = fetchurl { + url = "mirror://debian/pool/main/c/centerim/centerim_${version}-${debPatch}.diff.gz"; + sha256 = "18iz3hkvr31jsyznryvyldxm9ckyrpy9sczxikrnw2i2r1xyfj8m"; + }; buildInputs = [ openssl curl ncurses libjpeg ] ++ stdenv.lib.optional withGpg gpgme; From c0f6910758a816d7be066a1cbccb487c6139f300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 15:43:06 +0100 Subject: [PATCH 366/572] fuse_zip: fix with new libzip --- pkgs/tools/filesystems/fuse-zip/default.nix | 6 +++-- pkgs/tools/filesystems/fuse-zip/libzip.patch | 24 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 pkgs/tools/filesystems/fuse-zip/libzip.patch diff --git a/pkgs/tools/filesystems/fuse-zip/default.nix b/pkgs/tools/filesystems/fuse-zip/default.nix index 346b11015f4..a5ac74fe47a 100644 --- a/pkgs/tools/filesystems/fuse-zip/default.nix +++ b/pkgs/tools/filesystems/fuse-zip/default.nix @@ -2,16 +2,18 @@ stdenv.mkDerivation rec { name = "fuse-zip-0.2.13"; - + src = fetchurl { url = "http://fuse-zip.googlecode.com/files/${name}.tar.gz"; sha1 = "9cfa00e38a59d4e06fd47bfaca75ad5e299ecc6b"; }; + patches = [ ./libzip.patch ]; # problems with new libzip; from Gentoo + buildInputs = [ pkgconfig fuse libzip zlib ]; makeFlags = "INSTALLPREFIX=$(out)"; - + meta = { homepage = http://code.google.com/p/fuse-zip/; description = "A FUSE-based filesystem that allows read and write access to ZIP files"; diff --git a/pkgs/tools/filesystems/fuse-zip/libzip.patch b/pkgs/tools/filesystems/fuse-zip/libzip.patch new file mode 100644 index 00000000000..f2348e5f1ba --- /dev/null +++ b/pkgs/tools/filesystems/fuse-zip/libzip.patch @@ -0,0 +1,24 @@ +diff -ru fuse-zip-0.2.13/lib/bigBuffer.cpp fuse-zip-0.2.13.new//lib/bigBuffer.cpp +--- fuse-zip-0.2.13/lib/bigBuffer.cpp 2010-12-06 12:34:32.000000000 -0500 ++++ fuse-zip-0.2.13.new//lib/bigBuffer.cpp 2011-09-28 21:40:01.294946957 -0400 +@@ -236,7 +236,7 @@ + len = offset; + } + +-ssize_t BigBuffer::zipUserFunctionCallback(void *state, void *data, size_t len, enum zip_source_cmd cmd) { ++zip_int64_t BigBuffer::zipUserFunctionCallback(void *state, void *data, zip_uint64_t len, enum zip_source_cmd cmd) { + CallBackStruct *b = (CallBackStruct*)state; + switch (cmd) { + case ZIP_SOURCE_OPEN: { +diff -ru fuse-zip-0.2.13/lib/bigBuffer.h fuse-zip-0.2.13.new//lib/bigBuffer.h +--- fuse-zip-0.2.13/lib/bigBuffer.h 2010-12-06 12:34:32.000000000 -0500 ++++ fuse-zip-0.2.13.new//lib/bigBuffer.h 2011-09-28 21:40:23.203719133 -0400 +@@ -52,7 +52,7 @@ + * never called because read() always successfull. + * See zip_source_function(3) for details. + */ +- static ssize_t zipUserFunctionCallback(void *state, void *data, size_t len, enum zip_source_cmd cmd); ++ static zip_int64_t zipUserFunctionCallback(void *state, void *data, zip_uint64_t len, enum zip_source_cmd cmd); + + /** + * Return number of chunks needed to keep 'offset' bytes. From bd4c0e7cd193ce99eaf9556a709026ac1f8cfc71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 15:54:15 +0100 Subject: [PATCH 367/572] graphicsmagick137: fix by using older libpng ToDo: is this still needed by someone? --- pkgs/top-level/all-packages.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 134fcd57812..6d9d534c412 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7082,7 +7082,9 @@ let graphicsmagick = callPackage ../applications/graphics/graphicsmagick { }; - graphicsmagick137 = callPackage ../applications/graphics/graphicsmagick/1.3.7.nix { }; + graphicsmagick137 = callPackage ../applications/graphics/graphicsmagick/1.3.7.nix { + libpng = libpng12; + }; gtkpod = callPackage ../applications/audio/gtkpod { inherit (gnome) libglade; From fc82aa049ba4d1af7e9c8bbfd7e3baa8c0631604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 16:00:49 +0100 Subject: [PATCH 368/572] hddtemp: try to fix by Gentoo patches --- pkgs/tools/misc/hddtemp/byteswap.patch | 28 ++++++++++++++++++++++++++ pkgs/tools/misc/hddtemp/default.nix | 9 ++++++--- pkgs/tools/misc/hddtemp/dontwake.patch | 20 ++++++++++++++++++ pkgs/tools/misc/hddtemp/execinfo.patch | 21 +++++++++++++++++++ pkgs/tools/misc/hddtemp/satacmds.patch | 26 ++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 pkgs/tools/misc/hddtemp/byteswap.patch create mode 100644 pkgs/tools/misc/hddtemp/dontwake.patch create mode 100644 pkgs/tools/misc/hddtemp/execinfo.patch create mode 100644 pkgs/tools/misc/hddtemp/satacmds.patch diff --git a/pkgs/tools/misc/hddtemp/byteswap.patch b/pkgs/tools/misc/hddtemp/byteswap.patch new file mode 100644 index 00000000000..7b0dddc2ae4 --- /dev/null +++ b/pkgs/tools/misc/hddtemp/byteswap.patch @@ -0,0 +1,28 @@ +diff -Nuar --exclude '*~' hddtemp-0.3-beta15.orig/src/sata.c hddtemp-0.3-beta15/src/sata.c +--- hddtemp-0.3-beta15.orig/src/sata.c 2006-05-14 02:09:55.579437498 -0700 ++++ hddtemp-0.3-beta15/src/sata.c 2006-05-14 02:06:08.495948437 -0700 +@@ -88,7 +88,9 @@ + return strdup(_("unknown")); + else + { ++ //fprintf(stderr,"sata_model1=%s\n",identify + 54); + sata_fixstring(identify + 54, 24); ++ //fprintf(stderr,"sata_model2=%s\n",identify + 54); + return strdup(identify + 54); + } + } +diff -Nuar --exclude '*~' hddtemp-0.3-beta15.orig/src/satacmds.c hddtemp-0.3-beta15/src/satacmds.c +--- hddtemp-0.3-beta15.orig/src/satacmds.c 2006-05-14 02:09:40.983470339 -0700 ++++ hddtemp-0.3-beta15/src/satacmds.c 2006-05-14 02:09:02.319557333 -0700 +@@ -98,7 +98,10 @@ + /* convert from big-endian to host byte order */ + for (p = end ; p != s;) { + unsigned short *pp = (unsigned short *) (p -= 2); +- *pp = ntohs(*pp); ++ char tmp = p[0]; ++ p[0] = p[1]; ++ p[1] = tmp; ++ //*pp = ntohs(*pp); + } + + /* strip leading blanks */ diff --git a/pkgs/tools/misc/hddtemp/default.nix b/pkgs/tools/misc/hddtemp/default.nix index 7db9324c281..df75e7b3389 100644 --- a/pkgs/tools/misc/hddtemp/default.nix +++ b/pkgs/tools/misc/hddtemp/default.nix @@ -7,20 +7,23 @@ stdenv.mkDerivation { url = http://download.savannah.nongnu.org/releases/hddtemp/hddtemp.db; sha256 = "1fr6qgns6qv7cr40lic5yqwkkc7yjmmgx8j0z6d93csg3smzhhya"; }; - + src = fetchurl { url = http://download.savannah.nongnu.org/releases/hddtemp/hddtemp-0.3-beta15.tar.bz2; sha256 = "0nzgg4nl8zm9023wp4dg007z6x3ir60rwbcapr9ks2al81c431b1"; }; + # from Gentoo + patches = [ ./byteswap.patch ./dontwake.patch ./execinfo.patch ./satacmds.patch ]; + configurePhase = '' mkdir -p $out/nix-support cp $db $out/nix-support/hddtemp.db ./configure --prefix=$out --with-db-path=$out/nix-support/hddtemp.db - ''; + ''; - meta = { + meta = { description = "Tool for displaying hard disk temperature"; homepage = https://savannah.nongnu.org/projects/hddtemp/; license = "GPL2"; diff --git a/pkgs/tools/misc/hddtemp/dontwake.patch b/pkgs/tools/misc/hddtemp/dontwake.patch new file mode 100644 index 00000000000..969da7a70e4 --- /dev/null +++ b/pkgs/tools/misc/hddtemp/dontwake.patch @@ -0,0 +1,20 @@ +--- hddtemp-0.3-beta15/src/sata.c 2012-07-01 16:35:01.681708074 +0200 ++++ hddtemp-0.3-beta15/src/sata.c 2012-07-01 16:33:58.172109699 +0200 +@@ -125,6 +125,17 @@ + dsk->fd = -1; + return GETTEMP_NOSENSOR; + } ++ ++ switch(ata_get_powermode(dsk->fd)) { ++ case PWM_STANDBY: ++ case PWM_SLEEPING: ++ if (!wakeup) ++ return GETTEMP_DRIVE_SLEEP; ++ case PWM_UNKNOWN: ++ case PWM_ACTIVE: /* active or idle */ ++ default: ++ break; ++ } + + /* get SMART values */ + if(sata_enable_smart(dsk->fd) != 0) { diff --git a/pkgs/tools/misc/hddtemp/execinfo.patch b/pkgs/tools/misc/hddtemp/execinfo.patch new file mode 100644 index 00000000000..1e7239535d4 --- /dev/null +++ b/pkgs/tools/misc/hddtemp/execinfo.patch @@ -0,0 +1,21 @@ +--- hddtemp-0.3-beta15/configure.in~ 2005-10-17 19:14:19 +0000 ++++ hddtemp-0.3-beta15/configure.in 2006-12-11 18:23:22 +0000 +@@ -18,6 +18,7 @@ + AC_HEADER_STDC + AC_CHECK_HEADERS(fcntl.h) + AC_CHECK_HEADERS(netinet/in.h) ++AC_CHECK_HEADERS(execinfo.h) + AC_CHECK_TYPE(in_addr_t, ,[AC_DEFINE_UNQUOTED([in_addr_t], [uint32_t], [Define to 'uint32_t' if does not define.])], [#include ]) + + # Checks for typedefs, structures, and compiler characteristics. +--- hddtemp-0.3-beta15/src/backtrace.c-orig 2006-12-11 18:20:41 +0000 ++++ hddtemp-0.3-beta15/src/backtrace.c 2006-12-11 18:23:28 +0000 +@@ -18,7 +18,7 @@ + + #include + +-#if defined(__i386__) && defined(__GLIBC__) ++#ifdef HAS_EXECINFO_H + + #include + diff --git a/pkgs/tools/misc/hddtemp/satacmds.patch b/pkgs/tools/misc/hddtemp/satacmds.patch new file mode 100644 index 00000000000..d67e0681f33 --- /dev/null +++ b/pkgs/tools/misc/hddtemp/satacmds.patch @@ -0,0 +1,26 @@ +diff -Naurp hddtemp-0.3-beta15-orig/src/satacmds.c hddtemp-0.3-beta15/src/satacmds.c +--- hddtemp-0.3-beta15-orig/src/satacmds.c 2007-02-10 14:25:15.000000000 +0100 ++++ hddtemp-0.3-beta15/src/satacmds.c 2007-02-10 14:26:53.000000000 +0100 +@@ -54,7 +54,6 @@ int sata_pass_thru(int device, unsigned + unsigned char cdb[16]; + unsigned char sense[32]; + int dxfer_direction; +- int ret; + + memset(cdb, 0, sizeof(cdb)); + cdb[0] = ATA_16; +@@ -78,13 +77,7 @@ int sata_pass_thru(int device, unsigned + cdb[6] = cmd[1]; + cdb[14] = cmd[0]; + +- ret = scsi_SG_IO(device, cdb, sizeof(cdb), buffer, cmd[3] * 512, sense, sizeof(sense), dxfer_direction); +- +- /* Verify SATA magics */ +- if (sense[0] != 0x72 || sense[7] != 0x0e || sense[9] != 0x0e || sense[10] != 0x00) +- return 1; +- else +- return ret; ++ return scsi_SG_IO(device, cdb, sizeof(cdb), buffer, cmd[3] * 512, sense, sizeof(sense), dxfer_direction); + } + + void sata_fixstring(unsigned char *s, int bytecount) From d505b8c49032118f7d11d669d2641c2c81a78bcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 28 Feb 2013 16:34:19 +0100 Subject: [PATCH 369/572] freedink: update and fix --- pkgs/games/freedink/default.nix | 44 ++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/pkgs/games/freedink/default.nix b/pkgs/games/freedink/default.nix index f41063272ce..a30ff7e2f87 100644 --- a/pkgs/games/freedink/default.nix +++ b/pkgs/games/freedink/default.nix @@ -1,24 +1,46 @@ { stdenv, fetchurl, SDL, SDL_mixer, SDL_image, SDL_ttf, SDL_gfx -, pkgconfig, fontconfig, libzip, zip, zlib }: +, pkgconfig, intltool, fontconfig, libzip, zip, zlib }: -stdenv.mkDerivation rec { - name = "freedink-1.08.20101114"; +let + version = "1.08.20121209"; + + freedink_data = stdenv.mkDerivation rec { + name = "freedink-data-${version}"; + + src = fetchurl { + url = "mirror://gnu/freedink/${name}.tar.gz"; + sha256 = "1mhns09l1s898x18ahbcy9gabrmgsr8dv7pm0a2ivid8mhxahn1j"; + }; + + prePatch = "substituteInPlace Makefile --replace /usr/local $out"; + }; + +in stdenv.mkDerivation rec { + name = "freedink-${version}"; src = fetchurl { url = "mirror://gnu/freedink/${name}.tar.gz"; - sha256 = "0h3i7p7awk5flymh22xaazm2r56hv86z2il2gmbzrr6xh434zffa"; + sha256 = "19xximbcm6506kvpf3s0q96697kmzca3yrjdr6dgphklp33zqsqr"; }; - buildInputs = [ SDL SDL_mixer SDL_image SDL_ttf SDL_gfx pkgconfig fontconfig libzip zip zlib] ; + buildInputs = [ + SDL SDL_mixer SDL_image SDL_ttf SDL_gfx + pkgconfig intltool fontconfig libzip zip zlib + ]; + + postInstall = '' + mkdir -p "$out/share/" + ln -s ${freedink_data}/share/dink "$out/share/" + ''; meta = { - description = "GNU FreeDink, a free, portable and enhanced version of the Dink Smallwood game engine. "; + description = "A free, portable and enhanced version of the Dink Smallwood game engine"; - longDescription = - '' GNU FreeDink is a new and portable version of the Dink Smallwood - game engine, which runs the original game as well as its D-Mods, - with close compatibility, under multiple platforms. - ''; + longDescription = '' + GNU FreeDink is a new and portable version of the Dink Smallwood + game engine, which runs the original game as well as its D-Mods, + with close compatibility, under multiple platforms. + ''; homepage = http://www.freedink.org/; license = "GPLv3+"; From 94fe64b3eb067c0f8533bbb582b98cd4c7e79f0a Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 28 Feb 2013 18:44:05 +0100 Subject: [PATCH 370/572] 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 371/572] 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 372/572] 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 373/572] 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 374/572] 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 375/572] 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 376/572] 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 377/572] 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 378/572] 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 379/572] 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 380/572] 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 381/572] 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 382/572] 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 383/572] 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 384/572] 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 385/572] 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 386/572] 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 387/572] 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 388/572] 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 389/572] 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 390/572] 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 391/572] 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 392/572] 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 393/572] 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 394/572] 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 395/572] 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 396/572] 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 397/572] 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 398/572] 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 399/572] 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 400/572] 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 401/572] 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 402/572] 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 403/572] 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 404/572] 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 405/572] 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 406/572] 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 407/572] 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 408/572] 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 409/572] 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 410/572] 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 411/572] 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 412/572] 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 413/572] 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 414/572] 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 415/572] 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 416/572] 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 417/572] 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 418/572] 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 419/572] 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 420/572] 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 421/572] 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 422/572] 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 423/572] 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 424/572] 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 425/572] 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 426/572] 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 427/572] 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 428/572] 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 429/572] 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 430/572] 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 431/572] 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 432/572] 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 433/572] 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 434/572] 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 435/572] 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 436/572] 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 437/572] 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 438/572] 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 439/572] 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 440/572] 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 441/572] 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 442/572] 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 443/572] 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 444/572] 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 445/572] 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 446/572] 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 447/572] 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 448/572] 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 449/572] 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 450/572] 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 451/572] 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 452/572] 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 453/572] 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 454/572] 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 455/572] - 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 456/572] 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 457/572] 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 458/572] 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 459/572] 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 460/572] 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 461/572] 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 462/572] 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 463/572] 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 464/572] 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 465/572] 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 466/572] 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 467/572] 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 468/572] 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 469/572] 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 470/572] 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 471/572] 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 472/572] 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 473/572] 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 474/572] 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 475/572] 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 476/572] 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 477/572] 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 478/572] 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 479/572] 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 480/572] =?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 481/572] 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 482/572] 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 483/572] 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 484/572] 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 485/572] 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 486/572] 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 487/572] 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 488/572] 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 489/572] 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 490/572] 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 491/572] 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 492/572] 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 493/572] 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 494/572] 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 495/572] 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 496/572] 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 497/572] 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 498/572] 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 499/572] 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 500/572] 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 501/572] 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 502/572] 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 503/572] 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 504/572] 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 505/572] 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 506/572] 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 507/572] 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 508/572] 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 509/572] 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 510/572] 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 511/572] 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 512/572] 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 513/572] 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 514/572] 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 515/572] 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 516/572] 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 517/572] 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 518/572] 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 519/572] 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 520/572] 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 521/572] 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 522/572] 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 523/572] 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 524/572] 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 525/572] 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 526/572] 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 527/572] 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 528/572] 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 529/572] 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 530/572] 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 531/572] 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 532/572] 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 533/572] 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 534/572] 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 535/572] 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 536/572] 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 537/572] 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 538/572] 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 539/572] 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 540/572] 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 541/572] 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 542/572] 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 543/572] 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 544/572] 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 545/572] 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 546/572] 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 547/572] 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 548/572] 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 549/572] 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 550/572] 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 551/572] 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 552/572] 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 553/572] 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 554/572] 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 555/572] 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 556/572] 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 557/572] 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 558/572] 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 559/572] 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 560/572] 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 561/572] 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 562/572] 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 563/572] 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 564/572] 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 565/572] 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 566/572] 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 567/572] 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 568/572] 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 569/572] 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 570/572] 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 571/572] 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 f0c683faec406c2d8da30bf2ef6ef33413c00f5b 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 572/572] 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}";