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 014ce9d3b971..56265fda55d0 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 014ce9d3b971..ff136329d607 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 ff136329d607..7d51a74020fb 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 eac577869e29..79019cbc4891 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 7d51a74020fb..7a243e889719 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 d040a4c9a57a..e531f6160ff3 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 000000000000..5238b42035bf --- /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 4b01c9d33e8e..5c0b1a3b101e 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 2c0ca37553df..38def9c59a69 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 b2c784635699..f6cadaf02819 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 2beabc6a3272..adb4c65a4be7 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 adb4c65a4be7..f6e6164aa99e 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 000000000000..bc82079aa791 --- /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 b2b7915eb632..91e51b694fbb 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 000000000000..a11eb501a861 --- /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 91e51b694fbb..efb302648d29 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 7fe0013d0d29..70e629e1ebf2 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 efb302648d29..5b9a793eb8b0 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 153cee7db75a..a54802ef9b00 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 c10e56d11460..b19329666756 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 15b4aa009864..babaa2e24821 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 9c969ed858fd..916f38f66c57 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 851dda488dcd..c6d25384be22 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 a9568dde4963..89ff67fac37c 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 0b4ae85c73a1..85a1fb7bdef5 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 74827d407b74..3ea60db5fb56 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 5f71e6222508..dbfc60c189c7 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 d22bfa840e78..29163f897370 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 fd20b7c7547d..681ee6820739 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 39df11063ada..28881da84c38 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 ef46b12747b1..9c3c25eff0a7 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 28216a54815c..ff4b03c1e6ab 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 544f6c0d6747..ebb44f1512b3 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 97078f2fb84f..173529b443d4 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 a56c35a214ba..67d44bd1ebb5 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 17b9a6664364..46c4a39c1961 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 284c7116ce6c..2816a38c4130 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 3babf8727354..f7812a2692da 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 6f858398bc9a..7ecd70f25f7f 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 1ccedad6d114..cc910711768b 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 a11eb501a861..b7b0dc8e974d 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 d1b4494090cb..34e4bf978a4f 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 84187bb4c1f4..38f4375becdf 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 8970c1d1042f..36ec82d88c39 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 3ba52da0050a..7a4e18b32956 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 d0dc0a5b571a..9995cd6b9770 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 f1922a95b7e3..deb1090dd4ab 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 135d57f0024c..290e60ff3b71 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 452c75e28659..39bcc63248e5 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 fc6c189db8eb..aff309b184f0 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 59eca41fff35..b441dc324588 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 6ddbaa13eff4..e2a36c2f1843 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 65a86b46cca3..b0e720ff4879 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 0e9999532a0c..d853e217a7f8 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 5af1efc31f25..a661a83c7318 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 dc412ca9a9ee..ebb46f68bc82 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 e902cce44e5f..cf62afc6c013 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 000000000000..9d7b6fa7a281 --- /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 f6e6164aa99e..2955262a0c66 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 000000000000..7828cf843982 --- /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 f6e6164aa99e..efdb5887251e 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 700aa9a4e001..416e08c0c97f 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 756509a4b956..2364c1f28273 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 2364c1f28273..43c2aa4dba5b 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 000000000000..682de656459e --- /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 3aeaf41ad571..d2fef932a786 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 416e08c0c97f..da3de4c968d2 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 d2fef932a786..f6832b2fd3b2 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 000000000000..58e6f28453a1 --- /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 c95060a5ffbf..b07a51c1ace3 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 4769d78a2fdc..33a5dbc0735f 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 efdb5887251e..fcd4a4af6aea 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 ce4421f9ca7f..d16af28010c2 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 000000000000..f71248a28f4d --- /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 47dd47664296..f13221d4afea 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 6b06e54e73d6..000000000000 --- 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 8e717ff52d82..000000000000 --- 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 f13221d4afea..4786e4e1345d 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 98dd7d8fb8ea..9c91ad80d6da 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 395a5c9f0848..000000000000 --- 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 ce90891bb0ba..000000000000 --- 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 f03a940679a6..000000000000 --- 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 598e6eb414d1..000000000000 --- 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 cffaa6bfe09b..000000000000 --- 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 468132a2a81e..000000000000 --- 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 76c285ae599a..000000000000 --- 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 07fd734a1f2e..000000000000 --- 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 e14d1acf33da..000000000000 --- 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 0e0f1a86939d..000000000000 --- 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 dc6e8e555b21..000000000000 --- 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 e0c61d3a1f59..000000000000 --- 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 45c82f1ec025..000000000000 --- 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 c0f89784bfbc..000000000000 --- 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 bfe7fddd7381..000000000000 --- 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 c3f342194646..000000000000 --- 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 5215697bbca9..b54ea8cc623f 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 000000000000..9bc9634469c7 --- /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 000000000000..a42e882710a7 --- /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 000000000000..0a61e027356d --- /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 2f1ab8a8e93c..972442dc56bb 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 000000000000..62c5bbe52205 --- /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 000000000000..baef68728487 --- /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 afa934b60316..1bd257991c97 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 000000000000..3131ea679b01 --- /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 7f5f18173b26..8e87212c7f7d 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 4518897cc2fc..a97a11c6f123 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 20e82a2c92f8..4f0e7062e459 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 7a567d629358..88874722b7d0 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 000000000000..e30fcf223571 --- /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 490390d1bac3..94fc0e369e5c 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 000000000000..848fca345c5e --- /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 000000000000..a1da730b35b4 --- /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 fde8a2c3953a..625780adb313 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 b8165ebb1783..b4c9c790ac1b 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 000000000000..a026c4664f18 --- /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 bad3b52a6bbc..7a9b2596e755 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 000000000000..a8e7e66c7051 --- /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 000000000000..4cbadaeb54ae --- /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 000000000000..e608d4591069 --- /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 000000000000..4f287af6437f --- /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 000000000000..e2fea73eaeb4 --- /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 000000000000..07a3ffc6bafd --- /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 000000000000..18d043c51fde --- /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 6d0f997500cd..dda5dc89defd 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 f922b194f877..af70aea755af 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 000000000000..1cc5b6e01be4 --- /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 000000000000..f47e66267d50 --- /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 000000000000..b2e85e4d71a5 --- /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 000000000000..927771e7311b --- /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 000000000000..603759d47c06 --- /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 98891a260480..075f8fae7232 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 b3b58f43e1b9..4341a225febb 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 ee68f85725ab..287f9f7fb12e 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 fef902fec035..b39d8bc4aff3 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 287f9f7fb12e..318a336faa66 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 f6832b2fd3b2..c7414eec6715 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 c7414eec6715..8578514f968c 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 000000000000..7a73314d0e37 --- /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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

lqj=l<-58iCRa%!x)J*w&&v1hGX_6bqjq5 z&g|H)4W&XgpyQ=9dW$`sbusCYv?PiTXdsf4SqKQI{o(1~9sb|D`Clhkena==FTY}M z>UoLktIR9a_!uKMMWIX~8_;xjv|z>$i$5&L%E9M|{*QI!5QpNcn|>Pf*L7Lq;u9VmHJ)NXz1KQ;pFoZgfDklwV2{9hA|u!C@D*MG5i4PV!Yz|08J z$2c(=pKLqfIMrp@ zqmk@HaPT$!x6a_EuX62RMxcN|5YvLN;?c{=9rux|-zv4`f73zVL0=*4{E-G5>g>z)^U@2sjBOh)6J>W%@xCH}7epGTO#Nsh?> za&jDYfNMbHKE+Lh3GaD9%rp_B)z8N9lxsg`j!`6|VsmX22Pr<@2hC=H-R*i;3-mITq1i3L&vS z_aYYK&^o$`JlqU0&dk^He1GTuUD=y5tzy1EHggB)GGXmJhKEYW z^#(?^b074LB()l)0Eor~in`iS?(|@n7@_RLg+dujK?T6*1EE4-Z0Q(zAXX>}D8F7y z?Q2csmsPK1-{pM{R%q5$4PQ(SbJ3QwbNX9d#cvqAVXj%aO_Ek3F;X0X2}0U>bJh`g zhuZf3d(O$X=X~#;G3T?!GuwA3YgBT{P~K+(C5a%|3jdjEl0S(LG(?_skb;z*-&b0s zW$=t#TU=oYc)+F26zCWXIz)K&%BJMggP@Ln{e(yJLsNhoL^gygdzNYk}$vQxG{TT%7(PZYdtgZQaC_Px9z=9@$A?hP$iP_xx zO8?pSWkIghESPlXJ)Np4ZTn1fTQWCSd+?Ebuue~~>wdy<w=(Z{mBm|X!Z%ncA~llEXq2*MDLVh3xe_SU(HKcD4j^}ie4&Pz4~`!+C7$B#e8{jK}2M`*CRrjg7xNrVW9VehwOQ!u@z zg1Fi3uhBD8KOV+H$%R}mio!$hI^W)}^ln?d_IWn`DqZLVn82tte9JZn-biZi=p8&o z^E?G)8s8`4K((M=fHi$ywIXs#+sbRw*KxQpaU_cSiL`WbO0|rwOE(C}`APoc*1dyJPWq87H5!jHN1VbmXjrR6i+f;|_ z2ciYL0C-UA`c=xjMzh$e6GO)2Vdrynb}{rvdqcBGq|Zf|(PDew2&Bx#vSo562=zM5 z$gcy!af_0d&bTTZ`nxLreZ9SK(AH$6nYC>Q34L_ zK!Ltw$_Tw@17JXKU6s1sFAP^8f|EP#M}Nfdx}FE*xBDr+!0u+LgGm)*1ZFI9D5geW zWalVSFk=wQ(!&BaAx~dNF+X=_ys=-aD)mH_UoXG8eRbK-Q8Z5^MJr--WULm9u>sESw>y_6Ti|f0uXRvbsSBj{z#$ue(-OD{1(NAWA-%0eD)c zuQ?@cY_Cth)aYbvPKd>$i0YUx?*t!2*%6BB{cFthe|(x#gPt_*0U31>$61{Tl;<&r z2T8tXia_V~#3xWWD+pc$seEA!IS^%<{^U6k?9WyS!6p*)7{A$i|G+con864U^bW`N zvZJTw1==%*biTO`iH_Btdst?wo;%(#YwNvr&Q)tVlfHKACX+xkpJXO_>-xQ51}OXmTKpmMJ8F*PH5RGKu#92lk8E zeL>f~eQSjsJtA{{gKy)Bql9z3zH=|ZlXAL`Wd9)Xt~8L6Ndhp0A?E+H?{_u&uf6L( z2Zyjdrpk-`0Ga3{BO*cy7W#*$>>+GQiRRAvgoI%v_z@|R3E}d;MMODqKYZGPpY(+g z6T1^<(iRl#e!HvvU$D!g+!_&0$cuPo^SawVi^BdtGxEC*A>6>wn?5w7(@!pcga$w) z8}_i;C`yDd8%Ke2XnOydnxXhQbm%k~vvuIN-I!JZ&BuPn^f+?IeTUJfo4Z{sDh@r*s=0ofaJDpjamdH^@G`h< z==W#jumQRE|7o$hUJxkCoy|SIJ`NMZiIVlYvs0!X%A~abb|+@DkDg&5~m>mAdS$K8mY_g5Oaq zB&ayHf8DC3v)$EKVYT)gnEom7*YtWVnReiA=^#tyP7p-u+tCfH@?GAOW%VB!oO;z8 zZHD?*Jc;i;_NBq3%E=i zOc0|9gw^$%64#u;81xOG&?c7IDA+ZQrP@BNg0Q{{s$wP+BXow`bsf4(*Rw*|;_r5kpSWpVf=*d7o$5Y^=0Mva=8(A_PQ1roS48joi?3V)}R$ z^am>0a=lfKs$?EfoD|kUDSezearQiZZb=$T0*E zQUFen9OPqJFP$U=H~J5~H?&RdmIs~0kghmo=<`l*2^wV!mH86@83`gDW~;Xo2j1}8 zw;!vUwZh(V49tMUV*^!#iz_2d3vtvXF+&TCI<&A~j$4K^Z^6fCGg~jK?h%EZ<#V@= zEj@NKBrwOpp`W z>ke!bz+2@RC?OJRyW_KW94Vxa_X1$Br!y7wicxznUaM@rQ z7ucOejaGj9<>|6IZ$7nE&foXEPZMADa(q7ql;TI?K&j6Zi_39wwH*uKLdabVtEH~; z<(_b(IN~{|8I+o$7K8Ht+w^?@`o6~}#&l2bA>_DEz_ex{m!++E38)~fi045AgG|rv zehFJ_+z1K!yemSG|3^kd8Ch7Iz~uDxUBEr2vc(|Dii`ND3*7v(D;RAo`@99(rqh3V zf9qbL@(sz;=^Nj-wGi7%-7b+Urd`0*`$Hl+s5|awIaROi+qW8;OC6g%WTo@P+3H;F zzT5@&?ehC^-ArzZc3z&JITO>#Y78FlxBXA|_BO);1+x<igs26wcJ7)+OamRQ%Zpa$i@DTMNi?liF_>mqO+~YtW!jLo z^L2QpAQ;T8rcZdGV$}teQHF;HS8FnH4fmNe-q}7q z8^#rp+Z?lkPkI_(e?nW2dSm-mVXuUK+iz&U5IJk}(Ut)QO@s`9-}gMyJJ<*BuRmGT zzjMfi!r_n3b2#1WhVD=C-0NHTw#XJ%6^>}5#KNjd{oyftgTe+tAP!@U5YMMy0H(+b zxfsdvk24IIVV5KR`JpmlgJUVLx-?JW?}N`&e#+J(butD?IGUIk1rnQqpuo`!gb03M zKcaX*_kuIgcxVzjhz&OY#6t-qBD545@D0!xzX!ks{6I?reaI#OFgOzeU~VB12PH}X zG>9TYkpv;&Fp`~PNFES4!zG0%EHL{sMIR%Zr^;c!BQ|L zR)8>4XIYbg0wEPB2BN>-u1IJ*8K%pvPCp^Q!D)QEJX-y^8K>=hpGK^w%yWzrbMQqV zK>h^&m@D_Ila!&jJ1@zuzIPzx2!Ro>#1dwdF^onB6}s7oLQCT`mBnTNEd*l}$e~&l z<<~`Z+h|iT%6)KmjS|&^iqBhC%iz{JzG0Z~DQWM1Xj>)W+Pa;2m6n$n?`F-$GzH)Q|C>F1)vR;x*tFw6$XipM{=GSH)lzPMsL;q-4{tN{8M7( zbeFAc^EG=Os{NXeW3*=K?f9(rr+e4lW#JGcHdt&%o1Hbrqq_Z}R?gTgAfE*V1!#~& z=%}9~0wWr{Km(XhM3O)#ibU2QnFHztjG=?c=6N5y^f@?yb{0u4#MP^*T-qx7d5*`y z)j^({hJpf2pah}DuTf*a3#MPyZ|!6CIOWDo>}@P_0nSVZ5qdaP?j7cMowyuC}oFf^(<1XW1ui4hm>U4$ZI5%;2KM#r?SE z894CPN*WSp3lI%-DGM?R5=yjal8b!cl>)F?1o`Vvsiuu+U~c9}!6H#=Dd^Y*-9*#` zGbhufGUgPzK4}gh45tbSRqB3eqZ0+R*cuH5viC( zBN&3(J?~e-;iy|E-7}Uo%)nu7V4tg*JMZu_){1Ut;**?QD|ic%FkIg<#d=N&GlmpE zHRw4R49$foY`><7@p}3nTgS&D`M*-_!8w(yzOy2Tk#T+q^!5BN?aOuhQQqMG(4?@! zMyiHnGKqF`hhhkrfFn>@P^|B;m*T(Q9sRz`s=(7r&U&Rm6j3?{;7}XMYPogfS*@FQ zu2MQ+CUKkgZV@t*E3j$-BbeqjegQfMZS1aDuzdqwty)4LLIA=kYZjHqHB0*>2xBA| ze-xX6lMkg%pG$d({qp|m;-zUD44~15AYrajl4m4(1R4l+B+n}uY`0s|%Tdhs|FTn+ z<&G`^VIp*b88SE{8j@p&$te5{UrAw=n$kuDt+njn?bmyZvqP?53btbx7V~KS^Ht3D zx_r&`)5oYyzPnk*L(6=+?tWSbtF$fZc1yR;vRbyS4H|u|&urA^+0(P`2c>;ln3Cwq zp9vUq0KPI9xFdUwWmR-gp->d0V>^~KiId(nC`3NRCT`Q} z6J!GmhRRsjMg_S9g)Am%Qm5B=G)`>ak%S6T5K#s1%K4T~-tE8y#^+xFC@4K*&` zYscz%TmA1Tvc*R|BLvl*thS>xMjWjVt9X2M6qVnrYdRn4*w^28(!1_&dVKZmm!gVJ z?lEd2NX7(N4|xex3}A@?(J&}bkTyIJO~%oE)1}d#=^N*jA zYkGF&+p<601zuLy-#aI>`mv2}iGy{l;!Eg!;c2i{yJi(DG#7%>h+06`tk3&k?#X3B z^7`MASQ+e=L?~!zfzzUzDir|4LbwPRSIAx^QRT24Xcmfln3WNOl`@>*R6B)_f9{GV zPx=U<*}_7_;|NATI6tfOY}?%Xgd9rp$X%VDfM&NLHG*k$r}zC>^5f=I?0#7M+LIT)s~{ax9~_&)N_0)d>b ze608v^ET)1cIO!E0w39Nx$OeDje+fyE1mKUV0z=fDAeYMLq8CG^(H3TDRD8{BsSbJ~?|BdsYzto2We= zdhgYYdqpXl{&hVV2T3+!69e!LWNdmHt&U8<4^b(PeX<1w_V7~*zd|(|UWZ=E?1N2B zj9SE4Mp77@Eg_pg3n>u*xkw7hG?aDnP*57YgEhW0w6tsst){TEGG;9*1%)XadLs5f zh=5c^1ZqQ|IFwFxo22G*+Bkdao0`?;0532lX$V{?Iq-i7D^x6ZKShth4HRP;KxEhH z@y)2T0B?5>Gwzy7(XT!_f{xp;*!~(JUR96WMkNQLu#)3D`JoXs=>&lp^OddQYp>c% z6{-4`%};xh34{R{j6_!|>Htg;jCRK^ zhbJ4Kv;7?}6<1b8#st9O-11(;Oob6M#{Kv>)dLY~_fqW9#c{KI6<&sgO1|l*kNYUd zPgWruLhWy}p7o^GW7etIkTm_-qql!e;?cHMV^?9Y*zAWn?QPgggw}?-XrMtuhxiw! zT!`=cd&#F(g0XUmWzlJjyK0uzL|xLlY9`Ar^kJ-ZnSP_feP{tZKMSfTo;^{`9?DFozUj0a$T)8&_0ZHLof{t2?!dSZ3N8>(SXetpUvLLIr(zF)rkl5 zi{^AYzN7Wk@n{xncB-e6W`o~ET3)vnCP@b?w0|Qgp?#!I1!pn=16b@N%VD4t6aBe)T)1Yss~9D%FAjDgM!at_`| ziBi!-^4T9OKD%=ULl_tUV*tPzkfgyJNV7{MiQ=I*xn8#7Y``WF-3ctL^WN|YuK#U| z2#7`h8b6zj>bb{}0s@cis`A)G0QC$1stC1aK!>CnZN6#RWLKDgoM!1Fd@Nj_afC0HX5!nY}+Ns=yVu}(h zAfmtt_HAJVKv=MX!YCsKB7y2MeJ|5N37^l_K=-^ElGz1n6`rCt0U=NT$?-`5Xc_C8 zKn0Ny2t@z~AL1OZ=eGbA_at!2bJBDl1n`=#z|`;aYwRF;NHB@h`1Xee?*lx z8}v}H;6u=nR*wyY7EA7!B0V^^I2f-RJ*uj)eRyBReWUl_gXt(Kzee6hAD)! zlZ@0x0An3}^Aq&`Yg#7R1u2plq089VW>~-AL;a-0(iI6=!eT=hLaHuVk&&@|5};=? zqM@*vx>Wl*OA|H#>QlAsw3vS%cTfJDb~x2K4z7VN|in4H$7%mH@K~;4$e;y^lh58 zicr^YRHbQUWWlMes5Adf+{HB7M@2BOeJ3;UmvRLE5Lqd^Tv>3QLefXJYfSt9l7g&{ z8S`f5iP?wq>b@S8a<849hW|JR@&gRt{l8AY{V|APt<-wJGYVTkNJ8V|(t3Q&Ip4D`vf z($%^YT#-9_^}L=0c8}>&KnAk!E>|UGWD?i1L1h2gzr>sHzEO-aQx*~0OdK&Dka31XWgi(VYbQ&zMj5nn zNVm^Mn>QLI8M^%+wVz~prp?b=m2h-^aM9r2q1nb)Hk#AMMxVW+++0r|Ha@_G9cs-3mzph+f>IDIap{-+~0iM%ASi z`-3CEar>E!(EpKp!@k~5+KY1GXUUbecEy?NLi}!(yZAq z5O(qw6wfG@9D= zr%@+~x0sI)emMdJA*GR^G-^#sQDh(l#s-K#qOrmo*71_A_Xf$Dd{zp-?g)(q!m^j z?bytK2rw7`SsIe>29rpKH5ZqI&iL5ezn_xs%Zb8M?(ErSLaNpkh|QSYT_tom^DE9P zifnAWhxrkG7xtcL(1GY$$+{=zXU!?f;P4F65I&P zlQip7JGlkZxg8`ZLlWem!du923>+HsFf)(QKMx1%+hF%SM`FKXh~lqnV1R3lmz%zu zAH<1F6|*5PsvvV%zB~z~BFOoLD56O!O5=jaT4*~J+_ry++~w1148uUuh(t>O06I

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

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

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

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

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

wK$nLW8e@Bv@HeMd^zN%_;fIw*7TFAkX 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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 4786e4e1345d..cafe80758314 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 a11eb501a861..000000000000 --- 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 5b9a793eb8b0..27012c9bff8a 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 70e629e1ebf2..411684e4953c 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 27012c9bff8a..91e51b694fbb 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 000000000000..7a7f40c6d833 --- /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 91e51b694fbb..5cce38ae624c 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 000000000000..53b7062cd0d8 --- /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 5cce38ae624c..36069e8854fa 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 c6624208048a..f0a1969ffbab 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 9c3c25eff0a7..805519d3d30c 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 58720e33f7b9..6538e17c41ab 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 05e97291f378..618438e927f6 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 638f2e2c3bfc..52c74af4d4d9 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 46c4a39c1961..418c8c4ca741 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 7316e519d65e..b87cde894472 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 b441dc324588..8456aa39a8eb 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 afa19491ce5e..96d756bc7d2a 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 928e9723e081..42740ea2e1b8 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 f9258792a2ec..a46143066c1e 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 47f99a1d555c..202dfe2b02e9 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 cafe80758314..311b1ccdf7b6 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 b3b58f43e1b9..9772c3531020 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 b16adbea8684..36b0ccc7e09d 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 f0f7fcbb9cee..220abf88ae7a 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 a58430401c59..48f050f98cc2 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 341939ea40f6..cf2fe713461f 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 7f63e20d3e9a..db9068947407 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 d229228b94f7..1ba90e67d85f 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 271022d8e7f4..a5ecbfd6e3a0 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 c6ad08768231..f0a6ade8444b 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 320372786a50..7b1ccb97dc4b 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 36b0ccc7e09d..9e4b8d12712a 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 4792ae790be6..000000000000 --- 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 000000000000..05efa2757568 --- /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 311b1ccdf7b6..8707db525207 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 56265fda55d0..a262ad75b8be 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 9d5ac3abe781..4009bbd94641 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 36069e8854fa..828f158376af 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 4dd789b49e5a..3a0b9ab59b92 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 a54802ef9b00..1e722a186dc4 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 6ed553516b60..5016b816ff73 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 3d25c6c215f4..c11dfe4f398f 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 828f158376af..ab60ca32ff0b 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 75c71f9cfdf7..b7bf00f07dd7 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 7f11462aa02e..3d11b4841738 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 ab60ca32ff0b..ff8fd6a24c77 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 aff309b184f0..66c1f645267a 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 a5884786b001..650807c324a2 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 08c07a719735..ae6806a258a9 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 ae6806a258a9..68c83a8e78c0 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 f0a6ade8444b..9af44446c788 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 9af44446c788..5f3cb2b48d38 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 0842836ccec8..cd083f0d80ad 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 5a8f6b8caaea..2c2557cdc5c5 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 43d1011ec0a1..e9efcfaf7f00 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 c01550b132ac..000000000000 --- 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 609d2f55d223..000000000000 --- 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 2c2557cdc5c5..6ecba1add761 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 73db728b1a63..e112427126ab 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 6c3ff038c74a..f56becf4512a 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 5ed445b6984d..b5e0092975c2 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 bddb3471bfe6..9486acfef656 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 e0fcb0573a48..faf4e49b968b 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 7f70eb952e11..7c0dd552a66c 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 3be6d0c3c333..26d32594fba2 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 ba530374c71f..61cd62fefd46 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 cbb72754b1bf..85a676a05b1f 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 896e034ee76b..0e607092412b 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 a6f8b2dc0646..de0fef9b73f3 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 b11aba8ade76..4284e20dd50f 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 a5ecbfd6e3a0..80e174390081 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 9f71bc5e202a..3b52133058f1 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 ac897554ce20..d711d8a75ca5 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 9fd308a7e213..42d337b8eace 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 ba9d9574366a..46aa6e4d77eb 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 80e174390081..10926f299d3e 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 e268cdb7bbae..3b9b8cce9e7c 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 9c96c2a8fd26..c1847809c062 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 58e6f28453a1..927b249a9247 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 0358e1c982c2..45253b65edba 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 ebacc84e8c6e..12dfc20e7360 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 cfa86af3c379..d2d2ab37d306 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 9ef13735b084..8c24ae6fdbee 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 190c48ba56ed..a9d1578495ab 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 1eaa1baf86d6..14da5f3468b4 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 000000000000..cd4ef3c9fed7 --- /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 7a37c61c4955..d372c5cf8fc9 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 7a30d011be26..a3938c1af4c4 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 000000000000..df34d24af942 --- /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 08e08b876b66..01993fa1cd87 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 000000000000..8fbc8ceec52e --- /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 961d14753335..de8e1d1df1da 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 10926f299d3e..c7fe618bce63 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 fe90156d84cf..fa0bb9bb4f7c 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 c7fe618bce63..290b841553e3 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 46be78965fbd..19a0df261695 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 1eb9ee1186ff..0c2b957bc7ca 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 3bbc9e4277b4..72087c76b05d 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 000000000000..774add431fab --- /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 c7a0401f3ee9..8863af259842 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 c8c685196cdf..b2fd13837d79 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 aadeb3e2a675..000000000000 --- 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 000000000000..eb0543aa5b0f --- /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 5c1c399ab49a..d41db2e44983 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 4dacdb9f1ed9..527642348d25 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 1b2081c4dd09..56abf34e1b39 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 87764483f47e..7d84cf889932 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 5a3cb9d041b5..4ccb7d4df8ba 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 af960c1b9933..e69ae5f98f7b 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 b6b96a2439f1..a6a624c0a878 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 b31338a65951..46aba67702df 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 a4c90cd1c61f..b535961357b0 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 684507a1d2e0..ec49770d269b 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 4e4bcd3f9b62..af83765c7a21 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 7ffc918f678d..9baac518ff76 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 cde31b5cef97..0df1c652761e 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 000000000000..601b6ede0fb9 --- /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 d2d2ab37d306..8a5a65f8ed09 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 a02a6ebabac0..1baa96cd6da8 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 136a825eef90..ce8ad3f9d52c 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 b23b58a3f820..daaf780e45da 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 8deb26abc1da..63733a35b204 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 ee9d241424c8..0f2326420cbb 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 9910768b5470..185532589c6a 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 000000000000..0e1898a45564 --- /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 000000000000..23f08eef623e --- /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 8707db525207..f1670eab5986 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 3ffdc415f880..b545fe8b55f2 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 195cb469051f..000000000000 --- 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 f32e9ed572d3..000000000000 --- 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 290b841553e3..8a786c82e4ce 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 da6440b58faf..cd2860920d67 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 97192e55be37..394cd550b968 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 f3d68c931e6f..000000000000 --- 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 8a786c82e4ce..db6b461e6ee6 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 db1b3c6c4671..b38774cd02bb 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 79385bd88a96..df7f728c752d 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 ff8fd6a24c77..51b08f8c30c2 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 15bb647b5427..000000000000 --- 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 51b08f8c30c2..ae0717cdd527 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 ae0717cdd527..20790e6f7d3a 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 db92e0fa55b6..4a6713580da7 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 000000000000..881328d875b6 --- /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 20790e6f7d3a..4f3cd1b5363b 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 bc7b3c57e60b..6ed4b7cce98b 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 23f08eef623e..4a1765c7e03c 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 000000000000..bbeb2851ea38 --- /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 db6b461e6ee6..f70045f2f66d 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 000000000000..8b7d5527372b --- /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 8707db525207..52003c176185 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 c1847809c062..df6387b1f812 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 927b249a9247..1c59a2ff4862 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 ebf9628126e2..b016a6f715c1 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 000000000000..f75b537485d8 --- /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 a69249b216d3..9125c84bd7a1 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 4be88a20e24a..873065d54244 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 000000000000..fdc1fa41a335 --- /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 22e177191a57..28908189cf32 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 1751994e3de3..d41d1cbe7522 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 b75405b42727..e49525a42bfc 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 000000000000..7139ec98c285 --- /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 f70045f2f66d..069d52d8ac6b 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 000000000000..03069f9fe14e --- /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 52003c176185..308d5cdca9b2 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 979faa2e5977..e434c97db2b0 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 000000000000..0be7ae00eb95 --- /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 e7c5997021db..f3f8520a918d 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 794a97b205fa..2535fb603ba7 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 000000000000..dbc94b06d4c9 --- /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 19d1738182f4..8ea4106709ab 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 8ea4106709ab..6c4adfaa1a71 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 db57e97b2943..051da9dc2f8d 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 051da9dc2f8d..26100c98ad7c 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 26100c98ad7c..038b05df8a4b 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 19c105bf4f02..39fd99792667 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 038b05df8a4b..334b7e6f2c26 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 81fbf5ad98a1..86f0106ed050 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 b424551a2f95..09171ab25706 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 68b985507b6f..2814eae845f2 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 705a0a5fdea4..4a413e2e7b85 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 5c6057ace9e9..0c7fa0bfa789 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 5fbb2ed8a843..805bf36f5df8 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 cff762864bc6..a0b328d702cc 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 f345e7c98e1c..4adae562476e 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 6cb7ed57b4c4..f0c103622a9e 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 fc9b09bd0d74..beec7ded7893 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 4b8a513914a1..12c3e34571e8 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 ad161f971024..d4cc74902776 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 d3307d0a30d3..19afa5ab75e6 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 b0f89619b1c5..515cec37a995 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 a0da6384e958..1b943208dea4 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 c5caa55e97f0..5dd76b4d6e00 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 916f38f66c57..37af5eec0af5 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 fda3ae1474b2..c352ce7ca8ec 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 5891131d7e85..67450dc88874 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 c6d25384be22..3a2d044de64d 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 ef95d13809f1..b4f205e41b21 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 89ff67fac37c..16c352b7a332 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 44f0e0b0e236..59e0f7187515 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 becd1a24ec60..afd607fe5e82 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 65f39c8cc081..ede82e5c2ed3 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 20107eb17844..6b76aee47a1e 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 58e0ebbbe000..51425084e1c3 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 bae237375854..ca2f36159292 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 234491cde368..7d3cacdd67a9 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 85a1fb7bdef5..6af68223834b 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 01c26aab79f3..4c2f076039ee 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 81ae5ebddb09..edbb079eec42 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 3ea60db5fb56..4dada2457914 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 29163f897370..69351a2a5aa3 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 70cd3f44252a..af6985cd9ede 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 dc6d83a765de..b095b1ea5f4e 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 275622d3cad8..dba34752611e 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 2dc0cad97729..81b361a24779 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 9970d87fbe04..f59a80b2b65a 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 bb7f0e23fbf1..3baa02d26747 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 2af4bb9f3f1b..228fcd28c785 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 a25603453a75..3ecfe2db8527 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 4ba8b16ec46e..0b956680a84f 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 1e83cbaa8d95..0427a937f840 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 6709569b0540..bd8b64aa509a 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 df92c4a6cf50..5dffb52ce1ed 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 878eba660a06..cad61e52ee0c 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 482fd766487f..3ba059261794 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 5c4a9402020b..a4d0cfd247a1 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 e266aa15ff87..c9544b2c1f69 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 119d9d185e55..145d3c1c203d 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 681ee6820739..46ae27fc0901 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 80b6760a3b7b..142b513e5924 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 7eb49668e3cb..1c12e5dbb0b0 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 609863e808fa..9d370993a22c 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 68b79bdcc3b5..59a32b0d290b 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 28881da84c38..7b61aee26dfa 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 3a0b9ab59b92..dba052a0fc1e 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 96fe7ae0eb13..ffb3f98e8b33 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 ff8aa25bd2d2..15d32de346df 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 6538e17c41ab..9551581dadf6 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 bffe1ad58096..3880537e7eaf 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 e7d5756b7599..4b84ad627840 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 4c897f20ef7e..949874bfa910 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 ff4b03c1e6ab..eaf1754b6223 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 ebb44f1512b3..5ff4b4cd95ed 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 58d4dd7ecbfd..3571c160f6b7 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 618438e927f6..39091256ec0f 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 d0837d21bff4..c4c064fbf811 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 f8b1f1d51a42..cdf269b0d3c3 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 c342f80a6c25..1ec2b659f0c5 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 fc569f996a89..fc8c15edf570 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 e05b93655e41..4571b869e3bd 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 991213067f65..aa3cd5fcdf60 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 cfcc69641b5d..1a907a384f1f 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 b5f8851796e7..bba846689584 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 fc77388727fd..7402d6f31db3 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 fbb09db9bb87..1d675e88d874 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 158feeee18a7..2e29269a9fdf 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 54fc100b7dd8..06dcfaa11390 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 b06ee1363c87..22018087226e 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 8407daef6423..f22ae9e106fc 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 1e2d56147c33..d20f4f061e4e 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 67d44bd1ebb5..032592f974ba 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 fb313005bdaf..840712e34160 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 29452da7b2e7..557dea081fdb 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 28fa50d83424..dc0c1811e591 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 4009bbd94641..6f245cf18400 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 d1485b7cf1f1..002f68eded7c 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 3e04a33990e3..46f530b8cd4f 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 5abc63091464..14b9f8d70813 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 b82dc4ed83df..16b47a9c8ae0 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 2816a38c4130..117a63618d4a 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 f7812a2692da..036deebae20d 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 3e3a1b7dbfd6..29c74d84015f 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 541fa2026d98..fa60370f1f5e 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 53b7062cd0d8..1f38962ddd3a 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 ef4016d003d5..8d62f67a1281 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 f657f4e0ca52..35b7fec32765 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 8ce0b1254166..fd94874e3642 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 5016b816ff73..56174254c219 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 01bf73fd5013..55bf276d1f82 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 4e9516d107cb..d4cc135cc62a 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 0e04ff4fd448..d38002eebdaa 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 15245bfe0bcd..325021c1cca3 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 c8223cecac4f..fcd7a0a872a5 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 7ecd70f25f7f..9ad2bd4405b1 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 cc910711768b..7fdb7e3a1dcc 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 e106b2687f53..0fb28b53ac94 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 e88f478f9762..e98e36fe6558 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 de1fd4533ef4..923cdf879a5c 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 1ca325cbf172..181051249625 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 38f4375becdf..1b290bd310ba 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 edf109a79cfe..aaf278a0a694 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 213464f3f19e..870438ea31f3 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 e1f0c6ea72d3..a7089c94cfbc 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 8f5008032f6b..a3327e88ba6c 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 ce429c8d602b..62232d1aa5a7 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 af7b4c57bb76..a935b8ad4d56 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 24edaf806268..ddb24e46f4de 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 786eb59ec104..2f786eba949e 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 93b4cc1480e5..c921b4198ed2 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 5b939ccb6cc6..55ac6cf9e683 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 e475ca7e8560..9adc35b1bdf8 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 36ec82d88c39..7feed2df4bc4 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 7a4e18b32956..53a1ccaf55a6 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 290e60ff3b71..d924d4f38b07 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 4b05c0b70d01..e8abded24381 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 39bcc63248e5..7ebc0b003e55 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 1be00fa0c0f3..9c85223d654b 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 f592568cb324..89bdab65b17d 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 9641cef56aa2..f1cbb7ee7b8b 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 e2a36c2f1843..a25916316de8 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 d853e217a7f8..adf11916b90d 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 c1dd27e377d7..0ebfeb92bf10 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 a661a83c7318..a7e90de2990a 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 b11c88534b28..3753067d958c 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 f5166f0f1f09..20d414ac6b14 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 4db350f93b52..3a3e700cfbbb 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 300de9df4c96..6bbe28446127 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 d2c3a838adfb..f69be8ae99e2 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 cf62afc6c013..b283c496a299 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 5c608c440aaa..8f16c6c65c4f 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 92dccbf05a6b..32b3a5ec8b51 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 39610f9a08c2..b1228dab18a2 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 1eed852f5370..5b6ddfc1610a 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 15ed35f5758c..2a29ee950a84 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 000000000000..ca208b7c1a34 --- /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 4f3cd1b5363b..fbb8b94396da 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 000000000000..48231a1b6d2b --- /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 fbb8b94396da..efd401f37644 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 000000000000..db380f03b5bd --- /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 efd401f37644..69f2f4cecef9 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 000000000000..83712b858c25 --- /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 69f2f4cecef9..cd4d09095ea8 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 000000000000..1b7ef1bcd1dc --- /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 cd4d09095ea8..68d7d4cee23e 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 000000000000..8a28d0b27fb1 --- /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 68d7d4cee23e..8d9a2d80899b 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 000000000000..c86db3bf0d72 --- /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 8d9a2d80899b..df71e01d0f2f 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 000000000000..1d5bc92bf6f1 --- /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 df71e01d0f2f..62036e55e80b 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 000000000000..7efe6b25b391 --- /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 62036e55e80b..b3686cd26374 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 000000000000..06c1b9e2fcae --- /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 b3686cd26374..cbd62d80f249 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 000000000000..b7f498a35c83 --- /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 cbd62d80f249..531a81db7829 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 000000000000..7aedea7995b7 --- /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 531a81db7829..1029d47918e1 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 000000000000..ade7685be6e6 --- /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 1029d47918e1..791678ab55c8 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 000000000000..efe0956afc0f --- /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 791678ab55c8..1c988362d726 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 000000000000..f1654751f753 --- /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 1c988362d726..38ca6684f02e 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 000000000000..f35877cd6568 --- /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 38ca6684f02e..686c406f00d8 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 000000000000..16115809f5b1 --- /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 686c406f00d8..c3ecfc4290ec 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 000000000000..ccccf9d95d38 --- /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 c3ecfc4290ec..b35e728f6b4d 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 b35e728f6b4d..273cd9403168 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 1c12e5dbb0b0..5b7decf9416b 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 8f16c6c65c4f..cfda3b66704a 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 32b3a5ec8b51..968efe2260b0 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 b1228dab18a2..12907a64d214 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 5b6ddfc1610a..e53ab715992e 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 dd7b9de97254..811ffd2855da 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 0c744d624191..8dd3460b6f8f 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 8e5b79cd5194..61e457426dec 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 2a29ee950a84..8a57dd851c2d 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 e1d77561eb1f..7dc17cd4153a 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 5a79036b0823..5d10dbd69951 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 b0b40fecbede..bbe413d478ff 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 cda273167929..3fb843e69557 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 85e0474b7453..cdcaead86356 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 ec56c74db772..9011db12c7dd 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 bc82079aa791..3160570b240d 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 0b415d28aead..59644d057201 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 354621fd5cd4..04fd250dfe9f 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 aaf278a0a694..71d0c28e48d7 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 3f4132a87a23..03c2d90ff8da 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 870438ea31f3..ab784807bfa2 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 a7089c94cfbc..afa0e7eb5d3d 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 5dffb52ce1ed..3c8988400bcb 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 4b84ad627840..8c9885d4378f 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 1bfac2b13d2a..8692d6267cbe 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 f22ae9e106fc..342bea47f6b1 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 d20f4f061e4e..3e9be2c5e587 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 fd94874e3642..b19728820aad 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 55ac6cf9e683..ed7e23f6c219 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 9ad2bd4405b1..9e8f638c65cf 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 c87b38af4523..ac4ac232edf8 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 493da3337b91..0beebbfe2944 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 28a3bd5fe956..31cfdddac79e 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 a75c72f6a285..8d4a39526b2a 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 0c7fa0bfa789..f3da4a5ccf22 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 805bf36f5df8..e6238a5e738f 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 a0b328d702cc..d9e422f9e895 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 4adae562476e..93ba5e949db8 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 f0c103622a9e..1b52261dea08 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 aa6e87565aee..44ed255bb634 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 3a3e700cfbbb..82dae54839ff 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 d114a5aa3afd..468a9f711e1e 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 9df67a70c6c5..1918260cc62f 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 16f6d6362a1e..5521e037b4eb 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 468a9f711e1e..5e93300b23cb 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 9adc35b1bdf8..3121399b3a90 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 161e81eb3754..77a4251259d3 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 455328ec9cb2..dc1f24757af2 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 002f68eded7c..e0136ad5d45d 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 a935b8ad4d56..72e0976ceaff 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 6bbe28446127..45f2ac96319d 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 5903cb27f715..4f38dfcaa12f 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 650807c324a2..9fe917a35f12 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 9fe917a35f12..706c9caca1cc 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 0427a937f840..d23a5ef0228d 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 86f9be93f685..468e45fcff16 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 923cdf879a5c..f53e7a341d6e 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 a3327e88ba6c..533a67c99c82 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 dba052a0fc1e..8d8261df97e3 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 df24b4ac0222..93f7e8add429 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 142b513e5924..cfc80c4d547a 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 706c9caca1cc..7dc58a0adfe3 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 81fbf5ad98a1..86f0106ed050 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 b424551a2f95..09171ab25706 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 68b985507b6f..2814eae845f2 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 705a0a5fdea4..4a413e2e7b85 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 5c6057ace9e9..0c7fa0bfa789 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 5fbb2ed8a843..805bf36f5df8 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 cff762864bc6..a0b328d702cc 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 f345e7c98e1c..4adae562476e 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 6cb7ed57b4c4..f0c103622a9e 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 fc9b09bd0d74..beec7ded7893 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 4b8a513914a1..12c3e34571e8 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 ad161f971024..d4cc74902776 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 d3307d0a30d3..19afa5ab75e6 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 b0f89619b1c5..515cec37a995 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 a0da6384e958..1b943208dea4 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 c5caa55e97f0..5dd76b4d6e00 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 916f38f66c57..37af5eec0af5 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 fda3ae1474b2..c352ce7ca8ec 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 5891131d7e85..67450dc88874 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 c6d25384be22..3a2d044de64d 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 ef95d13809f1..b4f205e41b21 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 89ff67fac37c..16c352b7a332 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 44f0e0b0e236..59e0f7187515 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 becd1a24ec60..afd607fe5e82 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 65f39c8cc081..ede82e5c2ed3 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 20107eb17844..6b76aee47a1e 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 58e0ebbbe000..51425084e1c3 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 bae237375854..ca2f36159292 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 234491cde368..7d3cacdd67a9 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 85a1fb7bdef5..6af68223834b 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 01c26aab79f3..4c2f076039ee 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 81ae5ebddb09..edbb079eec42 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 3ea60db5fb56..4dada2457914 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 29163f897370..69351a2a5aa3 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 70cd3f44252a..af6985cd9ede 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 dc6d83a765de..b095b1ea5f4e 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 275622d3cad8..dba34752611e 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 2dc0cad97729..81b361a24779 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 9970d87fbe04..f59a80b2b65a 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 2af4bb9f3f1b..228fcd28c785 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 a25603453a75..3ecfe2db8527 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 4ba8b16ec46e..0b956680a84f 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 1e83cbaa8d95..0427a937f840 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 6709569b0540..bd8b64aa509a 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 df92c4a6cf50..5dffb52ce1ed 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 878eba660a06..cad61e52ee0c 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 482fd766487f..3ba059261794 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 5c4a9402020b..a4d0cfd247a1 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 e266aa15ff87..c9544b2c1f69 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 119d9d185e55..145d3c1c203d 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 681ee6820739..46ae27fc0901 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 80b6760a3b7b..142b513e5924 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 7eb49668e3cb..1c12e5dbb0b0 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 609863e808fa..9d370993a22c 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 68b79bdcc3b5..59a32b0d290b 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 28881da84c38..7b61aee26dfa 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 3a0b9ab59b92..dba052a0fc1e 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 96fe7ae0eb13..ffb3f98e8b33 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 ff8aa25bd2d2..15d32de346df 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 6538e17c41ab..9551581dadf6 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 bffe1ad58096..3880537e7eaf 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 e7d5756b7599..4b84ad627840 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 4c897f20ef7e..949874bfa910 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 ff4b03c1e6ab..eaf1754b6223 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 ebb44f1512b3..5ff4b4cd95ed 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 58d4dd7ecbfd..3571c160f6b7 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 618438e927f6..39091256ec0f 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 d0837d21bff4..c4c064fbf811 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 f8b1f1d51a42..cdf269b0d3c3 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 c342f80a6c25..1ec2b659f0c5 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 fc569f996a89..fc8c15edf570 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 e05b93655e41..4571b869e3bd 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 991213067f65..aa3cd5fcdf60 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 cfcc69641b5d..1a907a384f1f 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 b5f8851796e7..bba846689584 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 fc77388727fd..7402d6f31db3 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 fbb09db9bb87..1d675e88d874 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 158feeee18a7..2e29269a9fdf 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 54fc100b7dd8..06dcfaa11390 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 b06ee1363c87..22018087226e 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 8407daef6423..f22ae9e106fc 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 1e2d56147c33..d20f4f061e4e 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 67d44bd1ebb5..032592f974ba 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 fb313005bdaf..840712e34160 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 29452da7b2e7..557dea081fdb 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 28fa50d83424..dc0c1811e591 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 4009bbd94641..6f245cf18400 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 d1485b7cf1f1..002f68eded7c 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 3e04a33990e3..46f530b8cd4f 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 5abc63091464..14b9f8d70813 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 b82dc4ed83df..16b47a9c8ae0 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 2816a38c4130..117a63618d4a 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 f7812a2692da..036deebae20d 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 3e3a1b7dbfd6..29c74d84015f 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 541fa2026d98..fa60370f1f5e 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 53b7062cd0d8..1f38962ddd3a 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 ef4016d003d5..8d62f67a1281 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 f657f4e0ca52..35b7fec32765 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 8ce0b1254166..fd94874e3642 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 5016b816ff73..56174254c219 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 01bf73fd5013..55bf276d1f82 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 4e9516d107cb..d4cc135cc62a 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 0e04ff4fd448..d38002eebdaa 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 15245bfe0bcd..325021c1cca3 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 c8223cecac4f..fcd7a0a872a5 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 7ecd70f25f7f..9ad2bd4405b1 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 cc910711768b..7fdb7e3a1dcc 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 e106b2687f53..0fb28b53ac94 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 e88f478f9762..e98e36fe6558 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 de1fd4533ef4..923cdf879a5c 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 1ca325cbf172..181051249625 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 38f4375becdf..1b290bd310ba 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 edf109a79cfe..aaf278a0a694 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 213464f3f19e..870438ea31f3 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 e1f0c6ea72d3..a7089c94cfbc 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 8f5008032f6b..a3327e88ba6c 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 ce429c8d602b..62232d1aa5a7 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 af7b4c57bb76..a935b8ad4d56 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 24edaf806268..ddb24e46f4de 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 786eb59ec104..2f786eba949e 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 93b4cc1480e5..c921b4198ed2 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 5b939ccb6cc6..55ac6cf9e683 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 e475ca7e8560..9adc35b1bdf8 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 36ec82d88c39..7feed2df4bc4 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 7a4e18b32956..53a1ccaf55a6 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 290e60ff3b71..d924d4f38b07 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 4b05c0b70d01..e8abded24381 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 39bcc63248e5..7ebc0b003e55 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 1be00fa0c0f3..9c85223d654b 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 f592568cb324..89bdab65b17d 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 9641cef56aa2..f1cbb7ee7b8b 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 e2a36c2f1843..a25916316de8 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 d853e217a7f8..adf11916b90d 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 c1dd27e377d7..0ebfeb92bf10 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 a661a83c7318..a7e90de2990a 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 b11c88534b28..3753067d958c 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 f5166f0f1f09..20d414ac6b14 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 4db350f93b52..3a3e700cfbbb 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 300de9df4c96..6bbe28446127 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 d2c3a838adfb..f69be8ae99e2 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 cf62afc6c013..b283c496a299 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 5c608c440aaa..8f16c6c65c4f 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 92dccbf05a6b..32b3a5ec8b51 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 39610f9a08c2..b1228dab18a2 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 1eed852f5370..5b6ddfc1610a 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 15ed35f5758c..2a29ee950a84 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 000000000000..ca208b7c1a34 --- /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 4f3cd1b5363b..fbb8b94396da 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 000000000000..48231a1b6d2b --- /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 fbb8b94396da..efd401f37644 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 000000000000..db380f03b5bd --- /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 efd401f37644..69f2f4cecef9 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 000000000000..83712b858c25 --- /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 69f2f4cecef9..cd4d09095ea8 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 000000000000..1b7ef1bcd1dc --- /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 cd4d09095ea8..68d7d4cee23e 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 000000000000..8a28d0b27fb1 --- /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 68d7d4cee23e..8d9a2d80899b 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 000000000000..c86db3bf0d72 --- /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 8d9a2d80899b..df71e01d0f2f 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 000000000000..1d5bc92bf6f1 --- /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 df71e01d0f2f..62036e55e80b 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 000000000000..7efe6b25b391 --- /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 62036e55e80b..b3686cd26374 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 000000000000..06c1b9e2fcae --- /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 b3686cd26374..cbd62d80f249 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 000000000000..b7f498a35c83 --- /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 cbd62d80f249..531a81db7829 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 000000000000..7aedea7995b7 --- /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 531a81db7829..1029d47918e1 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 000000000000..ade7685be6e6 --- /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 1029d47918e1..791678ab55c8 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 000000000000..efe0956afc0f --- /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 791678ab55c8..1c988362d726 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 000000000000..f1654751f753 --- /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 1c988362d726..38ca6684f02e 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 000000000000..f35877cd6568 --- /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 38ca6684f02e..686c406f00d8 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 000000000000..16115809f5b1 --- /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 686c406f00d8..c3ecfc4290ec 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 000000000000..ccccf9d95d38 --- /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 c3ecfc4290ec..b35e728f6b4d 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 b35e728f6b4d..273cd9403168 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 1c12e5dbb0b0..5b7decf9416b 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 8f16c6c65c4f..cfda3b66704a 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 32b3a5ec8b51..968efe2260b0 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 b1228dab18a2..12907a64d214 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 5b6ddfc1610a..e53ab715992e 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 dd7b9de97254..811ffd2855da 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 0c744d624191..8dd3460b6f8f 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 8e5b79cd5194..61e457426dec 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 2a29ee950a84..8a57dd851c2d 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 e1d77561eb1f..7dc17cd4153a 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 5a79036b0823..5d10dbd69951 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 b0b40fecbede..bbe413d478ff 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 cda273167929..3fb843e69557 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 85e0474b7453..cdcaead86356 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 ec56c74db772..9011db12c7dd 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 bc82079aa791..3160570b240d 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 0b415d28aead..59644d057201 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 354621fd5cd4..04fd250dfe9f 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 aaf278a0a694..71d0c28e48d7 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 3f4132a87a23..03c2d90ff8da 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 870438ea31f3..ab784807bfa2 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 a7089c94cfbc..afa0e7eb5d3d 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 5dffb52ce1ed..3c8988400bcb 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 4b84ad627840..8c9885d4378f 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 1bfac2b13d2a..8692d6267cbe 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 f22ae9e106fc..342bea47f6b1 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 d20f4f061e4e..3e9be2c5e587 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 fd94874e3642..b19728820aad 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 55ac6cf9e683..ed7e23f6c219 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 9ad2bd4405b1..9e8f638c65cf 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 c87b38af4523..ac4ac232edf8 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 493da3337b91..0beebbfe2944 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 28a3bd5fe956..31cfdddac79e 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 a75c72f6a285..8d4a39526b2a 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 0c7fa0bfa789..f3da4a5ccf22 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 805bf36f5df8..e6238a5e738f 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 a0b328d702cc..d9e422f9e895 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 4adae562476e..93ba5e949db8 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 f0c103622a9e..1b52261dea08 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 aa6e87565aee..44ed255bb634 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 3a3e700cfbbb..82dae54839ff 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 d114a5aa3afd..468a9f711e1e 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 9df67a70c6c5..1918260cc62f 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 16f6d6362a1e..5521e037b4eb 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 468a9f711e1e..5e93300b23cb 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 9adc35b1bdf8..3121399b3a90 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 161e81eb3754..77a4251259d3 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 455328ec9cb2..dc1f24757af2 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 002f68eded7c..e0136ad5d45d 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 a935b8ad4d56..72e0976ceaff 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 6bbe28446127..45f2ac96319d 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 29c74d84015f..81a5f67c45b9 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 5903cb27f715..4f38dfcaa12f 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 0427a937f840..d23a5ef0228d 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 86f9be93f685..468e45fcff16 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 923cdf879a5c..f53e7a341d6e 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 a3327e88ba6c..533a67c99c82 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 dba052a0fc1e..8d8261df97e3 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 df24b4ac0222..93f7e8add429 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 142b513e5924..cfc80c4d547a 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 29c74d84015f..81a5f67c45b9 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 69351a2a5aa3..2b967a5b5649 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 2f786eba949e..288e559ce980 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 bba846689584..84a66d019dcc 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 9d370993a22c..77245ec8c91b 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 69351a2a5aa3..2b967a5b5649 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 2f786eba949e..288e559ce980 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 bba846689584..84a66d019dcc 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 9d370993a22c..77245ec8c91b 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 e3b6378e3d91..ed26e3358708 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 a03f0a6fe466..f99e790de946 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 59a32b0d290b..2ca90094bb81 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 303e7ceb2c30..29c78329f957 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 67adcb0fbdd6..4a2d7ef7a95a 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 3baa02d26747..2c174b85f639 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 2c174b85f639..d915904b05e1 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 d915904b05e1..a90efcdf4cab 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 4a2d7ef7a95a..c33026f5fd60 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 87fa119252c1..2f293c317d38 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 083fb573087c..07d27bb44bc9 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 000000000000..f32d8ea9c74c --- /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 308d5cdca9b2..e721388ecdee 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 000000000000..7c47bac0bbbc --- /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 e721388ecdee..4d2ff8589f4e 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 0c5841dd7173..a5afce9e0cb1 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 000000000000..461780c18538 --- /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 273cd9403168..7501042d2473 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 000000000000..27aa09dc397a --- /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 7501042d2473..a65993c297a4 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 f32d8ea9c74c..90d0dafdd952 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 000000000000..6433cf296630 --- /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 a51abf44ff24..0c2bfa1ec0b1 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 68c83a8e78c0..186362bf12b6 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 186362bf12b6..5e3b37490f0c 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 46081cac3a78..7fd352ff6f7a 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 61d2e6a65bd0..808a77ef0a07 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 0c2bfa1ec0b1..b9ae875fc7db 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 e0c00d07044f..87aaafabcc4b 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 000000000000..063af69a7f37 --- /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 4d2ff8589f4e..9c85aa47abbb 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 6433cf296630..06207a8b7334 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 07d27bb44bc9..88fc642064e4 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 000000000000..18adfb1cd601 --- /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 000000000000..0cb626016d4f --- /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 000000000000..9849d4fab0e5 --- /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 a65993c297a4..b4f5f66b8f2e 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 5448c9f5ba38..c31062989e1c 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 9c85aa47abbb..d16d12367ca3 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 88fc642064e4..19ad21648514 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 a78ee06f652d..e7c2c80ac55c 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 000000000000..934669f225c6 --- /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 000000000000..81728e646c3e --- /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 d16d12367ca3..60c2e02d5f48 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 43c2aa4dba5b..f98a3f083206 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 23600b0e0145..f26ba257c024 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 000000000000..814c2774cb27 --- /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 b4f5f66b8f2e..39d6a58aeabe 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 27aa09dc397a..a2489dbc6281 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 000000000000..a1982cc4e66b --- /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 60c2e02d5f48..566a21a60529 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 0a86e140347d..c59fddf6364b 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 9223b7af917c..876f53b40b17 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 876f53b40b17..5aef46444bd6 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 5aef46444bd6..94f3c6bcacbf 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 94f3c6bcacbf..3b37273bdcb3 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 b9ae875fc7db..03d074d094d2 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 507ced85998a..da3532126579 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 afa62fe7798e..f567fe084ef0 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 a5f0ddea28f6..173453f7b5ef 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 c5722c3e8749..a474b6a8eaf1 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 4de3c0ddc9b4..592580a829e3 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 000000000000..a2f59657d4ca --- /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 000000000000..73c0381ced45 --- /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 000000000000..c504c45291ba --- /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 000000000000..3f202b4db96b --- /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 000000000000..de7e4f615212 --- /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 cf33e7a5bbc3..cb0ab18a40f5 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 000000000000..c826c2c0e1fa --- /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 000000000000..88f2b238e698 --- /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 000000000000..9266786e4da7 --- /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 000000000000..b28c07353ec2 --- /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 000000000000..fbade127ce61 --- /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 000000000000..a19fe7b7d629 --- /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 c504c45291ba..aa4a1afe3fd0 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 cb0ab18a40f5..731664f99132 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 c826c2c0e1fa..45971f33590b 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 433f61108dbc..f6646f1d0126 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 88f2b238e698..9bb7add0bde2 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 ca0d6340790b..e6197fd8e78f 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 9266786e4da7..39ea05843bfd 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 d28198821e3b..56d2326c916b 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 0f3ed6d7299b..b98d85a08265 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 da3de4c968d2..5c61422bea79 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 8578514f968c..c7414eec6715 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 202dfe2b02e9..7f9fef224a59 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 e043b12e8201..63e4fb1ca738 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 c7414eec6715..2b20e26b3f98 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 5c61422bea79..9c483aa17029 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 2b20e26b3f98..5d191b2550d5 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 01ff89a9a63b..000000000000 --- 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 c31062989e1c..579805a26538 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 7f9fef224a59..10faa983cc1c 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 b5e0092975c2..29231943cd7d 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 9ca45b2cc992..149481367b42 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 f56becf4512a..a3726fd460de 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 29231943cd7d..8bdc7865832d 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 000000000000..a863c5ddb090 --- /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 566a21a60529..b6803ad3863f 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 1b53a0e03dc4..058636596ad8 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 1ec2b659f0c5..4a496a981c6d 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 f35877cd6568..000000000000 --- 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 39d6a58aeabe..b3c07255a321 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 1d93c0c5f222..45ccfc22de7f 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 3d11b4841738..e1d2397c3757 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 b19329666756..e3c6b11e55b1 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 df00aff549f9..77f37cfe5af1 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 6af68223834b..44e27aa1bc33 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 4c2f076039ee..48b6bc583695 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 4dada2457914..c452815db25a 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 0b7eb1e88de3..48853c136550 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 526a9b6ed875..45ff3fea7f0f 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 5ff4b4cd95ed..dc5e248f4454 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 418c8c4ca741..066d1dd2ebe8 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 53aa0ee8613b..9dc14f2f5acc 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 3753067d958c..a47d109ace5a 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 ebb46f68bc82..e51ca16aa4fb 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 303e7ceb2c30..29c78329f957 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 b7bf00f07dd7..066da4bff4a9 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 e1d2397c3757..4ea0a5df8c17 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 000000000000..95898adeb8a6 --- /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 1ba90e67d85f..47bdcabd5146 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 854ebb1a4383..609849166d16 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 05efa2757568..962b14bc7888 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 6a608e8d9502..d746d54974af 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 346b11015f46..a5ac74fe47a5 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 000000000000..f2348e5f1bab --- /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 134fcd578122..6d9d534c4128 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 000000000000..7b0dddc2ae47 --- /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 7db9324c2813..df75e7b33896 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 000000000000..969da7a70e40 --- /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 000000000000..1e7239535d4d --- /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 000000000000..d67e0681f33f --- /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 f41063272ce1..a30ff7e2f871 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 44c31d824aef..05132b8365ba 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 566a21a60529..7eea6c3aba63 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 357c6eec6e7e..a04079c8de29 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 000000000000..5655c7d832b9 --- /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 7eea6c3aba63..93918671fb60 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 579805a26538..b4af004e2b0a 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 000000000000..dd9e11328ef7 --- /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 93918671fb60..a86bd6bbef24 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 ea98d1ce7a9d..d95d97688c3a 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 7a79a73c6b95..f648cb3c7377 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 000000000000..6cb1560dd698 --- /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 d95d97688c3a..05a9dd7e7d86 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 000000000000..18ccc77f9b16 --- /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 000000000000..2c3cdebacde8 --- /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 05a9dd7e7d86..62a4b16070d2 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 8e4edcad8850..d38fc19f40e1 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 000000000000..4942debcd302 --- /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 62a4b16070d2..bf19ecd99ca0 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 6cb1560dd698..000000000000 --- 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 57df08c1e2be..3ae0920b9a72 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 4a1765c7e03c..43482bd97624 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 000000000000..c1fa7d78d0a9 --- /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 b3c07255a321..c360214e2c6f 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 e6b208b02975..6780d02e674e 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 c452815db25a..75260bcb1b39 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 f85b7f8e208a..3481d37356dc 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 4a496a981c6d..045bb64035c4 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 e42224ace0d7..fa7c3ff41855 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 feb15267f592..ba7be86a6c1e 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 84dd29867500..5e4f5dd9ee80 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 708b62302d57..9a1c7eeee626 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 887bfb3125ca..5ba1356a17fb 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 a46143066c1e..1881c7d7af63 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 808a77ef0a07..b03135ea1f49 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 b03135ea1f49..94133e633dd8 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 dd9e11328ef7..33acd0002705 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 f26ba257c024..23600b0e0145 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 6d231e2083e2..9b96103a65ea 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 000000000000..481998ae5916 --- /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 000000000000..1a718819ac0e --- /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 000000000000..305c456efc45 --- /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 000000000000..6ced3597eeb8 --- /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 000000000000..1c8ef0bc4603 --- /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 000000000000..d2d9f3616cee --- /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 000000000000..0361d3a20278 --- /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 000000000000..4422822cced9 --- /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 000000000000..6abc92b18539 --- /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 000000000000..658cfd27ee7b --- /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 000000000000..5a86ea0a7017 --- /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 000000000000..4031594e768d --- /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 000000000000..7226cbde3bdf --- /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 000000000000..ddde9ccfe2e9 --- /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 000000000000..929ecbdb92c3 --- /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 000000000000..76caa5e52325 --- /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 000000000000..3df6e1da0f9c --- /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 000000000000..6d37cc86d95c --- /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 000000000000..578e69697489 --- /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 000000000000..062732e9cea5 --- /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 000000000000..6530153c51b8 --- /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 000000000000..037e53e63d67 --- /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 000000000000..e4dd3dc7ebc6 --- /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 000000000000..f3a0c049dd13 --- /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 000000000000..165e89c4b803 --- /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 000000000000..c5e990c3a99f --- /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 000000000000..621bf9e7cd92 --- /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 a86bd6bbef24..4329203a6ce5 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 784b60070352..773b755e9b27 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 047b4f822ae7..81916cb3982f 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 6d9d534c4128..0c9971143c0f 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 4329203a6ce5..6bcbf0f7fb6a 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 6de49846c2df..d32cbd51606c 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 4f0c83f2702b..56aac34a3441 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 000000000000..b6cdc77caa84 --- /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 05132b8365ba..6bbf6f554698 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 6bbf6f554698..28abd434b050 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 3106beed1c5b..facea368c051 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 fe5735599612..c8542ad7a527 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 6bcbf0f7fb6a..1fb24e19ef21 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 1f3e5b409378..21c952b7fb89 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 2f956630fa12..4658cf283353 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 9b65487ccfb2..6d6f9d058081 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 47e25877be9f..26b3de70dcdc 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 28abd434b050..2191cc046e47 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 1fb24e19ef21..2ccd00e8ad10 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 481998ae5916..66f8c9ae996b 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 1a718819ac0e..c3da7e1dc119 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 305c456efc45..b17be3da822e 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 6ced3597eeb8..64b44adcccd5 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 1c8ef0bc4603..7db8d04403c3 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 d2d9f3616cee..fcabd3f4b56f 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 0361d3a20278..643a2ba2a88d 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 4422822cced9..65b236f4e890 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 6abc92b18539..9c20d6cad4cd 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 658cfd27ee7b..5a8fcb1ce402 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 5a86ea0a7017..cf5116dac48b 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 4031594e768d..c1af5cd686b9 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 7226cbde3bdf..d85007ee455e 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 ddde9ccfe2e9..0a260e86e7d7 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 929ecbdb92c3..e54ec24490a0 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 76caa5e52325..ea6376744698 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 3df6e1da0f9c..c55ad82a985f 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 6d37cc86d95c..3c19afa16b74 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 578e69697489..5b3180c415c6 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 062732e9cea5..8cf4160a76a9 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 6530153c51b8..5421e6be195b 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 037e53e63d67..7326a1b3c927 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 e4dd3dc7ebc6..c918ecc6f4f8 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 f3a0c049dd13..99752b9d08d4 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 621bf9e7cd92..263878b3f758 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 a2489dbc6281..6897ef003ad5 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 461780c18538..3eafcd70940e 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 1c59a2ff4862..622a549084d0 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 58ed4c61f4ba..3ed650d4ae73 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 471010c2c21e..6a76452fbf72 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 a2d2483ae843..019ba1792f3b 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 b220bebfc509..11242483fdcb 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 66f8c9ae996b..8c6522c9b6c4 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 c3da7e1dc119..6c0d008e2fa4 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 b17be3da822e..fec87fb11c88 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 64b44adcccd5..50b3c2eca9cc 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 7db8d04403c3..db77a1e8487d 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 fcabd3f4b56f..844ed60db5f2 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 643a2ba2a88d..f4149307c471 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 65b236f4e890..cd11b580af43 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 9c20d6cad4cd..58c73c4a7c92 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 5a8fcb1ce402..8bd52d985063 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 cf5116dac48b..32d3ddf81751 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 c1af5cd686b9..966c705c6af7 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 d85007ee455e..6963681ae899 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 0a260e86e7d7..8078805266d3 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 e54ec24490a0..233d678140b2 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 ea6376744698..7687f6dd8ca8 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 c55ad82a985f..d686fe0281fb 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 3c19afa16b74..c741fdcdce6f 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 5b3180c415c6..1a95f0a673ee 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 8cf4160a76a9..3ee06d3f0ae0 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 5421e6be195b..564bbfd7a072 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 7326a1b3c927..8e6206f0d390 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 c918ecc6f4f8..14036122c95b 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 99752b9d08d4..b8faa4c3cfe0 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 165e89c4b803..9ec67173be3f 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 c5e990c3a99f..10d457e7836e 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 263878b3f758..17bc19a4e73d 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 f98a3f083206..87fc906e25bf 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 000000000000..dbceb0a336c5 --- /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 ab42e4733e6b..cce2d7cec2f7 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 6eab8acce751..b8a215e3b49c 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 cce2d7cec2f7..70c4c079f3a8 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 b3cad227d276..0d0639390a73 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 4308a559268e..c86a65f33b60 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 934669f225c6..d285c4b0e237 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 81728e646c3e..2b5e1627ac63 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 87fc906e25bf..e4e3d22c5688 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 5e3b37490f0c..5a959eeb26fb 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 000000000000..c67eaff2ac50 --- /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 a2d2d753a4af..adfea12da952 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 206e78eb728b..a04aea993fa2 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 77f37cfe5af1..04f3842be41b 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 09287600323d..c659c3bc3bea 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 b4f205e41b21..6273a099f739 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 44e27aa1bc33..c04b4dfc25e1 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 48b6bc583695..4d0f5441e414 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 75260bcb1b39..21f81ee038ce 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 066d1dd2ebe8..947f75342d45 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 35b7fec32765..f0dde62ef979 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 55bf276d1f82..7f00530a7f94 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 be78bbaef31d..3475ccb804a0 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 7ebc0b003e55..b586a6336bca 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 f1cbb7ee7b8b..2c2f39451e6b 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 a47d109ace5a..8b32b48af873 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 e51ca16aa4fb..9998790ea739 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 d703fd8e3697..000000000000 --- 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 70c4c079f3a8..bfab97ff543e 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 7d98a51cab51..24bb64cb8f8a 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 f80f74a3dc2b..40620901839d 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 3b37273bdcb3..14cedc0b5db9 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 1dc58607de06..c2563b5e298e 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 b7ccdde367c5..adaef56e55f7 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 0e0329359002..ec80aabef0cf 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 df6387b1f812..a522c90a10f9 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 622a549084d0..9aaa2e80aab6 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 04fba890bc51..dccfeeb8a692 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 f26ba257c024..3f8fc2e68a1f 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 9e761b90a05c..0f8801ef58eb 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 000000000000..53b473c28222 --- /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 0f8801ef58eb..777c6a58162b 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 53b473c28222..428cb75edadf 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 777c6a58162b..0f8801ef58eb 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 8c6522c9b6c4..b7ad8c21d5a3 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 6c0d008e2fa4..96ec6cf7037b 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 fec87fb11c88..db870f8fe999 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 50b3c2eca9cc..aa71ede39653 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 db77a1e8487d..995517c34ee4 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 844ed60db5f2..f7cd2b554bdc 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 f4149307c471..84f97b39ee77 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 cd11b580af43..8fec1c6bc274 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 58c73c4a7c92..26e7be730b6e 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 8bd52d985063..1f27b2db839f 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 32d3ddf81751..4502a03191ca 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 966c705c6af7..53298c984a27 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 6963681ae899..6a80fef10ee2 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 8078805266d3..d0a4298215c7 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 233d678140b2..04b83dfacabf 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 7687f6dd8ca8..4bc4bd10e355 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 d686fe0281fb..5f9dc98aeb1a 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 c741fdcdce6f..6433237f609a 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 1a95f0a673ee..2d9fd02b1b55 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 3ee06d3f0ae0..8673d1cc40e0 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 564bbfd7a072..16be9bf9a91b 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 8e6206f0d390..4a2f1aa33b87 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 14036122c95b..d864576bb46c 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 b8faa4c3cfe0..2a922ab299ba 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 9ec67173be3f..7e3ff6abbe93 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 10d457e7836e..554bf79e3344 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 571cd2be6232..b73eb23d0f04 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 b7ad8c21d5a3..2b41f122fa9b 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 96ec6cf7037b..ec031821a03f 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 db870f8fe999..7cacf7778348 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 aa71ede39653..eb394a3f3e2d 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 995517c34ee4..3885b43960f5 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 f7cd2b554bdc..d8dde17ac66a 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 84f97b39ee77..32581cd229a9 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 8fec1c6bc274..590192383016 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 26e7be730b6e..fb793da3e5ff 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 1f27b2db839f..e4b185a11c6b 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 4502a03191ca..1373ae21284b 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 53298c984a27..c37fa99f7c5b 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 6a80fef10ee2..625aa181c63f 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 d0a4298215c7..564103dd101a 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 04b83dfacabf..d6e3009f59c9 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 4bc4bd10e355..3ce559e3ecc5 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 5f9dc98aeb1a..146901005489 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 6433237f609a..729101b2d012 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 2d9fd02b1b55..da9b0ce4dccb 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 8673d1cc40e0..3ceef2431f73 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 16be9bf9a91b..055224dd740b 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 4a2f1aa33b87..8c6b842d0b94 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 d864576bb46c..046abe8f83d7 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 2a922ab299ba..4d99c25bf598 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 388a8f979c5c..cc92f71bc1ea 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 b73eb23d0f04..6acc0bc4758a 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 c05bf88ffbff..8fe9846c15af 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 1526d4c43590..952febebc323 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 952febebc323..db4d7c61a739 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 e7c5997021db..f1972e085f58 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 efeafaa53e6e..78f712a71341 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 000000000000..f7fa3a212d10 --- /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 000000000000..584b23b6a01c --- /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 000000000000..aadce32dda41 --- /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 78f712a71341..d8083b889917 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 f1972e085f58..17a63799ac4e 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 c7bcc27c8750..000000000000 --- 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 3b7eb8ba20e6..000000000000 --- 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 40620901839d..f80f74a3dc2b 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 59e0f7187515..2063e3a862d7 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 c087e27d025d..ebea3fd60908 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 9cba8f2c13f1..7be21dbbf347 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 3481d37356dc..7bcb94ab40c6 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 4b606e8b73b9..3fd1230073e7 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 8d8261df97e3..370896f77e8b 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 805519d3d30c..9d6185dc5266 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 37e6000a3c01..96ac397da79c 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 98b9518c7dea..83369ac008b7 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 325021c1cca3..1e9e1f8c6ccb 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 d28eb827dabf..d9477f4233da 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 73cc5c6e7640..d1702862f422 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 45f2ac96319d..2e658b15a15b 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 ed26e3358708..5fe5fc3639fe 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 577180880805..80def733cf8c 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 9fd1d86ff82a..065d237a0731 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 eed512887073..ea2f3b6d1400 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 000000000000..c390b772b16d --- /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 98ebe5fcc256..c1cc36105ad2 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 fcdc3c31f290..f562a2f7df40 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 5ba1356a17fb..b50077975c1f 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 47bdcabd5146..ef4d259cb029 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 0b836cd08f00..c2e3b9b06dd6 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 5f5149fedfe6..65bcd4350960 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 6a76452fbf72..2731a19b4190 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 17a63799ac4e..e3a58bbb5a83 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 6bbc287e6ee9..c2f80570673b 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 48f050f98cc2..48feb6ec421e 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 000000000000..2f3c3a4365e6 --- /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 000000000000..624b83d45b33 --- /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 d8083b889917..470bc12c516c 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 010e65f62eb4..fd6d1a6cc7f0 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 794a97b205fa..cae98cf6f5f4 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 f7fa3a212d10..7fdd04ce96b8 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 000000000000..a59498b8f141 --- /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 470bc12c516c..d6c531ab0bdc 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 5575243bd9f3..8d6a1368d8b0 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 2f3c3a4365e6..7a1dfd110df9 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 ab74d56dbcc7..a21911f4067d 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 000000000000..0d40df405744 --- /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 000000000000..ccc02cd89785 --- /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 d6c531ab0bdc..1265fa88a6f6 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 000000000000..940e57ab8fb1 --- /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 9c483aa17029..a14b10fcfde7 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 db4d7c61a739..a2146d9b97ce 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 1d93c0c5f222..043c69d5cc0e 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 000000000000..9afbc62ce8c7 --- /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 000000000000..f9e460198a98 --- /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 79699506ce88..2c8ea5659f32 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 000000000000..7408d0ac5375 --- /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 c360214e2c6f..715d79aa9709 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 000000000000..39c97859e657 --- /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 715d79aa9709..ee62aa0a0efb 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 3c8988400bcb..ce418a8d053f 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 93f7e8add429..204d13c71485 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 893f2121f0ab..4fb21ed5f551 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 7bcb94ab40c6..1109a512a8da 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 59a32b0d290b..8d4b36e979b4 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 dc5e248f4454..683396eea818 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 991f38080984..2521c44bec6e 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 a7d5ad0e3933..bdd35dc50f05 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 7a1dfd110df9..cd21d6943965 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 34e8f10dceee..29eb170287ad 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 26f410cee117..fd7b3218e347 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 000000000000..2ffff7bed7b4 --- /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 2c8ea5659f32..05dc999c407c 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 2ffff7bed7b4..1325b52b3808 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 000000000000..42e26825e330 --- /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 4bb08128798d..043c3152a839 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 730b60c7aec2..3a9c0e10a784 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 000000000000..c69d4d836261 --- /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 4bb08128798d..00ecacc12451 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 334b7e6f2c26..38f2c4c61152 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 2ca90094bb81..f153a9b3d89a 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 f153a9b3d89a..eb27fde823fe 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 bf27ac461c3d..1cdf917cf8fb 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 74254a4c591e..0a2495a07e9d 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 000000000000..a8c10e1a30d6 --- /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 0ef9acbcef4d..c9d3183e7939 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 a90efcdf4cab..f03e1907ec08 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 893f2121f0ab..4fb21ed5f551 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 7bcb94ab40c6..1109a512a8da 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 dc5e248f4454..683396eea818 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 991f38080984..2521c44bec6e 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 2e658b15a15b..38290c8cd544 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 370896f77e8b..0185e4e6ce92 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 c360214e2c6f..45bf00ca46dd 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 45bf00ca46dd..8ee50c5ae93a 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 5fe5fc3639fe..22dde229a2b9 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 77e201ca63d4..b944c1e104cc 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 3c8988400bcb..fd9728f4fb84 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 22a561d2c2da..6c8c83fe0567 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 edc15a360ff0..fb43c7d67e18 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 e1771c7a5cfb..3e15374c65f0 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 49269fffe477..8805f1393fb0 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 a73ae9785976..dbd2fa45b7b8 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 c56f9454fcdb..7b022bc875c0 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 03d074d094d2..bff7911d8438 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 03069f9fe14e..6d1c8e5607c9 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 2e26fb7ddbac..e899c4391f9b 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 d82056d4297b..9d8319141dde 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 97a158430ca6..faefdc5a0c3a 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 ccf7d4585361..473db5f43840 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 e899c4391f9b..435b9cdcee90 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 000000000000..670c37a4e937 --- /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 00ecacc12451..0fd838763dce 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 c69d4d836261..000000000000 --- 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 670c37a4e937..714c5aca686b 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 76aa2de723de..a2e8b50c10ec 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 714c5aca686b..0a0dd4e6fe22 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 7b022bc875c0..f896e8c7b408 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 f896e8c7b408..e8c27c5f2b1e 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 d00ca6c869fb..032a59e5c500 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 07a3ffc6bafd..d57184a19eb4 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 4bced99820bf..d5cea08f3df9 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 000000000000..de192c64b722 --- /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 0baf3457966f..0c31d75b2285 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 0c31d75b2285..631f5c907ede 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 d57184a19eb4..03e0def78532 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 87a320067131..5c8cb7203245 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 e3a58bbb5a83..db9ed5d30f30 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 67c6d2f85819..dce7757d23a2 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 f99e790de946..16bcd252a4a2 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 8ee50c5ae93a..110e19b72b34 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 16bcd252a4a2..59a94d4f4b37 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 59a94d4f4b37..e7e206e22666 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 000000000000..dd4f985e6183 --- /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 110e19b72b34..8275aee4f52c 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 e71537f108a5..17e1b2e8b146 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 8e159f48b63f..739fe8b801c9 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 35df411fd0f2..23b516e32e4d 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 000000000000..1b8345986374 --- /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 f1ddf0bfd88e..3c494114e914 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 000000000000..2188668d3bf1 --- /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 000000000000..2d62f834647d --- /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 000000000000..8b4997f099de --- /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 7cb83db5e8d3..100e3456ca43 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 8b4130dd75a5..18d0e93220e6 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 000000000000..81fb77c1c9a8 --- /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 18d0e93220e6..871c0e228248 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 b725f6bbf9fe..6320dd58e4c6 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 0f9da8883827..63a8f5086845 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 06a89a1e2da4..2af863e37bc7 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 4f287af6437f..b106cccbf6d0 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}";

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