diff --git a/doc/release-notes.xml b/doc/release-notes.xml
index 82a43c2887b..f8a4e83c8b5 100644
--- a/doc/release-notes.xml
+++ b/doc/release-notes.xml
@@ -80,7 +80,7 @@ worth listing:
Support for building derivations in a virtual
machine, including RPM and Debian builds in automatically generated
VM images. See
- pkgs/build-support/vm.default.nix for
+ pkgs/build-support/vm/default.nix for
details.
Improved support for building Haskell
diff --git a/pkgs/applications/editors/kile/default.nix b/pkgs/applications/editors/kile/default.nix
index 51c58c11cf8..704b8e1b824 100644
--- a/pkgs/applications/editors/kile/default.nix
+++ b/pkgs/applications/editors/kile/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation {
description = "An integrated LaTeX editor for KDE";
homepage = http://kile.sourceforge.net;
license = "GPLv2";
+ platforms = stdenv.lib.platforms.linux;
};
}
diff --git a/pkgs/applications/misc/k3b/1.0.nix b/pkgs/applications/misc/k3b/1.0.nix
index 7ac483cedea..bd01174ae59 100644
--- a/pkgs/applications/misc/k3b/1.0.nix
+++ b/pkgs/applications/misc/k3b/1.0.nix
@@ -15,5 +15,6 @@ stdenv.mkDerivation {
meta = {
description = "A CD and DVD authoring application for KDE";
homepage = http://www.k3b.org/;
+ platforms = stdenv.lib.platforms.linux;
};
}
diff --git a/pkgs/applications/networking/browsers/firefox/7.0.nix b/pkgs/applications/networking/browsers/firefox/7.0.nix
index d9e94ead33a..c14386e5f9e 100644
--- a/pkgs/applications/networking/browsers/firefox/7.0.nix
+++ b/pkgs/applications/networking/browsers/firefox/7.0.nix
@@ -15,14 +15,14 @@ assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
rec {
- firefoxVersion = "7.0b1";
+ firefoxVersion = "7.0";
xulVersion = "7.0"; # this attribute is used by other packages
src = fetchurl {
- url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/${firefoxVersion}-candidates/build1/source/firefox-${firefoxVersion}.source.tar.bz2";
- sha256 = "0s8lv07nggdf8ad2yx7sgq1mfy1dvzir0f6x4km911yc9qyhwmwk";
+ url = "http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2";
+ sha256 = "1fpadlsdc8d739cz52dicn68v2ilv044hxivilgy9jnrazznrm42";
};
commonConfigureFlags =
diff --git a/pkgs/applications/networking/browsers/firefox/8.0.nix b/pkgs/applications/networking/browsers/firefox/8.0.nix
new file mode 100644
index 00000000000..f6807056529
--- /dev/null
+++ b/pkgs/applications/networking/browsers/firefox/8.0.nix
@@ -0,0 +1,180 @@
+{ stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL
+, libjpeg, libpng, zlib, cairo, dbus, dbus_glib, bzip2, xlibs
+, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
+, yasm, mesa, sqlite, unzip
+
+, # If you want the resulting program to call itself "Firefox" instead
+ # of "Shiretoko" or whatever, 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
+}:
+
+assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
+
+rec {
+
+ firefoxVersion = "8.0b1";
+
+ xulVersion = "8.0"; # this attribute is used by other packages
+
+
+ src = fetchurl {
+ url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/${firefoxVersion}-candidates/build1/source/firefox-${firefoxVersion}.source.tar.bz2";
+ sha256 = "1sdahpawgngvjh4cap2vdg00ngiwji5nkb40dh5kd393wa6c8mpm";
+ };
+
+ commonConfigureFlags =
+ [ "--enable-optimize"
+ "--disable-debug"
+ "--enable-strip"
+ "--with-system-jpeg"
+ "--with-system-zlib"
+ "--with-system-bz2"
+ "--with-system-nspr"
+ # "--with-system-nss"
+ # "--with-system-png" # <-- "--with-system-png won't work because the system's libpng doesn't have APNG support"
+ "--enable-system-cairo"
+ "--enable-system-sqlite"
+ "--disable-crashreporter"
+ "--disable-tests"
+ "--disable-necko-wifi" # maybe we want to enable this at some point
+ "--disable-installer"
+ "--disable-updater"
+ ];
+
+
+ xulrunner = stdenv.mkDerivation rec {
+ name = "xulrunner-${xulVersion}";
+
+ inherit src;
+
+ buildInputs =
+ [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo bzip2
+ python dbus dbus_glib pango freetype fontconfig xlibs.libXi
+ xlibs.libX11 xlibs.libXrender xlibs.libXft xlibs.libXt file
+ alsaLib nspr /* nss */ libnotify xlibs.pixman yasm mesa
+ xlibs.libXScrnSaver xlibs.scrnsaverproto
+ xlibs.libXext xlibs.xextproto sqlite unzip
+ ];
+
+ configureFlags =
+ [ "--enable-application=xulrunner"
+ "--disable-javaxpcom"
+ ] ++ commonConfigureFlags;
+
+ enableParallelBuilding = true;
+
+ # Hack to work around make's idea of -lbz2 dependency
+ preConfigure =
+ ''
+ find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${
+ stdenv.lib.concatStringsSep ":"
+ (map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc]))
+ }' ';'
+
+ export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib/xulrunner-${xulVersion}"
+ '';
+
+ # !!! Temporary hack.
+ preBuild =
+ ''
+ export NIX_ENFORCE_PURITY=
+ '';
+
+ installFlags = "SKIP_GRE_REGISTRATION=1";
+
+ postInstall = ''
+ # Fix some references to /bin paths in the Xulrunner shell script.
+ substituteInPlace $out/bin/xulrunner \
+ --replace /bin/pwd "$(type -tP pwd)" \
+ --replace /bin/ls "$(type -tP ls)"
+
+ # Fix run-mozilla.sh search
+ libDir=$(cd $out/lib && ls -d xulrunner-[0-9]*)
+ echo libDir: $libDir
+ test -n "$libDir"
+ cd $out/bin
+ mv xulrunner ../lib/$libDir/
+
+ for i in $out/lib/$libDir/*; do
+ file $i;
+ if file $i | grep executable &>/dev/null; then
+ echo -e '#! /bin/sh\n"'"$i"'" "$@"' > "$out/bin/$(basename "$i")";
+ chmod a+x "$out/bin/$(basename "$i")";
+ fi;
+ done;
+ for i in $out/lib/$libDir/{xpcshell,plugin-container,*.so}; do
+ patchelf --set-rpath "$(patchelf --print-rpath "$i"):$out/lib/$libDir" $i || true
+ done;
+ rm -f $out/bin/run-mozilla.sh
+ ''; # */
+
+ meta = {
+ description = "Mozilla Firefox XUL runner";
+ homepage = http://www.mozilla.com/en-US/firefox/;
+ };
+
+ passthru = { inherit gtk; version = xulVersion; };
+ };
+
+
+ firefox = stdenv.mkDerivation rec {
+ name = "firefox-${firefoxVersion}";
+
+ inherit src;
+
+ enableParallelBuilding = true;
+
+ buildInputs =
+ [ pkgconfig gtk perl zip libIDL libjpeg zlib cairo bzip2 python
+ dbus dbus_glib pango freetype fontconfig alsaLib nspr libnotify
+ xlibs.pixman yasm mesa sqlite file unzip
+ ];
+
+ propagatedBuildInputs = [xulrunner];
+
+ configureFlags =
+ [ "--enable-application=browser"
+ "--with-libxul-sdk=${xulrunner}/lib/xulrunner-devel-${xulrunner.version}"
+ "--enable-chrome-format=jar"
+ "--disable-elf-hack"
+ ]
+ ++ commonConfigureFlags
+ ++ stdenv.lib.optional enableOfficialBranding "--enable-official-branding";
+
+ # Hack to work around make's idea of -lbz2 dependency
+ preConfigure =
+ ''
+ find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${
+ stdenv.lib.concatStringsSep ":"
+ (map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc]))
+ }' ';'
+ '';
+
+ postInstall =
+ ''
+ ln -s ${xulrunner}/lib/xulrunner-${xulrunner.version} $(echo $out/lib/firefox-*)/xulrunner
+ for j in $out/bin/*; do
+ i="$(readlink "$j")";
+ file $i;
+ if file $i | grep executable &>/dev/null; then
+ rm "$out/bin/$(basename "$i")"
+ echo -e '#! /bin/sh\n"'"$i"'" "$@"' > "$out/bin/$(basename "$i")"
+ chmod a+x "$out/bin/$(basename "$i")"
+ fi;
+ done;
+ ''; # */
+
+ meta = {
+ description = "Mozilla Firefox - the browser, reloaded";
+ homepage = http://www.mozilla.com/en-US/firefox/;
+ };
+
+ passthru = {
+ inherit gtk xulrunner nspr;
+ isFirefox3Like = true;
+ };
+ };
+}
diff --git a/pkgs/applications/networking/browsers/opera/builder.sh b/pkgs/applications/networking/browsers/opera/builder.sh
deleted file mode 100644
index de4a413e4ac..00000000000
--- a/pkgs/applications/networking/browsers/opera/builder.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-source $stdenv/setup
-
-buildPhase() {
- true
-}
-
-installPhase() {
- substituteInPlace install --replace /bin/pwd pwd
- substituteInPlace install --replace /usr/local "$out"
-
- # Note: the "no" is because the install scripts asks whether we
- # want to install icons in some system-wide directories.
-
- ensureDir "$out"
-
- ./install --text --system
-
- [ -z ${system##*64*} ] && suf=64
-
- find $out -type f | while read f; do
- echo testing "$f"
- # patch all executables
- if readelf -h "$f" | grep 'EXEC (Executable file)' &> /dev/null; then
- echo "patching $f <<"
- patchelf \
- --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
- --set-rpath "$libPath" \
- "$f"
- fi
- done
-
- # Substitute pwd as late as possible so that the md5 checksum check of opera passes.
- substituteInPlace $out/bin/opera --replace /bin/pwd pwd
-
- ensureDir $out/share/applications
- cp $desktopItem/share/applications/* $out/share/applications
-}
-
-genericBuild
diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix
index 8b7ef628044..3dddc856963 100644
--- a/pkgs/applications/networking/browsers/opera/default.nix
+++ b/pkgs/applications/networking/browsers/opera/default.nix
@@ -1,46 +1,81 @@
-{ stdenv, fetchurl, qt, zlib, libX11, libXext, libSM, libICE, libXt, glibc
-, makeDesktopItem, freetype, fontconfig, libXft, libXrender
+{ stdenv, fetchurl, zlib, libX11, libXext, libSM, libICE, libXt
+, freetype, fontconfig, libXft, libXrender, libxcb, expat, libXau, libXdmcp
+, libuuid, cups, xz
+, gstreamer, gstPluginsBase, libxml2
+, gtkSupport ? true, glib, gtk, pango, gdk_pixbuf, cairo, atk
+, kdeSupport ? false, qt4, kdelibs
}:
-assert stdenv.isLinux && stdenv.gcc.gcc != null;
+assert stdenv.isLinux && stdenv.gcc.gcc != null && stdenv.gcc.libc != null;
+
+let
+ mirror = ftp://ftp.ussg.iu.edu/pub/opera;
+in
stdenv.mkDerivation rec {
- name = "opera-10.63";
+ name = "opera-11.51-1087";
- builder = ./builder.sh;
+ buildNativeInputs = [ xz ];
src =
if stdenv.system == "i686-linux" then
fetchurl {
- url = "http://mirror.liteserver.nl/pub/opera/linux/1063/opera-10.63-6450.i386.linux.tar.bz2";
- sha256 = "dd105d602a4b8897749a4cb9610f8bfe2d07d4f4cc9bf3905930c65592737259";
+ url = "${mirror}/linux/1151/${name}.i386.linux.tar.bz2";
+ sha256 = "1baaim404g8nwd7knbl1p1ardpx36ib5159nkvqfnnavfyhkinp2";
}
else if stdenv.system == "x86_64-linux" then
fetchurl {
- url = "http://mirror.liteserver.nl/pub/opera/linux/1063/opera-10.63-6450.x86_64.linux.tar.bz2";
- sha256 = "da8ae14cf317364ab0295102220246b205bf30c59c00cadb571395c90dda7c74";
+ url = "${mirror}/linux/1151/${name}.x86_64.linux.tar.xz";
+ sha256 = "1bciqyfhhdywaasj717by1a975ywf672r3pv9cw9bn0b90pgp933";
}
else throw "Opera is not supported on ${stdenv.system} (only i686-linux and x86_64 linux are supported)";
dontStrip = 1;
-
- # `operapluginwrapper' requires libXt. Adding it makes startup faster
- # and omits error messages (on x86).
- libPath =
- let list = [ stdenv.gcc.gcc glibc qt zlib libX11 libXt libXext libSM libICE libXft freetype fontconfig
- libXrender];
- in stdenv.lib.makeLibraryPath list
- + ":" + (if stdenv.system == "x86_64-linux" then stdenv.lib.makeSearchPath "lib64" list else "");
- desktopItem = makeDesktopItem {
- name = "Opera";
- exec = "opera";
- icon = "opera";
- comment = "Opera Web Browser";
- desktopName = "Opera";
- genericName = "Web Browser";
- categories = "Application;Network;";
- };
+ phases = "unpackPhase installPhase fixupPhase";
+
+ installPhase = ''
+ ./install --unattended --prefix $out
+ '';
+
+ buildInputs =
+ [ stdenv.gcc.gcc stdenv.gcc.libc zlib libX11 libXt libXext libSM libICE
+ libXft freetype fontconfig libXrender libuuid expat
+ gstreamer libxml2 gstPluginsBase
+ ]
+ ++ stdenv.lib.optionals gtkSupport [ glib gtk pango gdk_pixbuf cairo atk ]
+ ++ stdenv.lib.optionals kdeSupport [ kdelibs qt4 ];
+
+ libPath = stdenv.lib.makeLibraryPath buildInputs
+ + stdenv.lib.optionalString (stdenv.system == "x86_64-linux")
+ (":" + stdenv.lib.makeSearchPath "lib64" buildInputs);
+
+ preFixup =
+ ''
+ find $out/lib/opera -type f | while read f; do
+ type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
+ if [ -z "$type" ]; then
+ :
+ elif [ $type == "EXEC" ]; then
+ echo "patching $f executable <<"
+ patchelf \
+ --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+ --set-rpath "${libPath}" \
+ "$f"
+ elif [ $type == "DYN" ]; then
+ echo "patching $f library <<"
+ patchelf --set-rpath "${libPath}" "$f"
+ else
+ echo "Unknown type $type"
+ exit 1
+ fi
+ done
+ '';
+
+ postFixup = ''
+ oldRPATH=`patchelf --print-rpath $out/lib/opera/opera`
+ patchelf --set-rpath $oldRPATH:${cups}/lib $out/lib/opera/opera
+ '';
meta = {
homepage = http://www.opera.com;
diff --git a/pkgs/applications/networking/remote/freerdp/unstable.nix b/pkgs/applications/networking/remote/freerdp/unstable.nix
index 78e275690ac..2266f7237f6 100644
--- a/pkgs/applications/networking/remote/freerdp/unstable.nix
+++ b/pkgs/applications/networking/remote/freerdp/unstable.nix
@@ -17,7 +17,7 @@
assert printerSupport -> cups != null;
-let rev = "42fb9f84e82268073a3838e6082783ba956ecc99"; in
+let rev = "498b88a1da748a4a2b4dbd12c795ca87fee24bab"; in
stdenv.mkDerivation rec {
name = "freerdp-1.0pre${rev}";
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
src = fetchgit {
url = git://github.com/FreeRDP/FreeRDP.git;
inherit rev;
- sha256 = "5e77163e2a728802fc426860b3f5ff88cb2f2f3b0bbf0912e9e44c3d8fa060e5";
+ sha256 = "91ef562e96db483ada28236e524326a75b6942becce4fd2a65ace386186eccf7";
};
buildInputs = [
@@ -43,9 +43,9 @@ stdenv.mkDerivation rec {
cunit
] ++ stdenv.lib.optional printerSupport cups;
- postUnpack = ''
- sed -i 's@xf_GetWorkArea(xfi)@///xf_GetWorkArea(xfi)@' git-export/client/X11/xf_monitor.c
- '';
+ doCheck = false;
+
+ checkPhase = ''LD_LIBRARY_PATH="libfreerdp-cache:libfreerdp-chanman:libfreerdp-common:libfreerdp-core:libfreerdp-gdi:libfreerdp-kbd:libfreerdp-rail:libfreerdp-rfx:libfreerdp-utils" cunit/test_freerdp'';
cmakeFlags = [ "-DWITH_DIRECTFB=ON" "-DWITH_CUNIT=ON" ];
diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix
index 713e7db0e3c..b8925f89303 100644
--- a/pkgs/build-support/fetchurl/mirrors.nix
+++ b/pkgs/build-support/fetchurl/mirrors.nix
@@ -98,6 +98,7 @@ rec {
http://www.eu.kernel.org/pub/
http://www.de.kernel.org/pub/
http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/
+ http://linux-kernel.uio.no/pub/
];
# Mirrors of ftp://ftp.kde.org/pub/kde/.
diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh
index af1faa7708c..c1e216956e7 100644
--- a/pkgs/build-support/kernel/modules-closure.sh
+++ b/pkgs/build-support/kernel/modules-closure.sh
@@ -18,7 +18,10 @@ for module in $rootModules; do
| sed 's/^insmod //') \
|| if test -z "$allowMissing"; then exit 1; fi
#for i in $deps; do echo $i; done
- closure="$closure $deps"
+ if [[ "$deps" != builtin* ]]
+ then
+ closure="$closure $deps"
+ fi
done
echo "closure:"
diff --git a/pkgs/data/misc/themes/theme-gnu.nix b/pkgs/data/misc/themes/theme-gnu.nix
index f04c820e0e9..32d1a9256ac 100644
--- a/pkgs/data/misc/themes/theme-gnu.nix
+++ b/pkgs/data/misc/themes/theme-gnu.nix
@@ -1,5 +1,5 @@
{fetchurl, ...}:
fetchurl {
- url = http://mirrors.kernel.org/gentoo/distfiles/Theme-GNU.tar.bz2;
- md5 = "61969309d23c631e57b0a311102ef034";
+ url = http://dev.gentoo.org/~spock/repos/bootsplash/Theme-GNU.tar.bz2;
+ sha256 = "1pj91nxvwjphc8r6idl4ih3ldyk34j1w9c4p8gzmwnwg3w34xha0";
}
diff --git a/pkgs/desktops/e17/default.nix b/pkgs/desktops/e17/default.nix
new file mode 100644
index 00000000000..6822c641913
--- /dev/null
+++ b/pkgs/desktops/e17/default.nix
@@ -0,0 +1,39 @@
+{ callPackage, pkgs }:
+rec {
+ #### CORE EFL
+
+ eina = callPackage ./eina { };
+
+ eet = callPackage ./eet { };
+
+ evas = callPackage ./evas { };
+
+ ecore = callPackage ./ecore { };
+
+ embryo = callPackage ./embryo { };
+
+ edje = callPackage ./edje { lua = pkgs.lua5; };
+
+ efreet = callPackage ./efreet { };
+
+ e_dbus = callPackage ./e_dbus { };
+
+ eeze = callPackage ./eeze { };
+
+
+ #### WINDOW MANAGER
+
+ enlightenment = callPackage ./enlightenment { };
+
+
+ #### APPLICATIONS
+
+
+
+
+ #### ART
+
+
+
+
+}
diff --git a/pkgs/desktops/e17/e_dbus/default.nix b/pkgs/desktops/e17/e_dbus/default.nix
new file mode 100644
index 00000000000..44be90f7af9
--- /dev/null
+++ b/pkgs/desktops/e17/e_dbus/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, ecore, eina, evas, dbus_libs }:
+stdenv.mkDerivation rec {
+ name = "e_dbus-${version}";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "1ifkijy4ap2mlqw2nd1dlvzlppyi7bnp15bxiy40nhdly8vhpbdl";
+ };
+ buildInputs = [ pkgconfig ecore eina evas ];
+ propagatedBuildInputs = [ dbus_libs ];
+ configureFlags = ''
+ --disable-edbus-test
+ --disable-edbus-test-client
+ --disable-edbus-notify-send
+ --disable-edbus-notify-test
+ '';
+ meta = {
+ description = "Enlightenment's D-Bus wrapping and glue layer library";
+ longDescription = ''
+ Enlightenment's E_Dbus is a set of wrappers around DBus APIs by
+ third party, so they can be easily used by EFL applications,
+ automatically providing Ecore/main loop integration, as well as
+ Eina data types.
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/ecore/d.nix b/pkgs/desktops/e17/ecore/d.nix
new file mode 100644
index 00000000000..73b318c4cde
--- /dev/null
+++ b/pkgs/desktops/e17/ecore/d.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, pkgconfig, eina, evas, xproto, libX11, libXext }:
+stdenv.mkDerivation rec {
+ name = "ecore-${version}";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "1vi03zxnsdnrjv1rh5r3v0si0b20ikrfb8hf5374i2sqvi1g65j0";
+ };
+ buildInputs = [ pkgconfig eina evas xproto ];
+ propagatedBuildInputs = [ libX11 libXext ];
+ meta = {
+ description = "";
+ longDescription = ''
+ '';
+ homepage = http://enlightenment.org/;
+ license = "BSD-style???";
+ };
+}
diff --git a/pkgs/desktops/e17/ecore/default.nix b/pkgs/desktops/e17/ecore/default.nix
new file mode 100644
index 00000000000..004d708070c
--- /dev/null
+++ b/pkgs/desktops/e17/ecore/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, eina, evas, libX11, libXext }:
+stdenv.mkDerivation rec {
+ name = "ecore-${version}";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "1vi03zxnsdnrjv1rh5r3v0si0b20ikrfb8hf5374i2sqvi1g65j0";
+ };
+ buildInputs = [ pkgconfig eina evas ];
+ propagatedBuildInputs = [ libX11 libXext ];
+ meta = {
+ description = "Enlightenment's core mainloop, display abstraction and utility library";
+ longDescription = ''
+ Enlightenment's Ecore is a clean and tiny event loop library
+ with many modules to do lots of convenient things for a
+ programmer, to save time and effort.
+
+ It's small and lean, designed to work on embedded systems all
+ the way to large and powerful multi-cpu workstations. It
+ serialises all system signals, events etc. into a single event
+ queue, that is easily processed without needing to worry about
+ concurrency. A properly written, event-driven program using this
+ kind of programming doesn't need threads, nor has to worry about
+ concurrency. It turns a program into a state machine, and makes
+ it very robust and easy to follow.
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/edje/default.nix b/pkgs/desktops/e17/edje/default.nix
new file mode 100644
index 00000000000..3272963b8b6
--- /dev/null
+++ b/pkgs/desktops/e17/edje/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, lua, eina, eet, evas, ecore, embryo }:
+stdenv.mkDerivation rec {
+ name = "edje-${version}";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "0z7gjj4ccjr36ba763ijmjkya58fc173vpdw1m298zwhy8n4164j";
+ };
+ buildInputs = [ pkgconfig lua eina eet evas ecore embryo ];
+ meta = {
+ description = "Enlightenment's abstract GUI layout and animation object library";
+ longDescription = ''
+ Enlightenment's Edje is a complex graphical design & layout
+ library based on Evas that provides an abstraction layer between
+ the application code and the interface, while allowing extremely
+ flexible dynamic layouts and animations.
+
+ In more popular terms, Edje makes every application that uses it
+ "skinable".
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/eet/default.nix b/pkgs/desktops/e17/eet/default.nix
new file mode 100644
index 00000000000..7f2809c0aa0
--- /dev/null
+++ b/pkgs/desktops/e17/eet/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, eina, zlib, libjpeg }:
+stdenv.mkDerivation rec {
+ name = "eet-${version}";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "1hlznlmgkgzxnkmc3qgqjrc62bmwqj5af8lsh59vac2gf4jnymnc";
+ };
+ buildInputs = [ pkgconfig eina zlib libjpeg ];
+ meta = {
+ description = "Enlightenment's data encode/decode and storage library";
+ longDescription = ''
+ Enlightenment's EET is a tiny library designed to write an
+ arbitary set of chunks of data to a file and optionally compress
+ each chunk (very much like a zip file) and allow fast
+ random-access reading of the file later on. EET files are
+ perfect for storing data that is written once (or rarely) and
+ read many times, especially when the program does not want to
+ have to read all the data in at once.
+
+ Use this library when you need to pack C structure and you want
+ to retrieve it quickly with as few as possible memory use. You
+ can also use it to serialize data quickly and exchange them
+ between two program over ipc or network link.
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/eeze/default.nix b/pkgs/desktops/e17/eeze/default.nix
new file mode 100644
index 00000000000..3499d29dbb1
--- /dev/null
+++ b/pkgs/desktops/e17/eeze/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, eina, ecore, udev }:
+stdenv.mkDerivation rec {
+ name = "eeze-${version}";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "0g6afhnl862clj1rfh0s4nzdnhdikylbalfp8zmsw56dj0zncynq";
+ };
+ buildInputs = [ pkgconfig eina ecore ];
+ propagatedBuildInputs = [ udev ];
+ meta = {
+ description = "Enlightenment's device abstraction library";
+ longDescription = ''
+ Enlightenment's Eeze is a library for manipulating devices
+ through udev with a simple and fast api. It interfaces directly
+ with libudev, avoiding such middleman daemons as udisks/upower
+ or hal, to immediately gather device information the instant it
+ becomes known to the system.
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/efreet/default.nix b/pkgs/desktops/e17/efreet/default.nix
new file mode 100644
index 00000000000..e1e8d34197f
--- /dev/null
+++ b/pkgs/desktops/e17/efreet/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, eina, eet, ecore }:
+stdenv.mkDerivation rec {
+ name = "efreet-${version}";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "0fakczsrr1idyvrp04mxw51ww017kn65xa77vq8wka4js8y0nagi";
+ };
+ buildInputs = [ pkgconfig eina eet ecore ];
+ meta = {
+ description = "Enlightenment's standards handling for freedesktop.org standards";
+ longDescription = ''
+ Enlightenment's Efreet is a library designed to help apps work
+ several of the Freedesktop.org standards regarding Icons,
+ Desktop files and Menus. To that end it implements the following
+ specifications:
+
+ * XDG Base Directory Specification
+ * Icon Theme Specification
+ * Desktop Entry Specification
+ * Desktop Menu Specification
+ * FDO URI Specification
+ * Shared Mime Info Specification
+ * Trash Specification
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/eina/default.nix b/pkgs/desktops/e17/eina/default.nix
new file mode 100644
index 00000000000..b4c3d0a7291
--- /dev/null
+++ b/pkgs/desktops/e17/eina/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl }:
+stdenv.mkDerivation rec {
+ name = "eina-${version}";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "1v2z1l6nqr7hnp5gki3972kprlvylpalp5wq9xdppm250z91kaas";
+ };
+ meta = {
+ description = "Enlightenment's core data structure library";
+ longDescription = ''
+ Enlightenment's Eina is a core data structure and common utility
+ library.
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.lgpl21;
+ };
+}
diff --git a/pkgs/desktops/e17/embryo/default.nix b/pkgs/desktops/e17/embryo/default.nix
new file mode 100644
index 00000000000..e23b3f4b0b1
--- /dev/null
+++ b/pkgs/desktops/e17/embryo/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl }:
+stdenv.mkDerivation rec {
+ name = "embryo-${version}";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "0ch9vps83s892vda1ss1cf1fbgzff9p51df2fip7fqlj8y1shvvx";
+ };
+ meta = {
+ description = "Enlightenment's small Pawn based virtual machine and compiler";
+ longDescription = ''
+ Enlightenment's Embryo is a tiny library designed to interpret
+ limited Small programs compiled by the included compiler,
+ embryo_cc. It is mostly a cleaned up and smaller version of the
+ original Small abstract machine. The compiler is mostly
+ untouched.
+ '';
+ homepage = http://enlightenment.org/;
+ license = with stdenv.lib.licenses; [ bsd2 bsd3 ]; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/enlightenment/default.nix b/pkgs/desktops/e17/enlightenment/default.nix
new file mode 100644
index 00000000000..b21bfc92ef2
--- /dev/null
+++ b/pkgs/desktops/e17/enlightenment/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, eina, eet, evas, ecore, edje, efreet, e_dbus, embryo }:
+stdenv.mkDerivation rec {
+ name = "enlightenment-0.16.999.55225";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/snapshots/2010-12-03/${name}.tar.gz";
+ sha256 = "1cv701fidp9mx3g5m9klmzsp0fj149rb133v1w76rzms3a0wljl1";
+ };
+ buildInputs = [ pkgconfig eina eet ecore evas edje efreet e_dbus embryo ];
+ configureFlags = ''
+ --with-profile=FAST_PC
+ --disable-illume
+ --disable-illume2
+ '';
+ meta = {
+ description = "Enlightenment, the window manager";
+ longDescription = ''
+ The Enlightenment Desktop shell provides an efficient yet
+ breathtaking window manager based on the Enlightenment
+ Foundation Libraries along with other essential desktop
+ components like a file manager, desktop icons and widgets.
+
+ It boasts a un-precedented level of theme-ability while still
+ being capable of performing on older hardware or embedded
+ devices.
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/e17/evas/default.nix b/pkgs/desktops/e17/evas/default.nix
new file mode 100644
index 00000000000..c546eb1af54
--- /dev/null
+++ b/pkgs/desktops/e17/evas/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, freetype, fontconfig, libpng, libjpeg
+, libX11, libXext, eina, eet }:
+stdenv.mkDerivation rec {
+ name = "evas-${version}";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "http://download.enlightenment.org/releases/${name}.tar.gz";
+ sha256 = "0xkwyvxy32dwja0i3j8r8bzlybjwlrgmrhcri1bscp3aaj75x2rx";
+ };
+ buildInputs = [ pkgconfig freetype fontconfig libpng libjpeg
+ libX11 libXext eina eet
+ ];
+ meta = {
+ description = "Enlightenment's canvas and scenegraph rendering library";
+ longDescription = ''
+ Enlightenment's Evas is a clean display canvas API that
+ implements a scene graph, not an immediate-mode rendering
+ target, is cross-platform, for several target display systems
+ that can draw anti-aliased text, smooth super and sub-sampled
+ scaled images, alpha-blend objects and much more.
+ '';
+ homepage = http://enlightenment.org/;
+ license = stdenv.lib.licenses.bsd2; # not sure
+ };
+}
diff --git a/pkgs/desktops/kde-3/kdebase/default.nix b/pkgs/desktops/kde-3/kdebase/default.nix
index 814d4629157..6a6a1ea4a1e 100644
--- a/pkgs/desktops/kde-3/kdebase/default.nix
+++ b/pkgs/desktops/kde-3/kdebase/default.nix
@@ -52,4 +52,6 @@ stdenv.mkDerivation {
# Work around some inexplicable build failure starting in kdebase 3.5.9.
LDFLAGS = "-L${kdelibs}/lib";
+
+ meta.platforms = stdenv.lib.platforms.linux;
}
diff --git a/pkgs/desktops/kde-3/kdelibs/default.nix b/pkgs/desktops/kde-3/kdelibs/default.nix
index e191421e572..69c6c5c332e 100644
--- a/pkgs/desktops/kde-3/kdelibs/default.nix
+++ b/pkgs/desktops/kde-3/kdelibs/default.nix
@@ -49,4 +49,6 @@ stdenv.mkDerivation {
--x-includes=${xlibs.libX11}/include
--x-libraries=${xlibs.libX11}/lib
'';
+
+ meta.platforms = stdenv.lib.platforms.linux;
}
diff --git a/pkgs/desktops/kde-4.5/default.nix b/pkgs/desktops/kde-4.5/default.nix
index 9381107ef6f..e231ef104c0 100644
--- a/pkgs/desktops/kde-4.5/default.nix
+++ b/pkgs/desktops/kde-4.5/default.nix
@@ -37,8 +37,6 @@ rec {
polkit_qt_1 = callPackage ./support/polkit-qt-1 { };
- soprano = callPackage ./support/soprano { };
-
### LIBS
kdelibs = callPackage ./libs { };
diff --git a/pkgs/desktops/kde-4.5/support/soprano/default.nix b/pkgs/desktops/kde-4.5/support/soprano/default.nix
deleted file mode 100644
index 8d07f352d17..00000000000
--- a/pkgs/desktops/kde-4.5/support/soprano/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, fetchurl, cmake, qt4, clucene_core, redland, libiodbc }:
-
-stdenv.mkDerivation rec {
- name = "soprano-2.7.0";
-
- src = fetchurl {
- url = "mirror://sourceforge/soprano/${name}.tar.bz2";
- sha256 = "1ki92wg0i9nhn1fh5mdcls5h9h3lf2k5r66snsags4x7zw0dmv2z";
- };
-
- # We disable the Java backend, since we do not need them and they make the closure size much bigger
- buildInputs = [ cmake qt4 clucene_core redland libiodbc ];
-
- meta = {
- homepage = http://soprano.sourceforge.net/;
- description = "An object-oriented C++/Qt4 framework for RDF data";
- license = "LGPL";
- maintainers = with stdenv.lib.maintainers; [ sander urkud ];
- inherit (qt4.meta) platforms;
- };
-}
diff --git a/pkgs/desktops/kde-4.7/default.nix b/pkgs/desktops/kde-4.7/default.nix
index 9d6981f1168..0e2377f2535 100644
--- a/pkgs/desktops/kde-4.7/default.nix
+++ b/pkgs/desktops/kde-4.7/default.nix
@@ -43,7 +43,6 @@ kde.modules // kde.individual //
inherit (kde) manifest modules individual splittedModuleList;
akonadi = callPackage ./support/akonadi { };
- soprano = callPackage ./support/soprano { };
qt4 = qt47;
diff --git a/pkgs/desktops/kde-4.7/support/akonadi/default.nix b/pkgs/desktops/kde-4.7/support/akonadi/default.nix
index 486849b23aa..38ec7f85907 100644
--- a/pkgs/desktops/kde-4.7/support/akonadi/default.nix
+++ b/pkgs/desktops/kde-4.7/support/akonadi/default.nix
@@ -1,14 +1,16 @@
{ stdenv, fetchurl, cmake, qt4, shared_mime_info, libxslt, boost, automoc4, soprano }:
stdenv.mkDerivation rec {
- name = "akonadi-1.6.0";
+ name = "akonadi-1.6.1";
src = fetchurl {
url = "mirror://kde/stable/akonadi/src/${name}.tar.bz2";
- sha256 = "0bzr6476yyinvdhrn9z8ynmi0py9zs3dfhwk3dvqxysk87svk71f";
+ sha256 = "0r8sw7m1pwqc7qkaczm0r8adqi1wvlhdp32gy3q5p5plq50xhgra";
};
-
- buildInputs = [ cmake qt4 soprano automoc4 shared_mime_info libxslt boost ];
+
+ buildInputs = [ qt4 soprano libxslt boost ];
+
+ buildNativeInputs = [ cmake automoc4 shared_mime_info ];
enableParallelBuilding = true;
diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix
index fcd57205dcf..550edcc004a 100644
--- a/pkgs/development/interpreters/ruby/default.nix
+++ b/pkgs/development/interpreters/ruby/default.nix
@@ -1,52 +1 @@
-{ stdenv, fetchurl
-, zlib, zlibSupport ? true
-, openssl, opensslSupport ? true
-, gdbm, gdbmSupport ? true
-, ncurses, readline, cursesSupport ? false
-, groff, docSupport ? false
-}:
-
-let
- op = stdenv.lib.optional;
- ops = stdenv.lib.optionals;
-in
-
-stdenv.mkDerivation rec {
- version = with passthru; "${majorVersion}.${minorVersion}-p${patchLevel}";
-
- name = "ruby-${version}";
-
- src = fetchurl {
- url = "ftp://ftp.ruby-lang.org/pub/ruby/1.8/${name}.tar.gz";
- sha256 = "0qf50wa1ziziagnxarj8z6yrsivrhchq1j9017ff3z2z7d31l9kc";
- };
-
- # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
- NROFF = "${groff}/bin/nroff";
-
- buildInputs = (ops cursesSupport [ ncurses readline ] )
- ++ (op docSupport groff )
- ++ (op zlibSupport zlib)
- ++ (op opensslSupport openssl)
- ++ (op gdbmSupport gdbm);
-
- configureFlags = ["--enable-shared" "--enable-pthread"];
-
- installFlags = stdenv.lib.optionalString docSupport "install-doc";
- # Bundler tries to create this directory
- postInstall = "mkdir -pv $out/${passthru.gemPath}";
-
- meta = {
- license = "Ruby";
- homepage = "http://www.ruby-lang.org/en/";
- description = "The Ruby language";
- };
-
- passthru = rec {
- majorVersion = "1.8";
- minorVersion = "7";
- patchLevel = "330";
- libPath = "lib/ruby/${majorVersion}";
- gemPath = "lib/ruby/gems/${majorVersion}";
- };
-}
+import ./ruby-19.nix
diff --git a/pkgs/development/interpreters/ruby/ruby-18.nix b/pkgs/development/interpreters/ruby/ruby-18.nix
new file mode 100644
index 00000000000..fcd57205dcf
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/ruby-18.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl
+, zlib, zlibSupport ? true
+, openssl, opensslSupport ? true
+, gdbm, gdbmSupport ? true
+, ncurses, readline, cursesSupport ? false
+, groff, docSupport ? false
+}:
+
+let
+ op = stdenv.lib.optional;
+ ops = stdenv.lib.optionals;
+in
+
+stdenv.mkDerivation rec {
+ version = with passthru; "${majorVersion}.${minorVersion}-p${patchLevel}";
+
+ name = "ruby-${version}";
+
+ src = fetchurl {
+ url = "ftp://ftp.ruby-lang.org/pub/ruby/1.8/${name}.tar.gz";
+ sha256 = "0qf50wa1ziziagnxarj8z6yrsivrhchq1j9017ff3z2z7d31l9kc";
+ };
+
+ # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
+ NROFF = "${groff}/bin/nroff";
+
+ buildInputs = (ops cursesSupport [ ncurses readline ] )
+ ++ (op docSupport groff )
+ ++ (op zlibSupport zlib)
+ ++ (op opensslSupport openssl)
+ ++ (op gdbmSupport gdbm);
+
+ configureFlags = ["--enable-shared" "--enable-pthread"];
+
+ installFlags = stdenv.lib.optionalString docSupport "install-doc";
+ # Bundler tries to create this directory
+ postInstall = "mkdir -pv $out/${passthru.gemPath}";
+
+ meta = {
+ license = "Ruby";
+ homepage = "http://www.ruby-lang.org/en/";
+ description = "The Ruby language";
+ };
+
+ passthru = rec {
+ majorVersion = "1.8";
+ minorVersion = "7";
+ patchLevel = "330";
+ libPath = "lib/ruby/${majorVersion}";
+ gemPath = "lib/ruby/gems/${majorVersion}";
+ };
+}
diff --git a/pkgs/development/interpreters/ruby/rubygems.nix b/pkgs/development/interpreters/ruby/rubygems.nix
index 60e83332c08..0d93b330ca0 100644
--- a/pkgs/development/interpreters/ruby/rubygems.nix
+++ b/pkgs/development/interpreters/ruby/rubygems.nix
@@ -1,16 +1,12 @@
args : with args;
rec {
- # some packages (eg ruby-debug) still require 1.8. So let's stick to that for
- # now if nobody has different requirements
-
version = "1.8.10";
src = fetchurl {
url = "http://production.cf.rubygems.org/rubygems/${name}.tgz";
sha256 = "0ll5swf4mi4nbgnr5jcyzmnlwb1zr2md9kvsgy3d1f485bb1n59q";
};
-
buildInputs = [ruby makeWrapper];
configureFlags = [];
diff --git a/pkgs/development/libraries/dbus/1.5.6.nix b/pkgs/development/libraries/dbus/1.5.6.nix
index a5ba03159f1..9c158933cb0 100644
--- a/pkgs/development/libraries/dbus/1.5.6.nix
+++ b/pkgs/development/libraries/dbus/1.5.6.nix
@@ -49,7 +49,7 @@ in rec {
preConfigure =
''
- sed -i 's@ $(top_builddir)/dbus/libdbus-1.la@@' tools/Makefile.in
+ sed -i 's@$(top_builddir)/dbus/libdbus-1.la@@' tools/Makefile.in
substituteInPlace tools/Makefile.in --replace 'install-localstatelibDATA:' 'disabled:'
'';
diff --git a/pkgs/development/libraries/google-perftools/default.nix b/pkgs/development/libraries/google-perftools/default.nix
new file mode 100644
index 00000000000..7935a794a2f
--- /dev/null
+++ b/pkgs/development/libraries/google-perftools/default.nix
@@ -0,0 +1,14 @@
+{stdenv, fetchurl, libunwind}:
+
+stdenv.mkDerivation rec {
+ name = "google-perftools-1.8.3";
+ src = fetchurl {
+ url = "http://google-perftools.googlecode.com/files/${name}.tar.gz";
+ sha256 = "0ncx3a8jl6n38q9bjnaz5sq96yb6yh99j3bl64k3295v9arl9mva";
+ };
+ buildInputs = [libunwind];
+ meta = {
+ description = "Fast, multi-threaded malloc() and nifty performance analysis tools.";
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/pkgs/development/libraries/haskell/X11-xft/default.nix b/pkgs/development/libraries/haskell/X11-xft/default.nix
index 14af645928c..d9eee5f5e1c 100644
--- a/pkgs/development/libraries/haskell/X11-xft/default.nix
+++ b/pkgs/development/libraries/haskell/X11-xft/default.nix
@@ -3,8 +3,8 @@
cabal.mkDerivation (self: {
pname = "X11-xft";
- version = "0.3";
- sha256 = "48892d0d0a90d5b47658877facabf277bf8466b7388eaf6ce163b843432a567d";
+ version = "0.3.1";
+ sha256 = "1lgqb0s2qfwwgbvwxhjbi23rbwamzdi0l0slfr20c3jpcbp3zfjf";
buildDepends = [ utf8String X11 ];
extraLibraries = [ fontconfig freetype pkgconfig ];
pkgconfigDepends = [ libXft ];
diff --git a/pkgs/development/libraries/haskell/blaze-html/default.nix b/pkgs/development/libraries/haskell/blaze-html/default.nix
index 8d1afd8c6fb..6315bade7b0 100644
--- a/pkgs/development/libraries/haskell/blaze-html/default.nix
+++ b/pkgs/development/libraries/haskell/blaze-html/default.nix
@@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "blaze-html";
- version = "0.4.1.6";
- sha256 = "084phxxdy12vi2q084k8w693m94v0pjf29zx2fk1y0n80k05ii4z";
+ version = "0.4.2.0";
+ sha256 = "098y9mzq6jr73lavv7ky58bl3aajvdg72y12varpf3v3rr4l0lb2";
buildDepends = [ blazeBuilder text ];
meta = {
homepage = "http://jaspervdj.be/blaze";
diff --git a/pkgs/development/libraries/haskell/convertible-text/default.nix b/pkgs/development/libraries/haskell/convertible-text/default.nix
new file mode 100644
index 00000000000..305d589dfb5
--- /dev/null
+++ b/pkgs/development/libraries/haskell/convertible-text/default.nix
@@ -0,0 +1,20 @@
+{ cabal, attempt, text, time }:
+
+cabal.mkDerivation (self: {
+ pname = "convertible-text";
+ version = "0.3.0.10";
+ sha256 = "1hi7rqijay37b5msyzqqgvkvrsdpj9p96ajxmyk4vm7nnk5dfhbp";
+ isLibrary = true;
+ isExecutable = true;
+ buildDepends = [ attempt text time ];
+ meta = {
+ homepage = "http://github.com/snoyberg/convertible/tree/text";
+ description = "Typeclasses and instances for converting between types";
+ license = self.stdenv.lib.licenses.bsd3;
+ platforms = self.ghc.meta.platforms;
+ maintainers = [
+ self.stdenv.lib.maintainers.andres
+ self.stdenv.lib.maintainers.simons
+ ];
+ };
+})
diff --git a/pkgs/development/libraries/haskell/criterion/default.nix b/pkgs/development/libraries/haskell/criterion/default.nix
index 0a7f23a38ac..f567569a6f6 100644
--- a/pkgs/development/libraries/haskell/criterion/default.nix
+++ b/pkgs/development/libraries/haskell/criterion/default.nix
@@ -1,13 +1,13 @@
-{ cabal, deepseq, mtl, mwcRandom, parsec, statistics, time, vector
-, vectorAlgorithms
+{ cabal, aeson, deepseq, mtl, mwcRandom, parsec, statistics, time
+, vector, vectorAlgorithms
}:
cabal.mkDerivation (self: {
pname = "criterion";
- version = "0.5.0.10";
- sha256 = "0sd289s7wnyg0p37j327hv55aw4a18bdv56z26v4qi3j8p2fbpbj";
+ version = "0.5.1.0";
+ sha256 = "0v43dm1d84zvn32q89dq0nh4dvqr4r6fjdzwcjac0mjics3iy29d";
buildDepends = [
- deepseq mtl mwcRandom parsec statistics time vector
+ aeson deepseq mtl mwcRandom parsec statistics time vector
vectorAlgorithms
];
meta = {
diff --git a/pkgs/development/libraries/haskell/data-object-yaml/default.nix b/pkgs/development/libraries/haskell/data-object-yaml/default.nix
new file mode 100644
index 00000000000..9622c2af6b9
--- /dev/null
+++ b/pkgs/development/libraries/haskell/data-object-yaml/default.nix
@@ -0,0 +1,25 @@
+{ cabal, convertibleText, dataObject, enumerator, failure, text
+, transformers, yaml
+}:
+
+cabal.mkDerivation (self: {
+ pname = "data-object-yaml";
+ version = "0.3.3.5";
+ sha256 = "0ag0rac9j4ipfg9haa63s73sn7zckrpwybcfk2nbg84ix56nv36w";
+ isLibrary = true;
+ isExecutable = true;
+ buildDepends = [
+ convertibleText dataObject enumerator failure text transformers
+ yaml
+ ];
+ meta = {
+ homepage = "http://github.com/snoyberg/data-object-yaml";
+ description = "Serialize data to and from Yaml files";
+ license = self.stdenv.lib.licenses.bsd3;
+ platforms = self.ghc.meta.platforms;
+ maintainers = [
+ self.stdenv.lib.maintainers.andres
+ self.stdenv.lib.maintainers.simons
+ ];
+ };
+})
diff --git a/pkgs/development/libraries/haskell/data-object/default.nix b/pkgs/development/libraries/haskell/data-object/default.nix
new file mode 100644
index 00000000000..2c774c8c79f
--- /dev/null
+++ b/pkgs/development/libraries/haskell/data-object/default.nix
@@ -0,0 +1,18 @@
+{ cabal, failure, text, time }:
+
+cabal.mkDerivation (self: {
+ pname = "data-object";
+ version = "0.3.1.7";
+ sha256 = "0b4jai09nx3h2vfj5f2q1wp0wldvkjygyzkgrrc6hnsfx2qv8qf7";
+ buildDepends = [ failure text time ];
+ meta = {
+ homepage = "http://github.com/snoyberg/data-object/tree/master";
+ description = "Represent hierachichal structures, called objects in JSON";
+ license = self.stdenv.lib.licenses.bsd3;
+ platforms = self.ghc.meta.platforms;
+ maintainers = [
+ self.stdenv.lib.maintainers.andres
+ self.stdenv.lib.maintainers.simons
+ ];
+ };
+})
diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix
index d9a8b38730a..856949200e0 100644
--- a/pkgs/development/libraries/haskell/hakyll/default.nix
+++ b/pkgs/development/libraries/haskell/hakyll/default.nix
@@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "hakyll";
- version = "3.2.0.7";
- sha256 = "1p06596yfsa0lk5ipdxm1b8j81aph2k30pm2g6ghw6k7fglklyl5";
+ version = "3.2.0.8";
+ sha256 = "1yp01g7wzr9qkx3vz7v791gglmr0pg5c6jj076rv118kw0l8n61l";
buildDepends = [
binary blazeHtml cryptohash hamlet mtl pandoc parsec regexBase
regexPcre snapCore snapServer tagsoup time
diff --git a/pkgs/development/libraries/haskell/happstack/happstack-util.nix b/pkgs/development/libraries/haskell/happstack/happstack-util.nix
index de4c1b9990c..faeb174f251 100644
--- a/pkgs/development/libraries/haskell/happstack/happstack-util.nix
+++ b/pkgs/development/libraries/haskell/happstack/happstack-util.nix
@@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "happstack-util";
- version = "6.0.0";
- sha256 = "06qla74kb58q0rvlfa9k16s4crnylq99hm80xx4phlddyzn0cy4z";
+ version = "6.0.2";
+ sha256 = "03qlnclpg72iflry1xlkd0sxqm6nybvx113la9r0cmsnz17y546a";
isLibrary = true;
isExecutable = true;
buildDepends = [
diff --git a/pkgs/development/libraries/haskell/hledger-chart/default.nix b/pkgs/development/libraries/haskell/hledger-chart/default.nix
index 23dcb192900..1b9d0eb6f55 100644
--- a/pkgs/development/libraries/haskell/hledger-chart/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-chart/default.nix
@@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "hledger-chart";
- version = "0.15.2";
- sha256 = "1cs4m6lhpqib2rhpvyrw5319mjqw8cwlin7734m7yndjj8li8rcx";
+ version = "0.16";
+ sha256 = "05njn30xxnjxigvz6sjhm1ks595f9y7ndw3il1grh09rhvgp42f7";
isLibrary = false;
isExecutable = true;
buildDepends = [
diff --git a/pkgs/development/libraries/haskell/hledger-lib/default.nix b/pkgs/development/libraries/haskell/hledger-lib/default.nix
index 032e7caa5a8..16dc72f3450 100644
--- a/pkgs/development/libraries/haskell/hledger-lib/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-lib/default.nix
@@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "hledger-lib";
- version = "0.15.2";
- sha256 = "1if20197nyg1as6v1c4a0js694zg213nf7rhfhv2a46af58n0bgq";
+ version = "0.16";
+ sha256 = "095hghg7b6x355yfd3xcp8cngl94k8qbl5x7qm12ncin9dsmz8h8";
buildDepends = [
cmdargs HUnit mtl parsec regexpr safe split time utf8String
];
diff --git a/pkgs/development/libraries/haskell/hledger-vty/default.nix b/pkgs/development/libraries/haskell/hledger-vty/default.nix
index 51d2f0af1af..5cd816c5ddf 100644
--- a/pkgs/development/libraries/haskell/hledger-vty/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-vty/default.nix
@@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "hledger-vty";
- version = "0.15.2";
- sha256 = "0sii9psh1mm5f8w782bv2m5rxn29q23v17avhw0x5ssm9zy9yxqd";
+ version = "0.16";
+ sha256 = "161ziq4vwg6wsxijq065g1dpfnvcpxzzbarsj7znbqq4gs02mxx2";
isLibrary = false;
isExecutable = true;
buildDepends = [ cmdargs hledger hledgerLib HUnit safe time vty ];
diff --git a/pkgs/development/libraries/haskell/hledger-web/default.nix b/pkgs/development/libraries/haskell/hledger-web/default.nix
index 7dad816d240..2c3affc9c62 100644
--- a/pkgs/development/libraries/haskell/hledger-web/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-web/default.nix
@@ -1,19 +1,23 @@
-{ cabal, aeson, cmdargs, failure, fileEmbed, hamlet, hledger
-, hledgerLib, HUnit, ioStorage, parsec, regexpr, safe, text, time
-, transformers, wai, waiExtra, warp, yesodCore, yesodForm
-, yesodJson, yesodStatic
+{ cabal, aesonNative, blazeHtml, clientsession, cmdargs, dataObject
+, dataObjectYaml, failure, fileEmbed, hamlet, hledger, hledgerLib
+, HUnit, ioStorage, parsec, regexpr, safe, shakespeareCss
+, shakespeareJs, shakespeareText, text, time, transformers, wai
+, waiExtra, warp, yesod, yesodCore, yesodForm, yesodJson
+, yesodStatic
}:
cabal.mkDerivation (self: {
pname = "hledger-web";
- version = "0.15.3";
- sha256 = "1z2pimxz2ykfb89qwp6cil4nljn8pcz8n7pjhvk948zsd96n2i6f";
+ version = "0.16";
+ sha256 = "1564w1619s08q5c1zx8i8z488zis13a8d6n4cnyha9ci95p1c89j";
isLibrary = true;
isExecutable = true;
buildDepends = [
- aeson cmdargs failure fileEmbed hamlet hledger hledgerLib HUnit
- ioStorage parsec regexpr safe text time transformers wai waiExtra
- warp yesodCore yesodForm yesodJson yesodStatic
+ aesonNative blazeHtml clientsession cmdargs dataObject
+ dataObjectYaml failure fileEmbed hamlet hledger hledgerLib HUnit
+ ioStorage parsec regexpr safe shakespeareCss shakespeareJs
+ shakespeareText text time transformers wai waiExtra warp yesod
+ yesodCore yesodForm yesodJson yesodStatic
];
meta = {
homepage = "http://hledger.org";
diff --git a/pkgs/development/libraries/haskell/hledger/default.nix b/pkgs/development/libraries/haskell/hledger/default.nix
index 080419d85e5..471e410553a 100644
--- a/pkgs/development/libraries/haskell/hledger/default.nix
+++ b/pkgs/development/libraries/haskell/hledger/default.nix
@@ -4,8 +4,8 @@
cabal.mkDerivation (self: {
pname = "hledger";
- version = "0.15.2";
- sha256 = "0gja0jvr8v9s1608w45rg1dwhj48yls59shqcs4z936xdg69l42w";
+ version = "0.16";
+ sha256 = "0wz4g67ilxj741j8d7amssa6dr0xrdfghwmhzwlcp1fj4a5a44c8";
isLibrary = true;
isExecutable = true;
buildDepends = [
diff --git a/pkgs/development/libraries/haskell/network/2.3.0.6.nix b/pkgs/development/libraries/haskell/network/2.3.0.6.nix
new file mode 100644
index 00000000000..a62a0f59773
--- /dev/null
+++ b/pkgs/development/libraries/haskell/network/2.3.0.6.nix
@@ -0,0 +1,18 @@
+{ cabal, parsec }:
+
+cabal.mkDerivation (self: {
+ pname = "network";
+ version = "2.3.0.6";
+ sha256 = "0xdqcf7zfxpa7qmvwzxf11y61b6xn4v2jjrqpibr2pfqqr0p3gkw";
+ buildDepends = [ parsec ];
+ meta = {
+ homepage = "http://github.com/haskell/network";
+ description = "Low-level networking interface";
+ license = self.stdenv.lib.licenses.bsd3;
+ platforms = self.ghc.meta.platforms;
+ maintainers = [
+ self.stdenv.lib.maintainers.andres
+ self.stdenv.lib.maintainers.simons
+ ];
+ };
+})
diff --git a/pkgs/development/libraries/haskell/web-routes/default.nix b/pkgs/development/libraries/haskell/web-routes/default.nix
index aa5321c7f5f..84ba6ed7fc6 100644
--- a/pkgs/development/libraries/haskell/web-routes/default.nix
+++ b/pkgs/development/libraries/haskell/web-routes/default.nix
@@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "web-routes";
- version = "0.25.2";
- sha256 = "0gspjvk5859zwg55q8fjyz4a0d2p6lf2qwa41b8s6kcqi38nnp08";
+ version = "0.25.3";
+ sha256 = "09bqz7vn2050jr67m3rrqi0krfxa9n1fxm9rgi3c837g522nb4kk";
buildDepends = [ mtl network parsec utf8String ];
meta = {
description = "Library for maintaining correctness and composability of URLs within an application";
diff --git a/pkgs/development/libraries/haskell/yaml/default.nix b/pkgs/development/libraries/haskell/yaml/default.nix
new file mode 100644
index 00000000000..fce7026c0ca
--- /dev/null
+++ b/pkgs/development/libraries/haskell/yaml/default.nix
@@ -0,0 +1,20 @@
+{ cabal, enumerator, transformers }:
+
+cabal.mkDerivation (self: {
+ pname = "yaml";
+ version = "0.4.1.1";
+ sha256 = "0qm7kfvi99m80m2lsmn98ssr2sfsw1rbbmzyjlg7bmvbaxsyw0b9";
+ isLibrary = true;
+ isExecutable = true;
+ buildDepends = [ enumerator transformers ];
+ meta = {
+ homepage = "http://github.com/snoyberg/yaml/";
+ description = "Low-level binding to the libyaml C library";
+ license = self.stdenv.lib.licenses.bsd3;
+ platforms = self.ghc.meta.platforms;
+ maintainers = [
+ self.stdenv.lib.maintainers.andres
+ self.stdenv.lib.maintainers.simons
+ ];
+ };
+})
diff --git a/pkgs/development/libraries/icu/default.nix b/pkgs/development/libraries/icu/default.nix
index c15bbe2491c..0474b79a847 100644
--- a/pkgs/development/libraries/icu/default.nix
+++ b/pkgs/development/libraries/icu/default.nix
@@ -2,7 +2,7 @@
let
pname = "icu4c";
- version = "4.6";
+ version = "4.8.1";
in
stdenv.mkDerivation {
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://download.icu-project.org/files/${pname}/${version}/${pname}-"
+ (stdenv.lib.replaceChars ["."] ["_"] version) + "-src.tgz";
- sha256 = "1z6zklqdf6pq7fckk8ar4vmfrnw79bih6yc8gwc7k2vx2alav8dm";
+ sha256 = "13zq190gl54zr84f0k48w9knarjsb966jkailyy06yhqjipcv90r";
};
postUnpack = "
diff --git a/pkgs/development/libraries/libcaca/default.nix b/pkgs/development/libraries/libcaca/default.nix
index 4c11a3a1fe3..b8410380aba 100644
--- a/pkgs/development/libraries/libcaca/default.nix
+++ b/pkgs/development/libraries/libcaca/default.nix
@@ -1,11 +1,11 @@
{stdenv, fetchurl, ncurses}:
stdenv.mkDerivation rec {
- name = "libcaca-0.99.beta16";
+ name = "libcaca-0.99.beta17";
src = fetchurl {
- url = "http://caca.zoy.org/raw-attachment/wiki/libcaca/${name}.tar.gz";
- sha256 = "1k2anqc9jxvlyar6ximf9l55xzzhgwdbjbclpj64vg6lpqf96k6a";
+ url = "http://caca.zoy.org/files/libcaca/${name}.tar.gz";
+ sha256 = "1mpicj3xf4d0mf8papb1zbks5yzi4lnj6yh5cvpq7sb176gawmb3";
};
configureFlags = "--disable-x11 --disable-imlib2 --disable-doc";
diff --git a/pkgs/development/libraries/policykit/default.nix b/pkgs/development/libraries/policykit/default.nix
index 41b6839f0c2..f494710be63 100644
--- a/pkgs/development/libraries/policykit/default.nix
+++ b/pkgs/development/libraries/policykit/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
meta = {
homepage = http://www.freedesktop.org/wiki/Software/PolicyKit;
description = "A toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes (obsolete)";
+ platforms = stdenv.lib.platforms.linux;
};
}
diff --git a/pkgs/development/libraries/qt-4.x/4.7/default.nix b/pkgs/development/libraries/qt-4.x/4.7/default.nix
index 67725315aa5..47832a114b4 100644
--- a/pkgs/development/libraries/qt-4.x/4.7/default.nix
+++ b/pkgs/development/libraries/qt-4.x/4.7/default.nix
@@ -9,7 +9,7 @@
}:
let
- v = "4.7.3";
+ v = "4.7.4";
in
stdenv.mkDerivation rec {
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${v}.tar.gz";
- sha256 = "0zlk0lcrkhi8wdb5j2lqz3nclk07blbiial7lzs03708kpb6yayh";
+ sha256 = "07i283si8rckdsg3h9a4sp213l16hgjrl7cpzclrjvx4x2y5w6cp";
};
preConfigure =
diff --git a/pkgs/desktops/kde-4.7/support/soprano/default.nix b/pkgs/development/libraries/soprano/default.nix
similarity index 85%
rename from pkgs/desktops/kde-4.7/support/soprano/default.nix
rename to pkgs/development/libraries/soprano/default.nix
index 9dc6d1d1de6..49e6e6b96df 100644
--- a/pkgs/desktops/kde-4.7/support/soprano/default.nix
+++ b/pkgs/development/libraries/soprano/default.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
};
patches =
- [ (fetchurl {
+ [ (fetchurl { # Applied upstream, remove if upgrading
url = https://git.reviewboard.kde.org/r/102466/diff/raw/;
name = "soprano-virtuoso-restart.patch";
sha256 = "0jk038fp7ii6847mbxdajhhc7f6ap6lriaklxcqqxf6ddj37gf3y";
@@ -18,7 +18,9 @@ stdenv.mkDerivation rec {
];
# We disable the Java backend, since we do not need them and they make the closure size much bigger
- buildInputs = [ cmake qt4 clucene_core librdf_redland libiodbc ];
+ buildInputs = [ qt4 clucene_core librdf_redland libiodbc ];
+
+ buildNativeInputs = [ cmake ];
meta = {
homepage = http://soprano.sourceforge.net/;
diff --git a/pkgs/desktops/kde-4.7/support/soprano/find-virtuoso.patch b/pkgs/development/libraries/soprano/find-virtuoso.patch
similarity index 79%
rename from pkgs/desktops/kde-4.7/support/soprano/find-virtuoso.patch
rename to pkgs/development/libraries/soprano/find-virtuoso.patch
index 649f22a3b74..7da53d6f633 100644
--- a/pkgs/desktops/kde-4.7/support/soprano/find-virtuoso.patch
+++ b/pkgs/development/libraries/soprano/find-virtuoso.patch
@@ -2,15 +2,23 @@ From: Yury G. Kudryashov
Subject: [PATCH] Find virtuoso if virtuoso-t is in PATH
---
- backends/virtuoso/virtuosobackend.cpp | 29 ++++++++++++++++++++---------
+ backends/virtuoso/virtuosobackend.cpp | 31 ++++++++++++++++++++++---------
backends/virtuoso/virtuosobackend.h | 2 +-
- 2 files changed, 21 insertions(+), 10 deletions(-)
+ 2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/backends/virtuoso/virtuosobackend.cpp b/backends/virtuoso/virtuosobackend.cpp
-index c83605d..c24854e 100644
+index c83605d..8c30c81 100644
--- a/backends/virtuoso/virtuosobackend.cpp
+++ b/backends/virtuoso/virtuosobackend.cpp
-@@ -188,19 +188,19 @@ namespace {
+@@ -27,6 +27,7 @@
+ #include "odbcconnectionpool.h"
+
+ #include "sopranodirs.h"
++#include "soprano-config.h"
+
+ #include
+ #include
+@@ -188,19 +189,19 @@ namespace {
bool Soprano::Virtuoso::BackendPlugin::isAvailable() const
{
@@ -37,7 +45,7 @@ index c83605d..c24854e 100644
QString vs = determineVirtuosoVersion( virtuosoBin );
if ( vs.isEmpty() ) {
qDebug() << Q_FUNC_INFO << "Failed to determine version of the Virtuoso server at" << virtuosoBin;
-@@ -217,9 +217,20 @@ bool Soprano::Virtuoso::BackendPlugin::isAvailable() const
+@@ -217,9 +218,21 @@ bool Soprano::Virtuoso::BackendPlugin::isAvailable() const
#ifndef Q_OS_WIN
@@ -53,8 +61,9 @@ index c83605d..c24854e 100644
+
+ QDir virtuosoBinDir = QFileInfo(virtuosoBin).absoluteDir();
+ return Soprano::findLibraryPath( "virtodbc_r",
-+ QStringList() << virtuosoBinDir.absolutePath()
-+ << virtuosoBinDir.absoluteFilePath("../lib"),
++ QStringList()
++ << virtuosoBinDir.absoluteFilePath("../lib"SOPRANO_LIB_SUFFIX)
++ << virtuosoBinDir.absoluteFilePath("../lib"),
+ QStringList() << QLatin1String( "virtuoso/plugins/" ) <<
+ QLatin1String( "odbc/" ) );
}
@@ -74,4 +83,4 @@ index 3971b83..0807e5d 100644
};
}
--
-tg: (432b73f..) t/find-virtuoso (depends on: master)
+tg: (da390be..) t/find-virtuoso (depends on: master)
diff --git a/pkgs/development/tools/documentation/haddock/2.4.2.nix b/pkgs/development/tools/documentation/haddock/2.4.2.nix
index 226a4fd676e..3abd66fe534 100644
--- a/pkgs/development/tools/documentation/haddock/2.4.2.nix
+++ b/pkgs/development/tools/documentation/haddock/2.4.2.nix
@@ -1,4 +1,4 @@
-{ cabal, ghcPaths }:
+{ cabal, alex, ghcPaths, happy }:
cabal.mkDerivation (self: {
pname = "haddock";
@@ -7,6 +7,7 @@ cabal.mkDerivation (self: {
isLibrary = true;
isExecutable = true;
buildDepends = [ ghcPaths ];
+ buildTools = [ alex happy ];
meta = {
homepage = "http://www.haskell.org/haddock/";
description = "A documentation-generation tool for Haskell libraries";
diff --git a/pkgs/development/tools/documentation/haddock/2.9.3.nix b/pkgs/development/tools/documentation/haddock/2.9.3.nix
new file mode 100644
index 00000000000..1d12654b33f
--- /dev/null
+++ b/pkgs/development/tools/documentation/haddock/2.9.3.nix
@@ -0,0 +1,21 @@
+{ cabal, alex, ghcPaths, happy, xhtml }:
+
+cabal.mkDerivation (self: {
+ pname = "haddock";
+ version = "2.9.3";
+ sha256 = "0r3yp5s7qv9hmwwfz8rxbwj39qpysgyg53ka4alaxnfma0a96iyj";
+ isLibrary = true;
+ isExecutable = true;
+ buildDepends = [ ghcPaths xhtml ];
+ buildTools = [ alex happy ];
+ meta = {
+ homepage = "http://www.haskell.org/haddock/";
+ description = "A documentation-generation tool for Haskell libraries";
+ license = self.stdenv.lib.licenses.bsd3;
+ platforms = self.ghc.meta.platforms;
+ maintainers = [
+ self.stdenv.lib.maintainers.andres
+ self.stdenv.lib.maintainers.simons
+ ];
+ };
+})
diff --git a/pkgs/development/tools/haskell/cabal-ghci/default.nix b/pkgs/development/tools/haskell/cabal-ghci/default.nix
index ad452a663e8..b55127e43bc 100644
--- a/pkgs/development/tools/haskell/cabal-ghci/default.nix
+++ b/pkgs/development/tools/haskell/cabal-ghci/default.nix
@@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "cabal-ghci";
- version = "0.1.1";
- sha256 = "09r66fv8ncsdj90zrhg4srxhmbhmf7q61kvfc39x4jbyskgciqms";
+ version = "0.2.0";
+ sha256 = "0920q103g626f8syvn73bwqnix8x6q58xyazys6yinhr7dgi2x6m";
isLibrary = true;
isExecutable = true;
meta = {
diff --git a/pkgs/development/tools/haskell/hlint/default.nix b/pkgs/development/tools/haskell/hlint/default.nix
index da117157f22..53a60968860 100644
--- a/pkgs/development/tools/haskell/hlint/default.nix
+++ b/pkgs/development/tools/haskell/hlint/default.nix
@@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "hlint";
- version = "1.8.15";
- sha256 = "1hi2qapi8lb7cawjzvpknp8qvsnfw3glxyyd5m2lbp3rvkx0d6kr";
+ version = "1.8.17";
+ sha256 = "0p2sd24zi4a9fynib03dll8jbcc7izbmknfxv80v9j3lb2p8qj5h";
isLibrary = true;
isExecutable = true;
buildDepends = [
diff --git a/pkgs/development/tools/misc/cpphs/default.nix b/pkgs/development/tools/misc/cpphs/default.nix
index 6d0ca9884d6..702c88d2ddb 100644
--- a/pkgs/development/tools/misc/cpphs/default.nix
+++ b/pkgs/development/tools/misc/cpphs/default.nix
@@ -2,8 +2,8 @@
cabal.mkDerivation (self: {
pname = "cpphs";
- version = "1.12";
- sha256 = "18c8yx8y54b2q086sqlp4vhslkb7mm1gry1f13mki43x93kd1vdj";
+ version = "1.13.1";
+ sha256 = "0k5p9gqnalll3w1962dwydnygk25h777bic2gvdh8i8hhyz5fsx2";
isLibrary = true;
isExecutable = true;
meta = {
diff --git a/pkgs/os-specific/linux/aufs3-util/default.nix b/pkgs/os-specific/linux/aufs3-util/default.nix
new file mode 100644
index 00000000000..00c3e99c457
--- /dev/null
+++ b/pkgs/os-specific/linux/aufs3-util/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchgit, kernel, aufs3 }:
+
+stdenv.mkDerivation {
+ name = "aufs3-util-${aufs3.patch.version}";
+
+ src = fetchgit {
+ url = git://aufs.git.sourceforge.net/gitroot/aufs/aufs-util.git;
+ rev = aufs3.patch.utilRev;
+ sha256 = aufs3.patch.utilHash;
+ };
+
+ buildInputs = [ aufs3 ];
+
+ makeFlags =
+ [ "KDIR=${kernel}/lib/modules/${kernel.modDirVersion}/build"
+ "Install=install"
+ "DESTDIR=$(out)"
+ ];
+
+ postInstall =
+ ''
+ mv $out/usr/* $out
+ rmdir $out/usr
+
+ cp aufs.shlib $out/lib/
+
+ substituteInPlace $out/bin/aubrsync \
+ --replace /sbin/mount $out/sbin/mount \
+ --replace /usr/lib/aufs.shlib $out/lib/aufs.shlib
+ '';
+
+ meta = {
+ description = "Utilities for AUFS3";
+ homepage = http://aufs.sourceforge.net/;
+ maintainers = [ stdenv.lib.maintainers.eelco
+ stdenv.lib.maintainers.shlevy ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/pkgs/os-specific/linux/aufs3/default.nix b/pkgs/os-specific/linux/aufs3/default.nix
new file mode 100644
index 00000000000..bf73e6510f7
--- /dev/null
+++ b/pkgs/os-specific/linux/aufs3/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, kernel, perl }:
+
+let
+
+ aufsPredicate = x:
+ if x ? features then
+ (if x.features ? aufs3 then x.features.aufs3 else false)
+ else false;
+ featureAbort = abort "This kernel does not have aufs 3 support";
+ patch = stdenv.lib.findFirst aufsPredicate featureAbort kernel.kernelPatches;
+
+in
+
+stdenv.mkDerivation {
+ name = "aufs3-${patch.version}";
+
+ src = patch.patch.src;
+
+ buildInputs = [ perl ];
+
+ makeFlags = "KDIR=${kernel}/lib/modules/${kernel.modDirVersion}/build";
+
+ installPhase =
+ ''
+ ensureDir $out/lib/modules/${kernel.modDirVersion}/misc
+ cp -v aufs.ko $out/lib/modules/${kernel.modDirVersion}/misc
+
+ # Install the headers because aufs3-util requires them.
+ ensureDir $out/include/linux
+ cp -v usr/include/linux/aufs_type.h $out/include/linux
+ '';
+
+ passthru = { inherit patch; };
+ meta = {
+ description = "Another Unionfs implementation for Linux (third generation)";
+ homepage = http://aufs.sourceforge.net/;
+ maintainers = [ stdenv.lib.maintainers.eelco
+ stdenv.lib.maintainers.raskin
+ stdenv.lib.maintainers.shlevy ];
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/pkgs/os-specific/linux/kernel/efi-stub.patch b/pkgs/os-specific/linux/kernel/efi-stub.patch
new file mode 100644
index 00000000000..581a9fff27f
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/efi-stub.patch
@@ -0,0 +1,1778 @@
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index 6a47bb2..d40c876 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -1466,6 +1466,13 @@ config EFI
+ resultant kernel should continue to boot on existing non-EFI
+ platforms.
+
++config EFI_STUB
++ bool "EFI stub support"
++ depends on EFI
++ ---help---
++ This kernel feature allows a bzImage to be loaded directly
++ by EFI firmware without the use of a bootloader.
++
+ config SECCOMP
+ def_bool y
+ prompt "Enable seccomp to safely compute untrusted bytecode"
+diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
+index 09664ef..b123b9a 100644
+--- a/arch/x86/boot/compressed/Makefile
++++ b/arch/x86/boot/compressed/Makefile
+@@ -23,7 +23,15 @@ LDFLAGS_vmlinux := -T
+
+ hostprogs-y := mkpiggy
+
+-$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/string.o $(obj)/cmdline.o $(obj)/early_serial_console.o $(obj)/piggy.o FORCE
++VMLINUX_OBJS = $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o \
++ $(obj)/string.o $(obj)/cmdline.o $(obj)/early_serial_console.o \
++ $(obj)/piggy.o
++
++ifeq ($(CONFIG_EFI_STUB), y)
++ VMLINUX_OBJS += $(obj)/eboot.o $(obj)/efi_stub_$(BITS).o
++endif
++
++$(obj)/vmlinux: $(VMLINUX_OBJS) FORCE
+ $(call if_changed,ld)
+ @:
+
+diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
+new file mode 100644
+index 0000000..c1b494d
+--- /dev/null
++++ b/arch/x86/boot/compressed/eboot.c
+@@ -0,0 +1,975 @@
++/* -----------------------------------------------------------------------
++ *
++ * Copyright 2011 Intel Corporation; author Matt Fleming
++ *
++ * This file is part of the Linux kernel, and is made available under
++ * the terms of the GNU General Public License version 2.
++ *
++ * ----------------------------------------------------------------------- */
++
++#include
++#include
++#include
++#include
++
++#define SEG_TYPE_DATA (0 << 3)
++#define SEG_TYPE_READ_WRITE (1 << 1)
++#define SEG_TYPE_CODE (1 << 3)
++#define SEG_TYPE_EXEC_READ (1 << 1)
++#define SEG_TYPE_TSS ((1 << 3) | (1 << 0))
++#define SEG_OP_SIZE_32BIT (1 << 0)
++#define SEG_GRANULARITY_4KB (1 << 0)
++
++#define DESC_TYPE_CODE_DATA (1 << 0)
++
++#define EFI_PAGE_SIZE (1UL << EFI_PAGE_SHIFT)
++
++#define PIXEL_RGB_RESERVED_8BIT_PER_COLOR 0
++#define PIXEL_BGR_RESERVED_8BIT_PER_COLOR 1
++#define PIXEL_BIT_MASK 2
++#define PIXEL_BLT_ONLY 3
++#define PIXEL_FORMAT_MAX 4
++
++typedef struct {
++ u32 red_mask;
++ u32 green_mask;
++ u32 blue_mask;
++ u32 reserved_mask;
++} efi_pixel_bitmask_t;
++
++typedef struct {
++ u32 version;
++ u32 horizontal_resolution;
++ u32 vertical_resolution;
++ int pixel_format;
++ efi_pixel_bitmask_t pixel_information;
++ u32 pixels_per_scan_line;
++} __attribute__((packed)) efi_graphics_output_mode_information_t;
++
++typedef struct {
++ u32 max_mode;
++ u32 mode;
++ unsigned long info;
++ unsigned long size_of_info;
++ u64 frame_buffer_base;
++ unsigned long frame_buffer_size;
++} __attribute__((packed)) efi_graphics_output_protocol_mode_t;
++
++typedef struct {
++ void *query_mode;
++ unsigned long set_mode;
++ unsigned long blt;
++ efi_graphics_output_protocol_mode_t *mode;
++} efi_graphics_output_protocol_t;
++
++typedef struct {
++ void *get_mode;
++ void *set_mode;
++ void *blt;
++} efi_uga_draw_protocol_t;
++
++static efi_system_table_t *sys_table;
++
++static efi_status_t low_alloc(unsigned long size, unsigned long align,
++ unsigned long *addr)
++{
++ unsigned long map_size, key, desc_size;
++ efi_memory_desc_t *map;
++ efi_status_t status;
++ unsigned long nr_pages;
++ u32 desc_version;
++ int i;
++
++ nr_pages = round_up(size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
++
++ map_size = sizeof(*map) * 32;
++
++again:
++ /*
++ * Add an additional efi_memory_desc_t because we're doing an
++ * allocation which may be in a new descriptor region.
++ */
++ map_size += sizeof(*map);
++ status = efi_call_phys3(sys_table->boottime->allocate_pool,
++ EFI_LOADER_DATA, map_size, (void **)&map);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ status = efi_call_phys5(sys_table->boottime->get_memory_map, &map_size,
++ map, &key, &desc_size, &desc_version);
++ if (status == EFI_BUFFER_TOO_SMALL) {
++ efi_call_phys1(sys_table->boottime->free_pool, map);
++ goto again;
++ }
++
++ if (status != EFI_SUCCESS)
++ goto free_pool;
++
++ for (i = 0; i < map_size / desc_size; i++) {
++ efi_memory_desc_t *desc;
++ u64 start, end;
++
++ desc = (efi_memory_desc_t *)((unsigned long)map + (i * desc_size));
++
++ if (desc->type != EFI_CONVENTIONAL_MEMORY)
++ continue;
++
++ if (desc->num_pages < nr_pages)
++ continue;
++
++ start = desc->phys_addr;
++ end = start + desc->num_pages * (1UL << EFI_PAGE_SHIFT);
++
++ /*
++ * Don't allocate at 0x0. It will confuse code that
++ * checks pointers against NULL. Skip the first 8
++ * bytes so we start at a nice even number.
++ */
++ if (start == 0x0) {
++ start += 8;
++
++ /* Check for tiny memory regions */
++ if (start >= end)
++ continue;
++ }
++
++ start = round_up(start, align);
++ if ((start + size) > end)
++ continue;
++
++ status = efi_call_phys4(sys_table->boottime->allocate_pages,
++ EFI_ALLOCATE_ADDRESS, EFI_LOADER_DATA,
++ nr_pages, &start);
++ if (status == EFI_SUCCESS) {
++ *addr = start;
++ break;
++ }
++ }
++
++ if (i == map_size / desc_size)
++ status = EFI_NOT_FOUND;
++
++free_pool:
++ efi_call_phys1(sys_table->boottime->free_pool, map);
++fail:
++ return status;
++}
++
++static void low_free(unsigned long size, unsigned long addr)
++{
++ unsigned long nr_pages;
++
++ nr_pages = round_up(size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
++ efi_call_phys2(sys_table->boottime->free_pages, addr, size);
++}
++
++static void find_bits(unsigned long mask, u8 *pos, u8 *size)
++{
++ u8 first, len;
++
++ first = 0;
++ len = 0;
++
++ if (mask) {
++ while (!(mask & 0x1)) {
++ mask = mask >> 1;
++ first++;
++ }
++
++ while (mask & 0x1) {
++ mask = mask >> 1;
++ len++;
++ }
++ }
++
++ *pos = first;
++ *size = len;
++}
++
++/*
++ * See if we have Graphics Output Protocol
++ */
++static efi_status_t setup_gop(struct screen_info *si, efi_guid_t *proto,
++ unsigned long size)
++{
++ efi_graphics_output_protocol_t *gop, *first_gop;
++ efi_pixel_bitmask_t pixel_info;
++ unsigned long nr_gops;
++ efi_status_t status;
++ void **gop_handle;
++ u16 width, height;
++ u32 fb_base, fb_size;
++ u32 pixels_per_scan_line;
++ int pixel_format;
++ int i;
++
++ status = efi_call_phys3(sys_table->boottime->allocate_pool,
++ EFI_LOADER_DATA, size, &gop_handle);
++ if (status != EFI_SUCCESS)
++ return status;
++
++ status = efi_call_phys5(sys_table->boottime->locate_handle,
++ EFI_LOCATE_BY_PROTOCOL, proto,
++ NULL, &size, gop_handle);
++ if (status != EFI_SUCCESS)
++ goto free_handle;
++
++ first_gop = NULL;
++
++ nr_gops = size / sizeof(void *);
++ for (i = 0; i < nr_gops; i++) {
++ efi_graphics_output_mode_information_t *info;
++ efi_guid_t pciio_proto = EFI_PCI_IO_PROTOCOL_GUID;
++ void *pciio;
++ void *h = gop_handle[i];
++
++ status = efi_call_phys3(sys_table->boottime->handle_protocol,
++ h, proto, &gop);
++ if (status != EFI_SUCCESS)
++ continue;
++
++ efi_call_phys3(sys_table->boottime->handle_protocol,
++ h, &pciio_proto, &pciio);
++
++ status = efi_call_phys4(gop->query_mode, gop,
++ gop->mode->mode, &size, &info);
++ if (status == EFI_SUCCESS && (!first_gop || pciio)) {
++ /*
++ * Apple provide GOPs that are not backed by
++ * real hardware (they're used to handle
++ * multiple displays). The workaround is to
++ * search for a GOP implementing the PCIIO
++ * protocol, and if one isn't found, to just
++ * fallback to the first GOP.
++ */
++ width = info->horizontal_resolution;
++ height = info->vertical_resolution;
++ fb_base = gop->mode->frame_buffer_base;
++ fb_size = gop->mode->frame_buffer_size;
++ pixel_format = info->pixel_format;
++ pixel_info = info->pixel_information;
++ pixels_per_scan_line = info->pixels_per_scan_line;
++
++ /*
++ * Once we've found a GOP supporting PCIIO,
++ * don't bother looking any further.
++ */
++ if (pciio)
++ break;
++
++ first_gop = gop;
++ }
++ }
++
++ /* Did we find any GOPs? */
++ if (!first_gop)
++ goto free_handle;
++
++ /* EFI framebuffer */
++ si->orig_video_isVGA = VIDEO_TYPE_EFI;
++
++ si->lfb_width = width;
++ si->lfb_height = height;
++ si->lfb_base = fb_base;
++ si->lfb_size = fb_size;
++ si->pages = 1;
++
++ if (pixel_format == PIXEL_RGB_RESERVED_8BIT_PER_COLOR) {
++ si->lfb_depth = 32;
++ si->lfb_linelength = pixels_per_scan_line * 4;
++ si->red_size = 8;
++ si->red_pos = 0;
++ si->green_size = 8;
++ si->green_pos = 8;
++ si->blue_size = 8;
++ si->blue_pos = 16;
++ si->rsvd_size = 8;
++ si->rsvd_pos = 24;
++ } else if (pixel_format == PIXEL_BGR_RESERVED_8BIT_PER_COLOR) {
++ si->lfb_depth = 32;
++ si->lfb_linelength = pixels_per_scan_line * 4;
++ si->red_size = 8;
++ si->red_pos = 16;
++ si->green_size = 8;
++ si->green_pos = 8;
++ si->blue_size = 8;
++ si->blue_pos = 0;
++ si->rsvd_size = 8;
++ si->rsvd_pos = 24;
++ } else if (pixel_format == PIXEL_BIT_MASK) {
++ find_bits(pixel_info.red_mask, &si->red_pos, &si->red_size);
++ find_bits(pixel_info.green_mask, &si->green_pos,
++ &si->green_size);
++ find_bits(pixel_info.blue_mask, &si->blue_pos, &si->blue_size);
++ find_bits(pixel_info.reserved_mask, &si->rsvd_pos,
++ &si->rsvd_size);
++ si->lfb_depth = si->red_size + si->green_size +
++ si->blue_size + si->rsvd_size;
++ si->lfb_linelength = (pixels_per_scan_line * si->lfb_depth) / 8;
++ } else {
++ si->lfb_depth = 4;
++ si->lfb_linelength = si->lfb_width / 2;
++ si->red_size = 0;
++ si->red_pos = 0;
++ si->green_size = 0;
++ si->green_pos = 0;
++ si->blue_size = 0;
++ si->blue_pos = 0;
++ si->rsvd_size = 0;
++ si->rsvd_pos = 0;
++ }
++
++free_handle:
++ efi_call_phys1(sys_table->boottime->free_pool, gop_handle);
++ return status;
++}
++
++/*
++ * See if we have Universal Graphics Adapter (UGA) protocol
++ */
++static efi_status_t setup_uga(struct screen_info *si, efi_guid_t *uga_proto,
++ unsigned long size)
++{
++ efi_uga_draw_protocol_t *uga, *first_uga;
++ unsigned long nr_ugas;
++ efi_status_t status;
++ u32 width, height;
++ void **uga_handle = NULL;
++ int i;
++
++ status = efi_call_phys3(sys_table->boottime->allocate_pool,
++ EFI_LOADER_DATA, size, &uga_handle);
++ if (status != EFI_SUCCESS)
++ return status;
++
++ status = efi_call_phys5(sys_table->boottime->locate_handle,
++ EFI_LOCATE_BY_PROTOCOL, uga_proto,
++ NULL, &size, uga_handle);
++ if (status != EFI_SUCCESS)
++ goto free_handle;
++
++ first_uga = NULL;
++
++ nr_ugas = size / sizeof(void *);
++ for (i = 0; i < nr_ugas; i++) {
++ efi_guid_t pciio_proto = EFI_PCI_IO_PROTOCOL_GUID;
++ void *handle = uga_handle[i];
++ u32 w, h, depth, refresh;
++ void *pciio;
++
++ status = efi_call_phys3(sys_table->boottime->handle_protocol,
++ handle, uga_proto, &uga);
++ if (status != EFI_SUCCESS)
++ continue;
++
++ efi_call_phys3(sys_table->boottime->handle_protocol,
++ handle, &pciio_proto, &pciio);
++
++ status = efi_call_phys5(uga->get_mode, uga, &w, &h,
++ &depth, &refresh);
++ if (status == EFI_SUCCESS && (!first_uga || pciio)) {
++ width = w;
++ height = h;
++
++ /*
++ * Once we've found a UGA supporting PCIIO,
++ * don't bother looking any further.
++ */
++ if (pciio)
++ break;
++
++ first_uga = uga;
++ }
++ }
++
++ if (!first_uga)
++ goto free_handle;
++
++ /* EFI framebuffer */
++ si->orig_video_isVGA = VIDEO_TYPE_EFI;
++
++ si->lfb_depth = 32;
++ si->lfb_width = width;
++ si->lfb_height = height;
++
++ si->red_size = 8;
++ si->red_pos = 16;
++ si->green_size = 8;
++ si->green_pos = 8;
++ si->blue_size = 8;
++ si->blue_pos = 0;
++ si->rsvd_size = 8;
++ si->rsvd_pos = 24;
++
++
++free_handle:
++ efi_call_phys1(sys_table->boottime->free_pool, uga_handle);
++ return status;
++}
++
++void setup_graphics(struct boot_params *boot_params)
++{
++ efi_guid_t graphics_proto = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
++ struct screen_info *si;
++ efi_guid_t uga_proto = EFI_UGA_PROTOCOL_GUID;
++ efi_status_t status;
++ unsigned long size;
++ void **gop_handle = NULL;
++ void **uga_handle = NULL;
++
++ si = &boot_params->screen_info;
++ memset(si, 0, sizeof(*si));
++
++ size = 0;
++ status = efi_call_phys5(sys_table->boottime->locate_handle,
++ EFI_LOCATE_BY_PROTOCOL, &graphics_proto,
++ NULL, &size, gop_handle);
++ if (status == EFI_BUFFER_TOO_SMALL)
++ status = setup_gop(si, &graphics_proto, size);
++
++ if (status != EFI_SUCCESS) {
++ size = 0;
++ status = efi_call_phys5(sys_table->boottime->locate_handle,
++ EFI_LOCATE_BY_PROTOCOL, &uga_proto,
++ NULL, &size, uga_handle);
++ if (status == EFI_BUFFER_TOO_SMALL)
++ setup_uga(si, &uga_proto, size);
++ }
++}
++
++struct initrd {
++ efi_file_handle_t *handle;
++ u64 size;
++};
++
++/*
++ * Check the cmdline for a LILO-style initrd= arguments.
++ *
++ * We only support loading an initrd from the same filesystem as the
++ * kernel image.
++ */
++static efi_status_t handle_ramdisks(efi_loaded_image_t *image,
++ struct setup_header *hdr)
++{
++ struct initrd *initrds;
++ unsigned long initrd_addr;
++ efi_guid_t fs_proto = EFI_FILE_SYSTEM_GUID;
++ u64 initrd_total;
++ efi_file_io_interface_t *io;
++ efi_file_handle_t *fh;
++ efi_status_t status;
++ int nr_initrds;
++ char *str;
++ int i, j, k;
++
++ initrd_addr = 0;
++ initrd_total = 0;
++
++ str = (char *)(unsigned long)hdr->cmd_line_ptr;
++
++ j = 0; /* See close_handles */
++
++ if (!str || !*str)
++ return EFI_SUCCESS;
++
++ for (nr_initrds = 0; *str; nr_initrds++) {
++ str = strstr(str, "initrd=");
++ if (!str)
++ break;
++
++ str += 7;
++
++ /* Skip any leading slashes */
++ while (*str == '/' || *str == '\\')
++ str++;
++
++ while (*str && *str != ' ' && *str != '\n')
++ str++;
++ }
++
++ if (!nr_initrds)
++ return EFI_SUCCESS;
++
++ status = efi_call_phys3(sys_table->boottime->allocate_pool,
++ EFI_LOADER_DATA,
++ nr_initrds * sizeof(*initrds),
++ &initrds);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ str = (char *)(unsigned long)hdr->cmd_line_ptr;
++ for (i = 0; i < nr_initrds; i++) {
++ struct initrd *initrd;
++ efi_file_handle_t *h;
++ efi_file_info_t *info;
++ efi_char16_t filename[256];
++ unsigned long info_sz;
++ efi_guid_t info_guid = EFI_FILE_INFO_ID;
++ efi_char16_t *p;
++ u64 file_sz;
++
++ str = strstr(str, "initrd=");
++ if (!str)
++ break;
++
++ str += 7;
++
++ initrd = &initrds[i];
++ p = filename;
++
++ /* Skip any leading slashes */
++ while (*str == '/' || *str == '\\')
++ str++;
++
++ while (*str && *str != ' ' && *str != '\n') {
++ if (p >= filename + sizeof(filename))
++ break;
++
++ *p++ = *str++;
++ }
++
++ *p = '\0';
++
++ /* Only open the volume once. */
++ if (!i) {
++ efi_boot_services_t *boottime;
++
++ boottime = sys_table->boottime;
++
++ status = efi_call_phys3(boottime->handle_protocol,
++ image->device_handle, &fs_proto, &io);
++ if (status != EFI_SUCCESS)
++ goto free_initrds;
++
++ status = efi_call_phys2(io->open_volume, io, &fh);
++ if (status != EFI_SUCCESS)
++ goto free_initrds;
++ }
++
++ status = efi_call_phys5(fh->open, fh, &h, filename,
++ EFI_FILE_MODE_READ, (u64)0);
++ if (status != EFI_SUCCESS)
++ goto close_handles;
++
++ initrd->handle = h;
++
++ info_sz = 0;
++ status = efi_call_phys4(h->get_info, h, &info_guid,
++ &info_sz, NULL);
++ if (status != EFI_BUFFER_TOO_SMALL)
++ goto close_handles;
++
++grow:
++ status = efi_call_phys3(sys_table->boottime->allocate_pool,
++ EFI_LOADER_DATA, info_sz, &info);
++ if (status != EFI_SUCCESS)
++ goto close_handles;
++
++ status = efi_call_phys4(h->get_info, h, &info_guid,
++ &info_sz, info);
++ if (status == EFI_BUFFER_TOO_SMALL) {
++ efi_call_phys1(sys_table->boottime->free_pool, info);
++ goto grow;
++ }
++
++ file_sz = info->file_size;
++ efi_call_phys1(sys_table->boottime->free_pool, info);
++
++ if (status != EFI_SUCCESS)
++ goto close_handles;
++
++ initrd->size = file_sz;
++ initrd_total += file_sz;
++ }
++
++ if (initrd_total) {
++ unsigned long addr;
++
++ /*
++ * Multiple initrd's need to be at consecutive
++ * addresses in memory, so allocate enough memory for
++ * all the initrd's.
++ */
++ status = low_alloc(initrd_total, 0x1000, &initrd_addr);
++ if (status != EFI_SUCCESS)
++ goto close_handles;
++
++ /* We've run out of free low memory. */
++ if (initrd_addr > hdr->initrd_addr_max) {
++ status = EFI_INVALID_PARAMETER;
++ goto free_initrd_total;
++ }
++
++ addr = initrd_addr;
++ for (j = 0; j < nr_initrds; j++) {
++ u64 size;
++
++ size = initrds[j].size;
++ status = efi_call_phys3(fh->read, initrds[j].handle,
++ &size, addr);
++ if (status != EFI_SUCCESS)
++ goto free_initrd_total;
++
++ efi_call_phys1(fh->close, initrds[j].handle);
++
++ addr += size;
++ }
++
++ }
++
++ efi_call_phys1(sys_table->boottime->free_pool, initrds);
++
++ hdr->ramdisk_image = initrd_addr;
++ hdr->ramdisk_size = initrd_total;
++
++ return status;
++
++free_initrd_total:
++ low_free(initrd_total, initrd_addr);
++
++close_handles:
++ for (k = j; k < nr_initrds; k++)
++ efi_call_phys1(fh->close, initrds[k].handle);
++free_initrds:
++ efi_call_phys1(sys_table->boottime->free_pool, initrds);
++fail:
++ hdr->ramdisk_image = 0;
++ hdr->ramdisk_size = 0;
++
++ return status;
++}
++
++/*
++ * Because the x86 boot code expects to be passed a boot_params we
++ * need to create one ourselves (usually the bootloader would create
++ * one for us).
++ */
++static efi_status_t make_boot_params(struct boot_params *boot_params,
++ efi_loaded_image_t *image,
++ void *handle)
++{
++ struct efi_info *efi = &boot_params->efi_info;
++ struct apm_bios_info *bi = &boot_params->apm_bios_info;
++ struct sys_desc_table *sdt = &boot_params->sys_desc_table;
++ struct e820entry *e820_map = &boot_params->e820_map[0];
++ struct e820entry *prev = NULL;
++ struct setup_header *hdr = &boot_params->hdr;
++ unsigned long size, key, desc_size, _size;
++ efi_memory_desc_t *mem_map;
++ void *options = image->load_options;
++ u32 load_options_size = image->load_options_size;
++ int options_size = 0;
++ efi_status_t status;
++ __u32 desc_version;
++ unsigned long cmdline;
++ u8 nr_entries;
++ u16 *s2;
++ u8 *s1;
++ int i;
++
++ hdr->type_of_loader = 0x21;
++
++ /* Convert unicode cmdline to ascii */
++ cmdline = 0;
++ s2 = (u16 *)options;
++
++ if (s2) {
++ while (*s2 && *s2 != '\n' && options_size < load_options_size) {
++ s2++;
++ options_size++;
++ }
++
++ if (options_size) {
++ if (options_size > hdr->cmdline_size)
++ options_size = hdr->cmdline_size;
++
++ options_size++; /* NUL termination */
++
++ status = low_alloc(options_size, 1, &cmdline);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ s1 = (u8 *)(unsigned long)cmdline;
++ s2 = (u16 *)options;
++
++ for (i = 0; i < options_size - 1; i++)
++ *s1++ = *s2++;
++
++ *s1 = '\0';
++ }
++ }
++
++ hdr->cmd_line_ptr = cmdline;
++
++ hdr->ramdisk_image = 0;
++ hdr->ramdisk_size = 0;
++
++ status = handle_ramdisks(image, hdr);
++ if (status != EFI_SUCCESS)
++ goto free_cmdline;
++
++ setup_graphics(boot_params);
++
++ /* Clear APM BIOS info */
++ memset(bi, 0, sizeof(*bi));
++
++ memset(sdt, 0, sizeof(*sdt));
++
++ memcpy(&efi->efi_loader_signature, EFI_LOADER_SIGNATURE, sizeof(__u32));
++
++ size = sizeof(*mem_map) * 32;
++
++again:
++ size += sizeof(*mem_map);
++ _size = size;
++ status = low_alloc(size, 1, (unsigned long *)&mem_map);
++ if (status != EFI_SUCCESS)
++ goto free_cmdline;
++
++ status = efi_call_phys5(sys_table->boottime->get_memory_map, &size,
++ mem_map, &key, &desc_size, &desc_version);
++ if (status == EFI_BUFFER_TOO_SMALL) {
++ low_free(_size, (unsigned long)mem_map);
++ goto again;
++ }
++
++ if (status != EFI_SUCCESS)
++ goto free_mem_map;
++
++ efi->efi_systab = (unsigned long)sys_table;
++ efi->efi_memdesc_size = desc_size;
++ efi->efi_memdesc_version = desc_version;
++ efi->efi_memmap = (unsigned long)mem_map;
++ efi->efi_memmap_size = size;
++
++#ifdef CONFIG_X86_64
++ efi->efi_systab_hi = (unsigned long)sys_table >> 32;
++ efi->efi_memmap_hi = (unsigned long)mem_map >> 32;
++#endif
++
++ /* Might as well exit boot services now */
++ status = efi_call_phys2(sys_table->boottime->exit_boot_services,
++ handle, key);
++ if (status != EFI_SUCCESS)
++ goto free_mem_map;
++
++ /* Historic? */
++ boot_params->alt_mem_k = 32 * 1024;
++
++ /*
++ * Convert the EFI memory map to E820.
++ */
++ nr_entries = 0;
++ for (i = 0; i < size / desc_size; i++) {
++ efi_memory_desc_t *d;
++ unsigned int e820_type = 0;
++
++ d = (efi_memory_desc_t *)((unsigned long)mem_map + (i * desc_size));
++ switch(d->type) {
++ case EFI_RESERVED_TYPE:
++ case EFI_RUNTIME_SERVICES_CODE:
++ case EFI_RUNTIME_SERVICES_DATA:
++ case EFI_MEMORY_MAPPED_IO:
++ case EFI_MEMORY_MAPPED_IO_PORT_SPACE:
++ case EFI_PAL_CODE:
++ e820_type = E820_RESERVED;
++ break;
++
++ case EFI_UNUSABLE_MEMORY:
++ e820_type = E820_UNUSABLE;
++ break;
++
++ case EFI_ACPI_RECLAIM_MEMORY:
++ e820_type = E820_ACPI;
++ break;
++
++ case EFI_LOADER_CODE:
++ case EFI_LOADER_DATA:
++ case EFI_BOOT_SERVICES_CODE:
++ case EFI_BOOT_SERVICES_DATA:
++ case EFI_CONVENTIONAL_MEMORY:
++ e820_type = E820_RAM;
++ break;
++
++ case EFI_ACPI_MEMORY_NVS:
++ e820_type = E820_NVS;
++ break;
++
++ default:
++ continue;
++ }
++
++ /* Merge adjacent mappings */
++ if (prev && prev->type == e820_type &&
++ (prev->addr + prev->size) == d->phys_addr)
++ prev->size += d->num_pages << 12;
++ else {
++ e820_map->addr = d->phys_addr;
++ e820_map->size = d->num_pages << 12;
++ e820_map->type = e820_type;
++ prev = e820_map++;
++ nr_entries++;
++ }
++ }
++
++ boot_params->e820_entries = nr_entries;
++
++ return EFI_SUCCESS;
++
++free_mem_map:
++ low_free(_size, (unsigned long)mem_map);
++free_cmdline:
++ if (options_size)
++ low_free(options_size, hdr->cmd_line_ptr);
++fail:
++ return status;
++}
++
++/*
++ * On success we return a pointer to a boot_params structure, and NULL
++ * on failure.
++ */
++struct boot_params *efi_main(void *handle, efi_system_table_t *_table)
++{
++ struct boot_params *boot_params;
++ unsigned long start, nr_pages;
++ struct desc_ptr *gdt, *idt;
++ efi_loaded_image_t *image;
++ struct setup_header *hdr;
++ efi_status_t status;
++ efi_guid_t proto = LOADED_IMAGE_PROTOCOL_GUID;
++ struct desc_struct *desc;
++
++ sys_table = _table;
++
++ /* Check if we were booted by the EFI firmware */
++ if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
++ goto fail;
++
++ status = efi_call_phys3(sys_table->boottime->handle_protocol,
++ handle, &proto, (void *)&image);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ status = low_alloc(0x4000, 1, (unsigned long *)&boot_params);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ memset(boot_params, 0x0, 0x4000);
++
++ /* Copy first two sectors to boot_params */
++ memcpy(boot_params, image->image_base, 1024);
++
++ hdr = &boot_params->hdr;
++
++ /*
++ * The EFI firmware loader could have placed the kernel image
++ * anywhere in memory, but the kernel has various restrictions
++ * on the max physical address it can run at. Attempt to move
++ * the kernel to boot_params.pref_address, or as close as
++ * possible to it.
++ */
++ start = hdr->pref_address;
++ nr_pages = round_up(hdr->init_size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
++
++ status = efi_call_phys4(sys_table->boottime->allocate_pages,
++ EFI_ALLOCATE_ADDRESS, EFI_LOADER_DATA,
++ nr_pages, &start);
++ if (status != EFI_SUCCESS) {
++ status = low_alloc(hdr->init_size, hdr->kernel_alignment,
++ &start);
++ if (status != EFI_SUCCESS)
++ goto fail;
++ }
++
++ hdr->code32_start = (__u32)start;
++ hdr->pref_address = (__u64)(unsigned long)image->image_base;
++
++ memcpy((void *)start, image->image_base, image->image_size);
++
++ status = efi_call_phys3(sys_table->boottime->allocate_pool,
++ EFI_LOADER_DATA, sizeof(*gdt),
++ (void **)&gdt);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ gdt->size = 0x800;
++ status = low_alloc(gdt->size, 8, (unsigned long *)&gdt->address);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ status = efi_call_phys3(sys_table->boottime->allocate_pool,
++ EFI_LOADER_DATA, sizeof(*idt),
++ (void **)&idt);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ idt->size = 0;
++ idt->address = 0;
++
++ status = make_boot_params(boot_params, image, handle);
++ if (status != EFI_SUCCESS)
++ goto fail;
++
++ memset((char *)gdt->address, 0x0, gdt->size);
++ desc = (struct desc_struct *)gdt->address;
++
++ /* The first GDT is a dummy and the second is unused. */
++ desc += 2;
++
++ desc->limit0 = 0xffff;
++ desc->base0 = 0x0000;
++ desc->base1 = 0x0000;
++ desc->type = SEG_TYPE_CODE | SEG_TYPE_EXEC_READ;
++ desc->s = DESC_TYPE_CODE_DATA;
++ desc->dpl = 0;
++ desc->p = 1;
++ desc->limit = 0xf;
++ desc->avl = 0;
++ desc->l = 0;
++ desc->d = SEG_OP_SIZE_32BIT;
++ desc->g = SEG_GRANULARITY_4KB;
++ desc->base2 = 0x00;
++
++ desc++;
++ desc->limit0 = 0xffff;
++ desc->base0 = 0x0000;
++ desc->base1 = 0x0000;
++ desc->type = SEG_TYPE_DATA | SEG_TYPE_READ_WRITE;
++ desc->s = DESC_TYPE_CODE_DATA;
++ desc->dpl = 0;
++ desc->p = 1;
++ desc->limit = 0xf;
++ desc->avl = 0;
++ desc->l = 0;
++ desc->d = SEG_OP_SIZE_32BIT;
++ desc->g = SEG_GRANULARITY_4KB;
++ desc->base2 = 0x00;
++
++#ifdef CONFIG_X86_64
++ /* Task segment value */
++ desc++;
++ desc->limit0 = 0x0000;
++ desc->base0 = 0x0000;
++ desc->base1 = 0x0000;
++ desc->type = SEG_TYPE_TSS;
++ desc->s = 0;
++ desc->dpl = 0;
++ desc->p = 1;
++ desc->limit = 0x0;
++ desc->avl = 0;
++ desc->l = 0;
++ desc->d = 0;
++ desc->g = SEG_GRANULARITY_4KB;
++ desc->base2 = 0x00;
++#endif /* CONFIG_X86_64 */
++
++ asm volatile ("lidt %0" :: "m" (*idt));
++ asm volatile ("lgdt %0" :: "m" (*gdt));
++
++ asm volatile("cli");
++
++ return boot_params;
++fail:
++ return NULL;
++}
+diff --git a/arch/x86/boot/compressed/efi_stub_32.S b/arch/x86/boot/compressed/efi_stub_32.S
+new file mode 100644
+index 0000000..5047cd9
+--- /dev/null
++++ b/arch/x86/boot/compressed/efi_stub_32.S
+@@ -0,0 +1,87 @@
++/*
++ * EFI call stub for IA32.
++ *
++ * This stub allows us to make EFI calls in physical mode with interrupts
++ * turned off. Note that this implementation is different from the one in
++ * arch/x86/platform/efi/efi_stub_32.S because we're _already_ in physical
++ * mode at this point.
++ */
++
++#include
++#include
++
++/*
++ * efi_call_phys(void *, ...) is a function with variable parameters.
++ * All the callers of this function assure that all the parameters are 4-bytes.
++ */
++
++/*
++ * In gcc calling convention, EBX, ESP, EBP, ESI and EDI are all callee save.
++ * So we'd better save all of them at the beginning of this function and restore
++ * at the end no matter how many we use, because we can not assure EFI runtime
++ * service functions will comply with gcc calling convention, too.
++ */
++
++.text
++ENTRY(efi_call_phys)
++ /*
++ * 0. The function can only be called in Linux kernel. So CS has been
++ * set to 0x0010, DS and SS have been set to 0x0018. In EFI, I found
++ * the values of these registers are the same. And, the corresponding
++ * GDT entries are identical. So I will do nothing about segment reg
++ * and GDT, but change GDT base register in prelog and epilog.
++ */
++
++ /*
++ * 1. Because we haven't been relocated by this point we need to
++ * use relative addressing.
++ */
++ call 1f
++1: popl %edx
++ subl $1b, %edx
++
++ /*
++ * 2. Now on the top of stack is the return
++ * address in the caller of efi_call_phys(), then parameter 1,
++ * parameter 2, ..., param n. To make things easy, we save the return
++ * address of efi_call_phys in a global variable.
++ */
++ popl %ecx
++ movl %ecx, saved_return_addr(%edx)
++ /* get the function pointer into ECX*/
++ popl %ecx
++ movl %ecx, efi_rt_function_ptr(%edx)
++
++ /*
++ * 3. Call the physical function.
++ */
++ call *%ecx
++
++ /*
++ * 4. Balance the stack. And because EAX contain the return value,
++ * we'd better not clobber it. We need to calculate our address
++ * again because %ecx and %edx are not preserved across EFI function
++ * calls.
++ */
++ call 1f
++1: popl %edx
++ subl $1b, %edx
++
++ movl efi_rt_function_ptr(%edx), %ecx
++ pushl %ecx
++
++ /*
++ * 10. Push the saved return address onto the stack and return.
++ */
++ movl saved_return_addr(%edx), %ecx
++ pushl %ecx
++ ret
++ENDPROC(efi_call_phys)
++.previous
++
++.data
++saved_return_addr:
++ .long 0
++efi_rt_function_ptr:
++ .long 0
++
+diff --git a/arch/x86/boot/compressed/efi_stub_64.S b/arch/x86/boot/compressed/efi_stub_64.S
+new file mode 100644
+index 0000000..cedc60d
+--- /dev/null
++++ b/arch/x86/boot/compressed/efi_stub_64.S
+@@ -0,0 +1 @@
++#include "../../platform/efi/efi_stub_64.S"
+diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
+index 67a655a..a055993 100644
+--- a/arch/x86/boot/compressed/head_32.S
++++ b/arch/x86/boot/compressed/head_32.S
+@@ -32,6 +32,28 @@
+
+ __HEAD
+ ENTRY(startup_32)
++#ifdef CONFIG_EFI_STUB
++ /*
++ * We don't need the return address, so set up the stack so
++ * efi_main() can find its arugments.
++ */
++ add $0x4, %esp
++
++ call efi_main
++ cmpl $0, %eax
++ je preferred_addr
++ movl %eax, %esi
++ call 1f
++1:
++ popl %eax
++ subl $1b, %eax
++ subl BP_pref_address(%esi), %eax
++ add BP_code32_start(%esi), %eax
++ leal preferred_addr(%eax), %eax
++ jmp *%eax
++
++preferred_addr:
++#endif
+ cld
+ /*
+ * Test KEEP_SEGMENTS flag to see if the bootloader is asking
+diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
+index 35af09d..558d76c 100644
+--- a/arch/x86/boot/compressed/head_64.S
++++ b/arch/x86/boot/compressed/head_64.S
+@@ -199,6 +199,26 @@ ENTRY(startup_64)
+ * an identity mapped page table being provied that maps our
+ * entire text+data+bss and hopefully all of memory.
+ */
++#ifdef CONFIG_EFI_STUB
++ pushq %rsi
++ mov %rcx, %rdi
++ mov %rdx, %rsi
++ call efi_main
++ popq %rsi
++ cmpq $0,%rax
++ je preferred_addr
++ movq %rax,%rsi
++ call 1f
++1:
++ popq %rax
++ subq $1b, %rax
++ subq BP_pref_address(%rsi), %rax
++ add BP_code32_start(%esi), %eax
++ leaq preferred_addr(%rax), %rax
++ jmp *%rax
++
++preferred_addr:
++#endif
+
+ /* Setup data segments. */
+ xorl %eax, %eax
+diff --git a/arch/x86/boot/compressed/string.c b/arch/x86/boot/compressed/string.c
+index 19b3e69..ffb9c5c 100644
+--- a/arch/x86/boot/compressed/string.c
++++ b/arch/x86/boot/compressed/string.c
+@@ -1,2 +1,11 @@
+ #include "misc.h"
++
++int memcmp(const void *s1, const void *s2, size_t len)
++{
++ u8 diff;
++ asm("repe; cmpsb; setnz %0"
++ : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
++ return diff;
++}
++
+ #include "../string.c"
+diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
+index 93e689f..c4756f6 100644
+--- a/arch/x86/boot/header.S
++++ b/arch/x86/boot/header.S
+@@ -45,6 +45,11 @@ SYSSEG = 0x1000 /* historical load address >> 4 */
+
+ .global bootsect_start
+ bootsect_start:
++#ifdef CONFIG_EFI_STUB
++ # "MZ", MS-DOS header
++ .byte 0x4d
++ .byte 0x5a
++#endif
+
+ # Normalize the start address
+ ljmp $BOOTSEG, $start2
+@@ -79,6 +84,14 @@ bs_die:
+ # invoke the BIOS reset code...
+ ljmp $0xf000,$0xfff0
+
++#ifdef CONFIG_EFI_STUB
++ .org 0x3c
++ #
++ # Offset to the PE header.
++ #
++ .long pe_header
++#endif /* CONFIG_EFI_STUB */
++
+ .section ".bsdata", "a"
+ bugger_off_msg:
+ .ascii "Direct booting from floppy is no longer supported.\r\n"
+@@ -87,6 +100,141 @@ bugger_off_msg:
+ .ascii "Remove disk and press any key to reboot . . .\r\n"
+ .byte 0
+
++#ifdef CONFIG_EFI_STUB
++pe_header:
++ .ascii "PE"
++ .word 0
++
++coff_header:
++#ifdef CONFIG_X86_32
++ .word 0x14c # i386
++#else
++ .word 0x8664 # x86-64
++#endif
++ .word 2 # nr_sections
++ .long 0 # TimeDateStamp
++ .long 0 # PointerToSymbolTable
++ .long 1 # NumberOfSymbols
++ .word section_table - optional_header # SizeOfOptionalHeader
++#ifdef CONFIG_X86_32
++ .word 0x306 # Characteristics.
++ # IMAGE_FILE_32BIT_MACHINE |
++ # IMAGE_FILE_DEBUG_STRIPPED |
++ # IMAGE_FILE_EXECUTABLE_IMAGE |
++ # IMAGE_FILE_LINE_NUMS_STRIPPED
++#else
++ .word 0x206 # Characteristics
++ # IMAGE_FILE_DEBUG_STRIPPED |
++ # IMAGE_FILE_EXECUTABLE_IMAGE |
++ # IMAGE_FILE_LINE_NUMS_STRIPPED
++#endif
++
++optional_header:
++#ifdef CONFIG_X86_32
++ .word 0x10b # PE32 format
++#else
++ .word 0x20b # PE32+ format
++#endif
++ .byte 0x02 # MajorLinkerVersion
++ .byte 0x14 # MinorLinkerVersion
++
++ # Filled in by build.c
++ .long 0 # SizeOfCode
++
++ .long 0 # SizeOfInitializedData
++ .long 0 # SizeOfUninitializedData
++
++ # Filled in by build.c
++ .long 0x0000 # AddressOfEntryPoint
++
++ .long 0x0000 # BaseOfCode
++#ifdef CONFIG_X86_32
++ .long 0 # data
++#endif
++
++extra_header_fields:
++#ifdef CONFIG_X86_32
++ .long 0 # ImageBase
++#else
++ .quad 0 # ImageBase
++#endif
++ .long 0x1000 # SectionAlignment
++ .long 0x200 # FileAlignment
++ .word 0 # MajorOperatingSystemVersion
++ .word 0 # MinorOperatingSystemVersion
++ .word 0 # MajorImageVersion
++ .word 0 # MinorImageVersion
++ .word 0 # MajorSubsystemVersion
++ .word 0 # MinorSubsystemVersion
++ .long 0 # Win32VersionValue
++
++ #
++ # The size of the bzImage is written in tools/build.c
++ #
++ .long 0 # SizeOfImage
++
++ .long 0x200 # SizeOfHeaders
++ .long 0 # CheckSum
++ .word 0xa # Subsystem (EFI application)
++ .word 0 # DllCharacteristics
++#ifdef CONFIG_X86_32
++ .long 0 # SizeOfStackReserve
++ .long 0 # SizeOfStackCommit
++ .long 0 # SizeOfHeapReserve
++ .long 0 # SizeOfHeapCommit
++#else
++ .quad 0 # SizeOfStackReserve
++ .quad 0 # SizeOfStackCommit
++ .quad 0 # SizeOfHeapReserve
++ .quad 0 # SizeOfHeapCommit
++#endif
++ .long 0 # LoaderFlags
++ .long 0x1 # NumberOfRvaAndSizes
++
++ .quad 0 # ExportTable
++ .quad 0 # ImportTable
++ .quad 0 # ResourceTable
++ .quad 0 # ExceptionTable
++ .quad 0 # CertificationTable
++ .quad 0 # BaseRelocationTable
++
++ # Section table
++section_table:
++ .ascii ".text"
++ .byte 0
++ .byte 0
++ .byte 0
++ .long 0
++ .long 0x0 # startup_{32,64}
++ .long 0 # Size of initialized data
++ # on disk
++ .long 0x0 # startup_{32,64}
++ .long 0 # PointerToRelocations
++ .long 0 # PointerToLineNumbers
++ .word 0 # NumberOfRelocations
++ .word 0 # NumberOfLineNumbers
++ .long 0x60500020 # Characteristics (section flags)
++
++ #
++ # The EFI application loader requires a relocation section
++ # because EFI applications are relocatable and not having
++ # this section seems to confuse it. But since we don't need
++ # the loader to fixup any relocs for us just fill it with a
++ # single dummy reloc.
++ #
++ .ascii ".reloc"
++ .byte 0
++ .byte 0
++ .long reloc_end - reloc_start
++ .long reloc_start
++ .long reloc_end - reloc_start # SizeOfRawData
++ .long reloc_start # PointerToRawData
++ .long 0 # PointerToRelocations
++ .long 0 # PointerToLineNumbers
++ .word 0 # NumberOfRelocations
++ .word 0 # NumberOfLineNumbers
++ .long 0x42100040 # Characteristics (section flags)
++#endif /* CONFIG_EFI_STUB */
+
+ # Kernel attributes; used by setup. This is part 1 of the
+ # header, from the old boot sector.
+@@ -318,3 +466,13 @@ die:
+ setup_corrupt:
+ .byte 7
+ .string "No setup signature found...\n"
++
++ .data
++dummy: .long 0
++
++ .section .reloc
++reloc_start:
++ .long dummy - reloc_start
++ .long 10
++ .word 0
++reloc_end:
+diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c
+index 3cbc405..574dedf 100644
+--- a/arch/x86/boot/string.c
++++ b/arch/x86/boot/string.c
+@@ -111,3 +111,38 @@ unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int bas
+
+ return result;
+ }
++
++/**
++ * strlen - Find the length of a string
++ * @s: The string to be sized
++ */
++size_t strlen(const char *s)
++{
++ const char *sc;
++
++ for (sc = s; *sc != '\0'; ++sc)
++ /* nothing */;
++ return sc - s;
++}
++
++/**
++ * strstr - Find the first substring in a %NUL terminated string
++ * @s1: The string to be searched
++ * @s2: The string to search for
++ */
++char *strstr(const char *s1, const char *s2)
++{
++ size_t l1, l2;
++
++ l2 = strlen(s2);
++ if (!l2)
++ return (char *)s1;
++ l1 = strlen(s1);
++ while (l1 >= l2) {
++ l1--;
++ if (!memcmp(s1, s2, l2))
++ return (char *)s1;
++ s1++;
++ }
++ return NULL;
++}
+diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c
+index fdc60a0..4e9bd6b 100644
+--- a/arch/x86/boot/tools/build.c
++++ b/arch/x86/boot/tools/build.c
+@@ -135,6 +135,9 @@ static void usage(void)
+
+ int main(int argc, char ** argv)
+ {
++#ifdef CONFIG_EFI_STUB
++ unsigned int file_sz, pe_header;
++#endif
+ unsigned int i, sz, setup_sectors;
+ int c;
+ u32 sys_size;
+@@ -194,6 +197,42 @@ int main(int argc, char ** argv)
+ buf[0x1f6] = sys_size >> 16;
+ buf[0x1f7] = sys_size >> 24;
+
++#ifdef CONFIG_EFI_STUB
++ file_sz = sz + i + ((sys_size * 16) - sz);
++
++ pe_header = *(unsigned int *)&buf[0x3c];
++
++ /* Size of code */
++ *(unsigned int *)&buf[pe_header + 0x1c] = file_sz;
++
++ /* Size of image */
++ *(unsigned int *)&buf[pe_header + 0x50] = file_sz;
++
++#ifdef CONFIG_X86_32
++ /* Address of entry point */
++ *(unsigned int *)&buf[pe_header + 0x28] = i;
++
++ /* .text size */
++ *(unsigned int *)&buf[pe_header + 0xb0] = file_sz;
++
++ /* .text size of initialised data */
++ *(unsigned int *)&buf[pe_header + 0xb8] = file_sz;
++#else
++ /*
++ * Address of entry point. startup_32 is at the beginning and
++ * the 64-bit entry point (startup_64) is always 512 bytes
++ * after.
++ */
++ *(unsigned int *)&buf[pe_header + 0x28] = i + 512;
++
++ /* .text size */
++ *(unsigned int *)&buf[pe_header + 0xc0] = file_sz;
++
++ /* .text size of initialised data */
++ *(unsigned int *)&buf[pe_header + 0xc8] = file_sz;
++#endif /* CONFIG_X86_32 */
++#endif /* CONFIG_EFI_STUB */
++
+ crc = partial_crc32(buf, i, crc);
+ if (fwrite(buf, 1, i, stdout) != i)
+ die("Writing setup failed");
+diff --git a/arch/x86/include/asm/bootparam.h b/arch/x86/include/asm/bootparam.h
+index e020d88..2f90c51 100644
+--- a/arch/x86/include/asm/bootparam.h
++++ b/arch/x86/include/asm/bootparam.h
+@@ -64,6 +64,8 @@ struct setup_header {
+ __u32 payload_offset;
+ __u32 payload_length;
+ __u64 setup_data;
++ __u64 pref_address;
++ __u32 init_size;
+ } __attribute__((packed));
+
+ struct sys_desc_table {
+diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
+index 7093e4a..844f735 100644
+--- a/arch/x86/include/asm/efi.h
++++ b/arch/x86/include/asm/efi.h
+@@ -3,6 +3,8 @@
+
+ #ifdef CONFIG_X86_32
+
++#define EFI_LOADER_SIGNATURE "EL32"
++
+ extern unsigned long asmlinkage efi_call_phys(void *, ...);
+
+ #define efi_call_phys0(f) efi_call_phys(f)
+@@ -37,6 +39,8 @@ extern unsigned long asmlinkage efi_call_phys(void *, ...);
+
+ #else /* !CONFIG_X86_32 */
+
++#define EFI_LOADER_SIGNATURE "EL64"
++
+ extern u64 efi_call0(void *fp);
+ extern u64 efi_call1(void *fp, u64 arg1);
+ extern u64 efi_call2(void *fp, u64 arg1, u64 arg2);
+diff --git a/arch/x86/kernel/asm-offsets.c b/arch/x86/kernel/asm-offsets.c
+index 4f13faf..68de2dc 100644
+--- a/arch/x86/kernel/asm-offsets.c
++++ b/arch/x86/kernel/asm-offsets.c
+@@ -67,4 +67,6 @@ void common(void) {
+ OFFSET(BP_hardware_subarch, boot_params, hdr.hardware_subarch);
+ OFFSET(BP_version, boot_params, hdr.version);
+ OFFSET(BP_kernel_alignment, boot_params, hdr.kernel_alignment);
++ OFFSET(BP_pref_address, boot_params, hdr.pref_address);
++ OFFSET(BP_code32_start, boot_params, hdr.code32_start);
+ }
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index afaf384..eca164b 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -750,12 +750,7 @@ void __init setup_arch(char **cmdline_p)
+ #endif
+ #ifdef CONFIG_EFI
+ if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature,
+-#ifdef CONFIG_X86_32
+- "EL32",
+-#else
+- "EL64",
+-#endif
+- 4)) {
++ EFI_LOADER_SIGNATURE, 4)) {
+ efi_enabled = 1;
+ efi_memblock_x86_reserve_range();
+ }
+diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
+index 5cab48e..1156e9a 100644
+--- a/arch/x86/platform/efi/efi_32.c
++++ b/arch/x86/platform/efi/efi_32.c
+@@ -44,8 +44,12 @@ void efi_call_phys_prelog(void)
+ {
+ unsigned long cr4;
+ unsigned long temp;
++ unsigned long phys_addr, virt_addr;
+ struct desc_ptr gdt_descr;
+
++ virt_addr = (unsigned long)_text;
++ phys_addr = virt_addr - PAGE_OFFSET;
++
+ local_irq_save(efi_rt_eflags);
+
+ /*
+@@ -57,18 +61,18 @@ void efi_call_phys_prelog(void)
+
+ if (cr4 & X86_CR4_PAE) {
+ efi_bak_pg_dir_pointer[0].pgd =
+- swapper_pg_dir[pgd_index(0)].pgd;
+- swapper_pg_dir[0].pgd =
+- swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
++ swapper_pg_dir[pgd_index(phys_addr)].pgd;
++ swapper_pg_dir[pgd_index(phys_addr)].pgd =
++ swapper_pg_dir[pgd_index(virt_addr)].pgd;
+ } else {
+ efi_bak_pg_dir_pointer[0].pgd =
+- swapper_pg_dir[pgd_index(0)].pgd;
++ swapper_pg_dir[pgd_index(phys_addr)].pgd;
+ efi_bak_pg_dir_pointer[1].pgd =
+- swapper_pg_dir[pgd_index(0x400000)].pgd;
+- swapper_pg_dir[pgd_index(0)].pgd =
+- swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
+- temp = PAGE_OFFSET + 0x400000;
+- swapper_pg_dir[pgd_index(0x400000)].pgd =
++ swapper_pg_dir[pgd_index(phys_addr + 0x400000)].pgd;
++ swapper_pg_dir[pgd_index(phys_addr)].pgd =
++ swapper_pg_dir[pgd_index(virt_addr)].pgd;
++ temp = virt_addr + 0x400000;
++ swapper_pg_dir[pgd_index(phys_addr + 0x400000)].pgd =
+ swapper_pg_dir[pgd_index(temp)].pgd;
+ }
+
+diff --git a/include/linux/efi.h b/include/linux/efi.h
+index 2362a0b..37c3007 100644
+--- a/include/linux/efi.h
++++ b/include/linux/efi.h
+@@ -109,6 +109,14 @@ typedef struct {
+ u32 imagesize;
+ } efi_capsule_header_t;
+
++/*
++ * Allocation types for calls to boottime->allocate_pages.
++ */
++#define EFI_ALLOCATE_ANY_PAGES 0
++#define EFI_ALLOCATE_MAX_ADDRESS 1
++#define EFI_ALLOCATE_ADDRESS 2
++#define EFI_MAX_ALLOCATE_TYPE 3
++
+ typedef int (*efi_freemem_callback_t) (u64 start, u64 end, void *arg);
+
+ /*
+@@ -139,6 +147,57 @@ typedef struct {
+ } efi_time_cap_t;
+
+ /*
++ * EFI Boot Services table
++ */
++typedef struct {
++ efi_table_hdr_t hdr;
++ void *raise_tpl;
++ void *restore_tpl;
++ void *allocate_pages;
++ void *free_pages;
++ void *get_memory_map;
++ void *allocate_pool;
++ void *free_pool;
++ void *create_event;
++ void *set_timer;
++ void *wait_for_event;
++ void *signal_event;
++ void *close_event;
++ void *check_event;
++ void *install_protocol_interface;
++ void *reinstall_protocol_interface;
++ void *uninstall_protocol_interface;
++ void *handle_protocol;
++ void *__reserved;
++ void *register_protocol_notify;
++ void *locate_handle;
++ void *locate_device_path;
++ void *install_configuration_table;
++ void *load_image;
++ void *start_image;
++ void *exit;
++ void *unload_image;
++ void *exit_boot_services;
++ void *get_next_monotonic_count;
++ void *stall;
++ void *set_watchdog_timer;
++ void *connect_controller;
++ void *disconnect_controller;
++ void *open_protocol;
++ void *close_protocol;
++ void *open_protocol_information;
++ void *protocols_per_handle;
++ void *locate_handle_buffer;
++ void *locate_protocol;
++ void *install_multiple_protocol_interfaces;
++ void *uninstall_multiple_protocol_interfaces;
++ void *calculate_crc32;
++ void *copy_mem;
++ void *set_mem;
++ void *create_event_ex;
++} efi_boot_services_t;
++
++/*
+ * Types and defines for EFI ResetSystem
+ */
+ #define EFI_RESET_COLD 0
+@@ -236,6 +295,24 @@ typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **capsules,
+ #define LINUX_EFI_CRASH_GUID \
+ EFI_GUID( 0xcfc8fc79, 0xbe2e, 0x4ddc, 0x97, 0xf0, 0x9f, 0x98, 0xbf, 0xe2, 0x98, 0xa0 )
+
++#define LOADED_IMAGE_PROTOCOL_GUID \
++ EFI_GUID( 0x5b1b31a1, 0x9562, 0x11d2, 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
++
++#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
++ EFI_GUID( 0x9042a9de, 0x23dc, 0x4a38, 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a )
++
++#define EFI_UGA_PROTOCOL_GUID \
++ EFI_GUID( 0x982c298b, 0xf4fa, 0x41cb, 0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39 )
++
++#define EFI_PCI_IO_PROTOCOL_GUID \
++ EFI_GUID( 0x4cf5b200, 0x68b8, 0x4ca5, 0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a )
++
++#define EFI_FILE_INFO_ID \
++ EFI_GUID( 0x9576e92, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
++
++#define EFI_FILE_SYSTEM_GUID \
++ EFI_GUID( 0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
++
+ typedef struct {
+ efi_guid_t guid;
+ unsigned long table;
+@@ -261,7 +338,7 @@ typedef struct {
+ unsigned long stderr_handle;
+ unsigned long stderr;
+ efi_runtime_services_t *runtime;
+- unsigned long boottime;
++ efi_boot_services_t *boottime;
+ unsigned long nr_tables;
+ unsigned long tables;
+ } efi_system_table_t;
+@@ -275,6 +352,56 @@ struct efi_memory_map {
+ unsigned long desc_size;
+ };
+
++typedef struct {
++ u32 revision;
++ void *parent_handle;
++ efi_system_table_t *system_table;
++ void *device_handle;
++ void *file_path;
++ void *reserved;
++ u32 load_options_size;
++ void *load_options;
++ void *image_base;
++ __aligned_u64 image_size;
++ unsigned int image_code_type;
++ unsigned int image_data_type;
++ unsigned long unload;
++} efi_loaded_image_t;
++
++typedef struct {
++ u64 revision;
++ void *open_volume;
++} efi_file_io_interface_t;
++
++typedef struct {
++ u64 size;
++ u64 file_size;
++ u64 phys_size;
++ efi_time_t create_time;
++ efi_time_t last_access_time;
++ efi_time_t modification_time;
++ __aligned_u64 attribute;
++ efi_char16_t filename[1];
++} efi_file_info_t;
++
++typedef struct {
++ u64 revision;
++ void *open;
++ void *close;
++ void *delete;
++ void *read;
++ void *write;
++ void *get_position;
++ void *set_position;
++ void *get_info;
++ void *set_info;
++ void *flush;
++} efi_file_handle_t;
++
++#define EFI_FILE_MODE_READ 0x0000000000000001
++#define EFI_FILE_MODE_WRITE 0x0000000000000002
++#define EFI_FILE_MODE_CREATE 0x8000000000000000
++
+ #define EFI_INVALID_TABLE_ADDR (~0UL)
+
+ /*
+@@ -385,6 +512,13 @@ extern int __init efi_setup_pcdp_console(char *);
+ #define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
+
+ /*
++ * The type of search to perform when calling boottime->locate_handle
++ */
++#define EFI_LOCATE_ALL_HANDLES 0
++#define EFI_LOCATE_BY_REGISTER_NOTIFY 1
++#define EFI_LOCATE_BY_PROTOCOL 2
++
++/*
+ * EFI Device Path information
+ */
+ #define EFI_DEV_HW 0x01
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix
index a86aef1af8e..eaa90ac0eec 100644
--- a/pkgs/os-specific/linux/kernel/generic.nix
+++ b/pkgs/os-specific/linux/kernel/generic.nix
@@ -38,7 +38,6 @@
, extraMeta ? {}
, ubootChooser ? null
, postInstall ? ""
-, setModuleDir ? true
, # After the builder did a 'make all' (kernel + modules)
# we force building the target asked: bzImage/zImage/uImage/...
@@ -69,7 +68,7 @@ stdenv.mkDerivation {
enableParallelBuilding = true;
passthru = {
- inherit version modDirVersion;
+ inherit version modDirVersion kernelPatches;
# Combine the `features' attribute sets of all the kernel patches.
features = lib.fold (x: y: (if x ? features then x.features else {}) // y) features kernelPatches;
};
@@ -78,16 +77,7 @@ stdenv.mkDerivation {
generateConfig = ./generate-config.pl;
- inherit preConfigure src module_init_tools localVersion postInstall;
-
- #Currently, the builder sets $MODULE_DIR during installPhase. This causes
- #problems with at least linux 3.0, so we need to conditionally avoid
- #setting $MODULE_DIR. This prepend to postBuild accomplishes this with a
- #sed/eval trick thanks to MarcWeber
-
- postBuild = (if setModuleDir then "" else ''
- eval "$(type installPhase | sed -e '1d' -e '/export MODULE_DIR/d')";
- '') + postBuild;
+ inherit preConfigure src module_init_tools localVersion postInstall postBuild;
patches = map (p: p.patch) kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.0.nix b/pkgs/os-specific/linux/kernel/linux-3.0.nix
index 1b685cd2d94..6f1a32e5c0f 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.0.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.0.nix
@@ -202,6 +202,10 @@ import ./generic.nix (
rec {
version = "3.0.4";
+ preConfigure = ''
+ substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
+ '';
+
src = fetchurl {
url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.bz2";
sha256 = "1vypjcdii75h5f4zsw9lm8wzxd5ix0mk5p94c96hxv828mqqkmhk";
@@ -210,8 +214,6 @@ import ./generic.nix (
config = configWithPlatform stdenv.platform;
configCross = configWithPlatform stdenv.cross.platform;
- setModuleDir = false;
-
features.iwlwifi = true;
}
diff --git a/pkgs/os-specific/linux/kernel/linux-3.1.nix b/pkgs/os-specific/linux/kernel/linux-3.1.nix
index a87554ae71a..4f8d08340e6 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.1.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.1.nix
@@ -200,21 +200,23 @@ in
import ./generic.nix (
rec {
- version = "3.1-rc7";
+ version = "3.1-rc8";
- modDirVersion = "3.1.0-rc7";
+ modDirVersion = "3.1.0-rc8";
+
+ preConfigure = ''
+ substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
+ '';
src = fetchurl {
url = "https://github.com/torvalds/linux/tarball/v${version}";
- sha256 = "05zlg522svyym6cab7lrqpihzrk8j356dyahyc321nd8yw0qfv2x";
+ sha256 = "1sz6snv2wavzasrswaprkjpzpll4247v4br0x2i6sndl2nqa6jz7";
name = "v${version}.tar.gz";
};
config = configWithPlatform stdenv.platform;
configCross = configWithPlatform stdenv.cross.platform;
- setModuleDir = false;
-
features.iwlwifi = true;
}
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index 2b0d76d76ed..585a8c0340b 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, fetchgit }:
let
@@ -36,6 +36,24 @@ let
};
};
+ makeAufs3StandalonePatch = {version, rev, sha256}:
+
+ stdenv.mkDerivation {
+ name = "aufs3-standalone-${version}.patch";
+
+ src = fetchgit {
+ url = git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git;
+ inherit sha256 rev;
+ };
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ #Instructions from http://aufs.git.sourceforge.net/git/gitweb.cgi?p=aufs/aufs3-standalone.git;a=blob;f=Documentation/filesystems/aufs/README;h=b8cf077635b323d1b454266366f05f476bbd09cb;hb=1067b9d8d64d23c70d905c9cd3c90a669e39c4d4
+ installPhase = ''
+ cat aufs3-base.patch aufs3-proc_map.patch aufs3-standalone.patch > $out
+ '';
+ };
+
in
rec {
@@ -193,6 +211,7 @@ rec {
name = "aufs2";
patch = ./aufs2.patch;
features.aufsBase = true;
+ features.aufs2 = true;
};
aufs2_2_6_33 =
@@ -202,6 +221,7 @@ rec {
name = "aufs2";
patch = ./aufs2-33.patch;
features.aufsBase = true;
+ features.aufs2 = true;
};
aufs2_2_6_34 =
@@ -211,6 +231,7 @@ rec {
name = "aufs2";
patch = ./aufs2-34.patch;
features.aufsBase = true;
+ features.aufs2 = true;
};
aufs2_2_6_35 =
@@ -220,6 +241,7 @@ rec {
name = "aufs2";
patch = ./aufs2-35.patch;
features.aufsBase = true;
+ features.aufs2 = true;
};
aufs2_2_6_36 =
@@ -272,6 +294,20 @@ rec {
features.aufs2_1 = true;
};
+ aufs3_0 = rec {
+ name = "aufs3.0";
+ version = "3.0";
+ utilRev = "a08d17d433567c7c2586c5fc2625a714b20fe155";
+ utilHash = "4772c1c6a36da7bbd448057c227a9cd1856ccf72748765cf85421ab0c4e34535";
+ patch = makeAufs3StandalonePatch {
+ inherit version;
+ rev = "1067b9d8d64d23c70d905c9cd3c90a669e39c4d4";
+ sha256 = "b508cab5987a623f057ae5fdc006c909a6bae6151af6e12fe672bf97b1a7549d";
+ };
+ features.aufsBase = true;
+ features.aufs3 = true;
+ };
+
# Increase the timeout on CIFS requests from 15 to 120 seconds to
# make CIFS more resilient to high load on the CIFS server.
cifs_timeout_2_6_15 =
@@ -379,4 +415,13 @@ rec {
name = "glibc-getline";
patch = ./getline.patch;
};
+
+ efi_stub =
+ {
+ # Patch to enable making the kernel a bootable efi image to avoid
+ # needing a bootloader on efi systems
+ # From the x86/efi-stub branch of git://github.com/mfleming/linux-2.6.git
+ name = "efi-stub";
+ patch = ./efi-stub.patch;
+ };
}
diff --git a/pkgs/os-specific/linux/module-init-tools/default.nix b/pkgs/os-specific/linux/module-init-tools/default.nix
index 5fdfedc3e2f..d29b8bee5e4 100644
--- a/pkgs/os-specific/linux/module-init-tools/default.nix
+++ b/pkgs/os-specific/linux/module-init-tools/default.nix
@@ -1,23 +1,16 @@
-{stdenv, fetchurl}:
+{stdenv, fetchurl, docbook2x}:
-stdenv.mkDerivation {
- name = "module-init-tools-3.4";
+stdenv.mkDerivation rec {
+ name = "module-init-tools-3.16";
- src = [
- (fetchurl {
- url = mirror://kernel/linux/utils/kernel/module-init-tools/module-init-tools-3.4.tar.bz2;
- sha256 = "11rxcdr915skc1m6dcavavw8dhcsy24wpi56sw1m4akj2frs3iwn";
- })
+ src = fetchurl {
+ url = "mirror://kernel/linux/utils/kernel/module-init-tools/${name}.tar.bz2";
+ sha256 = "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1";
+ };
- # Upstream forgot to include the generated manpages. Thankfully
- # the Gentoo people fixed this for us :-)
- (fetchurl {
- url = mirror://gentoo/distfiles/module-init-tools-3.4-manpages.tar.bz2;
- sha256 = "0jid24girjhr30mrdckylkcz11v4in46nshhrqv18yaxm6506v6j";
- })
- ];
+ buildInputs = [ docbook2x ];
- patches = [./module-dir.patch];
+ patches = [ ./module-dir.patch ./docbook2man.patch ];
postInstall = "rm $out/sbin/insmod.static"; # don't need it
diff --git a/pkgs/os-specific/linux/module-init-tools/docbook2man.patch b/pkgs/os-specific/linux/module-init-tools/docbook2man.patch
new file mode 100644
index 00000000000..4de07b658a9
--- /dev/null
+++ b/pkgs/os-specific/linux/module-init-tools/docbook2man.patch
@@ -0,0 +1,12 @@
+diff -Naur module-init-tools-3.16-orig/Makefile.in module-init-tools-3.16/Makefile.in
+--- module-init-tools-3.16-orig/Makefile.in 2011-06-02 13:56:45.000000000 -0400
++++ module-init-tools-3.16/Makefile.in 2011-10-01 23:59:30.584443193 -0400
+@@ -174,7 +174,7 @@
+ CYGPATH_W = @CYGPATH_W@
+ DEFS = @DEFS@
+ DEPDIR = @DEPDIR@
+-DOCBOOKTOMAN = @DOCBOOKTOMAN@
++DOCBOOKTOMAN = @DOCBOOKTOMAN@ --sgml
+ ECHO_C = @ECHO_C@
+ ECHO_N = @ECHO_N@
+ ECHO_T = @ECHO_T@
diff --git a/pkgs/os-specific/linux/module-init-tools/module-dir.patch b/pkgs/os-specific/linux/module-init-tools/module-dir.patch
index cda28c14527..90805b00c3c 100644
--- a/pkgs/os-specific/linux/module-init-tools/module-dir.patch
+++ b/pkgs/os-specific/linux/module-init-tools/module-dir.patch
@@ -1,152 +1,153 @@
-diff -rc module-init-tools-3.4-orig/depmod.c module-init-tools-3.4/depmod.c
-*** module-init-tools-3.4-orig/depmod.c 2007-10-07 23:51:46.000000000 +0200
---- module-init-tools-3.4/depmod.c 2008-08-11 12:03:14.000000000 +0200
-***************
-*** 1066,1071 ****
---- 1066,1072 ----
- *system_map = NULL;
- struct module *list = NULL;
- int i;
-+ char *module_dir;
- const char *config = NULL;
- struct module_search *search = NULL;
- struct module_overrides *overrides = NULL;
-***************
-*** 1148,1157 ****
- if (optind == argc)
- all = 1;
-
- dirname = NOFAIL(malloc(strlen(basedir)
-! + strlen(MODULE_DIR)
- + strlen(version) + 1));
-! sprintf(dirname, "%s%s%s", basedir, MODULE_DIR, version);
-
- if (maybe_all) {
- if (!doing_stdout && !depfile_out_of_date(dirname))
---- 1149,1162 ----
- if (optind == argc)
- all = 1;
-
-+ if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+ module_dir = "/lib/modules/";
-+ }
-+
- dirname = NOFAIL(malloc(strlen(basedir)
-! + strlen(module_dir)
- + strlen(version) + 1));
-! sprintf(dirname, "%s%s%s", basedir, module_dir, version);
-
- if (maybe_all) {
- if (!doing_stdout && !depfile_out_of_date(dirname))
-Only in module-init-tools-3.4/: depmod.c~
-Only in module-init-tools-3.4/: depmod.c.rej
-diff -rc module-init-tools-3.4-orig/modinfo.c module-init-tools-3.4/modinfo.c
-*** module-init-tools-3.4-orig/modinfo.c 2007-10-07 23:51:46.000000000 +0200
---- module-init-tools-3.4/modinfo.c 2008-08-11 12:07:55.000000000 +0200
-***************
-*** 18,27 ****
- #define streq(a,b) (strcmp((a),(b)) == 0)
- #define strstarts(a,start) (strncmp((a),(start), strlen(start)) == 0)
-
-- #ifndef MODULE_DIR
-- #define MODULE_DIR "/lib/modules"
-- #endif
--
- static int elf_endian;
- static int my_endian;
-
---- 18,23 ----
-***************
-*** 278,283 ****
---- 274,280 ----
- char *data;
- struct utsname buf;
- char *depname, *p;
-+ char *module_dir;
-
- data = grab_file(name, size);
- if (data) {
-***************
-*** 290,301 ****
- return NULL;
- }
-
- /* Search for it in modules.dep. */
- if (kernel) {
-! asprintf(&depname, "%s/%s/modules.dep", MODULE_DIR, kernel);
- } else {
- uname(&buf);
-! asprintf(&depname, "%s/%s/modules.dep", MODULE_DIR,
- buf.release);
- }
- data = grab_file(depname, size);
---- 287,302 ----
- return NULL;
- }
-
-+ if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+ module_dir = "/lib/modules";
-+ }
-+
- /* Search for it in modules.dep. */
- if (kernel) {
-! asprintf(&depname, "%s/%s/modules.dep", module_dir, kernel);
- } else {
- uname(&buf);
-! asprintf(&depname, "%s/%s/modules.dep", module_dir,
- buf.release);
- }
- data = grab_file(depname, size);
-Only in module-init-tools-3.4/: modinfo.c~
-Only in module-init-tools-3.4/: modinfo.c.rej
-diff -rc module-init-tools-3.4-orig/modprobe.c module-init-tools-3.4/modprobe.c
-*** module-init-tools-3.4-orig/modprobe.c 2007-10-07 23:57:23.000000000 +0200
---- module-init-tools-3.4/modprobe.c 2008-08-11 12:06:54.000000000 +0200
-***************
-*** 55,64 ****
- char filename[0];
- };
-
-- #ifndef MODULE_DIR
-- #define MODULE_DIR "/lib/modules"
-- #endif
--
- typedef void (*errfn_t)(const char *fmt, ...);
-
- /* Do we use syslog or stderr for messages? */
---- 55,60 ----
-***************
-*** 1433,1438 ****
---- 1429,1435 ----
- char *newname = NULL;
- char *aliasfilename, *symfilename;
- errfn_t error = fatal;
-+ char *module_dir = NULL;
- int flags = O_NONBLOCK|O_EXCL;
-
- /* Prepend options from environment. */
-***************
-*** 1559,1566 ****
- if (argc < optind + 1 && !dump_only && !list_only && !remove)
- print_usage(argv[0]);
-
-! dirname = NOFAIL(malloc(strlen(buf.release) + sizeof(MODULE_DIR) + 1));
-! sprintf(dirname, "%s/%s", MODULE_DIR, buf.release);
- aliasfilename = NOFAIL(malloc(strlen(dirname)
- + sizeof("/modules.alias")));
- sprintf(aliasfilename, "%s/modules.alias", dirname);
---- 1556,1567 ----
- if (argc < optind + 1 && !dump_only && !list_only && !remove)
- print_usage(argv[0]);
-
-! if((module_dir = getenv("MODULE_DIR")) == NULL) {
-! module_dir = "/lib/modules";
-! }
-!
-! dirname = NOFAIL(malloc(strlen(buf.release) + strlen(module_dir) + 2));
-! sprintf(dirname, "%s/%s", module_dir, buf.release);
- aliasfilename = NOFAIL(malloc(strlen(dirname)
- + sizeof("/modules.alias")));
- sprintf(aliasfilename, "%s/modules.alias", dirname);
-Only in module-init-tools-3.4/: modprobe.c~
-Only in module-init-tools-3.4/: modprobe.c.rej
+diff -Naur module-init-tools-3.16-orig/depmod.c module-init-tools-3.16/depmod.c
+--- module-init-tools-3.16-orig/depmod.c 2011-06-02 13:55:01.000000000 -0400
++++ module-init-tools-3.16/depmod.c 2011-10-01 23:30:14.947293695 -0400
+@@ -48,10 +48,6 @@
+
+ #include "testing.h"
+
+-#ifndef MODULE_DIR
+-#define MODULE_DIR "/lib/modules/"
+-#endif
+-
+ #ifndef MODULE_BUILTIN_KEY
+ #define MODULE_BUILTIN_KEY "built-in"
+ #endif
+@@ -1514,6 +1510,7 @@
+ struct module_overrides **overrides)
+ {
+ char *line;
++ char *module_dir;
+ unsigned int linenum = 0;
+ FILE *cfile;
+
+@@ -1536,6 +1533,9 @@
+ continue;
+ }
+
++ if((module_dir = getenv("MODULE_DIR")) == NULL)
++ module_dir = "/lib/modules/";
++
+ if (streq(cmd, "search")) {
+ char *search_path;
+
+@@ -1550,7 +1550,7 @@
+ continue;
+ }
+ nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
+- MODULE_DIR, kernelversion, search_path);
++ module_dir, kernelversion, search_path);
+ len = strlen(dirname);
+ *search = add_search(dirname, len, *search);
+ free(dirname);
+@@ -1565,7 +1565,7 @@
+ continue;
+
+ nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir,
+- MODULE_DIR, kernelversion, subdir, modname);
++ module_dir, kernelversion, subdir, modname);
+
+ *overrides = add_override(pathname, *overrides);
+ free(pathname);
+@@ -1737,6 +1737,7 @@
+ char *basedir = "", *dirname, *version;
+ char *system_map = NULL, *module_symvers = NULL;
+ int i;
++ char *module_dir;
+ const char *config = NULL;
+
+ if (native_endianness() == 0)
+@@ -1832,7 +1833,10 @@
+ if (optind == argc)
+ all = 1;
+
+- nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version);
++ if((module_dir = getenv("MODULE_DIR")) == NULL)
++ module_dir = "/lib/modules/";
++
++ nofail_asprintf(&dirname, "%s%s%s", basedir, module_dir, version);
+
+ if (maybe_all) {
+ if (!doing_stdout && !depfile_out_of_date(dirname))
+@@ -1850,7 +1854,7 @@
+ size_t len;
+
+ nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
+- MODULE_DIR, version);
++ module_dir, version);
+ len = strlen(dirname);
+ search = add_search(dirname, len, search);
+ }
+diff -Naur module-init-tools-3.16-orig/modinfo.c module-init-tools-3.16/modinfo.c
+--- module-init-tools-3.16-orig/modinfo.c 2011-06-02 13:55:01.000000000 -0400
++++ module-init-tools-3.16/modinfo.c 2011-10-01 23:32:15.335093548 -0400
+@@ -19,10 +19,6 @@
+ #include "zlibsupport.h"
+ #include "testing.h"
+
+-#ifndef MODULE_DIR
+-#define MODULE_DIR "/lib/modules"
+-#endif
+-
+ struct param
+ {
+ struct param *next;
+@@ -192,6 +188,7 @@
+ unsigned long size;
+ struct utsname buf;
+ char *depname, *p, *moddir;
++ char *module_dir;
+ struct elf_file *module;
+
+ if (strchr(name, '.') || strchr(name, '/')) {
+@@ -206,10 +203,14 @@
+ uname(&buf);
+ kernel = buf.release;
+ }
++
++ if((module_dir = getenv("MODULE_DIR")) == NULL)
++ module_dir = "/lib/modules/";
++
+ if (strlen(basedir))
+- nofail_asprintf(&moddir, "%s/%s/%s", basedir, MODULE_DIR, kernel);
++ nofail_asprintf(&moddir, "%s/%s/%s", basedir, module_dir, kernel);
+ else
+- nofail_asprintf(&moddir, "%s/%s", MODULE_DIR, kernel);
++ nofail_asprintf(&moddir, "%s/%s", module_dir, kernel);
+
+ /* Search for it in modules.dep. */
+ nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep");
+diff -Naur module-init-tools-3.16-orig/modprobe.c module-init-tools-3.16/modprobe.c
+--- module-init-tools-3.16-orig/modprobe.c 2011-06-02 13:55:01.000000000 -0400
++++ module-init-tools-3.16/modprobe.c 2011-10-01 23:34:04.111913368 -0400
+@@ -86,10 +86,6 @@
+
+ } modprobe_flags_t;
+
+-#ifndef MODULE_DIR
+-#define MODULE_DIR "/lib/modules"
+-#endif
+-
+ /**
+ * print_usage - output the prefered program usage
+ *
+@@ -2131,6 +2127,7 @@
+ char *cmdline_opts = NULL;
+ char *dirname;
+ errfn_t error = fatal;
++ char *module_dir;
+ int failed = 0;
+ modprobe_flags_t flags = 0;
+ struct modprobe_conf conf = {};
+@@ -2233,7 +2230,10 @@
+ if (argc < optind + 1 && !dump_config && !list_only)
+ print_usage(argv[0]);
+
+- nofail_asprintf(&dirname, "%s%s/%s", basedir, MODULE_DIR, buf.release);
++ if((module_dir = getenv("MODULE_DIR")) == NULL)
++ module_dir = "/lib/modules/";
++
++ nofail_asprintf(&dirname, "%s%s/%s", basedir, module_dir, buf.release);
+
+ /* Old-style -t xxx wildcard? Only with -l. */
+ if (list_only) {
+
diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix
index 745d6900e90..3f35d3304ce 100644
--- a/pkgs/os-specific/linux/qemu-kvm/default.nix
+++ b/pkgs/os-specific/linux/qemu-kvm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, zlib, SDL, alsaLib, pkgconfig, pciutils, libuuid, vde2
+{ stdenv, fetchurl, attr, zlib, SDL, alsaLib, pkgconfig, pciutils, libuuid, vde2
, libjpeg, libpng, ncurses, python, glib }:
assert stdenv.isLinux;
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
buildInputs =
- [ zlib SDL alsaLib pkgconfig pciutils libuuid vde2 libjpeg libpng
+ [ attr zlib SDL alsaLib pkgconfig pciutils libuuid vde2 libjpeg libpng
ncurses python glib
];
diff --git a/pkgs/os-specific/linux/shadow/default.nix b/pkgs/os-specific/linux/shadow/default.nix
index 6c7f9083c72..e4722f26d2b 100644
--- a/pkgs/os-specific/linux/shadow/default.nix
+++ b/pkgs/os-specific/linux/shadow/default.nix
@@ -4,7 +4,7 @@ stdenv.mkDerivation rec {
name = "shadow-4.1.4.2";
src = fetchurl {
- url = "ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/${name}.tar.bz2";
+ url = "http://pkg-shadow.alioth.debian.org/releases/${name}.tar.bz2";
sha256 = "1449ny7pdnwkavg92wvibapnkgdq5pas38nvl1m5xa37g5m7z64p";
};
diff --git a/pkgs/servers/sql/virtuoso/default.nix b/pkgs/servers/sql/virtuoso/default.nix
index 31dcc842a19..bb9426ad947 100644
--- a/pkgs/servers/sql/virtuoso/default.nix
+++ b/pkgs/servers/sql/virtuoso/default.nix
@@ -10,6 +10,16 @@ stdenv.mkDerivation rec {
buildInputs = [ libxml2 openssl readline gawk ];
+ patchFlags = "-p0";
+
+ patches =
+ [ (fetchurl {
+ url = "http://bugsfiles.kde.org/attachment.cgi?id=63510";
+ name = "virtuoso-charset-fix.diff";
+ sha256 = "09kxjhsy3rbys0bcxpmgga4sa6qjyy79dyl4n8b0gp1hnzjskvkz";
+ })
+ ];
+
CPP = "${stdenv.gcc}/bin/gcc -E";
configureFlags = "
@@ -19,13 +29,14 @@ stdenv.mkDerivation rec {
";
postInstall=''
- echo Move documentation
+ echo Moving documentation
mkdir -pv $out/share/doc
mv -v $out/share/virtuoso/doc $out/share/doc/${name}
find $out -name "*.a" -delete -o -name "*.jar" -delete -o -type d -empty -delete
'';
meta = with stdenv.lib; {
+ description = "SQL/RDF database used by, e.g., KDE-nepomuk";
homepage = http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/;
platforms = platforms.all;
maintainers = [ maintainers.urkud ];
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index a624d27c2af..f260ce90cb5 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -103,6 +103,7 @@ in
libXext = attrs: attrs // {
buildInputs = attrs.buildInputs ++ [xorg.libXau];
+ propagatedBuildInputs = [ xorg.xproto ];
preConfigure = setMalloc0ReturnsNullCrossCompiling;
};
diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/4.1.nix
similarity index 98%
rename from pkgs/shells/bash/default.nix
rename to pkgs/shells/bash/4.1.nix
index 3a0515199b6..02fb29c5dab 100644
--- a/pkgs/shells/bash/default.nix
+++ b/pkgs/shells/bash/4.1.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
inherit sha256;
};
in
- import ./bash-patches.nix patch;
+ import ./bash-4.1-patches.nix patch;
crossAttrs = {
configureFlags = baseConfigureFlags +
diff --git a/pkgs/shells/bash/4.2.nix b/pkgs/shells/bash/4.2.nix
new file mode 100644
index 00000000000..98fe43b0122
--- /dev/null
+++ b/pkgs/shells/bash/4.2.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl, readline ? null, interactive ? false, texinfo ? null, bison }:
+
+assert interactive -> readline != null;
+
+let
+ realName = "bash-4.2";
+ baseConfigureFlags = if interactive then "--with-installed-readline" else "--disable-readline";
+in
+
+stdenv.mkDerivation rec {
+ name = "${realName}-p${toString (builtins.length patches)}";
+
+ src = fetchurl {
+ url = "mirror://gnu/bash/${realName}.tar.gz";
+ sha256 = "a27a1179ec9c0830c65c6aa5d7dab60f7ce1a2a608618570f96bfa72e95ab3d8";
+ };
+
+ NIX_CFLAGS_COMPILE = ''
+ -DSYS_BASHRC="/etc/bashrc"
+ -DSYS_BASH_LOGOUT="/etc/bash_logout"
+ -DDEFAULT_PATH_VALUE="/no-such-path"
+ -DSTANDARD_UTILS_PATH="/no-such-path"
+ -DNON_INTERACTIVE_LOGIN_SHELLS
+ -DSSH_SOURCE_BASHRC
+ '';
+
+ patchFlags = "-p0";
+
+ patches =
+ let
+ patch = nr: sha256:
+ fetchurl {
+ url = "mirror://gnu/bash/bash-4.2-patches/bash42-${nr}";
+ inherit sha256;
+ };
+ in
+ import ./bash-4.2-patches.nix patch;
+
+ crossAttrs = {
+ configureFlags = baseConfigureFlags +
+ " bash_cv_job_control_missing=nomissing bash_cv_sys_named_pipes=nomissing";
+ };
+
+ configureFlags = baseConfigureFlags;
+
+ # Note: Bison is needed because the patches above modify parse.y.
+ buildNativeInputs = [bison]
+ ++ stdenv.lib.optional (texinfo != null) texinfo
+ ++ stdenv.lib.optional interactive readline;
+
+ postInstall = ''
+ # Add an `sh' -> `bash' symlink.
+ ln -s bash "$out/bin/sh"
+ '';
+
+ 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 "");
+
+ longDescription = ''
+ Bash is the shell, or command language interpreter, that will
+ appear in the GNU operating system. Bash is an sh-compatible
+ shell that incorporates useful features from the Korn shell
+ (ksh) and C shell (csh). It is intended to conform to the IEEE
+ POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It offers
+ functional improvements over sh for both programming and
+ interactive use. In addition, most sh scripts can be run by
+ Bash without modification.
+ '';
+
+ license = "GPLv3+";
+
+ maintainers = [ stdenv.lib.maintainers.ludo stdenv.lib.maintainers.simons ];
+ };
+
+ passthru = {
+ shellPath = "/bin/bash";
+ };
+}
diff --git a/pkgs/shells/bash/bash-patches.nix b/pkgs/shells/bash/bash-4.1-patches.nix
similarity index 100%
rename from pkgs/shells/bash/bash-patches.nix
rename to pkgs/shells/bash/bash-4.1-patches.nix
diff --git a/pkgs/shells/bash/bash-4.2-patches.nix b/pkgs/shells/bash/bash-4.2-patches.nix
new file mode 100644
index 00000000000..7f4957c500c
--- /dev/null
+++ b/pkgs/shells/bash/bash-4.2-patches.nix
@@ -0,0 +1,14 @@
+# Automatically generated by `update-patch-set.sh'; do not edit.
+
+patch: [
+(patch "001" "0yml2b6yarrr0dzv7h45lz4126i228hvqbqacqzg4jkcawla0v4d")
+(patch "002" "1yffzfxryvqns513yv3r46slkysa3nbqv40442xfxb4rw4kwkfpy")
+(patch "003" "1kdl9hcpf1m7gz0ja3mvin3syprl2kmbxc3wm27391wc04apq2js")
+(patch "004" "1ha0453cjqdgkns2xkdgpd2izj5b6xlsc9a2w5b3sn6j63wb0d2f")
+(patch "005" "182r2iyk27l28b8kyppfavvzxhax6vn5n1zyy3yirf0463klj5x8")
+(patch "006" "1labcciavnfmn0alncz1x92ydrsriikcimw24rwzmnidbaa4h4f9")
+(patch "007" "15byzdqvavc3zg2lbzzdwpdy43kzdnvmr89nya211pa3yjn2cn20")
+(patch "008" "0dr4p83m2xpxhvd61yny0gdlasq6r9mpyiz220998y0alq8hs213")
+(patch "009" "086b9jkyjgf2zhwln72d7s5x759iskgg3r4hdrw6b5y1ni059vg7")
+(patch "010" "1p23m9kssdmpnjfp96bjmmshzf25cdzlyjygdw8j6sayqa159z5c")
+]
diff --git a/pkgs/shells/bash/update-patch-set.sh b/pkgs/shells/bash/update-patch-set.sh
index ded684571b0..003c7a26d20 100755
--- a/pkgs/shells/bash/update-patch-set.sh
+++ b/pkgs/shells/bash/update-patch-set.sh
@@ -16,7 +16,7 @@ VERSION="$2"
VERSION_CONDENSED="$(echo $VERSION | sed -es/\\.//g)"
GPG="$(if $(type -P gpg2 > /dev/null); then echo gpg2; else echo gpg; fi)"
-PATCH_LIST="$PROJECT-patches.nix"
+PATCH_LIST="$PROJECT-$VERSION-patches.nix"
set -e
diff --git a/pkgs/tools/networking/jwhois/connect.patch b/pkgs/tools/networking/jwhois/connect.patch
new file mode 100644
index 00000000000..c26025a8239
--- /dev/null
+++ b/pkgs/tools/networking/jwhois/connect.patch
@@ -0,0 +1,60 @@
+https://bugzilla.redhat.com/attachment.cgi?id=265091
+
+This fixes somewhat reversed logic of trying to connect to WHOIS server.
+Tue Nov 20 2007, Lubomir Kundrak
+
+--- jwhois-4.0/src/utils.c.connect 2007-06-26 09:00:20.000000000 +0200
++++ jwhois-4.0/src/utils.c 2007-11-20 17:05:33.000000000 +0100
+@@ -247,7 +247,7 @@ make_connect(const char *host, int port)
+ {
+ return -1;
+ }
+- while (res)
++ for (; res; res = res->ai_next)
+ {
+ sa = res->ai_addr;
+ sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
+@@ -266,15 +266,15 @@ make_connect(const char *host, int port)
+ flags = fcntl(sockfd, F_GETFL, 0);
+ if (fcntl(sockfd, F_SETFL, flags|O_NONBLOCK) == -1)
+ {
++ close (sockfd);
+ return -1;
+ }
+
+-
+ error = connect(sockfd, res->ai_addr, res->ai_addrlen);
+-
+ if (error < 0 && errno != EINPROGRESS)
+ {
+- break;
++ close (sockfd);
++ continue;
+ }
+
+ FD_ZERO(&fdset);
+@@ -283,18 +283,20 @@ make_connect(const char *host, int port)
+ error = select(FD_SETSIZE, NULL, &fdset, NULL, &timeout);
+ if (error == 0)
+ {
+- break;
++ close (sockfd);
++ return -1;
+ }
+
+ retlen = sizeof(retval);
+ error = getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &retval, &retlen);
+ if (error < 0 || retval)
+ {
+- break;
++ close (sockfd);
++ return -1;
+ }
+- res = res->ai_next;
++
++ break;
+ }
+- if (error < 0 || retval) return -1;
+ #endif
+
+ return sockfd;
diff --git a/pkgs/tools/networking/jwhois/default.nix b/pkgs/tools/networking/jwhois/default.nix
index 40cc1605655..54d8acd3213 100644
--- a/pkgs/tools/networking/jwhois/default.nix
+++ b/pkgs/tools/networking/jwhois/default.nix
@@ -10,6 +10,8 @@ stdenv.mkDerivation {
postInstall = "ln -s jwhois $out/bin/whois";
+ patches = [ ./connect.patch ];
+
meta = {
description = "A client for the WHOIS protocol allowing you to query the owner of a domain name";
homepage = http://www.gnu.org/software/jwhois/;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 98d38c8d14b..70e872fa863 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1474,9 +1474,8 @@ let
unshield = callPackage ../tools/archivers/unshield { };
- unzip = unzip552;
+ unzip = unzip60;
- # TODO: remove in the next stdenv update.
unzip552 = callPackage ../tools/archivers/unzip/5.52.nix { };
unzip60 = callPackage ../tools/archivers/unzip/6.0.nix { };
@@ -1596,11 +1595,11 @@ let
### SHELLS
- bash = lowPrio (callPackage ../shells/bash {
+ bash = lowPrio (callPackage ../shells/bash/4.1.nix {
texinfo = null;
});
- bashInteractive = appendToName "interactive" (callPackage ../shells/bash {
+ bashInteractive = appendToName "interactive" (callPackage ../shells/bash/4.2.nix {
interactive = true;
});
@@ -2601,9 +2600,9 @@ let
regina = callPackage ../development/interpreters/regina {};
- ruby18 = callPackage ../development/interpreters/ruby { };
+ ruby18 = callPackage ../development/interpreters/ruby/ruby-18.nix { };
ruby19 = callPackage ../development/interpreters/ruby/ruby-19.nix { };
- ruby = ruby18;
+ ruby = callPackage ../development/interpreters/ruby { };
rubyLibs = recurseIntoAttrs (callPackage ../development/interpreters/ruby/libs.nix { });
@@ -3475,6 +3474,8 @@ let
inherit (gnome) gtk glib;
};
+ google_perftools = callPackage ../development/libraries/google-perftools { };
+
#GMP ex-satellite, so better keep it near gmp
mpfr = callPackage ../development/libraries/mpfr { };
@@ -4442,6 +4443,8 @@ let
# optional
};
+ soprano = callPackage ../development/libraries/soprano { };
+
soqt = callPackage ../development/libraries/soqt { };
speechd = callPackage ../development/libraries/speechd { };
@@ -4993,7 +4996,7 @@ let
xorg = recurseIntoAttrs (import ../servers/x11/xorg/default.nix {
inherit fetchurl fetchsvn stdenv pkgconfig freetype fontconfig
libxslt expat libdrm libpng zlib perl mesa
- xkeyboard_config dbus hal libuuid openssl gperf m4
+ xkeyboard_config dbus libuuid openssl gperf m4
autoconf libtool xmlto asciidoc udev flex bison python;
automake = automake110x;
});
@@ -5546,7 +5549,8 @@ let
kernelPatches =
[ #kernelPatches.fbcondecor_2_6_38
kernelPatches.sec_perm_2_6_24
- kernelPatches.aufs2_1_3_0
+ kernelPatches.aufs3_0
+ #kernelPatches.aufs2_1_3_0
#kernelPatches.mips_restart_2_6_36
];
};
@@ -5556,6 +5560,7 @@ let
kernelPatches =
[ #kernelPatches.fbcondecor_2_6_38
kernelPatches.sec_perm_2_6_24
+ kernelPatches.efi_stub
#kernelPatches.aufs2_1_2_6_38
#kernelPatches.mips_restart_2_6_36
];
@@ -5577,17 +5582,29 @@ let
aufs = callPackage ../os-specific/linux/aufs { };
- aufs2 = callPackage ../os-specific/linux/aufs2 { };
+ aufs2 = if kernel.features ? aufs2 then
+ callPackage ../os-specific/linux/aufs2 { }
+ else null;
aufs2_1 = if kernel.features ? aufs2_1 then
callPackage ../os-specific/linux/aufs2.1 { }
else null;
+ aufs3 = if kernel.features ? aufs3 then
+ callPackage ../os-specific/linux/aufs3 { }
+ else null;
+
+ aufs2_util = if kernel.features ? aufs2 then
+ callPackage ../os-specific/linux/aufs2-util { }
+ else null;
+
aufs2_1_util = if kernel.features ? aufs2_1 then
callPackage ../os-specific/linux/aufs2.1-util { }
else null;
- aufs2_util = callPackage ../os-specific/linux/aufs2-util { };
+ aufs3_util = if kernel.features ? aufs3 then
+ callPackage ../os-specific/linux/aufs3-util { }
+ else null;
blcr = callPackage ../os-specific/linux/blcr {
#libtool = libtool_1_5; # libtool 2 causes a fork bomb
@@ -6559,12 +6576,17 @@ let
firefox60Wrapper = wrapFirefox firefox60Pkgs.firefox "firefox" "";
- firefox70b1Pkgs = callPackage ../applications/networking/browsers/firefox/7.0.nix {
+ firefox70Pkgs = callPackage ../applications/networking/browsers/firefox/7.0.nix {
inherit (gtkLibs) gtk pango;
inherit (gnome) libIDL;
};
- firefox70b1Wrapper = lowPrio (wrapFirefox firefox70b1Pkgs.firefox "firefox" "");
+ firefox70Wrapper = lowPrio (wrapFirefox firefox70Pkgs.firefox "firefox" "");
+
+ firefox80bPkgs = callPackage ../applications/networking/browsers/firefox/8.0.nix {
+ inherit (gtkLibs) gtk pango;
+ inherit (gnome) libIDL;
+ };
flac = callPackage ../applications/audio/flac { };
@@ -7055,7 +7077,9 @@ let
};
opera = callPackage ../applications/networking/browsers/opera {
- qt = qt3;
+ inherit (pkgs.gtkLibs) gdk_pixbuf atk;
+ inherit (pkgs.kde4) kdelibs;
+ inherit (pkgs.gst_all) gstreamer gstPluginsBase;
};
pan = callPackage ../applications/networking/newsreaders/pan {
@@ -7832,6 +7856,11 @@ let
enlightenment = callPackage ../desktops/enlightenment { };
+ # e17 = recurseIntoAttrs (
+ # let callPackage = newScope pkgs.e17; in
+ # import ../desktops/e17 { inherit callPackage pkgs; }
+ # );
+
gnome28 = recurseIntoAttrs (import ../desktops/gnome-2.28 pkgs);
gnome = gnome28;
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index f7edf77d32a..907a6dac911 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -474,6 +474,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
time = self.time_1_1_3;
};
+ convertibleText = callPackage ../development/libraries/haskell/convertible-text {};
+
continuedFractions = callPackage ../development/libraries/haskell/continued-fractions {};
converge = callPackage ../development/libraries/haskell/converge {};
@@ -504,6 +506,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
dataenc = callPackage ../development/libraries/haskell/dataenc {};
+ dataObject = callPackage ../development/libraries/haskell/data-object {};
+
+ dataObjectYaml = callPackage ../development/libraries/haskell/data-object-yaml {};
+
dataReify = callPackage ../development/libraries/haskell/data-reify {};
datetime = callPackage ../development/libraries/haskell/datetime {};
@@ -878,7 +884,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
network_2_2_1_7 = callPackage ../development/libraries/haskell/network/2.2.1.7.nix {};
network_2_3_0_2 = callPackage ../development/libraries/haskell/network/2.3.0.2.nix {};
network_2_3_0_5 = callPackage ../development/libraries/haskell/network/2.3.0.5.nix {};
- network = self.network_2_2_1_4;
+ network_2_3_0_6 = callPackage ../development/libraries/haskell/network/2.3.0.6.nix {};
+ network = self.network_2_3_0_6;
nixosTypes = callPackage ../development/libraries/haskell/nixos-types {};
@@ -1292,6 +1299,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
xssSanitize = callPackage ../development/libraries/haskell/xss-sanitize {};
+ yaml = callPackage ../development/libraries/haskell/yaml {};
+
yap = callPackage ../development/libraries/haskell/yap {};
yesod = callPackage ../development/libraries/haskell/yesod {};
@@ -1369,6 +1378,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
haddock_2_4_2 = callPackage ../development/tools/documentation/haddock/2.4.2.nix {};
haddock_2_7_2 = callPackage ../development/tools/documentation/haddock/2.7.2.nix {};
haddock_2_9_2 = callPackage ../development/tools/documentation/haddock/2.9.2.nix {};
+ haddock_2_9_3 = callPackage ../development/tools/documentation/haddock/2.9.3.nix {};
haddock = self.haddock_2_7_2;
happy_1_18_4 = callPackage ../development/tools/parsing/happy/1.18.4.nix {};
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 8c8665842a3..ae902dabe5d 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -2809,6 +2809,31 @@ rec {
];
};
+ StatisticsDescriptive = buildPerlPackage rec {
+ name = "Statistics-Descriptive-3.0202";
+ src = fetchurl {
+ url = "mirror://cpan/modules/by-module/Statistics/${name}.tar.gz";
+ sha256 = "0y8l3dkhfc2gqwfigrg363ac7pxcyshdna66afpdvs8r1gd53a1i";
+ };
+ };
+
+ StatisticsDistributions = buildPerlPackage rec {
+ name = "Statistics-Distributions-1.02";
+ src = fetchurl {
+ url = "mirror://cpan/modules/by-module/Statistics/${name}.tar.gz";
+ sha256 = "1j1kswl98f4i9dn176f9aa3y9bissx2sscga5jm3gjl4pxm3k7zr";
+ };
+ };
+
+ StatisticsTTest = buildPerlPackage rec {
+ name = "Statistics-TTest-1.1.0";
+ src = fetchurl {
+ url = "mirror://cpan/modules/by-module/Statistics/${name}.tar.gz";
+ sha256 = "0rkifgzm4rappiy669dyi6lyxn2sdqaf0bl6gndlfa67b395kndj";
+ };
+ propagatedBuildInputs = [ StatisticsDescriptive StatisticsDistributions ];
+ };
+
StringFormat = buildPerlPackage rec {
name = "String-Format-1.16";
src = fetchurl {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 8ec9e1a0896..edf38bff72a 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -614,11 +614,11 @@ let pythonPackages = python.modules // rec {
jinja2 = buildPythonPackage {
- name = "jinja2-2.2.1";
+ name = "jinja2-2.6";
src = fetchurl {
- url = "http://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.2.1.tar.gz";
- md5 = "fea849d68891218eb0b21c170f1c32d5";
+ url = "http://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.6.tar.gz";
+ md5 = "1c49a8825c993bfdcf55bb36897d28a2";
};
meta = {
@@ -765,11 +765,13 @@ let pythonPackages = python.modules // rec {
doCheck = false;
- buildInputs = [ dateutil numpy pkgs.freetype pkgs.libpng pkgs.pkgconfig pkgs.tcl pkgs.tk pkgs.xlibs.libX11 ];
+ propagatedBuildInputs = [ dateutil numpy pkgs.freetype pkgs.libpng pkgs.pkgconfig pkgs.tcl pkgs.tk pkgs.xlibs.libX11 ];
meta = {
description = "python plotting library, making publication quality plots";
homepage = "http://matplotlib.sourceforge.net/";
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = [ stdenv.lib.maintainers.simons ];
};
});
@@ -1816,7 +1818,7 @@ let pythonPackages = python.modules // rec {
md5 = "42c722d48e52d4888193965dd473adb5";
};
- propagatedBuildInputs = [docutils jinja2 pygments];
+ propagatedBuildInputs = [docutils jinja2 pygments];
meta = {
description = "Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects.";
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index 1e189d06242..09be02ba915 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -240,7 +240,6 @@ with (import ./release-lib.nix);
pkgconfig = all;
pltScheme = linux;
pmccabe = linux;
- policykit = linux;
portmap = linux;
postgresql = all;
postfix = linux;
@@ -387,6 +386,7 @@ with (import ./release-lib.nix);
firefox36Pkgs.firefox = linux;
firefox50Pkgs.firefox = linux;
firefox60Pkgs.firefox = linux;
+ firefox70Pkgs.firefox = linux;
gnome = {
gnome_panel = linux;
@@ -436,13 +436,6 @@ with (import ./release-lib.nix);
};
*/
- kde3 = {
- kdebase = linux;
- kdelibs = linux;
- k3b = linux;
- kile = linux;
- };
-
linuxPackages_2_6_25 = {
aufs = linux;
kernel = linux;