From 3b1aac231be217cce0f379433b33a420fc34c0a3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 12 Nov 2007 16:17:54 +0000 Subject: [PATCH 001/320] * Binutils 2.18. svn path=/nixpkgs/branches/stdenv-updates/; revision=9656 --- pkgs/development/tools/misc/binutils/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 9817abd612b..52112c17b6c 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, noSysDirs}: stdenv.mkDerivation { - name = "binutils-2.17"; + name = "binutils-2.18"; builder = ./builder.sh; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/binutils-2.17.tar.bz2; - md5 = "e26e2e06b6e4bf3acf1dc8688a94c0d1"; + url = mirror://gnu/binutils/binutils-2.18.tar.bz2; + sha256 = "16zfc7llbjdn69bbdy7kqgg2xa67ypgj7z5qicgwzvghaaj36yj8"; }; inherit noSysDirs; configureFlags = "--disable-werror"; # needed for dietlibc build From b5409b8e98e5d62d383caf996bef124b056e65e7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 12 Nov 2007 18:01:27 +0000 Subject: [PATCH 002/320] * Glibc 2.7. * Hack to remove the dependency on Perl. * Hack to work around this bug: http://sourceware.org/bugzilla/show_bug.cgi I.e. when gcc is compiled with --with-arch=i686, then the preprocessor symbol `__i686' will be defined to `1'. This causes the symbol __i686.get_pc_thunk.dx to be mangled. The error message for reference: ../sysdeps/i386/fpu/s_frexp.S: Assembler messages: ../sysdeps/i386/fpu/s_frexp.S:66: Error: invalid identifier for ".ifdef" ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first unrecognized character is `1' ... ../sysdeps/i386/fpu/s_frexp.S:66: Error: ".endif" without ".if" ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk `.get_pc_thunk.dx' after expression Now Glibc builds again with GCC 4.x. svn path=/nixpkgs/branches/stdenv-updates/; revision=9660 --- .../libraries/glibc-nptl/builder.sh | 7 ++++++ .../libraries/glibc-nptl/default.nix | 23 +++++++++++-------- pkgs/top-level/all-packages.nix | 3 +-- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/pkgs/development/libraries/glibc-nptl/builder.sh b/pkgs/development/libraries/glibc-nptl/builder.sh index e4f6dec1354..3e874ed891c 100644 --- a/pkgs/development/libraries/glibc-nptl/builder.sh +++ b/pkgs/development/libraries/glibc-nptl/builder.sh @@ -16,6 +16,13 @@ preConfigure() { --replace "@PWD@" "pwd" done + # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older + # than C-translit.h.in, forcing Make to rebuild it unnecessarily. + # This wouldn't be problem except that it requires Perl, which we + # don't want as a dependency in the Nixpkgs bootstrap. So force + # the output file to be newer. + touch locale/C-translit.h + mkdir ../build cd ../build diff --git a/pkgs/development/libraries/glibc-nptl/default.nix b/pkgs/development/libraries/glibc-nptl/default.nix index 86cc9ecf565..8a5a84bd2c6 100644 --- a/pkgs/development/libraries/glibc-nptl/default.nix +++ b/pkgs/development/libraries/glibc-nptl/default.nix @@ -1,18 +1,16 @@ -{ stdenv, fetchurl, kernelHeaders -,perl +{ stdenv, fetchurl, kernelHeaders , installLocales ? true , profilingLibraries ? false }: stdenv.mkDerivation { - name = "glibc-2.6.1-nptl"; + name = "glibc-2.7"; builder = ./builder.sh; - src = - fetchurl { - url = http://ftp.gnu.org/gnu/glibc/glibc-2.6.1.tar.bz2; - sha256 = "08pcfsi9zpikjakljklks2ln3hn7544cr9br4kbh5kx27cy3mv9x"; - }; + src = fetchurl { + url = mirror://gnu/glibc/glibc-2.7.tar.bz2; + sha256 = "06j5q20l11x8kcrl9bg15xgb1pw0w82pazikxf4zvq2fmhiaa922"; + }; patches = [ ./glibc-pwd.patch ./glibc-getcwd-param-MAX.patch ]; @@ -20,12 +18,17 @@ stdenv.mkDerivation { inherit (stdenv) is64bit; - buildInputs=[perl]; - # `--with-tls --without-__thread' enables support for TLS but causes # it not to be used. Required if we don't want to barf on 2.4 # kernels. Or something. configureFlags="--enable-add-ons --with-headers=${kernelHeaders}/include ${if profilingLibraries then "--enable-profile" else "--disable-profile"}"; + + # Workaround for this bug: + # http://sourceware.org/bugzilla/show_bug.cgi?id=411 + # I.e. when gcc is compiled with --with-arch=i686, then the + # preprocessor symbol `__i686' will be defined to `1'. This causes + # the symbol __i686.get_pc_thunk.dx to be mangled. + NIX_CFLAGS_COMPILE = "-U__i686"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7dac21186e2..90e2d4bc7a5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1747,8 +1747,7 @@ rec { }); glibcNPTL = import ../development/libraries/glibc-nptl { - inherit fetchurl kernelHeaders perl; - stdenv = overrideGCC stdenv gcc34; + inherit fetchurl stdenv kernelHeaders; }; glibmm = import ../development/libraries/gtk-libs-2.6/glibmm { From c121f6746b8e0e7a1b4d719b6c13ec98eacceb53 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 15 Nov 2007 15:19:58 +0000 Subject: [PATCH 003/320] * Default compiler changed to GCC 4.2.2. * Fix for NIXPKGS-60 ("g++ 4.2.0 cannot create dynamically linked executables"). svn path=/nixpkgs/branches/stdenv-updates/; revision=9691 --- .../development/compilers/gcc-4.2/default.nix | 14 ++++++------- .../compilers/gcc-4.2/no-sys-dirs.patch | 20 ------------------- pkgs/top-level/all-packages.nix | 8 ++++---- 3 files changed, 11 insertions(+), 31 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.2/default.nix b/pkgs/development/compilers/gcc-4.2/default.nix index 2681531f204..df0f3e5c48d 100644 --- a/pkgs/development/compilers/gcc-4.2/default.nix +++ b/pkgs/development/compilers/gcc-4.2/default.nix @@ -9,21 +9,21 @@ assert langC; with import ../../../lib; stdenv.mkDerivation { - name = "gcc-4.2.0"; + name = "gcc-4.2.2"; builder = ./builder.sh; src = optional /*langC*/ true (fetchurl { - url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2; - sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1"; + url = mirror://gnu/gcc/gcc-4.2.2/gcc-core-4.2.2.tar.bz2; + sha256 = "01hdwd4im2xzg159fk022zqyhlxphqvpmabd25bqb8fjbs2yi80a"; }) ++ optional /*langCC*/ true (fetchurl { - url = mirror://gnu/gcc/gcc-4.2.0/gcc-g++-4.2.0.tar.bz2; - sha256 = "0k5ribrfdp9vmljxrglcgx2j2r7xnycd1rvd8sny2y5cj0l8ps12"; + url = mirror://gnu/gcc/gcc-4.2.2/gcc-g++-4.2.2.tar.bz2; + sha256 = "04xankxi3bi4gvgv8rq9h6w3bdx59bg9zh0zv6lyw373gy26ygmq"; }) ++ optional langF77 (fetchurl { - url = mirror://gnu/gcc/gcc-4.2.0/gcc-fortran-4.2.0.tar.bz2; - sha256 = "0vw07qv6qpa5cgxc0qxraq6li2ibh8zrp65jrg92v4j63ivvi3hh"; + url = mirror://gnu/gcc/gcc-4.2.2/gcc-fortran-4.2.2.tar.bz2; + sha256 = "1fybl88w0l99cqppx18i6hnq5dsrssx3qd7vr2ybmmk3nfx8pziq"; }); patches = diff --git a/pkgs/development/compilers/gcc-4.2/no-sys-dirs.patch b/pkgs/development/compilers/gcc-4.2/no-sys-dirs.patch index d87f54669b7..f1d429e274a 100644 --- a/pkgs/development/compilers/gcc-4.2/no-sys-dirs.patch +++ b/pkgs/development/compilers/gcc-4.2/no-sys-dirs.patch @@ -120,26 +120,6 @@ diff -rc gcc-4.2.0-orig/gcc/gcc.c gcc-4.2.0/gcc/gcc.c static const char *md_exec_prefix = MD_EXEC_PREFIX; static const char *md_startfile_prefix = MD_STARTFILE_PREFIX; -diff -rc gcc-4.2.0-orig/ltcf-cxx.sh gcc-4.2.0/ltcf-cxx.sh -*** gcc-4.2.0-orig/ltcf-cxx.sh 2005-07-16 04:30:53.000000000 +0200 ---- gcc-4.2.0/ltcf-cxx.sh 2007-05-20 17:16:44.000000000 +0200 -*************** -*** 989,995 **** - # the conftest object file. - pre_test_object_deps_done=no - -! for p in `eval $output_verbose_link_cmd`; do - - case $p in - ---- 989,995 ---- - # the conftest object file. - pre_test_object_deps_done=no - -! for p in `true`; do - - case $p in - diff -rc gcc-4.2.0-orig/ltconfig gcc-4.2.0/ltconfig *** gcc-4.2.0-orig/ltconfig 2007-02-14 18:08:35.000000000 +0100 --- gcc-4.2.0/ltconfig 2007-05-20 22:16:24.000000000 +0200 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 90e2d4bc7a5..1b31a9e69a0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -889,7 +889,7 @@ rec { inherit stdenv; }; - gcc = gcc41; + gcc = gcc42; gcc295 = wrapGCC (import ../development/compilers/gcc-2.95 { inherit fetchurl stdenv noSysDirs; @@ -908,14 +908,14 @@ rec { profiledCompiler = true; }); - gcc41 = useFromStdenv (stdenv ? gcc) stdenv.gcc (wrapGCC (import ../development/compilers/gcc-4.1 { + gcc41 = wrapGCC (import ../development/compilers/gcc-4.1 { inherit fetchurl stdenv noSysDirs; profiledCompiler = false; - })); + }); gcc41NPTL = wrapGCCWithGlibc gcc41.gcc glibcNPTL; - gcc42 = lowPrio (wrapGCC (import ../development/compilers/gcc-4.2 { + gcc42 = useFromStdenv (stdenv ? gcc) stdenv.gcc (wrapGCC (import ../development/compilers/gcc-4.2 { inherit fetchurl stdenv noSysDirs; profiledCompiler = true; })); From 71353ce9293155133cd2ce676027346b51974a6d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 15 Nov 2007 16:15:15 +0000 Subject: [PATCH 004/320] * Perl: make it build with GCC 4.2. svn path=/nixpkgs/branches/stdenv-updates/; revision=9693 --- .../development/interpreters/perl/default.nix | 20 ++++++++++++------- .../interpreters/perl/gcc-4.2.patch | 10 ++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 pkgs/development/interpreters/perl/gcc-4.2.patch diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix index b9416bcc41f..f43578cdc33 100644 --- a/pkgs/development/interpreters/perl/default.nix +++ b/pkgs/development/interpreters/perl/default.nix @@ -9,13 +9,19 @@ stdenv.mkDerivation { sha256 = "1j8vzc6lva49mwdxkzhvm78dkxyprqs4n4057amqvsh4kh6i92l1"; }; - # This patch does the following: - # 1) Do use the PATH environment variable to find the `pwd' command. - # By default, Perl will only look for it in /lib and /usr/lib. - # !!! what are the security implications of this? - # 2) Force the use of , not /usr/include/errno.h, on Linux - # systems. (This actually appears to be due to a bug in Perl.) - patches = [./no-sys-dirs.patch]; + patches = [ + # This patch does the following: + # 1) Do use the PATH environment variable to find the `pwd' command. + # By default, Perl will only look for it in /lib and /usr/lib. + # !!! what are the security implications of this? + # 2) Force the use of , not /usr/include/errno.h, on Linux + # systems. (This actually appears to be due to a bug in Perl.) + ./no-sys-dirs.patch + + # Patch to make Perl 5.8.8 build with GCC 4.2. Taken from + # http://www.nntp.perl.org/group/perl.perl5.porters/2006/11/msg117738.html + ./gcc-4.2.patch + ]; setupHook = ./setup-hook.sh; } diff --git a/pkgs/development/interpreters/perl/gcc-4.2.patch b/pkgs/development/interpreters/perl/gcc-4.2.patch new file mode 100644 index 00000000000..679a7abde3b --- /dev/null +++ b/pkgs/development/interpreters/perl/gcc-4.2.patch @@ -0,0 +1,10 @@ +--- perl-5.8.x/makedepend.SH 2006-06-13 15:31:22.000000000 -0400 ++++ perl-5.8.x-andy/makedepend.SH 2006-07-25 14:45:11.000000000 -0400 +@@ -167,6 +167,7 @@ + -e '/^#.*/d' \ + -e '/^#.*/d' \ + -e '/^#.*/d' \ ++ -e '/^#.*/d' \ + -e '/^#.*"-"/d' \ + -e '/: file path prefix .* never used$/d' \ + -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \ From 8792fb81c7dfa34f743b959f89a3480f5ced40c7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 16 Nov 2007 21:05:15 +0000 Subject: [PATCH 005/320] Merged with trunk. The following is autogenerated by git: commit 9aaede75e73be646f35069d0717c8c70004ba3f0 Author: raskin Date: Fri Nov 16 18:37:23 2007 +0000 This was needed for me to get a working gnome-doc-utils package git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9726 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 751a9e6d19fc9e6c96b04eca450ea1b836d00865 Author: urkud Date: Fri Nov 16 17:30:34 2007 +0000 gdb upgraded git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9725 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit bb908853924046681d1cd6a85b05273aed14fd9f Author: urkud Date: Fri Nov 16 17:29:11 2007 +0000 gphoto2 upgraded to 2.4.0: all-packages.nix git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9724 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 619c7004d7140d6016927cd1114fd778aca3ecce Author: MarcWeber Date: Fri Nov 16 17:28:53 2007 +0000 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9723 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit f09310ed8403428021d2d751e273fc0add438032 Author: urkud Date: Fri Nov 16 17:28:17 2007 +0000 gphoto2 upgraded to 2.4.0 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9722 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 26d5cc1628e51853fdb9a7d162361b3a13581461 Author: MarcWeber Date: Fri Nov 16 17:27:27 2007 +0000 missing catalog added. Now you can open files git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9721 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 4eb1f68d61077e66b9ca3a0de3c86b1024f06db1 Author: MarcWeber Date: Fri Nov 16 17:09:32 2007 +0000 nix expression creating startup wrapper for jedit git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9720 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 69701148e45d29b1712c9f14628459def54be076 Author: MarcWeber Date: Fri Nov 16 17:06:53 2007 +0000 The nice programmers editor jedit is now built on nix as well. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9719 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 15ecdd411e78b952d8004323ec871ce6c4969c2e Author: wbreejen Date: Fri Nov 16 14:41:15 2007 +0000 Missing gecko now. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9715 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 6975eb6f2a972cca2adb2943190a41880e3bedf7 Author: wbreejen Date: Fri Nov 16 14:36:15 2007 +0000 Fix path of libnotify git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9714 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit ef985f4e88db03a0861fe8ccc8b35ec329ef616a Author: wbreejen Date: Fri Nov 16 14:34:02 2007 +0000 added libnotify git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9713 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 7fb35510feb89fecc9d92810a723baead232dff4 Author: wbreejen Date: Fri Nov 16 14:33:36 2007 +0000 added libnotify git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9712 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 7a9eb1e172ef5b111556d78a30003a87aee7f775 Author: wbreejen Date: Fri Nov 16 14:24:24 2007 +0000 libnotify is missing git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9711 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 433cc0578ce00860ddfac7d7934818ec0584f6e1 Author: wbreejen Date: Fri Nov 16 14:08:04 2007 +0000 Added libsexy git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9710 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 194a84b18965e9a3c8f9fa1305fac57690e683cb Author: wbreejen Date: Fri Nov 16 14:07:30 2007 +0000 Added libsexy git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9709 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 1d832560cf94bfa6793d90ff43f2235415bc3958 Author: wbreejen Date: Fri Nov 16 13:49:02 2007 +0000 Added openftd. Doesnt work (yet) git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9708 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 58e8a73f63a85a22ca45f046579d89bd0359f8ee Author: eelco Date: Fri Nov 16 13:08:20 2007 +0000 * GCC 3.4: pass --disable-multilib to make it build on x86_64. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9704 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 5ff88d858692e89120a4efa4acc2224eaf78d9a9 Author: raskin Date: Fri Nov 16 03:45:42 2007 +0000 bzip2 dependency added in a couple of places git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9702 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 128ac8a7ee8668fc933f4933a66f491c44234379 Author: urkud Date: Thu Nov 15 23:47:03 2007 +0000 Added python to libgsf dependencies git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9699 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 1847defee6331b03ba8a54ae9e3e68033310f7a2 Author: eelco Date: Thu Nov 15 17:05:45 2007 +0000 * Use latest Nix. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9695 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit cb1992780c20cb5885cf4d3932e7352f8b912533 Author: raskin Date: Thu Nov 15 04:23:46 2007 +0000 Added a currently more functional URL for libgcrypt git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9688 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 9d099dbef1a5721065bff5f2edd73844c829f538 Author: urkud Date: Thu Nov 15 00:16:03 2007 +0000 facile: fixed a typo git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9686 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 031c5b7d0797f5eee7be0a06856530c29adee710 Author: urkud Date: Thu Nov 15 00:11:56 2007 +0000 Added kde-4 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9685 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 81b3a7d92f2e9552c46ab47c75a2d3a40e151d43 Author: urkud Date: Thu Nov 15 00:08:58 2007 +0000 Added new kde-4 staff git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9684 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 18edb608ee7822438d4b2dc2a76af7567efd646a Author: urkud Date: Wed Nov 14 23:48:40 2007 +0000 kde-4: removed old staff from kde-4 dir git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9683 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 00d9b75d85f3a7de4db3feb313fe8d2d29f6bc2d Author: urkud Date: Wed Nov 14 23:46:48 2007 +0000 lame: upgrade to 3.97 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9682 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 52f8f699f29b6def41eee392f489c7e8ecd9399d Author: urkud Date: Wed Nov 14 23:44:21 2007 +0000 libgsf: meta written 0.14.7 in my previous commit was a typo: 1.14.7 of course git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9681 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 6e426380fc8c67b7dae57d4404ee7ca76d3e1d62 Author: urkud Date: Wed Nov 14 23:40:39 2007 +0000 libgsf: upgraded to 0.14.7 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9680 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 7787b342945cb13856168a353fdc9b0062e5f32b Author: urkud Date: Wed Nov 14 23:37:51 2007 +0000 clucene: upgrade, kde4: remove clucene-core upgraded to 0.9.20 clucene-contrib removed (can't find any version later than 0.9.16a and don't know whether it's compatible with new clucene-core) kde4: old staff removed, will add new tonight git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9679 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit b4900dece179788dfb8879518b8ec639ba089980 Author: urkud Date: Wed Nov 14 23:25:32 2007 +0000 Strigi removed I'll add a version from kdesupport trunk today git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9678 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit ffad224993440be069d4f15cf5e73ed018979311 Author: urkud Date: Wed Nov 14 23:23:36 2007 +0000 dbus-glib upgraded to 0.74, meta written git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9677 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 6ae133a8d5d472d9f475cacb7f3ff3e6703fb34b Author: urkud Date: Wed Nov 14 23:13:29 2007 +0000 xine-lib: upgraded to 1.1.8 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9676 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit d56f2643e631f8b3ce6e8228c35f2cc19755e2aa Author: urkud Date: Wed Nov 14 23:11:37 2007 +0000 chmlib: upgraded to 0.39 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9675 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit c31c27f328fdd4ae99d48bcc512231639dfcf6e5 Author: urkud Date: Wed Nov 14 23:05:11 2007 +0000 Added facile library git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9674 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 28f915ee41410b6f278faf07b0135bd4e9aeaf2f Author: urkud Date: Wed Nov 14 23:03:29 2007 +0000 libgcrypt-1.3.1 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9673 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit ca314a236b855b73024677f6dc5bc021070c4e72 Author: urkud Date: Wed Nov 14 22:49:24 2007 +0000 Fixed a typo in ocaml-3.10.0 git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9672 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit b3fa79d09289ab61a30f63692e7c475d0aec142e Author: urkud Date: Wed Nov 14 22:39:58 2007 +0000 ocaml: Added 3.10.0, using getVersion staff I've added the latest (3.10.0) version of ocaml and let the user choose default version. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9671 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 853d65d8a9fd65f7bf918c42342baf6690008f54 Author: urkud Date: Wed Nov 14 22:22:06 2007 +0000 Let user to choose python2.4 or python2.5 Currently, there is some code duplication. I'll try to rewrite it without modifying resulting derivations. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9670 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 65567e8e2e96d1a2e62af148fe043c86df0c5b60 Author: urkud Date: Wed Nov 14 21:57:26 2007 +0000 useVersion function added git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9669 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 2e5e12d1fc1faded72235fa66eb8efaa92e597ba Author: urkud Date: Wed Nov 14 21:41:01 2007 +0000 git: upgraded to 1.5.3.5; meta added; nix-expr slightly rewritten git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9668 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit dd564f36bd54d4900aefa759bc94cfac7496d1a2 Author: MarcWeber Date: Wed Nov 14 19:07:38 2007 +0000 added small script fixing the shebang (#!/bin/...) path. It searches the PATH env variable for the same executable. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9667 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 2f9213e49fbaa40634ccb9699e44aec239212aea Author: raskin Date: Wed Nov 14 01:20:17 2007 +0000 Now SVN Nix builds as a purely alternative Nix choice git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9666 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 016b6bfcc67244964251d68d86e1fa6de2062e54 Author: raskin Date: Tue Nov 13 15:52:16 2007 +0000 Added possibility to use non-default Nix. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9663 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 89f53d7b8dae8d4ec537322340be212602524102 Author: MarcWeber Date: Tue Nov 13 01:26:54 2007 +0000 implemented proposal by niksnut. Now you have to use either date= or tag= when specifying cvs revision git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9661 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit ced4ab4c8b5750a0f0a6a685830c8cb5340b6d52 Author: eelco Date: Mon Nov 12 16:45:47 2007 +0000 * Symlink $out/bin to $out/libexec. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9659 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit d454ab8861882e18ed3b79287727890ec6668455 Author: raskin Date: Mon Nov 12 16:42:13 2007 +0000 Beta-version of builderDefs fixes. git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9657 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 959e395c49753d902201d457cee102b40608d3f9 Author: urkud Date: Mon Nov 12 16:12:50 2007 +0000 djview location corrected git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9655 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 52530f607a15017e94225ee50e2698963325ed80 Author: eelco Date: Mon Nov 12 13:51:46 2007 +0000 * Revert the setup hook changes on the trunk (but they remain on the stdenv-updates branch). git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9652 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb commit 977bdfec49557f48bc1e121e3375c21d4991434f Author: skolthof Date: Mon Nov 12 13:48:33 2007 +0000 * added Haskell package gtk2hs git-svn-id: https://svn.cs.uu.nl:12443/repos/trace/nixpkgs/trunk@9651 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb svn path=/nixpkgs/branches/stdenv-updates/; revision=9727 --- .../audio/ladspa-plugins/default.nix | 3 +- pkgs/applications/audio/lame/default.nix | 6 +- pkgs/applications/jedit/default.nix | 28 +++ pkgs/applications/jedit/wrapper.nix | 18 ++ pkgs/applications/misc/gphoto2/default.nix | 14 +- pkgs/applications/misc/synergy/default.nix | 2 +- .../networking/browsers/elinks/default.nix | 6 +- .../version-management/git/default.nix | 21 +- pkgs/build-support/fetchcvs/builder.sh | 13 +- pkgs/build-support/fetchcvs/default.nix | 12 +- pkgs/desktops/gnome/default.nix | 2 +- pkgs/desktops/gnome/gnome-doc-utils.nix | 17 +- .../kde-4/{kdebase => base}/builder.sh | 11 +- pkgs/desktops/kde-4/base/default.nix | 14 ++ pkgs/desktops/kde-4/decibel/default.nix | 11 + pkgs/desktops/kde-4/default.nix | 35 ++++ pkgs/desktops/kde-4/edu/default.nix | 20 ++ .../CheckBoostAndPythonCompatible.cmake | 38 ++++ .../edu/myCmakeFiles/FindBoostPython.cmake | 90 ++++++++ .../edu/myCmakeFiles/FindLibfacile.cmake | 45 ++++ .../edu/myCmakeFiles/PythonLibsUtils.cmake | 46 ++++ pkgs/desktops/kde-4/extragear/default.nix | 14 ++ pkgs/desktops/kde-4/games/default.nix | 12 ++ pkgs/desktops/kde-4/graphics/default.nix | 13 ++ pkgs/desktops/kde-4/kdebase/default.nix | 55 ----- pkgs/desktops/kde-4/kdelibs/default.nix | 48 ----- pkgs/desktops/kde-4/kdepim/builder.sh | 18 -- pkgs/desktops/kde-4/kdepim/default.nix | 55 ----- pkgs/desktops/kde-4/kdepimlibs/default.nix | 48 ----- pkgs/desktops/kde-4/libs/FindIlmBase.cmake | 74 +++++++ pkgs/desktops/kde-4/libs/FindOpenEXR.cmake | 68 ++++++ pkgs/desktops/kde-4/libs/default.nix | 27 +++ pkgs/desktops/kde-4/libs/setup.sh | 5 + pkgs/desktops/kde-4/multimedia/default.nix | 13 ++ pkgs/desktops/kde-4/network/default.nix | 12 ++ pkgs/desktops/kde-4/pim/builder.sh | 10 + pkgs/desktops/kde-4/pim/default.nix | 15 ++ pkgs/desktops/kde-4/pimlibs/default.nix | 12 ++ pkgs/desktops/kde-4/runtime/builder.sh | 12 ++ pkgs/desktops/kde-4/runtime/default.nix | 15 ++ pkgs/desktops/kde-4/support/akode.nix | 13 ++ pkgs/desktops/kde-4/support/default.nix | 36 ++++ pkgs/desktops/kde-4/support/eigen.nix | 13 ++ pkgs/desktops/kde-4/support/gmm.nix | 13 ++ pkgs/desktops/kde-4/support/qca.nix | 15 ++ pkgs/desktops/kde-4/support/qimageblitz.nix | 13 ++ pkgs/desktops/kde-4/support/soprano.nix | 14 ++ pkgs/desktops/kde-4/support/strigi.nix | 15 ++ pkgs/desktops/kde-4/support/taglib.nix | 13 ++ pkgs/desktops/kde-4/toys/default.nix | 12 ++ pkgs/desktops/kde-4/utils/default.nix | 13 ++ pkgs/desktops/kde-4/workspace/builder.sh | 12 ++ pkgs/desktops/kde-4/workspace/default.nix | 15 ++ pkgs/development/compilers/gcc-3.4/builder.sh | 12 -- .../development/compilers/gcc-3.4/default.nix | 19 +- .../ocaml/{ocaml-3.08.0.nix => 3.08.0.nix} | 2 +- .../ocaml/{ocaml-3.09.1.nix => 3.09.1.nix} | 2 +- pkgs/development/compilers/ocaml/3.10.0.nix | 23 ++ pkgs/development/compilers/ocaml/default.nix | 8 +- .../interpreters/perl/setup-hook.sh | 4 +- pkgs/development/interpreters/python/2.4.nix | 52 +++++ .../interpreters/python/2.5/setup-hook.sh | 5 +- .../interpreters/python/default.nix | 55 +---- .../interpreters/python/setup-hook.sh | 5 +- pkgs/development/libraries/chmlib/builder.sh | 19 -- pkgs/development/libraries/chmlib/default.nix | 17 +- .../libraries/clucene-contrib/default.nix | 18 -- .../libraries/clucene-core/default.nix | 25 ++- .../libraries/dbus-glib/default.nix | 14 +- pkgs/development/libraries/facile/default.nix | 19 ++ .../libraries/haskell/gtk2hs/default.nix | 18 ++ .../development/libraries/libexif/default.nix | 12 +- .../libraries/libgcrypt/default.nix | 11 +- .../libraries/libgphoto2/default.nix | 17 +- pkgs/development/libraries/libgsf/default.nix | 19 +- .../libraries/libnotify/default.nix | 20 ++ .../development/libraries/libsexy/default.nix | 17 ++ pkgs/development/libraries/libwpd/default.nix | 5 +- .../development/libraries/openssl/default.nix | 3 +- pkgs/development/libraries/strigi/default.nix | 20 -- .../libraries/xine-lib/default.nix | 6 +- .../tools/build-managers/cmake/setup-hook.sh | 15 +- .../tools/misc/automake/setup-hook.sh | 4 +- pkgs/development/tools/misc/gdb/default.nix | 10 +- .../tools/misc/pkgconfig/builder.sh | 10 + .../tools/misc/pkgconfig/default.nix | 12 +- .../tools/misc/pkgconfig/setup-hook.sh | 4 +- pkgs/lib/default.nix | 4 + .../nagios/plugins/official/default.nix | 2 + pkgs/test/openftd/default.nix | 49 +++++ pkgs/tools/misc/shebangfix/default.nix | 20 ++ pkgs/tools/misc/shebangfix/shebangfix.pl | 35 ++++ pkgs/tools/misc/wv/default.nix | 2 +- pkgs/tools/package-management/nix/custom.nix | 45 ++++ .../tools/package-management/nix/unstable.nix | 4 +- pkgs/top-level/all-packages.nix | 197 +++++++++--------- pkgs/top-level/builder-defs.nix | 74 ++++--- 97 files changed, 1501 insertions(+), 608 deletions(-) create mode 100644 pkgs/applications/jedit/default.nix create mode 100644 pkgs/applications/jedit/wrapper.nix rename pkgs/desktops/kde-4/{kdebase => base}/builder.sh (55%) create mode 100644 pkgs/desktops/kde-4/base/default.nix create mode 100644 pkgs/desktops/kde-4/decibel/default.nix create mode 100644 pkgs/desktops/kde-4/default.nix create mode 100644 pkgs/desktops/kde-4/edu/default.nix create mode 100644 pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake create mode 100644 pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake create mode 100644 pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake create mode 100644 pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake create mode 100644 pkgs/desktops/kde-4/extragear/default.nix create mode 100644 pkgs/desktops/kde-4/games/default.nix create mode 100644 pkgs/desktops/kde-4/graphics/default.nix delete mode 100644 pkgs/desktops/kde-4/kdebase/default.nix delete mode 100644 pkgs/desktops/kde-4/kdelibs/default.nix delete mode 100755 pkgs/desktops/kde-4/kdepim/builder.sh delete mode 100644 pkgs/desktops/kde-4/kdepim/default.nix delete mode 100644 pkgs/desktops/kde-4/kdepimlibs/default.nix create mode 100644 pkgs/desktops/kde-4/libs/FindIlmBase.cmake create mode 100644 pkgs/desktops/kde-4/libs/FindOpenEXR.cmake create mode 100644 pkgs/desktops/kde-4/libs/default.nix create mode 100755 pkgs/desktops/kde-4/libs/setup.sh create mode 100644 pkgs/desktops/kde-4/multimedia/default.nix create mode 100644 pkgs/desktops/kde-4/network/default.nix create mode 100755 pkgs/desktops/kde-4/pim/builder.sh create mode 100644 pkgs/desktops/kde-4/pim/default.nix create mode 100644 pkgs/desktops/kde-4/pimlibs/default.nix create mode 100755 pkgs/desktops/kde-4/runtime/builder.sh create mode 100644 pkgs/desktops/kde-4/runtime/default.nix create mode 100644 pkgs/desktops/kde-4/support/akode.nix create mode 100644 pkgs/desktops/kde-4/support/default.nix create mode 100644 pkgs/desktops/kde-4/support/eigen.nix create mode 100644 pkgs/desktops/kde-4/support/gmm.nix create mode 100644 pkgs/desktops/kde-4/support/qca.nix create mode 100644 pkgs/desktops/kde-4/support/qimageblitz.nix create mode 100644 pkgs/desktops/kde-4/support/soprano.nix create mode 100644 pkgs/desktops/kde-4/support/strigi.nix create mode 100644 pkgs/desktops/kde-4/support/taglib.nix create mode 100644 pkgs/desktops/kde-4/toys/default.nix create mode 100644 pkgs/desktops/kde-4/utils/default.nix create mode 100755 pkgs/desktops/kde-4/workspace/builder.sh create mode 100644 pkgs/desktops/kde-4/workspace/default.nix rename pkgs/development/compilers/ocaml/{ocaml-3.08.0.nix => 3.08.0.nix} (94%) rename pkgs/development/compilers/ocaml/{ocaml-3.09.1.nix => 3.09.1.nix} (92%) create mode 100644 pkgs/development/compilers/ocaml/3.10.0.nix create mode 100644 pkgs/development/interpreters/python/2.4.nix delete mode 100644 pkgs/development/libraries/chmlib/builder.sh delete mode 100644 pkgs/development/libraries/clucene-contrib/default.nix create mode 100644 pkgs/development/libraries/facile/default.nix create mode 100644 pkgs/development/libraries/haskell/gtk2hs/default.nix create mode 100644 pkgs/development/libraries/libnotify/default.nix create mode 100644 pkgs/development/libraries/libsexy/default.nix delete mode 100644 pkgs/development/libraries/strigi/default.nix create mode 100644 pkgs/development/tools/misc/pkgconfig/builder.sh create mode 100644 pkgs/test/openftd/default.nix create mode 100644 pkgs/tools/misc/shebangfix/default.nix create mode 100644 pkgs/tools/misc/shebangfix/shebangfix.pl create mode 100644 pkgs/tools/package-management/nix/custom.nix diff --git a/pkgs/applications/audio/ladspa-plugins/default.nix b/pkgs/applications/audio/ladspa-plugins/default.nix index 9a033a42b87..70dc36240c6 100644 --- a/pkgs/applications/audio/ladspa-plugins/default.nix +++ b/pkgs/applications/audio/ladspa-plugins/default.nix @@ -17,7 +17,8 @@ in stdenv.mkDerivation { name = "swh-plugins-0.4.15"; builder = writeScript "swh-plugins-0.4.15-builder" - (textClosure [doConfigure doMakeInstall postInstall doForceShare]); + (textClosure [doConfigure doMakeInstall + postInstall doForceShare]); meta = { description = " LADSPA format audio plugins. diff --git a/pkgs/applications/audio/lame/default.nix b/pkgs/applications/audio/lame/default.nix index 503c0c39595..fa0fa679079 100644 --- a/pkgs/applications/audio/lame/default.nix +++ b/pkgs/applications/audio/lame/default.nix @@ -1,9 +1,9 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "lame-3.96.1"; + name = "lame-3.97"; src = fetchurl { - url = mirror://sourceforge/lame/lame-3.96.1.tar.gz ; - md5 = "e1206c46a5e276feca11a7149e2fc6ac" ; + url = mirror://sourceforge/lame/lame-3.97.tar.gz ; + sha256 = "05xy9lv6m9s013lzlvhxwvr1586c239xaiiwka52k18hs6k388qa"; }; } diff --git a/pkgs/applications/jedit/default.nix b/pkgs/applications/jedit/default.nix new file mode 100644 index 00000000000..3d694ee3ed7 --- /dev/null +++ b/pkgs/applications/jedit/default.nix @@ -0,0 +1,28 @@ +args: +args.stdenv.mkDerivation { + name = "jedit-4.2"; + + src = args.fetchurl { + url = http://kent.dl.sourceforge.net/sourceforge/jedit/jedit42source.tar.gz; + sha256 = "1ckqghsw2r30kfkqfgjl4k47gdwpz8c1h85haw0y0ymq4rqh798j"; + }; + + phases = "unpackPhase buildPhase"; + + buildPhase = " + sed -i 's/\\/org.gjt.sp.jedit.gui.SplashScreen/g' org/gjt/sp/jedit/GUIUtilities.java + ant dist + ensureDir $out/lib + cp jedit.jar $out/lib + ensureDir \$out/lib/modes + cp modes/catalog \$out/lib/modes + "; + + buildInputs =(with args; [ant]); + + meta = { + description = "really nice programmers editor written in Java. Give it a try"; + homepage = http://sourceforge.net/project/showfiles.php?group_id=588; + license = "GPL"; + }; +} diff --git a/pkgs/applications/jedit/wrapper.nix b/pkgs/applications/jedit/wrapper.nix new file mode 100644 index 00000000000..ff8f6abacfc --- /dev/null +++ b/pkgs/applications/jedit/wrapper.nix @@ -0,0 +1,18 @@ +args: +args.stdenv.mkDerivation { + name = args.jedit.name+"_startscript"; + + java = args.jre+"/bin/java"; + jeditjar = args.jedit+"/lib/jedit.jar"; + + phases = "buildPhase"; + + buildPhase = " +ensureDir \$out/bin +cat > \$out/bin/${args.jedit.name} << EOF +#!/bin/sh +exec $java -jar $jeditjar \\$* +EOF + chmod +x \$out/bin/${args.jedit.name} +"; +} diff --git a/pkgs/applications/misc/gphoto2/default.nix b/pkgs/applications/misc/gphoto2/default.nix index caab251edd9..ef70b54384a 100644 --- a/pkgs/applications/misc/gphoto2/default.nix +++ b/pkgs/applications/misc/gphoto2/default.nix @@ -1,10 +1,12 @@ -{stdenv, fetchurl, pkgconfig, libgphoto2, libexif, popt}: +args: with args; -stdenv.mkDerivation { - name = "gphoto2-2.2.0"; +stdenv.mkDerivation rec { + name = "gphoto2-2.4.0"; src = fetchurl { - url = mirror://sourceforge/gphoto/gphoto2-2.2.0.tar.bz2; - md5 = "f5c1f83185db598b4ca52889964a5e84"; + url = "mirror://sourceforge/gphoto/${name}.tar.bz2"; + sha256 = "1rf4w5m35dsi8dkwwnh4wg70xivdi9j79f2dy3rq90p1v8sar9ca"; }; - buildInputs = [pkgconfig libgphoto2 libexif popt]; + buildInputs = [pkgconfig libgphoto2 libexif popt gettext]; +# There is a bug in 2.4.0 configure.ac (in their m4 macroses) + patchPhase = "sed -e 's@_tmp=true@_tmp=false@' -i configure configure.ac"; } diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix index b2b7af6f014..7872c6abaaf 100644 --- a/pkgs/applications/misc/synergy/default.nix +++ b/pkgs/applications/misc/synergy/default.nix @@ -5,7 +5,7 @@ args.stdenv.mkDerivation { src = args.fetchcvs { url = ":pserver:anonymous@synergy2.cvs.sourceforge.net:/cvsroot/synergy2"; module = "synergy"; - tag = "-DNOW"; + date = "NOW"; sha256 = "ef8e2ebfda6e43240051a7af9417092b2af50ece8b5c6c3fbd908ba91c4fe068"; }; diff --git a/pkgs/applications/networking/browsers/elinks/default.nix b/pkgs/applications/networking/browsers/elinks/default.nix index 9804f758ba7..1e786848133 100644 --- a/pkgs/applications/networking/browsers/elinks/default.nix +++ b/pkgs/applications/networking/browsers/elinks/default.nix @@ -8,11 +8,7 @@ stdenv.mkDerivation { sha256 = "c10e657fbd884eae4f01b91b32407bbfcbcae0ad5017fb24ea365aebc71d2af1"; }; - preConfigure = " - touch config.log ; rm /tmp/elinks.config.log; ln -f config.log /tmp/elinks.config.log"; - - buildInputs = [python perl ncurses x11 bzip2 zlib openssl spidermonkey guile - libtool]; + buildInputs = [python perl ncurses x11 bzip2 zlib openssl spidermonkey guile]; configureFlags = "--enable-finger --enable-html-highlight --with-guile --with-perl --with-python --enable-gopher --enable-cgi --enable-bittorrent --enable-nntp --with-openssl=${openssl}"; diff --git a/pkgs/applications/version-management/git/default.nix b/pkgs/applications/version-management/git/default.nix index 138b4d61449..c2388f8c1aa 100644 --- a/pkgs/applications/version-management/git/default.nix +++ b/pkgs/applications/version-management/git/default.nix @@ -1,16 +1,21 @@ -{stdenv, fetchurl, curl, openssl, zlib, expat, perl}: +args: with args; -stdenv.mkDerivation { - name = "git-1.5.1.2"; +stdenv.mkDerivation rec { + name = "git-1.5.3.5"; src = fetchurl { - url = mirror://kernel/software/scm/git/git-1.5.1.2.tar.bz2; - sha256 = "0a7nnw9631h6nxk7sny0cjv89qlibilvsm6947620vr2kgc6p6k2"; + url = "mirror://kernel/software/scm/git/${name}.tar.bz2"; + sha256 = "0ab63s25wzmsl5inp7bykz5ac7xjilqa0ciaz7ydhciymz6gkawj"; }; buildInputs = [curl openssl zlib expat]; - preBuild = " - makeFlagsArray=(prefix=$out PERL_PATH=${perl}/bin/perl SHELL_PATH=${stdenv.shell}) - "; + makeFlags="prefix=\${out} PERL_PATH=${perl}/bin/perl SHELL_PATH=${stdenv.shell}"; + + meta = { + license = "GPL2"; + homepage = http://git.or.cz; + description = "A popular version control system designed to handle very + large projects with speed and efficiency"; + }; } diff --git a/pkgs/build-support/fetchcvs/builder.sh b/pkgs/build-support/fetchcvs/builder.sh index 16aad96116d..be3e9e46355 100644 --- a/pkgs/build-support/fetchcvs/builder.sh +++ b/pkgs/build-support/fetchcvs/builder.sh @@ -1,8 +1,5 @@ source $stdenv/setup -if test -z "$tag"; then - tag="-DNOW" -fi # creating the export drictory and checking out there only to be able to # move the content without the root directory into $out ... # cvs -f -d "$url" export $tag -d "$out" "$module" @@ -10,6 +7,16 @@ fi # See als man Page for those options ensureDir $out export +set -x +if [ -n "$tag" ]; then + tag="-r $tag" +else + if [ -n "$date" ]; then + tag="-D $date" + else + tag="-D NOW" + fi +fi cd export; cvs -f -d "$url" export $tag "$module" mv */* $out diff --git a/pkgs/build-support/fetchcvs/default.nix b/pkgs/build-support/fetchcvs/default.nix index 6cd31ddaade..60463ec5644 100644 --- a/pkgs/build-support/fetchcvs/default.nix +++ b/pkgs/build-support/fetchcvs/default.nix @@ -1,13 +1,13 @@ # example tags: -# "-DNOW" (get current version) -# "-D2007-20-10" (get the last version before given date) -# "-r " (get version by tag name) -{stdenv, cvs, nix}: {url, module, tag, sha256}: +# date="2007-20-10"; (get the last version before given date) +# tag="" (get version by tag name) +# If you don't specify neither one date="NOW" will be used (get latest) + +{stdenv, cvs, nix}: {url, module, tag ? null, date ? null, sha256}: stdenv.mkDerivation { name = "cvs-export"; builder = ./builder.sh; buildInputs = [cvs nix]; - - inherit url module tag sha256; + inherit url module sha256 tag date; } diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix index 6410e9c053a..9b4c14340bf 100644 --- a/pkgs/desktops/gnome/default.nix +++ b/pkgs/desktops/gnome/default.nix @@ -210,7 +210,7 @@ rec { gnomedocutils = import ./gnome-doc-utils.nix { inherit stdenv fetchurl pkgconfig perl perlXMLParser python - libxml2 libxslt gettext; + libxml2 libxslt gettext libxml2Python; input = desktop.gnomedocutils; }; diff --git a/pkgs/desktops/gnome/gnome-doc-utils.nix b/pkgs/desktops/gnome/gnome-doc-utils.nix index f1650d9650a..8a77d96475f 100644 --- a/pkgs/desktops/gnome/gnome-doc-utils.nix +++ b/pkgs/desktops/gnome/gnome-doc-utils.nix @@ -1,7 +1,4 @@ -{ input, stdenv, fetchurl, pkgconfig, perl, perlXMLParser, python -, libxml2, libxslt, gettext -}: - +args: with args; # !!! xml2po needs to store the path to libxml2 stdenv.mkDerivation { @@ -9,8 +6,18 @@ stdenv.mkDerivation { buildInputs = [ pkgconfig perl perlXMLParser python - libxml2 libxslt gettext + libxml2 libxslt gettext python libxml2Python ]; configureFlags = "--disable-scrollkeeper"; + + postInstall = " + mv \$out/bin/xml2po \$out/bin/.xml2po.orig + pythonPathLibXml2=\"\$(toPythonPath ${libxml2Python})\" + echo -e '#! ${stdenv.shell}\nPYTHONPATH=$PYTHONPATH:'\"\$( toPythonPath \$out )"+ + ":\${pythonPathLibXml2//python2.5/python2.4}"+ + ":\$( toPythonPath ${libxml2Python} )\""+ + "' \$(dirname \$0)/.xml2po.orig \"\$@\"' > \$out/bin/xml2po; + chmod a+x \$out/bin/xml2po + "; } diff --git a/pkgs/desktops/kde-4/kdebase/builder.sh b/pkgs/desktops/kde-4/base/builder.sh similarity index 55% rename from pkgs/desktops/kde-4/kdebase/builder.sh rename to pkgs/desktops/kde-4/base/builder.sh index 41cff761b36..99b357fcf16 100755 --- a/pkgs/desktops/kde-4/kdebase/builder.sh +++ b/pkgs/desktops/kde-4/base/builder.sh @@ -1,21 +1,12 @@ source ${stdenv}/setup -myPreBuild() -{ - for i in ${qt}/include/*; do - NIX_CFLAGS_COMPILE="-I$i ${NIX_CFLAGS_COMPILE}" - done; - echo "${NIX_CFLAGS_COMPILE}" -} -preBuild=myPreBuild - myPatchPhase() { echo "Fixing dbus calls in CMakeLists.txt files" # Trailing slash in sed is essential find .. -name CMakeLists.txt \ | xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i - sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h + #sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h } patchPhase=myPatchPhase genericBuild diff --git a/pkgs/desktops/kde-4/base/default.nix b/pkgs/desktops/kde-4/base/default.nix new file mode 100644 index 00000000000..75dbfbf40d4 --- /dev/null +++ b/pkgs/desktops/kde-4/base/default.nix @@ -0,0 +1,14 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdebase-4.0beta4"; + #builder = ./builder.sh; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdebase-3.95.0.tar.bz2; + sha256 = "0qf7bn5jqj70hznjk74vpwb7rvk6f5gx9fxwli930b2hskib3zll"; + }; + + propagatedBuildInputs = [kdepimlibs libusb]; + inherit kdelibs; +} diff --git a/pkgs/desktops/kde-4/decibel/default.nix b/pkgs/desktops/kde-4/decibel/default.nix new file mode 100644 index 00000000000..ff98b48ee6f --- /dev/null +++ b/pkgs/desktops/kde-4/decibel/default.nix @@ -0,0 +1,11 @@ +args: with args; +stdenv.mkDerivation { + name = "decibel-0.5.0"; + + src = fetchurl { + url = http://decibel.kde.org/fileadmin/downloads/decibel/releases/decibel-0.5.0.tar.gz; + sha256 = "07visasid4mpzm0ba5j9qy0lxxb6451lvbr2gnc1vzfvjagffqz4"; + }; + + buildInputs = [kdelibs kdebase ]; +} diff --git a/pkgs/desktops/kde-4/default.nix b/pkgs/desktops/kde-4/default.nix new file mode 100644 index 00000000000..9732d9e2b2b --- /dev/null +++ b/pkgs/desktops/kde-4/default.nix @@ -0,0 +1,35 @@ +args: +rec { + fullargs = args // { kdelibs = libs; kdepimlibs = pimlibs; kdebase = base; kderuntime = runtime; }; + libs = import ./libs (args // { kdesupport = support; }); + pimlibs = import ./pimlibs (args // { kdelibs = libs; }); + graphics = import ./graphics (fullargs // { kdeworkspace = workspace; } ); + multimedia = import ./multimedia (fullargs // { kdeworkspace = workspace; } ); + toys = import ./toys (fullargs // { kdeworkspace = workspace; } ); + network = import ./network (fullargs // { kdeworkspace = workspace; } ); + utils = import ./utils (fullargs // { kdeworkspace = workspace; } ); + games = import ./games (fullargs // { kdeworkspace = workspace; } ); + edu = import ./edu (fullargs // { kdeworkspace = workspace; } ); + base = import ./base fullargs; + runtime = import ./runtime fullargs; + workspace = import ./workspace fullargs; + extragear_plasma = import ./extragear (fullargs // { kdeworkspace = workspace; }); + support = import ./support args; + decibel = import ./decibel fullargs; + pim = import ./pim (fullargs // {kdeworkspace = workspace; }); + + env = with args; runCommand "kde-env" + { + KDEDIRS = lib.concatStringsSep ":" ([ libs pimlibs graphics multimedia + toys network utils games edu base runtime workspace extragear_plasma pim] ++ + support.all); + scriptName = "echo-kde-dirs"; + } + " + ensureDir \${out}/bin + scriptPath=\${out}/bin/\${scriptName} + echo \"#!/bin/sh\" > \${scriptPath} + echo \"echo -n export KDEDIRS=\${KDEDIRS}\" >> \${scriptPath} + chmod +x \${scriptPath} + "; +} diff --git a/pkgs/desktops/kde-4/edu/default.nix b/pkgs/desktops/kde-4/edu/default.nix new file mode 100644 index 00000000000..e69a1a49be6 --- /dev/null +++ b/pkgs/desktops/kde-4/edu/default.nix @@ -0,0 +1,20 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "kdeedu-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdeedu-3.95.0.tar.bz2; + sha256 = "0cydl3pp3l0cbfmf774qh8njyhycaf8yxb27k4xf6mipvw1k9jqf"; + }; + + buildInputs = [kdelibs kdepimlibs kdeworkspace boost readline openbabel ocaml + libusb facile python]; + myCmakeFiles = ./myCmakeFiles; + patchPhase = " + cp ${myCmakeFiles}/* ../cmake/modules + sed -e 's@+facile@\${LIBFACILE_INCLUDE_DIR}@' -i \\ + ../kalzium/src/CMakeOCamlInstructions.cmake + "; + configureFlags = "--debug-trycompile"; +} diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake new file mode 100644 index 00000000000..35701ecf5c6 --- /dev/null +++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake @@ -0,0 +1,38 @@ +include(CheckCXXSourceCompiles) +include(CheckIncludeFileCXX) +include(CheckLibraryExists) + +MACRO(check_boost_and_python_compatible + _bo_inc _bo_ld _bo_py_lib + _py_inc _py_ld _py_lib) + + set(_save_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}") + + set(CMAKE_REQUIRED_FLAGS "-L${_bo_ld} -L${_py_ld}") + set(CMAKE_REQUIRED_INCLUDES ${_py_inc} ${_bo_inc}) + set(CMAKE_REQUIRED_LIBRARIES ${_bo_py_lib} ${_py_lib}) + + check_cxx_source_compiles(" +#include +const char* greet() { return \"Hello world!\"; } +BOOST_PYTHON_MODULE(hello) { boost::python::def(\"greet\", greet); } + +int main() { return 0; } + +// some vars, in case of the compilation fail... +// python include dir: ${_py_inc} +// python lib: ${_py_lib} +// +// boost python lib: ${_bo_py_lib} +// boost include dir: ${_bo_inc} +// boost lib dir: ${_bo_ld} +// +" +BOOST_PYTHON_${_bo_inc}_${_bo_ld}_${_bo_py_lib}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE ) + + set(CMAKE_REQUIRED_FLAGS) + set(CMAKE_REQUIRED_INCLUDES) + set(CMAKE_REQUIRED_LIBRARIES) + set(CMAKE_CXX_FLAGS ${_save_CXX_FLAGS}) +ENDMACRO(check_boost_and_python_compatible) diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake new file mode 100644 index 00000000000..b68959d8a9c --- /dev/null +++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake @@ -0,0 +1,90 @@ +# - Try to find the a valid boost+python combination +# Once done this will define +# +# Boost_PYTHON_FOUND - system has a valid boost+python combination +# BOOST_PYTHON_INCLUDES - the include directory for boost+python +# BOOST_PYTHON_LIBS - the needed libs for boost+python + +# Copyright (c) 2006, Pino Toscano, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) + # Already in cache, be silent + set(Boost_PYTHON_FIND_QUIETLY TRUE) +endif(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) + +SET(Boost_PYTHON_LIB_SUFFIXES "-mt" "-gcc-mt") +SET(Boost_KNOWN_VERSIONS "-1_34_1" "-1_34_0" "-1_33_1" "-1_33_0") + +FIND_PACKAGE(Boost) +INCLUDE(PythonLibsUtils) +INCLUDE(CheckBoostAndPythonCompatible) + +IF(Boost_FOUND AND Boost_LIBRARY_DIRS) + + SET(Boost_PYTHON_LIB_NAMES boost_python) + FOREACH(_suffix ${Boost_PYTHON_LIB_SUFFIXES}) + set(Boost_PYTHON_LIB_NAMES ${Boost_PYTHON_LIB_NAMES} + boost_python${_suffix}) + FOREACH(_bo_ver ${Boost_KNOWN_VERSIONS}) + set(Boost_PYTHON_LIB_NAMES ${Boost_PYTHON_LIB_NAMES} + boost_python${_suffix}${_bo_ver}) + ENDFOREACH(_bo_ver) + ENDFOREACH(_suffix) + + SET(_found FALSE) + FOREACH(_boost_python_lib ${Boost_PYTHON_LIB_NAMES}) + IF(NOT _found) + FIND_LIBRARY(Boost_PYTHON_LIB_FULLPATH + NAME ${_boost_python_lib} + PATHS ${Boost_LIBRARY_DIRS} + NO_DEFAULT_PATH + ) + IF(Boost_PYTHON_LIB_FULLPATH) + SET(Boost_PYTHON_LIB ${_boost_python_lib}) + SET(_found TRUE) + ENDIF(Boost_PYTHON_LIB_FULLPATH) + ENDIF(NOT _found) + ENDFOREACH(_boost_python_lib) + + IF(Boost_PYTHON_LIB) + SET(_found FALSE) + FOREACH(_py_ver ${PYTHON_KNOWN_VERSIONS}) + if (NOT _found) + python_find_version(${_py_ver} _py_inc _py_ld _py_lib) + IF(PYTHON_REQ_VERSION_FOUND) + MESSAGE(STATUS " ${Boost_INCLUDE_DIRS} ${Boost_LIBRARY_DIRS} ${Boost_PYTHON_LIB} ${_py_inc} ${_py_ld} ${_py_lib}") + check_boost_and_python_compatible( + "${Boost_INCLUDE_DIRS}" "${Boost_LIBRARY_DIRS}" + "${Boost_PYTHON_LIB}" "${_py_inc}" "${_py_ld}" + "${_py_lib}") + SET(_found + BOOST_PYTHON_${Boost_INCLUDE_DIRS}_${Boost_LIBRARY_DIRS}_${Boost_PYTHON_LIB}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE) + + IF(BOOST_PYTHON_${Boost_INCLUDE_DIRS}_${Boost_LIBRARY_DIRS}_${Boost_PYTHON_LIB}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE) + SET(BOOST_PYTHON_INCLUDES ${Boost_INCLUDE_DIRS} ${_py_inc}) + SET(BOOST_PYTHON_LIBS "-l${_py_lib} -L${_py_ld} -l${Boost_PYTHON_LIB}") + SET(BOOST_PYTHON_FOUND TRUE) + SET(_found TRUE) + ENDIF(BOOST_PYTHON_${Boost_INCLUDE_DIRS}_${Boost_LIBRARY_DIRS}_${Boost_PYTHON_LIB}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE) + ENDIF(PYTHON_REQ_VERSION_FOUND) + ENDIF(NOT _found) + ENDFOREACH(_py_ver) + ENDIF(Boost_PYTHON_LIB) +ENDIF(Boost_FOUND AND Boost_LIBRARY_DIRS) + +if(BOOST_PYTHON_FOUND) + if(NOT BoostPython_FIND_QUIETLY) + message(STATUS "Found Boost+Python: ${BOOST_PYTHON_INCLUDES} ${BOOST_PYTHON_LIBS}") + endif(NOT BoostPython_FIND_QUIETLY) + set(KIG_ENABLE_PYTHON_SCRIPTING 1) +else (BOOST_PYTHON_FOUND) + if (BoostPython_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find Boost+Python") + endif(BoostPython_FIND_REQUIRED) + set(KIG_ENABLE_PYTHON_SCRIPTING 0) +endif(BOOST_PYTHON_FOUND) + +mark_as_advanced(BOOST_PYTHON_INCLUDES BOOST_PYTHON_LIBS) diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake new file mode 100644 index 00000000000..154531dabc1 --- /dev/null +++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake @@ -0,0 +1,45 @@ +# - Try to find Libfacile +# Once done this will define +# +# LIBFACILE_FOUND - system has Libfacile +# LIBFACILE_INCLUDE_DIR - the Libfacile include directory +# LIBFACILE_LIBRARIES - Link these to use Libfacile +# LIBFACILE_DEFINITIONS - Compiler switches required for using Libfacile +# +# Copyright (c) 2006, Carsten Niehaus, +# Copyright (c) 2006, Montel Laurent, +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +find_package(OCaml) + +set(LIBFACILE_FOUND FALSE) + +if( OCAML_FOUND ) + find_file(LIBFACILE_LIBRARIES NAME facile.a + PATHS ${OCAMLC_DIR} ENV CMAKE_LIBRARY_PATH + PATH_SUFFIXES facile ocaml/facile + ) + message(STATUS "LIBFACILE_LIBRARIES :<${LIBFACILE_LIBRARIES}>") + if (LIBFACILE_LIBRARIES) + get_filename_component(LIBFACILE_INCLUDE_DIR ${LIBFACILE_LIBRARIES} PATH) + message(STATUS "LIBFACILE_INCLUDE_DIR <${LIBFACILE_INCLUDE_DIR}>") + set(LIBFACILE_FOUND TRUE) + endif(LIBFACILE_LIBRARIES) +endif(OCAML_FOUND) + + +if(LIBFACILE_FOUND) + if(NOT Libfacile_FIND_QUIETLY) + message(STATUS "Found Libfacile: ${LIBFACILE_LIBRARIES}") + endif(NOT Libfacile_FIND_QUIETLY) +else(LIBFACILE_FOUND) + if(Libfacile_FIND_REQUIRED) + message(FATAL_ERROR "Could not find Libfacile") + endif(Libfacile_FIND_REQUIRED) +endif(LIBFACILE_FOUND) + +# show the LIBFACILE_INCLUDE_DIR and LIBFACILE_LIBRARIES variables only in the advanced view +mark_as_advanced(LIBFACILE_INCLUDE_DIR LIBFACILE_LIBRARIES ) + diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake new file mode 100644 index 00000000000..df54324712a --- /dev/null +++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake @@ -0,0 +1,46 @@ +SET(PYTHON_KNOWN_VERSIONS "2.5" "2.4" "2.3" "2.2" "2.1" "2.0" "1.6" "1.5") + +MACRO(python_find_version _py_ver _py_inc _py_ld _py_lib) + STRING(REPLACE "." "" _py_ver_nd "${_py_ver}") + + SET(PY_INSTALL_PATH + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_py_ver}\\InstallPath]) + + SET(_py_libnames "python${_py_ver}" "python${_py_ver_nd}") + + SET(_py_found FALSE) + FOREACH(_py_libname ${_py_libnames}) + IF (NOT _py_found) + SET(_py_lib_full _py_lib_full-NOTFOUND) + + FIND_LIBRARY(_py_lib_full + NAMES "${_py_libname}" + PATHS "${PY_INSTALL_PATH}/libs" + NO_SYSTEM_ENVIRONMENT_PATH + ) + FIND_LIBRARY(_py_lib_full + NAMES "${_py_libname}" + PATHS "${PY_INSTALL_PATH}/libs" + PATH_SUFFIXES "python${_py_ver}/config" + NO_SYSTEM_ENVIRONMENT_PATH + ) + IF(_py_lib_full) + SET(_py_lib "${_py_libname}") + GET_FILENAME_COMPONENT(_py_ld "${_py_lib_full}" PATH) + SET(_py_found TRUE) + ENDIF(_py_lib_full) + ENDIF(NOT _py_found) + ENDFOREACH(_py_libname) + + IF(_py_found) + FIND_PATH(_py_inc + NAMES Python.h + PATHS + ${PY_INSTALL_PATH}/include + PATH_SUFFIXES + "python${_py_ver}" + ) + ENDIF(_py_found) + + SET(PYTHON_REQ_VERSION_FOUND ${_py_found}) +ENDMACRO(python_find_version) diff --git a/pkgs/desktops/kde-4/extragear/default.nix b/pkgs/desktops/kde-4/extragear/default.nix new file mode 100644 index 00000000000..c67d4b8682c --- /dev/null +++ b/pkgs/desktops/kde-4/extragear/default.nix @@ -0,0 +1,14 @@ +args: with args; + +stdenv.mkDerivation { + name = "extragear-plasma-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/extragear-plasma-3.95.0.tar.bz2; + sha256 = "1nzfy34ig66gfpgv6kbcmcap13axcy7kvj43srbd0ic6a0giv283"; + }; + + buildInputs = [ kdeworkspace kdebase ]; + patchPhase = " + sed -e 's@ +# Copyright (c) 2007, Yury G. Kudryashov, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (ILMBASE_INCLUDE_DIR AND ILMBASE_LIBRARIES) + # in cache already + SET(ILMBASE_FOUND TRUE) + +else (ILMBASE_INCLUDE_DIR AND ILMBASE_LIBRARIES) +IF (NOT WIN32) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + INCLUDE(UsePkgConfig) + + PKGCONFIG(IlmBase _IlmBaseIncDir _IlmBaseLinkDir _IlmBaseLinkFlags _IlmBaseCflags) +ENDIF (NOT WIN32) + FIND_PATH(ILMBASE_INCLUDE_DIR ImathBox.h + ${_IlmBaseIncDir} + ${_IlmBaseIncDir}/OpenEXR/ + ) + + FIND_LIBRARY(ILMBASE_HALF_LIBRARY NAMES Half + PATHS + ${_IlmBaseLinkDir} + NO_DEFAULT_PATH + ) + FIND_LIBRARY(ILMBASE_HALF_LIBRARY NAMES Half ) + + FIND_LIBRARY(ILMBASE_IEX_LIBRARY NAMES Iex + PATHS + ${_IlmBaseLinkDir} + NO_DEFAULT_PATH + ) + FIND_LIBRARY(ILMBASE_IEX_LIBRARY NAMES Iex ) + + FIND_LIBRARY(ILMBASE_IMATH_LIBRARY NAMES Imath + PATHS + ${_IlmBaseLinkDir} + NO_DEFAULT_PATH + ) + FIND_LIBRARY(ILMBASE_IMATH_LIBRARY NAMES Imath ) + + if (ILMBASE_INCLUDE_DIR AND ILMBASE_IMATH_LIBRARY AND ILMBASE_IEX_LIBRARY AND ILMBASE_HALF_LIBRARY) + set(ILMBASE_FOUND TRUE) + set(ILMBASE_LIBRARIES ${ILMBASE_IMATH_LIBRARY} ${ILMBASE_IEX_LIBRARY} ${ILMBASE_HALF_LIBRARY} CACHE STRING "The libraries needed to use IlmBase") + endif (ILMBASE_INCLUDE_DIR AND ILMBASE_IMATH_LIBRARY AND ILMBASE_IEX_LIBRARY AND ILMBASE_HALF_LIBRARY) + + if (ILMBASE_FOUND) + if (NOT IlmBase_FIND_QUIETLY) + message(STATUS "Found ILMBASE: ${ILMBASE_LIBRARIES}") + endif (NOT IlmBase_FIND_QUIETLY) + else (ILMBASE_FOUND) + if (IlmBase_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find ILMBASE") + endif (IlmBase_FIND_REQUIRED) + endif (ILMBASE_FOUND) + + MARK_AS_ADVANCED( + ILMBASE_INCLUDE_DIR + ILMBASE_LIBRARIES + ILMBASE_IMATH_LIBRARY + ILMBASE_IEX_LIBRARY + ILMBASE_HALF_LIBRARY ) + +endif (ILMBASE_INCLUDE_DIR AND ILMBASE_LIBRARIES) diff --git a/pkgs/desktops/kde-4/libs/FindOpenEXR.cmake b/pkgs/desktops/kde-4/libs/FindOpenEXR.cmake new file mode 100644 index 00000000000..b1f590544fa --- /dev/null +++ b/pkgs/desktops/kde-4/libs/FindOpenEXR.cmake @@ -0,0 +1,68 @@ +# Try to find the OpenEXR libraries +# This check defines: +# +# OPENEXR_FOUND - system has OpenEXR +# OPENEXR_INCLUDE_DIR - OpenEXR include directory +# OPENEXR_LIBRARIES - Libraries needed to use OpenEXR +# +# Copyright (c) 2006, Alexander Neundorf, +# Copyright (c) 2007, Yury G. Kudryashov, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +if (OPENEXR_INCLUDE_DIR AND OPENEXR_LIBRARIES) + # in cache already + SET(OPENEXR_FOUND TRUE) + +else (OPENEXR_INCLUDE_DIR AND OPENEXR_LIBRARIES) +FIND_PACKAGE(IlmBase) +IF (NOT ILMBASE_FOUND) + SET(OPENEXR_FOUND FALSE) +ELSE (NOT ILMBASE_FOUND) +IF (NOT WIN32) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + INCLUDE(UsePkgConfig) + + PKGCONFIG(OpenEXR _OpenEXRIncDir _OpenEXRLinkDir _OpenEXRLinkFlags _OpenEXRCflags) +ENDIF (NOT WIN32) + FIND_PATH(OPENEXR_INCLUDE_DIR ImfRgbaFile.h + ${_OpenEXRIncDir} + ${_OpenEXRIncDir}/OpenEXR/ + ) + + FIND_LIBRARY(OPENEXR_ILMIMF_LIBRARY NAMES IlmImf + PATHS + ${_OpenEXRLinkDir} + NO_DEFAULT_PATH + ) + FIND_LIBRARY(OPENEXR_ILMIMF_LIBRARY NAMES IlmImf ) + + if (OPENEXR_INCLUDE_DIR AND OPENEXR_ILMIMF_LIBRARY) + set(OPENEXR_FOUND TRUE) + set(OPENEXR_LIBRARIES ${ILMBASE_LIBRARIES} ${OPENEXR_ILMIMF_LIBRARY} CACHE STRING "The libraries needed to use OpenEXR") + set(OPENEXR_INCLUDE_DIR ${OPENEXR_INCLUDE_DIR} ${ILMBASE_INCLUDE_DIR}) + endif (OPENEXR_INCLUDE_DIR AND OPENEXR_ILMIMF_LIBRARY) +ENDIF (NOT ILMBASE_FOUND) + + if (OPENEXR_FOUND) + if (NOT OpenEXR_FIND_QUIETLY) + message(STATUS "Found OPENEXR: ${OPENEXR_LIBRARIES}") + endif (NOT OpenEXR_FIND_QUIETLY) + else (OPENEXR_FOUND) + if (OpenEXR_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find OPENEXR") + endif (OpenEXR_FIND_REQUIRED) + endif (OPENEXR_FOUND) + + MARK_AS_ADVANCED( + OPENEXR_INCLUDE_DIR + OPENEXR_LIBRARIES + OPENEXR_ILMIMF_LIBRARY + OPENEXR_IMATH_LIBRARY + OPENEXR_IEX_LIBRARY + OPENEXR_HALF_LIBRARY ) + +endif (OPENEXR_INCLUDE_DIR AND OPENEXR_LIBRARIES) diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix new file mode 100644 index 00000000000..844e4a03320 --- /dev/null +++ b/pkgs/desktops/kde-4/libs/default.nix @@ -0,0 +1,27 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "kdelibs-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdelibs-3.95.0.tar.bz2; + sha256 = "0960880wvwrj68r35knqjjxbqq90xzy1lqv526zyaymp7jc24ybc"; + }; + + propagatedBuildInputs = [ + cmake inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto + xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor + libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr + libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib + perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat + libtool freetype bzip2 shared_mime_info alsaLib libungif cups + gettext enchant openexr aspell stdenv.gcc.libc + ] ++ kdesupport.all; + patchPhase = "cp ${findIlmBase} ../cmake/modules/FindIlmBase.cmake; + cp $findOpenEXR ../cmake/modules/FindOpenEXR.cmake; + sed -e 's@Soprano/DummyModel@Soprano/Util/DummyModel@' -i ../nepomuk/core/resourcemanager.cpp;"; + + findIlmBase = ./FindIlmBase.cmake; + findOpenEXR = ./FindOpenEXR.cmake; + setupHook=./setup.sh; +} diff --git a/pkgs/desktops/kde-4/libs/setup.sh b/pkgs/desktops/kde-4/libs/setup.sh new file mode 100755 index 00000000000..6f899442d27 --- /dev/null +++ b/pkgs/desktops/kde-4/libs/setup.sh @@ -0,0 +1,5 @@ +addKDEDIRS() +{ + addToSearchPath KDEDIRS /share/kde4 /. $1 +} +envHooks=(${envHooks[@]} addKDEDIRS) diff --git a/pkgs/desktops/kde-4/multimedia/default.nix b/pkgs/desktops/kde-4/multimedia/default.nix new file mode 100644 index 00000000000..f0870c1740d --- /dev/null +++ b/pkgs/desktops/kde-4/multimedia/default.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdemultimedia-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdemultimedia-3.95.0.tar.bz2; + sha256 = "0vjk5gpn45fh7hm982jw1frd7fr0grff96ksmh29wnkc160rh8va"; + }; + + buildInputs = [kdelibs kdepimlibs kdeworkspace libogg flac cdparanoia lame + libvorbis]; +} diff --git a/pkgs/desktops/kde-4/network/default.nix b/pkgs/desktops/kde-4/network/default.nix new file mode 100644 index 00000000000..21ae2074e06 --- /dev/null +++ b/pkgs/desktops/kde-4/network/default.nix @@ -0,0 +1,12 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdenetwork-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdenetwork-3.95.0.tar.bz2; + sha256 = "118r55aw0pag78kawjfn3vya7aca12n5ypknm1i4khxs747hxqbr"; + }; + + buildInputs = [kdelibs kdepimlibs kdeworkspace sqlite libidn]; +} diff --git a/pkgs/desktops/kde-4/pim/builder.sh b/pkgs/desktops/kde-4/pim/builder.sh new file mode 100755 index 00000000000..8963fae048c --- /dev/null +++ b/pkgs/desktops/kde-4/pim/builder.sh @@ -0,0 +1,10 @@ +source ${stdenv}/setup + +myPatchPhase() +{ +# They reset CMAKE_MODULE_PATH, not adding to the existing + sed -e '3s/)/ ${CMAKE_MODULE_PATH})/' -i ../CMakeLists.txt +} +patchPhase=myPatchPhase + +genericBuild diff --git a/pkgs/desktops/kde-4/pim/default.nix b/pkgs/desktops/kde-4/pim/default.nix new file mode 100644 index 00000000000..f0f4184d391 --- /dev/null +++ b/pkgs/desktops/kde-4/pim/default.nix @@ -0,0 +1,15 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdepim-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdepim-3.95.0.tar.bz2; + sha256 = "0gzvm4h6ij7i119apmh9w82raygahr18bl0i9m3ynf2mcca0aq94"; + }; + + buildInputs = [libXinerama mesa stdenv.gcc.libc alsaLib kdelibs kdepimlibs + kdeworkspace libusb glib]; + qt4BadIncludes = true; + inherit qt kdelibs; +} diff --git a/pkgs/desktops/kde-4/pimlibs/default.nix b/pkgs/desktops/kde-4/pimlibs/default.nix new file mode 100644 index 00000000000..6d273acc67e --- /dev/null +++ b/pkgs/desktops/kde-4/pimlibs/default.nix @@ -0,0 +1,12 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdepimlibs-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdepimlibs-3.95.0.tar.bz2; + sha256 = "1dhn5x3k9myqfymv6ry84v0zm2qwxnrlm1vdlllfvmgbm5nz34mg"; + }; + + propagatedBuildInputs = [kdelibs boost gpgme cyrus_sasl openldap]; +} diff --git a/pkgs/desktops/kde-4/runtime/builder.sh b/pkgs/desktops/kde-4/runtime/builder.sh new file mode 100755 index 00000000000..99b357fcf16 --- /dev/null +++ b/pkgs/desktops/kde-4/runtime/builder.sh @@ -0,0 +1,12 @@ +source ${stdenv}/setup + +myPatchPhase() +{ + echo "Fixing dbus calls in CMakeLists.txt files" +# Trailing slash in sed is essential + find .. -name CMakeLists.txt \ + | xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i + #sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h +} +patchPhase=myPatchPhase +genericBuild diff --git a/pkgs/desktops/kde-4/runtime/default.nix b/pkgs/desktops/kde-4/runtime/default.nix new file mode 100644 index 00000000000..f3f241a7ffe --- /dev/null +++ b/pkgs/desktops/kde-4/runtime/default.nix @@ -0,0 +1,15 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdebase-runtime-4.0beta4"; + builder = ./builder.sh; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdebase-runtime-3.95.0.tar.bz2; + sha256 = "1s4fhbz7gpdxmvlr20c7n6cvcb9sn0qxigzpljsxw9524w177ksr"; + }; + + propagatedBuildInputs = [kdepimlibs libusb kdebase xineLib]; + inherit kdelibs; +} + diff --git a/pkgs/desktops/kde-4/support/akode.nix b/pkgs/desktops/kde-4/support/akode.nix new file mode 100644 index 00000000000..1385def6b55 --- /dev/null +++ b/pkgs/desktops/kde-4/support/akode.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation { + name = "akode-2.0.0dev"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/akode; + rev = 732646; + md5 = "6629ffedc42c020d2e8645910a4efdf5"; + }; + + buildInputs = [ cmake qt openssl gettext cyrus_sasl alsaLib ]; +} diff --git a/pkgs/desktops/kde-4/support/default.nix b/pkgs/desktops/kde-4/support/default.nix new file mode 100644 index 00000000000..af1dc175bed --- /dev/null +++ b/pkgs/desktops/kde-4/support/default.nix @@ -0,0 +1,36 @@ +args: +rec { + qca = (import ./qca.nix) args; + akode = (import ./akode.nix) args; + gmm = (import ./gmm.nix) args; + eigen = (import ./eigen.nix) args; + taglib = (import ./taglib.nix) args; + soprano = (import ./soprano.nix) args; + strigi = (import ./strigi.nix) args; + qimageblitz = (import ./qimageblitz.nix) args; + all = [qca gmm eigen taglib soprano strigi qimageblitz]; +} +#args: with args; +# +#stdenv.mkDerivation { +# name = "kdesupport-4.0svn-r729462"; +# +# src = fetchsvn { +# url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport; +# rev = 729462; +# md5 = "aa50ec8e5c8d49e1dfd53143345cb4b3"; +# }; +# +# propagatedBuildInputs = [ +# exiv2 +# cmake inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto +# xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor +# libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr +# libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib +# perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat +# libtool freetype bzip2 shared_mime_info alsaLib libungif cups +# gettext cluceneCore redland stdenv.gcc.libc dbus bison cppunit +# ]; +# CLUCENE_HOME=cluceneCore; +# patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../qca/CMakeLists.txt"; +#} diff --git a/pkgs/desktops/kde-4/support/eigen.nix b/pkgs/desktops/kde-4/support/eigen.nix new file mode 100644 index 00000000000..a3ac9eff391 --- /dev/null +++ b/pkgs/desktops/kde-4/support/eigen.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation { + name = "eigen-1.0.5"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/eigen; + rev = 732646; + md5 = "f91ad5d3dd992984fb61107fd9050a36"; + }; + + buildInputs = [ cmake ]; +} diff --git a/pkgs/desktops/kde-4/support/gmm.nix b/pkgs/desktops/kde-4/support/gmm.nix new file mode 100644 index 00000000000..d32c9b9f765 --- /dev/null +++ b/pkgs/desktops/kde-4/support/gmm.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation { + name = "gmm-svn"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/gmm; + rev = 732646; + md5 = "09ee4cfcbb3c428bc681c2da022648bf"; + }; + + buildInputs = [ cmake ]; +} diff --git a/pkgs/desktops/kde-4/support/qca.nix b/pkgs/desktops/kde-4/support/qca.nix new file mode 100644 index 00000000000..64b00da91ce --- /dev/null +++ b/pkgs/desktops/kde-4/support/qca.nix @@ -0,0 +1,15 @@ +args: with args; + +stdenv.mkDerivation { + name = "qca-2.0.0dev"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/qca; + rev = 732646; + md5 = "1df54bf3bf327b14ea1948f9080717c3"; + }; + + buildInputs = [ cmake qt openssl gettext cyrus_sasl libgcrypt gnupg ]; + + patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../CMakeLists.txt"; +} diff --git a/pkgs/desktops/kde-4/support/qimageblitz.nix b/pkgs/desktops/kde-4/support/qimageblitz.nix new file mode 100644 index 00000000000..fe6a03ca7c7 --- /dev/null +++ b/pkgs/desktops/kde-4/support/qimageblitz.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation { + name = "qimageblitz-4.0.0svn"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/qimageblitz; + rev = 732646; + md5 = "c37fa505368071ec501e966225e30c78"; + }; + + buildInputs = [cmake qt]; +} diff --git a/pkgs/desktops/kde-4/support/soprano.nix b/pkgs/desktops/kde-4/support/soprano.nix new file mode 100644 index 00000000000..0f453d726d7 --- /dev/null +++ b/pkgs/desktops/kde-4/support/soprano.nix @@ -0,0 +1,14 @@ +args: with args; + +stdenv.mkDerivation { + name = "soprano-1.9.0svn"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/soprano; + rev = 732646; + md5 = "c3b43544536f0f8061e4afeb9e368072"; + }; + + CLUCENE_HOME=cluceneCore; + buildInputs = [ cmake qt cluceneCore redland ]; +} diff --git a/pkgs/desktops/kde-4/support/strigi.nix b/pkgs/desktops/kde-4/support/strigi.nix new file mode 100644 index 00000000000..f0e0fe614be --- /dev/null +++ b/pkgs/desktops/kde-4/support/strigi.nix @@ -0,0 +1,15 @@ +args: with args; + +stdenv.mkDerivation { + name = "strigi-svn"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/strigi; + rev = 732646; + md5 = "15762f5a406ef84bc1cdd776b2ca9a82"; + }; + + CLUCENE_HOME=cluceneCore; + buildInputs = [ cmake zlib cluceneCore bzip2 libxml2 qt dbus + log4cxx stdenv.gcc.libc exiv2 bison cppunit perl ]; +} diff --git a/pkgs/desktops/kde-4/support/taglib.nix b/pkgs/desktops/kde-4/support/taglib.nix new file mode 100644 index 00000000000..6aecb7a91ef --- /dev/null +++ b/pkgs/desktops/kde-4/support/taglib.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation { + name = "taglib-1.4svn"; + + src = fetchsvn { + url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib; + rev = 732646; + md5 = "647d68a76858cf3a667656c486b0a8c2"; + }; + + buildInputs = [ cmake zlib ]; +} diff --git a/pkgs/desktops/kde-4/toys/default.nix b/pkgs/desktops/kde-4/toys/default.nix new file mode 100644 index 00000000000..19c08c4891b --- /dev/null +++ b/pkgs/desktops/kde-4/toys/default.nix @@ -0,0 +1,12 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdetoys-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdetoys-3.95.0.tar.bz2; + sha256 = "0qg9ns640v21sa837pg5basnw8clnkyxap2lm7s69ainsg69662v"; + }; + + buildInputs = [kdelibs kdepimlibs kdeworkspace]; +} diff --git a/pkgs/desktops/kde-4/utils/default.nix b/pkgs/desktops/kde-4/utils/default.nix new file mode 100644 index 00000000000..cee61c0e4cd --- /dev/null +++ b/pkgs/desktops/kde-4/utils/default.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdeutils-4.0beta4"; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdeutils-3.95.0.tar.bz2; + sha256 = "1b8jvdy83qwhnfwqxzx96bxnaxss25psazifymyb0z4ynkqmadlh"; + }; + + buildInputs = [kdelibs kdepimlibs kdeworkspace gmp libzip python ]; +# TODO : tpctl +} diff --git a/pkgs/desktops/kde-4/workspace/builder.sh b/pkgs/desktops/kde-4/workspace/builder.sh new file mode 100755 index 00000000000..648d6175f35 --- /dev/null +++ b/pkgs/desktops/kde-4/workspace/builder.sh @@ -0,0 +1,12 @@ +source ${stdenv}/setup + +myPatchPhase() +{ + echo "Fixing dbus calls in CMakeLists.txt files" +# Trailing slash in sed is essential + find .. -name CMakeLists.txt \ + | xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i + sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../kcontrol/randr/randr.h +} +patchPhase=myPatchPhase +genericBuild diff --git a/pkgs/desktops/kde-4/workspace/default.nix b/pkgs/desktops/kde-4/workspace/default.nix new file mode 100644 index 00000000000..829393f67e9 --- /dev/null +++ b/pkgs/desktops/kde-4/workspace/default.nix @@ -0,0 +1,15 @@ +args: with args; + +stdenv.mkDerivation { + name = "kdebase-workspace-4.0beta4"; + builder = ./builder.sh; + + src = fetchurl { + url = mirror://kde/unstable/3.95/src/kdebase-workspace-3.95.0.tar.bz2; + sha256 = "0jripmw8vgs7lxlsif552rr9vqps5kav8jdlfyhmr9c3xw5c99v0"; + }; + + buildInputs = [kdelibs kdepimlibs kdebase kderuntime stdenv.gcc.libc]; + inherit kdelibs; +} + diff --git a/pkgs/development/compilers/gcc-3.4/builder.sh b/pkgs/development/compilers/gcc-3.4/builder.sh index 5a89201377d..eb1f211dce8 100644 --- a/pkgs/development/compilers/gcc-3.4/builder.sh +++ b/pkgs/development/compilers/gcc-3.4/builder.sh @@ -37,22 +37,10 @@ fi preConfigure=preConfigure preConfigure() { - - # Determine the frontends to build. - langs="c" - if test -n "$langCC"; then - langs="$langs,c++" - fi - if test -n "$langF77"; then - langs="$langs,f77" - fi - # Perform the build in a different directory. mkdir ../build cd ../build - configureScript=../$sourceRoot/configure - configureFlags="--enable-languages=$langs $configureFlags" } diff --git a/pkgs/development/compilers/gcc-3.4/default.nix b/pkgs/development/compilers/gcc-3.4/default.nix index 4cb834304e3..de7f079b2d9 100644 --- a/pkgs/development/compilers/gcc-3.4/default.nix +++ b/pkgs/development/compilers/gcc-3.4/default.nix @@ -5,6 +5,8 @@ assert langC; +with import ../../../lib; + stdenv.mkDerivation { name = "gcc-3.4.6"; builder = ./builder.sh; @@ -15,7 +17,22 @@ stdenv.mkDerivation { patches = if noSysDirs then [./no-sys-dirs.patch] else []; - inherit noSysDirs langC langCC langF77 profiledCompiler; + inherit noSysDirs profiledCompiler; + + configureFlags = " + --disable-multilib + --with-system-zlib + --enable-languages=${ + concatStrings (intersperse "," + ( optional langC "c" + ++ optional langCC "c++" + ++ optional langF77 "f77" + ) + ) + } + "; + + passthru = { inherit langC langCC langF77; }; meta = { homepage = "http://gcc.gnu.org/"; diff --git a/pkgs/development/compilers/ocaml/ocaml-3.08.0.nix b/pkgs/development/compilers/ocaml/3.08.0.nix similarity index 94% rename from pkgs/development/compilers/ocaml/ocaml-3.08.0.nix rename to pkgs/development/compilers/ocaml/3.08.0.nix index d063fead4a5..6d4b4ca616c 100644 --- a/pkgs/development/compilers/ocaml/ocaml-3.08.0.nix +++ b/pkgs/development/compilers/ocaml/3.08.0.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, x11}: +args: with args; stdenv.mkDerivation { name = "ocaml-3.08.0"; diff --git a/pkgs/development/compilers/ocaml/ocaml-3.09.1.nix b/pkgs/development/compilers/ocaml/3.09.1.nix similarity index 92% rename from pkgs/development/compilers/ocaml/ocaml-3.09.1.nix rename to pkgs/development/compilers/ocaml/3.09.1.nix index 996012d6b27..6e9922ccc36 100644 --- a/pkgs/development/compilers/ocaml/ocaml-3.09.1.nix +++ b/pkgs/development/compilers/ocaml/3.09.1.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, x11, ncurses}: +args: with args; stdenv.mkDerivation { name = "ocaml-3.09.1"; diff --git a/pkgs/development/compilers/ocaml/3.10.0.nix b/pkgs/development/compilers/ocaml/3.10.0.nix new file mode 100644 index 00000000000..a26175755b5 --- /dev/null +++ b/pkgs/development/compilers/ocaml/3.10.0.nix @@ -0,0 +1,23 @@ +args: with args; +stdenv.mkDerivation rec { + name = "ocaml-3.10.0"; + src = fetchurl { + url = "http://caml.inria.fr/pub/distrib/ocaml-3.10/${name}.tar.bz2"; + sha256 = "1ihmx1civ78s7k2hfc05z1s9vbyx2qw7fg8lnbxnfd6zxkk8878d"; + }; + prefixKey = "-prefix "; + configureFlags = ["-no-tk" "-x11lib" x11]; + buildFlags = "world bootstrap world.opt"; + buildInputs = [x11 ncurses]; + installTargets = "install installopt"; + patchPhase = " + CAT=$(type -tp cat) + sed -e \"s@/bin/cat@\${CAT}@\" -i config/auto-aux/sharpbang + "; + + meta = { + homepage = http://caml.inria.fr/ocaml; + license = "QPL, LGPL2 (library part)"; + desctiption = "Most popular variant of the Caml language"; + }; +} diff --git a/pkgs/development/compilers/ocaml/default.nix b/pkgs/development/compilers/ocaml/default.nix index 44603f95764..74d1378968c 100644 --- a/pkgs/development/compilers/ocaml/default.nix +++ b/pkgs/development/compilers/ocaml/default.nix @@ -1 +1,7 @@ -import ./ocaml-3.09.1.nix +args: +rec { + default = v_3_09_1; + v_3_08_0 = import ./3.08.0.nix (args // {stdenv = args.stdenv34;}); + v_3_09_1 = import ./3.09.1.nix args; + v_3_10_0 = import ./3.10.0.nix (args // {stdenv = args.stdenvUsingSetupNew2;}); +} diff --git a/pkgs/development/interpreters/perl/setup-hook.sh b/pkgs/development/interpreters/perl/setup-hook.sh index 6903bddd419..1f05581df97 100644 --- a/pkgs/development/interpreters/perl/setup-hook.sh +++ b/pkgs/development/interpreters/perl/setup-hook.sh @@ -1,5 +1,7 @@ addPerlLibPath () { - addToSearchPath PERL5LIB /lib/site_perl "" $1 + if test -d $1/lib/site_perl; then + export PERL5LIB="${PERL5LIB}${PERL5LIB:+:}$1/lib/site_perl" + fi } envHooks=(${envHooks[@]} addPerlLibPath) diff --git a/pkgs/development/interpreters/python/2.4.nix b/pkgs/development/interpreters/python/2.4.nix new file mode 100644 index 00000000000..726d2ac4aa9 --- /dev/null +++ b/pkgs/development/interpreters/python/2.4.nix @@ -0,0 +1,52 @@ +{stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2}: + +assert zlibSupport -> zlib != null; + +with stdenv.lib; + +let + + buildInputs = + optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++ + [bzip2] ++ + optional zlibSupport zlib; + +in + +stdenv.mkDerivation { + name = "python-2.4.4"; + + src = fetchurl { + url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2; + md5 = "0ba90c79175c017101100ebf5978e906"; + }; + + patches = [ + # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff. + ./search-path.patch + ]; + + inherit buildInputs; + C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); + LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); + + configureFlags = "--enable-shared"; + + preConfigure = " + # Purity. + for i in /usr /sw /opt /pkg; do + substituteInPlace ./setup.py --replace $i /no-such-path + done + "; + + postInstall = " + ensureDir $out/nix-support + cp ${./setup-hook.sh} $out/nix-support/setup-hook + rm -rf $out/lib/python2.4/test + "; + + passthru = { + inherit zlibSupport; + libPrefix = "python2.4"; + }; +} diff --git a/pkgs/development/interpreters/python/2.5/setup-hook.sh b/pkgs/development/interpreters/python/2.5/setup-hook.sh index 27ad6226030..11551235c1f 100644 --- a/pkgs/development/interpreters/python/2.5/setup-hook.sh +++ b/pkgs/development/interpreters/python/2.5/setup-hook.sh @@ -1,5 +1,8 @@ addPythonPath() { - addToSearchPathWithCustomDelimiter : PYTHONPATH /lib/python2.5/site-packages "" $1 + local p=$1/lib/python2.5/site-packages + if test -d $p; then + export PYTHONPATH="${PYTHONPATH}${PYTHONPATH:+:}$p" + fi } toPythonPath() { diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 726d2ac4aa9..3ac782e1aee 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -1,52 +1,5 @@ -{stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2}: - -assert zlibSupport -> zlib != null; - -with stdenv.lib; - -let - - buildInputs = - optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++ - [bzip2] ++ - optional zlibSupport zlib; - -in - -stdenv.mkDerivation { - name = "python-2.4.4"; - - src = fetchurl { - url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2; - md5 = "0ba90c79175c017101100ebf5978e906"; - }; - - patches = [ - # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff. - ./search-path.patch - ]; - - inherit buildInputs; - C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); - LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); - - configureFlags = "--enable-shared"; - - preConfigure = " - # Purity. - for i in /usr /sw /opt /pkg; do - substituteInPlace ./setup.py --replace $i /no-such-path - done - "; - - postInstall = " - ensureDir $out/nix-support - cp ${./setup-hook.sh} $out/nix-support/setup-hook - rm -rf $out/lib/python2.4/test - "; - - passthru = { - inherit zlibSupport; - libPrefix = "python2.4"; - }; +args: rec { + default = v_2_4; + v_2_4 = import ./2.4.nix args; + v_2_5 = import ./2.5 args; } diff --git a/pkgs/development/interpreters/python/setup-hook.sh b/pkgs/development/interpreters/python/setup-hook.sh index 58b8d1cab76..3bc86c58229 100644 --- a/pkgs/development/interpreters/python/setup-hook.sh +++ b/pkgs/development/interpreters/python/setup-hook.sh @@ -1,5 +1,8 @@ addPythonPath() { - addToSearchPathWithCustomDelimiter : PYTHONPATH /lib/python2.4/site-packages "" $1 + local p=$1/lib/python2.4/site-packages + if test -d $p; then + export PYTHONPATH="${PYTHONPATH}${PYTHONPATH:+:}$p" + fi } toPythonPath() { diff --git a/pkgs/development/libraries/chmlib/builder.sh b/pkgs/development/libraries/chmlib/builder.sh deleted file mode 100644 index ccdbfc17a76..00000000000 --- a/pkgs/development/libraries/chmlib/builder.sh +++ /dev/null @@ -1,19 +0,0 @@ -source $stdenv/setup - -unpackCmd="tar xvfj $src" - -makeFlags="-f Makefile.simple CC=gcc LD=gcc INSTALLPREFIX=$out" - -postConfigure=postConfigure -postConfigure() { - cd src -} - -preInstall=preInstall -preInstall() { - mkdir $out - mkdir $out/lib - mkdir $out/include -} - -genericBuild \ No newline at end of file diff --git a/pkgs/development/libraries/chmlib/default.nix b/pkgs/development/libraries/chmlib/default.nix index 096f2e0e229..bd593aaea0a 100644 --- a/pkgs/development/libraries/chmlib/default.nix +++ b/pkgs/development/libraries/chmlib/default.nix @@ -1,9 +1,16 @@ -{stdenv, fetchurl}: +args: with args; -stdenv.mkDerivation { - name = "chmlib-0.38"; +stdenv.mkDerivation rec { + name = "chmlib-0.39"; src = fetchurl { - url = http://66.93.236.84/~jedwin/projects/chmlib/chmlib-0.38.tar.bz2; - md5 = "d72661526aaea377ed30e9f58a086964"; + url = "${meta.homepage}/${name}.tar.bz2"; + sha256 = "0hgzw121ffmk79wbpkd0394y5ah99c3i85z6scp958mmkr25sc6j"; + }; + + meta = { + homepage = http://www.jedrea.com/chmlib; + license = "LGPL"; + description = "CHLIB is a library for dealing with Microsoft ITSS/CHM + format files"; }; } diff --git a/pkgs/development/libraries/clucene-contrib/default.nix b/pkgs/development/libraries/clucene-contrib/default.nix deleted file mode 100644 index 8938256dec4..00000000000 --- a/pkgs/development/libraries/clucene-contrib/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ stdenv, fetchurl, cluceneCore}: - -stdenv.mkDerivation { - name = "clucene-contrib-0.9.16a"; - - src = fetchurl { - url = ftp://ftp.chg.ru/pub/sourceforge/c/cl/clucene/clucene-contrib-0.9.16a.tar.bz2; - sha256 = "1apk867pggxsflhgvsnhcmy5vz2cvc1b914g4inkcj6s5vn1a1jx"; - }; - inherit cluceneCore; - buildInputs=[cluceneCore]; - configureFlags = "--disable-static --with-clucene=${cluceneCore}"; - - meta = { - description = "CLucene is a port of the very popular Java Lucene text search engine API. Contrib package."; - homepage = http://clucene.sourceforge.net; - }; -} diff --git a/pkgs/development/libraries/clucene-core/default.nix b/pkgs/development/libraries/clucene-core/default.nix index 3d5734d6c2d..24e133a5de3 100644 --- a/pkgs/development/libraries/clucene-core/default.nix +++ b/pkgs/development/libraries/clucene-core/default.nix @@ -1,16 +1,15 @@ -{ stdenv, fetchurl }: +args: with args; +stdenv.mkDerivation rec { + name = "clucene-core-0.9.20"; -stdenv.mkDerivation { - name = "clucene-core-0.9.16a"; + src = fetchurl { + url = "mirror://sf/clucene/${name}.tar.bz2"; + sha256 = "1hwq3b4qp1dgygmypgpg3blj68wnksq2rbqkwyxvl5dldn12q7rg"; + }; + configureFlags = "--disable-static"; - src = fetchurl { - url = ftp://ftp.chg.ru/pub/sourceforge/c/cl/clucene/clucene-core-0.9.16a.tar.bz2; - sha256 = "0hv7sp1lbicnj2984hiki8qwrvz5zwn1zhj6azhavgjklanhihjr"; - }; - - meta = { - description = "CLucene is a port of the very popular Java Lucene text search engine API. Core package."; - homepage = http://clucene.sourceforge.net; - }; - configureFlags = "--disable-static"; + meta = { + description = "CLucene is a port of the very popular Java Lucene text search engine API. Core package."; + homepage = http://clucene.sourceforge.net; + }; } diff --git a/pkgs/development/libraries/dbus-glib/default.nix b/pkgs/development/libraries/dbus-glib/default.nix index fb206f9a6f6..e72ca406509 100644 --- a/pkgs/development/libraries/dbus-glib/default.nix +++ b/pkgs/development/libraries/dbus-glib/default.nix @@ -1,12 +1,18 @@ -{stdenv, fetchurl, pkgconfig, gettext, dbus, glib, expat}: +args: with args; stdenv.mkDerivation { - name = "dbus-glib-0.73"; + name = "dbus-glib-0.74"; src = fetchurl { - url = http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.73.tar.gz; - sha256 = "14ndjhbn6q4m7wrml8s57wghnjbm6a6fqb5jgazjxcn6748gkmyn"; + url = http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.74.tar.gz; + sha256 = "1qmbnd9xgg7vahlfywd8sfd9yqhx8jdyczz3cshfsd4qc76xhw78"; }; inherit dbus glib; buildInputs = [pkgconfig gettext glib expat]; propagatedBuildInputs = [dbus]; + + meta = { + homepage = http://dbus.freedesktop.org; + license = "AFL-2.1 or GPL-2"; + description = "GLib bindings for D-Bus lightweight IPC mechanism"; + }; } diff --git a/pkgs/development/libraries/facile/default.nix b/pkgs/development/libraries/facile/default.nix new file mode 100644 index 00000000000..1890c6d0563 --- /dev/null +++ b/pkgs/development/libraries/facile/default.nix @@ -0,0 +1,19 @@ +args: with args; +stdenv.mkDerivation rec { + name = "facile-1.1"; + src = fetchurl { + url = "${meta.homepage}/distrib/${name}.tar.gz"; + sha256 = "1jp59ankjds8mh4vm0b5h4fd1lcbfn0rd6n151cgh14ihsknnym8"; + }; + dontAddPrefix = 1; + patchPhase = "sed -e 's@mkdir@mkdir -p@' -i Makefile"; + postConfigure = "make -C src .depend"; + makeFlags = "FACILEDIR=\${out}/lib/ocaml/facile"; + buildInputs = [ocaml]; + + meta = { + homepage = http://www.recherche.enac.fr/log/facile; + license = "LGPL"; + description = "A Functional Constraint Library"; + }; +} diff --git a/pkgs/development/libraries/haskell/gtk2hs/default.nix b/pkgs/development/libraries/haskell/gtk2hs/default.nix new file mode 100644 index 00000000000..f4e3a02c73f --- /dev/null +++ b/pkgs/development/libraries/haskell/gtk2hs/default.nix @@ -0,0 +1,18 @@ +{stdenv, fetchurl, pkgconfig, ghc, gtk, cairo, GConf, libglade +, glib, libgtkhtml, gtkhtml}: + +stdenv.mkDerivation { + name = "gtk2hs-0.9.12.1"; + src = fetchurl { + url = mirror://sourceforge/gtk2hs/gtk2hs-0.9.12.1.tar.gz; + sha256 = "110z6v9gzhg6nzlz5gs8aafmipbva6rc50b8z1jgq0k2g25hfy22"; + }; + + buildInputs = [pkgconfig ghc gtk glib cairo GConf libglade libgtkhtml gtkhtml]; + + configureFlags = [ + "--enable-cairo" + ]; + + +} diff --git a/pkgs/development/libraries/libexif/default.nix b/pkgs/development/libraries/libexif/default.nix index 0a63ffda2af..76434d2c30b 100644 --- a/pkgs/development/libraries/libexif/default.nix +++ b/pkgs/development/libraries/libexif/default.nix @@ -1,12 +1,12 @@ -{stdenv, fetchurl}: +args: with args; -stdenv.mkDerivation { - name = "libexif-0.6.14"; +stdenv.mkDerivation rec { + name = "libexif-0.6.16"; src = fetchurl { - url = mirror://sourceforge/libexif/libexif-0.6.14.tar.bz2; - sha256 = "0pza5ysvbvvliz7al2i8l3yai64w09xwc6ivy2v5cl7k43almz84"; + url = "mirror://sourceforge/libexif/${name}.tar.bz2"; + sha256 = "0hxc3aik3sn8xq4mbmxxb8ycx2lwffmhi5xvz0zjffhfwkaqas6v"; }; - patches = [./no-po.patch]; + buildInputs = [gettext]; } diff --git a/pkgs/development/libraries/libgcrypt/default.nix b/pkgs/development/libraries/libgcrypt/default.nix index bb71e8f8499..8ea05dc73a3 100644 --- a/pkgs/development/libraries/libgcrypt/default.nix +++ b/pkgs/development/libraries/libgcrypt/default.nix @@ -1,10 +1,13 @@ -{stdenv, fetchurl, libgpgerror}: +args: with args; stdenv.mkDerivation { - name = "libgcrypt-1.2.4"; + name = "libgcrypt-1.3.1"; src = fetchurl { - url = ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.4.tar.gz; - sha256 = "1v6rbx2jpwvh9jwf8n91da2p66v2gzmym6s3h1fidfdy7qqkyg6g"; + urls = [ + ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.3.1.tar.bz2 + ftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/libgcrypt-1.3.1.tar.bz2 + ]; + sha256 = "0ip0bjhnn12lvb050j91x64wfhmpk7xlc3p93mxi9g2qczg413nz"; }; buildInputs = [libgpgerror]; diff --git a/pkgs/development/libraries/libgphoto2/default.nix b/pkgs/development/libraries/libgphoto2/default.nix index 78372330a94..6e332117a2d 100644 --- a/pkgs/development/libraries/libgphoto2/default.nix +++ b/pkgs/development/libraries/libgphoto2/default.nix @@ -1,14 +1,15 @@ -{stdenv, fetchurl, pkgconfig, libusb}: +args: with args; -stdenv.mkDerivation { - name = "libgphoto2-2.2.1"; +stdenv.mkDerivation rec { + name = "libgphoto2-2.4.0"; src = fetchurl { - url = mirror://sourceforge/gphoto/libgphoto2-2.2.1.tar.bz2; - md5 = "69827311733e39fafa9f77bb05e55b77"; + url = "mirror://sourceforge/gphoto/${name}.tar.bz2"; + sha256 = "0yfvpgfly774jnjrfqjf89h99az3sgvzkfpb9diygpk8hmx6phhd"; }; - buildInputs = [pkgconfig libusb]; + buildInputs = [pkgconfig libusb libtool libexif libjpeg gettext]; - ## remove this patch when 2.2.2 is released - patches = [./libgphoto2-2.2.1.patch]; + meta = { + license = "LGPL-2"; + }; } diff --git a/pkgs/development/libraries/libgsf/default.nix b/pkgs/development/libraries/libgsf/default.nix index 41f946e6606..6131314a22c 100644 --- a/pkgs/development/libraries/libgsf/default.nix +++ b/pkgs/development/libraries/libgsf/default.nix @@ -1,10 +1,17 @@ -{stdenv, fetchurl, perl, perlXMLParser, pkgconfig, libxml2, glib, gettext}: +args: with args; -stdenv.mkDerivation { - name = "libgsf-1.14.1"; +stdenv.mkDerivation rec { + name = "libgsf-1.14.7"; src = fetchurl { - url = http://ftp.gnome.org/pub/gnome/sources/libgsf/1.14/libgsf-1.14.1.tar.bz2; - md5 = "00de00b99382d0b7e034e0fffd8951d4"; + url = "http://ftp.gnome.org/pub/gnome/sources/libgsf/1.14/${name}.tar.bz2"; + sha256 = "0vd8arjaavb3qywd9cm2gdn6ngrlyd99nlsj72par8fm60k48bhq"; + }; + buildInputs = [perl perlXMLParser pkgconfig libxml2 glib gettext bzip2 + gnomevfs libbonobo python]; + + meta = { + homepage = http://www.gnome.org/projects/libgsf; + license = "LGPL"; + description = "GNOME Structured File Library"; }; - buildInputs = [perl perlXMLParser pkgconfig libxml2 glib gettext]; } diff --git a/pkgs/development/libraries/libnotify/default.nix b/pkgs/development/libraries/libnotify/default.nix new file mode 100644 index 00000000000..42747db95a1 --- /dev/null +++ b/pkgs/development/libraries/libnotify/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl +, pkgconfig, dbus, dbus_glib +, gtk, glib +}: + +stdenv.mkDerivation { + name = "libnotify-0.4.4"; + #builder = ./builder.sh; + + src = fetchurl { + url = http://www.galago-project.org/files/releases/source/libnotify/libnotify-0.4.4.tar.gz; + sha256 = "2389a9b8220f776033f728a8d46352cfee5c8705066e34887bfb188f9f0d3856"; + }; + + buildInputs = [ + pkgconfig dbus dbus_glib gtk glib + ]; + + configureFlags=""; +} diff --git a/pkgs/development/libraries/libsexy/default.nix b/pkgs/development/libraries/libsexy/default.nix new file mode 100644 index 00000000000..81a38d39973 --- /dev/null +++ b/pkgs/development/libraries/libsexy/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, glib, gtk, pango +}: + +stdenv.mkDerivation { + name = "libsexy-0.1.11"; + #builder = ./builder.sh; + + src = fetchurl { + url = http://releases.chipx86.com/libsexy/libsexy/libsexy-0.1.11.tar.gz; + sha256 = "8c4101a8cda5fccbba85ba1a15f46f2cf75deaa8b3c525ce5b135b9e1a8fe49e"; + }; + + buildInputs = [ pkgconfig libxml2 glib gtk pango + ]; + + #configureFlags=""; +} diff --git a/pkgs/development/libraries/libwpd/default.nix b/pkgs/development/libraries/libwpd/default.nix index 13723fdeb85..630eb44753b 100644 --- a/pkgs/development/libraries/libwpd/default.nix +++ b/pkgs/development/libraries/libwpd/default.nix @@ -1,10 +1,9 @@ -{stdenv, fetchurl, pkgconfig, glib, libgsf, libxml2}: - +args: with args; stdenv.mkDerivation { name = "libwpd-0.8.5"; src = fetchurl { url = mirror://sourceforge/libwpd/libwpd-0.8.5.tar.gz; md5 = "6b679e205a2805c3d23f41c65b35e266"; }; - buildInputs = [pkgconfig glib libgsf libxml2]; + buildInputs = [pkgconfig glib libgsf libxml2 bzip2]; } diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index e1dbc274aed..a4f09612f9b 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -1,4 +1,4 @@ -args: with args; stdenv.mkDerivation { +{stdenv, fetchurl, perl}: stdenv.mkDerivation { name = "openssl-0.9.8g"; builder = ./builder.sh; src = fetchurl { @@ -6,5 +6,4 @@ args: with args; stdenv.mkDerivation { sha256 = "1w0wj3pgg9ga0hay3jdxs9sl17bfw307b6qvkxn735fy8ml8h9hf"; }; buildInputs = [perl]; - propagatedBuildInputs = [gmp]; } diff --git a/pkgs/development/libraries/strigi/default.nix b/pkgs/development/libraries/strigi/default.nix deleted file mode 100644 index 85f21652b53..00000000000 --- a/pkgs/development/libraries/strigi/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ stdenv, fetchurl, zlib, bzip2, expat, pkgconfig, cluceneCore, cluceneContrib, -qt, cmake, dbus, libxml2, perl }: - -stdenv.mkDerivation { - name = "strigi-0.5.3dev"; - - src = fetchurl { - url = http://repo.calcforge.org/f8/strigi-0.5.3.tar.bz2; - sha256 = "0rv7l2s4r022hrsw3jw0pvxh0yzlaw53jhmjxi3cbi6mdvc1y2sv"; - }; - - patchPhase="sed -e 's/ iconv / /' -i ../cmake/FindIconv.cmake; - export CLUCENE_HOME=${cluceneCore}"; - buildInputs = [zlib cluceneCore cluceneContrib expat bzip2 pkgconfig qt cmake - stdenv.gcc.libc dbus libxml2 perl]; - - meta = { - description = "Strigi is a fast and light desktop search engine"; - }; -} diff --git a/pkgs/development/libraries/xine-lib/default.nix b/pkgs/development/libraries/xine-lib/default.nix index 191fa13c0ce..738b21741b5 100644 --- a/pkgs/development/libraries/xine-lib/default.nix +++ b/pkgs/development/libraries/xine-lib/default.nix @@ -12,11 +12,11 @@ assert encryptedDVDSupport -> libdvdcss != null; assert alsaSupport -> alsaLib != null; (stdenv.mkDerivation { - name = "xine-lib-1.1.7"; + name = "xine-lib-1.1.8"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/xine/xine-lib-1.1.7.tar.bz2; - sha256 = "1aycmhvq95gbb5mqw5skgcxyn4nh5qkzq21yclnqk5yzflpwwvvg"; + url = mirror://sourceforge/xine/xine-lib-1.1.8.tar.bz2; + sha256 = "03iwhgsf9kj0x5b4fgv7lzc1vj3frk4afh2idgrqskvixjyi37vc"; }; buildInputs = [ x11 diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh index 4712ef2b648..f65b09f88d4 100755 --- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh +++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh @@ -1,16 +1,15 @@ addCMakeParamsInclude() { - addToSearchPath CMAKE_INCLUDE_PATH /include "" $1 + if [ -d $1/include ]; then + export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH}${CMAKE_INCLUDE_PATH:+:}$1/include" + fi } addCMakeParamsLibs() { - addToSearchPath CMAKE_LIBRARY_PATH /lib "" $1 -} - -addCMakeModulePath() -{ - addToSearchPath CMAKE_MODULE_PATH /share/cmake-2.4/Modules "" $1 + if [ -d $1/lib ]; then + export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}${CMAKE_LIBRARY_PATH:+:}$1/lib" + fi } fixCmakeFiles() @@ -46,4 +45,4 @@ if [ -z "$noCmakeTewaks" ]; then postUnpack="cmakePostUnpack${postUnpack:+; }${postUnpack}" fi; -envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs addCMakeModulePath) +envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs) diff --git a/pkgs/development/tools/misc/automake/setup-hook.sh b/pkgs/development/tools/misc/automake/setup-hook.sh index 4489d343510..097b7b6cbe5 100644 --- a/pkgs/development/tools/misc/automake/setup-hook.sh +++ b/pkgs/development/tools/misc/automake/setup-hook.sh @@ -1,5 +1,7 @@ addAclocals () { - addToSearchPathWithCustomDelimiter : ACLOCAL_PATH /share/aclocal "" $1 + if test -d $1/share/aclocal; then + export ACLOCAL_PATH="$ACLOCAL_PATH${ACLOCAL_PATH:+:}$1/share/aclocal" + fi } envHooks=(${envHooks[@]} addAclocals) diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix index e914391ea2f..c9a47a953ef 100644 --- a/pkgs/development/tools/misc/gdb/default.nix +++ b/pkgs/development/tools/misc/gdb/default.nix @@ -1,10 +1,10 @@ -{stdenv, fetchurl, ncurses}: +args: with args; -stdenv.mkDerivation { - name = "gdb-6.6"; +stdenv.mkDerivation rec { + name = "gdb-6.7.1"; src = fetchurl { - url = http://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2; - md5 = "a4df41d28dd514d64e8ccbfe125fd9a6"; + url = "mirror://gnu/gdb/${name}.tar.bz2"; + sha256 = "0qig8j8hcqpqfhnnp685rzgj8v88bw2fc5igvbiiqkqg88wfr37r"; }; buildInputs = [ncurses]; } diff --git a/pkgs/development/tools/misc/pkgconfig/builder.sh b/pkgs/development/tools/misc/pkgconfig/builder.sh new file mode 100644 index 00000000000..6d281da71e4 --- /dev/null +++ b/pkgs/development/tools/misc/pkgconfig/builder.sh @@ -0,0 +1,10 @@ +source $stdenv/setup + +postInstall() { + test -x $out/nix-support || mkdir $out/nix-support + cp $setupHook $out/nix-support/setup-hook +} +postInstall=postInstall + +genericBuild + diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index 481d2174ebc..be8c4febe03 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -1,18 +1,14 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "pkgconfig-0.22"; + name = "pkgconfig-0.21"; + builder = ./builder.sh; setupHook = ./setup-hook.sh; src = fetchurl { - url = http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz; - sha256 = "1rpb5wygmp0f8nal7y3ga4556i7hkjdslv3wdq04fj30gns621vy"; + url = http://nix.cs.uu.nl/dist/tarballs/pkg-config-0.21.tar.gz; + md5 = "476f45fab1504aac6697aa7785f0ab91"; }; - postInstall = " - ensureDir \$out/nix-support - cp \$setupHook \$out/nix-support/setup-hook - "; - patches = [ # Process Requires.private properly, see # http://bugs.freedesktop.org/show_bug.cgi?id=4738. diff --git a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh index f13a44eb999..f9e7805ccbf 100644 --- a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh +++ b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh @@ -1,5 +1,7 @@ addPkgConfigPath () { - addToSearchPath PKG_CONFIG_PATH /lib/pkgconfig "" $1 + if test -d $1/lib/pkgconfig; then + export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$1/lib/pkgconfig" + fi } envHooks=(${envHooks[@]} addPkgConfigPath) diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 33b7b3d6c9e..ce4fbf12cf4 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -244,4 +244,8 @@ rec { (l + (if l=="" then "" else ".") + s) (builtins.getAttr s attrs))) (builtins.attrNames attrs))))); + innerModifySumArgs = f: x: a: b: if b == null then (f a b) // x else + innerModifySumArgs f x (a // b); + modifySumArgs = f: x: innerModifySumArgs f x {}; + } diff --git a/pkgs/servers/monitoring/nagios/plugins/official/default.nix b/pkgs/servers/monitoring/nagios/plugins/official/default.nix index d415e833742..29eb7bbb7a0 100644 --- a/pkgs/servers/monitoring/nagios/plugins/official/default.nix +++ b/pkgs/servers/monitoring/nagios/plugins/official/default.nix @@ -20,6 +20,8 @@ stdenv.mkDerivation { ) "; + postInstall = "ln -s libexec $out/bin"; + buildInputs = [openssh]; # !!! make openssh a runtime dependency only meta = { diff --git a/pkgs/test/openftd/default.nix b/pkgs/test/openftd/default.nix new file mode 100644 index 00000000000..34cff9ac93f --- /dev/null +++ b/pkgs/test/openftd/default.nix @@ -0,0 +1,49 @@ +/* + +Systeemvereisten + +* libz >= 1.1.4 +* glib >= 2.2.0 +* gtk >= 2.2.0 + +Glib 2 is een 'dependancy' van gtk2. Als je gtk2 op je systeem hebt staan dan heb je ongetwijfeld ook glib2 op je systeem. Zie: www.gtk.org voor meer informatie omtrent Glib/gtk2 +Alhoewel FTD4Linux gtk 2.2 als minimumvereiste heeft raden we toch aan om gtk 2.4 te gebruiken. Dit vanwege een bug in gtk versies 2.2.2 t/m 2.2.4. + +* libxml2 >= 2.2.5 +* libxslt >= 1.0.5 + +* mozilla (gecompileerd met gtk2 support) +Mozilla is de opensource browser die is voortgekomen uit het vrijgeven van de netscape navigator source code. Als je mozilla reeds op je systeem hebt staan zou je even moeten nagaan of deze tegen gtk2 is gelinkt. Dit kun je doen met behulp van het programma ldd. +ldd /usr/X11R6/lib/mozilla-gtk2/libgtkembedmoz.so | grep gtk +/usr/X11R6/lib/mozilla-gtk2/libgtkembedmoz.so: +libgtk-x11-2.0.so.200 => /usr/X11R6/lib/libgtk-x11-2.0.so.200 (0x282c3000) +In de output van het ldd programma kun je zien of er inderdaad wordt gelink tegen gtk2. (libgtk-x11-2.0.so.200). +Heb je geen mozilla, maar heb je wel de firebird/firefox variant geinstalleerd staan dan kun je ook met de mozilla compatible onderdelen van firebird/firefox aan de gang. Je hebt hier echter wel de header (development) bestanden bij nodig. Controleer dus even of jouw firebird/firefox installatie hiermee is geleverd. (gtkembedmoz/gtkmozembed.h) Een 'locate gtkmozembed.h' zou hier snel genoeg uitsluitsel over moeten geven. + +* OpenSSL +* LibCURL + +*/ + +{ stdenv, fetchurl +, zlib, libxml2, libxslt, firefox, openssl, curl +, glib, gtk, libgnomeui, libgtkhtml +, pkgconfig, dbus_glib, realCurl, pcre, libsexy, gtkspell, libnotify +}: + +stdenv.mkDerivation { + name = "openftd-0.98.6"; + #builder = ./builder.sh; + + src = fetchurl { + url = http://speeldoos.eweka.nl/~paul/openftd/openftd-1.0.1.tar.bz2; + sha256 = "e0710865f852fdf209949788a1ced65e9ecf82b4eaa0992a7a1dde1511a3b6e7"; + }; + + buildInputs = [ + zlib libxml2 libxslt firefox openssl curl + glib gtk pkgconfig dbus_glib realCurl pcre libsexy libgnomeui gtkspell libnotify libgtkhtml + ]; + + configureFlags="--with-libcurl-libraries=${curl}/lib --with-libcurl-headers=${curl}/include --with-pcre_libraries=${pcre}/lib --with-pcre_headers=${pcre}/include"; +} diff --git a/pkgs/tools/misc/shebangfix/default.nix b/pkgs/tools/misc/shebangfix/default.nix new file mode 100644 index 00000000000..94ecc1e00f7 --- /dev/null +++ b/pkgs/tools/misc/shebangfix/default.nix @@ -0,0 +1,20 @@ +args: +args.stdenv.mkDerivation { + name = "shebangfix-0.0"; + + buildInputs = [args.perl]; + + file = ./shebangfix.pl; + + phases = "buildPhase"; + + buildPhase = " + ensureDir \$out/bin + s=\$out/bin/shebangfix + cp \$file \$s + chmod +x \$s + perl \$s \$s + "; + + meta = { description = "replaces the #!executable with $#!correctpath/executable "; }; +} diff --git a/pkgs/tools/misc/shebangfix/shebangfix.pl b/pkgs/tools/misc/shebangfix/shebangfix.pl new file mode 100644 index 00000000000..53573f8d36d --- /dev/null +++ b/pkgs/tools/misc/shebangfix/shebangfix.pl @@ -0,0 +1,35 @@ +#!/bin/perl +use warnings; +use strict; + +#usage PATH=< : separated path list> perl file1 file2 + +print "TODO fix space trouble. This script won't work if your paths contain spaces"; + +sub findInPath{ + my $file = shift(@_); + foreach (split(/:/, $ENV{'PATH'})){ + my $f = "$_/$file"; + if (-x "$f"){ + return $f; + } + } + print "unable to find $file in on of ".$ENV{'PATH'}; + exit 1 +} + +foreach (@ARGV) +{ + my $file = $_; + open(FILE, $file); + my $content = do { local $/; }; + + close(FILE); + + (my $name = $content) =~ /^#![^ ]*\/([^ \n\r]*)/; + my $fullpath = ($1 eq 'sh') ? "/bin/sh" : findInPath($1); + $content =~ s/^#![^ \n\r]*/#!$fullpath/; + open(FILE, ">$file"); + print FILE $content; + close($file); +} diff --git a/pkgs/tools/misc/wv/default.nix b/pkgs/tools/misc/wv/default.nix index 141bf91bee0..1bf88edef2a 100644 --- a/pkgs/tools/misc/wv/default.nix +++ b/pkgs/tools/misc/wv/default.nix @@ -9,7 +9,7 @@ args.stdenv.mkDerivation { }; buildInputs =(with args; [zlib imagemagick libpng glib - pkgconfig libgsf libxml2]); + pkgconfig libgsf libxml2 bzip2]); meta = { description = " diff --git a/pkgs/tools/package-management/nix/custom.nix b/pkgs/tools/package-management/nix/custom.nix new file mode 100644 index 00000000000..2cff9f53d87 --- /dev/null +++ b/pkgs/tools/package-management/nix/custom.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, aterm, db4, perl, curl, bzip2, openssl ? null +, storeDir ? "/nix/store" +, stateDir ? "/nix/var" +, src +, preConfigure ? "" +, autoconf ? null, automake ? null, libtool ? null +, bison ? null +, flex ? null +, w3m ? null +, docbook5_xsl ? null, libxslt ? null +, docbook5 ? null, docbook_xml_dtd_43 ? null +, configureFlags ? [] +}: + +stdenv.mkDerivation { + name = "nix-custom"; + + inherit src; + + buildInputs = [perl curl openssl] + ++ (if automake != null then [automake] else []) + ++ (if autoconf != null then [autoconf] else []) + ++ (if libtool != null then [libtool] else []) + ++ (if bison != null then [bison] else []) + ++ (if flex != null then [flex] else []) + ++ (if docbook5_xsl != null then [docbook5_xsl] else []) + ++ (if libxslt != null then [libxslt] else []) + ++ (if docbook5 != null then [docbook5] else []) + ++ (if docbook_xml_dtd_43 != null then [docbook_xml_dtd_43] else []) + ++ (if w3m != null then [w3m] else []) + ; + + inherit preConfigure; + + configureFlags = [" + --with-store-dir=${storeDir} --localstatedir=${stateDir} + --with-aterm=${aterm} --with-bdb=${db4} --with-bzip2=${bzip2} + --disable-init-state"] ++ configureFlags ; + + meta = { + description = "The Nix Deployment System"; + homepage = http://nix.cs.uu.nl/; + license = "LGPL"; + }; +} diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index 9d381198bee..532863d66eb 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -3,14 +3,14 @@ , stateDir ? "/nix/var" }: -let version = "0.11pre9570"; in +let version = "0.11pre9692"; in stdenv.mkDerivation { name = "nix-${version}"; src = fetchurl { url = "http://nix.cs.uu.nl/dist/nix/nix-${version}/nix-${version}.tar.bz2"; - md5 = "5170f1b1e8feda2adeb2cac3c5ca5ff9"; + md5 = "35c0bc68b81d20c7fb925bcf8faf4827"; }; buildInputs = [perl curl openssl]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1b31a9e69a0..1cf2c2792ce 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -147,6 +147,13 @@ rec { getVersion = name: alts: builtins.getAttr (getConfig [ "environment" "versions" name ] "default") alts; + # The same, another syntax. + # Warning: syntax for configuration.nix changed too + useVersion = name: f: f + { + version = getConfig [ "environment" "versions" name ]; + }; + # Whether user enabled given feature for the given package? getFlag = flag: package: default: getConfig [ "environment" "flags" package flag ] @@ -659,6 +666,11 @@ rec { inherit fetchurl stdenv ncurses; }; + shebangfix = import ../tools/misc/shebangfix { + inherit perl; + stdenv = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh; + }; + smartmontools = import ../tools/system/smartmontools { inherit fetchurl stdenv; }; @@ -743,7 +755,7 @@ rec { wv = import ../tools/misc/wv { inherit fetchurl stdenv libpng zlib imagemagick - pkgconfig libgsf libxml2; + pkgconfig libgsf libxml2 bzip2; inherit (gtkLibs) glib; }; @@ -1063,13 +1075,11 @@ rec { inherit fetchurl stdenv; }; - ocaml = import ../development/compilers/ocaml { - inherit fetchurl stdenv x11 ncurses; - }; + ocaml = getVersion "ocaml" ocaml_alts; - ocaml3080 = import ../development/compilers/ocaml/ocaml-3.08.0.nix { - inherit fetchurl x11; - stdenv = overrideGCC stdenv gcc34; + ocaml_alts = import ../development/compilers/ocaml { + inherit fetchurl stdenv x11 ncurses stdenvUsingSetupNew2; + stdenv34 = overrideGCC stdenv gcc34; }; /* @@ -1096,7 +1106,7 @@ rec { qcmm = import ../development/compilers/qcmm { lua = lua4; - ocaml = ocaml3080; + ocaml = ocaml_alts.v_3_08_0; inherit fetchurl stdenv mk noweb groff; }; @@ -1202,17 +1212,15 @@ rec { }; */ - python = import ../development/interpreters/python { - inherit fetchurl stdenv zlib bzip2; - }; + python = getVersion "python" python_alts; - python25 = import ../development/interpreters/python/2.5 { + python_alts = import ../development/interpreters/python { inherit fetchurl stdenv zlib bzip2; }; pyrexFun = lib.sumArgs (import ../development/interpreters/pyrex) { inherit fetchurl stdenv stringsWithDeps lib builderDefs; - python = python25; + python = python_alts.v_2_5; }; pyrex = pyrexFun { @@ -1605,13 +1613,9 @@ rec { inherit fetchurl stdenv python; }; - cluceneContrib = (import ../development/libraries/clucene-contrib) { - inherit fetchurl stdenv cluceneCore; - }; - - cluceneCore = (import ../development/libraries/clucene-core) { - inherit fetchurl stdenv; - }; + cluceneCore = (import ../development/libraries/clucene-core) { + inherit fetchurl stdenv; + }; coredumper = import ../development/libraries/coredumper { inherit fetchurl stdenv; @@ -1681,6 +1685,13 @@ rec { inherit fetchurl stdenv; }; + facile = import ../development/libraries/facile { + inherit fetchurl; + # Actually, we don't need this version but we need native-code compilation + ocaml = ocaml_alts.v_3_10_0; + stdenv = stdenvUsingSetupNew2; + }; + ffmpeg = import ../development/libraries/ffmpeg { inherit fetchurl stdenv; }; @@ -1939,7 +1950,7 @@ rec { }; libexif = import ../development/libraries/libexif { - inherit fetchurl stdenv; + inherit fetchurl stdenv gettext; }; libgcrypt = import ../development/libraries/libgcrypt { @@ -1951,7 +1962,7 @@ rec { }; libgphoto2 = import ../development/libraries/libgphoto2 { - inherit fetchurl stdenv pkgconfig libusb; + inherit fetchurl stdenv pkgconfig libusb libtool libexif libjpeg gettext; }; # commented out because it's using the new configuration style proposal which is unstable @@ -1960,8 +1971,9 @@ rec { #}; libgsf = import ../development/libraries/libgsf { - inherit fetchurl stdenv perl perlXMLParser pkgconfig libxml2 gettext; - inherit (gnome) glib; + inherit fetchurl stdenv perl perlXMLParser pkgconfig libxml2 gettext bzip2 + python; + inherit (gnome) glib gnomevfs libbonobo; }; libidn = import ../development/libraries/libidn { @@ -2044,7 +2056,7 @@ rec { }; libwpd = import ../development/libraries/libwpd { - inherit fetchurl stdenv pkgconfig libgsf libxml2; + inherit fetchurl stdenv pkgconfig libgsf libxml2 bzip2; inherit (gnome) glib; }; @@ -2145,7 +2157,7 @@ rec { }; openssl = import ../development/libraries/openssl { - inherit fetchurl stdenv perl gmp; + inherit fetchurl stdenv perl; }; pangoxsl = import ../development/libraries/pangoxsl { @@ -2244,12 +2256,6 @@ rec { inherit fetchurl stdenv; }; - strigi = import ../development/libraries/strigi { - inherit stdenv fetchurl zlib cluceneCore cluceneContrib expat bzip2 - pkgconfig cmake dbus libxml2 perl; - qt = qt4; - }; - t1lib = import ../development/libraries/t1lib { inherit fetchurl stdenv x11; inherit (xlibs) libXaw; @@ -2409,6 +2415,11 @@ rec { ### DEVELOPMENT / LIBRARIES / HASKELL + gtk2hs = import ../development/libraries/haskell/gtk2hs { + inherit pkgconfig stdenv fetchurl cairo; + inherit (gnome) gtk glib GConf libglade libgtkhtml gtkhtml; + ghc = ghc661; + }; uulib64 = import ../development/libraries/haskell/uulib { # !!! remove? inherit stdenv fetchurl ghc; @@ -3078,6 +3089,11 @@ rec { libselinux = import ../os-specific/linux/libselinux { inherit fetchurl stdenv libsepol; }; + + libsexy = import ../development/libraries/libsexy { + inherit stdenv fetchurl pkgconfig libxml2; + inherit (gtkLibs) glib gtk pango; + }; librsvg = import ../development/libraries/librsvg { inherit fetchurl stdenv; @@ -3128,6 +3144,11 @@ rec { inherit fetchurl stdenv; }; + libnotify = import ../development/libraries/libnotify { + inherit stdenv fetchurl pkgconfig dbus dbus_glib; + inherit (gtkLibs) gtk glib; + }; + libvolume_id = import ../os-specific/linux/libvolume_id { inherit fetchurl stdenv; }; @@ -3509,7 +3530,7 @@ rec { }; compiz = compizFun { - version = getConfig ["compiz" "version"] "0.5.0"; + version = getConfig ["compiz" "version"] "0.6.2"; extraConfigureFlags = getConfig ["compiz" "extraConfigureFlags"] []; } null; @@ -3578,11 +3599,9 @@ rec { inherit (xlibs) libX11; }; - /* - djview4 = import ../applications/graphics/djview4 { + djview4 = import ../applications/graphics/djview { inherit fetchurl stdenv qt4 djvulibre; }; - */ eclipse = plugins: import ../applications/editors/eclipse { @@ -3598,7 +3617,7 @@ rec { elinks = import ../applications/networking/browsers/elinks { inherit stdenv fetchurl python perl ncurses x11 zlib openssl spidermonkey - guile bzip2 libtool; + guile bzip2; }; emacs = emacs22; @@ -3720,7 +3739,7 @@ rec { } null; gphoto2 = import ../applications/misc/gphoto2 { - inherit fetchurl stdenv pkgconfig libgphoto2 libexif popt; + inherit fetchurl stdenv pkgconfig libgphoto2 libexif popt readline gettext; }; gqview = import ../applications/graphics/gqview { @@ -3789,6 +3808,11 @@ rec { inherit (gtkLibs) glib; }; + jedit = import ../applications/jedit { + inherit fetchurl ant; + stdenv = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh; + }; + joe = import ../applications/editors/joe { inherit stdenv fetchurl; }; @@ -3961,7 +3985,7 @@ rec { pythonmagick = import ../applications/graphics/PythonMagick { inherit fetchurl stdenv pkgconfig imagemagick boost; - python = python25; + python = python_alts.v_2_5; }; ratpoison = import ../applications/window-managers/ratpoison { @@ -4344,71 +4368,28 @@ rec { qt = qt3; }; - kdelibs4 = import ../desktops/kde-4/kdelibs { + kde4 = recurseIntoAttrs (import ../desktops/kde-4 { inherit - fetchurl stdenv zlib perl openssl pcre pkgconfig - libjpeg libpng libtiff libxml2 libxslt libtool - expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups; - inherit (xlibs) - inputproto kbproto scrnsaverproto xextproto xf86miscproto - xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite - libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm - libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc - libxkbfile; + fetchurl fetchsvn zlib perl openssl pcre pkgconfig libjpeg libpng libtiff + libxml2 libxslt libtool libusb expat freetype bzip2 cmake cluceneCore libgcrypt gnupg + cppunit cyrus_sasl openldap enchant openexr exiv2 samba nss log4cxx aspell + shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland + xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline + saneBackends chmlib python libzip gmp sqlite libidn runCommand lib + openbabel ocaml facile; + stdenv = stdenvUsingSetupNew2; + cdparanoia = cdparanoiaIII; + inherit (xlibs) + inputproto kbproto scrnsaverproto xextproto xf86miscproto + xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite + libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm + libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc + libxkbfile libXinerama; + inherit (gtkLibs) glib; qt = qt4; - }; - - kdepimlibs4 = import ../desktops/kde-4/kdepimlibs { - inherit - fetchurl stdenv zlib perl openssl pcre pkgconfig - libjpeg libpng libtiff libxml2 libxslt libtool - expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups - boost gpgme; - inherit (xlibs) - inputproto kbproto scrnsaverproto xextproto xf86miscproto - xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite - libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm - libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc - libxkbfile; - qt = qt4; - kdelibs = kdelibs4; - }; - - kdepim4 = import ../desktops/kde-4/kdepim { - inherit - fetchurl stdenv zlib perl openssl pcre pkgconfig - libjpeg libpng libtiff libxml2 libxslt libtool libusb - expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups - mesa gpgme boost; - inherit (xlibs) - inputproto kbproto scrnsaverproto xextproto xf86miscproto - xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite - libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm - libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc - libxkbfile libXinerama; - inherit (gtkLibs) glib; - qt = qt4; - kdelibs = kdelibs4; - kdepimlibs = kdepimlibs4; - }; - - kdebase4 = import ../desktops/kde-4/kdebase { - inherit - fetchurl stdenv zlib perl openssl pcre pkgconfig - libjpeg libpng libtiff libxml2 libxslt libtool libusb - expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups - mesa; - inherit (xlibs) - inputproto kbproto scrnsaverproto xextproto xf86miscproto - xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite - libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm - libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc - libxkbfile libXinerama; - inherit (gtkLibs) glib; - qt = qt4; - kdelibs = kdelibs4; - kdepimlibs = kdepimlibs4; - }; + dbus = dbus_alts.withX11; + bison = bison23; + }); kdebase = import ../desktops/kde/kdebase { inherit @@ -4520,6 +4501,18 @@ rec { db4 = db45; }; + nixCustomFun = src: preConfigure: configureFlags : + (import ../tools/package-management/nix/custom.nix { + inherit fetchurl stdenv perl curl bzip2 openssl src preConfigure automake + autoconf libtool configureFlags; + bison = bison23; + flex = flex2533; + aterm = aterm242fixes; + db4 = db45; + inherit docbook5_xsl libxslt docbook5 docbook_xml_dtd_43 w3m; + + }); + ntfs3g = import ../misc/ntfs-3g { inherit fetchurl stdenv fuse pkgconfig; }; diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix index 3337d6dc8a2..ae5224f7101 100644 --- a/pkgs/top-level/builder-defs.nix +++ b/pkgs/top-level/builder-defs.nix @@ -1,5 +1,5 @@ args: with args; with stringsWithDeps; with lib; -rec +(rec { inherit writeScript; @@ -12,30 +12,29 @@ rec else if (hasSuffixHack ".zip" s) || (hasSuffixHack ".ZIP" s) then "zip" else (abort "unknown archive type : ${s}")); - minInit = noDepEntry (" - set -e - NIX_GCC=${stdenv.gcc} - export SHELL=${stdenv.shell} - # Set up the initial path. - PATH= - for i in \$NIX_GCC ${toString stdenv.initialPath}; do - PATH=\$PATH\${PATH:+:}\$i/bin - done - " + (if ((stdenv ? preHook) && (stdenv.preHook != null) && - ((toString stdenv.preHook) != "")) then - " - param1=${stdenv.param1} - param2=${stdenv.param2} - param3=${stdenv.param3} - param4=${stdenv.param4} - param5=${stdenv.param5} - source ${stdenv.preHook} - - export TZ=UTC - - prefix=${if args ? prefix then (toString args.prefix) else "\$out"} + defAddToSearchPath = FullDepEntry (" + addToSearchPathWithCustomDelimiter() { + local delimiter=\$1 + local varName=\$2 + local needDir=\$3 + local addDir=\${4:-\$needDir} + local prefix=\$5 + if [ -d \$prefix\$needDir ]; then + if [ -z \${!varName} ]; then + eval export \${varName}=\${prefix}\$addDir + else + eval export \${varName}=\${!varName}\${delimiter}\${prefix}\$addDir + fi + fi + } + addToSearchPath() + { + addToSearchPathWithCustomDelimiter \"\${PATH_DELIMITER}\" \"\$@\" + } + ") [defNest]; + defNest = noDepEntry (" nestingLevel=0 startNest() { @@ -62,10 +61,33 @@ rec } trap \"closeNest\" EXIT + "); + minInit = FullDepEntry (" + set -e + NIX_GCC=${stdenv.gcc} + export SHELL=${stdenv.shell} + # Set up the initial path. + PATH= + for i in \$NIX_GCC ${toString stdenv.initialPath}; do + PATH=\$PATH\${PATH:+:}\$i/bin + done + " + (if ((stdenv ? preHook) && (stdenv.preHook != null) && + ((toString stdenv.preHook) != "")) then + " + param1=${stdenv.param1} + param2=${stdenv.param2} + param3=${stdenv.param3} + param4=${stdenv.param4} + param5=${stdenv.param5} + source ${stdenv.preHook} + + export TZ=UTC + + prefix=${if args ? prefix then (toString args.prefix) else "\$out"} " - else "")); + else "")) [defNest defAddToSearchPath]; addInputs = FullDepEntry (" # Recursively find all build inputs. @@ -243,8 +265,8 @@ rec replaceInScript = file: l: (concatStringsSep "\n" ((pairMap (replaceScriptVar file) l))); replaceScripts = l:(concatStringsSep "\n" (pairMap replaceInScript l)); doReplaceScripts = FullDepEntry (replaceScripts (getAttr ["shellReplacements"] [] args)) [minInit]; - makeNest = x:(if x==minInit.text then x else "startNest\n" + x + "\nstopNest\n"); + makeNest = x:(if x==defNest.text then x else "startNest\n" + x + "\nstopNest\n"); textClosure = textClosureMap makeNest; inherit noDepEntry FullDepEntry PackEntry; -} +}) // args From 6b01b5176a0ec1c528b05546a6896e6c94e8de38 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:04:45 +0000 Subject: [PATCH 006/320] Added (optional) perl support to svn-1.4.x svn path=/nixpkgs/branches/stdenv-updates/; revision=9728 --- .../subversion-1.4.x/builder.sh | 12 ++++++++-- .../subversion-1.4.x/default.nix | 11 +++++++--- ...on-respect_CPPFLAGS_in_perl_bindings.patch | 22 +++++++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 pkgs/applications/version-management/subversion-1.4.x/subversion-respect_CPPFLAGS_in_perl_bindings.patch diff --git a/pkgs/applications/version-management/subversion-1.4.x/builder.sh b/pkgs/applications/version-management/subversion-1.4.x/builder.sh index e91f9f9113d..9a503a92601 100644 --- a/pkgs/applications/version-management/subversion-1.4.x/builder.sh +++ b/pkgs/applications/version-management/subversion-1.4.x/builder.sh @@ -7,8 +7,16 @@ fi postInstall() { if test "$pythonBindings"; then - make swig-py - make install-swig-py + make swig-py swig_pydir=$(toPythonPath $out) + make install-swig-py swig_pydir=$(toPythonPath $out) + fi + if test "$perlBindings"; then + make swig-pl-lib + make install-swig-pl-lib + cd subversion/bindings/swig/perl/native + perl Makefile.PL PREFIX=$out + make install + cd - fi if test "$javahlBindings"; then mkdir -p subversion/bindings/java/javahl/classes # bug fix diff --git a/pkgs/applications/version-management/subversion-1.4.x/default.nix b/pkgs/applications/version-management/subversion-1.4.x/default.nix index 38333daa2f9..b2869450c09 100644 --- a/pkgs/applications/version-management/subversion-1.4.x/default.nix +++ b/pkgs/applications/version-management/subversion-1.4.x/default.nix @@ -3,6 +3,7 @@ , sslSupport ? false , compressionSupport ? false , pythonBindings ? false +, perlBindings ? false , javahlBindings ? false , stdenv, fetchurl, apr, aprutil, neon, zlib , httpd ? null, expat, swig ? null, jdk ? null @@ -26,7 +27,9 @@ stdenv.mkDerivation { buildInputs = [expat zlib] - ++ (if pythonBindings then [swig.python] else []); + ++ (if pythonBindings then [swig.python] else []) + ++ (if perlBindings then [swig.perl] else []) + ; configureFlags = " --without-gdbm --disable-static @@ -37,14 +40,16 @@ stdenv.mkDerivation { "--with-apxs=${httpd}/bin/apxs --with-apr=${httpd} --with-apr-util=${httpd}" else "--without-apxs"} - ${if pythonBindings then "--with-swig=${swig}" else "--without-swig"} + ${if (pythonBindings || perlBindings) then "--with-swig=${swig}" else "--without-swig"} ${if javahlBindings then "--enable-javahl --with-jdk=${jdk}" else ""} --disable-neon-version-check "; - inherit httpServer pythonBindings javahlBindings; + inherit httpServer pythonBindings javahlBindings perlBindings; + patches = [ ./subversion-respect_CPPFLAGS_in_perl_bindings.patch ]; meta = { description = "A version control system intended to be a compelling replacement for CVS in the open source community"; }; } + diff --git a/pkgs/applications/version-management/subversion-1.4.x/subversion-respect_CPPFLAGS_in_perl_bindings.patch b/pkgs/applications/version-management/subversion-1.4.x/subversion-respect_CPPFLAGS_in_perl_bindings.patch new file mode 100644 index 00000000000..86c18145c2e --- /dev/null +++ b/pkgs/applications/version-management/subversion-1.4.x/subversion-respect_CPPFLAGS_in_perl_bindings.patch @@ -0,0 +1,22 @@ +Index: subversion/bindings/swig/perl/native/Makefile.PL.in +=================================================================== +--- subversion-1.4.5/subversion/bindings/swig/perl/native/Makefile.PL.in (revision 27184) ++++ subversion-1.4.5/subversion/bindings/swig/perl/native/Makefile.PL.in (working copy) +@@ -26,6 +26,7 @@ + my @ldmodules = map {"-lsvn_$_-1"} (@modules, qw/diff subr/); + + my $apr_shlib_path_var = '@SVN_APR_SHLIB_PATH_VAR@'; ++my $cppflags = '@CPPFLAGS@'; + my $apr_cflags = '@SVN_APR_INCLUDES@'; + my $apu_cflags = '@SVN_APRUTIL_INCLUDES@'; + +@@ -38,7 +39,7 @@ + + my %config = ( + ABSTRACT => 'Perl bindings for Subversion', +- INC => join(' ',$apr_cflags, $apu_cflags, ++ INC => join(' ', $cppflags, $apr_cflags, $apu_cflags, + " -I$swig_srcdir/perl/libsvn_swig_perl", + " -I$svnlib_srcdir/include", + " -I$svnlib_builddir", + From 36e8d12df4968284e0f5ead4a9a1d3dce86edeac Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:04:54 +0000 Subject: [PATCH 007/320] Mercurial upgrade svn path=/nixpkgs/branches/stdenv-updates/; revision=9729 --- .../version-management/mercurial/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix index 253907ab4bd..f65a34ec5c4 100644 --- a/pkgs/applications/version-management/mercurial/default.nix +++ b/pkgs/applications/version-management/mercurial/default.nix @@ -1,10 +1,10 @@ -{stdenv, fetchurl, python, makeWrapper}: +args: with args; stdenv.mkDerivation { - name = "mercurial-0.9.4"; + name = "mercurial-0.9.5"; src = fetchurl { - url = http://www.selenic.com/mercurial/release/mercurial-0.9.4.tar.gz; - sha256 = "26996df67d508e129d2f0a264e25072764e5c2d21606e1658d77c8984e6ed64a"; + url = http://www.selenic.com/mercurial/release/mercurial-0.9.5.tar.gz; + sha256 = "1n34yl4z7nc3vmsgpkmqc94hsmy846ny86xgpgv3m371ljm2pq6g"; }; inherit makeWrapper; @@ -16,7 +16,7 @@ stdenv.mkDerivation { "for i in $(cd $out/bin && ls); do" " mv $out/bin/$i $out/bin/.orig-$i;" " makeWrapper $out/bin/.orig-$i $out/bin/$i" - " --set PYTHONPATH \"$(toPythonPath $out):$PYTHONPATH\";" + " --set PYTHONPATH \"$(toPythonPath $out):$PYTHONPATH:\$PYTHONPATH\";" "done" ]; From 7ef042608d561d6f5e4dcea97318420878ff99b5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:05:02 +0000 Subject: [PATCH 008/320] Added some options for choosing kernel svn path=/nixpkgs/branches/stdenv-updates/; revision=9730 --- pkgs/top-level/all-packages.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1cf2c2792ce..599b4fbdc2c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2952,9 +2952,9 @@ rec { modules = []; }; - kernel = kernel_2_6_21; + systemKernel = kernel; - systemKernel = (if (getConfig ["kernel" "version"] "2.6.21") == "2.6.22" then + kernel = (if (getConfig ["kernel" "version"] "2.6.21") == "2.6.22" then kernel_2_6_22 else if (getConfig ["kernel" "version"] "2.6.21") == "2.6.23" then kernel_2_6_23 else kernel); @@ -3078,11 +3078,12 @@ rec { }; extraConfig = "CONFIG_FB_SPLASH=y"; } - ]; + ] ++ getConfig ["kernel" "extraPatches"] []; extraConfig = lib.optional (getConfig ["kernel" "timer_stats"] false) "CONFIG_TIMER_STATS=y" ++ lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++ [(getConfig ["kernel" "addConfig"] "")]; + kernelConfig = getConfig ["kernel" "configFile"] null; }; @@ -3112,8 +3113,7 @@ rec { }; klibc = import ../os-specific/linux/klibc { - inherit fetchurl stdenv perl bison mktemp; - kernel = systemKernel; + inherit fetchurl stdenv perl bison mktemp kernel; }; kvm = kvm49; From c42b3b374e3b303c2c22c10e7a8dc930dbf8f813 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:05:13 +0000 Subject: [PATCH 009/320] wpa_supplicant upgraded to 0.5.8 svn path=/nixpkgs/branches/stdenv-updates/; revision=9731 --- pkgs/os-specific/linux/wpa_supplicant/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/wpa_supplicant/default.nix b/pkgs/os-specific/linux/wpa_supplicant/default.nix index bf6795f4b1e..cf529b04637 100644 --- a/pkgs/os-specific/linux/wpa_supplicant/default.nix +++ b/pkgs/os-specific/linux/wpa_supplicant/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, openssl}: stdenv.mkDerivation { - name = "wpa_supplicant-0.5.7"; + name = "wpa_supplicant-0.5.8"; src = fetchurl { - url = http://hostap.epitest.fi/releases/wpa_supplicant-0.5.7.tar.gz; - sha256 = "0mvb2fpvn7qdjinpn86hvmhfwg2ax1822hdkfrw25wx5dglqns6g"; + url = http://hostap.epitest.fi/releases/wpa_supplicant-0.5.8.tar.gz; + sha256 = "1w37bm42gh1k0v3r8cdmyrvf5rk5fyz9bvsp10w2cvgrwgi5b5rg"; }; preBuild = " From 07091eed111c2ed57b844ba7348a2368e511fef9 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:05:32 +0000 Subject: [PATCH 010/320] Make kernel builder compatible with 2.6.24-rc2 svn path=/nixpkgs/branches/stdenv-updates/; revision=9732 --- pkgs/os-specific/linux/kernel/builder.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh index 3512a74c196..af5aa8de8c2 100644 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ b/pkgs/os-specific/linux/kernel/builder.sh @@ -66,6 +66,7 @@ installPhase() { cp arch/$arch/boot/bzImage $out/vmlinuz fi + sed -e '/-b $(INSTALL_MOD_PATH)/d' -i Makefile # Install the modules in $out/lib/modules with matching paths # in modules.dep (i.e., refererring to $out/lib/modules, not # /lib/modules). The depmod_opts= is to prevent the kernel @@ -95,7 +96,7 @@ installPhase() { if test "$arch" != um; then # copy all Makefiles and Kconfig files ln -s $out/lib/modules/$version/build $out/lib/modules/$version/source - cp --parents `find -type f -name Makefile -o -name "Kconfig*"` $out/lib/modules/$version/build + cp --parents `find -type f -name Makefile-\* -o -name "Kconfig*"` $out/lib/modules/$version/build cp Module.symvers $out/lib/modules/$version/build # weed out unneeded stuff From ebc6bb79cd848cf95903f77ed2e4bafe045347c0 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:05:39 +0000 Subject: [PATCH 011/320] Changed syntax of getVersion svn path=/nixpkgs/branches/stdenv-updates/; revision=9733 --- pkgs/development/libraries/gettext/default.nix | 13 ++++++------- pkgs/top-level/all-packages.nix | 6 +++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix index 54a0d36cf76..10d1ced407f 100644 --- a/pkgs/development/libraries/gettext/default.nix +++ b/pkgs/development/libraries/gettext/default.nix @@ -1,8 +1,7 @@ args: -rec { - recurseForDerivations = true; - default = v_0_14_6; - v_0_14_6 = (import ./0.14.6.nix) args; - v_0_15 = (import ./0.15.nix) args; - v_0_16_x = (import ./0.16.x.nix) args; -} +builtins.listToAttrs [ + { name = "recurseForDerivations"; value = true; } + { name = "0.14.6"; value = (import ./0.14.6.nix) args; } + { name = "0.15"; value = (import ./0.15.nix) args; } + { name = "0.16.x"; value = (import ./0.16.x.nix) args; } +] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 599b4fbdc2c..8afad6b24e2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -142,10 +142,10 @@ rec { # pkgname = getVersion "name" pkgname_alts; # # user will be able to write in his configuration.nix something like - # environment = { versions = { name = v_0_2; }; }; and pkgname will be equal - # to pkgname_alts.v_0_2. Using alts.default by default. + # name = { version = "0.2"; }; and pkgname will be equal + # to getAttr pkgname_alts "0.2". Using alts.default by default. getVersion = name: alts: builtins.getAttr - (getConfig [ "environment" "versions" name ] "default") alts; + (getConfig [ name "version" ] "default") alts; # The same, another syntax. # Warning: syntax for configuration.nix changed too From 606b413f1f695ee0d11603ad3c66e981b585e655 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:05:55 +0000 Subject: [PATCH 012/320] Rewritten gettext-version stuff. I've added listOfListsToAttrs to lib because I don't like to type "name =" and "value =". svn path=/nixpkgs/branches/stdenv-updates/; revision=9734 --- pkgs/development/libraries/gettext/0.14.6.nix | 3 ++- pkgs/development/libraries/gettext/0.15.nix | 3 ++- pkgs/development/libraries/gettext/0.16.x.nix | 3 ++- pkgs/development/libraries/gettext/default.nix | 11 ++++++----- pkgs/lib/default.nix | 1 + pkgs/top-level/all-packages.nix | 2 +- 6 files changed, 14 insertions(+), 9 deletions(-) diff --git a/pkgs/development/libraries/gettext/0.14.6.nix b/pkgs/development/libraries/gettext/0.14.6.nix index fefa8dbe5c7..bceacd318ec 100644 --- a/pkgs/development/libraries/gettext/0.14.6.nix +++ b/pkgs/development/libraries/gettext/0.14.6.nix @@ -1,4 +1,5 @@ -{stdenv, fetchurl}: stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "gettext-0.14.6"; src = fetchurl { url = mirror://gnu/gettext/gettext-0.14.6.tar.gz; diff --git a/pkgs/development/libraries/gettext/0.15.nix b/pkgs/development/libraries/gettext/0.15.nix index fec9c348afc..0c417aafe50 100644 --- a/pkgs/development/libraries/gettext/0.15.nix +++ b/pkgs/development/libraries/gettext/0.15.nix @@ -1,4 +1,5 @@ -{stdenv, fetchurl}: stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "gettext-0.15"; src = fetchurl { url = mirror://gnu/gettext/gettext-0.15.tar.gz; diff --git a/pkgs/development/libraries/gettext/0.16.x.nix b/pkgs/development/libraries/gettext/0.16.x.nix index 9e832889e42..d9b8cabef1d 100644 --- a/pkgs/development/libraries/gettext/0.16.x.nix +++ b/pkgs/development/libraries/gettext/0.16.x.nix @@ -1,4 +1,5 @@ -{stdenv, fetchurl}: stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "gettext-0.16.1"; src = fetchurl { url = mirror://gnu/gettext/gettext-0.16.1.tar.gz; diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix index 10d1ced407f..e98d365022f 100644 --- a/pkgs/development/libraries/gettext/default.nix +++ b/pkgs/development/libraries/gettext/default.nix @@ -1,7 +1,8 @@ args: -builtins.listToAttrs [ - { name = "recurseForDerivations"; value = true; } - { name = "0.14.6"; value = (import ./0.14.6.nix) args; } - { name = "0.15"; value = (import ./0.15.nix) args; } - { name = "0.16.x"; value = (import ./0.16.x.nix) args; } +args.lib.listOfListsToAttrs [ + [ "recurseForDerivations" true ] + [ "0.14.6" (import ./0.14.6.nix args) ] + [ "0.15" (import ./0.15.nix args) ] + [ "0.16.x" (import ./0.16.x.nix args) ] + [ "default" (import ./0.16.x.nix args) ] ] diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index ce4fbf12cf4..87948ad2f6f 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -8,6 +8,7 @@ let in rec { + listOfListsToAttrs = ll : builtins.listToAttrs (map (l : { name = (head l); value = (head (tail l)); }) ll); innerSumArgs = f : x : y : (if y == null then (f x) else (innerSumArgs f (x // y))); diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8afad6b24e2..0053a061601 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1736,7 +1736,7 @@ rec { gettext = getVersion "gettext" gettext_alts; gettext_alts = import ../development/libraries/gettext { - inherit fetchurl stdenv; + inherit fetchurl stdenv lib; }; gd = import ../development/libraries/gd { From beceee6b912bc9fc6b561cdcc02b5d6b1f071cc7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:06:13 +0000 Subject: [PATCH 013/320] Fixed a typo in kernel selection code svn path=/nixpkgs/branches/stdenv-updates/; revision=9735 --- 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 0053a061601..fe649261641 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2956,7 +2956,7 @@ rec { kernel = (if (getConfig ["kernel" "version"] "2.6.21") == "2.6.22" then kernel_2_6_22 else if (getConfig ["kernel" "version"] "2.6.21") == "2.6.23" then - kernel_2_6_23 else kernel); + kernel_2_6_23 else kernel_2_6_21); kernel_2_6_20 = import ../os-specific/linux/kernel/linux-2.6.20.nix { inherit fetchurl stdenv perl mktemp module_init_tools; From 51a3cde784c9cc7345744f7e3c58fba9bee8b97b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:34:27 +0000 Subject: [PATCH 014/320] Now all the files setup-new-2.sh, setup-new.sh and setup.sh are the same file. svn path=/nixpkgs/branches/stdenv-updates/; revision=9736 --- pkgs/stdenv/generic/setup-new-2.sh | 879 +---------------------------- pkgs/stdenv/generic/setup-new.sh | 831 +-------------------------- pkgs/stdenv/generic/setup.sh | 167 ++++-- 3 files changed, 130 insertions(+), 1747 deletions(-) mode change 100644 => 120000 pkgs/stdenv/generic/setup-new-2.sh mode change 100644 => 120000 pkgs/stdenv/generic/setup-new.sh diff --git a/pkgs/stdenv/generic/setup-new-2.sh b/pkgs/stdenv/generic/setup-new-2.sh deleted file mode 100644 index 5e330846a4d..00000000000 --- a/pkgs/stdenv/generic/setup-new-2.sh +++ /dev/null @@ -1,878 +0,0 @@ -set -e - -test -z $NIX_GCC && NIX_GCC=@gcc@ - -if [ -z ${system##*cygwin*} ]; then - PATH_DELIMITER=';' -else - PATH_DELIMITER=':' -fi - -addToSearchPathWithCustomDelimiter() { - local delimiter=$1 - local varName=$2 - local needDir=$3 - local addDir=${4:-$needDir} - local prefix=$5 - if [ -d $prefix$needDir ]; then - if [ -z ${!varName} ]; then - eval export ${varName}=${prefix}$addDir - else - eval export ${varName}=${!varName}${delimiter}${prefix}$addDir - fi - fi -} - -addToSearchPath() -{ - addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" -} - -# Set up the initial path. -PATH= -for i in $NIX_GCC @initialPath@; do - PATH=$PATH${PATH:+:}$i/bin -done - -if test "$NIX_DEBUG" = "1"; then - echo "Initial path: $PATH" -fi - - -# Execute the pre-hook. -export SHELL=@shell@ -if test -z "$shell"; then - export shell=@shell@ -fi -param1=@param1@ -param2=@param2@ -param3=@param3@ -param4=@param4@ -param5=@param5@ -if test -n "@preHook@"; then - source @preHook@ -fi - - -# Check that the pre-hook initialised SHELL. -if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi - - -# Hack: run gcc's setup hook. -envHooks=() -if test -f $NIX_GCC/nix-support/setup-hook; then - source $NIX_GCC/nix-support/setup-hook -fi - - -# Ensure that the given directories exists. -ensureDir() { - local dir - for dir in "$@"; do - if ! test -x "$dir"; then mkdir -p "$dir"; fi - done -} - -installBin() { - ensureDir $out/bin - cp "$@" $out/bin -} - -assertEnvExists(){ - if test -z "${!1}"; then - msg=${2:-error: assertion failed: env var $1 is required} - echo $msg >&2; exit 1 - fi -} - -# Called when some build action fails. If $succeedOnFailure is set, -# create the file `$out/nix-support/failed' to signal failure, and -# exit normally. Otherwise, exit with failure. -fail() { - exitCode=$? - if test "$succeedOnFailure" = 1; then - ensureDir "$out/nix-support" - touch "$out/nix-support/failed" - exit 0 - else - exit $? - fi -} - - -# Allow the caller to augment buildInputs (it's not always possible to -# do this before the call to setup.sh, since the PATH is empty at that -# point; here we have a basic Unix environment). -eval "$addInputsHook" - - -# Recursively find all build inputs. -findInputs() -{ - local pkg=$1 - - case $pkgs in - *\ $pkg\ *) - return 0 - ;; - esac - - pkgs="$pkgs $pkg " - - if test -f $pkg/nix-support/setup-hook; then - source $pkg/nix-support/setup-hook - fi - - if test -f $pkg/nix-support/propagated-build-inputs; then - for i in $(cat $pkg/nix-support/propagated-build-inputs); do - findInputs $i - done - fi -} - -pkgs="" -if test -n "$buildinputs"; then - buildInputs="$buildinputs" # compatibility -fi -for i in $buildInputs $propagatedBuildInputs; do - findInputs $i -done - - -# Set the relevant environment variables to point to the build inputs -# found above. -addToEnv() -{ - local pkg=$1 - - if test "$ignoreFailedInputs" != "1" -a -e $1/nix-support/failed; then - echo "failed input $1" >&2 - fail - fi - - if test -d $1/bin; then - export _PATH=$_PATH${_PATH:+:}$1/bin - fi - - for i in "${envHooks[@]}"; do - $i $pkg - done -} - -for i in $pkgs; do - addToEnv $i -done - - -# Add the output as an rpath. -if test "$NIX_NO_SELF_RPATH" != "1"; then - export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS" -fi - - -# Strip debug information by default. -if test -z "$NIX_STRIP_DEBUG"; then - export NIX_STRIP_DEBUG=1 - export NIX_CFLAGS_STRIP="-g0 -Wl,--strip-debug" -fi - - -assertEnvExists NIX_STORE \ - "Error: you have an old version of Nix that does not set the - NIX_STORE variable. This is required for purity checking. - Please upgrade." - -assertEnvExists NIX_BUILD_TOP \ - "Error: you have an old version of Nix that does not set the - NIX_BUILD_TOP variable. This is required for purity checking. - Please upgrade." - - -# Set the TZ (timezone) environment variable, otherwise commands like -# `date' will complain (e.g., `Tue Mar 9 10:01:47 Local time zone must -# be set--see zic manual page 2004'). -export TZ=UTC - - -# Set the prefix. This is generally $out, but it can be overriden, -# for instance if we just want to perform a test build/install to a -# temporary location and write a build report to $out. -if test -z "$prefix"; then - prefix="$out"; -fi - -if test "$useTempPrefix" = "1"; then - prefix="$NIX_BUILD_TOP/tmp_prefix"; -fi - - -# Execute the post-hook. -if test -n "@postHook@"; then - source @postHook@ -fi - -PATH=$_PATH${_PATH:+:}$PATH -if test "$NIX_DEBUG" = "1"; then - echo "Final path: $PATH" -fi - -stripDirs() { - local dirs="$1" - local stripFlags="$2" - local dirsNew= - - for d in ${dirs}; do - if test -d "$prefix/$d"; then - dirsNew="${dirsNew} $prefix/$d " - fi - done - dirs=${dirsNew} - - if test -n "${dirs}"; then - echo $dirs - find $dirs -type f -print0 | xargs -0 strip $stripFlags || true - fi -} - -###################################################################### -# Textual substitution functions. - - -# Some disgusting hackery to escape replacements in Sed substitutions. -# We should really have a tool that replaces literal values by other -# literal values, without any need for escaping. -escapeSed() { - local s="$1" - # The `tr' hack is to escape newlines. Sed handles newlines very - # badly, so we just replace newlines with the magic character 0xff - # (377 octal). So don't use that character in replacements :-P - echo -n "$1" | tr '\012' '\377' | sed -e 's^\\^\\\\^g' -e 's^\xff^\\n^g' -e 's/\^/\\^/g' -e 's/&/\\&/g' -} - - -substitute() { - local input="$1" - local output="$2" - - local -a params=("$@") - - local sedScript=$NIX_BUILD_TOP/.sedargs - rm -f $sedScript - touch $sedScript - - local n p pattern replacement varName - - for ((n = 2; n < ${#params[*]}; n += 1)); do - p=${params[$n]} - - if test "$p" = "--replace"; then - pattern="${params[$((n + 1))]}" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test "$p" = "--subst-var"; then - varName="${params[$((n + 1))]}" - pattern="@$varName@" - replacement="${!varName}" - n=$((n + 1)) - fi - - if test "$p" = "--subst-var-by"; then - pattern="@${params[$((n + 1))]}@" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - replacement="$(escapeSed "$replacement")" - - echo "s^$pattern^$replacement^g" >> $sedScript - done - - sed -f $sedScript < "$input" > "$output".tmp - if test -x "$output"; then - chmod +x "$output".tmp - fi - mv -f "$output".tmp "$output" -} - - -substituteInPlace() { - local fileName="$1" - shift - substitute "$fileName" "$fileName" "$@" -} - - -substituteAll() { - local input="$1" - local output="$2" - - # Select all environment variables that start with a lowercase character. - for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do - if test "$NIX_DEBUG" = "1"; then - echo "$envVar -> ${!envVar}" - fi - args="$args --subst-var $envVar" - done - - substitute "$input" "$output" $args -} - - -###################################################################### -# What follows is the generic builder. - - -nestingLevel=0 - -startNest() { - nestingLevel=$(($nestingLevel + 1)) - echo -en "\e[$1p" -} - -stopNest() { - nestingLevel=$(($nestingLevel - 1)) - echo -en "\e[q" -} - -header() { - startNest "$2" - echo "$1" -} - -# Make sure that even when we exit abnormally, the original nesting -# level is properly restored. -closeNest() { - while test $nestingLevel -gt 0; do - stopNest - done -} - -trap "closeNest" EXIT - - -# This function is useful for debugging broken Nix builds. It dumps -# all environment variables to a file `env-vars' in the build -# directory. If the build fails and the `-K' option is used, you can -# then go to the build directory and source in `env-vars' to reproduce -# the environment used for building. -dumpVars() { - if test "$noDumpEnvVars" != "1"; then - export > $NIX_BUILD_TOP/env-vars - fi -} - - -# Redirect stdout/stderr to a named pipe connected to a `tee' process -# that writes the specified file (and also to our original stdout). -# The original stdout is saved in descriptor 3. -startLog() { - local logFile=${logNr}_$1 - logNr=$((logNr + 1)) - if test "$logPhases" = 1; then - ensureDir $logDir - - exec 3>&1 - - if test "$dontLogThroughTee" != 1; then - # This required named pipes (fifos). - logFifo=$NIX_BUILD_TOP/log_fifo - test -p $logFifo || mkfifo $logFifo - startLogWrite "$logDir/$logFile" "$logFifo" - exec > $logFifo 2>&1 - else - exec > $logDir/$logFile 2>&1 - fi - fi -} - -# Factored into a separate function so that it can be overriden. -startLogWrite() { - tee "$1" < "$2" & - logWriterPid=$! -} - - -if test -z "$logDir"; then - logDir=$out/log -fi - -logNr=0 - -# Restore the original stdout/stderr. -stopLog() { - if test "$logPhases" = 1; then - exec >&3 2>&1 - - # Wait until the tee process has died. Otherwise output from - # different phases may be mixed up. - if test -n "$logWriterPid"; then - wait $logWriterPid - logWriterPid= - rm $logFifo - fi - fi -} - - -# Utility function: return the base name of the given path, with the -# prefix `HASH-' removed, if present. -stripHash() { - strippedName=$(basename $1); - if echo "$strippedName" | grep -q '^[a-z0-9]\{32\}-'; then - strippedName=$(echo "$strippedName" | cut -c34-) - fi -} - - -unpackFile() { - local file=$1 - local cmd - - header "unpacking source archive $file" 3 - - case $file in - *.tar) - tar xvf $file || fail - ;; - *.tar.gz | *.tgz | *.tar.Z) - gunzip < $file | tar xvf - || fail - ;; - *.tar.bz2 | *.tbz2) - bunzip2 < $file | tar xvf - || fail - ;; - *.zip) - unzip $file || fail - ;; - *) - if test -d "$file"; then - stripHash $file - cp -prvd $file $strippedName || fail - else - if test -n "$findUnpacker"; then - $findUnpacker $1; - fi - if test -z "$unpackCmd"; then - echo "source archive $file has unknown type" - exit 1 - fi - eval "$unpackCmd" || fail - fi - ;; - esac - - stopNest -} - - -unpackW() { - if test -n "$unpackPhase"; then - eval "$unpackPhase" - return - fi - - if test -z "$srcs"; then - if test -z "$src"; then - echo 'variable $src or $srcs should point to the source' - exit 1 - fi - srcs="$src" - fi - - # To determine the source directory created by unpacking the - # source archives, we record the contents of the current - # directory, then look below which directory got added. Yeah, - # it's rather hacky. - local dirsBefore="" - for i in *; do - if test -d "$i"; then - dirsBefore="$dirsBefore $i " - fi - done - - # Unpack all source archives. - for i in $srcs; do - unpackFile $i - done - - # Find the source directory. - if test -n "$setSourceRoot"; then - eval "$setSourceRoot" - else - sourceRoot= - for i in *; do - if test -d "$i"; then - case $dirsBefore in - *\ $i\ *) - ;; - *) - if test -n "$sourceRoot"; then - echo "unpacker produced multiple directories" - exit 1 - fi - sourceRoot=$i - ;; - esac - fi - done - fi - - if test -z "$sourceRoot"; then - echo "unpacker appears to have produced no directories" - exit 1 - fi - - echo "source root is $sourceRoot" - - # By default, add write permission to the sources. This is often - # necessary when sources have been copied from other store - # locations. - if test "dontMakeSourcesWritable" != 1; then - chmod -R +w $sourceRoot - fi - - eval "$postUnpack" -} - - -unpackPhase() { - sourceRoot=. # don't change to user dir homeless shelter if custom unpackSource does'nt set sourceRoot - header "unpacking sources" - startLog "unpack" - unpackW - stopLog - stopNest - cd $sourceRoot -} - - -patchW() { - if test -n "$patchPhase"; then - eval "$patchPhase" - return - fi - - if test -z "$patchFlags"; then - patchFlags="-p1" - fi - - for i in $patches; do - header "applying patch $i" 3 - local uncompress=cat - case $i in - *.gz) - uncompress=gunzip - ;; - *.bz2) - uncompress=bunzip2 - ;; - esac - $uncompress < $i | patch $patchFlags || fail - stopNest - done -} - - -patchPhase() { - if test -z "$patchPhase" -a -z "$patches"; then return; fi - header "patching sources" - startLog "patch" - patchW - stopLog - stopNest -} - - -fixLibtool() { - sed 's^eval sys_lib_.*search_path=.*^^' < $1 > $1.tmp - mv $1.tmp $1 -} - - -configureW() { - if test -n "$configurePhase"; then - eval "$configurePhase" - return - fi - - eval "$preConfigure" - - if test -z "$configureScript"; then - configureScript=./configure - if ! test -x $configureScript; then - echo "no configure script, doing nothing" - return - fi - fi - - if test -z "$dontFixLibtool"; then - for i in $(find . -name "ltmain.sh"); do - echo "fixing libtool script $i" - fixLibtool $i - done - fi - - if test -z "$dontAddPrefix"; then - configureFlags="${prefixKey:---prefix=}$prefix $configureFlags" - fi - - echo "configure flags: $configureFlags ${configureFlagsArray[@]}" - $configureScript $configureFlags"${configureFlagsArray[@]}" || fail - - eval "$postConfigure" -} - - -configurePhase() { - header "configuring" - startLog "configure" - configureW - stopLog - stopNest -} - - -buildW() { - if test -n "$buildPhase"; then - eval "$buildPhase" - return - fi - - eval "$preBuild" - - echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}" - make \ - $makeFlags "${makeFlagsArray[@]}" \ - $buildFlags "${buildFlagsArray[@]}" || fail - - eval "$postBuild" -} - - -buildPhase() { - if test "$dontBuild" = 1; then - return - fi - header "building" - startLog "build" - buildW - stopLog - stopNest -} - - -checkW() { - if test -n "$checkPhase"; then - eval "$checkPhase" - return - fi - - if test -z "$checkTarget"; then - checkTarget="check" - fi - - echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}" - make \ - $makeFlags "${makeFlagsArray[@]}" \ - $checkFlags "${checkFlagsArray[@]}" $checkTarget || fail -} - - -checkPhase() { - if test "$doCheck" != 1; then - return - fi - header "checking" - startLog "check" - checkW - stopLog - stopNest -} - - -patchELF() { - # Patch all ELF executables and shared libraries. - header "patching ELF executables and libraries" - find "$prefix" \( \ - \( -type f -a -name "*.so*" \) -o \ - \( -type f -a -perm +0100 \) \ - \) -print -exec patchelf --shrink-rpath {} \; - stopNest -} - - -installW() { - if test -n "$installPhase"; then - eval "$installPhase" - return - fi - - eval "$preInstall" - - ensureDir "$prefix" - - if test -z "$installCommand"; then - if test -z "$installTargets"; then - installTargets=install - fi - echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}" - make $installTargets \ - $makeFlags "${makeFlagsArray[@]}" \ - $installFlags "${installFlagsArray[@]}" || fail - else - eval "$installCommand" - fi - - eval "$postInstall" -} - - -installPhase() { - if test "$dontInstall" = 1; then - return - fi - header "installing" - startLog "install" - installW - stopLog - stopNest -} - - -# The fixup phase performs generic, package-independent, Nix-related -# stuff, like running patchelf and setting the -# propagated-build-inputs. It should rarely be overriden. -fixupW() { - if test -n "$fixupPhase"; then - eval "$fixupPhase" - return - fi - - eval "$preFixup" - - forceShare=${forceShare:=man doc info} - if test -n "$forceShare"; then - for d in $forceShare; do - if test -d "$prefix/$d"; then - if test -d "$prefix/share/$d"; then - echo "Both $d/ and share/$d/ exists!" - else - echo Fixing location of $d/ subdirectory - ensureDir $prefix/share - if test -w $prefix/share; then - mv -v $prefix/$d $prefix/share - ln -sv share/$d $prefix - fi - fi - else - echo "No $d/ subdirectory, skipping." - fi - done; - fi - - -# TODO : strip _only_ ELF executables, and return || fail here... - if test -z "$dontStrip"; then - echo "Stripping debuging symbols from files in" - stripDirs "${stripDebugList:-lib}" -S - echo "Stripping all symbols from files in" - stripDirs "${stripAllList:-bin sbin}" -s - fi - - if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then - patchELF "$prefix" - fi - - if test -n "$propagatedBuildInputs"; then - ensureDir "$out/nix-support" - echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" - fi - - if test -n "$setupHook"; then - ensureDir "$out/nix-support" - substituteAll "$setupHook" "$out/nix-support/setup-hook" - fi - - eval "$postFixup" -} - - -fixupPhase() { - if test "$dontFixup" = 1; then - return - fi - header "post-installation fixup" - startLog "fixup" - fixupW - stopLog - stopNest -} - - -distW() { - if test -n "$distPhase"; then - eval "$distPhase" - return - fi - - eval "$preDist" - - if test -z "$distTarget"; then - distTarget="dist" - fi - - echo "dist flags: $distFlags ${distFlagsArray[@]}" - make $distFlags "${distFlagsArray[@]}" $distTarget || fail - - if test "$dontCopyDist" != 1; then - ensureDir "$out/tarballs" - - if test -z "$tarballs"; then - tarballs="*.tar.gz" - fi - - # Note: don't quote $tarballs, since we explicitly permit - # wildcards in there. - cp -pvd $tarballs $out/tarballs - fi - - eval "$postDist" -} - - -distPhase() { - if test "$doDist" != 1; then - return - fi - header "creating distribution" - startLog "dist" - distW - stopLog - stopNest -} - - -genericBuild() { - header "building $out" - - if test -n "$buildCommand"; then - eval "$buildCommand" - return - fi - - if test -z "$phases"; then - phases="unpackPhase patchPhase configurePhase buildPhase checkPhase \ - installPhase fixupPhase distPhase"; - fi - - for i in $phases; do - dumpVars - eval "$i" - done - - stopNest -} - - -dumpVars diff --git a/pkgs/stdenv/generic/setup-new-2.sh b/pkgs/stdenv/generic/setup-new-2.sh new file mode 120000 index 00000000000..a645eb3092b --- /dev/null +++ b/pkgs/stdenv/generic/setup-new-2.sh @@ -0,0 +1 @@ +setup.sh \ No newline at end of file diff --git a/pkgs/stdenv/generic/setup-new.sh b/pkgs/stdenv/generic/setup-new.sh deleted file mode 100644 index 68812e42871..00000000000 --- a/pkgs/stdenv/generic/setup-new.sh +++ /dev/null @@ -1,830 +0,0 @@ -set -e - -test -z $NIX_GCC && NIX_GCC=@gcc@ - - -# Set up the initial path. -PATH= -for i in $NIX_GCC @initialPath@; do - PATH=$PATH${PATH:+:}$i/bin -done - -if test "$NIX_DEBUG" = "1"; then - echo "Initial path: $PATH" -fi - - -# Execute the pre-hook. -export SHELL=@shell@ -if test -z "$shell"; then - export shell=@shell@ -fi -param1=@param1@ -param2=@param2@ -param3=@param3@ -param4=@param4@ -param5=@param5@ -if test -n "@preHook@"; then - source @preHook@ -fi - - -# Check that the pre-hook initialised SHELL. -if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi - - -# Hack: run gcc's setup hook. -envHooks=() -if test -f $NIX_GCC/nix-support/setup-hook; then - source $NIX_GCC/nix-support/setup-hook -fi - - -# Ensure that the given directories exists. -ensureDir() { - local dir - for dir in "$@"; do - if ! test -x "$dir"; then mkdir -p "$dir"; fi - done -} - - -# Called when some build action fails. If $succeedOnFailure is set, -# create the file `$out/nix-support/failed' to signal failure, and -# exit normally. Otherwise, exit with failure. -fail() { - exitCode=$? - if test "$succeedOnFailure" = 1; then - ensureDir "$out/nix-support" - touch "$out/nix-support/failed" - exit 0 - else - exit $? - fi -} - - -# Allow the caller to augment buildInputs (it's not always possible to -# do this before the call to setup.sh, since the PATH is empty at that -# point; here we have a basic Unix environment). -eval "$addInputsHook" - - -# Recursively find all build inputs. -findInputs() -{ - local pkg=$1 - - case $pkgs in - *\ $pkg\ *) - return 0 - ;; - esac - - pkgs="$pkgs $pkg " - - if test -f $pkg/nix-support/setup-hook; then - source $pkg/nix-support/setup-hook - fi - - if test -f $pkg/nix-support/propagated-build-inputs; then - for i in $(cat $pkg/nix-support/propagated-build-inputs); do - findInputs $i - done - fi -} - -pkgs="" -if test -n "$buildinputs"; then - buildInputs="$buildinputs" # compatibility -fi -for i in $buildInputs $propagatedBuildInputs; do - findInputs $i -done - - -# Set the relevant environment variables to point to the build inputs -# found above. -addToEnv() -{ - local pkg=$1 - - if test "$ignoreFailedInputs" != "1" -a -e $1/nix-support/failed; then - echo "failed input $1" >&2 - fail - fi - - if test -d $1/bin; then - export _PATH=$_PATH${_PATH:+:}$1/bin - fi - - for i in "${envHooks[@]}"; do - $i $pkg - done -} - -for i in $pkgs; do - addToEnv $i -done - - -# Add the output as an rpath. -if test "$NIX_NO_SELF_RPATH" != "1"; then - export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS" -fi - - -# Strip debug information by default. -if test -z "$NIX_STRIP_DEBUG"; then - export NIX_STRIP_DEBUG=1 - export NIX_CFLAGS_STRIP="-g0 -Wl,--strip-debug" -fi - - -# Do we know where the store is? This is required for purity checking. -if test -z "$NIX_STORE"; then - echo "Error: you have an old version of Nix that does not set the" \ - "NIX_STORE variable. Please upgrade." >&2 - exit 1 -fi - - -# We also need to know the root of the build directory for purity checking. -if test -z "$NIX_BUILD_TOP"; then - echo "Error: you have an old version of Nix that does not set the" \ - "NIX_BUILD_TOP variable. Please upgrade." >&2 - exit 1 -fi - - -# Set the TZ (timezone) environment variable, otherwise commands like -# `date' will complain (e.g., `Tue Mar 9 10:01:47 Local time zone must -# be set--see zic manual page 2004'). -export TZ=UTC - - -# Set the prefix. This is generally $out, but it can be overriden, -# for instance if we just want to perform a test build/install to a -# temporary location and write a build report to $out. -if test -z "$prefix"; then - prefix="$out"; -fi - -if test "$useTempPrefix" = "1"; then - prefix="$NIX_BUILD_TOP/tmp_prefix"; -fi - - -# Execute the post-hook. -if test -n "@postHook@"; then - source @postHook@ -fi - -PATH=$_PATH${_PATH:+:}$PATH -if test "$NIX_DEBUG" = "1"; then - echo "Final path: $PATH" -fi - - -###################################################################### -# Textual substitution functions. - - -# Some disgusting hackery to escape replacements in Sed substitutions. -# We should really have a tool that replaces literal values by other -# literal values, without any need for escaping. -escapeSed() { - local s="$1" - # The `tr' hack is to escape newlines. Sed handles newlines very - # badly, so we just replace newlines with the magic character 0xff - # (377 octal). So don't use that character in replacements :-P - echo -n "$1" | tr '\012' '\377' | sed -e 's^\\^\\\\^g' -e 's^\xff^\\n^g' -e 's/\^/\\^/g' -e 's/&/\\&/g' -} - - -substitute() { - local input="$1" - local output="$2" - - local -a params=("$@") - - local sedScript=$NIX_BUILD_TOP/.sedargs - rm -f $sedScript - touch $sedScript - - local n p pattern replacement varName - - for ((n = 2; n < ${#params[*]}; n += 1)); do - p=${params[$n]} - - if test "$p" = "--replace"; then - pattern="${params[$((n + 1))]}" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test "$p" = "--subst-var"; then - varName="${params[$((n + 1))]}" - pattern="@$varName@" - replacement="${!varName}" - n=$((n + 1)) - fi - - if test "$p" = "--subst-var-by"; then - pattern="@${params[$((n + 1))]}@" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - replacement="$(escapeSed "$replacement")" - - echo "s^$pattern^$replacement^g" >> $sedScript - done - - sed -f $sedScript < "$input" > "$output".tmp - if test -x "$output"; then - chmod +x "$output".tmp - fi - mv -f "$output".tmp "$output" -} - - -substituteInPlace() { - local fileName="$1" - shift - substitute "$fileName" "$fileName" "$@" -} - - -substituteAll() { - local input="$1" - local output="$2" - - # Select all environment variables that start with a lowercase character. - for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do - if test "$NIX_DEBUG" = "1"; then - echo "$envVar -> ${!envVar}" - fi - args="$args --subst-var $envVar" - done - - substitute "$input" "$output" $args -} - - -###################################################################### -# What follows is the generic builder. - - -nestingLevel=0 - -startNest() { - nestingLevel=$(($nestingLevel + 1)) - echo -en "\e[$1p" -} - -stopNest() { - nestingLevel=$(($nestingLevel - 1)) - echo -en "\e[q" -} - -header() { - startNest "$2" - echo "$1" -} - -# Make sure that even when we exit abnormally, the original nesting -# level is properly restored. -closeNest() { - while test $nestingLevel -gt 0; do - stopNest - done -} - -trap "closeNest" EXIT - - -# This function is useful for debugging broken Nix builds. It dumps -# all environment variables to a file `env-vars' in the build -# directory. If the build fails and the `-K' option is used, you can -# then go to the build directory and source in `env-vars' to reproduce -# the environment used for building. -dumpVars() { - if test "$noDumpEnvVars" != "1"; then - export > $NIX_BUILD_TOP/env-vars - fi -} - - -# Redirect stdout/stderr to a named pipe connected to a `tee' process -# that writes the specified file (and also to our original stdout). -# The original stdout is saved in descriptor 3. -startLog() { - local logFile=${logNr}_$1 - logNr=$((logNr + 1)) - if test "$logPhases" = 1; then - ensureDir $logDir - - exec 3>&1 - - if test "$dontLogThroughTee" != 1; then - # This required named pipes (fifos). - logFifo=$NIX_BUILD_TOP/log_fifo - test -p $logFifo || mkfifo $logFifo - startLogWrite "$logDir/$logFile" "$logFifo" - exec > $logFifo 2>&1 - else - exec > $logDir/$logFile 2>&1 - fi - fi -} - -# Factored into a separate function so that it can be overriden. -startLogWrite() { - tee "$1" < "$2" & - logWriterPid=$! -} - - -if test -z "$logDir"; then - logDir=$out/log -fi - -logNr=0 - -# Restore the original stdout/stderr. -stopLog() { - if test "$logPhases" = 1; then - exec >&3 2>&1 - - # Wait until the tee process has died. Otherwise output from - # different phases may be mixed up. - if test -n "$logWriterPid"; then - wait $logWriterPid - logWriterPid= - rm $logFifo - fi - fi -} - - -# Utility function: return the base name of the given path, with the -# prefix `HASH-' removed, if present. -stripHash() { - strippedName=$(basename $1); - if echo "$strippedName" | grep -q '^[a-z0-9]\{32\}-'; then - strippedName=$(echo "$strippedName" | cut -c34-) - fi -} - - -unpackFile() { - local file=$1 - local cmd - - header "unpacking source archive $file" 3 - - case $file in - *.tar) - tar xvf $file || fail - ;; - *.tar.gz | *.tgz | *.tar.Z) - gunzip < $file | tar xvf - || fail - ;; - *.tar.bz2 | *.tbz2) - bunzip2 < $file | tar xvf - || fail - ;; - *.zip) - unzip $file || fail - ;; - *) - if test -d "$file"; then - stripHash $file - cp -prvd $file $strippedName || fail - else - if test -n "$findUnpacker"; then - $findUnpacker $1; - fi - if test -z "$unpackCmd"; then - echo "source archive $file has unknown type" - exit 1 - fi - eval "$unpackCmd" || fail - fi - ;; - esac - - stopNest -} - - -unpackW() { - if test -n "$unpackPhase"; then - eval "$unpackPhase" - return - fi - - if test -z "$srcs"; then - if test -z "$src"; then - echo 'variable $src or $srcs should point to the source' - exit 1 - fi - srcs="$src" - fi - - # To determine the source directory created by unpacking the - # source archives, we record the contents of the current - # directory, then look below which directory got added. Yeah, - # it's rather hacky. - local dirsBefore="" - for i in *; do - if test -d "$i"; then - dirsBefore="$dirsBefore $i " - fi - done - - # Unpack all source archives. - for i in $srcs; do - unpackFile $i - done - - # Find the source directory. - if test -n "$setSourceRoot"; then - eval "$setSourceRoot" - else - sourceRoot= - for i in *; do - if test -d "$i"; then - case $dirsBefore in - *\ $i\ *) - ;; - *) - if test -n "$sourceRoot"; then - echo "unpacker produced multiple directories" - exit 1 - fi - sourceRoot=$i - ;; - esac - fi - done - fi - - if test -z "$sourceRoot"; then - echo "unpacker appears to have produced no directories" - exit 1 - fi - - echo "source root is $sourceRoot" - - # By default, add write permission to the sources. This is often - # necessary when sources have been copied from other store - # locations. - if test "dontMakeSourcesWritable" != 1; then - chmod -R +w $sourceRoot - fi - - eval "$postUnpack" -} - - -unpackPhase() { - header "unpacking sources" - startLog "unpack" - unpackW - stopLog - stopNest -} - - -patchW() { - if test -n "$patchPhase"; then - eval "$patchPhase" - return - fi - - if test -z "$patchFlags"; then - patchFlags="-p1" - fi - - for i in $patches; do - header "applying patch $i" 3 - local uncompress=cat - case $i in - *.gz) - uncompress=gunzip - ;; - *.bz2) - uncompress=bunzip2 - ;; - esac - $uncompress < $i | patch $patchFlags || fail - stopNest - done -} - - -patchPhase() { - if test -z "$patchPhase" -a -z "$patches"; then return; fi - header "patching sources" - startLog "patch" - patchW - stopLog - stopNest -} - - -fixLibtool() { - sed 's^eval sys_lib_.*search_path=.*^^' < $1 > $1.tmp - mv $1.tmp $1 -} - - -configureW() { - if test -n "$configurePhase"; then - eval "$configurePhase" - return - fi - - eval "$preConfigure" - - if test -z "$configureScript"; then - configureScript=./configure - if ! test -x $configureScript; then - echo "no configure script, doing nothing" - return - fi - fi - - if test -z "$dontFixLibtool"; then - for i in $(find . -name "ltmain.sh"); do - echo "fixing libtool script $i" - fixLibtool $i - done - fi - - if test -z "$dontAddPrefix"; then - configureFlags="--prefix=$prefix $configureFlags" - fi - - echo "configure flags: $configureFlags ${configureFlagsArray[@]}" - $configureScript $configureFlags"${configureFlagsArray[@]}" || fail - - eval "$postConfigure" -} - - -configurePhase() { - header "configuring" - startLog "configure" - configureW - stopLog - stopNest -} - - -buildW() { - if test -n "$buildPhase"; then - eval "$buildPhase" - return - fi - - eval "$preBuild" - - echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}" - make \ - $makeFlags "${makeFlagsArray[@]}" \ - $buildFlags "${buildFlagsArray[@]}" || fail - - eval "$postBuild" -} - - -buildPhase() { - if test "$dontBuild" = 1; then - return - fi - header "building" - startLog "build" - buildW - stopLog - stopNest -} - - -checkW() { - if test -n "$checkPhase"; then - eval "$checkPhase" - return - fi - - if test -z "$checkTarget"; then - checkTarget="check" - fi - - echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}" - make \ - $makeFlags "${makeFlagsArray[@]}" \ - $checkFlags "${checkFlagsArray[@]}" $checkTarget || fail -} - - -checkPhase() { - if test "$doCheck" != 1; then - return - fi - header "checking" - startLog "check" - checkW - stopLog - stopNest -} - - -patchELF() { - # Patch all ELF executables and shared libraries. - header "patching ELF executables and libraries" - find "$prefix" \( \ - \( -type f -a -name "*.so*" \) -o \ - \( -type f -a -perm +0100 \) \ - \) -print -exec patchelf --shrink-rpath {} \; - stopNest -} - - -installW() { - if test -n "$installPhase"; then - eval "$installPhase" - return - fi - - eval "$preInstall" - - ensureDir "$prefix" - - if test -z "$installCommand"; then - if test -z "$installTargets"; then - installTargets=install - fi - echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}" - make $installTargets \ - $makeFlags "${makeFlagsArray[@]}" \ - $installFlags "${installFlagsArray[@]}" || fail - else - eval "$installCommand" - fi - - eval "$postInstall" -} - - -installPhase() { - if test "$dontInstall" = 1; then - return - fi - header "installing" - startLog "install" - installW - stopLog - stopNest -} - - -# The fixup phase performs generic, package-independent, Nix-related -# stuff, like running patchelf and setting the -# propagated-build-inputs. It should rarely be overriden. -fixupW() { - if test -n "$fixupPhase"; then - eval "$fixupPhase" - return - fi - - eval "$preFixup" - -# TODO : strip _only_ ELF executables, and return || fail here... - if test -z "$dontStrip"; then - test -d "$prefix/lib" && stripDebug="$prefix/lib" - - if test -n "$stripDebug"; then - find "$stripDebug" -type f -print0 | - xargs -0 strip --strip-debug --verbose || true - fi - - test -d "$prefix/bin" && stripAll="$prefix/bin" - test -d "$prefix/sbin" && stripAll="${stripAll} $prefix/sbin" - if test -n "$stripAll"; then - find "$prefix/bin" "$prefix/sbin" -type f -print0 | - xargs -0 strip --strip-all --verbose || true - fi - fi - - if test -z "$dontFixupShare"; then - for dir in doc info man; do - if test -d "$prefix/$dir"; then - if test -d "$prefix/share/$dir"; then - echo Both "$prefix/$dir" and "$prefix/share/$dir" exists! - fail - else - echo Fixing location of $dir/ subdirectory - ensureDir "$prefix/share" - mv -v "$prefix/$dir" "$prefix/share" - ln -sv "share/$dir" "$prefix" - fi - fi - done - fi - - if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then - patchELF "$prefix" - fi - - if test -n "$propagatedBuildInputs"; then - ensureDir "$out/nix-support" - echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" - fi - - eval "$postFixup" -} - - -fixupPhase() { - if test "$dontFixup" = 1; then - return - fi - header "post-installation fixup" - startLog "fixup" - fixupW - stopLog - stopNest -} - - -distW() { - if test -n "$distPhase"; then - eval "$distPhase" - return - fi - - eval "$preDist" - - if test -z "$distTarget"; then - distTarget="dist" - fi - - echo "dist flags: $distFlags ${distFlagsArray[@]}" - make $distFlags "${distFlagsArray[@]}" $distTarget || fail - - if test "$dontCopyDist" != 1; then - ensureDir "$out/tarballs" - - if test -z "$tarballs"; then - tarballs="*.tar.gz" - fi - - # Note: don't quote $tarballs, since we explicitly permit - # wildcards in there. - cp -pvd $tarballs $out/tarballs - fi - - eval "$postDist" -} - - -distPhase() { - if test "$doDist" != 1; then - return - fi - header "creating distribution" - startLog "dist" - distW - stopLog - stopNest -} - - -genericBuild() { - header "building $out" - - if test -n "$buildCommand"; then - eval "$buildCommand" - return - fi - - unpackPhase - cd $sourceRoot - - if test -z "$phases"; then - phases="patchPhase configurePhase buildPhase checkPhase \ - installPhase fixupPhase distPhase"; - fi - - for i in $phases; do - dumpVars - eval "$i" - done - - stopNest -} - - -dumpVars diff --git a/pkgs/stdenv/generic/setup-new.sh b/pkgs/stdenv/generic/setup-new.sh new file mode 120000 index 00000000000..a645eb3092b --- /dev/null +++ b/pkgs/stdenv/generic/setup-new.sh @@ -0,0 +1 @@ +setup.sh \ No newline at end of file diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index b6814aa410f..5e330846a4d 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -2,6 +2,31 @@ set -e test -z $NIX_GCC && NIX_GCC=@gcc@ +if [ -z ${system##*cygwin*} ]; then + PATH_DELIMITER=';' +else + PATH_DELIMITER=':' +fi + +addToSearchPathWithCustomDelimiter() { + local delimiter=$1 + local varName=$2 + local needDir=$3 + local addDir=${4:-$needDir} + local prefix=$5 + if [ -d $prefix$needDir ]; then + if [ -z ${!varName} ]; then + eval export ${varName}=${prefix}$addDir + else + eval export ${varName}=${!varName}${delimiter}${prefix}$addDir + fi + fi +} + +addToSearchPath() +{ + addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" +} # Set up the initial path. PATH= @@ -39,7 +64,7 @@ if test -f $NIX_GCC/nix-support/setup-hook; then source $NIX_GCC/nix-support/setup-hook fi - + # Ensure that the given directories exists. ensureDir() { local dir @@ -48,6 +73,17 @@ ensureDir() { done } +installBin() { + ensureDir $out/bin + cp "$@" $out/bin +} + +assertEnvExists(){ + if test -z "${!1}"; then + msg=${2:-error: assertion failed: env var $1 is required} + echo $msg >&2; exit 1 + fi +} # Called when some build action fails. If $succeedOnFailure is set, # create the file `$out/nix-support/failed' to signal failure, and @@ -80,13 +116,13 @@ findInputs() return 0 ;; esac - + pkgs="$pkgs $pkg " if test -f $pkg/nix-support/setup-hook; then source $pkg/nix-support/setup-hook fi - + if test -f $pkg/nix-support/propagated-build-inputs; then for i in $(cat $pkg/nix-support/propagated-build-inputs); do findInputs $i @@ -141,20 +177,15 @@ if test -z "$NIX_STRIP_DEBUG"; then fi -# Do we know where the store is? This is required for purity checking. -if test -z "$NIX_STORE"; then - echo "Error: you have an old version of Nix that does not set the" \ - "NIX_STORE variable. Please upgrade." >&2 - exit 1 -fi +assertEnvExists NIX_STORE \ + "Error: you have an old version of Nix that does not set the + NIX_STORE variable. This is required for purity checking. + Please upgrade." - -# We also need to know the root of the build directory for purity checking. -if test -z "$NIX_BUILD_TOP"; then - echo "Error: you have an old version of Nix that does not set the" \ - "NIX_BUILD_TOP variable. Please upgrade." >&2 - exit 1 -fi +assertEnvExists NIX_BUILD_TOP \ + "Error: you have an old version of Nix that does not set the + NIX_BUILD_TOP variable. This is required for purity checking. + Please upgrade." # Set the TZ (timezone) environment variable, otherwise commands like @@ -185,11 +216,40 @@ if test "$NIX_DEBUG" = "1"; then echo "Final path: $PATH" fi +stripDirs() { + local dirs="$1" + local stripFlags="$2" + local dirsNew= + + for d in ${dirs}; do + if test -d "$prefix/$d"; then + dirsNew="${dirsNew} $prefix/$d " + fi + done + dirs=${dirsNew} + + if test -n "${dirs}"; then + echo $dirs + find $dirs -type f -print0 | xargs -0 strip $stripFlags || true + fi +} ###################################################################### # Textual substitution functions. +# Some disgusting hackery to escape replacements in Sed substitutions. +# We should really have a tool that replaces literal values by other +# literal values, without any need for escaping. +escapeSed() { + local s="$1" + # The `tr' hack is to escape newlines. Sed handles newlines very + # badly, so we just replace newlines with the magic character 0xff + # (377 octal). So don't use that character in replacements :-P + echo -n "$1" | tr '\012' '\377' | sed -e 's^\\^\\\\^g' -e 's^\xff^\\n^g' -e 's/\^/\\^/g' -e 's/&/\\&/g' +} + + substitute() { local input="$1" local output="$2" @@ -201,31 +261,32 @@ substitute() { touch $sedScript local n p pattern replacement varName - + for ((n = 2; n < ${#params[*]}; n += 1)); do p=${params[$n]} if test "$p" = "--replace"; then - pattern=${params[$((n + 1))]} - replacement=${params[$((n + 2))]} + pattern="${params[$((n + 1))]}" + replacement="${params[$((n + 2))]}" n=$((n + 2)) - echo "s^$pattern^$replacement^g" >> $sedScript - sedArgs=("${sedArgs[@]}" "-e" ) fi if test "$p" = "--subst-var"; then - varName=${params[$((n + 1))]} + varName="${params[$((n + 1))]}" + pattern="@$varName@" + replacement="${!varName}" n=$((n + 1)) - echo "s^@${varName}@^${!varName}^g" >> $sedScript fi if test "$p" = "--subst-var-by"; then - varName=${params[$((n + 1))]} - replacement=${params[$((n + 2))]} + pattern="@${params[$((n + 1))]}@" + replacement="${params[$((n + 2))]}" n=$((n + 2)) - echo "s^@${varName}@^$replacement^g" >> $sedScript fi + replacement="$(escapeSed "$replacement")" + + echo "s^$pattern^$replacement^g" >> $sedScript done sed -f $sedScript < "$input" > "$output".tmp @@ -246,7 +307,7 @@ substituteInPlace() { substituteAll() { local input="$1" local output="$2" - + # Select all environment variables that start with a lowercase character. for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do if test "$NIX_DEBUG" = "1"; then @@ -256,7 +317,7 @@ substituteAll() { done substitute "$input" "$output" $args -} +} ###################################################################### @@ -476,11 +537,13 @@ unpackW() { unpackPhase() { + sourceRoot=. # don't change to user dir homeless shelter if custom unpackSource does'nt set sourceRoot header "unpacking sources" startLog "unpack" unpackW stopLog stopNest + cd $sourceRoot } @@ -551,7 +614,7 @@ configureW() { fi if test -z "$dontAddPrefix"; then - configureFlags="--prefix=$prefix $configureFlags" + configureFlags="${prefixKey:---prefix=}$prefix $configureFlags" fi echo "configure flags: $configureFlags ${configureFlagsArray[@]}" @@ -577,7 +640,7 @@ buildW() { fi eval "$preBuild" - + echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}" make \ $makeFlags "${makeFlagsArray[@]}" \ @@ -688,9 +751,33 @@ fixupW() { eval "$preFixup" - if test -z "$dontStrip" -a "$NIX_STRIP_DEBUG" = 1; then - find "$prefix" -name "*.a" -exec echo stripping {} \; \ - -exec strip -S {} \; || fail + forceShare=${forceShare:=man doc info} + if test -n "$forceShare"; then + for d in $forceShare; do + if test -d "$prefix/$d"; then + if test -d "$prefix/share/$d"; then + echo "Both $d/ and share/$d/ exists!" + else + echo Fixing location of $d/ subdirectory + ensureDir $prefix/share + if test -w $prefix/share; then + mv -v $prefix/$d $prefix/share + ln -sv share/$d $prefix + fi + fi + else + echo "No $d/ subdirectory, skipping." + fi + done; + fi + + +# TODO : strip _only_ ELF executables, and return || fail here... + if test -z "$dontStrip"; then + echo "Stripping debuging symbols from files in" + stripDirs "${stripDebugList:-lib}" -S + echo "Stripping all symbols from files in" + stripDirs "${stripAllList:-bin sbin}" -s fi if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then @@ -702,6 +789,11 @@ fixupW() { echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" fi + if test -n "$setupHook"; then + ensureDir "$out/nix-support" + substituteAll "$setupHook" "$out/nix-support/setup-hook" + fi + eval "$postFixup" } @@ -725,7 +817,7 @@ distW() { fi eval "$preDist" - + if test -z "$distTarget"; then distTarget="dist" fi @@ -769,11 +861,8 @@ genericBuild() { return fi - unpackPhase - cd $sourceRoot - if test -z "$phases"; then - phases="patchPhase configurePhase buildPhase checkPhase \ + phases="unpackPhase patchPhase configurePhase buildPhase checkPhase \ installPhase fixupPhase distPhase"; fi @@ -781,7 +870,7 @@ genericBuild() { dumpVars eval "$i" done - + stopNest } From a4326fe9dc2ce4b4f63af3b40c1b3b7abe3032c3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:34:34 +0000 Subject: [PATCH 015/320] Removed references to setup-new-2.sh and setup-new.sh from all-packages.nix svn path=/nixpkgs/branches/stdenv-updates/; revision=9737 --- pkgs/development/compilers/ocaml/default.nix | 2 +- pkgs/top-level/all-packages.nix | 29 +++++++------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/pkgs/development/compilers/ocaml/default.nix b/pkgs/development/compilers/ocaml/default.nix index 74d1378968c..c972a992d5f 100644 --- a/pkgs/development/compilers/ocaml/default.nix +++ b/pkgs/development/compilers/ocaml/default.nix @@ -3,5 +3,5 @@ rec { default = v_3_09_1; v_3_08_0 = import ./3.08.0.nix (args // {stdenv = args.stdenv34;}); v_3_09_1 = import ./3.09.1.nix args; - v_3_10_0 = import ./3.10.0.nix (args // {stdenv = args.stdenvUsingSetupNew2;}); + v_3_10_0 = import ./3.10.0.nix args; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fe649261641..c6b48e09050 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -297,7 +297,7 @@ rec { stdenvNewSetupScript = overrideSetup stdenv ../stdenv/generic/setup-new.sh; substituteAll = import ../build-support/substitute/substitute-all.nix { - stdenv = stdenvNewSetupScript; + inherit stdenv; }; nukeReferences = import ../build-support/nuke-references/default.nix { @@ -667,8 +667,7 @@ rec { }; shebangfix = import ../tools/misc/shebangfix { - inherit perl; - stdenv = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh; + inherit perl stdenv; }; smartmontools = import ../tools/system/smartmontools { @@ -939,23 +938,20 @@ rec { # This new ghc stuff is under heavy development and might change ! - # usage: see ghcPkgUtil.sh - use setup-new2 because of PATH_DELIMITER ghcPkgUtil = runCommand "ghcPkgUtil-internal" { ghcPkgUtil = ../development/libraries/haskell/generic/ghcPkgUtil.sh; } "mkdir -p $out/nix-support; cp $ghcPkgUtil \$out/nix-support/setup-hook;"; ghcsAndLibs = recurseIntoAttrs (import ../development/compilers/ghcs { - inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline; + inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline stdenv; inherit ghcPkgUtil; - stdenv = stdenvUsingSetupNew2; lib = lib_unstable; }); # creates ghc-X-wl wich adds the passed libraries to the env var GHC_PACKAGE_PATH createGhcWrapper = { ghcPackagedLibs ? false, ghc, libraries, name, suffix ? "ghc_wrapper_${ghc.name}" } : import ../development/compilers/ghc/createGhcWrapper { - inherit ghcPackagedLibs ghc name suffix libraries ghcPkgUtil; - stdenv = stdenvUsingSetupNew2; + inherit ghcPackagedLibs ghc name suffix libraries ghcPkgUtil stdenv; }; # the wrappers basically does one thing: It defines GHC_PACKAGE_PATH before calling ghc{i,-pkg} @@ -1078,7 +1074,7 @@ rec { ocaml = getVersion "ocaml" ocaml_alts; ocaml_alts = import ../development/compilers/ocaml { - inherit fetchurl stdenv x11 ncurses stdenvUsingSetupNew2; + inherit fetchurl stdenv x11 ncurses; stdenv34 = overrideGCC stdenv gcc34; }; @@ -1204,9 +1200,8 @@ rec { # This expression is a quick hack now. But perhaps it helps you adding the configuration flags you need? /* php_unstable = (import ../development/interpreters/php_configurable) { - inherit mkDerivationByConfiguration; + inherit mkDerivationByConfiguration stdenv; lib = lib_unstable; - stdenv = stdenvUsingSetupNew2; inherit fetchurl flex bison apacheHttpd mysql; # gettext; inherit libxml2; }; @@ -1686,10 +1681,9 @@ rec { }; facile = import ../development/libraries/facile { - inherit fetchurl; + inherit fetchurl stdenv; # Actually, we don't need this version but we need native-code compilation ocaml = ocaml_alts.v_3_10_0; - stdenv = stdenvUsingSetupNew2; }; ffmpeg = import ../development/libraries/ffmpeg { @@ -2194,12 +2188,11 @@ rec { qt4 = getVersion "qt4" qt4_alts; qt4_alts = import ../development/libraries/qt-4 { inherit fetchurl fetchsvn zlib libjpeg libpng which mysql mesa openssl cups dbus - fontconfig freetype pkgconfig libtiff; + fontconfig freetype pkgconfig libtiff stdenv; inherit (xlibs) xextproto libXft libXrender libXrandr randrproto libXmu libXinerama xineramaproto libXcursor libICE libSM libX11 libXext inputproto fixesproto libXfixes; inherit (gnome) glib; - stdenv = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh; openglSupport = mesaSupported; mysqlSupport = true; }; @@ -3809,8 +3802,7 @@ rec { }; jedit = import ../applications/jedit { - inherit fetchurl ant; - stdenv = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh; + inherit fetchurl ant stdenv; }; joe = import ../applications/editors/joe { @@ -4376,8 +4368,7 @@ rec { shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline saneBackends chmlib python libzip gmp sqlite libidn runCommand lib - openbabel ocaml facile; - stdenv = stdenvUsingSetupNew2; + openbabel ocaml facile stdenv; cdparanoia = cdparanoiaIII; inherit (xlibs) inputproto kbproto scrnsaverproto xextproto xf86miscproto From f2b2932ee24ec5d3af2fafa40224ce0f4c8989d1 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:34:49 +0000 Subject: [PATCH 016/320] Spacing in setup.sh svn path=/nixpkgs/branches/stdenv-updates/; revision=9738 --- pkgs/stdenv/generic/setup.sh | 106 +++++++++++++++++------------------ 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 5e330846a4d..8d8be1ece81 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -9,23 +9,23 @@ else fi addToSearchPathWithCustomDelimiter() { - local delimiter=$1 - local varName=$2 - local needDir=$3 - local addDir=${4:-$needDir} - local prefix=$5 - if [ -d $prefix$needDir ]; then - if [ -z ${!varName} ]; then - eval export ${varName}=${prefix}$addDir - else - eval export ${varName}=${!varName}${delimiter}${prefix}$addDir - fi - fi + local delimiter=$1 + local varName=$2 + local needDir=$3 + local addDir=${4:-$needDir} + local prefix=$5 + if [ -d $prefix$needDir ]; then + if [ -z ${!varName} ]; then + eval export ${varName}=${prefix}$addDir + else + eval export ${varName}=${!varName}${delimiter}${prefix}$addDir + fi + fi } addToSearchPath() { - addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" + addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" } # Set up the initial path. @@ -217,21 +217,21 @@ if test "$NIX_DEBUG" = "1"; then fi stripDirs() { - local dirs="$1" - local stripFlags="$2" - local dirsNew= + local dirs="$1" + local stripFlags="$2" + local dirsNew= - for d in ${dirs}; do - if test -d "$prefix/$d"; then - dirsNew="${dirsNew} $prefix/$d " - fi - done - dirs=${dirsNew} + for d in ${dirs}; do + if test -d "$prefix/$d"; then + dirsNew="${dirsNew} $prefix/$d " + fi + done + dirs=${dirsNew} - if test -n "${dirs}"; then - echo $dirs - find $dirs -type f -print0 | xargs -0 strip $stripFlags || true - fi + if test -n "${dirs}"; then + echo $dirs + find $dirs -type f -print0 | xargs -0 strip $stripFlags || true + fi } ###################################################################### @@ -751,33 +751,33 @@ fixupW() { eval "$preFixup" - forceShare=${forceShare:=man doc info} - if test -n "$forceShare"; then - for d in $forceShare; do - if test -d "$prefix/$d"; then - if test -d "$prefix/share/$d"; then - echo "Both $d/ and share/$d/ exists!" - else - echo Fixing location of $d/ subdirectory - ensureDir $prefix/share - if test -w $prefix/share; then - mv -v $prefix/$d $prefix/share - ln -sv share/$d $prefix - fi - fi - else - echo "No $d/ subdirectory, skipping." - fi - done; - fi + forceShare=${forceShare:=man doc info} + if test -n "$forceShare"; then + for d in $forceShare; do + if test -d "$prefix/$d"; then + if test -d "$prefix/share/$d"; then + echo "Both $d/ and share/$d/ exists!" + else + echo Fixing location of $d/ subdirectory + ensureDir $prefix/share + if test -w $prefix/share; then + mv -v $prefix/$d $prefix/share + ln -sv share/$d $prefix + fi + fi + else + echo "No $d/ subdirectory, skipping." + fi + done; + fi # TODO : strip _only_ ELF executables, and return || fail here... if test -z "$dontStrip"; then - echo "Stripping debuging symbols from files in" - stripDirs "${stripDebugList:-lib}" -S - echo "Stripping all symbols from files in" - stripDirs "${stripAllList:-bin sbin}" -s + echo "Stripping debuging symbols from files in" + stripDirs "${stripDebugList:-lib}" -S + echo "Stripping all symbols from files in" + stripDirs "${stripAllList:-bin sbin}" -s fi if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then @@ -789,10 +789,10 @@ fixupW() { echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" fi - if test -n "$setupHook"; then - ensureDir "$out/nix-support" - substituteAll "$setupHook" "$out/nix-support/setup-hook" - fi + if test -n "$setupHook"; then + ensureDir "$out/nix-support" + substituteAll "$setupHook" "$out/nix-support/setup-hook" + fi eval "$postFixup" } From a6797a6f4e163075600fba46a82b0888431838a4 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:34:56 +0000 Subject: [PATCH 017/320] Removed setup-new-2.sh and setup-new.sh symlinks svn path=/nixpkgs/branches/stdenv-updates/; revision=9739 --- pkgs/stdenv/generic/setup-new-2.sh | 1 - pkgs/stdenv/generic/setup-new.sh | 1 - 2 files changed, 2 deletions(-) delete mode 120000 pkgs/stdenv/generic/setup-new-2.sh delete mode 120000 pkgs/stdenv/generic/setup-new.sh diff --git a/pkgs/stdenv/generic/setup-new-2.sh b/pkgs/stdenv/generic/setup-new-2.sh deleted file mode 120000 index a645eb3092b..00000000000 --- a/pkgs/stdenv/generic/setup-new-2.sh +++ /dev/null @@ -1 +0,0 @@ -setup.sh \ No newline at end of file diff --git a/pkgs/stdenv/generic/setup-new.sh b/pkgs/stdenv/generic/setup-new.sh deleted file mode 120000 index a645eb3092b..00000000000 --- a/pkgs/stdenv/generic/setup-new.sh +++ /dev/null @@ -1 +0,0 @@ -setup.sh \ No newline at end of file From 3e6713db0601329de91b7c3258c9f31d6c52a9dc Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 14:35:02 +0000 Subject: [PATCH 018/320] Removed stdenvUsingSetupNew2; now stdenvNewSetupScript = stdenv svn path=/nixpkgs/branches/stdenv-updates/; revision=9740 --- pkgs/top-level/all-packages.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c6b48e09050..edb9de934b3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -244,8 +244,6 @@ rec { } else defaultStdenv; - stdenvUsingSetupNew2 = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh; - ### BUILD SUPPORT @@ -294,7 +292,7 @@ rec { writeScript = name: text: runCommand name {inherit text;} "echo -n \"$text\" > $out; chmod +x $out"; - stdenvNewSetupScript = overrideSetup stdenv ../stdenv/generic/setup-new.sh; + stdenvNewSetupScript = stdenv; substituteAll = import ../build-support/substitute/substitute-all.nix { inherit stdenv; From dd837dae4e367a2b1be102e79d2969f1b1eb40dd Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 15:17:01 +0000 Subject: [PATCH 019/320] Now all the files setup-new-2.sh, setup-new.sh and setup.sh are the same file. svn path=/nixpkgs/branches/stdenv-updates/; revision=9741 --- pkgs/stdenv/generic/setup-new-2.sh | 1 + 1 file changed, 1 insertion(+) create mode 120000 pkgs/stdenv/generic/setup-new-2.sh diff --git a/pkgs/stdenv/generic/setup-new-2.sh b/pkgs/stdenv/generic/setup-new-2.sh new file mode 120000 index 00000000000..a645eb3092b --- /dev/null +++ b/pkgs/stdenv/generic/setup-new-2.sh @@ -0,0 +1 @@ +setup.sh \ No newline at end of file From 5adba2d3f3a0e2734e46dbee109beb76b2c5a39a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 15:18:56 +0000 Subject: [PATCH 020/320] Removed setup-new-2.sh and setup-new.sh symlinks svn path=/nixpkgs/branches/stdenv-updates/; revision=9742 --- pkgs/stdenv/generic/setup-new-2.sh | 1 - 1 file changed, 1 deletion(-) delete mode 120000 pkgs/stdenv/generic/setup-new-2.sh diff --git a/pkgs/stdenv/generic/setup-new-2.sh b/pkgs/stdenv/generic/setup-new-2.sh deleted file mode 120000 index a645eb3092b..00000000000 --- a/pkgs/stdenv/generic/setup-new-2.sh +++ /dev/null @@ -1 +0,0 @@ -setup.sh \ No newline at end of file From 85ebf00cabb728f91c80f880a99356414cc807df Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 15:19:03 +0000 Subject: [PATCH 021/320] Changed version-related syntax in python, gettext and ocaml svn path=/nixpkgs/branches/stdenv-updates/; revision=9743 --- pkgs/development/compilers/ocaml/default.nix | 12 ++++++------ pkgs/development/interpreters/python/default.nix | 10 +++++----- pkgs/development/libraries/gettext/default.nix | 2 +- pkgs/top-level/all-packages.nix | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkgs/development/compilers/ocaml/default.nix b/pkgs/development/compilers/ocaml/default.nix index c972a992d5f..678a0a677a2 100644 --- a/pkgs/development/compilers/ocaml/default.nix +++ b/pkgs/development/compilers/ocaml/default.nix @@ -1,7 +1,7 @@ args: -rec { - default = v_3_09_1; - v_3_08_0 = import ./3.08.0.nix (args // {stdenv = args.stdenv34;}); - v_3_09_1 = import ./3.09.1.nix args; - v_3_10_0 = import ./3.10.0.nix args; -} +args.stdenv.lib.listOfListsToAttrs [ + [ "3.08.0" (import ./3.08.0.nix (args // {stdenv = args.stdenv34;})) ] + [ "3.09.1" (import ./3.09.1.nix args) ] + [ "3.10.0" (import ./3.10.0.nix args) ] + [ "default" (import ./3.10.0.nix args) ] +] diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 3ac782e1aee..1ca85603a1f 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -1,5 +1,5 @@ -args: rec { - default = v_2_4; - v_2_4 = import ./2.4.nix args; - v_2_5 = import ./2.5 args; -} +args: +args.stdenv.lib.listOfListsToAttrs [ + [ "2.4" (import ./2.4.nix args) ] + [ "2.5" (import ./2.5 args) ] +] diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix index e98d365022f..b0e64639d87 100644 --- a/pkgs/development/libraries/gettext/default.nix +++ b/pkgs/development/libraries/gettext/default.nix @@ -1,5 +1,5 @@ args: -args.lib.listOfListsToAttrs [ +args.stdenv.lib.listOfListsToAttrs [ [ "recurseForDerivations" true ] [ "0.14.6" (import ./0.14.6.nix args) ] [ "0.15" (import ./0.15.nix args) ] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index edb9de934b3..2588306c096 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1728,7 +1728,7 @@ rec { gettext = getVersion "gettext" gettext_alts; gettext_alts = import ../development/libraries/gettext { - inherit fetchurl stdenv lib; + inherit fetchurl stdenv; }; gd = import ../development/libraries/gd { From b37d00ce1f89d4da155b6058ed0c19a06ac74d38 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 15:29:42 +0000 Subject: [PATCH 022/320] Now all the files setup-new-2.sh, setup-new.sh and setup.sh are the same file. svn path=/nixpkgs/branches/stdenv-updates/; revision=9744 --- pkgs/stdenv/generic/setup-new-2.sh | 1 + 1 file changed, 1 insertion(+) create mode 120000 pkgs/stdenv/generic/setup-new-2.sh diff --git a/pkgs/stdenv/generic/setup-new-2.sh b/pkgs/stdenv/generic/setup-new-2.sh new file mode 120000 index 00000000000..a645eb3092b --- /dev/null +++ b/pkgs/stdenv/generic/setup-new-2.sh @@ -0,0 +1 @@ +setup.sh \ No newline at end of file From 784227b421247657b7a40e7ee816b2383c65ec77 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 15:29:48 +0000 Subject: [PATCH 023/320] Removed setup-new-2.sh and setup-new.sh symlinks svn path=/nixpkgs/branches/stdenv-updates/; revision=9745 --- pkgs/stdenv/generic/setup-new-2.sh | 1 - 1 file changed, 1 deletion(-) delete mode 120000 pkgs/stdenv/generic/setup-new-2.sh diff --git a/pkgs/stdenv/generic/setup-new-2.sh b/pkgs/stdenv/generic/setup-new-2.sh deleted file mode 120000 index a645eb3092b..00000000000 --- a/pkgs/stdenv/generic/setup-new-2.sh +++ /dev/null @@ -1 +0,0 @@ -setup.sh \ No newline at end of file From 76f78aaf577282acad668df5cc1187dcad9dcdd7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 17 Nov 2007 15:30:00 +0000 Subject: [PATCH 024/320] ghc upgraded to 6.8.1 svn path=/nixpkgs/branches/stdenv-updates/; revision=9746 --- .../development/compilers/ghc-6.8/default.nix | 19 +++++++++++-------- pkgs/development/compilers/ghc/boot.nix | 1 + pkgs/top-level/all-packages.nix | 7 ++++--- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pkgs/development/compilers/ghc-6.8/default.nix b/pkgs/development/compilers/ghc-6.8/default.nix index 1e1577ea292..7588fbb1375 100644 --- a/pkgs/development/compilers/ghc-6.8/default.nix +++ b/pkgs/development/compilers/ghc-6.8/default.nix @@ -1,24 +1,27 @@ -{stdenv, fetchurl, readline, ghc, perl, m4, gmp, ncurses}: +args: with args; stdenv.mkDerivation (rec { - name = "ghc-6.8.0.20071018"; + name = "ghc-6.8.1"; homepage = "http://www.haskell.org/ghc"; src = map fetchurl [ { url = "${homepage}/dist/stable/dist/${name}-src.tar.bz2"; - md5 = "7e61bd2a55c2d6ed5a6d996d19d3f6bf"; + sha256 = "16gr19bwyjv0fmjdrsj79vqpaxxg5hasni94nwv9d6c85n5myivz"; } { url = "${homepage}/dist/stable/dist/${name}-src-extralibs.tar.bz2"; - md5 = "7b155c1d1e7daa492cc2161b3828a377"; + sha256 = "1h3nc6x4g838mdcirymadmv3fsmp1wh062syb3a8aqv6f468akvm"; } ]; - buildInputs = [ghc readline perl m4]; + buildInputs = [ghc readline perl m4 pkgconfig gtk]; + patchPhase = " + sed -e s@/bin/cat@\$(type -p cat)@ -i configure + "; setupHook = ./setup-hook.sh; meta = { - description = "The Glasgow Haskell Compiler v6.8 (snapshot)"; + description = "The Glasgow Haskell Compiler v6.8.1"; }; postInstall = " @@ -29,7 +32,7 @@ stdenv.mkDerivation (rec { cat $setupHook >> $out/nix-support/setup-hook "; - configureFlags="--with-gmp-libraries=$gmp/lib --with-readline-libraries=\"$readline/lib\""; + #configureFlags="--with-gmp-libraries=${gmp}/lib --with-readline-libraries=${readline}/lib"; # the presence of this file makes Cabal cry for happy while generating makefiles ... preConfigure = " @@ -37,5 +40,5 @@ stdenv.mkDerivation (rec { rm libraries/haskell-src/Language/Haskell/Parser.ly "; - inherit readline gmp ncurses; + dontStrip = 1; }) diff --git a/pkgs/development/compilers/ghc/boot.nix b/pkgs/development/compilers/ghc/boot.nix index 50eff51e063..bcb26327edb 100644 --- a/pkgs/development/compilers/ghc/boot.nix +++ b/pkgs/development/compilers/ghc/boot.nix @@ -16,5 +16,6 @@ stdenv.mkDerivation { }); buildInputs = [perl]; propagatedBuildInputs = [readline ncurses gmp]; + dontStrip = 1; inherit readline ncurses gmp; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2588306c096..c9965c3ef63 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -981,11 +981,12 @@ rec { ghc = ghc661; - ghc68 = lowPrio (appendToName "snapshot" (import ../development/compilers/ghc-6.8 { - inherit fetchurl stdenv readline perl gmp ncurses; + ghc68 = lowPrio (import ../development/compilers/ghc-6.8 { + inherit fetchurl stdenv readline perl gmp ncurses libxml2 libxslt pkgconfig; m4 = gnum4; ghc = ghcboot; - })); + inherit (gtkLibs) gtk; + }); ghc661 = import ../development/compilers/ghc-6.6.1 { inherit fetchurl stdenv readline perl gmp ncurses; From b37f50468088d81237173a2a783098f1bf5178aa Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 19 Nov 2007 17:39:19 +0000 Subject: [PATCH 025/320] * Updated various stdenv packages (grep, gawk, tar, cpio, findutils, pcre). svn path=/nixpkgs/branches/stdenv-updates/; revision=9758 --- .../libraries/{glibc => glibc-2.5}/builder.sh | 0 .../{glibc => glibc-2.5}/default.nix | 0 .../glibc-getcwd-param-MAX.patch | 0 .../{glibc-nptl => glibc-2.5}/glibc-pwd.patch | 0 .../{glibc-nptl => glibc-2.7}/builder.sh | 0 .../{glibc-nptl => glibc-2.7}/default.nix | 0 .../glibc-getcwd-param-MAX.patch | 0 .../{glibc => glibc-2.7}/glibc-pwd.patch | 0 pkgs/development/libraries/pcre/default.nix | 17 ++++---- .../{2.6.23.1.nix => 2.6.23.8.nix} | 6 +-- .../linux/kernel-headers/default.nix | 21 ---------- pkgs/tools/archivers/cpio/default.nix | 6 +-- pkgs/tools/archivers/gnutar/default.nix | 8 ++-- .../archivers/gnutar/gnulib-futimens.patch | 42 ------------------- pkgs/tools/misc/findutils/default.nix | 6 +-- pkgs/tools/text/gawk/default.nix | 6 +-- pkgs/tools/text/gnugrep/default.nix | 6 +-- pkgs/top-level/all-packages.nix | 32 +++++--------- 18 files changed, 38 insertions(+), 112 deletions(-) rename pkgs/development/libraries/{glibc => glibc-2.5}/builder.sh (100%) rename pkgs/development/libraries/{glibc => glibc-2.5}/default.nix (100%) rename pkgs/development/libraries/{glibc-nptl => glibc-2.5}/glibc-getcwd-param-MAX.patch (100%) rename pkgs/development/libraries/{glibc-nptl => glibc-2.5}/glibc-pwd.patch (100%) rename pkgs/development/libraries/{glibc-nptl => glibc-2.7}/builder.sh (100%) rename pkgs/development/libraries/{glibc-nptl => glibc-2.7}/default.nix (100%) rename pkgs/development/libraries/{glibc => glibc-2.7}/glibc-getcwd-param-MAX.patch (100%) rename pkgs/development/libraries/{glibc => glibc-2.7}/glibc-pwd.patch (100%) rename pkgs/os-specific/linux/kernel-headers/{2.6.23.1.nix => 2.6.23.8.nix} (74%) delete mode 100644 pkgs/os-specific/linux/kernel-headers/default.nix delete mode 100644 pkgs/tools/archivers/gnutar/gnulib-futimens.patch diff --git a/pkgs/development/libraries/glibc/builder.sh b/pkgs/development/libraries/glibc-2.5/builder.sh similarity index 100% rename from pkgs/development/libraries/glibc/builder.sh rename to pkgs/development/libraries/glibc-2.5/builder.sh diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc-2.5/default.nix similarity index 100% rename from pkgs/development/libraries/glibc/default.nix rename to pkgs/development/libraries/glibc-2.5/default.nix diff --git a/pkgs/development/libraries/glibc-nptl/glibc-getcwd-param-MAX.patch b/pkgs/development/libraries/glibc-2.5/glibc-getcwd-param-MAX.patch similarity index 100% rename from pkgs/development/libraries/glibc-nptl/glibc-getcwd-param-MAX.patch rename to pkgs/development/libraries/glibc-2.5/glibc-getcwd-param-MAX.patch diff --git a/pkgs/development/libraries/glibc-nptl/glibc-pwd.patch b/pkgs/development/libraries/glibc-2.5/glibc-pwd.patch similarity index 100% rename from pkgs/development/libraries/glibc-nptl/glibc-pwd.patch rename to pkgs/development/libraries/glibc-2.5/glibc-pwd.patch diff --git a/pkgs/development/libraries/glibc-nptl/builder.sh b/pkgs/development/libraries/glibc-2.7/builder.sh similarity index 100% rename from pkgs/development/libraries/glibc-nptl/builder.sh rename to pkgs/development/libraries/glibc-2.7/builder.sh diff --git a/pkgs/development/libraries/glibc-nptl/default.nix b/pkgs/development/libraries/glibc-2.7/default.nix similarity index 100% rename from pkgs/development/libraries/glibc-nptl/default.nix rename to pkgs/development/libraries/glibc-2.7/default.nix diff --git a/pkgs/development/libraries/glibc/glibc-getcwd-param-MAX.patch b/pkgs/development/libraries/glibc-2.7/glibc-getcwd-param-MAX.patch similarity index 100% rename from pkgs/development/libraries/glibc/glibc-getcwd-param-MAX.patch rename to pkgs/development/libraries/glibc-2.7/glibc-getcwd-param-MAX.patch diff --git a/pkgs/development/libraries/glibc/glibc-pwd.patch b/pkgs/development/libraries/glibc-2.7/glibc-pwd.patch similarity index 100% rename from pkgs/development/libraries/glibc/glibc-pwd.patch rename to pkgs/development/libraries/glibc-2.7/glibc-pwd.patch diff --git a/pkgs/development/libraries/pcre/default.nix b/pkgs/development/libraries/pcre/default.nix index 1b4d7fc9093..fef6d239ea0 100644 --- a/pkgs/development/libraries/pcre/default.nix +++ b/pkgs/development/libraries/pcre/default.nix @@ -1,14 +1,13 @@ args: with args; -stdenv.mkDerivation ({ - name = "pcre-7.1"; +stdenv.mkDerivation { + name = "pcre-7.4"; src = fetchurl { - url = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.1.tar.bz2; - sha256 = "0rpkcw07jas3fw6ava3ni5zcrmbncwa8xlsa0lzq6z2iph5510li"; + url = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.4.tar.bz2; + sha256 = "1rdks2h5f3p2d71c4jnxaic1c9gmgsfky80djnafcdbdrhzkiyx5"; }; + configureFlags = + if unicodeSupport then + "--enable-unicode-properties --enable-shared --disable-static" + else ""; } -// (if unicodeSupport then -{ - configureFlags = "--enable-unicode-properties --enable-shared --disable-static"; -} -else {})) diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.23.1.nix b/pkgs/os-specific/linux/kernel-headers/2.6.23.8.nix similarity index 74% rename from pkgs/os-specific/linux/kernel-headers/2.6.23.1.nix rename to pkgs/os-specific/linux/kernel-headers/2.6.23.8.nix index adaa303aa00..b34ec0533be 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.23.1.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.23.8.nix @@ -3,11 +3,11 @@ assert stdenv.isLinux; stdenv.mkDerivation { - name = "linux-headers-2.6.23.1"; + name = "linux-headers-2.6.23.8"; builder = ./builder.sh; src = fetchurl { - url = "mirror://kernel/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2"; - sha256 = "0737g83h7jbrlss8782b17mhc3nfn8qfbh5s71flz8pjxmbbmg1m"; + url = "mirror://kernel/linux/kernel/v2.6/linux-2.6.23.8.tar.bz2"; + sha256 = "1sp2ww2ya0wyyyq0vdxbn6ydllv9gpmzw2yz66llgvgv32cix534"; }; platform = diff --git a/pkgs/os-specific/linux/kernel-headers/default.nix b/pkgs/os-specific/linux/kernel-headers/default.nix deleted file mode 100644 index ef94f1b006c..00000000000 --- a/pkgs/os-specific/linux/kernel-headers/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{stdenv, fetchurl}: - -assert stdenv.isLinux; - -stdenv.mkDerivation { - name = "linux-headers-2.6.20.11"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://kernel/linux/kernel/v2.6/linux-2.6.20.11.tar.bz2"; - sha256 = "1n0xgqckj64ga3l53l8lk1591lfcn6zcrqg3phz2m0y841ck5qlk"; - }; - - platform = - if stdenv.system == "i686-linux" then "i386" else - if stdenv.system == "x86_64-linux" then "x86_64" else - if stdenv.system == "powerpc-linux" then "powerpc" else - abort "don't know what the kernel include directory is called for this platform"; - - extraIncludeDirs = - if stdenv.system == "powerpc-linux" then ["ppc"] else []; -} diff --git a/pkgs/tools/archivers/cpio/default.nix b/pkgs/tools/archivers/cpio/default.nix index 225bc557350..3309215fb63 100644 --- a/pkgs/tools/archivers/cpio/default.nix +++ b/pkgs/tools/archivers/cpio/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "cpio-2.7"; + name = "cpio-2.9"; src = fetchurl { - url = http://ftp.gnu.org/gnu/cpio/cpio-2.7.tar.bz2; - md5 = "69ad6cb3d288aafe5f969f68d9fd0fb7"; + url = mirror://gnu/cpio/cpio-2.9.tar.bz2; + sha256 = "01s7f9hg8kgpis96j99hgkiqgdy53pm7qi7bhm3fzx58jfk5z6mv"; }; patches = [./symlink.patch ./gnulib-futimens.patch]; } diff --git a/pkgs/tools/archivers/gnutar/default.nix b/pkgs/tools/archivers/gnutar/default.nix index c8d77071123..9205612f3bc 100644 --- a/pkgs/tools/archivers/gnutar/default.nix +++ b/pkgs/tools/archivers/gnutar/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "gnutar-1.16.1"; + name = "gnutar-1.19"; src = fetchurl { - url = mirror://gnu/tar/tar-1.16.1.tar.bz2; - md5 = "d51593461c5ef1f7e37134f22338bb9e"; + url = mirror://gnu/tar/tar-1.19.tar.bz2; + sha256 = "1d4wh27wlgryz3ld6gp6fn56knh7dmny93bmgixy07kvlxnx9466"; }; - patches = [./implausible.patch ./gnulib-futimens.patch]; + patches = [./implausible.patch]; } diff --git a/pkgs/tools/archivers/gnutar/gnulib-futimens.patch b/pkgs/tools/archivers/gnutar/gnulib-futimens.patch deleted file mode 100644 index 00cdf9322e6..00000000000 --- a/pkgs/tools/archivers/gnutar/gnulib-futimens.patch +++ /dev/null @@ -1,42 +0,0 @@ -now hat glibc-2.6 declares futimens. -http://lists.gnu.org/archive/html/bug-gnulib/2007-05/msg00089.html - -diff -ru cpio-2.7.orig/lib/utimens.c cpio-2.7/lib/utimens.c ---- cpio-2.7.orig/lib/utimens.c 2007-05-20 21:23:57.000000000 +0900 -+++ cpio-2.7/lib/utimens.c 2007-05-21 08:40:22.000000000 +0900 -@@ -73,7 +73,7 @@ - Return 0 on success, -1 (setting errno) on failure. */ - - int --futimens (int fd ATTRIBUTE_UNUSED, -+gl_futimens (int fd ATTRIBUTE_UNUSED, - char const *file, struct timespec const timespec[2]) - { - /* There's currently no interface to set file timestamps with -@@ -166,5 +166,5 @@ - int - utimens (char const *file, struct timespec const timespec[2]) - { -- return futimens (-1, file, timespec); -+ return gl_futimens (-1, file, timespec); - } -diff -ru cpio-2.7.orig/lib/utimens.h cpio-2.7/lib/utimens.h ---- cpio-2.7.orig/lib/utimens.h 2007-05-20 21:23:57.000000000 +0900 -+++ cpio-2.7/lib/utimens.h 2007-05-21 08:39:57.000000000 +0900 -@@ -1,3 +1,3 @@ - #include "timespec.h" --int futimens (int, char const *, struct timespec const [2]); -+int gl_futimens (int, char const *, struct timespec const [2]); - int utimens (char const *, struct timespec const [2]); -diff -ur tar-1.16.1.orig/src/misc.c tar-1.16.1/src/misc.c ---- tar-1.16.1.orig/src/misc.c 2007-05-21 08:57:02.000000000 +0900 -+++ tar-1.16.1/src/misc.c 2007-05-21 08:57:16.000000000 +0900 -@@ -518,7 +518,7 @@ - } - #endif - -- return futimens (fd, file, timespec); -+ return gl_futimens (fd, file, timespec); - } - - /* A description of a working directory. */ diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix index 812b0c78e2c..5aa28d0c451 100644 --- a/pkgs/tools/misc/findutils/default.nix +++ b/pkgs/tools/misc/findutils/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, coreutils}: stdenv.mkDerivation { - name = "findutils-4.2.30"; + name = "findutils-4.2.31"; src = fetchurl { - url = mirror://gnu/findutils/findutils-4.2.30.tar.gz; - sha256 = "1x1s0h1gf4hxh6xi6vq336sz8zsh4hvnsslc7607z41l82xrqjrl"; + url = mirror://gnu/findutils/findutils-4.2.31.tar.gz; + sha256 = "01329mrgg7pc2069hdbcl45jzrzvi94nnv1zf2hcrcx0mj7lplz0"; }; buildInputs = [coreutils]; diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index 2c495f8c271..b50b3aa9bd0 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -1,9 +1,9 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "gawk-3.1.5"; + name = "gawk-3.1.6"; src = fetchurl { - url = ftp://ftp.gnu.org/gnu/gawk/gawk-3.1.5.tar.bz2; - md5 = "5703f72d0eea1d463f735aad8222655f"; + url = mirror://gnu/gawk/gawk-3.1.6.tar.bz2; + sha256 = "0v6ba4hxfiiy3bny5japd3zmzxlh8vdkmswk96yngd6i1dddsgsi"; }; } diff --git a/pkgs/tools/text/gnugrep/default.nix b/pkgs/tools/text/gnugrep/default.nix index 15a7a5ad239..6979e4a1b01 100644 --- a/pkgs/tools/text/gnugrep/default.nix +++ b/pkgs/tools/text/gnugrep/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, pcre}: stdenv.mkDerivation { - name = "gnugrep-2.5.1a"; + name = "gnugrep-2.5.3"; src = fetchurl { - url = http://ftp.gnu.org/gnu/grep/grep-2.5.1a.tar.bz2; - md5 = "52202fe462770fa6be1bb667bd6cf30c"; + url = http://nix.cs.uu.nl/dist/tarballs/grep-2.5.3-with-info.tar.bz2; + sha256 = "0rg9dipksqzbg8v1xalib1n3xkkycc5r1l2gb9cxy1cz3cjip5l8"; }; buildInputs = [pcre]; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c9965c3ef63..0840cfde059 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -922,8 +922,6 @@ rec { profiledCompiler = false; }); - gcc41NPTL = wrapGCCWithGlibc gcc41.gcc glibcNPTL; - gcc42 = useFromStdenv (stdenv ? gcc) stdenv.gcc (wrapGCC (import ../development/compilers/gcc-4.2 { inherit fetchurl stdenv noSysDirs; profiledCompiler = true; @@ -1745,15 +1743,11 @@ rec { }; glibc = useFromStdenv (stdenv ? glibc) stdenv.glibc - (import ../development/libraries/glibc { + (import ../development/libraries/glibc-2.5 { inherit fetchurl stdenv kernelHeaders; #installLocales = false; }); - glibcNPTL = import ../development/libraries/glibc-nptl { - inherit fetchurl stdenv kernelHeaders; - }; - glibmm = import ../development/libraries/gtk-libs-2.6/glibmm { inherit fetchurl stdenv pkgconfig libsigcxx; inherit (gtkLibs26) glib; @@ -2912,15 +2906,13 @@ rec { inherit fetchurl stdenv bison flex; }; - kernelHeaders = import ../os-specific/linux/kernel-headers { + kernelHeaders = kernelHeaders_2_6_23; + + kernelHeaders_2_6_21 = import ../os-specific/linux/kernel-headers/2.6.21.1.nix { inherit fetchurl stdenv; }; - kernelHeaders_2_6_21 = import ../os-specific/linux/kernel-headers/2.6.21.3.nix { - inherit fetchurl stdenv; - }; - - kernelHeaders_2_6_23 = import ../os-specific/linux/kernel-headers/2.6.23.1.nix { + kernelHeaders_2_6_23 = import ../os-specific/linux/kernel-headers/2.6.23.8.nix { inherit fetchurl stdenv; }; @@ -3436,12 +3428,11 @@ rec { }; audacity = import ../applications/audio/audacity { - inherit fetchurl libogg libvorbis libsndfile libmad - pkgconfig gettext; - inherit (gtkLibs) gtk glib; - wxGTK = wxGTK28deps; - stdenv = overrideGCC stdenv gcc41NPTL; - inherit builderDefs stringsWithDeps; + inherit fetchurl stdenv libogg libvorbis libsndfile libmad + pkgconfig gettext; + inherit (gtkLibs) gtk glib; + wxGTK = wxGTK28deps; + inherit builderDefs stringsWithDeps; }; batik = import ../applications/graphics/batik { @@ -4574,8 +4565,7 @@ rec { }; wine = import ../misc/emulators/wine { - stdenv = overrideGCC stdenv gcc41NPTL; - inherit fetchurl flex bison mesa ncurses + inherit fetchurl stdenv flex bison mesa ncurses libpng libjpeg alsaLib lcms xlibs freetype fontconfig fontforge; }; From c1836bbafcd458a8206840e4ad6f7b2e4e56fec2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 19 Nov 2007 22:29:01 +0000 Subject: [PATCH 026/320] ntfs-3g upgraded to 1.1104 svn path=/nixpkgs/branches/stdenv-updates/; revision=9760 --- pkgs/misc/ntfs-3g/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/misc/ntfs-3g/default.nix b/pkgs/misc/ntfs-3g/default.nix index a319423e99c..5f6a0bdbc5f 100644 --- a/pkgs/misc/ntfs-3g/default.nix +++ b/pkgs/misc/ntfs-3g/default.nix @@ -1,15 +1,16 @@ args: with args; -stdenv.mkDerivation { - name = "ntfs3g-1.826"; +stdenv.mkDerivation rec { + name = "ntfs-3g-1.1104"; src = fetchurl { - url = http://www.ntfs-3g.org/ntfs-3g-1.826.tgz; - sha256 = "0anxg4nzhc8d8wvxgw78bc2pb2ciim8mflxgcac9p8d3djwdsxyp"; + url = "${meta.homepage}/${name}.tgz"; + sha256 = "1m96c3vxm051lpy3kyik9s0m390rj6ngm11xmahfhw61794jzbyp"; }; buildInputs = [fuse pkgconfig]; preConfigure="sed -e 's:/sbin:@sbindir@:' -i src/Makefile.in"; configureFlags="--enable-shared --disable-static --disable-ldconfig --exec-prefix=\${prefix}"; meta = { + homepage = http://www.ntfs-3g.org; description = "FUSE-base ntfs driver with full write support"; }; } From e43ce8f72386e357460a96cf79955712fb74248c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 19 Nov 2007 22:29:08 +0000 Subject: [PATCH 027/320] xorg: deault.nix and generate-expr-from-tarballs.pl synced svn path=/nixpkgs/branches/stdenv-updates/; revision=9761 --- pkgs/servers/x11/xorg/default.nix | 6 +++--- pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index 4cd28a1f938..bad391330a5 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -1283,7 +1283,7 @@ rec { url = http://mirror.switch.ch/ftp/mirror/X11/pub/X11R7.3/src/everything/setxkbmap-1.0.4.tar.bz2; sha256 = "1b1brw1v98q2rqhr5x7f8mr3clxq62nw5175gpamg5s172916nwv"; }; - buildInputs = [pkgconfig libX11 libxkbfile ]; postInstall = "ln -sfn ${xkeyboard_config}/etc $out/share"; + buildInputs = [pkgconfig libX11 libxkbfile ]; postInstall = "ensureDir $out/share; ln -sfn ${xkeyboard_config}/etc/X11 $out/share/X11"; }) // {inherit libX11 libxkbfile ;}; showfont = (stdenv.mkDerivation { @@ -2216,8 +2216,8 @@ rec { url = http://mirror.switch.ch/ftp/mirror/X11/pub/X11R7.3/src/everything/xf86-video-sis-0.9.3.tar.bz2; sha256 = "1xin2hcjjwj2810h7kxhkmqq841plbsvk0swmjl9py7z2vxyi3l9"; }; - buildInputs = [pkgconfig fontsproto libdrm randrproto renderproto videoproto xextproto xf86dgaproto xf86driproto xf86miscproto xineramaproto xorgserver xproto ]; - }) // {inherit fontsproto libdrm randrproto renderproto videoproto xextproto xf86dgaproto xf86driproto xf86miscproto xineramaproto xorgserver xproto ;}; + buildInputs = [pkgconfig fontsproto glproto mesaHeaders libdrm randrproto renderproto videoproto xextproto xf86dgaproto xf86driproto xf86miscproto xineramaproto xorgserver xproto ]; + }) // {inherit fontsproto glproto mesaHeaders libdrm randrproto renderproto videoproto xextproto xf86dgaproto xf86driproto xf86miscproto xineramaproto xorgserver xproto ;}; xf86videosisusb = (stdenv.mkDerivation { name = "xf86-video-sisusb-0.8.1"; diff --git a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl index 9bdf7279f52..d68944bf71a 100755 --- a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl +++ b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl @@ -41,16 +41,21 @@ $pcMap{"\$PIXMAN"} = "pixman"; $pcMap{"\$RENDERPROTO"} = "renderproto"; -$extraAttrs{"xorgserver"} = " mesaSrc = mesa.src; x11BuildHook = ./xorgserver.sh; patches = [./xorgserver-dri-path.patch ./xorgserver-xkbcomp-path.patch]; "; +$extraAttrs{"xorgserver"} = " mesaSrc = mesa.src; x11BuildHook = ./xorgserver.sh; patches = [./xorgserver-dri-path.patch ./xorgserver-xkbcomp-path.patch ./xorgserver-xkb-leds.patch ]; "; $extraAttrs{"imake"} = " inherit xorgcffiles; x11BuildHook = ./imake.sh; patches = [./imake.patch]; "; -$extraAttrs{"setxkbmap"} = " postInstall = \"ln -sfn \${xkeyboard_config}/etc \$out/share\"; "; +$extraAttrs{"setxkbmap"} = " postInstall = \"ensureDir \$out/share; ln -sfn \${xkeyboard_config}/etc/X11 \$out/share/X11\";"; $extraAttrs{"fontmiscmisc"} = " postInstall = \"ln -s \${fontalias}/lib/X11/fonts/misc/fonts.alias \$out/lib/X11/fonts/misc/fonts.alias\"; "; $extraAttrs{"mkfontdir"} = " preBuild = \"substituteInPlace mkfontdir.cpp --replace BINDIR \${mkfontscale}/bin\"; "; +$extraAttrs{"xf86inputevdev"} = " + preBuild = \" + sed -e '/motion_history_proc/d; /history_size/d;' -i src/*.c + \";"; + my $downloadCache = "./download-cache"; $ENV{'NIX_DOWNLOAD_CACHE'} = $downloadCache; @@ -174,6 +179,7 @@ while (<>) { process \@requires, $1 while $file =~ /XORG_DRIVER_CHECK_EXT\([^,]*,([^\)]*)\)/g; push @requires, "glproto", "mesaHeaders" if $pkg =~ /xf86videoi810/; + push @requires, "glproto", "mesaHeaders" if $pkg =~ /xf86videosis/; push @requires, "glproto", "mesaHeaders" if $pkg =~ /xf86videointel/; push @requires, "zlib" if $pkg =~ /xorgserver/; push @requires, "xf86bigfontproto" if $pkg =~ /xorgserver/; From b8fafa21e6971a9f252d4e97e8151a7e1b3f1bd3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 19 Nov 2007 22:43:29 +0000 Subject: [PATCH 028/320] Merge commit 'trunk' Conflicts: pkgs/development/compilers/ocaml/default.nix pkgs/development/interpreters/python/default.nix pkgs/tools/package-management/nix/unstable.nix pkgs/top-level/all-packages.nix svn path=/nixpkgs/branches/stdenv-updates/; revision=9762 --- pkgs/misc/emulators/wine/default.nix | 6 +- .../linux/bridge_utils/default.nix | 19 + .../linux/kernel/linux-2.6.21_ck.nix | 84 + .../os-specific/linux/kernel/patch-2.6.21-ck1 | 5040 ++++++++++++++++ .../os-specific/linux/kernel/patch-2.6.22-ck1 | 5167 +++++++++++++++++ .../tools/package-management/nix/unstable.nix | 4 +- pkgs/top-level/all-packages.nix | 70 +- 7 files changed, 10382 insertions(+), 8 deletions(-) create mode 100644 pkgs/os-specific/linux/bridge_utils/default.nix create mode 100644 pkgs/os-specific/linux/kernel/linux-2.6.21_ck.nix create mode 100644 pkgs/os-specific/linux/kernel/patch-2.6.21-ck1 create mode 100644 pkgs/os-specific/linux/kernel/patch-2.6.22-ck1 diff --git a/pkgs/misc/emulators/wine/default.nix b/pkgs/misc/emulators/wine/default.nix index 8106390674e..fc9b97d5af9 100644 --- a/pkgs/misc/emulators/wine/default.nix +++ b/pkgs/misc/emulators/wine/default.nix @@ -7,11 +7,11 @@ assert stdenv.isLinux; let lib = import ../../../lib/default.nix; in stdenv.mkDerivation { - name = "wine-0.9.46"; + name = "wine-0.9.49"; src = fetchurl { - url = mirror://sourceforge/wine/wine-0.9.46.tar.bz2; - sha256 = "0c5fapw38bivipi8yzci3swxyhl9g67dpicqzslwmffwbi9y9z3i"; + url = mirror://sourceforge/wine/wine-0.9.49.tar.bz2; + sha256 = "d41edd08cf7fd21d7350a633995107533a25f925c8859995d3a6fc131f54b3c1"; }; buildInputs = [ diff --git a/pkgs/os-specific/linux/bridge_utils/default.nix b/pkgs/os-specific/linux/bridge_utils/default.nix new file mode 100644 index 00000000000..3fb80b7484a --- /dev/null +++ b/pkgs/os-specific/linux/bridge_utils/default.nix @@ -0,0 +1,19 @@ +args: +args.stdenv.mkDerivation { + name = "bridge-utils-1.2"; + + src = args.fetchurl { + url = http://mirror/sourceforge/bridge/bridge-utils-1.2.tar.gz; + sha256 = "0jg3z51c2c34byg4zi39j9g4b66js5kanjhid77hpa0jdfmryfy9"; + }; + + buildInputs =(with args; [autoconf automake]); + + preConfigure="autoreconf"; + + meta = { + description = "http://sourceforge.net/projects/bridge/"; + homepage = [ "http://www.linux-foundation.org/en/Net:Bridge/" "http://sourceforge.net/projects/bridge/" ]; + license = "GPL"; + }; +} diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.21_ck.nix b/pkgs/os-specific/linux/kernel/linux-2.6.21_ck.nix new file mode 100644 index 00000000000..55748d3e9f5 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-2.6.21_ck.nix @@ -0,0 +1,84 @@ +{ stdenv, fetchurl, perl, mktemp, module_init_tools + + # A list of patches to apply to the kernel. Each element of this list + # should be an attribute set {name, patch} where `name' is a + # symbolic name and `patch' is the actual patch. The patch may + # optionally be compressed with gzip or bzip2. +, kernelPatches ? [] + +, # Whether to build a User-Mode Linux kernel. + userModeLinux ? false + +, # Allows you to set your own kernel version suffix (e.g., + # "-my-kernel"). + localVersion ? "" + +, # Your own kernel configuration file, if you don't want to use the + # default. + kernelConfig ? null + +, # A list of additional statements to be appended to the + # configuration file. + extraConfig ? [] +}: + +assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; + +let + + lib = import ../../../lib; + + version = "2.6.21"; + +in + +stdenv.mkDerivation { + name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}"; + builder = ./builder.sh; + + src = fetchurl { + url = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2"; + sha256 = "f187b12d70e0a48ce81f0472dfe9504fb5f0f966be339ac9d57dd2b991a74942"; + }; + + patches = map (p: p.patch) kernelPatches; + extraConfig = + let addNewlines = map (s: "\n" + s + "\n"); + configFromPatches = + map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches; + in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig)); + + config = + if kernelConfig != null then kernelConfig else + if userModeLinux then ./config-2.6.21-uml else + if stdenv.system == "i686-linux" then ./config-2.6.21-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.21-x86_64-smp else + abort "No kernel configuration for your platform!"; + + buildInputs = [perl mktemp]; + + arch = + if userModeLinux then "um" else + if stdenv.system == "i686-linux" then "i386" else + if stdenv.system == "x86_64-linux" then "x86_64" else + abort "Platform ${stdenv.system} is not supported."; + + makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else ""; + + inherit module_init_tools; + + allowLocalVersion = false; # don't allow patches to set a suffix + inherit localVersion; # but do allow the user to set one. + + meta = { + description = + (if userModeLinux then + "User-Mode Linux" + else + "The Linux kernel") + + (if kernelPatches == [] then "" else + " (with patches: " + + lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches)) + + ")"); + }; +} diff --git a/pkgs/os-specific/linux/kernel/patch-2.6.21-ck1 b/pkgs/os-specific/linux/kernel/patch-2.6.21-ck1 new file mode 100644 index 00000000000..0bf63f5aca3 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/patch-2.6.21-ck1 @@ -0,0 +1,5040 @@ +Index: linux-2.6.21-ck1/Makefile +=================================================================== +--- linux-2.6.21-ck1.orig/Makefile 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/Makefile 2007-05-04 12:21:37.000000000 +1000 +@@ -1,7 +1,7 @@ + VERSION = 2 + PATCHLEVEL = 6 + SUBLEVEL = 21 +-EXTRAVERSION = ++EXTRAVERSION = -ck1 + NAME = Nocturnal Monster Puppy + + # *DOCUMENTATION* +Index: linux-2.6.21-ck1/kernel/workqueue.c +=================================================================== +--- linux-2.6.21-ck1.orig/kernel/workqueue.c 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/kernel/workqueue.c 2007-05-04 12:10:54.000000000 +1000 +@@ -355,8 +355,6 @@ static int worker_thread(void *__cwq) + if (!cwq->freezeable) + current->flags |= PF_NOFREEZE; + +- set_user_nice(current, -5); +- + /* Block and flush all signals */ + sigfillset(&blocked); + sigprocmask(SIG_BLOCK, &blocked, NULL); +Index: linux-2.6.21-ck1/fs/proc/array.c +=================================================================== +--- linux-2.6.21-ck1.orig/fs/proc/array.c 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/fs/proc/array.c 2007-05-04 12:10:54.000000000 +1000 +@@ -165,7 +165,6 @@ static inline char * task_state(struct t + rcu_read_lock(); + buffer += sprintf(buffer, + "State:\t%s\n" +- "SleepAVG:\t%lu%%\n" + "Tgid:\t%d\n" + "Pid:\t%d\n" + "PPid:\t%d\n" +@@ -173,7 +172,6 @@ static inline char * task_state(struct t + "Uid:\t%d\t%d\t%d\t%d\n" + "Gid:\t%d\t%d\t%d\t%d\n", + get_task_state(p), +- (p->sleep_avg/1024)*100/(1020000000/1024), + p->tgid, p->pid, + pid_alive(p) ? rcu_dereference(p->real_parent)->tgid : 0, + pid_alive(p) && p->ptrace ? rcu_dereference(p->parent)->pid : 0, +Index: linux-2.6.21-ck1/include/linux/init_task.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/init_task.h 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/init_task.h 2007-05-04 12:24:19.000000000 +1000 +@@ -102,13 +102,15 @@ extern struct group_info init_groups; + .prio = MAX_PRIO-20, \ + .static_prio = MAX_PRIO-20, \ + .normal_prio = MAX_PRIO-20, \ ++ .rotation = 0, \ + .policy = SCHED_NORMAL, \ + .cpus_allowed = CPU_MASK_ALL, \ + .mm = NULL, \ + .active_mm = &init_mm, \ + .run_list = LIST_HEAD_INIT(tsk.run_list), \ + .ioprio = 0, \ +- .time_slice = HZ, \ ++ .time_slice = 1000000000, \ ++ .quota = 1000000000, \ + .tasks = LIST_HEAD_INIT(tsk.tasks), \ + .ptrace_children= LIST_HEAD_INIT(tsk.ptrace_children), \ + .ptrace_list = LIST_HEAD_INIT(tsk.ptrace_list), \ +@@ -135,6 +137,7 @@ extern struct group_info init_groups; + .signal = {{0}}}, \ + .blocked = {{0}}, \ + .alloc_lock = __SPIN_LOCK_UNLOCKED(tsk.alloc_lock), \ ++ .mutexes_held = 0, \ + .journal_info = NULL, \ + .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ + .fs_excl = ATOMIC_INIT(0), \ +Index: linux-2.6.21-ck1/include/linux/sched.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/sched.h 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/sched.h 2007-05-04 12:24:19.000000000 +1000 +@@ -34,9 +34,14 @@ + #define SCHED_FIFO 1 + #define SCHED_RR 2 + #define SCHED_BATCH 3 ++#define SCHED_ISO 4 ++#define SCHED_IDLEPRIO 5 + + #ifdef __KERNEL__ + ++#define SCHED_MAX SCHED_IDLEPRIO ++#define SCHED_RANGE(policy) ((policy) <= SCHED_MAX) ++ + struct sched_param { + int sched_priority; + }; +@@ -149,8 +154,7 @@ extern unsigned long weighted_cpuload(co + #define EXIT_ZOMBIE 16 + #define EXIT_DEAD 32 + /* in tsk->state again */ +-#define TASK_NONINTERACTIVE 64 +-#define TASK_DEAD 128 ++#define TASK_DEAD 64 + + #define __set_task_state(tsk, state_value) \ + do { (tsk)->state = (state_value); } while (0) +@@ -522,14 +526,19 @@ struct signal_struct { + + #define MAX_USER_RT_PRIO 100 + #define MAX_RT_PRIO MAX_USER_RT_PRIO ++#define PRIO_RANGE (40) ++#define ISO_PRIO (MAX_RT_PRIO - 1) + +-#define MAX_PRIO (MAX_RT_PRIO + 40) ++#define MAX_PRIO (MAX_RT_PRIO + PRIO_RANGE) + +-#define rt_prio(prio) unlikely((prio) < MAX_RT_PRIO) ++#define rt_prio(prio) unlikely((prio) < ISO_PRIO) + #define rt_task(p) rt_prio((p)->prio) + #define batch_task(p) (unlikely((p)->policy == SCHED_BATCH)) +-#define is_rt_policy(p) ((p) != SCHED_NORMAL && (p) != SCHED_BATCH) ++#define is_rt_policy(policy) ((policy) == SCHED_FIFO || \ ++ (policy) == SCHED_RR) + #define has_rt_policy(p) unlikely(is_rt_policy((p)->policy)) ++#define iso_task(p) unlikely((p)->policy == SCHED_ISO) ++#define idleprio_task(p) unlikely((p)->policy == SCHED_IDLEPRIO) + + /* + * Some day this will be a full-fledged user tracking system.. +@@ -740,6 +749,22 @@ extern unsigned int max_cache_size; + + #endif /* CONFIG_SMP */ + ++/* ++ * A runqueue laden with a single nice 0 task scores a weighted_cpuload of ++ * SCHED_LOAD_SCALE. This function returns 1 if any cpu is laden with a ++ * task of nice 0 or enough lower priority tasks to bring up the ++ * weighted_cpuload ++ */ ++static inline int above_background_load(void) ++{ ++ unsigned long cpu; ++ ++ for_each_online_cpu(cpu) { ++ if (weighted_cpuload(cpu) >= SCHED_LOAD_SCALE) ++ return 1; ++ } ++ return 0; ++} + + struct io_context; /* See blkdev.h */ + struct cpuset; +@@ -788,13 +813,6 @@ struct mempolicy; + struct pipe_inode_info; + struct uts_namespace; + +-enum sleep_type { +- SLEEP_NORMAL, +- SLEEP_NONINTERACTIVE, +- SLEEP_INTERACTIVE, +- SLEEP_INTERRUPTED, +-}; +- + struct prio_array; + + struct task_struct { +@@ -814,20 +832,33 @@ struct task_struct { + int load_weight; /* for niceness load balancing purposes */ + int prio, static_prio, normal_prio; + struct list_head run_list; ++ /* ++ * This bitmap shows what priorities this task has received quota ++ * from for this major priority rotation on its current runqueue. ++ */ ++ DECLARE_BITMAP(bitmap, PRIO_RANGE + 1); + struct prio_array *array; ++ /* Which major runqueue rotation did this task run */ ++ unsigned long rotation; + + unsigned short ioprio; + #ifdef CONFIG_BLK_DEV_IO_TRACE + unsigned int btrace_seq; + #endif +- unsigned long sleep_avg; + unsigned long long timestamp, last_ran; + unsigned long long sched_time; /* sched_clock time spent running */ +- enum sleep_type sleep_type; + + unsigned long policy; + cpumask_t cpus_allowed; +- unsigned int time_slice, first_time_slice; ++ /* ++ * How much this task is entitled to run at the current priority ++ * before being requeued at a lower priority. ++ */ ++ int time_slice; ++ /* Is this the very first time_slice this task has ever run. */ ++ unsigned int first_time_slice; ++ /* How much this task receives at each priority level */ ++ int quota; + + #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) + struct sched_info sched_info; +@@ -992,6 +1023,7 @@ struct task_struct { + struct held_lock held_locks[MAX_LOCK_DEPTH]; + unsigned int lockdep_recursion; + #endif ++ unsigned long mutexes_held; + + /* journalling filesystem info */ + void *journal_info; +@@ -1156,8 +1188,10 @@ static inline void put_task_struct(struc + #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ + #define PF_SPREAD_PAGE 0x01000000 /* Spread page cache over cpuset */ + #define PF_SPREAD_SLAB 0x02000000 /* Spread some slab caches over cpuset */ ++#define PF_ISOREF 0x04000000 /* SCHED_ISO task has used up quota */ + #define PF_MEMPOLICY 0x10000000 /* Non-default NUMA mempolicy */ + #define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */ ++#define PF_NONSLEEP 0x40000000 /* Waiting on in-kernel activity */ + + /* + * Only the _current_ task can read/write to tsk->flags, but other +Index: linux-2.6.21-ck1/kernel/sched.c +=================================================================== +--- linux-2.6.21-ck1.orig/kernel/sched.c 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/kernel/sched.c 2007-05-04 12:24:22.000000000 +1000 +@@ -16,6 +16,7 @@ + * by Davide Libenzi, preemptible kernel bits by Robert Love. + * 2003-09-03 Interactivity tuning by Con Kolivas. + * 2004-04-02 Scheduler domains code by Nick Piggin ++ * 2007-03-02 Staircase deadline scheduling policy by Con Kolivas + */ + + #include +@@ -52,6 +53,7 @@ + #include + #include + #include ++#include + #include + + #include +@@ -83,126 +85,85 @@ unsigned long long __attribute__((weak)) + #define USER_PRIO(p) ((p)-MAX_RT_PRIO) + #define TASK_USER_PRIO(p) USER_PRIO((p)->static_prio) + #define MAX_USER_PRIO (USER_PRIO(MAX_PRIO)) ++#define SCHED_PRIO(p) ((p)+MAX_RT_PRIO) + +-/* +- * Some helpers for converting nanosecond timing to jiffy resolution +- */ +-#define NS_TO_JIFFIES(TIME) ((TIME) / (1000000000 / HZ)) ++/* Some helpers for converting to/from various scales.*/ + #define JIFFIES_TO_NS(TIME) ((TIME) * (1000000000 / HZ)) +- +-/* +- * These are the 'tuning knobs' of the scheduler: +- * +- * Minimum timeslice is 5 msecs (or 1 jiffy, whichever is larger), +- * default timeslice is 100 msecs, maximum timeslice is 800 msecs. +- * Timeslices get refilled after they expire. +- */ +-#define MIN_TIMESLICE max(5 * HZ / 1000, 1) +-#define DEF_TIMESLICE (100 * HZ / 1000) +-#define ON_RUNQUEUE_WEIGHT 30 +-#define CHILD_PENALTY 95 +-#define PARENT_PENALTY 100 +-#define EXIT_WEIGHT 3 +-#define PRIO_BONUS_RATIO 25 +-#define MAX_BONUS (MAX_USER_PRIO * PRIO_BONUS_RATIO / 100) +-#define INTERACTIVE_DELTA 2 +-#define MAX_SLEEP_AVG (DEF_TIMESLICE * MAX_BONUS) +-#define STARVATION_LIMIT (MAX_SLEEP_AVG) +-#define NS_MAX_SLEEP_AVG (JIFFIES_TO_NS(MAX_SLEEP_AVG)) +- +-/* +- * If a task is 'interactive' then we reinsert it in the active +- * array after it has expired its current timeslice. (it will not +- * continue to run immediately, it will still roundrobin with +- * other interactive tasks.) +- * +- * This part scales the interactivity limit depending on niceness. +- * +- * We scale it linearly, offset by the INTERACTIVE_DELTA delta. +- * Here are a few examples of different nice levels: +- * +- * TASK_INTERACTIVE(-20): [1,1,1,1,1,1,1,1,1,0,0] +- * TASK_INTERACTIVE(-10): [1,1,1,1,1,1,1,0,0,0,0] +- * TASK_INTERACTIVE( 0): [1,1,1,1,0,0,0,0,0,0,0] +- * TASK_INTERACTIVE( 10): [1,1,0,0,0,0,0,0,0,0,0] +- * TASK_INTERACTIVE( 19): [0,0,0,0,0,0,0,0,0,0,0] +- * +- * (the X axis represents the possible -5 ... 0 ... +5 dynamic +- * priority range a task can explore, a value of '1' means the +- * task is rated interactive.) +- * +- * Ie. nice +19 tasks can never get 'interactive' enough to be +- * reinserted into the active array. And only heavily CPU-hog nice -20 +- * tasks will be expired. Default nice 0 tasks are somewhere between, +- * it takes some effort for them to get interactive, but it's not +- * too hard. +- */ +- +-#define CURRENT_BONUS(p) \ +- (NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / \ +- MAX_SLEEP_AVG) +- +-#define GRANULARITY (10 * HZ / 1000 ? : 1) +- +-#ifdef CONFIG_SMP +-#define TIMESLICE_GRANULARITY(p) (GRANULARITY * \ +- (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)) * \ +- num_online_cpus()) +-#else +-#define TIMESLICE_GRANULARITY(p) (GRANULARITY * \ +- (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1))) +-#endif +- +-#define SCALE(v1,v1_max,v2_max) \ +- (v1) * (v2_max) / (v1_max) +- +-#define DELTA(p) \ +- (SCALE(TASK_NICE(p) + 20, 40, MAX_BONUS) - 20 * MAX_BONUS / 40 + \ +- INTERACTIVE_DELTA) +- +-#define TASK_INTERACTIVE(p) \ +- ((p)->prio <= (p)->static_prio - DELTA(p)) +- +-#define INTERACTIVE_SLEEP(p) \ +- (JIFFIES_TO_NS(MAX_SLEEP_AVG * \ +- (MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1)) +- +-#define TASK_PREEMPTS_CURR(p, rq) \ +- ((p)->prio < (rq)->curr->prio) +- +-#define SCALE_PRIO(x, prio) \ +- max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO / 2), MIN_TIMESLICE) +- +-static unsigned int static_prio_timeslice(int static_prio) +-{ +- if (static_prio < NICE_TO_PRIO(0)) +- return SCALE_PRIO(DEF_TIMESLICE * 4, static_prio); +- else +- return SCALE_PRIO(DEF_TIMESLICE, static_prio); +-} +- +-/* +- * task_timeslice() scales user-nice values [ -20 ... 0 ... 19 ] +- * to time slice values: [800ms ... 100ms ... 5ms] +- * +- * The higher a thread's priority, the bigger timeslices +- * it gets during one round of execution. But even the lowest +- * priority thread gets MIN_TIMESLICE worth of execution time. ++#define MS_TO_NS(TIME) ((TIME) * 1000000) ++#define MS_TO_US(TIME) ((TIME) * 1000) ++#define US_TO_MS(TIME) ((TIME) / 1000) ++ ++#define TASK_PREEMPTS_CURR(p, curr) ((p)->prio < (curr)->prio) ++ ++/* ++ * This is the time all tasks within the same priority round robin. ++ * Value is in ms and set to a minimum of 8ms. Scales with number of cpus. ++ * Tunable via /proc interface. ++ */ ++int rr_interval __read_mostly = 6; ++int sched_interactive __read_mostly = 1; ++ ++/* ++ * sched_iso_cpu - sysctl which determines the cpu percentage SCHED_ISO tasks ++ * are allowed to run (over ISO_PERIOD seconds) as real time tasks. ++ * sched_iso_period - sysctl which determines the number of seconds over ++ * which cpu usage of SCHED_ISO tasks is averaged to determine if they are ++ * exceeding their allowable bandwidth. ++*/ ++int sched_iso_cpu __read_mostly = 80; ++int sched_iso_period __read_mostly = 5; ++ ++#define ISO_PERIOD ((sched_iso_period * HZ) + 1) ++ ++/* ++ * This contains a bitmap for each dynamic priority level with empty slots ++ * for the valid priorities each different nice level can have. It allows ++ * us to stagger the slots where differing priorities run in a way that ++ * keeps latency differences between different nice levels at a minimum. ++ * The purpose of a pre-generated matrix is for rapid lookup of next slot in ++ * O(1) time without having to recalculate every time priority gets demoted. ++ * All nice levels use priority slot 39 as this allows less niced tasks to ++ * get all priority slots better than that before expiration is forced. ++ * ie, where 0 means a slot for that priority, priority running from left to ++ * right is from prio 0 to prio 39: ++ * nice -20 0000000000000000000000000000000000000000 ++ * nice -10 1000100010001000100010001000100010010000 ++ * nice 0 1010101010101010101010101010101010101010 ++ * nice 5 1011010110110101101101011011010110110110 ++ * nice 10 1110111011101110111011101110111011101110 ++ * nice 15 1111111011111110111111101111111011111110 ++ * nice 19 1111111111111111111111111111111111111110 + */ ++static unsigned long prio_matrix[PRIO_RANGE][BITS_TO_LONGS(PRIO_RANGE)] ++ __read_mostly; + +-static inline unsigned int task_timeslice(struct task_struct *p) +-{ +- return static_prio_timeslice(p->static_prio); +-} ++struct rq; + + /* + * These are the runqueue data structures: + */ +- + struct prio_array { +- unsigned int nr_active; +- DECLARE_BITMAP(bitmap, MAX_PRIO+1); /* include 1 bit for delimiter */ +- struct list_head queue[MAX_PRIO]; ++ /* Tasks queued at each priority */ ++ struct list_head queue[MAX_PRIO + 1]; ++ ++ /* ++ * The bitmap of priorities queued for this array. While the expired ++ * array will never have realtime tasks on it, it is simpler to have ++ * equal sized bitmaps for a cheap array swap. Include 1 bit for ++ * delimiter. ++ */ ++ DECLARE_BITMAP(prio_bitmap, MAX_PRIO + 1); ++ ++ /* ++ * The best static priority (of the dynamic priority tasks) queued ++ * this array. ++ */ ++ int best_static_prio; ++ ++#ifdef CONFIG_SMP ++ /* For convenience looks back at rq */ ++ struct rq *rq; ++#endif + }; + + /* +@@ -234,14 +195,28 @@ struct rq { + */ + unsigned long nr_uninterruptible; + +- unsigned long expired_timestamp; + /* Cached timestamp set by update_cpu_clock() */ + unsigned long long most_recent_timestamp; + struct task_struct *curr, *idle; + unsigned long next_balance; + struct mm_struct *prev_mm; +- struct prio_array *active, *expired, arrays[2]; +- int best_expired_prio; ++ ++ struct prio_array *active, *expired, *idleprio, arrays[2]; ++ unsigned long *dyn_bitmap, *exp_bitmap; ++ ++ /* ++ * The current dynamic priority level this runqueue is at per static ++ * priority level. ++ */ ++ int prio_level[PRIO_RANGE]; ++ ++ /* How many times we have rotated the priority queue */ ++ unsigned long prio_rotation; ++ unsigned long iso_ticks; ++ unsigned short iso_refractory; ++ ++ /* Number of idleprio tasks running */ ++ unsigned long nr_idleprio; + atomic_t nr_iowait; + + #ifdef CONFIG_SMP +@@ -579,12 +554,9 @@ static inline struct rq *this_rq_lock(vo + #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) + /* + * Called when a process is dequeued from the active array and given +- * the cpu. We should note that with the exception of interactive +- * tasks, the expired queue will become the active queue after the active +- * queue is empty, without explicitly dequeuing and requeuing tasks in the +- * expired queue. (Interactive tasks may be requeued directly to the +- * active queue, thus delaying tasks in the expired queue from running; +- * see scheduler_tick()). ++ * the cpu. We should note that the expired queue will become the active ++ * queue after the active queue is empty, without explicitly dequeuing and ++ * requeuing tasks in the expired queue. + * + * This function is only called from sched_info_arrive(), rather than + * dequeue_task(). Even though a task may be queued and dequeued multiple +@@ -682,71 +654,304 @@ sched_info_switch(struct task_struct *pr + #define sched_info_switch(t, next) do { } while (0) + #endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */ + ++static int idleprio_suitable(struct task_struct *p) ++{ ++ return (!p->mutexes_held && !freezing(p) && !signal_pending(p) && ++ !(p->flags & (PF_NONSLEEP | PF_EXITING))); ++} ++ ++static int idleprio(const struct task_struct *p) ++{ ++ return (p->prio == MAX_PRIO); ++} ++ ++static inline int task_queued(struct task_struct *task) ++{ ++ return !list_empty(&task->run_list); ++} ++ ++static inline void set_dynamic_bit(struct task_struct *p, struct rq *rq) ++{ ++ __set_bit(p->prio, p->array->prio_bitmap); ++} ++ + /* +- * Adding/removing a task to/from a priority array: ++ * Removing from a runqueue. + */ +-static void dequeue_task(struct task_struct *p, struct prio_array *array) ++static void dequeue_task(struct task_struct *p, struct rq *rq) + { +- array->nr_active--; +- list_del(&p->run_list); +- if (list_empty(array->queue + p->prio)) +- __clear_bit(p->prio, array->bitmap); ++ list_del_init(&p->run_list); ++ if (idleprio_task(p) && idleprio(p)) ++ rq->nr_idleprio--; ++ else if (list_empty(p->array->queue + p->prio)) ++ __clear_bit(p->prio, p->array->prio_bitmap); + } + +-static void enqueue_task(struct task_struct *p, struct prio_array *array) ++static void reset_first_time_slice(struct task_struct *p) + { +- sched_info_queued(p); +- list_add_tail(&p->run_list, array->queue + p->prio); +- __set_bit(p->prio, array->bitmap); +- array->nr_active++; ++ if (unlikely(p->first_time_slice)) ++ p->first_time_slice = 0; ++} ++ ++/* ++ * The task is being queued on a fresh array so it has its entitlement ++ * bitmap cleared. ++ */ ++static void task_new_array(struct task_struct *p, struct rq *rq, ++ struct prio_array *array) ++{ ++ bitmap_zero(p->bitmap, PRIO_RANGE); ++ p->rotation = rq->prio_rotation; ++ p->time_slice = p->quota; + p->array = array; ++ reset_first_time_slice(p); ++} ++ ++/* Find the first slot from the relevant prio_matrix entry */ ++static int first_prio_slot(struct task_struct *p) ++{ ++ if (unlikely(p->policy == SCHED_BATCH)) ++ return p->static_prio; ++ return SCHED_PRIO(find_first_zero_bit( ++ prio_matrix[USER_PRIO(p->static_prio)], PRIO_RANGE)); + } + + /* +- * Put task to the end of the run list without the overhead of dequeue +- * followed by enqueue. ++ * In sched_interactive mode priority allocation occurs per process per rq ++ * array swap. In !sched_interactive mode all waking tasks must obey the ++ * current prio level of all other tasks running per array swap. + */ +-static void requeue_task(struct task_struct *p, struct prio_array *array) ++static int minprio(struct rq *rq, int uprio) + { +- list_move_tail(&p->run_list, array->queue + p->prio); ++ if (sched_interactive) ++ return MAX_RT_PRIO; ++ return rq->prio_level[uprio]; + } + +-static inline void +-enqueue_task_head(struct task_struct *p, struct prio_array *array) ++/* ++ * Find the first unused slot by this task that is also in its prio_matrix ++ * level. SCHED_BATCH tasks do not use the priority matrix. They only take ++ * priority slots from their static_prio and above. ++ */ ++static int next_entitled_slot(struct task_struct *p, struct rq *rq) + { +- list_add(&p->run_list, array->queue + p->prio); +- __set_bit(p->prio, array->bitmap); +- array->nr_active++; +- p->array = array; ++ int search_prio = MAX_RT_PRIO, uprio = USER_PRIO(p->static_prio); ++ struct prio_array *array = rq->active; ++ DECLARE_BITMAP(tmp, PRIO_RANGE); ++ ++ /* ++ * Go straight to expiration if there are higher priority tasks ++ * already expired. ++ */ ++ if (p->static_prio > rq->expired->best_static_prio) ++ return MAX_PRIO; ++ if (!rq->prio_level[uprio]) ++ rq->prio_level[uprio] = MAX_RT_PRIO; ++ /* ++ * Only priorities equal to the prio_level and above for their ++ * static_prio are acceptable, and only if it's not better than ++ * a queued better static_prio's prio_level. ++ */ ++ if (p->static_prio < array->best_static_prio) { ++ if (likely(p->policy != SCHED_BATCH)) ++ array->best_static_prio = p->static_prio; ++ } else if (p->static_prio == array->best_static_prio) { ++ search_prio = minprio(rq, uprio); ++ } else { ++ int i; ++ ++ search_prio = minprio(rq, uprio); ++ /* A bound O(n) function, worst case n is 40 */ ++ for (i = array->best_static_prio; i <= p->static_prio ; i++) { ++ if (!rq->prio_level[USER_PRIO(i)]) ++ rq->prio_level[USER_PRIO(i)] = MAX_RT_PRIO; ++ search_prio = max(search_prio, ++ rq->prio_level[USER_PRIO(i)]); ++ } ++ } ++ if (unlikely(p->policy == SCHED_BATCH)) { ++ search_prio = max(search_prio, p->static_prio); ++ return SCHED_PRIO(find_next_zero_bit(p->bitmap, PRIO_RANGE, ++ USER_PRIO(search_prio))); ++ } ++ bitmap_or(tmp, p->bitmap, prio_matrix[uprio], PRIO_RANGE); ++ return SCHED_PRIO(find_next_zero_bit(tmp, PRIO_RANGE, ++ USER_PRIO(search_prio))); ++} ++ ++static void queue_expired(struct task_struct *p, struct rq *rq) ++{ ++ task_new_array(p, rq, rq->expired); ++ p->prio = p->normal_prio = first_prio_slot(p); ++ if (p->static_prio < rq->expired->best_static_prio) ++ rq->expired->best_static_prio = p->static_prio; ++ reset_first_time_slice(p); + } + ++#ifdef CONFIG_SMP + /* +- * __normal_prio - return the priority that is based on the static +- * priority but is modified by bonuses/penalties. +- * +- * We scale the actual sleep average [0 .... MAX_SLEEP_AVG] +- * into the -5 ... 0 ... +5 bonus/penalty range. +- * +- * We use 25% of the full 0...39 priority range so that: +- * +- * 1) nice +19 interactive tasks do not preempt nice 0 CPU hogs. +- * 2) nice -20 CPU hogs do not get preempted by nice 0 tasks. +- * +- * Both properties are important to certain workloads. ++ * If we're waking up a task that was previously on a different runqueue, ++ * update its data appropriately. Note we may be reading data from src_rq-> ++ * outside of lock, but the occasional inaccurate result should be harmless. + */ ++ static void update_if_moved(struct task_struct *p, struct rq *rq) ++{ ++ struct rq *src_rq = p->array->rq; + +-static inline int __normal_prio(struct task_struct *p) ++ if (src_rq == rq) ++ return; ++ /* ++ * Only need to set p->array when p->rotation == rq->prio_rotation as ++ * they will be set in recalc_task_prio when != rq->prio_rotation. ++ */ ++ if (p->rotation == src_rq->prio_rotation) { ++ p->rotation = rq->prio_rotation; ++ if (p->array == src_rq->expired) ++ p->array = rq->expired; ++ else ++ p->array = rq->active; ++ } else ++ p->rotation = 0; ++} ++#else ++static inline void update_if_moved(struct task_struct *p, struct rq *rq) ++{ ++} ++#endif ++ ++static inline int isoprio_suitable(struct task_struct *p) + { +- int bonus, prio; ++ return !(p->flags & PF_ISOREF); ++} + +- bonus = CURRENT_BONUS(p) - MAX_BONUS / 2; ++static int task_timeslice(struct task_struct *p); + +- prio = p->static_prio - bonus; +- if (prio < MAX_RT_PRIO) +- prio = MAX_RT_PRIO; +- if (prio > MAX_PRIO-1) +- prio = MAX_PRIO-1; +- return prio; ++/* ++ * recalc_task_prio determines what priority a non rt_task will be ++ * queued at. If the task has already been running during this runqueue's ++ * major rotation (rq->prio_rotation) then it continues at the same ++ * priority if it has tick entitlement left. If it does not have entitlement ++ * left, it finds the next priority slot according to its nice value that it ++ * has not extracted quota from. If it has not run during this major ++ * rotation, it starts at the next_entitled_slot and has its bitmap quota ++ * cleared. If it does not have any slots left it has all its slots reset and ++ * is queued on the expired at its first_prio_slot. ++ */ ++static void recalc_task_prio(struct task_struct *p, struct rq *rq) ++{ ++ struct prio_array *array = rq->active; ++ int queue_prio; ++ ++ if (iso_task(p)) { ++ if (isoprio_suitable(p)) { ++ /* ++ * If SCHED_ISO tasks have not used up their real time ++ * quota they have run just better than highest ++ * SCHED_NORMAL priority. Otherwise they run as ++ * SCHED_NORMAL. ++ */ ++ p->prio = p->normal_prio = ISO_PRIO; ++ p->array = rq->active; ++ if (p->time_slice <= 0) ++ p->time_slice = p->quota; ++ return; ++ } else if (p->prio == ISO_PRIO) { ++ /* Just about to be demoted to SCHED_NORMAL */ ++ p->time_slice = 0; ++ } ++ } else if (idleprio_task(p)) { ++ if (idleprio_suitable(p)) { ++ /* ++ * If suitable idleprio_tasks are queued at MAX_PRIO ++ * only on the idleprio array. Their time_slice is ++ * their full task_timeslice as they cooperatively ++ * multitask. ++ */ ++ p->prio = p->normal_prio = MAX_PRIO; ++ p->array = rq->idleprio; ++ if (p->time_slice <= 0) ++ p->time_slice = task_timeslice(p); ++ return; ++ } ++ /* ++ * If unsuitable idleprio_tasks are queued equivalent to ++ * nice 19 tasks on the expired array. ++ */ ++ p->flags &= ~PF_NONSLEEP; ++ p->prio = p->normal_prio = MAX_PRIO - 1; ++ p->array = rq->expired; ++ if (p->time_slice <= 0 || p->time_slice > p->quota) ++ p->time_slice = p->quota; ++ return; ++ } ++ ++ update_if_moved(p, rq); ++ if (p->rotation == rq->prio_rotation) { ++ if (p->array == array) { ++ if (p->time_slice > 0) ++ return; ++ p->time_slice = p->quota; ++ } else if (p->array == rq->expired) { ++ queue_expired(p, rq); ++ return; ++ } else ++ task_new_array(p, rq, array); ++ } else ++ task_new_array(p, rq, array); ++ ++ queue_prio = next_entitled_slot(p, rq); ++ if (queue_prio >= MAX_PRIO) { ++ queue_expired(p, rq); ++ return; ++ } ++ p->prio = p->normal_prio = queue_prio; ++ __set_bit(USER_PRIO(p->prio), p->bitmap); ++} ++ ++/* ++ * Adding to a runqueue. The dynamic priority queue that it is added to is ++ * determined by recalc_task_prio() above. ++ */ ++static inline void __enqueue_task(struct task_struct *p, struct rq *rq) ++{ ++ if (rt_task(p)) ++ p->array = rq->active; ++ else ++ recalc_task_prio(p, rq); ++ ++ if (idleprio_task(p) && idleprio(p)) ++ rq->nr_idleprio++; ++ sched_info_queued(p); ++ set_dynamic_bit(p, rq); ++} ++ ++static void enqueue_task(struct task_struct *p, struct rq *rq) ++{ ++ __enqueue_task(p, rq); ++ list_add_tail(&p->run_list, p->array->queue + p->prio); ++} ++ ++static inline void enqueue_task_head(struct task_struct *p, struct rq *rq) ++{ ++ __enqueue_task(p, rq); ++ list_add(&p->run_list, p->array->queue + p->prio); ++} ++ ++/* ++ * requeue_task is only called when p->static_prio does not change. p->prio ++ * can change with dynamic tasks. ++ */ ++static void requeue_task(struct task_struct *p, struct rq *rq, ++ struct prio_array *old_array, int old_prio) ++{ ++ if (p->array == rq->expired) ++ queue_expired(p, rq); ++ list_move_tail(&p->run_list, p->array->queue + p->prio); ++ if (!rt_task(p)) { ++ if (list_empty(old_array->queue + old_prio)) ++ __clear_bit(old_prio, old_array->prio_bitmap); ++ set_dynamic_bit(p, rq); ++ } + } + + /* +@@ -759,20 +964,29 @@ static inline int __normal_prio(struct t + */ + + /* +- * Assume: static_prio_timeslice(NICE_TO_PRIO(0)) == DEF_TIMESLICE +- * If static_prio_timeslice() is ever changed to break this assumption then +- * this code will need modification +- */ +-#define TIME_SLICE_NICE_ZERO DEF_TIMESLICE +-#define LOAD_WEIGHT(lp) \ +- (((lp) * SCHED_LOAD_SCALE) / TIME_SLICE_NICE_ZERO) +-#define PRIO_TO_LOAD_WEIGHT(prio) \ +- LOAD_WEIGHT(static_prio_timeslice(prio)) +-#define RTPRIO_TO_LOAD_WEIGHT(rp) \ +- (PRIO_TO_LOAD_WEIGHT(MAX_RT_PRIO) + LOAD_WEIGHT(rp)) ++ * task_timeslice - the total duration a task can run during one major ++ * rotation. Returns value in milliseconds as the smallest value can be 1. ++ */ ++static int task_timeslice(struct task_struct *p) ++{ ++ int slice = p->quota; /* quota is in us */ ++ ++ if (!rt_task(p)) ++ slice += (PRIO_RANGE - 1 - TASK_USER_PRIO(p)) * slice; ++ return US_TO_MS(slice); ++} ++ ++/* ++ * The load weight is basically the task_timeslice in ms. Realtime tasks are ++ * special cased to be proportionately larger than nice -20 by their ++ * rt_priority. The weight for rt tasks can only be arbitrary at best. ++ */ ++#define RTPRIO_TO_LOAD_WEIGHT(rp) (rr_interval * 20 * (40 + rp)) + + static void set_load_weight(struct task_struct *p) + { ++ int load_weight; ++ + if (has_rt_policy(p)) { + #ifdef CONFIG_SMP + if (p == task_rq(p)->migration_thread) +@@ -781,12 +995,19 @@ static void set_load_weight(struct task_ + * Giving its load any weight will skew balancing + * adversely. + */ +- p->load_weight = 0; ++ load_weight = 0; + else + #endif +- p->load_weight = RTPRIO_TO_LOAD_WEIGHT(p->rt_priority); ++ load_weight = RTPRIO_TO_LOAD_WEIGHT(p->rt_priority); + } else +- p->load_weight = PRIO_TO_LOAD_WEIGHT(p->static_prio); ++ load_weight = task_timeslice(p); ++ /* ++ * idleprio tasks have much lower weight than SCHED_NORMAL tasks but ++ * still need to be weighted to allow balancing to occur. ++ */ ++ if (likely(!idleprio_task(p))) ++ load_weight *= PRIO_RANGE; ++ p->load_weight = load_weight; + } + + static inline void +@@ -814,28 +1035,38 @@ static inline void dec_nr_running(struct + } + + /* +- * Calculate the expected normal priority: i.e. priority +- * without taking RT-inheritance into account. Might be +- * boosted by interactivity modifiers. Changes upon fork, +- * setprio syscalls, and whenever the interactivity +- * estimator recalculates. ++ * __activate_task - move a task to the runqueue. + */ +-static inline int normal_prio(struct task_struct *p) ++static inline void __activate_task(struct task_struct *p, struct rq *rq) + { +- int prio; ++ enqueue_task(p, rq); ++ inc_nr_running(p, rq); ++} + ++/* ++ * __activate_idle_task - move idle task to the _front_ of runqueue. ++ */ ++static inline void __activate_idle_task(struct task_struct *p, struct rq *rq) ++{ ++ enqueue_task_head(p, rq); ++ inc_nr_running(p, rq); ++} ++ ++static inline int normal_prio(struct task_struct *p) ++{ + if (has_rt_policy(p)) +- prio = MAX_RT_PRIO-1 - p->rt_priority; ++ return MAX_RT_PRIO-1 - p->rt_priority; ++ /* Other tasks all have normal_prio set in recalc_task_prio */ ++ if (likely(p->prio >= MAX_RT_PRIO && p->prio < MAX_PRIO)) ++ return p->prio; + else +- prio = __normal_prio(p); +- return prio; ++ return p->static_prio; + } + + /* + * Calculate the current priority, i.e. the priority + * taken into account by the scheduler. This value might +- * be boosted by RT tasks, or might be boosted by +- * interactivity modifiers. Will be RT if the task got ++ * be boosted by RT tasks as it will be RT if the task got + * RT-boosted. If not then it returns p->normal_prio. + */ + static int effective_prio(struct task_struct *p) +@@ -852,111 +1083,41 @@ static int effective_prio(struct task_st + } + + /* +- * __activate_task - move a task to the runqueue. ++ * All tasks have quotas based on rr_interval. RT tasks all get rr_interval. ++ * From nice 1 to 19 they are smaller than it only if they are at least one ++ * tick still. Below nice 0 they get progressively larger. ++ * ie nice -6..0 = rr_interval. nice -10 = 2.5 * rr_interval ++ * nice -20 = 10 * rr_interval. nice 1-19 = rr_interval / 2. ++ * Value returned is in microseconds. + */ +-static void __activate_task(struct task_struct *p, struct rq *rq) ++static inline unsigned int rr_quota(struct task_struct *p) + { +- struct prio_array *target = rq->active; ++ int nice = TASK_NICE(p), rr = rr_interval; + +- if (batch_task(p)) +- target = rq->expired; +- enqueue_task(p, target); +- inc_nr_running(p, rq); +-} +- +-/* +- * __activate_idle_task - move idle task to the _front_ of runqueue. +- */ +-static inline void __activate_idle_task(struct task_struct *p, struct rq *rq) +-{ +- enqueue_task_head(p, rq->active); +- inc_nr_running(p, rq); ++ if (!rt_task(p)) { ++ if (nice < -6) { ++ rr *= nice * nice; ++ rr /= 40; ++ } else if (nice > 0) ++ rr = rr / 2 ? : 1; ++ } ++ return MS_TO_US(rr); + } + +-/* +- * Recalculate p->normal_prio and p->prio after having slept, +- * updating the sleep-average too: +- */ +-static int recalc_task_prio(struct task_struct *p, unsigned long long now) ++/* Every time we set the quota we need to set the load weight */ ++static void set_quota(struct task_struct *p) + { +- /* Caller must always ensure 'now >= p->timestamp' */ +- unsigned long sleep_time = now - p->timestamp; +- +- if (batch_task(p)) +- sleep_time = 0; +- +- if (likely(sleep_time > 0)) { +- /* +- * This ceiling is set to the lowest priority that would allow +- * a task to be reinserted into the active array on timeslice +- * completion. +- */ +- unsigned long ceiling = INTERACTIVE_SLEEP(p); +- +- if (p->mm && sleep_time > ceiling && p->sleep_avg < ceiling) { +- /* +- * Prevents user tasks from achieving best priority +- * with one single large enough sleep. +- */ +- p->sleep_avg = ceiling; +- /* +- * Using INTERACTIVE_SLEEP() as a ceiling places a +- * nice(0) task 1ms sleep away from promotion, and +- * gives it 700ms to round-robin with no chance of +- * being demoted. This is more than generous, so +- * mark this sleep as non-interactive to prevent the +- * on-runqueue bonus logic from intervening should +- * this task not receive cpu immediately. +- */ +- p->sleep_type = SLEEP_NONINTERACTIVE; +- } else { +- /* +- * Tasks waking from uninterruptible sleep are +- * limited in their sleep_avg rise as they +- * are likely to be waiting on I/O +- */ +- if (p->sleep_type == SLEEP_NONINTERACTIVE && p->mm) { +- if (p->sleep_avg >= ceiling) +- sleep_time = 0; +- else if (p->sleep_avg + sleep_time >= +- ceiling) { +- p->sleep_avg = ceiling; +- sleep_time = 0; +- } +- } +- +- /* +- * This code gives a bonus to interactive tasks. +- * +- * The boost works by updating the 'average sleep time' +- * value here, based on ->timestamp. The more time a +- * task spends sleeping, the higher the average gets - +- * and the higher the priority boost gets as well. +- */ +- p->sleep_avg += sleep_time; +- +- } +- if (p->sleep_avg > NS_MAX_SLEEP_AVG) +- p->sleep_avg = NS_MAX_SLEEP_AVG; +- } +- +- return effective_prio(p); ++ p->quota = rr_quota(p); ++ set_load_weight(p); + } + + /* + * activate_task - move a task to the runqueue and do priority recalculation +- * +- * Update all the scheduling statistics stuff. (sleep average +- * calculation, priority modifiers, etc.) + */ + static void activate_task(struct task_struct *p, struct rq *rq, int local) + { +- unsigned long long now; +- +- if (rt_task(p)) +- goto out; ++ unsigned long long now = sched_clock(); + +- now = sched_clock(); + #ifdef CONFIG_SMP + if (!local) { + /* Compensate for drifting sched_clock */ +@@ -977,32 +1138,9 @@ static void activate_task(struct task_st + (now - p->timestamp) >> 20); + } + +- p->prio = recalc_task_prio(p, now); +- +- /* +- * This checks to make sure it's not an uninterruptible task +- * that is now waking up. +- */ +- if (p->sleep_type == SLEEP_NORMAL) { +- /* +- * Tasks which were woken up by interrupts (ie. hw events) +- * are most likely of interactive nature. So we give them +- * the credit of extending their sleep time to the period +- * of time they spend on the runqueue, waiting for execution +- * on a CPU, first time around: +- */ +- if (in_interrupt()) +- p->sleep_type = SLEEP_INTERRUPTED; +- else { +- /* +- * Normal first-time wakeups get a credit too for +- * on-runqueue time, but it will be weighted down: +- */ +- p->sleep_type = SLEEP_INTERACTIVE; +- } +- } ++ set_quota(p); ++ p->prio = effective_prio(p); + p->timestamp = now; +-out: + __activate_task(p, rq); + } + +@@ -1012,8 +1150,7 @@ out: + static void deactivate_task(struct task_struct *p, struct rq *rq) + { + dec_nr_running(p, rq); +- dequeue_task(p, p->array); +- p->array = NULL; ++ dequeue_task(p, rq); + } + + /* +@@ -1095,7 +1232,7 @@ migrate_task(struct task_struct *p, int + * If the task is not on a runqueue (and not running), then + * it is sufficient to simply update the task's cpu field. + */ +- if (!p->array && !task_running(rq, p)) { ++ if (!task_queued(p) && !task_running(rq, p)) { + set_task_cpu(p, dest_cpu); + return 0; + } +@@ -1126,7 +1263,7 @@ void wait_task_inactive(struct task_stru + repeat: + rq = task_rq_lock(p, &flags); + /* Must be off runqueue entirely, not preempted. */ +- if (unlikely(p->array || task_running(rq, p))) { ++ if (unlikely(task_queued(p) || task_running(rq, p))) { + /* If it's preempted, we yield. It could be a while. */ + preempted = !task_running(rq, p); + task_rq_unlock(rq, &flags); +@@ -1391,6 +1528,31 @@ static inline int wake_idle(int cpu, str + } + #endif + ++/* ++ * We need to have a special definition for an idle runqueue when testing ++ * for preemption on CONFIG_HOTPLUG_CPU as the idle task may be scheduled as ++ * a realtime task in sched_idle_next. ++ */ ++#ifdef CONFIG_HOTPLUG_CPU ++#define rq_idle(rq) ((rq)->curr == (rq)->idle && !rt_task((rq)->curr)) ++#else ++#define rq_idle(rq) ((rq)->curr == (rq)->idle) ++#endif ++ ++static inline int task_preempts_curr(struct task_struct *p, struct rq *rq) ++{ ++ struct task_struct *curr = rq->curr; ++ ++ return ((p->array == task_rq(p)->active && ++ TASK_PREEMPTS_CURR(p, curr)) || rq_idle(rq)); ++} ++ ++static inline void try_preempt(struct task_struct *p, struct rq *rq) ++{ ++ if (task_preempts_curr(p, rq)) ++ resched_task(rq->curr); ++} ++ + /*** + * try_to_wake_up - wake up a thread + * @p: the to-be-woken-up thread +@@ -1422,7 +1584,7 @@ static int try_to_wake_up(struct task_st + if (!(old_state & state)) + goto out; + +- if (p->array) ++ if (task_queued(p)) + goto out_running; + + cpu = task_cpu(p); +@@ -1515,7 +1677,7 @@ out_set_cpu: + old_state = p->state; + if (!(old_state & state)) + goto out; +- if (p->array) ++ if (task_queued(p)) + goto out_running; + + this_cpu = smp_processor_id(); +@@ -1524,25 +1686,9 @@ out_set_cpu: + + out_activate: + #endif /* CONFIG_SMP */ +- if (old_state == TASK_UNINTERRUPTIBLE) { ++ if (old_state == TASK_UNINTERRUPTIBLE) + rq->nr_uninterruptible--; +- /* +- * Tasks on involuntary sleep don't earn +- * sleep_avg beyond just interactive state. +- */ +- p->sleep_type = SLEEP_NONINTERACTIVE; +- } else +- +- /* +- * Tasks that have marked their sleep as noninteractive get +- * woken up with their sleep average not weighted in an +- * interactive way. +- */ +- if (old_state & TASK_NONINTERACTIVE) +- p->sleep_type = SLEEP_NONINTERACTIVE; + +- +- activate_task(p, rq, cpu == this_cpu); + /* + * Sync wakeups (i.e. those types of wakeups where the waker + * has indicated that it will leave the CPU in short order) +@@ -1551,15 +1697,22 @@ out_activate: + * the waker guarantees that the freshly woken up task is going + * to be considered on this CPU.) + */ +- if (!sync || cpu != this_cpu) { +- if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); +- } ++ activate_task(p, rq, cpu == this_cpu); ++ if (!sync || cpu != this_cpu) ++ try_preempt(p, rq); + success = 1; + + out_running: + p->state = TASK_RUNNING; + out: ++ /* ++ * Special case when freezing we need to reschedule idleprio tasks ++ * as SCHED_NORMAL or else they'll never freeze ++ */ ++ if (idleprio_task(p) && freezing(p) && idleprio(p)) { ++ dequeue_task(p, rq); ++ enqueue_task(p, rq); ++ } + task_rq_unlock(rq, &flags); + + return success; +@@ -1577,7 +1730,6 @@ int fastcall wake_up_state(struct task_s + return try_to_wake_up(p, state, 0); + } + +-static void task_running_tick(struct rq *rq, struct task_struct *p); + /* + * Perform scheduler related setup for a newly forked process p. + * p is forked by current. +@@ -1605,7 +1757,6 @@ void fastcall sched_fork(struct task_str + p->prio = current->normal_prio; + + INIT_LIST_HEAD(&p->run_list); +- p->array = NULL; + #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) + if (unlikely(sched_info_on())) + memset(&p->sched_info, 0, sizeof(p->sched_info)); +@@ -1617,30 +1768,31 @@ void fastcall sched_fork(struct task_str + /* Want to start with kernel preemption disabled. */ + task_thread_info(p)->preempt_count = 1; + #endif ++ if (unlikely(p->policy == SCHED_FIFO)) ++ goto out; + /* + * Share the timeslice between parent and child, thus the + * total amount of pending timeslices in the system doesn't change, + * resulting in more scheduling fairness. + */ + local_irq_disable(); +- p->time_slice = (current->time_slice + 1) >> 1; +- /* +- * The remainder of the first timeslice might be recovered by +- * the parent if the child exits early enough. +- */ +- p->first_time_slice = 1; +- current->time_slice >>= 1; +- p->timestamp = sched_clock(); +- if (unlikely(!current->time_slice)) { ++ if (current->time_slice > 0) { ++ current->time_slice /= 2; ++ if (current->time_slice) ++ p->time_slice = current->time_slice; ++ else ++ p->time_slice = 1; + /* +- * This case is rare, it happens when the parent has only +- * a single jiffy left from its timeslice. Taking the +- * runqueue lock is not a problem. ++ * The remainder of the first timeslice might be recovered by ++ * the parent if the child exits early enough. + */ +- current->time_slice = 1; +- task_running_tick(cpu_rq(cpu), current); +- } ++ p->first_time_slice = 1; ++ } else ++ p->time_slice = 0; ++ ++ p->timestamp = sched_clock(); + local_irq_enable(); ++out: + put_cpu(); + } + +@@ -1662,38 +1814,16 @@ void fastcall wake_up_new_task(struct ta + this_cpu = smp_processor_id(); + cpu = task_cpu(p); + +- /* +- * We decrease the sleep average of forking parents +- * and children as well, to keep max-interactive tasks +- * from forking tasks that are max-interactive. The parent +- * (current) is done further down, under its lock. +- */ +- p->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(p) * +- CHILD_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS); +- +- p->prio = effective_prio(p); +- + if (likely(cpu == this_cpu)) { ++ activate_task(p, rq, 1); + if (!(clone_flags & CLONE_VM)) { + /* + * The VM isn't cloned, so we're in a good position to + * do child-runs-first in anticipation of an exec. This + * usually avoids a lot of COW overhead. + */ +- if (unlikely(!current->array)) +- __activate_task(p, rq); +- else { +- p->prio = current->prio; +- p->normal_prio = current->normal_prio; +- list_add_tail(&p->run_list, ¤t->run_list); +- p->array = current->array; +- p->array->nr_active++; +- inc_nr_running(p, rq); +- } + set_need_resched(); +- } else +- /* Run child last */ +- __activate_task(p, rq); ++ } + /* + * We skip the following code due to cpu == this_cpu + * +@@ -1710,19 +1840,16 @@ void fastcall wake_up_new_task(struct ta + */ + p->timestamp = (p->timestamp - this_rq->most_recent_timestamp) + + rq->most_recent_timestamp; +- __activate_task(p, rq); +- if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); ++ activate_task(p, rq, 0); ++ try_preempt(p, rq); + + /* + * Parent and child are on different CPUs, now get the +- * parent runqueue to update the parent's ->sleep_avg: ++ * parent runqueue to update the parent's ->flags: + */ + task_rq_unlock(rq, &flags); + this_rq = task_rq_lock(current, &flags); + } +- current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) * +- PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS); + task_rq_unlock(this_rq, &flags); + } + +@@ -1737,23 +1864,17 @@ void fastcall wake_up_new_task(struct ta + */ + void fastcall sched_exit(struct task_struct *p) + { ++ struct task_struct *parent; + unsigned long flags; + struct rq *rq; + +- /* +- * If the child was a (relative-) CPU hog then decrease +- * the sleep_avg of the parent as well. +- */ +- rq = task_rq_lock(p->parent, &flags); +- if (p->first_time_slice && task_cpu(p) == task_cpu(p->parent)) { +- p->parent->time_slice += p->time_slice; +- if (unlikely(p->parent->time_slice > task_timeslice(p))) +- p->parent->time_slice = task_timeslice(p); +- } +- if (p->sleep_avg < p->parent->sleep_avg) +- p->parent->sleep_avg = p->parent->sleep_avg / +- (EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg / +- (EXIT_WEIGHT + 1); ++ parent = p->parent; ++ rq = task_rq_lock(parent, &flags); ++ if (p->first_time_slice > 0 && task_cpu(p) == task_cpu(parent)) { ++ parent->time_slice += p->time_slice; ++ if (unlikely(parent->time_slice > parent->quota)) ++ parent->time_slice = parent->quota; ++ } + task_rq_unlock(rq, &flags); + } + +@@ -2085,23 +2206,17 @@ void sched_exec(void) + * pull_task - move a task from a remote runqueue to the local runqueue. + * Both runqueues must be locked. + */ +-static void pull_task(struct rq *src_rq, struct prio_array *src_array, +- struct task_struct *p, struct rq *this_rq, +- struct prio_array *this_array, int this_cpu) ++static void pull_task(struct rq *src_rq, struct task_struct *p, ++ struct rq *this_rq, int this_cpu) + { +- dequeue_task(p, src_array); ++ dequeue_task(p, src_rq); + dec_nr_running(p, src_rq); + set_task_cpu(p, this_cpu); + inc_nr_running(p, this_rq); +- enqueue_task(p, this_array); ++ enqueue_task(p, this_rq); + p->timestamp = (p->timestamp - src_rq->most_recent_timestamp) + + this_rq->most_recent_timestamp; +- /* +- * Note that idle threads have a prio of MAX_PRIO, for this test +- * to be always true for them. +- */ +- if (TASK_PREEMPTS_CURR(p, this_rq)) +- resched_task(this_rq->curr); ++ try_preempt(p, this_rq); + } + + /* +@@ -2144,7 +2259,16 @@ int can_migrate_task(struct task_struct + return 1; + } + +-#define rq_best_prio(rq) min((rq)->curr->prio, (rq)->best_expired_prio) ++static inline int rq_best_prio(struct rq *rq) ++{ ++ int best_prio, exp_prio; ++ ++ best_prio = sched_find_first_bit(rq->dyn_bitmap); ++ exp_prio = find_next_bit(rq->exp_bitmap, MAX_PRIO, MAX_RT_PRIO); ++ if (unlikely(best_prio > exp_prio)) ++ best_prio = exp_prio; ++ return best_prio; ++} + + /* + * move_tasks tries to move up to max_nr_move tasks and max_load_move weighted +@@ -2160,7 +2284,7 @@ static int move_tasks(struct rq *this_rq + { + int idx, pulled = 0, pinned = 0, this_best_prio, best_prio, + best_prio_seen, skip_for_load; +- struct prio_array *array, *dst_array; ++ struct prio_array *array; + struct list_head *head, *curr; + struct task_struct *tmp; + long rem_load_move; +@@ -2187,31 +2311,29 @@ static int move_tasks(struct rq *this_rq + * be cache-cold, thus switching CPUs has the least effect + * on them. + */ +- if (busiest->expired->nr_active) { +- array = busiest->expired; +- dst_array = this_rq->expired; +- } else { +- array = busiest->active; +- dst_array = this_rq->active; +- } +- ++ array = busiest->expired; + new_array: +- /* Start searching at priority 0: */ +- idx = 0; ++ /* Expired arrays don't have RT tasks so they're always MAX_RT_PRIO+ */ ++ if (array == busiest->expired) ++ idx = MAX_RT_PRIO; ++ else ++ idx = 0; + skip_bitmap: + if (!idx) +- idx = sched_find_first_bit(array->bitmap); ++ idx = sched_find_first_bit(array->prio_bitmap); + else +- idx = find_next_bit(array->bitmap, MAX_PRIO, idx); +- if (idx >= MAX_PRIO) { +- if (array == busiest->expired && busiest->active->nr_active) { ++ idx = find_next_bit(array->prio_bitmap, MAX_PRIO, idx); ++ if (idx == MAX_PRIO) { ++ if (array == busiest->idleprio && busiest->nr_idleprio) ++ goto found_idleprio; ++ if (array == busiest->expired) { + array = busiest->active; +- dst_array = this_rq->active; + goto new_array; + } + goto out; + } + ++found_idleprio: + head = array->queue + idx; + curr = head->prev; + skip_queue: +@@ -2233,11 +2355,22 @@ skip_queue: + best_prio_seen |= idx == best_prio; + if (curr != head) + goto skip_queue; ++ if (idx == MAX_PRIO) { ++ /* ++ * Occurs either when balancing idleprio tasks or ++ * there really are no more tasks to find. ++ */ ++ if (array == busiest->expired) { ++ array = busiest->active; ++ goto new_array; ++ } ++ goto out; ++ } + idx++; + goto skip_bitmap; + } + +- pull_task(busiest, array, tmp, this_rq, dst_array, this_cpu); ++ pull_task(busiest, tmp, this_rq, this_cpu); + pulled++; + rem_load_move -= tmp->load_weight; + +@@ -2250,6 +2383,13 @@ skip_queue: + this_best_prio = idx; + if (curr != head) + goto skip_queue; ++ if (idx == MAX_PRIO) { ++ if (array == busiest->expired) { ++ array = busiest->active; ++ goto new_array; ++ } ++ goto out; ++ } + idx++; + goto skip_bitmap; + } +@@ -3013,11 +3153,36 @@ EXPORT_PER_CPU_SYMBOL(kstat); + /* + * This is called on clock ticks and on context switches. + * Bank in p->sched_time the ns elapsed since the last tick or switch. ++ * CPU scheduler quota accounting is also performed here in microseconds. ++ * The value returned from sched_clock() occasionally gives bogus values so ++ * some sanity checking is required. + */ +-static inline void +-update_cpu_clock(struct task_struct *p, struct rq *rq, unsigned long long now) ++static void ++update_cpu_clock(struct task_struct *p, struct rq *rq, unsigned long long now, ++ int tick) + { +- p->sched_time += now - p->last_ran; ++ long time_diff = now - p->last_ran; ++ ++ if (tick) { ++ /* ++ * Called from scheduler_tick() there should be less than two ++ * jiffies worth, and not negative/overflow. ++ */ ++ if (time_diff > JIFFIES_TO_NS(2) || time_diff < 0) ++ time_diff = JIFFIES_TO_NS(1); ++ } else { ++ /* ++ * Called from context_switch there should be less than one ++ * jiffy worth, and not negative/overflow. There should be ++ * some time banked here so use a nominal 1us. ++ */ ++ if (time_diff > JIFFIES_TO_NS(1) || time_diff < 1) ++ time_diff = 1000; ++ } ++ /* time_slice accounting is done in usecs to avoid overflow on 32bit */ ++ if (p != rq->idle && p->policy != SCHED_FIFO) ++ p->time_slice -= time_diff / 1000; ++ p->sched_time += time_diff; + p->last_ran = rq->most_recent_timestamp = now; + } + +@@ -3038,27 +3203,6 @@ unsigned long long current_sched_time(co + } + + /* +- * We place interactive tasks back into the active array, if possible. +- * +- * To guarantee that this does not starve expired tasks we ignore the +- * interactivity of a task if the first expired task had to wait more +- * than a 'reasonable' amount of time. This deadline timeout is +- * load-dependent, as the frequency of array switched decreases with +- * increasing number of running tasks. We also ignore the interactivity +- * if a better static_prio task has expired: +- */ +-static inline int expired_starving(struct rq *rq) +-{ +- if (rq->curr->static_prio > rq->best_expired_prio) +- return 1; +- if (!STARVATION_LIMIT || !rq->expired_timestamp) +- return 0; +- if (jiffies - rq->expired_timestamp > STARVATION_LIMIT * rq->nr_running) +- return 1; +- return 0; +-} +- +-/* + * Account user cpu time to a process. + * @p: the process that the cpu time gets accounted to + * @hardirq_offset: the offset to subtract from hardirq_count() +@@ -3073,7 +3217,7 @@ void account_user_time(struct task_struc + + /* Add user time to cpustat. */ + tmp = cputime_to_cputime64(cputime); +- if (TASK_NICE(p) > 0) ++ if (TASK_NICE(p) > 0 || idleprio_task(p)) + cpustat->nice = cputime64_add(cpustat->nice, tmp); + else + cpustat->user = cputime64_add(cpustat->user, tmp); +@@ -3131,87 +3275,94 @@ void account_steal_time(struct task_stru + cpustat->steal = cputime64_add(cpustat->steal, tmp); + } + +-static void task_running_tick(struct rq *rq, struct task_struct *p) ++/* ++ * The task has used up its quota of running in this prio_level so it must be ++ * dropped a priority level, all managed by recalc_task_prio(). ++ */ ++static void task_expired_entitlement(struct rq *rq, struct task_struct *p) + { +- if (p->array != rq->active) { +- /* Task has expired but was not scheduled yet */ +- set_tsk_need_resched(p); ++ int overrun; ++ ++ reset_first_time_slice(p); ++ if (rt_task(p)) { ++ p->time_slice += p->quota; ++ list_move_tail(&p->run_list, p->array->queue + p->prio); + return; + } +- spin_lock(&rq->lock); ++ overrun = p->time_slice; ++ dequeue_task(p, rq); ++ enqueue_task(p, rq); + /* +- * The task was running during this tick - update the +- * time slice counter. Note: we do not update a thread's +- * priority until it either goes to sleep or uses up its +- * timeslice. This makes it possible for interactive tasks +- * to use up their timeslices at their highest priority levels. ++ * Subtract any extra time this task ran over its time_slice; ie ++ * overrun will either be 0 or negative. + */ +- if (rt_task(p)) { +- /* +- * RR tasks need a special form of timeslice management. +- * FIFO tasks have no timeslices. +- */ +- if ((p->policy == SCHED_RR) && !--p->time_slice) { +- p->time_slice = task_timeslice(p); +- p->first_time_slice = 0; +- set_tsk_need_resched(p); ++ p->time_slice += overrun; ++} + +- /* put it at the end of the queue: */ +- requeue_task(p, rq->active); +- } +- goto out_unlock; ++/* ++ * Test if SCHED_ISO tasks have run longer than their alloted period as RT ++ * tasks and set the refractory flag if necessary. There is 10% hysteresis ++ * for unsetting the flag. ++ */ ++static unsigned int test_ret_isorefractory(struct rq *rq) ++{ ++ if (likely(!rq->iso_refractory)) { ++ if (rq->iso_ticks / ISO_PERIOD > sched_iso_cpu) ++ rq->iso_refractory = 1; ++ } else { ++ if (rq->iso_ticks / ISO_PERIOD < (sched_iso_cpu * 90 / 100)) ++ rq->iso_refractory = 0; + } +- if (!--p->time_slice) { +- dequeue_task(p, rq->active); +- set_tsk_need_resched(p); +- p->prio = effective_prio(p); +- p->time_slice = task_timeslice(p); +- p->first_time_slice = 0; ++ return rq->iso_refractory; ++} + +- if (!rq->expired_timestamp) +- rq->expired_timestamp = jiffies; +- if (!TASK_INTERACTIVE(p) || expired_starving(rq)) { +- enqueue_task(p, rq->expired); +- if (p->static_prio < rq->best_expired_prio) +- rq->best_expired_prio = p->static_prio; +- } else +- enqueue_task(p, rq->active); +- } else { +- /* +- * Prevent a too long timeslice allowing a task to monopolize +- * the CPU. We do this by splitting up the timeslice into +- * smaller pieces. +- * +- * Note: this does not mean the task's timeslices expire or +- * get lost in any way, they just might be preempted by +- * another task of equal priority. (one with higher +- * priority would have preempted this task already.) We +- * requeue this task to the end of the list on this priority +- * level, which is in essence a round-robin of tasks with +- * equal priority. +- * +- * This only applies to tasks in the interactive +- * delta range with at least TIMESLICE_GRANULARITY to requeue. +- */ +- if (TASK_INTERACTIVE(p) && !((task_timeslice(p) - +- p->time_slice) % TIMESLICE_GRANULARITY(p)) && +- (p->time_slice >= TIMESLICE_GRANULARITY(p)) && +- (p->array == rq->active)) { ++/* No SCHED_ISO task was running so decrease rq->iso_ticks */ ++static inline void no_iso_tick(struct rq *rq) ++{ ++ rq->iso_ticks = rq->iso_ticks * (ISO_PERIOD - 1) / ISO_PERIOD; ++} + +- requeue_task(p, rq->active); +- set_tsk_need_resched(p); +- } ++/* This manages tasks that have run out of timeslice during a scheduler_tick */ ++static void task_running_tick(struct rq *rq, struct task_struct *p) ++{ ++ /* ++ * If a SCHED_ISO task is running we increment the iso_ticks. In ++ * order to prevent SCHED_ISO tasks from causing starvation in the ++ * presence of true RT tasks we account those as iso_ticks as well. ++ */ ++ if ((rt_task(p) || (iso_task(p) && !rq->iso_refractory))) { ++ if (rq->iso_ticks <= (ISO_PERIOD * 100) - 100) ++ rq->iso_ticks += 100; ++ } else ++ no_iso_tick(rq); ++ ++ if (iso_task(p)) { ++ if (unlikely(test_ret_isorefractory(rq))) { ++ if (isoprio_suitable(p)) { ++ /* ++ * SCHED_ISO task is running as RT and limit ++ * has been hit. Set the PF_ISOREF flag and ++ * force it to reschedule as SCHED_NORMAL ++ * by zeroing its time_slice ++ */ ++ p->flags |= PF_ISOREF; ++ p->time_slice = 0; ++ } ++ } else ++ p->flags &= ~PF_ISOREF; + } +-out_unlock: +- spin_unlock(&rq->lock); ++ /* SCHED_FIFO tasks never run out of timeslice. */ ++ if (p->time_slice > 0 || p->policy == SCHED_FIFO) ++ return; ++ /* p->time_slice <= 0 */ ++ set_tsk_need_resched(p); ++ if (likely(task_queued(p))) ++ task_expired_entitlement(rq, p); + } + + /* + * This function gets called by the timer code, with HZ frequency. + * We call it with interrupts disabled. +- * +- * It also gets called by the fork code, when changing the parent's +- * timeslices. + */ + void scheduler_tick(void) + { +@@ -3220,10 +3371,14 @@ void scheduler_tick(void) + int cpu = smp_processor_id(); + struct rq *rq = cpu_rq(cpu); + +- update_cpu_clock(p, rq, now); ++ update_cpu_clock(p, rq, now, 1); + ++ spin_lock(&rq->lock); + if (p != rq->idle) + task_running_tick(rq, p); ++ else ++ no_iso_tick(rq); ++ spin_unlock(&rq->lock); + #ifdef CONFIG_SMP + update_load(rq); + if (time_after_eq(jiffies, rq->next_balance)) +@@ -3269,10 +3424,80 @@ EXPORT_SYMBOL(sub_preempt_count); + + #endif + +-static inline int interactive_sleep(enum sleep_type sleep_type) ++static void reset_prio_levels(struct rq *rq) ++{ ++ rq->active->best_static_prio = MAX_PRIO - 1; ++ rq->expired->best_static_prio = MAX_PRIO - 1; ++ memset(rq->prio_level, 0, sizeof(int) * PRIO_RANGE); ++} ++ ++/* ++ * Only tasks running are SCHED_IDLEPRIO. Set the active array to the ++ * idleprio array and if it isn't already active ++ */ ++static struct task_struct *next_idleprio_task(struct rq *rq) + { +- return (sleep_type == SLEEP_INTERACTIVE || +- sleep_type == SLEEP_INTERRUPTED); ++ struct prio_array *array = rq->active; ++ struct list_head *queue; ++ ++ if (array != rq->idleprio) { ++ rq->active = rq->idleprio; ++ rq->expired = array; ++ array = rq->active; ++ rq->exp_bitmap = rq->expired->prio_bitmap; ++ rq->dyn_bitmap = rq->active->prio_bitmap; ++ } ++ rq->prio_rotation++; ++ reset_prio_levels(rq); ++ queue = array->queue + MAX_PRIO; ++ return list_entry(queue->next, struct task_struct, run_list); ++} ++ ++/* ++ * next_dynamic_task finds the next suitable dynamic task. ++ */ ++static inline struct task_struct *next_dynamic_task(struct rq *rq, int idx) ++{ ++ struct prio_array *array = rq->active; ++ struct task_struct *next; ++ struct list_head *queue; ++ int nstatic; ++ ++retry: ++ if (unlikely(rq->nr_running == rq->nr_idleprio)) ++ return next_idleprio_task(rq); ++ if (idx >= MAX_PRIO) { ++ /* There are no more tasks in the active array. Swap arrays */ ++ array = rq->expired; ++ rq->expired = rq->active; ++ rq->active = array; ++ rq->exp_bitmap = rq->expired->prio_bitmap; ++ rq->dyn_bitmap = rq->active->prio_bitmap; ++ rq->prio_rotation++; ++ idx = find_next_bit(rq->dyn_bitmap, MAX_PRIO, MAX_RT_PRIO); ++ reset_prio_levels(rq); ++ } ++ queue = array->queue + idx; ++ next = list_entry(queue->next, struct task_struct, run_list); ++ if (unlikely(next->time_slice <= 0 && !(iso_task(next) && ++ isoprio_suitable(next)))) { ++ /* ++ * Unlucky enough that this task ran out of time_slice ++ * before it hit a scheduler_tick so it should have its ++ * priority reassessed and choose another task (possibly ++ * the same one) ++ */ ++ task_expired_entitlement(rq, next); ++ idx = find_next_bit(rq->dyn_bitmap, MAX_PRIO, MAX_RT_PRIO); ++ goto retry; ++ } ++ next->rotation = rq->prio_rotation; ++ nstatic = next->static_prio; ++ if (nstatic < array->best_static_prio) ++ array->best_static_prio = nstatic; ++ if (idx > rq->prio_level[USER_PRIO(nstatic)]) ++ rq->prio_level[USER_PRIO(nstatic)] = idx; ++ return next; + } + + /* +@@ -3281,13 +3506,11 @@ static inline int interactive_sleep(enum + asmlinkage void __sched schedule(void) + { + struct task_struct *prev, *next; +- struct prio_array *array; + struct list_head *queue; + unsigned long long now; +- unsigned long run_time; +- int cpu, idx, new_prio; + long *switch_count; + struct rq *rq; ++ int cpu, idx; + + /* + * Test if we are atomic. Since do_exit() needs to call into +@@ -3323,18 +3546,6 @@ need_resched_nonpreemptible: + + schedstat_inc(rq, sched_cnt); + now = sched_clock(); +- if (likely((long long)(now - prev->timestamp) < NS_MAX_SLEEP_AVG)) { +- run_time = now - prev->timestamp; +- if (unlikely((long long)(now - prev->timestamp) < 0)) +- run_time = 0; +- } else +- run_time = NS_MAX_SLEEP_AVG; +- +- /* +- * Tasks charged proportionately less run_time at high sleep_avg to +- * delay them losing their interactive status +- */ +- run_time /= (CURRENT_BONUS(prev) ? : 1); + + spin_lock_irq(&rq->lock); + +@@ -3345,8 +3556,10 @@ need_resched_nonpreemptible: + unlikely(signal_pending(prev)))) + prev->state = TASK_RUNNING; + else { +- if (prev->state == TASK_UNINTERRUPTIBLE) ++ if (prev->state == TASK_UNINTERRUPTIBLE) { ++ prev->flags |= PF_NONSLEEP; + rq->nr_uninterruptible++; ++ } + deactivate_task(prev, rq); + } + } +@@ -3356,59 +3569,29 @@ need_resched_nonpreemptible: + idle_balance(cpu, rq); + if (!rq->nr_running) { + next = rq->idle; +- rq->expired_timestamp = 0; + goto switch_tasks; + } + } + +- array = rq->active; +- if (unlikely(!array->nr_active)) { +- /* +- * Switch the active and expired arrays. +- */ +- schedstat_inc(rq, sched_switch); +- rq->active = rq->expired; +- rq->expired = array; +- array = rq->active; +- rq->expired_timestamp = 0; +- rq->best_expired_prio = MAX_PRIO; ++ idx = sched_find_first_bit(rq->dyn_bitmap); ++ if (likely(idx > ISO_PRIO)) ++ next = next_dynamic_task(rq, idx); ++ else { ++ queue = rq->active->queue + idx; ++ next = list_entry(queue->next, struct task_struct, run_list); + } +- +- idx = sched_find_first_bit(array->bitmap); +- queue = array->queue + idx; +- next = list_entry(queue->next, struct task_struct, run_list); +- +- if (!rt_task(next) && interactive_sleep(next->sleep_type)) { +- unsigned long long delta = now - next->timestamp; +- if (unlikely((long long)(now - next->timestamp) < 0)) +- delta = 0; +- +- if (next->sleep_type == SLEEP_INTERACTIVE) +- delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128; +- +- array = next->array; +- new_prio = recalc_task_prio(next, next->timestamp + delta); +- +- if (unlikely(next->prio != new_prio)) { +- dequeue_task(next, array); +- next->prio = new_prio; +- enqueue_task(next, array); +- } +- } +- next->sleep_type = SLEEP_NORMAL; + switch_tasks: +- if (next == rq->idle) ++ if (next == rq->idle) { ++ reset_prio_levels(rq); ++ rq->prio_rotation++; + schedstat_inc(rq, sched_goidle); ++ } + prefetch(next); + prefetch_stack(next); + clear_tsk_need_resched(prev); + rcu_qsctr_inc(task_cpu(prev)); + +- update_cpu_clock(prev, rq, now); +- +- prev->sleep_avg -= run_time; +- if ((long)prev->sleep_avg <= 0) +- prev->sleep_avg = 0; ++ update_cpu_clock(prev, rq, now, 0); + prev->timestamp = prev->last_ran = now; + + sched_info_switch(prev, next); +@@ -3844,29 +4027,22 @@ EXPORT_SYMBOL(sleep_on_timeout); + */ + void rt_mutex_setprio(struct task_struct *p, int prio) + { +- struct prio_array *array; + unsigned long flags; ++ int queued, oldprio; + struct rq *rq; +- int oldprio; + + BUG_ON(prio < 0 || prio > MAX_PRIO); + + rq = task_rq_lock(p, &flags); + + oldprio = p->prio; +- array = p->array; +- if (array) +- dequeue_task(p, array); ++ queued = task_queued(p); ++ if (queued) ++ dequeue_task(p, rq); + p->prio = prio; + +- if (array) { +- /* +- * If changing to an RT priority then queue it +- * in the active array! +- */ +- if (rt_task(p)) +- array = rq->active; +- enqueue_task(p, array); ++ if (queued) { ++ enqueue_task(p, rq); + /* + * Reschedule if we are currently running on this runqueue and + * our priority decreased, or if we are not currently running on +@@ -3875,8 +4051,8 @@ void rt_mutex_setprio(struct task_struct + if (task_running(rq, p)) { + if (p->prio > oldprio) + resched_task(rq->curr); +- } else if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); ++ } else ++ try_preempt(p, rq); + } + task_rq_unlock(rq, &flags); + } +@@ -3885,8 +4061,7 @@ void rt_mutex_setprio(struct task_struct + + void set_user_nice(struct task_struct *p, long nice) + { +- struct prio_array *array; +- int old_prio, delta; ++ int queued, old_prio,delta; + unsigned long flags; + struct rq *rq; + +@@ -3907,26 +4082,27 @@ void set_user_nice(struct task_struct *p + p->static_prio = NICE_TO_PRIO(nice); + goto out_unlock; + } +- array = p->array; +- if (array) { +- dequeue_task(p, array); ++ queued = task_queued(p); ++ if (queued) { ++ dequeue_task(p, rq); + dec_raw_weighted_load(rq, p); + } + + p->static_prio = NICE_TO_PRIO(nice); +- set_load_weight(p); + old_prio = p->prio; + p->prio = effective_prio(p); ++ set_quota(p); + delta = p->prio - old_prio; + +- if (array) { +- enqueue_task(p, array); ++ if (queued) { ++ enqueue_task(p, rq); + inc_raw_weighted_load(rq, p); + /* + * If the task increased its priority or is running and + * lowered its priority, then reschedule its CPU: + */ +- if (delta < 0 || (delta > 0 && task_running(rq, p))) ++ if (delta < 0 || ((delta > 0 || idleprio_task(p)) && ++ task_running(rq, p))) + resched_task(rq->curr); + } + out_unlock: +@@ -3996,7 +4172,7 @@ asmlinkage long sys_nice(int increment) + * + * This is the priority value as seen by users in /proc. + * RT tasks are offset by -200. Normal tasks are centered +- * around 0, value goes from -16 to +15. ++ * around 0, value goes from 0 to +39. + */ + int task_prio(const struct task_struct *p) + { +@@ -4043,19 +4219,14 @@ static inline struct task_struct *find_p + /* Actually do priority change: must hold rq lock. */ + static void __setscheduler(struct task_struct *p, int policy, int prio) + { +- BUG_ON(p->array); ++ BUG_ON(task_queued(p)); + + p->policy = policy; + p->rt_priority = prio; + p->normal_prio = normal_prio(p); + /* we are holding p->pi_lock already */ + p->prio = rt_mutex_getprio(p); +- /* +- * SCHED_BATCH tasks are treated as perpetual CPU hogs: +- */ +- if (policy == SCHED_BATCH) +- p->sleep_avg = 0; +- set_load_weight(p); ++ set_quota(p); + } + + /** +@@ -4069,19 +4240,27 @@ static void __setscheduler(struct task_s + int sched_setscheduler(struct task_struct *p, int policy, + struct sched_param *param) + { +- int retval, oldprio, oldpolicy = -1; +- struct prio_array *array; ++ struct sched_param zero_param = { .sched_priority = 0 }; ++ int queued, retval, oldprio, oldpolicy = -1; + unsigned long flags; + struct rq *rq; + + /* may grab non-irq protected spin_locks */ + BUG_ON(in_interrupt()); ++ if (is_rt_policy(policy) && !capable(CAP_SYS_NICE)) { ++ /* ++ * If the caller requested an RT policy without having the ++ * necessary rights, we downgrade the policy to SCHED_ISO. ++ * We also set the parameter to zero to pass the checks. ++ */ ++ policy = SCHED_ISO; ++ param = &zero_param; ++ } + recheck: + /* double check policy once rq lock held */ + if (policy < 0) + policy = oldpolicy = p->policy; +- else if (policy != SCHED_FIFO && policy != SCHED_RR && +- policy != SCHED_NORMAL && policy != SCHED_BATCH) ++ else if (!SCHED_RANGE(policy)) + return -EINVAL; + /* + * Valid priorities for SCHED_FIFO and SCHED_RR are +@@ -4116,6 +4295,31 @@ recheck: + if (param->sched_priority > p->rt_priority && + param->sched_priority > rlim_rtprio) + return -EPERM; ++ } else { ++ switch (p->policy) { ++ /* ++ * Can only downgrade policies but not back to ++ * SCHED_NORMAL ++ */ ++ case SCHED_ISO: ++ if (policy == SCHED_ISO) ++ goto out; ++ if (policy == SCHED_NORMAL) ++ return -EPERM; ++ break; ++ case SCHED_BATCH: ++ if (policy == SCHED_BATCH) ++ goto out; ++ if (policy != SCHED_IDLEPRIO) ++ return -EPERM; ++ break; ++ case SCHED_IDLEPRIO: ++ if (policy == SCHED_IDLEPRIO) ++ goto out; ++ return -EPERM; ++ default: ++ break; ++ } + } + + /* can't change other user's priorities */ +@@ -4124,6 +4328,11 @@ recheck: + return -EPERM; + } + ++ if (!(p->mm) && policy == SCHED_IDLEPRIO) { ++ /* Don't allow kernel threads to be SCHED_IDLEPRIO. */ ++ return -EINVAL; ++ } ++ + retval = security_task_setscheduler(p, policy, param); + if (retval) + return retval; +@@ -4144,12 +4353,12 @@ recheck: + spin_unlock_irqrestore(&p->pi_lock, flags); + goto recheck; + } +- array = p->array; +- if (array) ++ queued = task_queued(p); ++ if (queued) + deactivate_task(p, rq); + oldprio = p->prio; + __setscheduler(p, policy, param->sched_priority); +- if (array) { ++ if (queued) { + __activate_task(p, rq); + /* + * Reschedule if we are currently running on this runqueue and +@@ -4159,14 +4368,15 @@ recheck: + if (task_running(rq, p)) { + if (p->prio > oldprio) + resched_task(rq->curr); +- } else if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); ++ } else ++ try_preempt(p, rq); + } + __task_rq_unlock(rq); + spin_unlock_irqrestore(&p->pi_lock, flags); + + rt_mutex_adjust_pi(p); + ++out: + return 0; + } + EXPORT_SYMBOL_GPL(sched_setscheduler); +@@ -4433,41 +4643,34 @@ asmlinkage long sys_sched_getaffinity(pi + * sys_sched_yield - yield the current processor to other threads. + * + * This function yields the current CPU by moving the calling thread +- * to the expired array. If there are no other threads running on this +- * CPU then this function will return. ++ * to the expired array if SCHED_NORMAL or the end of its current priority ++ * queue if a realtime task. If there are no other threads running on this ++ * cpu this function will return. + */ + asmlinkage long sys_sched_yield(void) + { + struct rq *rq = this_rq_lock(); +- struct prio_array *array = current->array, *target = rq->expired; ++ struct task_struct *p = current; + + schedstat_inc(rq, yld_cnt); +- /* +- * We implement yielding by moving the task into the expired +- * queue. +- * +- * (special rule: RT tasks will just roundrobin in the active +- * array.) +- */ +- if (rt_task(current)) +- target = rq->active; +- +- if (array->nr_active == 1) { +- schedstat_inc(rq, yld_act_empty); +- if (!rq->expired->nr_active) +- schedstat_inc(rq, yld_both_empty); +- } else if (!rq->expired->nr_active) +- schedstat_inc(rq, yld_exp_empty); +- +- if (array != target) { +- dequeue_task(current, array); +- enqueue_task(current, target); +- } else +- /* +- * requeue_task is cheaper so perform that if possible. +- */ +- requeue_task(current, array); ++ if (rq->nr_running == 1) ++ schedstat_inc(rq, yld_both_empty); ++ else { ++ struct prio_array *old_array = p->array; ++ int old_prio = p->prio; ++ ++ if (idleprio_task(p)) { ++ dequeue_task(p, rq); ++ enqueue_task(p, rq); ++ goto out_release; ++ } ++ /* p->prio will be updated in requeue_task via queue_expired */ ++ if (!rt_task(p)) ++ p->array = rq->expired; ++ requeue_task(p, rq, old_array, old_prio); ++ } + ++out_release: + /* + * Since we are going to call schedule() anyway, there's + * no need to preempt or enable interrupts: +@@ -4619,6 +4822,8 @@ asmlinkage long sys_sched_get_priority_m + break; + case SCHED_NORMAL: + case SCHED_BATCH: ++ case SCHED_ISO: ++ case SCHED_IDLEPRIO: + ret = 0; + break; + } +@@ -4643,6 +4848,8 @@ asmlinkage long sys_sched_get_priority_m + break; + case SCHED_NORMAL: + case SCHED_BATCH: ++ case SCHED_ISO: ++ case SCHED_IDLEPRIO: + ret = 0; + } + return ret; +@@ -4676,8 +4883,8 @@ long sys_sched_rr_get_interval(pid_t pid + if (retval) + goto out_unlock; + +- jiffies_to_timespec(p->policy == SCHED_FIFO ? +- 0 : task_timeslice(p), &t); ++ t = ns_to_timespec(p->policy == SCHED_FIFO ? 0 : ++ MS_TO_NS(task_timeslice(p))); + read_unlock(&tasklist_lock); + retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0; + out_nounlock: +@@ -4771,10 +4978,10 @@ void __cpuinit init_idle(struct task_str + struct rq *rq = cpu_rq(cpu); + unsigned long flags; + +- idle->timestamp = sched_clock(); +- idle->sleep_avg = 0; +- idle->array = NULL; +- idle->prio = idle->normal_prio = MAX_PRIO; ++ bitmap_zero(idle->bitmap, PRIO_RANGE); ++ idle->timestamp = idle->last_ran = sched_clock(); ++ idle->array = rq->active; ++ idle->prio = idle->normal_prio = NICE_TO_PRIO(0); + idle->state = TASK_RUNNING; + idle->cpus_allowed = cpumask_of_cpu(cpu); + set_task_cpu(idle, cpu); +@@ -4893,7 +5100,7 @@ static int __migrate_task(struct task_st + goto out; + + set_task_cpu(p, dest_cpu); +- if (p->array) { ++ if (task_queued(p)) { + /* + * Sync timestamp with rq_dest's before activating. + * The same thing could be achieved by doing this step +@@ -4904,8 +5111,7 @@ static int __migrate_task(struct task_st + + rq_dest->most_recent_timestamp; + deactivate_task(p, rq_src); + __activate_task(p, rq_dest); +- if (TASK_PREEMPTS_CURR(p, rq_dest)) +- resched_task(rq_dest->curr); ++ try_preempt(p, rq_dest); + } + ret = 1; + out: +@@ -5194,7 +5400,7 @@ migration_call(struct notifier_block *nf + /* Idle task back to normal (off runqueue, low prio) */ + rq = task_rq_lock(rq->idle, &flags); + deactivate_task(rq->idle, rq); +- rq->idle->static_prio = MAX_PRIO; ++ rq->idle->static_prio = NICE_TO_PRIO(0); + __setscheduler(rq->idle, SCHED_NORMAL, 0); + migrate_dead_tasks(cpu); + task_rq_unlock(rq, &flags); +@@ -6706,6 +6912,13 @@ void __init sched_init_smp(void) + /* Move init over to a non-isolated CPU */ + if (set_cpus_allowed(current, non_isolated_cpus) < 0) + BUG(); ++ ++ /* ++ * Assume that every added cpu gives us slightly less overall latency ++ * allowing us to increase the base rr_interval, but in a non linear ++ * fashion. ++ */ ++ rr_interval *= 1 + ilog2(num_online_cpus()); + } + #else + void __init sched_init_smp(void) +@@ -6727,6 +6940,16 @@ void __init sched_init(void) + { + int i, j, k; + ++ /* Generate the priority matrix */ ++ for (i = 0; i < PRIO_RANGE; i++) { ++ bitmap_fill(prio_matrix[i], PRIO_RANGE); ++ j = PRIO_RANGE * PRIO_RANGE / (PRIO_RANGE - i); ++ for (k = 0; k <= PRIO_RANGE * (PRIO_RANGE - 1); k += j) { ++ __clear_bit(PRIO_RANGE - 1 - (k / PRIO_RANGE), ++ prio_matrix[i]); ++ } ++ } ++ + for_each_possible_cpu(i) { + struct prio_array *array; + struct rq *rq; +@@ -6734,12 +6957,20 @@ void __init sched_init(void) + rq = cpu_rq(i); + spin_lock_init(&rq->lock); + lockdep_set_class(&rq->lock, &rq->rq_lock_key); ++ rq->iso_ticks = 0; + rq->nr_running = 0; ++ rq->nr_idleprio = 0; ++ rq->prio_rotation = 0; + rq->active = rq->arrays; ++ rq->idleprio = rq->active; + rq->expired = rq->arrays + 1; +- rq->best_expired_prio = MAX_PRIO; ++ reset_prio_levels(rq); ++ rq->dyn_bitmap = rq->active->prio_bitmap; ++ rq->exp_bitmap = rq->expired->prio_bitmap; + + #ifdef CONFIG_SMP ++ rq->active->rq = rq; ++ rq->expired->rq = rq; + rq->sd = NULL; + for (j = 1; j < 3; j++) + rq->cpu_load[j] = 0; +@@ -6752,16 +6983,16 @@ void __init sched_init(void) + atomic_set(&rq->nr_iowait, 0); + + for (j = 0; j < 2; j++) { ++ + array = rq->arrays + j; +- for (k = 0; k < MAX_PRIO; k++) { ++ for (k = 0; k <= MAX_PRIO; k++) + INIT_LIST_HEAD(array->queue + k); +- __clear_bit(k, array->bitmap); +- } +- // delimiter for bitsearch +- __set_bit(MAX_PRIO, array->bitmap); ++ bitmap_zero(array->prio_bitmap, MAX_PRIO); ++ /* delimiter for bitsearch */ ++ __set_bit(MAX_PRIO, array->prio_bitmap); + } +- } + ++ } + set_load_weight(&init_task); + + #ifdef CONFIG_SMP +@@ -6815,24 +7046,24 @@ EXPORT_SYMBOL(__might_sleep); + #ifdef CONFIG_MAGIC_SYSRQ + void normalize_rt_tasks(void) + { +- struct prio_array *array; + struct task_struct *p; + unsigned long flags; + struct rq *rq; ++ int queued; + + read_lock_irq(&tasklist_lock); + for_each_process(p) { +- if (!rt_task(p)) ++ if (!rt_task(p) && !iso_task(p)) + continue; + + spin_lock_irqsave(&p->pi_lock, flags); + rq = __task_rq_lock(p); + +- array = p->array; +- if (array) ++ queued = task_queued(p); ++ if (queued) + deactivate_task(p, task_rq(p)); + __setscheduler(p, SCHED_NORMAL, 0); +- if (array) { ++ if (queued) { + __activate_task(p, task_rq(p)); + resched_task(rq->curr); + } +Index: linux-2.6.21-ck1/Documentation/sysctl/kernel.txt +=================================================================== +--- linux-2.6.21-ck1.orig/Documentation/sysctl/kernel.txt 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/Documentation/sysctl/kernel.txt 2007-05-04 12:10:55.000000000 +1000 +@@ -25,6 +25,9 @@ show up in /proc/sys/kernel: + - domainname + - hostname + - hotplug ++- interactive ++- iso_cpu ++- iso_period + - java-appletviewer [ binfmt_java, obsolete ] + - java-interpreter [ binfmt_java, obsolete ] + - kstack_depth_to_print [ X86 only ] +@@ -43,6 +46,7 @@ show up in /proc/sys/kernel: + - printk + - real-root-dev ==> Documentation/initrd.txt + - reboot-cmd [ SPARC only ] ++- rr_interval + - rtsig-max + - rtsig-nr + - sem +@@ -164,6 +168,40 @@ Default value is "/sbin/hotplug". + + ============================================================== + ++interactive: ++ ++The staircase-deadline cpu scheduler can be set in either purely ++forward-looking mode for absolutely rigid fairness and cpu distribution ++according to nice level, or it can allow a small per-process history ++to smooth out cpu usage perturbations common in interactive tasks by ++enabling this sysctl. While small fairness issues can arise with this ++enabled, overall fairness is usually still strongly maintained and ++starvation is never possible. Enabling this can significantly smooth ++out 3d graphics and games. ++ ++Default value is 1 (enabled). ++ ++============================================================== ++ ++iso_cpu: ++ ++This sets the percentage cpu that the unprivileged SCHED_ISO tasks can ++run effectively at realtime priority, averaged over a rolling iso_period ++seconds. ++ ++Set to 80 (percent) by default. ++ ++============================================================== ++ ++iso_period: ++ ++This sets the number of seconds over which SCHED_ISO cpu usage is averaged ++to see if it exceeds its allocated cpu bandwidth. ++ ++Set to 5 (seconds) by default. ++ ++============================================================== ++ + l2cr: (PPC only) + + This flag controls the L2 cache of G3 processor boards. If +@@ -288,6 +326,19 @@ rebooting. ??? + + ============================================================== + ++rr_interval: ++ ++This is the smallest duration that any cpu process scheduling unit ++will run for. Increasing this value can increase throughput of cpu ++bound tasks substantially but at the expense of increased latencies ++overall. This value is in milliseconds and the default value chosen ++depends on the number of cpus available at scheduler initialisation ++with a minimum of 8. ++ ++Valid values are from 1-5000. ++ ++============================================================== ++ + rtsig-max & rtsig-nr: + + The file rtsig-max can be used to tune the maximum number +Index: linux-2.6.21-ck1/kernel/sysctl.c +=================================================================== +--- linux-2.6.21-ck1.orig/kernel/sysctl.c 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/kernel/sysctl.c 2007-05-04 12:24:21.000000000 +1000 +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -70,12 +71,17 @@ extern int suid_dumpable; + extern char core_pattern[]; + extern int pid_max; + extern int min_free_kbytes; ++extern int vm_tail_largefiles; + extern int printk_ratelimit_jiffies; + extern int printk_ratelimit_burst; + extern int pid_max_min, pid_max_max; + extern int sysctl_drop_caches; + extern int percpu_pagelist_fraction; + extern int compat_log; ++extern int rr_interval; ++extern int sched_interactive; ++extern int sched_iso_cpu; ++extern int sched_iso_period; + + /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */ + static int maxolduid = 65535; +@@ -159,6 +165,14 @@ int sysctl_legacy_va_layout; + #endif + + ++/* Constants for minimum and maximum testing. ++ We use these as one-element integer vectors. */ ++static int __read_mostly zero; ++static int __read_mostly one = 1; ++static int __read_mostly one_hundred = 100; ++static int __read_mostly five_thousand = 5000; ++ ++ + /* The default sysctl tables: */ + + static ctl_table root_table[] = { +@@ -499,6 +513,47 @@ static ctl_table kern_table[] = { + .mode = 0444, + .proc_handler = &proc_dointvec, + }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "rr_interval", ++ .data = &rr_interval, ++ .maxlen = sizeof (int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ .strategy = &sysctl_intvec, ++ .extra1 = &one, ++ .extra2 = &five_thousand, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "interactive", ++ .data = &sched_interactive, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "iso_cpu", ++ .data = &sched_iso_cpu, ++ .maxlen = sizeof (int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ .strategy = &sysctl_intvec, ++ .extra1 = &zero, ++ .extra2 = &one_hundred, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "iso_period", ++ .data = &sched_iso_period, ++ .maxlen = sizeof (int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ .strategy = &sysctl_intvec, ++ .extra1 = &one, ++ .extra2 = &one_hundred, ++ }, + #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) + { + .ctl_name = KERN_UNKNOWN_NMI_PANIC, +@@ -607,12 +662,6 @@ static ctl_table kern_table[] = { + { .ctl_name = 0 } + }; + +-/* Constants for minimum and maximum testing in vm_table. +- We use these as one-element integer vectors. */ +-static int zero; +-static int one_hundred = 100; +- +- + static ctl_table vm_table[] = { + { + .ctl_name = VM_OVERCOMMIT_MEMORY, +@@ -693,16 +742,32 @@ static ctl_table vm_table[] = { + .proc_handler = &proc_dointvec, + }, + { +- .ctl_name = VM_SWAPPINESS, +- .procname = "swappiness", +- .data = &vm_swappiness, +- .maxlen = sizeof(vm_swappiness), ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "mapped", ++ .data = &vm_mapped, ++ .maxlen = sizeof(vm_mapped), + .mode = 0644, + .proc_handler = &proc_dointvec_minmax, + .strategy = &sysctl_intvec, + .extra1 = &zero, + .extra2 = &one_hundred, + }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "hardmaplimit", ++ .data = &vm_hardmaplimit, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "tail_largefiles", ++ .data = &vm_tail_largefiles, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, + #ifdef CONFIG_HUGETLB_PAGE + { + .ctl_name = VM_HUGETLB_PAGES, +@@ -859,6 +924,16 @@ static ctl_table vm_table[] = { + .extra1 = &zero, + }, + #endif ++#ifdef CONFIG_SWAP_PREFETCH ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "swap_prefetch", ++ .data = &swap_prefetch, ++ .maxlen = sizeof(swap_prefetch), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++#endif + { .ctl_name = 0 } + }; + +Index: linux-2.6.21-ck1/fs/pipe.c +=================================================================== +--- linux-2.6.21-ck1.orig/fs/pipe.c 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/fs/pipe.c 2007-05-04 12:10:54.000000000 +1000 +@@ -41,12 +41,7 @@ void pipe_wait(struct pipe_inode_info *p + { + DEFINE_WAIT(wait); + +- /* +- * Pipes are system-local resources, so sleeping on them +- * is considered a noninteractive wait: +- */ +- prepare_to_wait(&pipe->wait, &wait, +- TASK_INTERRUPTIBLE | TASK_NONINTERACTIVE); ++ prepare_to_wait(&pipe->wait, &wait, TASK_INTERRUPTIBLE); + if (pipe->inode) + mutex_unlock(&pipe->inode->i_mutex); + schedule(); +Index: linux-2.6.21-ck1/Documentation/sched-design.txt +=================================================================== +--- linux-2.6.21-ck1.orig/Documentation/sched-design.txt 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/Documentation/sched-design.txt 2007-05-04 12:10:54.000000000 +1000 +@@ -1,11 +1,14 @@ +- Goals, Design and Implementation of the +- new ultra-scalable O(1) scheduler ++ Goals, Design and Implementation of the ultra-scalable O(1) scheduler by ++ Ingo Molnar and theStaircase Deadline cpu scheduler policy designed by ++ Con Kolivas. + + +- This is an edited version of an email Ingo Molnar sent to +- lkml on 4 Jan 2002. It describes the goals, design, and +- implementation of Ingo's new ultra-scalable O(1) scheduler. +- Last Updated: 18 April 2002. ++ This was originally an edited version of an email Ingo Molnar sent to ++ lkml on 4 Jan 2002. It describes the goals, design, and implementation ++ of Ingo's ultra-scalable O(1) scheduler. It now contains a description ++ of the Staircase Deadline priority scheduler that was built on this ++ design. ++ Last Updated: Fri, 4 May 2007 + + + Goal +@@ -163,3 +166,222 @@ certain code paths and data constructs. + code is smaller than the old one. + + Ingo ++ ++ ++Staircase Deadline cpu scheduler policy ++================================================ ++ ++Design summary ++============== ++ ++A novel design which incorporates a foreground-background descending priority ++system (the staircase) via a bandwidth allocation matrix according to nice ++level. ++ ++ ++Features ++======== ++ ++A starvation free, strict fairness O(1) scalable design with interactivity ++as good as the above restrictions can provide. There is no interactivity ++estimator, no sleep/run measurements and only simple fixed accounting. ++The design has strict enough a design and accounting that task behaviour ++can be modelled and maximum scheduling latencies can be predicted by ++the virtual deadline mechanism that manages runqueues. The prime concern ++in this design is to maintain fairness at all costs determined by nice level, ++yet to maintain as good interactivity as can be allowed within the ++constraints of strict fairness. ++ ++ ++Design description ++================== ++ ++SD works off the principle of providing each task a quota of runtime that it is ++allowed to run at a number of priority levels determined by its static priority ++(ie. its nice level). If the task uses up its quota it has its priority ++decremented to the next level determined by a priority matrix. Once every ++runtime quota has been consumed of every priority level, a task is queued on the ++"expired" array. When no other tasks exist with quota, the expired array is ++activated and fresh quotas are handed out. This is all done in O(1). ++ ++Design details ++============== ++ ++Each task keeps a record of its own entitlement of cpu time. Most of the rest of ++these details apply to non-realtime tasks as rt task management is straight ++forward. ++ ++Each runqueue keeps a record of what major epoch it is up to in the ++rq->prio_rotation field which is incremented on each major epoch. It also ++keeps a record of the current prio_level for each static priority task. ++ ++Each task keeps a record of what major runqueue epoch it was last running ++on in p->rotation. It also keeps a record of what priority levels it has ++already been allocated quota from during this epoch in a bitmap p->bitmap. ++ ++The only tunable that determines all other details is the RR_INTERVAL. This ++is set to 8ms, and is scaled gently upwards with more cpus. This value is ++tunable via a /proc interface. ++ ++All tasks are initially given a quota based on RR_INTERVAL. This is equal to ++RR_INTERVAL between nice values of -6 and 0, half that size above nice 0, and ++progressively larger for nice values from -1 to -20. This is assigned to ++p->quota and only changes with changes in nice level. ++ ++As a task is first queued, it checks in recalc_task_prio to see if it has run at ++this runqueue's current priority rotation. If it has not, it will have its ++p->prio level set according to the first slot in a "priority matrix" and will be ++given a p->time_slice equal to the p->quota, and has its allocation bitmap bit ++set in p->bitmap for this prio level. It is then queued on the current active ++priority array. ++ ++If a task has already been running during this major epoch, and it has ++p->time_slice left and the rq->prio_quota for the task's p->prio still ++has quota, it will be placed back on the active array, but no more quota ++will be added. ++ ++If a task has been running during this major epoch, but does not have ++p->time_slice left, it will find the next lowest priority in its bitmap that it ++has not been allocated quota from. It then gets the a full quota in ++p->time_slice. It is then queued on the current active priority array at the ++newly determined lower priority. ++ ++If a task has been running during this major epoch, and does not have ++any entitlement left in p->bitmap and no time_slice left, it will have its ++bitmap cleared, and be queued at its best prio again, but on the expired ++priority array. ++ ++When a task is queued, it has its relevant bit set in the array->prio_bitmap. ++ ++p->time_slice is stored in nanosconds and is updated via update_cpu_clock on ++schedule() and scheduler_tick. If p->time_slice is below zero then the ++recalc_task_prio is readjusted and the task rescheduled. ++ ++ ++Priority Matrix ++=============== ++ ++In order to minimise the latencies between tasks of different nice levels ++running concurrently, the dynamic priority slots where different nice levels ++are queued are dithered instead of being sequential. What this means is that ++there are 40 priority slots where a task may run during one major rotation, ++and the allocation of slots is dependant on nice level. In the ++following table, a zero represents a slot where the task may run. ++ ++PRIORITY:0..................20.................39 ++nice -20 0000000000000000000000000000000000000000 ++nice -10 1000100010001000100010001000100010010000 ++nice 0 1010101010101010101010101010101010101010 ++nice 5 1011010110110101101101011011010110110110 ++nice 10 1110111011101110111011101110111011101110 ++nice 15 1111111011111110111111101111111011111110 ++nice 19 1111111111111111111111111111111111111110 ++ ++As can be seen, a nice -20 task runs in every priority slot whereas a nice 19 ++task only runs one slot per major rotation. This dithered table allows for the ++smallest possible maximum latencies between tasks of varying nice levels, thus ++allowing vastly different nice levels to be used. ++ ++SCHED_BATCH tasks are managed slightly differently, receiving only the top ++slots from its priority bitmap giving it equal cpu as SCHED_NORMAL, but ++slightly higher latencies. ++ ++ ++Modelling deadline behaviour ++============================ ++ ++As the accounting in this design is hard and not modified by sleep average ++calculations or interactivity modifiers, it is possible to accurately ++predict the maximum latency that a task may experience under different ++conditions. This is a virtual deadline mechanism enforced by mandatory ++timeslice expiration and not outside bandwidth measurement. ++ ++The maximum duration a task can run during one major epoch is determined by its ++nice value. Nice 0 tasks can run at 19 different priority levels for RR_INTERVAL ++duration during each epoch. Nice 10 tasks can run at 9 priority levels for each ++epoch, and so on. The table in the priority matrix above demonstrates how this ++is enforced. ++ ++Therefore the maximum duration a runqueue epoch can take is determined by ++the number of tasks running, and their nice level. After that, the maximum ++duration it can take before a task can wait before it get scheduled is ++determined by the position of its first slot on the matrix. ++ ++In the following examples, these are _worst case scenarios_ and would rarely ++occur, but can be modelled nonetheless to determine the maximum possible ++latency. ++ ++So for example, if two nice 0 tasks are running, and one has just expired as ++another is activated for the first time receiving a full quota for this ++runqueue rotation, the first task will wait: ++ ++nr_tasks * max_duration + nice_difference * rr_interval ++1 * 19 * RR_INTERVAL + 0 = 152ms ++ ++In the presence of a nice 10 task, a nice 0 task would wait a maximum of ++1 * 10 * RR_INTERVAL + 0 = 80ms ++ ++In the presence of a nice 0 task, a nice 10 task would wait a maximum of ++1 * 19 * RR_INTERVAL + 1 * RR_INTERVAL = 160ms ++ ++More useful than these values, though, are the average latencies which are ++a matter of determining the average distance between priority slots of ++different nice values and multiplying them by the tasks' quota. For example ++in the presence of a nice -10 task, a nice 0 task will wait either one or ++two slots. Given that nice -10 tasks have a quota 2.5 times the RR_INTERVAL, ++this means the latencies will alternate between 2.5 and 5 RR_INTERVALs or ++20 and 40ms respectively (on uniprocessor at 1000HZ). ++ ++ ++Achieving interactivity ++======================= ++ ++A requirement of this scheduler design was to achieve good interactivity ++despite being a completely fair deadline based design. The disadvantage of ++designs that try to achieve interactivity is that they usually do so at ++the expense of maintaining fairness. As cpu speeds increase, the requirement ++for some sort of metered unfairness towards interactive tasks becomes a less ++desirable phenomenon, but low latency and fairness remains mandatory to ++good interactive performance. ++ ++This design relies on the fact that interactive tasks, by their nature, ++sleep often. Most fair scheduling designs end up penalising such tasks ++indirectly giving them less than their fair possible share because of the ++sleep, and have to use a mechanism of bonusing their priority to offset ++this based on the duration they sleep. This becomes increasingly inaccurate ++as the number of running tasks rises and more tasks spend time waiting on ++runqueues rather than sleeping, and it is impossible to tell whether the ++task that's waiting on a runqueue only intends to run for a short period and ++then sleep again after than runqueue wait. Furthermore, all such designs rely ++on a period of time to pass to accumulate some form of statistic on the task ++before deciding on how much to give them preference. The shorter this period, ++the more rapidly bursts of cpu ruin the interactive tasks behaviour. The ++longer this period, the longer it takes for interactive tasks to get low ++scheduling latencies and fair cpu. ++ ++This design does not measure sleep time at all. Interactive tasks that sleep ++often will wake up having consumed very little if any of their quota for ++the current major priority rotation. The longer they have slept, the less ++likely they are to even be on the current major priority rotation. Once ++woken up, though, they get to use up a their full quota for that epoch, ++whether part of a quota remains or a full quota. Overall, however, they ++can still only run as much cpu time for that epoch as any other task of the ++same nice level. This means that two tasks behaving completely differently ++from fully cpu bound to waking/sleeping extremely frequently will still ++get the same quota of cpu, but the latter will be using its quota for that ++epoch in bursts rather than continuously. This guarantees that interactive ++tasks get the same amount of cpu as cpu bound ones. ++ ++The other requirement of interactive tasks is also to obtain low latencies ++for when they are scheduled. Unlike fully cpu bound tasks and the maximum ++latencies possible described in the modelling deadline behaviour section ++above, tasks that sleep will wake up with quota available usually at the ++current runqueue's priority_level or better. This means that the most latency ++they are likely to see is one RR_INTERVAL, and often they will preempt the ++current task if it is not of a sleeping nature. This then guarantees very ++low latency for interactive tasks, and the lowest latencies for the least ++cpu bound tasks. ++ ++ ++Fri, 4 May 2007 ++Con Kolivas +Index: linux-2.6.21-ck1/kernel/softirq.c +=================================================================== +--- linux-2.6.21-ck1.orig/kernel/softirq.c 2007-05-04 12:10:52.000000000 +1000 ++++ linux-2.6.21-ck1/kernel/softirq.c 2007-05-04 12:10:54.000000000 +1000 +@@ -488,7 +488,7 @@ void __init softirq_init(void) + + static int ksoftirqd(void * __bind_cpu) + { +- set_user_nice(current, 19); ++ set_user_nice(current, 15); + current->flags |= PF_NOFREEZE; + + set_current_state(TASK_INTERRUPTIBLE); +Index: linux-2.6.21-ck1/kernel/fork.c +=================================================================== +--- linux-2.6.21-ck1.orig/kernel/fork.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/kernel/fork.c 2007-05-04 12:24:19.000000000 +1000 +@@ -1060,6 +1060,7 @@ static struct task_struct *copy_process( + p->io_context = NULL; + p->io_wait = NULL; + p->audit_context = NULL; ++ p->mutexes_held = 0; + cpuset_fork(p); + #ifdef CONFIG_NUMA + p->mempolicy = mpol_copy(p->mempolicy); +Index: linux-2.6.21-ck1/kernel/mutex.c +=================================================================== +--- linux-2.6.21-ck1.orig/kernel/mutex.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/kernel/mutex.c 2007-05-04 12:24:19.000000000 +1000 +@@ -60,6 +60,16 @@ EXPORT_SYMBOL(__mutex_init); + static void fastcall noinline __sched + __mutex_lock_slowpath(atomic_t *lock_count); + ++static inline void inc_mutex_count(void) ++{ ++ current->mutexes_held++; ++} ++ ++static inline void dec_mutex_count(void) ++{ ++ current->mutexes_held--; ++} ++ + /*** + * mutex_lock - acquire the mutex + * @lock: the mutex to be acquired +@@ -89,6 +99,7 @@ void inline fastcall __sched mutex_lock( + * 'unlocked' into 'locked' state. + */ + __mutex_fastpath_lock(&lock->count, __mutex_lock_slowpath); ++ inc_mutex_count(); + } + + EXPORT_SYMBOL(mutex_lock); +@@ -114,6 +125,7 @@ void fastcall __sched mutex_unlock(struc + * into 'unlocked' state: + */ + __mutex_fastpath_unlock(&lock->count, __mutex_unlock_slowpath); ++ dec_mutex_count(); + } + + EXPORT_SYMBOL(mutex_unlock); +@@ -283,9 +295,14 @@ __mutex_lock_interruptible_slowpath(atom + */ + int fastcall __sched mutex_lock_interruptible(struct mutex *lock) + { ++ int ret; ++ + might_sleep(); +- return __mutex_fastpath_lock_retval ++ ret = __mutex_fastpath_lock_retval + (&lock->count, __mutex_lock_interruptible_slowpath); ++ if (likely(!ret)) ++ inc_mutex_count(); ++ return ret; + } + + EXPORT_SYMBOL(mutex_lock_interruptible); +@@ -340,8 +357,12 @@ static inline int __mutex_trylock_slowpa + */ + int fastcall __sched mutex_trylock(struct mutex *lock) + { +- return __mutex_fastpath_trylock(&lock->count, ++ int ret = __mutex_fastpath_trylock(&lock->count, + __mutex_trylock_slowpath); ++ ++ if (likely(ret)) ++ inc_mutex_count(); ++ return ret; + } + + EXPORT_SYMBOL(mutex_trylock); +Index: linux-2.6.21-ck1/block/cfq-iosched.c +=================================================================== +--- linux-2.6.21-ck1.orig/block/cfq-iosched.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/block/cfq-iosched.c 2007-05-04 12:24:19.000000000 +1000 +@@ -1258,10 +1258,12 @@ static void cfq_init_prio_data(struct cf + printk(KERN_ERR "cfq: bad prio %x\n", ioprio_class); + case IOPRIO_CLASS_NONE: + /* +- * no prio set, place us in the middle of the BE classes ++ * Select class and ioprio according to policy and nice + */ ++ cfqq->ioprio_class = task_policy_ioprio_class(tsk); + cfqq->ioprio = task_nice_ioprio(tsk); +- cfqq->ioprio_class = IOPRIO_CLASS_BE; ++ if (cfqq->ioprio_class == IOPRIO_CLASS_IDLE) ++ cfq_clear_cfqq_idle_window(cfqq); + break; + case IOPRIO_CLASS_RT: + cfqq->ioprio = task_ioprio(tsk); +Index: linux-2.6.21-ck1/include/linux/ioprio.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/ioprio.h 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/ioprio.h 2007-05-04 12:24:19.000000000 +1000 +@@ -22,7 +22,7 @@ + * class, the default for any process. IDLE is the idle scheduling class, it + * is only served when no one else is using the disk. + */ +-enum { ++enum ioprio_class { + IOPRIO_CLASS_NONE, + IOPRIO_CLASS_RT, + IOPRIO_CLASS_BE, +@@ -51,8 +51,25 @@ static inline int task_ioprio(struct tas + return IOPRIO_PRIO_DATA(task->ioprio); + } + ++static inline enum ioprio_class ++ task_policy_ioprio_class(struct task_struct *task) ++{ ++ if (rt_task(task)) ++ return IOPRIO_CLASS_RT; ++ if (idleprio_task(task)) ++ return IOPRIO_CLASS_IDLE; ++ return IOPRIO_CLASS_BE; ++} ++ + static inline int task_nice_ioprio(struct task_struct *task) + { ++ if (rt_task(task)) ++ return (MAX_RT_PRIO - task->rt_priority) * IOPRIO_BE_NR / ++ (MAX_RT_PRIO + 1); ++ if (iso_task(task)) ++ return 0; ++ if (idleprio_task(task)) ++ return IOPRIO_BE_NR - 1; + return (task_nice(task) + 20) / 5; + } + +Index: linux-2.6.21-ck1/Documentation/sysctl/vm.txt +=================================================================== +--- linux-2.6.21-ck1.orig/Documentation/sysctl/vm.txt 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/Documentation/sysctl/vm.txt 2007-05-04 12:24:21.000000000 +1000 +@@ -22,6 +22,8 @@ Currently, these files are in /proc/sys/ + - dirty_background_ratio + - dirty_expire_centisecs + - dirty_writeback_centisecs ++- hardmaplimit ++- mapped + - max_map_count + - min_free_kbytes + - laptop_mode +@@ -31,12 +33,13 @@ Currently, these files are in /proc/sys/ + - min_unmapped_ratio + - min_slab_ratio + - panic_on_oom ++- swap_prefetch + + ============================================================== + + dirty_ratio, dirty_background_ratio, dirty_expire_centisecs, + dirty_writeback_centisecs, vfs_cache_pressure, laptop_mode, +-block_dump, swap_token_timeout, drop-caches: ++block_dump, swap_token_timeout, drop-caches, tail_largefiles: + + See Documentation/filesystems/proc.txt + +@@ -86,6 +89,27 @@ for swap because we only cluster swap da + + ============================================================== + ++hardmaplimit: ++ ++This flag makes the vm adhere to the mapped value as closely as possible ++except in the most extreme vm stress where doing so would provoke an out ++of memory condition (see mapped below). ++ ++Enabled by default. ++ ++============================================================== ++ ++mapped: ++ ++This is the percentage ram that is filled with mapped pages (applications) ++before the vm will start reclaiming mapped pages by moving them to swap. ++It is altered by the relative stress of the vm at the time so is not ++strictly adhered to to prevent provoking out of memory kills. ++ ++Set to 66 by default. ++ ++============================================================== ++ + max_map_count: + + This file contains the maximum number of memory map areas a process +@@ -205,3 +229,14 @@ rather than killing rogue processes, set + + The default value is 0. + ++============================================================== ++ ++swap_prefetch ++ ++This enables or disables the swap prefetching feature. When the virtual ++memory subsystem has been extremely idle for at least 5 seconds it will start ++copying back pages from swap into the swapcache and keep a copy in swap. In ++practice it can take many minutes before the vm is idle enough. ++ ++The default value is 1. ++ +Index: linux-2.6.21-ck1/include/linux/swap.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/swap.h 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/swap.h 2007-05-04 12:24:20.000000000 +1000 +@@ -180,6 +180,7 @@ extern unsigned int nr_free_pagecache_pa + /* linux/mm/swap.c */ + extern void FASTCALL(lru_cache_add(struct page *)); + extern void FASTCALL(lru_cache_add_active(struct page *)); ++extern void FASTCALL(lru_cache_add_tail(struct page *)); + extern void FASTCALL(activate_page(struct page *)); + extern void FASTCALL(mark_page_accessed(struct page *)); + extern void lru_add_drain(void); +@@ -188,9 +189,11 @@ extern int rotate_reclaimable_page(struc + extern void swap_setup(void); + + /* linux/mm/vmscan.c */ +-extern unsigned long try_to_free_pages(struct zone **, gfp_t); ++extern unsigned long try_to_free_pages(struct zone **, gfp_t, ++ struct task_struct *p); + extern unsigned long shrink_all_memory(unsigned long nr_pages); +-extern int vm_swappiness; ++extern int vm_mapped; ++extern int vm_hardmaplimit; + extern int remove_mapping(struct address_space *mapping, struct page *page); + extern long vm_total_pages; + +@@ -237,6 +240,7 @@ extern void free_pages_and_swap_cache(st + extern struct page * lookup_swap_cache(swp_entry_t); + extern struct page * read_swap_cache_async(swp_entry_t, struct vm_area_struct *vma, + unsigned long addr); ++extern int add_to_swap_cache(struct page *page, swp_entry_t entry); + /* linux/mm/swapfile.c */ + extern long total_swap_pages; + extern unsigned int nr_swapfiles; +Index: linux-2.6.21-ck1/init/Kconfig +=================================================================== +--- linux-2.6.21-ck1.orig/init/Kconfig 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/init/Kconfig 2007-05-04 12:24:20.000000000 +1000 +@@ -101,6 +101,28 @@ config SWAP + used to provide more virtual memory than the actual RAM present + in your computer. If unsure say Y. + ++config SWAP_PREFETCH ++ bool "Support for prefetching swapped memory" ++ depends on SWAP ++ default y ++ ---help--- ++ This option will allow the kernel to prefetch swapped memory pages ++ when idle. The pages will be kept on both swap and in swap_cache ++ thus avoiding the need for further I/O if either ram or swap space ++ is required. ++ ++ What this will do on workstations is slowly bring back applications ++ that have swapped out after memory intensive workloads back into ++ physical ram if you have free ram at a later stage and the machine ++ is relatively idle. This means that when you come back to your ++ computer after leaving it idle for a while, applications will come ++ to life faster. Note that your swap usage will appear to increase ++ but these are cached pages, can be dropped freely by the vm, and it ++ should stabilise around 50% swap usage maximum. ++ ++ Workstations and multiuser workstation servers will most likely want ++ to say Y. ++ + config SYSVIPC + bool "System V IPC" + ---help--- +Index: linux-2.6.21-ck1/mm/Makefile +=================================================================== +--- linux-2.6.21-ck1.orig/mm/Makefile 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/mm/Makefile 2007-05-04 12:24:20.000000000 +1000 +@@ -17,6 +17,7 @@ ifeq ($(CONFIG_MMU)$(CONFIG_BLOCK),yy) + obj-y += bounce.o + endif + obj-$(CONFIG_SWAP) += page_io.o swap_state.o swapfile.o thrash.o ++obj-$(CONFIG_SWAP_PREFETCH) += swap_prefetch.o + obj-$(CONFIG_HUGETLBFS) += hugetlb.o + obj-$(CONFIG_NUMA) += mempolicy.o + obj-$(CONFIG_SPARSEMEM) += sparse.o +Index: linux-2.6.21-ck1/mm/swap.c +=================================================================== +--- linux-2.6.21-ck1.orig/mm/swap.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/mm/swap.c 2007-05-04 12:24:21.000000000 +1000 +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -176,6 +177,7 @@ EXPORT_SYMBOL(mark_page_accessed); + */ + static DEFINE_PER_CPU(struct pagevec, lru_add_pvecs) = { 0, }; + static DEFINE_PER_CPU(struct pagevec, lru_add_active_pvecs) = { 0, }; ++static DEFINE_PER_CPU(struct pagevec, lru_add_tail_pvecs) = { 0, }; + + void fastcall lru_cache_add(struct page *page) + { +@@ -197,6 +199,31 @@ void fastcall lru_cache_add_active(struc + put_cpu_var(lru_add_active_pvecs); + } + ++static void __pagevec_lru_add_tail(struct pagevec *pvec) ++{ ++ int i; ++ struct zone *zone = NULL; ++ ++ for (i = 0; i < pagevec_count(pvec); i++) { ++ struct page *page = pvec->pages[i]; ++ struct zone *pagezone = page_zone(page); ++ ++ if (pagezone != zone) { ++ if (zone) ++ spin_unlock_irq(&zone->lru_lock); ++ zone = pagezone; ++ spin_lock_irq(&zone->lru_lock); ++ } ++ BUG_ON(PageLRU(page)); ++ SetPageLRU(page); ++ add_page_to_inactive_list_tail(zone, page); ++ } ++ if (zone) ++ spin_unlock_irq(&zone->lru_lock); ++ release_pages(pvec->pages, pvec->nr, pvec->cold); ++ pagevec_reinit(pvec); ++} ++ + static void __lru_add_drain(int cpu) + { + struct pagevec *pvec = &per_cpu(lru_add_pvecs, cpu); +@@ -207,6 +234,9 @@ static void __lru_add_drain(int cpu) + pvec = &per_cpu(lru_add_active_pvecs, cpu); + if (pagevec_count(pvec)) + __pagevec_lru_add_active(pvec); ++ pvec = &per_cpu(lru_add_tail_pvecs, cpu); ++ if (pagevec_count(pvec)) ++ __pagevec_lru_add_tail(pvec); + } + + void lru_add_drain(void) +@@ -403,6 +433,20 @@ void __pagevec_lru_add_active(struct pag + } + + /* ++ * Function used uniquely to put pages back to the lru at the end of the ++ * inactive list to preserve the lru order. ++ */ ++void fastcall lru_cache_add_tail(struct page *page) ++{ ++ struct pagevec *pvec = &get_cpu_var(lru_add_tail_pvecs); ++ ++ page_cache_get(page); ++ if (!pagevec_add(pvec, page)) ++ __pagevec_lru_add_tail(pvec); ++ put_cpu_var(lru_add_pvecs); ++} ++ ++/* + * Try to drop buffers from the pages in a pagevec + */ + void pagevec_strip(struct pagevec *pvec) +@@ -514,6 +558,9 @@ void __init swap_setup(void) + * Right now other parts of the system means that we + * _really_ don't want to cluster much more + */ ++ ++ prepare_swap_prefetch(); ++ + #ifdef CONFIG_HOTPLUG_CPU + hotcpu_notifier(cpu_swap_callback, 0); + #endif +Index: linux-2.6.21-ck1/mm/swap_prefetch.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.21-ck1/mm/swap_prefetch.c 2007-05-04 12:24:20.000000000 +1000 +@@ -0,0 +1,581 @@ ++/* ++ * linux/mm/swap_prefetch.c ++ * ++ * Copyright (C) 2005-2006 Con Kolivas ++ * ++ * Written by Con Kolivas ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* ++ * Time to delay prefetching if vm is busy or prefetching unsuccessful. There ++ * needs to be at least this duration of idle time meaning in practice it can ++ * be much longer ++ */ ++#define PREFETCH_DELAY (HZ * 5) ++ ++/* sysctl - enable/disable swap prefetching */ ++int swap_prefetch __read_mostly = 1; ++ ++struct swapped_root { ++ unsigned long busy; /* vm busy */ ++ spinlock_t lock; /* protects all data */ ++ struct list_head list; /* MRU list of swapped pages */ ++ struct radix_tree_root swap_tree; /* Lookup tree of pages */ ++ unsigned int count; /* Number of entries */ ++ unsigned int maxcount; /* Maximum entries allowed */ ++ struct kmem_cache *cache; /* Of struct swapped_entry */ ++}; ++ ++static struct swapped_root swapped = { ++ .lock = SPIN_LOCK_UNLOCKED, ++ .list = LIST_HEAD_INIT(swapped.list), ++ .swap_tree = RADIX_TREE_INIT(GFP_ATOMIC), ++}; ++ ++static struct task_struct *kprefetchd_task; ++ ++/* ++ * We check to see no part of the vm is busy. If it is this will interrupt ++ * trickle_swap and wait another PREFETCH_DELAY. Purposefully racy. ++ */ ++inline void delay_swap_prefetch(void) ++{ ++ if (!test_bit(0, &swapped.busy)) ++ __set_bit(0, &swapped.busy); ++} ++ ++/* ++ * Drop behind accounting which keeps a list of the most recently used swap ++ * entries. ++ */ ++void add_to_swapped_list(struct page *page) ++{ ++ struct swapped_entry *entry; ++ unsigned long index, flags; ++ int wakeup; ++ ++ if (!swap_prefetch) ++ return; ++ ++ wakeup = 0; ++ ++ spin_lock_irqsave(&swapped.lock, flags); ++ if (swapped.count >= swapped.maxcount) { ++ /* ++ * We limit the number of entries to 2/3 of physical ram. ++ * Once the number of entries exceeds this we start removing ++ * the least recently used entries. ++ */ ++ entry = list_entry(swapped.list.next, ++ struct swapped_entry, swapped_list); ++ radix_tree_delete(&swapped.swap_tree, entry->swp_entry.val); ++ list_del(&entry->swapped_list); ++ swapped.count--; ++ } else { ++ entry = kmem_cache_alloc(swapped.cache, GFP_ATOMIC); ++ if (unlikely(!entry)) ++ /* bad, can't allocate more mem */ ++ goto out_locked; ++ } ++ ++ index = page_private(page); ++ entry->swp_entry.val = index; ++ /* ++ * On numa we need to store the node id to ensure that we prefetch to ++ * the same node it came from. ++ */ ++ store_swap_entry_node(entry, page); ++ ++ if (likely(!radix_tree_insert(&swapped.swap_tree, index, entry))) { ++ /* ++ * If this is the first entry, kprefetchd needs to be ++ * (re)started. ++ */ ++ if (!swapped.count) ++ wakeup = 1; ++ list_add(&entry->swapped_list, &swapped.list); ++ swapped.count++; ++ } ++ ++out_locked: ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ ++ /* Do the wakeup outside the lock to shorten lock hold time. */ ++ if (wakeup) ++ wake_up_process(kprefetchd_task); ++ ++ return; ++} ++ ++/* ++ * Removes entries from the swapped_list. The radix tree allows us to quickly ++ * look up the entry from the index without having to iterate over the whole ++ * list. ++ */ ++void remove_from_swapped_list(const unsigned long index) ++{ ++ struct swapped_entry *entry; ++ unsigned long flags; ++ ++ if (list_empty(&swapped.list)) ++ return; ++ ++ spin_lock_irqsave(&swapped.lock, flags); ++ entry = radix_tree_delete(&swapped.swap_tree, index); ++ if (likely(entry)) { ++ list_del_init(&entry->swapped_list); ++ swapped.count--; ++ kmem_cache_free(swapped.cache, entry); ++ } ++ spin_unlock_irqrestore(&swapped.lock, flags); ++} ++ ++enum trickle_return { ++ TRICKLE_SUCCESS, ++ TRICKLE_FAILED, ++ TRICKLE_DELAY, ++}; ++ ++struct node_stats { ++ unsigned long last_free; ++ /* Free ram after a cycle of prefetching */ ++ unsigned long current_free; ++ /* Free ram on this cycle of checking prefetch_suitable */ ++ unsigned long prefetch_watermark; ++ /* Maximum amount we will prefetch to */ ++ unsigned long highfree[MAX_NR_ZONES]; ++ /* The amount of free ram before we start prefetching */ ++ unsigned long lowfree[MAX_NR_ZONES]; ++ /* The amount of free ram where we will stop prefetching */ ++ unsigned long *pointfree[MAX_NR_ZONES]; ++ /* highfree or lowfree depending on whether we've hit a watermark */ ++}; ++ ++/* ++ * prefetch_stats stores the free ram data of each node and this is used to ++ * determine if a node is suitable for prefetching into. ++ */ ++struct prefetch_stats { ++ nodemask_t prefetch_nodes; ++ /* Which nodes are currently suited to prefetching */ ++ unsigned long prefetched_pages; ++ /* Total pages we've prefetched on this wakeup of kprefetchd */ ++ struct node_stats node[MAX_NUMNODES]; ++}; ++ ++static struct prefetch_stats sp_stat; ++ ++/* ++ * This tries to read a swp_entry_t into swap cache for swap prefetching. ++ * If it returns TRICKLE_DELAY we should delay further prefetching. ++ */ ++static enum trickle_return trickle_swap_cache_async(const swp_entry_t entry, ++ const int node) ++{ ++ enum trickle_return ret = TRICKLE_FAILED; ++ struct page *page; ++ ++ read_lock_irq(&swapper_space.tree_lock); ++ /* Entry may already exist */ ++ page = radix_tree_lookup(&swapper_space.page_tree, entry.val); ++ read_unlock_irq(&swapper_space.tree_lock); ++ if (page) { ++ remove_from_swapped_list(entry.val); ++ goto out; ++ } ++ ++ /* ++ * Get a new page to read from swap. We have already checked the ++ * watermarks so __alloc_pages will not call on reclaim. ++ */ ++ page = alloc_pages_node(node, GFP_HIGHUSER & ~__GFP_WAIT, 0); ++ if (unlikely(!page)) { ++ ret = TRICKLE_DELAY; ++ goto out; ++ } ++ ++ if (add_to_swap_cache(page, entry)) { ++ /* Failed to add to swap cache */ ++ goto out_release; ++ } ++ ++ /* Add them to the tail of the inactive list to preserve LRU order */ ++ lru_cache_add_tail(page); ++ if (unlikely(swap_readpage(NULL, page))) { ++ ret = TRICKLE_DELAY; ++ goto out_release; ++ } ++ ++ sp_stat.prefetched_pages++; ++ sp_stat.node[node].last_free--; ++ ++ ret = TRICKLE_SUCCESS; ++out_release: ++ page_cache_release(page); ++out: ++ return ret; ++} ++ ++static void clear_last_prefetch_free(void) ++{ ++ int node; ++ ++ /* ++ * Reset the nodes suitable for prefetching to all nodes. We could ++ * update the data to take into account memory hotplug if desired.. ++ */ ++ sp_stat.prefetch_nodes = node_online_map; ++ for_each_node_mask(node, sp_stat.prefetch_nodes) { ++ struct node_stats *ns = &sp_stat.node[node]; ++ ++ ns->last_free = 0; ++ } ++} ++ ++static void clear_current_prefetch_free(void) ++{ ++ int node; ++ ++ sp_stat.prefetch_nodes = node_online_map; ++ for_each_node_mask(node, sp_stat.prefetch_nodes) { ++ struct node_stats *ns = &sp_stat.node[node]; ++ ++ ns->current_free = 0; ++ } ++} ++ ++/* ++ * This updates the high and low watermarks of amount of free ram in each ++ * node used to start and stop prefetching. We prefetch from pages_high * 4 ++ * down to pages_high * 3. ++ */ ++static void examine_free_limits(void) ++{ ++ struct zone *z; ++ ++ for_each_zone(z) { ++ struct node_stats *ns; ++ int idx; ++ ++ if (!populated_zone(z)) ++ continue; ++ ++ ns = &sp_stat.node[z->zone_pgdat->node_id]; ++ idx = zone_idx(z); ++ ns->lowfree[idx] = z->pages_high * 3; ++ ns->highfree[idx] = ns->lowfree[idx] + z->pages_high; ++ ++ if (zone_page_state(z, NR_FREE_PAGES) > ns->highfree[idx]) { ++ /* ++ * We've gotten above the high watermark of free pages ++ * so we can start prefetching till we get to the low ++ * watermark. ++ */ ++ ns->pointfree[idx] = &ns->lowfree[idx]; ++ } ++ } ++} ++ ++/* ++ * We want to be absolutely certain it's ok to start prefetching. ++ */ ++static int prefetch_suitable(void) ++{ ++ unsigned long limit; ++ struct zone *z; ++ int node, ret = 0, test_pagestate = 0; ++ ++ /* Purposefully racy */ ++ if (test_bit(0, &swapped.busy)) { ++ __clear_bit(0, &swapped.busy); ++ goto out; ++ } ++ ++ /* ++ * get_page_state and above_background_load are expensive so we only ++ * perform them every SWAP_CLUSTER_MAX prefetched_pages. ++ * We test to see if we're above_background_load as disk activity ++ * even at low priority can cause interrupt induced scheduling ++ * latencies. ++ */ ++ if (!(sp_stat.prefetched_pages % SWAP_CLUSTER_MAX)) { ++ if (above_background_load()) ++ goto out; ++ test_pagestate = 1; ++ } ++ ++ clear_current_prefetch_free(); ++ ++ /* ++ * Have some hysteresis between where page reclaiming and prefetching ++ * will occur to prevent ping-ponging between them. ++ */ ++ for_each_zone(z) { ++ struct node_stats *ns; ++ unsigned long free; ++ int idx; ++ ++ if (!populated_zone(z)) ++ continue; ++ ++ node = z->zone_pgdat->node_id; ++ ns = &sp_stat.node[node]; ++ idx = zone_idx(z); ++ ++ free = zone_page_state(z, NR_FREE_PAGES); ++ if (free < *ns->pointfree[idx]) { ++ /* ++ * Free pages have dropped below the low watermark so ++ * we won't start prefetching again till we hit the ++ * high watermark of free pages. ++ */ ++ ns->pointfree[idx] = &ns->highfree[idx]; ++ node_clear(node, sp_stat.prefetch_nodes); ++ continue; ++ } ++ ns->current_free += free; ++ } ++ ++ /* ++ * We iterate over each node testing to see if it is suitable for ++ * prefetching and clear the nodemask if it is not. ++ */ ++ for_each_node_mask(node, sp_stat.prefetch_nodes) { ++ struct node_stats *ns = &sp_stat.node[node]; ++ ++ /* ++ * We check to see that pages are not being allocated ++ * elsewhere at any significant rate implying any ++ * degree of memory pressure (eg during file reads) ++ */ ++ if (ns->last_free) { ++ if (ns->current_free + SWAP_CLUSTER_MAX < ++ ns->last_free) { ++ ns->last_free = ns->current_free; ++ node_clear(node, ++ sp_stat.prefetch_nodes); ++ continue; ++ } ++ } else ++ ns->last_free = ns->current_free; ++ ++ if (!test_pagestate) ++ continue; ++ ++ /* We shouldn't prefetch when we are doing writeback */ ++ if (node_page_state(node, NR_WRITEBACK)) { ++ node_clear(node, sp_stat.prefetch_nodes); ++ continue; ++ } ++ ++ /* ++ * >2/3 of the ram on this node is mapped, slab, swapcache or ++ * dirty, we need to leave some free for pagecache. ++ */ ++ limit = node_page_state(node, NR_FILE_PAGES); ++ limit += node_page_state(node, NR_SLAB_RECLAIMABLE); ++ limit += node_page_state(node, NR_SLAB_UNRECLAIMABLE); ++ limit += node_page_state(node, NR_FILE_DIRTY); ++ limit += node_page_state(node, NR_UNSTABLE_NFS); ++ limit += total_swapcache_pages; ++ if (limit > ns->prefetch_watermark) { ++ node_clear(node, sp_stat.prefetch_nodes); ++ continue; ++ } ++ } ++ ++ if (nodes_empty(sp_stat.prefetch_nodes)) ++ goto out; ++ ++ /* Survived all that? Hooray we can prefetch! */ ++ ret = 1; ++out: ++ return ret; ++} ++ ++/* ++ * Get previous swapped entry when iterating over all entries. swapped.lock ++ * should be held and we should already ensure that entry exists. ++ */ ++static inline struct swapped_entry *prev_swapped_entry ++ (struct swapped_entry *entry) ++{ ++ return list_entry(entry->swapped_list.prev->prev, ++ struct swapped_entry, swapped_list); ++} ++ ++/* ++ * trickle_swap is the main function that initiates the swap prefetching. It ++ * first checks to see if the busy flag is set, and does not prefetch if it ++ * is, as the flag implied we are low on memory or swapping in currently. ++ * Otherwise it runs until prefetch_suitable fails which occurs when the ++ * vm is busy, we prefetch to the watermark, or the list is empty or we have ++ * iterated over all entries ++ */ ++static enum trickle_return trickle_swap(void) ++{ ++ enum trickle_return ret = TRICKLE_DELAY; ++ struct swapped_entry *entry; ++ unsigned long flags; ++ ++ /* ++ * If laptop_mode is enabled don't prefetch to avoid hard drives ++ * doing unnecessary spin-ups ++ */ ++ if (!swap_prefetch || laptop_mode) ++ return ret; ++ ++ examine_free_limits(); ++ entry = NULL; ++ ++ for ( ; ; ) { ++ swp_entry_t swp_entry; ++ int node; ++ ++ if (!prefetch_suitable()) ++ break; ++ ++ spin_lock_irqsave(&swapped.lock, flags); ++ if (list_empty(&swapped.list)) { ++ ret = TRICKLE_FAILED; ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ break; ++ } ++ ++ if (!entry) { ++ /* ++ * This sets the entry for the first iteration. It ++ * also is a safeguard against the entry disappearing ++ * while the lock is not held. ++ */ ++ entry = list_entry(swapped.list.prev, ++ struct swapped_entry, swapped_list); ++ } else if (entry->swapped_list.prev == swapped.list.next) { ++ /* ++ * If we have iterated over all entries and there are ++ * still entries that weren't swapped out there may ++ * be a reason we could not swap them back in so ++ * delay attempting further prefetching. ++ */ ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ break; ++ } ++ ++ node = get_swap_entry_node(entry); ++ if (!node_isset(node, sp_stat.prefetch_nodes)) { ++ /* ++ * We found an entry that belongs to a node that is ++ * not suitable for prefetching so skip it. ++ */ ++ entry = prev_swapped_entry(entry); ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ continue; ++ } ++ swp_entry = entry->swp_entry; ++ entry = prev_swapped_entry(entry); ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ ++ if (trickle_swap_cache_async(swp_entry, node) == TRICKLE_DELAY) ++ break; ++ } ++ ++ if (sp_stat.prefetched_pages) { ++ lru_add_drain(); ++ sp_stat.prefetched_pages = 0; ++ } ++ return ret; ++} ++ ++static int kprefetchd(void *__unused) ++{ ++ struct sched_param param = { .sched_priority = 0 }; ++ ++ sched_setscheduler(current, SCHED_BATCH, ¶m); ++ set_user_nice(current, 19); ++ /* Set ioprio to lowest if supported by i/o scheduler */ ++ sys_ioprio_set(IOPRIO_WHO_PROCESS, 0, IOPRIO_CLASS_IDLE); ++ ++ /* kprefetchd has nothing to do until it is woken up the first time */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule(); ++ ++ do { ++ try_to_freeze(); ++ ++ /* ++ * TRICKLE_FAILED implies no entries left - we do not schedule ++ * a wakeup, and further delay the next one. ++ */ ++ if (trickle_swap() == TRICKLE_FAILED) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule(); ++ } ++ clear_last_prefetch_free(); ++ schedule_timeout_interruptible(PREFETCH_DELAY); ++ } while (!kthread_should_stop()); ++ ++ return 0; ++} ++ ++/* ++ * Create kmem cache for swapped entries ++ */ ++void __init prepare_swap_prefetch(void) ++{ ++ struct zone *zone; ++ ++ swapped.cache = kmem_cache_create("swapped_entry", ++ sizeof(struct swapped_entry), 0, SLAB_PANIC, NULL, NULL); ++ ++ /* ++ * Set max number of entries to 2/3 the size of physical ram as we ++ * only ever prefetch to consume 2/3 of the ram. ++ */ ++ swapped.maxcount = nr_free_pagecache_pages() / 3 * 2; ++ ++ for_each_zone(zone) { ++ unsigned long present; ++ struct node_stats *ns; ++ int idx; ++ ++ present = zone->present_pages; ++ if (!present) ++ continue; ++ ++ ns = &sp_stat.node[zone->zone_pgdat->node_id]; ++ ns->prefetch_watermark += present / 3 * 2; ++ idx = zone_idx(zone); ++ ns->pointfree[idx] = &ns->highfree[idx]; ++ } ++} ++ ++static int __init kprefetchd_init(void) ++{ ++ kprefetchd_task = kthread_run(kprefetchd, NULL, "kprefetchd"); ++ ++ return 0; ++} ++ ++static void __exit kprefetchd_exit(void) ++{ ++ kthread_stop(kprefetchd_task); ++} ++ ++module_init(kprefetchd_init); ++module_exit(kprefetchd_exit); +Index: linux-2.6.21-ck1/mm/swap_state.c +=================================================================== +--- linux-2.6.21-ck1.orig/mm/swap_state.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/mm/swap_state.c 2007-05-04 12:24:20.000000000 +1000 +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -82,6 +83,7 @@ static int __add_to_swap_cache(struct pa + error = radix_tree_insert(&swapper_space.page_tree, + entry.val, page); + if (!error) { ++ remove_from_swapped_list(entry.val); + page_cache_get(page); + SetPageLocked(page); + SetPageSwapCache(page); +@@ -95,11 +97,12 @@ static int __add_to_swap_cache(struct pa + return error; + } + +-static int add_to_swap_cache(struct page *page, swp_entry_t entry) ++int add_to_swap_cache(struct page *page, swp_entry_t entry) + { + int error; + + if (!swap_duplicate(entry)) { ++ remove_from_swapped_list(entry.val); + INC_CACHE_INFO(noent_race); + return -ENOENT; + } +@@ -148,6 +151,9 @@ int add_to_swap(struct page * page, gfp_ + swp_entry_t entry; + int err; + ++ /* Swap prefetching is delayed if we're swapping pages */ ++ delay_swap_prefetch(); ++ + BUG_ON(!PageLocked(page)); + + for (;;) { +@@ -320,6 +326,9 @@ struct page *read_swap_cache_async(swp_e + struct page *found_page, *new_page = NULL; + int err; + ++ /* Swap prefetching is delayed if we're already reading from swap */ ++ delay_swap_prefetch(); ++ + do { + /* + * First check the swap cache. Since this is normally +Index: linux-2.6.21-ck1/mm/vmscan.c +=================================================================== +--- linux-2.6.21-ck1.orig/mm/vmscan.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/mm/vmscan.c 2007-05-04 12:24:21.000000000 +1000 +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -36,6 +37,7 @@ + #include + #include + #include ++#include + #include + + #include +@@ -63,7 +65,7 @@ struct scan_control { + * whole list at once. */ + int swap_cluster_max; + +- int swappiness; ++ int mapped; + + int all_unreclaimable; + }; +@@ -110,9 +112,10 @@ struct shrinker { + #endif + + /* +- * From 0 .. 100. Higher means more swappy. ++ * From 0 .. 100. Lower means more swappy. + */ +-int vm_swappiness = 60; ++int vm_mapped __read_mostly = 66; ++int vm_hardmaplimit __read_mostly = 1; + long vm_total_pages; /* The total number of pages which the VM controls */ + + static LIST_HEAD(shrinker_list); +@@ -424,6 +427,7 @@ int remove_mapping(struct address_space + + if (PageSwapCache(page)) { + swp_entry_t swap = { .val = page_private(page) }; ++ add_to_swapped_list(page); + __delete_from_swap_cache(page); + write_unlock_irq(&mapping->tree_lock); + swap_free(swap); +@@ -807,10 +811,14 @@ static void shrink_active_list(unsigned + * The distress ratio is important - we don't want to start + * going oom. + * +- * A 100% value of vm_swappiness overrides this algorithm +- * altogether. ++ * This distress value is ignored if we apply a hardmaplimit except ++ * in extreme distress. ++ * ++ * A 0% value of vm_mapped overrides this algorithm altogether. + */ +- swap_tendency = mapped_ratio / 2 + distress + sc->swappiness; ++ swap_tendency = mapped_ratio * 100 / (sc->mapped + 1); ++ if (!vm_hardmaplimit || distress == 100) ++ swap_tendency += distress; + + /* + * Now use this metric to decide whether to start moving mapped +@@ -959,6 +967,41 @@ static unsigned long shrink_zone(int pri + } + + /* ++ * Helper functions to adjust nice level of kswapd, based on the priority of ++ * the task (p) that called it. If it is already higher priority we do not ++ * demote its nice level since it is still working on behalf of a higher ++ * priority task. With kernel threads we leave it at nice 0. ++ * ++ * We don't ever run kswapd real time, so if a real time task calls kswapd we ++ * set it to highest SCHED_NORMAL priority. ++ */ ++static int effective_sc_prio(struct task_struct *p) ++{ ++ if (likely(p->mm)) { ++ if (rt_task(p)) ++ return -20; ++ if (idleprio_task(p)) ++ return 19; ++ return task_nice(p); ++ } ++ return 0; ++} ++ ++static void set_kswapd_nice(struct task_struct *kswapd, struct task_struct *p, ++ int active) ++{ ++ long nice = effective_sc_prio(p); ++ ++ if (task_nice(kswapd) > nice || !active) ++ set_user_nice(kswapd, nice); ++} ++ ++static int sc_priority(struct task_struct *p) ++{ ++ return (DEF_PRIORITY + (DEF_PRIORITY * effective_sc_prio(p) / 40)); ++} ++ ++/* + * This is the direct reclaim path, for page-allocating processes. We only + * try to reclaim pages from zones which will satisfy the caller's allocation + * request. +@@ -1015,7 +1058,8 @@ static unsigned long shrink_zones(int pr + * holds filesystem locks which prevent writeout this might not work, and the + * allocation attempt will fail. + */ +-unsigned long try_to_free_pages(struct zone **zones, gfp_t gfp_mask) ++unsigned long try_to_free_pages(struct zone **zones, gfp_t gfp_mask, ++ struct task_struct *p) + { + int priority; + int ret = 0; +@@ -1023,15 +1067,20 @@ unsigned long try_to_free_pages(struct z + unsigned long nr_reclaimed = 0; + struct reclaim_state *reclaim_state = current->reclaim_state; + unsigned long lru_pages = 0; +- int i; ++ int i, scan_priority = DEF_PRIORITY; + struct scan_control sc = { + .gfp_mask = gfp_mask, + .may_writepage = !laptop_mode, + .swap_cluster_max = SWAP_CLUSTER_MAX, + .may_swap = 1, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + ++ if (p) ++ scan_priority = sc_priority(p); ++ ++ delay_swap_prefetch(); ++ + count_vm_event(ALLOCSTALL); + + for (i = 0; zones[i] != NULL; i++) { +@@ -1044,7 +1093,7 @@ unsigned long try_to_free_pages(struct z + + zone_page_state(zone, NR_INACTIVE); + } + +- for (priority = DEF_PRIORITY; priority >= 0; priority--) { ++ for (priority = scan_priority; priority >= 0; priority--) { + sc.nr_scanned = 0; + if (!priority) + disable_swap_token(); +@@ -1074,7 +1123,7 @@ unsigned long try_to_free_pages(struct z + } + + /* Take a nap, wait for some writeback to complete */ +- if (sc.nr_scanned && priority < DEF_PRIORITY - 2) ++ if (sc.nr_scanned && priority < scan_priority - 2) + congestion_wait(WRITE, HZ/10); + } + /* top priority shrink_caches still had more to do? don't OOM, then */ +@@ -1124,9 +1173,9 @@ out: + */ + static unsigned long balance_pgdat(pg_data_t *pgdat, int order) + { +- int all_zones_ok; ++ int all_zones_ok = 0; + int priority; +- int i; ++ int i, scan_priority; + unsigned long total_scanned; + unsigned long nr_reclaimed; + struct reclaim_state *reclaim_state = current->reclaim_state; +@@ -1134,7 +1183,7 @@ static unsigned long balance_pgdat(pg_da + .gfp_mask = GFP_KERNEL, + .may_swap = 1, + .swap_cluster_max = SWAP_CLUSTER_MAX, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + /* + * temp_priority is used to remember the scanning priority at which +@@ -1142,6 +1191,8 @@ static unsigned long balance_pgdat(pg_da + */ + int temp_priority[MAX_NR_ZONES]; + ++ scan_priority = sc_priority(pgdat->kswapd); ++ + loop_again: + total_scanned = 0; + nr_reclaimed = 0; +@@ -1149,9 +1200,9 @@ loop_again: + count_vm_event(PAGEOUTRUN); + + for (i = 0; i < pgdat->nr_zones; i++) +- temp_priority[i] = DEF_PRIORITY; ++ temp_priority[i] = scan_priority; + +- for (priority = DEF_PRIORITY; priority >= 0; priority--) { ++ for (priority = scan_priority; priority >= 0; priority--) { + int end_zone = 0; /* Inclusive. 0 = ZONE_DMA */ + unsigned long lru_pages = 0; + +@@ -1167,15 +1218,22 @@ loop_again: + */ + for (i = pgdat->nr_zones - 1; i >= 0; i--) { + struct zone *zone = pgdat->node_zones + i; ++ unsigned long watermark; + + if (!populated_zone(zone)) + continue; + +- if (zone->all_unreclaimable && priority != DEF_PRIORITY) ++ if (zone->all_unreclaimable && priority != scan_priority) + continue; + +- if (!zone_watermark_ok(zone, order, zone->pages_high, +- 0, 0)) { ++ /* ++ * The watermark is relaxed depending on the ++ * level of "priority" till it drops to ++ * pages_high. ++ */ ++ watermark = zone->pages_high + (zone->pages_high * ++ priority / scan_priority); ++ if (!zone_watermark_ok(zone, order, watermark, 0, 0)) { + end_zone = i; + break; + } +@@ -1202,14 +1260,18 @@ loop_again: + for (i = 0; i <= end_zone; i++) { + struct zone *zone = pgdat->node_zones + i; + int nr_slab; ++ unsigned long watermark; + + if (!populated_zone(zone)) + continue; + +- if (zone->all_unreclaimable && priority != DEF_PRIORITY) ++ if (zone->all_unreclaimable && priority != scan_priority) + continue; + +- if (!zone_watermark_ok(zone, order, zone->pages_high, ++ watermark = zone->pages_high + (zone->pages_high * ++ priority / scan_priority); ++ ++ if (!zone_watermark_ok(zone, order, watermark, + end_zone, 0)) + all_zones_ok = 0; + temp_priority[i] = priority; +@@ -1242,7 +1304,7 @@ loop_again: + * OK, kswapd is getting into trouble. Take a nap, then take + * another pass across the zones. + */ +- if (total_scanned && priority < DEF_PRIORITY - 2) ++ if (total_scanned && priority < scan_priority - 2) + congestion_wait(WRITE, HZ/10); + + /* +@@ -1276,6 +1338,8 @@ out: + return nr_reclaimed; + } + ++#define WT_EXPIRY (HZ * 5) /* Time to wakeup watermark_timer */ ++ + /* + * The background pageout daemon, started as a kernel thread + * from the init process. +@@ -1325,6 +1389,8 @@ static int kswapd(void *p) + + try_to_freeze(); + ++ /* kswapd has been busy so delay watermark_timer */ ++ mod_timer(&pgdat->watermark_timer, jiffies + WT_EXPIRY); + prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); + new_order = pgdat->kswapd_max_order; + pgdat->kswapd_max_order = 0; +@@ -1335,6 +1401,7 @@ static int kswapd(void *p) + */ + order = new_order; + } else { ++ set_user_nice(tsk, 0); + schedule(); + order = pgdat->kswapd_max_order; + } +@@ -1348,9 +1415,10 @@ static int kswapd(void *p) + /* + * A zone is low on free memory, so wake its kswapd task to service it. + */ +-void wakeup_kswapd(struct zone *zone, int order) ++void wakeup_kswapd(struct zone *zone, int order, struct task_struct *p) + { + pg_data_t *pgdat; ++ int active; + + if (!populated_zone(zone)) + return; +@@ -1362,7 +1430,9 @@ void wakeup_kswapd(struct zone *zone, in + pgdat->kswapd_max_order = order; + if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL)) + return; +- if (!waitqueue_active(&pgdat->kswapd_wait)) ++ active = waitqueue_active(&pgdat->kswapd_wait); ++ set_kswapd_nice(pgdat->kswapd, p, active); ++ if (!active) + return; + wake_up_interruptible(&pgdat->kswapd_wait); + } +@@ -1381,6 +1451,8 @@ static unsigned long shrink_all_zones(un + struct zone *zone; + unsigned long nr_to_scan, ret = 0; + ++ delay_swap_prefetch(); ++ + for_each_zone(zone) { + + if (!populated_zone(zone)) +@@ -1440,7 +1512,7 @@ unsigned long shrink_all_memory(unsigned + .may_swap = 0, + .swap_cluster_max = nr_pages, + .may_writepage = 1, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + + current->reclaim_state = &reclaim_state; +@@ -1475,7 +1547,7 @@ unsigned long shrink_all_memory(unsigned + /* Force reclaiming mapped pages in the passes #3 and #4 */ + if (pass > 2) { + sc.may_swap = 1; +- sc.swappiness = 100; ++ sc.mapped = 0; + } + + for (prio = DEF_PRIORITY; prio >= 0; prio--) { +@@ -1539,20 +1611,57 @@ static int __devinit cpu_callback(struct + } + + /* ++ * We wake up kswapd every WT_EXPIRY till free ram is above pages_lots ++ */ ++static void watermark_wakeup(unsigned long data) ++{ ++ pg_data_t *pgdat = (pg_data_t *)data; ++ struct timer_list *wt = &pgdat->watermark_timer; ++ int i; ++ ++ if (!waitqueue_active(&pgdat->kswapd_wait) || above_background_load()) ++ goto out; ++ for (i = pgdat->nr_zones - 1; i >= 0; i--) { ++ struct zone *z = pgdat->node_zones + i; ++ ++ if (!populated_zone(z) || is_highmem(z)) { ++ /* We are better off leaving highmem full */ ++ continue; ++ } ++ if (!zone_watermark_ok(z, 0, z->pages_lots, 0, 0)) { ++ wake_up_interruptible(&pgdat->kswapd_wait); ++ goto out; ++ } ++ } ++out: ++ mod_timer(wt, jiffies + WT_EXPIRY); ++ return; ++} ++ ++/* + * This kswapd start function will be called by init and node-hot-add. + * On node-hot-add, kswapd will moved to proper cpus if cpus are hot-added. + */ + int kswapd_run(int nid) + { + pg_data_t *pgdat = NODE_DATA(nid); ++ struct timer_list *wt; + int ret = 0; + + if (pgdat->kswapd) + return 0; + ++ wt = &pgdat->watermark_timer; ++ init_timer(wt); ++ wt->data = (unsigned long)pgdat; ++ wt->function = watermark_wakeup; ++ wt->expires = jiffies + WT_EXPIRY; ++ add_timer(wt); ++ + pgdat->kswapd = kthread_run(kswapd, pgdat, "kswapd%d", nid); + if (IS_ERR(pgdat->kswapd)) { + /* failure at boot is fatal */ ++ del_timer(wt); + BUG_ON(system_state == SYSTEM_BOOTING); + printk("Failed to start kswapd on node %d\n",nid); + ret = -1; +@@ -1623,7 +1732,7 @@ static int __zone_reclaim(struct zone *z + .swap_cluster_max = max_t(unsigned long, nr_pages, + SWAP_CLUSTER_MAX), + .gfp_mask = gfp_mask, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + unsigned long slab_reclaimable; + +Index: linux-2.6.21-ck1/include/linux/mm_inline.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/mm_inline.h 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/mm_inline.h 2007-05-04 12:24:20.000000000 +1000 +@@ -13,6 +13,13 @@ add_page_to_inactive_list(struct zone *z + } + + static inline void ++add_page_to_inactive_list_tail(struct zone *zone, struct page *page) ++{ ++ list_add_tail(&page->lru, &zone->inactive_list); ++ __inc_zone_state(zone, NR_INACTIVE); ++} ++ ++static inline void + del_page_from_active_list(struct zone *zone, struct page *page) + { + list_del(&page->lru); +Index: linux-2.6.21-ck1/include/linux/swap-prefetch.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.21-ck1/include/linux/swap-prefetch.h 2007-05-04 12:24:20.000000000 +1000 +@@ -0,0 +1,55 @@ ++#ifndef SWAP_PREFETCH_H_INCLUDED ++#define SWAP_PREFETCH_H_INCLUDED ++ ++#ifdef CONFIG_SWAP_PREFETCH ++/* mm/swap_prefetch.c */ ++extern int swap_prefetch; ++struct swapped_entry { ++ swp_entry_t swp_entry; /* The actual swap entry */ ++ struct list_head swapped_list; /* Linked list of entries */ ++#if MAX_NUMNODES > 1 ++ int node; /* Node id */ ++#endif ++} __attribute__((packed)); ++ ++static inline void store_swap_entry_node(struct swapped_entry *entry, ++ struct page *page) ++{ ++#if MAX_NUMNODES > 1 ++ entry->node = page_to_nid(page); ++#endif ++} ++ ++static inline int get_swap_entry_node(struct swapped_entry *entry) ++{ ++#if MAX_NUMNODES > 1 ++ return entry->node; ++#else ++ return 0; ++#endif ++} ++ ++extern void add_to_swapped_list(struct page *page); ++extern void remove_from_swapped_list(const unsigned long index); ++extern void delay_swap_prefetch(void); ++extern void prepare_swap_prefetch(void); ++ ++#else /* CONFIG_SWAP_PREFETCH */ ++static inline void add_to_swapped_list(struct page *__unused) ++{ ++} ++ ++static inline void prepare_swap_prefetch(void) ++{ ++} ++ ++static inline void remove_from_swapped_list(const unsigned long __unused) ++{ ++} ++ ++static inline void delay_swap_prefetch(void) ++{ ++} ++#endif /* CONFIG_SWAP_PREFETCH */ ++ ++#endif /* SWAP_PREFETCH_H_INCLUDED */ +Index: linux-2.6.21-ck1/include/linux/sysctl.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/sysctl.h 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/sysctl.h 2007-05-04 12:24:20.000000000 +1000 +@@ -190,7 +190,7 @@ enum + VM_OVERCOMMIT_RATIO=16, /* percent of RAM to allow overcommit in */ + VM_PAGEBUF=17, /* struct: Control pagebuf parameters */ + VM_HUGETLB_PAGES=18, /* int: Number of available Huge Pages */ +- VM_SWAPPINESS=19, /* Tendency to steal mapped memory */ ++ VM_MAPPED=19, /* percent mapped min while evicting cache */ + VM_LOWMEM_RESERVE_RATIO=20,/* reservation ratio for lower memory zones */ + VM_MIN_FREE_KBYTES=21, /* Minimum free kilobytes to maintain */ + VM_MAX_MAP_COUNT=22, /* int: Maximum number of mmaps/address-space */ +Index: linux-2.6.21-ck1/include/linux/mmzone.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/mmzone.h 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/mmzone.h 2007-05-04 12:24:21.000000000 +1000 +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -178,7 +179,7 @@ enum zone_type { + + struct zone { + /* Fields commonly accessed by the page allocator */ +- unsigned long pages_min, pages_low, pages_high; ++ unsigned long pages_min, pages_low, pages_high, pages_lots; + /* + * We don't know if the memory that we're going to allocate will be freeable + * or/and it will be released eventually, so to avoid totally wasting several +@@ -449,6 +450,7 @@ typedef struct pglist_data { + wait_queue_head_t kswapd_wait; + struct task_struct *kswapd; + int kswapd_max_order; ++ struct timer_list watermark_timer; + } pg_data_t; + + #define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages) +@@ -465,7 +467,7 @@ typedef struct pglist_data { + void get_zone_counts(unsigned long *active, unsigned long *inactive, + unsigned long *free); + void build_all_zonelists(void); +-void wakeup_kswapd(struct zone *zone, int order); ++void wakeup_kswapd(struct zone *zone, int order, struct task_struct *p); + int zone_watermark_ok(struct zone *z, int order, unsigned long mark, + int classzone_idx, int alloc_flags); + enum memmap_context { +Index: linux-2.6.21-ck1/mm/page_alloc.c +=================================================================== +--- linux-2.6.21-ck1.orig/mm/page_alloc.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/mm/page_alloc.c 2007-05-04 12:24:20.000000000 +1000 +@@ -1277,7 +1277,7 @@ restart: + goto nopage; + + for (z = zonelist->zones; *z; z++) +- wakeup_kswapd(*z, order); ++ wakeup_kswapd(*z, order, p); + + /* + * OK, we're below the kswapd watermark and have kicked background +@@ -1341,7 +1341,7 @@ nofail_alloc: + reclaim_state.reclaimed_slab = 0; + p->reclaim_state = &reclaim_state; + +- did_some_progress = try_to_free_pages(zonelist->zones, gfp_mask); ++ did_some_progress = try_to_free_pages(zonelist->zones, gfp_mask, p); + + p->reclaim_state = NULL; + p->flags &= ~PF_MEMALLOC; +@@ -1597,6 +1597,7 @@ void show_free_areas(void) + " min:%lukB" + " low:%lukB" + " high:%lukB" ++ " lots:%lukB" + " active:%lukB" + " inactive:%lukB" + " present:%lukB" +@@ -1608,6 +1609,7 @@ void show_free_areas(void) + K(zone->pages_min), + K(zone->pages_low), + K(zone->pages_high), ++ K(zone->pages_lots), + K(zone_page_state(zone, NR_ACTIVE)), + K(zone_page_state(zone, NR_INACTIVE)), + K(zone->present_pages), +@@ -3146,6 +3148,7 @@ void setup_per_zone_pages_min(void) + + zone->pages_low = zone->pages_min + (tmp >> 2); + zone->pages_high = zone->pages_min + (tmp >> 1); ++ zone->pages_lots = zone->pages_min + tmp; + spin_unlock_irqrestore(&zone->lru_lock, flags); + } + +Index: linux-2.6.21-ck1/fs/buffer.c +=================================================================== +--- linux-2.6.21-ck1.orig/fs/buffer.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/fs/buffer.c 2007-05-04 12:24:20.000000000 +1000 +@@ -363,7 +363,7 @@ static void free_more_memory(void) + for_each_online_pgdat(pgdat) { + zones = pgdat->node_zonelists[gfp_zone(GFP_NOFS)].zones; + if (*zones) +- try_to_free_pages(zones, GFP_NOFS); ++ try_to_free_pages(zones, GFP_NOFS, NULL); + } + } + +Index: linux-2.6.21-ck1/mm/filemap.c +=================================================================== +--- linux-2.6.21-ck1.orig/mm/filemap.c 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/mm/filemap.c 2007-05-04 12:24:21.000000000 +1000 +@@ -466,6 +466,16 @@ int add_to_page_cache_lru(struct page *p + return ret; + } + ++int add_to_page_cache_lru_tail(struct page *page, ++ struct address_space *mapping, pgoff_t offset, gfp_t gfp_mask) ++{ ++ int ret = add_to_page_cache(page, mapping, offset, gfp_mask); ++ ++ if (ret == 0) ++ lru_cache_add_tail(page); ++ return ret; ++} ++ + #ifdef CONFIG_NUMA + struct page *__page_cache_alloc(gfp_t gfp) + { +@@ -836,6 +846,34 @@ static void shrink_readahead_size_eio(st + ra->ra_pages /= 4; + } + ++/* ++ * Sysctl which determines whether we should read from large files to the ++ * tail of the inactive lru list. ++ */ ++int vm_tail_largefiles __read_mostly = 1; ++ ++static inline int nr_mapped(void) ++{ ++ return global_page_state(NR_FILE_MAPPED) + ++ global_page_state(NR_ANON_PAGES); ++} ++ ++/* ++ * This examines how large in pages a file size is and returns 1 if it is ++ * more than half the unmapped ram. Avoid doing read_page_state which is ++ * expensive unless we already know it is likely to be large enough. ++ */ ++static int large_isize(unsigned long nr_pages) ++{ ++ if (nr_pages * 6 > vm_total_pages) { ++ unsigned long unmapped_ram = vm_total_pages - nr_mapped(); ++ ++ if (nr_pages * 2 > unmapped_ram) ++ return 1; ++ } ++ return 0; ++} ++ + /** + * do_generic_mapping_read - generic file read routine + * @mapping: address_space to be read +@@ -1044,8 +1082,19 @@ no_cached_page: + goto out; + } + } +- error = add_to_page_cache_lru(cached_page, mapping, +- index, GFP_KERNEL); ++ ++ /* ++ * If we know the file is large we add the pages read to the ++ * end of the lru as we're unlikely to be able to cache the ++ * whole file in ram so make those pages the first to be ++ * dropped if not referenced soon. ++ */ ++ if (vm_tail_largefiles && large_isize(end_index)) ++ error = add_to_page_cache_lru_tail(cached_page, ++ mapping, index, GFP_KERNEL); ++ else ++ error = add_to_page_cache_lru(cached_page, mapping, ++ index, GFP_KERNEL); + if (error) { + if (error == -EEXIST) + goto find_page; +Index: linux-2.6.21-ck1/Documentation/filesystems/proc.txt +=================================================================== +--- linux-2.6.21-ck1.orig/Documentation/filesystems/proc.txt 2007-05-04 12:24:01.000000000 +1000 ++++ linux-2.6.21-ck1/Documentation/filesystems/proc.txt 2007-05-04 12:24:21.000000000 +1000 +@@ -1325,6 +1325,14 @@ To free pagecache, dentries and inodes: + As this is a non-destructive operation and dirty objects are not freeable, the + user should run `sync' first. + ++tail_largefiles ++--------------- ++ ++When enabled reads from large files to the tail end of the inactive lru list. ++This means that any cache from reading large files is dropped very quickly, ++preventing loss of mapped ram and useful pagecache when large files are read. ++This does, however, make caching less effective when working with large files. ++ + + 2.5 /proc/sys/dev - Device specific parameters + ---------------------------------------------- +Index: linux-2.6.21-ck1/arch/i386/Kconfig +=================================================================== +--- linux-2.6.21-ck1.orig/arch/i386/Kconfig 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/arch/i386/Kconfig 2007-05-04 12:24:21.000000000 +1000 +@@ -546,7 +546,7 @@ endchoice + + choice + depends on EXPERIMENTAL +- prompt "Memory split" if EMBEDDED ++ prompt "Memory split" + default VMSPLIT_3G + help + Select the desired split between kernel and user memory. +@@ -565,14 +565,14 @@ choice + option alone! + + config VMSPLIT_3G +- bool "3G/1G user/kernel split" ++ bool "Default 896MB lowmem (3G/1G user/kernel split)" + config VMSPLIT_3G_OPT + depends on !HIGHMEM +- bool "3G/1G user/kernel split (for full 1G low memory)" ++ bool "1GB lowmem (3G/1G user/kernel split)" + config VMSPLIT_2G +- bool "2G/2G user/kernel split" ++ bool "2GB lowmem (2G/2G user/kernel split)" + config VMSPLIT_1G +- bool "1G/3G user/kernel split" ++ bool "3GB lowmem (1G/3G user/kernel split)" + endchoice + + config PAGE_OFFSET +Index: linux-2.6.21-ck1/kernel/Kconfig.hz +=================================================================== +--- linux-2.6.21-ck1.orig/kernel/Kconfig.hz 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/kernel/Kconfig.hz 2007-05-04 12:24:21.000000000 +1000 +@@ -4,7 +4,7 @@ + + choice + prompt "Timer frequency" +- default HZ_250 ++ default HZ_1000 + help + Allows the configuration of the timer frequency. It is customary + to have the timer interrupt run at 1000 Hz but 100 Hz may be more +@@ -13,8 +13,7 @@ choice + contention and cacheline bounces as a result of timer interrupts. + Note that the timer interrupt occurs on each processor in an SMP + environment leading to NR_CPUS * HZ number of timer interrupts +- per second. +- ++ per second.Laptops may also show improved battery life. + + config HZ_100 + bool "100 HZ" +@@ -23,13 +22,14 @@ choice + with lots of processors that may show reduced performance if + too many timer interrupts are occurring. + +- config HZ_250 ++ config HZ_250_NODEFAULT + bool "250 HZ" + help +- 250 Hz is a good compromise choice allowing server performance +- while also showing good interactive responsiveness even +- on SMP and NUMA systems. If you are going to be using NTSC video +- or multimedia, selected 300Hz instead. ++ 250 HZ is a lousy compromise choice allowing server interactivity ++ while also showing desktop throughput and no extra power saving on ++ laptops. Good for when you can't make up your mind. ++ ++ Recommend 100 or 1000 instead. + + config HZ_300 + bool "300 HZ" +@@ -45,12 +45,76 @@ choice + 1000 Hz is the preferred choice for desktop systems and other + systems requiring fast interactive responses to events. + ++ config HZ_1500 ++ bool "1500 HZ" ++ help ++ 1500 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_2000 ++ bool "2000 HZ" ++ help ++ 2000 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_3000 ++ bool "3000 HZ" ++ help ++ 3000 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_4000 ++ bool "4000 HZ" ++ help ++ 4000 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_5000 ++ bool "5000 HZ" ++ help ++ 5000 Hz is an obscene value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_7500 ++ bool "7500 HZ" ++ help ++ 7500 Hz is an obscene value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_10000 ++ bool "10000 HZ" ++ help ++ 10000 Hz is an obscene value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ + endchoice + + config HZ + int + default 100 if HZ_100 +- default 250 if HZ_250 ++ default 250 if HZ_250_NODEFAULT + default 300 if HZ_300 + default 1000 if HZ_1000 ++ default 1500 if HZ_1500 ++ default 2000 if HZ_2000 ++ default 3000 if HZ_3000 ++ default 4000 if HZ_4000 ++ default 5000 if HZ_5000 ++ default 7500 if HZ_7500 ++ default 10000 if HZ_10000 + +Index: linux-2.6.21-ck1/arch/i386/defconfig +=================================================================== +--- linux-2.6.21-ck1.orig/arch/i386/defconfig 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/arch/i386/defconfig 2007-05-04 12:24:21.000000000 +1000 +@@ -214,10 +214,10 @@ CONFIG_MTRR=y + # CONFIG_IRQBALANCE is not set + CONFIG_SECCOMP=y + # CONFIG_HZ_100 is not set +-CONFIG_HZ_250=y ++# CONFIG_HZ_250 is not set + # CONFIG_HZ_300 is not set +-# CONFIG_HZ_1000 is not set +-CONFIG_HZ=250 ++CONFIG_HZ_1000=y ++CONFIG_HZ=1000 + # CONFIG_KEXEC is not set + # CONFIG_CRASH_DUMP is not set + CONFIG_PHYSICAL_START=0x100000 +Index: linux-2.6.21-ck1/arch/x86_64/defconfig +=================================================================== +--- linux-2.6.21-ck1.orig/arch/x86_64/defconfig 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/arch/x86_64/defconfig 2007-05-04 12:24:21.000000000 +1000 +@@ -178,10 +178,10 @@ CONFIG_PHYSICAL_START=0x200000 + CONFIG_SECCOMP=y + # CONFIG_CC_STACKPROTECTOR is not set + # CONFIG_HZ_100 is not set +-CONFIG_HZ_250=y ++# CONFIG_HZ_250 is not set + # CONFIG_HZ_300 is not set +-# CONFIG_HZ_1000 is not set +-CONFIG_HZ=250 ++CONFIG_HZ_1000=y ++CONFIG_HZ=1000 + # CONFIG_REORDER is not set + CONFIG_K8_NB=y + CONFIG_GENERIC_HARDIRQS=y +Index: linux-2.6.21-ck1/include/linux/jiffies.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/jiffies.h 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/jiffies.h 2007-05-04 12:24:21.000000000 +1000 +@@ -29,6 +29,12 @@ + # define SHIFT_HZ 9 + #elif HZ >= 768 && HZ < 1536 + # define SHIFT_HZ 10 ++#elif HZ >= 1536 && HZ < 3072 ++# define SHIFT_HZ 11 ++#elif HZ >= 3072 && HZ < 6144 ++# define SHIFT_HZ 12 ++#elif HZ >= 6144 && HZ < 12288 ++# define SHIFT_HZ 13 + #else + # error You lose. + #endif +Index: linux-2.6.21-ck1/include/net/inet_timewait_sock.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/net/inet_timewait_sock.h 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/include/net/inet_timewait_sock.h 2007-05-04 12:24:21.000000000 +1000 +@@ -38,8 +38,8 @@ struct inet_hashinfo; + * If time > 4sec, it is "slow" path, no recycling is required, + * so that we select tick to get range about 4 seconds. + */ +-#if HZ <= 16 || HZ > 4096 +-# error Unsupported: HZ <= 16 or HZ > 4096 ++#if HZ <= 16 || HZ > 16384 ++# error Unsupported: HZ <= 16 or HZ > 16384 + #elif HZ <= 32 + # define INET_TWDR_RECYCLE_TICK (5 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) + #elif HZ <= 64 +@@ -54,8 +54,12 @@ struct inet_hashinfo; + # define INET_TWDR_RECYCLE_TICK (10 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) + #elif HZ <= 2048 + # define INET_TWDR_RECYCLE_TICK (11 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) +-#else ++#elif HZ <= 4096 + # define INET_TWDR_RECYCLE_TICK (12 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) ++#elif HZ <= 8192 ++# define INET_TWDR_RECYCLE_TICK (13 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) ++#else ++# define INET_TWDR_RECYCLE_TICK (14 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) + #endif + + /* TIME_WAIT reaping mechanism. */ +Index: linux-2.6.21-ck1/include/net/pkt_sched.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/net/pkt_sched.h 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/include/net/pkt_sched.h 2007-05-04 12:24:21.000000000 +1000 +@@ -78,8 +78,14 @@ typedef long psched_tdiff_t; + #define PSCHED_JSCALE 12 + #elif HZ >= 384 && HZ < 768 + #define PSCHED_JSCALE 11 +-#elif HZ >= 768 ++#elif HZ >= 768 && HZ < 1536 + #define PSCHED_JSCALE 10 ++#elif HZ >= 1536 && HZ < 3072 ++#define PSCHED_JSCALE 9 ++#elif HZ >= 3072 && HZ < 6144 ++#define PSCHED_JSCALE 8 ++#else ++#define PSCHED_JSCALE 7 + #endif + + #define PSCHED_GET_TIME(stamp) ((stamp) = (get_jiffies_64()<loops_per_jiffy/(500000/HZ), +- (c->loops_per_jiffy/(5000/HZ)) % 100); ++ (c->loops_per_jiffy * 10/(50000/HZ)) % 100); + seq_printf(m, "clflush size\t: %u\n\n", c->x86_clflush_size); + + return 0; +Index: linux-2.6.21-ck1/arch/i386/kernel/smpboot.c +=================================================================== +--- linux-2.6.21-ck1.orig/arch/i386/kernel/smpboot.c 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/arch/i386/kernel/smpboot.c 2007-05-04 12:24:21.000000000 +1000 +@@ -1134,7 +1134,7 @@ static void __init smp_boot_cpus(unsigne + "Total of %d processors activated (%lu.%02lu BogoMIPS).\n", + cpucount+1, + bogosum/(500000/HZ), +- (bogosum/(5000/HZ))%100); ++ (bogosum * 10/(50000/HZ))%100); + + Dprintk("Before bogocount - setting activated=1.\n"); + +Index: linux-2.6.21-ck1/include/linux/nfsd/stats.h +=================================================================== +--- linux-2.6.21-ck1.orig/include/linux/nfsd/stats.h 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/include/linux/nfsd/stats.h 2007-05-04 12:24:21.000000000 +1000 +@@ -35,8 +35,8 @@ struct nfsd_stats { + + }; + +-/* thread usage wraps very million seconds (approx one fortnight) */ +-#define NFSD_USAGE_WRAP (HZ*1000000) ++/* thread usage wraps every one hundred thousand seconds (approx one day) */ ++#define NFSD_USAGE_WRAP (HZ*100000) + + #ifdef __KERNEL__ + +Index: linux-2.6.21-ck1/arch/x86_64/kernel/setup.c +=================================================================== +--- linux-2.6.21-ck1.orig/arch/x86_64/kernel/setup.c 2007-05-04 12:24:00.000000000 +1000 ++++ linux-2.6.21-ck1/arch/x86_64/kernel/setup.c 2007-05-04 12:24:22.000000000 +1000 +@@ -1053,7 +1053,7 @@ static int show_cpuinfo(struct seq_file + + seq_printf(m, "\nbogomips\t: %lu.%02lu\n", + c->loops_per_jiffy/(500000/HZ), +- (c->loops_per_jiffy/(5000/HZ)) % 100); ++ (c->loops_per_jiffy * 10/(50000/HZ)) % 100); + + if (c->x86_tlbsize > 0) + seq_printf(m, "TLB size\t: %d 4K pages\n", c->x86_tlbsize); diff --git a/pkgs/os-specific/linux/kernel/patch-2.6.22-ck1 b/pkgs/os-specific/linux/kernel/patch-2.6.22-ck1 new file mode 100644 index 00000000000..81fa14e2abe --- /dev/null +++ b/pkgs/os-specific/linux/kernel/patch-2.6.22-ck1 @@ -0,0 +1,5167 @@ +Index: linux-2.6.22-ck1/include/linux/sched.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/sched.h 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/sched.h 2007-07-10 14:55:21.000000000 +1000 +@@ -34,9 +34,14 @@ + #define SCHED_FIFO 1 + #define SCHED_RR 2 + #define SCHED_BATCH 3 ++#define SCHED_ISO 4 ++#define SCHED_IDLEPRIO 5 + + #ifdef __KERNEL__ + ++#define SCHED_MAX SCHED_IDLEPRIO ++#define SCHED_RANGE(policy) ((policy) <= SCHED_MAX) ++ + struct sched_param { + int sched_priority; + }; +@@ -129,7 +134,7 @@ + extern unsigned long nr_active(void); + extern unsigned long nr_iowait(void); + extern unsigned long weighted_cpuload(const int cpu); +- ++extern int above_background_load(void); + + /* + * Task state bitmask. NOTE! These bits are also +@@ -150,8 +155,7 @@ + #define EXIT_ZOMBIE 16 + #define EXIT_DEAD 32 + /* in tsk->state again */ +-#define TASK_NONINTERACTIVE 64 +-#define TASK_DEAD 128 ++#define TASK_DEAD 64 + + #define __set_task_state(tsk, state_value) \ + do { (tsk)->state = (state_value); } while (0) +@@ -537,14 +541,19 @@ + + #define MAX_USER_RT_PRIO 100 + #define MAX_RT_PRIO MAX_USER_RT_PRIO ++#define PRIO_RANGE (40) ++#define ISO_PRIO (MAX_RT_PRIO - 1) + +-#define MAX_PRIO (MAX_RT_PRIO + 40) ++#define MAX_PRIO (MAX_RT_PRIO + PRIO_RANGE) + +-#define rt_prio(prio) unlikely((prio) < MAX_RT_PRIO) ++#define rt_prio(prio) unlikely((prio) < ISO_PRIO) + #define rt_task(p) rt_prio((p)->prio) + #define batch_task(p) (unlikely((p)->policy == SCHED_BATCH)) +-#define is_rt_policy(p) ((p) != SCHED_NORMAL && (p) != SCHED_BATCH) ++#define is_rt_policy(policy) ((policy) == SCHED_FIFO || \ ++ (policy) == SCHED_RR) + #define has_rt_policy(p) unlikely(is_rt_policy((p)->policy)) ++#define iso_task(p) unlikely((p)->policy == SCHED_ISO) ++#define idleprio_task(p) unlikely((p)->policy == SCHED_IDLEPRIO) + + /* + * Some day this will be a full-fledged user tracking system.. +@@ -809,13 +818,6 @@ + struct pipe_inode_info; + struct uts_namespace; + +-enum sleep_type { +- SLEEP_NORMAL, +- SLEEP_NONINTERACTIVE, +- SLEEP_INTERACTIVE, +- SLEEP_INTERRUPTED, +-}; +- + struct prio_array; + + struct task_struct { +@@ -835,20 +837,33 @@ + int load_weight; /* for niceness load balancing purposes */ + int prio, static_prio, normal_prio; + struct list_head run_list; ++ /* ++ * This bitmap shows what priorities this task has received quota ++ * from for this major priority rotation on its current runqueue. ++ */ ++ DECLARE_BITMAP(bitmap, PRIO_RANGE + 1); + struct prio_array *array; ++ /* Which major runqueue rotation did this task run */ ++ unsigned long rotation; + + unsigned short ioprio; + #ifdef CONFIG_BLK_DEV_IO_TRACE + unsigned int btrace_seq; + #endif +- unsigned long sleep_avg; + unsigned long long timestamp, last_ran; + unsigned long long sched_time; /* sched_clock time spent running */ +- enum sleep_type sleep_type; + + unsigned int policy; + cpumask_t cpus_allowed; +- unsigned int time_slice, first_time_slice; ++ /* ++ * How much this task is entitled to run at the current priority ++ * before being requeued at a lower priority. ++ */ ++ int time_slice; ++ /* Is this the very first time_slice this task has ever run. */ ++ unsigned int first_time_slice; ++ /* How much this task receives at each priority level */ ++ int quota; + + #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) + struct sched_info sched_info; +@@ -1013,6 +1028,7 @@ + struct held_lock held_locks[MAX_LOCK_DEPTH]; + unsigned int lockdep_recursion; + #endif ++ unsigned long mutexes_held; + + /* journalling filesystem info */ + void *journal_info; +@@ -1181,9 +1197,11 @@ + #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ + #define PF_SPREAD_PAGE 0x01000000 /* Spread page cache over cpuset */ + #define PF_SPREAD_SLAB 0x02000000 /* Spread some slab caches over cpuset */ ++#define PF_ISOREF 0x04000000 /* SCHED_ISO task has used up quota */ + #define PF_MEMPOLICY 0x10000000 /* Non-default NUMA mempolicy */ + #define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */ + #define PF_FREEZER_SKIP 0x40000000 /* Freezer should not count it as freezeable */ ++#define PF_NONSLEEP 0x80000000 /* Waiting on in-kernel activity */ + + /* + * Only the _current_ task can read/write to tsk->flags, but other +@@ -1253,7 +1271,7 @@ + #endif + + extern void set_user_nice(struct task_struct *p, long nice); +-extern int task_prio(const struct task_struct *p); ++extern int task_prio(struct task_struct *p); + extern int task_nice(const struct task_struct *p); + extern int can_nice(const struct task_struct *p, const int nice); + extern int task_curr(const struct task_struct *p); +Index: linux-2.6.22-ck1/kernel/sched.c +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/sched.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/sched.c 2007-07-10 14:55:24.000000000 +1000 +@@ -16,6 +16,7 @@ + * by Davide Libenzi, preemptible kernel bits by Robert Love. + * 2003-09-03 Interactivity tuning by Con Kolivas. + * 2004-04-02 Scheduler domains code by Nick Piggin ++ * 2007-03-02 Staircase deadline scheduling policy by Con Kolivas + */ + + #include +@@ -53,8 +54,9 @@ + #include + #include + #include +- ++#include + #include ++ + #include + + /* +@@ -84,147 +86,85 @@ + #define USER_PRIO(p) ((p)-MAX_RT_PRIO) + #define TASK_USER_PRIO(p) USER_PRIO((p)->static_prio) + #define MAX_USER_PRIO (USER_PRIO(MAX_PRIO)) ++#define SCHED_PRIO(p) ((p)+MAX_RT_PRIO) + +-/* +- * Some helpers for converting nanosecond timing to jiffy resolution +- */ +-#define NS_TO_JIFFIES(TIME) ((TIME) / (1000000000 / HZ)) ++/* Some helpers for converting to/from various scales.*/ + #define JIFFIES_TO_NS(TIME) ((TIME) * (1000000000 / HZ)) +- +-/* +- * These are the 'tuning knobs' of the scheduler: +- * +- * Minimum timeslice is 5 msecs (or 1 jiffy, whichever is larger), +- * default timeslice is 100 msecs, maximum timeslice is 800 msecs. +- * Timeslices get refilled after they expire. +- */ +-#define MIN_TIMESLICE max(5 * HZ / 1000, 1) +-#define DEF_TIMESLICE (100 * HZ / 1000) +-#define ON_RUNQUEUE_WEIGHT 30 +-#define CHILD_PENALTY 95 +-#define PARENT_PENALTY 100 +-#define EXIT_WEIGHT 3 +-#define PRIO_BONUS_RATIO 25 +-#define MAX_BONUS (MAX_USER_PRIO * PRIO_BONUS_RATIO / 100) +-#define INTERACTIVE_DELTA 2 +-#define MAX_SLEEP_AVG (DEF_TIMESLICE * MAX_BONUS) +-#define STARVATION_LIMIT (MAX_SLEEP_AVG) +-#define NS_MAX_SLEEP_AVG (JIFFIES_TO_NS(MAX_SLEEP_AVG)) +- +-/* +- * If a task is 'interactive' then we reinsert it in the active +- * array after it has expired its current timeslice. (it will not +- * continue to run immediately, it will still roundrobin with +- * other interactive tasks.) +- * +- * This part scales the interactivity limit depending on niceness. +- * +- * We scale it linearly, offset by the INTERACTIVE_DELTA delta. +- * Here are a few examples of different nice levels: +- * +- * TASK_INTERACTIVE(-20): [1,1,1,1,1,1,1,1,1,0,0] +- * TASK_INTERACTIVE(-10): [1,1,1,1,1,1,1,0,0,0,0] +- * TASK_INTERACTIVE( 0): [1,1,1,1,0,0,0,0,0,0,0] +- * TASK_INTERACTIVE( 10): [1,1,0,0,0,0,0,0,0,0,0] +- * TASK_INTERACTIVE( 19): [0,0,0,0,0,0,0,0,0,0,0] +- * +- * (the X axis represents the possible -5 ... 0 ... +5 dynamic +- * priority range a task can explore, a value of '1' means the +- * task is rated interactive.) +- * +- * Ie. nice +19 tasks can never get 'interactive' enough to be +- * reinserted into the active array. And only heavily CPU-hog nice -20 +- * tasks will be expired. Default nice 0 tasks are somewhere between, +- * it takes some effort for them to get interactive, but it's not +- * too hard. +- */ +- +-#define CURRENT_BONUS(p) \ +- (NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / \ +- MAX_SLEEP_AVG) +- +-#define GRANULARITY (10 * HZ / 1000 ? : 1) +- +-#ifdef CONFIG_SMP +-#define TIMESLICE_GRANULARITY(p) (GRANULARITY * \ +- (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)) * \ +- num_online_cpus()) +-#else +-#define TIMESLICE_GRANULARITY(p) (GRANULARITY * \ +- (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1))) +-#endif +- +-#define SCALE(v1,v1_max,v2_max) \ +- (v1) * (v2_max) / (v1_max) +- +-#define DELTA(p) \ +- (SCALE(TASK_NICE(p) + 20, 40, MAX_BONUS) - 20 * MAX_BONUS / 40 + \ +- INTERACTIVE_DELTA) +- +-#define TASK_INTERACTIVE(p) \ +- ((p)->prio <= (p)->static_prio - DELTA(p)) +- +-#define INTERACTIVE_SLEEP(p) \ +- (JIFFIES_TO_NS(MAX_SLEEP_AVG * \ +- (MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1)) +- +-#define TASK_PREEMPTS_CURR(p, rq) \ +- ((p)->prio < (rq)->curr->prio) +- +-#define SCALE_PRIO(x, prio) \ +- max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO / 2), MIN_TIMESLICE) +- +-static unsigned int static_prio_timeslice(int static_prio) +-{ +- if (static_prio < NICE_TO_PRIO(0)) +- return SCALE_PRIO(DEF_TIMESLICE * 4, static_prio); +- else +- return SCALE_PRIO(DEF_TIMESLICE, static_prio); +-} +- +-#ifdef CONFIG_SMP +-/* +- * Divide a load by a sched group cpu_power : (load / sg->__cpu_power) +- * Since cpu_power is a 'constant', we can use a reciprocal divide. ++#define MS_TO_NS(TIME) ((TIME) * 1000000) ++#define MS_TO_US(TIME) ((TIME) * 1000) ++#define US_TO_MS(TIME) ((TIME) / 1000) ++ ++#define TASK_PREEMPTS_CURR(p, curr) ((p)->prio < (curr)->prio) ++ ++/* ++ * This is the time all tasks within the same priority round robin. ++ * Value is in ms and set to a minimum of 10ms. Scales with number of cpus. ++ * Tunable via /proc interface. ++ */ ++int rr_interval __read_mostly = 6; ++int sched_interactive __read_mostly = 1; ++ ++/* ++ * sched_iso_cpu - sysctl which determines the cpu percentage SCHED_ISO tasks ++ * are allowed to run (over ISO_PERIOD seconds) as real time tasks. ++ * sched_iso_period - sysctl which determines the number of seconds over ++ * which cpu usage of SCHED_ISO tasks is averaged to determine if they are ++ * exceeding their allowable bandwidth. ++*/ ++int sched_iso_cpu __read_mostly = 80; ++int sched_iso_period __read_mostly = 5; ++ ++#define ISO_PERIOD ((sched_iso_period * HZ) + 1) ++ ++/* ++ * This contains a bitmap for each dynamic priority level with empty slots ++ * for the valid priorities each different nice level can have. It allows ++ * us to stagger the slots where differing priorities run in a way that ++ * keeps latency differences between different nice levels at a minimum. ++ * The purpose of a pre-generated matrix is for rapid lookup of next slot in ++ * O(1) time without having to recalculate every time priority gets demoted. ++ * All nice levels use priority slot 39 as this allows less niced tasks to ++ * get all priority slots better than that before expiration is forced. ++ * ie, where 0 means a slot for that priority, priority running from left to ++ * right is from prio 0 to prio 39: ++ * nice -20 0000000000000000000000000000000000000000 ++ * nice -10 1000100010001000100010001000100010010000 ++ * nice 0 1010101010101010101010101010101010101010 ++ * nice 5 1011010110110101101101011011010110110110 ++ * nice 10 1110111011101110111011101110111011101110 ++ * nice 15 1111111011111110111111101111111011111110 ++ * nice 19 1111111111111111111111111111111111111110 + */ +-static inline u32 sg_div_cpu_power(const struct sched_group *sg, u32 load) +-{ +- return reciprocal_divide(load, sg->reciprocal_cpu_power); +-} ++static unsigned long prio_matrix[PRIO_RANGE][BITS_TO_LONGS(PRIO_RANGE)] ++ __read_mostly; + +-/* +- * Each time a sched group cpu_power is changed, +- * we must compute its reciprocal value +- */ +-static inline void sg_inc_cpu_power(struct sched_group *sg, u32 val) +-{ +- sg->__cpu_power += val; +- sg->reciprocal_cpu_power = reciprocal_value(sg->__cpu_power); +-} +-#endif ++struct rq; + + /* +- * task_timeslice() scales user-nice values [ -20 ... 0 ... 19 ] +- * to time slice values: [800ms ... 100ms ... 5ms] +- * +- * The higher a thread's priority, the bigger timeslices +- * it gets during one round of execution. But even the lowest +- * priority thread gets MIN_TIMESLICE worth of execution time. ++ * These are the runqueue data structures: + */ ++struct prio_array { ++ /* Tasks queued at each priority */ ++ struct list_head queue[MAX_PRIO + 1]; + +-static inline unsigned int task_timeslice(struct task_struct *p) +-{ +- return static_prio_timeslice(p->static_prio); +-} ++ /* ++ * The bitmap of priorities queued for this array. While the expired ++ * array will never have realtime tasks on it, it is simpler to have ++ * equal sized bitmaps for a cheap array swap. Include 1 bit for ++ * delimiter. ++ */ ++ DECLARE_BITMAP(prio_bitmap, MAX_PRIO + 1); + +-/* +- * These are the runqueue data structures: +- */ ++ /* ++ * The best static priority (of the dynamic priority tasks) queued ++ * this array. ++ */ ++ int best_static_prio; + +-struct prio_array { +- unsigned int nr_active; +- DECLARE_BITMAP(bitmap, MAX_PRIO+1); /* include 1 bit for delimiter */ +- struct list_head queue[MAX_PRIO]; ++#ifdef CONFIG_SMP ++ /* For convenience looks back at rq */ ++ struct rq *rq; ++#endif + }; + + /* +@@ -260,14 +200,28 @@ + */ + unsigned long nr_uninterruptible; + +- unsigned long expired_timestamp; + /* Cached timestamp set by update_cpu_clock() */ + unsigned long long most_recent_timestamp; + struct task_struct *curr, *idle; + unsigned long next_balance; + struct mm_struct *prev_mm; +- struct prio_array *active, *expired, arrays[2]; +- int best_expired_prio; ++ ++ struct prio_array *active, *expired, *idleprio, arrays[2]; ++ unsigned long *dyn_bitmap, *exp_bitmap; ++ ++ /* ++ * The current dynamic priority level this runqueue is at per static ++ * priority level. ++ */ ++ int prio_level[PRIO_RANGE]; ++ ++ /* How many times we have rotated the priority queue */ ++ unsigned long prio_rotation; ++ unsigned long iso_ticks; ++ unsigned short iso_refractory; ++ ++ /* Number of idleprio tasks running */ ++ unsigned long nr_idleprio; + atomic_t nr_iowait; + + #ifdef CONFIG_SMP +@@ -606,12 +560,9 @@ + #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) + /* + * Called when a process is dequeued from the active array and given +- * the cpu. We should note that with the exception of interactive +- * tasks, the expired queue will become the active queue after the active +- * queue is empty, without explicitly dequeuing and requeuing tasks in the +- * expired queue. (Interactive tasks may be requeued directly to the +- * active queue, thus delaying tasks in the expired queue from running; +- * see scheduler_tick()). ++ * the cpu. We should note that the expired queue will become the active ++ * queue after the active queue is empty, without explicitly dequeuing and ++ * requeuing tasks in the expired queue. + * + * This function is only called from sched_info_arrive(), rather than + * dequeue_task(). Even though a task may be queued and dequeued multiple +@@ -709,71 +660,304 @@ + #define sched_info_switch(t, next) do { } while (0) + #endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */ + ++static int idleprio_suitable(struct task_struct *p) ++{ ++ return (!p->mutexes_held && !freezing(p) && !signal_pending(p) && ++ !(p->flags & (PF_NONSLEEP | PF_EXITING))); ++} ++ ++static int idleprio(const struct task_struct *p) ++{ ++ return (p->prio == MAX_PRIO); ++} ++ ++static inline int task_queued(struct task_struct *task) ++{ ++ return !list_empty(&task->run_list); ++} ++ ++static inline void set_dynamic_bit(struct task_struct *p, struct rq *rq) ++{ ++ __set_bit(p->prio, p->array->prio_bitmap); ++} ++ + /* +- * Adding/removing a task to/from a priority array: ++ * Removing from a runqueue. + */ +-static void dequeue_task(struct task_struct *p, struct prio_array *array) ++static void dequeue_task(struct task_struct *p, struct rq *rq) + { +- array->nr_active--; +- list_del(&p->run_list); +- if (list_empty(array->queue + p->prio)) +- __clear_bit(p->prio, array->bitmap); ++ list_del_init(&p->run_list); ++ if (idleprio_task(p) && idleprio(p)) ++ rq->nr_idleprio--; ++ else if (list_empty(p->array->queue + p->prio)) ++ __clear_bit(p->prio, p->array->prio_bitmap); + } + +-static void enqueue_task(struct task_struct *p, struct prio_array *array) ++static void reset_first_time_slice(struct task_struct *p) + { +- sched_info_queued(p); +- list_add_tail(&p->run_list, array->queue + p->prio); +- __set_bit(p->prio, array->bitmap); +- array->nr_active++; ++ if (unlikely(p->first_time_slice)) ++ p->first_time_slice = 0; ++} ++ ++/* ++ * The task is being queued on a fresh array so it has its entitlement ++ * bitmap cleared. ++ */ ++static void task_new_array(struct task_struct *p, struct rq *rq, ++ struct prio_array *array) ++{ ++ bitmap_zero(p->bitmap, PRIO_RANGE); ++ p->rotation = rq->prio_rotation; ++ p->time_slice = p->quota; + p->array = array; ++ reset_first_time_slice(p); ++} ++ ++/* Find the first slot from the relevant prio_matrix entry */ ++static int first_prio_slot(struct task_struct *p) ++{ ++ if (unlikely(p->policy == SCHED_BATCH)) ++ return p->static_prio; ++ return SCHED_PRIO(find_first_zero_bit( ++ prio_matrix[USER_PRIO(p->static_prio)], PRIO_RANGE)); + } + + /* +- * Put task to the end of the run list without the overhead of dequeue +- * followed by enqueue. ++ * In sched_interactive mode priority allocation occurs per process per rq ++ * array swap. In !sched_interactive mode all waking tasks must obey the ++ * current prio level of all other tasks running per array swap. + */ +-static void requeue_task(struct task_struct *p, struct prio_array *array) ++static int minprio(struct rq *rq, int uprio) + { +- list_move_tail(&p->run_list, array->queue + p->prio); ++ if (sched_interactive) ++ return MAX_RT_PRIO; ++ return rq->prio_level[uprio]; + } + +-static inline void +-enqueue_task_head(struct task_struct *p, struct prio_array *array) ++/* ++ * Find the first unused slot by this task that is also in its prio_matrix ++ * level. SCHED_BATCH tasks do not use the priority matrix. They only take ++ * priority slots from their static_prio and above. ++ */ ++static int next_entitled_slot(struct task_struct *p, struct rq *rq) + { +- list_add(&p->run_list, array->queue + p->prio); +- __set_bit(p->prio, array->bitmap); +- array->nr_active++; +- p->array = array; ++ int search_prio = MAX_RT_PRIO, uprio = USER_PRIO(p->static_prio); ++ struct prio_array *array = rq->active; ++ DECLARE_BITMAP(tmp, PRIO_RANGE); ++ ++ /* ++ * Go straight to expiration if there are higher priority tasks ++ * already expired. ++ */ ++ if (p->static_prio > rq->expired->best_static_prio) ++ return MAX_PRIO; ++ if (!rq->prio_level[uprio]) ++ rq->prio_level[uprio] = MAX_RT_PRIO; ++ /* ++ * Only priorities equal to the prio_level and above for their ++ * static_prio are acceptable, and only if it's not better than ++ * a queued better static_prio's prio_level. ++ */ ++ if (p->static_prio < array->best_static_prio) { ++ if (likely(p->policy != SCHED_BATCH)) ++ array->best_static_prio = p->static_prio; ++ } else if (p->static_prio == array->best_static_prio) { ++ search_prio = minprio(rq, uprio); ++ } else { ++ int i; ++ ++ search_prio = minprio(rq, uprio); ++ /* A bound O(n) function, worst case n is 40 */ ++ for (i = array->best_static_prio; i <= p->static_prio ; i++) { ++ if (!rq->prio_level[USER_PRIO(i)]) ++ rq->prio_level[USER_PRIO(i)] = MAX_RT_PRIO; ++ search_prio = max(search_prio, ++ rq->prio_level[USER_PRIO(i)]); ++ } ++ } ++ if (unlikely(p->policy == SCHED_BATCH)) { ++ search_prio = max(search_prio, p->static_prio); ++ return SCHED_PRIO(find_next_zero_bit(p->bitmap, PRIO_RANGE, ++ USER_PRIO(search_prio))); ++ } ++ bitmap_or(tmp, p->bitmap, prio_matrix[uprio], PRIO_RANGE); ++ return SCHED_PRIO(find_next_zero_bit(tmp, PRIO_RANGE, ++ USER_PRIO(search_prio))); ++} ++ ++static void queue_expired(struct task_struct *p, struct rq *rq) ++{ ++ task_new_array(p, rq, rq->expired); ++ p->prio = p->normal_prio = first_prio_slot(p); ++ if (p->static_prio < rq->expired->best_static_prio) ++ rq->expired->best_static_prio = p->static_prio; ++ reset_first_time_slice(p); + } + ++#ifdef CONFIG_SMP + /* +- * __normal_prio - return the priority that is based on the static +- * priority but is modified by bonuses/penalties. +- * +- * We scale the actual sleep average [0 .... MAX_SLEEP_AVG] +- * into the -5 ... 0 ... +5 bonus/penalty range. +- * +- * We use 25% of the full 0...39 priority range so that: +- * +- * 1) nice +19 interactive tasks do not preempt nice 0 CPU hogs. +- * 2) nice -20 CPU hogs do not get preempted by nice 0 tasks. +- * +- * Both properties are important to certain workloads. ++ * If we're waking up a task that was previously on a different runqueue, ++ * update its data appropriately. Note we may be reading data from src_rq-> ++ * outside of lock, but the occasional inaccurate result should be harmless. + */ ++ static void update_if_moved(struct task_struct *p, struct rq *rq) ++{ ++ struct rq *src_rq = p->array->rq; ++ ++ if (src_rq == rq) ++ return; ++ /* ++ * Only need to set p->array when p->rotation == rq->prio_rotation as ++ * they will be set in recalc_task_prio when != rq->prio_rotation. ++ */ ++ if (p->rotation == src_rq->prio_rotation) { ++ p->rotation = rq->prio_rotation; ++ if (p->array == src_rq->expired) ++ p->array = rq->expired; ++ else ++ p->array = rq->active; ++ } else ++ p->rotation = 0; ++} ++#else ++static inline void update_if_moved(struct task_struct *p, struct rq *rq) ++{ ++} ++#endif + +-static inline int __normal_prio(struct task_struct *p) ++static inline int isoprio_suitable(struct task_struct *p) + { +- int bonus, prio; ++ return !(p->flags & PF_ISOREF); ++} + +- bonus = CURRENT_BONUS(p) - MAX_BONUS / 2; ++static int task_timeslice(struct task_struct *p); + +- prio = p->static_prio - bonus; +- if (prio < MAX_RT_PRIO) +- prio = MAX_RT_PRIO; +- if (prio > MAX_PRIO-1) +- prio = MAX_PRIO-1; +- return prio; ++/* ++ * recalc_task_prio determines what priority a non rt_task will be ++ * queued at. If the task has already been running during this runqueue's ++ * major rotation (rq->prio_rotation) then it continues at the same ++ * priority if it has tick entitlement left. If it does not have entitlement ++ * left, it finds the next priority slot according to its nice value that it ++ * has not extracted quota from. If it has not run during this major ++ * rotation, it starts at the next_entitled_slot and has its bitmap quota ++ * cleared. If it does not have any slots left it has all its slots reset and ++ * is queued on the expired at its first_prio_slot. ++ */ ++static void recalc_task_prio(struct task_struct *p, struct rq *rq) ++{ ++ struct prio_array *array = rq->active; ++ int queue_prio; ++ ++ if (iso_task(p)) { ++ if (isoprio_suitable(p)) { ++ /* ++ * If SCHED_ISO tasks have not used up their real time ++ * quota they have run just better than highest ++ * SCHED_NORMAL priority. Otherwise they run as ++ * SCHED_NORMAL. ++ */ ++ p->prio = p->normal_prio = ISO_PRIO; ++ p->array = rq->active; ++ if (p->time_slice <= 0) ++ p->time_slice = p->quota; ++ return; ++ } else if (p->prio == ISO_PRIO) { ++ /* Just about to be demoted to SCHED_NORMAL */ ++ p->time_slice = 0; ++ } ++ } else if (idleprio_task(p)) { ++ if (idleprio_suitable(p)) { ++ /* ++ * If suitable idleprio_tasks are queued at MAX_PRIO ++ * only on the idleprio array. Their time_slice is ++ * their full task_timeslice as they cooperatively ++ * multitask. ++ */ ++ p->prio = p->normal_prio = MAX_PRIO; ++ p->array = rq->idleprio; ++ if (p->time_slice <= 0) ++ p->time_slice = task_timeslice(p); ++ return; ++ } ++ /* ++ * If unsuitable idleprio_tasks are queued equivalent to ++ * nice 19 tasks on the expired array. ++ */ ++ p->flags &= ~PF_NONSLEEP; ++ p->prio = p->normal_prio = MAX_PRIO - 1; ++ p->array = rq->expired; ++ if (p->time_slice <= 0 || p->time_slice > p->quota) ++ p->time_slice = p->quota; ++ return; ++ } ++ ++ update_if_moved(p, rq); ++ if (p->rotation == rq->prio_rotation) { ++ if (p->array == array) { ++ if (p->time_slice > 0) ++ return; ++ p->time_slice = p->quota; ++ } else if (p->array == rq->expired) { ++ queue_expired(p, rq); ++ return; ++ } else ++ task_new_array(p, rq, array); ++ } else ++ task_new_array(p, rq, array); ++ ++ queue_prio = next_entitled_slot(p, rq); ++ if (queue_prio >= MAX_PRIO) { ++ queue_expired(p, rq); ++ return; ++ } ++ p->prio = p->normal_prio = queue_prio; ++ __set_bit(USER_PRIO(p->prio), p->bitmap); ++} ++ ++/* ++ * Adding to a runqueue. The dynamic priority queue that it is added to is ++ * determined by recalc_task_prio() above. ++ */ ++static inline void __enqueue_task(struct task_struct *p, struct rq *rq) ++{ ++ if (rt_task(p)) ++ p->array = rq->active; ++ else ++ recalc_task_prio(p, rq); ++ ++ if (idleprio_task(p) && idleprio(p)) ++ rq->nr_idleprio++; ++ sched_info_queued(p); ++ set_dynamic_bit(p, rq); ++} ++ ++static void enqueue_task(struct task_struct *p, struct rq *rq) ++{ ++ __enqueue_task(p, rq); ++ list_add_tail(&p->run_list, p->array->queue + p->prio); ++} ++ ++static inline void enqueue_task_head(struct task_struct *p, struct rq *rq) ++{ ++ __enqueue_task(p, rq); ++ list_add(&p->run_list, p->array->queue + p->prio); ++} ++ ++/* ++ * requeue_task is only called when p->static_prio does not change. p->prio ++ * can change with dynamic tasks. ++ */ ++static void requeue_task(struct task_struct *p, struct rq *rq, ++ struct prio_array *old_array, int old_prio) ++{ ++ if (p->array == rq->expired) ++ queue_expired(p, rq); ++ list_move_tail(&p->run_list, p->array->queue + p->prio); ++ if (!rt_task(p)) { ++ if (list_empty(old_array->queue + old_prio)) ++ __clear_bit(old_prio, old_array->prio_bitmap); ++ set_dynamic_bit(p, rq); ++ } + } + + /* +@@ -786,20 +970,29 @@ + */ + + /* +- * Assume: static_prio_timeslice(NICE_TO_PRIO(0)) == DEF_TIMESLICE +- * If static_prio_timeslice() is ever changed to break this assumption then +- * this code will need modification +- */ +-#define TIME_SLICE_NICE_ZERO DEF_TIMESLICE +-#define LOAD_WEIGHT(lp) \ +- (((lp) * SCHED_LOAD_SCALE) / TIME_SLICE_NICE_ZERO) +-#define PRIO_TO_LOAD_WEIGHT(prio) \ +- LOAD_WEIGHT(static_prio_timeslice(prio)) +-#define RTPRIO_TO_LOAD_WEIGHT(rp) \ +- (PRIO_TO_LOAD_WEIGHT(MAX_RT_PRIO) + LOAD_WEIGHT(rp)) ++ * task_timeslice - the total duration a task can run during one major ++ * rotation. Returns value in milliseconds as the smallest value can be 1. ++ */ ++static int task_timeslice(struct task_struct *p) ++{ ++ int slice = p->quota; /* quota is in us */ ++ ++ if (!rt_task(p)) ++ slice += (PRIO_RANGE - 1 - TASK_USER_PRIO(p)) * slice; ++ return US_TO_MS(slice); ++} ++ ++/* ++ * The load weight is basically the task_timeslice in ms. Realtime tasks are ++ * special cased to be proportionately larger than nice -20 by their ++ * rt_priority. The weight for rt tasks can only be arbitrary at best. ++ */ ++#define RTPRIO_TO_LOAD_WEIGHT(rp) (rr_interval * 20 * (40 + rp)) + + static void set_load_weight(struct task_struct *p) + { ++ int load_weight; ++ + if (has_rt_policy(p)) { + #ifdef CONFIG_SMP + if (p == task_rq(p)->migration_thread) +@@ -808,12 +1001,19 @@ + * Giving its load any weight will skew balancing + * adversely. + */ +- p->load_weight = 0; ++ load_weight = 0; + else + #endif +- p->load_weight = RTPRIO_TO_LOAD_WEIGHT(p->rt_priority); ++ load_weight = RTPRIO_TO_LOAD_WEIGHT(p->rt_priority); + } else +- p->load_weight = PRIO_TO_LOAD_WEIGHT(p->static_prio); ++ load_weight = task_timeslice(p); ++ /* ++ * idleprio tasks have much lower weight than SCHED_NORMAL tasks but ++ * still need to be weighted to allow balancing to occur. ++ */ ++ if (likely(!idleprio_task(p))) ++ load_weight *= PRIO_RANGE; ++ p->load_weight = load_weight; + } + + static inline void +@@ -841,28 +1041,38 @@ + } + + /* +- * Calculate the expected normal priority: i.e. priority +- * without taking RT-inheritance into account. Might be +- * boosted by interactivity modifiers. Changes upon fork, +- * setprio syscalls, and whenever the interactivity +- * estimator recalculates. ++ * __activate_task - move a task to the runqueue. + */ +-static inline int normal_prio(struct task_struct *p) ++static inline void __activate_task(struct task_struct *p, struct rq *rq) + { +- int prio; ++ enqueue_task(p, rq); ++ inc_nr_running(p, rq); ++} + ++/* ++ * __activate_idle_task - move idle task to the _front_ of runqueue. ++ */ ++static inline void __activate_idle_task(struct task_struct *p, struct rq *rq) ++{ ++ enqueue_task_head(p, rq); ++ inc_nr_running(p, rq); ++} ++ ++static inline int normal_prio(struct task_struct *p) ++{ + if (has_rt_policy(p)) +- prio = MAX_RT_PRIO-1 - p->rt_priority; ++ return MAX_RT_PRIO-1 - p->rt_priority; ++ /* Other tasks all have normal_prio set in recalc_task_prio */ ++ if (likely(p->prio >= MAX_RT_PRIO && p->prio < MAX_PRIO)) ++ return p->prio; + else +- prio = __normal_prio(p); +- return prio; ++ return p->static_prio; + } + + /* + * Calculate the current priority, i.e. the priority + * taken into account by the scheduler. This value might +- * be boosted by RT tasks, or might be boosted by +- * interactivity modifiers. Will be RT if the task got ++ * be boosted by RT tasks as it will be RT if the task got + * RT-boosted. If not then it returns p->normal_prio. + */ + static int effective_prio(struct task_struct *p) +@@ -878,112 +1088,70 @@ + return p->prio; + } + +-/* +- * __activate_task - move a task to the runqueue. +- */ +-static void __activate_task(struct task_struct *p, struct rq *rq) ++static inline unsigned int nice_quota_ms(int nice) + { +- struct prio_array *target = rq->active; ++ unsigned int rr = rr_interval; + +- if (batch_task(p)) +- target = rq->expired; +- enqueue_task(p, target); +- inc_nr_running(p, rq); ++ if (nice < -6) { ++ rr *= nice * nice; ++ rr /= 40; ++ } else if (nice > 0) ++ rr = rr / 2 ? : 1; ++ return rr; + } + ++#define DEFAULT_WEIGHT (nice_quota_ms(0) * 20 * PRIO_RANGE) ++ + /* +- * __activate_idle_task - move idle task to the _front_ of runqueue. ++ * A runqueue laden with a single nice 0 task scores a weighted_cpuload of ++ * SCHED_LOAD_SCALE. This function returns 1 if any cpu is laden with a ++ * task of nice 0 or enough lower priority tasks to bring up the ++ * weighted_cpuload + */ +-static inline void __activate_idle_task(struct task_struct *p, struct rq *rq) ++int above_background_load(void) + { +- enqueue_task_head(p, rq->active); +- inc_nr_running(p, rq); ++ unsigned long cpu; ++ ++ for_each_online_cpu(cpu) { ++ if (weighted_cpuload(cpu) >= DEFAULT_WEIGHT) ++ return 1; ++ } ++ return 0; + } + + /* +- * Recalculate p->normal_prio and p->prio after having slept, +- * updating the sleep-average too: ++ * All tasks have quotas based on rr_interval. RT tasks all get rr_interval. ++ * From nice 1 to 19 they are smaller than it only if they are at least one ++ * tick still. Below nice 0 they get progressively larger. ++ * ie nice -6..0 = rr_interval. nice -10 = 2.5 * rr_interval ++ * nice -20 = 10 * rr_interval. nice 1-19 = rr_interval / 2. ++ * Value returned is in microseconds. + */ +-static int recalc_task_prio(struct task_struct *p, unsigned long long now) ++static inline unsigned int rr_quota(struct task_struct *p) + { +- /* Caller must always ensure 'now >= p->timestamp' */ +- unsigned long sleep_time = now - p->timestamp; ++ unsigned int quota; + +- if (batch_task(p)) +- sleep_time = 0; +- +- if (likely(sleep_time > 0)) { +- /* +- * This ceiling is set to the lowest priority that would allow +- * a task to be reinserted into the active array on timeslice +- * completion. +- */ +- unsigned long ceiling = INTERACTIVE_SLEEP(p); +- +- if (p->mm && sleep_time > ceiling && p->sleep_avg < ceiling) { +- /* +- * Prevents user tasks from achieving best priority +- * with one single large enough sleep. +- */ +- p->sleep_avg = ceiling; +- /* +- * Using INTERACTIVE_SLEEP() as a ceiling places a +- * nice(0) task 1ms sleep away from promotion, and +- * gives it 700ms to round-robin with no chance of +- * being demoted. This is more than generous, so +- * mark this sleep as non-interactive to prevent the +- * on-runqueue bonus logic from intervening should +- * this task not receive cpu immediately. +- */ +- p->sleep_type = SLEEP_NONINTERACTIVE; +- } else { +- /* +- * Tasks waking from uninterruptible sleep are +- * limited in their sleep_avg rise as they +- * are likely to be waiting on I/O +- */ +- if (p->sleep_type == SLEEP_NONINTERACTIVE && p->mm) { +- if (p->sleep_avg >= ceiling) +- sleep_time = 0; +- else if (p->sleep_avg + sleep_time >= +- ceiling) { +- p->sleep_avg = ceiling; +- sleep_time = 0; +- } +- } +- +- /* +- * This code gives a bonus to interactive tasks. +- * +- * The boost works by updating the 'average sleep time' +- * value here, based on ->timestamp. The more time a +- * task spends sleeping, the higher the average gets - +- * and the higher the priority boost gets as well. +- */ +- p->sleep_avg += sleep_time; +- +- } +- if (p->sleep_avg > NS_MAX_SLEEP_AVG) +- p->sleep_avg = NS_MAX_SLEEP_AVG; +- } ++ if (rt_task(p)) ++ quota = rr_interval; ++ else ++ quota = nice_quota_ms(TASK_NICE(p)); ++ return MS_TO_US(quota); ++} + +- return effective_prio(p); ++/* Every time we set the quota we need to set the load weight */ ++static void set_quota(struct task_struct *p) ++{ ++ p->quota = rr_quota(p); ++ set_load_weight(p); + } + + /* + * activate_task - move a task to the runqueue and do priority recalculation +- * +- * Update all the scheduling statistics stuff. (sleep average +- * calculation, priority modifiers, etc.) + */ + static void activate_task(struct task_struct *p, struct rq *rq, int local) + { +- unsigned long long now; +- +- if (rt_task(p)) +- goto out; ++ unsigned long long now = sched_clock(); + +- now = sched_clock(); + #ifdef CONFIG_SMP + if (!local) { + /* Compensate for drifting sched_clock */ +@@ -1004,32 +1172,9 @@ + (now - p->timestamp) >> 20); + } + +- p->prio = recalc_task_prio(p, now); +- +- /* +- * This checks to make sure it's not an uninterruptible task +- * that is now waking up. +- */ +- if (p->sleep_type == SLEEP_NORMAL) { +- /* +- * Tasks which were woken up by interrupts (ie. hw events) +- * are most likely of interactive nature. So we give them +- * the credit of extending their sleep time to the period +- * of time they spend on the runqueue, waiting for execution +- * on a CPU, first time around: +- */ +- if (in_interrupt()) +- p->sleep_type = SLEEP_INTERRUPTED; +- else { +- /* +- * Normal first-time wakeups get a credit too for +- * on-runqueue time, but it will be weighted down: +- */ +- p->sleep_type = SLEEP_INTERACTIVE; +- } +- } ++ set_quota(p); ++ p->prio = effective_prio(p); + p->timestamp = now; +-out: + __activate_task(p, rq); + } + +@@ -1039,8 +1184,7 @@ + static void deactivate_task(struct task_struct *p, struct rq *rq) + { + dec_nr_running(p, rq); +- dequeue_task(p, p->array); +- p->array = NULL; ++ dequeue_task(p, rq); + } + + /* +@@ -1133,7 +1277,7 @@ + * If the task is not on a runqueue (and not running), then + * it is sufficient to simply update the task's cpu field. + */ +- if (!p->array && !task_running(rq, p)) { ++ if (!task_queued(p) && !task_running(rq, p)) { + set_task_cpu(p, dest_cpu); + return 0; + } +@@ -1159,7 +1303,6 @@ + { + unsigned long flags; + struct rq *rq; +- struct prio_array *array; + int running; + + repeat: +@@ -1192,7 +1335,6 @@ + */ + rq = task_rq_lock(p, &flags); + running = task_running(rq, p); +- array = p->array; + task_rq_unlock(rq, &flags); + + /* +@@ -1215,7 +1357,7 @@ + * running right now), it's preempted, and we should + * yield - it could be a while. + */ +- if (unlikely(array)) { ++ if (unlikely(task_queued(p))) { + yield(); + goto repeat; + } +@@ -1294,6 +1436,25 @@ + } + + /* ++ * Divide a load by a sched group cpu_power : (load / sg->__cpu_power) ++ * Since cpu_power is a 'constant', we can use a reciprocal divide. ++ */ ++static inline u32 sg_div_cpu_power(const struct sched_group *sg, u32 load) ++{ ++ return reciprocal_divide(load, sg->reciprocal_cpu_power); ++} ++ ++/* ++ * Each time a sched group cpu_power is changed, ++ * we must compute its reciprocal value ++ */ ++static inline void sg_inc_cpu_power(struct sched_group *sg, u32 val) ++{ ++ sg->__cpu_power += val; ++ sg->reciprocal_cpu_power = reciprocal_value(sg->__cpu_power); ++} ++ ++/* + * find_idlest_group finds and returns the least busy CPU group within the + * domain. + */ +@@ -1490,6 +1651,31 @@ + } + #endif + ++/* ++ * We need to have a special definition for an idle runqueue when testing ++ * for preemption on CONFIG_HOTPLUG_CPU as the idle task may be scheduled as ++ * a realtime task in sched_idle_next. ++ */ ++#ifdef CONFIG_HOTPLUG_CPU ++#define rq_idle(rq) ((rq)->curr == (rq)->idle && !rt_task((rq)->curr)) ++#else ++#define rq_idle(rq) ((rq)->curr == (rq)->idle) ++#endif ++ ++static inline int task_preempts_curr(struct task_struct *p, struct rq *rq) ++{ ++ struct task_struct *curr = rq->curr; ++ ++ return ((p->array == task_rq(p)->active && ++ TASK_PREEMPTS_CURR(p, curr)) || rq_idle(rq)); ++} ++ ++static inline void try_preempt(struct task_struct *p, struct rq *rq) ++{ ++ if (task_preempts_curr(p, rq)) ++ resched_task(rq->curr); ++} ++ + /*** + * try_to_wake_up - wake up a thread + * @p: the to-be-woken-up thread +@@ -1521,7 +1707,7 @@ + if (!(old_state & state)) + goto out; + +- if (p->array) ++ if (task_queued(p)) + goto out_running; + + cpu = task_cpu(p); +@@ -1614,7 +1800,7 @@ + old_state = p->state; + if (!(old_state & state)) + goto out; +- if (p->array) ++ if (task_queued(p)) + goto out_running; + + this_cpu = smp_processor_id(); +@@ -1623,25 +1809,9 @@ + + out_activate: + #endif /* CONFIG_SMP */ +- if (old_state == TASK_UNINTERRUPTIBLE) { ++ if (old_state == TASK_UNINTERRUPTIBLE) + rq->nr_uninterruptible--; +- /* +- * Tasks on involuntary sleep don't earn +- * sleep_avg beyond just interactive state. +- */ +- p->sleep_type = SLEEP_NONINTERACTIVE; +- } else +- +- /* +- * Tasks that have marked their sleep as noninteractive get +- * woken up with their sleep average not weighted in an +- * interactive way. +- */ +- if (old_state & TASK_NONINTERACTIVE) +- p->sleep_type = SLEEP_NONINTERACTIVE; +- + +- activate_task(p, rq, cpu == this_cpu); + /* + * Sync wakeups (i.e. those types of wakeups where the waker + * has indicated that it will leave the CPU in short order) +@@ -1650,15 +1820,22 @@ + * the waker guarantees that the freshly woken up task is going + * to be considered on this CPU.) + */ +- if (!sync || cpu != this_cpu) { +- if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); +- } ++ activate_task(p, rq, cpu == this_cpu); ++ if (!sync || cpu != this_cpu) ++ try_preempt(p, rq); + success = 1; + + out_running: + p->state = TASK_RUNNING; + out: ++ /* ++ * Special case when freezing we need to reschedule idleprio tasks ++ * as SCHED_NORMAL or else they'll never freeze ++ */ ++ if (idleprio_task(p) && freezing(p) && idleprio(p)) { ++ dequeue_task(p, rq); ++ enqueue_task(p, rq); ++ } + task_rq_unlock(rq, &flags); + + return success; +@@ -1676,7 +1853,6 @@ + return try_to_wake_up(p, state, 0); + } + +-static void task_running_tick(struct rq *rq, struct task_struct *p); + /* + * Perform scheduler related setup for a newly forked process p. + * p is forked by current. +@@ -1704,7 +1880,6 @@ + p->prio = current->normal_prio; + + INIT_LIST_HEAD(&p->run_list); +- p->array = NULL; + #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) + if (unlikely(sched_info_on())) + memset(&p->sched_info, 0, sizeof(p->sched_info)); +@@ -1716,30 +1891,31 @@ + /* Want to start with kernel preemption disabled. */ + task_thread_info(p)->preempt_count = 1; + #endif ++ if (unlikely(p->policy == SCHED_FIFO)) ++ goto out; + /* + * Share the timeslice between parent and child, thus the + * total amount of pending timeslices in the system doesn't change, + * resulting in more scheduling fairness. + */ + local_irq_disable(); +- p->time_slice = (current->time_slice + 1) >> 1; +- /* +- * The remainder of the first timeslice might be recovered by +- * the parent if the child exits early enough. +- */ +- p->first_time_slice = 1; +- current->time_slice >>= 1; +- p->timestamp = sched_clock(); +- if (unlikely(!current->time_slice)) { ++ if (current->time_slice > 0) { ++ current->time_slice /= 2; ++ if (current->time_slice) ++ p->time_slice = current->time_slice; ++ else ++ p->time_slice = 1; + /* +- * This case is rare, it happens when the parent has only +- * a single jiffy left from its timeslice. Taking the +- * runqueue lock is not a problem. ++ * The remainder of the first timeslice might be recovered by ++ * the parent if the child exits early enough. + */ +- current->time_slice = 1; +- task_running_tick(cpu_rq(cpu), current); +- } ++ p->first_time_slice = 1; ++ } else ++ p->time_slice = 0; ++ ++ p->timestamp = sched_clock(); + local_irq_enable(); ++out: + put_cpu(); + } + +@@ -1761,38 +1937,16 @@ + this_cpu = smp_processor_id(); + cpu = task_cpu(p); + +- /* +- * We decrease the sleep average of forking parents +- * and children as well, to keep max-interactive tasks +- * from forking tasks that are max-interactive. The parent +- * (current) is done further down, under its lock. +- */ +- p->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(p) * +- CHILD_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS); +- +- p->prio = effective_prio(p); +- + if (likely(cpu == this_cpu)) { ++ activate_task(p, rq, 1); + if (!(clone_flags & CLONE_VM)) { + /* + * The VM isn't cloned, so we're in a good position to + * do child-runs-first in anticipation of an exec. This + * usually avoids a lot of COW overhead. + */ +- if (unlikely(!current->array)) +- __activate_task(p, rq); +- else { +- p->prio = current->prio; +- p->normal_prio = current->normal_prio; +- list_add_tail(&p->run_list, ¤t->run_list); +- p->array = current->array; +- p->array->nr_active++; +- inc_nr_running(p, rq); +- } + set_need_resched(); +- } else +- /* Run child last */ +- __activate_task(p, rq); ++ } + /* + * We skip the following code due to cpu == this_cpu + * +@@ -1809,19 +1963,16 @@ + */ + p->timestamp = (p->timestamp - this_rq->most_recent_timestamp) + + rq->most_recent_timestamp; +- __activate_task(p, rq); +- if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); ++ activate_task(p, rq, 0); ++ try_preempt(p, rq); + + /* + * Parent and child are on different CPUs, now get the +- * parent runqueue to update the parent's ->sleep_avg: ++ * parent runqueue to update the parent's ->flags: + */ + task_rq_unlock(rq, &flags); + this_rq = task_rq_lock(current, &flags); + } +- current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) * +- PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS); + task_rq_unlock(this_rq, &flags); + } + +@@ -1836,23 +1987,17 @@ + */ + void fastcall sched_exit(struct task_struct *p) + { ++ struct task_struct *parent; + unsigned long flags; + struct rq *rq; + +- /* +- * If the child was a (relative-) CPU hog then decrease +- * the sleep_avg of the parent as well. +- */ +- rq = task_rq_lock(p->parent, &flags); +- if (p->first_time_slice && task_cpu(p) == task_cpu(p->parent)) { +- p->parent->time_slice += p->time_slice; +- if (unlikely(p->parent->time_slice > task_timeslice(p))) +- p->parent->time_slice = task_timeslice(p); +- } +- if (p->sleep_avg < p->parent->sleep_avg) +- p->parent->sleep_avg = p->parent->sleep_avg / +- (EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg / +- (EXIT_WEIGHT + 1); ++ parent = p->parent; ++ rq = task_rq_lock(parent, &flags); ++ if (p->first_time_slice > 0 && task_cpu(p) == task_cpu(parent)) { ++ parent->time_slice += p->time_slice; ++ if (unlikely(parent->time_slice > parent->quota)) ++ parent->time_slice = parent->quota; ++ } + task_rq_unlock(rq, &flags); + } + +@@ -2184,23 +2329,17 @@ + * pull_task - move a task from a remote runqueue to the local runqueue. + * Both runqueues must be locked. + */ +-static void pull_task(struct rq *src_rq, struct prio_array *src_array, +- struct task_struct *p, struct rq *this_rq, +- struct prio_array *this_array, int this_cpu) ++static void pull_task(struct rq *src_rq, struct task_struct *p, ++ struct rq *this_rq, int this_cpu) + { +- dequeue_task(p, src_array); ++ dequeue_task(p, src_rq); + dec_nr_running(p, src_rq); + set_task_cpu(p, this_cpu); + inc_nr_running(p, this_rq); +- enqueue_task(p, this_array); ++ enqueue_task(p, this_rq); + p->timestamp = (p->timestamp - src_rq->most_recent_timestamp) + + this_rq->most_recent_timestamp; +- /* +- * Note that idle threads have a prio of MAX_PRIO, for this test +- * to be always true for them. +- */ +- if (TASK_PREEMPTS_CURR(p, this_rq)) +- resched_task(this_rq->curr); ++ try_preempt(p, this_rq); + } + + /* +@@ -2243,7 +2382,16 @@ + return 1; + } + +-#define rq_best_prio(rq) min((rq)->curr->prio, (rq)->best_expired_prio) ++static inline int rq_best_prio(struct rq *rq) ++{ ++ int best_prio, exp_prio; ++ ++ best_prio = sched_find_first_bit(rq->dyn_bitmap); ++ exp_prio = find_next_bit(rq->exp_bitmap, MAX_PRIO, MAX_RT_PRIO); ++ if (unlikely(best_prio > exp_prio)) ++ best_prio = exp_prio; ++ return best_prio; ++} + + /* + * move_tasks tries to move up to max_nr_move tasks and max_load_move weighted +@@ -2259,7 +2407,7 @@ + { + int idx, pulled = 0, pinned = 0, this_best_prio, best_prio, + best_prio_seen, skip_for_load; +- struct prio_array *array, *dst_array; ++ struct prio_array *array; + struct list_head *head, *curr; + struct task_struct *tmp; + long rem_load_move; +@@ -2286,31 +2434,29 @@ + * be cache-cold, thus switching CPUs has the least effect + * on them. + */ +- if (busiest->expired->nr_active) { +- array = busiest->expired; +- dst_array = this_rq->expired; +- } else { +- array = busiest->active; +- dst_array = this_rq->active; +- } +- ++ array = busiest->expired; + new_array: +- /* Start searching at priority 0: */ +- idx = 0; ++ /* Expired arrays don't have RT tasks so they're always MAX_RT_PRIO+ */ ++ if (array == busiest->expired) ++ idx = MAX_RT_PRIO; ++ else ++ idx = 0; + skip_bitmap: + if (!idx) +- idx = sched_find_first_bit(array->bitmap); ++ idx = sched_find_first_bit(array->prio_bitmap); + else +- idx = find_next_bit(array->bitmap, MAX_PRIO, idx); +- if (idx >= MAX_PRIO) { +- if (array == busiest->expired && busiest->active->nr_active) { ++ idx = find_next_bit(array->prio_bitmap, MAX_PRIO, idx); ++ if (idx == MAX_PRIO) { ++ if (array == busiest->idleprio && busiest->nr_idleprio) ++ goto found_idleprio; ++ if (array == busiest->expired) { + array = busiest->active; +- dst_array = this_rq->active; + goto new_array; + } + goto out; + } + ++found_idleprio: + head = array->queue + idx; + curr = head->prev; + skip_queue: +@@ -2332,11 +2478,22 @@ + best_prio_seen |= idx == best_prio; + if (curr != head) + goto skip_queue; ++ if (idx == MAX_PRIO) { ++ /* ++ * Occurs either when balancing idleprio tasks or ++ * there really are no more tasks to find. ++ */ ++ if (array == busiest->expired) { ++ array = busiest->active; ++ goto new_array; ++ } ++ goto out; ++ } + idx++; + goto skip_bitmap; + } + +- pull_task(busiest, array, tmp, this_rq, dst_array, this_cpu); ++ pull_task(busiest, tmp, this_rq, this_cpu); + pulled++; + rem_load_move -= tmp->load_weight; + +@@ -2349,6 +2506,13 @@ + this_best_prio = idx; + if (curr != head) + goto skip_queue; ++ if (idx == MAX_PRIO) { ++ if (array == busiest->expired) { ++ array = busiest->active; ++ goto new_array; ++ } ++ goto out; ++ } + idx++; + goto skip_bitmap; + } +@@ -3297,11 +3461,36 @@ + /* + * This is called on clock ticks and on context switches. + * Bank in p->sched_time the ns elapsed since the last tick or switch. ++ * CPU scheduler quota accounting is also performed here in microseconds. ++ * The value returned from sched_clock() occasionally gives bogus values so ++ * some sanity checking is required. + */ +-static inline void +-update_cpu_clock(struct task_struct *p, struct rq *rq, unsigned long long now) ++static void ++update_cpu_clock(struct task_struct *p, struct rq *rq, unsigned long long now, ++ int tick) + { +- p->sched_time += now - p->last_ran; ++ long time_diff = now - p->last_ran; ++ ++ if (tick) { ++ /* ++ * Called from scheduler_tick() there should be less than two ++ * jiffies worth, and not negative/overflow. ++ */ ++ if (time_diff > JIFFIES_TO_NS(2) || time_diff < 0) ++ time_diff = JIFFIES_TO_NS(1); ++ } else { ++ /* ++ * Called from context_switch there should be less than one ++ * jiffy worth, and not negative/overflow. There should be ++ * some time banked here so use a nominal 1us. ++ */ ++ if (time_diff > JIFFIES_TO_NS(1) || time_diff < 1) ++ time_diff = 1000; ++ } ++ /* time_slice accounting is done in usecs to avoid overflow on 32bit */ ++ if (p != rq->idle && p->policy != SCHED_FIFO) ++ p->time_slice -= time_diff / 1000; ++ p->sched_time += time_diff; + p->last_ran = rq->most_recent_timestamp = now; + } + +@@ -3322,27 +3511,6 @@ + } + + /* +- * We place interactive tasks back into the active array, if possible. +- * +- * To guarantee that this does not starve expired tasks we ignore the +- * interactivity of a task if the first expired task had to wait more +- * than a 'reasonable' amount of time. This deadline timeout is +- * load-dependent, as the frequency of array switched decreases with +- * increasing number of running tasks. We also ignore the interactivity +- * if a better static_prio task has expired: +- */ +-static inline int expired_starving(struct rq *rq) +-{ +- if (rq->curr->static_prio > rq->best_expired_prio) +- return 1; +- if (!STARVATION_LIMIT || !rq->expired_timestamp) +- return 0; +- if (jiffies - rq->expired_timestamp > STARVATION_LIMIT * rq->nr_running) +- return 1; +- return 0; +-} +- +-/* + * Account user cpu time to a process. + * @p: the process that the cpu time gets accounted to + * @hardirq_offset: the offset to subtract from hardirq_count() +@@ -3357,7 +3525,7 @@ + + /* Add user time to cpustat. */ + tmp = cputime_to_cputime64(cputime); +- if (TASK_NICE(p) > 0) ++ if (TASK_NICE(p) > 0 || idleprio_task(p)) + cpustat->nice = cputime64_add(cpustat->nice, tmp); + else + cpustat->user = cputime64_add(cpustat->user, tmp); +@@ -3415,87 +3583,94 @@ + cpustat->steal = cputime64_add(cpustat->steal, tmp); + } + +-static void task_running_tick(struct rq *rq, struct task_struct *p) ++/* ++ * The task has used up its quota of running in this prio_level so it must be ++ * dropped a priority level, all managed by recalc_task_prio(). ++ */ ++static void task_expired_entitlement(struct rq *rq, struct task_struct *p) + { +- if (p->array != rq->active) { +- /* Task has expired but was not scheduled yet */ +- set_tsk_need_resched(p); ++ int overrun; ++ ++ reset_first_time_slice(p); ++ if (rt_task(p)) { ++ p->time_slice += p->quota; ++ list_move_tail(&p->run_list, p->array->queue + p->prio); + return; + } +- spin_lock(&rq->lock); ++ overrun = p->time_slice; ++ dequeue_task(p, rq); ++ enqueue_task(p, rq); + /* +- * The task was running during this tick - update the +- * time slice counter. Note: we do not update a thread's +- * priority until it either goes to sleep or uses up its +- * timeslice. This makes it possible for interactive tasks +- * to use up their timeslices at their highest priority levels. ++ * Subtract any extra time this task ran over its time_slice; ie ++ * overrun will either be 0 or negative. + */ +- if (rt_task(p)) { +- /* +- * RR tasks need a special form of timeslice management. +- * FIFO tasks have no timeslices. +- */ +- if ((p->policy == SCHED_RR) && !--p->time_slice) { +- p->time_slice = task_timeslice(p); +- p->first_time_slice = 0; +- set_tsk_need_resched(p); ++ p->time_slice += overrun; ++} + +- /* put it at the end of the queue: */ +- requeue_task(p, rq->active); +- } +- goto out_unlock; ++/* ++ * Test if SCHED_ISO tasks have run longer than their alloted period as RT ++ * tasks and set the refractory flag if necessary. There is 10% hysteresis ++ * for unsetting the flag. ++ */ ++static unsigned int test_ret_isorefractory(struct rq *rq) ++{ ++ if (likely(!rq->iso_refractory)) { ++ if (rq->iso_ticks / ISO_PERIOD > sched_iso_cpu) ++ rq->iso_refractory = 1; ++ } else { ++ if (rq->iso_ticks / ISO_PERIOD < (sched_iso_cpu * 90 / 100)) ++ rq->iso_refractory = 0; + } +- if (!--p->time_slice) { +- dequeue_task(p, rq->active); +- set_tsk_need_resched(p); +- p->prio = effective_prio(p); +- p->time_slice = task_timeslice(p); +- p->first_time_slice = 0; ++ return rq->iso_refractory; ++} + +- if (!rq->expired_timestamp) +- rq->expired_timestamp = jiffies; +- if (!TASK_INTERACTIVE(p) || expired_starving(rq)) { +- enqueue_task(p, rq->expired); +- if (p->static_prio < rq->best_expired_prio) +- rq->best_expired_prio = p->static_prio; +- } else +- enqueue_task(p, rq->active); +- } else { +- /* +- * Prevent a too long timeslice allowing a task to monopolize +- * the CPU. We do this by splitting up the timeslice into +- * smaller pieces. +- * +- * Note: this does not mean the task's timeslices expire or +- * get lost in any way, they just might be preempted by +- * another task of equal priority. (one with higher +- * priority would have preempted this task already.) We +- * requeue this task to the end of the list on this priority +- * level, which is in essence a round-robin of tasks with +- * equal priority. +- * +- * This only applies to tasks in the interactive +- * delta range with at least TIMESLICE_GRANULARITY to requeue. +- */ +- if (TASK_INTERACTIVE(p) && !((task_timeslice(p) - +- p->time_slice) % TIMESLICE_GRANULARITY(p)) && +- (p->time_slice >= TIMESLICE_GRANULARITY(p)) && +- (p->array == rq->active)) { ++/* No SCHED_ISO task was running so decrease rq->iso_ticks */ ++static inline void no_iso_tick(struct rq *rq) ++{ ++ rq->iso_ticks = rq->iso_ticks * (ISO_PERIOD - 1) / ISO_PERIOD; ++} + +- requeue_task(p, rq->active); +- set_tsk_need_resched(p); +- } ++/* This manages tasks that have run out of timeslice during a scheduler_tick */ ++static void task_running_tick(struct rq *rq, struct task_struct *p) ++{ ++ /* ++ * If a SCHED_ISO task is running we increment the iso_ticks. In ++ * order to prevent SCHED_ISO tasks from causing starvation in the ++ * presence of true RT tasks we account those as iso_ticks as well. ++ */ ++ if ((rt_task(p) || (iso_task(p) && !rq->iso_refractory))) { ++ if (rq->iso_ticks <= (ISO_PERIOD * 100) - 100) ++ rq->iso_ticks += 100; ++ } else ++ no_iso_tick(rq); ++ ++ if (iso_task(p)) { ++ if (unlikely(test_ret_isorefractory(rq))) { ++ if (isoprio_suitable(p)) { ++ /* ++ * SCHED_ISO task is running as RT and limit ++ * has been hit. Set the PF_ISOREF flag and ++ * force it to reschedule as SCHED_NORMAL ++ * by zeroing its time_slice ++ */ ++ p->flags |= PF_ISOREF; ++ p->time_slice = 0; ++ } ++ } else ++ p->flags &= ~PF_ISOREF; + } +-out_unlock: +- spin_unlock(&rq->lock); ++ /* SCHED_FIFO tasks never run out of timeslice. */ ++ if (p->time_slice > 0 || p->policy == SCHED_FIFO) ++ return; ++ /* p->time_slice <= 0 */ ++ set_tsk_need_resched(p); ++ if (likely(task_queued(p))) ++ task_expired_entitlement(rq, p); + } + + /* + * This function gets called by the timer code, with HZ frequency. + * We call it with interrupts disabled. +- * +- * It also gets called by the fork code, when changing the parent's +- * timeslices. + */ + void scheduler_tick(void) + { +@@ -3505,10 +3680,14 @@ + int idle_at_tick = idle_cpu(cpu); + struct rq *rq = cpu_rq(cpu); + +- update_cpu_clock(p, rq, now); ++ update_cpu_clock(p, rq, now, 1); + ++ spin_lock(&rq->lock); + if (!idle_at_tick) + task_running_tick(rq, p); ++ else ++ no_iso_tick(rq); ++ spin_unlock(&rq->lock); + #ifdef CONFIG_SMP + update_load(rq); + rq->idle_at_tick = idle_at_tick; +@@ -3554,10 +3733,80 @@ + + #endif + +-static inline int interactive_sleep(enum sleep_type sleep_type) ++static void reset_prio_levels(struct rq *rq) + { +- return (sleep_type == SLEEP_INTERACTIVE || +- sleep_type == SLEEP_INTERRUPTED); ++ rq->active->best_static_prio = MAX_PRIO - 1; ++ rq->expired->best_static_prio = MAX_PRIO - 1; ++ memset(rq->prio_level, 0, sizeof(int) * PRIO_RANGE); ++} ++ ++/* ++ * Only tasks running are SCHED_IDLEPRIO. Set the active array to the ++ * idleprio array and if it isn't already active ++ */ ++static struct task_struct *next_idleprio_task(struct rq *rq) ++{ ++ struct prio_array *array = rq->active; ++ struct list_head *queue; ++ ++ if (array != rq->idleprio) { ++ rq->active = rq->idleprio; ++ rq->expired = array; ++ array = rq->active; ++ rq->exp_bitmap = rq->expired->prio_bitmap; ++ rq->dyn_bitmap = rq->active->prio_bitmap; ++ } ++ rq->prio_rotation++; ++ reset_prio_levels(rq); ++ queue = array->queue + MAX_PRIO; ++ return list_entry(queue->next, struct task_struct, run_list); ++} ++ ++/* ++ * next_dynamic_task finds the next suitable dynamic task. ++ */ ++static inline struct task_struct *next_dynamic_task(struct rq *rq, int idx) ++{ ++ struct prio_array *array = rq->active; ++ struct task_struct *next; ++ struct list_head *queue; ++ int nstatic; ++ ++retry: ++ if (unlikely(rq->nr_running == rq->nr_idleprio)) ++ return next_idleprio_task(rq); ++ if (idx >= MAX_PRIO) { ++ /* There are no more tasks in the active array. Swap arrays */ ++ array = rq->expired; ++ rq->expired = rq->active; ++ rq->active = array; ++ rq->exp_bitmap = rq->expired->prio_bitmap; ++ rq->dyn_bitmap = rq->active->prio_bitmap; ++ rq->prio_rotation++; ++ idx = find_next_bit(rq->dyn_bitmap, MAX_PRIO, MAX_RT_PRIO); ++ reset_prio_levels(rq); ++ } ++ queue = array->queue + idx; ++ next = list_entry(queue->next, struct task_struct, run_list); ++ if (unlikely(next->time_slice <= 0 && !(iso_task(next) && ++ isoprio_suitable(next)))) { ++ /* ++ * Unlucky enough that this task ran out of time_slice ++ * before it hit a scheduler_tick so it should have its ++ * priority reassessed and choose another task (possibly ++ * the same one) ++ */ ++ task_expired_entitlement(rq, next); ++ idx = find_next_bit(rq->dyn_bitmap, MAX_PRIO, MAX_RT_PRIO); ++ goto retry; ++ } ++ next->rotation = rq->prio_rotation; ++ nstatic = next->static_prio; ++ if (nstatic < array->best_static_prio) ++ array->best_static_prio = nstatic; ++ if (idx > rq->prio_level[USER_PRIO(nstatic)]) ++ rq->prio_level[USER_PRIO(nstatic)] = idx; ++ return next; + } + + /* +@@ -3566,13 +3815,11 @@ + asmlinkage void __sched schedule(void) + { + struct task_struct *prev, *next; +- struct prio_array *array; + struct list_head *queue; + unsigned long long now; +- unsigned long run_time; +- int cpu, idx, new_prio; + long *switch_count; + struct rq *rq; ++ int cpu, idx; + + /* + * Test if we are atomic. Since do_exit() needs to call into +@@ -3608,18 +3855,6 @@ + + schedstat_inc(rq, sched_cnt); + now = sched_clock(); +- if (likely((long long)(now - prev->timestamp) < NS_MAX_SLEEP_AVG)) { +- run_time = now - prev->timestamp; +- if (unlikely((long long)(now - prev->timestamp) < 0)) +- run_time = 0; +- } else +- run_time = NS_MAX_SLEEP_AVG; +- +- /* +- * Tasks charged proportionately less run_time at high sleep_avg to +- * delay them losing their interactive status +- */ +- run_time /= (CURRENT_BONUS(prev) ? : 1); + + spin_lock_irq(&rq->lock); + +@@ -3630,8 +3865,10 @@ + unlikely(signal_pending(prev)))) + prev->state = TASK_RUNNING; + else { +- if (prev->state == TASK_UNINTERRUPTIBLE) ++ if (prev->state == TASK_UNINTERRUPTIBLE) { ++ prev->flags |= PF_NONSLEEP; + rq->nr_uninterruptible++; ++ } + deactivate_task(prev, rq); + } + } +@@ -3641,59 +3878,29 @@ + idle_balance(cpu, rq); + if (!rq->nr_running) { + next = rq->idle; +- rq->expired_timestamp = 0; + goto switch_tasks; + } + } + +- array = rq->active; +- if (unlikely(!array->nr_active)) { +- /* +- * Switch the active and expired arrays. +- */ +- schedstat_inc(rq, sched_switch); +- rq->active = rq->expired; +- rq->expired = array; +- array = rq->active; +- rq->expired_timestamp = 0; +- rq->best_expired_prio = MAX_PRIO; +- } +- +- idx = sched_find_first_bit(array->bitmap); +- queue = array->queue + idx; +- next = list_entry(queue->next, struct task_struct, run_list); +- +- if (!rt_task(next) && interactive_sleep(next->sleep_type)) { +- unsigned long long delta = now - next->timestamp; +- if (unlikely((long long)(now - next->timestamp) < 0)) +- delta = 0; +- +- if (next->sleep_type == SLEEP_INTERACTIVE) +- delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128; +- +- array = next->array; +- new_prio = recalc_task_prio(next, next->timestamp + delta); +- +- if (unlikely(next->prio != new_prio)) { +- dequeue_task(next, array); +- next->prio = new_prio; +- enqueue_task(next, array); +- } ++ idx = sched_find_first_bit(rq->dyn_bitmap); ++ if (likely(idx > ISO_PRIO)) ++ next = next_dynamic_task(rq, idx); ++ else { ++ queue = rq->active->queue + idx; ++ next = list_entry(queue->next, struct task_struct, run_list); + } +- next->sleep_type = SLEEP_NORMAL; + switch_tasks: +- if (next == rq->idle) ++ if (next == rq->idle) { ++ reset_prio_levels(rq); ++ rq->prio_rotation++; + schedstat_inc(rq, sched_goidle); ++ } + prefetch(next); + prefetch_stack(next); + clear_tsk_need_resched(prev); + rcu_qsctr_inc(task_cpu(prev)); + +- update_cpu_clock(prev, rq, now); +- +- prev->sleep_avg -= run_time; +- if ((long)prev->sleep_avg <= 0) +- prev->sleep_avg = 0; ++ update_cpu_clock(prev, rq, now, 0); + prev->timestamp = prev->last_ran = now; + + sched_info_switch(prev, next); +@@ -4129,29 +4336,22 @@ + */ + void rt_mutex_setprio(struct task_struct *p, int prio) + { +- struct prio_array *array; + unsigned long flags; ++ int queued, oldprio; + struct rq *rq; +- int oldprio; + + BUG_ON(prio < 0 || prio > MAX_PRIO); + + rq = task_rq_lock(p, &flags); + + oldprio = p->prio; +- array = p->array; +- if (array) +- dequeue_task(p, array); ++ queued = task_queued(p); ++ if (queued) ++ dequeue_task(p, rq); + p->prio = prio; + +- if (array) { +- /* +- * If changing to an RT priority then queue it +- * in the active array! +- */ +- if (rt_task(p)) +- array = rq->active; +- enqueue_task(p, array); ++ if (queued) { ++ enqueue_task(p, rq); + /* + * Reschedule if we are currently running on this runqueue and + * our priority decreased, or if we are not currently running on +@@ -4160,8 +4360,8 @@ + if (task_running(rq, p)) { + if (p->prio > oldprio) + resched_task(rq->curr); +- } else if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); ++ } else ++ try_preempt(p, rq); + } + task_rq_unlock(rq, &flags); + } +@@ -4170,8 +4370,7 @@ + + void set_user_nice(struct task_struct *p, long nice) + { +- struct prio_array *array; +- int old_prio, delta; ++ int queued, old_prio,delta; + unsigned long flags; + struct rq *rq; + +@@ -4192,26 +4391,27 @@ + p->static_prio = NICE_TO_PRIO(nice); + goto out_unlock; + } +- array = p->array; +- if (array) { +- dequeue_task(p, array); ++ queued = task_queued(p); ++ if (queued) { ++ dequeue_task(p, rq); + dec_raw_weighted_load(rq, p); + } + + p->static_prio = NICE_TO_PRIO(nice); +- set_load_weight(p); + old_prio = p->prio; + p->prio = effective_prio(p); ++ set_quota(p); + delta = p->prio - old_prio; + +- if (array) { +- enqueue_task(p, array); ++ if (queued) { ++ enqueue_task(p, rq); + inc_raw_weighted_load(rq, p); + /* + * If the task increased its priority or is running and + * lowered its priority, then reschedule its CPU: + */ +- if (delta < 0 || (delta > 0 && task_running(rq, p))) ++ if (delta < 0 || ((delta > 0 || idleprio_task(p)) && ++ task_running(rq, p))) + resched_task(rq->curr); + } + out_unlock: +@@ -4281,11 +4481,23 @@ + * + * This is the priority value as seen by users in /proc. + * RT tasks are offset by -200. Normal tasks are centered +- * around 0, value goes from -16 to +15. ++ * around 1, value goes from 0 to +79. Values higher than ++ * 39 indicate task is on the expired array. This is done ++ * lockless and may rarely return an active instead of ++ * expired value. + */ +-int task_prio(const struct task_struct *p) ++int task_prio(struct task_struct *p) + { +- return p->prio - MAX_RT_PRIO; ++ int prio = p->prio - MAX_RT_PRIO; ++ ++ if (task_queued(p)) { ++ struct rq *rq = task_rq(p); ++ struct prio_array *array = p->array; ++ ++ if (rq && rq->expired == array) ++ prio += PRIO_RANGE; ++ } ++ return prio; + } + + /** +@@ -4328,19 +4540,14 @@ + /* Actually do priority change: must hold rq lock. */ + static void __setscheduler(struct task_struct *p, int policy, int prio) + { +- BUG_ON(p->array); ++ BUG_ON(task_queued(p)); + + p->policy = policy; + p->rt_priority = prio; + p->normal_prio = normal_prio(p); + /* we are holding p->pi_lock already */ + p->prio = rt_mutex_getprio(p); +- /* +- * SCHED_BATCH tasks are treated as perpetual CPU hogs: +- */ +- if (policy == SCHED_BATCH) +- p->sleep_avg = 0; +- set_load_weight(p); ++ set_quota(p); + } + + /** +@@ -4354,19 +4561,36 @@ + int sched_setscheduler(struct task_struct *p, int policy, + struct sched_param *param) + { +- int retval, oldprio, oldpolicy = -1; +- struct prio_array *array; ++ struct sched_param zero_param = { .sched_priority = 0 }; ++ int queued, retval, oldprio, oldpolicy = -1; ++ unsigned long rlim_rtprio = 0; + unsigned long flags; + struct rq *rq; + + /* may grab non-irq protected spin_locks */ + BUG_ON(in_interrupt()); ++ if (is_rt_policy(policy) && !capable(CAP_SYS_NICE)) { ++ unsigned long lflags; ++ ++ if (!lock_task_sighand(p, &lflags)) ++ return -ESRCH; ++ rlim_rtprio = p->signal->rlim[RLIMIT_RTPRIO].rlim_cur; ++ unlock_task_sighand(p, &lflags); ++ if (rlim_rtprio) ++ goto recheck; ++ /* ++ * If the caller requested an RT policy without having the ++ * necessary rights, we downgrade the policy to SCHED_ISO. ++ * We also set the parameter to zero to pass the checks. ++ */ ++ policy = SCHED_ISO; ++ param = &zero_param; ++ } + recheck: + /* double check policy once rq lock held */ + if (policy < 0) + policy = oldpolicy = p->policy; +- else if (policy != SCHED_FIFO && policy != SCHED_RR && +- policy != SCHED_NORMAL && policy != SCHED_BATCH) ++ else if (!SCHED_RANGE(policy)) + return -EINVAL; + /* + * Valid priorities for SCHED_FIFO and SCHED_RR are +@@ -4385,14 +4609,6 @@ + */ + if (!capable(CAP_SYS_NICE)) { + if (is_rt_policy(policy)) { +- unsigned long rlim_rtprio; +- unsigned long flags; +- +- if (!lock_task_sighand(p, &flags)) +- return -ESRCH; +- rlim_rtprio = p->signal->rlim[RLIMIT_RTPRIO].rlim_cur; +- unlock_task_sighand(p, &flags); +- + /* can't set/change the rt policy */ + if (policy != p->policy && !rlim_rtprio) + return -EPERM; +@@ -4401,6 +4617,31 @@ + if (param->sched_priority > p->rt_priority && + param->sched_priority > rlim_rtprio) + return -EPERM; ++ } else { ++ switch (p->policy) { ++ /* ++ * Can only downgrade policies but not back to ++ * SCHED_NORMAL ++ */ ++ case SCHED_ISO: ++ if (policy == SCHED_ISO) ++ goto out; ++ if (policy == SCHED_NORMAL) ++ return -EPERM; ++ break; ++ case SCHED_BATCH: ++ if (policy == SCHED_BATCH) ++ goto out; ++ if (policy != SCHED_IDLEPRIO) ++ return -EPERM; ++ break; ++ case SCHED_IDLEPRIO: ++ if (policy == SCHED_IDLEPRIO) ++ goto out; ++ return -EPERM; ++ default: ++ break; ++ } + } + + /* can't change other user's priorities */ +@@ -4409,6 +4650,11 @@ + return -EPERM; + } + ++ if (!(p->mm) && policy == SCHED_IDLEPRIO) { ++ /* Don't allow kernel threads to be SCHED_IDLEPRIO. */ ++ return -EINVAL; ++ } ++ + retval = security_task_setscheduler(p, policy, param); + if (retval) + return retval; +@@ -4429,12 +4675,12 @@ + spin_unlock_irqrestore(&p->pi_lock, flags); + goto recheck; + } +- array = p->array; +- if (array) ++ queued = task_queued(p); ++ if (queued) + deactivate_task(p, rq); + oldprio = p->prio; + __setscheduler(p, policy, param->sched_priority); +- if (array) { ++ if (queued) { + __activate_task(p, rq); + /* + * Reschedule if we are currently running on this runqueue and +@@ -4444,14 +4690,15 @@ + if (task_running(rq, p)) { + if (p->prio > oldprio) + resched_task(rq->curr); +- } else if (TASK_PREEMPTS_CURR(p, rq)) +- resched_task(rq->curr); ++ } else ++ try_preempt(p, rq); + } + __task_rq_unlock(rq); + spin_unlock_irqrestore(&p->pi_lock, flags); + + rt_mutex_adjust_pi(p); + ++out: + return 0; + } + EXPORT_SYMBOL_GPL(sched_setscheduler); +@@ -4718,41 +4965,34 @@ + * sys_sched_yield - yield the current processor to other threads. + * + * This function yields the current CPU by moving the calling thread +- * to the expired array. If there are no other threads running on this +- * CPU then this function will return. ++ * to the expired array if SCHED_NORMAL or the end of its current priority ++ * queue if a realtime task. If there are no other threads running on this ++ * cpu this function will return. + */ + asmlinkage long sys_sched_yield(void) + { + struct rq *rq = this_rq_lock(); +- struct prio_array *array = current->array, *target = rq->expired; ++ struct task_struct *p = current; + + schedstat_inc(rq, yld_cnt); +- /* +- * We implement yielding by moving the task into the expired +- * queue. +- * +- * (special rule: RT tasks will just roundrobin in the active +- * array.) +- */ +- if (rt_task(current)) +- target = rq->active; +- +- if (array->nr_active == 1) { +- schedstat_inc(rq, yld_act_empty); +- if (!rq->expired->nr_active) +- schedstat_inc(rq, yld_both_empty); +- } else if (!rq->expired->nr_active) +- schedstat_inc(rq, yld_exp_empty); +- +- if (array != target) { +- dequeue_task(current, array); +- enqueue_task(current, target); +- } else +- /* +- * requeue_task is cheaper so perform that if possible. +- */ +- requeue_task(current, array); ++ if (rq->nr_running == 1) ++ schedstat_inc(rq, yld_both_empty); ++ else { ++ struct prio_array *old_array = p->array; ++ int old_prio = p->prio; ++ ++ if (idleprio_task(p)) { ++ dequeue_task(p, rq); ++ enqueue_task(p, rq); ++ goto out_release; ++ } ++ /* p->prio will be updated in requeue_task via queue_expired */ ++ if (!rt_task(p)) ++ p->array = rq->expired; ++ requeue_task(p, rq, old_array, old_prio); ++ } + ++out_release: + /* + * Since we are going to call schedule() anyway, there's + * no need to preempt or enable interrupts: +@@ -4902,6 +5142,8 @@ + break; + case SCHED_NORMAL: + case SCHED_BATCH: ++ case SCHED_ISO: ++ case SCHED_IDLEPRIO: + ret = 0; + break; + } +@@ -4926,6 +5168,8 @@ + break; + case SCHED_NORMAL: + case SCHED_BATCH: ++ case SCHED_ISO: ++ case SCHED_IDLEPRIO: + ret = 0; + } + return ret; +@@ -4959,8 +5203,8 @@ + if (retval) + goto out_unlock; + +- jiffies_to_timespec(p->policy == SCHED_FIFO ? +- 0 : task_timeslice(p), &t); ++ t = ns_to_timespec(p->policy == SCHED_FIFO ? 0 : ++ MS_TO_NS(task_timeslice(p))); + read_unlock(&tasklist_lock); + retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0; + out_nounlock: +@@ -5056,10 +5300,10 @@ + struct rq *rq = cpu_rq(cpu); + unsigned long flags; + +- idle->timestamp = sched_clock(); +- idle->sleep_avg = 0; +- idle->array = NULL; +- idle->prio = idle->normal_prio = MAX_PRIO; ++ bitmap_zero(idle->bitmap, PRIO_RANGE); ++ idle->timestamp = idle->last_ran = sched_clock(); ++ idle->array = rq->active; ++ idle->prio = idle->normal_prio = NICE_TO_PRIO(0); + idle->state = TASK_RUNNING; + idle->cpus_allowed = cpumask_of_cpu(cpu); + set_task_cpu(idle, cpu); +@@ -5178,7 +5422,7 @@ + goto out; + + set_task_cpu(p, dest_cpu); +- if (p->array) { ++ if (task_queued(p)) { + /* + * Sync timestamp with rq_dest's before activating. + * The same thing could be achieved by doing this step +@@ -5189,8 +5433,7 @@ + + rq_dest->most_recent_timestamp; + deactivate_task(p, rq_src); + __activate_task(p, rq_dest); +- if (TASK_PREEMPTS_CURR(p, rq_dest)) +- resched_task(rq_dest->curr); ++ try_preempt(p, rq_dest); + } + ret = 1; + out: +@@ -5487,7 +5730,7 @@ + /* Idle task back to normal (off runqueue, low prio) */ + rq = task_rq_lock(rq->idle, &flags); + deactivate_task(rq->idle, rq); +- rq->idle->static_prio = MAX_PRIO; ++ rq->idle->static_prio = NICE_TO_PRIO(0); + __setscheduler(rq->idle, SCHED_NORMAL, 0); + migrate_dead_tasks(cpu); + task_rq_unlock(rq, &flags); +@@ -7013,6 +7256,13 @@ + /* Move init over to a non-isolated CPU */ + if (set_cpus_allowed(current, non_isolated_cpus) < 0) + BUG(); ++ ++ /* ++ * Assume that every added cpu gives us slightly less overall latency ++ * allowing us to increase the base rr_interval, but in a non linear ++ * fashion. ++ */ ++ rr_interval *= 1 + ilog2(num_online_cpus()); + } + #else + void __init sched_init_smp(void) +@@ -7035,6 +7285,16 @@ + int i, j, k; + int highest_cpu = 0; + ++ /* Generate the priority matrix */ ++ for (i = 0; i < PRIO_RANGE; i++) { ++ bitmap_fill(prio_matrix[i], PRIO_RANGE); ++ j = PRIO_RANGE * PRIO_RANGE / (PRIO_RANGE - i); ++ for (k = 0; k <= PRIO_RANGE * (PRIO_RANGE - 1); k += j) { ++ __clear_bit(PRIO_RANGE - 1 - (k / PRIO_RANGE), ++ prio_matrix[i]); ++ } ++ } ++ + for_each_possible_cpu(i) { + struct prio_array *array; + struct rq *rq; +@@ -7042,12 +7302,20 @@ + rq = cpu_rq(i); + spin_lock_init(&rq->lock); + lockdep_set_class(&rq->lock, &rq->rq_lock_key); ++ rq->iso_ticks = 0; + rq->nr_running = 0; ++ rq->nr_idleprio = 0; ++ rq->prio_rotation = 0; + rq->active = rq->arrays; ++ rq->idleprio = rq->active; + rq->expired = rq->arrays + 1; +- rq->best_expired_prio = MAX_PRIO; ++ reset_prio_levels(rq); ++ rq->dyn_bitmap = rq->active->prio_bitmap; ++ rq->exp_bitmap = rq->expired->prio_bitmap; + + #ifdef CONFIG_SMP ++ rq->active->rq = rq; ++ rq->expired->rq = rq; + rq->sd = NULL; + for (j = 1; j < 3; j++) + rq->cpu_load[j] = 0; +@@ -7060,17 +7328,16 @@ + atomic_set(&rq->nr_iowait, 0); + + for (j = 0; j < 2; j++) { ++ + array = rq->arrays + j; +- for (k = 0; k < MAX_PRIO; k++) { ++ for (k = 0; k <= MAX_PRIO; k++) + INIT_LIST_HEAD(array->queue + k); +- __clear_bit(k, array->bitmap); +- } +- // delimiter for bitsearch +- __set_bit(MAX_PRIO, array->bitmap); ++ bitmap_zero(array->prio_bitmap, MAX_PRIO); ++ /* delimiter for bitsearch */ ++ __set_bit(MAX_PRIO, array->prio_bitmap); + } + highest_cpu = i; + } +- + set_load_weight(&init_task); + + #ifdef CONFIG_SMP +@@ -7125,25 +7392,25 @@ + #ifdef CONFIG_MAGIC_SYSRQ + void normalize_rt_tasks(void) + { +- struct prio_array *array; + struct task_struct *g, *p; + unsigned long flags; + struct rq *rq; ++ int queued; + + read_lock_irq(&tasklist_lock); + + do_each_thread(g, p) { +- if (!rt_task(p)) ++ if (!rt_task(p) && !iso_task(p)) + continue; + + spin_lock_irqsave(&p->pi_lock, flags); + rq = __task_rq_lock(p); + +- array = p->array; +- if (array) ++ queued = task_queued(p); ++ if (queued) + deactivate_task(p, task_rq(p)); + __setscheduler(p, SCHED_NORMAL, 0); +- if (array) { ++ if (queued) { + __activate_task(p, task_rq(p)); + resched_task(rq->curr); + } +Index: linux-2.6.22-ck1/kernel/sysctl.c +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/sysctl.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/sysctl.c 2007-07-10 14:55:23.000000000 +1000 +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -70,6 +71,7 @@ + extern char core_pattern[]; + extern int pid_max; + extern int min_free_kbytes; ++extern int vm_tail_largefiles; + extern int printk_ratelimit_jiffies; + extern int printk_ratelimit_burst; + extern int pid_max_min, pid_max_max; +@@ -78,6 +80,10 @@ + extern int compat_log; + extern int maps_protect; + extern int sysctl_stat_interval; ++extern int rr_interval; ++extern int sched_interactive; ++extern int sched_iso_cpu; ++extern int sched_iso_period; + + /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */ + static int maxolduid = 65535; +@@ -161,6 +167,14 @@ + #endif + + ++/* Constants for minimum and maximum testing. ++ We use these as one-element integer vectors. */ ++static int __read_mostly zero; ++static int __read_mostly one = 1; ++static int __read_mostly one_hundred = 100; ++static int __read_mostly five_thousand = 5000; ++ ++ + /* The default sysctl tables: */ + + static ctl_table root_table[] = { +@@ -501,6 +515,47 @@ + .mode = 0444, + .proc_handler = &proc_dointvec, + }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "rr_interval", ++ .data = &rr_interval, ++ .maxlen = sizeof (int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ .strategy = &sysctl_intvec, ++ .extra1 = &one, ++ .extra2 = &five_thousand, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "interactive", ++ .data = &sched_interactive, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "iso_cpu", ++ .data = &sched_iso_cpu, ++ .maxlen = sizeof (int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ .strategy = &sysctl_intvec, ++ .extra1 = &zero, ++ .extra2 = &one_hundred, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "iso_period", ++ .data = &sched_iso_period, ++ .maxlen = sizeof (int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ .strategy = &sysctl_intvec, ++ .extra1 = &one, ++ .extra2 = &one_hundred, ++ }, + #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) + { + .ctl_name = KERN_UNKNOWN_NMI_PANIC, +@@ -619,14 +674,16 @@ + { .ctl_name = 0 } + }; + +-/* Constants for minimum and maximum testing in vm_table. +- We use these as one-element integer vectors. */ +-static int zero; +-static int one_hundred = 100; +- +- + static ctl_table vm_table[] = { + { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "tail_largefiles", ++ .data = &vm_tail_largefiles, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++ { + .ctl_name = VM_OVERCOMMIT_MEMORY, + .procname = "overcommit_memory", + .data = &sysctl_overcommit_memory, +@@ -705,16 +762,24 @@ + .proc_handler = &proc_dointvec, + }, + { +- .ctl_name = VM_SWAPPINESS, +- .procname = "swappiness", +- .data = &vm_swappiness, +- .maxlen = sizeof(vm_swappiness), ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "mapped", ++ .data = &vm_mapped, ++ .maxlen = sizeof(vm_mapped), + .mode = 0644, + .proc_handler = &proc_dointvec_minmax, + .strategy = &sysctl_intvec, + .extra1 = &zero, + .extra2 = &one_hundred, + }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "hardmaplimit", ++ .data = &vm_hardmaplimit, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, + #ifdef CONFIG_HUGETLB_PAGE + { + .ctl_name = VM_HUGETLB_PAGES, +@@ -882,6 +947,32 @@ + .extra1 = &zero, + }, + #endif ++#ifdef CONFIG_SWAP_PREFETCH ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "swap_prefetch", ++ .data = &swap_prefetch, ++ .maxlen = sizeof(swap_prefetch), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "swap_prefetch_delay", ++ .data = &swap_prefetch_delay, ++ .maxlen = sizeof(swap_prefetch_delay), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++ { ++ .ctl_name = CTL_UNNUMBERED, ++ .procname = "swap_prefetch_sleep", ++ .data = &swap_prefetch_sleep, ++ .maxlen = sizeof(swap_prefetch_sleep), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec, ++ }, ++#endif + { .ctl_name = 0 } + }; + +Index: linux-2.6.22-ck1/Documentation/sched-design.txt +=================================================================== +--- linux-2.6.22-ck1.orig/Documentation/sched-design.txt 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/Documentation/sched-design.txt 2007-07-10 14:55:02.000000000 +1000 +@@ -1,11 +1,14 @@ +- Goals, Design and Implementation of the +- new ultra-scalable O(1) scheduler ++ Goals, Design and Implementation of the ultra-scalable O(1) scheduler by ++ Ingo Molnar and theStaircase Deadline cpu scheduler policy designed by ++ Con Kolivas. + + +- This is an edited version of an email Ingo Molnar sent to +- lkml on 4 Jan 2002. It describes the goals, design, and +- implementation of Ingo's new ultra-scalable O(1) scheduler. +- Last Updated: 18 April 2002. ++ This was originally an edited version of an email Ingo Molnar sent to ++ lkml on 4 Jan 2002. It describes the goals, design, and implementation ++ of Ingo's ultra-scalable O(1) scheduler. It now contains a description ++ of the Staircase Deadline priority scheduler that was built on this ++ design. ++ Last Updated: Fri, 4 May 2007 + + + Goal +@@ -163,3 +166,222 @@ + code is smaller than the old one. + + Ingo ++ ++ ++Staircase Deadline cpu scheduler policy ++================================================ ++ ++Design summary ++============== ++ ++A novel design which incorporates a foreground-background descending priority ++system (the staircase) via a bandwidth allocation matrix according to nice ++level. ++ ++ ++Features ++======== ++ ++A starvation free, strict fairness O(1) scalable design with interactivity ++as good as the above restrictions can provide. There is no interactivity ++estimator, no sleep/run measurements and only simple fixed accounting. ++The design has strict enough a design and accounting that task behaviour ++can be modelled and maximum scheduling latencies can be predicted by ++the virtual deadline mechanism that manages runqueues. The prime concern ++in this design is to maintain fairness at all costs determined by nice level, ++yet to maintain as good interactivity as can be allowed within the ++constraints of strict fairness. ++ ++ ++Design description ++================== ++ ++SD works off the principle of providing each task a quota of runtime that it is ++allowed to run at a number of priority levels determined by its static priority ++(ie. its nice level). If the task uses up its quota it has its priority ++decremented to the next level determined by a priority matrix. Once every ++runtime quota has been consumed of every priority level, a task is queued on the ++"expired" array. When no other tasks exist with quota, the expired array is ++activated and fresh quotas are handed out. This is all done in O(1). ++ ++Design details ++============== ++ ++Each task keeps a record of its own entitlement of cpu time. Most of the rest of ++these details apply to non-realtime tasks as rt task management is straight ++forward. ++ ++Each runqueue keeps a record of what major epoch it is up to in the ++rq->prio_rotation field which is incremented on each major epoch. It also ++keeps a record of the current prio_level for each static priority task. ++ ++Each task keeps a record of what major runqueue epoch it was last running ++on in p->rotation. It also keeps a record of what priority levels it has ++already been allocated quota from during this epoch in a bitmap p->bitmap. ++ ++The only tunable that determines all other details is the RR_INTERVAL. This ++is set to 8ms, and is scaled gently upwards with more cpus. This value is ++tunable via a /proc interface. ++ ++All tasks are initially given a quota based on RR_INTERVAL. This is equal to ++RR_INTERVAL between nice values of -6 and 0, half that size above nice 0, and ++progressively larger for nice values from -1 to -20. This is assigned to ++p->quota and only changes with changes in nice level. ++ ++As a task is first queued, it checks in recalc_task_prio to see if it has run at ++this runqueue's current priority rotation. If it has not, it will have its ++p->prio level set according to the first slot in a "priority matrix" and will be ++given a p->time_slice equal to the p->quota, and has its allocation bitmap bit ++set in p->bitmap for this prio level. It is then queued on the current active ++priority array. ++ ++If a task has already been running during this major epoch, and it has ++p->time_slice left and the rq->prio_quota for the task's p->prio still ++has quota, it will be placed back on the active array, but no more quota ++will be added. ++ ++If a task has been running during this major epoch, but does not have ++p->time_slice left, it will find the next lowest priority in its bitmap that it ++has not been allocated quota from. It then gets the a full quota in ++p->time_slice. It is then queued on the current active priority array at the ++newly determined lower priority. ++ ++If a task has been running during this major epoch, and does not have ++any entitlement left in p->bitmap and no time_slice left, it will have its ++bitmap cleared, and be queued at its best prio again, but on the expired ++priority array. ++ ++When a task is queued, it has its relevant bit set in the array->prio_bitmap. ++ ++p->time_slice is stored in nanosconds and is updated via update_cpu_clock on ++schedule() and scheduler_tick. If p->time_slice is below zero then the ++recalc_task_prio is readjusted and the task rescheduled. ++ ++ ++Priority Matrix ++=============== ++ ++In order to minimise the latencies between tasks of different nice levels ++running concurrently, the dynamic priority slots where different nice levels ++are queued are dithered instead of being sequential. What this means is that ++there are 40 priority slots where a task may run during one major rotation, ++and the allocation of slots is dependant on nice level. In the ++following table, a zero represents a slot where the task may run. ++ ++PRIORITY:0..................20.................39 ++nice -20 0000000000000000000000000000000000000000 ++nice -10 1000100010001000100010001000100010010000 ++nice 0 1010101010101010101010101010101010101010 ++nice 5 1011010110110101101101011011010110110110 ++nice 10 1110111011101110111011101110111011101110 ++nice 15 1111111011111110111111101111111011111110 ++nice 19 1111111111111111111111111111111111111110 ++ ++As can be seen, a nice -20 task runs in every priority slot whereas a nice 19 ++task only runs one slot per major rotation. This dithered table allows for the ++smallest possible maximum latencies between tasks of varying nice levels, thus ++allowing vastly different nice levels to be used. ++ ++SCHED_BATCH tasks are managed slightly differently, receiving only the top ++slots from its priority bitmap giving it equal cpu as SCHED_NORMAL, but ++slightly higher latencies. ++ ++ ++Modelling deadline behaviour ++============================ ++ ++As the accounting in this design is hard and not modified by sleep average ++calculations or interactivity modifiers, it is possible to accurately ++predict the maximum latency that a task may experience under different ++conditions. This is a virtual deadline mechanism enforced by mandatory ++timeslice expiration and not outside bandwidth measurement. ++ ++The maximum duration a task can run during one major epoch is determined by its ++nice value. Nice 0 tasks can run at 19 different priority levels for RR_INTERVAL ++duration during each epoch. Nice 10 tasks can run at 9 priority levels for each ++epoch, and so on. The table in the priority matrix above demonstrates how this ++is enforced. ++ ++Therefore the maximum duration a runqueue epoch can take is determined by ++the number of tasks running, and their nice level. After that, the maximum ++duration it can take before a task can wait before it get scheduled is ++determined by the position of its first slot on the matrix. ++ ++In the following examples, these are _worst case scenarios_ and would rarely ++occur, but can be modelled nonetheless to determine the maximum possible ++latency. ++ ++So for example, if two nice 0 tasks are running, and one has just expired as ++another is activated for the first time receiving a full quota for this ++runqueue rotation, the first task will wait: ++ ++nr_tasks * max_duration + nice_difference * rr_interval ++1 * 19 * RR_INTERVAL + 0 = 152ms ++ ++In the presence of a nice 10 task, a nice 0 task would wait a maximum of ++1 * 10 * RR_INTERVAL + 0 = 80ms ++ ++In the presence of a nice 0 task, a nice 10 task would wait a maximum of ++1 * 19 * RR_INTERVAL + 1 * RR_INTERVAL = 160ms ++ ++More useful than these values, though, are the average latencies which are ++a matter of determining the average distance between priority slots of ++different nice values and multiplying them by the tasks' quota. For example ++in the presence of a nice -10 task, a nice 0 task will wait either one or ++two slots. Given that nice -10 tasks have a quota 2.5 times the RR_INTERVAL, ++this means the latencies will alternate between 2.5 and 5 RR_INTERVALs or ++20 and 40ms respectively (on uniprocessor at 1000HZ). ++ ++ ++Achieving interactivity ++======================= ++ ++A requirement of this scheduler design was to achieve good interactivity ++despite being a completely fair deadline based design. The disadvantage of ++designs that try to achieve interactivity is that they usually do so at ++the expense of maintaining fairness. As cpu speeds increase, the requirement ++for some sort of metered unfairness towards interactive tasks becomes a less ++desirable phenomenon, but low latency and fairness remains mandatory to ++good interactive performance. ++ ++This design relies on the fact that interactive tasks, by their nature, ++sleep often. Most fair scheduling designs end up penalising such tasks ++indirectly giving them less than their fair possible share because of the ++sleep, and have to use a mechanism of bonusing their priority to offset ++this based on the duration they sleep. This becomes increasingly inaccurate ++as the number of running tasks rises and more tasks spend time waiting on ++runqueues rather than sleeping, and it is impossible to tell whether the ++task that's waiting on a runqueue only intends to run for a short period and ++then sleep again after than runqueue wait. Furthermore, all such designs rely ++on a period of time to pass to accumulate some form of statistic on the task ++before deciding on how much to give them preference. The shorter this period, ++the more rapidly bursts of cpu ruin the interactive tasks behaviour. The ++longer this period, the longer it takes for interactive tasks to get low ++scheduling latencies and fair cpu. ++ ++This design does not measure sleep time at all. Interactive tasks that sleep ++often will wake up having consumed very little if any of their quota for ++the current major priority rotation. The longer they have slept, the less ++likely they are to even be on the current major priority rotation. Once ++woken up, though, they get to use up a their full quota for that epoch, ++whether part of a quota remains or a full quota. Overall, however, they ++can still only run as much cpu time for that epoch as any other task of the ++same nice level. This means that two tasks behaving completely differently ++from fully cpu bound to waking/sleeping extremely frequently will still ++get the same quota of cpu, but the latter will be using its quota for that ++epoch in bursts rather than continuously. This guarantees that interactive ++tasks get the same amount of cpu as cpu bound ones. ++ ++The other requirement of interactive tasks is also to obtain low latencies ++for when they are scheduled. Unlike fully cpu bound tasks and the maximum ++latencies possible described in the modelling deadline behaviour section ++above, tasks that sleep will wake up with quota available usually at the ++current runqueue's priority_level or better. This means that the most latency ++they are likely to see is one RR_INTERVAL, and often they will preempt the ++current task if it is not of a sleeping nature. This then guarantees very ++low latency for interactive tasks, and the lowest latencies for the least ++cpu bound tasks. ++ ++ ++Fri, 4 May 2007 ++Con Kolivas +Index: linux-2.6.22-ck1/Documentation/sysctl/kernel.txt +=================================================================== +--- linux-2.6.22-ck1.orig/Documentation/sysctl/kernel.txt 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/Documentation/sysctl/kernel.txt 2007-07-10 14:55:20.000000000 +1000 +@@ -25,6 +25,9 @@ + - domainname + - hostname + - hotplug ++- interactive ++- iso_cpu ++- iso_period + - java-appletviewer [ binfmt_java, obsolete ] + - java-interpreter [ binfmt_java, obsolete ] + - kstack_depth_to_print [ X86 only ] +@@ -43,6 +46,7 @@ + - printk + - real-root-dev ==> Documentation/initrd.txt + - reboot-cmd [ SPARC only ] ++- rr_interval + - rtsig-max + - rtsig-nr + - sem +@@ -164,6 +168,40 @@ + + ============================================================== + ++interactive: ++ ++The staircase-deadline cpu scheduler can be set in either purely ++forward-looking mode for absolutely rigid fairness and cpu distribution ++according to nice level, or it can allow a small per-process history ++to smooth out cpu usage perturbations common in interactive tasks by ++enabling this sysctl. While small fairness issues can arise with this ++enabled, overall fairness is usually still strongly maintained and ++starvation is never possible. Enabling this can significantly smooth ++out 3d graphics and games. ++ ++Default value is 1 (enabled). ++ ++============================================================== ++ ++iso_cpu: ++ ++This sets the percentage cpu that the unprivileged SCHED_ISO tasks can ++run effectively at realtime priority, averaged over a rolling iso_period ++seconds. ++ ++Set to 80 (percent) by default. ++ ++============================================================== ++ ++iso_period: ++ ++This sets the number of seconds over which SCHED_ISO cpu usage is averaged ++to see if it exceeds its allocated cpu bandwidth. ++ ++Set to 5 (seconds) by default. ++ ++============================================================== ++ + l2cr: (PPC only) + + This flag controls the L2 cache of G3 processor boards. If +@@ -288,6 +326,19 @@ + + ============================================================== + ++rr_interval: ++ ++This is the smallest duration that any cpu process scheduling unit ++will run for. Increasing this value can increase throughput of cpu ++bound tasks substantially but at the expense of increased latencies ++overall. This value is in milliseconds and the default value chosen ++depends on the number of cpus available at scheduler initialisation ++with a minimum of 8. ++ ++Valid values are from 1-5000. ++ ++============================================================== ++ + rtsig-max & rtsig-nr: + + The file rtsig-max can be used to tune the maximum number +Index: linux-2.6.22-ck1/fs/pipe.c +=================================================================== +--- linux-2.6.22-ck1.orig/fs/pipe.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/fs/pipe.c 2007-07-10 14:55:02.000000000 +1000 +@@ -41,12 +41,7 @@ + { + DEFINE_WAIT(wait); + +- /* +- * Pipes are system-local resources, so sleeping on them +- * is considered a noninteractive wait: +- */ +- prepare_to_wait(&pipe->wait, &wait, +- TASK_INTERRUPTIBLE | TASK_NONINTERACTIVE); ++ prepare_to_wait(&pipe->wait, &wait, TASK_INTERRUPTIBLE); + if (pipe->inode) + mutex_unlock(&pipe->inode->i_mutex); + schedule(); +Index: linux-2.6.22-ck1/fs/proc/array.c +=================================================================== +--- linux-2.6.22-ck1.orig/fs/proc/array.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/fs/proc/array.c 2007-07-10 14:55:02.000000000 +1000 +@@ -165,7 +165,6 @@ + rcu_read_lock(); + buffer += sprintf(buffer, + "State:\t%s\n" +- "SleepAVG:\t%lu%%\n" + "Tgid:\t%d\n" + "Pid:\t%d\n" + "PPid:\t%d\n" +@@ -173,7 +172,6 @@ + "Uid:\t%d\t%d\t%d\t%d\n" + "Gid:\t%d\t%d\t%d\t%d\n", + get_task_state(p), +- (p->sleep_avg/1024)*100/(1020000000/1024), + p->tgid, p->pid, + pid_alive(p) ? rcu_dereference(p->real_parent)->tgid : 0, + pid_alive(p) && p->ptrace ? rcu_dereference(p->parent)->pid : 0, +Index: linux-2.6.22-ck1/include/linux/init_task.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/init_task.h 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/init_task.h 2007-07-10 14:55:20.000000000 +1000 +@@ -125,13 +125,15 @@ + .prio = MAX_PRIO-20, \ + .static_prio = MAX_PRIO-20, \ + .normal_prio = MAX_PRIO-20, \ ++ .rotation = 0, \ + .policy = SCHED_NORMAL, \ + .cpus_allowed = CPU_MASK_ALL, \ + .mm = NULL, \ + .active_mm = &init_mm, \ + .run_list = LIST_HEAD_INIT(tsk.run_list), \ + .ioprio = 0, \ +- .time_slice = HZ, \ ++ .time_slice = 1000000000, \ ++ .quota = 1000000000, \ + .tasks = LIST_HEAD_INIT(tsk.tasks), \ + .ptrace_children= LIST_HEAD_INIT(tsk.ptrace_children), \ + .ptrace_list = LIST_HEAD_INIT(tsk.ptrace_list), \ +@@ -158,6 +160,7 @@ + .signal = {{0}}}, \ + .blocked = {{0}}, \ + .alloc_lock = __SPIN_LOCK_UNLOCKED(tsk.alloc_lock), \ ++ .mutexes_held = 0, \ + .journal_info = NULL, \ + .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ + .fs_excl = ATOMIC_INIT(0), \ +Index: linux-2.6.22-ck1/kernel/softirq.c +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/softirq.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/softirq.c 2007-07-10 14:55:02.000000000 +1000 +@@ -488,7 +488,7 @@ + + static int ksoftirqd(void * __bind_cpu) + { +- set_user_nice(current, 19); ++ set_user_nice(current, 15); + current->flags |= PF_NOFREEZE; + + set_current_state(TASK_INTERRUPTIBLE); +Index: linux-2.6.22-ck1/kernel/workqueue.c +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/workqueue.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/workqueue.c 2007-07-10 14:55:02.000000000 +1000 +@@ -285,8 +285,6 @@ + if (!cwq->wq->freezeable) + current->flags |= PF_NOFREEZE; + +- set_user_nice(current, -5); +- + for (;;) { + prepare_to_wait(&cwq->more_work, &wait, TASK_INTERRUPTIBLE); + if (!freezing(current) && +Index: linux-2.6.22-ck1/kernel/kthread.c +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/kthread.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/kthread.c 2007-07-10 14:55:02.000000000 +1000 +@@ -223,7 +223,6 @@ + + ignore_signals(tsk); + +- set_user_nice(tsk, -5); + set_cpus_allowed(tsk, CPU_MASK_ALL); + } + +Index: linux-2.6.22-ck1/kernel/fork.c +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/fork.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/fork.c 2007-07-10 14:55:20.000000000 +1000 +@@ -1063,6 +1063,7 @@ + p->io_context = NULL; + p->io_wait = NULL; + p->audit_context = NULL; ++ p->mutexes_held = 0; + cpuset_fork(p); + #ifdef CONFIG_NUMA + p->mempolicy = mpol_copy(p->mempolicy); +Index: linux-2.6.22-ck1/kernel/mutex.c +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/mutex.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/mutex.c 2007-07-10 14:55:20.000000000 +1000 +@@ -60,6 +60,16 @@ + static void fastcall noinline __sched + __mutex_lock_slowpath(atomic_t *lock_count); + ++static inline void inc_mutex_count(void) ++{ ++ current->mutexes_held++; ++} ++ ++static inline void dec_mutex_count(void) ++{ ++ current->mutexes_held--; ++} ++ + /*** + * mutex_lock - acquire the mutex + * @lock: the mutex to be acquired +@@ -89,6 +99,7 @@ + * 'unlocked' into 'locked' state. + */ + __mutex_fastpath_lock(&lock->count, __mutex_lock_slowpath); ++ inc_mutex_count(); + } + + EXPORT_SYMBOL(mutex_lock); +@@ -114,6 +125,7 @@ + * into 'unlocked' state: + */ + __mutex_fastpath_unlock(&lock->count, __mutex_unlock_slowpath); ++ dec_mutex_count(); + } + + EXPORT_SYMBOL(mutex_unlock); +@@ -283,9 +295,14 @@ + */ + int fastcall __sched mutex_lock_interruptible(struct mutex *lock) + { ++ int ret; ++ + might_sleep(); +- return __mutex_fastpath_lock_retval ++ ret = __mutex_fastpath_lock_retval + (&lock->count, __mutex_lock_interruptible_slowpath); ++ if (likely(!ret)) ++ inc_mutex_count(); ++ return ret; + } + + EXPORT_SYMBOL(mutex_lock_interruptible); +@@ -340,8 +357,12 @@ + */ + int fastcall __sched mutex_trylock(struct mutex *lock) + { +- return __mutex_fastpath_trylock(&lock->count, ++ int ret = __mutex_fastpath_trylock(&lock->count, + __mutex_trylock_slowpath); ++ ++ if (likely(ret)) ++ inc_mutex_count(); ++ return ret; + } + + EXPORT_SYMBOL(mutex_trylock); +Index: linux-2.6.22-ck1/block/cfq-iosched.c +=================================================================== +--- linux-2.6.22-ck1.orig/block/cfq-iosched.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/block/cfq-iosched.c 2007-07-10 14:55:21.000000000 +1000 +@@ -1276,10 +1276,12 @@ + printk(KERN_ERR "cfq: bad prio %x\n", ioprio_class); + case IOPRIO_CLASS_NONE: + /* +- * no prio set, place us in the middle of the BE classes ++ * Select class and ioprio according to policy and nice + */ ++ cfqq->ioprio_class = task_policy_ioprio_class(tsk); + cfqq->ioprio = task_nice_ioprio(tsk); +- cfqq->ioprio_class = IOPRIO_CLASS_BE; ++ if (cfqq->ioprio_class == IOPRIO_CLASS_IDLE) ++ cfq_clear_cfqq_idle_window(cfqq); + break; + case IOPRIO_CLASS_RT: + cfqq->ioprio = task_ioprio(tsk); +Index: linux-2.6.22-ck1/include/linux/ioprio.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/ioprio.h 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/ioprio.h 2007-07-10 14:55:21.000000000 +1000 +@@ -22,7 +22,7 @@ + * class, the default for any process. IDLE is the idle scheduling class, it + * is only served when no one else is using the disk. + */ +-enum { ++enum ioprio_class { + IOPRIO_CLASS_NONE, + IOPRIO_CLASS_RT, + IOPRIO_CLASS_BE, +@@ -51,8 +51,25 @@ + return IOPRIO_PRIO_DATA(task->ioprio); + } + ++static inline enum ioprio_class ++ task_policy_ioprio_class(struct task_struct *task) ++{ ++ if (rt_task(task)) ++ return IOPRIO_CLASS_RT; ++ if (idleprio_task(task)) ++ return IOPRIO_CLASS_IDLE; ++ return IOPRIO_CLASS_BE; ++} ++ + static inline int task_nice_ioprio(struct task_struct *task) + { ++ if (rt_task(task)) ++ return (MAX_RT_PRIO - task->rt_priority) * IOPRIO_BE_NR / ++ (MAX_RT_PRIO + 1); ++ if (iso_task(task)) ++ return 0; ++ if (idleprio_task(task)) ++ return IOPRIO_BE_NR - 1; + return (task_nice(task) + 20) / 5; + } + +Index: linux-2.6.22-ck1/Documentation/sysctl/vm.txt +=================================================================== +--- linux-2.6.22-ck1.orig/Documentation/sysctl/vm.txt 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/Documentation/sysctl/vm.txt 2007-07-10 14:55:23.000000000 +1000 +@@ -22,6 +22,8 @@ + - dirty_background_ratio + - dirty_expire_centisecs + - dirty_writeback_centisecs ++- hardmaplimit ++- mapped + - max_map_count + - min_free_kbytes + - laptop_mode +@@ -31,12 +33,15 @@ + - min_unmapped_ratio + - min_slab_ratio + - panic_on_oom ++- swap_prefetch ++- swap_prefetch_delay ++- swap_prefetch_sleep + + ============================================================== + + dirty_ratio, dirty_background_ratio, dirty_expire_centisecs, + dirty_writeback_centisecs, vfs_cache_pressure, laptop_mode, +-block_dump, swap_token_timeout, drop-caches: ++block_dump, swap_token_timeout, drop-caches, tail_largefiles: + + See Documentation/filesystems/proc.txt + +@@ -86,6 +91,27 @@ + + ============================================================== + ++hardmaplimit: ++ ++This flag makes the vm adhere to the mapped value as closely as possible ++except in the most extreme vm stress where doing so would provoke an out ++of memory condition (see mapped below). ++ ++Enabled by default. ++ ++============================================================== ++ ++mapped: ++ ++This is the percentage ram that is filled with mapped pages (applications) ++before the vm will start reclaiming mapped pages by moving them to swap. ++It is altered by the relative stress of the vm at the time so is not ++strictly adhered to to prevent provoking out of memory kills. ++ ++Set to 66 by default. ++ ++============================================================== ++ + max_map_count: + + This file contains the maximum number of memory map areas a process +@@ -216,3 +242,37 @@ + The default value is 0. + 1 and 2 are for failover of clustering. Please select either + according to your policy of failover. ++ ++============================================================== ++ ++swap_prefetch ++ ++This enables or disables the swap prefetching feature. When the virtual ++memory subsystem has been extremely idle for at least swap_prefetch_sleep ++seconds it will start copying back pages from swap into the swapcache and keep ++a copy in swap. Valid values are 0 - 3. A value of 0 disables swap ++prefetching, 1 enables it unless laptop_mode is enabled, 2 enables it in the ++presence of laptop_mode, and 3 enables it unconditionally, ignoring whether ++the system is idle or not. If set to 0, swap prefetch wil not even try to keep ++record of ram swapped out to have the most minimal impact on performance. ++ ++The default value is 1. ++ ++============================================================== ++ ++swap_prefetch_delay ++ ++This is the time in seconds that swap prefetching is delayed upon finding ++the system is not idle (ie the vm is busy or non-niced cpu load is present). ++ ++The default value is 1. ++ ++============================================================== ++ ++swap_prefetch_sleep ++ ++This is the time in seconds that the swap prefetch kernel thread is put to ++sleep for when the ram is found to be full and it is unable to prefetch ++further. ++ ++The default value is 5. +Index: linux-2.6.22-ck1/include/linux/swap.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/swap.h 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/swap.h 2007-07-10 14:55:22.000000000 +1000 +@@ -180,6 +180,7 @@ + /* linux/mm/swap.c */ + extern void FASTCALL(lru_cache_add(struct page *)); + extern void FASTCALL(lru_cache_add_active(struct page *)); ++extern void FASTCALL(lru_cache_add_tail(struct page *)); + extern void FASTCALL(activate_page(struct page *)); + extern void FASTCALL(mark_page_accessed(struct page *)); + extern void lru_add_drain(void); +@@ -188,9 +189,11 @@ + extern void swap_setup(void); + + /* linux/mm/vmscan.c */ +-extern unsigned long try_to_free_pages(struct zone **, gfp_t); ++extern unsigned long try_to_free_pages(struct zone **, gfp_t, ++ struct task_struct *p); + extern unsigned long shrink_all_memory(unsigned long nr_pages); +-extern int vm_swappiness; ++extern int vm_mapped; ++extern int vm_hardmaplimit; + extern int remove_mapping(struct address_space *mapping, struct page *page); + extern long vm_total_pages; + +@@ -237,6 +240,7 @@ + extern struct page * lookup_swap_cache(swp_entry_t); + extern struct page * read_swap_cache_async(swp_entry_t, struct vm_area_struct *vma, + unsigned long addr); ++extern int add_to_swap_cache(struct page *page, swp_entry_t entry); + /* linux/mm/swapfile.c */ + extern long total_swap_pages; + extern unsigned int nr_swapfiles; +Index: linux-2.6.22-ck1/init/Kconfig +=================================================================== +--- linux-2.6.22-ck1.orig/init/Kconfig 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/init/Kconfig 2007-07-10 14:55:22.000000000 +1000 +@@ -105,6 +105,28 @@ + used to provide more virtual memory than the actual RAM present + in your computer. If unsure say Y. + ++config SWAP_PREFETCH ++ bool "Support for prefetching swapped memory" ++ depends on SWAP ++ default y ++ ---help--- ++ This option will allow the kernel to prefetch swapped memory pages ++ when idle. The pages will be kept on both swap and in swap_cache ++ thus avoiding the need for further I/O if either ram or swap space ++ is required. ++ ++ What this will do on workstations is slowly bring back applications ++ that have swapped out after memory intensive workloads back into ++ physical ram if you have free ram at a later stage and the machine ++ is relatively idle. This means that when you come back to your ++ computer after leaving it idle for a while, applications will come ++ to life faster. Note that your swap usage will appear to increase ++ but these are cached pages, can be dropped freely by the vm, and it ++ should stabilise around 50% swap usage maximum. ++ ++ Workstations and multiuser workstation servers will most likely want ++ to say Y. ++ + config SYSVIPC + bool "System V IPC" + ---help--- +Index: linux-2.6.22-ck1/mm/Makefile +=================================================================== +--- linux-2.6.22-ck1.orig/mm/Makefile 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/mm/Makefile 2007-07-10 14:55:22.000000000 +1000 +@@ -17,6 +17,7 @@ + obj-y += bounce.o + endif + obj-$(CONFIG_SWAP) += page_io.o swap_state.o swapfile.o thrash.o ++obj-$(CONFIG_SWAP_PREFETCH) += swap_prefetch.o + obj-$(CONFIG_HUGETLBFS) += hugetlb.o + obj-$(CONFIG_NUMA) += mempolicy.o + obj-$(CONFIG_SPARSEMEM) += sparse.o +Index: linux-2.6.22-ck1/mm/swap.c +=================================================================== +--- linux-2.6.22-ck1.orig/mm/swap.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/mm/swap.c 2007-07-10 14:55:23.000000000 +1000 +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -176,6 +177,7 @@ + */ + static DEFINE_PER_CPU(struct pagevec, lru_add_pvecs) = { 0, }; + static DEFINE_PER_CPU(struct pagevec, lru_add_active_pvecs) = { 0, }; ++static DEFINE_PER_CPU(struct pagevec, lru_add_tail_pvecs) = { 0, }; + + void fastcall lru_cache_add(struct page *page) + { +@@ -197,6 +199,31 @@ + put_cpu_var(lru_add_active_pvecs); + } + ++static void __pagevec_lru_add_tail(struct pagevec *pvec) ++{ ++ int i; ++ struct zone *zone = NULL; ++ ++ for (i = 0; i < pagevec_count(pvec); i++) { ++ struct page *page = pvec->pages[i]; ++ struct zone *pagezone = page_zone(page); ++ ++ if (pagezone != zone) { ++ if (zone) ++ spin_unlock_irq(&zone->lru_lock); ++ zone = pagezone; ++ spin_lock_irq(&zone->lru_lock); ++ } ++ BUG_ON(PageLRU(page)); ++ SetPageLRU(page); ++ add_page_to_inactive_list_tail(zone, page); ++ } ++ if (zone) ++ spin_unlock_irq(&zone->lru_lock); ++ release_pages(pvec->pages, pvec->nr, pvec->cold); ++ pagevec_reinit(pvec); ++} ++ + static void __lru_add_drain(int cpu) + { + struct pagevec *pvec = &per_cpu(lru_add_pvecs, cpu); +@@ -207,6 +234,9 @@ + pvec = &per_cpu(lru_add_active_pvecs, cpu); + if (pagevec_count(pvec)) + __pagevec_lru_add_active(pvec); ++ pvec = &per_cpu(lru_add_tail_pvecs, cpu); ++ if (pagevec_count(pvec)) ++ __pagevec_lru_add_tail(pvec); + } + + void lru_add_drain(void) +@@ -403,6 +433,20 @@ + } + + /* ++ * Function used uniquely to put pages back to the lru at the end of the ++ * inactive list to preserve the lru order. ++ */ ++void fastcall lru_cache_add_tail(struct page *page) ++{ ++ struct pagevec *pvec = &get_cpu_var(lru_add_tail_pvecs); ++ ++ page_cache_get(page); ++ if (!pagevec_add(pvec, page)) ++ __pagevec_lru_add_tail(pvec); ++ put_cpu_var(lru_add_pvecs); ++} ++ ++/* + * Try to drop buffers from the pages in a pagevec + */ + void pagevec_strip(struct pagevec *pvec) +@@ -514,6 +558,9 @@ + * Right now other parts of the system means that we + * _really_ don't want to cluster much more + */ ++ ++ prepare_swap_prefetch(); ++ + #ifdef CONFIG_HOTPLUG_CPU + hotcpu_notifier(cpu_swap_callback, 0); + #endif +Index: linux-2.6.22-ck1/mm/swap_prefetch.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.22-ck1/mm/swap_prefetch.c 2007-07-10 14:55:22.000000000 +1000 +@@ -0,0 +1,542 @@ ++/* ++ * linux/mm/swap_prefetch.c ++ * ++ * Copyright (C) 2005-2007 Con Kolivas ++ * ++ * Written by Con Kolivas ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* ++ * sysctls: ++ * swap_prefetch: 0. Disable swap prefetching ++ * 1. Prefetch only when idle and not with laptop_mode ++ * 2. Prefetch when idle and with laptop_mode ++ * 3. Prefetch at all times. ++ * swap_prefetch_delay: Number of seconds to delay prefetching when system ++ * is not idle. ++ * swap_prefetch_sleep: Number of seconds to put kprefetchd to sleep when ++ * unable to prefetch. ++ */ ++int swap_prefetch __read_mostly = 1; ++int swap_prefetch_delay __read_mostly = 1; ++int swap_prefetch_sleep __read_mostly = 5; ++ ++#define PREFETCH_DELAY (HZ * swap_prefetch_delay) ++#define PREFETCH_SLEEP ((HZ * swap_prefetch_sleep) ? : 1) ++ ++struct swapped_root { ++ unsigned long busy; /* vm busy */ ++ spinlock_t lock; /* protects all data */ ++ struct list_head list; /* MRU list of swapped pages */ ++ struct radix_tree_root swap_tree; /* Lookup tree of pages */ ++ unsigned int count; /* Number of entries */ ++ unsigned int maxcount; /* Maximum entries allowed */ ++ struct kmem_cache *cache; /* Of struct swapped_entry */ ++}; ++ ++static struct swapped_root swapped = { ++ .lock = SPIN_LOCK_UNLOCKED, ++ .list = LIST_HEAD_INIT(swapped.list), ++ .swap_tree = RADIX_TREE_INIT(GFP_ATOMIC), ++}; ++ ++static struct task_struct *kprefetchd_task; ++ ++/* ++ * We check to see no part of the vm is busy. If it is this will interrupt ++ * trickle_swap and wait another PREFETCH_DELAY. Purposefully racy. ++ */ ++inline void delay_swap_prefetch(void) ++{ ++ if (!test_bit(0, &swapped.busy)) ++ __set_bit(0, &swapped.busy); ++} ++ ++/* ++ * If laptop_mode is enabled don't prefetch to avoid hard drives ++ * doing unnecessary spin-ups unless swap_prefetch is explicitly ++ * set to a higher value. ++ */ ++static inline int prefetch_enabled(void) ++{ ++ if (swap_prefetch <= laptop_mode) ++ return 0; ++ return 1; ++} ++ ++static int kprefetchd_awake; ++ ++/* ++ * Drop behind accounting which keeps a list of the most recently used swap ++ * entries. Entries are removed lazily by kprefetchd. ++ */ ++void add_to_swapped_list(struct page *page) ++{ ++ struct swapped_entry *entry; ++ unsigned long index, flags; ++ ++ if (!prefetch_enabled()) ++ goto out; ++ ++ spin_lock_irqsave(&swapped.lock, flags); ++ if (swapped.count >= swapped.maxcount) { ++ /* ++ * Once the number of entries exceeds maxcount we start ++ * removing the least recently used entries. ++ */ ++ entry = list_entry(swapped.list.next, ++ struct swapped_entry, swapped_list); ++ radix_tree_delete(&swapped.swap_tree, entry->swp_entry.val); ++ list_del(&entry->swapped_list); ++ swapped.count--; ++ } else { ++ entry = kmem_cache_alloc(swapped.cache, GFP_ATOMIC); ++ if (unlikely(!entry)) ++ /* bad, can't allocate more mem */ ++ goto out_locked; ++ } ++ ++ index = page_private(page); ++ entry->swp_entry.val = index; ++ /* ++ * On numa we need to store the node id to ensure that we prefetch to ++ * the same node it came from. ++ */ ++ store_swap_entry_node(entry, page); ++ ++ if (likely(!radix_tree_insert(&swapped.swap_tree, index, entry))) { ++ list_add(&entry->swapped_list, &swapped.list); ++ swapped.count++; ++ } else ++ kmem_cache_free(swapped.cache, entry); ++ ++out_locked: ++ spin_unlock_irqrestore(&swapped.lock, flags); ++out: ++ if (!kprefetchd_awake) ++ wake_up_process(kprefetchd_task); ++ return; ++} ++ ++/* ++ * Removes entries from the swapped_list. The radix tree allows us to quickly ++ * look up the entry from the index without having to iterate over the whole ++ * list. ++ */ ++static void remove_from_swapped_list(const unsigned long index) ++{ ++ struct swapped_entry *entry; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&swapped.lock, flags); ++ entry = radix_tree_delete(&swapped.swap_tree, index); ++ if (likely(entry)) { ++ list_del(&entry->swapped_list); ++ swapped.count--; ++ kmem_cache_free(swapped.cache, entry); ++ } ++ spin_unlock_irqrestore(&swapped.lock, flags); ++} ++ ++enum trickle_return { ++ TRICKLE_SUCCESS, ++ TRICKLE_FAILED, ++ TRICKLE_DELAY, ++}; ++ ++struct node_stats { ++ /* Free ram after a cycle of prefetching */ ++ unsigned long last_free; ++ /* Free ram on this cycle of checking prefetch_suitable */ ++ unsigned long current_free; ++ /* The amount of free ram before we start prefetching */ ++ unsigned long highfree[MAX_NR_ZONES]; ++ /* The amount of free ram where we will stop prefetching */ ++ unsigned long lowfree[MAX_NR_ZONES]; ++ /* highfree or lowfree depending on whether we've hit a watermark */ ++ unsigned long *pointfree[MAX_NR_ZONES]; ++}; ++ ++/* ++ * prefetch_stats stores the free ram data of each node and this is used to ++ * determine if a node is suitable for prefetching into. ++ */ ++struct prefetch_stats { ++ /* Which nodes are currently suited to prefetching */ ++ nodemask_t prefetch_nodes; ++ /* Total pages we've prefetched on this wakeup of kprefetchd */ ++ unsigned long prefetched_pages; ++ struct node_stats node[MAX_NUMNODES]; ++}; ++ ++static struct prefetch_stats sp_stat; ++ ++/* ++ * This tries to read a swp_entry_t into swap cache for swap prefetching. ++ * If it returns TRICKLE_DELAY we should delay further prefetching. ++ */ ++static enum trickle_return trickle_swap_cache_async(const swp_entry_t entry, ++ const int node) ++{ ++ enum trickle_return ret = TRICKLE_FAILED; ++ unsigned long flags; ++ struct page *page; ++ ++ read_lock_irqsave(&swapper_space.tree_lock, flags); ++ /* Entry may already exist */ ++ page = radix_tree_lookup(&swapper_space.page_tree, entry.val); ++ read_unlock_irqrestore(&swapper_space.tree_lock, flags); ++ if (page) ++ goto out; ++ ++ /* ++ * Get a new page to read from swap. We have already checked the ++ * watermarks so __alloc_pages will not call on reclaim. ++ */ ++ page = alloc_pages_node(node, GFP_HIGHUSER & ~__GFP_WAIT, 0); ++ if (unlikely(!page)) { ++ ret = TRICKLE_DELAY; ++ goto out; ++ } ++ ++ if (add_to_swap_cache(page, entry)) { ++ /* Failed to add to swap cache */ ++ goto out_release; ++ } ++ ++ /* Add them to the tail of the inactive list to preserve LRU order */ ++ lru_cache_add_tail(page); ++ if (unlikely(swap_readpage(NULL, page))) ++ goto out_release; ++ ++ sp_stat.prefetched_pages++; ++ sp_stat.node[node].last_free--; ++ ++ ret = TRICKLE_SUCCESS; ++out_release: ++ page_cache_release(page); ++out: ++ /* ++ * All entries are removed here lazily. This avoids the cost of ++ * remove_from_swapped_list during normal swapin. Thus there are ++ * usually many stale entries. ++ */ ++ remove_from_swapped_list(entry.val); ++ return ret; ++} ++ ++static void clear_last_prefetch_free(void) ++{ ++ int node; ++ ++ /* ++ * Reset the nodes suitable for prefetching to all nodes. We could ++ * update the data to take into account memory hotplug if desired.. ++ */ ++ sp_stat.prefetch_nodes = node_online_map; ++ for_each_node_mask(node, sp_stat.prefetch_nodes) { ++ struct node_stats *ns = &sp_stat.node[node]; ++ ++ ns->last_free = 0; ++ } ++} ++ ++static void clear_current_prefetch_free(void) ++{ ++ int node; ++ ++ sp_stat.prefetch_nodes = node_online_map; ++ for_each_node_mask(node, sp_stat.prefetch_nodes) { ++ struct node_stats *ns = &sp_stat.node[node]; ++ ++ ns->current_free = 0; ++ } ++} ++ ++/* ++ * This updates the high and low watermarks of amount of free ram in each ++ * node used to start and stop prefetching. We prefetch from pages_high * 4 ++ * down to pages_high * 3. ++ */ ++static void examine_free_limits(void) ++{ ++ struct zone *z; ++ ++ for_each_zone(z) { ++ struct node_stats *ns; ++ int idx; ++ ++ if (!populated_zone(z)) ++ continue; ++ ++ ns = &sp_stat.node[zone_to_nid(z)]; ++ idx = zone_idx(z); ++ ns->lowfree[idx] = z->pages_high * 3; ++ ns->highfree[idx] = ns->lowfree[idx] + z->pages_high; ++ ++ if (zone_page_state(z, NR_FREE_PAGES) > ns->highfree[idx]) { ++ /* ++ * We've gotten above the high watermark of free pages ++ * so we can start prefetching till we get to the low ++ * watermark. ++ */ ++ ns->pointfree[idx] = &ns->lowfree[idx]; ++ } ++ } ++} ++ ++/* ++ * We want to be absolutely certain it's ok to start prefetching. ++ */ ++static enum trickle_return prefetch_suitable(void) ++{ ++ enum trickle_return ret = TRICKLE_DELAY; ++ struct zone *z; ++ int node; ++ ++ /* ++ * If swap_prefetch is set to a high value we can ignore load ++ * and prefetch whenever we can. Otherwise we test for vm and ++ * cpu activity. ++ */ ++ if (swap_prefetch < 3) { ++ /* Purposefully racy, may return false positive */ ++ if (test_bit(0, &swapped.busy)) { ++ __clear_bit(0, &swapped.busy); ++ goto out; ++ } ++ ++ /* ++ * above_background_load is expensive so we only perform it ++ * every SWAP_CLUSTER_MAX prefetched_pages. ++ * We test to see if we're above_background_load as disk ++ * activity even at low priority can cause interrupt induced ++ * scheduling latencies. ++ */ ++ if (!(sp_stat.prefetched_pages % SWAP_CLUSTER_MAX) && ++ above_background_load()) ++ goto out; ++ } ++ clear_current_prefetch_free(); ++ ++ /* ++ * Have some hysteresis between where page reclaiming and prefetching ++ * will occur to prevent ping-ponging between them. ++ */ ++ for_each_zone(z) { ++ struct node_stats *ns; ++ unsigned long free; ++ int idx; ++ ++ if (!populated_zone(z)) ++ continue; ++ ++ node = zone_to_nid(z); ++ ns = &sp_stat.node[node]; ++ idx = zone_idx(z); ++ ++ free = zone_page_state(z, NR_FREE_PAGES); ++ if (free < *ns->pointfree[idx]) { ++ /* ++ * Free pages have dropped below the low watermark so ++ * we won't start prefetching again till we hit the ++ * high watermark of free pages. ++ */ ++ ns->pointfree[idx] = &ns->highfree[idx]; ++ node_clear(node, sp_stat.prefetch_nodes); ++ continue; ++ } ++ ns->current_free += free; ++ } ++ ++ /* ++ * We iterate over each node testing to see if it is suitable for ++ * prefetching and clear the nodemask if it is not. ++ */ ++ for_each_node_mask(node, sp_stat.prefetch_nodes) { ++ struct node_stats *ns = &sp_stat.node[node]; ++ ++ /* ++ * We check to see that pages are not being allocated ++ * elsewhere at any significant rate implying any ++ * degree of memory pressure (eg during file reads) ++ */ ++ if (ns->last_free) { ++ if (ns->current_free + SWAP_CLUSTER_MAX < ++ ns->last_free) { ++ ns->last_free = ns->current_free; ++ node_clear(node, ++ sp_stat.prefetch_nodes); ++ continue; ++ } ++ } else ++ ns->last_free = ns->current_free; ++ ++ /* We shouldn't prefetch when we are doing writeback */ ++ if (node_page_state(node, NR_WRITEBACK)) ++ node_clear(node, sp_stat.prefetch_nodes); ++ } ++ ++ /* Nothing suitable, put kprefetchd back to sleep */ ++ if (nodes_empty(sp_stat.prefetch_nodes)) ++ return TRICKLE_FAILED; ++ ++ /* Survived all that? Hooray we can prefetch! */ ++ ret = TRICKLE_SUCCESS; ++out: ++ return ret; ++} ++ ++/* ++ * trickle_swap is the main function that initiates the swap prefetching. It ++ * first checks to see if the busy flag is set, and does not prefetch if it ++ * is, as the flag implied we are low on memory or swapping in currently. ++ * Otherwise it runs until prefetch_suitable fails which occurs when the ++ * vm is busy, we prefetch to the watermark, the list is empty or we have ++ * iterated over all entries once. ++ */ ++static enum trickle_return trickle_swap(void) ++{ ++ enum trickle_return suitable, ret = TRICKLE_DELAY; ++ struct swapped_entry *pos, *n; ++ unsigned long flags; ++ ++ if (!prefetch_enabled()) ++ return ret; ++ ++ examine_free_limits(); ++ suitable = prefetch_suitable(); ++ if (suitable != TRICKLE_SUCCESS) ++ return suitable; ++ if (list_empty(&swapped.list)) { ++ kprefetchd_awake = 0; ++ return TRICKLE_FAILED; ++ } ++ ++ spin_lock_irqsave(&swapped.lock, flags); ++ list_for_each_entry_safe_reverse(pos, n, &swapped.list, swapped_list) { ++ swp_entry_t swp_entry; ++ int node; ++ ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ cond_resched(); ++ suitable = prefetch_suitable(); ++ if (suitable != TRICKLE_SUCCESS) { ++ ret = suitable; ++ goto out_unlocked; ++ } ++ ++ spin_lock_irqsave(&swapped.lock, flags); ++ if (unlikely(!pos)) ++ continue; ++ node = get_swap_entry_node(pos); ++ if (!node_isset(node, sp_stat.prefetch_nodes)) { ++ /* ++ * We found an entry that belongs to a node that is ++ * not suitable for prefetching so skip it. ++ */ ++ continue; ++ } ++ swp_entry = pos->swp_entry; ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ ++ if (trickle_swap_cache_async(swp_entry, node) == TRICKLE_DELAY) ++ goto out_unlocked; ++ spin_lock_irqsave(&swapped.lock, flags); ++ } ++ spin_unlock_irqrestore(&swapped.lock, flags); ++ ++out_unlocked: ++ if (sp_stat.prefetched_pages) { ++ lru_add_drain(); ++ sp_stat.prefetched_pages = 0; ++ } ++ return ret; ++} ++ ++static int kprefetchd(void *__unused) ++{ ++ struct sched_param param = { .sched_priority = 0 }; ++ ++ sched_setscheduler(current, SCHED_BATCH, ¶m); ++ set_user_nice(current, 19); ++ /* Set ioprio to lowest if supported by i/o scheduler */ ++ sys_ioprio_set(IOPRIO_WHO_PROCESS, IOPRIO_BE_NR - 1, IOPRIO_CLASS_BE); ++ ++ while (!kthread_should_stop()) { ++ try_to_freeze(); ++ ++ if (!kprefetchd_awake) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule(); ++ kprefetchd_awake = 1; ++ } ++ ++ if (trickle_swap() == TRICKLE_FAILED) ++ schedule_timeout_interruptible(PREFETCH_SLEEP); ++ else ++ schedule_timeout_interruptible(PREFETCH_DELAY); ++ clear_last_prefetch_free(); ++ } ++ return 0; ++} ++ ++/* ++ * Create kmem cache for swapped entries ++ */ ++void __init prepare_swap_prefetch(void) ++{ ++ struct zone *zone; ++ ++ swapped.cache = kmem_cache_create("swapped_entry", ++ sizeof(struct swapped_entry), 0, SLAB_PANIC, NULL, NULL); ++ ++ /* ++ * We set the limit to more entries than the physical ram. ++ * We remove entries lazily so we need some headroom. ++ */ ++ swapped.maxcount = nr_free_pagecache_pages() * 2; ++ ++ for_each_zone(zone) { ++ struct node_stats *ns; ++ int idx; ++ ++ if (!populated_zone(zone)) ++ continue; ++ ++ ns = &sp_stat.node[zone_to_nid(zone)]; ++ idx = zone_idx(zone); ++ ns->pointfree[idx] = &ns->highfree[idx]; ++ } ++} ++ ++static int __init kprefetchd_init(void) ++{ ++ kprefetchd_task = kthread_run(kprefetchd, NULL, "kprefetchd"); ++ ++ return 0; ++} ++ ++static void __exit kprefetchd_exit(void) ++{ ++ kthread_stop(kprefetchd_task); ++} ++ ++module_init(kprefetchd_init); ++module_exit(kprefetchd_exit); +Index: linux-2.6.22-ck1/mm/swap_state.c +=================================================================== +--- linux-2.6.22-ck1.orig/mm/swap_state.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/mm/swap_state.c 2007-07-10 14:55:22.000000000 +1000 +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -95,7 +96,7 @@ + return error; + } + +-static int add_to_swap_cache(struct page *page, swp_entry_t entry) ++int add_to_swap_cache(struct page *page, swp_entry_t entry) + { + int error; + +@@ -148,6 +149,9 @@ + swp_entry_t entry; + int err; + ++ /* Swap prefetching is delayed if we're swapping pages */ ++ delay_swap_prefetch(); ++ + BUG_ON(!PageLocked(page)); + + for (;;) { +@@ -320,6 +324,9 @@ + struct page *found_page, *new_page = NULL; + int err; + ++ /* Swap prefetching is delayed if we're already reading from swap */ ++ delay_swap_prefetch(); ++ + do { + /* + * First check the swap cache. Since this is normally +Index: linux-2.6.22-ck1/mm/vmscan.c +=================================================================== +--- linux-2.6.22-ck1.orig/mm/vmscan.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/mm/vmscan.c 2007-07-10 14:55:23.000000000 +1000 +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -36,6 +37,7 @@ + #include + #include + #include ++#include + #include + + #include +@@ -63,7 +65,7 @@ + * whole list at once. */ + int swap_cluster_max; + +- int swappiness; ++ int mapped; + + int all_unreclaimable; + }; +@@ -110,9 +112,10 @@ + #endif + + /* +- * From 0 .. 100. Higher means more swappy. ++ * From 0 .. 100. Lower means more swappy. + */ +-int vm_swappiness = 60; ++int vm_mapped __read_mostly = 66; ++int vm_hardmaplimit __read_mostly = 1; + long vm_total_pages; /* The total number of pages which the VM controls */ + + static LIST_HEAD(shrinker_list); +@@ -803,10 +806,14 @@ + * The distress ratio is important - we don't want to start + * going oom. + * +- * A 100% value of vm_swappiness overrides this algorithm +- * altogether. ++ * This distress value is ignored if we apply a hardmaplimit except ++ * in extreme distress. ++ * ++ * A 0% value of vm_mapped overrides this algorithm altogether. + */ +- swap_tendency = mapped_ratio / 2 + distress + sc->swappiness; ++ swap_tendency = mapped_ratio * 100 / (sc->mapped + 1); ++ if (!vm_hardmaplimit || distress == 100) ++ swap_tendency += distress; + + /* + * Now use this metric to decide whether to start moving mapped +@@ -955,6 +962,41 @@ + } + + /* ++ * Helper functions to adjust nice level of kswapd, based on the priority of ++ * the task (p) that called it. If it is already higher priority we do not ++ * demote its nice level since it is still working on behalf of a higher ++ * priority task. With kernel threads we leave it at nice 0. ++ * ++ * We don't ever run kswapd real time, so if a real time task calls kswapd we ++ * set it to highest SCHED_NORMAL priority. ++ */ ++static int effective_sc_prio(struct task_struct *p) ++{ ++ if (likely(p->mm)) { ++ if (rt_task(p)) ++ return -20; ++ if (idleprio_task(p)) ++ return 19; ++ return task_nice(p); ++ } ++ return 0; ++} ++ ++static void set_kswapd_nice(struct task_struct *kswapd, struct task_struct *p, ++ int active) ++{ ++ long nice = effective_sc_prio(p); ++ ++ if (task_nice(kswapd) > nice || !active) ++ set_user_nice(kswapd, nice); ++} ++ ++static int sc_priority(struct task_struct *p) ++{ ++ return (DEF_PRIORITY + (DEF_PRIORITY * effective_sc_prio(p) / 40)); ++} ++ ++/* + * This is the direct reclaim path, for page-allocating processes. We only + * try to reclaim pages from zones which will satisfy the caller's allocation + * request. +@@ -1011,7 +1053,8 @@ + * holds filesystem locks which prevent writeout this might not work, and the + * allocation attempt will fail. + */ +-unsigned long try_to_free_pages(struct zone **zones, gfp_t gfp_mask) ++unsigned long try_to_free_pages(struct zone **zones, gfp_t gfp_mask, ++ struct task_struct *p) + { + int priority; + int ret = 0; +@@ -1019,15 +1062,20 @@ + unsigned long nr_reclaimed = 0; + struct reclaim_state *reclaim_state = current->reclaim_state; + unsigned long lru_pages = 0; +- int i; ++ int i, scan_priority = DEF_PRIORITY; + struct scan_control sc = { + .gfp_mask = gfp_mask, + .may_writepage = !laptop_mode, + .swap_cluster_max = SWAP_CLUSTER_MAX, + .may_swap = 1, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + ++ if (p) ++ scan_priority = sc_priority(p); ++ ++ delay_swap_prefetch(); ++ + count_vm_event(ALLOCSTALL); + + for (i = 0; zones[i] != NULL; i++) { +@@ -1040,7 +1088,7 @@ + + zone_page_state(zone, NR_INACTIVE); + } + +- for (priority = DEF_PRIORITY; priority >= 0; priority--) { ++ for (priority = scan_priority; priority >= 0; priority--) { + sc.nr_scanned = 0; + if (!priority) + disable_swap_token(); +@@ -1070,7 +1118,7 @@ + } + + /* Take a nap, wait for some writeback to complete */ +- if (sc.nr_scanned && priority < DEF_PRIORITY - 2) ++ if (sc.nr_scanned && priority < scan_priority - 2) + congestion_wait(WRITE, HZ/10); + } + /* top priority shrink_caches still had more to do? don't OOM, then */ +@@ -1120,9 +1168,9 @@ + */ + static unsigned long balance_pgdat(pg_data_t *pgdat, int order) + { +- int all_zones_ok; ++ int all_zones_ok = 0; + int priority; +- int i; ++ int i, scan_priority; + unsigned long total_scanned; + unsigned long nr_reclaimed; + struct reclaim_state *reclaim_state = current->reclaim_state; +@@ -1130,7 +1178,7 @@ + .gfp_mask = GFP_KERNEL, + .may_swap = 1, + .swap_cluster_max = SWAP_CLUSTER_MAX, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + /* + * temp_priority is used to remember the scanning priority at which +@@ -1138,6 +1186,8 @@ + */ + int temp_priority[MAX_NR_ZONES]; + ++ scan_priority = sc_priority(pgdat->kswapd); ++ + loop_again: + total_scanned = 0; + nr_reclaimed = 0; +@@ -1145,9 +1195,9 @@ + count_vm_event(PAGEOUTRUN); + + for (i = 0; i < pgdat->nr_zones; i++) +- temp_priority[i] = DEF_PRIORITY; ++ temp_priority[i] = scan_priority; + +- for (priority = DEF_PRIORITY; priority >= 0; priority--) { ++ for (priority = scan_priority; priority >= 0; priority--) { + int end_zone = 0; /* Inclusive. 0 = ZONE_DMA */ + unsigned long lru_pages = 0; + +@@ -1163,15 +1213,22 @@ + */ + for (i = pgdat->nr_zones - 1; i >= 0; i--) { + struct zone *zone = pgdat->node_zones + i; ++ unsigned long watermark; + + if (!populated_zone(zone)) + continue; + +- if (zone->all_unreclaimable && priority != DEF_PRIORITY) ++ if (zone->all_unreclaimable && priority != scan_priority) + continue; + +- if (!zone_watermark_ok(zone, order, zone->pages_high, +- 0, 0)) { ++ /* ++ * The watermark is relaxed depending on the ++ * level of "priority" till it drops to ++ * pages_high. ++ */ ++ watermark = zone->pages_high + (zone->pages_high * ++ priority / scan_priority); ++ if (!zone_watermark_ok(zone, order, watermark, 0, 0)) { + end_zone = i; + break; + } +@@ -1198,14 +1255,18 @@ + for (i = 0; i <= end_zone; i++) { + struct zone *zone = pgdat->node_zones + i; + int nr_slab; ++ unsigned long watermark; + + if (!populated_zone(zone)) + continue; + +- if (zone->all_unreclaimable && priority != DEF_PRIORITY) ++ if (zone->all_unreclaimable && priority != scan_priority) + continue; + +- if (!zone_watermark_ok(zone, order, zone->pages_high, ++ watermark = zone->pages_high + (zone->pages_high * ++ priority / scan_priority); ++ ++ if (!zone_watermark_ok(zone, order, watermark, + end_zone, 0)) + all_zones_ok = 0; + temp_priority[i] = priority; +@@ -1238,7 +1299,7 @@ + * OK, kswapd is getting into trouble. Take a nap, then take + * another pass across the zones. + */ +- if (total_scanned && priority < DEF_PRIORITY - 2) ++ if (total_scanned && priority < scan_priority - 2) + congestion_wait(WRITE, HZ/10); + + /* +@@ -1272,6 +1333,8 @@ + return nr_reclaimed; + } + ++#define WT_EXPIRY (HZ * 5) /* Time to wakeup watermark_timer */ ++ + /* + * The background pageout daemon, started as a kernel thread + * from the init process. +@@ -1319,6 +1382,8 @@ + for ( ; ; ) { + unsigned long new_order; + ++ /* kswapd has been busy so delay watermark_timer */ ++ mod_timer(&pgdat->watermark_timer, jiffies + WT_EXPIRY); + prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); + new_order = pgdat->kswapd_max_order; + pgdat->kswapd_max_order = 0; +@@ -1332,6 +1397,7 @@ + if (!freezing(current)) + schedule(); + ++ set_user_nice(tsk, 0); + order = pgdat->kswapd_max_order; + } + finish_wait(&pgdat->kswapd_wait, &wait); +@@ -1349,9 +1415,10 @@ + /* + * A zone is low on free memory, so wake its kswapd task to service it. + */ +-void wakeup_kswapd(struct zone *zone, int order) ++void wakeup_kswapd(struct zone *zone, int order, struct task_struct *p) + { + pg_data_t *pgdat; ++ int active; + + if (!populated_zone(zone)) + return; +@@ -1363,7 +1430,9 @@ + pgdat->kswapd_max_order = order; + if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL)) + return; +- if (!waitqueue_active(&pgdat->kswapd_wait)) ++ active = waitqueue_active(&pgdat->kswapd_wait); ++ set_kswapd_nice(pgdat->kswapd, p, active); ++ if (!active) + return; + wake_up_interruptible(&pgdat->kswapd_wait); + } +@@ -1382,6 +1451,8 @@ + struct zone *zone; + unsigned long nr_to_scan, ret = 0; + ++ delay_swap_prefetch(); ++ + for_each_zone(zone) { + + if (!populated_zone(zone)) +@@ -1441,7 +1512,7 @@ + .may_swap = 0, + .swap_cluster_max = nr_pages, + .may_writepage = 1, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + + current->reclaim_state = &reclaim_state; +@@ -1476,7 +1547,7 @@ + /* Force reclaiming mapped pages in the passes #3 and #4 */ + if (pass > 2) { + sc.may_swap = 1; +- sc.swappiness = 100; ++ sc.mapped = 0; + } + + for (prio = DEF_PRIORITY; prio >= 0; prio--) { +@@ -1540,20 +1611,57 @@ + } + + /* ++ * We wake up kswapd every WT_EXPIRY till free ram is above pages_lots ++ */ ++static void watermark_wakeup(unsigned long data) ++{ ++ pg_data_t *pgdat = (pg_data_t *)data; ++ struct timer_list *wt = &pgdat->watermark_timer; ++ int i; ++ ++ if (!waitqueue_active(&pgdat->kswapd_wait) || above_background_load()) ++ goto out; ++ for (i = pgdat->nr_zones - 1; i >= 0; i--) { ++ struct zone *z = pgdat->node_zones + i; ++ ++ if (!populated_zone(z) || is_highmem(z)) { ++ /* We are better off leaving highmem full */ ++ continue; ++ } ++ if (!zone_watermark_ok(z, 0, z->pages_lots, 0, 0)) { ++ wake_up_interruptible(&pgdat->kswapd_wait); ++ goto out; ++ } ++ } ++out: ++ mod_timer(wt, jiffies + WT_EXPIRY); ++ return; ++} ++ ++/* + * This kswapd start function will be called by init and node-hot-add. + * On node-hot-add, kswapd will moved to proper cpus if cpus are hot-added. + */ + int kswapd_run(int nid) + { + pg_data_t *pgdat = NODE_DATA(nid); ++ struct timer_list *wt; + int ret = 0; + + if (pgdat->kswapd) + return 0; + ++ wt = &pgdat->watermark_timer; ++ init_timer(wt); ++ wt->data = (unsigned long)pgdat; ++ wt->function = watermark_wakeup; ++ wt->expires = jiffies + WT_EXPIRY; ++ add_timer(wt); ++ + pgdat->kswapd = kthread_run(kswapd, pgdat, "kswapd%d", nid); + if (IS_ERR(pgdat->kswapd)) { + /* failure at boot is fatal */ ++ del_timer(wt); + BUG_ON(system_state == SYSTEM_BOOTING); + printk("Failed to start kswapd on node %d\n",nid); + ret = -1; +@@ -1624,7 +1732,7 @@ + .swap_cluster_max = max_t(unsigned long, nr_pages, + SWAP_CLUSTER_MAX), + .gfp_mask = gfp_mask, +- .swappiness = vm_swappiness, ++ .mapped = vm_mapped, + }; + unsigned long slab_reclaimable; + +Index: linux-2.6.22-ck1/include/linux/mm_inline.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/mm_inline.h 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/mm_inline.h 2007-07-10 14:55:22.000000000 +1000 +@@ -13,6 +13,13 @@ + } + + static inline void ++add_page_to_inactive_list_tail(struct zone *zone, struct page *page) ++{ ++ list_add_tail(&page->lru, &zone->inactive_list); ++ __inc_zone_state(zone, NR_INACTIVE); ++} ++ ++static inline void + del_page_from_active_list(struct zone *zone, struct page *page) + { + list_del(&page->lru); +Index: linux-2.6.22-ck1/include/linux/swap-prefetch.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.22-ck1/include/linux/swap-prefetch.h 2007-07-10 14:55:22.000000000 +1000 +@@ -0,0 +1,53 @@ ++#ifndef SWAP_PREFETCH_H_INCLUDED ++#define SWAP_PREFETCH_H_INCLUDED ++ ++#ifdef CONFIG_SWAP_PREFETCH ++/* mm/swap_prefetch.c */ ++extern int swap_prefetch; ++extern int swap_prefetch_delay; ++extern int swap_prefetch_sleep; ++ ++struct swapped_entry { ++ swp_entry_t swp_entry; /* The actual swap entry */ ++ struct list_head swapped_list; /* Linked list of entries */ ++#if MAX_NUMNODES > 1 ++ int node; /* Node id */ ++#endif ++} __attribute__((packed)); ++ ++static inline void store_swap_entry_node(struct swapped_entry *entry, ++ struct page *page) ++{ ++#if MAX_NUMNODES > 1 ++ entry->node = page_to_nid(page); ++#endif ++} ++ ++static inline int get_swap_entry_node(struct swapped_entry *entry) ++{ ++#if MAX_NUMNODES > 1 ++ return entry->node; ++#else ++ return 0; ++#endif ++} ++ ++extern void add_to_swapped_list(struct page *page); ++extern void delay_swap_prefetch(void); ++extern void prepare_swap_prefetch(void); ++ ++#else /* CONFIG_SWAP_PREFETCH */ ++static inline void add_to_swapped_list(struct page *__unused) ++{ ++} ++ ++static inline void prepare_swap_prefetch(void) ++{ ++} ++ ++static inline void delay_swap_prefetch(void) ++{ ++} ++#endif /* CONFIG_SWAP_PREFETCH */ ++ ++#endif /* SWAP_PREFETCH_H_INCLUDED */ +Index: linux-2.6.22-ck1/mm/page_io.c +=================================================================== +--- linux-2.6.22-ck1.orig/mm/page_io.c 2007-07-10 14:55:00.000000000 +1000 ++++ linux-2.6.22-ck1/mm/page_io.c 2007-07-10 14:55:22.000000000 +1000 +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + #include + + static struct bio *get_swap_bio(gfp_t gfp_flags, pgoff_t index, +@@ -118,6 +119,7 @@ + ret = -ENOMEM; + goto out; + } ++ add_to_swapped_list(page); + if (wbc->sync_mode == WB_SYNC_ALL) + rw |= (1 << BIO_RW_SYNC); + count_vm_event(PSWPOUT); +Index: linux-2.6.22-ck1/include/linux/sysctl.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/sysctl.h 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/sysctl.h 2007-07-10 14:55:22.000000000 +1000 +@@ -190,7 +190,7 @@ + VM_OVERCOMMIT_RATIO=16, /* percent of RAM to allow overcommit in */ + VM_PAGEBUF=17, /* struct: Control pagebuf parameters */ + VM_HUGETLB_PAGES=18, /* int: Number of available Huge Pages */ +- VM_SWAPPINESS=19, /* Tendency to steal mapped memory */ ++ VM_UNUSED19=19, /* was: Tendency to steal mapped memory */ + VM_LOWMEM_RESERVE_RATIO=20,/* reservation ratio for lower memory zones */ + VM_MIN_FREE_KBYTES=21, /* Minimum free kilobytes to maintain */ + VM_MAX_MAP_COUNT=22, /* int: Maximum number of mmaps/address-space */ +Index: linux-2.6.22-ck1/include/linux/mmzone.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/mmzone.h 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/mmzone.h 2007-07-10 14:55:23.000000000 +1000 +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -181,7 +182,7 @@ + + struct zone { + /* Fields commonly accessed by the page allocator */ +- unsigned long pages_min, pages_low, pages_high; ++ unsigned long pages_min, pages_low, pages_high, pages_lots; + /* + * We don't know if the memory that we're going to allocate will be freeable + * or/and it will be released eventually, so to avoid totally wasting several +@@ -452,6 +453,7 @@ + wait_queue_head_t kswapd_wait; + struct task_struct *kswapd; + int kswapd_max_order; ++ struct timer_list watermark_timer; + } pg_data_t; + + #define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages) +@@ -468,7 +470,7 @@ + void get_zone_counts(unsigned long *active, unsigned long *inactive, + unsigned long *free); + void build_all_zonelists(void); +-void wakeup_kswapd(struct zone *zone, int order); ++void wakeup_kswapd(struct zone *zone, int order, struct task_struct *p); + int zone_watermark_ok(struct zone *z, int order, unsigned long mark, + int classzone_idx, int alloc_flags); + enum memmap_context { +Index: linux-2.6.22-ck1/mm/page_alloc.c +=================================================================== +--- linux-2.6.22-ck1.orig/mm/page_alloc.c 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/mm/page_alloc.c 2007-07-10 14:55:22.000000000 +1000 +@@ -1250,7 +1250,7 @@ + goto nopage; + + for (z = zonelist->zones; *z; z++) +- wakeup_kswapd(*z, order); ++ wakeup_kswapd(*z, order, p); + + /* + * OK, we're below the kswapd watermark and have kicked background +@@ -1314,7 +1314,7 @@ + reclaim_state.reclaimed_slab = 0; + p->reclaim_state = &reclaim_state; + +- did_some_progress = try_to_free_pages(zonelist->zones, gfp_mask); ++ did_some_progress = try_to_free_pages(zonelist->zones, gfp_mask, p); + + p->reclaim_state = NULL; + p->flags &= ~PF_MEMALLOC; +@@ -1570,6 +1570,7 @@ + " min:%lukB" + " low:%lukB" + " high:%lukB" ++ " lots:%lukB" + " active:%lukB" + " inactive:%lukB" + " present:%lukB" +@@ -1581,6 +1582,7 @@ + K(zone->pages_min), + K(zone->pages_low), + K(zone->pages_high), ++ K(zone->pages_lots), + K(zone_page_state(zone, NR_ACTIVE)), + K(zone_page_state(zone, NR_INACTIVE)), + K(zone->present_pages), +@@ -3142,6 +3144,7 @@ + + zone->pages_low = zone->pages_min + (tmp >> 2); + zone->pages_high = zone->pages_min + (tmp >> 1); ++ zone->pages_lots = zone->pages_min + tmp; + spin_unlock_irqrestore(&zone->lru_lock, flags); + } + +Index: linux-2.6.22-ck1/fs/buffer.c +=================================================================== +--- linux-2.6.22-ck1.orig/fs/buffer.c 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/fs/buffer.c 2007-07-10 14:55:22.000000000 +1000 +@@ -356,7 +356,7 @@ + for_each_online_pgdat(pgdat) { + zones = pgdat->node_zonelists[gfp_zone(GFP_NOFS)].zones; + if (*zones) +- try_to_free_pages(zones, GFP_NOFS); ++ try_to_free_pages(zones, GFP_NOFS, NULL); + } + } + +Index: linux-2.6.22-ck1/mm/filemap.c +=================================================================== +--- linux-2.6.22-ck1.orig/mm/filemap.c 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/mm/filemap.c 2007-07-10 14:55:23.000000000 +1000 +@@ -466,6 +466,16 @@ + return ret; + } + ++int add_to_page_cache_lru_tail(struct page *page, ++ struct address_space *mapping, pgoff_t offset, gfp_t gfp_mask) ++{ ++ int ret = add_to_page_cache(page, mapping, offset, gfp_mask); ++ ++ if (ret == 0) ++ lru_cache_add_tail(page); ++ return ret; ++} ++ + #ifdef CONFIG_NUMA + struct page *__page_cache_alloc(gfp_t gfp) + { +@@ -839,6 +849,34 @@ + ra->ra_pages /= 4; + } + ++/* ++ * Sysctl which determines whether we should read from large files to the ++ * tail of the inactive lru list. ++ */ ++int vm_tail_largefiles __read_mostly = 1; ++ ++static inline int nr_mapped(void) ++{ ++ return global_page_state(NR_FILE_MAPPED) + ++ global_page_state(NR_ANON_PAGES); ++} ++ ++/* ++ * This examines how large in pages a file size is and returns 1 if it is ++ * more than half the unmapped ram. Avoid doing read_page_state which is ++ * expensive unless we already know it is likely to be large enough. ++ */ ++static int large_isize(unsigned long nr_pages) ++{ ++ if (nr_pages * 6 > vm_total_pages) { ++ unsigned long unmapped_ram = vm_total_pages - nr_mapped(); ++ ++ if (nr_pages * 2 > unmapped_ram) ++ return 1; ++ } ++ return 0; ++} ++ + /** + * do_generic_mapping_read - generic file read routine + * @mapping: address_space to be read +@@ -1051,8 +1089,19 @@ + goto out; + } + } +- error = add_to_page_cache_lru(cached_page, mapping, +- index, GFP_KERNEL); ++ ++ /* ++ * If we know the file is large we add the pages read to the ++ * end of the lru as we're unlikely to be able to cache the ++ * whole file in ram so make those pages the first to be ++ * dropped if not referenced soon. ++ */ ++ if (vm_tail_largefiles && large_isize(end_index)) ++ error = add_to_page_cache_lru_tail(cached_page, ++ mapping, index, GFP_KERNEL); ++ else ++ error = add_to_page_cache_lru(cached_page, mapping, ++ index, GFP_KERNEL); + if (error) { + if (error == -EEXIST) + goto find_page; +Index: linux-2.6.22-ck1/Documentation/filesystems/proc.txt +=================================================================== +--- linux-2.6.22-ck1.orig/Documentation/filesystems/proc.txt 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/Documentation/filesystems/proc.txt 2007-07-10 14:55:23.000000000 +1000 +@@ -1333,6 +1333,14 @@ + As this is a non-destructive operation and dirty objects are not freeable, the + user should run `sync' first. + ++tail_largefiles ++--------------- ++ ++When enabled reads from large files to the tail end of the inactive lru list. ++This means that any cache from reading large files is dropped very quickly, ++preventing loss of mapped ram and useful pagecache when large files are read. ++This does, however, make caching less effective when working with large files. ++ + + 2.5 /proc/sys/dev - Device specific parameters + ---------------------------------------------- +Index: linux-2.6.22-ck1/arch/i386/Kconfig +=================================================================== +--- linux-2.6.22-ck1.orig/arch/i386/Kconfig 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/arch/i386/Kconfig 2007-07-10 14:55:23.000000000 +1000 +@@ -550,7 +550,7 @@ + + choice + depends on EXPERIMENTAL +- prompt "Memory split" if EMBEDDED ++ prompt "Memory split" + default VMSPLIT_3G + help + Select the desired split between kernel and user memory. +@@ -569,17 +569,17 @@ + option alone! + + config VMSPLIT_3G +- bool "3G/1G user/kernel split" ++ bool "Default 896MB lowmem (3G/1G user/kernel split)" + config VMSPLIT_3G_OPT + depends on !HIGHMEM +- bool "3G/1G user/kernel split (for full 1G low memory)" ++ bool "1GB lowmem (3G/1G user/kernel split)" + config VMSPLIT_2G +- bool "2G/2G user/kernel split" ++ bool "2GB lowmem (2G/2G user/kernel split)" + config VMSPLIT_2G_OPT + depends on !HIGHMEM +- bool "2G/2G user/kernel split (for full 2G low memory)" ++ bool "2GB lowmem (2G/2G user/kernel split)" + config VMSPLIT_1G +- bool "1G/3G user/kernel split" ++ bool "3GB lowmem (1G/3G user/kernel split)" + endchoice + + config PAGE_OFFSET +Index: linux-2.6.22-ck1/kernel/Kconfig.hz +=================================================================== +--- linux-2.6.22-ck1.orig/kernel/Kconfig.hz 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/kernel/Kconfig.hz 2007-07-10 14:55:24.000000000 +1000 +@@ -4,7 +4,7 @@ + + choice + prompt "Timer frequency" +- default HZ_250 ++ default HZ_1000 + help + Allows the configuration of the timer frequency. It is customary + to have the timer interrupt run at 1000 Hz but 100 Hz may be more +@@ -13,8 +13,7 @@ + contention and cacheline bounces as a result of timer interrupts. + Note that the timer interrupt occurs on each processor in an SMP + environment leading to NR_CPUS * HZ number of timer interrupts +- per second. +- ++ per second.Laptops may also show improved battery life. + + config HZ_100 + bool "100 HZ" +@@ -23,13 +22,14 @@ + with lots of processors that may show reduced performance if + too many timer interrupts are occurring. + +- config HZ_250 ++ config HZ_250_NODEFAULT + bool "250 HZ" + help +- 250 Hz is a good compromise choice allowing server performance +- while also showing good interactive responsiveness even +- on SMP and NUMA systems. If you are going to be using NTSC video +- or multimedia, selected 300Hz instead. ++ 250 HZ is a lousy compromise choice allowing server interactivity ++ while also showing desktop throughput and no extra power saving on ++ laptops. Good for when you can't make up your mind. ++ ++ Recommend 100 or 1000 instead. + + config HZ_300 + bool "300 HZ" +@@ -45,12 +45,76 @@ + 1000 Hz is the preferred choice for desktop systems and other + systems requiring fast interactive responses to events. + ++ config HZ_1500 ++ bool "1500 HZ" ++ help ++ 1500 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_2000 ++ bool "2000 HZ" ++ help ++ 2000 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_3000 ++ bool "3000 HZ" ++ help ++ 3000 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_4000 ++ bool "4000 HZ" ++ help ++ 4000 Hz is an insane value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_5000 ++ bool "5000 HZ" ++ help ++ 5000 Hz is an obscene value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_7500 ++ bool "7500 HZ" ++ help ++ 7500 Hz is an obscene value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ config HZ_10000 ++ bool "10000 HZ" ++ help ++ 10000 Hz is an obscene value to use to run broken software that is Hz ++ limited. ++ ++ Being over 1000, driver breakage is likely. ++ ++ + endchoice + + config HZ + int + default 100 if HZ_100 +- default 250 if HZ_250 ++ default 250 if HZ_250_NODEFAULT + default 300 if HZ_300 + default 1000 if HZ_1000 ++ default 1500 if HZ_1500 ++ default 2000 if HZ_2000 ++ default 3000 if HZ_3000 ++ default 4000 if HZ_4000 ++ default 5000 if HZ_5000 ++ default 7500 if HZ_7500 ++ default 10000 if HZ_10000 + +Index: linux-2.6.22-ck1/arch/i386/defconfig +=================================================================== +--- linux-2.6.22-ck1.orig/arch/i386/defconfig 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/arch/i386/defconfig 2007-07-10 14:55:23.000000000 +1000 +@@ -226,10 +226,10 @@ + # CONFIG_IRQBALANCE is not set + CONFIG_SECCOMP=y + # CONFIG_HZ_100 is not set +-CONFIG_HZ_250=y ++# CONFIG_HZ_250 is not set + # CONFIG_HZ_300 is not set +-# CONFIG_HZ_1000 is not set +-CONFIG_HZ=250 ++CONFIG_HZ_1000=y ++CONFIG_HZ=1000 + # CONFIG_KEXEC is not set + # CONFIG_CRASH_DUMP is not set + CONFIG_PHYSICAL_START=0x100000 +Index: linux-2.6.22-ck1/arch/x86_64/defconfig +=================================================================== +--- linux-2.6.22-ck1.orig/arch/x86_64/defconfig 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/arch/x86_64/defconfig 2007-07-10 14:55:23.000000000 +1000 +@@ -185,10 +185,10 @@ + CONFIG_SECCOMP=y + # CONFIG_CC_STACKPROTECTOR is not set + # CONFIG_HZ_100 is not set +-CONFIG_HZ_250=y ++# CONFIG_HZ_250 is not set + # CONFIG_HZ_300 is not set +-# CONFIG_HZ_1000 is not set +-CONFIG_HZ=250 ++CONFIG_HZ_1000=y ++CONFIG_HZ=1000 + CONFIG_K8_NB=y + CONFIG_GENERIC_HARDIRQS=y + CONFIG_GENERIC_IRQ_PROBE=y +Index: linux-2.6.22-ck1/include/linux/jiffies.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/jiffies.h 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/jiffies.h 2007-07-10 14:55:24.000000000 +1000 +@@ -29,6 +29,12 @@ + # define SHIFT_HZ 9 + #elif HZ >= 768 && HZ < 1536 + # define SHIFT_HZ 10 ++#elif HZ >= 1536 && HZ < 3072 ++# define SHIFT_HZ 11 ++#elif HZ >= 3072 && HZ < 6144 ++# define SHIFT_HZ 12 ++#elif HZ >= 6144 && HZ < 12288 ++# define SHIFT_HZ 13 + #else + # error You lose. + #endif +Index: linux-2.6.22-ck1/include/net/inet_timewait_sock.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/net/inet_timewait_sock.h 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/include/net/inet_timewait_sock.h 2007-07-10 14:55:24.000000000 +1000 +@@ -38,8 +38,8 @@ + * If time > 4sec, it is "slow" path, no recycling is required, + * so that we select tick to get range about 4 seconds. + */ +-#if HZ <= 16 || HZ > 4096 +-# error Unsupported: HZ <= 16 or HZ > 4096 ++#if HZ <= 16 || HZ > 16384 ++# error Unsupported: HZ <= 16 or HZ > 16384 + #elif HZ <= 32 + # define INET_TWDR_RECYCLE_TICK (5 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) + #elif HZ <= 64 +@@ -54,8 +54,12 @@ + # define INET_TWDR_RECYCLE_TICK (10 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) + #elif HZ <= 2048 + # define INET_TWDR_RECYCLE_TICK (11 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) +-#else ++#elif HZ <= 4096 + # define INET_TWDR_RECYCLE_TICK (12 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) ++#elif HZ <= 8192 ++# define INET_TWDR_RECYCLE_TICK (13 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) ++#else ++# define INET_TWDR_RECYCLE_TICK (14 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG) + #endif + + /* TIME_WAIT reaping mechanism. */ +Index: linux-2.6.22-ck1/init/calibrate.c +=================================================================== +--- linux-2.6.22-ck1.orig/init/calibrate.c 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/init/calibrate.c 2007-07-10 14:55:24.000000000 +1000 +@@ -122,12 +122,12 @@ + printk("Calibrating delay loop (skipped)... " + "%lu.%02lu BogoMIPS preset\n", + loops_per_jiffy/(500000/HZ), +- (loops_per_jiffy/(5000/HZ)) % 100); ++ (loops_per_jiffy * 10/(50000/HZ)) % 100); + } else if ((loops_per_jiffy = calibrate_delay_direct()) != 0) { + printk("Calibrating delay using timer specific routine.. "); + printk("%lu.%02lu BogoMIPS (lpj=%lu)\n", + loops_per_jiffy/(500000/HZ), +- (loops_per_jiffy/(5000/HZ)) % 100, ++ (loops_per_jiffy * 10/(50000/HZ)) % 100, + loops_per_jiffy); + } else { + loops_per_jiffy = (1<<12); +@@ -166,7 +166,7 @@ + /* Round the value and print it */ + printk("%lu.%02lu BogoMIPS (lpj=%lu)\n", + loops_per_jiffy/(500000/HZ), +- (loops_per_jiffy/(5000/HZ)) % 100, ++ (loops_per_jiffy * 10/(50000/HZ)) % 100, + loops_per_jiffy); + } + +Index: linux-2.6.22-ck1/arch/i386/kernel/cpu/proc.c +=================================================================== +--- linux-2.6.22-ck1.orig/arch/i386/kernel/cpu/proc.c 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/arch/i386/kernel/cpu/proc.c 2007-07-10 14:55:24.000000000 +1000 +@@ -157,7 +157,7 @@ + + seq_printf(m, "\nbogomips\t: %lu.%02lu\n", + c->loops_per_jiffy/(500000/HZ), +- (c->loops_per_jiffy/(5000/HZ)) % 100); ++ (c->loops_per_jiffy * 10/(50000/HZ)) % 100); + seq_printf(m, "clflush size\t: %u\n\n", c->x86_clflush_size); + + return 0; +Index: linux-2.6.22-ck1/arch/i386/kernel/smpboot.c +=================================================================== +--- linux-2.6.22-ck1.orig/arch/i386/kernel/smpboot.c 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/arch/i386/kernel/smpboot.c 2007-07-10 14:55:24.000000000 +1000 +@@ -1094,7 +1094,7 @@ + "Total of %d processors activated (%lu.%02lu BogoMIPS).\n", + cpucount+1, + bogosum/(500000/HZ), +- (bogosum/(5000/HZ))%100); ++ (bogosum * 10/(50000/HZ))%100); + + Dprintk("Before bogocount - setting activated=1.\n"); + +Index: linux-2.6.22-ck1/include/linux/nfsd/stats.h +=================================================================== +--- linux-2.6.22-ck1.orig/include/linux/nfsd/stats.h 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/include/linux/nfsd/stats.h 2007-07-10 14:55:24.000000000 +1000 +@@ -35,8 +35,8 @@ + + }; + +-/* thread usage wraps very million seconds (approx one fortnight) */ +-#define NFSD_USAGE_WRAP (HZ*1000000) ++/* thread usage wraps every one hundred thousand seconds (approx one day) */ ++#define NFSD_USAGE_WRAP (HZ*100000) + + #ifdef __KERNEL__ + +Index: linux-2.6.22-ck1/arch/x86_64/kernel/setup.c +=================================================================== +--- linux-2.6.22-ck1.orig/arch/x86_64/kernel/setup.c 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/arch/x86_64/kernel/setup.c 2007-07-10 14:55:24.000000000 +1000 +@@ -1047,7 +1047,7 @@ + + seq_printf(m, "\nbogomips\t: %lu.%02lu\n", + c->loops_per_jiffy/(500000/HZ), +- (c->loops_per_jiffy/(5000/HZ)) % 100); ++ (c->loops_per_jiffy * 10/(50000/HZ)) % 100); + + if (c->x86_tlbsize > 0) + seq_printf(m, "TLB size\t: %d 4K pages\n", c->x86_tlbsize); +Index: linux-2.6.22-ck1/Makefile +=================================================================== +--- linux-2.6.22-ck1.orig/Makefile 2007-07-10 14:54:59.000000000 +1000 ++++ linux-2.6.22-ck1/Makefile 2007-07-10 14:55:24.000000000 +1000 +@@ -1,8 +1,9 @@ + VERSION = 2 + PATCHLEVEL = 6 + SUBLEVEL = 22 +-EXTRAVERSION = +-NAME = Holy Dancing Manatees, Batman! ++EXTRAVERSION = -ck1 ++NAME = So long, and thanks for all the fish ++JANAME = ã•よã†ãªã‚‰ã€ã„ã¾ã¾ã§é­šã‚’ã‚りãŒã¨ã† + + # *DOCUMENTATION* + # To see a list of typical targets execute "make help" diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index 532863d66eb..30d0b8f345e 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -3,14 +3,14 @@ , stateDir ? "/nix/var" }: -let version = "0.11pre9692"; in +let version = "0.11pre9718"; in stdenv.mkDerivation { name = "nix-${version}"; src = fetchurl { url = "http://nix.cs.uu.nl/dist/nix/nix-${version}/nix-${version}.tar.bz2"; - md5 = "35c0bc68b81d20c7fb925bcf8faf4827"; + md5 = "cae130dcc51a30eff34fc194e17891f2"; }; buildInputs = [perl curl openssl]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0840cfde059..8bc2c48df0c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -154,6 +154,13 @@ rec { version = getConfig [ "environment" "versions" name ]; }; + # The same, another syntax. + # Warning: syntax for configuration.nix changed too + useVersion = name: f: f + { + version = getConfig [ "environment" "versions" name ]; + }; + # Whether user enabled given feature for the given package? getFlag = flag: package: default: getConfig [ "environment" "flags" package flag ] @@ -2803,6 +2810,10 @@ rec { inherit fetchurl stdenv; }; + bridge_utils = import ../os-specific/linux/bridge_utils { + inherit fetchurl stdenv autoconf automake; + }; + alsaUtils = import ../os-specific/linux/alsa/utils { inherit fetchurl stdenv alsaLib ncurses gettext; }; @@ -3011,14 +3022,16 @@ rec { kernel_2_6_22 = import ../os-specific/linux/kernel/linux-2.6.22.nix { inherit fetchurl stdenv perl mktemp module_init_tools; kernelPatches = [ - /*{ name = "ext3cow"; - patch = ../os-specific/linux/kernel/linux-2.6.20.3-ext3cow.patch; + /* + { name = "ext3cow"; + patch = ../os-specific/linux/kernel/linux-2.6.21.7-ext3cow_wouter.patch; extraConfig = "CONFIG_EXT3COW_FS=m\n" + "CONFIG_EXT3COW_FS_XATTR=y\n" + "CONFIG_EXT3COW_FS_POSIX_ACL=y\n" + "CONFIG_EXT3COW_FS_SECURITY=y\n"; - }*/ + } + */ { name = "paravirt-nvidia"; patch = ../os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch; } @@ -3049,12 +3062,63 @@ rec { [(getConfig ["kernel" "addConfig"] "")]; }; + kernel_2_6_21_ck = import ../os-specific/linux/kernel/linux-2.6.21_ck.nix { + inherit fetchurl stdenv perl mktemp module_init_tools; + kernelPatches = [ + { name = "ext3cow"; + patch = ../os-specific/linux/kernel/linux-2.6.21.7-ext3cow_wouter.patch; + extraConfig = + "CONFIG_EXT3COW_FS=m\n" + + "CONFIG_EXT3COW_FS_XATTR=y\n" + + "CONFIG_EXT3COW_FS_POSIX_ACL=y\n" + + "CONFIG_EXT3COW_FS_SECURITY=y\n"; + } + { name = "Con Kolivas Patch"; + patch = ../os-specific/linux/kernel/patch-2.6.21-ck1; + } + { name = "paravirt-nvidia"; + patch = ../os-specific/linux/kernel/2.6.20-paravirt-nvidia.patch; + } + { name = "skas-2.6.20-v9-pre9"; + patch = fetchurl { + url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; + md5 = "02e619e5b3aaf0f9768f03ac42753e74"; + }; + extraConfig = + "CONFIG_PROC_MM=y\n" + + "# CONFIG_PROC_MM_DUMPABLE is not set\n"; + } + { name = "fbsplash-0.9.2-r5-2.6.21"; + patch = fetchurl { + url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.21/4200_fbsplash-0.9.2-r5.patch; + sha256 = "00s8074fzsly2zpir885zqkvq267qyzg6vhsn7n1z2v1z78avxd8"; + }; + extraConfig = "CONFIG_FB_SPLASH=y"; + } + ]; + }; + + + kernel_2_6_23 = import ../os-specific/linux/kernel/linux-2.6.23.nix { inherit fetchurl stdenv perl mktemp module_init_tools; kernelPatches = [ { name = "paravirt-nvidia"; patch = ../os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch; } + { # resume with resume=swap:/dev/xx + name = "tux on ice"; # (swsusp2) + patch = fetchurl { + url = "http://www.tuxonice.net/downloads/all/tuxonice-3.0-rc2-for-2.6.23.1.patch.bz2"; + sha256 = "ef86267b6f3d7e309221f5173a881afae1dfa57418be5b3963f2380b0633ca1a"; + }; + extraConfig = " + CONFIG_SUSPEND2=y + CONFIG_SUSPEND2_FILE=y + CONFIG_SUSPEND2_SWAP=y + CONFIG_CRYPTO_LZF=y + "; + } { name = "fbsplash-0.9.2-r5-2.6.21"; patch = fetchurl { url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; From f7070ce80901b04f06f4b1736753031a614f9f66 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 19 Nov 2007 23:08:48 +0000 Subject: [PATCH 029/320] Removed useVersion duplicate svn path=/nixpkgs/branches/stdenv-updates/; revision=9763 --- pkgs/top-level/all-packages.nix | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8bc2c48df0c..1a3c616ce1f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -154,13 +154,6 @@ rec { version = getConfig [ "environment" "versions" name ]; }; - # The same, another syntax. - # Warning: syntax for configuration.nix changed too - useVersion = name: f: f - { - version = getConfig [ "environment" "versions" name ]; - }; - # Whether user enabled given feature for the given package? getFlag = flag: package: default: getConfig [ "environment" "flags" package flag ] From 10d9d4b456be5b4fea96e1a803dabd730c411158 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 21 Nov 2007 15:32:20 +0000 Subject: [PATCH 030/320] * Dietlibc 0.31 svn path=/nixpkgs/branches/stdenv-updates/; revision=9770 --- pkgs/os-specific/linux/dietlibc/default.nix | 16 +++++++++------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pkgs/os-specific/linux/dietlibc/default.nix b/pkgs/os-specific/linux/dietlibc/default.nix index 9a501188d53..a98c7608820 100644 --- a/pkgs/os-specific/linux/dietlibc/default.nix +++ b/pkgs/os-specific/linux/dietlibc/default.nix @@ -3,10 +3,10 @@ assert stdenv.isLinux; stdenv.mkDerivation { - name = "dietlibc-0.30"; + name = "dietlibc-0.31"; src = fetchurl { - url = mirror://kernel/linux/libs/dietlibc/dietlibc-0.30.tar.bz2; - md5 = "2465d652fff6f1fad3da3b98e60e83c9"; + url = mirror://kernel/linux/libs/dietlibc/dietlibc-0.31.tar.bz2; + sha256 = "1kanrwjcmqs28z8arj9py9mbgjx5rgvi7il484pgaizpcxm3sqcr"; }; builder = ./builder.sh; @@ -24,14 +24,16 @@ stdenv.mkDerivation { # Remove them. ./no-wchar.patch - # Fix to get DNS resolution to work on 64-bit platforms. Taken - # from 0.31 CVS. - ./dns64.patch - # Get lseek64 working on x86_64. From # http://svn.annvix.org/cgi-bin/viewvc.cgi/packages/releases/2.0-CURRENT/dietlibc/SOURCES ./x86_64-lseek64.patch #./x86_64-stat64.patch ]; + + meta = { + homepage = http://www.fefe.de/dietlibc/; + description = "A small implementation of the C library"; + license = "GPL"; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1a3c616ce1f..a318fdf442d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2827,7 +2827,7 @@ rec { dietlibc = import ../os-specific/linux/dietlibc { inherit fetchurl glibc; # Dietlibc 0.30 doesn't compile on PPC with GCC 4.1, bus GCC 3.4 works. - stdenv = if stdenv.system == "powerpc-linux" then overrideGCC stdenv gcc34 else stdenv; + stdenv = if stdenv.system == "powerpc-linux" then overrideGCC stdenv gcc34 else stdenv; }; e2fsprogs = import ../os-specific/linux/e2fsprogs { From 8b3186528e6bf253fd55dae9edc181173b6789e3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 21 Nov 2007 19:28:54 +0000 Subject: [PATCH 031/320] * pcre: don't compile with C++ support when doing a dietlibc build. * GCC 4.2: restore the ability to build a statically linked compiler, needed for the Nixpkgs bootstrap. * GCC 4.2: use symlinks instead of hard links in $out/bin (NIXPKGS-62). svn path=/nixpkgs/branches/stdenv-updates/; revision=9771 --- .../development/compilers/gcc-4.1/default.nix | 12 ++++++------ pkgs/development/compilers/gcc-4.2/builder.sh | 19 +++++++++++++------ .../development/compilers/gcc-4.2/default.nix | 4 ++-- pkgs/development/libraries/pcre/default.nix | 7 ++++--- pkgs/stdenv/linux/make-bootstrap-tools.nix | 3 ++- pkgs/stdenv/linux/make-bootstrap-tools.sh | 2 +- pkgs/top-level/all-packages.nix | 5 +++-- 7 files changed, 31 insertions(+), 21 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.1/default.nix b/pkgs/development/compilers/gcc-4.1/default.nix index e6d5452512e..621f96e49f9 100644 --- a/pkgs/development/compilers/gcc-4.1/default.nix +++ b/pkgs/development/compilers/gcc-4.1/default.nix @@ -15,18 +15,18 @@ stdenv.mkDerivation ({ builder = if langF77 then ./fortran.sh else ./builder.sh; src = - [(fetchurl { + optional /*langC*/ true (fetchurl { url = mirror://gnu/gcc/gcc-4.1.2/gcc-core-4.1.2.tar.bz2; sha256 = "07binc1hqlr0g387zrg5sp57i12yzd5ja2lgjb83bbh0h3gwbsbv"; - })] ++ - (if /*langCC*/ true then [(fetchurl { + }) ++ + optional /*langCC*/ true (fetchurl { url = mirror://gnu/gcc/gcc-4.1.2/gcc-g++-4.1.2.tar.bz2; sha256 = "1qm2izcxna10jai0v4s41myki0xkw9174qpl6k1rnrqhbx0sl1hc"; - })] else []) ++ - (if langF77 then [(fetchurl { + }) ++ + optional langF77 (fetchurl { url = mirror://gnu/gcc/gcc-4.1.2/gcc-fortran-4.1.2.tar.bz2; sha256 = "0772dhmm4gc10420h0d0mfkk2sirvjmjxz8j0ywm8wp5qf8vdi9z"; - })] else []); + }); patches = optional noSysDirs [./no-sys-dirs.patch]; diff --git a/pkgs/development/compilers/gcc-4.2/builder.sh b/pkgs/development/compilers/gcc-4.2/builder.sh index c17d0403702..4bbf00637ae 100644 --- a/pkgs/development/compilers/gcc-4.2/builder.sh +++ b/pkgs/development/compilers/gcc-4.2/builder.sh @@ -40,6 +40,7 @@ if test "$noSysDirs" = "1"; then done makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ LIMITS_H_TEST=true \ @@ -68,18 +69,24 @@ postInstall() { # Remove `fixincl' to prevent a retained dependency on the # previous gcc. rm -rf $out/libexec/gcc/*/*/install-tools + rm -rf $out/lib/gcc/*/*/install-tools # Get rid of some "fixed" header files rm -rf $out/lib/gcc/*/*/include/root + + # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks. + for i in $out/bin/*-gcc*; do + if cmp -s $out/bin/gcc $i; then + ln -sfn gcc $i + fi + done } -if test -z "$staticCompiler"; then - if test -z "$profiledCompiler"; then - buildFlags="bootstrap $buildFlags" - else - buildFlags="profiledbootstrap $buildFlags" - fi +if test -z "$profiledCompiler"; then + buildFlags="bootstrap $buildFlags" +else + buildFlags="profiledbootstrap $buildFlags" fi genericBuild diff --git a/pkgs/development/compilers/gcc-4.2/default.nix b/pkgs/development/compilers/gcc-4.2/default.nix index df0f3e5c48d..c763f8262c2 100644 --- a/pkgs/development/compilers/gcc-4.2/default.nix +++ b/pkgs/development/compilers/gcc-4.2/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { url = mirror://gnu/gcc/gcc-4.2.2/gcc-core-4.2.2.tar.bz2; sha256 = "01hdwd4im2xzg159fk022zqyhlxphqvpmabd25bqb8fjbs2yi80a"; }) ++ - optional /*langCC*/ true (fetchurl { + optional langCC (fetchurl { url = mirror://gnu/gcc/gcc-4.2.2/gcc-g++-4.2.2.tar.bz2; sha256 = "04xankxi3bi4gvgv8rq9h6w3bdx59bg9zh0zv6lyw373gy26ygmq"; }) ++ @@ -47,7 +47,7 @@ stdenv.mkDerivation { ${if stdenv.isi686 then "--with-arch=i686" else ""} "; - makeFlags = if staticCompiler then "LDFLAGS=-static" else ""; + NIX_EXTRA_LDFLAGS = if staticCompiler then "-static" else ""; passthru = { inherit langC langCC langF77; }; diff --git a/pkgs/development/libraries/pcre/default.nix b/pkgs/development/libraries/pcre/default.nix index fef6d239ea0..cba26fae76c 100644 --- a/pkgs/development/libraries/pcre/default.nix +++ b/pkgs/development/libraries/pcre/default.nix @@ -1,4 +1,4 @@ -args: with args; +{stdenv, fetchurl, unicodeSupport ? false, cplusplusSupport ? true}: stdenv.mkDerivation { name = "pcre-7.4"; @@ -7,7 +7,8 @@ stdenv.mkDerivation { sha256 = "1rdks2h5f3p2d71c4jnxaic1c9gmgsfky80djnafcdbdrhzkiyx5"; }; configureFlags = - if unicodeSupport then + (if unicodeSupport then "--enable-unicode-properties --enable-shared --disable-static" - else ""; + else "") + + (if !cplusplusSupport then "--disable-cpp" else ""); } diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index db7c3d72e11..069b965ad76 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -48,11 +48,12 @@ let then pkgsDiet.gawk else pkgsStatic.gawk; - gcc = import ../../development/compilers/gcc-4.1 { + gcc = import ../../development/compilers/gcc-4.2 { inherit (pkgs) fetchurl stdenv; noSysDirs = true; langCC = false; staticCompiler = true; + profiledCompiled = true; }; curl = pkgsDiet.realCurl; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index 49bb5afe477..afc595861ca 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -46,7 +46,7 @@ cp $findutils/bin/find tools/bin cp $findutils/bin/xargs tools/bin cp $diffutils/bin/* tools/bin cp $gnused/bin/* tools/bin -cp $gnugrep/bin/* tools/bin +cp $gnugrep/bin/grep tools/bin cp $gawk/bin/gawk tools/bin ln -s gawk tools/bin/awk cp $gnutar/bin/* tools/bin diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a318fdf442d..dc3b0adea32 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2155,11 +2155,12 @@ rec { pcre = import ../development/libraries/pcre { inherit fetchurl stdenv; unicodeSupport = getFlag "unicode" "pcre" false; + cplusplusSupport = !stdenv ? isDietLibC; }; poppler = import ../development/libraries/poppler { - inherit fetchurl stdenv qt4 cairo freetype fontconfig zlib libjpeg; - inherit (gtkLibs) glib gtk; + inherit fetchurl stdenv qt4 cairo freetype fontconfig zlib libjpeg; + inherit (gtkLibs) glib gtk; }; popt = import ../development/libraries/popt { From 3949fff65d53188683b054f692c9bc54beb5aeb2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 21 Nov 2007 19:30:54 +0000 Subject: [PATCH 032/320] * Symlink g++ as well (NIXPKGS-62). svn path=/nixpkgs/branches/stdenv-updates/; revision=9772 --- pkgs/development/compilers/gcc-4.2/builder.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/compilers/gcc-4.2/builder.sh b/pkgs/development/compilers/gcc-4.2/builder.sh index 4bbf00637ae..ee11e974a40 100644 --- a/pkgs/development/compilers/gcc-4.2/builder.sh +++ b/pkgs/development/compilers/gcc-4.2/builder.sh @@ -80,6 +80,12 @@ postInstall() { ln -sfn gcc $i fi done + + for i in $out/bin/*-c++* $out/bin/*-g++*; do + if cmp -s $out/bin/g++ $i; then + ln -sfn g++ $i + fi + done } From 3237b446b90f3c705a7b61bb381f53da6116b852 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 22 Nov 2007 12:39:51 +0000 Subject: [PATCH 033/320] svn path=/nixpkgs/branches/stdenv-updates/; revision=9775 --- pkgs/stdenv/linux/make-bootstrap-tools.nix | 2 +- pkgs/stdenv/linux/make-bootstrap-tools.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index 069b965ad76..ce81ff0bd8f 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -53,7 +53,7 @@ let noSysDirs = true; langCC = false; staticCompiler = true; - profiledCompiled = true; + profiledCompiler = true; }; curl = pkgsDiet.realCurl; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index afc595861ca..d9d2a2260a4 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -99,6 +99,7 @@ fi rm -rf gcc/lib/gcc/*/*/install-tools rm -rf gcc/lib/gcc/*/*/include/root rm -rf gcc/lib/gcc/*/*/include/linux +rm -f gcc/lib/libgomp* if test -e gcc/lib/gcc/powerpc-unknown-linux-gnu/4.1.1/include/bits/mathdef.h; then nukeRefs gcc/lib/gcc/powerpc-unknown-linux-gnu/4.1.1/include/bits/mathdef.h fi From d0fc2251b41c51b9acb7a0c85d4fe67f81251837 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 Nov 2007 13:59:46 +0000 Subject: [PATCH 034/320] * Bash 3.2 patchlevel 25. svn path=/nixpkgs/branches/stdenv-updates/; revision=9795 --- pkgs/shells/bash/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 1877080049b..9e709047288 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -3,11 +3,11 @@ assert interactive -> ncurses != null; stdenv.mkDerivation { - name = "bash-3.2-p17"; + name = "bash-3.2-p25"; src = fetchurl { - url = http://losser.st-lab.cs.uu.nl/~eelco/dist/bash-3.2-p17.tar.bz2; - sha256 = "153gg2z2s3ar7vni3345nnmdisha4b8cxzsj79d8ap6m6i4c35f5"; + url = http://losser.st-lab.cs.uu.nl/~eelco/dist/bash-3.2-p25.tar.bz2; + sha256 = "1x19z386ysvwk00zigzf3nkv1x1xq4kvyckz9ah8qz65a7626cs4"; }; postInstall = "ln -s bash $out/bin/sh"; From 0c78e480fc8bf184a0b87a1f0a33c03e809c5aac Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 Nov 2007 14:41:08 +0000 Subject: [PATCH 035/320] * Build a small number of packages to test the stdenv-updates branch. svn path=/nixpkgs/branches/stdenv-updates/; revision=9797 --- pkgs/top-level/build-for-release.nix | 283 +-------------------------- 1 file changed, 3 insertions(+), 280 deletions(-) diff --git a/pkgs/top-level/build-for-release.nix b/pkgs/top-level/build-for-release.nix index 9f9ab69e49a..18a7074d843 100644 --- a/pkgs/top-level/build-for-release.nix +++ b/pkgs/top-level/build-for-release.nix @@ -3,236 +3,19 @@ let { allPackages = import ./all-packages.nix; i686LinuxPkgs = {inherit (allPackages {system = "i686-linux";}) - MPlayer - MPlayerPlugin - alsaUtils - apacheAnt - apacheHttpd - aspectj - aspell - aspellDicts aterm - autoconf - automake19x - bash - bashInteractive - batik - binutils - bison23 - bittorrent - bmp - bmp_plugin_musepack - bmp_plugin_wma - bsdiff - bzip2 - cabextract - cdrkit - chatzilla - cksfv - compiz - coreutils - cpio - cron - cups - darcs - db4 - dhcp - dietlibc - diffutils - docbook5 - docbook5_xsl - docbook_xml_dtd_42 - docbook_xml_dtd_43 - docbook_xsl - e2fsprogs - ecj - eclipsesdk - emacs - emacsUnicode - enscript - exult - feh - file - findutils - firefoxWrapper - flex2533 - gawk gcc - gcc34 - gcc42 - gdb - ghc - ghostscript - gimp - gnugrep - gnum4 - gnumake - gnupatch - gnused - gnutar - gqview - graphviz - grub - gzip - hal - hello - iana_etc - iputils - irssi - jakartaregexp - jdkPlugin - jetty - jikes - jing_tools - jrePlugin - jwhois - kbd - kcachegrind - kdebase - keen4 - kernel - klibc - ktorrent - less - lhs2tex - libtool - libxml2 - libxslt - lvm2 - lynx - man - mdadm - mesa - mingetty - mk - mktemp - mod_python - module_init_tools - mono - mysql - #mythtv - nano - netcat - nix nixUnstable - nss_ldap - ntp - nxml - openoffice - openssh - openssl - pam_console - pam_ldap - pam_login - pam_unix2 pan - par2cmdline - pciutils - perl - php - pidgin - pkgconfig - postgresql - postgresql_jdbc - procps - pwdutils - python - qt3 - quake3demo - readline - reiserfsprogs - rogue - rsync - ruby - screen - sdf - slim - spidermonkey - splashutils - ssmtp - strace - strategoxt - strategoxtUtils - su subversion - sudo - swig - sylpheed - sysklogd - syslinux - sysvinit - sysvtools - tetex - texinfo - thunderbird - tightvnc - time - udev - uml - unzip - upstart - utillinux - valgrind - vim - vlc - w3m - wget - wine - wirelesstools - wxHaskell - x11_ssh_askpass - xchm - xfig - xineUI - xkeyboard_config - xmltv - xmms - xorg_sys_opengl - xsel - xterm - zdelta - zip - ; - inherit ((allPackages {system = "i686-linux";}).xorg) - fontbh100dpi - fontbhlucidatypewriter100dpi - fontbhttf - fontcursormisc - fontmiscmisc - iceauth - setxkbmap - xauth - xf86inputkeyboard - xf86inputmouse - xf86videoi810 - xf86videovesa - xkbcomp - xorgserver - xrandr - xrdb - xset - ; - inherit ((allPackages {system = "i686-linux";}).gnome) - gconfeditor - gnomepanel - gnometerminal - gnomeutils - metacity ; }; x86_64LinuxPkgs = {inherit (allPackages {system = "x86_64-linux";}) - aterm242fixes - autoconf - automake19x - bash - binutils - bison23 + aterm gcc - hello - kernel - libtool nixUnstable + pan subversion ; }; @@ -241,69 +24,9 @@ let { aterm ;}; - i686FreeBSDPkgs = {inherit (allPackages {system = "i686-freebsd";}) - aterm - autoconf - automake19x - docbook5 - docbook_xml_dtd_42 - docbook_xml_dtd_43 - docbook_xsl - docbook5_xsl - libtool - libxml2 - libxslt - nxml - realCurl - subversion - unzip - ;}; - - powerpcDarwinPkgs = {inherit (allPackages {system = "powerpc-darwin";}) - apacheHttpd - aterm - autoconf - automake19x - bison23 - docbook5 - docbook_xml_dtd_42 - docbook_xml_dtd_43 - docbook_xsl - docbook5_xsl - libtool - libxml2 - libxslt - nxml - #php - subversion - tetex - unzip - ;}; - - i686DarwinPkgs = {inherit (allPackages {system = "i686-darwin";}) - aterm - autoconf - automake19x - libtool - libxml2 - libxslt - subversion - ;}; - - cygwinPkgs = {inherit (allPackages {system = "i686-cygwin";}) - aterm - gnum4 - readline - ncurses - ;}; - body = [ i686LinuxPkgs x86_64LinuxPkgs - powerpcLinuxPkgs - i686FreeBSDPkgs - powerpcDarwinPkgs -# i686DarwinPkgs - cygwinPkgs +# powerpcLinuxPkgs ]; } From d04b560dc3d543a1c58e219de768c4cbe1567737 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 Nov 2007 15:59:07 +0000 Subject: [PATCH 036/320] * fgrep and egrep aren't shell scripts anymore. svn path=/nixpkgs/branches/stdenv-updates/; revision=9802 --- pkgs/stdenv/linux/make-bootstrap-tools.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index d9d2a2260a4..aa93ec596c4 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -46,7 +46,7 @@ cp $findutils/bin/find tools/bin cp $findutils/bin/xargs tools/bin cp $diffutils/bin/* tools/bin cp $gnused/bin/* tools/bin -cp $gnugrep/bin/grep tools/bin +cp $gnugrep/bin/* tools/bin cp $gawk/bin/gawk tools/bin ln -s gawk tools/bin/awk cp $gnutar/bin/* tools/bin @@ -62,6 +62,8 @@ nukeRefs tools/bin/sed nukeRefs tools/bin/gawk nukeRefs tools/bin/tar nukeRefs tools/bin/grep +nukeRefs tools/bin/fgrep +nukeRefs tools/bin/egrep nukeRefs tools/bin/patchelf nukeRefs tools/bin/make From ea52300e0b959d7ed34d7c222b3a212df66dc6be Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 Nov 2007 16:19:44 +0000 Subject: [PATCH 037/320] svn path=/nixpkgs/branches/stdenv-updates/; revision=9803 --- pkgs/development/interpreters/python/default.nix | 1 + pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 1ca85603a1f..af90018870f 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -1,5 +1,6 @@ args: args.stdenv.lib.listOfListsToAttrs [ + [ "default" (import ./2.4.nix args) ] [ "2.4" (import ./2.4.nix args) ] [ "2.5" (import ./2.5 args) ] ] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index dc3b0adea32..4dc606cb10b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2913,7 +2913,7 @@ rec { kernelHeaders = kernelHeaders_2_6_23; - kernelHeaders_2_6_21 = import ../os-specific/linux/kernel-headers/2.6.21.1.nix { + kernelHeaders_2_6_21 = import ../os-specific/linux/kernel-headers/2.6.21.3.nix { inherit fetchurl stdenv; }; From 29ef9c473ae8bbfa40f2294b25d61fa6b0f9171b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:03:52 +0000 Subject: [PATCH 038/320] typo in kernel builder svn path=/nixpkgs/branches/stdenv-updates/; revision=9814 --- pkgs/os-specific/linux/kernel/builder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh index af5aa8de8c2..123b65e3f07 100644 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ b/pkgs/os-specific/linux/kernel/builder.sh @@ -96,7 +96,7 @@ installPhase() { if test "$arch" != um; then # copy all Makefiles and Kconfig files ln -s $out/lib/modules/$version/build $out/lib/modules/$version/source - cp --parents `find -type f -name Makefile-\* -o -name "Kconfig*"` $out/lib/modules/$version/build + cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $out/lib/modules/$version/build cp Module.symvers $out/lib/modules/$version/build # weed out unneeded stuff From e1d5804f30d1ff27a9a7ca2acef5f2398ed3e385 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:04:00 +0000 Subject: [PATCH 039/320] Installing kernel headers using make headers_install svn path=/nixpkgs/branches/stdenv-updates/; revision=9815 --- .../linux/kernel-headers/builder.sh | 23 +++---------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/pkgs/os-specific/linux/kernel-headers/builder.sh b/pkgs/os-specific/linux/kernel-headers/builder.sh index b2ebbc69485..05392d5fe24 100644 --- a/pkgs/os-specific/linux/kernel-headers/builder.sh +++ b/pkgs/os-specific/linux/kernel-headers/builder.sh @@ -1,26 +1,9 @@ source $stdenv/setup +patchPhase="sed -i '/scsi/d' include/Kbuild" -buildPhase() { - make include/linux/version.h -} - -buildPhase=buildPhase - - -installPhase() { - mkdir $out - mkdir $out/include - cp -prvd include/linux include/asm-generic $out/include - cp -prvd include/asm-$platform $out/include - ln -s asm-$platform $out/include/asm - for i in $extraIncludeDirs; do - cp -prvd include/asm-$i $out/include - done - echo -n > $out/include/linux/autoconf.h -} - -installPhase=installPhase +buildPhase="make mrproper headers_check"; +installPhase="make INSTALL_HDR_PATH=$out headers_install" genericBuild From 672b4d3002fd1597cb7b5c3802a3001a14614315 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:04:14 +0000 Subject: [PATCH 040/320] switched to glibc-2.7 svn path=/nixpkgs/branches/stdenv-updates/; revision=9816 --- 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 4dc606cb10b..fa2a4be52db 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1743,7 +1743,7 @@ rec { }; glibc = useFromStdenv (stdenv ? glibc) stdenv.glibc - (import ../development/libraries/glibc-2.5 { + (import ../development/libraries/glibc-2.7 { inherit fetchurl stdenv kernelHeaders; #installLocales = false; }); From a1f7a312c0e91a8f02a7e409460ba54e205674d9 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:04:21 +0000 Subject: [PATCH 041/320] cpio: unneeded patches removed svn path=/nixpkgs/branches/stdenv-updates/; revision=9817 --- pkgs/tools/archivers/cpio/default.nix | 1 - .../archivers/cpio/gnulib-futimens.patch | 30 ------------------- pkgs/tools/archivers/cpio/symlink.patch | 13 -------- 3 files changed, 44 deletions(-) delete mode 100644 pkgs/tools/archivers/cpio/gnulib-futimens.patch delete mode 100644 pkgs/tools/archivers/cpio/symlink.patch diff --git a/pkgs/tools/archivers/cpio/default.nix b/pkgs/tools/archivers/cpio/default.nix index 3309215fb63..cb9ee9e7f06 100644 --- a/pkgs/tools/archivers/cpio/default.nix +++ b/pkgs/tools/archivers/cpio/default.nix @@ -6,5 +6,4 @@ stdenv.mkDerivation { url = mirror://gnu/cpio/cpio-2.9.tar.bz2; sha256 = "01s7f9hg8kgpis96j99hgkiqgdy53pm7qi7bhm3fzx58jfk5z6mv"; }; - patches = [./symlink.patch ./gnulib-futimens.patch]; } diff --git a/pkgs/tools/archivers/cpio/gnulib-futimens.patch b/pkgs/tools/archivers/cpio/gnulib-futimens.patch deleted file mode 100644 index 11703d5706d..00000000000 --- a/pkgs/tools/archivers/cpio/gnulib-futimens.patch +++ /dev/null @@ -1,30 +0,0 @@ -now hat glibc-2.6 declares futimens. -http://lists.gnu.org/archive/html/bug-gnulib/2007-05/msg00089.html - -diff -ru cpio-2.7.orig/lib/utimens.c cpio-2.7/lib/utimens.c ---- cpio-2.7.orig/lib/utimens.c 2007-05-20 21:23:57.000000000 +0900 -+++ cpio-2.7/lib/utimens.c 2007-05-21 08:40:22.000000000 +0900 -@@ -73,7 +73,7 @@ - Return 0 on success, -1 (setting errno) on failure. */ - - int --futimens (int fd ATTRIBUTE_UNUSED, -+gl_futimens (int fd ATTRIBUTE_UNUSED, - char const *file, struct timespec const timespec[2]) - { - /* There's currently no interface to set file timestamps with -@@ -166,5 +166,5 @@ - int - utimens (char const *file, struct timespec const timespec[2]) - { -- return futimens (-1, file, timespec); -+ return gl_futimens (-1, file, timespec); - } -diff -ru cpio-2.7.orig/lib/utimens.h cpio-2.7/lib/utimens.h ---- cpio-2.7.orig/lib/utimens.h 2007-05-20 21:23:57.000000000 +0900 -+++ cpio-2.7/lib/utimens.h 2007-05-21 08:39:57.000000000 +0900 -@@ -1,3 +1,3 @@ - #include "timespec.h" --int futimens (int, char const *, struct timespec const [2]); -+int gl_futimens (int, char const *, struct timespec const [2]); - int utimens (char const *, struct timespec const [2]); diff --git a/pkgs/tools/archivers/cpio/symlink.patch b/pkgs/tools/archivers/cpio/symlink.patch deleted file mode 100644 index 89f82daa522..00000000000 --- a/pkgs/tools/archivers/cpio/symlink.patch +++ /dev/null @@ -1,13 +0,0 @@ -http://lists.gnu.org/archive/html/bug-cpio/2006-11/msg00003.html - -diff -Ndpru cpio-2.7/src/copyout.c cpio-2.7.fixed/src/copyout.c ---- cpio-2.7/src/copyout.c 2006-09-27 02:19:44.000000000 -0600 -+++ cpio-2.7.fixed/src/copyout.c 2006-11-12 18:58:25.000000000 -0700 -@@ -806,6 +806,7 @@ process_copy_out () - free (link_name); - continue; - } -+ link_name[link_size] = '\0'; - cpio_safer_name_suffix (link_name, false, - !no_abs_paths_flag, true); - link_size = strlen (link_name); From 6e7217a2daff6c7bc08770e0dc204fb2c9885654 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:04:38 +0000 Subject: [PATCH 042/320] iputils: builder rewritten, open-max.patch added svn path=/nixpkgs/branches/stdenv-updates/; revision=9818 --- pkgs/os-specific/linux/iputils/builder.sh | 20 +++++-------- pkgs/os-specific/linux/iputils/default.nix | 2 +- pkgs/os-specific/linux/iputils/open-max.patch | 30 +++++++++++++++++++ 3 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 pkgs/os-specific/linux/iputils/open-max.patch diff --git a/pkgs/os-specific/linux/iputils/builder.sh b/pkgs/os-specific/linux/iputils/builder.sh index d1b05109aee..b5219c3fefc 100644 --- a/pkgs/os-specific/linux/iputils/builder.sh +++ b/pkgs/os-specific/linux/iputils/builder.sh @@ -1,20 +1,11 @@ source $stdenv/setup -tar zxvf $src -cd iputils +makeFlags="KERNEL_INCLUDE=$kernelHeaders/include LIBC_INCLUDE=$glibc/include" -sed -e "s^KERNEL_INCLUDE=.*$^KERNEL_INCLUDE=$kernelHeaders/include^" < Makefile > Makefile.new - -mv Makefile.new Makefile -sed -e "s^LIBC_INCLUDE=.*$^LIBC_INCLUDE=$glibc/include^" < Makefile > Makefile.new -mv Makefile.new Makefile - -#make ping arping tracepath -make - -mkdir -p $out/bin -mkdir -p $out/sbin +preConfigure="sed -e 's@check-kernel @@' -i Makefile" +installPhase=" +mkdir -pv $out/bin $out/sbin install -c arping $out/sbin/ install -c ping $out/bin/ install -c ping6 $out/sbin/ @@ -22,3 +13,6 @@ install -c rdisc $out/sbin/ install -c tracepath $out/sbin/ install -c tracepath6 $out/sbin/ install -c traceroute6 $out/sbin/ +"; + +genericBuild diff --git a/pkgs/os-specific/linux/iputils/default.nix b/pkgs/os-specific/linux/iputils/default.nix index c57cf68fd5d..354419a4109 100644 --- a/pkgs/os-specific/linux/iputils/default.nix +++ b/pkgs/os-specific/linux/iputils/default.nix @@ -11,5 +11,5 @@ stdenv.mkDerivation { }; inherit kernelHeaders glibc; - #buildInputs = [bison flex openssl]; + patches = [ ./open-max.patch ]; } diff --git a/pkgs/os-specific/linux/iputils/open-max.patch b/pkgs/os-specific/linux/iputils/open-max.patch new file mode 100644 index 00000000000..26bb95bd9d8 --- /dev/null +++ b/pkgs/os-specific/linux/iputils/open-max.patch @@ -0,0 +1,30 @@ +--- iputils-s20070202/rdisc.c.open-max 2007-08-07 11:34:03.000000000 +0200 ++++ iputils-s20070202/rdisc.c 2007-08-07 11:41:30.000000000 +0200 +@@ -240,14 +240,25 @@ + { + int t; + pid_t pid; +- ++ long open_max; ++ + if (trace) + return; + ++ if ((open_max = sysconf(_SC_OPEN_MAX)) == -1) { ++ if (errno == 0) { ++ (void) fprintf(stderr, "OPEN_MAX is not supported\n"); ++ } ++ else { ++ (void) fprintf(stderr, "sysconf() error\n"); ++ } ++ exit(1); ++ } ++ + if ((pid=fork()) != 0) + exit(0); + +- for (t = 0; t < OPEN_MAX; t++) ++ for (t = 0; t < open_max; t++) + if (t != s) + close(t); + From b2149510dff1f4d301d9352fceb51edb3c5c6c5f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:04:44 +0000 Subject: [PATCH 043/320] sysklogd: upgraded to 1.5 svn path=/nixpkgs/branches/stdenv-updates/; revision=9819 --- pkgs/os-specific/linux/sysklogd/builder.sh | 3 +- pkgs/os-specific/linux/sysklogd/default.nix | 7 +- .../linux/sysklogd/sysklogd-1.4.1-asm.patch | 12 - .../sysklogd-1.4.1-cvs-20050525-local.diff | 901 ------------------ 4 files changed, 5 insertions(+), 918 deletions(-) delete mode 100644 pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-asm.patch delete mode 100644 pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-cvs-20050525-local.diff diff --git a/pkgs/os-specific/linux/sysklogd/builder.sh b/pkgs/os-specific/linux/sysklogd/builder.sh index 9f2b8d9282c..62df45ea7c9 100644 --- a/pkgs/os-specific/linux/sysklogd/builder.sh +++ b/pkgs/os-specific/linux/sysklogd/builder.sh @@ -3,7 +3,8 @@ source $stdenv/setup prefix=$out export prefix -installFlags="BINDIR=$out/sbin MANDIR=$out/share/man" +installFlags="BINDIR=$out/sbin MANDIR=$out/share/man INSTALL=install" +patchPhase="sed -e 's@-o \${MAN_USER} -g \${MAN_GROUP} -m \${MAN_PERMS} @@' -i Makefile" ensureDir "$out/share/man/man8/" ensureDir "$out/share/man/man5/" diff --git a/pkgs/os-specific/linux/sysklogd/default.nix b/pkgs/os-specific/linux/sysklogd/default.nix index d991d7e653e..2fe27add5bf 100644 --- a/pkgs/os-specific/linux/sysklogd/default.nix +++ b/pkgs/os-specific/linux/sysklogd/default.nix @@ -1,11 +1,10 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "sysklogd-1.4.1"; + name = "sysklogd-1.5"; builder = ./builder.sh; src = fetchurl { - url = http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.4.1.tar.gz; - md5 = "d214aa40beabf7bdb0c9b3c64432c774"; + url = http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.tar.gz; + sha256 = "0wxpkrznqwz4dy11k90s2sqszwp7d4mlc0ag8288wa193plvhsb1"; }; - patches = [./sysklogd-1.4.1-cvs-20050525-local.diff ./sysklogd-1.4.1-asm.patch]; } diff --git a/pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-asm.patch b/pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-asm.patch deleted file mode 100644 index a66bf70542b..00000000000 --- a/pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-asm.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ruN sysklogd-1.4.1/module.h sysklogd-1.4.1.new/module.h ---- sysklogd-1.4.1/module.h 2005-09-28 15:53:58.000000000 +0200 -+++ sysklogd-1.4.1.new/module.h 2005-09-28 15:54:56.000000000 +0200 -@@ -28,7 +28,7 @@ - * recent content from Linux 2.4/2.6. - */ - --#include -+/* #include */ - - #define MODULE_NAME_LEN 60 - diff --git a/pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-cvs-20050525-local.diff b/pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-cvs-20050525-local.diff deleted file mode 100644 index 5f36fc5e535..00000000000 --- a/pkgs/os-specific/linux/sysklogd/sysklogd-1.4.1-cvs-20050525-local.diff +++ /dev/null @@ -1,901 +0,0 @@ -diff -ruN sysklogd-1.4.1/CHANGES sysklogd-1.4.1.new/CHANGES ---- sysklogd-1.4.1/CHANGES 2001-03-11 20:35:51.000000000 +0100 -+++ sysklogd-1.4.1.new/CHANGES 2006-03-14 16:22:13.000000000 +0100 -@@ -1,3 +1,42 @@ -+Version 1.4.2 -+ -+ . Dmitry V. Levin -+ - Close file descriptor in FindSymbolFile() in ksym.c in order not to -+ leak file descriptors. -+ . Solar Designer -+ - improve crunch_list() -+ - Prevent potential buffer overflow in reading messages from the -+ kernel log ringbuffer. -+ - Ensure that "len" is not placed in a register, and that the -+ endtty() signal handler is not installed too early which could -+ cause a segmentation fault or worse. -+ . Steve Grubb -+ - fix memory calculation in crunch_list() -+ . Martin Schulze -+ - klogd will reconnect to the logger (mostly syslogd) after it went -+ away -+ - On heavily loaded system syslog will not spit out error messages -+ anymore when recvfrom() results in EAGAIN -+ - Makefile improvements -+ - Local copy of module.h -+ - Improved sysklogd.8 -+ - Always log with syslogd's timezone and locale -+ - Remove trailing newline when forwarding messages -+ . Jon Burgess -+ - Moved the installation of the signal handler up a little bit so it -+ guaranteed to be available when the child is forked, hence, fixing a -+ race condition. This used to create problems with UML and fast -+ machines. -+ . Greg Trounson -+ - Improved README.linux -+ . Ulf Härnhammar -+ - Bondary check for fscanf() in InitKsyms() and CheckMapVersion() -+ . Colin Phipps -+ - Don't block on the network socket in case of package los -+ . Dirk Mueller -+ - Don't crash when filesize limit is reached (e.g. without LFS) -+ -+ - Version 1.4.1 - - . klogd will set the console log level only if `-c' is given on the -@@ -30,3 +69,9 @@ - . Olaf Kirch - - Remove Unix Domain Sockets and switch to Datagram Unix Sockets - . Several bugfixes and improvements, please refer to the .c files -+ -+ -+Local variables: -+mode: indented-text -+fill-column: 72 -+End: -diff -ruN sysklogd-1.4.1/klogd.8 sysklogd-1.4.1.new/klogd.8 ---- sysklogd-1.4.1/klogd.8 2001-03-11 20:35:51.000000000 +0100 -+++ sysklogd-1.4.1.new/klogd.8 2006-03-14 16:22:13.000000000 +0100 -@@ -3,8 +3,9 @@ - .\" Sun Jul 30 01:35:55 MET: Martin Schulze: Updates - .\" Sun Nov 19 23:22:21 MET: Martin Schulze: Updates - .\" Mon Aug 19 09:42:08 CDT 1996: Dr. G.W. Wettstein: Updates -+.\" Fri Mar 11 17:11:46 CET 2005: Martin Schulze: sysctl updates - .\" --.TH KLOGD 8 "21 August, 1999" "Version 1.4" "Linux System Administration" -+.TH KLOGD 8 "11 March 2005" "Version 1.4" "Linux System Administration" - .SH NAME - klogd \- Kernel Log Daemon - .LP -@@ -38,6 +39,12 @@ - .TP - .BI "\-c " n - Sets the default log level of console messages to \fIn\fR. -+This should nowardays be configured with the -+.BR sysctl (8) -+program, e.g. via -+.BI "sysctl kernel.printk=" n -+or via -+.IR /etc/sysctl.conf . - .TP - .B "\-d" - Enable debugging mode. This will generate \fBLOTS\fR of output to -@@ -321,7 +328,7 @@ - .B klogd - to reload the module symbol information whenever a protection fault - is detected. Caution should be used before invoking the program in --\'paranoid\' mode. The stability of the kernel and the operating -+\&'paranoid\&' mode. The stability of the kernel and the operating - environment is always under question when a protection fault occurs. - Since the klogd daemon must execute system calls in order to read the - module symbol information there is the possibility that the system may -diff -ruN sysklogd-1.4.1/klogd.c sysklogd-1.4.1.new/klogd.c ---- sysklogd-1.4.1/klogd.c 2001-03-11 20:40:10.000000000 +0100 -+++ sysklogd-1.4.1.new/klogd.c 2006-03-14 16:22:13.000000000 +0100 -@@ -243,6 +243,9 @@ - * people have submitted patches: Troels Walsted Hansen - * , Wolfgang Oertl - * and Thomas Roessler. -+ * Thu Apr 29 15:24:07 2004: Solar Designer -+ * Prevent potential buffer overflow in reading messages from the -+ * kernel log rinbuffer. - */ - - -@@ -938,7 +941,7 @@ - * messages into this fresh buffer. - */ - memset(log_buffer, '\0', sizeof(log_buffer)); -- if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer))) < 0 ) -+ if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer)-1)) < 0 ) - { - if ( errno == EINTR ) - return; -diff -ruN sysklogd-1.4.1/ksym.c sysklogd-1.4.1.new/ksym.c ---- sysklogd-1.4.1/ksym.c 2000-09-12 23:53:31.000000000 +0200 -+++ sysklogd-1.4.1.new/ksym.c 2006-03-14 16:22:13.000000000 +0100 -@@ -105,6 +105,15 @@ - * - * Tue Sep 12 23:48:12 CEST 2000: Martin Schulze - * Close symbol file in InitKsyms() when an error occurred. -+ * -+ * Thu Apr 29 18:07:16 CEST 2004: Dmitry Levin -+ * Close file descriptor in FindSymbolFile() in order not to leak -+ * file descriptors. -+ * -+ * Fri Jul 16 08:32:49 CEST 2004: Ulf Härnhammar -+ * Added boundary check for fscanf() in InitKsyms() and -+ * CheckMapVersion() to prevent an unintended crash when reading -+ * an incorrect System.map. - */ - - -@@ -236,7 +245,7 @@ - */ - while ( !feof(sym_file) ) - { -- if ( fscanf(sym_file, "%lx %c %s\n", &address, &type, sym) -+ if ( fscanf(sym_file, "%lx %c %511s\n", &address, &type, sym) - != 3 ) - { - Syslog(LOG_ERR, "Error in symbol table input (#1)."); -@@ -344,6 +353,7 @@ - if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) { - if (CheckMapVersion(symfile) == 1) - file = symfile; -+ fclose (sym_file); - } - if (sym_file == (FILE *) 0 || file == (char *) 0) { - sprintf (symfile, "%s", *mf); -@@ -352,6 +362,7 @@ - if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) { - if (CheckMapVersion(symfile) == 1) - file = symfile; -+ fclose (sym_file); - } - } - -@@ -533,7 +544,7 @@ - version = 0; - while ( !feof(sym_file) && (version == 0) ) - { -- if ( fscanf(sym_file, "%lx %c %s\n", &address, \ -+ if ( fscanf(sym_file, "%lx %c %511s\n", &address, \ - &type, sym) != 3 ) - { - Syslog(LOG_ERR, "Error in symbol table input (#2)."); -@@ -899,3 +910,11 @@ - return; - } - #endif -+ -+/* -+ * Local variables: -+ * c-indent-level: 8 -+ * c-basic-offset: 8 -+ * tab-width: 8 -+ * End: -+ */ -diff -ruN sysklogd-1.4.1/ksym_mod.c sysklogd-1.4.1.new/ksym_mod.c ---- sysklogd-1.4.1/ksym_mod.c 2000-09-12 23:15:28.000000000 +0200 -+++ sysklogd-1.4.1.new/ksym_mod.c 2006-03-14 16:22:13.000000000 +0100 -@@ -78,6 +78,11 @@ - * - * Tue Sep 12 23:11:13 CEST 2000: Martin Schulze - * Changed llseek() to lseek64() in order to skip a libc warning. -+ * -+ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze -+ * Removed references to since it doesn't work -+ * anymore with its recent content from Linux 2.4/2.6, created -+ * module.h locally instead. - */ - - -@@ -89,11 +94,12 @@ - #include - #include - #include -+#include "module.h" - #if !defined(__GLIBC__) - #include --#include -+#include - #else /* __GLIBC__ */ --#include -+#include - extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence)); - extern int get_kernel_syms __P ((struct kernel_sym *__table)); - #endif /* __GLIBC__ */ -@@ -107,7 +113,7 @@ - - #if !defined(__GLIBC__) - /* -- * The following bit uses some kernel/library magic to product what -+ * The following bit uses some kernel/library magic to produce what - * looks like a function call to user level code. This function is - * actually a system call in disguise. The purpose of the getsyms - * call is to return a current copy of the in-kernel symbol table. -diff -ruN sysklogd-1.4.1/Makefile sysklogd-1.4.1.new/Makefile ---- sysklogd-1.4.1/Makefile 1998-10-12 22:25:15.000000000 +0200 -+++ sysklogd-1.4.1.new/Makefile 2006-03-14 16:22:41.000000000 +0100 -@@ -4,12 +4,15 @@ - #CFLAGS= -g -DSYSV -Wall - #LDFLAGS= -g - CFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce -+# -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE - LDFLAGS= -s - - # Look where your install program is. --INSTALL = /usr/bin/install --BINDIR = /usr/sbin --MANDIR = /usr/man -+INSTALL = install -+ -+# Destination paths, set prefix=/opt if required -+BINDIR = $(prefix)/usr/sbin -+MANDIR = $(prefix)/usr/share/man - - # There is one report that under an all ELF system there may be a need to - # explicilty link with libresolv.a. If linking syslogd fails you may wish -@@ -34,8 +37,9 @@ - # The following define establishes ownership for the man pages. - # Avery tells me that there is a difference between Debian and - # Slackware. Rather than choose sides I am leaving it up to the user. --MAN_OWNER = root --# MAN_OWNER = man -+MAN_USER = root -+MAN_GROUP = root -+MAN_PERMS = 644 - - # The following define establishes the name of the pid file for the - # syslogd daemon. The library include file (paths.h) defines the -@@ -116,7 +120,7 @@ - ${INSTALL} -m 500 -s klogd ${BINDIR}/klogd - - install_man: -- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 sysklogd.8 ${MANDIR}/man8/sysklogd.8 -- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslogd.8 ${MANDIR}/man8/syslogd.8 -- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslog.conf.5 ${MANDIR}/man5/syslog.conf.5 -- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 klogd.8 ${MANDIR}/man8/klogd.8 -+ ${INSTALL} -m ${MAN_PERMS} sysklogd.8 ${MANDIR}/man8/sysklogd.8 -+ ${INSTALL} -m ${MAN_PERMS} syslogd.8 ${MANDIR}/man8/syslogd.8 -+ ${INSTALL} -m ${MAN_PERMS} syslog.conf.5 ${MANDIR}/man5/syslog.conf.5 -+ ${INSTALL} -m ${MAN_PERMS} klogd.8 ${MANDIR}/man8/klogd.8 -diff -ruN sysklogd-1.4.1/module.h sysklogd-1.4.1.new/module.h ---- sysklogd-1.4.1/module.h 1970-01-01 01:00:00.000000000 +0100 -+++ sysklogd-1.4.1.new/module.h 2006-03-14 16:22:13.000000000 +0100 -@@ -0,0 +1,90 @@ -+/* -+ module.h - Miscellaneous module definitions -+ Copyright (c) 1996 Richard Henderson -+ Copyright (c) 2004 Martin Schulze -+ -+ This file is part of the sysklogd package. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+*/ -+ -+/* ChangeLog: -+ * -+ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze -+ * Created local copy of module.h based on the content of Linux -+ * 2.2 since doesn't work anymore with its -+ * recent content from Linux 2.4/2.6. -+ */ -+ -+#include -+ -+#define MODULE_NAME_LEN 60 -+ -+struct kernel_sym -+{ -+ unsigned long value; -+ char name[MODULE_NAME_LEN]; -+}; -+ -+ -+struct list_head { -+ struct list_head *next, *prev; -+}; -+ -+ -+struct module_info -+{ -+ unsigned long addr; -+ unsigned long size; -+ unsigned long flags; -+ long usecount; -+}; -+ -+ -+struct module -+{ -+ unsigned long size_of_struct; /* == sizeof(module) */ -+ struct module *next; -+ const char *name; -+ unsigned long size; -+ -+ union -+ { -+ int usecount; -+ long pad; -+ } uc; /* Needs to keep its size - so says rth */ -+ -+ unsigned long flags; /* AUTOCLEAN et al */ -+ -+ unsigned nsyms; -+ unsigned ndeps; -+ -+ struct module_symbol *syms; -+ struct module_ref *deps; -+ struct module_ref *refs; -+ int (*init)(void); -+ void (*cleanup)(void); -+ const struct exception_table_entry *ex_table_start; -+ const struct exception_table_entry *ex_table_end; -+#ifdef __alpha__ -+ unsigned long gp; -+#endif -+ /* Members past this point are extensions to the basic -+ module support and are optional. Use mod_opt_member() -+ to examine them. */ -+ const struct module_persist *persist_start; -+ const struct module_persist *persist_end; -+ int (*can_unload)(void); -+}; -diff -ruN sysklogd-1.4.1/pidfile.c sysklogd-1.4.1.new/pidfile.c ---- sysklogd-1.4.1/pidfile.c 1998-02-10 23:37:12.000000000 +0100 -+++ sysklogd-1.4.1.new/pidfile.c 2006-03-14 16:22:13.000000000 +0100 -@@ -87,7 +87,7 @@ - int fd; - int pid; - -- if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1) -+ if ( ((fd = open(pidfile, O_RDWR|O_CREAT|O_TRUNC, 0644)) == -1) - || ((f = fdopen(fd, "r+")) == NULL) ) { - fprintf(stderr, "Can't open or create %s.\n", pidfile); - return 0; -diff -ruN sysklogd-1.4.1/README.1st sysklogd-1.4.1.new/README.1st ---- sysklogd-1.4.1/README.1st 1997-06-02 19:21:39.000000000 +0200 -+++ sysklogd-1.4.1.new/README.1st 2006-03-14 16:22:13.000000000 +0100 -@@ -1,5 +1,5 @@ --Very important information before using version 1.3 ----------------------------------------------------- -+Important information -+--------------------- - - The included version of syslogd behaves in a slightly different manner - to the one in former releases. Please review the following important -@@ -63,3 +63,10 @@ - these scripts should remove all old .pid files found in /var/run. - This will insure that klogd and syslogd start properly even if prior - executions have been terminated harshly. -+ -+* Large file support, i.e. support to write to log files that are -+ larger than 2 GB is not part of syslogd, but a matter of the Glibc -+ emitting different system calls to the kernel interface. To support -+ large files you'll have to compile syslogd with the compiler defines -+ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE so that glibc adjusts the -+ system calls. -diff -ruN sysklogd-1.4.1/README.linux sysklogd-1.4.1.new/README.linux ---- sysklogd-1.4.1/README.linux 1999-01-19 01:09:12.000000000 +0100 -+++ sysklogd-1.4.1.new/README.linux 2006-03-14 16:22:13.000000000 +0100 -@@ -40,12 +40,17 @@ - a useful addition to the software gene pool. - - There is a mailing list covering this package and syslog in general. --The lists address is sysklogd@Infodrom.North.DE . To subscribe send a --mail to Majordomo@Infodrom.North.DE with a line "subscribe sysklogd" -+The lists address is infodrom-sysklogd@lists.infodrom.org . To subscribe send a -+mail to majordomo@lists.infodrom.org with a line "subscribe infodrom-sysklogd" - in the message body. - --New versions of this package will be available at Joey's ftp server. --ftp://ftp.infodrom.north.de/pub/people/joey/sysklogd/ -+A second mailing list exists as infodrom-sysklogd-cvs@lists.infodrom.org. Only -+CVS messages and diffs are distributed there. Whenever new code is added to -+sysklogd, CVS generates a mail from these changes which will be sent to -+this list. Discussions will take place on the first list. -+ -+The latest version of this software can be found at: -+http://www.infodrom.org/projects/sysklogd/download.php3 - - Best regards, - -@@ -67,6 +72,6 @@ - - Martin Schulze - Infodrom Oldenburg --joey@linux.de -+joey@infodrom.org - --And a host of bug reporters whose contributions cannot be underestimated. -+And a number of bug reporters whose contributions cannot be underestimated. -diff -ruN sysklogd-1.4.1/sysklogd.8 sysklogd-1.4.1.new/sysklogd.8 ---- sysklogd-1.4.1/sysklogd.8 2001-03-11 20:35:51.000000000 +0100 -+++ sysklogd-1.4.1.new/sysklogd.8 2006-03-14 16:22:13.000000000 +0100 -@@ -84,7 +84,7 @@ - .B MAXFUNIX - within the syslogd.c source file. An example for a chroot() daemon is - described by the people from OpenBSD at --http://www.psionic.com/papers/dns.html. -+. - .TP - .B "\-d" - Turns on debug mode. Using this the daemon will not proceed a -@@ -117,7 +117,8 @@ - between two \fI-- MARK --\fR lines is 20 minutes. This can be changed - with this option. Setting the - .I interval --to zero turns it off entirely. -+to zero turns it off entirely. Depending on other log messages -+generated these lines may not be written consecutively. - .TP - .B "\-n" - Avoid auto-backgrounding. This is needed especially if the -@@ -364,8 +365,10 @@ - - To avoid this in further times no messages that were received from a - remote host are sent out to another (or the same) remote host --anymore. If there are scenarios where this doesn't make sense, please --drop me (Joey) a line. -+anymore. If you experience are setup in which this doesn't make -+sense, please use the -+.B \-h -+commandline switch. - - If the remote host is located in the same domain as the host, - .B syslogd -diff -ruN sysklogd-1.4.1/syslog.c sysklogd-1.4.1.new/syslog.c ---- sysklogd-1.4.1/syslog.c 2001-03-11 20:35:51.000000000 +0100 -+++ sysklogd-1.4.1.new/syslog.c 2006-03-14 16:22:13.000000000 +0100 -@@ -47,6 +47,9 @@ - * Sun Mar 11 20:23:44 CET 2001: Martin Schulze - * Use SOCK_DGRAM for loggin, renables it to work. - * -+ * Wed Aug 27 17:48:16 CEST 2003: Martin Schulze -+ * Improved patch by Michael Pomraning to -+ * reconnect klogd to the logger after it went away. - */ - - #include -@@ -98,6 +101,7 @@ - register char *p; - time_t now; - int fd, saved_errno; -+ int result; - char tbuf[2048], fmt_cpy[1024], *stdp = (char *) 0; - - saved_errno = errno; -@@ -167,7 +171,16 @@ - } - - /* output the message to the local logger */ -- if (write(LogFile, tbuf, cnt + 1) >= 0 || !(LogStat&LOG_CONS)) -+ result = write(LogFile, tbuf, cnt + 1); -+ -+ if (result == -1 -+ && (errno == ECONNRESET || errno == ENOTCONN || errno == ECONNREFUSED)) { -+ closelog(); -+ openlog(LogTag, LogStat | LOG_NDELAY, LogFacility); -+ result = write(LogFile, tbuf, cnt + 1); -+ } -+ -+ if (result >= 0 || !(LogStat&LOG_CONS)) - return; - - /* -diff -ruN sysklogd-1.4.1/syslog.conf.5 sysklogd-1.4.1.new/syslog.conf.5 ---- sysklogd-1.4.1/syslog.conf.5 1999-08-21 12:49:14.000000000 +0200 -+++ sysklogd-1.4.1.new/syslog.conf.5 2006-03-14 16:22:13.000000000 +0100 -@@ -64,7 +64,7 @@ - The - .I facility - is one of the following keywords: --.BR auth ", " authpriv ", " cron ", " daemon ", " kern ", " lpr ", " -+.BR auth ", " authpriv ", " cron ", " daemon ", " ftp ", " kern ", " lpr ", " - .BR mail ", " mark ", " news ", " security " (same as " auth "), " - .BR syslog ", " user ", " uucp " and " local0 " through " local7 . - The keyword -@@ -121,12 +121,21 @@ - - This - .BR syslogd (8) --has a syntax extension to the original BSD source, that makes its use -+has a syntax extension to the original BSD source, which makes its use - more intuitively. You may precede every priority with an equation sign --(``='') to specify only this single priority and not any of the --above. You may also (both is valid, too) precede the priority with an --exclamation mark (``!'') to ignore all that priorities, either exact --this one or this and any higher priority. If you use both extensions -+(``='') to specify that -+.B syslogd -+should only refer to this single priority and not this priority and -+all higher priorities. -+ -+You may also precide the priority with an exclamation mark (``!'') if -+you want -+.B syslogd -+to ignore this priority and all higher priorities. -+You may even use both, the exclamation mark and the equation sign if -+you want -+.B syslogd -+to ignore only this single priority. If you use both extensions - than the exclamation mark must occur before the equation sign, just - use it intuitively. - -@@ -300,7 +309,7 @@ - .B syslogd - log all messages that come with either the - .BR info " or the " notice --facility into the file -+priority into the file - .IR /var/log/messages , - except for all messages that use the - .B mail -diff -ruN sysklogd-1.4.1/syslogd.c sysklogd-1.4.1.new/syslogd.c ---- sysklogd-1.4.1/syslogd.c 2001-03-11 20:40:10.000000000 +0100 -+++ sysklogd-1.4.1.new/syslogd.c 2006-03-14 16:22:13.000000000 +0100 -@@ -441,6 +441,39 @@ - * Don't return a closed fd if `-a' is called with a wrong path. - * Thanks to Bill Nottingham for providing - * a patch. -+ * Thu Apr 13 05:08:10 CEST 2001: Jon Burgess -+ * Moved the installation of the signal handler up a little bit -+ * so it guaranteed to be available when the child is forked, -+ * hence, fixing a race condition. This used to create problems -+ * with UML and fast machines. -+ * -+ * Sat Apr 17 18:03:05 CEST 2004: Steve Grubb -+ * Correct memory allocation for for commandline arguments in -+ * crunch_list(). -+ * -+ * Thu Apr 29 12:38:39 CEST 2004: Solar Designer -+ * Applied Openwall paranoia patches to improve crunch_list(). -+ * -+ * Tue May 4 16:47:30 CEST 2004: Solar Designer -+ * Ensure that "len" is not placed in a register, and that the -+ * endtty() signal handler is not installed too early which could -+ * cause a segmentation fault or worse. -+ * -+ * Tue May 4 16:52:01 CEST 2004: Solar Designer -+ * Adjust the size of a variable to prevent a buffer overflow -+ * should _PATH_DEV ever contain something different than "/dev/". -+ * -+ * Tue Nov 2 20:28:23 CET 2004: Colin Phipps -+ * Don't block on the network socket, in case a packet gets lost -+ * between select and recv. -+ * -+ * Sun Nov 7 12:28:47 CET 2004: Martin Schulze -+ * Discard any timestamp information found in received syslog -+ * messages. This will affect local messages sent from a -+ * different timezone. -+ * -+ * Sun Nov 7 13:47:00 CET 2004: Martin Schulze -+ * Remove trailing newline when forwarding messages. - */ - - -@@ -890,11 +923,11 @@ - dprintf("Checking pidfile.\n"); - if (!check_pid(PidFile)) - { -+ signal (SIGTERM, doexit); - if (fork()) { - /* - * Parent process - */ -- signal (SIGTERM, doexit); - sleep(300); - /* - * Not reached unless something major went wrong. 5 -@@ -992,6 +1025,7 @@ - (void) signal(SIGCHLD, reapchild); - (void) signal(SIGALRM, domark); - (void) signal(SIGUSR1, Debug ? debug_switch : SIG_IGN); -+ (void) signal(SIGXFSZ, SIG_IGN); - (void) alarm(TIMERINTVL); - - /* Create a partial message table for all file descriptors. */ -@@ -1141,13 +1175,13 @@ - */ - printchopped(from, line, \ - i + 2, finet); -- } else if (i < 0 && errno != EINTR) { -+ } else if (i < 0 && errno != EINTR && errno != EAGAIN) { - dprintf("INET socket error: %d = %s.\n", \ - errno, strerror(errno)); - logerror("recvfrom inet"); - /* should be harmless now that we set - * BSDCOMPAT on the socket */ -- sleep(10); -+ sleep(1); - } - } - #endif -@@ -1216,6 +1250,7 @@ - { - int fd, on = 1; - struct sockaddr_in sin; -+ int sockflags; - - fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd < 0) { -@@ -1241,6 +1276,24 @@ - close(fd); - return -1; - } -+ /* We must not block on the network socket, in case a packet -+ * gets lost between select and recv, otherise the process -+ * will stall until the timeout, and other processes trying to -+ * log will also stall. -+ */ -+ if ((sockflags = fcntl(fd, F_GETFL)) != -1) { -+ sockflags |= O_NONBLOCK; -+ /* -+ * SETFL could fail too, so get it caught by the subsequent -+ * error check. -+ */ -+ sockflags = fcntl(fd, F_SETFL, sockflags); -+ } -+ if (sockflags == -1) { -+ logerror("fcntl(O_NONBLOCK), suspending inet"); -+ close(fd); -+ return -1; -+ } - if (bind(fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) { - logerror("bind, suspending inet"); - close(fd); -@@ -1254,30 +1307,26 @@ - crunch_list(list) - char *list; - { -- int count, i; -+ int i, m, n; - char *p, *q; - char **result = NULL; - - p = list; - - /* strip off trailing delimiters */ -- while (p[strlen(p)-1] == LIST_DELIMITER) { -- count--; -+ while (*p && p[strlen(p)-1] == LIST_DELIMITER) - p[strlen(p)-1] = '\0'; -- } - /* cut off leading delimiters */ -- while (p[0] == LIST_DELIMITER) { -- count--; -+ while (p[0] == LIST_DELIMITER) - p++; -- } - -- /* count delimiters to calculate elements */ -- for (count=i=0; p[i]; i++) -- if (p[i] == LIST_DELIMITER) count++; -+ /* count delimiters to calculate the number of elements */ -+ for (n = i = 0; p[i]; i++) -+ if (p[i] == LIST_DELIMITER) n++; - -- if ((result = (char **)malloc(sizeof(char *) * count+2)) == NULL) { -+ if ((result = (char **)malloc(sizeof(char *) * (n + 2))) == NULL) { - printf ("Sorry, can't get enough memory, exiting.\n"); -- exit(0); -+ exit(1); - } - - /* -@@ -1285,30 +1334,28 @@ - * characters are different from any delimiters, - * so we don't have to care about this. - */ -- count = 0; -- while ((q=strchr(p, LIST_DELIMITER))) { -- result[count] = (char *) malloc((q - p + 1) * sizeof(char)); -- if (result[count] == NULL) { -+ m = 0; -+ while ((q = strchr(p, LIST_DELIMITER)) && m < n) { -+ result[m] = (char *) malloc((q - p + 1) * sizeof(char)); -+ if (result[m] == NULL) { - printf ("Sorry, can't get enough memory, exiting.\n"); -- exit(0); -+ exit(1); - } -- strncpy(result[count], p, q - p); -- result[count][q - p] = '\0'; -+ memcpy(result[m], p, q - p); -+ result[m][q - p] = '\0'; - p = q; p++; -- count++; -+ m++; - } -- if ((result[count] = \ -- (char *)malloc(sizeof(char) * strlen(p) + 1)) == NULL) { -+ if ((result[m] = strdup(p)) == NULL) { - printf ("Sorry, can't get enough memory, exiting.\n"); -- exit(0); -+ exit(1); - } -- strcpy(result[count],p); -- result[++count] = NULL; -+ result[++m] = NULL; - - #if 0 -- count=0; -- while (result[count]) -- dprintf ("#%d: %s\n", count, StripDomains[count++]); -+ m = 0; -+ while (result[m]) -+ dprintf ("#%d: %s\n", m, result[m++]); - #endif - return result; - } -@@ -1539,30 +1586,48 @@ - int fac, prilev, lognum; - int msglen; - char *timestamp; -+#ifdef __gnu_linux__ -+ sigset_t mask; -+#else -+#ifndef SYSV -+ sigset_t omask; -+#endif -+#endif - - dprintf("logmsg: %s, flags %x, from %s, msg %s\n", textpri(pri), flags, from, msg); - -+#ifdef __gnu_linux__ -+ sigemptyset(&mask); -+ sigaddset(&mask, SIGHUP); -+ sigaddset(&mask, SIGALRM); -+ sigprocmask(SIG_BLOCK, &mask, NULL); -+#else - #ifndef SYSV - omask = sigblock(sigmask(SIGHUP)|sigmask(SIGALRM)); - #endif -+#endif - - /* - * Check to see if msg looks non-standard. -+ * -+ * A message looks like -+ * Nov 17 11:42:33 CRON[ -+ * 01234567890123456 -+ * ^ ^ ^ ^ ^ -+ * -+ * Remote messages are not accompanied by a timestamp. -+ * Local messages are accompanied by a timestamp (program's timezone) - */ - msglen = strlen(msg); -- if (msglen < 16 || msg[3] != ' ' || msg[6] != ' ' || -- msg[9] != ':' || msg[12] != ':' || msg[15] != ' ') -- flags |= ADDDATE; -- -- (void) time(&now); -- if (flags & ADDDATE) -- timestamp = ctime(&now) + 4; -- else { -- timestamp = msg; -+ if (!(msglen < 16 || msg[3] != ' ' || msg[6] != ' ' || -+ msg[9] != ':' || msg[12] != ':' || msg[15] != ' ')) { - msg += 16; - msglen -= 16; - } - -+ (void) time(&now); -+ timestamp = ctime(&now) + 4; -+ - /* extract facility and priority level */ - if (flags & MARK) - fac = LOG_NFACILITIES; -@@ -1581,9 +1646,13 @@ - (void) close(f->f_file); - f->f_file = -1; - } -+#ifdef __gnu_linux__ -+ sigprocmask(SIG_UNBLOCK, &mask, NULL); -+#else - #ifndef SYSV - (void) sigsetmask(omask); - #endif -+#endif - return; - } - #ifdef SYSV -@@ -1646,9 +1715,13 @@ - } - } - } -+#ifdef __gnu_linux__ -+ sigprocmask(SIG_UNBLOCK, &mask, NULL); -+#else - #ifndef SYSV - (void) sigsetmask(omask); - #endif -+#endif - } - #if FALSE - } /* balance parentheses for emacs */ -@@ -1771,7 +1844,7 @@ - dprintf("Not sending message to remote.\n"); - else { - f->f_time = now; -- (void) snprintf(line, sizeof(line), "<%d>%s\n", f->f_prevpri, \ -+ (void) snprintf(line, sizeof(line), "<%d>%s", f->f_prevpri, \ - (char *) iov[4].iov_base); - l = strlen(line); - if (l > MAXLINE) -@@ -1815,7 +1888,7 @@ - v->iov_len = 1; - } - again: -- /* f->f_file == -1 is an indicator that the we couldn't -+ /* f->f_file == -1 is an indicator that we couldn't - open the file at startup. */ - if (f->f_file == -1) - break; -@@ -1852,7 +1925,7 @@ - errno = e; - logerror(f->f_un.f_fname); - } -- } else if (f->f_flags & SYNC_FILE) -+ } else if (f->f_type == F_FILE && (f->f_flags & SYNC_FILE)) - (void) fsync(f->f_file); - break; - -@@ -1891,7 +1964,7 @@ - register struct filed *f; - struct iovec *iov; - { -- char p[6 + UNAMESZ]; -+ char p[sizeof (_PATH_DEV) + UNAMESZ]; - register int i; - int ttyf, len; - static int reenter = 0; -@@ -1899,6 +1972,8 @@ - struct utmp *uptr; - char greetings[200]; - -+ (void) &len; -+ - if (reenter++) - return; - -@@ -1913,7 +1988,6 @@ - if (fork() == 0) { - (void) signal(SIGTERM, SIG_DFL); - (void) alarm(0); -- (void) signal(SIGALRM, endtty); - #ifndef SYSV - (void) signal(SIGTTOU, SIG_IGN); - (void) sigsetmask(0); -@@ -1929,7 +2003,7 @@ - /* is this slot used? */ - if (ut.ut_name[0] == '\0') - continue; -- if (ut.ut_type == LOGIN_PROCESS) -+ if (ut.ut_type != USER_PROCESS) - continue; - if (!(strcmp (ut.ut_name,"LOGIN"))) /* paranoia */ - continue; -@@ -1959,6 +2033,7 @@ - iov[1].iov_len = 0; - } - if (setjmp(ttybuf) == 0) { -+ (void) signal(SIGALRM, endtty); - (void) alarm(15); - /* open the terminal */ - ttyf = open(p, O_WRONLY|O_NOCTTY); From c4640d5f49760a791f91368e7c00fc118826e93b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:05:06 +0000 Subject: [PATCH 044/320] reiserfsprogs: headers-fix.patch added svn path=/nixpkgs/branches/stdenv-updates/; revision=9820 --- .../linux/reiserfsprogs/default.nix | 5 +++-- .../linux/reiserfsprogs/headers-fix.patch | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 pkgs/os-specific/linux/reiserfsprogs/headers-fix.patch diff --git a/pkgs/os-specific/linux/reiserfsprogs/default.nix b/pkgs/os-specific/linux/reiserfsprogs/default.nix index 49d018175d2..324ba28524c 100644 --- a/pkgs/os-specific/linux/reiserfsprogs/default.nix +++ b/pkgs/os-specific/linux/reiserfsprogs/default.nix @@ -7,9 +7,10 @@ stdenv.mkDerivation { sha256 = "1gv8gr0l5l2j52540y2wj9c9h7fn0r3vabykf95748ydmr9jr1n0"; }; + patches = [./headers-fix.patch]; + meta = { homepage=http://www.namesys.com/; - description="Reiserfs Utilities"; - license="GPL-2"; + }; } diff --git a/pkgs/os-specific/linux/reiserfsprogs/headers-fix.patch b/pkgs/os-specific/linux/reiserfsprogs/headers-fix.patch new file mode 100644 index 00000000000..2c6693dae75 --- /dev/null +++ b/pkgs/os-specific/linux/reiserfsprogs/headers-fix.patch @@ -0,0 +1,19 @@ +diff -pruN 1:3.6.19-4/include/reiserfs_fs.h 1:3.6.19-4ubuntu2/include/reiserfs_fs.h +--- 1:3.6.19-4/include/reiserfs_fs.h 2004-09-16 08:49:05.000000000 +0100 ++++ 1:3.6.19-4ubuntu2/include/reiserfs_fs.h 2006-12-14 18:08:28.000000000 +0000 +@@ -38,15 +38,10 @@ + # define extern_inline + #endif + +-#include +- + #ifndef get_unaligned +-#if defined(__ppc__) || defined(ppc) || defined(__ppc) || \ +- defined(__PPC) || defined(powerpc) || defined(__powerpc__) + # define get_unaligned(ptr) (*(ptr)) + # define put_unaligned(val,ptr) ((void)(*(ptr) = (val))) + #endif +-#endif + + #define get_leXX(xx,p,field) (le##xx##_to_cpu ((p)->field)) + #define set_leXX(xx,p,field,val) do { (p)->field = cpu_to_le##xx(val); } while (0) From 62676e09ebbc8608ae9fdf295406be9da9511a99 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:05:26 +0000 Subject: [PATCH 045/320] setup-hooks using addToSearchPath I've accidentially reverted setup-hooks while merging with trunk. Correcting it. svn path=/nixpkgs/branches/stdenv-updates/; revision=9821 --- pkgs/development/interpreters/perl/setup-hook.sh | 4 +--- .../interpreters/python/2.5/setup-hook.sh | 5 +---- .../development/interpreters/python/setup-hook.sh | 5 +---- .../tools/build-managers/cmake/setup-hook.sh | 15 ++++++++------- .../development/tools/misc/automake/setup-hook.sh | 4 +--- pkgs/development/tools/misc/pkgconfig/builder.sh | 10 ---------- pkgs/development/tools/misc/pkgconfig/default.nix | 8 ++++---- .../tools/misc/pkgconfig/setup-hook.sh | 4 +--- 8 files changed, 17 insertions(+), 38 deletions(-) delete mode 100644 pkgs/development/tools/misc/pkgconfig/builder.sh diff --git a/pkgs/development/interpreters/perl/setup-hook.sh b/pkgs/development/interpreters/perl/setup-hook.sh index 1f05581df97..6903bddd419 100644 --- a/pkgs/development/interpreters/perl/setup-hook.sh +++ b/pkgs/development/interpreters/perl/setup-hook.sh @@ -1,7 +1,5 @@ addPerlLibPath () { - if test -d $1/lib/site_perl; then - export PERL5LIB="${PERL5LIB}${PERL5LIB:+:}$1/lib/site_perl" - fi + addToSearchPath PERL5LIB /lib/site_perl "" $1 } envHooks=(${envHooks[@]} addPerlLibPath) diff --git a/pkgs/development/interpreters/python/2.5/setup-hook.sh b/pkgs/development/interpreters/python/2.5/setup-hook.sh index 11551235c1f..27ad6226030 100644 --- a/pkgs/development/interpreters/python/2.5/setup-hook.sh +++ b/pkgs/development/interpreters/python/2.5/setup-hook.sh @@ -1,8 +1,5 @@ addPythonPath() { - local p=$1/lib/python2.5/site-packages - if test -d $p; then - export PYTHONPATH="${PYTHONPATH}${PYTHONPATH:+:}$p" - fi + addToSearchPathWithCustomDelimiter : PYTHONPATH /lib/python2.5/site-packages "" $1 } toPythonPath() { diff --git a/pkgs/development/interpreters/python/setup-hook.sh b/pkgs/development/interpreters/python/setup-hook.sh index 3bc86c58229..58b8d1cab76 100644 --- a/pkgs/development/interpreters/python/setup-hook.sh +++ b/pkgs/development/interpreters/python/setup-hook.sh @@ -1,8 +1,5 @@ addPythonPath() { - local p=$1/lib/python2.4/site-packages - if test -d $p; then - export PYTHONPATH="${PYTHONPATH}${PYTHONPATH:+:}$p" - fi + addToSearchPathWithCustomDelimiter : PYTHONPATH /lib/python2.4/site-packages "" $1 } toPythonPath() { diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh index f65b09f88d4..4712ef2b648 100755 --- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh +++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh @@ -1,15 +1,16 @@ addCMakeParamsInclude() { - if [ -d $1/include ]; then - export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH}${CMAKE_INCLUDE_PATH:+:}$1/include" - fi + addToSearchPath CMAKE_INCLUDE_PATH /include "" $1 } addCMakeParamsLibs() { - if [ -d $1/lib ]; then - export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}${CMAKE_LIBRARY_PATH:+:}$1/lib" - fi + addToSearchPath CMAKE_LIBRARY_PATH /lib "" $1 +} + +addCMakeModulePath() +{ + addToSearchPath CMAKE_MODULE_PATH /share/cmake-2.4/Modules "" $1 } fixCmakeFiles() @@ -45,4 +46,4 @@ if [ -z "$noCmakeTewaks" ]; then postUnpack="cmakePostUnpack${postUnpack:+; }${postUnpack}" fi; -envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs) +envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs addCMakeModulePath) diff --git a/pkgs/development/tools/misc/automake/setup-hook.sh b/pkgs/development/tools/misc/automake/setup-hook.sh index 097b7b6cbe5..4489d343510 100644 --- a/pkgs/development/tools/misc/automake/setup-hook.sh +++ b/pkgs/development/tools/misc/automake/setup-hook.sh @@ -1,7 +1,5 @@ addAclocals () { - if test -d $1/share/aclocal; then - export ACLOCAL_PATH="$ACLOCAL_PATH${ACLOCAL_PATH:+:}$1/share/aclocal" - fi + addToSearchPathWithCustomDelimiter : ACLOCAL_PATH /share/aclocal "" $1 } envHooks=(${envHooks[@]} addAclocals) diff --git a/pkgs/development/tools/misc/pkgconfig/builder.sh b/pkgs/development/tools/misc/pkgconfig/builder.sh deleted file mode 100644 index 6d281da71e4..00000000000 --- a/pkgs/development/tools/misc/pkgconfig/builder.sh +++ /dev/null @@ -1,10 +0,0 @@ -source $stdenv/setup - -postInstall() { - test -x $out/nix-support || mkdir $out/nix-support - cp $setupHook $out/nix-support/setup-hook -} -postInstall=postInstall - -genericBuild - diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index be8c4febe03..41a61f600e0 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -1,12 +1,11 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "pkgconfig-0.21"; - builder = ./builder.sh; + name = "pkgconfig-0.22"; setupHook = ./setup-hook.sh; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/pkg-config-0.21.tar.gz; - md5 = "476f45fab1504aac6697aa7785f0ab91"; + url = http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz; + sha256 = "1rpb5wygmp0f8nal7y3ga4556i7hkjdslv3wdq04fj30gns621vy"; }; patches = [ @@ -19,3 +18,4 @@ stdenv.mkDerivation { }) ]; } + diff --git a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh index f9e7805ccbf..f13a44eb999 100644 --- a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh +++ b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh @@ -1,7 +1,5 @@ addPkgConfigPath () { - if test -d $1/lib/pkgconfig; then - export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$1/lib/pkgconfig" - fi + addToSearchPath PKG_CONFIG_PATH /lib/pkgconfig "" $1 } envHooks=(${envHooks[@]} addPkgConfigPath) From c116932a7ecabb39ddde12d6571d33365cfca0af Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:05:35 +0000 Subject: [PATCH 046/320] swig: upgrade to 1.3.33 svn path=/nixpkgs/branches/stdenv-updates/; revision=9822 --- pkgs/development/tools/misc/swig/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/misc/swig/default.nix b/pkgs/development/tools/misc/swig/default.nix index e8e77924b8c..ca6aa2d2fce 100644 --- a/pkgs/development/tools/misc/swig/default.nix +++ b/pkgs/development/tools/misc/swig/default.nix @@ -6,12 +6,12 @@ assert pythonSupport -> python != null; assert javaSupport -> jdk != null; stdenv.mkDerivation { - name = "swig-1.3.31"; + name = "swig-1.3.33"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/swig/swig-1.3.31.tar.gz; - sha256 = "01fqf6xvhaqh76kh13bknn5j7axpm1pdnjpzwxsa9d1lbq4n7bf2"; + url = "mirror://sourceforge/swig/swig-1.3.33.tar.gz"; + sha256 = "02rz31i642sbsngny7k98d9hxlkcb9snvbzlnz3sh0qiyr3ciggv"; }; inherit perlSupport pythonSupport javaSupport; From 95f5f51bae89dca29c0c33e1dd5a36237ff14a42 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:05:42 +0000 Subject: [PATCH 047/320] X.Org builder: always autoPropagate buildInputs svn path=/nixpkgs/branches/stdenv-updates/; revision=9823 --- pkgs/servers/x11/xorg/builder.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/servers/x11/xorg/builder.sh b/pkgs/servers/x11/xorg/builder.sh index 8bde2867e10..0a145cc0a6c 100644 --- a/pkgs/servers/x11/xorg/builder.sh +++ b/pkgs/servers/x11/xorg/builder.sh @@ -4,11 +4,13 @@ source $stdenv/setup # After installation, automatically add all "Requires" fields in the # pkgconfig files (*.pc) to the propagated build inputs. -origPostInstall=$postInstall -postInstall=postInstall -postInstall() { - if test -n "$origPostInstall"; then eval "$origPostInstall"; fi +if test -n "$postInstall"; then + postInstall="$postInstall; autoPropagateBuildInputs" +else + postInstall=autoPropagateBuildInputs +fi +autoPropagateBuildInputs() { local r p requires requires=$(grep "Requires:" $out/lib/pkgconfig/*.pc | \ sed "s/Requires://" | sed "s/,/ /g") From 216657f62ef53ce8cc8ee6e5a63bba91f4b4bf99 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:29:14 +0000 Subject: [PATCH 048/320] setup-hooks using addToSearchPath I've accidentially reverted setup-hooks while merging with trunk. Correcting it. svn path=/nixpkgs/branches/stdenv-updates/; revision=9824 --- pkgs/development/tools/misc/pkgconfig/default.nix | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index 41a61f600e0..b0bbc1cc513 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -7,15 +7,5 @@ stdenv.mkDerivation { url = http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz; sha256 = "1rpb5wygmp0f8nal7y3ga4556i7hkjdslv3wdq04fj30gns621vy"; }; - - patches = [ - # Process Requires.private properly, see - # http://bugs.freedesktop.org/show_bug.cgi?id=4738. - (fetchurl { - name = "pkgconfig-8494.patch"; - url = http://bugs.freedesktop.org/attachment.cgi?id=8494; - sha256 = "1pcrdbb7dypg2biy0yqc7bdxak5zii8agqljdvk7j4wbyghpqzws"; - }) - ]; } From aca855729f6d380ffc35a280f1d9fd4b2e89924b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:29:21 +0000 Subject: [PATCH 049/320] Configuration style of the kernel changed. The main goal is to remove code duplication. Some patches lost during this reorganizing. svn path=/nixpkgs/branches/stdenv-updates/; revision=9825 --- pkgs/os-specific/linux/kernel/2.6.20.nix | 37 + pkgs/os-specific/linux/kernel/2.6.21-ck.nix | 13 + pkgs/os-specific/linux/kernel/2.6.21.nix | 45 + pkgs/os-specific/linux/kernel/2.6.22-ck.nix | 13 + pkgs/os-specific/linux/kernel/2.6.22.nix | 28 + pkgs/os-specific/linux/kernel/2.6.23.1.nix | 41 + .../linux/kernel/config-2.6.23.1-i686-smp | 3756 +++++++++++++++++ pkgs/os-specific/linux/kernel/default.nix | 29 + .../os-specific/linux/kernel/linux-2.6.20.nix | 76 - .../os-specific/linux/kernel/linux-2.6.21.nix | 76 - .../os-specific/linux/kernel/linux-2.6.22.nix | 84 - .../kernel/{linux-2.6.23.nix => meta.nix} | 46 +- pkgs/top-level/all-packages.nix | 182 +- 13 files changed, 3975 insertions(+), 451 deletions(-) create mode 100644 pkgs/os-specific/linux/kernel/2.6.20.nix create mode 100644 pkgs/os-specific/linux/kernel/2.6.21-ck.nix create mode 100644 pkgs/os-specific/linux/kernel/2.6.21.nix create mode 100644 pkgs/os-specific/linux/kernel/2.6.22-ck.nix create mode 100644 pkgs/os-specific/linux/kernel/2.6.22.nix create mode 100644 pkgs/os-specific/linux/kernel/2.6.23.1.nix create mode 100644 pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp create mode 100644 pkgs/os-specific/linux/kernel/default.nix delete mode 100644 pkgs/os-specific/linux/kernel/linux-2.6.20.nix delete mode 100644 pkgs/os-specific/linux/kernel/linux-2.6.21.nix delete mode 100644 pkgs/os-specific/linux/kernel/linux-2.6.22.nix rename pkgs/os-specific/linux/kernel/{linux-2.6.23.nix => meta.nix} (50%) diff --git a/pkgs/os-specific/linux/kernel/2.6.20.nix b/pkgs/os-specific/linux/kernel/2.6.20.nix new file mode 100644 index 00000000000..4b776dcb706 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.20.nix @@ -0,0 +1,37 @@ +args: +(import ./meta.nix) +( args // + { + version = "2.6.20.12"; + src_hash = { sha256 = "1s7vdpg2897q5pcyxxypqcnibwpbdawbimkf3pngmahj8wr9c03x"; }; + + systemPatches = [ + { name = "paravirt-nvidia"; + patch = ./2.6.20-paravirt-nvidia.patch; + } + { name = "skas-2.6.20-v9-pre9"; + patch = args.fetchurl { + url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; + md5 = "02e619e5b3aaf0f9768f03ac42753e74"; + }; + extraConfig = + "CONFIG_PROC_MM=y\n" + + "# CONFIG_PROC_MM_DUMPABLE is not set\n"; + } + { name = "fbsplash-0.9.2-r5-2.6.20-rc6"; + patch = args.fetchurl { + url = http://dev.gentoo.org/~spock/projects/gensplash/archive/fbsplash-0.9.2-r5-2.6.20-rc6.patch; + sha256 = "11v4f85f4jnh9sbhqcyn47krb7l1czgzjw3w8wgbq14jm0sp9294"; + }; + extraConfig = "CONFIG_FB_SPLASH=y"; + } + ]; + + config = with args; + if kernelConfig != null then kernelConfig else + if userModeLinux then ./config-2.6.20-uml else + if stdenv.system == "i686-linux" then ./config-2.6.20-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.20-x86_64-smp else + abort "No kernel configuration for your platform!"; + } +) diff --git a/pkgs/os-specific/linux/kernel/2.6.21-ck.nix b/pkgs/os-specific/linux/kernel/2.6.21-ck.nix new file mode 100644 index 00000000000..6352d39edb1 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.21-ck.nix @@ -0,0 +1,13 @@ +args: +(import ./2.6.21.nix) +( args // + { + extraPatches = (if (args ? extraPatches) args.extraPatches else []) ++ + [ + { + name = "Con Kolivas Patch"; + patch = ./patch-2.6.21-ck1; + } + ]; + } +) diff --git a/pkgs/os-specific/linux/kernel/2.6.21.nix b/pkgs/os-specific/linux/kernel/2.6.21.nix new file mode 100644 index 00000000000..7005671bf2d --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.21.nix @@ -0,0 +1,45 @@ +args: +(import ./meta.nix) +( args // + { + version = "2.6.21.7"; + src_hash = { sha256 = "1c8ndsz35qd8vyng3xsxjjkjv5bnzyvc9b5vd85fz5v0bjp8hx50"; }; + + systemPatches = [ + { name = "ext3cow"; + patch = ./linux-2.6.21.7-ext3cow_wouter.patch; + extraConfig = + "CONFIG_EXT3COW_FS=m\n" + + "CONFIG_EXT3COW_FS_XATTR=y\n" + + "CONFIG_EXT3COW_FS_POSIX_ACL=y\n" + + "CONFIG_EXT3COW_FS_SECURITY=y\n"; + } + { name = "paravirt-nvidia"; + patch = ./2.6.20-paravirt-nvidia.patch; + } + { name = "skas-2.6.20-v9-pre9"; + patch = fetchurl { + url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; + md5 = "02e619e5b3aaf0f9768f03ac42753e74"; + }; + extraConfig = + "CONFIG_PROC_MM=y\n" + + "# CONFIG_PROC_MM_DUMPABLE is not set\n"; + } + { name = "fbsplash-0.9.2-r5-2.6.21"; + patch = fetchurl { + url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.21/4200_fbsplash-0.9.2-r5.patch; + sha256 = "00s8074fzsly2zpir885zqkvq267qyzg6vhsn7n1z2v1z78avxd8"; + }; + extraConfig = "CONFIG_FB_SPLASH=y"; + } + ]; + + config = with args; + if kernelConfig != null then kernelConfig else + if userModeLinux then ./config-2.6.21-uml else + if stdenv.system == "i686-linux" then ./config-2.6.21-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.21-x86_64-smp else + abort "No kernel configuration for your platform!"; + } +) diff --git a/pkgs/os-specific/linux/kernel/2.6.22-ck.nix b/pkgs/os-specific/linux/kernel/2.6.22-ck.nix new file mode 100644 index 00000000000..75352da8dbc --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.22-ck.nix @@ -0,0 +1,13 @@ +args: +(import ./2.6.22.nix) +( args // + { + extraPatches = (if (args ? extraPatches) args.extraPatches else []) ++ + [ + { + name = "Con Kolivas Patch"; + patch = ./patch-2.6.21-ck1; + } + ]; + } +) diff --git a/pkgs/os-specific/linux/kernel/2.6.22.nix b/pkgs/os-specific/linux/kernel/2.6.22.nix new file mode 100644 index 00000000000..43cbc485251 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.22.nix @@ -0,0 +1,28 @@ +args: +(import ./meta.nix) +( args // + { + version = "2.6.22.10"; + src_hash = { sha256 = "0kh196qzm54mvnbrdr9s2q86l9yn2321gnsl5xq44ai2idqp044g"; }; + + systemPatches = [ + { name = "paravirt-nvidia"; + patch = ../os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch; + } + { name = "fbsplash-0.9.2-r5-2.6.21"; + patch = fetchurl { + url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; + sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px"; + }; + extraConfig = "CONFIG_FB_SPLASH=y"; + } + ]; + + config = with args; + if kernelConfig != null then kernelConfig else + if userModeLinux then ./config-2.6.22-uml else + if stdenv.system == "i686-linux" then ./config-2.6.22-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.22-x86_64-smp else + abort "No kernel configuration for your platform!"; + } +) diff --git a/pkgs/os-specific/linux/kernel/2.6.23.1.nix b/pkgs/os-specific/linux/kernel/2.6.23.1.nix new file mode 100644 index 00000000000..9ba12173a11 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.23.1.nix @@ -0,0 +1,41 @@ +args: +(import ./meta.nix) +( args // + { + version = "2.6.23.1"; + src_hash = { sha256 = "0737g83h7jbrlss8782b17mhc3nfn8qfbh5s71flz8pjxmbbmg1m"; }; + + systemPatches = [ + { name = "paravirt-nvidia"; + patch = ./2.6.22-paravirt-nvidia.patch; + } + { # resume with resume=swap:/dev/xx + name = "tux on ice"; # (swsusp2) + patch = args.fetchurl { + url = "http://www.tuxonice.net/downloads/all/tuxonice-3.0-rc2-for-2.6.23.1.patch.bz2"; + sha256 = "ef86267b6f3d7e309221f5173a881afae1dfa57418be5b3963f2380b0633ca1a"; + }; + extraConfig = " + CONFIG_SUSPEND2=y + CONFIG_SUSPEND2_FILE=y + CONFIG_SUSPEND2_SWAP=y + CONFIG_CRYPTO_LZF=y + "; + } + { name = "fbsplash-0.9.2-r5-2.6.21"; + patch = args.fetchurl { + url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; + sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px"; + }; + extraConfig = "CONFIG_FB_SPLASH=y"; + } + ]; + + config = with args; + if kernelConfig != null then kernelConfig else + if userModeLinux then ./config-2.6.23.1-uml else + if stdenv.system == "i686-linux" then ./config-2.6.23.1-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.23.1-x86_64-smp else + abort "No kernel configuration for your platform!"; + } +) diff --git a/pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp b/pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp new file mode 100644 index 00000000000..5e472930410 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp @@ -0,0 +1,3756 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.23.1 +# Wed Oct 31 14:47:06 2007 +# +CONFIG_X86_32=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_SEMAPHORE_SLEEPERS=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_QUICKLIST=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_DMI=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="-default" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +# CONFIG_TASKSTATS is not set +# CONFIG_USER_NS is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_CPUSETS is not set +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_ANON_INODES=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_KMOD=y +CONFIG_STOP_MACHINE=y +CONFIG_BLOCK=y +CONFIG_LBD=y +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_LSF is not set +# CONFIG_BLK_DEV_BSG is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" + +# +# Processor type and features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_SMP=y +CONFIG_X86_PC=y +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_ES7000 is not set +CONFIG_PARAVIRT=y +CONFIG_XEN=y +CONFIG_VMI=y +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +CONFIG_M686=y +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MCORE2 is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +CONFIG_X86_TSC=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_NR_CPUS=8 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_BKL=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_NONFATAL=y +CONFIG_X86_MCE_P4THERMAL=y +CONFIG_VM86=y +CONFIG_TOSHIBA=m +CONFIG_I8K=m +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_MICROCODE=m +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m + +# +# Firmware Drivers +# +CONFIG_EDD=m +CONFIG_EFI_VARS=m +CONFIG_DELL_RBU=m +CONFIG_DCDBAS=m +CONFIG_DMIID=y +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_HIGHMEM=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_NR_QUICK=1 +CONFIG_VIRT_TO_BUS=y +CONFIG_HIGHPTE=y +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_EFI=y +CONFIG_IRQBALANCE=y +CONFIG_BOOT_IOREMAP=y +CONFIG_SECCOMP=y +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_KEXEC=y +# CONFIG_CRASH_DUMP is not set +CONFIG_PHYSICAL_START=0x100000 +# CONFIG_RELOCATABLE is not set +CONFIG_PHYSICAL_ALIGN=0x100000 +CONFIG_HOTPLUG_CPU=y +CONFIG_COMPAT_VDSO=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y + +# +# Power management options (ACPI, APM) +# +CONFIG_PM=y +CONFIG_PM_LEGACY=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND_SMP_POSSIBLE=y +CONFIG_SUSPEND=y +CONFIG_HIBERNATION_SMP_POSSIBLE=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROC_EVENT=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=m +CONFIG_ACPI_BAY=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_ASUS=m +CONFIG_ACPI_TOSHIBA=m +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=2001 +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_SYSTEM=y +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=m +# CONFIG_ACPI_SBS is not set +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_DO_ENABLE=y +# CONFIG_APM_CPU_IDLE is not set +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_ALLOW_INTS=y +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=m +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m + +# +# CPUFreq processor drivers +# +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K7_ACPI=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_POWERNOW_K8_ACPI=y +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y +CONFIG_X86_SPEEDSTEP_ICH=m +CONFIG_X86_SPEEDSTEP_SMI=m +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_CPUFREQ_NFORCE2=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_LONGHAUL=m +CONFIG_X86_E_POWERSAVER=m + +# +# shared options +# +# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y + +# +# Bus options (PCI, PCMCIA, EISA, MCA, ISA) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=m +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_PCIEAER=y +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_PCI_MSI=y +# CONFIG_PCI_DEBUG is not set +CONFIG_HT_IRQ=y +CONFIG_ISA_DMA_API=y +CONFIG_ISA=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +CONFIG_SCx200=m +CONFIG_SCx200HR_TIMER=m +CONFIG_K8_NB=y + +# +# PCCARD (PCMCIA/CardBus) support +# +CONFIG_PCCARD=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_TCIC=m +CONFIG_PCMCIA_PROBE=y +CONFIG_PCCARD_NONSTATIC=m +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_SHPC=m + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_SCALABLE=m +# CONFIG_TCP_CONG_LP is not set +# CONFIG_TCP_CONG_VENO is not set +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +# CONFIG_DEFAULT_BIC is not set +# CONFIG_DEFAULT_CUBIC is not set +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_WESTWOOD is not set +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +# CONFIG_IPV6_MIP6 is not set +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +CONFIG_IPV6_SIT=m +CONFIG_IPV6_TUNNEL=m +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_NETLABEL is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NF_CONNTRACK_ENABLED=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CT_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_SECMARK is not set +# CONFIG_NF_CONNTRACK_EVENTS is not set +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_RAW=m +# CONFIG_IP_NF_ARPTABLES is not set + +# +# IPv6: Netfilter Configuration (EXPERIMENTAL) +# +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_RAW=m + +# +# DECnet: Netfilter Configuration +# +CONFIG_DECNET_NF_GRABULATOR=m + +# +# Bridge: Netfilter Configuration +# +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m +# CONFIG_IP_DCCP is not set +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCTP_HMAC_MD5=y +# CONFIG_TIPC is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +CONFIG_ATM_CLIP_NO_ICMP=y +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +CONFIG_DECNET=m +CONFIG_DECNET_ROUTER=y +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_LTPC=m +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_X25=m +CONFIG_LAPB=m +CONFIG_ECONET=m +# CONFIG_ECONET_AUNUDP is not set +# CONFIG_ECONET_NATIVE is not set +CONFIG_WAN_ROUTER=m + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_FIFO=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RR=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +# CONFIG_NET_EMATCH is not set +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +# CONFIG_NET_CLS_POLICE is not set +# CONFIG_NET_CLS_IND is not set + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_SCC=m +CONFIG_SCC_DELAY=y +CONFIG_SCC_TRXECHO=y +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_EPP=m +CONFIG_YAM=m +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +# CONFIG_TOIM3232_DONGLE is not set +CONFIG_LITELINK_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m +CONFIG_KINGSUN_DONGLE=m + +# +# Old SIR device drivers +# + +# +# Old Serial dongle support +# + +# +# FIR device drivers +# +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_TOSHIBA_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m +CONFIG_VIA_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=m +CONFIG_FIB_RULES=y + +# +# Wireless +# +CONFIG_CFG80211=m +CONFIG_WIRELESS_EXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_DEBUG is not set +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_IEEE80211_SOFTMAC=m +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=m +CONFIG_NET_9P=m +# CONFIG_NET_9P_DEBUG is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_CONNECTOR=m +CONFIG_MTD=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_CONCAT=m +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +# CONFIG_MTD_BLOCK_RO is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_OTP is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +CONFIG_MTD_ABSENT=m + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_PNC2000=m +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_NETSC520=m +CONFIG_MTD_TS5500=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_DILNETPC=m +CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +CONFIG_MTD_PMC551_BUGFIX=y +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_M25P80=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE_ADVANCED=y +CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 +CONFIG_MTD_DOCPROBE_HIGH=y +CONFIG_MTD_DOCPROBE_55AA=y +CONFIG_MTD_NAND=m +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y +CONFIG_MTD_NAND_CAFE=m +# CONFIG_MTD_NAND_CS553X is not set +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_PLATFORM=m +# CONFIG_MTD_ONENAND is not set + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +# CONFIG_MTD_UBI_GLUEBI is not set + +# +# UBI debugging options +# +# CONFIG_MTD_UBI_DEBUG is not set +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_GSC is not set +# CONFIG_PARPORT_AX88796 is not set +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG is not set + +# +# Protocols +# +CONFIG_ISAPNP=y +# CONFIG_PNPBIOS is not set +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_XD=m +CONFIG_PARIDE=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=64000 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +CONFIG_CDROM_PKTCDVD_WCACHE=y +CONFIG_ATA_OVER_ETH=m +CONFIG_XEN_BLKDEV_FRONTEND=m +CONFIG_MISC_DEVICES=y +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_EEPROM_93CX6=m +# CONFIG_SGI_IOC4 is not set +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ASUS_LAPTOP=m +CONFIG_MSI_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_THINKPAD_ACPI=m +# CONFIG_THINKPAD_ACPI_DEBUG is not set +CONFIG_THINKPAD_ACPI_BAY=y +CONFIG_IDE=m +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +# CONFIG_BLK_DEV_HD_IDE is not set +CONFIG_BLK_DEV_IDEDISK=m +CONFIG_IDEDISK_MULTI_MODE=y +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEFLOPPY=m +CONFIG_BLK_DEV_IDESCSI=m +CONFIG_BLK_DEV_IDEACPI=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=m +CONFIG_BLK_DEV_CMD640=y +CONFIG_BLK_DEV_CMD640_ENHANCED=y +CONFIG_BLK_DEV_IDEPNP=y +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_IDEPCI_PCIBUS_ORDER is not set +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_RZ1000=m +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=m +CONFIG_BLK_DEV_ATIIXP=m +CONFIG_BLK_DEV_CMD64X=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_CY82C693=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_CS5535=m +CONFIG_BLK_DEV_HPT34X=m +CONFIG_HPT34X_AUTODMA=y +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_JMICRON=m +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_IT8213=m +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_NS87415=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_PDC202XX_BURST=y +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SIS5513=m +CONFIG_BLK_DEV_SLC90E66=m +CONFIG_BLK_DEV_TRM290=m +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BLK_DEV_TC86C001=m +# CONFIG_IDE_ARM is not set +CONFIG_IDE_CHIPSETS=y + +# +# Note: most of these also require special kernel boot parameters +# +CONFIG_BLK_DEV_4DRIVES=y +CONFIG_BLK_DEV_ALI14XX=m +CONFIG_BLK_DEV_DTC2278=m +CONFIG_BLK_DEV_HT6560B=m +CONFIG_BLK_DEV_QD65XX=m +CONFIG_BLK_DEV_UMC8672=m +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_TGT=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +# CONFIG_SCSI_SAS_ATA is not set +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_ARCMSR=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPR_DUMP is not set +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_SEAGATE=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_ATA=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_ACPI=y +CONFIG_SATA_AHCI=m +CONFIG_SATA_SVW=m +CONFIG_ATA_PIIX=m +# CONFIG_SATA_MV is not set +CONFIG_SATA_NV=m +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SX4=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIL24=m +CONFIG_SATA_SIS=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_INIC162X=m +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_CMD64X is not set +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CS5535=m +# CONFIG_PATA_CYPRESS is not set +CONFIG_PATA_EFAR=m +CONFIG_ATA_GENERIC=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +# CONFIG_PATA_ISAPNP is not set +CONFIG_PATA_IT821X=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_JMICRON=m +# CONFIG_PATA_LEGACY is not set +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NS87410=m +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +CONFIG_PATA_PCMCIA=m +# CONFIG_PATA_PDC_OLD is not set +CONFIG_PATA_QDI=m +# CONFIG_PATA_RADISYS is not set +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_WINBOND_VLB=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +# CONFIG_MD_RAID5_RESHAPE is not set +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_EMC=m +CONFIG_DM_MULTIPATH_RDAC=m +# CONFIG_DM_DELAY is not set + +# +# Fusion MPT device support +# +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +CONFIG_IEEE1394=m + +# +# Subsystem Options +# +# CONFIG_IEEE1394_VERBOSEDEBUG is not set + +# +# Controllers +# +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_OHCI1394=m + +# +# Protocols +# +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_I2O=m +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_BUS=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_NETDEVICES=y +# CONFIG_NETDEVICES_MULTIQUEUE is not set +# CONFIG_IFB is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +# CONFIG_MACVLAN is not set +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_NET_SB1000=m +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +# CONFIG_ARCNET_COM20020 is not set +CONFIG_PHYLIB=m + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_LXT_PHY=m +CONFIG_CICADA_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_FIXED_PHY=m +# CONFIG_FIXED_MII_10_FDX is not set +# CONFIG_FIXED_MII_100_FDX is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRA=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_ZNET=m +CONFIG_SEEQ8005=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +# CONFIG_PCNET32_NAPI is not set +CONFIG_AMD8111_ETH=m +# CONFIG_AMD8111E_NAPI is not set +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADAPTEC_STARFIRE_NAPI=y +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_FORCEDETH=m +# CONFIG_FORCEDETH_NAPI is not set +CONFIG_CS89x0=m +CONFIG_DGRS=m +CONFIG_EEPRO100=m +CONFIG_E100=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +# CONFIG_VIA_RHINE_NAPI is not set +CONFIG_SC92031=m +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_NETDEV_1000=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000_NAPI=y +# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +# CONFIG_R8169_NAPI is not set +CONFIG_R8169_VLAN=y +CONFIG_SIS190=m +CONFIG_SKGE=m +# CONFIG_SKY2 is not set +CONFIG_SK98LIN=m +CONFIG_VIA_VELOCITY=m +CONFIG_TIGON3=m +CONFIG_BNX2=m +CONFIG_QLA3XXX=m +CONFIG_ATL1=m +CONFIG_NETDEV_10000=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T1_NAPI=y +CONFIG_CHELSIO_T3=m +CONFIG_IXGB=m +CONFIG_IXGB_NAPI=y +CONFIG_S2IO=m +CONFIG_S2IO_NAPI=y +CONFIG_MYRI10GE=m +CONFIG_NETXEN_NIC=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_TR=y +CONFIG_IBMTR=m +CONFIG_IBMOL=m +CONFIG_IBMLS=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_SKISA=m +CONFIG_PROTEON=m +CONFIG_ABYSS=m +CONFIG_SMCTR=m + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +CONFIG_WLAN_80211=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +# CONFIG_IPW2200_DEBUG is not set +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PRISM54=m +CONFIG_USB_ZD1201=m +CONFIG_RTL8187=m +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_CS=m +CONFIG_BCM43XX=m +CONFIG_BCM43XX_DEBUG=y +CONFIG_BCM43XX_DMA=y +CONFIG_BCM43XX_PIO=y +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y +# CONFIG_BCM43XX_DMA_MODE is not set +# CONFIG_BCM43XX_PIO_MODE is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET_MII=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +# CONFIG_USB_EPSON2888 is not set +# CONFIG_USB_KC2190 is not set +CONFIG_USB_NET_ZAURUS=m +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_WAN=y +CONFIG_HOSTESS_SV11=m +# CONFIG_COSA is not set +CONFIG_LANMEDIA=m +CONFIG_SEALEVEL_4021=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_X25=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +# CONFIG_PC300 is not set +# CONFIG_PC300TOO is not set +CONFIG_N2=m +CONFIG_C101=m +CONFIG_FARSYNC=m +# CONFIG_DSCC4 is not set +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_SDLA=m +# CONFIG_WAN_ROUTER_DRIVERS is not set +CONFIG_LAPBETHER=m +CONFIG_X25_ASY=m +# CONFIG_SBNI is not set +CONFIG_ATM_DRIVERS=y +# CONFIG_ATM_DUMMY is not set +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +CONFIG_ATM_IDT77252_RCV_ALL=y +CONFIG_ATM_IDT77252_USE_SUNI=y +# CONFIG_ATM_AMBASSADOR is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E_MAYBE=m +CONFIG_ATM_FORE200E_PCA=y +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y +CONFIG_ATM_FORE200E_USE_TASKLET=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E=m +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_XEN_NETDEV_FRONTEND=m +CONFIG_FDDI=y +CONFIG_DEFXX=m +# CONFIG_DEFXX_MMIO is not set +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +CONFIG_ROADRUNNER_LARGE_RINGS=y +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +# CONFIG_PPPOL2TP is not set +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLHC=m +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_NET_FC=y +CONFIG_SHAPER=m +CONFIG_NETCONSOLE=m +CONFIG_NETPOLL=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_ISDN=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y + +# +# ISDN feature submodules +# +CONFIG_ISDN_DIVERSION=m + +# +# ISDN4Linux hardware drivers +# + +# +# Passive cards +# +CONFIG_ISDN_DRV_HISAX=m + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_DEBUG=y + +# +# HiSax PCMCIA card service modules +# +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_TELES_CS=m + +# +# HiSax sub driver modules +# +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_HDLC=y + +# +# Active cards +# +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_DRV_ACT2000=m +# CONFIG_ISDN_DRV_GIGASET is not set +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_CAPI_TRACE=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m + +# +# CAPI hardware drivers +# +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_POLLDEV=m + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_SUNKBD=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_INPORT=m +CONFIG_MOUSE_ATIXL=y +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_WACOM=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=y +CONFIG_INPUT_WISTRON_BTNS=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_UINPUT=m + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_DIGIEPCA=m +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +CONFIG_MOXA_SMARTIO=m +CONFIG_MOXA_SMARTIO_NEW=m +# CONFIG_ISI is not set +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_GT=m +CONFIG_N_HDLC=m +# CONFIG_SPECIALIX is not set +CONFIG_SX=m +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +CONFIG_STALDRV=y + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_ACCENT=m +CONFIG_SERIAL_8250_BOCA=m +CONFIG_SERIAL_8250_EXAR_ST16C554=m +CONFIG_SERIAL_8250_HUB6=m +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_TIPAR=m +CONFIG_HVC_DRIVER=y +CONFIG_HVC_XEN=y +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_PANIC_EVENT=y +CONFIG_IPMI_PANIC_STRING=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_SC1200_WDT=m +CONFIG_SCx200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_60XX_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m + +# +# ISA-based Watchdog Cards +# +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m +CONFIG_WDT_501=y + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_WDT_501_PCI=y + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_NVRAM=m +CONFIG_RTC=y +CONFIG_DTLK=m +CONFIG_R3964=m +CONFIG_APPLICOM=m +CONFIG_SONYPI=m +CONFIG_AGP=m +CONFIG_AGP_ALI=m +CONFIG_AGP_ATI=m +CONFIG_AGP_AMD=m +CONFIG_AGP_AMD64=m +CONFIG_AGP_INTEL=m +CONFIG_AGP_NVIDIA=m +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_VIA=m +CONFIG_AGP_EFFICEON=m +CONFIG_DRM=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_I810=m +CONFIG_DRM_I830=m +CONFIG_DRM_I915=m +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m +CONFIG_DRM_VIA=m +CONFIG_DRM_SAVAGE=m + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_MWAVE=m +CONFIG_SCx200_GPIO=m +CONFIG_PC8736x_GPIO=m +CONFIG_NSC_GPIO=m +CONFIG_CS5535_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HPET=y +# CONFIG_HPET_RTC_IRQ is not set +CONFIG_HPET_MMAP=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TELCLOCK=m +CONFIG_DEVPORT=y +CONFIG_I2C=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=m + +# +# I2C Algorithms +# +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PROSAVAGE=m +CONFIG_I2C_SAVAGE4=m +CONFIG_I2C_SIMTEC=m +CONFIG_SCx200_I2C=m +CONFIG_SCx200_I2C_SCL=12 +CONFIG_SCx200_I2C_SDA=13 +CONFIG_SCx200_ACB=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_STUB=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m +CONFIG_I2C_PCA_ISA=m + +# +# Miscellaneous I2C Chip support +# +CONFIG_SENSORS_DS1337=m +CONFIG_SENSORS_DS1374=m +CONFIG_DS1682=m +CONFIG_SENSORS_EEPROM=m +CONFIG_SENSORS_PCF8574=m +CONFIG_SENSORS_PCA9539=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_MAX6875=m +CONFIG_SENSORS_TSL2550=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# SPI support +# +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=m +# CONFIG_SPI_BUTTERFLY is not set +CONFIG_SPI_LM70_LLP=m + +# +# SPI Protocol Masters +# +CONFIG_SPI_AT25=m +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2760=m +CONFIG_POWER_SUPPLY=m +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_BATTERY_DS2760 is not set +CONFIG_HWMON=m +CONFIG_HWMON_VID=m +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_FSCHER=m +CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_APPLESMC=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_SM501=m + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TDA9875=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA7111=m +CONFIG_VIDEO_SAA7114=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +# CONFIG_VIDEO_CPIA2 is not set +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +# CONFIG_TUNER_TEA5761 is not set +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +# CONFIG_VIDEO_ZORAN_AVS6EYES is not set +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +# CONFIG_VIDEO_SAA7134_OSS is not set +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_V4L_USB_DRIVERS=y +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_29XXX=y +CONFIG_VIDEO_PVRUSB2_24XXX=y +CONFIG_VIDEO_PVRUSB2_SYSFS=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_USBVIDEO=m +CONFIG_USB_VICAM=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_QUICKCAM_MESSENGER=m +CONFIG_USB_ET61X251=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_USB_W9968CF=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=m +CONFIG_USB_STV680=m +CONFIG_USB_ZC0301=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_ZR364XX=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_TYPHOON_PROC_FS=y +CONFIG_RADIO_ZOLTRIX=m +CONFIG_USB_DSBR=m +CONFIG_DVB_CORE=m +CONFIG_DVB_CORE_ATTACH=y +CONFIG_DVB_CAPTURE_DRIVERS=y + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_DVB_AV7110=m +# CONFIG_DVB_AV7110_FIRMWARE is not set +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_CINERGYT2=m +# CONFIG_DVB_CINERGYT2_TUNING is not set + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m + +# +# Supported Pluto2 Adapters +# +# CONFIG_DVB_PLUTO2 is not set + +# +# Supported DVB Frontends +# + +# +# Customise DVB Frontends +# +# CONFIG_DVB_FE_CUSTOMISE is not set + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_STV0299=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_MT312=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_TDA10086=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m + +# +# Tuners/PLL support +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TDA827X=m +CONFIG_DVB_TUNER_QT1010=m +CONFIG_DVB_TUNER_MT2060=m + +# +# Miscellaneous devices +# +CONFIG_DVB_LNBP21=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_TUA6100=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BUF_DVB=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_DAB=y +CONFIG_USB_DABUSB=m + +# +# Graphics support +# +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PROGEAR=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=m + +# +# Display hardware drivers +# +CONFIG_VGASTATE=m +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DDC=m +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_ARC=m +# CONFIG_FB_ASILIANT is not set +CONFIG_FB_IMSTT=y +CONFIG_FB_VGA16=m +CONFIG_FB_VESA=y +CONFIG_FB_IMAC=y +CONFIG_FB_HECUBA=m +CONFIG_FB_HGA=m +CONFIG_FB_HGA_ACCEL=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_I2C=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_I810=m +CONFIG_FB_I810_GTF=y +CONFIG_FB_I810_I2C=y +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_INTEL_I2C=y +# CONFIG_FB_MATROX is not set +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +# CONFIG_FB_ATY128 is not set +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +# CONFIG_FB_S3 is not set +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +CONFIG_FB_3DFX_ACCEL=y +CONFIG_FB_VOODOO1=m +# CONFIG_FB_VT8623 is not set +CONFIG_FB_CYBLA=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_TRIDENT_ACCEL=y +# CONFIG_FB_ARK is not set +CONFIG_FB_PM3=m +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_LX=m +CONFIG_FB_GEODE_GX=m +# CONFIG_FB_GEODE_GX_SET_FBSIZE is not set +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_SM501=m +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_VIDEO_SELECT=y +CONFIG_MDA_CONSOLE=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_LOGO is not set + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_RTCTIMER=m +CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_DETECT is not set +# CONFIG_SND_PCM_XRUN_DEBUG is not set + +# +# Generic devices +# +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AD1848_LIB=m +CONFIG_SND_CS4231_LIB=m +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SB8_DSP=m +CONFIG_SND_SB16_DSP=m + +# +# ISA devices +# +# CONFIG_SND_ADLIB is not set +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_ALS100=m +CONFIG_SND_AZT2320=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4232=m +CONFIG_SND_CS4236=m +CONFIG_SND_DT019X=m +CONFIG_SND_ES968=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_GUS_SYNTH=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_MIRO=m +CONFIG_SND_SB8=m +CONFIG_SND_SB16=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL=y +CONFIG_SND_SGALAXY=m +CONFIG_SND_SSCAPE=m +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL=y + +# +# PCI devices +# +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y +CONFIG_SND_AC97_POWER_SAVE=y + +# +# USB devices +# +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y + +# +# PCMCIA devices +# +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m + +# +# System on Chip audio support +# +# CONFIG_SND_SOC is not set + +# +# SoC Audio support for SuperH +# + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_TRIDENT=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_OSS=m +CONFIG_SOUND_TRACEINIT=y +CONFIG_SOUND_DMAP=y +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PSS=m +CONFIG_PSS_MIXER=y +# CONFIG_PSS_HAVE_BOOT is not set +CONFIG_SOUND_SB=m +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0x0 +# CONFIG_AEDSP16_MSS is not set +# CONFIG_AEDSP16_SBPRO is not set +CONFIG_SOUND_KAHLUA=m +CONFIG_AC97_BUS=m +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HID_DEBUG is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT_POWERBOOK=y +CONFIG_HID_FF=y +CONFIG_HID_PID=y +CONFIG_LOGITECH_FF=y +CONFIG_PANTHERLORD_FF=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_ZEROPLUS_FF=y +CONFIG_USB_HIDDEV=y + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +# CONFIG_USB_PERSIST is not set +# CONFIG_USB_OTG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_CS=m +CONFIG_USB_R8A66597_HCD=m + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y +# CONFIG_USB_STORAGE_ALAUDA is not set +CONFIG_USB_STORAGE_KARMA=y +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MON=y + +# +# USB port drivers +# +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_AIRCABLE is not set +CONFIG_USB_SERIAL_AIRPRIME=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP2101=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +# CONFIG_USB_SERIAL_FUNSOFT is not set +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +# CONFIG_USB_SERIAL_DEBUG is not set +CONFIG_USB_EZUSB=y + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_AUERSWALD=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_BERRY_CHARGE=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_PHIDGET=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETMOTORCONTROL=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +# CONFIG_USB_TEST is not set + +# +# USB DSL modem support +# +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD Card Drivers +# +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_BOUNCE=y + +# +# MMC/SD Host Controller Drivers +# +# CONFIG_MMC_SDHCI is not set +CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +CONFIG_LEDS_NET48XX=m +CONFIG_LEDS_WRAP=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_IDE_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_CM is not set +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +# CONFIG_INFINIBAND_SRP is not set +# CONFIG_INFINIBAND_ISER is not set +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=m +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_MAX6902=m + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_V3020=m + +# +# on-CPU RTC drivers +# + +# +# DMA Engine support +# +CONFIG_DMA_ENGINE=y + +# +# DMA Clients +# +CONFIG_NET_DMA=y + +# +# DMA Devices +# +CONFIG_INTEL_IOATDMA=m +CONFIG_AUXDISPLAY=y +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m + +# +# Userspace I/O +# +CONFIG_UIO=m +CONFIG_UIO_CIF=m +# CONFIG_LGUEST is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XIP=y +CONFIG_FS_XIP=y +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +# CONFIG_EXT4DEV_FS is not set +CONFIG_JBD=m +CONFIG_JBD_DEBUG=y +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_SECURITY=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_NOLOCK=m +CONFIG_GFS2_FS_LOCKING_DLM=m +CONFIG_OCFS2_FS=m +# CONFIG_OCFS2_DEBUG_MASKLOG is not set +CONFIG_MINIX_FS=y +CONFIG_ROMFS_FS=m +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_QUOTA=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_DNOTIFY=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m +CONFIG_FUSE_FS=m +CONFIG_GENERIC_ACL=y + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=y + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_RAMFS=y +CONFIG_CONFIGFS_FS=m + +# +# Miscellaneous filesystems +# +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_CRAMFS=m +CONFIG_VXFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_UFS_DEBUG is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_TCP=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +# CONFIG_SUNRPC_BIND34 is not set +CONFIG_RPCSEC_GSS_KRB5=y +CONFIG_RPCSEC_GSS_SPKM3=m +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp850" +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_EXPERIMENTAL is not set +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +# CONFIG_CODA_FS_OLD_API is not set +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_9P_FS=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_SYSV68_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Distributed Lock Manager +# +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y +CONFIG_INSTRUMENTATION=y +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +# CONFIG_KPROBES is not set + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_FORCED_INLINING is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_EARLY_PRINTK=y +CONFIG_DEBUG_STACKOVERFLOW=y +# CONFIG_DEBUG_STACK_USAGE is not set + +# +# Page alloc debug is incompatible with Software Suspend on i386 +# +# CONFIG_DEBUG_RODATA is not set +# CONFIG_4KSTACKS is not set +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y +CONFIG_DOUBLEFAULT=y + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_CAPABILITIES=m +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ABLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_586=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_GEODE=m + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +CONFIG_AUDIT_GENERIC=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_X86_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_KTIME_SCALAR=y diff --git a/pkgs/os-specific/linux/kernel/default.nix b/pkgs/os-specific/linux/kernel/default.nix new file mode 100644 index 00000000000..115870b771e --- /dev/null +++ b/pkgs/os-specific/linux/kernel/default.nix @@ -0,0 +1,29 @@ +args: +let + getValue = aSet: aName: default: + (if (aSet ? aName) then (builtins.getAttr aSet aName) else default); +in + +let + newArgs = (args // + { + userModeLinux = getValue args "userModeLinux" false; + + localVersion = getValue args "localVersion" ""; + + config = getValue args "configFile" null; + + extraPatches = getValue args "extraPatches" []; + + extraConfig = getValue args "extraConfig" []; + }); +in +args.stdenv.lib.listOfListsToAttrs [ + [ "recurseForDerivations" true ] + [ "2.6.20" (import ./2.6.20.nix newArgs) ] + [ "2.6.21" (import ./2.6.21.nix newArgs) ] + [ "2.6.21-ck" (import ./2.6.21-ck.nix newArgs) ] + [ "2.6.22" (import ./2.6.22.nix newArgs) ] + [ "2.6.22-ck" (import ./2.6.22-ck.nix newArgs) ] + [ "2.6.23.1" (import ./2.6.23.1.nix newArgs) ] +] diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.20.nix b/pkgs/os-specific/linux/kernel/linux-2.6.20.nix deleted file mode 100644 index 3299ba5a3cb..00000000000 --- a/pkgs/os-specific/linux/kernel/linux-2.6.20.nix +++ /dev/null @@ -1,76 +0,0 @@ -{ stdenv, fetchurl, perl, mktemp, module_init_tools - - # A list of patches to apply to the kernel. Each element of this list - # should be an attribute set {name, patch} where `name' is a - # symbolic name and `patch' is the actual patch. The patch may - # optionally be compressed with gzip or bzip2. -, kernelPatches ? [] - -, # Whether to build a User-Mode Linux kernel. - userModeLinux ? false - -, # Allows you to set your own kernel version suffix (e.g., - # "-my-kernel"). - localVersion ? "" - -, # Your own kernel configuration file, if you don't want to use the - # default. - kernelConfig ? null -}: - -assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; - -let - - lib = import ../../../lib; - - version = "2.6.20.12"; - -in - -stdenv.mkDerivation { - name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}"; - builder = ./builder.sh; - - src = fetchurl { - url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2"; - sha256 = "1s7vdpg2897q5pcyxxypqcnibwpbdawbimkf3pngmahj8wr9c03x"; - }; - - patches = map (p: p.patch) kernelPatches; - extraConfig = lib.concatStrings (map (p: "\n" + (if p ? extraConfig then p.extraConfig else "") + "\n") kernelPatches); - - config = - if kernelConfig != null then kernelConfig else - if userModeLinux then ./config-2.6.20-uml else - if stdenv.system == "i686-linux" then ./config-2.6.20-i686-smp else - if stdenv.system == "x86_64-linux" then ./config-2.6.20-x86_64-smp else - abort "No kernel configuration for your platform!"; - - buildInputs = [perl mktemp]; - - arch = - if userModeLinux then "um" else - if stdenv.system == "i686-linux" then "i386" else - if stdenv.system == "x86_64-linux" then "x86_64" else - abort "Platform ${stdenv.system} is not supported."; - - makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else ""; - - inherit module_init_tools; - - allowLocalVersion = false; # don't allow patches to set a suffix - inherit localVersion; # but do allow the user to set one. - - meta = { - description = - (if userModeLinux then - "User-Mode Linux" - else - "The Linux kernel") + - (if kernelPatches == [] then "" else - " (with patches: " - + lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches)) - + ")"); - }; -} diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.21.nix b/pkgs/os-specific/linux/kernel/linux-2.6.21.nix deleted file mode 100644 index e7fc2943a5c..00000000000 --- a/pkgs/os-specific/linux/kernel/linux-2.6.21.nix +++ /dev/null @@ -1,76 +0,0 @@ -{ stdenv, fetchurl, perl, mktemp, module_init_tools - - # A list of patches to apply to the kernel. Each element of this list - # should be an attribute set {name, patch} where `name' is a - # symbolic name and `patch' is the actual patch. The patch may - # optionally be compressed with gzip or bzip2. -, kernelPatches ? [] - -, # Whether to build a User-Mode Linux kernel. - userModeLinux ? false - -, # Allows you to set your own kernel version suffix (e.g., - # "-my-kernel"). - localVersion ? "" - -, # Your own kernel configuration file, if you don't want to use the - # default. - kernelConfig ? null -}: - -assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; - -let - - lib = import ../../../lib; - - version = "2.6.21.7"; - -in - -stdenv.mkDerivation { - name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}"; - builder = ./builder.sh; - - src = fetchurl { - url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2"; - sha256 = "1c8ndsz35qd8vyng3xsxjjkjv5bnzyvc9b5vd85fz5v0bjp8hx50"; - }; - - patches = map (p: p.patch) kernelPatches; - extraConfig = lib.concatStrings (map (p: "\n" + (if p ? extraConfig then p.extraConfig else "") + "\n") kernelPatches); - - config = - if kernelConfig != null then kernelConfig else - if userModeLinux then ./config-2.6.21-uml else - if stdenv.system == "i686-linux" then ./config-2.6.21-i686-smp else - if stdenv.system == "x86_64-linux" then ./config-2.6.21-x86_64-smp else - abort "No kernel configuration for your platform!"; - - buildInputs = [perl mktemp]; - - arch = - if userModeLinux then "um" else - if stdenv.system == "i686-linux" then "i386" else - if stdenv.system == "x86_64-linux" then "x86_64" else - abort "Platform ${stdenv.system} is not supported."; - - makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else ""; - - inherit module_init_tools; - - allowLocalVersion = false; # don't allow patches to set a suffix - inherit localVersion; # but do allow the user to set one. - - meta = { - description = - (if userModeLinux then - "User-Mode Linux" - else - "The Linux kernel") + - (if kernelPatches == [] then "" else - " (with patches: " - + lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches)) - + ")"); - }; -} diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.22.nix b/pkgs/os-specific/linux/kernel/linux-2.6.22.nix deleted file mode 100644 index bb51a5f6b52..00000000000 --- a/pkgs/os-specific/linux/kernel/linux-2.6.22.nix +++ /dev/null @@ -1,84 +0,0 @@ -{ stdenv, fetchurl, perl, mktemp, module_init_tools - - # A list of patches to apply to the kernel. Each element of this list - # should be an attribute set {name, patch} where `name' is a - # symbolic name and `patch' is the actual patch. The patch may - # optionally be compressed with gzip or bzip2. -, kernelPatches ? [] - -, # Whether to build a User-Mode Linux kernel. - userModeLinux ? false - -, # Allows you to set your own kernel version suffix (e.g., - # "-my-kernel"). - localVersion ? "" - -, # Your own kernel configuration file, if you don't want to use the - # default. - kernelConfig ? null - -, # A list of additional statements to be appended to the - # configuration file. - extraConfig ? [] -}: - -assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; - -let - - lib = import ../../../lib; - - version = "2.6.22.10"; - -in - -stdenv.mkDerivation { - name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}"; - builder = ./builder.sh; - - src = fetchurl { - url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2"; - sha256 = "0kh196qzm54mvnbrdr9s2q86l9yn2321gnsl5xq44ai2idqp044g"; - }; - - patches = map (p: p.patch) kernelPatches; - extraConfig = - let addNewlines = map (s: "\n" + s + "\n"); - configFromPatches = - map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches; - in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig)); - - config = - if kernelConfig != null then kernelConfig else - if userModeLinux then ./config-2.6.22-uml else - if stdenv.system == "i686-linux" then ./config-2.6.22-i686-smp else - if stdenv.system == "x86_64-linux" then ./config-2.6.22-x86_64-smp else - abort "No kernel configuration for your platform!"; - - buildInputs = [perl mktemp]; - - arch = - if userModeLinux then "um" else - if stdenv.system == "i686-linux" then "i386" else - if stdenv.system == "x86_64-linux" then "x86_64" else - abort "Platform ${stdenv.system} is not supported."; - - makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else ""; - - inherit module_init_tools; - - allowLocalVersion = false; # don't allow patches to set a suffix - inherit localVersion; # but do allow the user to set one. - - meta = { - description = - (if userModeLinux then - "User-Mode Linux" - else - "The Linux kernel") + - (if kernelPatches == [] then "" else - " (with patches: " - + lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches)) - + ")"); - }; -} diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.23.nix b/pkgs/os-specific/linux/kernel/meta.nix similarity index 50% rename from pkgs/os-specific/linux/kernel/linux-2.6.23.nix rename to pkgs/os-specific/linux/kernel/meta.nix index 1d034e897cc..b52c0b55c52 100644 --- a/pkgs/os-specific/linux/kernel/linux-2.6.23.nix +++ b/pkgs/os-specific/linux/kernel/meta.nix @@ -1,34 +1,12 @@ -{ stdenv, fetchurl, perl, mktemp, module_init_tools - - # A list of patches to apply to the kernel. Each element of this list - # should be an attribute set {name, patch} where `name' is a - # symbolic name and `patch' is the actual patch. The patch may - # optionally be compressed with gzip or bzip2. -, kernelPatches ? [] - -, # Whether to build a User-Mode Linux kernel. - userModeLinux ? false - -, # Allows you to set your own kernel version suffix (e.g., - # "-my-kernel"). - localVersion ? "" - -, # Your own kernel configuration file, if you don't want to use the - # default. - kernelConfig ? null - -, # A list of additional statements to be appended to the - # configuration file. - extraConfig ? [] -}: +args: with args; assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; let - lib = import ../../../lib; - - version = "2.6.23.1"; + lib = stdenv.lib; + addNewlines = map (s: "\n" + s + "\n"); + kernelPatches = systemPatches ++ extraPatches; in @@ -36,24 +14,18 @@ stdenv.mkDerivation { name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}"; builder = ./builder.sh; - src = fetchurl { + src = fetchurl ( { url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2"; - sha256 = "0737g83h7jbrlss8782b17mhc3nfn8qfbh5s71flz8pjxmbbmg1m"; - }; + } // src_hash ); patches = map (p: p.patch) kernelPatches; + extraConfig = - let addNewlines = map (s: "\n" + s + "\n"); - configFromPatches = + let configFromPatches = map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches; in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig)); - config = - if kernelConfig != null then kernelConfig else - if userModeLinux then ./config-2.6.23-uml else - if stdenv.system == "i686-linux" then ./config-2.6.23-i686-smp else - if stdenv.system == "x86_64-linux" then ./config-2.6.23-x86_64-smp else - abort "No kernel configuration for your platform!"; + config = configFile; buildInputs = [perl mktemp]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fa2a4be52db..aba0a005846 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2943,192 +2943,18 @@ rec { systemKernel = kernel; - kernel = (if (getConfig ["kernel" "version"] "2.6.21") == "2.6.22" then - kernel_2_6_22 else if (getConfig ["kernel" "version"] "2.6.21") == "2.6.23" then - kernel_2_6_23 else kernel_2_6_21); + kernel = getVersion "kernel" kernel_alts; - kernel_2_6_20 = import ../os-specific/linux/kernel/linux-2.6.20.nix { + kernel_alts = import ../os-specific/linux/kernel { inherit fetchurl stdenv perl mktemp module_init_tools; - kernelPatches = [ - { name = "paravirt-nvidia"; - patch = ../os-specific/linux/kernel/2.6.20-paravirt-nvidia.patch; - } - { name = "skas-2.6.20-v9-pre9"; - patch = fetchurl { - url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; - md5 = "02e619e5b3aaf0f9768f03ac42753e74"; - }; - extraConfig = - "CONFIG_PROC_MM=y\n" + - "# CONFIG_PROC_MM_DUMPABLE is not set\n"; - } - { name = "fbsplash-0.9.2-r5-2.6.20-rc6"; - patch = fetchurl { - url = http://dev.gentoo.org/~spock/projects/gensplash/archive/fbsplash-0.9.2-r5-2.6.20-rc6.patch; - sha256 = "11v4f85f4jnh9sbhqcyn47krb7l1czgzjw3w8wgbq14jm0sp9294"; - }; - extraConfig = "CONFIG_FB_SPLASH=y"; - } - ]; - }; - - kernel_2_6_21 = import ../os-specific/linux/kernel/linux-2.6.21.nix { - inherit fetchurl stdenv perl mktemp module_init_tools; - kernelPatches = [ - { name = "ext3cow"; - patch = ../os-specific/linux/kernel/linux-2.6.21.7-ext3cow_wouter.patch; - extraConfig = - "CONFIG_EXT3COW_FS=m\n" + - "CONFIG_EXT3COW_FS_XATTR=y\n" + - "CONFIG_EXT3COW_FS_POSIX_ACL=y\n" + - "CONFIG_EXT3COW_FS_SECURITY=y\n"; - } - /* commented out because only acer users have need for it.. - It takes quite a while to create the patch when unpacking the kernel sources only for that task - { name = "acerhk"; - patch = kernel_module_acerhk + "/acerhk-patch.tar.bz2" ; - extraConfig = - "CONFIG_ACERHK=m\n"; - } - */ - { name = "paravirt-nvidia"; - patch = ../os-specific/linux/kernel/2.6.20-paravirt-nvidia.patch; - } - { name = "skas-2.6.20-v9-pre9"; - patch = fetchurl { - url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; - md5 = "02e619e5b3aaf0f9768f03ac42753e74"; - }; - extraConfig = - "CONFIG_PROC_MM=y\n" + - "# CONFIG_PROC_MM_DUMPABLE is not set\n"; - } - { name = "fbsplash-0.9.2-r5-2.6.21"; - patch = fetchurl { - url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.21/4200_fbsplash-0.9.2-r5.patch; - sha256 = "00s8074fzsly2zpir885zqkvq267qyzg6vhsn7n1z2v1z78avxd8"; - }; - extraConfig = "CONFIG_FB_SPLASH=y"; - } - ]; - }; - - kernel_2_6_22 = import ../os-specific/linux/kernel/linux-2.6.22.nix { - inherit fetchurl stdenv perl mktemp module_init_tools; - kernelPatches = [ - /* - { name = "ext3cow"; - patch = ../os-specific/linux/kernel/linux-2.6.21.7-ext3cow_wouter.patch; - extraConfig = - "CONFIG_EXT3COW_FS=m\n" + - "CONFIG_EXT3COW_FS_XATTR=y\n" + - "CONFIG_EXT3COW_FS_POSIX_ACL=y\n" + - "CONFIG_EXT3COW_FS_SECURITY=y\n"; - } - */ - { name = "paravirt-nvidia"; - patch = ../os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch; - } - /* - { name = "skas-2.6.20-v9-pre9"; - patch = fetchurl { - url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; - md5 = "02e619e5b3aaf0f9768f03ac42753e74"; - }; - extraConfig = - "CONFIG_PROC_MM=y\n" + - "# CONFIG_PROC_MM_DUMPABLE is not set\n"; - } - */ - { name = "fbsplash-0.9.2-r5-2.6.21"; - patch = fetchurl { - url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; - sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px"; - }; - extraConfig = "CONFIG_FB_SPLASH=y"; - } - ]; - extraConfig = - lib.optional (getConfig ["kernel" "no_hz"] false) "CONFIG_NO_HZ=y" ++ - lib.optional (getConfig ["kernel" "timer_stats"] false) "CONFIG_TIMER_STATS=y" ++ - lib.optional (getConfig ["kernel" "usb_suspend"] false) "CONFIG_USB_SUSPEND=y" ++ - lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++ - [(getConfig ["kernel" "addConfig"] "")]; - }; - - kernel_2_6_21_ck = import ../os-specific/linux/kernel/linux-2.6.21_ck.nix { - inherit fetchurl stdenv perl mktemp module_init_tools; - kernelPatches = [ - { name = "ext3cow"; - patch = ../os-specific/linux/kernel/linux-2.6.21.7-ext3cow_wouter.patch; - extraConfig = - "CONFIG_EXT3COW_FS=m\n" + - "CONFIG_EXT3COW_FS_XATTR=y\n" + - "CONFIG_EXT3COW_FS_POSIX_ACL=y\n" + - "CONFIG_EXT3COW_FS_SECURITY=y\n"; - } - { name = "Con Kolivas Patch"; - patch = ../os-specific/linux/kernel/patch-2.6.21-ck1; - } - { name = "paravirt-nvidia"; - patch = ../os-specific/linux/kernel/2.6.20-paravirt-nvidia.patch; - } - { name = "skas-2.6.20-v9-pre9"; - patch = fetchurl { - url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; - md5 = "02e619e5b3aaf0f9768f03ac42753e74"; - }; - extraConfig = - "CONFIG_PROC_MM=y\n" + - "# CONFIG_PROC_MM_DUMPABLE is not set\n"; - } - { name = "fbsplash-0.9.2-r5-2.6.21"; - patch = fetchurl { - url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.21/4200_fbsplash-0.9.2-r5.patch; - sha256 = "00s8074fzsly2zpir885zqkvq267qyzg6vhsn7n1z2v1z78avxd8"; - }; - extraConfig = "CONFIG_FB_SPLASH=y"; - } - ]; - }; - - - - kernel_2_6_23 = import ../os-specific/linux/kernel/linux-2.6.23.nix { - inherit fetchurl stdenv perl mktemp module_init_tools; - kernelPatches = [ - { name = "paravirt-nvidia"; - patch = ../os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch; - } - { # resume with resume=swap:/dev/xx - name = "tux on ice"; # (swsusp2) - patch = fetchurl { - url = "http://www.tuxonice.net/downloads/all/tuxonice-3.0-rc2-for-2.6.23.1.patch.bz2"; - sha256 = "ef86267b6f3d7e309221f5173a881afae1dfa57418be5b3963f2380b0633ca1a"; - }; - extraConfig = " - CONFIG_SUSPEND2=y - CONFIG_SUSPEND2_FILE=y - CONFIG_SUSPEND2_SWAP=y - CONFIG_CRYPTO_LZF=y - "; - } - { name = "fbsplash-0.9.2-r5-2.6.21"; - patch = fetchurl { - url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; - sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px"; - }; - extraConfig = "CONFIG_FB_SPLASH=y"; - } - ] ++ getConfig ["kernel" "extraPatches"] []; + extraPatches = getConfig ["kernel" "extraPatches"] []; extraConfig = lib.optional (getConfig ["kernel" "timer_stats"] false) "CONFIG_TIMER_STATS=y" ++ lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++ [(getConfig ["kernel" "addConfig"] "")]; - kernelConfig = getConfig ["kernel" "configFile"] null; + configFile = getConfig ["kernel" "configFile"] null; }; - libselinux = import ../os-specific/linux/libselinux { inherit fetchurl stdenv libsepol; }; From 691115bd209c183387e222dee71a5553cdba70f3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:29:37 +0000 Subject: [PATCH 050/320] Typo in kernel's default.nix svn path=/nixpkgs/branches/stdenv-updates/; revision=9826 --- pkgs/os-specific/linux/kernel/2.6.23.nix | 17 +++++++++++++++++ pkgs/os-specific/linux/kernel/default.nix | 3 ++- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 pkgs/os-specific/linux/kernel/2.6.23.nix diff --git a/pkgs/os-specific/linux/kernel/2.6.23.nix b/pkgs/os-specific/linux/kernel/2.6.23.nix new file mode 100644 index 00000000000..ad06bc4f7eb --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.23.nix @@ -0,0 +1,17 @@ +args: +(import ./meta.nix) +( args // + { + version = "2.6.23"; + src_hash = { sha256 = "1nyv7004w40l4adzq2b0hrvk3f4iqwngkgrlh8as9cpz6l4prrnl"; }; + + systemPatches = [ ]; + + config = with args; + if kernelConfig != null then kernelConfig else + if userModeLinux then ./config-2.6.23.1-uml else + if stdenv.system == "i686-linux" then ./config-2.6.23.1-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.23.1-x86_64-smp else + abort "No kernel configuration for your platform!"; + } +) diff --git a/pkgs/os-specific/linux/kernel/default.nix b/pkgs/os-specific/linux/kernel/default.nix index 115870b771e..36a7552352e 100644 --- a/pkgs/os-specific/linux/kernel/default.nix +++ b/pkgs/os-specific/linux/kernel/default.nix @@ -1,7 +1,7 @@ args: let getValue = aSet: aName: default: - (if (aSet ? aName) then (builtins.getAttr aSet aName) else default); + (if (builtins.hasAttr aName aSet) then (builtins.getAttr aName aSet) else default); in let @@ -25,5 +25,6 @@ args.stdenv.lib.listOfListsToAttrs [ [ "2.6.21-ck" (import ./2.6.21-ck.nix newArgs) ] [ "2.6.22" (import ./2.6.22.nix newArgs) ] [ "2.6.22-ck" (import ./2.6.22-ck.nix newArgs) ] + [ "2.6.23" (import ./2.6.23.nix newArgs) ] [ "2.6.23.1" (import ./2.6.23.1.nix newArgs) ] ] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index aba0a005846..781e1e9f165 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2788,7 +2788,7 @@ rec { # this creates a patch which can be applied to the kernel to integrate this module.. kernel_module_acerhk = import ../os-specific/linux/kernel/acerhk { inherit fetchurl stdenv gnupatch; - kernel = kernel_2_6_21; + kernel = builtins.getAttr kernel "2.6.21"; debug = true; }; From 13c5a3a17a31e685e437fa0a252082e3f09cda82 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 1 Dec 2007 20:29:42 +0000 Subject: [PATCH 051/320] Revert "setup-hooks using addToSearchPath" This reverts commit af60b70e57ba79f9ebf0f944ba0698e5661bc4dc. (introduced by wrong merge strategy during git rebase) svn path=/nixpkgs/branches/stdenv-updates/; revision=9827 --- pkgs/development/tools/misc/pkgconfig/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index b0bbc1cc513..41a61f600e0 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -7,5 +7,15 @@ stdenv.mkDerivation { url = http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz; sha256 = "1rpb5wygmp0f8nal7y3ga4556i7hkjdslv3wdq04fj30gns621vy"; }; + + patches = [ + # Process Requires.private properly, see + # http://bugs.freedesktop.org/show_bug.cgi?id=4738. + (fetchurl { + name = "pkgconfig-8494.patch"; + url = http://bugs.freedesktop.org/attachment.cgi?id=8494; + sha256 = "1pcrdbb7dypg2biy0yqc7bdxak5zii8agqljdvk7j4wbyghpqzws"; + }) + ]; } From 08154f031c8d7966e826ff56ca64bb3525c09e0f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 3 Dec 2007 12:14:40 +0000 Subject: [PATCH 052/320] * Revert dietlibc to 0.30. 0.31 breaks sed. svn path=/nixpkgs/branches/stdenv-updates/; revision=9833 --- pkgs/os-specific/linux/dietlibc/default.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/dietlibc/default.nix b/pkgs/os-specific/linux/dietlibc/default.nix index a98c7608820..b795cb60da6 100644 --- a/pkgs/os-specific/linux/dietlibc/default.nix +++ b/pkgs/os-specific/linux/dietlibc/default.nix @@ -3,10 +3,10 @@ assert stdenv.isLinux; stdenv.mkDerivation { - name = "dietlibc-0.31"; + name = "dietlibc-0.30"; src = fetchurl { - url = mirror://kernel/linux/libs/dietlibc/dietlibc-0.31.tar.bz2; - sha256 = "1kanrwjcmqs28z8arj9py9mbgjx5rgvi7il484pgaizpcxm3sqcr"; + url = mirror://kernel/linux/libs/dietlibc/dietlibc-0.30.tar.bz2; + md5 = "2465d652fff6f1fad3da3b98e60e83c9"; }; builder = ./builder.sh; @@ -24,6 +24,10 @@ stdenv.mkDerivation { # Remove them. ./no-wchar.patch + # Fix to get DNS resolution to work on 64-bit platforms. Taken + # from 0.31 CVS. + ./dns64.patch + # Get lseek64 working on x86_64. From # http://svn.annvix.org/cgi-bin/viewvc.cgi/packages/releases/2.0-CURRENT/dietlibc/SOURCES ./x86_64-lseek64.patch From 9a89e4487011a162fd5a36b14bcb08c865f8e5a0 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 3 Dec 2007 12:15:35 +0000 Subject: [PATCH 053/320] * Use gzip/bzip2 instead of gunzip/bunzip2 in the bootstrap binaries. svn path=/nixpkgs/branches/stdenv-updates/; revision=9834 --- pkgs/stdenv/linux/make-bootstrap-tools.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index aa93ec596c4..1b848c06fb8 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -24,7 +24,7 @@ nukeRefs() { # necessary for the absolute first stage of the bootstrap. cp $bash/bin/bash $out/in-nixpkgs nukeRefs $out/in-nixpkgs/bash -cp $bzip2/bin/bunzip2 $out/in-nixpkgs +cp $bzip2/bin/bzip2 $out/in-nixpkgs cp $coreutils/bin/cp $out/in-nixpkgs cp $gnutar/bin/tar $out/in-nixpkgs nukeRefs $out/in-nixpkgs/tar @@ -51,8 +51,7 @@ cp $gawk/bin/gawk tools/bin ln -s gawk tools/bin/awk cp $gnutar/bin/* tools/bin cp $gzip/bin/gzip tools/bin -ln -s gzip tools/bin/gunzip -cp $bzip2/bin/bunzip2 tools/bin +cp $bzip2/bin/bzip2 tools/bin cp $gnumake/bin/* tools/bin cp $patch/bin/* tools/bin cp $patchelf/bin/* tools/bin From 31034cb3d122b6a2315ec1e2082fc06acac96f3f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 3 Dec 2007 15:40:29 +0000 Subject: [PATCH 054/320] * Some fixes for rebuilding the bootstrap binaries on x86_64. svn path=/nixpkgs/branches/stdenv-updates/; revision=9836 --- pkgs/stdenv/linux/make-bootstrap-tools.nix | 8 +++++--- pkgs/stdenv/linux/make-bootstrap-tools.sh | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index ce81ff0bd8f..6358855464b 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -1,6 +1,8 @@ +{system ? builtins.currentSystem}: + let - pkgs = import ../../top-level/all-packages.nix {}; + pkgs = import ../../top-level/all-packages.nix {inherit system;}; # Have to do removeAttrs to prevent all-packages from copying @@ -37,14 +39,14 @@ let gnutar = # Tar seems to be broken on dietlibc on x86_64. - if pkgs.stdenv.system != "x86_64-linux" + if system != "x86_64-linux" then pkgsDiet.gnutar151 # 1.16 is broken else pkgsStatic.gnutar; gawk = # Dietlibc only provides sufficient math functions (fmod, sin, # cos, etc.) on i686. On other platforms, use Glibc. - if pkgs.stdenv.system == "i686-linux" + if system == "i686-linux" then pkgsDiet.gawk else pkgsStatic.gawk; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index 1b848c06fb8..0ec0435fce9 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -88,7 +88,6 @@ cp -prd $gcc/libexec gcc chmod -R +w gcc nukeRefs gcc/libexec/gcc/*/*/cc1 nukeRefs gcc/libexec/gcc/*/*/collect2 -rm -f gcc/lib/libmud* gcc/lib/libiberty* gcc/lib/libssp* if test -e gcc/lib/libgcc_s.so.1; then nukeRefs gcc/lib/libgcc_s.so.1 fi @@ -97,10 +96,10 @@ if test -e $gcc/lib64; then chmod -R +w gcc/lib64 nukeRefs gcc/lib64/libgcc_s.so.1 fi +rm -f gcc/lib*/libmud* gcc/lib*/libiberty* gcc/lib*/libssp* gcc/lib*/libgomp* rm -rf gcc/lib/gcc/*/*/install-tools rm -rf gcc/lib/gcc/*/*/include/root rm -rf gcc/lib/gcc/*/*/include/linux -rm -f gcc/lib/libgomp* if test -e gcc/lib/gcc/powerpc-unknown-linux-gnu/4.1.1/include/bits/mathdef.h; then nukeRefs gcc/lib/gcc/powerpc-unknown-linux-gnu/4.1.1/include/bits/mathdef.h fi From ff95bc3eea28f7e7c07fa640bce47ce4788ccfcf Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 3 Dec 2007 17:55:41 +0000 Subject: [PATCH 055/320] * Use gzip -d / bzip2 -d instead of gunzip / bunzip2. svn path=/nixpkgs/branches/stdenv-updates/; revision=9839 --- pkgs/stdenv/generic/setup.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 8d8be1ece81..e91a9ce4dfd 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -437,10 +437,10 @@ unpackFile() { tar xvf $file || fail ;; *.tar.gz | *.tgz | *.tar.Z) - gunzip < $file | tar xvf - || fail + gzip -d < $file | tar xvf - || fail ;; *.tar.bz2 | *.tbz2) - bunzip2 < $file | tar xvf - || fail + bzip2 -d < $file | tar xvf - || fail ;; *.zip) unzip $file || fail @@ -562,10 +562,10 @@ patchW() { local uncompress=cat case $i in *.gz) - uncompress=gunzip + uncompress="gzip -d" ;; *.bz2) - uncompress=bunzip2 + uncompress="bzip2 -d" ;; esac $uncompress < $i | patch $patchFlags || fail From f516036cbb4c5f2a79cfdb1fdc70287331c46ed5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 3 Dec 2007 17:56:44 +0000 Subject: [PATCH 056/320] * Updated bootstrap binaries except for bash which now somehow segfaults totally randomly. svn path=/nixpkgs/branches/stdenv-updates/; revision=9840 --- pkgs/stdenv/linux/bootstrap/i686/bunzip2 | Bin 69060 -> 0 bytes pkgs/stdenv/linux/bootstrap/i686/bzip2 | Bin 0 -> 73860 bytes pkgs/stdenv/linux/bootstrap/i686/cp | Bin 51124 -> 50964 bytes pkgs/stdenv/linux/bootstrap/i686/curl.bz2 | Bin 147746 -> 112642 bytes pkgs/stdenv/linux/bootstrap/i686/default.nix | 24 +++++++++--------- pkgs/stdenv/linux/bootstrap/i686/tar.bz2 | Bin 94989 -> 95513 bytes pkgs/stdenv/linux/bootstrap/x86_64/bunzip2 | Bin 74624 -> 0 bytes pkgs/stdenv/linux/bootstrap/x86_64/bzip2 | Bin 0 -> 75744 bytes pkgs/stdenv/linux/bootstrap/x86_64/cp | Bin 59568 -> 59472 bytes pkgs/stdenv/linux/bootstrap/x86_64/curl.bz2 | Bin 152587 -> 119172 bytes .../stdenv/linux/bootstrap/x86_64/default.nix | 18 ++++++------- pkgs/stdenv/linux/bootstrap/x86_64/tar.bz2 | Bin 425936 -> 431598 bytes pkgs/stdenv/linux/default.nix | 4 +-- pkgs/stdenv/linux/scripts/unpack-curl.sh | 2 +- pkgs/stdenv/linux/scripts/unpack.sh | 4 +-- 15 files changed, 26 insertions(+), 26 deletions(-) delete mode 100755 pkgs/stdenv/linux/bootstrap/i686/bunzip2 create mode 100755 pkgs/stdenv/linux/bootstrap/i686/bzip2 delete mode 100755 pkgs/stdenv/linux/bootstrap/x86_64/bunzip2 create mode 100755 pkgs/stdenv/linux/bootstrap/x86_64/bzip2 diff --git a/pkgs/stdenv/linux/bootstrap/i686/bunzip2 b/pkgs/stdenv/linux/bootstrap/i686/bunzip2 deleted file mode 100755 index 3f3f810e77ee2808cb9d83ecf76bf9d00e1b6888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69060 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

LI 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 z zaOA#V;W+Ywg+ux!3&-_WEF5O9SvY!Mvv53l&B9^*hJ|C&8x{_cw=5h{Z&^4Nyk+5d z_LhZ1=N$`2;X4+N?eADP{=Q@3sD97FA^m}cb4x5iG9IHOEaP)m*;duCog~R+a z3y1bs7LLhZSvdH=vv3rDXW{7k#lrFF7Ym2fe-@6y|12CQ{vAd5AAc^1-bkXlvLS+DA-F%*jbgOwI-y4oXmoIqCUDnI##y zpml)IYz$hw2-=+v+8hD88ncptfdO5LNx}4kYWagzmbd#KX_RfUTX3% z?5R~@&`(J%(=RPb%uC771sU}tpOu55fR#g{fR)3jfR)3kfR!VvfR!VqfR&@JfR$rH z0V~I%0#=Sq1*{xL3s^bM7qD{NEnww%U%<-oyMUELu#lBQvyhd;w2+m zt&o+Yw2+mft&o*tRv|0LxEH9O}ia98Sfo9HGUm9EHWK99_k% z95ahqIhGf*avUgT<+xkS%JHL^m4m&6l|!P0mBYA%mBX=wmBXuql_S1{l_RHwm7}AC zm1AxRE62tXR*u6ZtQ;3hSUFymuySyevU13kvU2E`vU0eVvT}r$vT`JsvU1dyvU2p5 zvT`geW#!mX%F1!Pl$GOcDJus@87qfs87qfP87oI}87oIe87s$%GFFZoWvm?k%2+u> z%2_!a%2_#r%UL;+%2_!Y%UL<*m9uiJFK6XASI)}uw49aWPdO`xSOqJGO9d-OQUxnV zcLgiQq6$`yLlvwXmnv8}URJPjh*q+4m{qcJ_*b%WWLC0rOsr((*jmZT@wk$egRP2{ zL%NEUL$8XJ!@7!5XsBddy)qoswIhd+hIfScOIh3kd zIgF}VIb5n)Il`-1If|-TIhv|jIi^>$g8MhM3=9mxrOBXmAq@Tnso>jA zW|owsrZD*BBUUbf#?MkRp@UX%8R*Iq2G6{b)S@ED!XrpCPa!!mCx-zv@CI&h!F8mh zmSrZVf=o+HNddL<7#xez6>>6*K{Hj56*vs86{*Rf(Ujc866k0TxC0An2txWqAk&gF zGILTu-3E{sQi~ZtlhEL1B7=Wv38-NNX}&T9fV@)->ZU5Bq~>L&rZ9jEgIVqbn)gzG zItsd&Err1a?#QB4=tyc(X>lck8^{TeMN16M;D$6*CuocYqyU0$Tq7b)IKVPHK8$jzV#2YBmFC zs82UP54<)fCshFwg$Ub0-YaHsD$37J%~L4IEJ$VWO)SZPI~_C%1q$($d~hM0pQeyj znwJbw1LFFC&yl#EkTkTL|sP2e&ezHqrKUh7j1@8xb3hpo zqRv>MD784Xguy2>FB_|I0Y&*G`N{b?3MoaIpw&X4U`Q+}0j-w;XJY4IPf)+CG`R%4 zf(IUM5aW$tws}HRWNJln2H2S}0Z_gGO?g4q;}n$S7csa()hMKu=H!4vCNU2*fQ+sK z)D&WX2^Qz%LsK~@0zs7>JnA831Sn&s<>x^YGiZ%zVhJoSg8c;YMQUO$$i5WNSS2C} zgk%Gv=jh`0yI%FgeB&brYeB*3n=GI?GA-MGoRtPFH82mufXCNPz=4BR^rh;4n z^FO$FLqsxYARjbTUtE${lFAU23i7-HwBQ7-5Y0;mCG$i`t&s?>N)!?m@={Y%KrOh8 zL{RR?$xJFrEUIL11WSYB9MtuKR~4v=^l~zjV5?a{mM4M+@DU4?7#tz%VL_&pBL&H%0cgA1n=gI2=B)g~t87nLwL z=fefSI>7!&O)UbIPD!Pp^`;8N;EER!2O${Y268dXugMStQ&SkQs{_R+LJc%=gGvzS ztO#bTC=_RumVg5Uo*s)*!3$xNQ;V%&qv^#3poJR9{sE0GrGTm|WWl1;G|&hYg9m7# zMP{)A*j&GSg`#}W)HZ0Te|~WZQq>9bRwj5gZaTQFhuqRE2W4LHAXsW~F+*@kVos`p zpIb0^UPd7!F)t-2l_411;{(-Npkk$1Avq^C5wzSNTKq-0`gulxC*M*aDHzm30);fKtJeqQ$92p!PF^MqX)7jwYy6$G`v`nSgXfL8Jj1h%U_ojf6q#omhs< zyflWq#5|C0dj;Hcja3>W+@Nu*0AYOk zx62-6$+K?ays75Qd#8*=I6M2O_$J>rDb@gYxgBpg)c8M~RJwMpOF!|nw|2^G9@EQh zXAQX)^x5p)>u*tTThQnDu?rq@4<@^={2S!BX02$v^oA?Zho(&rEA0*oI$cL-Dmwl zzn3;WeU{P|5v{%Nz1yo@W(g~|H`ZosZqe0WYi#gtJn;rkn_WiJu!j^MWZA(vSG+2F_Klk@Hx7|B_e_U4i|I0VKht9A6Kb>`U z&kNlPwQtG`+Ds1Qx*JG(v)HZ+J8HR_tw~)*+FALiErVW>!a=R`bNhrU8vMl;F5{6F z+kIAE_;nZKl5gIuwHG)zPMtl;!@hcY#fEKRHJKAc3-9$_DZPDna(2#vp!}`R1e2J4 zUr5{UHb0IdIxgyBt!#K&!kyq`gW0}UbfY|Zxg}k8iQRCRer)L)h1)4Be*RTo>i6K; zLhlU=_y1X&uv@iTdE2CEk2dLRukD&)mec1bpx^wB_g(wv*p)L~95Uw4P1ByBRsCwp zbJ;Bq0vJl4bgG%Xw6p&H);fE`=bo~{@1X%kzaII1{ulpY&#@P8YY!QowmaW;?f>cK zwjEbZW>;Q(yVvSY)PmnP-aX*SjQo2xx8ZhQg84E36r*VzRju78>tfb+6~Er#T^`2E z;{Qn6Kk58>ivqD{1yM z;D(V-*=+mS*-_SN*F>2op1#8F@pd}b{|{k&zZM7z`0l+RGG+E;N#(X6S-vp+k2}5J zeND(+`{Q~+&Yw#P+K*CgUp?C+z4A3TTgLlsyVb8VE_-(QM#Iv3`EyflWt~+%a`(cc z11#Sbp56R9;bdK}-QJTE{_hmnwr9)o)wLTI{kB>s`t0|rGY57oufAKk_*jD3?84gb z^H)S~nI!L4I!#KaArAJGTP{&Kfvc!{~^Og3OiRM9<}`qF#0U|d*~XnTRA zghB2N8B^Q&Oic=LY|(78+;61s@CPoNZ2oL_kg@$-LA#EI3s$`srmI+;4O4jhT2wdW z+ZD}9wUtNDS!Wy+m(@PAfZ^4Nr2%WN3Hjz+I-RY5zozWn?SrQmJ}$eK@O=FT^yY$1V1u0*O+thy^nf>f9=ieQj`yN#GrXRCvxN!S-%hm2Zvy!IO&fC4gZZgl> z|I;@LY*^36Te$kZw$ZW-v(Jli)3)rnRb9G+Io53J7KiT}K}Ta$jHF3 zn3;jWfSG|o7j#1s0|SE@69dC{1_p+k%nS@ym>3w&g7#c9GBCt5GcdenWMFv8#K7>0 zfq`KwGXujl1_p+^ObiU5`^-Sw$&WBGFyt~ZFxW9MFnBUBF!V7oFx+BdU;v#RvzU>A zVGAPzgBT+N!v{tNhGb?2hD!_#4E>A@3@exz7#=V(Fc>p1Fo4ccy2!}Dpv}y{06Ky# zm6?HIF%ttrG7|&CP7uw^z+lM4z!1mGz_6Z)f#EkJ1A{ap1H&Um1_sa}x$4Xe4E{_I zcjYrNFo3Ste#gMTV9mh5P|e7|um3wA zFf%Y*XJTNu!^ps}6{L=lfngm314BF1UsVhY3?TmsF)=XgVq{0|V%wiWnvahJDNo45A?aF)%QI zj-3OY5D5xP&^eiW%nS^5j0_ARObiV37#SE=GcYiKYNv8W28LBk3=B^h85sJR85l$u z85oin7#K8}7#J2aFfb%BGBC_yVqjRx%)qb$Okr9%17cem}6fiI_2!c+%WrC!2Wo8D3 zIM8vb3=9mh&@ciWvu^@2ikF)=WdF)=Va1Em8d z1_sbUZoilq7(nR}l-2_o7#QX=GcbVEi83=VfW{|hGcqu6GBGf$VrF2_VPs%1WoBUT zV_;wiXJlXi-Ovm=X5<$%ow6}AFq~m#U=U_xV0g~Vz)%lOCm{6+j0_BQ3=9mB%nS^B zm>C$-7#SEqdESMIfuRPJ=b0dBZ!a|c&4v2Cje&t-8xsRVHX{SW17-#WO=bp$=S&O? zD;O9U&M`AEYyiazBLl-5CI$x3x$2;Jf6c_e(8R>Ru#EwdA3^?#U}RuW1*K z3=IE4X^x43K@a2~Mo1n3<&Q>Y28P|t3=A`v7#OaCZc1QcU?_yzb()cZp_Z9};Ryo+ z!$w9123L@Km>3v9CmYOTW?=XLIz|FozJSz%$_-Fj{KUk-pvKI=@Pmng;VmNr!(>JV zhWU&P3|*iwWMW|0!^FU_iJ5_69uot@1SSTCBqj!iM@$S1p!OX|4=A63(q1npEip4N zI5ILYIDpCrCP-X;1BER!1H*DA28Pd|vU zA*dVy<#CWWs61z4V6bIoU;v%G5YEiNu#=gAVF?oh!#4&7hC)V2UIXR-cT5ZnpmN!o z8B!jDZk_-gk~W(el2@xh?g51#GXp~a69a=JDE%`rFlaL|FdPG=SJ19-W(Ed(W(Edj zCI$vpMg|5RCI*IcptQ!wzyPW*Kyd>K@2O0XymNt>f#E(g1H&XH1_n?a(#g!g04iTz zGBGfK?k-?pW?)cbVqi#smU|#KfQ}cv&cMKMnVEq>f|-HgAT#JdAO?mFAU82HFtmW` zGiFG-$^z9@j0_AQb3x)Ij0_Cspmf8?z_5vtfuR+|1|9v&2(brLCW1~_KX1_p+Ij0_B^jF5aE1Uk8g8InF$fa(S&28MDK$eakS{(-|x{PLjA z4(J9-T>6p4LA@SiK8U@5fcYRbYd{1HgAS^ljonSy%x9Q|T`kNwkRA;X0TTe3zZkn7 zxU&CT3=Hnh&Q=Nj0Qrg*Y)OgYKG0P4kqC82U4wk(tlO8W~uSveM*WMF6jWkQf7XiNf1gD#x`r5R?B zSPv_Q!XE~P5~v)A0?liKXnm-8Aa$T~GN$}t03AmLk^*CxIx{47b9z`g=HO5VIyetz z?~)!?jwOF!ceaC#1KpAbW`GXWfT>&2!^*MZ4+Hpi6tEC2 zG$9XF2s%gx#01s%91IMgqLjg57AuDZ7b8Om=+ronBq$7^bQsh;D3<}G4tx(9Q~=~A b5EDd$!UV(yVH0jf2GEg#AT|htJflWMqH=CI)5(5N|;P3x^2<14D=$h{wQS!l1yw%%H)*$G{7g2di&j;b3TB z;Rs=8WB_4Ske~nqL|%ZAfnfqG2MGV*VPKe}$H2e_l@EMck^*9)V|E4x1{MYeh8NR8 z#HGt1`N+;^fxRw$ECFGGi!0``a&#Ut{MLMk#j@y6>5p!!*8e4f&4)Oe|0|S!>aP0J zY3nhEmE*;MEes3+FQy%1VE8g2wDW268;%CsA9Gka7)p3v8#W(cS*$XFmE-@Vg&?Y1 zp!HJe>m4AgS`U=)9A{Da(Z5n_bKFIR10;OhMTO9TDsxTA(9>t@Ct;2TSM0gD)ixzUJugU>*U zKpc(^55^9G!=arAZ@%b!dh^{bP+Yxcx_Od+n+w-}r-1t`D$Pe&ntyTLICbyf&678H zCGuD~N*~<45eu>}yz_XN;kV%CHzwUo-9ap!u5Wr>pLB+P=yW~M>-)y=68|F!Zu88D9GSxx62b3gANzdGj2OTHa65~yk;n2F+A{^!=d>HXX*P5 zjI9Ssb{}IgXXp(vJ!5#X%jv&Y2aBbn<;R*Y%|}e42}ygSi=$9BOufl7no9 z$0k;ej2w{an+Vkx=+!_`L9612(bs zKxtfqEyQbb;NXLXc2GFnr6ya!N*AVV1E+VM<~KY6FD64=)cl4Atm{Sn2C$;m10|)f z2&)Tc<#-(l0r|NsB* zWDW`n3wYrG3Fg=0-R>-{2TE8vkH7xf`N{CWi#Z@Q?kv5jUpjBVG7reY;N~|HK`$1r z1%w%KW&clY^7(X{yGn6vF&T;17#|-l9i$5?0rEd(sy=HXlVv%b(P$Jy?hKGOO zfq)lxVbUc}TffyEX#59ChdV(8zu!5-OI<8d9Zem(SUH?5Pt|-n)(B!UbhGaQ(Jz=l zE@OY)jhd^QZ9%D&v6K&%K7=D#IbQPwLL;~$1|IWUAt~*Jz@PvBp?MXowS?~*-%Sh*FINACTJmBZL@hYFSYFtuF)#!N zWPC#?mxDN~JN6Gaa+}|9ybxDoU} zmq4D~Jpd}wo8J`lhAs#ScoDb)B7Ld#Kq*Ui=oYV&ofl9P7(f(& zYmC+dr9$1V8w@Y0GJIfQuw`gqVBnv62&yBz^E#xK5Xfj?WMIfR2r3s|7(&u(^N;_X zhfCxF1H%JeNI_iGdZ6=IDaeh%FV-vvI|7u%K0uNfq|6KJJQi$t;18(S|Nd#+Zcr8S z{i3HeZ^JHDjvCR|TH(&&kRmfn;ROrC=YI?jfb@R~i~3vX@bItPz`zg*Nm4Ij zS2HlYIQt3Jp9{PRpzpC1O&f0zYOfj)&nK1;CvUrzn#?pB*nj-RR=@| zzt{p%0*WU{94K^)hJe~Kp+CAsW5A3*y`evX0$xmls014p2`dJg-w0%gfJ}OE8cEs; zCLInc(;MI9h%hj;9yrDdF1|~JASFEG4x?;V4*u2)%nS?*K}CM^52g~^<{!)@TppzX zyQDK%IbIud-r51G0bgW+yy~%um80|4i@2Zv{|5wQ=wz^RfXmkxJ640e`C1yL+UDo~ z|GShkSUGlpw7k&$`TsxE&JrPrd6s|w|8F_K-;%?`z+ia0+hnfB1Xd2PROhD`f4_qy zOH81}Fnw*rsAna}4+5_h zz(ET2<0*t6L1pSoMkY|>0^%Sis2Qb}5C=*9`TxK5KX#bery( z!^+Y8hNs)MWezJx*bA+-3=E)V%`HeyZau)?(#6QY04svUGU4&#u$F;gA*j*}2*~h2 z2y3ooV0h{B@Bjbs@C;B<26p3%+iPHUb(*Mj9)EFo4aAyam^CHFVbI_~vf}O8&GtDGIqmUR*o0ZE5YW1ErptA2nv`LfB*jv4n}g2*BS3zCCm&A$HA>kP(k@Jm6?HIM?*F%$BSfemW$ZN z%E3^l4~hMZ$q3i1Tg|`#iS*WA|Nlopt+@*|{S8lerzxm`1}QNZUvxtxS`YBIegh@J zH#}i4$`N9ZAY%VbL$-n99AxW%(~NDb9KEr3!h&CHQUoP!h348j44tiWUjP5k->L%A zVGB~oSSJ(^0I@%d>xB{6qXL~jUby`N<*(A<@Qe;&28Jxg-qr=L|NjpFmo=R>DxHU4 ze1p_dAV(!KF)*~=u9FIes`|ebWKFN@oq!jItw5FwfGp>4UCYS8@On`|uj_+=Ue_l9 zy{<0;dR^ZHWHBIXFb8P>yOzJTh7nTmyy!$&_5~)k4kG5j-|~==fx#M_KT6C%<|B7 z?Er~90*Tz{{Pg1H$N&HDwt~d&Yz3(e2nY^uej{;5S0Im-;|8xx9xKP)7!?7Ck{i4V zd8`}|g?D3AIPSKBwA|SW(tdX;h<#T^C1V33dGdqPmceUp%&207Mb(Xf7ZPR+4Bf7G znvW2E~c&C!~UwA6nxILuy>N;?@Irh!*f}qbFNB4fK@hYkRLBAq4d4#9;c~2HwbXJ3hSz@G zrXZ7E=LZBJ6~V`0ZJW+xr4Z}DCGL#HVC#@wAB?c(6j+l2ysTW!gi=<{VPas|QJTfd z@xuHID5OD!5ks9mB%F}T%BE$ovNH1P|Njxtu-Ui->_t#+M7ts(&Q1-26 zWMDYnT5#k4e^71@2>4(6qPMl=#{d5T{M%StcCmsw4xYzYVz>AmKAWZ_zwI6=-x9kGtbJq{8 z2TJZV|6t*7T?HDT0he=60wBt*Bw@-KO7*&HpBP^1_I>f1yNkuDqeTnkGEl$kV*ph3 zSA^;kt{okq#C00fbf|s7z~8D1>WzJPG3yH`UGlfcf!b7{QZ5>nYf9@u0rXcRGmX2En`gj4G^25{N(axMb{L+39@Su*qO|Nou8z=hI_-nak% z8-D9%*=jL?m7`l`E2u5r*_v_V|9`N2=dBmnZ~p%`ywq}_#PW~ff&HKsPV>qCpVoEW z?>q%&1O)uw3R16m5!`$|)(BF<@M8Xa1_nrH>j-El)zYo`A4}=gNKxxbE5`9>50l69+PRPmHCmUWs z3V_p}0>sPkz5^S?A}oD}fVq$m#MO5=u#kb_C8!+&GZDS-aPK`yeTP#>!2#_%6n;di z(lWq(hwYHQLk_5Y0`4+^`VO+7PDJ>NcMHIg^#G(aYv%0}nv>xa@&foeAuR;4C5%{2~hy)9^a&84F6C zcAbTRVMiUPG)aDoRHtES|IdfjX|3;&+W%0~-|z%?%7PlGkk$?(tXgY<$b+i2PmmsY z_=^IB*ga5Zq%{Y#s_XUrfL7au2fol30Yw+6ssmSS{4KhmJ^{G8Q)U8HcOZj$w}Pv? zAaHdT_J1p=KnB-&UsV_wx9I^DmZC!PWzHyukrkjA1X> zA?=XnH$1^Fj?V$v2WpbHnlgiOJ*bXc4z43NGcqth`T|b^pmz9v2z((Z1lG}9`+=d< zxVsclQ5vCElu#|8s`xlUO9|JGX`r&d5MEop`uG2T=Z_aTZ$U*Df6Hx<#2cRQ7rF?S z&1Pa?um&gK5>Oj7_{C9p@OIQQfo8uz@e0zE0LeKH{4MFAa0B`9DMSbqJ;5+BE`-_k z2(x9uAtDP=k7&L)@V7{TG=ghgMua$j-!xFi9=W!D!84D6;bk@>Xi@+?E>cnm>ejya zIs+VLoj+c*z5#o)Rr3G;|L{&+FDN<#Uwj5-6&sb#V=oLLZUDJ?J}3^q)d>fOfqHu& zg#j|8d4(h^WVZZ@dWfh34G0WW+7!Ep*o5YVQ;4Md7jZ8@eF4Y}h5<~&1B8aMISdT(kj(ueYB~eMixW@( z|9_$W3|t`W01qB-e)j*rHMqP3wx4hEp=}CK!-IcE4yaor1{$#jb^KcnbR0%RSBWmHoDTul-!GQD2Kfr5hhqin z;k=fIDn7PVE2Q^9Us2>|G(unR85HltSOTe76vJ)GCFct zIbQ2Q$|pu}fIz3Bpi03LA$20b!BF)xK<%Xivl$p(OCx){58-iUNVLP6L%lvKEX_|o z{4e|y+W9m*EI6?FjY4-NOSd7y|Hr`XYKCL1P#=TS=P_1LtTG;F1vR!oP4VNbpb-jA z1_lO5gNp$Y01U@jK~p{u6`(mE2n#f_AqQ3q9z%tUxqzfH7Pql*WO2U`n8v^m5e4C~ zzhIiizyR*+K^j{+PyYXhaKRxe`{e)sZt)!^>sUEn2!ftv2S**&SB-~yy4f$3mQW^?g|>mVtA4H4Af!YwGkA6vCsbh2M?9M=IIuh z@BHG<)BpcFUEf%K?sk1s_qOxcaaPd4IA{tT;k!=PJI7paGrkV!mJ0~T*p|b}5&S|F z7S*L}$6RkSyf$pG)-7dgsJ+cls`eioF3l(Z|1mt!c^^C6&g+P#|{8f*s5Xo?!u1#s3&34>Ujc*L;9^F=!AoARuEW*j{6}y&?et8T-Lv@-VRy zuH#@6K)EYCJmV->mJudf>JS*1aT+Z4b}BTXmg)orWn2V{-Gqxt1O#MU1B)GniSf4t zfr>k@s}3+BYyms&r5O{bM7h%q(g+EjZ&RQa@V9`fs0M3Y{#JG-28M=eM%{g&e8}JW zf{}sY<&Lw0q6rl6FZn?ISa>|V1odVi0S5B-%MakJ0m^8MFP|`g+9aSj z2hD}Qyb6{AWktr9C&6q`ub1)VUN9S!DH&dZx+{?U2sUjI*aT4a1Y12B&IKFT0_TEe zHeXjjG=kQbyv~8JL2F4~CqUSsME^Pj!Uj!|zV?8yK^gzG&5Qmg|Np->{SPh`UhBdJ zD{do-pO$IR_U8+mC;$H+X92|@!;7#b3=D4Fu6Mcxx>$@_4)C|~{`>zQ#CKrnbiD%^ zY&`Jy|NrjNH!lN0=?Ia>Hco;kB2bMS5RmZ>oGNF+#7p^+f?bdaG}E5(9jv4bSqUhB z!NKzmTsLR1a{w%UQB)UBy^15L8waD_2B%lG2HwDZ0 z!sJUp<$*m|tP&NU{ML`?@|TD5D81|6~F@ARzMK zWECF}kkJX2KLVHMfTl6$fPjq2V7V1=IT7&W$cx(#|AUshWHG#)^Y{P%fGj3xseBf$ zkS+LS6ev}J3R(Wv`toC6YTTl!zl-M`hg0obe z8N{ie#PeFK`4@AkDx?X(R4M~&^32MGH$0jrGcdel`3ve!fD40C3GfPqW?N7R&%o~r zE+W7srr`lEeiv}93Nep)G047B-GG3MKcGsI>BZ|l28Q?u2#^28-983}=r{{^G-<|Npz|Sz7;>9)Bqg8b1HQRGJ610b22wavB_X(f98E z|JTmlNVWt8L2dZ~aUech0^Y%GX|M$~rx^HKRx&U!yle*5e&7KFMrdoJl+*CQi@h(= zZG%_EU4(6`e~DxpXv~PA#2(g+G=mQ=WrneGyoiJ3X>9GXH$31rS-?y6-~a!2$G&;3 z+|Arw3|bEYYN`gjNb3RzE~p9K`T0czgx7kz^d@+fOK<9jNYM0sZ{nZB6G9Cybv`}r z-~wtF9e417Pyt}7Apz8<`~Uy{F&Cx?2B*efpoM^?pZ+(1CV-&}zCddlx@$RF|MRzi z2926)c^LTnHh?0lmWPwSe;Jr1!oc4#hmnDyu~r1syXWr*Rin+dA`Ck~%`<*iSCQs= z6^2e%ky7^K?kc}Gv2ZlkYcPN~8rADqI0Ca6GdA30VEA9I^FLgr`G`R0u^oT^|Nr0m zjlacqHnzSXvL1dISdtfwgFWRv);D zfL0j>1_mGrNq~fcf)GLh0bvknu(O+w2)qPUkKL|3$J;qB`3O zKoyYdhvRK2AUa2 zjmdD_od=}$xH~uuj=Rf%c%5!4oga?7nSkQ)xSIt?=*6GE|Nk2vc+I-w-~a#rVGVY0 zGu`l8aF>Tk=VAVBKVQprH-i#`Tj!yJuOtkA9eluH%rezu0xL%+SlqhUqULV5v&k_R z<_N}aXA97(1X0i&iA3`c#_nR3?qHWvqYfUi*ZJMSD&5X5uZ6pvUAlu+I(V46gI&6v zRh&A5T{?IKP&luhj=4yLFm~{Wp$OyQc)N5tTXYAjI5xjv>GXE#VBz}j>;g*Zpj8^( zt{h>(tp`fty9*Rrzm-IE%UK>S4eE9St%>3R#a6M-|6sH@MF_#;6ebiF_Pinik+AMkp5X3Sj@H}!EucA>=2`(p{`U2tvgIEOfBP~Jqgn-& z*qtFMzZ#tKo#83J*&r4kYIp? zeg-7;6TzV$-Q5PV36@>JfeFe~Z6KF`L_zrqAqsLSNEA7;h>eEsP@dp!SB~yjfo@-s z)=Q;4tp`dnk28S$^g6M5*AZa`29^@B)&nJM#~J?r|NsAZ6G#ZedhOJDyM(3nWGPe@ zqy-`iV!c*@=mAB4chd}E1_p>6h~LTB-84m*fuWN*I`(kr4wXDsj?SmCheHhyfT_-> zAO}qV*<*O1^%B3|q3%$gPNwVwe`32Eo|Le1fKn}Zb&^29i;s{p98|_KfLB2U1_lR! z>t?i7P{GY_SU~2+f_%sZSy9+}yF|2M_XJ^3BfJ@8AINp3e6N*S50tn8jbn?b$_c%cg#1Un+o8Os4$0rm1{GXn#N0dj7)E67^TPFIfD zmk*m67{FN|JS-SAj9kjmT`SZ2t%U73sIAWcswzqpnrlTE%cYuY1z5^OnrkH(O4(Zf zmvX(9Zu}2gLQp0QD&s-@tmAB;(0(Zhs!!hV{4eEsvAP3X$F&|P0W10r@*LZ*|NsBL zd;`i;Z+J4!2s1Fe=xKr~>pWZvR(KAq5R{c(9tJHkfjg+%m8aWR0^)g403B-vd%ctS zcykXZ3_yLKW@sSpfC?OM-UDYHfU;hTbWa9p@b7Z`{~xTi!$p|IvGsrb^YH(rBL7PT zU;%j-wkV|p6fR7iY~TtT9QrR7H^FACl)Ax&K%B$a*$hf#z0NG1;MnNA@tVmHdA&4J zU`wC{ws^OzfJgHWj&i=n|DbxfoUOT5gas1Dprr=TFa~uaLDR#fJTKhap@9bpW6_Br{?JV&}2o#y4w(85kDaC}HLJ(>c}S&Hw+s zwa+_TpBWx#J-K@ID*hIKMh1rcoS@{?>hlINSA4uR0Lpr8Z&O?%W>a3mW>ZwE_FCdN zSPi%|RD2<5>ZV&3G(8VBiQo0c zYq@}c;IJ2J?F14HLwQ2lbdq#UZcM630GJ^OyJQ@NY}bL{|m zm*4kC^BbNlxhw|I%yb2p5v|@AScAWOaLvhZa(!N zQg(tRKtUJ#(j6oL5*6TI@5%!%eodyGc%WhT>OMrpD z#Sb(c!PZ#1_#SF&=PR|mJOT?4E+7;I2jna z-E5A#@qj|1!;RyA>6!m!7B9+w{Qut_XVH1<;;YW%-EE-yv6p8qC_tJYvhZ(X5$K)< zs!1=u;NLD1)%<|}-~$293!sKHc)O#V8fo9G{2G&?2vrY>1F}RDozfThah<*GMc|d6SUOk7yq_H z;2Z+lfO8xrhiv~sZ5y}$`~Sc5C;zsC)^0YXdB;&wyeHLd^90%Un}6G3Yd0H6DmDkT z(jck$)@QKix~GAPrOuldU-EAg;er-V{M!yRKV*R?zRRz=`#=R%^CSL)j|4j1c=)&T zL~@?$46}fy$v%i#psqittizWqA&CmL$m?{ocscj)|NjkjprX4J)U}2twg48ICAP23 zpv3kWR8Jrm-Q8{$2OlsogF8Om5}h{=zTkkC$oO*(xZs5(GA!k>4rmqEPexF-z5y$d z?}1j8xmiGy94<>GktzXb`G2C*PogtS1d_CITDcR{3qY~5G`|~c9cb*C>ehK-SO-aQ zMxa4_++m8xdwwFG%?S55A7JTpFfi?9$UBX zo$lBhkV3w@_DXl?g-&o>cE(wBRtR(kh=51aKn*p}920251CoVcZMxQ1psrIL4+DSe z15j{*8-vYt229^CKpKX1QUU+BMer~%WLW0GNAx#VgImbWbq0)eLa>?mtk@S@A>xn* zr*#`h8-Hsf*xVEz28QEqEPMtywml@iwB=!3J;e^H2+{JwdoE84WD)hCoTbPDQ9W@U#SdH0W!+)KWO+c1=Pd_ zj}CyuUWS4e@<2v)O2i;)L1Q)$lR&K39-v`)DMki{&gLb;3=E(_1J^f@!H3S>D?lSt zt}j46ed8B#<=`aHdZ0uaViIT|1!5A2W%&Q)b5M-z28}&1l)7~@zeoVDh$^-IZ=3-d zsmWseU;5_7`ASeP>O;hT;}<+I6HC{1yME{d4`D#YF1lUcK*laWR+qkb5%CEc4<*9Q zKUhj!TECSrb+UDWJ^H$}oB738@T#N|_hzW|cFkbNGnAM@+zN^rh+9Fdm;T_X0njiL zXogK2tQH~-;=fje>gI0+bz&eUfVxZ&B_I|k;$U6SOW>0MK*?waXyA;cME!rM!2eR7 zfL_->0WXw6mC_M`&O_auAdl=xqb$1TCC<^ zEMb2Mnq%6;*v$;;Lzd`tdk0v1`_!s*2kUe@2y}^XbqI7b|91`m^$|Tp{yPYO`-ta3 zeZ*7U&H)^upRJvJ_r?tYmUZ$AXYhh=ZzO3&;S4LtTs9B z4C;L{yk>FebhhYb{_nu?pW(j;OLGMW1Al7-C_)@~UIu_24|DGe{$5a#0t$YRd*^{t zcQp?Kf6Ek5*-4(uUy$JPSf;|!kF2?zj1Jqru}lmh{;c_4nSkpvCU1iujD0B7~%&fp=HmpPz@2_)89 z6aN1H-{tz5%k>lgRM40r|F#3LavL_R9LfV4MgdLycSk6I3ME-kOmkZv%`X8*V|$fFFeCBPGFuLYY={C~{@UR?K@6}*W(3N$GItr%>& zV8yB{h;GZT2JzKfWoHv zCkuc7I*^J>{2ibN5nld&P@uG4f)1))2nr0wU2*C>f|kRb$4aw7byO%vr|S_= zl^J>kG&2FJI0FN-AeHA!(Bgt40?j{|JE66wGD_{)4O*ikji@K9L40n|4)J^8FY=y% zZF%RYh0J^*n;A3$VVZ}Yc;BWWMV9tM8!%C25F zmfmTg$&yajJDs67x?S%aZv)l0pqjF?4OABg1Y|M&FTL?%At<#T5$JUN(ENhA`3GZ} zc`o#LQs6YThxyr7%~Ho&%Bn1P{O=fBx*kWre4gF*G~ofnsj!Tzy?u5CAa z(U%VvXgyG>(Omn1g}((Sj>r zaCf)O5e6;ae$&YW4j=CBwgq5;7a)Nr3?_vSp*sY-BSs>G%;K655 zD()`j>5dga1Vih$5-~&wlyEiI3V@au+^$rFr~$R`KyzQ92``8`kjP6WP@4~LA_w&; zKn*Li7hMp?fD$>VQUev%pm`b4!hw09c3dYo8hYJWI$b|Nq6D1PKAz6f>!L;{*{3~qiS(j6<%>-r-Y67vBsS|N=x za6_!Q_6GyM>y6GE-Oy7y!1Y)xM+RszHaMdR(Xk1DB(uif@0mg83c$Kp8MXzi94{_I zBtfZy`2}AM1H%N+IaJ-Q9LF1Cz-0tz`aA;4iUqj~bjn8Ox!}&juNAw4efYOEM}tP4 zymdNQ1phnx99#@i%+b6Wq?@C=8ALVzV6VTj6Ev5vc~JA`d7R~2;b=Vev;yYG@pe#~1)$Y8mpXevt+39y8K5!B8mkC~ z65ek2kpJ!>9W7Q7j12IlSC6~PLkthNb#5&IO}OzKZ)vY!0-3|W;9%Vf603V-c%XMG z$WgCZI#>i8tldLuzW26*1PpH*emmZ};U8q4va@x{pa1_~z6Ld*rh){!dqGa=W|`RC zJK@j&{~o;}9L+!egVrQW1-XrX8w*oc3p>a$7GUE#TGRjj|6j`H{1Vh5Z@pdT**z8H z{9fn(y>X1aJVh%QOZfk{*Dx_Kblyul&dA8{n)g50xnM5n%#VYhlRoPBn_n>P0{Noz z+RX3&UY{_$-PH>kTI`()BD7EK= z|8MCBMG+)JFr{^h6!f|=c9&~(wwEw5Fw}we^!zUm0p*g6Bt)J#0;>FuD0Ih%7+x|w z*?gF(b1rCg>1)BvgP;n4@q*K_7Iu}%3=I6%Q$Z3n&mEh8vevU0UV8nmc|XWxhI-JL zMaE8U28I`G;OSR^Zm^ZdTYLWg{|^dpTTpYRv$X@1xy@|DK^v{Xa-fEHovQ76&@MHw z0I0=XCt@29nu?qcI-RZg0Ba{$rn?tpd-qh3k;hv%{Dq_~&(5h!K*MXjGeAj98`O3I z+tNK3q~dsM3sl|A?|VV&yt}7@#5)i6woC_w)oZTqfIrTRQ$flsdqHF^ck=-j>$xD~ zY93pIO{uf$?giOu*$XnFM5h^S6k~~U=Lv9P(ryKbcV3+N{ijzcUw6xVkjdVfV7sA_ zQRi?Q!hHih``|V>fbRXgE2Hv%E6Cp9|64&W`@a=rR>mSk{HSDr$|;3RuqB`vF}&0Z ziICTF)?nY%@LJxg=RDT%50u|tvqKpCP7cucy44N#p7VdO^EIb}BB2xPF^ESP`1?ow3^62PJP5Q}vyC^l-|I$DE+rdBZX zAO{NrL+=#!gpCXgh6i5XZr%$DGq%#?&fkV7UkCATYq3YfYMBNNv-7qqex!hH!ISO;s?2D_p8hhgc}ZZMPa0RMI$0~Y@6GHm?Y zLkyTYdmsG${~sjAcJMI^g)xrssw2h>FfoqF#|EhI(u0_Bh}k|3?w>xIiO6b&R!lUQ>L?50Lql> z>=l7B6*_w*piHICUKuD;rL$K7%2ey@Re>@!I(s#sOs&pd9Vk<$v)2I1)a&dufiev` zdo7?$qt0F%DAS~~*8$2j>+A)c^8<3aMQ5)ERMe`o*9Xe9>Ff=FGVMBhL!eBD&fW+p z)2XvJ2Fi5l>;)~|02$_Xa49IzSvseJh8sG2Q=m#bI(svqOs~$~94OPLv$p`s^y};` zfieR+dn=&Kpw8YJC^Mw9w*krw>+EfTG9x;BJD|*{&fXp!4Kl<|-hGJq`u z8G>-YAJCeLsUQ;(Vn4uQAfpgsU%+A@a}i>o!xX!xf-C_!{>>jyng?ZYxZ^>bgG)gf z9my3hz$SqNVJ0113Mv3t4lV^{ewKqvL3y3!;8IXNXF0eOl*d^*r#=B|11W@Q>zw)k zEC$kr5Ce@Cc25Nvfe^a^RtGWxN-h{1RARx{pppv429;1SHmH1pu|Wk4j14MSU~Eu< z0%L;;5*Qm)fWX+Gf&<0|6&o-%s4#%BLAf8s2IYDf8K8r&VOdDQJQcSmlmtxqhhJ090-eDmMg`8-~h_K;=fEa$``raj4t`RBjUEq5mz@L8<$-D*tw; zfB(VV_Ffi7XqxW^XOQMYOqO7Yy4&4TLHV(}6_mredqEkMaVluI;XgR%IXHH@%-zum z9$I+W0XhN-JTlEx7upRTlmHKYcV3?P{kOsGfNtt=Di(1*wv-hQo{c^EY4k|p?mD`+&Pw*@@-5|DWql!Kk2 zqeKBOu6rOGb^1Tp>gK(m!5-#%cEbZNCEor24;klRuLBR|?E($uSw9C)oHp(S6)Qn* z3=9yt-5@!6h@9bp-q3f@(O>W=QOy^_+pjIUTC72(kKxI#(03iJ&7kpP?k*S2_Z=ac z?;Sf1Sxf~9mA>r)(;cDjI(n=x`7kgzTh9eqRde8Y>m1Nf7HD7eGzQSPkmG;L!~8xs zEL&%QMm_w%lv5{|a)ga?HUAcbIB*ZhfpwsjCr1RD_kwgl2PpS~BvPRgZ+IYqmI<~C z6kx&sw}KSIf(;@83g6xqc7vIqOF?qoKmn=nAFKs7CJ1tBtqMdn$QZ**hPRJ{od%j- z>FoiR{Vzj73qnrz#$M_?VR-4_1D0bfk_^2r>=6wX3?(2Aqmx7PFM-kzj?F&>N^f_^ z`*hBo@E3Y!OGAzJMTVWAk^WL9_>jNz3ucf{ehZd9INo{(Hqr%VHPmQaVkogZ_<*H1 zhCSkV>mI0VgEfXJFZMnC|KIsPSV{91sdFa5&QK2|L$H;yzb(MOlf#O{r~@X>lvt{ zUR!{D2A#-oexVCi50V9q7=n_8<>8t;aBsiheF~bV1Ic%TQ;X$X5WAMe@b>EyaF+&y zT?%qUK!ys!r8k2hE_L@g-nsyq!a7@z{Qdv`C1`a==3I~j>i-E>UA9ha# zncY1Xq=U^|Ok_f!z8 zo2RK8EWy9cMS!LAQ0I>qPac5=TV0HqaH=>2Rl$N&#R8}bHk>Nzpei_Us)&KA;KHfG z3aWw!rwR$E3O<}FzCDEaRsg4pD^L|eI8|(dsu01cVggi!7)}*=P!$q5Rro+vNa0kW z1yvz~Qw0Z91@72?_5czd3OLO;0#%`eQ^g{v3Kg6x8lWoFaH@!ds?flx!Un2B3#SSx zs0tmNDt_FD_*M_6ifd361~^r0fvPaVsbUgTg$Yg-1yB`cI92#TRaoFup#xQ6g;NC= zRD}&r6))~V!ov=yiepd}4medTfvRxAsiFz0!Ud;_1gHu(oGR>~Dm-wikb$c3!l~ld zU5IaeaH_ZgRpEzI#Wtvl0GukOKve|cR8a&~5rR`i08~X7P8E7k6%ja9@IX~W;Z*VJ z4kSEcaH==~RS}0%#WJXh1e_{bpemBO=R#_r=I*(ms)>JFhy+XLj~6L-{{MgN4yoQ? z6&wHd;D4D1Kvf&#h3=kqP^*%E8)S5#^T!LLJD`>Ws3Pp{1=W(xhnXyULEO5X-E%<# z|G`zZb0@g6eCZ9^kh>Msva;L?szbp$2Qv19>fnakkUALFEC>QO3qZAeK!z)#S#Z)5 z+$?C=3tDu;z~2JeKEF#G+Dg0g|NpKc2-_aSc7?EwL2S^v-_9Q|)In^}@jabCUPy!3 z6Ci5%@BIJYJsq?Vr}M{)O(3^`9l}^=8}J{zJ}1K;;RqLqBVH?Zhx_nvYX>h~@&_+n za`!p79JKO=qj^1ODGo>Teh|e_55Kqvv@R+fwBW9$yOg83j)kjRj=vSOG2?g}`0O9h zKHN45(ArcmO9swTfU{KKEDbnI2hK8pvrOPD3pmRL&I0Y70?mvcZ*zf*dB9mda8>}E z6#{2Pz*#YHRsx)r0%v8wSvhc40hHAZ_HXwzkYBs|K>qA>ebC(o@@8k~o$hHMUv~O7 zboYTg+3DKS-3IbwXJ|+FG>{iNeS5n5KtAkrozUF|@?dA^l7EAiS*P!YPS-7+p*y##yf?lT!-N7oIZYm{CnFkzrnHj>f7z04Z16^u9!qW*pI46rS z(@h0*AlAhnV3}ahky*|AKpSisI>Cno@VE3zFfhE9$UM*>#l{ebFhQUbye}2B#6MdC zzIzN?IEnMOoDx9}egk6s0f|-6L7I{f<3asTY{onCw|*B#HvXbG5y1p8{wN5wVMs#MSs)JyDERCdpVK9L5Iow|){s4umseqyz%!I2s&*FdN0# zQsRy6cGGbH?Lq8x)2R~;3dkr%R2uxw;F{|=cn>1DSD3ZY-jRz$4y@W|FKBBgYB_lB@vL@FWM+UJ+6P z3bYQj+fAYMK%G>t$A3ui3_1&rfq~)ji{=N69c}`MI7lMK=#8K_SaaNsMG_G}($Hvj zGeM2xFcXB~ti%|;9%T5c<8CZcq!|v{Wd@Nc`sd8qYLXP60p zN2V}xMsx=4YampGEeH8v5wt9BKEP#ph`(P6bU>IZXpKI@>)hjRETE&nJHb?g~1vg5h=AaW@uONHDb?s6%t68^W3T zBsufo0~Ti2JI7ksa(EaR82^LM-{r5H0(B^VUm@rWwzdqAOBp~nJvQty0;yyu5$*`UOoDS4Q=MF|$6rX=2PJy;PS=iR z&=n&rWfm{nK&R0|Yvm*mn@|KpYUSf@Eb@@xY5u`ir`qfB5oW&X|9a4N*dG2CZ9xVG zSU|4>DTZ3}8?^9|kTpv|QM&*d9mm~RKx5e0(oCu8YZq7>YY{O9L(8q>__rPGieY{CnumYeMb9o5(YGBgqVHNxmVW3Ceb5p6u49hT9ytaE zr_Rs^-M&4Rz7J}S9CvL1RT(cq$9W!iV^IW!5vb9}QYYK%@f#ALP>VqECg170;Uzz4 zWid1$H}MmZN7jM@az(f629M?+!u;*i_`xk4C5T zg)Lz<11OVs`?gs6KH%?>04a5C=yvU}bZy}8S@rM#e`pB5j_2Rz{NM5*zt0KF0|SVja}q-5Yy{1{sOy3@gf%oD zQRv(=?axnej5c)pc3Ap0)Jj54+Yd^uh9?a#_09pC_PQUEM>E5~O;l){I&`{D0Ci$~ z9~^h-a{#3T$Ht$a@~PAJ0e{OEUIvEOk9%39ygC>?n}7W;{n9ySUyU3CgMagDfo9Ov zgm-uu7@BK)80zIg3k&`qcLi;DVmR(P17y^3S5POK;pGEf(7aU}DCr>-fcAhu6?9K& z19_s;^$28;yEF7eZx0*DtDU}Qx_wXdPGJLuLvITkC>T0JuXMUz==9xj+>J#A64}dk#KevgTpp@5^8X#XQIrst{MS9;lOq)Fl^F_kb#4Q030)x~J3i z!0YX>q}K#8icrC`31s)$?$9gUEKQ)krtbtx-#Pp(Lad;`p2NuBt_IpP;JN~o*p9od z0eQ2zb`C=+N4M)5M%NXug}Z%Mbce2KuARf!%M!@%da%=V#l_S$&9yTaN`wBpPU&{- zv2>ln-^&YfOz0H;ZBxMI!g1FbMj)^BfYVgwAy8`U3_a2bjsZ|~^!A`e#2N6(C>Oe2 zPyF|t(dh~b3(&TmZZ`!`j3{^e$#fn9M}l_fj!xe_9TzX>?g2#&W|U-uj)x-@ERcE~ z5+y+(4X9C47yBRV1a*)f!0j!Z(XksA9iO>~ND8p%xX|spN1KPK@h2lA0|S5id5~UE z9CbDSVC;0A!{1g8TD{x`${_z;S9FK2;NRB5R>Q}@(A5L3E%~<{WDIF@0QDwIxw=D_ zbRInTi0O4ucjyxSZ6_Hoy_WBGU0~_Dguk~GWHPu*`QLTPf8P~pojd}~hnSjcS1{Dy ze)$$OK?POm4OR(Scn?ttR>%TYc;_W(>Z?0+fo13t{$3@JLf1JS%|G}%50)2q&jY!# zJ9G}?jV_2AJ6h{O`#W2N^Y|DTdPCTFUQ2g5u{6JA>2PB0a$@dqV(D^X>TqHPZ3S{- zYJSDi{FAx-Zf}cZK1@A(mlLCBhZB=m>&enDUA-XVI(m#j{(lMDG2MB%^U%T9EX|Mj znWunl?`kmuN%r;_Rr4`0K;jST`R7gGZ+$$dRqLJEj^#Q@au`R_6f9FZmB zkfZ+ix3z%9yM33Wb+UN9=7F5B+wHrgQ>5d+>k^E-H<1HWhEp}~X+RP_sd?``XeyGF zymt+x0ejxlgg60TQ3%g_92>!9K&S76(wm@O`EfUJd-<3f2g7mjaX;Xa8FHj}ohW=u zYkL_h#|s7%NOv95{09{V{4GYHi@h&(L)_8XGR=bn+_nb0^rhkLUKVL)aB=YMFeCpq zi|(F%AO&fi9HkA|NsAg z@V5ZO*&xS#crD&N6=W7%^x$Ktt8aAv?qIU6Gb!QduD$WH{6FL@xz0KZ$jPC{!DlFf zBAUNtDrjIEV(k$>9(LpPgl*BhO#cV2?d z<_HQ32!G)MaR&IvP-2eJ>-N2YI6M@52-zLZ3!vi;UFUSVPIzg|0xCWpbkBp7{SWxJ zu}nVrh@-m)obowEy1RXs{BHqsK<)f1-EJn`EX|1EI{1PEbSPh^n?*_B!3Ru?H;$u( zTsH$mDJa$uXRvj;*(~&!0vdFd07;;G80@fx%%Dwcuygis8Pgp)r!#cIOYn`{ZY)}m zQUhZIyNJIviy2g2!>Vf+&{9o8MFxB@QX7Y{uKcaSD8{}8Z4oEhSREY3TJX2-VM2E8 zG?I+f#bIm!e`_j=v7n1^2oAKs13?dmu@m@P`B01n9pgc)vEbv!K)LR?8;d@|0{A!} z=yWnr3m9pr5hR3Yf`cylC1@FZsL_BND?mw5N5%5R_dmZt<*a~tNp>zZH1-NYu z>RYqd89;};z~R{Gr*Pa2d}ht%SFph^@JTkE(?Ed+-scU;0444OJv0y0b(jgduWlhf z1H+5vec)@D7J=C1`#={?fUZgiGCc6wZ^v)YF>&sorPlvnJ9PWb>GYid?!>(|-Vd4` z*!_W@fuXm@7}UxFFIRi{`Q!ipo!@u=hlqn3P7v{Rpo42cLkf2~r-9}gyF(i~`@qw0 zzAc^8Kr?XNp&gxlpc%Ms-=0qJ3|x2Ugii1bT(|F(&S{_-xbDyyoqeDgIFM7Ofo9;k zLl<=Rfo9-9ttjveTzBY-PVfv|x9^(HX`uPV?$8aLeV`e*Zr?4P(?BzD-Jv@=`@l1B z;OVz+-#y)-2Rb3MZoWr4r-3KoLQiz|fo9;keb01G15LbvPZI=9#dZ5$>4eO{fhXQz zCtiThodDln-u#B8i$&0aMUuaDG9v>+mkSr8g$p+$e=F$j`7ReOCJPsCCjM5?C7WF? zT+9|O+|2x~nGlsM7B1W@kc-K>T)0>*T)0{JTYVvNY!)uuZ2YbE5FWdQ3pYD|t09EP zVd28f!QTqH%dE?Vi_^k|o0Gp)6e7oE;ljbMv=?t~Bp<j#*l!Kag!a-?;$gr!-s#PPR+4gu^fV(hJE>|!yrV6o(H1swv|?aGnXZBmeC zX;J~b7rTh5x0(s21k}MtQPK{&I=hIux0)HEq_h%Ax-_S^h^4oh1u7MXEEU*W#M)cU z3YBt3mNM%tV(YDDgGy;2OG)<@vG-Q9L#23;q)IsWr-L@jzt(L&%+Y*^qq|g~^MV+@= z{~vd0g6tKy1q~gQelWcBTBy4hWH|pe7A~j%Ev+C`)>A=d);t5ZSbOJQ`SJgMZ!buq z+hyXPPM67lU`^Neou_(xFMt+2Fflr@G#_HIJXQL|@Z@Xd?ztc{ySIW|%fF39vU>{H zV6RRH-N`e}(YhCG$<=PK2X=wRh`_6`4KMXNFumsM-U{;IaTd@@V+JS7LpATf=acqs z1-rv%-XE~9oV)jely#nJekgzN7whE*oGjBDe}fyVx4Y+pEHM1mc@wO(`JsI0@ypLU zZ*~5JXmUIFi|_x!-e1VbN60Q7;1wpZvOGVSA>J#?~rq+NxL=JV>O$Pw^n=s zweCUdc5A*s4qoU6i#c?*9sr%g$@U*iclUyL;85tE3SxH81%(Bz(K zLT78qm;e9ydvCLXHhh6x@S4#XVtnV#&Rfk7<-x{*W3ZKFTB&90$mBHg=lE+}X$KlAs3#>Tq$f~>dv&EIzybSTAM(EicR zxu88w$6I@#(R#eK1sa6SdqHAJkX7q%m_e7tZU?X1`QHnY=mu-)o(g8Sw1Uj)-ZK?s zSZC`7P@4Fm4W>a?IP`WX@b45ZO8hl;K61I;YM6#i&?!YXC@KDoC=q6{L`*)9HidUJ$EZy}K7A z-rWjHIo)6#&8;92fo@L$Ymtu5UXbSU-Q8eQ{hD91bc5~co(ghJCrg+0Ron-lkdTm*9B4v-T?k)8M-?8Hu|KiFLe(g1NGOSdNr!i9Uf zTS0~*yAb3UBo~6tg?h=y%)pQdj<}<;3=F$KYq>iw8eVdM%({RjzJF}JR4Uay7vwKU zc?9u6H_NIN48kW#XnWmh*# zV`pmz$j9KYf))~B^E>yh`SSmNugQjPa0=+$x&)+bDu{IM{MR{m0XRY%K;+aFprGRY z-wG0IZUymJx_dz!Ps@*;y<0%p1$??+_gs)1)Xm)8EM3}Q%bR~Nlqz@61(^kL!T(ke zyH{ieR0C5db0^p9`E_$UKSR9T%QNpaPxDI_Z_BM9)9X{a4WXv8Y(ki+(cKF21H{k& zdqM18mZr`_o#1%vX6R(>H0mw>|9V?*@&DS5-K}89aX_4aX8B8bP$B|5%MxrTe@`6f z9NL53tsnCm@oVCwgU?UaNMug2K+T8ytk)4u7DoaQ@Tj^rw3& zD9LvQ|7iv*Vrf3i(t5J~Y&XQs@r)3IARg(QJK@X!|C%2=d#8W`|ED%sku{jd?+>PW zO`1AyK&<8M4*TQT?fj?H?GMQKV^E`Cc7r3l^GEkwko$XmjQ@9o&DHJ&1-0M*|EDJ=H1g363;aK`Q20^ZZ!IR{*vbnXR}Ew4== zW^{vfcg_K;fTZJ2XnC_0q^`3EY!Fm0r0`7V83b+?k)Ha{`4~d`dxu9aO*JQ_Q zgKoD!&;)JMX!)x|3P+L3$uiNo`4~&*FKcjlT6dzm6;#nUXoJghW^i582^MI@8^^C^3M-hy^NxPZv19w2gVz}x@-yZsG1w}!m^|G%C; zAfP*3q}yE}Ecj(2Xkxh)EI$=QHXl%GKBT;Yk>B+Yb1O)5>&ed62#_vz@Ftws+|55z zccg%}T=|~xgp_h8z-=Y|^?|@Z!bhhSz z>^XMu5r=>0UJ1BF^LwVWw3wVi7cPq%^|11-_TR~b5 z{^ICt?RX11w%zex+HvP!3=ExnTi*WvkE)n|o8w=IQ9l?MnqPCE%65Z;>)MJ ztql;<{xrWtv$6Rf6Mugqs5I&Yd9GKcu)7!JSH_R8Wzvp2gD$+;=E!*P7f1JAkQ@EL zmi%X#-u#-$v-Ml$9Y|<&gEe>01?lV+aRf&Vq7+$`^u1E*#1t|N$z-7eFAFuF_!wX2yJ7#T`mLOj+z7vv>oNK%>#2`mm~ zaGL1`hgIj?KX3m3@16^a59Ym~NIdwEqjTyTP?T&1#aQR5ZgA2}JNSx&f1BI??yaCC z3icoW_Cviajolm|DbG%hPMN;$UWi6e81Qd%gv10`Sz9+pZ}ESq%I;Q>8J)c%phRHO z!N1M@fAf15h&{+A_kxsl8~Ak^^g93RWZBqxv3n}W=+3Pmo!whOPER}d66~(#wIJ8B zG_M7@033S<`L`eJWohc3ie$>)=GQEpTLnP&vTSNz3o?ME`8N}PKR+mL!4biD@3jX1 zHaA9)!H}>8ISFD|d$)jBrvTLXG84T0T5nfgHayVV`{CdJ|GiTkzWx7yjD>@tlcmW4 zvM}c3@zx)2|NqYcEiwSJAbIcN%r0I~MU zy#4?GB^OvTND2}{$6Ft~1?58qhHi$=R?rFR-BUrN!@&m}-7Jlufm54_nm;j+wx3!3_E zPi3nr(6$+=*%rx#>S_Z0A9THSNzf-LGhp?RVChj8aqjd%b5clLs|5_its z^Y;J$I?m?beEfZ&fE~o6n)Q` z7!PUw>uhxZC1#&)mhQPA`Oc{vAe(wwK;%>g5V_X?lmWKty#4>*dM?NZ{QWmTTElIcTWXr?e+c8-3qpvEf7)#{oe{Iwf}=F-Ci5vZm_*Cq`~)B z@U$E#ZRxz~NeImTm94}s-8 zEDzV&cHTqx5IZ&x$%u7N1)2Q9>oq6|gFG|`)E@z-8?Zwv0zjAEV(VmBY)fOs3?>CU+}pm?MxM#FN$8l{58AtbN615Ga%WZ8SH+ZW^iucX>J8Y5Kl8Wh4FOS%xkXw zz)+#l4NiK^hnZi3&W-us3(9NFYe5-|rFk!i!@%F!4LTgW_5%Zd=MrWHhL>wVd9W1} z^~{hw2+4im41Vzk#P06B;M~d5)D2DMpccx(=S*EPOx-MfT|7+PEOwoH=e+&@ze|M4 z;#3)1$BB-M9fvG#ma$vh>b%MCdaIZ;sHy`5(&|QSutssLyeOK}BR*-4`!DO#Ub2sR^53bit z^#cFFM!#MPF}gkj+5!M)n_ih+5Hq{E(G67VZUs5aAENw!FNg!}xq>S#25^6PRd4wJ z8qn293%l7M7IpGtfJSX$?_+^|9NLnPquUJ3{d))X?l&bKMRR4i0>fb8)NvtyBDO-L3=JJ zI67N*fQn0Sg46ujc}w$?=84{FM$1E;d)I(Wul!#t)_DWsvQDr!J3n@URYOzG5A9Zv z!tSl0Qcv@g<)K==&J&Py+1(40>4eBb^lSy$)(H;i&Z%Jb@oun8=Phk;O{RIm@=&c7 zBzZ#ZI|#QQtP&D&onZSqk9D_#Ye=x(&N;21xPlggQ^2R1L0vfqTsb>*&js7r1CfF_ zZwgpb=N7OEh;hweLzzKKiy=xo_dpaujA;f};0*lzMxgF2DC>570i}z*pmsy|R#0Q0 zyA{+h=q<5h)I8P+ZclVi1vO9_xj+q+|KL_k<6ck;1GE5=zf}lyQDrZvt{6|NMRz__y(h z!(3M?(cRJua!mJLknT>Ac85-g0BAS?VoUd)R*(wI-!*F?jm?7(xIn9qL8}SCS*5eJ z0AxP{xJ?FXlE^f@4(ty81F;@qF{G~qDqcEUK|PCxJ*?m$Dplz2X$6G^q%qbh($PH? zB;R?$qqAiyNCGmv2nwCDNU{sP5V>HWsNpcX7>xPiZACa6B!3kgiHm&^_ScMCK= z0|hB0LNq_UW_0ho(E0Q74_iTF@yW6FuPA?Jeo(l?*V=c0vP-J`w8l!=AWc49E;pR6y+TgZ2yfF-F#AJL%G=tgr!OdWZ zKBhYJZt&2Aw(EzWpn%&fD$Q?LZi8J4J!u)FJs?BA0zP4Kj1Qu}_5(wuGsG0eI?;dt z=#Y?W1uMr3C$Jp?-K87>0o`FD-EIQ^!DB6uCKaT&^S_fDH_8bM1{V>vpVWnQy7SYD`k4&JgV^S=~)a>i>=K%JToHUc_Yba(<}{jlFs! zv=fxZx?QG$uF7KVJO~=D;F)Y4Dp2zjJlS}>^$9qgGB6x(1?d1U>}Wmm`u~5>)fcaw zy0=UP33p!ToH7-p@-=5?4_Hg*jn2ate|PuH1&La3=>@5(d3?NODo8IV$~&ik)j3&* z3iLYt?`&Q2`v3pB4YtgT3=H+s-BUr_?oxqXh_Rhhcf9`p|K&T-y)bWhGA^<+FuXWC z7n}@UU+!)NNkX;EeF5&mZFmjo!gX7CbYTdC-{918eB5C?Z9}8^FlW`D*pF^BB--v zD=0KNi~c}-1&V#JCp&L-UPi=z3pDn-!5)QJ-nzE#Rbeyk#p$ z5R^)q_k!$U(>;E_MW+plGux?8{ov>vGZ((TI8 z5yJR?1EY1Q2*3XgM{8e!dN$ChQm=2d+%7Q$>v^rv4RISdt9D*K_=98S_urtAAJEYC z=l}mfy6SGf{P+hkAkDx1z-!hGjQraUfR=nb?~WJf_7~|6m*_5+>8@A!FX}Oem81Db zOA+7q8=Z$=Y-46%=#*$a@jp5){_xp`!xJWKV0(Gs|Ns9JHpIOI-G(w@L;Oq7EjJT3 z$h`zD+MfX4sPE8SqY~0xq7o1u_ClVQfx+-nWOVC+63rKB%nS_87HXw3osWaVUi{%< zV2F!qJy6OU9{eI1yeBIn@-=hwssGJK96B$6?8G!r9N9cE6!X3yn+MveYIq65yzUSc zmTn&vj&7#ojxpfkz!9_tiy^I(vD=BI(=md7yAwyJqX7SQC$3IM5&rE?Je`gb{M()Q zIvr)YodnW49TmErL^>UHx}79C9ZkBOWI7!!x}6j{9UZ!zG&&tUx}6L<9Ron+x`*K< zRnU^6gD+TKGhck+)Ow)wXXk~(;bFnuF)AY6Au0l$H~H6}YQ0p#(|H{fx8J{8-YDhi z^idIrj*EW@+I;cC1hgN50kj6!5Oi_c;Vg!%|5-{|%mG;pFV28&lRqMHI22@Jh>A$- zCH|JRpv5Xq9L+!2`P)F(XxK7vFff#ty(swq|NlPF9_G%2m!EZhc##0=qVTk~%w^^1 zJl=Y;)P4tp00YB|xu9dFPW^BG@xR2b^Pu6SPL{nOC16Rz+uy%+p6bo`|C*zhMa;RA zsq>KK>zXg15o*v@gU(aOLF*Y9pjtXFycX|mVi#aw=sec=jN!xo|0N=wA70piEco%i zgrl>7rTGBIYu*<@pera5K8yu>2UMw*s7SPaD{<|O`_b*p(t4niMWw_7;vKaY3qku4 zcvK88{pq~ld9>rg=T+SzYe6pUlz~uTKVEbHH&F?Gv7d{9Au1A5kAT7{Mn#~zL`9_a zHh&9f?LO#2q&1*0bAyCgCj$cm#1erQpi{Ct5AFbk+T{nYxqI6{zEK5vrMLP=cQ}jX zA^w(b(1mcnz=3QW_M!;19^hE(w}=w|Znr;{?kxOn?w~0pzUCJk0l{G}*g!SF5uV`A z&o9J4Yt(FeXMhq&7GvXMkg>r*;V;;^Kur~a<{$q{`CpiU7XCuQ=Jspl&Ip#?2#(j% z!G^bAT>tm~f81+<)^8;|oh6X;@)dM;*$r^6nJ{5T!(3L5!xJWig?HDe@cilgWq6?1 ze?#TPGEk~9=zI{6!5G58@V`XG;)OaV14HNG7d@ciS_8uat+)B7 z9B4jb5FK}T0w}NbI(-M-)Hm&5^DhPdDF--DG(TVjMB^FG9r!C6c%eseG|WHDt-&t&DuVtVlwH28W%;!o#yutJEkuq>t* zS3t@bGpq~1%0L6Z%||4l;Rv#rBlyKi4hDuO!%M9PO2olw4^&23h?a77#;9;azbxip zV2JL#0P+{;=CA)HDm*WOK?k!Q;Q@((%S4TC7Zsb{7!`%?5*3Ty8WoXF7Zs7<7e9m; z7{Y>I>=XjUI#26?Qn}6t$6ZuFJF6W)#it8gg0-7PAe4%!`Z*}f9V6m z|DBK@w|Np39&VMfie*ga;(FwZJ z_wa-X;Isx#Ja)ni46V1LD*0cS{Q3X?I0GlBay;;wCm@R<_(iHP*tOAzyIoXRx*b@+ zIVy|c1!#j>#9@#jJpWDi%wgpK-Q-uIBJu*X+pYPCfaQ&7{wbjKgNMNt5KrsvQsWl~ zSQr=#zrA?M!ocui38=3u3wF6k@Qdr9{1q(`)p`I_(f{Xn{m^>5^u_CtZ_X?%-OfBE zO4`mGCA^@6K8#;zf%fkm;W_RMs;C%_JA*C~V|cCJdZ0um;D52mf8!Sg5Ea(WJSCjX z-YksG=l;LugsM0E1`2`0&9+PCvT`tl1$URI@PGomR5W9WIV;C;R**QTZh3KtkAWeg z+l{690gL6060xusMxbKn5Lo0l=i$ycmdMwl&2|i>d@sH*GcdFsC}DlU1@hsg=*|mq zpfm>x9*%};7KTc{hH6EI5-$F2&I-qz6&YS92fyGJW?%rdM?$k$f?wqR|NlQKvh_fz zJLoo0XO1G>|HT3j&s2k!ULD~94Lq_nd$TaTR;dNijIU*&KI(Ml=yvAm4i@PWVRGnn z=HcIV2%L4HamH|XLNGXONwCQRppvG7FF1=a;6*uT*ZC2i z&O?v_ruhv^uZxO6CyPqJ{}L4e5Pp#YY6Tq;fJFT_XI91%K2SOVoh1eG05rf){C^$W z?JVG7>C98a9sB}xsRzh+kH0yy2$YCqG4{Hs@C5ufesK(J8jr_oZBSX<9n911Ez-dv z*zL^n-3CjwB67FE|rHG&)n`3w&8Wg^uVt~W&0LXXEC;$KHyq?7f zDQJUUG=eKXfp~ZYU!$VZ?atD2pn|*k1Y@T=%S&$111hb6FOVC#AZg-yUat@G2W)T(5W6bU%VF5ue5`O;w zf7~6MhL5|0Q*`)?lb~_)BLb}lN;5lOYs;uGny6@gek}#6rrDbPSr}iNwH_!1v6x=# zFtVs<9uDqyQITPGQDF)AZ~npybf@wW9?Kgw=Uy9zJHIIV`~QC=NH2dki;Cf;?wcABS0kVh}T1EuFumU+JndJ{Oy+LyvC>?{6 z5f~f4m;wp#Xb1kOplt5}iXTv&0cu?3sHk+us7Q2&s3>&%vV1$rSjydelCjg5<>h3^ zm9OBI4X9S>yw1P=li{V#58uCc*Qm%?{wOW6E)^(eZFne9q8a*P!|(t9LFp(yEckyZ z!;22Eojf4F8N4X}{{Mfo1xu;c>qnjUJ3qgc2<6|#9`FKm`hH|o>wyxs&JUV5UJH4< zx8AOQ()pqFKqXtVFAL*qVZ)QnH7YU;B|OluIry5%@MKiy2~dr7cmib9<^^a;QWVHf z|4m!wuyVXm0~M-=n{8KsN|92&EQS~E-~a!QbXW`$SO_9KKzczXvb8sEG8ssBi?lcn`Wp_lO86C-ZM2TUJ+ zsRE|CUdn)JmX{(RI<)g_xZ!`uHIJ_q|C=@cHP|tujg@29iZ)gbe%A}2E$_z#vIK(u zhp{vt;c5QOUw^ChcAX5SO2+%aP({$X5tN)7-y8sqNUl)<9qw`5MFpI3UcTaBU~ujd z=sf1oa;b#1;g@RZ$JW~=n%ylbS3tF>LGb@ADxgD4x~G7t|3NH_F)AXRTU4HaLy@Pu zN96_s14DzQDu3%d4h9BC!*87sp<^y80t&}mRFoNxxu~ds2vrcF1|rlMj=QLUc8h{& z&~_$^7Se~U5)NUZ{YD?0}R!%H*J^{KyA`CEU2wrz?qf#h`g zTR>YF8h-2Xw{(H!wfS3bg5*KnvxeVE{4Jm(JIciye*5sZJO(==g1>b;NJS_M$b@A6 z7SQ_ihTkdttqa&07+%LU{4U^cQDb3XC|7Fuomt|?-?S90FNePcv;er_cRqh>8OVTa zumPnd$spqk`CD4R%8L10BS5k0#oy`*61oLiHQ}NHF6fTAs3Ix_<(Ow|})ZvXfH|9;T%$H$S>F}xN+;evWvAoWTNFO^xqI+g#wto`@@zu(L9 zfB*lxxxED4k^_n}#+PaT{{KJbqN2+95_CyVLyd|$1Apr&HU@?)uHGpsdl(oPg1TG4 z3Bx1c#TIbGou^?BIMxh050wga`KSnNFleYzQDNYBInm*xBGBEU0=mksGekuL8qqHq zL7l`hw|JDdFjM zQPHtHSjN)nqQV2q6N;b+0A~WQ1G__1bhtxQG`hEdO(>P??tx@KLr}>S_CJuN+eJl! z5oG^iP{OEDQD)%ZSEHg_&)-m^qR7BM^+3x3{%t=>gfweZcrW1nCSq{=40`mdHAngzpo)0qj zyQqkORf0-NkZqPeDiZw8J}MHLJ}M^Qu;Heo!<{iIBF#s5Ugm@HEhODl zfJ!h>nowqfW}gWDDK08X4WO8Y<=zt6E{N)5E-ID=AW=|O2bHi)9WE+X-7YE`mM$tf zWuS(V4k#;u`b!`~6&YUJfK4hD0qFv@RX_y@NJ@#}wG7-iP%{i60Wz3zKd6@I{Lt&8 zV%c(_6Oyg!1pl2V;q4A(FudLE%hG(5<26@zEQ8^t=A$fzC&B5lM6UD0zY}%5ttTrv zzu#)U$ngEY#t;=AklUF`MW7lzpc&{GgYIivkQ4)d zOYoon|GQjN)VN$!R7<%)eqnfN54s?03OM6>HPoo6F?K>Yk_Va}d~H6U-NE$VMTO_3 z1gI%kqoTn8p4s7dby3j(yY{XtL#K<1#tt^nLSI)G6&;Wn40mHx44?&-B4erG&3AWQ zR19vOy#Mm<4gTpaDvG@>Dwa_9{V!3`0pYCr-Vhbnp#LQ*E+G8E5j?UX0k)*`SV?d< zqJy4Ce~f|QwKzD;N(7Fv zn8Skgn2P};L&NX%(ts?z|69OS!HegN3=DDctp_@fmsn+`2E4e=$iNU8-FfIWqkDrr zL+P*9OZ=|C{JYp~3`&05=s{Y$jK^Cq9b;!G;S36Y5&!=G|A?qA9~Ct&9~IRSEr_o{ zelC*hh6E~(5Qh2d!TUaoZ@EhKK$?_ev zH%^5EGzS3cMKvA)6&#S(>x2p2qB`qXIY1*hzvSyhL9NeDmZ@vjvU2n~F)jv486G$s z9@cFNVg`5Ds0j4RY+bRIl_UH`#f$&{BVM!k{SRhoe$CSQt@La73;h?M0i3XK!vn~p zDO`U(FDqe{JkWfC5i&+%c(U_paCa+KTDZsz7UD!W#Av2yhKsPH#G{LsnR?aTr? zXq2VXk!8mMFIEmvFQ4D#P>QrWKkdo{UNpQ0jai6++HoiTzZU5{1x}dak5N?_7y=s2UUd(496Y7 z%f}55fJd0RLR2`q7%dK!u!Dw|z8aqFJOS@B=BP-3dLf;!Uo$#)F?YDAF!Ap@5b$E+ z>;M1bS`U=IZm3aV(k+$b-{;KOTg({nB7%c~Ards`()k%QeO#N(0RDhru7^DR2LOyTTr8^RHUIsg_)s*_r1_43v0K(j%oOn(Cf9bT)5$vL$BA#a_(NI3mgA8{IcSAI>Eo~qUEnz zht3zOpkkGO{qciuIr!JV?`2^E&$f0RJou7>@ns`ui!LL-Q-}%&Slz*g9B#cjjGdrZ z6>GUvI?wW6DQFB{0onb{pr%|2TepjfN~Zy6gn^-izxnKchzG&J%hUPd`;F!r6&415 z*B79ZXCeFN)p@K$Is-J^-+A~&%d`LgTMu-)iA0sEhrMup{{MembB#&}LkWBMiz`q5 z|BrrA_TvA4!`sKfBls^tM}~Di=(K|#sdC&6R0T2|cM|{^7ZCmeG+o2L-9<$pYL^28 z14E=L!w1k@gaE9S>UyCw4AfqWXnw%l{DZMXs`&>~30v!d5{}oR4d)m;!&n;qSU_jq zy=H@Op#y5i-9Se|GGLCTm4F5x!2_6`ZW5iQpn<<*Zi)<`$v03629Mnu9su`@*}9!r znjbJ7p0FY3<$=ebKJ2=eJ3w@J=k>78bHRouI}g9+fNfi_{MmVef6k%iA56WTjP-0S zmr9?$=4!cA!gh>>nE~93hvsL8ZWoo9?huufyDlmrcSBS}x_wkKI$cx@x?NO6?uw{% zhN$R(MrZEEsK|7es3dgysAzN^@4Whgl^Img>^#xN%F%k@u8WFDDevtU)v|YQ>^#%P z%JG`%?hR0@rSnts5erZ%0bk5>^WDvpw_o19S(;gu4whE{&!RRTU}~;WQDESAJz@E= zjD064R$jBTo-7e+eOt)~YP%j|(gmmQ*Gz_&K*lm&c+Gmu;lF{CgXO8BZ{0pB8iofN zEDiXl9ysR0!Kl}H;TVe`!%NVa<~QHne_77a9iyUg^T2CBJB zU;r<8Il^+YM#bz7?~688j8{y#lhB^9JvYHdc;i(D~b3<)2=&-{1v_do=%GEdBBl)aJZ- zu=T)=k0^$Qs2G%Rv|QqE*#(+5b28{)c5eN~-#Uwdf#L4Wdp`sJm#AoDf#!xxn%{8T zl~H*i2p<2C03D&}#K^$Fc=-E`5|(4ksm{Fx|98G%W&n59K_%aD$he;6`C8BzqYgu< zdh53m;m#kR{ShuI99=Fd9L)zn_I3X7oB91Gycc%8^Tb{*1_p+i-~aw+QE9eOVd*?r zx)bE6!=THhK&Jqt@$Wn27hrhcK8s585tbV#@4dQV3i9e*)(>s09FTOu-_G~{|NpzU zZl1J`QPC*n1x*e1GB7ZJBck1dpeI@wf+8lsAZ>0mY%(Ph3Bq}3aCmoWnlPF&&{GzA_(LC z=Vno9{=q1Dsq;cqB)nega#1nq4pA`xCC}~>6`c+j6>d=Z>j7#Qw_ZBNz)-^4{7a>d zbr&dbJ3n&XED-N9-hsq9+ zllh%LwBA0(#8AR!_`mbwYeTR7V5c$}y#CmE!|>AgZ_S4cIuC;!82GSsf#=}KLpgTlG#PUOl zL77O9G(6Dh`=HbHNw@2R?$9UAM-<}XV-H(?;%^6?3B$klQ1b`*PS+RwEz=kn7`%{Lx+e7CAtouxNAU2lAUZh5iuSW&Izsgj&--y4Ppz~{pDZUZ%ex?R7t9w_Aj zw;~NMeJ}med9d?C=dbS{JCAj{z5%(p^TSJb&>4SQKyzRWme{od-KZUv#^^IPQ7@*uj>nNDBmb`>vnx%>H2`b z{Um6J)%T61?-TxJ(1b=eC{V9-`d)Z_a6-518kuv|Zmwhl0|}Oa1@<|6Bej+phURI`qry4WXS+gPY&5 zEM%AfT8s3*M9A>={|nvCfBIQDnqRYkrWQUlA7P1(1&ztSu-5@CLK~7>xT7FTkA{VEpLQ!gAX=YKXf@fZdv5^jlGBg9*?wpZWq)?KtkdauH zs!*I+m0HZjnV+U$qN890mN!&Lsw_z@1}P~j%~L2S$}dPQ%Bj==OO|A$Rw|_A=c$+I zad8F|mbln_mR-O=6ycYKlT~Mq*L1rb14BUb-GvNKvIiX)!2}6BUY56N~fn57AvnLNs8UhEN>`H$oKjsHC=F(&DP)!?q*i1WmlW$k)P_3- z`FZ-eTPdV~HRb1l{DZ7dBe9?$u_!gKB&SkSAuTa82NV}zYY1vBE-fg4#4W@w1qFrT z%)I1Og-k@|$jb-&H?;`nECmIBL{5S01BISKZepcE5=b{F(d49-q(c3mprGKXP+Xdx z4oU(k`5>Ps<|$<6!O{XaX=s2W9F%G_L0-%(fog{PqBuV{6%v1t6bQIv`n)-h!fhh&F}F)Dk@|E(Wmf z`jxD*r=0$^DyIkB`jwOApsC>4~vic1u7GP6@bMM-8+ zafzlCNUesUra}m)Q~?EKX-R64LPlb-LTO%6YEC9Nl|dW>vNbs|IU`jeBe5u@Jh3Ph zq**~hK|v!?p}4fDpePfRKyxa=0gw+4sid6LTx*4rqDqBCg_O*+v{X>iQOHe9&dAJ5 z)zbtSpkbt`;HZ#Pnhq*LOEN&298_GS7Acg1ih+`Rh2)}CP{@D_zSN4;Q+@y<%X+^223MKgpMX3e(MJ1r@U6QYmo2rmlVx^E( zoLZh(l;QyLsa}3jI@k?JE(YZTkOxbPQxSerNJ%YDF3L;-)e;$?%$Am~kO=a2T4@f* z{h)Y*T2>4REKp^mr=Z}O1}@McApL?WCq$Yw2 za!^9aO97Q|DImuurKW*O#N0%1^`VfP3NaW|34v=SkP#sJkgduu0##7zC7}39$}h=C z1y!NoAV~z7siOcg4ICzUmF0<*@T^EUlcj(vAxg6uBz;55K?QJ4l39$X*C16dD29yG zixo29#l8zB~=-L z;~A981~89ZT1-R`2s!72GPJWS|f`brB^VSZ!K~)>R<}9 z6?Ap8Q&W*`2Xi&Rr8%V0nW~A@AS?!(pQfOz3$Yt&x`IM}S!z*vQ6{Lt1Zuy68hJ>~ zREV|`1zlZmV-K!N0nCLt723%F$1k{>0JbbyL07l9BqhJJ1g;Hga!I~IaYw_AWtL!YBno0FNGnupMrl384klUS)xoS#+# zYM6mc0d++c)D)m9!Hx}s*a((^T1lkNVo;#uCg$WowSiM#szOd`aWS;1s-TfrqL7iQO|zAv3QmKRY!=A+cBi(#2EP0d-dsOLIyT z62Uz-P}2m|#>|H_puv?T+(-q8#?m}c-&|cs0lQvAhQO-3Dmk$Pm$eA3ppbwhJ3W}= z^YS5u0I0(VX~Bb%LY|HSq@IT-<6=;0hA=4=oV>vOQ+RTPlnQ7GxS+H|PeB3JkxtIf zP0Gvzx9N*BK#fOmnWCdmoUf3eTc)6EqOOpenwVD%uD^>DLFHMof^L}!$Z}niG93lA zWKdfQ>^4$MGX(_&P^>!V7gQEyg1R~y&YB8_mX>C^Mg|6E3Q3g;UZpviiFpda;3h0M zm_ZuA1#dx7KDe`K{k_c|dmuKeWfZDXB z#i?nfIXWO4lS)ez!aYMg{6j+&9Q`5{!X1Nx9Q{Hftrf~MOEN&NPc2J@xGFQZAP3Yv zEl(^eO3VX~h=5G+bq#X%aP$jtbn^7^42cBArJHAnpKEZif}4Mkf}=u!V^D~vbEuDF zkU~IcP=J51D`snAwwJrY56%h`Q@O&360{Cl*~L$1`wTJTB6ASYT1Iv9h|`pf&7A0 zP#+&YrUvSogX&4J5~R^L)nbLjoTAjkluB^_OcgW&la`iQ0qy>yssvZ*DVd0o@BDtlwDA_kZB^B&EtE8%+)Wj6`)RNFV&_DzO zD7z?t9SCv{1ElK)A5_wC4szCnBx+FZ1<7(TfbB`mO92h0q*fH9CYPk94A zo|&wWSDKrYTBM)>RtZW-khn+z6?x!-L=zHNR;76`10a?#dLxPXR35yNZXhOt6< zMrs~%OA$1N2`L4fp*1b6^@R~W)?AzgsYMxy1;wDU8o76Dub`j>Dnr&&w}LP2pld@)btdrsU_PLdF^)qx_(V zNrcwApqSF*VsMJ`3@`$d47$1u;06Lis9%(407I2ga$*TXl##Pz2m`3Wq>rDLE1nKF$QS6lL6d_1U2ax;LSn? zUES1*g8aPHypqhs90pz8qSS)alFX9KvQ%AAy9reU)Y<~sl~`QDpbL|SHcS~Hy#;V; z(oF_;Fmy{m<13&bNdk|5r6`o-r>BC(S@gI-r80wFNm7*&m}Jl^Nd(>bzHbT(hx1ex zjyqFWI1W!?;dniTh2z8&7LMyvSU673Vd0oHmxbfo92O42c`O{3b6Ggf&0*pAIEMwa zK!SmR;e$N`LxVE|!wDw_(CU0p#j2xVWT5Mknhb6pFqAVWR2x*N8dy~5C_w01NN$BT zX;KuNgPe=46pBkgQLkVNRipzhK1xecQ{X}jTwLH>r=OFV1ZG%)I|ty-A0%BvGpuTg z9v8Ur0j?sT0~=r+aIK)?PLB(BR}gbN4mxO-S*(zeSWu9fmzu%_&PJf&uJY6(P-uht zIpC3LSfdBh5&;kK!rTmMvnFzZN(OKW&;d7tpo4RXImPh7LGXAg$mu2d;5J=iX-P(Y zkw&p5S3YR$F0lkQ4T9*=<|byRDkSD9q^6~TT8Q9LHSj?G&L5W8pBQrfCwTP>*G%*J>R|9Lmfd;iQ67#Z) z^%PK>e>w_=rV4JUNkyfJMU@Ih1_q{}h9{SnmX?B}0(c}oF$Xk<1{){^l}(sYXlP(y zuArr*#l_`XQIJ}cnF^YUfKD5L8o7y}0r%wm++5IzK4=gfG(MWCm#U`#(g~Wo!8$?? zsk~t$78Ht0Ks|FVP)!H& z1ZeOT)@y?d!0K^vA*M_~El)_pD>E2N_O@hTN^ z^Yb!G@{2%fz^M~d>tuo|0Z>~I+#&^gPPeQKTng%OacRLui6MC_IWZ4ftQ4gd6y>Ls zCWG1z(8f9>OB5?4mLMh)xD*r$@-y>Fz#|=SH|FO-l00aB2s}8P2(mA`65Y#?G1Ek- zFl3|v?C``~&@eM(+6PqiEBL17g2K+ij7vd5qrALaFBc}Dmzg7a zsvHtQQ!169X#;q;mw;x3kcu}h1xO7DvD8zc96U8rmReM)0CqZP5(d{=N zC@9JY%_k}7>Vi`fsDA?~{yY`nog>J!Xh}Y(=bu_!l9>)Fe?YT)Tnzr+48g8}p{{<; zuJNuxLHh89e==GNFF15dp5wA+9d*uKsQe z{-GgGp>A&RZlOLt49@<3Zl3N?h4%LL;57p>!1U0i+u|VVRi+8HEAQPePhUz9DW3Y6^zBMheOKDVcfcASrDlh2qLwaQ-SSPKD{u z%*zBdEELj<@=FU8R8w>mqE%BsLpZ7_v5Y`?i*i86mY02E;W+z= zg+t{t3rF>577m{;EF7!9uy8PaW#NeY%EGbXD+>qvHx`brZ!8>dzp-!xd}ra<{GEkE z><0@+;SUy$b3a%(w12X2tp3Tu5%i0NL-02XN8xW4j{Cn^I1c?`;n4fb!qM`Vg`@C4 z3&;2WEF8>?tQ>8OtQ_?$tQ<_NtQ;1ctQ`HEtQ^lcSvhRESUIL}v2uLnV&#b7X64w; z&B`Ii!^#1PQ3Zvh(&X&a5(U`kv7VkDBmhA2DX9e|849XqDd0XY1Bd~tyNdI3%0NpO zNJ3MeWHK@L%fHmFdAG|DPs z6%;_LNm4=c;R=wYBdYKO2~LvWqCB;z7?ke7hJ#9fP(lLL3!o-D$SYu#<@rU~U{zqJ z=_nK>mSpBb`kWA7l;ne3InXw*HMEnHmY9>1l$e|iHXM|o5_8h?i!w_xa=92l$9pk= z_6C49CxG^KRx&U!fVOA4vM?}Q;9+1WRAXQWDP~~!8_CG~H7iG5H7iG7 zH7m!$YF3Wb)vO#lt64ctSF>_luV&?VTg}SBTEogASi{PpT*Jy?RKv>QRKv;R8CRl~|LyM~oxRShf0&Kg#Zi#4nq_i9)0 z0Sp<&dps;+v z<(Oa3%CWYdmE%}FE60<1R*qlwtQ_18tQ?9BtQ>|7tQ__YtQ^q|tQ=VltQ@rstQ->> zSUDCquyUMiVC8tyz{Dmarw@ z?KTF-qI89v%wo_?6l8@BgKI@=rnaDh9r zC>1(Rnp9d`$>0WZLMmudrj>D*>% zPAy^Z$;`{fYFt23eo20EevU#)Q6^|L5GWWDOG-fNp}?8gIoMMHQfGo!=)e}cKy5RE z+2#pNk*O8Q8DM9^1VH%$G^GVuZ&Of`U&P=FRiltrnv(+xnZ!KM=p?!hP!os&CRm)4 z4^8Eu2n1Df@TiBB5ul8jmY)Yr%%C--i6yYS2=)`m7paN4Ap1b0m`F(=Br_MhFs}d< zC$JI#)VEB`1+9dIWa455U&!h%(DVq%Ku}*LBUK?UwFFdcGXx|iXM=|1KvJMJi-|co zpu~`r1zO7jUQwHyUy=%m2heypc+FigXaQDg3WH-x8K?_goC+1NpEtFSD>T732z-|G~u@B9cLa z#h~Hf;*!LYRED5bkmnVk1t(|)XkI!fnI}SOjYM!&qL8SNmztUaYPn@3f^tVrW>QgN zQ6+;TSQ-@Ppsp0Wsz6nwmy?+UTdfMRJP|Znj97rg;0Rgo3Noc6ADnGLsz4sj1+670 zMm8-owV1&f(rE{+%Tq{HK#{IgfRw~Jl?1m}ZWz@RnEkQ9&)3bj1lVz4-a3#dDo2a$mV zFeuZ36SFU5;R7UMK?NZ^y_6T_gH|?I7NmmX8fq9^8WhQhLJ~z7v<@I2;&!kLz!Nc$ z;;6I$G-?J)_b9CbxDHT)DJe?KD+Vc3NX<(Dw~Y~rI4vGEJsLPuYgSwG@noa zEx{OI3Sl!+nR%ez7c3?di;FYU^I+u>Xzm~|jBo?F80Obxh=Hjo4A|9y;uE0;nz%tF2y_ksGgcIeGfGRq z0Rm5tMXBJ0uF0vzRfQED1!#EHQJw2&gRSOILVU%o<7 zK4|J1w3I);xCE){gn26yyxKM$+}1;GX_kXBFL+QZwYZoexFj(rRl(0K7(7j>kdc^| zl9S314DRWHYAsN)Qml}ilbQ%x&JQjAB3%7EBfzspDUcKlY9WEbA0knlnwwaVkq;Vn zLc{^M83t-uAZvjZZiwb;U}=6yqC#p#GPpDY8JU}!l3ALokd|MXm%BfL`~bG)e)kO~XN2iGV?so;en3?RYsL{Rkws(@0# z6K}<-MWFUGgGOFyPL3u619UV3()|RH252C=X{}*79hZ;LdjfTKz2#kinXb6mk zz-S1JhQOc=0njN%AjiRI5E~uyOkm~E$zbI;l*`I-ESHtzOfD;jO#uX7%w^>OVUV8f zvIkl6teZG*syXxCDPs}N&OR!>$+u04HNahN$6F3H{tqXWu3hWWPdx3doidxp^m5x- zL#_pVHhcH_TNKyTgJ`m`P^UYv0IQ z#ydM%P#`K@#6h-laqOMis_OX#XVci zLia-LoAQD-lLNW#29n+^w(G)TCi1rCl=XHW95uby79VOv;D<^<8gd%agmZ{MAqopT^4f9o^BB&OdN z()PQ}kK>4ri@I1V8=jVMCpg()w(k|)C{JE)Ntaz>HyoxPTe?Q!cFKyMf7O@zJ$Saz zd&9#0f7T}KR_#{aHfh?UP5RnvyJnc>^f?OXH-F=O*Zw(nyXMXn@hLN4}r`#edjy?8V#KLx!jA&bM9rf4aGC z$5oTrl^5UcwYn3v;P;Jp4|p;o|DMflxZRgve#}3`Xc|XVYxl{zn6+KSuQzy?hw-xb zKNL9XZDH2t*01gE)K$$8W1Ds`;)z33XmG4^;5=(tRZX=!iXRx}>$uCtX*l^xntctp zVWd+w+kSR-l(pJ5QRa!KudsW(ozC_DLm1z$1%d*;doPGgnLSxjxh+VRFHHaAPVaYL z6LQ!7xL%O+=aPc~2cXO)lKz3}J& z%eRGRH@{9eS=Vc~_vD2CI|a7w*|L0f?S@6at=5S?`@QPSfgQ`M?^Z58mS8r!u=e}> z713KJ$-9+KlM*xPSj+vnr$l!{<6(os)|nH!V)c5xBfqca2yxhUGQjm&pWmn7{$AR5 zdEDn5IP0uf+f+R*!MWbwjiKmA^ue;f+-(_NV(vMU4OkLYbdRRK^qwsk7ZxSjULYx9 zkb6VM)OJ2olR_L@G@C5<8|gdzfy*YFKieH-Y(H1fuA||CRquuADpqI16du18)eZS} zMYB?E<wa+YIcy(fFz}jmzuD-8rv@FBy^P=3eEqiWNm+oMWHQTzy;rqsHCI*HJObiV53=9kp85tNB zGczz4Ff%adf^H&YU|=v~Vqo~rz`$^mnStR769WV2;1n; zCNMHEG(p1>bkY$YGXp~%BLhPS69dCMMh1q}3=9k`ObiU=j0_B`m>3wIGBPmqGcz!V zFfuSCF)%P_GBGfK&aF*iWMG)Z#K5qWnSo&i$Ulq_J3u$ZfDXn5#o=v628LY>3=Hgy zkZ_P>VqjRu#J~Wu7j#I`RYnE|7X}6fCT0c(kbn0vFff!dGBBtyGBB7iGcaf{GccS3 zomRrYz_6Z~fkB#?fuR9(Q4=Er!&ycK2GBX#-3xJK>lHbQ%7&b98FwA3OV3@$fz>vhm!0?EPfdMq01kwY_ zXP~s#3rb7O3=EEp3=9sS@_`8wSKmNk%gn&AoQZ+qGbk-X%P!DauZI{I7;Kmr7#f%$ z=`v{ETmVYbps;6vly9IseubHV;Q`2OW(J0Ppz@EA zfx!?|j)3wwNE}q2GchpOGBYp)fzl~61H(>c28Ja}3=H2G7#Io}A$bjy|KBk&Fo4Qs zYi3A!47xE2bS=PaW=LMG0=Wkie#{IE0Za@GlA!d@#K54<#K3S2lwLvUpP7Ndo|%C` znTdgcm63sghlzpV94M_ZLh1`p+AdW(J0K1_lNmW(Ee(!Fkn85IIn~ z0IjD2l?9-(9dw}h4@L%t8K6AJ0C6j*42uMndyEVWrx_R+j2IXg=78b=WIhuE!#!wO za+HCA;U6OdLnzD&s zy8*hZ39f~Mfng2kuz$D!f&tTaU=Aw>h^+x4VA3FcOCjdLgkUsW*?%qu26ty?D+LXA zzfesD6Fnn6qmd+{SDaB?QdE+d#GnUSOva#Bl3G#1pa(iqh(WI?A2g}TpqH8vpH`HZ zo64XEUi-(OmjYS>$e@>%T*RQ4o?oI@kW<2-2T_|;T+9GkmkU~-01IuxG&gAcoq>S? zbc*qm1{RJf3=9mQv)y1iVeuu1q;5e23kRrP{&N|oiUD-F8JHuEq;5_KE61EG3=FJb z83+M0PZp{UbQ1Q85LS*AR~Q%qK#3os40L2Cm<76|4WtL8?nfId#}76}2JpRdU|9z6 z+BFbUA8H;mh%r7B%h><` literal 0 HcmV?d00001 diff --git a/pkgs/stdenv/linux/bootstrap/i686/cp b/pkgs/stdenv/linux/bootstrap/i686/cp index 06de68ad9a857dd2157608a3db6241c8ecbfcd3b..55142a9e0b89986e2088300a30db5f7bc54a14de 100755 GIT binary patch delta 34268 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 delta 33230 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

-OaRT^EdmQudW$vy2NlIPx;H= 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 R{r_XRN^mPDBV(hf0RZ!KicJ6j diff --git a/pkgs/stdenv/linux/bootstrap/i686/default.nix b/pkgs/stdenv/linux/bootstrap/i686/default.nix index d48cbc9a5c5..db5c581453b 100644 --- a/pkgs/stdenv/linux/bootstrap/i686/default.nix +++ b/pkgs/stdenv/linux/bootstrap/i686/default.nix @@ -1,27 +1,27 @@ { bash = ./bash; - bunzip2 = ./bunzip2; + bzip2 = ./bzip2; cp = ./cp; curl = ./curl.bz2; tar = ./tar.bz2; - staticToolsURL = { - url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r6881/static-tools.tar.bz2; - sha1 = "c366d9ee0d969e68311fdb37abc91b46fb13b585"; - }; - binutilsURL = { - url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r6881/binutils.tar.bz2; - sha1 = "fa77c29ef4f13ddf43bba3f4f020ceafa6604ccc"; + url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r9803/binutils.tar.bz2; + sha1 = "73532561c2f98d0df641fbd778bc92cea298762a"; }; gccURL = { - url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r6881/gcc.tar.bz2; - sha1 = "ea7171fc2f70880e8a6c2480b3d3fed7409b7a4e"; + url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r9803/gcc.tar.bz2; + sha1 = "522dc2e22dc42f640b0290638382d45bd43a7d55"; }; glibcURL = { - url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r6881/glibc.tar.bz2; - sha1 = "728e0a9e66e01cf2815eca8cc638e5ed140a36cd"; + url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r9803/glibc.tar.bz2; + sha1 = "b9ae1e43e9977476ef53f8c1c9cd1cff5526ff40"; + }; + + staticToolsURL = { + url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/i686/r9803/static-tools.tar.bz2; + sha1 = "ebe826e848736a82bcdd9a195dd510b533ecc997"; }; } diff --git a/pkgs/stdenv/linux/bootstrap/i686/tar.bz2 b/pkgs/stdenv/linux/bootstrap/i686/tar.bz2 index 189bcce24ebf62e30d7ae583b29983f2902c9776..b6241bf3d2314fcd36ab218ddd9372e87452b6ee 100755 GIT binary patch literal 95513 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 z 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 Vzso28|Is@W{X|r>m&Y+N001t~oudE% literal 94989 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

*kGFkqe6MFBCrWAn}pd8u^RY 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 R{QqOQN^mPD3r~kR0{}%-te*e? diff --git a/pkgs/stdenv/linux/bootstrap/x86_64/bunzip2 b/pkgs/stdenv/linux/bootstrap/x86_64/bunzip2 deleted file mode 100755 index 9ca924e2bc4549baaa84249ff8951fb5e95fe540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74624 zcmb<-^>JfjWMqH=CI&kOFptpzECeAL7#tM9qEIml24)5a23`gpuv%8ID2#yX01NO4 zLiE9C1_lAJI7pO@fq_8)DlZ@y2o{IY418cNLxv%QhUp7@T9U#J6C#46kbxo8qw{Hr zz-x;M9?b_hJUUr<1q2!XU-IZ?Wf2f$@aPusXuVYWWCzGpkJbYvT>BONJ21Rh@NfVB zW2`%61sNDm9!^V3n~;_^Arz(vWFY@O2l+q-h~naZ`~Q11+s@_}WMC+fgsCdw-)|ro z$l%#|_@v|i$7yL3P9B~xq4PpVIEzDv`N0;jg zpu?RBM00ewGagRk7ZUY7&cMJQelm?;NY?8(1B2lu{%tH)9{&${H2>oG#IJSW6My8P zPyCUWKk-MLD1FSYaqzH5H=C>B0gp}>l@}hpJ}NIjS{&IAKH}KN#lXPO%fe)M>HD`1 zM|O{17nKJd|4(*a^RPTvdb`)nz_GW0(W%3Q<%HpZh8mU^3?;0d{|~(0%(&5^+S*5Q~wPQcr?G^ z_~X%e(X;c1XXnRH>wG%TdwjpxTln9j^P=IUPwPM&$N!ecYNS1q|9Q;t={)DzYh&S| zdHhBG3XoS@5AaVp)OjK5ut(=lk8V*Zb5P9L&Xy8n*q3n9fx+;=%m1qx7#eIXtU*yA z>(OmnFD1yZlff*IVV8qdAj7_i5LGu|>x=mF<`WBvYV0gKD4FkjBV2|dL z{|yiP@#y^R(fJ+h6_5WXJsN*9urM%`nR|5GevuSp@aX)s6C|*2(rE{V7eT8*7B06F zWMJ42%1!+KwzKU(7EZMjWO#9Q7bq3q-vv_t;`wq0hGWejCPVb$;LhJ3jc+C}fOPNG z6=Y!MZ+#8s+%W`kTJAA`oO;$!kb!}}mmUP7tyUIf(-kXg0;R_xRQb4#oWLD|AV9JMajSa|G|or z|G&7hfPulI^*|}>i@pE<|BpQE7~;|T-?Q^es7L4DV2{qpyrTAKVAx9%}%R44&P!3@;x4`~Tmw)0N?6)&Kwh<3R3pj0NY#W?NZ(K?cTB zK96ou2V+5oeW%YlFudmR=oU2s@eD446Tvz$a3T<2!NBlB_|O0U&9=|=1Q{5?8McJ$ zMbw}F|MxS2DvIlWppnyUTO|gL$=61L4Esc`f)c@t>!8#O%5yK)!_ zFS0;Nx@~`nf^z<$eKofn7#t%E54?kd&7_%zfgdARPfV`OyfVQ|=NSjxcA zd3*=R+~)uPOSn8b@4bjw1@c)mIIcaqMPm)YA$?CokYV41JK#uhS_Uq2oDBsTUR+wh z!0^K87c8rB{)U9QNAnv2k8airVuB3arnA7|&Z6Sc&3YcpbW!1Wv2+e72uk@qKzZl> zi(_DJ3G0j2|NsAYi{^thrh--9f6+LHfx$7#F&g5ieGT$~3@>_N8bbd6{~vMKG1M_6 z6yzt5#y2 zYX~wl|6nQ+X#T-m!u|h5smQ)pcN`dAGkbL2gA~b!e}WS6H+4Yan2r_tf9@q&g%=dk|GmelYX*FJ)k0cSM{STYY3_$AsN z-J-Sn;Q0L~B*?JO_%1kpla_!zk*qJsurCc{ap%R?O&;C4QNn@@uam&}0pj_ei$MW> zz@zhMsdu-nv8W)!i$$RFwOdqOA1MGjKxTB?&K3eYo@EIG!%MsW|NkFn4Kx=7H)~%` zV`5;~zv`|7!wX4pS#e)akb$92&!gKmO-K;hCfEyc+|k9baC-l8)?2L5flpz_0|y9cbqqj!(W8FdDR zZqZCVkgFefbiR8bp$zrfVg43wMh1pvh#Cg|*1rr4437Vg`t&XV>+Q+-I79u<*C;1r-#%FsrAi>;R?KPO!d2MTAAA zRvz73z>-jB8eV$M*~Mbi!6E`FwLin$4a&6dkaU)C?LTtYf#KzbfB*kC?*V&}fxnd< zT>rd(!SV-`VEJ3VgDS<&_b&<;fZSGE@6q}G#liUu4F3<56gS((>4MUE-!+h1yGgo|3Y{^C?d{+Dk4*RkQx<`8m9)^hX$ZFhpb1psRl^c?|}oui*<__7+!Pj z54z{T@N)WJP*$!66%KXs9^Ix)AXORn92j17fK>6kXk5g=aE#RoRA_iK9sw06(E86Y z#PEP;=a*d#pfcnj0|P^-;oIOBzos)VH2?VDdALNQufaKFHTKo zV2JkUd;zZW!;nj=3!q?Z{eO)0ggPh$MVf7=DuYU@oO_^>N}h#*;k8^hYm+i4TQl*u zY=UI!5)s4O|4;C@f*b%Yre4kgMN8*DNUoIp3TkQG12+N@T)ZC}qlXvqk!ZC;ekVPJS2?b&?dzu_gYiGMmT z_;eopw9cdRy+`Lc2=n_ju$0I5iyoTijF!Ns& ze)<33@OHE9A|+5-Yqd`H#2RC^OC^ar=xm}{yVCxT-SM}%? z<KKw2xAZ|0h4|bc+JO+lB_d#Wf?FR)= zaBx9P%=`hWK<_Dl3}7lrY5u{?-?ARm3^~Ey8o>yPI$1@qCAzafROkH{`{sfxA^91g zl83*=7OY70iw4Lgwxv9Xis_WXsV~ zt8QB_kkLD5f{eC3#tm|{s5#UIP;?m{*cW%-f#HQT*lD*tI`5ZSydUEfVD;rja6w=z!Y#<~Vl60OKsi{qS6z_d7^?@U*g>i?UqsCU zM^5WTW>Bqm-_`Kj3wNl{JZ5ke+M+GUfLVpAfqn7-R3}}P2A6`Kok#dv)Iiy254gf) z;BS>+0+rmye0tY_t4>%&2ChPVI-mJ;zIq|0%fQfiu)77U1zd?{FoIn)Fc!$vR<=@j{JUJ=R%^*34%@V5$r_}04iT!IWG(x5v0?{ttxkK?QxK-nHN zJks(O)PAw;RuyDm^f=Bs118?r3eI?@%$(5L{YB?&28NgUjG%tIg(9e+De~yN|6==8 zh?7oz29-kmt-hchFD&XhZ|(v$e85ov4*%I;#h#rS3+0|$neR^SHjJZV7&W{=~nzm)~S zP1aIJND;r`6UhBqpr*<(*2VIm%10ei?0%gL3bhi+*Fq4LPr-ctmMNf4wZkV+sW1~{ z*fG`|kT(9lUQipM+f(XbUocdg0BsxgfQ5!XDkGU)Tg0_Rj;g znLuUK>qw7o(MV-bsM+3PgZX0$#2=P37#Ln#G}}Iqg1FumWC#PO?Nq5P$iR4v^`ji9 zCT)oVS4e3PvAZC#`rg-#9*svp?H@?f$}#S+BTCa~g9xbf_us>@Q|cW?*=Y zXrDX)$s*b(7hi({kp*OHi4Y{v-@gZEftDI31_s01poSE4YNTQR%kEl1!sX1 z!YG|XP^EuF5f&SuHq6UZa3&9v1dS}Vz5^%363}>hsU5`WbzrBLC^y(10u=!KEiE7? zbc@!)jR7@SUdn-u;fEN5Xn}lt2lknEgRMNs&=P11q+lYn1!4{|1yuR%1GhkKfEuc{ zCnZ45gwzJx*D|1l3vGd1c!$~oX<-2+F43>x1_a&~$f>Ce3@^`u9he6;8rlMR{vOl< ziIIRLg(7eZgolxV0n|nYjj?!i%gVC~GWc}s&H&lfdH;pYRB#JqZa*jw@wdze7lfik z3Lux*er6VA*!KXE!oxvjU$QBJevY)7Rat=0afTn zLB;2VDPX${!FH9{cyx<$LG0;9vgbWmo9G95unP)7GN7I}Xgc8Hi%U}&7+y|fU|{fV zeaqhpDrCBCkFg3eyfB>zvP^WBJjgPnma#{-tscaQ(?MEiF)%P7Inj9va`VQs^XLoJ z&!EN$XmG34yxTS#Wb~~GV58$94tl@@u>l;zpvH~iffqJYzz*{1d|zt*+RC@}ZE1A3 ztv*QaJg{Ed)l4AIh{~Y5&hWqs29S3<@4pC`2x{;8f?6;9{j-=E7>={rf`&*K7#Lo5 zGcz#kZv(Y)Sl@s$;%QJh0B++1F`>0_Hcp0Rm$RVU-fe5ZB*^gMwjpPIw80!Q*x=nX73Nq~H0u{jPCxh*NG3^Z~-;_r9^p>b7 z_;kKRt}MU5aGe5H1*$AxO@KJ7lL=B;iovXR>3rzZ`3cllbJIgu&)<3oR9nvR=xtE} zISbUBSpzCDd-te-+~?EVqq0PVfx)M@MP-EuXhhPZ^PNX0i^>aIZDdnwKq#K z5%B1?z4Kpy!Kd?K8o!W_ihxh&t9=>|9T-0G$GNCTfad#RS2Hl|08K}I;*aFbSk1uj zi9hB7ShK_@{x}~M5b2^K@QFWC)M+&X!;8NY7#LnBVT->RAm^aPAE+1ub=bjCSfvTB z6F~9Y{Nq8H5{A^y^QEC}3tdQy zA>2YEpT#^bEtq#zDD z&dMV#$iNA1I2?tjumq_;&ME-X4I0d2y#-ghM@o=E4y<-ENbPY}Zjf3~rjzPsU;sN~ zKWN_i1viKb9_R(t&o7vs{Qr+M?)&*MsOebBu>XN!Aj6BNkN^MQ_0TYoVJC>|ahx?t zN{|7>e9dX2@4@eK%H#i`E+^1P?+1_G7!`qii4PqZJUV&pr34u~j=QLU=8PCXiB01f zIFap32g|?S3+kG@5PtUm|7#JC?qZJrM?IPkbG&GK3R2~wBH-BTqVnIPyGBL8@@U;X z@O02$$2}lT$62N21Q|dcInK%nD*8au?+iiz-Hfn!32(`QdU>PC$CK!tabUP z9B@&1P^$T#^^U9{18CyFqx1eB#ALxaSwRMVU*6-gf()I!2SG}@b2&U(-+C?O(7sZrV;CVK zC0xf@e~Ca^mHVopa!LGnZnl{cNB#LM3T>M4N&rInkBfuW(AQ5PH+{H>tg(97?P z3=B45{4Mhs85rubY)tuEKtmPvIyOf9Eh-=}UK>OH)_z6?hL>z0rN;a%G9cQ7zqJY^ z2x=zTSn#)i`YiRLHf9iAHs<`T(I9DMkXlRr7Gn_Y!`}*0_RwhX)#UYxHYp`R z^;|Z|{H>axlHA-Ttt7!FgTGZ8q(6?Cfx)JvB)Xo@rm&>OrkKB#1*9m=rVP@_u&IKy z176D=XHDRTg!W6&`i|qQwZc#?6C*wAERzW0zI+bOQo*2d0aVk1T5HEx zkAgDg%QIkQ%cTVw7+)R$vnPY{@=MUb?{U@?aj0paS%u@Qq2f@xrhyG~6BlFvm4GkX z!CZ53LD0-2!|Uqf;39+-l!Eh*v&xGLGJqDOyiPvODl863C z{VfJ55MJBAh|7(l?tY^do8D1NBbc>z_%?fqf`uq}L*f;SZxI?u8l=!-BH-e^M z*q^{Aql`g)(f>z1yL}nDSTtJ>@V9~ndVITcIlv96W1u0K?i>|?m*${a4>=93XosXB zbtVReeM_L}aWYu2l>a#ETVANYLDl2FwNUwDxcpB+sQfL^IPos1d@x-8rXVyJLB;yM zqfmKch&<0R*4-famvcdy&q5`|Ad>vYS?35sL%9|te+4T4tqtVjQl4Y1e?hBYUM7Gf zZ$l+-!X?j1f+E%#B>5OBxd$$}Qc{qC;iVc#@-j0Vl9PDKDtpyma^f|Cg&l z$_=5iDiB%zmlf*$GZO;Np|N^#FK6K}$rCfprH9X!KF^H@_eQzYnW~h#*7rFUC$*ei1>2Qn?0O zKMBxCgj2JvET|}}vpmi!2x5S8hHmpO=2DGj+sWL53{0i29^Imkgu(VEe-~ib7w`z2 z(2sX8FuarlTbB)1C)sTK4pcpZ=WzL5S;M#m89G@5xCI&hp8}P|n}i{CY_qL3H>fwJ zyHA?kfdMl0{;HXQ0m9`6RiC%vTu}Y<;!HDWblr#_)T?4FO>VaR#RZ!7=P~^MBIv{a z|1YyZO+!%jfz(&8%~9&6v=(p#fa@knP%%8^fMd&%Qa+E)`~O)5K~s^uA3zl_I0Q?N zyabi5%|Dn*OPXybf$TZPY6dEIN;wVxzc>M^K0Q5f+V!g$k6lYa(}QiGS{Yi|9ci$= z4QfpAx2ymaey!lHsvN{lcRo-n2xRA)hyVY-#$#t2K06ITc4j?9@?V4P8(vV%TQt}@ zgIX;m`X1e;U0($l_A7!`7zuQM`a!Os4hlGG`2B4yr9dl;jHLt_UK)d^#$r?iUdwoN zTYGe8b9jK4`uwf~kF|MpzJBom#B9A?dcT{M0n{XEJ|Y2WsU4nh+&u?0q;%Z91VkAg zIPP8nVjOSpU}9kS|NsC0V=Wd9AQ8}VFqKS2cqfB$6A z(Cx_`pjMj;zsn1c=6VZ;QVx&f?iLls4h$a6wGLpetHT~W&@^|g2dG?R*mvV51H=DN z3y;pjJN|-ZFI#W(xA=kv6EmMJXk%pX=!Pov=+yQ&?koZJ!*OTO5(oy58t>k2U*))EaB1Vtl`o6twh+Pxmtmt zgcY=M$Qq>Rf2e~;cd-IUjvc`Vt3~i@Jv=(^{SS2jyZ+^5(7bW4i^|*M&7i;qx$d|# z52(yJ?#uzEntMPLXqc|^ey4MRN4K+rOXubpObiSzox3N1sq6@k&SH<_t~_AvuHa_p zaaR=x5A0))PG<*?J>YD1ol<1dncih-J;MSUhHQh%o+l z&p8ZPdIic;ksjUo1|F?%O9DWJnTO@?Qg@H;QVD1@S9|;qcJSyfg+)7z4~upvzu3T| z8_YC3;Bnm902JiVu#Sw5g)BI8?EDhic@?x=g}((fi`)E*k-r_Z61Djs3x7Lk_6#GB zR73KJGdPcc^9RV5eG`5$F#Hd;@Mt}-3zSDnstqq4ci;exK^%90Bnt;{hB)3(0!}la z62sZxxHFh@+!>O9oFOV9S;nJN!l5HW$K!ZI0$33PgU9iP2m~_#$~^7>_L@s)g2`*v zU7(}{N=cm;4jZ0y+yP2%PQ4XkeTy*SVkJfLVofk@ZK=ECCoE_xw!_E6% z2s1FSl!$=@*^YzOO8h_G1`-1mkcT~5FY!+~9Ejh^=+WIaLzscVvym`1_L!E5jZ+Oh`=w>~RrpW^KS4frW%%{~|Nobuso(t{gc%rKyeR{BIXyZLmqN?|EiX9k z$^gnFFOPxB*w(it?8jX}p~P?;926ktv1V{U_;eZ{Zw9UEfrx=a)#G^c1yCS?^d4`% zfnYv>GG9x0Bu@rua_n;b@A&`Bf3OK1F2Wq1|Bt%1KB<4uU82GQ4PlqgUoSrX291Q5 zNPr3)=1y18_(3PwB`*}q85mwGcY_V^=)4bc6=P>JC{=m%f)o?Q)6@Pj&!$DzRw>O4Y%KerSu_%}jg2^{>O&Lharu;6!XeFAP9z=DR~ z<$+7*CzsBDE}aiCq6QH!KAqafnn6*+NHA(%7=f2PU<>MPrQj)y&ilu~p$my{P$FOi zg|1@+B5XZ6e}G#=-~WJ`MCTksT@BwlhB)p44O~Hjxbe*nVFrdS){EO2z{AH2g&7z+ zT2w%>23jk6Y4z$=$6Zvw)Rc|j~y8Hb%DA#{H`BB-KqT* z3=I4F?m#+Tn<_wK%HK-$L4nQ&UP~S3*$`C5RXga_mx^-2bY*Gz`DJsOXIg4hGHf*P9UJvu+_1O->;Kg0hoqrfHC zC&QD?=l;L+{rCSr|N2iJ$^Ty7E@EJC40nXhF+$t0Ev?+3d5(Ak4^ZQ>0>rVj=5NjC zW?<-c=4k%G$lp@P4O-pB#NW!u4H`$%Vc>81#|mPJFz~lDgD3cyn=2F;_*)#g7#NzX z1sFq3-Zvl`04icS{L5lu6sQmX(Xs%FU zC|&#CLF4s`?&bhc<$l1j*@XqPL*Nl70|S5m15S|B9J;G*JbG7qurM$jcNPG7-lOwf zhcnNMdeCYdZ=25J9^K8L%Chqm|8|pr&J!NplR*{b#TN%3GIbtke#pYVjfLs*i{=OX z2OkJ<9&4_aVCXEiDOKnWmhnhF^#4#dOX~vBK!#3d3Bv=8zZjSp82DWebvny*PX;*# z;iu91$uP8`+uU-S>pc*{wW6xe{@&d@NYZNe1N6XS>Oc+)Dg}Ov`Tj%dtsJC z+{3@^fT6R)%UbXES^f%CNIKhibWa9Z3N6pOO`1^bmhETZQeMYhpa#mzy9^8ro#$|C_xOJlrrq)X>CTTXmf!jNKZ2JSH2?Yk z-=*`!|KpCGXB@j-T0y%7`L}&=Jou8s@?7aG7t8M@Qz7zDNstUke~ZEY|Nr^7oq%}A z@*{t%-hY@;o0wrn!Bq=_RUfeY(0P!*l?9@*`8X3;9sjlq2VZb>9&qUmVgU;{b{+(o zeDEd5%Paptg@Z>ox2xv;?m!i%UKT6M3!RQC#mxU5H9WeRT{@C^TspyRL6^>8flhEF zbQU|fbb8zPbb@2RqccOor87bSJTM0eFVK7yXdM?MpZte416!Yg2CSt>Ly(z@-5|Z)lXG|&81|_@1`X!gF1aTF+78NF0I~=qZQTr#E>V6h++5AU#NRUc z%m4qcMfZZ*W3T!4{`vp^|7-Tj2W{{Y7Y z{#MZLJeSTx9-YrYQ~4I4E+B{j-d+!4cz{G+IKKh));o`u7CLr=`s&X;I%QORI!ja} zTsmu1I67Ta6kg2!3|4cvM7;S2OR0Ici;9AyCRp(c{GQBhzh;rHl#zW3+< z|Nme7eDnYRYXuPZ2Z;L$#1-`DeBOEY#XS(46&x%c%|{|SUm$v-haJN_TK|JKk~qRf zUOGQ}bY6pX?m>e=T!@}CsBZ%rzWN3pzA9yPZGBRy4(iTiauAC#o6LCe+l zWrNLS2YF%5>%}get3jhKE}g4EX8Ck(1`Uls#}Zy}egenHLH?=Wb>pDHrV?S0M&?dm zhR$x#K-tUu|NsBDo-DNlxuFHTV5=ms8R{^P=G`D)F_id#G=TyD6mJlZfLJe$z;z@` zsXR;`Gy&+M4Gs&4GLXP)WvDs)t&c#h8?1v*(XpU{H3pQ}4|{a}@MwM`Vfep!2gr>q zofk{AJ$h?YL_9h_d2}9o@e9-(Io|D}BGL-lY!6!34odbrK#{`l@&ly%h{R#&7zKQL zu}62jLANuH;mPJ7j3rzzK?BX;p0h`{aJO?sbCm)^iHWsy34bqW8Jb78mxM?11&?m$ zfG!q+4n|Oi)wu%FO$BvZ!Cln@pswm}N6s@KZ9Sl6tHq)D)f~*wIgnC)kPiOV7Yqyxa9yC48(>}ipxyB=|9}$A z4<`Or%m4rX8(spH9wl5aw=pmtkPMf^CCN1isF1{>N16 zjL>WW(rf^BRf!Hbtc_p>Sb+^ter>c1WchJt4p7tKwH|mr=CykBssFE)AZ{iW@W>`g-FghEZiS5E`?kLA?ok1G7hI9>x84RNTW}TY z+IoN=G8GKkpy3D_t3;j*25npfRk+Av^FTQrIzc>%fq|hFIzildir?h~fx0;PA-GgO zTAB!|i}!(slt4N#E985ir4m1wJE1kQB65w)3R+l%sC&OX{{R0qwC;TcV&kfN!#z9C zL&gz3JO6}wbbbx)1T{b;JX*hbbi1eo_;k8}7Kr+&aDY~8mWqHHCM_R9RV#R==H)X` zwYm>9aLrIEg*+kC3M%PA<-^Ov;8M%(#g!CLO$XU??A!XkgxwJ`k>k-^qawgi!tDV% zW8gT*`wSo<4zQ4m3I`|>KxZ4+s4$dpd31}YK-9F}=5IX*DqZ%1Y+~SVbp=hR^p!n#Wr~bscC11{|b5om)Xw`HPu<{{MIEJnGo%`nUN9W0|OL>yr`|*G?T3m(H~y zgI zRMoNhFAIOmZcsKW1kLh;;L}$?-+d;a&kfQ8;OSf;B?{9tq-p3OLSZf4?srA?|~02X|7Qb zVJMLUi|zttb&t+_hW}qI0yUaBK%4GB3t2s^b=O}OU?>svu+~+(A^_bk{Ui~TB0%dx zzz2_9bqs+g-_szMK~o~gqoAe?7bKLST%?wDDNF0^N>zABfm({-i8@YD3J1pwNC><% ztYI(MH>HT^1Ep?=!64SltDph|6ydKEL5YFC6|`~?)ZGM45p~XmwCC1>lBQ2@E-aNA zenX^FpU$=5B>D|>I>Qgf5^D?B><^ehtqqjzd z=S3B0tf5AQhXLGRi;CoTz0r9CbYjr2&fgy0wgneKeWsnDiQ;{6j~y6ZoKIq4X#D-2 znSr4cw9z2oq5#8w$)^qsFRmpsFhCAGaV=tCINlE0)dOhK`?Y!_>*(2G% zgnwImGkB$Act8gW*MIktgUdmRIGWdkba8ZpH8=lYufO#D2IF>+nC6FG4+Y1|4_r9G z#vOJH>HOr``RCv(iQvx9`#_5|U(Eae|9|H#pU&rC?!i|AjgLU}?~68YSNb|kqVX|U zv;akQv}4T6ILOH6HL&)V0iad|Y?cOmBv0d;6`*EceGY>|M~RAdU0QcLXqn7+@H!Mw z_Y}NXrFlPSO$}owSgwv8y4b0CFKE>aW1UuaFQ^&UJr$&AU&1Q~2A6K%9GC7^kV%FI zJi2ZFpBG?wkp;>jo$p_GIx{eMB)jH#FuN)=?*-{$^yqXAC=J->1WK=+?~k{F0tXz- zt)LJDv0j+}|Nnnq6hy%bEf6OI%8~v5|9@92XdRD7=lk9Q0|)+X-(GNl`VF-?4E%lG zk_-&{K!>k^Cb~X?wjw)1H9i4xBB7k?AdVW8a|*->hH^lC#C{Zw}QM2GS2%S zsHF@pg+bhpplO3pgMFa2QXu|AaAV8Y!lygc!SIq#cc{m4*BX#-8un;`+Ap9Y)3xTm zYfVRsRs*O``hUoy@fT=uN9kRc?${cS&KGHhmmL2ee$8{dVGcCGfzCKPz~W+gtM0W& zZ-`0&XhfsK>Hq%&9{&$nyVlfv_Ut@qc-!#5;kTFjKx?A98ULT?6%lCu@t@!CkjD&1 z{%tHQE?q4eAPZeATvP%|+5aDZ*$ZkS{I7H9b^pJD(Ifd(Ex@J2MI}J$SYGDu0Y!f6|2jKzU3Yor_usFNdL$p~^?43dbMJi1*y zI(tE33_2mspiZhgG{>dewPxSESKwh5+q0k|!QxovGH#>69WTC9MrO`Q*mtkyB;(j>7t?o zYKzth8y;|M{2LFNwVZ#T`2cIDi;9j*cZ!ORtKolF!%Hu@z=H-a9DC#cyBdC*>G=Im z=Rwcp;~u?Jz=8al&4sz>&;P@Ymgj2ux?NOkJem)&{6ArNxaPTw#(15J-{p`rEb(cqtrSs9gd#@ZAz^iUtIzv<>KJ!PN{LCK(ICo|GyRh&%z#WX$b(;@(c_Nh9|8^ zUq3tU1UgKJ0d%;7+NGefIJL__ z6=2sc2bIOCT>+{9yLKh0EKcnzPz6x!;3$JcA1Gkept3l%Yd{r1wWGzm7E~6eb{(h! z?ArC9vN*LHKowxuZUmLZsoeys0K0ZGs4PzH7ElG)wOc`DacZ}LD!{JY4l0XNy8~1K zcI{43S)AHkpbD^ScZ15})b0UQfL*&6R2HXpAE*LIN`n*>5Tih;&JQY!Q+ohZ0YnS3 zAt3ERP+6SXL!b(=-^9%w9YLmEsP8dX`OpiIv5!k4!#pO_+9{{pb0FxMWqc)?@{Rj z?ZLC+-_CA$(xZ0@q^1{6$@7S?L zcLiu!3#bk+5rkEY9=$wHFEv1$);poq;!}_0%O2pGk@1p8=1Gtf__wnNdobSe=w)I2 z-_itcLDwhwHD}c%sLgk8}a>Y=&5~y4$RIUsvR}Ph{ zfXY=u<*J}^)lj(_s9Y^nt_~_!50z_x$~8jenxJycP`MVUTq{(r4Jy|TmFs}YbwcI3 zpmN<%xgMxoFI27%D%TH{8-U6ULgj{_a>G!$5vbfKRBj9^Hx8AXfXYqsU_AK0r5BXC zLE{|9__qiC`+peLBxk$;P5B~&yt?2S13`mthgraVmYO>r-KM?!1)yg| zGzWstX;=#CIC%8V1$hIs>Q}WpM8(Dfd@kfp&=x+=|3^I<4}+Tao{dL9dHcn0X9flr z%N!M*`YVqAk2^O1XRc>Ay!7(&=l|gLK6@S4{#~F>-14{o|2NjCI0U&dFw}AF-whI* z3_3UobaEvlxQoCF@1MJ<=+u1j=zRIw*`aGEsMzV6qA~&0^Y7gPreAY+xiNNxF?#$z z)_KUm;(FH~;^8W_|_v z+6B}T?7Zoj`4huwW?RfXXp~+(sDE2duQj z!lm#$dVVV@f~wYg}1da=-tfuTD@MQ0zVWA4%U-laRY#MSW0i%+lr|L+b_ao7ji?+G6N zdHw(YYh$p}Vb1=4_{Hhh|NlGkZ)?#3MWf~6n)?V(dHz50V$JLS|6MFoR2=G93~#@_ zhUS#5djuHvB|x3>>V+7{DXt}+oo`(Y|985mc)SG7A35@Gn+uAueV{$z9-Z%94Zn5X zdJ+8k|9{W`0A!fLr*{dYiVXyJ>%lV;9-Z(1AAX??aUY9{<>8vguSLKUTX5;qFL)5r z^^Xxwcl>`0Jdb*C5SNMB9SQ!{xdrMRxecfv={JtL?`M0%$ za*;JCUvcf<2TIN2uOJze4OE%?s2G5b`0kZ)eEEe1)W`kcqWJ*S$$jF;zimE9E4ae< zO@89b_{5|0y%Ya-7A2p|*C1DWWZnj40^i;>x(<^;UH&=Rpycn!zpaFor(2}?1=Fkl z|9zNKR17>i-#hYecTr(N$US=risbDsDlA}0n3nS}VKx-u9WY@I6yb$1VJ;NmE|@TA z?LNZFVwf-=is~4cumFm%D@<4jMOY6eEP^5|4igqb5oUl1gXU}yE_wL^>Uk*?)t6wx zGAP2kVZw4K!b@Pn3Mj(8FkvMW;WC)83W{(%Ojr#?*aIf4fg)@O6V^fzmVycEpa?U= zg!NE_-#mwU9+E6zF@F^%Y=okEA57Q;MR++(*bGH@0!-KfMYs|sY=t761QWJF5%z`& z+o1@Xz=R!8gk@pEPAI}`Fku%I;rGv=o_9kLz5x^VKoLF&6ZS$8UIi2OK@pw|6ZS(9 zu7L>$pa`eJgo99o{b0f&D8lA2;V=|o1((#^Hx;8M_(5l8b{&>Rv+^Ij0eP=Cdv@d#+53o>sAo-Up+VFJ>I zrB2XYA|0T~`+5#8pKf)?(w5`xDxiIPpv`sd8gP~loMixKnZQ{VaFz|6p1NcQeSN z-IGC{?Cu76uzNKq5L~)9gY0tYUJbIS(?unxyBXx^&JY!WP9GJK?#UpJcXxw4-RYtt z(cKL4v`hDHkZU?aRAf4RR1~@=gZ$s!4f1=Zi;7BjGsy3qAu1Z3J}NrhlR^IP?gsh2 z(?!LgyBXy7&JY!oP9GJE?#UqkcXxyQ-sz%Z)7=d6U1x}jL#L053#jem(cKL4Q1@hz zXFa;RK^_Io=0tQmbAZ|s9^I2czVztyQ3+^%!PWdj!=p1qC4s;FpELsl_|(%2uN@eU zJA?OkcRQ;z|6s2Z?e+N4?X1x0t#bK=jT3+C8)*iH*Jd8w+|8As^>1&)L5mXvyPXyI zw+S75z|rii!r}3sk@G^Qv%-Hzp8uX4&6PY1rJMdc3cOx>+?fM(oEJ8eqxf4Vp_)92 zM3X_=9%=+bJDNsm2gXO9i zh(j<~R)T_MNkg>`L$A{X&+Zx(56^BN6${X*5Ht8&3_$&&%nuH{%#f!0|BIQ$8sL*D zI>CGIz#71f>x=&!|A(kpcr@<@?POu_=xhdUU*T`@lwx3b`48m$UiW4A8a-_^0%IrK(S#x=tRYCf~f>z!*OR00Z>dr z5+X{rjO1@EL^U~-M3X@y0NC8D#@{NAYVvRJVkY9^ttvA&O*B5wbyDBpM`!WRNeiL5?IE1Zvzs!k52a z1KFS-f~0v3v>K$_S*7&=e?RDU5P03OfjD!HfP!fMac2%mB%j>?ZRv(pLg~aA1P^N| zB!ku>8w5HBk%%M+H%J<8P@OWUe05gn4hEN6FCbg7IS;j7>I}Bv@3JrBPE-E?AH7Ys$b-iF$^7rNb|Ns9u zXe~S_gEAOiYS<%H19EeTh(|J5_&=EJm?F``3mQa(FF3l^4VC~^6)M6E44@MrT~tJl zJ9B`Jl>+AjraJjvkH4_SQ1b(JP%{sFH3&;=vJSNVwY*9uU$FFx+fArA?x z<{x}@ioG5mVRoqguV-NBbWxGv@0%dRz+m|H<#tdf1D5XdiL+%H$d-jjQKJB{4I}B4 zTDb z?w3WNrK>YKLRbp;w;k*}_5Yx?i;6_eTaV6rug$yqKuYUxYU=RqcV>> zb0|W53tEle&kAZ%!Gg~KlmG}qzzE^d(rt^e`p-6LPK5ybD21X=lFk`@Dl zQ|Fq+JiiziJpUg7B{G-J6cqtS%PX~Vp2WmwxQrenO6c zq4}MFNAr7@#(y997#R3lCHWZ`nrl>K7GVbNCZymQ*nnKf*vk^g z?|QJ)MaAM`3Rp;kp)~D3sNe6RB4g>IqQc+11C)=GLCkF}60me)1lr2%qT=B(qk9TU zG6?~tkRE6XnSz!=d_XBAL9(X4_cl@OH(m(G{kJWP#0!Aa!=fBPiR$vNF1 zzs=}oX=?t#2udydZC^p_i<6ss|>UL2vuyj!|;qNs7+b|i_fBx^HVv+{Z_uogwBCV5! z3pBOcT%%&aP=EeqBxs3qh>C$_2uRm2a9#r+RRGcj(*)7O0?~8vr7B2|kBWh%4@l23 z(2B)w7Zn}H|0f)qfAI6SgDQ2G?#Uo;IQOzJxpXZ7djX`zwU>v-aTO9 z*M5$@j{m#DSv-?Jdwjp=*z5Vn5qyTB2jdTq-gJah6m%1E*CbI4i`QaP~qm-{DZlCg>x?t(`&KLQ@xIij{i?| zO_2fxB&emt$H4Iaq-*Pe(#M|3hg>=!&I51DaqT?l(s|7B;7gX~XZ)VY2bs5kW5cC4 z40QdoW9J8$XFQV+!95_><x4+WHtj6b@4CUE>e+37QZquXTyi%0Uw<^%j5 zGrAyYprb_+^j`Mp4|J7XtUfk*Q@md5}8!L@@BCj)~c|F$pSq{hE(iX6C=nSAKK z3nU4ags1UuYk`PD&K*hXWbu0KO|aZ~iKpB-3vLvGhdMe%IzS1rxkd%EsPP5mb{ZEo zp!yG1)M$X(d9X6zF!&@Zg5w6rMa^7xQ0audsL=!!wU9pLGvuNshB#~R6gBE#TVX}b z%T&<)t_7b4f#HRc0jR5B_#af{@wXI#?h=Bz1LR0hDgZkYZ1^+K zdg=qOGkiJ^c`$>EKZkF}82PtZc_bh2?rHYn0Igi(DwXN{bnvGD=(x>G9?amQzPgy2 zAAI0E(ZTdurt{OI_&HB?2zVqP|9{N0`2f@Z7O-K~B`PL0 zle&v7pr;pkBwy?00X3Kz__yl>fL6kQO~3e~8DtvDDPl)EUw9;6?d1XOmSwp3!-Emz z6i|Wfk^IA>8*DB3pdJN_Bm(HiJ+Zw7x7&^0UJbE{S;_Ep0yed%C^S6L@2tp4BKJEYyx~M1^9(cJEbXwdt7Q4<@9?i#D4n6{1I+5Jd3>sAq=aTC-iBiyZqhlU;wlPB=E&PFx4o+OjOX#kW-k2`bd!|mYj z-wHMbI#8nn<`9fJNVRm_nFDktF?cYDoxgtqSTEF|$KVlC;tc|I1z`qdBO5e}M1w$m z1(-pg(+J>=`#@3*+P{#Wf#JoSqyPW!Uj$-ZI{N?rOa4Fq|L^$y|NsA&M;RCxAjgb@ zHd2EM9Z+cl?g77C32J?G-rx6upMjy*jei$t{=;Jis2dJye7#%&I)^{`I7GO&M*=Lk z;M@QIsHG;ne1K+t{%r?9`M=ZIp_}z!p8&&gXV4M;42Tl~p~v$j|Nj3UxnO`EQGg}y zL#|E;QOW7{Q4#2b%;|PQ=5#wDbGnnkGru7!BAwmf*23cX!&$@gJyd{{pf&B z==^SoN`yxzWRkZV)Qj$%44VD*=ip69$+1gB$k9TCDcGg+ zFn{YF1_p*+cgEf@MwmE%E9mNiUU#P6FeZc;=;p^>cjn$OW`r1M9b>OMOK%tpOsuq^ z*PXRDj1|sL=yhl74P%4z1A5)rd&Ah_e1~3lj@~d1INzYxowGNL6V6xYb?530J1;wTu}C>uuo#uzNptFEiA=L( zDJ;F%Th8dx8^s8hJAjbe+FQ=#(i_DDms^66o7r2=?9v;>443PG%kj5Xf=1NJSzLOf zSYYz}tttQi|3^|23Rc7F(i_E!P~(8A20SuX&gRk^#fDHLgQ|uXY!16iZxlO1&5wU5 zcD?-f|9|swj^;xgoj){hSl;J%{?U0s^M>Uue&-90|2Z9-UvThug1YF22ckhIb3o48 z_Uyds2)%-#@l6Id0|Tg6*y#g0fXYQh1l-6ppDe(zU*fF;!;8JDpq0JHU0OgTA_I6N z4cwl5>(lwk@Z@VQ{%ubG{~!GC(qaJGmg@r=;02A%`KTClvrO!4nF5;1^#C_RK_h6T zPdz$Mbu%$Kv4CzYGXS-tn-8&gSRN{UWq9(ngcJWZ5yNhmDF**fbh=D2@R-r*(+b)c zXz8OOQU3@u3b_k34A^;j=J($|ov%6%_Bt{do_x&-+sb$lw71jpV9k5OZ{0py48UVR zpcTfanjgv^{Kb0tfk*NsM^2Zi3?7aDz|OhZU7{jk_`mbxE^u-5q4}YF=jDSxST8^B z^<(sy;m8@&%JBbq^D(B*6CfjguwH)TG2{CsN5zmiJ2 zDl#73wm&8cFzhpV3tF}PB1Rc>?D0F$UeyDyZ90E-{scSg;4jwZhw>iDmo7i(_EC{= zY;~E+(9Pz;?|NL@MMb7pgafjV`Tuc`=3^`#Gh91a+N^6-Bx?471|h+H0_Y%QcZrJ1 z|6^b?J3n=PL^2m_W{Fwr$-+%q`oSMy z=gheL$gwq~m7x?o$6PH>)O&d*AN1%gX=Ui<>pX#? z>xkq3Gca9ZogA;3YFHirpL~7FGx>ny|C5gY55OcjI>la=|NsBr)$$I159p{Q7tpZM z4b2-anl~*E^826g01bcDv@(FNcK|gmN?I9S^L2;+>2~|`|7558pU$v9pxy{5Q?#C} zf9BHpz(w??Q2hS@?YIYf_cdR4*q?64KmX5ny8Y=4 z`~xz@qxm39>;L*^PQ5J5E}A!b3;w%wUU1Po(d)qoIy?S?<}J+=mWMo(kJqVoLef;{ z7H|r4>~&}Kn9i>>dtk$sHkXz%n4D^=nWBI1T8ds z`S>?@eYgmuSkmz5woU96VA$skDVC1PF)&4hOz%_%; z3DM{kVA!7wst(r4gG#gahTjZNzE=5vuv@^R`2b7nrIIfm$p`1;SSx~L1%P$bk?XCH2&sS2f5Nm#iKI@G*<4S zVgXtJ=g?WA64LD-Q7_`rU9JGy0TR-A)1$jy;$;gz0|V&DrS1@wfaU{A&4-j%F!H+| z0*!LGs5rEq1kc6PvxCpLd(GYaGj&G_=r}sx6TOcA!P(NW^ZHE3@BjJNyQl;-*QkUr zce<#gbhfCh5n^BfSE$dr1sL|XfH zUVDHhAwgsB{M!WnpX@x}*`soTfq~)RBaW9XphkG|dC>m62%qi{6$g)A6HXt{in4>h zIGW$Hq#b8529Hd#aCtD^^I^Q0cHHeBXrDa?=OK^eLkE9xIR0m82ko9oJMQ)eo5a7g z<8HsON&G$d0AdKpgy#QD{QbqC~(4-g( zGfdxqmbTXal@|<8f*lSDZ>KI1LB@2!ZvU|>>UIAQ zQo=Hsf1BGsTuT1Im4Jf~WEH}iUiZHq$(NenvvjgdZvM~Yk^G&%A9Q++2Xl#v!)sms zZElPpcY&Pm0dl?t%ofjHmL{l6lP@`T+D!j{-sAtd*8i1fKnpln7J!y|b+)v801pEm z@PORN_3U_y$^`}n2GEh5-4G@?{em{mfKE2)Jl1)*6C(Z+bfJ((@-eW@o%ekhKe%>& zbTxeI(!B(1s7vP-70^W;j=do&j4quI4nE*G_=v+}hDY)x*KV0fuG%t9j-8(zzuyAQ z2poLC1j<7kuVp=w54$p6^kL3X;Q%%6oO(t0dfon89;$P7={)X{+yXY!t9OkK$l)Ll zd${$oheZD(3L#LT~t6v>M(d5Z&3l=O$lmEcyvS9$6HjcfcT(s z1W4e4R{)2o&5Gm9#S^Z$h9g-#ch3jV&+>i}h4BaIvH7?yDDiz0DR6g)9fDXrIINqZ2 zh5=NvfSXMM0-(J>Q&bxGz_&GnWI&Ckm!L+|^{xN^|L*~-28BCF&ZT=#3s_6{oEDIQ zE}eT+KnE9s#6d>5bpF)t0gE*M6y~3I$g%l1AL#JgL;NkEasS>xM#BTmzZmN|UM>WU z&;LJQDbkwo&VixkOK-q`P<74%=5|g|0heQ)Eh?bPs$Qmn6nFQ4Io)%>=7Un51t@|R zz+%Jm598_19u-h$w{wmP=*(h}t3kBp>FzCHfzCN9pfl}3IRn&W-=YFK__A}03g}>7 zkIohqP;a+;4w&2gnhA9JOaE=~K~_+yDPYqB$|y#=h?rF#w7%x;G7w>qb&^nfO8 zTU0=8C{U{qoUB{GM;U?~1G3zsSEuo{MYk)13-cPV@@}Z9%xl2v96Q;%TfnY$VSMGo zyag=y|AghCI&YWG$K6}NdR#j1GuJYJYN!B^Ya&3`aD%E6&Xmd56zOr0$%pwnVKl8<`!$~1W(dXKmVhXyn9Aq)bQ{L|oo@#ULeA7Jz>?W{JJd=+!w}4}Yxw!?Lc$q;y^Js1X zM;i}_0ZQ3C&3nM@4F>)WJ2nP}mqMT`KYAcJt$7VNbFnn<0rMI7J9|K9h{7~Yc2Jik2J8(`zXjSSd8c7$OEX1bn^|)C{B!%pS0$C!!Yvs&P9(otQAt zneLXCYfV8Z3siFchZMVxy}^v#kP_0Rb59GX%{#E@(qTs`H== zsDuYC>hG>mu>g01TsjYUFuvD30V*&}n(%jjestc{ya9?Q3m46k(B2Qf-%rQRlODY$ z%`TlkG@;!eo@RW#A816lbpCSDJk{&P=)wp(h~Gu?f@^OuV{gHKP_5MYL-R!EC+#WV z^kI3ZRsyQ26XM^_gPk8-K*MpzL8f#baOu3SdCCRUd8!rfJmJ!L(xvk{#2DAkTdtkQ z9Xk)eO#`{}gyo@H1>8p7aP0gIX&``tyBp$)&MlB2o&pYHmrh8n)eVUYP!R?Ve0W^! z0Y?Hc!Ywb>9x0GH%E7jN&v{U4*yT~vPd@n z{Lk-q!Xx>hBmXuNriMKx;6`MrOn1u`kd+`;S%B7P9&qgBncfKz{D0iD`2Y*pH!j^h zEg*F+mgj30!yMoN&Vv6BfZgHIE7R1?3~v1NRzQYISQ;S?DM50GAwGwI+wwIkV27N5 zIfQ|M;XimR2JDdTDJ`Jzu)JQs)Uns`zvYDz3D?$>rJUANz}_YaSyni2-;x7-w$d6bk{O;3%eSggajxgUNnEb zW_J945Og)=$;&@%|NUoRsDIyE^uM=8{J&%8r`OitTU0qXUF zPp@>W6<~O=hL3^aH9M%|#Z+hB9ioz=Jq28?>|=iC!0?%0%SR;u)HU_!wiT)sfE;i4 znP2PBXa2Z@pwsPMK-K|rm-x1VV zIOzEwRPEG1b7j2!|B&UWdJfOdPp*b1U%xsG9w)!*(s?KtbmE|bN9Sq7lVB5=EiaUE zfyO)zx^#xLGC2M}g59-%|FCTKX`QB zG`s{FICuR2|ImMzHWrWn2VE>5)x0yj)Xg%D(PbLAKim9Etn>p&Gw3K=@VGlzvuo!e z!;`ONp|#$@2Ta`|Y%JO$Y`r3ay-+4!FswAS=@y%?x_+4<1b@S9KX9I&dFph4sP z7ugvYUOZdz|NrZIuHDSN+5cU-_o#quhukUS(%Ay$IrrKKS-!82uGQ)-2d!N5NQOD( zxJU97uzB4rJs=lZw@d+1{67D{>u11Hp2-KgTcGZ}2vtzS4~nYJUr;~3p6i)>s5ko` z+*+_k*KX%Opf)VXLG*QsmJFME`o}BM66nG z0S8jeEl|_Fvj?ma+-3J^5%5et?%DhrG^E}l;B?%j1svnezZv=aUH<+5@7Va0nF(C{ zT>?d@=yFg&;iJLJvB?g_nbr;;K z_Gml;$|a!e1G;3xG5+v`2@^JeZe8;1JjKuI(fp&KjQ{(MfEPT>3=EN-93IUl{vX~D z_44-r|Nkd!hA=IPuM=;pL*8lu1prIm< z-g*I#=KuWsZQz@58viqJFfj19cY|*IN%;T&|87uz_vk$6arv=F=lvJH;KhJEM->zT z89X|VdbFM__1w=Oz`y`L$=Rd%$A6E`LnYoI4V^4+L8=Td?EuLee)IVL*`xDRZ^i%D zp!2|_{vY$`Wb)`dWcjb=g9qf`d5>;JkIqvb$3gQz3?5MZ9-S9nOL?&JgSJ3*9`#-U*Wy2#lv#G~~;=nV7Vk`RyX z_#Ym<`5!-NipVdaFNpSRUhVnGV+Y5A0yjF&HmE*N}OD zE<-(965-M9@WaE>`G*I;oAVEk)&nKH9=#qPJUZWdbl&^(d5K5oeUHx9FFybK|NnK6 zNAC=l7Ru{{H_T558sfO#|MO2d z5Xx~OxYYTNNAt=59-Uu5t@HSP(WSTW|7&&E&M!Wl?>sv1`*c2fQ3pE4`9LY3S1*fl zgN1D=tH=KXulYTik8*f)$AWILF1=uQ02BqF40_lxBp4j@7B8y)gH9q=@aTNhd4C^c z2xxBmg%B45L+9Za@gS*A1;YcNnM=Y>*UkN?L#{vQLS`Dca)4o{d6y7$082L{mn?4Wpm z@%P{V|BV)n3=9nA0xv+j5Im9@Ji2v`u6XAFa&n2uAHxHnxM)84|I<3q`eo2T$sXS? zdh`bVf3b#>fdO1P?K^nafnh&L>ctFB28KT#o$n0~fPxF8=N(uArl*3FfgvI~7CgDV zPy8uV+si~w28IbBSH1A(1dXM)9w-rekpNmtaO!`vg(#@txF7veo0EY7bfd?F2@?!2 z8Gd^y&d$I9I!huXwDT{hh;Z=fO;J(s=qyoD@a&CI0cW`XA`A@RIC`;Hgn^;;Kq)As zeLA0Yz6V`^1zI%h@B*}Fx%EIPn@2Z`%4-%-+33-H!~qmnhaJNV4>)%I+dt!-12}1X zHT(v;Uf>GII*u2&e*OOsK1i+e@IDUtK!(oaFX};KvG-qW`1SvPM6^%mBcIN9E}h>& z*Sa{yy?DYqq&I5;Evq567 zi@oJQ35yk5$p`*@V*L9KXkIux!K3q67n{fbV;xK${|~hsDE$Pw!+FAl361|jk+}mD z$>rQ0$;Uz0u7e^Ils5pSb=LMh6gPxsVK{rEtbbbei1Sq24dvu=j={yMX z(>2e|FCO17`Z6Bz>J?!u(ekvsQf>^I#C*^j!T4IW%ay^=%9Wv191=dDgGU_xg6=&j zW%cNM|C-z5|Iz=aTW^(W-K;OC z3NU~wnuD(uJS=a3ZYH_p(e12I!sgNGr0`nMqx0Zv9*@pL9^DQK9<2vTZ+~-UQSj*G z-85Bzp_C8Y&Tsu+!uq257x?-&7tW_IDt`U{54oc4Fes;Xet)4V%D~WiyMm|le&->> zZ_zI!MHv`g?D_rw|8WM;EzzI_EfXemyR(3Eqv8LTpv`n1-Mn>$0-*f%$)oc#xKe+y z612v|@C@K{-`rVPy4`t7RJ7eWO8C3&J(53wv)GFZte_R8plTL$x&~{SwML`GCH>N0w{e3H`KE*cy#`*^lPZsWhmj| z-{!7!%w3n^b@~g?i3qI+N~8CI&R+)^o(a0y>_Dkkw=<8mGe?n5cd&p*cdCDj$x>+<>qVwSY16?9qoz6V`+YY^EZa(op`tXEq z_QMmvsm!DEJIKE;^ubx+e&?~yqr0{-f=lNo-#}@#^LPb+WOU~%aHPh*^cH4dh>DH{ zWgw5nH{fyi&JYy?{%sdLKu4%}^s-C^h5oLL^$rZ6dvqLpI(<|;JTwo1mK~i3jTSuO z*R1%+uUYVrUo+z(zh=Tge$9xD{F(s^`87Qz@@qOYf>eU$K0G=f9cNJi)xgJHR9HZ( zpujU(pu_zYKrDe5^FY%VjYmMPI6MJVu6_nx(9v0=!t>3Im9c~maygaiKaf94Aklu} z|Lf##XMz7GES-6ZctAm%49SuYzd5rAl!$d(d-Rs5@IX=(Xz7i|{}ZouyS;h3T~v5H zx`QP;Sh%{KS^hiotl%gCb=G;fN?2A1fG#<||3U&{)HK5bQIXMy|9}D(QbBlj{_yDh z^l6<>=W%ciQTX4Z^CH9!&>6K+haJN`JO4X|d3IidPPKP}uXO2lWNA52!QFgL?^Q#AQv4ltG%g;-WJA*rw(DVfgIn6(yfGy4N)qLa0_|{YN&1*qWGqc16 z)X=f?WIXDrd8FIgyVpb?)Nt@+VqoyGd{A@ewH2tU{eSeuXV6IakN>4oKAkTNFL``7 zQSt0N_F4vFZ}5uKzv%AN93-T6Fp~v#a4ZXgTTA`2ljm5~vyT)iK1e^9m^E zzL*YLJdw=ur`y`4^AXggPe+4R#Ux1p>mLEJj zk3sGYbL@6e5%91)TF%|@P{6bEuSe(W5*MG&=P$ng0*6_=W4DcpN9QY_&VMg_KzmC; z4Lt1^q2K=hZ?<45ReOEkk$+n)gHPwP7ofdutp`e_J^r5t9hKR7yZ(ts=L?V41C@M^ z%|0qDjIV`2e9arat=~%64KI0q|Mr^6@BlQVAi*@jqucgwmH@-cGEm9iZ5x;^!0<8) z#BP4W(QLag7gW~q8~%Uc^X>ot{|7o*C*%q+bhCEl3NS?dKXG^hNdH`r9 zGIajnpL*!v3we%1rDBbsfiZ@9zUDNRKgZm3867(6bY3$zpa0+a<1pw7M2}98SD%C0 zAsj)Q9T;AK?gI2^J|Y2<&?{WAk4$)sBpJKq@=$ z{SW1cg5UUvnt~t$I-ofwP%BN~xQhzthz^FAd|aSi`X1dmDgvG7I!}YvUod{{a%E^a zz(4hnjVkyqjM4|Kw@XAlyTv`aYg7ar|A%uhg4=jGD&Un70u2_b{H;epdxQTUIOd|F zpm5AZ#fAY~ARcp3v1M>I{C3Pm#g5^ai;6vi;oIXbDh{9$`M8UU3y21d^a*rHff`_- zgS8rdr+3Uzxer=Y(+*1C4ZqX)n$@nMew&i;$UES391Miekb#{a4>E=h|AU=VQ6k&$yNbWH03>wh-~a!hwWXl2I_9Ec&G_2N)$qVeN6^SWIF-KK z_3!_GSHlB4K^*~Pl?*SZuz;^q0dG16;Z<6>Z7cv;250E!Ts|1WDm<8fzSf_k<8 zkN!XUGUwm_|Dbqde3=Ac*)hJ1`1k*RLyd|(1Aprq@G^!P6#bie>;F$HMofPc!t=1+{^G|_UZ%ST0F7pVH=cRkhNqoVNgC+N&`oR& zR$8U5j>PGOrMPA*hMl0$N@j#UVwR}GepG& z>=96UW_)Q&g4>xoTEM~M(F+MC&u(#W41)61e-{;rm-TF*=^Ua0!lRpMfBioP&|(mm zKVT=i{s2`UpuX}RaKwN*1Q-9Gw7l2}TGTiFK#PlteF+QbTsl}TwFV^td(eeD;G78B znZWI%;sRRn0E)Cy>FyF08P9HUpU&?fCw7BYID?#dgB5%zq74K8z8Dpodj5tQ6>A1i zS#f}W+l>-&kL1IeF)A{eF)9w8y)0~?^%fxG8fsK*8Tebjg7On6EtN!oHb7X0sL1$q z{_niN@9d%?vkSDSThm3wp}R!I;l=4+|NnRAs7Np#ZM|K>&v@4(`7@Ghd{ksKeNVSA6y6RJ}ps^={)SwjbavPL3uYQb~^uqmcKLJusp@@d`iiPZVYYvarZD30OEEW6*tV50Yl!Z{hp%|9_W{ik%C`$5Jkke;8i=2A_;I z1zdV~{6FQ`@Q+dQfJY}pp!vbq<^$RtO#fX}WL{qU{r^9xNy%ahS`$<(2rsk+96Mc9 zSkO!D<{A|T$OK^;zYr6@tBZ;QxH|d7FX*D;0kWJCR9oy|16BL3E-EgrE#Ep_R9s5= z_`?sR@$0#$c<@hmQLzT4f5`fc8kN8_ejyhXkA3x^;O&HDl^0vtz$KGCgJb8>l3b7O zHDJH&18q12jdqlQ)_8$NLJyW0LIQItBry4>9^g1s!s+q<;A@uuJ}NF?Nzka!!3Il) z(znML8D7hSL%l@8rSpYjZz$t27gh#6SP&m$5nyQeon9Ib%d=n`U$DchJ6z(rFBR<0 z<1apeTGyS&UNd|AKipu=Q2GOO%PYU@J&*sVyO?bZO1|6ZK`tWpU_9*6`t2AqLkajg z=%%;-|9827;_E|+A;j-#{CceQ4h#%MiXPpNNWvLwFo%Ig2MrJW`Lqt4d_YwggU9!a zpz{<|WM2OM37SQ5Q4wgcVBl|k@)dMdGN`Et8uI{^IUbEiKuyT#SWtHb(va^K6)P5C zXg=}3`IkIs&h3y#r_Ip?27wH{PK=$bzluPI=pF_&eE)(+k(%FdxOA&NE)rmP@%0(# zZ1y8AosT_wb&k$32xNH8`v3I*P!5mgw;ZjvOFz4GzJIat+5i6&UW<0Ib+GgA0}abr zUMOV&4N8FqSO1^%X#V-X^bx4%St`)P@xNAnv4 z(0oB}i3-0*^Ro{goopW6jvOAx-2?>oJ1}^FPWxo>=yc=o=ysIw=ya0+ms>A%Sr`~j zg2qRB{r-b`&dopV$^>3GzXT0DfsWj3KJovxgh%ql9iU>Z`JuhX!B=b^mmhd=vRnsE ztxT9;c)$a64hjQkoV)W=7rVuU65f^rr7VX3U$c7rKmPhH$RnU})G$X-H`}xGFKCGK z3wRg=oID)5v>o{O{e98=65L07>(KC5w^WjUUp1pgZ#LtL91ie!4u?nQYtZNsli^#J z&QCs_&p=&a(3xzYn?$)hEoD?nS$sQnR6vb{&cl`Vt#3U+8vsG&MS}zX)T2I@5BR4X zaA-MN!uuli1;}?Gsn-fGB3}Ie4=M+bGbn-5uHcNYJ-**)ee1#RdILO`4@n7! zCxFHazJtaK{(-uzpc!OP7Y7tE5#ap`C6fI6YMDHGW0_vWvO|K)aSx~ld(G_8 z`5JWV?f=)s4Zjk4i&mD4HT-huEjn4w*Xwj)A1KW?{IcSA`T#oO#l`YLZIEa384vz# z*F6rt=kVZPe-R|^!N2~e2jd|R@UYe{IIDV` z05}R>^Lljt@c4ei6&wLSkb2bMlw^3IOT6J%QHfH$P{Xgp5|MhXmP;kt4ZpNY6<

z{3;w;D{Mqlpz`y`r z3;;T}`o)XK|Nn!N(a{pQ{h$dZkIus{F2e*}B}&ynrR>%xpu0BSmTqq zqoj0Dz6Onxma>7zoS6tfL=;WYkm-f$}h2G8DDMzE>>&!+JUvGQ1fhIiBWg=D#`7#Lo& zed3Qi{QrQ9<%iO*{2Dhu@kiW9HO%^`5vU@1wVKIxbqNy zi!G=zFvElKaOZ{ZH%i!!F{gU`KipgJfBy?+1_noP)POGcPCoBxd4_-PA=lQEkWx*h z^;?O6Pv--VnI7MN_Budp^yz%?{~YLGJdmJg=atSM;J&%z{{!IbOC6hkuyh_T-PHPx zzZJBn|0QV01OL8*|IZqJ`veKNgP-_gZhYd8nHCHT{Ovsd|Nr-~d|fKg z`j)??i-Caw76-1a-%5EpZ@6f__)VoCS5Tux&!^X!(WUcaDYr}K3m44; zj=etYjJ>Y^Ef1Far11-h8d!k#W!>*Q_ga%*0g!V#!WljO zAOFN3dGHf|+$oU5TECTE?mXeyE5p!v;}|o8i{=Z^xS~h%5e?)P$%F~u{PF{oUw(jx zv_UHjz$FI*!-skg%Y!8%9x(2I!%H5P2l=NS`hN;C7xMpH>q*bfi~Lg#HUCucNdCq@ z|A0@gh8-HkK~I! zohLjxFM~#qKQ|vT@a#O;@XN9z?0=nrW5W+d$pg&~6nb3**gM?*d;CA=Vfl}L`XS#| zP!ejnP4nIS0>}p`SUefm)rji$NwJxPl1LUL3cM!;@Z@WrE*Hc9P8}|c|2_Vn1gV4UhwJME0_u{$ve^5USR1-k(2YU!z0IF&j z7#Jd82p4RYA9;tV|)lpd>Rt59FVc z)M8Mal%%E?WtLPbjD3B8s zic%Ac^Yaox0S7lwAv3SIBsDQbPeCC#zo@8EQNc=AlZyeAQe9GWQcFNOk<%O~4Q8e( zWR@tTR%8~J6zf6MhC2rNdHT6qDWrfk<>!I?gRD;@v7jKaC^fGnr&3cPEip3(6c=D? z2x=`ZEhvD*EyOMb1%=|wyyR4cOho3$%Ln^6wFu@c1qFXZPJ!zKg`PrgVx>Y7NH-|a zM4?W?rfeNEW2G zpeP@rO`$TiM30M$0jxVYzceQ$PrXDTF()TKIk6;FAvG_*G(AHhH#IlEs1mBmIk7Z7 zqeLN5A=uMB*wsBuA-@R3bP5etD9^~uDF&4mx!|w`Wil=<1qFowSk_8TEG{L)ul37$-qG<(Et6`|A5CSSyKml1=l3JvYkyxxynpc#XlL<~`5XXRQ zO-@YCNL9#4EJ`U)EJ_7wR!~q-&`4A$E-fl3$^<3QoJw#2#i@EA%R@3!K~5}EFILD+ z%qvaI(NPG7lmZGSdd527Km=##%)GRGP`UtxGbmkX7-@nH02$&5aWbeFNKFQnftlcX zB@xA0I-sBj#b9Y(acNO1s8%U0QP401hhKh?f`*Z%jzU^$YK}r$QEI9}Nxni+YC(Qc z2`GD)vc$|BP{e_P0u&n{ z?ZuVFC8@bO3I#c-iJ*cUlu+_gKqXuX$ni<3X`m7@HxXQYDCDL>3NOEOYHRVX+}5jMU`pVvtus$sJPWg5o$OwFH)A^b{086$Drx zs7xzU$gPYA)eU+{RYu@=2IaB=%;Vtf21+ZLdEmH$=1tn>ag%|_<3^g`){}-Yb@I3o zJdYcX=J8Z$K?^DllM_MJW>TsGNqIa!ucRnHN7or-LUCqpW=nJ2DB<18MXX_T{7lB*>ZhL@gQgDHjU!Q;R`ng321*6a`&fM2QDho0eacoT`8j%*@XNE3Hz{)dl5f zP^ku1r~vAzBqNGCn8IuYUES=|RAk%1Tn%t(4rz3zY9ciVi^1lnDd_4#?1q}Ippajd zT2x+?32HEb+OMES9#S(EqOC+hR~OvagX>ZNb74+}b~3>63+^U>ElXC=)h#Yb$uBK| zYlE6xlCMx)l9-p0Sd;?lzkyX3D(LDKmS(0R6f3~mxe9stdC5hYC7H>IIgsR{01aP= z^U4%-b<0wVlJbjFVKybDf;y345sgFzqr4Oa-7>WU<7-U17YN(*6r=V+z(4?SHoLT}&=->`1s2(#kFvtd} zvotWs20K$XEwLCWJVCk>b21Z)L5WI1*ASv63Dmj=Nx?Ca8cT3u_e@jB%qz>!PEAor zELMPY@zixd-POd>oDzjZaE}etGy%0S^C1mraAgTMQURi|G!N7_SJzR%t{0IZuM%lD@SvoSr=tL==i$k?7*v`eOiBeOFL3`9o?IcN z0$KttC@s-bP=Ix$lk;XmBM}p(M2^w-}sGL1h56!Q$iT?CKZn3XTvR zh4PHdC$;?a6DNRXD0UH8o+JFN<*HF(up*X)3TwcQL&dkrl>2ibvQ$WQws2vXN zh9rWU@#UF0IiMD8X>n>=X^sxazNFF;g>cUh5C6~*1xLR~g>c89AV%N{LRx-KPJTIPXaZDhr&%c^C8mHPEwz}7 zK_f3eFIAI4qqrm`Gfxvd0O1U75#$%7f;#)4!8K6#98_0=WsyeUAVYVc4k>6@Ex)J| z+V}TVCbMo1XWN;2@+9< zs=#m+s9CO{T5JV&8Is3}i;{iwQ&JfeK#~d!AQ`Kqs-V=w6!+AU&^%CQm;n@N3SjSm z{Kf$3KEMYyG@OH+H6cL@N<$!7E(Wl5sd*`&4t;7xL27bIYD!Ke7Xvsf6Vo%374k}R zlTwQmG{7oBLluzzb_yulffKVP7sNHCc`ySYmN4XJb1{_W!9of(ejsI;CWBsnX$jcH zI0FLQo&hVth$E0|5*70Di*gflz*!F^P}566)lYs=W;!TF6hOr!I1z&506JQxS_~O9 zLK;N^4c#W@6s0DnRKiA?AZk#p2aSQKrYJztYffffHaNn{lfW*8cm@(sptb-gxq-tE z6faO;0RJN=#2xNK6Bb5xM%i zDP*SSFhC)(iNwGd? zL|jKf)l|MF*5(GV{O`sHEazaEkH_Fanbdy1ESD<^e;fUzBG6LzPi- zVhKZ(k+Wk61E}I>hyt-d!RVBjq5!H=L1lzG7Xz%3$$;F-Wx# zl_XUefk_6vl0?u&*bEGkypXAr7AS27rRAWs3zSxd(uPnvSQMg9Pz*v>LiyQH{vIel z0!o)aX+u2&&;XpFsjgdU61WM$P|l!GZBU_VU{Rr?0HJFkr75)8lcL}pZ?lzzi#J2LjwdgydFefvTFK#|3VnfP03}!4I$w zxK>b-(&NJ2UBn!-gAS}^7As^V78IoBrKWI!3kT4USb1s@C{93qA@JxmtYHLct$>Gt zVQvPsYZJLZnE{+mbihp|=m1_~PBDA{5j^G!a(YQVxZRgnT9T1pq*1KNl@A)+e)B>m>oCq3}PtMQH1&#WH2HHVmsF`}HdI}(&p!prFqv()21vZKf_CqRIheBd; zacU80B8e-jw73Ks$KVONjA}&IfgRiWM|U^FaR1O93?nG{I>>p|}Lpd*=c*J3yWQ4bZ}Rc920@JuWW9 zv6~yv&mPB9Izz>I7Bb znV_l-)M5m;Tfv^wEh__;m3mxUTCkC1NZv|L%!3v_MX3cv`6;Ezpz;~opoe6MVui#K z#AE}PfM;5IfW8|Ig$=Tw5`PV+$7w@AUs(?7Tv?BDX#B3;lt zXlii@B<4Z>Ov}tm0Z-YL7J*0ep;N9PT?#4rsm0)#UM%4a>UMytkVMe5OC@M(0Uqup zpjjiN;*CoI(l>=z3aX+@b5cNq5tRyHr-LSHKpowT)Wjm_EJh}%4+<#(xfB#~QcFNX z^Vxa%(6f#p%K?Q*hxGGjiR7lP*08i(_lNe}%3lxqe;4Vo)Q9fwSNkLZ^oSHzr zAV~4&sQ~XnL8eYi@7eolGy}-R;P1^4>>3#A>gVhl?-~^3AH)#g806>+ zW&66qST2qsj!;1aGv3$H-P4)D(;q4m>gO5};OZRW>Jsnj@5bOC8sZe{<`(Z3>f^)U z?CA%2o+E`cDt$xT z6x0+9b&V8~^HVbO(m_(%MheB1x#0X;TAT{gpP82lYThWM7v+~0D5$3BC`7BKfQFG& zQ(_@=Z>lK}eHyAJdWLDLs+usZ1&PJQV3&g(l?h_&D5Mt^fTpz|<17rSDGE?`g4%<{ zRtmX^1qGl~2C|5uI5j6Vxg@^`qLU#xKLs=tmX}_Vfg}QALTpR}H9|oR3Cw^2b?6}N zkZ4d)W|XF-Y3G)tDKHe3Xcy&xPLKvA2G1-=d@qL5f1z}EHbh({7eco|=?75SDi0z) z1xmkz(#81@@jXzQ6}rU54@ysm()XdXMj=FfA(Va#rF)AY;$g)QdKZ+|D1q?BN+EO} zls*on-rVrCK54$xwO?l>Q2( zAt_HmA*nPuJGDdsHqx%A2kId}B~wxhN-`8w%~HVgw+tW#s17gA&nW{f^C$t;UB!@i z1?d2-3CSxiDJo3{586X=1&V>WiJ5s|s}!I~HnTWY0Yyb2$RP^R1{JE1#%V>Yf&yse zO)6;ZfC6NhjVe6jfU^#`N=q#&2IUX1;hd45qgSQXf5ItoRJ zC7Jn<{td(zCHdgi9<+yG4ed9lCFbNLB_?Ns4F@Is#GLf}qRf(vTrSAT!JvKrp!M;f zrL&a`kmI6VSr`~D@GvkGsxdHx6f-dVjbvo_!OOz%Qj>>aPpt}reoAVYerZu+UP^v0 zC|w`<1c|RRQ2Gg!{s*P`K11ZyptJ#$_JYzeP&yAv*FoutP4Q-E9F%?nr9VUI|4>@_E5v?B zC>;-_i=cE5lwJy@cS7mAQ2H~J=KBUQM-fWfLg_FloeHIkp>z+FUJ0d-KOjL(J2I(&11#4@&nz>3L9kE0lf+rJ4Rf^h-l&Qz#t^r5mC2 zdMJGfNbTX6%l?fnR%fP@8T$&78FU8cg@V+g+{}`a)D#B4e8h@A(719+ zCUh_tE(2Y0#o(D&l3G**S&#?m$|xi!=HxJd2Bg8A3b>Ax)UwRvRFG+jDJh`741;4) zxRki~oq&fv}>R3~Wc667fG0!WA$gI_+V=ZXk3PtfEw5;w0bF()%cA+adE zG&eP`1Y$U-{htb+c}>g7FJ}nJ&j-!NS1N#q+(DzC#ZYrWW8t9gO==NCNNNRi-7CV8 zpc*G9u_!$i?5cvqWKioVtpv0#2 zgS=PF;8c{KotmdmkXew*;G0;I0e3oRbQToiDf!@vI6qAxtu!wgq6X531}7{~Z!)zw zH4p4Zh9FqTrlcmOfMcN?ybvrOG+F@(4De_(*eCgU=^&4QS^`BW3Lw?R3h>2F3~r@) zkaw-q!GlL`vZ)D#96Sb_!H4_aediSSf$Wo}Y_PG+(K*mnx4dCB>upk$nyf|Ma3 zZUWcqAO}Dvm%*M*EzSfld#Wr*W$;V^jRdA;rWPp_rRL_BrKT`AXC&t3rRG2f4PZf3 zl$e*E%HWe)mYSnr1a?(%WnOYdQGQ-#RcZ=U!dM|AF$a_ZA?l13ic*VHOBj4I^RlrT z7f_U6lAoNPqmWXR30g%53Wmgz63{wAa3*#R_5_VRlqQ#eSGK_xi9u~Mg4yN?O_8Y; z$r)g0!URD10yGs2S*KP|l3&E&3RRt}+|sdfU`302oK_w_?G9BDg1SydfePG{FU$!YVFF zEJ%>8(l;nf6El3r}!?~a}IK{}OWu_K0 zI70@qKLqL4%p2CbjThqxW=0`Sx-q&O-q0F5Mr z(mhJ60Ima+U`mP-^NK;r6jJk2!2KjdB2G)p&CIDpGs_WD*DGL?1kHgKKua(Nm_pdJ zRAwG%!~hnPiN(d4>3QJI7^%ge2?JP46 z0eII(ULJHgaZ)O1kSi5bvO`MSVAwhzusCRk2wZJqQhrehgL6Jy0IUP-kJQv6Q0bIZ z3R;J)Pz6XwJUO-43O37BTmV|YgzO*C_-P8L%0d<_N=*Ze!ZLV(79eF7D}c@Q%U3AM2QB#k zZGp)zEq$Yy4!9a_@2vNqf*^Z_QWUaNA^8E}2=CNN@YqLc1*F1)@xe7pQ7U*r6$41HJP}lVfhwR>@M3}D z)FM#(nL#73G$%(B)R4!4A%hbL(f|!am*#;+fT49!EJJ2q8be-U9@Ml4_OoV!z)t)B zmGc9HT`ofhPr;{0Da0>eayokk1l~Z!q1qT2KwE#o91$?dz`$4)#K2e~z{t$Q&M|?J zfdM2AI`L!+qXUCER1Js%iJLGmFuZ1TU;v$L3lalikhl*61A`)y149c)0E$84ps~B9 zOb!hGATcjK(9UwO`85m-3}2WW7-T`>Pz+KJx>8q=*?~bFDh8rJ;%gWf7%Z3_7>q#z zE(mjuFfcG=GdnOygT$d2q#ktJQ5&-Z18AQ=gCm~+=wvI9pT00KFnnTmV2B5ANCb&{ z@+|1c^ZP=`b)bTw!8hh~so%NCOSb zIq?ZN@ku!HDLC?JfC9RQxtGa{uOR@Whk=0sWDg571H%zs2L>mQ7&!g{K=J1cia(Hf zD$EQFYZ%QXj(1z@RAZz_5;;fdP~rocJWL zs(+x#zyL}gEzArI=j9w2Rv^p=xzdwQp^e28ltLVuSwZ2xhM9q(Lc@W<8sttW2Ia*g z%nS^hH5?c|fYPuNpFls8E1yIkvn!uMFN-Umh9jRr8(R;n3!jAxpF=aqP0)1yhnaz4 zv6chFcc@t)3KSk9EDQ{@v>h101Cx$?0*-tVptQ`~#smp36BY&rb{z+XM<5O0@B*iI zaCm{-8N$NA@KVQt0lC}*nVZAHz#ydSz)%L#hh{EFUk?idLx-*d1L%}skP;9Ei7#Pc zVBpkqU;v$b0}=yakoX=J1_pjT2L@)402G77uYl~)a{$LJR2ZCI-mow*=;>jmKNeO7 z27f)Me_cT30VKW3ure_0(Q{zngBilWzyJzw6IKR>Q+f^zbFhauD5wqE*ige8q%Vh+ zfg#NRTJB)R6Ha|gSQ!|O8agmch1=(b9KSuR?w}ZU;j?h(`=AbuU{E;RVP#;5GIn49 z-E9c-0!aJ|D+5Eeu>%8W%oIjL$k31!vT;4JpDU?Qj(x#=xNGmQ1XP|tugq?vw#>;^rA0!UR zH=uIWozDPLejH(EVCeR8V90{Hvlo>A!SzcUiwmgKbK^4rnFBhO@T<22gFe)pW~M-t z@|1^zfkDN`fdM>12`+CT`9Ot(fg#1mfk70c4~jwVwc%i3sPu7Q@P>+kD3CoN91ILc ze4zChxP0&g)dV1Ea6T;IU|^8;#mrYd91IMaz77l=po$zVoq-YwDCqi`!0G$}Gc=up z!utpZ1A|G11H)T+#8V@Zn@&_&&jb!3osDf#`$8x+9-~BRF@eBD)119xa>< z3^ofL7!1K85CRmAb2u3oau+%Diop_v8b&OMwA3;~NA7+gUGAhLas zR0awvh`kM(AbUZkfW!X_Cj-NWr49^oU=aubiccOc1_r)m@OmBO3$S_>E(QkYWvJ~d zko#=77#QM~IWT+%8R5t$;DT09#Beb%1TJ@A0G;Xuss}+%2i3&QEN#pn{WV++4BM7F zFo15O0ku=wm|Q^V1e}9G?wP~Iz_4cpYPk<8AGUBYFdSLoz)%3P*NIQSlTQLv0ekQ% zc=2gC!|G&^B&5E2!o|Q~vJzTvLc+0`xrYgy_dxcra5FFzti(*;GTaOd9V;Ec#|lAA zgP3Q+&A_l`r31rkkf0-M(!^gnDu^Ac;Pzylnzwj|Im~4iYe=eZVhSl$=&8mvDBO1~=n3=A7K zJ1~HI-6;M?)UTlM_2Fk=klW(GkP12l2Nu4N8URuvyFlxK1xzUAaSJ~KL(4vB{|o9) zkiB#G85maXb6~IoiNWlJ^kl$!y^W=Z8RVZM{0s~)_CeD#NG-HqbBCXSL25s=es%$s zQy#paDh;Frr0)+u14G7sXg}T^l1@P4A_5Ey3-&uOfV=@x3&J3A9RUW0HTzM^15kPF zBEZ0KV!s2!VUR*_x#S8emt3Lc610~Dl7zIMO9U7gdJZ@+G-FGLppb&Kk6cjuD{BN8 z7z7SM`)Ls4z-j!500TqFAqNIUsCj*$_D?UU|I-8NKRNOlxbq!g1ohM)@%%-AfuZ8C z0|V$FM5r;~e8VHiz%b*m1GtS369>hsiXa2SnZphYp3r)>AJl)x=wCU5TEYp?<^b5d z7(oUGiQ~|IE!03zIF<-9FoYa;U;rK5&kzAAe?a0rf(#5Vjyo`bj=N@XLx?XCWMC*b z;lKbo_ZMmm*!(?$3=9)aK+`c)0%Xn=K?a5mCma~up<>7s=*T`0hKYgLAPnQUvM@p zuH?ZsuwJ6mF-i`1x0Tso#TV3%xfi-2Z27!fw@W;Jf#N$duWWC6(KPWckAMKkoE?_cbAR?T_mPIe#uGXg^A|ef4aQ^vc)V zY#Hyj?N-0exa`^G8x2eE<c6(1w_`g$N+nz1U zSJ!S>^xJBk=(FFe&K%gWy!vkC;$sPBvkPm#&tDO}WsPzq0f^lI{qU{Be5(c?9WK3=6Gc_s1u|>1Va=($j!ymY8 zviY;!LB{rT1?@T-E?D(mn66@VHca91Yf;^hZ&x%c)m9!oXPt3STvq$c0)|&7mIkc7 zCghuQ>2$XK{hG3Ow-26P__*v^!t?bXlwV1_ee_Ot@6r#e7NmSBZd3nxWcIVaoPT$8 z?t4(#n|{oy;ll0TEmynu%u1S8J8$;}yU9Fj|4-j2uwgwLZ{h0u+D6MV%swy5P1~~P zR(0tP=2)|>TO7V`%w}R>xWL4~06L-gAtM9BVrB*g17-#WUC3v9jV;hP za~?AT!$n3025n{r2GD_eXwU|0ikBQpa-Arr)WP@6WBfq`Ka0|P@m z69WV23WX)i3=G#nW3h}33|m3!7#SGWF)%Q+L;Y370P(L769dC8Mh1pZW(J1sObiU5 zyWByC$AT__>;;WUGBJQ}LYvOaz>vkvz;KI^fuV?*f#C}y149rK149ZE14APd1A`(n z0|RL6d=Uc!gE2D$!wqHz2GB(?j7$s+?->~w5KzEMEFflOfV`c#NpYJj-Fo1?| zKsV!n!X$!;fq{>ifuW9(fgyy6fngpa0|V&h2+&wF=t{v=ObiT985tP*nHd;BC#AcdptoGB6~9Zn**JXJP>NZ3RKcmoh=px-v5ZLmVRm1Lz{jSOx|L zP#7hH#@Uz|7`20|O@$1H&q21_sc)hbc1ygC7F}LpUP? z!+Ox6!VC-yzo6-qjhTVr3^N0RFe3xQb7lsHdT2TUsZU^JU;y1d7|G1Qu!os}A&rrN z0hH%mm>9tGB@dY(X>Tty{mq5?y^Vo^VH*!)|5(C#n~m$S*MH)3=T{T44F)j zxcUYPTV@7^l`B z$Hc$@iZ9SSn>7<;{c}0UUIs`x1uD}F7#SEm86oK>5hTvY!0?`lf#D+~1A`SK1H*M@ z28J?d-dq4m)1a_tfRx*yJbs0lf#CtjY-R?Ad!X`R>7(nH+H8Z3<7Gq{$P+(+Wn9a<<0LrUX zAonmZFxW6NFa$6$Fi0{oFqkqiFlaL|FdPG=S5W$AW?-;qW?)ceVqjopWMJT7VqiE2 zN^6Xe`T`U;pzxl`#J~W`I~SN4816GOFic`%U;x!2oy?H(y81g{3Izz=v7#SGM zL1hpl1H&dp28LD;8*~dOs0;+fJu?FX=&o$gox7~e3=Gvw3=FM|3=E)j0UF-`l?9-( zeJKM2!w*IVh8dtd#{h9Fs0;(;XVAF*X$A%cBL)Tr&|DoT{z3NKgO(*n85kJ;F)}cu zf{qgg)iKNr3{lLG^sxd|H!v|U9FPU&Qcy1dI|dES3V`}`*rf@I64L4*hu?mX1)zCn z5Dms0V3J{h0%3h1m4xg+K)`;Gehm--G7N-a_G^%6|9@z2-rd>RN(M9)yq zkbz-%i0Bn(6qgj0BqlNFfi{;g=#`{alrZRlj$>ueE6N8gtYgqi&4^DcO3Y1V&;##T zV$e$gZCzr}%StX{(1R#RDlTRKZBqm-O$CKFg_xTGvPT3q?(zaMyTSmvBLZYJG*&=N zFh-7QkN{}z4kQNC&%g-jPlGSE1l9j1K&lWJJZO*LGKizuZ*mf%-{d4j5i5j(lOVg` z90msP+6<5wC?A5v9iaLhp!y$x7Xg4|AQ*X!0we-jQ-G{r;XlNF1?U08Z$KUdDTHEZ z@`mylz;jg~{h*;2ke~o`96~@4B+39f@E#-#$LRV&Yg9lgVfq!I`W1-OZwn1Sn0^DO zegmj}boJfjWMqH=CI&kOFptpzECeAL7#662MWJFA49pA;47?0HV707ZQ5XT!0imym zLiE9C1_lMNLXapM0|UbisQeAlM6fuFp1}*|GHft_&@g?0PfJqRVM0XE98fhcni&`v zUYt7v<-)0WkIrY|9=##|I6OK<{go9NUWlz{VDRWX{-XO31H+dI4YrX=iVO^)9-U81 z1YTQA@Mu23;nB%@Rz#8E|0R!Z)*~W{3?AJA9<7&3pX>mc>d|_jglqo+W=Dn>3;yl@ ze~eX9Ns)o^$NU-x4|{a8`Skjzobc%lQF-Ch8>8~T)$o8vr;Ex9pU#Vhm-x3ivLAfJ zv5$*^fuWa$$?($mZyk>89{*2vUh}cMS^A*Y&A{>h0mlwT!vjtYHUbPKEQSYOb9?+h z;L-epqx8)NM$i8TTMv|M_DnwD*cQTb_S2+L;p{8xv-q*V6pW0f6&qLME#q? z9?hrz8y@gze#7y{qw}I?=MT@$kDu20be{M4ezCXkzX!-QpVommj{hx>)ku3J|MQsP z(|OLb*T%v_^Z1KhYZ({}FSQ=vpK_@4Leyc8&YvFLqN>)Q=(BZ`S7g}7aL$3j@W4x_ zjSLJ8w$ApTc#!qzw$+kXWY{TSmB_Fwz%G$tpCLq*%ti)=!yw0abenR>D>Cd4J?Fsi zLTwWRL$j^2vmyi2er5&+27Z5Aac4z_PFq1|MTQra2S6sjv;&ze=+SL@K~9ljzvFoa zhL`U^rUiR6pZsrl;EzY=Z;#IJV6S-mKk3o0J3nClOhAdeo&U;_qSc<1hQ~}lOn^56Z=6)`Tj1D`WHrP85oW=gP07_hl4wR zdo;e8zyQ*H!%&fdnZNZlnDg8e#A&(50CMULQ$+>_{+5djAY-2G2l@ZS?_~@Otp`ej z8*CN89+CCv7QJr?4n+nzXh`i_1#;U@P)6#uy#$hM{a?cR!ecE1!+uamzK~lDGNh#1 zqg!;br6R+=YZn|CUdMZMi%tb8?zY_~tH`iV@FFNaUTgvzBU%lSnFEq>g2>E($Rt8! znm{sD7absxWq9C4B}Cc@WWlV94h$aMwsEqG42B0@#IFbWF2NQQ5mw!-A-0MPtq1B1 zx_RX+6&WlK)~b1Qi*iFu)saMesfb21vrNeJ=wF7tsS2iVXW)FM)mYWE}&;i@AUQ{|86ci;{o; z|AQ4L|9>IBjDf+U^*|}>i@pE<|BpQE7~;|T-?Q^es7L4DV2{qj7J-485l}gUzd6OKgz$amf=PI3Q*LRe(>mg-No$K zdB;)nP0N82e*S$wJpLbk5eSwodFtBwq;9`s;~!9R1Se-le!nw@m%3QAI+_Zc5*a-H zAF{ky|G^{q;64!dSObV;@a(Q-c=7b#|Nowyt_&}0{{R0U2Xd`rEI21N+iDprGBB3% zd31~VnkzEw%f95m@S4Y?Tht!JyKohp1fr$ENg!q|1H%i^KmY$X+kP=pWMBkm*AlK5 zF@OI5-_HaJ=9_<@QPXX!E)9;yA7+XS`?lN!$D<4=ErW90i;XaK-~#1}8Az$^S1Cn? zeGef@Kdxb5c(LmD|Nme+UNrvs{~r{cFY?tu+3Kc8x9xE$P`*ACz0dC!$ncl@*Fcic z3m=e@ZrkM$`F%3?9T*%V3=h1Vw}ycsc%S}52Zk5HAhoRrJUS1TaDb|<$152a3=ep; z-j3#1}r>Gw~LB| z;U!gu4-5>p3=Iqn{8JAhG&zPC9`Nk^va5lSfnnc41_p*u!?(dNt}bF=X#VlP^Kglz zPv^7F<1bFE1g9I1&ZDL5o%df%UBti;?a}!HoW?>RMf#smkIsvrG!9O<9*h?)c~4m? zGSr#v206pC^U7;sk8ab&l8OxbL2ZZshhONgVPN=Uc)+Lgp-1QYPwTo_XIUyT^tx~` zSst#t0!k5w!2!Hs6$3-(@f{#jn*aYV;qvIb_ab3ED0rg52?kXDn<|3J1vg1WhJ8j4 zL4p6mX*B~#h}%?=;l-_`3=A*c|Agh%W553Y?>5~irN|K6`TNDig`lu1VSTaT|NsA; z_q#*gQKCEWi{l=|%}e(1pPTF;~N9;7Vq`U%ST_aJ3* z?a%-J_q9B9fELlo%NQ75%fOY!gJi4WvH?FqIcJ`>A_HTI5X7*YzyJTY9N=%MVPaq~ zyzSGia#uhskpV2{)A{U$?GKQ2iAjU)3v+O-BE$>|XVJyRiVVJ;4|akomwjsBl&oLDwtcFl$iQ6c(O~;s4-|a%U{}8Q@(1ih z!vq7+$YywhaYq4{ESY2Wcqvgt*84&;S3e2RaYcSvq!J@aVQ(AO=dT zqJ>7Fcx80lnflCuVaJV^4h%m0E+-%!bbAC&!*wed7+!8<1i9>&CdjK?5EEzr{r|t4 z^@S$L0H%_Z<{!-bEgu*d82+E&Z=J`;z~IxZ`ddtq!KYhy3W(}_4legQkH3gr1WN1t zEzOMJNPA}pa)~X!m?FczJcyOtE5I^W3>6vnEqLU>;L&;U<;8#h|AR{@i0vzugKd~8 zrpVygdDN%#`HM-*K{@ore@JS#@#q$v0x@~3D8l58psJ@^v=%hPc1;% zqkkS-)7KEEG%kZ> ziCMq?|M%#&%@9#!crkYg$ddOyovMxoiVVkC|A6xDi_j(Dcx^Ri2FX5u;R@v|gED9D z9F;jD3=A&ate^B18M=8tfJjj;14RaKtK$BP?}`iz&3nL#7(6Z)@e)(46V281Uhf}bbj*aeCN~o|HW);gw_15*BBWXUa#=zZBbbO zDj0ivRMvoLh}(R6dsLQ)FfjP^wy3NS0o8&Yo$ow4SyWy$TOgY<0h9wepTBT`+AGHd z36!M83=IDd@VD@R_|~d7g%ue}j6e}~85~-j$N4)xGcqu|c=!|4-g^EbVG&5Z$8pxn zpxg}V2DDrT8~xtnIO~3>*o#|`EY%9CpFkm^1=hvivI3lKn?cI>`{EfH7`nHBebf4_ zRH1nf*aHluVjkV56NMBR_J4Zh!0=-IQU->XCLk+%m#9n-VPNQ<0#@hIJ4dAf?C~`! z2_U-j`HTG@|Nrlv0uHC{E#P4B=)C`8m+P(Is@bu zv^WJfSzyt+#td8)fD&)>k6$H`%|HH@2si)uzW>-$Q1!U;&;S1~96tU3|03iIs2aPj zqR7DPahz2}SCIh(N_8Oxw#|?K{~K(BL7kvutYSoDXIlvb-2hra2?L<0jtB0eFS+y1Y}T&5yW+mzJl|XO1EvBkRrp2uk*kqp_L9& z$rJV1f#KyFaF6e%GN=*w=!NT9V1=LaKg;?s-`3tHqP!g_>q14Qydkfg5P`4Rgdd=0vV&v4pVg%{2 zeS+$`iKMH9YySgKa$EE7|NrJaU_UYNw~B!py`Ar01bqP|R{j)p_qlBFJ7_H%(Ap zmG|ftb=3r?vou~q4ohRBncAI00}91SnFo2;9of~O7)FTT!aV0g{7KktbH!^@t(|Nnz31BTWE zB{I#nji5rJPRgU(bOlIx3&^lzAm!}GSY1Kc-J|gcs6-*Az~NT`1&C0y?HhSefztu* zCGfI}BKdtiswE>=a zbe;n9z~Ua77mqc9v@^VTIg^0_T%5OFDz)(Vf7GM-FH7m1ee<6{i^k22FOJP*V0bMD zas#Lx_2ST*|Nr+PIwzY!w%%^G{VxY9*`S5u*$<#}R;to%Tga=(@Z!NtaG|KGj#Nf~ znqx0DnLwd(R1US9fhZY&PX?zPEG6SjHCQ5pbu;SZKy7c22HOdsG2~KvNb%eYc1ek0 zgY7*~`M}?j4C!XfgzJZPGd6I6%f5|s7#LpKGcho<+%C~;uw4n#RHEw9Et;VQPTZYb ziVTiBKw$@IElGfXcYvvLGi|g2VX5$@iczDA8`P{jUg0i_nhAgy{?nuf;sN zMa4lb02#Co)G>Kk`5#oZ>;#(-)L?rWqzBeFS^OTgZ^FU_a*OCyRZwce+c$YMn}OkF z0l1L^8jfQwh4xMUe*pDOd}Kie!1^ZZp?#BBaJNJDKPSi%-3X9fo%dga%m!C02d9Ec z4E`1;up-eQRgfavVopTWl0O?9*%qpZs^#Sz)V>K1NC~JKIqcD``<+vffxq<=sEo9A z=2m2Qv1vNkfbS|usRdf2aC3qq38WvKSCFcv9kYrH2Ji0}vLTvy=g5d#h=iM3=I3Pfr=N?x1b2; z02LPCu7y4aT7{=J3s<gM89$%gdq2@WN>Zq{8deeWncRS}X(=GRKkXy!X?=G1Phi z)T`*c|KdKBe*o0$=v@P@hJ1SWfa@$*!*BfCc+aY%Re&YRpbGFFsG4%%-g=-; z*dzIZN9RjuALRcF{yAU|y)cKmQvx)e0fose4pwtGfEkX4ysQ!jpCntndWtw7E znVelLMjb37kQ(zdRMT=KO(k6W-+^j`Y?K-kH1G*(t1G+(1t`COx-(87^_}lu1VZ&2LHWf{ zz7mLUt^0~ik)cEyWM0QqP<8Baob@-TBmnno{(dQ$-WG#E*#W9oCj+t_;fydVIc@E#=%Jf z+yLNjKg__u0B!_ifEob`&p`E>D2pN}U)rj&Dl+Wjd!`jg4ch&!s^V zNuUCxMDDd#v+Z7x%44j78j1{z$5>B-WJ`r1`l2U-5?2Z9i%qZo|8Kc{jCD0gwnV(y z_JlmB!JOpLZTg;BkzxOXr=T&%W?Np6Av-`r>-_$#j2emz&9?JEDmz)fs4FtmfyQ|E zgVcWjdF3w1E1(8ki#*t;OPOIleFh2IIa3)Jurz?cgQSj~fA({OMx;GDzwSHE=D+}& z!VvH{&gu-ZkAZ>V7;BEQB8Vzi2U8!Vz!Yfum+?3&D^%5SR%v-f22Qa0D-abPAoa&t z&U#u-kwFfub`ePJaaJjiTF^v7<^%=?urv09CazyZfw%4)aCTQ ztX|UEUWp!U7mA7u{Jy*o6%`ped2fR=SuTf1>)XT-i?0gr49t2ZrOU zev*)3u;#yv9-a3k4>Ujc*L;AvlT}Vsk>N$|1aN&&Dzr}=>X>MVND0?*RuM@>22h&Y zCkvIchsc#$?Nf$|=t4y__Gv;zq@f~W`}Ck9oDdQI7JtwP*I<th*&321_1jKETw; zIz>d0;U%a9_3V~WfrpA)KPXiATR=r=gS9SyD>oAZLqj#AE;u6iTi-G=FueTE$iQF| z#@_-OfUVE6G39TGU}RvZ*Re6;Zvm~ksOPmYtyLgFIS|K! zzr_utOVq{;qRYmdzcm^ptqhX3K}Jv$W4bt$%LL|jh(luWC8(o%jI|oXefb=mk8(i;4X8141Du8KgT^FY zf);BWV?79JO}sn+7GDd>nlC{e)#I#n(ooZuf=$SmhT1g^%uSG1WB|>;zibC{1Em!~ zQ;iI-tBg97a~t! zQ%AN7K+_mUJ-c~Sx>z(@4)C{f{`>#mw>w3J!?*Pbf9uh|pnRXB!tv4^RP7>XEyi9* zB2s5!VA$sdO^|PTK!T?r@}ESZ;Rxz; z?MsKs_dw)%j|E%jI6d7KJ?t2ZDP=`ne zdvx2*kx*oK@$}*U|Azlxp8xy*|1NN$1uI?sAPS{Dxa2dnLi2)`#wQZx-iNKI$0~hV{ZRX@w>2|69-lM>HLZe%$=+U#T6M!b@$1! zJ1{_I+#Na@7$97JP`zmg=Ynf3rA|=C+(Q`DKV&S8Z?**u$1#@j82*284;1}z;3j8| z3Wwts#@A*jmDB!CP{ILKPETG-Kr5#wrFke`!tvO1SWJ=OMKrkA1huEZ_9v+Iz~8b2 zRPZ%|hF@%bAoisSfyQe<_U(9y$G+zsxcwCjvajkTlD`^k`9Q{&STxwCf|@8L`X1e; zKED(g_8&a&!0;lg7t}>e2aTD4ql4eyHd+p}lqghAk>RB^Xi}^@Mup?Gj7PV%M|U=d zM=NMePeu#4`b8{=*?PP5emAR_B_PW1z;X8q z5aW1z2NMIs|NsC0A8WB_0EvK>hS`GVyh`8xZ=b@%zyKOX@4W69=GghoG1Rg1tYZjd zK}_=-kQ4Y@K#8sO8-L#hP^|sqfN2>@0icXz|i;;R4VZIPX>$a05#BD_+4Ij zG}l`&lyZ0+ceijgc3|*mu5|!&T^$zcfyRkzJwSya!@e6g85sVDT6lCG-tiaIC276Q z-{K4Eb7VeS(8kE%(G6AT(W&im+*tzb{^QP|RSFCq$DK7me9z=B9tWQ>{SUQp>@87I zLek^onSfZ@`Re3-R?2RTG&BJhq2o| z0kqyh1~gZq*!+XBJ3PmuyWFAF#UuGp2M^mzP|Lt086@cL@LCea>fjORcF*zX4tMx} zpwm6aV@3xL6NbR+*ya~39y4GzK@7xDMU+5Sc!Ec_Kg6=;S1cYgIz$-%yXPE+EVKgU zsz{ISd;^cxwVG4e!Y4SjgHk$IdUIomW9iW%ye_D|niJG4i*AR-QKhW8rTHjlE&ylWIslaR%oT za2^5KvTwpK28RE^79On!c7gIqNwwjn;|?64iQnT6kfh-N&J@QRO2Fv`RAx9E9CrqD zjyppVkuyXkB-?m&N;q_6=y)7&NB}EhVDLEJ5P@I@K$*uKz+Q9dOfY%Px(k$?K&h$o z!ePUcjypg}&asz;$r`mK})6xF%M*+FhT+`R9FFarZii5N(b?KnHA zL_FRG5(BXgdw@o(JX%kd!sJ1kAo3vAVW=)p-s)~!Ak4r3kpuBN89ln&W`KswI++gd zIPlzo;jrO>!`;(CW*Z)8y~OW#sFUsc4UZWf-7H5ZymMfHteq-p1&ytO%2o#W+9{PT z&|pL~$hKgQ&d()m$3a~}29MU;C87KNkMc?P*U=nPR|fw{}K^=*lgWAlH;a+&5D6&99qQQy{YrR=V)PfEF8%Q-gw0nLt; ziF&lYg>@%9NMv<@^7`>j+T6zXi?HNoN@-K^_AC@^?*>$-nXU~p}H z>%s5(;gbO+0Tws{=tW@!zON@VDCmM}cf_=|yw zfq~!kP^Ys@_hgVeAg=26miT|@|AGG}Ee~~qg*&|^_**`Kij0%|Qw|vZ;NNz@+S!4> z)ep2>3g%W&Q})Hz?*s2pPfUk`3MhD>f(B4t_zVJvE&vst$RS$7(dq2)vJ=9P~t0cY&dovz|4j=Odj3Mplk@q zPyE|i3NF9@f2jF6KO`p|d@jIw9FogAt8M-tusp=yA`e<~4$D%Yoj{Ph56(|ZztF@= z(ApqJh?S-J5bMCX!i+Z7+5Y?gA8H*WiR=6Wt$+OY;@D@X_qsvl8Z^Ouy7;Q|68|8vE$SdCv(s4sRNieDDe~$3clmwubAC{eUhk~7c~J>5jHpx!F$}e=>~ywyIr;DZ z{|(ik!XLCQ%>$O~LRe^;?7lLClHF&}w70VZqS)_tw(&UlfXRco8PqN6HUMueq+*FK z3tDjUlMz&;e}E(g{#MZP^loRH~wZ0C15ztvN8HEXuy%#rF%1|HQ~~g%;VDC4QiBh z7Yn#_gNt&H?hJ`;2L;Ff$GU?Ze7aYIl9Eezu#IEq;Z7G7me-t}zxIKm`ZY`Ix4K+M z{%vPmK@BG{@bDgEDNE<|*TycLCtNyG85|Ej1dR;+Kj-oPsNo66|ED_-xES+*M~GgZ za&5g`$^~B1@$wD>XaEaYi^u~?8oaO^z9zwL+P!B-rX*GuQRT7D>*0aXB%1xbO7X)*i%|3Ck>3t+EU z{^D;n{{R0!M5)6zW|&!U)uLe42P}Vd9^!B1fGTZ1zywyvzwN@o7aW}jdW%@Ve6S-f zfb_n+`S1V#&g&lC+%BL#Uw5F2Q!k5=i{=f>3!RQC#mxU5H9WeRT{@C^Tspzg&{-_t z(g}`+&T0pj&R`p#PH+TxbY@7nbVewE2jxHwUC;~_s5b`5GXG)C!qx|%Vd`oD2L9G- zpt%LGq0QAMOy4g;EU1(0o}9r0YVg{Ae5}B*@9J~#q}bb1P!;XSkMrE zS{VaFcQYt`ST}=omDYAQgGPvsJ9F?cFfbfEA#V(p?F5T9S95Uk_nrF!nykM6;+P(2 zs~Jn@(Na^81M1|vyFpsJC+F}mFzkB{>Zx?w<~~*cZTQS91=$0Vwr&PVm&m;qZm#BF z;%{mA^8f#9fxVy>+H20efBygf|C-70tz%>~c#j&i_3s$&*m>SD%(L^KW2k56SC`In zkeyhUT{;hWG{1@PX#LOMa)bfA1BAZ?ye1WtWH&J|FgP~fEvyq26)Rnh~WVec@h2w)TQh^T3YDX4eGT&_vn;S@#!p4k#Om( zQQ_!xQBio&^BJt>aEW;H50+B%ZWk2=M@_Ke7m9EH|9@@PT%)4EP{Qxg`F!us|NsBL z;0B2*fVe+E+&^#r|9>s$(fPdd?u!o~HY+$RJerS0biP3JOhMgJ=-LYCcuVJJ(7sUU zpbp5npkW{}L}$8$3p{A$+WMqY9n`M_b;UuU>}vP~+!0CxO$mcXAwZ%pK`V5iV@Qxb zG)O&Yga~3Hi1pgVwe<;qi#TX_rni{G2Qpsd(zzJaH}>e94B86j(QW;ru@F3XAP2J* zG-d-a1;lbSeDd-YC=u@l^=uhRT|rtn!Aq)2Ej_xqk=Go3f6-V1O3K!tZ9!UKV@p@M zbgl-Cy|{F)1{vVfxfwJ<0@{+o_z4shC8EtgSV}xWmV?GxAOkJ0J3+QA2Cr@^@o9!y z?cBT@rFS{Z5te=8G`T2ORA z6oFWdQPHt3oevyipsCrT`Hci7uy zk=6qx+|55&c7Q^k-}OT01&`(<5{Df_T@BwlhPWC&feu-B#~T=)Y_8^EEMb2MO7j~T zJ-UUPs}vYYjJusHtes10wLQAMBtVPox}5{MSOhv4LETa33P>ju)F}mbM2~|yqK6zg z&p>qX_k@8KTU2wfl&XR{x~1}s)iM7W7#P5#lI5I+2b!xB82INMXg$E+stuYo@4WwF z%G3Y2YgH|hp%7qg4m!RJ4CdTgK9P8o&{@!%(88Ibpm6lNB3mVgaxekZFmCF`R+V%tc4joMd8uy?9d5T z=aGD^gGb=Mb53V=%xm3l=LB1j*GlDHb2R=0vC26>gDh{J{r}&Y9dq0nG=j7!@%Df42mHKftTK3AHW<9iVJXy5#(r4j}sJ%{4KLVB~Le9 zoUcoa^GlikI|%&u7TCo2(h1b_;JgZs0z;5%OSPeK4hfFCPyhcn{MKB}!Gb!W5RH9JN`TsZf5~&Cl3DBxgc)m`4{D&t?S@=7<7mO zG>|YeMoB3oFV*CN<)HI?ud|!~F_ngTbVH3T^#Zw71+s0`4jk?-xQ*0=8mS0gUU1x* z0~ExsCBSoeuLYY={C~{@Ugr0jbqC0Y(V)5mwfZ~;uRc#ftIzHp6_7vpTW-T@(MuqY zf@;x|;JWhwe;;TGkYn=?PX7LFV4;)z9c$s$>0$;3hSrn(9iYSwoAm7mi-E@pJvyKB zyPN=3t+*=NX%9iAcjwX4L{Mc5Znk-JVykhlffhXcVD5xgxr)eDt_5g)5TbI`1aYC2 zt1O6(vvT$AJPvAKfQNiNJ3%|*zXo?+_Go?sn$`2@c2P<2>GV-i0G+!cQ7Qs%Z~O&S zpx_CZm!ClEYWIN#su@b9pj9%cL^$3GD&aw_m*>F=+3rP37N~OMZ{=eIwN}2Busa?H zt$$+hZT$~ogU$1Rv>CWPxJ?6+;+3$lcPzcmbG zMQv0C-&?I9QLjf@(d` zHveEO6ZLIzWh!R>sHxDN9TJ)!|Nq`GSr=`GC-c;Zw2|_ zr6s7gZ$6@dPzXLez_;@t=yaarEa0is7fb&B{~vKU6g0yNs`NoABfeojIGuQO>x1k3 z5*=5=1CT-TdoOl^`rkDwA`B&RV9{NmobAzh&+z|?d7zdt2WU^vKhO$QYu(}-3JfKJ z9@e_2KnxDh2zo|3=*)v75}^6zFpt*%pvLl5#}IgWJ`I}`0yTF;5k4>B1WnbkwBD{% zg$EI+Q3#%y0~O#9r68e~px#--Ua%KR5m5$8;t)k3)=SWg5jX*qr9;9DbZ7~vECIE{ zeLB~I0^X;0D}>7B=$s2`$r*k_But;qwV;Fv+K>DkwB7m#V~HThX)KPNEGnJgT=lvP zIYGL@6C^k#Y999Kd=E;FN3+4nkr(Wm7il2Zlt_Y1!jjTnt2FNgIfMZc$8c4k!~yXf zhy{yr&@}Cj&WoLwA+0u#<~IVM2<3Uv2pUkRQQ=_#H`}5j`CV^x-TN4IVC zHBgUeCukygpWF)vh8IB@3=ECG-!n5Xl!CTwTVGRP*njh-1H+5ROa=zXktGe~3=9({ zOgP@&0xk>~7>>6$Kv{7_hT6 zpi^t0-5t&KISdXRTU3e}85ru)y4ykPV7`MFnSlDB;6+N!`$3Cl7(2mob?nfUOwD^i z%VHSow7Ppit-tQ6AVvEG-a9b3bo=JGbhm;`GCbhXZTsko0>g`^X`qR&_b(Vc85lg0 zU2{B`T@{-5g7h$Ybh-wV2JCYJ)q9=qkGFz?2NdDQTS37HV!bf=|NsBKD2Rd=>L5-A zlq2>3|NpL5&_W%L&iB0q1`hn&zP(@tW#`%)2L8UYatsXn454b@fp$JQLOBmXoJc6= z3W%cy#~bEA(;n#9vI8uZx9Z-2HsBm!1hu|ivvxTB|9`;a{~>GF znwrl(y<1d35}uu>Tn(QXeseWE;M<$W2p$n~>}L9ZqE|$q`Nw~Lze64~9Qn7gu)B2i zu!5Z7V$lQESjztY*h^5uuJv18F!+$N3daBEJbQVZ9ljl7ED`wMx`c^=!Ljp4+Hpok zhSz-mTNf}fFr*y^&Bb>9_hTpn+ zR1PvSFm$zmZS(1T)zJbLc+K7A#Mt4*=<)wh$3aJnlcgUzFSv9-+~k>j!bS6gyhTz zDdX&sd>HBsNRD9Y>;*+rom6*dj!U;|%|5^PpoMj|cP=V`24wCgGca_!))<~N{03S+ z-=b0hT2n6Nk$lV}`QrbB9+?L~OU6AIUmR;;@|n!Qz;E3HR#J2K|FPzOto1C0Ctts5 z-V3sVp`L61PHqN<7gE3f|99zL3lcltqEf=h02%>iaBTbwYOmDUIX3*Mm00L6n2q-F0Gy2OJy!#)D=*=O1W3z}g9s>z)F(-=%vA*ko73ORk2u|DWm% zQBipbS`Y8i`NFX`>c6Yux0#OL|8yRF&HMkbNAh78<}Kj3akM;F%Vr&;qEhq1#qx5U zo{KfaoDvns=0A)ja^R%l(s`rv;>_Bn7j1}cXpq*0e0Jp5I_A-BJMDr3 zgG=W{*Upch`L)0S?bvz4rSs9gzV{9c8yH+a~%?Wnk!RTX7O3 z)dpkFjuUUM&MP&)7IRsi|(xTD= zWqKTMQ2`wr0`fxlR8Z2hoB~$YJqIk_IY*_2k%57~_Y)r|%pqpOA{{e);5r#+7Q|1ABLq@VM;w14><8}53ykKIQWRggYlI|=M43=9zefgLXfm4XO?6o6Jk zfTbibq(FUQu#^;r6sT$gOUYnJ{a}CwlpKcC2bh!shSUp~loEy%XtW+|mkNdysErJk zQp1qC05ebnLkhH}4XjHGLkiSA2TSQdr9eRhT1^TGFtC&!R0<*lQm_GLmjQ+psId;# zWrQKM0H(_XLke`F9axtch7@Ro0W4*KA=Lph&*3KEqoU!-_|Eg- zQx?yIPe7tI773n=Z#@~`IDu?S0-FaaB0^L=AiBXiy^zEmki>nU;t(N_ofgd9pppda zgD^+tJ`l&Fy9HdVI5PKwxQ@&{Dj?e9;A58V341{0PIrq6s5k+;TSf(9gy+G>EFRr+ zz(tiO<7>}@k61hzUpc}gAF_BdzI23G?0N733-e@%Npn;{rH?1$3ud^{pfbnf;Byv7 z=1#D^jPE@TK10#~DtJ5?-yt-BiW^7f4v=Dmv7mwmp#)U6F!!UX02L|-72whY?020}Ce!HhsK z0}xCP1k(Y*v_LR5U`!bmN9Hz2vT21-Eh-=yBJT*Jnm}TX%#9GL0YovkgGsRFw9XzC zP7#I$|5&(&Q0(CGur>J}b(=94LKvFLR(mGpIelamHymsK<&Te?p zqjw6VDKEsotqIhGPh)KH0U7A=|DZ?XAyD_q64J!3zxV%`NAqze>n-4hXx#zBOU>v0 z@Be>tmi23SpKeHV)RBKXgXND}md+DwH}$5K*~HA zPdf5%XW{qgWnuc?(hBMbIPq_Hv1CFQU_lpPLl@vc7vMq{;6WGQLl+Q07Z5@h5J49Z zLl=-h7mz|1kUFhLhELl>|> z7qCJXut68FLlwLl+1@7YITZ2tgMJLl=lZ7l=X^ zh(Q;KLl;Ou7fAA8JoLY1Dk%TF*5cpp^zT2UljzaQ!U)Y*9?gfCy61pP1Isz!JXm+l zvDbl-aSyoT>(UL$tRDX%onMdSYn_lR@A&_KODDv*mv2A({|_6uDCvfDnRkJPbUnIl zukBZ0=)An|`{@_UPRME-GL2x-c+U&H)cB)F1s18Nz7Z19lm6J-gwhmrn1& zN7#YJme}jK_U{4>J1u_k|9|5ia5q25je((#YyWPLaLAytE%9`lF&~4 zd(dg5AW4tTcdyMIy7qyJ%C0FYAR)t(ulb$2To@UhIzkv3J^ml;IOJe)z4VPk#~!eJ zN8c|W&!!-wC!!?hZe+$-e z?cW1(-<#+E|ATf}aP8j<;@*A!|G#JEQBa70q8BtA*Lf4Px1x6oIBYyKkAecy^Z!v$ zXhqCqV0fYF#K7QUy#^dyE}buG6+C7bUUJ+68r+8tCmG)M=G3@;sg#?s3o<}ssT4=bp?W+-7f#$pK?^Ym!`B~bbVR8=+q6ezvm(p_2t zI)xOh`?gbqjWPpxZmN{Y@Dgm~8FajS{&Ub2+HZlQ_W!?&GY!=v-PtKnPzZ8Jb)ex0{o7(Dy`-!u6bH1>RY zmw@B$bs%_j5Yb<^fR7@#$S7>M$8}*5?vdQ1$_}W#pas zx0Pt{IChJ)yx8*O|9?<>#+u2a^F5OI9GEx@s(1@boDEex2PO`hl0`Bn1SZafs@?`B z4%!5Tq+SIk&WEa=2PQ6nD*oj$)cr!J;&));BB;Hdf+ognS|9((;8*v}eWQ3Oa zpn`m#A*9S-uoYb9FLY;MXxIaus%PMD0j-bQCl0FFI^Vw#e(?YQz9J}x4a5O$y#`gf zKkxtlzYnzb3&eQ?;(*Sl0CDbvIG~XP5a-hU|NpzUg68Z&yj-|@80+l1r-FsMZ6&uV zFzmAi*R(H0-9a0uJ(7J(__wt}mOq4omp{0c99-JK#K6GOycRT(&(XXWL^0G~@n}2( zT5tec#^D%$cmmR%(N55{OrU{`=6Vh;pKf)?q0YzKRY2ROK~qod8gP~loMixKnZQ{V zaFz|6p1NcQeSN-IGC{?Cu76uzNKq5L~)9gY0tYUJbIS(?unxyBXwZ&|7pXh-3;=yOZRS&YdS+zWI)U4x+jDD-`x%Jd#8(vN_R8J@0}qk8l65W zI^B~&{_pMv`MuLc#h|+xAm}kBUpD zi;9OwcQeRC-IGC{_2}*fc@(q`E~49+qccRs2eeT57ibxXk4ixE3$ErL8laK#1pfB> z($E7a8$LKN9CrqvpV95C()@$HPPEtKN4K*=r?<-G7dB4(t!Jbe7(j;{aW_|j7WeLy z1}zd}4?}& zj^b}ELNz&_M3X_A&as)C!QU!@YBDQ{CW9^ngqkde6dL^7F7!H`?+n&x{=rdZ{cQphG7BjtcLy8%Kh#`p!q^#X06HtxcJev}hJEpnTBzTFf#EoK z0~NT`cIFU4cu%oASOJt>z|x@d`1WNFsQsFJv|$feD?>@`aTgWv;d!rfjyrS6;&P@pk~3F= z7o8If5r{K8Ux4PzT~u;F=bJHu9K`tFMJ1=XMkR;8t{3cB{=V%0|NkEcZ8idxFbsy5 z8umzmR5Fx^cqD^`|AWbnDa<{*prOe_9?(Uc*Sf(Hpt??1n1KPb+RsHr^SxRptXyNM9o{!`u(@BExY$blmA7|8URgU4M|K=nMsOVH-G+!qWS;6ovIKwnQkneO+ad-(jxft$gNkLE~5{x%UN!IP6;_&}O^ABPE z_TK{Fwu=%xU`0`~CVvZPNE0dDZxkTPp3R{2vF^Athcet?v^;O|+8*xs7~%|t$C$%Q zE6^?k9~Fm}hM*`(c2N=N@=RGzix&WpWWRRJPZu~4}yAApgxk}f#WXC zE}*gjUY7B3mkV|*A0%&xC!A0{^$HmTI701hOT{=Eqe(?W+7Tx~D{#72`AP>*zW@+qnQPBbIZL@Sy z(cy3T$O?`b9Y+54LePC#E-DtFM1I^w#RfF$-dv-i!%)iA9in2x7@}hFTD&_%#iH9s z#Req7*vsMtI@HNU#o}TLSV)7RH0?jA7G_Y4f@0eU zbRz?(M?Ir^3QF98deOZ-;4}@2KGbOQ0YzH~G}`|AsAzzr`M5I&XlDZ%@fX8Ga{M`i zwV=jdU4rBPW5=C2Ko@~Q+JHFYZWlc69)OMuBPH%4TsmKAi!e6+Vq^rJ1jgUK18f2; zQk#D;g5s6G%^P%vS#ooa90S9D7ZnRoba^EEsF;9)ACyBKy7qu;atHox-#wC#F@`j| zfI7&fJRZFwy`bFJ`SEqUN3RH{1OK-3uT{HUR17R#R807LJ;3&Xd&mD>R80Q+s92TUr?nB}qh+y4(ZbwYR^$;bbn@16pd`G2Yt z!th8w?vZ>6s=oOEe=D*d!0xL*-VM=mq7zIvg9DJkV+PE<{4Fy%85mwWcb;-&o&YMV z|DW_oKKB1y^UwdFK$`+K1sag0x0>Gz^tv-Tb~b=if{XP3|G`Ci3?~DFBmcIK(9|`> z7~DQgKJ?!OlA=mP`M0$|1R>|erFF7+z2@@h29J?+igbVyMRSb`W|47^1GI;VwnYZ0 z!Xcx`&;&V+aJEG*@&&+JuooGcgo}Gbk+GJYsNxDy++!3Ot?Ud8FF*hM|G(SWqV)iO zM=m=9gEcsFC$obF8bBu(f{FmcOWiJ$T{>GP`+zoQ{D(LBU#1ye>Ta0~QpSiO`OKs9 zmf_p(CXg)1Z~>U%{cP+E44?~14zV=;1(jZd`ft*(j zzGJp)t^&jU;tviCFIE_U4oU|$zu@Zq&2RQ%vW7E~#I z&J+KSc{U$l>RgvU0nVeHFFca3_VR!>xieh+;lT)U2gtb|$v-^0!Q+d~4_RFJx2ah0Z)ZyDG;+NB z#_< z>Fef(Y7vIcY#Wc>&7hb%4n8vo6zTje(?RnPki*W8JA-=744v;^^ezJ*oJRIpXT+Z( z<}3kftL7k12!tNXrwXd@-oIcW*&$%#_)$)&><&@U>2$W~3{g>d8Os9dAsYVo=-v#f zqdH&xKYH*H2mdw}JCEk$EFQ@{&7c6{6zTil0%lp~sF>7T@QZGz>i$KXm)3=yWqcw165_;KsEx=-5Nh!Calr4&AJCCn+!-cLrVm z!hjI~TR^9SA|20$Y?8AL$O!&z2SBE{sOW&s4tm)Px?)<8wt%{Dq}u|z#*`FWKz$6TEe74tp>j}& zLC-Zo2{`b9C!OHXdkLN~h79VI*b-skY*6=V+Wv+73=A&{4*dVWe-Vh4b^v@4g4>SY zpz{^%!S^)02DQd@KxGfO5Byrwv-8Hj5Bv-ay>6{FjLBd)n=zV$wO;=NAJ5s0Y#64W2pm zQL*Wq44OUd4pDLF>;}!Ac7x_d!850w;F(jGPVj_mH>g|gqvF#!88nFsIwvHcvl}vP z>Z20j(K#7BciIi^%yok%RXsW<1XzrzH;f4(23lCw>(1O8#*7eK09MD+8^(eV>j8_g_J*+{ z#6Zi~dfnN2!`KjFDPVQ%yJ8&U zh=FoWuRC{d7&k%;G&0f~#^ciK%+Y+Dr}Lj<=Vj+E7AZ#y79;-F#|#V%X-?fNk!hAJ zh5W6cQ|Wul8C`m#7!hjrqpAVz!RRe#a_Nm?LZ|_qrh{Y-Xk@y#oY|!}iW#P+v>Gm7 zTF_h0;?f(%0+)+N$c6Nlv%2&~vBKq?5pov2J^;Nb7P3)+-?0DKZr z80b`zzu*Ii8sE&|W&oYg$L!HrqGAA=g$FGF0MFtpfZLXOlNA{DpZMs&@WMw8G@KTq zl3;k?I7<_#v;_}zft!=>Knd5t@Z@VQ{%ubG{~!GC(vko=fWSvZrRJ?i?-rE;Q2V&o zMh{eP5ROu(fldokxK;2~i zZ6b`_E>jZzpXhX%lHf7JvD2rO!Q=ly(7;Lk-EJ2Zm0h6my3WfpzyAigM5FUyuOpM; z$=95)z10UnhFTu1c@H`vB*E}oH_vvT?i3Y`9iUc*$NyuUrd4tU8165_`mZbc#gaCL-RxV&dXq}mmeSe!P@J`=rQB}@#bSpj+`nEzSQGN)LPXy8iL(4gCNcDguqBNr1vy0Cda{a~)`?$i}1F_RvHH zhJ8;yf)=p8*ryD-2jHFIe^ zm#Db>KjzUL0}YVQPn{nR{$g!@DDRPc>GFeCmdPcyttU(Gyk>4brqKBTWS7RlAFLiT z9Gh)g{+GOZ&Gi2matIv+2SK-wiiXFGR*}Zihc4YIDk{Bk|2tz;99%3P*Ra2|VPRnS zf2{Kp*ix8nVE@6aEX8dl13@cG9)g1B|GCZ*6&K5U{Jm$HL5qP?K(;^Q@8kIoI*D|N z3Ii7dL+2Ki0?;{WF5qpF498tmd_ZZtxke=*sg7&^8)gQE7l(HK|NkE}sFv)a65!I^ z(gM=aJ*NevA9R(<4e*&Ck$l{@ z*Qb@?wYO`xBq-(#d^#_ACLiwBY3%i9dCk^Y^r876i;LyKdXerT0Z=d-cr+gp==|Vl ztWc=3P2eIYSAN*MG{yodMV1pz>w*p;&W7%fdRbg8FY@~{{yi3B%kje zTQ8Lgdn6wQ8wx(G)wSEE<+bkrQ>7A)y(|(Svkfl(@R$LXbLqBedM)Ugd;sJF1DH@F z=-i0jWJZ_Hj3{Q}EUJE#OhyCex z`}6;#W2f7n&agk8&Bs_gnvb!xo~(c3+WF9>^Pp>Q0HdSkPZ!OH9?3^tEKhp&*0eH! zPS54{KZ!7iuR9!KPNzG_7;twCV$8E%AMO7xo!4AC54dQabJ4u1`JwZa<}J%Z9-uT_ zr``!ky`4RfwCti106Isda|<+0Lz4JwRWyNam^u{Q%`PedOrQ+Iz~6rabToXji;6>c ziHbw>ssCVizc%S+2S>0=H%p_7<)ISk&JVDR{{vLafD2cT8J8b%iZp|_;<31N9HGWte?-aY;n8i|(WAhy?>D66Y>{JN01dK(%N!TW z6cw9#?&ca54+j3$-d`|{pmUyrdlVS<3x9H8cu^?Nz+m{z@Z@Xb{|7yiFLt*~0o7Nn z2TDHtKLK*5!T)2O5HV2Fi0EblWtI*eW>6U(VO^r4Qgae=WM!SSN8=GtmAd~eGXn#n zarUxd>;L~yDTFBKSU~WRvZ28qjc-l}F)(z;=XiAcYj||KTX=MbJ9KXc9j)ZiS)&rr z_?urHvSKcyGe)HVRE0!%=q^`q>2^^m>AdODT`%!cogX~iRnQ%x zQqX)rsriud3Pyg{Lmo3cm|av7T2F$EsHkV(3912Kb2tA?-H`&i(AxLJ|C5l6eF9vc z@~?MMDQK=yDPitxQE34U;I^pj5n^Bfw+;ll6&UuLf`U*_4sN`eRDUC&;VXphd9p8rpIHos&#_=v-^`2}+t=*&L;ZHxzharkuCsAQxacl*b{ z(EOgoxAU5B=ULy*BjCk<9?6Fe{^D@_&(aRs6_j?|?GNaL6AsQpC=&nDj=O=DBR0R| zz|{2@R5-wdK_)f-XR2=irRECI5Oc4IBZ!^g!FcesLfUaR(Cr=D93k#CE^IH~>s}J&TKL`@^>}6^07WjXvQvlR9 z>NJ_|$iIydRQq681ez^KzU0`+0#e5S8VJXw?jP7Zmg)T4*gcxx!|g=a*X#DT`5kDC zvH2ep$Uy#n(CKC1gaq0=%Xs{?4*xcHMo^{%J0Fx+BVe|9^s+R;o!x0N8FWVa`POfh zXFYm*R5pO7<9ny5fG)Q-JaCMKgQ1h93EZ9qxBA{W?#W>UotXXroD~e;c7jeNa_l?= zI-{}kh-+`rf5*||hI@Jv1o3gisO&KKQtT0lnj1~YcvIQW3$;3E!?86L@( zT)KItxoGpWxpdxpE#Z-T%$4y)XAfAVb1#d4i{*zplg@umy*7HF=+6L;!h&Uc9T_`M zfiC}hzyTU*o#EKc((b6uGTp`UMEQ=+?;gp=9seKp_r z-BZ9k%PC-G{4I^_;KOx5dYD~QWWdSJV+LqA&x7$`x1dKS_d<+cDd%zNjbzJ*jf|_}^*Z=?jzXvP^+NTZDx$4(y=kJq|jx6e^|0SardU%E?FBD(j0J<=`QDbnWH%VGoeM@Z*ukh4ud zE{<^N{0?@0cZrGz+*2T5IQ8lwzFHbQsFgSzi zFi;^G0S;Y|10%qtKB!0G+HKSB+{Ib{2mu<8ZL})cKL$`4s=Qm#&>RT{~a6cHVO7eC=v^kiQ>v zj563#&*Xz(dp&z?+PnFkdRYuX*L-Qd0ChElJd+PO{y*f|%hKL0&?(-@@tUcg*YW?s z*LxiQpK!H2SnmUNEvSdqU89oV(QDG!%?C09eCi^^3^9=D5gy5h|DT3bU!7u|9IyA+ z?(JrG{D08#|A|iiPPUgBpzf>XsHy!A0{XIJUsO6PL~tnkRf1pM!cRChf2B^eaH8?7aj#(?#=u=1s@mSVqf( zphXD&CqSXoYtz(u1JptB=rw7=XO44kiR6FK2J06tng?ApuW6oe>2>_y`N^f%kI@z6 z5m0BPR=}n6hGXaH&V!vFTsq%5b{=)+l^3)s z>y43Q)co8Dkpg9K(1?2@Kd4^)52>^p_kgQLP@9FnHTcK>{~-T>>c)mWETAS1LkZXZ zcc7|`Vdek-h9^Oh@1l}%@Bs%iq>6{s+m78L46xd{hk=!W!KvGY0aiVCw)B9E2Q@+) ze}Y)0JG&v8L9NCJpJYh$;NSxeP}G%jTc|`Tb6KBp>A8X2R64#{}%wQt9rNEg$;M}(P=&;k=BL-p zj{gsW4n#e9`G@Vl{|pTE?|WUu{)22GoE7wdVGLx+1+R3c}o#qVcqIUCxmW9NCM(|uzN+2c` zD|mEQgU6&YUOWVySJ7Rf5&%l55r!v^yBUB6NxRE(UW-Gz{H+H{xj_|dfMchJ!E3hv z2Q5F=JOw4a0LSKPga4&m`(J}XY4TEVXCKs|N9ydm8s2^_@5sN6$?`%eyIZGBKWJR) z|3T0Hhg>aB)IW1&y#4=><*9lO&(2S-h9_UYIt;$%{i;jnpXpV`Kaa{Xl#BOqsugK_p$kxSm_6l0qvk_6K;TK@&VV* zLxz{Y?fqUK0~ViN8TQwr-Hv~>9e+6fKg4*UH{icxXYik15eARugDjrShgn=LPu1OX z?Db#-9b^icp6{)(_~X$l!uFcK+x^e~gZ~dO9?*9B)9LgFGJti6#l`Yu-4jsQ!G}m3 zJFggC0*{k;h=9gHYE(Et*PJSFFferbsIa`2?q=HwN{OupN?1D&9(>5r=`$TXq~`Je zkfY_5`UgI}dsINGJ)4iSID!Y74gVi+Q856o>1JR!-U5~d`4zO#8+6k8>mZlzo;@lY zpnl*Xm(G?wCISo$uQ@w=T0ojQKXqQa_|GHxST}_4k$lj_x~BzXg-7zCnw!U6_K1Lz zk4t9@SiQ&p;a2vNimm22AHKsQ+Hi_e?(2oBa=NFW5lOfCig$O7{J(4e>MXEJK zL(MJEpS>w7KL?f3_L5Xt{zotF>(;F$USH@K?nbo>L#YA%+~>h8W&0G&48cm$M7 zKp6;nhJ+?a>?l-|#@=BhXa5$H7-Duh~2^OVHw*7u}#0)eNAWK!yjR z4tsR|b2U8a*nHyuPSC~&$QaE3mqNS@451#KKZ3y~f^HlG-Ie0eTQA_z{GXq{?JTIz z)cBu)gMop+eH!R?wS@ow|L+FnaF5P|9+w|`bl!jA3)+y-&2zLsC6U3S^C;*_`H=k# z0t^f<+CVbRKmL1k9x4d~Y3O8m3sPlxX$MH&qt`^z@W03R&mNtpTzVb;zvlDk{P6#{ zhvp5BP9_h=TON$}Tr7{*yz&5z*@0>rMvu-@9-!O}Dz6|$d30WQE#<+=586-BdDx@z zF~f)d|4Sr5?gH(9@M!+=zl6)9GlIjT`GCM{-WQ-_mX1S%B@T3{M2JW0f6#3b!6hLc z-SIy>dh@7U1}N2mhp?f6>Ct)X#V0P%$yh)Bm-4?b2CdYC1mNx0O5l*~jSzS(@nX}z|NmdV z_GtZ9!s8eb9qZBg{pG^H|NqB(bl!-LJ-j1BC6VFqgbASg$HBo3PI29$24xBipiAA{ zL1`IOU7h@Ic)+9c>Zf%c-!HoKX8wPz;?w!cr}G&o8tOrp?;I%Q^Xg^MZm_T|W%c-f z;5ENT^HC0u?pOwo*4w3*4G%fRJ1&_{0o%i=KhJXgv zU$B9uDi6O%21#`)7#?W7%|GRUNAnSjXvdht6MEghgYI9NcBuKk0{@f)oEMrOFdm*T zVS;Dp1;dlC1^KsuI;tX;9{&$&9_qYM%I;%%u=JJTfy1GD6PO(tV37^JE}_w)k%57s zT;RnIP^2U?cy#L=jri;Ua&L*rACPbFdo-W?|7o2^=e_-)cs?328KT#o$n0~!1TNWOThFLa56ANM8|@wwtd%MLbbh&&~4!%K$WUJA2=@91z03GMs~ zDk2BNc=pDqfOFY=5eA0NcOIShU&M-lt|BP~g|biQv(ERRn~^|kogH3$ z6$Z<&d33X=yk-HFjULTM96<4O*fGrTfMe&s{T`nk7(lBiz8Zc5-R^P)WF5zgTfhGQ z2cPfOd3axjaw0?L@fYQw_R0Mh3x56o9}(@-`N*g9olEC;$VGH71M>d=pD^JMC}<21 zcy|5(ry|eZ5RU&{Y%K>mm`XT6y?!&AM`m0)yeD*D4;CH%cWuS}%EY zJ1dm1d2~7{ycYH7WbK-w!0?*Kqw|nQw}XO5>w(hi-<(+#O8LNDf!6;etS_eg0^hLd z!uj+?=db_&qrq2Ug2JNnw@2sq7Z*Wk=XM28=l#w@hTo!JvWhY=yg2du|NrBl!G8wB z1JQ>kOz3uJ0p~))|1UwC>^!=87ZoUg^4cel&d=Zq{l!Yqsu;@~(fm_Dt9TAOf=YMr zT}7qlFDh9X7+$OZ5y`Be+C=usWCaGpw~ozc{=XIiCE#Z&_hq4j_xzv~-Naq{wY z#5Z>qmTq^R5*2NCjuQTEdynJ~;LP>n94lxaA*g}{ovQ(A=DyZ!Jy0U&(OoXlZQpt5 z#Zy)WhVEb<56cTBoXy@WjLm2Nzves++QtJ~{0j|%P(;npY+F>Qz`#%{vOi&y1H*CF z#6ks7`;{M+1hj=AeHyiR{{5ESkQN~8CI?x_Ho zoCCVt<3Oobw=<8mGe?n5cd&p*cdpZ$^ z8zZz5+*R?91Om3=C1xv7n6O(f9^*HZW+C)_{N81rN~CDIUEn zpv$xvc5T?=z~BSgB?`LK%)>+T5a{xQ^9&3O{~z&dR(#~wEO^MTnQ@U{GvOe=X2eE* z&47jcnjRDRH60p3DnXMk9-WVlvw*jx9(Pe;0WC-c4f1n%^tylwJr@;$7xO^#42?%X zt^lQ7k515qr2?HbDm>rZSQ$(BAh!f+`~&%;1QO{d{=ZJ{b{6=5!qS5$C$ z@S8J>K#5qlwMTD>3J)YrZ33D9|HNzEZf~A$7Zq@DcCc`DJG1x^M^<0r%&sAI*)^EhQj|Iofjc?v@tR;L>+bv z_w4-d80Oh|4OAn8V&*hRcef*pN2iHO%Yh2+<`ayajw~-hXXp5ItEl+!uYcqVx-0c1 z=tjazKAjIdzklMj9y$-rM&+u(Sr7lB>Y?q^sXY(J%V~)BEj$0W!*h{$`!7=%A z3j+hgH)j@yQjTtC0Z+>#<(%HVI{GgsgGMcidAglBynAi*|8ySJ{OZA6EaB1l^7E48 z&Y-hBK{qafvKJ`qwEuvDwlu?6^9|@sdCfPkWkF56Qb<}f0~I|WCev$ePsXF3nn${= zy?agceL5e#uxDam@UeVQbK$ifsKxXD=!>VI0r4OIOZj{{Ul?BU_->-&*?H`>K!@vp z&;Lh#EuR)$f6eS__zhY{`gDG9jB|_!mGj_w$}z;T^9r~|oeo+&k<9X^+uEh`5i~bI zUGCHQ?wGSK!;3|X3=GkrI?4ld1BXZRumAimhYo{+{~O4#v!If<+mpqk^Y^!-jHNuy zCm9_(eOX?Dc4>IDUgB>7O&57|UiIK#|IVZH8mJ}u!sGilAIlH?t)S^r$8J{v56h$F ztPKwZN_2fX-@jn~4GyP#$L?ANkIq-1JJ!Hg={5iOUuyLt|J(on%@!=BrmydNcK-3` zd<`B1u~G5qeD^{foTN%PJUU-^Xx?}&(1!tl;(9*@=om0XU^zATKdMLarR z7@h=OV#i~636vB%558tHJPE4QK|Lgo&J%|{x@{e^6c}EXfy(}F+o>RS7Kq*ahNIbb zY7VHd<2U^OBIMiu|NjqkvbN+XFm$ulZB{D3xmc zUm?~A8a`vF=W9-5`E$%om(ii4PUkgq^ZEba3L1PTU8ju-=$^&nE-Dh0GK1;xm%l%P^fA8t45A%F9Xqc=F0ln&0|qV}I9`Kp3N+Z^!0gDdKY-bh!GquR zNAqg|$L1pf9^Ih~`#`Px|DhbszxnI0wcf6ib8P;LrrMG54oGF^z5k&ch--Jj<2c~k zqrvSZ@IVe|QVg{0RN%Oa3g}o6hL=adtv!$K92J4iYn_)ttslm(U9JqE29J$u>9f|` zC8D07@yr?(0muJg9E{*rU5<(XXqBiygM})8YZE7E%l?65E-DHN$6Qpb89;@iz%dsU z8wSI-$6Qow8IHNA*ntRp&{{tSP*w#khXm1}aX*1BDUh|G!?YTHr+3UzxersaIfR{oq2ae>d2+*V1ODc0(6y7lwfI{=SIv~`H~d!SZ_#9AU?>-Bxy|3g#tBlZ zz~B0ogMs0tDOjy4f9rh^ubc@ar_0|0TG`z2TaUkGHCSGozjZ%IekB7)K8e3&6{s~X z-tgOpzXeq4H~fy^Z=DNL(aQo-k<8!n2dpuLzqO5nf#G#r!|wwAmIM|ChH|Bb-ObQ6k;&yNbV6 z8zgiGG_tXs@wkf$c+b;oQ&+P}F<0H*9^4hsV)sKI)m z@>~oI3@<|WPq@aQ~LD%4P;V#CnoqoT0EfZydrhYx5z z6|(FBbY2-aZMJ&bl?H#(6rZvps6@i|Gbdq0QG%5 zS`T>edtUH>uGZ)bQE>q~`yGH&`rL?+2767(E<(`&u%erc>)?g1*L9KPWtbn zBJt7kOkRK*{TKhA1V>k=kBUqQPj`rli{-^K z7SQ=~;JoQ-2#R5F9t0nn0NNhG?W5x0)4c{f|4}O4U7{l6*)8VN`5xrJZWk39Mvx;H zvNA9<)Tmf9@b8OJv99NJZTZhX^+3x3{%tovmq8uYj8T!%j8Sp$>~&#f0IebbB@l2j zfb0SQJE|lG?4S@88K2JYofr6>T~uUtftHYKLRT)nxcBS-|85@@iPqb_IvgeZjCVbf zKcl)v(?!K)7pU0u6P`63@=T?oWF0Zi*kKD>?l!@={yXYO9TZA)GUxcyCGrG%fbzciC!52%TxT$r$FulhYM&m z=ZjN6|Nmz^+!>=H@lqO;cOl8C0#wX0Ic#NYfMmP~NB$`Xz%c|X0ZL@MAWDz9s012- zL_y^PSX+mSN)YI@6H6Brmog4eq<}J*tKt8hpql2j3D}%c0Z6d{(h15ruO;9Hffn^Z zBtgb8?gX{KKrP@vhnBan$ghiWX!y$r%B3Y*MC5UgZXv@1uS1AZ$@E$aWG*pklbH-J zxwiZ-kp?-Yj?1Ie1+^F){v9pRR0T}}zE*Ph zceYNpyGBI@>@mmY2aNlwK~02S8;cjs+zbq_I+gbWveJFNB+GR2&$>1!Obms3VtBZvOC-Y5aO89Qmgo2ZtpnsdtB{ zIDFz4a8dEt2O6;R=sXVd-HVlM(7O);lxTwkuoM!2 zC7hs9K9>JJDlTAQ&=}5v1`CGLx5pS5Udw|6xkSPRbXQ_1<1rUj20d7~9%B(;X!xC8 z8V}2zV2fV-1TAU;jg1~Iaov{+iucarFP?w|JCD6)_V|Ce!J47;hezu-4}RBs9{*2w zG20lFe7Dhq-01GXc-W)$+c9PaP!sw7iz{#c|L+P>vEvF+u`My=4?hX5 z`*<`S0k!;KO>b}~rCZdkNP(gG#Q)}B^7UdK$%i~TZH`_rNo44CV(etqDgvE)dl)*b z$I&e-S){=5!u$FE|F3!ep9Za#5dkZ1yl)9qj!3K*MI17fM+` z!$uyU36_%{%|HK_J_7a8Crp?y!Q=P=(3V1e)-N8NA43hld9+sXAOyI@pm!QER&_RBn+u>9#kRP5f!J*?*7rVuU65f^rr7VX3U$c7rKmPhH$R`sfIEFcby2GBGe?d*^FQ88G zZ*YQe=+buJ-}m>$^OxXW)mw*#zq+N8{QIgIJ$kblU)XRkFti>3rH9v`F&-wvw=SKZ zphMOr;JfFalyG@k%BYmG_;%{3fGYUT!<8PbZ#_U)7J2s1&s?j?gfS6Yi?J=w++9w zOPM|XA9Za0BT&lGP|ILY%KqBiwe?Afv}3P}%D?6xN@YHV-;T2u#VIg=qT%H~P@}k( z!JvfOqw}@n9#9MNwXWkHPzBQE%4kzj!eSEv3bk4$kKS0O7i#Q~P;=Y^u9%oTI$wh> z2><4|>Az?4A5YK*Aq?@ zLoSvNYMnj!w;l61_>O~r+bIwJ^~XK<*MIk5JP1w}poyb{uQ)syKlxama^ZJB;BoK~ zN8>|Kb>Pu!!sYS*aF=k)rP8S$maj|skF(B;h4{&*^RwYM(ADhBo}Kcptp`d3Jetq_ zKh9bgs{oFS*SsE`A3VO_a0N%e2k1}%Xq>>K^TT1o16|?`zlutf>V+D9C6Gsnl!k9gZvv46g+Z54`5x;RxEX&DQ+jPxA>TP_jID7@j5_JHLVk z9RBPF?JfiN^*{?*UN}7Y{~w&3j+V&n2hIL?bRK@84HI;gC{+g)s}fH^*K)iq;c)4E z{v!SH|Nn-!U*tRkr7+Ow<6=0)t1V ztAa=45s<%;6Z!;D{sxU}ma>7zhnWsf*ueTS`O*LX6E^U^j0VxJpi57?oc=p@xLEvm zwEW=Gd60k30Z;Ia&dooW>e*TjlsP;Ds3jdt>3_NZ~U$&EMJzfgA2gd zEUhO?1bthdR6<4x9gn#(=)UFytvKnt@c)n_sLnI6JXQ3`@PH#IpYl&V;B?GIgHf;Z z0$7fr^TNwC(7j&#dZITi85pXVia7W+PWg1cel5nYamuqdmJw{^|FdcQ;k@rH89*Lj z-EIlm!SjhTXxvDshF&q3p z>+%1v=fO87j*UO+wmzxn{lqW8 z8*a(K@Y0wOY$HKB*&8PD{NcjtXv`|f@^;?O6Pv--VnI7MN_BueU^67l={~YM> zJCLAf=atSM;10Iq{{x-iZ4k{rSUQiF?r8nS-wJB5z1#}gN6o+Q(EqbDKJjZEFa(9) z!B6}#H$L&lok`=@JImiL586O!`MOk~^(}u3Xdx~v3R=IF@^s#C(R}g$fTQK{vgFpc zC7GZGi=I!fGowrA$5IaGULSo%7tMpcuKz6$miv6-7Z81D&cNW&dB5}AYfXNQ!~f5L zg5eXt&Vk+lgR~i7H*|zEdi+2Bi9hn-C;qroAh)!BE4|!#!n0R~q4UNuW(F6{7q6K> z?U*APh(vxEoKb#&*6IF$)m$Iy!2{7AmIq5j;9~y`FL_uVlmBC>vy1W+>gzN z3_LpzHvF>e2>V|r;Mnkk5!5_Z=yefb?{NF?(|H24!{eNX<-amk(17vj-eATTpppzU z5!dVZ|NpsQkd@6pRCa*u;&(pb(RvBw05-$hohM&gBU||1qw@kbJDbt%JcVrMrP321 zJ3-xake!`BzyZ>HLZSIZV)GBlGVWgY3x=0KTVSUh>b!8c*Zl%S!4J+dzUK1^hL?KX z=Qsagc;;;wJE4XS1qbIFH$JU$ShVU z$Vn_o%P-1RFW?s6U zf`U_Jsv;KymuCqm^a}Eei!+mQQWZ)v5=%h36+lXhQj3dIQ^0|xQLG7Zd=kizRIu5l z1tqB|dR&oEhm;nBw5KZQmXwt#kvb?O(u)#vK?Wt3l%(bslz^B}X|9ySl0=2HqWoM1P~7Jxrl+PT z6sIPGtS$!G1d1=PE8*6`A{U$h@)C1Xxe`>1)wwc@6^cuX3o?^4^Gl0!Dit(x^NT>f zNz7AFO;JeBNGvMWRLIHCOV{HHDXLT`Ed~X0qC!z>VsU<6A}HYC1}bFc6_=zYrsyds z1m_nORVpf2>1uK@fKsYUYEEhiNGEcd1Es;tG=SVq$;H5<(H;sDCDN*<`-2$RXHb?re~BWBq{`Zx(Bic@papq3hgEGgOMe4;0xruqDi8(q7!H`lw!9>qk2ONmt44s*m zmJdo7pl}AI3k@SpumK=LJRwd76$7cspfWHMT(2aeI7jRZ(WeT~K@u0dvFR9819M7O!Hh_5? zoZUcaB{L5kSJ1pk+dOVE5P9546Wn^zFs4o(H-hJJ%-+gG?yS%+1V61eF$`+EquPur#v-)K1ca*17?XexA+>y1L+|Ls1?mC+6oB zXBL;F<|S7uq!tzB7g=#}supu`f-_cTu|lGPQ>eS1f_1-cmuy1E&uIR&7i1d0oaGV`D{Pi|^4$V^aK zqno0jtBWY{z-rU-i;`0n5Q3Tcd0?eg3c9+W91SYfzzP*WJ(XlcQ3q3)t)Q!$otlbl zJD95hF3lm0&QwjL24OMS{4@n!U5MRK(-jo*%TkNVi!wnCCQ$no)W}0>rb4upDCp{f z8+&kF3SchGsnAXaIDWz11h8ev3c9+*B`Nu(C2(y}lS}dyic1pnQWA?&K>atc>Ouuw z-NMq$RD@y$SUXoCFF!B2D6=FpIWY&4Toj<;3vphVg05~^YEe>taVpHFq*PER5-g&T zs9=ZT!EkS?CO4ye1DSejF!kO=Ovftn_u zHfBDg0S&G!;YKPzG?wOp`sV673fT1`G6YuLRmq7ZxU5BJ1%(78+3CR?pO+6Q1V9}| zNDCg66!LTwAoV;v85e^}GlWU0;N%7FpTd(Xq*Oplzy+lxdI}1#j&yQE_e%y z^1+?;%wkCM7nTXE!JPrnU`0`CN@j6MQD#zUNh+vWnV6TNpI@Yqo1c=IRtYjEvjo(Y zPX!IGq$-r87UdR$(B72N!T6dV--9D_nUokM*bgA@Wng97}6 zT|pxZpiV{xIH@3q3pjt~f*R~8sU?Y-ImHmaG8832I=i0w{vZp$ZE{F~sH2bsZQAF9 z(;~dr3K`;1NXyU3$u9>DPG}UDq-5r4GJxp((h^MuP|FrP?%)h=2;>)}g8KOIF*Q)v z98^z&l^~72sTM0F<`ktSrc{FaXR4qPn6$La3TXEqRVBDePss!gzU3EH;!*FhC)(iNwGd?L{UdU)l| zMF-^l%sem!if1kcP&J%prI3`E0?LG`#as*;dHH#%nn;d9icpXXFhT+phw$c6Dl{O# zg_Cuv z7$99Y_@I)8bC9zpBvFHMFG!Y)0c=ldUJ7V1CAFd;HMt};C8v^$0qpO@^vq<1ywcpH z)FK59uu4!ug2Y7%sK^5sB$|-GvMSAk833__AwQdop)?N`9VlU`mtR@}b|}Q->7}4r zI=?709TX-CpxOkSQ^5%WI;f~xjAOd_<_1;vye z7lTujXMhoyWYE=R05=dALj9sV0~o4|k`qf9qKup!Ll{6+KSLCV1#*^CVu}K&QU&Ej zbuI>2Gm`mZj=~+D)h;pw<@1uEgRJ23?puv|-8s=`Da$lWsD&gP~gj z8eahgNfLPcD@CCsKRp#R&Z5T!DwP@ZN|LIKz$AlSNh0WCX<<>&tU3cjE0i{X(h^YG z4ob^HX>BMiAq&xW2};{RX-7GTcq5cA3#BcgG-!^7f#HKagf4(6W{8B+3J&1PSx3Rh zK-VQT8QjERC}&WpHmFcFu&B^cfY7y&91m?4r6@QDITu?g6qkUKkAf{!kq)>BDlJJ( zfeSHkae;HLeokf*m|+F(V1PT2kh}rS^r|U(T;K)_xSD|uj(~N*wStOFJuckcNz5@l z=)hZMu|h^-K|yL>Y6=%PD}sj1%2SI#F$U@@fk(Gt4JSxz20Tm*b2F&jo5%$!UBIbG z2i%l`4)7)B6vGD?!DF%@ro0y%dkeH{C znwAD?Wr9cMz=M@Av#hyFGIK#g)S$7_#N_1CBGBkB$P!40x>y0!swpW=%*m-#$Vp8E zB|wFY%=C=ZBCf*H#2nCk53CIc8W_t+%*!s;Q$TG(>L?hRD!8R46_q9yRVo-67?^?@ zuUuMMS_+N|;L-fV9MC)*Y_JtnzF|h8p@D(9f|iyR7nf^AL26NEDrhnJ;<0RS6i2m2uvtV1EOxHz>4G||MBRa#sE zjbrcxUUE@>aj`CVtPmU%MXAN5IVIrvsEpF|RA@~D;&VZV^FcLeu|Bv(Q4AS(EY1gY zii#C9O7lSe%}W7QSDN6opio=_>fLjJYDY`N1*0|f^TXrDC{iE zxD*sL%FE03a$y2`$@#gOdI}1Tph1{a1yJG#g)k^$K;e)Ho+}$9O_@scx72&3V zM>ODl@LbRwC%6R;%7*!+={c34xz#*S_AOFy^7Icb2K%=>wMZ80*QH$KhrYv zQovJsrA6S;e(01eNS8uNerhpzCKyY2gE}Rk3MLUWEmH}adVq&}320Ucsd(d3fYhQ8 zOFb3J!P6^csYR6vV5fs7azGv7jMT&;=qyJjsE-OM0l5?ua#Bk`L-*Nv`Q>0UbQCgE zQb7fQ4!EhQkf@NHUjUx&g(or41Q;kBOTZnLf}(uToRosDE;u!T`bd!C&r<>3!GcV! zmgIv*4^oRuGSflj4`_yvi^1QUA=ouA)YZ?~HQqHS$Ulf7z%j_t7s~c^g|S>5LmZ)k z2xh#mqr0awgQq`KCe+V0BEZ!-#MLF<)!&W5KQzQC)Xgp4E!4+{!P(!>&C?yK(B2+e zl|d>r4D#1oNY(ZiO7pyf@Fk$M5|q}3(soeV9ZH8m>0~HfKq3tqF98o;DyXJdDI^yq z!z)8@{g{-QmkO>wk%U335kN~JQn(mEy1|pEnR$?rA@H0jq{-$R;-;XcV5n=Pker{A znU@Zd(l$~kuFM7J*V5utnEuSXOi*J-A-yQSv_L^MMMoi8H3c-Rq?!^7nTu0Rf#}mv zHPJInQ&rW3X)Q=BE(W_C?5Io-TSpZenI0*eV5RlFckmRX|Zu2y%!*v_XX`q%m3%tDpc{iIWOiOP~N*cB2Z< zIN+=UuEJ7_ib44UY&fXa10{G+eF*CAfV=`$S)N~%4ORtqnvOzIVo7E`q`waFMM*xm zbqDP)SVKFAX^A;GNr}nXV8cNPKQSjgzbLaLBbSQ-yon#QzaF%{9kk@Nl7WE%bQrQL z3j@Oi9tMU&H3o)|Vg`o4k&FyKcv%=;YVt7bsa0XnPf0D)FD**UOUcg#rR$RKka((r z(o>-HIw-vlN?(K051{lfD9!T&qF)Y5>p^KpDD4fUBcXIQlrD$Ty-<27l->xX4@2oo zQ2G&+{s^U+enRXOgVI`1+8RoGLFq^+T?nP?p!5_dy%BUfbAC$fbrQbqnw%-u*M4_}Yl(vD=kx;q>N;gC4DNuSnl->)ak3s3% zQ2GUwX88lLM-ocwLTP&_?F*&TpmYnAo&}{>L+OK1`XZFR52b%YX|BHzdt{-s0hD%z z(wR`Y1xhc3(mSB^eJIWH4`PlAln#N?RZw~Yl->iS&qL{ZQ2H;FmiiAdM;l6eLFq&& zT>+&hLFoff`W}>KXK(~%3kEqTZ3m_OpmZvfo(QEkLFv;_`YDv=WrUbx2&LnpbQ6@G z4y9K?>FrSZ1eAUTr5TtY=7>RQeJJe>r8A*)9hB~e((|D7Iw*YrN?(T3@1XQQC@stk zu?OsV1_p*&1_p-U(qz#3DF*+7RB(}%2kMjAW|owsrZD*BBUboZCypq(SBFF+gNY_OnIWZ@P0W>@f?nJ46YTa$)Mr1+{6;-$Q*c>2h_QN^z%WcC1+&jq=34@ATOjAGk_LrfV(~n{-q_L z#y+G=#t;DVPBCaOME_BtIWCKVPW;9%%)QlNCeF1&u(1x-+Ro3?Zo%&~>l~M}lgcoW!E^ zRIsZG5|cr#r?e8#Iw7d@JackV(-U(Pic?dw89>9by7_tFHEcPl3Xmv7*beeuF@sZ4 zes*e}LP2IhDuZugNe0~M3ZN!`ewso`KDZ*zPg6)M%}a);f%KWd2@BMFOf62$1N)I7 z2o|y_sfj7zSb+3g@vfO= zpp(s@zQ8L0|+sU@H$978~2ayDpa8zco<`%Gv=jh`0yI%FgeB&brYeB* z3n=GI?`I=H6@RtPFH82muf%pf0@=4BR^rh;4n^FO$FLqsxY(gifFQe2W)lFAU2 z3i7-HwBQ7-q|QqRCG$i`t&s?>N)!?m@={Y%K&|+UL{RR?$xJFrEUIL11WSYB95kE& zuPRU#>E&c5DL_|!gDg)3&AK2K@-a9<){TQqDai+CTaYS{hjT$|a*B~n%S=z$m9pp~D+48i%}-VkUn03-$EgF-D&w-_wW-~t*F$%Dwi0vMF(z=_!xvVaH@ zv7mwwo?gm}@gxyNO4qJ02(<4rF)cC z0bBs(0-cM)j1`6AjM5TtfWXsZQ7U-B zcyem76>QF_xB#@E3E4lO@zNAfm4z%=l$r(_b!G4XElA2NRsfspm#+$Vkjf$w_4h2KV|w zwHByYDOO0%NlgT8i-8t@5w3oo5#ZU^6i5mNwU9vJ50NNN%}p%G$OjF*BH{qt3lLh=K`5#FhgwGycnkO~XN2iGV?so(`x3?RYsL{Rkws(@0#6WGP6MWFUG zgGOFyPL3w5G0(sN9Z7=>Nq|TLG!R{y2O8mp);+NdnR#gpd5L*QCV-d^>}Smcft~jM zE9VCYyIh72lB$3@T?+9Fn4Hd@0f9GAaR$&9U64iw5irTXz*rT;z*r%`$jrmeF@cc* zEDkzzXbYnQgE>?UhytlMVPIf*&FH{j1`>c`kT~e-M@1$F2GB8OP+_n+ps~7DOb!hG zAVDua&=zp8cnt#s!%rp$23e3e6obr}!oa{F#_YhL4iy7YAaT&WKDNvb44`9a8C($N z9ARK!C}4JAkOnD)Vvu^!9bMhb4h%UUF-JauW+ny(ke|LVFfe>)c3_AHZ6ySYd-8#< z>jfzT=>r`q6~^ko0J_Q>*&ZE628L!<2L|wQTTuH!=D9F3FwACkU;z1t!HG|xhsm8! zqK(;wPobGbg@J(qbe*p_n*#%AyC+D#m&t=q!jVtGkx#>g&!CyLjirYfWN!~61H*AP z2ZnHvL!jn^#FsEKFvzhxFo4FBklh11Hp`9Ofx!Sx{S`(AhB9^s2GGHo3}F93;`0q7 z1H(*q2L?qn^(;&b47=DJ7*s*xNa|&n7#Qxu#N8o51aglF69WSahXaEtNIg^>6b?R2 z3=EbW4h&8pad0>UfWpBU6b>Ny93}>aY7Pg67^u7lNEQ@W3e7Aab9LNW)GmRXn?7?yK7Fl+@K9O1+#;KV24#HZlIr{TzF;K*mu%-+VC#i1RWR(K?8n-^i2o=*~$RYSHjG|a8}fTfsvDe0hAu_+6UFA z!@$6>hM9rkoSXy0OcZ@REWONqOrCriZLFSr1}=OK&7i|uK;dwQnSmig!-2sXY%_!a z+5d%^fnl+R0|O{Mfb8#Qa^;igV|L|J=w)#Q`x@k77d{J+VW2Q!fTSNC76yiXEeD3* z5Tn2(C|+Gy7#O;=9T>m^myUb_j(ifJw9niI&2K3z3=H439T*;gbb!+ZIDdfC1<0K( zEDQ`cbx`v=$lN)gaMg8SCLE=|f7#QB^Ixv930V)iM ze-;LYFS-s4%rHTyzgSoq7{2Q|fXfD$6v!MIRt5%PJ81A4mj0H;fMZuH^7(nOJfa(E9K8a@LHYRsI0|o|AdGd#yfg#+>fgu^{PFFq& zP*LK_r_jUV0xC~HwG%WGfy~q4U|`tg?ZBW9vIkr~2SN&0Xn6X7jyd#(h9_7aQf{Ph zFfi!&I53EU^g%Jm-8CEx430hy48Bk?5CyVl3I_v2pAWPi1eX_{AeV!r!TER#2Lr=X zAIyAqhJ%6OvyTJA1W<{OmhK>F9#n*b)BOcDXu1c*7Yio?Lrbm$gNr;78vU zR8MnYcndmF39b*4XTdre)F3(_MuGK#!tn?v14G6#XnhA3g|u_-a56B=T;{;Q3Uaa& zxLj^yhSs+r`~Gk;Fw9%-z~Bxl5RvTzr8Q7cxq<6HcfJNqkiB4&LH3z&F)%o+c3_YL zi$DmFxDOWtL)>b3y8zzKOW|T*n7kUbeFlo>8ZHKgb*mj1K!*u|(x(ery)lQ2fnm)W z2L{l&U7+#+^0!kVd1H+8<4h-NH22%c60u zXnBNWP7V(P!;cLP3~Ep@5Ct-)g@=JbVWR_sFh~IEZ;-p^@Gvl#Y;<4%9jywAe@{LM zP&|3^DYUV;L)*@va6Q7qz_4SZ0|RJ%B}knkxOELmB|S_a^PliAFz9S@U;y2f0!n9~ zegH`P4-W%F#3ly@P&Nfw4Zdb`$6(4ybKIFn;jTH{UDJ2ZA{K6@!rDAz%XI614A=NKh*yqcg*2sU=Z1Y z+Fk*fw}qF1L1K#o1GqB>X%~UYbuU=DzrxGF5V6I9p$}x9JKqCP_6O;E!^^<%Vv7UA z1duq`9&lCx@xbLO4<7?V#a0J!-N4`q>0g1$2^BsDh9z4a7%V{sq10#avI$f^fJzN` z{R*-#hL3^a!8Qj550DKg^=LB-sQ#(pV_?wO?!fQ>D&GgHXL~{IP)BfW-^|v=+5<_( zVE3)zV_@Le;Q+pn1f&IoLE&_SkAXo1i})Qr1_p&4(DVka7eVU3@G&rWU{TM*&%h7@ zQx7s6mj3w}7;1Jv%R6X00c4I1KLZ2k%xTbxXs~`6DBXteGcf$v;lKdyrK9+}4OFi- zv%2vafWozgpMfE5rvrlw=;#?pIRq+oUBP`1P-wb9%ije|pzsB|2xRXTeg=k?!_fX3 zSQJv;pW$a5TNf#h@*a$E%OgQ4e0CGM^D+q(cLj)KY<{W|cvp|9jkoHE700YC0 zBMuB_Kw{u>2;Aa;wKp933_vjsl7zG)=Lj$`v>bI{Xu+25py7kwZU)(ZMSy{U<2bY* z3Na3xrr!uKF!&rtw963bt%t=EoZ{U14lqL805V5Lkb$A#gaZSpI))kp4i6JS28IbI zP{&0;@#!PTz;OJ81A{BHKJ5qf^D+8W&Y*r(0<`%7Hm^mHfq~}?G<=~Jf$X0n$iU!o z2HL-Ig_JiS@hyT3413N%+jVXT@iT%93m88#CxQ$N0cWA<7s>oTApf0pVDN;B zAyc5^_&^vY24aISjE_!#5KRONwLAp3rWvH3LuffDtpcTQyo89uXica%j0PF9UG^YL zo^=!FO*LoUJ7p}w+1W?MH~F?nu?D!y?Rd+f#{c1@(zR<{`iZB#wNqyEm|ku>Ysj^r z&t~sle~W_Kf8!JRUg%z^ zeN$f0W^y3c-9XZt#dclTQOnhAP3khz&dNt^8T5)24r-mB+b2}f;4ijt8IQEs?z8g3 zue%tReDh|ly}-e7>g-7#_SMrXHf#&4$($fsc(3Fv9dvvUpv(>Q_^q%WioP zz)wb$I1MLXNwcp3H;i=3 zX4}usje(LYm9M$kGTv|7t$v+x*|W#XvTyB8iEVEMN2 z?B>@AC+m9c_MV*Zf2Y8eX;NZF9c#Hi_mt>vXgq9C*gA7USFB#IcjWig93c+dP6oI>>+}2c+uuw3E|2@1 z181ETYn!U4B{1_S`HD&K^A3VMAaoM$m=j%Txzmj}P*D|L*AA_n@*j{g_q5h1e3y|v1VJhIDFrj&BVZPfr)_ubeix(Mh1q(%nS?$ z%nS^=%nS^m+eplq7#O}YFfiO?W?%q~^MP)yJI2Vs5YG%6lV)Ie%EZ9%iGhJ(D>DNF z=;pP%ObiUs%nS_vj0_A%m>3vxnHU)Cm>9riULO+!!!0HTh8rMz7#SG0FfuTRF)}cG zU}Rtb-AI3lfq|i)k%3_a69WUN5d|7|&SPd^xX8%Bpv}y{06Hi$6*QK{#K4fu#J~VL zxF4j?kcojIj+udBJre`NZ$<_NX+{QyM~n>McC0$cEldmyAa~_6F))BG+Iz>q03M^O zW@KPk19BrX14AJb#C%X&HIspX0d$c8=*VOaCI*Hj%nS_InHU)EFfuS~1*v0XU|7e% zz|ao$R}}-qze1pKT}B3mP-X^(?Mw^|KN%PpK!?79E?4YjW?)ccVgTPXHl3M)A&Z%T z;T9tULlH9r!xu&dh9D*eh7=|ShDIg^21RBD2GCeKsC{e9%)oGinSsHViGhKUiGkrg zBLjmxGXn$Ya)cNr28Mmi3=EG% z!w9h>jhTVrF#{wHZ!|$VGU}uDcgCr9J!#XAg29Uj=_T^R34c-h43{1=n3?TpR zV_;w?Wn^GbV`N}3V`gB`0FA9OFff4523*g~z#z@cz|a7?Wt5SD;VdHq!xTmahHp#^ z;J$J>GXukE&~@qz3=COJ5ch)GG}D+F7&4g|7&t-W!b}Vd222bL+nE^{K$l=UF)=V) zVqyT#fv7MuFo1?{W->A`oMeKG>w?CffuVqb zfk6;->?ji?tt&G#FvKx3Fmy98FvLQ`C>b;!#>~Lb!_2^t2pXejW?-1bz`!5`@;ej6 zZ=gAtA|?igGA0IwXQ1(LCI$v6Mh1poObiU5^ax7pfeZ``^O+eKKC$(Ff%X+GcqtdXJ%li zho%#d`UFM>hB^iYhDc@xhCR#-3~7uE44^#k!o&ccKY7RmNqc*t>2EI7@1To#w=pp= zfbI-=z|6p)$;`m;oQZ*91p@=aIc5fi4a^J-pmYQp;|I0HK=J;XiGiVsiGg7o10+9! z`~@1TQw61GP}*T)VE7M8b4&~jdLaKWLh=YGe>5^PFzjY#V3@(gz;KnBfuWO$fuRs; z7igTZmYIR!2?GPeMn(p3dk>UWc^DZOK(|JH0G;T`z`y`1UqEU>vhm!0?EPfuVyDq6d`E zKxwZRl$Jnek}@(dI506VWHLeG>KiC*L30^Q3=E$^X&G8}Fo5ciPG(5? z@{);x;UK6H%*?<58dpq!mU|#K$U)t4nVEq>f|-HgAT#J_W(I~0AU82HFtmW`GiFG- z0*!6uF)}cK%ms;q?m{&Or5i>DhE0qN46PtG=!#8H83>AdW(Ee(UDZ6y3=FKy3=Gvw z3=FM|3=E)j0UEael?9-(eJKM2!w*IVh8dtd#{h9Fs0;(;XHG^2hSLlT3`PtL40Awn z05YG6f#DvsEIG=+!0?ZefgzOJEq~CW&sof-;hylgo43Iq~F#TW7LiB$DHGCNu7+9g|U=+wM7#l=`)>eSTK=}y7XE+DZ&u|XR zV>kew#D}m!B)a{eH37)_4?x$W9{^9%F))Y-fpj4-G{kG8XgX#YP)&B#kAKgB5K4>iivi%HV(0mK( zD1g?TfHwNTU61J>(AX!)Oql%*(DI=`8DuI00|$7K2EqX3IRlU=Xl@Lm62wDbnEo3G gAutPFEr<`Z8>|3Ic&LD67#PB!d>920h4B~|0R1MZ{Qv*} literal 0 HcmV?d00001 diff --git a/pkgs/stdenv/linux/bootstrap/x86_64/cp b/pkgs/stdenv/linux/bootstrap/x86_64/cp index b563278f9a626de7fe014f6ef2eff85d076e6a0a..397b1e898097c6b7e58d5ee2170a9dbde3cc9dd2 100755 GIT binary patch delta 33018 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 diff --git a/pkgs/stdenv/linux/bootstrap/x86_64/curl.bz2 b/pkgs/stdenv/linux/bootstrap/x86_64/curl.bz2 index a4051323193cbb9abf8333daf9b18f7ebb1a41d5..8e40942bcfe18d282c5670fe40a50556169b8ebc 100755 GIT binary patch literal 119172 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 literal 152587 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

|_$acSqq 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

sI( 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 X*v!85#{B=?JC){Wc*x2J8#Vv{VelGb diff --git a/pkgs/stdenv/linux/bootstrap/x86_64/default.nix b/pkgs/stdenv/linux/bootstrap/x86_64/default.nix index f43fa42682b..0608fc4002e 100644 --- a/pkgs/stdenv/linux/bootstrap/x86_64/default.nix +++ b/pkgs/stdenv/linux/bootstrap/x86_64/default.nix @@ -1,27 +1,27 @@ { bash = ./bash; - bunzip2 = ./bunzip2; + bzip2 = ./bzip2; cp = ./cp; curl = ./curl.bz2; tar = ./tar.bz2; - staticToolsURL = { - url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/x86_64/r6905/static-tools.tar.bz2; - sha1 = "5467de09c91f0a9bf511a9d476547e10b9f067fb"; - }; - binutilsURL = { url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/x86_64/r6905/binutils.tar.bz2; - sha1 = "739623c8be225224ed57a76c5f483d5e373fdae8"; + sha1 = "9ac95e34c96c19cd0b925af46c97c9979becaaca"; }; gccURL = { url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/x86_64/r6905/gcc.tar.bz2; - sha1 = "b4bb2b2863d7b368c7c32e789d6877e5b5a97637"; + sha1 = "e8cb32425c8f55833ca081bd74668a029bdf1755"; }; glibcURL = { url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/x86_64/r6905/glibc.tar.bz2; - sha1 = "f0a5e1a224931f59267975a51d4e9c20e6cb3ae8"; + sha1 = "74b1698a4595ce4b4f43a33b3ceca1e4459e494e"; + }; + + staticToolsURL = { + url = http://nix.cs.uu.nl/dist/tarballs/stdenv-linux/x86_64/r6905/static-tools.tar.bz2; + sha1 = "4da3af92c9bcd8fc43b31934d8429412e209741b"; }; } diff --git a/pkgs/stdenv/linux/bootstrap/x86_64/tar.bz2 b/pkgs/stdenv/linux/bootstrap/x86_64/tar.bz2 index c28307335dd6f07c1d08d1a36723038f1e30758f..94b2bacdb9d80daaa4ca96674b1ada3c9d96ce9a 100755 GIT binary patch literal 431598 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 *};r9#9SY+@yz2HfGM1JYrHJPg> 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 z%0DAdU)iC2HbbxZ{hzBfPn^D%wkDse-TWg$L-}YgQycRpZF{Mj$sEFO>T{jjxb%4+ z{h!tQIBJ(u!0(<7uWo#GyM1`3e5K;8O6IF4-&WZ6DIDUgjplSntm;(>|D@o&EbWNs z#GA~@cXO?Mw?^BmX%s5?dd}dO{_Muj*xek$JOccZ8M6zGHP1b?m#${lFTOpqvO;a% zo(z-2A;(HQ)?fP1s%3wrDJgaF`$uzq?zU|DcWyS9u==gD_x$sop734KoptHZ#nKQy z(zT+1mnTmbxyUhh%|0e{@kh+|$KOqE85nJe zURkn6Slai51|N68-i8YcZg1vy588ce{i?$e*Y5m#`psh5&a=D1&$r7(Doc2Z8E{N& zzk5o1@3iUPEkiozZfCoxaa6FCtx+Y`(7?$kA@JSf59vSUcIz6b>{;+7;pXFcv&+v< z{J^jLD`9clgJ1Xiw|uiUyZZi}VL>1>)2x*ZOlOq2wZ3@-Cj3!b5iEDnb$M8S)tk`I zb%Ce+|0c|3Vo8w8|N2sRj+0^g4z0d>&$*tTi*Ne6`A?Z#Q{BbJA3QfFgsz!qyNh*? z%S2t~GR}|6)v4QrSIVe9$aekP@v?o@r`wO8%;s1n{4#b|HizB4YwRC>t*BYXxU72p zfzA6)WWI5m64_BNJ7doN-|>q*f2OAdxH;$l&9Pjq)NZ29_lfO|n~h1#q#GCJU6c5_ zlK({89shEff4e3h>g}kwP`ZF!a`MG=lXs6!PUqR5nazLBsMdKR`~NQaTMn-huW#i^ zDE<(U+5TTee^SezbKlB~Hr$O|vVPj z)FBj99QbUevhgLS=x36~tX7)WuH?sMS{Bw-{Fb@i_{F*^_h)oO_>7}UZ6*N;2PNG) z4m-^Ix9;MtQ=9kc7Y3LLl5SmEALS}`_1p1|KmV61 z)*epU@jArc!14NpUY;W|Ie~6lBm{p}UE1RATd{GbgqeuUH7--#tn#Z}7yag(*%E$t zYy6u%JFkbt2yJ?s{%*qMKiBhv8iR^u4|DS+&D!GJcvObxo7EnBzlsTd%QtT?ZfHr! zoqGG_yRxZ~n?CFaUzd7y{VuKFynDHCY>jGMy0dcT-04R+w@z5XGttQ5WL4~3lXYiH zb8I3fRiEH&k=MM-#~jxtZW(zjBlfAOXOz#yvpgN%M;>Twz7Uh=UzVwqVJ* zRaH55N^U=ZQ;cgOD+c`Rh~5LT6m)FHG8zi zC!On=QD=G%9NnAf?p7~yWNX;8i@(hGSkGR{eA2)*iS1|G)Zdde8--enTZ@>N?G2Cp z`zPs25aMWmK|U+}?IZ>Vl=|HaXA?{xKFBN;4MUw>5b9MgLwxw=-m2Lms^3MC$&-fX4KD1ru?mkQ7`^%|& z78WxY$f%_#oIcP{{h80}vq+IFL($yne-0k3XWJ0*c-q7CrLwU`bGCik%9A76$5I~8 zX8!JNMX%!B`YkI@+;uG2x`3m=h@E$H@!8E4bE_*2?reF#y}H5X!3V>LL#H_^@9g}W zrdwlB_c+FEcF4bQhODflUEP6eKil4RzffkfXEP6f-}~bdrQd_D_yr+_bHr~IJ9XhE}n63ErvX)26_qMpbos>DzDYI+& zmc!G?cMr0MX>86tsAhkYjh)_HIFckSMN9dcn3YvNyT+Q9o?`{<1G>laL z=QG-3-|h@y+lo zQ`#CcL;;*iDPWL1&sd$9(ZNfJj3$n!E?q{*VjMYag!%*it#P!k27xZl@~bu zU6zuh`S!idSs|Ob^48Z=uXc1~A6nq4w7gbi>k97Ifp-t)M7C*5GUd83Htn|A+!t;c z>iDVZ=8ux+^H;w8#rL>+s=(i32btdt_iWyBGylsl+4SPtx7`uHs@L1TeWTs{#~_fs znzcf`dF}M($&1}w&68$0tJLVfs++p*D9=TQcM6~UrphJs307Wm%DV7t)%m7{Eul{w zw#;t{$#U}kE}0y!`&zz0{!N=Ad(#n#*OO%m-OAOzG0)uUcp!}_G(2))$%D6vnP*Fw zvs*U(nVhc16zsX}h=W|nBA$c|PmC5csR)|RvHQqn1c>d8Z!66)&pvPa_s^RrCbid3yB$+)IpySQxUtu;cjkK^y6p3(30iZ;;DQ%MdAn8GlnU1t83BNti@$r#BP7&d;k`SEgl`0+==vqk3IJj<1^ zmh&&4dBv9>FAs#Mo!peJn|M9zz-8vV{kLyK{^npa;Nv@W{^agiRub_y?nb+EvQF~9 z`Y&C~^|IN_cZ@Bz2kyk)PrXv`s=#D*pkwg==L<3%{h9^N%eTzn|iU*H!hl-rJ`wy84^v>+TC3 z2V8u4ttItjD{9(3KiyZGqu{@*b_wtOx#_*_Wp~oUS-Tb)`)G^$iYLzOby@!3hFKut zb=|qMIR^}XYSi7YmEbSg6)yPjsFO20+e@Lk*DRBtB{2WpQ<`%7hC@=KNRN-)qo_|) zTX+msANcnr=z`GsvkUFb_`YbF9bsL1cTLx$1Xn5cxVW3kJGXp_%X)wC%h6>UU*@$g zoGzIl_1Mi#BXgNToruQfGXLO|(0doJ&&WtGxN_^Dljg^p6;e`m@6VflzW<^4QKp1U zw8Y%jMNCbp+F!0{&S&OP5_B`3H|M+k`5WiG_wL_u{rUGbet%bW3%Rf_I8)EQw|w%< z1M$Ja+Ga{2c3ZhD-xqJ(XSZ+m>|OkKo)m9Q;Zs=6UVn4iid*RQL)rT>uS$)SyGOh$xtoYaBb=EWBvK(*iZVN+?HzJef zL>hAm?|Q9J;vdNO-!8uP`stYmToQEJSGWDC<-2jXkbjGpHtX%)9VVWeBwBu6DeN>@ zAd|4IZ}#u%yU{62Pp?lqc%d<)qGors{Pcq7n?L9R5+nfCo}jHb=mH@CO>@Z#;(Yj5$tu`&O3|I~2_-~EXeD>hCRe5ZCSaFucOdrfu8 z#oM!T75Sh1>cJM;7XHlDa{?Qm-sC%YSfDQ2vG(J^8$JBrZ8dAw#HN_ZKkHu49>skvjPF~QK}Vp>t!o=6 znWf#W^X+!sBVzK==B(P;qc$1+FOP5^egB{`I^fwlMki32g_o6%A*o=>7bE{!Fd$>FF99BBvdQw2heHb#~T)h`Gm8%iZR)Z@k=AlqMM?&b%tfA}qGJ?q-{VxG15 zv}%b3VSBHx{d;9mq}vVSAAf3o|4TS-#$%>6;q;&pK1N==6`1 zSHI9GH7>8Xx8~YX*RBOe-ReIr2z~tIHnt;j!hv^|d z&qW_N?_jib?g9fJrHE#R69!JI=eBhG_J}yKV0oj!y~FZ~>t~(ikyul7HMH}M<^Ahn z6Q5r9Tec}v@xKt;w%bZ#H$%!@T#kF4HUCnjIOX`kR2IhgF17M-HrbP2)xpmDQ>_%= z^|Y!Lo^uWP5VYOyI4{R4k0dS@u0u>GIW#MbpZ)YL`t{X{c{Hw`N+XQ!ranD`We~ zW-a}5v1;kk|qH*d3N2FEfFmd&u&=W-MUFfQv9dR(@9OUx4Gq*g)RKN?##^m?%IrG zxxFiwOJa)j>Qs>_SLrj?!x`fMO_wvxAc6$g)q%FYZDbMzAK8T-DUb#M|- zk6p1Cn^p3g7dky_Hc(O!Huyztqio zxw`a(AY}!?*|L$RH)KEb2r+u1Vr=u>uSr3JV}<_GyPsz+WHNF}>p!%bF*W_$Qe`oA z``xF%MI>80WWKPWVRfER#;L#T+?VXst2Y)jmp#}g`AFd5Y=MZF_sL0{&sYDxcsaYDXFjXin@I^LmThV+R9JGX&dkI2^8Hr{wvw;* zMqkdmbo#~ZuR3pyD<=1rCH6eOoWnYM+6MdNX{D-Hy5kgnVZam^LEnKRyUKXsk%IVUsz$)aBESx4*CHD++6H_+hmn z(mK+Nlhw1waB7dwhYLq|Z|z(A|HIjnyxyGYA}cn$z4~;DA@8@aTj#obgoqZZ^xG6N}yTP9!HB<5D^hA~Gl6XF{@|^Yqxy z_0zw~zsM4}+w$YE$i}xCLF|oMN%@cVrLmo_@sOPUBWI3*{n9%HRZ^UvZGZDK>AdJZ zH;s$;rHN|Si^$|>)xWzsw=f-FIjN9W{83EZw)S0T*-uLCT%)h=+T_%$tlaQzzmUJm z^_3Z0r@2TdiJsY8`Jb(GH|LDKf2?PIf3Br-ziXZ~|1UG0%U5=`-PH7q;E1{Cnp@{H zdHa&Ch?&yu#pze~9o)$Fey?+Kak$EgMd!8Mq}P~wM7+mKQHeb08*32Q_i z%{>3S%q)G|SNqj#Wm?wktxr51t?u~CU2a+M*J-{xFLf?C7;dM2@?z52we4DdK99TW z>SpZy&HCiA`R;$e_0JoaE(w`%qU%xCtqV*w?s9u4d5Vbq<25fzWcu)nt=vIqx4Jos~`6 zC)Q6%pRoFK;)MyEzIPRKZtb4e^vUa`k^JX>XEWqCpH7~1;oXDpo6qj*$?eaWzxRNv z-MI%{SuEtz{y`ogX`=g*w1-W|oo=Tfx6M>6&G1|=_E(Ii86v89auEBCXqyBU^T z;$E97>lWJmc1HJ1-NdXl7kl@-d8hRL%RaWsUvU@pexLGR^~!8sTzSI9X{nn+47Yul zc$(?JE~B=Z9L{ahF(G9srp`HykxXf4Z>hvu{`OWeQAk^3C^(tzX=Cec<}2s*q;AcU zWD03?X^2V_Qt~<7tT|1`KI5+8{_L7MTmJn^o=)#u_5J0Gg=g)IJU4G>T%x#tQfuM~ z=eOGyFwIJJ`DMH0Jh$5Ifc_P@0;)QNq)O|JOd=xw95V z|KYKTT*>3NeL+`Rx5C!|gK3xFuVfbftoQre8Xi9(&)wXc{za?I&T6#cJ2`E#z{=Tw z*_`y>efYrkv}4PrYaa4`^B)&)S~<;St7xn1Bl8WVQ<}H6bN1ML-+gKMh0^$lc0(WG zSCL#z2Uz4+b{*OfaI42rOX0ReQ^%&M(^kCqn(L7n=@jv+QAcyWcPnc`_x7}u<}Fue ziC*$?+8}XD^vW^`5y5VWj*j|djpB}gge8|#m$H>T4~zJBWP9?@mlF&Uj^ADCIbS%u zUGjj?k|sxs4)w#U>yj7m-W@z`siWMK8$v=`V{QuH_^7ZU^=P4oNbt>|Q*Gjh%WiW` zW=>I;ERg=anlJC#G>uQYm(?@)IY}rKoSiVa&glYoE5iZFCbrahi&cdreI}}|VLPyC z!_v!fT&CeXq7sw8O_mRTbXC$!@2;jG_qh|dBejY=OgAM-9R6~0+rp4Fy2tiTif1Wa z>v3sENm4w!*XD2k3m+F(+An;&)^T?0;RENN-KdUzd^de^J)iUby;G;II2%*8>DZ0g zu}jZNF}irX*zn^Fua)O=HtyYqwko@WHeKsUYk#nO&18r6-~D%f{%4-nw@kLPga6Ji zi=5K8MdsD5sSf`o8^2|Ckeay8?h)c$)xoK#~n|12I^$+@KWtZn)&0_c8p`yVvA(6vYQ~lhT zto}K*CQ`md&Bh7W8eAV1D_b=agRAtz6C2O* zxFnvKS9z^YzfD%Y_tN(R5`G5+jkmmgoSv}ZRXek-w~pZN3+CxX>%L1QtS)L#-&LRd z|Bl(?FF}G60zSWuJmoxZ?&hxeMb?S)A8wizd;CCFm)48k4Dn@dKc^Ho^1pHFSi__t z=&?rO_T@|KblyGN{QUOW;;s|Q9!oWPS(W%UBxuBM{%>98)3{khjk7UM)&G)jki*tk z&45fMB{h+NGOPY0*81Y}8JF%_&&zObnqB+9+j{a&b>-#uQSUM~-F=tn>NsVicHM4O zYkueyV!K zQ%wF!YT?8XE!mxIsv9|E8sD71_U6>IoE(mCf1d1lY1h6XmL+ojIjQ9z9PAb)oY<|C zF(vlzZWs2?GWL31rMFf5OH$^a%Qe4mpFVrXr|B}BfsY(I+B(uDY=0ztzVylQiAG+H zXz{s;PTyGTR^=xw)7!b@zH4sLm5rgB)_=ALUKsWuB;Qv;|IvT-|IxRPK5U=Bujg$4 z`|k7ptw%ir-pd@CuGxDwN+$h-d|$BdFUO6>rZ=u^*vYSc@52PwkCWe*Ge2`Fn(-|A z-0oVnirl+;T+hVJ-nTDat$IIa)dRiHu4SC;?iQAk51Q09BcnL|m;c*bGMo94kGqw@ zk0PH-{M#pO7RYlD;+xne@K8rR@b3}!XOq`2zxv#{P*YBa-6H2kZ-@5Tyo3FpuFtP1 ze^xyGLY5`>gJK`U6VKT-l;`e@vSNQ%^p*8xfLfFhV^8MSs(Ib3zqqXHW8(YTUUH31 zikG)JS@+Ppv^nvMefcdL4ru=2Yj^Tts0-@#^^IEh`khHG^JNaH`_ts6C!4%%_P#uC zL9)w9w|{jH=kPMNy(;Xm=Mq)nWOEXo*558MZ}yu9+3FWR-=A*zH)!j+wRh~cKa1AT zN&03T;kfF>_v>Dc?;Qnho|tq^K~uA8Rkd)yDK6X7H}3532q|3G9d;$z@$2**3VXG# z@7UNa658r9VV%I=%*qfxfhCGnE;W;D2b-WGQ#U z-&=Gu_RchWuro#Fnd0^Ed{wR%K^r!)tIt1g()p_Jul(SQd!{UY4kzDfx4h_Dy=4)j zv90pmCkBxpvTbJFSn#c42D{OcUlD~1)-+CHO+5Et&+OLy2C>E`54c>L)16^<^PKUt z|LRW)-p|NAqI;mvt{r z5%6lgQKQATd%Im?wDo4@&aqGNR5&$Zir(r?x918jWZ~WLGIo7HUYVHXZV~Z9;V%)& z%R4SM{D@Qk{5pB&ra0A^(}Qn+)Vp+QX7;?$y)@TNFq3KP(FYv#f8 zD`S@3p0jQekKvx{AMEo_{BMsx_+ppd?C9NpWK*@<8IQ^fPH=8@>oW1WRH9M;{@%$t z_f=iXI{R8W7c8y%UbknvPtS({Syqkzw(?sxMVK*%OzC5ur1QAlc%QJRfCN)Z1E;Ch z9F2uJ4@~a5>^pqnPh9Y0<^OwRR(Pzr!C}>2d1K|dL#ricUS|{LIk3UKGdG&;k-XsD zhpLtZza$U7lro=wWyiZqYLm8C2jxxnu==XzJeeo3i+hhhSBUzG!i|$c9G4l+Vqcmb zJnwh+&DJipn4KM+6VD`GZV@%VR&HgzDBSUMxZCEJnk(jMo6K-DH!rX}J6?UsGL2X=i^`1B^a$6%YG+e1T%G;{t__IwAXacpg3*ttz* zwtkA?_ABoyZrJBf|2=nEzUl9|pPCZ$pBy^o*&*&K6>22HQ+9VZ(_Z&Wy9`zs@vQq$ zeqXUg(ZI;^_bRqTvz|~zMTfJApWaGj-qPRwQD@AZ9<&d(Ps9G@lCuzT}#wy!rNn3yix8g8(d5h%7v^>}7?$)D71()s6K?wr)v z-2VKjG_OcT?)H}S+NzaHYB(JGX3orMR?bm))v#4#vcVE@L%TB7y4B6Ow|t~3XDvSU zy2*0ar5lQ72fqfInabAf?@)Nd?|x%?>gjIHgY06q92e2j4=a{NIWpHgkJfs`sk<}mu*r$~+q+Ih ztmKh>^dw(vbwtC{8H?PUl55x*tP@{4sjux4d7t94$Nxx0^^$sL`;Gt4^8Tp$TsY7C zn6Rbv-#<S5SE7_Rdrc73Rt`*by?&Evv3TTaBf}?!*}-civnp2| znr+3Kx8Ag|cb@V5*2cK7IE(jBT7oM2IxZ##n(3VEZAnxR6Lg-mCz->2=>=0%Uzsxf+bc? zu35a2Z~xBgpLXrtxZ}hVtFQZH9v^3WdS#VM=mFxkMOwE1e)V#tT;w&a)nc;VR|1VDzkF;K`K3;~$zMn`k#m=mPR+qS z<_Y&T>3)K=CkZnn#T^R^}4Iw?M-QFynVj}D`r-1YXXXA_zX zK4`4Bc2NHG(y#u~{Cef9?Y6xa0={qx$!-!b-__+m{nKT^%QbKRKl61n6m{iiU3C20 zw!fez^Drz;QMPVtM>a`X9{daWut=EBj3KXtC8 zh`JSPG3R+QTL>sUlMUs)v*f((6v0G~&z27?EVS-EIWAmz=+?dUzP;;%^VAzB9ClK3 z$agbe?WbYU%O;zxaXBfMbLK+*(;xRgwbMF#zUO4@W5YA{62)BG6N@u))Se11x!XK# zlM0(MPjc4Dz_0}!$_g7qC3IX2CoP`BHMdQ5m0VTC{BZB@#x-9qpL_m%Pv*VXnzJ;y zC!Gjs3F2ldGh5xz5O_}2Rzy7^je z>RFkcmP=eOnmai2_z7?PoU{7S^=X+7MahdE9I~+8f9R_SkMrJd27h)dE}7`jBiBig9GjK|CMa{A&}mrmerrRA(xMhoVMd{Tw#!#+|9v(yeX%S% z;Mj-hZ`S%e&r5SQI^qz?8KlAA9r>$wpL4V1^{B#Wy35`iOwykIwQvhtLQCYlxzhKa zFDSaJlUuiL>+$#XWz`uIc{6wto(inkC?GM>Q&J$RrK#b&T$^Xcz2b?<@-x1a`Eq0! ze>d_I5_@&t-BjvkpG@ht3y;d9gv#%-L>w+W+NjgJjmL9iPsR5i9(Vp;ojF(AeNNA{ z=Yl+G5;FPEOWV!PF-|jkeQ9B!r$FVGa-RwB`c8yQo%-s^lexDVa*TX$o_KU9+T0Z$FAE?W4J1%btQ;3g-dCINS6lVT><-q$E=*oT)UWBo&VoU zixQKq-}8F;*-f$?Rrh}tu77ZOHow}Mxjqv;IJ!+#9U=l3D+W1+xhiUD2>fSO2w^$* z)tX01u(xSX^_haqYl2<r6~)Vp#6yWcve~shu$gC-_utD3~$*QRVKLS7j3;7cs!AXG zFZahk@3uWf!pTPu+&tNR>&QmlIjby;1p8{-j#w!C^3(R1T+L-?{O;af-3e`dk=9{cW{gc;w_wD#|MNi_lf{7-NR((pA@yT5YGu9e8@wl*N^i*z>?eAZ6 z_?g)6UeiDGKKal1a#FvY_wQW`^R#*Mc}+7o|NOAs7prENqVF8}mZ$CJCxbN~ZwZ%e zu-$QSWrp$gYmra?r!9y&bnT~r%x}+>pP}k~yvnar`WN1Kx5RAcf?I|MfpnVfTWem!Fy$C@+KPAhtD``ZLe|&D)NTPC~AXk~0_a&Dz3$#43^V_^QN{Rhv!(PyhH=v&w4T zS#Qs$_?ut>_+UjUNna7*dKw0wzRU%2k(r zouhdtvF+qXo4Wmqx9pAr$>Y@HX! z;JwG*_+M;zs-oG8T*GCT*=F<4{u%y4f@jLIshR#;e;` zMYb6KmU>>|_bTMme>s(p_3ezyFSyB9-}@`~=Q&&5{Qei;X7J|ncK%BC zZ@2!bdm6r(?|l_m!(abqe)G1)-?ndi=6vP5R2t*5&A~d6P7n8X@33=kyK_v{>+Tfu z*CGWjbFXdFKR4sL!lZ`|DiSU;+S~$npX)W9#uJcMu4KU}^!)l!l^IXJ*YD$LyXg5X zPHx_@+D%<66SHL%a=-sGxN-A?z1g{~Rew)qw3*GaT4{Or;t|`wvvzch2x z_uZ`}FB}W%cO8B^bCWdZ_McPUzFBtWUjB>34!+e(l)gDUXAL<$z4_z(5)Oq)O^@`H zmtDQbGShRa;zEsyHz$-_Tq4xw({WzP^&%UGS_)I&zLKgx@@w9IPi#Dxa`RDoQOSvW z9x{gZKN_OSQ=He|nG@es-=Y1o_+{pU1)nN!U3-)ATJFkekGEyk`^r!L=iheaT9Wg} z57{cmn9uSY>oq)Z?)V40<$p8cIIc<=@Wi_D8SeRifA4b3kJi#hB-q%vZMvs$^|E9r z9J$C7vo_8=KRQ5r#!ll0C)n>B)qeMXmcjZ+NRfZ~%Y;bAHsgCbK&dZEnx(x~K1{NozX(^5%-` zVK44^<=mBZU%S2MCy&+^#rkIEoE3?63Z~lcUq5^raq*YuV&D6oQ&-&%xR%^eIWxjn zzw5Bn?5NB}x6G;9j0p?Y1uc}Gsm;GVLF(9~C9Al6H2%K`GbuVNcXZlIhu&#xG9ng7 zB?npRe^EDivdQ*zr9x<~o!t(#>6PKrD};w#A2J&&~` zPBg?P@$Zy|(t54)zh_AAF=b5rf6=&Zrj3@Z$Hy$6REJlItF!7|`Co1p_tCJF z^qwyhdZ%soaXgk-99dDHe>s59?AzK!U$-BbmgD;GOJ!kwl)CttfOiMC&sb}vvFE&S z`K1kS9EIc!&d;q}ZWnLZ7FB-mA+N!cuj=kP`=Y8QT5j$Z*ZH{c*74-4kFyrFOt{gw zOjOK3P36qOpS&pnN9J}0g*h!#|D(gJwl%Bn{EHkOhkv`(-%Cg@e;b@~;DsGx?P^#`blENwaq;IpUXU?kN*0Yzxb%?_k-)2uP}4OoPI7F<@O`V_RL|4 z`^@aVXs`b>eM7dq>TS*DS3ZG{iYGANJ@~Rf z%V5T5&HAi7hs&H=$^2^Ua+-^nkIw(+YT|r#%f`JnH;(o)sMPcS`L|X(_>%j*pq>f+ z=TmHVUn~lpzVoJGNLtHf1{I^^AN7{?&EI~fRP3LBe%YZf>Tgxb_sbqRVs7%#Q~jK% z`m9xp>r&appC34Dy1{Fu;~Ir5YA4$M$9YIsFaP%S zAJ@8{Z&v?amiy+FoO`^}^pHgz`_3--@AvQZ`=4*0FFR41n|a1Ac9F!VV|mw)d4=9} zC&>J~^juNYQZ}H1>&=pyqKAc{_W{~Y_d z;HP}?n-3C}>tFRa_8VR?__%4IU*Uv^^=r-uoH=D=qbIld;k92&_kX-#nOu+-ro<^* zynK@{^Zm4d6Ap)Xc0EbfNG>Yd9W8z2ZQALBCv7e(HSFJS8}G;G;wW|^h2^9}s%n;a z_`YRY-~Yy>?D))c*pbiABf_Xk@4H}E%iE={Vyq@=amAniNX)n$x!_t!kf&5Br$L3K zv{6Dr%|^8=m#1%M{`V-O^pDr_V$DeNS*w?>2XII8__THnLY`x##dU>^Mb(=z)(oMbF z0kc}|+~3@KxvfpiN7Zfj>D4d)>%3xI{kU4f@@%q&B|}TNr^-7Q$DesT#pIaXY=~rGeNoTR4;MdjqAxRt;Y*+&_;+j4e?5X%$eSgDa20qJ%xYv^= z7DqhSn_rPAR_qv~axnxcd!@`V&3q3_VT@T!R4oxYv_Be3mdG(b0Ygf6uI+^htp8n|f zp2`W|bAG?KIdw%e>E^qiJm+(lF1R+^d~wyMGbX2dFU(Asm?`z&f93Oi!MD}ksl9sr>YpjdttBxuY-aeOst$$kQS7Gf&Dvwa&s)ZtH=wdH>)2)tbhcZd0{& za{lp1S1ETZkE5%L%2|q<=2;{wH5k|NcDrQGwR@j@`=gcBKljS>?h*@ZB3;XJ4&1G~ z)V6Jxo%{9LBRa|aZ<>}w>^~aRV0=^3c$?ohot$dtgo~;s%Iy#TuV1F=TV$p5e46PK z$*jiWxgufnCY@Ze#e4em)t*AL@65jY{hG1sW{=lKZZ#7&b#6GEqsOT^t*z;lh-OiA z!a=U7zjF*Na@;FZ)&vH>C_mqFa?R@O+$BH0Z{D1GvsB{)ZL zS%OQ_aOYlbi_$KygN_c-sZtU1vLuvt@^Zwpu`Kt7w;-(P!)E9etuQ;lo`6@`q!}I&64NtDF zof+!9ql^D?mxi2;^_!A6G4FJ>R(%uP=;4rH(eLK}?@RamkNcE;LI2-;i=X1(ub%W4|5W?^XI=l!`*Mo}d6-O1K71GCk>+dT z_ckmtcAb3p$Dg?0eOXDSJE!p-PT=A@l4Nc6aP=j@3hNd@kyAY3bJ`SDHczdvKeu|# z+nNikk7sOn_Q?6^ilAvf{`%_9t=?mM=f{#285W{XoO1jg962lGqgKqo(UX3OY0m@; zuf>ku^WH?(&p91te!JrRo!M*$%#=fd7Oi~x<>jkizaCsr`{t_r@|Ko{+J4(-UpGe= zn55V*zouk(`U8SpW{ByxN+fN^R(Mlzoe&Wo0omvpC7%$)LgG| z-x@B*`2iViD~@O+E#r~7E1-2hclwtVJrYh1Gc=ORx{fdCoPW*7C~52bu9vSf&F+ZV zyE-jceCFx-mQbSh;tY1Pn^E*)nOoF zx9xJG^+~_=$3A6cTzEgp|JtGnPY=2&HU_$J9TYTp6YqT>ys2t;m<;2c>YP32mo5)i zHSSbWVk?U})YB2rP?e;?>*Vp``iD(>A6@wv6ui|cxOwk7wWsoY(Z9vo9_(b|F!^@x zpVj?|J&_g(6j69+M`Du;qwO zzG&9=bISG0^R_hpzuRdox@UX;4Go+Va} zza6{vw$Eq%gL#Io@e)s8grAxjSID#I!StWkbz2Jlq&m8?oDQ*ezB}V*eJSG%!|%c- zSEqWNmF#wKTUu<-ns>E&*{7*7KUT+oJ(_a-dQ7k3RfV_pLb?3UkF_xNUtD?Kvz?Rw z>%JCoWf!MV#gdP6EBg-2`prHor}V)k%ezagmbHd>3g!B-omO;MQ-m&~cs z+7;dNSHIxcBCg$8`5|p~-kT|MjF zR@ElU%+njp)$ry2(=9JDSgl?u)hTPPTv*G~8+FFm^KT!+zDK#?IXgIixxF(m>ABM* zqA30TK+N`CKBwpXJrmpW^1+!yQ!>;}vdrsCp6J4nddQ*JaJyQ9_eF_SC;EJ5I0awx zP}TVU2xi=2)b6bFVLelPdsT<~p2!~FSoH~069i4>C-PLa zMmMtW$bYfolaWtk)@qBLJg%2szM3&5;+6kWQSrlu`kNddKAQP`x4^#pdplYJ7bZ%m z^{aA=3#UIS$~2ii--lG+o&Qw}X5CFSJN0n&Nx? zx5<@{Z`&jttb@cSR%|$_Aa{4h3#YBCpT%Ea6sh0C^K) zv5YxMU3KOwW*8*4-;veq`6r*NU%&raeRmtjoA-TpUU2>Bo7V7e_BBne`$ZcQOFqf4 z^iJ#QwET1H^=p5%w!m4;%YR4gG^!~H+awiu>CJPV*=?Dw8M$x!ccjgq`@W9(ZAEjKCX*vlr#Te^8F zJHE_XT6F2iamCpu+kQUHd!ACR!IWAz`T1(6nD89AhCWN_bON7sPsD$ z7u>|(R_x0*>GHq(zkj~AJGwqI%$Z9sXMcF9Z%2C6N)a3J@?A4t>0~{6a4z%8&m*(5 z`*_Y>-s9jiukpmgX_XuvcjJ^yF2q(_pWv2Sb>KmxfQrO%yJzlo`^z7$JC_uv^E=aQ zEl=3)Ke^uF3A^4(hZxSwcQ!w5ojggq;CeUzu8(4?u4ml*)YiW8XJEt zdXn^RMghYo8CRRt+!NW4oXhGuCVgei%WK}2vWuVR=2W|ux1^;C{#mtTYCyw@pQ>B# ze|`G?*Ke!FoY1&0M=B>3YI3#6W?m^dsq*xMhI3q$-`}93m7-ap|9UqrtB zt?=cKn)CO0U(~$ozhbCscz);kKXvgwRw?)V)n5w=aLE|!Irw#I9(bxzE`56jpX$lm zg6j^RT*&9R(#wLa=F1+9zK2o!CQqLJ=AhWaD>X`5oI4XFex9=Xa{bP{nN6pfTGq=( zZ}`ve_2T#c^>>#{ZFunZ?bK(UoeSK8uWDwVe{b@sQt*faPfOt2h|e-h+ZDw^WOv;> zE4{2ae??;DB)tIFV;;}`tldB9*R=zhcVBS2$=nnQzLnztFYM#C&ffYTXV?~k zw^S=?TbE@1_p_2E5~f1%uN(OjPk)9veThgj!GEeNsR zB>3dcWd0+U;zE-&<`+c$v)j!2z4LdCrHN6G$gGP=i&=yv#Wa&y@=sbO&c11IIH!D5 zm%$vPOlIAd#S#ruGhM8A%UrP*_f`u({b=82lhxvfZY`Sr=|j{574fSFZb)kQv*avY ztfX^ocI?`a%YmvQVK?JqPJcF3X-tw0zsLRgBLDwWd-9{DW`6l6#j=P0RZHqi>*m+h z_0myOFAIEmHdX!IuJg09rKBtBytv;Ngg&yq{9dzo3PWgD{q4%0&AO$kcS8gZDS6~y z3Tsa)s@6YrCFA=7P7QY(a|7#Jdp-51RoU*X?~Ykndwb`H+LkX_N$uzUo-d6)##Jf2 z)okP2-ElWtJC|;{xIyKnfak7ND<%mmPnfgqt+j7rasN%nro*!iG-+C-X!tc`hkM8} z8l)}OY7D%dmSnK6cb(?G_r~g9)GHQqD>CS$iaCWeSW2F#P>i}e_jT5ER+rx^acsEbWAJgOiHgOVGp2n?dp{K4_!ufNBdJ{Re!AcZ zZ_mE1ZL<_NPcANV^Luu%{6=Z%|HT|@Y?B)F!)MpYS_g-2{T_emWKZI6mj8+8QZ*l* znZb8j|A(ZfP)vEkG0zj-`MpbgwHc6dz&t|cN zc<}rcuK$zlv_xR;|3#ZUxgTs@CvcQ^s>Dn|J(c%f90hk=dCyFhXWsWpV*cKb6YAE~ zi*&7#IR4~6_o2IGlADUNJ@zKp1PW!ix?YR@Vlj`s_~X7Pah{IQWuPcwEO)r zVb3S!GVUvS`K@EmeD#0g7yGAH>{tJ;R1}-O;z`-vOK}s||4yB`zDN7bcj4)?jpxoa zU8&Nq`F7vq8LCHYk4#i4v|WGhTgjTrD;st_SCB~m`pIVYt20-k<)nyshqPrg*~izrU`nHCelH z>q6t*Ohv0z-cDZsWq;MzH+5d>fdWglI=%XD-OxQ3ySTP`eplw6pu5w=7hcjn@;l@F zjHr9@GY>z1n^1qPoqumt^#&JBw{xRt~QCzarbOK)HiFN=Jfl`NehqK z_k5BTaGUe7e*0&;?^m8~-v8upflN(goR_Qn&mX_HPrbbV^$9MEq!;YV-rdc8)e!yb zN@n=6#B8hnfCr3$IrR^BFZg(T-TF34R)qV?EX~>7`NwQ) z|LT8HIntHz>e(i7jxXl$!9@a&Dx7Zl@H8l=@P+$$0e(GB?|2@aE34$&e8l6*= zOFq^;y`5Ml-}Z%xac=sCc=e9W;&JxZFCFCPJ))S)bW=cgL!7`jtGdTmqic5QMKf7` zULe6?*&6fQw{7B%=7N9?N4W0ZIx#WMn%BM6e~WhA(rM{a?AZ>#3}g9Gc6&XirALz! zlYvkyw@Ce`-^Tqp{(ZlvWmpO;vYSdvU%&TCId?(O(c@;4Z__!hn_gOB)Q zZNWFw1Eeh0Eaa=cC#bg}Tk&Q7l*_FvpH{v&xxVb@_HA{^J`6hV_vmr3Y+C)hezi2Xgurmo19^UU!^SJRox>m1&_))jr-e_3ndMVF%nueA4^VvNW$lBj5# zv6?lvnPmcNu7}!o*WkUgQscVf7a5nFI>&(n5Fi9SEf=f^Mq+j?GfYgh15@1?KH;%^*GFx5EZW%OE1@(N3YX=vW(>gYdJ ze5S9aa&JETLpX5;r_G$%Gh{3R4m^%uYIAP3cva7YLk5TR(p37*Z;SVP8r(gw|76^x zovWq)_`W>)aMIRBhf>zNCY~burW`oP5fJ=RG3IZu&7qS^f9y+ih_3M^@u}EGxdCP$^QDsN|72<}8 zJD8G=ly*6uym`H`QAPVb%Yyg9;*%I!<}F*{VfIFqU(4?F&dJ*|eptO$PPoROeRx*O z=2OR|Shp`p`L%kLhsQIRo(h|zyEJXVA3+d z(^s<(DjIQ4oHh5@rm067%y%wNF2cb&Jg+|0ua?%h@|Rep84 zY*@1Q-GR^Be&>q*^z~=+ULKLb|NG+2?XTv%DEn~T?G4wYu745xf^L8HVA6PWCjLwG zAAttmpUEHenB(kM#GaZTUpDW@jUytCPv<+;UpSIfk)^81qW*i{ed!t7s!CYC=7wK7i_9A2HmX7`3wnT^u zPhrpM(T~;QKiat|*q}$q^2tF(lP@d!l%o&-O*?(-Z&j#CCaYRs+DxmrmD-8t`xZZ6 zU!l{g`?hJh;fd$=(++M7{?B*6rfH|i{>Xghjd#72d;2XFSM6qg8)o0-G|x(2;>r{M zm+SLC&tzGok&tHC^?CWEuQC(%-?5Wrc_3+!Cc*jJplZJHYm)R{5w$E6L6jvd&T!gxlYKzhz&u8DnIGtc|-GS1Wx(0U@@ zJ)JS~dFs!s%I~G;nZwRHny4r=dY!nsFI;Z9ABUcJ>hcCpC7E|G&+@X&V$+^bKGV5j zrr76+D?WWz_g9zRyzQ0D=a;fok=T$Ts>o(jO`!UCH)$1&AFA~k%bR0&wq4BZ&}hF*V|XyPM1pLOlkUa z+u&4|bA8m6TGKbWij)6Dd+xYX>A&t$Y>jB)*>ek;k4*b@=>F!*+U0f4&(7N%nD?Mo zEU|U=!k=Cp>mp7R3fzC>{`~Ltlb^R`{{46I|EEtWNr&t<2~DvRm)d(TzWi6U#OfcJ z(vLIRcU3YxIQPvw^pJG@o5vC>-}r`{{h`mbx9jbMubDoz$wyzuPCof^iu2_(z8_Ou z_AoXGXKr{`u4Vqq|J2X@8Rz~#YkchbVvFt_1_#O7Kb4#Jm2w@$xu;jiYJXVsZ!RRs@S{cjt6`P$vxmv(mQ6)q5od8JwPonM!y>8EWB z_y6#JQPaG(NjYCCR1==7w4-Z67h8tsu1hCEIt1BX&iH-)^`(YoZro2M&S-g?!7#ijY>g((SaEIK}l@jtq|=YKBLw3=OZ__4L`g7LiBG z9l!pUVqf)SMgBzjZA+ztRz3IZl$n*dU8ds6$J&c10JsB)6SvZK-DdqQqZ z-`Zzd8iI{qgiLxSemPOKx7CK<|DXz&vE!0$bK7_Sd!-#MwR!WLva4$GOg5%lI;Bq= zI64_#68~%TS$@S7tp{tSZ;|{xNw6hNaq0}c)a_26dM+&7`MmgQ;=!dJ%T~-%_G-J(sIW+}{8E_xRb5eU_gj zs-D@u?ukDbxh5#dYrDzvPv@WQns0rs(n{Y_+$i)-(1#r%|L(}~nU-~3k;t}n3#gm@ zb^qVz`>wrLpT7Fpf8Uu+c7oq|e$74`=*q~thFG~1b4|N^$^QC( zcW>$*JT&2`UyVKMk|}e%C2bOvJsCdb+$@Zg_E)Ib9<;o-;4$NjgHMyDb%x(t%>SmD zN#yr5&984ia~%G1=_Rv*jtbj{`Rb^jqUFZI#+EPY)NB6XQn}4r2krv zMvEAxyF6~xl=5D+%tg1Aq1s|;YNJ|OO4wP+#?+(vjt{HVwsSDpGIIVr{^GZJ;xhlM zH6aEL_a85nf2DI}cEXFT0qwn<_cr(_d^0<6Gcm#Rf$vO-fURbY%9&1%>(b{1ozN9v z{aE$>?&teoQfE0t%G}uYaZ>4t+}kr$t4&zuq?w9J=dryFd~XwQZgWCfnrU!bqvL|p zx>x=H$1}|GR6+YVNgL{S19qYP+lr^lEq5 zyX3Tfm4T7VRAGP*Ska^->XS&aS z`QlxrFLJaQj!3rLt2x18YawfpvTnLo^?CV|!Pje6eKK=P+#DF`@G4V$gYzMc5AP(D zFW;Pf?zNFl#LVW)ER2(txnD6ii8$?+Oeog5(Rj+`dkL4x-Mf>V+FNgJihrQ7uF*iz zOguqRF*u*6T|4a{%Vb|WL*^!*#+NN;W+bkQTbu z4?U9*`LyHD{IBinE1wigXzskO8?!UV^w#~<-e9$byDmm+yv(;hTH5p^=t(PgtV!~j zi4`f%>KUCgVrw&swi?-lnRdvUs0P}$YJ7Y1U+mdo-vyQD?CN9LEjz@sTGuUlb~;YC zcB&-L*~Q=DmiZ-ryJEO8@ibrcpZouQ?EE+J=0Eu@Dw8}_oi^WEm!`LKqWzrsF0OzB zOPcsXjhI&X1-xP?65eQ&^~(W1QnJHH#eoxR)A?fsX) zhzYk}$tGPEI9^h0DW>{;H*YChebxzw*llK8SFEvKrE~ON{&L5eLL5)rm*raSUFY*Y z^Nh=%l}pwh+QD(mbmvUxRJ%&2-T(L9RZVf99$;DY{8df8xR6TxsrU$c^Ua?pJ}#NB zeM7&5Z^o9`lZq^*{MqvwN;fSjnHD2_eR;h{eSqflyo%!tkBt3Y`3|b|Y&{lnoOAkw zB^y+HB_>#A@^CPo-FSEPbLXr7EtXFFY1gN2;=D)8*=}{fS-IIOryT0FXsoOVjlUjQ z($v*!C7LQK5WSk`wEc1arSn=Rr~6&(i|f??czWBFv{k41-?L6Lc$G5CwP8by=eE!Z z@v;ITduBU7@v!K#oWJU8h}+>H#yq2w@7CJdhqkHNJaLw|v`fg7vBfl5^WXnD`-AG8 zwr!hcdha!B>kA1@#g+{Zcl}6r6jS`U)PL?K#n#mNyCIcm9KV zkvD|1^eP_sdvci;@%gJyVJm%F>lHoA+1oxxMP;#V^InGD4cwdT**QYFt!l3R`CFF?ZkM zn9W}}&fVw^iBg#4Ebkk6?{0Zfk@H72?-_!dKS-=Odh*ea_p8#<%L0DE~TP z_vD2v5hdjlV@j5Ix=hK?Y;ruWH=9L0em&DnXW1YLL)+laq`P zOzhR-YXeuUo;CS^N~pzOugv1)E#g;_@*hO)kX2tk>({ymZS#G(YL2!XalCv|fsNy6 zl8|H@zqm!6ZP>(&g(mq#%+by&H z#ferro_t{?6mGvh@WLjJkGo1==p;%MUku5=&UUwQ=@W}xTff#O@n}4_ys}|_R{hp1 zC+!~X;gy|}tjs+7zp3(tGfVxLg<4Z4A6Tn5!N!JQy%q(p;5i}E z9TMKr7ShL`7;u77Nx*#lqpQ^=LT`PGl6WrkaCECoFtRVWwR+bp4Tb5hI~8|MoA&;i zZ0w`>s|V+v`6^MBnEj`w?)2YnZvE5K@7?RYe92c|pRh;k zL~35lIDWr~q350b^}-2hlR5J)J4{>mI&bOf{H>pYo@(%&IZ`}ze^2RambLqT|G$%v zzf*#th~dQfg7WzLlfyMDzuBJM#5hypnBi=5&z``$uh*qVq&w{|WMaK-Ys^)~HR0-+ zXEtjye+C$CGMN8GHJ~ZjcB{yp?}5$Lo923KZk@^Q5z1_{$-`8M>3r#SAVDdPo8%qD|h4USHYL=>dclh+1)N(`26?E zdp1)8-*Hqc9a1Vk?IJfjb$goA+DoS^>fgto{Zs$uXN3Uk`VSFoYK%Yn_a{i`G|Dmy z#jQ;12ed?Hnku!C z=SKBeiFTzQKhv3e{q!6yzy z$m}e1J@4~%i{Yu~GTRP*xFvp2{9^5=jjpm%^hBq76_U5RP1=hRmAb@(hCQj#zJN7`opY3 z|KhK?{%$XQQdh2Nu6x*0Hve#}@`mJM>GbV~|4L7q?!0H_dSlz1sWX1Bj}TraQDM01 zu_5oysx1YQZf4v3SQd#M7JB*k>%p(S{?k6Kl4j++8u&w})v|`=^xwQ_hl$P?Il>$~ zBHfrGINar@SEub`Gf&?!cgdmU=}&6qX4I~|(Uq`7Pf6-c0LQQSFFGZ@<-%q-FQ?5B7h5CcNJ^{nKytcOu0-#;9>BGznwRKmWz3bZs2hZkn;fvk} zZ>>w1S*Lq&-re~{tB$g4*dRW$_VV*;(=Xy)QQw~T99?YocOV4+o3^n*}pZ-%K zZRR32UJr$1o2`m}f4Va-WxG{I=uPQ@vtQS3n<$*V`;)$umPvM4S=p^~>(c^DU8=Ub z1QZ?W5SI|1`E*^Bt-=D8&R(}=js8NDH6H7H*ykp-^W-|~2OkT5N(FbvG4ajcxbk)N zx(`0_KRbhS6L(Bs$}1!I-aYCj$FHi#8VM_feXG*nomVh;T7IAVMB<5zeE|&fax!}6 z&zxj>p6}g;Yj(^5_fu@|FD^X%|HJqG7OwAapUSa|hL{!HO<5`Tvc|h<|AfWo{_egn z!ny22+LkES=g($^UcNqSRU4Pggn~N7GkhLjPnz~V$jZsxdFStAv5iSBiVt@enWi+J zTH{>gn9O-<&vi=?QJ$?z-oJ7Kx?8dmUT){Vdhg%kU1_I`A{MM(&eN{{eW%ktnLAp# zHm~+wHM#p=;+5g@Am5*nhg=fP0{U&|S#=$s^K{y~E3qHSt7U@=17}~lP@0`@@qhMg z;nQ6gt$U6oJ@vEFZjAbt*?7oh@3GSk54?iz-uTcKeXr@??CpK}N~}Mk?hBcoxTdD5 z@o#UXQ{;!d#Z!ZApKy9~K2caO^ZB3Sci!oLQ~fyq{XQ*$wk=HaA317d)vImx{dMhj zdeo(#*>mayyw~X*w^VUg>{DjG)wlfjk4cZz*|#r@R8Ha+UT?MJOxyQs)!sX=|M>mM zn0e(TonZahOlhl9hCIK*qEht{tB{sy~#OcSfNVmX~N zgWqJcqf3C-)e@_#Cg+wsXcUx?=#kp8;_Y4gr`vYzk7Il|S!~HS?)uOgXXAOh9G#v{ zsomB!`{&}-cla`jPBkAsVZD3b)274n%kSM%)&J<;`%l^8%KOG;eNS#MpJev@KTVY_ zmyvvGz zYh=tK!+IB~v!?>hANmQrn0o5xw|TKWUZ4K$-|e8mAh)z>_KVcQnZJ)Dm1%L;uPyRq zS6h{@t+~wS1+^21-ZiPs*xVUTzug?qm0w@Xd7So~~ zR}*Gtcb<8DfGJVE;HsCFkjpnqfin_pY%Hs_pR6tsRuO88=nR?A#Ae{Gb>#PikH_mm zx7^g&YCW%i`u=q_2Kzr|+SY#x_gQG`*?xFV%O-yIX})Z4-pfr$5M@c=Z=6)!tNQ=v zIVF~~G&XZ-an^hDbx#|}8C$XM@_G1q+r2*S7Uw&z@`cwn2mgw*@ik^LHj**ye{g@s z=j;b_{wXDd({lI!j{M~-vf6n|b3mGu zeXzY*xqfw#<->DQ*o)BfMz z606-IQmD81|8m*YzG=Puw@h!!aGx@0=8xE{z5GO6Qi>V*ZWKg!?Fa`Ua)?6Uel z_bO2ZhpCmVyLT6C47{-RVA0nS_Y*fgpX}FEZN2~CDtBD4+J~=ub;9b_Gwzqpv2}M9 z*Ysi1;7DTVcyPT|xBO(;rN8`XT2EWfewu0hGOBi`|F+`{?>5=(|0Uc1@h|`7?{?o4 zr8=$%NE-gTp8w*{^7{yTac1Uj3~{OaB~Inv}6sJ&r52 zNvy%(Q1jowm?sYUf`tvHwl<Wg z`NYpD%BQ-|bbeOovso`6zUrq$grQB&ls~ci&F|fQoxrz#>k^)2D?QYnxO%EIO_=-r zeZVp1Tjdrx2UCJFlG+;?-YArB6gbIxhDx~;;KX$5H8uxzJE|~S? z19ygS=DsM|lG{7;eiZP%Ty(Em|Ib?IvmPfusq1cbYi`$=nA7TFD51f#`tPB~1v~DP zo;$;E?WDrBWiPkCHFyhR#fWd$z@P zo-Y64dz*Oq+?A~FcYinZ{@cTK&xVO3$xD{^cE8;;KTh}kPR*^aYu0z} ze^3zMVy`;2|L&Rd->VLP(SKm|Fd$UH=HbF?*VZpw(D2M#lJCr)PY>!2F--LDls{AV z_)Xcr=1T_{JUUE#7=_MUx6|sZ)ZCVtkf1kv%ihq8X!)I{a(B;0J+`}i?DyCk0Mt*<|o>NQDc|+mKk$>3Nl7*`4U?7jE-UTKB@#Olr+{#_rn< zY*Gd*P2NZBQ04mRWS?TGw(`q1qm!p1&wp7{QBi-v_rhT&3$4EedQLuqdB@rBY;X(X zc_IDzqQ{}j4{F@+^yWl7WBsMQDCYjZ|3~;{t^U79Kk$QsN`*HaB6!#Qd_uo-og_#yZ8-)_m0 zc`UkZ!dB&L0n6Y0`(OAhqm*ZX|Ms?DsV6nn-~0&)G1{i=rpo;0|4Wk>GOi(2HR69e zL^bs7OC7y8>14XpUTT+`FD%V6$&2U8l)O7juLN{%+4%0Lq=eWE$((gt-$veab6@I_ zwCR1N)_Q*5pY!M5E?a+!w`KOWNgiiB?xa?87_Pr6q`oAlHQvJ|$9=J0<}_~w=I8Sz z6t1S)Gycq0nD+IdHEYO)=4U0Q2bN!PF_-NYy(RtcR{YJV^LOX#HZ=OIJliNeVcUz= zR^ z$8VOK?rfaUc}O7O6IY3F*4vM#mdIM$cBCl93Y?TkI<#8{>@FS@^|cn`T*TyQk`rSZ_04KS7mm#K3ueJ`N7zW^~xLX7;?1>RH)7G*X`2lkKKH2@%$9w%2!KLGufRO z4<0ULaMn0pi_wIGV-17~GC2LK~Hm#7&WbkM_Cv(^FmGrO5 zU#W+lCfdJC66SioZ*|4`l3LNz+Rg44_C~+_FxN23h5serpN!8@pIetNzkTU;*}K?) z=d*>{i#8a}W0Y!W<1u7CEPkX%&gb(kx7_|8%@4JCg7~;5Y80OS8|V4$!A1L>Y(c*w zx!kWTIp$^5FY{(5kK5vX3)`pINb_Ny<)lK3zmvCWuB)DWH~39Xi>u+>!#THD-mg!&RXls)ji^>=Tnzqg;b*GAO#UTDaSZPM22cFhML ze)YW-U(^16hQfhn!TGXUVY{S#R$XnXNqK4*=(YV|Wyve8?XfH0NgA#>tkz?iv{9tw zjEzgTrp)2JL7TKso$~fN5I())@wTNJn{2Nyt2FQaS$pH=|7^+awvrm>z2-l3edvGv z+uq|s_s&NjyI!QVqUwUq&EK!M*$No0oc@rZfB)#zmx=7ZE!drxOCOD#pAs68uGjLn zDPBu=9q%e9^QP_6>eE(U@;&upi9v5?$=nF{yNmtTa23rpP8CV+R?FU?I+ushi)psu zvh#kXrY6l2+?P%jY9}oE!+yhUTF_0Q)%^G3i>}<`^uBd~;UR0qg~yE7790Nddp>J6 zvm2WslWUXSrYVK}#l8!!-gqhg?N_EdZ|{LRgG$f0AHH(5IIWwlVV5!~uq6NGYNfyT zwX@8B_)QlRHGibnx4-B9ZkEQNydBIIhB?6xnZ6j=e=OFHN<7B8Sc5+x(fdaB>V(w5 z8+^;B|NiJ7_Q&jxQcE(E$Y#D>uNnP%BiP^kEHFto=333Ru+O#h&w*z#&t+EH6tnem zT#2?m`7Zp1e_s99?W^}BTkJcyrQ^)%r902%M$cG#>*dDMGcPu9ZB`6?I`ftS6KA0L z?YI<9J+%!_I`lhEcL@D{Td(=XnBnk^e~o|Zr~a?s_^oEoRllA2QuBD$7hkFW8g*vg z_cr${hcE8=p5wFa^xNL&hE>_dW%qC9Py2uHlE0zH^t$`|W&dj~@Z#ffa&p?aJm7vp zqT<4Zi6(bC%9kmAnb*<$hWYnK#WOto0r}s}cR0^~@-+0s+No2M4qwxY+WP!>Uf7;5 z1+iV8s#W<5zuT1`lui|5T=$UUC8V>6P&NOYFevIRh`GWeFyL$rG8w$<%bJcU^ zxyj8EMvM=hw=UmvUEV@YJyc#d-bv zpW!d|F7f1)DpH%_`9J^b#ma}ZYa^O1j%+wO@9hF*(JN2i9DCIIF_=ebxyH9-)(Pct zofqy^tv2C1mh@Yk>8=8gLr0IB<|Z>C1{Jo`KMJK71q6>|bSM7QQA@qHNMz9-nXMN~ z1;r*c?w6@3{Pou~y|#7tGTKbiUTalb!?6gC@Q={_pKU~rJUs3z*}7V z!EJ6;m4&+NI+y3`<-cYZ*Jx+1R!={yne^|f8}_5HCaXIzBZ{AU^s|J4cX7wTP`9v$YN@A2vR@~^Wu?ls$Q$b9s~ zl*wEc6Bk?FYNw6=b{@YQQj1IW_NS(-*>m~Q&6Kzg-+s)wd2Z_IiFs#! z+IPL5bo$ZJ*(OR8DmeGoX4s^r=S@4yG_CrN>G@R7Q|F6z?o5y1wf!a(Wc^?DX!7^8 zqZ3)q`82JW6sS5&?bD~P=Q@}99Q$AzQ!ez`^-H_^^nYh}Ex9$Ny>qd2(DZp*5;uk9 zy=`Z@<%Z8I}X)GC+41^ONEnU~=sd6sHdp@q~T%=$zr2gH!Ahv+(%8}D9jBZ;M9M&?g3ycZv z4B+kBr)K6Y`m_9gt6IM6oaV^YVn_JB6W+AETgPz5&e=vbz)eY^Oh<2eyg~8KjrLbw zv!sOv&l56Q?LD_@-aT7=DW}q>ze-p5S7%;|F|j^(^pkE1(;8a}*X=$V%rA7+R-B>L<_$x){Qdox=1+9qtMIwxg5!ZNpI^tSPBQ5^!`|3z zqattWbn=UxRBlheM6SozCKhMpZ!0Yg+^>A5=3kzjsL`g$7yo|RC>Fcz_5=G__k!Y^ z?lG@qNz(2N<(&U8%)To4$*leR7Hu*=T<>usC{p~I{pXP1Dqar*% zf4di@U(;r04QTN2{n(=1^>UubdartY+eazs|J#3c{zV_8S()F>n=*FJ5Ir0K_A%!=8%=A~W%+D7vx&3}|TIp&L zXIE{Te-WZ8=RG!ieCHE!Uzyw0fAP;!Kc=GMqVBow*VF#ZaMEUv-xJr@B4)AX;)BkPeB;Jmb zyW0)JzH2Ovk&{rlweHs;g%?LOBbEvFtI8FNOe%Qw`N&ha_ zU|eUlF1j>=Yr{3wY?Y4hw&&BMw!W}=EY9P*+wo=3wBiR!OO7O5OnA$fBd}s-9GjMe z`V-$RD?NX`QhxhiWL?T`b#1;g8H>LAUkVWUWZTri^B~2j%tO(@gr`M%VQN_ZhbhMU zR@M7kKZ%W~6PW4nZHERUSI>;pwU&N%(%hF{L>3GF-dQWAo7MFFMp$lmN7whW`G$wS zRePu0%r1UnxBXYZF_X%CdzI~d);Uw;D}UGdwf4B>T~eL3tMJ$Qw>HHqudNUL>+@}H z@zSGD4i@-WiHI`0@1MF%&b>Ou)~J2Du~(IWmg5^wqsASFBy+O1RBHP?ztnZ|bNvM$ z-}$Ty7d$`lf9r$@0cNM_B-S0xN*;C-vSKUr)S9OLw|}EEwfvTE z8vOd!xbCf5z1!{@NR%re8!dfBt^G$=3Is=fXPs-vKSRUS-MM%zn4M zP`_CGgnew!j_Vhs=Q%WdWMo^yxgxW|_QuJRJ)K9Q*)j|zU$mJSUrt_^qWL*;=DqOx z4d1>#*b)=vY4p``-w%1I_!%{o@Q zw`I;6rhKNPYYvVYPyQ=)Ec!fw{oDsl3HD75v(IJvEa=w#%FUZ`^>2*E{KecmFQ|uq zpFH75G}n`peG0uni^4C;)}7I4T(Qoj-)_+!R^4L$`Q~|j8>TJ^TdeiYc!oyly14AM z+)L^wpRQlN_xkQl%UGnlCUvfVQ_st(RUl&D$gcJz<-VEyoi9SI4oM3E6p?beQkW?&HH;ccb^O1^l1)rPyYHEjmNGr`}Fln8dXh-Z-k$%2oE~u zw0L8L+35|Jn&$}c3SVBD8QI?U+5rW;GXJgr;QEo%8M*k=;wx&XhH3oD*$I=xc7 zYSAZ^aeP-Bx6;v4+jeJF(}Il>vim3OnZqKtVgJ8f6Cz%%3=D3c)hEBcZ}Qo78~14X ziiWFHemJM(u2eSnRkr+D<@%*HVbeaXxt0FwVpA*s7iBgcNq+s`k)IdJu74jm%iDaz zYQA2EzSpIJ4D%bgB%-sw?Voy4p+7f&x3zl0zc;#H9|7tAQqxJ9G#H|UF6jvwB(_hP8@W5zGW6AUDv){-HPWT<)m?coUb(d)C8->Xg z0%x8y9;mKc`n9TuL%-Z=ec*>I<+=a<|2(BLJ@Ub0yJ-H9pSEi(Hl{KpI5a0It=#vo zLORMt|KCmr$N%@|pFjF>bF+l-MVSK)>lQK}6KZCuP2al5a!uhi!-S(e)k=SQGj`?A z)HrhInqk}BdxC|BgKw#qzTbDD@5TY0j&v2Jn+nJNZr6X9d0GA0-Llr@8}}ZG`@6G2 zFLYPgo3_aOht>R%PwSO0zWci_`h(3fU7O`?YJGn$dA>DO@p3!9+>Fs-j^P%wy%U$KzPkKl){93w zpHHYQ&Y0i1kmq8+We%3dMp3gGPB^SSGr{Cz?oq2w$r}voJXQqE5ZuafJp6koE6dy0 zx!N2n9p+}_$pt7e-)nWa7q|1>!i&6#F-_}(o=(u*yG&%t)A;GTrItM1d+yHTOp}tA zr;b_{oSn?)7Tf*5DoO3AVzB0hnzMdv+eG@dh@2E!G_7aLlYN0!^>!0jPcUriS=F)N zd5FpC%Pu{yZ^uk<-T5o*fR@_aD+gam%Uavpw*6;u%+#>1nVVy`lBwoQ_+0(4zAR{$*hsM$106~ep!W#l2m>UXQ9GzK& z8d{f2{(YV=FX7Y5^4I;&qvKy62l=yyT-W|>zxj`GvhJG)W+#6ftGlgxQ2xbvy+XS+I6uL|9>4kg%1%tmdLDXap<$>?{ocPh}KlSSO zEfpN~7cL(xV9xw}@?|uGO^>9(-J8$83DuuzRhS##5%})wwmP5V=d^!x*S)>Du&V6` z?^6A^=XWk2SzmlCTJ$eVldq!Z(#VO$lUvTIth#$jMc7C)Ly5gvsOY(p;R!>ZIRd)& zxy}wJEUx@Y`qcktNsQ1^KK=>o&wgF^RIfw7C_&S!{hr&->M6kjtL17K8g(NhwHEEs z^1Lj6_e=v*06&*B=eIY1bWR2DOAFe5Ws%y1z?aV_H7(p(d}o*HgWG$TJAYC5CU=}) zuKm~CH}zsmGG&g)`tP{wAy>Lk_MN?;mi;oN(?0e|nh$RjUu!qtyk+X6_~S48ixqAj zn=(nD@#_!E$w%MVx``iLda~)*hSU{_wIz4t4#;bqSSfjlLH0?KqyHSIwpZ70$TqQm z7QMNA^V#<|itXyQUv*o5VA~xxzx=jXo6Emtzl3--a+uz?{H56N>55Ag-{d9B hq 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 literal 425936 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�(rbQa(;waTdmyX)zx<=U|5vMfwR0!c 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 p zf5-0+t<~k<->b-2@o#c4mDc=%Hu7~hsy2{A# zJD5Fq>TmHh@tly-v*+hJfA5UHRNe8F+fDxPvBivHjCBcKvAs70ygWZ{afxUDc17b^ za!?GH5wjonx}YblH9hH0j6ZIt`vfG-RuAjsIeOwl%--<)n1lS=8~W!9{yW1`X><17 zcK`E_K7Oz3e_yA6JDc^7K!T8h#PPQk?Z$rj_a7fU^vT}%YD{ZKdeRZ;DN2v;R`q*M zdhH;S>vTiGNOjw}SBIuc@F;(uzFtoLe8Z0~f6XTs`0kYaDz1HM>CPEmtnWHzs4U{> zsK0wUC{#lBV2+}FEBlS?{PJt-kKB^+Vn4NF@$29JFWKyPR&BF?dD$_8Vg;83tFo$B z48JF}B$ymYR`cq2XFfLJh45yHS;sHmdc1|l!Q?=~jK+7&jSNe>Q{Cq({11L}{>i`C zmgb+ocYiN!yYaz6MI*!Gq5SlZkEb7~74!U4f4S+~CFxK3=glr2O}98}(vWL({?4Cu zA20B|4&Qu6iskV`z9qWRy}$Nco?iEj>-|jL#BJ|Rx(YTPKOka$OOV0-*1h%v-#^$) z(0-DkyUXfy!A%Rre;l7SfBmpe|L&jT3%^PHJ#zBg=RIpOa@dX>QS;*Z=pw`RB#5?~+p$JkA_cGm!Qcds$I`z5T<6lt2AT=l&3TeCp#LyYlMElD+e} z*S`~*U^G{LQbuh`0^{74=c)`+clPZRo6^JV*mL2%{Y3rMv!;5T`0-Gs>#%0P-JeYB zDt9tT`5$$0WLS{#>d(hT^{n+>hc?T~7rvq`~eCO0XKmOm} zKf3)V4|77&g(D8K_N`xcK9apVJKu&i=l;3SW6t^(;Y*h;Ii>sLZjFeO?D3da7u!pZ z3LG?W{OiTw!L!)3Sz=mBvfE8h!^W9Kt3LiYsBr7Q!t!5t{)!*Xe7bekw%-p<*M){& zx!{s;L_+xH!4t6`SG3QxkouWvHPK5=N^s$=`f|&!+K28vp1*Lp{Odo4?cr;te7|_V zCil|M-(B1Pgm{=2afzDS3t=cFG#eRJ`! z)XKP(M>l?x{h^qUW_w1TfAQ1`pR~O6^0R+79d7)8xF=)!t~84@Zh=j`W*5t)Z3|>s zWTg3f`Tt#QulgVpu zR`tK+VCd3_;Vx-fl6ZXI=4p|C>+hsVc})%UJn&nfF2-&yL;M4|_6Psw)qd|t;QMfQ zQ>rnC_m4)Qt$lNj$o%YkZEXD7e9J@YB|g!o*~(?EI@ES^y>{oP9SBA3+0kS`yVTAnDqn(})Q>;D-UiKV;W%9}0aHqAD>UBz6ex@}^m^41jr zOIPKDIcO;{hR5V67_i0!_}Fb&efj9zE{9Z!1)HXw;@aM5D!2U|>w)H9wyVF`z4uws z{BBFj&J**y7<+i~)LZ=yg?6@nSYViVQfBmM}&(D8f z*tX!|iM1HoW{_{IICP zY+luJ=XEdZ*TkfK7t`6QE?x7(ereB*r+wIz1x$=9k9 zv!|p~)%e|v`5)oAHl+5nb70T&mr3R#X51B@zkl-6DVY6kuTyaOldoQ{%&ni<*M82~ z9JNipo7eC8{iiFhrLQ@zcK6-RTIJ93-D$>~BVsvTr{0gvj@!etTz~W1hnah=JLISC zy#4s|mn(l_Zm+NJOZw;S7Ej2V!>?n{WBdMJN}7j?ceZajfZ{YtxMk=hZ~64(q>;%&rp7MY z6(SK@9Ve7o)n;lfSYW=OPuN9D;z4M}rVRpDHm>eyS*-g1_VY#C{P|Byq&M!YosWkZZ{|yZ zB^L3!HQXLno_Kk1&u-iLeU+AzmK3gjiTeLr66 zd_?26$A6ALyP40rw0Q6O_|TTLql&42*SCr;(Vaf^!JFD$(~J(hy#IH>fp2}&vtwso zFo_6$z1&fu$4d5lU`QJ8gdZh_Q{Twy<}jWNUdZCEtoTtP=5=;9+rOM6ycLfk>U3Se>*LP3L zmmItGd;gPPwa*)O7k;{Dd*IgMs;SF%rO#S>N%-rt9S1)Do_#y5oY8;di%tEFL6fg! z$L|oG%6i`G-~qOe;W|-!mWY~Z*Z$q>Us-+o^j_8bk=&2VyMFJs3-;67vSaru*MI+K z`@LU0J$=zhkD8d)uy=RPItn(_eBY(|?brOH+Y_3Z8Jp(6a4_2cwbc6ksx+Z5H|_0g zZ5C_mE5|)xW>?UQ;91YkH+O1$ke=heMl~~5=Az=O&(`%+&iB(2lICNXEO6A|&IY;c zpoX&Fz2S^;hSv3!+02Y3o8;y>T>W=XSb6CmtHM3AE8O+J|GoM2qin7F$J1n3QP zZ{K}q=JE%Y*Y`Z$t!7p_A-NPU}O^;& zqh}6D{SW^BzijGk)tHq!3VIbEo^IN<;EP{Pi^^ih0Da$_ZKY;*#V0~)=0E7HKBe^7 zNnCMXsI~vBgWHmpo_sfLjhC0g4gpb#83Cu(c&$&mAA9Im=2MHe`IF{fdKTk-f_cs} zcGlz^Ew9!!|DTqN=N$Pt`;U2@)bu*1k8h5jk~MR`^j{}NFMU2sDbu67I)&cpYzO*c z<=R&MUfx)Du4ERrO(pcckDW~j zX^a1RX!xg8Vox0B+V<3smC0}GO13>;`|gT=V)Yef@7!S7J?YKMuE?&uzSZUbY*SBx zsjn>eH}Co0^xd-6ZPMlc)`z(!Ji8KA^^);1`;@ECbgs3nD5^ZV>hV_5hO=LP_A&%_ z-RZgU=>fNx?CN3xGY0-YcNh0n9w<|`Qfl<7YqP&>16Jb_=ov+>HkX)tH;hi7#Q?YRF2zh z&X?!Ue^zm1&bz+xT==y26CV~zI@lRzO%#4}Cg$**ZJS>2{qr*Qy4&TW*A*w+sEc{g z5S?&qtxrj@qw%t;?_P<)v5}D~g8mA@KezE1^=bSsd(GLv*L3*Ihnsu!E(b@+v1ctd zzj6EKoc|{kjy})a{$bI~-q=SyrfVP1e6-yCZ{>!$Z&-}2&lHtUj<1HV1Yo3|)ahe2}9{&d%wXC9VJ{Aiiex?ex@ zd!Wax8BZ6zJ$2^GF1f_->m&{q_I&?S{`ZN@2SY-$e(XN%feD|ym zy)1l@xUBq-XP*3zeO9XjimNBx(_Q?>>E~~LrX6n%vK;wwV~c{T?(a(nf|3@BmGzY@ zeRF*J^&N;*I(5L3>i)C3gB6IzocKc2{TVeIKESq=blP4BUzk-gvTV{f+R8Zyw8t-Z1Q}X_?B;x6vjpdw<`j7ssos zY&&-5ma*Tmcpiv7OZzpdxU)Ju13k3{CqxYPPrI`s5LpRJ#7IvrFk z*6>PW6t;BkIz4+Yuixs+UX#||-?gu1m(Aq&b}?BgrH9_FjeWI-bMjNAV)dVQROe2) ztS|8F?EmTe68}a7_X{mE2zy^(;3(LxH(@E)0tV|82C>-k7eyOC{P*COIx;)_pY`wU z7gl9oRCA7~TUUQ_Vc^oZNnGxc;I<;EPA#4NdwRnv=~irki9`F?~i?|sGtrQ84X zm;C)d@4uY&znFL*0ft0|75ra*@tP&^F4A71WT?=SxJp^Y@%g4=n;zB5kMUEab=Dc# zMX4?Pc{oe6O7zzHpIejjkHobd71}Meo%7nlBX_r!Z*#DZJ;=QriwL%nrZhLHXdhP7W3}NZ)8A+SUiv;9F-bre9iyoe>A^Km%woKIcUKPu6YiDQu+Iw&Jyf^x!_v5B|yg z_4&;xwbotw+r3-0HK!RKK1#}+FA;g%+B$Wg0l&rf$TLUkR~g+8_I&o;{NvgZy~MAt zu0A=GXf4jaEjm|t-N#$+t=%)u_zR2gJG?vCp!?k}%i3u|CnILJ#JdoF39@*%76Cisap#_TD!MS`TS0CV|eyzov+Q!Yfk@IR%&_I`oHAy z-SUeb&Yhnx-}x&mF}>#h$=`eLX3pT>?$>X>@S^J6aLadVD^}0G!>4$3iQ~(SH`%>w z+dggQELkjhCd72R|C|dSD~+yap1E58^h^7l%jrt5COkj+#d7C8-Sf5gZrIcWZ@xai zAXu{E2*;ZB%YFvEeO)l+H;>%8{V(?KIQjEt@`9|tRfmr&UHRSp<5%8vi<-yzo29P5 z+IgzIrd?B2|KzKz%HG+Vm;c_lB3st*=G|u&G5_Ljf6@Icv^KZ?`0OpS@>wgJs}}xq z6#xDE`@?<3f5hh4r(N2+;a1wZpU2Pd(R1!N{d3db0}1QQZ_W|bod3yc>e88ym)^Vg zlKZ{w=D+U?f1Y9GOK<%b8f#N={f*u(q2|yZ$!Qf=UfY$u-zKJB*?0T#p0d1s{eFj@ zI=2*Wdu@45>glTOk>}D)Baf^#z89;yZSv}?H`ngkemC1Lmc!p!0VbD%W=y_6DbS?PMKmHQXz6*i6w^qCi=p|~ z&r30!eZa?LW9_kb{)Z0tWcIV!_^7rax zcvw(j@-p&R+RUaMu?>&Z(%fC($ z*U4AI)#u%;PyN4sRs5-ibAInwx5#I<%oCo_D=YSHno_e~-cpk<`Rr%Tu`4h(Z@WO>K5)>`DFWJ`$rSH7!L7iT{U)_zteWB_LHtz z4HsJylDRH8c&ac@;wkRC^TE~r$Shb;%ylQT7H^cfe%w?cYoUSn@$(L454I-!y>54LuE+Zm z8{Xtqzq94cZx*|2qB_Ux*DhA(3$+oyzDXxMR1WFXo*5JP+f95$Pf^*BY}09ZnA|Dq?A}sDAKUXHR~pVuFkH6Z_B7oh&N#jv6j!jU3J|w)32poqFSF z5VwDIZ&r8ymBnf9Zx$S{{Bo??!ojh}?AC89;fT5aUaA_*VhYpB3(`NHy;kQC=Z4;o z;o9c6sz0B;Ca9_XCbwQi|5sVgpP=%oTW@tujywD5@Y;=M{XS){3;D-%`kq#J_WY8+ zw(Er%m%lUn_-b+aowTXy+OE!rj{hva;+k(@<=eM;_M2aoH_BGz<<9<7UA}jU^!cov z8JTylJgdIy{y2WFMy5><@9n*{x7l~=UTFW2@^<3f`N`9{Rv&y;xgc-W{%|u@t*8n2 zf6e|s?`_*+CD$fCpOk8;bi?q+`y%R}Z;Rxgrhi@WaqYoR8~4@cDVIkaI-FzsVd>;q zFV?>>zkj!6+Wjn{U0?je#8$_jU;ZVQ_npj{C)@IDKNmC4=)B@zb9yTOTIudLu9x4Z z$$#Io>Rjw}G3#ZeACDFO@AtWxRZ?oW#8yx2M$w`;D8fl&p*nIn5zycwuhqnVZ$6|J%;y%3b?lG*|0ua>dVCr{3?L!9AsZ z{f_r9{?+Nlq)DuLm+t!|Ie5jV0{*aHpWn@@Ke~M3gdeZ&^w-S0@MDqwomHjEe`D*{ z2LIc8+wPt3>!-cvi;VVF?E3%d>g9u*URU3^Vsh_y>aq2&-#vYK=~uSf)X30{JLAo_ zpR{>d_T)r-s@B2o!woUSCz4|nvxrct$-AmeLH+NpQ>ZOBEmDc15 zZ9n~T?Sx-mMcZHa_@p(to1R?%w|1Kx@9(d5%g&yP{x`jINB$?ba?{}3j@RCbtjRfi zsp{5TtK#6A?@w#$cEq^c+1mOjYx}i-RuOBZx4iplbu?_=@#$+myJlP5?_cY5H>_&g z%lT7Q#4i3@t{1;KUVHtYsGZwR$o^h&|MT5nzvqVUn)~JPhaZMN-nF+a`1$U0@tU8q zci79+#aD<_q<33|{dY58IO+b`!&l#k?}AL_b2{miQ^Tl((rQwwiCc;?&8yD#qk zlKZpv63b%7{7<#(dW7fS%-(iOcmL5kyNdrld|S1D-xbx$Yks%?x&J-0>DtY5i@rE!gRc)B$JEK5;?AkH zuRq_k?9GR{N0(ZNY5T3}c(ixZ(Nni~ZrgeKIrE?TYhVA_bHtr>+Wjw&{r&2{SE5U; zWY>hYr?=nr-CC1>>)22I=wDplqmz3!nN+nsyubRt*VOIYRUda0FTMBW2G2YF#KXrw z%C0>7=iA-m`TSpI=VxB9n7;Mv4(T`Vzn%YA6leM0t>P|=Zj;;co{Py=|IXb0y|?+> z{oWfpcZGl1Z})BWVT-!xY46sv}{Kf4;qxQy~03&(*ls>swG3@1{%F zPsMHS{$Kho^6!D-4NCRQfA-Z>|EMqf9Jl=L)z2~8!(YBX991S_CY!tJr|h;p1+Rp! zzSSwcmoBDwV7Bt<$<2!vd~r`)*O(czJ^5MsT1$P_9x<9X}j^H!v~A((yLd0{#voEnz#7L`^`-sO0(_rwnbldZv7aY zX%P`8_Fiz-=}$kR4dBy09u?29w(l{&OKwr|VDuv%CH*YSQ7%0}uc1t!57FG@EhR#(mXHzu)KYJpcSk zBwcn}FaJaiGoStMoIdMJ6Ek$b^y~Q#_Rjk2a?`)-&bG-BGxGnMrD-U|YLmJ@TXN~K z=Fe(k+i(7@U+r)`ZHf;6xtA02H6zy71`{QFqI?RWOs3`&!ip-x2vESy%ska(0W&6VSAz8vtz_9H}?{EIL3lmbh>;Edsd^qPl*V{h4 z_I!BOFXh@Ejq~SH&n=z(Oou}%rf>E6y+=EWru^LY(j?a;x*wOMX1I_@1;!sXcuDs@MMu|Mum5 zo6ERr$qMbzzOc5ZX@92$g+8-iB7RdQ;(PG=uQ#?>C@MefSYDmAb=NWv&*+NsxoTO* zC&!;ynzSpd_vNn)CxH@c@$Q%Z-hbcuBeSxv_57+i(>KekU1T51+n;E-{dIrOljGdR z&o-~DJbdcj>RBvzn9J_* z^o*YpXTJ1mIWA+JX1smX&Nuq2(;Obuy}x1cHQ>izc}D?aIch_;JWzNTjy}Qo<6dHhf7W8Ilnybn;nI62WO|gj|ty4 z>)9%aW9H7g_HT4bpIyzZ&VBIp({Hx(&;8H-nJHx-lOFghnq4@&qPnTeg{i&Xk(Eou zRU|iQ{)82G3nT96i7wlBF=qDhbrI_{epbF&emHoI`2L?S4lsN+c`SXV>dB|@=xUn} zKhNG{nECbQEz7^9dRh1ZD-iTZCzkK;?V^GiC5@onCvh<+3>cgKiRpnaT%C0%D`rdKE?&)U9 zC(G__v~##|geU2lYnjm1}d|tzCWW)<)uw=#k2Pp zsw*saZa!B1*>8u`|HGBHX4cMJQ6>E}?9wa4$h^aESB1xJP26?;%Jyr|_H!=X8@0;) z`su!DbB=yBl{r_xjPJ0uuzL9|pDU}jRQFv`t2^x)Ic1~hyZnChH}B3LdthubuQ&bb z>B`GFMpn6dBYnSYV|khEk+j8LuDa@QkIS}Wfp%|rW*hHlS80^!=x8+6KgD>WN@Cu{ zzEg~o#Q(?sTOa%@b-j^q-aotI8{SuMF1=@c;{pr&eAb}&$!l+~ocj0u^mm7~XH5KG zKO^_trM>+}9u$ASeNBBzUHsHnJAx(_HF)0$tSt&MckTM>;`82M&7a2}B2(X#?&&wp z`}=RRWL=5B=ZGtjFw^SL>)B78t6pbbkUf5Oy``$z%vq1#o>Prii~V+L%kHiF7GC&t zXZP2W40<1znf^L5fmv|%p+h+pbAR;p9sgK$IP%7;@T}^Zit5!9OkZC6>lpr_^k4CH znN~fss)}IW2A#>vvwzl3T(Im|dqsrq`%nW@+p4r@)v4PLRQ!+Pt}Sn`E_x)KEOqeB z=ig?g6=lL^g6rOA*xjw@TCzXfzNKZ2!5{lQJi&Xrc#pbs{Ez+n_Wv{O1*uo|J}cWV zEgt^g`9tW6U?aYg@2~apZl|vb+i0IPUrgxu&S$@kEq^{r4&S;d^~jwnZQGx2e4lOK zn4CSFe{bVf@Az%;MPFRkn27IptA1>4@$3KYJm&p}?uKrx4&JuGX7M&vcbomw)?Poi zZST{2VSHKkMIU8(_OagLJ9oi)V?(XQ1*?o>k=>W~_J04k=hTl9gYQwH(|OH%c|X|j zF2CHFbNbfO`N_xYH(PK2QdE55H|yu91243LS9S(EFFY4<-G%*roNuf2r@zmpuigE( z_DPwH&xF}u9Dkf&@MTZ^x@W2UlRo-KX=Ka2JyW~sJOASHKR12{HC_g<|phkpB5WIw#6JL_=py8WEirJ`C!=T9c( zR+j&rI`!CX^#fO<*520&Pb`mCb$T~#(Ph@;ojHH6x!=0CdupivrRVCORyy}K4-)^-} zY|Gad-aB{Q)=E&k@X4J$xB1n)-5+0w(ei#$bjRb))%fJJZFjdB-;aIvJzTc)>~G`W zr{$Qg_n(R>oqjCh_Vw`mrc>w3-sBHj7yWl?Z+B+XaxK=%og7&4W`WZC z<@={``|W*Y@_K2;pXpC;oaA1+I`PJ@P2H;_>~F5GwLSIFwDr=(FL%H6pEz0c^49Nr z_n0HaFAB+7hI_x5sZdmAd7`WK+o5T<%PU?bCVaiOY+79E@=t%a{=dflZ_4rW(sSll znH>G{eNN@agGz>Xv-kG-g}-!M<-fb~t-;_pqDeRI(^Fi5c1+@exBykz1g9L^TNN!Zcf|1cb@&nQf9s*bI(UFn^=4!OLO}6 z_1EQYzWVm#&3>t?za*~*RxNw_b)#Uef#@u8=X%xH^%AzeZpT|rzuNPL-@5iviv4Z2 z^^xl)Zh5$5ZD`(-bj9mIzjfyd{gJ;{DwBPG)!RkIFQ0slf4}~BkHa zr`(G_eOPDLXl~sqqi6Im;mVz@6Q#SJU5=jAw>W#<>d^aBRyW%t2fC; z%l}%$W#v25UW;qxPU7~6+ElFnbzgDo$t{`>6Th8Q{kiYl#-le9$}IXnPGxyM-TU6n zFJAsP|7)&25n8Ps5&1H=eWU*J7d4(6PX4XnJ3Zau_5J^!G^>7Jy{dXC=ICwitEc|v zZQix|df%d@`hVW;x*BfR_Fh==?t$vezk3ay$9$Raw$$WBpI-7ub-lMA{zPbBHoFyK z`d@#Z8Qac|ik>I8Qd>V-MeDCT``loCQuN=8|Nf%_n-P_K+x46nH7xyvuHUISkNBGr}*eqXPY?Jx(vG>Y`r+Yj#1LN2y1|*uf z1x(VZ`~2^rsYl!WUUs2y^W^WfZS7~b|FHkv!q+abG4^E^%bw;o{y)2CdPN-5?~=PW zNlG<+(ZQ&i3*RqyzqU)8{P(5gRx$65NihrVPKY#jzSScjvEZh`ccv@n^V(S)Zmhe_ zl2K$8cgrF7GQW9qy>;xSfWMO!J2yYfozpz;uy=qrYya{MyWdv6{Fa;lmEvAo@lFh#Wl6aT=7%E)uaBlqAghrPTXr= zRdX^sPVi}vSf$C~TfX`D)P=tT3qDU2xv}bO(4(oWIf)E?g+Wu-zGJPMf5}|#|G5Lt zefh%E!cI6#T-f;BK&-mJ!a&H+-FSY%16fgn*Zm&B+ZXp8+VS_kHha{2tL}$i)^1-} z-o1TM?bDmt-YxR?=g+h#Qg%14vslHq(zo?f>HirqH{AW_cNhQ5W_14ly7P#EU8~8R zxnHyR!HX7h?%7rOg% z*35sqk3Ntx*&OlX>hg0d4($6}VE2yg7&rffH&LJbciQmo)}DRUymYN+ZS~LYKC6ez zZbbg7lzQ8p`RL}|wD;xj*!|vo_Fd3?woG@1#P8W(_eJfgFHPS0@Ad97&iutk}+`quva+SwBi-pLBCe8_>zJHT2JQbAf8D*aR`ksyR;u^kvAE%yLzOnt$hsaM#J`Ws( zCq{d2@UX5;wZHvoXGPpJaqZTI#djj+8j9I`=e9omJY~c7iL6GuQ=zhGQ?0#@+ZQP7T|52ve7=AGl4rxR!Szdm0zC+>T~={NHpy{T*yx;J;%l{H`9yWN`{GudX&SGMCOKKfty zXUsd(dT+L?X^Oo?W;J7HtjveaJ7k@<zcH8&4tA-Y$@&Xk3V>1tt>quxWM9=V$*N03%fhBo~+PwT6Jb~(DXNlStNJ3yt*GJ zQ+ztkJ?xu~&#%|af-hA~s?QWHI-4(>?D#)t_g5JO`44X*cfXkTAcK`@kA7fChHTNh zyRP!r_J8J`t6C-fv(4g}*tfOMg?Qx8mn-Jq{399tao;JUD2&Yt{4JiR+IZH@m*&^Qk)doSG;9a#gA(ywKcy&hdKs+x~jdt32zo zGo#k3HotpZ5F)ecZQ5m!-t;*;+4r{l6rD^~oT@?yKoC4XnW zzpE~%?hRG^G$-z(@|z_*OWos>cHN12asA#0!x^tm-G6U>bYK6LFE1wYetqOv`e?)E z83%sPTNiRKqCk1IUfwptTv^Smw4b*o*B$-&a_fBc`h{!SP2=NB=5LQL;E9d)m_L=# z{`23ub=Gsll<)d2|0i)uTP5>{=9soiQ{emZo^!K6Q%KHm!e zmHLm}@Wtbw%A1?txBYQ@IrGH(uyp~q8j^(zR;*v0mcL>B<=_e%pYn-bs&cit*>zs- z^9pOCeGc7OHf8>*!&iL@UWPrqtfII(_l8H*o_CVh=Gs4zc=lDUPx>|2x7O%;R{PH% zioefuxMtR;wU;;Y>vA=I4iCKV{%Ug5x*H$-dZ#|{d13$g^{wa<$D&2cf{k952`AOR zc4qwi?%d_~0_CT(r+)f>v(dET=q?2te{uV*krR1Ki-5b<5s7oRB~Bz_XI=m9zC8{crfax8&w4P3gL%X;$mKcCT1geY;f8 zY5U~~%}H}qR84uO-}o(5{{PO`q~)rU+GnobIsZWtmi2Bnd?)&!9d{s_xqpAI0Nm@1EZ2tNm6{T$dN` zuRq?l<(hTR&+ymR=L_$ed+5to!`s@cU+;HL_uhW6#7nL{{r%DlcXH>yFLSKST_33P zv2R7__svYVzh>@#@bu5L-Y4&b?c?s;EH<@0qPpR(#)_R{3Bj53mVCIeFKRD)riF}9 z#eFrmnQMyQ#aG$K{C>kH&G^s9$K%G6x=`Eor*9T~`S5niZT0y2xbN1%<+1<8vldyG z-OKf6-#GQxQNFpaR)1b%l~g_1@0`f*s`@S8=Df}QuKu;Q^hwl$)qKBuMSYuVlyCo& ze(P{Q``isawXl6pm#^RX@pr%d>zaGhRtA)JKR{Ur@+w|&7MgR0}%-MeX zV8+p)|93Af|57M;>~z4@*M5;b)%&!~n+_#T>e6=0*|__8dmro1(oL5WmS`Qg!Nkj* z8d7p~bD`Q&j|}Ugymj8pu8-fx$K8MU=-o5smD^_gFzJ1`|HlgHe9d>~h2O|$=d@c} zmicycWOuvnmiqs|M&|OWE!(Taz1D1gz1Yc6{qlT2_M1B|MlQD6T{T(Rc+SgB29|xv zGg&>39AKGR(Am-yd&=v;`AClb@7>qV{M(y--+aSi5!Nk__Pl$UG_iEqj^2Lt$bCmd zm=&K+-_;ho_ldsH=dES@GC6NIFLpFP#KSMFo!GK4(*>uiZtD>2uy?27ml=dfDsjx$_n;{Z+sxYjKmWZo2YPGr8;Mmp?HrQaWK+ zVjPwJe))dZ)Q+IY%wG^$D*vDGN zyj<~SecYct^=mh7-p1#;>GSOa{wvq+k1mUm-f*nDZtuxO?CVZO9^KGhwMK1PsZZ*| zqBTv=-ygZR`*iS`5{2a-O(pE*E4Sv}I`vkv^vsVn=00KU>+3gePo1~byr0b^jq`JK zoYNb@@=xDar&{IdUOM;p^;YeRe_mN%=)2n4l`qZkJUz8yYow9+8`;8X%I44CABk8y zT`}(KmXgN)V{!TOt;@MT9(kX);9CXzo${4;imd%_EuHLs-7)Y(rJ~fsYo`Nz4LAO} zm}4Mz=;^+G8c`Rd-+pq8>e9p7Q=HKcM?J~T1`g&eSX=?t)4_;kavnGYD zn)10?R9B-aec!Z8VO)$SX0?6&xAxxR9WNG6t6Hgf<+f4iuld@oZr^ug*Y?)J zjv1FPeTkk??VT`Pu;#c zb4^9;mT%qtOE14n(mLimzpixVX0I2Yfe(0_Gb=7Le ztEZDK>sQ_>H@_o$yijFH>od16vo~cYz4p&gP`EVzA*+rw@0t2#*Yl5MDr!~Lndn`% zZ0MWw{SeoexaQc1mnF8cJ?6^!{l^1NY}b^r3i%h$l=t#|oA3PoO}5c7`|>te_RX1J zlCo-t=Zw9nmcLG4-gfxFrF-R}*}l2|69S&CSZ|!n%-+Pnn7IGezxvs1S3i_>KCF0t zGj4mO*0%Q_gM^|d9+TCNJv@8KL7RJ@!{v_O{~FP>(e>^&JNv%Q-GAKUcm3~M`&rM+ z>EpA?O?fjpa?F`ipX@T|Ix2hmwX^nt4>nhlKFh8NSLQpvuxRRMzo4JzZ?BYcUEP_v z6^21wq z6r5PhD%Wjz<@D#+N{N@brN5uv+||+Vd&Y99PC#hsH%8&y{XY^-D>QFSiVF`(|0g_8 z?k~IiTe+>Pj`LmGeyy(i-rd*vbu~wsefJxA{dAt58F>AJiB4Up-I3a>CLL|l(-Mv0=qt$Fhg_6oR{Z?s#rke91HI7|_Rzn!^X{b^f4@zX-SM{cYV*Hn)9lx|x29H2KeoBzyR=WytnYX4{1bXu z{Vug&hC*mgB7@t+s@(y4Er)OJ5ns7py{&Gqb!PKP|2z9G?e)w0KU;0@(>uTO=Y3B*y#46?^6H(xmhQJ!IPLNIWldtn zHlP2~s@(MVo_?656p_A0d@1F6T4s6UjDzSB2)iwvAkYd z`QzW;{4$q)&c5sF{Vv+(Z+0Wgy6n?F*Wy0iy&WUAx^ViczaMwYvHmFAep`ID*uK-O zK1aj%A2OwMz?o6L~-uc58u3)Z}VTJmFExM zF`epNpSHs4f2_=xeXP&6&Td=%GOKUPy5+ie0uI(IeEqrnlUe95tJupcPTrmUgzNEv zJF|~(et7+B#H!FmyBm*c{RtAjww~MM?LE&HpIEcIyu8gO%ldyDQ|!vHud?Pex-RRr zIrn;z{QnoFx6dCx`!Cw*&C9cKpZCw-X_>Zd)9+bFUFU=r&G@?h>+Y@FFUj7#IcMJF z-HX?9t@0{?9yvhul^gZPnOKezqbDQr2nfqzn)rs#r8^j#D42ppb# zz3Az)e00y}Wyur!*r_k|zho!;@6vC)@^$6On=|)YtE%Sw{kwgh+F@1`u_ern=7%@r z|1-YL)B5b}lOJiTH4ePnEnunHwR!gows_9Q7f}NHi%-AtFaKAZJJr?A+*nTj!XdA7 zpFKWp-Fx%v;&T!PH$pE~U%y$G{c8Gew>W+K!Yd!Y{$8y-A!S3=YMJ*Rmh(M2(tJYj z^+OZsNps5=9Z*cocw{o6?LuYRB!}vG;vL)e#ecDTzV++;_b>Oo`@Ff~bfJL|-|m{b zzqL(c-j`I?WThFmZo7JQ)lBcJ$BsAey|(|||6}W~|IRI+_W%90&l7$YmhCz>|J2)v z@2{(C>yGpPPguQo*L(Hy)ljb|0=Kgt@$p zo;l}C_}?}OrIc<%>6|OZRz0&W2gRO<^@#rcAdR`TnaLpLSz(fLnxdco4f6O9v|Tw=@E|19J#$)zx_6j`Lb zO0#0g#kfn{%Q$8)oY7@!|4=+dFK?;7t3;s3EdIyZ_uWkb{Es*A?a)YOf4(5Mt9^Bc zG>4GH(X*@@CEON-m^re%oZWZvhU#Gstq`Lc`5!9xKm2)qlIvjZ9o?_bH!u2sHFNgm z>$iT*;C=16QI9jx>Bncr8vD(gQr=n52(4Yn$Pvb#{=1idf8vseuC5++w+%09>~H3- zjNBx=AYx%Y#~~pn1LdzWmFs@SxC_3lS^TB;KQny*s6 zrSI>Se67Uecg=s*u8J$qWP85;-o$JZq40Ih#E#8>wk2+qe;Sk_7rk#$%sl2dk{jj= zvtG>-xi0)_64UKpMcunsR&5Y^;{IMmV)eypxhdDbUez{BmWp1Z+H+*(vAYL9$=qto?V(Iw!>O(%vNwH*cG?2;^pJpS#3%?AwI*tw+Dw)K|`WGC$zl zk~x#FTQADb>gv*J(pd3%Vb#j`>&7X;xv7U)l9qbLm0a_`bh|0KT3}Vj5ub#miQl(J zUHmM+_O|+k@B5h*GAlM+SzdTd&tB-BZmfFi@z2+a52s74evs(mvtilWs!tD1P95!E z?$v!i(ce(#-Irzg-akV2#Q7-|EkC1H@b_NGlMge0PJ6mBD`e%>si$xMnC{sd#S>1P{j-t|(p^W7bN`{=>REqmoZrG{s{{qXr**^R4*S56fOtbALv{mxAn z^(2qD)e&7PhWtWo%7U*lr0Q#@3Lm@3Z)DVY$hj=}SKarxj0km==-r1Timuwfx~kOC zlVZoM_(Lc7b;7m-8crQjNjXh3YxXL&KR@K6E4*2-@`3!#j`XHUe!nKxR7%KleSCX# zeftxsO*TpP>AHm%B}5f&I&D&#>~FA1UT*rM1$EOE{>J)gO{b* z%S`u?%?qY0YxmjzHi`Q7cUSZ8Jy)3f^7aV`O14jawC$izN#LTp|d0C2?hFNwOZ(Tiqe8X-I$@gbB?tH!_t!mZ(l>5iN@AG{( zS2`dn^W|&amx1$t2K)HFzp>Dut5Cq{*(B8)7fRlitcjlg@J6F=-#4?B2fGZ+`(qnl zt5_ZRmbpu*im94;driZ_4NVOlTwHz!*EF&!zO_&Gzq0Vb7ghbE97P5{x5-`4Vy|s~ z5%AjKn8uNcrH)ArOS~H@DnxDY~dz#B43TWvjx8 z!_l`6cwAcT`ak5|<2#2soIIZ%<>!C8`?W?j$E?MF47KtPCi_SW9?Gmc%&g5=A;sJh z`d3ZV>{`jZbCcs|Us&^oZ;4_5eD>Y#y>{~ypBy}M#HMnU!tA7`iwW`p|0CQkFS$CU z_w>08$2<*PHrZmWW3~oDc`tXw+Icbd@EXRX-H7AMkYi!k@=a}(t)j>tp#`F%6=@wd z#u}?zI7K%(`&cefKUSsk+V<+}H!n{|rTk}RE`2o7|LUgTrnxiH{FasYIGd)NudWt8 z{dI+eAq#)g|6ga`ZMnI|UgMQk@#_U!YPX-0cj>N;N?Ls6hREGW^-0s8Dt?`pd1c3s z^}qlByT3B+uDe89WY{xttCV$V;;Q?KOIQ1>yVaI8`NnR=g&i+*TaVm(Xt>K*@5js; zS!&5FJ7;;WI4gC{v!`h4C0AWzZML{V`>`K9cnYjxiBXd=q zUK_av>jwKA6Lw0zy>)hU?%IsgYmPQcZjQP7pRZeOQjNB6tG9_vqU~YD=Z5#X+4J@X zyIxM*v~0pLuQIv2ESxqzqPO}=|uYHRz~XFYgi_H@HihYQk6g4mVsXFSiyeOF! z{`2ql#-IMb3m6Gn z{icP~PfU5as+2P*`J^28tkWTp`l9;mvzP+}o;3%sU67ysI^gB|Y3z>tp1 zo_eX;qt*5M%6lp1_m0R&o>iI~VQ<|i_c;HPib>@Oj~y9%nuOCQ`5oVSe^>cmecgD? zn~AFf911sd=}b0VtF?8-!p$3M7=5Ket`#2JekI^^q}m5&m%xV&Elsi->kK>vIN3Gy zD%QJsF0t__m~qBqp?RW(?}heRjU6%y8YL}vyqSuU8qfHecsBZdNa*D2mrK6-G{f-O z;f)raOH8kQH#na1P{oiZG46^*MOp6drB0el#KbjKw{7%X+&IM}aN+e^$8Ky|bTEu- z(ZLQrmYEk-+LLr96{n~td8|LVF;-ybx|R!qy0QUUTF;u=4CT|aZ%nuynvg5eFD2DvKEh2pHy%^0T7$dJW zTBQA%CGhB;kdvs!1Ph^}do42#xa9Lrlv(gpB*pQ=BFTqSTvWo>i#0Ltm*cR@e|ljS z$BG%hdaL!f+j8G-dYi_swfd=I59i569a@t@OsDTVuY1?#D{EeV%K2FdjXekETU=6n zcIm^005hpD122zO%hU-gtM>UhJUO|^;gZ)mf%ls{0|eDnnkI`*RXkMWv~OqRd~4T9 z)wwSU_wPDUQ?}u<%{S*6=QG-aa$ZiI*CeLmc6jSQeWpz+vRTi5ce=bik=SI#a(!vJ z@uI4kN+zq?&$7nOEjC|VwPlKkvBQd^5`FcoGTBO#=J<#^dM$bJn8P4;dahH)u*Q#yK#Lu|4?O-vq-}GOEV*r%4g(EPBP3= ztLV(w)>XblAfJ7O_knF9F-kn1_7Wey-@SXGzwBgytMwNxHpS5H2Tl^JQu)qos=I5X zzUJf-L%w5vQj_|3r@z0c{v>#%<>%L z-m{ghQySa0&RO{T&cBU+(_PA9j{7eQWV~W1aLrAYTU@X^caqRv+hQ%o=cY{tYkLGI z+->2XA>k`nm!!X;Uajq-^HZfAf?WS|xnJv5R+}g2e|wZ>W@6#Y!Pp}yyqV=xl*T;; z<6OWc|k2CqyW2u`*+^u1&; z$D>8j6OQ^fo>R-|Q2c-W#Miao?`{9KmTR86>63rD3z=tJDTsRW{fYBmahX|nCdW)D zDoC;P6Y{v|B6THu=dR=1_vfYOHJblUZ2NttC7KC@anHc@~Z0EB!R<^>OH+17{D(;yj zzIgnqHZ5=K=T!bP2ef2%yg0G*wnA?A%cP8^Pp(>w4?J>C-mP3{=6X{_TQ!CEl8?XW z0-gC*Czol8r%b#$c@m3-bDFP$S<4!;lvy5im2)mhm2PG6v~ako(pKoXdztVo(Q7LN zlTJuxgs42^tvPCCaHMVS+#AK7OGMgL+6?Z_-dOl#0ndhvi+uLg8*P18>GbEEl*7773mED9IFQ zSHz(@F|g^7b^KmisWR*Qhk6{H6Fz@9S0;b_)TXM#j(i6f^Eu2scX;;i$erg+{u-}% zEcI87&CyVNa*&p>@_9=i>)*kie|oO_T@rQ`7S)uzp&PJ#<&iDV91_>8cG3ynu}6EZ z60=d$mDPI>@)x~QGy0hx`}*qb<>k?8zt7Hj^XS2Y$OU(To0+e8bvre+&9L8E>%8E? z!6;o%%~whi79DeMWpgdc6y46Fv+BP1uX)$^A3O10E0Ujg-FX$WSF=N9>)Z4H?^<7+ zWoMg|T=6;0r%i9odn<`sQZHAZ5)atF`u-(L>G%9AJ^34E@hs@k64{Y9^ZZqB))n(s ztM=G4H+M08jVl;!XN(oc^s9!o&(~mc%!0iN39=mR`dl{7i{rKQ0`%o zcD>5#?00KL*N-zgjz(<;!gf+?mNa;<*cM4|E;*LZ;9wgUonnw?@Ya73!+Z55xmzkd z?kbBmv8+ovaQM`2t9$O3js(2@QzNl1?50ce;ewxAHhL7eaxyPwP+>H4c)V93Y0*i( zS3>d@XD?jR?`#Y%4P(@C(g-m*v0?Ioj<#hkcV z=czDnC@wqFl8|-iq~bE~qbo`>g`{~|EYe&Jr+4i0x&CFTh=CtxPsPFv^@eoCC97+8 zKYRJ4H}86A;Y?GWtrup!eY;DSxi%5ZZ=gPVc5 zZ`GEz83HyuCQT1{92#~wWO{TI9?(cgZ?aCf$e~w$zC?U-Dq~dDX;KSI@XPJGQlzwe>b#%H&pcTEcZm+HUi!^zD2(U)Ij% z`1$3>p@)1qlaJ=io0QCaG2M;(#>>e9cW12JbaiDG-<-@nOdk(PDORj~@bzEuU%B(Q z5~o~A4ZVN$MEtb0+d0V(mri)=a87gmtX)@UsReu$uo&?I{U&V1><#dYqlCro+a@5xvT9;fxEmLAMMSWQy?q} z_Io`ov?6g*$kUsTpNgHme^6dCHsNlRLy0WoUC;Rb(v{N# z_PC$wP^{?xb6Z39eY^Ym`xh76$G>*@=HqiC`Antfhpc|Dqq;iG5(g6tvJN?M&)NJh zq3MXt=@*tVD}R`uI?ZP5K6_vP{LdT@(q%&BH`P~X3rWo2KbBeQ=pr8dlKy;3-ZEwlc10d~_i9X+dQCvOiMq9$vpy z!d+nCzfs|L1iK*1b#~sRH?&oHT2$CvIyzQ4Bsn@dX^L?vzPWm1k?3s=U5^CrI+lhL zF7+?VPFcwDubFMTt@hKC=ymt}*zC_Qb$!0RdzPBlZN)@yZ&%lLbvDV+Tan5+Ihk)N z|Mi~=RN5UOcEBekOK$OxkfoYk!3~A`EdI(}Pb~!_@LS%vU)I#{^6pQ*rDsCe3l;{nPY-D7ul8_hW)9+-+ascNoYNsb)M%^46&1!^ zol-pucd_~C|NAs8Rd>P7AoY;-mlxzuFiD#vYUptL^X)gU+PWjZN1geRd#iR^n%K?i z+;i#EpZ%Tu{?)E|m9mZ{lV;9rUX*%mUAftfYkMU!CD)YSIf z_ROP7Y;(|6~0zMoMSYFM_baqqi=QkR2W?Dt$wtJ}Cg43)UI^M+V=66?K5 zIg=$<3$o7r!}ZvURqc#@eL{r6iv`^_I$z}_4po|MXj*X6Ty5ocEjl>c?L9 z^Q`;1re`JdjI=wU$+GKqS6mml`(4X-UUujVBU24S6Q`tY8|1D{h&Zs$BX&Cf;VbvQ z|Ng{#Ym>raF?pLwZO{9^$j-Bi&fi^c`9X8}xfqd2oC})_1wXBK^^D}c^wPZc$zxg8 z=c%ijom~yqDU={c2sD>>81L|IFgF57m#SJgWShRr~$S$FEV# zVqQLcvwGjBT!mtn?<`K+UnOh&^mpb@Ej5^Xu98a2-rC zc(Yxob@KGpzD9)`E^Mf_H(&GR+rERZ=WK0zaaY`$tLKhg%|BV?sSQWo=)JR;6#Dg^ z?V;#}OEV7a>}}gta$-;Qh3d&}!o`o((_`iAG0_Rq`6U&}c0z4+Y_iN(5$QEzJ1x`IdsW*#+~2bLvHQnY!A} z%9$+t%UD>{S>f*Lj)ufut|@bV?rSUNdga6$ef6wt!A0qZ3%+ejcwnvYX%3^uhBF6_ zBt79cdwBWgi!0>*KU;sPgu&vseErv$f74%?pUs$A5P#y{{h$|j*LsGm{#D)dSZP~R zbfCA$7TpXbjcr?2M1`uRMkmCt&Ti$>TBMm7c*h3FQ(AR#`Ac0^w}Q`kp|eG@0#`+823=hl z?bXqnv*OZ9f_e;MAh6N~flH9ocqkW9}I>KArvTQ;%*H>dn=4 z-PUBXZk=G^Hr*+!zHH}OSu3{cuySC=mJLDIu9lxl4z4j)bd3(zjM*9zv~{c0w2KnA z#lGul?bsT%G<3`Lr7zRo_g66)g-lxN@ptNk$8X=A`M801(}DX{3(|sgM13c*&DbO{ z;o(#T>q}l|Z~j!z4N&Jw7G1H^MPJ}H%Q5}AQ@Ntl0#pjST$?7hw3}$^zTj#jo5P|qp8k>ho0vkHuS z_@PF+{(0Q&-#49~rLnybar|H3ApY#jpZ&kfnyXnSBFk}dV6!^R^jYz<;H22)icuWSRHP-J?;0d$r%Cx zH#ui*n4_)8;>n)nEFn2*LU*xIl0eP|-cQf2%s9Q3wQZ5>gtl*QIu=A6I@pn%cU>(y zcS76Nt=BrjL=`uQPH5BG+9u}e%(3de>56RC+H{lzF%>(hg0?~N9%FgH^3@3)mf2 zv1%kHZR-r`i@fG7AktPIp0cn>kd@=e-3y`@PfX#8GuSiF_0Y3m?OC_G{d~jsKl(6# z&!_G8C-1&_v$iYe>^H8nGs=aQ9N}s?#usGtc8%8FUYUdqi?lfOlb5{9cs}dio3qBf zFSi#xyLI%Op2n3+1!rf@zI$W6n8bmVo2Q#y%X-_oa#yBF;GQ@G-kTk(yxykBI$-$Wxw_Fu85<&zgZRk;0=yg)@z!4dn6LMy~{CwWR zb6+v4h=wIjy{d6KcE-ex7iOj6OkWG4SWlla?OwDaHf6Q3WA)AE5H9o5wTw#3pZfh*v)2;n@nS{7j^#0CdVr21IcB#;$qH5#EsI=&5JIvm$Gu^oDzeeQm z^Phhnjz7GVKmLei@wT_|K~wU}BY6uYV#4=6T(~Xm;5~;3gD0A+wOCm%nRTsY>1vXn z^4*p1@%r*xCpYpfmSvdm$Y9N3_s!KOCa+4)nUwo2q)p0e>V1p&4_CvkAG_!JJN~-u zum9=umnLpkoAc0SR$f-ny3A}h9jR-&mbn~P4QgiuI9+a4{ws8rqxiywt@C--tb5z6 zx~7c(eD3-s|0n#gnHZTkwsJf#n>;kJzZ|4HxZ zp$RQk_bT%Dv=%CDZ+IB%x#KJQ_N_L{mT7Z`-Y_|)92K|PKJ}96-t8|EzKF-WEBV)h*w*_V(#|RYsrB zuxI}Jt-tx_|GXtN2R4=bKFU09v7g2!-|v&KorRwda(GqbG%4Sd#q*>Oem3-_%rw{AD)7^P&* znRQOypp$3G(G~LFePfUJ-E8BkkiI;v;MK>~$9iXMi#h1`JLaR7;qlh*pKmfh_{y}M zGo!SeF^W^7!&1gj=*R7BF-F;b3fj20W`E?O6IX7Be$WzyROm|A>V z-&RH6*}MA6eYVsplmBwN{DhW-hOKy|n#If1!cm}cDk(%LKHT#`y{neP%U`=+aIX(q zqmuLDxQLIpTlk^}F?N?PhN&b9UfYhEEokc+=Q2)Ag zvcGap!OqDi4e$Oq^O)oI!*#m+Tdj@P?mTjWpn!T-0YaiaAnDi}8>y@JO znvU*efd^Gq9r4vztKzkp%j{?D>sqs(Hz&f>rsyXgh*X$9wNWz`1<;c7%UfhidqZ-5)t(PC7)4eVsT_zi zi+;uU{m!B-i8o8%r`-=R%U~1R&9m;o1P@luxGXn2S)<&~hjoAa*lCoyTi|}Kx$3*r zRSy=`XZ!BfTv7OS;mQZ~kA6ssW`EHOieb-*|FD92_Ma{7htHIV2nycI`&)e`B`hq_ z{id5MOPlHIWjD&co1YC@u5{gV8;?GplC<>4lQ#}++;HlEW~ub?2k|@ZNZv`h{gCX^S#D?Dul=j`vuy5R-mCvNRkp43J-=_Orm3!c^-J@VKZkeT{(Ch+ zb~XPO{vvkYsfJ(Q`_G7X`kA)S``B*d`0e(WWoG0&mfmso(?Y3@rOao)Pj&dL|M1MQ z(wleI{4S2 zt+lfpZx>nVru^ca_M`gzrAb{W6LdRc7J98zED~eMyZVPoNv5dZ{+z}xqpEh<{>HM$ zj2ziKm5XE(&BHAhystXp{=Z)8uF```N6(gBS!%7rs!}Dy{pdm_x^eRpZ|*b|G4YJm5_R_OT`oC9=gi$Fvob^the=_ z%irB+OOt-;{XV0#cypSuz`~1KR(lQfH~ahN6(`=CE%_;5<>KwFuhSN7zaH_eHl}3$ zeWmud>Y83xLpFs~{<`xw<)7ZuU#}u$4_~nOyD}ikJUyA&+US+l8hfi{-qPtwf4^>j zJ*gw~Y~dLm`L#2qY+^C@dn3+m=)kf@*tq=FW7Y?6-e1aOzr^31=@oND;FHE)y+eg8 zv)nbxwVFG=dRIO=vwmAyjL?@1FJrb&nT~tfCD|K{c5%#ncmGV9sAQqp>hs4Ad~6Wi zH(Aa4+NrwbQ_f#lHdVtW>(PN&W0t1V|J8l|rMqm_+VxDRL-cB(NS>}ylZNbn;Y-)= zw(Q8;>U3qx>y!htyp;BTi}$}`<-|BUSs_c~?(6q;GLd|FPB#R%xE}LR&y1Y*G^uqv zulX69BQ?{v?dqG?y+`TxR_}+0xvaj;yS^aPdhxQ;$seZg-Dht6PNL|BuHlLl^+&y zbBdNW3f(?Bt=IYTr?gF6Qgyt_S#@_FMr{ld_H5XBcVd21P?5(&zNi;3HB46WYRzAN z@rJL!hlq_oyTV$-t+t2?AG?;Wo}9aFK3{lMvf#CyD@wkmGf(?^vUa{sawv!5-=8v) zuW!iYuYX~Z=~pz7k}Nk0!J zPC3e^ezrvxyy%Dg|Y%6bOZs<5xW zTX|W3_<6HPv)a|CA6c7FWTF=n75xA4zUzViCf_v6|GoAXpZt~e(@w8@Q_*@~yOytu z-Q;m$VPIj8v}LkUWW!W0PK5~zK4-}by^3y(x)ieB>-6J#z4&>@U*$aFeY@sdYC-D5 zkA-1oB6{Cn9zVIoOwT#V%;r_YvYCQ2m`q;8$ntzCG*!!7BJ0ZPb86m>TL(@AFtuBT zOlqD~7-ksr$Z}OkX&2()369(X01f`0((s znQPEezhkxC&68$+POFYLmn@SDQ&eep+VoC3aUtX7Ra-R+jxH?NuyyAep{q-;Ri(Ba zd=>c zdCi&}{9ie0Q=&tzb+Hp%> zrc3gZvS;-eeirQx3|KUkwYrq2e?cRogmhPV{{5w_JeJ&_U&(S+rgHB%bE(fkZ*>^U z1mBonKNI}k%|66DWkXBx!P|FZ`t(z|G|O_|@Mzs&D`oz=>P@O+)>VQ@OB-M#rqa5`Y|hX;V!$C z+0P0;M|a)cA@TX-+o_Z5V_hQHuZOtqnxa14sC0)Ge;Sv}c0t|G)_vkm#cKWA63k{k z+Fr-VqvLePO;_#Q<5R!Sc3W8Ld08EK_27NO+v{OxudMl8c(8N(%2``qE1LRzoMxKT zdE@t7>2qiIbe8BZ-B@!i|I&-MoPk~nuX#GoSGDo@hHKvFNt`14EiAVtMN7Hp{jnP& z?>IcGA7{56HCed(<|?mJ{eSw!c8jiw>8_c7qa|kA%;3WtHmY7tTw`Icn`tn8=d68u zC!bH=@TZ8=XHn@|**Fucs?A?Nx^_&Ai($BuvLWQviLGZEWdwgaN1Z$@SiD2`&90A* z$wtfOhRtts7Mz!w-5$2gZ&gQD)SO3>raLAVJv-~F5F=VSLofH=zj(`SA{hqpO#h~7 ze%N-A)y-X*m&d1R=~nyNUP0rzFBf&5tGsHv=}6c6STWwUWyeJ$ey`c{v(lRX#y#)F z-9@Kf$tF2Q?M-cAkZ|MH3*d6Ip4VES&RVszG;M0m`j1oN zpWmwea{f%vIR`!V(5n_%8nbe0D|JKIQ8hRLVZ)oN5ovSdw(+gr0BL`<(4v_3^2%rmj9Hz;&=jugALX z)7*5Y%DsN`#pObKotDPUTRKOLEr+}KqK~rjn!KqU+fD?k3o_kR%UW9hGpE#{LqX0> z%i>s0YOwk2wZ-<{9Xn24>pp05>8Pm2>Av+B59*W{3&2UowP;#ynl`d)V-RsBINt8H|)v|&wfX#q;ZvZu3XO0aM;-E5IW$xha2w*L=OT>d@3U&kY5ubVa7_^JR1Y*Z*S+`%C-p>H8jT`6?=?zs&C*?Cjno47OlRWTqcvI8o@m6jJ|{S-Dc~5OMh%C`K0N3Sg189WToj! zmCZtNlBcCMiiF;dcqEaOQ$D%m!8Yz7+t<&wKYu#$_n-ei!?=P%3rf#DaIkW*P@VF8 z$vcf-S*QCd7h6tU+pPOVT-k!pF-GKNt=fSNm$^*NI?C}nWFO0o(Fka2k;!7vHjBA= zC3VKp7#>}HpCeOzceb!BPp#nW7B${;p@6I3_L7eBoCQo=44$#Vd{(uo6R#g^b9IgT zeO|vkTzr=9yX=PIX!GZ5pa1OnC?GTExMhOD&RI``IP}ge-Dp?-WrC%A$KUwa&1G`` zYp(Fk?TovA=~~a1nvhHRWhXvf6|q`j#e28))55!7zPyqDWp5OCKWPnn*n`+@YHk`L z%6DoP^)kMnQ+Xq6d3{!q@XBZR%A|y+#WTruZ|M3}7W9|x(u}os<I6 zVO!b1)4MrbF+1tWySFnEvo}or_wjAPgYZ24f_px*PuuxV_{`q_x+u3NTF@w)clnkM z-`>}+XY*ZoSw64B{6p;Sg$4Q-f?h^QNtsPK-B!GdMP~Km0*g#t!&wHbJ4(x+RM}hn zGI&vCW3j7z%lF>=sfOo{n6kAc*)%=1+Eh!^- z^Go-43p?qV3p`k>*jiD1q>*XqjaCa*F7u^a*96_onf}Bd<)3&?z36g~U+AV&Q;yUh zKN9gs-=$vtZ2iCEEmdx3qE|#*yDBxQWXr5cuQd9Wx^i7;yqBpzx7F;RY}~P4uVlpt zq1e7Dp=q0g7Wce;nt0ayZo%mX61!J$d7jjIvXIY;v*5v$MF;a;FYVsg1@O>hX6m0xuI-go`4+cXY3cfU+o9_;aX z$tHi+ow~YuqGck6MU7V-b000<7E$K9S!dUlRd1)h_`Z7PRpvDt#dnmHYyKaKJ`iLPW3Q@ryXS3?#r)5AHxwTWoVm_x zj*om?f`zq8&QvyD)$&qNzJ!$qT3u@#Y*JboXSr{g&$QWz!+rgdyN^4?b-7hvU481m zz5m&&i(y;CO9MihUq|lGS^TZKqdcZsFWM(7Wmz+i#u1M;ChpB`M=!edhVNSVM)j%F zU0xM)6*E!OBU}6onT}m~oV=4`p0e4jYer7yVrLw3)?NxcAp7QKXFX&6oZq(k+z0M# z-*ESfY3r=Hy;5UyYkdVPi239VAXTOZiOG|YYiV9 z`Jb`%cH6w&T;-B8H?azJyu5kew8_cm{_ZNS%8z!Rs^yp%*C>P-NVd-HWdGlAB6YJW zBfrHplPO$LPi7ZyxG!D*?N;UYDTj{tPQBP~QDk-H@zuNfdK)+8sR%d;wfE#LShg}c zcj~d9*XG3gb6YHz=>Iaa_?M->`Pu1bBbMz9IV`-;DkO%(BT;1H$H;yrGlr_#_36JS z>^OGw!k2ojfScQjY_kjRmG5pjI%DU?tA|ePySa3GySK5>?Dg*Nr}FQ+lXbq>PF3L6 zERP_ct{ETZ+O53dK2|rmKv!*nB`PnD0#&z}X_Gfa(PPZ?P`ncKmG3Q)|V3C#jcLb-bR?<`v@>H2Sz3JIx z=}&ijbYHza_wBaE9@|LID|6=d%NITS^XmL<)$?Hw=j{4$`Eu6gv{e~-u@;%{Q=k9J z&3^Z7*^Tw_zVF{}Wwg+k`|i@Q4#v8-u9BWwt4yyLYn)qsU3Fi;Y+nnwif&yXe9^-RADo>CT7G-T1%#^Uf=)-Z)L+ zWDGZaTX!~&M|Y;Lt;_DY?@Cv;y{;B3-rt(D{9|76ySuyoU+vwYnvieI-`TQ+`E7-% zR9RooqRp4qmOWhR^!%~5;p$DZEUkZMornrMU;B5`r8g?U;R1zzlU`l1oud(--+Z8D zTkYMVtF9WyjU(i8PVAb(^TYOHFvCd~4G-n%T2dSaYio>I6FkLqGec%1Eb9}#UtlP5 zwqV<%X$sv_1U!R6wAN`pus-mizP$RSno7b!SKkoB;8{B+-pr1#3}T(dH0LnK%LkWx zbUg0XEx)EaHF;&OL>h+fpXdN?MaSo+JqV67QKj0a5&cuv?P$EE15W!x{h zrQ>E$(UzO9q|AMO$#*ioi%33|ml7d%OX29dA9j2;e6JFBY~T=Gec^z%ft|8L`?QR< z)31+rGY0J8IoR-Ep-X$YXd@HTsSTwX6$K0;Y%c^DwfET7&ux8rT453+@6Y*y8(+NC zsW%RvEs&Tra&c@Mh|_Epi`@KYFQWymg)A zl6O5Z8=O=5A3I+0ZLVNka;?CZpnx1Vdt%7!$tg?#7Z+P-qVUTlW! zhO1W}CmHRX{?yAk>ZnPh;qpJX|1UmubLE!D*UAEpNBg&XJgeuMI`8h3owF;y8GKN$ z3<_Sdbgt~3O^I#Cw(jpQeq5J6Z|)!7B|<%Ye!by4YBWMS52q^0{Pj%@Tz6#W-8rGJ zjxVfDIMEvrv-Grnj9)JI2Fb;*ug4nZSelgGs^0r8D6v)X>JQg5*K%}J=hhm1z5a}+ zVwa@MJ>gkLt-5+2rcarlGPx~d($V$#SK_|x{^33EM#zg7&*GG~tebFk^~&2Ruhv9c zZ*T8hnDI<>RTS&Ww3n^s;eYnd3D7S5x;t9@`I@}4ze_dtglWZ=U0r_9eBJxE7kXcQ zwR@Ub{Ap6*H8cH{>T5&ZI3G)!f8_r6fc@|9H@`{FIn*6cgV}PvDaJYuetW@RAEBex4T!w^S5_N zvp2i0*wD6U)`suB;RkGY+XR>-NI0>nH?Wu){H&h;x_aS_qQXx%ZvI-UyVLf*!VBiR zkD8KpPh7c_>HW8jImNrU^Ub`t@AB}A{W$e%!c@Px$GT&dZ2Khnt;*ilH)_V22h%q? zz7Kd27FSeK>vVm=zHb4yMejW-JF@A_B7d*XT>3{Y2P_j??|v=wq%YgXrqg_V)-`g| z9~t#64ZAV#1#4#bK1D8r6JNLZObGK9kl5L}`AM6u+o_W#;nNpev=^PZy09RSqp%{3 z!Q*V^W8cg3);?UTw>V;<6_?VbNR?J?Er~_q-4={-_wvvDHI&_x^>t@LOhA+I`8^LR z*W5~*a)zmCX7dIvrczS1!kWI0SQlqzuKhMkyn6R! zt14gk+~fW?e|yy*&8yGZKn-N!0M#>%}c!9TCLSn#aasuuI`+1Bq1U2mAb(+^`a$X=Fw%<01wO_joqKYr8S z{B{2k5ZkxL?q%_&))O~lP9NKEs+?%Le9@l`in>gH<=okXiuBAB)67^yWpj;LLj%H; zx{idY-B|L^>y|=OK!b&^=qL~G`s2-KPm6dv1x?C3`8LLS z#fsA&DGu|Q-D3Rr&t}tI_+3uemt$Y}$5Y*Zu72)6_df1dIsX@f4>CrAM#~Dq+qG}6 zcs*<5V&5qT4W2HF=v}yK%I8q0w%9MFRsx%zzTMk<>2gKAXJpc1$%KZq<#wOy>_0v_ z^P!z_(#PWa-=7SzjfK^s+5=a8@{u}$wlog zeQ~#}=IVm5onqZSOJX;NO=R)N=C{5d^YOt1jp*gdU*e+pl9ud!#Z_n38xiBRYGFCs z{MGw>=coMMUUKo_&h~CCo0{ioy*%M-@;UE#9s9@Ho0r>SwJ|AuZfvdICHHAZHAA%? z)^jfFRx1A9^FH{KrilESqefOv?a3W?k8(L1S4pZ=A7@=s`0zj9(O+8_0v0Tv_+$0o zd0I!_WvB5x^b(W|o$0Sw5x2LV&-9)6v8A^r{WG5Y;YLhm`MMYH?wr-Eyzt}PX=@*Y z)HI%w)os16bvn(z_b17mW!2f*swQq}e(z?_q5E@B-<)~mcFQWxDVh@-_gva|b=%_V zDI2cd68-oww8fh>Ovw3Z=$Ti?w)n$t$fePYGpL42Wf1DkbB2<7(Slr;Y1F&g5P6?C=vhGUK)Cmf-iY zlY8!OuHC#U_|A)`=e_sVE^6c5F|9Oc$v&>GcSre_J^E9ldt#|hu%P_xdk^n@n{2~> zYuEg?!b?+%weHjyHl60R(o#I3b6DMCBwcK*^GYrPT^ z&Rz|?vzsf$$Lr$T+E_P@kS^_;4wj`B~HV zt*EgsHhXjD$}49R6nrgiZ!HYjKj(Bv;byNG2Q@8UebGe^9z5sUx-#U0)p_3Q{n44z zrYz^3SIQ<6MAsq;mdP3u^FVjPm(W!6lon|L5$y{Q+^;`u+@Kki$)|Kk-G z#lJfz2C82U3bwv-(W$88{^xfOqAQmb?EfqM^_KRFx9N84Q=fjBu}Wjnf)mEMFZ_eE zvJVCaMod|%eL2Qp@%zb1H6cIimzbZO;;oS)8XD@bZ_i;yb~U~wIYpmM8O=o=Ma1}? zp1EVD{`Y&wpa1{zzW(>^?N6mG7YCnum(9NU+>S-dH|5`mmbhGb{ZP&<7fU6{tKWo` ze{P-pA~UmE>w)R?0^Hvb?&f#np3-_p+$ZA=!?x9C4^N#lCD)$+%bi?7i>~>p(EFZHZ;`zQPmWU_Iq zc=q{%+nQ&akA^1RexDaFNPhMCu>S2f7GHLIsoB;_9{*P|eW7wfuTIJ5oaz@v zKCb2Kls=a&C|!JL_nIwJ{-`Z3APChs4%g>zqwUYM?UEq_Z=&G{QC^}@4m zY}m{1;xgNArSzH)5v+fN_g$Qw^)c?%%=sD?_m=d7{q5iK zqN8PHB?Wu$6lKR6J?PTlciO#otJJQayn9{4J>%!yxnaC++TFP1Pmzmyjo9N?9E$aO zUOWAA?6UkQ-K@Kl@5-eK#+H3A+uh1ETcvJduybzjx@6mX-e-606D<{WnwwUV^Lov# zEtS(UVmLM}d~U!dKV|oi%DD6XJbpFxPqr_dxz>D5t&NwD{Jkgq5h2}@UB7g%ojTZi zF7?CW-?M&YgypSm4*BYyRI**-rPXq~eJ^K*=E$y$Ejz;TAa(JhnLA!zuHD#@&z5>Z zGH~w0k4^XDrf%~*y1MV+^-U*kF3=39-gL{Tz$09Ew%ya8#mkGED#J6SzZ?v2(;k`Lw@d3$K*FMkR zbM0x;r438powyd7%5!q&jP}aDg{y<(@2);%xo=&F(rZDX(7@ZrmMJNAXJ)mr8K@ra zQ+a!?SYI%5U*qn|oJm%1yeFLhzWvS9mwUfyc&#wp8I$&JQRK~TeCX7AgExTXIMG?wSc~-1Ft7-4@5Zc^vgP z<;?rOUvDz@EwxwWxow|uvg*oh|MPQrJ9R9yPQB7eO4I(D>MqcmJg5C-xoq&GiFem> zFSymPIHkqcuV3clTZ>0+6WA_%wdY#+G0$*UQy-U*yWT=)W0QHwpJ!FBp4YrB{K~Gh z^9@UZiFHGH(ZZ#!e^@){R zkK5;U0q?>N)n@aC)8-ur*o?0y)qs;eQsa7Ahh)3cp{Yq%v$e;OASTRoN9 ztg!tmi|5qXjfy-Vn*4uBkiDz+?kExpQ<;$IQ?@mVAf9K%e)3I|ASE?x2)Lxa2 zb`jo-(x;CGFO_yU&wWJxV$-iCrp%64UGkd+0=5K}92LuX_W1VMY?O`M~8ETqe)UVr!| zXr*lSFE}aB#9@vt#PK>{@+(Qp0~cS_^`R}`-arQEBYBM z8VTVV1^+xvI=wi~wFUgW@R8@G-26=Y-vY~5E;jRxR_Qb?HZerEZD zTRta4FDEQt{bKs6>Aw~V=v>#7`grNvwuOIR)*2bUX|`%V#H7|6xut8Sy7n>7i{aN# z+B)r*EnaK3tSf|n^4ZwUb2sj`VVlq@=4W!ncs`p>@&fzKB6Te@{>knXs82th_&)aO znqtL0A+hZJ#lER#^ZxraRPZtJ%X=@`d28tt_kE2e_LG174BhCfU#RnMveAl(=lP0K zUg>4dU6UVF)W&pAK6Fi2Ps-sdt6kIgO)VGPAmlH?zqd-@yS7KxR@w zvNgH7a>LY!DtTU|HCOC4p51lR`ye<$UvtB%4Q-L2?bB)a53Ly7?@DI{isjgF~PZ0b1GzRB|rRp z)#~!07dj=;XXc(Q?7u$GFi8Bt_8rUfgSo5uj(aVCX!|{i`}Mm$+Rl&9x6@=oaIWyQ9>UWtM74t({wbWDl;Zx;z-0M@j+rqrIvKD%s_^|8L)QcjgBxhV(^iyGt zte%WS=OM6=Kd3%bR z7IeO`4H5USx-QP{b$jhTn@_Q}rBc=W?6+GLE7!XDAIkU=eD=}G=K;ZMK1W*rOeGbY)?{qr+zpelMAHiRaiYxf74p z1wZ(x(KYXJu;`7!S>BXD^c@_m%7~W0Zoawu=p}6wIm8`QbtXc1Dw9|9EHqUK6-xVOaBlh5_P2a0`U(Wr!)%tX8tnWNeKh;;)t$xdt$r(j`%-VQGXy=_< zn??541V7FSynlCk;3cJ)RaaK6x!v2-(YJfezn3Cc%;!w&DBB&a6KmHNzv+U>k;%Sy zAFq7*GSHjzpIqF&FCtEVEmrlW#_kWzKK!nv=H4m33daRciz~TeA4`VLxVhlQ*~?Ft zuYd2vOkNtOmfloa-BLwD=2K1>pClu3GcOoM0P#dI`QmkYu~U5S#$p0J8_>= zQ02!$pUWzWiAy$!wzR}rxcQ&c7Updzo;h!QpiP3DS_;3)!>fCXdcso+^u<-rO=L~) zKDF(TI&AZmQM((9v<U5**yhJyWUhY=x83M+K4RsrtfB`}e^;n1h!5_Z=qei~^ySZA&gI<; ztM(-4oq6XPe$;o5Dt}3>>omuwPjudTg?|oQD3mX%|k0|}hkTGpknzim` z@*}m?rCE#juzb}#`Ep&>-HN)NPl7jR_rBVAZ29&p_smnzpG|tybV}!%(J#GcM{~d3 z-&h?k#^WJpzI^x7@}AB9ujfpU%bcOTTl&e}n^WH%E^^jnJ@{?Ht-@D6N}n~ljW$j+ zuXs0Q)~__iM>j)@4(z?DGBa8FpvAuHIoB3^+j2MQwr=W{`}gl&SrVP@{j((J)#tK3 z;d$TKwO56&nr%Jz`qao3fp?!vTR9o830t4bvW53rTj?j;c}i?*-<#e&QdsmdH~oob z(5KStVP)MRZ&eM>vxV*6CaTr^eAU|5Yi`e8ov_R1ilN!DEx8}7+JAq&dyCD@`B}*K zEeTJBHeNgBA8o4jwtdTyonKg2>xVBhSZB9w#on;BKP0q7S54twy6UsbNB8!oRT1$a zxnX-w#%BA>zy2)K;KQa((@s`K{5spYr}mQe9>x6YnGVv2k2szCcht>lbJFAk+>0dK zjOHJ(vA(gfY3+4}Hnj zn$Vn%f(2(2@_X-S=v;fIyZ-ylJ*m?&FV?m`XMA$@_Q%{e#X){sUhmzMw&p!+PUi-n z8OOM0Ncc5R{`08WFrvw`bV``)+V6kNy#B8_ojSFat!N?xJ427mr?QCOhumF;ydKt6#1&<_uom_VR>do)9 zWtU%0RlR;}di-Taw|?t~rd@~f7jAsmtNQ4xU{w5`53;KzCY|mMm?5e0ZO?z@?FYZ@ zGb!P%`5`G)wI=0y{Fhhnk)A)?tGr1c0#0_*Ox^%Yi~%k@3WYsmwuDpUl6_Wa^vTZc?;R6pL->CQ11AGH)S9H z`iZ``d#|_qaGHa-+`hd#LxQE}o_k$8>wo`r{q?)Kwp{$ee~xX6=h2xbZ?0JPvRX1_ zd!o7a?myR-esYOlzv1$aKSxYVuQjD^ZLL~5bM@-feUqmy;`=|XxS?rB&^yb?Pvq`v z-C`)u-fGxg-nHw3UWEJZVi^_IBD-^8)eNgc(@y2M*lNgk_Rf9H^gMmd?vQoUwbpcd zE)2?gnzJP=vuK-y_rrC%q2=r3j)$!DwvD-~Caa(qr1xlI!RiB+c4xfQ_I+=#Tj+6n zapv*uyBMZ4hTrAN^L%ag+fqHDb$RsCtpV#cPUJKFc}6O!&Ruw8Ng;E<93Ut@Y+x$0U@ zv52hrZQZ)3#i!3649*g0-#c%zWkq_(&WFLO?|-&t{aNYa#kInU>yW45OLeD}OP40g z?(jN!&VX&wlB{pbtEQE@d1_qIbkEL?S9zwLU)m-RIsNyq@EIPPHZEmMSbk^y%;|H2 zb8=;mTL0eNu8|Ow=PS2dXv^I@+fEy9+hfY}?&QhNJNv?!j=q}Rz1{lI!5!;#?yi2c zyoAf+T8iSMseL6=mp|C{YoD9Ji9460rj;8OhwM9XYJ;r zwZaSS4GSLV86+=>?T@!USE%N_QO8xa`h2S;*ANnBrTHdlt5ou?&HRqY# z^t-X^xvApvy?6HM)Loms`Pgfd4IdVrJNx<@&+bhR^QTWN+Y`R0ZfZzROxf|N4>M=a zpYrnQxs7!V9C@3Z-#(i6ocBRZnCFVEC)1l(9$oIg=F`(9ixls+g#PnDdvTyHon=!?4*_Pw~85FOpb^R7NSo!me|AXy6q%4-yB`I!S@n z%_6;i>`mRoGhcmSRp6WjT%uQ1zD8{oRgIkR@|*L@pRv(TC7VTGh%9m4AlY5S6IYSC z)YFNlENbCgzNz2aBwHUzgNSCn>+`<^u=0+lM}!+VC>+&QrUC$ySO7mNc+k5*1)?@!~8f(s^H8xO3{` zhBJ~g*ir?TubOx5J=dS>tq(suh-NlibDDCu<`z_*U+E?e0{$)>B4ot;I2Q_NOa4?iKfMj=ihCxvyMa+qL0rkgN2|_aXKH zPLD$^dZhaQ9(HHST-#T`60~~#q47-&4ek3#JKO*^yj)c|!H2&{|s^>4`^f z)iJx>mQh}QwYl1_eEv(X8)sWAa)11MR_%Y=jMr_k$^R<*|Avl{YQd5AB7NT(#4r2@ zgMZav>i+-l_y7L?_aB7*|BwH7@9)R2{~xg1^XKPY66yH9LAGjAuc3#ds>!8XThAva z<}F_qEbP`F?CfBxxcJItWyfVbGkoP1J7g}n%yPmgbAc2uFPqOSUS7H7Q*LE&e36=! z!f?TaS8jpaV)Ye93SSvaqyraxWxxS47&xTNF3p>e`HJDPgJ1)L4+F~q1_lORMgunn z2A0b{5N(`IDH03}Y|AHQs?AdNZ0QeH_|oI-*!j}rva-X4lp_}>3z!_pV)m6};ALQ3 zV3Od>k-1E*K`P_qVqabp24;s84rT{t2et+V1}P&3h6@Y~49p4{CP$bZAf{hjz`(%3 z*1+H~k>!Ho0-sr?zMGscwJ&q|YCV( z!pA)pn@zptmX~nK(rVhZNe7F=LTxm@m$dF#wKkxsXKui}q9C`ty`@HyB6_n{{$_a< z+&pL5g0lui)gtTi{MD7LpO{S5*bq{=Fr`l}$!ke~kOHF{TbcR=qpk@Dd|g6JN&>Dt z5WQU6_*09+>C*Hpy^@%S^z@y^AFIyhuMa!=woPsK36J5o4Qf797)5=0GtXZ2Y#=-eu#%T>-*=4Z@U3Pg}OPU>1 z`F!xMBxl3HSUG`R1+%`yb7vpBeRJRIAHUA$Z~Sxf@3eg1BhUBM=^0FD$xnzr$8*7Z zsZ?~Q3d2Id8{T{VZctQpW|`>BvT$DOQvPMBxgMed4Nja}n7oTF73^z_ybH0QzwaKN@-b~7YgC7xU_a@l&}NW)7zUIa`)U(y8~h?%b#U%gHfHtTouPM399^Ny^{N5hE;4V?@JSvO4NnDJCa+263(-tFe|+l-E? ziXVH9MP9mezh;%lbbGrbu0KtUte3Btn}- zx6$@+o_k+&w(opDb84c#yvMD_{i}ZOITv}WcrWJ)_2*Znoot!@a@CBBGbWTT=l44N z=3=y4u#hKmn7A#m8TX4*S0*QV%4Mpk>z>TmC2 zcEzl^8}??i(dh-^clRA$vMNEIFG{ALS!v1y2Cvz?iDy~PNEa^p>&h?Or6(ehz@qZU zbHc%$P*HSXc3r)AEZyQF23NGXS>V%o*>ez)0bcGu^eKBHSK>z8KAwmkgZ z7E`mJHAh;+zy6x#d*+smWM%k-Nlvru_byoS^1>vislxMK-%(U)y{@Rz`ssz!gQ`56 zY5T6pJ~G&_RA}BLA&-Cylbo)Ftz5WG?NWZCXyQVZR?#_Ma@>kr9$t#sIwdgwh+<_^ zng2>BPp&WGYh#uNpFbOu`Rs^7$()B9j8B&YT=)Lh8UY1X5I9SN3qT3|o5j*prhCp3t9FL1i;Jc$)Q4%#;*=Mtxlnhz& z6y_?&a4|8t=blVe1CdhbJpdnzP;zU_Wyo- zFe$XVKlV_{hN!=j7b~9R3R9=x`r= zKC3v}*0M{`(~@(tiGZ<_f=!yhoU1$%weQaFKM=Ryx<3BJm-yt4^1@$cGi#^+KC#{1 zK*;j;?Glv0aI3VwaE zP3GP4+0NRMW)&0o+#YT=@Ar%LRn@%s{X>#;k7Q)ihpNx3KB(loT6%^wT|RTg@N3bA z%6%JFNbZs^%#A(0zC7;xF7c$QJ&Crz*KM*+-&tjnx{-J7IyI$`oe3^VsUkKpTpzBf zJ_`zdRFuedw=HH%ZN=`_LH94_%!#sLD-GCbQToHk;&I>o+I82~7tHm3`R>4U7Wqq? z6%Bis{nlCec6SJbth)Lx?(?(F{mZgeYF(Z6e8Z+^b)_etd`@Kn?I~jh*+ed z*qHKKS|nxbwL(#jqAy))6FCn3%D#ItL%qS_L!??l_9?YTX_vW9tz_ycVq-T+XVY5q z^@kF#c`wkPu5 z&XAtz(wOeRBmMY%b7GK1?WP$$FXv8oN^)JvpBcGsqgYsA@pgSDuS-j3v(H&|{n|rC zskIENr)X_jQkkjeEf-A<#pdDZ~D14@paQN f?%fHhH6j!KSlrk(J74~P_fDlb8XlJMrxO?eX&K^t diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index f926469a403..6a183457f08 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -27,7 +27,7 @@ rec { inherit system; name = "curl"; builder = bootstrapTools.bash; - inherit (bootstrapTools) bunzip2 cp curl; + inherit (bootstrapTools) bzip2 cp curl; args = [ ./scripts/unpack-curl.sh ]; }; @@ -45,7 +45,7 @@ rec { downloadAndUnpack = pkgname: {url, sha1}: derivation { name = pkgname; builder = bootstrapTools.bash; - inherit (bootstrapTools) bunzip2 tar cp; + inherit (bootstrapTools) bzip2 tar cp; args = [ ./scripts/unpack.sh ]; tarball = download {inherit url sha1 pkgname;}; inherit system; diff --git a/pkgs/stdenv/linux/scripts/unpack-curl.sh b/pkgs/stdenv/linux/scripts/unpack-curl.sh index 147edcebe04..3023f865c94 100644 --- a/pkgs/stdenv/linux/scripts/unpack-curl.sh +++ b/pkgs/stdenv/linux/scripts/unpack-curl.sh @@ -7,5 +7,5 @@ $cp -prvd . $out $cp -prvd . $out/bin $cp $curl curl.bz2 -$bunzip2 -d curl.bz2 +$bzip2 -d curl.bz2 $cp curl $out/bin diff --git a/pkgs/stdenv/linux/scripts/unpack.sh b/pkgs/stdenv/linux/scripts/unpack.sh index ef3eaf6349c..eb916cbc48d 100644 --- a/pkgs/stdenv/linux/scripts/unpack.sh +++ b/pkgs/stdenv/linux/scripts/unpack.sh @@ -1,8 +1,8 @@ set -e $cp $tar .tar.bz2 -$bunzip2 .tar.bz2 +$bzip2 -d .tar.bz2 -$bunzip2 -d < $tarball | ./.tar xvf - +$bzip2 -d < $tarball | ./.tar xvf - $cp -prd * $out From 4045c3ab120a87076d6798d2acff684d704c425c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 21:59:10 +0000 Subject: [PATCH 057/320] 2.6.23.1 is default kernel svn path=/nixpkgs/branches/stdenv-updates/; revision=9841 --- pkgs/os-specific/linux/kernel/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/kernel/default.nix b/pkgs/os-specific/linux/kernel/default.nix index 36a7552352e..c07bc4c81fb 100644 --- a/pkgs/os-specific/linux/kernel/default.nix +++ b/pkgs/os-specific/linux/kernel/default.nix @@ -27,4 +27,5 @@ args.stdenv.lib.listOfListsToAttrs [ [ "2.6.22-ck" (import ./2.6.22-ck.nix newArgs) ] [ "2.6.23" (import ./2.6.23.nix newArgs) ] [ "2.6.23.1" (import ./2.6.23.1.nix newArgs) ] + [ "default" (import ./2.6.23.1.nix newArgs) ] ] From c3a8c454318e964de61c12a1036adbb1700e5c1f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 22:10:59 +0000 Subject: [PATCH 058/320] Fixed some typos in -ck kernels svn path=/nixpkgs/branches/stdenv-updates/; revision=9842 --- pkgs/os-specific/linux/kernel/2.6.21-ck.nix | 2 +- pkgs/os-specific/linux/kernel/2.6.22-ck.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/2.6.21-ck.nix b/pkgs/os-specific/linux/kernel/2.6.21-ck.nix index 6352d39edb1..0fb902c695e 100644 --- a/pkgs/os-specific/linux/kernel/2.6.21-ck.nix +++ b/pkgs/os-specific/linux/kernel/2.6.21-ck.nix @@ -2,7 +2,7 @@ args: (import ./2.6.21.nix) ( args // { - extraPatches = (if (args ? extraPatches) args.extraPatches else []) ++ + extraPatches = (if (args ? extraPatches) then args.extraPatches else []) ++ [ { name = "Con Kolivas Patch"; diff --git a/pkgs/os-specific/linux/kernel/2.6.22-ck.nix b/pkgs/os-specific/linux/kernel/2.6.22-ck.nix index 75352da8dbc..23a134cfc77 100644 --- a/pkgs/os-specific/linux/kernel/2.6.22-ck.nix +++ b/pkgs/os-specific/linux/kernel/2.6.22-ck.nix @@ -2,7 +2,7 @@ args: (import ./2.6.22.nix) ( args // { - extraPatches = (if (args ? extraPatches) args.extraPatches else []) ++ + extraPatches = (if (args ? extraPatches) then args.extraPatches else []) ++ [ { name = "Con Kolivas Patch"; From 1893bbb8605cbcce5c01167b55af070c3b551693 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 22:26:36 +0000 Subject: [PATCH 059/320] More typos svn path=/nixpkgs/branches/stdenv-updates/; revision=9843 --- pkgs/os-specific/linux/kernel/2.6.21.nix | 4 ++-- pkgs/os-specific/linux/kernel/2.6.22.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/2.6.21.nix b/pkgs/os-specific/linux/kernel/2.6.21.nix index 7005671bf2d..1e822fa1627 100644 --- a/pkgs/os-specific/linux/kernel/2.6.21.nix +++ b/pkgs/os-specific/linux/kernel/2.6.21.nix @@ -18,7 +18,7 @@ args: patch = ./2.6.20-paravirt-nvidia.patch; } { name = "skas-2.6.20-v9-pre9"; - patch = fetchurl { + patch = args.fetchurl { url = http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/skas-2.6.20-v9-pre9/skas-2.6.20-v9-pre9.patch.bz2; md5 = "02e619e5b3aaf0f9768f03ac42753e74"; }; @@ -27,7 +27,7 @@ args: "# CONFIG_PROC_MM_DUMPABLE is not set\n"; } { name = "fbsplash-0.9.2-r5-2.6.21"; - patch = fetchurl { + patch = args.fetchurl { url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.21/4200_fbsplash-0.9.2-r5.patch; sha256 = "00s8074fzsly2zpir885zqkvq267qyzg6vhsn7n1z2v1z78avxd8"; }; diff --git a/pkgs/os-specific/linux/kernel/2.6.22.nix b/pkgs/os-specific/linux/kernel/2.6.22.nix index 43cbc485251..6725d069381 100644 --- a/pkgs/os-specific/linux/kernel/2.6.22.nix +++ b/pkgs/os-specific/linux/kernel/2.6.22.nix @@ -10,7 +10,7 @@ args: patch = ../os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch; } { name = "fbsplash-0.9.2-r5-2.6.21"; - patch = fetchurl { + patch = args.fetchurl { url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px"; }; From 22d52c456a8d48254c62c7d2f8bacad8b2a9873f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 22:48:03 +0000 Subject: [PATCH 060/320] More typos in kernel-related exprs svn path=/nixpkgs/branches/stdenv-updates/; revision=9844 --- pkgs/os-specific/linux/kernel/2.6.20.nix | 2 +- pkgs/os-specific/linux/kernel/2.6.21.nix | 2 +- pkgs/os-specific/linux/kernel/2.6.22.nix | 2 +- pkgs/os-specific/linux/kernel/2.6.23.1.nix | 8 ++++---- pkgs/os-specific/linux/kernel/2.6.23.nix | 2 +- pkgs/os-specific/linux/kernel/meta.nix | 2 +- pkgs/top-level/all-packages.nix | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/2.6.20.nix b/pkgs/os-specific/linux/kernel/2.6.20.nix index 4b776dcb706..b6c0c70b580 100644 --- a/pkgs/os-specific/linux/kernel/2.6.20.nix +++ b/pkgs/os-specific/linux/kernel/2.6.20.nix @@ -28,7 +28,7 @@ args: ]; config = with args; - if kernelConfig != null then kernelConfig else + if config != null then config else if userModeLinux then ./config-2.6.20-uml else if stdenv.system == "i686-linux" then ./config-2.6.20-i686-smp else if stdenv.system == "x86_64-linux" then ./config-2.6.20-x86_64-smp else diff --git a/pkgs/os-specific/linux/kernel/2.6.21.nix b/pkgs/os-specific/linux/kernel/2.6.21.nix index 1e822fa1627..da7ef60e096 100644 --- a/pkgs/os-specific/linux/kernel/2.6.21.nix +++ b/pkgs/os-specific/linux/kernel/2.6.21.nix @@ -36,7 +36,7 @@ args: ]; config = with args; - if kernelConfig != null then kernelConfig else + if config != null then config else if userModeLinux then ./config-2.6.21-uml else if stdenv.system == "i686-linux" then ./config-2.6.21-i686-smp else if stdenv.system == "x86_64-linux" then ./config-2.6.21-x86_64-smp else diff --git a/pkgs/os-specific/linux/kernel/2.6.22.nix b/pkgs/os-specific/linux/kernel/2.6.22.nix index 6725d069381..63943cd9893 100644 --- a/pkgs/os-specific/linux/kernel/2.6.22.nix +++ b/pkgs/os-specific/linux/kernel/2.6.22.nix @@ -19,7 +19,7 @@ args: ]; config = with args; - if kernelConfig != null then kernelConfig else + if config != null then config else if userModeLinux then ./config-2.6.22-uml else if stdenv.system == "i686-linux" then ./config-2.6.22-i686-smp else if stdenv.system == "x86_64-linux" then ./config-2.6.22-x86_64-smp else diff --git a/pkgs/os-specific/linux/kernel/2.6.23.1.nix b/pkgs/os-specific/linux/kernel/2.6.23.1.nix index 9ba12173a11..3d4244a74da 100644 --- a/pkgs/os-specific/linux/kernel/2.6.23.1.nix +++ b/pkgs/os-specific/linux/kernel/2.6.23.1.nix @@ -32,10 +32,10 @@ args: ]; config = with args; - if kernelConfig != null then kernelConfig else - if userModeLinux then ./config-2.6.23.1-uml else - if stdenv.system == "i686-linux" then ./config-2.6.23.1-i686-smp else - if stdenv.system == "x86_64-linux" then ./config-2.6.23.1-x86_64-smp else + if config != null then config else + if userModeLinux then ./config-2.6.23-uml else + if stdenv.system == "i686-linux" then ./config-2.6.23-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.23-x86_64-smp else abort "No kernel configuration for your platform!"; } ) diff --git a/pkgs/os-specific/linux/kernel/2.6.23.nix b/pkgs/os-specific/linux/kernel/2.6.23.nix index ad06bc4f7eb..ddbd56c92af 100644 --- a/pkgs/os-specific/linux/kernel/2.6.23.nix +++ b/pkgs/os-specific/linux/kernel/2.6.23.nix @@ -8,7 +8,7 @@ args: systemPatches = [ ]; config = with args; - if kernelConfig != null then kernelConfig else + if config != null then config else if userModeLinux then ./config-2.6.23.1-uml else if stdenv.system == "i686-linux" then ./config-2.6.23.1-i686-smp else if stdenv.system == "x86_64-linux" then ./config-2.6.23.1-x86_64-smp else diff --git a/pkgs/os-specific/linux/kernel/meta.nix b/pkgs/os-specific/linux/kernel/meta.nix index b52c0b55c52..8dcdcecab52 100644 --- a/pkgs/os-specific/linux/kernel/meta.nix +++ b/pkgs/os-specific/linux/kernel/meta.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation { map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches; in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig)); - config = configFile; + inherit config; buildInputs = [perl mktemp]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 781e1e9f165..4c9f5af28b8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3162,10 +3162,10 @@ rec { inherit fetchurl stdenv; }; - uml = import ../os-specific/linux/kernel/linux-2.6.20.nix { + uml = (import ../os-specific/linux/kernel { inherit fetchurl stdenv perl mktemp module_init_tools; userModeLinux = true; - }; + }).default; umlutilities = import ../os-specific/linux/uml-utilities { inherit fetchurl kernelHeaders stdenv; From d6027b718be0cf0850a5453ad46ea7266e79bf80 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 23:01:17 +0000 Subject: [PATCH 061/320] Typo in acerhk module svn path=/nixpkgs/branches/stdenv-updates/; revision=9845 --- 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 4c9f5af28b8..cabf527ea35 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2788,7 +2788,7 @@ rec { # this creates a patch which can be applied to the kernel to integrate this module.. kernel_module_acerhk = import ../os-specific/linux/kernel/acerhk { inherit fetchurl stdenv gnupatch; - kernel = builtins.getAttr kernel "2.6.21"; + kernel = builtins.getAttr "2.6.21" kernel; debug = true; }; From 2be10fd095a9dabb79b61ebbb157d22bab33a654 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 23:07:22 +0000 Subject: [PATCH 062/320] Another typo in acerhk svn path=/nixpkgs/branches/stdenv-updates/; revision=9846 --- 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 cabf527ea35..2d128df38fb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2788,7 +2788,7 @@ rec { # this creates a patch which can be applied to the kernel to integrate this module.. kernel_module_acerhk = import ../os-specific/linux/kernel/acerhk { inherit fetchurl stdenv gnupatch; - kernel = builtins.getAttr "2.6.21" kernel; + kernel = builtins.getAttr "2.6.21" kernel_alts; debug = true; }; From 29b6f99016b891ea4b410f5c3e56546ea54315a5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 23:12:54 +0000 Subject: [PATCH 063/320] typo in facile svn path=/nixpkgs/branches/stdenv-updates/; revision=9847 --- 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 2d128df38fb..aa0d18e4455 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1680,7 +1680,7 @@ rec { facile = import ../development/libraries/facile { inherit fetchurl stdenv; # Actually, we don't need this version but we need native-code compilation - ocaml = ocaml_alts.v_3_10_0; + ocaml = builtins.getAttr "3.10.0" ocaml_alts; }; ffmpeg = import ../development/libraries/ffmpeg { From c05319d084d7a73e4d94e8f21844fd739ca989b1 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 23:27:53 +0000 Subject: [PATCH 064/320] Typo in path to the patch svn path=/nixpkgs/branches/stdenv-updates/; revision=9848 --- pkgs/os-specific/linux/kernel/2.6.22.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/2.6.22.nix b/pkgs/os-specific/linux/kernel/2.6.22.nix index 63943cd9893..c3d167f6b19 100644 --- a/pkgs/os-specific/linux/kernel/2.6.22.nix +++ b/pkgs/os-specific/linux/kernel/2.6.22.nix @@ -7,7 +7,7 @@ args: systemPatches = [ { name = "paravirt-nvidia"; - patch = ../os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch; + patch = ./2.6.22-paravirt-nvidia.patch; } { name = "fbsplash-0.9.2-r5-2.6.21"; patch = args.fetchurl { From 19991467680019f249ead4f025228c1cd4554210 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 23:33:53 +0000 Subject: [PATCH 065/320] Removed v_*_* getVersion syntax svn path=/nixpkgs/branches/stdenv-updates/; revision=9849 --- pkgs/top-level/all-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index aa0d18e4455..207965a6217 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1099,7 +1099,7 @@ rec { qcmm = import ../development/compilers/qcmm { lua = lua4; - ocaml = ocaml_alts.v_3_08_0; + ocaml = builtins.getAttr "3.08.0" ocaml_alts; inherit fetchurl stdenv mk noweb groff; }; @@ -1212,7 +1212,7 @@ rec { pyrexFun = lib.sumArgs (import ../development/interpreters/pyrex) { inherit fetchurl stdenv stringsWithDeps lib builderDefs; - python = python_alts.v_2_5; + python = builtins.getAttr "2.5" python_alts; }; pyrex = pyrexFun { @@ -3851,7 +3851,7 @@ rec { pythonmagick = import ../applications/graphics/PythonMagick { inherit fetchurl stdenv pkgconfig imagemagick boost; - python = python_alts.v_2_5; + python = builtins.getAttr "2.5" python_alts; }; ratpoison = import ../applications/window-managers/ratpoison { From 6f5e75b1020a358fd7fd5e1e572522a481aec960 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 3 Dec 2007 23:40:46 +0000 Subject: [PATCH 066/320] Kernel: Removed unneeded config (it was a copy of 2.6.23); fixed one more typo. svn path=/nixpkgs/branches/stdenv-updates/; revision=9850 --- pkgs/os-specific/linux/kernel/2.6.23.nix | 6 +- .../linux/kernel/config-2.6.23.1-i686-smp | 3756 ----------------- 2 files changed, 3 insertions(+), 3759 deletions(-) delete mode 100644 pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp diff --git a/pkgs/os-specific/linux/kernel/2.6.23.nix b/pkgs/os-specific/linux/kernel/2.6.23.nix index ddbd56c92af..3b8c2c469a7 100644 --- a/pkgs/os-specific/linux/kernel/2.6.23.nix +++ b/pkgs/os-specific/linux/kernel/2.6.23.nix @@ -9,9 +9,9 @@ args: config = with args; if config != null then config else - if userModeLinux then ./config-2.6.23.1-uml else - if stdenv.system == "i686-linux" then ./config-2.6.23.1-i686-smp else - if stdenv.system == "x86_64-linux" then ./config-2.6.23.1-x86_64-smp else + if userModeLinux then ./config-2.6.23-uml else + if stdenv.system == "i686-linux" then ./config-2.6.23-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.23-x86_64-smp else abort "No kernel configuration for your platform!"; } ) diff --git a/pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp b/pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp deleted file mode 100644 index 5e472930410..00000000000 --- a/pkgs/os-specific/linux/kernel/config-2.6.23.1-i686-smp +++ /dev/null @@ -1,3756 +0,0 @@ -# -# Automatically generated make config: don't edit -# Linux kernel version: 2.6.23.1 -# Wed Oct 31 14:47:06 2007 -# -CONFIG_X86_32=y -CONFIG_GENERIC_TIME=y -CONFIG_GENERIC_CMOS_UPDATE=y -CONFIG_CLOCKSOURCE_WATCHDOG=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_SEMAPHORE_SLEEPERS=y -CONFIG_X86=y -CONFIG_MMU=y -CONFIG_ZONE_DMA=y -CONFIG_QUICKLIST=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_IOMAP=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_ARCH_MAY_HAVE_PC_FDC=y -CONFIG_DMI=y -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" - -# -# General setup -# -CONFIG_EXPERIMENTAL=y -CONFIG_LOCK_KERNEL=y -CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_LOCALVERSION="-default" -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -CONFIG_POSIX_MQUEUE=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -# CONFIG_TASKSTATS is not set -# CONFIG_USER_NS is not set -CONFIG_AUDIT=y -CONFIG_AUDITSYSCALL=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=17 -# CONFIG_CPUSETS is not set -# CONFIG_SYSFS_DEPRECATED is not set -CONFIG_RELAY=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_SYSCTL=y -# CONFIG_EMBEDDED is not set -CONFIG_UID16=y -CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_ANON_INODES=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_SLAB=y -# CONFIG_SLUB is not set -# CONFIG_SLOB is not set -CONFIG_RT_MUTEXES=y -# CONFIG_TINY_SHMEM is not set -CONFIG_BASE_SMALL=0 -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_KMOD=y -CONFIG_STOP_MACHINE=y -CONFIG_BLOCK=y -CONFIG_LBD=y -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_LSF is not set -# CONFIG_BLK_DEV_BSG is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_DEFAULT_AS is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" - -# -# Processor type and features -# -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_SMP=y -CONFIG_X86_PC=y -# CONFIG_X86_ELAN is not set -# CONFIG_X86_VOYAGER is not set -# CONFIG_X86_NUMAQ is not set -# CONFIG_X86_SUMMIT is not set -# CONFIG_X86_BIGSMP is not set -# CONFIG_X86_VISWS is not set -# CONFIG_X86_GENERICARCH is not set -# CONFIG_X86_ES7000 is not set -CONFIG_PARAVIRT=y -CONFIG_XEN=y -CONFIG_VMI=y -# CONFIG_M386 is not set -# CONFIG_M486 is not set -# CONFIG_M586 is not set -# CONFIG_M586TSC is not set -# CONFIG_M586MMX is not set -CONFIG_M686=y -# CONFIG_MPENTIUMII is not set -# CONFIG_MPENTIUMIII is not set -# CONFIG_MPENTIUMM is not set -# CONFIG_MCORE2 is not set -# CONFIG_MPENTIUM4 is not set -# CONFIG_MK6 is not set -# CONFIG_MK7 is not set -# CONFIG_MK8 is not set -# CONFIG_MCRUSOE is not set -# CONFIG_MEFFICEON is not set -# CONFIG_MWINCHIPC6 is not set -# CONFIG_MWINCHIP2 is not set -# CONFIG_MWINCHIP3D is not set -# CONFIG_MGEODEGX1 is not set -# CONFIG_MGEODE_LX is not set -# CONFIG_MCYRIXIII is not set -# CONFIG_MVIAC3_2 is not set -# CONFIG_MVIAC7 is not set -CONFIG_X86_GENERIC=y -CONFIG_X86_CMPXCHG=y -CONFIG_X86_L1_CACHE_SHIFT=7 -CONFIG_X86_XADD=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y -# CONFIG_ARCH_HAS_ILOG2_U32 is not set -# CONFIG_ARCH_HAS_ILOG2_U64 is not set -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_X86_PPRO_FENCE=y -CONFIG_X86_WP_WORKS_OK=y -CONFIG_X86_INVLPG=y -CONFIG_X86_BSWAP=y -CONFIG_X86_POPAD_OK=y -CONFIG_X86_GOOD_APIC=y -CONFIG_X86_INTEL_USERCOPY=y -CONFIG_X86_USE_PPRO_CHECKSUM=y -CONFIG_X86_TSC=y -CONFIG_X86_CMOV=y -CONFIG_X86_MINIMUM_CPU_FAMILY=4 -CONFIG_HPET_TIMER=y -CONFIG_HPET_EMULATE_RTC=y -CONFIG_NR_CPUS=8 -CONFIG_SCHED_SMT=y -CONFIG_SCHED_MC=y -# CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_VOLUNTARY=y -# CONFIG_PREEMPT is not set -CONFIG_PREEMPT_BKL=y -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y -CONFIG_X86_MCE=y -CONFIG_X86_MCE_NONFATAL=y -CONFIG_X86_MCE_P4THERMAL=y -CONFIG_VM86=y -CONFIG_TOSHIBA=m -CONFIG_I8K=m -CONFIG_X86_REBOOTFIXUPS=y -CONFIG_MICROCODE=m -CONFIG_MICROCODE_OLD_INTERFACE=y -CONFIG_X86_MSR=m -CONFIG_X86_CPUID=m - -# -# Firmware Drivers -# -CONFIG_EDD=m -CONFIG_EFI_VARS=m -CONFIG_DELL_RBU=m -CONFIG_DCDBAS=m -CONFIG_DMIID=y -# CONFIG_NOHIGHMEM is not set -CONFIG_HIGHMEM4G=y -# CONFIG_HIGHMEM64G is not set -CONFIG_PAGE_OFFSET=0xC0000000 -CONFIG_HIGHMEM=y -CONFIG_ARCH_FLATMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_POPULATES_NODE_MAP=y -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_FLATMEM_MANUAL=y -# CONFIG_DISCONTIGMEM_MANUAL is not set -# CONFIG_SPARSEMEM_MANUAL is not set -CONFIG_FLATMEM=y -CONFIG_FLAT_NODE_MEM_MAP=y -CONFIG_SPARSEMEM_STATIC=y -CONFIG_SPLIT_PTLOCK_CPUS=4096 -# CONFIG_RESOURCES_64BIT is not set -CONFIG_ZONE_DMA_FLAG=1 -CONFIG_BOUNCE=y -CONFIG_NR_QUICK=1 -CONFIG_VIRT_TO_BUS=y -CONFIG_HIGHPTE=y -# CONFIG_MATH_EMULATION is not set -CONFIG_MTRR=y -CONFIG_EFI=y -CONFIG_IRQBALANCE=y -CONFIG_BOOT_IOREMAP=y -CONFIG_SECCOMP=y -# CONFIG_HZ_100 is not set -CONFIG_HZ_250=y -# CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=250 -CONFIG_KEXEC=y -# CONFIG_CRASH_DUMP is not set -CONFIG_PHYSICAL_START=0x100000 -# CONFIG_RELOCATABLE is not set -CONFIG_PHYSICAL_ALIGN=0x100000 -CONFIG_HOTPLUG_CPU=y -CONFIG_COMPAT_VDSO=y -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y - -# -# Power management options (ACPI, APM) -# -CONFIG_PM=y -CONFIG_PM_LEGACY=y -# CONFIG_PM_DEBUG is not set -CONFIG_PM_SLEEP_SMP=y -CONFIG_PM_SLEEP=y -CONFIG_SUSPEND_SMP_POSSIBLE=y -CONFIG_SUSPEND=y -CONFIG_HIBERNATION_SMP_POSSIBLE=y -CONFIG_HIBERNATION=y -CONFIG_PM_STD_PARTITION="" -CONFIG_ACPI=y -CONFIG_ACPI_SLEEP=y -CONFIG_ACPI_PROCFS=y -CONFIG_ACPI_PROC_EVENT=y -CONFIG_ACPI_AC=m -CONFIG_ACPI_BATTERY=m -CONFIG_ACPI_BUTTON=m -CONFIG_ACPI_VIDEO=m -CONFIG_ACPI_FAN=m -CONFIG_ACPI_DOCK=m -CONFIG_ACPI_BAY=m -CONFIG_ACPI_PROCESSOR=m -CONFIG_ACPI_HOTPLUG_CPU=y -CONFIG_ACPI_THERMAL=m -CONFIG_ACPI_ASUS=m -CONFIG_ACPI_TOSHIBA=m -# CONFIG_ACPI_CUSTOM_DSDT is not set -CONFIG_ACPI_BLACKLIST_YEAR=2001 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_SYSTEM=y -CONFIG_X86_PM_TIMER=y -CONFIG_ACPI_CONTAINER=m -# CONFIG_ACPI_SBS is not set -CONFIG_APM=y -# CONFIG_APM_IGNORE_USER_SUSPEND is not set -CONFIG_APM_DO_ENABLE=y -# CONFIG_APM_CPU_IDLE is not set -CONFIG_APM_DISPLAY_BLANK=y -CONFIG_APM_ALLOW_INTS=y -# CONFIG_APM_REAL_MODE_POWER_OFF is not set - -# -# CPU Frequency scaling -# -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_TABLE=m -# CONFIG_CPU_FREQ_DEBUG is not set -CONFIG_CPU_FREQ_STAT=m -CONFIG_CPU_FREQ_STAT_DETAILS=y -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=m -CONFIG_CPU_FREQ_GOV_USERSPACE=m -CONFIG_CPU_FREQ_GOV_ONDEMAND=m -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m - -# -# CPUFreq processor drivers -# -CONFIG_X86_ACPI_CPUFREQ=m -CONFIG_X86_POWERNOW_K6=m -CONFIG_X86_POWERNOW_K7=m -CONFIG_X86_POWERNOW_K7_ACPI=y -CONFIG_X86_POWERNOW_K8=m -CONFIG_X86_POWERNOW_K8_ACPI=y -CONFIG_X86_GX_SUSPMOD=m -CONFIG_X86_SPEEDSTEP_CENTRINO=m -CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y -CONFIG_X86_SPEEDSTEP_ICH=m -CONFIG_X86_SPEEDSTEP_SMI=m -CONFIG_X86_P4_CLOCKMOD=m -CONFIG_X86_CPUFREQ_NFORCE2=m -CONFIG_X86_LONGRUN=m -CONFIG_X86_LONGHAUL=m -CONFIG_X86_E_POWERSAVER=m - -# -# shared options -# -# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set -CONFIG_X86_SPEEDSTEP_LIB=m -CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y - -# -# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -# -CONFIG_PCI=y -# CONFIG_PCI_GOBIOS is not set -# CONFIG_PCI_GOMMCONFIG is not set -# CONFIG_PCI_GODIRECT is not set -CONFIG_PCI_GOANY=y -CONFIG_PCI_BIOS=y -CONFIG_PCI_DIRECT=y -CONFIG_PCI_MMCONFIG=y -CONFIG_PCIEPORTBUS=y -CONFIG_HOTPLUG_PCI_PCIE=m -# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set -CONFIG_PCIEAER=y -CONFIG_ARCH_SUPPORTS_MSI=y -CONFIG_PCI_MSI=y -# CONFIG_PCI_DEBUG is not set -CONFIG_HT_IRQ=y -CONFIG_ISA_DMA_API=y -CONFIG_ISA=y -# CONFIG_EISA is not set -# CONFIG_MCA is not set -CONFIG_SCx200=m -CONFIG_SCx200HR_TIMER=m -CONFIG_K8_NB=y - -# -# PCCARD (PCMCIA/CardBus) support -# -CONFIG_PCCARD=m -# CONFIG_PCMCIA_DEBUG is not set -CONFIG_PCMCIA=m -CONFIG_PCMCIA_LOAD_CIS=y -CONFIG_PCMCIA_IOCTL=y -CONFIG_CARDBUS=y - -# -# PC-card bridges -# -CONFIG_YENTA=m -CONFIG_YENTA_O2=y -CONFIG_YENTA_RICOH=y -CONFIG_YENTA_TI=y -CONFIG_YENTA_ENE_TUNE=y -CONFIG_YENTA_TOSHIBA=y -CONFIG_PD6729=m -CONFIG_I82092=m -CONFIG_I82365=m -CONFIG_TCIC=m -CONFIG_PCMCIA_PROBE=y -CONFIG_PCCARD_NONSTATIC=m -CONFIG_HOTPLUG_PCI=m -CONFIG_HOTPLUG_PCI_FAKE=m -CONFIG_HOTPLUG_PCI_COMPAQ=m -CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y -CONFIG_HOTPLUG_PCI_IBM=m -CONFIG_HOTPLUG_PCI_ACPI=m -CONFIG_HOTPLUG_PCI_ACPI_IBM=m -CONFIG_HOTPLUG_PCI_CPCI=y -CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m -CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m -CONFIG_HOTPLUG_PCI_SHPC=m - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_AOUT=m -CONFIG_BINFMT_MISC=m - -# -# Networking -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=m -CONFIG_PACKET_MMAP=y -CONFIG_UNIX=y -CONFIG_XFRM=y -CONFIG_XFRM_USER=m -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -CONFIG_NET_KEY=m -# CONFIG_NET_KEY_MIGRATE is not set -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_ASK_IP_FIB_HASH=y -# CONFIG_IP_FIB_TRIE is not set -CONFIG_IP_FIB_HASH=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -# CONFIG_IP_PNP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -CONFIG_INET_IPCOMP=m -CONFIG_INET_XFRM_TUNNEL=m -CONFIG_INET_TUNNEL=m -CONFIG_INET_XFRM_MODE_TRANSPORT=m -CONFIG_INET_XFRM_MODE_TUNNEL=m -CONFIG_INET_XFRM_MODE_BEET=m -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=m -CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m -CONFIG_TCP_CONG_HSTCP=m -CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_VEGAS=m -CONFIG_TCP_CONG_SCALABLE=m -# CONFIG_TCP_CONG_LP is not set -# CONFIG_TCP_CONG_VENO is not set -CONFIG_TCP_CONG_YEAH=m -CONFIG_TCP_CONG_ILLINOIS=m -# CONFIG_DEFAULT_BIC is not set -# CONFIG_DEFAULT_CUBIC is not set -# CONFIG_DEFAULT_HTCP is not set -# CONFIG_DEFAULT_VEGAS is not set -# CONFIG_DEFAULT_WESTWOOD is not set -CONFIG_DEFAULT_RENO=y -CONFIG_DEFAULT_TCP_CONG="reno" -# CONFIG_TCP_MD5SIG is not set -CONFIG_IP_VS=m -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y - -# -# IPVS scheduler -# -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m - -# -# IPVS application helper -# -CONFIG_IP_VS_FTP=m -CONFIG_IPV6=m -CONFIG_IPV6_PRIVACY=y -# CONFIG_IPV6_ROUTER_PREF is not set -# CONFIG_IPV6_OPTIMISTIC_DAD is not set -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -CONFIG_INET6_IPCOMP=m -# CONFIG_IPV6_MIP6 is not set -CONFIG_INET6_XFRM_TUNNEL=m -CONFIG_INET6_TUNNEL=m -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET6_XFRM_MODE_BEET=m -# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set -CONFIG_IPV6_SIT=m -CONFIG_IPV6_TUNNEL=m -# CONFIG_IPV6_MULTIPLE_TABLES is not set -# CONFIG_NETLABEL is not set -CONFIG_NETWORK_SECMARK=y -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_BRIDGE_NETFILTER=y - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_NETLINK=m -CONFIG_NETFILTER_NETLINK_QUEUE=m -CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NF_CONNTRACK_ENABLED=m -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CT_ACCT=y -CONFIG_NF_CONNTRACK_MARK=y -# CONFIG_NF_CONNTRACK_SECMARK is not set -# CONFIG_NF_CONNTRACK_EVENTS is not set -CONFIG_NF_CT_PROTO_GRE=m -CONFIG_NF_CT_PROTO_SCTP=m -CONFIG_NF_CT_PROTO_UDPLITE=m -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NETFILTER_XTABLES=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m - -# -# IP: Netfilter Configuration -# -CONFIG_NF_CONNTRACK_IPV4=m -CONFIG_NF_CONNTRACK_PROC_COMPAT=y -CONFIG_IP_NF_QUEUE=m -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_IPRANGE=m -CONFIG_IP_NF_MATCH_TOS=m -CONFIG_IP_NF_MATCH_RECENT=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_MATCH_OWNER=m -CONFIG_IP_NF_MATCH_ADDRTYPE=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_LOG=m -CONFIG_IP_NF_TARGET_ULOG=m -CONFIG_NF_NAT=m -CONFIG_NF_NAT_NEEDED=y -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_SAME=m -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PROTO_GRE=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_TFTP=m -CONFIG_NF_NAT_AMANDA=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m -CONFIG_NF_NAT_SIP=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_TOS=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_RAW=m -# CONFIG_IP_NF_ARPTABLES is not set - -# -# IPv6: Netfilter Configuration (EXPERIMENTAL) -# -CONFIG_NF_CONNTRACK_IPV6=m -CONFIG_IP6_NF_QUEUE=m -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_OWNER=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_LOG=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_RAW=m - -# -# DECnet: Netfilter Configuration -# -CONFIG_DECNET_NF_GRABULATOR=m - -# -# Bridge: Netfilter Configuration -# -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_ULOG=m -# CONFIG_IP_DCCP is not set -CONFIG_IP_SCTP=m -# CONFIG_SCTP_DBG_MSG is not set -# CONFIG_SCTP_DBG_OBJCNT is not set -# CONFIG_SCTP_HMAC_NONE is not set -# CONFIG_SCTP_HMAC_SHA1 is not set -CONFIG_SCTP_HMAC_MD5=y -# CONFIG_TIPC is not set -CONFIG_ATM=m -CONFIG_ATM_CLIP=m -CONFIG_ATM_CLIP_NO_ICMP=y -CONFIG_ATM_LANE=m -CONFIG_ATM_MPOA=m -CONFIG_ATM_BR2684=m -# CONFIG_ATM_BR2684_IPFILTER is not set -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -CONFIG_DECNET=m -CONFIG_DECNET_ROUTER=y -CONFIG_LLC=y -CONFIG_LLC2=m -CONFIG_IPX=m -# CONFIG_IPX_INTERN is not set -CONFIG_ATALK=m -CONFIG_DEV_APPLETALK=m -CONFIG_LTPC=m -CONFIG_COPS=m -CONFIG_COPS_DAYNA=y -CONFIG_COPS_TANGENT=y -CONFIG_IPDDP=m -CONFIG_IPDDP_ENCAP=y -CONFIG_IPDDP_DECAP=y -CONFIG_X25=m -CONFIG_LAPB=m -CONFIG_ECONET=m -# CONFIG_ECONET_AUNUDP is not set -# CONFIG_ECONET_NATIVE is not set -CONFIG_WAN_ROUTER=m - -# -# QoS and/or fair queueing -# -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_FIFO=y - -# -# Queueing/Scheduling -# -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_ATM=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_RR=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -CONFIG_NET_SCH_NETEM=m -CONFIG_NET_SCH_INGRESS=m - -# -# Classification -# -CONFIG_NET_CLS=y -CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_ROUTE=y -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_CLS_U32_PERF=y -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -# CONFIG_NET_EMATCH is not set -CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=m -CONFIG_NET_ACT_GACT=m -CONFIG_GACT_PROB=y -CONFIG_NET_ACT_MIRRED=m -CONFIG_NET_ACT_IPT=m -CONFIG_NET_ACT_PEDIT=m -CONFIG_NET_ACT_SIMP=m -# CONFIG_NET_CLS_POLICE is not set -# CONFIG_NET_CLS_IND is not set - -# -# Network testing -# -CONFIG_NET_PKTGEN=m -CONFIG_HAMRADIO=y - -# -# Packet Radio protocols -# -CONFIG_AX25=m -CONFIG_AX25_DAMA_SLAVE=y -CONFIG_NETROM=m -CONFIG_ROSE=m - -# -# AX.25 network device drivers -# -CONFIG_MKISS=m -CONFIG_6PACK=m -CONFIG_BPQETHER=m -CONFIG_SCC=m -CONFIG_SCC_DELAY=y -CONFIG_SCC_TRXECHO=y -CONFIG_BAYCOM_SER_FDX=m -CONFIG_BAYCOM_SER_HDX=m -CONFIG_BAYCOM_PAR=m -CONFIG_BAYCOM_EPP=m -CONFIG_YAM=m -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y - -# -# IrDA options -# -CONFIG_IRDA_CACHE_LAST_LSAP=y -# CONFIG_IRDA_FAST_RR is not set -# CONFIG_IRDA_DEBUG is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=m - -# -# Dongle support -# -CONFIG_DONGLE=y -CONFIG_ESI_DONGLE=m -CONFIG_ACTISYS_DONGLE=m -CONFIG_TEKRAM_DONGLE=m -# CONFIG_TOIM3232_DONGLE is not set -CONFIG_LITELINK_DONGLE=m -CONFIG_MA600_DONGLE=m -CONFIG_GIRBIL_DONGLE=m -CONFIG_MCP2120_DONGLE=m -CONFIG_OLD_BELKIN_DONGLE=m -CONFIG_ACT200L_DONGLE=m -CONFIG_KINGSUN_DONGLE=m - -# -# Old SIR device drivers -# - -# -# Old Serial dongle support -# - -# -# FIR device drivers -# -CONFIG_USB_IRDA=m -CONFIG_SIGMATEL_FIR=m -CONFIG_NSC_FIR=m -CONFIG_WINBOND_FIR=m -CONFIG_TOSHIBA_FIR=m -CONFIG_SMC_IRCC_FIR=m -CONFIG_ALI_FIR=m -CONFIG_VLSI_FIR=m -CONFIG_VIA_FIR=m -CONFIG_MCS_FIR=m -CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -CONFIG_BT_RFCOMM=m -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_CMTP=m -CONFIG_BT_HIDP=m - -# -# Bluetooth device drivers -# -CONFIG_BT_HCIUSB=m -CONFIG_BT_HCIUSB_SCO=y -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_H4=y -CONFIG_BT_HCIUART_BCSP=y -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIDTL1=m -CONFIG_BT_HCIBT3C=m -CONFIG_BT_HCIBLUECARD=m -CONFIG_BT_HCIBTUART=m -CONFIG_BT_HCIVHCI=m -CONFIG_AF_RXRPC=m -# CONFIG_AF_RXRPC_DEBUG is not set -CONFIG_RXKAD=m -CONFIG_FIB_RULES=y - -# -# Wireless -# -CONFIG_CFG80211=m -CONFIG_WIRELESS_EXT=y -CONFIG_MAC80211=m -CONFIG_MAC80211_LEDS=y -# CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG is not set -CONFIG_IEEE80211=m -# CONFIG_IEEE80211_DEBUG is not set -CONFIG_IEEE80211_CRYPT_WEP=m -CONFIG_IEEE80211_CRYPT_CCMP=m -CONFIG_IEEE80211_CRYPT_TKIP=m -CONFIG_IEEE80211_SOFTMAC=m -# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set -CONFIG_RFKILL=m -CONFIG_RFKILL_INPUT=m -CONFIG_NET_9P=m -# CONFIG_NET_9P_DEBUG is not set - -# -# Device Drivers -# - -# -# Generic Driver Options -# -# CONFIG_STANDALONE is not set -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=m -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set -# CONFIG_SYS_HYPERVISOR is not set -CONFIG_CONNECTOR=m -CONFIG_MTD=m -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_CONCAT=m -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_REDBOOT_PARTS=m -CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 -# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set -# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=m -CONFIG_MTD_BLKDEVS=m -CONFIG_MTD_BLOCK=m -# CONFIG_MTD_BLOCK_RO is not set -# CONFIG_FTL is not set -# CONFIG_NFTL is not set -# CONFIG_INFTL is not set -# CONFIG_RFD_FTL is not set -# CONFIG_SSFDC is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=m -CONFIG_MTD_JEDECPROBE=m -CONFIG_MTD_GEN_PROBE=m -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_MAP_BANK_WIDTH_1=y -CONFIG_MTD_MAP_BANK_WIDTH_2=y -CONFIG_MTD_MAP_BANK_WIDTH_4=y -# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set -# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set -# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set -CONFIG_MTD_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -# CONFIG_MTD_CFI_I8 is not set -# CONFIG_MTD_OTP is not set -CONFIG_MTD_CFI_INTELEXT=m -CONFIG_MTD_CFI_AMDSTD=m -CONFIG_MTD_CFI_STAA=m -CONFIG_MTD_CFI_UTIL=m -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -CONFIG_MTD_ABSENT=m - -# -# Mapping drivers for chip access -# -CONFIG_MTD_COMPLEX_MAPPINGS=y -CONFIG_MTD_PHYSMAP=m -CONFIG_MTD_PHYSMAP_START=0x8000000 -CONFIG_MTD_PHYSMAP_LEN=0x4000000 -CONFIG_MTD_PHYSMAP_BANKWIDTH=2 -CONFIG_MTD_PNC2000=m -CONFIG_MTD_SC520CDP=m -CONFIG_MTD_NETSC520=m -CONFIG_MTD_TS5500=m -CONFIG_MTD_SBC_GXX=m -CONFIG_MTD_SCx200_DOCFLASH=m -CONFIG_MTD_AMD76XROM=m -CONFIG_MTD_ICHXROM=m -CONFIG_MTD_ESB2ROM=m -CONFIG_MTD_CK804XROM=m -CONFIG_MTD_SCB2_FLASH=m -CONFIG_MTD_NETtel=m -CONFIG_MTD_DILNETPC=m -CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 -CONFIG_MTD_L440GX=m -CONFIG_MTD_PCI=m -# CONFIG_MTD_PLATRAM is not set - -# -# Self-contained MTD device drivers -# -CONFIG_MTD_PMC551=m -CONFIG_MTD_PMC551_BUGFIX=y -# CONFIG_MTD_PMC551_DEBUG is not set -CONFIG_MTD_DATAFLASH=m -CONFIG_MTD_M25P80=m -CONFIG_MTD_SLRAM=m -CONFIG_MTD_PHRAM=m -CONFIG_MTD_MTDRAM=m -CONFIG_MTDRAM_TOTAL_SIZE=4096 -CONFIG_MTDRAM_ERASE_SIZE=128 -CONFIG_MTD_BLOCK2MTD=m - -# -# Disk-On-Chip Device Drivers -# -CONFIG_MTD_DOC2000=m -CONFIG_MTD_DOC2001=m -CONFIG_MTD_DOC2001PLUS=m -CONFIG_MTD_DOCPROBE=m -CONFIG_MTD_DOCECC=m -CONFIG_MTD_DOCPROBE_ADVANCED=y -CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 -CONFIG_MTD_DOCPROBE_HIGH=y -CONFIG_MTD_DOCPROBE_55AA=y -CONFIG_MTD_NAND=m -# CONFIG_MTD_NAND_VERIFY_WRITE is not set -# CONFIG_MTD_NAND_ECC_SMC is not set -# CONFIG_MTD_NAND_MUSEUM_IDS is not set -CONFIG_MTD_NAND_IDS=m -CONFIG_MTD_NAND_DISKONCHIP=m -# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set -CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 -CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y -CONFIG_MTD_NAND_CAFE=m -# CONFIG_MTD_NAND_CS553X is not set -CONFIG_MTD_NAND_NANDSIM=m -CONFIG_MTD_NAND_PLATFORM=m -# CONFIG_MTD_ONENAND is not set - -# -# UBI - Unsorted block images -# -CONFIG_MTD_UBI=m -CONFIG_MTD_UBI_WL_THRESHOLD=4096 -CONFIG_MTD_UBI_BEB_RESERVE=1 -# CONFIG_MTD_UBI_GLUEBI is not set - -# -# UBI debugging options -# -# CONFIG_MTD_UBI_DEBUG is not set -CONFIG_PARPORT=m -CONFIG_PARPORT_PC=m -CONFIG_PARPORT_SERIAL=m -CONFIG_PARPORT_PC_FIFO=y -CONFIG_PARPORT_PC_SUPERIO=y -CONFIG_PARPORT_PC_PCMCIA=m -# CONFIG_PARPORT_GSC is not set -# CONFIG_PARPORT_AX88796 is not set -CONFIG_PARPORT_1284=y -CONFIG_PARPORT_NOT_PC=y -CONFIG_PNP=y -# CONFIG_PNP_DEBUG is not set - -# -# Protocols -# -CONFIG_ISAPNP=y -# CONFIG_PNPBIOS is not set -CONFIG_PNPACPI=y -CONFIG_BLK_DEV=y -CONFIG_BLK_DEV_FD=y -CONFIG_BLK_DEV_XD=m -CONFIG_PARIDE=m - -# -# Parallel IDE high-level drivers -# -CONFIG_PARIDE_PD=m -CONFIG_PARIDE_PCD=m -CONFIG_PARIDE_PF=m -CONFIG_PARIDE_PT=m -CONFIG_PARIDE_PG=m - -# -# Parallel IDE protocol modules -# -CONFIG_PARIDE_ATEN=m -CONFIG_PARIDE_BPCK=m -CONFIG_PARIDE_BPCK6=m -CONFIG_PARIDE_COMM=m -CONFIG_PARIDE_DSTR=m -CONFIG_PARIDE_FIT2=m -CONFIG_PARIDE_FIT3=m -CONFIG_PARIDE_EPAT=m -CONFIG_PARIDE_EPATC8=y -CONFIG_PARIDE_EPIA=m -CONFIG_PARIDE_FRIQ=m -CONFIG_PARIDE_FRPW=m -CONFIG_PARIDE_KBIC=m -CONFIG_PARIDE_KTTI=m -CONFIG_PARIDE_ON20=m -CONFIG_PARIDE_ON26=m -CONFIG_BLK_CPQ_DA=m -CONFIG_BLK_CPQ_CISS_DA=m -CONFIG_CISS_SCSI_TAPE=y -CONFIG_BLK_DEV_DAC960=m -CONFIG_BLK_DEV_UMEM=m -# CONFIG_BLK_DEV_COW_COMMON is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=m -CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_SX8=m -# CONFIG_BLK_DEV_UB is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=64000 -CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 -CONFIG_CDROM_PKTCDVD=m -CONFIG_CDROM_PKTCDVD_BUFFERS=8 -CONFIG_CDROM_PKTCDVD_WCACHE=y -CONFIG_ATA_OVER_ETH=m -CONFIG_XEN_BLKDEV_FRONTEND=m -CONFIG_MISC_DEVICES=y -CONFIG_IBM_ASM=m -CONFIG_PHANTOM=m -CONFIG_EEPROM_93CX6=m -# CONFIG_SGI_IOC4 is not set -CONFIG_TIFM_CORE=m -CONFIG_TIFM_7XX1=m -CONFIG_ASUS_LAPTOP=m -CONFIG_MSI_LAPTOP=m -CONFIG_SONY_LAPTOP=m -CONFIG_SONYPI_COMPAT=y -CONFIG_THINKPAD_ACPI=m -# CONFIG_THINKPAD_ACPI_DEBUG is not set -CONFIG_THINKPAD_ACPI_BAY=y -CONFIG_IDE=m -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_IDE_SATA is not set -# CONFIG_BLK_DEV_HD_IDE is not set -CONFIG_BLK_DEV_IDEDISK=m -CONFIG_IDEDISK_MULTI_MODE=y -CONFIG_BLK_DEV_IDECS=m -CONFIG_BLK_DEV_DELKIN=m -CONFIG_BLK_DEV_IDECD=m -CONFIG_BLK_DEV_IDETAPE=m -CONFIG_BLK_DEV_IDEFLOPPY=m -CONFIG_BLK_DEV_IDESCSI=m -CONFIG_BLK_DEV_IDEACPI=y -# CONFIG_IDE_TASK_IOCTL is not set -CONFIG_IDE_PROC_FS=y - -# -# IDE chipset support/bugfixes -# -CONFIG_IDE_GENERIC=m -CONFIG_BLK_DEV_CMD640=y -CONFIG_BLK_DEV_CMD640_ENHANCED=y -CONFIG_BLK_DEV_IDEPNP=y -CONFIG_BLK_DEV_IDEPCI=y -CONFIG_IDEPCI_SHARE_IRQ=y -# CONFIG_IDEPCI_PCIBUS_ORDER is not set -CONFIG_BLK_DEV_OFFBOARD=y -CONFIG_BLK_DEV_GENERIC=m -CONFIG_BLK_DEV_OPTI621=m -CONFIG_BLK_DEV_RZ1000=m -CONFIG_BLK_DEV_IDEDMA_PCI=y -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set -# CONFIG_IDEDMA_ONLYDISK is not set -CONFIG_BLK_DEV_AEC62XX=m -CONFIG_BLK_DEV_ALI15X3=m -# CONFIG_WDC_ALI15X3 is not set -CONFIG_BLK_DEV_AMD74XX=m -CONFIG_BLK_DEV_ATIIXP=m -CONFIG_BLK_DEV_CMD64X=m -CONFIG_BLK_DEV_TRIFLEX=m -CONFIG_BLK_DEV_CY82C693=m -CONFIG_BLK_DEV_CS5520=m -CONFIG_BLK_DEV_CS5530=m -CONFIG_BLK_DEV_CS5535=m -CONFIG_BLK_DEV_HPT34X=m -CONFIG_HPT34X_AUTODMA=y -CONFIG_BLK_DEV_HPT366=m -CONFIG_BLK_DEV_JMICRON=m -CONFIG_BLK_DEV_SC1200=m -CONFIG_BLK_DEV_PIIX=m -CONFIG_BLK_DEV_IT8213=m -CONFIG_BLK_DEV_IT821X=m -CONFIG_BLK_DEV_NS87415=m -CONFIG_BLK_DEV_PDC202XX_OLD=m -CONFIG_PDC202XX_BURST=y -CONFIG_BLK_DEV_PDC202XX_NEW=m -CONFIG_BLK_DEV_SVWKS=m -CONFIG_BLK_DEV_SIIMAGE=m -CONFIG_BLK_DEV_SIS5513=m -CONFIG_BLK_DEV_SLC90E66=m -CONFIG_BLK_DEV_TRM290=m -CONFIG_BLK_DEV_VIA82CXXX=m -CONFIG_BLK_DEV_TC86C001=m -# CONFIG_IDE_ARM is not set -CONFIG_IDE_CHIPSETS=y - -# -# Note: most of these also require special kernel boot parameters -# -CONFIG_BLK_DEV_4DRIVES=y -CONFIG_BLK_DEV_ALI14XX=m -CONFIG_BLK_DEV_DTC2278=m -CONFIG_BLK_DEV_HT6560B=m -CONFIG_BLK_DEV_QD65XX=m -CONFIG_BLK_DEV_UMC8672=m -CONFIG_BLK_DEV_IDEDMA=y -# CONFIG_IDEDMA_IVB is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI device support -# -# CONFIG_RAID_ATTRS is not set -CONFIG_SCSI=m -CONFIG_SCSI_DMA=y -CONFIG_SCSI_TGT=m -CONFIG_SCSI_NETLINK=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=m -CONFIG_CHR_DEV_ST=m -CONFIG_CHR_DEV_OSST=m -CONFIG_BLK_DEV_SR=m -# CONFIG_BLK_DEV_SR_VENDOR is not set -CONFIG_CHR_DEV_SG=m -CONFIG_CHR_DEV_SCH=m - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -CONFIG_SCSI_MULTI_LUN=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y -# CONFIG_SCSI_SCAN_ASYNC is not set -CONFIG_SCSI_WAIT_SCAN=m - -# -# SCSI Transports -# -CONFIG_SCSI_SPI_ATTRS=m -CONFIG_SCSI_FC_ATTRS=m -CONFIG_SCSI_ISCSI_ATTRS=m -CONFIG_SCSI_SAS_ATTRS=m -CONFIG_SCSI_SAS_LIBSAS=m -# CONFIG_SCSI_SAS_ATA is not set -# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set -CONFIG_SCSI_LOWLEVEL=y -CONFIG_ISCSI_TCP=m -CONFIG_BLK_DEV_3W_XXXX_RAID=m -CONFIG_SCSI_3W_9XXX=m -CONFIG_SCSI_7000FASST=m -CONFIG_SCSI_ACARD=m -CONFIG_SCSI_AHA152X=m -CONFIG_SCSI_AHA1542=m -CONFIG_SCSI_AACRAID=m -CONFIG_SCSI_AIC7XXX=m -CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 -CONFIG_AIC7XXX_RESET_DELAY_MS=5000 -# CONFIG_AIC7XXX_DEBUG_ENABLE is not set -CONFIG_AIC7XXX_DEBUG_MASK=0 -CONFIG_AIC7XXX_REG_PRETTY_PRINT=y -CONFIG_SCSI_AIC7XXX_OLD=m -CONFIG_SCSI_AIC79XX=m -CONFIG_AIC79XX_CMDS_PER_DEVICE=32 -CONFIG_AIC79XX_RESET_DELAY_MS=15000 -# CONFIG_AIC79XX_DEBUG_ENABLE is not set -CONFIG_AIC79XX_DEBUG_MASK=0 -CONFIG_AIC79XX_REG_PRETTY_PRINT=y -CONFIG_SCSI_AIC94XX=m -# CONFIG_AIC94XX_DEBUG is not set -CONFIG_SCSI_DPT_I2O=m -CONFIG_SCSI_ADVANSYS=m -CONFIG_SCSI_IN2000=m -CONFIG_SCSI_ARCMSR=m -CONFIG_MEGARAID_NEWGEN=y -CONFIG_MEGARAID_MM=m -CONFIG_MEGARAID_MAILBOX=m -CONFIG_MEGARAID_LEGACY=m -CONFIG_MEGARAID_SAS=m -CONFIG_SCSI_HPTIOP=m -CONFIG_SCSI_BUSLOGIC=m -# CONFIG_SCSI_OMIT_FLASHPOINT is not set -CONFIG_SCSI_DMX3191D=m -CONFIG_SCSI_DTC3280=m -CONFIG_SCSI_EATA=m -CONFIG_SCSI_EATA_TAGGED_QUEUE=y -CONFIG_SCSI_EATA_LINKED_COMMANDS=y -CONFIG_SCSI_EATA_MAX_TAGS=16 -CONFIG_SCSI_FUTURE_DOMAIN=m -CONFIG_SCSI_GDTH=m -CONFIG_SCSI_GENERIC_NCR5380=m -CONFIG_SCSI_GENERIC_NCR5380_MMIO=m -CONFIG_SCSI_GENERIC_NCR53C400=y -CONFIG_SCSI_IPS=m -CONFIG_SCSI_INITIO=m -CONFIG_SCSI_INIA100=m -CONFIG_SCSI_PPA=m -CONFIG_SCSI_IMM=m -# CONFIG_SCSI_IZIP_EPP16 is not set -# CONFIG_SCSI_IZIP_SLOW_CTR is not set -CONFIG_SCSI_NCR53C406A=m -CONFIG_SCSI_STEX=m -CONFIG_SCSI_SYM53C8XX_2=m -CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 -CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 -CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 -CONFIG_SCSI_SYM53C8XX_MMIO=y -CONFIG_SCSI_IPR=m -# CONFIG_SCSI_IPR_TRACE is not set -# CONFIG_SCSI_IPR_DUMP is not set -CONFIG_SCSI_PAS16=m -CONFIG_SCSI_PSI240I=m -CONFIG_SCSI_QLOGIC_FAS=m -CONFIG_SCSI_QLOGIC_1280=m -CONFIG_SCSI_QLA_FC=m -CONFIG_SCSI_QLA_ISCSI=m -CONFIG_SCSI_LPFC=m -CONFIG_SCSI_SEAGATE=m -CONFIG_SCSI_SYM53C416=m -CONFIG_SCSI_DC395x=m -CONFIG_SCSI_DC390T=m -CONFIG_SCSI_T128=m -CONFIG_SCSI_U14_34F=m -CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y -CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y -CONFIG_SCSI_U14_34F_MAX_TAGS=8 -CONFIG_SCSI_ULTRASTOR=m -CONFIG_SCSI_NSP32=m -CONFIG_SCSI_DEBUG=m -CONFIG_SCSI_SRP=m -CONFIG_SCSI_LOWLEVEL_PCMCIA=y -CONFIG_PCMCIA_AHA152X=m -CONFIG_PCMCIA_FDOMAIN=m -CONFIG_PCMCIA_NINJA_SCSI=m -CONFIG_PCMCIA_QLOGIC=m -CONFIG_PCMCIA_SYM53C500=m -CONFIG_ATA=m -# CONFIG_ATA_NONSTANDARD is not set -CONFIG_ATA_ACPI=y -CONFIG_SATA_AHCI=m -CONFIG_SATA_SVW=m -CONFIG_ATA_PIIX=m -# CONFIG_SATA_MV is not set -CONFIG_SATA_NV=m -CONFIG_PDC_ADMA=m -CONFIG_SATA_QSTOR=m -CONFIG_SATA_PROMISE=m -CONFIG_SATA_SX4=m -CONFIG_SATA_SIL=m -CONFIG_SATA_SIL24=m -CONFIG_SATA_SIS=m -CONFIG_SATA_ULI=m -CONFIG_SATA_VIA=m -CONFIG_SATA_VITESSE=m -CONFIG_SATA_INIC162X=m -CONFIG_PATA_ALI=m -CONFIG_PATA_AMD=m -CONFIG_PATA_ARTOP=m -CONFIG_PATA_ATIIXP=m -# CONFIG_PATA_CMD640_PCI is not set -# CONFIG_PATA_CMD64X is not set -CONFIG_PATA_CS5520=m -CONFIG_PATA_CS5530=m -CONFIG_PATA_CS5535=m -# CONFIG_PATA_CYPRESS is not set -CONFIG_PATA_EFAR=m -CONFIG_ATA_GENERIC=m -CONFIG_PATA_HPT366=m -CONFIG_PATA_HPT37X=m -CONFIG_PATA_HPT3X2N=m -CONFIG_PATA_HPT3X3=m -# CONFIG_PATA_HPT3X3_DMA is not set -# CONFIG_PATA_ISAPNP is not set -CONFIG_PATA_IT821X=m -CONFIG_PATA_IT8213=m -CONFIG_PATA_JMICRON=m -# CONFIG_PATA_LEGACY is not set -CONFIG_PATA_TRIFLEX=m -CONFIG_PATA_MARVELL=m -CONFIG_PATA_MPIIX=m -CONFIG_PATA_OLDPIIX=m -CONFIG_PATA_NETCELL=m -CONFIG_PATA_NS87410=m -# CONFIG_PATA_OPTI is not set -# CONFIG_PATA_OPTIDMA is not set -CONFIG_PATA_PCMCIA=m -# CONFIG_PATA_PDC_OLD is not set -CONFIG_PATA_QDI=m -# CONFIG_PATA_RADISYS is not set -CONFIG_PATA_RZ1000=m -CONFIG_PATA_SC1200=m -CONFIG_PATA_SERVERWORKS=m -CONFIG_PATA_PDC2027X=m -CONFIG_PATA_SIL680=m -CONFIG_PATA_SIS=m -CONFIG_PATA_VIA=m -CONFIG_PATA_WINBOND=m -CONFIG_PATA_WINBOND_VLB=m -CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_MD_LINEAR=m -CONFIG_MD_RAID0=m -CONFIG_MD_RAID1=m -CONFIG_MD_RAID10=m -CONFIG_MD_RAID456=m -# CONFIG_MD_RAID5_RESHAPE is not set -CONFIG_MD_MULTIPATH=m -CONFIG_MD_FAULTY=m -CONFIG_BLK_DEV_DM=m -# CONFIG_DM_DEBUG is not set -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_MIRROR=m -CONFIG_DM_ZERO=m -CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_RDAC=m -# CONFIG_DM_DELAY is not set - -# -# Fusion MPT device support -# -CONFIG_FUSION=y -CONFIG_FUSION_SPI=m -CONFIG_FUSION_FC=m -CONFIG_FUSION_SAS=m -CONFIG_FUSION_MAX_SGE=128 -CONFIG_FUSION_CTL=m -CONFIG_FUSION_LAN=m -# CONFIG_FUSION_LOGGING is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -CONFIG_IEEE1394=m - -# -# Subsystem Options -# -# CONFIG_IEEE1394_VERBOSEDEBUG is not set - -# -# Controllers -# -CONFIG_IEEE1394_PCILYNX=m -CONFIG_IEEE1394_OHCI1394=m - -# -# Protocols -# -CONFIG_IEEE1394_VIDEO1394=m -CONFIG_IEEE1394_SBP2=m -# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set -CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y -CONFIG_IEEE1394_ETH1394=m -CONFIG_IEEE1394_DV1394=m -CONFIG_IEEE1394_RAWIO=m -CONFIG_I2O=m -CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y -CONFIG_I2O_EXT_ADAPTEC=y -CONFIG_I2O_CONFIG=m -CONFIG_I2O_CONFIG_OLD_IOCTL=y -CONFIG_I2O_BUS=m -CONFIG_I2O_BLOCK=m -CONFIG_I2O_SCSI=m -CONFIG_I2O_PROC=m -CONFIG_MACINTOSH_DRIVERS=y -CONFIG_MAC_EMUMOUSEBTN=y -CONFIG_NETDEVICES=y -# CONFIG_NETDEVICES_MULTIQUEUE is not set -# CONFIG_IFB is not set -CONFIG_DUMMY=m -CONFIG_BONDING=m -# CONFIG_MACVLAN is not set -CONFIG_EQUALIZER=m -CONFIG_TUN=m -CONFIG_NET_SB1000=m -CONFIG_ARCNET=m -CONFIG_ARCNET_1201=m -CONFIG_ARCNET_1051=m -CONFIG_ARCNET_RAW=m -CONFIG_ARCNET_CAP=m -CONFIG_ARCNET_COM90xx=m -CONFIG_ARCNET_COM90xxIO=m -CONFIG_ARCNET_RIM_I=m -# CONFIG_ARCNET_COM20020 is not set -CONFIG_PHYLIB=m - -# -# MII PHY device drivers -# -CONFIG_MARVELL_PHY=m -CONFIG_DAVICOM_PHY=m -CONFIG_QSEMI_PHY=m -CONFIG_LXT_PHY=m -CONFIG_CICADA_PHY=m -CONFIG_VITESSE_PHY=m -CONFIG_SMSC_PHY=m -CONFIG_BROADCOM_PHY=m -CONFIG_ICPLUS_PHY=m -CONFIG_FIXED_PHY=m -# CONFIG_FIXED_MII_10_FDX is not set -# CONFIG_FIXED_MII_100_FDX is not set -CONFIG_NET_ETHERNET=y -CONFIG_MII=m -CONFIG_HAPPYMEAL=m -CONFIG_SUNGEM=m -CONFIG_CASSINI=m -CONFIG_NET_VENDOR_3COM=y -CONFIG_EL1=m -CONFIG_EL2=m -CONFIG_ELPLUS=m -CONFIG_EL16=m -CONFIG_EL3=m -CONFIG_3C515=m -CONFIG_VORTEX=m -CONFIG_TYPHOON=m -CONFIG_LANCE=m -CONFIG_NET_VENDOR_SMC=y -CONFIG_WD80x3=m -CONFIG_ULTRA=m -CONFIG_SMC9194=m -CONFIG_NET_VENDOR_RACAL=y -CONFIG_NI52=m -CONFIG_NI65=m -CONFIG_NET_TULIP=y -CONFIG_DE2104X=m -CONFIG_TULIP=m -# CONFIG_TULIP_MWI is not set -# CONFIG_TULIP_MMIO is not set -CONFIG_TULIP_NAPI=y -CONFIG_TULIP_NAPI_HW_MITIGATION=y -CONFIG_DE4X5=m -CONFIG_WINBOND_840=m -CONFIG_DM9102=m -CONFIG_ULI526X=m -CONFIG_PCMCIA_XIRCOM=m -CONFIG_AT1700=m -CONFIG_DEPCA=m -CONFIG_HP100=m -CONFIG_NET_ISA=y -CONFIG_E2100=m -CONFIG_EWRK3=m -CONFIG_EEXPRESS=m -CONFIG_EEXPRESS_PRO=m -CONFIG_HPLAN_PLUS=m -CONFIG_HPLAN=m -CONFIG_LP486E=m -CONFIG_ETH16I=m -CONFIG_NE2000=m -CONFIG_ZNET=m -CONFIG_SEEQ8005=m -CONFIG_NET_PCI=y -CONFIG_PCNET32=m -# CONFIG_PCNET32_NAPI is not set -CONFIG_AMD8111_ETH=m -# CONFIG_AMD8111E_NAPI is not set -CONFIG_ADAPTEC_STARFIRE=m -CONFIG_ADAPTEC_STARFIRE_NAPI=y -CONFIG_AC3200=m -CONFIG_APRICOT=m -CONFIG_B44=m -CONFIG_FORCEDETH=m -# CONFIG_FORCEDETH_NAPI is not set -CONFIG_CS89x0=m -CONFIG_DGRS=m -CONFIG_EEPRO100=m -CONFIG_E100=m -CONFIG_FEALNX=m -CONFIG_NATSEMI=m -CONFIG_NE2K_PCI=m -CONFIG_8139CP=m -CONFIG_8139TOO=m -# CONFIG_8139TOO_PIO is not set -# CONFIG_8139TOO_TUNE_TWISTER is not set -CONFIG_8139TOO_8129=y -# CONFIG_8139_OLD_RX_RESET is not set -CONFIG_SIS900=m -CONFIG_EPIC100=m -CONFIG_SUNDANCE=m -# CONFIG_SUNDANCE_MMIO is not set -CONFIG_TLAN=m -CONFIG_VIA_RHINE=m -# CONFIG_VIA_RHINE_MMIO is not set -# CONFIG_VIA_RHINE_NAPI is not set -CONFIG_SC92031=m -CONFIG_NET_POCKET=y -CONFIG_ATP=m -CONFIG_DE600=m -CONFIG_DE620=m -CONFIG_NETDEV_1000=y -CONFIG_ACENIC=m -# CONFIG_ACENIC_OMIT_TIGON_I is not set -CONFIG_DL2K=m -CONFIG_E1000=m -CONFIG_E1000_NAPI=y -# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set -CONFIG_NS83820=m -CONFIG_HAMACHI=m -CONFIG_YELLOWFIN=m -CONFIG_R8169=m -# CONFIG_R8169_NAPI is not set -CONFIG_R8169_VLAN=y -CONFIG_SIS190=m -CONFIG_SKGE=m -# CONFIG_SKY2 is not set -CONFIG_SK98LIN=m -CONFIG_VIA_VELOCITY=m -CONFIG_TIGON3=m -CONFIG_BNX2=m -CONFIG_QLA3XXX=m -CONFIG_ATL1=m -CONFIG_NETDEV_10000=y -CONFIG_CHELSIO_T1=m -CONFIG_CHELSIO_T1_1G=y -CONFIG_CHELSIO_T1_NAPI=y -CONFIG_CHELSIO_T3=m -CONFIG_IXGB=m -CONFIG_IXGB_NAPI=y -CONFIG_S2IO=m -CONFIG_S2IO_NAPI=y -CONFIG_MYRI10GE=m -CONFIG_NETXEN_NIC=m -CONFIG_MLX4_CORE=m -CONFIG_MLX4_DEBUG=y -CONFIG_TR=y -CONFIG_IBMTR=m -CONFIG_IBMOL=m -CONFIG_IBMLS=m -CONFIG_3C359=m -CONFIG_TMS380TR=m -CONFIG_TMSPCI=m -CONFIG_SKISA=m -CONFIG_PROTEON=m -CONFIG_ABYSS=m -CONFIG_SMCTR=m - -# -# Wireless LAN -# -# CONFIG_WLAN_PRE80211 is not set -CONFIG_WLAN_80211=y -CONFIG_PCMCIA_RAYCS=m -CONFIG_IPW2100=m -CONFIG_IPW2100_MONITOR=y -# CONFIG_IPW2100_DEBUG is not set -CONFIG_IPW2200=m -CONFIG_IPW2200_MONITOR=y -CONFIG_IPW2200_RADIOTAP=y -CONFIG_IPW2200_PROMISCUOUS=y -CONFIG_IPW2200_QOS=y -# CONFIG_IPW2200_DEBUG is not set -CONFIG_LIBERTAS=m -CONFIG_LIBERTAS_USB=m -# CONFIG_LIBERTAS_DEBUG is not set -CONFIG_AIRO=m -CONFIG_HERMES=m -CONFIG_PLX_HERMES=m -CONFIG_TMD_HERMES=m -CONFIG_NORTEL_HERMES=m -CONFIG_PCI_HERMES=m -CONFIG_ATMEL=m -CONFIG_PCI_ATMEL=m -CONFIG_PCMCIA_HERMES=m -CONFIG_PCMCIA_SPECTRUM=m -CONFIG_AIRO_CS=m -CONFIG_PCMCIA_ATMEL=m -CONFIG_PCMCIA_WL3501=m -CONFIG_PRISM54=m -CONFIG_USB_ZD1201=m -CONFIG_RTL8187=m -CONFIG_HOSTAP=m -CONFIG_HOSTAP_FIRMWARE=y -CONFIG_HOSTAP_FIRMWARE_NVRAM=y -CONFIG_HOSTAP_PLX=m -CONFIG_HOSTAP_PCI=m -CONFIG_HOSTAP_CS=m -CONFIG_BCM43XX=m -CONFIG_BCM43XX_DEBUG=y -CONFIG_BCM43XX_DMA=y -CONFIG_BCM43XX_PIO=y -CONFIG_BCM43XX_DMA_AND_PIO_MODE=y -# CONFIG_BCM43XX_DMA_MODE is not set -# CONFIG_BCM43XX_PIO_MODE is not set -CONFIG_ZD1211RW=m -# CONFIG_ZD1211RW_DEBUG is not set - -# -# USB Network Adapters -# -CONFIG_USB_CATC=m -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -CONFIG_USB_RTL8150=m -CONFIG_USB_USBNET_MII=m -CONFIG_USB_USBNET=m -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_CDCETHER=m -CONFIG_USB_NET_DM9601=m -CONFIG_USB_NET_GL620A=m -CONFIG_USB_NET_NET1080=m -CONFIG_USB_NET_PLUSB=m -CONFIG_USB_NET_MCS7830=m -CONFIG_USB_NET_RNDIS_HOST=m -CONFIG_USB_NET_CDC_SUBSET=m -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_ARMLINUX=y -# CONFIG_USB_EPSON2888 is not set -# CONFIG_USB_KC2190 is not set -CONFIG_USB_NET_ZAURUS=m -CONFIG_NET_PCMCIA=y -CONFIG_PCMCIA_3C589=m -CONFIG_PCMCIA_3C574=m -CONFIG_PCMCIA_FMVJ18X=m -CONFIG_PCMCIA_PCNET=m -CONFIG_PCMCIA_NMCLAN=m -CONFIG_PCMCIA_SMC91C92=m -CONFIG_PCMCIA_XIRC2PS=m -CONFIG_PCMCIA_AXNET=m -CONFIG_PCMCIA_IBMTR=m -CONFIG_WAN=y -CONFIG_HOSTESS_SV11=m -# CONFIG_COSA is not set -CONFIG_LANMEDIA=m -CONFIG_SEALEVEL_4021=m -CONFIG_HDLC=m -CONFIG_HDLC_RAW=m -CONFIG_HDLC_RAW_ETH=m -CONFIG_HDLC_CISCO=m -CONFIG_HDLC_FR=m -CONFIG_HDLC_PPP=m -CONFIG_HDLC_X25=m -CONFIG_PCI200SYN=m -CONFIG_WANXL=m -# CONFIG_PC300 is not set -# CONFIG_PC300TOO is not set -CONFIG_N2=m -CONFIG_C101=m -CONFIG_FARSYNC=m -# CONFIG_DSCC4 is not set -CONFIG_DLCI=m -CONFIG_DLCI_MAX=8 -CONFIG_SDLA=m -# CONFIG_WAN_ROUTER_DRIVERS is not set -CONFIG_LAPBETHER=m -CONFIG_X25_ASY=m -# CONFIG_SBNI is not set -CONFIG_ATM_DRIVERS=y -# CONFIG_ATM_DUMMY is not set -CONFIG_ATM_TCP=m -CONFIG_ATM_LANAI=m -CONFIG_ATM_ENI=m -# CONFIG_ATM_ENI_DEBUG is not set -# CONFIG_ATM_ENI_TUNE_BURST is not set -CONFIG_ATM_FIRESTREAM=m -CONFIG_ATM_ZATM=m -# CONFIG_ATM_ZATM_DEBUG is not set -CONFIG_ATM_NICSTAR=m -CONFIG_ATM_NICSTAR_USE_SUNI=y -CONFIG_ATM_NICSTAR_USE_IDT77105=y -CONFIG_ATM_IDT77252=m -# CONFIG_ATM_IDT77252_DEBUG is not set -CONFIG_ATM_IDT77252_RCV_ALL=y -CONFIG_ATM_IDT77252_USE_SUNI=y -# CONFIG_ATM_AMBASSADOR is not set -CONFIG_ATM_HORIZON=m -# CONFIG_ATM_HORIZON_DEBUG is not set -CONFIG_ATM_IA=m -# CONFIG_ATM_IA_DEBUG is not set -CONFIG_ATM_FORE200E_MAYBE=m -CONFIG_ATM_FORE200E_PCA=y -CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y -CONFIG_ATM_FORE200E_USE_TASKLET=y -CONFIG_ATM_FORE200E_TX_RETRY=16 -CONFIG_ATM_FORE200E_DEBUG=0 -CONFIG_ATM_FORE200E=m -CONFIG_ATM_HE=m -CONFIG_ATM_HE_USE_SUNI=y -CONFIG_XEN_NETDEV_FRONTEND=m -CONFIG_FDDI=y -CONFIG_DEFXX=m -# CONFIG_DEFXX_MMIO is not set -CONFIG_SKFP=m -CONFIG_HIPPI=y -CONFIG_ROADRUNNER=m -CONFIG_ROADRUNNER_LARGE_RINGS=y -CONFIG_PLIP=m -CONFIG_PPP=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPP_FILTER=y -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_MPPE=m -CONFIG_PPPOE=m -CONFIG_PPPOATM=m -# CONFIG_PPPOL2TP is not set -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLHC=m -CONFIG_SLIP_SMART=y -CONFIG_SLIP_MODE_SLIP6=y -CONFIG_NET_FC=y -CONFIG_SHAPER=m -CONFIG_NETCONSOLE=m -CONFIG_NETPOLL=y -CONFIG_NETPOLL_TRAP=y -CONFIG_NET_POLL_CONTROLLER=y -CONFIG_ISDN=m -CONFIG_ISDN_I4L=m -CONFIG_ISDN_PPP=y -CONFIG_ISDN_PPP_VJ=y -CONFIG_ISDN_MPP=y -CONFIG_IPPP_FILTER=y -CONFIG_ISDN_PPP_BSDCOMP=m -CONFIG_ISDN_AUDIO=y -CONFIG_ISDN_TTY_FAX=y -CONFIG_ISDN_X25=y - -# -# ISDN feature submodules -# -CONFIG_ISDN_DIVERSION=m - -# -# ISDN4Linux hardware drivers -# - -# -# Passive cards -# -CONFIG_ISDN_DRV_HISAX=m - -# -# D-channel protocol features -# -CONFIG_HISAX_EURO=y -CONFIG_DE_AOC=y -# CONFIG_HISAX_NO_SENDCOMPLETE is not set -# CONFIG_HISAX_NO_LLC is not set -# CONFIG_HISAX_NO_KEYPAD is not set -CONFIG_HISAX_1TR6=y -CONFIG_HISAX_NI1=y -CONFIG_HISAX_MAX_CARDS=8 - -# -# HiSax supported cards -# -CONFIG_HISAX_16_0=y -CONFIG_HISAX_16_3=y -CONFIG_HISAX_TELESPCI=y -CONFIG_HISAX_S0BOX=y -CONFIG_HISAX_AVM_A1=y -CONFIG_HISAX_FRITZPCI=y -CONFIG_HISAX_AVM_A1_PCMCIA=y -CONFIG_HISAX_ELSA=y -CONFIG_HISAX_IX1MICROR2=y -CONFIG_HISAX_DIEHLDIVA=y -CONFIG_HISAX_ASUSCOM=y -CONFIG_HISAX_TELEINT=y -CONFIG_HISAX_HFCS=y -CONFIG_HISAX_SEDLBAUER=y -CONFIG_HISAX_SPORTSTER=y -CONFIG_HISAX_MIC=y -CONFIG_HISAX_NETJET=y -CONFIG_HISAX_NETJET_U=y -CONFIG_HISAX_NICCY=y -CONFIG_HISAX_ISURF=y -CONFIG_HISAX_HSTSAPHIR=y -CONFIG_HISAX_BKM_A4T=y -CONFIG_HISAX_SCT_QUADRO=y -CONFIG_HISAX_GAZEL=y -CONFIG_HISAX_HFC_PCI=y -CONFIG_HISAX_W6692=y -CONFIG_HISAX_HFC_SX=y -CONFIG_HISAX_ENTERNOW_PCI=y -CONFIG_HISAX_DEBUG=y - -# -# HiSax PCMCIA card service modules -# -CONFIG_HISAX_SEDLBAUER_CS=m -CONFIG_HISAX_ELSA_CS=m -CONFIG_HISAX_AVM_A1_CS=m -CONFIG_HISAX_TELES_CS=m - -# -# HiSax sub driver modules -# -CONFIG_HISAX_ST5481=m -CONFIG_HISAX_HFCUSB=m -CONFIG_HISAX_HFC4S8S=m -CONFIG_HISAX_FRITZ_PCIPNP=m -CONFIG_HISAX_HDLC=y - -# -# Active cards -# -CONFIG_ISDN_DRV_ICN=m -CONFIG_ISDN_DRV_PCBIT=m -CONFIG_ISDN_DRV_SC=m -CONFIG_ISDN_DRV_ACT2000=m -# CONFIG_ISDN_DRV_GIGASET is not set -CONFIG_ISDN_CAPI=m -CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y -CONFIG_CAPI_TRACE=y -CONFIG_ISDN_CAPI_MIDDLEWARE=y -CONFIG_ISDN_CAPI_CAPI20=m -CONFIG_ISDN_CAPI_CAPIFS_BOOL=y -CONFIG_ISDN_CAPI_CAPIFS=m -CONFIG_ISDN_CAPI_CAPIDRV=m - -# -# CAPI hardware drivers -# -CONFIG_CAPI_AVM=y -CONFIG_ISDN_DRV_AVMB1_B1ISA=m -CONFIG_ISDN_DRV_AVMB1_B1PCI=m -CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y -CONFIG_ISDN_DRV_AVMB1_T1ISA=m -CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m -CONFIG_ISDN_DRV_AVMB1_AVM_CS=m -CONFIG_ISDN_DRV_AVMB1_T1PCI=m -CONFIG_ISDN_DRV_AVMB1_C4=m -CONFIG_CAPI_EICON=y -CONFIG_ISDN_DIVAS=m -CONFIG_ISDN_DIVAS_BRIPCI=y -CONFIG_ISDN_DIVAS_PRIPCI=y -CONFIG_ISDN_DIVAS_DIVACAPI=m -CONFIG_ISDN_DIVAS_USERIDI=m -CONFIG_ISDN_DIVAS_MAINT=m -CONFIG_PHONE=m -CONFIG_PHONE_IXJ=m -CONFIG_PHONE_IXJ_PCMCIA=m - -# -# Input device support -# -CONFIG_INPUT=y -CONFIG_INPUT_FF_MEMLESS=m -CONFIG_INPUT_POLLDEV=m - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -CONFIG_INPUT_JOYDEV=m -CONFIG_INPUT_TSDEV=m -CONFIG_INPUT_TSDEV_SCREEN_X=240 -CONFIG_INPUT_TSDEV_SCREEN_Y=320 -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -CONFIG_KEYBOARD_ATKBD=y -CONFIG_KEYBOARD_SUNKBD=m -# CONFIG_KEYBOARD_LKKBD is not set -CONFIG_KEYBOARD_XTKBD=m -CONFIG_KEYBOARD_NEWTON=m -CONFIG_KEYBOARD_STOWAWAY=m -CONFIG_INPUT_MOUSE=y -CONFIG_MOUSE_PS2=y -CONFIG_MOUSE_PS2_ALPS=y -CONFIG_MOUSE_PS2_LOGIPS2PP=y -CONFIG_MOUSE_PS2_SYNAPTICS=y -CONFIG_MOUSE_PS2_LIFEBOOK=y -CONFIG_MOUSE_PS2_TRACKPOINT=y -# CONFIG_MOUSE_PS2_TOUCHKIT is not set -CONFIG_MOUSE_SERIAL=m -CONFIG_MOUSE_APPLETOUCH=m -CONFIG_MOUSE_INPORT=m -CONFIG_MOUSE_ATIXL=y -CONFIG_MOUSE_LOGIBM=m -CONFIG_MOUSE_PC110PAD=m -# CONFIG_MOUSE_VSXXXAA is not set -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ANALOG=m -CONFIG_JOYSTICK_A3D=m -CONFIG_JOYSTICK_ADI=m -CONFIG_JOYSTICK_COBRA=m -CONFIG_JOYSTICK_GF2K=m -CONFIG_JOYSTICK_GRIP=m -CONFIG_JOYSTICK_GRIP_MP=m -CONFIG_JOYSTICK_GUILLEMOT=m -CONFIG_JOYSTICK_INTERACT=m -CONFIG_JOYSTICK_SIDEWINDER=m -CONFIG_JOYSTICK_TMDC=m -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_IFORCE_232=y -CONFIG_JOYSTICK_WARRIOR=m -CONFIG_JOYSTICK_MAGELLAN=m -CONFIG_JOYSTICK_SPACEORB=m -CONFIG_JOYSTICK_SPACEBALL=m -CONFIG_JOYSTICK_STINGER=m -CONFIG_JOYSTICK_TWIDJOY=m -CONFIG_JOYSTICK_DB9=m -CONFIG_JOYSTICK_GAMECON=m -CONFIG_JOYSTICK_TURBOGRAFX=m -CONFIG_JOYSTICK_JOYDUMP=m -CONFIG_JOYSTICK_XPAD=m -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_INPUT_TABLET=y -CONFIG_TABLET_USB_ACECAD=m -CONFIG_TABLET_USB_AIPTEK=m -CONFIG_TABLET_USB_GTCO=m -CONFIG_TABLET_USB_KBTAB=m -CONFIG_TABLET_USB_WACOM=m -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ADS7846=m -CONFIG_TOUCHSCREEN_FUJITSU=m -CONFIG_TOUCHSCREEN_GUNZE=m -CONFIG_TOUCHSCREEN_ELO=m -CONFIG_TOUCHSCREEN_MTOUCH=m -CONFIG_TOUCHSCREEN_MK712=m -CONFIG_TOUCHSCREEN_PENMOUNT=m -CONFIG_TOUCHSCREEN_TOUCHRIGHT=m -CONFIG_TOUCHSCREEN_TOUCHWIN=m -CONFIG_TOUCHSCREEN_UCB1400=m -CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -CONFIG_TOUCHSCREEN_USB_EGALAX=y -CONFIG_TOUCHSCREEN_USB_PANJIT=y -CONFIG_TOUCHSCREEN_USB_3M=y -CONFIG_TOUCHSCREEN_USB_ITM=y -CONFIG_TOUCHSCREEN_USB_ETURBO=y -CONFIG_TOUCHSCREEN_USB_GUNZE=y -CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y -CONFIG_TOUCHSCREEN_USB_IRTOUCH=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_PCSPKR=y -CONFIG_INPUT_WISTRON_BTNS=m -CONFIG_INPUT_ATLAS_BTNS=m -CONFIG_INPUT_ATI_REMOTE=m -CONFIG_INPUT_ATI_REMOTE2=m -CONFIG_INPUT_KEYSPAN_REMOTE=m -CONFIG_INPUT_POWERMATE=m -CONFIG_INPUT_YEALINK=m -CONFIG_INPUT_UINPUT=m - -# -# Hardware I/O ports -# -CONFIG_SERIO=y -CONFIG_SERIO_I8042=y -CONFIG_SERIO_SERPORT=m -CONFIG_SERIO_CT82C710=m -CONFIG_SERIO_PARKBD=m -CONFIG_SERIO_PCIPS2=m -CONFIG_SERIO_LIBPS2=y -CONFIG_SERIO_RAW=m -CONFIG_GAMEPORT=m -CONFIG_GAMEPORT_NS558=m -CONFIG_GAMEPORT_L4=m -CONFIG_GAMEPORT_EMU10K1=m -CONFIG_GAMEPORT_FM801=m - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -# CONFIG_VT_HW_CONSOLE_BINDING is not set -CONFIG_SERIAL_NONSTANDARD=y -# CONFIG_COMPUTONE is not set -CONFIG_ROCKETPORT=m -CONFIG_CYCLADES=m -# CONFIG_CYZ_INTR is not set -CONFIG_DIGIEPCA=m -# CONFIG_ESPSERIAL is not set -# CONFIG_MOXA_INTELLIO is not set -CONFIG_MOXA_SMARTIO=m -CONFIG_MOXA_SMARTIO_NEW=m -# CONFIG_ISI is not set -CONFIG_SYNCLINK=m -CONFIG_SYNCLINKMP=m -CONFIG_SYNCLINK_GT=m -CONFIG_N_HDLC=m -# CONFIG_SPECIALIX is not set -CONFIG_SX=m -CONFIG_RIO=m -CONFIG_RIO_OLDPCI=y -CONFIG_STALDRV=y - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_SERIAL_8250_PCI=y -CONFIG_SERIAL_8250_PNP=y -CONFIG_SERIAL_8250_CS=m -CONFIG_SERIAL_8250_NR_UARTS=8 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_FOURPORT=m -CONFIG_SERIAL_8250_ACCENT=m -CONFIG_SERIAL_8250_BOCA=m -CONFIG_SERIAL_8250_EXAR_ST16C554=m -CONFIG_SERIAL_8250_HUB6=m -CONFIG_SERIAL_8250_SHARE_IRQ=y -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -CONFIG_SERIAL_8250_RSA=y - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_SERIAL_JSM=m -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 -CONFIG_PRINTER=m -# CONFIG_LP_CONSOLE is not set -CONFIG_PPDEV=m -CONFIG_TIPAR=m -CONFIG_HVC_DRIVER=y -CONFIG_HVC_XEN=y -CONFIG_IPMI_HANDLER=m -CONFIG_IPMI_PANIC_EVENT=y -CONFIG_IPMI_PANIC_STRING=y -CONFIG_IPMI_DEVICE_INTERFACE=m -CONFIG_IPMI_SI=m -CONFIG_IPMI_WATCHDOG=m -CONFIG_IPMI_POWEROFF=m -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set - -# -# Watchdog Device Drivers -# -CONFIG_SOFT_WATCHDOG=m -CONFIG_ACQUIRE_WDT=m -CONFIG_ADVANTECH_WDT=m -CONFIG_ALIM1535_WDT=m -CONFIG_ALIM7101_WDT=m -CONFIG_SC520_WDT=m -CONFIG_EUROTECH_WDT=m -CONFIG_IB700_WDT=m -CONFIG_IBMASR=m -CONFIG_WAFER_WDT=m -CONFIG_I6300ESB_WDT=m -CONFIG_ITCO_WDT=m -CONFIG_ITCO_VENDOR_SUPPORT=y -CONFIG_SC1200_WDT=m -CONFIG_SCx200_WDT=m -CONFIG_PC87413_WDT=m -CONFIG_60XX_WDT=m -CONFIG_SBC8360_WDT=m -CONFIG_CPU5_WDT=m -CONFIG_SMSC37B787_WDT=m -CONFIG_W83627HF_WDT=m -CONFIG_W83697HF_WDT=m -CONFIG_W83877F_WDT=m -CONFIG_W83977F_WDT=m -CONFIG_MACHZ_WDT=m -CONFIG_SBC_EPX_C3_WATCHDOG=m - -# -# ISA-based Watchdog Cards -# -CONFIG_PCWATCHDOG=m -CONFIG_MIXCOMWD=m -CONFIG_WDT=m -CONFIG_WDT_501=y - -# -# PCI-based Watchdog Cards -# -CONFIG_PCIPCWATCHDOG=m -CONFIG_WDTPCI=m -CONFIG_WDT_501_PCI=y - -# -# USB-based Watchdog Cards -# -CONFIG_USBPCWATCHDOG=m -CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_INTEL=m -CONFIG_HW_RANDOM_AMD=m -CONFIG_HW_RANDOM_GEODE=m -CONFIG_HW_RANDOM_VIA=m -CONFIG_NVRAM=m -CONFIG_RTC=y -CONFIG_DTLK=m -CONFIG_R3964=m -CONFIG_APPLICOM=m -CONFIG_SONYPI=m -CONFIG_AGP=m -CONFIG_AGP_ALI=m -CONFIG_AGP_ATI=m -CONFIG_AGP_AMD=m -CONFIG_AGP_AMD64=m -CONFIG_AGP_INTEL=m -CONFIG_AGP_NVIDIA=m -CONFIG_AGP_SIS=m -CONFIG_AGP_SWORKS=m -CONFIG_AGP_VIA=m -CONFIG_AGP_EFFICEON=m -CONFIG_DRM=m -CONFIG_DRM_TDFX=m -CONFIG_DRM_R128=m -CONFIG_DRM_RADEON=m -CONFIG_DRM_I810=m -CONFIG_DRM_I830=m -CONFIG_DRM_I915=m -CONFIG_DRM_MGA=m -CONFIG_DRM_SIS=m -CONFIG_DRM_VIA=m -CONFIG_DRM_SAVAGE=m - -# -# PCMCIA character devices -# -CONFIG_SYNCLINK_CS=m -CONFIG_CARDMAN_4000=m -CONFIG_CARDMAN_4040=m -CONFIG_MWAVE=m -CONFIG_SCx200_GPIO=m -CONFIG_PC8736x_GPIO=m -CONFIG_NSC_GPIO=m -CONFIG_CS5535_GPIO=m -CONFIG_RAW_DRIVER=m -CONFIG_MAX_RAW_DEVS=4096 -CONFIG_HPET=y -# CONFIG_HPET_RTC_IRQ is not set -CONFIG_HPET_MMAP=y -CONFIG_HANGCHECK_TIMER=m -CONFIG_TCG_TPM=m -CONFIG_TCG_TIS=m -CONFIG_TCG_NSC=m -CONFIG_TCG_ATMEL=m -CONFIG_TCG_INFINEON=m -CONFIG_TELCLOCK=m -CONFIG_DEVPORT=y -CONFIG_I2C=m -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_CHARDEV=m - -# -# I2C Algorithms -# -CONFIG_I2C_ALGOBIT=m -CONFIG_I2C_ALGOPCF=m -CONFIG_I2C_ALGOPCA=m - -# -# I2C Hardware Bus support -# -CONFIG_I2C_ALI1535=m -CONFIG_I2C_ALI1563=m -CONFIG_I2C_ALI15X3=m -CONFIG_I2C_AMD756=m -CONFIG_I2C_AMD756_S4882=m -CONFIG_I2C_AMD8111=m -CONFIG_I2C_I801=m -CONFIG_I2C_I810=m -CONFIG_I2C_PIIX4=m -CONFIG_I2C_NFORCE2=m -CONFIG_I2C_OCORES=m -CONFIG_I2C_PARPORT=m -CONFIG_I2C_PARPORT_LIGHT=m -CONFIG_I2C_PROSAVAGE=m -CONFIG_I2C_SAVAGE4=m -CONFIG_I2C_SIMTEC=m -CONFIG_SCx200_I2C=m -CONFIG_SCx200_I2C_SCL=12 -CONFIG_SCx200_I2C_SDA=13 -CONFIG_SCx200_ACB=m -CONFIG_I2C_SIS5595=m -CONFIG_I2C_SIS630=m -CONFIG_I2C_SIS96X=m -CONFIG_I2C_TAOS_EVM=m -CONFIG_I2C_STUB=m -CONFIG_I2C_TINY_USB=m -CONFIG_I2C_VIA=m -CONFIG_I2C_VIAPRO=m -CONFIG_I2C_VOODOO3=m -CONFIG_I2C_PCA_ISA=m - -# -# Miscellaneous I2C Chip support -# -CONFIG_SENSORS_DS1337=m -CONFIG_SENSORS_DS1374=m -CONFIG_DS1682=m -CONFIG_SENSORS_EEPROM=m -CONFIG_SENSORS_PCF8574=m -CONFIG_SENSORS_PCA9539=m -CONFIG_SENSORS_PCF8591=m -CONFIG_SENSORS_MAX6875=m -CONFIG_SENSORS_TSL2550=m -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set - -# -# SPI support -# -CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set -CONFIG_SPI_MASTER=y - -# -# SPI Master Controller Drivers -# -CONFIG_SPI_BITBANG=m -# CONFIG_SPI_BUTTERFLY is not set -CONFIG_SPI_LM70_LLP=m - -# -# SPI Protocol Masters -# -CONFIG_SPI_AT25=m -CONFIG_SPI_SPIDEV=m -CONFIG_SPI_TLE62X0=m -CONFIG_W1=m -CONFIG_W1_CON=y - -# -# 1-wire Bus Masters -# -CONFIG_W1_MASTER_MATROX=m -CONFIG_W1_MASTER_DS2490=m -CONFIG_W1_MASTER_DS2482=m - -# -# 1-wire Slaves -# -CONFIG_W1_SLAVE_THERM=m -CONFIG_W1_SLAVE_SMEM=m -CONFIG_W1_SLAVE_DS2433=m -# CONFIG_W1_SLAVE_DS2433_CRC is not set -CONFIG_W1_SLAVE_DS2760=m -CONFIG_POWER_SUPPLY=m -# CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set -# CONFIG_BATTERY_DS2760 is not set -CONFIG_HWMON=m -CONFIG_HWMON_VID=m -CONFIG_SENSORS_ABITUGURU=m -CONFIG_SENSORS_ABITUGURU3=m -CONFIG_SENSORS_AD7418=m -CONFIG_SENSORS_ADM1021=m -CONFIG_SENSORS_ADM1025=m -CONFIG_SENSORS_ADM1026=m -CONFIG_SENSORS_ADM1029=m -CONFIG_SENSORS_ADM1031=m -CONFIG_SENSORS_ADM9240=m -CONFIG_SENSORS_K8TEMP=m -CONFIG_SENSORS_ASB100=m -CONFIG_SENSORS_ATXP1=m -CONFIG_SENSORS_DS1621=m -CONFIG_SENSORS_F71805F=m -CONFIG_SENSORS_FSCHER=m -CONFIG_SENSORS_FSCPOS=m -CONFIG_SENSORS_GL518SM=m -CONFIG_SENSORS_GL520SM=m -CONFIG_SENSORS_CORETEMP=m -CONFIG_SENSORS_IT87=m -CONFIG_SENSORS_LM63=m -CONFIG_SENSORS_LM70=m -CONFIG_SENSORS_LM75=m -CONFIG_SENSORS_LM77=m -CONFIG_SENSORS_LM78=m -CONFIG_SENSORS_LM80=m -CONFIG_SENSORS_LM83=m -CONFIG_SENSORS_LM85=m -CONFIG_SENSORS_LM87=m -CONFIG_SENSORS_LM90=m -CONFIG_SENSORS_LM92=m -CONFIG_SENSORS_LM93=m -CONFIG_SENSORS_MAX1619=m -CONFIG_SENSORS_MAX6650=m -CONFIG_SENSORS_PC87360=m -CONFIG_SENSORS_PC87427=m -CONFIG_SENSORS_SIS5595=m -CONFIG_SENSORS_DME1737=m -CONFIG_SENSORS_SMSC47M1=m -CONFIG_SENSORS_SMSC47M192=m -CONFIG_SENSORS_SMSC47B397=m -CONFIG_SENSORS_THMC50=m -CONFIG_SENSORS_VIA686A=m -CONFIG_SENSORS_VT1211=m -CONFIG_SENSORS_VT8231=m -CONFIG_SENSORS_W83781D=m -CONFIG_SENSORS_W83791D=m -CONFIG_SENSORS_W83792D=m -CONFIG_SENSORS_W83793=m -CONFIG_SENSORS_W83L785TS=m -CONFIG_SENSORS_W83627HF=m -CONFIG_SENSORS_W83627EHF=m -CONFIG_SENSORS_HDAPS=m -CONFIG_SENSORS_APPLESMC=m -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Multifunction device drivers -# -CONFIG_MFD_SM501=m - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=m -CONFIG_VIDEO_V4L1=y -CONFIG_VIDEO_V4L1_COMPAT=y -CONFIG_VIDEO_V4L2=y -CONFIG_VIDEO_CAPTURE_DRIVERS=y -# CONFIG_VIDEO_ADV_DEBUG is not set -CONFIG_VIDEO_HELPER_CHIPS_AUTO=y -CONFIG_VIDEO_TVAUDIO=m -CONFIG_VIDEO_TDA7432=m -CONFIG_VIDEO_TDA9840=m -CONFIG_VIDEO_TDA9875=m -CONFIG_VIDEO_TEA6415C=m -CONFIG_VIDEO_TEA6420=m -CONFIG_VIDEO_MSP3400=m -CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_WM8775=m -CONFIG_VIDEO_WM8739=m -CONFIG_VIDEO_BT819=m -CONFIG_VIDEO_BT856=m -CONFIG_VIDEO_OV7670=m -CONFIG_VIDEO_SAA7110=m -CONFIG_VIDEO_SAA7111=m -CONFIG_VIDEO_SAA7114=m -CONFIG_VIDEO_SAA711X=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_VPX3220=m -CONFIG_VIDEO_CX25840=m -CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_SAA7127=m -CONFIG_VIDEO_SAA7185=m -CONFIG_VIDEO_ADV7170=m -CONFIG_VIDEO_ADV7175=m -CONFIG_VIDEO_UPD64031A=m -CONFIG_VIDEO_UPD64083=m -CONFIG_VIDEO_VIVI=m -CONFIG_VIDEO_BT848=m -CONFIG_VIDEO_BT848_DVB=y -CONFIG_VIDEO_SAA6588=m -CONFIG_VIDEO_PMS=m -CONFIG_VIDEO_BWQCAM=m -CONFIG_VIDEO_CQCAM=m -CONFIG_VIDEO_W9966=m -CONFIG_VIDEO_CPIA=m -CONFIG_VIDEO_CPIA_PP=m -CONFIG_VIDEO_CPIA_USB=m -# CONFIG_VIDEO_CPIA2 is not set -CONFIG_VIDEO_SAA5246A=m -CONFIG_VIDEO_SAA5249=m -CONFIG_TUNER_3036=m -# CONFIG_TUNER_TEA5761 is not set -CONFIG_VIDEO_STRADIS=m -CONFIG_VIDEO_ZORAN_ZR36060=m -CONFIG_VIDEO_ZORAN=m -CONFIG_VIDEO_ZORAN_BUZ=m -CONFIG_VIDEO_ZORAN_DC10=m -CONFIG_VIDEO_ZORAN_DC30=m -CONFIG_VIDEO_ZORAN_LML33=m -CONFIG_VIDEO_ZORAN_LML33R10=m -# CONFIG_VIDEO_ZORAN_AVS6EYES is not set -CONFIG_VIDEO_MEYE=m -CONFIG_VIDEO_SAA7134=m -CONFIG_VIDEO_SAA7134_ALSA=m -# CONFIG_VIDEO_SAA7134_OSS is not set -CONFIG_VIDEO_SAA7134_DVB=m -CONFIG_VIDEO_MXB=m -CONFIG_VIDEO_DPC=m -CONFIG_VIDEO_HEXIUM_ORION=m -CONFIG_VIDEO_HEXIUM_GEMINI=m -CONFIG_VIDEO_CX88=m -CONFIG_VIDEO_CX88_ALSA=m -CONFIG_VIDEO_CX88_BLACKBIRD=m -CONFIG_VIDEO_CX88_DVB=m -CONFIG_VIDEO_CX88_VP3054=m -CONFIG_VIDEO_IVTV=m -CONFIG_VIDEO_CAFE_CCIC=m -CONFIG_V4L_USB_DRIVERS=y -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_PVRUSB2_29XXX=y -CONFIG_VIDEO_PVRUSB2_24XXX=y -CONFIG_VIDEO_PVRUSB2_SYSFS=y -# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_USBVISION=m -CONFIG_VIDEO_USBVIDEO=m -CONFIG_USB_VICAM=m -CONFIG_USB_IBMCAM=m -CONFIG_USB_KONICAWC=m -CONFIG_USB_QUICKCAM_MESSENGER=m -CONFIG_USB_ET61X251=m -CONFIG_VIDEO_OVCAMCHIP=m -CONFIG_USB_W9968CF=m -CONFIG_USB_OV511=m -CONFIG_USB_SE401=m -CONFIG_USB_SN9C102=m -CONFIG_USB_STV680=m -CONFIG_USB_ZC0301=m -CONFIG_USB_PWC=m -# CONFIG_USB_PWC_DEBUG is not set -CONFIG_USB_ZR364XX=m -CONFIG_RADIO_ADAPTERS=y -CONFIG_RADIO_CADET=m -CONFIG_RADIO_RTRACK=m -CONFIG_RADIO_RTRACK2=m -CONFIG_RADIO_AZTECH=m -CONFIG_RADIO_GEMTEK=m -CONFIG_RADIO_GEMTEK_PCI=m -CONFIG_RADIO_MAXIRADIO=m -CONFIG_RADIO_MAESTRO=m -CONFIG_RADIO_SF16FMI=m -CONFIG_RADIO_SF16FMR2=m -CONFIG_RADIO_TERRATEC=m -CONFIG_RADIO_TRUST=m -CONFIG_RADIO_TYPHOON=m -CONFIG_RADIO_TYPHOON_PROC_FS=y -CONFIG_RADIO_ZOLTRIX=m -CONFIG_USB_DSBR=m -CONFIG_DVB_CORE=m -CONFIG_DVB_CORE_ATTACH=y -CONFIG_DVB_CAPTURE_DRIVERS=y - -# -# Supported SAA7146 based PCI Adapters -# -CONFIG_DVB_AV7110=m -# CONFIG_DVB_AV7110_FIRMWARE is not set -CONFIG_DVB_AV7110_OSD=y -CONFIG_DVB_BUDGET=m -CONFIG_DVB_BUDGET_CI=m -CONFIG_DVB_BUDGET_AV=m -CONFIG_DVB_BUDGET_PATCH=m - -# -# Supported USB Adapters -# -CONFIG_DVB_USB=m -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_TTUSB_BUDGET=m -CONFIG_DVB_TTUSB_DEC=m -CONFIG_DVB_CINERGYT2=m -# CONFIG_DVB_CINERGYT2_TUNING is not set - -# -# Supported FlexCopII (B2C2) Adapters -# -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_DVB_B2C2_FLEXCOP_PCI=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set - -# -# Supported BT878 Adapters -# -CONFIG_DVB_BT8XX=m - -# -# Supported Pluto2 Adapters -# -# CONFIG_DVB_PLUTO2 is not set - -# -# Supported DVB Frontends -# - -# -# Customise DVB Frontends -# -# CONFIG_DVB_FE_CUSTOMISE is not set - -# -# DVB-S (satellite) frontends -# -CONFIG_DVB_STV0299=m -CONFIG_DVB_CX24110=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_TDA8083=m -CONFIG_DVB_MT312=m -CONFIG_DVB_VES1X93=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_TDA10086=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_SP8870=m -CONFIG_DVB_SP887X=m -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_L64781=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_MT352=m -CONFIG_DVB_ZL10353=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_VES1820=m -CONFIG_DVB_TDA10021=m -CONFIG_DVB_TDA10023=m -CONFIG_DVB_STV0297=m - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_NXT200X=m -CONFIG_DVB_OR51211=m -CONFIG_DVB_OR51132=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LGDT330X=m - -# -# Tuners/PLL support -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TDA827X=m -CONFIG_DVB_TUNER_QT1010=m -CONFIG_DVB_TUNER_MT2060=m - -# -# Miscellaneous devices -# -CONFIG_DVB_LNBP21=m -CONFIG_DVB_ISL6421=m -CONFIG_DVB_TUA6100=m -CONFIG_VIDEO_SAA7146=m -CONFIG_VIDEO_SAA7146_VV=m -CONFIG_VIDEO_TUNER=m -CONFIG_VIDEO_BUF=m -CONFIG_VIDEO_BUF_DVB=m -CONFIG_VIDEO_BTCX=m -CONFIG_VIDEO_IR_I2C=m -CONFIG_VIDEO_IR=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_DAB=y -CONFIG_USB_DABUSB=m - -# -# Graphics support -# -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=m -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_PROGEAR=m -CONFIG_BACKLIGHT_CARILLO_RANCH=m - -# -# Display device support -# -CONFIG_DISPLAY_SUPPORT=m - -# -# Display hardware drivers -# -CONFIG_VGASTATE=m -CONFIG_VIDEO_OUTPUT_CONTROL=m -CONFIG_FB=y -CONFIG_FIRMWARE_EDID=y -CONFIG_FB_DDC=m -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SYS_FILLRECT=m -CONFIG_FB_SYS_COPYAREA=m -CONFIG_FB_SYS_IMAGEBLIT=m -CONFIG_FB_SYS_FOPS=m -CONFIG_FB_DEFERRED_IO=y -# CONFIG_FB_SVGALIB is not set -# CONFIG_FB_MACMODES is not set -CONFIG_FB_BACKLIGHT=y -CONFIG_FB_MODE_HELPERS=y -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -CONFIG_FB_CIRRUS=m -CONFIG_FB_PM2=m -CONFIG_FB_PM2_FIFO_DISCONNECT=y -CONFIG_FB_CYBER2000=m -CONFIG_FB_ARC=m -# CONFIG_FB_ASILIANT is not set -CONFIG_FB_IMSTT=y -CONFIG_FB_VGA16=m -CONFIG_FB_VESA=y -CONFIG_FB_IMAC=y -CONFIG_FB_HECUBA=m -CONFIG_FB_HGA=m -CONFIG_FB_HGA_ACCEL=y -CONFIG_FB_S1D13XXX=m -CONFIG_FB_NVIDIA=m -CONFIG_FB_NVIDIA_I2C=y -# CONFIG_FB_NVIDIA_DEBUG is not set -CONFIG_FB_NVIDIA_BACKLIGHT=y -CONFIG_FB_RIVA=m -CONFIG_FB_RIVA_I2C=y -# CONFIG_FB_RIVA_DEBUG is not set -CONFIG_FB_RIVA_BACKLIGHT=y -CONFIG_FB_I810=m -CONFIG_FB_I810_GTF=y -CONFIG_FB_I810_I2C=y -CONFIG_FB_LE80578=m -CONFIG_FB_CARILLO_RANCH=m -CONFIG_FB_INTEL=m -# CONFIG_FB_INTEL_DEBUG is not set -CONFIG_FB_INTEL_I2C=y -# CONFIG_FB_MATROX is not set -CONFIG_FB_RADEON=m -CONFIG_FB_RADEON_I2C=y -CONFIG_FB_RADEON_BACKLIGHT=y -# CONFIG_FB_RADEON_DEBUG is not set -# CONFIG_FB_ATY128 is not set -CONFIG_FB_ATY=m -CONFIG_FB_ATY_CT=y -CONFIG_FB_ATY_GENERIC_LCD=y -CONFIG_FB_ATY_GX=y -CONFIG_FB_ATY_BACKLIGHT=y -# CONFIG_FB_S3 is not set -CONFIG_FB_SAVAGE=m -CONFIG_FB_SAVAGE_I2C=y -CONFIG_FB_SAVAGE_ACCEL=y -CONFIG_FB_SIS=m -CONFIG_FB_SIS_300=y -CONFIG_FB_SIS_315=y -CONFIG_FB_NEOMAGIC=m -CONFIG_FB_KYRO=m -CONFIG_FB_3DFX=m -CONFIG_FB_3DFX_ACCEL=y -CONFIG_FB_VOODOO1=m -# CONFIG_FB_VT8623 is not set -CONFIG_FB_CYBLA=m -CONFIG_FB_TRIDENT=m -CONFIG_FB_TRIDENT_ACCEL=y -# CONFIG_FB_ARK is not set -CONFIG_FB_PM3=m -CONFIG_FB_GEODE=y -CONFIG_FB_GEODE_LX=m -CONFIG_FB_GEODE_GX=m -# CONFIG_FB_GEODE_GX_SET_FBSIZE is not set -CONFIG_FB_GEODE_GX1=m -CONFIG_FB_SM501=m -# CONFIG_FB_VIRTUAL is not set - -# -# Console display driver support -# -CONFIG_VGA_CONSOLE=y -# CONFIG_VGACON_SOFT_SCROLLBACK is not set -CONFIG_VIDEO_SELECT=y -CONFIG_MDA_CONSOLE=m -CONFIG_DUMMY_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -# CONFIG_LOGO is not set - -# -# Sound -# -CONFIG_SOUND=m - -# -# Advanced Linux Sound Architecture -# -CONFIG_SND=m -CONFIG_SND_TIMER=m -CONFIG_SND_PCM=m -CONFIG_SND_HWDEP=m -CONFIG_SND_RAWMIDI=m -CONFIG_SND_SEQUENCER=m -CONFIG_SND_SEQ_DUMMY=m -CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=m -CONFIG_SND_PCM_OSS=m -CONFIG_SND_PCM_OSS_PLUGINS=y -CONFIG_SND_SEQUENCER_OSS=y -CONFIG_SND_RTCTIMER=m -CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y -# CONFIG_SND_DYNAMIC_MINORS is not set -CONFIG_SND_SUPPORT_OLD_API=y -CONFIG_SND_VERBOSE_PROCFS=y -CONFIG_SND_VERBOSE_PRINTK=y -CONFIG_SND_DEBUG=y -# CONFIG_SND_DEBUG_DETECT is not set -# CONFIG_SND_PCM_XRUN_DEBUG is not set - -# -# Generic devices -# -CONFIG_SND_MPU401_UART=m -CONFIG_SND_OPL3_LIB=m -CONFIG_SND_OPL4_LIB=m -CONFIG_SND_VX_LIB=m -CONFIG_SND_AC97_CODEC=m -CONFIG_SND_DUMMY=m -CONFIG_SND_VIRMIDI=m -CONFIG_SND_MTPAV=m -CONFIG_SND_MTS64=m -CONFIG_SND_SERIAL_U16550=m -CONFIG_SND_MPU401=m -CONFIG_SND_PORTMAN2X4=m -CONFIG_SND_AD1848_LIB=m -CONFIG_SND_CS4231_LIB=m -CONFIG_SND_SB_COMMON=m -CONFIG_SND_SB8_DSP=m -CONFIG_SND_SB16_DSP=m - -# -# ISA devices -# -# CONFIG_SND_ADLIB is not set -CONFIG_SND_AD1816A=m -CONFIG_SND_AD1848=m -CONFIG_SND_ALS100=m -CONFIG_SND_AZT2320=m -CONFIG_SND_CMI8330=m -CONFIG_SND_CS4231=m -CONFIG_SND_CS4232=m -CONFIG_SND_CS4236=m -CONFIG_SND_DT019X=m -CONFIG_SND_ES968=m -CONFIG_SND_ES1688=m -CONFIG_SND_ES18XX=m -CONFIG_SND_GUS_SYNTH=m -CONFIG_SND_GUSCLASSIC=m -CONFIG_SND_GUSEXTREME=m -CONFIG_SND_GUSMAX=m -CONFIG_SND_INTERWAVE=m -CONFIG_SND_INTERWAVE_STB=m -CONFIG_SND_OPL3SA2=m -CONFIG_SND_OPTI92X_AD1848=m -CONFIG_SND_OPTI92X_CS4231=m -CONFIG_SND_OPTI93X=m -CONFIG_SND_MIRO=m -CONFIG_SND_SB8=m -CONFIG_SND_SB16=m -CONFIG_SND_SBAWE=m -CONFIG_SND_SB16_CSP=y -CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL=y -CONFIG_SND_SGALAXY=m -CONFIG_SND_SSCAPE=m -CONFIG_SND_WAVEFRONT=m -CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL=y - -# -# PCI devices -# -CONFIG_SND_AD1889=m -CONFIG_SND_ALS300=m -CONFIG_SND_ALS4000=m -CONFIG_SND_ALI5451=m -CONFIG_SND_ATIIXP=m -CONFIG_SND_ATIIXP_MODEM=m -CONFIG_SND_AU8810=m -CONFIG_SND_AU8820=m -CONFIG_SND_AU8830=m -CONFIG_SND_AZT3328=m -CONFIG_SND_BT87X=m -# CONFIG_SND_BT87X_OVERCLOCK is not set -CONFIG_SND_CA0106=m -CONFIG_SND_CMIPCI=m -CONFIG_SND_CS4281=m -CONFIG_SND_CS46XX=m -CONFIG_SND_CS46XX_NEW_DSP=y -CONFIG_SND_CS5530=m -CONFIG_SND_CS5535AUDIO=m -CONFIG_SND_DARLA20=m -CONFIG_SND_GINA20=m -CONFIG_SND_LAYLA20=m -CONFIG_SND_DARLA24=m -CONFIG_SND_GINA24=m -CONFIG_SND_LAYLA24=m -CONFIG_SND_MONA=m -CONFIG_SND_MIA=m -CONFIG_SND_ECHO3G=m -CONFIG_SND_INDIGO=m -CONFIG_SND_INDIGOIO=m -CONFIG_SND_INDIGODJ=m -CONFIG_SND_EMU10K1=m -CONFIG_SND_EMU10K1X=m -CONFIG_SND_ENS1370=m -CONFIG_SND_ENS1371=m -CONFIG_SND_ES1938=m -CONFIG_SND_ES1968=m -CONFIG_SND_FM801=m -CONFIG_SND_FM801_TEA575X_BOOL=y -CONFIG_SND_FM801_TEA575X=m -CONFIG_SND_HDA_INTEL=m -CONFIG_SND_HDSP=m -CONFIG_SND_HDSPM=m -CONFIG_SND_ICE1712=m -CONFIG_SND_ICE1724=m -CONFIG_SND_INTEL8X0=m -CONFIG_SND_INTEL8X0M=m -CONFIG_SND_KORG1212=m -CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y -CONFIG_SND_MAESTRO3=m -CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y -CONFIG_SND_MIXART=m -CONFIG_SND_NM256=m -CONFIG_SND_PCXHR=m -CONFIG_SND_RIPTIDE=m -CONFIG_SND_RME32=m -CONFIG_SND_RME96=m -CONFIG_SND_RME9652=m -CONFIG_SND_SONICVIBES=m -CONFIG_SND_TRIDENT=m -CONFIG_SND_VIA82XX=m -CONFIG_SND_VIA82XX_MODEM=m -CONFIG_SND_VX222=m -CONFIG_SND_YMFPCI=m -CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y -CONFIG_SND_AC97_POWER_SAVE=y - -# -# USB devices -# -CONFIG_SND_USB_AUDIO=m -CONFIG_SND_USB_USX2Y=m -CONFIG_SND_USB_CAIAQ=m -CONFIG_SND_USB_CAIAQ_INPUT=y - -# -# PCMCIA devices -# -CONFIG_SND_VXPOCKET=m -CONFIG_SND_PDAUDIOCF=m - -# -# System on Chip audio support -# -# CONFIG_SND_SOC is not set - -# -# SoC Audio support for SuperH -# - -# -# Open Sound System -# -CONFIG_SOUND_PRIME=m -CONFIG_SOUND_TRIDENT=m -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -CONFIG_SOUND_OSS=m -CONFIG_SOUND_TRACEINIT=y -CONFIG_SOUND_DMAP=y -CONFIG_SOUND_SSCAPE=m -CONFIG_SOUND_VMIDI=m -CONFIG_SOUND_TRIX=m -CONFIG_SOUND_MSS=m -CONFIG_SOUND_MPU401=m -CONFIG_SOUND_PAS=m -CONFIG_SOUND_PSS=m -CONFIG_PSS_MIXER=y -# CONFIG_PSS_HAVE_BOOT is not set -CONFIG_SOUND_SB=m -CONFIG_SOUND_YM3812=m -CONFIG_SOUND_UART6850=m -CONFIG_SOUND_AEDSP16=m -CONFIG_SC6600=y -CONFIG_SC6600_JOY=y -CONFIG_SC6600_CDROM=4 -CONFIG_SC6600_CDROMBASE=0x0 -# CONFIG_AEDSP16_MSS is not set -# CONFIG_AEDSP16_SBPRO is not set -CONFIG_SOUND_KAHLUA=m -CONFIG_AC97_BUS=m -CONFIG_HID_SUPPORT=y -CONFIG_HID=y -# CONFIG_HID_DEBUG is not set - -# -# USB Input Devices -# -CONFIG_USB_HID=m -CONFIG_USB_HIDINPUT_POWERBOOK=y -CONFIG_HID_FF=y -CONFIG_HID_PID=y -CONFIG_LOGITECH_FF=y -CONFIG_PANTHERLORD_FF=y -CONFIG_THRUSTMASTER_FF=y -CONFIG_ZEROPLUS_FF=y -CONFIG_USB_HIDDEV=y - -# -# USB HID Boot Protocol drivers -# -# CONFIG_USB_KBD is not set -# CONFIG_USB_MOUSE is not set -CONFIG_USB_SUPPORT=y -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y -CONFIG_USB_ARCH_HAS_EHCI=y -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -CONFIG_USB_DEVICE_CLASS=y -# CONFIG_USB_DYNAMIC_MINORS is not set -CONFIG_USB_SUSPEND=y -# CONFIG_USB_PERSIST is not set -# CONFIG_USB_OTG is not set - -# -# USB Host Controller Drivers -# -CONFIG_USB_EHCI_HCD=m -CONFIG_USB_EHCI_SPLIT_ISO=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -# CONFIG_USB_EHCI_TT_NEWSCHED is not set -CONFIG_USB_ISP116X_HCD=m -CONFIG_USB_OHCI_HCD=m -# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set -# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -CONFIG_USB_UHCI_HCD=m -CONFIG_USB_U132_HCD=m -CONFIG_USB_SL811_HCD=m -CONFIG_USB_SL811_CS=m -CONFIG_USB_R8A66597_HCD=m - -# -# USB Device Class drivers -# -CONFIG_USB_ACM=m -CONFIG_USB_PRINTER=m - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -# - -# -# may also be needed; see USB_STORAGE Help for more information -# -CONFIG_USB_STORAGE=m -# CONFIG_USB_STORAGE_DEBUG is not set -CONFIG_USB_STORAGE_DATAFAB=y -CONFIG_USB_STORAGE_FREECOM=y -CONFIG_USB_STORAGE_ISD200=y -CONFIG_USB_STORAGE_DPCM=y -CONFIG_USB_STORAGE_USBAT=y -CONFIG_USB_STORAGE_SDDR09=y -CONFIG_USB_STORAGE_SDDR55=y -CONFIG_USB_STORAGE_JUMPSHOT=y -# CONFIG_USB_STORAGE_ALAUDA is not set -CONFIG_USB_STORAGE_KARMA=y -# CONFIG_USB_LIBUSUAL is not set - -# -# USB Imaging devices -# -CONFIG_USB_MDC800=m -CONFIG_USB_MICROTEK=m -CONFIG_USB_MON=y - -# -# USB port drivers -# -CONFIG_USB_USS720=m - -# -# USB Serial Converter support -# -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -# CONFIG_USB_SERIAL_AIRCABLE is not set -CONFIG_USB_SERIAL_AIRPRIME=m -CONFIG_USB_SERIAL_ARK3116=m -CONFIG_USB_SERIAL_BELKIN=m -CONFIG_USB_SERIAL_WHITEHEAT=m -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -CONFIG_USB_SERIAL_CP2101=m -CONFIG_USB_SERIAL_CYPRESS_M8=m -CONFIG_USB_SERIAL_EMPEG=m -CONFIG_USB_SERIAL_FTDI_SIO=m -# CONFIG_USB_SERIAL_FUNSOFT is not set -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -CONFIG_USB_SERIAL_IR=m -CONFIG_USB_SERIAL_EDGEPORT=m -CONFIG_USB_SERIAL_EDGEPORT_TI=m -CONFIG_USB_SERIAL_GARMIN=m -CONFIG_USB_SERIAL_IPW=m -CONFIG_USB_SERIAL_KEYSPAN_PDA=m -CONFIG_USB_SERIAL_KEYSPAN=m -CONFIG_USB_SERIAL_KEYSPAN_MPR=y -CONFIG_USB_SERIAL_KEYSPAN_USA28=y -CONFIG_USB_SERIAL_KEYSPAN_USA28X=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y -CONFIG_USB_SERIAL_KEYSPAN_USA19=y -CONFIG_USB_SERIAL_KEYSPAN_USA18X=y -CONFIG_USB_SERIAL_KEYSPAN_USA19W=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y -CONFIG_USB_SERIAL_KEYSPAN_USA49W=y -CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y -CONFIG_USB_SERIAL_KLSI=m -CONFIG_USB_SERIAL_KOBIL_SCT=m -CONFIG_USB_SERIAL_MCT_U232=m -CONFIG_USB_SERIAL_MOS7720=m -CONFIG_USB_SERIAL_MOS7840=m -CONFIG_USB_SERIAL_NAVMAN=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_SERIAL_OTI6858=m -CONFIG_USB_SERIAL_HP4X=m -CONFIG_USB_SERIAL_SAFE=m -CONFIG_USB_SERIAL_SAFE_PADDED=y -CONFIG_USB_SERIAL_SIERRAWIRELESS=m -CONFIG_USB_SERIAL_TI=m -CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_XIRCOM=m -CONFIG_USB_SERIAL_OPTION=m -CONFIG_USB_SERIAL_OMNINET=m -# CONFIG_USB_SERIAL_DEBUG is not set -CONFIG_USB_EZUSB=y - -# -# USB Miscellaneous drivers -# -CONFIG_USB_EMI62=m -CONFIG_USB_EMI26=m -CONFIG_USB_ADUTUX=m -CONFIG_USB_AUERSWALD=m -CONFIG_USB_RIO500=m -CONFIG_USB_LEGOTOWER=m -CONFIG_USB_LCD=m -CONFIG_USB_BERRY_CHARGE=m -CONFIG_USB_LED=m -CONFIG_USB_CYPRESS_CY7C63=m -CONFIG_USB_CYTHERM=m -CONFIG_USB_PHIDGET=m -CONFIG_USB_PHIDGETKIT=m -CONFIG_USB_PHIDGETMOTORCONTROL=m -CONFIG_USB_PHIDGETSERVO=m -CONFIG_USB_IDMOUSE=m -CONFIG_USB_FTDI_ELAN=m -CONFIG_USB_APPLEDISPLAY=m -CONFIG_USB_SISUSBVGA=m -# CONFIG_USB_SISUSBVGA_CON is not set -CONFIG_USB_LD=m -CONFIG_USB_TRANCEVIBRATOR=m -CONFIG_USB_IOWARRIOR=m -# CONFIG_USB_TEST is not set - -# -# USB DSL modem support -# -CONFIG_USB_ATM=m -CONFIG_USB_SPEEDTOUCH=m -CONFIG_USB_CXACRU=m -CONFIG_USB_UEAGLEATM=m -CONFIG_USB_XUSBATM=m - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set -CONFIG_MMC=m -# CONFIG_MMC_DEBUG is not set -# CONFIG_MMC_UNSAFE_RESUME is not set - -# -# MMC/SD Card Drivers -# -CONFIG_MMC_BLOCK=m -CONFIG_MMC_BLOCK_BOUNCE=y - -# -# MMC/SD Host Controller Drivers -# -# CONFIG_MMC_SDHCI is not set -CONFIG_MMC_WBSD=m -CONFIG_MMC_TIFM_SD=m -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=m - -# -# LED drivers -# -CONFIG_LEDS_NET48XX=m -CONFIG_LEDS_WRAP=m - -# -# LED Triggers -# -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_TIMER=m -CONFIG_LEDS_TRIGGER_IDE_DISK=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=m -CONFIG_INFINIBAND=m -CONFIG_INFINIBAND_USER_MAD=m -CONFIG_INFINIBAND_USER_ACCESS=m -CONFIG_INFINIBAND_USER_MEM=y -CONFIG_INFINIBAND_ADDR_TRANS=y -CONFIG_INFINIBAND_MTHCA=m -CONFIG_INFINIBAND_MTHCA_DEBUG=y -CONFIG_INFINIBAND_AMSO1100=m -# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set -CONFIG_INFINIBAND_CXGB3=m -# CONFIG_INFINIBAND_CXGB3_DEBUG is not set -CONFIG_MLX4_INFINIBAND=m -CONFIG_INFINIBAND_IPOIB=m -# CONFIG_INFINIBAND_IPOIB_CM is not set -CONFIG_INFINIBAND_IPOIB_DEBUG=y -# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set -# CONFIG_INFINIBAND_SRP is not set -# CONFIG_INFINIBAND_ISER is not set -# CONFIG_EDAC is not set -CONFIG_RTC_LIB=m -CONFIG_RTC_CLASS=m - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -CONFIG_RTC_INTF_DEV_UIE_EMUL=y -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -CONFIG_RTC_DRV_DS1307=m -CONFIG_RTC_DRV_DS1672=m -CONFIG_RTC_DRV_MAX6900=m -CONFIG_RTC_DRV_RS5C372=m -CONFIG_RTC_DRV_ISL1208=m -CONFIG_RTC_DRV_X1205=m -CONFIG_RTC_DRV_PCF8563=m -CONFIG_RTC_DRV_PCF8583=m -CONFIG_RTC_DRV_M41T80=m -CONFIG_RTC_DRV_M41T80_WDT=y - -# -# SPI RTC drivers -# -CONFIG_RTC_DRV_RS5C348=m -CONFIG_RTC_DRV_MAX6902=m - -# -# Platform RTC drivers -# -CONFIG_RTC_DRV_CMOS=m -CONFIG_RTC_DRV_DS1553=m -CONFIG_RTC_DRV_STK17TA8=m -CONFIG_RTC_DRV_DS1742=m -CONFIG_RTC_DRV_M48T86=m -CONFIG_RTC_DRV_M48T59=m -CONFIG_RTC_DRV_V3020=m - -# -# on-CPU RTC drivers -# - -# -# DMA Engine support -# -CONFIG_DMA_ENGINE=y - -# -# DMA Clients -# -CONFIG_NET_DMA=y - -# -# DMA Devices -# -CONFIG_INTEL_IOATDMA=m -CONFIG_AUXDISPLAY=y -CONFIG_KS0108=m -CONFIG_KS0108_PORT=0x378 -CONFIG_KS0108_DELAY=2 -CONFIG_CFAG12864B=m -CONFIG_CFAG12864B_RATE=20 -CONFIG_VIRTUALIZATION=y -CONFIG_KVM=m -CONFIG_KVM_INTEL=m -CONFIG_KVM_AMD=m - -# -# Userspace I/O -# -CONFIG_UIO=m -CONFIG_UIO_CIF=m -# CONFIG_LGUEST is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_POSIX_ACL=y -CONFIG_EXT2_FS_SECURITY=y -CONFIG_EXT2_FS_XIP=y -CONFIG_FS_XIP=y -CONFIG_EXT3_FS=m -CONFIG_EXT3_FS_XATTR=y -CONFIG_EXT3_FS_POSIX_ACL=y -CONFIG_EXT3_FS_SECURITY=y -# CONFIG_EXT4DEV_FS is not set -CONFIG_JBD=m -CONFIG_JBD_DEBUG=y -CONFIG_FS_MBCACHE=y -CONFIG_REISERFS_FS=m -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -CONFIG_REISERFS_FS_SECURITY=y -CONFIG_JFS_FS=m -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -# CONFIG_JFS_DEBUG is not set -CONFIG_JFS_STATISTICS=y -CONFIG_FS_POSIX_ACL=y -CONFIG_XFS_FS=m -CONFIG_XFS_QUOTA=y -CONFIG_XFS_SECURITY=y -CONFIG_XFS_POSIX_ACL=y -CONFIG_XFS_RT=y -CONFIG_GFS2_FS=m -CONFIG_GFS2_FS_LOCKING_NOLOCK=m -CONFIG_GFS2_FS_LOCKING_DLM=m -CONFIG_OCFS2_FS=m -# CONFIG_OCFS2_DEBUG_MASKLOG is not set -CONFIG_MINIX_FS=y -CONFIG_ROMFS_FS=m -CONFIG_INOTIFY=y -CONFIG_INOTIFY_USER=y -CONFIG_QUOTA=y -CONFIG_QFMT_V1=m -CONFIG_QFMT_V2=m -CONFIG_QUOTACTL=y -CONFIG_DNOTIFY=y -CONFIG_AUTOFS_FS=m -CONFIG_AUTOFS4_FS=m -CONFIG_FUSE_FS=m -CONFIG_GENERIC_ACL=y - -# -# CD-ROM/DVD Filesystems -# -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=m -CONFIG_UDF_NLS=y - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -CONFIG_NTFS_FS=m -# CONFIG_NTFS_DEBUG is not set -CONFIG_NTFS_RW=y - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_PROC_KCORE=y -CONFIG_PROC_SYSCTL=y -CONFIG_SYSFS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_HUGETLBFS=y -CONFIG_HUGETLB_PAGE=y -CONFIG_RAMFS=y -CONFIG_CONFIGFS_FS=m - -# -# Miscellaneous filesystems -# -CONFIG_ADFS_FS=m -# CONFIG_ADFS_FS_RW is not set -CONFIG_AFFS_FS=m -CONFIG_ECRYPT_FS=m -CONFIG_HFS_FS=m -CONFIG_HFSPLUS_FS=m -CONFIG_BEFS_FS=m -# CONFIG_BEFS_DEBUG is not set -CONFIG_BFS_FS=m -CONFIG_EFS_FS=m -CONFIG_JFFS2_FS=m -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_JFFS2_FS_WRITEBUFFER=y -# CONFIG_JFFS2_SUMMARY is not set -# CONFIG_JFFS2_FS_XATTR is not set -CONFIG_JFFS2_COMPRESSION_OPTIONS=y -CONFIG_JFFS2_ZLIB=y -CONFIG_JFFS2_RTIME=y -# CONFIG_JFFS2_RUBIN is not set -# CONFIG_JFFS2_CMODE_NONE is not set -CONFIG_JFFS2_CMODE_PRIORITY=y -# CONFIG_JFFS2_CMODE_SIZE is not set -CONFIG_CRAMFS=m -CONFIG_VXFS_FS=m -CONFIG_HPFS_FS=m -CONFIG_QNX4FS_FS=m -CONFIG_SYSV_FS=m -CONFIG_UFS_FS=m -# CONFIG_UFS_FS_WRITE is not set -# CONFIG_UFS_DEBUG is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=y -CONFIG_NFS_DIRECTIO=y -CONFIG_NFSD=m -CONFIG_NFSD_V2_ACL=y -CONFIG_NFSD_V3=y -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_NFSD_TCP=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_EXPORTFS=m -CONFIG_NFS_ACL_SUPPORT=y -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=y -CONFIG_SUNRPC_GSS=y -# CONFIG_SUNRPC_BIND34 is not set -CONFIG_RPCSEC_GSS_KRB5=y -CONFIG_RPCSEC_GSS_SPKM3=m -CONFIG_SMB_FS=m -CONFIG_SMB_NLS_DEFAULT=y -CONFIG_SMB_NLS_REMOTE="cp850" -CONFIG_CIFS=m -CONFIG_CIFS_STATS=y -# CONFIG_CIFS_STATS2 is not set -CONFIG_CIFS_WEAK_PW_HASH=y -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_POSIX=y -# CONFIG_CIFS_DEBUG2 is not set -# CONFIG_CIFS_EXPERIMENTAL is not set -CONFIG_NCP_FS=m -CONFIG_NCPFS_PACKET_SIGNING=y -CONFIG_NCPFS_IOCTL_LOCKING=y -CONFIG_NCPFS_STRONG=y -CONFIG_NCPFS_NFS_NS=y -CONFIG_NCPFS_OS2_NS=y -CONFIG_NCPFS_SMALLDOS=y -CONFIG_NCPFS_NLS=y -CONFIG_NCPFS_EXTRAS=y -CONFIG_CODA_FS=m -# CONFIG_CODA_FS_OLD_API is not set -CONFIG_AFS_FS=m -# CONFIG_AFS_DEBUG is not set -CONFIG_9P_FS=m - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -CONFIG_OSF_PARTITION=y -# CONFIG_AMIGA_PARTITION is not set -CONFIG_ATARI_PARTITION=y -CONFIG_MAC_PARTITION=y -CONFIG_MSDOS_PARTITION=y -CONFIG_BSD_DISKLABEL=y -# CONFIG_MINIX_SUBPARTITION is not set -CONFIG_SOLARIS_X86_PARTITION=y -CONFIG_UNIXWARE_DISKLABEL=y -CONFIG_LDM_PARTITION=y -# CONFIG_LDM_DEBUG is not set -CONFIG_SGI_PARTITION=y -CONFIG_ULTRIX_PARTITION=y -CONFIG_SUN_PARTITION=y -CONFIG_KARMA_PARTITION=y -CONFIG_EFI_PARTITION=y -CONFIG_SYSV68_PARTITION=y - -# -# Native Language Support -# -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=m -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -CONFIG_NLS_CODEPAGE_936=m -CONFIG_NLS_CODEPAGE_950=m -CONFIG_NLS_CODEPAGE_932=m -CONFIG_NLS_CODEPAGE_949=m -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -CONFIG_NLS_CODEPAGE_1250=m -CONFIG_NLS_CODEPAGE_1251=m -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=m -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -CONFIG_NLS_ISO8859_13=m -CONFIG_NLS_ISO8859_14=m -CONFIG_NLS_ISO8859_15=m -CONFIG_NLS_KOI8_R=m -CONFIG_NLS_KOI8_U=m -CONFIG_NLS_UTF8=m - -# -# Distributed Lock Manager -# -CONFIG_DLM=m -CONFIG_DLM_DEBUG=y -CONFIG_INSTRUMENTATION=y -CONFIG_PROFILING=y -CONFIG_OPROFILE=m -# CONFIG_KPROBES is not set - -# -# Kernel hacking -# -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -# CONFIG_PRINTK_TIME is not set -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_UNUSED_SYMBOLS=y -CONFIG_DEBUG_FS=y -# CONFIG_HEADERS_CHECK is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SHIRQ is not set -CONFIG_DETECT_SOFTLOCKUP=y -CONFIG_SCHED_DEBUG=y -# CONFIG_SCHEDSTATS is not set -# CONFIG_TIMER_STATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_RT_MUTEX_TESTER is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_HIGHMEM is not set -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_LIST is not set -# CONFIG_FRAME_POINTER is not set -# CONFIG_FORCED_INLINING is not set -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_FAULT_INJECTION is not set -CONFIG_EARLY_PRINTK=y -CONFIG_DEBUG_STACKOVERFLOW=y -# CONFIG_DEBUG_STACK_USAGE is not set - -# -# Page alloc debug is incompatible with Software Suspend on i386 -# -# CONFIG_DEBUG_RODATA is not set -# CONFIG_4KSTACKS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y -CONFIG_DOUBLEFAULT=y - -# -# Security options -# -CONFIG_KEYS=y -# CONFIG_KEYS_DEBUG_PROC_KEYS is not set -CONFIG_SECURITY=y -CONFIG_SECURITY_NETWORK=y -# CONFIG_SECURITY_NETWORK_XFRM is not set -CONFIG_SECURITY_CAPABILITIES=m -CONFIG_SECURITY_ROOTPLUG=m -CONFIG_SECURITY_SELINUX=y -CONFIG_SECURITY_SELINUX_BOOTPARAM=y -CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 -CONFIG_SECURITY_SELINUX_DISABLE=y -CONFIG_SECURITY_SELINUX_DEVELOP=y -CONFIG_SECURITY_SELINUX_AVC_STATS=y -CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 -# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set -# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set -CONFIG_XOR_BLOCKS=m -CONFIG_ASYNC_CORE=m -CONFIG_ASYNC_MEMCPY=m -CONFIG_ASYNC_XOR=m -CONFIG_CRYPTO=y -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ABLKCIPHER=m -CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_NULL=m -CONFIG_CRYPTO_MD4=m -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_SHA1=m -CONFIG_CRYPTO_SHA256=m -CONFIG_CRYPTO_SHA512=m -CONFIG_CRYPTO_WP512=m -CONFIG_CRYPTO_TGR192=m -CONFIG_CRYPTO_GF128MUL=m -CONFIG_CRYPTO_ECB=m -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_PCBC=m -CONFIG_CRYPTO_LRW=m -CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_FCRYPT=m -CONFIG_CRYPTO_BLOWFISH=m -CONFIG_CRYPTO_TWOFISH=m -CONFIG_CRYPTO_TWOFISH_COMMON=m -CONFIG_CRYPTO_TWOFISH_586=m -CONFIG_CRYPTO_SERPENT=m -CONFIG_CRYPTO_AES=m -CONFIG_CRYPTO_AES_586=m -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_CAST6=m -CONFIG_CRYPTO_TEA=m -CONFIG_CRYPTO_ARC4=m -CONFIG_CRYPTO_KHAZAD=m -CONFIG_CRYPTO_ANUBIS=m -CONFIG_CRYPTO_DEFLATE=m -CONFIG_CRYPTO_MICHAEL_MIC=m -CONFIG_CRYPTO_CRC32C=m -CONFIG_CRYPTO_CAMELLIA=m -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_DEV_PADLOCK=m -CONFIG_CRYPTO_DEV_PADLOCK_AES=m -CONFIG_CRYPTO_DEV_PADLOCK_SHA=m -CONFIG_CRYPTO_DEV_GEODE=m - -# -# Library routines -# -CONFIG_BITREVERSE=y -CONFIG_CRC_CCITT=m -CONFIG_CRC16=m -CONFIG_CRC_ITU_T=m -CONFIG_CRC32=y -CONFIG_CRC7=m -CONFIG_LIBCRC32C=m -CONFIG_AUDIT_GENERIC=y -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=m -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_REED_SOLOMON=m -CONFIG_REED_SOLOMON_DEC16=y -CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m -CONFIG_PLIST=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -CONFIG_HAS_DMA=y -CONFIG_CHECK_SIGNATURE=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_PENDING_IRQ=y -CONFIG_X86_SMP=y -CONFIG_X86_HT=y -CONFIG_X86_BIOS_REBOOT=y -CONFIG_X86_TRAMPOLINE=y -CONFIG_KTIME_SCALAR=y From be5770f6d51c4d4ed62b54ac9e56ce37a0c463b7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 00:54:42 +0000 Subject: [PATCH 067/320] Option for perlBindings in subversion svn path=/nixpkgs/branches/stdenv-updates/; revision=9873 --- pkgs/top-level/all-packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 207965a6217..9ad5f88ab4b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3947,6 +3947,7 @@ rec { inherit fetchurl stdenv apr aprutil neon expat swig zlib; bdbSupport = true; httpServer = false; + perlBindings = getConfig ["subversion" "perlBindings"] false; sslSupport = true; compressionSupport = true; httpd = apacheHttpd; From 183940edd3b717f7ee8cb8ce75dd656f257331f0 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:05:39 +0000 Subject: [PATCH 068/320] Not yet working nfs-utils with dependency svn path=/nixpkgs/branches/stdenv-updates/; revision=9874 --- pkgs/os-specific/linux/nfs-utils/default.nix | 17 ++++++++++ .../os-specific/linux/tcp-wrapper/default.nix | 26 ++++++++++++++++ pkgs/top-level/all-packages.nix | 31 ++++++++++++------- 3 files changed, 62 insertions(+), 12 deletions(-) create mode 100644 pkgs/os-specific/linux/nfs-utils/default.nix create mode 100644 pkgs/os-specific/linux/tcp-wrapper/default.nix diff --git a/pkgs/os-specific/linux/nfs-utils/default.nix b/pkgs/os-specific/linux/nfs-utils/default.nix new file mode 100644 index 00000000000..5240bba5d14 --- /dev/null +++ b/pkgs/os-specific/linux/nfs-utils/default.nix @@ -0,0 +1,17 @@ +args: +args.stdenv.mkDerivation { + name = "nfs-utils-1.1.1"; + + src = args.fetchurl { + url = mirror://sourceforge/nfs/nfs-utils-1.1.1.tar.gz; + sha256 = "0aa434cv7lgbrhks0rzhwxvbk2zsa17kjwxqjrrh87zrv9d2sr1x"; + }; + + buildInputs =(with args; [kernelHeaders tcp_wrapper]); + + meta = { + description = "nfs utils"; + homepage = http://nfs.sourceforge.net/; + license = "GPL2"; + }; +} diff --git a/pkgs/os-specific/linux/tcp-wrapper/default.nix b/pkgs/os-specific/linux/tcp-wrapper/default.nix new file mode 100644 index 00000000000..35c68a6d9a4 --- /dev/null +++ b/pkgs/os-specific/linux/tcp-wrapper/default.nix @@ -0,0 +1,26 @@ +args: +args.stdenv.mkDerivation { + name = "tcp-wrappers-7.6"; + + src = args.fetchurl { + url = http://ftp.debian.org/debian/pool/main/t/tcp-wrappers/tcp-wrappers_7.6.dbs.orig.tar.gz; + sha256 = "0k68ziinx6biwar5lcb9jvv0rp6b3vmj6861n75bvrz4w1piwkdp"; + }; + + # we need to set REAL_DAEMON_DIR somehow. I'm getting compilation errors + # I've managed to compile tcpd manually using + # make CFLAGS='-DSYS_ERRLIST_DEFINED=1 -Dvsyslog=1' tcpd + # see Makefile target all for details + + postUnpack="cd upstream/tarballs; tar xfz *; cd tcp_wrappers_7.6; + sed -i -e 's=#REAL_DAEMON_DIR=/usr/sbin=REAL_DAEMON_DIR=/usr/sbin=' Makefile + "; + + buildPhase=" + make CFLAGS='-DSYS_ERRLIST_DEFINED=1 -Dvsyslog=1' tcpd + " + + buildInputs =(with args; [kernelHeaders gnused]); + + # meta = ... +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9ad5f88ab4b..de5df53468a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1185,24 +1185,22 @@ rec { perl = if !stdenv.isLinux then sysPerl else realPerl; # FIXME: unixODBC needs patching on Darwin (see darwinports) - php = import ../development/interpreters/php { - inherit stdenv fetchurl flex bison libxml2 apacheHttpd; - unixODBC = - if stdenv.isDarwin then null else unixODBC; - }; + #php = import ../development/interpreters/php { + #inherit stdenv fetchurl flex bison libxml2 apacheHttpd; + #unixODBC = + #if stdenv.isDarwin then null else unixODBC; + #}; # FIXME somehow somewhen: We need to recompile php if the ini file changes because the only way to # tell the apache module where to look for this file is using a compile time flag ;-( # perhaps this can be done setting php_value in apache don't have time to investigate any further ? # This expression is a quick hack now. But perhaps it helps you adding the configuration flags you need? - /* - php_unstable = (import ../development/interpreters/php_configurable) { - inherit mkDerivationByConfiguration stdenv; + php = (import ../development/interpreters/php_configurable) { + inherit mkDerivationByConfiguration; lib = lib_unstable; inherit fetchurl flex bison apacheHttpd mysql; # gettext; inherit libxml2; }; - */ python = getVersion "python" python_alts; @@ -2796,9 +2794,11 @@ rec { inherit fetchurl stdenv; }; - #nfsUtils = import ../os-specific/linux/nfs-utils { - # inherit fetchurl stdenv; - #}; + /* + nfsUtils = import ../os-specific/linux/nfs-utils { + inherit fetchurl stdenv kernelHeaders tcp_wrapper; + }; + */ alsaLib = import ../os-specific/linux/alsa/library { inherit fetchurl stdenv; @@ -3158,6 +3158,13 @@ rec { withoutInitTools = true; }; + /* + # needed for nfs utils + tcp_wrapper = import ../os-specific/linux/tcp-wrapper { + inherit fetchurl stdenv kernelHeaders gnused; + }; + */ + udev = import ../os-specific/linux/udev { inherit fetchurl stdenv; }; From d477d95f3138176c2bdf014fe3a0d6d034515085 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:05:50 +0000 Subject: [PATCH 069/320] This is a quote from http://www.johannes-bauer.com/xpdf/xpdf.php, any moral issues can be posted on the mailing list ;) "If you are the proud owner of a proprietary PDF-Creator like "Adobe Acrobat" you probably have noticed that it gives you the option to make the resulting PDF protected in a way that you cannot copy any text from it or that you cannot extract the pictures within. What a nice little feature. Now what this technically does is to set a flag in the PDF telling the reader program "Please don't let the mean user copy any content from me! ". However, the whole process relies on the reader progam (like "Adobe Acrobat Reader" or "xpdf", in our case) to obey the request of the PDF creator. Now at this point, xpdf really pissed me off. Because it really does obey the completely non-sensical request of the PDF creator. Probably because of some legal trouble which Adobe might give them if they did not obey it. But logically there is absolutely no reason to restrict the extraction of text of graphical images from a PDF file. Text I could read and type it in again. Pictures I could photograph off my PC screen. It's completely moronic. It's Adobe. Plus some people at my college think it's protecting their documents well. They seem to believe that content which is made for education should under no circumstances leak to the outside - somebody could maybe learn something! It would be a disaster! It is obvious they're morons. This patch just proves my point." svn path=/nixpkgs/branches/stdenv-updates/; revision=9875 --- pkgs/applications/misc/xpdf/default.nix | 1 + .../misc/xpdf/xpdf-3.02-protection.patch | 74 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch diff --git a/pkgs/applications/misc/xpdf/default.nix b/pkgs/applications/misc/xpdf/default.nix index bdaad1851dd..fc79703d877 100644 --- a/pkgs/applications/misc/xpdf/default.nix +++ b/pkgs/applications/misc/xpdf/default.nix @@ -24,6 +24,7 @@ stdenv.mkDerivation { url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl1.patch; sha256 = "1wxv9l0d2kkwi961ihpdwi75whdvk7cgqxkbfym8cjj11fq17xjq"; }) + ./xpdf-3.02-protection.patch ]; configureFlags = diff --git a/pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch b/pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch new file mode 100644 index 00000000000..598fc6dbd07 --- /dev/null +++ b/pkgs/applications/misc/xpdf/xpdf-3.02-protection.patch @@ -0,0 +1,74 @@ +diff -C 3 -r orig/xpdf/pdfimages.cc xpdf-3.02/xpdf/pdfimages.cc +*** orig/xpdf/pdfimages.cc 2007-02-27 23:05:52.000000000 +0100 +--- xpdf-3.02/xpdf/pdfimages.cc 2007-10-31 20:17:22.601449943 +0100 +*************** +*** 118,130 **** + goto err1; + } + +- // check for copy permission +- if (!doc->okToCopy()) { +- error(-1, "Copying of images from this document is not allowed."); +- exitCode = 3; +- goto err1; +- } +- + // get page range + if (firstPage < 1) + firstPage = 1; +--- 118,123 ---- +diff -C 3 -r orig/xpdf/pdftotext.cc xpdf-3.02/xpdf/pdftotext.cc +*** orig/xpdf/pdftotext.cc 2007-02-27 23:05:52.000000000 +0100 +--- xpdf-3.02/xpdf/pdftotext.cc 2007-10-31 20:17:34.392224196 +0100 +*************** +*** 160,172 **** + goto err2; + } + +- // check for copy permission +- if (!doc->okToCopy()) { +- error(-1, "Copying of text from this document is not allowed."); +- exitCode = 3; +- goto err2; +- } +- + // construct text file name + if (argc == 3) { + textFileName = new GString(argv[2]); +--- 160,165 ---- +diff -C 3 -r orig/xpdf/XPDFCore.cc xpdf-3.02/xpdf/XPDFCore.cc +*** orig/xpdf/XPDFCore.cc 2007-02-27 23:05:52.000000000 +0100 +--- xpdf-3.02/xpdf/XPDFCore.cc 2007-10-31 20:18:05.370494431 +0100 +*************** +*** 384,394 **** + #ifndef NO_TEXT_SELECT + if (selectULX != selectLRX && + selectULY != selectLRY) { +! if (doc->okToCopy()) { +! copySelection(); +! } else { +! error(-1, "Copying of text from this document is not allowed."); +! } + } + #endif + } +--- 384,390 ---- + #ifndef NO_TEXT_SELECT + if (selectULX != selectLRX && + selectULY != selectLRY) { +! copySelection(); + } + #endif + } +*************** +*** 407,415 **** + int pg; + double ulx, uly, lrx, lry; + +- if (!doc->okToCopy()) { +- return; +- } + if (getSelection(&pg, &ulx, &uly, &lrx, &lry)) { + //~ for multithreading: need a mutex here + if (currentSelection) { +--- 403,408 ---- From 637cb977e50fb5774803cee02eac65466a599cdd Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:06:08 +0000 Subject: [PATCH 070/320] ntfs progs added svn path=/nixpkgs/branches/stdenv-updates/; revision=9876 --- pkgs/misc/ntfsprogs/default.nix | 18 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/misc/ntfsprogs/default.nix diff --git a/pkgs/misc/ntfsprogs/default.nix b/pkgs/misc/ntfsprogs/default.nix new file mode 100644 index 00000000000..6e79ea61d89 --- /dev/null +++ b/pkgs/misc/ntfsprogs/default.nix @@ -0,0 +1,18 @@ +args: +args.stdenv.mkDerivation { + name = "ntfsprogs-2.0.0"; + + src = args.fetchurl { + name = "ntfsprogs-2.0.0.tar.bz2"; + url = "http://garr.dl.sourceforge.net/sourceforge/linux-ntfs/ntfsprogs-2.0.0.tar.bz2"; + sha256 = "ad36e19706c7303b10aa0a9bf2c2dd0309b91cd0171f1c9eb361d94a85017432"; + }; + + buildInputs =(with args; []); + + meta = { + description = "ntfs utilities"; + homepage = http://sourceforge.net/projects/linux-ntfs; + license = "GPL"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index de5df53468a..35c6823e41d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4390,6 +4390,10 @@ rec { inherit fetchurl stdenv fuse pkgconfig; }; + ntfprogs = import ../misc/ntfsprogs { + inherit fetchurl stdenv; + }; + pgf = import ../misc/tex/pgf { inherit fetchurl stdenv; }; From a5916ba7da844a7f39964f9c8a797e9206f20fb8 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:06:17 +0000 Subject: [PATCH 071/320] typo (ntfprogs -> ntfsprogs svn path=/nixpkgs/branches/stdenv-updates/; revision=9877 --- 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 35c6823e41d..1ef5b2ad666 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4390,7 +4390,7 @@ rec { inherit fetchurl stdenv fuse pkgconfig; }; - ntfprogs = import ../misc/ntfsprogs { + ntfsprogs = import ../misc/ntfsprogs { inherit fetchurl stdenv; }; From d3884ed14ddcb33f2f1a74edf6a2fffbffbb85d8 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:06:33 +0000 Subject: [PATCH 072/320] Added Firefox 3 beta 1 (Minefield) svn path=/nixpkgs/branches/stdenv-updates/; revision=9878 --- .../networking/browsers/firefox3b1/builder.sh | 30 ++++++++++ .../browsers/firefox3b1/default.nix | 57 +++++++++++++++++++ .../browsers/firefox3b1/writable-copies.patch | 23 ++++++++ .../browsers/firefox3b1/xlibs.patch | 10 ++++ pkgs/top-level/all-packages.nix | 11 ++++ 5 files changed, 131 insertions(+) create mode 100644 pkgs/applications/networking/browsers/firefox3b1/builder.sh create mode 100644 pkgs/applications/networking/browsers/firefox3b1/default.nix create mode 100644 pkgs/applications/networking/browsers/firefox3b1/writable-copies.patch create mode 100644 pkgs/applications/networking/browsers/firefox3b1/xlibs.patch diff --git a/pkgs/applications/networking/browsers/firefox3b1/builder.sh b/pkgs/applications/networking/browsers/firefox3b1/builder.sh new file mode 100644 index 00000000000..66f1059d657 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox3b1/builder.sh @@ -0,0 +1,30 @@ +source $stdenv/setup + +postInstall=postInstall +postInstall() { + + # Strip some more stuff + strip -S $out/lib/*/* || true + + # This fixes starting Firefox when there already is a running + # instance. The `firefox' wrapper script actually expects to be + # in the same directory as `run-mozilla.sh', apparently. + libDir=$(cd $out/lib && ls -d firefox-*) + test -n "$libDir" + cd $out/bin + mv firefox ../lib/$libDir/ + ln -s ../lib/$libDir/firefox . + + # Register extensions etc. + echo "running firefox -register..." + (cd $out/lib/$libDir && LD_LIBRARY_PATH=. ./firefox-bin -register) || false + + echo "running regxpcom..." + (cd $out/lib/$libDir && LD_LIBRARY_PATH=. ./regxpcom) || false + + # Put the Firefox icon in the right place. + ensureDir $out/lib/$libDir/chrome/icons/default + ln -s ../../../icons/default.xpm $out/lib/$libDir/chrome/icons/default/ +} + +genericBuild diff --git a/pkgs/applications/networking/browsers/firefox3b1/default.nix b/pkgs/applications/networking/browsers/firefox3b1/default.nix new file mode 100644 index 00000000000..834376bb160 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox3b1/default.nix @@ -0,0 +1,57 @@ +args: with args; + +stdenv.mkDerivation { + name = "firefox-3b1"; + + src = + fetchurl { + url = ftp://ftp.mozilla.org/pub/firefox/releases/3.0b1/source/firefox-3.0b1-source.tar.bz2; + sha256 = "02mh87aidr33gp33fasq9xx23jqf7lm7yfsb2a36ijnd3bpnssn9"; + }; + + buildInputs = [ + pkgconfig gtk perl zip libIDL libXi libjpeg libpng zlib cairo + python curl coreutils + ]; + + configureFlags = [ + "--enable-application=browser" + "--enable-optimize" + "--disable-debug" + "--enable-xft" + "--disable-freetype2" + "--enable-svg" + "--enable-canvas" + "--enable-strip" + "--enable-default-toolkit=cairo-gtk2" + "--with-system-jpeg" + "--with-system-zlib" + /*"--enable-system-cairo"*/ + ] +; + + postConfigure = " + cp -r . /tmp/ff3b1-build + "; + + postInstall = " + sed -e 's@moz_libdir=.*@&\\nexport PATH=\$PATH:${coreutils}/bin@' -i \$out/bin/firefox + sed -e 's@`/bin/pwd@`${coreutils}/bin/pwd@' -i \$out/bin/firefox + sed -e 's@`/bin/ls@`${coreutils}/bin/ls@' -i \$out/bin/firefox + + strip -S \$out/lib/*/* || true + + libDir=\$(cd \$out/lib && ls -d firefox-[0-9]*) + test -n \"\$libDir\" + + echo \"running firefox -register...\" + (cd \$out/lib/\$libDir && LD_LIBRARY_PATH=. ./firefox-bin -register) || false + "; + + meta = { + description = "Mozilla Firefox - the browser, reloaded"; + }; + + passthru = {inherit gtk;}; +} + diff --git a/pkgs/applications/networking/browsers/firefox3b1/writable-copies.patch b/pkgs/applications/networking/browsers/firefox3b1/writable-copies.patch new file mode 100644 index 00000000000..e3c7752c031 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox3b1/writable-copies.patch @@ -0,0 +1,23 @@ +diff -rc mozilla-orig/xpcom/io/nsLocalFileUnix.cpp mozilla/xpcom/io/nsLocalFileUnix.cpp +*** mozilla-orig/xpcom/io/nsLocalFileUnix.cpp 2004-04-03 01:48:18.000000000 +0200 +--- mozilla/xpcom/io/nsLocalFileUnix.cpp 2004-10-05 19:48:04.000000000 +0200 +*************** +*** 634,639 **** +--- 634,640 ---- + // get the dirs old permissions + if (NS_FAILED(rv = GetPermissions(&oldPerms))) + return rv; ++ oldPerms |= 0200; + if (NS_FAILED(rv = newParent->Create(DIRECTORY_TYPE, oldPerms))) + return rv; + } else { // dir exists lets try to use leaf +*************** +*** 758,763 **** +--- 759,765 ---- + // get the old permissions + PRUint32 myPerms; + GetPermissions(&myPerms); ++ myPerms |= 0200; + + // Create the new file with the old file's permissions, even if write + // permission is missing. We can't create with write permission and diff --git a/pkgs/applications/networking/browsers/firefox3b1/xlibs.patch b/pkgs/applications/networking/browsers/firefox3b1/xlibs.patch new file mode 100644 index 00000000000..a656fbf9beb --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox3b1/xlibs.patch @@ -0,0 +1,10 @@ +--- mozilla/layout/build/Makefile.in.orig 2007-01-13 14:23:19.000000000 -0200 ++++ mozilla/layout/build/Makefile.in 2007-01-13 14:24:55.000000000 -0200 +@@ -282,5 +282,6 @@ LDFLAGS += -Wl,-LD_LAYOUT:lgot_buffer=50 + endif + endif + ++LDFLAGS += -lX11 -lXrender + + export:: $(BUILD_DATE) + \ No newline at end of file diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1ef5b2ad666..71317d25ed4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3544,6 +3544,17 @@ rec { firefoxWrapper = wrapFirefox firefox; + firefox3b1 = lowPrio (import ../applications/networking/browsers/firefox3b1 { + inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo + python curl coreutils; + inherit (gtkLibs) gtk; + inherit (gnome) libIDL; + inherit (xlibs) libXi; + #enableOfficialBranding = true; + }); + + firefox3b1Wrapper = wrapFirefox firefox3b1; + flac = import ../applications/audio/flac { inherit fetchurl stdenv libogg; }; From f0405cf74f6120ec8068429dd5542c3a5016d229 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:06:54 +0000 Subject: [PATCH 073/320] Added fbpanel - desktop panel. svn path=/nixpkgs/branches/stdenv-updates/; revision=9879 --- .../window-managers/fbpanel/4.12.nix | 22 +++++++++++++++++++ .../window-managers/fbpanel/default.nix | 2 ++ pkgs/top-level/all-packages.nix | 8 +++++++ 3 files changed, 32 insertions(+) create mode 100644 pkgs/applications/window-managers/fbpanel/4.12.nix create mode 100644 pkgs/applications/window-managers/fbpanel/default.nix diff --git a/pkgs/applications/window-managers/fbpanel/4.12.nix b/pkgs/applications/window-managers/fbpanel/4.12.nix new file mode 100644 index 00000000000..4e08102af80 --- /dev/null +++ b/pkgs/applications/window-managers/fbpanel/4.12.nix @@ -0,0 +1,22 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://garr.dl.sourceforge.net/sourceforge/fbpanel/fbpanel-4.12.tgz; + sha256 = "0zv0zkq6w4h7dk0ji8bm9cqpj2qxv3ss161mqg9y68shvxvmfrlz"; + }; + + buildInputs = [libX11 gtk pkgconfig libXmu libXpm + libpng libjpeg libtiff librsvg]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "fbpanel"; + builder = writeScript (name + "-builder") + (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Just a desktop panel. +"; + }; +} diff --git a/pkgs/applications/window-managers/fbpanel/default.nix b/pkgs/applications/window-managers/fbpanel/default.nix new file mode 100644 index 00000000000..c8e4bcf9545 --- /dev/null +++ b/pkgs/applications/window-managers/fbpanel/default.nix @@ -0,0 +1,2 @@ +args : +(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 71317d25ed4..ae7af0bf3ab 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3521,6 +3521,14 @@ rec { xftSupport = true; }; + fbpanelFun = lib.sumArgs (import ../applications/window-managers/fbpanel) { + inherit fetchurl stdenv builderDefs pkgconfig libpng libjpeg libtiff librsvg; + inherit (gtkLibs) gtk; + inherit (xlibs) libX11 libXmu libXpm; + }; + + fbpanel = fbpanelFun {version="4.12";} null; + fetchmail = import ../applications/misc/fetchmail { inherit stdenv fetchurl; }; From 356c077ecf267499281d4f8f2daaeb9ea2c4ef7f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:07:13 +0000 Subject: [PATCH 074/320] Added XScreensaver; also changed version-stub.nix (now it does sumArgs itself, and requires builderDefs to be used) and added a merge of composing-builder and declarative flag processing. svn path=/nixpkgs/branches/stdenv-updates/; revision=9880 --- .../graphics/xscreensaver/5.04.nix | 38 +++++++++++++++++++ .../graphics/xscreensaver/default.nix | 9 +++++ pkgs/lib/default.nix | 3 ++ pkgs/top-level/all-packages.nix | 13 +++++++ pkgs/top-level/builder-defs.nix | 28 +++++++++++++- pkgs/top-level/template-composing+config.nix | 22 +++++++++++ pkgs/top-level/version-stub.nix | 9 ++++- 7 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 pkgs/applications/graphics/xscreensaver/5.04.nix create mode 100644 pkgs/applications/graphics/xscreensaver/default.nix create mode 100644 pkgs/top-level/template-composing+config.nix diff --git a/pkgs/applications/graphics/xscreensaver/5.04.nix b/pkgs/applications/graphics/xscreensaver/5.04.nix new file mode 100644 index 00000000000..132bf997e18 --- /dev/null +++ b/pkgs/applications/graphics/xscreensaver/5.04.nix @@ -0,0 +1,38 @@ +args : with args; with builderDefs (args // { + src = /* put a fetchurl here */ + fetchurl { + url = http://www.jwz.org/xscreensaver/xscreensaver-5.04.tar.gz; + sha256 = "1mx6zc6rvb6pr9wb6mv4ljiii9ybw0dshd74aclf7rlmfx4hn86i"; + }; + useConfig = true; + reqsList = [ + ["true" "libX11" "gtk" "pkgconfig" "bc" "perl" "intltool" "libXmu"] + ["GL" "mesa"] + ["GUI" "gtk" "libxml2" "libglade"] + ["jpeg" "libjpeg"] + ["false"] + ]; + configFlags = [ + "GL" " --with-gl " + "gdkpixbuf" " --with-pixbuf " + "DPMS" " --with-dpms " + "true" (" --with-x-app-defaults=\$out/share/xscreensaver/app-defaults "+ + " --with-hackdir=\$out/share/xscreensaver-hacks ") + ]; + }) null; /* null is a terminator for sumArgs */ +let + preConfigure = FullDepEntry (" + sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' "+ + "-i driver/Makefile.in po/Makefile.in.in; + ") [minInit doUnpack]; +in +stdenv.mkDerivation rec { + name = "xscreensaver-"+version; + builder = writeScript (name + "-builder") + (textClosure [preConfigure doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + The X screensaver daemon. Run xscreensaver-demo to configure. +"; + }; +} diff --git a/pkgs/applications/graphics/xscreensaver/default.nix b/pkgs/applications/graphics/xscreensaver/default.nix new file mode 100644 index 00000000000..2fd30577441 --- /dev/null +++ b/pkgs/applications/graphics/xscreensaver/default.nix @@ -0,0 +1,9 @@ +let + realPath=y: (__toPath ((toString ./JustNothing/.. )+"/"+y.version+".nix")); + dispatch=(x: ((import (realPath x)) x)); +in +args : +with args; +with builderDefs {src="";} null; +let eater=(lib.sumArgs dispatch args); in +eater diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 87948ad2f6f..71803a9e335 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -249,4 +249,7 @@ rec { innerModifySumArgs f x (a // b); modifySumArgs = f: x: innerModifySumArgs f x {}; + debugVal = if builtins ? trace then x: (builtins.trace x x) else x: x; + debugXMLVal = if builtins ? trace then x: (builtins.trace (builtins.toXML x) x) else x: x; + } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ae7af0bf3ab..70ff51407e6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4134,6 +4134,19 @@ rec { base14Fonts = "${ghostscript}/share/ghostscript/fonts"; }; + xscreensaverFun = import ../applications/graphics/xscreensaver { + inherit stdenv fetchurl builderDefs lib pkgconfig bc perl intltool; + inherit (xlibs) libX11 libXmu; + }; + + xscreensaver = xscreensaverFun { + version = "5.04"; + flags = ["GL" "gdkpixbuf" "DPMS" "gui" "jpeg"]; + inherit mesa libxml2 libjpeg; + inherit (gtkLibs) gtk; + inherit (gnome) libglade; + } null; + xterm = import ../applications/misc/xterm { inherit fetchurl stdenv ncurses; inherit (xlibs) libXaw xproto libXt libX11 libSM libICE; diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix index ae5224f7101..01940499d61 100644 --- a/pkgs/top-level/builder-defs.nix +++ b/pkgs/top-level/builder-defs.nix @@ -186,7 +186,7 @@ args: with args; with stringsWithDeps; with lib; ) [minInit]; doConfigure = FullDepEntry (" - ./configure --prefix=\"\$prefix\" ${toString (getAttr ["configureFlags"] "" args)} + ./configure --prefix=\"\$prefix\" ${toString configureFlags} ") [minInit addInputs doUnpack]; doAutotools = FullDepEntry (" @@ -200,7 +200,7 @@ args: with args; with stringsWithDeps; with lib; ")[minInit addInputs doUnpack]; doMake = FullDepEntry (" - make ${toString (getAttr ["makeFlags"] "" args)} + make ${toString makeFlags} ") [minInit addInputs doUnpack]; doUnpack = toSrcDir (toString src); @@ -269,4 +269,28 @@ args: with args; with stringsWithDeps; with lib; textClosure = textClosureMap makeNest; inherit noDepEntry FullDepEntry PackEntry; + + defList = (getAttr ["defList"] [] args); + getVal = getValue args defList; + check = checkFlag args; + reqsList = getAttr ["reqsList"] [] args; + buildInputsNames = filter (x: (null != getVal x)) + (uniqList {inputList = + (concatLists (map + (x:(if (x==[]) then [] else builtins.tail x)) + reqsList));}); + configFlags = getAttr ["configFlags"] [] args; + buildFlags = getAttr ["buildFlags"] [] args; + nameSuffixes = getAttr ["nameSuffixes"] [] args; + autoBuildInputs = assert (checkReqs args defList reqsList); + filter (x: x!=null) (map getVal buildInputsNames); + autoConfigureFlags = condConcat "" configFlags check; + autoMakeFlags = condConcat "" buildFlags check; + useConfig = getAttr ["useConfig"] false args; + buildInputs = if useConfig then autoBuildInputs else getAttr ["buildInputs"] [] args; + configureFlags = if useConfig then autoConfigureFlags else + getAttr ["configureFlags"] "" args; + makeFlags = if useConfig then autoMakeFlags else getAttr ["makeFlags"] "" args; + + inherit lib; }) // args diff --git a/pkgs/top-level/template-composing+config.nix b/pkgs/top-level/template-composing+config.nix new file mode 100644 index 00000000000..df751f693f2 --- /dev/null +++ b/pkgs/top-level/template-composing+config.nix @@ -0,0 +1,22 @@ +args : with args; with builderDefs (args // { + src = /* put a fetchurl here */ + (abort "Specify source"); + useConfig = true; + reqsList = [ + ["true" ] + ["false"] + ]; + /* List consisiting of an even number of strings; "key" "value" */ + configFlags = [ + ]; + }) null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "${(abort "Specify name")}"+version; + builder = writeScript (name + "-builder") + (textClosure [(abort "Check phases") doMakeInstall doForceShare doPropagate]); + meta = { + description = " + ${(abort "Specify description")} +"; + }; +} diff --git a/pkgs/top-level/version-stub.nix b/pkgs/top-level/version-stub.nix index c8e4bcf9545..2fd30577441 100644 --- a/pkgs/top-level/version-stub.nix +++ b/pkgs/top-level/version-stub.nix @@ -1,2 +1,9 @@ +let + realPath=y: (__toPath ((toString ./JustNothing/.. )+"/"+y.version+".nix")); + dispatch=(x: ((import (realPath x)) x)); +in args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args +with args; +with builderDefs {src="";} null; +let eater=(lib.sumArgs dispatch args); in +eater From 0e7e524cf30b663aa84ba72e461baa9031daa9eb Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:07:25 +0000 Subject: [PATCH 075/320] * Work around an impurity in APR: don't detect the epoll() system call, because then an Apache built on a 2.6 kernel won't work on 2.4 kernel. In fact Apache will get into a loop segfaulting. svn path=/nixpkgs/branches/stdenv-updates/; revision=9881 --- pkgs/servers/http/apache-httpd/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/servers/http/apache-httpd/default.nix b/pkgs/servers/http/apache-httpd/default.nix index 2f33b4d497f..92a442728d8 100644 --- a/pkgs/servers/http/apache-httpd/default.nix +++ b/pkgs/servers/http/apache-httpd/default.nix @@ -21,6 +21,13 @@ stdenv.mkDerivation { openssl = if sslSupport then openssl else null; db4 = if db4Support then db4 else null; + # For now, disable detection of epoll to ensure that Apache still + # runs on Linux 2.4 kernels. Once we've dropped support for 2.4 in + # Nixpkgs, this can go. In general, it's a problem that APR + # detects characteristics of the build system's kernel to decide + # what to use at runtime, since it's impure. + apr_cv_epoll = "no"; + meta = { description = "Apache HTTPD, the world's most popular web server"; }; From f1f5b31c0c0a30fb496a09b9d1b78e1773ad4a99 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:07:38 +0000 Subject: [PATCH 076/320] * Enable GD support in Nagios. svn path=/nixpkgs/branches/stdenv-updates/; revision=9882 --- pkgs/servers/monitoring/nagios/default.nix | 6 ++++-- pkgs/top-level/all-packages.nix | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/monitoring/nagios/default.nix b/pkgs/servers/monitoring/nagios/default.nix index 8a24e9dfaa4..dba063bb106 100644 --- a/pkgs/servers/monitoring/nagios/default.nix +++ b/pkgs/servers/monitoring/nagios/default.nix @@ -1,4 +1,6 @@ -{ stdenv, fetchurl, perl }: +{ stdenv, fetchurl, perl, gdSupport ? false +, gd ? null, libpng ? null, zlib ? null +}: stdenv.mkDerivation { name = "nagios-2.10"; @@ -9,7 +11,7 @@ stdenv.mkDerivation { }; patches = [./nagios.patch]; - buildInputs = [perl]; + buildInputs = [perl] ++ (if gdSupport then [gd libpng zlib] else []); buildFlags = "all"; installTargets = "install install-config"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 70ff51407e6..e7c1421af95 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2746,7 +2746,8 @@ rec { }; nagios = import ../servers/monitoring/nagios { - inherit fetchurl stdenv perl; + inherit fetchurl stdenv perl gd libpng zlib; + gdSupport = true; }; nagiosPluginsOfficial = import ../servers/monitoring/nagios/plugins/official { From d1cc8aafd0cad1369ae114d8c8678a972bb3ee70 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:08:12 +0000 Subject: [PATCH 077/320] * Nix 0.10 compatibility. svn path=/nixpkgs/branches/stdenv-updates/; revision=9883 --- pkgs/development/compilers/ghcs/default.nix | 6 ++--- pkgs/top-level/all-packages.nix | 30 ++++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/pkgs/development/compilers/ghcs/default.nix b/pkgs/development/compilers/ghcs/default.nix index c3a46968880..c026a860d40 100644 --- a/pkgs/development/compilers/ghcs/default.nix +++ b/pkgs/development/compilers/ghcs/default.nix @@ -43,14 +43,14 @@ # used to automatically get dependencies ( used for core_libs ) # TODO use kind of state and evaluate deps of a dep only once resolveDeps = ghc : libs : - let attrs = __listToAttrs libs; in + let attrs = builtins.listToAttrs libs; in rec { # using undocumented feature that attribute can contain hyphens when using listToAttrs # You should be able to get the attribute values using __getAttr - result = __listToAttrs (map ( l : lib.av l.name ( + result = builtins.listToAttrs (map ( l : lib.av l.name ( packageByPackageDB ghc l.name ("lib/ghc-${ghc.version}/${l.name}.conf") - (map (n: __getAttr n result) l.deps) + (map (n: builtins.getAttr n result) l.deps) ) ) libs ); }.result; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e7c1421af95..37ba6cb3a5c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -196,10 +196,13 @@ rec { meta = (if drv ? meta then drv.meta else {}) // {priority = "10";}; }; - mkDerivationByConfiguration = { flagConfig ? {}, optionals ? [], defaults ? [], - extraAttrs, collectExtraPhaseActions ? []} : + mkDerivationByConfiguration = + assert builtins ? isAttrs; + { flagConfig ? {}, optionals ? [], defaults ? [] + , extraAttrs, collectExtraPhaseActions ? [] + }: args: with args.lib; with args; - if ( __isAttrs extraAttrs ) then builtins.throw "the argument extraAttrs needs to be a function beeing passed co, but attribute set passed " + if ( builtins.isAttrs extraAttrs ) then builtins.throw "the argument extraAttrs needs to be a function beeing passed co, but attribute set passed " else let co = chooseOptionsByFlags { inherit args flagConfig optionals defaults collectExtraPhaseActions; }; in args.stdenv.mkDerivation ( @@ -938,11 +941,13 @@ rec { { ghcPkgUtil = ../development/libraries/haskell/generic/ghcPkgUtil.sh; } "mkdir -p $out/nix-support; cp $ghcPkgUtil \$out/nix-support/setup-hook;"; - ghcsAndLibs = recurseIntoAttrs (import ../development/compilers/ghcs { - inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline stdenv; + ghcsAndLibs = + assert builtins ? listToAttrs; + recurseIntoAttrs (import ../development/compilers/ghcs { + inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline; inherit ghcPkgUtil; lib = lib_unstable; - }); + }); # creates ghc-X-wl wich adds the passed libraries to the env var GHC_PACKAGE_PATH createGhcWrapper = { ghcPackagedLibs ? false, ghc, libraries, name, suffix ? "ghc_wrapper_${ghc.name}" } : @@ -1185,11 +1190,11 @@ rec { perl = if !stdenv.isLinux then sysPerl else realPerl; # FIXME: unixODBC needs patching on Darwin (see darwinports) - #php = import ../development/interpreters/php { - #inherit stdenv fetchurl flex bison libxml2 apacheHttpd; - #unixODBC = - #if stdenv.isDarwin then null else unixODBC; - #}; + phpOld = import ../development/interpreters/php { + inherit stdenv fetchurl flex bison libxml2 apacheHttpd; + unixODBC = + if stdenv.isDarwin then null else unixODBC; + }; # FIXME somehow somewhen: We need to recompile php if the ini file changes because the only way to # tell the apache module where to look for this file is using a compile time flag ;-( @@ -1198,7 +1203,8 @@ rec { php = (import ../development/interpreters/php_configurable) { inherit mkDerivationByConfiguration; lib = lib_unstable; - inherit fetchurl flex bison apacheHttpd mysql; # gettext; + inherit fetchurl flex bison apacheHttpd; # gettext; + mysql = mysql5; inherit libxml2; }; From 7aea2477a178ca64e7d52092ee6383286b16ade4 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:08:29 +0000 Subject: [PATCH 078/320] Added possibility to make suffixed wrapped firefoxes. Yes, to have beta&release at once. svn path=/nixpkgs/branches/stdenv-updates/; revision=9884 --- .../networking/browsers/firefox-wrapper/builder.sh | 2 +- .../networking/browsers/firefox-wrapper/default.nix | 4 +++- pkgs/top-level/all-packages.nix | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh b/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh index 6abbf1a760b..4e2f1c5e8f1 100644 --- a/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh +++ b/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh @@ -1,7 +1,7 @@ source $stdenv/setup source $makeWrapper -makeWrapper "$firefox/bin/firefox" "$out/bin/firefox" \ +makeWrapper "$firefox/bin/firefox" "$out/bin/firefox$nameSuffix" \ --suffix-each MOZ_PLUGIN_PATH ':' "$plugins" \ --suffix-contents LD_LIBRARY_PATH ':' "$(filterExisting $(addSuffix /extra-library-path $plugins))" \ --suffix-contents PATH ':' "$(filterExisting $(addSuffix /extra-bin-path $plugins))" diff --git a/pkgs/applications/networking/browsers/firefox-wrapper/default.nix b/pkgs/applications/networking/browsers/firefox-wrapper/default.nix index 7229f510829..0b1756f21f2 100644 --- a/pkgs/applications/networking/browsers/firefox-wrapper/default.nix +++ b/pkgs/applications/networking/browsers/firefox-wrapper/default.nix @@ -1,4 +1,4 @@ -{stdenv, firefox, plugins}: +args: with args; stdenv.mkDerivation { name = firefox.name + "-with-plugins"; @@ -8,6 +8,8 @@ stdenv.mkDerivation { inherit firefox; + nameSuffix = (if args ? nameSuffix then args.nameSuffix else ""); + # Let each plugin tell us (through its `mozillaPlugin') attribute # where to find the plugin in its tree. plugins = map (x: x + x.mozillaPlugin) plugins; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 37ba6cb3a5c..e060e0973b6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3557,7 +3557,7 @@ rec { #enableOfficialBranding = true; }); - firefoxWrapper = wrapFirefox firefox; + firefoxWrapper = wrapFirefox firefox ""; firefox3b1 = lowPrio (import ../applications/networking/browsers/firefox3b1 { inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo @@ -3568,7 +3568,7 @@ rec { #enableOfficialBranding = true; }); - firefox3b1Wrapper = wrapFirefox firefox3b1; + firefox3b1Wrapper = wrapFirefox firefox3b1 ""; flac = import ../applications/audio/flac { inherit fetchurl stdenv libogg; @@ -4088,8 +4088,8 @@ rec { includeUnpack = getConfig ["stdenv" "includeUnpack"] false; }; - wrapFirefox = firefox: import ../applications/networking/browsers/firefox-wrapper { - inherit stdenv firefox; + wrapFirefox = firefox: nameSuffix: import ../applications/networking/browsers/firefox-wrapper { + inherit stdenv firefox nameSuffix; plugins = [] ++ lib.optional (system == "i686-linux") flashplayer # RealPlayer is disabled by default for legal reasons. From ec6a614c1ec8639baf7987788315b6acd6c9a9c5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:08:37 +0000 Subject: [PATCH 079/320] Added indent svn path=/nixpkgs/branches/stdenv-updates/; revision=9885 --- pkgs/development/tools/misc/indent/2.2.9.nix | 28 +++++++++++++++++++ .../development/tools/misc/indent/default.nix | 9 ++++++ pkgs/top-level/all-packages.nix | 8 ++++++ 3 files changed, 45 insertions(+) create mode 100644 pkgs/development/tools/misc/indent/2.2.9.nix create mode 100644 pkgs/development/tools/misc/indent/default.nix diff --git a/pkgs/development/tools/misc/indent/2.2.9.nix b/pkgs/development/tools/misc/indent/2.2.9.nix new file mode 100644 index 00000000000..d7e91abcf83 --- /dev/null +++ b/pkgs/development/tools/misc/indent/2.2.9.nix @@ -0,0 +1,28 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = ftp://ftp.gnu.org/gnu/indent/indent-2.2.9.tar.gz; + sha256 = "0rp4divzv5xyflm8ixpp2isa092n0nmhgmhvz56db7k3lnyqg4qb"; + }; + + buildInputs = []; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +let + preBuild = FullDepEntry (" + sed -e '/extern FILE [*]output/i#ifndef OUTPUT_DEFINED_ELSEWHERE' -i src/indent.h + sed -e '/extern FILE [*]output/a#endif' -i src/indent.h + sed -e '1i#define OUTPUT_DEFINED_ELSEWHERE 1' -i src/output.c + ") [minInit doUnpack]; +in +stdenv.mkDerivation rec { + name = "indent"; + builder = writeScript (name + "-builder") + (textClosure [doConfigure preBuild doMakeInstall doForceShare doPropagate]); + meta = { + description = " + GNU Indent - a source text formatter. +"; + }; +} diff --git a/pkgs/development/tools/misc/indent/default.nix b/pkgs/development/tools/misc/indent/default.nix new file mode 100644 index 00000000000..2fd30577441 --- /dev/null +++ b/pkgs/development/tools/misc/indent/default.nix @@ -0,0 +1,9 @@ +let + realPath=y: (__toPath ((toString ./JustNothing/.. )+"/"+y.version+".nix")); + dispatch=(x: ((import (realPath x)) x)); +in +args : +with args; +with builderDefs {src="";} null; +let eater=(lib.sumArgs dispatch args); in +eater diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e060e0973b6..24efa75a540 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1406,6 +1406,14 @@ rec { inherit fetchurl stdenv perl perlXMLSimple; }; + indentFun = import ../development/tools/misc/indent { + inherit fetchurl stdenv builderDefs; + }; + + indent = indentFun { + version = "2.2.9"; + } null; + jikespg = import ../development/tools/parsing/jikespg { inherit fetchurl stdenv; }; From 3896cd4a28fab5dfa790d139e2a1616fae3741b3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:09:00 +0000 Subject: [PATCH 080/320] * Get rid of the `(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix")))' hack, you can also just write `import (./path/to/pkg + "/${version}.nix)'. svn path=/nixpkgs/branches/stdenv-updates/; revision=9886 --- pkgs/applications/graphics/gocr/default.nix | 2 - .../graphics/xscreensaver/default.nix | 9 -- .../compiz-fusion/bcop/default.nix | 2 - .../compiz-fusion/ccsm/default.nix | 2 - .../compiz-fusion/compiz-manager/default.nix | 2 - .../compizconfig-python/default.nix | 2 - .../compiz-fusion/config-backend/default.nix | 2 - .../window-managers/compiz-fusion/default.nix | 17 ++-- .../compiz-fusion/extra/default.nix | 2 - .../compiz-fusion/libcompizconfig/default.nix | 2 - .../compiz-fusion/main/default.nix | 2 - .../window-managers/compiz/default.nix | 2 - .../window-managers/fbpanel/default.nix | 2 - pkgs/development/compilers/qi/default.nix | 2 - .../interpreters/pyrex/default.nix | 2 - .../development/tools/misc/indent/default.nix | 9 -- .../tools/misc/intltool/default.nix | 2 - pkgs/top-level/all-packages.nix | 85 +++++++++---------- pkgs/top-level/version-stub.nix | 9 -- 19 files changed, 50 insertions(+), 107 deletions(-) delete mode 100644 pkgs/applications/graphics/gocr/default.nix delete mode 100644 pkgs/applications/graphics/xscreensaver/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/bcop/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/ccsm/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/compiz-manager/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/compizconfig-python/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/config-backend/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/extra/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/libcompizconfig/default.nix delete mode 100644 pkgs/applications/window-managers/compiz-fusion/main/default.nix delete mode 100644 pkgs/applications/window-managers/compiz/default.nix delete mode 100644 pkgs/applications/window-managers/fbpanel/default.nix delete mode 100644 pkgs/development/compilers/qi/default.nix delete mode 100644 pkgs/development/interpreters/pyrex/default.nix delete mode 100644 pkgs/development/tools/misc/indent/default.nix delete mode 100644 pkgs/development/tools/misc/intltool/default.nix delete mode 100644 pkgs/top-level/version-stub.nix diff --git a/pkgs/applications/graphics/gocr/default.nix b/pkgs/applications/graphics/gocr/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/graphics/gocr/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/graphics/xscreensaver/default.nix b/pkgs/applications/graphics/xscreensaver/default.nix deleted file mode 100644 index 2fd30577441..00000000000 --- a/pkgs/applications/graphics/xscreensaver/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -let - realPath=y: (__toPath ((toString ./JustNothing/.. )+"/"+y.version+".nix")); - dispatch=(x: ((import (realPath x)) x)); -in -args : -with args; -with builderDefs {src="";} null; -let eater=(lib.sumArgs dispatch args); in -eater diff --git a/pkgs/applications/window-managers/compiz-fusion/bcop/default.nix b/pkgs/applications/window-managers/compiz-fusion/bcop/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/bcop/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz-fusion/ccsm/default.nix b/pkgs/applications/window-managers/compiz-fusion/ccsm/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/ccsm/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz-fusion/compiz-manager/default.nix b/pkgs/applications/window-managers/compiz-fusion/compiz-manager/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/compiz-manager/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz-fusion/compizconfig-python/default.nix b/pkgs/applications/window-managers/compiz-fusion/compizconfig-python/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/compizconfig-python/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz-fusion/config-backend/default.nix b/pkgs/applications/window-managers/compiz-fusion/config-backend/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/config-backend/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz-fusion/default.nix b/pkgs/applications/window-managers/compiz-fusion/default.nix index 156d3d281d7..589b77d0f23 100644 --- a/pkgs/applications/window-managers/compiz-fusion/default.nix +++ b/pkgs/applications/window-managers/compiz-fusion/default.nix @@ -1,13 +1,14 @@ args : with args; rec { - bcop = import ./bcop args; - libcompizconfig = import ./libcompizconfig (args // {inherit bcop;}); - configBackendGConf = import ./config-backend (args // {inherit bcop libcompizconfig;}); - compizConfigPython = import ./compizconfig-python (args // {inherit libcompizconfig + selectVersion = dir: import (dir + "/${args.version}.nix"); + bcop = selectVersion ./bcop args; + libcompizconfig = selectVersion ./libcompizconfig (args // {inherit bcop;}); + configBackendGConf = selectVersion ./config-backend (args // {inherit bcop libcompizconfig;}); + compizConfigPython = selectVersion ./compizconfig-python (args // {inherit libcompizconfig bcop pyrex configBackendGConf;}); - ccsm = import ./ccsm (args // {inherit libcompizconfig bcop compizConfigPython configBackendGConf;}); - pluginsMain = import ./main (args //{inherit bcop ;}); - pluginsExtra = import ./extra (args //{inherit bcop pluginsMain;}); - compizManager = import ./compiz-manager (args // {inherit bcop ccsm;}); + ccsm = selectVersion ./ccsm (args // {inherit libcompizconfig bcop compizConfigPython configBackendGConf;}); + pluginsMain = selectVersion ./main (args //{inherit bcop ;}); + pluginsExtra = selectVersion ./extra (args //{inherit bcop pluginsMain;}); + compizManager = selectVersion ./compiz-manager (args // {inherit bcop ccsm;}); } diff --git a/pkgs/applications/window-managers/compiz-fusion/extra/default.nix b/pkgs/applications/window-managers/compiz-fusion/extra/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/extra/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz-fusion/libcompizconfig/default.nix b/pkgs/applications/window-managers/compiz-fusion/libcompizconfig/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/libcompizconfig/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz-fusion/main/default.nix b/pkgs/applications/window-managers/compiz-fusion/main/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz-fusion/main/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/compiz/default.nix b/pkgs/applications/window-managers/compiz/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/compiz/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/applications/window-managers/fbpanel/default.nix b/pkgs/applications/window-managers/fbpanel/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/applications/window-managers/fbpanel/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/development/compilers/qi/default.nix b/pkgs/development/compilers/qi/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/development/compilers/qi/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/development/interpreters/pyrex/default.nix b/pkgs/development/interpreters/pyrex/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/development/interpreters/pyrex/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/development/tools/misc/indent/default.nix b/pkgs/development/tools/misc/indent/default.nix deleted file mode 100644 index 2fd30577441..00000000000 --- a/pkgs/development/tools/misc/indent/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -let - realPath=y: (__toPath ((toString ./JustNothing/.. )+"/"+y.version+".nix")); - dispatch=(x: ((import (realPath x)) x)); -in -args : -with args; -with builderDefs {src="";} null; -let eater=(lib.sumArgs dispatch args); in -eater diff --git a/pkgs/development/tools/misc/intltool/default.nix b/pkgs/development/tools/misc/intltool/default.nix deleted file mode 100644 index c8e4bcf9545..00000000000 --- a/pkgs/development/tools/misc/intltool/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -args : -(import (__toPath ((toString ./JustNothing/.. )+"/"+args.version+".nix"))) args diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 24efa75a540..7b73f3fbaba 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -228,6 +228,12 @@ rec { inherit stdenv lib; }; + # Call a specific version of a Nix expression, that is, + # `selectVersion ./foo {version = "0.1.2"; args...}' evaluates to + # `import ./foo/0.1.2.nix args'. + selectVersion = dir: args: import (dir + "/${args.version}.nix") args; + + ### STANDARD ENVIRONMENT @@ -1214,16 +1220,14 @@ rec { inherit fetchurl stdenv zlib bzip2; }; - pyrexFun = lib.sumArgs (import ../development/interpreters/pyrex) { - inherit fetchurl stdenv stringsWithDeps lib builderDefs; + pyrexFun = lib.sumArgs (selectVersion ../development/interpreters/pyrex) { + inherit fetchurl stdenv stringsWithDeps lib builderDefs; python = builtins.getAttr "2.5" python_alts; }; - pyrex = pyrexFun { - version = "0.9.6"; - } null; + pyrex = pyrexFun {version = "0.9.6";} null; - QiFun = lib.sumArgs (import ../development/compilers/qi) { + QiFun = lib.sumArgs (selectVersion ../development/compilers/qi) { inherit clisp stdenv fetchurl builderDefs unzip; }; @@ -1406,7 +1410,7 @@ rec { inherit fetchurl stdenv perl perlXMLSimple; }; - indentFun = import ../development/tools/misc/indent { + indentFun = lib.sumArgs (selectVersion ../development/tools/misc/indent) { inherit fetchurl stdenv builderDefs; }; @@ -1890,9 +1894,9 @@ rec { inherit fetchurl stdenv x11 libjpeg libtiff libungif libpng bzip2; }; - intltoolFun = lib.sumArgs (import ../development/tools/misc/intltool) { - inherit fetchurl stdenv lib builderDefs stringsWithDeps - perl perlXMLParser; + intltoolFun = lib.sumArgs (selectVersion ../development/tools/misc/intltool) { + inherit fetchurl stdenv lib builderDefs stringsWithDeps + perl perlXMLParser; }; intltool = intltoolFun {version = "0.36.2";} null; @@ -3390,10 +3394,9 @@ rec { libXinerama libICE libSM libXrender xextproto; inherit (gnome) startupnotification libwnck GConf; inherit (gtkLibs) gtk; - inherit (gnome) libgnome libgnomeui metacity - glib pango libglade libgtkhtml gtkhtml - libgnomecanvas libgnomeprint - libgnomeprintui gnomepanel; + inherit (gnome) libgnome libgnomeui metacity glib pango + libglade libgtkhtml gtkhtml libgnomecanvas libgnomeprint + libgnomeprintui gnomepanel; gnomegtk = gnome.gtk; inherit librsvg fuse; }; @@ -3402,17 +3405,17 @@ rec { version = "0.6.2"; }; - compizFun = lib.sumArgs (assert mesaSupported; import ../applications/window-managers/compiz) { - inherit lib builderDefs stringsWithDeps; + compizFun = lib.sumArgs (assert mesaSupported; selectVersion ../applications/window-managers/compiz) { + inherit lib builderDefs stringsWithDeps; inherit fetchurl stdenv pkgconfig libpng mesa perl perlXMLParser libxslt; inherit (xorg) libXcomposite libXfixes libXdamage libXrandr libXinerama libICE libSM libXrender xextproto; inherit (gnome) startupnotification libwnck GConf; inherit (gtkLibs) gtk; inherit (gnome) libgnome libgnomeui metacity - glib pango libglade libgtkhtml gtkhtml - libgnomecanvas libgnomeprint - libgnomeprintui gnomepanel; + glib pango libglade libgtkhtml gtkhtml + libgnomecanvas libgnomeprint + libgnomeprintui gnomepanel; gnomegtk = gnome.gtk; inherit librsvg fuse; inherit dbus dbus_glib; @@ -3424,27 +3427,23 @@ rec { } null; compizFusion = assert mesaSupported; import ../applications/window-managers/compiz-fusion { - - version = getConfig ["compizFusion" "version"] "0.6.0" ; - inherit compiz; - - inherit stringsWithDeps lib builderDefs; - + version = getConfig ["compizFusion" "version"] "0.6.0"; + inherit compiz; + inherit stringsWithDeps lib builderDefs; inherit fetchurl stdenv pkgconfig libpng mesa perl perlXMLParser libxslt; inherit (xorg) libXcomposite libXfixes libXdamage libXrandr libXinerama libICE libSM libXrender xextproto; inherit (gnome) startupnotification libwnck GConf; inherit (gtkLibs) gtk; inherit (gnome) libgnome libgnomeui metacity - glib pango libglade libgtkhtml gtkhtml - libgnomecanvas libgnomeprint - libgnomeprintui gnomepanel gnomedesktop; + glib pango libglade libgtkhtml gtkhtml + libgnomecanvas libgnomeprint + libgnomeprintui gnomepanel gnomedesktop; gnomegtk = gnome.gtk; inherit librsvg fuse dbus dbus_glib git; - - inherit automake autoconf libtool intltool python pyrex gettext; - inherit pygtk pycairo getopt libjpeg glxinfo; - inherit (xorg) xvinfo xdpyinfo; + inherit automake autoconf libtool intltool python pyrex gettext; + inherit pygtk pycairo getopt libjpeg glxinfo; + inherit (xorg) xvinfo xdpyinfo; }; compizExtra = import ../applications/window-managers/compiz/extra.nix { @@ -3536,7 +3535,7 @@ rec { xftSupport = true; }; - fbpanelFun = lib.sumArgs (import ../applications/window-managers/fbpanel) { + fbpanelFun = lib.sumArgs (selectVersion ../applications/window-managers/fbpanel) { inherit fetchurl stdenv builderDefs pkgconfig libpng libjpeg libtiff librsvg; inherit (gtkLibs) gtk; inherit (xlibs) libX11 libXmu libXpm; @@ -3638,13 +3637,11 @@ rec { inherit (xlibs) libX11 libXext libXi libXmu; }; - gocrFun = lib.sumArgs (import ../applications/graphics/gocr) { - inherit builderDefs fetchurl stdenv; + gocrFun = lib.sumArgs (selectVersion ../applications/graphics/gocr) { + inherit builderDefs fetchurl stdenv; }; - gocr = gocrFun { - version = "0.44"; - } null; + gocr = gocrFun {version = "0.44";} null; gphoto2 = import ../applications/misc/gphoto2 { inherit fetchurl stdenv pkgconfig libgphoto2 libexif popt readline gettext; @@ -4149,17 +4146,17 @@ rec { base14Fonts = "${ghostscript}/share/ghostscript/fonts"; }; - xscreensaverFun = import ../applications/graphics/xscreensaver { + xscreensaverFun = lib.sumArgs (selectVersion ../applications/graphics/xscreensaver) { inherit stdenv fetchurl builderDefs lib pkgconfig bc perl intltool; inherit (xlibs) libX11 libXmu; }; xscreensaver = xscreensaverFun { - version = "5.04"; - flags = ["GL" "gdkpixbuf" "DPMS" "gui" "jpeg"]; - inherit mesa libxml2 libjpeg; - inherit (gtkLibs) gtk; - inherit (gnome) libglade; + version = "5.04"; + flags = ["GL" "gdkpixbuf" "DPMS" "gui" "jpeg"]; + inherit mesa libxml2 libjpeg; + inherit (gtkLibs) gtk; + inherit (gnome) libglade; } null; xterm = import ../applications/misc/xterm { diff --git a/pkgs/top-level/version-stub.nix b/pkgs/top-level/version-stub.nix deleted file mode 100644 index 2fd30577441..00000000000 --- a/pkgs/top-level/version-stub.nix +++ /dev/null @@ -1,9 +0,0 @@ -let - realPath=y: (__toPath ((toString ./JustNothing/.. )+"/"+y.version+".nix")); - dispatch=(x: ((import (realPath x)) x)); -in -args : -with args; -with builderDefs {src="";} null; -let eater=(lib.sumArgs dispatch args); in -eater From 4dd6b835b17412c4aa441b03f676f92e97576f81 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:09:17 +0000 Subject: [PATCH 081/320] * Thunderbird 2.0.0.9. * Removed Thunderbird 1.5. svn path=/nixpkgs/branches/stdenv-updates/; revision=9887 --- .../mailreaders/thunderbird-1.x/builder.sh | 30 ------------ .../mailreaders/thunderbird-1.x/default.nix | 47 ------------------- .../mailreaders/thunderbird-2.x/default.nix | 6 +-- pkgs/top-level/all-packages.nix | 12 +---- 4 files changed, 4 insertions(+), 91 deletions(-) delete mode 100644 pkgs/applications/networking/mailreaders/thunderbird-1.x/builder.sh delete mode 100644 pkgs/applications/networking/mailreaders/thunderbird-1.x/default.nix diff --git a/pkgs/applications/networking/mailreaders/thunderbird-1.x/builder.sh b/pkgs/applications/networking/mailreaders/thunderbird-1.x/builder.sh deleted file mode 100644 index 7635910ae9f..00000000000 --- a/pkgs/applications/networking/mailreaders/thunderbird-1.x/builder.sh +++ /dev/null @@ -1,30 +0,0 @@ -source $stdenv/setup - -postInstall=postInstall -postInstall() { - - # Strip some more stuff - strip -S $out/lib/*/* || true - - # This fixes starting Thunderbird when there already is a running - # instance. The `thunderbird' wrapper script actually expects to - # be in the same directory as `run-mozilla.sh', apparently. - libDir=$(cd $out/lib && ls -d thunderbird-*) - test -n "$libDir" - cd $out/bin - mv thunderbird ../lib/$libDir/ - ln -s ../lib/$libDir/thunderbird . - - # Register extensions etc. - echo "running thunderbird -register..." - (cd $out/lib/$libDir && LD_LIBRARY_PATH=. ./thunderbird-bin -register) || false - - echo "running regxpcom..." - (cd $out/lib/$libDir && LD_LIBRARY_PATH=. ./regxpcom) || false - - # Put the Thunderbird icon in the right place. - ensureDir $out/lib/$libDir/chrome/icons/default - ln -s ../../../icons/default.xpm $out/lib/$libDir/chrome/icons/default/ -} - -genericBuild diff --git a/pkgs/applications/networking/mailreaders/thunderbird-1.x/default.nix b/pkgs/applications/networking/mailreaders/thunderbird-1.x/default.nix deleted file mode 100644 index 2e969d20507..00000000000 --- a/pkgs/applications/networking/mailreaders/thunderbird-1.x/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gtk, perl, zip, libIDL, libXi -, libjpeg, libpng, zlib, cairo - -, # If you want the resulting program to call itself "Thunderbird" - # instead of "Mail", enable this option. However, those - # binaries may not be distributed without permission from the - # Mozilla Foundation, see - # http://www.mozilla.org/foundation/trademarks/. - enableOfficialBranding ? false - -}: - -stdenv.mkDerivation { - name = "thunderbird-1.5.0.10"; - - builder = ./builder.sh; - src = fetchurl { - url = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5.0.10/source/thunderbird-1.5.0.10-source.tar.bz2; - sha1 = "a6467c946f9e668bcf7b3a06dcaeceb601b98fce"; - }; - - buildInputs = [ - pkgconfig gtk perl zip libIDL libXi libjpeg libpng zlib cairo - ]; - - configureFlags = [ - "--enable-application=mail" - "--enable-optimize" - "--disable-debug" - "--enable-xft" - "--disable-freetype2" - "--enable-svg" - "--enable-canvas" - "--enable-strip" - "--enable-default-toolkit=gtk2" - "--with-system-jpeg" - "--with-system-png" - "--with-system-zlib" - "--enable-system-cairo" - "--enable-extensions=default" - ] - ++ (if enableOfficialBranding then ["--enable-official-branding"] else []); - - meta = { - description = "Mozilla Thunderbird, a full-featured email client"; - }; -} diff --git a/pkgs/applications/networking/mailreaders/thunderbird-2.x/default.nix b/pkgs/applications/networking/mailreaders/thunderbird-2.x/default.nix index bde5f6364c4..d90d28b373c 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird-2.x/default.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird-2.x/default.nix @@ -11,12 +11,12 @@ }: stdenv.mkDerivation { - name = "thunderbird-2.0.0.6"; + name = "thunderbird-2.0.0.9"; builder = ./builder.sh; src = fetchurl { - url = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.6/source/thunderbird-2.0.0.6-source.tar.bz2; - sha1 = "c38b17ad0fc51aed96bacafe3ffe7ed0edd0738c"; + url = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.9/source/thunderbird-2.0.0.9-source.tar.bz2; + sha1 = "fede9db98f25adb978b84129a6d15a4dbe6bbb3e"; }; buildInputs = [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7b73f3fbaba..492265f0f9a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4014,17 +4014,7 @@ rec { inherit (xlibs) xextproto libXtst inputproto; }; - thunderbird = thunderbird2; - - thunderbird1 = import ../applications/networking/mailreaders/thunderbird-1.x { - inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo; - inherit (gtkLibs) gtk; - inherit (gnome) libIDL; - inherit (xlibs) libXi; - #enableOfficialBranding = true; - }; - - thunderbird2 = import ../applications/networking/mailreaders/thunderbird-2.x { + thunderbird = import ../applications/networking/mailreaders/thunderbird-2.x { inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo; inherit (gtkLibs) gtk; inherit (gnome) libIDL; From c84b069866a302d9428aeda6f01a563989e83b15 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:09:23 +0000 Subject: [PATCH 082/320] squid http proxy server/client- compiles / untested svn path=/nixpkgs/branches/stdenv-updates/; revision=9888 --- pkgs/servers/squid/default.nix | 22 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/servers/squid/default.nix diff --git a/pkgs/servers/squid/default.nix b/pkgs/servers/squid/default.nix new file mode 100644 index 00000000000..6bf63ae027b --- /dev/null +++ b/pkgs/servers/squid/default.nix @@ -0,0 +1,22 @@ +args: +( args.mkDerivationByConfiguration { + flagConfig = { + mandatory = { buildInputs = [ "perl" ]; }; + # many options I don't know wether they should be default .. + }; + + extraAttrs = co : { + name = "squid-2.6-stable"; + + src = args.fetchurl { + url = http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE16.tar.bz2; + sha256 = "1iv21a4cl74bqzrk07l0lbzlq3n9qpd0r31fgsjv2dsabj46qc4y"; + }; + + meta = { + description = "http-proxy"; + homepage = "http://www.squid-cache.org"; + license = "GPL2"; + }; + }; +} ) args diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 492265f0f9a..c8ec1fee7d3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2784,6 +2784,11 @@ rec { inherit stdenv fetchurl readline openldap pam; }; + squid = import ../servers/squid { + inherit fetchurl stdenv mkDerivationByConfiguration perl; + lib = lib_unstable; + }; + tomcat5 = import ../servers/http/tomcat { inherit fetchurl stdenv jdk; }; From f72d74bafc8d346d12e6f17eb767e62be5db4739 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:09:41 +0000 Subject: [PATCH 083/320] Opera updated - works now on x64-linux as well svn path=/nixpkgs/branches/stdenv-updates/; revision=9889 --- .../networking/browsers/opera/builder.sh | 11 ++++---- .../networking/browsers/opera/default.nix | 26 ++++++++++++------- pkgs/top-level/all-packages.nix | 7 ++--- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/pkgs/applications/networking/browsers/opera/builder.sh b/pkgs/applications/networking/browsers/opera/builder.sh index 26d5df1cc4d..1de82fdfa72 100644 --- a/pkgs/applications/networking/browsers/opera/builder.sh +++ b/pkgs/applications/networking/browsers/opera/builder.sh @@ -7,6 +7,7 @@ buildPhase() { installPhase=installPhase installPhase() { + sed -i 's=/bin/pwd=pwd=' opera install.sh # Note: the "no" is because the install scripts asks whether we # want to install icons in some system-wide directories. echo no | ./install.sh --prefix=$out @@ -16,20 +17,18 @@ installPhase() { rpath="$rpath:$i/lib" done + [ -z ${system##*64*} ] && suf=64 + # !!! ugh, should fix this eventually; just make a normal gcc dependency gcc=$(cat $NIX_GCC/nix-support/orig-gcc) - rpath="$rpath:$gcc/lib" + rpath="$rpath:$libstdcpp5/lib$suf" - for i in $out/lib/opera/*/opera $out/lib/opera/plugins/opera*; do + for i in $out/lib/opera/*/opera $out/lib/opera/*/operaplugin{wrapper,cleaner}; do patchelf \ --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ --set-rpath "$rpath" \ "$i" done - - # opera seems to need libnpp.so in the same path ? - # (search the opera help for libnpp.. - cp $out/lib/opera/plugins/libnpp.so $out/lib/opera/9* } genericBuild diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix index 754a018c328..d807add5111 100644 --- a/pkgs/applications/networking/browsers/opera/default.nix +++ b/pkgs/applications/networking/browsers/opera/default.nix @@ -1,7 +1,6 @@ -{ stdenv, fetchurl, qt, zlib, libX11, libXext, libSM, libICE, libstdcpp5 +{ stdenv, fetchurl, qt, zlib, libX11, libXext, libSM, libICE, libstdcpp5, glibc , motif ? null, libXt ? null}: -assert stdenv.system == "i686-linux"; assert motif != null -> libXt != null; # !!! Add Xinerama and Xrandr dependencies? Or should those be in Qt? @@ -12,13 +11,22 @@ stdenv.mkDerivation rec { version = "9.24-20071015.5"; name = "opera-${version}"; - builder = ./builder.sh; - src = fetchurl { - url = ftp://ftp.task.gda.pl/pub/opera/linux/924/final/en/i386/shared/opera-9.24-20071015.5-shared-qt.i386-en.tar.bz2; - sha256 = "1frhnrp63k4lz29a8z9c99h383xrsrby432xp20hxrylh0zypzb5"; - }; + inherit libstdcpp5; + builder = ./builder.sh; + src = if (stdenv.system == "i686-linux") then + fetchurl { + url = ftp://ftp.task.gda.pl/pub/opera/linux/950b/final/en/i386/shared/opera-9.50b-20071024.5-shared-qt.i386-en.tar.bz2; + sha256 = "0vv1q86is9x6vw8fx92wrnvlyn4x29zgk9zjn66rcx37n6grqqah"; + } else if (stdenv.system == "x86_64-linux") then + fetchurl { + url = ftp://ftp.task.gda.pl/pub/opera/linux/950b/final/en/x86_64/opera-9.50-20071024.2-shared-qt.x86_64-1643.tar.bz2; + sha256 = "1gv1r18ar3vz1l24nf8qixjlba1yb5d3xvg3by41i4dy0vlznqn6"; + } else throw "unsupported platform ${stdenv.system} (only i686-linux and x86_64 linux supported yet)"; + + # operapluginwrapper seems to require libXt ? + # Adding it makes startup faster and omits error messages (on x68) libPath = - [qt motif zlib libX11 libXext libSM libICE libstdcpp5] - ++ (if motif != null then [motif libXt ] else []); + [glibc qt motif zlib libX11 libXt libXext libSM libICE libstdcpp5] + ++ (if motif != null then [motif ] else []); } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c8ec1fee7d3..57e55346aa1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3865,11 +3865,12 @@ rec { }; opera = import ../applications/networking/browsers/opera { - inherit fetchurl stdenv zlib; + inherit fetchurl zlib glibc; + stdenv = overrideGCC stdenv gcc40; inherit (xlibs) libX11 libSM libICE libXt libXext; qt = qt3; - #motif = lesstif; - libstdcpp5 = gcc33.gcc; + #33motif = lesstif; + libstdcpp5 = (if (stdenv.system == "i686-linux") then gcc33 /* stdc++ 3.8 is used */ else gcc).gcc; }; pan = import ../applications/networking/newsreaders/pan { From 6281ec3eb81c6f2596536ec2934a093fc53f7169 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:09:57 +0000 Subject: [PATCH 084/320] fix name (was 2.16, should have been 2.17) svn path=/nixpkgs/branches/stdenv-updates/; revision=9890 --- pkgs/tools/system/which/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/system/which/default.nix b/pkgs/tools/system/which/default.nix index 6b151709b63..482d495ba83 100644 --- a/pkgs/tools/system/which/default.nix +++ b/pkgs/tools/system/which/default.nix @@ -1,5 +1,5 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "which-2.16"; + name = "which-2.17"; src = fetchurl { url = http://ftp.gnu.org/gnu/which/which-2.17.tar.gz; sha256 = "1nnnbn83da8481blmcyv96gm15ccsilr93fmgmwdlzj8a72fjvqp"; From 23477c16e7cf8c4b0834653415afe62493e3f0e2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:10:05 +0000 Subject: [PATCH 085/320] Using the current gcc inkscape still builds and runs on i686 but also builds on my x86_64 svn path=/nixpkgs/branches/stdenv-updates/; revision=9891 --- pkgs/top-level/all-packages.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 57e55346aa1..984d8b2ee08 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3700,12 +3700,11 @@ rec { } null; inkscape = import ../applications/graphics/inkscape { - inherit fetchurl perl perlXMLParser pkgconfig zlib + inherit fetchurl stdenv perl perlXMLParser pkgconfig zlib popt libxml2 libxslt libpng boehmgc fontconfig gtkmm glibmm libsigcxx lcms boost gettext; inherit (gtkLibs) gtk glib; inherit (xlibs) libXft; - stdenv = overrideGCC stdenv gcc34; }; ion3 = import ../applications/window-managers/ion-3 { From 06e55f1ffee68dfef3633afb357b7479a1701733 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:10:21 +0000 Subject: [PATCH 086/320] source fixed of ilmbase and openexr, blender, openal-soft added (can't compile openal yet on x64) svn path=/nixpkgs/branches/stdenv-updates/; revision=9892 --- .../libraries/openalSoft/default.nix | 24 ++++++++++++++ pkgs/top-level/all-packages.nix | 31 ++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/openalSoft/default.nix diff --git a/pkgs/development/libraries/openalSoft/default.nix b/pkgs/development/libraries/openalSoft/default.nix new file mode 100644 index 00000000000..dae9e90522c --- /dev/null +++ b/pkgs/development/libraries/openalSoft/default.nix @@ -0,0 +1,24 @@ +args: +args.stdenv.mkDerivation { +#The current release is still in a testing phase, though it should be stable +# (neither the ABI or API will break). Please try it out and let me know how it +# works. :-) + + name = "openal-soft-testing"; + + src = args.fetchurl { + url = http://kcat.strangesoft.net/OpenAL.tar.bz2?2; + sha256 = "7b53c3e6eda1a71010651eb058c71c9b0c86b3c15cae5f0ffeeb7222531aa97d"; + }; + + buildInputs =(with args; [cmake alsaLib]); + #phases = "buildPhase installPhase"; + + buildPhase = "ensureDir \$out; cmake -DCMAKE_INSTALL_PREFIX:PATH=\$out .; make; make install;"; + + meta = { + description = "openal alternative"; + homepage = http://kcat.strangesoft.net/openal.html; + license = "GPL2"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 984d8b2ee08..89cae494c9b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2147,12 +2147,23 @@ rec { inherit fetchurl stdenv alsaLib autoconf automake libtool; }; + # added because I hope that it has been easier to compile on x86 (for blender) + openalSoft = import ../development/libraries/openalSoft { + inherit fetchurl stdenv alsaLib libtool cmake; + }; + openbabel = import ../development/libraries/openbabel { inherit fetchurl stdenv zlib libxml2; }; - openexr = import ../development/libraries/openexr { + openexr_1_6_1 = import ../development/libraries/openexr { inherit fetchurl stdenv ilmbase zlib pkgconfig; + version = "1.6.1"; + }; + # This older version is needed by blender (it complains about missing half.h ) + openexr_1_4_0 = import ../development/libraries/openexr { + inherit fetchurl stdenv ilmbase zlib pkgconfig; + version = "1.4.0"; }; openldap = import ../development/libraries/openldap { @@ -3359,6 +3370,24 @@ rec { # inherit lib stdenv fetchurl ncurses; #}; + # only to be able to compile blender - I couldn't compile the default openal software + # Perhaps this can be removed - don't know which one openal{,soft} is better + freealut_soft = import ../development/libraries/freealut { + inherit fetchurl stdenv; + openal = openalSoft; + }; + blender = import ../applications/misc/blender { + inherit cmake mesa gettext freetype SDL libtiff fetchurl glibc scons x11 + libjpeg libpng zlib /* smpeg sdl */; + inherit (xlibs) inputproto libXi; + lib = lib_unstable; + python = python25; + freealut = freealut_soft; + openal = openalSoft; + stdenv = stdenvUsingSetupNew2; + openexr = openexr_1_4_0; + }; + bmp = import ../applications/audio/bmp { inherit fetchurl stdenv pkgconfig libogg libvorbis alsaLib id3lib; inherit (gnome) esound libglade; From 8515c1796676d1e2c1fb7a6661d73625da5705c2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:10:32 +0000 Subject: [PATCH 087/320] Added gdmap, changed builder-defs to use derivation attribute on propagatedBuildInputs, manually fixed Xorg expression problem for Compiz, various fixes. svn path=/nixpkgs/branches/stdenv-updates/; revision=9893 --- .../compiz-fusion/bcop/0.6.0.nix | 1 + .../compiz-fusion/general-dependencies.nix | 2 +- .../window-managers/compiz/0.6.2.nix | 9 ++- .../libraries/libdbi-drivers/0.8.2-1.nix | 39 +++++++++++ pkgs/development/libraries/libdbi/0.8.2.nix | 21 ++++++ .../libraries/libextractor/0.5.18.nix | 21 ++++++ .../tools/misc/intltool/0.36.2.nix | 5 +- pkgs/lib/default.nix | 8 +++ pkgs/tools/system/gdmap/0.7.5.nix | 21 ++++++ pkgs/top-level/all-packages.nix | 66 ++++++++++++++++++- pkgs/top-level/builder-defs.nix | 18 +++-- 11 files changed, 192 insertions(+), 19 deletions(-) create mode 100644 pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix create mode 100644 pkgs/development/libraries/libdbi/0.8.2.nix create mode 100644 pkgs/development/libraries/libextractor/0.5.18.nix create mode 100644 pkgs/tools/system/gdmap/0.7.5.nix diff --git a/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix index ee6fd586dfe..1072e9b363c 100644 --- a/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix @@ -23,6 +23,7 @@ stdenv.mkDerivation rec { builder = writeScript (name + "-builder") (textClosure [doAutotools doConfigure doMakeInstall fixPkgconfig fixInterpreter doForceShare doPropagate]); + inherit propagatedBuildInputs; meta = { description = " Compiz BCOP. diff --git a/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix b/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix index 1a041eaf2d6..717d66e2c29 100644 --- a/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix +++ b/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix @@ -3,7 +3,7 @@ build-essential libxcomposite-dev libpng12-dev libsm-dev libxrandr-dev libxdamag */ args: with args; [ - libXcomposite libpng libSM libXrandr libXdamage libXinerama startupnotification + libpng GConf mesa metacity librsvg dbus dbus_glib gnomedesktop git autoconf automake libtool libxslt libwnck intltool perl perlXMLParser compiz ] diff --git a/pkgs/applications/window-managers/compiz/0.6.2.nix b/pkgs/applications/window-managers/compiz/0.6.2.nix index 92f67ba6877..6eef24beb99 100644 --- a/pkgs/applications/window-managers/compiz/0.6.2.nix +++ b/pkgs/applications/window-managers/compiz/0.6.2.nix @@ -6,7 +6,7 @@ args : with args; sha256 = "0k58bkbyqx94ch7scvn3d26296ai9nddfb6lg8v3bhbi2zj4i2n5"; }; buildInputs = [ - pkgconfig libXrender xextproto gtk libwnck GConf libgnome + pkgconfig gtk libwnck GConf libgnome libgnomeui metacity gnomegtk glib pango libglade libgtkhtml gtkhtml libgnomecanvas libgnomeprint libgnomeprintui gnomepanel librsvg fuse @@ -14,7 +14,8 @@ args : with args; propagatedBuildInputs = [ libpng libXcomposite libXfixes libXdamage libXrandr libXinerama libICE libSM startupnotification mesa GConf perl perlXMLParser libxslt - dbus dbus_glib + dbus dbus_glib compositeproto fixesproto damageproto randrproto + xineramaproto renderproto kbproto xextproto libXrender ]; configureFlags = ["--enable-gtk" "--enable-fuse" "--enable-annotate" "--enable-librsvg"] ++ @@ -35,7 +36,9 @@ stdenv.mkDerivation rec { name = "compiz-0.6.2"; builder = writeScript (name + "-builder") - (textClosure [doPatch doConfigure doMakeInstall doForceShare postAll]); + (textClosure [doPatch doConfigure doMakeInstall doPropagate + doForceShare postAll]); + inherit propagatedBuildInputs; meta = { description = " Compiz window manager diff --git a/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix b/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix new file mode 100644 index 00000000000..be0db328ef9 --- /dev/null +++ b/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix @@ -0,0 +1,39 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = mirror://sourceforge/libdbi-drivers/libdbi-drivers-0.8.2-1.tar.gz; + sha256 = "1bflwl1k3rf1h8clx3zv5pxnm5hbhq6izikv0phkss3qxkjm61ap"; + }; + + buildInputs = [libdbi] + ++(if args ? mysql then [args.mysql] else []) + ++(if args ? sqlite then [args.sqlite] else []) + ; + configureFlags = [ + " --enable-libdbi " + " --with-dbi-incdir=${libdbi}/include " + " --with-dbi-libdir=${libdbi}/lib " + ] + ++ (if args ? mysql then [ + " --with-mysql " + " --with-mysql-incdir=${mysql}/include/mysql " + " --with-mysql-libdir=${mysql}/lib/mysql " + ] else []) + ++ (if args ? sqlite then [ + " --with-sqlite " + " --with-sqlite-incdir=${sqlite}/include/sqlite " + " --with-sqlite-libdir=${sqlite}/lib/sqlite " + ] else []) + ; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "libdbi"+version; + builder = writeScript (name + "-builder") + (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + DB independent interface to DB; DB drivers (mysql only for now). +"; + }; +} diff --git a/pkgs/development/libraries/libdbi/0.8.2.nix b/pkgs/development/libraries/libdbi/0.8.2.nix new file mode 100644 index 00000000000..e7dc24417f2 --- /dev/null +++ b/pkgs/development/libraries/libdbi/0.8.2.nix @@ -0,0 +1,21 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = mirror://sourceforge/libdbi/libdbi-0.8.2.tar.gz; + sha256 = "01zlfv9hd4iv9v1xlh64ajdgx95jb0sjpazavapqc0zwiagwcg4d"; + }; + + buildInputs = []; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "libdbi"+version; + builder = writeScript (name + "-builder") + (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + DB independent interface to DB. +"; + }; +} diff --git a/pkgs/development/libraries/libextractor/0.5.18.nix b/pkgs/development/libraries/libextractor/0.5.18.nix new file mode 100644 index 00000000000..3f8304d7304 --- /dev/null +++ b/pkgs/development/libraries/libextractor/0.5.18.nix @@ -0,0 +1,21 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://gnunet.org/libextractor/download/libextractor-0.5.18.tar.gz; + sha256 = "09y869zmnr6n2953ra4y7z9m9nj23prlqa4nr4rwcb50dzdmil1k"; + }; + + buildInputs = [ zlib]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "libextractor"+version; + builder = writeScript (name + "-builder") + (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Libextractor - extracts metadata from files. +"; + }; +} diff --git a/pkgs/development/tools/misc/intltool/0.36.2.nix b/pkgs/development/tools/misc/intltool/0.36.2.nix index f42a6901dfa..d8315a9ba62 100644 --- a/pkgs/development/tools/misc/intltool/0.36.2.nix +++ b/pkgs/development/tools/misc/intltool/0.36.2.nix @@ -6,13 +6,14 @@ args : with args; sha256 = "0cfblqz3k5s4rsw6rx9f5v3izsrmrs96293rb7bd02vijbah9gxj"; }; - buildInputs = [perl perlXMLParser]; + propagatedBuildInputs = [perl perlXMLParser]; configureFlags = []; } null; /* null is a terminator for sumArgs */ stdenv.mkDerivation rec { name = "intltool-0.36.2"; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare]); + (textClosure [doConfigure doMakeInstall doPropagate doForceShare]); + inherit propagatedBuildInputs; meta = { description = " Internalization tool for XML. diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 71803a9e335..3ad861ef19d 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -252,4 +252,12 @@ rec { debugVal = if builtins ? trace then x: (builtins.trace x x) else x: x; debugXMLVal = if builtins ? trace then x: (builtins.trace (builtins.toXML x) x) else x: x; + innerClosePropagation = ready: list: if list == [] then ready else + if (head list) ? propagatedBuildInputs then + innerClosePropagation (ready ++ [(head list)]) + ((head list).propagatedBuildInputs ++ (tail list)) else + innerClosePropagation (ready ++ [(head list)]) (tail list); + + closePropagation = list: (uniqList {inputList = (innerClosePropagation [] list);}); + } diff --git a/pkgs/tools/system/gdmap/0.7.5.nix b/pkgs/tools/system/gdmap/0.7.5.nix new file mode 100644 index 00000000000..354ebb966a1 --- /dev/null +++ b/pkgs/tools/system/gdmap/0.7.5.nix @@ -0,0 +1,21 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://dfn.dl.sourceforge.net/sourceforge/gdmap/gdmap-0.7.5.tar.gz; + sha256 = "0vxfgz1bq0jvny6dy7dkzg2kl56plrxby6c4y5d6bv4bq2xd6v26"; + }; + + buildInputs = [gtk pkgconfig libxml2 intltool]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "gdmap"+version; + builder = writeScript (name + "-builder") + (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Recursive rectangle map of disk usage. +"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 89cae494c9b..6977679bb2c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -453,6 +453,16 @@ rec { inherit fetchurl stdenv; }); + gdmapFun = lib.sumArgs (selectVersion ../tools/system/gdmap) { + inherit stdenv fetchurl builderDefs pkgconfig libxml2 + intltool; + inherit (gtkLibs) gtk; + }; + + gdmap = gdmapFun { + version = "0.7.5"; + } null; + getopt = import ../tools/misc/getopt { inherit fetchurl stdenv; }; @@ -535,6 +545,18 @@ rec { inherit fetchurl stdenv ocaml; }; + /*hyppocampusFun = lib.sumArgs ( selectVersion ../tools/misc/hyppocampus ) { + inherit builderDefs stdenv fetchurl libdbi libdbiDrivers fuse + pkgconfig perl gettext dbus dbus_glib pcre libscd; + inherit (gtkLibs) glib; + bison = bison23; + flex = flex2533; + }; + + hyppocampus = hyppocampusFun { + version = "0.3rc1"; + } null;*/ + jdiskreport = import ../tools/misc/jdiskreport { inherit fetchurl stdenv unzip jdk; }; @@ -1932,6 +1954,25 @@ rec { inherit fetchurl stdenv; }; + libdbiFun = lib.sumArgs (selectVersion ../development/libraries/libdbi) { + inherit stdenv fetchurl builderDefs; + }; + + libdbi = libdbiFun { + version = "0.8.2"; + } null; + + libdbiDriversFun = lib.sumArgs (selectVersion ../development/libraries/libdbi-drivers) { + inherit stdenv fetchurl builderDefs libdbi; + }; + + libdbiDrivers = libdbiDriversFun { + version = "0.8.2-1"; + mysql = mysql5; + inherit sqlite; + } null; + + libdrm = import ../development/libraries/libdrm { inherit fetchurl stdenv; }; @@ -1956,6 +1997,15 @@ rec { inherit fetchurl stdenv gettext; }; + libextractorFun = lib.sumArgs (selectVersion ../development/libraries/libextractor) + { + inherit fetchurl stdenv builderDefs zlib; + }; + + libextractor = libextractorFun { + version = "0.5.18"; + } null; + libgcrypt = import ../development/libraries/libgcrypt { inherit fetchurl stdenv libgpgerror; }; @@ -2020,6 +2070,14 @@ rec { inherit fetchurl stdenv zlib; }; + /*libscdFun = lib.sumArgs (selectVersion ../development/libraries/libscd) { + inherit stdenv fetchurl builderDefs libextractor perl pkgconfig; + }; + + libscd = libscdFun { + version = "0.4.2"; + } null;*/ + libsigcxx = import ../development/libraries/libsigcxx { inherit fetchurl stdenv pkgconfig; }; @@ -3381,7 +3439,7 @@ rec { libjpeg libpng zlib /* smpeg sdl */; inherit (xlibs) inputproto libXi; lib = lib_unstable; - python = python25; + python = python_alts.v_2_5; freealut = freealut_soft; openal = openalSoft; stdenv = stdenvUsingSetupNew2; @@ -3443,7 +3501,8 @@ rec { inherit lib builderDefs stringsWithDeps; inherit fetchurl stdenv pkgconfig libpng mesa perl perlXMLParser libxslt; inherit (xorg) libXcomposite libXfixes libXdamage libXrandr - libXinerama libICE libSM libXrender xextproto; + libXinerama libICE libSM libXrender xextproto compositeproto fixesproto + damageproto randrproto xineramaproto renderproto kbproto; inherit (gnome) startupnotification libwnck GConf; inherit (gtkLibs) gtk; inherit (gnome) libgnome libgnomeui metacity @@ -4314,7 +4373,7 @@ rec { inherit fetchurl fetchsvn zlib perl openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt libtool libusb expat freetype bzip2 cmake cluceneCore libgcrypt gnupg - cppunit cyrus_sasl openldap enchant openexr exiv2 samba nss log4cxx aspell + cppunit cyrus_sasl openldap enchant exiv2 samba nss log4cxx aspell shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline saneBackends chmlib python libzip gmp sqlite libidn runCommand lib @@ -4330,6 +4389,7 @@ rec { qt = qt4; dbus = dbus_alts.withX11; bison = bison23; + openexr = openexr_1_6_1 ; }); kdebase = import ../desktops/kde/kdebase { diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix index 01940499d61..94f83b9c06f 100644 --- a/pkgs/top-level/builder-defs.nix +++ b/pkgs/top-level/builder-defs.nix @@ -3,6 +3,8 @@ args: with args; with stringsWithDeps; with lib; { inherit writeScript; + + forceShare = if args ? forceShare then args.forceShare else ["man" "doc" "info"]; archiveType = s: @@ -107,18 +109,10 @@ args: with args; with stringsWithDeps; with lib; if test -f \$pkg/nix-support/setup-hook; then source \$pkg/nix-support/setup-hook fi - - if test -f \$pkg/nix-support/propagated-build-inputs; then - for i in \$(cat \$pkg/nix-support/propagated-build-inputs); do - findInputs \$i - done - fi } pkgs=\"\" - for i in \$NIX_GCC ${toString buildInputs} ${toString - (if (args ? propagatedBuildInputs) then - args.propagatedBuildInputs else "")}; do + for i in \$NIX_GCC ${toString buildInputs}; do findInputs \$i done @@ -287,7 +281,11 @@ args: with args; with stringsWithDeps; with lib; autoConfigureFlags = condConcat "" configFlags check; autoMakeFlags = condConcat "" buildFlags check; useConfig = getAttr ["useConfig"] false args; - buildInputs = if useConfig then autoBuildInputs else getAttr ["buildInputs"] [] args; + buildInputs = + lib.closePropagation ((if useConfig then + autoBuildInputs else + getAttr ["buildInputs"] [] args)++ + (getAttr ["propagatedBuildInputs"] [] args)); configureFlags = if useConfig then autoConfigureFlags else getAttr ["configureFlags"] "" args; makeFlags = if useConfig then autoMakeFlags else getAttr ["makeFlags"] "" args; From f9ae454805d4706a6138e54b7dfe44871ae005aa Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 01:10:37 +0000 Subject: [PATCH 088/320] blender default.nix svn path=/nixpkgs/branches/stdenv-updates/; revision=9894 --- pkgs/applications/misc/blender/default.nix | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 pkgs/applications/misc/blender/default.nix diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix new file mode 100644 index 00000000000..3fb66dff3e9 --- /dev/null +++ b/pkgs/applications/misc/blender/default.nix @@ -0,0 +1,41 @@ +args: +args.stdenv.mkDerivation { + name = "blender-2.45"; + + src = args.fetchurl { + url = http://download.blender.org/source/blender-2.45.tar.gz; + sha256 = "1bi7j1fcvrpb96sjpcbm4sldf359sgskfhv7a8pgcxj0bnhp47wj"; + }; + + phases="unpackPhase buildPhase"; + + inherit (args) scons SDL freetype openal python openexr mesa; + + buildInputs =(with args; [python scons + gettext libjpeg libpng zlib freetype /* fmod smpeg */ freealut openal x11 mesa inputproto libtiff cmake libXi ]); + + # patch SConstruct so that we can pass on additional include. Either blender + # or openEXR is broken. I think OpenEXR should use include "" isntead of <> to + # include files beeing in the same directory + buildPhase = " + sed -i -e \"s=##### END SETUP ##########=env['CPPFLAGS'].append(os.getenv('CPPFLAGS').split(':'))\\n##### END SETUP ##########=\" SConstruct\n" + + " CPPFLAGS=-I$openexr/include/OpenEXR" + + " scons PREFIX=\$out/nix-support" + + " BF_SDL=\$SDL" + + " BF_SDL_LIBPATH=\$SDL/lib" + + " BF_FREETYPE=\$freetype" + + " BF_OPENAL=\$openal" + + " BF_PYTHON=\$python" + + " BF_OPENEXR_INC=\$openexr/include" + + " BF_OPENEXR_LIBPATH=\$openexr/lib" + + " BF_INSTALLDIR=\$out/nix-support/dontLinkThatMuch \n" + + " ensureDir \$out/bin\n" + + " ln -s \$out/nix-support/dontLinkThatMuch/blender \$out/bin/blender" + ; + + meta = { + description = "3D Creation/Animation/Publishing System"; + homepage = http://www.blender.org; + license = "GPL-2 BL"; + }; +} From d23f0bf7e935f0c3b458a35b4a164fa7b9eb106f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 15:21:03 +0000 Subject: [PATCH 089/320] merging trunk... svn path=/nixpkgs/branches/stdenv-updates/; revision=9895 --- .../graphics/exrdisplay/default.nix | 27 ++++ pkgs/applications/graphics/xara/default.nix | 26 +++- pkgs/applications/misc/audio/sox/default.nix | 2 +- .../office/openoffice/default.nix | 29 +++- .../office/openoffice/libawt_problem | 10 ++ pkgs/build-support/fetchsvn/builder.sh | 2 +- pkgs/build-support/fetchsvn/default.nix | 9 +- pkgs/development/compilers/ghc-6.8/d.nix | 37 +++++ .../development/compilers/ghc-6.8/default.nix | 5 +- .../compilers/ghc-6.8/x86_64-linux_patch | 24 ++++ pkgs/development/libraries/ctl/default.nix | 23 ++++ .../libraries/ffmpeg_svn_snapshot/default.nix | 13 +- pkgs/development/libraries/fltk/default.nix | 74 +++++----- pkgs/development/libraries/geos/default.nix | 42 ++++++ pkgs/development/libraries/gsl/default.nix | 17 +++ .../development/libraries/ilmbase/default.nix | 6 +- .../libraries/libsamplerate/default.nix | 2 +- .../development/libraries/openexr/default.nix | 10 +- .../libraries/openexr_ctl/default.nix | 24 ++++ pkgs/development/libraries/proj.4/default.nix | 17 +++ .../tools/selenium/remote-control/default.nix | 23 ++++ pkgs/games/construo/0.2.2.nix | 29 ++++ pkgs/misc/tex/auctex/default.nix | 1 + .../os-specific/linux/ndiswrapper/default.nix | 26 ++++ pkgs/os-specific/linux/upstart/jobcontrol.nix | 15 ++ pkgs/os-specific/linux/util-linux/default.nix | 6 +- pkgs/tools/misc/relfs/cvs.2007.12.01.nix | 48 +++++++ pkgs/tools/networking/openssh/default.nix | 1 + pkgs/top-level/all-packages.nix | 130 ++++++++++++++---- pkgs/top-level/builder-defs.nix | 5 + 30 files changed, 585 insertions(+), 98 deletions(-) create mode 100644 pkgs/applications/graphics/exrdisplay/default.nix create mode 100644 pkgs/applications/office/openoffice/libawt_problem create mode 100644 pkgs/development/compilers/ghc-6.8/d.nix create mode 100644 pkgs/development/compilers/ghc-6.8/x86_64-linux_patch create mode 100644 pkgs/development/libraries/ctl/default.nix create mode 100644 pkgs/development/libraries/geos/default.nix create mode 100644 pkgs/development/libraries/gsl/default.nix create mode 100644 pkgs/development/libraries/openexr_ctl/default.nix create mode 100644 pkgs/development/libraries/proj.4/default.nix create mode 100644 pkgs/development/tools/selenium/remote-control/default.nix create mode 100644 pkgs/games/construo/0.2.2.nix create mode 100644 pkgs/os-specific/linux/ndiswrapper/default.nix create mode 100644 pkgs/os-specific/linux/upstart/jobcontrol.nix create mode 100644 pkgs/tools/misc/relfs/cvs.2007.12.01.nix diff --git a/pkgs/applications/graphics/exrdisplay/default.nix b/pkgs/applications/graphics/exrdisplay/default.nix new file mode 100644 index 00000000000..980f94e95d4 --- /dev/null +++ b/pkgs/applications/graphics/exrdisplay/default.nix @@ -0,0 +1,27 @@ +args: + +assert args.fltk.flag_set_gl; +args.stdenv.mkDerivation { + + name ="openexr_viewers-1.0.1"; + + src = args.fetchurl { + url = "http://download.savannah.nongnu.org/releases/openexr/openexr_viewers-1.0.1.tar.gz"; + sha256 = "1w5qbcdp7sw48z1wk2v07f7p14vqqb1m2ncxyxnbkm9f4ab0ymg6"; + }; + + inherit (args) fltk mesa; + + configurePhase = " + # don't know why.. adding these flags it works + #export CXXFLAGS=`fltk-config --use-gl --cxxflags --ldflags` + ./configure --prefix=\$out --with-fltk-config=\$fltk/bin/fltk-config"; + + buildInputs =(with args; [openexr fltk pkgconfig mesa which openexr_ctl]); + + meta = { + description = "tool to view OpenEXR images"; + homepage = http://openexr.com; + license = "BSD-like"; + }; +} diff --git a/pkgs/applications/graphics/xara/default.nix b/pkgs/applications/graphics/xara/default.nix index 495e1f93076..e2fdd33c1a6 100644 --- a/pkgs/applications/graphics/xara/default.nix +++ b/pkgs/applications/graphics/xara/default.nix @@ -1,5 +1,5 @@ {stdenv, fetchurl, autoconf, automake, gettext, libtool, cvs, wxGTK, gtk, -pkgconfig, libxml2, zip, libpng, libjpeg}: +pkgconfig, libxml2, zip, libpng, libjpeg, shebangfix, perl, freetype}: stdenv.mkDerivation { name = "xaralx-0.7r1766"; @@ -7,9 +7,29 @@ stdenv.mkDerivation { url = http://downloads2.xara.com/opensource/XaraLX-0.7r1766.tar.bz2; sha256 = "1rcl7hqvcai586jky7hvzxhnq8q0ka2rsmgiq5ijwclgr5d4ah7n"; }; - - buildInputs = [automake autoconf gettext libtool cvs wxGTK gtk pkgconfig libxml2 zip libpng libjpeg]; + + buildInputs = [automake autoconf gettext libtool cvs wxGTK gtk pkgconfig libxml2 zip libpng libjpeg shebangfix perl]; + + inherit freetype libpng libjpeg libxml2; configureFlags = "--with-wx-config --disable-svnversion --disable-international"; patches = [./gtk_cflags.patch]; + + # Why do I need to add library path for freetype ? + installPhase = " + make install + ensureDir \$out/lib + mv \$out/{bin,lib}/XaraLX +cat >> \$out/bin/XaraLX << EOF +#!/bin/sh +LD_LIBRARY_PATH=\$freetype/lib:\$libpng/lib:\$libjpeg/lib:\$libxml2/lib: +\$out/lib/XaraLX \"\\$@\" +EOF +chmod +x \$out/bin/XaraLX +"; + + patchPhase = " + find . -iname \"*.pl\" | xargs shebangfix; + unset patchPhase; patchPhase + "; } diff --git a/pkgs/applications/misc/audio/sox/default.nix b/pkgs/applications/misc/audio/sox/default.nix index 91bd5be0788..c0cf9d91b73 100644 --- a/pkgs/applications/misc/audio/sox/default.nix +++ b/pkgs/applications/misc/audio/sox/default.nix @@ -1,5 +1,5 @@ args: -( args.mkDerivationByConfigruation { +( args.mkDerivationByConfiguration { flagConfig = { mandatory = { implies = [ "no_oss" "no_sun_audio" ]; }; # are these options of interest? We'll see diff --git a/pkgs/applications/office/openoffice/default.nix b/pkgs/applications/office/openoffice/default.nix index 789bc5a53da..c7cedc69dee 100644 --- a/pkgs/applications/office/openoffice/default.nix +++ b/pkgs/applications/office/openoffice/default.nix @@ -10,11 +10,21 @@ stdenv.mkDerivation rec { name = "openoffice.org-2.3.0"; builder = ./builder.sh; - src = fetchurl { - url = http://openoffice.bouncer.osuosl.org/?product=OpenOffice.org&os=src_bzip&lang=core&version=2.3.0; - name = "OOo_2.3.0_src_core.tar.bz2"; - sha256 = "0mkxn9qj3f03rjkmxc4937gr2w429hnxzb9j5j2grdknfga5a1c3"; - }; + src = + #if (stdenv.system == "i686-linux") then + #fetchurl { + # stable 2.3.0 is failing - got the tip on the mailinglist to have look + # at http://www.openoffice.org/issues/show_bug.cgi?id=74751 + # now I'm trying snapshot because it should already have this patch + #url = http://ftp.ussg.iu.edu/openoffice/contrib/rc/2.3.1rc1/OOo_2.3.1rc1_src_core.tar.bz2; + #name = "OOo_2.3.1_src_core.tar.bz2"; + #sha256 = ""; + #} else + fetchurl { + url = http://openoffice.bouncer.osuosl.org/?product=OpenOffice.org&os=src_bzip&lang=core&version=2.3.0; + name = "OOo_2.3.0_src_core.tar.bz2"; + sha256 = "0mkxn9qj3f03rjkmxc4937gr2w429hnxzb9j5j2grdknfga5a1c3"; + }; configureFlags = " --with-package-format=native @@ -63,7 +73,14 @@ stdenv.mkDerivation rec { inherit icu fontconfig libjpeg jdk cups; - patches = [./ooo-libtextcat.patch]; + # libawt_problem see http://www.openoffice.org/issues/show_bug.cgi?id=74751 + # Can be removed in newer releases than 2.3.0 + patch_file = ./libawt_problem; + patches = [./ooo-libtextcat.patch ]; + patchPhase = " + patch config_office/set_soenv.in \$patch_file + unset patchPhase; patchPhase; + "; meta = { description = "OpenOffice.org is a multiplatform and multilingual office suite"; diff --git a/pkgs/applications/office/openoffice/libawt_problem b/pkgs/applications/office/openoffice/libawt_problem new file mode 100644 index 00000000000..edfb72cd8d2 --- /dev/null +++ b/pkgs/applications/office/openoffice/libawt_problem @@ -0,0 +1,10 @@ +--- config_office/set_soenv.in 2007-02-21 16:31:51.000000000 +0100 ++++ config_office/set_soenv.in.new 2007-02-21 20:37:17.000000000 +0100 +@@ -426,6 +426,7 @@ + $OUTPATH = "unxlngx6"; + # Blackdown.org JDK porting project uses `amd64' and `server' in JDK 1.4.2 RC1 + $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64"; ++ $JREEXTRALIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."xawt"; + $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."server"; + $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."native_threads"; + } diff --git a/pkgs/build-support/fetchsvn/builder.sh b/pkgs/build-support/fetchsvn/builder.sh index d06efa88e29..b53ce95579a 100644 --- a/pkgs/build-support/fetchsvn/builder.sh +++ b/pkgs/build-support/fetchsvn/builder.sh @@ -12,7 +12,7 @@ fi # hash of the output matters. echo 'p' | svn export -r "$rev" "$url" $out -actual=$(nix-hash $out) +actual=$(nix-hash $out --type "$outputHashAlgo") if test "$actual" != "$outputHash"; then echo "hash is $actual, expected $outputHash" >&2 exit 1 diff --git a/pkgs/build-support/fetchsvn/default.nix b/pkgs/build-support/fetchsvn/default.nix index ff842b0ee24..ce6a1e61d9c 100644 --- a/pkgs/build-support/fetchsvn/default.nix +++ b/pkgs/build-support/fetchsvn/default.nix @@ -1,4 +1,5 @@ -{stdenv, subversion, nix, sshSupport ? false, openssh ? null}: {url, rev ? "HEAD", md5}: +{stdenv, subversion, nix, sshSupport ? false, openssh ? null}: +{url, rev ? "HEAD", md5 ? "", sha256 ? ""}: stdenv.mkDerivation { name = "svn-export"; @@ -6,11 +7,11 @@ stdenv.mkDerivation { buildInputs = [subversion nix]; # Nix <= 0.7 compatibility. - id = md5; + /*id = if sha256 == "" then md5 else sha256;*/ - outputHashAlgo = "md5"; + outputHashAlgo = if sha256=="" then "md5" else "sha256"; outputHashMode = "recursive"; - outputHash = md5; + outputHash = if sha256 =="" then md5 else sha256; inherit url rev sshSupport openssh; } diff --git a/pkgs/development/compilers/ghc-6.8/d.nix b/pkgs/development/compilers/ghc-6.8/d.nix new file mode 100644 index 00000000000..a011405f541 --- /dev/null +++ b/pkgs/development/compilers/ghc-6.8/d.nix @@ -0,0 +1,37 @@ + +stdenv.mkDerivation (rec { + homepage = "http://www.haskell.org/ghc"; + + src = map fetchurl [ + { url = "${homepage}/dist/stable/dist/${name}-src.tar.bz2"; + } + { url = "${homepage}/dist/stable/dist/${name}-src-extralibs.tar.bz2"; + } + ]; + + + setupHook = ./setup-hook.sh; + + meta = { + }; + + postInstall = " + ensureDir \"$out/nix-support\" + echo \"# Path to the GHC compiler directory in the store\" > $out/nix-support/setup-hook + echo \"ghc=$out\" >> $out/nix-support/setup-hook + echo \"\" >> $out/nix-support/setup-hook + cat $setupHook >> $out/nix-support/setup-hook + "; + + patch64 = ./x86_64-linux_patch; + + # Thanks to Ian Lynagh ghc now works on x86_64-linux as well + patchPhase = if (stdenv.system == "x86_64-linx") then "patch -p2 < $patch64" else ""; + + + # the presence of this file makes Cabal cry for happy while generating makefiles ... + preConfigure = " + echo 'GhcThreaded=NO' > mk/build.mk + rm libraries/haskell-src/Language/Haskell/Parser.ly + "; +}) diff --git a/pkgs/development/compilers/ghc-6.8/default.nix b/pkgs/development/compilers/ghc-6.8/default.nix index 7588fbb1375..c87d8457082 100644 --- a/pkgs/development/compilers/ghc-6.8/default.nix +++ b/pkgs/development/compilers/ghc-6.8/default.nix @@ -16,7 +16,8 @@ stdenv.mkDerivation (rec { buildInputs = [ghc readline perl m4 pkgconfig gtk]; patchPhase = " sed -e s@/bin/cat@\$(type -p cat)@ -i configure - "; + " + + (if (stdenv.system == "x86_64-linx") then "patch -p2 < $patch64" else ""); setupHook = ./setup-hook.sh; @@ -32,7 +33,7 @@ stdenv.mkDerivation (rec { cat $setupHook >> $out/nix-support/setup-hook "; - #configureFlags="--with-gmp-libraries=${gmp}/lib --with-readline-libraries=${readline}/lib"; + patch64 = ./x86_64-linux_patch; # the presence of this file makes Cabal cry for happy while generating makefiles ... preConfigure = " diff --git a/pkgs/development/compilers/ghc-6.8/x86_64-linux_patch b/pkgs/development/compilers/ghc-6.8/x86_64-linux_patch new file mode 100644 index 00000000000..26a9cf2781e --- /dev/null +++ b/pkgs/development/compilers/ghc-6.8/x86_64-linux_patch @@ -0,0 +1,24 @@ +diff -ru /tmp/ghc_fresh/ghc-6.9.20071119/compiler/codeGen/CgUtils.hs ./ghc-6.9.20071119/compiler/codeGen/CgUtils.hs +--- /tmp/ghc_fresh/ghc-6.9.20071119/compiler/codeGen/CgUtils.hs 2007-12-05 15:02:30.000000000 +0100 ++++ ./ghc-6.9.20071119/compiler/codeGen/CgUtils.hs 2007-12-05 15:33:16.000000000 +0100 +@@ -51,7 +51,7 @@ + ) where + + #include "HsVersions.h" +-#include "MachRegs.h" ++#include "../includes/MachRegs.h" + + import CgMonad + import TyCon +diff -ru /tmp/ghc_fresh/ghc-6.9.20071119/compiler/nativeGen/MachRegs.lhs ./ghc-6.9.20071119/compiler/nativeGen/MachRegs.lhs +--- /tmp/ghc_fresh/ghc-6.9.20071119/compiler/nativeGen/MachRegs.lhs 2007-12-05 15:02:30.000000000 +0100 ++++ ./ghc-6.9.20071119/compiler/nativeGen/MachRegs.lhs 2007-12-05 15:32:41.000000000 +0100 +@@ -90,7 +90,7 @@ + -- HACK: go for the max + #endif + +-#include "MachRegs.h" ++#include "../includes/MachRegs.h" + + import Cmm + import MachOp ( MachRep(..) ) diff --git a/pkgs/development/libraries/ctl/default.nix b/pkgs/development/libraries/ctl/default.nix new file mode 100644 index 00000000000..c6a6cee0ca6 --- /dev/null +++ b/pkgs/development/libraries/ctl/default.nix @@ -0,0 +1,23 @@ +args: +args.stdenv.mkDerivation { + name = "ctl-1.4.1"; + + src = args.fetchurl { + url = http://surfnet.dl.sourceforge.net/sourceforge/ampasctl/ctl-1.4.1.tar.gz; + sha256 = "16lzgbpxdyhykdwndj1i9vx3h4bfkxqqcrvasvgg70gb5raxj0mj"; + }; + + propagatedBuildInputs = (with args; [ilmbase]); + configureFlags="--with-ilmbase-prefix=${args.ilmbase}"; + #configurePhase = " + #export CXXFLAGS=\"-I${args.ilmbase}/include -L${args.ilmbase}/lib\" + #echo $CXXFLAGS + #unset configurePhase; configurePhase + #"; + + meta = { + description = "Color Transformation Language"; + homepage = http://ampasctl.sourceforge.net; + license = "SOME OPEN SOURCE LICENSE"; # TODO which exactly is this? + }; +} diff --git a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix index 3719f1301a3..f3611afb0b6 100644 --- a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix +++ b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix @@ -1,11 +1,16 @@ -{stdenv, fetchurl}: +{stdenv, fetchsvn}: stdenv.mkDerivation { - name = "ffmpeg-svn"; - src = fetchurl { + name = "ffmpeg-svn-2007-12-04"; + src = fetchsvn { + url = svn://svn.mplayerhq.hu/ffmpeg/trunk ; + rev = "11164"; + sha256 = "95658455e466aeab5a302ddd6e7b2f79f620d4495012add46028a548e6c364b2"; + }; + /*fetchurl { url = http://ffmpeg.mplayerhq.hu/ffmpeg-export-snapshot.tar.bz2; sha256 = "040a35f0c004323af14329c09ad3cff8d040e2cf9797d97cde3d9d83d02b4d87"; - }; + };*/ # !!! Hm, what are the legal consequences of --enable-gpl? configureFlags = "--enable-shared --enable-pp --enable-gpl --disable-ffserver --disable-ffplay"; } diff --git a/pkgs/development/libraries/fltk/default.nix b/pkgs/development/libraries/fltk/default.nix index 0b35b3e34b0..25b8379e379 100644 --- a/pkgs/development/libraries/fltk/default.nix +++ b/pkgs/development/libraries/fltk/default.nix @@ -1,45 +1,37 @@ args: -with args; -with args.lib; -let - co = chooseOptionsByFlags { - inherit args; - flagDescr = - { mandatory = { cfgOption = " --prefix=\$out"; - buildInputs=["libX11" "libXext"]; - blocks = ["cygwin" "quartz"]; } # cgywin quartz and much more not yet tested - ; cygwin = { cfgOption = "--enable-cygwin"; } # use the CygWin libraries default=no - ; debug = { cfgOption = "--enable-debug"; } # turn on debugging default=no - ; gl = { cfgOption = "--enable-gl"; buildInputs = [ "mesa" "mesa-heaaders"]; } # turn on OpenGL support default=yes - ; shared = { cfgOption = "--enable-shared"; } # turn on shared libraries default=no - ; threads = { cfgOption = "--enable-threads"; } # enable multi-threading support - ; quartz = { cfgOption = "--enable-quartz"; buildInputs = "quartz"; } # don't konw yet what quartz is # use Quartz instead of Quickdraw (default=no) - ; largefile = { cfgOption = "--disable-largefile"; } # omit support for large files - ; useNixLibs = { implies = [ "nixjpeg" "nixpng" "nixzlib" ]; } # use nix libraries only - ; nixjpeg = { cfgOption = "--disable-localjpeg"; buildInputs = "libjpeg"; } # use local JPEG library, default=auto - ; nixzlib = { cfgOption = "--disable-localzlib"; buildInputs = "zlib"; } # use local ZLIB library, default=auto - ; nixpng = { cfgOption = "--disable-localpng"; buildInputs = "libpng"; } # use local PNG library, default=auto - ; xinerama = { cfgOption = "--enable-xinerama"; buildInputs = "xinerama"; } # turn on Xinerama support default=no - ; xft = { cfgOption = "--enable-xft"; buildInputs="xft"; } # turn on Xft support default=no - ; xdbe = { cfgOption = "--enable-xdbe"; } # turn on Xdbe support default=no - ;}; +( args.mkDerivationByConfiguration { + flagConfig = { + mandatory = { propagatedBuildInputs=["x11"]; + blocks = ["cygwin" "quartz"]; }; # cgywin quartz and much more not yet tested + cygwin = { cfgOption = "--enable-cygwin"; }; # use the CygWin libraries default=no + debug = { cfgOption = "--enable-debug"; }; # turn on debugging default=no + gl = { cfgOption = "--enable-gl"; buildInputs = [ "mesa" ]; }; # turn on OpenGL support default=yes + shared = { cfgOption = "--enable-shared"; }; # turn on shared libraries default=no + threads = { cfgOption = "--enable-threads"; }; # enable multi-threading support + quartz = { cfgOption = "--enable-quartz"; buildInputs = "quartz"; }; # don't konw yet what quartz is # use Quartz instead of Quickdraw (default=no) + largefile = { cfgOption = "--disable-largefile"; }; # omit support for large files + useNixLibs = { implies = [ "nixjpeg" "nixpng" "nixzlib" ]; }; # use nix libraries only + nixjpeg = { cfgOption = "--disable-localjpeg"; buildInputs = "libjpeg"; }; # use local JPEG library, default=auto + nixzlib = { cfgOption = "--disable-localzlib"; buildInputs = "zlib"; }; # use local ZLIB library, default=auto + nixpng = { cfgOption = "--disable-localpng"; buildInputs = "libpng"; }; # use local PNG library, default=auto + xinerama = { cfgOption = "--enable-xinerama"; buildInputs = "xinerama"; }; # turn on Xinerama support default=no + xft = { cfgOption = "--enable-xft"; buildInputs="xft"; }; # turn on Xft support default=no + xdbe = { cfgOption = "--enable-xdbe"; }; # turn on Xdbe support default=no + }; + + extraAttrs = co : { + name = "fltk-2.0.x-r5940"; + + src = args.fetchurl { + #url = http://mirror.switch.ch/mirror/gentoo/distfiles/fltk-1.1.7-source.tar.bz2; + #sha256 = "855a97e35da823f205253b865758715872cd2c7720e4dcf134a3b6dc18bfb96a"; + url = ftp://ftp.easysw.com/pub/fltk/snapshots/fltk-1.1.x-r5989.tar.bz2; + sha256 = "1zk5qh9133zd53hsn03bc4h6j4vjy61y92j4zxxw94z8y3jkc8yw"; }; -in -args.stdenv.mkDerivation { - inherit (co) /* flags */ buildInputs; - name = "fltk-2.0.x-r5940"; - configurePhase = "./configure " + co.configureFlags; - - src = fetchurl { - url = http://mirror.switch.ch/mirror/gentoo/distfiles/fltk-1.1.7-source.tar.bz2; - sha256 = "855a97e35da823f205253b865758715872cd2c7720e4dcf134a3b6dc18bfb96a"; + meta = { + description = "a C++ cross platform lightweight gui library binding"; + homepage = http://www.fltk.org; + }; }; - - meta = { - description = "a C++ cross platform lightweight gui library binding"; - homepage = http://www.fltk.org; - }; - - dummy=2; -} +} ) args diff --git a/pkgs/development/libraries/geos/default.nix b/pkgs/development/libraries/geos/default.nix new file mode 100644 index 00000000000..bcfe8f757a2 --- /dev/null +++ b/pkgs/development/libraries/geos/default.nix @@ -0,0 +1,42 @@ +args: +( args.mkDerivationByConfiguration { + + flagConfig = { + mandatory = { implies = "python"; + buildInputs = [ "which" ]; # which is needed for the autogen.sh + }; + # python and ruby untested + python = { cfgOption = "--enable-python"; #Enable build of python module + buildInputs=["python"] ++ (if args.use_svn then ["libtool" "autoconf" "automake" "swig"] else []); + }; + ruby = { cfgOption = "--enable-ruby"; }; #Enable build of ruby module + }; + + extraAttrs = co : { + name = "geos-3.0.0rc4"; + + src = if (args.use_svn) then + args.fetchsvn { + url = http://svn.osgeo.org/geos/trunk; + md5 = "b46f5ea517a337064006bab92f3090d4"; + } else args.fetchurl { + url = http://geos.refractions.net/geos-3.0.0rc4.tar.bz2; + sha256 = "0pgwwv8q4p234r2jwdkaxcf68z2fwgmkc74c6dnmms2sdwkb5lbw"; + }; + + configurePhase = " + [ -f configure ] || \\ + LIBTOOLIZE=libtoolize ./autogen.sh + #{ automake --add-missing; autoconf; } + unset configurePhase; configurePhase + "; + + meta = { + description = "C++ port of the Java Topology Suite (JTS)" + + "- all the OpenGIS \"Simple Features for SQL\" spatial predicate functions and spatial operators," + + " as well as specific JTS topology functions such as IsValid"; + homepage = http://geos.refractions.net/; + license = "GPL"; + }; + }; +} ) args diff --git a/pkgs/development/libraries/gsl/default.nix b/pkgs/development/libraries/gsl/default.nix new file mode 100644 index 00000000000..a5248d42299 --- /dev/null +++ b/pkgs/development/libraries/gsl/default.nix @@ -0,0 +1,17 @@ +args: +args.stdenv.mkDerivation { + name = "gsl-1.9"; + + src = args.fetchurl { + url = ftp://ftp.gnu.org/gnu/gsl/gsl-1.9.tar.gz; + sha256 = "0l12js65c1qf3s7gmgay6gj5nbs6635py41dj8nk3hlp95wcdlgw"; + }; + + buildInputs =(with args; []); + + meta = { + description = "numerical library (>1000 functions)"; + homepage = http://www.gnu.org/software/gsl; + license = "GPL2"; + }; +} diff --git a/pkgs/development/libraries/ilmbase/default.nix b/pkgs/development/libraries/ilmbase/default.nix index 49fae13aec8..0ab548bef86 100644 --- a/pkgs/development/libraries/ilmbase/default.nix +++ b/pkgs/development/libraries/ilmbase/default.nix @@ -1,9 +1,9 @@ args: with args; stdenv.mkDerivation { - name = "ilmbase-1.0.0"; + name = "ilmbase-1.0.1"; src = fetchurl { - url = http://FIXME/ilmbase-1.0.0.tar.gz; - sha256 = "1dpgi3hbff9nflg95r2smb6ssg5bh5g8mj9dxh896w29nh08ipnz"; + url = http://download.savannah.nongnu.org/releases/openexr/ilmbase-1.0.1.tar.gz; + sha256 = "0z9r3r0bxyhgwhkdwln0dg1lnxz691qnjygrqlg3jym34rxzq52g"; }; configureFlags = "--enable-shared --disable-static"; } diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix index 895772d7fc0..2ea959528a8 100644 --- a/pkgs/development/libraries/libsamplerate/default.nix +++ b/pkgs/development/libraries/libsamplerate/default.nix @@ -1,5 +1,5 @@ args: -( args.mkDerivationByConfigruation { +( args.mkDerivationByConfiguration { flagConfig = { mandatory = { buildInputs = ["pkgconfig"];}; # are these options of interest? We'll see diff --git a/pkgs/development/libraries/openexr/default.nix b/pkgs/development/libraries/openexr/default.nix index e30f25d9778..4d4aefc9581 100644 --- a/pkgs/development/libraries/openexr/default.nix +++ b/pkgs/development/libraries/openexr/default.nix @@ -1,11 +1,15 @@ args: with args; stdenv.mkDerivation { - name = "openexr-1.6.0"; + inherit version; + name = "openexr-${version}"; src = fetchurl { - url = http://FIXME/openexr-1.6.0.tar.gz; - sha256 = "0mzbwavkbj26g43ar5jhdrqlvw9nq1mxh9l2044sqlcyharcnfq4"; + url = "http://download.savannah.nongnu.org/releases/openexr/openexr-${version}.tar.gz"; + sha256 = if (version == "1.6.1") then "0l2rdbx9lg4qk2ms98hwbsnzpggdrx3pbjl6pcvrrpjqp5m905n6" + else if (version == "1.4.0") then "1y3dxakpg9651dgbj2xp6r4044b5gi74g23w3sr5cs6xi7cywv7m" + else abort "not supported version"; }; + buildInputs = [pkgconfig zlib] ++ (lib.optional (args ? ctl) (args.ctl)); propagatedBuildInputs = [pkgconfig zlib ilmbase]; configureFlags = "--enable-shared --disable-static --enable-imfexamples"; } diff --git a/pkgs/development/libraries/openexr_ctl/default.nix b/pkgs/development/libraries/openexr_ctl/default.nix new file mode 100644 index 00000000000..634a38990cb --- /dev/null +++ b/pkgs/development/libraries/openexr_ctl/default.nix @@ -0,0 +1,24 @@ +args: +args.stdenv.mkDerivation { + name = "openexr_ctl-1.0.1"; + + src = args.fetchurl { + url = http://kent.dl.sourceforge.net/sourceforge/ampasctl/openexr_ctl-1.0.1.tar.gz; + sha256 = "1jg9smpaplal8l14djp184wzk11nwd3dvm4lhkp69kjgw8jdd21d"; + }; + + propagatedBuildInputs = (with args; [ilmbase]); + buildInputs = ( with args; [openexr ctl]); + configureFlags="--with-ilmbase-prefix=${args.ilmbase}"; + #configurePhase = " + #export CXXFLAGS=\"-I${args.ilmbase}/include -L${args.ilmbase}/lib\" + #echo $CXXFLAGS + #unset configurePhase; configurePhase + #"; + + meta = { + description = "Color Transformation Language"; + homepage = http://ampasctl.sourceforge.net; + license = "SOME OPEN SOURCE LICENSE"; # TODO which exactly is this? + }; +} diff --git a/pkgs/development/libraries/proj.4/default.nix b/pkgs/development/libraries/proj.4/default.nix new file mode 100644 index 00000000000..6449a188f2b --- /dev/null +++ b/pkgs/development/libraries/proj.4/default.nix @@ -0,0 +1,17 @@ +args: +args.stdenv.mkDerivation { + name = "proj-4.5.0"; + + src = args.fetchurl { + url = ftp://ftp.remotesensing.org/proj/proj-4.5.0.tar.gz; + sha256 = "1d2qz0vgp13hkfgaz7hkblhb9w2fh2blbjqz73xdinwc08cmflqv"; + }; + + buildInputs =(with args; []); + + meta = { + description = "Cartographic Projections Library"; + homepage = http://proj.maptools.org; + license = "MIT"; + }; +} diff --git a/pkgs/development/tools/selenium/remote-control/default.nix b/pkgs/development/tools/selenium/remote-control/default.nix new file mode 100644 index 00000000000..e2bf63264a6 --- /dev/null +++ b/pkgs/development/tools/selenium/remote-control/default.nix @@ -0,0 +1,23 @@ +args: +args.stdenv.mkDerivation { + name = "selenium-rc-0.8.3-binary"; + + src = args.fetchurl { + url = http://release.openqa.org/cgi-bin/selenium-remote-control-redirect.zip; + sha256 = "694b46a8440011bcedc4fdc6d01fd91c8b4b4b62b7c6629ace4e745ef47f583e"; + }; + + phases = "installPhase"; + installPhase = " + ensureDir \$out/lib + cp selenium-server-*/*.jar \$out/lib + "; + + buildInputs =(with args; [unzip]); + + meta = { + description = "test tool for web applications"; + homepage = http://www.openqa.org/selenium-c; + license = ""; + }; +} diff --git a/pkgs/games/construo/0.2.2.nix b/pkgs/games/construo/0.2.2.nix new file mode 100644 index 00000000000..964b0e3898e --- /dev/null +++ b/pkgs/games/construo/0.2.2.nix @@ -0,0 +1,29 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://savannah.nongnu.org/download/construo/construo-0.2.2.tar.gz; + sha256 = "0c661rjasax4ykw77dgqj39jhb4qi48m0bhhdy42vd5a4rfdrcck"; + }; + + buildInputs = [libX11 zlib xproto] + ++ (if args ? mesa then [mesa freeglut] else []) + ; + configureFlags = [""]; + } null; /* null is a terminator for sumArgs */ +let +preConfigure = FullDepEntry (" + sed -e 's/math[.]h/cmath/' -i vector.cxx + sed -e 's/games/bin/' -i Makefile.in +") [doUnpack minInit]; +in +stdenv.mkDerivation rec { + name = "construo-"+version; + builder = writeScript (name + "-builder") + (textClosure [preConfigure doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Construo masses and springs simulation. +"; + }; +} diff --git a/pkgs/misc/tex/auctex/default.nix b/pkgs/misc/tex/auctex/default.nix index 68599f4b246..1059e85cdc0 100644 --- a/pkgs/misc/tex/auctex/default.nix +++ b/pkgs/misc/tex/auctex/default.nix @@ -10,5 +10,6 @@ stdenv.mkDerivation { url = http://ftp.gnu.org/pub/gnu/auctex/auctex-11.84.tar.gz; md5 = "73970c51221524442c11cde13d0584e9"; }; + configureFlags="--with-lispdir=\${out}/emacs/site-lisp --disable-preview"; buildInputs = [ emacs tetex ]; } diff --git a/pkgs/os-specific/linux/ndiswrapper/default.nix b/pkgs/os-specific/linux/ndiswrapper/default.nix new file mode 100644 index 00000000000..0d8b351e58b --- /dev/null +++ b/pkgs/os-specific/linux/ndiswrapper/default.nix @@ -0,0 +1,26 @@ +args: +with args; +args.stdenv.mkDerivation { + name = "ndiswrapper-1.49-stable"; + + # need at least .config and include + inherit kernel; + + buildPhase = " + make KBUILD=\$kernel/lib/modules/*/build; + "; + + # should we use unstable? + src = args.fetchurl { + url = http://kent.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.49.tar.gz; + sha256 = "1b9nqkk7gv6gffzj9b8mjy5myxf2afwpyr2n5wbfsylf15dvvvjr"; + }; + + buildInputs =(with args; [kernelHeaders kernel]); + + meta = { + description = "Ndis driver wrapper for the Linux kernel"; + homepage = http://sourceforge.net/projects/ndiswrapper; + license = "GPL"; + }; +} diff --git a/pkgs/os-specific/linux/upstart/jobcontrol.nix b/pkgs/os-specific/linux/upstart/jobcontrol.nix new file mode 100644 index 00000000000..5be0276ffd5 --- /dev/null +++ b/pkgs/os-specific/linux/upstart/jobcontrol.nix @@ -0,0 +1,15 @@ +args: with args; +stdenv.mkDerivation { + name = "upstart-jobcontrol"; + buildCommand = " + mkdir -p \$out/bin + echo ' + file=/etc/event.d/\$1 + shift + controlscript=\$(egrep exec\\|respawn \$file | tail | sed -e s/^\\\\s\\\\+//g | sed -e s/\\\\s\\\\+/\\ /g | cut -f 2 -d \\ ) + echo Running \$controlscript \"\$@\" + \$controlscript \"\$@\" + ' >\$out/bin/jobcontrol + chmod a+x \$out/bin/jobcontrol + "; +} diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index 7f54a0c32ee..0c7ebef7eb3 100644 --- a/pkgs/os-specific/linux/util-linux/default.nix +++ b/pkgs/os-specific/linux/util-linux/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +args: with args; stdenv.mkDerivation { name = "util-linux-2.13-pre7"; @@ -10,6 +10,10 @@ stdenv.mkDerivation { configureFlags = "--disable-use-tty-group"; + buildInputs = [] + ++ (if args ? ncurses then [args.ncurses] else []) + ; + preBuild = " makeFlagsArray=(usrbinexecdir=$out/bin usrsbinexecdir=$out/sbin datadir=$out/share exampledir=$out/share/getopt) "; diff --git a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix new file mode 100644 index 00000000000..146d55e90c6 --- /dev/null +++ b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix @@ -0,0 +1,48 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchcvs { + url = ":pserver:anonymous@relfs.cvs.sourceforge.net:/cvsroot/relfs"; + module = "relfs"; + date = "2007-12-01"; + sha256 = "ef8e2ebfda6e43240051a7af9417092b2af50ece8b5c6c3fbd908ba91c4fe068"; + }; + + buildInputs = [ocaml fuse postgresql pcre + e2fsprogs gnomevfs pkgconfig GConf]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +let build = FullDepEntry (" + cd deps + sed -e 's/^CPP/#&/ ; s/^# CPP=gcc/CPP=gcc/' -i Makefile.camlidl + make + cd ../src + sed -e 's/NULL\\|FALSE/0/g' -i Mimetype_lib.c + sed -e 's@/usr/local/@'\$out/'@' -i Makefile + sed -e '/install:/a\\\tmkdir -p '\$out'/share' -i Makefile + make + mkdir -p \$out/bin + echo 'dropdb relfs_\$1 ; + rm -rf /tmp/relfs-\$1-tmp; + mkdir /tmp/relfs-\$1-tmp; + USER=\$1 relfs -f -s /tmp/relfs-raskin-tmp & + sleep 1 && + kill -15 \${!}; + rm -rf /tmp/relfs-\$1-tmp ; + psql -d relfs_\$1 <<< \"ALTER DATABASE relfs_raskin OWNER TO raskin; + ALTER TABLE obj OWNER TO \$1; + ALTER TABLE obj_mimetype OWNER TO \$1; + ALTER TABLE membership OWNER TO \$1;\"' > \$out/bin/relfs_grant; + chmod a+x \$out/bin/relfs_grant; +") [minInit doUnpack addInputs]; +in +stdenv.mkDerivation rec { + name = "relfs-"+version; + builder = writeScript (name + "-builder") + (textClosure [build doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Relational FS over FUSE. +"; + }; +} diff --git a/pkgs/tools/networking/openssh/default.nix b/pkgs/tools/networking/openssh/default.nix index 12e1594fdfb..2802ac887aa 100644 --- a/pkgs/tools/networking/openssh/default.nix +++ b/pkgs/tools/networking/openssh/default.nix @@ -24,6 +24,7 @@ stdenv.mkDerivation { preConfigure = " configureFlags=\"$configureFlags --with-privsep-path=$out/empty\" ensureDir $out/empty + substituteInPlace pathnames.h --replace 'SSHDIR \"/ssh_config\"' '\"/etc/ssh/ssh_config\"' "; postInstall = " diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6977679bb2c..e38513d65a7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -204,7 +204,7 @@ rec { args: with args.lib; with args; if ( builtins.isAttrs extraAttrs ) then builtins.throw "the argument extraAttrs needs to be a function beeing passed co, but attribute set passed " else - let co = chooseOptionsByFlags { inherit args flagConfig optionals defaults collectExtraPhaseActions; }; in + let co = lib_unstable.chooseOptionsByFlags { inherit args flagConfig optionals defaults collectExtraPhaseActions; }; in args.stdenv.mkDerivation ( { inherit (co) configureFlags buildInputs /*flags*/; @@ -672,6 +672,16 @@ rec { zlibSupport = !stdenv ? isDietLibC; }; + relfsFun = lib.sumArgs (selectVersion ../tools/misc/relfs) { + inherit fetchcvs stdenv ocaml postgresql fuse pcre + builderDefs e2fsprogs pkgconfig; + inherit (gnome) gnomevfs GConf; + }; + + relfs = relfsFun { + version = "cvs.2007.12.01"; + } null; + replace = import ../tools/text/replace { inherit fetchurl stdenv; }; @@ -972,7 +982,7 @@ rec { ghcsAndLibs = assert builtins ? listToAttrs; recurseIntoAttrs (import ../development/compilers/ghcs { - inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline; + inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline stdenv; inherit ghcPkgUtil; lib = lib_unstable; }); @@ -1013,10 +1023,10 @@ rec { ghc = ghc661; ghc68 = lowPrio (import ../development/compilers/ghc-6.8 { - inherit fetchurl stdenv readline perl gmp ncurses libxml2 libxslt pkgconfig; + inherit fetchurl stdenv readline perl gmp ncurses pkgconfig; + inherit (gtkLibs) gtk; m4 = gnum4; ghc = ghcboot; - inherit (gtkLibs) gtk; }); ghc661 = import ../development/compilers/ghc-6.6.1 { @@ -1229,7 +1239,7 @@ rec { # perhaps this can be done setting php_value in apache don't have time to investigate any further ? # This expression is a quick hack now. But perhaps it helps you adding the configuration flags you need? php = (import ../development/interpreters/php_configurable) { - inherit mkDerivationByConfiguration; + inherit mkDerivationByConfiguration stdenv; lib = lib_unstable; inherit fetchurl flex bison apacheHttpd; # gettext; mysql = mysql5; @@ -1489,6 +1499,11 @@ rec { inherit fetchurl stdenv; }); + # couldn't find the source yet + selenium_rc_binary = import ../development/tools/selenium/remote-control { + inherit fetchurl stdenv unzip; + }; + scons = import ../development/tools/build-managers/scons { inherit fetchurl stdenv python; }; @@ -1651,6 +1666,10 @@ rec { inherit fetchurl stdenv; }; + ctl = import ../development/libraries/ctl { + inherit fetchurl stdenv ilmbase; + }; + cppunit = import ../development/libraries/cppunit { inherit fetchurl stdenv; }; @@ -1726,7 +1745,7 @@ rec { }; ffmpeg_svn = import ../development/libraries/ffmpeg_svn_snapshot { - inherit fetchurl stdenv; + inherit fetchsvn stdenv; }; fftw = import ../development/libraries/fftw { @@ -1734,13 +1753,12 @@ rec { }; - # commented out because it's using the new configuration style proposal which is unstable - # needs some testing .. - #fltk20 = (import ../development/libraries/fltk) { - #inherit fetchurl stdenv lib mesa mesaHeaders libpng libjpeg zlib ; - #inherit (xlibs) libX11 libXext; - #flags = [ "useNixLibs" "threads" "shared" ]; - #}; + fltk20 = (import ../development/libraries/fltk) { + inherit mkDerivationByConfiguration x11; + inherit fetchurl stdenv mesa mesaHeaders libpng libjpeg zlib ; + flags = [ "useNixLibs" "threads" "shared" "gl" ]; + lib = lib_unstable; + }; fontconfig = import ../development/libraries/fontconfig { inherit fetchurl stdenv freetype expat; @@ -1762,6 +1780,15 @@ rec { inherit fetchurl stdenv; }; + geos = import ../development/libraries/geos { + lib = lib_unstable; + inherit fetchurl fetchsvn stdenv mkDerivationByConfiguration autoconf automake libtool swig which; + use_svn = stdenv.system == "x86_64-linux"; + python = python; + # optional features: + # python / ruby support + }; + gettext = getVersion "gettext" gettext_alts; gettext_alts = import ../development/libraries/gettext { @@ -1818,6 +1845,11 @@ rec { inherit fetchurl stdenv libgpgerror gnupg; }; + # gnu scientific library + gsl = import ../development/libraries/gsl { + inherit fetchurl stdenv; + }; + gtkLibs = recurseIntoAttrs gtkLibs210; gtkLibs1x = import ../development/libraries/gtk-libs-1.x { @@ -2019,9 +2051,9 @@ rec { }; # commented out because it's using the new configuration style proposal which is unstable - #libsamplerate = (import ../development/libraries/libsamplerate) { - # inherit fetchurl stdenv mkDerivationByConfigruation pkgconfig lib; - #}; + libsamplerate = if builtins ? listToAttrs then (import ../development/libraries/libsamplerate) { + inherit fetchurl stdenv mkDerivationByConfiguration pkgconfig lib; + } else null; libgsf = import ../development/libraries/libgsf { inherit fetchurl stdenv perl perlXMLParser pkgconfig libxml2 gettext bzip2 @@ -2214,13 +2246,21 @@ rec { inherit fetchurl stdenv zlib libxml2; }; + # this ctl version is needed by openexr_viewers + openexr_ctl = import ../development/libraries/openexr_ctl { + inherit fetchurl stdenv ilmbase ctl; + openexr = openexr_1_6_1; + }; + openexr_1_6_1 = import ../development/libraries/openexr { - inherit fetchurl stdenv ilmbase zlib pkgconfig; + inherit fetchurl stdenv ilmbase zlib pkgconfig lib; version = "1.6.1"; + # optional features: + inherit ctl; }; # This older version is needed by blender (it complains about missing half.h ) openexr_1_4_0 = import ../development/libraries/openexr { - inherit fetchurl stdenv ilmbase zlib pkgconfig; + inherit fetchurl stdenv ilmbase zlib pkgconfig lib; version = "1.4.0"; }; @@ -2240,7 +2280,6 @@ rec { pcre = import ../development/libraries/pcre { inherit fetchurl stdenv; unicodeSupport = getFlag "unicode" "pcre" false; - cplusplusSupport = !stdenv ? isDietLibC; }; poppler = import ../development/libraries/poppler { @@ -2256,6 +2295,11 @@ rec { inherit fetchurl stdenv gettext libtool autoconf automake; }; + + proj = import ../development/libraries/proj.4 { + inherit fetchurl stdenv; + }; + qt3 = import ../development/libraries/qt-3 { inherit fetchurl stdenv x11 zlib libjpeg libpng which mysql mesa; inherit (xlibs) xextproto libXft libXrender libXrandr randrproto @@ -3146,6 +3190,13 @@ rec { stdenv = overrideGCC stdenv gcc34; }; + /* compiles but has to be integrated into the kernel somehow + ndiswrapper = import ../os-specific/linux/ndiswrapper { + inherit fetchurl stdenv; + inherit kernel; + }; + */ + nettools = import ../os-specific/linux/net-tools { inherit fetchurl stdenv; }; @@ -3276,6 +3327,10 @@ rec { inherit fetchurl stdenv; }; + upstartJobControl = import ../os-specific/linux/upstart/jobcontrol.nix { + inherit stdenv; + }; + usbutils = import ../os-specific/linux/usbutils { inherit fetchurl stdenv libusb; }; @@ -3284,6 +3339,10 @@ rec { inherit fetchurl stdenv; }; + utillinuxCurses = import ../os-specific/linux/util-linux { + inherit fetchurl stdenv ncurses; + }; + utillinuxStatic = lowPrio (appendToName "static" (import ../os-specific/linux/util-linux { inherit fetchurl; stdenv = makeStaticBinaries stdenv; @@ -3436,13 +3495,12 @@ rec { }; blender = import ../applications/misc/blender { inherit cmake mesa gettext freetype SDL libtiff fetchurl glibc scons x11 - libjpeg libpng zlib /* smpeg sdl */; + libjpeg libpng zlib stdenv /* smpeg sdl */; inherit (xlibs) inputproto libXi; lib = lib_unstable; - python = python_alts.v_2_5; + python = builtins.getAttr "2.5" python_alts; freealut = freealut_soft; openal = openalSoft; - stdenv = stdenvUsingSetupNew2; openexr = openexr_1_4_0; }; @@ -3628,6 +3686,12 @@ rec { xftSupport = true; }; + exrdisplay = import ../applications/graphics/exrdisplay { + inherit fetchurl stdenv pkgconfig mesa which openexr_ctl; + fltk = fltk20; + openexr = openexr_1_6_1; + }; + fbpanelFun = lib.sumArgs (selectVersion ../applications/window-managers/fbpanel) { inherit fetchurl stdenv builderDefs pkgconfig libpng libjpeg libtiff librsvg; inherit (gtkLibs) gtk; @@ -4045,9 +4109,9 @@ rec { } null; # commented out because it's using the new configuration style proposal which is unstable - /* - sox = import ../applications/misc/audio/sox { - inherit fetchurl stdenv lib mkDerivationByConfigruation; + + sox = if builtins ? listToAttrs then import ../applications/misc/audio/sox { + inherit fetchurl stdenv lib mkDerivationByConfiguration; # optional features inherit alsaLib; # libao inherit libsndfile libogg flac libmad lame libsamplerate; @@ -4056,8 +4120,8 @@ rec { # /tmp/nix-7957-1/sox-14.0.0/src/ffmpeg.c:130: undefined reference to `avcodec_decode_audio2 # That's why I'v added ffmpeg_svn ffmpeg = ffmpeg_svn; - }; - */ + } else null; + spoofax = import ../applications/editors/eclipse/plugins/spoofax { inherit fetchurl stdenv; @@ -4188,7 +4252,7 @@ rec { xara = import ../applications/graphics/xara { inherit fetchurl stdenv autoconf automake libtool gettext cvs wxGTK - pkgconfig libxml2 zip libpng libjpeg; + pkgconfig libxml2 zip libpng libjpeg shebangfix perl freetype; inherit (gtkLibs) gtk; }; @@ -4280,6 +4344,16 @@ rec { ### GAMES + construoFun = lib.sumArgs (selectVersion ../games/construo) { + inherit stdenv fetchurl builderDefs + zlib; + inherit (xlibs) libX11 xproto; + }; + + construo = construoFun { + inherit mesa freeglut; + version = "0.2.2"; + } null; exult = import ../games/exult { inherit fetchurl SDL SDL_mixer zlib libpng unzip; diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix index 94f83b9c06f..df7df3e71a0 100644 --- a/pkgs/top-level/builder-defs.nix +++ b/pkgs/top-level/builder-defs.nix @@ -12,6 +12,7 @@ args: with args; with stringsWithDeps; with lib; else if (hasSuffixHack ".tar.gz" s) || (hasSuffixHack ".tgz" s) then "tgz" else if (hasSuffixHack ".tar.bz2" s) || (hasSuffixHack ".tbz2" s) then "tbz2" else if (hasSuffixHack ".zip" s) || (hasSuffixHack ".ZIP" s) then "zip" + else if (hasSuffixHack "-cvs-export" s) then "cvs-dir" else (abort "unknown archive type : ${s}")); defAddToSearchPath = FullDepEntry (" @@ -175,6 +176,10 @@ args: with args; with stringsWithDeps; with lib; unzip '${s}' cd \"$( unzip -lqq '${s}' | tail -1 | sed -e 's@^\\(\\s\\+[-0-9:]\\+\\)\\{3,3\\}\\s\\+\\([^/]\\+\\)/.*@\\2@' )\" + " else if (archiveType s) == "cvs-dir" then " + cp -r '${s}' . + cd \$(basename ${s}) + chmod u+rwX -R . " else (abort "unknown archive type : ${s}"))+ (if args ? goSrcDir then args.goSrcDir else "") ) [minInit]; From b5b3671318e25466e9f71ec91330a70751b44767 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 15:21:56 +0000 Subject: [PATCH 090/320] removed unused file svn path=/nixpkgs/branches/stdenv-updates/; revision=9896 --- pkgs/development/compilers/ghc-6.8/d.nix | 37 ------------------------ 1 file changed, 37 deletions(-) delete mode 100644 pkgs/development/compilers/ghc-6.8/d.nix diff --git a/pkgs/development/compilers/ghc-6.8/d.nix b/pkgs/development/compilers/ghc-6.8/d.nix deleted file mode 100644 index a011405f541..00000000000 --- a/pkgs/development/compilers/ghc-6.8/d.nix +++ /dev/null @@ -1,37 +0,0 @@ - -stdenv.mkDerivation (rec { - homepage = "http://www.haskell.org/ghc"; - - src = map fetchurl [ - { url = "${homepage}/dist/stable/dist/${name}-src.tar.bz2"; - } - { url = "${homepage}/dist/stable/dist/${name}-src-extralibs.tar.bz2"; - } - ]; - - - setupHook = ./setup-hook.sh; - - meta = { - }; - - postInstall = " - ensureDir \"$out/nix-support\" - echo \"# Path to the GHC compiler directory in the store\" > $out/nix-support/setup-hook - echo \"ghc=$out\" >> $out/nix-support/setup-hook - echo \"\" >> $out/nix-support/setup-hook - cat $setupHook >> $out/nix-support/setup-hook - "; - - patch64 = ./x86_64-linux_patch; - - # Thanks to Ian Lynagh ghc now works on x86_64-linux as well - patchPhase = if (stdenv.system == "x86_64-linx") then "patch -p2 < $patch64" else ""; - - - # the presence of this file makes Cabal cry for happy while generating makefiles ... - preConfigure = " - echo 'GhcThreaded=NO' > mk/build.mk - rm libraries/haskell-src/Language/Haskell/Parser.ly - "; -}) From f4464f2193a6780b8f9b03c554a6742f81b04847 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 8 Dec 2007 23:33:16 +0000 Subject: [PATCH 091/320] Added prefix patch to ndiswrapper svn path=/nixpkgs/branches/stdenv-updates/; revision=9897 --- .../os-specific/linux/ndiswrapper/default.nix | 10 ++- .../linux/ndiswrapper/prefix.patch | 78 +++++++++++++++++++ 2 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 pkgs/os-specific/linux/ndiswrapper/prefix.patch diff --git a/pkgs/os-specific/linux/ndiswrapper/default.nix b/pkgs/os-specific/linux/ndiswrapper/default.nix index 0d8b351e58b..5138ae4f9b8 100644 --- a/pkgs/os-specific/linux/ndiswrapper/default.nix +++ b/pkgs/os-specific/linux/ndiswrapper/default.nix @@ -1,6 +1,5 @@ -args: -with args; -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "ndiswrapper-1.49-stable"; # need at least .config and include @@ -16,7 +15,10 @@ args.stdenv.mkDerivation { sha256 = "1b9nqkk7gv6gffzj9b8mjy5myxf2afwpyr2n5wbfsylf15dvvvjr"; }; - buildInputs =(with args; [kernelHeaders kernel]); + buildInputs =[kernelHeaders kernel]; + + # this is a patch against svn head, not stable version + patches = [./prefix.patch]; meta = { description = "Ndis driver wrapper for the Linux kernel"; diff --git a/pkgs/os-specific/linux/ndiswrapper/prefix.patch b/pkgs/os-specific/linux/ndiswrapper/prefix.patch new file mode 100644 index 00000000000..7d44c4fe757 --- /dev/null +++ b/pkgs/os-specific/linux/ndiswrapper/prefix.patch @@ -0,0 +1,78 @@ +diff --git a/ndiswrapper/driver/Makefile b/ndiswrapper/driver/Makefile +index b0c2a9d..8907a05 100644 +--- a/ndiswrapper/driver/Makefile ++++ b/ndiswrapper/driver/Makefile +@@ -119,6 +119,10 @@ ifdef WRAP_PREEMPT + MOD_CFLAGS += -DWRAP_PREEMPT + endif + ++ifdef DIST_DESTDIR ++MOD_CFLAGS += -DPREFIX=\"$(DIST_DESTDIR)\" ++endif ++ + .PHONY: prereq_check gen_exports clean dist_clean install stack_check + + all : prereq_check win2lin_stubs.h gen_exports compat.h default stack_check +@@ -355,7 +359,7 @@ install: prereq_check win2lin_stubs.h gen_exports compat.h default stack_check + echo $(INST_DIR) + mkdir -p $(INST_DIR) + install -m 0644 $(MODULE) $(INST_DIR) +- -@/bin/rm -rf $(SRC_DIR)/.tmp_versions ++ -@rm -rf $(SRC_DIR)/.tmp_versions + ifndef DIST_DESTDIR + -/sbin/depmod -a $(KVERS) -b $(DESTDIR) + endif +diff --git a/ndiswrapper/driver/loader.c b/ndiswrapper/driver/loader.c +index 930606f..9a8e9f0 100644 +--- a/ndiswrapper/driver/loader.c ++++ b/ndiswrapper/driver/loader.c +@@ -106,7 +106,7 @@ struct wrap_driver *load_wrap_driver(struct wrap_device *wd) + EXIT1(return NULL); + } + INIT_COMPLETION(loader_complete); +- ret = call_usermodehelper("/sbin/loadndisdriver", argv, env ++ ret = call_usermodehelper(USERMOD_HELPER, argv, env + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + , 1 + #endif +@@ -272,7 +272,7 @@ struct wrap_bin_file *get_bin_file(char *bin_file_name) + EXIT1(return NULL); + } + INIT_COMPLETION(loader_complete); +- ret = call_usermodehelper("/sbin/loadndisdriver", argv, env ++ ret = call_usermodehelper(USERMOD_HELPER, argv, env + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + , 1 + #endif +@@ -711,7 +711,7 @@ struct wrap_device *load_wrap_device(struct load_device *load_device) + EXIT1(return NULL); + } + INIT_COMPLETION(loader_complete); +- ret = call_usermodehelper("/sbin/loadndisdriver", argv, env ++ ret = call_usermodehelper(USERMOD_HELPER, argv, env + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + , 1 + #endif +diff --git a/ndiswrapper/driver/ndiswrapper.h b/ndiswrapper/driver/ndiswrapper.h +index 4a78dc6..c11a074 100644 +--- a/ndiswrapper/driver/ndiswrapper.h ++++ b/ndiswrapper/driver/ndiswrapper.h +@@ -19,8 +19,17 @@ + #define DRIVER_VERSION "1.50" + #define UTILS_VERSION "1.9" + ++#ifndef PREFIX ++#define PREFIX ++#endif ++ + #define DRIVER_NAME "ndiswrapper" +-#define DRIVER_CONFIG_DIR "/etc/ndiswrapper" ++ ++#ifndef DRIVER_CONFIG_DIR ++# define DRIVER_CONFIG_DIR PREFIX "/etc/ndiswrapper" ++#endif ++ ++#define USERMOD_HELPER PREFIX "/sbin/loadndisdriver" + + #define SSID_MAX_WPA_IE_LEN 40 + #define NDIS_ESSID_MAX_SIZE 32 From 8c23c4a8a17b8a832fba1aaf5d4adb44f90e4f0c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 12 Dec 2007 00:20:42 +0000 Subject: [PATCH 092/320] kde4-support: new svn revision svn path=/nixpkgs/branches/stdenv-updates/; revision=9912 --- pkgs/desktops/kde-4/support/akode.nix | 8 +--- pkgs/desktops/kde-4/support/default.nix | 44 +++++++-------------- pkgs/desktops/kde-4/support/eigen.nix | 8 +--- pkgs/desktops/kde-4/support/gmm.nix | 8 +--- pkgs/desktops/kde-4/support/qca.nix | 9 +---- pkgs/desktops/kde-4/support/qimageblitz.nix | 8 +--- pkgs/desktops/kde-4/support/soprano.nix | 8 +--- pkgs/desktops/kde-4/support/strigi.nix | 8 +--- pkgs/desktops/kde-4/support/taglib.nix | 8 +--- 9 files changed, 23 insertions(+), 86 deletions(-) diff --git a/pkgs/desktops/kde-4/support/akode.nix b/pkgs/desktops/kde-4/support/akode.nix index 1385def6b55..8fdf6736572 100644 --- a/pkgs/desktops/kde-4/support/akode.nix +++ b/pkgs/desktops/kde-4/support/akode.nix @@ -2,12 +2,6 @@ args: with args; stdenv.mkDerivation { name = "akode-2.0.0dev"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/akode; - rev = 732646; - md5 = "6629ffedc42c020d2e8645910a4efdf5"; - }; - + src = svnSrc "akode" "0xkzv386wvh16njjv8z84mg3czp7j7n60lwhwns5fwqhx1s30h5y"; buildInputs = [ cmake qt openssl gettext cyrus_sasl alsaLib ]; } diff --git a/pkgs/desktops/kde-4/support/default.nix b/pkgs/desktops/kde-4/support/default.nix index af1dc175bed..426a5811bd7 100644 --- a/pkgs/desktops/kde-4/support/default.nix +++ b/pkgs/desktops/kde-4/support/default.nix @@ -1,36 +1,22 @@ -args: +oldArgs: +let + args = oldArgs // { + svnSrc = name: hash: + oldArgs.fetchsvn { + url = "svn://anonsvn.kde.org/home/kde/trunk/kdesupport/${name}"; + rev = 747269; + sha256 = hash; + }; + }; +in rec { - qca = (import ./qca.nix) args; akode = (import ./akode.nix) args; - gmm = (import ./gmm.nix) args; eigen = (import ./eigen.nix) args; - taglib = (import ./taglib.nix) args; + gmm = (import ./gmm.nix) args; + qca = (import ./qca.nix) args; + qimageblitz = (import ./qimageblitz.nix) args; soprano = (import ./soprano.nix) args; strigi = (import ./strigi.nix) args; - qimageblitz = (import ./qimageblitz.nix) args; + taglib = (import ./taglib.nix) args; all = [qca gmm eigen taglib soprano strigi qimageblitz]; } -#args: with args; -# -#stdenv.mkDerivation { -# name = "kdesupport-4.0svn-r729462"; -# -# src = fetchsvn { -# url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport; -# rev = 729462; -# md5 = "aa50ec8e5c8d49e1dfd53143345cb4b3"; -# }; -# -# propagatedBuildInputs = [ -# exiv2 -# cmake inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto -# xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor -# libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr -# libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib -# perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat -# libtool freetype bzip2 shared_mime_info alsaLib libungif cups -# gettext cluceneCore redland stdenv.gcc.libc dbus bison cppunit -# ]; -# CLUCENE_HOME=cluceneCore; -# patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../qca/CMakeLists.txt"; -#} diff --git a/pkgs/desktops/kde-4/support/eigen.nix b/pkgs/desktops/kde-4/support/eigen.nix index a3ac9eff391..163683a2921 100644 --- a/pkgs/desktops/kde-4/support/eigen.nix +++ b/pkgs/desktops/kde-4/support/eigen.nix @@ -2,12 +2,6 @@ args: with args; stdenv.mkDerivation { name = "eigen-1.0.5"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/eigen; - rev = 732646; - md5 = "f91ad5d3dd992984fb61107fd9050a36"; - }; - + src = svnSrc "eigen" "0dr2gzrf17bdgxj4f9ibk7x5j7fqwwjsl800dzfvrhgj6v1mxm4x"; buildInputs = [ cmake ]; } diff --git a/pkgs/desktops/kde-4/support/gmm.nix b/pkgs/desktops/kde-4/support/gmm.nix index d32c9b9f765..843f9f6aaed 100644 --- a/pkgs/desktops/kde-4/support/gmm.nix +++ b/pkgs/desktops/kde-4/support/gmm.nix @@ -2,12 +2,6 @@ args: with args; stdenv.mkDerivation { name = "gmm-svn"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/gmm; - rev = 732646; - md5 = "09ee4cfcbb3c428bc681c2da022648bf"; - }; - + src = svnSrc "gmm" "0qvx9jf17z0mpwy8k6w6bla94gkkslkiv5w98aajfcq34n0zxcpc"; buildInputs = [ cmake ]; } diff --git a/pkgs/desktops/kde-4/support/qca.nix b/pkgs/desktops/kde-4/support/qca.nix index 64b00da91ce..fda435c7bff 100644 --- a/pkgs/desktops/kde-4/support/qca.nix +++ b/pkgs/desktops/kde-4/support/qca.nix @@ -2,14 +2,7 @@ args: with args; stdenv.mkDerivation { name = "qca-2.0.0dev"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/qca; - rev = 732646; - md5 = "1df54bf3bf327b14ea1948f9080717c3"; - }; - + src = svnSrc "qca" "0dycmk8fn57mz2pfxck6d0g833fqg9zrw17789vxb4ks0xz0p3zp"; buildInputs = [ cmake qt openssl gettext cyrus_sasl libgcrypt gnupg ]; - patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../CMakeLists.txt"; } diff --git a/pkgs/desktops/kde-4/support/qimageblitz.nix b/pkgs/desktops/kde-4/support/qimageblitz.nix index fe6a03ca7c7..3364b4eac5d 100644 --- a/pkgs/desktops/kde-4/support/qimageblitz.nix +++ b/pkgs/desktops/kde-4/support/qimageblitz.nix @@ -2,12 +2,6 @@ args: with args; stdenv.mkDerivation { name = "qimageblitz-4.0.0svn"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/qimageblitz; - rev = 732646; - md5 = "c37fa505368071ec501e966225e30c78"; - }; - + src = svnSrc "qimageblitz" "0gi78bald70bc540jqcpa70x23hycywibn4raf5602hv4d5n8mnx"; buildInputs = [cmake qt]; } diff --git a/pkgs/desktops/kde-4/support/soprano.nix b/pkgs/desktops/kde-4/support/soprano.nix index 0f453d726d7..0cb490b9db7 100644 --- a/pkgs/desktops/kde-4/support/soprano.nix +++ b/pkgs/desktops/kde-4/support/soprano.nix @@ -2,13 +2,7 @@ args: with args; stdenv.mkDerivation { name = "soprano-1.9.0svn"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/soprano; - rev = 732646; - md5 = "c3b43544536f0f8061e4afeb9e368072"; - }; - + src = svnSrc "soprano" "02xfp7g41ahxwczkxipyi13rav6akhwgspxdhgk5gm94rg10hq2l"; CLUCENE_HOME=cluceneCore; buildInputs = [ cmake qt cluceneCore redland ]; } diff --git a/pkgs/desktops/kde-4/support/strigi.nix b/pkgs/desktops/kde-4/support/strigi.nix index f0e0fe614be..d1ec98ea25f 100644 --- a/pkgs/desktops/kde-4/support/strigi.nix +++ b/pkgs/desktops/kde-4/support/strigi.nix @@ -2,13 +2,7 @@ args: with args; stdenv.mkDerivation { name = "strigi-svn"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/strigi; - rev = 732646; - md5 = "15762f5a406ef84bc1cdd776b2ca9a82"; - }; - + src = svnSrc "strigi" "0dp145n93bqp91lvk2n10mghppyhdm3anh1l3a18d20hrvsm42z5"; CLUCENE_HOME=cluceneCore; buildInputs = [ cmake zlib cluceneCore bzip2 libxml2 qt dbus log4cxx stdenv.gcc.libc exiv2 bison cppunit perl ]; diff --git a/pkgs/desktops/kde-4/support/taglib.nix b/pkgs/desktops/kde-4/support/taglib.nix index 6aecb7a91ef..9a2acc96636 100644 --- a/pkgs/desktops/kde-4/support/taglib.nix +++ b/pkgs/desktops/kde-4/support/taglib.nix @@ -2,12 +2,6 @@ args: with args; stdenv.mkDerivation { name = "taglib-1.4svn"; - - src = fetchsvn { - url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib; - rev = 732646; - md5 = "647d68a76858cf3a667656c486b0a8c2"; - }; - + src = svnSrc "taglib" "1myfgykflbs3l1mrzg4iv8rb1mbd0vpmzl5dnnslfi9b0xg6ydip"; buildInputs = [ cmake zlib ]; } From e19b3d7f79b332fa81802973e0025f2050d7971b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 12 Dec 2007 00:20:50 +0000 Subject: [PATCH 093/320] clisp: upgraded to 2.43 (both versions do not work on stdenv-updates branch) svn path=/nixpkgs/branches/stdenv-updates/; revision=9913 --- .../interpreters/clisp/default.nix | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/pkgs/development/interpreters/clisp/default.nix b/pkgs/development/interpreters/clisp/default.nix index 919862378a1..db2506ae8c7 100644 --- a/pkgs/development/interpreters/clisp/default.nix +++ b/pkgs/development/interpreters/clisp/default.nix @@ -1,15 +1,14 @@ -args: -args.stdenv.mkDerivation { - name = "clisp-2.41a"; +args: with args; +stdenv.mkDerivation { + name = "clisp-2.43"; builder = ./builder.sh; - src = args. + src = fetchurl { - url = mirror://gnu/clisp/release/2.41/clisp-2.41a.tar.bz2; - sha256 = "08z35bni42dhlqlsg5rr5p025961fl82gqvaadrf0jh20jdqspqy"; + url = mirror://gnu/clisp/release/2.43/clisp-2.43.tar.bz2; + sha256 = "10qyn6wccnayf1cyvrcanay6c6laar6z1r608w7ijp6nb763q8dm"; }; - inherit (args) libsigsegv gettext coreutils; - buildInputs = (with args; - [libsigsegv gettext ncurses readline libX11 libXau - libXt pcre zlib]); + inherit libsigsegv gettext coreutils; + buildInputs = [libsigsegv gettext ncurses readline libX11 libXau + libXt pcre zlib]; } From ccb13fd637b24bf04000857f4513c2c747705ae1 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 12 Dec 2007 00:20:58 +0000 Subject: [PATCH 094/320] openalSoft: nix-expr cleanup svn path=/nixpkgs/branches/stdenv-updates/; revision=9914 --- pkgs/development/libraries/openalSoft/default.nix | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pkgs/development/libraries/openalSoft/default.nix b/pkgs/development/libraries/openalSoft/default.nix index dae9e90522c..b42e733ea8f 100644 --- a/pkgs/development/libraries/openalSoft/default.nix +++ b/pkgs/development/libraries/openalSoft/default.nix @@ -1,20 +1,17 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { #The current release is still in a testing phase, though it should be stable # (neither the ABI or API will break). Please try it out and let me know how it # works. :-) name = "openal-soft-testing"; - src = args.fetchurl { - url = http://kcat.strangesoft.net/OpenAL.tar.bz2?2; + src = fetchurl { + url = http://kcat.strangesoft.net/OpenAL.tar.bz2; sha256 = "7b53c3e6eda1a71010651eb058c71c9b0c86b3c15cae5f0ffeeb7222531aa97d"; }; - buildInputs =(with args; [cmake alsaLib]); - #phases = "buildPhase installPhase"; - - buildPhase = "ensureDir \$out; cmake -DCMAKE_INSTALL_PREFIX:PATH=\$out .; make; make install;"; + buildInputs = [cmake alsaLib]; meta = { description = "openal alternative"; From 8dd9e323ff658e34983add17df99bcdedadd540b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 12 Dec 2007 00:21:12 +0000 Subject: [PATCH 095/320] qt-4: 4.3.3 and sv-746559 svn path=/nixpkgs/branches/stdenv-updates/; revision=9915 --- .../development/libraries/qt-4/.default.nix.swp | Bin 0 -> 12288 bytes pkgs/development/libraries/qt-4/default.nix | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 pkgs/development/libraries/qt-4/.default.nix.swp diff --git a/pkgs/development/libraries/qt-4/.default.nix.swp b/pkgs/development/libraries/qt-4/.default.nix.swp new file mode 100644 index 0000000000000000000000000000000000000000..0e8df16d5e854f37afa8f5fe259e20769cb945f0 GIT binary patch literal 12288 zcmYc?2=nw+FxN9=U|?VnU|?`&igEWi!_VN)#lTQnlwFzv5+{I5i<0v5vk53-U|`Ts zElJkT%dE&R29X8X>BahBA|p@FiJqJpqcC=P|A!lNND8UmvsFd71*Aut*O zqaiRF0;3@?8Un*L1WF1R8U8acFfcJNFsLywFfc;#aP{w~zeYn~Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtrF^Kw=65!$VF6hF&hn{6A<6;5|PB!y|qMhCBQW47>Rm z81nfU7?k-L7_Rd%Fl^*wV3^Lwz|h3Uz!1g9z@Wm%z`)MOz;Ke6fngOd149Kb1H&I4 z28M4u3=AK57#I%mFfgp)VPKfS!@%Ih!@$7K!@$7E!@zKln}OjbHv_{)ZU%;F+zbp& z+zbp}+zbq6+zbpKxfmE;b1^V1;bLHz&&9yd&joQ`3&@QlF_K38JQ@O{Aut*OqaiRF z0;3@?8Un*D1Zo*L!3#ZMbWVwatwMH6sx<>=t)?{tr-DL3Vo7pFKt^J5s)DV8Qf_ui zW|4wkaao?VLQ-OJhC*UNK~7~nSW#-RwUUCiLUMj?ZhoE~SO}~SY)q{+11G0~LUBf- zk*OKTB!iqRqrw8CLIdMmbEE8vl*F8(LbI&2%AyKmG~P@ zxvBcuDXID;MWuP!pyjQ}`303=XB8JEE7&TerIsXT6qn^GRD*n+mzWFoYhj6Qc1o(Q ziJozBSsuum>=clAaY;&QUYTBQwo7VJW?5oMW`3T62E@|}`uZRvu!S5%0oG7K3X^h! z+_YSS^77oIEW@(AtUM$0qN+s0BFpkDi)<6~+&s&o%p8m2@`9qYw8FeRlLC`+i2otJ zPb(>~($`NbDbOn^%FoFuNlnhsOU}>LFD%h7&Mz%WP6c_r!q8ARzaTXaBBEPdlnnBr zp0Qp@Vv$~Y6?&+EOhykC6Fp-+V^Dy=tpNo+pi3)3c9HZ z>ctNFNtt>21?4FYAgr#So2ihTpO==IURsoDt$?Jgw7AGY-_76O0ZENsNosLPvA&kR z7MKOnoSR)-keUn;0~w@b&7h#5prD(UpH~9nXQnIYda6{X6{V(@R2HPx>SyL9=aicd2gU^)s@l1hsebdyU9iWPLzb25_@bSu&_D^iOg27-b#Jx4*eq9`>lCAA2|NX$zC z(V2OvMTxnI3c3}^rA5X0MGCrwCA!6hIl8%(#f3Q#-GwE(>6vK?x?m?25g1i7G41<8WKr#vGwIYS{g zwKx&%ul$0<^u&_X6sOY6oD@%xJs>|vgB+Yz0@4!!jXjV^5jg(9B*eyw)C#z}ic?EU z3q11kvlVO=^z^|z-HiPFY`x+PYXt=cNLtTHErFJX3bqW1Md`&>3gww4844h#H3I;p C Date: Wed, 12 Dec 2007 00:21:18 +0000 Subject: [PATCH 096/320] Removed legacy getFlag function svn path=/nixpkgs/branches/stdenv-updates/; revision=9916 --- pkgs/top-level/all-packages.nix | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e38513d65a7..126848d3902 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -154,11 +154,6 @@ rec { version = getConfig [ "environment" "versions" name ]; }; - # Whether user enabled given feature for the given package? - getFlag = flag: package: default: - getConfig [ "environment" "flags" package flag ] - (getConfig [ "environment" "flags" "default" flag ] default); - # The contents of the configuration file found at $NIXPKGS_CONFIG or # $HOME/.nixpkgs/config.nix. config = @@ -2279,7 +2274,7 @@ rec { pcre = import ../development/libraries/pcre { inherit fetchurl stdenv; - unicodeSupport = getFlag "unicode" "pcre" false; + unicodeSupport = getConfig ["pcre" "unicode"] false; }; poppler = import ../development/libraries/poppler { From 6f24ef9bc94bae49ad8d2022e96c3039fac15a5f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 12 Dec 2007 00:21:38 +0000 Subject: [PATCH 097/320] mysql: v5 is now default svn path=/nixpkgs/branches/stdenv-updates/; revision=9917 --- pkgs/top-level/all-packages.nix | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 126848d3902..9acb6e666e8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1234,10 +1234,9 @@ rec { # perhaps this can be done setting php_value in apache don't have time to investigate any further ? # This expression is a quick hack now. But perhaps it helps you adding the configuration flags you need? php = (import ../development/interpreters/php_configurable) { - inherit mkDerivationByConfiguration stdenv; + inherit mkDerivationByConfiguration stdenv mysql; lib = lib_unstable; inherit fetchurl flex bison apacheHttpd; # gettext; - mysql = mysql5; inherit libxml2; }; @@ -1995,8 +1994,7 @@ rec { libdbiDrivers = libdbiDriversFun { version = "0.8.2-1"; - mysql = mysql5; - inherit sqlite; + inherit sqlite mysql; } null; @@ -2857,12 +2855,12 @@ rec { inherit fetchurl stdenv apacheHttpd python; }; - mysql = import ../servers/sql/mysql { + mysql4 = import ../servers/sql/mysql { inherit fetchurl stdenv ncurses zlib perl; ps = procps; /* !!! Linux only */ }; - mysql5 = import ../servers/sql/mysql5 { + mysql = import ../servers/sql/mysql5 { inherit fetchurl stdenv ncurses zlib perl; ps = procps; /* !!! Linux only */ }; From 464b9d8cb390712706deb488abb4085223aa922c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 12 Dec 2007 00:22:01 +0000 Subject: [PATCH 098/320] kdelibs-4: 4rc2 svn path=/nixpkgs/branches/stdenv-updates/; revision=9918 --- pkgs/desktops/kde-4/libs/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix index 844e4a03320..cd484fa444c 100644 --- a/pkgs/desktops/kde-4/libs/default.nix +++ b/pkgs/desktops/kde-4/libs/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation rec { - name = "kdelibs-4.0beta4"; + name = "kdelibs-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdelibs-3.95.0.tar.bz2; - sha256 = "0960880wvwrj68r35knqjjxbqq90xzy1lqv526zyaymp7jc24ybc"; + url = mirror://kde/unstable/3.97/src/kdelibs-3.97.0.tar.bz2; + sha256 = "0g9r7nph6hpdvbmchvp0h5xk4z0da0b5rskqpbixdplsdxcs8xhv"; }; propagatedBuildInputs = [ From 0c8d30be0f52395505db757b4e829309d0045f93 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 12 Dec 2007 00:24:48 +0000 Subject: [PATCH 099/320] qt-4: removed unused files svn path=/nixpkgs/branches/stdenv-updates/; revision=9919 --- .../development/libraries/qt-4/.default.nix.swp | Bin 12288 -> 0 bytes pkgs/development/libraries/qt-4/builder.sh | 9 --------- 2 files changed, 9 deletions(-) delete mode 100644 pkgs/development/libraries/qt-4/.default.nix.swp delete mode 100755 pkgs/development/libraries/qt-4/builder.sh diff --git a/pkgs/development/libraries/qt-4/.default.nix.swp b/pkgs/development/libraries/qt-4/.default.nix.swp deleted file mode 100644 index 0e8df16d5e854f37afa8f5fe259e20769cb945f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmYc?2=nw+FxN9=U|?VnU|?`&igEWi!_VN)#lTQnlwFzv5+{I5i<0v5vk53-U|`Ts zElJkT%dE&R29X8X>BahBA|p@FiJqJpqcC=P|A!lNND8UmvsFd71*Aut*O zqaiRF0;3@?8Un*L1WF1R8U8acFfcJNFsLywFfc;#aP{w~zeYn~Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtrF^Kw=65!$VF6hF&hn{6A<6;5|PB!y|qMhCBQW47>Rm z81nfU7?k-L7_Rd%Fl^*wV3^Lwz|h3Uz!1g9z@Wm%z`)MOz;Ke6fngOd149Kb1H&I4 z28M4u3=AK57#I%mFfgp)VPKfS!@%Ih!@$7K!@$7E!@zKln}OjbHv_{)ZU%;F+zbp& z+zbp}+zbq6+zbpKxfmE;b1^V1;bLHz&&9yd&joQ`3&@QlF_K38JQ@O{Aut*OqaiRF z0;3@?8Un*D1Zo*L!3#ZMbWVwatwMH6sx<>=t)?{tr-DL3Vo7pFKt^J5s)DV8Qf_ui zW|4wkaao?VLQ-OJhC*UNK~7~nSW#-RwUUCiLUMj?ZhoE~SO}~SY)q{+11G0~LUBf- zk*OKTB!iqRqrw8CLIdMmbEE8vl*F8(LbI&2%AyKmG~P@ zxvBcuDXID;MWuP!pyjQ}`303=XB8JEE7&TerIsXT6qn^GRD*n+mzWFoYhj6Qc1o(Q ziJozBSsuum>=clAaY;&QUYTBQwo7VJW?5oMW`3T62E@|}`uZRvu!S5%0oG7K3X^h! z+_YSS^77oIEW@(AtUM$0qN+s0BFpkDi)<6~+&s&o%p8m2@`9qYw8FeRlLC`+i2otJ zPb(>~($`NbDbOn^%FoFuNlnhsOU}>LFD%h7&Mz%WP6c_r!q8ARzaTXaBBEPdlnnBr zp0Qp@Vv$~Y6?&+EOhykC6Fp-+V^Dy=tpNo+pi3)3c9HZ z>ctNFNtt>21?4FYAgr#So2ihTpO==IURsoDt$?Jgw7AGY-_76O0ZENsNosLPvA&kR z7MKOnoSR)-keUn;0~w@b&7h#5prD(UpH~9nXQnIYda6{X6{V(@R2HPx>SyL9=aicd2gU^)s@l1hsebdyU9iWPLzb25_@bSu&_D^iOg27-b#Jx4*eq9`>lCAA2|NX$zC z(V2OvMTxnI3c3}^rA5X0MGCrwCA!6hIl8%(#f3Q#-GwE(>6vK?x?m?25g1i7G41<8WKr#vGwIYS{g zwKx&%ul$0<^u&_X6sOY6oD@%xJs>|vgB+Yz0@4!!jXjV^5jg(9B*eyw)C#z}ic?EU z3q11kvlVO=^z^|z-HiPFY`x+PYXt=cNLtTHErFJX3bqW1Md`&>3gww4844h#H3I;p C Date: Sat, 15 Dec 2007 23:45:53 +0000 Subject: [PATCH 100/320] boost: compiles with gcc-4.2 svn path=/nixpkgs/branches/stdenv-updates/; revision=9945 --- pkgs/development/libraries/boost/default.nix | 1 + pkgs/development/libraries/boost/gcc-4.2.patch | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 pkgs/development/libraries/boost/gcc-4.2.patch diff --git a/pkgs/development/libraries/boost/default.nix b/pkgs/development/libraries/boost/default.nix index 5040a763ab8..fe4cdcf0337 100644 --- a/pkgs/development/libraries/boost/default.nix +++ b/pkgs/development/libraries/boost/default.nix @@ -10,5 +10,6 @@ stdenv.mkDerivation { preConfigure=" sed -e 's@^BJAM_CONFIG=\"\"@BJAM_CONFIG=\"--layout=system release threading=multi link=shared\"@g' -i configure "; + patches = [./gcc-4.2.patch]; configureFlags="--with-icu=${icu}"; } diff --git a/pkgs/development/libraries/boost/gcc-4.2.patch b/pkgs/development/libraries/boost/gcc-4.2.patch new file mode 100644 index 00000000000..6c2210d831d --- /dev/null +++ b/pkgs/development/libraries/boost/gcc-4.2.patch @@ -0,0 +1,11 @@ +Index: trunk/tools/jam/src/build.jam +=================================================================== +--- trunk/tools/jam/src/build.jam (revision 40095) ++++ trunk/tools/jam/src/build.jam (revision 41036) +@@ -176,5 +176,5 @@ + ## GCC 2.x, 3.x, 4.x + toolset gcc gcc : "-o " : -D +- : -pedantic ++ : -pedantic -fno-strict-aliasing + [ opt --release : [ opt --symbols : -g : -s ] -O3 ] + [ opt --debug : -g -O0 -fno-inline ] From 203083987fa5e75eca03182b5569e43a8ee4ded2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 15 Dec 2007 23:46:25 +0000 Subject: [PATCH 101/320] kde-4: rc2 svn path=/nixpkgs/branches/stdenv-updates/; revision=9946 --- pkgs/desktops/kde-4/base/default.nix | 10 ++++------ pkgs/desktops/kde-4/default.nix | 8 +++----- pkgs/desktops/kde-4/edu/default.nix | 9 ++++----- pkgs/desktops/kde-4/extragear/default.nix | 4 ++-- pkgs/desktops/kde-4/games/default.nix | 8 ++++---- pkgs/desktops/kde-4/graphics/default.nix | 8 ++++---- pkgs/desktops/kde-4/libs/setup.sh | 9 +++++++++ pkgs/desktops/kde-4/multimedia/default.nix | 6 +++--- pkgs/desktops/kde-4/network/default.nix | 4 ++-- pkgs/desktops/kde-4/pim/default.nix | 6 +++--- pkgs/desktops/kde-4/pimlibs/default.nix | 6 +++--- pkgs/desktops/kde-4/runtime/default.nix | 11 +++++------ pkgs/desktops/kde-4/support/eigen.nix | 2 +- pkgs/desktops/kde-4/support/gmm.nix | 2 +- pkgs/desktops/kde-4/support/qca.nix | 2 +- pkgs/desktops/kde-4/support/qimageblitz.nix | 2 +- pkgs/desktops/kde-4/support/soprano.nix | 2 +- pkgs/desktops/kde-4/support/strigi.nix | 2 +- pkgs/desktops/kde-4/support/taglib.nix | 2 +- pkgs/desktops/kde-4/toys/default.nix | 6 +++--- pkgs/desktops/kde-4/{base => utils}/builder.sh | 1 - pkgs/desktops/kde-4/utils/default.nix | 7 ++++--- pkgs/desktops/kde-4/workspace/builder.sh | 5 +---- pkgs/desktops/kde-4/workspace/default.nix | 10 ++++------ pkgs/top-level/all-packages.nix | 2 +- 25 files changed, 66 insertions(+), 68 deletions(-) rename pkgs/desktops/kde-4/{base => utils}/builder.sh (78%) diff --git a/pkgs/desktops/kde-4/base/default.nix b/pkgs/desktops/kde-4/base/default.nix index 75dbfbf40d4..6013a507e3a 100644 --- a/pkgs/desktops/kde-4/base/default.nix +++ b/pkgs/desktops/kde-4/base/default.nix @@ -1,14 +1,12 @@ args: with args; stdenv.mkDerivation { - name = "kdebase-4.0beta4"; - #builder = ./builder.sh; - + name = "kdebase-4.0rc2"; + src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdebase-3.95.0.tar.bz2; - sha256 = "0qf7bn5jqj70hznjk74vpwb7rvk6f5gx9fxwli930b2hskib3zll"; + url = mirror://kde/unstable/3.97/src/kdebase-3.97.0.tar.bz2; + sha256 = "1iavkzfq7f9308j2r70xd6qfng0fncpww8s49hbigzkkdzrjk8gn"; }; propagatedBuildInputs = [kdepimlibs libusb]; - inherit kdelibs; } diff --git a/pkgs/desktops/kde-4/default.nix b/pkgs/desktops/kde-4/default.nix index 9732d9e2b2b..3e96185beed 100644 --- a/pkgs/desktops/kde-4/default.nix +++ b/pkgs/desktops/kde-4/default.nix @@ -18,11 +18,9 @@ rec { decibel = import ./decibel fullargs; pim = import ./pim (fullargs // {kdeworkspace = workspace; }); - env = with args; runCommand "kde-env" + env = kde_pkgs: with args; [ (runCommand "kde-env" { - KDEDIRS = lib.concatStringsSep ":" ([ libs pimlibs graphics multimedia - toys network utils games edu base runtime workspace extragear_plasma pim] ++ - support.all); + KDEDIRS = lib.concatStringsSep ":" (kde_pkgs ++ support.all); scriptName = "echo-kde-dirs"; } " @@ -31,5 +29,5 @@ rec { echo \"#!/bin/sh\" > \${scriptPath} echo \"echo -n export KDEDIRS=\${KDEDIRS}\" >> \${scriptPath} chmod +x \${scriptPath} - "; + ")] ++ kde_pkgs ++ support.all ++ [shared_mime_info qt]; } diff --git a/pkgs/desktops/kde-4/edu/default.nix b/pkgs/desktops/kde-4/edu/default.nix index e69a1a49be6..8e6b32c353a 100644 --- a/pkgs/desktops/kde-4/edu/default.nix +++ b/pkgs/desktops/kde-4/edu/default.nix @@ -1,14 +1,14 @@ args: with args; stdenv.mkDerivation rec { - name = "kdeedu-4.0beta4"; + name = "kdeedu-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdeedu-3.95.0.tar.bz2; - sha256 = "0cydl3pp3l0cbfmf774qh8njyhycaf8yxb27k4xf6mipvw1k9jqf"; + url = mirror://kde/unstable/3.97/src/kdeedu-3.97.0.tar.bz2; + sha256 = "1d2319pzs4ymbp2jgmc1kzkr5d9g5p5d1yg6b5l7z4b2qzhchpl4"; }; - buildInputs = [kdelibs kdepimlibs kdeworkspace boost readline openbabel ocaml + buildInputs = [kdelibs kdepimlibs boost readline openbabel ocaml libusb facile python]; myCmakeFiles = ./myCmakeFiles; patchPhase = " @@ -16,5 +16,4 @@ stdenv.mkDerivation rec { sed -e 's@+facile@\${LIBFACILE_INCLUDE_DIR}@' -i \\ ../kalzium/src/CMakeOCamlInstructions.cmake "; - configureFlags = "--debug-trycompile"; } diff --git a/pkgs/desktops/kde-4/extragear/default.nix b/pkgs/desktops/kde-4/extragear/default.nix index c67d4b8682c..69fc626db6d 100644 --- a/pkgs/desktops/kde-4/extragear/default.nix +++ b/pkgs/desktops/kde-4/extragear/default.nix @@ -1,10 +1,10 @@ args: with args; stdenv.mkDerivation { - name = "extragear-plasma-4.0beta4"; + name = "extragear-plasma-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/extragear-plasma-3.95.0.tar.bz2; + url = mirror://kde/unstable/3.97/src/extragear-plasma-3.97.0.tar.bz2; sha256 = "1nzfy34ig66gfpgv6kbcmcap13axcy7kvj43srbd0ic6a0giv283"; }; diff --git a/pkgs/desktops/kde-4/games/default.nix b/pkgs/desktops/kde-4/games/default.nix index e3869e10808..d82f3971e3c 100644 --- a/pkgs/desktops/kde-4/games/default.nix +++ b/pkgs/desktops/kde-4/games/default.nix @@ -1,12 +1,12 @@ args: with args; stdenv.mkDerivation { - name = "kdegames-4.0beta4"; + name = "kdegames-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdegames-3.95.0.tar.bz2; - sha256 = "1zsfslnazl8gmiq51y5d16svv7p92yvs2zsz13zg7zpwy4afxzbp"; + url = mirror://kde/unstable/3.97/src/kdegames-3.97.0.tar.bz2; + sha256 = "12a87lfaqlidjlibxk3q43bdza2c6k5ggqblxdnr8ikjdww2sk29"; }; - buildInputs = [kdelibs kdepimlibs kdeworkspace]; + buildInputs = [kdelibs kdepimlibs]; } diff --git a/pkgs/desktops/kde-4/graphics/default.nix b/pkgs/desktops/kde-4/graphics/default.nix index 124c9598c9e..b765e63108a 100644 --- a/pkgs/desktops/kde-4/graphics/default.nix +++ b/pkgs/desktops/kde-4/graphics/default.nix @@ -1,13 +1,13 @@ args: with args; stdenv.mkDerivation { - name = "kdegraphics-4.0beta4"; + name = "kdegraphics-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdegraphics-3.95.0.tar.bz2; - sha256 = "0mfsadv9ihhw6s7pcy1yabc21px47nzfs34c76n1888qb09m5dfw"; + url = mirror://kde/unstable/3.97/src/kdegraphics-3.97.0.tar.bz2; + sha256 = "0f16zyvw37nqhbis34rg6yxg6r95yk2vi9lk3zk8lqjwcs81h5fz"; }; - buildInputs = [kdelibs kdepimlibs kdeworkspace libgphoto2 saneBackends + buildInputs = [kdelibs kdepimlibs libgphoto2 saneBackends djvulibre exiv2 poppler chmlib]; } diff --git a/pkgs/desktops/kde-4/libs/setup.sh b/pkgs/desktops/kde-4/libs/setup.sh index 6f899442d27..851614b0d18 100755 --- a/pkgs/desktops/kde-4/libs/setup.sh +++ b/pkgs/desktops/kde-4/libs/setup.sh @@ -2,4 +2,13 @@ addKDEDIRS() { addToSearchPath KDEDIRS /share/kde4 /. $1 } + +fixCmakeDbusCalls() +{ + dbusPrefix=${1:-@out@} + echo "Fixing dbus calls in CMakeLists.txt files" +# Trailing slash in sed is essential + find .. -name CMakeLists.txt \ + | xargs sed -e "s#\${DBUS_INTERFACES_INSTALL_DIR}/#${dbusPrefix}/share/dbus-1/interfaces/#" -i +} envHooks=(${envHooks[@]} addKDEDIRS) diff --git a/pkgs/desktops/kde-4/multimedia/default.nix b/pkgs/desktops/kde-4/multimedia/default.nix index f0870c1740d..feedc95b15b 100644 --- a/pkgs/desktops/kde-4/multimedia/default.nix +++ b/pkgs/desktops/kde-4/multimedia/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdemultimedia-4.0beta4"; + name = "kdemultimedia-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdemultimedia-3.95.0.tar.bz2; - sha256 = "0vjk5gpn45fh7hm982jw1frd7fr0grff96ksmh29wnkc160rh8va"; + url = mirror://kde/unstable/3.97/src/kdemultimedia-3.97.0.tar.bz2; + sha256 = "0q78d1gh5na72aj604myy23qn6xb0izw0igsi1h9i4pc2bsis87i"; }; buildInputs = [kdelibs kdepimlibs kdeworkspace libogg flac cdparanoia lame diff --git a/pkgs/desktops/kde-4/network/default.nix b/pkgs/desktops/kde-4/network/default.nix index 21ae2074e06..d962a9c40ea 100644 --- a/pkgs/desktops/kde-4/network/default.nix +++ b/pkgs/desktops/kde-4/network/default.nix @@ -1,10 +1,10 @@ args: with args; stdenv.mkDerivation { - name = "kdenetwork-4.0beta4"; + name = "kdenetwork-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdenetwork-3.95.0.tar.bz2; + url = mirror://kde/unstable/3.97/src/kdenetwork-3.97.0.tar.bz2; sha256 = "118r55aw0pag78kawjfn3vya7aca12n5ypknm1i4khxs747hxqbr"; }; diff --git a/pkgs/desktops/kde-4/pim/default.nix b/pkgs/desktops/kde-4/pim/default.nix index f0f4184d391..397c57df5bf 100644 --- a/pkgs/desktops/kde-4/pim/default.nix +++ b/pkgs/desktops/kde-4/pim/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdepim-4.0beta4"; + name = "kdepim-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdepim-3.95.0.tar.bz2; - sha256 = "0gzvm4h6ij7i119apmh9w82raygahr18bl0i9m3ynf2mcca0aq94"; + url = mirror://kde/unstable/3.97/src/kdepim-3.97.0.tar.bz2; + sha256 = "1x5ywn1z963azrrm6rlsspzlsbbwxcsb3zc93pdy80qq1jwsf964"; }; buildInputs = [libXinerama mesa stdenv.gcc.libc alsaLib kdelibs kdepimlibs diff --git a/pkgs/desktops/kde-4/pimlibs/default.nix b/pkgs/desktops/kde-4/pimlibs/default.nix index 6d273acc67e..077cca5e32c 100644 --- a/pkgs/desktops/kde-4/pimlibs/default.nix +++ b/pkgs/desktops/kde-4/pimlibs/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdepimlibs-4.0beta4"; + name = "kdepimlibs-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdepimlibs-3.95.0.tar.bz2; - sha256 = "1dhn5x3k9myqfymv6ry84v0zm2qwxnrlm1vdlllfvmgbm5nz34mg"; + url = mirror://kde/unstable/3.97/src/kdepimlibs-3.97.0.tar.bz2; + sha256 = "1zv4l592288bdfxqllm8z1cmsjcprfji5harcxf9hhz95igp5n7j"; }; propagatedBuildInputs = [kdelibs boost gpgme cyrus_sasl openldap]; diff --git a/pkgs/desktops/kde-4/runtime/default.nix b/pkgs/desktops/kde-4/runtime/default.nix index f3f241a7ffe..f1740f959fd 100644 --- a/pkgs/desktops/kde-4/runtime/default.nix +++ b/pkgs/desktops/kde-4/runtime/default.nix @@ -1,15 +1,14 @@ args: with args; stdenv.mkDerivation { - name = "kdebase-runtime-4.0beta4"; - builder = ./builder.sh; + name = "kdebase-runtime-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdebase-runtime-3.95.0.tar.bz2; - sha256 = "1s4fhbz7gpdxmvlr20c7n6cvcb9sn0qxigzpljsxw9524w177ksr"; + url = mirror://kde/unstable/3.97/src/kdebase-runtime-3.97.0.tar.bz2; + sha256 = "16xang1sjj0h8339cfqf6l4qqswyv42sq9w9a3axmckklmfnx6b1"; }; - propagatedBuildInputs = [kdepimlibs libusb kdebase xineLib]; - inherit kdelibs; + propagatedBuildInputs = [kdepimlibs libusb xineLib]; + patchPhase = "fixCmakeDbusCalls"; } diff --git a/pkgs/desktops/kde-4/support/eigen.nix b/pkgs/desktops/kde-4/support/eigen.nix index 163683a2921..2b3520eb942 100644 --- a/pkgs/desktops/kde-4/support/eigen.nix +++ b/pkgs/desktops/kde-4/support/eigen.nix @@ -2,6 +2,6 @@ args: with args; stdenv.mkDerivation { name = "eigen-1.0.5"; - src = svnSrc "eigen" "0dr2gzrf17bdgxj4f9ibk7x5j7fqwwjsl800dzfvrhgj6v1mxm4x"; + src = svnSrc "eigen" "1wh6kdmzsxmk6byp4rq91pz4rfr7hnh17g8f415p0ywxalg6pfkg"; buildInputs = [ cmake ]; } diff --git a/pkgs/desktops/kde-4/support/gmm.nix b/pkgs/desktops/kde-4/support/gmm.nix index 843f9f6aaed..10a2b63863b 100644 --- a/pkgs/desktops/kde-4/support/gmm.nix +++ b/pkgs/desktops/kde-4/support/gmm.nix @@ -2,6 +2,6 @@ args: with args; stdenv.mkDerivation { name = "gmm-svn"; - src = svnSrc "gmm" "0qvx9jf17z0mpwy8k6w6bla94gkkslkiv5w98aajfcq34n0zxcpc"; + src = svnSrc "gmm" "08j40y85dprs9ddzsddimrhssnz08fafq6nhn40l59ddbvvir0gy"; buildInputs = [ cmake ]; } diff --git a/pkgs/desktops/kde-4/support/qca.nix b/pkgs/desktops/kde-4/support/qca.nix index fda435c7bff..cf542feac7c 100644 --- a/pkgs/desktops/kde-4/support/qca.nix +++ b/pkgs/desktops/kde-4/support/qca.nix @@ -2,7 +2,7 @@ args: with args; stdenv.mkDerivation { name = "qca-2.0.0dev"; - src = svnSrc "qca" "0dycmk8fn57mz2pfxck6d0g833fqg9zrw17789vxb4ks0xz0p3zp"; + src = svnSrc "qca" "1jdqh7xg3vqyx7lgngcz9qj6zdnmlwqw7yv2py7gp2qma7a0annd"; buildInputs = [ cmake qt openssl gettext cyrus_sasl libgcrypt gnupg ]; patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../CMakeLists.txt"; } diff --git a/pkgs/desktops/kde-4/support/qimageblitz.nix b/pkgs/desktops/kde-4/support/qimageblitz.nix index 3364b4eac5d..0abdd882a50 100644 --- a/pkgs/desktops/kde-4/support/qimageblitz.nix +++ b/pkgs/desktops/kde-4/support/qimageblitz.nix @@ -2,6 +2,6 @@ args: with args; stdenv.mkDerivation { name = "qimageblitz-4.0.0svn"; - src = svnSrc "qimageblitz" "0gi78bald70bc540jqcpa70x23hycywibn4raf5602hv4d5n8mnx"; + src = svnSrc "qimageblitz" "0rmfkl529fmlb495whlidffib1x5s03xzsyaxild3rrsf4h1npcx"; buildInputs = [cmake qt]; } diff --git a/pkgs/desktops/kde-4/support/soprano.nix b/pkgs/desktops/kde-4/support/soprano.nix index 0cb490b9db7..c2b9a3b0903 100644 --- a/pkgs/desktops/kde-4/support/soprano.nix +++ b/pkgs/desktops/kde-4/support/soprano.nix @@ -2,7 +2,7 @@ args: with args; stdenv.mkDerivation { name = "soprano-1.9.0svn"; - src = svnSrc "soprano" "02xfp7g41ahxwczkxipyi13rav6akhwgspxdhgk5gm94rg10hq2l"; + src = svnSrc "soprano" "1zzn84k6m351y9pr0kkxb1d4i3jb3mkyyqc07bq0im56m8bvrcm7"; CLUCENE_HOME=cluceneCore; buildInputs = [ cmake qt cluceneCore redland ]; } diff --git a/pkgs/desktops/kde-4/support/strigi.nix b/pkgs/desktops/kde-4/support/strigi.nix index d1ec98ea25f..9e7d1f0c9ac 100644 --- a/pkgs/desktops/kde-4/support/strigi.nix +++ b/pkgs/desktops/kde-4/support/strigi.nix @@ -2,7 +2,7 @@ args: with args; stdenv.mkDerivation { name = "strigi-svn"; - src = svnSrc "strigi" "0dp145n93bqp91lvk2n10mghppyhdm3anh1l3a18d20hrvsm42z5"; + src = svnSrc "strigi" "198arwd87l97gg5rs3p7rk9wiw1mrdsw9y0zwvrwnxs7glgj201h"; CLUCENE_HOME=cluceneCore; buildInputs = [ cmake zlib cluceneCore bzip2 libxml2 qt dbus log4cxx stdenv.gcc.libc exiv2 bison cppunit perl ]; diff --git a/pkgs/desktops/kde-4/support/taglib.nix b/pkgs/desktops/kde-4/support/taglib.nix index 9a2acc96636..fd6dac35fd9 100644 --- a/pkgs/desktops/kde-4/support/taglib.nix +++ b/pkgs/desktops/kde-4/support/taglib.nix @@ -2,6 +2,6 @@ args: with args; stdenv.mkDerivation { name = "taglib-1.4svn"; - src = svnSrc "taglib" "1myfgykflbs3l1mrzg4iv8rb1mbd0vpmzl5dnnslfi9b0xg6ydip"; + src = svnSrc "taglib" "0jmy1mldpjqnq8ap3ynwagxpjcfxzbisa4qd6zdwlwcm8zb54rak"; buildInputs = [ cmake zlib ]; } diff --git a/pkgs/desktops/kde-4/toys/default.nix b/pkgs/desktops/kde-4/toys/default.nix index 19c08c4891b..1ebb427927d 100644 --- a/pkgs/desktops/kde-4/toys/default.nix +++ b/pkgs/desktops/kde-4/toys/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdetoys-4.0beta4"; + name = "kdetoys-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdetoys-3.95.0.tar.bz2; - sha256 = "0qg9ns640v21sa837pg5basnw8clnkyxap2lm7s69ainsg69662v"; + url = mirror://kde/unstable/3.97/src/kdetoys-3.97.0.tar.bz2; + sha256 = "1ga2xlsr7wl7jnc4clzabgyv5wfcjgpfmv6ca99bkz31nr6lddpa"; }; buildInputs = [kdelibs kdepimlibs kdeworkspace]; diff --git a/pkgs/desktops/kde-4/base/builder.sh b/pkgs/desktops/kde-4/utils/builder.sh similarity index 78% rename from pkgs/desktops/kde-4/base/builder.sh rename to pkgs/desktops/kde-4/utils/builder.sh index 99b357fcf16..c0df3758964 100755 --- a/pkgs/desktops/kde-4/base/builder.sh +++ b/pkgs/desktops/kde-4/utils/builder.sh @@ -6,7 +6,6 @@ myPatchPhase() # Trailing slash in sed is essential find .. -name CMakeLists.txt \ | xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i - #sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h } patchPhase=myPatchPhase genericBuild diff --git a/pkgs/desktops/kde-4/utils/default.nix b/pkgs/desktops/kde-4/utils/default.nix index cee61c0e4cd..fe453938c94 100644 --- a/pkgs/desktops/kde-4/utils/default.nix +++ b/pkgs/desktops/kde-4/utils/default.nix @@ -1,13 +1,14 @@ args: with args; stdenv.mkDerivation { - name = "kdeutils-4.0beta4"; + name = "kdeutils-4.0rc2"; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdeutils-3.95.0.tar.bz2; - sha256 = "1b8jvdy83qwhnfwqxzx96bxnaxss25psazifymyb0z4ynkqmadlh"; + url = mirror://kde/unstable/3.97/src/kdeutils-3.97.0.tar.bz2; + sha256 = "0nhs91xf83xyf4wlpppavrhyi76qdnilhaynwjirx5n85hjl4iiq"; }; buildInputs = [kdelibs kdepimlibs kdeworkspace gmp libzip python ]; # TODO : tpctl + patchPhase="fixCmakeDbusCalls"; } diff --git a/pkgs/desktops/kde-4/workspace/builder.sh b/pkgs/desktops/kde-4/workspace/builder.sh index 648d6175f35..f5a5b5a90bf 100755 --- a/pkgs/desktops/kde-4/workspace/builder.sh +++ b/pkgs/desktops/kde-4/workspace/builder.sh @@ -2,10 +2,7 @@ source ${stdenv}/setup myPatchPhase() { - echo "Fixing dbus calls in CMakeLists.txt files" -# Trailing slash in sed is essential - find .. -name CMakeLists.txt \ - | xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i + fixCmakeDbusCalls sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../kcontrol/randr/randr.h } patchPhase=myPatchPhase diff --git a/pkgs/desktops/kde-4/workspace/default.nix b/pkgs/desktops/kde-4/workspace/default.nix index 829393f67e9..162277a03ed 100644 --- a/pkgs/desktops/kde-4/workspace/default.nix +++ b/pkgs/desktops/kde-4/workspace/default.nix @@ -1,15 +1,13 @@ args: with args; stdenv.mkDerivation { - name = "kdebase-workspace-4.0beta4"; + name = "kdebase-workspace-4.0rc2"; builder = ./builder.sh; src = fetchurl { - url = mirror://kde/unstable/3.95/src/kdebase-workspace-3.95.0.tar.bz2; - sha256 = "0jripmw8vgs7lxlsif552rr9vqps5kav8jdlfyhmr9c3xw5c99v0"; + url = mirror://kde/unstable/3.97/src/kdebase-workspace-3.97.0.tar.bz2; + sha256 = "1sb3vm5y50af6qvsg4sjw14z7y4j1zbgp7w8gsffigbr0hyj4apl"; }; - buildInputs = [kdelibs kdepimlibs kdebase kderuntime stdenv.gcc.libc]; - inherit kdelibs; + buildInputs = [kdelibs kdepimlibs stdenv.gcc.libc]; } - diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9acb6e666e8..9c6aaf240e4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4444,7 +4444,7 @@ rec { shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline saneBackends chmlib python libzip gmp sqlite libidn runCommand lib - openbabel ocaml facile stdenv; + openbabel ocaml facile stdenv poppler_data; cdparanoia = cdparanoiaIII; inherit (xlibs) inputproto kbproto scrnsaverproto xextproto xf86miscproto From 70c37850818ec864be63893906dcda1af60e1351 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 15 Dec 2007 23:46:42 +0000 Subject: [PATCH 102/320] xine-lib: now compiles with 2.6.23 headers svn path=/nixpkgs/branches/stdenv-updates/; revision=9947 --- .../libraries/xine-lib/default.nix | 1 + .../xine-lib-linux-headers-2.6.23.patch | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/development/libraries/xine-lib/xine-lib-linux-headers-2.6.23.patch diff --git a/pkgs/development/libraries/xine-lib/default.nix b/pkgs/development/libraries/xine-lib/default.nix index 738b21741b5..51592f61b1a 100644 --- a/pkgs/development/libraries/xine-lib/default.nix +++ b/pkgs/development/libraries/xine-lib/default.nix @@ -27,4 +27,5 @@ assert alsaSupport -> alsaLib != null; libXv = if xvideoSupport then libXv else null; libdvdcss = if encryptedDVDSupport then libdvdcss else null; propagatedBuildInputs = [zlib]; + patches = [ ./xine-lib-linux-headers-2.6.23.patch ]; }) // {inherit xineramaSupport libXinerama;} diff --git a/pkgs/development/libraries/xine-lib/xine-lib-linux-headers-2.6.23.patch b/pkgs/development/libraries/xine-lib/xine-lib-linux-headers-2.6.23.patch new file mode 100644 index 00000000000..cd3d766ea8f --- /dev/null +++ b/pkgs/development/libraries/xine-lib/xine-lib-linux-headers-2.6.23.patch @@ -0,0 +1,22 @@ +# HG changeset patch +# User Ken Moffat +# Date 1193435051 -3600 +# Node ID 8a369a0d5ff104cc115bbe76c6b4f3e281d1ef25 +# Parent 05fde4048642d1a7edb19ea623acd760064718bc +Linux-2.6.23 header change breaks build +> +> /* Special codes used when specifying changer slots. */ +> #define CDSL_NONE (INT_MAX-1) +> #define CDSL_CURRENT INT_MAX + +--- a/src/input/vcd/libcdio/_cdio_linux.c Tue Oct 23 23:45:58 2007 +0100 ++++ b/src/input/vcd/libcdio/_cdio_linux.c Fri Oct 26 22:44:11 2007 +0100 +@@ -59,6 +59,7 @@ static const char _rcsid[] = "$Id: _cdio + #include + #include + #include ++#include + + #include + #include + From c9982118fc1be9bbe87f3ed00cd248e4c4c4dfc6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 15 Dec 2007 23:49:06 +0000 Subject: [PATCH 103/320] kde-4: Removed unused builders svn path=/nixpkgs/branches/stdenv-updates/; revision=9948 --- pkgs/desktops/kde-4/pim/builder.sh | 10 ---------- pkgs/desktops/kde-4/runtime/builder.sh | 12 ------------ pkgs/desktops/kde-4/utils/builder.sh | 11 ----------- 3 files changed, 33 deletions(-) delete mode 100755 pkgs/desktops/kde-4/pim/builder.sh delete mode 100755 pkgs/desktops/kde-4/runtime/builder.sh delete mode 100755 pkgs/desktops/kde-4/utils/builder.sh diff --git a/pkgs/desktops/kde-4/pim/builder.sh b/pkgs/desktops/kde-4/pim/builder.sh deleted file mode 100755 index 8963fae048c..00000000000 --- a/pkgs/desktops/kde-4/pim/builder.sh +++ /dev/null @@ -1,10 +0,0 @@ -source ${stdenv}/setup - -myPatchPhase() -{ -# They reset CMAKE_MODULE_PATH, not adding to the existing - sed -e '3s/)/ ${CMAKE_MODULE_PATH})/' -i ../CMakeLists.txt -} -patchPhase=myPatchPhase - -genericBuild diff --git a/pkgs/desktops/kde-4/runtime/builder.sh b/pkgs/desktops/kde-4/runtime/builder.sh deleted file mode 100755 index 99b357fcf16..00000000000 --- a/pkgs/desktops/kde-4/runtime/builder.sh +++ /dev/null @@ -1,12 +0,0 @@ -source ${stdenv}/setup - -myPatchPhase() -{ - echo "Fixing dbus calls in CMakeLists.txt files" -# Trailing slash in sed is essential - find .. -name CMakeLists.txt \ - | xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i - #sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h -} -patchPhase=myPatchPhase -genericBuild diff --git a/pkgs/desktops/kde-4/utils/builder.sh b/pkgs/desktops/kde-4/utils/builder.sh deleted file mode 100755 index c0df3758964..00000000000 --- a/pkgs/desktops/kde-4/utils/builder.sh +++ /dev/null @@ -1,11 +0,0 @@ -source ${stdenv}/setup - -myPatchPhase() -{ - echo "Fixing dbus calls in CMakeLists.txt files" -# Trailing slash in sed is essential - find .. -name CMakeLists.txt \ - | xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i -} -patchPhase=myPatchPhase -genericBuild From e17a21b8202dffa6fd5a34792a3f9c73b1b80c7a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 3 Jan 2008 17:13:33 +0000 Subject: [PATCH 104/320] xine-lib: added pkg-config svn path=/nixpkgs/branches/stdenv-updates/; revision=10065 --- pkgs/development/libraries/xine-lib/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/xine-lib/default.nix b/pkgs/development/libraries/xine-lib/default.nix index 51592f61b1a..0af3732cbae 100644 --- a/pkgs/development/libraries/xine-lib/default.nix +++ b/pkgs/development/libraries/xine-lib/default.nix @@ -2,7 +2,7 @@ , xineramaSupport ? true , encryptedDVDSupport ? true , alsaSupport ? true -, stdenv, fetchurl, zlib, x11 +, stdenv, fetchurl, zlib, x11, pkgconfig , libXv ? null, libXinerama ? null, libdvdcss ? null, alsaLib ? null }: @@ -19,7 +19,7 @@ assert alsaSupport -> alsaLib != null; sha256 = "03iwhgsf9kj0x5b4fgv7lzc1vj3frk4afh2idgrqskvixjyi37vc"; }; buildInputs = [ - x11 + x11 pkgconfig (if xvideoSupport then libXv else null) (if xineramaSupport then libXinerama else null) (if alsaSupport then alsaLib else null) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9c6aaf240e4..edb774fd96b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2407,7 +2407,7 @@ rec { }; xineLib = import ../development/libraries/xine-lib { - inherit fetchurl stdenv zlib x11 libdvdcss alsaLib; + inherit fetchurl stdenv zlib x11 libdvdcss alsaLib pkgconfig; inherit (xlibs) libXv libXinerama; }; From a7703662a4ee043c1ba684d30ede016bb5dc2e41 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 00:55:21 +0000 Subject: [PATCH 105/320] Merged with trunk svn path=/nixpkgs/branches/stdenv-updates/; revision=10145 --- pkgs/applications/audio/flac/default.nix | 6 +- pkgs/applications/editors/eclipse/default.nix | 7 +- .../applications/editors/vim/configurable.nix | 72 +++++ pkgs/applications/editors/vim/default.nix | 15 +- .../graphics/ImageMagick/default.nix | 8 +- pkgs/applications/graphics/gimp/default.nix | 6 +- pkgs/applications/misc/freemind/default.nix | 45 +++ pkgs/applications/misc/pinfo/default.nix | 12 +- pkgs/applications/misc/qgis_svn/default.nix | 74 +++++ .../misc/rxvt_unicode/default.nix | 12 +- pkgs/applications/misc/xterm/default.nix | 3 +- .../networking/browsers/firefox/default.nix | 7 +- .../networking/browsers/firefox3b1/3b2.nix | 57 ++++ .../networking/browsers/firefox3b1/binary.nix | 55 ++++ .../mozilla-plugins/flashplayer-9/default.nix | 18 +- .../mplayerplug-in/default.nix | 6 +- .../instant-messengers/pidgin/default.nix | 6 +- .../instant-messengers/teamspeak/client.nix | 71 +++++ .../networking/irc/chatzilla/default.nix | 6 +- .../networking/irc/irssi/default.nix | 6 +- .../networking/irc/xchat/default.nix | 6 +- .../mailreaders/sylpheed/default.nix | 6 +- .../networking/sniffers/wireshark/default.nix | 6 +- .../applications/office/openoffice/builder.sh | 2 + .../subversion-1.4.x/default.nix | 7 +- pkgs/applications/video/vlc/default.nix | 7 +- .../virtualization/qemu/0.9.0.nix | 26 ++ .../virtualization/qemu/linux-img/0.2.nix | 27 ++ .../virtualization/virtualbox/1.5.2.nix | 21 ++ pkgs/data/fonts/fontWrap/default.nix | 27 ++ pkgs/data/misc/xkeyboard-config/default.nix | 5 +- .../xkeyboard-config/level3-deadkeys-us-intl | 95 +++++++ .../compilers/ghc-6.6.1/builder.sh | 26 -- .../compilers/ghc-6.6.1/default.nix | 31 ++- pkgs/development/compilers/ghc-6.8/builder.sh | 26 -- .../development/compilers/ghc-6.8/default.nix | 37 ++- .../compilers/ghc-6.8/setup-hook.sh | 2 +- pkgs/development/compilers/ghc/boot.nix | 65 ++++- pkgs/development/compilers/ghc/boot.sh | 10 - .../interpreters/guile/default.nix | 6 +- .../interpreters/php_configurable/default.nix | 62 ++++- pkgs/development/interpreters/tcl/default.nix | 6 +- .../libraries/acl/acl-2.2.45-patch | 222 +++++++++++++++ pkgs/development/libraries/acl/builder.sh | 12 + pkgs/development/libraries/acl/default.nix | 14 + pkgs/development/libraries/attr/builder.sh | 2 + .../libraries/audiofile/default.nix | 6 +- .../libraries/boehm-gc/default.nix | 10 +- .../libraries/coredumper/default.nix | 6 +- .../libraries/cracklib/default.nix | 6 +- pkgs/development/libraries/db4/db4-4.4.nix | 5 +- pkgs/development/libraries/expat/default.nix | 6 +- .../libraries/ffmpeg_svn_snapshot/default.nix | 3 +- pkgs/development/libraries/giflib/default.nix | 10 + .../default.nix => giflib/libungif.nix} | 2 +- pkgs/development/libraries/gmp/default.nix | 15 +- .../development/libraries/libcaca/default.nix | 6 +- pkgs/development/libraries/libdv/default.nix | 30 ++ .../development/libraries/libpcap/default.nix | 6 +- pkgs/development/libraries/libpng/default.nix | 6 +- .../libraries/libraw1394/default.nix | 17 ++ .../libraries/libtheora/default.nix | 6 +- .../libraries/libvorbis/default.nix | 6 +- pkgs/development/libraries/libwpd/default.nix | 6 +- pkgs/development/libraries/popt/popt-1.7.nix | 5 +- .../libraries/readline/readline5.nix | 1 + .../libraries/readline/shobj-darwin.patch | 11 + pkgs/development/libraries/speex/default.nix | 6 +- pkgs/development/libraries/t1lib/default.nix | 9 +- pkgs/development/libraries/tk/default.nix | 6 +- .../misc/elfutils/{default.nix => 0.127.nix} | 4 +- .../development/tools/misc/elfutils/0.131.nix | 9 + .../development/tools/misc/strace/default.nix | 6 +- pkgs/development/tools/misc/swig/default.nix | 2 +- .../tools/misc/valgrind/default.nix | 7 +- .../tools/parsing/alex/default.nix | 23 ++ .../tools/parsing/bison/bison-1.875.nix | 4 +- .../tools/parsing/flex/flex-2.5.4a.nix | 2 +- pkgs/lib/default-unstable.nix | 63 ++++- pkgs/lib/default.nix | 61 ++++- pkgs/misc/maven/maven-2.nix | 23 ++ pkgs/misc/tex/auctex/default.nix | 2 +- pkgs/misc/xsane/default.nix | 6 +- pkgs/os-specific/linux/atheros/0.9.3.3.nix | 34 +++ pkgs/os-specific/linux/atheros/r2756.nix | 35 +++ pkgs/os-specific/linux/atheros/r3122.nix | 22 ++ .../linux/bridge_utils/default.nix | 2 +- pkgs/os-specific/linux/dmidecode/2.9.nix | 22 ++ pkgs/os-specific/linux/dvd+rw-tools/7.0.nix | 27 ++ pkgs/os-specific/linux/fuse/builder.sh | 2 + pkgs/os-specific/linux/fuse/default.nix | 18 +- .../linux/kernel/2.6.22-paravirt-nvidia.patch | 14 - pkgs/os-specific/linux/kernel/2.6.23.12.nix | 38 +++ .../linux/kernel/config-2.6.23-i686-smp | 2 +- pkgs/os-specific/linux/kqemu/1.3.0pre11.nix | 30 ++ .../linux/module-init-tools/aggregator.nix | 34 +++ pkgs/os-specific/linux/nvidia/builder.sh | 169 +++++------- pkgs/os-specific/linux/nvidia/default.nix | 44 +-- pkgs/os-specific/linux/sdparm/1.02.nix | 21 ++ pkgs/os-specific/linux/squashfs/default.nix | 6 +- pkgs/servers/x11/xorg/default.nix | 4 +- pkgs/shells/tcsh/default.nix | 6 +- pkgs/tools/X11/xlaunch/default.nix | 48 ++++ pkgs/tools/archivers/cabextract/default.nix | 4 +- pkgs/tools/archivers/zip/default.nix | 2 +- pkgs/tools/graphics/exif/default.nix | 6 +- pkgs/tools/graphics/graphviz/default.nix | 13 +- pkgs/tools/hddtemp/default.nix | 27 ++ pkgs/tools/misc/file/default.nix | 11 +- pkgs/tools/misc/grub/default.nix | 21 +- pkgs/tools/misc/less/default.nix | 6 +- pkgs/tools/misc/memtest86/default.nix | 26 ++ pkgs/tools/misc/psmisc/default.nix | 15 + pkgs/tools/misc/relfs/cvs.2007.12.01.nix | 4 +- .../networking/curl/connect-timeout.patch | 156 +++++++++++ pkgs/tools/networking/curl/default.nix | 17 +- .../networking/p2p/bit-tornado/default.nix | 4 +- pkgs/tools/networking/sshfs-fuse/default.nix | 11 +- pkgs/tools/networking/tcpdump/default.nix | 6 +- pkgs/tools/package-management/nix/default.nix | 10 +- .../tools/package-management/nix/unstable.nix | 4 +- pkgs/tools/security/gnupg/default.nix | 11 +- pkgs/top-level/all-packages.nix | 259 ++++++++++++++++-- pkgs/top-level/build-for-release.nix | 2 - pkgs/top-level/builder-defs.nix | 23 +- 125 files changed, 2379 insertions(+), 487 deletions(-) create mode 100644 pkgs/applications/editors/vim/configurable.nix create mode 100644 pkgs/applications/misc/freemind/default.nix create mode 100644 pkgs/applications/misc/qgis_svn/default.nix create mode 100644 pkgs/applications/networking/browsers/firefox3b1/3b2.nix create mode 100644 pkgs/applications/networking/browsers/firefox3b1/binary.nix create mode 100644 pkgs/applications/networking/instant-messengers/teamspeak/client.nix create mode 100644 pkgs/applications/virtualization/qemu/0.9.0.nix create mode 100644 pkgs/applications/virtualization/qemu/linux-img/0.2.nix create mode 100644 pkgs/applications/virtualization/virtualbox/1.5.2.nix create mode 100644 pkgs/data/fonts/fontWrap/default.nix create mode 100644 pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl delete mode 100644 pkgs/development/compilers/ghc-6.6.1/builder.sh delete mode 100644 pkgs/development/compilers/ghc-6.8/builder.sh delete mode 100644 pkgs/development/compilers/ghc/boot.sh create mode 100644 pkgs/development/libraries/acl/acl-2.2.45-patch create mode 100644 pkgs/development/libraries/acl/builder.sh create mode 100644 pkgs/development/libraries/acl/default.nix create mode 100644 pkgs/development/libraries/giflib/default.nix rename pkgs/development/libraries/{libungif/default.nix => giflib/libungif.nix} (69%) create mode 100644 pkgs/development/libraries/libdv/default.nix create mode 100644 pkgs/development/libraries/libraw1394/default.nix create mode 100644 pkgs/development/libraries/readline/shobj-darwin.patch rename pkgs/development/tools/misc/elfutils/{default.nix => 0.127.nix} (79%) create mode 100644 pkgs/development/tools/misc/elfutils/0.131.nix create mode 100644 pkgs/development/tools/parsing/alex/default.nix create mode 100644 pkgs/misc/maven/maven-2.nix create mode 100644 pkgs/os-specific/linux/atheros/0.9.3.3.nix create mode 100644 pkgs/os-specific/linux/atheros/r2756.nix create mode 100644 pkgs/os-specific/linux/atheros/r3122.nix create mode 100644 pkgs/os-specific/linux/dmidecode/2.9.nix create mode 100644 pkgs/os-specific/linux/dvd+rw-tools/7.0.nix delete mode 100644 pkgs/os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch create mode 100644 pkgs/os-specific/linux/kernel/2.6.23.12.nix create mode 100644 pkgs/os-specific/linux/kqemu/1.3.0pre11.nix create mode 100644 pkgs/os-specific/linux/module-init-tools/aggregator.nix create mode 100644 pkgs/os-specific/linux/sdparm/1.02.nix create mode 100644 pkgs/tools/X11/xlaunch/default.nix create mode 100644 pkgs/tools/hddtemp/default.nix create mode 100644 pkgs/tools/misc/memtest86/default.nix create mode 100644 pkgs/tools/misc/psmisc/default.nix create mode 100644 pkgs/tools/networking/curl/connect-timeout.patch diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index 58c11aaa0f8..e61fd05ce38 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, libogg}: stdenv.mkDerivation { - name = "flac-1.1.2"; + name = "flac-1.2.1"; src = fetchurl { - url = http://downloads.xiph.org/releases/flac/flac-1.1.2.tar.gz; - md5 = "2bfc127cdda02834d0491ab531a20960"; + url = http://downloads.xiph.org/releases/flac/flac-1.2.1.tar.gz; + sha256 = "1pry5lgzfg57pga1zbazzdd55fkgk3v5qy4axvrbny5lrr5s8dcn"; }; buildInputs = [libogg] ; diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix index 9051293f489..71afb07eece 100644 --- a/pkgs/applications/editors/eclipse/default.nix +++ b/pkgs/applications/editors/eclipse/default.nix @@ -11,10 +11,11 @@ let { }; bindist = - fetchurl { + if (stdenv.system == "x86_64-linux") then fetchurl { + url = "http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-3.3.1.1-200710231652/eclipse-SDK-3.3.1.1-linux-gtk-x86_64.tar.gz"; + sha256 = "3fec49e95c45b56ad77b2bd15616af9d1fa6c3b338d4c70b497ecdc974c0b030"; + } else fetchurl { url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-3.3.1.1-200710231652/eclipse-SDK-3.3.1.1-linux-gtk.tar.gz; sha256 = "409e47745c92ff8ea8b2037104ec90c2f8ce3edb3563fdb312d55e1bbd2ada01"; }; } - - diff --git a/pkgs/applications/editors/vim/configurable.nix b/pkgs/applications/editors/vim/configurable.nix new file mode 100644 index 00000000000..b27bb157f75 --- /dev/null +++ b/pkgs/applications/editors/vim/configurable.nix @@ -0,0 +1,72 @@ +# TODO tidy up eg The patchelf code is patching gvim even if you don't build it.. +# but I have gvim with python support now :) - Marc +args: +let edf = args.lib.enableDisableFeature; in +( args.mkDerivationByConfiguration { + # most interpreters aren't tested yet.. (see python for example how to do it) + flagConfig = { + mandatory = { cfgOption = "--enable-gui=auto --with-features=${args.features}"; + buildInputs = ["ncurses" "pkgconfig"]; + }; + X11 = { buildInputs = [ "libX11" "libXext" "libSM" "libXpm" "libXt" "libXaw" "libXau" "libXmu" ]; }; + + } // edf "darwin" "darwin" { } #Disable Darwin (Mac OS X) support. + // edf "xsmp" "xsmp" { } #Disable XSMP session management + // edf "xsmp_interact" "xsmp_interact" { } #Disable XSMP interaction + // edf "mzscheme" "mzschemeinterp" { } #Include MzScheme interpreter. + // edf "perl" "perlinterp" { } #Include Perl interpreter. + // edf "python" "pythoninterp" { pass = "python"; } #Include Python interpreter. + // edf "tcl" "tclinterp" { } #Include Tcl interpreter. + // edf "ruby" "rubyinterp" { } #Include Ruby interpreter. + // edf "cscope" "cscope" { } #Include cscope interface. + // edf "workshop" "workshop" { } #Include Sun Visual Workshop support. + // edf "netbeans" "netbeans" { } #Disable NetBeans integration support. + // edf "sniff" "sniff" { } #Include Sniff interface. + // edf "multibyte" "multibyte" { } #Include multibyte editing support. + // edf "hangulinput" "hangulinput" { } #Include Hangul input support. + // edf "xim" "xim" { pass = "xim"; } #Include XIM input support. + // edf "fontset" "fontset" { } #Include X fontset output support. + + #--enable-gui=OPTS X11 GUI default=auto OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon + /* + // edf "gtk_check" "gtk_check" { } #If auto-select GUI, check for GTK default=yes + // edf "gtk2_check" "gtk2_check" { } #If GTK GUI, check for GTK+ 2 default=yes + // edf "gnome_check" "gnome_check" { } #If GTK GUI, check for GNOME default=no + // edf "motif_check" "motif_check" { } #If auto-select GUI, check for Motif default=yes + // edf "athena_check" "athena_check" { } #If auto-select GUI, check for Athena default=yes + // edf "nextaw_check" "nextaw_check" { } #If auto-select GUI, check for neXtaw default=yes + // edf "carbon_check" "carbon_check" { } #If auto-select GUI, check for Carbon default=yes + // edf "gtktest" "gtktest" { } #Do not try to compile and run a test GTK program + */ + // edf "acl" "acl" { } #Don't check for ACL support. + // edf "gpm" "gpm" { } #Don't use gpm (Linux mouse daemon). + // edf "nls" "nls" { } #Don't support NLS (gettext()). + ; + + optionals = ["python"]; + + extraAttrs = co : { + name = "vim_configurable-7.1"; + + src = args.fetchurl { + url = ftp://ftp.nluug.nl/pub/editors/vim/unix/vim-7.1.tar.bz2; + sha256 = "0w6gy49gdbw7hby5rjkjpa7cdvc0z5iajsm4j1h8108rvfam22kz"; + }; + + postInstall = " + rpath=`patchelf --print-rpath \$out/bin/vim`; + for i in $\buildInputs; do + echo adding \$i/lib + rpath=\$rpath:\$i/lib + done + echo \$buildInputs + echo \$rpath + patchelf --set-rpath \$rpath \$out/bin/{vim,gvim} + "; + + meta = { + description = "The most popular clone of the VI editor"; + homepage = "www.vim.org"; + }; +}; +} ) args diff --git a/pkgs/applications/editors/vim/default.nix b/pkgs/applications/editors/vim/default.nix index a08808a4756..5a524d6dabe 100644 --- a/pkgs/applications/editors/vim/default.nix +++ b/pkgs/applications/editors/vim/default.nix @@ -9,17 +9,28 @@ let ["athenaGUI" "libXau" "libXt" "libXaw" "libXpm" "libXext" "x11Support"] ["x11Support" "libX11"] ["hugeFeatures"] + ["pythonSupport" "python"] + ["perlSupport" "perl"] + ["tclSupport" "tcl"] ["true" "ncurses"] ["false" "libSM"] ]; nameSuffixes = [ "hugeFeatures" "-huge" "x11Support" "-X11" + "pythonSupport" "-python" + "perlSupport" "-perl" + "tclSupport" "-tcl" + "ximSupport" "-xim" ]; configFlags = [ - "true" " --disable-xim " + "true" " " "x11Support" " --enable-gui=auto " - "hugeFeatures" "--with-features=huge --enable-cscope --enable-multibyte --enable-xsmp" + "hugeFeatures" "--with-features=huge --enable-cscope --enable-multibyte --enable-xsmp " + "pythonSupport" " --enable-pythoninterp " + "perlSupport" " --enable-perlinterp " + "tclSupport" " --enable-tclinterp " + "ximSupport" " --enable-xim " ]; buildInputsNames = args.lib.filter (x: (null!=getVal x)) (args.lib.uniqList {inputList = diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix index 0f814bd3829..1795d29e7fb 100644 --- a/pkgs/applications/graphics/ImageMagick/default.nix +++ b/pkgs/applications/graphics/ImageMagick/default.nix @@ -1,10 +1,10 @@ args: with args; (stdenv.mkDerivation ({ - name = "ImageMagick-6.3.5"; + name = "ImageMagick-6.3.7-9"; src = fetchurl { - url = ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.5-5.tar.bz2; - sha256 = "0avq6kllxw552krxgsa72c1b44zwyhwi38dk4a4ij3fqy0svy9zh"; + url = ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.7-9.tar.bz2; + sha256 = "1s38s78xvzm20ib22zypsb9vvzva0kbqjf0pf4c1q89jzg205pk0"; }; configureFlags = " --with-dots --with-gs-font-dir="+ ghostscript + @@ -13,7 +13,7 @@ args: with args; ); buildInputs = [bzip2 freetype ghostscript graphviz libjpeg libpng - libtiff libX11 libxml2 zlib ] ++ (if args ? tetex then [args.tetex] else []) + libtiff libX11 libxml2 zlib libtool] ++ (if args ? tetex then [args.tetex] else []) ++ (if args ? librsvg then [args.librsvg] else []) ; } // (if args ? tetex then { diff --git a/pkgs/applications/graphics/gimp/default.nix b/pkgs/applications/graphics/gimp/default.nix index cda94032511..a591091d92f 100644 --- a/pkgs/applications/graphics/gimp/default.nix +++ b/pkgs/applications/graphics/gimp/default.nix @@ -4,10 +4,10 @@ }: stdenv.mkDerivation { - name = "gimp-2.4.0"; + name = "gimp-2.4.3"; src = fetchurl { - url = ftp://ftp.gtk.org/pub/gimp/v2.4/gimp-2.4.0.tar.bz2; - sha256 = "1p594r45hxk14469ma8g5j96nw5q9j6a3i0n6hbakfsh41izpsnx"; + url = ftp://ftp.gtk.org/pub/gimp/v2.4/gimp-2.4.3.tar.bz2; + sha256 = "1m9gdm6wa33x1bymy3c2d006ks0acq1y8a94rc4401f6mrw8jj8b"; }; buildInputs = [ diff --git a/pkgs/applications/misc/freemind/default.nix b/pkgs/applications/misc/freemind/default.nix new file mode 100644 index 00000000000..79b00204fd4 --- /dev/null +++ b/pkgs/applications/misc/freemind/default.nix @@ -0,0 +1,45 @@ +args: +args.stdenv.mkDerivation { + name = "freemind-0.9.0_Beta_13"; + + src = args.fetchurl { + url = http://downloads.sourceforge.net/freemind/freemind-src-0.9.0_Beta_13_icon_butterfly.tar.gz; + sha256 = "00389bhg73qknydrq0f3bskb5lyrdg2p58mnnp19wdvzzmfbic4w"; + }; + + buildInputs =(with args; [jdk ant]); + + inherit (args) jre; + + phases="buildPhase installPhase"; + + buildPhase="ant dist"; +# LIBXCB_ALLOW_SLOPPY_LOCK=true : +# don't know yet what this option really means but I'm no longer getting +# Checking Java Version... +# Locking assertion failure. Backtrace: +# java: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed +# this way +# reference and more info https://bugs.launchpad.net/ubuntu/+source/sun-java5/+bug/86103 +# JDK 7 beta seems to have fixed this (bug ?) + + installPhase=" + ensureDir \$out/{bin,nix-support} + cp -r ../bin/dist \$out/nix-support + sed -i 's/which/type -p/' \$out/nix-support/dist/freemind.sh + cat > \$out/bin/freemind << EOF +#!/bin/sh +export LIBXCB_ALLOW_SLOPPY_LOCK=true +export JAVA_HOME=\$jre +\$out/nix-support/dist/freemind.sh +EOF + + chmod +x \$out/{bin/freemind,nix-support/dist/freemind.sh} + "; + + meta = { + description = "mind mapping software"; + homepage = http://freemind.sourceforge.net/wiki/index.php/Main_Page; + license = "GPL"; + }; +} diff --git a/pkgs/applications/misc/pinfo/default.nix b/pkgs/applications/misc/pinfo/default.nix index b44cca5ff2c..d8dba39ccb5 100644 --- a/pkgs/applications/misc/pinfo/default.nix +++ b/pkgs/applications/misc/pinfo/default.nix @@ -1,10 +1,12 @@ -{stdenv, fetchurl, ncurses}: +{stdenv, fetchurl, ncurses, readline}: stdenv.mkDerivation { - name = "pinfo-0.6.8"; + name = "pinfo-0.6.9"; src = fetchurl { - url = http://dione.cc/~pborys/software/pinfo/pinfo-0.6.8.tar.gz; - md5 = "55feb4ebaa709b52bd00a15ed0fb52fb"; + url = https://alioth.debian.org/frs/download.php/1498/pinfo-0.6.9.tar.bz2; + sha256 = "1rbsz1y7nyz6ax9xfkw5wk6pnrhvwz2xcm0wnfnk4sb2wwq760q3"; }; - buildInputs = [ncurses]; + buildInputs = [ncurses readline]; + + configureFlags = "--with-curses=${ncurses} --with-readline=${readline}"; } diff --git a/pkgs/applications/misc/qgis_svn/default.nix b/pkgs/applications/misc/qgis_svn/default.nix new file mode 100644 index 00000000000..547e941ecac --- /dev/null +++ b/pkgs/applications/misc/qgis_svn/default.nix @@ -0,0 +1,74 @@ +args: +let optionIncLib = name : attr : " -D${name}_INCLUDE_DIR=${__getAttr attr args}/inc" + + " -D${name}_LIBRARY=${__getAttr attr args}/lib "; # lib 64? +in +( args.mkDerivationByConfiguration { + + flagConfig = { + mandatory = { + buildInputs = [ "gdal" "cmake" "qt" "flex" "bison" "proj" "geos" "x11" "sqlite" "gsl"]; + cfgOption = [ (optionIncLib "GEOS" "geos") + (optionIncLib "PROJ" "proj") + (optionIncLib "QT_X11_X11" "qt") + (optionIncLib "QT_X11_Xext" "qt") + (optionIncLib "QT_X11_m" "glibc") + (optionIncLib "SQLITE3" "sqlite") + +"-DQT_FONTCONFIG_LIBRARY=${args.fontconfig}/lib" +"-DQT_FREETYPE_LIBRARY=${args.freetype}/lib" +"-DQT_PNG_LIBRARY=${args.libpng}/lib" +"-DQT_X11_ICE_LIBRARY=${args.libICE}/lib" +"-DQT_X11_SM_LIBRARY=${args.libSM}/lib" +"-DQT_XCURSOR_LIBRARY=${args.libXcursor}/lib" +"-DQT_XINERAMA_LIBRARY=${args.libXinerama}/lib" +"-DQT_XRANDR_LIBRARY=${args.libXrandr}/lib" +"-DQT_XRENDER_LIBRARY=${args.libXrender}/lib" +"-DQT_ZLIB_LIBRARY=${args.zlib}/lib" + ]; + +/* advanced options - feel free to add them if you have time to +"-DPROJ_INCLUDE_DIR" +"-DPROJ_LIBRARY" +"-DQT_X11_X11_LIBRARY" +"-DQT_X11_Xext_LIBRARY" +"-DQT_X11_m_LIBRARY" +"-DSQLITE3_INCLUDE_DIR" +"-DSQLITE3_LIBRARY" +-DQT_FONTCONFIG_LIBRARY (ADVANCED) +-DQT_FREETYPE_LIBRARY (ADVANCED) +-DQT_PNG_LIBRARY (ADVANCED) +-DQT_X11_ICE_LIBRARY (ADVANCED) +-DQT_X11_SM_LIBRARY (ADVANCED) +-DQT_XCURSOR_LIBRARY (ADVANCED) +-DQT_XINERAMA_LIBRARY (ADVANCED) +-DQT_XRANDR_LIBRARY (ADVANCED) +-DQT_XRENDER_LIBRARY (ADVANCED) +-DQT_ZLIB_LIBRARY (ADVANCED) +*/ + }; + }; + + #inherit geos proj x11 libXext; + + extraAttrs = co : { + + name = "qgis-svn"; + + src = args.fetchsvn { url=https://svn.qgis.org/repos/qgis/trunk/qgis; + md5="ac0560e0a2d4e6258c8639f1e9b56df3"; rev="7704"; }; + + meta = { + description = "user friendly Open Source Geographic Information System"; + homepage = http://www.qgis.org; + # you can choose one of the following licenses: + license = [ "GPL" ]; + }; + + phases = "unpackPhase buildPhase installPhase"; + buildPhase = "cmake -DCMAKE_INSTALL_PREFIX=\$out ${co.configureFlags} ."; + + #configurePhase="./autogen.sh --prefix=\$out --with-gdal=\$gdal/bin/gdal-config --with-qtdir=\$qt"; + # buildPhases="unpackPhase buildPhase"; + }; + +} ) args diff --git a/pkgs/applications/misc/rxvt_unicode/default.nix b/pkgs/applications/misc/rxvt_unicode/default.nix index b43b3c275e8..c128ca11a5a 100644 --- a/pkgs/applications/misc/rxvt_unicode/default.nix +++ b/pkgs/applications/misc/rxvt_unicode/default.nix @@ -1,13 +1,13 @@ args: with args; stdenv.mkDerivation { - name = "rxvt-unicode-8.4"; - + name = "rxvt-unicode-8.9"; + buildInputs = [ libX11 libXt libXft perl ]; - + src = fetchurl { - url = http://dist.schmorp.de/rxvt-unicode/rxvt-unicode-8.4.tar.bz2; - sha256 = "ff8d904a815151edde72bb3e51d1561125813569cb3d487cbac428ec23facdbb"; + url = http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-8.9.tar.bz2; + sha256 = "89858c5bfe72dba037cd3435b2221269580f3c699553fe24ee468ddec8831d27"; }; - + meta = { description = "rxvt-unicode is a clone of the well known terminal emulator rxvt."; homepage = "http://software.schmorp.de/pkg/rxvt-unicode.html"; diff --git a/pkgs/applications/misc/xterm/default.nix b/pkgs/applications/misc/xterm/default.nix index c14ceb84e87..d27b723400e 100644 --- a/pkgs/applications/misc/xterm/default.nix +++ b/pkgs/applications/misc/xterm/default.nix @@ -4,7 +4,8 @@ stdenv.mkDerivation { name = "xterm-208"; src = fetchurl { url = ftp://invisible-island.net/xterm/xterm.tar.gz; - md5 = "a062d0b398918015d07c31ecdcc5111a"; + md5 = "f7b04a66dc401dc22f5ddb7f345be229"; /* was a062d0b398918015d07c31ecdcc5111a */ }; buildInputs = [libXaw xproto libXt libX11 libSM libICE ncurses]; } + diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix index 4cb9debf06a..17c26cf8f51 100644 --- a/pkgs/applications/networking/browsers/firefox/default.nix +++ b/pkgs/applications/networking/browsers/firefox/default.nix @@ -10,12 +10,12 @@ }: stdenv.mkDerivation { - name = "firefox-2.0.0.9"; + name = "firefox-2.0.0.11"; builder = ./builder.sh; src = fetchurl { - url = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.9/source/firefox-2.0.0.9-source.tar.bz2; - sha1 = "3b39d4128534d18f7e2c4d76a14561c18556eff0"; + url = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.11/source/firefox-2.0.0.11-source.tar.bz2; + sha1 = "6d070bf04f1a037b621237d02ef9be7802a51bf1"; }; buildInputs = [ @@ -49,6 +49,7 @@ stdenv.mkDerivation { meta = { description = "Mozilla Firefox - the browser, reloaded"; + homepage = http://www.mozilla.com/en-US/firefox/; }; passthru = {inherit gtk;}; diff --git a/pkgs/applications/networking/browsers/firefox3b1/3b2.nix b/pkgs/applications/networking/browsers/firefox3b1/3b2.nix new file mode 100644 index 00000000000..29ea90d9d89 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox3b1/3b2.nix @@ -0,0 +1,57 @@ +args: with args; + +stdenv.mkDerivation { + name = "firefox-3b2"; + + src = + fetchurl { + url = ftp://ftp.mozilla.org/pub/firefox/releases/3.0b2/source/firefox-3.0b2-source.tar.bz2; + sha256 = "0mszad8j35wvzi67dp3j9sznqkgb9b3in22c5790g9b9pv6xk8jp"; + }; + + buildInputs = [ + pkgconfig gtk perl zip libIDL libXi libjpeg libpng zlib cairo + python curl coreutils dbus dbus_glib pango freetype fontconfig + libX11 libXrender libXft libXt + ]; + + configureFlags = [ + "--enable-application=browser" + "--enable-optimize" + "--disable-debug" + "--enable-xft" + "--disable-freetype2" + "--enable-svg" + "--enable-canvas" + "--enable-strip" + "--enable-default-toolkit=cairo-gtk2" + "--with-system-jpeg" + "--with-system-zlib" +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +* "--enable-system-cairo" +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + ] +; + + postInstall = " + export dontPatchELF=1; + sed -e 's@moz_libdir=.*@&\\nexport PATH=\$PATH:${coreutils}/bin@' -i \$out/bin/firefox + sed -e 's@`/bin/pwd@`${coreutils}/bin/pwd@' -i \$out/bin/firefox + sed -e 's@`/bin/ls@`${coreutils}/bin/ls@' -i \$out/bin/firefox + + strip -S \$out/lib/*/* || true + + libDir=\$(cd \$out/lib && ls -d firefox-[0-9]*) + test -n \"\$libDir\" + + echo \"running firefox -register...\" + (cd \$out/lib/\$libDir && LD_LIBRARY_PATH=. ./firefox-bin -register) || false + "; + + meta = { + description = "Mozilla Firefox - the browser, reloaded"; + }; + + passthru = {inherit gtk;}; +} + diff --git a/pkgs/applications/networking/browsers/firefox3b1/binary.nix b/pkgs/applications/networking/browsers/firefox3b1/binary.nix new file mode 100644 index 00000000000..73e002435b8 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox3b1/binary.nix @@ -0,0 +1,55 @@ +args: with args; + +assert stdenv.system == "i686-linux"; + +stdenv.mkDerivation { + name = "firefox-3b1"; + + src = + fetchurl { + url = ftp://ftp.mozilla.org/pub/firefox/releases/3.0b1/linux-i686/en-US/firefox-3.0b1.tar.bz2; + sha256 = "1cpcc5b07zdqyd5kiwhb4dqhy2mzbf97plsglcp6bc9054cmsylk"; + }; + buildInputs = [ + pkgconfig gtk perl zip libIDL libXi libjpeg libpng zlib cairo + python curl coreutils atk pango glib libX11 libXrender + freetype fontconfig libXft libXt + ]; + + buildPhase = " + additionalRpath=''; + for i in \$buildInputs ${stdenv.glibc} ${stdenv.gcc.gcc}; do + additionalRpath=\$additionalRpath:\$i/lib; + done + for i in firefox-bin ; do + oldrpath=$(patchelf --print-rpath \$i) + patchelf --set-rpath \$oldrpath\$additionalRpath \$i + patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2 \$i + done + "; + + installPhase = " + export dontPatchELF=1; + mkdir -p \$out + cp -r . \$out/firefox + mkdir -p \$out/bin + ln -s \$out/firefox/firefox \$out/bin/firefox + + sed -e 's@moz_libdir=.*@moz_libdir='\$out'/firefox/@' -i \$out/bin/firefox + sed -e 's@moz_libdir=.*@&\\nexport PATH=\$PATH:${coreutils}/bin@' -i \$out/bin/firefox + sed -e 's@`/bin/pwd@`${coreutils}/bin/pwd@' -i \$out/bin/firefox + sed -e 's@`/bin/ls@`${coreutils}/bin/ls@' -i \$out/bin/firefox + + strip -S \$out/firefox/*.so || true + + echo \"running firefox -register...\" + \$out/firefox/firefox-bin -register || false + "; + + meta = { + description = "Mozilla Firefox - the browser, reloaded"; + }; + + passthru = {inherit gtk;}; +} + diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-9/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-9/default.nix index d6972ac2f79..e14cfe2bea7 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-9/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-9/default.nix @@ -2,14 +2,24 @@ assert stdenv.system == "i686-linux"; -(stdenv.mkDerivation { - name = "flashplayer-9.0.31.0"; +stdenv.mkDerivation { + name = "flashplayer-9.0.115.0"; builder = ./builder.sh; src = fetchurl { url = http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz; - sha256 = "ad2f9eb98e976a82b62e97e7cf3a555464e43b80507b87ed7c469706faa4d897"; + sha256 = "0yr2n7barlbvqxxzbvgp0pmbwwf7bvjksravqa47yra689jvynr7"; }; inherit zlib alsaLib; -}) // {mozillaPlugin = "/lib/mozilla/plugins";} + + passthru = { + mozillaPlugin = "/lib/mozilla/plugins"; + }; + + meta = { + description = "Adobe Flash Player browser plugin"; + homepage = http://www.adobe.com/products/flashplayer/; + }; + +} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix index 12eef1c8859..1e681ade776 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix @@ -5,12 +5,12 @@ # think). stdenv.mkDerivation { - name = "mplayerplug-in-3.45"; + name = "mplayerplug-in-3.50"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/mplayerplug-in/mplayerplug-in-3.45.tar.gz; - sha256 = "0cfl0s7v1bgdak39x7s2hnx968qs3vlv09gmwms27czimn8vijiz"; + url = mirror://sourceforge/mplayerplug-in/mplayerplug-in-3.50.tar.gz; + sha256 = "00jcbwl3wa6s4784c3wrz718f6jj1zkdfjbp7d2nhiafxrjqwsq4"; }; buildInputs = [pkgconfig firefox (firefox.gtk) libXpm gettext]; diff --git a/pkgs/applications/networking/instant-messengers/pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin/default.nix index 73b351bf9fe..46af8533474 100644 --- a/pkgs/applications/networking/instant-messengers/pidgin/default.nix +++ b/pkgs/applications/networking/instant-messengers/pidgin/default.nix @@ -17,10 +17,10 @@ } : stdenv.mkDerivation { - name = "pidgin-2.2.1"; + name = "pidgin-2.3.1"; src = fetchurl { - url = mirror://sourceforge/pidgin/pidgin-2.2.1.tar.bz2; - sha256 = "08sq0yc8vz6c24pdv64clv6s91a5idslpp7vll8vgspn4piyzyvf"; + url = mirror://sourceforge/pidgin/pidgin-2.3.1.tar.bz2; + sha256 = "17mpirkfrv48jqn86l23b2ia2nzz9hqhll6lp4c2q8sbff3kc21d"; }; inherit nss ncurses; diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix new file mode 100644 index 00000000000..bbdd265f7da --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix @@ -0,0 +1,71 @@ +/* +License issues: +Date: Mon, 10 Dec 2007 19:55:16 -0500 +From: TeamSpeak Sales +To: 'Marc Weber' +Subject: RE: teamspeak on nix? + +Yes, that would be fine. As long as you are not renting servers or selling +TeamSpeak then you are more than welcome to distribute it. + +Thank you, + +TeamSpeak Sales Team +________________________________ +e-Mail: sales@tritoncia.com +TeamSpeak: http://www.TeamSpeak.com +Account Login: https://sales.TritonCIA.com/users + + + +-----Original Message----- +From: Marc Weber [mailto:marco-oweber@gmx.de] +Sent: Monday, December 10, 2007 5:03 PM +To: sales@tritoncia.com +Subject: teamspeak on nix? + +Hello, + +nix is very young software distribution system (http://nix.cs.uu.nl/) +I'd like to ask wether you permit us to add teamspeak (server/ client?) + +Sincerly +Marc Weber (small nix contributor) +*/ + +args: +args.stdenv.mkDerivation { + name = "teamspeak-client-rc2-2032"; + + src = args.fetchurl { + url = ftp://213.202.254.114/teamspeak/releases/ts2_client_rc2_2032.tar.bz2; + md5 = "e93d17a25e07b1cbe400e4eb028ca8f8"; + }; + + phases="installPhase"; + + rpathInputs = (with args; [ glibc x11 ] ); + + installPhase=" + set -x + i=\$out/nix-support + ensureDir \$out/{bin,nix-support} + mv setup.data/image \$i + cp \$out/{nix-support/image/TeamSpeak,bin} + echo sed + sed -i \"s=%installdir%=\$i/image=\" \$out/bin/TeamSpeak + + echo for + for p in $\rpathInputs; do + rpath=\$rpath:\$p/lib + done + echo patchelf + patchelf --set-rpath \$rpath \$i/image/TeamSpeak.bin + "; + + meta = { + description = "The TeamSpeak voice communication tool"; + homepage = http://www.goteamspeak.com; + license = "TODO"; # non commercial use see email above + }; +} diff --git a/pkgs/applications/networking/irc/chatzilla/default.nix b/pkgs/applications/networking/irc/chatzilla/default.nix index de34588a924..ff979d39393 100644 --- a/pkgs/applications/networking/irc/chatzilla/default.nix +++ b/pkgs/applications/networking/irc/chatzilla/default.nix @@ -1,14 +1,14 @@ {stdenv, fetchurl, unzip}: stdenv.mkDerivation { - name = "chatzilla-0.9.78.1"; + name = "chatzilla-0.9.79"; builder = ./builder.sh; src = fetchurl { # Obtained from http://chatzilla.rdmsoft.com/xulrunner/. - url = http://chatzilla.rdmsoft.com/xulrunner/download/chatzilla-0.9.78.1-xr.zip; - sha256 = "1f7fgi1dvpzjsiai0vc986vd481i77hcafvnzm73bc2q8pa5g5mb"; + url = http://chatzilla.rdmsoft.com/xulrunner/download/chatzilla-0.9.79-xr.zip; + sha256 = "0irbi8y4y2nlbwvhmmln5h5f4wv7spd1rqg7dxg7pc93s09p5i09"; }; buildInputs = [unzip]; diff --git a/pkgs/applications/networking/irc/irssi/default.nix b/pkgs/applications/networking/irc/irssi/default.nix index 91c75a007c6..a120db5a87b 100644 --- a/pkgs/applications/networking/irc/irssi/default.nix +++ b/pkgs/applications/networking/irc/irssi/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, pkgconfig, ncurses, glib, openssl}: stdenv.mkDerivation { - name = "irssi-0.8.11"; + name = "irssi-0.8.12"; src = fetchurl { - url = http://irssi.org/files/irssi-0.8.11.tar.bz2; - sha256 = "425cf24f13bfda05c6a468523cd2874d05675ea1bc4e37a8c284f2f78c2dd6b2"; + url = http://irssi.org/files/irssi-0.8.12.tar.bz2; + sha256 = "1w7zkfs6j7xdcbqh8x0vf9rk2ps9d6rcgr8fapfjpk09nm5n6ba6"; }; buildInputs = [pkgconfig ncurses glib openssl]; NIX_LDFLAGS = "-lncurses"; diff --git a/pkgs/applications/networking/irc/xchat/default.nix b/pkgs/applications/networking/irc/xchat/default.nix index 5d12667e307..e75201f2081 100644 --- a/pkgs/applications/networking/irc/xchat/default.nix +++ b/pkgs/applications/networking/irc/xchat/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, pkgconfig, tcl, gtk}: stdenv.mkDerivation { - name = "xchat-2.8.2"; + name = "xchat-2.8.4"; src = fetchurl { - url = http://www.xchat.org/files/source/2.8/xchat-2.8.2.tar.bz2; - sha256 = "1zjhjwr03nj52lpsvl78jwhir7q6482nnd4h1p0a9zka27kj4v4z"; + url = http://www.xchat.org/files/source/2.8/xchat-2.8.4.tar.bz2; + sha256 = "0qyx6rdvnjwy52amcmkjj134sysfkzbyv7b66vjsla3i8yg9lnpr"; }; buildInputs = [pkgconfig tcl gtk]; configureFlags = "--disable-nls"; diff --git a/pkgs/applications/networking/mailreaders/sylpheed/default.nix b/pkgs/applications/networking/mailreaders/sylpheed/default.nix index 1c52661e89b..63e41e542e6 100644 --- a/pkgs/applications/networking/mailreaders/sylpheed/default.nix +++ b/pkgs/applications/networking/mailreaders/sylpheed/default.nix @@ -9,11 +9,11 @@ assert sslSupport -> openssl != null; assert gpgSupport -> gpgme != null; stdenv.mkDerivation { - name = "sylpheed-2.4.1"; + name = "sylpheed-2.4.8"; src = fetchurl { - url = http://sylpheed.sraoss.jp/sylpheed/v2.4/sylpheed-2.4.1.tar.bz2; - sha256 = "1hmia3lnh7yr2ca8bgxzn311waxfs0rhk0psck3dcjfhzxzp72zj"; + url = http://sylpheed.sraoss.jp/sylpheed/v2.4/sylpheed-2.4.8.tar.bz2; + sha256 = "0r4bfkyz39pj02rzn38ss10dhhhv93z1azlbbwdgbkjii3k760fc"; }; buildInputs = [ diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix index f0b4038faba..67318531371 100644 --- a/pkgs/applications/networking/sniffers/wireshark/default.nix +++ b/pkgs/applications/networking/sniffers/wireshark/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, perl, pkgconfig, gtk, libpcap}: stdenv.mkDerivation { - name = "wireshark-0.99.6"; + name = "wireshark-0.99.7"; src = fetchurl { - url = http://www.wireshark.org/download/src/wireshark-0.99.6.tar.gz; - sha256 = "1f2i84dk4nw05nh78b2j4n9pbwdngcqx0grrja5831r6paj35x1y"; + url = http://www.wireshark.org/download/src/wireshark-0.99.7.tar.bz2; + sha256 = "10pb2mn6p40gsq2nbnqdzihrpa078jdgxqh8l4zs33bxa1h37frc"; }; buildInputs = [perl pkgconfig gtk libpcap]; } diff --git a/pkgs/applications/office/openoffice/builder.sh b/pkgs/applications/office/openoffice/builder.sh index 124b64ffc2b..2a651a30058 100644 --- a/pkgs/applications/office/openoffice/builder.sh +++ b/pkgs/applications/office/openoffice/builder.sh @@ -13,6 +13,8 @@ preConfigure() { SRCDIR= + sed -e '/CURL_NO_OLDIES/d' -i ucb/source/ucp/ftp/makefile.mk + cd config_office/ } diff --git a/pkgs/applications/version-management/subversion-1.4.x/default.nix b/pkgs/applications/version-management/subversion-1.4.x/default.nix index b2869450c09..d09176302b8 100644 --- a/pkgs/applications/version-management/subversion-1.4.x/default.nix +++ b/pkgs/applications/version-management/subversion-1.4.x/default.nix @@ -17,12 +17,12 @@ assert sslSupport -> neon.sslSupport; assert compressionSupport -> neon.compressionSupport; stdenv.mkDerivation { - name = "subversion-1.4.5"; + name = "subversion-1.4.6"; builder = ./builder.sh; src = fetchurl { - url = http://subversion.tigris.org/downloads/subversion-1.4.5.tar.bz2; - sha1 = "acc80381cb670736ad626fee1eb04f36ba7e5fc8"; + url = http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2; + sha1 = "a9c941e2309744f6a2986200698b60da057a7527"; }; buildInputs = @@ -50,6 +50,7 @@ stdenv.mkDerivation { meta = { description = "A version control system intended to be a compelling replacement for CVS in the open source community"; + homepage = http://subversion.tigris.org/; }; } diff --git a/pkgs/applications/video/vlc/default.nix b/pkgs/applications/video/vlc/default.nix index d8db6d0396a..0d499008b0c 100644 --- a/pkgs/applications/video/vlc/default.nix +++ b/pkgs/applications/video/vlc/default.nix @@ -8,11 +8,11 @@ assert libdvdread.libdvdcss == libdvdcss; assert xvSupport -> libXv != null; stdenv.mkDerivation { - name = "vlc-0.8.6c"; + name = "vlc-0.8.6d"; src = fetchurl { - url = http://download.videolan.org/pub/videolan/vlc/0.8.6c/vlc-0.8.6c.tar.bz2; - sha256 = "1bmngn66i527vw9g5xnhlpz64xl5gch3j3l6y5d727rcpmxlvhjz"; + url = http://download.videolan.org/pub/videolan/vlc/0.8.6d/vlc-0.8.6d.tar.bz2; + sha256 = "019jw9cp7fbmhbmlbwvjgpamxwx0rdajyxab2sbmh4n6v04fl266"; }; buildInputs = [ @@ -30,5 +30,6 @@ stdenv.mkDerivation { meta = { description = "Cross-platform media player and streaming server"; + homepage = http://www.videolan.org/vlc/; }; } diff --git a/pkgs/applications/virtualization/qemu/0.9.0.nix b/pkgs/applications/virtualization/qemu/0.9.0.nix new file mode 100644 index 00000000000..8604f5ae66b --- /dev/null +++ b/pkgs/applications/virtualization/qemu/0.9.0.nix @@ -0,0 +1,26 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz; + sha256 = "1h85njd8xvn472yhcm92rjyzqjr719ab73rxwmz9cm2n6gwsq7s9"; + }; + + buildInputs = [ SDL zlib which ]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +let +preConfigure = FullDepEntry (" + gcc --version +") [minInit]; +in +stdenv.mkDerivation rec { + name = "qemu-"+version; + builder = writeScript (name + "-builder") + (textClosure [ preConfigure doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + QEmu processor emulator. +"; + }; +} diff --git a/pkgs/applications/virtualization/qemu/linux-img/0.2.nix b/pkgs/applications/virtualization/qemu/linux-img/0.2.nix new file mode 100644 index 00000000000..02ac87ef2e2 --- /dev/null +++ b/pkgs/applications/virtualization/qemu/linux-img/0.2.nix @@ -0,0 +1,27 @@ + +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://fabrice.bellard.free.fr/qemu/linux-0.2.img.bz2; + sha256 = "08xlwy1908chpc4fsqy2v13zi25dapk0ybrd43fj95v67kdj5hj1"; + }; + buildInputs = []; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +let +doCopy = FullDepEntry (" + ensureDir \$out/share/qemu-images + cp linux-${version}.img \$out/share/qemu-images/ +") [minInit doUnpack defEnsureDir]; +in +stdenv.mkDerivation rec { + name = "QEmu-Linux-Image-"+version; + builder = writeScript (name + "-builder") + (textClosure [doCopy doForceShare doPropagate]); + meta = { + description = " + ${abort "Write a description"} +"; + }; +} diff --git a/pkgs/applications/virtualization/virtualbox/1.5.2.nix b/pkgs/applications/virtualization/virtualbox/1.5.2.nix new file mode 100644 index 00000000000..e633c55a263 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/1.5.2.nix @@ -0,0 +1,21 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://www.virtualbox.org/download/1.5.2/VirtualBox-1.5.2_OSE.tar.bz2; + sha256 = "1g9rvkqjcsfx36gwk6i9c0bml6053xx2mdn1sn7vyyy0sgwkwk53"; + }; + buildInputs = [libXcursor bridge_utils umlutilities kernelHeaders + wine jre libxslt libIDL SDL qt3 openssl zlib]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "VirtualBox-"+version; + builder = writeScript (name + "-builder") + (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Virtual Box is just software for running virtual machines. +"; + }; +} diff --git a/pkgs/data/fonts/fontWrap/default.nix b/pkgs/data/fonts/fontWrap/default.nix new file mode 100644 index 00000000000..ef370be8e35 --- /dev/null +++ b/pkgs/data/fonts/fontWrap/default.nix @@ -0,0 +1,27 @@ +args : with args; + with builderDefs { + src =""; /* put a fetchurl here */ + buildInputs = [mkfontdir mkfontscale]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +let + doInstall = FullDepEntry (" + ensureDir \$out/share/fonts/ + cd \$out/share/fonts + for i in ${toString paths}; do + find \$i -type f -exec ln -s '{}' . ';' ; + done + mkfontdir + mkfontscale + ") [minInit addInputs defEnsureDir] ; +in +stdenv.mkDerivation rec { + name = "wrapped-font-dir"; + builder = writeScript (name + "-builder") + (textClosure [ doInstall doForceShare doPropagate]); + meta = { + description = " + Just a wrapper to create fots.dir and fonts.scale . +"; + }; +} diff --git a/pkgs/data/misc/xkeyboard-config/default.nix b/pkgs/data/misc/xkeyboard-config/default.nix index 9eae78b0700..31836d24ecf 100644 --- a/pkgs/data/misc/xkeyboard-config/default.nix +++ b/pkgs/data/misc/xkeyboard-config/default.nix @@ -16,5 +16,8 @@ stdenv.mkDerivation { configureFlags=\"--with-xkb-base=$out/etc/X11/xkb -with-xkb-rules-symlink=xorg,xfree86\" "; - postInstall = "rm \${out}/etc/X11/xkb/compiled"; + postInstall = '' + rm ''${out}/etc/X11/xkb/compiled + cat ${./level3-deadkeys-us-intl} >> $out/etc/X11/xkb/symbols/us + ''; } diff --git a/pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl b/pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl new file mode 100644 index 00000000000..6b7d263da7f --- /dev/null +++ b/pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl @@ -0,0 +1,95 @@ + +// Grabbed from http://lists.freedesktop.org/archives/xorg/2007-July/026686.html +// Submitted there by Adriaan van Nijendaal, he says he submitted it to X.org +// for inclusion, so it should be OK to use it as if it were part of X.org + +// The keyboard section in the X-server config file +// (/etc/X11/xorg.conf on my system) looks like this: +// +// Section "InputDevice" +// Driver "kbd" +// Identifier "Keyboard[0]" +// Option "XkbModel" "pc101" +// Option "XkbLayout" "us" +// Option "XkbVariant" "altgr-intl" +// EndSection +// +// To be effective, you need to install this file, change the X config +// file and restart the X-server. Or, alternatively, you can do this +// run-time: +// +// setxkbmap -v -rules xorg -model pc101 -layout us -variant altgr-intl +// +// Once the X-server has loaded the new config, a keyboard can be +// displayed with: (if you change "-ll 1" into "-ll 2", you'll see +// the special keys ONLY.) +// +// xkbcomp -o /tmp/keyboard.xkm -opt cgkst -xkb $DISPLAY +// xkbprint -o /tmp/keyboard.xkm.ps -kc -nkg 2 -ntg 4 -lg 1 -ll 1 \ +// -lc en_US.iso885915 -level2 -mono -label symbols -w 3 $DISPLAY; +// gv -seascape /tmp/keyboard.xkm.ps +// rm -f /tmp/keyboard.xkm.ps /tmp/keyboard.xkm +// + +partial alphanumeric_keys +xkb_symbols "altgr-intl" { + + name[Group1]= "U.S. English - International (AltGr dead keys)"; + + include "us(basic)" + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, at, twosuperior, dead_doubleacute] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, currency, sterling ] }; + key { [ 5, percent, EuroSign ] }; + key { [ 6, asciicircum, dead_circumflex ] }; + key { [ 7, ampersand, dead_horn ] }; + key { [ 8, asterisk, dead_ogonek ] }; + key { [ 9, parenleft, leftsinglequotemark,dead_breve ] }; + key { [ 0, parenright,rightsinglequotemark,dead_abovering ] }; + key { [ minus, underscore, yen, dead_belowdot ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ w, W, aring, Aring ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ r, R, ediaeresis, Ediaeresis ] }; + key { [ t, T, thorn, THORN ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ p, P, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, guillemotleft ] }; + key { [ bracketright,braceright, guillemotright ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ s, S, ssharp, section ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J, idiaeresis, Idiaeresis ] }; + key { [ k, K ] }; + key { [ l, L, oslash, Ooblique ] }; + key { [semicolon, colon, paragraph, degree ] }; + key { [apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, oe, OE ] }; + key { [ c, C, copyright, cent ] }; + key { [ v, V, registered, registered ] }; + key { [ b, B ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, mu ] }; + key { [ comma, less, ccedilla, Ccedilla ] }; + key { [ period, greater, dead_abovedot, dead_caron ] }; + key { [ slash, question, questiondown, dead_hook ] }; + key { [backslash, bar, notsign, brokenbar ] }; + + // Let's have free choice + //include "level3(ralt_switch)" +}; + diff --git a/pkgs/development/compilers/ghc-6.6.1/builder.sh b/pkgs/development/compilers/ghc-6.6.1/builder.sh deleted file mode 100644 index 0ea4fc496f9..00000000000 --- a/pkgs/development/compilers/ghc-6.6.1/builder.sh +++ /dev/null @@ -1,26 +0,0 @@ -source $stdenv/setup - -# Setup isolated package management -postInstall() -{ - ensureDir "$out/nix-support" - echo "# Path to the GHC compiler directory in the store" > $out/nix-support/setup-hook - echo "ghc=$out" >> $out/nix-support/setup-hook - echo "" >> $out/nix-support/setup-hook - cat $setupHook >> $out/nix-support/setup-hook -} -postInstall=postInstall - -configureFlags="--with-gmp-libraries=$gmp/lib --with-readline-libraries=\"$readline/lib\"" - -preConfigure() -{ - chmod u+x rts/gmp/configure - # still requires a hack for ncurses - sed -i "s|^\(library-dirs.*$\)|\1 \"$ncurses/lib\"|" libraries/readline/package.conf.in -} -preConfigure=preConfigure - - -# Standard configure/make/make install -genericBuild diff --git a/pkgs/development/compilers/ghc-6.6.1/default.nix b/pkgs/development/compilers/ghc-6.6.1/default.nix index 738b6a79fc7..14a59aeeeba 100644 --- a/pkgs/development/compilers/ghc-6.6.1/default.nix +++ b/pkgs/development/compilers/ghc-6.6.1/default.nix @@ -1,6 +1,6 @@ {stdenv, fetchurl, readline, ghc, perl, m4, gmp, ncurses}: -stdenv.mkDerivation { +stdenv.mkDerivation (rec { name = "ghc-6.6.1"; src = map fetchurl [ @@ -12,15 +12,34 @@ stdenv.mkDerivation { } ]; - builder = ./builder.sh; - - buildInputs = [ghc readline perl m4]; + buildInputs = [ghc readline perl m4 gmp]; setupHook = ./setup-hook.sh; meta = { - description = "The Glasgow Haskell Compiler v6.6.1"; + description = "The Glasgow Haskell Compiler"; }; + postInstall = '' + ensureDir "$out/nix-support" + echo "# Path to the GHC compiler directory in the store" > $out/nix-support/setup-hook + echo "ghc=$out" >> $out/nix-support/setup-hook + echo "" >> $out/nix-support/setup-hook + cat $setupHook >> $out/nix-support/setup-hook + ''; + + configureFlags=[ + "--with-gmp-libraries=${gmp}/lib" + "--with-readline-libraries=${readline}/lib" + "--with-gmp-includes=${gmp}/include" + "--with-gcc=${gcc}/bin/gcc" + ]; + + preConfigure = '' + # still requires a hack for ncurses + sed -i "s|^\(library-dirs.*$\)|\1 \"${ncurses}/lib\"|" libraries/readline/package.conf.in + ''; + + inherit (stdenv) gcc; inherit readline gmp ncurses; -} +}) diff --git a/pkgs/development/compilers/ghc-6.8/builder.sh b/pkgs/development/compilers/ghc-6.8/builder.sh deleted file mode 100644 index 0ea4fc496f9..00000000000 --- a/pkgs/development/compilers/ghc-6.8/builder.sh +++ /dev/null @@ -1,26 +0,0 @@ -source $stdenv/setup - -# Setup isolated package management -postInstall() -{ - ensureDir "$out/nix-support" - echo "# Path to the GHC compiler directory in the store" > $out/nix-support/setup-hook - echo "ghc=$out" >> $out/nix-support/setup-hook - echo "" >> $out/nix-support/setup-hook - cat $setupHook >> $out/nix-support/setup-hook -} -postInstall=postInstall - -configureFlags="--with-gmp-libraries=$gmp/lib --with-readline-libraries=\"$readline/lib\"" - -preConfigure() -{ - chmod u+x rts/gmp/configure - # still requires a hack for ncurses - sed -i "s|^\(library-dirs.*$\)|\1 \"$ncurses/lib\"|" libraries/readline/package.conf.in -} -preConfigure=preConfigure - - -# Standard configure/make/make install -genericBuild diff --git a/pkgs/development/compilers/ghc-6.8/default.nix b/pkgs/development/compilers/ghc-6.8/default.nix index c87d8457082..929799d1521 100644 --- a/pkgs/development/compilers/ghc-6.8/default.nix +++ b/pkgs/development/compilers/ghc-6.8/default.nix @@ -1,45 +1,40 @@ args: with args; stdenv.mkDerivation (rec { - name = "ghc-6.8.1"; + name = "ghc-6.8.2"; homepage = "http://www.haskell.org/ghc"; src = map fetchurl [ { url = "${homepage}/dist/stable/dist/${name}-src.tar.bz2"; - sha256 = "16gr19bwyjv0fmjdrsj79vqpaxxg5hasni94nwv9d6c85n5myivz"; + md5 = "745c6b7d4370610244419cbfec4b2f84"; } { url = "${homepage}/dist/stable/dist/${name}-src-extralibs.tar.bz2"; - sha256 = "1h3nc6x4g838mdcirymadmv3fsmp1wh062syb3a8aqv6f468akvm"; + md5 = "d199c50814188fb77355d41058b8613c"; } ]; - buildInputs = [ghc readline perl m4 pkgconfig gtk]; - patchPhase = " - sed -e s@/bin/cat@\$(type -p cat)@ -i configure - " + - (if (stdenv.system == "x86_64-linx") then "patch -p2 < $patch64" else ""); + buildInputs = [ghc readline perl m4 gmp]; setupHook = ./setup-hook.sh; meta = { - description = "The Glasgow Haskell Compiler v6.8.1"; + description = "The Glasgow Haskell Compiler"; }; - postInstall = " - ensureDir \"$out/nix-support\" - echo \"# Path to the GHC compiler directory in the store\" > $out/nix-support/setup-hook - echo \"ghc=$out\" >> $out/nix-support/setup-hook - echo \"\" >> $out/nix-support/setup-hook - cat $setupHook >> $out/nix-support/setup-hook - "; + postInstall = '' + ensureDir "$out/nix-support" + echo "# Path to the GHC compiler directory in the store" > $out/nix-support/setup-hook + echo "ghc=$out" >> $out/nix-support/setup-hook + echo "" >> $out/nix-support/setup-hook + cat $setupHook >> $out/nix-support/setup-hook + ''; - patch64 = ./x86_64-linux_patch; - - # the presence of this file makes Cabal cry for happy while generating makefiles ... preConfigure = " - echo 'GhcThreaded=NO' > mk/build.mk - rm libraries/haskell-src/Language/Haskell/Parser.ly + # still requires a hack for ncurses + sed -i \"s|^\\\(ld-options.*$\\\)|\\\1 -L${ncurses}/lib|\" libraries/readline/readline.buildinfo.in "; dontStrip = 1; + inherit (stdenv) gcc; + inherit readline gmp ncurses; }) diff --git a/pkgs/development/compilers/ghc-6.8/setup-hook.sh b/pkgs/development/compilers/ghc-6.8/setup-hook.sh index 23da6de0382..489c8d532b8 100644 --- a/pkgs/development/compilers/ghc-6.8/setup-hook.sh +++ b/pkgs/development/compilers/ghc-6.8/setup-hook.sh @@ -1,5 +1,5 @@ # Support dir for isolating GHC -ghc_support=$TMPDIR/ghc-6.6-nix-support +ghc_support=$TMPDIR/ghc-6.8-nix-support mkdir -p $ghc_support # Create isolated package config diff --git a/pkgs/development/compilers/ghc/boot.nix b/pkgs/development/compilers/ghc/boot.nix index bcb26327edb..bf096616a96 100644 --- a/pkgs/development/compilers/ghc/boot.nix +++ b/pkgs/development/compilers/ghc/boot.nix @@ -1,21 +1,56 @@ {stdenv, fetchurl, perl, readline, ncurses, gmp}: -assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; - stdenv.mkDerivation { - name = "ghc-6.4.2"; - builder = ./boot.sh; - src = if stdenv.system == "i686-linux" then - (fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/ghc-6.4.2-i386-unknown-linux.tar.bz2; - md5 = "092fe2e25dab22b926babe97cc77db1f"; - }) else - (fetchurl { - url = http://haskell.org/ghc/dist/6.4.2/ghc-6.4.2-x86_64-unknown-linux.tar.bz2; - md5 = "8f5fe48798f715cd05214a10987bf6d5"; - }); + name = if stdenv.system == "i686-darwin" then "ghc-6.6.1" else "ghc-6.4.2"; + + src = + if stdenv.system == "i686-linux" then + fetchurl { + url = http://nix.cs.uu.nl/dist/tarballs/ghc-6.4.2-i386-unknown-linux.tar.bz2; + md5 = "092fe2e25dab22b926babe97cc77db1f"; + } + else if stdenv.system == "x86_64-linux" then + fetchurl { + url = http://haskell.org/ghc/dist/6.4.2/ghc-6.4.2-x86_64-unknown-linux.tar.bz2; + md5 = "8f5fe48798f715cd05214a10987bf6d5"; + } + else if stdenv.system == "i686-darwin" then + fetchurl { + url = http://www.haskell.org/ghc/dist/6.6.1/ghc-6.6.1-i386-apple-darwin.tar.bz2; + sha256 = "1drbsicanr6jlykvs4vs6gbi2q9ac1bcaxz2vzwh3pfv3lfibwia"; + } + else throw "cannot bootstrap GHC on this platform"; + buildInputs = [perl]; - propagatedBuildInputs = [readline ncurses gmp]; dontStrip = 1; - inherit readline ncurses gmp; + + # On Linux, use patchelf to modify the executables so that they can + # find readline/gmp. + postBuild = if stdenv.isLinux then " + find . -type f -perm +100 \\ + -exec patchelf --interpreter \"$(cat $NIX_GCC/nix-support/dynamic-linker)\" \\ + --set-rpath \"${readline}/lib:${ncurses}/lib:${gmp}/lib\" {} \\; + " else ""; + + # The binaries for Darwin use frameworks, so fake those frameworks, + # and create some wrapper scripts that set DYLD_FRAMEWORK_PATH so + # that the executables work with no special setup. + postInstall = if stdenv.isDarwin then " + + ensureDir $out/frameworks/GMP.framework/Versions/A + ln -s ${gmp}/lib/libgmp.dylib $out/frameworks/GMP.framework/GMP + ln -s ${gmp}/lib/libgmp.dylib $out/frameworks/GMP.framework/Versions/A/GMP + ensureDir $out/frameworks/GNUreadline.framework/Versions/A + ln -s ${readline}/lib/libreadline.dylib $out/frameworks/GNUreadline.framework/GNUreadline + ln -s ${readline}/lib/libreadline.dylib $out/frameworks/GNUreadline.framework/Versions/A/GNUreadline + + mv $out/bin $out/bin-orig + mkdir $out/bin + for i in $(cd $out/bin-orig && ls); do + echo \"#! $SHELL -e\" >> $out/bin/$i + echo \"DYLD_FRAMEWORK_PATH=$out/frameworks exec $out/bin-orig/$i -framework-path $out/frameworks \\\"\\$@\\\"\" >> $out/bin/$i + chmod +x $out/bin/$i + done + + " else ""; } diff --git a/pkgs/development/compilers/ghc/boot.sh b/pkgs/development/compilers/ghc/boot.sh deleted file mode 100644 index 4b88b6bdba3..00000000000 --- a/pkgs/development/compilers/ghc/boot.sh +++ /dev/null @@ -1,10 +0,0 @@ -source $stdenv/setup - -postBuild=postBuild -postBuild () { - find . -type f -perm +100 \ - -exec patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ - --set-rpath "$readline/lib:$ncurses/lib:$gmp/lib" {} \; -} - -genericBuild diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index b643d88a3a9..9b12bc9a2f6 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -1,9 +1,9 @@ args: with args; stdenv.mkDerivation { - name = "guile-1.6.7"; + name = "guile-1.8.3"; src = fetchurl { - url = ftp://ftp.gnu.org/gnu/guile/guile-1.8.2.tar.gz; - sha256 = "03kn1ia4s7l24zl2sfbrns6fs3nc9cw2pzsqx8y7wwr80b1nfxhz"; + url = ftp://ftp.gnu.org/gnu/guile/guile-1.8.3.tar.gz; + sha256 = "2ab59099cf2d46f57cf5421c9b84aa85f61961640046e8066c6b321257517796"; }; propagatedBuildInputs = [readline libtool gmp]; diff --git a/pkgs/development/interpreters/php_configurable/default.nix b/pkgs/development/interpreters/php_configurable/default.nix index 9a1eeeb67a3..91e0518ccd3 100644 --- a/pkgs/development/interpreters/php_configurable/default.nix +++ b/pkgs/development/interpreters/php_configurable/default.nix @@ -1,3 +1,15 @@ +/* TODO check security issues such as : ++--------------------------------------------------------------------+ +| *** WARNING *** | +| | +| You will be compiling the CGI version of PHP without any | +| redirection checking. By putting this cgi binary somewhere in | +| your web space, users may be able to circumvent existing .htaccess | +| security by loading files directly through the parser. See | +| http://www.php.net/manual/security.php for more details. | +*/ + + args: ( args.mkDerivationByConfiguration { flagConfig = { @@ -394,7 +406,7 @@ args: # SAPI modules: apxs2 = { cfgOption = "--with-apxs2=\$apacheHttpd/bin/apxs"; - pass = { inherit (args) apacheHttpd; }; }; + pass = "apacheHttpd"; }; # Extensions @@ -425,6 +437,22 @@ args: If unspecified, the default locations are searched */ + /* + Building xdebug withing php to be able to add the parameters to the ini file.. Ther should be a better way + meta = { + description = "debugging support for PHP"; + homepage = http://xdebug.org; + license = "based on the PHP license - as is"; + }; + */ + xdebug = { buildInputs = [ "automake" "autoconf" ]; + pass = { xdebug_src = args.fetchurl { + name = "xdebug-2.0.2.tar.gz"; + url = "http://xdebug.org/link.php?url=xdebug202"; + sha256 = "1h0bxvf8krr203fmk1k7izrrr81gz537xmd3pqh4vslwdlbhrvic"; + };};}; + + }; defaults = [ "mysql" "mysqli" "pdo_mysql" "libxml2" "apxs2" ]; @@ -436,19 +464,43 @@ args: extraAttrs = co : { name = "php_configurable-5.2.4"; - buildInputs = ( args.lib.getAttr [ "phpIncludes" ] [] args ); - + buildInputs = ( args.lib.getAttr [ "phpIncludes" ] [] args ) ++ co.buildInputs; configurePhase = " iniFile=\$out/etc/\$name.ini [[ -z \"\$libxml2\" ]] || export PATH=\$PATH:\$libxml2/bin - ./configure --with-config-file-path=\$iniFile --prefix=\$out " + co.configureFlags; + ./configure --with-config-file-scan-dir=/etc --with-config-file-path=\$iniFile --prefix=\$out " + co.configureFlags + " + echo configurePhase end + "; installPhase = " unset installPhase; installPhase; cp php.ini-recommended $\iniFile - echo \"include_path=.\$PATH_DELIMITER\$out/lib/php\$PATH_DELIMITER\$PHP_INCLUDES\" > \$iniFile + + # Now Let's build xdebug if flag has been given + # TODO I think there are better paths than the given below + if [ -n \$flag_set_xdebug ]; then + PATH=\$PATH:\$out/bin + tar xfz \$xdebug_src; + cd xdebug* + phpize + ./configure --prefix=\$out + make + ensureDir \$out/lib; cp modules/xdebug.so $out/lib +cat >> $iniFile << EOF +zend_extension=\"\$out/lib/xdebug.so\" +zend_extension_ts=\"\$out/lib/xdebug.so\" +zend_extension_debug=\"\$out/lib/xdebug.so\" +xdebug.remote_enable=true +xdebug.remote_host=127.0.0.1 +xdebug.remote_port=9000 +xdebug.remote_handler=dbgp +xdebug.profiler_enable=0 +xdebug.profiler_output_dir=\"/tmp/xdebug\" +xdebug.remote_mode=req +EOF + fi "; src = args.fetchurl { diff --git a/pkgs/development/interpreters/tcl/default.nix b/pkgs/development/interpreters/tcl/default.nix index 0fce5d3236a..1401757c267 100644 --- a/pkgs/development/interpreters/tcl/default.nix +++ b/pkgs/development/interpreters/tcl/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "tcl-8.4.13"; + name = "tcl-8.4.16"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/tcl/tcl8.4.13-src.tar.gz; - md5 = "c6b655ad5db095ee73227113220c0523"; + url = mirror://sourceforge/tcl/tcl8.4.16-src.tar.gz; + sha256 = "0v9mh53kdvfm4kxgsw8gfxsfl8kvbnnp22bpwyyg5sa4jyjjbs93"; }; } diff --git a/pkgs/development/libraries/acl/acl-2.2.45-patch b/pkgs/development/libraries/acl/acl-2.2.45-patch new file mode 100644 index 00000000000..557381922c3 --- /dev/null +++ b/pkgs/development/libraries/acl/acl-2.2.45-patch @@ -0,0 +1,222 @@ +diff -u -U3 -r acl-2.2.45-orig/aclocal.m4 acl-2.2.45-mod/aclocal.m4 +--- acl-2.2.45-orig/aclocal.m4 2007-12-23 16:16:11.000000000 +0300 ++++ acl-2.2.45-mod/aclocal.m4 2007-12-23 18:09:04.000000000 +0300 +@@ -228,32 +228,32 @@ + AC_PACKAGE_NEED_UTILITY($1, "$cc", cc, [C compiler]) + + if test -z "$MAKE"; then +- AC_PATH_PROG(MAKE, gmake,, /usr/bin:/usr/local/bin:/usr/freeware/bin) ++ AC_PATH_PROG(MAKE, gmake,,) + fi + if test -z "$MAKE"; then +- AC_PATH_PROG(MAKE, make,, /usr/bin) ++ AC_PATH_PROG(MAKE, make,, ) + fi + make=$MAKE + AC_SUBST(make) + AC_PACKAGE_NEED_UTILITY($1, "$make", make, [GNU make]) + + if test -z "$LIBTOOL"; then +- AC_PATH_PROG(LIBTOOL, glibtool,, /usr/bin) ++ AC_PATH_PROG(LIBTOOL, glibtool,, ) + fi + if test -z "$LIBTOOL"; then +- AC_PATH_PROG(LIBTOOL, libtool,, /usr/bin:/usr/local/bin:/usr/freeware/bin) ++ AC_PATH_PROG(LIBTOOL, libtool,, ) + fi + libtool=$LIBTOOL + AC_SUBST(libtool) + AC_PACKAGE_NEED_UTILITY($1, "$libtool", libtool, [GNU libtool]) + + if test -z "$TAR"; then +- AC_PATH_PROG(TAR, tar,, /usr/freeware/bin:/bin:/usr/local/bin:/usr/bin) ++ AC_PATH_PROG(TAR, tar,, ) + fi + tar=$TAR + AC_SUBST(tar) + if test -z "$ZIP"; then +- AC_PATH_PROG(ZIP, gzip,, /bin:/usr/bin:/usr/local/bin:/usr/freeware/bin) ++ AC_PATH_PROG(ZIP, gzip,, ) + fi + + zip=$ZIP +@@ -266,25 +266,25 @@ + AC_SUBST(makedepend) + + if test -z "$AWK"; then +- AC_PATH_PROG(AWK, awk,, /bin:/usr/bin) ++ AC_PATH_PROG(AWK, awk,, ) + fi + awk=$AWK + AC_SUBST(awk) + + if test -z "$SED"; then +- AC_PATH_PROG(SED, sed,, /bin:/usr/bin) ++ AC_PATH_PROG(SED, sed,, ) + fi + sed=$SED + AC_SUBST(sed) + + if test -z "$ECHO"; then +- AC_PATH_PROG(ECHO, echo,, /bin:/usr/bin) ++ AC_PATH_PROG(ECHO, echo,, ) + fi + echo=$ECHO + AC_SUBST(echo) + + if test -z "$SORT"; then +- AC_PATH_PROG(SORT, sort,, /bin:/usr/bin) ++ AC_PATH_PROG(SORT, sort,, ) + fi + sort=$SORT + AC_SUBST(sort) +@@ -294,21 +294,21 @@ + + if test "$enable_gettext" = yes; then + if test -z "$MSGFMT"; then +- AC_PATH_PROG(MSGFMT, msgfmt,, /usr/bin:/usr/local/bin:/usr/freeware/bin) ++ AC_PATH_PROG(MSGFMT, msgfmt,, ) + fi + msgfmt=$MSGFMT + AC_SUBST(msgfmt) + AC_PACKAGE_NEED_UTILITY($1, "$msgfmt", msgfmt, gettext) + + if test -z "$MSGMERGE"; then +- AC_PATH_PROG(MSGMERGE, msgmerge,, /usr/bin:/usr/local/bin:/usr/freeware/bin) ++ AC_PATH_PROG(MSGMERGE, msgmerge,, ) + fi + msgmerge=$MSGMERGE + AC_SUBST(msgmerge) + AC_PACKAGE_NEED_UTILITY($1, "$msgmerge", msgmerge, gettext) + + if test -z "$XGETTEXT"; then +- AC_PATH_PROG(XGETTEXT, xgettext,, /usr/bin:/usr/local/bin:/usr/freeware/bin) ++ AC_PATH_PROG(XGETTEXT, xgettext,, ) + fi + xgettext=$XGETTEXT + AC_SUBST(xgettext) +@@ -316,7 +316,7 @@ + fi + + if test -z "$RPM"; then +- AC_PATH_PROG(RPM, rpm,, /bin:/usr/bin:/usr/freeware/bin) ++ AC_PATH_PROG(RPM, rpm,, ) + fi + rpm=$RPM + AC_SUBST(rpm) +ôÏÌØËÏ × acl-2.2.45-orig/: configure +diff -u -U3 -r acl-2.2.45-orig/m4/package_utilies.m4 acl-2.2.45-mod/m4/package_utilies.m4 +--- acl-2.2.45-orig/m4/package_utilies.m4 2007-12-23 16:16:11.000000000 +0300 ++++ acl-2.2.45-mod/m4/package_utilies.m4 2007-12-23 18:01:28.000000000 +0300 +@@ -23,32 +23,26 @@ + AC_PACKAGE_NEED_UTILITY($1, "$cc", cc, [C compiler]) + + if test -z "$MAKE"; then +- AC_PATH_PROG(MAKE, gmake,, /usr/bin:/usr/local/bin:/usr/freeware/bin) + fi + if test -z "$MAKE"; then +- AC_PATH_PROG(MAKE, make,, /usr/bin) + fi + make=$MAKE + AC_SUBST(make) + AC_PACKAGE_NEED_UTILITY($1, "$make", make, [GNU make]) + + if test -z "$LIBTOOL"; then +- AC_PATH_PROG(LIBTOOL, glibtool,, /usr/bin) + fi + if test -z "$LIBTOOL"; then +- AC_PATH_PROG(LIBTOOL, libtool,, /usr/bin:/usr/local/bin:/usr/freeware/bin) + fi + libtool=$LIBTOOL + AC_SUBST(libtool) + AC_PACKAGE_NEED_UTILITY($1, "$libtool", libtool, [GNU libtool]) + + if test -z "$TAR"; then +- AC_PATH_PROG(TAR, tar,, /usr/freeware/bin:/bin:/usr/local/bin:/usr/bin) + fi + tar=$TAR + AC_SUBST(tar) + if test -z "$ZIP"; then +- AC_PATH_PROG(ZIP, gzip,, /bin:/usr/bin:/usr/local/bin:/usr/freeware/bin) + fi + + zip=$ZIP +@@ -61,25 +55,21 @@ + AC_SUBST(makedepend) + + if test -z "$AWK"; then +- AC_PATH_PROG(AWK, awk,, /bin:/usr/bin) + fi + awk=$AWK + AC_SUBST(awk) + + if test -z "$SED"; then +- AC_PATH_PROG(SED, sed,, /bin:/usr/bin) + fi + sed=$SED + AC_SUBST(sed) + + if test -z "$ECHO"; then +- AC_PATH_PROG(ECHO, echo,, /bin:/usr/bin) + fi + echo=$ECHO + AC_SUBST(echo) + + if test -z "$SORT"; then +- AC_PATH_PROG(SORT, sort,, /bin:/usr/bin) + fi + sort=$SORT + AC_SUBST(sort) +@@ -89,21 +79,18 @@ + + if test "$enable_gettext" = yes; then + if test -z "$MSGFMT"; then +- AC_PATH_PROG(MSGFMT, msgfmt,, /usr/bin:/usr/local/bin:/usr/freeware/bin) + fi + msgfmt=$MSGFMT + AC_SUBST(msgfmt) + AC_PACKAGE_NEED_UTILITY($1, "$msgfmt", msgfmt, gettext) + + if test -z "$MSGMERGE"; then +- AC_PATH_PROG(MSGMERGE, msgmerge,, /usr/bin:/usr/local/bin:/usr/freeware/bin) + fi + msgmerge=$MSGMERGE + AC_SUBST(msgmerge) + AC_PACKAGE_NEED_UTILITY($1, "$msgmerge", msgmerge, gettext) + + if test -z "$XGETTEXT"; then +- AC_PATH_PROG(XGETTEXT, xgettext,, /usr/bin:/usr/local/bin:/usr/freeware/bin) + fi + xgettext=$XGETTEXT + AC_SUBST(xgettext) +@@ -111,7 +98,6 @@ + fi + + if test -z "$RPM"; then +- AC_PATH_PROG(RPM, rpm,, /bin:/usr/bin:/usr/freeware/bin) + fi + rpm=$RPM + AC_SUBST(rpm) +diff -u -U3 -r acl-2.2.45-orig/Makefile acl-2.2.45-mod/Makefile +--- acl-2.2.45-orig/Makefile 2007-12-23 16:16:11.000000000 +0300 ++++ acl-2.2.45-mod/Makefile 2007-12-23 18:01:28.000000000 +0300 +@@ -33,19 +33,6 @@ + endif + + $(CONFIGURE): +- autoconf +- ./configure \ +- --prefix=/ \ +- --exec-prefix=/ \ +- --sbindir=/bin \ +- --bindir=/usr/bin \ +- --libdir=/lib \ +- --libexecdir=/usr/lib \ +- --enable-lib64=yes \ +- --includedir=/usr/include \ +- --mandir=/usr/share/man \ +- --datadir=/usr/share \ +- $$LOCAL_CONFIGURE_OPTIONS + touch .census + + aclocal.m4:: diff --git a/pkgs/development/libraries/acl/builder.sh b/pkgs/development/libraries/acl/builder.sh new file mode 100644 index 00000000000..4cabc84f828 --- /dev/null +++ b/pkgs/development/libraries/acl/builder.sh @@ -0,0 +1,12 @@ +source $stdenv/setup + +preConfigure() { + rm configure + autoconf +} + +preConfigure=preConfigure + +installFlags='install-lib install-dev' + +genericBuild diff --git a/pkgs/development/libraries/acl/default.nix b/pkgs/development/libraries/acl/default.nix new file mode 100644 index 00000000000..b9992af612e --- /dev/null +++ b/pkgs/development/libraries/acl/default.nix @@ -0,0 +1,14 @@ +args: with args; + +stdenv.mkDerivation { + name = "acl-2.2.45"; + + builder = ./builder.sh; + src = + fetchurl { + url = ftp://oss.sgi.com/projects/xfs/cmd_tars/acl_2.2.45-1.tar.gz; + sha256 = "1bb2k5br494yk863w27k1h8gkdkq4kzakvajhj844hl1cixhhf1a"; + }; + buildInputs = [autoconf libtool gettext attr]; + patches = [ ./acl-2.2.45-patch ]; +} diff --git a/pkgs/development/libraries/attr/builder.sh b/pkgs/development/libraries/attr/builder.sh index af71890f0c0..78f10591142 100644 --- a/pkgs/development/libraries/attr/builder.sh +++ b/pkgs/development/libraries/attr/builder.sh @@ -6,4 +6,6 @@ preConfigure() { preConfigure=preConfigure +installFlags='install-lib install-dev' + genericBuild diff --git a/pkgs/development/libraries/audiofile/default.nix b/pkgs/development/libraries/audiofile/default.nix index a10ec7a95c3..de02110aeeb 100644 --- a/pkgs/development/libraries/audiofile/default.nix +++ b/pkgs/development/libraries/audiofile/default.nix @@ -1,9 +1,9 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "audiofile-0.2.3"; + name = "audiofile-0.2.6"; src = fetchurl { - url = http://www.68k.org/~michael/audiofile/audiofile-0.2.5.tar.gz; - md5 = "fd07c62a17ceafa317929e55e51e26c5"; + url = http://www.68k.org/~michael/audiofile/audiofile-0.2.6.tar.gz; + sha256 = "1a921w6jwcnkmx3vm091qrj7109jzri6kw4ygjq6ym91dssnfqab"; }; } diff --git a/pkgs/development/libraries/boehm-gc/default.nix b/pkgs/development/libraries/boehm-gc/default.nix index d46b1fe7016..ba81b16bcf6 100644 --- a/pkgs/development/libraries/boehm-gc/default.nix +++ b/pkgs/development/libraries/boehm-gc/default.nix @@ -1,9 +1,13 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "boehm-gc-6.8"; + name = "boehm-gc-7.0"; src = fetchurl { - url = http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.8.tar.gz; - md5 = "418d38bd9c66398386a372ec0435250e"; + url = http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.0.tar.gz; + sha256 = "0nqy0462ainp79fjmx5lgr89s2d433fggr3n9d1p09xq77lwc2nj"; + }; + meta = { + description = "A garbage collector for C and C++"; + homepage = http://www.hpl.hp.com/personal/Hans_Boehm/gc/; }; } diff --git a/pkgs/development/libraries/coredumper/default.nix b/pkgs/development/libraries/coredumper/default.nix index d6943affbed..f62289ea181 100644 --- a/pkgs/development/libraries/coredumper/default.nix +++ b/pkgs/development/libraries/coredumper/default.nix @@ -1,9 +1,9 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "coredumper-0.2"; + name = "coredumper-1.1"; src = fetchurl { - url = mirror://sourceforge/goog-coredumper/coredumper-0.2.tar.gz; - md5 = "024f8e4afe73c4cc4f4a0b0ef585e9b7"; + url = http://google-coredumper.googlecode.com/files/coredumper-1.1.tar.gz; + sha256 = "1phl1zg2n17rp595dyzz9iw01gfdpsdh0l6wy2hfb5shi71h63rx"; }; } diff --git a/pkgs/development/libraries/cracklib/default.nix b/pkgs/development/libraries/cracklib/default.nix index 678d595703e..baa509eadb0 100644 --- a/pkgs/development/libraries/cracklib/default.nix +++ b/pkgs/development/libraries/cracklib/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "cracklib-2.8.9"; + name = "cracklib-2.8.12"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/cracklib/cracklib-2.8.9.tar.gz; - md5 = "9a8c9eb26b48787c84024ac779f64bb2"; + url = mirror://sourceforge/cracklib/cracklib-2.8.12.tar.gz; + sha256 = "0l9kar7h80kkvs394dyzbn02jkd8hzynh9kxyqrlacj1wp35rmah"; }; dicts = fetchurl { url = http://nix.cs.uu.nl/dist/tarballs/cracklib-words.gz; diff --git a/pkgs/development/libraries/db4/db4-4.4.nix b/pkgs/development/libraries/db4/db4-4.4.nix index 270f5359d95..2746d812723 100644 --- a/pkgs/development/libraries/db4/db4-4.4.nix +++ b/pkgs/development/libraries/db4/db4-4.4.nix @@ -4,7 +4,10 @@ stdenv.mkDerivation ({ name = "db4-4.4.20"; builder = ./builder.sh; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/db-4.4.20.NC.tar.gz; + urls = [ + http://download.oracle.com/berkeley-db/db-4.4.20.NC.tar.gz + http://nix.cs.uu.nl/dist/tarballs/db-4.4.20.NC.tar.gz + ]; md5 = "afd9243ea353bbaa04421488d3b37900"; }; configureFlags = [ diff --git a/pkgs/development/libraries/expat/default.nix b/pkgs/development/libraries/expat/default.nix index 48753842245..cd546a58169 100644 --- a/pkgs/development/libraries/expat/default.nix +++ b/pkgs/development/libraries/expat/default.nix @@ -1,7 +1,7 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "expat-2.0.0"; + name = "expat-2.0.1"; src = fetchurl { - url = mirror://sourceforge/expat/expat-2.0.0.tar.gz; - md5 = "d945df7f1c0868c5c73cf66ba9596f3f"; + url = mirror://sourceforge/expat/expat-2.0.1.tar.gz; + sha256 = "14sy5qx9hgjyfs743iq8ywldhp5w4n6cscqf2p4hgrw6vys60xl4"; }; } diff --git a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix index f3611afb0b6..90978eb2908 100644 --- a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix +++ b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix @@ -5,7 +5,8 @@ stdenv.mkDerivation { src = fetchsvn { url = svn://svn.mplayerhq.hu/ffmpeg/trunk ; rev = "11164"; - sha256 = "95658455e466aeab5a302ddd6e7b2f79f620d4495012add46028a548e6c364b2"; + #sha256 = "95658455e466aeab5a302ddd6e7b2f79f620d4495012add46028a548e6c364b2"; + sha256 = "c97b0cd791f8408cfc69452ff7afbf00d34b367e493dfbcae830fba99c229189"; }; /*fetchurl { url = http://ffmpeg.mplayerhq.hu/ffmpeg-export-snapshot.tar.bz2; diff --git a/pkgs/development/libraries/giflib/default.nix b/pkgs/development/libraries/giflib/default.nix new file mode 100644 index 00000000000..35d66b3647b --- /dev/null +++ b/pkgs/development/libraries/giflib/default.nix @@ -0,0 +1,10 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "giflib-4.1.6"; + src = fetchurl { + url = mirror://sourceforge/giflib/giflib-4.1.6.tar.bz2; + sha256 = "1v9b7ywz7qg8hli0s9vv1b8q9xxb2xvqq2mg1zpr73xwqpcwxhg1"; + }; +} + diff --git a/pkgs/development/libraries/libungif/default.nix b/pkgs/development/libraries/giflib/libungif.nix similarity index 69% rename from pkgs/development/libraries/libungif/default.nix rename to pkgs/development/libraries/giflib/libungif.nix index b0bbb46eaf5..f3302f8f333 100644 --- a/pkgs/development/libraries/libungif/default.nix +++ b/pkgs/development/libraries/giflib/libungif.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "libungif-4.1.4"; src = fetchurl { - url = mirror://sourceforge/libungif/libungif-4.1.4.tar.gz; + url = mirror://sourceforge/giflib/libungif-4.1.4.tar.gz; md5 = "efdfcf8e32e35740288a8c5625a70ccb"; }; } diff --git a/pkgs/development/libraries/gmp/default.nix b/pkgs/development/libraries/gmp/default.nix index 364cb73bbb7..b8d915d1fac 100644 --- a/pkgs/development/libraries/gmp/default.nix +++ b/pkgs/development/libraries/gmp/default.nix @@ -1,11 +1,20 @@ {stdenv, fetchurl, m4}: stdenv.mkDerivation { - name = "gmp-4.2.1"; + name = "gmp-4.2.2"; + src = fetchurl { - url = mirror://gnu/gmp/gmp-4.2.1.tar.bz2; - md5 = "091c56e0e1cca6b09b17b69d47ef18e3"; + url = mirror://gnu/gmp/gmp-4.2.2.tar.bz2; + sha256 = "0yv593sk62ypn21gg2x570g955lmsi4i6f2bc3s43p52myn0lb1b"; }; + buildInputs = [m4]; + doCheck = true; + + meta = { + description = "A free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers"; + homepage = http://gmplib.org/; + license = "LGPL"; + }; } diff --git a/pkgs/development/libraries/libcaca/default.nix b/pkgs/development/libraries/libcaca/default.nix index 080c1efbc73..95e99710c6e 100644 --- a/pkgs/development/libraries/libcaca/default.nix +++ b/pkgs/development/libraries/libcaca/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, ncurses}: stdenv.mkDerivation { - name = "libcaca-0.99-beta11"; + name = "libcaca-0.99-beta13b"; src = fetchurl { - url = http://libcaca.zoy.org/files/libcaca-0.99.beta11.tar.gz; - sha256 = "1kj0rkfbmq8kc3pi3p323ifx5yp9pcmbnxln7phxj5k4v7ngyld7"; + url = http://libcaca.zoy.org/files/libcaca-0.99.beta13b.tar.gz; + sha256 = "0xy8pcnljnj5la97bzbwwyzyqa7dr3v9cyw8gdjzdfgqywvac1vg"; }; configureFlags = "--disable-x11 --disable-imlib2 --disable-doc"; propagatedBuildInputs = [ncurses]; diff --git a/pkgs/development/libraries/libdv/default.nix b/pkgs/development/libraries/libdv/default.nix new file mode 100644 index 00000000000..4b0e05acf98 --- /dev/null +++ b/pkgs/development/libraries/libdv/default.nix @@ -0,0 +1,30 @@ +args: +let edf = args.lib.enableDisableFeature; in +( args.mkDerivationByConfiguration { + flagConfig = { } + # TODO! implement flags + # I want to get kino and cinelerra working. That's why I don't spend more time on this now + // edf "libtool_lock" "libtool_lock" { } #avoid locking (might break parallel builds) + // edf "asm" "asm" { } #disable use of architecture specific assembly code + // edf "sdl" "sdl" { } #enable use of SDL for display + // edf "gtk" "gtk" { } #disable use of gtk for display + // edf "xv" "xv" { } #disable use of XVideo extension for display + // edf "gprof" "gprof" { } #enable compiler options for gprof profiling + ; + + extraAttrs = co : { + name = "libdv-1.0.0"; + + src = args.fetchurl { + url = mirror://sourceforge/libdv/libdv-1.0.0.tar.gz; + sha256 = "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3"; + }; + + meta = { + description = "software decoder for DV format video, as defined by the IEC 61834 and SMPTE 314M standards"; + homepage = http://sourceforge.net/projects/libdv/; + # you can choose one of the following licenses: + license = []; + }; + }; +} ) args diff --git a/pkgs/development/libraries/libpcap/default.nix b/pkgs/development/libraries/libpcap/default.nix index 25d1105eac6..95fbbbbfbab 100644 --- a/pkgs/development/libraries/libpcap/default.nix +++ b/pkgs/development/libraries/libpcap/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, flex, bison}: stdenv.mkDerivation { - name = "libpcap-0.9.5"; + name = "libpcap-0.9.8"; src = fetchurl { - url = http://www.tcpdump.org/release/libpcap-0.9.5.tar.gz; - md5 = "b0626ad59004fe5767ddd2ce743a2271"; + url = http://www.tcpdump.org/release/libpcap-0.9.8.tar.gz; + sha256 = "1yb2hg8jd1bzq3lbrff1sps4757krvj2c9pm2ixn44a4vsc865f4"; }; buildInputs = [flex bison]; configureFlags = " diff --git a/pkgs/development/libraries/libpng/default.nix b/pkgs/development/libraries/libpng/default.nix index b600cf0840b..f6252c794ce 100644 --- a/pkgs/development/libraries/libpng/default.nix +++ b/pkgs/development/libraries/libpng/default.nix @@ -3,10 +3,10 @@ assert zlib != null; stdenv.mkDerivation { - name = "libpng-1.2.18"; + name = "libpng-1.2.24"; src = fetchurl { - url = mirror://sourceforge/libpng/libpng-1.2.18.tar.bz2; - sha256 = "0qhcy8r0r8280wahs91xi4p79gm2cb021x9bcww1r5bywvwn5kkg"; + url = mirror://sourceforge/libpng/libpng-1.2.24.tar.bz2; + sha256 = "0kd0qkakc5zh2inrzw5r0h02761v1s9q223lv7za7iaxyl4byash"; }; propagatedBuildInputs = [zlib]; inherit zlib; diff --git a/pkgs/development/libraries/libraw1394/default.nix b/pkgs/development/libraries/libraw1394/default.nix new file mode 100644 index 00000000000..62398404ac2 --- /dev/null +++ b/pkgs/development/libraries/libraw1394/default.nix @@ -0,0 +1,17 @@ +args: +args.stdenv.mkDerivation { + name = "libraw1394-1.2.0"; + + src = args.fetchurl { + url = "mirror://sourceforge/libraw1394/libraw1394-1.2.0.tar.gz"; + sha256 = "1b9zqqzyz0ihyfvhn135y3wc6vmym5yz21jxj9dp0f09b96gmp0z"; + }; + + buildInputs =(with args; []); + + meta = { + description = "library providing direct access to the IEEE 1394 bus through the Linux 1394 subsystem's raw1394 user space interface"; + homepage = "http://wiki.linux1394.org/"; + license = ["GPL" "LGPL"]; + }; +} diff --git a/pkgs/development/libraries/libtheora/default.nix b/pkgs/development/libraries/libtheora/default.nix index f0c637d0f23..2a6f2254c14 100644 --- a/pkgs/development/libraries/libtheora/default.nix +++ b/pkgs/development/libraries/libtheora/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, libogg, libvorbis}: stdenv.mkDerivation { - name = "libtheora-1.0alpha7"; + name = "libtheora-1.0beta2"; src = fetchurl { - url = http://downloads.xiph.org/releases/theora/libtheora-1.0alpha7.tar.bz2; - md5 = "1bc851e39e4b16977131d5e5f769f48b"; + url = http://downloads.xiph.org/releases/theora/libtheora-1.0beta2.tar.gz; + sha256 = "0iwwprpi4s9y37c5yvlb572wd5gb2s635pxrkz5589266g1j1dcg"; }; propagatedBuildInputs = [libogg libvorbis]; } diff --git a/pkgs/development/libraries/libvorbis/default.nix b/pkgs/development/libraries/libvorbis/default.nix index cdcee814917..1b3a7c81146 100644 --- a/pkgs/development/libraries/libvorbis/default.nix +++ b/pkgs/development/libraries/libvorbis/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, libogg}: stdenv.mkDerivation { - name = "libvorbis-1.1.2"; + name = "libvorbis-1.2.0"; src = fetchurl { - url = http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz; - md5 = "37847626b8e1b53ae79a34714c7b3211"; + url = http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.bz2; + sha256 = "0nq62b8y2rhhgxxyiw6b4wchic61q5v649fdl8dd7090nxxcbx4y"; }; buildInputs = [libogg]; } diff --git a/pkgs/development/libraries/libwpd/default.nix b/pkgs/development/libraries/libwpd/default.nix index 630eb44753b..c2b89c1361f 100644 --- a/pkgs/development/libraries/libwpd/default.nix +++ b/pkgs/development/libraries/libwpd/default.nix @@ -1,9 +1,9 @@ args: with args; stdenv.mkDerivation { - name = "libwpd-0.8.5"; + name = "libwpd-0.8.13"; src = fetchurl { - url = mirror://sourceforge/libwpd/libwpd-0.8.5.tar.gz; - md5 = "6b679e205a2805c3d23f41c65b35e266"; + url = mirror://sourceforge/libwpd/libwpd-0.8.13.tar.gz; + sha256 = "08mb8bp0d3387l1snii4c0ighfhkby7qx2b3wymqb4a0l76rlzfn"; }; buildInputs = [pkgconfig glib libgsf libxml2 bzip2]; } diff --git a/pkgs/development/libraries/popt/popt-1.7.nix b/pkgs/development/libraries/popt/popt-1.7.nix index 1170760c828..9ae06b0ed26 100644 --- a/pkgs/development/libraries/popt/popt-1.7.nix +++ b/pkgs/development/libraries/popt/popt-1.7.nix @@ -5,7 +5,10 @@ assert gettext != null; stdenv.mkDerivation { name = "popt-1.7"; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/popt-1.7.tar.gz; + urls = [ + ftp://distro.ibiblio.org/pub/linux/distributions/pdaxrom/src/popt-1.7.tar.gz + http://nix.cs.uu.nl/dist/tarballs/popt-1.7.tar.gz + ]; md5 = "5988e7aeb0ae4dac8d83561265984cc9"; }; buildInputs = [gettext]; diff --git a/pkgs/development/libraries/readline/readline5.nix b/pkgs/development/libraries/readline/readline5.nix index f5271f01bcc..a0e7ffd72d2 100644 --- a/pkgs/development/libraries/readline/readline5.nix +++ b/pkgs/development/libraries/readline/readline5.nix @@ -7,4 +7,5 @@ stdenv.mkDerivation { md5 = "e39331f32ad14009b9ff49cc10c5e751"; }; propagatedBuildInputs = [ncurses]; + patches = stdenv.lib.optional stdenv.isDarwin ./shobj-darwin.patch; } diff --git a/pkgs/development/libraries/readline/shobj-darwin.patch b/pkgs/development/libraries/readline/shobj-darwin.patch new file mode 100644 index 00000000000..a9199ca3e89 --- /dev/null +++ b/pkgs/development/libraries/readline/shobj-darwin.patch @@ -0,0 +1,11 @@ +--- a/support/shobj-conf.orig 2006-04-11 06:15:43.000000000 -0700 ++++ b/support/shobj-conf 2007-11-08 01:15:43.000000000 -0800 +@@ -171,7 +171,7 @@ + SHLIB_LIBSUFF='dylib' + + case "${host_os}" in +- darwin[78]*) SHOBJ_LDFLAGS='' ++ darwin[789]*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; + *) SHOBJ_LDFLAGS='-dynamic' diff --git a/pkgs/development/libraries/speex/default.nix b/pkgs/development/libraries/speex/default.nix index 556b6c19dcc..6904339a57c 100644 --- a/pkgs/development/libraries/speex/default.nix +++ b/pkgs/development/libraries/speex/default.nix @@ -1,10 +1,10 @@ args: with args; stdenv.mkDerivation { - name = "speex-1.2beta2"; + name = "speex-1.2beta3"; src = fetchurl { - url = http://downloads.us.xiph.org/releases/speex/speex-1.2beta2.tar.gz; - sha256 = "1np34q5i7yswkgknb8pa6ngqb4l4jv84c9yqnn0215vncbl76xg5"; + url = http://downloads.us.xiph.org/releases/speex/speex-1.2beta3.tar.gz; + sha256 = "1az7kiwa8mzi1x7j01gcakx854qcbm4g67n0c4s56bvny6dn18vp"; }; buildInputs = [libogg]; } diff --git a/pkgs/development/libraries/t1lib/default.nix b/pkgs/development/libraries/t1lib/default.nix index c5b26424cdf..a3ebe5e27ca 100644 --- a/pkgs/development/libraries/t1lib/default.nix +++ b/pkgs/development/libraries/t1lib/default.nix @@ -1,11 +1,12 @@ -{stdenv, fetchurl, x11, libXaw}: +{stdenv, fetchurl, x11, libXaw, libXpm}: stdenv.mkDerivation { name = "t1lib-5.1.0"; src = fetchurl { - url = ftp://ftp.nluug.nl/pub/metalab/libs/graphics/t1lib-5.1.0.tar.gz; - md5 = "a05bed4aa63637052e60690ccde70421"; + url = ftp://ftp.nluug.nl/pub/metalab/libs/graphics/t1lib-5.1.1.tar.gz; + sha256 = "0r1wb94kjd8jwym9na2k2snikizrnyc4cf4mf92v89r4yy0apph8"; }; - buildInputs = [x11 libXaw]; + buildInputs = [x11 libXaw libXpm]; buildFlags = "without_doc"; } + diff --git a/pkgs/development/libraries/tk/default.nix b/pkgs/development/libraries/tk/default.nix index f36438e56d2..9e0a6b8c0da 100644 --- a/pkgs/development/libraries/tk/default.nix +++ b/pkgs/development/libraries/tk/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, tcl, x11}: stdenv.mkDerivation { - name = "tk-8.4.13"; + name = "tk-8.4.16"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/tcl/tk8.4.13-src.tar.gz; - md5 = "0a16d4d9398e43cbb85784c85fb807a4"; + url = mirror://sourceforge/tcl/tk8.4.16-src.tar.gz; + sha256 = "0cciavzd05bpm5yfppid0s0vsf8kabwia9620vgvi26sv1gjgwhb"; }; buildInputs = [tcl x11]; inherit tcl; diff --git a/pkgs/development/tools/misc/elfutils/default.nix b/pkgs/development/tools/misc/elfutils/0.127.nix similarity index 79% rename from pkgs/development/tools/misc/elfutils/default.nix rename to pkgs/development/tools/misc/elfutils/0.127.nix index a57792d7039..2337ebbdbd0 100644 --- a/pkgs/development/tools/misc/elfutils/default.nix +++ b/pkgs/development/tools/misc/elfutils/0.127.nix @@ -1,7 +1,7 @@ -{stdenv, fetchurl}: +args: with args; stdenv.mkDerivation { - name = "elfutils-0.127"; + name = "elfutils-"+version; src = fetchurl { url = http://nix.cs.uu.nl/dist/tarballs/elfutils-0.127.tar.gz; sha256 = "12n3h5r3c24a6l2wxz0w2dqq072bvgms0dzckivrwp5vdn22lpdv"; diff --git a/pkgs/development/tools/misc/elfutils/0.131.nix b/pkgs/development/tools/misc/elfutils/0.131.nix new file mode 100644 index 00000000000..5efe046493d --- /dev/null +++ b/pkgs/development/tools/misc/elfutils/0.131.nix @@ -0,0 +1,9 @@ +args: with args; + +stdenv.mkDerivation { + name = "elfutils-"+version; + src = fetchurl { + url = http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.131.orig.tar.gz; + sha256 = "0vqfjpcv81m3q0gsk78qykakhz9rbfwd65i4zsi03xr2lrk9ayll"; + }; +} diff --git a/pkgs/development/tools/misc/strace/default.nix b/pkgs/development/tools/misc/strace/default.nix index b94a313d23d..5091a715167 100644 --- a/pkgs/development/tools/misc/strace/default.nix +++ b/pkgs/development/tools/misc/strace/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "strace-4.5.15"; + name = "strace-4.5.16"; src = fetchurl { - url = mirror://sourceforge/strace/strace-4.5.15.tar.gz; - sha256 = "07n62yv53p2hsb59srfaxb0kk8b6p6iq77drmf65pq8jpa50s9ip"; + url = mirror://sourceforge/strace/strace-4.5.16.tar.bz2; + sha256 = "15ks9i1gv7mbyiwnzbjls2xy0pyv5x4j9a5ca2x0258fq8lxwdhp"; }; } diff --git a/pkgs/development/tools/misc/swig/default.nix b/pkgs/development/tools/misc/swig/default.nix index ca6aa2d2fce..72dd19b7af8 100644 --- a/pkgs/development/tools/misc/swig/default.nix +++ b/pkgs/development/tools/misc/swig/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { builder = ./builder.sh; src = fetchurl { - url = "mirror://sourceforge/swig/swig-1.3.33.tar.gz"; + url = mirror://sourceforge/swig/swig-1.3.33.tar.gz; sha256 = "02rz31i642sbsngny7k98d9hxlkcb9snvbzlnz3sh0qiyr3ciggv"; }; diff --git a/pkgs/development/tools/misc/valgrind/default.nix b/pkgs/development/tools/misc/valgrind/default.nix index 5fb0e85dda1..7f46228304b 100644 --- a/pkgs/development/tools/misc/valgrind/default.nix +++ b/pkgs/development/tools/misc/valgrind/default.nix @@ -1,16 +1,17 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "valgrind-3.2.3"; + name = "valgrind-3.3.0"; src = fetchurl { - url = http://valgrind.org/downloads/valgrind-3.2.3.tar.bz2; - sha256 = "0hf48y13mm1c1zg59bvkbr0lzcwng5mb33lgiv3d0gzl4w2r5jhv"; + url = http://valgrind.org/downloads/valgrind-3.3.0.tar.bz2; + sha256 = "0yllx5a2f5bx18gqz74aikr27zxwpblswn65lqvm9rbzswlq5w2s"; }; configureFlags = if stdenv.system == "x86_64-linux" then ["--enable-only64bit"] else []; meta = { + homepage = http://www.valgrind.org/; description = "Award-winning suite of tools for debugging and profiling Linux programs"; }; } diff --git a/pkgs/development/tools/parsing/alex/default.nix b/pkgs/development/tools/parsing/alex/default.nix new file mode 100644 index 00000000000..00d414d56bd --- /dev/null +++ b/pkgs/development/tools/parsing/alex/default.nix @@ -0,0 +1,23 @@ +{stdenv, fetchurl, ghc, perl}: + +stdenv.mkDerivation { + name = "alex-2.1.0"; + src = fetchurl { + url = http://www.haskell.org/alex/dist/2.1.0/alex-2.1.0.tar.gz; + sha1 = "37599b7be5249d639b3a5a3fdc61907dc4dad660"; + }; + buildInputs = [ghc perl]; + + configurePhase = " + ghc --make Setup.lhs + ./Setup configure --prefix=\"\${out}\" + "; + + buildPhase = " + ./Setup build + "; + + installPhase = " + ./Setup install + "; +} diff --git a/pkgs/development/tools/parsing/bison/bison-1.875.nix b/pkgs/development/tools/parsing/bison/bison-1.875.nix index 92aeafb335a..6a2ae1c794d 100644 --- a/pkgs/development/tools/parsing/bison/bison-1.875.nix +++ b/pkgs/development/tools/parsing/bison/bison-1.875.nix @@ -5,7 +5,9 @@ assert m4 != null; stdenv.mkDerivation { name = "bison-1.875"; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/bison-1.875.tar.bz2; + urls = [ http://nix.cs.uu.nl/dist/tarballs/bison-1.875.tar.bz2 + ftp://ftp.gnu.org/pub/gnu/bison/bison-1.875.tar.bz2 + ]; md5 = "b7f8027b249ebd4dd0cc948943a71af0"; }; buildInputs = [m4]; diff --git a/pkgs/development/tools/parsing/flex/flex-2.5.4a.nix b/pkgs/development/tools/parsing/flex/flex-2.5.4a.nix index 2d146eeca25..13bb6834979 100644 --- a/pkgs/development/tools/parsing/flex/flex-2.5.4a.nix +++ b/pkgs/development/tools/parsing/flex/flex-2.5.4a.nix @@ -5,7 +5,7 @@ assert yacc != null; stdenv.mkDerivation { name = "flex-2.5.4a"; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/flex-2.5.4a.tar.gz; + url = mirror://sourceforge/flex/flex-2.5.4a.tar.gz; md5 = "bd8753d0b22e1f4ec87a553a73021adf"; }; buildInputs = [yacc]; diff --git a/pkgs/lib/default-unstable.nix b/pkgs/lib/default-unstable.nix index 33fb68f5857..5653508dca9 100644 --- a/pkgs/lib/default-unstable.nix +++ b/pkgs/lib/default-unstable.nix @@ -37,6 +37,7 @@ rec { else [(head list) separator] ++ (intersperse separator (tail list)); + toList = x : if (__isList x) then x else [x]; concatStringsSep = separator: list: concatStrings (intersperse separator list); @@ -55,7 +56,7 @@ rec { # "y"] applied to some set e returns e.x.y, if it exists. The # default value is returned otherwise. # comment: I'd rename this to getAttrRec or something like that .. (has the same name as builtin.getAttr) - Marc Weber - getAttr = attrPath: default: e: + getAttr = attrPath : default : e : let { attr = head attrPath; body = @@ -64,6 +65,20 @@ rec { then getAttr (tail attrPath) default (builtins.getAttr attr e) else default; }; + #getAttr = attrPath: default: e: getAttrMap id; + + # the same as getAttr but if the element exists map the value using function f + # corresponds to the maybe function of haskell + getAttrMap = f : attrPath : default : e : + let { + attr = head attrPath; + body = + if attrPath == [] then e + else if builtins ? hasAttr && builtins.hasAttr attr e + then f (getAttr (tail attrPath) default (builtins.getAttr attr e)) + else default; + }; + # Filter a list using a predicate; that is, return a list containing @@ -116,7 +131,9 @@ rec { # Return a singleton list or an empty list, depending on a boolean # value. Useful when building lists with optional elements # (e.g. `++ optional (system == "i686-linux") flashplayer'). - optional = cond: elem: if cond then [elem] else []; + optional = cond: elem: if (cond) then [elem] else []; + + whenFlip = x : cond : if (cond) then x else ""; # Return a list of integers from `first' up to and including `last'. @@ -187,11 +204,12 @@ rec { mapRecordFlatten = f : r : map (attr: f attr (builtins.getAttr attr r) ) (attrNames r); # to be used with listToAttrs (_a_ttribute _v_alue) + # TODO should be renamed to nv because niksnut has renamed the attribute attr to name av = name : value : { inherit name value; }; # attribute set containing one attribute - avs = attr : value : listToAttrs [ (av attr value) ]; + avs = name : value : listToAttrs [ (av name value) ]; # adds / replaces an attribute of an attribute set - setAttr = set : attr : v : set // (avs attr v); + setAttr = set : name : v : set // (avs name v); id = x : x; # true if all/ at least one element(s) satisfy f @@ -203,12 +221,37 @@ rec { mergeAttrs = fold ( x : y : x // y) {}; + # Using f = a : b = b the result is similar to // + # merge attributes with custom function handling the case that the attribute + # exists in both sets + mergeAttrsWithFunc = f : set1 : set2 : + fold (n: set : if (__hasAttr n set) + then setAttr set n (f (__getAttr n set) (__getAttr n set2)) + else set ) + set1 (__attrNames set2); + + # merging two attribute set concatenating the values of same attribute names + # eg { a = 7; } { a = [ 2 3 ]; } becomes { a = [ 7 2 3 ]; } + mergeAttrsConcatenateValues = mergeAttrsWithFunc ( a : b : (toList a) ++ (toList b) ); + # returns atribute values as a list flattenAttrs = set : map ( attr : builtins.getAttr attr set) (attrNames set); mapIf = cond : f : fold ( x : l : if (cond x) then [(f x)] ++ l else l) []; # Marc 2nd proposal: (not everything has been tested in detail yet..) - + + # usage / example + # flagConfig = { + # } // (enableDisableFeature "flagName" "configure_feature" extraAttrs;) + # + # is equal to + # flagConfig = { + # flagName = { cfgOption = "--enable-configure_feature"; } // extraAttrs; + # no_flagName = { cfgOption = "--disable-configure_feature"; }; + enableDisableFeature = flagName : configure_feature : extraAttrs : + listToAttrs [ ( av flagName ({ cfgOption = "--enable-${configure_feature}"; } // extraAttrs ) ) + ( av "no_${flagName}" ({ cfgOption = "--disable-${configure_feature}"; } ) )]; + # calls chooseOptionsByFlags2 with some preprocessing # chooseOptionsByFlags2 returns an attribute set meant to be used to create new derivaitons. # see mkDerivationByConfiguration in all-packages.nix and the examples given below. @@ -266,6 +309,9 @@ rec { collectAttrs = attr : catAttrs attr flatOptions; optsConcatStrs = delimiter : attrs : concatStrings ( intersperse delimiter (flatten ( collectAttrs attrs ) ) ); + + ifStringGetArg = x : if (__isAttrs x) then x # ( TODO implement __isString ?) + else avs x (__getAttr x args); in assert ( all id ( mapRecordFlatten ( attr : r : if ( all id ( flatten (getAttr ["assertion"] [] r ) ) ) then true else throw "assertion failed flag ${attr}" ) @@ -279,13 +325,15 @@ rec { buildInputs = map ( attr: if (! hasAttr attr args) then throw "argument ${attr} is missing!" else (builtins.getAttr attr args) ) (flatten (catAttrs "buildInputs" flatOptions)); + propagatedBuildInputs = map ( attr: if (! hasAttr attr args) then throw "argument ${attr} is missing!" else (builtins.getAttr attr args) ) + (flatten (catAttrs "propagatedBuildInputs" flatOptions)); configureFlags = optsConcatStrs " " "cfgOption"; #flags = listToAttrs (map ( flag: av flag (hasAttr flag options) ) (attrNames flagConfig) ); flags_prefixed = listToAttrs (map ( flag: av ("flag_set_"+flag) (hasAttr flag options) ) (attrNames flagConfig) ); - pass = mergeAttrs (flatten (collectAttrs "pass") ); + pass = mergeAttrs ( map ifStringGetArg ( flatten (collectAttrs "pass") ) ); } # now add additional phase actions (see examples) // listToAttrs ( map ( x : av x (optsConcatStrs "\n" x) ) collectExtraPhaseActions ) ); } @@ -319,7 +367,8 @@ rec { # features: # * configure options are passed automatically # * buildInputs are collected (they are special, see the setup script) - # * they can be passed by additional name as well using pass = + # * they can be passed by additional name as well using pass = { inherit (args) python } + # ( or short (value not attrs) : pass = "python" ) # * an attribute named the same way as the flag is added indicating # true/ false (flag has been set/ not set) # * extra phase dependend commands can be added diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 3ad861ef19d..108d62b3d8a 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -10,6 +10,12 @@ in rec { listOfListsToAttrs = ll : builtins.listToAttrs (map (l : { name = (head l); value = (head (tail l)); }) ll); + + # Identity function. + id = x: x; + + + # !!! need documentation... innerSumArgs = f : x : y : (if y == null then (f x) else (innerSumArgs f (x // y))); sumArgs = f : innerSumArgs f {}; @@ -20,6 +26,7 @@ rec { f (tail (tail l)); pairMap = innerPairMap []; + # "Fold" a binary function `op' between successive elements of # `list' with `nul' as the starting value, i.e., `fold op nul [x_1 # x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))'. (This is @@ -66,14 +73,12 @@ rec { # "y"] applied to some set e returns e.x.y, if it exists. The # default value is returned otherwise. getAttr = attrPath: default: e: - let { - attr = head attrPath; - body = - if attrPath == [] then e - else if builtins ? hasAttr && builtins.hasAttr attr e - then getAttr (tail attrPath) default (builtins.getAttr attr e) - else default; - }; + let attr = head attrPath; + in + if attrPath == [] then e + else if builtins ? hasAttr && builtins.hasAttr attr e + then getAttr (tail attrPath) default (builtins.getAttr attr e) + else default; # Filter a list using a predicate; that is, return a list containing @@ -96,15 +101,33 @@ rec { else head found; + # Return true iff function `pred' returns true for at least element + # of `list'. + any = pred: list: + if list == [] then false + else if pred (head list) then true + else any pred (tail list); + + + # Return true iff function `pred' returns true for all elements of + # `list'. + all = pred: list: + if list == [] then true + else if pred (head list) then all pred (tail list) + else false; + + # Return true if each element of a list is equal, false otherwise. eqLists = xs: ys: if xs == [] && ys == [] then true else if xs == [] || ys == [] then false else head xs == head ys && eqLists (tail xs) (tail ys); + # Workaround, but works in stable Nix now. eqStrings = a: b: (a+(substring 0 0 b)) == ((substring 0 0 a)+b); + # Determine whether a filename ends in the given suffix. hasSuffix = ext: fileName: let lenFileName = stringLength fileName; @@ -126,6 +149,15 @@ rec { in src: builtins.filterSource filter src; + # Get all files ending with the specified suffices from the given + # directory. E.g. `sourceFilesBySuffices ./dir [".xml" ".c"]'. + sourceFilesBySuffices = path: exts: + let filter = name: type: + let base = baseNameOf (toString name); + in type != "directory" && any (ext: hasSuffix ext base) exts; + in builtins.filterSource filter path; + + # Return a singleton list or an empty list, depending on a boolean # value. Useful when building lists with optional elements # (e.g. `++ optional (system == "i686-linux") flashplayer'). @@ -191,6 +223,19 @@ rec { in uniqList {outputList=newOutputList; inputList = (tail inputList);}; + uniqListExt = {inputList, outputList ? [], + getter ? (x : x), compare ? (x: y: x==y)}: + if (inputList == []) then outputList else + let x=head inputList; + isX = y: (compare (getter y) (getter x)); + newOutputList = outputList ++ + (if any isX outputList then [] else [x]); + in uniqListExt {outputList=newOutputList; + inputList = (tail inputList); + inherit getter compare; + }; + + condConcat = name: list: checker: if list == [] then name else diff --git a/pkgs/misc/maven/maven-2.nix b/pkgs/misc/maven/maven-2.nix new file mode 100644 index 00000000000..9f96639689b --- /dev/null +++ b/pkgs/misc/maven/maven-2.nix @@ -0,0 +1,23 @@ +args: +args.stdenv.mkDerivation { + name = "maven-2.0.8-bin"; + + src = args.fetchurl { + # TODO mirrors + url = http://apache.linux-mirror.org/maven/binaries/apache-maven-2.0.8-bin.tar.bz2; + sha256 = "1wasvqplw7xk04j38vsq94zbrlpdg2k4348bg8730snr6zgaasai"; + }; + + phases = "unpackPhase installPhase"; + + installPhase = " + ensureDir \$out; mv * \$out + "; + + buildInputs =(with args; []); + + meta = { + description = "Java build tool"; + homepage = "apache.org"; + }; +} diff --git a/pkgs/misc/tex/auctex/default.nix b/pkgs/misc/tex/auctex/default.nix index 1059e85cdc0..117ccf9e3da 100644 --- a/pkgs/misc/tex/auctex/default.nix +++ b/pkgs/misc/tex/auctex/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, emacs, tetex }: - + stdenv.mkDerivation { name = "auctex-11.84"; meta = { diff --git a/pkgs/misc/xsane/default.nix b/pkgs/misc/xsane/default.nix index fd7828696d4..e389f17eb76 100644 --- a/pkgs/misc/xsane/default.nix +++ b/pkgs/misc/xsane/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, saneBackends, saneFrontends, libX11, gtk, pkgconfig, libusb ? null}: stdenv.mkDerivation { - name = "xsane-0.97"; + name = "xsane-0.995"; src = fetchurl { - url = ftp://ftp.sane-project.org/pub/sane/xsane/xsane-0.97.tar.gz; - md5 = "3d1f889d88c3462594febd53be58c561"; + url = ftp://ftp.sane-project.org/pub/sane/xsane/xsane-0.995.tar.gz; + sha256 = "02rl5bkk3z3k6s04ki14l12vsl5jnx4mri66m1hl799m7hjl5836"; }; buildInputs = [saneBackends saneFrontends libX11 gtk pkgconfig ] ++ diff --git a/pkgs/os-specific/linux/atheros/0.9.3.3.nix b/pkgs/os-specific/linux/atheros/0.9.3.3.nix new file mode 100644 index 00000000000..d5c207bf188 --- /dev/null +++ b/pkgs/os-specific/linux/atheros/0.9.3.3.nix @@ -0,0 +1,34 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://downloads.sourceforge.net/madwifi/madwifi-0.9.3.3.tar.bz2; + sha256 = "1dq56dx81wfhpgipbrl3gk2is3g1xvysx2pl6vxyj0dhslkcnf3y"; + }; + + buildInputs = []; + configureFlags = []; + makeFlags = [''KERNELPATH=${kernel}/lib/modules/*/build'' ''DESTDIR=$out'']; + patchAR2425x86 = ""; /*(if args ? pci001c_rev01 && args.pci001c_rev01 then + fetchurl { + url = http://madwifi.org/attachment/ticket/1679/madwifi-ng-0933.ar2425.20071130.i386.patch?format=raw; + name = "madwifi-AR2425-x86.patch"; + sha256 = "11xpx5g9w7ilagvj60prc3s8a3x0n5n4mr0b7nh0lxwrbjdgjjfg"; + } else "")*/; + } null; /* null is a terminator for sumArgs */ +let +doPatch = FullDepEntry (if patchAR2425x86 !="" then '' + cd hal + patch -Np1 -i ${patchAR2425x86} +'' else "") [minInit doUnpack]; +in +stdenv.mkDerivation rec { + name = "atheros-"+version; + builder = writeScript (name + "-builder") + (textClosure [doPatch doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Atheros WiFi driver. +"; + }; +} diff --git a/pkgs/os-specific/linux/atheros/r2756.nix b/pkgs/os-specific/linux/atheros/r2756.nix new file mode 100644 index 00000000000..8309b785865 --- /dev/null +++ b/pkgs/os-specific/linux/atheros/r2756.nix @@ -0,0 +1,35 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2756-20071018.tar.gz; + sha256 = "0mm1kx9pjvvla792rv7k48yhsa0fpzvd1717g9xzazjsz2mqwzyv"; + }; + + buildInputs = []; + configureFlags = []; + makeFlags = [''KERNELPATH=${kernel}/lib/modules/*/build'' ''DESTDIR=$out'']; + patchAR2425x86 = (if args ? pci001c_rev01 && args.pci001c_rev01 then + fetchurl { + url = http://madwifi.org/attachment/ticket/1679/madwifi-ng-0933.ar2425.20071130.i386.patch?format=raw; + name = "madwifi-AR2425-x86.patch"; + sha256 = "11xpx5g9w7ilagvj60prc3s8a3x0n5n4mr0b7nh0lxwrbjdgjjfg"; + } else ""); + } null; /* null is a terminator for sumArgs */ +let +doPatch = FullDepEntry (if patchAR2425x86 !="" then '' + cd hal + patch -Np1 -i ${patchAR2425x86} + cd .. +'' else "") [minInit doUnpack]; +in +stdenv.mkDerivation rec { + name = "atheros-"+version; + builder = writeScript (name + "-builder") + (textClosure [doPatch doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Atheros WiFi driver. +"; + }; +} diff --git a/pkgs/os-specific/linux/atheros/r3122.nix b/pkgs/os-specific/linux/atheros/r3122.nix new file mode 100644 index 00000000000..c82b4021544 --- /dev/null +++ b/pkgs/os-specific/linux/atheros/r3122.nix @@ -0,0 +1,22 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r3122-20080109.tar.gz; + sha256 = "188258c6q96n8lb57c0cqsvxp47psninirdax13w4yd07v1rymwd"; + }; + + buildInputs = []; + configureFlags = []; + makeFlags = [''KERNELPATH=${kernel}/lib/modules/*/build'' ''DESTDIR=$out'']; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "atheros-"+version; + builder = writeScript (name + "-builder") + (textClosure [doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Atheros WiFi driver. +"; + }; +} diff --git a/pkgs/os-specific/linux/bridge_utils/default.nix b/pkgs/os-specific/linux/bridge_utils/default.nix index 3fb80b7484a..2c71f8fb0a9 100644 --- a/pkgs/os-specific/linux/bridge_utils/default.nix +++ b/pkgs/os-specific/linux/bridge_utils/default.nix @@ -3,7 +3,7 @@ args.stdenv.mkDerivation { name = "bridge-utils-1.2"; src = args.fetchurl { - url = http://mirror/sourceforge/bridge/bridge-utils-1.2.tar.gz; + url = mirror://sourceforge/bridge/bridge-utils-1.2.tar.gz; sha256 = "0jg3z51c2c34byg4zi39j9g4b66js5kanjhid77hpa0jdfmryfy9"; }; diff --git a/pkgs/os-specific/linux/dmidecode/2.9.nix b/pkgs/os-specific/linux/dmidecode/2.9.nix new file mode 100644 index 00000000000..787846465d8 --- /dev/null +++ b/pkgs/os-specific/linux/dmidecode/2.9.nix @@ -0,0 +1,22 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://download.savannah.gnu.org/releases/dmidecode/dmidecode-2.9.tar.bz2; + sha256 = "05g0ln400fhqjspg9h4x0a1dvmwiyjq5rk9q9kimxvywbg1b53l8"; + }; + + buildInputs = []; + configureFlags = []; + makeFlags = "prefix=\$out"; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "dmidecode-"+version; + builder = writeScript (name + "-builder") + (textClosure [ doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Tool to decode Desktop Management Interface and SBIOS data. +"; + }; +} diff --git a/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix b/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix new file mode 100644 index 00000000000..c991389633c --- /dev/null +++ b/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix @@ -0,0 +1,27 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-7.0.tar.gz; + sha256 = "08hljn2vfn794dfrfpp3m245dbpb6nhk40igfpqm6wg9qimc9zy9"; + }; + + buildInputs = [cdrkit m4]; + configureFlags = []; + makeFlags = [" prefix=\$out "]; + } null; /* null is a terminator for sumArgs */ +let + preBuild = FullDepEntry (" + sed -e 's@/usr/local@'\$out'@g' -i Makefile.m4 Makefile + ") [minInit doUnpack]; +in +stdenv.mkDerivation rec { + name = "dvd+rw-tools-"+version; + builder = writeScript (name + "-builder") + (textClosure [preBuild doMakeInstall doForceShare doPropagate]); + meta = { + description = " + DVD+RW tools. +"; + }; +} diff --git a/pkgs/os-specific/linux/fuse/builder.sh b/pkgs/os-specific/linux/fuse/builder.sh index 5f0d53954e7..c843ae6183b 100644 --- a/pkgs/os-specific/linux/fuse/builder.sh +++ b/pkgs/os-specific/linux/fuse/builder.sh @@ -13,4 +13,6 @@ export UDEV_RULES_PATH=$out/etc/udev/rules.d # $PATH. export NIX_CFLAGS_COMPILE="-DFUSERMOUNT_DIR=\"/no-such-path\"" +export preBuild="sed -e 's@/bin/@$utillinux/bin/@g' -i lib/mount_util.c"; + genericBuild diff --git a/pkgs/os-specific/linux/fuse/default.nix b/pkgs/os-specific/linux/fuse/default.nix index 28052d7ceb3..7e3bb66b16f 100644 --- a/pkgs/os-specific/linux/fuse/default.nix +++ b/pkgs/os-specific/linux/fuse/default.nix @@ -1,11 +1,19 @@ -{stdenv, fetchurl}: +args: with args; stdenv.mkDerivation { - name = "fuse-2.6.5"; + name = "fuse-2.7.2"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/fuse/fuse-2.6.5.tar.gz; - sha256 = "0901hrhi1z6dwlgvgn75cg2268wvaz53x0knn7jplk6acwir54db"; + url = mirror://sourceforge/fuse/fuse-2.7.2.tar.gz; + sha256 = "1zxssdiirf19mihbnxpy0kiix35d4256b9lani7qwqi7m940jfgv"; + }; + configureFlags = [ "--disable-kernel-module"]; + buildInputs = [ utillinux ]; + + inherit utillinux; + + meta = { + homepage = http://fuse.sourceforge.net/; + description = "Kernel module and library that allows filesystems to be implemented in user space"; }; - configureFlags = [ "--disable-kernel-module" ]; } diff --git a/pkgs/os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch b/pkgs/os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch deleted file mode 100644 index 15dc34680d0..00000000000 --- a/pkgs/os-specific/linux/kernel/2.6.22-paravirt-nvidia.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -rc linux-2.6.22.1/arch/i386/kernel/paravirt.c linux-2.6.22.1-para/arch/i386/kernel/paravirt.c -*** linux-2.6.22.1/arch/i386/kernel/paravirt.c 2007-07-20 16:19:35.000000000 +0200 ---- linux-2.6.22.1-para/arch/i386/kernel/paravirt.c 2007-07-20 16:20:00.000000000 +0200 -*************** -*** 344,347 **** - .activate_mm = paravirt_nop, - }; - -! EXPORT_SYMBOL(paravirt_ops); ---- 344,347 ---- - .activate_mm = paravirt_nop, - }; - -! EXPORT_SYMBOL_GPL(paravirt_ops); diff --git a/pkgs/os-specific/linux/kernel/2.6.23.12.nix b/pkgs/os-specific/linux/kernel/2.6.23.12.nix new file mode 100644 index 00000000000..a0e3bcbf2d8 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.23.12.nix @@ -0,0 +1,38 @@ +args: +(import ./meta.nix) +( args // + { + version = "2.6.23.12"; + src_hash = { sha256 = "1x3ngnhyxy9rlaislm2hzijaaa2mp8v930dyp8zmmhjdpzjf3w8k"; }; + + systemPatches = [ + { # resume with resume=swap:/dev/xx + name = "tux on ice"; # (swsusp2) + patch = args.fetchurl { + url = "http://www.tuxonice.net/downloads/all/tuxonice-3.0-rc3-for-2.6.23.9.patch.bz2"; + sha256 = "16f61cn0mdi7yklhdx4isi7c85843fzxq2cifd05cpsl6x6ilrfk"; + }; + extraConfig = " + CONFIG_SUSPEND2=y + CONFIG_SUSPEND2_FILE=y + CONFIG_SUSPEND2_SWAP=y + CONFIG_CRYPTO_LZF=y + "; + } + { name = "fbsplash-0.9.2-r5-2.6.21"; + patch = args.fetchurl { + url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; + sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px"; + }; + extraConfig = "CONFIG_FB_SPLASH=y"; + } + ]; + + config = with args; + if config != null then config else + if userModeLinux then ./config-2.6.23-uml else + if stdenv.system == "i686-linux" then ./config-2.6.23-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.23-x86_64-smp else + abort "No kernel configuration for your platform!"; + } +) diff --git a/pkgs/os-specific/linux/kernel/config-2.6.23-i686-smp b/pkgs/os-specific/linux/kernel/config-2.6.23-i686-smp index 5e472930410..86fbe30c521 100644 --- a/pkgs/os-specific/linux/kernel/config-2.6.23-i686-smp +++ b/pkgs/os-specific/linux/kernel/config-2.6.23-i686-smp @@ -119,7 +119,7 @@ CONFIG_X86_PC=y # CONFIG_X86_GENERICARCH is not set # CONFIG_X86_ES7000 is not set CONFIG_PARAVIRT=y -CONFIG_XEN=y +# CONFIG_XEN is not set CONFIG_VMI=y # CONFIG_M386 is not set # CONFIG_M486 is not set diff --git a/pkgs/os-specific/linux/kqemu/1.3.0pre11.nix b/pkgs/os-specific/linux/kqemu/1.3.0pre11.nix new file mode 100644 index 00000000000..3aa2731ac3f --- /dev/null +++ b/pkgs/os-specific/linux/kqemu/1.3.0pre11.nix @@ -0,0 +1,30 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz; + sha256 = "03svg2x52ziglf9r9irf6ziiz8iwa731fk1mdskwdip5jxbyy6jl"; + }; + buildInputs = []; + configureFlags = [''--prefix=$out'' ''--kernel-path=$(ls -d ${kernel}/lib/modules/*/build)'']; + } null; /* null is a terminator for sumArgs */ +let + debugStep = FullDepEntry ('' + cat config-host.mak + '') [minInit]; + preConfigure = FullDepEntry ('' + sed -e '/kernel_path=/akernel_path=$out$kernel_path' -i install.sh + sed -e '/depmod/d' -i install.sh + cat install.sh + '') [minInit doUnpack]; +in +stdenv.mkDerivation rec { + name = "kqemu-"+version; + builder = writeScript (name + "-builder") + (textClosure [preConfigure doConfigure debugStep doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Kernel module for Qemu acceleration +"; + }; +} diff --git a/pkgs/os-specific/linux/module-init-tools/aggregator.nix b/pkgs/os-specific/linux/module-init-tools/aggregator.nix new file mode 100644 index 00000000000..09866f414e5 --- /dev/null +++ b/pkgs/os-specific/linux/module-init-tools/aggregator.nix @@ -0,0 +1,34 @@ +args : with args; + with builderDefs { + addSbinPath = true; + src = ""; + buildInputs = [lndir module_init_tools]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +let + +doCollect = FullDepEntry ('' +ensureDir $out/ +cd $out/ +for i in $moduleSources; do + lndir $i/ +done +rm -rf nix-support +cd lib/modules/ +rm */modules.* +MODULE_DIR=$PWD/ depmod -a +'') [minInit addInputs defEnsureDir]; +in +stdenv.mkDerivation rec { + name = "module-aggregator"; + inherit moduleSources; + builder = writeScript (name + "-builder") + (textClosure [doCollect doForceShare doPropagate]); + meta = { + description = " + A directory to hold all the modules, including those + built separately from kernel. Earlier directories in + moduleSources have higher priority. +"; + }; +} diff --git a/pkgs/os-specific/linux/nvidia/builder.sh b/pkgs/os-specific/linux/nvidia/builder.sh index 9ec3428e878..4ef8c551d1c 100755 --- a/pkgs/os-specific/linux/nvidia/builder.sh +++ b/pkgs/os-specific/linux/nvidia/builder.sh @@ -1,101 +1,76 @@ source $stdenv/setup -echo "Building linux driver against kernel: " $kernelOutPath; -echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" - -echo $nvidiasrc -cp $nvidiasrc . -chmod 755 ./*-NVIDIA* -./*-NVIDIA* -x -cd NVIDIA*/ - -cd usr/src/nv/ -pwd -P - -#Clean up -#make clean - -#Create the module -echo $out -mkdir $out -make SYSSRC=$kernelOutPath/lib/modules/2.*/build/ module - -#go to the usr dir of the nvidia package -cd ../../ - -echo "Copying all files to " $out/lib"" - -cp -R * $out - -#add extra symlinks in $out -ln -snf $out/lib/libGLcore.so.$versionNumber $out/lib/libGLcore.so -ln -snf $out/lib/libGLcore.so.$versionNumber $out/lib/libGLcore.so.1 -ln -snf $out/lib/libGL.so.$versionNumber $out/lib/libGL.so -ln -snf $out/lib/libGL.so.$versionNumber $out/lib/libGL.so.1 -ln -snf $out/lib/libnvidia-cfg.so.$versionNumber $out/lib/libnvidia-cfg.so.1 -ln -snf $out/lib/libnvidia-tls.so.$versionNumber $out/lib/libnvidia-tls.so.1 -ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber $out/X11R6/lib/libXvMCNVIDIA.so.1 -ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber $out/lib/libXvMCNVIDIA.so.1 -ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber $out/X11R6/lib/modules/libnvidia-wfb.so.1 -ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber $out/lib/libnvidia-wfb.so.1 -ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber $out/X11R6/lib/modules/extensions/libglx.so.1 -ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber $out/lib/libglx.so.1 - -#TODO: patchelf binaries ! -#patchelf --set-interpreter ${path glibc TODO /lib/ld-linux.so.2 $out/bin/.... - -#from dep on xorg-sys-opengl: add symlinks in /usr/lib/ (especially libGL.so.1) to the real location... - -ensureDir /usr/lib/ -cd /usr/lib -ln -snf $out/lib/libGLcore.so.$versionNumber libGLcore.so.1 -ln -snf $out/lib/libGL.la libGL.la -ln -snf $out/lib/libGL.so.$versionNumber libGL.so.1 -ln -snf $out/lib/libnvidia-cfg.so.$versionNumber libnvidia-cfg.so.1 -ln -snf $out/lib/libnvidia-tls.so.$versionNumber libnvidia-tls.so.1 -ensureDir /usr/lib/tls/ -ln -snf $out/lib/tls/libnvidia-tls.so.$versionNumber /usr/lib/tls/libnvidia-tls.so.1 -ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber libglx.so.1 -ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber libnvidia-wfb.so.1 -ln -snf $out/X11R6/lib/modules/drivers/nvidia_drv.so nvidia_drv.so -ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber libXvMCNVIDIA.so.1 -ln -snf $out/bin/tls_test_dso.so tls_test_dso.so -ln -snf $out/src/nv/nvidia.ko nvidia.ko - -echo "YOU! need to add symlinks as root to the libs in the current $xorgOutPath/lib/xorg/modules/extensions/ (especially libglx.so)" -rwlibs=" -cd $xorgOutPath/lib/xorg/modules/extensions/; -mv libglx.so libglx.so.org; -mv libglx.la libglx.la.org; -mv libGLcore.so libGLcore.so.org; -ln -snf /usr/lib/libglx.so.1 libglx.so; -ln -snf /usr/lib/libglx.so.1 libglx.so.1; -ln -snf /usr/lib/libGLcore.so.1 libGLcore.so; -ln -snf /usr/lib/libGLcore.so.1 libGLcore.so.1; -ln -snf /usr/lib/libGL.so.1 libGL.so; -ln -snf /usr/lib/libGL.so.1 libGL.so.1; -ln -snf /usr/lib/libglx.la libglx.la; -ln -snf /usr/lib/libglx.so.1 libglx.so; -ln -snf /usr/lib/libglx.so.1 libglx.so.1; -ln -snf /usr/lib/nvidia_drv.so nvidia_drv.so; - -# rm /var/run/opengl-driver; -ln -snf /var/run/opengl-driver $out; - -kerneldrvnvpath=$kernelOutPath/lib/modules/*-default/kernel/drivers/video/nvidia; -#echo TODO kerneldrvnvpath: \$kerneldrvnvpath -ln -snf $out/src/nv/nvidia.ko \$kerneldrvnvpath/nvidia.ko; -" -#TODO ADD ln -sf is sometimes not strong enough ... - -rwlibsfile="$out/bin/nvidia-rewriteLibs.sh" - -echo "--------------------------------------------------------" -echo "YOU MUST RUN $rwlibsfile as ROOT after this installation" -echo "--------------------------------------------------------" -echo $rwlibs > $rwlibsfile -chmod 755 $rwlibsfile - -sleep 5 +dontPatchELF=1 # must keep libXv, $out in RPATH +unpackFile() { + sh $src -x +} + + +buildPhase=myBuildPhase +myBuildPhase() { + echo "Building linux driver against kernel: " $kernel; + + cd usr/src/nv/ + + # Workaround: get it to build on kernels that have CONFIG_XEN set. + # Disable the test, apply a patch to disable the Xen functionality. + #substituteInPlace Makefile.kbuild --replace xen_sanity_check fnord + #patch -p1 < $xenPatch + + # Create the module. + sysSrc=$(echo $kernel/lib/modules/2.*/build/) + unset src # used by the nv makefile + make SYSSRC=$sysSrc module + cd ../../.. +} + + +installPhase=myInstallPhase +myInstallPhase() { + + # Install the kernel module. + ensureDir $out/lib + cp usr/src/nv/nvidia.ko $out/lib/ + + # Install libGL and friends. + cp -prd usr/lib/* usr/X11R6/lib/libXv* $out/lib/ + + ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so + ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so.1 + ln -snf libGL.so.$versionNumber $out/lib/libGL.so + ln -snf libGL.so.$versionNumber $out/lib/libGL.so.1 + ln -snf libnvidia-cfg.so.$versionNumber $out/lib/libnvidia-cfg.so.1 + ln -snf libnvidia-tls.so.$versionNumber $out/lib/libnvidia-tls.so.1 + ln -snf libnvidia-tls.so.$versionNumber $out/lib/tls/libnvidia-tls.so.1 + ln -snf libXvMCNVIDIA.so.$versionNumber $out/lib/libXvMCNVIDIA_dynamic.so.1 + ln -snf libcuda.so.$versionNumber $out/lib/libcuda.so.1 + + # Install the X driver. + ensureDir $out/lib/xorg/modules + cp -prd usr/X11R6/lib/modules/* $out/lib/xorg/modules/ + + ln -snf libnvidia-wfb.so.$versionNumber $out/lib/xorg/modules/libnvidia-wfb.so.1 + ln -snf libglx.so.$versionNumber $out/lib/xorg/modules/extensions/libglx.so + + # Install the programs. + ensureDir $out/bin + + fullPath=$out/lib + for i in $libPath; do + fullPath=$fullPath:$i/lib + done + + for i in nvidia-settings nvidia-xconfig; do + cp usr/bin/$i $out/bin/$i + patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + --set-rpath $fullPath $out/bin/$i + done + + # Header files etc. + cp -prd usr/include usr/share $out +} + + +genericBuild diff --git a/pkgs/os-specific/linux/nvidia/default.nix b/pkgs/os-specific/linux/nvidia/default.nix index d4f1c8ac9bc..11906b60658 100644 --- a/pkgs/os-specific/linux/nvidia/default.nix +++ b/pkgs/os-specific/linux/nvidia/default.nix @@ -1,46 +1,26 @@ -{ stdenv -, fetchurl - -, kernel -, coreutils -, xorg_server - -#deps -,libXext, libX11 - -}: +{stdenv, fetchurl, kernel, xlibs, gtkLibs}: let - versionNumber = "100.14.19"; #important ! to also update this if the sources are updated, this is used as follows: extensions/libglx.so.$versionNumber + versionNumber = "169.07"; in + stdenv.mkDerivation { name = "nvidiaDrivers-" + versionNumber; builder = ./builder.sh; - - nvidiasrc = fetchurl { #we cannot use $src since this variable is also used in the nvidia sources - #url = http://www.denbreejen.net/public/nixos/NVIDIA-Linux-x86-1.0-9755-pkg1.run; - #sha256 = "1985373866b1dcae80f3da66dbbbd3c28ad76e75a620865be321ee870ad9d1ea"; - #url = http://us.download.nvidia.com/XFree86/Linux-x86/100.14.11/NVIDIA-Linux-x86-100.14.11-pkg1.run; - #sha256 = "8665370e590328cc5bf3d13737739a80dacbfb6844436cab03c992e84bf16b0c"; - url = http://us.download.nvidia.com/XFree86/Linux-x86/100.14.19/NVIDIA-Linux-x86-100.14.19-pkg1.run; - sha256 = "4dc97d8ff5340954f3cd446093636261c54b147e9721eb295574207d79e9a7e7"; + src = fetchurl { + url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg1.run"; + sha256 = "1q4sbwcf24rvx72sj19pvhsmg5n8v2rfzsxf56mfxjbiy2jhjbaa"; }; - inherit versionNumber; - kernelOutPath = kernel.outPath; - xorgOutPath = xorg_server.outPath; + #xenPatch = ./nvidia-2.6.24-xen.patch; - buildInputs = [ - libXext libX11 + inherit versionNumber kernel; + + libPath = [ + gtkLibs.gtk gtkLibs.atk gtkLibs.pango gtkLibs.glib + xlibs.libXext xlibs.libX11 xlibs.libXv ]; - - propagatedBuildInputs = [ - libX11 libXext - ]; - - NIX_LDFLAGS = "-rpath ${libX11}/lib -rpath ${libXext}/lib"; - LD_LIBRARY_PATH = "${libX11}/lib:${libXext}/lib/"; } diff --git a/pkgs/os-specific/linux/sdparm/1.02.nix b/pkgs/os-specific/linux/sdparm/1.02.nix new file mode 100644 index 00000000000..0616ac83563 --- /dev/null +++ b/pkgs/os-specific/linux/sdparm/1.02.nix @@ -0,0 +1,21 @@ +args : with args; + with builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://sg.torque.net/sg/p/sdparm-1.02.tgz; + sha256 = "13acyg6r65gypdprjhfkmvaykgfcj1riwpnycpvv9znzgq9fxsiv"; + }; + + buildInputs = []; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ +stdenv.mkDerivation rec { + name = "sdparm-"+version; + builder = writeScript (name + "-builder") + (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + SCSI parameters utility. +"; + }; +} diff --git a/pkgs/os-specific/linux/squashfs/default.nix b/pkgs/os-specific/linux/squashfs/default.nix index 1f2bde7feac..00ce8fba56e 100644 --- a/pkgs/os-specific/linux/squashfs/default.nix +++ b/pkgs/os-specific/linux/squashfs/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, zlib}: stdenv.mkDerivation { - name = "squashfs-3.1-r2"; + name = "squashfs-3.3"; builder = ./builder.sh; src = fetchurl { - url = mirror://sourceforge/squashfs/squashfs3.1-r2.tar.gz; - md5 = "c252e5286b142afa54ca49829c51a33f"; + url = mirror://sourceforge/squashfs/squashfs3.3.tgz; + sha256 = "1j55m26nyvlbld4yxad0r6s1f4rdw9yg89y2gv93ihkx3rx048w4"; }; buildInputs = [zlib]; } diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index bad391330a5..0fc27acbc1f 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -1986,8 +1986,8 @@ rec { url = http://mirror.switch.ch/ftp/mirror/X11/pub/X11R7.3/src/everything/xf86-video-ati-6.6.3.tar.bz2; sha256 = "102p6nz1jvd3pgbl83a4zi99smydqr6il61r33l0lqmi3yg452nh"; }; - buildInputs = [pkgconfig fontsproto libdrm randrproto renderproto videoproto xextproto xf86driproto xf86miscproto xineramaproto xorgserver xproto ]; - }) // {inherit fontsproto libdrm randrproto renderproto videoproto xextproto xf86driproto xf86miscproto xineramaproto xorgserver xproto ;}; + buildInputs = [pkgconfig fontsproto libdrm randrproto renderproto videoproto xextproto xf86driproto xf86miscproto xineramaproto xorgserver xproto mesaHeaders glproto ]; + }) // {inherit fontsproto libdrm randrproto renderproto videoproto xextproto xf86driproto xf86miscproto xineramaproto xorgserver xproto mesaHeaders glproto;}; xf86videochips = (stdenv.mkDerivation { name = "xf86-video-chips-1.1.1"; diff --git a/pkgs/shells/tcsh/default.nix b/pkgs/shells/tcsh/default.nix index cd374289d54..f0ef071bb56 100644 --- a/pkgs/shells/tcsh/default.nix +++ b/pkgs/shells/tcsh/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, ncurses}: stdenv.mkDerivation { - name = "tcsh-6.14.00"; + name = "tcsh-6.15.00"; src = fetchurl { - url = ftp://ftp.gw.com/pub/unix/tcsh/tcsh-6.14.00.tar.gz; - md5 = "353d1bb7d2741bf8de602c7b6f0efd79"; + url = ftp://ftp.funet.fi/pub/unix/shells/tcsh/tcsh-6.15.00.tar.gz; + sha256 = "1p5chgvj87m2dv4ci9qf4i81gav0lzr7rkcm320sj62z09ckxa6w"; }; buildInputs = [ncurses]; } diff --git a/pkgs/tools/X11/xlaunch/default.nix b/pkgs/tools/X11/xlaunch/default.nix new file mode 100644 index 00000000000..89c94ffd515 --- /dev/null +++ b/pkgs/tools/X11/xlaunch/default.nix @@ -0,0 +1,48 @@ +args: with args; +stdenv.mkDerivation { + name = "xlaunch"; + inherit xorgserver; + buildCommand = " + cat << EOF > realizeuid.c + #include + #include + #include + int main(int argc, char ** argv, char ** envp) + { + uid_t a,b,c; + int i; + char *nargv[10000]; + char arg1 [10]; + nargv[0]=argv[0]; + for (i=1; i<=argc; i++){ + nargv[i+1]=argv[i]; + } + nargv[1]=arg1; + getresuid (&a,&b,&c); + snprintf(arg1,8,\"%d\",a); + setresuid(c,c,c); + execve(\"\$out/libexec/xlaunch\", nargv, envp); + } +EOF + mkdir -p \$out/bin + mkdir -p \$out/libexec + gcc realizeuid.c -o \$out/bin/xlaunch + echo '#! ${stdenv.shell} + USER=\$(egrep '\\''^[-a-z0-9A-Z_]*:[^:]*:'\\''\$1'\\'':'\\'' /etc/passwd | sed -e '\\''s/:.*//'\\'' ) + shift + case \"\$1\" in + :*) export _display=\"\$1\"; + shift + esac + _display=\${_display:-:0} + _display=\${_display#:} + echo Using :\$_display + XCMD=\"\$(egrep \"^env\" /etc/event.d/xserver | sed -e \"s/env/ export /\" | sed -e '\\''s/#.*//'\\'' ; echo export _XARGS_=\\\$\\( grep xserver_arguments \\\$SLIM_CFGFILE \\| sed -e s/xserver_arguments// \\| sed -e s/:0/:\${_display}/ \\| sed -e s/vt7/vt\$((7+_display))/ \\) ; echo ${xorgserver}/bin/X \\\$_XARGS_ )\" + echo \"\$XCMD\" + echo \"\$XCMD\" | bash & + while ! test -e /tmp/.X11-unix/X\$_display &>/dev/null ; do sleep 0.5; done + su -l \${USER:-identityless-shelter} -c \"DISPLAY=:\$_display \$*\"; + ' >\$out/libexec/xlaunch + chmod a+x \$out/libexec/xlaunch + "; +} diff --git a/pkgs/tools/archivers/cabextract/default.nix b/pkgs/tools/archivers/cabextract/default.nix index e7f9a5a5da0..a87c02c7d04 100644 --- a/pkgs/tools/archivers/cabextract/default.nix +++ b/pkgs/tools/archivers/cabextract/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "cabextract-1.2"; src = fetchurl { - url = http://www.kyz.uklinux.net/downloads/cabextract-1.2.tar.gz; - md5 = "dc421a690648b503265c82ade84e143e"; + url = http://www.cabextract.org.uk/cabextract-1.2.tar.gz; + sha256 = "1sr5f7qicj5q2h5m4wbmfcaaqxg5zkl5vkxlhyc11spwfh58d75f"; }; } diff --git a/pkgs/tools/archivers/zip/default.nix b/pkgs/tools/archivers/zip/default.nix index 51a1b618e02..f3fb96ae1e5 100644 --- a/pkgs/tools/archivers/zip/default.nix +++ b/pkgs/tools/archivers/zip/default.nix @@ -2,7 +2,7 @@ name = "zip-2.32"; builder = ./builder.sh; src = fetchurl { - url = http://ftp.info-zip.org/pub/infozip/src/zip232.tar.gz; + url = ftp://ftp.info-zip.org/pub/infozip/src/zip232.tgz; md5 = "8a4da4460386e324debe97f3b7fe4d96"; }; } diff --git a/pkgs/tools/graphics/exif/default.nix b/pkgs/tools/graphics/exif/default.nix index aa4d82468c3..94bf2e2cb0d 100644 --- a/pkgs/tools/graphics/exif/default.nix +++ b/pkgs/tools/graphics/exif/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, pkgconfig, libexif, popt}: stdenv.mkDerivation { - name = "exif-0.6.9"; + name = "exif-0.6.15"; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/exif-0.6.9.tar.gz; - md5 = "555029098386fa677c461eb249d852d7"; + url = mirror://sourceforge/libexif/exif-0.6.15.tar.bz2; + sha256 = "19kxl72l1iqq747k58rir7v4ld1676j3dmjdc1pik9hjlgdb1yj1"; }; buildInputs = [pkgconfig libexif popt]; diff --git a/pkgs/tools/graphics/graphviz/default.nix b/pkgs/tools/graphics/graphviz/default.nix index b424672ed41..abde6da66d6 100644 --- a/pkgs/tools/graphics/graphviz/default.nix +++ b/pkgs/tools/graphics/graphviz/default.nix @@ -3,11 +3,11 @@ assert libpng != null && libjpeg != null && expat != null; stdenv.mkDerivation { - name = "graphviz-2.12"; + name = "graphviz-2.16.1"; src = fetchurl { - url = http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-2.12.tar.gz; - md5 = "e5547bc0ec47943c72f5c3e2b5dff58f"; + url = http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-2.16.1.tar.gz; + sha256 = "1lan1hyar0xbqvnkcmlcvv02g8zfpk94gk04y4sik5irpa2s3h9j"; }; buildInputs = [x11 libpng libjpeg expat libXaw yacc libtool]; @@ -19,5 +19,10 @@ stdenv.mkDerivation { "--with-expatincludedir=${expat}/include" "--with-expatlibdir=${expat}/lib" ] - ++ (if x11 == null then ["--without-x"] else []); + ++ stdenv.lib.optional (x11 == null) "--without-x"; + + meta = { + description = "A program for visualising graphs"; + homepage = http://www.graphviz.org/; + }; } diff --git a/pkgs/tools/hddtemp/default.nix b/pkgs/tools/hddtemp/default.nix new file mode 100644 index 00000000000..0bb51287474 --- /dev/null +++ b/pkgs/tools/hddtemp/default.nix @@ -0,0 +1,27 @@ +args: +args.stdenv.mkDerivation { + name = "hddtemp-0.3-beta15"; + + db = args.fetchurl{ + url = http://download.savannah.nongnu.org/releases/hddtemp/hddtemp.db; + sha256 = "1fr6qgns6qv7cr40lic5yqwkkc7yjmmgx8j0z6d93csg3smzhhya"; + }; + src = args.fetchurl { + url = http://download.savannah.nongnu.org/releases/hddtemp/hddtemp-0.3-beta15.tar.bz2; + sha256 = "0nzgg4nl8zm9023wp4dg007z6x3ir60rwbcapr9ks2al81c431b1"; + }; + + configurePhase = " + ensureDir \$out/nix-support + cp \$db \$out/nix-support/hddtemp.db + ./configure --prefix=\$out --with-db-path=\$out/nix-support/hddtemp.db + "; + + buildInputs =(with args; []); + + meta = { + description = "shows the harddisk temperature"; + homepage = https://savannah.nongnu.org/projects/hddtemp/; + license = "GPL2"; + }; +} diff --git a/pkgs/tools/misc/file/default.nix b/pkgs/tools/misc/file/default.nix index d7e31e9cf32..cf4919d3c8f 100644 --- a/pkgs/tools/misc/file/default.nix +++ b/pkgs/tools/misc/file/default.nix @@ -1,9 +1,14 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "file-4.17"; + name = "file-4.23"; src = fetchurl { - url = ftp://ftp.astron.com/pub/file/file-4.17.tar.gz; - md5 = "50919c65e0181423d66bb25d7fe7b0fd"; + url = ftp://ftp.astron.com/pub/file/file-4.23.tar.gz; + sha256 = "0iyiyzcs88k6r881l11zrg86ys3rnwjyh1bgx7hnfyjv8zk9db9g"; + }; + + meta = { + description = "A program that shows the type of files"; + homepage = ftp://ftp.astron.com/pub/file; }; } diff --git a/pkgs/tools/misc/grub/default.nix b/pkgs/tools/misc/grub/default.nix index 0a406f72b46..1b7f052dfdf 100644 --- a/pkgs/tools/misc/grub/default.nix +++ b/pkgs/tools/misc/grub/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +{stdenv, fetchurl, autoconf, automake}: if stdenv.system == "x86_64-linux" then abort "Grub doesn't build on x86_64-linux. You should use the build for i686-linux instead." @@ -6,8 +6,27 @@ else stdenv.mkDerivation { name = "grub-0.97"; + src = fetchurl { url = ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz; md5 = "cd3f3eb54446be6003156158d51f4884"; }; + + patches = [ + # Patch to add primitive splash screen support (not the fancy SUSE gfxmenu stuff). + # With this you can set splashimage=foo.xpm.gz in menu.lst to get + # a 640x480, 14-colour background. + (fetchurl { + url = "http://cvs.archlinux.org/cgi-bin/viewcvs.cgi/*checkout*/system/grub-gfx/grub-0.97-graphics.patch?rev=HEAD&cvsroot=AUR&only_with_tag=CURRENT&content-type=text/plain"; + sha256 = "0m6min9cbj71kvp0kxkxdq8dx2dwm3dj0rd5sjz5xdl13ihaj5hy"; + }) + ]; + + # Autoconf/automake required for the splashimage patch. + buildInputs = [autoconf automake]; + + preConfigure = '' + autoreconf + ''; + } diff --git a/pkgs/tools/misc/less/default.nix b/pkgs/tools/misc/less/default.nix index ad7fe970d31..f4a7bc0cf5d 100644 --- a/pkgs/tools/misc/less/default.nix +++ b/pkgs/tools/misc/less/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, ncurses}: stdenv.mkDerivation { - name = "less-394"; + name = "less-418"; src = fetchurl { - url = http://www.greenwoodsoftware.com/less/less-394.tar.gz; - md5 = "a9f072ccefa0d315b325f3e9cdbd4b97"; + url = http://www.greenwoodsoftware.com/less/less-418.tar.gz; + sha256 = "1d03n4wx8y1gmf2m8yawzg6ixmfrixcai5l14p9pj8q13gbgqcpm"; }; buildInputs = [ncurses]; diff --git a/pkgs/tools/misc/memtest86/default.nix b/pkgs/tools/misc/memtest86/default.nix new file mode 100644 index 00000000000..32f2094b44c --- /dev/null +++ b/pkgs/tools/misc/memtest86/default.nix @@ -0,0 +1,26 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "memtest86+-1.70"; + + src = fetchurl { + url = http://www.memtest.org/download/1.70/memtest86+-1.70.tar.gz; + sha256 = "1swj4hc764qwb3j80kvvb4qg5maq9dp8pxzy9jkk187jf92j8vfw"; + }; + + preBuild = '' + # Really dirty hack to get Memtest to build without needing a Glibc + # with 32-bit libraries and headers. + if test "$system" = x86_64-linux; then + mkdir gnu + touch gnu/stubs-32.h + fi + ''; + + NIX_CFLAGS_COMPILE = "-I."; + + installPhase = '' + ensureDir $out + cp memtest.bin $out/ + ''; +} diff --git a/pkgs/tools/misc/psmisc/default.nix b/pkgs/tools/misc/psmisc/default.nix new file mode 100644 index 00000000000..64985a8638c --- /dev/null +++ b/pkgs/tools/misc/psmisc/default.nix @@ -0,0 +1,15 @@ +{stdenv, fetchurl, ncurses}: + +stdenv.mkDerivation { + name = "psmisc-22.6"; + src = fetchurl { + url = mirror://sourceforge/psmisc/psmisc-22.6.tar.gz; + sha256 = "0qlx4rdcj3igk67gzmdbyy6f54h4c5ya17gw0pkxdcwlgj4q2g51"; + }; + buildInputs = [ncurses]; + + meta = { + homepage = http://psmisc.sourceforge.net/; + description = "A set of small useful utilities that use the proc filesystem (such as fuser, killall and pstree)"; + }; +} diff --git a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix index 146d55e90c6..411906e45ba 100644 --- a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix +++ b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix @@ -22,7 +22,9 @@ let build = FullDepEntry (" sed -e '/install:/a\\\tmkdir -p '\$out'/share' -i Makefile make mkdir -p \$out/bin - echo 'dropdb relfs_\$1 ; + echo ' + createuser -A -D \$1 + dropdb relfs_\$1 ; rm -rf /tmp/relfs-\$1-tmp; mkdir /tmp/relfs-\$1-tmp; USER=\$1 relfs -f -s /tmp/relfs-raskin-tmp & diff --git a/pkgs/tools/networking/curl/connect-timeout.patch b/pkgs/tools/networking/curl/connect-timeout.patch new file mode 100644 index 00000000000..829c724c30e --- /dev/null +++ b/pkgs/tools/networking/curl/connect-timeout.patch @@ -0,0 +1,156 @@ +diff -rc curl-7.17.1-orig/lib/connect.c curl-7.17.1/lib/connect.c +*** curl-7.17.1-orig/lib/connect.c 2007-10-22 16:30:17.000000000 +0200 +--- curl-7.17.1/lib/connect.c 2007-12-19 18:30:32.000000000 +0100 +*************** +*** 99,105 **** + singleipconnect(struct connectdata *conn, + const Curl_addrinfo *ai, /* start connecting to this */ + long timeout_ms, +! bool *connected); + + /* + * Curl_nonblock() set the given socket to either blocking or non-blocking +--- 99,106 ---- + singleipconnect(struct connectdata *conn, + const Curl_addrinfo *ai, /* start connecting to this */ + long timeout_ms, +! bool *connected, +! bool *timed_out); + + /* + * Curl_nonblock() set the given socket to either blocking or non-blocking +*************** +*** 492,497 **** +--- 493,499 ---- + { + curl_socket_t sockfd; + Curl_addrinfo *ai; ++ bool timed_out; + + /* first close the failed socket */ + sclose(conn->sock[sockindex]); +*************** +*** 505,511 **** + ai = conn->ip_addr->ai_next; + + while (ai) { +! sockfd = singleipconnect(conn, ai, 0L, connected); + if(sockfd != CURL_SOCKET_BAD) { + /* store the new socket descriptor */ + conn->sock[sockindex] = sockfd; +--- 507,513 ---- + ai = conn->ip_addr->ai_next; + + while (ai) { +! sockfd = singleipconnect(conn, ai, 0L, connected, &timed_out); + if(sockfd != CURL_SOCKET_BAD) { + /* store the new socket descriptor */ + conn->sock[sockindex] = sockfd; +*************** +*** 669,675 **** + singleipconnect(struct connectdata *conn, + const Curl_addrinfo *ai, + long timeout_ms, +! bool *connected) + { + char addr_buf[128]; + int rc; +--- 671,678 ---- + singleipconnect(struct connectdata *conn, + const Curl_addrinfo *ai, + long timeout_ms, +! bool *connected, +! bool *timed_out) + { + char addr_buf[128]; + int rc; +*************** +*** 689,694 **** +--- 692,699 ---- + struct curl_sockaddr *addr=(struct curl_sockaddr*)&addr_storage; + const void *iptoprint; + ++ *timed_out = FALSE; ++ + addr->family=ai->ai_family; + addr->socktype=conn->socktype; + addr->protocol=ai->ai_protocol; +*************** +*** 790,797 **** + infof(data, "connected\n"); + return sockfd; + } +! else if(WAITCONN_TIMEOUT == rc) + infof(data, "Timeout\n"); + else { + data->state.os_errno = error; + infof(data, "%s\n", Curl_strerror(conn, error)); +--- 795,804 ---- + infof(data, "connected\n"); + return sockfd; + } +! else if(WAITCONN_TIMEOUT == rc) { +! *timed_out = TRUE; + infof(data, "Timeout\n"); ++ } + else { + data->state.os_errno = error; + infof(data, "%s\n", Curl_strerror(conn, error)); +*************** +*** 822,829 **** + Curl_addrinfo *ai; + Curl_addrinfo *curr_addr; + int timeout_set = 0; + +- struct timeval after; + struct timeval before = Curl_tvnow(); + + /************************************************************* +--- 829,836 ---- + Curl_addrinfo *ai; + Curl_addrinfo *curr_addr; + int timeout_set = 0; ++ bool timed_out; + + struct timeval before = Curl_tvnow(); + + /************************************************************* +*************** +*** 891,909 **** + curr_addr = curr_addr->ai_next, aliasindex++) { + + /* start connecting to the IP curr_addr points to */ +! sockfd = singleipconnect(conn, curr_addr, timeout_per_addr, connected); + + if(sockfd != CURL_SOCKET_BAD) + break; + +! /* get a new timeout for next attempt */ +! after = Curl_tvnow(); +! timeout_ms -= Curl_tvdiff(after, before); +! if(timeout_ms < 0) { + failf(data, "connect() timed out!"); + return CURLE_OPERATION_TIMEDOUT; + } +- before = after; + } /* end of connect-to-each-address loop */ + + if (sockfd == CURL_SOCKET_BAD) { +--- 898,914 ---- + curr_addr = curr_addr->ai_next, aliasindex++) { + + /* start connecting to the IP curr_addr points to */ +! sockfd = singleipconnect(conn, curr_addr, timeout_per_addr, connected, &timed_out); + + if(sockfd != CURL_SOCKET_BAD) + break; + +! /* if this is the last address and it timed out, propagate the +! timeout to the caller */ +! if(!curr_addr->ai_next && timed_out) { + failf(data, "connect() timed out!"); + return CURLE_OPERATION_TIMEDOUT; + } + } /* end of connect-to-each-address loop */ + + if (sockfd == CURL_SOCKET_BAD) { diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix index 21866f02bc8..7f3488b2f35 100644 --- a/pkgs/tools/networking/curl/default.nix +++ b/pkgs/tools/networking/curl/default.nix @@ -4,10 +4,10 @@ assert zlibSupport -> zlib != null; assert sslSupport -> openssl != null; stdenv.mkDerivation { - name = "curl-7.16.2"; + name = "curl-7.17.1"; src = fetchurl { - url = http://curl.haxx.se/download/curl-7.16.2.tar.bz2; - sha256 = "18mzp56y8qhlvi27av7866mvsiyiigb7c5qdppjr8qizsj0kx0rf"; + url = http://curl.haxx.se/download/curl-7.17.1.tar.bz2; + sha256 = "0yz50r75jhfr2ya6wqi6n90bn4ij30299pjglmlckzq6jp28wrkz"; }; buildInputs = stdenv.lib.optional zlibSupport zlib ++ @@ -19,4 +19,15 @@ stdenv.mkDerivation { CXX = "g++"; CXXCPP = "g++ -E"; inherit sslSupport openssl; + + patches = [ + /* Fixes broken retry support when a timeout is used. The + select() system call (used to wait for the connection to come + up) can return slightly before the computed deadline (a few + milliseconds). Curl will think the problem is something else, + proceed with the next IP address (which usually doesn't exist), + then barf with a CURLE_COULDNT_CONNECT error, which is + considered non-transient so it won't retry. */ + ./connect-timeout.patch + ]; } diff --git a/pkgs/tools/networking/p2p/bit-tornado/default.nix b/pkgs/tools/networking/p2p/bit-tornado/default.nix index 75e06f7ca2f..d8b5d2bb015 100644 --- a/pkgs/tools/networking/p2p/bit-tornado/default.nix +++ b/pkgs/tools/networking/p2p/bit-tornado/default.nix @@ -13,7 +13,9 @@ stdenv.mkDerivation { installPhase = "python setup.py install --prefix=$out ;"+ " echo 'export PYTHONPATH=$PYTHONPATH:'$out'/lib/python2.4/site-packages:"+ wxPython26+"/lib/python2.4/site-packages:"+ - wxPython26+"/lib/python2.4/site-packages/wx-2.6-gtk2-unicode; "+ + "'$out'/lib/python2.5/site-packages:"+ + wxPython26+"/lib/python2.4/site-packages/wx-2.6-gtk2-unicode:"+ + wxPython26+"/lib/python2.5/site-packages/wx-2.6-gtk2-unicode; "+ "python `which btdownloadgui.py` --ipv6_enabled 1 --ipv6_binds_v4 0 \"$@\";' >"+ "$out/bin/bittornado ; chmod a+rx $out/bin/bittornado;"; diff --git a/pkgs/tools/networking/sshfs-fuse/default.nix b/pkgs/tools/networking/sshfs-fuse/default.nix index 29a74aed7a1..e528f68af01 100644 --- a/pkgs/tools/networking/sshfs-fuse/default.nix +++ b/pkgs/tools/networking/sshfs-fuse/default.nix @@ -1,10 +1,15 @@ {stdenv, fetchurl, pkgconfig, glib, fuse}: stdenv.mkDerivation { - name = "sshfs-fuse-1.7"; + name = "sshfs-fuse-1.9"; src = fetchurl { - url = mirror://sourceforge/fuse/sshfs-fuse-1.7.tar.gz; - md5 = "e91a2fed1da952a375798408dc6e41a0"; + url = mirror://sourceforge/fuse/sshfs-fuse-1.9.tar.gz; + sha256 = "10ishsghdwd6a1cd36gp26qpch6z8d6wjs7aw8vs0ffnvrs4hdza"; }; buildInputs = [pkgconfig glib fuse]; + + meta = { + homepage = http://fuse.sourceforge.net/sshfs.html; + description = "FUSE-based filesystem that allows remote filesystems to be mounted over SSH"; + }; } diff --git a/pkgs/tools/networking/tcpdump/default.nix b/pkgs/tools/networking/tcpdump/default.nix index f47ca7a965c..82d8641f60b 100644 --- a/pkgs/tools/networking/tcpdump/default.nix +++ b/pkgs/tools/networking/tcpdump/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, libpcap}: stdenv.mkDerivation { - name = "tcpdump-3.9.5"; + name = "tcpdump-3.9.8"; src = fetchurl { - url = http://www.tcpdump.org/release/tcpdump-3.9.5.tar.gz; - md5 = "2135e7b1f09af0eaf66d2af822bed44a"; + url = http://www.tcpdump.org/release/tcpdump-3.9.8.tar.gz; + sha256 = "16fjm1ih56mwqniffp63adbxwfj5n10x1a7l22j3cx683pmwh293"; }; buildInputs = [libpcap]; } diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 55c20a4b837..128bc23dd4b 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -1,17 +1,17 @@ -{ stdenv, fetchurl, aterm, db4, perl, curl, bzip2 +{ stdenv, fetchurl, aterm, db4, perl, curl, bzip2, openssl ? null , storeDir ? "/nix/store" , stateDir ? "/nix/var" }: stdenv.mkDerivation { - name = "nix-0.10.1"; + name = "nix-0.11"; src = fetchurl { - url = http://nix.cs.uu.nl/dist/nix/nix-0.10.1/nix-0.10.1.tar.bz2; - md5 = "22dc0c024ca5bb477da0b38ba834dbf2"; + url = http://nix.cs.uu.nl/dist/nix/nix-0.11/nix-0.11.tar.bz2; + md5 = "890c25ac0005ff466683869efc288b67"; }; - buildInputs = [perl curl]; + buildInputs = [perl curl openssl]; configureFlags = " --with-store-dir=${storeDir} --localstatedir=${stateDir} diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index 30d0b8f345e..51bcb9ef298 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -3,14 +3,14 @@ , stateDir ? "/nix/var" }: -let version = "0.11pre9718"; in +let version = "0.12pre10069"; in stdenv.mkDerivation { name = "nix-${version}"; src = fetchurl { url = "http://nix.cs.uu.nl/dist/nix/nix-${version}/nix-${version}.tar.bz2"; - md5 = "cae130dcc51a30eff34fc194e17891f2"; + md5 = "bf05ebe9463f0453beae2c43f05ac13d"; }; buildInputs = [perl curl openssl]; diff --git a/pkgs/tools/security/gnupg/default.nix b/pkgs/tools/security/gnupg/default.nix index 95555c2e11c..dd522fe1d96 100644 --- a/pkgs/tools/security/gnupg/default.nix +++ b/pkgs/tools/security/gnupg/default.nix @@ -7,15 +7,20 @@ }: stdenv.mkDerivation { - name = "gnupg-1.4.7"; + name = "gnupg-1.4.8"; builder = ./builder.sh; src = fetchurl { - url = ftp://ftp.surfnet.nl/pub/security/gnupg/gnupg/gnupg-1.4.7.tar.bz2; - sha256 = "13a6qrgswbrfj3z5hcjx62ahraj4j16cpssgxlkwlqiz35yqplb9"; + url = ftp://ftp.cert.dfn.de/pub/tools/crypt/gcrypt/gnupg/gnupg-1.4.8.tar.bz2; + sha1 = "4b63267358e5c70f05b48e27d6877bad2636cabd"; }; buildInputs = [readline]; idea = if ideaSupport then fetchurl { url = http://nix.cs.uu.nl/dist/tarballs/idea.c.gz; md5 = "9dc3bc086824a8c7a331f35e09a3e57f"; } else null; + + meta = { + description = "A free implementation of the OpenPGP standard for encrypting and signing data"; + homepage = http://www.gnupg.org/; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index edb774fd96b..10bf6ee2323 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -295,8 +295,10 @@ rec { writeText = name: text: runCommand name {inherit text;} "echo -n \"$text\" > $out"; writeScript = name: text: runCommand name {inherit text;} "echo -n \"$text\" > $out; chmod +x $out"; - + stdenvNewSetupScript = stdenv; + + writeScriptBin = name: text: runCommand name {inherit text;} "mkdir -p \$out/bin; echo -n \"\$text\" > \$out/bin/\$name ; chmod +x \$out/bin/\$name"; substituteAll = import ../build-support/substitute/substitute-all.nix { inherit stdenv; @@ -523,7 +525,7 @@ rec { (import ./all-packages.nix {system = "i686-linux";}).grub else import ../tools/misc/grub { - inherit fetchurl stdenv; + inherit fetchurl stdenv autoconf automake; }; gtkgnutella = import ../tools/networking/p2p/gtk-gnutella { @@ -536,6 +538,10 @@ rec { inherit fetchurl stdenv; }); + hddtemp = import ../tools/hddtemp { + inherit fetchurl stdenv; + }; + hevea = import ../tools/typesetting/hevea { inherit fetchurl stdenv ocaml; }; @@ -589,6 +595,10 @@ rec { inherit fetchurl stdenv db4 groff; }; + memtest86 = import ../tools/misc/memtest86 { + inherit fetchurl stdenv; + }; + mjpegtools = import ../tools/video/mjpegtools { inherit fetchurl stdenv libjpeg; inherit (xlibs) libX11; @@ -653,6 +663,10 @@ rec { inherit (xlibs) libX11; }; + psmisc = import ../tools/misc/psmisc { + inherit stdenv fetchurl ncurses; + }; + pwgen = import ../tools/security/pwgen { inherit stdenv fetchurl; }; @@ -847,7 +861,7 @@ rec { })); bashInteractive = appendToName "interactive" (import ../shells/bash { - inherit fetchurl stdenv ncurses; + inherit fetchurl ncurses stdenv; bison = bison23; interactive = true; }); @@ -1017,12 +1031,11 @@ rec { ghc = ghc661; - ghc68 = lowPrio (import ../development/compilers/ghc-6.8 { - inherit fetchurl stdenv readline perl gmp ncurses pkgconfig; - inherit (gtkLibs) gtk; + ghc68 = import ../development/compilers/ghc-6.8 { + inherit fetchurl stdenv readline perl gmp ncurses; m4 = gnum4; ghc = ghcboot; - }); + }; ghc661 = import ../development/compilers/ghc-6.6.1 { inherit fetchurl stdenv readline perl gmp ncurses; @@ -1238,6 +1251,7 @@ rec { lib = lib_unstable; inherit fetchurl flex bison apacheHttpd; # gettext; inherit libxml2; + flags = [ "xdebug" "mysql" "mysqli" "pdo_mysql" "libxml2" "apxs2" ]; }; python = getVersion "python" python_alts; @@ -1383,10 +1397,15 @@ rec { inherit fetchurl stdenv replace; }; - elfutils = import ../development/tools/misc/elfutils { - inherit fetchurl stdenv; + elfutilsFun = lib.sumArgs + (selectVersion ../development/tools/misc/elfutils) { + inherit fetchurl stdenv; }; + elfutils = elfutilsFun { + version = "0.131"; + } null; + epm = import ../development/tools/misc/epm { inherit fetchurl stdenv rpm; }; @@ -1467,8 +1486,8 @@ rec { }; ltrace = import ../development/tools/misc/ltrace { - inherit fetchurl stdenv builderDefs stringsWithDeps lib - elfutils; + inherit fetchurl stdenv builderDefs stringsWithDeps lib; + elfutils = elfutilsFun {version = "0.127";} null; }; mk = import ../development/tools/build-managers/mk { @@ -1563,6 +1582,10 @@ rec { inherit fetchurl stdenv ncurses; }; + acl = import ../development/libraries/acl { + inherit stdenv fetchurl autoconf libtool gettext attr; + }; + /* agg = import ../development/libraries/agg { inherit fetchurl stdenv autoconf automake libtool pkgconfig; @@ -1586,6 +1609,14 @@ rec { inherit (gnome) glib; }; + aspell = import ../development/libraries/aspell { + inherit fetchurl stdenv perl; + }; + + aspellDicts = recurseIntoAttrs (import ../development/libraries/aspell/dictionaries.nix { + inherit fetchurl stdenv aspell which; + }); + aterm = lowPrio (import ../development/libraries/aterm { inherit fetchurl stdenv; }); @@ -1598,14 +1629,10 @@ rec { inherit fetchurl stdenv; }; - aspell = import ../development/libraries/aspell { - inherit fetchurl stdenv perl; + attr = import ../development/libraries/attr { + inherit stdenv fetchurl autoconf libtool gettext; }; - aspellDicts = recurseIntoAttrs (import ../development/libraries/aspell/dictionaries.nix { - inherit fetchurl stdenv aspell which; - }); - audiofile = import ../development/libraries/audiofile { inherit fetchurl stdenv; }; @@ -1997,6 +2024,10 @@ rec { inherit sqlite mysql; } null; + libdv = import ../development/libraries/libdv { + lib = lib_unstable; + inherit fetchurl stdenv mkDerivationByConfiguration; + }; libdrm = import ../development/libraries/libdrm { inherit fetchurl stdenv; @@ -2123,7 +2154,11 @@ rec { inherit fetchurl stdenv zlib libjpeg; }; - libungif = import ../development/libraries/libungif { + giflib = import ../development/libraries/giflib { + inherit fetchurl stdenv; + }; + + libungif = import ../development/libraries/giflib/libungif.nix { inherit fetchurl stdenv; }; @@ -2367,7 +2402,7 @@ rec { t1lib = import ../development/libraries/t1lib { inherit fetchurl stdenv x11; - inherit (xlibs) libXaw; + inherit (xlibs) libXaw libXpm; }; taglib = import ../development/libraries/taglib { @@ -2934,6 +2969,17 @@ rec { inherit fetchurl stdenv; }; + atherosFun = lib.sumArgs (selectVersion ../os-specific/linux/atheros) { + inherit fetchurl stdenv builderDefs; + }; + + atherosVersion = "r3122"; + + atherosFunCurrent = theKernel: (atherosFun { + version = atherosVersion; + kernel = theKernel; + } null); + bridge_utils = import ../os-specific/linux/bridge_utils { inherit fetchurl stdenv autoconf automake; }; @@ -2955,6 +3001,14 @@ rec { static = true; })); + dmidecodeFun = lib.sumArgs (selectVersion ../os-specific/linux/dmidecode) { + inherit fetchurl stdenv builderDefs; + }; + + dmidecode = dmidecodeFun { + version = "2.9"; + } null; + dietlibc = import ../os-specific/linux/dietlibc { inherit fetchurl glibc; # Dietlibc 0.30 doesn't compile on PPC with GCC 4.1, bus GCC 3.4 works. @@ -2984,7 +3038,7 @@ rec { }; fuse = import ../os-specific/linux/fuse { - inherit fetchurl stdenv; + inherit fetchurl stdenv utillinux; }; genext2fs = import ../os-specific/linux/genext2fs { @@ -3088,6 +3142,11 @@ rec { libselinux = import ../os-specific/linux/libselinux { inherit fetchurl stdenv libsepol; }; + + libraw1394 = import ../development/libraries/libraw1394 { + inherit fetchurl stdenv; + }; + libsexy = import ../development/libraries/libsexy { inherit stdenv fetchurl pkgconfig libxml2; @@ -3178,6 +3237,13 @@ rec { inherit fetchurl stdenv; }; + module_aggregation = moduleSources: + import ../os-specific/linux/module-init-tools/aggregator.nix { + inherit fetchurl stdenv module_init_tools moduleSources + builderDefs; + inherit (xorg) lndir; + }; + modutils = import ../os-specific/linux/modutils { inherit fetchurl bison flex; stdenv = overrideGCC stdenv gcc34; @@ -3195,9 +3261,7 @@ rec { }; nvidiaDrivers = import ../os-specific/linux/nvidia { - inherit stdenv fetchurl kernel coreutils; - xorg_server = xorg.xorgserver; - inherit (xlibs) libX11 libXext; + inherit stdenv fetchurl kernel xlibs gtkLibs; }; gw6c = import ../os-specific/linux/gw6c { @@ -3260,6 +3324,14 @@ rec { inherit fetchurl stdenv; }; + sdparmFun = lib.sumArgs (selectVersion ../os-specific/linux/sdparm) { + inherit fetchurl stdenv builderDefs; + }; + + sdparm = sdparmFun { + version = "1.02"; + } null; + shadowutils = import ../os-specific/linux/shadow { inherit fetchurl stdenv; }; @@ -3365,6 +3437,11 @@ rec { inherit fetchurl stdenv cabextract; }; + wrapFonts = paths : ((import ../data/fonts/fontWrap) { + inherit fetchurl stdenv builderDefs paths; + inherit (xorg) mkfontdir mkfontscale; + }); + docbook5 = import ../data/sgml+xml/schemas/docbook-5.0 { inherit fetchurl stdenv; }; @@ -3635,6 +3712,14 @@ rec { inherit fetchurl stdenv qt4 djvulibre; }; + dvdplusrwtoolsFun = lib.sumArgs (selectVersion ../os-specific/linux/dvd+rw-tools) { + inherit fetchurl stdenv builderDefs cdrkit m4; + }; + + dvdplusrwtools = dvdplusrwtoolsFun { + version = "7.0"; + } null; + eclipse = plugins: import ../applications/editors/eclipse { inherit fetchurl stdenv makeWrapper jdk; @@ -3725,7 +3810,25 @@ rec { #enableOfficialBranding = true; }); - firefox3b1Wrapper = wrapFirefox firefox3b1 ""; + firefox3b2 = lowPrio (import ../applications/networking/browsers/firefox3b1/3b2.nix { + inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo + python curl coreutils dbus dbus_glib freetype fontconfig; + inherit (gtkLibs) gtk pango; + inherit (gnome) libIDL; + inherit (xlibs) libXi libX11 libXrender libXft libXt; + #enableOfficialBranding = true; + }); + + firefox3b1Bin = lowPrio (import ../applications/networking/browsers/firefox3b1/binary.nix { + inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo + python curl coreutils freetype fontconfig; + inherit (gtkLibs) gtk atk pango glib; + inherit (gnome) libIDL; + inherit (xlibs) libXi libX11 libXrender libXft libXt; + }); + + firefox3b1Wrapper = lowPrio (wrapFirefox firefox3b1 ""); + firefox3b1BinWrapper = lowPrio (wrapFirefox firefox3b1Bin ""); flac = import ../applications/audio/flac { inherit fetchurl stdenv libogg; @@ -3746,6 +3849,12 @@ rec { inherit fetchurl stdenv; }; + freemind = import ../applications/misc/freemind { + inherit fetchurl stdenv ant; + jdk = jdk; + jre = jdk; + }; + fspot = import ../applications/graphics/f-spot { inherit fetchurl stdenv perl perlXMLParser pkgconfig mono libexif libjpeg sqlite lcms libgphoto2 monoDLLFixer; @@ -3829,7 +3938,7 @@ rec { }; imagemagickFun = lib.sumArgs (import ../applications/graphics/ImageMagick) { - inherit stdenv fetchurl; + inherit stdenv fetchurl libtool; }; imagemagick = imagemagickFun { @@ -4024,7 +4133,7 @@ rec { }; pinfo = import ../applications/misc/pinfo { - inherit fetchurl stdenv ncurses; + inherit fetchurl stdenv ncurses readline; }; # perhaps there are better apps for this task? It's how I had configured my preivous system. @@ -4042,6 +4151,28 @@ rec { python = builtins.getAttr "2.5" python_alts; }; + qemuFun = lib.sumArgs (selectVersion ../applications/virtualization/qemu ) { + inherit fetchurl; + stdenv = overrideGCC stdenv gcc34; + builderDefs = builderDefs { + stdenv = (overrideGCC stdenv gcc34)//{gcc=gcc34;}; + }; + inherit SDL zlib which; + }; + + qemu = qemuFun { + version = "0.9.0"; + } null; + + qemuImageFun = lib.sumArgs + (selectVersion ../applications/virtualization/qemu/linux-img ) { + inherit builderDefs fetchurl stdenv; + }; + + qemuImage = qemuImageFun { + version = "0.2"; + } null; + ratpoison = import ../applications/window-managers/ratpoison { inherit fetchurl stdenv fontconfig readline; inherit (xlibs) libX11 inputproto libXt libXpm libXft @@ -4164,6 +4295,13 @@ rec { inherit (xlibs) xextproto libXtst inputproto; }; + /* does'nt work yet i686-linux only (32bit version) + teamspeak_client = import ../applications/networking/instant-messengers/teamspeak/client.nix { + inherit fetchurl stdenv; + inherit glibc x11; + }; + */ + thunderbird = import ../applications/networking/mailreaders/thunderbird-2.x { inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo; inherit (gtkLibs) gtk; @@ -4197,13 +4335,44 @@ rec { })); vimHugeX = import ../applications/editors/vim { - inherit fetchurl stdenv lib ncurses pkgconfig; + inherit fetchurl stdenv lib ncurses pkgconfig + perl python tcl; inherit (xlibs) libX11 libXext libSM libXpm libXt libXaw libXau; inherit (gtkLibs) glib gtk; - flags = ["hugeFeatures" "gtkGUI" "x11Support"]; + + # Looks like python and perl can conflict + flags = ["hugeFeatures" "gtkGUI" "x11Support" + /*"perlSupport"*/ "pythonSupport" "tclSupport"]; }; + vim_configurable = import ../applications/editors/vim/configurable.nix { + inherit fetchurl stdenv ncurses pkgconfig mkDerivationByConfiguration; + inherit (xlibs) libX11 libXext libSM libXpm + libXt libXaw libXau libXmu; + inherit (gtkLibs) glib gtk; + lib = lib_unstable; + features = "huge"; # one of tiny, small, normal, big or huge + # optional features by passing + # python + # TODO mzschemeinterp perlinterp + inherit python /*x11*/; + + # optional features by flags + flags = [ "X11" ]; # only flag "X11" by now + }; + + /*virtualboxFun = lib.sumArgs (selectVersion ../applications/virtualization/virtualbox) { + inherit stdenv fetchurl builderDefs bridge_utils umlutilities kernelHeaders + wine jre libxslt SDL qt3 openssl zlib; + inherit (xorg) libXcursor; + inherit (gnome) libIDL; + }; + + virtualbox = virtualboxFun { + version = "1.5.2"; + } null;*/ + vlc = import ../applications/video/vlc { inherit fetchurl stdenv perl x11 wxGTK zlib mpeg2dec a52dec libmad ffmpeg @@ -4304,6 +4473,11 @@ rec { inherit (xlibs) libXaw xproto libXt libX11 libSM libICE; }; + xlaunch = import ../tools/X11/xlaunch { + inherit stdenv; + inherit (xorg) xorgserver; + }; + xmacro = import ../tools/X11/xmacro { inherit fetchurl stdenv; inherit (xlibs) libX11 libXi @@ -4315,6 +4489,7 @@ rec { inherit (xlibs) libX11 libXi imake libXau; inherit (xorg) xauth; }; + xvidcap = import ../applications/video/xvidcap { inherit fetchurl stdenv perl perlXMLParser pkgconfig; inherit (gtkLibs) gtk; @@ -4322,6 +4497,24 @@ rec { inherit (xlibs) libXmu libXext; }; + # doesn't compile yet - in case someone else want's to continue .. + /* + qgis_svn = import ../applications/misc/qgis_svn { + lib = lib_unstable; + inherit mkDerivationByConfiguration fetchsvn flex + ncurses fetchurl perl cmake gdal geos proj x11 + gsl libpng zlib stdenv + sqlite glibc fontconfig freetype; + inherit (xlibs) libSM libXcursor libXinerama libXrandr libXrender; + inherit (xorg) libICE; + qt = qt4; + bison = bison23; + + # optional features + # grass = "not yet supported" # cmake -D WITH_GRASS=TRUE and GRASS_PREFX=.. + }; + */ + zapping = import ../applications/video/zapping { inherit fetchurl stdenv pkgconfig perl python gettext zvbi libjpeg libpng x11 @@ -4550,10 +4743,16 @@ rec { inherit stdenv fetchurl jdk; }; + # don't have time for the source build right now + # maven2 + mvn_bin = import ../misc/maven/maven-2.nix { + inherit fetchurl stdenv; + }; + nix = import ../tools/package-management/nix { - inherit fetchurl stdenv perl curl bzip2; + inherit fetchurl stdenv perl curl bzip2 openssl; aterm = aterm242fixes; - db4 = db44; + db4 = db45; }; nixStatic = import ../tools/package-management/nix-static { diff --git a/pkgs/top-level/build-for-release.nix b/pkgs/top-level/build-for-release.nix index 18a7074d843..6b9d91981fd 100644 --- a/pkgs/top-level/build-for-release.nix +++ b/pkgs/top-level/build-for-release.nix @@ -4,7 +4,6 @@ let { i686LinuxPkgs = {inherit (allPackages {system = "i686-linux";}) aterm - gcc nixUnstable pan subversion @@ -27,6 +26,5 @@ let { body = [ i686LinuxPkgs x86_64LinuxPkgs -# powerpcLinuxPkgs ]; } diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix index df7df3e71a0..aa53c9ba157 100644 --- a/pkgs/top-level/builder-defs.nix +++ b/pkgs/top-level/builder-defs.nix @@ -3,7 +3,7 @@ args: with args; with stringsWithDeps; with lib; { inherit writeScript; - + addSbinPath = getAttr ["addSbinPath"] false args; forceShare = if args ? forceShare then args.forceShare else ["man" "doc" "info"]; @@ -13,6 +13,11 @@ args: with args; with stringsWithDeps; with lib; else if (hasSuffixHack ".tar.bz2" s) || (hasSuffixHack ".tbz2" s) then "tbz2" else if (hasSuffixHack ".zip" s) || (hasSuffixHack ".ZIP" s) then "zip" else if (hasSuffixHack "-cvs-export" s) then "cvs-dir" + else if (hasSuffixHack ".nar.bz2" s) then "narbz2" + + # Last block - for single files!! It should be always after .tar.* + else if (hasSuffixHack ".bz2" s) then "plain-bz2" + else (abort "unknown archive type : ${s}")); defAddToSearchPath = FullDepEntry (" @@ -130,6 +135,11 @@ args: with args; with stringsWithDeps; with lib; fail fi " else "") + +(if addSbinPath then " + if test -d \$1/sbin; then + export _PATH=\$_PATH\${_PATH:+:}\$1/sbin + fi + " else "") +" if test -d \$1/bin; then export _PATH=\$_PATH\${_PATH:+:}\$1/bin @@ -180,6 +190,14 @@ args: with args; with stringsWithDeps; with lib; cp -r '${s}' . cd \$(basename ${s}) chmod u+rwX -R . + " else if (archiveType s) == "narbz2" then " + bzip2 <${s} | nix-store --restore \$PWD/\$(basename ${s} .nar.bz2) + cd \$(basename ${s} .nar.bz2) + " else if (archiveType s) == "plain-bz2" then " + mkdir \$PWD/\$(basename ${s} .bz2) + NAME=\$(basename ${s} .bz2) + bzip2 -d <${s} > \$PWD/\$(basename ${s} .bz2)/\${NAME#*-} + cd \$(basename ${s} .bz2) " else (abort "unknown archive type : ${s}"))+ (if args ? goSrcDir then args.goSrcDir else "") ) [minInit]; @@ -296,4 +314,7 @@ args: with args; with stringsWithDeps; with lib; makeFlags = if useConfig then autoMakeFlags else getAttr ["makeFlags"] "" args; inherit lib; + + surroundWithCommands = x : before : after : {deps=x.deps; text = before + "\n" + + x.text + "\n" + after ;}; }) // args From 6fb8f2c6b7a18a884d6327c591f9bf8d6f46cc1a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:41:20 +0000 Subject: [PATCH 106/320] redland: upgraded to 1.0.7 svn path=/nixpkgs/branches/stdenv-updates/; revision=10146 --- pkgs/development/libraries/redland/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/redland/default.nix b/pkgs/development/libraries/redland/default.nix index 1e657991eab..37d899feb70 100644 --- a/pkgs/development/libraries/redland/default.nix +++ b/pkgs/development/libraries/redland/default.nix @@ -1,11 +1,11 @@ args: with args; -stdenv.mkDerivation { - name = "redland-1.0.6"; +stdenv.mkDerivation rec { + name = "redland-1.0.7"; src = fetchurl { - url = http://prdownloads.sourceforge.net/librdf/redland-1.0.6.tar.gz; - sha256 = "16hm8s6wy43avy4xcsq74n2dyzwzsdq2h2l2jav0by7s6mkh5gxw"; + url = "sf://librdf/${name}.tar.gz"; + sha256 = "1z160hhrnlyy5c8vh2hjza6kdfmzml8mg9dk8yffifkhnxjq5r2z"; }; buildInputs = [ bdb openssl libxml2 pkgconfig perl]; configureFlags="--without-static --with-threads --with-bdb=${bdb}"; From 10942396613d1619726285254e012323dd6e4111 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:41:27 +0000 Subject: [PATCH 107/320] qt-4: rev761061 svn path=/nixpkgs/branches/stdenv-updates/; revision=10147 --- pkgs/development/libraries/qt-4/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/qt-4/default.nix b/pkgs/development/libraries/qt-4/default.nix index 1fbdd362ff3..9910d2eed2a 100644 --- a/pkgs/development/libraries/qt-4/default.nix +++ b/pkgs/development/libraries/qt-4/default.nix @@ -29,8 +29,8 @@ rec { name = "qt-kde-4.3svn"; src = fetchsvn { url = svn://anonsvn.kde.org/home/kde/trunk/qt-copy; - rev = "746559"; - sha256 = "0lj2qp2q03m72kxdalrq6jfyrx33cg62ggvqww1c2f4aspvyijls"; + rev = "761061"; + sha256 = "0i98kh435dj29ln1lnidxwivcha1m553s4l8c1h2b3yd4950w8x4"; }; patchPhase = "mkdir .svn; bash apply_patches;" + common.patchPhase; }); From 453dcda812556c4e48ef74cffbd22c28532d9eb1 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:41:37 +0000 Subject: [PATCH 108/320] lua-5: url correted svn path=/nixpkgs/branches/stdenv-updates/; revision=10148 --- pkgs/development/interpreters/lua-5/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/lua-5/default.nix b/pkgs/development/interpreters/lua-5/default.nix index 30ab0311136..6408457e2a0 100644 --- a/pkgs/development/interpreters/lua-5/default.nix +++ b/pkgs/development/interpreters/lua-5/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "lua-5.1.2"; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/lua-5.1.2.tar.gz; + url = http://www.lua.org/ftp/lua-5.1.2.tar.gz; sha256 = "17ixifwgjva5592s2rn1ki56wa7hgw0z210r4bcx5lv8zv39iw2w"; }; buildFlags = "linux"; # TODO: support for non-linux systems From 57de138aafadd231924a7def775fe0c410f300ab Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:41:48 +0000 Subject: [PATCH 109/320] kdesupport: rev761061 svn path=/nixpkgs/branches/stdenv-updates/; revision=10149 --- pkgs/desktops/kde-4/support/default.nix | 2 +- pkgs/desktops/kde-4/support/gmm.nix | 2 +- pkgs/desktops/kde-4/support/qca.nix | 2 +- pkgs/desktops/kde-4/support/qimageblitz.nix | 2 +- pkgs/desktops/kde-4/support/soprano.nix | 2 +- pkgs/desktops/kde-4/support/strigi.nix | 2 +- pkgs/desktops/kde-4/support/taglib.nix | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/desktops/kde-4/support/default.nix b/pkgs/desktops/kde-4/support/default.nix index 426a5811bd7..4ad2143a700 100644 --- a/pkgs/desktops/kde-4/support/default.nix +++ b/pkgs/desktops/kde-4/support/default.nix @@ -4,7 +4,7 @@ let svnSrc = name: hash: oldArgs.fetchsvn { url = "svn://anonsvn.kde.org/home/kde/trunk/kdesupport/${name}"; - rev = 747269; + rev = 761061; sha256 = hash; }; }; diff --git a/pkgs/desktops/kde-4/support/gmm.nix b/pkgs/desktops/kde-4/support/gmm.nix index 10a2b63863b..768df83c8df 100644 --- a/pkgs/desktops/kde-4/support/gmm.nix +++ b/pkgs/desktops/kde-4/support/gmm.nix @@ -2,6 +2,6 @@ args: with args; stdenv.mkDerivation { name = "gmm-svn"; - src = svnSrc "gmm" "08j40y85dprs9ddzsddimrhssnz08fafq6nhn40l59ddbvvir0gy"; + src = svnSrc "gmm" "1hxc6ymrjccz4mnix44fwpkmv8fvg5y5a9j3y6liz37wj87snnxd"; buildInputs = [ cmake ]; } diff --git a/pkgs/desktops/kde-4/support/qca.nix b/pkgs/desktops/kde-4/support/qca.nix index cf542feac7c..a9b69787965 100644 --- a/pkgs/desktops/kde-4/support/qca.nix +++ b/pkgs/desktops/kde-4/support/qca.nix @@ -2,7 +2,7 @@ args: with args; stdenv.mkDerivation { name = "qca-2.0.0dev"; - src = svnSrc "qca" "1jdqh7xg3vqyx7lgngcz9qj6zdnmlwqw7yv2py7gp2qma7a0annd"; + src = svnSrc "qca" "1dm7q9v54ps0iix55hx4y51k379gqiwai5ym7avafis9j0py28aj"; buildInputs = [ cmake qt openssl gettext cyrus_sasl libgcrypt gnupg ]; patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../CMakeLists.txt"; } diff --git a/pkgs/desktops/kde-4/support/qimageblitz.nix b/pkgs/desktops/kde-4/support/qimageblitz.nix index 0abdd882a50..a4a88afa7e7 100644 --- a/pkgs/desktops/kde-4/support/qimageblitz.nix +++ b/pkgs/desktops/kde-4/support/qimageblitz.nix @@ -2,6 +2,6 @@ args: with args; stdenv.mkDerivation { name = "qimageblitz-4.0.0svn"; - src = svnSrc "qimageblitz" "0rmfkl529fmlb495whlidffib1x5s03xzsyaxild3rrsf4h1npcx"; + src = svnSrc "qimageblitz" "0vsan536qv8hj8l8ghmji62xzc75xm896h7fpwk48vq9f8w9fn4q"; buildInputs = [cmake qt]; } diff --git a/pkgs/desktops/kde-4/support/soprano.nix b/pkgs/desktops/kde-4/support/soprano.nix index c2b9a3b0903..4b0e78f91cf 100644 --- a/pkgs/desktops/kde-4/support/soprano.nix +++ b/pkgs/desktops/kde-4/support/soprano.nix @@ -2,7 +2,7 @@ args: with args; stdenv.mkDerivation { name = "soprano-1.9.0svn"; - src = svnSrc "soprano" "1zzn84k6m351y9pr0kkxb1d4i3jb3mkyyqc07bq0im56m8bvrcm7"; + src = svnSrc "soprano" "1j61jf8vzamknmzmrxpwba9v7c0vnb8zmlh9n0sgawjgbzfgq2zn"; CLUCENE_HOME=cluceneCore; buildInputs = [ cmake qt cluceneCore redland ]; } diff --git a/pkgs/desktops/kde-4/support/strigi.nix b/pkgs/desktops/kde-4/support/strigi.nix index 9e7d1f0c9ac..75a9ed8c651 100644 --- a/pkgs/desktops/kde-4/support/strigi.nix +++ b/pkgs/desktops/kde-4/support/strigi.nix @@ -2,7 +2,7 @@ args: with args; stdenv.mkDerivation { name = "strigi-svn"; - src = svnSrc "strigi" "198arwd87l97gg5rs3p7rk9wiw1mrdsw9y0zwvrwnxs7glgj201h"; + src = svnSrc "strigi" "0zmfy7ga4y49hl3rgw8ypqag36k78k2wfkkxka8xskrd249516ha"; CLUCENE_HOME=cluceneCore; buildInputs = [ cmake zlib cluceneCore bzip2 libxml2 qt dbus log4cxx stdenv.gcc.libc exiv2 bison cppunit perl ]; diff --git a/pkgs/desktops/kde-4/support/taglib.nix b/pkgs/desktops/kde-4/support/taglib.nix index fd6dac35fd9..5a5a26e09c3 100644 --- a/pkgs/desktops/kde-4/support/taglib.nix +++ b/pkgs/desktops/kde-4/support/taglib.nix @@ -2,6 +2,6 @@ args: with args; stdenv.mkDerivation { name = "taglib-1.4svn"; - src = svnSrc "taglib" "0jmy1mldpjqnq8ap3ynwagxpjcfxzbisa4qd6zdwlwcm8zb54rak"; + src = svnSrc "taglib" "1wszymg4r3mm06wbxviqmnxra120kc1rxbk0a6kjrxjpyr8qcn2k"; buildInputs = [ cmake zlib ]; } From c6da1d6a8f7bd91b22a63a6fbf37b1282fda7532 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:42:06 +0000 Subject: [PATCH 110/320] Removed unneeded cmake dependency for blender svn path=/nixpkgs/branches/stdenv-updates/; revision=10150 --- pkgs/applications/misc/blender/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix index 3fb66dff3e9..e722d4ff9db 100644 --- a/pkgs/applications/misc/blender/default.nix +++ b/pkgs/applications/misc/blender/default.nix @@ -12,7 +12,7 @@ args.stdenv.mkDerivation { inherit (args) scons SDL freetype openal python openexr mesa; buildInputs =(with args; [python scons - gettext libjpeg libpng zlib freetype /* fmod smpeg */ freealut openal x11 mesa inputproto libtiff cmake libXi ]); + gettext libjpeg libpng zlib freetype /* fmod smpeg */ freealut openal x11 mesa inputproto libtiff libXi ]); # patch SConstruct so that we can pass on additional include. Either blender # or openEXR is broken. I think OpenEXR should use include "" isntead of <> to From 06f98b22b4f3293b684591a38a53f47b478c5d6c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:42:19 +0000 Subject: [PATCH 111/320] xterm: using versioned tarball, upgrade go 231 svn path=/nixpkgs/branches/stdenv-updates/; revision=10151 --- pkgs/applications/misc/xterm/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/misc/xterm/default.nix b/pkgs/applications/misc/xterm/default.nix index d27b723400e..c1be706b547 100644 --- a/pkgs/applications/misc/xterm/default.nix +++ b/pkgs/applications/misc/xterm/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, libXaw, xproto, libXt, libX11, libSM, libICE, ncurses}: -stdenv.mkDerivation { - name = "xterm-208"; +stdenv.mkDerivation rec { + name = "xterm-231"; src = fetchurl { - url = ftp://invisible-island.net/xterm/xterm.tar.gz; - md5 = "f7b04a66dc401dc22f5ddb7f345be229"; /* was a062d0b398918015d07c31ecdcc5111a */ + url = "ftp://invisible-island.net/xterm/${name}.tgz"; + sha256 = "0qlz5nkdqkahdg9kbd1ni96n69srj1pd9yggwrw3z0kghaajb2sr"; }; buildInputs = [libXaw xproto libXt libX11 libSM libICE ncurses]; } From f7c4d82dd7fbd20582fb52fc9a73377ffc13d38b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:42:31 +0000 Subject: [PATCH 112/320] gnupg: using sha256 svn path=/nixpkgs/branches/stdenv-updates/; revision=10152 --- pkgs/tools/security/gnupg/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/security/gnupg/default.nix b/pkgs/tools/security/gnupg/default.nix index dd522fe1d96..16c86fbe804 100644 --- a/pkgs/tools/security/gnupg/default.nix +++ b/pkgs/tools/security/gnupg/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation { builder = ./builder.sh; src = fetchurl { url = ftp://ftp.cert.dfn.de/pub/tools/crypt/gcrypt/gnupg/gnupg-1.4.8.tar.bz2; - sha1 = "4b63267358e5c70f05b48e27d6877bad2636cabd"; + sha256 = "0v009vqpa4l9zwhcaaagz5sx65fjp8g0alsf8kac5s5gvrs2b78i"; }; buildInputs = [readline]; idea = if ideaSupport then fetchurl { From ef3bc23f9802ab598cfc0f176fa73847a0d51134 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 01:42:41 +0000 Subject: [PATCH 113/320] openal-soft: 1.1.93 svn path=/nixpkgs/branches/stdenv-updates/; revision=10153 --- pkgs/development/libraries/openalSoft/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/openalSoft/default.nix b/pkgs/development/libraries/openalSoft/default.nix index b42e733ea8f..f0bce75e07a 100644 --- a/pkgs/development/libraries/openalSoft/default.nix +++ b/pkgs/development/libraries/openalSoft/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation { # (neither the ABI or API will break). Please try it out and let me know how it # works. :-) - name = "openal-soft-testing"; + name = "openal-soft-1.1.93"; src = fetchurl { - url = http://kcat.strangesoft.net/OpenAL.tar.bz2; - sha256 = "7b53c3e6eda1a71010651eb058c71c9b0c86b3c15cae5f0ffeeb7222531aa97d"; + url = http://kcat.strangesoft.net/openal-releases/openal-soft-1.1.93.tar.bz2; + sha256 = "162nyv4jy6qzi7s5q3wpdawfph6npyn1n4wjf21haxdxq0mmp6l7"; }; buildInputs = [cmake alsaLib]; From 6e8ff2b24bb056733067995dc6dd16452184d7a1 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 15 Jan 2008 14:32:10 +0000 Subject: [PATCH 114/320] Merged with trunk again svn path=/nixpkgs/branches/stdenv-updates/; revision=10155 --- pkgs/applications/video/kino/default.nix | 90 +++++++++++++++++++ pkgs/desktops/gnome/default.nix | 2 +- pkgs/desktops/gnome/gtksourceview.nix | 2 + pkgs/desktops/kde-4/base/default.nix | 6 +- pkgs/desktops/kde-4/edu/default.nix | 6 +- pkgs/desktops/kde-4/extragear/default.nix | 6 +- pkgs/desktops/kde-4/games/default.nix | 6 +- pkgs/desktops/kde-4/graphics/default.nix | 6 +- pkgs/desktops/kde-4/libs/default.nix | 6 +- pkgs/desktops/kde-4/multimedia/default.nix | 6 +- pkgs/desktops/kde-4/network/default.nix | 6 +- pkgs/desktops/kde-4/pim/default.nix | 6 +- pkgs/desktops/kde-4/pimlibs/default.nix | 6 +- pkgs/desktops/kde-4/runtime/default.nix | 6 +- pkgs/desktops/kde-4/toys/default.nix | 6 +- pkgs/desktops/kde-4/utils/default.nix | 6 +- pkgs/desktops/kde-4/workspace/default.nix | 6 +- .../development/compilers/ghc-6.8/default.nix | 7 ++ .../libraries/libavc1394/default.nix | 17 ++++ .../libraries/libiec61883/default.nix | 17 ++++ pkgs/misc/emulators/wine/default.nix | 8 +- .../firmware/iwlwifi-3945-ucode/default.nix | 19 ++++ pkgs/os-specific/linux/iwlwifi/default.nix | 37 ++++++++ .../linux/module-init-tools/aggregator.nix | 12 +-- .../os-specific/linux/ndiswrapper/default.nix | 2 +- pkgs/os-specific/linux/nvidia/builder.sh | 7 +- .../linux/wpa_supplicant/default.nix | 6 +- pkgs/servers/samba/default.nix | 5 +- pkgs/tools/misc/relfs/cvs.2007.12.01.nix | 16 ++-- pkgs/tools/security/chkrootkit/default.nix | 16 ++++ pkgs/top-level/all-packages.nix | 51 +++++++++-- 31 files changed, 325 insertions(+), 73 deletions(-) create mode 100644 pkgs/applications/video/kino/default.nix create mode 100644 pkgs/development/libraries/libavc1394/default.nix create mode 100644 pkgs/development/libraries/libiec61883/default.nix create mode 100644 pkgs/os-specific/linux/firmware/iwlwifi-3945-ucode/default.nix create mode 100644 pkgs/os-specific/linux/iwlwifi/default.nix create mode 100644 pkgs/tools/security/chkrootkit/default.nix diff --git a/pkgs/applications/video/kino/default.nix b/pkgs/applications/video/kino/default.nix new file mode 100644 index 00000000000..8e501f40cc0 --- /dev/null +++ b/pkgs/applications/video/kino/default.nix @@ -0,0 +1,90 @@ +# is this configure option of interest? +#--enable-udev-rules-dir=PATH +# Where to install udev rules (/etc/udev/rules.d) + +#TODO shared version? + + +# This is my config output.. Much TODO ? +#source path /tmp/nix-31998-1/kino-1.2.0/ffmpeg +#C compiler gcc +#make make +#.align is power-of-two no +#ARCH x86_64 (generic) +#build suffix -kino +#big-endian no +#MMX enabled yes +#CMOV enabled no +#CMOV is fast no +#gprof enabled no +#debug symbols yes +#strip symbols yes +#optimize yes +#static yes +#shared no +#postprocessing support no +#software scaler enabled yes +#video hooking no +#network support no +#threading support no +#SDL support no +#Sun medialib support no +#AVISynth enabled no +#liba52 support no +#liba52 dlopened no +#libdts support no +#libfaac enabled no +#libfaad enabled no +#faadbin enabled no +#libgsm enabled no +#libmp3lame enabled no +#libnut enabled no +#libogg enabled no +#libtheora enabled no +#libvorbis enabled no +#x264 enabled no +#XviD enabled no +#zlib enabled no +#AMR-NB float support no +#AMR-NB fixed support no +#AMR-WB float support no +#AMR-WB IF2 support no + + +args: +args.stdenv.mkDerivation { + name = "kino-1.2.0"; + + phases = "unpackPhase configurePhase buildPhase installPhase"; + + src = args.fetchurl { + url = http://downloads.sourceforge.net/kino/kino-1.2.0.tar.gz; + sha256 = "15q1qmii5a2zbrrrg8iba2d1rjzaisa75zvxjhrs86jwglpn4lp9"; + }; + + buildInputs =(with args; [ gtk libglade libxml2 libraw1394 libsamplerate libdv + pkgconfig perl perlXMLParser libavc1394 libiec61883 x11 libXv gettext libX11 glib cairo ]); # TODOoptional packages + + #preConfigure = " + # grep 11 env-vars + # ex + #"; + + postInstall = " + rpath=`patchelf --print-rpath \$out/bin/kino`; + for i in $\buildInputs; do + echo adding \$i/lib + rpath=\$rpath\${rpath:+:}\$i/lib + done + for i in \$out/bin/*; do + patchelf --set-rpath \"\$rpath\" \"\$i\" + done + "; + + + meta = { + description = "Kino is a non-linear DV editor for GNU/Linux"; + homepage = http://www.kinodv.org/; + license = "GPL2"; + }; +} diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix index 9b4c14340bf..a3f8d4a9c05 100644 --- a/pkgs/desktops/gnome/default.nix +++ b/pkgs/desktops/gnome/default.nix @@ -153,7 +153,7 @@ rec { }; gtksourceview = import ./gtksourceview.nix { - inherit fetchurl stdenv pkgconfig perl perlXMLParser gtk libxml2 + inherit fetchurl stdenv pkgconfig perl perlXMLParser gtk libxml2 gettext libgnomeprint gnomevfs libbonobo /* !!! <- should be propagated in gnomevfs */ GConf /* idem */ libgnomeprintui libgnomecanvas /* !!! through printui */; input = desktop.gtksourceview; diff --git a/pkgs/desktops/gnome/gtksourceview.nix b/pkgs/desktops/gnome/gtksourceview.nix index 8ad7955e8d4..8afafac8cf4 100644 --- a/pkgs/desktops/gnome/gtksourceview.nix +++ b/pkgs/desktops/gnome/gtksourceview.nix @@ -1,6 +1,7 @@ { input, stdenv, fetchurl, perl, perlXMLParser, pkgconfig , gtk, libxml2, libgnomeprint, gnomevfs, libbonobo, GConf , libgnomeprintui, libgnomecanvas +, gettext }: stdenv.mkDerivation { @@ -8,6 +9,7 @@ stdenv.mkDerivation { buildInputs = [ perl perlXMLParser pkgconfig gnomevfs libbonobo GConf libgnomeprintui libgnomecanvas + gettext ]; propagatedBuildInputs = [gtk libxml2 libgnomeprint]; } diff --git a/pkgs/desktops/kde-4/base/default.nix b/pkgs/desktops/kde-4/base/default.nix index 6013a507e3a..4fff839769b 100644 --- a/pkgs/desktops/kde-4/base/default.nix +++ b/pkgs/desktops/kde-4/base/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdebase-4.0rc2"; + name = "kdebase-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdebase-3.97.0.tar.bz2; - sha256 = "1iavkzfq7f9308j2r70xd6qfng0fncpww8s49hbigzkkdzrjk8gn"; + url = mirror://kde/stable/4.0/src/kdebase-4.0.0.tar.bz2; + sha256 = "1419zijcrx6nk10nay3dbv0vi8525hzcqkm2fw8cvw11i4mk909q"; }; propagatedBuildInputs = [kdepimlibs libusb]; diff --git a/pkgs/desktops/kde-4/edu/default.nix b/pkgs/desktops/kde-4/edu/default.nix index 8e6b32c353a..77fe86e2178 100644 --- a/pkgs/desktops/kde-4/edu/default.nix +++ b/pkgs/desktops/kde-4/edu/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation rec { - name = "kdeedu-4.0rc2"; + name = "kdeedu-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdeedu-3.97.0.tar.bz2; - sha256 = "1d2319pzs4ymbp2jgmc1kzkr5d9g5p5d1yg6b5l7z4b2qzhchpl4"; + url = mirror://kde/stable/4.0/src/kdeedu-4.0.0.tar.bz2; + sha256 = "1wjy1rm7aiib1lv61wx7mcbkbpkk6phcz1q6dy51x0hfrc3rdkg4"; }; buildInputs = [kdelibs kdepimlibs boost readline openbabel ocaml diff --git a/pkgs/desktops/kde-4/extragear/default.nix b/pkgs/desktops/kde-4/extragear/default.nix index 69fc626db6d..93e41c6fbfa 100644 --- a/pkgs/desktops/kde-4/extragear/default.nix +++ b/pkgs/desktops/kde-4/extragear/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "extragear-plasma-4.0rc2"; + name = "extragear-plasma-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/extragear-plasma-3.97.0.tar.bz2; - sha256 = "1nzfy34ig66gfpgv6kbcmcap13axcy7kvj43srbd0ic6a0giv283"; + url = mirror://kde/stable/4.0/src/extragear/extragear-plasma-4.0.0.tar.bz2; + sha256 = "19gmvqkal11gg67gfmdivxbhwvggm2i6ad642984d97yicms7s9k"; }; buildInputs = [ kdeworkspace kdebase ]; diff --git a/pkgs/desktops/kde-4/games/default.nix b/pkgs/desktops/kde-4/games/default.nix index d82f3971e3c..a8df422f278 100644 --- a/pkgs/desktops/kde-4/games/default.nix +++ b/pkgs/desktops/kde-4/games/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdegames-4.0rc2"; + name = "kdegames-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdegames-3.97.0.tar.bz2; - sha256 = "12a87lfaqlidjlibxk3q43bdza2c6k5ggqblxdnr8ikjdww2sk29"; + url = mirror://kde/stable/4.0/src/kdegames-4.0.0.tar.bz2; + sha256 = "09ilgi6l5sq4gavskyhfrv8ra3n3r6xdn8cdc7fm2fi3zah4innn"; }; buildInputs = [kdelibs kdepimlibs]; diff --git a/pkgs/desktops/kde-4/graphics/default.nix b/pkgs/desktops/kde-4/graphics/default.nix index b765e63108a..18ff1025590 100644 --- a/pkgs/desktops/kde-4/graphics/default.nix +++ b/pkgs/desktops/kde-4/graphics/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdegraphics-4.0rc2"; + name = "kdegraphics-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdegraphics-3.97.0.tar.bz2; - sha256 = "0f16zyvw37nqhbis34rg6yxg6r95yk2vi9lk3zk8lqjwcs81h5fz"; + url = mirror://kde/stable/4.0/src/kdegraphics-4.0.0.tar.bz2; + sha256 = "00np19mzmg8zs8j89g1f47h3kj5azgnv3nspb8lw880zg682yp2f"; }; buildInputs = [kdelibs kdepimlibs libgphoto2 saneBackends diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix index cd484fa444c..b714977bd73 100644 --- a/pkgs/desktops/kde-4/libs/default.nix +++ b/pkgs/desktops/kde-4/libs/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation rec { - name = "kdelibs-4.0rc2"; + name = "kdelibs-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdelibs-3.97.0.tar.bz2; - sha256 = "0g9r7nph6hpdvbmchvp0h5xk4z0da0b5rskqpbixdplsdxcs8xhv"; + url = mirror://kde/stable/4.0.0/src/kdelibs-4.0.0.tar.bz2; + sha256 = "0bfcrb34kl2md77k9rbr924n5bc7chc5wkr10jjvq98742yh0rza"; }; propagatedBuildInputs = [ diff --git a/pkgs/desktops/kde-4/multimedia/default.nix b/pkgs/desktops/kde-4/multimedia/default.nix index feedc95b15b..0570b6f4035 100644 --- a/pkgs/desktops/kde-4/multimedia/default.nix +++ b/pkgs/desktops/kde-4/multimedia/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdemultimedia-4.0rc2"; + name = "kdemultimedia-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdemultimedia-3.97.0.tar.bz2; - sha256 = "0q78d1gh5na72aj604myy23qn6xb0izw0igsi1h9i4pc2bsis87i"; + url = mirror://kde/stable/4.0/src/kdemultimedia-4.0.0.tar.bz2; + sha256 = "14axr1x09k67vb3vaw4g9zg4mq7j14xn9d90kifwap7b76iljbi5"; }; buildInputs = [kdelibs kdepimlibs kdeworkspace libogg flac cdparanoia lame diff --git a/pkgs/desktops/kde-4/network/default.nix b/pkgs/desktops/kde-4/network/default.nix index d962a9c40ea..1a97c3e7e0d 100644 --- a/pkgs/desktops/kde-4/network/default.nix +++ b/pkgs/desktops/kde-4/network/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdenetwork-4.0rc2"; + name = "kdenetwork-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdenetwork-3.97.0.tar.bz2; - sha256 = "118r55aw0pag78kawjfn3vya7aca12n5ypknm1i4khxs747hxqbr"; + url = mirror://kde/stable/4.0/src/kdenetwork-4.0.0.tar.bz2; + sha256 = "04vigr2z0md64khjdriwslsyaf6mpqxd2iwsnr82g53x4kh0i061"; }; buildInputs = [kdelibs kdepimlibs kdeworkspace sqlite libidn]; diff --git a/pkgs/desktops/kde-4/pim/default.nix b/pkgs/desktops/kde-4/pim/default.nix index 397c57df5bf..5a174130091 100644 --- a/pkgs/desktops/kde-4/pim/default.nix +++ b/pkgs/desktops/kde-4/pim/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdepim-4.0rc2"; + name = "kdepim-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdepim-3.97.0.tar.bz2; - sha256 = "1x5ywn1z963azrrm6rlsspzlsbbwxcsb3zc93pdy80qq1jwsf964"; + url = mirror://kde/stable/4.0/src/kdepim-4.0.0.tar.bz2; + sha256 = "kdepim is not included"; }; buildInputs = [libXinerama mesa stdenv.gcc.libc alsaLib kdelibs kdepimlibs diff --git a/pkgs/desktops/kde-4/pimlibs/default.nix b/pkgs/desktops/kde-4/pimlibs/default.nix index 077cca5e32c..1ea2e99615b 100644 --- a/pkgs/desktops/kde-4/pimlibs/default.nix +++ b/pkgs/desktops/kde-4/pimlibs/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdepimlibs-4.0rc2"; + name = "kdepimlibs-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdepimlibs-3.97.0.tar.bz2; - sha256 = "1zv4l592288bdfxqllm8z1cmsjcprfji5harcxf9hhz95igp5n7j"; + url = mirror://kde/stable/4.0/src/kdepimlibs-4.0.0.tar.bz2; + sha256 = "0vixx2vh7qgysnbzvykf20362p22jzvl8snpqaknay3v3b2k0br0"; }; propagatedBuildInputs = [kdelibs boost gpgme cyrus_sasl openldap]; diff --git a/pkgs/desktops/kde-4/runtime/default.nix b/pkgs/desktops/kde-4/runtime/default.nix index f1740f959fd..5a0d685c9bc 100644 --- a/pkgs/desktops/kde-4/runtime/default.nix +++ b/pkgs/desktops/kde-4/runtime/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdebase-runtime-4.0rc2"; + name = "kdebase-runtime-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdebase-runtime-3.97.0.tar.bz2; - sha256 = "16xang1sjj0h8339cfqf6l4qqswyv42sq9w9a3axmckklmfnx6b1"; + url = mirror://kde/stable/4.0/src/kdebase-runtime-4.0.0.tar.bz2; + sha256 = "0svsn9gzg3ka77j7z71fy502a09w9gp9jd2q2y1w07ahpdil5p7h"; }; propagatedBuildInputs = [kdepimlibs libusb xineLib]; diff --git a/pkgs/desktops/kde-4/toys/default.nix b/pkgs/desktops/kde-4/toys/default.nix index 1ebb427927d..2c0fdb28959 100644 --- a/pkgs/desktops/kde-4/toys/default.nix +++ b/pkgs/desktops/kde-4/toys/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdetoys-4.0rc2"; + name = "kdetoys-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdetoys-3.97.0.tar.bz2; - sha256 = "1ga2xlsr7wl7jnc4clzabgyv5wfcjgpfmv6ca99bkz31nr6lddpa"; + url = mirror://kde/stable/4.0/src/kdetoys-4.0.0.tar.bz2; + sha256 = "0j7kk4ripg2sw4m8ym96aiyi8rsfb4p7kqp9kmik850flqighhsk"; }; buildInputs = [kdelibs kdepimlibs kdeworkspace]; diff --git a/pkgs/desktops/kde-4/utils/default.nix b/pkgs/desktops/kde-4/utils/default.nix index fe453938c94..94f49d11efd 100644 --- a/pkgs/desktops/kde-4/utils/default.nix +++ b/pkgs/desktops/kde-4/utils/default.nix @@ -1,11 +1,11 @@ args: with args; stdenv.mkDerivation { - name = "kdeutils-4.0rc2"; + name = "kdeutils-4.0.0"; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdeutils-3.97.0.tar.bz2; - sha256 = "0nhs91xf83xyf4wlpppavrhyi76qdnilhaynwjirx5n85hjl4iiq"; + url = mirror://kde/stable/4.0/src/kdeutils-4.0.0.tar.bz2; + sha256 = "0ha31z79ikkbknhyklihzys0w4jfz4qx8jiyja0gwh428f7mxqj4"; }; buildInputs = [kdelibs kdepimlibs kdeworkspace gmp libzip python ]; diff --git a/pkgs/desktops/kde-4/workspace/default.nix b/pkgs/desktops/kde-4/workspace/default.nix index 162277a03ed..a5929785aec 100644 --- a/pkgs/desktops/kde-4/workspace/default.nix +++ b/pkgs/desktops/kde-4/workspace/default.nix @@ -1,12 +1,12 @@ args: with args; stdenv.mkDerivation { - name = "kdebase-workspace-4.0rc2"; + name = "kdebase-workspace-4.0.0"; builder = ./builder.sh; src = fetchurl { - url = mirror://kde/unstable/3.97/src/kdebase-workspace-3.97.0.tar.bz2; - sha256 = "1sb3vm5y50af6qvsg4sjw14z7y4j1zbgp7w8gsffigbr0hyj4apl"; + url = mirror://kde/stable/4.0/src/kdebase-workspace-4.0.0.tar.bz2; + sha256 = "08sgp7jaqljdxwsgr5lyyfd6w734yv24zswps1mchmhj01vz1fcg"; }; buildInputs = [kdelibs kdepimlibs stdenv.gcc.libc]; diff --git a/pkgs/development/compilers/ghc-6.8/default.nix b/pkgs/development/compilers/ghc-6.8/default.nix index 929799d1521..6226fa2988d 100644 --- a/pkgs/development/compilers/ghc-6.8/default.nix +++ b/pkgs/development/compilers/ghc-6.8/default.nix @@ -29,6 +29,13 @@ stdenv.mkDerivation (rec { cat $setupHook >> $out/nix-support/setup-hook ''; + configureFlags=[ + "--with-gmp-libraries=${gmp}/lib" + "--with-readline-libraries=${readline}/lib" + "--with-gmp-includes=${gmp}/include" + "--with-gcc=${gcc}/bin/gcc" + ]; + preConfigure = " # still requires a hack for ncurses sed -i \"s|^\\\(ld-options.*$\\\)|\\\1 -L${ncurses}/lib|\" libraries/readline/readline.buildinfo.in diff --git a/pkgs/development/libraries/libavc1394/default.nix b/pkgs/development/libraries/libavc1394/default.nix new file mode 100644 index 00000000000..3d1d63780c2 --- /dev/null +++ b/pkgs/development/libraries/libavc1394/default.nix @@ -0,0 +1,17 @@ +args: +args.stdenv.mkDerivation { + name = "libavc1394-0.5.3"; + + src = args.fetchurl { + url = mirror://sourceforge/libavc1394/libavc1394-0.5.3.tar.gz; + sha256 = "19i40i3722ilhziknfds3a6w5xzv66fvc68gvbir1p2fvwi6ij93"; + }; + + buildInputs =(with args; [pkgconfig libraw1394]); + + meta = { + description = "programming interface for the 1394 Trade Association AV/C (Audio/Video Control) Digital Interface Command Set"; + homepage = http://sourceforge.net/projects/libavc1394/; + license = [ "GPL" "LGPL" ]; + }; +} diff --git a/pkgs/development/libraries/libiec61883/default.nix b/pkgs/development/libraries/libiec61883/default.nix new file mode 100644 index 00000000000..3f167eb81de --- /dev/null +++ b/pkgs/development/libraries/libiec61883/default.nix @@ -0,0 +1,17 @@ +args: +args.stdenv.mkDerivation { + name = "libiec61883-1.1.0"; + + src = args.fetchurl { + url = http://www.linux1394.org/dl/libiec61883-1.1.0.tar.gz; + sha256 = "09f0ca7bp6lqlz6601gnyl04mfabv0azg49n1cmjyqpzh35cgxkq"; + }; + + buildInputs =(with args; [pkgconfig libraw1394]); + + meta = { + description = "TODO"; + homepage = http://www.linux1394.org/; + license = "LGPL"; + }; +} diff --git a/pkgs/misc/emulators/wine/default.nix b/pkgs/misc/emulators/wine/default.nix index fc9b97d5af9..8a13c61b557 100644 --- a/pkgs/misc/emulators/wine/default.nix +++ b/pkgs/misc/emulators/wine/default.nix @@ -7,11 +7,13 @@ assert stdenv.isLinux; let lib = import ../../../lib/default.nix; in stdenv.mkDerivation { - name = "wine-0.9.49"; + name = "wine-0.9.53"; src = fetchurl { - url = mirror://sourceforge/wine/wine-0.9.49.tar.bz2; - sha256 = "d41edd08cf7fd21d7350a633995107533a25f925c8859995d3a6fc131f54b3c1"; + #url = mirror://sourceforge/wine/wine-0.9.49.tar.bz2; + url = mirror://sourceforge/wine/wine-0.9.53.tar.bz2; + #sha256 = "d41edd08cf7fd21d7350a633995107533a25f925c8859995d3a6fc131f54b3c1"; + sha256 = "06317d78b7db39458656b6acc6b265ce97f358aefd7ded679263f397a89f1200"; }; buildInputs = [ diff --git a/pkgs/os-specific/linux/firmware/iwlwifi-3945-ucode/default.nix b/pkgs/os-specific/linux/firmware/iwlwifi-3945-ucode/default.nix new file mode 100644 index 00000000000..c17d29cafa4 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/iwlwifi-3945-ucode/default.nix @@ -0,0 +1,19 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "iwlwifi-3945-ucode-2.14.1.5"; + + src = fetchurl { + url = http://intellinuxwireless.org/iwlwifi/downloads/iwlwifi-3945-ucode-2.14.1.5.tgz; + sha256 = "06gy21qkd4kj6pf3nsz5z3xkgmcafzrm1krywd8lbb8i56i3jkra"; + }; + + buildPhase = "true"; + + installPhase = "ensureDir $out; chmod -x *; cp * $out"; + + meta = { + description = "Firmware for the Intel 3945ABG wireless card"; + homepage = http://intellinuxwireless.org/; + }; +} diff --git a/pkgs/os-specific/linux/iwlwifi/default.nix b/pkgs/os-specific/linux/iwlwifi/default.nix new file mode 100644 index 00000000000..8859f7346b5 --- /dev/null +++ b/pkgs/os-specific/linux/iwlwifi/default.nix @@ -0,0 +1,37 @@ +{stdenv, fetchurl, kernel}: + +stdenv.mkDerivation { + name = "iwlwifi-1.2.23"; + + src = fetchurl { + url = http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-1.2.23.tgz; + sha256 = "0a4szjgg5b2jj4ax85lakqa951ph6pw5wpwlrw3mnmvcda5ayiip"; + }; + + preBuild = '' + substituteInPlace scripts/generate_compatible \ + --replace '/usr/bin/env /bin/bash' $shell + substituteInPlace Makefile \ + --replace /sbin/depmod true + + # Urgh, we need the complete kernel sources for some header + # files. So unpack the original kernel source tarball and copy + # the configured include directory etc. on top of it. + kernelVersion=$(cd ${kernel}/lib/modules && ls) + kernelBuild=$(echo ${kernel}/lib/modules/$kernelVersion/source) + tar xvfj ${kernel.src} + kernelSource=$(echo $(pwd)/linux-*) + cp -prd $kernelBuild/* $kernelSource + + makeFlags=KSRC=$kernelSource + make $makeFlags || true + make $makeFlags + + installFlags=KMISC=$out/lib/modules/$kernelVersion/misc + ''; # */ + + meta = { + description = "Intel Wireless WiFi Link drivers for Linux"; + homepage = http://www.intellinuxwireless.org/; + }; +} diff --git a/pkgs/os-specific/linux/module-init-tools/aggregator.nix b/pkgs/os-specific/linux/module-init-tools/aggregator.nix index 09866f414e5..cfd49cc0813 100644 --- a/pkgs/os-specific/linux/module-init-tools/aggregator.nix +++ b/pkgs/os-specific/linux/module-init-tools/aggregator.nix @@ -2,32 +2,34 @@ args : with args; with builderDefs { addSbinPath = true; src = ""; - buildInputs = [lndir module_init_tools]; + buildInputs = [module_init_tools]; configureFlags = []; } null; /* null is a terminator for sumArgs */ let doCollect = FullDepEntry ('' -ensureDir $out/ +ensureDir $out/lib/modules cd $out/ for i in $moduleSources; do - lndir $i/ + cp -rfs $i/* . + chmod -R u+w . done rm -rf nix-support cd lib/modules/ rm */modules.* MODULE_DIR=$PWD/ depmod -a +cd $out/ '') [minInit addInputs defEnsureDir]; in stdenv.mkDerivation rec { - name = "module-aggregator"; + name = "kernel-modules"; inherit moduleSources; builder = writeScript (name + "-builder") (textClosure [doCollect doForceShare doPropagate]); meta = { description = " A directory to hold all the modules, including those - built separately from kernel. Earlier directories in + built separately from kernel. Later mentioned directories in moduleSources have higher priority. "; }; diff --git a/pkgs/os-specific/linux/ndiswrapper/default.nix b/pkgs/os-specific/linux/ndiswrapper/default.nix index 5138ae4f9b8..1eed97d7c51 100644 --- a/pkgs/os-specific/linux/ndiswrapper/default.nix +++ b/pkgs/os-specific/linux/ndiswrapper/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { "; # should we use unstable? - src = args.fetchurl { + src = fetchurl { url = http://kent.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.49.tar.gz; sha256 = "1b9nqkk7gv6gffzj9b8mjy5myxf2afwpyr2n5wbfsylf15dvvvjr"; }; diff --git a/pkgs/os-specific/linux/nvidia/builder.sh b/pkgs/os-specific/linux/nvidia/builder.sh index 4ef8c551d1c..00d70d6198f 100755 --- a/pkgs/os-specific/linux/nvidia/builder.sh +++ b/pkgs/os-specific/linux/nvidia/builder.sh @@ -20,7 +20,8 @@ myBuildPhase() { #patch -p1 < $xenPatch # Create the module. - sysSrc=$(echo $kernel/lib/modules/2.*/build/) + kernelVersion=$(cd $kernel/lib/modules && ls) + sysSrc=$(echo $kernel/lib/modules/$kernelVersion/build/) unset src # used by the nv makefile make SYSSRC=$sysSrc module cd ../../.. @@ -31,8 +32,8 @@ installPhase=myInstallPhase myInstallPhase() { # Install the kernel module. - ensureDir $out/lib - cp usr/src/nv/nvidia.ko $out/lib/ + ensureDir $out/lib/modules/$kernelVersion/misc + cp usr/src/nv/nvidia.ko $out/lib/modules/$kernelVersion/misc # Install libGL and friends. cp -prd usr/lib/* usr/X11R6/lib/libXv* $out/lib/ diff --git a/pkgs/os-specific/linux/wpa_supplicant/default.nix b/pkgs/os-specific/linux/wpa_supplicant/default.nix index cf529b04637..f58a360ac8d 100644 --- a/pkgs/os-specific/linux/wpa_supplicant/default.nix +++ b/pkgs/os-specific/linux/wpa_supplicant/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, openssl}: stdenv.mkDerivation { - name = "wpa_supplicant-0.5.8"; + name = "wpa_supplicant-0.5.9"; src = fetchurl { - url = http://hostap.epitest.fi/releases/wpa_supplicant-0.5.8.tar.gz; - sha256 = "1w37bm42gh1k0v3r8cdmyrvf5rk5fyz9bvsp10w2cvgrwgi5b5rg"; + url = http://hostap.epitest.fi/releases/wpa_supplicant-0.5.9.tar.gz; + sha256 = "1dylaiikp2jb13jbxdrl1h9b9p2lkjmzx06hpmkcpyq5c5g7p0xy"; }; preBuild = " diff --git a/pkgs/servers/samba/default.nix b/pkgs/servers/samba/default.nix index b46f6494c16..e94c2d1c554 100644 --- a/pkgs/servers/samba/default.nix +++ b/pkgs/servers/samba/default.nix @@ -9,6 +9,9 @@ stdenv.mkDerivation { }; buildInputs = [readline pam openldap]; - configureFlags = "--with-pam --with-smbmount"; + configureFlags = [" --with-pam " " --with-smbmount " + " --datadir=\$out/share " " --with-acl-support " + " --with-aio-support "]; postUnpack = "sourceRoot=\$sourceRoot/source"; + postInstall = "rm -rf \$out/var ; ln -s /var/samba $out/var "; } diff --git a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix index 411906e45ba..cffa01b9b95 100644 --- a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix +++ b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix @@ -25,15 +25,15 @@ let build = FullDepEntry (" echo ' createuser -A -D \$1 dropdb relfs_\$1 ; - rm -rf /tmp/relfs-\$1-tmp; - mkdir /tmp/relfs-\$1-tmp; - USER=\$1 relfs -f -s /tmp/relfs-raskin-tmp & - sleep 1 && + rm -rf /tmp/relfs-\$1-tmp; + mkdir /tmp/relfs-\$1-tmp; + USER=\$1 relfs -f -s /tmp/relfs-raskin-tmp & + sleep 1 && kill -15 \${!}; - rm -rf /tmp/relfs-\$1-tmp ; - psql -d relfs_\$1 <<< \"ALTER DATABASE relfs_raskin OWNER TO raskin; - ALTER TABLE obj OWNER TO \$1; - ALTER TABLE obj_mimetype OWNER TO \$1; + rm -rf /tmp/relfs-\$1-tmp ; + psql -d relfs_\$1 <<< \"ALTER DATABASE relfs_raskin OWNER TO raskin; + ALTER TABLE obj OWNER TO \$1; + ALTER TABLE obj_mimetype OWNER TO \$1; ALTER TABLE membership OWNER TO \$1;\"' > \$out/bin/relfs_grant; chmod a+x \$out/bin/relfs_grant; ") [minInit doUnpack addInputs]; diff --git a/pkgs/tools/security/chkrootkit/default.nix b/pkgs/tools/security/chkrootkit/default.nix new file mode 100644 index 00000000000..e7545ac8cd6 --- /dev/null +++ b/pkgs/tools/security/chkrootkit/default.nix @@ -0,0 +1,16 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "chkrootkit-0.48"; + + src = fetchurl { + url = ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz; + sha256 = "1yzid6bw092nf8k83y1119kc4ns7r0l3zsfah5xal8kh19ad7cxl"; + }; + + installPhase = " + ensureDir $out/sbin + cp check_wtmpx chkdirs chklastlog chkproc chkrootkit chkutmp chkwtmp ifpromisc strings-static $out/sbin + "; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 10bf6ee2323..4e8de1db2fa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -295,11 +295,11 @@ rec { writeText = name: text: runCommand name {inherit text;} "echo -n \"$text\" > $out"; writeScript = name: text: runCommand name {inherit text;} "echo -n \"$text\" > $out; chmod +x $out"; - - stdenvNewSetupScript = stdenv; writeScriptBin = name: text: runCommand name {inherit text;} "mkdir -p \$out/bin; echo -n \"\$text\" > \$out/bin/\$name ; chmod +x \$out/bin/\$name"; + stdenvNewSetupScript = stdenv; + substituteAll = import ../build-support/substitute/substitute-all.nix { inherit stdenv; }; @@ -358,6 +358,10 @@ rec { inherit fetchurl stdenv; }; + chkrootkit = import ../tools/security/chkrootkit { + inherit fetchurl stdenv; + }; + cksfv = import ../tools/networking/cksfv { inherit fetchurl stdenv; }; @@ -1990,6 +1994,10 @@ rec { inherit (xlibs) libXp libXau; }; + libavc1394 = import ../development/libraries/libavc1394 { + inherit fetchurl stdenv pkgconfig libraw1394; + }; + libcaca = import ../development/libraries/libcaca { inherit fetchurl stdenv ncurses; }; @@ -2089,6 +2097,10 @@ rec { inherit fetchurl stdenv; }; + libiec61883 = import ../development/libraries/libiec61883 { + inherit fetchurl stdenv pkgconfig libraw1394; + }; + libjpeg = import ../development/libraries/libjpeg { inherit fetchurl stdenv libtool; }; @@ -3091,6 +3103,14 @@ rec { inherit fetchurl stdenv; }; + iwlwifi = import ../os-specific/linux/iwlwifi { + inherit fetchurl stdenv kernel; + }; + + iwlwifi3945ucode = import ../os-specific/linux/firmware/iwlwifi-3945-ucode { + inherit fetchurl stdenv; + }; + kbd = import ../os-specific/linux/kbd { inherit fetchurl stdenv bison flex; }; @@ -3139,6 +3159,16 @@ rec { configFile = getConfig ["kernel" "configFile"] null; }; + kqemuFun = lib.sumArgs (selectVersion ../os-specific/linux/kqemu) { + inherit fetchurl stdenv builderDefs; + }; + + # No finished expression is provided - pick your own kernel + kqemuFunCurrent = theKernel: (kqemuFun { + version = "1.3.0pre11"; + kernel = theKernel; + } null); + libselinux = import ../os-specific/linux/libselinux { inherit fetchurl stdenv libsepol; }; @@ -3147,7 +3177,6 @@ rec { inherit fetchurl stdenv; }; - libsexy = import ../development/libraries/libsexy { inherit stdenv fetchurl pkgconfig libxml2; inherit (gtkLibs) glib gtk pango; @@ -3239,9 +3268,7 @@ rec { module_aggregation = moduleSources: import ../os-specific/linux/module-init-tools/aggregator.nix { - inherit fetchurl stdenv module_init_tools moduleSources - builderDefs; - inherit (xorg) lndir; + inherit fetchurl stdenv module_init_tools moduleSources builderDefs; }; modutils = import ../os-specific/linux/modutils { @@ -3979,6 +4006,18 @@ rec { inherit stdenv fetchurl; }; + kino = import ../applications/video/kino { + inherit fetchurl pkgconfig libxml2 perl perlXMLParser stdenv + libdv libraw1394 libavc1394 libiec61883 x11 gettext cairo; /* libavformat */ + inherit libsamplerate ffmpeg; + inherit (gnome) libglade gtk glib; + inherit (xlibs) libXv libX11; + inherit (gtkLibs) pango; + + # # optional + # inherit ffmpeg2theora sox, vorbis-tools lame mjpegtools dvdauthor 'Q'dvdauthor growisofs mencoder; + }; + kuickshow = import ../applications/graphics/kuickshow { inherit fetchurl stdenv kdelibs arts libpng libjpeg libtiff libungif imlib expat perl; inherit (xlibs) libX11 libXext libSM; From 9e0a64295596252ce20d9bae1c19e19f668639ca Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 16 Jan 2008 00:06:31 +0000 Subject: [PATCH 115/320] freeglut: gcc-4.2 related patch svn path=/nixpkgs/branches/stdenv-updates/; revision=10159 --- pkgs/development/libraries/freeglut/default.nix | 1 + .../libraries/freeglut/freeglut-gcc-4.2.patch | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch diff --git a/pkgs/development/libraries/freeglut/default.nix b/pkgs/development/libraries/freeglut/default.nix index 704dc0005fb..19720b9d677 100644 --- a/pkgs/development/libraries/freeglut/default.nix +++ b/pkgs/development/libraries/freeglut/default.nix @@ -9,4 +9,5 @@ stdenv.mkDerivation { }; buildInputs = [x11 mesa]; + patches = ./freeglut-gcc-4.2.patch; } diff --git a/pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch b/pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch new file mode 100644 index 00000000000..1642affba91 --- /dev/null +++ b/pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch @@ -0,0 +1,13 @@ +diff -urN freeglut-2.4.0.old/src/freeglut_joystick.c freeglut-2.4.0/src/freeglut_joystick.c +--- freeglut-2.4.0.old/src/freeglut_joystick.c 2007-06-16 03:51:41.000000000 +0000 ++++ freeglut-2.4.0/src/freeglut_joystick.c 2007-06-16 03:54:27.000000000 +0000 +@@ -1682,9 +1682,6 @@ + + fgInitialiseJoysticks (); + +- if ( !fgJoystick ) +- return 0; +- + if ( !fgState.JoysticksInitialised ) + return 0; + From 0a1ad1080cc41a2ce9ab2f445e473e0682e156f7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 16 Jan 2008 00:06:38 +0000 Subject: [PATCH 116/320] Added JasPer JPEG 2000 library svn path=/nixpkgs/branches/stdenv-updates/; revision=10160 --- pkgs/development/libraries/jasper/default.nix | 18 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/development/libraries/jasper/default.nix diff --git a/pkgs/development/libraries/jasper/default.nix b/pkgs/development/libraries/jasper/default.nix new file mode 100644 index 00000000000..192e22add6e --- /dev/null +++ b/pkgs/development/libraries/jasper/default.nix @@ -0,0 +1,18 @@ +args: with args; +stdenv.mkDerivation rec { + name = "jasper-1.900.1"; + + src = fetchurl { + url = "http://www.ece.uvic.ca/~mdadams/jasper/software/${name}.zip"; + sha256 = "154l7zk7yh3v8l2l6zm5s2alvd2fzkp6c9i18iajfbna5af5m43b"; + }; + + buildInputs = [ unzip libjpeg xproto libX11 libICE freeglut mesa libXmu + libXi libXext libXt ]; + configureFlags = "--enable-shared --disable-static --with-x"; + + meta = { + homepage = http://www.ece.uvic.ca/~mdadams/jasper/; + description = "JasPer JPEG2000 Library"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4e8de1db2fa..30866d49315 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1980,6 +1980,11 @@ rec { intltool = intltoolFun {version = "0.36.2";} null; + jasper = import ../development/libraries/jasper { + inherit fetchurl stdenv unzip libjpeg freeglut mesa; + inherit (xlibs) xproto libX11 libICE libXmu libXi libXext libXt; + }; + lablgtk = import ../development/libraries/lablgtk { inherit fetchurl stdenv ocaml pkgconfig; inherit (gtkLibs) gtk; From c7b5286d83a6d2f8e7bded385aaee16d8dbc31ae Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 16 Jan 2008 00:06:43 +0000 Subject: [PATCH 117/320] Added JasPer support to kde4libs svn path=/nixpkgs/branches/stdenv-updates/; revision=10161 --- pkgs/desktops/kde-4/libs/default.nix | 5 +++-- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix index b714977bd73..4c0574c9c74 100644 --- a/pkgs/desktops/kde-4/libs/default.nix +++ b/pkgs/desktops/kde-4/libs/default.nix @@ -9,14 +9,15 @@ stdenv.mkDerivation rec { }; propagatedBuildInputs = [ - cmake inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto + inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat libtool freetype bzip2 shared_mime_info alsaLib libungif cups - gettext enchant openexr aspell stdenv.gcc.libc + gettext enchant openexr aspell stdenv.gcc.libc jasper ] ++ kdesupport.all; + buildInputs = [ cmake ]; patchPhase = "cp ${findIlmBase} ../cmake/modules/FindIlmBase.cmake; cp $findOpenEXR ../cmake/modules/FindOpenEXR.cmake; sed -e 's@Soprano/DummyModel@Soprano/Util/DummyModel@' -i ../nepomuk/core/resourcemanager.cpp;"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 30866d49315..2f6440f89c9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4681,7 +4681,7 @@ rec { shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline saneBackends chmlib python libzip gmp sqlite libidn runCommand lib - openbabel ocaml facile stdenv poppler_data; + openbabel ocaml facile stdenv poppler_data jasper; cdparanoia = cdparanoiaIII; inherit (xlibs) inputproto kbproto scrnsaverproto xextproto xf86miscproto From 9b6e1c8c08fb90a5ed002e583d80dda11a9d0342 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 16 Jan 2008 00:07:02 +0000 Subject: [PATCH 118/320] Heimdal Kerberos added svn path=/nixpkgs/branches/stdenv-updates/; revision=10162 --- pkgs/desktops/kde-4/libs/default.nix | 2 +- pkgs/development/libraries/kerberos/heimdal.nix | 12 ++++++++++++ pkgs/top-level/all-packages.nix | 6 +++++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/kerberos/heimdal.nix diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix index 4c0574c9c74..83224a9a13e 100644 --- a/pkgs/desktops/kde-4/libs/default.nix +++ b/pkgs/desktops/kde-4/libs/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat libtool freetype bzip2 shared_mime_info alsaLib libungif cups - gettext enchant openexr aspell stdenv.gcc.libc jasper + gettext enchant openexr aspell stdenv.gcc.libc jasper heimdal ] ++ kdesupport.all; buildInputs = [ cmake ]; patchPhase = "cp ${findIlmBase} ../cmake/modules/FindIlmBase.cmake; diff --git a/pkgs/development/libraries/kerberos/heimdal.nix b/pkgs/development/libraries/kerberos/heimdal.nix new file mode 100644 index 00000000000..4564021d149 --- /dev/null +++ b/pkgs/development/libraries/kerberos/heimdal.nix @@ -0,0 +1,12 @@ +args: with args; +stdenv.mkDerivation rec { + name = "heimdal-1.0.2"; + + src = fetchurl { + url = "http://ftp.pdc.kth.se/pub/heimdal/src/${name}.tar.gz"; + sha256 = "1h4x41lpv2abpv5l3yjd58pfzs0kkp5sbnih9iykhwd6sii1iig5"; + }; + + configureFlags = "--enable-shared --disable-static --with-openldap=${openldap}"; + buildInputs = [ readline db4 openssl openldap cyrus_sasl ]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2f6440f89c9..e1a3fa240c2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1948,6 +1948,10 @@ rec { inherit aspell; }; + heimdal = import ../development/libraries/kerberos/heimdal.nix { + inherit fetchurl stdenv readline db4 openssl openldap cyrus_sasl; + }; + hsqldb = import ../development/libraries/java/hsqldb { inherit stdenv fetchurl unzip; }; @@ -4677,7 +4681,7 @@ rec { inherit fetchurl fetchsvn zlib perl openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt libtool libusb expat freetype bzip2 cmake cluceneCore libgcrypt gnupg - cppunit cyrus_sasl openldap enchant exiv2 samba nss log4cxx aspell + cppunit cyrus_sasl openldap enchant exiv2 samba nss log4cxx aspell heimdal shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline saneBackends chmlib python libzip gmp sqlite libidn runCommand lib From fa4e1290dc1f1644cfb278af70ea1116b4086f8f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 16 Jan 2008 00:07:21 +0000 Subject: [PATCH 119/320] gamin added svn path=/nixpkgs/branches/stdenv-updates/; revision=10163 --- pkgs/desktops/kde-4/libs/default.nix | 2 +- pkgs/development/libraries/gamin/default.nix | 12 ++++++++++++ pkgs/top-level/all-packages.nix | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/gamin/default.nix diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix index 83224a9a13e..aaece56a506 100644 --- a/pkgs/desktops/kde-4/libs/default.nix +++ b/pkgs/desktops/kde-4/libs/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat libtool freetype bzip2 shared_mime_info alsaLib libungif cups - gettext enchant openexr aspell stdenv.gcc.libc jasper heimdal + gettext enchant openexr aspell stdenv.gcc.libc jasper heimdal fam ] ++ kdesupport.all; buildInputs = [ cmake ]; patchPhase = "cp ${findIlmBase} ../cmake/modules/FindIlmBase.cmake; diff --git a/pkgs/development/libraries/gamin/default.nix b/pkgs/development/libraries/gamin/default.nix new file mode 100644 index 00000000000..a6ae0bacb22 --- /dev/null +++ b/pkgs/development/libraries/gamin/default.nix @@ -0,0 +1,12 @@ +args: with args; +stdenv.mkDerivation rec { + name = "gamin-0.1.9"; + + src = fetchurl { + url = "http://www.gnome.org/~veillard/gamin/sources/${name}.tar.gz"; + sha256 = "0fgjfyr0nlkpdxj94a4qfm82wypljdyv1b6l56v7i9jdx0hcdqhr"; + }; + + buildInputs = [python pkgconfig glib]; + configureFlags = "--enable-shared --disable-static --disable-debug"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e1a3fa240c2..9ced9bfd493 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1805,6 +1805,11 @@ rec { inherit fetchurl stdenv; }; + gamin = import ../development/libraries/gamin { + inherit fetchurl stdenv python pkgconfig; + inherit (gtkLibs) glib; + }; + geos = import ../development/libraries/geos { lib = lib_unstable; inherit fetchurl fetchsvn stdenv mkDerivationByConfiguration autoconf automake libtool swig which; @@ -4687,6 +4692,7 @@ rec { saneBackends chmlib python libzip gmp sqlite libidn runCommand lib openbabel ocaml facile stdenv poppler_data jasper; cdparanoia = cdparanoiaIII; + fam = gamin; inherit (xlibs) inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite From f96a98c9d8cfc3093e0ea406ed33eeb3be86c893 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 12:57:34 +0000 Subject: [PATCH 120/320] xine-lib: 1.1.9.1, more features. svn path=/nixpkgs/branches/stdenv-updates/; revision=10187 --- .../libraries/xine-lib/default.nix | 37 +++++-------------- pkgs/top-level/all-packages.nix | 3 +- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/pkgs/development/libraries/xine-lib/default.nix b/pkgs/development/libraries/xine-lib/default.nix index 0af3732cbae..ba6880d525a 100644 --- a/pkgs/development/libraries/xine-lib/default.nix +++ b/pkgs/development/libraries/xine-lib/default.nix @@ -1,31 +1,14 @@ -{ xvideoSupport ? true -, xineramaSupport ? true -, encryptedDVDSupport ? true -, alsaSupport ? true -, stdenv, fetchurl, zlib, x11, pkgconfig -, libXv ? null, libXinerama ? null, libdvdcss ? null, alsaLib ? null -}: +args: with args; -assert xvideoSupport -> libXv != null; -assert xineramaSupport -> libXinerama != null; -assert encryptedDVDSupport -> libdvdcss != null; -assert alsaSupport -> alsaLib != null; - -(stdenv.mkDerivation { - name = "xine-lib-1.1.8"; - builder = ./builder.sh; +(stdenv.mkDerivation rec { + name = "xine-lib-1.1.9.1"; src = fetchurl { - url = mirror://sourceforge/xine/xine-lib-1.1.8.tar.bz2; - sha256 = "03iwhgsf9kj0x5b4fgv7lzc1vj3frk4afh2idgrqskvixjyi37vc"; + url = "mirror://sourceforge/xine/${name}.tar.bz2"; + sha256 = "1rz4k2a9pny2ksqb5diw1ci8ijihpcm0mi8qxp5p7nasgzgqcj82"; }; - buildInputs = [ - x11 pkgconfig - (if xvideoSupport then libXv else null) - (if xineramaSupport then libXinerama else null) - (if alsaSupport then alsaLib else null) - ]; - libXv = if xvideoSupport then libXv else null; - libdvdcss = if encryptedDVDSupport then libdvdcss else null; + buildInputs = [ x11 pkgconfig libXv libXinerama alsaLib mesa aalib SDL + libvorbis libtheora speex ]; + configureFlags = "--with-xv-path=${libXv}/lib"; + NIX_LDFLAGS = "-rpath ${libdvdcss}/lib -L${libdvdcss}/lib -ldvdcss"; propagatedBuildInputs = [zlib]; - patches = [ ./xine-lib-linux-headers-2.6.23.patch ]; -}) // {inherit xineramaSupport libXinerama;} +}) // { xineramaSupport = true; inherit libXinerama; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9ced9bfd493..837f15b964d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2468,7 +2468,8 @@ rec { }; xineLib = import ../development/libraries/xine-lib { - inherit fetchurl stdenv zlib x11 libdvdcss alsaLib pkgconfig; + inherit fetchurl stdenv zlib x11 libdvdcss alsaLib pkgconfig mesa aalib SDL + libvorbis libtheora speex; inherit (xlibs) libXv libXinerama; }; From fa5891aa62c3ca6e8343ada84e3f61588317d8d8 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 12:57:56 +0000 Subject: [PATCH 121/320] Propagating inputs of heimdal svn path=/nixpkgs/branches/stdenv-updates/; revision=10188 --- pkgs/development/libraries/kerberos/heimdal.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/kerberos/heimdal.nix b/pkgs/development/libraries/kerberos/heimdal.nix index 4564021d149..12cc50e3505 100644 --- a/pkgs/development/libraries/kerberos/heimdal.nix +++ b/pkgs/development/libraries/kerberos/heimdal.nix @@ -8,5 +8,5 @@ stdenv.mkDerivation rec { }; configureFlags = "--enable-shared --disable-static --with-openldap=${openldap}"; - buildInputs = [ readline db4 openssl openldap cyrus_sasl ]; + propagatedBuildInputs = [ readline db4 openssl openldap cyrus_sasl ]; } From 1ba2194228beeac9ed0b672d6e29d2c213d30046 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 12:58:07 +0000 Subject: [PATCH 122/320] pth added svn path=/nixpkgs/branches/stdenv-updates/; revision=10189 --- pkgs/development/libraries/pth/default.nix | 14 ++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/development/libraries/pth/default.nix diff --git a/pkgs/development/libraries/pth/default.nix b/pkgs/development/libraries/pth/default.nix new file mode 100644 index 00000000000..631a7622406 --- /dev/null +++ b/pkgs/development/libraries/pth/default.nix @@ -0,0 +1,14 @@ +args: with args; +stdenv.mkDerivation rec { + name = "pth-2.0.7"; + + src = fetchurl { + url = "mirror://gnu/pth/${name}.tar.gz"; + sha256 = "0ckjqw5kz5m30srqi87idj7xhpw6bpki43mj07bazjm2qmh3cdbj"; + }; + + meta = { + description = "The GNU Portable Threads"; + homepage = http://www.gnu.org/software/pth; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 837f15b964d..6334456e21a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2354,6 +2354,10 @@ rec { inherit fetchurl stdenv; }; + pth = import ../development/libraries/pth { + inherit fetchurl stdenv; + }; + qt3 = import ../development/libraries/qt-3 { inherit fetchurl stdenv x11 zlib libjpeg libpng which mysql mesa; inherit (xlibs) xextproto libXft libXrender libXrandr randrproto From 66cba1e312acbfdd9be0641f7cd85a3f1b949cab Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 12:58:31 +0000 Subject: [PATCH 123/320] libassuan added svn path=/nixpkgs/branches/stdenv-updates/; revision=10190 --- pkgs/development/libraries/libassuan/default.nix | 16 ++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 20 insertions(+) create mode 100644 pkgs/development/libraries/libassuan/default.nix diff --git a/pkgs/development/libraries/libassuan/default.nix b/pkgs/development/libraries/libassuan/default.nix new file mode 100644 index 00000000000..ef0df518452 --- /dev/null +++ b/pkgs/development/libraries/libassuan/default.nix @@ -0,0 +1,16 @@ +args: with args; +stdenv.mkDerivation rec { + name = "libassuan-1.0.4"; + + src = fetchurl { + url = "ftp://ftp.gnupg.org/gcrypt/libassuan/${name}.tar.bz2"; + sha256 = "1milkb5128nkgvfvfc9yi3qq8d1bvci7b3qmzfibmyh7qga6pwpw"; + }; + + propagatedBuildInputs = [pth]; + + meta = { + description = "Libassuan is the IPC library used by some GnuPG related software"; + homepage = http://www.gnupg.org; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6334456e21a..39662f80d04 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2008,6 +2008,10 @@ rec { inherit (xlibs) libXp libXau; }; + libassuan = import ../development/libraries/libassuan { + inherit fetchurl stdenv pth; + }; + libavc1394 = import ../development/libraries/libavc1394 { inherit fetchurl stdenv pkgconfig libraw1394; }; From 8e119adbb9efbf00bba92292742aac05388ee0d6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 12:59:06 +0000 Subject: [PATCH 124/320] Added libksba svn path=/nixpkgs/branches/stdenv-updates/; revision=10191 --- .../development/libraries/libksba/default.nix | 19 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/development/libraries/libksba/default.nix diff --git a/pkgs/development/libraries/libksba/default.nix b/pkgs/development/libraries/libksba/default.nix new file mode 100644 index 00000000000..573064f2889 --- /dev/null +++ b/pkgs/development/libraries/libksba/default.nix @@ -0,0 +1,19 @@ +args: with args; +stdenv.mkDerivation rec { + name = "libksba-1.0.2"; + + src = fetchurl { + url = "ftp://ftp.gnupg.org/gcrypt/libksba/${name}.tar.bz2"; + sha256 = "1jkjh1daaykkrfq0s4vv8ddf0w8agdvspg9qm0ghjidlrfnsfiwh"; + }; + + propagatedBuildInputs = [libgpgerror]; + + configureFlags = "--enable-shared --disable-static"; + + meta = { + homepage = http://www.gnupg.org; + description = "Libksba is a CMS and X.509 access library under + development"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 39662f80d04..2f9262c5ba0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2128,6 +2128,10 @@ rec { static = true; })); + libksba = import ../development/libraries/libksba { + inherit fetchurl stdenv libgpgerror; + }; + libmad = import ../development/libraries/libmad { inherit fetchurl stdenv; }; From 60f2d474003853732f3b78db52f0cff59e6dd88e Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 12:59:41 +0000 Subject: [PATCH 125/320] Some renaming for future variants svn path=/nixpkgs/branches/stdenv-updates/; revision=10192 --- pkgs/top-level/all-packages.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2f9262c5ba0..edecaca837e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1805,6 +1805,8 @@ rec { inherit fetchurl stdenv; }; + fam = gamin; + gamin = import ../development/libraries/gamin { inherit fetchurl stdenv python pkgconfig; inherit (gtkLibs) glib; @@ -1953,6 +1955,9 @@ rec { inherit aspell; }; + # TODO : Add MIT Kerberos and let admin choose. + kerberos = heimdal; + heimdal = import ../development/libraries/kerberos/heimdal.nix { inherit fetchurl stdenv readline db4 openssl openldap cyrus_sasl; }; @@ -4699,13 +4704,12 @@ rec { inherit fetchurl fetchsvn zlib perl openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt libtool libusb expat freetype bzip2 cmake cluceneCore libgcrypt gnupg - cppunit cyrus_sasl openldap enchant exiv2 samba nss log4cxx aspell heimdal + cppunit cyrus_sasl openldap enchant exiv2 samba nss log4cxx aspell kerberos shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline saneBackends chmlib python libzip gmp sqlite libidn runCommand lib - openbabel ocaml facile stdenv poppler_data jasper; + openbabel ocaml facile stdenv poppler_data jasper fam; cdparanoia = cdparanoiaIII; - fam = gamin; inherit (xlibs) inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite From 4eeee85ad161ed769b8fc89c2ab1ca58ba5f0934 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:00:21 +0000 Subject: [PATCH 126/320] iniparser library added svn path=/nixpkgs/branches/stdenv-updates/; revision=10193 --- .../libraries/iniparser/default.nix | 34 +++++++++++++++++++ .../libraries/iniparser/no-usr.patch | 14 ++++++++ pkgs/top-level/all-packages.nix | 4 +++ 3 files changed, 52 insertions(+) create mode 100644 pkgs/development/libraries/iniparser/default.nix create mode 100644 pkgs/development/libraries/iniparser/no-usr.patch diff --git a/pkgs/development/libraries/iniparser/default.nix b/pkgs/development/libraries/iniparser/default.nix new file mode 100644 index 00000000000..46fe5b6ef03 --- /dev/null +++ b/pkgs/development/libraries/iniparser/default.nix @@ -0,0 +1,34 @@ +args: with args; +stdenv.mkDerivation rec{ + name = "iniparser-3.0b"; + + src = fetchurl { + url = "${meta.homepage}/iniparser3.0b.tar.gz"; + sha256 = "09klyddnqlpbgkv4cmh6ww9q5pv6nf1vfmzw4z256p51rnnlqqwa"; + }; + + patches = ./no-usr.patch; + + buildFlags = "libiniparser.so"; + + installPhase = '' + ensureDir $out/lib + cp libiniparser.so.0 $out/lib + ln -s libiniparser.so.0 $out/lib/libiniparser.so + + ensureDir $out/include + cp src/*.h $out/include + + ensureDir $out/share/doc/${name} + for i in AUTHORS INSTALL LICENSE README; do + bzip2 -c -9 $i > $out/share/doc/${name}/$i.bz2; + done; + cp -r html $out/share/doc/${name} + ''; + + meta = { + homepage = http://ndevilla.free.fr/iniparser; + description = "Free standalone ini file parsing library"; + license = "MIT"; + }; +} diff --git a/pkgs/development/libraries/iniparser/no-usr.patch b/pkgs/development/libraries/iniparser/no-usr.patch new file mode 100644 index 00000000000..28be099b8ee --- /dev/null +++ b/pkgs/development/libraries/iniparser/no-usr.patch @@ -0,0 +1,14 @@ +diff -urN iniparser3.0b.orig/Makefile iniparser3.0b/Makefile +--- iniparser3.0b.orig/Makefile 2008-01-16 19:56:08.000000000 +0100 ++++ iniparser3.0b/Makefile 2008-01-16 19:56:49.000000000 +0100 +@@ -11,8 +11,8 @@ + ARFLAGS = rcv + + SHLD = ${CC} ${CFLAGS} +-LDSHFLAGS = -shared -Wl,-Bsymbolic -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib +-LDFLAGS = -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib ++LDSHFLAGS = -shared ++LDFLAGS = + + # Set RANLIB to ranlib on systems that require it (Sun OS < 4, Mac OSX) + # RANLIB = ranlib diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index edecaca837e..e9cc18c9034 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1987,6 +1987,10 @@ rec { inherit fetchurl stdenv x11 libjpeg libtiff libungif libpng bzip2; }; + iniparser = import ../development/libraries/iniparser { + inherit fetchurl stdenv; + }; + intltoolFun = lib.sumArgs (selectVersion ../development/tools/misc/intltool) { inherit fetchurl stdenv lib builderDefs stringsWithDeps perl perlXMLParser; From 8db01883b83b917d6276d11c8e564e4dee526930 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:00:51 +0000 Subject: [PATCH 127/320] libunwind added svn path=/nixpkgs/branches/stdenv-updates/; revision=10194 --- pkgs/development/libraries/libunwind/default.nix | 14 ++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/development/libraries/libunwind/default.nix diff --git a/pkgs/development/libraries/libunwind/default.nix b/pkgs/development/libraries/libunwind/default.nix new file mode 100644 index 00000000000..52ed30c0ae9 --- /dev/null +++ b/pkgs/development/libraries/libunwind/default.nix @@ -0,0 +1,14 @@ +args: with args; +stdenv.mkDerivation rec { + name = "libunwind-0.98.6"; + src = fetchurl { + url = "http://download.savannah.nongnu.org/releases/libunwind/${name}.tar.gz"; + sha256 = "1qfxqkyx4r5dmwajyhvsyyl8zwxs6n2rcg7a61fgfdfp0gxvpzgx"; + }; + configureFlags = "--enable-shared --disable-static"; + meta = { + homepage = http://www.nongnu.org/libunwind; + description = "The primary goal of this project is to define a portable + and efficient API to determine the call-chain of a program"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e9cc18c9034..8878eb6c3f6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2209,6 +2209,10 @@ rec { inherit fetchurl stdenv; }; + libunwind = import ../development/libraries/libunwind { + inherit fetchurl stdenv; + }; + libvorbis = import ../development/libraries/libvorbis { inherit fetchurl stdenv libogg; }; From 16d153bea5dc3a7c182aeed6b76263f9a60204a6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:01:19 +0000 Subject: [PATCH 128/320] gnupg2 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10195 --- pkgs/tools/security/gnupg2/default.nix | 16 ++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 21 insertions(+) create mode 100644 pkgs/tools/security/gnupg2/default.nix diff --git a/pkgs/tools/security/gnupg2/default.nix b/pkgs/tools/security/gnupg2/default.nix new file mode 100644 index 00000000000..f6e22bec51d --- /dev/null +++ b/pkgs/tools/security/gnupg2/default.nix @@ -0,0 +1,16 @@ +args: with args; +stdenv.mkDerivation { + name = "gnupg-2.0.8"; + src = fetchurl { + url = ftp://ftp.cert.dfn.de/pub/tools/crypt/gcrypt/gnupg/gnupg-2.0.8.tar.bz2; + sha256 = "04v9s92xph1hrhac49yyrgzdwjqshs2zawvjbi3jc2klwjpi1wqn"; + }; + buildInputs = [ readline openldap bzip2 zlib libgpgerror pth libgcrypt + libassuan libksba libusb curl ]; + + meta = { + description = "A free implementation of the OpenPGP standard for encrypting + and signing data, v2"; + homepage = http://www.gnupg.org/; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8878eb6c3f6..c433abf9ef1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -487,6 +487,11 @@ rec { ideaSupport = true; # enable for IDEA crypto support }; + gnupg2 = import ../tools/security/gnupg2 { + inherit fetchurl stdenv readline openldap bzip2 zlib libgpgerror pth + libgcrypt libassuan libksba libusb curl; + }; + gnuplot = import ../tools/graphics/gnuplot { inherit fetchurl stdenv zlib gd texinfo; }; From 54e429d6e1d6ae1caba2cb0afd588b6c0b007086 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:01:31 +0000 Subject: [PATCH 129/320] More dependencies for gpgme svn path=/nixpkgs/branches/stdenv-updates/; revision=10196 --- pkgs/development/libraries/gpgme/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/gpgme/default.nix b/pkgs/development/libraries/gpgme/default.nix index 68bbbc40904..64f1a746b03 100644 --- a/pkgs/development/libraries/gpgme/default.nix +++ b/pkgs/development/libraries/gpgme/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, libgpgerror, gnupg}: +args: with args; stdenv.mkDerivation { name = "gpgme-1.1.4"; @@ -6,5 +6,5 @@ stdenv.mkDerivation { url = ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-1.1.4.tar.bz2; sha256 = "0ncrv7p33rjq1avkxpp9x0gz6wna9y3b3dmw6nv366n5mgvxmpg8"; }; - buildInputs = [libgpgerror gnupg]; + buildInputs = [libgpgerror gnupg gnupg2 pkgconfig glib pth]; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c433abf9ef1..c4bc196155a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1879,7 +1879,8 @@ rec { }; gpgme = import ../development/libraries/gpgme { - inherit fetchurl stdenv libgpgerror gnupg; + inherit fetchurl stdenv libgpgerror pkgconfig pth gnupg gnupg2; + inherit (gtkLibs) glib; }; # gnu scientific library From 452c001945cb443120e4cdc3db680e9c909bac5a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:01:45 +0000 Subject: [PATCH 130/320] Samba updated svn path=/nixpkgs/branches/stdenv-updates/; revision=10197 --- pkgs/servers/samba/default.nix | 17 ++++++++--------- pkgs/top-level/all-packages.nix | 3 ++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/servers/samba/default.nix b/pkgs/servers/samba/default.nix index e94c2d1c554..db001c64b9d 100644 --- a/pkgs/servers/samba/default.nix +++ b/pkgs/servers/samba/default.nix @@ -1,17 +1,16 @@ args: with args; -stdenv.mkDerivation { - name = "samba-3.0.26a"; +stdenv.mkDerivation rec { + name = "samba-3.0.28"; src = fetchurl { - url = http://us1.samba.org/samba/ftp/stable/samba-3.0.26a.tar.gz; - sha256 = "41e11f69288b2291f12f8db093e2c55dc1360555d4542c83c0758c4c7a3d4d37"; + url = "http://us1.samba.org/samba/ftp/stable/${name}.tar.gz"; + sha256 = "13nr4mvh6vxgl7nb94qnqx3njcyd10cf4ji18srlkizpp49r5byw"; }; - buildInputs = [readline pam openldap]; - configureFlags = [" --with-pam " " --with-smbmount " - " --datadir=\$out/share " " --with-acl-support " - " --with-aio-support "]; + buildInputs = [readline pam openldap kerberos popt iniparser libunwind fam]; + configureFlags = ''--with-pam --with-smbmount --datadir=$out/share + --with-aio-support --with-libiconv=${stdenv.gcc.libc}''; postUnpack = "sourceRoot=\$sourceRoot/source"; - postInstall = "rm -rf \$out/var ; ln -s /var/samba $out/var "; + postInstall = ''rm -rf $out/var ; ln -s /var/samba $out/var ''; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c4bc196155a..b2b88b917af 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2980,7 +2980,8 @@ rec { }; samba = import ../servers/samba { - inherit stdenv fetchurl readline openldap pam; + inherit stdenv fetchurl readline openldap pam kerberos popt iniparser + libunwind acl fam; }; squid = import ../servers/squid { From 4fa42beccbb782083ee971230ee47c6e52015016 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:02:11 +0000 Subject: [PATCH 131/320] Typo fix in renaming... svn path=/nixpkgs/branches/stdenv-updates/; revision=10198 --- pkgs/desktops/kde-4/libs/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix index aaece56a506..1628e5d185a 100644 --- a/pkgs/desktops/kde-4/libs/default.nix +++ b/pkgs/desktops/kde-4/libs/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat libtool freetype bzip2 shared_mime_info alsaLib libungif cups - gettext enchant openexr aspell stdenv.gcc.libc jasper heimdal fam + gettext enchant openexr aspell stdenv.gcc.libc jasper kerberos fam ] ++ kdesupport.all; buildInputs = [ cmake ]; patchPhase = "cp ${findIlmBase} ../cmake/modules/FindIlmBase.cmake; From ed035b32993fdcb5de5b43738d8ed879248897bb Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:02:41 +0000 Subject: [PATCH 132/320] pimlibs are compilable now svn path=/nixpkgs/branches/stdenv-updates/; revision=10199 --- pkgs/desktops/kde-4/pimlibs/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/kde-4/pimlibs/default.nix b/pkgs/desktops/kde-4/pimlibs/default.nix index 1ea2e99615b..14cdfba02f4 100644 --- a/pkgs/desktops/kde-4/pimlibs/default.nix +++ b/pkgs/desktops/kde-4/pimlibs/default.nix @@ -1,12 +1,13 @@ args: with args; -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "kdepimlibs-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdepimlibs-4.0.0.tar.bz2; + url = "mirror://kde/stable/4.0/src/${name}.tar.bz2"; sha256 = "0vixx2vh7qgysnbzvykf20362p22jzvl8snpqaknay3v3b2k0br0"; }; propagatedBuildInputs = [kdelibs boost gpgme cyrus_sasl openldap]; + buildInputs = [cmake]; } From 2412e8364b3bca62d021fb1b87bf2a86cad3ab99 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:03:21 +0000 Subject: [PATCH 133/320] Added samba support to kde4-runtime svn path=/nixpkgs/branches/stdenv-updates/; revision=10200 --- pkgs/desktops/kde-4/runtime/default.nix | 10 ++++++---- pkgs/desktops/kde-4/runtime/phonon.patch | 13 +++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 pkgs/desktops/kde-4/runtime/phonon.patch diff --git a/pkgs/desktops/kde-4/runtime/default.nix b/pkgs/desktops/kde-4/runtime/default.nix index 5a0d685c9bc..c0bd6715776 100644 --- a/pkgs/desktops/kde-4/runtime/default.nix +++ b/pkgs/desktops/kde-4/runtime/default.nix @@ -1,14 +1,16 @@ args: with args; -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "kdebase-runtime-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdebase-runtime-4.0.0.tar.bz2; + url = "mirror://kde/stable/4.0/src/${name}.tar.bz2"; sha256 = "0svsn9gzg3ka77j7z71fy502a09w9gp9jd2q2y1w07ahpdil5p7h"; }; - propagatedBuildInputs = [kdepimlibs libusb xineLib]; - patchPhase = "fixCmakeDbusCalls"; + propagatedBuildInputs = [kdepimlibs libusb xineLib samba]; + buildInputs = [cmake]; + phononPatch = ./phonon.patch; + patchPhase = "fixCmakeDbusCalls; patch -p0 < ${phononPatch}"; } diff --git a/pkgs/desktops/kde-4/runtime/phonon.patch b/pkgs/desktops/kde-4/runtime/phonon.patch new file mode 100644 index 00000000000..6905eee8553 --- /dev/null +++ b/pkgs/desktops/kde-4/runtime/phonon.patch @@ -0,0 +1,13 @@ +--- ../phonon/CMakeLists.txt 2007/12/27 15:43:14 753486 ++++ ../phonon/CMakeLists.txt 2008/01/08 10:21:31 758568 +@@ -34,7 +34,9 @@ + macro_log_feature(TRUE "Xine" "xine-lib v${XINE_VERSION} was found on your system. This version is known to have problems when a device is unplugged. Consider upgrading to version 1.1.9 or above." "http://sourceforge.net/project/showfiles.php?group_id=9655&package_id=9732") + endif(XINE_BUGFIX_VERSION LESS 5) + else(XINE_BUGFIX_VERSION LESS 7) +- macro_log_feature(TRUE "Xine" "xine-lib v${XINE_VERSION} was found on your system. This version is known to have problems when playing short sounds. Consider upgrading to version 1.1.9 or above." "http://sourceforge.net/project/showfiles.php?group_id=9655&package_id=9732") ++ if(XINE_BUGFIX_VERSION LESS 9) ++ macro_log_feature(TRUE "Xine" "xine-lib v${XINE_VERSION} was found on your system. This version is known to have problems when playing short sounds. Consider upgrading to version 1.1.9 or above." "http://sourceforge.net/project/showfiles.php?group_id=9655&package_id=9732") ++ endif(XINE_BUGFIX_VERSION LESS 9) + endif(XINE_BUGFIX_VERSION LESS 7) + else(XINE_MINOR_VERSION LESS 2 AND XINE_BUGFIX_VERSION LESS 90) + macro_log_feature(FALSE "Xine" "xine-lib v${XINE_VERSION} was found on your system. This version contains major changes compared to 1.1.x and has not been tested properly for use with this backend. Consider downgrading to version 1.1.9." "http://sourceforge.net/project/showfiles.php?group_id=9655&package_id=9732") From 4bfa9fdc40677f265603f4185c6d734a179b4120 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:03:56 +0000 Subject: [PATCH 134/320] kde4.base: added cmake to inputs svn path=/nixpkgs/branches/stdenv-updates/; revision=10201 --- pkgs/desktops/kde-4/base/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/desktops/kde-4/base/default.nix b/pkgs/desktops/kde-4/base/default.nix index 4fff839769b..a91b3054281 100644 --- a/pkgs/desktops/kde-4/base/default.nix +++ b/pkgs/desktops/kde-4/base/default.nix @@ -9,4 +9,5 @@ stdenv.mkDerivation { }; propagatedBuildInputs = [kdepimlibs libusb]; + buildInputs = [cmake]; } From a2705398ffb3555777d615d77fe3f86ad2931e4d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:04:21 +0000 Subject: [PATCH 135/320] kde4.workspace updated svn path=/nixpkgs/branches/stdenv-updates/; revision=10202 --- pkgs/desktops/kde-4/workspace/builder.sh | 9 --------- pkgs/desktops/kde-4/workspace/default.nix | 6 ++++-- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 5 insertions(+), 12 deletions(-) delete mode 100755 pkgs/desktops/kde-4/workspace/builder.sh diff --git a/pkgs/desktops/kde-4/workspace/builder.sh b/pkgs/desktops/kde-4/workspace/builder.sh deleted file mode 100755 index f5a5b5a90bf..00000000000 --- a/pkgs/desktops/kde-4/workspace/builder.sh +++ /dev/null @@ -1,9 +0,0 @@ -source ${stdenv}/setup - -myPatchPhase() -{ - fixCmakeDbusCalls - sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../kcontrol/randr/randr.h -} -patchPhase=myPatchPhase -genericBuild diff --git a/pkgs/desktops/kde-4/workspace/default.nix b/pkgs/desktops/kde-4/workspace/default.nix index a5929785aec..b6740640c49 100644 --- a/pkgs/desktops/kde-4/workspace/default.nix +++ b/pkgs/desktops/kde-4/workspace/default.nix @@ -2,12 +2,14 @@ args: with args; stdenv.mkDerivation { name = "kdebase-workspace-4.0.0"; - builder = ./builder.sh; src = fetchurl { url = mirror://kde/stable/4.0/src/kdebase-workspace-4.0.0.tar.bz2; sha256 = "08sgp7jaqljdxwsgr5lyyfd6w734yv24zswps1mchmhj01vz1fcg"; }; - buildInputs = [kdelibs kdepimlibs stdenv.gcc.libc]; + propagatedBuildInputs = [kdelibs kdepimlibs stdenv.gcc.libc libusb + libpthreadstubs]; + buildInputs = [cmake]; + patchPhase = "fixCmakeDbusCalls"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b2b88b917af..e09b617b002 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4730,7 +4730,7 @@ rec { xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc - libxkbfile libXinerama; + libxkbfile libXinerama libpthreadstubs; inherit (gtkLibs) glib; qt = qt4; dbus = dbus_alts.withX11; From eae106046db0a036a025de45645ccab24801d0b4 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:09:37 +0000 Subject: [PATCH 136/320] remove 2.6.22-paravirt-nvidia.patch svn path=/nixpkgs/branches/stdenv-updates/; revision=10203 --- pkgs/os-specific/linux/kernel/2.6.22.nix | 3 --- pkgs/os-specific/linux/kernel/2.6.23.1.nix | 3 --- 2 files changed, 6 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/2.6.22.nix b/pkgs/os-specific/linux/kernel/2.6.22.nix index c3d167f6b19..36158a955cd 100644 --- a/pkgs/os-specific/linux/kernel/2.6.22.nix +++ b/pkgs/os-specific/linux/kernel/2.6.22.nix @@ -6,9 +6,6 @@ args: src_hash = { sha256 = "0kh196qzm54mvnbrdr9s2q86l9yn2321gnsl5xq44ai2idqp044g"; }; systemPatches = [ - { name = "paravirt-nvidia"; - patch = ./2.6.22-paravirt-nvidia.patch; - } { name = "fbsplash-0.9.2-r5-2.6.21"; patch = args.fetchurl { url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; diff --git a/pkgs/os-specific/linux/kernel/2.6.23.1.nix b/pkgs/os-specific/linux/kernel/2.6.23.1.nix index 3d4244a74da..5b014b2591e 100644 --- a/pkgs/os-specific/linux/kernel/2.6.23.1.nix +++ b/pkgs/os-specific/linux/kernel/2.6.23.1.nix @@ -6,9 +6,6 @@ args: src_hash = { sha256 = "0737g83h7jbrlss8782b17mhc3nfn8qfbh5s71flz8pjxmbbmg1m"; }; systemPatches = [ - { name = "paravirt-nvidia"; - patch = ./2.6.22-paravirt-nvidia.patch; - } { # resume with resume=swap:/dev/xx name = "tux on ice"; # (swsusp2) patch = args.fetchurl { From 25630eee9e11c64f01f5c5b8b36dccb07f4d817b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:14:20 +0000 Subject: [PATCH 137/320] Removed kde4.pim from list svn path=/nixpkgs/branches/stdenv-updates/; revision=10204 --- pkgs/desktops/kde-4/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/desktops/kde-4/default.nix b/pkgs/desktops/kde-4/default.nix index 3e96185beed..28b792f3996 100644 --- a/pkgs/desktops/kde-4/default.nix +++ b/pkgs/desktops/kde-4/default.nix @@ -16,7 +16,8 @@ rec { extragear_plasma = import ./extragear (fullargs // { kdeworkspace = workspace; }); support = import ./support args; decibel = import ./decibel fullargs; - pim = import ./pim (fullargs // {kdeworkspace = workspace; }); +# kdepim is not included in KDE-4.0.0 + #pim = import ./pim (fullargs // {kdeworkspace = workspace; }); env = kde_pkgs: with args; [ (runCommand "kde-env" { From dc15788487eb655aeca5f049cc67a2e30afcf6c7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 17 Jan 2008 13:29:33 +0000 Subject: [PATCH 138/320] powerpc support removed svn path=/nixpkgs/branches/stdenv-updates/; revision=10205 --- pkgs/top-level/build-for-release.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/top-level/build-for-release.nix b/pkgs/top-level/build-for-release.nix index 6b9d91981fd..e5f8e3a466c 100644 --- a/pkgs/top-level/build-for-release.nix +++ b/pkgs/top-level/build-for-release.nix @@ -19,10 +19,6 @@ let { ; }; - powerpcLinuxPkgs = {inherit (allPackages {system = "powerpc-linux";}) - aterm - ;}; - body = [ i686LinuxPkgs x86_64LinuxPkgs From dc2b4f3ec7ee6bcef0f599303665052ab6f9094b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:08:32 +0000 Subject: [PATCH 139/320] libarchive added svn path=/nixpkgs/branches/stdenv-updates/; revision=10236 --- pkgs/development/libraries/libarchive/default.nix | 15 +++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/development/libraries/libarchive/default.nix diff --git a/pkgs/development/libraries/libarchive/default.nix b/pkgs/development/libraries/libarchive/default.nix new file mode 100644 index 00000000000..c7dc2b39389 --- /dev/null +++ b/pkgs/development/libraries/libarchive/default.nix @@ -0,0 +1,15 @@ +args: with args; +stdenv.mkDerivation rec { + name = "libarchive-2.4.11"; + + src = fetchurl { + url = "http://FIXME_dont_remember/${name}.tar.gz"; + sha256 = "1iq5hs4hbqyl6sqiqlaj3j89vpfqx6zv974c965nxjvmwy816dbz"; + }; + + buildInputs = [zlib]; + + meta = { + description = "A library for reading and writing streaming archives"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e09b617b002..cee77925d6e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2023,6 +2023,10 @@ rec { inherit (xlibs) libXp libXau; }; + libarchive = import ../development/libraries/libarchive { + inherit fetchurl stdenv zlib; + }; + libassuan = import ../development/libraries/libassuan { inherit fetchurl stdenv pth; }; From e35275ae61810dd9d4a7daa9662d01c2c7a4022a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:08:39 +0000 Subject: [PATCH 140/320] cfitsio added svn path=/nixpkgs/branches/stdenv-updates/; revision=10237 --- pkgs/development/libraries/cfitsio/default.nix | 13 +++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/development/libraries/cfitsio/default.nix diff --git a/pkgs/development/libraries/cfitsio/default.nix b/pkgs/development/libraries/cfitsio/default.nix new file mode 100644 index 00000000000..5fb672b8ff1 --- /dev/null +++ b/pkgs/development/libraries/cfitsio/default.nix @@ -0,0 +1,13 @@ +args: with args; +stdenv.mkDerivation { + name = "cfitsio-3.060"; + src = fetchurl { + url = ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio3060.tar.gz; + sha256 = "0ijbjpl5v35m538sa3c82qgja697kddjbj7yxx64ka7pdsdnfx9l"; + }; +# Shared-only build + buildFlags = "shared"; + patchPhase = '' + sed -e '/^install:/s/libcfitsio.a //' -e 's@/bin/@@g' -i Makefile.in + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cee77925d6e..2cc7b2f2251 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1790,6 +1790,10 @@ rec { lib = lib_unstable; }; + cfitsio = import ../development/libraries/cfitsio { + inherit fetchurl stdenv; + }; + fontconfig = import ../development/libraries/fontconfig { inherit fetchurl stdenv freetype expat; }; From 149678e9b6053a36405e353a7f6251b4251a2b1c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:08:51 +0000 Subject: [PATCH 141/320] libnova added svn path=/nixpkgs/branches/stdenv-updates/; revision=10238 --- pkgs/development/libraries/libnova/default.nix | 15 +++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/development/libraries/libnova/default.nix diff --git a/pkgs/development/libraries/libnova/default.nix b/pkgs/development/libraries/libnova/default.nix new file mode 100644 index 00000000000..805a1f44452 --- /dev/null +++ b/pkgs/development/libraries/libnova/default.nix @@ -0,0 +1,15 @@ +args: with args; +stdenv.mkDerivation rec { + name = "libnova-0.12.1"; + + src = fetchurl { + url = "mirror://sf/libnova/${name}.tar.gz"; + sha256 = "0bs6c45q4qkrns36qndl8vns5gvhgpd90hi68bhah4r4hrg48lw0"; + }; + configureFlags = "--enable-shared --disable-static"; + + meta = { + description = "Celestial Mechanics, Astrometry and Astrodynamics Library"; + homepage = http://libnova.sf.net; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2cc7b2f2251..d25c46cc688 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2167,6 +2167,10 @@ rec { inherit fetchurl stdenv; }; + libnova = import ../development/libraries/libnova { + inherit fetchurl stdenv; + }; + libogg = import ../development/libraries/libogg { inherit fetchurl stdenv; }; From 9ba0ec1be90b2c339bd6ca6fbbf8eb4892c2ed5c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:08:59 +0000 Subject: [PATCH 142/320] indilib added svn path=/nixpkgs/branches/stdenv-updates/; revision=10239 --- pkgs/development/libraries/indilib/default.nix | 16 ++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 20 insertions(+) create mode 100644 pkgs/development/libraries/indilib/default.nix diff --git a/pkgs/development/libraries/indilib/default.nix b/pkgs/development/libraries/indilib/default.nix new file mode 100644 index 00000000000..651cb630944 --- /dev/null +++ b/pkgs/development/libraries/indilib/default.nix @@ -0,0 +1,16 @@ +args: with args; +stdenv.mkDerivation { + name = "indilib-0.5"; + + src = fetchurl { + url = mirror://sf/indi/indilib-0.5.tar.gz; + sha256 = "02km37m3d2l8c9wnab24zm2k6a3l8h2fali74jhm4z3khwr277ad"; + }; + + propagatedBuildInputs = [cfitsio libusb zlib]; + configureFlags = "--enable-shared --disable-static"; + + meta = { + homepage = http://indi.sf.net; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d25c46cc688..b9940b6b000 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1997,6 +1997,10 @@ rec { inherit fetchurl stdenv x11 libjpeg libtiff libungif libpng bzip2; }; + indilib = import ../development/libraries/indilib { + inherit fetchurl stdenv cfitsio libusb zlib; + }; + iniparser = import ../development/libraries/iniparser { inherit fetchurl stdenv; }; From b1d7eea5b194866da151d582f612618e04268d50 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:09:19 +0000 Subject: [PATCH 143/320] xine should work now svn path=/nixpkgs/branches/stdenv-updates/; revision=10240 --- pkgs/applications/video/xine-ui/default.nix | 9 +++++---- pkgs/top-level/all-packages.nix | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/video/xine-ui/default.nix b/pkgs/applications/video/xine-ui/default.nix index ff0aa091400..52a4a773607 100644 --- a/pkgs/applications/video/xine-ui/default.nix +++ b/pkgs/applications/video/xine-ui/default.nix @@ -1,5 +1,4 @@ -{stdenv, fetchurl, pkgconfig, x11, xineLib, libpng}: - +args: with args; stdenv.mkDerivation { name = "xine-ui-0.99.5"; src = fetchurl { @@ -7,10 +6,12 @@ stdenv.mkDerivation { sha256 = "07jywadk6fhk3wn1j9m0cfa0zy0i17kz0nyyxwa3shvhznfals0k"; }; buildInputs = [ - pkgconfig x11 xineLib libpng + pkgconfig x11 xineLib libpng libXext libXv readline ncurses libXxf86vm + libXtst inputproto curl (if xineLib.xineramaSupport then xineLib.libXinerama else null) ]; - configureFlags = "--without-readline --disable-xft"; + configureFlags = "--with-readline=${readline}"; + NIX_LDFLAGS="-L${libXext}/lib -lXext"; meta = { description = "Xlib-based interface to Xine, a video player"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b9940b6b000..735d216f00c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4541,7 +4541,8 @@ rec { }; xineUI = import ../applications/video/xine-ui { - inherit fetchurl stdenv pkgconfig x11 xineLib libpng; + inherit fetchurl stdenv pkgconfig x11 xineLib libpng readline ncurses curl; + inherit (xorg) libXext libXv libXxf86vm libXtst inputproto; }; xmms = import ../applications/audio/xmms { From cb26e5a5d4f2566c7b2170fa66e114d17a66dca7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:09:45 +0000 Subject: [PATCH 144/320] djvulibre: Qt3 frontend is optional svn path=/nixpkgs/branches/stdenv-updates/; revision=10241 --- pkgs/applications/misc/djvulibre/default.nix | 5 +---- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/misc/djvulibre/default.nix b/pkgs/applications/misc/djvulibre/default.nix index 611f6f08909..e2082088fc9 100644 --- a/pkgs/applications/misc/djvulibre/default.nix +++ b/pkgs/applications/misc/djvulibre/default.nix @@ -1,7 +1,4 @@ -{stdenv, fetchurl, -qt, libX11, libjpeg, libtiff, libpng, ghostscript, zlib, libungif, -x11, mesa -}: +args: with args; stdenv.mkDerivation { name = "djvulibre-3.5.19"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 735d216f00c..5c89c706aae 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3794,7 +3794,7 @@ rec { djvulibre = import ../applications/misc/djvulibre { inherit stdenv fetchurl libjpeg libtiff libungif zlib ghostscript libpng x11 mesa; - qt = qt3; + qt = if (getConfig ["djvulibre" "qt3Frontend"] true) then qt3 else null; inherit (xlibs) libX11; }; From dd0a953dee0e983291b5324e316f0e88a9d0c2d8 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:09:53 +0000 Subject: [PATCH 145/320] Added old flac (as an option): kde4 needs it svn path=/nixpkgs/branches/stdenv-updates/; revision=10242 --- pkgs/applications/audio/flac/default.nix | 27 ++++++++++++++---------- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index e61fd05ce38..b1636855aae 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -1,11 +1,16 @@ -{stdenv, fetchurl, libogg}: - -stdenv.mkDerivation { - name = "flac-1.2.1"; - src = fetchurl { - url = http://downloads.xiph.org/releases/flac/flac-1.2.1.tar.gz; - sha256 = "1pry5lgzfg57pga1zbazzdd55fkgk3v5qy4axvrbny5lrr5s8dcn"; - }; - - buildInputs = [libogg] ; -} +args: with args; +let + flacFun = version: hash: + stdenv.mkDerivation rec { + name = "flac-${version}"; + src = fetchurl ({ + url = "http://downloads.xiph.org/releases/flac/${name}.tar.gz"; + } // hash); + buildInputs = [libogg]; + }; +in +stdenv.lib.listOfListsToAttrs [ + [ "default" (flacFun "1.2.1" { sha256 = "1pry5lgzfg57pga1zbazzdd55fkgk3v5qy4axvrbny5lrr5s8dcn"; }) ] + [ "1.2.1" (flacFun "1.2.1" { sha256 = "1pry5lgzfg57pga1zbazzdd55fkgk3v5qy4axvrbny5lrr5s8dcn"; }) ] + [ "1.1.2" (flacFun "1.1.2" { md5 = "2bfc127cdda02834d0491ab531a20960"; }) ] +] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5c89c706aae..743b00b87f2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3920,10 +3920,12 @@ rec { firefox3b1Wrapper = lowPrio (wrapFirefox firefox3b1 ""); firefox3b1BinWrapper = lowPrio (wrapFirefox firefox3b1Bin ""); - flac = import ../applications/audio/flac { + flacAlts = import ../applications/audio/flac { inherit fetchurl stdenv libogg; }; + flac = getVersion "flac" flacAlts; + flashplayer = flashplayer9; flashplayer7 = import ../applications/networking/browsers/mozilla-plugins/flashplayer-7 { From 7c4ac4d14bb154181207d7d7532596fe8bbfe66e Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 22 Jan 2008 13:10:14 +0000 Subject: [PATCH 146/320] kde-4: l10n added, various updates svn path=/nixpkgs/branches/stdenv-updates/; revision=10243 --- pkgs/desktops/kde-4/default.nix | 3 +- pkgs/desktops/kde-4/edu/default.nix | 5 +- pkgs/desktops/kde-4/extragear/default.nix | 9 ++-- pkgs/desktops/kde-4/games/default.nix | 3 +- pkgs/desktops/kde-4/graphics/default.nix | 5 +- pkgs/desktops/kde-4/l10n/default.nix | 60 ++++++++++++++++++++++ pkgs/desktops/kde-4/multimedia/default.nix | 4 +- pkgs/desktops/kde-4/toys/default.nix | 3 +- pkgs/desktops/kde-4/utils/default.nix | 3 +- pkgs/top-level/all-packages.nix | 8 +-- 10 files changed, 87 insertions(+), 16 deletions(-) create mode 100644 pkgs/desktops/kde-4/l10n/default.nix diff --git a/pkgs/desktops/kde-4/default.nix b/pkgs/desktops/kde-4/default.nix index 28b792f3996..11554c9955e 100644 --- a/pkgs/desktops/kde-4/default.nix +++ b/pkgs/desktops/kde-4/default.nix @@ -2,6 +2,7 @@ args: rec { fullargs = args // { kdelibs = libs; kdepimlibs = pimlibs; kdebase = base; kderuntime = runtime; }; libs = import ./libs (args // { kdesupport = support; }); + l10n = import ./l10n (args // {kdelibs = libs;}); pimlibs = import ./pimlibs (args // { kdelibs = libs; }); graphics = import ./graphics (fullargs // { kdeworkspace = workspace; } ); multimedia = import ./multimedia (fullargs // { kdeworkspace = workspace; } ); @@ -30,5 +31,5 @@ rec { echo \"#!/bin/sh\" > \${scriptPath} echo \"echo -n export KDEDIRS=\${KDEDIRS}\" >> \${scriptPath} chmod +x \${scriptPath} - ")] ++ kde_pkgs ++ support.all ++ [shared_mime_info qt]; + ")] ++ kde_pkgs ++ support.all ++ [shared_mime_info qt xprop xset]; } diff --git a/pkgs/desktops/kde-4/edu/default.nix b/pkgs/desktops/kde-4/edu/default.nix index 77fe86e2178..2a218300072 100644 --- a/pkgs/desktops/kde-4/edu/default.nix +++ b/pkgs/desktops/kde-4/edu/default.nix @@ -8,8 +8,9 @@ stdenv.mkDerivation rec { sha256 = "1wjy1rm7aiib1lv61wx7mcbkbpkk6phcz1q6dy51x0hfrc3rdkg4"; }; - buildInputs = [kdelibs kdepimlibs boost readline openbabel ocaml - libusb facile python]; + propagatedBuildInputs = [kdepimlibs boost readline openbabel ocaml libusb + facile python indilib libnova]; + buildInputs = [cmake]; myCmakeFiles = ./myCmakeFiles; patchPhase = " cp ${myCmakeFiles}/* ../cmake/modules diff --git a/pkgs/desktops/kde-4/extragear/default.nix b/pkgs/desktops/kde-4/extragear/default.nix index 93e41c6fbfa..5bab882eff2 100644 --- a/pkgs/desktops/kde-4/extragear/default.nix +++ b/pkgs/desktops/kde-4/extragear/default.nix @@ -8,7 +8,10 @@ stdenv.mkDerivation { sha256 = "19gmvqkal11gg67gfmdivxbhwvggm2i6ad642984d97yicms7s9k"; }; - buildInputs = [ kdeworkspace kdebase ]; - patchPhase = " - sed -e 's@ Date: Wed, 23 Jan 2008 16:33:41 +0000 Subject: [PATCH 147/320] dbus-glib nix-expr syntax changed svn path=/nixpkgs/branches/stdenv-updates/; revision=10261 --- pkgs/development/libraries/dbus-glib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/dbus-glib/default.nix b/pkgs/development/libraries/dbus-glib/default.nix index e72ca406509..8324980126c 100644 --- a/pkgs/development/libraries/dbus-glib/default.nix +++ b/pkgs/development/libraries/dbus-glib/default.nix @@ -1,9 +1,9 @@ args: with args; -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "dbus-glib-0.74"; src = fetchurl { - url = http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.74.tar.gz; + url = "${meta.homepage}/releases/dbus-glib/${name}.tar.gz"; sha256 = "1qmbnd9xgg7vahlfywd8sfd9yqhx8jdyczz3cshfsd4qc76xhw78"; }; inherit dbus glib; From 8c88f15884a939508c7735cc415767ea395d8bda Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 23 Jan 2008 16:33:46 +0000 Subject: [PATCH 148/320] kdelibs: syntax changed svn path=/nixpkgs/branches/stdenv-updates/; revision=10262 --- pkgs/desktops/kde/kdelibs/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/desktops/kde/kdelibs/default.nix b/pkgs/desktops/kde/kdelibs/default.nix index 9eb6625d45a..91720c9a66b 100644 --- a/pkgs/desktops/kde/kdelibs/default.nix +++ b/pkgs/desktops/kde/kdelibs/default.nix @@ -1,7 +1,4 @@ -{ stdenv, fetchurl, libX11, libXt, libXext, zlib, perl, qt, openssl, pcre -, pkgconfig, libjpeg, libpng, libtiff, libxml2, libxslt, libtool, expat -, freetype, bzip2, cups -}: +args: with args; let version = "3.5.7"; in From 765cd20094288bde71b54015ec3e1970232bd4ad Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 23 Jan 2008 16:33:51 +0000 Subject: [PATCH 149/320] qt3: use getConfig in mysqlSupport svn path=/nixpkgs/branches/stdenv-updates/; revision=10263 --- 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 776406b9b92..1418127cc48 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2406,7 +2406,7 @@ rec { inherit (xlibs) xextproto libXft libXrender libXrandr randrproto libXmu libXinerama xineramaproto libXcursor; openglSupport = mesaSupported; - mysqlSupport = false; + mysqlSupport = getConfig ["qt" "mysql"] false; }; qt4 = getVersion "qt4" qt4_alts; From 0b1b74ee441cbe6e66daf2808dee05512982133e Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 23 Jan 2008 16:33:59 +0000 Subject: [PATCH 150/320] ortp added svn path=/nixpkgs/branches/stdenv-updates/; revision=10264 --- pkgs/development/libraries/ortp/default.nix | 18 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/development/libraries/ortp/default.nix diff --git a/pkgs/development/libraries/ortp/default.nix b/pkgs/development/libraries/ortp/default.nix new file mode 100644 index 00000000000..4fc51a3ce85 --- /dev/null +++ b/pkgs/development/libraries/ortp/default.nix @@ -0,0 +1,18 @@ + +args: with args; +stdenv.mkDerivation rec { + name = "ortp-0.13.1"; + + src = fetchurl { + url = + "http://download.savannah.nongnu.org/releases/linphone/ortp/sources/${name}.tar.gz"; + sha256 = "0k2963v4b15xnf4cpkpgjhsb8ckxpf6vdr8dnw7z3mzilji7391b"; + }; + + configureFlags = "--enable-shared --disable-static"; + + meta = { + description = "a Real-Time Transport Protocol (RFC3550) stack under LGPL"; + homepage = http://www.linphone.org/index.php/eng/code_review/ortp; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1418127cc48..fbfae579af6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2369,6 +2369,10 @@ rec { inherit fetchurl stdenv perl; }; + ortp = import ../development/libraries/ortp { + inherit fetchurl stdenv; + }; + pangoxsl = import ../development/libraries/pangoxsl { inherit fetchurl stdenv pkgconfig; inherit (gtkLibs) glib pango; From b02b328b9c4f45f01b415a3958b25c09b60bd17d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 23 Jan 2008 16:34:21 +0000 Subject: [PATCH 151/320] loudmouth library added svn path=/nixpkgs/branches/stdenv-updates/; revision=10265 --- pkgs/development/libraries/loudmouth/default.nix | 14 ++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/development/libraries/loudmouth/default.nix diff --git a/pkgs/development/libraries/loudmouth/default.nix b/pkgs/development/libraries/loudmouth/default.nix new file mode 100644 index 00000000000..87d613efd30 --- /dev/null +++ b/pkgs/development/libraries/loudmouth/default.nix @@ -0,0 +1,14 @@ +args: with args; +stdenv.mkDerivation rec { + name = "loudmouth-1.3.3"; + + src = fetchurl { + url = "http://ftp.imendio.com/pub/imendio/loudmouth/src/${name}.tar.bz2"; + sha256 = "0f3xpp3pf5bxcp0kcmqa0g28vfl5gg8mj0hxhs2cx75hwgikd26x"; + }; + + propagatedBuildInputs = [gnutls libidn glib]; + buildInputs = [pkgconfig]; + + configureFlags = "--enable-shared --disable-static"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fbfae579af6..ba7443037d0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2285,6 +2285,11 @@ rec { inherit fetchurl stdenv automake autoconf libtool cppunit libxml2; }; + loudmouth = import ../development/libraries/loudmouth { + inherit fetchurl stdenv libidn gnutls pkgconfig; + inherit (gtkLibs) glib; + }; + lzo = import ../development/libraries/lzo { inherit fetchurl stdenv; }; From 4de89f61b00307debd0aebc36658a384e320bf30 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 23 Jan 2008 16:34:33 +0000 Subject: [PATCH 152/320] Added some telepathy+tapioca stuff. svn path=/nixpkgs/branches/stdenv-updates/; revision=10266 --- .../libraries/tapioca-qt/default.nix | 16 ++++++++++++++++ .../libraries/telepathy-gabble/default.nix | 17 +++++++++++++++++ .../libraries/telepathy-glib/default.nix | 17 +++++++++++++++++ .../libraries/telepathy-qt/default.nix | 16 ++++++++++++++++ pkgs/top-level/all-packages.nix | 19 +++++++++++++++++++ 5 files changed, 85 insertions(+) create mode 100644 pkgs/development/libraries/tapioca-qt/default.nix create mode 100644 pkgs/development/libraries/telepathy-gabble/default.nix create mode 100644 pkgs/development/libraries/telepathy-glib/default.nix create mode 100644 pkgs/development/libraries/telepathy-qt/default.nix diff --git a/pkgs/development/libraries/tapioca-qt/default.nix b/pkgs/development/libraries/tapioca-qt/default.nix new file mode 100644 index 00000000000..956d4c09873 --- /dev/null +++ b/pkgs/development/libraries/tapioca-qt/default.nix @@ -0,0 +1,16 @@ +args: with args; +let rev = "2031"; in +stdenv.mkDerivation { + name = "tapioca-qt-r${rev}"; + src = fetchsvn { + url = "https://tapioca-voip.svn.sourceforge.net/svnroot/tapioca-voip/trunk/tapioca-qt"; + inherit rev; + sha256 = "0r2qzlm56yizdi64xga6v2sdhdcgl3cvlsd7g9ynh95813nky88z"; + }; + + buildInputs = [cmake]; + propagatedBuildInputs = [telepathy_qt stdenv.gcc.libc]; + meta = { + description = "Qt Tapioca binding library"; + }; +} diff --git a/pkgs/development/libraries/telepathy-gabble/default.nix b/pkgs/development/libraries/telepathy-gabble/default.nix new file mode 100644 index 00000000000..44affecefd8 --- /dev/null +++ b/pkgs/development/libraries/telepathy-gabble/default.nix @@ -0,0 +1,17 @@ +args: with args; +stdenv.mkDerivation rec { + name = "telepathy-gabble-0.7.2"; + + src = fetchurl { + url = "${meta.homepage}/releases/telepathy-gabble/${name}.tar.gz"; + sha256 = "0r1j475a5s2a4f10hybmavf4kf6nrnjnv091dpic5nl2asdilb7i"; + }; + + propagatedBuildInputs = [telepathy_glib loudmouth]; + buildInputs = [pkgconfig libxslt]; + configureFlags = "--enable-shared --disable-static"; + + meta = { + homepage = http://telepathy.freedesktop.org; + }; +} diff --git a/pkgs/development/libraries/telepathy-glib/default.nix b/pkgs/development/libraries/telepathy-glib/default.nix new file mode 100644 index 00000000000..fd4f59bdc8a --- /dev/null +++ b/pkgs/development/libraries/telepathy-glib/default.nix @@ -0,0 +1,17 @@ +args: with args; +stdenv.mkDerivation rec { + name = "telepathy-glib-0.7.0"; + + src = fetchurl { + url = "${meta.homepage}/releases/telepathy-glib/${name}.tar.gz"; + sha256 = "0hf1jrgisr7skrji7djh66q0ic351vlsm65xqy982p5d0axzxkz5"; + }; + + propagatedBuildInputs = [dbus_glib glib python]; + buildInputs = [pkgconfig libxslt]; + configureFlags = "--enable-shared --disable-static"; + + meta = { + homepage = http://telepathy.freedesktop.org; + }; +} diff --git a/pkgs/development/libraries/telepathy-qt/default.nix b/pkgs/development/libraries/telepathy-qt/default.nix new file mode 100644 index 00000000000..9c0ea152f4e --- /dev/null +++ b/pkgs/development/libraries/telepathy-qt/default.nix @@ -0,0 +1,16 @@ +args: with args; +let rev = "2031"; in +stdenv.mkDerivation { + name = "telepathy-qt-r${rev}"; + src = fetchsvn { + url = "https://tapioca-voip.svn.sourceforge.net/svnroot/tapioca-voip/trunk/telepathy-qt"; + inherit rev; + sha256 = "0d7psgc8nr5bryrjgfg92622hbilp0qwx0pya3836bz2l6x3msnb"; + }; + + buildInputs = [cmake]; + propagatedBuildInputs = [qt]; + meta = { + description = "Qt bindings for telepathy"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ba7443037d0..0e04bd8c01d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2491,6 +2491,25 @@ rec { inherit fetchurl stdenv zlib; }; + tapioca_qt = import ../development/libraries/tapioca-qt { + inherit fetchsvn stdenv cmake telepathy_qt; + qt = qt4; + }; + + telepathy_gabble = import ../development/libraries/telepathy-gabble { + inherit fetchurl stdenv pkgconfig libxslt telepathy_glib loudmouth; + }; + + telepathy_glib = import ../development/libraries/telepathy-glib { + inherit fetchurl stdenv dbus_glib pkgconfig libxslt python; + inherit (gtkLibs) glib; + }; + + telepathy_qt = import ../development/libraries/telepathy-qt { + inherit fetchsvn stdenv cmake; + qt = qt4; + }; + tk = import ../development/libraries/tk { inherit fetchurl stdenv tcl x11; }; From da57804fff1d34154fc4d13e0fa02cfc23dcfc32 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 23 Jan 2008 18:11:03 +0000 Subject: [PATCH 153/320] Merged with trunk again svn path=/nixpkgs/branches/stdenv-updates/; revision=10267 --- pkgs/applications/audio/audacity/default.nix | 7 +- .../audio/ladspa-plugins/default.nix | 7 +- .../audio/ladspa-plugins/ladspah.nix | 5 +- pkgs/applications/audio/snd/default.nix | 5 +- pkgs/applications/editors/bvi/default.nix | 17 + pkgs/applications/editors/eclipse/builder.sh | 1 - pkgs/applications/editors/eclipse/default.nix | 3 +- pkgs/applications/graphics/gocr/0.44.nix | 5 +- pkgs/applications/graphics/xfig/builder.sh | 5 +- pkgs/applications/graphics/xfig/default.nix | 4 +- .../graphics/xscreensaver/5.04.nix | 3 +- pkgs/applications/misc/xterm/default.nix | 1 + .../networking/browsers/opera/default.nix | 9 +- .../networking/sync/unison/default.nix | 22 +- .../version-management/bazaar/default.nix | 22 + .../version-management/cvs2svn/default.nix | 28 +- .../version-management/mercurial/default.nix | 21 +- .../virtualization/qemu/0.9.0.nix | 5 +- .../virtualization/qemu/linux-img/0.2.nix | 6 +- .../virtualization/virtualbox/1.5.2.nix | 5 +- .../compiz-fusion/bcop/0.6.0.nix | 5 +- .../compiz-fusion/ccsm/0.6.0.nix | 5 +- .../compiz-fusion/compiz-manager/0.6.0.nix | 5 +- .../compizconfig-python/0.6.0.nix | 5 +- .../compiz-fusion/config-backend/0.6.0.nix | 5 +- .../compiz-fusion/extra/0.6.0.nix | 5 +- .../compiz-fusion/libcompizconfig/0.6.0.nix | 5 +- .../compiz-fusion/main/0.6.0.nix | 5 +- .../window-managers/compiz/0.6.2.nix | 5 +- .../window-managers/fbpanel/4.12.nix | 5 +- .../window-managers/xmonad/default.nix | 42 + pkgs/build-support/fetchurl/mirrors.nix | 6 + .../make-wrapper/make-wrapper.sh | 19 +- pkgs/data/fonts/fontWrap/default.nix | 7 +- pkgs/development/compilers/ghcs/default.nix | 58 +- pkgs/development/compilers/jdk/builder.sh | 1 + pkgs/development/compilers/jdk/default-5.nix | 9 + .../compilers/jdk/jdk5-sun-linux.nix | 23 + pkgs/development/compilers/qi/9.1.nix | 5 +- .../interpreters/erlang/builder.sh | 14 + .../interpreters/erlang/default.nix | 11 + pkgs/development/interpreters/pyrex/0.9.6.nix | 5 +- pkgs/development/libraries/fftw/default.nix | 5 +- pkgs/development/libraries/glew/default.nix | 19 + .../libraries/haskell/Crypto/default.nix | 11 + .../libraries/haskell/X11/default.nix | 13 + .../libraries/haskell/binary/default.nix | 11 + .../libraries/haskell/cabal/cabal.nix | 95 ++ .../libraries/haskell/pcre-light/default.nix | 12 + .../haskell/uulib-ghc-6.6/builder.sh | 21 - .../haskell/uulib-ghc-6.6/default.nix | 11 - .../libraries/haskell/uulib/builder.sh | 51 - .../libraries/haskell/uulib/default.nix | 18 +- .../libraries/haskell/vty/default.nix | 13 + .../libraries/haskell/zlib/default.nix | 11 + .../libraries/libdbi-drivers/0.8.2-1.nix | 5 +- pkgs/development/libraries/libdbi/0.8.2.nix | 5 +- .../libraries/libextractor/0.5.18.nix | 5 +- .../python-modules/ZopeInterface/default.nix | 6 +- .../python-modules/twisted/default.nix | 6 +- .../tools/documentation/haddock/default.nix | 11 + .../tools/haskell/uuagc/default.nix | 24 +- pkgs/development/tools/misc/indent/2.2.9.nix | 5 +- .../tools/misc/intltool/0.36.2.nix | 5 +- .../development/tools/misc/ltrace/default.nix | 5 +- .../tools/parsing/alex/default.nix | 31 +- .../tools/parsing/happy/happy-1.17.nix | 12 + pkgs/games/construo/0.2.2.nix | 5 +- pkgs/games/fsg/alt-builder.nix | 8 +- pkgs/games/orbit/1.01.nix | 43 + pkgs/lib/default.nix | 290 +++++- pkgs/lib/strings-with-deps.nix | 36 +- pkgs/misc/tex/nix/find-includes.pl | 1 + pkgs/misc/trac/builder.sh | 6 +- pkgs/misc/trac/default.nix | 17 +- pkgs/os-specific/linux/atheros/0.9.3.3.nix | 5 +- pkgs/os-specific/linux/atheros/r2756.nix | 5 +- pkgs/os-specific/linux/atheros/r3122.nix | 5 +- pkgs/os-specific/linux/dmidecode/2.9.nix | 5 +- pkgs/os-specific/linux/dvd+rw-tools/7.0.nix | 5 +- pkgs/os-specific/linux/kqemu/1.3.0pre11.nix | 6 +- .../linux/module-init-tools/aggregator.nix | 7 +- pkgs/os-specific/linux/sdparm/1.02.nix | 5 +- pkgs/os-specific/linux/usbutils/default.nix | 10 +- .../tomcat-connectors/builder.sh | 8 + .../tomcat-connectors/default.nix | 14 + pkgs/servers/http/jboss/builder.sh | 18 + pkgs/servers/http/jboss/default.nix | 20 + pkgs/servers/sql/postgresql/default.nix | 6 +- pkgs/servers/xmpp/ejabberd/builder.sh | 9 + pkgs/servers/xmpp/ejabberd/default.nix | 11 + pkgs/stdenv/generic/setup-sh-defs.nix | 902 ------------------ pkgs/tools/misc/grub/default.nix | 24 +- pkgs/tools/misc/mc/builder.sh | 7 + pkgs/tools/misc/mc/default.nix | 11 + pkgs/tools/misc/relfs/cvs.2007.12.01.nix | 5 +- pkgs/tools/networking/ntp/default.nix | 10 +- .../networking/p2p/bittorrent/builder.sh | 8 +- .../networking/p2p/bittorrent/default.nix | 12 +- .../tools/package-management/nix/unstable.nix | 4 +- pkgs/tools/system/gdmap/0.7.5.nix | 5 +- pkgs/tools/system/pciutils/default.nix | 10 +- pkgs/tools/system/which/default.nix | 14 +- pkgs/tools/typesetting/lhs2tex/default.nix | 6 +- pkgs/top-level/all-packages.nix | 224 ++++- pkgs/top-level/build-for-release.nix | 2 - pkgs/top-level/builder-defs.nix | 100 +- pkgs/top-level/template-composing+config.nix | 5 +- pkgs/top-level/template-composing-builder.nix | 10 +- 109 files changed, 1394 insertions(+), 1352 deletions(-) create mode 100644 pkgs/applications/editors/bvi/default.nix create mode 100644 pkgs/applications/version-management/bazaar/default.nix create mode 100644 pkgs/applications/window-managers/xmonad/default.nix create mode 100644 pkgs/development/compilers/jdk/default-5.nix create mode 100644 pkgs/development/compilers/jdk/jdk5-sun-linux.nix create mode 100644 pkgs/development/interpreters/erlang/builder.sh create mode 100644 pkgs/development/interpreters/erlang/default.nix create mode 100644 pkgs/development/libraries/glew/default.nix create mode 100644 pkgs/development/libraries/haskell/Crypto/default.nix create mode 100644 pkgs/development/libraries/haskell/X11/default.nix create mode 100644 pkgs/development/libraries/haskell/binary/default.nix create mode 100644 pkgs/development/libraries/haskell/cabal/cabal.nix create mode 100644 pkgs/development/libraries/haskell/pcre-light/default.nix delete mode 100644 pkgs/development/libraries/haskell/uulib-ghc-6.6/builder.sh delete mode 100644 pkgs/development/libraries/haskell/uulib-ghc-6.6/default.nix delete mode 100644 pkgs/development/libraries/haskell/uulib/builder.sh create mode 100644 pkgs/development/libraries/haskell/vty/default.nix create mode 100644 pkgs/development/libraries/haskell/zlib/default.nix create mode 100644 pkgs/development/tools/documentation/haddock/default.nix create mode 100644 pkgs/development/tools/parsing/happy/happy-1.17.nix create mode 100644 pkgs/games/orbit/1.01.nix create mode 100644 pkgs/servers/http/apache-modules/tomcat-connectors/builder.sh create mode 100644 pkgs/servers/http/apache-modules/tomcat-connectors/default.nix create mode 100644 pkgs/servers/http/jboss/builder.sh create mode 100644 pkgs/servers/http/jboss/default.nix create mode 100644 pkgs/servers/xmpp/ejabberd/builder.sh create mode 100644 pkgs/servers/xmpp/ejabberd/default.nix delete mode 100644 pkgs/stdenv/generic/setup-sh-defs.nix create mode 100644 pkgs/tools/misc/mc/builder.sh create mode 100644 pkgs/tools/misc/mc/default.nix diff --git a/pkgs/applications/audio/audacity/default.nix b/pkgs/applications/audio/audacity/default.nix index 56ee6a56ccb..3eaf1ed3ee0 100644 --- a/pkgs/applications/audio/audacity/default.nix +++ b/pkgs/applications/audio/audacity/default.nix @@ -1,5 +1,5 @@ args: with args; - with (builderDefs { + let localDefs = builderDefs { src = fetchurl { url = mirror://sourceforge/audacity/audacity-src-1.3.3.tar.gz; @@ -8,7 +8,8 @@ args: with args; buildInputs =[(wxGTK null) libogg libvorbis libsndfile libmad pkgconfig gtk gettext glib]; - } null); + } null; + in with localDefs; let postInstall = FullDepEntry (" old_rpath=$(patchelf --print-rpath \$out/bin/audacity); @@ -25,7 +26,7 @@ stdenv.mkDerivation { name = "audacity-1.3.3"; builder = writeScript "audacity-1.3.3-builder" - (textClosure [addInputs (doDump "0") (noDepEntry "echo \$PATH; ar --version") doConfigure preBuild doMakeInstall postInstall doForceShare]); + (textClosure localDefs [addInputs (doDump "0") (noDepEntry "echo \$PATH; ar --version") doConfigure preBuild doMakeInstall postInstall doForceShare]); meta = { description = " diff --git a/pkgs/applications/audio/ladspa-plugins/default.nix b/pkgs/applications/audio/ladspa-plugins/default.nix index 70dc36240c6..9f2fcbc0ed0 100644 --- a/pkgs/applications/audio/ladspa-plugins/default.nix +++ b/pkgs/applications/audio/ladspa-plugins/default.nix @@ -1,5 +1,5 @@ args: with args; - with (builderDefs { + let localDefs = builderDefs { src = fetchurl { url = http://plugin.org.uk/releases/0.4.15/swh-plugins-0.4.15.tar.gz; @@ -7,7 +7,8 @@ args: with args; }; buildInputs = [fftw ladspaH pkgconfig]; configureFlags = []; - } null); + } null; + in with localDefs; let postInstall = FullDepEntry (" ensureDir \$out/share/ladspa/ @@ -17,7 +18,7 @@ in stdenv.mkDerivation { name = "swh-plugins-0.4.15"; builder = writeScript "swh-plugins-0.4.15-builder" - (textClosure [doConfigure doMakeInstall + (textClosure localDefs [doConfigure doMakeInstall postInstall doForceShare]); meta = { description = " diff --git a/pkgs/applications/audio/ladspa-plugins/ladspah.nix b/pkgs/applications/audio/ladspa-plugins/ladspah.nix index b526e48b10e..65647cf0a22 100644 --- a/pkgs/applications/audio/ladspa-plugins/ladspah.nix +++ b/pkgs/applications/audio/ladspa-plugins/ladspah.nix @@ -6,10 +6,11 @@ let sha256 = "1b908csn85ng9sz5s5d1mqk711cmawain2z8px2ajngihdrynb67"; }; in - with builderDefs { + let localDefs = builderDefs { buildInputs = []; inherit src; } null; + in with localDefs; let copyFile = FullDepEntry (" ensureDir \$out/include @@ -19,7 +20,7 @@ in stdenv.mkDerivation { name = "ladspa.h"; builder = writeScript "ladspa.h-builder" - (textClosure [copyFile]); + (textClosure localDefs [copyFile]); meta = { description = " LADSPA format audio plugins. diff --git a/pkgs/applications/audio/snd/default.nix b/pkgs/applications/audio/snd/default.nix index 9a650570a6d..961d82fb889 100644 --- a/pkgs/applications/audio/snd/default.nix +++ b/pkgs/applications/audio/snd/default.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = fetchurl { url = ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-9.4.tar.gz; @@ -20,6 +20,7 @@ args : with args; ++ (lib.optional (args ? sndlib) "--with-midi" ) ; } null; /* null is a terminator for sumArgs */ + in with localDefs; let preBuild = FullDepEntry (" cp config.log /tmp/snd-config.log ") [minInit doUnpack]; @@ -27,7 +28,7 @@ in stdenv.mkDerivation rec { name = "Snd-9.4"; builder = writeScript (name + "-builder") - (textClosure [doConfigure preBuild doMakeInstall doForceShare]); + (textClosure localDefs [doConfigure preBuild doMakeInstall doForceShare]); meta = { description = " Snd sound editor. diff --git a/pkgs/applications/editors/bvi/default.nix b/pkgs/applications/editors/bvi/default.nix new file mode 100644 index 00000000000..6d9ffdaecc8 --- /dev/null +++ b/pkgs/applications/editors/bvi/default.nix @@ -0,0 +1,17 @@ +args: +args.stdenv.mkDerivation { + name = "bvi-1.3.2"; + + src = args.fetchurl { + url = http://prdownloads.sourceforge.net/bvi/bvi-1.3.2.src.tar.gz; + sha256 = "110wxqnyianqamxq4y53drqqxb9vp4k2fcvic45qggvlqkqhlfgz"; + }; + + buildInputs =(with args; [ncurses]); + + meta = { + description = "hex editor with vim style keybindings"; + homepage = http://bvi.sourceforge.net/download.html; + license = "GPL2"; + }; +} diff --git a/pkgs/applications/editors/eclipse/builder.sh b/pkgs/applications/editors/eclipse/builder.sh index b38befee41a..6e064e1fa9b 100755 --- a/pkgs/applications/editors/eclipse/builder.sh +++ b/pkgs/applications/editors/eclipse/builder.sh @@ -1,5 +1,4 @@ source $stdenv/setup -source $makeWrapper unpackFile $src ensureDir $out diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix index 71afb07eece..23199bdcc12 100644 --- a/pkgs/applications/editors/eclipse/default.nix +++ b/pkgs/applications/editors/eclipse/default.nix @@ -6,7 +6,8 @@ let { name = "eclipse-sdk-3.3.3.1"; builder = ./builder.sh; src = bindist; - inherit makeWrapper jdk plugins; + buildInputs = [makeWrapper]; + inherit jdk plugins; libraries = [gtk glib libXtst]; }; diff --git a/pkgs/applications/graphics/gocr/0.44.nix b/pkgs/applications/graphics/gocr/0.44.nix index 4bf7bda50cb..b415fd6fb12 100644 --- a/pkgs/applications/graphics/gocr/0.44.nix +++ b/pkgs/applications/graphics/gocr/0.44.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://prdownloads.sourceforge.net/jocr/gocr-0.44.tar.gz; @@ -9,10 +9,11 @@ fetchurl { buildInputs = []; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "gocr"; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " GPL Optical Character Recognition diff --git a/pkgs/applications/graphics/xfig/builder.sh b/pkgs/applications/graphics/xfig/builder.sh index de64fbce78f..dc943180508 100644 --- a/pkgs/applications/graphics/xfig/builder.sh +++ b/pkgs/applications/graphics/xfig/builder.sh @@ -1,5 +1,4 @@ source $stdenv/setup -source $makeWrapper makeFlags="XAWLIB=-lXaw3d BINDIR=$out/bin XAPPLOADDIR=$out/etc/X11/app-defaults LIBDIR=$out/lib/X11 XFIGDOCDIR=$out/share/doc/xfig MANPATH=$out/man" @@ -16,9 +15,7 @@ installCommand=myInstall myInstall() { make install.all $makeFlags - mv $out/bin/xfig $out/bin/.xfig - - makeWrapper $out/bin/.xfig $out/bin/xfig \ + wrapProgram $out/bin/xfig \ --set XAPPLRESDIR $out/etc/X11/app-defaults } diff --git a/pkgs/applications/graphics/xfig/default.nix b/pkgs/applications/graphics/xfig/default.nix index 0d94d4a655d..49de840e2dc 100644 --- a/pkgs/applications/graphics/xfig/default.nix +++ b/pkgs/applications/graphics/xfig/default.nix @@ -11,9 +11,7 @@ stdenv.mkDerivation { builder = ./builder.sh; - buildInputs = [imake x11 libXpm libXmu libXi libXp Xaw3d libpng libjpeg]; - - inherit makeWrapper; + buildInputs = [imake x11 libXpm libXmu libXi libXp Xaw3d libpng libjpeg makeWrapper]; NIX_CFLAGS_COMPILE = "-I${libXpm}/include/X11"; diff --git a/pkgs/applications/graphics/xscreensaver/5.04.nix b/pkgs/applications/graphics/xscreensaver/5.04.nix index 132bf997e18..a9fa7978237 100644 --- a/pkgs/applications/graphics/xscreensaver/5.04.nix +++ b/pkgs/applications/graphics/xscreensaver/5.04.nix @@ -1,4 +1,4 @@ -args : with args; with builderDefs (args // { +args : with args; let localDefs = builderDefs (args // { src = /* put a fetchurl here */ fetchurl { url = http://www.jwz.org/xscreensaver/xscreensaver-5.04.tar.gz; @@ -20,6 +20,7 @@ args : with args; with builderDefs (args // { " --with-hackdir=\$out/share/xscreensaver-hacks ") ]; }) null; /* null is a terminator for sumArgs */ + in with localDefs; let preConfigure = FullDepEntry (" sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' "+ diff --git a/pkgs/applications/misc/xterm/default.nix b/pkgs/applications/misc/xterm/default.nix index c1be706b547..97c8b42697f 100644 --- a/pkgs/applications/misc/xterm/default.nix +++ b/pkgs/applications/misc/xterm/default.nix @@ -7,5 +7,6 @@ stdenv.mkDerivation rec { sha256 = "0qlz5nkdqkahdg9kbd1ni96n69srj1pd9yggwrw3z0kghaajb2sr"; }; buildInputs = [libXaw xproto libXt libX11 libSM libICE ncurses]; + configureFlags = ["--enable-wide-chars"]; } diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix index d807add5111..7393cffe316 100644 --- a/pkgs/applications/networking/browsers/opera/default.nix +++ b/pkgs/applications/networking/browsers/opera/default.nix @@ -20,8 +20,13 @@ stdenv.mkDerivation rec { sha256 = "0vv1q86is9x6vw8fx92wrnvlyn4x29zgk9zjn66rcx37n6grqqah"; } else if (stdenv.system == "x86_64-linux") then fetchurl { - url = ftp://ftp.task.gda.pl/pub/opera/linux/950b/final/en/x86_64/opera-9.50-20071024.2-shared-qt.x86_64-1643.tar.bz2; - sha256 = "1gv1r18ar3vz1l24nf8qixjlba1yb5d3xvg3by41i4dy0vlznqn6"; + url = http://snapshot.opera.com/unix/snapshot-1754/x86_64-linux/opera-9.50-20080110.2-shared-qt.x86_64-1754.tar.bz2; + sha256 = "08y1ajjncdvbhvcq2izmpgc4fi37bwn43zsw7rz41jf8qhvb5ywv"; + #url = ftp://ftp.task.gda.pl/pub/opera/linux/950b/final/en/x86_64/opera-9.50-20071024.2-shared-qt.x86_64-1643.tar.bz2; + #sha256 = "1gv1r18ar3vz1l24nf8qixjlba1yb5d3xvg3by41i4dy0vlznqn6"; + #name = opera-9.25-20071214.6-shared-qt.i386-en.tar.gz; + #url = http://www.opera.com/download/get.pl?id=30462&location=225¬hanks=yes&sub=marine; + #sha256 = "1wnc1s4r5gz73mxs8pgsi9a1msz7x8a8pb1ykb1xgdfn21h69p2p"; } else throw "unsupported platform ${stdenv.system} (only i686-linux and x86_64 linux supported yet)"; # operapluginwrapper seems to require libXt ? diff --git a/pkgs/applications/networking/sync/unison/default.nix b/pkgs/applications/networking/sync/unison/default.nix index 75c976a4329..0883c236d01 100644 --- a/pkgs/applications/networking/sync/unison/default.nix +++ b/pkgs/applications/networking/sync/unison/default.nix @@ -7,21 +7,15 @@ stdenv.mkDerivation { sha256 = "808400a933aeb67654edc770822cd186d1b2adc92e7cb5836996c71c69ffe656"; }; - buildInputs = [ocaml]; + buildInputs = [ocaml makeWrapper]; - addInputsHook = "source $makeWrapper"; - preBuild = "sed -i \"s|\\(OCAMLOPT=.*\\)$|\\1 -I $lablgtk/lib/ocaml/lablgtk2|\" Makefile.OCaml"; + preBuild = "sed -i \"s|\\(OCAMLOPT=.*\\)$|\\1 -I ${lablgtk}/lib/ocaml/lablgtk2|\" Makefile.OCaml"; makeFlags = "UISTYLE=gtk2 INSTALLDIR=$(out)/bin/"; preInstall = "ensureDir $out/bin"; - postInstall = [ - "for i in $(cd $out/bin && ls); do" - " mv $out/bin/$i $out/bin/.orig-$i;" - " echo \"#! $SHELL\" > $out/bin/$i;" - " echo \"$xset/bin/xset q | grep -q \\\"$fontschumachermisc\\\" || $xset/bin/xset +fp \\\"$fontschumachermisc/lib/X11/fonts/misc\\\"\" >> $out/bin/$i;" - " echo \"exec \\\"$out/bin/.orig-$i\\\" \\\"\\\$@\\\"\" >> $out/bin/$i;" - " chmod +x $out/bin/$i;" - "done" - ]; - - inherit lablgtk fontschumachermisc xset makeWrapper; + postInstall = '' + for i in $(cd $out/bin && ls); do + wrapProgram $out/bin/$i \ + --run "${xset}/bin/xset q | grep -q \"${fontschumachermisc}\" || ${xset}/bin/xset +fp \"${fontschumachermisc}/lib/X11/fonts/misc\"" + done + ''; } diff --git a/pkgs/applications/version-management/bazaar/default.nix b/pkgs/applications/version-management/bazaar/default.nix new file mode 100644 index 00000000000..71134c0841a --- /dev/null +++ b/pkgs/applications/version-management/bazaar/default.nix @@ -0,0 +1,22 @@ +{stdenv, fetchurl, python, makeWrapper}: + +stdenv.mkDerivation { + name = "bazaar-1.1"; + + src = fetchurl { + url = https://launchpad.net/bzr/1.1/1.1/+download/bzr-1.1.tar.gz; + sha256 = "1qpkw580r22yxybdghx2ha0kyk22brbhd1kg9wwjh209dqy2gqzc"; + }; + + buildInputs = [python makeWrapper]; + + installPhase = '' + python setup.py install --prefix=$out + wrapProgram $out/bin/bzr --prefix PYTHONPATH : "$(toPythonPath $out)" + ''; + + meta = { + homepage = http://bazaar-vcs.org/; + description = "A distributed version control system that Just Works"; + }; +} diff --git a/pkgs/applications/version-management/cvs2svn/default.nix b/pkgs/applications/version-management/cvs2svn/default.nix index e519be92733..65c2c84d0da 100644 --- a/pkgs/applications/version-management/cvs2svn/default.nix +++ b/pkgs/applications/version-management/cvs2svn/default.nix @@ -1,25 +1,27 @@ -{stdenv, fetchurl, python, bsddb3, makeWrapper}: +{stdenv, fetchurl, python, makeWrapper}: stdenv.mkDerivation { - name = "cvs2svn-1.5.1"; + name = "cvs2svn-2.0.1"; src = fetchurl { - url = http://cvs2svn.tigris.org/files/documents/1462/36129/cvs2svn-1.5.1.tar.gz; - md5 = "d1e42ea51b373be0023f2b3f6b80ec01"; + url = http://cvs2svn.tigris.org/files/documents/1462/39919/cvs2svn-2.0.1.tar.gz; + sha256 = "1pgbyxzgn22lnw3h5c2nd8z46pkk863jg3fgh9pqa1jihsx1cg1j"; }; - buildInputs = [python bsddb3]; + buildInputs = [python makeWrapper]; buildPhase = "true"; - installPhase = " + installPhase = '' python ./setup.py install --prefix=$out - - source ${makeWrapper} - mv $out/bin/cvs2svn $out/bin/.orig-cvs2svn - makeWrapper $out/bin/.orig-cvs2svn $out/bin/cvs2svn \\ - --set PYTHONPATH \"$(toPythonPath $out):$(toPythonPath ${bsddb3}):$PYTHONPATH\" - "; + wrapProgram $out/bin/cvs2svn \ + --set PYTHONPATH "$(toPythonPath $out):$PYTHONPATH" + ''; /* !!! maybe we should absolutise the program names in $out/lib/python2.4/site-packages/cvs2svn_lib/config.py. */ -} \ No newline at end of file + + meta = { + description = "A tool to convert CVS repositories to Subversion repositories"; + homepage = http://cvs2svn.tigris.org/; + }; +} diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix index f65a34ec5c4..408c9d8ebac 100644 --- a/pkgs/applications/version-management/mercurial/default.nix +++ b/pkgs/applications/version-management/mercurial/default.nix @@ -7,20 +7,17 @@ stdenv.mkDerivation { sha256 = "1n34yl4z7nc3vmsgpkmqc94hsmy846ny86xgpgv3m371ljm2pq6g"; }; - inherit makeWrapper; - - buildInputs = [ python ]; - addInputsHook = "source $makeWrapper"; + buildInputs = [ python makeWrapper ]; makeFlags = "PREFIX=$(out)"; - postInstall = [ - "for i in $(cd $out/bin && ls); do" - " mv $out/bin/$i $out/bin/.orig-$i;" - " makeWrapper $out/bin/.orig-$i $out/bin/$i" - " --set PYTHONPATH \"$(toPythonPath $out):$PYTHONPATH:\$PYTHONPATH\";" - "done" - ]; + postInstall = '' + for i in $(cd $out/bin && ls); do + wrapProgram $out/bin/$i \ + --prefix PYTHONPATH : "$(toPythonPath $out)" + done + ''; meta = { - description = "a fast, lightweight SCM system for very large distributed projects"; + description = "A fast, lightweight SCM system for very large distributed projects"; + homepage = http://www.selenic.com/mercurial/; }; } diff --git a/pkgs/applications/virtualization/qemu/0.9.0.nix b/pkgs/applications/virtualization/qemu/0.9.0.nix index 8604f5ae66b..439ec34a8c3 100644 --- a/pkgs/applications/virtualization/qemu/0.9.0.nix +++ b/pkgs/applications/virtualization/qemu/0.9.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz; @@ -9,6 +9,7 @@ args : with args; buildInputs = [ SDL zlib which ]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let preConfigure = FullDepEntry (" gcc --version @@ -17,7 +18,7 @@ in stdenv.mkDerivation rec { name = "qemu-"+version; builder = writeScript (name + "-builder") - (textClosure [ preConfigure doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [ preConfigure doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " QEmu processor emulator. diff --git a/pkgs/applications/virtualization/qemu/linux-img/0.2.nix b/pkgs/applications/virtualization/qemu/linux-img/0.2.nix index 02ac87ef2e2..ae1933b9d1d 100644 --- a/pkgs/applications/virtualization/qemu/linux-img/0.2.nix +++ b/pkgs/applications/virtualization/qemu/linux-img/0.2.nix @@ -1,6 +1,5 @@ - args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://fabrice.bellard.free.fr/qemu/linux-0.2.img.bz2; @@ -9,6 +8,7 @@ args : with args; buildInputs = []; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let doCopy = FullDepEntry (" ensureDir \$out/share/qemu-images @@ -18,7 +18,7 @@ in stdenv.mkDerivation rec { name = "QEmu-Linux-Image-"+version; builder = writeScript (name + "-builder") - (textClosure [doCopy doForceShare doPropagate]); + (textClosure localDefs [doCopy doForceShare doPropagate]); meta = { description = " ${abort "Write a description"} diff --git a/pkgs/applications/virtualization/virtualbox/1.5.2.nix b/pkgs/applications/virtualization/virtualbox/1.5.2.nix index e633c55a263..e8f2988ade2 100644 --- a/pkgs/applications/virtualization/virtualbox/1.5.2.nix +++ b/pkgs/applications/virtualization/virtualbox/1.5.2.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://www.virtualbox.org/download/1.5.2/VirtualBox-1.5.2_OSE.tar.bz2; @@ -9,10 +9,11 @@ args : with args; wine jre libxslt libIDL SDL qt3 openssl zlib]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "VirtualBox-"+version; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " Virtual Box is just software for running virtual machines. diff --git a/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix index 1072e9b363c..6337d6a4ebe 100644 --- a/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/bcop/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0/compiz-bcop-0.6.0.tar.bz2; @@ -9,6 +9,7 @@ args : with args; propagatedBuildInputs = [getopt libxslt]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let fixPkgconfig = FullDepEntry (" ensureDir \$out/lib @@ -21,7 +22,7 @@ in stdenv.mkDerivation rec { name = "compiz-bcop-"+version; builder = writeScript (name + "-builder") - (textClosure [doAutotools doConfigure doMakeInstall fixPkgconfig fixInterpreter doForceShare + (textClosure localDefs [doAutotools doConfigure doMakeInstall fixPkgconfig fixInterpreter doForceShare doPropagate]); inherit propagatedBuildInputs; meta = { diff --git a/pkgs/applications/window-managers/compiz-fusion/ccsm/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/ccsm/0.6.0.nix index fba1c5d995f..6e3448bebf8 100644 --- a/pkgs/applications/window-managers/compiz-fusion/ccsm/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/ccsm/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0/ccsm-0.6.0.tar.bz2; @@ -15,10 +15,11 @@ args : with args; "PYTHONPATH" "$(toPythonPath ${pygtk})/gtk-2.0" ]; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "compizconfig-settings-"+args.version; builder = writeScript (name + "-builder") - (textClosure [installPythonPackage (doWrap "\$out/bin/ccsm")]); + (textClosure localDefs [installPythonPackage (doWrap "\$out/bin/ccsm")]); meta = { description = " Compiz Settings Manager diff --git a/pkgs/applications/window-managers/compiz-fusion/compiz-manager/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/compiz-manager/0.6.0.nix index a3885507480..6033ea1663a 100644 --- a/pkgs/applications/window-managers/compiz-fusion/compiz-manager/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/compiz-manager/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0/compiz-manager-0.6.0.tar.bz2; @@ -20,6 +20,7 @@ args : with args; "XORG_DRIVER_PATH" "/nix/store/.*" ]]; } null; /* null is a terminator for sumArgs */ + in with localDefs; let install = FullDepEntry (" sed -e '/Checking for texture_from_pixmap:/areturn 0' -i compiz-manager @@ -34,7 +35,7 @@ in stdenv.mkDerivation rec { name = "compiz-manager-"+args.version; builder = writeScript (name + "-builder") - (textClosure [doUnpack doReplaceScripts install doPropagate doForceShare]); + (textClosure localDefs [doUnpack doReplaceScripts install doPropagate doForceShare]); meta = { description = " Compiz Launch Manager diff --git a/pkgs/applications/window-managers/compiz-fusion/compizconfig-python/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/compizconfig-python/0.6.0.nix index 73f1c653361..64247cb1b8d 100644 --- a/pkgs/applications/window-managers/compiz-fusion/compizconfig-python/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/compizconfig-python/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0.1/compizconfig-python-0.6.0.1.tar.bz2; @@ -9,10 +9,11 @@ args : with args; [libcompizconfig bcop python pyrex configBackendGConf]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "compizconfig-python-"+args.version; builder = writeScript (name + "-builder") - (textClosure [doAutotools doConfigure doMakeInstall doForceShare]); + (textClosure localDefs [doAutotools doConfigure doMakeInstall doForceShare]); meta = { description = " Compiz configuration - Python part. diff --git a/pkgs/applications/window-managers/compiz-fusion/config-backend/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/config-backend/0.6.0.nix index 3405ae0ce97..12ef3bb58a0 100644 --- a/pkgs/applications/window-managers/compiz-fusion/config-backend/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/config-backend/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0/compizconfig-backend-gconf-0.6.0.tar.bz2; @@ -10,10 +10,11 @@ args : with args; configureFlags = []; forceShare = ["man" "doc" "info" "lib/compizconfig"]; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "compizconfig-backend-GConf-"+version; builder = writeScript (name + "-builder") - (textClosure [doAutotools doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doAutotools doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " Compiz configuration backend (GConf). diff --git a/pkgs/applications/window-managers/compiz-fusion/extra/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/extra/0.6.0.nix index e304eb9d6ae..cc6b2f215ca 100644 --- a/pkgs/applications/window-managers/compiz-fusion/extra/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/extra/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0/compiz-fusion-plugins-extra-0.6.0.tar.bz2; @@ -9,6 +9,7 @@ args : with args; [bcop libjpeg gettext pluginsMain]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let sharePlugins = FullDepEntry (" ensureDir \$out/share/compiz-plugins @@ -22,7 +23,7 @@ in stdenv.mkDerivation rec { name = "compiz-fusion-plugins-extra-"+version; builder = writeScript (name + "-builder") - (textClosure [fixIncludes doConfigure doMakeInstall sharePlugins doForceShare]); + (textClosure localDefs [fixIncludes doConfigure doMakeInstall sharePlugins doForceShare]); meta = { description = " Extra Compiz Fusion plugins. diff --git a/pkgs/applications/window-managers/compiz-fusion/libcompizconfig/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/libcompizconfig/0.6.0.nix index 8b5d729dc2d..5602c657867 100644 --- a/pkgs/applications/window-managers/compiz-fusion/libcompizconfig/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/libcompizconfig/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0/libcompizconfig-0.6.0.tar.bz2; @@ -9,10 +9,11 @@ args : with args; [bcop]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "libcompizconfig-"+version; builder = writeScript (name + "-builder") - (textClosure [doAutotools doConfigure doMakeInstall doForceShare]); + (textClosure localDefs [doAutotools doConfigure doMakeInstall doForceShare]); meta = { description = " Compiz configuration backend library. diff --git a/pkgs/applications/window-managers/compiz-fusion/main/0.6.0.nix b/pkgs/applications/window-managers/compiz-fusion/main/0.6.0.nix index 40261da5cc4..deb4b2e3a57 100644 --- a/pkgs/applications/window-managers/compiz-fusion/main/0.6.0.nix +++ b/pkgs/applications/window-managers/compiz-fusion/main/0.6.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/0.6.0/compiz-fusion-plugins-main-0.6.0.tar.bz2; @@ -9,6 +9,7 @@ args : with args; [bcop libjpeg gettext]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let sharePlugins = FullDepEntry (" ensureDir \$out/share/compiz-plugins @@ -18,7 +19,7 @@ in stdenv.mkDerivation rec { name = "compiz-fusion-plugins-main-"+version; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall sharePlugins doForceShare]); + (textClosure localDefs [doConfigure doMakeInstall sharePlugins doForceShare]); meta = { description = " Main Compiz Fusion plugins. diff --git a/pkgs/applications/window-managers/compiz/0.6.2.nix b/pkgs/applications/window-managers/compiz/0.6.2.nix index 6eef24beb99..78369081bc9 100644 --- a/pkgs/applications/window-managers/compiz/0.6.2.nix +++ b/pkgs/applications/window-managers/compiz/0.6.2.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://releases.compiz-fusion.org/compiz/0.6.2/compiz-0.6.2.tar.bz2; @@ -22,6 +22,7 @@ args : with args; (if args ? extraConfigureFlags then args.extraConfigureFlags else []); patches = [ ./glx-patch-0.6.2.patch ]; } null; /* null is a terminator for sumArgs */ + in with localDefs; let postAll = FullDepEntry (" for i in $out/bin/*; do @@ -36,7 +37,7 @@ stdenv.mkDerivation rec { name = "compiz-0.6.2"; builder = writeScript (name + "-builder") - (textClosure [doPatch doConfigure doMakeInstall doPropagate + (textClosure localDefs [doPatch doConfigure doMakeInstall doPropagate doForceShare postAll]); inherit propagatedBuildInputs; meta = { diff --git a/pkgs/applications/window-managers/fbpanel/4.12.nix b/pkgs/applications/window-managers/fbpanel/4.12.nix index 4e08102af80..1958ffa642b 100644 --- a/pkgs/applications/window-managers/fbpanel/4.12.nix +++ b/pkgs/applications/window-managers/fbpanel/4.12.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://garr.dl.sourceforge.net/sourceforge/fbpanel/fbpanel-4.12.tgz; @@ -10,10 +10,11 @@ args : with args; libpng libjpeg libtiff librsvg]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "fbpanel"; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " Just a desktop panel. diff --git a/pkgs/applications/window-managers/xmonad/default.nix b/pkgs/applications/window-managers/xmonad/default.nix new file mode 100644 index 00000000000..ccd2dc05adb --- /dev/null +++ b/pkgs/applications/window-managers/xmonad/default.nix @@ -0,0 +1,42 @@ +{stdenv, fetchurl, ghc, X11, xmessage}: + +stdenv.mkDerivation (rec { + + pname = "xmonad"; + version = "0.5"; + + name = "${pname}-${version}"; + + src = fetchurl { + url = "http://hackage.haskell.org/packages/archive/${pname}/${version}/${name}.tar.gz"; + sha256 = "cfcc4501b000fa740ed35a5be87dc01216e036219551630dcf71d9c3cf57e4c4"; + }; + + buildInputs = [ghc X11]; + + meta = { + description = "xmonad is a tiling window manager for X"; + }; + + configurePhase = '' + sed -i 's|"xmessage"|"${xmessage}/bin/xmessage"|' XMonad/Core.hs + ghc --make Setup.lhs + ./Setup configure --prefix="$out" + ''; + + buildPhase = '' + ./Setup build + ''; + + installPhase = '' + ./Setup copy + ./Setup register --gen-script + mkdir $out/nix-support + sed -i 's/|.*\(ghc-pkg update\)/| \1/' register.sh + cp register.sh $out/nix-support/register-ghclib.sh + sed -i 's/\(ghc-pkg update\)/\1 --user/' register.sh + mkdir -p $out/bin + cp register.sh $out/bin/register-ghclib-${name}.sh + ''; + +}) diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix index 2fc8ce4eec2..52fc9dfa2c1 100644 --- a/pkgs/build-support/fetchurl/mirrors.nix +++ b/pkgs/build-support/fetchurl/mirrors.nix @@ -42,4 +42,10 @@ rec { ftp://ftp.heanet.ie/mirrors/ftp.kde.org/ ftp://ftp.kde.org/pub/kde/ ]; + + # Gentoo files. + gentoo = [ + http://www.ibiblio.org/pub/Linux/distributions/gentoo/ + http://distfiles.gentoo.org/ + ]; } diff --git a/pkgs/build-support/make-wrapper/make-wrapper.sh b/pkgs/build-support/make-wrapper/make-wrapper.sh index 847db8910fd..558ff94c1a0 100644 --- a/pkgs/build-support/make-wrapper/make-wrapper.sh +++ b/pkgs/build-support/make-wrapper/make-wrapper.sh @@ -1,6 +1,7 @@ makeWrapper() { - original=$1 - wrapper=$2 + local original=$1 + local wrapper=$2 + local params varName value command separator n fileNames ensureDir "$(dirname $wrapper)" @@ -17,6 +18,12 @@ makeWrapper() { echo "export $varName=$value" >> $wrapper fi + if test "$p" = "--run"; then + command=${params[$((n + 1))]} + n=$((n + 1)) + echo "$command" >> $wrapper + fi + if test "$p" = "--suffix" -o "$p" = "--prefix"; then varName=${params[$((n + 1))]} separator=${params[$((n + 2))]} @@ -72,3 +79,11 @@ filterExisting() { fi done } + +# Syntax: wrapProgram +wrapProgram() { + local prog="$1" + local hidden="$(dirname "$prog")/.wrapped-$(basename "$prog")" + mv $prog $hidden + makeWrapper $hidden $prog "$@" +} diff --git a/pkgs/data/fonts/fontWrap/default.nix b/pkgs/data/fonts/fontWrap/default.nix index ef370be8e35..8bc120c686a 100644 --- a/pkgs/data/fonts/fontWrap/default.nix +++ b/pkgs/data/fonts/fontWrap/default.nix @@ -1,9 +1,10 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src =""; /* put a fetchurl here */ buildInputs = [mkfontdir mkfontscale]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let doInstall = FullDepEntry (" ensureDir \$out/share/fonts/ @@ -18,10 +19,10 @@ in stdenv.mkDerivation rec { name = "wrapped-font-dir"; builder = writeScript (name + "-builder") - (textClosure [ doInstall doForceShare doPropagate]); + (textClosure localDefs [ doInstall doForceShare doPropagate]); meta = { description = " - Just a wrapper to create fots.dir and fonts.scale . + Just a wrapper to create fonts.dir and fonts.scale . "; }; } diff --git a/pkgs/development/compilers/ghcs/default.nix b/pkgs/development/compilers/ghcs/default.nix index c026a860d40..b4e14c9921d 100644 --- a/pkgs/development/compilers/ghcs/default.nix +++ b/pkgs/development/compilers/ghcs/default.nix @@ -47,7 +47,7 @@ rec { # using undocumented feature that attribute can contain hyphens when using listToAttrs # You should be able to get the attribute values using __getAttr - result = builtins.listToAttrs (map ( l : lib.av l.name ( + result = builtins.listToAttrs (map ( l : lib.nv l.name ( packageByPackageDB ghc l.name ("lib/ghc-${ghc.version}/${l.name}.conf") (map (n: builtins.getAttr n result) l.deps) @@ -80,6 +80,7 @@ +" --prefix=\$out " +" --with-ghc=\$ghcboot/bin/ghc" +" --with-gmp-libraries=$gmp/lib" + +" --with-gmp-includes=${gmp}/include" +" --with-readline-libraries=\"$readline/lib\""; # now read the main package.conf and create a single package db file for each of them @@ -107,26 +108,26 @@ # Why this effort? If you want to use pretty-0.9 you can do this now without cabal choosing the 1.0 version hassle core_libs = resolveDeps ghc - [ { name = "Cabal-1.2.0"; deps = ["base-2.1" "pretty-1.0" "old-locale-1.0" "old-time-1.0" "directory-1.0" "unix-2.0" "process-1.0" "array-0.1" "containers-0.1" "rts-1.0" "filepath-1.0"];} # - { name = "array-0.1"; deps = ["base-2.1"];} - { name = "base-2.1"; deps = [];} # - { name = "bytestring-0.9"; deps = [ "base-2.1" "array-0.1" ];} - { name = "containers-0.1"; deps = [ "base-2.1" "array-0.1" ];} - { name = "directory-1.0"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0" "filepath-1.0"];} - { name = "filepath-1.0"; deps = [ "base-2.1" ];} # - { name = "ghc-6.8.0.20071004"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0" "filepath-1.0" "directory-1.0" "array-0.1" "containers-0.1" "hpc-0.5" "bytestring-0.9" "pretty-1.0" "packedstring-0.1" "template-haskell-0.1" "unix-2.0" "process-1.0" "readline-1.0" "Cabal-1.2.0" "random-1.0" "haskell98-1.0"];} - { name = "haskell98-1.0"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0" "filepath-1.0" "directory-1.0" "random-1.0" "unix-2.0" "process-1.0" "array-0.1"];} - { name = "hpc-0.5"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0" "filepath-1.0" "directory-1.0" "array-0.1" "containers-0.1"]; } - { name = "old-locale-1.0"; deps = [ "base-2.1"];} - { name = "old-time-1.0"; deps = [ "base-2.1" "old-locale-1.0" ];} - { name = "packedstring-0.1"; deps = [ "base-2.1" "array-0.1" ];} - { name = "pretty-1.0"; deps = [ "base-2.1" ];} - { name = "process-1.0"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0" "filepath-1.0" "directory-1.0" "unix-2.0"];} - { name = "random-1.0"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0"];} - { name = "readline-1.0"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0" "filepath-1.0" "directory-1.0" "unix-2.0" "process-1.0" ];} - { name = "rts-1.0"; deps = [ "base-2.1" ];} # - { name = "template-haskell-0.1"; deps = [ "base-2.1" "pretty-1.0" "array-0.1" "packedstring-0.1" "containers-0.1" ];} - { name = "unix-2.0"; deps = [ "base-2.1" "old-locale-1.0" "old-time-1.0" "filepath-1.0" "directory-1.0" ];} + [ { name = "Cabal-1.2.3.0"; deps = ["base-3.0.1.0" "pretty-1.0.0.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "directory-1.0.0.0" "unix-2.3.0.0" "process-1.0.0.0" "array-0.1.0.0" "containers-0.1.0.1" "rts-1.0" "filepath-1.1.0.0"];} # + { name = "array-0.1.0.0"; deps = ["base-3.0.1.0"];} + { name = "base-3.0.1.0"; deps = [];} # + { name = "bytestring-0.9.0.1"; deps = [ "base-3.0.1.0" "array-0.1.0.0" ];} + { name = "containers-0.1.0.1"; deps = [ "base-3.0.1.0" "array-0.1.0.0" ];} + { name = "directory-1.0.0.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0"];} + { name = "filepath-1.1.0.0"; deps = [ "base-3.0.1.0" ];} # + { name = "ghc-${version}"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0" "directory-1.0.0.0" "array-0.1.0.0" "containers-0.1.0.1" "hpc-0.5.0.0" "bytestring-0.9.0.1" "pretty-1.0.0.0" "packedstring-0.1.0.0" "template-haskell-2.2.0.0" "unix-2.3.0.0" "process-1.0.0.0" "readline-1.0.1.0" "Cabal-1.2.3.0" "random-1.0.0.0" "haskell98-1.0.1.0"];} + { name = "haskell98-1.0.1.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0" "directory-1.0.0.0" "random-1.0.0.0" "unix-2.3.0.0" "process-1.0.0.0" "array-0.1.0.0"];} + { name = "hpc-0.5.0.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0" "directory-1.0.0.0" "array-0.1.0.0" "containers-0.1.0.1"]; } + { name = "old-locale-1.0.0.0"; deps = [ "base-3.0.1.0"];} + { name = "old-time-1.0.0.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" ];} + { name = "packedstring-0.1.0.0"; deps = [ "base-3.0.1.0" "array-0.1.0.0" ];} + { name = "pretty-1.0.0.0"; deps = [ "base-3.0.1.0" ];} + { name = "process-1.0.0.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0" "directory-1.0.0.0" "unix-2.3.0.0"];} + { name = "random-1.0.0.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0"];} + { name = "readline-1.0.1.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0" "directory-1.0.0.0" "unix-2.3.0.0" "process-1.0.0.0" ];} + { name = "rts-1.0"; deps = [ "base-3.0.1.0" ];} # + { name = "template-haskell-2.2.0.0"; deps = [ "base-3.0.1.0" "pretty-1.0.0.0" "array-0.1.0.0" "packedstring-0.1.0.0" "containers-0.1.0.1" ];} + { name = "unix-2.3.0.0"; deps = [ "base-3.0.1.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0" "directory-1.0.0.0" ];} ]; @@ -137,18 +138,20 @@ } ); - ghc68 = ghcAndLibraries { - version = "6.8.0.20071004"; + ghc68 = ghcAndLibraries rec { + version = "6.8.2"; src = fetchurl { - url = http://www.haskell.org/ghc/dist/stable/dist/ghc-6.8.0.20071004-src.tar.bz2; - sha256 = "1yyl7sxykmvkiwfxkfzpqa6cmgw19phkyjcdv99ml22j16wli63l"; + #url = http://www.haskell.org/ghc/dist/stable/dist/ghc-6.8.0.20071004-src.tar.bz2; + #sha256 = "1yyl7sxykmvkiwfxkfzpqa6cmgw19phkyjcdv99ml22j16wli63l"; + url = "http://www.haskell.org/ghc/dist/stable/dist/ghc-${version}-src.tar.bz2"; + md5 = "745c6b7d4370610244419cbfec4b2f84"; #url = http://www.haskell.org/ghc/dist/stable/dist/ghc-6.8.20070912-src.tar.bz2; #sha256 = "1b1gvi7hc7sc0fkh29qvzzd5lgnlvdv3ayiak4mkfnzkahvmq85s"; }; extra_src = fetchurl { - url = http://www.haskell.org/ghc/dist/stable/dist/ghc-6.8.0.20071004-src-extralibs.tar.bz2; - sha256 = "0vjx4vb2xhv5v2wj74ii3gpjim7x9wj0m87zglqlhc8xn31pmrd2"; + url = "http://www.haskell.org/ghc/dist/stable/dist/ghc-${version}-src-extralibs.tar.bz2"; + sha256 = "044mpbzpkbxcnqhjnrnmjs00mr85057d123rrlz2vch795lxbkcn"; #url = http://www.haskell.org/ghc/dist/stable/dist/ghc-6.8.20070912-src-extralibs.tar.bz2; #sha256 = "0py7d9nh3lkhjxr3yb3n9345d0hmzq79bi40al5rcr3sb84rnp9r"; }; @@ -165,4 +168,3 @@ }; } - diff --git a/pkgs/development/compilers/jdk/builder.sh b/pkgs/development/compilers/jdk/builder.sh index 1b61d548c1b..71dd6c433f6 100644 --- a/pkgs/development/compilers/jdk/builder.sh +++ b/pkgs/development/compilers/jdk/builder.sh @@ -1,3 +1,4 @@ +buildInputs="$unzip" source $stdenv/setup src=$filename.bin diff --git a/pkgs/development/compilers/jdk/default-5.nix b/pkgs/development/compilers/jdk/default-5.nix new file mode 100644 index 00000000000..1cb83ca5ddc --- /dev/null +++ b/pkgs/development/compilers/jdk/default-5.nix @@ -0,0 +1,9 @@ +{stdenv, fetchurl, unzip}: + +if stdenv.system == "i686-linux" + then + (import ./jdk5-sun-linux.nix) { + inherit stdenv fetchurl unzip; + } + else + abort "the Java 5 SDK is not supported on this platform" diff --git a/pkgs/development/compilers/jdk/jdk5-sun-linux.nix b/pkgs/development/compilers/jdk/jdk5-sun-linux.nix new file mode 100644 index 00000000000..479a5a456af --- /dev/null +++ b/pkgs/development/compilers/jdk/jdk5-sun-linux.nix @@ -0,0 +1,23 @@ +/** + * This Nix expression requires the user to download the j2sdk + * distribution to /tmp. Please obtain jdk-1_5_0_14-linux-i586.bin + * from java.sun.com by hand and place it in /tmp. Blame Sun, not me. + * + * Note that this is not necessary if someone has already pushed a + * binary. + */ +{stdenv, fetchurl, unzip}: + +assert stdenv.system == "i686-linux"; + +stdenv.mkDerivation { + name = "jdk-1.5.0_14"; + filename = "jdk-1_5_0_14"; + dirname = "jdk1.5.0_14"; + builder = ./builder.sh; + pathname = "/tmp/jdk-1_5_0_14-linux-i586.bin"; + md5 = "32df8f2be09c3a0f39da1b3869164b55"; + stdenv = stdenv; + + inherit unzip; +} diff --git a/pkgs/development/compilers/qi/9.1.nix b/pkgs/development/compilers/qi/9.1.nix index 661bb85e798..3a1a4f37886 100644 --- a/pkgs/development/compilers/qi/9.1.nix +++ b/pkgs/development/compilers/qi/9.1.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://www.lambdassociates.org/Download/Qi9.1.zip; @@ -8,6 +8,7 @@ args : with args; buildInputs = [ unzip clisp]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let shell=stdenv.shell; in @@ -28,7 +29,7 @@ in stdenv.mkDerivation rec { name = "Qi-"+version; builder = writeScript (name + "-builder") - (textClosure [allBuild doForceShare doPropagate]); + (textClosure localDefs [allBuild doForceShare doPropagate]); meta = { description = " Qi - next generation on top of Common Lisp. diff --git a/pkgs/development/interpreters/erlang/builder.sh b/pkgs/development/interpreters/erlang/builder.sh new file mode 100644 index 00000000000..43c964d88b8 --- /dev/null +++ b/pkgs/development/interpreters/erlang/builder.sh @@ -0,0 +1,14 @@ +buildInputs="$perl $gnum4 $ncurses $openssl" + +source $stdenv/setup + +tar xfvz $src +cd otp_src_* + +# Fix some hard coded paths to /bin/rm +sed -i -e "s|/bin/rm|rm|" lib/odbc/configure +sed -i -e "s|/bin/rm|rm|" erts/configure + +./configure --prefix=$out --with-ssl=$openssl +make +make install diff --git a/pkgs/development/interpreters/erlang/default.nix b/pkgs/development/interpreters/erlang/default.nix new file mode 100644 index 00000000000..f8caed7f329 --- /dev/null +++ b/pkgs/development/interpreters/erlang/default.nix @@ -0,0 +1,11 @@ +{stdenv, fetchurl, perl, ncurses, gnum4, openssl}: + +stdenv.mkDerivation { + name = "erlang-R11B-5"; + builder = ./builder.sh; + src = fetchurl { + url = http://www.erlang.org/download/otp_src_R11B-5.tar.gz; + md5 = "96acec41da87d6ee0ef18e1aab36ffdd"; + }; + inherit perl ncurses gnum4 openssl; +} diff --git a/pkgs/development/interpreters/pyrex/0.9.6.nix b/pkgs/development/interpreters/pyrex/0.9.6.nix index 7053f949a43..1b11e8efe36 100644 --- a/pkgs/development/interpreters/pyrex/0.9.6.nix +++ b/pkgs/development/interpreters/pyrex/0.9.6.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/oldtar/Pyrex-0.9.6.tar.gz; @@ -8,10 +8,11 @@ args : with args; buildInputs = [python]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "Pyrex-"+version; builder = writeScript (name + "-builder") - (textClosure [installPythonPackage doForceShare]); + (textClosure localDefs [installPythonPackage doForceShare]); meta = { description = " Python package compiler or something like that. diff --git a/pkgs/development/libraries/fftw/default.nix b/pkgs/development/libraries/fftw/default.nix index 3f712544303..3f5d13b09fb 100644 --- a/pkgs/development/libraries/fftw/default.nix +++ b/pkgs/development/libraries/fftw/default.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = fetchurl { url = ftp://ftp.fftw.org/pub/fftw/fftw-3.1.2.tar.gz; @@ -8,10 +8,11 @@ args : with args; buildInputs = []; configureFlags = ["--enable-float --enable-shared"]; } null; + in with localDefs; stdenv.mkDerivation { name = "fftw-3.1.2"; builder = writeScript "fftw-3.1.2-builder" - (textClosure [doConfigure doMakeInstall doForceShare]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare]); meta = { description = " Fastest Fourier Transform in the West library. diff --git a/pkgs/development/libraries/glew/default.nix b/pkgs/development/libraries/glew/default.nix new file mode 100644 index 00000000000..2af500b3db6 --- /dev/null +++ b/pkgs/development/libraries/glew/default.nix @@ -0,0 +1,19 @@ +args: +args.stdenv.mkDerivation { + name = "glew-1.5.0"; + + src = args.fetchurl { + url = http://dfn.dl.sourceforge.net/sourceforge/glew/glew-1.5.0-src.tgz; + sha256 = "1kjr1fchnl785wsg11vzc03q3pm12lh20n1i593zr1xqfjgx2b4h"; + }; + + buildInputs =(with args; [mesa x11 libXmu libXi]); + + meta = { + description = "cross-platform open-source C/C++ extension loading library"; + homepage = http://glew.sourceforge.net/; + license = ["BSD" "GLX" "SGI-B" "GPL2"]; # License description copied from gentoo-1.4.0 + }; + + installPhase="GLEW_DEST=\$out make install"; +} diff --git a/pkgs/development/libraries/haskell/Crypto/default.nix b/pkgs/development/libraries/haskell/Crypto/default.nix new file mode 100644 index 00000000000..9cb465e50b3 --- /dev/null +++ b/pkgs/development/libraries/haskell/Crypto/default.nix @@ -0,0 +1,11 @@ +{cabal}: + +cabal.mkDerivation (self : { + pname = "Crypto"; + version = "4.1.0"; + sha256 = "0984c833c5dfa6f4d56fd6fb284db7b7cef6676dc7999a1436aa856becba2b8f"; + meta = { + description = "Several encryption algorithms for Haskell"; + }; +}) + diff --git a/pkgs/development/libraries/haskell/X11/default.nix b/pkgs/development/libraries/haskell/X11/default.nix new file mode 100644 index 00000000000..39fb5628467 --- /dev/null +++ b/pkgs/development/libraries/haskell/X11/default.nix @@ -0,0 +1,13 @@ +{cabal, libX11, xineramaSupport ? true, libXinerama ? null, libXext ? null}: + +assert xineramaSupport -> (libXinerama != null && libXext != null); + +cabal.mkDerivation (self : { + pname = "X11"; + version = "1.4.1"; + sha256 = "e51038541415686f0e278ccdbc0b2373cd11f212de99023b7b8f8e776aa09f79"; + propagatedBuildInputs = [libX11] ++ (if xineramaSupport then [libXinerama libXext] else []); + meta = { + description = "A Haskell binding to the X11 graphics library"; + }; +}) diff --git a/pkgs/development/libraries/haskell/binary/default.nix b/pkgs/development/libraries/haskell/binary/default.nix new file mode 100644 index 00000000000..081779fd312 --- /dev/null +++ b/pkgs/development/libraries/haskell/binary/default.nix @@ -0,0 +1,11 @@ +{cabal}: + +cabal.mkDerivation (self : { + pname = "binary"; + version = "0.4.1"; + sha256 = "bb74824306843da25f6d97c271e2a06ee3a7e05fc529156fb81d7c576688e549"; + meta = { + description = "Efficient, pure binary serialisation using lazy ByteStrings"; + }; +}) + diff --git a/pkgs/development/libraries/haskell/cabal/cabal.nix b/pkgs/development/libraries/haskell/cabal/cabal.nix new file mode 100644 index 00000000000..1e08a819c0e --- /dev/null +++ b/pkgs/development/libraries/haskell/cabal/cabal.nix @@ -0,0 +1,95 @@ +# generic builder for Cabal packages + +attrs : +{ + mkDerivation = + transform : + let dtransform = + self : { + + # pname should be defined by the client to be the package basename + # version should be defined by the client to be the package version + + # fname is the internal full name of the package + fname = "${self.pname}-${self.version}"; + + # name is the external full name of the package; usually we prefix + # all packages with haskell- to avoid name clashes for libraries; + # if that is not desired (for applications), name can be set to + # fname. + name = "haskell-${self.fname}"; + + # the default download location for Cabal packages is Hackage, + # you still have to specify the checksum + src = attrs.fetchurl { + url = "http://hackage.haskell.org/packages/archive/${self.pname}/${self.version}/${self.fname}.tar.gz"; + inherit (self) sha256; + }; + + # default buildInputs are just ghc, if more buildInputs are required + # buildInputs can be extended by the client by using extraBuildInputs, + # but often propagatedBuildInputs is preferable anyway + buildInputs = [attrs.ghc] ++ self.extraBuildInputs; + extraBuildInputs = []; + + # we make sure that propagatedBuildInputs is defined, so that we don't + # have to check for its existence + propagatedBuildInputs = []; + + # library directories that have to be added to the Cabal files + extraLibDirs = map (x : x + "/lib") self.propagatedBuildInputs; + + # file(s) that have to be patched with information about extra libraries; + # can be redefined to the empty list by the client if this is not desired + patchLibFiles = [ "${self.pname}.cabal" ]; + + # patches files, compiles Setup, and configures + configurePhase = '' + eval "$preConfigure" + + for i in ${toString self.patchLibFiles}; do + echo "patching $i" + test -f $i && sed -i '/extra-libraries/ { s|\( *\)extra-libraries.*|&\n\1extra-lib-dirs: ${toString self.extraLibDirs}| }' $i + done + for i in Setup.hs Setup.lhs; do + test -f $i && ghc --make $i + done + ./Setup configure --verbose --prefix="$out" + + eval "$postConfigure" + ''; + + # builds via Cabal + buildPhase = '' + eval "$preBuild" + + ./Setup build + + eval "$postBuild" + ''; + + # installs via Cabal; creates a registration file for nix-support + # so that the package can be used in other Haskell-builds; also + # creates a register-${name}.sh in userspace that can be used to + # register the library in a user environment (but this scheme + # should sooner or later be deprecated in favour of using a + # ghc-wrapper). + installPhase = '' + eval "$preInstall" + + ./Setup copy + ./Setup register --gen-script + mkdir -p $out/nix-support + if test -f register.sh; then + sed -i 's/|.*\(ghc-pkg update\)/| \1/' register.sh + cp register.sh $out/nix-support/register-ghclib.sh + sed -i 's/\(ghc-pkg update\)/\1 --user/' register.sh + mkdir -p $out/bin + cp register.sh $out/bin/register-${self.name}.sh + fi + + eval "$postInstall" + ''; + }; + in attrs.stdenv.mkDerivation ((rec { f = dtransform f // transform f; }).f); +} diff --git a/pkgs/development/libraries/haskell/pcre-light/default.nix b/pkgs/development/libraries/haskell/pcre-light/default.nix new file mode 100644 index 00000000000..1542bb7968a --- /dev/null +++ b/pkgs/development/libraries/haskell/pcre-light/default.nix @@ -0,0 +1,12 @@ +{cabal, pcre}: + +cabal.mkDerivation (self : { + pname = "pcre-light"; + version = "0.3"; + sha256 = "a8cfec1c265530388efbb187426368e280331d9829fa93d8f49f16db3c3e7794"; + propagatedBuildInputs = [pcre]; + meta = { + description = "A small, efficient and portable regex library for Perl 5 compatible regular expressions"; + }; +}) + diff --git a/pkgs/development/libraries/haskell/uulib-ghc-6.6/builder.sh b/pkgs/development/libraries/haskell/uulib-ghc-6.6/builder.sh deleted file mode 100644 index bbe21eac49e..00000000000 --- a/pkgs/development/libraries/haskell/uulib-ghc-6.6/builder.sh +++ /dev/null @@ -1,21 +0,0 @@ -source $stdenv/setup - - -tar xzf "$src" && -cd uulib-* && - - -autoconf && -./configure --prefix=$out && - - -ghc --make Setup.hs -o setup -package Cabal && -./setup configure --prefix=$out --with-hc-pkg=ghc-pkg && - - -./setup build && -./setup install && -./setup register --gen-script && - -mkdir -p $out/nix-support/ && -cp register.sh $out/nix-support/register-ghclib.sh diff --git a/pkgs/development/libraries/haskell/uulib-ghc-6.6/default.nix b/pkgs/development/libraries/haskell/uulib-ghc-6.6/default.nix deleted file mode 100644 index 1c315b1cffa..00000000000 --- a/pkgs/development/libraries/haskell/uulib-ghc-6.6/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{stdenv, fetchurl, autoconf, ghc}: - -stdenv.mkDerivation -{ - name = "uulib-0.9.2-ghc-6.6"; - src = fetchurl { url = http://www.cs.uu.nl/~ariem/uulib-2006-10-30-src.tar.gz; - md5 = "d26059447d45fa91f54eca38680be7b7"; - }; - builder = ./builder.sh; - buildInputs = [ autoconf ghc ]; -} diff --git a/pkgs/development/libraries/haskell/uulib/builder.sh b/pkgs/development/libraries/haskell/uulib/builder.sh deleted file mode 100644 index bdb0e81430e..00000000000 --- a/pkgs/development/libraries/haskell/uulib/builder.sh +++ /dev/null @@ -1,51 +0,0 @@ -source $stdenv/setup - - -export HOME=$(pwd)/fake-home - - -#add ghc to search path -test -n "$ghc" && PATH=$PATH:$ghc/bin - -#unpack -tar xzf "$src" && -cd uulib-* && - -#configure -ghc --make Setup.hs -o setup -package Cabal && -./setup configure --prefix=$out && - -#make -./setup build && - -#install -./setup copy && - -# Create package database. If we can find the ghc version we might install the -# package, like ghc does, in $out/lib/ghc-version/package.conf. - -support=$out/nix-support && -packages_db=$out/nix-support/package.conf && - -mkdir $support && -cp $ghc/lib/ghc-*/package.conf $packages_db && -chmod +w $packages_db && -#echo '[]' > $packages_db && - -# We save a modified version of a register script. This gives a dependency on -# ghc, but this should not be a problem as long as $out is a static library. - -./setup register --gen-script && -sed '/ghc-pkg/ s|update -|-f "$1" update -|' register.sh > register-pkg.sh && -sed '/ghc-pkg/ s|--auto-ghci-libs||' register-pkg.sh > $support/register.sh && - -# The package and its direct cabal dependencies are registered. This may result -# in duplicate registrations attempts but hopefully that will not result in -# errors. - -# uulib has no dependencies on other ghc libraries -for dep in ; do - sh $dep/nix-support/register.sh $packages_db || exit 1 -done && -sh register-pkg.sh $packages_db && -rm -f $package_db.old diff --git a/pkgs/development/libraries/haskell/uulib/default.nix b/pkgs/development/libraries/haskell/uulib/default.nix index c8bcf25dcc4..0e5e517d7c5 100644 --- a/pkgs/development/libraries/haskell/uulib/default.nix +++ b/pkgs/development/libraries/haskell/uulib/default.nix @@ -1,12 +1,10 @@ -{stdenv, fetchurl, ghc}: +{cabal}: -stdenv.mkDerivation { - name = "uulib-0.9.2"; - src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/uulib-0.9.2-src.tar.gz; - md5 = "0cc9acc6a268e2bc5c8a954e67406e2d"; +cabal.mkDerivation (self : { + pname = "uulib"; + version = "0.9.5"; + sha256 = "38415725133af464de582dadc7d7e60b1aeb96344b18b239d176bf2181f98563"; + meta = { + description = "Fast Parser Combinators and Pretty Printing Combinators"; }; - builder = ./builder.sh; - #buildInputs = [ ghc ]; - inherit ghc; -} +}) diff --git a/pkgs/development/libraries/haskell/vty/default.nix b/pkgs/development/libraries/haskell/vty/default.nix new file mode 100644 index 00000000000..930e19ae89c --- /dev/null +++ b/pkgs/development/libraries/haskell/vty/default.nix @@ -0,0 +1,13 @@ +{cabal}: + +cabal.mkDerivation (self : { + pname = "vty"; + version = "3.0.0"; + sha256 = "44ae53d06b8b45c14cd3861e860a38730ed9995ed56b1b3d9aba6641771f1947"; + meta = { + description = "vty is a *very* simplistic library in the niche of ncurses"; + }; + preConfigure = '' + sed -i 's|^Build-Depends:.*$|&, bytestring, containers|' ${self.pname}.cabal + ''; +}) diff --git a/pkgs/development/libraries/haskell/zlib/default.nix b/pkgs/development/libraries/haskell/zlib/default.nix new file mode 100644 index 00000000000..268a43b5ea3 --- /dev/null +++ b/pkgs/development/libraries/haskell/zlib/default.nix @@ -0,0 +1,11 @@ +{cabal, zlib}: + +cabal.mkDerivation (self : { + pname = "zlib"; + version = "0.4.0.2"; + sha256 = "e6e9e51ca5b7f1685eb031f826f7865acc10cc2c8d0dfad975e0e81fd17f17ed"; + propagatedBuildInputs = [zlib]; + meta = { + description = "Compression and decompression in the gzip and zlib formats"; + }; +}) diff --git a/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix b/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix index be0db328ef9..8c3975c8da2 100644 --- a/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix +++ b/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = mirror://sourceforge/libdbi-drivers/libdbi-drivers-0.8.2-1.tar.gz; @@ -27,10 +27,11 @@ args : with args; ] else []) ; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "libdbi"+version; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " DB independent interface to DB; DB drivers (mysql only for now). diff --git a/pkgs/development/libraries/libdbi/0.8.2.nix b/pkgs/development/libraries/libdbi/0.8.2.nix index e7dc24417f2..e80c0196650 100644 --- a/pkgs/development/libraries/libdbi/0.8.2.nix +++ b/pkgs/development/libraries/libdbi/0.8.2.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = mirror://sourceforge/libdbi/libdbi-0.8.2.tar.gz; @@ -9,10 +9,11 @@ args : with args; buildInputs = []; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "libdbi"+version; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " DB independent interface to DB. diff --git a/pkgs/development/libraries/libextractor/0.5.18.nix b/pkgs/development/libraries/libextractor/0.5.18.nix index 3f8304d7304..6fc5e852448 100644 --- a/pkgs/development/libraries/libextractor/0.5.18.nix +++ b/pkgs/development/libraries/libextractor/0.5.18.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://gnunet.org/libextractor/download/libextractor-0.5.18.tar.gz; @@ -9,10 +9,11 @@ args : with args; buildInputs = [ zlib]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "libextractor"+version; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " Libextractor - extracts metadata from files. diff --git a/pkgs/development/python-modules/ZopeInterface/default.nix b/pkgs/development/python-modules/ZopeInterface/default.nix index 0fe40954115..6bcedcd0f17 100644 --- a/pkgs/development/python-modules/ZopeInterface/default.nix +++ b/pkgs/development/python-modules/ZopeInterface/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, python}: stdenv.mkDerivation { - name = "ZopeInterface-3.1.0c1"; + name = "ZopeInterface-3.3.0"; src = fetchurl { - url = http://www.zope.org/Products/ZopeInterface/3.1.0c1/ZopeInterface-3.1.0c1.tgz; - md5 = "f34cb95f2fbdbe3f1850c95cefddbd2c"; + url = http://www.zope.org/Products/ZopeInterface/3.3.0/zope.interface-3.3.0.tar.gz; + sha256 = "0xahg9cmagn4j3dbifvgzbjliw2jdrbf27fhqwkdp8j80xpyyjf0"; }; buildInputs = [python]; buildPhase = "true"; diff --git a/pkgs/development/python-modules/twisted/default.nix b/pkgs/development/python-modules/twisted/default.nix index 37a42faf856..7fdf610d74c 100644 --- a/pkgs/development/python-modules/twisted/default.nix +++ b/pkgs/development/python-modules/twisted/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, python, ZopeInterface}: stdenv.mkDerivation { - name = "twisted-2.4.0"; + name = "twisted-2.5.0"; src = fetchurl { - url = http://tmrc.mit.edu/mirror/twisted/Twisted/2.4/Twisted-2.4.0.tar.bz2; - md5 = "42eb0c8fd0f8707a39fff1dd6adab27d"; + url = http://tmrc.mit.edu/mirror/twisted/Twisted/2.5/Twisted-2.5.0.tar.bz2; + sha256 = "1kfj4354lm4kphm317giyldykyd17lba2xd7y512lxc38hzxzcpk"; }; buildInputs = [python]; propagatedBuildInputs = [ZopeInterface]; diff --git a/pkgs/development/tools/documentation/haddock/default.nix b/pkgs/development/tools/documentation/haddock/default.nix new file mode 100644 index 00000000000..86d07b240a5 --- /dev/null +++ b/pkgs/development/tools/documentation/haddock/default.nix @@ -0,0 +1,11 @@ +{cabal}: + +cabal.mkDerivation (self : { + pname = "haddock"; + version = "2.0.0.0"; + name = self.fname; + sha256 = "a2ea5bdc127bc8b189a8d869f582ec774fea0933e7f5ca89549a6c142b9993df"; + meta = { + description = "a tool for automatically generating documentation from annotated Haskell source code"; + }; +}) diff --git a/pkgs/development/tools/haskell/uuagc/default.nix b/pkgs/development/tools/haskell/uuagc/default.nix index 519244ae7b8..b45db5f2ea6 100644 --- a/pkgs/development/tools/haskell/uuagc/default.nix +++ b/pkgs/development/tools/haskell/uuagc/default.nix @@ -1,14 +1,12 @@ -{stdenv, fetchurl, ghc, uulib}: +{cabal, uulib}: -stdenv.mkDerivation -{ - name = "uuagc-0.9.2"; - - src = fetchurl { url = http://www.cs.uu.nl/~ariem/uuagc-0.9.2-src.tar.gz; - md5 = "cbac92287c9c0a858ccbfa37615d9f5f"; - }; - - buildInputs = [ghc uulib]; - - meta = { description = "The UUAG Compiler"; }; -} +cabal.mkDerivation (self : { + pname = "uuagc"; + version = "0.9.5"; + name = self.fname; + sha256 = "c5be435efa609f72c09e175dd5cf7835a060bd7eaf6634ec4cde72ea84b99f25"; + extraBuildInputs = [uulib]; + meta = { + description = "Attribute Grammar System of Universiteit Utrecht"; + }; +}) diff --git a/pkgs/development/tools/misc/indent/2.2.9.nix b/pkgs/development/tools/misc/indent/2.2.9.nix index d7e91abcf83..5e92802beed 100644 --- a/pkgs/development/tools/misc/indent/2.2.9.nix +++ b/pkgs/development/tools/misc/indent/2.2.9.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = ftp://ftp.gnu.org/gnu/indent/indent-2.2.9.tar.gz; @@ -9,6 +9,7 @@ args : with args; buildInputs = []; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let preBuild = FullDepEntry (" sed -e '/extern FILE [*]output/i#ifndef OUTPUT_DEFINED_ELSEWHERE' -i src/indent.h @@ -19,7 +20,7 @@ in stdenv.mkDerivation rec { name = "indent"; builder = writeScript (name + "-builder") - (textClosure [doConfigure preBuild doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure preBuild doMakeInstall doForceShare doPropagate]); meta = { description = " GNU Indent - a source text formatter. diff --git a/pkgs/development/tools/misc/intltool/0.36.2.nix b/pkgs/development/tools/misc/intltool/0.36.2.nix index d8315a9ba62..884c76a800c 100644 --- a/pkgs/development/tools/misc/intltool/0.36.2.nix +++ b/pkgs/development/tools/misc/intltool/0.36.2.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://ftp.gnome.org/pub/gnome/sources/intltool/0.36/intltool-0.36.2.tar.bz2; @@ -9,10 +9,11 @@ args : with args; propagatedBuildInputs = [perl perlXMLParser]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "intltool-0.36.2"; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doPropagate doForceShare]); + (textClosure localDefs [doConfigure doMakeInstall doPropagate doForceShare]); inherit propagatedBuildInputs; meta = { description = " diff --git a/pkgs/development/tools/misc/ltrace/default.nix b/pkgs/development/tools/misc/ltrace/default.nix index 23b44bf3b5b..cd77984ded6 100644 --- a/pkgs/development/tools/misc/ltrace/default.nix +++ b/pkgs/development/tools/misc/ltrace/default.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.5.orig.tar.gz; @@ -12,6 +12,7 @@ args : with args; cd ltrace-*; "; } null; /* null is a terminator for sumArgs */ + in with localDefs; let preConfigure = FullDepEntry (" sed -e 's@-o root -g root@@' -i Makefile.in; @@ -20,7 +21,7 @@ in stdenv.mkDerivation rec { name = "ltrace-0.5"; builder = writeScript (name + "-builder") - (textClosure [preConfigure doConfigure doMakeInstall doForceShare]); + (textClosure localDefs [preConfigure doConfigure doMakeInstall doForceShare]); meta = { description = " Library call tracer. diff --git a/pkgs/development/tools/parsing/alex/default.nix b/pkgs/development/tools/parsing/alex/default.nix index 00d414d56bd..273a25753e8 100644 --- a/pkgs/development/tools/parsing/alex/default.nix +++ b/pkgs/development/tools/parsing/alex/default.nix @@ -1,23 +1,12 @@ -{stdenv, fetchurl, ghc, perl}: +{cabal, perl}: -stdenv.mkDerivation { - name = "alex-2.1.0"; - src = fetchurl { - url = http://www.haskell.org/alex/dist/2.1.0/alex-2.1.0.tar.gz; - sha1 = "37599b7be5249d639b3a5a3fdc61907dc4dad660"; +cabal.mkDerivation (self : { + pname = "alex"; + version = "2.2"; + name = self.fname; + sha256 = "e958d4fc6cfdb1d351dc39a45ea882f23b1b1773a736d43814a52d4939a41ffe"; + extraBuildInputs = [perl]; + meta = { + description = "A lexical analyser generator for Haskell"; }; - buildInputs = [ghc perl]; - - configurePhase = " - ghc --make Setup.lhs - ./Setup configure --prefix=\"\${out}\" - "; - - buildPhase = " - ./Setup build - "; - - installPhase = " - ./Setup install - "; -} +}) diff --git a/pkgs/development/tools/parsing/happy/happy-1.17.nix b/pkgs/development/tools/parsing/happy/happy-1.17.nix new file mode 100644 index 00000000000..b7fa22ccb80 --- /dev/null +++ b/pkgs/development/tools/parsing/happy/happy-1.17.nix @@ -0,0 +1,12 @@ +{cabal, perl}: + +cabal.mkDerivation (self : { + + # requires cabal-1.2 (and therefore, in Nix, currently ghc-6.8) + + pname = "happy"; + version = "1.17"; + name = self.fname; + sha256 = "dca4e47d17e5d538335496236b3d2c3cbff644cf7380c987a4714e7784c70a2b"; + extraBuildInputs = [perl]; +}) diff --git a/pkgs/games/construo/0.2.2.nix b/pkgs/games/construo/0.2.2.nix index 964b0e3898e..555d2f4b30b 100644 --- a/pkgs/games/construo/0.2.2.nix +++ b/pkgs/games/construo/0.2.2.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://savannah.nongnu.org/download/construo/construo-0.2.2.tar.gz; @@ -11,6 +11,7 @@ args : with args; ; configureFlags = [""]; } null; /* null is a terminator for sumArgs */ + in with localDefs; let preConfigure = FullDepEntry (" sed -e 's/math[.]h/cmath/' -i vector.cxx @@ -20,7 +21,7 @@ in stdenv.mkDerivation rec { name = "construo-"+version; builder = writeScript (name + "-builder") - (textClosure [preConfigure doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [preConfigure doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " Construo masses and springs simulation. diff --git a/pkgs/games/fsg/alt-builder.nix b/pkgs/games/fsg/alt-builder.nix index 8efd788789b..4401bf8451a 100644 --- a/pkgs/games/fsg/alt-builder.nix +++ b/pkgs/games/fsg/alt-builder.nix @@ -1,13 +1,13 @@ args: with args; - with (builderDefs - { + let localDefs = builderDefs { buildInputs =[(wxGTK null)]; src = fetchurl { url = http://www.piettes.com/fallingsandgame/fsg-src-4.4.tar.gz; sha256 = "1756y01rkvd3f1pkj88jqh83fqcfl2fy0c48mcq53pjzln9ycv8c"; }; - } null); + } null; + in with localDefs; let preBuild = FullDepEntry " sed -e ' @@ -25,7 +25,7 @@ in stdenv.mkDerivation { name = "fsg-4.4"; builder = writeScript "fsg-4.4-builder" - (textClosure [doUnpack addInputs preBuild doMake installPhase doForceShare]); + (textClosure localDefs [doUnpack addInputs preBuild doMake installPhase doForceShare]); meta = { description = " diff --git a/pkgs/games/orbit/1.01.nix b/pkgs/games/orbit/1.01.nix new file mode 100644 index 00000000000..ba824e83f1c --- /dev/null +++ b/pkgs/games/orbit/1.01.nix @@ -0,0 +1,43 @@ +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs rec { + src = /* put a fetchurl here */ + fetchurl { + sha256 = "1kx69f9jqnfzwjh47cl1df8p8hn3bnp6bznxnb6c4wx32ijn5gri"; + url = http://ftp.de.debian.org/debian/pool/main/s/space-orbit/space-orbit_1.01.orig.tar.gz; + }; + + buildInputs = [mesa libXi libXt libXext libX11 libXmu freeglut esound]; + configureFlags = []; + debianPatch = + fetchurl { + url = http://ftp.de.debian.org/debian/pool/main/s/space-orbit/space-orbit_1.01-9.diff.gz; + sha256 = "1v3s97day6fhv08l2rn81waiprhi1lfyjjsj55axfh6n6zqfn1w2"; + }; + customBuild = FullDepEntry ('' + gunzip < ${debianPatch} | patch -Np1 + cd src + sed -e 's@/usr/share/games/orbit/@'$out'/dump/@g' -i *.c + sed -e '/DIR=/d' -i Makefile + make + ensureDir $out/bin + cp -r .. $out/dump + cat >$out/bin/space-orbit < = { buildInputs = ; pass = ; } + flagConfigWithOptionals = flagConfig // ( listToAttrs + (map ( o : nv o ( { buildInputs = o; pass = nvs o (builtins.getAttr o args); } + // getAttr [o] {} flagConfig ) + ) + passedOptionals ) ); + + in chooseOptionsByFlags2 flagConfigWithOptionals collectExtraPhaseActions args + ( (getAttr ["flags"] defaults args) ++ passedOptionals); + + chooseOptionsByFlags2 = flagConfig : collectExtraPhaseActions : args : flags : + let + # helper function + collectFlags = # state : flags : + fold ( flag : s : ( + if (hasAttr flag s.result) then s # this state has already been visited + else if (! hasAttr flag flagConfig) then throw "unkown flag `${flag}' specified" + else let fDesc = (builtins.getAttr flag flagConfig); + implied = flatten ( getAttr ["implies"] [] fDesc ); + blocked = flatten ( getAttr ["blocks"] [] fDesc ); + # add this flag + s2 = s // { result = ( setAttr s.result flag (builtins.getAttr flag flagConfig) ); + blockedFlagsBy = s.blockedFlagsBy + // listToAttrs (map (b: nv b flag ) blocked); }; + # add implied flags + in collectFlags s2 implied + )); + + # chosen contains flagConfig but only having those attributes elected by flags + # (or by implies attributes of elected attributes) + options = let stateOpts = collectFlags { blockedFlagsBy = {}; result = {}; } + (flags ++ ( if (hasAttr "mandatory" flagConfig) then ["mandatory"] else [] )); + # these options have not been chosen (neither by flags nor by implies) + unsetOptions = filter ( x : (! hasAttr x stateOpts.result) && (hasAttr ("no_"+x) flagConfig)) + ( attrNames flagConfig ); + # no add the corresponding no_ attributes as well .. + state = collectFlags stateOpts (map ( x : "no_" + x ) unsetOptions); + in # check for blockings: + assert ( all id ( map ( b: if (hasAttr b state.result) + then throw "flag ${b} is blocked by flag ${__getAttr b state.blockedFlagsBy}" + else true ) + (attrNames state.blockedFlagsBy) ) ); + state.result; + flatOptions = flattenAttrs options; + + # helper functions : + collectAttrs = attr : catAttrs attr flatOptions; + optsConcatStrs = delimiter : attrs : concatStrings + ( intersperse delimiter (flatten ( collectAttrs attrs ) ) ); + + ifStringGetArg = x : if (__isAttrs x) then x # ( TODO implement __isString ?) + else nvs x (__getAttr x args); + + in assert ( all id ( mapRecordFlatten ( attr : r : if ( all id ( flatten (getAttr ["assertion"] [] r ) ) ) + then true else throw "assertion failed flag ${attr}" ) + options) ); + ( rec { + + #foldOptions = attr: f : start: fold f start (catAttrs attr flatOptions); + + # compared to flags flagsSet does also contain the implied flags.. This makes it easy to write assertions. ( assert args. + inherit options flatOptions collectAttrs optsConcatStrs; + + buildInputs = map ( attr: if (! hasAttr attr args) then throw "argument ${attr} is missing!" else (builtins.getAttr attr args) ) + (flatten (catAttrs "buildInputs" flatOptions)); + propagatedBuildInputs = map ( attr: if (! hasAttr attr args) then throw "argument ${attr} is missing!" else (builtins.getAttr attr args) ) + (flatten (catAttrs "propagatedBuildInputs" flatOptions)); + + configureFlags = optsConcatStrs " " "cfgOption"; + + #flags = listToAttrs (map ( flag: nv flag (hasAttr flag options) ) (attrNames flagConfig) ); + flags_prefixed = listToAttrs (map ( flag: nv ("flag_set_"+flag) (hasAttr flag options) ) (attrNames flagConfig) ); + + pass = mergeAttrs ( map ifStringGetArg ( flatten (collectAttrs "pass") ) ); + } # now add additional phase actions (see examples) + // listToAttrs ( map ( x : nv x (optsConcatStrs "\n" x) ) collectExtraPhaseActions ) ); } + +/* + TODO: Perhaps it's better to move this documentation / these tests into some extra packages .. + + # ########################################################################### + # configuration tutorial .. examples and tests.. + # Copy this into all-packages.nix and try + + # The following derviations will all fail.. + # But they will print the passed options so that you can get to know + # how these configurations ought to work. + # TODO: There is no nice way to pass an otpion yet. + # I could imagine something like + # flags = [ "flagA" "flagB" { flagC = 4; } ]; + + # They are named: + # simpleYes, simpleNo, + # defaultsimpleYes, defaultsimpleNo + # optionalssimpleYes, optionalssimpleNo + # bitingsimpleYes can only be ran with -iA blockingBiteMonster + # assertionsimpleNo + # of course you can use -iA and the attribute name as well to select these examples + + # dummy build input + whoGetsTheFlagFirst = gnused; + whoGetsTheFlagLast = gnumake; + + # simple example demonstrating containing one flag. + # features: + # * configure options are passed automatically + # * buildInputs are collected (they are special, see the setup script) + # * they can be passed by additional name as well using pass = { inherit (args) python } + # ( or short (value not attrs) : pass = "python" ) + # * an attribute named the same way as the flag is added indicating + # true/ false (flag has been set/ not set) + # * extra phase dependend commands can be added + # Its easy to add your own stuff using co.collectAttrs or co.optsConcatStrs + # ( perhaps this name will change?) + simpleFlagYesNoF = namePrefix : extraFlagAttrs : mkDerivationByConfiguration ( { + flagConfig = { + flag = { name = namePrefix + "simpleYes"; + cfgOption = [ "--Yes" "--you-dont-need-a-list" ]; + buildInputs = [ "whoGetsTheFlagFirst" ]; + pass = { inherit gnumake; }; + extraConfigureCmd = "echo Hello, it worked! "; + blocks = "bitingMonster"; + }; + no_flag = { name = namePrefix + "simpleNo"; + cfgOption = "--no"; + implies = ["bitingMonster"]; + }; + bitingMonster = { + extraConfigureCmd = "echo Ill bite you"; + }; + gnutar = { cfgOption="--with-gnutar"; + # buildInputs and pass will be added automatically if gnutar is added to optionals + }; + # can be used to check configure options of dependencies + # eg testFlag = { assertion = [ arg.desktop.flag_set_wmii (! arg.desktop.flag_set_gnome) (! arg.desktops.flag_set_kde ]; } + assertionFlag = { assertion = false; }; # assert is nix language keyword + + }; + + collectExtraPhaseActions = [ "extraConfigureCmd" ]; + + extraAttrs = co : { + name = ( __head (co.collectAttrs "name") ); + + unpackPhase = " + echo my name is + echo \$name + echo + echo flag given \\(should be 1 or empty string\\) ? + echo \$flag_set_flag + echo + echo my build inputs are + echo \$buildInputs + echo + echo my configuration flags are + echo \$configureFlags + echo + echo what about gnumake? Did it pass? + echo \$gnumake + echo + echo configurePhase command is + echo $\configurePhase + echo + echo gnutar passed? \\(optional test\\) + echo \$gnutar + echo + echo dying now + echo die_Hopefully_Soon + "; + configurePhase = co.extraConfigureCmd; + }; + } // extraFlagAttrs ); + + + simpleYes = simpleFlagYesNoF "" {} { + inherit whoGetsTheFlagFirst lib stdenv; + flags = ["flag"]; + }; + # note the "I'll bite you" because of the implies attribute + simpleNo = simpleFlagYesNoF "" {} { + inherit whoGetsTheFlagFirst lib stdenv; + flags = []; + }; + + # specifying defaults by adding a default attribute + + yesAgainDefault = simpleFlagYesNoF "default" { defaults = [ "flag" ];} { + inherit whoGetsTheFlagFirst lib stdenv; + }; + noAgainOverridingDefault = simpleFlagYesNoF "default" { defaults = [ "flag" ];} { + inherit whoGetsTheFlagFirst lib stdenv; + flags = []; + }; + + # requested by Michael Raskin: activate flag automatically if dependency is passed: + withGnutarOptional = simpleFlagYesNoF "optionals" { optionals = [ "gnutar" ];} { + flags = [ "flag" ]; # I only need to pass this to trigger name optionalssimpleYes + inherit whoGetsTheFlagFirst lib stdenv; + inherit gnutar; + }; + withoutGnutarOptional = simpleFlagYesNoF "optionals" { optionals = [ "gnutar" ];} { + inherit whoGetsTheFlagFirst lib stdenv; + }; + + # blocking example, this shouldn't even start building: + blockingBiteMonster = simpleFlagYesNoF "biting" {} { + inherit whoGetsTheFlagFirst lib stdenv; + flags = [ "flag" "bitingMonster" ]; + }; + + # assertion example this shouldn't even start building: + assertion = simpleFlagYesNoF "assertion" {} { + inherit whoGetsTheFlagFirst lib stdenv; + flags = [ "assertionFlag" ]; + }; +*/ diff --git a/pkgs/lib/strings-with-deps.nix b/pkgs/lib/strings-with-deps.nix index 78cded99ef7..4fb4fe150a7 100644 --- a/pkgs/lib/strings-with-deps.nix +++ b/pkgs/lib/strings-with-deps.nix @@ -1,9 +1,24 @@ +/* +Usage: + + You define you custom builder script by adding all build steps to a list. + for example: + builder = writeScript "fsg-4.4-builder" + (textClosure [doUnpack addInputs preBuild doMake installPhase doForceShare]); + + a step is defined by noDepEntry, FullDepEntry or PackEntry. + To ensure that prerequisite are met those are added before the task itself by + textClosureDupList. Duplicated items are removed again. + + See trace/nixpkgs/trunk/pkgs/top-level/builder-defs.nix for some predefined build steps + +*/ args: with args; with lib; let inherit (builtins) - head tail isList; + head tail isList isAttrs; in rec { @@ -37,12 +52,23 @@ rec { (concatLists (map textClosureDupList arg.deps)) ++ [arg] ); - textClosureList = arg: + textClosureDupListOverridable = predefined: arg: + ( + if isList arg then + textClosureDupListOverridable predefined {text = ""; deps = arg;} + else if isAttrs arg then + (concatLists (map (textClosureDupListOverridable predefined) arg.deps)) ++ [arg] + else + textClosureDupListOverridable predefined (getAttr [arg] [] predefined) + ); + + textClosureListOverridable = predefined: arg: (map (x : x.text) - (uniqList {inputList = textClosureDupList arg;})); - textClosure = arg: concatStringsSep "\n" (textClosureList arg); + (uniqList {inputList = textClosureDupListOverridable predefined arg;})); + textClosureOverridable = predefined: arg: concatStringsSep "\n" (textClosureListOverridable predefined arg); - textClosureMap = f: arg: concatStringsSep "\n" (map f (textClosureList arg)); + textClosureMapOveridable = f: predefined: arg: + concatStringsSep "\n" (map f (textClosureListOverridable predefined arg)); noDepEntry = text : {inherit text;deps = [];}; FullDepEntry = text : deps: {inherit text deps;}; diff --git a/pkgs/misc/tex/nix/find-includes.pl b/pkgs/misc/tex/nix/find-includes.pl index 649b16dc35f..9e5fd112bac 100644 --- a/pkgs/misc/tex/nix/find-includes.pl +++ b/pkgs/misc/tex/nix/find-includes.pl @@ -59,6 +59,7 @@ while (scalar @workset > 0) { if (/\\input\{(.*)\}/) { my $fn2 = $1; die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/"; + push @workset, "$path/$fn2.tex"; push @workset, "$path/$fn2"; } elsif (/\\usepackage(\[.*\])?\{(.*)\}/) { my $fn2 = $2; diff --git a/pkgs/misc/trac/builder.sh b/pkgs/misc/trac/builder.sh index a3e97e178a0..76bf0612334 100644 --- a/pkgs/misc/trac/builder.sh +++ b/pkgs/misc/trac/builder.sh @@ -1,5 +1,4 @@ source $stdenv/setup -source $makeWrapper unpackPhase mkdir -p $out @@ -7,7 +6,6 @@ cd $name $python/bin/python setup.py install --prefix=$out for i in $(cd $out/bin && ls); do - mv $out/bin/$i $out/bin/.orig-$i - makeWrapper $out/bin/.orig-$i $out/bin/$i \ - --set PYTHONPATH "$python/site-packages:$out/lib/python2.4/site-packages:$pysqlite/lib/python2.4/site-packages:$subversion/lib/svn-python:$clearsilver/site-packages" + wrapProgram $out/bin/$i \ + --prefix PYTHONPATH : "$(toPythonPath $python):$(toPythonPath $out):$(toPythonPath $pysqlite):$subversion/lib/svn-python:$clearsilver/site-packages" done diff --git a/pkgs/misc/trac/default.nix b/pkgs/misc/trac/default.nix index c456c51daff..b93c36843d3 100644 --- a/pkgs/misc/trac/default.nix +++ b/pkgs/misc/trac/default.nix @@ -3,13 +3,12 @@ assert stdenv.system == "i686-linux"; stdenv.mkDerivation { - name = "trac-0.9.5"; - src = fetchurl { - url = "http://ftp.edgewall.com/pub/trac/trac-0.9.5.tar.gz"; - md5 = "3b7d708eaf905cc6ba2b6b10a09a8cf4"; - }; - builder = ./builder.sh; - inherit stdenv python subversion clearsilver sqlite pysqlite makeWrapper; + name = "trac-0.9.5"; + src = fetchurl { + url = "http://ftp.edgewall.com/pub/trac/trac-0.9.5.tar.gz"; + md5 = "3b7d708eaf905cc6ba2b6b10a09a8cf4"; + }; + builder = ./builder.sh; + buildInputs = [makeWrapper]; + inherit stdenv python subversion clearsilver sqlite pysqlite; } - - diff --git a/pkgs/os-specific/linux/atheros/0.9.3.3.nix b/pkgs/os-specific/linux/atheros/0.9.3.3.nix index d5c207bf188..419c136bed2 100644 --- a/pkgs/os-specific/linux/atheros/0.9.3.3.nix +++ b/pkgs/os-specific/linux/atheros/0.9.3.3.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://downloads.sourceforge.net/madwifi/madwifi-0.9.3.3.tar.bz2; @@ -16,6 +16,7 @@ args : with args; sha256 = "11xpx5g9w7ilagvj60prc3s8a3x0n5n4mr0b7nh0lxwrbjdgjjfg"; } else "")*/; } null; /* null is a terminator for sumArgs */ + in with localDefs; let doPatch = FullDepEntry (if patchAR2425x86 !="" then '' cd hal @@ -25,7 +26,7 @@ in stdenv.mkDerivation rec { name = "atheros-"+version; builder = writeScript (name + "-builder") - (textClosure [doPatch doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doPatch doMakeInstall doForceShare doPropagate]); meta = { description = " Atheros WiFi driver. diff --git a/pkgs/os-specific/linux/atheros/r2756.nix b/pkgs/os-specific/linux/atheros/r2756.nix index 8309b785865..031404b0395 100644 --- a/pkgs/os-specific/linux/atheros/r2756.nix +++ b/pkgs/os-specific/linux/atheros/r2756.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2756-20071018.tar.gz; @@ -16,6 +16,7 @@ args : with args; sha256 = "11xpx5g9w7ilagvj60prc3s8a3x0n5n4mr0b7nh0lxwrbjdgjjfg"; } else ""); } null; /* null is a terminator for sumArgs */ + in with localDefs; let doPatch = FullDepEntry (if patchAR2425x86 !="" then '' cd hal @@ -26,7 +27,7 @@ in stdenv.mkDerivation rec { name = "atheros-"+version; builder = writeScript (name + "-builder") - (textClosure [doPatch doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doPatch doMakeInstall doForceShare doPropagate]); meta = { description = " Atheros WiFi driver. diff --git a/pkgs/os-specific/linux/atheros/r3122.nix b/pkgs/os-specific/linux/atheros/r3122.nix index c82b4021544..e9fb7bab01a 100644 --- a/pkgs/os-specific/linux/atheros/r3122.nix +++ b/pkgs/os-specific/linux/atheros/r3122.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r3122-20080109.tar.gz; @@ -10,10 +10,11 @@ args : with args; configureFlags = []; makeFlags = [''KERNELPATH=${kernel}/lib/modules/*/build'' ''DESTDIR=$out'']; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "atheros-"+version; builder = writeScript (name + "-builder") - (textClosure [doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doMakeInstall doForceShare doPropagate]); meta = { description = " Atheros WiFi driver. diff --git a/pkgs/os-specific/linux/dmidecode/2.9.nix b/pkgs/os-specific/linux/dmidecode/2.9.nix index 787846465d8..968ab80a4af 100644 --- a/pkgs/os-specific/linux/dmidecode/2.9.nix +++ b/pkgs/os-specific/linux/dmidecode/2.9.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://download.savannah.gnu.org/releases/dmidecode/dmidecode-2.9.tar.bz2; @@ -10,10 +10,11 @@ args : with args; configureFlags = []; makeFlags = "prefix=\$out"; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "dmidecode-"+version; builder = writeScript (name + "-builder") - (textClosure [ doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [ doMakeInstall doForceShare doPropagate]); meta = { description = " Tool to decode Desktop Management Interface and SBIOS data. diff --git a/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix b/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix index c991389633c..658bdbf55fa 100644 --- a/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix +++ b/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-7.0.tar.gz; @@ -10,6 +10,7 @@ args : with args; configureFlags = []; makeFlags = [" prefix=\$out "]; } null; /* null is a terminator for sumArgs */ + in with localDefs; let preBuild = FullDepEntry (" sed -e 's@/usr/local@'\$out'@g' -i Makefile.m4 Makefile @@ -18,7 +19,7 @@ in stdenv.mkDerivation rec { name = "dvd+rw-tools-"+version; builder = writeScript (name + "-builder") - (textClosure [preBuild doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [preBuild doMakeInstall doForceShare doPropagate]); meta = { description = " DVD+RW tools. diff --git a/pkgs/os-specific/linux/kqemu/1.3.0pre11.nix b/pkgs/os-specific/linux/kqemu/1.3.0pre11.nix index 3aa2731ac3f..20e738e0692 100644 --- a/pkgs/os-specific/linux/kqemu/1.3.0pre11.nix +++ b/pkgs/os-specific/linux/kqemu/1.3.0pre11.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz; @@ -8,11 +8,13 @@ args : with args; buildInputs = []; configureFlags = [''--prefix=$out'' ''--kernel-path=$(ls -d ${kernel}/lib/modules/*/build)'']; } null; /* null is a terminator for sumArgs */ + in with localDefs; let debugStep = FullDepEntry ('' cat config-host.mak '') [minInit]; preConfigure = FullDepEntry ('' + sed -e 's/`uname -r`/'"$(basename ${kernel}/lib/modules/*)"'/' -i install.sh sed -e '/kernel_path=/akernel_path=$out$kernel_path' -i install.sh sed -e '/depmod/d' -i install.sh cat install.sh @@ -21,7 +23,7 @@ in stdenv.mkDerivation rec { name = "kqemu-"+version; builder = writeScript (name + "-builder") - (textClosure [preConfigure doConfigure debugStep doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [preConfigure doConfigure debugStep doMakeInstall doForceShare doPropagate]); meta = { description = " Kernel module for Qemu acceleration diff --git a/pkgs/os-specific/linux/module-init-tools/aggregator.nix b/pkgs/os-specific/linux/module-init-tools/aggregator.nix index cfd49cc0813..ed30be250d2 100644 --- a/pkgs/os-specific/linux/module-init-tools/aggregator.nix +++ b/pkgs/os-specific/linux/module-init-tools/aggregator.nix @@ -1,10 +1,11 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { addSbinPath = true; src = ""; buildInputs = [module_init_tools]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let doCollect = FullDepEntry ('' @@ -17,7 +18,7 @@ done rm -rf nix-support cd lib/modules/ rm */modules.* -MODULE_DIR=$PWD/ depmod -a +MODULE_DIR=$PWD/ depmod -a * cd $out/ '') [minInit addInputs defEnsureDir]; in @@ -25,7 +26,7 @@ stdenv.mkDerivation rec { name = "kernel-modules"; inherit moduleSources; builder = writeScript (name + "-builder") - (textClosure [doCollect doForceShare doPropagate]); + (textClosure localDefs [doCollect doForceShare doPropagate]); meta = { description = " A directory to hold all the modules, including those diff --git a/pkgs/os-specific/linux/sdparm/1.02.nix b/pkgs/os-specific/linux/sdparm/1.02.nix index 0616ac83563..edff04444e0 100644 --- a/pkgs/os-specific/linux/sdparm/1.02.nix +++ b/pkgs/os-specific/linux/sdparm/1.02.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://sg.torque.net/sg/p/sdparm-1.02.tgz; @@ -9,10 +9,11 @@ args : with args; buildInputs = []; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "sdparm-"+version; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " SCSI parameters utility. diff --git a/pkgs/os-specific/linux/usbutils/default.nix b/pkgs/os-specific/linux/usbutils/default.nix index b7d2c349e25..1f123fadc87 100644 --- a/pkgs/os-specific/linux/usbutils/default.nix +++ b/pkgs/os-specific/linux/usbutils/default.nix @@ -3,17 +3,17 @@ let usbids = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/usb.ids.20061212.bz2; - sha256 = "112l4fzjn5p3y6fv3x10vbrd36n2v5n04s7pjdlkb2yqv4crp84m"; + url = http://nix.cs.uu.nl/dist/tarballs/usb.ids.20080115.bz2; + sha256 = "0xymp8fpp9pnkj2i4ry8zpsvy18zw14sx03pnz316lpgwc6dx12n"; }; in stdenv.mkDerivation { - name = "usbutils-0.72"; + name = "usbutils-0.73"; src = fetchurl { - url = mirror://sourceforge/linux-usb/usbutils-0.72.tar.gz; - sha256 = "08s4g4sz7p3a1afvphxd7h5bbfywvp0j611y85wbhwr14i9m6f00"; + url = mirror://sourceforge/linux-usb/usbutils-0.73.tar.gz; + sha256 = "1x27mc2apyipf8fa2ac49rfnkm7f5dwv784b1ncgc5yjiz4prp1f"; }; buildInputs = [libusb]; preBuild = "bunzip2 < ${usbids} > usb.ids"; diff --git a/pkgs/servers/http/apache-modules/tomcat-connectors/builder.sh b/pkgs/servers/http/apache-modules/tomcat-connectors/builder.sh new file mode 100644 index 00000000000..70b609e6465 --- /dev/null +++ b/pkgs/servers/http/apache-modules/tomcat-connectors/builder.sh @@ -0,0 +1,8 @@ +source $stdenv/setup + +tar xfvz $src +cd tomcat-connectors-*-src/native +./configure --with-apxs=$apacheHttpd/bin/apxs --with-java-home=$jdk +make +ensureDir $out/modules +cp apache-2.0/mod_jk.so $out/modules diff --git a/pkgs/servers/http/apache-modules/tomcat-connectors/default.nix b/pkgs/servers/http/apache-modules/tomcat-connectors/default.nix new file mode 100644 index 00000000000..5c33c444c0d --- /dev/null +++ b/pkgs/servers/http/apache-modules/tomcat-connectors/default.nix @@ -0,0 +1,14 @@ +{stdenv, fetchurl, apacheHttpd, jdk}: + +stdenv.mkDerivation { + name = "tomcat-connectors-1.2.26"; + builder = ./builder.sh; + + src = fetchurl { + url = http://apache.proserve.nl/tomcat/tomcat-connectors/jk/source/jk-1.2.26/tomcat-connectors-1.2.26-src.tar.gz; + md5 = "feaec245136bc4d99a9dde95a00ea93c"; + }; + + inherit apacheHttpd; + buildInputs = [apacheHttpd jdk]; +} diff --git a/pkgs/servers/http/jboss/builder.sh b/pkgs/servers/http/jboss/builder.sh new file mode 100644 index 00000000000..1a9e650ebcc --- /dev/null +++ b/pkgs/servers/http/jboss/builder.sh @@ -0,0 +1,18 @@ +buildInputs="$jdk5" +source $stdenv/setup + +export JDK_HOME=$jdk5 +export JAVA_HOME=$jdk5 + +tar xfvz $src +cd jboss-* +cd build +sh build.sh +ensureDir $out +cp -av output/jboss-*/* $out + +# Insert JAVA_HOME variable to make sure the latest JRE is used and not version 5 +sed -i -e "/GREP/aJAVA_HOME=$jdk" $out/bin/run.sh + +# Change the deploy directory to the nix profile +sed -i -e "s|deploy/|/nix/var/nix/profiles/default/server/default/deploy/|" $out/server/default/conf/jboss-service.xml diff --git a/pkgs/servers/http/jboss/default.nix b/pkgs/servers/http/jboss/default.nix new file mode 100644 index 00000000000..279e4bfae71 --- /dev/null +++ b/pkgs/servers/http/jboss/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, jdk5, jdk }: + +stdenv.mkDerivation { + name = "jboss-4.2.2.GA"; + + builder = ./builder.sh; + src = + fetchurl { + url = http://garr.dl.sourceforge.net/sourceforge/jboss/jboss-4.2.2.GA-src.tar.gz; + md5 = "2a626cdccabe712628555676d67ad44a"; + }; + + inherit jdk5 jdk; + + meta = { + homepage = "http://www.jboss.org/"; + description = "JBoss, Open Source J2EE application server"; + license = "GPL/LGPL"; + }; +} diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix index b9ed02ffd20..a46f99e454b 100644 --- a/pkgs/servers/sql/postgresql/default.nix +++ b/pkgs/servers/sql/postgresql/default.nix @@ -5,12 +5,12 @@ assert ncurses != null; assert readline != null; stdenv.mkDerivation { - name = "postgresql-8.0.6"; + name = "postgresql-8.2.6"; builder = ./builder.sh; src = fetchurl { - url = ftp://ftp2.nl.postgresql.org/mirror/postgresql/source/v8.0.6/postgresql-8.0.6.tar.bz2; - md5 = "f3b27b8171267f9a87592f931c09f0ee"; + url = ftp://ftp.de.postgresql.org/mirror/postgresql/source/v8.2.6/postgresql-8.2.6.tar.bz2; + sha256="056ixbsfmdwhniryc0mr1kl66jywkqqhqvjdi7i3v4qzh9z34hgf"; }; inherit readline; diff --git a/pkgs/servers/xmpp/ejabberd/builder.sh b/pkgs/servers/xmpp/ejabberd/builder.sh new file mode 100644 index 00000000000..4abf8da0682 --- /dev/null +++ b/pkgs/servers/xmpp/ejabberd/builder.sh @@ -0,0 +1,9 @@ +buildInputs="$expat $erlang $zlib $openssl" + +source $stdenv/setup + +tar xfvz $src +cd $name/src +./configure --prefix=$out +make +make install diff --git a/pkgs/servers/xmpp/ejabberd/default.nix b/pkgs/servers/xmpp/ejabberd/default.nix new file mode 100644 index 00000000000..8ce1b0912de --- /dev/null +++ b/pkgs/servers/xmpp/ejabberd/default.nix @@ -0,0 +1,11 @@ +{stdenv, fetchurl, expat, erlang, zlib, openssl}: + +stdenv.mkDerivation { + name = "ejabberd-1.1.4"; + builder = ./builder.sh; + src = fetchurl { + url = http://www.process-one.net/downloads/ejabberd/1.1.4/ejabberd-1.1.4.tar.gz; + md5 = "65e9cd346f11a28afbacfe1d7be3a33b"; + }; + inherit expat erlang zlib openssl; +} diff --git a/pkgs/stdenv/generic/setup-sh-defs.nix b/pkgs/stdenv/generic/setup-sh-defs.nix deleted file mode 100644 index 9f080307178..00000000000 --- a/pkgs/stdenv/generic/setup-sh-defs.nix +++ /dev/null @@ -1,902 +0,0 @@ -with (import ../../lib/strings-with-deps.nix (import ../../lib/default-unstable.nix)); - -rec { - setStrictMode = noDepEntry "set -e;"; - setNixGcc = noDepEntry "test -z \$NIX_GCC && NIX_GCC=@gcc@;"; - - setPathDelimiter = noDepEntry " -if [ -z ${system##*cygwin*} ]; then - PATH_DELIMITER=; -else - PATH_DELIMITER=; -fi -" ; - - - initPath = noDepEntry "# Set up the initial path. -PATH= -for i in \$NIX_GCC @initialPath@; do - PATH=\$PATH\${PATH:+:}\$i/bin -done - -if test \"\$NIX_DEBUG\" = \"1\"; then - echo \"Initial path: \$PATH\" -fi -"; - - execPreHook = FullDepEntry "# Execute the pre-hook. -export SHELL=@shell@ -if test -z \"\$shell\"; then - export shell=@shell@ -fi -param1=@param1@ -param2=@param2@ -param3=@param3@ -param4=@param4@ -param5=@param5@ -if test -n \"@preHook@\"; then - source @preHook@ -fi -" []; - - checkShellEnv = FullDepEntry "# Check that the pre-hook initialised SHELL. -if test -z \"\$SHELL\"; then echo \"SHELL not set\"; exit 1; fi -" []; - - gccSetupHook = FullDepEntry "# Hack: run gcc's setup hook. -envHooks=() -if test -f \$NIX_GCC/nix-support/setup-hook; then - source \$NIX_GCC/nix-support/setup-hook -fi -" [setNixGcc]; - - - defEnsureDir = FullDepEntry "# Ensure that the given directories exists. -ensureDir() { - local dir - for dir in \"\$@\"; do - if ! test -x \"\$dir\"; then mkdir -p \"\$dir\"; fi - done -} -" []; - - defInstallBin = FullDepEntry " - -installBin() { - ensureDir $out/bin - cp "$@" $out/bin -} - -" []; - - defAssertEnvExists = FullDepEntry " -assertEnvExists(){ - if test -z "${!1}"; then - msg=${2:-error: assertion failed: env var $1 is required} - echo $msg >&2; exit 1 - fi -} -" []; - - defFail = FullDepEntry "# Called when some build action fails. If \$succeedOnFailure is set, -# create the file `\$out/nix-support/failed' to signal failure, and -# exit normally. Otherwise, exit with failure. -fail() { - exitCode=\$? - if test \"\$succeedOnFailure\" = 1; then - ensureDir \"\$out/nix-support\" - touch \"\$out/nix-support/failed\" - exit 0 - else - exit \$? - fi -} -" []; - - runAddInputsHook = FullDepEntry "# Allow the caller to augment buildInputs (it's not always possible to -# do this before the call to setup.sh, since the PATH is empty at that -# point; here we have a basic Unix environment). -eval \"\$addInputsHook\" -" [defFail]; - - defFindInputs = FullDepEntry "# Recursively find all build inputs. -findInputs() -{ - local pkg=\$1 - - case \$pkgs in - *\ \$pkg\ *) - return 0 - ;; - esac - - pkgs=\"\$pkgs \$pkg \" - - if test -f \$pkg/nix-support/setup-hook; then - source \$pkg/nix-support/setup-hook - fi - - if test -f \$pkg/nix-support/propagated-build-inputs; then - for i in \$(cat \$pkg/nix-support/propagated-build-inputs); do - findInputs \$i - done - fi -} -" []; - - getInputs = FullDepEntry "pkgs=\"\" -if test -n \"\$buildinputs\"; then - buildInputs=\"\$buildinputs\" # compatibility -fi -for i in \$buildInputs \$propagatedBuildInputs; do - findInputs \$i -done -" [defFindInputs]; - - defAddToEnv = FullDepEntry "# Set the relevant environment variables to point to the build inputs -# found above. -addToEnv() -{ - local pkg=\$1 - - if test \"\$ignoreFailedInputs\" != \"1\" -a -e \$1/nix-support/failed; then - echo \"failed input \$1\" >&2 - fail - fi - - if test -d \$1/bin; then - export _PATH=\$_PATH\${_PATH:+:}\$1/bin - fi - - for i in \"\${envHooks[@]}\"; do - \$i \$pkg - done -} -" [defFail]; - - preparePackageEnv = FullDepEntry "for i in \$pkgs; do - addToEnv \$i -done -" [getInputs defAddToEnv]; - - putOutInRpath = FullDepEntry "# Add the output as an rpath. -if test \"\$NIX_NO_SELF_RPATH\" != \"1\"; then - export NIX_LDFLAGS=\"-rpath \$out/lib \$NIX_LDFLAGS\" -fi -" [initPath]; - - setupStripping = FullDepEntry "# Strip debug information by default. -if test -z \"\$NIX_STRIP_DEBUG\"; then - export NIX_STRIP_DEBUG=1 - export NIX_CFLAGS_STRIP=\"-g0 -Wl,--strip-debug\" -fi -" [initPath]; - - checkNixEnv = FullDepEntry "# Do we know where the store is? This is required for purity checking. -if test -z \"\$NIX_STORE\"; then - echo \"Error: you have an old version of Nix that does not set the\" \ - \"NIX_STORE variable. Please upgrade.\" >&2 - exit 1 -fi - - -# We also need to know the root of the build directory for purity checking. -if test -z \"\$NIX_BUILD_TOP\"; then - echo \"Error: you have an old version of Nix that does not set the\" \ - \"NIX_BUILD_TOP variable. Please upgrade.\" >&2 - exit 1 -fi -" [initPath]; - - setTZ = noDepEntry "# Set the TZ (timezone) environment variable, otherwise commands like -# `date' will complain (e.g., `Tue Mar 9 10:01:47 Local time zone must -# be set--see zic manual page 2004'). -export TZ=UTC -" ; - - setPrefix = FullDepEntry "# Set the prefix. This is generally \$out, but it can be overriden, -# for instance if we just want to perform a test build/install to a -# temporary location and write a build report to \$out. -if test -z \"\$prefix\"; then - prefix=\"\$out\"; -fi - -if test \"\$useTempPrefix\" = \"1\"; then - prefix=\"\$NIX_BUILD_TOP/tmp_prefix\"; -fi -" [checkNixEnv]; - - runPostHook = FullDepEntry "# Execute the post-hook. -if test -n \"@postHook@\"; then - source @postHook@ -fi -" [setTZ setPrefix execPreHook gccSetupHook preparePackageEnv]; - - finalSetPath = FullDepEntry "PATH=\$_PATH\${_PATH:+:}\$PATH -if test \"\$NIX_DEBUG\" = \"1\"; then - echo \"Final path: \$PATH\" -fi -" [runPostHook]; - - defSubstitute = FullDepEntry "###################################################################### -# Textual substitution functions. - - -# Some disgusting hackery to escape replacements in Sed substitutions. -# We should really have a tool that replaces literal values by other -# literal values, without any need for escaping. -escapeSed() { - local s=\"\$1\" - # The `tr' hack is to escape newlines. Sed handles newlines very - # badly, so we just replace newlines with the magic character 0xff - # (377 octal). So don't use that character in replacements :-P - echo -n \"\$1\" | tr '\012' '\377' | sed -e 's^\\^\\\\^g' -e 's^\xff^\\n^g' -e 's/\^/\\^/g' -e 's/&/\\&/g' -} - - -substitute() { - local input=\"\$1\" - local output=\"\$2\" - - local -a params=(\"\$@\") - - local sedScript=\$NIX_BUILD_TOP/.sedargs - rm -f \$sedScript - touch \$sedScript - - local n p pattern replacement varName - - for ((n = 2; n < \${#params[*]}; n += 1)); do - p=\${params[\$n]} - - if test \"\$p\" = \"--replace\"; then - pattern=\"\${params[\$((n + 1))]}\" - replacement=\"\${params[\$((n + 2))]}\" - n=\$((n + 2)) - fi - - if test \"\$p\" = \"--subst-var\"; then - varName=\"\${params[\$((n + 1))]}\" - pattern=\"@\$varName@\" - replacement=\"\${!varName}\" - n=\$((n + 1)) - fi - - if test \"\$p\" = \"--subst-var-by\"; then - pattern=\"@\${params[\$((n + 1))]}@\" - replacement=\"\${params[\$((n + 2))]}\" - n=\$((n + 2)) - fi - - replacement=\"\$(escapeSed \"\$replacement\")\" - - echo \"s^\$pattern^\$replacement^g\" >> \$sedScript - done - - sed -f \$sedScript < \"\$input\" > \"\$output\".tmp - if test -x \"\$output\"; then - chmod +x \"\$output\".tmp - fi - mv -f \"\$output\".tmp \"\$output\" -} - - -substituteInPlace() { - local fileName=\"\$1\" - shift - substitute \"\$fileName\" \"\$fileName\" \"\$@\" -} - - -substituteAll() { - local input=\"\$1\" - local output=\"\$2\" - - # Select all environment variables that start with a lowercase character. - for envVar in \$(env | sed \"s/^[^a-z].*//\" | sed \"s/^\([^=]*\)=.*/\1/\"); do - if test \"\$NIX_DEBUG\" = \"1\"; then - echo \"\$envVar -> \${!envVar}\" - fi - args=\"\$args --subst-var \$envVar\" - done - - substitute \"\$input\" \"\$output\" \$args -} -" [initPath]; - - defNest = NoDepEntry "###################################################################### -# What follows is the generic builder. - - -nestingLevel=0 - -startNest() { - nestingLevel=\$((\$nestingLevel + 1)) - echo -en \"\e[\$1p\" -} - -stopNest() { - nestingLevel=\$((\$nestingLevel - 1)) - echo -en \"\e[q\" -} - -header() { - startNest \"\$2\" - echo \"\$1\" -} - -# Make sure that even when we exit abnormally, the original nesting -# level is properly restored. -closeNest() { - while test \$nestingLevel -gt 0; do - stopNest - done -} - -trap \"closeNest\" EXIT -" ; - - - defDumpVars = FullDepEntry "# This function is useful for debugging broken Nix builds. It dumps -# all environment variables to a file `env-vars' in the build -# directory. If the build fails and the `-K' option is used, you can -# then go to the build directory and source in `env-vars' to reproduce -# the environment used for building. -dumpVars() { - if test \"\$noDumpEnvVars\" != \"1\"; then - export > \$NIX_BUILD_TOP/env-vars - fi -} -" [checkNixEnv]; - - - defStartStopLog = FullDepEntry "# Redirect stdout/stderr to a named pipe connected to a `tee' process -# that writes the specified file (and also to our original stdout). -# The original stdout is saved in descriptor 3. -startLog() { - local logFile=\${logNr}_\$1 - logNr=\$((logNr + 1)) - if test \"\$logPhases\" = 1; then - ensureDir \$logDir - - exec 3>&1 - - if test \"\$dontLogThroughTee\" != 1; then - # This required named pipes (fifos). - logFifo=\$NIX_BUILD_TOP/log_fifo - test -p \$logFifo || mkfifo \$logFifo - startLogWrite \"\$logDir/\$logFile\" \"\$logFifo\" - exec > \$logFifo 2>&1 - else - exec > \$logDir/\$logFile 2>&1 - fi - fi -} - -# Factored into a separate function so that it can be overriden. -startLogWrite() { - tee \"\$1\" < \"\$2\" & - logWriterPid=\$! -} - -# Restore the original stdout/stderr. -stopLog() { - if test \"\$logPhases\" = 1; then - exec >&3 2>&1 - - # Wait until the tee process has died. Otherwise output from - # different phases may be mixed up. - if test -n \"\$logWriterPid\"; then - wait \$logWriterPid - logWriterPid= - rm \$logFifo - fi - fi -} - - -" [setLogVars checkNixEnv ]; - - - setLogVars = FullDepEntry "if test -z \"\$logDir\"; then - logDir=\$out/log -fi - -logNr=0 -" [initPath]; - - defStripHash = FullDepEntry "# Utility function: return the base name of the given path, with the -# prefix `HASH-' removed, if present. -stripHash() { - strippedName=\$(basename \$1); - if echo \"\$strippedName\" | grep -q '^[a-z0-9]\{32\}-'; then - strippedName=\$(echo \"\$strippedName\" | cut -c34-) - fi -} -" [initPath]; - - defUnpack = FullDepEntry " -unpackFile() { - local file=\$1 - local cmd - - header \"unpacking source archive \$file\" 3 - - case \$file in - *.tar) - tar xvf \$file || fail - ;; - *.tar.gz | *.tgz | *.tar.Z) - gunzip < \$file | tar xvf - || fail - ;; - *.tar.bz2 | *.tbz2) - bunzip2 < \$file | tar xvf - || fail - ;; - *.zip) - unzip \$file || fail - ;; - *) - if test -d \"\$file\"; then - stripHash \$file - cp -prvd \$file \$strippedName || fail - else - if test -n \"\$findUnpacker\"; then - \$findUnpacker \$1; - fi - if test -z \"\$unpackCmd\"; then - echo \"source archive \$file has unknown type\" - exit 1 - fi - eval \"\$unpackCmd\" || fail - fi - ;; - esac - - stopNest -} -" [preparePackageEnv]; - - defUnpackW = FullDepEntry " -unpackW() { - if test -n \"\$unpackPhase\"; then - eval \"\$unpackPhase\" - return - fi - - if test -z \"\$srcs\"; then - if test -z \"\$src\"; then - echo 'variable \$src or \$srcs should point to the source' - exit 1 - fi - srcs=\"\$src\" - fi - - # To determine the source directory created by unpacking the - # source archives, we record the contents of the current - # directory, then look below which directory got added. Yeah, - # it's rather hacky. - local dirsBefore=\"\" - for i in *; do - if test -d \"\$i\"; then - dirsBefore=\"\$dirsBefore \$i \" - fi - done - - # Unpack all source archives. - for i in \$srcs; do - unpackFile \$i - done - - # Find the source directory. - if test -n \"\$setSourceRoot\"; then - eval \"\$setSourceRoot\" - else - sourceRoot= - for i in *; do - if test -d \"\$i\"; then - case \$dirsBefore in - *\ \$i\ *) - ;; - *) - if test -n \"\$sourceRoot\"; then - echo \"unpacker produced multiple directories\" - exit 1 - fi - sourceRoot=\$i - ;; - esac - fi - done - fi - - if test -z \"\$sourceRoot\"; then - echo \"unpacker appears to have produced no directories\" - exit 1 - fi - - echo \"source root is \$sourceRoot\" - - # By default, add write permission to the sources. This is often - # necessary when sources have been copied from other store - # locations. - if test \"dontMakeSourcesWritable\" != 1; then - chmod -R +w \$sourceRoot - fi - - eval \"\$postUnpack\" -} -" [defUnpack]; - - - -defUnpackPhase = FullDepEntry " -unpackPhase() { - sourceRoot=. # don't change to user dir homeless shelter if custom unpackSource does'nt set sourceRoot - header \"unpacking sources\" - startLog \"unpack\" - unpackW - stopLog - stopNest - cd \$sourceRoot -} -" [unpackW]; - - - defPatchW = FullDepEntry " -patchW() { - if test -n \"\$patchPhase\"; then - eval \"\$patchPhase\" - return - fi - - if test -z \"\$patchFlags\"; then - patchFlags=\"-p1\" - fi - - for i in \$patches; do - header \"applying patch \$i\" 3 - local uncompress=cat - case \$i in - *.gz) - uncompress=gunzip - ;; - *.bz2) - uncompress=bunzip2 - ;; - esac - \$uncompress < \$i | patch \$patchFlags || fail - stopNest - done -} -" [getInputs] - - defPatchPhase = FullDepEntry " -patchPhase() { - if test -z \"\$patchPhase\" -a -z \"\$patches\"; then return; fi - header \"patching sources\" - startLog \"patch\" - patchW - stopLog - stopNest -} -" [defPatchW]; - - defFixLibTool = FullDepEntry "fixLibtool() { - sed 's^eval sys_lib_.*search_path=.*^^' < \$1 > \$1.tmp - mv \$1.tmp \$1 -} -" [initPath]; - - defConfigureW = FullDepEntry " -configureW() { - if test -n \"\$configurePhase\"; then - eval \"\$configurePhase\" - return - fi - - eval \"\$preConfigure\" - - if test -z \"\$configureScript\"; then - configureScript=./configure - if ! test -x \$configureScript; then - echo \"no configure script, doing nothing\" - return - fi - fi - - if test -z \"\$dontFixLibtool\"; then - for i in \$(find . -name \"ltmain.sh\"); do - echo \"fixing libtool script \$i\" - fixLibtool \$i - done - fi - - if test -z \"\$dontAddPrefix\"; then - configureFlags=\"--prefix=\$prefix \$configureFlags\" - fi - - echo \"configure flags: \$configureFlags \${configureFlagsArray[@]}\" - \$configureScript \$configureFlags\"\${configureFlagsArray[@]}\" || fail - - eval \"\$postConfigure\" -} -" [initPath]; - - - defConfigurePhase = FullDepEntry " -configurePhase() { - header \"configuring\" - startLog \"configure\" - configureW - stopLog - stopNest -} -" [defConfigureW]; - - defBuildW = FullDepEntry " -buildW() { - if test -n \"\$buildPhase\"; then - eval \"\$buildPhase\" - return - fi - - eval \"\$preBuild\" - - echo \"make flags: \$makeFlags \${makeFlagsArray[@]} \$buildFlags \${buildFlagsArray[@]}\" - make \ - \$makeFlags \"\${makeFlagsArray[@]}\" \ - \$buildFlags \"\${buildFlagsArray[@]}\" || fail - - eval \"\$postBuild\" -} -" [initPath]; - - defBuildPhase = FullDepEntry " -buildPhase() { - if test \"\$dontBuild\" = 1; then - return - fi - header \"building\" - startLog \"build\" - buildW - stopLog - stopNest -} -" [defBuildW]; - - - defCheckW = FullDepEntry " -checkW() { - if test -n \"\$checkPhase\"; then - eval \"\$checkPhase\" - return - fi - - if test -z \"\$checkTarget\"; then - checkTarget=\"check\" - fi - - echo \"check flags: \$makeFlags \${makeFlagsArray[@]} \$checkFlags \${checkFlagsArray[@]}\" - make \ - \$makeFlags \"\${makeFlagsArray[@]}\" \ - \$checkFlags \"\${checkFlagsArray[@]}\" \$checkTarget || fail -} -" [initPath]; - - - defCheckPhase = FullDepEntry " -checkPhase() { - if test \"\$doCheck\" != 1; then - return - fi - header \"checking\" - startLog \"check\" - checkW - stopLog - stopNest -} -" [checkPhase]; - - - defPatchElf = FullDepEntry " -patchELF() { - # Patch all ELF executables and shared libraries. - header \"patching ELF executables and libraries\" - find \"\$prefix\" \( \ - \( -type f -a -name \"*.so*\" \) -o \ - \( -type f -a -perm +0100 \) \ - \) -print -exec patchelf --shrink-rpath {} \; - stopNest -} -" [initPath defNest]; - - - defInstallW = FullDepEntry " -installW() { - if test -n \"\$installPhase\"; then - eval \"\$installPhase\" - return - fi - - eval \"\$preInstall\" - - ensureDir \"\$prefix\" - - if test -z \"\$installCommand\"; then - if test -z \"\$installTargets\"; then - installTargets=install - fi - echo \"install flags: \$installTargets \$makeFlags \${makeFlagsArray[@]} \$installFlags \${installFlagsArray[@]}\" - make \$installTargets \ - \$makeFlags \"\${makeFlagsArray[@]}\" \ - \$installFlags \"\${installFlagsArray[@]}\" || fail - else - eval \"\$installCommand\" - fi - - eval \"\$postInstall\" -} -" [initPath]; - - - defInstallPhase = FullDepEntry " -installPhase() { - if test \"\$dontInstall\" = 1; then - return - fi - header \"installing\" - startLog \"install\" - installW - stopLog - stopNest -} -" [defInstallW defNest defStartStopLog]; - - - defFixupW = FullDepEntry " - -# The fixup phase performs generic, package-independent, Nix-related -# stuff, like running patchelf and setting the -# propagated-build-inputs. It should rarely be overriden. -fixupW() { - if test -n "$fixupPhase"; then - eval "$fixupPhase" - return - fi - - eval "$preFixup" - - forceShare=${forceShare:=man doc info} - if test -n "$forceShare"; then - for d in $forceShare; do - if test -d "$prefix/$d"; then - if test -d "$prefix/share/$d"; then - echo "Both $d/ and share/$d/ exists!" - else - echo Fixing location of $dir/ subdirectory - ensureDir $prefix/share - if test -w $prefix/share; then - mv -v $prefix/$d $prefix/share - ln -sv share/$d $prefix - fi - fi - else - echo "No $d/ subdirectory, skipping." - fi - done; - fi - - -# TODO : strip _only_ ELF executables, and return || fail here... - if test -z "$dontStrip"; then - echo "Stripping debuging symbols from files in" - stripDirs "${stripDebugList:-lib}" -S - echo "Stripping all symbols from files in" - stripDirs "${stripAllList:-bin sbin}" -s - fi - - if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then - patchELF "$prefix" - fi - - if test -n "$propagatedBuildInputs"; then - ensureDir "$out/nix-support" - echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" - fi - - if test -n "$setupHook"; then - ensureDir "$out/nix-support" - substituteAll "$setupHook" "$out/nix-support/setup-hook" - fi - - eval "$postFixup" -} -" [defPatchElf initPath]; - - - defFixupPhase = FullDepEntry " -fixupPhase() { - if test \"\$dontFixup\" = 1; then - return - fi - header \"post-installation fixup\" - startLog \"fixup\" - fixupW - stopLog - stopNest -} -" [defFixupW defNest defStartStopLog]; - - - defDistW = FullDepEntry " -distW() { - if test -n \"\$distPhase\"; then - eval \"\$distPhase\" - return - fi - - eval \"\$preDist\" - - if test -z \"\$distTarget\"; then - distTarget=\"dist\" - fi - - echo \"dist flags: \$distFlags \${distFlagsArray[@]}\" - make \$distFlags \"\${distFlagsArray[@]}\" \$distTarget || fail - - if test \"\$dontCopyDist\" != 1; then - ensureDir \"\$out/tarballs\" - - if test -z \"\$tarballs\"; then - tarballs=\"*.tar.gz\" - fi - - # Note: don't quote \$tarballs, since we explicitly permit - # wildcards in there. - cp -pvd \$tarballs \$out/tarballs - fi - - eval \"\$postDist\" -} -" [initPath ]; - - - defDistPhase = FullDepEntry " -distPhase() { - if test \"\$doDist\" != 1; then - return - fi - header \"creating distribution\" - startLog \"dist\" - distW - stopLog - stopNest -} -" [defDistW defNest defStartStopLog]; - - defGenericBuild = FullDepEntry " -genericBuild() { - header \"building \$out\" - - if test -n \"\$buildCommand\"; then - eval \"\$buildCommand\" - return - fi - - if test -z \"\$phases\"; then - phases=\"unpackPhase patchPhase configurePhase buildPhase checkPhase \ - installPhase fixupPhase distPhase\"; - fi - - for i in \$phases; do - dumpVars - eval \"\$i\" - done - - stopNest -} -" [defUnpackPhase defBuildPhase defInstallPhase]; - -doDumpVars = FullDepEntry " -dumpVars -" [defDumpVars]; diff --git a/pkgs/tools/misc/grub/default.nix b/pkgs/tools/misc/grub/default.nix index 1b7f052dfdf..87ba35566c0 100644 --- a/pkgs/tools/misc/grub/default.nix +++ b/pkgs/tools/misc/grub/default.nix @@ -11,22 +11,24 @@ stdenv.mkDerivation { url = ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz; md5 = "cd3f3eb54446be6003156158d51f4884"; }; - - patches = [ - # Patch to add primitive splash screen support (not the fancy SUSE gfxmenu stuff). - # With this you can set splashimage=foo.xpm.gz in menu.lst to get - # a 640x480, 14-colour background. - (fetchurl { - url = "http://cvs.archlinux.org/cgi-bin/viewcvs.cgi/*checkout*/system/grub-gfx/grub-0.97-graphics.patch?rev=HEAD&cvsroot=AUR&only_with_tag=CURRENT&content-type=text/plain"; - sha256 = "0m6min9cbj71kvp0kxkxdq8dx2dwm3dj0rd5sjz5xdl13ihaj5hy"; - }) - ]; + + # Lots of patches from Gentoo, in particular splash screen support + # (not the fancy SUSE gfxmenu stuff though). Also a fix for boot + # failures on systems with more than 2 GiB RAM. + gentooPatches = fetchurl { + url = mirror://gentoo/distfiles/grub-0.97-patches-1.4.tar.bz2; + sha256 = "1nki5q1b61ahxcmnw6mq7b8ghcysri4lj7q6dx8iqixrvrpxj399"; + }; # Autoconf/automake required for the splashimage patch. buildInputs = [autoconf automake]; preConfigure = '' + unpackFile $gentooPatches + for i in patch/*.patch; do + echo "applying patch $i" + patch -p1 < $i || patch -p0 < $i + done autoreconf ''; - } diff --git a/pkgs/tools/misc/mc/builder.sh b/pkgs/tools/misc/mc/builder.sh new file mode 100644 index 00000000000..28b5d68b55a --- /dev/null +++ b/pkgs/tools/misc/mc/builder.sh @@ -0,0 +1,7 @@ +source $stdenv/setup + +tar xfvz $src +cd mc-* +./configure --prefix=$out --with-screen=ncurses +make +make install diff --git a/pkgs/tools/misc/mc/default.nix b/pkgs/tools/misc/mc/default.nix new file mode 100644 index 00000000000..9400cbbf443 --- /dev/null +++ b/pkgs/tools/misc/mc/default.nix @@ -0,0 +1,11 @@ +{stdenv, fetchurl, pkgconfig, glib, ncurses, libX11}: + +stdenv.mkDerivation { + name = "mc-4.6.1"; + src = fetchurl { + url = http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz; + md5 = "18b20db6e40480a53bac2870c56fc3c4"; + }; + buildInputs = [pkgconfig glib ncurses libX11]; + builder = ./builder.sh; +} diff --git a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix index cffa01b9b95..aa0ee224169 100644 --- a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix +++ b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchcvs { url = ":pserver:anonymous@relfs.cvs.sourceforge.net:/cvsroot/relfs"; @@ -12,6 +12,7 @@ args : with args; e2fsprogs gnomevfs pkgconfig GConf]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; let build = FullDepEntry (" cd deps sed -e 's/^CPP/#&/ ; s/^# CPP=gcc/CPP=gcc/' -i Makefile.camlidl @@ -41,7 +42,7 @@ in stdenv.mkDerivation rec { name = "relfs-"+version; builder = writeScript (name + "-builder") - (textClosure [build doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [build doMakeInstall doForceShare doPropagate]); meta = { description = " Relational FS over FUSE. diff --git a/pkgs/tools/networking/ntp/default.nix b/pkgs/tools/networking/ntp/default.nix index 57d2ee8ab71..f96d14e83c0 100644 --- a/pkgs/tools/networking/ntp/default.nix +++ b/pkgs/tools/networking/ntp/default.nix @@ -3,14 +3,14 @@ assert stdenv.isLinux -> libcap != null; stdenv.mkDerivation { - name = "ntp-4.2.4p3"; + name = "ntp-4.2.4p4"; src = fetchurl { - url = http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.4p3.tar.gz; - sha256 = "077y1hw6v0qnp3j3w3pcxgsc76waswqhwsbzfj3jqc79jfh65jv9"; + url = http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.4p4.tar.gz; + sha256 = "0im89i51ap7aqlhxq5isz5xg4h8w8ahwdhir8la3c83h3p47fcmv"; }; - configureFlags = " + configureFlags = '' --without-crypto ${if stdenv.isLinux then "--enable-linuxcaps" else ""} - "; + ''; buildInputs = if stdenv.isLinux then [libcap] else []; } diff --git a/pkgs/tools/networking/p2p/bittorrent/builder.sh b/pkgs/tools/networking/p2p/bittorrent/builder.sh index 633f53ebd43..8097995dfbd 100644 --- a/pkgs/tools/networking/p2p/bittorrent/builder.sh +++ b/pkgs/tools/networking/p2p/bittorrent/builder.sh @@ -1,5 +1,4 @@ source $stdenv/setup -source $makeWrapper # Workaround for: # File "...-python-2.4.4/lib/python2.4/posixpath.py", line 62, in join @@ -20,12 +19,9 @@ installPhase() { # Create wrappers that set the environment correctly. for i in $(cd $out/bin && ls); do - # Note: the GUI apps except to be in a directory called `bin', - # so don't move them. - mv $out/bin/$i $out/bin/.orig-$i - makeWrapper $out/bin/.orig-$i $out/bin/$i \ + wrapProgram $out/bin/$i \ --set PYTHONPATH "$(toPythonPath $out):$PYTHONPATH" done } -genericBuild \ No newline at end of file +genericBuild diff --git a/pkgs/tools/networking/p2p/bittorrent/default.nix b/pkgs/tools/networking/p2p/bittorrent/default.nix index 3894cbd36d4..cfddd48a342 100644 --- a/pkgs/tools/networking/p2p/bittorrent/default.nix +++ b/pkgs/tools/networking/p2p/bittorrent/default.nix @@ -6,18 +6,16 @@ assert gui -> wxPython != null; stdenv.mkDerivation { - name = "bittorrent-5.0.7"; + name = "bittorrent-5.2.0"; builder = ./builder.sh; src = fetchurl { - url = http://download.bittorrent.com/dl/BitTorrent-5.0.7.tar.gz; - sha256 = "09m2qlhzbc6j1hf6fniri0hh6cy6ccgwi2sph65bpjrc417l94gj"; + url = http://download.bittorrent.com/dl/BitTorrent-5.2.0.tar.gz; + sha256 = "0lg54x5y2k1cb7vpj7hanlnvzqa2k3v24qq0g6fsycjk4n8dky02"; }; - buildInputs = [python pycrypto twisted] - ++ (if gui then [wxPython] else []); - - inherit makeWrapper; + buildInputs = [python pycrypto twisted makeWrapper] + ++ stdenv.lib.optional gui wxPython; meta = { description = "The original client for the BitTorrent peer-to-peer file sharing protocol"; diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index 51bcb9ef298..79d46ce8e84 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -3,14 +3,14 @@ , stateDir ? "/nix/var" }: -let version = "0.12pre10069"; in +let version = "0.12pre10154"; in stdenv.mkDerivation { name = "nix-${version}"; src = fetchurl { url = "http://nix.cs.uu.nl/dist/nix/nix-${version}/nix-${version}.tar.bz2"; - md5 = "bf05ebe9463f0453beae2c43f05ac13d"; + md5 = "9e5833e34ade23852a1270d0f2a98ce2"; }; buildInputs = [perl curl openssl]; diff --git a/pkgs/tools/system/gdmap/0.7.5.nix b/pkgs/tools/system/gdmap/0.7.5.nix index 354ebb966a1..062f63566a6 100644 --- a/pkgs/tools/system/gdmap/0.7.5.nix +++ b/pkgs/tools/system/gdmap/0.7.5.nix @@ -1,5 +1,5 @@ args : with args; - with builderDefs { + let localDefs = builderDefs { src = /* put a fetchurl here */ fetchurl { url = http://dfn.dl.sourceforge.net/sourceforge/gdmap/gdmap-0.7.5.tar.gz; @@ -9,10 +9,11 @@ args : with args; buildInputs = [gtk pkgconfig libxml2 intltool]; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "gdmap"+version; builder = writeScript (name + "-builder") - (textClosure [doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " Recursive rectangle map of disk usage. diff --git a/pkgs/tools/system/pciutils/default.nix b/pkgs/tools/system/pciutils/default.nix index 84bd24195ce..5dd67574777 100644 --- a/pkgs/tools/system/pciutils/default.nix +++ b/pkgs/tools/system/pciutils/default.nix @@ -1,16 +1,16 @@ {stdenv, fetchurl, zlib}: stdenv.mkDerivation { - name = "pciutils-2.2.5"; + name = "pciutils-2.2.8"; builder = ./builder.sh; src = fetchurl { - url = mirror://kernel/software/utils/pciutils/pciutils-2.2.5.tar.bz2; - sha256 = "1zlamdax1i8cf3kvzg7dh7nshvvzlhvkwlxdmym0hbnmbf0p100p"; + url = mirror://kernel/software/utils/pciutils/pciutils-2.2.8.tar.bz2; + sha256 = "0hgri2ancnjl56ld2flb9w606dyvr5gly8gsz3bzl71r8s464qsq"; }; buildInputs = [zlib]; pciids = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/pci.ids.20070226.bz2; - sha256 = "1wrpq4dxm03v5jvvdlvwl8nrkj3hspgifkw5czmd647lzikp13qc"; + url = http://nix.cs.uu.nl/dist/tarballs/pci.ids.20080118.bz2; + sha256 = "0dl6psdac62llbklxn4dvkzbw1j1sdadw9i4l36vpd6mvqa7lz0a"; }; } diff --git a/pkgs/tools/system/which/default.nix b/pkgs/tools/system/which/default.nix index 482d495ba83..67ddaa94295 100644 --- a/pkgs/tools/system/which/default.nix +++ b/pkgs/tools/system/which/default.nix @@ -1,10 +1,10 @@ -{stdenv, fetchurl}: stdenv.mkDerivation { - name = "which-2.17"; +args: with args; +stdenv.mkDerivation { + name = "which-2.19"; src = fetchurl { - url = http://ftp.gnu.org/gnu/which/which-2.17.tar.gz; - sha256 = "1nnnbn83da8481blmcyv96gm15ccsilr93fmgmwdlzj8a72fjvqp"; + url = mirror://gnu/which/which-2.19.tar.gz; + sha256 = "0lnd8mfpc0r1r2ch54vl3vc6r0fnzfl33sqdda2aq62iyrsbhybx"; }; + + buildInputs = [readline]; } - - - diff --git a/pkgs/tools/typesetting/lhs2tex/default.nix b/pkgs/tools/typesetting/lhs2tex/default.nix index fc0ce40f8e5..f071f67fe97 100644 --- a/pkgs/tools/typesetting/lhs2tex/default.nix +++ b/pkgs/tools/typesetting/lhs2tex/default.nix @@ -3,12 +3,12 @@ assert tetex == polytable.tetex; stdenv.mkDerivation { - name = "lhs2tex-1.12"; + name = "lhs2tex-1.13pre3"; builder = ./builder.sh; src = fetchurl { - url = http://www.informatik.uni-bonn.de/~loeh/lhs2tex/lhs2tex-1.12.tar.bz2; - md5 = "1bc982e96f19201aaf1c39c1d4b5e358"; + url = "http://www.cs.uu.nl/~andres/lhs2tex/lhs2tex-1.13pre3.tar.bz2"; + sha256 = "8ddc9bd150c20c33518d747fee95577ec8f587146532cda12b8034adc847826c"; }; buildInputs = [tetex ghc]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0e04bd8c01d..f159e6a1a55 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -124,7 +124,8 @@ rec { lib = library; library = import ../lib; - lib_unstable = import ../lib/default-unstable.nix; + # TODO remove + # lib_unstable = import ../lib/default-unstable.nix; # Return an attribute from the Nixpkgs configuration file, or # a default value if the attribute doesn't exist. @@ -199,7 +200,7 @@ rec { args: with args.lib; with args; if ( builtins.isAttrs extraAttrs ) then builtins.throw "the argument extraAttrs needs to be a function beeing passed co, but attribute set passed " else - let co = lib_unstable.chooseOptionsByFlags { inherit args flagConfig optionals defaults collectExtraPhaseActions; }; in + let co = lib.chooseOptionsByFlags { inherit args flagConfig optionals defaults collectExtraPhaseActions; }; in args.stdenv.mkDerivation ( { inherit (co) configureFlags buildInputs /*flags*/; @@ -212,7 +213,7 @@ rec { (import ../build-support/checker) opts config); in (if (result=="") then x else - abort result) + abort ("Unknown option specified: " + result)) else x); builderDefs = lib.sumArgs (import ./builder-defs.nix) { @@ -280,7 +281,12 @@ rec { inherit stdenv curl; }); - makeWrapper = ../build-support/make-wrapper/make-wrapper.sh; + makeSetupHook = script: runCommand "hook" {} '' + ensureDir $out/nix-support + cp ${script} $out/nix-support/setup-hook + ''; + + makeWrapper = makeSetupHook ../build-support/make-wrapper/make-wrapper.sh; # Run the shell command `buildCommand' to produce a store object # named `name'. The attributes in `env' are added to the @@ -608,6 +614,12 @@ rec { inherit fetchurl stdenv; }; + mc = import ../tools/misc/mc { + inherit fetchurl stdenv pkgconfig ncurses; + inherit (gtkLibs) glib; + inherit (xlibs) libX11; + }; + mjpegtools = import ../tools/video/mjpegtools { inherit fetchurl stdenv libjpeg; inherit (xlibs) libX11; @@ -806,7 +818,7 @@ rec { }; which = import ../tools/system/which { - inherit fetchurl stdenv; + inherit fetchurl stdenv readline; }; wv = import ../tools/misc/wv { @@ -991,8 +1003,12 @@ rec { profiledCompiler = true; }); + /* doesn't work yet + # This new ghc stuff is under heavy development and might change ! + # usage: see ghcPkgUtil.sh - use setup-new2 because of PATH_DELIMITER + # depreceated -> use functions defined in builderDefs ghcPkgUtil = runCommand "ghcPkgUtil-internal" { ghcPkgUtil = ../development/libraries/haskell/generic/ghcPkgUtil.sh; } "mkdir -p $out/nix-support; cp $ghcPkgUtil \$out/nix-support/setup-hook;"; @@ -1000,9 +1016,8 @@ rec { ghcsAndLibs = assert builtins ? listToAttrs; recurseIntoAttrs (import ../development/compilers/ghcs { - inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline stdenv; + inherit ghcboot fetchurl recurseIntoAttrs perl gnum4 gmp readline stdenv lib; inherit ghcPkgUtil; - lib = lib_unstable; }); # creates ghc-X-wl wich adds the passed libraries to the env var GHC_PACKAGE_PATH @@ -1011,6 +1026,22 @@ rec { inherit ghcPackagedLibs ghc name suffix libraries ghcPkgUtil stdenv; }; + # this will change in the future + ghc68_extra_libs = + ghc : let + deriv = name : goSrcDir : deps : + let bd = builderDefs { + goSrcDir = "ghc-* /libraries"; + src = ghc.extra_src; + } null; in + stdenv.mkDerivation rec { + inherit name; + builder = bd.writeScript (name + "-builder") + (bd.textClosure [builderDefs.haskellBuilderDefs]); + }; + # using nvs to be able to use mtl-1.1.0.0 as name + in lib.nvs "mtl-1.1.0.0" (deriv "mtl-1.1.0.0" "libraries/mtl" [ (__getAttr "base-3.0.1.0" ghc.core_libs) ]); + # the wrappers basically does one thing: It defines GHC_PACKAGE_PATH before calling ghc{i,-pkg} # So you can have different wrappers with different library combinations # So installing ghc libraries isn't done by nix-env -i package but by adding the lib to the libraries list below @@ -1018,27 +1049,31 @@ rec { let ghc = ghcsAndLibs.ghc68.ghc; in createGhcWrapper rec { ghcPackagedLibs = true; - name = "ghc68_wrapper"; - suffix = "68wrapper"; - libraries = map ( a : __getAttr a ghcsAndLibs.ghc68.core_libs ) - [ "old-locale-1.0" "old-time-1.0" "filepath-1.0" "directory-1.0" "array-0.1" "containers-0.1" - "hpc-0.5" "bytestring-0.9" "pretty-1.0" "packedstring-0.1" "template-haskell-0.1" - "unix-2.0" "process-1.0" "readline-1.0" "Cabal-1.2.0" "random-1.0" "haskell98-1.0" "ghc-6.8.0.20071004" - "array-0.1" "bytestring-0.9" "containers-0.1" "directory-1.0" "filepath-1.0" - "ghc-6.8.0.20071004" "haskell98-1.0" "hpc-0.5" "old-locale-1.0" "old-time-1.0" - "packedstring-0.1" "pretty-1.0" "process-1.0" "random-1.0" - "readline-1.0" "rts-1.0" "template-haskell-0.1" "unix-2.0" - ]; + name = "ghc${ghc.version}_wrapper"; + suffix = "${ghc.version}wrapper"; + libraries = map ( a : __getAttr a ghcsAndLibs.ghc68.core_libs ) [ + "old-locale-1.0.0.0" "old-time-1.0.0.0" "filepath-1.1.0.0" "directory-1.0.0.0" "array-0.1.0.0" "containers-0.1.0.1" + "hpc-0.5.0.0" "bytestring-0.9.0.1" "pretty-1.0.0.0" "packedstring-0.1.0.0" "template-haskell-2.2.0.0" + "unix-2.3.0.0" "process-1.0.0.0" "readline-1.0.1.0" "Cabal-1.2.3.0" "random-1.0.0.0" "haskell98-1.0.1.0" "ghc-${ghc.version}" + "array-0.1.0.0" "bytestring-0.9.0.1" "containers-0.1.0.1" "directory-1.0.0.0" "filepath-1.1.0.0" + "ghc-${ghc.version}" "haskell98-1.0.1.0" "hpc-0.5.0.0" "old-locale-1.0.0.0" "old-time-1.0.0.0" + "packedstring-0.1.0.0" "pretty-1.0.0.0" "process-1.0.0.0" "random-1.0.0.0" + "readline-1.0.1.0" "rts-1.0" "unix-2.3.0.0" "base-3.0.1.0" + ] ++ map ( a : __getAttr a (ghc68_extra_libs ghcsAndLibs.ghc68 ) ) [ + "mtl-1.1.0.0" + ]; # (flatten ghcsAndLibs.ghc68.core_libs); inherit ghc; }; + */ + # ghc66boot = import ../development/compilers/ghc-6.6-boot { # inherit fetchurl stdenv perl readline; # m4 = gnum4; #}; - ghc = ghc661; + ghc = ghc68; ghc68 = import ../development/compilers/ghc-6.8 { inherit fetchurl stdenv readline perl gmp ncurses; @@ -1078,7 +1113,8 @@ rec { */ helium = import ../development/compilers/helium { - inherit fetchurl stdenv ghc; + inherit fetchurl stdenv; + ghc = ghc661; }; #TODO add packages http://cvs.haskell.org/Hugs/downloads/2006-09/packages/ and test @@ -1093,6 +1129,12 @@ rec { inherit fetchurl stdenv; }; + jdk5 = + assert system == "i686-linux"; + import ../development/compilers/jdk/default-5.nix { + inherit fetchurl stdenv unzip; + }; + jdk = jdkdistro true false; jre = jdkdistro false false; @@ -1221,6 +1263,10 @@ rec { inherit (xlibs) libX11 libXau libXt; }; + erlang = import ../development/interpreters/erlang { + inherit fetchurl perl gnum4 ncurses openssl stdenv; + }; + guile = import ../development/interpreters/guile { inherit fetchurl stdenv ncurses readline libtool gmp; }; @@ -1256,8 +1302,7 @@ rec { # perhaps this can be done setting php_value in apache don't have time to investigate any further ? # This expression is a quick hack now. But perhaps it helps you adding the configuration flags you need? php = (import ../development/interpreters/php_configurable) { - inherit mkDerivationByConfiguration stdenv mysql; - lib = lib_unstable; + inherit mkDerivationByConfiguration stdenv mysql lib; inherit fetchurl flex bison apacheHttpd; # gettext; inherit libxml2; flags = [ "xdebug" "mysql" "mysqli" "pdo_mysql" "libxml2" "apxs2" ]; @@ -1342,6 +1387,10 @@ rec { ### DEVELOPMENT / TOOLS + alex = import ../development/tools/parsing/alex { + inherit cabal perl; + }; + antlr = import ../development/tools/parsing/antlr/antlr-2.7.6.nix { inherit fetchurl stdenv jre; }; @@ -1452,8 +1501,16 @@ rec { inherit fetchurl stdenv; }; - happy = import ../development/tools/parsing/happy { - inherit fetchurl stdenv perl ghc; + haddock = import ../development/tools/documentation/haddock { + inherit cabal; + }; + + # happy = import ../development/tools/parsing/happy { + # inherit fetchurl stdenv perl ghc; + # }; + + happy = import ../development/tools/parsing/happy/happy-1.17.nix { + inherit cabal perl; }; help2man = import ../development/tools/misc/help2man { @@ -1564,9 +1621,7 @@ rec { }; uuagc = import ../development/tools/haskell/uuagc { - inherit fetchurl stdenv; - ghc = ghc66; - uulib = uulib66; + inherit cabal uulib; }; gdb = import ../development/tools/misc/gdb { @@ -1784,10 +1839,9 @@ rec { fltk20 = (import ../development/libraries/fltk) { - inherit mkDerivationByConfiguration x11; + inherit mkDerivationByConfiguration x11 lib; inherit fetchurl stdenv mesa mesaHeaders libpng libjpeg zlib ; flags = [ "useNixLibs" "threads" "shared" "gl" ]; - lib = lib_unstable; }; cfitsio = import ../development/libraries/cfitsio { @@ -1822,8 +1876,7 @@ rec { }; geos = import ../development/libraries/geos { - lib = lib_unstable; - inherit fetchurl fetchsvn stdenv mkDerivationByConfiguration autoconf automake libtool swig which; + inherit fetchurl fetchsvn stdenv mkDerivationByConfiguration autoconf automake libtool swig which lib; use_svn = stdenv.system == "x86_64-linux"; python = python; # optional features: @@ -1848,6 +1901,11 @@ rec { }; }; + glew = import ../development/libraries/glew { + inherit fetchurl stdenv mesa x11 libtool; + inherit (xlibs) libXmu libXi; + }; + glibc = useFromStdenv (stdenv ? glibc) stdenv.glibc (import ../development/libraries/glibc-2.7 { inherit fetchurl stdenv kernelHeaders; @@ -2078,8 +2136,7 @@ rec { } null; libdv = import ../development/libraries/libdv { - lib = lib_unstable; - inherit fetchurl stdenv mkDerivationByConfiguration; + inherit fetchurl stdenv lib mkDerivationByConfiguration; }; libdrm = import ../development/libraries/libdrm { @@ -2661,25 +2718,59 @@ rec { ### DEVELOPMENT / LIBRARIES / HASKELL + binary = import ../development/libraries/haskell/binary { + inherit cabal; + }; + + # cabal is a utility function to build cabal-based + # Haskell packages + cabal68 = import ../development/libraries/haskell/cabal/cabal.nix { + inherit stdenv fetchurl; + ghc = ghc68; + }; + cabal = cabal68; + + Crypto = import ../development/libraries/haskell/Crypto { + inherit cabal; + }; + gtk2hs = import ../development/libraries/haskell/gtk2hs { inherit pkgconfig stdenv fetchurl cairo; inherit (gnome) gtk glib GConf libglade libgtkhtml gtkhtml; ghc = ghc661; }; - uulib64 = import ../development/libraries/haskell/uulib { # !!! remove? - inherit stdenv fetchurl ghc; + pcreLight = import ../development/libraries/haskell/pcre-light { + inherit cabal pcre; }; - uulib66 = import ../development/libraries/haskell/uulib-ghc-6.6 { # !!! ugh - inherit stdenv fetchurl autoconf; - ghc = ghc66; + uulib = import ../development/libraries/haskell/uulib { + inherit cabal; }; wxHaskell = import ../development/libraries/haskell/wxHaskell { - inherit stdenv fetchurl unzip ghc wxGTK; + inherit stdenv fetchurl unzip wxGTK; + ghc = ghc661; }; + # wxHaskell68 = lowPrio (appendToName "ghc68" (import ../development/libraries/haskell/wxHaskell { + # inherit stdenv fetchurl unzip wxGTK; + # ghc = ghc68; + # })); + + X11 = import ../development/libraries/haskell/X11 { + inherit cabal; + inherit (xlibs) libX11 libXinerama libXext; + xineramaSupport = true; + }; + + vty = import ../development/libraries/haskell/vty { + inherit cabal; + }; + + zlibHaskell = import ../development/libraries/haskell/zlib { + inherit cabal zlib; + }; ### DEVELOPMENT / PERL MODULES @@ -2980,10 +3071,18 @@ rec { inherit fetchurl stdenv ; }; + ejabberd = import ../servers/xmpp/ejabberd { + inherit fetchurl stdenv expat erlang zlib openssl; + }; + ircdHybrid = import ../servers/irc/ircd-hybrid { inherit fetchurl stdenv openssl zlib; }; + jboss = import ../servers/http/jboss { + inherit fetchurl stdenv jdk5 jdk; + }; + jetty = import ../servers/http/jetty { inherit fetchurl stdenv unzip; }; @@ -2992,6 +3091,10 @@ rec { inherit fetchurl stdenv apacheHttpd python; }; + tomcat_connectors = import ../servers/http/apache-modules/tomcat-connectors { + inherit fetchurl stdenv apacheHttpd jdk; + }; + mysql4 = import ../servers/sql/mysql { inherit fetchurl stdenv ncurses zlib perl; ps = procps; /* !!! Linux only */ @@ -3029,8 +3132,7 @@ rec { }; squid = import ../servers/squid { - inherit fetchurl stdenv mkDerivationByConfiguration perl; - lib = lib_unstable; + inherit fetchurl stdenv mkDerivationByConfiguration perl lib; }; tomcat5 = import ../servers/http/tomcat { @@ -3670,6 +3772,10 @@ rec { inherit fetchurl stdenv unzip; }; + bazaar = import ../applications/version-management/bazaar { + inherit fetchurl stdenv python makeWrapper; + }; + # commented out because it's using the new configuration style proposal which is unstable #biew = import ../applications/misc/biew { # inherit lib stdenv fetchurl ncurses; @@ -3682,10 +3788,9 @@ rec { openal = openalSoft; }; blender = import ../applications/misc/blender { - inherit cmake mesa gettext freetype SDL libtiff fetchurl glibc scons x11 + inherit cmake mesa gettext freetype SDL libtiff fetchurl glibc scons x11 lib libjpeg libpng zlib stdenv /* smpeg sdl */; inherit (xlibs) inputproto libXi; - lib = lib_unstable; python = builtins.getAttr "2.5" python_alts; freealut = freealut_soft; openal = openalSoft; @@ -3706,6 +3811,10 @@ rec { inherit fetchurl stdenv pkgconfig bmp; }; + bvi = import ../applications/editors/bvi { + inherit fetchurl stdenv ncurses; + }; + cdparanoiaIII = import ../applications/audio/cdparanoia { inherit fetchurl stdenv; }; @@ -3800,7 +3909,7 @@ rec { }; cvs2svn = import ../applications/version-management/cvs2svn { - inherit fetchurl stdenv python bsddb3 makeWrapper; + inherit fetchurl stdenv python makeWrapper; }; d4x = import ../applications/misc/d4x { @@ -3809,7 +3918,8 @@ rec { }; darcs = import ../applications/version-management/darcs { - inherit fetchurl stdenv ghc zlib ncurses curl; + inherit fetchurl stdenv zlib ncurses curl; + ghc = ghc661; }; dia = import ../applications/graphics/dia { @@ -4479,11 +4589,10 @@ rec { }; vim_configurable = import ../applications/editors/vim/configurable.nix { - inherit fetchurl stdenv ncurses pkgconfig mkDerivationByConfiguration; + inherit fetchurl stdenv ncurses pkgconfig mkDerivationByConfiguration lib; inherit (xlibs) libX11 libXext libSM libXpm libXt libXaw libXau libXmu; inherit (gtkLibs) glib gtk; - lib = lib_unstable; features = "huge"; # one of tiny, small, normal, big or huge # optional features by passing # python @@ -4582,6 +4691,11 @@ rec { stdenv = overrideGCC stdenv gcc34; # due to problems with gcc 4.x }; + xmonad = import ../applications/window-managers/xmonad { + inherit stdenv fetchurl ghc X11; + inherit (xlibs) xmessage; + }; + xpdf = import ../applications/misc/xpdf { inherit fetchurl stdenv x11 freetype t1lib; motif = lesstif; @@ -4633,11 +4747,10 @@ rec { # doesn't compile yet - in case someone else want's to continue .. /* qgis_svn = import ../applications/misc/qgis_svn { - lib = lib_unstable; - inherit mkDerivationByConfiguration fetchsvn flex + inherit mkDerivationByConfiguration fetchsvn flex lib ncurses fetchurl perl cmake gdal geos proj x11 gsl libpng zlib stdenv - sqlite glibc fontconfig freetype; + sqlite glibc fontconfig freetype / * use libc from stdenv ? - to lazy now - Marc * /; inherit (xlibs) libSM libXcursor libXinerama libXrandr libXrender; inherit (xorg) libICE; qt = qt4; @@ -4722,6 +4835,17 @@ rec { inherit fetchurl stdenv SDL zlib mpeg2dec; }; + # You still can override by passing more arguments. + spaceOrbitFun = lib.sumArgs (selectVersion ../games/orbit ) { + inherit fetchurl stdenv builderDefs + mesa freeglut; + inherit (gnome) esound; + inherit (xlibs) libXt libX11 libXmu libXi libXext; + version = "1.01"; + }; + + spaceOrbit = spaceOrbitFun null; + /*tpm = import ../games/thePenguinMachine { inherit stdenv fetchurl pil pygame SDL; python24 = python; diff --git a/pkgs/top-level/build-for-release.nix b/pkgs/top-level/build-for-release.nix index e5f8e3a466c..6787f91a072 100644 --- a/pkgs/top-level/build-for-release.nix +++ b/pkgs/top-level/build-for-release.nix @@ -5,7 +5,6 @@ let { i686LinuxPkgs = {inherit (allPackages {system = "i686-linux";}) aterm nixUnstable - pan subversion ; }; @@ -14,7 +13,6 @@ let { aterm gcc nixUnstable - pan subversion ; }; diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix index aa53c9ba157..af89fd03702 100644 --- a/pkgs/top-level/builder-defs.nix +++ b/pkgs/top-level/builder-defs.nix @@ -20,7 +20,12 @@ args: with args; with stringsWithDeps; with lib; else (abort "unknown archive type : ${s}")); + pathDelimiter = if args ? pathDelimiter then args.pathDelimiter else + if __currentSystem == "i686-mingw" then ";" else ":"; + defAddToSearchPath = FullDepEntry (" + export PATH_DELIMITER='${pathDelimiter}'; + addToSearchPathWithCustomDelimiter() { local delimiter=\$1 local varName=\$2 @@ -40,7 +45,7 @@ args: with args; with stringsWithDeps; with lib; { addToSearchPathWithCustomDelimiter \"\${PATH_DELIMITER}\" \"\$@\" } - ") [defNest]; + ") ["defNest"]; defNest = noDepEntry (" nestingLevel=0 @@ -95,7 +100,7 @@ args: with args; with stringsWithDeps; with lib; prefix=${if args ? prefix then (toString args.prefix) else "\$out"} " - else "")) [defNest defAddToSearchPath]; + else "")) ["defNest" "defAddToSearchPath"]; addInputs = FullDepEntry (" # Recursively find all build inputs. @@ -161,7 +166,7 @@ args: with args; with stringsWithDeps; with lib; fi PATH=\$_PATH\${_PATH:+:}\$PATH - ") [minInit]; + ") ["minInit"]; defEnsureDir = FullDepEntry (" # Ensure that the given directories exists. @@ -171,7 +176,7 @@ args: with args; with stringsWithDeps; with lib; if ! test -x \"\$dir\"; then mkdir -p \"\$dir\"; fi done } - ") [minInit]; + ") ["minInit"]; toSrcDir = s : FullDepEntry ((if (archiveType s) == "tar" then " tar xvf '${s}' @@ -200,11 +205,11 @@ args: with args; with stringsWithDeps; with lib; cd \$(basename ${s} .bz2) " else (abort "unknown archive type : ${s}"))+ (if args ? goSrcDir then args.goSrcDir else "") - ) [minInit]; + ) ["minInit"]; doConfigure = FullDepEntry (" ./configure --prefix=\"\$prefix\" ${toString configureFlags} - ") [minInit addInputs doUnpack]; + ") ["minInit" "addInputs" "doUnpack"]; doAutotools = FullDepEntry (" mkdir -p config @@ -214,21 +219,21 @@ args: with args; with stringsWithDeps; with lib; autoheader || true; automake --add-missing --copy autoconf - ")[minInit addInputs doUnpack]; + ")["minInit" "addInputs" "doUnpack"]; doMake = FullDepEntry (" make ${toString makeFlags} - ") [minInit addInputs doUnpack]; + ") ["minInit" "addInputs" "doUnpack"]; doUnpack = toSrcDir (toString src); installPythonPackage = FullDepEntry (" python setup.py install --prefix=\"\$prefix\" - ") [minInit addInputs doUnpack]; + ") ["minInit" "addInputs" "doUnpack"]; doMakeInstall = FullDepEntry (" make ${toString (getAttr ["makeFlags"] "" args)} "+ - "${toString (getAttr ["installFlags"] "" args)} install") [doMake]; + "${toString (getAttr ["installFlags"] "" args)} install") ["doMake"]; doForceShare = FullDepEntry (" ensureDir \"\$prefix/share\" @@ -238,7 +243,7 @@ args: with args; with stringsWithDeps; with lib; ln -sv share/\$d \"\$prefix\" fi; done; - ") [minInit defEnsureDir]; + ") ["minInit" "defEnsureDir"]; doDump = n: noDepEntry "echo Dump number ${n}; set"; @@ -250,7 +255,7 @@ args: with args; with stringsWithDeps; with lib; doPatch = FullDepEntry (concatStringsSep ";" (map toPatchCommand patches) - ) [minInit doUnpack]; + ) ["minInit" "doUnpack"]; envAdderInner = s: x: if x==null then s else y: a: envAdderInner (s+"echo export ${x}='\"'\"\$${x}:${y}\";'\"'\n") a; @@ -268,12 +273,12 @@ args: with args; with stringsWithDeps; with lib; (${envAdderList env} echo '\"'\"${cmd}-orig\"'\"' '\"'\\\$@'\"' \n) > \"${cmd}\""; - doWrap = cmd: FullDepEntry (wrapEnv cmd (getAttr ["wrappedEnv"] [] args)) [minInit]; + doWrap = cmd: FullDepEntry (wrapEnv cmd (getAttr ["wrappedEnv"] [] args)) ["minInit"]; doPropagate = FullDepEntry (" ensureDir \$out/nix-support echo '${toString (getAttr ["propagatedBuildInputs"] [] args)}' >\$out/nix-support/propagated-build-inputs - ") [minInit defEnsureDir]; + ") ["minInit" "defEnsureDir"]; /*debug = x:(__trace x x); debugX = x:(__trace (__toXML x) x);*/ @@ -283,7 +288,7 @@ args: with args; with stringsWithDeps; with lib; replaceScripts = l:(concatStringsSep "\n" (pairMap replaceInScript l)); doReplaceScripts = FullDepEntry (replaceScripts (getAttr ["shellReplacements"] [] args)) [minInit]; makeNest = x:(if x==defNest.text then x else "startNest\n" + x + "\nstopNest\n"); - textClosure = textClosureMap makeNest; + textClosure = textClosureMapOveridable makeNest; inherit noDepEntry FullDepEntry PackEntry; @@ -317,4 +322,69 @@ args: with args; with stringsWithDeps; with lib; surroundWithCommands = x : before : after : {deps=x.deps; text = before + "\n" + x.text + "\n" + after ;}; + + + # some haskell stuff - untested! + # -------------------------------------------------------- + # creates a setup hook + # adding the package database + # nix-support/package.conf to GHC_PACKAGE_PATH + # if not already contained + # using nix-support because user does'nt want to have it in it's + # nix-profile I think? + defSetupHookRegisteringPackageDatabase = noDepEntry ( + "\nsetupHookRegisteringPackageDatabase(){" + + "\n ensureDir $out/nix-support;" + + "\n if test -n \"$1\"; then" + + "\n local pkgdb=$1" + + "\n else" + + "\n local pkgdb=$out/nix-support/package.conf" + + "\n fi" + + "\n cat >> $out/nix-support/setup-hook << EOF" + + "\n " + + "\n echo \$GHC_PACKAGE_PATH | grep -l $pkgdb &> /dev/null || \" "+ + "\n export GHC_PACKAGE_PATH=\$GHC_PACKAGE_PATH\${GHC_PACKAGE_PATH:+$PATH_DELIMITER}$pkgdb;" + + "\nEOF" + + "\n}"); + + # Either rungghc or compile setup.hs + # / which one is better ? runghc had some trouble with ghc-6.6.1 + defCabalSetupCmd = noDepEntry " + CABAL_SETUP=\"runghc setup.hs\" + "; + + # create an empty package database in which the new library can be registered. + defCreateEmptyPackageDatabaseAndSetupHook = FullDepEntry " + createEmptyPackageDatabaseAndSetupHook(){ + ensureDir $out/nix-support; + PACKAGE_DB=$out/nix-support/package.conf; + echo '[]' > \"$PACKAGE_DB\"; + setupHookRegisteringPackageDatabase + }" [defSetupHookRegisteringPackageDatabase]; + + # Cabal does only support --user ($HOME/.ghc/** ) and --global (/nix/store/*-ghc/lib/...) + # But we need kind of --custom=my-package-db + # by accident cabal does support using multiple databases passed by GHC_PACKAGE_PATH + # + # Options: + # 1) create a local package db containing all dependencies + # 2) create a single db file for each package merging them using GHC_PACKAGE_PATH=db1:db2 + # (no trailing : which would mean add global and user db) + # I prefer 2) (Marc Weber) so the most convinient way is + # using ./setup copy to install + # and ./setup register --gen-script to install to our local database + # after replacing /usr/lib etc with our pure $out path + cabalBuild = FullDepEntry + (if (args ? subdir) then "cd ${args.subdir}" else "")+ " + createEmptyPackageDatabaseAndSetupHook + ghc --make setup.hs -o setup + \$CABAL_SETUP configure + \$CABAL_SETUP build + \$CABAL_SETUP copy --dest-dir=\$out + \$CABAL_SETUP register --gen-script + sed -e 's=/usr/local/lib=\$out=g' \\ + -i register.sh + GHC_PACKAGE_PATH=\$PACKAGE_DB ./register.sh + " [defCreateEmptyPackageDatabaseAndSetupHook defCabalSetupCmd]; + }) // args diff --git a/pkgs/top-level/template-composing+config.nix b/pkgs/top-level/template-composing+config.nix index df751f693f2..7ff4f3f9d50 100644 --- a/pkgs/top-level/template-composing+config.nix +++ b/pkgs/top-level/template-composing+config.nix @@ -1,4 +1,4 @@ -args : with args; with builderDefs (args // { +args : with args; let localDefs = builderDefs (args // { src = /* put a fetchurl here */ (abort "Specify source"); useConfig = true; @@ -10,10 +10,11 @@ args : with args; with builderDefs (args // { configFlags = [ ]; }) null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { name = "${(abort "Specify name")}"+version; builder = writeScript (name + "-builder") - (textClosure [(abort "Check phases") doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [(abort "Check phases") doMakeInstall doForceShare doPropagate]); meta = { description = " ${(abort "Specify description")} diff --git a/pkgs/top-level/template-composing-builder.nix b/pkgs/top-level/template-composing-builder.nix index 8117b156879..276bdc762dc 100644 --- a/pkgs/top-level/template-composing-builder.nix +++ b/pkgs/top-level/template-composing-builder.nix @@ -1,14 +1,16 @@ -args : with args; - with builderDefs { +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs { src = /* put a fetchurl here */ buildInputs = []; configureFlags = []; } null; /* null is a terminator for sumArgs */ + in with localDefs; stdenv.mkDerivation rec { - name = "${abort "Specify name"}"; + name = "${abort "Specify name"}-"+version; builder = writeScript (name + "-builder") - (textClosure [(abort "Specify phases - defined here or in builderDefs") doForceShare doPropagate]); + (textClosure localDefs + [(abort "Specify phases - defined here or in builderDefs") doForceShare doPropagate]); meta = { description = " ${abort "Write a description"} From f7da6595d6c026168090bcec1a1f9f44b355fcf6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 23 Jan 2008 21:27:44 +0000 Subject: [PATCH 154/320] mc nix-expr review svn path=/nixpkgs/branches/stdenv-updates/; revision=10269 --- pkgs/tools/misc/mc/builder.sh | 7 ------- pkgs/tools/misc/mc/default.nix | 15 ++++++++++----- 2 files changed, 10 insertions(+), 12 deletions(-) delete mode 100644 pkgs/tools/misc/mc/builder.sh diff --git a/pkgs/tools/misc/mc/builder.sh b/pkgs/tools/misc/mc/builder.sh deleted file mode 100644 index 28b5d68b55a..00000000000 --- a/pkgs/tools/misc/mc/builder.sh +++ /dev/null @@ -1,7 +0,0 @@ -source $stdenv/setup - -tar xfvz $src -cd mc-* -./configure --prefix=$out --with-screen=ncurses -make -make install diff --git a/pkgs/tools/misc/mc/default.nix b/pkgs/tools/misc/mc/default.nix index 9400cbbf443..5a9e994b4df 100644 --- a/pkgs/tools/misc/mc/default.nix +++ b/pkgs/tools/misc/mc/default.nix @@ -1,11 +1,16 @@ -{stdenv, fetchurl, pkgconfig, glib, ncurses, libX11}: +args: with args; -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "mc-4.6.1"; src = fetchurl { - url = http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz; - md5 = "18b20db6e40480a53bac2870c56fc3c4"; + url = "http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/${name}.tar.gz"; + sha256 = "0zly25mwdn84s0wqx9mzyqi177mm828716nv1n6a4a5cm8yv0sh8"; }; buildInputs = [pkgconfig glib ncurses libX11]; - builder = ./builder.sh; + configureFlags = "--with-screen=ncurses"; + meta = { + description = "File Manager and User Shell for the GNU Project"; + homepage = http://www.ibiblio.org/mc; + }; } + From 4e018647423e1d39f569ff63e671c5a2244951fb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 24 Jan 2008 23:49:02 +0000 Subject: [PATCH 155/320] * PowerPC hackery. svn path=/nixpkgs/branches/stdenv-updates/; revision=10281 --- pkgs/stdenv/linux/make-bootstrap-tools.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index 0ec0435fce9..e7ab607171f 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -100,8 +100,11 @@ rm -f gcc/lib*/libmud* gcc/lib*/libiberty* gcc/lib*/libssp* gcc/lib*/libgomp* rm -rf gcc/lib/gcc/*/*/install-tools rm -rf gcc/lib/gcc/*/*/include/root rm -rf gcc/lib/gcc/*/*/include/linux -if test -e gcc/lib/gcc/powerpc-unknown-linux-gnu/4.1.1/include/bits/mathdef.h; then - nukeRefs gcc/lib/gcc/powerpc-unknown-linux-gnu/4.1.1/include/bits/mathdef.h +if test "$system" = "powerpc-linux"; then + nukeRefs gcc/lib/gcc/powerpc-unknown-linux-gnu/*/include/bits/mathdef.h + # Dangling symlink "sound", probably produced by fixinclude. + # Should investigate why it's there in the first place. + rm -f gcc/lib/gcc/powerpc-unknown-linux-gnu/*/include/sound fi @@ -123,6 +126,10 @@ for i in glibc/include/asm-*; do rm $i cp -prd $target glibc/include done +if test "$system" = "powerpc-linux"; then + # Hopefully we won't need these. + rm -f glibc/include/mtd glibc/include/rdma glibc/include/sound glibc/include/video +fi # Strip executables even further. From 4c83147793f0d63ff391c6b3db1d2e2d85ccc44e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 25 Jan 2008 01:28:11 +0000 Subject: [PATCH 156/320] * Hack, hack, hack. svn path=/nixpkgs/branches/stdenv-updates/; revision=10282 --- pkgs/stdenv/linux/make-bootstrap-tools.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index e7ab607171f..cadc2129b31 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -120,7 +120,11 @@ chmod -R +w glibc rm glibc/include/linux cp -prd $(readlink $glibc/include/linux) glibc/include rm glibc/include/asm -ln -s $(readlink $(readlink $glibc/include/asm)) glibc/include/asm +if test -L "$(readlink $glibc/include/asm)"; then + ln -s $(readlink $(readlink $glibc/include/asm)) glibc/include/asm +else + cp -prd "$(readlink $glibc/include/asm)" glibc/include +fi for i in glibc/include/asm-*; do target=$(readlink $i) rm $i From fec087c8269b5fa00002fd1dc552b2b717b77ea5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 25 Jan 2008 01:34:20 +0000 Subject: [PATCH 157/320] * Bootstrap binaries for powerpc-linux. svn path=/nixpkgs/branches/stdenv-updates/; revision=10283 --- pkgs/stdenv/linux/bootstrap/powerpc/bunzip2 | Bin 86276 -> 0 bytes pkgs/stdenv/linux/bootstrap/powerpc/bzip2 | Bin 0 -> 85816 bytes pkgs/stdenv/linux/bootstrap/powerpc/cp | Bin 64584 -> 64700 bytes pkgs/stdenv/linux/bootstrap/powerpc/curl.bz2 | Bin 151926 -> 148830 bytes .../linux/bootstrap/powerpc/default.nix | 18 +++++++++--------- pkgs/stdenv/linux/bootstrap/powerpc/tar.bz2 | Bin 100601 -> 102939 bytes 6 files changed, 9 insertions(+), 9 deletions(-) delete mode 100755 pkgs/stdenv/linux/bootstrap/powerpc/bunzip2 create mode 100755 pkgs/stdenv/linux/bootstrap/powerpc/bzip2 diff --git a/pkgs/stdenv/linux/bootstrap/powerpc/bunzip2 b/pkgs/stdenv/linux/bootstrap/powerpc/bunzip2 deleted file mode 100755 index 730214a404b98ab8b606b3bc7fbf5816d045169d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86276 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


M0`8g0D8a51| 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 Si~eI^U`Pg83B{mX%m4t2f(vQ@ delta 27325 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

&i`S}+$PYc* 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

1pI$7orF2Wu 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 I)pP>}0COIHWB>pF literal 100601 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 ZO~3lh?E8Pe{{ItuQskkN!**Z!B>)K!n^yn; From 7178906364ab36d97932a5b17a1e6e44daee44e3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 12:56:25 +0000 Subject: [PATCH 158/320] kde-4: typo in urls corrected svn path=/nixpkgs/branches/stdenv-updates/; revision=10290 --- pkgs/desktops/kde-4/base/default.nix | 2 +- pkgs/desktops/kde-4/edu/default.nix | 2 +- pkgs/desktops/kde-4/extragear/default.nix | 2 +- pkgs/desktops/kde-4/games/default.nix | 2 +- pkgs/desktops/kde-4/graphics/default.nix | 2 +- pkgs/desktops/kde-4/multimedia/default.nix | 2 +- pkgs/desktops/kde-4/network/default.nix | 2 +- pkgs/desktops/kde-4/pim/default.nix | 2 +- pkgs/desktops/kde-4/pimlibs/default.nix | 2 +- pkgs/desktops/kde-4/runtime/default.nix | 2 +- pkgs/desktops/kde-4/toys/default.nix | 2 +- pkgs/desktops/kde-4/utils/default.nix | 2 +- pkgs/desktops/kde-4/workspace/default.nix | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkgs/desktops/kde-4/base/default.nix b/pkgs/desktops/kde-4/base/default.nix index a91b3054281..f6a2ca1d92b 100644 --- a/pkgs/desktops/kde-4/base/default.nix +++ b/pkgs/desktops/kde-4/base/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdebase-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdebase-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdebase-4.0.0.tar.bz2; sha256 = "1419zijcrx6nk10nay3dbv0vi8525hzcqkm2fw8cvw11i4mk909q"; }; diff --git a/pkgs/desktops/kde-4/edu/default.nix b/pkgs/desktops/kde-4/edu/default.nix index 2a218300072..7f9648c6f8f 100644 --- a/pkgs/desktops/kde-4/edu/default.nix +++ b/pkgs/desktops/kde-4/edu/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "kdeedu-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdeedu-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdeedu-4.0.0.tar.bz2; sha256 = "1wjy1rm7aiib1lv61wx7mcbkbpkk6phcz1q6dy51x0hfrc3rdkg4"; }; diff --git a/pkgs/desktops/kde-4/extragear/default.nix b/pkgs/desktops/kde-4/extragear/default.nix index 5bab882eff2..8ad2ef0540f 100644 --- a/pkgs/desktops/kde-4/extragear/default.nix +++ b/pkgs/desktops/kde-4/extragear/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "extragear-plasma-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/extragear/extragear-plasma-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/extragear/extragear-plasma-4.0.0.tar.bz2; sha256 = "19gmvqkal11gg67gfmdivxbhwvggm2i6ad642984d97yicms7s9k"; }; diff --git a/pkgs/desktops/kde-4/games/default.nix b/pkgs/desktops/kde-4/games/default.nix index 7662b37f420..0963d2837c9 100644 --- a/pkgs/desktops/kde-4/games/default.nix +++ b/pkgs/desktops/kde-4/games/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdegames-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdegames-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdegames-4.0.0.tar.bz2; sha256 = "09ilgi6l5sq4gavskyhfrv8ra3n3r6xdn8cdc7fm2fi3zah4innn"; }; diff --git a/pkgs/desktops/kde-4/graphics/default.nix b/pkgs/desktops/kde-4/graphics/default.nix index 96c37836324..9fe45f5aade 100644 --- a/pkgs/desktops/kde-4/graphics/default.nix +++ b/pkgs/desktops/kde-4/graphics/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdegraphics-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdegraphics-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdegraphics-4.0.0.tar.bz2; sha256 = "00np19mzmg8zs8j89g1f47h3kj5azgnv3nspb8lw880zg682yp2f"; }; diff --git a/pkgs/desktops/kde-4/multimedia/default.nix b/pkgs/desktops/kde-4/multimedia/default.nix index 025c2b1b6e8..0727369e042 100644 --- a/pkgs/desktops/kde-4/multimedia/default.nix +++ b/pkgs/desktops/kde-4/multimedia/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdemultimedia-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdemultimedia-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdemultimedia-4.0.0.tar.bz2; sha256 = "14axr1x09k67vb3vaw4g9zg4mq7j14xn9d90kifwap7b76iljbi5"; }; diff --git a/pkgs/desktops/kde-4/network/default.nix b/pkgs/desktops/kde-4/network/default.nix index 1a97c3e7e0d..da2479bf0ee 100644 --- a/pkgs/desktops/kde-4/network/default.nix +++ b/pkgs/desktops/kde-4/network/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdenetwork-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdenetwork-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdenetwork-4.0.0.tar.bz2; sha256 = "04vigr2z0md64khjdriwslsyaf6mpqxd2iwsnr82g53x4kh0i061"; }; diff --git a/pkgs/desktops/kde-4/pim/default.nix b/pkgs/desktops/kde-4/pim/default.nix index 5a174130091..0e4932bcc35 100644 --- a/pkgs/desktops/kde-4/pim/default.nix +++ b/pkgs/desktops/kde-4/pim/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdepim-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdepim-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdepim-4.0.0.tar.bz2; sha256 = "kdepim is not included"; }; diff --git a/pkgs/desktops/kde-4/pimlibs/default.nix b/pkgs/desktops/kde-4/pimlibs/default.nix index 14cdfba02f4..f121a8492d6 100644 --- a/pkgs/desktops/kde-4/pimlibs/default.nix +++ b/pkgs/desktops/kde-4/pimlibs/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "kdepimlibs-4.0.0"; src = fetchurl { - url = "mirror://kde/stable/4.0/src/${name}.tar.bz2"; + url = "mirror://kde/stable/4.0.0/src/${name}.tar.bz2"; sha256 = "0vixx2vh7qgysnbzvykf20362p22jzvl8snpqaknay3v3b2k0br0"; }; diff --git a/pkgs/desktops/kde-4/runtime/default.nix b/pkgs/desktops/kde-4/runtime/default.nix index c0bd6715776..0be4a3bbc59 100644 --- a/pkgs/desktops/kde-4/runtime/default.nix +++ b/pkgs/desktops/kde-4/runtime/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "kdebase-runtime-4.0.0"; src = fetchurl { - url = "mirror://kde/stable/4.0/src/${name}.tar.bz2"; + url = "mirror://kde/stable/4.0.0/src/${name}.tar.bz2"; sha256 = "0svsn9gzg3ka77j7z71fy502a09w9gp9jd2q2y1w07ahpdil5p7h"; }; diff --git a/pkgs/desktops/kde-4/toys/default.nix b/pkgs/desktops/kde-4/toys/default.nix index 661e20bc1eb..47fad5f4620 100644 --- a/pkgs/desktops/kde-4/toys/default.nix +++ b/pkgs/desktops/kde-4/toys/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdetoys-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdetoys-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdetoys-4.0.0.tar.bz2; sha256 = "0j7kk4ripg2sw4m8ym96aiyi8rsfb4p7kqp9kmik850flqighhsk"; }; diff --git a/pkgs/desktops/kde-4/utils/default.nix b/pkgs/desktops/kde-4/utils/default.nix index c45e384771a..f9d76e3e6fc 100644 --- a/pkgs/desktops/kde-4/utils/default.nix +++ b/pkgs/desktops/kde-4/utils/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdeutils-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdeutils-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdeutils-4.0.0.tar.bz2; sha256 = "0ha31z79ikkbknhyklihzys0w4jfz4qx8jiyja0gwh428f7mxqj4"; }; diff --git a/pkgs/desktops/kde-4/workspace/default.nix b/pkgs/desktops/kde-4/workspace/default.nix index b6740640c49..5b16dee4d2e 100644 --- a/pkgs/desktops/kde-4/workspace/default.nix +++ b/pkgs/desktops/kde-4/workspace/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "kdebase-workspace-4.0.0"; src = fetchurl { - url = mirror://kde/stable/4.0/src/kdebase-workspace-4.0.0.tar.bz2; + url = mirror://kde/stable/4.0.0/src/kdebase-workspace-4.0.0.tar.bz2; sha256 = "08sgp7jaqljdxwsgr5lyyfd6w734yv24zswps1mchmhj01vz1fcg"; }; From 5ff29bb2c928245d8530c186cd0a1445bdb2e800 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 12:56:32 +0000 Subject: [PATCH 159/320] qt4 sha256-sum corrected svn path=/nixpkgs/branches/stdenv-updates/; revision=10291 --- pkgs/development/libraries/qt-4/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/qt-4/default.nix b/pkgs/development/libraries/qt-4/default.nix index 9910d2eed2a..2d6366c81d7 100644 --- a/pkgs/development/libraries/qt-4/default.nix +++ b/pkgs/development/libraries/qt-4/default.nix @@ -30,7 +30,7 @@ rec { src = fetchsvn { url = svn://anonsvn.kde.org/home/kde/trunk/qt-copy; rev = "761061"; - sha256 = "0i98kh435dj29ln1lnidxwivcha1m553s4l8c1h2b3yd4950w8x4"; + sha256 = "0mwbmzgqs9psw6hyh913g1jgvgr702qh4kfi2pvmrpkqvyagysg9"; }; patchPhase = "mkdir .svn; bash apply_patches;" + common.patchPhase; }); From 16dbde89871b6df79616c43373b390474ab1f281 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 13:23:06 +0000 Subject: [PATCH 160/320] Typo in xscreensaver corrected (introduced by merge) svn path=/nixpkgs/branches/stdenv-updates/; revision=10292 --- pkgs/applications/graphics/xscreensaver/5.04.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/graphics/xscreensaver/5.04.nix b/pkgs/applications/graphics/xscreensaver/5.04.nix index a9fa7978237..afdab99999f 100644 --- a/pkgs/applications/graphics/xscreensaver/5.04.nix +++ b/pkgs/applications/graphics/xscreensaver/5.04.nix @@ -30,7 +30,7 @@ in stdenv.mkDerivation rec { name = "xscreensaver-"+version; builder = writeScript (name + "-builder") - (textClosure [preConfigure doConfigure doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [preConfigure doConfigure doMakeInstall doForceShare doPropagate]); meta = { description = " The X screensaver daemon. Run xscreensaver-demo to configure. From 9b2659eec785c655192b7f1b23f27634a763aef3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 14:16:25 +0000 Subject: [PATCH 161/320] Merged with trunk again svn path=/nixpkgs/branches/stdenv-updates/; revision=10295 --- .../version-management/monotone/default.nix | 10 ++++ pkgs/data/documentation/man-pages/default.nix | 11 ++-- pkgs/development/compilers/jdk/default-5.nix | 2 +- .../compilers/jdk/jdk5-sun-linux.nix | 8 +-- .../libraries/haskell/HDBC/HDBC-1.1.4.nix | 10 ++++ .../haskell/HDBC/HDBC-postgresql-1.1.4.0.nix | 12 +++++ .../haskell/HDBC/HDBC-sqlite3-1.1.4.0.nix | 12 +++++ .../libraries/haskell/cabal/cabal.nix | 2 +- .../libraries/haskell/gtk2hs/default.nix | 14 ++--- pkgs/os-specific/linux/nvidia/default.nix | 4 +- pkgs/servers/samba/default.nix | 1 + pkgs/tools/misc/mc/default.nix | 1 - pkgs/tools/misc/rlwrap/0.28.nix | 23 +++++++++ pkgs/tools/networking/smbfs-fuse/0.8.7.nix | 29 +++++++++++ pkgs/top-level/all-packages.nix | 51 +++++++++++++++++-- pkgs/top-level/template.nix | 45 ---------------- 16 files changed, 169 insertions(+), 66 deletions(-) create mode 100644 pkgs/applications/version-management/monotone/default.nix create mode 100644 pkgs/development/libraries/haskell/HDBC/HDBC-1.1.4.nix create mode 100644 pkgs/development/libraries/haskell/HDBC/HDBC-postgresql-1.1.4.0.nix create mode 100644 pkgs/development/libraries/haskell/HDBC/HDBC-sqlite3-1.1.4.0.nix create mode 100644 pkgs/tools/misc/rlwrap/0.28.nix create mode 100644 pkgs/tools/networking/smbfs-fuse/0.8.7.nix delete mode 100644 pkgs/top-level/template.nix diff --git a/pkgs/applications/version-management/monotone/default.nix b/pkgs/applications/version-management/monotone/default.nix new file mode 100644 index 00000000000..fc2339af6a5 --- /dev/null +++ b/pkgs/applications/version-management/monotone/default.nix @@ -0,0 +1,10 @@ +{stdenv, fetchurl, boost, zlib}: + +stdenv.mkDerivation { + name = "monotone-0.38"; + src = fetchurl { + url = http://monotone.ca/downloads/0.38/monotone-0.38.tar.gz; + md5 = "c1a0d2619f451a664289b042c104860d"; + }; + buildInputs = [boost zlib]; +} diff --git a/pkgs/data/documentation/man-pages/default.nix b/pkgs/data/documentation/man-pages/default.nix index 6a553b86e29..6adf9034474 100644 --- a/pkgs/data/documentation/man-pages/default.nix +++ b/pkgs/data/documentation/man-pages/default.nix @@ -1,14 +1,19 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "man-pages-2.43"; + name = "man-pages-2.74"; src = fetchurl { - url = ftp://ftp.win.tue.nl/pub/linux-local/manpages/man-pages-2.43.tar.gz; - sha256 = "01dibzkssaq0ssq61adhmri29ws9jbhbn2yxmjvb3gg8q7gjah9w"; + url = ftp://ftp.win.tue.nl/pub/linux-local/manpages/man-pages-2.74.tar.gz; + sha256 = "1k6hf6va29gnf2c9kpwd6w555gp1vimf73ac2ij2j7dqx64hy7s7"; }; preBuild = " makeFlagsArray=(MANDIR=$out/share/man) "; + + meta = { + description = "Linux development manual pages"; + homepage = ftp://ftp.win.tue.nl/pub/linux-local/manpages/; + }; } diff --git a/pkgs/development/compilers/jdk/default-5.nix b/pkgs/development/compilers/jdk/default-5.nix index 1cb83ca5ddc..9fb52378b3f 100644 --- a/pkgs/development/compilers/jdk/default-5.nix +++ b/pkgs/development/compilers/jdk/default-5.nix @@ -1,6 +1,6 @@ {stdenv, fetchurl, unzip}: -if stdenv.system == "i686-linux" +if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" then (import ./jdk5-sun-linux.nix) { inherit stdenv fetchurl unzip; diff --git a/pkgs/development/compilers/jdk/jdk5-sun-linux.nix b/pkgs/development/compilers/jdk/jdk5-sun-linux.nix index 479a5a456af..6521bb779f2 100644 --- a/pkgs/development/compilers/jdk/jdk5-sun-linux.nix +++ b/pkgs/development/compilers/jdk/jdk5-sun-linux.nix @@ -8,16 +8,16 @@ */ {stdenv, fetchurl, unzip}: -assert stdenv.system == "i686-linux"; +assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; stdenv.mkDerivation { name = "jdk-1.5.0_14"; filename = "jdk-1_5_0_14"; dirname = "jdk1.5.0_14"; builder = ./builder.sh; - pathname = "/tmp/jdk-1_5_0_14-linux-i586.bin"; - md5 = "32df8f2be09c3a0f39da1b3869164b55"; - stdenv = stdenv; + pathname = if stdenv.system == "x86_64-linux" then "/tmp/jdk-1_5_0_14-linux-amd64.bin" else "/tmp/jdk-1_5_0_14-linux-i586.bin"; + md5 = if stdenv.system == "x86_64-linux" then "9dc74d939dd42988280f2c22ab9521bf" else "32df8f2be09c3a0f39da1b3869164b55"; + stdenv = stdenv; inherit unzip; } diff --git a/pkgs/development/libraries/haskell/HDBC/HDBC-1.1.4.nix b/pkgs/development/libraries/haskell/HDBC/HDBC-1.1.4.nix new file mode 100644 index 00000000000..429407d25d2 --- /dev/null +++ b/pkgs/development/libraries/haskell/HDBC/HDBC-1.1.4.nix @@ -0,0 +1,10 @@ +{cabal}: + +cabal.mkDerivation (self : { + pname = "HDBC"; + version = "1.1.4"; + sha256 = "de03020874b532f7aa734f093caf0709e7d33d0d64c59ce0a003b2269fc85597"; + meta = { + description = "HDBC provides an abstraction layer between Haskell programs and SQL relational databases"; + }; +}) diff --git a/pkgs/development/libraries/haskell/HDBC/HDBC-postgresql-1.1.4.0.nix b/pkgs/development/libraries/haskell/HDBC/HDBC-postgresql-1.1.4.0.nix new file mode 100644 index 00000000000..d9a1985839c --- /dev/null +++ b/pkgs/development/libraries/haskell/HDBC/HDBC-postgresql-1.1.4.0.nix @@ -0,0 +1,12 @@ +{cabal, HDBC, postgresql}: + +cabal.mkDerivation (self : { + pname = "HDBC-postgresql"; + version = "1.1.4.0"; + sha256 = "039eae03693330fee0e4083e22d502f94865969b243744a939786f598aec34ad"; + meta = { + description = "This package provides a PostgreSQL driver for HDBC"; + }; + propagatedBuildInputs = [HDBC postgresql]; +}) + diff --git a/pkgs/development/libraries/haskell/HDBC/HDBC-sqlite3-1.1.4.0.nix b/pkgs/development/libraries/haskell/HDBC/HDBC-sqlite3-1.1.4.0.nix new file mode 100644 index 00000000000..b0c7eb27e6a --- /dev/null +++ b/pkgs/development/libraries/haskell/HDBC/HDBC-sqlite3-1.1.4.0.nix @@ -0,0 +1,12 @@ +{cabal, HDBC, sqlite}: + +cabal.mkDerivation (self : { + pname = "HDBC-sqlite3"; + version = "1.1.4.0"; + sha256 = "328fed8d4cdba4311efd50d9d60591a81481317ddba10c58fbaa2ec7f418f788"; + meta = { + description = "This is the Sqlite v3 driver for HDBC, the generic database access system for Haskell"; + }; + propagatedBuildInputs = [HDBC sqlite]; +}) + diff --git a/pkgs/development/libraries/haskell/cabal/cabal.nix b/pkgs/development/libraries/haskell/cabal/cabal.nix index 1e08a819c0e..bafcedced63 100644 --- a/pkgs/development/libraries/haskell/cabal/cabal.nix +++ b/pkgs/development/libraries/haskell/cabal/cabal.nix @@ -49,7 +49,7 @@ attrs : for i in ${toString self.patchLibFiles}; do echo "patching $i" - test -f $i && sed -i '/extra-libraries/ { s|\( *\)extra-libraries.*|&\n\1extra-lib-dirs: ${toString self.extraLibDirs}| }' $i + test -f $i && sed -i '/[eE]xtra-[lL]ibraries/ { s|\( *\)[eE]xtra-[lL]ibraries.*|&\n\1extra-lib-dirs: ${toString self.extraLibDirs}| }' $i done for i in Setup.hs Setup.lhs; do test -f $i && ghc --make $i diff --git a/pkgs/development/libraries/haskell/gtk2hs/default.nix b/pkgs/development/libraries/haskell/gtk2hs/default.nix index f4e3a02c73f..e49f4d7113e 100644 --- a/pkgs/development/libraries/haskell/gtk2hs/default.nix +++ b/pkgs/development/libraries/haskell/gtk2hs/default.nix @@ -1,18 +1,20 @@ {stdenv, fetchurl, pkgconfig, ghc, gtk, cairo, GConf, libglade , glib, libgtkhtml, gtkhtml}: -stdenv.mkDerivation { - name = "gtk2hs-0.9.12.1"; +stdenv.mkDerivation (rec { + pname = "gtk2hs"; + version = "0.9.12.1"; + fname = "${pname}-${version}"; + name = "haskell-${fname}"; src = fetchurl { - url = mirror://sourceforge/gtk2hs/gtk2hs-0.9.12.1.tar.gz; + url = "mirror://sourceforge/${pname}/${fname}.tar.gz"; sha256 = "110z6v9gzhg6nzlz5gs8aafmipbva6rc50b8z1jgq0k2g25hfy22"; }; buildInputs = [pkgconfig ghc gtk glib cairo GConf libglade libgtkhtml gtkhtml]; - configureFlags = [ + configureFlags = [ "--enable-cairo" ]; - -} +}) diff --git a/pkgs/os-specific/linux/nvidia/default.nix b/pkgs/os-specific/linux/nvidia/default.nix index 11906b60658..c8eaa0a8936 100644 --- a/pkgs/os-specific/linux/nvidia/default.nix +++ b/pkgs/os-specific/linux/nvidia/default.nix @@ -2,7 +2,7 @@ let - versionNumber = "169.07"; + versionNumber = "169.09"; in @@ -12,7 +12,7 @@ stdenv.mkDerivation { src = fetchurl { url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg1.run"; - sha256 = "1q4sbwcf24rvx72sj19pvhsmg5n8v2rfzsxf56mfxjbiy2jhjbaa"; + sha256 = "1m3k2jyxi3xxpm6890y0d97jisnxiyyay59ss2r9abyvpkv3by8i"; }; #xenPatch = ./nvidia-2.6.24-xen.patch; diff --git a/pkgs/servers/samba/default.nix b/pkgs/servers/samba/default.nix index db001c64b9d..bde546aafd1 100644 --- a/pkgs/servers/samba/default.nix +++ b/pkgs/servers/samba/default.nix @@ -11,6 +11,7 @@ stdenv.mkDerivation rec { buildInputs = [readline pam openldap kerberos popt iniparser libunwind fam]; configureFlags = ''--with-pam --with-smbmount --datadir=$out/share --with-aio-support --with-libiconv=${stdenv.gcc.libc}''; + postUnpack = "sourceRoot=\$sourceRoot/source"; postInstall = ''rm -rf $out/var ; ln -s /var/samba $out/var ''; } diff --git a/pkgs/tools/misc/mc/default.nix b/pkgs/tools/misc/mc/default.nix index 5a9e994b4df..e5cce46bba8 100644 --- a/pkgs/tools/misc/mc/default.nix +++ b/pkgs/tools/misc/mc/default.nix @@ -13,4 +13,3 @@ stdenv.mkDerivation rec { homepage = http://www.ibiblio.org/mc; }; } - diff --git a/pkgs/tools/misc/rlwrap/0.28.nix b/pkgs/tools/misc/rlwrap/0.28.nix new file mode 100644 index 00000000000..695c077ce67 --- /dev/null +++ b/pkgs/tools/misc/rlwrap/0.28.nix @@ -0,0 +1,23 @@ +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = ftp://ftp.chg.ru/mirrors/ftp.freebsd.org/pub/FreeBSD/ports/distfiles/rlwrap-0.28.tar.gz; + sha256 = "07jzhcqzb8jsmsscc28dk4md7swnhn3vyai5fpxwdj6a1kbn4y3p"; + }; + + buildInputs = [readline ]; + configureFlags = []; + } null; /* null is a terminator for sumArgs */ + in with localDefs; +stdenv.mkDerivation rec { + name = "rlwrap-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Readline wrapper for console programs. +"; + }; +} diff --git a/pkgs/tools/networking/smbfs-fuse/0.8.7.nix b/pkgs/tools/networking/smbfs-fuse/0.8.7.nix new file mode 100644 index 00000000000..9762358b80e --- /dev/null +++ b/pkgs/tools/networking/smbfs-fuse/0.8.7.nix @@ -0,0 +1,29 @@ +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs { + src = /* put a fetchurl here */ + fetchurl { + url = http://www.ricardis.tudelft.nl/~vincent/fusesmb/download/fusesmb-0.8.7.tar.gz; + sha256 = "12gz2gn9iqjg27a233dn2wij7snm7q56h97k6gks0yijf6xcnpz1"; + }; + + buildInputs = [samba fuse]; + configureFlags = []; + postInstall = FullDepEntry + ('' + ensureDir $out/lib + ln -fs ${samba}/lib/libsmbclient.so $out/lib/libsmbclient.so.0 + '') + [ "minInit" "defEnsureDir" "doMakeInstall"]; + } null; /* null is a terminator for sumArgs */ + in with localDefs; +stdenv.mkDerivation rec { + name = "smbfs-fuse-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [doConfigure doMakeInstall postInstall doForceShare doPropagate]); + meta = { + description = " + Samba mounted via FUSE. +"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f159e6a1a55..c71f808ffb8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -217,7 +217,7 @@ rec { else x); builderDefs = lib.sumArgs (import ./builder-defs.nix) { - inherit stringsWithDeps lib stdenv writeScript; + inherit stringsWithDeps lib stdenv writeScript fetchurl; }; stringsWithDeps = import ../lib/strings-with-deps.nix { @@ -723,6 +723,13 @@ rec { }; */ + rlwrapFun = lib.sumArgs (selectVersion ../tools/misc/rlwrap) { + version = "0.28"; + inherit builderDefs readline; + }; + + rlwrap = rlwrapFun null; + rpm = import ../tools/package-management/rpm { inherit fetchurl stdenv cpio zlib bzip2 file sqlite beecrypt neon elfutils; }; @@ -743,6 +750,13 @@ rec { inherit fetchurl stdenv; }; + smbfsFuseFun = lib.sumArgs (selectVersion ../tools/networking/smbfs-fuse) { + version = "0.8.7"; + inherit builderDefs samba fuse; + }; + + smbfsFuse = smbfsFuseFun null; + sudo = import ../tools/security/sudo { inherit fetchurl stdenv coreutils pam; }; @@ -1042,6 +1056,22 @@ rec { # using nvs to be able to use mtl-1.1.0.0 as name in lib.nvs "mtl-1.1.0.0" (deriv "mtl-1.1.0.0" "libraries/mtl" [ (__getAttr "base-3.0.1.0" ghc.core_libs) ]); + # this will change in the future + ghc68_extra_libs = + ghc : let + deriv = name : goSrcDir : deps : + let bd = builderDefs { + goSrcDir = "ghc-* /libraries"; + src = ghc.extra_src; + } null; in + stdenv.mkDerivation rec { + inherit name; + builder = bd.writeScript (name + "-builder") + (bd.textClosure [builderDefs.haskellBuilderDefs]); + }; + # using nvs to be able to use mtl-1.1.0.0 as name + in lib.nvs "mtl-1.1.0.0" (deriv "mtl-1.1.0.0" "libraries/mtl" [ (__getAttr "base-3.0.1.0" ghc.core_libs) ]); + # the wrappers basically does one thing: It defines GHC_PACKAGE_PATH before calling ghc{i,-pkg} # So you can have different wrappers with different library combinations # So installing ghc libraries isn't done by nix-env -i package but by adding the lib to the libraries list below @@ -1166,6 +1196,10 @@ rec { inherit stdenv perl; }; + monotone = import ../applications/version-management/monotone { + inherit stdenv fetchurl boost zlib; + }; + nasm = import ../development/compilers/nasm { inherit fetchurl stdenv; }; @@ -2735,9 +2769,20 @@ rec { }; gtk2hs = import ../development/libraries/haskell/gtk2hs { - inherit pkgconfig stdenv fetchurl cairo; + inherit pkgconfig stdenv fetchurl cairo ghc; inherit (gnome) gtk glib GConf libglade libgtkhtml gtkhtml; - ghc = ghc661; + }; + + HDBC = import ../development/libraries/haskell/HDBC/HDBC-1.1.4.nix { + inherit cabal; + }; + + HDBCPostgresql = import ../development/libraries/haskell/HDBC/HDBC-postgresql-1.1.4.0.nix { + inherit cabal HDBC postgresql; + }; + + HDBCSqlite = import ../development/libraries/haskell/HDBC/HDBC-sqlite3-1.1.4.0.nix { + inherit cabal HDBC sqlite; }; pcreLight = import ../development/libraries/haskell/pcre-light { diff --git a/pkgs/top-level/template.nix b/pkgs/top-level/template.nix deleted file mode 100644 index fabd6de584a..00000000000 --- a/pkgs/top-level/template.nix +++ /dev/null @@ -1,45 +0,0 @@ -args: -let - defList = [ -(assert false) - correct it; List element is of form ["name" default] - ]; - #stdenv and fetchurl are added automatically - getVal = (args.lib.getValue args defList); - check = args.lib.checkFlag args; - reqsList = [ -(assert false) - correct it; List element is of form ["name" "requirement-name" ... ] - ["true"] - ["false"] - ]; - buildInputsNames = args.lib.filter (x: (null!=getVal x)) - (args.lib.uniqList {inputList = - (args.lib.concatLists (map - (x:(if (x==[]) then [] else builtins.tail x)) - reqsList));}); - configFlags = [ - "true" "" -(assert false) - fill it; list consists of pairs "condition" "flags". "True" means always. - ]; - nameSuffixes = [ -(assert false) - fill it if needed, or blank it. - ]; -in - assert args.lib.checkReqs args defList reqsList; -with args; -args.stdenv.mkDerivation { - name = args.lib.condConcat " -#Fill the name // -" nameSuffixes check; - - src = args. -#Put fetcher here - - buildInputs = args.lib.filter (x: x!=null) (map getVal buildInputsNames); - configureFlags = args.lib.condConcat "" configFlags check; - - meta = { - description = " -#Fill description here -"; - }; -} From 75b181e9b7640fa7ffa01707bd1949fcb49ff207 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 14:16:40 +0000 Subject: [PATCH 162/320] Should fix building samba in impure environments svn path=/nixpkgs/branches/stdenv-updates/; revision=10296 --- pkgs/servers/samba/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/samba/default.nix b/pkgs/servers/samba/default.nix index bde546aafd1..797f619782c 100644 --- a/pkgs/servers/samba/default.nix +++ b/pkgs/servers/samba/default.nix @@ -10,7 +10,8 @@ stdenv.mkDerivation rec { buildInputs = [readline pam openldap kerberos popt iniparser libunwind fam]; configureFlags = ''--with-pam --with-smbmount --datadir=$out/share - --with-aio-support --with-libiconv=${stdenv.gcc.libc}''; + --with-aio-support '' + + (if stdenv.gcc ? libc then "--with-libiconv=${stdenv.gcc.libc}" else ""); postUnpack = "sourceRoot=\$sourceRoot/source"; postInstall = ''rm -rf $out/var ; ln -s /var/samba $out/var ''; From 68373da7eeed5868a6864bb915d5c0fe288adb41 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 16:00:05 +0000 Subject: [PATCH 163/320] vsftpd: builds with gcc-4.2 now svn path=/nixpkgs/branches/stdenv-updates/; revision=10297 --- pkgs/servers/ftp/vsftpd/default.nix | 20 ++++++++++++-------- pkgs/top-level/all-packages.nix | 3 +-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/pkgs/servers/ftp/vsftpd/default.nix b/pkgs/servers/ftp/vsftpd/default.nix index 861845ab24f..d3a2a5a66f7 100644 --- a/pkgs/servers/ftp/vsftpd/default.nix +++ b/pkgs/servers/ftp/vsftpd/default.nix @@ -1,16 +1,20 @@ -{stdenv, fetchurl, openssl}: +args: with args; -stdenv.mkDerivation { - name = "vsftpd-2.0.3"; +stdenv.mkDerivation rec { + name = "vsftpd-2.0.5"; src = fetchurl { - url = ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz; - md5 = "74936cbd8e8251deb1cd99c5fb18b6f8"; + url = "ftp://vsftpd.beasts.org/users/cevans/${name}.tar.gz"; + sha256 = "0nzsxknnaqnfk853yjsmi31sl02jf5ydix9wxbldv4i7vzqfnqjl"; }; - NIX_LDFLAGS = [ "-lcrypt" "-lssl" "-lcrypto" ]; + NIX_LDFLAGS = "-lcrypt -lssl -lcrypto -lpam -lcap"; - builder = ./builder.sh ; + preInstall = '' + ensureDir $out/{,s}bin + ensureDir $out/man/man{5,8} + ''; patches = [ ./fix.patch ] ; - buildInputs = [ openssl ]; + preConfigure = ''sed -i "/VSF_BUILD_SSL/s/^#undef/#define/" builddefs.h''; + buildInputs = [ openssl libcap pam ]; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c71f808ffb8..31cacd14614 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3185,8 +3185,7 @@ rec { }; vsftpd = import ../servers/ftp/vsftpd { - inherit fetchurl openssl ; - stdenv = overrideGCC stdenv gcc295 ; + inherit fetchurl openssl stdenv libcap pam; }; xorg = recurseIntoAttrs (import ../servers/x11/xorg { From 9552457d84db2925dddc1799b72f2bfacae7380c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 16:01:06 +0000 Subject: [PATCH 164/320] Trying to fix samba evaluation on freebsd svn path=/nixpkgs/branches/stdenv-updates/; revision=10298 --- pkgs/servers/samba/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/servers/samba/default.nix b/pkgs/servers/samba/default.nix index 797f619782c..835781fc17e 100644 --- a/pkgs/servers/samba/default.nix +++ b/pkgs/servers/samba/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { buildInputs = [readline pam openldap kerberos popt iniparser libunwind fam]; configureFlags = ''--with-pam --with-smbmount --datadir=$out/share --with-aio-support '' - + (if stdenv.gcc ? libc then "--with-libiconv=${stdenv.gcc.libc}" else ""); + + (if (stdenv.gcc ? libc && stdenv.gcc.libc) then "--with-libiconv=${stdenv.gcc.libc}" else ""); postUnpack = "sourceRoot=\$sourceRoot/source"; postInstall = ''rm -rf $out/var ; ln -s /var/samba $out/var ''; From 9d5757470ac91bca169f4765b51f61311f39887c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 19:04:37 +0000 Subject: [PATCH 165/320] Fixed samba on freebsd (I hope) svn path=/nixpkgs/branches/stdenv-updates/; revision=10299 --- pkgs/servers/samba/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/servers/samba/default.nix b/pkgs/servers/samba/default.nix index 835781fc17e..fab06b6540c 100644 --- a/pkgs/servers/samba/default.nix +++ b/pkgs/servers/samba/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { buildInputs = [readline pam openldap kerberos popt iniparser libunwind fam]; configureFlags = ''--with-pam --with-smbmount --datadir=$out/share --with-aio-support '' - + (if (stdenv.gcc ? libc && stdenv.gcc.libc) then "--with-libiconv=${stdenv.gcc.libc}" else ""); + + (if (stdenv.gcc.libc != null) then "--with-libiconv=${stdenv.gcc.libc}" else ""); postUnpack = "sourceRoot=\$sourceRoot/source"; postInstall = ''rm -rf $out/var ; ln -s /var/samba $out/var ''; From bfc88db96dcc60e62872500afe27092594161e4c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Fri, 25 Jan 2008 19:04:42 +0000 Subject: [PATCH 166/320] maxima: using mirrof://sf svn path=/nixpkgs/branches/stdenv-updates/; revision=10300 --- pkgs/applications/misc/maxima/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/maxima/default.nix b/pkgs/applications/misc/maxima/default.nix index 9b2fe291310..ad44a7b5d0f 100644 --- a/pkgs/applications/misc/maxima/default.nix +++ b/pkgs/applications/misc/maxima/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { src = fetchurl { name = "maxima-5.13.0.tar.gz"; - url = http://downloads.sourceforge.net/maxima/maxima-5.13.0.tar.gz?modtime=1188046120&big_mirror=1; + url = mirror://sf/maxima/maxima-5.13.0.tar.gz; sha256 = "11zidbbp4cbgsmdfyf9w0j7345ydka469ba0my7p73zqhnby09cn"; }; From 197720f2af2e572c05885b8a5d7504252641781d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 26 Jan 2008 12:02:46 +0000 Subject: [PATCH 167/320] Clisp is compilable svn path=/nixpkgs/branches/stdenv-updates/; revision=10302 --- .../development/interpreters/clisp/builder.sh | 22 -------------- .../interpreters/clisp/default.nix | 30 ++++++++++++++++--- 2 files changed, 26 insertions(+), 26 deletions(-) delete mode 100644 pkgs/development/interpreters/clisp/builder.sh diff --git a/pkgs/development/interpreters/clisp/builder.sh b/pkgs/development/interpreters/clisp/builder.sh deleted file mode 100644 index 89731fbb987..00000000000 --- a/pkgs/development/interpreters/clisp/builder.sh +++ /dev/null @@ -1,22 +0,0 @@ -source $stdenv/setup || exit 1 - -set -e - -tar jxvf $src -cd clisp-* -sed -e 's@/bin/pwd@'${coreutils}'&@' -i src/clisp-link.in -./configure --with-readline builddir --build \ - --prefix=$out --with-dynamic-ffi \ - --with-module=clx/new-clx --with-module=i18n \ - --with-module=bindings/glibc \ - --with-module=pcre --with-module=rawsock \ - --with-module=readline --with-module=syscalls \ - --with-module=wildcard --with-modules=zlib || - for i in $(find . -name config.log ); do - echo ------- - echo $i; - echo === - cat $i; - done > /tmp/clisp-config-log -cd builddir -make install diff --git a/pkgs/development/interpreters/clisp/default.nix b/pkgs/development/interpreters/clisp/default.nix index db2506ae8c7..5095bf985d4 100644 --- a/pkgs/development/interpreters/clisp/default.nix +++ b/pkgs/development/interpreters/clisp/default.nix @@ -1,14 +1,36 @@ args: with args; -stdenv.mkDerivation { - name = "clisp-2.43"; - builder = ./builder.sh; +stdenv.mkDerivation rec { + v = "2.43"; + name = "clisp-${v}"; src = fetchurl { - url = mirror://gnu/clisp/release/2.43/clisp-2.43.tar.bz2; + url = "mirror://gnu/clisp/release/${v}/${name}.tar.bz2"; sha256 = "10qyn6wccnayf1cyvrcanay6c6laar6z1r608w7ijp6nb763q8dm"; }; inherit libsigsegv gettext coreutils; buildInputs = [libsigsegv gettext ncurses readline libX11 libXau libXt pcre zlib]; + + patchPhase = '' + sed -i 's@/bin/pwd@${coreutils}&@' src/clisp-link.in + find . -type f | xargs sed -e 's/-lICE/-lXau &/' -i + ''; + + configureFlags = "--with-readline builddir --with-dynamic-ffi + --with-module=clx/new-clx --with-module=i18n --with-module=bindings/glibc + --with-module=pcre --with-module=rawsock --with-module=readline + --with-module=syscalls --with-module=wildcard --with-module=zlib"; + + preBuild = "cd builddir"; + + NIX_CFLAGS_COMPILE="-O0"; + + # TODO : make mod-check fails + doCheck = 1; + + meta = { + description = "ANSI Common Lisp Implementation"; + homepage = http://clisp.cons.org; + }; } From 2f9d6fc9ba4735a4d456e0a4871a0a5f68b353fd Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 26 Jan 2008 12:02:57 +0000 Subject: [PATCH 168/320] finger client and daemon added svn path=/nixpkgs/branches/stdenv-updates/; revision=10303 --- pkgs/servers/fingerd/bsd-fingerd/default.nix | 17 ++ .../fingerd/bsd-fingerd/ubuntu-0.17-9.patch | 67 +++++ pkgs/tools/networking/bsd-finger/default.nix | 17 ++ .../networking/bsd-finger/ubuntu-0.17-9.patch | 261 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 8 + 5 files changed, 370 insertions(+) create mode 100644 pkgs/servers/fingerd/bsd-fingerd/default.nix create mode 100644 pkgs/servers/fingerd/bsd-fingerd/ubuntu-0.17-9.patch create mode 100644 pkgs/tools/networking/bsd-finger/default.nix create mode 100644 pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch diff --git a/pkgs/servers/fingerd/bsd-fingerd/default.nix b/pkgs/servers/fingerd/bsd-fingerd/default.nix new file mode 100644 index 00000000000..eacf2371d36 --- /dev/null +++ b/pkgs/servers/fingerd/bsd-fingerd/default.nix @@ -0,0 +1,17 @@ +args: with args; +stdenv.mkDerivation rec { + name = "bsd-fingerd-0.17"; + + src = fetchurl { + url = "ftp://ftp.metalab.unc.edu/pub/linux/system/network/finger/bsd-finger-0.17.tar.gz"; + sha256 = "1yhkiv0in588il7f84k2xiy78g9lv12ll0y7047gazhiimk5v244"; + }; + + NIX_CFLAGS_COMPILE="-D_GNU_SOURCE"; + + patches = [./ubuntu-0.17-9.patch]; + + preBuild = "cd fingerd"; + + preInstall = '' ensureDir $out/man/man8 $out/sbin ''; +} diff --git a/pkgs/servers/fingerd/bsd-fingerd/ubuntu-0.17-9.patch b/pkgs/servers/fingerd/bsd-fingerd/ubuntu-0.17-9.patch new file mode 100644 index 00000000000..80968d587ba --- /dev/null +++ b/pkgs/servers/fingerd/bsd-fingerd/ubuntu-0.17-9.patch @@ -0,0 +1,67 @@ +--- bsd-finger-0.17.orig/fingerd/fingerd.8 ++++ bsd-finger-0.17/fingerd/fingerd.8 +@@ -36,10 +36,10 @@ + .Dt FINGERD 8 + .Os "Linux NetKit (0.17)" + .Sh NAME +-.Nm fingerd ++.Nm in.fingerd + .Nd remote user information server + .Sh SYNOPSIS +-.Nm fingerd ++.Nm in.fingerd + .Op Fl wulf + .Op Fl pL Ar path + .Op Fl t Ar timeout +@@ -61,7 +61,7 @@ + banner + which also shows some informations (e.g. uptime, operating system name and + release) about the system the +-.Nm fingerd ++.Nm in.fingerd + is running on. Some sites may consider this a security risk as it + gives out information that may be useful to crackers. + .Pp +@@ -85,7 +85,7 @@ + .Pp + The + .Fl p +-option allows specification of an alternate location for fingerd to find ++option allows specification of an alternate location for in.fingerd to find + the + .Dq finger + program. The +@@ -97,7 +97,7 @@ + option specifies the time to wait for a request before closing the + connection. A value of 0 waits forever. The default is 60 seconds. + .Pp +-Options to fingerd should be specified in ++Options to in.fingerd should be specified in + .Pa /etc/inetd.conf . + .Pp + The finger protocol consists mostly of specifying command arguments. +@@ -105,12 +105,12 @@ + .Xr inetd 8 + .Dq super-server + runs +-.Nm fingerd ++.Nm in.fingerd + for + .Tn TCP + requests received on port 79. + Once connected +-.Nm fingerd ++.Nm in.fingerd + reads a single command line + terminated by a + .Aq Tn CRLF +--- bsd-finger-0.17.orig/fingerd/fingerd.c ++++ bsd-finger-0.17/fingerd/fingerd.c +@@ -55,6 +55,7 @@ + #include + #include + #include ++#include + + #include "pathnames.h" + #include "../version.h" diff --git a/pkgs/tools/networking/bsd-finger/default.nix b/pkgs/tools/networking/bsd-finger/default.nix new file mode 100644 index 00000000000..d627235494b --- /dev/null +++ b/pkgs/tools/networking/bsd-finger/default.nix @@ -0,0 +1,17 @@ +args: with args; +stdenv.mkDerivation rec { + name = "bsd-finger-0.17"; + + src = fetchurl { + url = "ftp://ftp.metalab.unc.edu/pub/linux/system/network/finger/${name}.tar.gz"; + sha256 = "1yhkiv0in588il7f84k2xiy78g9lv12ll0y7047gazhiimk5v244"; + }; + + NIX_CFLAGS_COMPILE="-D_GNU_SOURCE"; + + patches = [./ubuntu-0.17-9.patch]; + + preBuild = "cd finger"; + + preInstall = '' ensureDir $out/man/man1 $out/bin ''; +} diff --git a/pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch b/pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch new file mode 100644 index 00000000000..24decb60281 --- /dev/null +++ b/pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch @@ -0,0 +1,261 @@ +--- bsd-finger-0.17.orig/finger/finger.1 ++++ bsd-finger-0.17/finger/finger.1 +@@ -169,16 +169,14 @@ + must be able to see the + .Pa .nofinger + file. This generally means that the home directory containing the file +-must have the other-users-execute bit set (o+w). See ++must have the other-users-execute bit set (o+x). See + .Xr chmod 1 . + If you use this feature for privacy, please test it with ``finger + @localhost'' before relying on it, just in case. + .It ~/.plan + .It ~/.project +-.It ~/.pgp ++.It ~/.pgpkey + These files are printed as part of a long-format request. The +-.Pa .project +-file is limited to one line; the + .Pa .plan + file may be arbitrarily long. + .El +--- bsd-finger-0.17.orig/finger/finger.c ++++ bsd-finger-0.17/finger/finger.c +@@ -77,7 +77,7 @@ + #include "../version.h" + + static void loginlist(void); +-static void userlist(int argc, char *argv[]); ++static int userlist(int argc, char *argv[]); + + int lflag, pplan; + static int sflag, mflag; +@@ -92,6 +92,7 @@ + + int main(int argc, char *argv[]) { + int ch; ++ int err = 0; + struct sockaddr_in sin; + socklen_t slen = sizeof(sin); + +@@ -159,7 +160,7 @@ + } + } + else { +- userlist(argc, argv); ++ err = userlist(argc, argv); + /* + * Assign explicit "large" format if names given and -s not + * explicitly stated. Force the -l AFTER we get names so any +@@ -172,7 +173,7 @@ + if (lflag) lflag_print(); + else sflag_print(); + } +- return 0; ++ return err; + } + + /* Returns 1 if .nofinger is found and enable_nofinger is set. */ +@@ -181,10 +182,16 @@ + check_nofinger(struct passwd *pw) + { + if (enable_nofinger) { +- char path[PATH_MAX]; + struct stat tripe; +- snprintf(path, sizeof(path), "%s/.nofinger", pw->pw_dir); +- if (stat(path, &tripe)==0) { ++ int ret; ++ char *path; ++ if (asprintf(&path, "%s/.nofinger", pw->pw_dir) < 0) { ++ eprintf("finger: Out of space.\n"); ++ exit(1); ++ } ++ ret = stat(path, &tripe); ++ free(path); ++ if (!ret) { + return 1; + } + } +@@ -264,10 +271,11 @@ + + } + +-static void ++static int + userlist(int argc, char *argv[]) + { + int i; ++ int err = 0; + PERSON *pn; + PERSON *nethead, **nettail; + struct utmp *uptr; +@@ -297,13 +305,13 @@ + + /* handle network requests */ + for (pn = nethead; pn; pn = pn->next) { +- netfinger(pn->name); ++ err |= netfinger(pn->name); + if (pn->next || entries) + xputc('\n'); + } + + if (entries == 0) +- return; ++ return err; + + /* + * Scan thru the list of users currently logged in, saving +@@ -331,4 +339,6 @@ + enter_lastlog(pn); + } + endutent(); ++ ++ return err; + } +--- bsd-finger-0.17.orig/finger/finger.h ++++ bsd-finger-0.17/finger/finger.h +@@ -92,7 +92,7 @@ + void enter_where(struct utmp *ut, PERSON *pn); + void enter_lastlog(PERSON *pn); + int match(struct passwd *pw, const char *user); +-void netfinger(const char *name); ++int netfinger(const char *name); + const char *prphone(const char *num); + + #ifndef DAYSPERNYEAR +--- bsd-finger-0.17.orig/finger/lprint.c ++++ bsd-finger-0.17/finger/lprint.c +@@ -48,7 +48,7 @@ + #include + #include + #include +-#include ++#include + #include "finger.h" + + static void lprint(PERSON *pn); +@@ -100,7 +100,7 @@ + * office, office phone, home phone if available + */ + xprintf("Login: %-15s\t\t\tName: %s\nDirectory: %-25s", +- pn->name, pn->realname, pn->dir); ++ pn->name, pn->realname ? pn->realname : "", pn->dir); + xprintf("\tShell: %-s\n", *pn->shell ? pn->shell : _PATH_BSHELL); + + /* +--- bsd-finger-0.17.orig/finger/net.c ++++ bsd-finger-0.17/finger/net.c +@@ -51,7 +51,7 @@ + #include + #include "finger.h" + +-void netfinger(const char *name) { ++int netfinger(const char *name) { + register FILE *fp; + struct in_addr defaddr; + register int c, sawret, ateol; +@@ -62,7 +62,7 @@ + char *alist[1], *host; + + host = strrchr(name, '@'); +- if (!host) return; ++ if (!host) return 1; + *host++ = '\0'; + + memset(&sn, 0, sizeof(sn)); +@@ -70,7 +70,7 @@ + sp = getservbyname("finger", "tcp"); + if (!sp) { + eprintf("finger: tcp/finger: unknown service\n"); +- return; ++ return 1; + } + sn.sin_port = sp->s_port; + +@@ -78,7 +78,7 @@ + if (!hp) { + if (!inet_aton(host, &defaddr)) { + eprintf("finger: unknown host: %s\n", host); +- return; ++ return 1; + } + def.h_name = host; + def.h_addr_list = alist; +@@ -96,7 +96,7 @@ + + if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) { + eprintf("finger: socket: %s\n", strerror(errno)); +- return; ++ return 1; + } + + /* print hostname before connecting, in case it takes a while */ +@@ -104,7 +104,7 @@ + if (connect(s, (struct sockaddr *)&sn, sizeof(sn)) < 0) { + eprintf("finger: connect: %s\n", strerror(errno)); + close(s); +- return; ++ return 1; + } + + /* -l flag for remote fingerd */ +@@ -128,7 +128,7 @@ + if (!fp) { + eprintf("finger: fdopen: %s\n", strerror(errno)); + close(s); +- return; ++ return 1; + } + + sawret = 0; +@@ -152,4 +152,6 @@ + } + if (!ateol) xputc('\n'); + fclose(fp); ++ ++ return 0; + } +--- bsd-finger-0.17.orig/finger/sprint.c ++++ bsd-finger-0.17/finger/sprint.c +@@ -40,7 +40,7 @@ + #endif /* not lint */ + + #include +-#include ++#include + #include + #include + #include +--- bsd-finger-0.17.orig/finger/util.c ++++ bsd-finger-0.17/finger/util.c +@@ -64,7 +64,7 @@ + struct stat sb; + + /* No device for X console. Utmp entry by XDM login (":0"). */ +- if (w->tty[0] == ':') { ++ if (strchr(w->tty, ':')) { + w->idletime = 0; /* would be nice to have it emit ??? */ + w->writable = 0; + return; +@@ -109,9 +109,8 @@ + * fields[3] -> homephone + */ + nfields = 0; +- for (p = strtok(bp, ","); p; p = strtok(NULL, ",")) { +- if (*p==0) p = NULL; // skip empties +- if (nfields < 4) fields[nfields++] = p; ++ while ((p = strsep(&bp, ","))) { ++ if (nfields < 4) fields[nfields++] = *p ? p : NULL; + } + while (nfields<4) fields[nfields++] = NULL; + +@@ -150,6 +149,9 @@ + + pn->realname = rname; + } ++ else { ++ pn->realname = NULL; ++ } + + pn->office = fields[1] ? strdup(fields[1]) : NULL; + pn->officephone = fields[2] ? strdup(fields[2]) : NULL; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 31cacd14614..885fc12871f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -450,6 +450,10 @@ rec { inherit stdenv findutils; })); + finger_bsd = import ../tools/networking/bsd-finger { + inherit fetchurl stdenv; + }; + fontforge = import ../tools/misc/fontforge { inherit fetchurl stdenv gettext freetype zlib libungif libpng libjpeg libtiff libxml2; @@ -3120,6 +3124,10 @@ rec { inherit fetchurl stdenv expat erlang zlib openssl; }; + fingerd_bsd = import ../servers/fingerd/bsd-fingerd { + inherit fetchurl stdenv; + }; + ircdHybrid = import ../servers/irc/ircd-hybrid { inherit fetchurl stdenv openssl zlib; }; From 433f7fed54fbd328c484634fb0962920a45d6a15 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:15:48 +0000 Subject: [PATCH 169/320] Added x86_64 version of JDK5 svn path=/nixpkgs/branches/stdenv-updates/; revision=10376 --- 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 885fc12871f..19d873d928a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1164,7 +1164,7 @@ rec { }; jdk5 = - assert system == "i686-linux"; + assert system == "i686-linux" || system == "x86_64-linux"; import ../development/compilers/jdk/default-5.nix { inherit fetchurl stdenv unzip; }; From b95a97e2d4dc1ea73c3231bf0d5e36e1b2e5edee Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:15:56 +0000 Subject: [PATCH 170/320] Minor change to composing templates. svn path=/nixpkgs/branches/stdenv-updates/; revision=10377 --- pkgs/top-level/template-composing+config.nix | 2 +- pkgs/top-level/template-composing-builder.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/template-composing+config.nix b/pkgs/top-level/template-composing+config.nix index 7ff4f3f9d50..172cd9c4797 100644 --- a/pkgs/top-level/template-composing+config.nix +++ b/pkgs/top-level/template-composing+config.nix @@ -1,4 +1,4 @@ -args : with args; let localDefs = builderDefs (args // { +args : with args; let localDefs = builderDefs (args // rec { src = /* put a fetchurl here */ (abort "Specify source"); useConfig = true; diff --git a/pkgs/top-level/template-composing-builder.nix b/pkgs/top-level/template-composing-builder.nix index 276bdc762dc..88bf2b63cfa 100644 --- a/pkgs/top-level/template-composing-builder.nix +++ b/pkgs/top-level/template-composing-builder.nix @@ -1,10 +1,10 @@ args : with args; with builderDefs {src="";} null; - let localDefs = builderDefs { + let localDefs = builderDefs (rec { src = /* put a fetchurl here */ buildInputs = []; configureFlags = []; - } null; /* null is a terminator for sumArgs */ + }) null; /* null is a terminator for sumArgs */ in with localDefs; stdenv.mkDerivation rec { name = "${abort "Specify name"}-"+version; From 9eb8065a74d5fb22f5ba77126c638c24c79032eb Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:16:06 +0000 Subject: [PATCH 171/320] * added rdesktop svn path=/nixpkgs/branches/stdenv-updates/; revision=10378 --- .../networking/remote/rdesktop/default.nix | 20 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 25 insertions(+) create mode 100644 pkgs/applications/networking/remote/rdesktop/default.nix diff --git a/pkgs/applications/networking/remote/rdesktop/default.nix b/pkgs/applications/networking/remote/rdesktop/default.nix new file mode 100644 index 00000000000..c81160ae57c --- /dev/null +++ b/pkgs/applications/networking/remote/rdesktop/default.nix @@ -0,0 +1,20 @@ +{stdenv, fetchurl, openssl, libX11} : + +stdenv.mkDerivation (rec { + pname = "rdesktop"; + version = "1.5.0"; + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/${pname}/${name}.tar.gz"; + sha256 = "5ead17c3d29cb1028aeca485ee7a8c65694c1b02a1b7014c3da920b265a438aa"; + }; + + buildInputs = [openssl libX11]; + + configureFlags = [ "--with-openssl=${openssl}" ]; + + meta = { + description = "rdesktop is an open source client for Windows Terminal Services"; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 19d873d928a..f1c365cfb2e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4477,6 +4477,11 @@ rec { inherit fetchurl stdenv; }; + rdesktop = import ../applications/networking/remote/rdesktop { + inherit fetchurl stdenv openssl; + inherit (xlibs) libX11; + }; + RealPlayer = import ../applications/video/RealPlayer { inherit fetchurl stdenv; inherit (gtkLibs) glib pango atk gtk; From 6002db9e01633d098a290ed481f025b3e7db51ab Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:16:26 +0000 Subject: [PATCH 172/320] Removed deploy sed instruction \(is obsolete\) svn path=/nixpkgs/branches/stdenv-updates/; revision=10379 --- pkgs/servers/http/jboss/builder.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/servers/http/jboss/builder.sh b/pkgs/servers/http/jboss/builder.sh index 1a9e650ebcc..33562000919 100644 --- a/pkgs/servers/http/jboss/builder.sh +++ b/pkgs/servers/http/jboss/builder.sh @@ -13,6 +13,3 @@ cp -av output/jboss-*/* $out # Insert JAVA_HOME variable to make sure the latest JRE is used and not version 5 sed -i -e "/GREP/aJAVA_HOME=$jdk" $out/bin/run.sh - -# Change the deploy directory to the nix profile -sed -i -e "s|deploy/|/nix/var/nix/profiles/default/server/default/deploy/|" $out/server/default/conf/jboss-service.xml From 378a59a7b85e4054698e4000f2adc009186f50d5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:16:40 +0000 Subject: [PATCH 173/320] pgadmin3 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10380 --- pkgs/applications/misc/pgadmin/default.nix | 18 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/applications/misc/pgadmin/default.nix diff --git a/pkgs/applications/misc/pgadmin/default.nix b/pkgs/applications/misc/pgadmin/default.nix new file mode 100644 index 00000000000..a02ee299ef0 --- /dev/null +++ b/pkgs/applications/misc/pgadmin/default.nix @@ -0,0 +1,18 @@ +args: +args.stdenv.mkDerivation { + name = "pgadmin3-1.8.1"; + + src = args.fetchurl { + name = "pgadmin3-v1.8.1.tar.gz"; + url = "http://ftp3.de.postgresql.org/pub/Mirrors/ftp.postgresql.org//pgadmin3/release/v1.8.1/src/pgadmin3-1.8.1.tar.gz"; + sha256 = "1vnpbgb2ksvcgbzab4jjspwvs5cvam53azinfavjad4kpjczdywb"; + }; + + buildInputs =(with args; [postgresql wxGTK libxml2 libxslt openssl]); + + meta = { + description = "postgresql admin gui tool"; + homepage = http://www.pgadmin.org/download/; + license = "GPL2"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f1c365cfb2e..972cc0bb990 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5104,6 +5104,11 @@ rec { inherit fetchurl stdenv; }; + pgadmin = import ../applications/misc/pgadmin { + inherit fetchurl stdenv postgresql libxml2 libxslt openssl; + wxGTK = wxGTK28; + }; + pgf = import ../misc/tex/pgf { inherit fetchurl stdenv; }; From 316b5505cd7702c069d7560e7b794298eb88acdb Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:17:02 +0000 Subject: [PATCH 174/320] Added aterm 2.5 svn path=/nixpkgs/branches/stdenv-updates/; revision=10381 --- pkgs/development/libraries/aterm/2.5.nix | 14 ++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/development/libraries/aterm/2.5.nix diff --git a/pkgs/development/libraries/aterm/2.5.nix b/pkgs/development/libraries/aterm/2.5.nix new file mode 100644 index 00000000000..f30be007fa5 --- /dev/null +++ b/pkgs/development/libraries/aterm/2.5.nix @@ -0,0 +1,14 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "aterm-2.5"; + src = fetchurl { + url = http://buildfarm.st.ewi.tudelft.nl/releases/meta-environment/aterm-2.5pre21238-l2q7rg38/aterm-2.5.tar.gz; + md5 = "33ddcb1a229baf406ad1f603eb1d5995"; + }; + meta = { + homepage = http://www.cwi.nl/htbin/sen1/twiki/bin/view/SEN1/ATerm; + license = "LGPL"; + description = "Library for manipulation of term data structures in C"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 972cc0bb990..84d16217e0a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1731,6 +1731,10 @@ rec { inherit fetchurl stdenv; }; + aterm25 = import ../development/libraries/aterm/2.5.nix { + inherit fetchurl stdenv; + }; + attr = import ../development/libraries/attr { inherit stdenv fetchurl autoconf libtool gettext; }; From 1ec43cc340e95fdf2126de2aa0150fd5bd6817d2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:17:19 +0000 Subject: [PATCH 175/320] Added sdf2-bundle 2.4 svn path=/nixpkgs/branches/stdenv-updates/; revision=10382 --- .../tools/parsing/sdf/sdf2-bundle-2.4.nix | 12 ++++++++++++ pkgs/top-level/all-packages.nix | 8 ++++++++ 2 files changed, 20 insertions(+) create mode 100644 pkgs/development/tools/parsing/sdf/sdf2-bundle-2.4.nix diff --git a/pkgs/development/tools/parsing/sdf/sdf2-bundle-2.4.nix b/pkgs/development/tools/parsing/sdf/sdf2-bundle-2.4.nix new file mode 100644 index 00000000000..7d62d743070 --- /dev/null +++ b/pkgs/development/tools/parsing/sdf/sdf2-bundle-2.4.nix @@ -0,0 +1,12 @@ +{stdenv, fetchurl, aterm, getopt, pkgconfig}: + +stdenv.mkDerivation { + name = "sdf2-bundle-2.4"; + src = fetchurl { + url = http://buildfarm.st.ewi.tudelft.nl/releases/meta-environment/sdf2-bundle-2.4pre212034-2nspl1xc/sdf2-bundle-2.4.tar.gz; + md5 = "00107bef17d3fb8486575f8974fb384b"; + }; + + buildInputs = [aterm pkgconfig]; + propagatedBuildInputs = [getopt]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 84d16217e0a..e907a932733 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1632,6 +1632,14 @@ rec { stdenv = overrideInStdenv stdenv [gnumake380]; }; + sdf24 = import ../development/tools/parsing/sdf/sdf2-bundle-2.4.nix { + inherit fetchurl getopt pkgconfig; + aterm = aterm25; + # Note: sdf2-bundle currently requires GNU make 3.80; remove + # explicit dependency when this is fixed. + stdenv = overrideInStdenv stdenv [gnumake380]; + }; + strace = import ../development/tools/misc/strace { inherit fetchurl stdenv; }; From 8b871ad3392362f5c42a5e7ab5929ffddb871bef Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:17:25 +0000 Subject: [PATCH 176/320] Added Stratego/XT 0.17 prerelease svn path=/nixpkgs/branches/stdenv-updates/; revision=10383 --- .../compilers/strategoxt/strategoxt-0.17.nix | 15 +++++++++++++++ pkgs/top-level/all-packages.nix | 7 +++++++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/development/compilers/strategoxt/strategoxt-0.17.nix diff --git a/pkgs/development/compilers/strategoxt/strategoxt-0.17.nix b/pkgs/development/compilers/strategoxt/strategoxt-0.17.nix new file mode 100644 index 00000000000..fa56d6e35e6 --- /dev/null +++ b/pkgs/development/compilers/strategoxt/strategoxt-0.17.nix @@ -0,0 +1,15 @@ +{stdenv, fetchurl, aterm, sdf, pkgconfig}: + +stdenv.mkDerivation { + + name = "strategoxt-0.17"; + builder = ./builder.sh; + + src = fetchurl { + url = http://buildfarm.st.ewi.tudelft.nl/releases/strategoxt/strategoxt-0.17M3pre17099/strategoxt-0.17M3pre17099.tar.gz; + md5 = "fc9bc3cb6d80bfa6ee1fadd2dd828c72"; + }; + + inherit aterm sdf; + buildInputs = [pkgconfig aterm sdf]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e907a932733..348c6cefc0c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1252,6 +1252,13 @@ rec { stdenv = overrideInStdenv stdenv [gnumake380]; }; + strategoxt017 = import ../development/compilers/strategoxt/strategoxt-0.17.nix { + inherit fetchurl pkgconfig; + sdf = sdf24; + aterm = aterm25; + stdenv = overrideInStdenv stdenv [gnumake380]; + }; + strategoxtUtils = import ../development/compilers/strategoxt/utils { inherit fetchurl pkgconfig stdenv aterm sdf strategoxt; }; From 13255753b4f85125be3067db9ec2b7c8cdaedc8d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:17:42 +0000 Subject: [PATCH 177/320] Added java-front svn path=/nixpkgs/branches/stdenv-updates/; revision=10384 --- pkgs/development/compilers/java-front/builder.sh | 4 ++++ pkgs/development/compilers/java-front/default.nix | 14 ++++++++++++++ pkgs/top-level/all-packages.nix | 7 +++++++ 3 files changed, 25 insertions(+) create mode 100644 pkgs/development/compilers/java-front/builder.sh create mode 100644 pkgs/development/compilers/java-front/default.nix diff --git a/pkgs/development/compilers/java-front/builder.sh b/pkgs/development/compilers/java-front/builder.sh new file mode 100644 index 00000000000..0177abcccea --- /dev/null +++ b/pkgs/development/compilers/java-front/builder.sh @@ -0,0 +1,4 @@ +source $stdenv/setup + +configureFlags="--with-aterm=$aterm --with-sdf=$sdf --with-strategoxt=$strategoxt" +genericBuild diff --git a/pkgs/development/compilers/java-front/default.nix b/pkgs/development/compilers/java-front/default.nix new file mode 100644 index 00000000000..fc60e72a562 --- /dev/null +++ b/pkgs/development/compilers/java-front/default.nix @@ -0,0 +1,14 @@ +{stdenv, fetchurl, aterm, sdf, strategoxt, pkgconfig}: + +stdenv.mkDerivation { + name = "java-front-0.9"; + builder = ./builder.sh; + + src = fetchurl { + url = http://buildfarm.st.ewi.tudelft.nl/releases/strategoxt/java-front-0.9pre17376-qi43zwhy/java-front-0.9pre17376.tar.gz; + md5 = "fec70158b110c77a2e5db29676438029"; + }; + + inherit aterm sdf strategoxt; + buildInputs = [pkgconfig aterm sdf strategoxt]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 348c6cefc0c..489698ddb56 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1151,6 +1151,13 @@ rec { ghc = ghc661; }; + javafront = import ../development/compilers/java-front { + inherit stdenv fetchurl pkgconfig; + sdf = sdf24; + aterm = aterm25; + strategoxt = strategoxt017; + }; + #TODO add packages http://cvs.haskell.org/Hugs/downloads/2006-09/packages/ and test # commented out because it's using the new configuration style proposal which is unstable #hugs = import ../development/compilers/hugs { From e22cd8245e80f437df6273db5767eb99a14bb1b0 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:18:05 +0000 Subject: [PATCH 178/320] Added MySQL driver link to JBoss svn path=/nixpkgs/branches/stdenv-updates/; revision=10385 --- pkgs/servers/http/jboss/jdbc/mysql/builder.sh | 5 +++++ pkgs/servers/http/jboss/jdbc/mysql/default.nix | 9 +++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 3 files changed, 18 insertions(+) create mode 100644 pkgs/servers/http/jboss/jdbc/mysql/builder.sh create mode 100644 pkgs/servers/http/jboss/jdbc/mysql/default.nix diff --git a/pkgs/servers/http/jboss/jdbc/mysql/builder.sh b/pkgs/servers/http/jboss/jdbc/mysql/builder.sh new file mode 100644 index 00000000000..06d60fc5e12 --- /dev/null +++ b/pkgs/servers/http/jboss/jdbc/mysql/builder.sh @@ -0,0 +1,5 @@ +buildInputs="$mysql_jdbc" +source $stdenv/setup + +ensureDir $out/server/default/lib +ln -s $mysql_jdbc/share/java/mysql-connector-java.jar $out/server/default/lib/mysql-connector-java.jar diff --git a/pkgs/servers/http/jboss/jdbc/mysql/default.nix b/pkgs/servers/http/jboss/jdbc/mysql/default.nix new file mode 100644 index 00000000000..8544ce050af --- /dev/null +++ b/pkgs/servers/http/jboss/jdbc/mysql/default.nix @@ -0,0 +1,9 @@ +{ stdenv, jboss, mysql_jdbc }: + +stdenv.mkDerivation { + name = "jboss-mysql-jdbc"; + + builder = ./builder.sh; + + inherit mysql_jdbc; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 489698ddb56..c8e18e389bd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3162,6 +3162,10 @@ rec { inherit fetchurl stdenv jdk5 jdk; }; + jboss_mysql_jdbc = import ../servers/http/jboss/jdbc/mysql { + inherit stdenv jboss mysql_jdbc; + }; + jetty = import ../servers/http/jetty { inherit fetchurl stdenv unzip; }; From c1a512f2a10b9eca7c1c01512da3c828c66ae7be Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Tue, 29 Jan 2008 13:18:13 +0000 Subject: [PATCH 179/320] Added WebDSL svn path=/nixpkgs/branches/stdenv-updates/; revision=10386 --- pkgs/development/compilers/webdsl/builder.sh | 8 ++++++++ pkgs/development/compilers/webdsl/default.nix | 14 ++++++++++++++ pkgs/top-level/all-packages.nix | 7 +++++++ 3 files changed, 29 insertions(+) create mode 100644 pkgs/development/compilers/webdsl/builder.sh create mode 100644 pkgs/development/compilers/webdsl/default.nix diff --git a/pkgs/development/compilers/webdsl/builder.sh b/pkgs/development/compilers/webdsl/builder.sh new file mode 100644 index 00000000000..d77094a91b0 --- /dev/null +++ b/pkgs/development/compilers/webdsl/builder.sh @@ -0,0 +1,8 @@ +source $stdenv/setup + +configureFlags="--with-aterm=$aterm --with-sdf=$sdf --with-strategoxt=$strategoxt" +genericBuild + +# Replace /bin/bash in WebDSL script (maybe there is a better solution?) + +sed -i -e "s|#!/bin/bash|#!/bin/sh|" $out/bin/webdsl diff --git a/pkgs/development/compilers/webdsl/default.nix b/pkgs/development/compilers/webdsl/default.nix new file mode 100644 index 00000000000..da961cbf2f6 --- /dev/null +++ b/pkgs/development/compilers/webdsl/default.nix @@ -0,0 +1,14 @@ +{stdenv, fetchurl, aterm, sdf, strategoxt, pkgconfig, javafront}: + +stdenv.mkDerivation { + name = "webdsl-7.12pre876"; + builder = ./builder.sh; + + src = fetchurl { + url = http://buildfarm.st.ewi.tudelft.nl/releases/strategoxt/webdsl-7.12pre876-g60njq3p/webdsl-7.12pre876.tar.gz; + md5 = "7cd8709b02e03da74d90f8f8388e8d01"; + }; + + inherit aterm sdf strategoxt javafront; + buildInputs = [pkgconfig aterm sdf strategoxt javafront]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c8e18e389bd..69aca64e56f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1291,6 +1291,13 @@ rec { inherit fetchurl stdenv cabextract; }; + webdsl = import ../development/compilers/webdsl { + inherit stdenv fetchurl pkgconfig javafront; + aterm = aterm25; + sdf = sdf24; + strategoxt = strategoxt017; + }; + win32hello = import ../development/compilers/visual-c++/test { inherit fetchurl stdenv visualcpp windowssdk; }; From 54303ac99c827f0a969ea437ec12e88400c6f2d2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:38:37 +0000 Subject: [PATCH 180/320] * Added AUFS, another Unionfs. svn path=/nixpkgs/branches/stdenv-updates/; revision=10420 --- pkgs/os-specific/linux/aufs/default.nix | 35 +++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 23 +++++++++------- 2 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 pkgs/os-specific/linux/aufs/default.nix diff --git a/pkgs/os-specific/linux/aufs/default.nix b/pkgs/os-specific/linux/aufs/default.nix new file mode 100644 index 00000000000..c053a807307 --- /dev/null +++ b/pkgs/os-specific/linux/aufs/default.nix @@ -0,0 +1,35 @@ +{stdenv, fetchurl, kernel}: + +stdenv.mkDerivation { + name = "aufs-20080128"; + + src = fetchurl { + url = http://nix.cs.uu.nl/dist/tarballs/aufs-20080128.tar.bz2; + sha256 = "0732zp6wfss09x9d6n0a3v65rifn739m9nffi5d3952vglg4va6l"; + }; + + buildPhase = '' + mkdir kernelsrc + tar xvf ${kernel.src} -C kernelsrc + + kernelVersion=$(cd ${kernel}/lib/modules && ls) + substituteInPlace fs/aufs/Makefile --replace srctree srctree2 + make KDIR=${kernel}/lib/modules/$kernelVersion/build srctree2=$(pwd)/kernelsrc/* -f local.mk + ''; + + installPhase = '' + ensureDir $out/bin + cp util/aulchown $out/bin + + ensureDir $out/share/man/man5 + cp util/aufs.5 $out/share/man/man5 + + ensureDir $out/lib/modules/$kernelVersion/misc + cp aufs.ko $out/lib/modules/$kernelVersion/misc + ''; + + meta = { + description = "Another Unionfs implementation for Linux"; + homepage = http://aufs.sourceforge.net/; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 69aca64e56f..cc46d30566a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -150,9 +150,8 @@ rec { # The same, another syntax. # Warning: syntax for configuration.nix changed too - useVersion = name: f: f - { - version = getConfig [ "environment" "versions" name ]; + useVersion = name: f: f { + version = getConfig [ "environment" "versions" name ]; }; # The contents of the configuration file found at $NIXPKGS_CONFIG or @@ -3269,10 +3268,14 @@ rec { atherosVersion = "r3122"; - atherosFunCurrent = theKernel: (atherosFun { + atherosFunCurrent = kernel: atherosFun { version = atherosVersion; - kernel = theKernel; - } null); + inherit kernel; + } null; + + aufs = import ../os-specific/linux/aufs { + inherit fetchurl stdenv kernel; + }; bridge_utils = import ../os-specific/linux/bridge_utils { inherit fetchurl stdenv autoconf automake; @@ -3351,7 +3354,7 @@ rec { }; htop = import ../os-specific/linux/htop { - inherit fetchurl stdenv ncurses; + inherit fetchurl stdenv ncurses; }; hwdata = import ../os-specific/linux/hwdata { @@ -3790,8 +3793,8 @@ rec { }; shared_mime_info = import ../data/misc/shared-mime-info { - inherit fetchurl stdenv perl perlXMLParser pkgconfig gettext libxml2; - inherit (gtkLibs) glib; + inherit fetchurl stdenv perl perlXMLParser pkgconfig gettext libxml2; + inherit (gtkLibs) glib; }; iana_etc = import ../data/misc/iana-etc { @@ -3799,7 +3802,7 @@ rec { }; poppler_data = import ../data/misc/poppler-data { - inherit fetchurl stdenv; + inherit fetchurl stdenv; }; ttf_bitstream_vera = import ../data/fonts/ttf-bitstream-vera { From 864a711d1be21e636380fd0ab992db3afc51bc55 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:38:45 +0000 Subject: [PATCH 181/320] update ghc proposal (still not working) svn path=/nixpkgs/branches/stdenv-updates/; revision=10421 --- pkgs/top-level/all-packages.nix | 30 +++++++++++++----------------- pkgs/top-level/builder-defs.nix | 10 +++++----- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc46d30566a..3815255b905 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1020,8 +1020,6 @@ rec { profiledCompiler = true; }); - /* doesn't work yet - # This new ghc stuff is under heavy development and might change ! # usage: see ghcPkgUtil.sh - use setup-new2 because of PATH_DELIMITER @@ -1044,20 +1042,20 @@ rec { }; # this will change in the future - ghc68_extra_libs = - ghc : let - deriv = name : goSrcDir : deps : - let bd = builderDefs { - goSrcDir = "ghc-* /libraries"; - src = ghc.extra_src; - } null; in - stdenv.mkDerivation rec { - inherit name; - builder = bd.writeScript (name + "-builder") - (bd.textClosure [builderDefs.haskellBuilderDefs]); - }; + ghc68_extra_libs = ghc: + let deriv = name : goSrcDir : deps : + let localDefs = builderDefs { + inherit goSrcDir; + src = ghc.extra_src; + } null; + in with localDefs; + stdenv.mkDerivation rec { + inherit name; + builder = writeScript (name + "-builder") + (textClosure localDefs [ cabalBuild ]); + }; # using nvs to be able to use mtl-1.1.0.0 as name - in lib.nvs "mtl-1.1.0.0" (deriv "mtl-1.1.0.0" "libraries/mtl" [ (__getAttr "base-3.0.1.0" ghc.core_libs) ]); + in lib.nvs "mtl-1.1.0.0" (deriv "mtl-1.1.0.0" "cd libraries/mtl" [ (__getAttr "base-3.0.1.0" ghc.core_libs) ]); # this will change in the future ghc68_extra_libs = @@ -1099,8 +1097,6 @@ rec { inherit ghc; }; - */ - # ghc66boot = import ../development/compilers/ghc-6.6-boot { # inherit fetchurl stdenv perl readline; # m4 = gnum4; diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix index af89fd03702..5757098cf8d 100644 --- a/pkgs/top-level/builder-defs.nix +++ b/pkgs/top-level/builder-defs.nix @@ -204,6 +204,7 @@ args: with args; with stringsWithDeps; with lib; bzip2 -d <${s} > \$PWD/\$(basename ${s} .bz2)/\${NAME#*-} cd \$(basename ${s} .bz2) " else (abort "unknown archive type : ${s}"))+ + # goSrcDir is typically something like "cd mysubdir" .. but can be anything else (if args ? goSrcDir then args.goSrcDir else "") ) ["minInit"]; @@ -288,7 +289,7 @@ args: with args; with stringsWithDeps; with lib; replaceScripts = l:(concatStringsSep "\n" (pairMap replaceInScript l)); doReplaceScripts = FullDepEntry (replaceScripts (getAttr ["shellReplacements"] [] args)) [minInit]; makeNest = x:(if x==defNest.text then x else "startNest\n" + x + "\nstopNest\n"); - textClosure = textClosureMapOveridable makeNest; + textClosure = a : steps : textClosureMapOveridable makeNest a (["defNest"] ++ steps); inherit noDepEntry FullDepEntry PackEntry; @@ -360,7 +361,7 @@ args: with args; with stringsWithDeps; with lib; PACKAGE_DB=$out/nix-support/package.conf; echo '[]' > \"$PACKAGE_DB\"; setupHookRegisteringPackageDatabase - }" [defSetupHookRegisteringPackageDatabase]; + }" ["defSetupHookRegisteringPackageDatabase" "defEnsureDir"]; # Cabal does only support --user ($HOME/.ghc/** ) and --global (/nix/store/*-ghc/lib/...) # But we need kind of --custom=my-package-db @@ -375,8 +376,7 @@ args: with args; with stringsWithDeps; with lib; # and ./setup register --gen-script to install to our local database # after replacing /usr/lib etc with our pure $out path cabalBuild = FullDepEntry - (if (args ? subdir) then "cd ${args.subdir}" else "")+ " - createEmptyPackageDatabaseAndSetupHook + " createEmptyPackageDatabaseAndSetupHook ghc --make setup.hs -o setup \$CABAL_SETUP configure \$CABAL_SETUP build @@ -385,6 +385,6 @@ args: with args; with stringsWithDeps; with lib; sed -e 's=/usr/local/lib=\$out=g' \\ -i register.sh GHC_PACKAGE_PATH=\$PACKAGE_DB ./register.sh - " [defCreateEmptyPackageDatabaseAndSetupHook defCabalSetupCmd]; + " ["defCreateEmptyPackageDatabaseAndSetupHook" "defCabalSetupCmd"]; }) // args From b987e603f09b2947150010feb128c4c03e082085 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:39:01 +0000 Subject: [PATCH 182/320] * Description of the current coding conventions in Nixpkgs / NixOS. Comments welcome. svn path=/nixpkgs/branches/stdenv-updates/; revision=10422 --- maintainers/docs/coding-conventions.txt | 97 +++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 maintainers/docs/coding-conventions.txt diff --git a/maintainers/docs/coding-conventions.txt b/maintainers/docs/coding-conventions.txt new file mode 100644 index 00000000000..c95dc3c3600 --- /dev/null +++ b/maintainers/docs/coding-conventions.txt @@ -0,0 +1,97 @@ +Some conventions: + +* Don't use TABs. Everybody has different TAB settings so it's asking + for trouble. + +* Use 2 spaces of indentation per indentation level in Nix + expressions, 4 spaces in shell scripts. (Maybe 2 is too low, but + for consistency's sake it should be the same. Certainly indentation + should be consistent within a single file.) + +* Use lowerCamelCase for variable names, not UpperCamelCase. + +* Function calls with attribute set arguments are written as + + foo { + arg = ...; + } + + not + + foo + { + arg = ...; + } + + Also fine is + + foo { arg = ...; } + + if it's a short call. + +* In attribute sets or lists that span multiple lines, the attribute + names or list elements should be aligned: + + # A long list. + list = [ + elem1 + elem2 + elem3 + ]; + + # A long attribute set. + attrs = { + attr1 = short_expr; + attr2 = + if true then big_expr else big_expr; + }; + +* Short lists or attribute sets can be written on one line: + + # A short list. + list = [ elem1 elem2 elem3 ]; + + # A short set. + attrs = { x = 1280; y = 1024; }; + +* Breaking in the middle of a function argument can give hard-to-read + code, like + + someFunction { x = 1280; + y = 1024; } otherArg + yetAnotherArg + + (especially if the argument is very large, spanning multiple lines). + + Better: + + someFunction + { x = 1280; y = 1024; } + otherArg + yetAnotherArg + + or + + let res = { x = 1280; y = 1024; }; + in someFunction res otherArg yetAnotherArg + +* The bodies of functions, asserts, and withs are not indented, so + + assert system == "i686-linux"; + stdenv.mkDerivation { ... + + not + + assert system == "i686-linux"; + stdenv.mkDerivation { ... + +* Function formal arguments are written as: + + {arg1, arg2, arg3}: + + but if they don't fit on one line they're written as: + + { arg1, arg2, arg3 + , arg4, ... + , argN + }: From 50f0ca2d9b967c6340f7b8c7a1b7ffc7e3204101 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:39:16 +0000 Subject: [PATCH 183/320] * Apache 2.2.8. svn path=/nixpkgs/branches/stdenv-updates/; revision=10423 --- pkgs/servers/http/apache-httpd/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/http/apache-httpd/default.nix b/pkgs/servers/http/apache-httpd/default.nix index 92a442728d8..76865cf3426 100644 --- a/pkgs/servers/http/apache-httpd/default.nix +++ b/pkgs/servers/http/apache-httpd/default.nix @@ -7,12 +7,12 @@ assert db4Support -> db4 != null; assert expat != null && perl != null; stdenv.mkDerivation { - name = "apache-httpd-2.2.6"; + name = "apache-httpd-2.2.8"; builder = ./builder.sh; src = fetchurl { - url = http://archive.apache.org/dist/httpd/httpd-2.2.6.tar.bz2; - md5 = "203bea91715064f0c787f6499d33a377"; + url = http://archive.apache.org/dist/httpd/httpd-2.2.8.tar.bz2; + md5 = "76d2598a4797163d07cd50e5304aa7cd"; }; inherit sslSupport db4Support; From 4ef94bc9061343bb433834f070b4bae47bd9dd21 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:39:31 +0000 Subject: [PATCH 184/320] * Latest unstable Nix. svn path=/nixpkgs/branches/stdenv-updates/; revision=10424 --- pkgs/tools/package-management/nix/unstable.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index 79d46ce8e84..a204b10f1f5 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -3,22 +3,23 @@ , stateDir ? "/nix/var" }: -let version = "0.12pre10154"; in +let version = "0.12pre10389"; in stdenv.mkDerivation { name = "nix-${version}"; src = fetchurl { url = "http://nix.cs.uu.nl/dist/nix/nix-${version}/nix-${version}.tar.bz2"; - md5 = "9e5833e34ade23852a1270d0f2a98ce2"; + md5 = "5824debe60299ebc9c5aa6532e6a8b67"; }; buildInputs = [perl curl openssl]; - configureFlags = " + configureFlags = '' --with-store-dir=${storeDir} --localstatedir=${stateDir} --with-aterm=${aterm} --with-bdb=${db4} --with-bzip2=${bzip2} - --disable-init-state"; + --disable-init-state + ''; meta = { description = "The Nix Deployment System"; From 671fd9e7212bfe0d1a01578eddb12f0806475f4b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:39:47 +0000 Subject: [PATCH 185/320] Added Apache Tomcat 6.0 svn path=/nixpkgs/branches/stdenv-updates/; revision=10425 --- pkgs/servers/http/tomcat/6.0.nix | 15 +++++++++++++++ pkgs/servers/http/tomcat/builder-6.0.sh | 6 ++++++ pkgs/top-level/all-packages.nix | 4 ++++ 3 files changed, 25 insertions(+) create mode 100644 pkgs/servers/http/tomcat/6.0.nix create mode 100644 pkgs/servers/http/tomcat/builder-6.0.sh diff --git a/pkgs/servers/http/tomcat/6.0.nix b/pkgs/servers/http/tomcat/6.0.nix new file mode 100644 index 00000000000..32a3dedde47 --- /dev/null +++ b/pkgs/servers/http/tomcat/6.0.nix @@ -0,0 +1,15 @@ +{stdenv, fetchurl, jdk}: + +stdenv.mkDerivation { + + name = "apache-tomcat-6.0.14"; + + builder = ./builder-6.0.sh; + + src = fetchurl { + url = http://apache.mirrors.webazilla.nl/tomcat/tomcat-6/v6.0.14/bin/apache-tomcat-6.0.14.tar.gz; + md5 = "3b18ff250d8172737c4f67f11631f68a"; + }; + + inherit jdk; +} diff --git a/pkgs/servers/http/tomcat/builder-6.0.sh b/pkgs/servers/http/tomcat/builder-6.0.sh new file mode 100644 index 00000000000..ae2f934af59 --- /dev/null +++ b/pkgs/servers/http/tomcat/builder-6.0.sh @@ -0,0 +1,6 @@ +source $stdenv/setup + +tar zxf $src + +mkdir $out +mv apache-tomcat*/* $out diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3815255b905..b4b731b7b2e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3224,6 +3224,10 @@ rec { inherit fetchurl stdenv jdk; }; + tomcat6 = import ../servers/http/tomcat/6.0.nix { + inherit fetchurl stdenv jdk; + }; + vsftpd = import ../servers/ftp/vsftpd { inherit fetchurl openssl stdenv libcap pam; }; From e6a64be5c8eaf4a99942eb7fbf6c02d04ff2ebfd Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:40:02 +0000 Subject: [PATCH 186/320] subversion: using getConfig svn path=/nixpkgs/branches/stdenv-updates/; revision=10426 --- pkgs/top-level/all-packages.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b4b731b7b2e..eb1daf82d80 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4602,12 +4602,14 @@ rec { }; subversion14 = import ../applications/version-management/subversion-1.4.x { - inherit fetchurl stdenv apr aprutil neon expat swig zlib; - bdbSupport = true; - httpServer = false; + inherit fetchurl stdenv apr aprutil neon expat swig zlib jdk; + bdbSupport = getConfig ["subversion" "bdbSupport"] true; + httpServer = getConfig ["subversion" "httpServer"] false; + sslSupport = getConfig ["subversion" "sslSupport"] true; + pythonBindings = getConfig ["subversion" "pythonBindings"] false; perlBindings = getConfig ["subversion" "perlBindings"] false; - sslSupport = true; - compressionSupport = true; + javahlBindings = getConfig ["subversion" "javahlBindings"] false; + compressionSupport = getConfig ["subversion" "compressionSupport"] true; httpd = apacheHttpd; }; From 77ccd225e7c393aed5cae5a8af18a5d65d196c37 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:40:09 +0000 Subject: [PATCH 187/320] subversion: corrected location of python-bindings svn path=/nixpkgs/branches/stdenv-updates/; revision=10427 --- .../version-management/subversion-1.4.x/builder.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/version-management/subversion-1.4.x/builder.sh b/pkgs/applications/version-management/subversion-1.4.x/builder.sh index 9a503a92601..70d78b4a624 100644 --- a/pkgs/applications/version-management/subversion-1.4.x/builder.sh +++ b/pkgs/applications/version-management/subversion-1.4.x/builder.sh @@ -7,8 +7,8 @@ fi postInstall() { if test "$pythonBindings"; then - make swig-py swig_pydir=$(toPythonPath $out) - make install-swig-py swig_pydir=$(toPythonPath $out) + make swig-py swig_pydir=$(toPythonPath $out)/libsvn swig_pydir_extra=$(toPythonPath $out)/svn + make install-swig-py swig_pydir=$(toPythonPath $out)/libsvn swig_pydir_extra=$(toPythonPath $out)/svn fi if test "$perlBindings"; then make swig-pl-lib From b1b8c4f258dbe305f0d2b5d7a94151d6bb7087b6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:40:21 +0000 Subject: [PATCH 188/320] * Added ms-sys, a program for writing Microsoft compatible boot records. svn path=/nixpkgs/branches/stdenv-updates/; revision=10428 --- pkgs/tools/misc/mssys/default.nix | 22 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 26 insertions(+) create mode 100644 pkgs/tools/misc/mssys/default.nix diff --git a/pkgs/tools/misc/mssys/default.nix b/pkgs/tools/misc/mssys/default.nix new file mode 100644 index 00000000000..a9d32205cea --- /dev/null +++ b/pkgs/tools/misc/mssys/default.nix @@ -0,0 +1,22 @@ +{stdenv, fetchurl, gettext}: + +stdenv.mkDerivation { + name = "ms-sys-2.1.3"; + + src = fetchurl { + url = mirror://sourceforge/ms-sys/ms-sys-2.1.3.tgz; + md5 = "6fad0a69ac89440ad4f696dbbbf11497"; + }; + + buildInputs = [gettext]; + + preBuild = '' + makeFlags=(PREFIX=$out) + ''; + + meta = { + homepage = http://ms-sys.sourceforge.net/; + license = "GPL"; + description = "A program for writing Microsoft compatible boot records"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index eb1daf82d80..ed220b5b521 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -632,6 +632,10 @@ rec { inherit fetchurl stdenv; }; + mssys = import ../tools/misc/mssys { + inherit fetchurl stdenv gettext; + }; + ncat = import ../tools/networking/ncat { inherit fetchurl stdenv openssl; }; From fbfab88e04178f3c6ab72039e13be95edbeb1b0d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:41:04 +0000 Subject: [PATCH 189/320] Nix-expr style review Unneded args.something replaced with args: with args; line. After this line args is the only place where we can recieve variables from. Also removed several buildInputs = []; lines. svn path=/nixpkgs/branches/stdenv-updates/; revision=10429 --- pkgs/applications/editors/bvi/default.nix | 8 ++++---- .../graphics/exrdisplay/default.nix | 12 ++++++------ pkgs/applications/jedit/default.nix | 8 ++++---- pkgs/applications/jedit/wrapper.nix | 14 +++++++------- pkgs/applications/misc/blender/default.nix | 12 ++++++------ pkgs/applications/misc/d4x/default.nix | 10 +++++----- pkgs/applications/misc/flite/default.nix | 8 +++----- pkgs/applications/misc/freemind/default.nix | 10 +++++----- pkgs/applications/misc/mrxvt/default.nix | 4 ++-- pkgs/applications/misc/pgadmin/default.nix | 8 ++++---- pkgs/applications/misc/pstree/default.nix | 7 +++---- pkgs/applications/misc/rxvt/default.nix | 8 ++++---- pkgs/applications/misc/sbagen/default.nix | 6 +++--- pkgs/applications/misc/synergy/default.nix | 8 ++++---- .../instant-messengers/teamspeak/client.nix | 8 ++++---- pkgs/applications/networking/msmtp/default.nix | 8 +++----- pkgs/applications/networking/skype/default.nix | 10 +++++----- pkgs/applications/video/kino/default.nix | 10 +++++----- pkgs/development/compilers/fpc/binary.nix | 7 +++---- pkgs/development/compilers/fpc/default.nix | 8 ++++---- .../development/libraries/SDL_image/default.nix | 9 ++++----- pkgs/development/libraries/SDL_ttf/default.nix | 9 ++++----- pkgs/development/libraries/ctl/default.nix | 12 ++++++------ pkgs/development/libraries/glew/default.nix | 8 ++++---- pkgs/development/libraries/gsl/default.nix | 8 +++----- .../libraries/libavc1394/default.nix | 8 ++++---- .../libraries/libiec61883/default.nix | 8 ++++---- .../libraries/libraw1394/default.nix | 8 +++----- pkgs/development/libraries/libwmf/default.nix | 11 +++++------ .../libraries/openexr_ctl/default.nix | 14 +++++++------- pkgs/development/libraries/proj.4/default.nix | 8 +++----- pkgs/development/python-modules/pil/default.nix | 12 ++++++------ .../python-modules/pygame/default.nix | 12 ++++++------ pkgs/development/tools/misc/avrdude/default.nix | 2 +- pkgs/development/tools/misc/uisp/default.nix | 8 +++----- .../tools/selenium/remote-control/default.nix | 8 ++++---- pkgs/games/thePenguinMachine/default.nix | 17 ++++++++--------- pkgs/misc/gxemul/default.nix | 2 +- pkgs/misc/maven/maven-2.nix | 8 +++----- pkgs/misc/ntfsprogs/default.nix | 6 ++---- pkgs/os-specific/linux/bridge_utils/default.nix | 8 ++++---- .../os-specific/linux/kernel/acerhk/default.nix | 12 ++++++------ pkgs/os-specific/linux/nfs-utils/default.nix | 8 ++++---- pkgs/os-specific/linux/radeontools/default.nix | 8 ++++---- pkgs/os-specific/linux/tcp-wrapper/default.nix | 8 ++++---- pkgs/servers/irc/ircd-hybrid/default.nix | 12 ++++++------ pkgs/tools/X11/xmacro/default.nix | 9 ++++----- pkgs/tools/backup/rdiff-backup/default.nix | 8 ++++---- pkgs/tools/hddtemp/default.nix | 10 ++++------ pkgs/tools/misc/shebangfix/default.nix | 6 +++--- pkgs/tools/misc/wv/default.nix | 11 +++++------ pkgs/tools/misc/xclip/default.nix | 8 ++++---- pkgs/tools/networking/dnsmasq/default.nix | 8 +++----- 53 files changed, 220 insertions(+), 248 deletions(-) diff --git a/pkgs/applications/editors/bvi/default.nix b/pkgs/applications/editors/bvi/default.nix index 6d9ffdaecc8..223aabcdf82 100644 --- a/pkgs/applications/editors/bvi/default.nix +++ b/pkgs/applications/editors/bvi/default.nix @@ -1,13 +1,13 @@ -args: -args.stdenv.mkDerivation { +args : with args; +stdenv.mkDerivation { name = "bvi-1.3.2"; - src = args.fetchurl { + src = fetchurl { url = http://prdownloads.sourceforge.net/bvi/bvi-1.3.2.src.tar.gz; sha256 = "110wxqnyianqamxq4y53drqqxb9vp4k2fcvic45qggvlqkqhlfgz"; }; - buildInputs =(with args; [ncurses]); + buildInputs = [ncurses]; meta = { description = "hex editor with vim style keybindings"; diff --git a/pkgs/applications/graphics/exrdisplay/default.nix b/pkgs/applications/graphics/exrdisplay/default.nix index 980f94e95d4..c4054e687f9 100644 --- a/pkgs/applications/graphics/exrdisplay/default.nix +++ b/pkgs/applications/graphics/exrdisplay/default.nix @@ -1,23 +1,23 @@ -args: +args: with args; -assert args.fltk.flag_set_gl; -args.stdenv.mkDerivation { +assert fltk.flag_set_gl; +stdenv.mkDerivation { name ="openexr_viewers-1.0.1"; - src = args.fetchurl { + src = fetchurl { url = "http://download.savannah.nongnu.org/releases/openexr/openexr_viewers-1.0.1.tar.gz"; sha256 = "1w5qbcdp7sw48z1wk2v07f7p14vqqb1m2ncxyxnbkm9f4ab0ymg6"; }; - inherit (args) fltk mesa; + inherit fltk mesa; configurePhase = " # don't know why.. adding these flags it works #export CXXFLAGS=`fltk-config --use-gl --cxxflags --ldflags` ./configure --prefix=\$out --with-fltk-config=\$fltk/bin/fltk-config"; - buildInputs =(with args; [openexr fltk pkgconfig mesa which openexr_ctl]); + buildInputs = [openexr fltk pkgconfig mesa which openexr_ctl]; meta = { description = "tool to view OpenEXR images"; diff --git a/pkgs/applications/jedit/default.nix b/pkgs/applications/jedit/default.nix index 3d694ee3ed7..aaf558ace09 100644 --- a/pkgs/applications/jedit/default.nix +++ b/pkgs/applications/jedit/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "jedit-4.2"; - src = args.fetchurl { + src = fetchurl { url = http://kent.dl.sourceforge.net/sourceforge/jedit/jedit42source.tar.gz; sha256 = "1ckqghsw2r30kfkqfgjl4k47gdwpz8c1h85haw0y0ymq4rqh798j"; }; @@ -18,7 +18,7 @@ args.stdenv.mkDerivation { cp modes/catalog \$out/lib/modes "; - buildInputs =(with args; [ant]); + buildInputs = [ant]; meta = { description = "really nice programmers editor written in Java. Give it a try"; diff --git a/pkgs/applications/jedit/wrapper.nix b/pkgs/applications/jedit/wrapper.nix index ff8f6abacfc..8af3d96918d 100644 --- a/pkgs/applications/jedit/wrapper.nix +++ b/pkgs/applications/jedit/wrapper.nix @@ -1,18 +1,18 @@ -args: -args.stdenv.mkDerivation { - name = args.jedit.name+"_startscript"; +args: with args; +stdenv.mkDerivation { + name = jedit.name+"_startscript"; - java = args.jre+"/bin/java"; - jeditjar = args.jedit+"/lib/jedit.jar"; + java = jre+"/bin/java"; + jeditjar = jedit+"/lib/jedit.jar"; phases = "buildPhase"; buildPhase = " ensureDir \$out/bin -cat > \$out/bin/${args.jedit.name} << EOF +cat > \$out/bin/${jedit.name} << EOF #!/bin/sh exec $java -jar $jeditjar \\$* EOF - chmod +x \$out/bin/${args.jedit.name} + chmod +x \$out/bin/${jedit.name} "; } diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix index e722d4ff9db..aa50f67719c 100644 --- a/pkgs/applications/misc/blender/default.nix +++ b/pkgs/applications/misc/blender/default.nix @@ -1,18 +1,18 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "blender-2.45"; - src = args.fetchurl { + src = fetchurl { url = http://download.blender.org/source/blender-2.45.tar.gz; sha256 = "1bi7j1fcvrpb96sjpcbm4sldf359sgskfhv7a8pgcxj0bnhp47wj"; }; phases="unpackPhase buildPhase"; - inherit (args) scons SDL freetype openal python openexr mesa; + inherit scons SDL freetype openal python openexr mesa; - buildInputs =(with args; [python scons - gettext libjpeg libpng zlib freetype /* fmod smpeg */ freealut openal x11 mesa inputproto libtiff libXi ]); + buildInputs = [python scons + gettext libjpeg libpng zlib freetype /* fmod smpeg */ freealut openal x11 mesa inputproto libtiff libXi ]; # patch SConstruct so that we can pass on additional include. Either blender # or openEXR is broken. I think OpenEXR should use include "" isntead of <> to diff --git a/pkgs/applications/misc/d4x/default.nix b/pkgs/applications/misc/d4x/default.nix index 5a20893e9f3..f4ad3cc8421 100644 --- a/pkgs/applications/misc/d4x/default.nix +++ b/pkgs/applications/misc/d4x/default.nix @@ -1,10 +1,10 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "d4x-2.5.7.1"; - inherit (args) boost; + inherit boost; - src = args.fetchurl { + src = fetchurl { url = http://d4x.krasu.ru/files/d4x-2.5.7.1.tar.bz2; sha256 = "1i1jj02bxynisqapv31481sz9jpfp3f023ky47spz1v1wlwbs13m"; }; @@ -12,7 +12,7 @@ args.stdenv.mkDerivation { configurePhase = "./configure --prefix=\$out " + " --with-boost-libdir=\$boost/lib" + " --with-boost-includedir=\$boost/include"; - buildInputs =(with args; [gtk glib pkgconfig openssl boost]); + buildInputs = [gtk glib pkgconfig openssl boost]; meta = { description = "graphical download manager"; diff --git a/pkgs/applications/misc/flite/default.nix b/pkgs/applications/misc/flite/default.nix index 291cce6c1f9..ad3b9df164d 100644 --- a/pkgs/applications/misc/flite/default.nix +++ b/pkgs/applications/misc/flite/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "flite-1.3-release"; - src = args.fetchurl { + src = fetchurl { url = http://www.speech.cs.cmu.edu/flite/packed/flite-1.3/flite-1.3-release.tar.gz; sha256 = "12wanxx57bbqgkag54dlqzv6h2kr9053p0z8mkxs0mqy03vja8lj"; }; @@ -18,8 +18,6 @@ args.stdenv.mkDerivation { cp -r bin \$out "; - buildInputs = (with args; []); - meta = { description = "Flite text to speech engine"; homepage = http://www.speech.cs.cmu.edu/flite/download.html; diff --git a/pkgs/applications/misc/freemind/default.nix b/pkgs/applications/misc/freemind/default.nix index 79b00204fd4..b7bc3f3c8dd 100644 --- a/pkgs/applications/misc/freemind/default.nix +++ b/pkgs/applications/misc/freemind/default.nix @@ -1,15 +1,15 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "freemind-0.9.0_Beta_13"; - src = args.fetchurl { + src = fetchurl { url = http://downloads.sourceforge.net/freemind/freemind-src-0.9.0_Beta_13_icon_butterfly.tar.gz; sha256 = "00389bhg73qknydrq0f3bskb5lyrdg2p58mnnp19wdvzzmfbic4w"; }; - buildInputs =(with args; [jdk ant]); + buildInputs = [jdk ant]; - inherit (args) jre; + inherit jre; phases="buildPhase installPhase"; diff --git a/pkgs/applications/misc/mrxvt/default.nix b/pkgs/applications/misc/mrxvt/default.nix index aaabef2b6b8..f58fff56bc0 100644 --- a/pkgs/applications/misc/mrxvt/default.nix +++ b/pkgs/applications/misc/mrxvt/default.nix @@ -10,11 +10,11 @@ let }; }; -in args.stdenv.mkDerivation { +in stdenv.mkDerivation { inherit (co) buildInputs configureFlags; - src = args.fetchurl { + src = fetchurl { url = mirror://sourceforge/materm/mrxvt-0.5.3.tar.gz; sha256 = "04flnn58hp4qvvk6jzyipsj13v1qyrjabgbw5laz5cqxvxzpncp2"; }; diff --git a/pkgs/applications/misc/pgadmin/default.nix b/pkgs/applications/misc/pgadmin/default.nix index a02ee299ef0..a1b9874981e 100644 --- a/pkgs/applications/misc/pgadmin/default.nix +++ b/pkgs/applications/misc/pgadmin/default.nix @@ -1,14 +1,14 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "pgadmin3-1.8.1"; - src = args.fetchurl { + src = fetchurl { name = "pgadmin3-v1.8.1.tar.gz"; url = "http://ftp3.de.postgresql.org/pub/Mirrors/ftp.postgresql.org//pgadmin3/release/v1.8.1/src/pgadmin3-1.8.1.tar.gz"; sha256 = "1vnpbgb2ksvcgbzab4jjspwvs5cvam53azinfavjad4kpjczdywb"; }; - buildInputs =(with args; [postgresql wxGTK libxml2 libxslt openssl]); + buildInputs = [postgresql wxGTK libxml2 libxslt openssl]; meta = { description = "postgresql admin gui tool"; diff --git a/pkgs/applications/misc/pstree/default.nix b/pkgs/applications/misc/pstree/default.nix index c59148e854e..c26876f2fcb 100644 --- a/pkgs/applications/misc/pstree/default.nix +++ b/pkgs/applications/misc/pstree/default.nix @@ -1,14 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "pstree-2.31"; - src = args.fetchurl { + src = fetchurl { url = http://fresh.t-systems-sfr.com/unix/src/misc/pstree-2.31.tar.gz; sha256 = "1zzz29gsyra8csk54cyq0pcdxxg3l4gmksq8q1skv2z84g2yxdhh"; }; unpackPhase="unpackFile \$src; sourceRoot=."; - #buildInputs =(with args; []); buildPhase="pwd; gcc -o pstree pstree.c"; installPhase="ensureDir \$out/bin; cp pstree \$out/bin"; diff --git a/pkgs/applications/misc/rxvt/default.nix b/pkgs/applications/misc/rxvt/default.nix index c875e55a8cb..58366c6aa04 100644 --- a/pkgs/applications/misc/rxvt/default.nix +++ b/pkgs/applications/misc/rxvt/default.nix @@ -1,13 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "rxvt-2.6.4"; - src = args.fetchurl { + src = fetchurl { url = http://downloads.sourceforge.net/rxvt/rxvt-2.6.4.tar.gz; sha256 = "0hi29whjv8v11nkjbq1i6ms411v6csykghmlpkmayfjn9nxr02xg"; }; - buildInputs =(with args; [ libX11 libXt ]); + buildInputs = [ libX11 libXt ]; meta = { description = "colour vt102 terminal emulator with less features and lower memory consumption"; diff --git a/pkgs/applications/misc/sbagen/default.nix b/pkgs/applications/misc/sbagen/default.nix index d78742bfc5b..6bf28580b35 100644 --- a/pkgs/applications/misc/sbagen/default.nix +++ b/pkgs/applications/misc/sbagen/default.nix @@ -1,5 +1,5 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "sbagen-1.4.4"; buildPhases="buildPhase installPhase"; @@ -14,7 +14,7 @@ args.stdenv.mkDerivation { "; - src = args.fetchurl { + src = fetchurl { url = http://uazu.net/sbagen/sbagen-1.4.4.tgz; sha256 = "0w62yk1b0hq79kl0angma897yqa8p1ww0dwydf3zlwav333prkd2"; }; diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix index 7872c6abaaf..be0c449abc7 100644 --- a/pkgs/applications/misc/synergy/default.nix +++ b/pkgs/applications/misc/synergy/default.nix @@ -1,15 +1,15 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "synergy-cvs"; - src = args.fetchcvs { + src = fetchcvs { url = ":pserver:anonymous@synergy2.cvs.sourceforge.net:/cvsroot/synergy2"; module = "synergy"; date = "NOW"; sha256 = "ef8e2ebfda6e43240051a7af9417092b2af50ece8b5c6c3fbd908ba91c4fe068"; }; - buildInputs =(with args; [x11 xextproto libXtst inputproto]); + buildInputs = [x11 xextproto libXtst inputproto]; meta= { description = "share mouse keyboard and clipboard between computers"; diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix index bbdd265f7da..2763969ddec 100644 --- a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix +++ b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix @@ -33,18 +33,18 @@ Sincerly Marc Weber (small nix contributor) */ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "teamspeak-client-rc2-2032"; - src = args.fetchurl { + src = fetchurl { url = ftp://213.202.254.114/teamspeak/releases/ts2_client_rc2_2032.tar.bz2; md5 = "e93d17a25e07b1cbe400e4eb028ca8f8"; }; phases="installPhase"; - rpathInputs = (with args; [ glibc x11 ] ); + rpathInputs = [ glibc x11 ]; installPhase=" set -x diff --git a/pkgs/applications/networking/msmtp/default.nix b/pkgs/applications/networking/msmtp/default.nix index 523620a403e..67839833c31 100644 --- a/pkgs/applications/networking/msmtp/default.nix +++ b/pkgs/applications/networking/msmtp/default.nix @@ -1,14 +1,12 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "msmtp-1.4.13"; - src = args.fetchurl { + src = fetchurl { url = http://dfn.dl.sourceforge.net/sourceforge/msmtp/msmtp-1.4.13.tar.bz2; sha256 = "1x8q8dhcpnjym3icz6070l13hz98fvdvgc5j5psj4pmxbswx0r4p"; }; - buildInputs =(with args; []); - meta = { description = "a MUA"; homepage = http://msmtp.sourceforge.net/; diff --git a/pkgs/applications/networking/skype/default.nix b/pkgs/applications/networking/skype/default.nix index 443c92527f2..285cba82a3f 100644 --- a/pkgs/applications/networking/skype/default.nix +++ b/pkgs/applications/networking/skype/default.nix @@ -1,16 +1,16 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "skype-1.4"; - src = args.fetchurl { + src = fetchurl { url = http://www.skype.com/go/getskype-linux-static; sha256 = "0k71byzaipmw8lb92aad4qyh9rk0fnn3za74v1h268h09gkkd8mz"; name = "skype_static-1.4.0.99.tar.bz2"; }; - buildInputs =(with args; [alsaLib glibc libSM libICE libXi libXrender libXrandr libXfixes + buildInputs = [alsaLib glibc libSM libICE libXi libXrender libXrandr libXfixes libXcursor libXinerama freetype fontconfig libXext libX11 - fontconfig libXinerama libsigcxx gcc41.gcc ]); + fontconfig libXinerama libsigcxx gcc41.gcc ]; phases = "installPhase"; installPhase =" diff --git a/pkgs/applications/video/kino/default.nix b/pkgs/applications/video/kino/default.nix index 8e501f40cc0..cac769d60de 100644 --- a/pkgs/applications/video/kino/default.nix +++ b/pkgs/applications/video/kino/default.nix @@ -51,19 +51,19 @@ #AMR-WB IF2 support no -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "kino-1.2.0"; phases = "unpackPhase configurePhase buildPhase installPhase"; - src = args.fetchurl { + src = fetchurl { url = http://downloads.sourceforge.net/kino/kino-1.2.0.tar.gz; sha256 = "15q1qmii5a2zbrrrg8iba2d1rjzaisa75zvxjhrs86jwglpn4lp9"; }; - buildInputs =(with args; [ gtk libglade libxml2 libraw1394 libsamplerate libdv - pkgconfig perl perlXMLParser libavc1394 libiec61883 x11 libXv gettext libX11 glib cairo ]); # TODOoptional packages + buildInputs = [ gtk libglade libxml2 libraw1394 libsamplerate libdv + pkgconfig perl perlXMLParser libavc1394 libiec61883 x11 libXv gettext libX11 glib cairo ]; # TODOoptional packages #preConfigure = " # grep 11 env-vars diff --git a/pkgs/development/compilers/fpc/binary.nix b/pkgs/development/compilers/fpc/binary.nix index b76441e38d6..99725b501c0 100644 --- a/pkgs/development/compilers/fpc/binary.nix +++ b/pkgs/development/compilers/fpc/binary.nix @@ -1,9 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "fpc-2.0.4-binary"; - src = args. - fetchurl { + src = fetchurl { url = ftp://ftp.chg.ru/pub/lang/pascal/fpc/dist/i386-linux-2.0.4/fpc-2.0.4.i386-linux.tar; sha256 = "0b2szv2anbf58h4i5mlph93afv9qdx6i0jqggba04d3anjbl9gfy"; }; diff --git a/pkgs/development/compilers/fpc/default.nix b/pkgs/development/compilers/fpc/default.nix index 5da4f65aea7..0d2f1fb525d 100644 --- a/pkgs/development/compilers/fpc/default.nix +++ b/pkgs/development/compilers/fpc/default.nix @@ -1,16 +1,16 @@ args: if ((args ? startFPC) && (args.startFPC != null)) then -args.stdenv.mkDerivation { +with args; +stdenv.mkDerivation { name = "fpc-2.2.0"; - src = args. - fetchurl { + src = fetchurl { url = ftp://freepascal.stack.nl/pub/fpc/dist/source-2.2.0/fpcbuild-2.2.0.tar.gz; sha256 = "0pvsdmimknkgy8jgdz9kd7w5bs9fy5ynrgswpk0ib6x0y26zxijm"; }; - buildInputs = [args.startFPC args.gawk]; + buildInputs = [startFPC gawk]; installFlags = "INSTALL_PREFIX=\${out}"; postInstall = "ln -fs $out/lib/fpc/*/ppc386 $out/bin; diff --git a/pkgs/development/libraries/SDL_image/default.nix b/pkgs/development/libraries/SDL_image/default.nix index 93e1cc31f44..4dd7d3679b8 100644 --- a/pkgs/development/libraries/SDL_image/default.nix +++ b/pkgs/development/libraries/SDL_image/default.nix @@ -1,14 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "SDL_image-1.2.6"; - src = args. - fetchurl { + src = fetchurl { url = http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.6.tar.gz; sha256 = "1i3f72dw3i3l6d77dk81gw57sp0629rng9k76qb37brlz7dv3z48"; }; - buildInputs =(with args; [SDL libpng libjpeg libtiff libungif libXpm]); + buildInputs = [SDL libpng libjpeg libtiff libungif libXpm]; postInstall = "ln -s \${out}/include/SDL/SDL_image.h \${out}/include/"; diff --git a/pkgs/development/libraries/SDL_ttf/default.nix b/pkgs/development/libraries/SDL_ttf/default.nix index 77b95d02cc3..c7a356adc61 100644 --- a/pkgs/development/libraries/SDL_ttf/default.nix +++ b/pkgs/development/libraries/SDL_ttf/default.nix @@ -1,14 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "SDL_image-1.2.6"; - src = args. - fetchurl { + src = fetchurl { url = http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.9.tar.gz; sha256 = "0ls6anmlmwrmy21p3y9nfyl6fkwz4jpgh74kw7xd0hwbg5v8h95l"; }; - buildInputs =(with args; [SDL freetype]); + buildInputs = [SDL freetype]; postInstall = "ln -s \${out}/include/SDL/SDL_ttf.h \${out}/include/"; diff --git a/pkgs/development/libraries/ctl/default.nix b/pkgs/development/libraries/ctl/default.nix index c6a6cee0ca6..6e1c212703c 100644 --- a/pkgs/development/libraries/ctl/default.nix +++ b/pkgs/development/libraries/ctl/default.nix @@ -1,16 +1,16 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "ctl-1.4.1"; - src = args.fetchurl { + src = fetchurl { url = http://surfnet.dl.sourceforge.net/sourceforge/ampasctl/ctl-1.4.1.tar.gz; sha256 = "16lzgbpxdyhykdwndj1i9vx3h4bfkxqqcrvasvgg70gb5raxj0mj"; }; - propagatedBuildInputs = (with args; [ilmbase]); - configureFlags="--with-ilmbase-prefix=${args.ilmbase}"; + propagatedBuildInputs = [ilmbase]; + configureFlags="--with-ilmbase-prefix=${ilmbase}"; #configurePhase = " - #export CXXFLAGS=\"-I${args.ilmbase}/include -L${args.ilmbase}/lib\" + #export CXXFLAGS=\"-I${ilmbase}/include -L${ilmbase}/lib\" #echo $CXXFLAGS #unset configurePhase; configurePhase #"; diff --git a/pkgs/development/libraries/glew/default.nix b/pkgs/development/libraries/glew/default.nix index 2af500b3db6..82925d144b5 100644 --- a/pkgs/development/libraries/glew/default.nix +++ b/pkgs/development/libraries/glew/default.nix @@ -1,13 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "glew-1.5.0"; - src = args.fetchurl { + src = fetchurl { url = http://dfn.dl.sourceforge.net/sourceforge/glew/glew-1.5.0-src.tgz; sha256 = "1kjr1fchnl785wsg11vzc03q3pm12lh20n1i593zr1xqfjgx2b4h"; }; - buildInputs =(with args; [mesa x11 libXmu libXi]); + buildInputs = [mesa x11 libXmu libXi]; meta = { description = "cross-platform open-source C/C++ extension loading library"; diff --git a/pkgs/development/libraries/gsl/default.nix b/pkgs/development/libraries/gsl/default.nix index a5248d42299..19655f97b0d 100644 --- a/pkgs/development/libraries/gsl/default.nix +++ b/pkgs/development/libraries/gsl/default.nix @@ -1,14 +1,12 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "gsl-1.9"; - src = args.fetchurl { + src = fetchurl { url = ftp://ftp.gnu.org/gnu/gsl/gsl-1.9.tar.gz; sha256 = "0l12js65c1qf3s7gmgay6gj5nbs6635py41dj8nk3hlp95wcdlgw"; }; - buildInputs =(with args; []); - meta = { description = "numerical library (>1000 functions)"; homepage = http://www.gnu.org/software/gsl; diff --git a/pkgs/development/libraries/libavc1394/default.nix b/pkgs/development/libraries/libavc1394/default.nix index 3d1d63780c2..0834c212fe9 100644 --- a/pkgs/development/libraries/libavc1394/default.nix +++ b/pkgs/development/libraries/libavc1394/default.nix @@ -1,13 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "libavc1394-0.5.3"; - src = args.fetchurl { + src = fetchurl { url = mirror://sourceforge/libavc1394/libavc1394-0.5.3.tar.gz; sha256 = "19i40i3722ilhziknfds3a6w5xzv66fvc68gvbir1p2fvwi6ij93"; }; - buildInputs =(with args; [pkgconfig libraw1394]); + buildInputs = [pkgconfig libraw1394]; meta = { description = "programming interface for the 1394 Trade Association AV/C (Audio/Video Control) Digital Interface Command Set"; diff --git a/pkgs/development/libraries/libiec61883/default.nix b/pkgs/development/libraries/libiec61883/default.nix index 3f167eb81de..c4062403d38 100644 --- a/pkgs/development/libraries/libiec61883/default.nix +++ b/pkgs/development/libraries/libiec61883/default.nix @@ -1,13 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "libiec61883-1.1.0"; - src = args.fetchurl { + src = fetchurl { url = http://www.linux1394.org/dl/libiec61883-1.1.0.tar.gz; sha256 = "09f0ca7bp6lqlz6601gnyl04mfabv0azg49n1cmjyqpzh35cgxkq"; }; - buildInputs =(with args; [pkgconfig libraw1394]); + buildInputs = [pkgconfig libraw1394]; meta = { description = "TODO"; diff --git a/pkgs/development/libraries/libraw1394/default.nix b/pkgs/development/libraries/libraw1394/default.nix index 62398404ac2..8463749fcb3 100644 --- a/pkgs/development/libraries/libraw1394/default.nix +++ b/pkgs/development/libraries/libraw1394/default.nix @@ -1,14 +1,12 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "libraw1394-1.2.0"; - src = args.fetchurl { + src = fetchurl { url = "mirror://sourceforge/libraw1394/libraw1394-1.2.0.tar.gz"; sha256 = "1b9zqqzyz0ihyfvhn135y3wc6vmym5yz21jxj9dp0f09b96gmp0z"; }; - buildInputs =(with args; []); - meta = { description = "library providing direct access to the IEEE 1394 bus through the Linux 1394 subsystem's raw1394 user space interface"; homepage = "http://wiki.linux1394.org/"; diff --git a/pkgs/development/libraries/libwmf/default.nix b/pkgs/development/libraries/libwmf/default.nix index ea2eecd90d2..6f580613b16 100644 --- a/pkgs/development/libraries/libwmf/default.nix +++ b/pkgs/development/libraries/libwmf/default.nix @@ -1,15 +1,14 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "libwmf-0.2.8.4"; - src = args. - fetchurl { + src = fetchurl { url = mirror://sourceforge/wvware/libwmf-0.2.8.4.tar.gz; sha256 = "1y3wba4q8pl7kr51212jwrsz1x6nslsx1gsjml1x0i8549lmqd2v"; }; - buildInputs =(with args; [zlib imagemagick libpng - pkgconfig glib freetype libjpeg libxml2]); + buildInputs = [zlib imagemagick libpng + pkgconfig glib freetype libjpeg libxml2]; meta = { description = " diff --git a/pkgs/development/libraries/openexr_ctl/default.nix b/pkgs/development/libraries/openexr_ctl/default.nix index 634a38990cb..288067a4bf2 100644 --- a/pkgs/development/libraries/openexr_ctl/default.nix +++ b/pkgs/development/libraries/openexr_ctl/default.nix @@ -1,17 +1,17 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "openexr_ctl-1.0.1"; - src = args.fetchurl { + src = fetchurl { url = http://kent.dl.sourceforge.net/sourceforge/ampasctl/openexr_ctl-1.0.1.tar.gz; sha256 = "1jg9smpaplal8l14djp184wzk11nwd3dvm4lhkp69kjgw8jdd21d"; }; - propagatedBuildInputs = (with args; [ilmbase]); - buildInputs = ( with args; [openexr ctl]); - configureFlags="--with-ilmbase-prefix=${args.ilmbase}"; + propagatedBuildInputs = [ilmbase]; + buildInputs = [openexr ctl]; + configureFlags="--with-ilmbase-prefix=${ilmbase}"; #configurePhase = " - #export CXXFLAGS=\"-I${args.ilmbase}/include -L${args.ilmbase}/lib\" + #export CXXFLAGS=\"-I${ilmbase}/include -L${ilmbase}/lib\" #echo $CXXFLAGS #unset configurePhase; configurePhase #"; diff --git a/pkgs/development/libraries/proj.4/default.nix b/pkgs/development/libraries/proj.4/default.nix index 6449a188f2b..ffb3bed5054 100644 --- a/pkgs/development/libraries/proj.4/default.nix +++ b/pkgs/development/libraries/proj.4/default.nix @@ -1,14 +1,12 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "proj-4.5.0"; - src = args.fetchurl { + src = fetchurl { url = ftp://ftp.remotesensing.org/proj/proj-4.5.0.tar.gz; sha256 = "1d2qz0vgp13hkfgaz7hkblhb9w2fh2blbjqz73xdinwc08cmflqv"; }; - buildInputs =(with args; []); - meta = { description = "Cartographic Projections Library"; homepage = http://proj.maptools.org; diff --git a/pkgs/development/python-modules/pil/default.nix b/pkgs/development/python-modules/pil/default.nix index 863366f1a42..d5ed9aae12a 100644 --- a/pkgs/development/python-modules/pil/default.nix +++ b/pkgs/development/python-modules/pil/default.nix @@ -1,20 +1,20 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "python-imaging-1.1.6"; - src = args.fetchurl { + src = fetchurl { url = http://effbot.org/downloads/Imaging-1.1.6.tar.gz; sha256 = "141zidl3s9v4vfi3nsbg42iq1lc2a932gprqr1kij5hrnn53bmvx"; }; - buildInputs =(with args; [python zlib libtiff libjpeg freetype]); + buildInputs = [python zlib libtiff libjpeg freetype]; - configurePhase = (with args;" + configurePhase = " sed -e 's@FREETYPE_ROOT = None@FREETYPE_ROOT = libinclude(\"${freetype}\")@' -i setup.py sed -e 's@JPEG_ROOT = None@JPEG_ROOT = libinclude(\"${libjpeg}\")@' -i setup.py sed -e 's@TIFF_ROOT = None@TIFF_ROOT = libinclude(\"${libtiff}\")@' -i setup.py sed -e 's@ZLIB_ROOT = None@ZLIB_ROOT = libinclude(\"${zlib}\")@' -i setup.py - "); + "; buildPhase = "true"; diff --git a/pkgs/development/python-modules/pygame/default.nix b/pkgs/development/python-modules/pygame/default.nix index 0ed717479d8..cad9b17ebad 100644 --- a/pkgs/development/python-modules/pygame/default.nix +++ b/pkgs/development/python-modules/pygame/default.nix @@ -1,22 +1,22 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "pygame-1.7"; - src = args.fetchurl { + src = fetchurl { url = http://www.pygame.org/ftp/pygame-1.7.1release.tar.gz ; sha256 = "0hl0rmgjcqj217fibwyilz7w9jpg0kh7hsa7vyzd4cgqyliskpqi"; }; - buildInputs =(with args; [python pkgconfig SDL SDL_image SDL_ttf]); + buildInputs = [python pkgconfig SDL SDL_image SDL_ttf]; - configurePhase = (with args; + configurePhase = " export LOCALBASE=/// sed -e \"/origincdirs =/a'${SDL_image}/include/SDL','${SDL_image}/include',\" -i config_unix.py sed -e \"/origlibdirs =/aoriglibdirs += '${SDL_image}/lib',\" -i config_unix.py sed -e \"/origincdirs =/a'${SDL_ttf}/include/SDL','${SDL_ttf}/include',\" -i config_unix.py sed -e \"/origlibdirs =/aoriglibdirs += '${SDL_ttf}/lib',\" -i config_unix.py - yes Y | python config.py "); + yes Y | python config.py "; buildPhase = "yes Y | python setup.py build"; diff --git a/pkgs/development/tools/misc/avrdude/default.nix b/pkgs/development/tools/misc/avrdude/default.nix index e573d0751f2..f87d305dfb2 100644 --- a/pkgs/development/tools/misc/avrdude/default.nix +++ b/pkgs/development/tools/misc/avrdude/default.nix @@ -12,7 +12,7 @@ let #defaultFlags = ["doc"]; }; -in args.stdenv.mkDerivation { +in stdenv.mkDerivation { # passing the flags in case a library using this want's to check them (*) .. inherit (co) /* flags */ buildInputs configureFlags; diff --git a/pkgs/development/tools/misc/uisp/default.nix b/pkgs/development/tools/misc/uisp/default.nix index c6810939dd4..694dc940d92 100644 --- a/pkgs/development/tools/misc/uisp/default.nix +++ b/pkgs/development/tools/misc/uisp/default.nix @@ -1,16 +1,14 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "uisp-20050207"; configureFlags="--disable-dependency-tracking"; - src = args.fetchurl { + src = fetchurl { url = http://mirror.switch.ch/mirror/gentoo/distfiles/uisp-20050207.tar.gz; sha256 = "1bncxp5yxh9r1yrp04vvhfiva8livi1pwic7v8xj99q09zrwahvw"; }; - #buildInputs =(with args; []); - meta = { description = "tool for AVR microcontrollers which can interface to many hardware in-system programmers"; license = "GPL-2"; diff --git a/pkgs/development/tools/selenium/remote-control/default.nix b/pkgs/development/tools/selenium/remote-control/default.nix index e2bf63264a6..4c55805e5c8 100644 --- a/pkgs/development/tools/selenium/remote-control/default.nix +++ b/pkgs/development/tools/selenium/remote-control/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "selenium-rc-0.8.3-binary"; - src = args.fetchurl { + src = fetchurl { url = http://release.openqa.org/cgi-bin/selenium-remote-control-redirect.zip; sha256 = "694b46a8440011bcedc4fdc6d01fd91c8b4b4b62b7c6629ace4e745ef47f583e"; }; @@ -13,7 +13,7 @@ args.stdenv.mkDerivation { cp selenium-server-*/*.jar \$out/lib "; - buildInputs =(with args; [unzip]); + buildInputs = [unzip]; meta = { description = "test tool for web applications"; diff --git a/pkgs/games/thePenguinMachine/default.nix b/pkgs/games/thePenguinMachine/default.nix index 89f675e083d..4ce42934b5a 100644 --- a/pkgs/games/thePenguinMachine/default.nix +++ b/pkgs/games/thePenguinMachine/default.nix @@ -1,20 +1,19 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "thePenguinMachine"; - src = args. - fetchurl { + src = fetchurl { url = http://www.migniot.com/matrix/projects/thepenguinmachine/ThePenguinMachine.tar.gz; sha256 = "09ljks8vj75g00h3azc83yllbfsrxwmv1c9g32gylcmsshik0dqv"; }; - buildInputs =(with args; [python24 pil pygame SDL]); + buildInputs = [python24 pil pygame SDL]; - configurePhase = (with args; " + configurePhase = " sed -e \"/includes = /aincludes.append('${SDL}/include/SDL')\" -i setup.py; sed -e \"/includes = /aincludes.append('${pygame}/include/python2.4')\" -i setup.py; cat setup.py; - "); + "; buildPhase = " python setup.py build; python setup.py build_clib; @@ -22,13 +21,13 @@ args.stdenv.mkDerivation { python setup.py build_py; python setup.py build_scripts; "; - installPhase = (with args ; " + installPhase = " python setup.py install --prefix=\${out} cp -r . /tmp/tpm-build echo 'export PYTHONPATH=$PYTHONPATH:${pygame}/lib/python2.4/site-packages:${pil}/lib/python2.4/site-packages/PIL python ThePenguinMachine.py' >/tmp/tpm-build/tpm.sh; chmod a+rx /tmp/tpm-build/tpm.sh - "); + "; meta = { description = " diff --git a/pkgs/misc/gxemul/default.nix b/pkgs/misc/gxemul/default.nix index e7fdc96d32e..e7d0c92a1c5 100644 --- a/pkgs/misc/gxemul/default.nix +++ b/pkgs/misc/gxemul/default.nix @@ -12,7 +12,7 @@ let optionals = ["libX11"]; defaultFlags = [ "demos" "doc" ]; }; -in args.stdenv.mkDerivation { +in stdenv.mkDerivation { inherit name; inherit (co) /* flags */ buildInputs configureFlags; diff --git a/pkgs/misc/maven/maven-2.nix b/pkgs/misc/maven/maven-2.nix index 9f96639689b..be84f212e8b 100644 --- a/pkgs/misc/maven/maven-2.nix +++ b/pkgs/misc/maven/maven-2.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "maven-2.0.8-bin"; - src = args.fetchurl { + src = fetchurl { # TODO mirrors url = http://apache.linux-mirror.org/maven/binaries/apache-maven-2.0.8-bin.tar.bz2; sha256 = "1wasvqplw7xk04j38vsq94zbrlpdg2k4348bg8730snr6zgaasai"; @@ -14,8 +14,6 @@ args.stdenv.mkDerivation { ensureDir \$out; mv * \$out "; - buildInputs =(with args; []); - meta = { description = "Java build tool"; homepage = "apache.org"; diff --git a/pkgs/misc/ntfsprogs/default.nix b/pkgs/misc/ntfsprogs/default.nix index 6e79ea61d89..8f2e6839309 100644 --- a/pkgs/misc/ntfsprogs/default.nix +++ b/pkgs/misc/ntfsprogs/default.nix @@ -1,15 +1,13 @@ -args: +args: with args; args.stdenv.mkDerivation { name = "ntfsprogs-2.0.0"; - src = args.fetchurl { + src = fetchurl { name = "ntfsprogs-2.0.0.tar.bz2"; url = "http://garr.dl.sourceforge.net/sourceforge/linux-ntfs/ntfsprogs-2.0.0.tar.bz2"; sha256 = "ad36e19706c7303b10aa0a9bf2c2dd0309b91cd0171f1c9eb361d94a85017432"; }; - buildInputs =(with args; []); - meta = { description = "ntfs utilities"; homepage = http://sourceforge.net/projects/linux-ntfs; diff --git a/pkgs/os-specific/linux/bridge_utils/default.nix b/pkgs/os-specific/linux/bridge_utils/default.nix index 2c71f8fb0a9..66d01a7d433 100644 --- a/pkgs/os-specific/linux/bridge_utils/default.nix +++ b/pkgs/os-specific/linux/bridge_utils/default.nix @@ -1,13 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "bridge-utils-1.2"; - src = args.fetchurl { + src = fetchurl { url = mirror://sourceforge/bridge/bridge-utils-1.2.tar.gz; sha256 = "0jg3z51c2c34byg4zi39j9g4b66js5kanjhid77hpa0jdfmryfy9"; }; - buildInputs =(with args; [autoconf automake]); + buildInputs = [autoconf automake]; preConfigure="autoreconf"; diff --git a/pkgs/os-specific/linux/kernel/acerhk/default.nix b/pkgs/os-specific/linux/kernel/acerhk/default.nix index 577d0f51027..8fe45048d7f 100644 --- a/pkgs/os-specific/linux/kernel/acerhk/default.nix +++ b/pkgs/os-specific/linux/kernel/acerhk/default.nix @@ -1,14 +1,14 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "acerhk_kernel_patch-0.5.35"; - kernel = args.kernel.src; - inherit (args) debug; - acerhk = args.fetchurl { + kernel = kernel.src; + inherit debug; + acerhk = fetchurl { url = http://mirror.switch.ch/mirror/gentoo/distfiles/acerhk-0.5.35.tar.bz2; sha256 = "1kg002qraa8vha2cgza3z74d9j46g180g5b44zbv64dsa9n2j4b0"; }; - buildInputs =(with args; [gnupatch]); + buildInputs = [gnupatch]; builder = ./builder.sh; diff --git a/pkgs/os-specific/linux/nfs-utils/default.nix b/pkgs/os-specific/linux/nfs-utils/default.nix index 5240bba5d14..18278ef3c34 100644 --- a/pkgs/os-specific/linux/nfs-utils/default.nix +++ b/pkgs/os-specific/linux/nfs-utils/default.nix @@ -1,13 +1,13 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "nfs-utils-1.1.1"; - src = args.fetchurl { + src = fetchurl { url = mirror://sourceforge/nfs/nfs-utils-1.1.1.tar.gz; sha256 = "0aa434cv7lgbrhks0rzhwxvbk2zsa17kjwxqjrrh87zrv9d2sr1x"; }; - buildInputs =(with args; [kernelHeaders tcp_wrapper]); + buildInputs = [kernelHeaders tcp_wrapper]; meta = { description = "nfs utils"; diff --git a/pkgs/os-specific/linux/radeontools/default.nix b/pkgs/os-specific/linux/radeontools/default.nix index 67d6cc4575f..d4d39606d62 100644 --- a/pkgs/os-specific/linux/radeontools/default.nix +++ b/pkgs/os-specific/linux/radeontools/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "radeontool-1.5"; - inherit (args) pciutils; + inherit pciutils; # Don't know wether it's a good idea to hardcode the lspci path.. # But it will work on nix.. @@ -12,7 +12,7 @@ args.stdenv.mkDerivation { cd .. "; - src = args.fetchurl { + src = fetchurl { url = http://fdd.com/software/radeon/radeontool-1.5.tar.gz; sha256 = "0qbkawhhq0y0gqbbql7q04y0v0hims5c4jkjsbc1y03rf9kr10ar"; }; diff --git a/pkgs/os-specific/linux/tcp-wrapper/default.nix b/pkgs/os-specific/linux/tcp-wrapper/default.nix index 35c68a6d9a4..9c952bcabf8 100644 --- a/pkgs/os-specific/linux/tcp-wrapper/default.nix +++ b/pkgs/os-specific/linux/tcp-wrapper/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "tcp-wrappers-7.6"; - src = args.fetchurl { + src = fetchurl { url = http://ftp.debian.org/debian/pool/main/t/tcp-wrappers/tcp-wrappers_7.6.dbs.orig.tar.gz; sha256 = "0k68ziinx6biwar5lcb9jvv0rp6b3vmj6861n75bvrz4w1piwkdp"; }; @@ -20,7 +20,7 @@ args.stdenv.mkDerivation { make CFLAGS='-DSYS_ERRLIST_DEFINED=1 -Dvsyslog=1' tcpd " - buildInputs =(with args; [kernelHeaders gnused]); + buildInputs = [kernelHeaders gnused]; # meta = ... } diff --git a/pkgs/servers/irc/ircd-hybrid/default.nix b/pkgs/servers/irc/ircd-hybrid/default.nix index 3f9fd380d14..572cc28e55b 100644 --- a/pkgs/servers/irc/ircd-hybrid/default.nix +++ b/pkgs/servers/irc/ircd-hybrid/default.nix @@ -1,17 +1,17 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "ircd-hybrid-7.2.2"; - src = args.fetchurl { + src = fetchurl { url = mirror://sourceforge/ircd-hybrid/ircd-hybrid-7.2.2.tgz; sha256 = "1xn4dfbgx019mhismfnr2idhslvarlajyahj7c6bqzmarcwwrvck"; }; - buildInputs =(with args; [openssl zlib]); + buildInputs = [openssl zlib]; - configureFlags = (with args; ["--with-nicklen=100" + configureFlags = ["--with-nicklen=100" "--with-topiclen=360" - ("--enable-openssl=" + openssl)]); + ("--enable-openssl=" + openssl)]; preInstall = "mkdir -p \${out}/ ; ln -s /home/ircd \${out}/logs;"; diff --git a/pkgs/tools/X11/xmacro/default.nix b/pkgs/tools/X11/xmacro/default.nix index c1f039a9215..4cceb720e19 100644 --- a/pkgs/tools/X11/xmacro/default.nix +++ b/pkgs/tools/X11/xmacro/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "xmacro"; - src = args.fetchurl { + src = fetchurl { url = mirror://sourceforge/xmacro/xmacro-pre0.3-20000911.tar.gz; md5 = "d2956b82f3d5380e58a75ccc721fb746"; }; @@ -11,6 +11,5 @@ args.stdenv.mkDerivation { preInstall="echo -e 'install:\n mkdir \${out}/bin;\n cp xmacrorec xmacrorec2 xmacroplay \${out}/bin;' >>Makefile; "; - buildInputs = (with args; - [libX11 libXtst xextproto libXi inputproto]); + buildInputs = [libX11 libXtst xextproto libXi inputproto]; } diff --git a/pkgs/tools/backup/rdiff-backup/default.nix b/pkgs/tools/backup/rdiff-backup/default.nix index 43fd17a6178..8cd660adc8c 100644 --- a/pkgs/tools/backup/rdiff-backup/default.nix +++ b/pkgs/tools/backup/rdiff-backup/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "rdiff-backup-1.1.14"; - src = args.fetchurl { + src = fetchurl { url = http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.1.14.tar.gz; sha256 = "0sh2kz90z47yfa9786dyn3q9ba1xcmjvd65rykvm7mg5apnrg27h"; }; @@ -14,7 +14,7 @@ args.stdenv.mkDerivation { "; - buildInputs = (with args; [python librsync gnused ]); + buildInputs = [python librsync gnused ]; meta = { description = "backup system trying to combine best a mirror and an incremental backup system"; diff --git a/pkgs/tools/hddtemp/default.nix b/pkgs/tools/hddtemp/default.nix index 0bb51287474..9f285a6cd51 100644 --- a/pkgs/tools/hddtemp/default.nix +++ b/pkgs/tools/hddtemp/default.nix @@ -1,12 +1,12 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "hddtemp-0.3-beta15"; - db = args.fetchurl{ + db = fetchurl{ url = http://download.savannah.nongnu.org/releases/hddtemp/hddtemp.db; sha256 = "1fr6qgns6qv7cr40lic5yqwkkc7yjmmgx8j0z6d93csg3smzhhya"; }; - src = args.fetchurl { + src = fetchurl { url = http://download.savannah.nongnu.org/releases/hddtemp/hddtemp-0.3-beta15.tar.bz2; sha256 = "0nzgg4nl8zm9023wp4dg007z6x3ir60rwbcapr9ks2al81c431b1"; }; @@ -17,8 +17,6 @@ args.stdenv.mkDerivation { ./configure --prefix=\$out --with-db-path=\$out/nix-support/hddtemp.db "; - buildInputs =(with args; []); - meta = { description = "shows the harddisk temperature"; homepage = https://savannah.nongnu.org/projects/hddtemp/; diff --git a/pkgs/tools/misc/shebangfix/default.nix b/pkgs/tools/misc/shebangfix/default.nix index 94ecc1e00f7..f5ed86e99f7 100644 --- a/pkgs/tools/misc/shebangfix/default.nix +++ b/pkgs/tools/misc/shebangfix/default.nix @@ -1,8 +1,8 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "shebangfix-0.0"; - buildInputs = [args.perl]; + buildInputs = [perl]; file = ./shebangfix.pl; diff --git a/pkgs/tools/misc/wv/default.nix b/pkgs/tools/misc/wv/default.nix index 1bf88edef2a..9fe71248e8d 100644 --- a/pkgs/tools/misc/wv/default.nix +++ b/pkgs/tools/misc/wv/default.nix @@ -1,15 +1,14 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "wv-1.2.4"; - src = args. - fetchurl { + src = fetchurl { url = mirror://sourceforge/wvware/wv-1.2.4.tar.gz; sha256 = "1mn2ax6qjy3pvixlnvbkn6ymy6y4l2wxrr4brjaczm121s8hjcb7"; }; - buildInputs =(with args; [zlib imagemagick libpng glib - pkgconfig libgsf libxml2 bzip2]); + buildInputs = [zlib imagemagick libpng glib + pkgconfig libgsf libxml2 bzip2]; meta = { description = " diff --git a/pkgs/tools/misc/xclip/default.nix b/pkgs/tools/misc/xclip/default.nix index 305e38da464..fbf148721ca 100644 --- a/pkgs/tools/misc/xclip/default.nix +++ b/pkgs/tools/misc/xclip/default.nix @@ -1,15 +1,15 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "xclip-0.08"; - src = args.fetchurl { + src = fetchurl { url = http://people.debian.org/~kims/xclip/xclip-0.08.tar.gz; sha256 = "0py6ijw7ln892gzxxm2w47nn97nb6psb8g6clkpz86gg706yjxpf"; }; patchPhase = "sed -i s=/usr/X11R6/bin=/bin= Makefile"; - buildInputs =(with args; [x11 libXmu]); + buildInputs = [x11 libXmu]; installPhase="make install DESTDIR=\$out"; diff --git a/pkgs/tools/networking/dnsmasq/default.nix b/pkgs/tools/networking/dnsmasq/default.nix index 7b3cd59ba6c..b50cdeadfa3 100644 --- a/pkgs/tools/networking/dnsmasq/default.nix +++ b/pkgs/tools/networking/dnsmasq/default.nix @@ -1,16 +1,14 @@ -args: -args.stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "dnsmasq-2.40"; - src = args.fetchurl { + src = fetchurl { url = http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.40.tar.gz; sha256 = "1q346l403rvvmvr14fk2l201p8fl3p5417vkp95zlx00jdb7hl8n"; }; installPhase = "ensureDir \$out; make DESTDIR=\$out PREFIX=ôônstall"; - buildInputs =(with args; []); - meta = { description = "DNS forwarder and DHCP server"; homepage = http://www.thekelleys.org.uk/dnsmasq/doc.html; From 21bfc11e8ce731c94f114a8cd8ecb1a210ddc32b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:41:13 +0000 Subject: [PATCH 190/320] lyx added svn path=/nixpkgs/branches/stdenv-updates/; revision=10430 --- pkgs/applications/misc/lyx/default.nix | 18 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/applications/misc/lyx/default.nix diff --git a/pkgs/applications/misc/lyx/default.nix b/pkgs/applications/misc/lyx/default.nix new file mode 100644 index 00000000000..246b8caa3ca --- /dev/null +++ b/pkgs/applications/misc/lyx/default.nix @@ -0,0 +1,18 @@ +# I haven't put much effort into this expressions .. so some optional depencencies may be missing - Marc +args: +args.stdenv.mkDerivation { + name = "lyx-1.5.3"; + + src = args.fetchurl { + url = http://lyx.cybermirror.org/stable/lyx-1.5.3.tar.bz2; + sha256 = "1q0xlhrvj87iw9rk9z2vfka4jw5pw7n5fsmmiyzram9y4hghavav"; + }; + + buildInputs =(with args; [tetex qt python]); + + meta = { + description = "WYSIWYM frontend for LaTeX, DocBook, etc."; + homepage = "http://www.lyx.org"; + license = "GPL2"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ed220b5b521..251c7171f18 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4343,6 +4343,11 @@ rec { inherit fetchurl stdenv ncurses openssl; }; + lyx = import ../applications/misc/lyx { + inherit fetchurl stdenv tetex python; + qt = qt4; + }; + maxima = import ../applications/misc/maxima { inherit fetchurl stdenv clisp; }; From 98a81beaacb07b63b2ae54d9c63c563b6f6b5066 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:41:45 +0000 Subject: [PATCH 191/320] meta.homepage added to several packages svn path=/nixpkgs/branches/stdenv-updates/; revision=10431 --- pkgs/applications/audio/audacity/default.nix | 5 ++--- pkgs/applications/audio/cdparanoia/default.nix | 4 ++++ pkgs/applications/audio/flac/default.nix | 3 +++ pkgs/applications/audio/lame/default.nix | 2 +- pkgs/applications/audio/snd/default.nix | 5 ++--- pkgs/applications/audio/xmms/default.nix | 1 + .../applications/display-managers/slim/default.nix | 4 ++++ pkgs/applications/editors/joe/default.nix | 14 +++++++++----- pkgs/applications/editors/nano/default.nix | 4 ++++ pkgs/applications/editors/nedit/default.nix | 4 ++++ pkgs/applications/editors/vim-diet/default.nix | 4 ++++ pkgs/applications/editors/vim/default.nix | 1 + pkgs/applications/graphics/ImageMagick/default.nix | 7 +++++-- .../applications/graphics/PythonMagick/default.nix | 3 +++ pkgs/applications/graphics/dia/default.nix | 1 + pkgs/applications/graphics/f-spot/default.nix | 4 ++++ pkgs/applications/graphics/gqview/default.nix | 1 + pkgs/applications/graphics/inkscape/default.nix | 4 ++++ pkgs/applications/graphics/xfig/default.nix | 1 + pkgs/applications/jedit/default.nix | 4 ++-- pkgs/applications/misc/acrobat-reader/default.nix | 4 ++++ pkgs/applications/misc/bluez-firmware/default.nix | 4 ++++ pkgs/applications/misc/bluez-utils/default.nix | 4 ++++ pkgs/applications/misc/djvulibre/default.nix | 1 + pkgs/applications/misc/fetchmail/default.nix | 9 ++++++++- .../applications/misc/fetchmail/security-fix.patch | 11 +++++++++++ pkgs/applications/misc/gphoto2/default.nix | 4 ++++ pkgs/applications/misc/gv/default.nix | 4 ++++ pkgs/applications/misc/hello/ex-1/default.nix | 1 + pkgs/applications/misc/maxima/default.nix | 5 ++--- pkgs/applications/misc/pgadmin/default.nix | 2 +- pkgs/applications/misc/procmail/default.nix | 3 ++- pkgs/applications/misc/rxvt_unicode/default.nix | 3 ++- pkgs/applications/misc/synergy/default.nix | 2 +- pkgs/applications/misc/xchm/default.nix | 1 + pkgs/applications/misc/xterm/default.nix | 4 ++++ .../networking/browsers/firefox3b1/default.nix | 1 + .../networking/browsers/mozilla/default.nix | 3 +++ .../networking/browsers/opera/default.nix | 4 ++++ .../networking/browsers/w3m/default.nix | 4 ++++ .../networking/instant-messengers/amsn/default.nix | 4 ++++ .../pidgin-plugins/otr/default.nix | 1 + .../pidgin-plugins/pidgin-latex/default.nix | 1 + .../instant-messengers/pidgin/default.nix | 1 + pkgs/applications/networking/irc/irssi/default.nix | 4 ++++ pkgs/applications/networking/irc/xchat/default.nix | 4 ++++ .../networking/mailreaders/mutt/default.nix | 4 ++++ 47 files changed, 145 insertions(+), 24 deletions(-) create mode 100644 pkgs/applications/misc/fetchmail/security-fix.patch diff --git a/pkgs/applications/audio/audacity/default.nix b/pkgs/applications/audio/audacity/default.nix index 3eaf1ed3ee0..159c99c4999 100644 --- a/pkgs/applications/audio/audacity/default.nix +++ b/pkgs/applications/audio/audacity/default.nix @@ -29,8 +29,7 @@ stdenv.mkDerivation { (textClosure localDefs [addInputs (doDump "0") (noDepEntry "echo \$PATH; ar --version") doConfigure preBuild doMakeInstall postInstall doForceShare]); meta = { - description = " - Audacity sound editor. -"; + description = "Audacity sound editor."; + homepage = http://audacity.sourceforge.net; }; } diff --git a/pkgs/applications/audio/cdparanoia/default.nix b/pkgs/applications/audio/cdparanoia/default.nix index e8d31772611..6fa69beee20 100644 --- a/pkgs/applications/audio/cdparanoia/default.nix +++ b/pkgs/applications/audio/cdparanoia/default.nix @@ -8,4 +8,8 @@ stdenv.mkDerivation { }; patches = [./fix.patch]; + + meta = { + homepage = http://xiph.org/paranoia; + }; } diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index b1636855aae..6095e59fa07 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -7,6 +7,9 @@ let url = "http://downloads.xiph.org/releases/flac/${name}.tar.gz"; } // hash); buildInputs = [libogg]; + meta = { + homepage = http://flac.sourceforge.net; + }; }; in stdenv.lib.listOfListsToAttrs [ diff --git a/pkgs/applications/audio/lame/default.nix b/pkgs/applications/audio/lame/default.nix index fa0fa679079..4a97b25cd60 100644 --- a/pkgs/applications/audio/lame/default.nix +++ b/pkgs/applications/audio/lame/default.nix @@ -4,6 +4,6 @@ stdenv.mkDerivation { name = "lame-3.97"; src = fetchurl { url = mirror://sourceforge/lame/lame-3.97.tar.gz ; - sha256 = "05xy9lv6m9s013lzlvhxwvr1586c239xaiiwka52k18hs6k388qa"; + sha256 = "05xy9lv6m9s013lzlvhxwvr1586c239xaiiwka52k18hs6k388qa"; }; } diff --git a/pkgs/applications/audio/snd/default.nix b/pkgs/applications/audio/snd/default.nix index 961d82fb889..38bebb12fd3 100644 --- a/pkgs/applications/audio/snd/default.nix +++ b/pkgs/applications/audio/snd/default.nix @@ -30,8 +30,7 @@ stdenv.mkDerivation rec { builder = writeScript (name + "-builder") (textClosure localDefs [doConfigure preBuild doMakeInstall doForceShare]); meta = { - description = " - Snd sound editor. -"; + description = "Snd sound editor."; + homepage = http://ccrma.stanford.edu/software/snd; }; } diff --git a/pkgs/applications/audio/xmms/default.nix b/pkgs/applications/audio/xmms/default.nix index bd5bb53414e..8e2650fd7c0 100644 --- a/pkgs/applications/audio/xmms/default.nix +++ b/pkgs/applications/audio/xmms/default.nix @@ -14,5 +14,6 @@ stdenv.mkDerivation { meta = { description = "A music player very similar to Winamp"; + homepage = http://www.xmms.org; }; } diff --git a/pkgs/applications/display-managers/slim/default.nix b/pkgs/applications/display-managers/slim/default.nix index c16582fc388..5b711111c91 100644 --- a/pkgs/applications/display-managers/slim/default.nix +++ b/pkgs/applications/display-managers/slim/default.nix @@ -20,4 +20,8 @@ stdenv.mkDerivation { substituteInPlace Makefile --replace /usr /no-such-path makeFlagsArray=(CC=gcc CXX=g++ PREFIX=$out MANDIR=$out/share/man CFGDIR=$out/etc) "; + + meta = { + homepage = http://slim.berlios.de; + }; } diff --git a/pkgs/applications/editors/joe/default.nix b/pkgs/applications/editors/joe/default.nix index 0228beb78d6..b6324e5879c 100644 --- a/pkgs/applications/editors/joe/default.nix +++ b/pkgs/applications/editors/joe/default.nix @@ -1,9 +1,13 @@ {stdenv, fetchurl} : stdenv.mkDerivation { -name = "joe-3.3"; -src = fetchurl { - url = mirror://sourceforge/joe-editor/joe-3.3.tar.gz; - md5 = "02221716679c039c5da00c275d61dbf4"; - }; + name = "joe-3.3"; + src = fetchurl { + url = mirror://sourceforge/joe-editor/joe-3.3.tar.gz; + md5 = "02221716679c039c5da00c275d61dbf4"; + }; + + meta = { + homepage = http://joe-editor.sourceforge.net; + }; } diff --git a/pkgs/applications/editors/nano/default.nix b/pkgs/applications/editors/nano/default.nix index 28bc07141a3..a0eee03c477 100644 --- a/pkgs/applications/editors/nano/default.nix +++ b/pkgs/applications/editors/nano/default.nix @@ -8,4 +8,8 @@ stdenv.mkDerivation { }; buildInputs = [ncurses gettext]; configureFlags = "--enable-tiny"; + + meta = { + homepage = http://www.nano-editor.org; + }; } diff --git a/pkgs/applications/editors/nedit/default.nix b/pkgs/applications/editors/nedit/default.nix index 345eccb0ff9..41028601da7 100644 --- a/pkgs/applications/editors/nedit/default.nix +++ b/pkgs/applications/editors/nedit/default.nix @@ -16,4 +16,8 @@ stdenv.mkDerivation { buildInputs = [x11 motif libXpm]; buildFlags = if stdenv.system == "i686-linux" then "linux" else ""; + + meta = { + homepage = http://www.nedit.org; + }; } diff --git a/pkgs/applications/editors/vim-diet/default.nix b/pkgs/applications/editors/vim-diet/default.nix index 76c022896fe..7e56d902282 100644 --- a/pkgs/applications/editors/vim-diet/default.nix +++ b/pkgs/applications/editors/vim-diet/default.nix @@ -12,4 +12,8 @@ stdenv.mkDerivation { buildInputs = [ncurses]; NIX_CFLAGS_COMPILE="-D_BSD_SOURCE=1"; + + meta = { + homepage = http://www.vim.org; + }; } diff --git a/pkgs/applications/editors/vim/default.nix b/pkgs/applications/editors/vim/default.nix index 5a524d6dabe..6839f337b6a 100644 --- a/pkgs/applications/editors/vim/default.nix +++ b/pkgs/applications/editors/vim/default.nix @@ -57,5 +57,6 @@ args.stdenv.mkDerivation { meta = { description = "The most popular clone of the VI editor"; + homepage = http://www.vim.org; }; } diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix index 1795d29e7fb..99df6bfe975 100644 --- a/pkgs/applications/graphics/ImageMagick/default.nix +++ b/pkgs/applications/graphics/ImageMagick/default.nix @@ -14,8 +14,11 @@ args: with args; buildInputs = [bzip2 freetype ghostscript graphviz libjpeg libpng libtiff libX11 libxml2 zlib libtool] ++ (if args ? tetex then [args.tetex] else []) - ++ (if args ? librsvg then [args.librsvg] else []) - ; + ++ (if args ? librsvg then [args.librsvg] else []); + + meta = { + homepage = http://www.imagemagick.org; + }; } // (if args ? tetex then { preConfigure = " export DVIDecodeDelegate=${args.tetex}/bin/dvips diff --git a/pkgs/applications/graphics/PythonMagick/default.nix b/pkgs/applications/graphics/PythonMagick/default.nix index 9096de6baa1..3e01dc7b2db 100644 --- a/pkgs/applications/graphics/PythonMagick/default.nix +++ b/pkgs/applications/graphics/PythonMagick/default.nix @@ -10,4 +10,7 @@ stdenv.mkDerivation { buildInputs = [python boost pkgconfig imagemagick]; + meta = { + homepage = http://www.imagemagick.org/script/api.php; + }; } diff --git a/pkgs/applications/graphics/dia/default.nix b/pkgs/applications/graphics/dia/default.nix index 606d58865b8..92bc477036a 100644 --- a/pkgs/applications/graphics/dia/default.nix +++ b/pkgs/applications/graphics/dia/default.nix @@ -11,5 +11,6 @@ stdenv.mkDerivation { meta = { description = "Gnome Diagram drawing software."; + homepage = http://www.gnome.org/projects/dia; }; } diff --git a/pkgs/applications/graphics/f-spot/default.nix b/pkgs/applications/graphics/f-spot/default.nix index 0da1d4fe473..40329412449 100644 --- a/pkgs/applications/graphics/f-spot/default.nix +++ b/pkgs/applications/graphics/f-spot/default.nix @@ -23,4 +23,8 @@ stdenv.mkDerivation { ]; inherit monoDLLFixer gtksharp sqlite libgnomeui; + + meta = { + homepage = http://f-spot.org; + }; } diff --git a/pkgs/applications/graphics/gqview/default.nix b/pkgs/applications/graphics/gqview/default.nix index 292c3b29bdd..a8132e30c72 100644 --- a/pkgs/applications/graphics/gqview/default.nix +++ b/pkgs/applications/graphics/gqview/default.nix @@ -17,5 +17,6 @@ stdenv.mkDerivation { meta = { description = "A fast image viewer"; + homepage = http://gqview.sourceforge.net; }; } diff --git a/pkgs/applications/graphics/inkscape/default.nix b/pkgs/applications/graphics/inkscape/default.nix index d09263576e5..dfed92f691e 100644 --- a/pkgs/applications/graphics/inkscape/default.nix +++ b/pkgs/applications/graphics/inkscape/default.nix @@ -33,4 +33,8 @@ stdenv.mkDerivation { boost gettext ]; + + meta = { + homepage = http://www.inkscape.org; + }; } diff --git a/pkgs/applications/graphics/xfig/default.nix b/pkgs/applications/graphics/xfig/default.nix index 49de840e2dc..9b0d009e417 100644 --- a/pkgs/applications/graphics/xfig/default.nix +++ b/pkgs/applications/graphics/xfig/default.nix @@ -17,5 +17,6 @@ stdenv.mkDerivation { meta = { description = "An interactive drawing tool for X11"; + homepage = http://xfig.org; }; } diff --git a/pkgs/applications/jedit/default.nix b/pkgs/applications/jedit/default.nix index aaf558ace09..c43b7f86914 100644 --- a/pkgs/applications/jedit/default.nix +++ b/pkgs/applications/jedit/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "jedit-4.2"; src = fetchurl { - url = http://kent.dl.sourceforge.net/sourceforge/jedit/jedit42source.tar.gz; + url = mirror://sf/jedit/jedit42source.tar.gz; sha256 = "1ckqghsw2r30kfkqfgjl4k47gdwpz8c1h85haw0y0ymq4rqh798j"; }; @@ -22,7 +22,7 @@ stdenv.mkDerivation { meta = { description = "really nice programmers editor written in Java. Give it a try"; - homepage = http://sourceforge.net/project/showfiles.php?group_id=588; + homepage = http://www.jedit.org; license = "GPL"; }; } diff --git a/pkgs/applications/misc/acrobat-reader/default.nix b/pkgs/applications/misc/acrobat-reader/default.nix index 1cbdd09bc58..3c2e5bafeb2 100644 --- a/pkgs/applications/misc/acrobat-reader/default.nix +++ b/pkgs/applications/misc/acrobat-reader/default.nix @@ -18,4 +18,8 @@ stdenv.mkDerivation { (if xineramaSupport then libXinerama else null) ]; inherit fastStart; + + meta = { + homepage = http://www.adobe.com/products/reader; + }; } diff --git a/pkgs/applications/misc/bluez-firmware/default.nix b/pkgs/applications/misc/bluez-firmware/default.nix index 91b8dbdf8f4..f38a269408d 100644 --- a/pkgs/applications/misc/bluez-firmware/default.nix +++ b/pkgs/applications/misc/bluez-firmware/default.nix @@ -6,4 +6,8 @@ stdenv.mkDerivation { url = http://bluez.sf.net/download/bluez-firmware-1.1.tar.gz; md5 = "2f1c2d939108c865dd07bae3e819c573"; }; + + meta = { + homepage = http://www.bluez.org; + }; } diff --git a/pkgs/applications/misc/bluez-utils/default.nix b/pkgs/applications/misc/bluez-utils/default.nix index 7cf88851fc3..06bc2b2555f 100644 --- a/pkgs/applications/misc/bluez-utils/default.nix +++ b/pkgs/applications/misc/bluez-utils/default.nix @@ -7,4 +7,8 @@ stdenv.mkDerivation { md5 = "ae3729ab5592be06ed01b973d4b3e9fe"; }; buildInputs = [bluezLibs]; + + meta = { + homepage = http://www.bluez.org; + }; } diff --git a/pkgs/applications/misc/djvulibre/default.nix b/pkgs/applications/misc/djvulibre/default.nix index e2082088fc9..81aa12e59f6 100644 --- a/pkgs/applications/misc/djvulibre/default.nix +++ b/pkgs/applications/misc/djvulibre/default.nix @@ -15,6 +15,7 @@ stdenv.mkDerivation { DjVu libre - a library and a viewer for djvu format - compression for scanned images. "; + homepage = http://djvu.sourceforge.net; }; } diff --git a/pkgs/applications/misc/fetchmail/default.nix b/pkgs/applications/misc/fetchmail/default.nix index 95fc61668fc..9639ff19fb0 100644 --- a/pkgs/applications/misc/fetchmail/default.nix +++ b/pkgs/applications/misc/fetchmail/default.nix @@ -1,7 +1,14 @@ -args: with args; stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name="fetchmail-6.3.8"; src = fetchurl { url = http://download.berlios.de/fetchmail/fetchmail-6.3.8.tar.bz2; sha256 = "5612f9af367f641e0efd084f44fcf1889669e711dbd8c60f6b7953e494d1b09b"; }; + + patches = [ ./security-fix.patch ]; + + meta = { + homepage = http://www.fetchmail.info; + }; } diff --git a/pkgs/applications/misc/fetchmail/security-fix.patch b/pkgs/applications/misc/fetchmail/security-fix.patch new file mode 100644 index 00000000000..4d48c7aa055 --- /dev/null +++ b/pkgs/applications/misc/fetchmail/security-fix.patch @@ -0,0 +1,11 @@ +--- old/sink.c (revision 5118) ++++ new/sink.c (revision 5119) +@@ -262,7 +262,7 @@ + const char *md1 = "MAILER-DAEMON", *md2 = "MAILER-DAEMON@"; + + /* don't bounce in reply to undeliverable bounces */ +- if (!msg->return_path[0] || ++ if (!msg || !msg->return_path[0] || + strcmp(msg->return_path, "<>") == 0 || + strcasecmp(msg->return_path, md1) == 0 || + strncasecmp(msg->return_path, md2, strlen(md2)) == 0) diff --git a/pkgs/applications/misc/gphoto2/default.nix b/pkgs/applications/misc/gphoto2/default.nix index ef70b54384a..e6dad337eb3 100644 --- a/pkgs/applications/misc/gphoto2/default.nix +++ b/pkgs/applications/misc/gphoto2/default.nix @@ -9,4 +9,8 @@ stdenv.mkDerivation rec { buildInputs = [pkgconfig libgphoto2 libexif popt gettext]; # There is a bug in 2.4.0 configure.ac (in their m4 macroses) patchPhase = "sed -e 's@_tmp=true@_tmp=false@' -i configure configure.ac"; + + meta = { + homepage = http://www.gphoto.org; + }; } diff --git a/pkgs/applications/misc/gv/default.nix b/pkgs/applications/misc/gv/default.nix index 2a0603e27c9..4566761e690 100644 --- a/pkgs/applications/misc/gv/default.nix +++ b/pkgs/applications/misc/gv/default.nix @@ -13,4 +13,8 @@ stdenv.mkDerivation { postConfigure = [ "sed 's|\\|${ghostscriptX}/bin/gs|g' -i src/*.am src/*.ad" ]; inherit ghostscriptX; + + meta = { + homepage = http://wwwthep.physik.uni-mainz.de/~plass/gv; + }; } diff --git a/pkgs/applications/misc/hello/ex-1/default.nix b/pkgs/applications/misc/hello/ex-1/default.nix index 6411e1a845e..51b2ccb58ed 100644 --- a/pkgs/applications/misc/hello/ex-1/default.nix +++ b/pkgs/applications/misc/hello/ex-1/default.nix @@ -11,5 +11,6 @@ stdenv.mkDerivation { meta = { description = "GNU Hello, a classic computer science tool"; + homepage = http://www.gnu.org/software/hello/; }; } diff --git a/pkgs/applications/misc/maxima/default.nix b/pkgs/applications/misc/maxima/default.nix index ad44a7b5d0f..72770c9a918 100644 --- a/pkgs/applications/misc/maxima/default.nix +++ b/pkgs/applications/misc/maxima/default.nix @@ -11,8 +11,7 @@ stdenv.mkDerivation { buildInputs =[clisp]; meta = { - description = " - Maxima computer algebra system -"; + description = "Maxima computer algebra system"; + homepage = http://maxima.sourceforge.net; }; } diff --git a/pkgs/applications/misc/pgadmin/default.nix b/pkgs/applications/misc/pgadmin/default.nix index a1b9874981e..4b43f4bc48c 100644 --- a/pkgs/applications/misc/pgadmin/default.nix +++ b/pkgs/applications/misc/pgadmin/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation { meta = { description = "postgresql admin gui tool"; - homepage = http://www.pgadmin.org/download/; + homepage = http://www.pgadmin.org; license = "GPL2"; }; } diff --git a/pkgs/applications/misc/procmail/default.nix b/pkgs/applications/misc/procmail/default.nix index b1d54ef5fc9..50767a7dde8 100644 --- a/pkgs/applications/misc/procmail/default.nix +++ b/pkgs/applications/misc/procmail/default.nix @@ -1,4 +1,5 @@ -args: with args; stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name="procmail-3.22"; buildInputs = [stdenv.gcc.libc]; installPhase = " diff --git a/pkgs/applications/misc/rxvt_unicode/default.nix b/pkgs/applications/misc/rxvt_unicode/default.nix index c128ca11a5a..a44530987c4 100644 --- a/pkgs/applications/misc/rxvt_unicode/default.nix +++ b/pkgs/applications/misc/rxvt_unicode/default.nix @@ -1,4 +1,5 @@ -args: with args; stdenv.mkDerivation { +args: with args; +stdenv.mkDerivation { name = "rxvt-unicode-8.9"; buildInputs = [ libX11 libXt libXft perl ]; diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix index be0c449abc7..ea3fb6e7a91 100644 --- a/pkgs/applications/misc/synergy/default.nix +++ b/pkgs/applications/misc/synergy/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { meta= { description = "share mouse keyboard and clipboard between computers"; - homepage = http://synergy2; + homepage = http://synergy2.sourceforge.net; license = "GPL"; }; } diff --git a/pkgs/applications/misc/xchm/default.nix b/pkgs/applications/misc/xchm/default.nix index ccd14b1f652..d9ffe8515db 100644 --- a/pkgs/applications/misc/xchm/default.nix +++ b/pkgs/applications/misc/xchm/default.nix @@ -10,5 +10,6 @@ stdenv.mkDerivation { meta = { description = "A viewer for Microsoft HTML Help files"; + homepage = http://xchm.sourceforge.net; }; } diff --git a/pkgs/applications/misc/xterm/default.nix b/pkgs/applications/misc/xterm/default.nix index 97c8b42697f..aba6a6a07a3 100644 --- a/pkgs/applications/misc/xterm/default.nix +++ b/pkgs/applications/misc/xterm/default.nix @@ -8,5 +8,9 @@ stdenv.mkDerivation rec { }; buildInputs = [libXaw xproto libXt libX11 libSM libICE ncurses]; configureFlags = ["--enable-wide-chars"]; + + meta = { + homepage = http://invisible-island.net/xterm; + }; } diff --git a/pkgs/applications/networking/browsers/firefox3b1/default.nix b/pkgs/applications/networking/browsers/firefox3b1/default.nix index 834376bb160..675f2935d2f 100644 --- a/pkgs/applications/networking/browsers/firefox3b1/default.nix +++ b/pkgs/applications/networking/browsers/firefox3b1/default.nix @@ -50,6 +50,7 @@ stdenv.mkDerivation { meta = { description = "Mozilla Firefox - the browser, reloaded"; + homepage = http://www.mozilla.com/en-US/firefox/; }; passthru = {inherit gtk;}; diff --git a/pkgs/applications/networking/browsers/mozilla/default.nix b/pkgs/applications/networking/browsers/mozilla/default.nix index cb7573eb8a1..a2c667fa968 100644 --- a/pkgs/applications/networking/browsers/mozilla/default.nix +++ b/pkgs/applications/networking/browsers/mozilla/default.nix @@ -15,4 +15,7 @@ stdenv.mkDerivation { inherit gtk; #patches = [./writable-copies.patch]; + meta = { + homepage = http://www.mozilla.org; + }; } diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix index 7393cffe316..2adcf92540f 100644 --- a/pkgs/applications/networking/browsers/opera/default.nix +++ b/pkgs/applications/networking/browsers/opera/default.nix @@ -34,4 +34,8 @@ stdenv.mkDerivation rec { libPath = [glibc qt motif zlib libX11 libXt libXext libSM libICE libstdcpp5] ++ (if motif != null then [motif ] else []); + + meta = { + homepage = http://www.opera.com; + }; } diff --git a/pkgs/applications/networking/browsers/w3m/default.nix b/pkgs/applications/networking/browsers/w3m/default.nix index 640dffd0baa..1cda828cf53 100644 --- a/pkgs/applications/networking/browsers/w3m/default.nix +++ b/pkgs/applications/networking/browsers/w3m/default.nix @@ -21,4 +21,8 @@ stdenv.mkDerivation { (if graphicsSupport then gdkpixbuf else null) ]; #patches = [./bsd.patch]; + + meta = { + homepage = http://w3m.sourceforge.net; + }; } diff --git a/pkgs/applications/networking/instant-messengers/amsn/default.nix b/pkgs/applications/networking/instant-messengers/amsn/default.nix index 0f357c16514..330d7e9d281 100644 --- a/pkgs/applications/networking/instant-messengers/amsn/default.nix +++ b/pkgs/applications/networking/instant-messengers/amsn/default.nix @@ -10,4 +10,8 @@ stdenv.mkDerivation { inherit tcl tk libstdcpp; buildInputs = [which tcl tk x11 ]; + + meta = { + homepage = http://amsn-project.net; + }; } diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix index cde1cb2534b..2d70c583cab 100644 --- a/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix +++ b/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix @@ -9,6 +9,7 @@ stdenv.mkDerivation { meta = { description = "OTR plugin for Pidgin IM."; + homepage = http://www.cypherpunks.ca/otr; }; postInstall = "ln -s \$out/lib/pidgin \$out/share/pidgin-otr"; diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix index 894da72b38f..95664d0fbeb 100644 --- a/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix +++ b/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix @@ -37,5 +37,6 @@ stdenv.mkDerivation { Enable it for user by linking to ~/.purple/plugins - from sw/share/pidgin-latex , not from store of course. "; + homepage = http://tapas.affenbande.org/wordpress/?page_id=70; }; } diff --git a/pkgs/applications/networking/instant-messengers/pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin/default.nix index 46af8533474..bc49144565c 100644 --- a/pkgs/applications/networking/instant-messengers/pidgin/default.nix +++ b/pkgs/applications/networking/instant-messengers/pidgin/default.nix @@ -38,5 +38,6 @@ stdenv.mkDerivation { configureFlags="--with-nspr-includes=${nss}/include/nspr --with-nspr-libs=${nss}/lib --with-nss-includes=${nss}/include/nss --with-nss-libs=${nss}/lib --with-ncurses-headers=${ncurses}/include"; meta = { description = "Pidgin IM - XMPP(Jabber), AIM/ICQ, IRC, SIP etc client."; + homepage = http://pidgin.im; }; } diff --git a/pkgs/applications/networking/irc/irssi/default.nix b/pkgs/applications/networking/irc/irssi/default.nix index a120db5a87b..e5d60ef7dfe 100644 --- a/pkgs/applications/networking/irc/irssi/default.nix +++ b/pkgs/applications/networking/irc/irssi/default.nix @@ -9,4 +9,8 @@ stdenv.mkDerivation { buildInputs = [pkgconfig ncurses glib openssl]; NIX_LDFLAGS = "-lncurses"; configureFlags = "--with-proxy --with-ncurses --enable-ssl"; + + meta = { + homepage = http://irssi.org; + }; } diff --git a/pkgs/applications/networking/irc/xchat/default.nix b/pkgs/applications/networking/irc/xchat/default.nix index e75201f2081..f7e4395e530 100644 --- a/pkgs/applications/networking/irc/xchat/default.nix +++ b/pkgs/applications/networking/irc/xchat/default.nix @@ -8,4 +8,8 @@ stdenv.mkDerivation { }; buildInputs = [pkgconfig tcl gtk]; configureFlags = "--disable-nls"; + + meta = { + homepage = http://www.xchat.org; + }; } diff --git a/pkgs/applications/networking/mailreaders/mutt/default.nix b/pkgs/applications/networking/mailreaders/mutt/default.nix index 6b10cfc04a2..c3b4fe54d02 100644 --- a/pkgs/applications/networking/mailreaders/mutt/default.nix +++ b/pkgs/applications/networking/mailreaders/mutt/default.nix @@ -21,4 +21,8 @@ stdenv.mkDerivation { (if sslSupport then "--with-ssl" else "--without-ssl") (if imapSupport then "--enable-imap" else "--disable-imap") ]; + + meta = { + homepage = http://www.mutt.org; + }; } From 891295a46a563182b7ef1322a82fe95bf71d9d54 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 10:42:02 +0000 Subject: [PATCH 192/320] More homepages svn path=/nixpkgs/branches/stdenv-updates/; revision=10432 --- pkgs/os-specific/linux/alsa/library/default.nix | 4 ++++ pkgs/os-specific/linux/alsa/utils/default.nix | 4 ++++ pkgs/tools/archivers/unzip/default.nix | 4 ++++ pkgs/tools/archivers/zip/default.nix | 4 ++++ pkgs/tools/compression/bzip2/default.nix | 3 +++ pkgs/tools/compression/zdelta/default.nix | 8 ++++++-- 6 files changed, 25 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/alsa/library/default.nix b/pkgs/os-specific/linux/alsa/library/default.nix index 32df29d722f..6ab8143c7ab 100644 --- a/pkgs/os-specific/linux/alsa/library/default.nix +++ b/pkgs/os-specific/linux/alsa/library/default.nix @@ -6,4 +6,8 @@ stdenv.mkDerivation { url = ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.14.tar.bz2; sha256 = "18xhm53adgss20jnva2nfl9gk46kb5an6ah820pazqn0ykd97rh1"; }; + + meta = { + homepage = http://www.alsa-project.org; + }; } diff --git a/pkgs/os-specific/linux/alsa/utils/default.nix b/pkgs/os-specific/linux/alsa/utils/default.nix index ccc49432566..658d8d8e9f7 100644 --- a/pkgs/os-specific/linux/alsa/utils/default.nix +++ b/pkgs/os-specific/linux/alsa/utils/default.nix @@ -7,4 +7,8 @@ stdenv.mkDerivation { sha256 = "1jx5bwa8abx7aih4lymx4bnrmyip2yb0rp1mza97wpni1q7n6z9h"; }; buildInputs = [alsaLib ncurses gettext]; + + meta = { + homepage = http://www.alsa-project.org; + }; } diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix index e19e564a421..a690a8e7163 100644 --- a/pkgs/tools/archivers/unzip/default.nix +++ b/pkgs/tools/archivers/unzip/default.nix @@ -7,4 +7,8 @@ stdenv.mkDerivation { url = http://nix.cs.uu.nl/dist/tarballs/unzip552.tar.gz; md5 = "9d23919999d6eac9217d1f41472034a9"; }; + + meta = { + homepage = http://www.info-zip.org; + }; } diff --git a/pkgs/tools/archivers/zip/default.nix b/pkgs/tools/archivers/zip/default.nix index f3fb96ae1e5..9498bf089ff 100644 --- a/pkgs/tools/archivers/zip/default.nix +++ b/pkgs/tools/archivers/zip/default.nix @@ -5,4 +5,8 @@ url = ftp://ftp.info-zip.org/pub/infozip/src/zip232.tgz; md5 = "8a4da4460386e324debe97f3b7fe4d96"; }; + + meta = { + homepage = http://www.info-zip.org; + }; } diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix index 1a5dd61803a..9ed3e941bf6 100644 --- a/pkgs/tools/compression/bzip2/default.nix +++ b/pkgs/tools/compression/bzip2/default.nix @@ -11,4 +11,7 @@ stdenv.mkDerivation { sharedLibrary = !stdenv.isDarwin && !(stdenv ? isDietLibC) && stdenv.system != "i686-cygwin"; + meta = { + homepage = http://www.bzip.org; + }; } diff --git a/pkgs/tools/compression/zdelta/default.nix b/pkgs/tools/compression/zdelta/default.nix index 8bd6d8a0e16..a07deac4148 100644 --- a/pkgs/tools/compression/zdelta/default.nix +++ b/pkgs/tools/compression/zdelta/default.nix @@ -1,10 +1,14 @@ {stdenv, fetchurl}: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "zdelta-2.1"; builder = ./builder.sh; src = fetchurl { - url = http://cis.poly.edu/zdelta/downloads/zdelta-2.1.tar.gz; + url = "${meta.homepage}/downloads/${name}.tar.gz"; md5 = "c69583a64f42f69a39e297d0d27d77e5"; }; + + meta = { + homepage = http://cis.poly.edu/zdelta; + }; } From 7e13db278039f568a977b7b269832f6eb0eecce4 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 13:50:53 +0000 Subject: [PATCH 193/320] Removed duplicated ghc68_extra_libs (introduced by incorrect trunk merge) svn path=/nixpkgs/branches/stdenv-updates/; revision=10434 --- pkgs/top-level/all-packages.nix | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 251c7171f18..ac8bbbc1041 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1061,22 +1061,6 @@ rec { # using nvs to be able to use mtl-1.1.0.0 as name in lib.nvs "mtl-1.1.0.0" (deriv "mtl-1.1.0.0" "cd libraries/mtl" [ (__getAttr "base-3.0.1.0" ghc.core_libs) ]); - # this will change in the future - ghc68_extra_libs = - ghc : let - deriv = name : goSrcDir : deps : - let bd = builderDefs { - goSrcDir = "ghc-* /libraries"; - src = ghc.extra_src; - } null; in - stdenv.mkDerivation rec { - inherit name; - builder = bd.writeScript (name + "-builder") - (bd.textClosure [builderDefs.haskellBuilderDefs]); - }; - # using nvs to be able to use mtl-1.1.0.0 as name - in lib.nvs "mtl-1.1.0.0" (deriv "mtl-1.1.0.0" "libraries/mtl" [ (__getAttr "base-3.0.1.0" ghc.core_libs) ]); - # the wrappers basically does one thing: It defines GHC_PACKAGE_PATH before calling ghc{i,-pkg} # So you can have different wrappers with different library combinations # So installing ghc libraries isn't done by nix-env -i package but by adding the lib to the libraries list below From ecea9e1e0d0a39557e20dae63fe1edf5f7c94d98 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 17:32:06 +0000 Subject: [PATCH 194/320] procmail: syntax changed, mailstat should work svn path=/nixpkgs/branches/stdenv-updates/; revision=10437 --- pkgs/applications/misc/procmail/default.nix | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/misc/procmail/default.nix b/pkgs/applications/misc/procmail/default.nix index 50767a7dde8..22bdeb56da8 100644 --- a/pkgs/applications/misc/procmail/default.nix +++ b/pkgs/applications/misc/procmail/default.nix @@ -1,18 +1,13 @@ args: with args; stdenv.mkDerivation { name="procmail-3.22"; - buildInputs = [stdenv.gcc.libc]; - installPhase = " - ensureDir \$out/bin - find . -exec sed -e \"s%^RM[ \\t]*=%RM=`type -f rm | awk '{print $3;}'`%\" -i '{}' ';' - sed -e 's%\\(LDFLAGS = \$(LDFLAGS1) -lnsl -ldl -lc\\)%\\1 -m%' -i src/Makefile - sed -e \"s%^BASENAME.*%\BASENAME=$out%\" -i Makefile - make DESTDIR=\$out install - "; - phases ="installPhase"; + patchPhase = "find . -type f | xargs sed -i 's@/bin/rm@rm@g' "; + configurePhase= "make init"; + makeFlags = ''BASENAME=$(out) LIBS=-lm''; + + postInstall = '' sed -i /^PATH/d $out/bin/mailstat ''; src = fetchurl { url = ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz; sha256 = "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08"; }; - o=62; } From 3c14fa98a495a3537031e1aa0edb30baf51469da Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 17:32:13 +0000 Subject: [PATCH 195/320] fetchmail: more features, more dependencies svn path=/nixpkgs/branches/stdenv-updates/; revision=10438 --- pkgs/applications/misc/fetchmail/default.nix | 4 ++++ pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/misc/fetchmail/default.nix b/pkgs/applications/misc/fetchmail/default.nix index 9639ff19fb0..f62267c10d6 100644 --- a/pkgs/applications/misc/fetchmail/default.nix +++ b/pkgs/applications/misc/fetchmail/default.nix @@ -8,6 +8,10 @@ stdenv.mkDerivation { patches = [ ./security-fix.patch ]; + configureFlags = "--enable-fallback=procmail --with-ssl=${openssl}"; + + buildInputs = [ openssl python procmail ]; + meta = { homepage = http://www.fetchmail.info; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ac8bbbc1041..8bdc5ce2efa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4087,7 +4087,7 @@ rec { fbpanel = fbpanelFun {version="4.12";} null; fetchmail = import ../applications/misc/fetchmail { - inherit stdenv fetchurl; + inherit stdenv fetchurl openssl python procmail; }; wireshark = import ../applications/networking/sniffers/wireshark { From b7ff9b6d223a092f1a3f168e1a1b417a139f5a25 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 31 Jan 2008 17:32:28 +0000 Subject: [PATCH 196/320] selectVersion syntax changed to support getConfig out of the box svn path=/nixpkgs/branches/stdenv-updates/; revision=10439 --- pkgs/top-level/all-packages.nix | 150 ++++++++++++-------------------- 1 file changed, 58 insertions(+), 92 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8bdc5ce2efa..672a881ced9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -226,7 +226,15 @@ rec { # Call a specific version of a Nix expression, that is, # `selectVersion ./foo {version = "0.1.2"; args...}' evaluates to # `import ./foo/0.1.2.nix args'. - selectVersion = dir: args: import (dir + "/${args.version}.nix") args; + selectVersion = dir: defVersion: args: + let + pVersion = + if (args ? version && args.version != "") then + args.version + else + getConfig [ (baseNameOf (toString dir)) "version" ] defVersion; + in + import (dir + "/${pVersion}.nix") (args // { version = pVersion; }); ### STANDARD ENVIRONMENT @@ -463,15 +471,13 @@ rec { inherit fetchurl stdenv; }); - gdmapFun = lib.sumArgs (selectVersion ../tools/system/gdmap) { + gdmapFun = lib.sumArgs (selectVersion ../tools/system/gdmap "0.7.5") { inherit stdenv fetchurl builderDefs pkgconfig libxml2 intltool; inherit (gtkLibs) gtk; }; - gdmap = gdmapFun { - version = "0.7.5"; - } null; + gdmap = gdmapFun null; getopt = import ../tools/misc/getopt { inherit fetchurl stdenv; @@ -564,17 +570,13 @@ rec { inherit fetchurl stdenv ocaml; }; - /*hyppocampusFun = lib.sumArgs ( selectVersion ../tools/misc/hyppocampus ) { + /*hyppocampusFun = lib.sumArgs ( selectVersion ../tools/misc/hyppocampus "0.3rc1") { inherit builderDefs stdenv fetchurl libdbi libdbiDrivers fuse pkgconfig perl gettext dbus dbus_glib pcre libscd; inherit (gtkLibs) glib; bison = bison23; flex = flex2533; - }; - - hyppocampus = hyppocampusFun { - version = "0.3rc1"; - } null;*/ + };*/ jdiskreport = import ../tools/misc/jdiskreport { inherit fetchurl stdenv unzip jdk; @@ -709,15 +711,13 @@ rec { zlibSupport = !stdenv ? isDietLibC; }; - relfsFun = lib.sumArgs (selectVersion ../tools/misc/relfs) { + relfsFun = lib.sumArgs (selectVersion ../tools/misc/relfs "cvs.2007.12.01") { inherit fetchcvs stdenv ocaml postgresql fuse pcre builderDefs e2fsprogs pkgconfig; inherit (gnome) gnomevfs GConf; }; - relfs = relfsFun { - version = "cvs.2007.12.01"; - } null; + relfs = relfsFun null; replace = import ../tools/text/replace { inherit fetchurl stdenv; @@ -730,9 +730,8 @@ rec { }; */ - rlwrapFun = lib.sumArgs (selectVersion ../tools/misc/rlwrap) { - version = "0.28"; - inherit builderDefs readline; + rlwrapFun = lib.sumArgs (selectVersion ../tools/misc/rlwrap "0.28") { + inherit builderDefs readline; }; rlwrap = rlwrapFun null; @@ -757,8 +756,7 @@ rec { inherit fetchurl stdenv; }; - smbfsFuseFun = lib.sumArgs (selectVersion ../tools/networking/smbfs-fuse) { - version = "0.8.7"; + smbfsFuseFun = lib.sumArgs (selectVersion ../tools/networking/smbfs-fuse "0.8.7") { inherit builderDefs samba fuse; }; @@ -1356,20 +1354,18 @@ rec { inherit fetchurl stdenv zlib bzip2; }; - pyrexFun = lib.sumArgs (selectVersion ../development/interpreters/pyrex) { + pyrexFun = lib.sumArgs (selectVersion ../development/interpreters/pyrex "0.9.6") { inherit fetchurl stdenv stringsWithDeps lib builderDefs; python = builtins.getAttr "2.5" python_alts; }; - pyrex = pyrexFun {version = "0.9.6";} null; + pyrex = pyrexFun null; - QiFun = lib.sumArgs (selectVersion ../development/compilers/qi) { + QiFun = lib.sumArgs (selectVersion ../development/compilers/qi "9.1") { inherit clisp stdenv fetchurl builderDefs unzip; }; - Qi = QiFun { - version = getConfig ["Qi" "version"] "9.1"; - } null; + Qi = QiFun null; realPerl = import ../development/interpreters/perl { inherit fetchurl stdenv; @@ -1498,13 +1494,11 @@ rec { }; elfutilsFun = lib.sumArgs - (selectVersion ../development/tools/misc/elfutils) { + (selectVersion ../development/tools/misc/elfutils "0.131") { inherit fetchurl stdenv; }; - elfutils = elfutilsFun { - version = "0.131"; - } null; + elfutils = elfutilsFun null; epm = import ../development/tools/misc/epm { inherit fetchurl stdenv rpm; @@ -1563,13 +1557,11 @@ rec { inherit fetchurl stdenv perl perlXMLSimple; }; - indentFun = lib.sumArgs (selectVersion ../development/tools/misc/indent) { + indentFun = lib.sumArgs (selectVersion ../development/tools/misc/indent "2.2.9") { inherit fetchurl stdenv builderDefs; }; - indent = indentFun { - version = "2.2.9"; - } null; + indent = indentFun null; jikespg = import ../development/tools/parsing/jikespg { inherit fetchurl stdenv; @@ -2117,12 +2109,12 @@ rec { inherit fetchurl stdenv; }; - intltoolFun = lib.sumArgs (selectVersion ../development/tools/misc/intltool) { + intltoolFun = lib.sumArgs (selectVersion ../development/tools/misc/intltool "0.36.2") { inherit fetchurl stdenv lib builderDefs stringsWithDeps perl perlXMLParser; }; - intltool = intltoolFun {version = "0.36.2";} null; + intltool = intltoolFun null; jasper = import ../development/libraries/jasper { inherit fetchurl stdenv unzip libjpeg freeglut mesa; @@ -2172,20 +2164,17 @@ rec { inherit fetchurl stdenv; }; - libdbiFun = lib.sumArgs (selectVersion ../development/libraries/libdbi) { + libdbiFun = lib.sumArgs (selectVersion ../development/libraries/libdbi "0.8.2") { inherit stdenv fetchurl builderDefs; }; - libdbi = libdbiFun { - version = "0.8.2"; - } null; + libdbi = libdbiFun null; - libdbiDriversFun = lib.sumArgs (selectVersion ../development/libraries/libdbi-drivers) { + libdbiDriversFun = lib.sumArgs (selectVersion ../development/libraries/libdbi-drivers "0.8.2-1") { inherit stdenv fetchurl builderDefs libdbi; }; libdbiDrivers = libdbiDriversFun { - version = "0.8.2-1"; inherit sqlite mysql; } null; @@ -2217,14 +2206,12 @@ rec { inherit fetchurl stdenv gettext; }; - libextractorFun = lib.sumArgs (selectVersion ../development/libraries/libextractor) + libextractorFun = lib.sumArgs (selectVersion ../development/libraries/libextractor "0.5.18") { inherit fetchurl stdenv builderDefs zlib; }; - libextractor = libextractorFun { - version = "0.5.18"; - } null; + libextractor = libextractorFun null; libgcrypt = import ../development/libraries/libgcrypt { inherit fetchurl stdenv libgpgerror; @@ -2302,13 +2289,11 @@ rec { inherit fetchurl stdenv zlib; }; - /*libscdFun = lib.sumArgs (selectVersion ../development/libraries/libscd) { + /*libscdFun = lib.sumArgs (selectVersion ../development/libraries/libscd "0.4.2") { inherit stdenv fetchurl builderDefs libextractor perl pkgconfig; }; - libscd = libscdFun { - version = "0.4.2"; - } null;*/ + libscd = libscdFun null;*/ libsigcxx = import ../development/libraries/libsigcxx { inherit fetchurl stdenv pkgconfig; @@ -3250,14 +3235,11 @@ rec { inherit fetchurl stdenv; }; - atherosFun = lib.sumArgs (selectVersion ../os-specific/linux/atheros) { + atherosFun = lib.sumArgs (selectVersion ../os-specific/linux/atheros "r3122") { inherit fetchurl stdenv builderDefs; }; - atherosVersion = "r3122"; - atherosFunCurrent = kernel: atherosFun { - version = atherosVersion; inherit kernel; } null; @@ -3286,13 +3268,11 @@ rec { static = true; })); - dmidecodeFun = lib.sumArgs (selectVersion ../os-specific/linux/dmidecode) { + dmidecodeFun = lib.sumArgs (selectVersion ../os-specific/linux/dmidecode "2.9") { inherit fetchurl stdenv builderDefs; }; - dmidecode = dmidecodeFun { - version = "2.9"; - } null; + dmidecode = dmidecodeFun null; dietlibc = import ../os-specific/linux/dietlibc { inherit fetchurl glibc; @@ -3432,13 +3412,12 @@ rec { configFile = getConfig ["kernel" "configFile"] null; }; - kqemuFun = lib.sumArgs (selectVersion ../os-specific/linux/kqemu) { + kqemuFun = lib.sumArgs (selectVersion ../os-specific/linux/kqemu "1.3.0pre11") { inherit fetchurl stdenv builderDefs; }; # No finished expression is provided - pick your own kernel kqemuFunCurrent = theKernel: (kqemuFun { - version = "1.3.0pre11"; kernel = theKernel; } null); @@ -3624,13 +3603,11 @@ rec { inherit fetchurl stdenv; }; - sdparmFun = lib.sumArgs (selectVersion ../os-specific/linux/sdparm) { + sdparmFun = lib.sumArgs (selectVersion ../os-specific/linux/sdparm "1.02") { inherit fetchurl stdenv builderDefs; }; - sdparm = sdparmFun { - version = "1.02"; - } null; + sdparm = sdparmFun null; shadowutils = import ../os-specific/linux/shadow { inherit fetchurl stdenv; @@ -3932,7 +3909,7 @@ rec { version = "0.6.2"; }; - compizFun = lib.sumArgs (assert mesaSupported; selectVersion ../applications/window-managers/compiz) { + compizFun = lib.sumArgs (assert mesaSupported; selectVersion ../applications/window-managers/compiz "0.6.2") { inherit lib builderDefs stringsWithDeps; inherit fetchurl stdenv pkgconfig libpng mesa perl perlXMLParser libxslt; inherit (xorg) libXcomposite libXfixes libXdamage libXrandr @@ -3950,7 +3927,6 @@ rec { }; compiz = compizFun { - version = getConfig ["compiz" "version"] "0.6.2"; extraConfigureFlags = getConfig ["compiz" "extraConfigureFlags"] []; } null; @@ -4020,13 +3996,12 @@ rec { inherit fetchurl stdenv qt4 djvulibre; }; - dvdplusrwtoolsFun = lib.sumArgs (selectVersion ../os-specific/linux/dvd+rw-tools) { + /* TODO: rename to be able to set version */ + dvdplusrwtoolsFun = lib.sumArgs (selectVersion ../os-specific/linux/dvd+rw-tools "7.0") { inherit fetchurl stdenv builderDefs cdrkit m4; }; - dvdplusrwtools = dvdplusrwtoolsFun { - version = "7.0"; - } null; + dvdplusrwtools = dvdplusrwtoolsFun null; eclipse = plugins: import ../applications/editors/eclipse { @@ -4078,13 +4053,13 @@ rec { openexr = openexr_1_6_1; }; - fbpanelFun = lib.sumArgs (selectVersion ../applications/window-managers/fbpanel) { + fbpanelFun = lib.sumArgs (selectVersion ../applications/window-managers/fbpanel "4.12") { inherit fetchurl stdenv builderDefs pkgconfig libpng libjpeg libtiff librsvg; inherit (gtkLibs) gtk; inherit (xlibs) libX11 libXmu libXpm; }; - fbpanel = fbpanelFun {version="4.12";} null; + fbpanel = fbpanelFun null; fetchmail = import ../applications/misc/fetchmail { inherit stdenv fetchurl openssl python procmail; @@ -4206,11 +4181,11 @@ rec { inherit (xlibs) libX11 libXext libXi libXmu; }; - gocrFun = lib.sumArgs (selectVersion ../applications/graphics/gocr) { + gocrFun = lib.sumArgs (selectVersion ../applications/graphics/gocr "0.44") { inherit builderDefs fetchurl stdenv; }; - gocr = gocrFun {version = "0.44";} null; + gocr = gocrFun null; gphoto2 = import ../applications/misc/gphoto2 { inherit fetchurl stdenv pkgconfig libgphoto2 libexif popt readline gettext; @@ -4478,7 +4453,7 @@ rec { python = builtins.getAttr "2.5" python_alts; }; - qemuFun = lib.sumArgs (selectVersion ../applications/virtualization/qemu ) { + qemuFun = lib.sumArgs (selectVersion ../applications/virtualization/qemu "0.9.0") { inherit fetchurl; stdenv = overrideGCC stdenv gcc34; builderDefs = builderDefs { @@ -4487,18 +4462,14 @@ rec { inherit SDL zlib which; }; - qemu = qemuFun { - version = "0.9.0"; - } null; + qemu = qemuFun null; qemuImageFun = lib.sumArgs - (selectVersion ../applications/virtualization/qemu/linux-img ) { + (selectVersion ../applications/virtualization/qemu/linux-img "0.2") { inherit builderDefs fetchurl stdenv; }; - qemuImage = qemuImageFun { - version = "0.2"; - } null; + qemuImage = qemuImageFun null; ratpoison = import ../applications/window-managers/ratpoison { inherit fetchurl stdenv fontconfig readline; @@ -4695,16 +4666,14 @@ rec { flags = [ "X11" ]; # only flag "X11" by now }; - /*virtualboxFun = lib.sumArgs (selectVersion ../applications/virtualization/virtualbox) { + /*virtualboxFun = lib.sumArgs (selectVersion ../applications/virtualization/virtualbox "1.5.2") { inherit stdenv fetchurl builderDefs bridge_utils umlutilities kernelHeaders wine jre libxslt SDL qt3 openssl zlib; inherit (xorg) libXcursor; inherit (gnome) libIDL; }; - virtualbox = virtualboxFun { - version = "1.5.2"; - } null;*/ + virtualbox = virtualboxFun null;*/ vlc = import ../applications/video/vlc { inherit fetchurl stdenv perl x11 wxGTK @@ -4794,13 +4763,12 @@ rec { base14Fonts = "${ghostscript}/share/ghostscript/fonts"; }; - xscreensaverFun = lib.sumArgs (selectVersion ../applications/graphics/xscreensaver) { + xscreensaverFun = lib.sumArgs (selectVersion ../applications/graphics/xscreensaver "5.04") { inherit stdenv fetchurl builderDefs lib pkgconfig bc perl intltool; inherit (xlibs) libX11 libXmu; }; xscreensaver = xscreensaverFun { - version = "5.04"; flags = ["GL" "gdkpixbuf" "DPMS" "gui" "jpeg"]; inherit mesa libxml2 libjpeg; inherit (gtkLibs) gtk; @@ -4868,7 +4836,7 @@ rec { ### GAMES - construoFun = lib.sumArgs (selectVersion ../games/construo) { + construoFun = lib.sumArgs (selectVersion ../games/construo "0.2.2") { inherit stdenv fetchurl builderDefs zlib; inherit (xlibs) libX11 xproto; @@ -4876,7 +4844,6 @@ rec { construo = construoFun { inherit mesa freeglut; - version = "0.2.2"; } null; exult = import ../games/exult { @@ -4928,12 +4895,11 @@ rec { }; # You still can override by passing more arguments. - spaceOrbitFun = lib.sumArgs (selectVersion ../games/orbit ) { + spaceOrbitFun = lib.sumArgs (selectVersion ../games/orbit "1.01") { inherit fetchurl stdenv builderDefs mesa freeglut; inherit (gnome) esound; inherit (xlibs) libXt libX11 libXmu libXi libXext; - version = "1.01"; }; spaceOrbit = spaceOrbitFun null; From 45b91c969c69fb2d3afcabc0421fbd65aadd7d1c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:39:12 +0000 Subject: [PATCH 197/320] gettext: using selectVersion svn path=/nixpkgs/branches/stdenv-updates/; revision=10453 --- pkgs/development/libraries/gettext/default.nix | 8 -------- pkgs/top-level/all-packages.nix | 6 +++--- 2 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 pkgs/development/libraries/gettext/default.nix diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix deleted file mode 100644 index b0e64639d87..00000000000 --- a/pkgs/development/libraries/gettext/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -args: -args.stdenv.lib.listOfListsToAttrs [ - [ "recurseForDerivations" true ] - [ "0.14.6" (import ./0.14.6.nix args) ] - [ "0.15" (import ./0.15.nix args) ] - [ "0.16.x" (import ./0.16.x.nix args) ] - [ "default" (import ./0.16.x.nix args) ] -] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 672a881ced9..87ecc5c31c3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1929,12 +1929,12 @@ rec { # python / ruby support }; - gettext = getVersion "gettext" gettext_alts; - - gettext_alts = import ../development/libraries/gettext { + gettextFun = lib.sumArgs (selectVersion ../development/libraries/gettext "0.16.x") { inherit fetchurl stdenv; }; + gettext = gettextFun null; + gd = import ../development/libraries/gd { inherit fetchurl stdenv zlib libpng freetype libjpeg fontconfig; }; From d52ed394ae143e260cdb8fa9b3132bf67feeb951 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:39:21 +0000 Subject: [PATCH 198/320] gettext: removed old versions, added 0.17 svn path=/nixpkgs/branches/stdenv-updates/; revision=10454 --- pkgs/development/libraries/gettext/0.14.6.nix | 9 --------- pkgs/development/libraries/gettext/0.15.nix | 9 --------- pkgs/development/libraries/gettext/0.17.nix | 9 +++++++++ 3 files changed, 9 insertions(+), 18 deletions(-) delete mode 100644 pkgs/development/libraries/gettext/0.14.6.nix delete mode 100644 pkgs/development/libraries/gettext/0.15.nix create mode 100644 pkgs/development/libraries/gettext/0.17.nix diff --git a/pkgs/development/libraries/gettext/0.14.6.nix b/pkgs/development/libraries/gettext/0.14.6.nix deleted file mode 100644 index bceacd318ec..00000000000 --- a/pkgs/development/libraries/gettext/0.14.6.nix +++ /dev/null @@ -1,9 +0,0 @@ -args: with args; -stdenv.mkDerivation { - name = "gettext-0.14.6"; - src = fetchurl { - url = mirror://gnu/gettext/gettext-0.14.6.tar.gz; - md5 = "c26fc7f0a493c5c7c39bbc4e7ed42790"; - }; - configureFlags = "--disable-csharp"; -} diff --git a/pkgs/development/libraries/gettext/0.15.nix b/pkgs/development/libraries/gettext/0.15.nix deleted file mode 100644 index 0c417aafe50..00000000000 --- a/pkgs/development/libraries/gettext/0.15.nix +++ /dev/null @@ -1,9 +0,0 @@ -args: with args; -stdenv.mkDerivation { - name = "gettext-0.15"; - src = fetchurl { - url = mirror://gnu/gettext/gettext-0.15.tar.gz; - md5 = "16bc6e4d37ac3d07495f737a2349a22b"; - }; - configureFlags = "--disable-csharp"; -} diff --git a/pkgs/development/libraries/gettext/0.17.nix b/pkgs/development/libraries/gettext/0.17.nix new file mode 100644 index 00000000000..6063f74612b --- /dev/null +++ b/pkgs/development/libraries/gettext/0.17.nix @@ -0,0 +1,9 @@ +args: with args; +stdenv.mkDerivation rec { + name = "gettext-" + version; + src = fetchurl { + url = "mirror://gnu/gettext/${name}.tar.gz"; + sha256 = "1fipjpaxxwifdw6cbr7mkxp1yvy643i38nhlh7124bqnisxki5i0"; + }; + configureFlags = "--disable-csharp"; +} From 33bb9b56eb7d62556728cf5d23e68dbeb370a83b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:39:32 +0000 Subject: [PATCH 199/320] gettext: 0.17 is now default version svn path=/nixpkgs/branches/stdenv-updates/; revision=10455 --- 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 87ecc5c31c3..143cf980c47 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1929,7 +1929,7 @@ rec { # python / ruby support }; - gettextFun = lib.sumArgs (selectVersion ../development/libraries/gettext "0.16.x") { + gettextFun = lib.sumArgs (selectVersion ../development/libraries/gettext "0.17") { inherit fetchurl stdenv; }; From f5bf68f9a8f2ffefba569d562590d99f33e7f915 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:39:44 +0000 Subject: [PATCH 200/320] wget: version 1.11 added, made default. svn path=/nixpkgs/branches/stdenv-updates/; revision=10456 --- .../networking/wget/{default.nix => 1.10.2.nix} | 0 pkgs/tools/networking/wget/1.11.nix | 16 ++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +++- 3 files changed, 19 insertions(+), 1 deletion(-) rename pkgs/tools/networking/wget/{default.nix => 1.10.2.nix} (100%) create mode 100644 pkgs/tools/networking/wget/1.11.nix diff --git a/pkgs/tools/networking/wget/default.nix b/pkgs/tools/networking/wget/1.10.2.nix similarity index 100% rename from pkgs/tools/networking/wget/default.nix rename to pkgs/tools/networking/wget/1.10.2.nix diff --git a/pkgs/tools/networking/wget/1.11.nix b/pkgs/tools/networking/wget/1.11.nix new file mode 100644 index 00000000000..c7295f1df94 --- /dev/null +++ b/pkgs/tools/networking/wget/1.11.nix @@ -0,0 +1,16 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "wget-" + version; + src = fetchurl { + url = "mirror://gnu/wget/${name}.tar.bz2"; + sha256 = "0mhd3181zdp1fwirxw0km7502sfvjmm1ncska9w6s2drczf37aix"; + }; + + buildInputs = [gettext]; + + meta = { + description = "A console downloading program. Has some features for mirroring sites."; + homepage = http://www.gnu.org/software/wget; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 143cf980c47..3d558190b97 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -832,10 +832,12 @@ rec { inherit fetchurl stdenv; }; - wget = import ../tools/networking/wget { + wgetFun = lib.sumArgs (selectVersion ../tools/networking/wget "1.11") { inherit fetchurl stdenv gettext; }; + wget = wgetFun null; + which = import ../tools/system/which { inherit fetchurl stdenv readline; }; From a20bd6bfa9afbcac324795563642b70af3988a5c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:40:05 +0000 Subject: [PATCH 201/320] libexif: removed unneeded gettext dependency svn path=/nixpkgs/branches/stdenv-updates/; revision=10457 --- pkgs/development/libraries/libexif/default.nix | 7 ++++++- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libexif/default.nix b/pkgs/development/libraries/libexif/default.nix index 76434d2c30b..9e77de0df32 100644 --- a/pkgs/development/libraries/libexif/default.nix +++ b/pkgs/development/libraries/libexif/default.nix @@ -8,5 +8,10 @@ stdenv.mkDerivation rec { sha256 = "0hxc3aik3sn8xq4mbmxxb8ycx2lwffmhi5xvz0zjffhfwkaqas6v"; }; - buildInputs = [gettext]; + configureFlags = "--enable-shared --disable-static"; + + meta = { + homepage = http://libexif.sourceforge.net; + description = "The EXIF parsing library"; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3d558190b97..da0918f4795 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2205,7 +2205,7 @@ rec { }; libexif = import ../development/libraries/libexif { - inherit fetchurl stdenv gettext; + inherit fetchurl stdenv; }; libextractorFun = lib.sumArgs (selectVersion ../development/libraries/libextractor "0.5.18") From 56e0a4b43a92e19eb8dd53c82ef13bf3e4f5f916 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:40:23 +0000 Subject: [PATCH 202/320] libgphoto2: removed unneeded gettext dependency svn path=/nixpkgs/branches/stdenv-updates/; revision=10458 --- pkgs/development/libraries/libgphoto2/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libgphoto2/default.nix b/pkgs/development/libraries/libgphoto2/default.nix index 6e332117a2d..9397530287b 100644 --- a/pkgs/development/libraries/libgphoto2/default.nix +++ b/pkgs/development/libraries/libgphoto2/default.nix @@ -7,9 +7,10 @@ stdenv.mkDerivation rec { url = "mirror://sourceforge/gphoto/${name}.tar.bz2"; sha256 = "0yfvpgfly774jnjrfqjf89h99az3sgvzkfpb9diygpk8hmx6phhd"; }; - buildInputs = [pkgconfig libusb libtool libexif libjpeg gettext]; + buildInputs = [pkgconfig libusb libtool libexif libjpeg]; meta = { - license = "LGPL-2"; + license = "LGPL-2"; + homepage = http://www.gphoto.org/proj/libgphoto2; }; } From 74d3d736f5c623a30c5b843bf5915b58dddd007b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:40:39 +0000 Subject: [PATCH 203/320] Removed unused patches (libexif, libgphoto2) svn path=/nixpkgs/branches/stdenv-updates/; revision=10459 --- .../development/libraries/libexif/no-po.patch | 20 ------------------- .../libgphoto2/libgphoto2-2.2.1.patch | 14 ------------- 2 files changed, 34 deletions(-) delete mode 100644 pkgs/development/libraries/libexif/no-po.patch delete mode 100644 pkgs/development/libraries/libgphoto2/libgphoto2-2.2.1.patch diff --git a/pkgs/development/libraries/libexif/no-po.patch b/pkgs/development/libraries/libexif/no-po.patch deleted file mode 100644 index 77e61236939..00000000000 --- a/pkgs/development/libraries/libexif/no-po.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -rc libexif-0.6.14/Makefile.in libexif-0.6.14.new/Makefile.in -*** libexif-0.6.14/Makefile.in 2007-05-10 17:14:58.000000000 +0200 ---- libexif-0.6.14.new/Makefile.in 2007-05-13 23:04:05.000000000 +0200 -*************** -*** 224,230 **** - target_alias = @target_alias@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ -! SUBDIRS = m4m po libexif test doc binary - @SHIP_BINARIES_TRUE@README_W32_XDIST = README-Win32.txt - EXTRA_DIST = @PACKAGE_TARNAME@.spec autogen.sh $(README_W32_XDIST) - ACLOCAL_AMFLAGS = -I auto-m4 -I m4m ---- 224,230 ---- - target_alias = @target_alias@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ -! SUBDIRS = m4m libexif test binary - @SHIP_BINARIES_TRUE@README_W32_XDIST = README-Win32.txt - EXTRA_DIST = @PACKAGE_TARNAME@.spec autogen.sh $(README_W32_XDIST) - ACLOCAL_AMFLAGS = -I auto-m4 -I m4m diff --git a/pkgs/development/libraries/libgphoto2/libgphoto2-2.2.1.patch b/pkgs/development/libraries/libgphoto2/libgphoto2-2.2.1.patch deleted file mode 100644 index 8d39d663719..00000000000 --- a/pkgs/development/libraries/libgphoto2/libgphoto2-2.2.1.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ruN libgphoto2-2.2.1/packaging/generic/print-camera-list.c libgphoto2-2.2.1.new/packaging/generic/print-camera-list.c ---- libgphoto2-2.2.1/packaging/generic/print-camera-list.c 2006-04-19 03:54:05.000000000 +0200 -+++ libgphoto2-2.2.1.new/packaging/generic/print-camera-list.c 2006-07-06 22:54:42.000000000 +0200 -@@ -48,8 +48,8 @@ - #include - #include - --#include --#include -+#include -+#include - - #ifndef TRUE - #define TRUE (0==0) From 2ac45781aa956be38af8006ac064c7ce05436379 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:40:46 +0000 Subject: [PATCH 204/320] tab->spaces svn path=/nixpkgs/branches/stdenv-updates/; revision=10460 --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index da0918f4795..1c8211d7fca 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1300,8 +1300,8 @@ rec { clisp = import ../development/interpreters/clisp { - inherit fetchurl stdenv libsigsegv gettext - readline ncurses coreutils pcre zlib; + inherit fetchurl stdenv libsigsegv gettext + readline ncurses coreutils pcre zlib; inherit (xlibs) libX11 libXau libXt; }; From aa4d93482dfd77012c8494abfdffec876e466521 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:41:06 +0000 Subject: [PATCH 205/320] D-Bus splitted into two packages: dbus.libs and dbus.tools svn path=/nixpkgs/branches/stdenv-updates/; revision=10461 --- .../networking/browsers/firefox3b1/3b2.nix | 2 +- .../compiz-fusion/general-dependencies.nix | 2 +- .../window-managers/compiz/0.6.2.nix | 2 +- .../window-managers/compiz/extra.nix | 2 +- .../libraries/dbus-glib/default.nix | 2 +- pkgs/development/libraries/dbus/default.nix | 48 ++++++++++++------- .../libraries/libnotify/default.nix | 7 +-- pkgs/development/libraries/qt-4/default.nix | 2 +- pkgs/os-specific/linux/hal/default.nix | 8 +--- pkgs/top-level/all-packages.nix | 18 ++----- 10 files changed, 46 insertions(+), 47 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox3b1/3b2.nix b/pkgs/applications/networking/browsers/firefox3b1/3b2.nix index 29ea90d9d89..bf812f6a7ad 100644 --- a/pkgs/applications/networking/browsers/firefox3b1/3b2.nix +++ b/pkgs/applications/networking/browsers/firefox3b1/3b2.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation { buildInputs = [ pkgconfig gtk perl zip libIDL libXi libjpeg libpng zlib cairo - python curl coreutils dbus dbus_glib pango freetype fontconfig + python curl coreutils dbus.libs dbus_glib pango freetype fontconfig libX11 libXrender libXft libXt ]; diff --git a/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix b/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix index 717d66e2c29..f02857cf80a 100644 --- a/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix +++ b/pkgs/applications/window-managers/compiz-fusion/general-dependencies.nix @@ -4,6 +4,6 @@ build-essential libxcomposite-dev libpng12-dev libsm-dev libxrandr-dev libxdamag args: with args; [ libpng - GConf mesa metacity librsvg dbus dbus_glib gnomedesktop git autoconf automake + GConf mesa metacity librsvg dbus.libs dbus_glib gnomedesktop git autoconf automake libtool libxslt libwnck intltool perl perlXMLParser compiz ] diff --git a/pkgs/applications/window-managers/compiz/0.6.2.nix b/pkgs/applications/window-managers/compiz/0.6.2.nix index 78369081bc9..8827b3cb7a0 100644 --- a/pkgs/applications/window-managers/compiz/0.6.2.nix +++ b/pkgs/applications/window-managers/compiz/0.6.2.nix @@ -14,7 +14,7 @@ args : with args; propagatedBuildInputs = [ libpng libXcomposite libXfixes libXdamage libXrandr libXinerama libICE libSM startupnotification mesa GConf perl perlXMLParser libxslt - dbus dbus_glib compositeproto fixesproto damageproto randrproto + dbus.libs dbus_glib compositeproto fixesproto damageproto randrproto xineramaproto renderproto kbproto xextproto libXrender ]; configureFlags = ["--enable-gtk" "--enable-fuse" diff --git a/pkgs/applications/window-managers/compiz/extra.nix b/pkgs/applications/window-managers/compiz/extra.nix index 501518d3f67..70f4e5dd8c3 100644 --- a/pkgs/applications/window-managers/compiz/extra.nix +++ b/pkgs/applications/window-managers/compiz/extra.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation { sha256 = "7fc7faafccfdf22dea7ac1de6629dcb55ec63d84fcb57a14559309cf284fa94f"; }; buildInputs = [ - pkgconfig compiz perl perlXMLParser GConf dbus gtk + pkgconfig compiz perl perlXMLParser GConf dbus.libs gtk ]; preBuild = " makeFlagsArray=(moduledir=$out/lib/compiz) diff --git a/pkgs/development/libraries/dbus-glib/default.nix b/pkgs/development/libraries/dbus-glib/default.nix index 8324980126c..2476ba4fabd 100644 --- a/pkgs/development/libraries/dbus-glib/default.nix +++ b/pkgs/development/libraries/dbus-glib/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { }; inherit dbus glib; buildInputs = [pkgconfig gettext glib expat]; - propagatedBuildInputs = [dbus]; + propagatedBuildInputs = [dbus.libs]; meta = { homepage = http://dbus.freedesktop.org; diff --git a/pkgs/development/libraries/dbus/default.nix b/pkgs/development/libraries/dbus/default.nix index cd4b8f49e05..04f08be8853 100644 --- a/pkgs/development/libraries/dbus/default.nix +++ b/pkgs/development/libraries/dbus/default.nix @@ -1,22 +1,38 @@ -{stdenv, fetchurl, pkgconfig, expat}: - -stdenv.mkDerivation { - name = "dbus-1.0.2"; +args: with args; +let + version = "1.0.2"; src = fetchurl { - url = http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz; + url = "http://dbus.freedesktop.org/releases/dbus/dbus-${version}.tar.gz"; sha256 = "1jn652zb81mczsx4rdcwrrzj3lfhx9d107zjfnasc4l5yljl204a"; }; - buildInputs = [pkgconfig expat]; - configureFlags = "--without-x --localstatedir=/var"; + configureFlags = "--disable-static --localstatedir=/var --with-session-socket-dir=/tmp"; +in rec { + libs = stdenv.mkDerivation { + name = "dbus-library-" + version; + buildInputs = [pkgconfig expat]; + inherit src configureFlags; + patchPhase = '' + sed -i /mkinstalldirs.*localstatedir/d bus/Makefile.in + sed -i '/SUBDIRS/s/ tools//' Makefile.in + ''; + }; - # Awful hack: `make install' wants to write in /var, but it - # can't. So redirect it with a DESTDIR. - preInstall = " - installFlagsArray=(DESTDIR=$out/destdir) - "; + tools = stdenv.mkDerivation { + name = "dbus-tools-" + version; + inherit src configureFlags; + buildInputs = [pkgconfig expat libs] + ++ if useX11 then [libX11 libICE libSM] else []; + postConfigure = "cd tools"; - postInstall = " - mv $out/destdir/$out/* $out - rm -rf $out/destdir - "; + NIX_LDFLAGS = "-ldbus-1"; + makeFlags = "DBUS_DAEMONDIR=${daemon}/bin"; + + patchPhase = '' + sed -i 's@ $(top_builddir)/dbus/libdbus-1.la@@' tools/Makefile.in + sed -i '/mkdir.*localstate/d' tools/Makefile.in + ''; + }; + +# I'm too lazy to separate daemon and libs now. + daemon = libs; } diff --git a/pkgs/development/libraries/libnotify/default.nix b/pkgs/development/libraries/libnotify/default.nix index 42747db95a1..8b58fe857e9 100644 --- a/pkgs/development/libraries/libnotify/default.nix +++ b/pkgs/development/libraries/libnotify/default.nix @@ -1,7 +1,4 @@ -{ stdenv, fetchurl -, pkgconfig, dbus, dbus_glib -, gtk, glib -}: +args: with args; stdenv.mkDerivation { name = "libnotify-0.4.4"; @@ -13,7 +10,7 @@ stdenv.mkDerivation { }; buildInputs = [ - pkgconfig dbus dbus_glib gtk glib + pkgconfig dbus.libs dbus_glib gtk glib ]; configureFlags=""; diff --git a/pkgs/development/libraries/qt-4/default.nix b/pkgs/development/libraries/qt-4/default.nix index 2d6366c81d7..2d05ad22db0 100644 --- a/pkgs/development/libraries/qt-4/default.nix +++ b/pkgs/development/libraries/qt-4/default.nix @@ -4,7 +4,7 @@ rec { setupHook = ./setup-hook.sh; propagatedBuildInputs = [libXft libXrender libXrandr randrproto xextproto libXinerama xineramaproto libXcursor zlib libjpeg mysql libpng which mesa - libXmu openssl dbus cups pkgconfig libXext freetype fontconfig inputproto + libXmu openssl dbus.libs cups pkgconfig libXext freetype fontconfig inputproto fixesproto libXfixes glib libtiff]; prefixKey = "-prefix "; configureFlags = " diff --git a/pkgs/os-specific/linux/hal/default.nix b/pkgs/os-specific/linux/hal/default.nix index 1fc01298105..ce41a29a9fe 100644 --- a/pkgs/os-specific/linux/hal/default.nix +++ b/pkgs/os-specific/linux/hal/default.nix @@ -1,8 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, python, pciutils, usbutils, expat -, libusb, dbus, dbus_glib, glib, libvolume_id, perl, perlXMLParser -, gettext, zlib /* required by pciutils */, eject, libsmbios -, udev -}: +args: with args; stdenv.mkDerivation { name = "hal-0.5.9"; @@ -13,7 +9,7 @@ stdenv.mkDerivation { }; buildInputs = [ - pkgconfig python pciutils expat libusb dbus dbus_glib glib + pkgconfig python pciutils expat libusb dbus.libs dbus_glib glib libvolume_id perl perlXMLParser gettext zlib libsmbios ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1c8211d7fca..9bcb581aede 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1825,20 +1825,11 @@ rec { inherit fetchurl stdenv; }; - # I think, this is a bad practice to use getVersion for various build - # variants, but it's 5 o'clock now... - dbus = getVersion "dbus" dbus_alts; - - dbus_alts = rec - { - noX11 = import ../development/libraries/dbus { + dbus = import ../development/libraries/dbus { inherit fetchurl stdenv pkgconfig expat; - }; - withX11 = import ../development/libraries/dbus_x { - inherit fetchurl stdenv pkgconfig expat; inherit (xlibs) libX11 libICE libSM; - }; - default = noX11; + useX11 = getConfig [ "dbus" "tools" "useX11" ] + (getConfig [ "services" "xserver" "enable" ] false); }; dbus_glib = import ../development/libraries/dbus-glib { @@ -4955,7 +4946,7 @@ rec { xineLib libgphoto2 djvulibre libogg lame libvorbis poppler readline saneBackends chmlib python libzip gmp sqlite libidn runCommand lib openbabel ocaml facile stdenv jasper fam indilib libnova - libarchive; + libarchive dbus; flac = builtins.getAttr "1.1.2" flacAlts; cdparanoia = cdparanoiaIII; inherit (xlibs) @@ -4966,7 +4957,6 @@ rec { libxkbfile libXinerama libpthreadstubs libXxf86vm xset xprop; inherit (gtkLibs) glib; qt = qt4; - dbus = dbus_alts.withX11; bison = bison23; openexr = openexr_1_6_1 ; }); From 0facf68545ac2c06562663c28ea18d93168765a8 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:41:20 +0000 Subject: [PATCH 206/320] ImageMagick: 6.3.8-2 svn path=/nixpkgs/branches/stdenv-updates/; revision=10462 --- pkgs/applications/graphics/ImageMagick/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix index 99df6bfe975..67df0c7b3c4 100644 --- a/pkgs/applications/graphics/ImageMagick/default.nix +++ b/pkgs/applications/graphics/ImageMagick/default.nix @@ -1,10 +1,10 @@ args: with args; -(stdenv.mkDerivation ({ - name = "ImageMagick-6.3.7-9"; +stdenv.mkDerivation (rec { + name = "ImageMagick-6.3.8-2"; src = fetchurl { - url = ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.7-9.tar.bz2; - sha256 = "1s38s78xvzm20ib22zypsb9vvzva0kbqjf0pf4c1q89jzg205pk0"; + url = "ftp://ftp.imagemagick.org/pub/ImageMagick/${name}.tar.bz2"; + sha256 = "05bp10dzpw691w8hdw0n2xr65194xgslpqhzf4xbxla7gz8clnmg"; }; configureFlags = " --with-dots --with-gs-font-dir="+ ghostscript + @@ -23,4 +23,4 @@ args: with args; preConfigure = " export DVIDecodeDelegate=${args.tetex}/bin/dvips "; -} else {}))) +} else {})) From a01c3860e56aa55208963b88e427dfba54713f0f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:41:40 +0000 Subject: [PATCH 207/320] Added luit svn path=/nixpkgs/branches/stdenv-updates/; revision=10463 --- pkgs/applications/misc/luit/default.nix | 17 +++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/applications/misc/luit/default.nix diff --git a/pkgs/applications/misc/luit/default.nix b/pkgs/applications/misc/luit/default.nix new file mode 100644 index 00000000000..f27ddc30281 --- /dev/null +++ b/pkgs/applications/misc/luit/default.nix @@ -0,0 +1,17 @@ +args: with args; +stdenv.mkDerivation rec { + name = "luit-20060820"; + src = fetchurl { + url = "${meta.homepage}/${name}.tgz"; + sha256 = "0cxf4agl7ky3ip01qi1vzmis8y1ddngbi2fi0q6bzv1jw458rlpi"; + }; + + buildInputs = [libXt zlib pkgconfig libXfont libX11 libfontenc]; + + configureFlags = "--with-locale-alias=${libX11}/share/X11/locale/locale.alias"; + meta = { + description = "Luit is a filter that can be run between an arbitrary + application and a UTF-8 terminal emulator."; + homepage = http://invisible-island.net/luit; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9bcb581aede..d00ae4542eb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4291,6 +4291,11 @@ rec { inherit fetchurl stdenv; }; + luit = import ../applications/misc/luit { + inherit fetchurl stdenv zlib pkgconfig; + inherit (xlibs) libXt libX11 libXfont libfontenc; + }; + lynx = import ../applications/networking/browsers/lynx { inherit fetchurl stdenv ncurses openssl; }; From ab9a4ef69533328a210fa0e427ca1be17b4066f3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:41:51 +0000 Subject: [PATCH 208/320] xterm: trying to let it work in ru_RU.UTF-8 locale... svn path=/nixpkgs/branches/stdenv-updates/; revision=10464 --- pkgs/applications/misc/xterm/default.nix | 9 ++++++--- pkgs/top-level/all-packages.nix | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/misc/xterm/default.nix b/pkgs/applications/misc/xterm/default.nix index aba6a6a07a3..02ee7acf946 100644 --- a/pkgs/applications/misc/xterm/default.nix +++ b/pkgs/applications/misc/xterm/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, libXaw, xproto, libXt, libX11, libSM, libICE, ncurses}: +args: with args; stdenv.mkDerivation rec { name = "xterm-231"; @@ -6,8 +6,11 @@ stdenv.mkDerivation rec { url = "ftp://invisible-island.net/xterm/${name}.tgz"; sha256 = "0qlz5nkdqkahdg9kbd1ni96n69srj1pd9yggwrw3z0kghaajb2sr"; }; - buildInputs = [libXaw xproto libXt libX11 libSM libICE ncurses]; - configureFlags = ["--enable-wide-chars"]; + buildInputs = [libXaw xproto libXt libXext libX11 libSM libICE ncurses + freetype pkgconfig libXft luit]; + configureFlags = "--enable-wide-chars --enable-256-color + --enable-load-vt-fonts --enable-i18n --enable-doublechars --enable-luit + --enable-mini-luit"; meta = { homepage = http://invisible-island.net/xterm; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d00ae4542eb..615b76f40ea 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4774,8 +4774,8 @@ rec { } null; xterm = import ../applications/misc/xterm { - inherit fetchurl stdenv ncurses; - inherit (xlibs) libXaw xproto libXt libX11 libSM libICE; + inherit fetchurl stdenv ncurses freetype pkgconfig luit; + inherit (xlibs) libXaw xproto libXt libX11 libSM libICE libXext libXft; }; xlaunch = import ../tools/X11/xlaunch { From 1a12f687e2f23f555ed2ea05208fe619a93495be Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:42:13 +0000 Subject: [PATCH 209/320] dbus-glib: propagating glib svn path=/nixpkgs/branches/stdenv-updates/; revision=10465 --- pkgs/development/libraries/dbus-glib/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/dbus-glib/default.nix b/pkgs/development/libraries/dbus-glib/default.nix index 2476ba4fabd..9a9851521b4 100644 --- a/pkgs/development/libraries/dbus-glib/default.nix +++ b/pkgs/development/libraries/dbus-glib/default.nix @@ -6,9 +6,10 @@ stdenv.mkDerivation rec { url = "${meta.homepage}/releases/dbus-glib/${name}.tar.gz"; sha256 = "1qmbnd9xgg7vahlfywd8sfd9yqhx8jdyczz3cshfsd4qc76xhw78"; }; - inherit dbus glib; - buildInputs = [pkgconfig gettext glib expat]; - propagatedBuildInputs = [dbus.libs]; + buildInputs = [pkgconfig expat gettext]; + propagatedBuildInputs = [dbus.libs glib]; + configureFlags = "--enable-shared --disable-static"; + passthru = { inherit dbus glib; }; meta = { homepage = http://dbus.freedesktop.org; From e0d1a176805470e2ae717eb08b7fc3fdabbd22f6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:42:36 +0000 Subject: [PATCH 210/320] dbus: fixed a typo svn path=/nixpkgs/branches/stdenv-updates/; revision=10466 --- pkgs/development/libraries/dbus/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/dbus/default.nix b/pkgs/development/libraries/dbus/default.nix index 04f08be8853..98fb6c682b1 100644 --- a/pkgs/development/libraries/dbus/default.nix +++ b/pkgs/development/libraries/dbus/default.nix @@ -21,7 +21,7 @@ in rec { name = "dbus-tools-" + version; inherit src configureFlags; buildInputs = [pkgconfig expat libs] - ++ if useX11 then [libX11 libICE libSM] else []; + ++ (if useX11 then [libX11 libICE libSM] else []); postConfigure = "cd tools"; NIX_LDFLAGS = "-ldbus-1"; From c0496c041343219ad4e4333c2687a4122ee1dd94 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sat, 2 Feb 2008 20:42:55 +0000 Subject: [PATCH 211/320] X.Org: added dbus, hal; removed unused gettext svn path=/nixpkgs/branches/stdenv-updates/; revision=10467 --- pkgs/servers/x11/xorg/default.nix | 18 ++++++++---------- .../x11/xorg/generate-expr-from-tarballs.pl | 13 ++++++------- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index 0fc27acbc1f..9ce0ce47bc8 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -1,8 +1,5 @@ # This is a generated file. Do not edit! -{ stdenv, fetchurl, pkgconfig, freetype, fontconfig -, libxslt, expat, libdrm, libpng, zlib, perl, mesa, mesaHeaders -, xkeyboard_config, gettext -}: +args: with args; rec { @@ -883,8 +880,9 @@ rec { url = http://mirror.switch.ch/ftp/mirror/X11/pub/X11R7.3/src/everything/libXpm-3.5.7.tar.bz2; sha256 = "1aibr6y6hnlgc7m1a1y5s1qx7863praq4pdp0xrpkc75gkk1lw34"; }; - buildInputs = [pkgconfig gettext libX11 libXext xextproto xproto libXt ]; - }) // {inherit gettext libX11 libXext xextproto xproto libXt ;}; + buildInputs = [pkgconfig libX11 libXext xextproto xproto libXt ]; + patchPhase = "sed -i '/USE_GETTEXT_TRUE/d' sxpm/Makefile.in cxpm/Makefile.in"; + }) // {inherit libX11 libXext xextproto xproto libXt ;}; libXprintAppUtil = (stdenv.mkDerivation { name = "libXprintAppUtil-1.0.1"; @@ -1283,7 +1281,7 @@ rec { url = http://mirror.switch.ch/ftp/mirror/X11/pub/X11R7.3/src/everything/setxkbmap-1.0.4.tar.bz2; sha256 = "1b1brw1v98q2rqhr5x7f8mr3clxq62nw5175gpamg5s172916nwv"; }; - buildInputs = [pkgconfig libX11 libxkbfile ]; postInstall = "ensureDir $out/share; ln -sfn ${xkeyboard_config}/etc/X11 $out/share/X11"; + buildInputs = [pkgconfig libX11 libxkbfile ]; postInstall = "ensureDir $out/share; ln -sfn ${xkeyboard_config}/etc/X11 $out/share/X11"; }) // {inherit libX11 libxkbfile ;}; showfont = (stdenv.mkDerivation { @@ -1744,7 +1742,7 @@ rec { sha256 = "15avwy8isbqagzcdj20ngqajl22k40pssfx7vjirhrqyyq19fiwb"; }; preBuild = " - sed -e '/motion_history_proc/d; /history_size/d;' -i src/*.c + sed -e '/motion_history_proc/d; /history_size/d;' -i src/*.c "; buildInputs = [pkgconfig inputproto kbproto randrproto xorgserver xproto ]; }) // {inherit inputproto kbproto randrproto xorgserver xproto ;}; @@ -2716,8 +2714,8 @@ rec { url = http://mirror.switch.ch/ftp/mirror/X11/pub/X11R7.3/src/everything/xorg-server-1.4.tar.bz2; sha256 = "1hpbq0bl1jkq84gvksp0xzbbrwwgl0wz2wakf11p2hld6bgl5cai"; }; - buildInputs = [pkgconfig pixman renderproto bigreqsproto compositeproto damageproto libdmx dmxproto evieext fixesproto fontcacheproto libfontenc fontsproto freetype glproto inputproto kbproto libdrm mkfontdir mkfontscale perl printproto randrproto recordproto resourceproto scrnsaverproto trapproto videoproto libX11 libXau libXaw xcmiscproto libXdmcp libXext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86vidmodeproto libXfixes libXfont libXi xineramaproto libxkbfile libxkbui libXmu libXpm xproto libXrender libXres libXt xtrans libXtst libXxf86misc libXxf86vm zlib ]; mesaSrc = mesa.src; x11BuildHook = ./xorgserver.sh; patches = [./xorgserver-dri-path.patch ./xorgserver-xkbcomp-path.patch ./xorgserver-xkb-leds.patch ]; - }) // {inherit pixman renderproto bigreqsproto compositeproto damageproto libdmx dmxproto evieext fixesproto fontcacheproto libfontenc fontsproto freetype glproto inputproto kbproto libdrm mkfontdir mkfontscale perl printproto randrproto recordproto resourceproto scrnsaverproto trapproto videoproto libX11 libXau libXaw xcmiscproto libXdmcp libXext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86vidmodeproto libXfixes libXfont libXi xineramaproto libxkbfile libxkbui libXmu libXpm xproto libXrender libXres libXt xtrans libXtst libXxf86misc libXxf86vm zlib ;}; + buildInputs = [pkgconfig pixman renderproto bigreqsproto compositeproto damageproto dbus.libs libdmx dmxproto evieext fixesproto fontcacheproto libfontenc fontsproto freetype glproto hal inputproto kbproto libdrm mkfontdir mkfontscale perl printproto randrproto recordproto resourceproto scrnsaverproto trapproto videoproto libX11 libXau libXaw xcmiscproto libXdmcp libXext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86vidmodeproto libXfixes libXfont libXi xineramaproto libxkbfile libxkbui libXmu libXpm xproto libXrender libXres libXt xtrans libXtst libXxf86misc libXxf86vm zlib ]; mesaSrc = mesa.src; x11BuildHook = ./xorgserver.sh; patches = [./xorgserver-dri-path.patch ./xorgserver-xkbcomp-path.patch ./xorgserver-xkb-leds.patch ]; + }) // {inherit pixman renderproto bigreqsproto compositeproto damageproto libdmx dmxproto evieext fixesproto fontcacheproto libfontenc fontsproto freetype glproto hal inputproto kbproto libdrm mkfontdir mkfontscale perl printproto randrproto recordproto resourceproto scrnsaverproto trapproto videoproto libX11 libXau libXaw xcmiscproto libXdmcp libXext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86vidmodeproto libXfixes libXfont libXi xineramaproto libxkbfile libxkbui libXmu libXpm xproto libXrender libXres libXt xtrans libXtst libXxf86misc libXxf86vm zlib ;}; xorgsgmldoctools = (stdenv.mkDerivation { name = "xorg-sgml-doctools-1.2"; diff --git a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl index d68944bf71a..7fb12233044 100755 --- a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl +++ b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl @@ -35,7 +35,8 @@ $pcMap{"mkfontscale"} = "mkfontscale"; $pcMap{"mkfontdir"} = "mkfontdir"; $pcMap{"bdftopcf"} = "bdftopcf"; $pcMap{"libxslt"} = "libxslt"; -$pcMap{"gettext"} = "gettext"; +$pcMap{"dbus-1"} = "dbus"; +$pcMap{"hal"} = "hal"; $pcMap{"\$PIXMAN"} = "pixman"; $pcMap{"\$RENDERPROTO"} = "renderproto"; @@ -56,6 +57,8 @@ $extraAttrs{"xf86inputevdev"} = " sed -e '/motion_history_proc/d; /history_size/d;' -i src/*.c \";"; +$extraAttrs{"libXpm"} = " + patchPhase = \"sed -i '/USE_GETTEXT_TRUE/d' sxpm/Makefile.in cxpm/Makefile.in\";"; my $downloadCache = "./download-cache"; $ENV{'NIX_DOWNLOAD_CACHE'} = $downloadCache; @@ -112,7 +115,7 @@ while (<>) { my $file; { local $/; - open FOO, "cd '$tmpDir'/* && cat configure.ac |"; + open FOO, "cd '$tmpDir'/* && grep -v '^ *#' configure.ac |"; $file = ; close FOO; } @@ -184,7 +187,6 @@ while (<>) { push @requires, "zlib" if $pkg =~ /xorgserver/; push @requires, "xf86bigfontproto" if $pkg =~ /xorgserver/; push @requires, "libxslt" if $pkg =~ /libxcb/; - push @requires, "gettext" if $pkg =~ /libXpm/; print "REQUIRES @requires => $pkg\n"; $pkgRequires{$pkg} = \@requires; @@ -200,10 +202,7 @@ open OUT, ">default2.nix"; print OUT ""; print OUT < Date: Sat, 2 Feb 2008 20:43:11 +0000 Subject: [PATCH 212/320] gnome-vfs: added hal, ssl and samba svn path=/nixpkgs/branches/stdenv-updates/; revision=10468 --- pkgs/desktops/gnome/default.nix | 10 ++-------- pkgs/desktops/gnome/gnome-vfs.nix | 7 ++----- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix index a3f8d4a9c05..014a99b674a 100644 --- a/pkgs/desktops/gnome/default.nix +++ b/pkgs/desktops/gnome/default.nix @@ -1,12 +1,6 @@ # todo audiofile is also part of the gnome platform. Move it to this collection? -{ stdenv, fetchurl, pkgconfig, audiofile -, flex, bison, popt, perl, zlib, libxml2, libxslt -, perlXMLParser, docbook_xml_dtd_42, docbook_xml_dtd_412 -, gettext, x11, libtiff, libjpeg -, libpng, gtkLibs, xlibs, bzip2, libcm, python, dbus_glib, ncurses -, which, libxml2Python, iconnamingutils -}: +args: with args; assert dbus_glib.glib == gtkLibs.glib; @@ -57,7 +51,7 @@ rec { gnomevfs = import ./gnome-vfs.nix { inherit fetchurl stdenv gnome pkgconfig perl libxml2 popt - perlXMLParser gettext bzip2 dbus_glib; + perlXMLParser gettext bzip2 dbus_glib openssl hal samba fam; input = platform.gnomevfs; }; diff --git a/pkgs/desktops/gnome/gnome-vfs.nix b/pkgs/desktops/gnome/gnome-vfs.nix index b374ad4d94d..24b99fb3b83 100644 --- a/pkgs/desktops/gnome/gnome-vfs.nix +++ b/pkgs/desktops/gnome/gnome-vfs.nix @@ -1,14 +1,11 @@ -{ input, stdenv, fetchurl, gnome, pkgconfig, perl, libxml2 -, popt, perlXMLParser, gettext, bzip2, dbus_glib -}: +args: with args; stdenv.mkDerivation { inherit (input) name src; buildInputs = [ pkgconfig perl gnome.glib libxml2 gnome.GConf gnome.libbonobo gnome.gnomemimedata popt perlXMLParser gettext bzip2 - dbus_glib + dbus_glib hal openssl samba fam ]; patches = [./no-kerberos.patch]; - configureFlags = "--disable-hal"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 110c8cf713d..ddde745fe45 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4930,7 +4930,7 @@ rec { perl perlXMLParser docbook_xml_dtd_42 docbook_xml_dtd_412 gettext x11 libtiff libjpeg libpng gtkLibs xlibs bzip2 libcm python dbus_glib ncurses which libxml2Python - iconnamingutils; + iconnamingutils openssl hal samba fam; }); kdelibs = import ../desktops/kde/kdelibs { From cb4d31fcf9f5707c7a93734234df681e115f043f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:16:20 +0000 Subject: [PATCH 213/320] Removed old (2.2 and 2.4) gtk-libs svn path=/nixpkgs/branches/stdenv-updates/; revision=10471 --- .../libraries/gtk-libs-2.2/atk/default.nix | 13 ----------- .../libraries/gtk-libs-2.2/default.nix | 23 ------------------- .../libraries/gtk-libs-2.2/glib/default.nix | 12 ---------- .../libraries/gtk-libs-2.2/gtk+/default.nix | 21 ----------------- .../libraries/gtk-libs-2.2/pango/default.nix | 14 ----------- .../libraries/gtk-libs-2.4/atk/default.nix | 13 ----------- .../libraries/gtk-libs-2.4/default.nix | 23 ------------------- .../libraries/gtk-libs-2.4/glib/default.nix | 12 ---------- .../libraries/gtk-libs-2.4/gtk+/default.nix | 21 ----------------- .../libraries/gtk-libs-2.4/pango/default.nix | 14 ----------- pkgs/top-level/all-packages.nix | 10 -------- 11 files changed, 176 deletions(-) delete mode 100644 pkgs/development/libraries/gtk-libs-2.2/atk/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.2/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.2/glib/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.2/gtk+/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.2/pango/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.4/atk/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.4/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.4/glib/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.4/gtk+/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs-2.4/pango/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.2/atk/default.nix b/pkgs/development/libraries/gtk-libs-2.2/atk/default.nix deleted file mode 100644 index 1089f571099..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.2/atk/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl, pkgconfig, glib, perl}: - -assert pkgconfig != null && glib != null && perl != null; - -stdenv.mkDerivation { - name = "atk-1.2.4"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.2/atk-1.2.4.tar.bz2; - md5 = "2d6d50df31abe0e8892b5d3e7676a02d"; - }; - buildInputs = [pkgconfig perl]; - propagatedBuildInputs = [glib]; -} diff --git a/pkgs/development/libraries/gtk-libs-2.2/default.nix b/pkgs/development/libraries/gtk-libs-2.2/default.nix deleted file mode 100644 index dc01a534d81..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.2/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gettext, perl, x11 -, libtiff, libjpeg, libpng}: - -rec { - - glib = (import ./glib) { - inherit fetchurl stdenv pkgconfig gettext perl; - }; - - atk = (import ./atk) { - inherit fetchurl stdenv pkgconfig glib perl; - }; - - pango = (import ./pango) { - inherit fetchurl stdenv pkgconfig glib x11; - }; - - gtk = (import ./gtk+) { - inherit fetchurl stdenv pkgconfig glib atk pango perl - libtiff libjpeg libpng x11; - }; - -} diff --git a/pkgs/development/libraries/gtk-libs-2.2/glib/default.nix b/pkgs/development/libraries/gtk-libs-2.2/glib/default.nix deleted file mode 100644 index 22d01d0d86f..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.2/glib/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, pkgconfig, gettext, perl}: - -assert pkgconfig != null && gettext != null && perl != null; - -stdenv.mkDerivation { - name = "glib-2.2.3"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.2/glib-2.2.3.tar.bz2; - md5 = "aa214a10d873b68ddd67cd9de2ccae55"; - }; - buildInputs = [pkgconfig gettext perl]; -} diff --git a/pkgs/development/libraries/gtk-libs-2.2/gtk+/default.nix b/pkgs/development/libraries/gtk-libs-2.2/gtk+/default.nix deleted file mode 100644 index e1eef805803..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.2/gtk+/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, x11, glib, atk -, pango, perl, libtiff, libjpeg, libpng}: - -assert pkgconfig != null && x11 != null && glib != null && atk != null - && pango != null && perl != null && perl != null && libtiff != null - && libjpeg != null && libpng != null; -assert x11.buildClientLibs; -#assert glib == atk.glib; -#assert glib == pango.glib; -#assert x11 == pango.x11; - -stdenv.mkDerivation { - name = "gtk+-2.2.4"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.2/gtk+-2.2.4.tar.bz2; - md5 = "605332199533e73bc6eec481fb4f1671"; - }; - buildInputs = [pkgconfig perl libtiff libjpeg libpng]; - propagatedBuildInputs = [x11 glib atk pango]; - inherit libtiff libjpeg libpng; -} diff --git a/pkgs/development/libraries/gtk-libs-2.2/pango/default.nix b/pkgs/development/libraries/gtk-libs-2.2/pango/default.nix deleted file mode 100644 index 5d5e5184dda..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.2/pango/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{stdenv, fetchurl, pkgconfig, x11, glib}: - -assert pkgconfig != null && x11 != null && glib != null; -assert x11.buildClientLibs; - -stdenv.mkDerivation { - name = "pango-1.2.5"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.2/pango-1.2.5.tar.bz2; - md5 = "df00fe3e71cd297010f24f439b6c8ee6"; - }; - buildInputs = [pkgconfig]; - propagatedBuildInputs = [x11 glib]; -} diff --git a/pkgs/development/libraries/gtk-libs-2.4/atk/default.nix b/pkgs/development/libraries/gtk-libs-2.4/atk/default.nix deleted file mode 100644 index 095ff32b2aa..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.4/atk/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl, pkgconfig, glib, perl}: - -assert pkgconfig != null && glib != null && perl != null; - -stdenv.mkDerivation { - name = "atk-1.6.1"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.4/atk-1.6.1.tar.bz2; - md5 = "f77be7e128c957bd3056c2e270b5f283"; - }; - buildInputs = [pkgconfig perl]; - propagatedBuildInputs = [glib]; -} diff --git a/pkgs/development/libraries/gtk-libs-2.4/default.nix b/pkgs/development/libraries/gtk-libs-2.4/default.nix deleted file mode 100644 index dc01a534d81..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.4/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gettext, perl, x11 -, libtiff, libjpeg, libpng}: - -rec { - - glib = (import ./glib) { - inherit fetchurl stdenv pkgconfig gettext perl; - }; - - atk = (import ./atk) { - inherit fetchurl stdenv pkgconfig glib perl; - }; - - pango = (import ./pango) { - inherit fetchurl stdenv pkgconfig glib x11; - }; - - gtk = (import ./gtk+) { - inherit fetchurl stdenv pkgconfig glib atk pango perl - libtiff libjpeg libpng x11; - }; - -} diff --git a/pkgs/development/libraries/gtk-libs-2.4/glib/default.nix b/pkgs/development/libraries/gtk-libs-2.4/glib/default.nix deleted file mode 100644 index 58f91b3f83c..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.4/glib/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, pkgconfig, gettext, perl}: - -assert pkgconfig != null && gettext != null && perl != null; - -stdenv.mkDerivation { - name = "glib-2.4.7"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.4/glib-2.4.7.tar.bz2; - md5 = "eff6fec89455addf8b0dee5a19e343be"; - }; - buildInputs = [pkgconfig gettext perl]; -} diff --git a/pkgs/development/libraries/gtk-libs-2.4/gtk+/default.nix b/pkgs/development/libraries/gtk-libs-2.4/gtk+/default.nix deleted file mode 100644 index 56a6e41e731..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.4/gtk+/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, x11, glib, atk -, pango, perl, libtiff, libjpeg, libpng}: - -assert pkgconfig != null && x11 != null && glib != null && atk != null - && pango != null && perl != null && perl != null && libtiff != null - && libjpeg != null && libpng != null; -assert x11.buildClientLibs; -#assert glib == atk.glib; -#assert glib == pango.glib; -#assert x11 == pango.x11; - -stdenv.mkDerivation { - name = "gtk+-2.4.13"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.4/gtk+-2.4.13.tar.bz2; - md5 = "3a438e1010704b11acaf060c9ba0fd7b"; - }; - buildInputs = [pkgconfig perl libtiff libjpeg libpng]; - propagatedBuildInputs = [x11 glib atk pango]; - inherit libtiff libjpeg libpng; -} diff --git a/pkgs/development/libraries/gtk-libs-2.4/pango/default.nix b/pkgs/development/libraries/gtk-libs-2.4/pango/default.nix deleted file mode 100644 index 986891b98b9..00000000000 --- a/pkgs/development/libraries/gtk-libs-2.4/pango/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{stdenv, fetchurl, pkgconfig, x11, glib}: - -assert pkgconfig != null && x11 != null && glib != null; -assert x11.buildClientLibs; - -stdenv.mkDerivation { - name = "pango-1.4.1"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.4/pango-1.4.1.tar.bz2; - md5 = "39868e0da250fd4c00b2970e4eb84389"; - }; - buildInputs = [pkgconfig]; - propagatedBuildInputs = [x11 glib]; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ddde745fe45..c12d83bf49c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2002,16 +2002,6 @@ rec { xineramaSupport = true; }; - gtkLibs22 = import ../development/libraries/gtk-libs-2.2 { - inherit fetchurl stdenv pkgconfig gettext perl x11 - libtiff libjpeg libpng; - }; - - gtkLibs24 = import ../development/libraries/gtk-libs-2.4 { - inherit fetchurl stdenv pkgconfig gettext perl x11 - libtiff libjpeg libpng; - }; - gtkLibs26 = import ../development/libraries/gtk-libs-2.6 { inherit fetchurl stdenv pkgconfig gettext perl x11 libtiff libjpeg libpng; From 702786d80e52333bff5ec962523185275d028fab Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:16:32 +0000 Subject: [PATCH 214/320] Unused dbus_x directory removed svn path=/nixpkgs/branches/stdenv-updates/; revision=10472 --- pkgs/development/libraries/dbus_x/default.nix | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 pkgs/development/libraries/dbus_x/default.nix diff --git a/pkgs/development/libraries/dbus_x/default.nix b/pkgs/development/libraries/dbus_x/default.nix deleted file mode 100644 index dfe3ea0ee7e..00000000000 --- a/pkgs/development/libraries/dbus_x/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -args: with args; - -stdenv.mkDerivation { - name = "dbus-1.0.2"; - src = fetchurl { - url = http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz; - sha256 = "1jn652zb81mczsx4rdcwrrzj3lfhx9d107zjfnasc4l5yljl204a"; - }; - buildInputs = [pkgconfig expat libX11 libICE libSM]; - - configureFlags = "--with-x --disable-static --localstatedir=/var --with-session-socket-dir=/tmp"; - patchPhase = "sed -e /mkinstalldirs.*localstatedir/d -i bus/Makefile.in"; -} From 0032a3245ea2c58fb0c94d87732de752cec10a95 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:17:07 +0000 Subject: [PATCH 215/320] Moved gtk-libs-x.xx to gtk-libs/x.xx svn path=/nixpkgs/branches/stdenv-updates/; revision=10473 --- .../{gtk-libs-1.x => gtk-libs/1.x}/default.nix | 0 .../1.x}/gdk-pixbuf/default.nix | 0 .../{gtk-libs-1.x => gtk-libs/1.x}/glib/default.nix | 0 .../{gtk-libs-1.x => gtk-libs/1.x}/glib/gcc34.patch | 0 .../{gtk-libs-1.x => gtk-libs/1.x}/gtk+/builder.sh | 0 .../{gtk-libs-1.x => gtk-libs/1.x}/gtk+/default.nix | 0 .../{gtk-libs-2.10 => gtk-libs/2.10}/atk/default.nix | 0 .../{gtk-libs-2.10 => gtk-libs/2.10}/default.nix | 0 .../2.10}/glib/default.nix | 0 .../2.10}/glibmm/default.nix | 0 .../2.10}/gtk+/default.nix | 0 .../2.10}/gtkmm/default.nix | 0 .../2.10}/pango/default.nix | 0 .../{gtk-libs-2.6 => gtk-libs/2.6}/atk/default.nix | 0 .../{gtk-libs-2.6 => gtk-libs/2.6}/default.nix | 0 .../{gtk-libs-2.6 => gtk-libs/2.6}/glib/default.nix | 0 .../2.6}/glibmm/default.nix | 0 .../{gtk-libs-2.6 => gtk-libs/2.6}/gtk+/default.nix | 0 .../{gtk-libs-2.6 => gtk-libs/2.6}/gtkmm/default.nix | 0 .../{gtk-libs-2.6 => gtk-libs/2.6}/pango/default.nix | 0 .../{gtk-libs-2.8 => gtk-libs/2.8}/atk/default.nix | 0 .../{gtk-libs-2.8 => gtk-libs/2.8}/default.nix | 0 .../{gtk-libs-2.8 => gtk-libs/2.8}/glib/default.nix | 0 .../2.8}/glibmm/default.nix | 0 .../{gtk-libs-2.8 => gtk-libs/2.8}/gtk+/default.nix | 0 .../{gtk-libs-2.8 => gtk-libs/2.8}/gtkmm/default.nix | 0 .../{gtk-libs-2.8 => gtk-libs/2.8}/pango/default.nix | 0 pkgs/top-level/all-packages.nix | 12 ++++++------ 28 files changed, 6 insertions(+), 6 deletions(-) rename pkgs/development/libraries/{gtk-libs-1.x => gtk-libs/1.x}/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-1.x => gtk-libs/1.x}/gdk-pixbuf/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-1.x => gtk-libs/1.x}/glib/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-1.x => gtk-libs/1.x}/glib/gcc34.patch (100%) rename pkgs/development/libraries/{gtk-libs-1.x => gtk-libs/1.x}/gtk+/builder.sh (100%) rename pkgs/development/libraries/{gtk-libs-1.x => gtk-libs/1.x}/gtk+/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.10 => gtk-libs/2.10}/atk/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.10 => gtk-libs/2.10}/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.10 => gtk-libs/2.10}/glib/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.10 => gtk-libs/2.10}/glibmm/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.10 => gtk-libs/2.10}/gtk+/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.10 => gtk-libs/2.10}/gtkmm/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.10 => gtk-libs/2.10}/pango/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.6 => gtk-libs/2.6}/atk/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.6 => gtk-libs/2.6}/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.6 => gtk-libs/2.6}/glib/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.6 => gtk-libs/2.6}/glibmm/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.6 => gtk-libs/2.6}/gtk+/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.6 => gtk-libs/2.6}/gtkmm/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.6 => gtk-libs/2.6}/pango/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.8 => gtk-libs/2.8}/atk/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.8 => gtk-libs/2.8}/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.8 => gtk-libs/2.8}/glib/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.8 => gtk-libs/2.8}/glibmm/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.8 => gtk-libs/2.8}/gtk+/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.8 => gtk-libs/2.8}/gtkmm/default.nix (100%) rename pkgs/development/libraries/{gtk-libs-2.8 => gtk-libs/2.8}/pango/default.nix (100%) diff --git a/pkgs/development/libraries/gtk-libs-1.x/default.nix b/pkgs/development/libraries/gtk-libs/1.x/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-1.x/default.nix rename to pkgs/development/libraries/gtk-libs/1.x/default.nix diff --git a/pkgs/development/libraries/gtk-libs-1.x/gdk-pixbuf/default.nix b/pkgs/development/libraries/gtk-libs/1.x/gdk-pixbuf/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-1.x/gdk-pixbuf/default.nix rename to pkgs/development/libraries/gtk-libs/1.x/gdk-pixbuf/default.nix diff --git a/pkgs/development/libraries/gtk-libs-1.x/glib/default.nix b/pkgs/development/libraries/gtk-libs/1.x/glib/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-1.x/glib/default.nix rename to pkgs/development/libraries/gtk-libs/1.x/glib/default.nix diff --git a/pkgs/development/libraries/gtk-libs-1.x/glib/gcc34.patch b/pkgs/development/libraries/gtk-libs/1.x/glib/gcc34.patch similarity index 100% rename from pkgs/development/libraries/gtk-libs-1.x/glib/gcc34.patch rename to pkgs/development/libraries/gtk-libs/1.x/glib/gcc34.patch diff --git a/pkgs/development/libraries/gtk-libs-1.x/gtk+/builder.sh b/pkgs/development/libraries/gtk-libs/1.x/gtk+/builder.sh similarity index 100% rename from pkgs/development/libraries/gtk-libs-1.x/gtk+/builder.sh rename to pkgs/development/libraries/gtk-libs/1.x/gtk+/builder.sh diff --git a/pkgs/development/libraries/gtk-libs-1.x/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/1.x/gtk+/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-1.x/gtk+/default.nix rename to pkgs/development/libraries/gtk-libs/1.x/gtk+/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.10/atk/default.nix b/pkgs/development/libraries/gtk-libs/2.10/atk/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.10/atk/default.nix rename to pkgs/development/libraries/gtk-libs/2.10/atk/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.10/default.nix b/pkgs/development/libraries/gtk-libs/2.10/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.10/default.nix rename to pkgs/development/libraries/gtk-libs/2.10/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.10/glib/default.nix b/pkgs/development/libraries/gtk-libs/2.10/glib/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.10/glib/default.nix rename to pkgs/development/libraries/gtk-libs/2.10/glib/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.10/glibmm/default.nix b/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.10/glibmm/default.nix rename to pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.10/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.10/gtk+/default.nix rename to pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.10/gtkmm/default.nix b/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.10/gtkmm/default.nix rename to pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.10/pango/default.nix b/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.10/pango/default.nix rename to pkgs/development/libraries/gtk-libs/2.10/pango/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.6/atk/default.nix b/pkgs/development/libraries/gtk-libs/2.6/atk/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.6/atk/default.nix rename to pkgs/development/libraries/gtk-libs/2.6/atk/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.6/default.nix b/pkgs/development/libraries/gtk-libs/2.6/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.6/default.nix rename to pkgs/development/libraries/gtk-libs/2.6/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.6/glib/default.nix b/pkgs/development/libraries/gtk-libs/2.6/glib/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.6/glib/default.nix rename to pkgs/development/libraries/gtk-libs/2.6/glib/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.6/glibmm/default.nix b/pkgs/development/libraries/gtk-libs/2.6/glibmm/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.6/glibmm/default.nix rename to pkgs/development/libraries/gtk-libs/2.6/glibmm/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.6/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/2.6/gtk+/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.6/gtk+/default.nix rename to pkgs/development/libraries/gtk-libs/2.6/gtk+/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.6/gtkmm/default.nix b/pkgs/development/libraries/gtk-libs/2.6/gtkmm/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.6/gtkmm/default.nix rename to pkgs/development/libraries/gtk-libs/2.6/gtkmm/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.6/pango/default.nix b/pkgs/development/libraries/gtk-libs/2.6/pango/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.6/pango/default.nix rename to pkgs/development/libraries/gtk-libs/2.6/pango/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.8/atk/default.nix b/pkgs/development/libraries/gtk-libs/2.8/atk/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.8/atk/default.nix rename to pkgs/development/libraries/gtk-libs/2.8/atk/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.8/default.nix b/pkgs/development/libraries/gtk-libs/2.8/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.8/default.nix rename to pkgs/development/libraries/gtk-libs/2.8/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.8/glib/default.nix b/pkgs/development/libraries/gtk-libs/2.8/glib/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.8/glib/default.nix rename to pkgs/development/libraries/gtk-libs/2.8/glib/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.8/glibmm/default.nix b/pkgs/development/libraries/gtk-libs/2.8/glibmm/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.8/glibmm/default.nix rename to pkgs/development/libraries/gtk-libs/2.8/glibmm/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.8/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/2.8/gtk+/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.8/gtk+/default.nix rename to pkgs/development/libraries/gtk-libs/2.8/gtk+/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.8/gtkmm/default.nix b/pkgs/development/libraries/gtk-libs/2.8/gtkmm/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.8/gtkmm/default.nix rename to pkgs/development/libraries/gtk-libs/2.8/gtkmm/default.nix diff --git a/pkgs/development/libraries/gtk-libs-2.8/pango/default.nix b/pkgs/development/libraries/gtk-libs/2.8/pango/default.nix similarity index 100% rename from pkgs/development/libraries/gtk-libs-2.8/pango/default.nix rename to pkgs/development/libraries/gtk-libs/2.8/pango/default.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c12d83bf49c..f2ead2f6a33 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1951,7 +1951,7 @@ rec { #installLocales = false; }); - glibmm = import ../development/libraries/gtk-libs-2.6/glibmm { + glibmm = import ../development/libraries/gtk-libs/2.6/glibmm { inherit fetchurl stdenv pkgconfig libsigcxx; inherit (gtkLibs26) glib; }; @@ -1991,30 +1991,30 @@ rec { gtkLibs = recurseIntoAttrs gtkLibs210; - gtkLibs1x = import ../development/libraries/gtk-libs-1.x { + gtkLibs1x = import ../development/libraries/gtk-libs/1.x { inherit fetchurl stdenv x11 libtiff libjpeg libpng; }; - gtkLibs210 = import ../development/libraries/gtk-libs-2.10 { + gtkLibs210 = import ../development/libraries/gtk-libs/2.10 { inherit fetchurl stdenv pkgconfig gettext perl x11 libtiff libjpeg libpng cairo; inherit (xlibs) libXinerama libXrandr; xineramaSupport = true; }; - gtkLibs26 = import ../development/libraries/gtk-libs-2.6 { + gtkLibs26 = import ../development/libraries/gtk-libs/2.6 { inherit fetchurl stdenv pkgconfig gettext perl x11 libtiff libjpeg libpng; }; - gtkLibs28 = import ../development/libraries/gtk-libs-2.8 { + gtkLibs28 = import ../development/libraries/gtk-libs/2.8 { inherit fetchurl stdenv pkgconfig gettext perl x11 libtiff libjpeg libpng cairo; inherit (xlibs) libXinerama; xineramaSupport = true; }; - gtkmm = import ../development/libraries/gtk-libs-2.6/gtkmm { + gtkmm = import ../development/libraries/gtk-libs/2.6/gtkmm { inherit fetchurl stdenv pkgconfig libsigcxx; inherit (gtkLibs26) gtk atk; inherit glibmm; From 598199c93d20c2ec16175c43d98bdeb1c064b02d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:17:25 +0000 Subject: [PATCH 216/320] Removed unused gtkLibs28 svn path=/nixpkgs/branches/stdenv-updates/; revision=10474 --- .../libraries/gtk-libs/2.8/atk/default.nix | 13 ---------- .../libraries/gtk-libs/2.8/default.nix | 26 ------------------- .../libraries/gtk-libs/2.8/glib/default.nix | 13 ---------- .../libraries/gtk-libs/2.8/glibmm/default.nix | 12 --------- .../libraries/gtk-libs/2.8/gtk+/default.nix | 22 ---------------- .../libraries/gtk-libs/2.8/gtkmm/default.nix | 12 --------- .../libraries/gtk-libs/2.8/pango/default.nix | 13 ---------- pkgs/top-level/all-packages.nix | 7 ----- 8 files changed, 118 deletions(-) delete mode 100644 pkgs/development/libraries/gtk-libs/2.8/atk/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.8/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.8/glib/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.8/glibmm/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.8/gtk+/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.8/gtkmm/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.8/pango/default.nix diff --git a/pkgs/development/libraries/gtk-libs/2.8/atk/default.nix b/pkgs/development/libraries/gtk-libs/2.8/atk/default.nix deleted file mode 100644 index 07537567520..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.8/atk/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl, pkgconfig, glib, perl}: - -assert pkgconfig != null && glib != null && perl != null; - -stdenv.mkDerivation { - name = "atk-1.10.3"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.8/atk-1.10.3.tar.bz2; - md5 = "c84a01fea567b365c0d44b227fead948"; - }; - buildInputs = [pkgconfig perl]; - propagatedBuildInputs = [glib]; -} diff --git a/pkgs/development/libraries/gtk-libs/2.8/default.nix b/pkgs/development/libraries/gtk-libs/2.8/default.nix deleted file mode 100644 index ee5abd562b1..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.8/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ xineramaSupport ? false -, stdenv, fetchurl, pkgconfig, gettext, perl, x11 -, libtiff, libjpeg, libpng, cairo, libXinerama ? null -}: - -rec { - - glib = (import ./glib) { - inherit fetchurl stdenv pkgconfig gettext perl; - }; - - atk = (import ./atk) { - inherit fetchurl stdenv pkgconfig glib perl; - }; - - pango = (import ./pango) { - inherit fetchurl stdenv pkgconfig glib x11 cairo; - }; - - gtk = (import ./gtk+) { - inherit fetchurl stdenv pkgconfig glib atk pango perl - libtiff libjpeg libpng x11 cairo libXinerama - xineramaSupport; - }; - -} diff --git a/pkgs/development/libraries/gtk-libs/2.8/glib/default.nix b/pkgs/development/libraries/gtk-libs/2.8/glib/default.nix deleted file mode 100644 index f73a1f388f4..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.8/glib/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl, pkgconfig, gettext, perl}: - -assert pkgconfig != null && gettext != null && perl != null; - -stdenv.mkDerivation { - name = "glib-2.10.3"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/glib/2.10/glib-2.10.3.tar.bz2; - md5 = "87206e721c12d185d17dd9ecd7e30369"; - }; - buildInputs = [pkgconfig perl]; - propagatedBuildInputs = [gettext]; -} diff --git a/pkgs/development/libraries/gtk-libs/2.8/glibmm/default.nix b/pkgs/development/libraries/gtk-libs/2.8/glibmm/default.nix deleted file mode 100644 index 957c596fc7b..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.8/glibmm/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, pkgconfig, glib, libsigcxx}: - -stdenv.mkDerivation { - name = "glibmm-2.6.4"; - src = fetchurl { - url = http://ftp.gnome.org/pub/GNOME/sources/glibmm/2.6/glibmm-2.6.1.tar.bz2; - md5 = "e37da352bf581503c5866f0231fd4a74"; - }; - - buildInputs = [pkgconfig glib libsigcxx]; -} - diff --git a/pkgs/development/libraries/gtk-libs/2.8/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/2.8/gtk+/default.nix deleted file mode 100644 index c5a012d9baa..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.8/gtk+/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ xineramaSupport ? false -, stdenv, fetchurl, pkgconfig, x11, glib, atk -, pango, perl, libtiff, libjpeg, libpng, cairo, libXinerama ? null -}: - -assert x11.buildClientLibs; -assert xineramaSupport -> libXinerama != null; - - -stdenv.mkDerivation { - name = "gtk+-2.8.20"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.8/gtk+-2.8.20.tar.bz2; - md5 = "74e7ca98194f1fadfe906e66d763d05d"; - }; - buildInputs = [ - pkgconfig perl libtiff libjpeg libpng cairo - (if xineramaSupport then libXinerama else null) - ]; - propagatedBuildInputs = [x11 glib atk pango]; - inherit libtiff libjpeg libpng; -} diff --git a/pkgs/development/libraries/gtk-libs/2.8/gtkmm/default.nix b/pkgs/development/libraries/gtk-libs/2.8/gtkmm/default.nix deleted file mode 100644 index ebc1e881c47..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.8/gtkmm/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gtk, atk, glibmm, libsigcxx}: - -stdenv.mkDerivation { - name = "gtkmm-2.6.4"; - src = fetchurl { - url = http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.6/gtkmm-2.6.4.tar.bz2; - md5 = "f71d1c4a89c4f9e054400f12a82dec5f"; - }; - - buildInputs = [pkgconfig gtk atk glibmm libsigcxx]; -} - diff --git a/pkgs/development/libraries/gtk-libs/2.8/pango/default.nix b/pkgs/development/libraries/gtk-libs/2.8/pango/default.nix deleted file mode 100644 index 9e3296e00a1..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.8/pango/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl, pkgconfig, x11, glib, cairo}: - -assert x11.buildClientLibs; - -stdenv.mkDerivation { - name = "pango-1.12.4"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/pango/1.12/pango-1.12.4.tar.bz2; - md5 = "8f6749fe961e41dbeed72d1efcd55224"; - }; - buildInputs = [pkgconfig]; - propagatedBuildInputs = [x11 glib cairo]; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f2ead2f6a33..0c5bf384132 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2007,13 +2007,6 @@ rec { libtiff libjpeg libpng; }; - gtkLibs28 = import ../development/libraries/gtk-libs/2.8 { - inherit fetchurl stdenv pkgconfig gettext perl x11 - libtiff libjpeg libpng cairo; - inherit (xlibs) libXinerama; - xineramaSupport = true; - }; - gtkmm = import ../development/libraries/gtk-libs/2.6/gtkmm { inherit fetchurl stdenv pkgconfig libsigcxx; inherit (gtkLibs26) gtk atk; From 09e96afbdac5971983069b6b47b4cf390406f97f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:17:41 +0000 Subject: [PATCH 217/320] gtk-libs-2.10: other syntax svn path=/nixpkgs/branches/stdenv-updates/; revision=10475 --- .../libraries/gtk-libs/2.10/atk/default.nix | 4 +--- .../libraries/gtk-libs/2.10/default.nix | 24 ++++--------------- .../libraries/gtk-libs/2.10/glib/default.nix | 4 +--- .../gtk-libs/2.10/glibmm/default.nix | 2 +- .../libraries/gtk-libs/2.10/gtk+/default.nix | 9 +------ .../libraries/gtk-libs/2.10/gtkmm/default.nix | 2 +- .../libraries/gtk-libs/2.10/pango/default.nix | 4 +--- 7 files changed, 11 insertions(+), 38 deletions(-) diff --git a/pkgs/development/libraries/gtk-libs/2.10/atk/default.nix b/pkgs/development/libraries/gtk-libs/2.10/atk/default.nix index 34d23bc6daa..1dae480423f 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/atk/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/atk/default.nix @@ -1,6 +1,4 @@ -{stdenv, fetchurl, pkgconfig, glib, perl}: - -assert pkgconfig != null && glib != null && perl != null; +args: with args; stdenv.mkDerivation { name = "atk-1.12.4"; diff --git a/pkgs/development/libraries/gtk-libs/2.10/default.nix b/pkgs/development/libraries/gtk-libs/2.10/default.nix index ed5ae35f05d..f9179226c62 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/default.nix @@ -1,26 +1,12 @@ -{ xineramaSupport ? false -, stdenv, fetchurl, pkgconfig, gettext, perl, x11 -, libtiff, libjpeg, libpng, cairo, libXinerama ? null, libXrandr -}: +args: with args; rec { - glib = (import ./glib) { - inherit fetchurl stdenv pkgconfig gettext perl; - }; + glib = (import ./glib) args; - atk = (import ./atk) { - inherit fetchurl stdenv pkgconfig glib perl; - }; + atk = (import ./atk) (args // { inherit glib; }); - pango = (import ./pango) { - inherit fetchurl stdenv pkgconfig glib x11 cairo libpng; - }; - - gtk = (import ./gtk+) { - inherit fetchurl stdenv pkgconfig glib atk pango perl - libtiff libjpeg libpng x11 cairo libXinerama - xineramaSupport libXrandr; - }; + pango = (import ./pango) (args // { inherit glib; }); + gtk = (import ./gtk+) (args // { inherit glib atk pango; } ); } diff --git a/pkgs/development/libraries/gtk-libs/2.10/glib/default.nix b/pkgs/development/libraries/gtk-libs/2.10/glib/default.nix index b29f6b62f93..9af2ab959b1 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/glib/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/glib/default.nix @@ -1,6 +1,4 @@ -{stdenv, fetchurl, pkgconfig, gettext, perl}: - -assert pkgconfig != null && gettext != null && perl != null; +args: with args; stdenv.mkDerivation { name = "glib-2.12.13"; # <- sic! gtk 2.10 needs glib 2.12 diff --git a/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix b/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix index e1d275b9974..be5f0fdc91f 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, pkgconfig, glib, libsigcxx}: +args: with args; stdenv.mkDerivation { name = "glibmm-2.12.10"; diff --git a/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix index 474c6499380..31a2078d670 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix @@ -1,11 +1,4 @@ -{ xineramaSupport ? false -, stdenv, fetchurl, pkgconfig, x11, glib, atk -, pango, perl, libtiff, libjpeg, libpng, cairo, libXinerama ? null, libXrandr -}: - -assert x11.buildClientLibs; -assert xineramaSupport -> libXinerama != null; - +args: with args; stdenv.mkDerivation { name = "gtk+-2.10.14"; diff --git a/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix b/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix index 4f476f73d50..4fbabb20e19 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, gtk, atk, glibmm, libsigcxx}: +args: with args; stdenv.mkDerivation { name = "gtkmm-2.10.11"; diff --git a/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix b/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix index 25d4aa17e91..87e8b179ba3 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix @@ -1,6 +1,4 @@ -{stdenv, fetchurl, pkgconfig, x11, glib, cairo, libpng}: - -assert x11.buildClientLibs; +args: with args; stdenv.mkDerivation { name = "pango-1.14.10"; From e7ada570fcebd57d6a02d2e85a836a4b27c9a912 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:17:59 +0000 Subject: [PATCH 218/320] inkscape: nix-expr review, version corrected svn path=/nixpkgs/branches/stdenv-updates/; revision=10476 --- .../graphics/inkscape/default.nix | 33 ++++--------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/pkgs/applications/graphics/inkscape/default.nix b/pkgs/applications/graphics/inkscape/default.nix index dfed92f691e..b8ff2486330 100644 --- a/pkgs/applications/graphics/inkscape/default.nix +++ b/pkgs/applications/graphics/inkscape/default.nix @@ -1,37 +1,16 @@ -{ stdenv, fetchurl, pkgconfig, - perl, perlXMLParser, - gtk, libXft, fontconfig, - libpng, lcms, - zlib, popt, - boehmgc, - libxml2, libxslt, - glib, - gtkmm, glibmm, libsigcxx, - boost, - gettext -}: +args: with args; -stdenv.mkDerivation { - name = "inkscape-0.45"; +stdenv.mkDerivation rec { + name = "inkscape-0.45.1"; src = fetchurl { - url = mirror://sourceforge/inkscape/inkscape-0.45.1.tar.gz; + url = "mirror://sf/inkscape/${name}.tar.gz"; sha256 = "1y0b9bm8chn6a2ip99dj4dhg0188yn67v571ha0x38wrlmvn4k0d"; }; buildInputs = [ - pkgconfig - perl perlXMLParser - gtk libXft fontconfig - libpng - zlib popt - boehmgc - libxml2 libxslt - glib - gtkmm glibmm libsigcxx - lcms - boost - gettext + pkgconfig perl perlXMLParser gtk libXft fontconfig libpng zlib popt boehmgc + libxml2 libxslt glib gtkmm glibmm libsigcxx lcms boost gettext ]; meta = { From 2ca177e6ae4f7b5d7e11730b93f99fd02653cc13 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:18:15 +0000 Subject: [PATCH 219/320] cairomm added svn path=/nixpkgs/branches/stdenv-updates/; revision=10477 --- pkgs/development/libraries/cairomm/default.nix | 15 +++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/development/libraries/cairomm/default.nix diff --git a/pkgs/development/libraries/cairomm/default.nix b/pkgs/development/libraries/cairomm/default.nix new file mode 100644 index 00000000000..a22788c288e --- /dev/null +++ b/pkgs/development/libraries/cairomm/default.nix @@ -0,0 +1,15 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "cairomm-1.4.6"; + + src = fetchurl { + url = "http://cairographics.org/releases/${name}.tar.gz"; + sha256 = "1zd5pq5jd507w1v994awpsl7m26g4dfl0rwgrxig2823hl3rqmrp"; + }; + + buildInputs = [pkgconfig]; + propagatedBuildInputs = [cairo x11 fontconfig freetype]; + + configureFlags = "--enable-shared --disable-static"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0c5bf384132..ec7dbfe1ac1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1769,6 +1769,10 @@ rec { inherit fetchurl stdenv pkgconfig x11 fontconfig freetype zlib libpng; }; + cairomm = import ../development/libraries/cairomm { + inherit fetchurl stdenv pkgconfig cairo x11 fontconfig freetype; + }; + chmlib = import ../development/libraries/chmlib { inherit fetchurl stdenv; }; From 00af084c1cfd38435daed550afba5d97a4b95321 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:18:37 +0000 Subject: [PATCH 220/320] glibmm and gtkmm moved into gtkLibs svn path=/nixpkgs/branches/stdenv-updates/; revision=10478 --- .../libraries/gtk-libs/2.10/default.nix | 4 ++++ .../gtk-libs/2.10/glibmm/default.nix | 3 ++- .../libraries/gtk-libs/2.10/gtk+/default.nix | 10 ++++------ .../libraries/gtk-libs/2.10/gtkmm/default.nix | 3 ++- .../libraries/gtk-libs/2.10/pango/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 19 ++++--------------- 6 files changed, 18 insertions(+), 25 deletions(-) diff --git a/pkgs/development/libraries/gtk-libs/2.10/default.nix b/pkgs/development/libraries/gtk-libs/2.10/default.nix index f9179226c62..0fc77dde627 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/default.nix @@ -9,4 +9,8 @@ rec { pango = (import ./pango) (args // { inherit glib; }); gtk = (import ./gtk+) (args // { inherit glib atk pango; } ); + + glibmm = (import ./glibmm) (args // { inherit glib; }); + + gtkmm = (import ./gtkmm) (args // { inherit gtk atk glibmm; }); } diff --git a/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix b/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix index be5f0fdc91f..bbdde49b75d 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/glibmm/default.nix @@ -7,6 +7,7 @@ stdenv.mkDerivation { sha256 = "02rjjdh0f6kafa1sn4y5ykvm4f2qn3yh4kr4lngcv7vzasqn1dr1"; }; - buildInputs = [pkgconfig glib libsigcxx]; + buildInputs = [pkgconfig]; + propagatedBuildInputs = [glib libsigcxx]; } diff --git a/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix index 31a2078d670..a819c1fc275 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/gtk+/default.nix @@ -6,10 +6,8 @@ stdenv.mkDerivation { url = ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-2.10.14.tar.bz2; sha256 = "1qjdx9kdc533dajdy1kv3ssxzh7gz7j7vzgw0ax910q4klil88yh"; }; - buildInputs = [ - pkgconfig perl libtiff libjpeg libpng cairo libXrandr - (if xineramaSupport then libXinerama else null) - ]; - propagatedBuildInputs = [x11 glib atk pango]; - inherit libtiff libjpeg libpng; + buildInputs = [ pkgconfig perl ]; + propagatedBuildInputs = [x11 glib atk pango libtiff libjpeg libpng cairo + libXrandr (if xineramaSupport then libXinerama else null)]; + passthru = { inherit libtiff libjpeg libpng; }; } diff --git a/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix b/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix index 4fbabb20e19..9a44e9a6ba2 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/gtkmm/default.nix @@ -7,6 +7,7 @@ stdenv.mkDerivation { sha256 = "1bri9r0k69dmi5xgzrlfllp3adfzhz8dh9zkcvi6sjkgfwi594vx"; }; - buildInputs = [pkgconfig gtk atk glibmm libsigcxx]; + buildInputs = [pkgconfig]; + propagatedBuildInputs = [glibmm gtk atk cairomm]; } diff --git a/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix b/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix index 87e8b179ba3..faf5ffb4724 100644 --- a/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix +++ b/pkgs/development/libraries/gtk-libs/2.10/pango/default.nix @@ -6,6 +6,6 @@ stdenv.mkDerivation { url = ftp://ftp.gtk.org/pub/pango/1.14/pango-1.14.10.tar.bz2; md5 = "e9fc2f8168e74e2fa0aa8238ee0e9c06"; }; - buildInputs = [pkgconfig libpng]; - propagatedBuildInputs = [x11 glib cairo]; + buildInputs = [pkgconfig]; + propagatedBuildInputs = [x11 glib cairo libpng]; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ec7dbfe1ac1..02a12240d13 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1955,11 +1955,6 @@ rec { #installLocales = false; }); - glibmm = import ../development/libraries/gtk-libs/2.6/glibmm { - inherit fetchurl stdenv pkgconfig libsigcxx; - inherit (gtkLibs26) glib; - }; - gmime = import ../development/libraries/gmime { inherit fetchurl stdenv pkgconfig zlib; inherit (gtkLibs) glib; @@ -2001,7 +1996,7 @@ rec { gtkLibs210 = import ../development/libraries/gtk-libs/2.10 { inherit fetchurl stdenv pkgconfig gettext perl x11 - libtiff libjpeg libpng cairo; + libtiff libjpeg libpng cairo libsigcxx cairomm; inherit (xlibs) libXinerama libXrandr; xineramaSupport = true; }; @@ -2011,12 +2006,6 @@ rec { libtiff libjpeg libpng; }; - gtkmm = import ../development/libraries/gtk-libs/2.6/gtkmm { - inherit fetchurl stdenv pkgconfig libsigcxx; - inherit (gtkLibs26) gtk atk; - inherit glibmm; - }; - gtkmozembedsharp = import ../development/libraries/gtkmozembed-sharp { inherit fetchurl stdenv mono pkgconfig monoDLLFixer; inherit (gnome) gtk; @@ -4220,9 +4209,9 @@ rec { inkscape = import ../applications/graphics/inkscape { inherit fetchurl stdenv perl perlXMLParser pkgconfig zlib - popt libxml2 libxslt libpng boehmgc fontconfig gtkmm - glibmm libsigcxx lcms boost gettext; - inherit (gtkLibs) gtk glib; + popt libxml2 libxslt libpng boehmgc fontconfig + libsigcxx lcms boost gettext cairomm; + inherit (gtkLibs) gtk glib glibmm gtkmm; inherit (xlibs) libXft; }; From 465316c02bbc2cfa011f5c38dd2a733545ddc92d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:19:03 +0000 Subject: [PATCH 221/320] gtk-libs-2.6 removed svn path=/nixpkgs/branches/stdenv-updates/; revision=10479 --- .../libraries/gtk-libs/2.6/atk/default.nix | 13 ----------- .../libraries/gtk-libs/2.6/default.nix | 23 ------------------- .../libraries/gtk-libs/2.6/glib/default.nix | 12 ---------- .../libraries/gtk-libs/2.6/glibmm/default.nix | 12 ---------- .../libraries/gtk-libs/2.6/gtk+/default.nix | 21 ----------------- .../libraries/gtk-libs/2.6/gtkmm/default.nix | 12 ---------- .../libraries/gtk-libs/2.6/pango/default.nix | 14 ----------- pkgs/top-level/all-packages.nix | 5 ---- 8 files changed, 112 deletions(-) delete mode 100644 pkgs/development/libraries/gtk-libs/2.6/atk/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.6/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.6/glib/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.6/glibmm/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.6/gtk+/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.6/gtkmm/default.nix delete mode 100644 pkgs/development/libraries/gtk-libs/2.6/pango/default.nix diff --git a/pkgs/development/libraries/gtk-libs/2.6/atk/default.nix b/pkgs/development/libraries/gtk-libs/2.6/atk/default.nix deleted file mode 100644 index 66720d4dbeb..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.6/atk/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl, pkgconfig, glib, perl}: - -assert pkgconfig != null && glib != null && perl != null; - -stdenv.mkDerivation { - name = "atk-1.9.0"; - src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/atk-1.9.0.tar.bz2; - md5 = "7f41bd9c6dcd83c8df391dc1805be653"; - }; - buildInputs = [pkgconfig perl]; - propagatedBuildInputs = [glib]; -} diff --git a/pkgs/development/libraries/gtk-libs/2.6/default.nix b/pkgs/development/libraries/gtk-libs/2.6/default.nix deleted file mode 100644 index dc01a534d81..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.6/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gettext, perl, x11 -, libtiff, libjpeg, libpng}: - -rec { - - glib = (import ./glib) { - inherit fetchurl stdenv pkgconfig gettext perl; - }; - - atk = (import ./atk) { - inherit fetchurl stdenv pkgconfig glib perl; - }; - - pango = (import ./pango) { - inherit fetchurl stdenv pkgconfig glib x11; - }; - - gtk = (import ./gtk+) { - inherit fetchurl stdenv pkgconfig glib atk pango perl - libtiff libjpeg libpng x11; - }; - -} diff --git a/pkgs/development/libraries/gtk-libs/2.6/glib/default.nix b/pkgs/development/libraries/gtk-libs/2.6/glib/default.nix deleted file mode 100644 index 1dc3407a76e..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.6/glib/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, pkgconfig, gettext, perl}: - -assert pkgconfig != null && gettext != null && perl != null; - -stdenv.mkDerivation { - name = "glib-2.6.6"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.6/glib-2.6.6.tar.bz2; - md5 = "6e22b0639d314536f23ee118f29b43de"; - }; - buildInputs = [pkgconfig gettext perl]; -} diff --git a/pkgs/development/libraries/gtk-libs/2.6/glibmm/default.nix b/pkgs/development/libraries/gtk-libs/2.6/glibmm/default.nix deleted file mode 100644 index 957c596fc7b..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.6/glibmm/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, pkgconfig, glib, libsigcxx}: - -stdenv.mkDerivation { - name = "glibmm-2.6.4"; - src = fetchurl { - url = http://ftp.gnome.org/pub/GNOME/sources/glibmm/2.6/glibmm-2.6.1.tar.bz2; - md5 = "e37da352bf581503c5866f0231fd4a74"; - }; - - buildInputs = [pkgconfig glib libsigcxx]; -} - diff --git a/pkgs/development/libraries/gtk-libs/2.6/gtk+/default.nix b/pkgs/development/libraries/gtk-libs/2.6/gtk+/default.nix deleted file mode 100644 index 06e37f070da..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.6/gtk+/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, x11, glib, atk -, pango, perl, libtiff, libjpeg, libpng}: - -assert pkgconfig != null && x11 != null && glib != null && atk != null - && pango != null && perl != null && perl != null && libtiff != null - && libjpeg != null && libpng != null; -assert x11.buildClientLibs; -#assert glib == atk.glib; -#assert glib == pango.glib; -#assert x11 == pango.x11; - -stdenv.mkDerivation { - name = "gtk+-2.6.10"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-2.6.10.tar.bz2; - md5 = "520090ef291e35ba93397060e20f5025"; - }; - buildInputs = [pkgconfig perl libtiff libjpeg libpng]; - propagatedBuildInputs = [x11 glib atk pango]; - inherit libtiff libjpeg libpng; -} diff --git a/pkgs/development/libraries/gtk-libs/2.6/gtkmm/default.nix b/pkgs/development/libraries/gtk-libs/2.6/gtkmm/default.nix deleted file mode 100644 index ebc1e881c47..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.6/gtkmm/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gtk, atk, glibmm, libsigcxx}: - -stdenv.mkDerivation { - name = "gtkmm-2.6.4"; - src = fetchurl { - url = http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.6/gtkmm-2.6.4.tar.bz2; - md5 = "f71d1c4a89c4f9e054400f12a82dec5f"; - }; - - buildInputs = [pkgconfig gtk atk glibmm libsigcxx]; -} - diff --git a/pkgs/development/libraries/gtk-libs/2.6/pango/default.nix b/pkgs/development/libraries/gtk-libs/2.6/pango/default.nix deleted file mode 100644 index 6b9391e0a0b..00000000000 --- a/pkgs/development/libraries/gtk-libs/2.6/pango/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{stdenv, fetchurl, pkgconfig, x11, glib}: - -assert pkgconfig != null && x11 != null && glib != null; -assert x11.buildClientLibs; - -stdenv.mkDerivation { - name = "pango-1.8.2"; - src = fetchurl { - url = ftp://ftp.gtk.org/pub/gtk/v2.6/pango-1.8.2.tar.bz2; - md5 = "f5b5da7a173f0566d8217ec112fde993"; - }; - buildInputs = [pkgconfig]; - propagatedBuildInputs = [x11 glib]; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 02a12240d13..c06f6cc3b93 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2001,11 +2001,6 @@ rec { xineramaSupport = true; }; - gtkLibs26 = import ../development/libraries/gtk-libs/2.6 { - inherit fetchurl stdenv pkgconfig gettext perl x11 - libtiff libjpeg libpng; - }; - gtkmozembedsharp = import ../development/libraries/gtkmozembed-sharp { inherit fetchurl stdenv mono pkgconfig monoDLLFixer; inherit (gnome) gtk; From c975a01af39eb14105708f488508a64029145093 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:19:16 +0000 Subject: [PATCH 222/320] useFromStdenv syntax changed svn path=/nixpkgs/branches/stdenv-updates/; revision=10480 --- pkgs/top-level/all-packages.nix | 39 +++++++++++++++++---------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c06f6cc3b93..c81f37ea3f6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -119,7 +119,8 @@ rec { # inside the set for derivations. recurseIntoAttrs = attrs: attrs // {recurseForDerivations = true;}; - useFromStdenv = hasIt: it: alternative: if hasIt then it else alternative; + useFromStdenv = it : alternative : if (builtins.hasAttr it stdenv) then + (builtins.getAttr it stdenv) else alternative; lib = library; @@ -283,7 +284,7 @@ rec { # Allow the stdenv to determine fetchurl, to cater for strange # requirements. - fetchurl = useFromStdenv (stdenv ? fetchurl) stdenv.fetchurl + fetchurl = useFromStdenv "fetchurl" (import ../build-support/fetchurl { inherit stdenv curl; }); @@ -362,7 +363,7 @@ rec { inherit fetchurl stdenv; }; - bzip2 = useFromStdenv (stdenv ? bzip2) stdenv.bzip2 + bzip2 = useFromStdenv "bzip2" (import ../tools/compression/bzip2 { inherit fetchurl stdenv; }); @@ -379,7 +380,7 @@ rec { inherit fetchurl stdenv; }; - coreutils = useFromStdenv (stdenv ? coreutils) stdenv.coreutils + coreutils = useFromStdenv "coreutils" ((if stdenv ? isDietLibC then import ../tools/misc/coreutils-5 else import ../tools/misc/coreutils) @@ -411,7 +412,7 @@ rec { inherit fetchurl stdenv groff nettools coreutils iputils gnused bash; }; - diffutils = useFromStdenv (stdenv ? diffutils) stdenv.diffutils + diffutils = useFromStdenv "diffutils" (import ../tools/text/diffutils { inherit fetchurl stdenv coreutils; }); @@ -442,7 +443,7 @@ rec { qt = qt3; }; - findutils = useFromStdenv (stdenv ? findutils) stdenv.findutils + findutils = useFromStdenv "findutils" (if system == "i686-darwin" then findutils4227 else import ../tools/misc/findutils { inherit fetchurl stdenv coreutils; @@ -466,7 +467,7 @@ rec { libungif libpng libjpeg libtiff libxml2; }; - gawk = useFromStdenv (stdenv ? gawk) stdenv.gawk + gawk = useFromStdenv "gawk" (import ../tools/text/gawk { inherit fetchurl stdenv; }); @@ -488,12 +489,12 @@ rec { inherit (xlibs) libXext; }; - gnugrep = useFromStdenv (stdenv ? gnugrep) stdenv.gnugrep + gnugrep = useFromStdenv "gnugrep" (import ../tools/text/gnugrep { inherit fetchurl stdenv pcre; }); - gnupatch = useFromStdenv (stdenv ? patch) stdenv.patch (import ../tools/text/gnupatch { + gnupatch = useFromStdenv "patch" (import ../tools/text/gnupatch { inherit fetchurl stdenv; }); @@ -517,7 +518,7 @@ rec { x11Support = true; }; - gnused = useFromStdenv (stdenv ? gnused) stdenv.gnused + gnused = useFromStdenv "gnused" (import ../tools/text/gnused { inherit fetchurl stdenv; }); @@ -526,7 +527,7 @@ rec { inherit fetchurl stdenv; }; - gnutar = useFromStdenv (stdenv ? gnutar) stdenv.gnutar + gnutar = useFromStdenv "gnutar" (import ../tools/archivers/gnutar { inherit fetchurl stdenv; }); @@ -557,7 +558,7 @@ rec { inherit (gtkLibs) glib gtk; }; - gzip = useFromStdenv (stdenv ? gzip) stdenv.gzip + gzip = useFromStdenv "gzip" (import ../tools/compression/gzip { inherit fetchurl stdenv; }); @@ -896,7 +897,7 @@ rec { ### SHELLS - bash = lowPrio (useFromStdenv (stdenv ? bash) stdenv.bash + bash = lowPrio (useFromStdenv "bash" (import ../shells/bash { inherit fetchurl stdenv; bison = bison23; @@ -1014,7 +1015,7 @@ rec { profiledCompiler = false; }); - gcc42 = useFromStdenv (stdenv ? gcc) stdenv.gcc (wrapGCC (import ../development/compilers/gcc-4.2 { + gcc42 = useFromStdenv "gcc" (wrapGCC (import ../development/compilers/gcc-4.2 { inherit fetchurl stdenv noSysDirs; profiledCompiler = true; })); @@ -1472,7 +1473,7 @@ rec { # inherit lib fetchurl stdenv flex yacc; #}; - binutils = useFromStdenv (stdenv ? binutils) stdenv.binutils + binutils = useFromStdenv "binutils" (import ../development/tools/misc/binutils { inherit fetchurl stdenv noSysDirs; }); @@ -1526,7 +1527,7 @@ rec { inherit fetchurl stdenv; }; - gnumake = useFromStdenv (stdenv ? gnumake) stdenv.gnumake + gnumake = useFromStdenv "gnumake" (import ../development/tools/build-managers/gnumake { inherit fetchurl stdenv; }); @@ -1600,7 +1601,7 @@ rec { inherit fetchurl stdenv; }; - patchelf = useFromStdenv (stdenv ? patchelf) stdenv.patchelf + patchelf = useFromStdenv "patchelf" (import ../development/tools/misc/patchelf { inherit fetchurl stdenv; }); @@ -1609,7 +1610,7 @@ rec { * pkgconfig is optionally taken from the stdenv to allow bootstrapping * of glib and pkgconfig itself on MinGW. */ - pkgconfig = useFromStdenv (stdenv ? pkgconfig) stdenv.pkgconfig + pkgconfig = useFromStdenv "pkgconfig" (import ../development/tools/misc/pkgconfig { inherit fetchurl stdenv; }); @@ -1949,7 +1950,7 @@ rec { inherit (xlibs) libXmu libXi; }; - glibc = useFromStdenv (stdenv ? glibc) stdenv.glibc + glibc = useFromStdenv "glibc" (import ../development/libraries/glibc-2.7 { inherit fetchurl stdenv kernelHeaders; #installLocales = false; From 900a743888d13dceea0b9b4d3d3e348932dac0c5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 13:19:36 +0000 Subject: [PATCH 223/320] Removed applications/misc/luit: using from xorg svn path=/nixpkgs/branches/stdenv-updates/; revision=10481 --- pkgs/applications/misc/luit/default.nix | 17 ----------------- pkgs/top-level/all-packages.nix | 9 ++------- 2 files changed, 2 insertions(+), 24 deletions(-) delete mode 100644 pkgs/applications/misc/luit/default.nix diff --git a/pkgs/applications/misc/luit/default.nix b/pkgs/applications/misc/luit/default.nix deleted file mode 100644 index f27ddc30281..00000000000 --- a/pkgs/applications/misc/luit/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -args: with args; -stdenv.mkDerivation rec { - name = "luit-20060820"; - src = fetchurl { - url = "${meta.homepage}/${name}.tgz"; - sha256 = "0cxf4agl7ky3ip01qi1vzmis8y1ddngbi2fi0q6bzv1jw458rlpi"; - }; - - buildInputs = [libXt zlib pkgconfig libXfont libX11 libfontenc]; - - configureFlags = "--with-locale-alias=${libX11}/share/X11/locale/locale.alias"; - meta = { - description = "Luit is a filter that can be run between an arbitrary - application and a UTF-8 terminal emulator."; - homepage = http://invisible-island.net/luit; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c81f37ea3f6..46d363ae5a9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4263,11 +4263,6 @@ rec { inherit fetchurl stdenv; }; - luit = import ../applications/misc/luit { - inherit fetchurl stdenv zlib pkgconfig; - inherit (xlibs) libXt libX11 libXfont libfontenc; - }; - lynx = import ../applications/networking/browsers/lynx { inherit fetchurl stdenv ncurses openssl; }; @@ -4746,8 +4741,8 @@ rec { } null; xterm = import ../applications/misc/xterm { - inherit fetchurl stdenv ncurses freetype pkgconfig luit; - inherit (xlibs) libXaw xproto libXt libX11 libSM libICE libXext libXft; + inherit fetchurl stdenv ncurses freetype pkgconfig; + inherit (xlibs) libXaw xproto libXt libX11 libSM libICE libXext libXft luit; }; xlaunch = import ../tools/X11/xlaunch { From b4c440e72e8f81c46c5e8511506ee2de8cb4d321 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 3 Feb 2008 16:42:28 +0000 Subject: [PATCH 224/320] Typo in strigi svn path=/nixpkgs/branches/stdenv-updates/; revision=10485 --- pkgs/desktops/kde-4/support/strigi.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/desktops/kde-4/support/strigi.nix b/pkgs/desktops/kde-4/support/strigi.nix index 75a9ed8c651..0ed955ed710 100644 --- a/pkgs/desktops/kde-4/support/strigi.nix +++ b/pkgs/desktops/kde-4/support/strigi.nix @@ -4,6 +4,6 @@ stdenv.mkDerivation { name = "strigi-svn"; src = svnSrc "strigi" "0zmfy7ga4y49hl3rgw8ypqag36k78k2wfkkxka8xskrd249516ha"; CLUCENE_HOME=cluceneCore; - buildInputs = [ cmake zlib cluceneCore bzip2 libxml2 qt dbus + buildInputs = [ cmake zlib cluceneCore bzip2 libxml2 qt dbus.libs log4cxx stdenv.gcc.libc exiv2 bison cppunit perl ]; } From d3993b18fb8e84677c44ad1b06844564f54a207d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 4 Feb 2008 15:15:06 +0000 Subject: [PATCH 225/320] * GCC 4.2.3. svn path=/nixpkgs/branches/stdenv-updates/; revision=10499 --- pkgs/development/compilers/gcc-4.2/default.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.2/default.nix b/pkgs/development/compilers/gcc-4.2/default.nix index c763f8262c2..7fcf7717c5a 100644 --- a/pkgs/development/compilers/gcc-4.2/default.nix +++ b/pkgs/development/compilers/gcc-4.2/default.nix @@ -8,22 +8,24 @@ assert langC; with import ../../../lib; +let version = "4.2.3"; in + stdenv.mkDerivation { - name = "gcc-4.2.2"; + name = "gcc-${version}"; builder = ./builder.sh; src = optional /*langC*/ true (fetchurl { - url = mirror://gnu/gcc/gcc-4.2.2/gcc-core-4.2.2.tar.bz2; - sha256 = "01hdwd4im2xzg159fk022zqyhlxphqvpmabd25bqb8fjbs2yi80a"; + url = "mirror://gnu/gcc/gcc-${version}/gcc-core-${version}.tar.bz2"; + sha256 = "04y84s46wzy4h44hpacf7vyla7b5zfc1qvdq3myvrhp82cp0bv4r"; }) ++ optional langCC (fetchurl { - url = mirror://gnu/gcc/gcc-4.2.2/gcc-g++-4.2.2.tar.bz2; - sha256 = "04xankxi3bi4gvgv8rq9h6w3bdx59bg9zh0zv6lyw373gy26ygmq"; + url = "mirror://gnu/gcc/gcc-${version}/gcc-g++-${version}.tar.bz2"; + sha256 = "0spzz549fifwv02ym33azzwizl0zkq5m1fgy88ccmcyzmwpgyzfq"; }) ++ optional langF77 (fetchurl { - url = mirror://gnu/gcc/gcc-4.2.2/gcc-fortran-4.2.2.tar.bz2; - sha256 = "1fybl88w0l99cqppx18i6hnq5dsrssx3qd7vr2ybmmk3nfx8pziq"; + url = "mirror://gnu/gcc/gcc-${version}/gcc-fortran-${version}.tar.bz2"; + sha256 = "1l3ww6qymrkcfqlssb41a5fdnh6w2hqk0v2ijx56jgjbdnzawyp0"; }); patches = From 8cd1b893cf5f8f4211378ec6222ce74adf20745e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 6 Feb 2008 13:18:50 +0000 Subject: [PATCH 226/320] * coreutils-6.10, findutils-4.2.32. * Added some meta attributes. svn path=/nixpkgs/branches/stdenv-updates/; revision=10511 --- pkgs/shells/bash/default.nix | 1 + pkgs/tools/archivers/gnutar/default.nix | 7 +++++++ pkgs/tools/compression/gzip/default.nix | 9 ++++++++- pkgs/tools/misc/coreutils/default.nix | 13 +++++++++---- pkgs/tools/misc/findutils/default.nix | 11 ++++++++--- pkgs/tools/text/diffutils/default.nix | 7 +++++++ pkgs/tools/text/gawk/default.nix | 6 ++++++ pkgs/tools/text/gnugrep/default.nix | 7 +++++++ pkgs/tools/text/gnused/default.nix | 7 +++++++ 9 files changed, 60 insertions(+), 8 deletions(-) diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 9e709047288..0d5c440a105 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -21,6 +21,7 @@ stdenv.mkDerivation { buildInputs = [bison] ++ stdenv.lib.optional interactive ncurses; meta = { + homepage = http://www.gnu.org/software/bash/; description = "GNU Bourne-Again Shell, the de facto standard shell on Linux" + (if interactive then " (for interactive use)" else ""); diff --git a/pkgs/tools/archivers/gnutar/default.nix b/pkgs/tools/archivers/gnutar/default.nix index 9205612f3bc..7242f32f71c 100644 --- a/pkgs/tools/archivers/gnutar/default.nix +++ b/pkgs/tools/archivers/gnutar/default.nix @@ -2,9 +2,16 @@ stdenv.mkDerivation { name = "gnutar-1.19"; + src = fetchurl { url = mirror://gnu/tar/tar-1.19.tar.bz2; sha256 = "1d4wh27wlgryz3ld6gp6fn56knh7dmny93bmgixy07kvlxnx9466"; }; + patches = [./implausible.patch]; + + meta = { + homepage = http://www.gnu.org/software/grep/; + description = "GNU implementation of the tar archiver"; + }; } diff --git a/pkgs/tools/compression/gzip/default.nix b/pkgs/tools/compression/gzip/default.nix index 58d6e8b9707..0a2afd05372 100644 --- a/pkgs/tools/compression/gzip/default.nix +++ b/pkgs/tools/compression/gzip/default.nix @@ -2,9 +2,16 @@ stdenv.mkDerivation { name = "gzip-1.3.12"; + src = fetchurl { url = http://ftp.gnu.org/gnu/gzip/gzip-1.3.12.tar.gz; sha256 = "1bw7sm68xjlnlzgcx66hnw80ac1qqyvhw0vw27zilgbzbzh5nmiz"; }; - patches = [./gnulib-futimens.patch]; + + meta = { + homepage = http://www.gzip.org/; + description = "The gzip compression program"; + }; + + patches = [./gnulib-futimens.patch]; } diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 770a1dbfbc9..8292c56f0ea 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,10 +1,15 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "coreutils-6.9"; + name = "coreutils-6.10"; + src = fetchurl { - url = mirror://gnu/coreutils/coreutils-6.9.tar.bz2; - sha256 = "1c4p2kiy4m024qcl1przvphy8vhivf8jvclq6bjm1pjps5d8khl9"; + url = mirror://gnu/coreutils/coreutils-6.10.tar.gz; + sha256 = "0zpbxfl16sq45s53fxw43i9i8lrdcc845714c1j5f84zi13ka08x"; + }; + + meta = { + homepage = http://www.gnu.org/software/coreutils/; + description = "The basic file, shell and text manipulation utilities of the GNU operating system"; }; - patches = [ ./gnulib-futimens.patch ] ; } diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix index 5aa28d0c451..acfbf90d946 100644 --- a/pkgs/tools/misc/findutils/default.nix +++ b/pkgs/tools/misc/findutils/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, coreutils}: stdenv.mkDerivation { - name = "findutils-4.2.31"; + name = "findutils-4.2.32"; src = fetchurl { - url = mirror://gnu/findutils/findutils-4.2.31.tar.gz; - sha256 = "01329mrgg7pc2069hdbcl45jzrzvi94nnv1zf2hcrcx0mj7lplz0"; + url = mirror://gnu/findutils/findutils-4.2.32.tar.gz; + sha256 = "05sj0154kl4mbqg7dcabiaa16snjv2ppfwwhcvl2zyn2yc28igc7"; }; buildInputs = [coreutils]; @@ -12,4 +12,9 @@ stdenv.mkDerivation { # Note: the dietlibc patch is just to get findutils to compile. # The locate command probably won't work though. ++ stdenv.lib.optional (stdenv ? isDietLibC) ./dietlibc-hack.patch; + + meta = { + homepage = http://www.gnu.org/software/findutils/; + description = "The basic directory searching utilities of the GNU operating system"; + }; } diff --git a/pkgs/tools/text/diffutils/default.nix b/pkgs/tools/text/diffutils/default.nix index 3c0d5479ec5..44b7715607c 100644 --- a/pkgs/tools/text/diffutils/default.nix +++ b/pkgs/tools/text/diffutils/default.nix @@ -2,10 +2,17 @@ stdenv.mkDerivation { name = "diffutils-2.8.1"; + src = fetchurl { url = mirror://gnu/diffutils/diffutils-2.8.1.tar.gz; md5 = "71f9c5ae19b60608f6c7f162da86a428"; }; + /* If no explicit coreutils is given, use the one from stdenv. */ buildInputs = [coreutils]; + + meta = { + homepage = http://www.gnu.org/software/diffutils/diffutils.html; + description = "Commands for showing the differences between files (diff, cmp, etc.)"; + }; } diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index b50b3aa9bd0..10dd08214af 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -2,8 +2,14 @@ stdenv.mkDerivation { name = "gawk-3.1.6"; + src = fetchurl { url = mirror://gnu/gawk/gawk-3.1.6.tar.bz2; sha256 = "0v6ba4hxfiiy3bny5japd3zmzxlh8vdkmswk96yngd6i1dddsgsi"; }; + + meta = { + homepage = http://www.gnu.org/software/gawk/; + description = "GNU implementation of the AWK programming language"; + }; } diff --git a/pkgs/tools/text/gnugrep/default.nix b/pkgs/tools/text/gnugrep/default.nix index 6979e4a1b01..9b36dad6cfe 100644 --- a/pkgs/tools/text/gnugrep/default.nix +++ b/pkgs/tools/text/gnugrep/default.nix @@ -2,9 +2,16 @@ stdenv.mkDerivation { name = "gnugrep-2.5.3"; + src = fetchurl { url = http://nix.cs.uu.nl/dist/tarballs/grep-2.5.3-with-info.tar.bz2; sha256 = "0rg9dipksqzbg8v1xalib1n3xkkycc5r1l2gb9cxy1cz3cjip5l8"; }; + buildInputs = [pcre]; + + meta = { + homepage = http://www.gnu.org/software/grep/; + description = "GNU implementation of the Unix grep command"; + }; } diff --git a/pkgs/tools/text/gnused/default.nix b/pkgs/tools/text/gnused/default.nix index c70cf022570..2425147688b 100644 --- a/pkgs/tools/text/gnused/default.nix +++ b/pkgs/tools/text/gnused/default.nix @@ -2,10 +2,17 @@ stdenv.mkDerivation { name = "gnused-4.1.5"; + src = fetchurl { url = mirror://gnu/sed/sed-4.1.5.tar.gz; md5 = "7a1cbbbb3341287308e140bd4834c3ba"; }; + # !!! hack: this should go away in gnused > 4.1.5 patches = [./gettext-fix.patch]; + + meta = { + homepage = http://www.gnu.org/software/grep/; + description = "GNU implementation of the Unix sed command"; + }; } From a18e6606c8fbb5648b07841e6f15b1c9ded2f67c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 6 Feb 2008 13:26:27 +0000 Subject: [PATCH 227/320] * Bash 3.2 updated to patch level 33. svn path=/nixpkgs/branches/stdenv-updates/; revision=10512 --- pkgs/shells/bash/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 0d5c440a105..31fa5e77649 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -3,11 +3,11 @@ assert interactive -> ncurses != null; stdenv.mkDerivation { - name = "bash-3.2-p25"; + name = "bash-3.2-p33"; src = fetchurl { - url = http://losser.st-lab.cs.uu.nl/~eelco/dist/bash-3.2-p25.tar.bz2; - sha256 = "1x19z386ysvwk00zigzf3nkv1x1xq4kvyckz9ah8qz65a7626cs4"; + url = http://losser.st-lab.cs.uu.nl/~eelco/dist/bash-3.2-p33.tar.bz2; + sha256 = "11fv73nbcckmm4f1q9cf73754chsgfps9pklwcaj2ryfd5ql9wnb"; }; postInstall = "ln -s bash $out/bin/sh"; From 2d2aef01a5ecdda0356a398c5bf5f31c96916183 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:04 +0000 Subject: [PATCH 228/320] gstreamer moved to development/libraries/gstreamer, base and good plugins added. svn path=/nixpkgs/branches/stdenv-updates/; revision=10515 --- pkgs/applications/audio/GStreamer/default.nix | 13 --------- .../libraries/gstreamer/default.nix | 13 +++++++++ .../gstreamer/gst-plugins-base/0.10.17.nix | 24 +++++++++++++++++ .../gstreamer/gst-plugins-good/0.10.6.nix | 23 ++++++++++++++++ .../gst-plugins-good/tag_defines.patch | 22 +++++++++++++++ .../libraries/gstreamer/gstreamer/0.10.17.nix | 20 ++++++++++++++ pkgs/top-level/all-packages.nix | 27 ++++++++++++------- 7 files changed, 120 insertions(+), 22 deletions(-) delete mode 100644 pkgs/applications/audio/GStreamer/default.nix create mode 100644 pkgs/development/libraries/gstreamer/default.nix create mode 100644 pkgs/development/libraries/gstreamer/gst-plugins-base/0.10.17.nix create mode 100644 pkgs/development/libraries/gstreamer/gst-plugins-good/0.10.6.nix create mode 100644 pkgs/development/libraries/gstreamer/gst-plugins-good/tag_defines.patch create mode 100644 pkgs/development/libraries/gstreamer/gstreamer/0.10.17.nix diff --git a/pkgs/applications/audio/GStreamer/default.nix b/pkgs/applications/audio/GStreamer/default.nix deleted file mode 100644 index 0239b29f7ee..00000000000 --- a/pkgs/applications/audio/GStreamer/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl, perl -, bison, flex, glib -, pkgconfig, libxml2}: - -stdenv.mkDerivation { - name = "GStreamer-0.10.10"; - src = fetchurl { - url = http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.10.tar.bz2; - md5 = "6875bf0bd3cf38b9ae1362b9e644e6fc"; - }; - - buildInputs = [perl bison flex glib pkgconfig libxml2]; -} diff --git a/pkgs/development/libraries/gstreamer/default.nix b/pkgs/development/libraries/gstreamer/default.nix new file mode 100644 index 00000000000..678fbdb137a --- /dev/null +++ b/pkgs/development/libraries/gstreamer/default.nix @@ -0,0 +1,13 @@ +args: with args; +rec { + gstreamerFun = lib.sumArgs (selectVersion ./gstreamer "0.10.17") args; + gstreamer = gstreamerFun null; + + gstPluginsBaseFun = lib.sumArgs (selectVersion ./gst-plugins-base "0.10.17") + args { inherit gstreamer; }; + gstPluginsBase = gstPluginsBaseFun null; + + gstPluginsGoodFun = lib.sumArgs (selectVersion ./gst-plugins-good "0.10.6") + args { inherit gstPluginsBase; }; + gstPluginsGood = gstPluginsGoodFun null; +} diff --git a/pkgs/development/libraries/gstreamer/gst-plugins-base/0.10.17.nix b/pkgs/development/libraries/gstreamer/gst-plugins-base/0.10.17.nix new file mode 100644 index 00000000000..036134c82c1 --- /dev/null +++ b/pkgs/development/libraries/gstreamer/gst-plugins-base/0.10.17.nix @@ -0,0 +1,24 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "gst-plugins-base-" + version; + + src = fetchurl { + url = "${meta.homepage}/src/gst-plugins-base/${name}.tar.bz2"; + sha256 = "03gpfhdaw7yz83y0wpq966b9dqpvw8v5kpixa1pp4mn7d5bgsb7q"; + }; + + patchPhase = "sed -i 's@/bin/echo@echo@g' configure"; + + configureFlags = "--enable-shared --disable-static"; + +# TODO : v4l, libvisual + propagatedBuildInputs = [gstreamer libX11 libXv libXext alsaLib cdparanoia + gnomevfs libogg libtheora libvorbis freetype pango liboil gtk]; + + buildInputs = [pkgconfig python]; + + meta = { + homepage = http://gstreamer.freedesktop.org; + }; +} diff --git a/pkgs/development/libraries/gstreamer/gst-plugins-good/0.10.6.nix b/pkgs/development/libraries/gstreamer/gst-plugins-good/0.10.6.nix new file mode 100644 index 00000000000..10485330772 --- /dev/null +++ b/pkgs/development/libraries/gstreamer/gst-plugins-good/0.10.6.nix @@ -0,0 +1,23 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "gst-plugins-good-" + version; + + src = fetchurl { + url = "${meta.homepage}/src/gst-plugins-good/${name}.tar.bz2"; + sha256 = "0rid0gjj8nsk0r5yn4bz1xfsbp446r92wc6wp4099hilw6jxd74y"; + }; + + propagatedBuildInputs = [gstPluginsBase aalib cairo flac hal libjpeg + zlib speex libpng libdv libcaca dbus.libs libiec61883 libavc1394 ladspaH + taglib ]; + buildInputs = [pkgconfig]; + + configureFlags = "--enable-shared --disable-static --enable-ladspa"; + + patches = [ ./tag_defines.patch ]; + + meta = { + homepage = http://gstreamer.freedesktop.org; + }; +} diff --git a/pkgs/development/libraries/gstreamer/gst-plugins-good/tag_defines.patch b/pkgs/development/libraries/gstreamer/gst-plugins-good/tag_defines.patch new file mode 100644 index 00000000000..0ece094229b --- /dev/null +++ b/pkgs/development/libraries/gstreamer/gst-plugins-good/tag_defines.patch @@ -0,0 +1,22 @@ +diff -Nur gst-plugins-good0.10-0.10.6/ext/taglib/gstid3v2mux.cc gst-plugins-good0.10-0.10.6.new/ext/taglib/gstid3v2mux.cc +--- gst-plugins-good0.10-0.10.6/ext/taglib/gstid3v2mux.cc 2007-06-13 11:21:10.000000000 +0200 ++++ gst-plugins-good0.10-0.10.6.new/ext/taglib/gstid3v2mux.cc 2007-11-24 21:56:04.000000000 +0100 +@@ -532,6 +532,7 @@ + GST_TAG_TITLE, add_text_tag, "TIT2"}, { + GST_TAG_ALBUM, add_text_tag, "TALB"}, { + GST_TAG_COPYRIGHT, add_text_tag, "TCOP"}, { ++ GST_TAG_COMPOSER, add_text_tag, "TCOM"}, { + GST_TAG_GENRE, add_text_tag, "TCON"}, { + GST_TAG_COMMENT, add_comment_tag, ""}, { + GST_TAG_EXTENDED_COMMENT, add_comment_tag, ""}, { +@@ -544,7 +545,9 @@ + GST_TAG_MUSICBRAINZ_ALBUMARTISTID, add_musicbrainz_tag, "\002"}, { + GST_TAG_MUSICBRAINZ_TRMID, add_musicbrainz_tag, "\003"}, { + GST_TAG_MUSICBRAINZ_TRACKID, add_unique_file_id_tag, ""}, { +- GST_TAG_MUSICBRAINZ_SORTNAME, add_text_tag, "TSOP"}, { ++ GST_TAG_ARTIST_SORTNAME, add_text_tag, "TSOP"}, { ++ GST_TAG_ALBUM_SORTNAME, add_text_tag, "TSOA"}, { ++ GST_TAG_TITLE_SORTNAME, add_text_tag, "TSOT"}, { + GST_TAG_TRACK_NUMBER, add_count_or_num_tag, "TRCK"}, { + GST_TAG_TRACK_COUNT, add_count_or_num_tag, "TRCK"}, { + GST_TAG_ALBUM_VOLUME_NUMBER, add_count_or_num_tag, "TPOS"}, { diff --git a/pkgs/development/libraries/gstreamer/gstreamer/0.10.17.nix b/pkgs/development/libraries/gstreamer/gstreamer/0.10.17.nix new file mode 100644 index 00000000000..3508145c22c --- /dev/null +++ b/pkgs/development/libraries/gstreamer/gstreamer/0.10.17.nix @@ -0,0 +1,20 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "gstreamer-" + version; + + src = fetchurl { + url = "${meta.homepage}/src/gstreamer/${name}.tar.bz2"; + sha256 = "172nqf6l6mq4r1923bph53xd6h3svha3kkrvy5cald77jgf64a24"; + }; + + buildInputs = [perl bison flex pkgconfig python]; + propagatedBuildInputs = [glib libxml2]; + + configureFlags = "--enable-shared --disable-static --enable-failing-tests + --localstatedir=/var"; + + meta = { + homepage = http://gstreamer.freedesktop.org; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 46d363ae5a9..8125a35af53 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1970,6 +1970,16 @@ rec { inherit fetchurl stdenv gmp; }; + gst_all = import ../development/libraries/gstreamer { + inherit lib selectVersion stdenv fetchurl perl bison flex pkgconfig libxml2 + python alsaLib cdparanoia libogg libvorbis libtheora freetype liboil + libjpeg zlib speex libpng libdv aalib cairo libcaca flac hal libiec61883 + dbus libavc1394 ladspaH taglib; + inherit (xorg) libX11 libXv libXext; + inherit (gtkLibs) glib pango gtk; + inherit (gnome) gnomevfs; + }; + gnet = import ../development/libraries/gnet { inherit fetchurl stdenv pkgconfig; inherit (gtkLibs) glib; @@ -2554,7 +2564,7 @@ rec { tapioca_qt = import ../development/libraries/tapioca-qt { inherit fetchsvn stdenv cmake telepathy_qt; - qt = qt4; + qt = qt4; }; telepathy_gabble = import ../development/libraries/telepathy-gabble { @@ -3837,6 +3847,8 @@ rec { inherit fetchurl stdenv ncurses; }; + cdparanoia = cdparanoiaIII; + cdparanoiaIII = import ../applications/audio/cdparanoia { inherit fetchurl stdenv; }; @@ -4113,7 +4125,9 @@ rec { }; pidgin = import ../applications/networking/instant-messengers/pidgin { - inherit fetchurl stdenv pkgconfig perl perlXMLParser libxml2 openssl nss gtkspell GStreamer aspell gettext ncurses; + inherit fetchurl stdenv pkgconfig perl perlXMLParser libxml2 openssl nss + gtkspell aspell gettext ncurses; + GStreamer = gst_all.gstreamer; inherit (gtkLibs) gtk; inherit (gnome) startupnotification; inherit (xlibs) libXScrnSaver; @@ -4141,8 +4155,8 @@ rec { }; gnash = assert mesaSupported; import ../applications/video/gnash { - inherit fetchurl stdenv SDL SDL_mixer GStreamer - libogg libxml2 libjpeg mesa libpng; + inherit fetchurl stdenv SDL SDL_mixer libogg libxml2 libjpeg mesa libpng; + GStreamer = gst_all.gstreamer; inherit (xlibs) libX11 libXext libXi libXmu; }; @@ -4161,11 +4175,6 @@ rec { inherit (gtkLibs) gtk; }; - GStreamer = import ../applications/audio/GStreamer { - inherit fetchurl stdenv perl bison flex pkgconfig libxml2; - inherit (gtkLibs) glib; - }; - gv = import ../applications/misc/gv { inherit fetchurl stdenv Xaw3d ghostscriptX; }; From 7c1e5d4200a866d228c32bc243e96235f17a1642 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:15 +0000 Subject: [PATCH 229/320] libdv: more flags svn path=/nixpkgs/branches/stdenv-updates/; revision=10516 --- pkgs/development/libraries/libdv/default.nix | 28 +++++++++++++------- pkgs/top-level/all-packages.nix | 3 ++- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/pkgs/development/libraries/libdv/default.nix b/pkgs/development/libraries/libdv/default.nix index 4b0e05acf98..cf27bfa5ef1 100644 --- a/pkgs/development/libraries/libdv/default.nix +++ b/pkgs/development/libraries/libdv/default.nix @@ -1,15 +1,21 @@ args: let edf = args.lib.enableDisableFeature; in ( args.mkDerivationByConfiguration { - flagConfig = { } + flagConfig = { + mandatory = { buildInputs = [ "popt" "pkgconfig" ]; }; + libX11 = { cfgOption = "--with-x11"; buildInputs = "libX11"; }; + no_libX11 = { cfgOption = "--without-x11"; }; + } # TODO! implement flags # I want to get kino and cinelerra working. That's why I don't spend more time on this now // edf "libtool_lock" "libtool_lock" { } #avoid locking (might break parallel builds) // edf "asm" "asm" { } #disable use of architecture specific assembly code - // edf "sdl" "sdl" { } #enable use of SDL for display - // edf "gtk" "gtk" { } #disable use of gtk for display - // edf "xv" "xv" { } #disable use of XVideo extension for display + // edf "SDL" "sdl" { buildInputs = "SDL"; } #enable use of SDL for display + // edf "gtk" "gtk" { buildInputs = "gtk"; } #disable use of gtk for display + // edf "libXv" "xv" { buildInputs = "libXv"; } #disable use of XVideo extension for display // edf "gprof" "gprof" { } #enable compiler options for gprof profiling + // edf "shared" "shared" { } + // edf "static" "static" { } ; extraAttrs = co : { @@ -20,11 +26,13 @@ let edf = args.lib.enableDisableFeature; in sha256 = "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3"; }; - meta = { - description = "software decoder for DV format video, as defined by the IEC 61834 and SMPTE 314M standards"; - homepage = http://sourceforge.net/projects/libdv/; - # you can choose one of the following licenses: - license = []; + meta = { + description = "software decoder for DV format video, as defined by the IEC 61834 and SMPTE 314M standards"; + homepage = http://sourceforge.net/projects/libdv/; + # you can choose one of the following licenses: + license = []; + }; }; - }; + optionals = [ "SDL" "gtk" "libXv" "libX11" ]; + defaults = [ "shared" "libtool_lock" ]; } ) args diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8125a35af53..5ce9ee7eca3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2154,7 +2154,8 @@ rec { } null; libdv = import ../development/libraries/libdv { - inherit fetchurl stdenv lib mkDerivationByConfiguration; + inherit fetchurl stdenv lib mkDerivationByConfiguration SDL popt pkgconfig; + inherit (xorg) libXv libX11; }; libdrm = import ../development/libraries/libdrm { From 2e3480708ad230cbe2759cedc674c587b5a36354 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:22 +0000 Subject: [PATCH 230/320] liboil, libosip2 and libeXosip2 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10517 --- .../libraries/libeXosip2/3.0.3.nix | 13 ++++++++++++ pkgs/development/libraries/libeXosip2/result | 1 + pkgs/development/libraries/liboil/0.3.12.nix | 20 ++++++++++++++++++ .../libraries/libosip2/3.0.3-2.nix | 12 +++++++++++ pkgs/top-level/all-packages.nix | 21 +++++++++++++++++++ 5 files changed, 67 insertions(+) create mode 100644 pkgs/development/libraries/libeXosip2/3.0.3.nix create mode 120000 pkgs/development/libraries/libeXosip2/result create mode 100644 pkgs/development/libraries/liboil/0.3.12.nix create mode 100644 pkgs/development/libraries/libosip2/3.0.3-2.nix diff --git a/pkgs/development/libraries/libeXosip2/3.0.3.nix b/pkgs/development/libraries/libeXosip2/3.0.3.nix new file mode 100644 index 00000000000..59eed17b417 --- /dev/null +++ b/pkgs/development/libraries/libeXosip2/3.0.3.nix @@ -0,0 +1,13 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "libeXosip2-" + version; + + src = fetchurl { + url = "http://downloa.savannah.nongnu.org/releases/exosip/${name}.tar.gz"; + sha256 = "0jgy2mjq7r4kp8afl8zhymvca6hghp6chv36laiqz4bizcddzvxa"; + }; + + propagatedBuildInputs = [libosip2]; + configureFlags = "--enable-shared --disable-static"; +} diff --git a/pkgs/development/libraries/libeXosip2/result b/pkgs/development/libraries/libeXosip2/result new file mode 120000 index 00000000000..efa7575ab3a --- /dev/null +++ b/pkgs/development/libraries/libeXosip2/result @@ -0,0 +1 @@ +/nix/store/kc4kxnsi33x8a5p9xa3kv6w7dhj52w2f-libeXosip2-3.0.3 \ No newline at end of file diff --git a/pkgs/development/libraries/liboil/0.3.12.nix b/pkgs/development/libraries/liboil/0.3.12.nix new file mode 100644 index 00000000000..3e653753061 --- /dev/null +++ b/pkgs/development/libraries/liboil/0.3.12.nix @@ -0,0 +1,20 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "liboil-" + version; + + src = fetchurl { + url = "${meta.homepage}/liboil/${name}.tar.gz"; + sha256 = "0gdmly9sli1918pnb4ds1g38ipxikn651hdss86mp4qlfb8wvqlv"; + }; + + configureFlags = "--enable-shared --disable-static"; + + buildInputs = [pkgconfig]; + + meta = { + homepage = http://liboil.freedesktop.org; + description = "Liboil is a library of simple functions that are optimized + for various CPUs."; + }; +} diff --git a/pkgs/development/libraries/libosip2/3.0.3-2.nix b/pkgs/development/libraries/libosip2/3.0.3-2.nix new file mode 100644 index 00000000000..f8385807939 --- /dev/null +++ b/pkgs/development/libraries/libosip2/3.0.3-2.nix @@ -0,0 +1,12 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "libosip2-" + version; + + src = fetchurl { + url = "mirror://gnu/osip/${name}.tar.gz"; + sha256 = "0jna6xwc42g1sh91hwzi71875mpazmnsaaq68hjirwldh39qlp69"; + }; + + configureFlags = "--enable-shared --disable-static"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5ce9ee7eca3..8b6dd327bdd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2189,6 +2189,13 @@ rec { libextractor = libextractorFun null; + libeXosip2Fun = lib.sumArgs + (selectVersion ../development/libraries/libeXosip2 "3.0.3") { + inherit fetchurl stdenv libosip2; + }; + + libeXosip2 = libeXosip2Fun null; + libgcrypt = import ../development/libraries/libgcrypt { inherit fetchurl stdenv libgpgerror; }; @@ -2253,6 +2260,20 @@ rec { inherit fetchurl stdenv; }; + liboilFun = lib.sumArgs + (selectVersion ../development/libraries/liboil "0.3.12") { + inherit fetchurl stdenv pkgconfig; + }; + + liboil = liboilFun null; + + libosip2Fun = lib.sumArgs + (selectVersion ../development/libraries/libosip2 "3.0.3-2") { + inherit fetchurl stdenv; + }; + + libosip2 = libosip2Fun null; + libotr = import ../development/libraries/libotr { inherit fetchurl stdenv libgcrypt; }; From 503d0bfc6532fb2b487fe0a1c178416389d17ee7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:30 +0000 Subject: [PATCH 231/320] gnome-vfs: propagating GConf svn path=/nixpkgs/branches/stdenv-updates/; revision=10518 --- pkgs/desktops/gnome/gnome-vfs.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/desktops/gnome/gnome-vfs.nix b/pkgs/desktops/gnome/gnome-vfs.nix index 24b99fb3b83..7f1e6a67c71 100644 --- a/pkgs/desktops/gnome/gnome-vfs.nix +++ b/pkgs/desktops/gnome/gnome-vfs.nix @@ -3,9 +3,11 @@ args: with args; stdenv.mkDerivation { inherit (input) name src; buildInputs = [ - pkgconfig perl gnome.glib libxml2 gnome.GConf gnome.libbonobo + pkgconfig perl gnome.glib libxml2 gnome.libbonobo gnome.gnomemimedata popt perlXMLParser gettext bzip2 dbus_glib hal openssl samba fam ]; + + propagatedBuildInputs = [gnome.GConf]; patches = [./no-kerberos.patch]; } From 4086ba92fadd8020ffd108d47b5cd953dfacc2c2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:36 +0000 Subject: [PATCH 232/320] python: --with-wctype-functions svn path=/nixpkgs/branches/stdenv-updates/; revision=10519 --- pkgs/development/interpreters/python/2.5/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/python/2.5/default.nix b/pkgs/development/interpreters/python/2.5/default.nix index 9a84bfa7ff8..161584ee707 100644 --- a/pkgs/development/interpreters/python/2.5/default.nix +++ b/pkgs/development/interpreters/python/2.5/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation { C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); - configureFlags = "--enable-shared"; + configureFlags = "--enable-shared --with-wctype-functions"; preConfigure = " # Purity. From 4f5f90015f3349183e7d23eb81037661a95dd51b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:41 +0000 Subject: [PATCH 233/320] libraw1394: 1.3.0 svn path=/nixpkgs/branches/stdenv-updates/; revision=10520 --- pkgs/development/libraries/libraw1394/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/libraw1394/default.nix b/pkgs/development/libraries/libraw1394/default.nix index 8463749fcb3..af0553d49f7 100644 --- a/pkgs/development/libraries/libraw1394/default.nix +++ b/pkgs/development/libraries/libraw1394/default.nix @@ -1,15 +1,15 @@ args: with args; -stdenv.mkDerivation { - name = "libraw1394-1.2.0"; +stdenv.mkDerivation rec { + name = "libraw1394-1.3.0"; src = fetchurl { - url = "mirror://sourceforge/libraw1394/libraw1394-1.2.0.tar.gz"; - sha256 = "1b9zqqzyz0ihyfvhn135y3wc6vmym5yz21jxj9dp0f09b96gmp0z"; + url = "${meta.homepage}/dl/${name}.tar.gz"; + sha256 = "035mrca9fhg4kq8r1s5yjgzg3vrn1nc3ndy13yg3chhqgx4dzzr0"; }; meta = { description = "library providing direct access to the IEEE 1394 bus through the Linux 1394 subsystem's raw1394 user space interface"; - homepage = "http://wiki.linux1394.org/"; + homepage = "http://wiki.linux1394.org"; license = ["GPL" "LGPL"]; }; } From da2e5a04c06ca7dccbdc465f455e06f47ede7ef6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:46 +0000 Subject: [PATCH 234/320] libiec61883: propagating libraw1394 svn path=/nixpkgs/branches/stdenv-updates/; revision=10521 --- pkgs/development/libraries/libiec61883/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/libiec61883/default.nix b/pkgs/development/libraries/libiec61883/default.nix index c4062403d38..6fe199f5b91 100644 --- a/pkgs/development/libraries/libiec61883/default.nix +++ b/pkgs/development/libraries/libiec61883/default.nix @@ -1,17 +1,18 @@ args: with args; -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "libiec61883-1.1.0"; src = fetchurl { - url = http://www.linux1394.org/dl/libiec61883-1.1.0.tar.gz; + url = "${meta.homepage}/dl/${name}.tar.gz"; sha256 = "09f0ca7bp6lqlz6601gnyl04mfabv0azg49n1cmjyqpzh35cgxkq"; }; - buildInputs = [pkgconfig libraw1394]; + buildInputs = [pkgconfig]; + propagatedBuildInputs = [libraw1394]; meta = { description = "TODO"; - homepage = http://www.linux1394.org/; + homepage = http://www.linux1394.org; license = "LGPL"; }; } From 112024a954e89d38614ce3797b21a56698f34dff Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:51 +0000 Subject: [PATCH 235/320] libavc1394: propagating libraw1394 svn path=/nixpkgs/branches/stdenv-updates/; revision=10522 --- pkgs/development/libraries/libavc1394/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/libavc1394/default.nix b/pkgs/development/libraries/libavc1394/default.nix index 0834c212fe9..672ca202354 100644 --- a/pkgs/development/libraries/libavc1394/default.nix +++ b/pkgs/development/libraries/libavc1394/default.nix @@ -7,7 +7,8 @@ stdenv.mkDerivation { sha256 = "19i40i3722ilhziknfds3a6w5xzv66fvc68gvbir1p2fvwi6ij93"; }; - buildInputs = [pkgconfig libraw1394]; + buildInputs = [pkgconfig]; + propagatedBuildInputs = [libraw1394]; meta = { description = "programming interface for the 1394 Trade Association AV/C (Audio/Video Control) Digital Interface Command Set"; From 1bd8ddd18ed61ac879bbf20f5682c4abf8abd49a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:00:56 +0000 Subject: [PATCH 236/320] a52dec: nix-expr review, shared build svn path=/nixpkgs/branches/stdenv-updates/; revision=10523 --- pkgs/development/libraries/a52dec/default.nix | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/a52dec/default.nix b/pkgs/development/libraries/a52dec/default.nix index 4a75e11ec30..46dfe38c455 100644 --- a/pkgs/development/libraries/a52dec/default.nix +++ b/pkgs/development/libraries/a52dec/default.nix @@ -1,9 +1,15 @@ -{stdenv, fetchurl}: +args: with args; -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "a52dec-0.7.4"; src = fetchurl { - url = http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz; - md5 = "caa9f5bc44232dc8aeea773fea56be80"; + url = "${meta.homepage}/files/a52dec-0.7.4.tar.gz"; + sha256 = "0czccp4fcpf2ykp16xcrzdfmnircz1ynhls334q374xknd5747d2"; + }; + + configureFlags = "--enable-shared --disable-static"; + + meta = { + homepage = http://liba52.sourceforge.net; }; } From 410197a73477b2cc6d3902e05139bef312c8b6af Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:01:01 +0000 Subject: [PATCH 237/320] ffmpeg: new has, more features svn path=/nixpkgs/branches/stdenv-updates/; revision=10524 --- .../libraries/ffmpeg_svn_snapshot/default.nix | 16 ++++++++-------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix index 90978eb2908..5cfb90e4858 100644 --- a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix +++ b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix @@ -1,17 +1,17 @@ -{stdenv, fetchsvn}: +args: with args; stdenv.mkDerivation { name = "ffmpeg-svn-2007-12-04"; src = fetchsvn { url = svn://svn.mplayerhq.hu/ffmpeg/trunk ; rev = "11164"; - #sha256 = "95658455e466aeab5a302ddd6e7b2f79f620d4495012add46028a548e6c364b2"; - sha256 = "c97b0cd791f8408cfc69452ff7afbf00d34b367e493dfbcae830fba99c229189"; + sha256 = "80d3b3311abaf8343b73c711f02d269e8c87991f2c3d0f08e32309d39ad6aa3b"; }; - /*fetchurl { - url = http://ffmpeg.mplayerhq.hu/ffmpeg-export-snapshot.tar.bz2; - sha256 = "040a35f0c004323af14329c09ad3cff8d040e2cf9797d97cde3d9d83d02b4d87"; - };*/ + + propagatedBuildInputs = [ a52dec lame libtheora x11 zlib SDL]; # !!! Hm, what are the legal consequences of --enable-gpl? - configureFlags = "--enable-shared --enable-pp --enable-gpl --disable-ffserver --disable-ffplay"; + configureFlags = "--enable-pthreads --enable-gpl --enable-pp --enable-shared + --disable-static --enable-x11grab --enable-liba52 --enable-libmp3lame + --enable-libtheora --enable-swscaler"; } + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8b6dd327bdd..cde6b883933 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1874,7 +1874,7 @@ rec { }; ffmpeg_svn = import ../development/libraries/ffmpeg_svn_snapshot { - inherit fetchsvn stdenv; + inherit fetchsvn stdenv a52dec libtheora x11 lame zlib SDL; }; fftw = import ../development/libraries/fftw { From e281a287b2b0e83cdb6257e03d900f3644a26744 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 19:01:06 +0000 Subject: [PATCH 238/320] vim: now compiles in stdenv-updates (-lutil -lpthread) svn path=/nixpkgs/branches/stdenv-updates/; revision=10525 --- pkgs/applications/editors/vim/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/applications/editors/vim/default.nix b/pkgs/applications/editors/vim/default.nix index 6839f337b6a..2f1677622a9 100644 --- a/pkgs/applications/editors/vim/default.nix +++ b/pkgs/applications/editors/vim/default.nix @@ -55,6 +55,8 @@ args.stdenv.mkDerivation { preBuild="touch src/auto/link.sed"; configureFlags = args.lib.condConcat "" configFlags check; + NIX_LDFLAGS = "-lpthread -lutil"; + meta = { description = "The most popular clone of the VI editor"; homepage = http://www.vim.org; From c5fafa326b1e32e8aadb548d45845239cc688da8 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 6 Feb 2008 22:45:59 +0000 Subject: [PATCH 239/320] Alsa: 1.0.16 svn path=/nixpkgs/branches/stdenv-updates/; revision=10531 --- pkgs/os-specific/linux/alsa/1.0.14.nix | 14 ++++++++++++++ pkgs/os-specific/linux/alsa/1.0.16.nix | 15 +++++++++++++++ pkgs/os-specific/linux/alsa/common.nix | 13 +++++++++++++ pkgs/os-specific/linux/alsa/library/default.nix | 13 ------------- pkgs/os-specific/linux/alsa/utils/default.nix | 14 -------------- pkgs/top-level/all-packages.nix | 12 ++++++------ 6 files changed, 48 insertions(+), 33 deletions(-) create mode 100644 pkgs/os-specific/linux/alsa/1.0.14.nix create mode 100644 pkgs/os-specific/linux/alsa/1.0.16.nix create mode 100644 pkgs/os-specific/linux/alsa/common.nix delete mode 100644 pkgs/os-specific/linux/alsa/library/default.nix delete mode 100644 pkgs/os-specific/linux/alsa/utils/default.nix diff --git a/pkgs/os-specific/linux/alsa/1.0.14.nix b/pkgs/os-specific/linux/alsa/1.0.14.nix new file mode 100644 index 00000000000..c7799af559a --- /dev/null +++ b/pkgs/os-specific/linux/alsa/1.0.14.nix @@ -0,0 +1,14 @@ +args: with args; + +rec { + alsaLib = (import ./common.nix) { + aName = "lib"; + sha256 = "18xhm53adgss20jnva2nfl9gk46kb5an6ah820pazqn0ykd97rh1"; + } args; + + alsaUtils = (import ./common.nix) { + aName = "utils"; + sha256 = "1jx5bwa8abx7aih4lymx4bnrmyip2yb0rp1mza97wpni1q7n6z9h"; + buildInputs = [alsaLib ncurses gettext]; + } args; +} diff --git a/pkgs/os-specific/linux/alsa/1.0.16.nix b/pkgs/os-specific/linux/alsa/1.0.16.nix new file mode 100644 index 00000000000..01b8bc932db --- /dev/null +++ b/pkgs/os-specific/linux/alsa/1.0.16.nix @@ -0,0 +1,15 @@ +args: with args; + +rec { + alsaLib = (import ./common.nix) { + aName = "lib"; + sha256 = "1k96razf5h7blidh5ib54plcrfnbysvwm7vhvz28b4cy20zv66df"; + } args; + + alsaUtils = (import ./common.nix) { + aName = "utils"; + sha256 = "10bj4pw2hp3f6qzkxsrlnvsxjlpqha696fn10gzdnnzym072skzb"; + buildInputs = [alsaLib ncurses gettext]; + } args; +} +0rb5rc8ppxjrpg5bcb5fw24v7gm5983zphz9762i8is5q2hbcqif diff --git a/pkgs/os-specific/linux/alsa/common.nix b/pkgs/os-specific/linux/alsa/common.nix new file mode 100644 index 00000000000..218a4b91c8e --- /dev/null +++ b/pkgs/os-specific/linux/alsa/common.nix @@ -0,0 +1,13 @@ +{aName, sha256, buildInputs ? [], propagatedBuildInputs ? [] } : +args: with args; stdenv.mkDerivation rec { + name = "alsa-" + aName + "-" + version; + + src = fetchurl { + url = "ftp://ftp.alsa-project.org/pub/" + aName + "/" + name + ".tar.bz2"; + inherit sha256; + }; + + inherit buildInputs propagatedBuildInputs; + + meta = { homepage = http://www.alsa-project.org; }; +} diff --git a/pkgs/os-specific/linux/alsa/library/default.nix b/pkgs/os-specific/linux/alsa/library/default.nix deleted file mode 100644 index 6ab8143c7ab..00000000000 --- a/pkgs/os-specific/linux/alsa/library/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl}: - -stdenv.mkDerivation { - name = "alsa-lib-1.0.14"; - src = fetchurl { - url = ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.14.tar.bz2; - sha256 = "18xhm53adgss20jnva2nfl9gk46kb5an6ah820pazqn0ykd97rh1"; - }; - - meta = { - homepage = http://www.alsa-project.org; - }; -} diff --git a/pkgs/os-specific/linux/alsa/utils/default.nix b/pkgs/os-specific/linux/alsa/utils/default.nix deleted file mode 100644 index 658d8d8e9f7..00000000000 --- a/pkgs/os-specific/linux/alsa/utils/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{stdenv, fetchurl, alsaLib, ncurses, gettext}: - -stdenv.mkDerivation { - name = "alsa-utils-1.0.14"; - src = fetchurl { - url = ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.14.tar.bz2; - sha256 = "1jx5bwa8abx7aih4lymx4bnrmyip2yb0rp1mza97wpni1q7n6z9h"; - }; - buildInputs = [alsaLib ncurses gettext]; - - meta = { - homepage = http://www.alsa-project.org; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cde6b883933..991d2149a37 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3228,10 +3228,14 @@ rec { }; */ - alsaLib = import ../os-specific/linux/alsa/library { - inherit fetchurl stdenv; + alsaFun = lib.sumArgs (selectVersion ../os-specific/linux/alsa "1.0.16") { + inherit fetchurl stdenv ncurses gettext; }; + alsa = alsaFun null; + + alsaLib = alsa.alsaLib; + atherosFun = lib.sumArgs (selectVersion ../os-specific/linux/atheros "r3122") { inherit fetchurl stdenv builderDefs; }; @@ -3248,10 +3252,6 @@ rec { inherit fetchurl stdenv autoconf automake; }; - alsaUtils = import ../os-specific/linux/alsa/utils { - inherit fetchurl stdenv alsaLib ncurses gettext; - }; - cramfsswap = import ../os-specific/linux/cramfsswap { inherit fetchurl stdenv zlib; }; From 4b881c08e3f93d1a22864478b4e0c1cfa8fbedfe Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 7 Feb 2008 09:43:10 +0000 Subject: [PATCH 240/320] alsaUtils = alsa.alsaUtils added: services need this svn path=/nixpkgs/branches/stdenv-updates/; revision=10535 --- pkgs/top-level/all-packages.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 991d2149a37..5a9daf8f55d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2387,6 +2387,13 @@ rec { inherit fetchurl stdenv; }; + mediastreamerFun = lib.sumArgs (selectVersion + ../development/libraries/mediastreamer "2.2.0cvs") { + inherit fetchcvs stdenv; + }; + + mediastreamer = mediastreamerFun null; + mesaSupported = system == "i686-linux" || system == "x86_64-linux"; @@ -3236,6 +3243,8 @@ rec { alsaLib = alsa.alsaLib; + alsaUtils = alsa.alsaUtils; + atherosFun = lib.sumArgs (selectVersion ../os-specific/linux/atheros "r3122") { inherit fetchurl stdenv builderDefs; }; From dd184fa88dde3df5f3510a31bff0c09f2564da6a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 7 Feb 2008 10:43:05 +0000 Subject: [PATCH 241/320] erlang and libsigsegv upgraded svn path=/nixpkgs/branches/stdenv-updates/; revision=10537 --- pkgs/development/interpreters/erlang/R11B-5.nix | 12 ++++++++++++ pkgs/development/interpreters/erlang/R12B-1.nix | 12 ++++++++++++ pkgs/development/interpreters/erlang/builder.sh | 14 -------------- pkgs/development/interpreters/erlang/default.nix | 11 ----------- pkgs/development/libraries/libsigsegv/2.5.nix | 14 ++++++++++++++ pkgs/development/libraries/libsigsegv/default.nix | 9 --------- pkgs/top-level/all-packages.nix | 4 ++-- 7 files changed, 40 insertions(+), 36 deletions(-) create mode 100644 pkgs/development/interpreters/erlang/R11B-5.nix create mode 100644 pkgs/development/interpreters/erlang/R12B-1.nix delete mode 100644 pkgs/development/interpreters/erlang/builder.sh delete mode 100644 pkgs/development/interpreters/erlang/default.nix create mode 100644 pkgs/development/libraries/libsigsegv/2.5.nix delete mode 100644 pkgs/development/libraries/libsigsegv/default.nix diff --git a/pkgs/development/interpreters/erlang/R11B-5.nix b/pkgs/development/interpreters/erlang/R11B-5.nix new file mode 100644 index 00000000000..68cc3b5f2b5 --- /dev/null +++ b/pkgs/development/interpreters/erlang/R11B-5.nix @@ -0,0 +1,12 @@ +args: with args; + +stdenv.mkDerivation { + name = "erlang-" + version; + src = fetchurl { + url = http://www.erlang.org/download/otp_src_R11B-5.tar.gz; + md5 = "96acec41da87d6ee0ef18e1aab36ffdd"; + }; + buildInputs = [perl gnum4 ncurses openssl]; + patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure ''; + configureFlags = "--with-ssl=${openssl}"; +} diff --git a/pkgs/development/interpreters/erlang/R12B-1.nix b/pkgs/development/interpreters/erlang/R12B-1.nix new file mode 100644 index 00000000000..37ebdbf6ab8 --- /dev/null +++ b/pkgs/development/interpreters/erlang/R12B-1.nix @@ -0,0 +1,12 @@ +args: with args; + +stdenv.mkDerivation { + name = "erlang-" + version; + src = fetchurl { + url = "http://www.erlang.org/download/otp_src_" + version + ".tar.gz"; + sha256 = "16w7snhbjzwiywppsp04yiy2bkncff8pf4i643kqzkqx578jhaqz"; + }; + buildInputs = [perl gnum4 ncurses openssl]; + patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure ''; + configureFlags = "--with-ssl=${openssl}"; +} diff --git a/pkgs/development/interpreters/erlang/builder.sh b/pkgs/development/interpreters/erlang/builder.sh deleted file mode 100644 index 43c964d88b8..00000000000 --- a/pkgs/development/interpreters/erlang/builder.sh +++ /dev/null @@ -1,14 +0,0 @@ -buildInputs="$perl $gnum4 $ncurses $openssl" - -source $stdenv/setup - -tar xfvz $src -cd otp_src_* - -# Fix some hard coded paths to /bin/rm -sed -i -e "s|/bin/rm|rm|" lib/odbc/configure -sed -i -e "s|/bin/rm|rm|" erts/configure - -./configure --prefix=$out --with-ssl=$openssl -make -make install diff --git a/pkgs/development/interpreters/erlang/default.nix b/pkgs/development/interpreters/erlang/default.nix deleted file mode 100644 index f8caed7f329..00000000000 --- a/pkgs/development/interpreters/erlang/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{stdenv, fetchurl, perl, ncurses, gnum4, openssl}: - -stdenv.mkDerivation { - name = "erlang-R11B-5"; - builder = ./builder.sh; - src = fetchurl { - url = http://www.erlang.org/download/otp_src_R11B-5.tar.gz; - md5 = "96acec41da87d6ee0ef18e1aab36ffdd"; - }; - inherit perl ncurses gnum4 openssl; -} diff --git a/pkgs/development/libraries/libsigsegv/2.5.nix b/pkgs/development/libraries/libsigsegv/2.5.nix new file mode 100644 index 00000000000..11f69753dc8 --- /dev/null +++ b/pkgs/development/libraries/libsigsegv/2.5.nix @@ -0,0 +1,14 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "libsigsegv-" + version; + src = fetchurl { + url = "mirror://gnu/libsigsegv/${name}.tar.gz"; + sha256 = "0fvcsq9msi63vrbpvks6mqkrnls5cfy6bzww063sqhk2h49vsyyg"; + }; + + meta = { + homepage = http://libsigsegv.sf.net; + description = "A library for handling page faults in user mode"; + }; +} diff --git a/pkgs/development/libraries/libsigsegv/default.nix b/pkgs/development/libraries/libsigsegv/default.nix deleted file mode 100644 index 07d4bdaacc8..00000000000 --- a/pkgs/development/libraries/libsigsegv/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{stdenv, fetchurl}: - -stdenv.mkDerivation { - name = "libsigsegv-2.1"; - src = fetchurl { - url = mirror://gnu/libsigsegv/libsigsegv-2.1.tar.gz; - md5 = "6d75ca3fede5fbfd72a78bc918d9e174"; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5a9daf8f55d..74f99062525 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1306,7 +1306,7 @@ rec { inherit (xlibs) libX11 libXau libXt; }; - erlang = import ../development/interpreters/erlang { + erlang = selectVersion ../development/interpreters/erlang "R12B-1" { inherit fetchurl perl gnum4 ncurses openssl stdenv; }; @@ -2296,7 +2296,7 @@ rec { inherit fetchurl stdenv pkgconfig; }; - libsigsegv = import ../development/libraries/libsigsegv { + libsigsegv = selectVersion ../development/libraries/libsigsegv "2.5" { inherit fetchurl stdenv; }; From ef9c7dccc09c8612b4cd9c92d83911833bbb0407 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 7 Feb 2008 11:07:21 +0000 Subject: [PATCH 242/320] typo in alsa svn path=/nixpkgs/branches/stdenv-updates/; revision=10538 --- pkgs/os-specific/linux/alsa/1.0.16.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/os-specific/linux/alsa/1.0.16.nix b/pkgs/os-specific/linux/alsa/1.0.16.nix index 01b8bc932db..5cac6f268aa 100644 --- a/pkgs/os-specific/linux/alsa/1.0.16.nix +++ b/pkgs/os-specific/linux/alsa/1.0.16.nix @@ -12,4 +12,3 @@ rec { buildInputs = [alsaLib ncurses gettext]; } args; } -0rb5rc8ppxjrpg5bcb5fw24v7gm5983zphz9762i8is5q2hbcqif From 58d6720165d7c14f47152e6962a24cea62ba3eda Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 7 Feb 2008 11:07:27 +0000 Subject: [PATCH 243/320] added mediastreamer (failed to build now) svn path=/nixpkgs/branches/stdenv-updates/; revision=10539 --- .../mediastreamer/2.2.0-cvs20080207.nix | 16 ++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix diff --git a/pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix b/pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix new file mode 100644 index 00000000000..221954aa3fe --- /dev/null +++ b/pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix @@ -0,0 +1,16 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "mediastreamer-" + version; + +# This url is not related to mediastreamer. fetchcvs doesn't work on my laptop, +# so I've created cvs snapshot and put it to my server. + src = fetchurl { + url = "http://www.loegria.net/misc/" + name + ".tar.bz2"; + sha256 = "1nmvyqh4x3nsw4qbj754jwagj9ia183kvp8valdr7m44my0sw5p1"; + }; + + buildInputs = [automake]; + + preConfigure = "./autogen.sh"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 74f99062525..6d6add025c8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2387,9 +2387,10 @@ rec { inherit fetchurl stdenv; }; +#failed to build mediastreamerFun = lib.sumArgs (selectVersion - ../development/libraries/mediastreamer "2.2.0cvs") { - inherit fetchcvs stdenv; + ../development/libraries/mediastreamer "2.2.0-cvs20080207") { + inherit fetchurl stdenv automake; }; mediastreamer = mediastreamerFun null; From c264b316b1eeaadd15ee0e7ba11b78a2deff88c9 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Fri, 8 Feb 2008 10:39:20 +0000 Subject: [PATCH 244/320] Some updates. Now I can build system at least with some settings. svn path=/nixpkgs/branches/stdenv-updates/; revision=10551 --- pkgs/development/libraries/dbus/default.nix | 4 ++++ pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/dbus/default.nix b/pkgs/development/libraries/dbus/default.nix index 98fb6c682b1..b60705f21f6 100644 --- a/pkgs/development/libraries/dbus/default.nix +++ b/pkgs/development/libraries/dbus/default.nix @@ -35,4 +35,8 @@ in rec { # I'm too lazy to separate daemon and libs now. daemon = libs; + + # FIXME TODO + # After merger it will be better to correct upstart-job instead. + outPath = daemon.outPath; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6d6add025c8..0f211793b1a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1347,7 +1347,7 @@ rec { php = (import ../development/interpreters/php_configurable) { inherit mkDerivationByConfiguration stdenv mysql lib; inherit fetchurl flex bison apacheHttpd; # gettext; - inherit libxml2; + inherit libxml2 automake autoconf postgresql; flags = [ "xdebug" "mysql" "mysqli" "pdo_mysql" "libxml2" "apxs2" ]; }; From 4df190c703f8779fcbdc32df19e6fbed36654e99 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sun, 10 Feb 2008 16:44:43 +0000 Subject: [PATCH 245/320] Various fixes and updates to build that all. svn path=/nixpkgs/branches/stdenv-updates/; revision=10568 --- .../ImageMagick/{default.nix => 6.3.8-5.nix} | 4 +-- .../development/tools/misc/elfutils/0.127.nix | 1 + .../misc/ltrace/{default.nix => 0.5-3deb.nix} | 15 ++++++-- pkgs/lib/default.nix | 4 +++ pkgs/os-specific/linux/dvd+rw-tools/7.0.nix | 3 +- pkgs/servers/xmpp/ejabberd/builder.sh | 2 +- pkgs/servers/xmpp/ejabberd/default.nix | 6 ++-- pkgs/tools/compression/lzma/default.nix | 18 ++++++++++ pkgs/tools/misc/dosfstools/2.11deb.nix | 33 ++++++++++++++++++ pkgs/tools/networking/nc6/1.0.nix | 25 ++++++++++++++ pkgs/tools/networking/socat/1.6.0.0.nix | 34 +++++++++++++++++++ pkgs/tools/networking/socat/2.0.0-b1.nix | 25 ++++++++++++++ pkgs/top-level/all-packages.nix | 29 ++++++++++++++-- 13 files changed, 187 insertions(+), 12 deletions(-) rename pkgs/applications/graphics/ImageMagick/{default.nix => 6.3.8-5.nix} (81%) rename pkgs/development/tools/misc/ltrace/{default.nix => 0.5-3deb.nix} (54%) create mode 100644 pkgs/tools/compression/lzma/default.nix create mode 100644 pkgs/tools/misc/dosfstools/2.11deb.nix create mode 100644 pkgs/tools/networking/nc6/1.0.nix create mode 100644 pkgs/tools/networking/socat/1.6.0.0.nix create mode 100644 pkgs/tools/networking/socat/2.0.0-b1.nix diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/6.3.8-5.nix similarity index 81% rename from pkgs/applications/graphics/ImageMagick/default.nix rename to pkgs/applications/graphics/ImageMagick/6.3.8-5.nix index 67df0c7b3c4..87e40ae74a1 100644 --- a/pkgs/applications/graphics/ImageMagick/default.nix +++ b/pkgs/applications/graphics/ImageMagick/6.3.8-5.nix @@ -3,8 +3,8 @@ stdenv.mkDerivation (rec { name = "ImageMagick-6.3.8-2"; src = fetchurl { - url = "ftp://ftp.imagemagick.org/pub/ImageMagick/${name}.tar.bz2"; - sha256 = "05bp10dzpw691w8hdw0n2xr65194xgslpqhzf4xbxla7gz8clnmg"; + url = ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.8-5.tar.bz2; + sha256 = "0lsvi2z5b5zam6yvjzsyjpa36rg1c0kczifz73k9b4v8zz9a9vfl"; }; configureFlags = " --with-dots --with-gs-font-dir="+ ghostscript + diff --git a/pkgs/development/tools/misc/elfutils/0.127.nix b/pkgs/development/tools/misc/elfutils/0.127.nix index 2337ebbdbd0..efa91fa637c 100644 --- a/pkgs/development/tools/misc/elfutils/0.127.nix +++ b/pkgs/development/tools/misc/elfutils/0.127.nix @@ -6,4 +6,5 @@ stdenv.mkDerivation { url = http://nix.cs.uu.nl/dist/tarballs/elfutils-0.127.tar.gz; sha256 = "12n3h5r3c24a6l2wxz0w2dqq072bvgms0dzckivrwp5vdn22lpdv"; }; + preBuild = "sed -e 's/-Werror//' -i */Makefile "; } diff --git a/pkgs/development/tools/misc/ltrace/default.nix b/pkgs/development/tools/misc/ltrace/0.5-3deb.nix similarity index 54% rename from pkgs/development/tools/misc/ltrace/default.nix rename to pkgs/development/tools/misc/ltrace/0.5-3deb.nix index cd77984ded6..bff3e6a8fbc 100644 --- a/pkgs/development/tools/misc/ltrace/default.nix +++ b/pkgs/development/tools/misc/ltrace/0.5-3deb.nix @@ -1,5 +1,10 @@ -args : with args; - let localDefs = builderDefs { +args : with args; let + patch = fetchurl { + url = ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.5-3.diff.gz; + sha256 = "0rin25si7117wld5bc7vf3d73c5k9ph3zach7cbg9h9vvz376c26"; + }; + localDefs = with (builderDefs {src="";} null); + builderDefs { src = /* put a fetchurl here */ fetchurl { url = ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.5.orig.tar.gz; @@ -11,6 +16,10 @@ args : with args; goSrcDir = " cd ltrace-*; "; + preBuild = FullDepEntry ('' + gunzip < ${patch} | patch -Np1 + sed -e s@-Werror@@ -i Makefile.in + '')["minInit" "doUnpack"]; } null; /* null is a terminator for sumArgs */ in with localDefs; let @@ -21,7 +30,7 @@ in stdenv.mkDerivation rec { name = "ltrace-0.5"; builder = writeScript (name + "-builder") - (textClosure localDefs [preConfigure doConfigure doMakeInstall doForceShare]); + (textClosure localDefs [preBuild preConfigure doConfigure doMakeInstall doForceShare]); meta = { description = " Library call tracer. diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 87d08ab7c1c..1018d960907 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -176,6 +176,10 @@ rec { # (e.g. `++ optional (system == "i686-linux") flashplayer'). optional = cond: elem: if cond then [elem] else []; + + # Return a list or an empty list, dependening on a boolean value. + optionals = cond: elems: if cond then elems else []; + # Return a list of integers from `first' up to and including `last'. range = first: last: diff --git a/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix b/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix index 658bdbf55fa..091f0c910f6 100644 --- a/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix +++ b/pkgs/os-specific/linux/dvd+rw-tools/7.0.nix @@ -13,13 +13,14 @@ args : with args; in with localDefs; let preBuild = FullDepEntry (" + sed -e '1i#define INT_MAX __INT_MAX__' -i *.c *.cpp sed -e 's@/usr/local@'\$out'@g' -i Makefile.m4 Makefile ") [minInit doUnpack]; in stdenv.mkDerivation rec { name = "dvd+rw-tools-"+version; builder = writeScript (name + "-builder") - (textClosure localDefs [preBuild doMakeInstall doForceShare doPropagate]); + (textClosure localDefs [preBuild addInputs (doDump "0") doMakeInstall doForceShare doPropagate]); meta = { description = " DVD+RW tools. diff --git a/pkgs/servers/xmpp/ejabberd/builder.sh b/pkgs/servers/xmpp/ejabberd/builder.sh index 4abf8da0682..3d746054f38 100644 --- a/pkgs/servers/xmpp/ejabberd/builder.sh +++ b/pkgs/servers/xmpp/ejabberd/builder.sh @@ -3,7 +3,7 @@ buildInputs="$expat $erlang $zlib $openssl" source $stdenv/setup tar xfvz $src -cd $name/src +cd ejabberd-*/src ./configure --prefix=$out make make install diff --git a/pkgs/servers/xmpp/ejabberd/default.nix b/pkgs/servers/xmpp/ejabberd/default.nix index 8ce1b0912de..c3c88337c5d 100644 --- a/pkgs/servers/xmpp/ejabberd/default.nix +++ b/pkgs/servers/xmpp/ejabberd/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, expat, erlang, zlib, openssl}: stdenv.mkDerivation { - name = "ejabberd-1.1.4"; + name = "ejabberd-2.0.0-rc1"; builder = ./builder.sh; src = fetchurl { - url = http://www.process-one.net/downloads/ejabberd/1.1.4/ejabberd-1.1.4.tar.gz; - md5 = "65e9cd346f11a28afbacfe1d7be3a33b"; + url = http://www.process-one.net/downloads/ejabberd/2.0.0-rc1/ejabberd-2.0.0-rc1.tar.gz; + sha256 = "02ldssvsy0rkvxm96018fpk5lc3iqgkrira9cw1ym2snas0k8nzy"; }; inherit expat erlang zlib openssl; } diff --git a/pkgs/tools/compression/lzma/default.nix b/pkgs/tools/compression/lzma/default.nix new file mode 100644 index 00000000000..67ef9c3add1 --- /dev/null +++ b/pkgs/tools/compression/lzma/default.nix @@ -0,0 +1,18 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "lzma-4.32.5"; + + src = fetchurl { + url = http://tukaani.org/lzma/lzma-4.32.5.tar.gz; + sha256 = "1mqy1biy46gqky6n3gyr2l395hwckh0xyi96waz5p5x8mgp372ch"; + }; + + CFLAGS = "-O3"; + CXXFLAGS = "-O3"; + + meta = { + homepage = http://tukaani.org/lzma/; + description = "The LZMA compression program"; + }; +} diff --git a/pkgs/tools/misc/dosfstools/2.11deb.nix b/pkgs/tools/misc/dosfstools/2.11deb.nix new file mode 100644 index 00000000000..13f327dcff5 --- /dev/null +++ b/pkgs/tools/misc/dosfstools/2.11deb.nix @@ -0,0 +1,33 @@ +args : with args; with builderDefs {src="";} null; + let patch = + fetchurl { + url = http://ftp.de.debian.org/debian/pool/main/d/dosfstools/dosfstools_2.11-2.3.diff.gz; + sha256 = "0bzjhpgg4ih6c76ax8byis9vxgkr2c7bbbshqrkfq8j7ar48n5ld"; + }; + localDefs = builderDefs (rec { + src = /* put a fetchurl here */ + fetchurl { + url = http://ftp.de.debian.org/debian/pool/main/d/dosfstools/dosfstools_2.11.orig.tar.gz; + sha256 = "1154k0y04npblgac81p4pcmglilk1ldrqll4hvbrwgcb7096vb0f"; + }; + preBuild = FullDepEntry ('' + gunzip < ${patch} | patch -Np1 + '')["minInit" "doUnpack"]; + + buildInputs = []; + configureFlags = []; + makeFlags = " PREFIX=$out "; + }) null; /* null is a terminator for sumArgs */ + in with localDefs; +stdenv.mkDerivation rec { + name = "dosfstools-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [preBuild "doMakeInstall" doForceShare doPropagate]); + meta = { + description = " + Dosfstools - utilities for vfat file system. +"; + homepage = "http://sixpak.org/dosfstools/dosfstools-2.8vb2.tar.gz"; + }; +} diff --git a/pkgs/tools/networking/nc6/1.0.nix b/pkgs/tools/networking/nc6/1.0.nix new file mode 100644 index 00000000000..1a28e3b0cad --- /dev/null +++ b/pkgs/tools/networking/nc6/1.0.nix @@ -0,0 +1,25 @@ +args : with args; with builderDefs {src="";} null; +let localDefs = builderDefs (rec { + src = /* put a fetchurl here */ + fetchurl { + url = ftp://ftp.deepspace6.net/pub/ds6/sources/nc6/nc6-1.0.tar.bz2; + sha256 = "01l28zv1yal58ilfnz6albdzqqxzsx3a58vmc14r9gv0bahffdgb"; + }; + + buildInputs = []; + configureFlags = []; + }) null; /* null is a terminator for sumArgs */ +in with localDefs; +stdenv.mkDerivation rec { + name = "nc6-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + nc6 - one more netcat, IPv6 support included. + "; + homepage = "http://www.deepspace6.net/projects/netcat6.html"; + }; +} + diff --git a/pkgs/tools/networking/socat/1.6.0.0.nix b/pkgs/tools/networking/socat/1.6.0.0.nix new file mode 100644 index 00000000000..1e176f47720 --- /dev/null +++ b/pkgs/tools/networking/socat/1.6.0.0.nix @@ -0,0 +1,34 @@ +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs (rec { + src = /* put a fetchurl here */ + fetchurl { + url = http://www.dest-unreach.org/socat/download/socat-1.6.0.0.tar.bz2; + sha256 = "1j01iazwfr63q71cfcfzrdz8digqlg3ldhlbb72yl5mn9awr0w0m"; + }; + patches = [ + (fetchurl { + url = http://www.dest-unreach.org/socat/contrib/socat-servicenames.patch; + sha256 = "1r8zd6mk257n01i34i5syxl2k6fr35nlr7bqs9sfc79irjl62z66"; + }) + (fetchurl { + url = http://www.dest-unreach.org/socat/contrib/socat-maxfds.patch.gz; + sha256 = "0fsn0k0qsrdbjbhj09a6kxfsxb7yhxs4cad26znd9naginsj7pxa"; + }) + ]; + buildInputs = [openssl]; + configureFlags = []; + }) null; /* null is a terminator for sumArgs */ + in with localDefs; +stdenv.mkDerivation rec { + name = "socat-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [doPatch doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Socat, one more analogue of netcat, but not mimicking it. + 'netcat++' (extended design, new implementation) +"; + homepage = "http://www.dest-unreach.org/socat/"; + }; +} diff --git a/pkgs/tools/networking/socat/2.0.0-b1.nix b/pkgs/tools/networking/socat/2.0.0-b1.nix new file mode 100644 index 00000000000..5fb3fee7879 --- /dev/null +++ b/pkgs/tools/networking/socat/2.0.0-b1.nix @@ -0,0 +1,25 @@ +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs (rec { + src = /* put a fetchurl here */ + fetchurl { + url = http://www.dest-unreach.org/socat/download/socat-2.0.0-b1.tar.bz2; + sha256 = "0ybd5fw22icl10r33k987rskh9gvysm1jph90a1pfdjj57cy44fk"; + }; + + buildInputs = [openssl]; + configureFlags = []; + }) null; /* null is a terminator for sumArgs */ + in with localDefs; +stdenv.mkDerivation rec { + name = "socat-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [doPatch doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + Socat, one more analogue of netcat, but not mimicking it. + 'netcat++' (extended design, new implementation) +"; + homepage = "http://www.dest-unreach.org/socat/"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0f211793b1a..eaf25a2a069 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -417,6 +417,13 @@ rec { inherit fetchurl stdenv coreutils; }); + dosfstoolsFun = lib.sumArgs (selectVersion ../tools/misc/dosfstools "2.11deb") + { + inherit builderDefs; + }; + + dosfstools = dosfstoolsFun null; + ed = import ../tools/text/ed { inherit fetchurl stdenv; }; @@ -612,6 +619,10 @@ rec { inherit fetchurl stdenv ghc tetex polytable; }; + lzma = import ../tools/compression/lzma { + inherit fetchurl stdenv; + }; + man = import ../tools/misc/man { inherit fetchurl stdenv db4 groff; }; @@ -639,6 +650,12 @@ rec { inherit fetchurl stdenv gettext; }; + nc6Fun = lib.sumArgs (selectVersion ../tools/networking/nc6 "1.0") { + inherit builderDefs; + }; + + nc6 = nc6Fun null; + ncat = import ../tools/networking/ncat { inherit fetchurl stdenv openssl; }; @@ -763,6 +780,12 @@ rec { smbfsFuse = smbfsFuseFun null; + socatFun = lib.sumArgs (selectVersion ../tools/networking/socat "1.6.0.0") { + inherit builderDefs openssl; + }; + + socat = socatFun null; + sudo = import ../tools/security/sudo { inherit fetchurl stdenv coreutils pam; }; @@ -1588,11 +1611,13 @@ rec { inherit fetchurl stdenv; }; - ltrace = import ../development/tools/misc/ltrace { + ltraceFun = lib.sumArgs (selectVersion ../development/tools/misc/ltrace "0.5-3deb") { inherit fetchurl stdenv builderDefs stringsWithDeps lib; elfutils = elfutilsFun {version = "0.127";} null; }; + ltrace = ltraceFun null; + mk = import ../development/tools/build-managers/mk { inherit fetchurl stdenv; }; @@ -4228,7 +4253,7 @@ rec { inherit (xlibs) libX11 libXft libXext libXinerama libXrandr; }; - imagemagickFun = lib.sumArgs (import ../applications/graphics/ImageMagick) { + imagemagickFun = lib.sumArgs (selectVersion ../applications/graphics/ImageMagick "6.3.8-5" ) { inherit stdenv fetchurl libtool; }; From a4512a4a49fbb1190a2bdf56bb1f5b1f590117e1 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:34:49 +0000 Subject: [PATCH 246/320] Mediastreamer: compilable svn path=/nixpkgs/branches/stdenv-updates/; revision=10569 --- .../mediastreamer/2.2.0-cvs20080207.nix | 10 +++- .../libraries/mediastreamer/h264.patch | 12 +++++ .../libraries/mediastreamer/plugins.patch | 49 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +- 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/libraries/mediastreamer/h264.patch create mode 100644 pkgs/development/libraries/mediastreamer/plugins.patch diff --git a/pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix b/pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix index 221954aa3fe..6391ce4dd6c 100644 --- a/pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix +++ b/pkgs/development/libraries/mediastreamer/2.2.0-cvs20080207.nix @@ -1,7 +1,7 @@ args: with args; stdenv.mkDerivation rec { - name = "mediastreamer-" + version; + name = "mediastreamer2-" + version; # This url is not related to mediastreamer. fetchcvs doesn't work on my laptop, # so I've created cvs snapshot and put it to my server. @@ -10,7 +10,13 @@ stdenv.mkDerivation rec { sha256 = "1nmvyqh4x3nsw4qbj754jwagj9ia183kvp8valdr7m44my0sw5p1"; }; - buildInputs = [automake]; + buildInputs = [automake libtool autoconf pkgconfig]; + + propagatedBuildInputs = [alsaLib ffmpeg speex ortp]; preConfigure = "./autogen.sh"; + + patches = [ ./h264.patch ./plugins.patch ]; + + configureFlags = "--enable-external-ortp --enable-shared --disable-static"; } diff --git a/pkgs/development/libraries/mediastreamer/h264.patch b/pkgs/development/libraries/mediastreamer/h264.patch new file mode 100644 index 00000000000..0c6dc9e9109 --- /dev/null +++ b/pkgs/development/libraries/mediastreamer/h264.patch @@ -0,0 +1,12 @@ +diff --git a/tests/mediastream.c b/tests/mediastream.c +index 12e1605..cdc8cd1 100644 +--- a/tests/mediastream.c ++++ b/tests/mediastream.c +@@ -144,7 +144,6 @@ int main(int argc, char * argv[]) + rtp_profile_set_payload(&av_profile,97,&payload_type_theora); + rtp_profile_set_payload(&av_profile,99,&payload_type_mp4v); + rtp_profile_set_payload(&av_profile,100,&payload_type_x_snow); +- rtp_profile_set_payload(&av_profile,102,&payload_type_h264); + #endif + if (argc<4) { + printf(usage); diff --git a/pkgs/development/libraries/mediastreamer/plugins.patch b/pkgs/development/libraries/mediastreamer/plugins.patch new file mode 100644 index 00000000000..e82b85035f0 --- /dev/null +++ b/pkgs/development/libraries/mediastreamer/plugins.patch @@ -0,0 +1,49 @@ +diff --git a/src/mscommon.c b/src/mscommon.c +index 1a12b2f..2399444 100644 +--- a/src/mscommon.c ++++ b/src/mscommon.c +@@ -428,6 +428,7 @@ static MSSndCardDesc * ms_snd_card_descs[]={ + void ms_init(){ + int i; + MSSndCardManager *cm; ++ char *ms_plugin_path; + + #ifdef __APPLE__ + NSApplicationLoad(); +@@ -451,7 +452,35 @@ void ms_init(){ + } + + ms_message("Loading plugins"); +- ms_load_plugins(PACKAGE_PLUGINS_DIR); ++ ms_plugin_path = getenv("MS_PLUGIN_PATH"); ++ do ++ { ++ if (!ms_plugin_path) ++ { ++ ms_load_plugins(PACKAGE_PLUGINS_DIR); ++ break; ++ } ++ char *dup_plugins_path = strdup (ms_plugin_path); ++ char *cur_plugins_dir = dup_plugins_path; ++ if (!dup_plugins_path) ++ { ++ ms_message("Failed to duplicate plugins path, not loading plugins"); ++ break; ++ } ++ while (1) ++ { ++ char *next_delimiter = strchr(cur_plugins_dir, ":"); ++ if (next_delimiter) ++ next_delimiter[0] = '\0'; ++ ms_load_plugins(cur_plugins_dir); ++ if (!next_delimiter) ++ break; ++ cur_plugins_dir = next_delimiter + 1; ++ } ++ free(dup_plugins_path); ++ } ++ while (0); ++ + ms_message("ms_init() done"); + } + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index eaf25a2a069..b38ecf37298 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2415,7 +2415,9 @@ rec { #failed to build mediastreamerFun = lib.sumArgs (selectVersion ../development/libraries/mediastreamer "2.2.0-cvs20080207") { - inherit fetchurl stdenv automake; + inherit fetchurl stdenv automake libtool autoconf alsaLib pkgconfig speex + ortp; + ffmpeg = ffmpeg_svn; }; mediastreamer = mediastreamerFun null; From f4eda0eb22aa81deeba8c4a494f6d2ed42a4f45a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:35:03 +0000 Subject: [PATCH 247/320] ilbc and msilbc libraries added svn path=/nixpkgs/branches/stdenv-updates/; revision=10570 --- pkgs/development/libraries/ilbc/default.nix | 17 +++++++++++++++ pkgs/development/libraries/msilbc/2.0.0.nix | 24 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 8 +++++++ 3 files changed, 49 insertions(+) create mode 100644 pkgs/development/libraries/ilbc/default.nix create mode 100644 pkgs/development/libraries/msilbc/2.0.0.nix diff --git a/pkgs/development/libraries/ilbc/default.nix b/pkgs/development/libraries/ilbc/default.nix new file mode 100644 index 00000000000..360644cf911 --- /dev/null +++ b/pkgs/development/libraries/ilbc/default.nix @@ -0,0 +1,17 @@ +args: with args; +stdenv.mkDerivation { + name = "ilbc-rfc3951"; + +# I'm too lazy to extract .c source from rfc3951. So, I'm using autotools stuff +# from linphone project + src = stdenv.mkDerivation { + name = "ilbc-rfc3951.tar.gz"; + src = msilbc.src; + outputHashAlgo = "sha256"; + outputHash = "0f6scsp72bz2ifscd8c0x57ipcxi2i4a9b4nwlnwx7a7a0hrazhj"; + phases = "unpackPhase installPhase"; + installPhase = "cp ilbc-rfc3951.tar.gz \${out}"; + }; + + configureFlags = "--enable-shared --disable-static"; +} diff --git a/pkgs/development/libraries/msilbc/2.0.0.nix b/pkgs/development/libraries/msilbc/2.0.0.nix new file mode 100644 index 00000000000..8bc8f2a6c1d --- /dev/null +++ b/pkgs/development/libraries/msilbc/2.0.0.nix @@ -0,0 +1,24 @@ +args: with args; +stdenv.mkDerivation rec { + name = "msilbc-" + version; + src = fetchurl { + url = "http://download.savannah.gnu.org/releases/linphone/plugins/sources/${name}.tar.gz"; + sha256 = "0ifydb7qmpync56l4hbrp36n5wrb7gadb76isp643s6wsg7l743j"; + }; + + patchPhase = "sed -i /MS_FILTER_SET_FMTP/d ilbc.c"; + + propagatedBuildInputs = [ilbc mediastreamer]; + buildInputs = [pkgconfig]; + + buildPhase = '' + cc -fPIC -c -pthread -o ilbc.o ilbc.c `pkg-config --cflags mediastreamer` + echo "next" + cc `pkg-config --libs mediastreamer` -shared -pthread -o libilbc.so + ''; + + installPhase = " + ensureDir \${out}/lib/mediastreamer/plugins + cp libilbc.so \${out}/lib/mediastreamer/plugins + "; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b38ecf37298..3f081a74b95 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2088,6 +2088,10 @@ rec { inherit fetchurl stdenv; }; + ilbc = import ../development/libraries/ilbc { + inherit stdenv msilbc; + }; + ilmbase = import ../development/libraries/ilmbase { inherit fetchurl stdenv; }; @@ -2439,6 +2443,10 @@ rec { inherit fetchurl stdenv; }; + msilbc = selectVersion ../development/libraries/msilbc "2.0.0" { + inherit fetchurl stdenv ilbc mediastreamer pkgconfig; + }; + mysqlConnectorODBC = import ../development/libraries/mysql-connector-odbc { inherit fetchurl stdenv mysql libtool zlib unixODBC; }; From 8a3676ebf6a06e031c6779fa3b99f1ae006a767b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:35:17 +0000 Subject: [PATCH 248/320] qt-4: updated to 772114 svn path=/nixpkgs/branches/stdenv-updates/; revision=10571 --- pkgs/development/libraries/qt-4/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/qt-4/default.nix b/pkgs/development/libraries/qt-4/default.nix index 2d05ad22db0..9d7c1e336d6 100644 --- a/pkgs/development/libraries/qt-4/default.nix +++ b/pkgs/development/libraries/qt-4/default.nix @@ -14,7 +14,7 @@ rec { -opengl -xrender -xrandr -xinerama -xcursor -qt-sql-mysql -qdbus -cups -glib -xfixes -fontconfig -I${freetype}/include/freetype2"; - patchPhase = "sed -e 's@/bin/pwd@pwd@' -i configure; sed -e 's@/usr@/FOO@' -i config.tests/*/*.test -i mkspecs/*/*.conf"; + patchPhase = "sed -i 's@/bin/pwd@pwd@' configure; sed -i 's@/usr@/FOO@' config.tests/*/*.test mkspecs/*/*.conf"; }; in rec { trolltech = stdenv.mkDerivation (common // { @@ -29,8 +29,8 @@ rec { name = "qt-kde-4.3svn"; src = fetchsvn { url = svn://anonsvn.kde.org/home/kde/trunk/qt-copy; - rev = "761061"; - sha256 = "0mwbmzgqs9psw6hyh913g1jgvgr702qh4kfi2pvmrpkqvyagysg9"; + rev = "772114"; + sha256 = "0nd437yikz5skyqfczk0376rbgdgmsfc9gpqw207gqv6x5hcp3rj"; }; patchPhase = "mkdir .svn; bash apply_patches;" + common.patchPhase; }); From 053ea5ebe6f144b9e13f74e5ce466162f6cc8754 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:35:30 +0000 Subject: [PATCH 249/320] Fix enabling switching to kernels not already running (depmod uses uname-r as default to look for modules) svn path=/nixpkgs/branches/stdenv-updates/; revision=10572 --- pkgs/os-specific/linux/module-init-tools/aggregator.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/module-init-tools/aggregator.nix b/pkgs/os-specific/linux/module-init-tools/aggregator.nix index ed30be250d2..76111eacfd2 100644 --- a/pkgs/os-specific/linux/module-init-tools/aggregator.nix +++ b/pkgs/os-specific/linux/module-init-tools/aggregator.nix @@ -18,7 +18,8 @@ done rm -rf nix-support cd lib/modules/ rm */modules.* -MODULE_DIR=$PWD/ depmod -a * +# linux-* will pass the new kernel version to depmod to take rather than `uname -r` (see man page) +MODULE_DIR=$PWD/ depmod -a $(basename lib/modules/2.*) cd $out/ '') [minInit addInputs defEnsureDir]; in From 7b9937f24d46f5afba1947cab66dcfbd139fd279 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:35:43 +0000 Subject: [PATCH 250/320] * Driver for the Go 7007, used in the Plextor ConvertX USB TV tuner. Thanks to Martin Bravenboer for donating the hardware :-) * Latest udev. svn path=/nixpkgs/branches/stdenv-updates/; revision=10573 --- pkgs/os-specific/linux/udev/default.nix | 6 +-- pkgs/os-specific/linux/wis-go7007/default.nix | 53 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++ 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 pkgs/os-specific/linux/wis-go7007/default.nix diff --git a/pkgs/os-specific/linux/udev/default.nix b/pkgs/os-specific/linux/udev/default.nix index 14393f59958..cb7bf4fabd5 100644 --- a/pkgs/os-specific/linux/udev/default.nix +++ b/pkgs/os-specific/linux/udev/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "udev-112"; + name = "udev-118"; src = fetchurl { - url = mirror://kernel/linux/utils/kernel/hotplug/udev-112.tar.bz2; - sha256 = "0vhqnli4va3yzvr90rcpbgs42sphpk9prdis9x2qmlmdynzangw2"; + url = mirror://kernel/linux/utils/kernel/hotplug/udev-118.tar.bz2; + sha256 = "1i488wqm7i6nz6gidbkxkb47hr427ika48i8imwrvvnpg1kzhska"; }; preBuild = "makeFlagsArray=(etcdir=$out/etc sbindir=$out/sbin usrbindir=$out/bin usrsbindir=$out/sbin mandir=$out/share/man INSTALL='install -c')"; preInstall = "installFlagsArray=(udevdir=dummy)"; diff --git a/pkgs/os-specific/linux/wis-go7007/default.nix b/pkgs/os-specific/linux/wis-go7007/default.nix new file mode 100644 index 00000000000..8637cc5d68e --- /dev/null +++ b/pkgs/os-specific/linux/wis-go7007/default.nix @@ -0,0 +1,53 @@ +{stdenv, fetchurl, kernel, ncurses}: + +stdenv.mkDerivation { + name = "wis-go7007-linux-0.9.8"; + + src = fetchurl { + url = http://gentoo.osuosl.org/distfiles/wis-go7007-linux-0.9.8.tar.bz2; + sha256 = "06lvlz42c5msvwc081p8vjcbv8qq1j1g1myxhh27xi8zi06n1mzg"; + }; + + patches = map fetchurl [ + { url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/media-tv/wis-go7007/files/wis-go7007-0.9.8-kernel-2.6.17.diff?rev=1.1"; + sha256 = "0cizbg82fdl5byhvpkdx64qa02xcahdyddi2l2jn95sxab28a5yg"; + } + { url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/media-tv/wis-go7007/files/wis-go7007-0.9.8-fix-udev.diff?rev=1.2"; + sha256 = "1985lcb7gh5zsf3lm0b43zd6q0cb9q4z376n9q060bh99yw6m0w1"; + } + { url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/media-tv/wis-go7007/files/snd.patch?rev=1.1"; + sha256 = "0a6dz1l16pz1fk77s3awxh635cacbivfcfnd1carbx5jp2gq3jna"; + } + ]; + + buildInputs = [ncurses]; + + preBuild = '' + # Urgh, we need the complete kernel sources for some header + # files. So unpack the original kernel source tarball and copy + # the configured include directory etc. on top of it. + kernelVersion=$(cd ${kernel}/lib/modules && ls) + kernelBuild=$(echo ${kernel}/lib/modules/$kernelVersion/source) + tar xvfj ${kernel.src} + kernelSource=$(echo $(pwd)/linux-*) + cp -prd $kernelBuild/* $kernelSource + + #includeDir=$out/lib/modules/$kernelVersion/source/include/linux + includeDir=$TMPDIR/scratch + substituteInPlace Makefile \ + --replace '$(DESTDIR)$(KSRC)/include/linux' $includeDir + ensureDir $includeDir + ensureDir $out/etc/hotplug/usb + ensureDir $out/etc/udev/rules.d + + makeFlagsArray=(KERNELSRC=$kernelSource \ + FIRMWARE_DIR=/firmware FXLOAD=false \ + DESTDIR=$out SKIP_DEPMOD=1 \ + USE_UDEV=y) + ''; # */ + + meta = { + description = "Kernel module for the Micronas GO7007, used in a number of USB TV devices"; + homepage = http://oss.wischip.com/; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3f081a74b95..018784c1937 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3736,6 +3736,10 @@ rec { inherit fetchurl stdenv; }; + wis_go7007 = import ../os-specific/linux/wis-go7007 { + inherit fetchurl stdenv kernel ncurses; + }; + wpa_supplicant = import ../os-specific/linux/wpa_supplicant { inherit fetchurl stdenv openssl; }; From 9f913848192e5ac6bbcd217b98262d298da036e0 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:35:57 +0000 Subject: [PATCH 251/320] Added nc6, updated xkeyboard-config svn path=/nixpkgs/branches/stdenv-updates/; revision=10574 --- pkgs/data/misc/xkeyboard-config/0.9.nix | 23 +++++++++++++++++++ pkgs/data/misc/xkeyboard-config/1.2.nix | 22 ++++++++++++++++++ .../xkeyboard-config/level3-deadkeys-us-intl | 2 +- pkgs/top-level/all-packages.nix | 14 +++++++++-- 4 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 pkgs/data/misc/xkeyboard-config/0.9.nix create mode 100644 pkgs/data/misc/xkeyboard-config/1.2.nix diff --git a/pkgs/data/misc/xkeyboard-config/0.9.nix b/pkgs/data/misc/xkeyboard-config/0.9.nix new file mode 100644 index 00000000000..c7c92cd6c27 --- /dev/null +++ b/pkgs/data/misc/xkeyboard-config/0.9.nix @@ -0,0 +1,23 @@ +args: with args; + +stdenv.mkDerivation { + name = "xkeyboard-config-0.9"; + + src = fetchurl { + url = http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-0.9.tar.bz2; + sha256 = "0zbpprhlv8ggsvgnwqw8d4cx0ry86szm36ghigwb1sn46q0c915v"; + }; + + buildInputs = [perl perlXMLParser xkbcomp]; + + ICONV = "iconv"; + + preConfigure = " + configureFlags=\"--with-xkb-base=$out/etc/X11/xkb -with-xkb-rules-symlink=xorg,xfree86\" + "; + + postInstall = '' + rm ''${out}/etc/X11/xkb/compiled + cat ${./level3-deadkeys-us-intl} >> $out/etc/X11/xkb/symbols/us + ''; +} diff --git a/pkgs/data/misc/xkeyboard-config/1.2.nix b/pkgs/data/misc/xkeyboard-config/1.2.nix new file mode 100644 index 00000000000..de67b00baea --- /dev/null +++ b/pkgs/data/misc/xkeyboard-config/1.2.nix @@ -0,0 +1,22 @@ +args: with args; + +stdenv.mkDerivation { + name = "xkeyboard-config-${version}"; + + src = fetchurl { + url = http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-1.2.tar.bz2; + sha256 = "1xr7vfgabgyggnkjb56a0bd39yxjhyrldcdsq9pqnw3izfb6i1b4"; + }; + buildInputs = [perl perlXMLParser xkbcomp gettext]; + + ICONV = "iconv"; + + preConfigure = " + configureFlags=\"--with-xkb-base=$out/etc/X11/xkb -with-xkb-rules-symlink=xorg,xfree86\" + "; + + postInstall = '' + rm ''${out}/etc/X11/xkb/compiled || true; + cat ${./level3-deadkeys-us-intl} | sed -e 's/altgr-intl/altgr-intl-rich/g' >> $out/etc/X11/xkb/symbols/us + ''; +} diff --git a/pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl b/pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl index 6b7d263da7f..91d21f76143 100644 --- a/pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl +++ b/pkgs/data/misc/xkeyboard-config/level3-deadkeys-us-intl @@ -44,7 +44,7 @@ xkb_symbols "altgr-intl" { key { [ 3, numbersign, threesuperior, dead_macron ] }; key { [ 4, dollar, currency, sterling ] }; key { [ 5, percent, EuroSign ] }; - key { [ 6, asciicircum, dead_circumflex ] }; + key { [ 6, asciicircum, dead_circumflex, dead_stroke ] }; key { [ 7, ampersand, dead_horn ] }; key { [ 8, asterisk, dead_ogonek ] }; key { [ 9, parenleft, leftsinglequotemark,dead_breve ] }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 018784c1937..2787f9119a1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3824,11 +3824,14 @@ rec { inherit fetchurl stdenv cabextract; }; - xkeyboard_config = import ../data/misc/xkeyboard-config { - inherit fetchurl stdenv perl perlXMLParser; + xkeyboard_configFun = lib.sumArgs (selectVersion ../data/misc/xkeyboard-config ) { + inherit fetchurl stdenv perl perlXMLParser gettext; inherit (xlibs) xkbcomp; + version = "1.2"; }; + xkeyboard_config = xkeyboard_configFun null; + ### APPLICATIONS @@ -5194,6 +5197,13 @@ rec { inherit fetchurl stdenv flex bison zlib libpng ncurses ed; }; + /*tetexX11 = import ../misc/tex/tetex { + inherit fetchurl stdenv flex bison zlib libpng ncurses ed; + inherit (xlibs) libX11 libXext libXmu libXaw libXt libXpm; + inherit freetype t1lib; + builderX11 = true; + };*/ + texFunctions = import ../misc/tex/nix { inherit stdenv perl tetex graphviz ghostscript; }; From b7b4efd867df6b850a0423eec1898dcc65354ead Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:36:10 +0000 Subject: [PATCH 252/320] Added socat, updated zsh svn path=/nixpkgs/branches/stdenv-updates/; revision=10575 --- pkgs/shells/zsh/{default.nix => 4.3.4.nix} | 2 +- pkgs/shells/zsh/4.3.5.nix | 22 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 ++++- 3 files changed, 27 insertions(+), 2 deletions(-) rename pkgs/shells/zsh/{default.nix => 4.3.4.nix} (88%) create mode 100644 pkgs/shells/zsh/4.3.5.nix diff --git a/pkgs/shells/zsh/default.nix b/pkgs/shells/zsh/4.3.4.nix similarity index 88% rename from pkgs/shells/zsh/default.nix rename to pkgs/shells/zsh/4.3.4.nix index 0b227b031b8..ea9a82cf683 100644 --- a/pkgs/shells/zsh/default.nix +++ b/pkgs/shells/zsh/4.3.4.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, coreutils, ncurses}: +args: with args; stdenv.mkDerivation { name = "zsh-4.3.4"; diff --git a/pkgs/shells/zsh/4.3.5.nix b/pkgs/shells/zsh/4.3.5.nix new file mode 100644 index 00000000000..227da7995fb --- /dev/null +++ b/pkgs/shells/zsh/4.3.5.nix @@ -0,0 +1,22 @@ +args: with args; +let documentation = fetchurl { + url = http://www.math.technion.ac.il/pub/zsh/zsh-4.3.5-doc.tar.bz2; + sha256 = "0jf35xibp8wfka7rdk9q8spkwprlhjx1sp7vp6img8wks12cvlkx"; + }; +in +stdenv.mkDerivation { + name = "zsh-${version}"; + + src = fetchurl { + url = http://www.math.technion.ac.il/pub/zsh/zsh-4.3.5.tar.bz2; + sha256 = "0191j3liflkjrj39i2yrs3ab9jcx4zd93rirx3j17dymfgqlvrzb"; + }; + configureFlags = "--with-tcsetpgrp --enable-maildir-support --enable-multibyte"; + + postInstall = '' + ensureDir $out/share/ + tar xf ${documentation} -C $out/share + ''; + + buildInputs = [ncurses coreutils]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2787f9119a1..c95a8264f8a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -936,10 +936,13 @@ rec { inherit fetchurl stdenv ncurses; }; - zsh = import ../shells/zsh { + zshFun = lib.sumArgs (selectVersion ../shells/zsh) { inherit fetchurl stdenv ncurses coreutils; + version = "4.3.5"; }; + zsh = zshFun null; + ### DEVELOPMENT / COMPILERS From 63e46d78d03edbafc8dcea1bcf41c71f1b6347ea Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:36:23 +0000 Subject: [PATCH 253/320] Fixed stable socat (applied patch by Nicolas Pierron); updated Tk installation step for XMaxima compatibility svn path=/nixpkgs/branches/stdenv-updates/; revision=10576 --- pkgs/development/libraries/tk/8.4.16.nix | 18 ++++++++++++++++++ pkgs/development/libraries/tk/builder.sh | 10 ---------- pkgs/development/libraries/tk/default.nix | 12 ------------ pkgs/top-level/all-packages.nix | 5 ++++- 4 files changed, 22 insertions(+), 23 deletions(-) create mode 100644 pkgs/development/libraries/tk/8.4.16.nix delete mode 100644 pkgs/development/libraries/tk/builder.sh delete mode 100644 pkgs/development/libraries/tk/default.nix diff --git a/pkgs/development/libraries/tk/8.4.16.nix b/pkgs/development/libraries/tk/8.4.16.nix new file mode 100644 index 00000000000..c43e53cc827 --- /dev/null +++ b/pkgs/development/libraries/tk/8.4.16.nix @@ -0,0 +1,18 @@ +args: with args; + +stdenv.mkDerivation { + name = "tk-${version}"; + src = fetchurl { + url = "mirror://sourceforge/tcl/tk${version}-src.tar.gz"; + sha256 = "0cciavzd05bpm5yfppid0s0vsf8kabwia9620vgvi26sv1gjgwhb"; + }; + postInstall = '' + echo -e '#! /bin/sh \n $( readlink -f $( which wish${__substring 0 3 version}) ) "$@"' >$out/bin/wish + chmod a+x $out/bin/wish + ''; + configureFlags="--with-tcl=${tcl}/lib"; + preConfigure = "cd unix"; + + buildInputs = [tcl x11]; + inherit tcl; +} diff --git a/pkgs/development/libraries/tk/builder.sh b/pkgs/development/libraries/tk/builder.sh deleted file mode 100644 index 999488a3531..00000000000 --- a/pkgs/development/libraries/tk/builder.sh +++ /dev/null @@ -1,10 +0,0 @@ -source $stdenv/setup - -configureFlags="--with-tcl=$tcl/lib" -preConfigure() { - cd unix -} - -preConfigure=preConfigure - -genericBuild diff --git a/pkgs/development/libraries/tk/default.nix b/pkgs/development/libraries/tk/default.nix deleted file mode 100644 index 9e0a6b8c0da..00000000000 --- a/pkgs/development/libraries/tk/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, tcl, x11}: - -stdenv.mkDerivation { - name = "tk-8.4.16"; - builder = ./builder.sh; - src = fetchurl { - url = mirror://sourceforge/tcl/tk8.4.16-src.tar.gz; - sha256 = "0cciavzd05bpm5yfppid0s0vsf8kabwia9620vgvi26sv1gjgwhb"; - }; - buildInputs = [tcl x11]; - inherit tcl; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c95a8264f8a..c3a7ed9c89d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2649,10 +2649,13 @@ rec { qt = qt4; }; - tk = import ../development/libraries/tk { + tkFun = lib.sumArgs (selectVersion ../development/libraries/tk) { inherit fetchurl stdenv tcl x11; + version = "8.4.16"; }; + tk = tkFun null; + unixODBC = import ../development/libraries/unixODBC { inherit fetchurl stdenv; }; From 0d4ff25ce9791e9bafe7c1818047c19311bd1d8c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:36:37 +0000 Subject: [PATCH 254/320] * Added fxload, a tool to upload firmware to Cypress EZ-USB microcontrollers. svn path=/nixpkgs/branches/stdenv-updates/; revision=10577 --- pkgs/os-specific/linux/fxload/default.nix | 39 +++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +++ 2 files changed, 43 insertions(+) create mode 100644 pkgs/os-specific/linux/fxload/default.nix diff --git a/pkgs/os-specific/linux/fxload/default.nix b/pkgs/os-specific/linux/fxload/default.nix new file mode 100644 index 00000000000..0eb37c0d50e --- /dev/null +++ b/pkgs/os-specific/linux/fxload/default.nix @@ -0,0 +1,39 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "fxload-2002_04_11"; + + src = fetchurl { + url = mirror://sourceforge/linux-hotplug/fxload-2002_04_11.tar.gz; + sha256 = "1hql93bp3dxrv1p67nc63xsbqwljyynm997ysldrc3n9ifi6s48m"; + }; + + patches = [ + # Will be needed after linux-headers is updated to >= 2.6.21. + #(fetchurl { + # url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/sys-apps/fxload/files/fxload-20020411-linux-headers-2.6.21.patch?rev=1.1"; + # sha256 = "0ij0c8nr1rbyl5wmyv1cklhkxglvsqz32h21cjw4bjm151kgmk7p"; + #}) + + (fetchurl { + url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/sys-apps/fxload/files/fxload-20020411-linux-headers-2.6.19.patch?rev=1.1"; + sha256 = "05q7c1yvi479q5z91s9ra2rgn589qljgmdl6phqf30pgzf09r0r6"; + }) + ]; + + preBuild = '' + substituteInPlace Makefile --replace /usr / + makeFlagsArray=(INSTALL=install prefix=$out) + ''; + + preInstall = '' + ensureDir $out/sbin + ensureDir $out/share/man/man8 + ensureDir $out/share/usb + ''; + + meta = { + homepage = http://linux-hotplug.sourceforge.net/?selected=usb; + description = "Tool to upload firmware to Cypress EZ-USB microcontrollers"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c3a7ed9c89d..b4f2b882f31 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3354,6 +3354,10 @@ rec { inherit fetchurl stdenv utillinux; }; + fxload = import ../os-specific/linux/fxload { + inherit fetchurl stdenv; + }; + genext2fs = import ../os-specific/linux/genext2fs { inherit fetchurl stdenv; }; From 591ae36522a0f8906702b635a9014fafcf0191ff Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:36:51 +0000 Subject: [PATCH 255/320] 2.4.3 -> 2.4.4, still Python warnings svn path=/nixpkgs/branches/stdenv-updates/; revision=10578 --- pkgs/applications/graphics/gimp/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/graphics/gimp/default.nix b/pkgs/applications/graphics/gimp/default.nix index a591091d92f..5ba3c11184d 100644 --- a/pkgs/applications/graphics/gimp/default.nix +++ b/pkgs/applications/graphics/gimp/default.nix @@ -4,10 +4,10 @@ }: stdenv.mkDerivation { - name = "gimp-2.4.3"; + name = "gimp-2.4.4"; src = fetchurl { - url = ftp://ftp.gtk.org/pub/gimp/v2.4/gimp-2.4.3.tar.bz2; - sha256 = "1m9gdm6wa33x1bymy3c2d006ks0acq1y8a94rc4401f6mrw8jj8b"; + url = ftp://ftp.gtk.org/pub/gimp/v2.4/gimp-2.4.4.tar.bz2; + sha256 = "1mnl30b4p7c2lxi68z3fhwmganhwppyiw7r0m3r90vnakcawfnfh"; }; buildInputs = [ From 703135a4de1565e98f16aaf889500f6d7b10aaa0 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:37:10 +0000 Subject: [PATCH 256/320] Don't know wether you want to build perl and zip because of mc.. But one of mc's features is beeing able to unpack on the fly. You can do that now (.zip) svn path=/nixpkgs/branches/stdenv-updates/; revision=10579 --- pkgs/tools/misc/mc/default.nix | 9 ++++++++- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/mc/default.nix b/pkgs/tools/misc/mc/default.nix index e5cce46bba8..b82ad4cd3e6 100644 --- a/pkgs/tools/misc/mc/default.nix +++ b/pkgs/tools/misc/mc/default.nix @@ -6,8 +6,15 @@ stdenv.mkDerivation rec { url = "http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/${name}.tar.gz"; sha256 = "0zly25mwdn84s0wqx9mzyqi177mm828716nv1n6a4a5cm8yv0sh8"; }; - buildInputs = [pkgconfig glib ncurses libX11]; + buildInputs = [pkgconfig glib ncurses libX11 shebangfix perl zip]; configureFlags = "--with-screen=ncurses"; + # small hacks to support zip + postUnpack = " + sed -i 's=/usr/bin/==g' `find -type f` + "; + postInstall = " + find \$out -iname \"*.pl\" | xargs shebangfix; + "; meta = { description = "File Manager and User Shell for the GNU Project"; homepage = http://www.ibiblio.org/mc; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b4f2b882f31..4665284a2a8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -632,7 +632,7 @@ rec { }; mc = import ../tools/misc/mc { - inherit fetchurl stdenv pkgconfig ncurses; + inherit fetchurl stdenv pkgconfig ncurses shebangfix perl zip; inherit (gtkLibs) glib; inherit (xlibs) libX11; }; From 6edb12e639a218754b0f14be93ee532da3c4eb1f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:37:27 +0000 Subject: [PATCH 257/320] * Use fxload. svn path=/nixpkgs/branches/stdenv-updates/; revision=10580 --- pkgs/os-specific/linux/wis-go7007/default.nix | 14 ++++++++++---- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/os-specific/linux/wis-go7007/default.nix b/pkgs/os-specific/linux/wis-go7007/default.nix index 8637cc5d68e..3e35c83488a 100644 --- a/pkgs/os-specific/linux/wis-go7007/default.nix +++ b/pkgs/os-specific/linux/wis-go7007/default.nix @@ -1,7 +1,7 @@ -{stdenv, fetchurl, kernel, ncurses}: +{stdenv, fetchurl, kernel, ncurses, fxload}: stdenv.mkDerivation { - name = "wis-go7007-linux-0.9.8"; + name = "wis-go7007-0.9.8"; src = fetchurl { url = http://gentoo.osuosl.org/distfiles/wis-go7007-linux-0.9.8.tar.bz2; @@ -35,17 +35,23 @@ stdenv.mkDerivation { #includeDir=$out/lib/modules/$kernelVersion/source/include/linux includeDir=$TMPDIR/scratch substituteInPlace Makefile \ - --replace '$(DESTDIR)$(KSRC)/include/linux' $includeDir + --replace '$(DESTDIR)$(KSRC)/include/linux' $includeDir \ + --replace '$(DESTDIR)$(FIRMWARE_DIR)' '$(FIRMWARE_DIR)' ensureDir $includeDir ensureDir $out/etc/hotplug/usb ensureDir $out/etc/udev/rules.d makeFlagsArray=(KERNELSRC=$kernelSource \ - FIRMWARE_DIR=/firmware FXLOAD=false \ + FIRMWARE_DIR=$out/firmware FXLOAD=${fxload}/sbin/fxload \ DESTDIR=$out SKIP_DEPMOD=1 \ USE_UDEV=y) ''; # */ + postInstall = '' + ensureDir $out/bin + cp apps/gorecord apps/modet $out/bin/ + ''; + meta = { description = "Kernel module for the Micronas GO7007, used in a number of USB TV devices"; homepage = http://oss.wischip.com/; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4665284a2a8..7e390142eef 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3747,7 +3747,7 @@ rec { }; wis_go7007 = import ../os-specific/linux/wis-go7007 { - inherit fetchurl stdenv kernel ncurses; + inherit fetchurl stdenv kernel ncurses fxload; }; wpa_supplicant = import ../os-specific/linux/wpa_supplicant { From 7b3c313ec63695619be61bb5258c167491f6ce2f Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:37:38 +0000 Subject: [PATCH 258/320] Fixed shebangfix svn path=/nixpkgs/branches/stdenv-updates/; revision=10581 --- pkgs/tools/misc/shebangfix/default.nix | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/tools/misc/shebangfix/default.nix b/pkgs/tools/misc/shebangfix/default.nix index f5ed86e99f7..ca4a0004d19 100644 --- a/pkgs/tools/misc/shebangfix/default.nix +++ b/pkgs/tools/misc/shebangfix/default.nix @@ -8,13 +8,14 @@ stdenv.mkDerivation { phases = "buildPhase"; - buildPhase = " - ensureDir \$out/bin - s=\$out/bin/shebangfix - cp \$file \$s - chmod +x \$s - perl \$s \$s - "; + buildPhase = '' + ensureDir $out/bin + s=$out/bin/shebangfix + cp $file $s + chmod +wx $s + ls -l $s + perl $s $s + ''; meta = { description = "replaces the #!executable with $#!correctpath/executable "; }; } From 150ea51a9c894dcbd2cb48a7e21272356973e6dc Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:37:50 +0000 Subject: [PATCH 259/320] Added Apache Axis2 svn path=/nixpkgs/branches/stdenv-updates/; revision=10582 --- pkgs/servers/http/tomcat/axis2/builder.sh | 8 ++++++++ pkgs/servers/http/tomcat/axis2/default.nix | 15 +++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 3 files changed, 27 insertions(+) create mode 100644 pkgs/servers/http/tomcat/axis2/builder.sh create mode 100644 pkgs/servers/http/tomcat/axis2/default.nix diff --git a/pkgs/servers/http/tomcat/axis2/builder.sh b/pkgs/servers/http/tomcat/axis2/builder.sh new file mode 100644 index 00000000000..e97c8c77b60 --- /dev/null +++ b/pkgs/servers/http/tomcat/axis2/builder.sh @@ -0,0 +1,8 @@ +buildInputs="$unzip $apacheAnt $jdk" +source $stdenv/setup + +unzip $src +cd axis2-*/webapp +ant +ensureDir $out/webapps +cp ../dist/axis2.war $out/webapps diff --git a/pkgs/servers/http/tomcat/axis2/default.nix b/pkgs/servers/http/tomcat/axis2/default.nix new file mode 100644 index 00000000000..aeb103c0e7d --- /dev/null +++ b/pkgs/servers/http/tomcat/axis2/default.nix @@ -0,0 +1,15 @@ +{stdenv, fetchurl, apacheAnt, jdk, unzip}: + +stdenv.mkDerivation { + + name = "axis2-1.3"; + + builder = ./builder.sh; + + src = fetchurl { + url = http://apache.hippo.nl/ws/axis2/1_3/axis2-1.3-bin.zip; + md5 = "ab2bc77452288ebf80d861270734a83e"; + }; + + inherit apacheAnt jdk unzip; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7e390142eef..b2c77f0f2bb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3247,6 +3247,10 @@ rec { inherit fetchurl stdenv jdk; }; + axis2 = import ../servers/http/tomcat/axis2 { + inherit fetchurl stdenv jdk apacheAnt unzip; + }; + vsftpd = import ../servers/ftp/vsftpd { inherit fetchurl openssl stdenv libcap pam; }; From 83e82c9872ce064a1c476fe87bbde1c708ca10a9 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:38:01 +0000 Subject: [PATCH 260/320] * udev: get rid of silly warnings in make install. svn path=/nixpkgs/branches/stdenv-updates/; revision=10583 --- pkgs/os-specific/linux/udev/default.nix | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/udev/default.nix b/pkgs/os-specific/linux/udev/default.nix index cb7bf4fabd5..a2de2e08ce9 100644 --- a/pkgs/os-specific/linux/udev/default.nix +++ b/pkgs/os-specific/linux/udev/default.nix @@ -2,10 +2,24 @@ stdenv.mkDerivation { name = "udev-118"; + src = fetchurl { url = mirror://kernel/linux/utils/kernel/hotplug/udev-118.tar.bz2; sha256 = "1i488wqm7i6nz6gidbkxkb47hr427ika48i8imwrvvnpg1kzhska"; }; - preBuild = "makeFlagsArray=(etcdir=$out/etc sbindir=$out/sbin usrbindir=$out/bin usrsbindir=$out/sbin mandir=$out/share/man INSTALL='install -c')"; - preInstall = "installFlagsArray=(udevdir=dummy)"; + + # "DESTDIR=/" is a hack to prevent "make install" from trying to + # mess with /dev. + preBuild = '' + makeFlagsArray=(etcdir=$out/etc sbindir=$out/sbin usrbindir=$out/bin usrsbindir=$out/sbin mandir=$out/share/man INSTALL='install -c' DESTDIR=/) + ''; + + preInstall = '' + installFlagsArray=(udevdir=$TMPDIR/dummy) + ''; + + meta = { + homepage = http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html; + description = "Udev manages the /dev filesystem"; + }; } From f27c53669a3bbf4cf9a572f3e69f227eeeda97f6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:38:12 +0000 Subject: [PATCH 261/320] Fixed wish in Tk svn path=/nixpkgs/branches/stdenv-updates/; revision=10584 --- pkgs/development/libraries/tk/8.4.16.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/tk/8.4.16.nix b/pkgs/development/libraries/tk/8.4.16.nix index c43e53cc827..1f26db83f1b 100644 --- a/pkgs/development/libraries/tk/8.4.16.nix +++ b/pkgs/development/libraries/tk/8.4.16.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation { sha256 = "0cciavzd05bpm5yfppid0s0vsf8kabwia9620vgvi26sv1gjgwhb"; }; postInstall = '' - echo -e '#! /bin/sh \n $( readlink -f $( which wish${__substring 0 3 version}) ) "$@"' >$out/bin/wish + echo -e '#! /bin/sh \n $( readlink -f $( type -tP wish${__substring 0 3 version}) ) "$@"' >$out/bin/wish chmod a+x $out/bin/wish ''; configureFlags="--with-tcl=${tcl}/lib"; From 17a801ad4c39d094e6890a93449e609d6ef012f9 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:38:24 +0000 Subject: [PATCH 262/320] * Remove the Reiser4 patch from Gentoo, it broke Grub, with a message like Running "install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,5)/boot/grub/stage /boot/grub/menu.lst"... failed Error 15: File not found svn path=/nixpkgs/branches/stdenv-updates/; revision=10585 --- pkgs/tools/misc/grub/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/tools/misc/grub/default.nix b/pkgs/tools/misc/grub/default.nix index 87ba35566c0..9f021a66955 100644 --- a/pkgs/tools/misc/grub/default.nix +++ b/pkgs/tools/misc/grub/default.nix @@ -25,6 +25,7 @@ stdenv.mkDerivation { preConfigure = '' unpackFile $gentooPatches + rm patch/400_all_grub-0.97-reiser4-20050808-gentoo.patch for i in patch/*.patch; do echo "applying patch $i" patch -p1 < $i || patch -p0 < $i From d8688a1eb92ea5f9fd32d880c47361be6121259c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:38:36 +0000 Subject: [PATCH 263/320] * Reiser4 stuff. svn path=/nixpkgs/branches/stdenv-updates/; revision=10586 --- pkgs/development/libraries/libaal/default.nix | 19 +++++++++++++++++ .../linux/reiser4progs/default.nix | 21 +++++++++++++++++++ .../linux/reiserfsprogs/default.nix | 13 ++++++------ pkgs/top-level/all-packages.nix | 8 +++++++ 4 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 pkgs/development/libraries/libaal/default.nix create mode 100644 pkgs/os-specific/linux/reiser4progs/default.nix diff --git a/pkgs/development/libraries/libaal/default.nix b/pkgs/development/libraries/libaal/default.nix new file mode 100644 index 00000000000..596b8e2e84c --- /dev/null +++ b/pkgs/development/libraries/libaal/default.nix @@ -0,0 +1,19 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "libaal-1.0.5"; + + src = fetchurl { + url = http://chichkin_i.zelnet.ru/namesys/libaal-1.0.5.tar.gz; + sha256 = "109f464hxwms90mpczc7h7lmrdlcmlglabkzh86h25xrlxxdn6pz"; + }; + + preInstall = '' + substituteInPlace Makefile --replace ./run-ldconfig true + ''; + + meta = { + homepage = http://www.namesys.com/; + description = "Support library for Reiser4"; + }; +} diff --git a/pkgs/os-specific/linux/reiser4progs/default.nix b/pkgs/os-specific/linux/reiser4progs/default.nix new file mode 100644 index 00000000000..235b2b8381b --- /dev/null +++ b/pkgs/os-specific/linux/reiser4progs/default.nix @@ -0,0 +1,21 @@ +{stdenv, fetchurl, libaal}: + +stdenv.mkDerivation { + name = "reiser4progs-1.0.6"; + + src = fetchurl { + url = http://chichkin_i.zelnet.ru/namesys/reiser4progs-1.0.6.tar.gz; + sha256 = "0x6m6px19hz54r8q4wwpf437qmqh44c5ddw9846isr64zs2rpld0"; + }; + + buildInputs = [libaal]; + + preInstall = '' + substituteInPlace Makefile --replace ./run-ldconfig true + ''; + + meta = { + homepage = http://www.namesys.com/; + description = "Reiser4 utilities"; + }; +} diff --git a/pkgs/os-specific/linux/reiserfsprogs/default.nix b/pkgs/os-specific/linux/reiserfsprogs/default.nix index 324ba28524c..040bae1dd47 100644 --- a/pkgs/os-specific/linux/reiserfsprogs/default.nix +++ b/pkgs/os-specific/linux/reiserfsprogs/default.nix @@ -2,15 +2,16 @@ args: with args; stdenv.mkDerivation { name = "reiserfsprogs-3.6.19"; + src = fetchurl { - url = ftp://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.6.19.tar.gz; - sha256 = "1gv8gr0l5l2j52540y2wj9c9h7fn0r3vabykf95748ydmr9jr1n0"; - }; + url = http://chichkin_i.zelnet.ru/namesys/reiserfsprogs-3.6.19.tar.gz; + sha256 = "1gv8gr0l5l2j52540y2wj9c9h7fn0r3vabykf95748ydmr9jr1n0"; + }; patches = [./headers-fix.patch]; meta = { - homepage=http://www.namesys.com/; - description="Reiserfs Utilities"; - license="GPL-2"; + homepage = http://www.namesys.com/; + description = "Reiserfs utilities"; + license = "GPL-2"; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b2c77f0f2bb..3190d145a62 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2142,6 +2142,10 @@ rec { inherit (xlibs) libXp libXau; }; + libaal = import ../development/libraries/libaal { + inherit fetchurl stdenv; + }; + libarchive = import ../development/libraries/libarchive { inherit fetchurl stdenv zlib; }; @@ -3654,6 +3658,10 @@ rec { inherit fetchurl stdenv; }; + reiser4progs = import ../os-specific/linux/reiser4progs { + inherit fetchurl stdenv libaal; + }; + radeontools = import ../os-specific/linux/radeontools { inherit pciutils; inherit fetchurl stdenv; From 7753a1c5e970110ad6946b38fb019dca3ffad01a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:38:46 +0000 Subject: [PATCH 264/320] * Remove a time-dependent impurity from mc which was caused by touching all the source files. Depending on whether files were touched in the same second things would either be rebuilt (which would fail) or not. Maybe this breaks unzip support, not tested. svn path=/nixpkgs/branches/stdenv-updates/; revision=10587 --- pkgs/tools/misc/mc/default.nix | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/pkgs/tools/misc/mc/default.nix b/pkgs/tools/misc/mc/default.nix index b82ad4cd3e6..344e8a5ceea 100644 --- a/pkgs/tools/misc/mc/default.nix +++ b/pkgs/tools/misc/mc/default.nix @@ -8,15 +8,12 @@ stdenv.mkDerivation rec { }; buildInputs = [pkgconfig glib ncurses libX11 shebangfix perl zip]; configureFlags = "--with-screen=ncurses"; - # small hacks to support zip - postUnpack = " - sed -i 's=/usr/bin/==g' `find -type f` - "; - postInstall = " - find \$out -iname \"*.pl\" | xargs shebangfix; - "; + makeFlags = "UNZIP=unzip"; + postInstall = '' + find $out -iname "*.pl" | xargs shebangfix; + ''; meta = { - description = "File Manager and User Shell for the GNU Project"; - homepage = http://www.ibiblio.org/mc; + description = "File Manager and User Shell for the GNU Project"; + homepage = http://www.ibiblio.org/mc; }; } From e7bc12a93265dce5704be7024e9dbac4f6ec07ae Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:38:56 +0000 Subject: [PATCH 265/320] * Function concatMap as in Haskell. svn path=/nixpkgs/branches/stdenv-updates/; revision=10588 --- pkgs/lib/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 1018d960907..0d22070ee98 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -52,6 +52,10 @@ rec { fold (x: y: x + y) ""; + # Map and concatenate the result. + concatMap = f: list: concatLists (map f list); + + # Place an element between each element of a list, e.g., # `intersperse "," ["a" "b" "c"]' returns ["a" "," "b" "," "c"]. intersperse = separator: list: From 156b7f93efa13aefb228cab262a0c3cc000cd399 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:39:07 +0000 Subject: [PATCH 266/320] * Updated Apache-related packages. svn path=/nixpkgs/branches/stdenv-updates/; revision=10589 --- .../interpreters/php_configurable/default.nix | 68 +++++++++---------- .../libraries/apr-util/default.nix | 26 +++++-- pkgs/development/libraries/apr/default.nix | 12 +++- .../apache-modules/mod_python/default.nix | 6 +- 4 files changed, 65 insertions(+), 47 deletions(-) diff --git a/pkgs/development/interpreters/php_configurable/default.nix b/pkgs/development/interpreters/php_configurable/default.nix index 91e0518ccd3..35583c9d37e 100644 --- a/pkgs/development/interpreters/php_configurable/default.nix +++ b/pkgs/development/interpreters/php_configurable/default.nix @@ -9,6 +9,7 @@ | http://www.php.net/manual/security.php for more details. | */ +let version = "5.2.5"; in args: ( args.mkDerivationByConfiguration { @@ -462,58 +463,57 @@ args: extraAttrs = co : { - name = "php_configurable-5.2.4"; + name = "php_configurable-${version}"; buildInputs = ( args.lib.getAttr [ "phpIncludes" ] [] args ) ++ co.buildInputs; - configurePhase = - " - iniFile=\$out/etc/\$name.ini - [[ -z \"\$libxml2\" ]] || export PATH=\$PATH:\$libxml2/bin - ./configure --with-config-file-scan-dir=/etc --with-config-file-path=\$iniFile --prefix=\$out " + co.configureFlags + " + configurePhase = '' + iniFile=$out/etc/$name.ini + [[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin + ./configure --with-config-file-scan-dir=/etc --with-config-file-path=$iniFile --prefix=$out ${co.configureFlags} echo configurePhase end - "; + ''; - installPhase = " + installPhase = '' unset installPhase; installPhase; - cp php.ini-recommended $\iniFile + cp php.ini-recommended $iniFile # Now Let's build xdebug if flag has been given # TODO I think there are better paths than the given below - if [ -n \$flag_set_xdebug ]; then - PATH=\$PATH:\$out/bin - tar xfz \$xdebug_src; + if [ -n $flag_set_xdebug ]; then + PATH=$PATH:$out/bin + tar xfz $xdebug_src; cd xdebug* phpize - ./configure --prefix=\$out + ./configure --prefix=$out make - ensureDir \$out/lib; cp modules/xdebug.so $out/lib -cat >> $iniFile << EOF -zend_extension=\"\$out/lib/xdebug.so\" -zend_extension_ts=\"\$out/lib/xdebug.so\" -zend_extension_debug=\"\$out/lib/xdebug.so\" -xdebug.remote_enable=true -xdebug.remote_host=127.0.0.1 -xdebug.remote_port=9000 -xdebug.remote_handler=dbgp -xdebug.profiler_enable=0 -xdebug.profiler_output_dir=\"/tmp/xdebug\" -xdebug.remote_mode=req -EOF + ensureDir $out/lib; cp modules/xdebug.so $out/lib + cat >> $iniFile << EOF + zend_extension="$out/lib/xdebug.so" + zend_extension_ts="$out/lib/xdebug.so" + zend_extension_debug="$out/lib/xdebug.so" + xdebug.remote_enable=true + xdebug.remote_host=127.0.0.1 + xdebug.remote_port=9000 + xdebug.remote_handler=dbgp + xdebug.profiler_enable=0 + xdebug.profiler_output_dir="/tmp/xdebug" + xdebug.remote_mode=req + EOF fi - "; + ''; src = args.fetchurl { - url = http://de.php.net/get/php-5.2.4.tar.bz2/from/this/mirror; - sha256 = "1h513j7crz08n7rlh8v7cvxfzisj87mvvyfrkiaa76v1wicm4bsh"; - name = "php-5.2.4.tar.bz2"; + url = "http://nl.php.net/get/php-${version}.tar.bz2/from/this/mirror"; + sha256 = "18xv961924rkk66gdjcmk1mzbzgp2srbiq5jvbgyn6ahvxq1xb2w"; + name = "php-${version}.tar.bz2"; }; meta = { - description = "The PHP language runtime engine"; # : CLI, CGI and Apache2 SAPIs ? as well TODO - homepage = http://www.php.net/; - license = "PHP-3"; - }; + description = "The PHP language runtime engine"; # : CLI, CGI and Apache2 SAPIs ? as well TODO + homepage = http://www.php.net/; + license = "PHP-3"; + }; patches = [./fix.patch]; }; diff --git a/pkgs/development/libraries/apr-util/default.nix b/pkgs/development/libraries/apr-util/default.nix index 7f2ce3e3882..967408e0cb4 100644 --- a/pkgs/development/libraries/apr-util/default.nix +++ b/pkgs/development/libraries/apr-util/default.nix @@ -4,14 +4,26 @@ assert bdbSupport -> db4 != null; -(stdenv.mkDerivation { - name = "apr-util-1.2.7"; +stdenv.mkDerivation { + name = "apr-util-1.2.12"; + src = fetchurl { - url = http://archive.apache.org/dist/apr/apr-util-1.2.7.tar.bz2; - md5 = "a4c527f08ae2298e62a88472291bf066"; + url = http://archive.apache.org/dist/apr/apr-util-1.2.12.tar.bz2; + sha256 = "152xwaxikp22acz7ypqsvlyjxhak6p40805wwbw7hcg1gyg2scyl"; }; - configureFlags = " + + configureFlags = '' --with-apr=${apr} --with-expat=${expat} ${if bdbSupport then "--with-berkeley-db=${db4}" else ""} - "; -}) // {inherit bdbSupport;} + ''; + + passthru = { + inherit bdbSupport; + }; + + meta = { + homepage = http://apr.apache.org/; + description = "A companion library to APR, the Apache Portable Runtime"; + }; +} + diff --git a/pkgs/development/libraries/apr/default.nix b/pkgs/development/libraries/apr/default.nix index a42699063c5..ceae8a1d12a 100644 --- a/pkgs/development/libraries/apr/default.nix +++ b/pkgs/development/libraries/apr/default.nix @@ -1,9 +1,15 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "apr-1.2.7"; + name = "apr-1.2.12"; + src = fetchurl { - url = http://archive.apache.org/dist/apr/apr-1.2.7.tar.bz2; - md5 = "e77887dbafc515c63feac84686bcb3bc"; + url = http://archive.apache.org/dist/apr/apr-1.2.12.tar.bz2; + sha256 = "0d11wa2hlhb5lnny5rcazca056b35kgccx94cd38bazw1d6b68nv"; + }; + + meta = { + homepage = http://apr.apache.org/; + description = "The Apache Portable Runtime library"; }; } diff --git a/pkgs/servers/http/apache-modules/mod_python/default.nix b/pkgs/servers/http/apache-modules/mod_python/default.nix index 16d247fe8dc..4c83070e9ca 100644 --- a/pkgs/servers/http/apache-modules/mod_python/default.nix +++ b/pkgs/servers/http/apache-modules/mod_python/default.nix @@ -1,13 +1,13 @@ {stdenv, fetchurl, apacheHttpd, python}: stdenv.mkDerivation { - name = "mod_python-3.2.10"; + name = "mod_python-3.3.1"; builder = ./builder.sh; src = fetchurl { - url = http://apache.surfnet.nl/httpd/modpython/mod_python-3.2.10.tgz; - md5 = "cc6439f546a6e70cfff7ca51b8c62541"; + url = http://archive.eu.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz; + sha256 = "0sss2xi6l1a2z8y6ji0cp8vgyvnhq8zrg0ilkvpj1mygbzyk28xd"; }; patches = [./install.patch]; From 520452ae4ff3672afe47cb76acb412bb32537bf2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:39:16 +0000 Subject: [PATCH 267/320] Added Savannah mirror list (source suggested by Ludovic Court\`es) svn path=/nixpkgs/branches/stdenv-updates/; revision=10590 --- pkgs/build-support/fetchurl/mirrors.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix index 52fc9dfa2c1..a154be31688 100644 --- a/pkgs/build-support/fetchurl/mirrors.nix +++ b/pkgs/build-support/fetchurl/mirrors.nix @@ -48,4 +48,24 @@ rec { http://www.ibiblio.org/pub/Linux/distributions/gentoo/ http://distfiles.gentoo.org/ ]; + + savannah = [ + ftp://ftp.twaren.net/Unix/NonGNU/ + ftp://mirror.csclub.uwaterloo.ca/nongnu/ + ftp://mirror.publicns.net/pub/nongnu/ + ftp://savannah.c3sl.ufpr.br/ + http://download.savannah.gnu.org/ + http://ftp.cc.uoc.gr/mirrors/nongnu.org/ + http://ftp.twaren.net/Unix/NonGNU/ + http://mirror.csclub.uwaterloo.ca/nongnu/ + http://mirror.publicns.net/pub/nongnu/ + http://nongnu.askapache.com/ + http://nongnu.bigsearcher.com/ + http://savannah.c3sl.ufpr.br/ + http://www.centervenus.com/mirrors/nongnu/ + http://www.de-mirrors.de/nongnu/ + http://www.very-clever.com/download/nongnu/ + http://www.wikifusion.info/nongnu/ + ]; + } From 07da3cba4c91fdf1b4899284f0d7145766e89454 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:39:25 +0000 Subject: [PATCH 268/320] PHP now with postgresql support svn path=/nixpkgs/branches/stdenv-updates/; revision=10591 --- pkgs/development/interpreters/php_configurable/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/php_configurable/default.nix b/pkgs/development/interpreters/php_configurable/default.nix index 35583c9d37e..6b755066359 100644 --- a/pkgs/development/interpreters/php_configurable/default.nix +++ b/pkgs/development/interpreters/php_configurable/default.nix @@ -418,6 +418,8 @@ args: no_libxml2 = { cfgOption = "--disable-libxml"; }; + postgresql = { cfgOption = "--with-pgsql=\$postgresql"; + pass = { inherit (args) postgresql;}; }; mysql = { cfgOption = "--with-mysql=\$mysql"; pass = { inherit (args) mysql;}; }; @@ -457,7 +459,7 @@ args: }; defaults = [ "mysql" "mysqli" "pdo_mysql" "libxml2" "apxs2" ]; - optionals = [ "libxml2" "gettext" ]; + optionals = [ "libxml2" "gettext" "postgresql"]; # Don't konw wether they should be default.. I use them - Marc From 8bcddb041344aec0342d4300d284d51390d0e405 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:39:34 +0000 Subject: [PATCH 269/320] svn path=/nixpkgs/branches/stdenv-updates/; revision=10592 --- pkgs/tools/archivers/p7zip/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/archivers/p7zip/default.nix b/pkgs/tools/archivers/p7zip/default.nix index c9d97033500..00bc47878f4 100644 --- a/pkgs/tools/archivers/p7zip/default.nix +++ b/pkgs/tools/archivers/p7zip/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "p7zip-4.53"; + name = "p7zip-4.57"; src = fetchurl { - url = mirror://sourceforge/p7zip/p7zip_4.53_src_all.tar.bz2; - sha256 = "0pbgvpq852qnzq4isgc13p4nnp416xhy5vmn1rcwm8fk43l5rbqd"; + url = mirror://sourceforge/p7zip/p7zip_4.57_src_all.tar.bz2; + sha256 = "0lsvw1bh6dzpxn8kyl7s79w2drpfxaa1c79khqm56gfmdlw27s80"; }; preConfigure = " From f40744d8e2a8cb9cdd3df35fcf13a04606fc3e30 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:39:43 +0000 Subject: [PATCH 270/320] update to 0.11 svn path=/nixpkgs/branches/stdenv-updates/; revision=10593 --- pkgs/games/scummvm/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/games/scummvm/default.nix b/pkgs/games/scummvm/default.nix index 610556a2635..2f81aaa474d 100644 --- a/pkgs/games/scummvm/default.nix +++ b/pkgs/games/scummvm/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, SDL, zlib, mpeg2dec}: stdenv.mkDerivation { - name = "scummvm-0.10.0"; + name = "scummvm-0.11.0"; src = fetchurl { - url = mirror://sourceforge/scummvm/scummvm-0.10.0.tar.bz2; - sha256 = "09ii4vbs4nygc0x4n1l9dkfiywj5qwxv9j81pbrf9r6d6y4wdlf9"; + url = mirror://sourceforge/scummvm/scummvm-0.11.0.tar.bz2; + sha256 = "106vcknkr07m17rxypavlz3cjyd862bwq1qw1arakcvhhi90mbfl"; }; buildInputs = [SDL zlib mpeg2dec]; From 7d7f290d7063361adf457159b68d917978986456 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:39:52 +0000 Subject: [PATCH 271/320] Add `avahi' package. svn path=/nixpkgs/branches/stdenv-updates/; revision=10594 --- pkgs/development/libraries/avahi/default.nix | 12 ++++++------ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/pkgs/development/libraries/avahi/default.nix b/pkgs/development/libraries/avahi/default.nix index 52051725e22..c8a94c0dbb1 100644 --- a/pkgs/development/libraries/avahi/default.nix +++ b/pkgs/development/libraries/avahi/default.nix @@ -1,14 +1,14 @@ -{stdenv, fetchurl, pkgconfig}: +{stdenv, fetchurl, pkgconfig, libdaemon, dbus}: stdenv.mkDerivation { - name = "avahi-0.6.11"; + name = "avahi-0.6.21"; src = fetchurl { - url = http://avahi.org/download/avahi-0.6.11.tar.gz; - md5 = "91fd8cc0c2bae638848faad36cf1c032"; + url = http://avahi.org/download/avahi-0.6.21.tar.gz; + sha256 = "d817c35f43011861476eab02eea14edd123b2bc58b4408d9d9b69b0c39252561"; }; #buildInputs = [pkgconfig glib gtk libpng libglade]; - buildInputs = [pkgconfig]; + buildInputs = [pkgconfig libdaemon dbus]; - configureFlags = "--disable-glib --disable-qt3 --disable-qt4 --disable-gtk --disable-dbus --disable-expat --disable-gdbm --disable-libdaemon --disable-python --disable-mono"; + configureFlags = "--disable-glib --disable-qt3 --disable-qt4 --disable-gtk --disable-expat --disable-gdbm --disable-python --disable-mono --with-distro=none CPPFLAGS=-Ddbus_watch_get_unix_fd=dbus_watch_get_fd"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3190d145a62..88c50c18021 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -333,6 +333,10 @@ rec { inherit fetchurl stdenv zlib wxGTK; }; + avahi = import ../development/libraries/avahi { + inherit stdenv fetchurl pkgconfig libdaemon dbus; + }; + axel = import ../tools/networking/axel { inherit fetchurl stdenv; }; From 734a1b39e0b85e376cd2671bf4274f8de4cd6c18 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:00 +0000 Subject: [PATCH 272/320] added SDL_net, some minor modifications to SDL_image and SDL_mixer svn path=/nixpkgs/branches/stdenv-updates/; revision=10595 --- .../libraries/SDL_image/default.nix | 17 +++++++------ .../libraries/SDL_mixer/default.nix | 25 ++++++++++++++----- .../development/libraries/SDL_net/default.nix | 22 ++++++++++++++++ 3 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 pkgs/development/libraries/SDL_net/default.nix diff --git a/pkgs/development/libraries/SDL_image/default.nix b/pkgs/development/libraries/SDL_image/default.nix index 4dd7d3679b8..d26213ef7cd 100644 --- a/pkgs/development/libraries/SDL_image/default.nix +++ b/pkgs/development/libraries/SDL_image/default.nix @@ -1,11 +1,14 @@ args: with args; -stdenv.mkDerivation { - name = "SDL_image-1.2.6"; +stdenv.mkDerivation (rec { + pname = "SDL_image"; + version = "1.2.6"; + + name = "${pname}-${version}"; src = fetchurl { - url = http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.6.tar.gz; - sha256 = "1i3f72dw3i3l6d77dk81gw57sp0629rng9k76qb37brlz7dv3z48"; - }; + url = "http://www.libsdl.org/projects/${pname}/release/${name}.tar.gz"; + sha256 = "1i3f72dw3i3l6d77dk81gw57sp0629rng9k76qb37brlz7dv3z48"; + }; buildInputs = [SDL libpng libjpeg libtiff libungif libXpm]; @@ -13,7 +16,7 @@ stdenv.mkDerivation { meta = { description = " - SDL image library. + SDL image library. "; }; -} +}) diff --git a/pkgs/development/libraries/SDL_mixer/default.nix b/pkgs/development/libraries/SDL_mixer/default.nix index 14b8359c70a..024fd643be6 100644 --- a/pkgs/development/libraries/SDL_mixer/default.nix +++ b/pkgs/development/libraries/SDL_mixer/default.nix @@ -1,11 +1,24 @@ -{stdenv, fetchurl, SDL, libogg, libvorbis}: +args: with args; +stdenv.mkDerivation (rec { + pname = "SDL_mixer"; + version = "1.2.8"; + + name = "${pname}-${version}"; -stdenv.mkDerivation { - name = "SDL_mixer-1.2.7"; src = fetchurl { - url = http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.7.tar.gz; - md5 = "7959b89c8f8f1564ca90968f6c88fa1e"; + url = "http://www.libsdl.org/projects/${pname}/release/${name}.tar.gz"; + sha256 = "a8222a274778ff16d0e3ee49a30db27a48a4d357169a915fc599a764e405e0b6"; }; + buildInputs = [SDL libogg libvorbis]; + configureFlags = "--disable-music-ogg-shared"; -} + + postInstall = "ln -s \${out}/include/SDL/SDL_mixer.h \${out}/include/"; + + meta = { + description = " + SDL multi-channel audio mixer library. +"; + }; +}) diff --git a/pkgs/development/libraries/SDL_net/default.nix b/pkgs/development/libraries/SDL_net/default.nix new file mode 100644 index 00000000000..7de557322f6 --- /dev/null +++ b/pkgs/development/libraries/SDL_net/default.nix @@ -0,0 +1,22 @@ +args: with args; +stdenv.mkDerivation (rec { + pname = "SDL_net"; + version = "1.2.7"; + + name = "${pname}-${version}"; + + src = fetchurl { + url = "http://www.libsdl.org/projects/SDL_net/release/${name}.tar.gz"; + sha256 = "2ce7c84e62ff8117b9f205758bcce68ea603e08bc9d6936ded343735b8b77c53"; + }; + + buildInputs = [SDL]; + + postInstall = "ln -s \${out}/include/SDL/SDL_net.h \${out}/include/"; + + meta = { + description = " + SDL networking library. +"; + }; +}) From 25b980dbe4b6b6c9d2213a5bb888c55f13413029 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:08 +0000 Subject: [PATCH 273/320] added Battle for Wesnoth, a free, turn-based strategy game svn path=/nixpkgs/branches/stdenv-updates/; revision=10596 --- pkgs/games/wesnoth/default.nix | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 pkgs/games/wesnoth/default.nix diff --git a/pkgs/games/wesnoth/default.nix b/pkgs/games/wesnoth/default.nix new file mode 100644 index 00000000000..3e4cf07e5c5 --- /dev/null +++ b/pkgs/games/wesnoth/default.nix @@ -0,0 +1,22 @@ +args: with args; +stdenv.mkDerivation (rec { + pname = "wesnoth"; + version = "1.3.15"; + + name = "${pname}-${version}"; + + src = fetchurl { + url = "http://surfnet.dl.sourceforge.net/sourceforge/${pname}/${name}.tar.bz2"; + sha256 = "5c5c723bdef0b9872a20a4ee11365f050251baed375ee951db726bf82401766e"; + }; + + buildInputs = [SDL SDL_image SDL_mixer SDL_net gettext zlib boost freetype]; + + configureFlags = "--with-preferences-dir=.${name} --program-suffix=-${version} --with-datadir-name=${name} --with-boost=${boost}/include --disable-python"; + + meta = { + description = " + The Battle for Wesnoth is a free, turn-based strategy game with a fantasy theme. +"; + }; +}) From f99bae4c0ed6666956ee98320d39aa943ce7274d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:16 +0000 Subject: [PATCH 274/320] forgot to update all-packages.nix svn path=/nixpkgs/branches/stdenv-updates/; revision=10597 --- pkgs/top-level/all-packages.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 88c50c18021..d52bb7eef77 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2613,6 +2613,10 @@ rec { inherit fetchurl stdenv SDL libogg libvorbis; }; + SDL_net = import ../development/libraries/SDL_net { + inherit fetchurl stdenv SDL; + }; + SDL_ttf = import ../development/libraries/SDL_ttf { inherit fetchurl stdenv SDL freetype; }; @@ -3758,6 +3762,10 @@ rec { stdenv = makeStaticBinaries stdenv; })); + wesnoth = import ../games/wesnoth { + inherit fetchurl stdenv SDL SDL_image SDL_mixer SDL_net gettext zlib boost freetype; + }; + wirelesstools = import ../os-specific/linux/wireless-tools { inherit fetchurl stdenv; }; From 82297a0c8368a615e10a9292c9f225b21743bae8 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:24 +0000 Subject: [PATCH 275/320] * KVM 57. (Newer versions don't compile against the current kernel headers.) svn path=/nixpkgs/branches/stdenv-updates/; revision=10598 --- pkgs/os-specific/linux/kvm/57.nix | 24 ++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 8 +++++++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/linux/kvm/57.nix diff --git a/pkgs/os-specific/linux/kvm/57.nix b/pkgs/os-specific/linux/kvm/57.nix new file mode 100644 index 00000000000..c7859eed178 --- /dev/null +++ b/pkgs/os-specific/linux/kvm/57.nix @@ -0,0 +1,24 @@ +{stdenv, fetchurl, kernelHeaders, zlib, e2fsprogs, SDL, alsaLib}: + +assert stdenv.isLinux; + +stdenv.mkDerivation { + name = "kvm-57"; + + src = fetchurl { + url = mirror://sourceforge/kvm/kvm-57.tar.gz; + sha256 = "016h5pf59fyz7skzsaprii2mdpxpb8hfnnr1w475qcfyy6ccr9r0"; + }; + + configureFlags = "--with-patched-kernel --kerneldir=${kernelHeaders}"; + + # e2fsprogs is needed for libuuid. + buildInputs = [zlib e2fsprogs SDL alsaLib]; + + preConfigure = "for i in configure user/configure; do substituteInPlace $i --replace /bin/bash $shell; done"; + + meta = { + homepage = http://kvm.qumranet.com/; + description = "A full virtualization solution for Linux on x86 hardware containing virtualization extensions"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d52bb7eef77..ec71df793ea 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3522,7 +3522,7 @@ rec { inherit fetchurl stdenv perl bison mktemp kernel; }; - kvm = kvm49; + kvm = kvm57; kvm12 = import ../os-specific/linux/kvm/12.nix { inherit fetchurl zlib e2fsprogs SDL alsaLib; @@ -3542,6 +3542,12 @@ rec { kernelHeaders = kernelHeaders_2_6_23; }; + kvm57 = import ../os-specific/linux/kvm/57.nix { + inherit fetchurl zlib e2fsprogs SDL alsaLib; + stdenv = overrideGCC stdenv gcc34; + kernelHeaders = kernelHeaders_2_6_23; + }; + libcap = import ../os-specific/linux/libcap { inherit fetchurl stdenv; }; From 7830284677f80112f50e80122a0d96d12714e566 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:31 +0000 Subject: [PATCH 276/320] * Latest unstable version. svn path=/nixpkgs/branches/stdenv-updates/; revision=10599 --- pkgs/tools/package-management/nix/unstable.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index a204b10f1f5..1a507f20a04 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -3,14 +3,14 @@ , stateDir ? "/nix/var" }: -let version = "0.12pre10389"; in +let version = "0.12pre10505"; in stdenv.mkDerivation { name = "nix-${version}"; src = fetchurl { url = "http://nix.cs.uu.nl/dist/nix/nix-${version}/nix-${version}.tar.bz2"; - md5 = "5824debe60299ebc9c5aa6532e6a8b67"; + md5 = "44dd2927ce97f12b3f110a7ad991828e"; }; buildInputs = [perl curl openssl]; From 71dd78fe64eb011a217c6f45db53624999450a2c Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:39 +0000 Subject: [PATCH 277/320] * man-db 2.5.1. svn path=/nixpkgs/branches/stdenv-updates/; revision=10600 --- pkgs/tools/misc/man/default.nix | 25 +++++++-- pkgs/tools/misc/man/share.patch | 91 ++++++++++++++++----------------- 2 files changed, 65 insertions(+), 51 deletions(-) diff --git a/pkgs/tools/misc/man/default.nix b/pkgs/tools/misc/man/default.nix index deb0f83ad8a..54367e671ea 100644 --- a/pkgs/tools/misc/man/default.nix +++ b/pkgs/tools/misc/man/default.nix @@ -1,15 +1,32 @@ {stdenv, fetchurl, db4, groff}: stdenv.mkDerivation { - name = "man-2.4.3"; + name = "man-db-2.5.1"; + src = fetchurl { - url = http://savannah.nongnu.org/download/man-db/man-db-2.4.3.tar.gz; - md5 = "30814a47f209f43b152659ba51fc7937"; + url = http://download.savannah.nongnu.org/releases/man-db/man-db-2.5.1.tar.gz; + sha256 = "178w1fk23ffh8vabj29cn0yyg5ps7bwy1zrrrcsw8aypbh3sfjy3"; }; + buildInputs = [db4 groff]; - configureFlags = "--disable-setuid"; + + configureFlags = '' + --disable-setuid + --with-nroff=${groff}/bin/nroff + --with-tbl=${groff}/bin/tbl + --with-eqn=${groff}/bin/eqn + --with-neqn=${groff}/bin/neqn + ''; + + troff = "${groff}/bin/troff"; + patches = [ # Search in "share/man" relative to each path in $PATH (in addition to "man"). ./share.patch ]; + + meta = { + homepage = http://www.nongnu.org/man-db/; + description = "An implementation of the standard Unix documentation system accessed using the man command"; + }; } diff --git a/pkgs/tools/misc/man/share.patch b/pkgs/tools/misc/man/share.patch index 3367f4ceb61..95582a50269 100644 --- a/pkgs/tools/misc/man/share.patch +++ b/pkgs/tools/misc/man/share.patch @@ -1,79 +1,77 @@ -diff -rc man-db-2.4.3/src/manp.c man-db-2.4.3-new/src/manp.c -*** man-db-2.4.3/src/manp.c Mon Nov 8 10:06:03 2004 ---- man-db-2.4.3-new/src/manp.c Tue Jan 9 17:08:31 2007 +diff -rc man-db-2.5.1-orig/src/manp.c man-db-2.5.1/src/manp.c +*** man-db-2.5.1-orig/src/manp.c 2008-01-07 03:23:11.000000000 +0100 +--- man-db-2.5.1/src/manp.c 2008-02-07 14:20:20.000000000 +0100 *************** -*** 101,107 **** +*** 96,102 **** static void mkcatdirs (const char *mandir, const char *catdir); - static __inline__ char *get_manpath (char *path); -! static __inline__ char *has_mandir (const char *p); - static __inline__ char *fsstnd (const char *path); + static inline char *get_manpath_from_path (const char *path); +! static inline char *has_mandir (const char *p); + static inline char *fsstnd (const char *path); static char *def_path (int flag); static void add_dir_to_list (char **lp, const char *dir); ---- 101,107 ---- +--- 96,102 ---- static void mkcatdirs (const char *mandir, const char *catdir); - static __inline__ char *get_manpath (char *path); -! static __inline__ char *has_mandir (const char *p, const char *mandir); - static __inline__ char *fsstnd (const char *path); + static inline char *get_manpath_from_path (const char *path); +! static inline char *has_mandir (const char *p, const char *mandir); + static inline char *fsstnd (const char *path); static char *def_path (int flag); static void add_dir_to_list (char **lp, const char *dir); *************** -*** 885,891 **** - if (debug) - fputs ("is not in the config file\n", stderr); +*** 928,934 **** + } else { + debug ("is not in the config file\n"); ! t = has_mandir (p); if (t) { - if (debug) - fprintf (stderr, "but does have a ../man or man subdirectory\n"); ---- 885,891 ---- - if (debug) - fputs ("is not in the config file\n", stderr); + debug ("but does have a ../man or man " + "subdirectory\n"); +--- 928,934 ---- + } else { + debug ("is not in the config file\n"); ! t = has_mandir (p, "man"); if (t) { - if (debug) - fprintf (stderr, "but does have a ../man or man subdirectory\n"); + debug ("but does have a ../man or man " + "subdirectory\n"); *************** -*** 895,900 **** ---- 895,911 ---- +*** 938,943 **** +--- 938,952 ---- } else - if (debug) - fprintf (stderr, "and doesn't have ../man or man subdirectories\n"); -+ -+ t = has_mandir (p, "share/man"); -+ if (t) { -+ if (debug) -+ fprintf (stderr, "but does have a ../share/man or share/man subdirectory\n"); -+ -+ add_dir_to_list (tmplist, t); -+ free (t); -+ } -+ if (debug) -+ fprintf (stderr, "and doesn't have ../share/man or share/man subdirectories\n"); + debug ("and doesn't have ../man or man " + "subdirectories\n"); ++ ++ t = has_mandir (p, "share/man"); ++ if (t) { ++ debug ("but does have a ../share/man or share/man subdirectory\n"); ++ ++ add_dir_to_list (tmplist, t); ++ free (t); ++ } else ++ debug ("and doesn't have ../share/man or share/man subdirectories\n"); } } *************** -*** 973,979 **** +*** 1013,1019 **** /* path does not exist in config file: check to see if path/../man or path/man exist. If so return it, if not return NULL. */ -! static __inline__ char *has_mandir (const char *path) +! static inline char *has_mandir (const char *path) { char *newpath = NULL; ---- 984,990 ---- +--- 1022,1028 ---- /* path does not exist in config file: check to see if path/../man or path/man exist. If so return it, if not return NULL. */ -! static __inline__ char *has_mandir (const char *path, const char *mandir) +! static inline char *has_mandir (const char *path, const char *mandir) { char *newpath = NULL; *************** -*** 983,991 **** +*** 1023,1031 **** char *subdir = strrchr (path, '/'); if (subdir) { const int prefix_len = subdir + 1 - path; @@ -83,7 +81,7 @@ diff -rc man-db-2.4.3/src/manp.c man-db-2.4.3-new/src/manp.c if (is_directory (newpath) == 1) return newpath; ---- 994,1002 ---- +--- 1032,1040 ---- char *subdir = strrchr (path, '/'); if (subdir) { const int prefix_len = subdir + 1 - path; @@ -94,20 +92,19 @@ diff -rc man-db-2.4.3/src/manp.c man-db-2.4.3-new/src/manp.c if (is_directory (newpath) == 1) return newpath; *************** -*** 993,999 **** +*** 1033,1039 **** *newpath = '\0'; } -! newpath = strappend (newpath, path, "/man", NULL); +! newpath = appendstr (newpath, path, "/man", NULL); if (is_directory (newpath) == 1) return newpath; ---- 1004,1010 ---- +--- 1042,1048 ---- *newpath = '\0'; } -! newpath = strappend (newpath, path, "/", mandir, NULL); +! newpath = appendstr (newpath, path, "/", mandir, NULL); if (is_directory (newpath) == 1) return newpath; -Only in man-db-2.4.3-new/src: manp.c~ From 38fc3e625998e8eafc1133c0a8ff3a4f954bef68 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:46 +0000 Subject: [PATCH 278/320] * man -> man-db. svn path=/nixpkgs/branches/stdenv-updates/; revision=10601 --- pkgs/tools/misc/{man => man-db}/default.nix | 0 pkgs/tools/misc/{man => man-db}/share.patch | 0 pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename pkgs/tools/misc/{man => man-db}/default.nix (100%) rename pkgs/tools/misc/{man => man-db}/share.patch (100%) diff --git a/pkgs/tools/misc/man/default.nix b/pkgs/tools/misc/man-db/default.nix similarity index 100% rename from pkgs/tools/misc/man/default.nix rename to pkgs/tools/misc/man-db/default.nix diff --git a/pkgs/tools/misc/man/share.patch b/pkgs/tools/misc/man-db/share.patch similarity index 100% rename from pkgs/tools/misc/man/share.patch rename to pkgs/tools/misc/man-db/share.patch diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ec71df793ea..f759ce901e9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -627,7 +627,7 @@ rec { inherit fetchurl stdenv; }; - man = import ../tools/misc/man { + man_db = import ../tools/misc/man-db { inherit fetchurl stdenv db4 groff; }; From eddff7a74a99da2a46f7f5d6210c2db6d3c3f9e2 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:40:54 +0000 Subject: [PATCH 279/320] * A more pure man implementation. svn path=/nixpkgs/branches/stdenv-updates/; revision=10602 --- pkgs/tools/misc/man/default.nix | 26 +++++++ pkgs/tools/misc/man/share.patch | 116 ++++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++ 3 files changed, 146 insertions(+) create mode 100644 pkgs/tools/misc/man/default.nix create mode 100644 pkgs/tools/misc/man/share.patch diff --git a/pkgs/tools/misc/man/default.nix b/pkgs/tools/misc/man/default.nix new file mode 100644 index 00000000000..490aa4606ab --- /dev/null +++ b/pkgs/tools/misc/man/default.nix @@ -0,0 +1,26 @@ +{stdenv, fetchurl, groff, less}: + +stdenv.mkDerivation { + name = "man-1.6f"; + + src = fetchurl { + url = http://primates.ximian.com/~flucifredi/man/man-1.6f.tar.gz; + sha256 = "0v2z6ywhy8kd2fa3ywkqayhjdivbaqn6qvhx93a1ldw135z8q84z"; + }; + + buildInputs = [groff less]; + + preBuild = '' + makeFlagsArray=(bindir=$out/bin sbindir=$out/sbin libdir=$out/lib mandir=$out/share/man) + ''; + + patches = [ + # Search in "share/man" relative to each path in $PATH (in addition to "man"). + ./share.patch + ]; + + meta = { + homepage = http://primates.ximian.com/~flucifredi/man/; + description = "Tool to read online Unix documentation"; + }; +} diff --git a/pkgs/tools/misc/man/share.patch b/pkgs/tools/misc/man/share.patch new file mode 100644 index 00000000000..837786e28eb --- /dev/null +++ b/pkgs/tools/misc/man/share.patch @@ -0,0 +1,116 @@ +diff -rc man-1.6f-orig/src/manpath.c man-1.6f/src/manpath.c +*** man-1.6f-orig/src/manpath.c 2006-08-03 23:18:33.000000000 +0200 +--- man-1.6f/src/manpath.c 2008-02-07 15:31:43.000000000 +0100 +*************** +*** 109,121 **** + * or ../man or ../man1 or ../man8 subdirectories. + */ + static char * +! find_man_subdir (char *p) { + int len; + char *t, *sp; + + len = strlen (p); + +! t = my_malloc ((unsigned) len + 20); + + memcpy (t, p, len); + strcpy (t + len, "/man"); +--- 109,121 ---- + * or ../man or ../man1 or ../man8 subdirectories. + */ + static char * +! find_man_subdir (char *p, char * maybe_share) { + int len; + char *t, *sp; + + len = strlen (p); + +! t = my_malloc ((unsigned) len + 30); + + memcpy (t, p, len); + strcpy (t + len, "/man"); +*************** +*** 139,159 **** + } + + /* look for the situation with packagedir/bin and packagedir/man */ +! strcpy (t + len, "/man"); + + if (is_directory (t) == 1) + return t; + + /* look for the situation with pkg/bin and pkg/man1 or pkg/man8 */ + /* (looking for all man[1-9] would probably be a waste of stats) */ +! strcpy (t + len, "/man1"); + + if (is_directory (t) == 1) { + t[len] = 0; + return t; + } + +! strcpy (t + len, "/man8"); + + if (is_directory (t) == 1) { + t[len] = 0; +--- 139,159 ---- + } + + /* look for the situation with packagedir/bin and packagedir/man */ +! sprintf (t + len, "%s/man", maybe_share); + + if (is_directory (t) == 1) + return t; + + /* look for the situation with pkg/bin and pkg/man1 or pkg/man8 */ + /* (looking for all man[1-9] would probably be a waste of stats) */ +! sprintf (t + len, "%s/man1", maybe_share); + + if (is_directory (t) == 1) { + t[len] = 0; + return t; + } + +! sprintf (t + len, "%s/man8", maybe_share); + + if (is_directory (t) == 1) { + t[len] = 0; +*************** +*** 341,347 **** + if (debug) + gripe (IS_NOT_IN_CONFIG); + +! t = find_man_subdir (dir); + if (t != NULL) { + if (debug) + gripe (MAN_NEARBY); +--- 341,347 ---- + if (debug) + gripe (IS_NOT_IN_CONFIG); + +! t = find_man_subdir (dir, ""); + if (t != NULL) { + if (debug) + gripe (MAN_NEARBY); +*************** +*** 352,357 **** +--- 352,370 ---- + if (debug) + gripe (NO_MAN_NEARBY); + } ++ ++ t = find_man_subdir (dir, "/share"); ++ if (t != NULL) { ++ if (debug) ++ gripe (MAN_NEARBY); ++ ++ add_to_mandirlist (t, perrs); ++ free (t); ++ } else { ++ if (debug) ++ gripe (NO_MAN_NEARBY); ++ } ++ + } + } + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f759ce901e9..2329c49b238 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -627,6 +627,10 @@ rec { inherit fetchurl stdenv; }; + man = import ../tools/misc/man { + inherit fetchurl stdenv groff less; + }; + man_db = import ../tools/misc/man-db { inherit fetchurl stdenv db4 groff; }; From 07e6d98fd541d6af3e7a447d23c20ce31da9cad5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:04 +0000 Subject: [PATCH 280/320] Fixed selectVersion syntax (introduced by trunk merge) svn path=/nixpkgs/branches/stdenv-updates/; revision=10603 --- pkgs/top-level/all-packages.nix | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2329c49b238..2f540339ffc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -944,9 +944,8 @@ rec { inherit fetchurl stdenv ncurses; }; - zshFun = lib.sumArgs (selectVersion ../shells/zsh) { + zshFun = lib.sumArgs (selectVersion ../shells/zsh "4.3.5") { inherit fetchurl stdenv ncurses coreutils; - version = "4.3.5"; }; zsh = zshFun null; @@ -2665,9 +2664,8 @@ rec { qt = qt4; }; - tkFun = lib.sumArgs (selectVersion ../development/libraries/tk) { + tkFun = lib.sumArgs (selectVersion ../development/libraries/tk "8.4.16") { inherit fetchurl stdenv tcl x11; - version = "8.4.16"; }; tk = tkFun null; @@ -3868,10 +3866,9 @@ rec { inherit fetchurl stdenv cabextract; }; - xkeyboard_configFun = lib.sumArgs (selectVersion ../data/misc/xkeyboard-config ) { + xkeyboard_configFun = lib.sumArgs (selectVersion ../data/misc/xkeyboard-config "1.2") { inherit fetchurl stdenv perl perlXMLParser gettext; inherit (xlibs) xkbcomp; - version = "1.2"; }; xkeyboard_config = xkeyboard_configFun null; From 80d81c1a822c849a50ada4c48be135d8b9faf972 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:10 +0000 Subject: [PATCH 281/320] Ncurses: more compatibility .la's svn path=/nixpkgs/branches/stdenv-updates/; revision=10604 --- pkgs/development/libraries/ncurses/5.6.nix | 22 +++++++++++++++++++ .../development/libraries/ncurses/default.nix | 19 ---------------- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 pkgs/development/libraries/ncurses/5.6.nix delete mode 100644 pkgs/development/libraries/ncurses/default.nix diff --git a/pkgs/development/libraries/ncurses/5.6.nix b/pkgs/development/libraries/ncurses/5.6.nix new file mode 100644 index 00000000000..d7ad5806605 --- /dev/null +++ b/pkgs/development/libraries/ncurses/5.6.nix @@ -0,0 +1,22 @@ +args: with args; + +stdenv.mkDerivation { + name = "ncurses-5.6"; + src = fetchurl { + url = mirror://gnu/ncurses/ncurses-5.6.tar.gz; + sha256 = "1m94axgq3y9c4ld0sba63rls1611fncra49ppijpv8w32srw5jpr"; + }; + configureFlags = [ "--with-shared" "--without-normal" + "--includedir=\${out}/include" "--without-debug"] + ++ (if unicode then ["--enable-widec"] else []); + postInstall= if unicode then " + chmod -v 644 $out/lib/libncurses++w.a + for lib in curses ncurses form panel menu; do + echo \"INPUT(-l\${lib}w)\" > $out/lib/lib\${lib}.so + done + echo \"INPUT(-lncursesw)\" > $out/lib/libcursesw.so + " else " + chmod -v 644 $out/lib/libncurses++.a + echo \"INPUT(-lncurses)\" > $out/lib/libcurses.so + "; +} diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix deleted file mode 100644 index 49045546975..00000000000 --- a/pkgs/development/libraries/ncurses/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{stdenv, fetchurl, unicode ? true}: - -stdenv.mkDerivation { - name = "ncurses-5.6"; - src = fetchurl { - url = mirror://gnu/ncurses/ncurses-5.6.tar.gz; - md5 = "b6593abe1089d6aab1551c105c9300e3"; - }; - configureFlags="--with-shared --includedir=\${out}/include"+(if unicode then " --enable-widec " else " ") +" --without-debug"; - postInstall= if unicode then " - chmod -v 644 $out/lib/libncurses++w.a - for lib in curses ncurses form panel menu; do - rm -vf $out/lib/lib\${lib}.so - echo \"INPUT(-l\${lib}w)\" > $out/lib/lib\${lib}.so - ln -svf lib\${lib}w.a $out/lib/lib\${lib}.a - ln -svf lib\${lib}w.so.5 $out/lib/lib\${lib}.so.5 - done; - " else ""; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2f540339ffc..ac727a2dfa2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2465,7 +2465,7 @@ rec { inherit fetchurl stdenv mysql libtool zlib unixODBC; }; - ncurses = import ../development/libraries/ncurses { + ncurses = selectVersion ../development/libraries/ncurses "5.6" { inherit fetchurl stdenv; unicode = (system != "i686-cygwin"); }; From 5a69612d68c71860af19eb4ce936b9ec3faa88a7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:17 +0000 Subject: [PATCH 282/320] ntfs-3g: version updated svn path=/nixpkgs/branches/stdenv-updates/; revision=10605 --- pkgs/misc/ntfs-3g/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/misc/ntfs-3g/default.nix b/pkgs/misc/ntfs-3g/default.nix index 5f6a0bdbc5f..1962f6764e8 100644 --- a/pkgs/misc/ntfs-3g/default.nix +++ b/pkgs/misc/ntfs-3g/default.nix @@ -1,9 +1,9 @@ args: with args; stdenv.mkDerivation rec { - name = "ntfs-3g-1.1104"; + name = "ntfs-3g-1.2129"; src = fetchurl { url = "${meta.homepage}/${name}.tgz"; - sha256 = "1m96c3vxm051lpy3kyik9s0m390rj6ngm11xmahfhw61794jzbyp"; + sha256 = "00fqg39m5myi46kgsssxmpya6g8y32z6ggqc2snjrv0znfg3009i"; }; buildInputs = [fuse pkgconfig]; preConfigure="sed -e 's:/sbin:@sbindir@:' -i src/Makefile.in"; From 2c0bf029fb05985cbf9e6a9a3fb41d50634eb45e Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:23 +0000 Subject: [PATCH 283/320] Postgresql: 8.3.0 added, using selectVersion svn path=/nixpkgs/branches/stdenv-updates/; revision=10606 --- pkgs/servers/sql/postgresql/8.2.6.nix | 14 ++++++++++++++ pkgs/servers/sql/postgresql/8.3.0.nix | 14 ++++++++++++++ pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 pkgs/servers/sql/postgresql/8.2.6.nix create mode 100644 pkgs/servers/sql/postgresql/8.3.0.nix diff --git a/pkgs/servers/sql/postgresql/8.2.6.nix b/pkgs/servers/sql/postgresql/8.2.6.nix new file mode 100644 index 00000000000..f5ce8741f86 --- /dev/null +++ b/pkgs/servers/sql/postgresql/8.2.6.nix @@ -0,0 +1,14 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "postgresql-" + version; + LC_ALL = "en_US"; + + src = fetchurl { + url = "ftp://ftp.de.postgresql.org/mirror/postgresql/source/v${version}/${name}.tar.bz2"; + sha256="056ixbsfmdwhniryc0mr1kl66jywkqqhqvjdi7i3v4qzh9z34hgf"; + }; + + passthru = { inherit readline; }; + buildInputs = [zlib ncurses readline]; +} diff --git a/pkgs/servers/sql/postgresql/8.3.0.nix b/pkgs/servers/sql/postgresql/8.3.0.nix new file mode 100644 index 00000000000..04244fff85b --- /dev/null +++ b/pkgs/servers/sql/postgresql/8.3.0.nix @@ -0,0 +1,14 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "postgresql-" + version; + LC_ALL = "en_US"; + + src = fetchurl { + url = "ftp://ftp.de.postgresql.org/mirror/postgresql/source/v${version}/${name}.tar.bz2"; + sha256="19kf0q45d5zd1rxffin0iblizckk8cp6fpgb52sipqkpnmm6sdc5"; + }; + + passthru = { inherit readline; }; + buildInputs = [zlib ncurses readline]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ac727a2dfa2..d571012f630 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3236,7 +3236,7 @@ rec { inherit fetchurl stdenv openssh; }; - postgresql = import ../servers/sql/postgresql { + postgresql = selectVersion ../servers/sql/postgresql "8.3.0" { inherit fetchurl stdenv readline ncurses zlib; }; From 0a270d49e751926118acf9477493d497a0dc50a7 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:29 +0000 Subject: [PATCH 284/320] libsigsegv: shared svn path=/nixpkgs/branches/stdenv-updates/; revision=10607 --- pkgs/development/libraries/libsigsegv/2.5.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/libsigsegv/2.5.nix b/pkgs/development/libraries/libsigsegv/2.5.nix index 11f69753dc8..a8711b3e3da 100644 --- a/pkgs/development/libraries/libsigsegv/2.5.nix +++ b/pkgs/development/libraries/libsigsegv/2.5.nix @@ -7,6 +7,8 @@ stdenv.mkDerivation rec { sha256 = "0fvcsq9msi63vrbpvks6mqkrnls5cfy6bzww063sqhk2h49vsyyg"; }; + configureFlags = "--enable-shared --disable-static"; + meta = { homepage = http://libsigsegv.sf.net; description = "A library for handling page faults in user mode"; From cc0430ca4b93204a0f7f9b997bd6cd6b3904b5b3 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:35 +0000 Subject: [PATCH 285/320] gettext: shared svn path=/nixpkgs/branches/stdenv-updates/; revision=10608 --- pkgs/development/libraries/gettext/0.17.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/gettext/0.17.nix b/pkgs/development/libraries/gettext/0.17.nix index 6063f74612b..5fc60d9b8a6 100644 --- a/pkgs/development/libraries/gettext/0.17.nix +++ b/pkgs/development/libraries/gettext/0.17.nix @@ -5,5 +5,5 @@ stdenv.mkDerivation rec { url = "mirror://gnu/gettext/${name}.tar.gz"; sha256 = "1fipjpaxxwifdw6cbr7mkxp1yvy643i38nhlh7124bqnisxki5i0"; }; - configureFlags = "--disable-csharp"; + configureFlags = "--disable-csharp --enable-shared --disable-static"; } From 6e337bd44dea8ef8267b2787f932983de78e2820 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:40 +0000 Subject: [PATCH 286/320] libxslt: propagating libxml2 svn path=/nixpkgs/branches/stdenv-updates/; revision=10609 --- pkgs/development/libraries/libxslt/default.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/libxslt/default.nix b/pkgs/development/libraries/libxslt/default.nix index 896d0fc563b..0d86ff615d4 100644 --- a/pkgs/development/libraries/libxslt/default.nix +++ b/pkgs/development/libraries/libxslt/default.nix @@ -1,6 +1,4 @@ -{stdenv, fetchurl, libxml2}: - -assert libxml2 != null; +args: with args; stdenv.mkDerivation { name = "libxslt-1.1.22"; @@ -8,6 +6,6 @@ stdenv.mkDerivation { url = ftp://xmlsoft.org/libxml2/libxslt-1.1.22.tar.gz; sha256 = "1nj9pvn4ibhwxpl3ry9n6d7jahppcnqc7mi87nld4vsr2vp3j7sf"; }; - buildInputs = [libxml2]; - postInstall = "ensureDir $out/nix-support; ln -s ${libxml2}/nix-support/setup-hook $out/nix-support/"; + propagatedBuildInputs = [libxml2]; + configureFlags = "--enable-shared --disable-static"; } From b5b189bed8426ff6d1e3047c9cf5bfd57778a02d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:45 +0000 Subject: [PATCH 287/320] postgresql: forgotten to remove unused default.nix and builder.sh svn path=/nixpkgs/branches/stdenv-updates/; revision=10610 --- pkgs/servers/sql/postgresql/builder.sh | 10 ---------- pkgs/servers/sql/postgresql/default.nix | 18 ------------------ 2 files changed, 28 deletions(-) delete mode 100755 pkgs/servers/sql/postgresql/builder.sh delete mode 100644 pkgs/servers/sql/postgresql/default.nix diff --git a/pkgs/servers/sql/postgresql/builder.sh b/pkgs/servers/sql/postgresql/builder.sh deleted file mode 100755 index 20e50ec1ec6..00000000000 --- a/pkgs/servers/sql/postgresql/builder.sh +++ /dev/null @@ -1,10 +0,0 @@ -source $stdenv/setup - -export LANG=en_US - -# configureFlags="" -# if test "$jdbcSupport"; then -# configureFlags="--with-java $configureFlags" -# fi - -genericBuild diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix deleted file mode 100644 index a46f99e454b..00000000000 --- a/pkgs/servers/sql/postgresql/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{stdenv, fetchurl, zlib, ncurses, readline}: - -assert zlib != null; -assert ncurses != null; -assert readline != null; - -stdenv.mkDerivation { - name = "postgresql-8.2.6"; - builder = ./builder.sh; - - src = fetchurl { - url = ftp://ftp.de.postgresql.org/mirror/postgresql/source/v8.2.6/postgresql-8.2.6.tar.bz2; - sha256="056ixbsfmdwhniryc0mr1kl66jywkqqhqvjdi7i3v4qzh9z34hgf"; - }; - - inherit readline; - buildInputs = [zlib ncurses readline]; -} From e2751942c733c1fe4974ea1108076bd3ad066a2a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:51 +0000 Subject: [PATCH 288/320] cmake: 2.4.8 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10611 --- .../tools/build-managers/cmake/2.4.7.nix | 3 +++ .../tools/build-managers/cmake/2.4.8.nix | 3 +++ .../tools/build-managers/cmake/common.nix | 19 ++++++++++++++++++ .../tools/build-managers/cmake/default.nix | 20 ------------------- pkgs/top-level/all-packages.nix | 2 +- 5 files changed, 26 insertions(+), 21 deletions(-) create mode 100644 pkgs/development/tools/build-managers/cmake/2.4.7.nix create mode 100644 pkgs/development/tools/build-managers/cmake/2.4.8.nix create mode 100644 pkgs/development/tools/build-managers/cmake/common.nix delete mode 100644 pkgs/development/tools/build-managers/cmake/default.nix diff --git a/pkgs/development/tools/build-managers/cmake/2.4.7.nix b/pkgs/development/tools/build-managers/cmake/2.4.7.nix new file mode 100644 index 00000000000..a731d0a4d7d --- /dev/null +++ b/pkgs/development/tools/build-managers/cmake/2.4.7.nix @@ -0,0 +1,3 @@ +args: (import ./common.nix) { + sha256 = "0mkx23s7zq48hzzzw3vbzsfzfz3rjsiwgf3i00xawcxrjjrgxm9g"; +} (args // { v = "2.4"; }) diff --git a/pkgs/development/tools/build-managers/cmake/2.4.8.nix b/pkgs/development/tools/build-managers/cmake/2.4.8.nix new file mode 100644 index 00000000000..27eb5ea396a --- /dev/null +++ b/pkgs/development/tools/build-managers/cmake/2.4.8.nix @@ -0,0 +1,3 @@ +args: (import ./common.nix) { + sha256 = "1w9i0qrbciym5ahag24xyp1x0qj6awq1cs07hdjflxikyga0f1pj"; +} (args // { v = "2.4"; }) diff --git a/pkgs/development/tools/build-managers/cmake/common.nix b/pkgs/development/tools/build-managers/cmake/common.nix new file mode 100644 index 00000000000..ab1f01bf2d7 --- /dev/null +++ b/pkgs/development/tools/build-managers/cmake/common.nix @@ -0,0 +1,19 @@ +hash: args: with args; +stdenv.mkDerivation rec { + name = "cmake-" + version; + setupHook = ./setup-hook.sh; + + src = fetchurl ({ + url = "http://www.cmake.org/files/v${v}/${name}.tar.gz"; + } // hash); + + propagatedBuildInputs = [replace]; + + postUnpack = "source ${setupHook}; fixCmakeFiles \${sourceRoot}"; + + postInstall="fixCmakeFiles \$out/share"; + + meta = { + description = "Cross-Platform Makefile Generator"; + }; +} diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix deleted file mode 100644 index 45311ee0e3c..00000000000 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -args: with args; -stdenv.mkDerivation { - name = "cmake-2.4.7"; - setupHook = ./setup-hook.sh; - - src = fetchurl { - url = http://www.cmake.org/files/v2.4/cmake-2.4.7.tar.gz; - sha256 = "0mkx23s7zq48hzzzw3vbzsfzfz3rjsiwgf3i00xawcxrjjrgxm9g"; - }; - - propagatedBuildInputs = [replace]; - - postUnpack = "source \${setupHook}; fixCmakeFiles \${sourceRoot}"; - - postInstall="fixCmakeFiles \$out/share"; - - meta = { - description = "Cross-Platform Makefile Generator"; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d571012f630..fbfaef10bc8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1525,7 +1525,7 @@ rec { inherit fetchurl stdenv; }; - cmake = import ../development/tools/build-managers/cmake { + cmake = (selectVersion ../development/tools/build-managers/cmake "2.4.8") { inherit fetchurl stdenv replace; }; From c3193c538a6eb2221cae268a15d361b8197cbed5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:41:58 +0000 Subject: [PATCH 289/320] sqlite: 3.5.6 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10612 --- .../sqlite/{default.nix => 3.3.13.nix} | 0 pkgs/development/libraries/sqlite/3.5.6.nix | 18 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++-- 3 files changed, 20 insertions(+), 2 deletions(-) rename pkgs/development/libraries/sqlite/{default.nix => 3.3.13.nix} (100%) create mode 100644 pkgs/development/libraries/sqlite/3.5.6.nix diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/3.3.13.nix similarity index 100% rename from pkgs/development/libraries/sqlite/default.nix rename to pkgs/development/libraries/sqlite/3.3.13.nix diff --git a/pkgs/development/libraries/sqlite/3.5.6.nix b/pkgs/development/libraries/sqlite/3.5.6.nix new file mode 100644 index 00000000000..702e5693ba0 --- /dev/null +++ b/pkgs/development/libraries/sqlite/3.5.6.nix @@ -0,0 +1,18 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "sqlite-" + version; + + src = fetchurl { + url = "${meta.homepage}/${name}.tar.gz"; + sha256 = "1fz82x3wp2h1g701w8qrsg58hc0jmrhw2593crx0c663iqhvjwqn"; + }; + + configureFlags = "--enable-shared --disable-static"; + + propagatedBuildInputs = [readline]; + + meta = { + homepage = http://www.sqlite.org; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fbfaef10bc8..3c1f7c8f7c1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2632,8 +2632,8 @@ rec { inherit fetchurl stdenv libogg; }; - sqlite = import ../development/libraries/sqlite { - inherit fetchurl stdenv; + sqlite = selectVersion ../development/libraries/sqlite "3.5.6" { + inherit fetchurl stdenv readline; }; t1lib = import ../development/libraries/t1lib { From 1cf8a9d0ede42a95033822187d6210ab08b6311a Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:42:02 +0000 Subject: [PATCH 290/320] readline5: shared, using sha256 svn path=/nixpkgs/branches/stdenv-updates/; revision=10613 --- pkgs/development/libraries/readline/readline5.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/readline/readline5.nix b/pkgs/development/libraries/readline/readline5.nix index a0e7ffd72d2..96ec1ffea79 100644 --- a/pkgs/development/libraries/readline/readline5.nix +++ b/pkgs/development/libraries/readline/readline5.nix @@ -1,11 +1,12 @@ -{ stdenv, fetchurl, ncurses }: +args: with args; stdenv.mkDerivation { name = "readline-5.2"; src = fetchurl { url = mirror://gnu/readline/readline-5.2.tar.gz; - md5 = "e39331f32ad14009b9ff49cc10c5e751"; + sha256 = "0icz4hqqq8mlkwrpczyaha94kns0am9z0mh3a2913kg2msb8vs0j"; }; propagatedBuildInputs = [ncurses]; + configureFlags = "--enable-shared --disable-static"; patches = stdenv.lib.optional stdenv.isDarwin ./shobj-darwin.patch; } From 615ef1d16b3aac124e104be4858e41b6dc89a1de Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:42:06 +0000 Subject: [PATCH 291/320] gnupg: idea support is optional, defaults to false svn path=/nixpkgs/branches/stdenv-updates/; revision=10614 --- 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 3c1f7c8f7c1..efe3eae576a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -511,7 +511,7 @@ rec { gnupg = import ../tools/security/gnupg { inherit fetchurl stdenv readline; - ideaSupport = true; # enable for IDEA crypto support + ideaSupport = getConfig [ "gnupg" "idea" ] false; # enable for IDEA crypto support }; gnupg2 = import ../tools/security/gnupg2 { From 40e41fe36263215d0f1dab6721c389f819a18377 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:42:11 +0000 Subject: [PATCH 292/320] redland: more dependencies svn path=/nixpkgs/branches/stdenv-updates/; revision=10615 --- pkgs/development/libraries/redland/default.nix | 8 +++++--- pkgs/top-level/all-packages.nix | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/redland/default.nix b/pkgs/development/libraries/redland/default.nix index 37d899feb70..d344fbc0ac3 100644 --- a/pkgs/development/libraries/redland/default.nix +++ b/pkgs/development/libraries/redland/default.nix @@ -4,10 +4,12 @@ stdenv.mkDerivation rec { name = "redland-1.0.7"; src = fetchurl { - url = "sf://librdf/${name}.tar.gz"; + url = "mirror://sf/librdf/${name}.tar.gz"; sha256 = "1z160hhrnlyy5c8vh2hjza6kdfmzml8mg9dk8yffifkhnxjq5r2z"; }; - buildInputs = [ bdb openssl libxml2 pkgconfig perl]; - configureFlags="--without-static --with-threads --with-bdb=${bdb}"; + buildInputs = [pkgconfig]; + propagatedBuildInputs = [ bdb openssl libxslt perl mysql postgresql sqlite + curl pcre]; + configureFlags = "--disable-static --with-threads --with-bdb=${bdb}"; patchPhase="sed -e 1s@/usr@${perl}@ -i utils/touch-mtime.pl"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index efe3eae576a..7f7127e791f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2592,8 +2592,9 @@ rec { # Also known as librdf, includes raptor and rasqal redland = import ../development/libraries/redland { - inherit fetchurl stdenv openssl libxml2 pkgconfig perl; - bdb = db4; + inherit fetchurl stdenv openssl libxml2 pkgconfig perl postgresql sqlite + mysql libxslt curl pcre; + bdb = db4; }; rte = import ../development/libraries/rte { From e748c421154f09356a077b2803b2267f5136faf6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:42:16 +0000 Subject: [PATCH 293/320] ImageMagick: version updated svn path=/nixpkgs/branches/stdenv-updates/; revision=10616 --- pkgs/applications/graphics/ImageMagick/6.3.8-5.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/graphics/ImageMagick/6.3.8-5.nix b/pkgs/applications/graphics/ImageMagick/6.3.8-5.nix index 87e40ae74a1..83c7075f8e5 100644 --- a/pkgs/applications/graphics/ImageMagick/6.3.8-5.nix +++ b/pkgs/applications/graphics/ImageMagick/6.3.8-5.nix @@ -1,9 +1,9 @@ args: with args; stdenv.mkDerivation (rec { - name = "ImageMagick-6.3.8-2"; + name = "ImageMagick-6.3.8-5"; src = fetchurl { - url = ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.8-5.tar.bz2; + url = "ftp://ftp.imagemagick.org/pub/ImageMagick/${name}.tar.bz2"; sha256 = "0lsvi2z5b5zam6yvjzsyjpa36rg1c0kczifz73k9b4v8zz9a9vfl"; }; From 270646012a2db97eaeafc67ab5ba449db8dfd8e4 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Sun, 10 Feb 2008 17:42:20 +0000 Subject: [PATCH 294/320] qt-4: sha256 update. May be, they export some external repo? svn path=/nixpkgs/branches/stdenv-updates/; revision=10617 --- pkgs/development/libraries/qt-4/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/qt-4/default.nix b/pkgs/development/libraries/qt-4/default.nix index 9d7c1e336d6..ebb10c1aa04 100644 --- a/pkgs/development/libraries/qt-4/default.nix +++ b/pkgs/development/libraries/qt-4/default.nix @@ -30,7 +30,7 @@ rec { src = fetchsvn { url = svn://anonsvn.kde.org/home/kde/trunk/qt-copy; rev = "772114"; - sha256 = "0nd437yikz5skyqfczk0376rbgdgmsfc9gpqw207gqv6x5hcp3rj"; + sha256 = "cf8b418af39663b37726adf456ac115be5d86bdca700d65954a52042e4992acd"; }; patchPhase = "mkdir .svn; bash apply_patches;" + common.patchPhase; }); From a25344377e358facb1be09c1395ccb7ac63edb33 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Tue, 12 Feb 2008 21:47:49 +0000 Subject: [PATCH 295/320] Ported ffmpeg_svn tarball link; fixes to iptables svn path=/nixpkgs/branches/stdenv-updates/; revision=10651 --- .../libraries/ffmpeg_svn_snapshot/default.nix | 7 ++--- pkgs/os-specific/linux/iptables/1.4.0.nix | 29 +++++++++++++++++++ pkgs/os-specific/linux/iptables/default.nix | 10 ------- pkgs/top-level/all-packages.nix | 6 ++-- 4 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 pkgs/os-specific/linux/iptables/1.4.0.nix delete mode 100644 pkgs/os-specific/linux/iptables/default.nix diff --git a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix index 5cfb90e4858..1c7d07aedd8 100644 --- a/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix +++ b/pkgs/development/libraries/ffmpeg_svn_snapshot/default.nix @@ -2,10 +2,9 @@ args: with args; stdenv.mkDerivation { name = "ffmpeg-svn-2007-12-04"; - src = fetchsvn { - url = svn://svn.mplayerhq.hu/ffmpeg/trunk ; - rev = "11164"; - sha256 = "80d3b3311abaf8343b73c711f02d269e8c87991f2c3d0f08e32309d39ad6aa3b"; + src = fetchurl { + url = http://nix.cs.uu.nl/dist/tarballs/ffmpeg-svn-r11901.tar.bz2; + sha256 = "0l5207gnfaz57pvlxpxyjphyz0mp9plnxzd0aghy0nz3hmqh4rs7"; }; propagatedBuildInputs = [ a52dec lame libtheora x11 zlib SDL]; diff --git a/pkgs/os-specific/linux/iptables/1.4.0.nix b/pkgs/os-specific/linux/iptables/1.4.0.nix new file mode 100644 index 00000000000..ba4fbd06db8 --- /dev/null +++ b/pkgs/os-specific/linux/iptables/1.4.0.nix @@ -0,0 +1,29 @@ +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs (rec { + src = /* put a fetchurl here */ + fetchurl { + url = http://www.netfilter.org/projects/iptables/files/iptables-1.4.0.tar.bz2; + sha256 = "0ljxbvdlg5mfxk0y00dr0qvsri1d495ci1pr8hrzga766n09g6px"; + }; + + buildInputs = []; + configureFlags = []; + makeFlags = [ + " KERNEL_DIR=${kernelHeaders} " + ]; + preBuild = FullDepEntry ('' + sed -e 's@/usr/local@'$out'@' -i Makefile Rules.make + '') ["doUnpack" "minInit"]; + }) null; /* null is a terminator for sumArgs */ + in with localDefs; +stdenv.mkDerivation rec { + name = "iptables-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [preBuild doMakeInstall doForceShare doPropagate]); + meta = { + description = " + IPtables Linux firewall. +"; + }; +} diff --git a/pkgs/os-specific/linux/iptables/default.nix b/pkgs/os-specific/linux/iptables/default.nix deleted file mode 100644 index 606cf7796f9..00000000000 --- a/pkgs/os-specific/linux/iptables/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{stdenv, fetchurl}: - -stdenv.mkDerivation { - name = "iptables-1.3.7"; - src = fetchurl { - url = http://www.netfilter.org/projects/iptables/files/iptables-1.3.7.tar.bz2; - sha256 = "00nffc03akgm5p0skz90nl29h5d8b9fjc0d9lhipkbwy0ahcw00f"; - }; - preBuild = "makeFlagsArray=(PREFIX=$out)"; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7f7127e791f..4567484777a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3419,10 +3419,12 @@ rec { kernelHeaders = stdenv.gcc.libc.kernelHeaders; }; - iptables = import ../os-specific/linux/iptables { - inherit fetchurl stdenv; + iptablesFun = lib.sumArgs (selectVersion ../os-specific/linux/iptables "1.4.0") { + inherit builderDefs kernelHeaders; }; + iptables = iptablesFun null; + ipw2200fw = import ../os-specific/linux/firmware/ipw2200 { inherit fetchurl stdenv; }; From 3db3e079afaaae281124ee9ff1b34df3fa197824 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Tue, 12 Feb 2008 22:36:00 +0000 Subject: [PATCH 296/320] Ported ffmpeg_svn tarball link - correction to all-packages link svn path=/nixpkgs/branches/stdenv-updates/; revision=10652 --- 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 4567484777a..82940ce7997 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1909,7 +1909,7 @@ rec { }; ffmpeg_svn = import ../development/libraries/ffmpeg_svn_snapshot { - inherit fetchsvn stdenv a52dec libtheora x11 lame zlib SDL; + inherit fetchurl stdenv a52dec libtheora x11 lame zlib SDL; }; fftw = import ../development/libraries/fftw { From 5f45fb3ae986119b4360613901a1c033a2ee327e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 13 Feb 2008 14:23:09 +0000 Subject: [PATCH 297/320] * substitute() in stdenv: use the replace program instead of awful sed hackery. * Some indentation fixes in setup.sh. svn path=/nixpkgs/branches/stdenv-updates/; revision=10658 --- pkgs/build-support/gcc-wrapper/builder.sh | 19 +++-- .../libraries/glibc-2.7/builder.sh | 5 +- .../libraries/glibc-2.7/default.nix | 2 - .../glibc-2.7/glibc-getcwd-param-MAX.patch | 14 ---- .../libraries/glibc-2.7/glibc-pwd.patch | 74 ------------------- pkgs/stdenv/common-path.nix | 1 + pkgs/stdenv/cygwin/prehook.sh | 2 + pkgs/stdenv/generic/builder.sh | 25 ++++--- pkgs/stdenv/generic/setup.sh | 70 ++++++++---------- pkgs/tools/text/replace/default.nix | 11 +-- pkgs/top-level/all-packages.nix | 1 + 11 files changed, 66 insertions(+), 158 deletions(-) delete mode 100644 pkgs/development/libraries/glibc-2.7/glibc-getcwd-param-MAX.patch delete mode 100644 pkgs/development/libraries/glibc-2.7/glibc-pwd.patch diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index f9dbc0e784f..c263b3f330e 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -50,14 +50,17 @@ fi doSubstitute() { local src=$1 local dst=$2 - substitute "$src" "$dst" \ - --subst-var "out" \ - --subst-var "shell" \ - --subst-var "gcc" \ - --subst-var "gccProg" \ - --subst-var "binutils" \ - --subst-var "libc" \ - --subst-var-by "ld" "$ldPath/ld" + # Can't use substitute() here, because replace may not have been + # built yet (in the bootstrap). + sed \ + -e "s^@out@^$out^" \ + -e "s^@shell@^$shell^" \ + -e "s^@gcc@^$gcc^" \ + -e "s^@gccProg@^$gccProg^" \ + -e "s^@binutils@^$binutils^" \ + -e "s^@libc@^$libc^" \ + -e "s^@ld@^$ldPath/ld^" \ + < "$src" > "$dst" } diff --git a/pkgs/development/libraries/glibc-2.7/builder.sh b/pkgs/development/libraries/glibc-2.7/builder.sh index 3e874ed891c..2418d0bf365 100644 --- a/pkgs/development/libraries/glibc-2.7/builder.sh +++ b/pkgs/development/libraries/glibc-2.7/builder.sh @@ -12,8 +12,9 @@ preConfigure=preConfigure preConfigure() { for i in configure io/ftwtest-sh; do - substituteInPlace "$i" \ - --replace "@PWD@" "pwd" + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$(type -tP pwd)^" done # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older diff --git a/pkgs/development/libraries/glibc-2.7/default.nix b/pkgs/development/libraries/glibc-2.7/default.nix index 8a5a84bd2c6..f33f95fda9f 100644 --- a/pkgs/development/libraries/glibc-2.7/default.nix +++ b/pkgs/development/libraries/glibc-2.7/default.nix @@ -12,8 +12,6 @@ stdenv.mkDerivation { sha256 = "06j5q20l11x8kcrl9bg15xgb1pw0w82pazikxf4zvq2fmhiaa922"; }; - patches = [ ./glibc-pwd.patch ./glibc-getcwd-param-MAX.patch ]; - inherit kernelHeaders installLocales; inherit (stdenv) is64bit; diff --git a/pkgs/development/libraries/glibc-2.7/glibc-getcwd-param-MAX.patch b/pkgs/development/libraries/glibc-2.7/glibc-getcwd-param-MAX.patch deleted file mode 100644 index 8543dbbf1d7..00000000000 --- a/pkgs/development/libraries/glibc-2.7/glibc-getcwd-param-MAX.patch +++ /dev/null @@ -1,14 +0,0 @@ -2006-06-18 Mike Frysinger - - * sysdeps/unix/sysv/linux/getcwd.c: Include sys/param.h. - ---- glibc-old/sysdeps/unix/sysv/linux/getcwd.c -+++ glibc-new/sysdeps/unix/sysv/linux/getcwd.c -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - - #include - #include diff --git a/pkgs/development/libraries/glibc-2.7/glibc-pwd.patch b/pkgs/development/libraries/glibc-2.7/glibc-pwd.patch deleted file mode 100644 index 07039718477..00000000000 --- a/pkgs/development/libraries/glibc-2.7/glibc-pwd.patch +++ /dev/null @@ -1,74 +0,0 @@ -diff -ruN glibc-20050110/configure glibc-20050110.patched/configure ---- glibc-20050110/configure 2005-01-05 10:39:53.000000000 +0100 -+++ glibc-20050110.patched/configure 2005-01-18 13:33:01.000000000 +0100 -@@ -1393,7 +1393,7 @@ - ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - - --if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then -+if test "`cd $srcdir; @PWD@`" = "`@PWD@`"; then - { { echo "$as_me:$LINENO: error: you must configure in a separate build directory" >&5 - echo "$as_me: error: you must configure in a separate build directory" >&2;} - { (exit 1); exit 1; }; } -diff -ruN glibc-20050110/io/ftwtest-sh glibc-20050110.patched/io/ftwtest-sh ---- glibc-20050110/io/ftwtest-sh 2004-02-09 21:12:23.000000000 +0100 -+++ glibc-20050110.patched/io/ftwtest-sh 2005-01-18 13:33:15.000000000 +0100 -@@ -120,7 +120,7 @@ - sort > $testout - - # perhaps $tmp involves some symlinks... --tmpreal=`cd $tmp; /bin/pwd 2>/dev/null || /usr/bin/pwd` -+tmpreal=`cd $tmp; @PWD@ 2>/dev/null || /usr/bin/pwd` - - cat </dev/null || /usr/bin/pwd` -+curwd=`@PWD@ 2>/dev/null || /usr/bin/pwd` - cd "$tmp" - LD_LIBRARY_PATH=$objpfx $ldso $testprogram --chdir ftwtest.d | - sort > $testout -@@ -160,7 +160,7 @@ - EOF - rm $testout - --curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd` -+curwd=`@PWD@ 2>/dev/null || /usr/bin/pwd` - cd "$tmp" - LD_LIBRARY_PATH=$objpfx $ldso $testprogram --chdir ftwtest.d/. | - sort > $testout -@@ -182,7 +182,7 @@ - EOF - rm $testout - --curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd` -+curwd=`@PWD@ 2>/dev/null || /usr/bin/pwd` - cd "$tmp" - LD_LIBRARY_PATH=$objpfx $ldso $testprogram --chdir ftwtest.d/foo/lvl1/link@1 | - sort > $testout -diff -ruN glibc-20050110/scripts/rellns-sh glibc-20050110.patched/scripts/rellns-sh ---- glibc-20050110/scripts/rellns-sh 1999-12-19 00:40:25.000000000 +0100 -+++ glibc-20050110.patched/scripts/rellns-sh 2005-01-18 13:35:53.245937423 +0100 -@@ -22,13 +22,13 @@ - exit 1 - fi - --if test -x /bin/pwd; then -- pwd=/bin/pwd --elif test -x /usr/bin/pwd; then -- pwd=/usr/bin/pwd --else -+#if test -x /bin/pwd; then -+# pwd=/bin/pwd -+#elif test -x /usr/bin/pwd; then -+# pwd=/usr/bin/pwd -+#else - pwd='pwd' --fi -+#fi - - # Make both paths absolute. - if test -d $1; then diff --git a/pkgs/stdenv/common-path.nix b/pkgs/stdenv/common-path.nix index 0ad0d83255b..3b267a543c6 100644 --- a/pkgs/stdenv/common-path.nix +++ b/pkgs/stdenv/common-path.nix @@ -11,4 +11,5 @@ pkgs.gnumake pkgs.bash pkgs.patch + pkgs.replace ] diff --git a/pkgs/stdenv/cygwin/prehook.sh b/pkgs/stdenv/cygwin/prehook.sh index 673640c0d4a..b2ada869b29 100644 --- a/pkgs/stdenv/cygwin/prehook.sh +++ b/pkgs/stdenv/cygwin/prehook.sh @@ -3,3 +3,5 @@ export NIX_ENFORCE_PURITY= if test -z "$cygwinConfigureEnableShared"; then export configureFlags="$configureFlags --disable-shared" fi + +PATH_DELIMITER=';' diff --git a/pkgs/stdenv/generic/builder.sh b/pkgs/stdenv/generic/builder.sh index ee2dbb3d0f9..2a74f038dca 100644 --- a/pkgs/stdenv/generic/builder.sh +++ b/pkgs/stdenv/generic/builder.sh @@ -8,14 +8,17 @@ source $stdenv/setup mkdir $out -substitute "$setup" "$out/setup" \ - --subst-var preHook \ - --subst-var postHook \ - --subst-var initialPath \ - --subst-var gcc \ - --subst-var shell \ - --subst-var-by param1 "$p1" \ - --subst-var-by param2 "$p2" \ - --subst-var-by param3 "$p3" \ - --subst-var-by param4 "$p4" \ - --subst-var-by param5 "$p5" +# Can't use substitute() here, because replace may not have been +# built yet (in the bootstrap). +sed \ + -e "s^@preHook@^$preHook^" \ + -e "s^@postHook@^$postHook^" \ + -e "s^@initialPath@^$initialPath^" \ + -e "s^@gcc@^$gcc^" \ + -e "s^@shell@^$shell^" \ + -e "s^@param1@^$p1^" \ + -e "s^@param2@^$p2^" \ + -e "s^@param3@^$p3^" \ + -e "s^@param4@^$p4^" \ + -e "s^@param5@^$p5^" \ + < "$setup" > "$out/setup" diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index e91a9ce4dfd..aa76a6eb3b1 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -2,11 +2,9 @@ set -e test -z $NIX_GCC && NIX_GCC=@gcc@ -if [ -z ${system##*cygwin*} ]; then - PATH_DELIMITER=';' -else - PATH_DELIMITER=':' -fi + +# Helper functions that might be useful in setup hooks. + addToSearchPathWithCustomDelimiter() { local delimiter=$1 @@ -28,6 +26,7 @@ addToSearchPath() addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" } + # Set up the initial path. PATH= for i in $NIX_GCC @initialPath@; do @@ -41,6 +40,7 @@ fi # Execute the pre-hook. export SHELL=@shell@ +PATH_DELIMITER=':' if test -z "$shell"; then export shell=@shell@ fi @@ -234,27 +234,17 @@ stripDirs() { fi } + ###################################################################### # Textual substitution functions. -# Some disgusting hackery to escape replacements in Sed substitutions. -# We should really have a tool that replaces literal values by other -# literal values, without any need for escaping. -escapeSed() { - local s="$1" - # The `tr' hack is to escape newlines. Sed handles newlines very - # badly, so we just replace newlines with the magic character 0xff - # (377 octal). So don't use that character in replacements :-P - echo -n "$1" | tr '\012' '\377' | sed -e 's^\\^\\\\^g' -e 's^\xff^\\n^g' -e 's/\^/\\^/g' -e 's/&/\\&/g' -} - - substitute() { local input="$1" local output="$2" local -a params=("$@") + local -a args=() local sedScript=$NIX_BUILD_TOP/.sedargs rm -f $sedScript @@ -284,12 +274,14 @@ substitute() { n=$((n + 2)) fi - replacement="$(escapeSed "$replacement")" - - echo "s^$pattern^$replacement^g" >> $sedScript + if test ${#args[@]} != 0; then + args[${#args[@]}]="-a" + fi + args[${#args[@]}]="$pattern" + args[${#args[@]}]="$replacement" done - sed -f $sedScript < "$input" > "$output".tmp + replace -e -s "${args[@]}" < "$input" > "$output".tmp if test -x "$output"; then chmod +x "$output".tmp fi @@ -537,7 +529,7 @@ unpackW() { unpackPhase() { - sourceRoot=. # don't change to user dir homeless shelter if custom unpackSource does'nt set sourceRoot + sourceRoot=. # don't change to user dir homeless shelter if custom unpackSource doesn't set sourceRoot header "unpacking sources" startLog "unpack" unpackW @@ -751,28 +743,26 @@ fixupW() { eval "$preFixup" - forceShare=${forceShare:=man doc info} - if test -n "$forceShare"; then - for d in $forceShare; do - if test -d "$prefix/$d"; then - if test -d "$prefix/share/$d"; then - echo "Both $d/ and share/$d/ exists!" - else + # Put man/doc/info under $out/share. + forceShare=${forceShare:=man doc info} + if test -n "$forceShare"; then + for d in $forceShare; do + if test -d "$prefix/$d"; then + if test -d "$prefix/share/$d"; then + echo "Both $d/ and share/$d/ exists!" + else echo Fixing location of $d/ subdirectory - ensureDir $prefix/share + ensureDir $prefix/share if test -w $prefix/share; then - mv -v $prefix/$d $prefix/share - ln -sv share/$d $prefix + mv -v $prefix/$d $prefix/share + ln -sv share/$d $prefix fi - fi - else - echo "No $d/ subdirectory, skipping." - fi - done; - fi + fi + fi + done; + fi - -# TODO : strip _only_ ELF executables, and return || fail here... + # TODO: strip _only_ ELF executables, and return || fail here... if test -z "$dontStrip"; then echo "Stripping debuging symbols from files in" stripDirs "${stripDebugList:-lib}" -S diff --git a/pkgs/tools/text/replace/default.nix b/pkgs/tools/text/replace/default.nix index 3135204ef03..b9613ef2077 100644 --- a/pkgs/tools/text/replace/default.nix +++ b/pkgs/tools/text/replace/default.nix @@ -1,4 +1,5 @@ {stdenv, fetchurl}: + stdenv.mkDerivation { name = "replace-2.24"; @@ -7,14 +8,10 @@ stdenv.mkDerivation { sha256 = "1c2nkxx83vmlh1v3ib6r2xqh121gdb1rharwsimcb2h0xwc558dm"; }; - buildInputs = []; - makeFlags = " TREE=\$(out) "; - - postInstall = "mv \$out/bin/replace \$out/bin/replace-literal"; + makeFlags = "TREE=\$(out)"; meta = { - description = " - Replace verbatim strings. Sed is not fit to do it. Replace is. -"; + homepage = http://replace.richardlloyd.org.uk/; + description = "A tool to replace verbatim strings"; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 82940ce7997..7064d11a725 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -321,6 +321,7 @@ rec { nukeReferences = import ../build-support/nuke-references/default.nix { inherit stdenv; }; + ### TOOLS From 908d8286ce779e829609c9e1075c81f2318f6ff4 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 13 Feb 2008 18:27:19 +0000 Subject: [PATCH 298/320] =?UTF-8?q?*=20Add=20--disable-dependency-tracking?= =?UTF-8?q?=20to=20the=20configure=20flags=20if=20=20=20possible.=20=20Thi?= =?UTF-8?q?s=20should=20speed=20up=20builds=20a=20bit.=20=20(Suggested=20b?= =?UTF-8?q?y=20Ludovic=20=20=20Court=C3=A8s.)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/nixpkgs/branches/stdenv-updates/; revision=10662 --- pkgs/stdenv/generic/setup.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index aa76a6eb3b1..34e4e0fd902 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -609,6 +609,13 @@ configureW() { configureFlags="${prefixKey:---prefix=}$prefix $configureFlags" fi + # Add --disable-dependency-tracking to speed up some builds. + if test -z "$dontAddDisableDepTrack"; then + if grep -q dependency-tracking $configureScript; then + configureFlags="--disable-dependency-tracking ${prefixKey:---prefix=}$prefix $configureFlags" + fi + fi + echo "configure flags: $configureFlags ${configureFlagsArray[@]}" $configureScript $configureFlags"${configureFlagsArray[@]}" || fail From 89815eb9a00150c34edcc5872bbc93b9122decdc Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 13 Feb 2008 19:41:37 +0000 Subject: [PATCH 299/320] * gcc-wrapper: Propagate the wrapped gcc, binutils and glibc to the user environment. (NIXPKGS-63) svn path=/nixpkgs/branches/stdenv-updates/; revision=10664 --- pkgs/build-support/gcc-wrapper/builder.sh | 22 +++++++++++++------ .../libraries/glibc-2.7/builder.sh | 2 +- pkgs/stdenv/generic/builder.sh | 20 ++++++++--------- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index c263b3f330e..7a2f9c20f27 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -53,13 +53,13 @@ doSubstitute() { # Can't use substitute() here, because replace may not have been # built yet (in the bootstrap). sed \ - -e "s^@out@^$out^" \ - -e "s^@shell@^$shell^" \ - -e "s^@gcc@^$gcc^" \ - -e "s^@gccProg@^$gccProg^" \ - -e "s^@binutils@^$binutils^" \ - -e "s^@libc@^$libc^" \ - -e "s^@ld@^$ldPath/ld^" \ + -e "s^@out@^$out^g" \ + -e "s^@shell@^$shell^g" \ + -e "s^@gcc@^$gcc^g" \ + -e "s^@gccProg@^$gccProg^g" \ + -e "s^@binutils@^$binutils^g" \ + -e "s^@libc@^$libc^g" \ + -e "s^@ld@^$ldPath/ld^g" \ < "$src" > "$dst" } @@ -111,3 +111,11 @@ doSubstitute "$addFlags" "$out/nix-support/add-flags.sh" doSubstitute "$setupHook" "$out/nix-support/setup-hook" cp -p $utils $out/nix-support/utils.sh + + +# Propagate the wrapped gcc so that if you install the wrapper, you get +# tools like gcov, the manpages, etc. as well (including for binutils +# and Glibc). +if test -z "$nativeTools"; then + echo $gcc $binutils $libc > $out/nix-support/propagated-user-env-packages +fi diff --git a/pkgs/development/libraries/glibc-2.7/builder.sh b/pkgs/development/libraries/glibc-2.7/builder.sh index 2418d0bf365..f9b9c6b87aa 100644 --- a/pkgs/development/libraries/glibc-2.7/builder.sh +++ b/pkgs/development/libraries/glibc-2.7/builder.sh @@ -14,7 +14,7 @@ preConfigure() { for i in configure io/ftwtest-sh; do # Can't use substituteInPlace here because replace hasn't been # built yet in the bootstrap. - sed -i "$i" -e "s^/bin/pwd^$(type -tP pwd)^" + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" done # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older diff --git a/pkgs/stdenv/generic/builder.sh b/pkgs/stdenv/generic/builder.sh index 2a74f038dca..f772b1cc19b 100644 --- a/pkgs/stdenv/generic/builder.sh +++ b/pkgs/stdenv/generic/builder.sh @@ -11,14 +11,14 @@ mkdir $out # Can't use substitute() here, because replace may not have been # built yet (in the bootstrap). sed \ - -e "s^@preHook@^$preHook^" \ - -e "s^@postHook@^$postHook^" \ - -e "s^@initialPath@^$initialPath^" \ - -e "s^@gcc@^$gcc^" \ - -e "s^@shell@^$shell^" \ - -e "s^@param1@^$p1^" \ - -e "s^@param2@^$p2^" \ - -e "s^@param3@^$p3^" \ - -e "s^@param4@^$p4^" \ - -e "s^@param5@^$p5^" \ + -e "s^@preHook@^$preHook^g" \ + -e "s^@postHook@^$postHook^g" \ + -e "s^@initialPath@^$initialPath^g" \ + -e "s^@gcc@^$gcc^g" \ + -e "s^@shell@^$shell^g" \ + -e "s^@param1@^$p1^g" \ + -e "s^@param2@^$p2^g" \ + -e "s^@param3@^$p3^g" \ + -e "s^@param4@^$p4^g" \ + -e "s^@param5@^$p5^g" \ < "$setup" > "$out/setup" From c00c50e10422f2b654d0641096403c0cad3080a5 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Wed, 13 Feb 2008 21:05:52 +0000 Subject: [PATCH 300/320] Added ncursesFun for overriding. svn path=/nixpkgs/branches/stdenv-updates/; revision=10667 --- 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 7064d11a725..e2cf2f63b72 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2466,7 +2466,7 @@ rec { inherit fetchurl stdenv mysql libtool zlib unixODBC; }; - ncurses = selectVersion ../development/libraries/ncurses "5.6" { + ncurses = lib.sumArgs (selectVersion ../development/libraries/ncurses "5.6") { inherit fetchurl stdenv; unicode = (system != "i686-cygwin"); }; From 80612bff712fb4e0ea866950990e4d61da0440b8 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Wed, 13 Feb 2008 21:19:04 +0000 Subject: [PATCH 301/320] Stupid mistake in all-packages.nix svn path=/nixpkgs/branches/stdenv-updates/; revision=10668 --- 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 e2cf2f63b72..47a78aff2cc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2466,11 +2466,13 @@ rec { inherit fetchurl stdenv mysql libtool zlib unixODBC; }; - ncurses = lib.sumArgs (selectVersion ../development/libraries/ncurses "5.6") { + ncursesFun = lib.sumArgs (selectVersion ../development/libraries/ncurses "5.6") { inherit fetchurl stdenv; unicode = (system != "i686-cygwin"); }; + ncurses = ncursesFun null; + ncursesDiet = import ../development/libraries/ncurses-diet { inherit fetchurl; stdenv = useDietLibC stdenv; From d607e902afee834b9a68ca323f1ff11b5c4fd920 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Thu, 14 Feb 2008 20:18:07 +0000 Subject: [PATCH 302/320] Forward port: ccache, FF3b3 svn path=/nixpkgs/branches/stdenv-updates/; revision=10694 --- .../networking/browsers/firefox-3/binary.nix | 55 ++++++++++++++++ .../networking/browsers/firefox-3/builder.sh | 30 +++++++++ .../networking/browsers/firefox-3/default.nix | 64 +++++++++++++++++++ .../development/tools/misc/ccache/default.nix | 15 +++++ pkgs/top-level/all-packages.nix | 13 ++++ 5 files changed, 177 insertions(+) create mode 100644 pkgs/applications/networking/browsers/firefox-3/binary.nix create mode 100644 pkgs/applications/networking/browsers/firefox-3/builder.sh create mode 100644 pkgs/applications/networking/browsers/firefox-3/default.nix create mode 100644 pkgs/development/tools/misc/ccache/default.nix diff --git a/pkgs/applications/networking/browsers/firefox-3/binary.nix b/pkgs/applications/networking/browsers/firefox-3/binary.nix new file mode 100644 index 00000000000..73e002435b8 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox-3/binary.nix @@ -0,0 +1,55 @@ +args: with args; + +assert stdenv.system == "i686-linux"; + +stdenv.mkDerivation { + name = "firefox-3b1"; + + src = + fetchurl { + url = ftp://ftp.mozilla.org/pub/firefox/releases/3.0b1/linux-i686/en-US/firefox-3.0b1.tar.bz2; + sha256 = "1cpcc5b07zdqyd5kiwhb4dqhy2mzbf97plsglcp6bc9054cmsylk"; + }; + buildInputs = [ + pkgconfig gtk perl zip libIDL libXi libjpeg libpng zlib cairo + python curl coreutils atk pango glib libX11 libXrender + freetype fontconfig libXft libXt + ]; + + buildPhase = " + additionalRpath=''; + for i in \$buildInputs ${stdenv.glibc} ${stdenv.gcc.gcc}; do + additionalRpath=\$additionalRpath:\$i/lib; + done + for i in firefox-bin ; do + oldrpath=$(patchelf --print-rpath \$i) + patchelf --set-rpath \$oldrpath\$additionalRpath \$i + patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2 \$i + done + "; + + installPhase = " + export dontPatchELF=1; + mkdir -p \$out + cp -r . \$out/firefox + mkdir -p \$out/bin + ln -s \$out/firefox/firefox \$out/bin/firefox + + sed -e 's@moz_libdir=.*@moz_libdir='\$out'/firefox/@' -i \$out/bin/firefox + sed -e 's@moz_libdir=.*@&\\nexport PATH=\$PATH:${coreutils}/bin@' -i \$out/bin/firefox + sed -e 's@`/bin/pwd@`${coreutils}/bin/pwd@' -i \$out/bin/firefox + sed -e 's@`/bin/ls@`${coreutils}/bin/ls@' -i \$out/bin/firefox + + strip -S \$out/firefox/*.so || true + + echo \"running firefox -register...\" + \$out/firefox/firefox-bin -register || false + "; + + meta = { + description = "Mozilla Firefox - the browser, reloaded"; + }; + + passthru = {inherit gtk;}; +} + diff --git a/pkgs/applications/networking/browsers/firefox-3/builder.sh b/pkgs/applications/networking/browsers/firefox-3/builder.sh new file mode 100644 index 00000000000..66f1059d657 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox-3/builder.sh @@ -0,0 +1,30 @@ +source $stdenv/setup + +postInstall=postInstall +postInstall() { + + # Strip some more stuff + strip -S $out/lib/*/* || true + + # This fixes starting Firefox when there already is a running + # instance. The `firefox' wrapper script actually expects to be + # in the same directory as `run-mozilla.sh', apparently. + libDir=$(cd $out/lib && ls -d firefox-*) + test -n "$libDir" + cd $out/bin + mv firefox ../lib/$libDir/ + ln -s ../lib/$libDir/firefox . + + # Register extensions etc. + echo "running firefox -register..." + (cd $out/lib/$libDir && LD_LIBRARY_PATH=. ./firefox-bin -register) || false + + echo "running regxpcom..." + (cd $out/lib/$libDir && LD_LIBRARY_PATH=. ./regxpcom) || false + + # Put the Firefox icon in the right place. + ensureDir $out/lib/$libDir/chrome/icons/default + ln -s ../../../icons/default.xpm $out/lib/$libDir/chrome/icons/default/ +} + +genericBuild diff --git a/pkgs/applications/networking/browsers/firefox-3/default.nix b/pkgs/applications/networking/browsers/firefox-3/default.nix new file mode 100644 index 00000000000..88315aa0c31 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox-3/default.nix @@ -0,0 +1,64 @@ +args: with args; + +stdenv.mkDerivation { + name = "firefox-3.0-beta-3"; + + src = fetchurl { + url = ftp://ftp.mozilla.org/pub/firefox/releases/3.0b3/source/firefox-3.0b3-source.tar.bz2; + sha1 = "142f28a41077e77d61423a5ca6585a45737ff999"; + }; + + buildInputs = [ + pkgconfig gtk perl zip libIDL libXi libjpeg libpng zlib cairo + python curl coreutils dbus dbus_glib pango freetype fontconfig + libX11 libXrender libXft libXt + ]; + + configureFlags = [ + "--enable-application=browser" + "--enable-optimize" + "--disable-debug" + "--enable-strip" + "--with-system-jpeg" + "--with-system-zlib" + #"--with-system-png" <-- "--with-system-png won't work because the system's libpng doesn't have APNG support" + #"--enable-system-cairo" <-- disabled for now because Firefox needs a alpha version of Cairo + ]; + + postInstall = '' + export dontPatchELF=1; + + # Strip some more stuff + strip -S $out/lib/*/* || true + + # Fix some references to /bin paths in the Firefox shell script. + substituteInPlace $out/bin/firefox \ + --replace /bin/pwd "$(type -tP pwd)" \ + --replace /bin/ls "$(type -tP ls)" + + # This fixes starting Firefox when there already is a running + # instance. The `firefox' wrapper script actually expects to be + # in the same directory as `run-mozilla.sh', apparently. + libDir=$(cd $out/lib && ls -d firefox-[0-9]*) + test -n "$libDir" + cd $out/bin + mv firefox ../lib/$libDir/ + ln -s ../lib/$libDir/firefox . + + # Register extensions etc. + echo "running firefox -register..." + (cd $out/lib/$libDir && LD_LIBRARY_PATH=. ./firefox-bin -register) || false + + # Put the Firefox icon in the right place. + ensureDir $out/lib/$libDir/chrome/icons/default + ln -s ../../../icons/default.xpm $out/lib/$libDir/chrome/icons/default/ + ''; # */ + + meta = { + description = "Mozilla Firefox - the browser, reloaded"; + homepage = http://www.mozilla.com/en-US/firefox/; + }; + + passthru = {inherit gtk;}; +} + diff --git a/pkgs/development/tools/misc/ccache/default.nix b/pkgs/development/tools/misc/ccache/default.nix new file mode 100644 index 00000000000..8342dfcc728 --- /dev/null +++ b/pkgs/development/tools/misc/ccache/default.nix @@ -0,0 +1,15 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "ccache-2.4"; + src = fetchurl { + url = http://samba.org/ftp/ccache/ccache-2.4.tar.gz; + sha256 = "435f862ca5168c346f5aa9e242174bbf19a5abcaeecfceeac2f194558827aaa0"; + }; + + meta = { + description = "ccache, a tool that caches compilation results."; + homepage = http://ccache.samba.org/; + license = "GPL"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 47a78aff2cc..b34b8f0bfe9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1522,6 +1522,10 @@ rec { inherit fetchurl stdenv m4; }; + ccache = import ../development/tools/misc/ccache { + inherit fetchurl stdenv; + }; + ctags = import ../development/tools/misc/ctags { inherit fetchurl stdenv; }; @@ -4182,6 +4186,15 @@ rec { firefoxWrapper = wrapFirefox firefox ""; + firefox3 = lowPrio (import ../applications/networking/browsers/firefox-3 { + inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo + python curl coreutils dbus dbus_glib freetype fontconfig; + inherit (gtkLibs) gtk pango; + inherit (gnome) libIDL; + inherit (xlibs) libXi libX11 libXrender libXft libXt; + #enableOfficialBranding = true; + }); + firefox3b1 = lowPrio (import ../applications/networking/browsers/firefox3b1 { inherit fetchurl stdenv pkgconfig perl zip libjpeg libpng zlib cairo python curl coreutils; From ca34aa0514bc98592f70b47ebd57ced608d57133 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Fri, 15 Feb 2008 08:41:31 +0000 Subject: [PATCH 303/320] Forward port of lib svn path=/nixpkgs/branches/stdenv-updates/; revision=10700 --- pkgs/lib/default.nix | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 0d22070ee98..4ffe50aa035 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -55,6 +55,8 @@ rec { # Map and concatenate the result. concatMap = f: list: concatLists (map f list); + concatMapStrings = f: list: concatStrings (map f list); + # Place an element between each element of a list, e.g., # `intersperse "," ["a" "b" "c"]' returns ["a" "," "b" "," "c"]. @@ -91,6 +93,10 @@ rec { then getAttr (tail attrPath) default (builtins.getAttr attr e) else default; + # shortcut for getAttr ["name"] default attrs + maybeAttr = name: default: attrs: + if (__hasAttr name attrs) then (__getAttr name attrs) else default; + # Filter a list using a predicate; that is, return a list containing # every element from `list' for which `pred' returns true. @@ -153,15 +159,16 @@ rec { substring (sub lenFileName lenExt) lenFileName fileName == ext; hasSuffixHack = a: b: hasSuffix (a+(substring 0 0 b)) ((substring 0 0 a)+b); - + + # Bring in a path as a source, filtering out all Subversion and CVS # directories, as well as backup files (*~). cleanSource = let filter = name: type: let baseName = baseNameOf (toString name); in ! ( # Filter out Subversion and CVS directories. - (type == "directory" && (name == ".svn" || name == "CVS")) || + (type == "directory" && (baseName == ".svn" || baseName == "CVS")) || # Filter out backup files. - (hasSuffix "~" name) + (hasSuffix "~" baseName) ); in src: builtins.filterSource filter src; @@ -316,6 +323,18 @@ rec { debugVal = if builtins ? trace then x: (builtins.trace x x) else x: x; debugXMLVal = if builtins ? trace then x: (builtins.trace (builtins.toXML x) x) else x: x; + # this can help debug your code as well - designed to not produce thousands of lines + traceWhatis = x : __trace (whatis x) x; + whatis = x : + if (__isAttrs x) then + if (x ? outPath) then "x is a derivation with name ${x.name}" + else "x is an attr set with attributes ${builtins.toString (__attrNames x)}" + else if (__isFunction x) then "x is a function" + else if (__isList x) then "x is a list, first item is : ${whatis (__head x)}" + else if (x == true || x == false) then builtins.toString x + else "x is propably a string starting, starting characters: ${__substring 0 50 x}.."; + + innerClosePropagation = ready: list: if list == [] then ready else if (head list) ? propagatedBuildInputs then innerClosePropagation (ready ++ [(head list)]) @@ -324,6 +343,16 @@ rec { closePropagation = list: (uniqList {inputList = (innerClosePropagation [] list);}); + stringToCharacters = s : let l = __stringLength s; in + if (__lessThan l 1) then [""] else [(__substring 0 1 s)] ++ stringToCharacters (__substring 1 (__sub l 1) s); + + # should this be implemented as primop ? Yes it should.. + escapeShellArg = s : + let escapeChar = x : if ( x == "'" ) then "'\"'\"'" else x; + in "'" + concatStrings (map escapeChar (stringToCharacters s) ) +"'"; + + defineShList = name : list : "\n${name}=(${concatStringsSep " " (map escapeShellArg list)})\n"; + # calls a function (f attr value ) for each record item. returns a list mapRecordFlatten = f : r : map (attr: f attr (builtins.getAttr attr r) ) (attrNames r); @@ -357,6 +386,12 @@ rec { flattenAttrs = set : map ( attr : builtins.getAttr attr set) (attrNames set); mapIf = cond : f : fold ( x : l : if (cond x) then [(f x)] ++ l else l) []; + # pick attrs subset_attr_names and apply f + subsetmap = f : attrs : subset_attr_names : + listToAttrs (fold ( attr : r : if __hasAttr attr attrs + then r ++ [ ( nv attr ( f (__getAttr attr attrs) ) ) ] else r ) [] + subset_attr_names ); + # Marc 2nd proposal: (not everything has been tested in detail yet..) # usage / example From 2a087141cb93b9c90c885ee63010dfcd108be3bc Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Fri, 15 Feb 2008 11:14:40 +0000 Subject: [PATCH 304/320] Ported replace renaming to replace-literal to avoid conflict with MySQL package supplying own tool with name replace. svn path=/nixpkgs/branches/stdenv-updates/; revision=10704 --- pkgs/stdenv/generic/setup.sh | 2 +- pkgs/tools/system/cron/default.nix | 2 +- pkgs/tools/text/replace/default.nix | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 34e4e0fd902..4f40c3ee562 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -281,7 +281,7 @@ substitute() { args[${#args[@]}]="$replacement" done - replace -e -s "${args[@]}" < "$input" > "$output".tmp + replace-literal -e -s "${args[@]}" < "$input" > "$output".tmp if test -x "$output"; then chmod +x "$output".tmp fi diff --git a/pkgs/tools/system/cron/default.nix b/pkgs/tools/system/cron/default.nix index 066f594ea84..4d7dcb93db2 100644 --- a/pkgs/tools/system/cron/default.nix +++ b/pkgs/tools/system/cron/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { unpackCmd = "(mkdir cron && cd cron && sh $src)"; preBuild = " - substituteInPlace Makefile --replace '-o root' '' --replace 111 755 + substituteInPlace Makefile --replace ' -o root' ' ' --replace 111 755 makeFlags=\"DESTROOT=$out\" "; diff --git a/pkgs/tools/text/replace/default.nix b/pkgs/tools/text/replace/default.nix index b9613ef2077..ca96309e40e 100644 --- a/pkgs/tools/text/replace/default.nix +++ b/pkgs/tools/text/replace/default.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation { makeFlags = "TREE=\$(out)"; + postInstall = "mv \$out/bin/replace \$out/bin/replace-literal"; + meta = { homepage = http://replace.richardlloyd.org.uk/; description = "A tool to replace verbatim strings"; From 96ddccf6b2eff303d36c72603557c0bbb3e0993d Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Mon, 18 Feb 2008 07:23:05 +0000 Subject: [PATCH 305/320] Some fixes to build elfutils and ltrace, added x11vnc, forward-ported kernel 2.6.23.16 as default. svn path=/nixpkgs/branches/stdenv-updates/; revision=10718 --- .../development/tools/misc/elfutils/0.127.nix | 1 + .../development/tools/misc/elfutils/0.131.nix | 2 + pkgs/os-specific/linux/kernel/2.6.23.16.nix | 39 +++++++++++++++++++ pkgs/os-specific/linux/kernel/default.nix | 3 +- pkgs/tools/X11/x11vnc/0.9.3.nix | 27 +++++++++++++ pkgs/top-level/all-packages.nix | 9 +++++ 6 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/linux/kernel/2.6.23.16.nix create mode 100644 pkgs/tools/X11/x11vnc/0.9.3.nix diff --git a/pkgs/development/tools/misc/elfutils/0.127.nix b/pkgs/development/tools/misc/elfutils/0.127.nix index efa91fa637c..198242e2708 100644 --- a/pkgs/development/tools/misc/elfutils/0.127.nix +++ b/pkgs/development/tools/misc/elfutils/0.127.nix @@ -7,4 +7,5 @@ stdenv.mkDerivation { sha256 = "12n3h5r3c24a6l2wxz0w2dqq072bvgms0dzckivrwp5vdn22lpdv"; }; preBuild = "sed -e 's/-Werror//' -i */Makefile "; + dontAddDisableDepTrack = "true"; } diff --git a/pkgs/development/tools/misc/elfutils/0.131.nix b/pkgs/development/tools/misc/elfutils/0.131.nix index 5efe046493d..f2ba07ba007 100644 --- a/pkgs/development/tools/misc/elfutils/0.131.nix +++ b/pkgs/development/tools/misc/elfutils/0.131.nix @@ -6,4 +6,6 @@ stdenv.mkDerivation { url = http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.131.orig.tar.gz; sha256 = "0vqfjpcv81m3q0gsk78qykakhz9rbfwd65i4zsi03xr2lrk9ayll"; }; + dontAddDisableDepTrack = "true"; + preBuild = "sed -e 's/-Werror//' -i */Makefile "; } diff --git a/pkgs/os-specific/linux/kernel/2.6.23.16.nix b/pkgs/os-specific/linux/kernel/2.6.23.16.nix new file mode 100644 index 00000000000..454ce9bf31f --- /dev/null +++ b/pkgs/os-specific/linux/kernel/2.6.23.16.nix @@ -0,0 +1,39 @@ +args: +(import ./meta.nix) +( args // + { + version = "2.6.23.16"; + src_hash = { sha256 = "0drk3981rl5j16s6amb63lai9kpi0vf0kr6avhpd9nikj27bsa83"; }; + + systemPatches = [ + /*{ # resume with resume=swap:/dev/xx + name = "tux on ice"; # (swsusp2) + patch = args.fetchurl { + url = "http://www.tuxonice.net/downloads/all/tuxonice-3.0-rc3-for-2.6.23.9.patch.bz2"; + sha256 = "16f61cn0mdi7yklhdx4isi7c85843fzxq2cifd05cpsl6x6ilrfk"; + }; + extraConfig = " + CONFIG_SUSPEND2=y + CONFIG_SUSPEND2_FILE=y + CONFIG_SUSPEND2_SWAP=y + CONFIG_CRYPTO_LZF=y + "; + }*/ + { name = "fbsplash-0.9.2-r5-2.6.21"; + patch = args.fetchurl { + url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch; + sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px"; + }; + extraConfig = "CONFIG_FB_SPLASH=y"; + } + ]; + + config = with args; + if config != null then config else + if userModeLinux then ./config-2.6.23-uml else + if stdenv.system == "i686-linux" then ./config-2.6.23-i686-smp else + if stdenv.system == "x86_64-linux" then ./config-2.6.23-x86_64-smp else + abort "No kernel configuration for your platform!"; + } +) + diff --git a/pkgs/os-specific/linux/kernel/default.nix b/pkgs/os-specific/linux/kernel/default.nix index c07bc4c81fb..61e3c43aeaa 100644 --- a/pkgs/os-specific/linux/kernel/default.nix +++ b/pkgs/os-specific/linux/kernel/default.nix @@ -27,5 +27,6 @@ args.stdenv.lib.listOfListsToAttrs [ [ "2.6.22-ck" (import ./2.6.22-ck.nix newArgs) ] [ "2.6.23" (import ./2.6.23.nix newArgs) ] [ "2.6.23.1" (import ./2.6.23.1.nix newArgs) ] - [ "default" (import ./2.6.23.1.nix newArgs) ] + [ "2.6.23.16" (import ./2.6.23.16.nix newArgs) ] + [ "default" (import ./2.6.23.16.nix newArgs) ] ] diff --git a/pkgs/tools/X11/x11vnc/0.9.3.nix b/pkgs/tools/X11/x11vnc/0.9.3.nix new file mode 100644 index 00000000000..6a58d5b5508 --- /dev/null +++ b/pkgs/tools/X11/x11vnc/0.9.3.nix @@ -0,0 +1,27 @@ +args : with args; with builderDefs {src="";} null; + let localDefs = builderDefs (rec { + src = /* put a fetchurl here */ + fetchurl { + url = mirror://sourceforge/libvncserver/x11vnc-0.9.3.tar.gz; + sha256 = "0sfzkbqd2d94w51czci9w5j5z67amcl1gphgg6x77dyr2h46kc0a"; + }; + + buildInputs = [libXfixes fixesproto openssl libXdamage damageproto + zlib libX11 xproto libjpeg libXtst libXinerama xineramaproto + libXrandr randrproto libXext xextproto inputproto recordproto]; + configureFlags = []; + }) null; /* null is a terminator for sumArgs */ + in with localDefs; +stdenv.mkDerivation rec { + name = "x11vnc-"+version; + builder = writeScript (name + "-builder") + (textClosure localDefs + [doConfigure doMakeInstall doForceShare doPropagate]); + meta = { + description = " + X11 VNC - VNC server connected to real X11 screen. +"; + homepage = "http://www.karlrunge.com/x11vnc/"; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b34b8f0bfe9..c30e97a4bec 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4822,6 +4822,15 @@ rec { ++ lib.optional (supportsJDK && jrePlugin ? mozillaPlugin) jrePlugin; }; + x11vncFun = lib.sumArgs (selectVersion ../tools/X11/x11vnc "0.9.3") { + inherit builderDefs openssl zlib libjpeg ; + inherit (xlibs) libXfixes fixesproto libXdamage damageproto + libX11 xproto libXtst libXinerama xineramaproto libXrandr randrproto + libXext xextproto inputproto recordproto; + }; + + x11vnc = x11vncFun null; + xara = import ../applications/graphics/xara { inherit fetchurl stdenv autoconf automake libtool gettext cvs wxGTK pkgconfig libxml2 zip libpng libjpeg shebangfix perl freetype; From 66914f5438c4828f01065798828f954d52bf236d Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Mon, 18 Feb 2008 10:42:04 +0000 Subject: [PATCH 306/320] Added src overriding option for relfs svn path=/nixpkgs/branches/stdenv-updates/; revision=10721 --- pkgs/tools/misc/relfs/cvs.2007.12.01.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix index aa0ee224169..aea97f72dfd 100644 --- a/pkgs/tools/misc/relfs/cvs.2007.12.01.nix +++ b/pkgs/tools/misc/relfs/cvs.2007.12.01.nix @@ -1,7 +1,7 @@ args : with args; let localDefs = builderDefs { src = /* put a fetchurl here */ - fetchcvs { + if args ? src then args.src else fetchcvs { url = ":pserver:anonymous@relfs.cvs.sourceforge.net:/cvsroot/relfs"; module = "relfs"; date = "2007-12-01"; From 88c725ad84924e4df2a8d57ceb52ed059c05879d Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Mon, 18 Feb 2008 20:07:32 +0000 Subject: [PATCH 307/320] Forward port of Apache changes. svn path=/nixpkgs/branches/stdenv-updates/; revision=10736 --- pkgs/servers/http/apache-httpd/builder.sh | 29 ----------------- pkgs/servers/http/apache-httpd/default.nix | 36 +++++++++++++++++----- 2 files changed, 29 insertions(+), 36 deletions(-) delete mode 100644 pkgs/servers/http/apache-httpd/builder.sh diff --git a/pkgs/servers/http/apache-httpd/builder.sh b/pkgs/servers/http/apache-httpd/builder.sh deleted file mode 100644 index 3a5ccd846ee..00000000000 --- a/pkgs/servers/http/apache-httpd/builder.sh +++ /dev/null @@ -1,29 +0,0 @@ -buildInputs="$openssl $db4 $expat $perl" -source $stdenv/setup - -configureFlags="\ - --with-expat=$expat \ - --with-z=$zlib \ - --enable-mods-shared=all \ - --enable-authn-alias \ - --without-gdbm \ - --enable-threads \ - --with-devrandom=/dev/urandom" - -if test $db4Support; then - configureFlags="--with-berkeley-db=$db4 $configureFlags" -fi - -if test $sslSupport; then - configureFlags="--enable-ssl --with-ssl=$openssl $configureFlags" -fi - - -postInstall() { - echo "removing manual" - rm -rf $out/manual -} -postInstall=postInstall - - -genericBuild diff --git a/pkgs/servers/http/apache-httpd/default.nix b/pkgs/servers/http/apache-httpd/default.nix index 76865cf3426..4e2af7ff900 100644 --- a/pkgs/servers/http/apache-httpd/default.nix +++ b/pkgs/servers/http/apache-httpd/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, openssl, db4, expat, perl, zlib -, sslSupport, db4Support +, sslSupport, db4Support, proxySupport ? true }: assert sslSupport -> openssl != null; @@ -7,19 +7,36 @@ assert db4Support -> db4 != null; assert expat != null && perl != null; stdenv.mkDerivation { - name = "apache-httpd-2.2.8"; + name = "apache-httpd-2.2.8x"; - builder = ./builder.sh; src = fetchurl { url = http://archive.apache.org/dist/httpd/httpd-2.2.8.tar.bz2; md5 = "76d2598a4797163d07cd50e5304aa7cd"; }; - inherit sslSupport db4Support; + #inherit sslSupport db4Support; - inherit perl expat zlib; - openssl = if sslSupport then openssl else null; - db4 = if db4Support then db4 else null; + buildInputs = [expat perl] ++ + stdenv.lib.optional sslSupport openssl ++ + stdenv.lib.optional db4Support db4; + + configureFlags = '' + --with-expat=${expat} + --with-z=${zlib} + --enable-mods-shared=all + --enable-authn-alias + ${if proxySupport then "--enable-proxy" else ""} + --without-gdbm + --enable-threads + --with-devrandom=/dev/urandom + ${if sslSupport then "--enable-ssl --with-ssl=${openssl}" else ""} + ${if db4Support then "--with-berkeley-db=${db4}" else ""} + ''; + + postInstall = '' + echo "removing manual" + rm -rf $out/manual + ''; # For now, disable detection of epoll to ensure that Apache still # runs on Linux 2.4 kernels. Once we've dropped support for 2.4 in @@ -27,8 +44,13 @@ stdenv.mkDerivation { # detects characteristics of the build system's kernel to decide # what to use at runtime, since it's impure. apr_cv_epoll = "no"; + + passthru = { + inherit expat sslSupport db4Support proxySupport; + }; meta = { description = "Apache HTTPD, the world's most popular web server"; + homepage = http://httpd.apache.org/; }; } From 81429b0ac2ca6614f48999410bc8e89a586d5655 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:48:36 +0000 Subject: [PATCH 308/320] avahi: glib and qt4 support, 0.6.22 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10737 --- pkgs/development/libraries/avahi/0.6.21.nix | 2 ++ pkgs/development/libraries/avahi/0.6.22.nix | 2 ++ pkgs/development/libraries/avahi/common.nix | 18 ++++++++++++++++++ pkgs/development/libraries/avahi/default.nix | 14 -------------- pkgs/top-level/all-packages.nix | 6 ++++-- 5 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 pkgs/development/libraries/avahi/0.6.21.nix create mode 100644 pkgs/development/libraries/avahi/0.6.22.nix create mode 100644 pkgs/development/libraries/avahi/common.nix delete mode 100644 pkgs/development/libraries/avahi/default.nix diff --git a/pkgs/development/libraries/avahi/0.6.21.nix b/pkgs/development/libraries/avahi/0.6.21.nix new file mode 100644 index 00000000000..26f03ca58bf --- /dev/null +++ b/pkgs/development/libraries/avahi/0.6.21.nix @@ -0,0 +1,2 @@ +args: +import ./common.nix "0q954lwhr6xnv7chhi4bqlmkn4nx9shyw0mbdr3n26018dgw65yq" args diff --git a/pkgs/development/libraries/avahi/0.6.22.nix b/pkgs/development/libraries/avahi/0.6.22.nix new file mode 100644 index 00000000000..93b7184cdae --- /dev/null +++ b/pkgs/development/libraries/avahi/0.6.22.nix @@ -0,0 +1,2 @@ +args: +import ./common.nix "0lnxzsdhihb3kjwd3vcrl9pq6ykfbp0vy9ja0mch01ffnrqgiilx" args diff --git a/pkgs/development/libraries/avahi/common.nix b/pkgs/development/libraries/avahi/common.nix new file mode 100644 index 00000000000..1ebadc26e26 --- /dev/null +++ b/pkgs/development/libraries/avahi/common.nix @@ -0,0 +1,18 @@ +sha256: args: with args; + +stdenv.mkDerivation rec { + name = "avahi-" + version; + src = fetchurl { + url = "${meta.homepage}/download/${name}.tar.gz"; + inherit sha256; + }; + + buildInputs = [pkgconfig libdaemon dbus perl perlXMLParser glib qt4]; + + configureFlags = "--disable-qt3 --disable-gdbm --disable-gtk --disable-mono + --with-distro=none --enable-shared --disable-static --disable-python"; + + meta = { + homepage = http://avahi.org; + }; +} diff --git a/pkgs/development/libraries/avahi/default.nix b/pkgs/development/libraries/avahi/default.nix deleted file mode 100644 index c8a94c0dbb1..00000000000 --- a/pkgs/development/libraries/avahi/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{stdenv, fetchurl, pkgconfig, libdaemon, dbus}: - -stdenv.mkDerivation { - name = "avahi-0.6.21"; - src = fetchurl { - url = http://avahi.org/download/avahi-0.6.21.tar.gz; - sha256 = "d817c35f43011861476eab02eea14edd123b2bc58b4408d9d9b69b0c39252561"; - }; - - #buildInputs = [pkgconfig glib gtk libpng libglade]; - buildInputs = [pkgconfig libdaemon dbus]; - - configureFlags = "--disable-glib --disable-qt3 --disable-qt4 --disable-gtk --disable-expat --disable-gdbm --disable-python --disable-mono --with-distro=none CPPFLAGS=-Ddbus_watch_get_unix_fd=dbus_watch_get_fd"; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c30e97a4bec..3b76d1eabd5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -334,8 +334,10 @@ rec { inherit fetchurl stdenv zlib wxGTK; }; - avahi = import ../development/libraries/avahi { - inherit stdenv fetchurl pkgconfig libdaemon dbus; + avahi = selectVersion ../development/libraries/avahi "0.6.22" { + inherit stdenv fetchurl pkgconfig libdaemon dbus perl perlXMLParser qt4 + python expat; + inherit (gtkLibs) glib gtk; }; axel = import ../tools/networking/axel { From bcb28f63a0597d4680da4c1f2b125c55dd88878e Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:50:49 +0000 Subject: [PATCH 309/320] shared-mime-info: 0.23 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10738 --- pkgs/data/misc/shared-mime-info/0.22.nix | 2 ++ pkgs/data/misc/shared-mime-info/0.23.nix | 2 ++ pkgs/data/misc/shared-mime-info/common.nix | 16 ++++++++++++++++ pkgs/data/misc/shared-mime-info/default.nix | 12 ------------ pkgs/top-level/all-packages.nix | 2 +- 5 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 pkgs/data/misc/shared-mime-info/0.22.nix create mode 100644 pkgs/data/misc/shared-mime-info/0.23.nix create mode 100644 pkgs/data/misc/shared-mime-info/common.nix delete mode 100644 pkgs/data/misc/shared-mime-info/default.nix diff --git a/pkgs/data/misc/shared-mime-info/0.22.nix b/pkgs/data/misc/shared-mime-info/0.22.nix new file mode 100644 index 00000000000..399b3296d38 --- /dev/null +++ b/pkgs/data/misc/shared-mime-info/0.22.nix @@ -0,0 +1,2 @@ +args: +import ./common.nix "1chz63v9jr009z9jhs07klybmhyf58i8vxipigf5gkdabjiclcyr" args diff --git a/pkgs/data/misc/shared-mime-info/0.23.nix b/pkgs/data/misc/shared-mime-info/0.23.nix new file mode 100644 index 00000000000..38617dfe8e3 --- /dev/null +++ b/pkgs/data/misc/shared-mime-info/0.23.nix @@ -0,0 +1,2 @@ +args: +import ./common.nix "080ny2vy00202hxcm7xm72j1zmyfs15dbsnqipwni6b2dg2am3q3" args diff --git a/pkgs/data/misc/shared-mime-info/common.nix b/pkgs/data/misc/shared-mime-info/common.nix new file mode 100644 index 00000000000..8c2ff363c6a --- /dev/null +++ b/pkgs/data/misc/shared-mime-info/common.nix @@ -0,0 +1,16 @@ +hash: args: with args; + +stdenv.mkDerivation rec { + name = "shared-mime-info-" + version; + + src = fetchurl { + url = "http://freedesktop.org/~hadess/${name}.tar.bz2"; + sha256 = hash; + }; + + buildInputs = [perl perlXMLParser pkgconfig gettext libxml2 glib]; + + meta = { + homepage = http://freedesktop.org/wiki/Software/shared-mime-info; + }; +} diff --git a/pkgs/data/misc/shared-mime-info/default.nix b/pkgs/data/misc/shared-mime-info/default.nix deleted file mode 100644 index 0b82782d31d..00000000000 --- a/pkgs/data/misc/shared-mime-info/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, perl, perlXMLParser, pkgconfig, gettext, libxml2, glib}: - -stdenv.mkDerivation { - name = "shared-mime-info-0.22"; - - src = fetchurl { - url = http://freedesktop.org/~hadess/shared-mime-info-0.22.tar.bz2; - sha256 = "1chz63v9jr009z9jhs07klybmhyf58i8vxipigf5gkdabjiclcyr"; - }; - - buildInputs = [perl perlXMLParser pkgconfig gettext libxml2 glib]; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3b76d1eabd5..dc39f053da1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3857,7 +3857,7 @@ rec { inherit fetchurl stdenv; }; - shared_mime_info = import ../data/misc/shared-mime-info { + shared_mime_info = selectVersion ../data/misc/shared-mime-info "0.23" { inherit fetchurl stdenv perl perlXMLParser pkgconfig gettext libxml2; inherit (gtkLibs) glib; }; From 461b3197b545d76abb88b5ae2d3979061b781480 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:51:07 +0000 Subject: [PATCH 310/320] enchant: using selectVersion svn path=/nixpkgs/branches/stdenv-updates/; revision=10739 --- pkgs/development/libraries/enchant/1.3.0.nix | 14 ++++++++++++++ pkgs/development/libraries/enchant/default.nix | 10 ---------- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 pkgs/development/libraries/enchant/1.3.0.nix delete mode 100644 pkgs/development/libraries/enchant/default.nix diff --git a/pkgs/development/libraries/enchant/1.3.0.nix b/pkgs/development/libraries/enchant/1.3.0.nix new file mode 100644 index 00000000000..e503366087e --- /dev/null +++ b/pkgs/development/libraries/enchant/1.3.0.nix @@ -0,0 +1,14 @@ +args: with args; +stdenv.mkDerivation rec { + name = "enchant-" + version; + src = fetchurl { + url = "http://www.abisource.com/downloads/enchant/${version}/${name}.tar.gz"; + sha256 = "1vwqwsadnp4rf8wj7d4rglvszjzlcli0jyxh06h8inka1sm1al76"; + }; + buildInputs = [aspell pkgconfig glib]; + configureFlags = "--enable-shared --disable-static"; + + meta = { + homepage = http://www.abisource.com/enchant; + }; +} diff --git a/pkgs/development/libraries/enchant/default.nix b/pkgs/development/libraries/enchant/default.nix deleted file mode 100644 index 74fe33cba8c..00000000000 --- a/pkgs/development/libraries/enchant/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -args: with args; -stdenv.mkDerivation { - name = "enchant-1.3.0"; - src = fetchurl { - url = http://FIXME/enchant-1.3.0.tar.gz; - sha256 = "1vwqwsadnp4rf8wj7d4rglvszjzlcli0jyxh06h8inka1sm1al76"; - }; - buildInputs = [aspell pkgconfig glib]; - configureFlags = "--enable-shared --disable-static"; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index dc39f053da1..23752af9070 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1892,7 +1892,7 @@ rec { inherit fetchurl stdenv perl; }; - enchant = import ../development/libraries/enchant { + enchant = selectVersion ../development/libraries/enchant "1.3.0" { inherit fetchurl stdenv aspell pkgconfig; inherit (gnome) glib; }; From f19180e9c277828764106c908bbab6cf59517d05 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:51:25 +0000 Subject: [PATCH 311/320] ortp: 0.7.1 added (libjingle may need it) svn path=/nixpkgs/branches/stdenv-updates/; revision=10740 --- .../libraries/ortp/{default.nix => 0.13.1.nix} | 8 +++----- pkgs/development/libraries/ortp/0.7.1.nix | 16 ++++++++++++++++ pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) rename pkgs/development/libraries/ortp/{default.nix => 0.13.1.nix} (60%) create mode 100644 pkgs/development/libraries/ortp/0.7.1.nix diff --git a/pkgs/development/libraries/ortp/default.nix b/pkgs/development/libraries/ortp/0.13.1.nix similarity index 60% rename from pkgs/development/libraries/ortp/default.nix rename to pkgs/development/libraries/ortp/0.13.1.nix index 4fc51a3ce85..ea1cd64b3d2 100644 --- a/pkgs/development/libraries/ortp/default.nix +++ b/pkgs/development/libraries/ortp/0.13.1.nix @@ -1,11 +1,9 @@ - args: with args; stdenv.mkDerivation rec { - name = "ortp-0.13.1"; + name = "ortp-" + version; src = fetchurl { - url = - "http://download.savannah.nongnu.org/releases/linphone/ortp/sources/${name}.tar.gz"; + url = "mirror://savannah/linphone/ortp/sources/${name}.tar.gz"; sha256 = "0k2963v4b15xnf4cpkpgjhsb8ckxpf6vdr8dnw7z3mzilji7391b"; }; @@ -13,6 +11,6 @@ stdenv.mkDerivation rec { meta = { description = "a Real-Time Transport Protocol (RFC3550) stack under LGPL"; - homepage = http://www.linphone.org/index.php/eng/code_review/ortp; + homepage = http://www.linphone.org/index.php/eng/code_review/ortp; }; } diff --git a/pkgs/development/libraries/ortp/0.7.1.nix b/pkgs/development/libraries/ortp/0.7.1.nix new file mode 100644 index 00000000000..7bedf39f8be --- /dev/null +++ b/pkgs/development/libraries/ortp/0.7.1.nix @@ -0,0 +1,16 @@ +args: with args; +stdenv.mkDerivation rec { + name = "ortp-" + version; + + src = fetchurl { + url = "mirror://savannah/linphone/ortp/sources/${name}.tar.gz"; + sha256 = "0gyl0yzfg78sjhbwnwc2g8yn4riwd1wcv183qihgan6z2d5cfbrg"; + }; + + configureFlags = "--enable-shared --disable-static"; + + meta = { + description = "a Real-Time Transport Protocol (RFC3550) stack under LGPL"; + homepage = http://www.linphone.org/index.php/eng/code_review/ortp; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 23752af9070..3277ef66698 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2533,7 +2533,7 @@ rec { inherit fetchurl stdenv perl; }; - ortp = import ../development/libraries/ortp { + ortp = selectVersion ../development/libraries/ortp "0.13.1" { inherit fetchurl stdenv; }; From fefdde62099ae94ebd6de86724259a86d689ed97 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:51:40 +0000 Subject: [PATCH 312/320] liboil: URL corrected svn path=/nixpkgs/branches/stdenv-updates/; revision=10741 --- pkgs/development/libraries/liboil/0.3.12.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/liboil/0.3.12.nix b/pkgs/development/libraries/liboil/0.3.12.nix index 3e653753061..5a04892d5be 100644 --- a/pkgs/development/libraries/liboil/0.3.12.nix +++ b/pkgs/development/libraries/liboil/0.3.12.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "liboil-" + version; src = fetchurl { - url = "${meta.homepage}/liboil/${name}.tar.gz"; + url = "${meta.homepage}/download/${name}.tar.gz"; sha256 = "0gdmly9sli1918pnb4ds1g38ipxikn651hdss86mp4qlfb8wvqlv"; }; From 343d3f0e4c1279b0afd61bf70cf816af6231ab7d Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:51:56 +0000 Subject: [PATCH 313/320] log4cxx: +boost svn path=/nixpkgs/branches/stdenv-updates/; revision=10742 --- pkgs/development/libraries/log4cxx/default.nix | 2 +- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/log4cxx/default.nix b/pkgs/development/libraries/log4cxx/default.nix index 49544796612..63f32c05bc7 100644 --- a/pkgs/development/libraries/log4cxx/default.nix +++ b/pkgs/development/libraries/log4cxx/default.nix @@ -6,6 +6,6 @@ stdenv.mkDerivation { url = http://archive.apache.org/dist/logging/log4cxx/log4cxx-0.9.7.tar.gz; sha256 = "1ikyxd8jgf7b2cqjk5lidl7cffs114iiblaczaqbv5bm4vyb4hav"; }; - buildInputs = [ autoconf automake libtool libxml2 cppunit ]; + buildInputs = [ autoconf automake libtool libxml2 cppunit boost ]; patchPhase = "sh autogen.sh; sed -e 's/DOMConfigurator::subst/subst/' -i include/log4cxx/xml/domconfigurator.h"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3277ef66698..0039120a0f6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2425,7 +2425,7 @@ rec { }; log4cxx = import ../development/libraries/log4cxx { - inherit fetchurl stdenv automake autoconf libtool cppunit libxml2; + inherit fetchurl stdenv automake autoconf libtool cppunit libxml2 boost; }; loudmouth = import ../development/libraries/loudmouth { From cc27e523665df525ab0a0db425053ce3d1c7d363 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:52:10 +0000 Subject: [PATCH 314/320] Some spacing, jre in firefox wrapper made optional with true default svn path=/nixpkgs/branches/stdenv-updates/; revision=10743 --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0039120a0f6..7a990d5afd6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -879,7 +879,7 @@ rec { wv = import ../tools/misc/wv { inherit fetchurl stdenv libpng zlib imagemagick - pkgconfig libgsf libxml2 bzip2; + pkgconfig libgsf libxml2 bzip2; inherit (gtkLibs) glib; }; @@ -4821,7 +4821,7 @@ rec { # RealPlayer is disabled by default for legal reasons. ++ lib.optional (system != "i686-linux" && getConfig ["firefox" "enableRealPlayer"] false) RealPlayer ++ lib.optional (getConfig ["firefox" "enableMPlayer"] true) MPlayerPlugin - ++ lib.optional (supportsJDK && jrePlugin ? mozillaPlugin) jrePlugin; + ++ lib.optional (supportsJDK && getConfig ["firefox" "jre"] true && jrePlugin ? mozillaPlugin) jrePlugin; }; x11vncFun = lib.sumArgs (selectVersion ../tools/X11/x11vnc "0.9.3") { From 8ea549b319c2d96ac26276bce2927400ee4e9fa0 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:52:25 +0000 Subject: [PATCH 315/320] sharutils added (4.6.3) svn path=/nixpkgs/branches/stdenv-updates/; revision=10744 --- pkgs/tools/archivers/sharutils/4.6.3.nix | 13 +++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 2 files changed, 17 insertions(+) create mode 100644 pkgs/tools/archivers/sharutils/4.6.3.nix diff --git a/pkgs/tools/archivers/sharutils/4.6.3.nix b/pkgs/tools/archivers/sharutils/4.6.3.nix new file mode 100644 index 00000000000..830c2a072b6 --- /dev/null +++ b/pkgs/tools/archivers/sharutils/4.6.3.nix @@ -0,0 +1,13 @@ +args: with args; +stdenv.mkDerivation rec { + name = "sharutils-" + version; + + src = fetchurl { + url = "mirror://gnu/sharutils/REL-${version}/${name}.tar.bz2"; + sha256 = "1sirrzas8llcsd8gnh56pns39wa1f803vff1kmy5islfi1p9vqk8"; + }; + + meta = { + homepage = http://www.gnu.org/software/sharutils; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7a990d5afd6..0942ae4c0bd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -777,6 +777,10 @@ rec { inherit fetchurl stdenv ncurses; }; + sharutils = selectVersion ../tools/archivers/sharutils "4.6.3" { + inherit fetchurl stdenv; + }; + shebangfix = import ../tools/misc/shebangfix { inherit perl stdenv; }; From 0b2d4935215bae41df407516f5d48bfa448207a1 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:52:40 +0000 Subject: [PATCH 316/320] libarchive: 2.4.12 added svn path=/nixpkgs/branches/stdenv-updates/; revision=10745 --- .../libraries/libarchive/2.4.11.nix | 2 ++ .../libraries/libarchive/2.4.12.nix | 2 ++ .../libraries/libarchive/common.nix | 18 ++++++++++++++++++ .../libraries/libarchive/default.nix | 15 --------------- pkgs/top-level/all-packages.nix | 4 ++-- 5 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 pkgs/development/libraries/libarchive/2.4.11.nix create mode 100644 pkgs/development/libraries/libarchive/2.4.12.nix create mode 100644 pkgs/development/libraries/libarchive/common.nix delete mode 100644 pkgs/development/libraries/libarchive/default.nix diff --git a/pkgs/development/libraries/libarchive/2.4.11.nix b/pkgs/development/libraries/libarchive/2.4.11.nix new file mode 100644 index 00000000000..e75d59ec18a --- /dev/null +++ b/pkgs/development/libraries/libarchive/2.4.11.nix @@ -0,0 +1,2 @@ +args: +import ./common.nix "1iq5hs4hbqyl6sqiqlaj3j89vpfqx6zv974c965nxjvmwy816dbz" args diff --git a/pkgs/development/libraries/libarchive/2.4.12.nix b/pkgs/development/libraries/libarchive/2.4.12.nix new file mode 100644 index 00000000000..9765ec61cd7 --- /dev/null +++ b/pkgs/development/libraries/libarchive/2.4.12.nix @@ -0,0 +1,2 @@ +args: +import ./common.nix "133kxx1wfangrhy6rcpqlqib7i45qxj8pcp3i9n574cwfx41swy4" args diff --git a/pkgs/development/libraries/libarchive/common.nix b/pkgs/development/libraries/libarchive/common.nix new file mode 100644 index 00000000000..9f031e4f2c2 --- /dev/null +++ b/pkgs/development/libraries/libarchive/common.nix @@ -0,0 +1,18 @@ +sha256: args: with args; +stdenv.mkDerivation rec { + name = "libarchive-" + version; + + src = fetchurl { + url = "${meta.homepage}/src/${name}.tar.gz"; + inherit sha256; + }; + + propagatedBuildInputs = [zlib bzip2 e2fsprogs]; + buildInputs = [sharutils]; + configureFlags = "--enable-shared --disable-static"; + + meta = { + description = "A library for reading and writing streaming archives"; + homepage = http://people.freebsd.org/~kientzle/libarchive; + }; +} diff --git a/pkgs/development/libraries/libarchive/default.nix b/pkgs/development/libraries/libarchive/default.nix deleted file mode 100644 index c7dc2b39389..00000000000 --- a/pkgs/development/libraries/libarchive/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -args: with args; -stdenv.mkDerivation rec { - name = "libarchive-2.4.11"; - - src = fetchurl { - url = "http://FIXME_dont_remember/${name}.tar.gz"; - sha256 = "1iq5hs4hbqyl6sqiqlaj3j89vpfqx6zv974c965nxjvmwy816dbz"; - }; - - buildInputs = [zlib]; - - meta = { - description = "A library for reading and writing streaming archives"; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0942ae4c0bd..de817774068 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2164,8 +2164,8 @@ rec { inherit fetchurl stdenv; }; - libarchive = import ../development/libraries/libarchive { - inherit fetchurl stdenv zlib; + libarchive = selectVersion ../development/libraries/libarchive "2.4.12" { + inherit fetchurl stdenv zlib bzip2 e2fsprogs sharutils; }; libassuan = import ../development/libraries/libassuan { From 0aa08473072c8a89e9173ea6e6a364ea0af83130 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:52:59 +0000 Subject: [PATCH 317/320] added gnupg-1.x compatibility symlinks to gnupg-2.x, removed gnupg2 attr svn path=/nixpkgs/branches/stdenv-updates/; revision=10746 --- pkgs/development/libraries/gpgme/default.nix | 2 +- .../security/gnupg/{default.nix => 1.4.8.nix} | 29 +++++++++---------- .../{gnupg2/default.nix => gnupg/2.0.8.nix} | 15 +++++++--- pkgs/tools/security/gnupg/builder.sh | 10 ------- pkgs/tools/security/gnupg/idea.patch | 25 ++++++++++++++++ pkgs/top-level/all-packages.nix | 13 ++++----- 6 files changed, 55 insertions(+), 39 deletions(-) rename pkgs/tools/security/gnupg/{default.nix => 1.4.8.nix} (51%) rename pkgs/tools/security/{gnupg2/default.nix => gnupg/2.0.8.nix} (57%) delete mode 100644 pkgs/tools/security/gnupg/builder.sh create mode 100644 pkgs/tools/security/gnupg/idea.patch diff --git a/pkgs/development/libraries/gpgme/default.nix b/pkgs/development/libraries/gpgme/default.nix index 64f1a746b03..09ffde4512a 100644 --- a/pkgs/development/libraries/gpgme/default.nix +++ b/pkgs/development/libraries/gpgme/default.nix @@ -6,5 +6,5 @@ stdenv.mkDerivation { url = ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-1.1.4.tar.bz2; sha256 = "0ncrv7p33rjq1avkxpp9x0gz6wna9y3b3dmw6nv366n5mgvxmpg8"; }; - buildInputs = [libgpgerror gnupg gnupg2 pkgconfig glib pth]; + buildInputs = [libgpgerror gnupg pkgconfig glib pth]; } diff --git a/pkgs/tools/security/gnupg/default.nix b/pkgs/tools/security/gnupg/1.4.8.nix similarity index 51% rename from pkgs/tools/security/gnupg/default.nix rename to pkgs/tools/security/gnupg/1.4.8.nix index 16c86fbe804..d712f8da84a 100644 --- a/pkgs/tools/security/gnupg/default.nix +++ b/pkgs/tools/security/gnupg/1.4.8.nix @@ -1,23 +1,20 @@ -{ - # Support for the IDEA cipher (used by the old PGP) should only be - # enabled if it is legal for you to do so. - ideaSupport ? false - -, stdenv, fetchurl, readline -}: +args: with args; -stdenv.mkDerivation { - name = "gnupg-1.4.8"; - builder = ./builder.sh; - src = fetchurl { - url = ftp://ftp.cert.dfn.de/pub/tools/crypt/gcrypt/gnupg/gnupg-1.4.8.tar.bz2; - sha256 = "0v009vqpa4l9zwhcaaagz5sx65fjp8g0alsf8kac5s5gvrs2b78i"; - }; - buildInputs = [readline]; - idea = if ideaSupport then fetchurl { +let + idea = fetchurl { url = http://nix.cs.uu.nl/dist/tarballs/idea.c.gz; md5 = "9dc3bc086824a8c7a331f35e09a3e57f"; } else null; +in + +stdenv.mkDerivation rec { + name = "gnupg-" + version; + src = fetchurl { + url = "ftp://ftp.cert.dfn.de/pub/tools/crypt/gcrypt/gnupg/${name}.tar.bz2"; + sha256 = "0v009vqpa4l9zwhcaaagz5sx65fjp8g0alsf8kac5s5gvrs2b78i"; + }; + buildInputs = [readline]; + preConfigure = if ideaSupport then "gunzip < ${idea} > ./cipher/idea.c" else ""; meta = { description = "A free implementation of the OpenPGP standard for encrypting and signing data"; diff --git a/pkgs/tools/security/gnupg2/default.nix b/pkgs/tools/security/gnupg/2.0.8.nix similarity index 57% rename from pkgs/tools/security/gnupg2/default.nix rename to pkgs/tools/security/gnupg/2.0.8.nix index f6e22bec51d..05022e53c30 100644 --- a/pkgs/tools/security/gnupg2/default.nix +++ b/pkgs/tools/security/gnupg/2.0.8.nix @@ -1,16 +1,23 @@ args: with args; -stdenv.mkDerivation { - name = "gnupg-2.0.8"; + +stdenv.mkDerivation rec { + name = "gnupg-" + version; + src = fetchurl { - url = ftp://ftp.cert.dfn.de/pub/tools/crypt/gcrypt/gnupg/gnupg-2.0.8.tar.bz2; + url = "ftp://ftp.cert.dfn.de/pub/tools/crypt/gcrypt/gnupg/${name}.tar.bz2"; sha256 = "04v9s92xph1hrhac49yyrgzdwjqshs2zawvjbi3jc2klwjpi1wqn"; }; + buildInputs = [ readline openldap bzip2 zlib libgpgerror pth libgcrypt libassuan libksba libusb curl ]; + postInstall = "ln -s gpg2 $out/bin/gpg; ln -s gpgv2 $out/bin/gpgv"; + + patches = ./idea.patch; + meta = { description = "A free implementation of the OpenPGP standard for encrypting - and signing data, v2"; + and signing data, v2"; homepage = http://www.gnupg.org/; }; } diff --git a/pkgs/tools/security/gnupg/builder.sh b/pkgs/tools/security/gnupg/builder.sh deleted file mode 100644 index c5545c7456c..00000000000 --- a/pkgs/tools/security/gnupg/builder.sh +++ /dev/null @@ -1,10 +0,0 @@ -source $stdenv/setup - -preConfigure=preConfigure -preConfigure() { - if test -n "$idea"; then - gunzip < $idea > ./cipher/idea.c - fi -} - -genericBuild diff --git a/pkgs/tools/security/gnupg/idea.patch b/pkgs/tools/security/gnupg/idea.patch new file mode 100644 index 00000000000..aa65cc9f7ac --- /dev/null +++ b/pkgs/tools/security/gnupg/idea.patch @@ -0,0 +1,25 @@ + +This is required in order to support IDEA encrypted keys +using gnupg-1.4.X. The raw key has two bytes which are part +of the checksum but not part of the key. + +This will not get into upstream as upstream does not wish to support +IDEA at all even for backward compatibility. + +Signed-off-by: Alon Bar-Lev + +diff -urNp gnupg-2.0.4.org/g10/seckey-cert.c gnupg-2.0.4/g10/seckey-cert.c +--- gnupg-2.0.4.org/g10/seckey-cert.c 2006-11-21 10:26:13.000000000 +0200 ++++ gnupg-2.0.4/g10/seckey-cert.c 2007-06-22 18:08:48.000000000 +0300 +@@ -211,6 +211,11 @@ do_check( PKT_secret_key *sk, const char + csum += checksum (buffer, ndata); + gcry_mpi_release (sk->skey[i]); + ++ if (sk->protect.algo==CIPHER_ALGO_IDEA) { ++ buffer[0] = 0; ++ buffer[1] = 0; ++ } ++ + err = gcry_mpi_scan( &sk->skey[i], GCRYMPI_FMT_USG, + buffer, ndata, &ndata ); + xfree (buffer); diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index de817774068..3c75c550743 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -512,14 +512,11 @@ rec { inherit fetchurl stdenv; }); - gnupg = import ../tools/security/gnupg { - inherit fetchurl stdenv readline; - ideaSupport = getConfig [ "gnupg" "idea" ] false; # enable for IDEA crypto support - }; - - gnupg2 = import ../tools/security/gnupg2 { + gnupg = selectVersion ../tools/security/gnupg "2.0.8" { inherit fetchurl stdenv readline openldap bzip2 zlib libgpgerror pth libgcrypt libassuan libksba libusb curl; + # enable for IDEA crypto support in gnupg 1.4.x + ideaSupport = getConfig [ "gnupg" "idea" ] false; }; gnuplot = import ../tools/graphics/gnuplot { @@ -2036,8 +2033,8 @@ rec { }; gpgme = import ../development/libraries/gpgme { - inherit fetchurl stdenv libgpgerror pkgconfig pth gnupg gnupg2; - inherit (gtkLibs) glib; + inherit fetchurl stdenv libgpgerror pkgconfig pth gnupg; + inherit (gtkLibs) glib; }; # gnu scientific library From fc33ef9f7bd121b52582cb4e1baed8885e156d98 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:53:11 +0000 Subject: [PATCH 318/320] libraw1394: URL corrected svn path=/nixpkgs/branches/stdenv-updates/; revision=10747 --- pkgs/development/libraries/libraw1394/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/libraw1394/default.nix b/pkgs/development/libraries/libraw1394/default.nix index af0553d49f7..2ca8c543fa9 100644 --- a/pkgs/development/libraries/libraw1394/default.nix +++ b/pkgs/development/libraries/libraw1394/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { meta = { description = "library providing direct access to the IEEE 1394 bus through the Linux 1394 subsystem's raw1394 user space interface"; - homepage = "http://wiki.linux1394.org"; + homepage = "http://www.linux1394.org"; license = ["GPL" "LGPL"]; }; } From f1459725b60331a90c40e1fec30adc3bfcb644eb Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:53:23 +0000 Subject: [PATCH 319/320] telepathy stuff svn path=/nixpkgs/branches/stdenv-updates/; revision=10748 --- pkgs/development/libraries/tapioca-qt/default.nix | 2 +- pkgs/development/libraries/telepathy-qt/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/tapioca-qt/default.nix b/pkgs/development/libraries/tapioca-qt/default.nix index 956d4c09873..962a82a8a1a 100644 --- a/pkgs/development/libraries/tapioca-qt/default.nix +++ b/pkgs/development/libraries/tapioca-qt/default.nix @@ -1,5 +1,5 @@ args: with args; -let rev = "2031"; in +let rev = "2066"; in stdenv.mkDerivation { name = "tapioca-qt-r${rev}"; src = fetchsvn { diff --git a/pkgs/development/libraries/telepathy-qt/default.nix b/pkgs/development/libraries/telepathy-qt/default.nix index 9c0ea152f4e..6e8e84399d1 100644 --- a/pkgs/development/libraries/telepathy-qt/default.nix +++ b/pkgs/development/libraries/telepathy-qt/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation { }; buildInputs = [cmake]; - propagatedBuildInputs = [qt]; + propagatedBuildInputs = [qt stdenv.gcc.libc]; meta = { description = "Qt bindings for telepathy"; }; From 805424e33f03fbe07db4b733fadaae802a41a5c5 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Mon, 18 Feb 2008 20:53:36 +0000 Subject: [PATCH 320/320] libxklavier added svn path=/nixpkgs/branches/stdenv-updates/; revision=10749 --- .../development/libraries/libxklavier/3.4.nix | 21 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 6 ++++++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/development/libraries/libxklavier/3.4.nix diff --git a/pkgs/development/libraries/libxklavier/3.4.nix b/pkgs/development/libraries/libxklavier/3.4.nix new file mode 100644 index 00000000000..38fa91cfeb0 --- /dev/null +++ b/pkgs/development/libraries/libxklavier/3.4.nix @@ -0,0 +1,21 @@ +args: with args; + +stdenv.mkDerivation rec { + name = "libxklavier-" + version; + + src = fetchurl { + url = "mirror://sf/gswitchit/${name}.tar.gz"; + sha256 = "07pq74ygmnr3vgfp86dbjnqsp3v67fww6d3a1vqbif9wzbk70195"; + }; + +# TODO: enable xmodmap support, needs xmodmap DB + propagatedBuildInputs = [libX11 xkeyboard_config libxml2 libICE glib libxkbfile]; + buildInputs = [pkgconfig]; + configureFlags = "--enable-shared --disable-static + --with-xkb-base=${xkeyboard_config}/etc/X11/xkb + --disable-xmodmap-support"; + + meta = { + homepage = http://freedesktop.org/wiki/Software/LibXklavier; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3c75c550743..acac3d50853 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2398,6 +2398,12 @@ rec { inherit fetchurl stdenv; }; + libxklavier = selectVersion ../development/libraries/libxklavier "3.4" { + inherit fetchurl stdenv xkeyboard_config pkgconfig libxml2; + inherit (xorg) libX11 libICE libxkbfile; + inherit (gtkLibs) glib; + }; + libxml2 = import ../development/libraries/libxml2 { inherit fetchurl stdenv zlib python; pythonSupport = false;

C?yk_jHC5)>l1255s#~g8YgZR| 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æ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%0AHL4c`I%Xf-?Cxblb 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 diff --git a/pkgs/stdenv/linux/bootstrap/powerpc/bzip2 b/pkgs/stdenv/linux/bootstrap/powerpc/bzip2 new file mode 100755 index 0000000000000000000000000000000000000000..a9eb626e1ca2aae48704232756b9820bc4dc35cf GIT binary patch literal 85816 zcmb<-^>JflVq|~=CI%4(1_nj}28KBd3=Ad=j6M&*awZH449pA~4EzjyAbF6O00RR9 z2s1F+%>iQu237`$QH&tI0F&Ju5N2TDdBVV8V8Ot^zy^{}DR~+Q(vJnRGcYi)crY-s zdN6W^)@X89geWqYfizB0{QsebgL&BmMg|7k0|HDF^?VpwG8q^wIvH4M7D$O$EM;H} zSt?*vvs6h0BtK!DFM|hz+FK8X4>AzFOv@%8WZ9pZ|0lKz z3=Ech4ai?0wIFjqW`OiN&ST&K`32+;bo)Sdf$RaO*!R zU2b+E9W8bt?T74UG&3;FU}j*Ssm#DOGns*P#$pDRna&K%GnpBfW;|wKg!n^%(Sm`2 zVDWkXdukb+ zD{B>_L=Ts~V8FbPS%S=YeGpt5@*gNTJ9DD5#XL$c!oDDBjwNmtl3 z2!O&~#G-|3N5e{QP@FL}WO|qQ95Zb4V7MuXo;ILv1nUQ-oeoa#HIOi1&;gkVGS6m# z0F%uD0kAn1EnIIbmZt5oIF_^lV&;vb_{;>S^JH!Tkl78L-X$Ikw?skaHgJ0H&~IR1 za-0heOXdlj-a8sHy?1ypywSzuCJB&UkeMK}ERwnZcre_=Y5)F%3>-Ce(x7k`scBZO zsF|-^;lXezP`jCh!C^0h3)rj%0Y*^xShVnbsDJvq!r}l61H@m~--6_!?qqP>3w9?X z!kw>M>!17v$Dzdn76uQ7OO>GXF++}p0Tdp)4>E9o(m1RhL>D>Y1JI-SS`?Z79y9FE{`xrTF5(Jnm8W}h&lGFBhFr0|h zZw8lr4Iq8+c-x1FH;}(Ta^SdI={>`ug*O8cZ`XN2at)c@3qa;L&ST*4V7N39Y)5j^ z1`mewkznzC3==@=Kw_tU^uZA6rK+I z7&yHD|KA8oBgpAvisJtVAobv~qE5OJTvp6gu5ehyU}2E}*0Xi;VFngZx|w{KfuVl! z>k1Es^Q{)i46NS&|Ie&n^15O|Jp+RW!+BK?1_p!r`=2Ws9CK1$Af`kj`e>A#tyK%PFI5cKkxqskU9?r1`g|c z42(5$Kh}ZN*Dy0zIL>1b@L)I{2vX-b@Bb71c?=8=d;f3HpU1*bfAVvM!(0XqO9d8C z-OdOqlR^AV2CiFfcmoV~_yFKPVqGtoEK^(ZX-y!N4GbDkd}sk`^wn_5S~B zDM&BK42uK?W{??<`xtn<|NmCBNMK;{{{Qulx`tr>Hme9Wzi!20b~}`oT*@Qu&1>TAUzf> za^SWdC>%T(F8-~lm#%bd0+ml^KN`sY|6h~vQvj5IKCm8H>#S{~H(?S}YV98enDf6vhAO`dXp-7#-#@$TToANQ5x3sAVuT zFw`(Gn1nFgtjl0#V8mh$I1gJaU~B;A<9W&z77YvsL1E$pu76LeS}$N=&~N_#ACzZ6 z?K@CC@4;~PY)!3nrNbfy9#B5?U^w^`6h@#h!<#1|b(@L@!|7U3d^T`;Z>R^=33C{1 zYHhqLtRFBig34!5`=((oD1I-_gtR$M`!>jUZ>V8r2(U^*-8*060crcuh^#1=Hn)ZL}g_;2_i$V3f^-CWGkb6M&e8YTD`Eg() zDDE5~0Kqew+f z4XFGVSpo{n+XqD^+%B=EKyu#yzwHI_ zL21zY|F?}GJs`G4i(G{V!wFjt1_lj~K9Cxy`d$zpq|PEaX@fe@Q2pkxk0AuaNBI4BFU0SVHVeW(%wYdvvFA(uv)@p^oDK9~U@9jusgtc_3`ft4~CtE?T17s(tpJ>S`?*b}|AZ(sDAbTNgKY0&} zV`+OJ`Tk6)2LqFh{R07}26Q2hmp0}qDNjv)0Q_khYL zJ!S?5sCyJW7!E{6YzCD<4x1Rj=?m_M zPDuJ`UJ3HUky3Ig8bn9|3@Q8-h<)T zT2S2wvJX@)gZu$vPtNpS;K6V#5tP;(<}r&v+;t4xrghlI%mPwly^ukoVWl^?{AqaU zJpp8H!!7SA^(mmVs<{x<-T>9JV7JX<(t)~@(P1uw2uQz00s|MQ|LehU@?`z4*A>={ z3^zdbd;k9d?z1_}V~DV5U|_UZAly-Z>@zr=JQz+r1dTm_)Oj!*JqU3hQ;GguaDPXl ze%b4adgsd(pn4pXK0Fva6hZEQxPftn_y7M3ED{+cK=Kv~7#J)-{o98OJeG_M0+xyl zA|4E`nsD{|7@_&@Xe6lZ=CFu~2NDiPD?x1r$9ar@K>ldp^scF&4IZa6fXJWV1i8y` z4&xo~|34%lVu$~N)PnR)e(AlyaUSCV5Fg|Z5Z{C0$XAdahkcAIKw=&YhtGo4I?iK+ zjD2vz;+WB-p^CAc|gNFD2H#-{^GKe%ZG6;a;%sP?5!2AE3r676l|8H)B#Qq=PnBe{Y&DsACI3|GV zMvxz@8yNz;|G$+4^+h0R--7$zfA@b-f!0}!p!9u!lM9q47!PDZ#@Z}e6m;rSZ-d+7 zf9!s!{Qu8jbbym<#h>I1jX&`pRQ@D082KDCa`Ip}?&!h55CV>yL_0_!pzw`C}|4|YY4i?D@8Q%Z@+yRBN^#cY5P#pkb zgTfoso^aU5-~cK6lQww&|8^84*TLz%6-3W|2^p_&*vB9PQ3D#Q*bgh~IK2OV{R?W> zfYgHWO#`FIlEy}nlHH(o4+rzI(+5Q+)HXCKoPH=W!$MJH0cebCisB6iP#X!PXWv2f z8K5*Zfl>Vk$Q+OvxZ6YuEglR^Dj;`&!WYsmQJCTV|LsGNSs;Ib$DrmhXn_3XI1k=V z0=I1-dcfr(sGS6AXEA}pI5};P_y4zZk<4IpgpNgk%70Kf>HYt+AtYTg;3=E;&jr~5 zDVr4*fYOf#10%Tphq?`9ZUD$0i$(?snAsi-+Y%cX88ndECh)O3XnJCTwt+5y%6Uln zbyU`af#D0ttmc>C`V(Zfh~pfFKj1oaF2ffO28If7y;$pA;lXgE)`MYpCddzt`xqi% zz!>TnB;MCr4Oo>cDjjq+Nxzj@cIr(gzK{FQD)Pm0buwAJGJvjZ`1lfXZyp7@h|M zvjHTnD@u6(|F99--XNhqID8glpZEVyg&==}`WB${2(k}U4o%?nUNC_X+#d-Ag`vYd z#s~G^epgsGFfiCX5MZ)S6ydO5$iQLE$k1S|$RJ|v$RNOZveG@86Lp(sGbJbr5+6OTVd)P<}rjcDl!Ow##kC18AL#H51=vq zT21C<4tp46Kw$_PZ}DJY5UAk}SXaY+6F%kwb_aNDN}&~I9-@z;sN?uL$Bh>|?BVZq73solW9<~WxD)F)vK zVGyvg)Z|L2;bhROVek?Gg@IoKi-Pz6mxA8^KdOS_9+ak_Zi(<^N)Bi z9NGwq8<3bqvf>Nx|9=%gaRv%=$9a%3QD_)~#!S)lD=~O594Z9q2k8O%X$GfvPXnX+ zkzEJXXILnzA3*e7Zy12eWmw;J-$L~zkiM(>6_8seHmWbcUp_0bcrdU++I^65a8R56 z0a{u71yO#(%iJxzKSx~>#`~M405F3=Xz5hQ4w;QZI?RM1feq8|?bF{W% z5UBrmK@U_XgVKoi|7VHy^G@i2(i+IUj{6u)Kyn@oyL7>AC2%>kOA#bjzxYJ}$m|-~ zo9iHIc3OhM2Nb3b^B4m3=P~eD-vi~X{|i8F1C>jV`bJ5{gJCBxXe`Eqfk6i(2Qmlb zZtwrkBSCzGT2P<)xhts71%*3O9RTUuolM&UN+;g`-&_T`*aJzq} zBgkAx*@)EcKlZu8gMkU${zB{fg8Sg$dIoBb2gCZGX!Q)Ze+4oZy`J%4fb@5vZpPjJ zg_`aC{|&DGFT5{>X2%y$TNYB^>;v_GMfB%`^A6bE9k6+;eUQ9`>_$)@(+1R^1kZse zsetmi#dFyF)jn3Fum-t10>rm|3F}9{hSY)c7{K*1tp5vYJAvwX4~A`qpfVVw2iZ`EB=Cka|#?p!ubDjl&{Fa5}-B z_P4o$^h46V0-{}zb{jf=vPaN^f#C|sJdirnzVB|ZyR0+O`o77xDqZ6+>qLeItA`9C){G1S4O_jZfci-t z*O1yl>ZdC_7$iP|#>pLiIFm~2Dcbvx{0rA@o$avTsrZe9EU#x}b*)mbT z`Tu{%c}zPXYPLfBzmI7Jl)n>{{~Vf_W+0g-1CiSj3Q7YY{gY3E`sqxN@jp&)@Hiq! z3_J!s7gDZ((j&B;-9CD_U}ebko&yTdA3vco*aBi{f2&jF<$ zNZV2LC~6y!kq0zx32g(`V73A8gZuQLyb3D&L16)^zbsmmdLVVy_PHJm3=ZD^AAO{zkAKj5g$^vrutZd_(7y zHf`0P#Q<8%16mga?o%SU0bG`X?M5261=X7tEy^;W`V!)YZ8t&fLQvdUBrE%P|Np%O zR1Or#G5iPF32L{1@;`{}*u>y~)E3AAwR1r2A@Bdsrh??Lj2D3CAwcyKsGS7T3sMJa z3xe#J!RfsX#GifAy9F_}09vQ84l>RSp6_|OP=6i+1E?GVsRflyj`JYxW2E*jcx)Kt z2T1x;&VaS4p=Bp%9ssm1hzV47g3JNw1<|1L!(lFi1d`qY4~Ffopt%rGT!Ykr!Vna0 zpfq67qTGTAyRCB@7}c*dHmWb!1!^aAFfRj*b66;0_z#s?WgVq*J%=8AY(}1}d)c*v@ z&EWLj0;R#}ZU(1!D~LY1X#~YLgrBqll)k;3=#d;h;52yJIegg+3l0?ldG%wy2={(o=jghU38`uQ&y8WI^e z9OnLi0-E2qbr4{(U|?VeVs=YTf?`2>CmsRurF97?Mfq}94BqT0C=784cSTHbv z)=7ca`!v7wo&m}ips)pn!vtCH4vQ9LXt}*k6+?{S6Z&@f#itYr*sD;QWZN=Ya>q+NB_K9Op4* z7|8wqUz_j|JV$52z`z7rBR7H58$9MSG1I%jgMrDV`40m_-ICSNFkJ&4H*=iF6ax>- zeM}M^@(hfixCMvpKE@v&3{0T4En$xH7#C25MHe<2;5H+6@fZP|;3M!N4E^3eO3WpfF^30%C*K)PT~&1Uc^x4+e${ zAodI??^X{62GCe3v-f|<8pj!8-djBw7&d_A#l5$9Fff4TNf>5Gc(3tbU;w8pP+bKz z(*l(4Kx>LDz-xOMG%OexSV41#77Pq*PIKj`OQ;(-C&+p)@c@s1+IfW|*S=@yjELFoxpc7pl|7A?vzAoa|KLQtLO{r_$#Xw8cU!x2ePUT(O< zz)-^mSuf-;?;lI^9MD>0@OTCzs4Z!=Qh5t#eK4qfYtJCS1R7@p&GXnR2rz-{)1Lzx z`~M4Sk1&GP^IES|29=GBR-VeB{xGA}N)--JSzy(v0-9T8w8~Tg&G|A~bE<&GnHa5J zs({9F8LdvLfa*&|>r53;-;>eWQw7w&W3<*(i2&)h?o>(fU|{NK{>Q)oDg#0J%Y$Jh zcy7jV9uqj7*SSot@L*W!3d$!A^B6#DS(!lLF@X~lpG+PgJ)k_{!LSlE{=fuM=eUmn z+}5gVSq#$42@-?q1=ks%eC5Hw1g`JvQf60pFsyirt_D>8doVD*0GVIU0&26aI0%Yg zkUGbC|H1R}bx(GK^sWSnA)7yg6O?Wk*MRia9oY<011tYP?gzU8RNr`jmV7<_T>+WT zT9F7^E9TI|04@V&WP;KdV+P2KdKb`K;|fQRJ+O8usBHCMSfL9N1C^oP|8Fn!U|_TW zt8aM>vQrQ$2e)$qr}qR821f8YERZ^j7L^hYhUG6o>OgC3Kxqsr-r>Qp{31x)VIG43 zNX+~Hm4hA(3^$O}%<*7Y4xZZssdL=NpnxQ|#Dih^M36W%T)_451Ws^TpMs=rjR(VW z@VJ4)JO&9+UDK!yP5;{9^q+yGc83SUa$B&O`xrp!4z$j8hWGzlk)U-;-v9ryfZPd6 zM-~ehm^>JkABCz_0i|hBngN-GoQFW|TkrpWb~N8(U;)(~4)gwk>v2#!2Hbanthr@@ zwE-G4y*u=~L4AG(1CV(goZeeNb+F?+h8PgPfzun*cVcpw%isel6QKTe(C-GVTV=3- zssW8JFgd`+BcbbR!E)en7ZvDS!J4Vw|NrQK>fQz}@cceV4|rWj1E=>2kiDRI2bE0| zK=R!Tpm_=bP`wN?3uHIic!mL}odjwVTkqvO0177$hNX%i+9H90--BVPD3s0U!LSq@ zU!e7P;J(N{h92k|1JK$&0Z4e?DFoFmpnTj68lTTp-eTRrzz8Z=K;<{M{!h6L&chxI zOJV7s2Q;n^YPZ7cta%JPkn)B>qS4NK4k!-6<)5AR9Pj^kc#-P+4IT`Ppm_&SIIIA< z2jowX`#^pMwaXm#F+kn+YN7`Nc%Gb*u-le^(?2LINpssPU1Ya`+|t46y$uvEj{6wi zcrY-Wz~aUpgd3lPlHf*I`A1^-J^qNrjXhvD&SUU^x*0Y;4o;tlHaky^2gB-#AT`+9 z`=B-G-v5720EI7TT(6;)fuZ>?0}Ck6f!bgm40BRJ?a}(bpfxmeBB5L=`HWDo%L!zVB@nAFTxuBh3eT~Tw( zxWaJ};~Vh&_Fl#(`YjBcj(ZvJ=(8~}IPPG)qTj~w%W*H`8HZU69M%pDat(3}p!N=E zP6SjgGgxXm+?i;{pwb`*o(n}1x85?*jzI&Y-lBnlA))2whK4!@9gzD$^UR>VD4_8$ zi-iAw9h(>nY#10ALFp}lp=|+3zTTSg8c6Tt`;a{pljk!COrFmm5^gJCHF-XR1SoHU z%mbMNQa7QVLBL`zLkG-!WI3A#29^o+3?d0F3@jjdkQ~Sku-^F$0u$;PBtZTL_4yj> z8ASBELE|+HJfOI9*vF6o@*7AGNH0{62vofY7CD$%m~wRtI-vQ3=6ehp^(R65Fjy2p z{s*Od3(5a)EfpA;Cde~*faBVp0bG7hu4gKkEYFlNIiA5_@_eS8iS`T}ljk#~Osr>6 znLLj{X7W4+j>+>FcqY$dkeD!^L1BVCgURIi3>FjSGiXen&!98;AA^GT|GzsyWfZuL zmGJ*x10#dUZbtALW&==q1EmpAy6$vlFt_Biy8%jD;55w4ln}z{W*5TXpjYeZRS~Kw zU{wp*LsKzPnJJ-xnZcsIn}Gq8?i}a*zXF;QZ&YS5v3S71SgY(MGUFvf1ZXc6s4oth zKLV9ajm!)xjmZoypmlAv9+B%n?a2ma2A4)<29;V*Mi5^Gnct|);L@1PpaMzH3@)|a zp6jrQf!5L0DoBCs3;~&oO$~`+7LCpjdo8p7{{iK>+AN6OFt>oh4b(;fKr$>QKjh43PHRdT%cyJc7@|2hCSM? z;Ps7Lv|AWh9QQJ;X^_W~|Lqx68sxF$e|rWEka|e||5XC>D=hC>Cj9>k3O~mth6s>* zEfpBJKxuEHG6Ty5W(I``%nULUn0Znr)PvKt%mjG`jtTM%JQL&@Bql#*V3>TE!C(S2 zgU;;53>p)dc|s;I^8`#_=J5gf*AkM>Rce!?G505ANmp1VFfxF`r-oZfq=u8PAXGuX zs)mI@uf7Ysmx`xW8N9}TqgLCyqJ}vF)c<01nD_q*d2!C;gFDW70`SO%;FO~v&UIKA z7#tQcNPx;W-+2rQ77YLYO<-nV0Qs$fMfeD)tp{rVg5*Kt-k^F2BoCrNV^;dD44|<< z9{n~3P?`phheOqY%>kRoB76j79>NR;29OyIEW%S7RfK0uV1j?) zNLGc^eF+e;MrGk67M%b8*D5eq)G+)jsMTb!km3CQXQB!NXw4#{rKT!NO(ugL$SzPi z2IWK4_2vs%^_&0y2ek{qb8k;T_3!eBp!9}oy*VgNqL?)wya!Lju?al>0rm%U4pF8< zUU&ki{Qxp=g1qn%Q2QPfMxb#_P#X1MV6cGb`~M&0e^3~L)PefJ9rD5_Kzc!YJ1pvj zr+EMWyAssi^I(`_30iO7{E&eMd7nZ}vvMWOUEp#CytiQrXw3%N+Hj=$z817599rM+ z)UK$xVO&x3%etag#<>FGE(V4PvJ4FR(DiiMGr;*>LwhCzi{o4d1^rpzI2M4mNkL-~ z3fgmoJ3!-^pf(IB4}s#_VIG4Acnt-3-R#_%pmv5MD2>f!0OvCchX21D<}s*vFfcr@ zNDw~b!7%wQNI$5|aahD4;<%6DgayO@zaY1GFfbedwV5X0Wnci=3tF!-xt@WczLR;` zr$dT?0W{BJ znaRLdYwsm8gOh<}V!d#W6T|-}pgtpb?F%^UfBgi-yW=7T1(3Ty_D`r~V3<%Zd;}6F zla_+&L<@Na7Ld6U+RKaxZztJJS_G{c(#HRqz;x z2g7thP@V+kD{wnv9)m!K9C(Zvv~OJn$xJ5Dyf$c@4b+BfehIF(R6z4ypthz5!(DG{r)Epa7J_GGl1@&1$>hpl7N1|NlgL2A&#*sEWo627w9kJPDvSdZPz}M56|Sh@}?;9`uPC z3?dUf7$h9_{jX`%V2}Z~Z#5WXy#N2tX|(y}&>+v^01~Tj@L+J9$34MuF87p1dj`mw zNO=Yx(0JWUdj^h%dIk&c|KFB2+A~-**7JmfD*UKxlxGmB;bvGDs?A~37|#lq{_$TNt5 z=6fc}Ge|Vnvp9g<1@aTfT@&kB9O}D07#i&vL_lo?kXpxm|2AYWFffAL3EO*D!yr`= z!oX$+@&{<_e$s!4+ad1$`gU-*`|l6@?q=9C={}0PO$Uj)9q_pu)IOXb&tT*I|E~ln zyg_Nk`~R0pn!7!oK?GzMD9wP*dC2r+U<9R`T1^HMP`U}#yjeFfop^wu24-j zJ4;Ol7Eu22{{Q(V%zYE;8Ej~lp5qxr8tWNsK<;a_XK~1MU|O4vq0V zA)yIB>cDv$bmj&Z1Nh7hP`Odx;lU7^$zcJPv9MObsTdEYMN#B7`$ngWsT!pmJOgh2}-lz zaE)gW0i|6~y)?6)fdf=`HrDg_)N)4Xg)$tn1NoPz`YRrP{blL-|34`2JMQ~;1yl}z z@(rjQ0F?nX3{J@PmkP*TAa{V$ILIv^x6#l&F8JNU0BRFhfZcPSfrs|)`MU+5d%$@F zQs4Bz!U^W4nwJrJArDB5GkXS+#&{M7OV0oQLHRn9lYtS`jsn*s@hlGDdPE*nk62ZN zW(!z>>Jd;o2UeFf+Vl9-aC_*5a2~P)wLw62A*jqED$Rh}JS5iAzya!;HOe#aG~5T3xePYV`+0mC_A^*Cp9JkYVGyW!WnEGC0yLM)zytDw z!(4_I3l;|OxkVufZg%<|42(4lNfjZP4tk(=r;`Jtf+ffQ|DgR~weGX2a2t5s$Kog;DtG@b=gXUPEWL%ji+2U1(xz*GTJ3o_55<^TU$3kJQA1P48k zTWXlSD(c%J7#!y^%7EsJKz4xo7#<7^YeE(XSXmrnV62g4&_C34@3H`?mqAxocVcq|R4oH2-azNW z)NnCZIL!O^0c4)VF$ShuTL!&Qg^RmDaSk%ul9Pc2qz7cS_y2zfK<;g1+uX z&}h#C+UL(ytLE`z!hN0uhrJ9E4W-^CpmhQb`*|WDYbyF>L25x`_YQLz1RAD#mslh) z#CkCFw}SLH$n!+hcY@YOFidHX=Sc}+;IOM<@T!;~&y!-oz`zGOKMmR+;&hn%3A}#5 zgTZ*Melr6Lv~LLNFByR54jlHP?v=M_QEh10&lA&dpC<+4mcEG%@;ot(_B<&dJ015i z=y)(N$Ux0!a-8=Gw0=dx`oRBxpgyeif&YI%VFT$;GPr>H#JeD8R5-x;lc2S8pnl+f zM+S?UD(T9axylta`?V`T>*qk@1~pHuD{5JsL1W=pzl zATc=+JT4*Q{r_VoXgtQTi9thuJ_C!xJ_a9{TF^NpHJl6qpfNJ<|1WDn>th-i89?id zK;y9@AoHvb{Qv3w|79X*3=+!!;r;(*AZWb}h+qHjcZK)=m!N&09H4M&V1(?Y-tEX> z0h)J23K#I1B>Nq~XJJ9k6`HSHQFGTAF>VMNj{x=G=P}5D#)LtB290fk%3gh01_p;6 z3>wg}3m(w8)C8z{(71`?JjMo)7-&olHiilscY%ya{{IhB3sQ#|FJ%mHn8g4ZgXNgK zkAY$Ge&Hh?42(7t_6skuu4iDGykB^Qb-eJD2Jo3dosyuj2hi9_gS_wzNSxg2mr0K^8Wwt3WyK!^S>`( zz5D(h0O|Ao|8IxGtp69h|Np-LI)el>AHCZVeBPJ>EZ#wR0X!#^DP2+1ty}>*!vHiV z)W9r!1T?k@og2`pRq?K`KxxT?fl&igUqH)H=okq@L1R2aK!ZGk4`|NDVGct= zqdkL8V>W|84QIf*8Qct@@qhr(mffxe;^#dn*FbII=d%UTG`j2v$1@@WzQUDA85J5;xLcF0@jvwn8yGbyD_m;U|`g4VE7Lj zs|B?`K;sgiagGp9{(qqMu){oN@Omrn{|`XrD`-t3GkA@RJOhWrK61=s0*zOJ_BJp% z%=>o$G=}`wXD+)}tOYcQc3a52(Ir;A8;V&)_(Z@lB&914F}q z29xfS3=EC(3>NkCEI?&T2&m3?*vAmlXwQ@o@`}x_v7SLCRKd*-e5RrUQw6Bru8{`s zZ>*@bw-TAj$q+F?o++W$+i>0F`wXD*Ef;7!fX1c`^g9^-TX2Ba4uR$;d9>RZ{)5IJ zLF0hl{~wlu^nlvlpmsGV4jVlfI2tn;7(i{VMhylQP&*S8f8cn_U|^W2!N4-n0~B`u zWg0aYc))gPfX>YN&jShvG=H<8`kUbkEdCtlF}xTYVep`k>@b+eAb=bOpz%Ra+=Ii) z9uy}3K>lT^t$ADlO&=c3_ZfIVWrf2$2Ac+X1`}}F-3u9;_WpnWX~TTbnVO6Yp!fl; zG013PV3~ZM!J?*x!6c;RW*xL1c4@R{@BodkIqre1IRwr9dN6RBLgSLd`~M$Mzl8yo z<{akz5vgDNxB^rj)g&`q*qzA06OzpT4^$q3$_>z%FQ`0)mP;Q%b9CK!u$X4P=n54Jb{@1>nkkXIm~0Y0Sb3Q<%Z)t zh7Aq!3;~Vy3_jp+p2M&JwAK|=c6cx_)abV`fYyV7$}0vGJNGdZK<#XV);9@AcBc?& zHz;i&+pS}f01gL6kiQ{wO5nDa1gPu>g$-zZ9jFZkI!6xMoF+#5YYwFS1!{YN+h9+u zD{5JtD{9reL2a-H;CYID3^yS0&Ts*Ie&b$-6Z-9-bxRBfplz`o;I`Oah7J0hpmj_P zEA%_T^JNP_>zFJKFvx-S2!PrvpgIt>jdtrQw2fBLAOqQRV9~(9gxOB}o2%c;z}&7ldrpA%H}b4;jaU;xbngXcu67#Q?tg4;A46Dk=P z^k+cX6$}i}^5a5-Ja`QOgTp*V1FQcGELQi0r&urucTD;(ykvsB@Cs0P)*aql;r;)Q zrUmo=zo34AHt3why$llI_?^eV0XlCHG|%h7z{mh<&uBLYw>$1-Fi~D0+yQI1)h~Tr zQTG_sPi@nzpDO{H7qfu+0oMKlwLe)vYwW%M{|C3XJQ(VAA!_Qt=f8m3oKQPKZPZ^A zWI*c@{{I5CV?7ucT0nDfp!%~xUU<#~X?QsBG{_4tm>>lY3lM+J1W9;!fcP6GNI>SV zLHa>y4PrI}186=JWWM+R+ebm=sRu&|XxVohxh;g0igNMU7#~_ z6dB-awQ62iSAgb5Egpc<*54Q4_8JG%vi%1cBtU%!Pg3sYO0G`KV@c#cFetv`FJ_Zf2d;$XlXpN2qLJesBC=W;uw2url?**RAgPcJC zTZ3DJdL}_lEvQW2eUL!{RE~qnb5L21HV^&))CL5_Kgi9Xb9N^-GH}%F(T4OhkmtZ* z{fs%F_+elGg&!zfb>}iLIILk%0i`_3CP?! zq>lmWUx3ymK+;4Fc>f>B9LGrvpgj!>9QqhUK=ajzJ_o~&$@_(8Sl0_rnLJ;3iZ!@i z6z-TjAD*_sXLWi1{|Rc>gU;ELfVvIb{)e{xOOVpE4|K#YJNy0|%&n1;s^eW1|8nUO;gIty>>V ze#jsL?fa_KG$>cpurgPG=2=1O!a?cC`~N>zq;@`s^#e%z9+ZZgA2P^*%mbN?Y$j+< z+vb1(BWQgYX#F)fo@+s8imC3fIHnrVQ14v=%EyrYeceX=xy%)`7VKqz7aVJdZUp2!O{3YNRW|m%720wLB1d1!regKOW9g~LrOgRnrnGzcQGo>`j zGq^zFr&bUY*B%UExsCQrISumQGhRS*tS+E)O(w`Q=s4^HtzQNAtDPpuGev;ZPmpJd z@&5l`6~wk^V2JYm|6dZy&hY;KpSNK?QvsOY!e9{6!e;0F|KHCBc?K77ex0i@!J>h| z5G3#Y|KCFpZPCEsSpN|;j`8mzlppE+{~x$4wP;{a^Zx&DCsaJx`~SbSP&P=-!iM=w z2_U}r|9@aJA^m@FIl2>k=I7(zpuN5lptV@wv?dSQN6E<0yq`e)#a( z`x!JkxEVnEt3c(dNTWSNhy^DD<4kSFhzarxA)vmA6T|-pAo2QFzbh;<85lujHfZl6 z*jz5AlKM^wP=AI6lujMy{(l3Kw@hRJ^^bUJH6y`uUk&mMA&~y&{|}(HG^k$;D)+4u z8C2B5WiJeC}w zHY~#lP&>(CE<;Yp0}dO@jQ{^F-5D5bS(!u%6BrmljN7(smuklR3Z zPq@!i0*cd`RA#-2+DsKq^BFWS$2N6J8ul}|H2h}>f#j{qt)R35>Z@8hFfdr11nt=Y zwb2;(XK+qdk=0^ks_)*wP^%dw0!mx8n!iMBH5nKk_xyhV3M-I4{VoPphq?c6G{`fR zfbtHgKW&k~z0>>uuhQmvrV^_K3{3j78IC*5Wzf-|%@l66fPvWow8n2X%X+H?3@o5? z0`+He#@8w^sD)~N|7W$50d&R*BWV2e@JSu;p0>j;bwKC-Fj{%)Y)QU1Nv>|s>I!QH z1_rAK3=Gz0|Nq-12rzjtFix=E@&A7~r+`)c+!GA7wI>3=ZnpOlsm)|wW~s?kQCt1^ znzaK11E^1C!_dG`KNGyp5ao=h2G0L~Kzn=ZqnJeMXGMVS+h76hdj;LOP(Swo=nNu< z`Z+5=`OgA${*mK627|f>d<8WOj8j4wIBaSdc0ktc?qiS$UnyW^z4!lrP`EX4GF8+& zTnGTgAt>G)_A->%DmWYDJ2Ws%U}W_9+wft+L`6oAzX?AkfWi{A=k5d}qX%dmR1QM} z!$d{KfC-F@A%7SWG#ZM%OF(BhoLtBlP`~_j#UBO+iF%LA6@S+zX#7!NnDBQ&hQuF5 zrcZwuGA8^{WKe;eyH|cv)`pQue;NaWg%|_)Oma}!Qmgq%1e9Mvb4Ct(z!#^0=UhNz zq>ghK1RQ6A(*pyjuVBFdN*9o|_n@>^-+h3gp8ExZ6T|--^;I_ltmpjyZ!OEfX!V_e z5!}9=`>#Mxl!47Q!FrahJp*H6_R0SioF^wtOk|9))SRLQNihP^s@;!2n994s*ckgdTw8Cvg7%19H0)!~ZX! zG+E!Z0<=%rKvs)|1LRlBG6qIa{Dac1rRK&2kY63<{J#JyV?h4*{{R07=sZubS~CX5 zhJ%a=wVKS!8Wu99IP78Y0gYjR^n>=8cCh{b->JsL+?mG09>UNd*Xj1}Z>VO2TqheN zV`z4RT*otJ)*6Q3ids$QiV3X$Kh$PhS4>p>|7Bw8{~w?^9*d<60!|G7_khy2}v7ov<>zhPzo0w5|yh{-Av~ zj*}Qf!VhrR)SvoXQ7ghE;=#b-Q6rZCN`r9_02-JEV5@}95IiaTImq;_)$r&JbH@lsjV$;IFxZn?iPz{5W$bvhd`OjA( z4XGz5fbCm)atg>V&8jD7!2Gjd4}%!UY>>IlDIj%+M4DYrP67F^ndRgRm>(C+VUPfs zS*!U(%h{F55IpyKxJ#KrWUxI0-4#c z`s4&GLXCy*wB7*3OpW`pPW(abxWjS`N;_&zc#!$IRWHHNW2?~G-QC}ABi-a0O`>Z zY2*ggi%KF5t3l$gL>jX};#MNHnnohEUQ!~EaETJB_0kdv;cl@D)o8H`b#JlTz{tS2 zF_A%FBO`;zhKCFi8xa*3bH|tqE2c31o$OLNRg4$4^K2&{I0)xZc|2r&8!EK@#P#Xx;SF~6FT3gN_ zQzO8n2kzg^Vc@A@W3H%G^#=EmLKQe{K>J)mRti|v*3S|Fwci>#8B}JhW@`YoRb*Ki znLurl+7M7%g{=X(tpb)i&S6t)Vx?E}e38h)bOxqc4KES!8ncWj5l}k?w9X0auk2qU zjh-75Kw%4V^F+^$2@BO3SQ@=ICV=#S#6bEcg80yW%ffU9Hjtj$j41GWbdXsfeV}*( znX^!xfrEg4E&}>_2t z-k4D95d^wRjxp3rz-l6h@AXS$p*n+vtrr6$C~QID3W^J`d6^p%K>e(Vnc(o3Y0QF# ze>MXnNZmvb9})g?F#ADvgWLeJ8{`JC{pt(~xZDr2YhgNr5&``x1oW#B(62#2zZL=g zI=J*NOlQyo`2nUM$1F-+y8I16RzX1{9Z$cpa&0zL}>;}03WH-nSVEfe> zEO5CW3|0j6+Yr!iM?k*=0sT${^t<5Fzc8J_4de%yevscmVF2uoTe;5J%5d`!{5zrrl zOaH=jhB%NPVERFR2ZaI1@1QUM`F{aBLlP+bL48|LxwBB60bG{Xaxj7GfKU$5SpdI8 zK=m)kEKuFsh*bVGYHUmZ>($r@8bdHysP+FJzVfPmUIK%q7XuS$4XDH1|5reD7HG{W zsLrZ=ZzN(>%)n@UhJg_@_Tc^hLj=;;4fsr4ThN);ncgL}&*TbfjxkPY=+@D(*u=mH zT2llWUrPg>FCqaN-?mg_(5YF;pa&JVt)IIByqDNEL4YZIfq+#*r;Y(=+^IG*y25eJ z{|gP>;5Cn29t>#{LFR$RUpyFsGG%HRnLv8$j&81ynajdqaezV4CYgb;rd~<}q#xAo zvPhn+V$rfOp=Q34h~u39XRLx481*MHFoX7Pg2r6D|G(RzKb3*q0d!Af0{1TO|Ibe9 zPj(A}@^^dxf3_2O?7=b-be|dMK3B;2uoJ`oAC~bxmq25}pt~DDXA*XD?OX>kyHgRY z7CdHC!)>sxR@-o04JUI2XfK7sy#H@zGBR+0##Co!LDtpOx6fd3ob&&PbpmM4n4zYF z^Z)<)ISdT-ptXE+AbT4fW-@Tp$TEZ57ohQN{W%PRP`B>!{{M^@yhak@m%ZNqpZ=Ap zX5j$M?||+)l9|oORCj!H1t^Rxl4lxNS2Hkz!Uz;zpzyJ1nXKZ$;BQ(#8$51gA#05o zBePz>pa5DU21;w7F&J=LN^`P`!<_#WuyG;p|NnD9{42B{k93*fs7L2LZNGZoB0 z{s6hhdL=_d2WTBAWX^#RH0KH$w}qWCg=DU*{v3$8puNxz^ZuXFpUuDz3O~?&R7iP2 zrC~qhd|}vJPR%}z0E-q~=v{otfffx6%ymm4XXZ7>gU*?MauDh-{<_rJ72f}!Yy`Ov zw4c=b|C6O1(mt1<@?iJX&t+f$`Ok6A|0ke%WRQEj|39g%pECnA)+Yc8ulo8&BHsW1 zpTO&`U0`?FK=NSHPSBWSvpj>3b>?Ky{#wu&=Zx;%4B+)f77Yxnps`|5I`aPiL{Qd} zkqMLzz+u=4N;3>G-v1x}1i7mNv}OYmo=l)~uR!hvxfL{K=l%cjRnQnPni^)Xnz{d< zAj13cTF{v^?$p3$G zKz+9Q`Hw{E_rDUU*~6e`y?3%o&0LRl-v1vRTp-QB1kxMADPUDImtkGa$_IMh{~xVf zAPqT#22Fh80%-;|Eb1#4NHcI?5l>to&A^34+;f36WPKT$`GyOm8ThcMms}vt0M2h{ z>KPYEGYDa-fB15NGy`~FF{=897Z*q~h+$E`bAdGEjAJzQ3l~T;NMTXmxj-7S#tlt< z;R0y}IV|cU7f3TGU=ep*AkCnJMO<@%G~|9&H1h=)NHeHms(yX3^thJ_dhO>X0XE|esh5|g98?EQ2KYmA`VLbE?C4t>E8{D zI4J#t&tF7!|9w#U_rjtcl>U9Nh=bC<9~N;?`VYV&4od$)nBw<9=|2REI4J#xVG#$V zfAD-gs{8MO(ti{d^`P`0gGC&a{^PKSgVH~E?j6m1Q2I~8qFxhpzgwpvTf+j`|Nmq) z8JR$Lw})y&+nw2v`A<+=wWD*gO2g`z2HyYgeyyMV0bFN*>PG9m3``Dl{~xffV_*c8 z=T?RcjNbo$wbaj=0jc*Bxc7VizZ;3SEZ+$(%M&1Fd5mBKBO`3i|A<8cgE+|D-v94; zf@q5dh9d9(_iUkTSMUG#U~3F4y#L>Wt$zsc{(ld){$Yam|9hbI4=Er$-v95;g}Mc_ zCL_XDL4c`YKT`^*%?hf|En0MQAnu6n1f46>SkK_oAuV+H6 zeX(co0k3_LXNs6u&lJ-j&lCe{V>r(Jf24tt@k(POW64g?`V#ORT8sxkXKS2($aum+ zk?{g(-3w$L%KwJF2N^6NYfu|@BWRfe1oK7sRB!354`& zNlf7UB{PBZm%;?jUn&zge`!qM{G~I2^OwN{&R-@IIDc78;QVDXf%BKc1kPVB6F7f) zOyKU8Dl(WfYX4GcI{iyxq9TJqqxLV2rq#b>CMq)MG;05{XpU3 z|8i;4{^ir0{VSxI`&UGh_pgMBiVPBsr+;NMzW$ZtI9CmP?;2?ByQQY?1oX4rEf^TM zKlqaEyBR=je9$>rGM3u^e@wIo%^&#~K=*7pIm}Zl0NslYTI=4x0b7r+7SagX zC?d}w)2Rh%ql4Eoc`z{4YBE1(*!N37p7Y}N?BJF2jnV11y6W@Tm z9^Cu?{{jmJ25utV7UeKc^$MojRCmzOZJ;y0ScnL>42OBD7FgUSLqoUmqJ3ziVLpQj=)4|>y`XzxRVJXutx5%z+*pAYw;7-_Ml4nSUudj@oYgiFbUs@h zXnh>>GSGT=n+67EP+udVh1a2`Q}G(;ytsz>3@V^A7$?;81c1(91fO@eXkpYj3FdScMpZ<_`NHjvtc7O4i9xgfa-^*la~^OQm7 zL-V199j^Q!?zm5O24=h}yHF|2F!F zXSpyClP@A2<|%>hn9o5?b4n~UbekZN;il#=PZ3MpDrV5oZ9+u4E!bh60%*@DTDU2k zp`qJ^iF8|}!#oAhSQ@(93~1#x(7s<#+XA!?&tfG5;HdSr0e3qF?=RA+ zawE1dl%kFsr5kAIMrkxRnl#8W$bkAkjrNFe1eH0UvZsd2y8^V2bYeV%iQ^t=7R)%8 zxhG!_pU zbFa0Bol(w{1L~iE)=EPCcmt%rgOfK0+?JfjaKs979}eh#C|RVq1m#(Les92xJ4p#z z`8~W-!K_wu6L<~83{IXLt7{C5`qRMv_JN1N-2b5aP8ci|7#SwW^JIY5dw{|N6c!zv zJTU)CG}`lIfc6c5#% zRJV!kp_1EL(8`69Mnwh#P3?spfLo8dHSQgN5a9klnC24-sVh=fS{u0W~Z|3uqOV7J}gOa)lk|ih}Z@5|SH1{Mzb_mCp0QDnAFelU~t^?Z;I7caQZN)pBlm7IOp#h(3~D9jaaYz3F=d2 zfYMog2LouHkfVl!8GMH|=#1GKImCRj%v2UoIyR|4{<%WtDkBrfOz<4>ekBpmx=4%E zjX4&_Rwr1ro}5#2-$=w_>BBP~42F@QGm5SEGO&R1K>buu-eIt5Ok^+tx!d{xc>Ik4 zlrKQ@hM@gOmYS;*K7u@)z9FuLwlYK>y@B=0F0pVw`HKR z98~vB;AC*H%w}M5au7P<{r~?PP#&6@3EDFS$xER6&eH4u2mLO-{}x;fj1xHIc35)! z|KqSvXaOicf%2N;UIrP9g#Ul68yLZR5v&>*7(jEL9t=Wjy5i;bAc-4>c?(#{8nJMI z)@y*qzd`C6vw!{p`K>nIOJrgqgM{U&jX73a56@V>Iyt8~5q#&D3M`$~ci#ZbFM`hI zmjRtOP+J`lP^)>v0MyO|oe@zZ;bAec9(?98T6;q92$j+sMwzTXn?b~Ju3$rWrhruq zpNC%k3S|F4Ttfqj^!dHWZC;4fCpIYO;IMM=t32ItkSOHB7>M*yHpBDK3&?+s| z@O$XhFdPWbZeV0|oXfWXmNr0X!eQ^P3^FUp#q$DHJO)z>MMjihYeKT07+g2 zbRT;?=q&#^d@_ypJm9;Jtu6omul0=9v&?1ytv7z){r|5+qauSw{VY&ArJ`@n0;5{yJ@ z&5gio%|U+bSj|^c>&d*#l9R6rbS6dz2Lp@6^Z$Q3H5iyXGZ>gUJs22ga4@jW)L>wl znZdw3(}RHtR91rawbiN{f%kxd%&B?Fyv$OQuNu?`>EL8woWaS!1S-2gd(Udseu>Oj z$p_l2`XPkvp0jpZ?Um}fKay7LKULv&`zeGA#^3_1i5CEBB$?^X`$ee~( zay1~c>N_kL9OwRjVZ!$RKe()CXJD*3VO%kRORmP!Q?3TI*A{#(l@z={MSL3kg{~b`=*T48(Vex<;tQOR^ug&}=GGjGg%|v^- z8pnA&pu0kC8aU*3)N20{vCIbTS7Z|D;N+{B!3CQC`TrlZp4;O2{}1}@eE%)jk?Rtk zoLbdiBA|5D>B$RDQ=uMgcA?ymJ*th`4B#`oCu%b|fbPs|tmg>`^<=XPci^z8)n?WM zoz()0?{EhJt6EM*Jy1CWihEG`)4&KTe?WCN_Z=#fKN_$+On&*pZ9%I%45^E_zThZ- zG+}Nhzx?5LsF_bdIa8;t=LxAl4pCQp znt`!a&0<~nX%3t41E6!SSqwmKuH_Ea3)O6vtF>jWsO4-csA02M=g`E!19B&*JOsH5 zpx>S01_4k!fX?x@!wwWCM4f}44LR2zbj~#TdC(5?7z`TgA@@~UYC7Gp^k!fLtv}Z9 zVqyTDk2^7*0W?;NIP2e@L8N}$>k80W%=LFZSAfdcy1%`HA z>oYXU^Z0~!3Rs1AIp~4Xd2ObHUTC)HE=XEnaRKeUsNn#$3xX?ZI6U=0c?i5VTARhi ziQ)edP&|OfCqd~Ntd`S34-_vTdqbdSONVd^Sb^qlLGfYsif`0(x&aDPP`H7@3^}|&@}T(jU|{p8;dao2nT32tG02ag zbBZU(vp9G#uqjwDFld4DC=qk>MGo^=H-OqEsO@mp1}c?(7-Nza3=G;ty3N&L9xJE~ zj@G|nc|t?C=@98Q3x|0uSjKW$JZR`PT_W8U;4qK*4rZJ(uc4va^oVrZ1c!Od4p`hK zKts2I#&%;Y7#Q@?+=x7v7z658gZk5;IS0_(1E^e{AkPzn=~ku`D!CQgn5+SH+{k!< zhHf;Zk{hYD{s&t)8lkxnboMKBj)^A*bRHtE_y(1wAibb_qfyI5h8!w|X%58+!l$>;oEa1C9BC`U?{?!E66C z8WR}|K;sz`Gr{WsJwW|N(3#Z}Gr{ZsVj2?}6dD*AS|)M+Dwy2)O9XT-)})iaBqpu= zB{O;DFP%x5zYHdI{xX^L@|VSA&tDFcHGjEG(){H!G4ofzLZZ+ z%eY6s{r?Y3bq0=5%@_YHvKbg*`a$suYCnV0Ehr7ts!FV@VO3aH-^sw>xQ{`gCX+z` zbT+C717kx-0*6gVCx=aK8k1fPr;#4$oKvtG(0R{59pmTFU=^PYypzx}14sZbNC#lJj2&iv?vbz)l8Z{te(i1fp7@QdX znSjaykUr2EbNcNJ%#gLdUkdgfCpS4uNhZ>?g;?3 zJ(2omGdvg!N(2JDtH21dABGQn;EpW6-62O66Kxdqi7|Nn#B z0cxYydcM>HxzmZ^|DC#%dIhzbj8jZAL1R!1%#b+)=4B2Gz~k=VJ}RhR2AV6V;XJ4Z zI!_4{*Wh^p1x5zYd<4i&i-+tQwHX$Ap!{aZ!N5|RrB@J|&Grwp_q&E6!l2e7Ko8vC zvwv5e)4A&X|Nns+?gM(Y+6^MMURrL;f1>v4-|3Lb|V`~)*;IOP=@Gz+1i~!l`<1p|44bc8g z>nH{Vkb00>(4Beu4gdc;&ifC#ryj$sS~PPUn*Kkqiu(V*e$oa8hdC@g^@LMa0I!b>;M1yDPT8n)K8hf;IQ}K zmr0Hc999b$7$-F{&ahHoV9=k+kObME$^6Fq|C(H@t^farEfBD(RhT7GJDEYRVI|{) z8XgVMelkwSxeRaWdo&mv=P^5g?(BA$%TUs&$ZY|-=fslr|DT$dp#5hI5e>%~7%Vdw zSZZEcSA-l8u&SBP02)8!ndtfd187XBzFPxyuA5AwCxd{cCWAnzgMd|yID=k&3xk8> z-2Zn%69lXp6S*xwuBpWJk?8Mm>-{P&+nwFfb*^8p~{ZK>;@I2D&4)(fa?N2JZiVCP@GPGg15hAM0uc7EoFN?YXUa@gtzNUL&Bs+X7}|4iWc z|7W7s|39EI)Y1z)CiudF=l}nj=L!Ke44*_SMHv`t4l@MQuxkX=>KFustrD;TwP_sY zGH8IqS!OU z#~@H6;h+cVAJ#}X>eY8IV5m*dD+tYG`xn9iK7$W@cOj@8beQ{pj|D#iV~r3)K<$G? zBHsUh{czaGpnzQd);_HUmA^fZ@>e}HOn}3te!>P&`s2~>2hB(R(s9@b8H+=z%b$2K zXsiV7CkNF_77Lj*EDnO#idcZk=|)db8v=6wg5$jZA3`1oScP&5Sk=}t=+$Z(iCA#` z{|_1moxsVgP%9p}uD*Q(Xue+n9A>IapnbsyKzBcY&!J6Ve(U{z`OOAK?kSCp+%7vo z?G6s+WuQGs7K+>xKy4F9o8)Z*sExAspismFMxiAW8-+reni*Ugn3*#4r>OH!NE9+? zI?SNZ_?SVZnVCUi0;7;lqcVem<6Z`ZhJ``~b#03)8j=|VKw;d_${+%|^Vx$zz`^1Q zgHpi(21Za_WO0Q-8Jw2S8;MLfD5L>8I}?I^jksfh1Vu93aLzBWZ=MT8|ia+FsMh`CNMDCI)KhyWMDMS{{J5|&j)G`fbuP< zP2jNT{~HUD|GzCu{{I2hMU9L?8Xf!$3}Kz1I}bnXv()_m&tl8}|Ml+|LH6^X@DiD@ zQ1C$ryMrF69tQQi&S{^T2A-nJYl)2iYzshW{b@t^fZwItpooEa0%I8(15*bV=>97Qy;>}0g8XjD@&6wvteqJCUuak;q+!XxpcK}?VN=V= zysTE03DlousP$hYQo~)b4s;d(C~h`zg4>Ir{t#$>^hKkhkdA&Q12bkE>&@_BP%Q#0$TmfqTHgGerG-@+2fZCl?xWQ%6hlYiM4{E9xiPX$lB+_tD@PP&E|38+h|NnyG zJ5=+-K2Usv!n|hhA`wu$g|NHmf#Z>Zff3}+4*CE8LtY=Uvt;}K-{Ki0&aD6c{{xP< zECH*~>_c{-HX^7#0PX*-1-1FEG3s?N|Nn21j1+%3)YghI>RGb=|7&sV|DO()|Nkvo z2QjLMB*53&1M~6KO z7U1@3CU_oO2PGb{m{W6&QP1KSG#tFZ^Pv~47chd?!_}{3US`S2z+>six(C$82E}0w zx8u6n%s|lGHKP;5|2Gy5j5*ectb42$GH`(Ef6#daH7(57KxZh+tAO$blSoaoaz(uh z!v(7+;CgmJ^FIcL@KpjbvJfH_^ zht_lNU;y3mRjYAHq`u(+sJ*nOmeaWc)NTj04Qe%4fzKA1{E~GGXueConc=^~-2VyS zyGG{yHvst=R4#$aZcsldk>mfr1cv|r^;j90Co&4zOkfmpn5ZatXQHBzLZhSL9m_=4 zJ)kfE)&G+h3jV3hX3z^waL}8WC?qq1QOKfUq2QlJMj@H{RtE;hdF&pIib57OtX|+Y zI>_I(5lkWz9fc%HYZ(+An%E^8wHR1J6PPYdU=$Jv)nvK^N{jWK3=9($g+v_YvVrO- zgIWfU0GkB@OrSfp8&bVX8anl+fa;cpg+ek72L=B$JQRYSSD~;FG$+`wP)K9~Ba04b zuDyX#NMOQ3ra2QB8F?l$3h^{53i0T7G9*IVxG%l`FYIhsD8yq4I@@IF|No$KWF{;W z;;Gei5@~wL$kLq2G^JUSMWxpKMu2`NgD|Kb(x1t|=P;L91~fhb3N!s~@V#z49t=!B zK>5+uL4XmIjxD|P0&2Jz^y(Wx>)Zan0Qn6hK2cHdMr}fnhzA4Hj^>3z49&3&47KK$ zL=>wS7(-P-^Y30F3Q`PA7AHaXCVGj~MR^2Rx-xKp`<4dY6}4eOBDG~v;4lq2Az&5e zE?_m$QSeEvn3G6t7?a4vM8OX=+q6V#zFC3J0%Ni)`2Sz7>i?gKj)E^HG77$_+r@BU z!a*UH2@3_kOn4~xW1^xE$HYV-llloa7#!y^2{bPh{8A^^T+#ec@JC(Dhv|C}aZK-&Z4ZNu-`ZgQ3=Ll?dp*`}&igD;gPvSU_P@X9jB9-(aYfbFOfl z%h=MWDEP*D5(8uNL%|PCnhXrJw%!#~aEl@Vw{T#(h2ck|qTmzjNeoQQ4+URP&n>T~ z;&Thg9gU2FPe9>f6~w^Ys3`ctl7oQ7M+2GH3(4s-rG zfZPI_i*(q-EaJhyEEAp}U={XHz^XQkL9e#5N~G58gI_>^ zz50#-hgxlqb)b79YaN0sK>Zc)I?pZ-2heuOek`!Nb3odQ;%HfD{O zhaPCWt41tRujU%0ujIIp0lY@Y`~UwPP_tq{YhXfB1*~e#BJ?ay{QqAg=>;~g9%7zM zjhKd>1?Zlq6UG%Fvue#WLH(X1ptU{@4gW#+sxg4=J7EmEXPN<|2DC1_zF7g(wl#p4 zHDhClOG&Gl7#uWztJVmdTk+Q#=?LkJOqg1k|utVCh3yAo@^YpG0cQ zm|*oIYClQ~+K=Lb^rJxi8+bozg+xGY@{IscpBUUfTdfW0M^%IRQ4#?mFOm9DVqV~~ z1=MyVsUIc&|G)K5P&sBLQu96*cTP0&0~N0zhlj>s3#K(t}FP1M7CzQ7vz06A zpZ=}@-9rt!XRzM>bVZH0K|rng4X_@EISd*wv+K1_Bh25a4YvbyH(~QaAs)~;qopka zWB6(TD@#tuIf$S!B+%F*=sby9FD4OC-7{I6MP<@!MwSVunWjuw$)Yj=8fTMVv8YVQ zVq}@n#WV#}-+IbZ|SjfNuK957y3+(3FY%TEJj1Kb{BpS6jw}AGw zfZS8-xlwNdH|LgyWt>~;J2V(T;q5r*{~A!c0u)}L_yDz~K<$b8A50>l*-V$f?YGz9 zHFbY#u6c=ADl%}?dV%}TJ`HRP44^iuDfGUJS`LtV9M*yE^a8ub7UrH;Nbcd?0_wYg z-NOlT5AT*nE#58l?H&vk&;S2-ocn)`1?&I+pfm}-6RH)|KV}dBwb|=CL1SXzxOngV zf2JllEKg(;YY#tIa{vDia<_iR|Nk`%kTwEn z+zXU%L2ZLtZs!V68`^pS10$&Y3%Yw5GQRNt52&A`-@u?)tFQ<(c4ZT)$zfCTlv&Sl zE(1r+OKm-nJ)kv)A?z%6P7MFg)H0YEG%^Y~)HgVQ_D6uy-Yf6_Gb|ex3f|FgW%v&& z*Cs3!yyG~JK?W3emY};sL46Y~C(!;A7VrOGH#8;+>F9TZ`$!rM2Zg}n5ume6Kxdd( zwCKmwwJxrxdA1+`GA1E*uz^uX2YLrXPQyY54%-B0kQ-F;Izjg=2wnlT5o?w@1WZg6 zypXe?fnj2z;E4&0f@eTx9$cw60W{umLQ(L9MT>sN2}Z#SpuYYe#S9IQeSa7-H2x@X zNc>@7kaz>XdqK<>mTw*QFgQT%2c5Sf0Wu3Q4x+!ogF$>DeEi^{kWND?g8*#&!2AER zvmiOp+BHyqY*b}%nZU{*0~$jBwHZPEH-|k8;5I9$?*^LNs1ak(1J|qj7z7#>g$yQU zGRT0&7eMg|>UV?I);2l{88mQ#?)3c+zE9gCf%&!f|7lwr7=@NJHVTF8JSY?anj?jb zkq9jSjgf%t2gQ30Cuj~+19Z=e0H~c&o6HDKmmv3m=1xMhIcz|2Sl?>E;0wCxgG9b5r!VENiR;$GTn)hL>)nWvdX)i1o7{tK$)`IdTmOePxZUyk2 zGt0nsb4r5rgY5>@j}|NpEVT(y9Vz6KN_|F|EX2*2ms}CP@W7` z<*=E+_Wuva-=H!V6b2T@K=-KpzXED6SStVj0~+6`X<-tn$pn|BGL6dr|1_}t2i=pw z2+EHj^Cp7&o$U?`pfO^QK8s|q88<+23mX3d)i+ZVUrzvq$pl7`5(`!a#(j<=7M6@G z5;c3ZD{4xlD{3wqgU1~}X$}^LAa~brE9ime!?Iy#$}n(*a60Hs)M8+%^@tJyr8x^( z21cugEE1sbv~uLpsN2pYV*QYTqwW%u2qF#P`qUUR0%A~AuHM`NNQcswv9)I-3k z)-$-GX2lM@T92QgIRK8DXFv67wfPD{)dZ|SX}ab=gB~bcL3@T8I9UWhXKL2BGJwv| zy8+5OwQfK4YB(l>=hEuCUNBgn`VZ>QuF#*y2s$HE0W|hocY8B<3>9?OOwD{R5zsk+ z9t@0sEE3o+djFq1)BFGbI}J}5SS;uL|KH5Wz+-WMfe{q$6CN_~)I0nV2|2}K6LMO@ z0(6eHB^LuDsE!LcEMVn0mm$Gn4ue6hJ%e6t_76Q!*$wWKY5oGQS8vp05oq9M5dgJm zz-?A8=L%3ixv`2xpjMti4?OOv`AY=kFYtW#90q|}x8RCe=AWSUV-IL<#5(T(zncGy zdLTD7JYisHR%GCTxvjPV*=-jXsN%L9;@k$hnQJ%H1J1|%KS#xv-F#ymlGfx-)%4%#8JPOux z7+5B(=1~BRMNN=qU;xb<=+6V~ulXmS-^v6Ui{r6KV87)3f8sSY7D&4Pg;&inuWJr)cM@!tRcgZ4|ydH?^v24vP0#s3rbFJwpoo!12# z-<`n7P~yQLx)jt`cihL|;K9JkXnl}Dpn;izq5jC{3eeeO`V9o5=GHio&N@CCKY8yFc%b}wW|u~1}y`wNfVnIN+ucC)k+u-g=e-HQ0^ zZeV8M0F~7Xl^J+Ia~Gid`t~O>@H8efC^Ro-U;wS#oxs8%Fj0j;q=A`1pgEaArr|IH z%fuA$_#?vv76yq1W(JK$W(JiBEDRnE%nSyN$_yeCK=%QvFv!$r{wru~2CK1{+`_;x zc?ko{1Qv#f2}>9_CLCelnV7<$FtLR}Wugj$!Q>PM6VN@27K#iC6P_?QOk`nj0mU6O zd_I8gRJ2&YzzkY{VR3*#2{bnZ8m|MT0S^WdR?t1Upg4!8m*oHdLFI5r@-sVdIL>1b z2uc1?4@!3qP5*z?DtlLe%m?`yWXFEc9fdX0pgUq!9Ge&tn*aR&V}0lU573>M+VUKr zv+uy?4ubCUbezdx;r;*rLU4ZzbT4BA0|O|&!}o&bKUsP~Z6ZreKNirOWc^)Fy$Le^ ze}LvRL25i0gfl^FyTJDtDl)+DkO$o#3vvg@J)k%M?PGInVt8Va%)p`D%)st2m*IwX zGY5m?UWOH*djUb`8r8^27}zHWFoDdq-tET%x)(5{Ucd@8Pf=6|9{Y$XbT1bhMM}9dNmB6rrV zPyo5l`~N>nsNDh<%nTfp4>N$yju7!+U|eaz0Li-`dqDPr!zYn}2b30I@d@$^G<-hP zsz_b~#k=D?29+94>1p*13ZS)Bp!=y~L1uyC9pqk6I}sGm-v9qC1+8TRr4bMxIh}yQ z8)Pmx{_CVGYvw3d=(jL1z{1~g9>W#uCk!0c`~LsXo)3rd-NFHyKlG_@eq7=G|DR+{jdZ1B6N5>E zECUNDoz>500FCu|+4!#SR7C(FF<%XgKItA7BW(I~@ z1xXRbdIp9X?w=wx+}@QAP2j!Q0=4#^L_p^vc`z^}crdUSg8FnId!hA)2WVU!WNv-R z?TY43UxxalpDXJBKF|a0QwEi}9t;deL1_VW-gAxo2hbVOwvPM$uc?uJ0O=>p`+o%F z9*{q37He0)$`n{Sg1UXf{ze7|&^oONj0_>5{AAPMpwryUz+kbEK_H=}L>Lslkp32b zC&)kb3nWFn|Nr~jz{n6XxfycDHOS1}jSLPJiVOkZaLJUeut@&@JyVlGL4gw#2A(1c z$qX!@GOH$8QlussQs&ew(5?iv>m8dIG&-0W7(jCrohl5Vwk%@}Cqtm)A_g8%J^+~s zZfhnmfWsZsrUj*Ai>3en`_5xf0JS+l^LrgE5WO=%b8ngqpgEflAiZFFKx;TTnV0!C zF(}OF1kXc*e7@J21ZbRg7}y3A}F6A=MiX_eb|4HfdkyPte38^K56>` zq{sXJ--i4oUa$uH??R{5U^OlzyuYm1f@f8`akly0!eKmM6L82kUG%Wc^(XWp#G`IZpfX_ z0-$(7_TS`(3_PHE9pqjQ20rjT*Pyb-aUX+<_y50|Ah&|trr*FI3MwNZ^)~NKSa}8t zkLHKq@(9Ch(EXyI^ae4T3skm?Acx%)#s3RH;kUn$A;5YegAAx_2BobDj0`Cg8W{vU z7^HXBw>+)@iFq(c`&ukyFaV`*kUK!-g+(KSfWtlp1setjP?;p+!63~FlXsZMz|p|S zU;s)h4U7yayBiq-EEE|M(ESgJH_$!NpnL{#C&SKKJ1NkUd-oWkqc?=@GpmR)H7#P8A#d-f8DoNL$4NESA*(EaJ)4!sDSJNmGdAo z9p^C!^e{u#;Clc6{{b{k4hj>H*|o`9BK6G?4i0k|Y(VY@X{=PKyC)Pt5(4S zoabQnIDp3xA$iVm#{V;*{0lM*6px^CuV$Hc1t`uz_cKGw5ETywNkdSX1B%Dppz(A? zMBNV42d!f&K;NP}*7gx&j;@`xqp=|NjQJSwVgPnF%W6&Hw-Z54s})+y+hn zw~BQ^Um!s<%XHwY@7EH5nv8`aoy>PxSCU&>+viQosqC z2W0@=*)0M}+m8D{_c?#d1m#KZ|KAdk(<3NtgYp-0e8A!X6t18!^01&1T3d;zu1 z7QY6K_epsF|7mN%z`zMgH_&>K$AdxoB&bXU#T_XA(c`WmnSmuFnf)JPX7GA+36Pnfeo_Jh10!^w1?X%V zh6(bZv0HFj!C9_?`~dZ51!xQq6ebqQw-_2Yz4z42Q?3BzP0-jEsP8s`(|eBxgJ>(r zK9FBS7}%@o8$N*A)iU1y|D6SihcK}3sA2eA0d)uH>?+WC$)I#4;=#ZM37dT&f3fR= z;s6x(=w%cr>_K@H?6!prBA~vUMFY5gQvr>EG@SIV@nB%ptx0}W0jk$)5+p@HagQGF zP;*f71LzFr0#1eo$0mlB4rT^LkpCR#F^F^|Gl2H^G0c!>Q1oD6nB&19wHK6*LE-8! zkD&+TUyB9?7VrQ6PS(^(SAxZx7)n6#&}h%VQQzR<;JAmu2Np*S`$6>rdmyO1b6CV6 z0ty?Do&*L4CQyEMXkfq=Zz_}TGw@8PXW(eGXW(h9XAl96CxYe{L2(I6+t|XZAsJH6 zLH+vxTt?MOgUcvLUXri`)mat`7`MUdDM&kkZ6)Y#U$8$LAZJ-S&H?pzB`QJX7pVLN zhb!p5cFeM{VZuTN0gHtU1rrW3h)iH)XqoVkL1H2!gAC|g>4}aEDh_Q7DmN4vG;TOD z7~Du?u(;94;BaFhgU5}73;{PDGDO^DWJmz5bC|)%06LeMVFn{Zp#>vD2dLi;nunRd z2s+!1btY(^jD;dY11x{S{5km{gAAxn1o^Rng@I*4A_GSOCnJMn6N3b(90Aqq-v9rC z+X{~Ju!i@NMtcSUP#l8RG(h7Je0PHP|KEQ>;o`9G{~1u+6>u^LI4)vP0mZLHBLg=i zpR&%>Z-(s0b)3f#;r;*rg2sBtoOYug8W+Z48Rm z4GfIn_Co>#qvJe=7vQj!W^iz5Vwlh%&md4gkHNuVFGC9`PHL(ii8SwL;HbazAplhF z)h~Dv02)&Ul>y%WzwDe`&%iUeo&kLKhWGzpzV&lnf$N_7yB`8T?sVA4&;jZ{I?iH9 zaBO1;sGlPRs-M99k(ybLKy&;X>zh9?=rl7h=rjNSUw`;Rfa9G1pfkUH>gRj_wKu@` zAb9`(y%X9m)2OLAJPmY549MNkyvze-gUep;|NkGa*zUD3eEV6vN$ zLBK+h!2mrCgZf^e_ye^iYIcLeU&Z_X&qh$c5>&@E)G{!D@@xnLgVju12E_@o3@r7j zw<{*vGVn~a1(l;rTS0kLA^HD*1JGQ4vZMg0zXY-elx9Hn89cotGVs*gF$T{wL)!-` z^-DCbHL5YN6e=(>I5aT`BtrL>doVEU0oOaAwYjqB@yl?afsH|+elBQTI|EOl0yzD; zfZDp=|9^nXcxd>~XsBUe0QD05BUOuPYqpGN^RaLHrJB_x#}n=Zkp^I-s_YW8?oPp!5wE+ruE!AOq>6fzs#%8BqFU zkg2JE5uiVt0d%%CsE*>OVZJ>LUZ$aqO+drw1E|gc)q$XSH1Gf4e}c+e8x{-<(cb@Gg6>IY_5T0z1Zdr&_y3m%EEpIxy#K!hofDen{r}|#3kHV6-v3{& z0Np#_{r}|x3kFa<{c;A#jiB|@QxyL*>^;b^;r2s@9}^fESwMTbCN?sx0gZQn`VlpI zv@1a8wSnT#aUM?thz8|7(AboI1A{7P-WN3HSR?KM8mnN?X8?o?j3wlNkDbGV zfg5CBf#W>3C605!=ksSe&SU%FIENubzkwmgaUTQ7{CvlGY;QamxIXANFqDGKf|_6G zxQ_wkpJI@i9t>O;^cxr|9Otot+NV{H^ZtSK?6G!W`0xGy-vbMI@cLB&(0bJxdG-<* z?fw7X5pX+}kzt1S|9?9yAAs&f`M1G}0ZgyZp9F4C^MKlE9t>PH7Ulo{TQo9Eu~@*s z<-x!!*uls!q0y0HMopP?MFs z88|@eff{5OI6&(GJA7kV%-TaaTWD1A;~WS9aP z9|V;zmYTK?CMq&aX-EWx?fZi@%m)N&7#Ib>vK&SU~+N>;L~h)G#opg)qo{vq-kx51Qw&{SA)8 zC9f+${sFlK6qg{sfZPspNBuuU_&dyHuz`g2zHcc00fn_R0}CkJL1uvbfEMm2VBwxg zM!198G2pP@hd=B=@d8TIAp1e?0L>NDZT$p}7Y_#3H;zLn?m&J4xgX>oP<+7r1oIEp ze6oN+0i5m*fX=*R0JZ<{r@MPZq`L(qq`P~tboWWbgMp>S;sLmCo?^kkP+{%Bzyzva ztsgKjg3A32NrnhTO9qB|&66Uavclp4g8*nO2-G&{RAiW7!N6cJgONcHq;IAogOK$B z2B!KM8$feHHuYkML1SkoR-m@^0|qXTKG2*x)Eo{FA2bF5GQ-+|fe~!Z0R~2Wc?Jdx zMg~Dp`QtE?AwhpW10$$Bb(qT#q20~E7Mj5RuZEjR1XQ1Z+IXEd3=EAm4B$22pmVcp zRx^prv;o&O5}u_RF%QPf|Y>-T<4@RFf_G-+satW>6!(oWq-pS1{MoeNZH@K zlz{6Z7XwFzEJM1YEdxXS%9kPza~KpFZ5TL09V9F)H5n8@Yj;8WXJ*KN z_kSbe6=XgqBwj)L)j{dz^h@v@D5xIgusXoNs3*k0;4q1S!ho9(2!dJsT(ub7+Fbk{u^8G&DbCm}1cY zxi8U!f$1!$A6AnsUEw&7!J|fs;euhr|NpgG2L(bHKxu&)6fPW~b1?L0fa_U_9&T_O z2h=a)F_-xN-=XP0s2{*EgBzS)6+n3dG-hJ~T5}`+aUCcOL2*!%`Eea69XZZpD1o|9 z&x3)o?Ws{_qXb;vU?fW|^Vbv9_6rAHpr&insGpM`D|MY-Ct-`XR#)P@l23u~ET7kr6zHXzL)r)TrfsLcfzi9<+A{ zwC2%L0koDEvZr-omiGxu%{Y~sOh&MOK;wqU{X1I)0VeR6Zyk8PSETu+_X+R+cjkiX zJW!tpv{xFWCj0?tE+_GEUp!Ep)3=Cj*gZlEIz8;#}AMAHz-~f%IfX1g` zV>h7jGSK)LDBeNya^3eK^E}@FAFc%D5zw5O{yYXuX!*q%mk%(P+9@i5e>2o4D}7*c^Zz%u?!5LF*t`k3?B9m8W`#i{HlPJ zeYG|W7izdYKxaRQc>jOE30k8D@-JxY+57+fpB6FMg|j58ywW91&2kQG^p<5 z0OjBAe+=L|D!u3R0j z!#)NR>jexP9dh8Z2jov4P@feX7j>Yzp9?(i29Aq+3{2Jw7zCj9fy${Kn+FX46P|<5 z{7tCgX0Fg?U~sVD{=YK3lg%!??U0=%_y3ciy*;41Si76S(t`W{1<-mz$C(TQAaT&% z6iWw&|Dd&Upt;Oi&6n3|*j`?%)eI5|)jnhws>x;tTI*ilVBrATQ(E8PB?8i8t-!$8 z193Bh!@U13_4B~-F9AyPpnN)k(~qIP?sf$zyrJbL$K+cK44|`-9rrOvfcmqbc!sG3 zr2+jJ3=E+0I>&ho95poz7qE>{g3=3UzE!`Ip~!I_g9*6b-pP>YIFG@?aV~=kcy4r$)$q{6y1p^C+2A$Vw0~$L8S z383_Dk-%UA%3GlM0MHnX_y1c9q2;`SMFIzd_y1cHLFs5hJp<_6Oz<7O-v4iY1*eI9 z3_Or>>iS9V|93e->u5l08KG(Y1ZaH6f`Nl!B53aBFnGR705nez8lRthA6$mqZD3@O z2ybQIr{4Z32H^A19Op3@fX7KdYkTK`=Sns7TOnPVWN~ z6zWL{Py_j4Vn4sc@l{{vL+SlWThDNtF*VQI&}1ZoR`>IG0+ z0+hEv>OB~kc^u|2Nc?{QF3WX6W`pi}2bH(=^KUpn+A4M$Cp*DyJJ4Pa#`;X=WhXf8 zIR5r97&$Tg{{sq_|Nj%TESB0CfWqTHq#X!4E7<^K7TC;t42+=q!C@}r3hg-zT#&G` zv#@x;z<9C^|;3a$1XtyvPJx9IOE}&h|GE z6kj#jpm|&d2FE7G6ZNYZF4o_R5&_N4Suil9!u)LWAT14KX2SEdbjt+h7d6}#(?Ivo zWSnGRtj+jWpfAh7P{Sn#n!jWOt(6DI3#&J%y{l6r6MYS&7qsumaTaJk5PaW<0oa}Q zKzj)zuhlm^2&l~n2y|@xzXIe>P(F0r$7tcfz^DOAr=W12=*Ylham-Eulx9ybGH{$+ z#=rpHn>*B^!mjXw;`Mt^%UR6za)ogoYk@A3};Aa{Y*PwjfhpmX{lL%`{W4B-7j zptV%cGUbn87x8Liy-w5bHVEo*d1mua9D6MsLuekMcW=%K=d;Sg8EaS zG9F}Ct?dngT1`)ZT1|!v^)vq!fXsr7#mWBznWq5SKc@|@KN`UMpO?I@u-FA^|1o-k z+9LJNmn%SXrl7tLXx6=oynj8O0%FaNXTSRut@%Y zLA#lO(^B*Qd~Hq!R&46(TO=4j^*X5ERo^1v0NUf}FqgpqbmmG8D{}=%++ryMBg)!S zZpgVWp!4}ac7fE^s%VLT*56rl{{Iis2iiA@srUbXP`@1{2h&@#O1l!Yh6lW_`Gj%B zWYFC6QR9lqjSK>l7cz)UKFA;eTEF4Y#PFrQO~S!pE~7=wDFzczz5uo76}T7_YBB>1 zY8qG!YK{gN)UbP3)U*T`gsf<>3t7fuSKID9Eu^8vu2#qKT1^fpzAOSlH5=qW=hfFY zgV$oK)G%m?SoZw?U*8Izrxt;V^MJ%aay85h0U_NicC`-9(`vOGuhnuHUIU#$62j0R z2RgsKz5~e|FN8TY91QTdu5}0q2yJMP1Le0`2j&V;8>@zexuQ9dfv35VL7;gdgGlp1 z1_{_24p6w(b4fTj&Scc6jb|_c^|>A9F?u-8VBo25Q*dyc%LqQ39@O3<#w<`f1JuR? zsjpdJJgsIw+{`C6sTKhtyIJf)*0k7x>$}IvkT6qEyjJUe^IEN@1R~73zbpQ;$COjU1q~~Py>4}+QmJ_a?}J_a?c!4)-~J_aEF*ChNfs5zZHtyY=20u&~- z>^}@bvRdqF*b=YRvfaE^n-CEYn%y8*n-E-q9Pgkrcc5V*0u|>0iGjkYhJzs>B%8&q z78)is8E9bwNrxgJwV?C(K;}5iW#j>^s|`8OAXm%HTv5YqAqGm9HLESJInH5F0j=o+ z`MEYBy24@Kf1a9#9|rXe8V+Foo_~M9V~7f%Hq5^dHA{aOfc#wZ8tTW>$u|Nos(vl3c{fX=4?l^vknSdF@tpiXkR;10l55F&SF=quD)a|Mz!AZA@?lvF2lxAxmK9Gfb&vwFn4V%wiX^ti=u# zhP4{T&~O8lxsumvKzSNgUP8hMi@%u~K>mh=nenvROv7unoRZgSki!g8)`H6)XqX8= z^BW}0IT!-G|NlEtvsA%AQH4PPoaUFc*wuO)Ppf&LU{KrXV*uKV33ls?7CX>c8Z}&o z*J`~a5qX;dlwPsKEu`#%*aIr(z;R2SJL~@|7}P@CdZR{~xk7<~K>=KcW!^BTIeNnY zboVZD8myUr!vJqO-1~Qm_y4~Y$|<0+e+7e@19uE+vhNtwuzFY2yi_mEKYq050Er>N_1kV`&w&4nG8HGdu-q9aIczL1827 zT~S-3VnA$~t#xM*sAY8&0G+o3+6M}%ryTbF?*NxK3|gS`7HdHH&-?$M2@v{k189$y z{~wv;{r|+I?Ehybb^pIGY4!grlTQD?G3oXHJCnKpKbWlj|H)+U|1TzI|9>;N z`~Qc@tN(wQeER>7$*=$a0kscKp8j8O^7a3UQ{4X>PHF$|IOY9+!l~^4Gfs8?UvO&m z{}rcB|KD)x_5U5Gx&I$Ht^NPRY486RPG|qWak~5egVU@3zc_vR|A*61cQu~=zoYT> z|2<9I{|_{2|3A{?{r^N$_Wv_Y-TyB%t^R+d>Gb~_O|SpoY3Ba_pjrF>lV*`mU^ZNiFqjsiAniosaznPoSu0Fr6me!nK`KnwhF4n zItuxvB`6|X3`td)1x8j1p6a;@dHE#@$@zI{ndzlPsVNG{`9(#k$t5|J3TgR83MCnt z#R>&Ei6v?IMY)PxoSq6rsfDGPMX3s&c_qe1Iv~o>4D0~sjKm^^l6-}X#IjU{;>@bl zVlK}7GzAkK1tYM$p+Zt+Nop}jNl|H@LP1e}L26M>r4CrKBqOy_AtgUgy+n_TGoUCx zDKROhQlT=xR3SMrPa!R{0^*XSN`;ivw9LHBymW<m;^Nd4aA0W^YeF2K1TrKQ zY<6iuNotB7S0vOSrNtoasS3I!Wn~Ka1tppJc_9Ckq!xpsr6e`ID6^zeAwNx_xHLHf zY-q6_7l!TxaOi`aT9#U*4ho6%qQqQ~L5U?LsksFuASP6rDjD4Y`&ic%Ac^YaoxVFylBAOjUL z^NLGS6I1jQ6oT`MiYgTqtaLTG7(nUOB{e6t1f&x=*@2Q_W|~4~i9%{cW^qZe9z<=p zW00SxpSzVp3RqKq9>`0``ZN*?3KEM_^Gb3mH5JklGjl-E!2q_0px)xrf&xhVg7XE) zZ3+qs#hH1@sS25hJd&3W_H$|x%xMY={)h|%ai@ZU0w@F(auX{Rl0dpaX(uPOBo*op z1qB69h2qlmbWlo2$p`s9F;5{g50)grDMSMtE1<-q3G!xUi5}ctaK9Ai=ca9w9M2Lh5S5Fa?Src)v%}L2qFHuO$$;nSnEJ;;J&C4%M&rrxs&CM^WgsXE-EKScSQAkt> z_H+++bq`a>F9I>0LW32`Gct3EL1jlSIFvzIj*Ck{K_LK^(UKEOi&Kjg5{ptnDXq9f zAty6C6;!Zf78RFhT7lGR7-}knfXWz9c$Su=7Aa&T7AutI6{Y56f)gCXIUrk;6O%Ji z6*3ZwQpyvHQbC#(6ciLR5*3O|iwcS|L1{Io5*!Hm;Lu9SNzJuZC@HE`NK{D4OiN1z zr6Psg#N>?3yi`3+kO3M-nhK5zNu}waGPNWFl;uH%M{1EmDX35=$yZ1&N(F@txEM^W zNKGy+0l5mK7i@WH9>hyJ3Ylr((kdkr9H=1QfQny8gjeR578R%Fq(Ln;23cB^nwSH# z8KO#8SHV*uBfkKYAwd~60~A9Fd8uWoMW7@Hc3xs}svgMlkc?E26N}V~6><~vN)vN* z6oMgTf`W;ju?{#8!Ff9~FD)OGHbCJFN*fwRnqUJ!hIm4p3@Q;)lR+h7Cb*(WL~)i5 zDCj{kSejQ{T9gW^W=cyGGz`JvmtUlyVWg>}kd~U7qmWjVnyOHeuTYd)kY7{+%IPKf z3c0BYi6vGFS;eX4iA5<6AfM{x7o~&UfaGFOb^v*>v^W*vCxw*M;^d;tBv74^0m^e} z`3i|3Z>N>!fZPv?H>hRBkiY^}J$ecXo@wCX9TGC2qCc@LF*64gaiE|8#Rf=wab$`guAl=<0&o5k+~R%$T27oLO9wnwMOukXlrfUu4C_sanj%3C>%Y#R`cE zPND943JL*`G7VZfW`Y}(kfNB26TK`3RrQemfQ~|rWb>gAEI$p460cZ^C}hci&9dHV!`bL z-3$d?-HgGO;OO*MU;DBwQ2c9$*Bqm!OZ+Tu+l08 zU0qPV29<4Kg$ke!OfsUtgDK2b(ACXOO+~gH%+&xF>yUE{XxHhQCCHV@)C5d?{iA5=(ZXH;4p@Ob%VQFS6La_p@>8p^JpO;*eS(2HYm;*^M z3efO{IIm1WSGO#+C@H@<6=qXXDyVx27STvlFv?3&&@EF)&n!zVRsc0Az$JpNkAkjl zPG)jy9ztJAW^qAIVx>ZHep(5rg$6PO)JauPQ-G=jJ2nhrBUlD%C6PLdL4lH+n3Dt5 z22Opc3OT98#n4u(f<|JALT-L>iGq=-fk8IJsfG%AdJ4Lh2u%tK#i=Ebgbwbff@(8E z1A}akI!gnCY_KzR(-Mo3!V{!BF()&z7?h|KbPXYDl0dC}kQ5vvsj&nncF#10%)GMv z?9>#6#9{?V&re+k)Qe3l%_&hx1b5^>Z4^*rGau5D23MJIBNZSTOY=Zoc6A*E?0OLy z0;}$-qsrn6ciLd@#>skP+61->h)+iYbqF8TAJw^ z85o!;BvmSSmF8q7<|zb&TeIMR25A77z6C}3;9h)YF{C97%LdlqegS9{qbM~cv$&)v zGpV#B71Y8^%uCVFFH*?OPsvQH1eudr0_x+Zf<|3Z6-rWza*M$!6;uj98!kSc&aQsJ zuHY!qQ7F&IOwItMoy@%CoYIuk6tE$XCJs0NbPe?k^h^|r^Gm^HCd~HC{5+g)M>sJB zRCI$H<r>2$W=zwfYDlJh6_YCpy4-HXp^ovvocMJ-0^b3i! zRw&Ob$pE=NwJa6ls?6Mi98hnyJh7-KF%LXc0y4qZHOSe+(J#c&$be@AZ=|=eSeS@;08LRP}EUKg0}PX!RZm+g@p`#D5T}*<40wgeVGV`**o&npfP!1Z< zQ-D;Fuuw})f%H2{K%F^IBG1fA%mF(Bq{l74NCDI|&`~I@6Yfk7cJAL0~*)4+D9n&}y*SsCgm zfEfx&nI*;gprK101yxf$qcl}jh2q4r)D#_1AZ6x(DNw2brvaEzR;78V6$PouC8;Tp z6vn{70IK)X&=QSCUVdJxCbFN9(g%`XKuk|)c!JUdyio=VPH<712re~X0SeLs2`3~o zVSxk3R7@sVQ9GFvb@4`Pp0yrFrn!LCLv#`K2Ww zzkvJ%39s~0P@5vZC^H=tmf!(YaH*mSYJxzAMODF>9^Fh>AR=l)%#Z}P?Oi~_x`^>X zaARJfJR>y^xoHa;h=rC}&d|02ti6a4p4MEP1*t_Di3P==x&^scZ?B-B1uM|BK;s+5 z`FY4C8rVG`&l3~C3=9lNe#1!RDfxNeNeECRCPLc?pjZWEERYqDxeRQw3=B?Do&iRn zIglvN08o7B>M}5ZTRjX6455Ay!78KVL{MZ!896(KFfcHH+BG1xQ4lV8T-YfwMFG@q z02LnUTnr4brZh+$a(4p4houRSI&k}*0n%Ux@j?9p5M2yvbuvI3*$m(oGpPN_0Fr~Y zZNco+ih}&S)Vz|+#2hfcD77H9B(o&5EL9iOR74j8H8H_r5QZ*P5!ifC`x`6=Dh(m! zgKjdobER7X8e{?mVG?){Fh!vxKRp#R*rdnBpqEs|pjVPq1qw$H4f3O2Nn#O*7GTt# zA;73TM}Sd#jR2$e4gp5(BLa-t7X%o!p9nB&e-L2QVGv-{5fEV1QNV^lX23AGVWFd7 zWT5Mknhb6pF))-fFfb&6%GYXx3RMG(3LOOqUCY4004_VAt-BNj=OE`|D}~|`P@Yw= zg(}klmuaP-5)&rGz`(@?&j0#3nMq)V6}Y1W?h8Y*47BJ_P0`~5H^acyAatk)tOKqU zR8Z@2;qDn@4pKr#5;H+V@dX8`d8sK};2a7X11wK10);-P&j%i|hc*8oZ8Gq*|8v4LU*P}{7e zG%+WqQXwZb5tNt|GBVRMQj53>OA~WI(^;^VENGZ7BQY<#SWf}9A*`cdXsY0rnp9Mp zSX8NCWME(lZiI7bX=y1qLgpwEb3pTqu;F7+xrZ5th6V=a3R+rPTwJad1*t`usi1ip z=$s0u#h(b8hDgrO%>~VMfTk8eqsEzfsd@?^ouJ7rtn&ttmI-X$0PKlWunvX9;^NdI z&_o(nR%vmGLPjDelED*{$wm3a#k%03PjFNer52awlz`{kGD_1^p%oU0&jp>J09DGx z`rxKcF=QCEI3LuzD^}1b%>(&2FC{evG>4T48l@>N0S!}dfofWiCqP5eur4fQSXz&Z z3o)MrYJ@{tpqY8;R^TZOP-+4h0ZM;hY0zv#VtQg`o(>muqO(#VH$N}4B)>QH0k`wcwtU1MRoKf-A8E zF}=d2piq#XnO6cH_JO-GKM#`TL6c|TA@f9#ec6@hUWN=KCqjiG!zN&dC+30%-ysuX zpw@_jZ)z?m>@3W<6cjYd%ggn0VFG%|`MH{U3JQ*((WF!bQ0fPTFeqX`;gAWQ3I;iiFyX5fPfxu7{*a7O}^5A#dYb1Fe|$9bUqTcqIR=^tDS_HTJ=kuGQ+ zIJLM067wK`re)@(fafbqi@@_2&?#q-E`^l*)MD^VHTnY*~sU@Jv zi0r)la7W7#H1!E;(lPjZGcW|Z28O!&IlIQY1_k*CF)#!; z208jdIliti76XHeV~8VE7>OP4>*((3462tr{b918_JV6ffU9$et4qAAzZ(OCe`ttP zsGD27Td0o@NUgKKpPQ#ULcP7cJ!l;U3uyg?0He+a0Y+UJ&gb? zO3KVj1y^NA!k}djpfwjMAkTsHD}d%!BE#oAvr%KGcO$^ zrER28T$u~bI;F*_TnrHXnR%I@_Jl%uQGRKGf@+G6LbPfMXsAjxB^EN#2bu>4>C;d( z(KAd_RRuMcA$kiEi;KaI2fHg1#MV(rFDd{{qCp08Kw+Vpq5!oE)XOQhQpim#C;&w= z$T9{7hT_zm)Z~)Xw&Yk^vK9NX}151#w{hP6Icbkt=+7D1n*+4FCU! zUitq&tl|HzL2|D#m?|BpKG|9^DM|NqfH{{N3T^Z$Qr!TPR{@Txf=if7rgoZzi`F>|79!w|1Wp>|G)gf|Nj*=|NmD? z{QqCM=l}nzg#Z7mS^od8UIB6_D6p**GD_3Zv~x?+6c~z1w2N|5K%vIK$iTqB!oa}5 z%fP^(!N9;!$-uyv!@$7e%D}*Lfq_A-kb$8%gn=>gF9Qqj4+b91mkcVkdjuHuwg@ol zor!E7f;xE%`~(<{(gYZd3IrI9x&#=F<_ItvtrK80 z+9$whbWwoO=(Yf((MthFqu&CI#_R%&#$Mw3kfj3#FU7)_oEFq-@nU^JB#U^F!rU^Mj;U^Gn>U^J~2U^Ja3z-YQufYEfb z0Hf&{0Y=l80*q!X0*q$D0*q!V0*q$%0*q$90*q#10*q$a0*q!A0*q!;1Q^X$3NV`O z6<{9E@reW~RD@iRXf~>lNwAU1p6LWGHKm&{5mJ?h@N@`hVaw^EQ#FP|J zgN?zlC|w~Zvluib2U&N-;98NI3>sd@O)P;7oiKoVu%H$lq;~@{Ejc4ICk5020C^#` zm;p554sP!;_?MP|S~!q)C_@0qJH?>hsX|I>US?_v*f5yoPN3O61*oH-EBR6wT;Pr@ zN`;OUCzTdgGPr@902%&ca0a)Cp*lgsd>}`GSGhsN82s`<&2vPUd4k%xNZh=##GK3& zg~X!t(%jU%5{TiTMoubt9xW{=znmc?KOZ#5TB!gYumX)66hqAgjRu0+aH&NMA*mJ6 z#f=C@mgMIvE`Ewmm=k) zDnOzTVLQls#SBhG`Pr#?3I&-3sSLh}B^hw1D}dTL`DqF%`QTDCKTRR6G%p#V2GUUg zCoE8tIkh-759~*VAXvzzq$Z|-W1$?pz9%2lCxZkAXo^Jv?34VwbdX0t1$j}50!VeS z0(=b%gIj4HWY!4OHV2KUr-A}BHHE zPAy^Z$;`{fYFt23eo20EevU#)Q6^|{6et)HOG-e?!@!x?IoMMHQvHD!EWy_PKy5RE z+2#pNk*O8Q8DM9^1VH%$G_eO+epFDBU&P=FRiltrnv(+xnZ!KMSTec}P%DT5CRm)4 z4^8Eu2n5ws@TiBB5#U^&p9f9Mpar&xC9u2*_7lh#sfoED`#>Y9NJ$_hGZ(yEu>ce& zuo3{&sZ7iTtrUi2;$jA0$YM9p6cNZkP$wlLRUt361XTMn1SBSBgN9K-QlQnGi8(o- z#E_H)TGsUj_`P+lxf%}Zf`M;{~?#BPTPdD6y!L z!4WJCigQpO3SL#9D$>izOoA=t1zDa58i+5mB66aJhzzRZ8TVJ6#wXhU4%z~>%Q-BUrC8dHgWl3TY zD4PbC6s3aF8K`80Mi0E;1})$#W(dv)w`M^Lydfzd9~5eNy2W5|1{Y92Fb^UF3t&*D z11Dx*$np$_Fj`t}I9e$2HV2xHKq|5rrg*FlaSIKE&-{7l0?1AjMH> z0cgAolq$Yy)IzWrR2vNqf*>11QWUaNA^8E}2=7$L9Cm62q{4#n!8J-zDtLJe14ytu5mbGFDxg&G z@W5vctP9iD)69zmo58eq`KE6vH#WMGIc%>xZ*LF=4YhRnP)hP=c)2K&n{!U6Lu z|J(1J2?Dd6m=?r?<}&TyoB@He&ISw&4Gatn_75OE2Kx^X+Cc?EgSwO;7GqTq17nRN zqcjhw`_CZ5z`!8!|NlWA1_l-v1`j@kg!zo~nC3FiVVTVeQVz1h;{X4n1`G@=2_X59 zS#0weV~~}A_74634^sU9KZFLcL0EvvZiN7&T!jFm$_oKTl{W&6DqjQ`dEP*<${ztn zl|LYLEC*$`b2eG$@j9#B6lN*ABYreHTdK`>lbm}1s~X4K9ZDxZ@auP7yQb}ZI?7@rN4vPQl35CryU)!>y_L4?JE<^HfPi}uGQCVS^3Vuc*$C^R||5uW3L$HPPp*7 zK>hB9uzxoTy*-bcN&6iB&i4D<76qkKrM6Q)Sv6>U`#pF5?;X3{{#P#h_|Wd#m#6<< zJHOa-cGjEP3%Vw41?2|rxd&`nyd^DSphA&Q-`w+J{tXq< zJj)i!pWQ9S*!5bN)%)8L4vq`8JSWeds+hi-y(VnihC<5OV$7W zT=?vP-~NRgymu$8{j*KETXoZ;X_LCvYU}sqn9XR`7jSHU$NO#O%Gl3yGaOtdXs6Ac z@~T?v!4}!)Pf8gAUYevbt;JnyW6HfZ zy!L0|4f8%K@X)Qz%)-fCyFZ4Zx+~&fnr!;?Vg*kDyz>v@WI)HHSGGknm9lXW+f z^mQ`25%AT1cA1WKRQ7CU(Q9h#S58mln*P>ClZ)wAgTPbt%k0_tb zI`HVi-Lnh7v7AhJy?L))Z{5!S6Hac~vrS+_?ds+0tbQ+A_4}FV@*M}xEUvs;J=-kd z*!=Icg_E{Kub5WqCf{KsCe`zqdu`(e-ICTqgTt|16J|zw_v(dkto|Nwa+`x+-!oS) z|KFe7dG2aEpFJ?Ax~W#N-Z^1f5rdn5*}>=^8ExEubKJ$e5?Kr;rykW+5uEM)QZyb2Q?@vTCT>}_X#P9WZ_Fnz3p5Ve{mf2quD#WTh7OhK7kU-K&RXe; zzJ9EEm-Gpx^@(UuiI@rq%=wY33DFXi|O-Pg}PefwQm&Etiq4?a)0R`yEy z!}@oR-b#E}x>xo~%7Rrt)!T~yKAU}{bH`uK-pU928mx|`xBR|+Vb-4RtMh87B~7;5 zuzULdwLI%L2y9$k$ji3ONc;Yx&t@5Wwxs3mD6PJ=)hw2I<9CNG3=B-!3=B*c7#JAp z85kHJGB7YNW?*18U|?X@Wnf@<$-uy5#=yYvoq>V*CIbW06$S=|vkVN3#~2ux;~5wj zUo$W;J!N2E_{6}#yp@50;Ti)2(_IDz=4b{6Mt=qdrXvgtOt}mUOm++m44w=OOnnRt zOt%;q7;i8zFfL|bVBEsMz$nJR!1#fIfjOChf#DJZ17kk}1Jeoy21ZaxYRtgEoX5bx zc#(mDS(|}@VI>0tb1DM^(_#h&rep>NrkxOdOoj{$%yA41OzRmK7=JS`FiJBpFg{{n zU}$7uU{+^fU;?@2E&~HoJ_7^8GzJESccA0(85kI=85o$>FfcHK+*k-PpQ)LFfgzKD zfngN`15-Q$0}}@W1M?CF2Bzx_42*Xe7?`#)FfguUU|?9sz`)cF@fSlC)W1Ru42-)N z7??vD7?`#*FfjaNU|`(Kz`(@Jz`)$gz`&%)z`(Shfq{8C0|Rpw0|VnN1_tIL1_s72 z3=B*`3=B*u3=B*lH!CtQFx+8aU|7V!zzhn58w?Cgz6=aZj0_Bn?->}FzEXcsX)Cx)K z%*qT5jByMM4BZS246zIhjG(0o$qWq4CJYSBJq!#?AibdR{8j-)xm zzyPwB=`aHW!*m7)#*+*Tj0YJQm}MCl7!ETqFpD!VFzGQcFmGgFU|P<=zzE8dprcX4 z85o#B*Iu1uU|<62n*%M2!WbBsKm_g-R88mN#(ti&F0|O|3g7mO6Ffdsv4Br?S7(sCf%4?wbcn2w$ znL+*n%0|VIH76t~!5(Wk)a|Q-RP`Ux7u~umP)(Wu)R0lA$GcYiN(lE&V)eH=bAUROF z0Oi9XNZHN+DuaJ8Ffh+xU|`q)aVxkCi)3J6Jeb_x*@>i%_G3%?ZDvf>};i=;qDizsbH*UqG!f{EMlT( zq-Qh?MW8;_E6yk`DJn@!V$cK4wle6Iq*jzL=z-2LV9+bd2Mty-=%r@FrxhjUrZVV( z=h_+cQb1Gg40>6~MGSfnCB;xGskoRy4@`hoLxCn!pm9PJ#m&F~p1WofU|^WS0Kptc zI$`lGh@=jbHs>%fa_&J=2dXPUTyeNMMy?135QfZ)gXBOMW*(?~1hJU}7`YM{K$yW8 z)J6oU0by7gR)w0!B*19rzyQJw3^5=DPzOPRY8yFbvHZU;o904hSVwgG)ggWmM z21aktvQ-|a8W06j=MT<+3=GTyOx_I)jNYJO2=E#ekRs?B0}wM5q0R?%b5R2WgA%BI q0LekE0yCqKIZ*S!;{;$?NZf;%V84PGV9e-K1KQdEW*wYNRV2n-~Nv7#J94 z$S^Qi&tYI}l=ya}{>kr(y2G0*>Ynbds873HVex>0#e<>hXGpSuRSk3f4L$7!1{TM; z3@#xI0#-GW40<&Tr$lNvnV0!Buqe#F%OK&wz@RhxE`y{81B1%!yA0wU3=A?LagZ2@ zKl?6&lm`O?hX+H;P5n6x4E6ILS2)c3pHc68xx#~?wXuPb!DQD#1`Z2F27?+7khu&B zH5^RKrYQaos1E{}&Gih7T4A3_KnT#Rn(CXjsd%3ll~ z3|TjA76>rbq)AuQFL_;IvGmv!iv*B*hBc0p7;Neu@2;qCd0bJSdb`5sm|>F#!?aXT z*fhv9NQ5x3sOdL2fXw6pndia4kT9cmau(~^O~B7uRi zF_D3xft!J)vHSmpU910J0R?w$L!&}%Vzh3BUjriC_bW0?0R{O4MusglbCfG;YNab` zc57GE+%m54VCZ94W6 z$8O=|3N~fey)d1S~bn#%A z@DVHk;g@(YOn8XIU*o|r;Ua>6S-^u~!a*ed8xMvFNFi|Lj0eMng`m&@hivlI0*jWb z9gxtS_z_fodN4G<1r^;cP0nHazY8Eh%qY2;joL*M}Ia0qr+V0085Mif5H<4tm;oP=+(Vs60vSzV1yJfX0f2W@4?U+ zs>95{;Ml|jex9@WOB&0|!h^s3n`7<2(in{kaTGj`J8aK<0Wdq)bHe zltVqp7od^>5=~Z_pwb%@>h&`pFgWaiYl?+w0;#oFdMyB?530vheDqr77Yyb(DK#tqXz?%1gJ`LoW~^4XvM%`srmn} zb|(X)<6Z^H!0T z)z$9`R`Lv-R`v`6R`CoxR`sB0Wn2O&pLkx@JG+7EO`eI~|Nrml5dE$Y_ENwK)N}x) zKTvU4fAWBy<30u+NYJIVc8D=BHZKHMgP`Wc1c-Qh=j09CN?Fa4kmyZw1O*bPB(78K zuJB;6D(sMAFa*gp%x4e)8DIOXy24=|1Bb-{28Nos3IX+tUsqTxU_4OgKDnYUV|GPd z=i&*6_yMjd2L&eXKRvA zSb$t?!2JJzy@I5G<30ujkT2>N*T1f4*w4UI?{>KY(hQ6sgB|xVsDRQ1ICm|*)_};3=1W0o z%=`b(ryWuZykNES7)qLVK{9}2{XT|_dgap<^+!N;cdIWntU|iyGjM>?k;6O&k4Ae2 z4Nz1jFf=fPYO<)+cQP|-zh`xad1>o;2OW?-pzxm*FNZ7mis*nm9X!O&_jy0w6_`6BMMp{xg6)y7wT%j+)t^b|xbW zNQp%P0~;upHn1=-fXl{~rv}yy3=9)Ezg_WQ=v!)&Ai!XE094~R23UccKXsaubND2D ztQIgZ%wEVKV(kE?MXegZw3r72o8^o|23ZRR1}0F*O<-iunZ1xf)$V}+)9i%|GM3-I zE6iTVAZN|Uz%hFvgS?%C0Mq0>d=dg6S4?hX(3suGVCBJ3{BZIEKC$|1TV^*hSWa$a zu(59tVDez7^95xj>z79wK!IX;pTWY)o~h9Jjz zj9>Jd8GIb}G52`XGceZZH#4L-&SSK2oXen~-^`HcIFI3teltUo<2*(l{bq&`hkeW` z9t;c%^qUzn9p^Ec=r=RufYj?ZGo(4}WA^Z1VC2wmW&~x*634j=Hu}vBB~V97=r=PI zInHBj(QjrbcG$-(2Cah%H_ zqTkHOn|T5wsLjS?V8OruVoP{1FsVS*h=EE} z3kFc%=>Hv1Lh=6p|4Kv6w7l0T&O|H z9t?~ZCOZg<*Y5y}@PmBGxCYE-WKi*7U|az5v2B6?BgogFLJ#C~Q0J#1^H@&9>0<>R z4A~n&YCt}3Sb40ZCi#~LD5p0tGsr;GuLPtvF*fyJU<`no4Ql$jfZ1Z-6+9T~87;sZ zMg{{921XrFJ?J=(K>=hisHkXIc?{G;gVrcUZ#@_oN%nn1n)Sq{}y z*}Mm&hG7EKp%xwt3@uQ$r3V8;1(Yr4!N8Eydk$nA% z2ZN^XbEz^W$sL_p1K zB@yrcUqn}eYB>)ERnPjx3??DTH|snYDrzU^h$IMsT;@0rTp^2ryzVn^@;wm+rrh31 zqDEZBx{!LHSaq_)G#L-j&_e?=152X{1515_2ZO^r27?A>298D*1`aSER4pbmFf_D) zs?I3Inq-J&8Ofl$!oUGCzk!iKWby)0MP&wXP---)GO$=QGH^7oGVn}PWDuCZ$iOoZ z>@!#0$xlQL>L)NVsDMTwJQxf!L1`D{UE2f!P+QIh)S7Ny`Rzn=H>d`Qc-ioeK>$>< zfRkj)&6beotaczD)VDr{_FWohdN42;fb@X%LiBA!(z5|gJ!9tN3yw0AH;6e491tKv1Fp4Sjh3|F_nIA@S|x7;$gjzaXcBjPzhg zu$;U_T#G4Bb@BsoW!_#;C-0FkWAYB1{6#{${s5?dQQN?vw)Y^z4^a04R1ZVUV|1z6sSO(W z_yX=ue6g;m<#Vp6weqg0^$)J7DUybUl+N6mLg`9}1>m+NQ=Ri)IX|!i(0r4H@F{psd_h1O+wW)^=rdTY! z1x|DzpL;N{zUUBvG+G_zF=T)SODr0g80(LIhWc20ZA}H(#}hgvp-ruQ3<)509t;`1 zV2{j$_TrOoLqj8EA*x4iIe0Lz*3^T`HxUK~kl`Q$EE*Ubp+V#cGN`6Px&qX%03~LS zd^30yC?pikun-RhR)c!x!xfN@P!=mluj4)j5mbE)J&pAY0X7T__6ZFC|63&pI5Jpj z|Nmd#$>88Pmw}_UIJ%-i5?t^wg9;%W?ZFcs3=C(WBPx3)2S|&1E~!)QhFYCj3AGwL ziUA5}h?9fi{U~s107oQ~2dGa5sx#^vK7d-9F_RBSyDQ2#>|+pUkY|XgZ%A-(oWsCl zeE?KUFmPBO02L1nZzpTWXejH+F)-9HL{9^?C#?=JFn~KS3m6#e7zCJV7$mRND$JUk zEu&W7$#@M^c!HXSAXkEh$LdmNS9ma_iGs(t7BJ{EZ}@ z5)TGO5yvKmE%nDfSJWTDSvhwvF;HY^3a($sJD10!ZH1Hx?ls0%UFm!wwGvxgL~MJQ(CM z>zh9?IL`Yo;K9J)pg$EnSeOASpFrv?TAmtMECAUj=cwPD3$9aS>W*%%sC%}%0;Ir$ zA$={>AttD4B+wJhArnAZ6_O^^6+IXj?{r8qNP@iPxR0Tr(Tc$X)MaR_Vh8}4Tc2`! z@_SkF`fy8->5lstY*0-PKpVfjH3wn3+Qtq^25FGV4)YjOIwTpyL2So)40DjOBPef6 zH0m=*fbueENUwpPL8j4)K?c-Wah%6c&@hWZqMn=ia7Du|1{n{A{e%?9u&1k@WKXA3|a`Q>9xiZnEmlE4mj z+{X}r8jSv}s1Clh1>s=T*bYesS*Qa9AdasG*P$pG2^3o%3`yYZ>ad3aEfx5qjf390 zfUrR2FDOHTGLr{G5;&e=`aziolHL8DqByXADZ~JfMo3ap*$Ju!L75jiD!gUq>Hj;B zMum|Eh5v4_OkiNxdyt6(R6|W*WD2R3cCG;R6l-QFS9EYNh}2v*u9&f(iJ|6;bp^=h zwR+wawE@8uGwT@yn&&e`Ox~lQC@lc)&4NSOgCUg_G&%wbaSw*n(#by*r&Qra#RAR2*q^NHfTQjC0t>AOlhA3s1imOK-jLU|@Zq-#0l)(L%|$7v^D$rMFo? zfd#5dAbwR&^2jZwvr+Wb`5x1BBgcmA4U0k1&E9< zE6iL-xq0i32ZJbREGwhYp5X#C^@udcGvqYdGh6}j9p{0YexNRxNrOB?0x0Yn?HNvh z5jOkiLPVPLZ>;AZ#_nyKlK=3?Lj`+OePmdO*8l~(jd>c zpwXVu0%R@38H`IB?HO%Ae2|kt&IFBuHOMp00I?hG84W;k5VdiPa~ka#O+W%DZsumQ zYqV!v0V;wL7#1*uX0zFWMlP)PGtK}N2-f!*4IK6{=rqVPIv_b-rbC*62jo3agVuwA zsbcaJW%c?1P~3px#c>{!OM@(f03@F-U zUC@|_2ZQ%aP!l#Jna$3Ffytmlnn46)3ut5s$;J?n8E~^1SkxfCvSPfT-wn>ECJk~7 zBHEyyz+47!SV9el4O59A3>I$iU|^gvxkts^Hlab5fv3@qfd^!q!#>6UP&L$O$G`yP zJ2c2Lur%61Tjcu~LC%B5F-O8ARWmI{nFcuqmPT8+3LXyzh8wUzaoERj1r*E{^^7wn zC#Z^PWp4FgV2}WpRm!I;JQxxg!O=gDVG6SUEb18zCNEGGtIsTjD+ed@go9A!A!sSX zr9mE%G930Xn1E6QQfg3XkVhm2Q0nNAhNM+UWU@PeI$@xhK~N?H&3=KR$HSW;<}AoU z$9;@*z-6iOX=uxg`3^`NluAIeJRS@lD?z~xZa{+vC_H9@b6~o3g~ig_7N8M;$urcH z>OE3H%8`^o+GG%AAs!5j8}$3Yu^G`I4X!7c9p^FlG*mN~fQ+};&v3%~|GSGIs~z`2 z#lS;Z9=xdLy8lJ8zQcooF~V^cBSV8VG&_Q(^c?mvsDQGe2ZQ@hu;MhZTfub#s1)*G z5CA0^15jFYoF|YmIYvD!%exS4_Z$HZ(5xw_ZHeTrr(n5x3?87NLC1Nl4WM=^C|p6) zw;l`vCJoZyo*1i^5upCPb*I)H8Bhre;oJ!TIR<2*2ZNg|*nnDTkOLS! z7~FU#|Iv^Vli>wbPaX{Mo*oQ*9T0Yw?_?cK_0XF&rP37;k$6s!D?puiNYgYj7aDF? zKuHW#6GA5w_JGuRFu0<10`9bUF!1gHm8_GOXeKlMoXnvmC+3P?;yZXS@G4BU(Xxtj z=><6)8j6e_3@){xN}(oIx&kzqV3B-h1|;+fJi!AH`xq4J7O$=VsRLzGsG22EHL4&t zS|l)VHFSQv;K7i)cJdW1WyZIYe`v`v_DvSkc3|S?oE)JoSMOp9_SHUy5b!i#0s}+C z-0un2d%q`mFgO=B%w=GyseuKbGi0(79Itn_)VDnb1uFw0UL|8eDQSiPs6o#SD{xsH z=P`T%`OJgCS+VZPZt$=?D7ASoI1AcvgZgL?1D{ON5#tJ*33kprMw`hBI^y*wAv^|y z=6$~yAi?bP5S+MRV^m9TfrIHqas(({fTGTW z!Ko1J7`W%0;GP2oyT#JGBK2)%5FbLqR3g@cfhz*k6M?6|eT*wWG&38EFw0q6+leQ-3iHs;A))_lmnq9iwII_lHmRSl_4a|xDHH? z(N(C&j4VgA$Z~}H$71PS3y{CT5eAv`Yw}GC4$A$yBQt~3_g&E33)qNKu2^Gr`$WMa zp@s2)2Sf1E$pZRf^$v_Mb)ZPHSbFz?2LnqF#9Q3Z;*xz&hctsBxRl+;V1WoD`?;td zw(kX*ff>=+ksZ~V(?&y4}^Hm(Xysgy3%10v~>@!^6b(2J9qzpA`=qYqP$48KB!y= zjUzHmRxn_3slWKS!s-D7W8J>h6;|;Kf}p`#4+gPN(3}#u2w1=X&4FT$4fh#RK!pyd zuU*f6xS~#@yQ0o(a>e8X1Mzy!PJ0Hy4gm&+n(`gsDKPM`B?H5S5C;B#khB)Q6Eq{} z!4SR?Qq(5xtiK{9(jmvd0J04<9uM*&D6FjJf&0f9kfJWUQGYsUzL&)UG-Kq!z+%!N z&7c8N=QxkiphFT=71x6nmj^>2c>RduK4t?@!447wMJl8u zvxPJ&pe31x2ZIf~RRQv?#nO8r;H;kj8z&d~>A}GAVDbk;F}(mtrM8dh1lU~X%g}a{ z4cdssy&BMpkjW-SN_-4UYM)eBfZ7z^{~unRoMNON8w;u-AtA*S0g4v=X#$|E>Vc%P z6O>>eu@ch=QtP;nNd?VPSy%u--95#Ffnmku7e+GmNCs&(>}O~}80Mb}F^us5s$teU z(F|MT!NA~>ci{hj{e}e$4)Yij8s;-h0fn#!gUdniXc0zMvMz<1VG3SYWU=(#8Bnl8 z@{*vh2Lm&>z30K;F9>o3XlM(Ro;(;rN~^^o;sDyJ(fmfm~g{r^9x-wPRg*~gI5FrT3U6ekV) z8EQNjd|?9;K9JbG{}bvf8&J@Kf})}G7lXyp<07C5VDJC`9zcT63SQz^EWOVI3L#LN z!2AEd1J(^e42+-@51MNQt;qr{0DxR~R<9|EA<0V*dP z<}sb}W20@P6Oi3Ax9>efMOBG9BF12jbLEd|TL#+cyQ#o{9zCB!-s>m zAnajS0SY(|21W^Rfe9LNh1aqy6Tt(D^B7t{g(|2h@nG;?3Gx@HuL6o`L~xovwOLS) zyd?3y1}J(VmhfbAq`MyP>}fk7M8;n|B-eFBpDQyvUK4;$4OR4g_B|JUvWEtNv(sYkM;1xeFs z@BjbLbg;pDv?d*F(CTX+LNk)y6-au|c>n)D0o3dR%`REieov@5VO&x3%DSSqIl02( z00V=?0|o}r5~#@s8F)D+&i$S+`88<1`?=#}0V|QoI+kH<-!nWIlq@HIV3e4=z>;6L z$Ksgf0*mKXJ{AcK>7X17n%VPUP2yBLLLl$vXcd@%(QGZ5z||?sbG!u3>+Y5PM*)eFu9(Ar6Ch!wc6Xs1y&GOC2|4gQh%ssvl)%7XvGi^VB={RY`u$tvF@&v2x#fG2ZQBbP&9z%g=^};-RQtv{eA{U$9YUVkUE12 zIw#EZae*vsJ7UWy!!|70JM4RmH$u@4>*B(7?>V(5TG7Qp4?C>9~k7 zzV zs+E`2)Ljw*H^-A1nChSYuJB;+hg6t*89M6b{t~I*{<@-m^CFS@X)hcc_cF+ULd~Lq zfe94+;oIstY&;k&Btff)YV9tGSTHc?S!OaY*2rC4XT6$%(Sm`&V0I_S2fIXOa5FGk z>}OyCSq2Fm|D82^e~EwwIY8=Wure_8s{a44-^pO%grt*TQSJE*|1B8){|6=137o$eKS~o=iPXqSt^M=0zIP78o1>ls)E{@u%86X!nWPZ;9bq}mhK9~aHgA$tKJn*`JEglTo zZ{bz?liw8}Us^1E&{KaLHc!lK>cIe6cnd00K-mmbJb`8qA;k-`=;RBI+Kjf7|2RgP z*GPkQ7pQpu|KC|t%V1)i%)kgrrl9bwseUEm!C>+gJp1?bH+b!x2ZK*4s1-DMf|Ce% zNn(xM&vlapW=Tyx2@vc#&`if;NW!g21@|3!KmlN}@&Rbo5)&wEgBF8Zv^>}W@kB@| zsKx=0BhCGG!h<2?X+v!gh!MCJ6vl|ca1A18`NunH^9{VwytR4{PqCSrDL$Me;~lrApgC< zdj9u<`i2*vY^cys!@yEMPXg5KKLBbRdocKc8v&r1y2*DKSSIiPUI2>DhD=bx2zUr) zbAG!s*}+A=9^B1oSo!UWMazQ&5I+Wog1s`20o)rw3WFn{$yiW14^^jY!N9<3smQ=F zgOPy)oLU(fz+;3Kj0`hC0|KC(8MSKOpr{6~V)6d}_iF z;161=#nb@xlP9vD&OqE6;A!c!qfdf=)djJ0` zIC+b!%H%t)7Ayq~3=We;+>F>f6+IYqWGDN$`7$a0nmpUhSj{IF+^|b#V5~|0BvO+M z+LB?=3ofaSey#vTvIm3v-^pLxtQikZHgI>&{R&d=!C>_iltDchtgeC*y$6HUQP6TJ zkmnutF-U+Kb)fY>9t?IXA)9U(GHU1kU~ueX5J044tB-Xu9~c}bF$jQs2FfrX^FVq* z4MGnFE6d3b+@%G#f>nSvgMgRATFsrzx|!3=9?=42-qTQQ#d(wcW`TlXE;O>yJ5!)VFIeILu|> zsc$u4aGd);0JMy?QH4RFF@-^;R>4bT0t4JZNDH7~9JjR$)$xJ?Cnb{}(0 zvps`Iy$xvgi-7~QtF1!@(j?SpV6b(l-^ZY$$Irk3T8&(LueicW;s1YY1_p+@$_D|H z9YM_|hB*$i{)1ZWcR-Z~sC)nomw7O_^Fl0OC;^FkFu0wppA7Eyi`3uxTv0E0xB@hq z0$LLZ$|2w}1*kZvyX7#60kk5DMGi69#{gP3!O>_3Uw$XjAT@cGkCcG51OsF9KFAtz z(9XEYM|`vuPgt}(c+s$%fuZi$X6TY9ubIvJ8APD2VVo@BE3aJwvfFVUV}_*x1LH({ z1_qGl8>=A8UL5B!%m59xI__f-u#lM?<*Q!*i-7^!bkYS4Ks02-wiG?&sCi}$wZ{`Q zU;)~)$Ow|}ILW|Z(els&Qet`DM7Y7#5wzy3eyJ-iRgDSFihSL-eAcwNt1!0(Tafsqz@!s!^~XaIFA+NGKLA9pqUO<4se3n$Dp7; zy&jyxBsyj?Fo05&2ZQrgXk^zwJKa8@R0wh)r~*d|stNUKr=daR0m`Tfplk>Zs%zk& z+EA|!m+u8-H*n?60NU00)W9;Efze{Js=ttI4#-a+>n&s%7`yK>FienV5P{T`&XSWu z{JmX4p>zQ>90Rk!qUGTmMAOCnu0;Za{p9y45kSsN!m^>fc_~NjRVqon0#lQd>mCzSw zumuGGDEELibyz7dFjyrpFo1K>oeKdT3=9ztv;JT3{{R1h2ZIxM=^bcw4rVug4Gan3a$z1r1US~fYYZ5`yBWX%mig@jXwxdl+cmdAh2$dxNK$ii1O+|F zJP!uPm5uhG5)qn;K`9lKk31L{GQfL;_Ay$3LZLyD0W?Dv1F{gDpQOO09cXs`3e{^PYLN`uH^Hcbq`r4@O^~FvB?CvpO$Hut zb~$WZ0h#~=b=N1H1Z5Y77ZwQ&;gjvb3F6M=13}f;5|NARal|3W*$StGC8%}HcyKiX&jHRy3;y>qfZ8xVpyK1;Y6gY_oR3yaE(ll9 zIl%d72}sia&gUjj#q+->0=&Q1cMg1K0fVLHqn3$U3?h>Q$|WXW3D=df1vflcCfYNw zfX1^yiG1>329+9l=E>3#D;QfhABiwy)YJ6^g;RY4xGOEukjcOT_US$bo`z&_vM>OJ zA1Le`=Ka4hStBZ*@!;f+sBB3N4+fpU8hHsl(10E&CP3@WL2HR73q(uEfO;UH-~;XH z0tFc;xE$vFzXD2cpw;S=H;A#QfX06sk{MLMHqK)Z0Igo1zzN!|!2lYq=I~&UvjvTB z+15k4X${N_3Lu*t=P^VyFoV}ZfLcaA&4wqRsL2++=@=?p= zy9^@rdtO&~|NjM9r9F?)W%7dj8 ztvAOpFo1Gm!+Zt~@R;>{1_scX2@UcLEFsAf7WI3iMC#`QZ| zn&lWktqD+^+BocD&;W&|_kX58nUi0{Db~v|uuQ%SiY5k)MtcUH`WQ()XyMJ{IEz69 z)TEtQ$G|WFqz*JeD|fg89H{gDhggG3K4}J)`kCMiYS2&(ihhlSpt2WqkORn~#&`yf zMtKGvusI-4N;9ZTtY%=D7|p;jQJR5=#e+ekaB@$)GvmU^7vh~6*GxW$K8A;}hg_AENh1XvNRcGMAzShST7A=qVfT}J?Rb~z{tP>N(z%58F)bI4t73T1LB`t$iPwWdKuIM7O-e}^k#A*gUH{t z2^t4DAMF5{aYB(n;O|-nqd$rX8h><^I8=O&898|{7{3G=0#Z<~db+}*<*@+75ylrM zpGcNv(q@|cJlQzr`vOo=0V?Le16+$3K!X=d7Mb4{OlSs0Jc9zdcu42FUm@LW|7ta* zL_!v@|7-MQV5xPEF$hU!|5ua1R8hkaVNk;mR55{ba#@O|;zCgA0qv54&9;8|eF1o6 zX8|ZnYB5eekm6kb7UWJ)XVn5MstMW~6#^35y^z5LRI^wpG6aBJ2_4Ga0P6bfV`LBj zZQ7o|$Pi+|{{NqL0|U#%Mh2dmTIq_KdCCqA3OH9d&Sd}%IWvOV7?zrk zHEK9PhhunwyP|##^(+dY$#2j)6wu0e(6j{_e-CI?6(}|=IzcC5Fi6x)SFQj}yjdM! zUVTNEaCPRh)|LZy#1(LP~9;{1XPzx)5z-A3zOUHc0 zaT0@%dRUNxU7drVLRioP&<<~#8tF|U^$jOLBd`WF6}Ln{y}G)inzz|^8YpMe|Hz|o%1z-__6kmopu@rnL?1|G+G3>Wn0 zGw?d>V@mK~U_7HgpFyqOaUK(c_Iw64@V3zT3@VQE7(Zx(=($V_K=YCM^BL3~_A%b^ zU|@WpKc6AaaUSCZZ4f<|!A5&NLlkI7sP=pYM~68~1={l&>>TDYZqT34VDGRG)V*dn zp+BD?#&I4)f;Nbr%jDz1z&JsBK0_5$Ut*%e93~6>`3&)n^Oy|u=QAWY>|;FQ!N8cK zKcArnw9``?M9*O~(Vx#y3kn7O`Jkb3Mv&tiEEpKlJQx^3D@I~G7#Kn45|nu`F#NG# zU?>3{f#NucNn|ohhI8Z$$3CW%Fhd2qIt4+6FvACS4*M8eETcg+#0dw7IgAyx)`wsN z?I5RTbY?OzS!(~kAF9A+r`^CH>o}J&q*j5w1e8{5H5m+Q6;@a}HZeL(j>$BsuZ<3_ zsI8B#fI1-&Iw)S`*vELlaS|h_-2sy0a9G74(jmdX2pT{Etvmq@SJX8uhEyW+7>+>B z#9-Ltu#RDe2Loe^V;^HfSh0d#U4o!OSTV@a3=8V#d~k4>!@yDh_u)E=8V1Jt<`0we zGgU-0949f%0Tt#R3@V(UR)qtob+{(eU%Wy!}oFfe)l|83I1$PiNB{J5gAk%4CyBV-z>wz*LORtD*?GcZ8Qp$GdL!5iyT z92S935n!_9{JsDbDm5>xD;i!fFo1@7o9F&w@c#ev;$)3%_xhQjEzk`z-x#d#d}F9@ zcmdi+RAa*+|KIvA10!gYQT==d2Zy~39NzygSb~-pTO!6F6f6=zl`eNEXk4N(j)7-F z9RtfmWd??c&I~LKbqp-wPb4fn7`S2^_IzWgNstEbRt;G!VF9XFYnJ{9s7X+g5(!xf zQlxZn@}F%1&z*v>RpgApbkH1 z+|>L3pN*3p@*=|%8F=gu)c*&~Qi8-mgT|n7;pBS{80-@Sz|&G-3zxjE@L&*LS~LHH z1GrLbU{Gj~{slU+h((`)LCkUA{~Pu9KUX-+V&HIW{eNb%z%1#>-1)-w7dC=wB#;r_ z|1T^B)rBBudH=ug5;SZJ3PA7w7w*>22X(s{c|dZYfd$Y&vIm3QM`%{~0vd4i{(q?w ztf%>Lh4=qUxu6;oY#un^#Uep!K?fdyA`LXt0$y6;zVvPiXwd*@hd8JS;Qjx~S&*d` zjSK}I3}UKSHNo^8gG|kM|GzSG@{{~z&PtF@4+inV$pHoG^#}GXWB{E%!Z3l6!Nr3? zZZ2q>pJNjvk3|9#gS7)_WgS~4XdD6*uAs96K%2@yHEcce;fhJuL0hEdbwObX-UYwpavVJ~ToTvU5Xz2F;6Hu&xS|c6| zEH6P~Acxk}oB~glf)mV5(CH7ds^0(q2h`M@TnBP^^LLQLrB(HfK_^blW8eS@fa@>l zfk~jYg9n3{?&R;k7#bKETtJrWg3MhzOcoFonS7v-ofFi1sPO)OE_CvRLQCC51|Cqv zg3_SlTm}_TvEjkMdk|D~fX41YP96=7I8vy+j{>$u@>Bs2Av+W54`l2VS)?;OUGRXj>cF97EtHOVIHGJ!*2$U z25E+fnwOs|YBiZF3KbX_L7T5_9js?1dYxjhcd(u{F_wWPIqDQceb)t0r}{_z%nuBX za~O3T_c3aK90nS}06DJKgQ>ovmV?10l;dVyy@EqUJ!l*G9!3Gn1P0DVYX*VZtmtc? zAt=yRmkAFUI6zxnCLCno0ga#6GJFQNsV62fh&b+JxM7{hzyXS0P{HECz_=E42%Ezq zh65lmi$>6KIf8c^7#T7^@l=0+siG#6xzcfw9D@W%0Z7y2Mh20|2SH1l7z@F{Igg=b zvPOv`Yb*oH4B5$fCDO|CPB4Jn?l^}*rY3{lul zVVTXq2`WfH4xX3^(gLb{xIj&Flidp$R8Y=<107?P0$S4!D#ZV5K&!_Opiu%324?Vr zNQZr(EO?A}@`X}U=~l&S9t_MYL3tlkb%KHmv`xwT|IxjZ70R+111I;C1xlw#Uh`mJ zT8gRa$kWLRWulXL%Z(TVCp(mDGZs$HDYs)17X`1&IZ)1Be_=l(g8;NxH?d);|DV9{ z{~x$p*23VBeDD8%&;cCQM?gD18F=dFJq9(#73>}C|Jx_j|F>_b|DPQ7|9^7z|9{DI z{{IJ`&v*E9h4=q|Z$T57;3NP#8|DdU;+KmN?7#&KD$P5<`(l+G_k}S?fby*M15oRq zzjX2raQNBOH-7*XMc{+|YUCx?fzFZwsq`|X59^5Z?AgYN2gf+}V?O;A_K>g8k5RuV>Q z&c_cx0Rdej>Ek#Hl*WZiL9PK$HS|B0=W6C$MR4}ki|daMi#`#|Hnd$d6XolDJL$n+?v zi&_IZ@T>x~R7~t3s6qzi4A8Wjb;AGu9t@z317deUVdb!oApn%{JQ&1gf*VoICm2As z>r4Ot4;u2Sj|S}tVTf_q#lQn)D>zQ7XOO6={&=mXMoPqkK@e;ZD0hSU%Anbb`n{h- z!W{&xKxe_!e`nAG4N!o>4`h+Uy#F1b{;cCZ1`g|l|Np@CXYy@OV_akx$TJ+w%b

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