diff options
26 files changed, 560 insertions, 57 deletions
diff --git a/lib/licenses.nix b/lib/licenses.nix index 95098aba1f29..812592c74f27 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -215,6 +215,11 @@ rec { url = "http://research.microsoft.com/en-us/projects/pex/msr-la.txt"; }; + ncsa = spdx { + shortName = "NCSA"; + fullName = "University of Illinois/NCSA Open Source License"; + }; + ofl = spdx { shortName = "OFL-1.1"; fullName = "SIL Open Font License 1.1"; diff --git a/lib/maintainers.nix b/lib/maintainers.nix index d3d46fc6862e..3de82db1cd98 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -37,6 +37,7 @@ coroa = "Jonas Hörsch <jonas@chaoflow.net>"; cstrahan = "Charles Strahan <charles.c.strahan@gmail.com>"; DamienCassou = "Damien Cassou <damien.cassou@gmail.com>"; + doublec = "Chris Double <chris.double@double.co.nz>"; ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>"; edwtjo = "Edward Tjörnhammar <ed@cflags.cc>"; eelco = "Eelco Dolstra <eelco.dolstra@logicblox.com>"; @@ -44,6 +45,7 @@ ertes = "Ertugrul Söylemez <ertesx@gmx.de>"; falsifian = "James Cook <james.cook@utoronto.ca>"; flosse = "Markus Kohlhase <mail@markus-kohlhase.de>"; + funfunctor = "Edward O'Callaghan <eocallaghan@alterapraxis.com>"; fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>"; garbas = "Rok Garbas <rok@garbas.si>"; goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>"; diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix index 7783f13b14b1..f1ddd377ed01 100644 --- a/nixos/modules/config/users-groups.nix +++ b/nixos/modules/config/users-groups.nix @@ -100,6 +100,36 @@ let description = "The path to the user's shell."; }; + subUidRanges = mkOption { + type = types.listOf types.optionSet; + default = []; + example = [ + { startUid = 1000; count = 1; } + { startUid = 100001; count = 65534; } + ]; + options = [ subordinateUidRange ]; + description = '' + Subordinate user ids that user is allowed to use. + They are set into <filename>/etc/subuid</filename> and are used + by <literal>newuidmap</literal> for user namespaces. + ''; + }; + + subGidRanges = mkOption { + type = types.listOf types.optionSet; + default = []; + example = [ + { startGid = 100; count = 1; } + { startGid = 1001; count = 999; } + ]; + options = [ subordinateGidRange ]; + description = '' + Subordinate group ids that user is allowed to use. + They are set into <filename>/etc/subgid</filename> and are used + by <literal>newgidmap</literal> for user namespaces. + ''; + }; + createHome = mkOption { type = types.bool; default = false; @@ -211,6 +241,36 @@ let }; + subordinateUidRange = { + startUid = mkOption { + type = types.int; + description = '' + Start of the range of subordinate user ids that user is + allowed to use. + ''; + }; + count = mkOption { + type = types.int; + default = 1; + description = ''Count of subordinate user ids''; + }; + }; + + subordinateGidRange = { + startGid = mkOption { + type = types.int; + description = '' + Start of the range of subordinate group ids that user is + allowed to use. + ''; + }; + count = mkOption { + type = types.int; + default = 1; + description = ''Count of subordinate group ids''; + }; + }; + getGroup = gname: let groups = mapAttrsToList (n: g: g) ( @@ -265,6 +325,20 @@ let )) ); + mkSubuidEntry = user: concatStrings ( + map (range: "${user.name}:${toString range.startUid}:${toString range.count}\n") + user.subUidRanges); + + subuidFile = concatStrings (map mkSubuidEntry ( + sortOn "uid" (attrValues cfg.extraUsers))); + + mkSubgidEntry = user: concatStrings ( + map (range: "${user.name}:${toString range.startGid}:${toString range.count}\n") + user.subGidRanges); + + subgidFile = concatStrings (map mkSubgidEntry ( + sortOn "uid" (attrValues cfg.extraUsers))); + # If mutableUsers is true, this script adds all users/groups defined in # users.extra{Users,Groups} to /etc/{passwd,group} iff there isn't any # existing user/group with the same name in those files. @@ -504,6 +578,15 @@ in { # for backwards compatibility system.activationScripts.groups = stringAfter [ "users" ] ""; + environment.etc."subuid" = { + text = subuidFile; + mode = "0644"; + }; + environment.etc."subgid" = { + text = subgidFile; + mode = "0644"; + }; + assertions = [ { assertion = !cfg.enforceIdUniqueness || (uidsAreUnique && gidsAreUnique); message = "uids and gids must be unique!"; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index e2f2921b8701..77a14fd53863 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -61,6 +61,7 @@ ./programs/ssmtp.nix ./programs/venus.nix ./programs/wvdial.nix + ./programs/freetds.nix ./programs/zsh/zsh.nix ./rename.nix ./security/apparmor.nix diff --git a/nixos/modules/programs/freetds.nix b/nixos/modules/programs/freetds.nix new file mode 100644 index 000000000000..398fd104363b --- /dev/null +++ b/nixos/modules/programs/freetds.nix @@ -0,0 +1,61 @@ +# Global configuration for freetds environment. + +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.environment.freetds; + +in +{ + ###### interface + + options = { + + environment.freetds = mkOption { + type = types.attrsOf types.str; + default = {}; + example = { + MYDATABASE = + '' + host = 10.0.2.100 + port = 1433 + tds version = 7.2 + ''; + }; + description = + '' + Configure freetds database entries. Each attribute denotes + a section within freetds.conf, and the value (a string) is the config + content for that section. When at least one entry is configured + the global environment variables FREETDSCONF, FREETDS and SYBASE + will be configured to allow the programs that use freetds to find the + library and config. + ''; + + }; + + }; + + ###### implementation + + config = mkIf (length (attrNames cfg) > 0) { + + environment.variables.FREETDSCONF = "/etc/freetds.conf"; + environment.variables.FREETDS = "/etc/freetds.conf"; + environment.variables.SYBASE = "${pkgs.freetds}"; + + environment.etc."freetds.conf" = { text = + (concatStrings (mapAttrsToList (name: value: + '' + [${name}] + ${value} + '' + ) cfg)); + }; + + }; + +} diff --git a/nixos/modules/programs/shadow.nix b/nixos/modules/programs/shadow.nix index 658b08b3d870..5a467e112c23 100644 --- a/nixos/modules/programs/shadow.nix +++ b/nixos/modules/programs/shadow.nix @@ -100,7 +100,9 @@ in chgpasswd = { rootOK = true; }; }; - security.setuidPrograms = [ "passwd" "chfn" "su" "newgrp" ]; + security.setuidPrograms = [ "passwd" "chfn" "su" "newgrp" + "newuidmap" "newgidmap" # new in shadow 4.2.x + ]; }; diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix index 866707c3a913..89aa9bdb6b68 100644 --- a/nixos/modules/services/networking/dhcpcd.nix +++ b/nixos/modules/services/networking/dhcpcd.nix @@ -6,6 +6,8 @@ let dhcpcd = if !config.boot.isContainer then pkgs.dhcpcd else pkgs.dhcpcd.override { udev = null; }; + cfg = config.networking.dhcpcd; + # Don't start dhcpcd on explicitly configured interfaces or on # interfaces that are part of a bridge, bond or sit device. ignoredInterfaces = @@ -38,7 +40,10 @@ let # (Xen) and virbr* and vnet* (libvirt). denyinterfaces ${toString ignoredInterfaces} lo peth* vif* tap* tun* virbr* vnet* vboxnet* sit* - ${config.networking.dhcpcd.extraConfig} + # Use the list of allowed interfaces if specified + ${optionalString (cfg.allowInterfaces != null) "allowinterfaces ${toString cfg.allowInterfaces}"} + + ${cfg.extraConfig} ''; # Hook for emitting ip-up/ip-down events. @@ -81,6 +86,17 @@ in ''; }; + networking.dhcpcd.allowInterfaces = mkOption { + type = types.nullOr (types.listOf types.str); + default = null; + description = '' + Enable the DHCP client for any interface whose name matches + any of the shell glob patterns in this list. Any interface not + explicitly matched by this pattern will be denied. This pattern only + applies when non-null. + ''; + }; + networking.dhcpcd.extraConfig = mkOption { type = types.lines; default = ""; diff --git a/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix index 7ca35a8255f9..401d5cf2f36a 100644 --- a/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix +++ b/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix @@ -6,11 +6,11 @@ # use packaged gnome3.gnome_icon_theme_symbolic stdenv.mkDerivation rec { - name = "gitg-0.3.2"; + name = "gitg-3.13.91"; src = fetchurl { - url = "mirror://gnome/sources/gitg/0.3/${name}.tar.xz"; - sha256 = "03vc59d1r3326piqdph6qjqnc40chm1lpg52lpf8466ddjs0x8vp"; + url = "mirror://gnome/sources/gitg/3.13/${name}.tar.xz"; + sha256 = "1c2016grvgg5f3l5xkracz85rblsc1a4brzr6vgn6kh2h494rv37"; }; preCheck = '' diff --git a/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix index 17c3b4fa0a8c..82e2b5855094 100644 --- a/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix +++ b/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix @@ -1,18 +1,20 @@ -{ stdenv, fetchurl, gnome3, libtool, pkgconfig +{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala , gtk_doc, gobjectIntrospection, libgit2, glib }: stdenv.mkDerivation rec { name = "libgit2-glib-${version}"; - version = "0.0.10"; + version = "0.0.20"; src = fetchurl { url = "https://github.com/GNOME/libgit2-glib/archive/v${version}.tar.gz"; - sha256 = "0zn3k85jw6yks8s5ca8dyh9mwh4if1lni9gz9bd5lqlpa803ixxs"; + sha256 = "1s2hj0ji73ishniqvr6mx90l1ji5jjwwrwhp91i87fxk0d3sry5x"; }; + + cmakeFlags = "-DTHREADSAFE=ON"; configureScript = "sh ./autogen.sh"; - buildInputs = [ gnome3.gnome_common libtool pkgconfig + buildInputs = [ gnome3.gnome_common libtool pkgconfig vala gtk_doc gobjectIntrospection libgit2 glib ]; meta = with stdenv.lib; { diff --git a/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix index 7ca35a8255f9..401d5cf2f36a 100644 --- a/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix +++ b/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix @@ -6,11 +6,11 @@ # use packaged gnome3.gnome_icon_theme_symbolic stdenv.mkDerivation rec { - name = "gitg-0.3.2"; + name = "gitg-3.13.91"; src = fetchurl { - url = "mirror://gnome/sources/gitg/0.3/${name}.tar.xz"; - sha256 = "03vc59d1r3326piqdph6qjqnc40chm1lpg52lpf8466ddjs0x8vp"; + url = "mirror://gnome/sources/gitg/3.13/${name}.tar.xz"; + sha256 = "1c2016grvgg5f3l5xkracz85rblsc1a4brzr6vgn6kh2h494rv37"; }; preCheck = '' diff --git a/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix index 17c3b4fa0a8c..94776c90cf99 100644 --- a/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix +++ b/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix @@ -1,18 +1,18 @@ -{ stdenv, fetchurl, gnome3, libtool, pkgconfig +{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala , gtk_doc, gobjectIntrospection, libgit2, glib }: stdenv.mkDerivation rec { name = "libgit2-glib-${version}"; - version = "0.0.10"; + version = "0.0.20"; src = fetchurl { url = "https://github.com/GNOME/libgit2-glib/archive/v${version}.tar.gz"; - sha256 = "0zn3k85jw6yks8s5ca8dyh9mwh4if1lni9gz9bd5lqlpa803ixxs"; + sha256 = "1s2hj0ji73ishniqvr6mx90l1ji5jjwwrwhp91i87fxk0d3sry5x"; }; configureScript = "sh ./autogen.sh"; - buildInputs = [ gnome3.gnome_common libtool pkgconfig + buildInputs = [ gnome3.gnome_common libtool pkgconfig vala gtk_doc gobjectIntrospection libgit2 glib ]; meta = with stdenv.lib; { diff --git a/pkgs/development/compilers/emscripten-fastcomp/default.nix b/pkgs/development/compilers/emscripten-fastcomp/default.nix new file mode 100644 index 000000000000..3eb9aef528c0 --- /dev/null +++ b/pkgs/development/compilers/emscripten-fastcomp/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchgit, python }: + +let + tag = "1.21.0"; +in + +stdenv.mkDerivation rec { + name = "emscripten-fastcomp-${tag}"; + + srcFC = fetchgit { + url = git://github.com/kripken/emscripten-fastcomp; + rev = "refs/tags/${tag}"; + sha256 = "0mcxzg2cfg0s1vfm3bh1ar4xsddb6xkv1dsdbgnpx38lbj1mvfs1"; + }; + + srcFL = fetchgit { + url = git://github.com/kripken/emscripten-fastcomp-clang; + rev = "refs/tags/${tag}"; + sha256 = "0s2jcn36d236cfpryjpgaazjp3cg83d0h78g6kk1j6vdppv3vgnp"; + }; + + buildInputs = [ python ]; + buildCommand = '' + cp -as ${srcFC} $TMPDIR/src + chmod +w $TMPDIR/src/tools + cp -as ${srcFL} $TMPDIR/src/tools/clang + + chmod +w $TMPDIR/src + mkdir $TMPDIR/src/build + cd $TMPDIR/src/build + + ../configure --enable-optimized --disable-assertions --enable-targets=host,js + make + cp -a Release/bin $out + ''; + meta = with stdenv.lib; { + homepage = https://github.com/kripken/emscripten-fastcomp; + description = "emscripten llvm"; + maintainers = with maintainers; [ bosu ]; + license = "University of Illinois/NCSA Open Source License"; + }; +} diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix new file mode 100644 index 000000000000..43f256b58b04 --- /dev/null +++ b/pkgs/development/compilers/emscripten/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchgit, emscriptenfastcomp, python, nodejs, closurecompiler, jre }: + +let + tag = "1.21.0"; +in + +stdenv.mkDerivation rec { + name = "emscripten-${tag}"; + + src = fetchgit { + url = git://github.com/kripken/emscripten; + rev = "refs/tags/${tag}"; + sha256 = "0y17ab4nhd3521b50sv2i2667w0rlcnmlkpkgw5j3fsh8awxgf32"; + }; + + buildCommand = '' + mkdir $out + cp -a $src $out/bin + chmod -R +w $out/bin + grep -rl '^#!/usr.*python' $out/bin | xargs sed -i -s 's@^#!/usr.*python.*@#!${python}/bin/python@' + sed -i -e "s,EM_CONFIG = '~/.emscripten',EM_CONFIG = '$out/config'," $out/bin/tools/shared.py + sed -i -e 's,^.*did not see a source tree above the LLVM.*$, return True,' $out/bin/tools/shared.py + sed -i -e 's,def check_sanity(force=False):,def check_sanity(force=False):\n return,' $out/bin/tools/shared.py + + echo "EMSCRIPTEN_ROOT = '$out/bin'" > $out/config + echo "LLVM_ROOT = '${emscriptenfastcomp}'" >> $out/config + echo "PYTHON = '${python}/bin/python'" >> $out/config + echo "NODE_JS = '${nodejs}/bin/node'" >> $out/config + echo "JS_ENGINES = [NODE_JS]" >> $out/config + echo "COMPILER_ENGINE = NODE_JS" >> $out/config + echo "CLOSURE_COMPILER = '${closurecompiler}/bin/closure-compiler'" >> $out/config + echo "JAVA = '${jre}/bin/java'" >> $out/config + ''; + meta = with stdenv.lib; { + homepage = https://github.com/kripken/emscripten; + description = "An LLVM-to-JavaScript Compiler"; + maintainers = with maintainers; [ bosu ]; + license = with licenses; ncsa; + }; +} diff --git a/pkgs/development/interpreters/self/default.nix b/pkgs/development/interpreters/self/default.nix new file mode 100644 index 000000000000..98e1edee3879 --- /dev/null +++ b/pkgs/development/interpreters/self/default.nix @@ -0,0 +1,44 @@ +{ fetchurl, fetchgit, stdenv, xlibs, gcc44, makeWrapper, ncurses, cmake }: + +stdenv.mkDerivation rec { + # The Self wrapper stores source in $XDG_DATA_HOME/self or ~/.local/share/self + # so that it can be written to when using the Self transposer. Running 'Self' + # after installation runs without an image. You can then build a Self image with: + # $ cd ~/.local/share/self/objects + # $ Self + # > 'worldBuilder.self' _RunScript + # + # This image can later be started with: + # $ Self -s myimage.snap + # + version = "4.5.0"; + name = "self-${version}"; + + src = fetchgit { + url = "https://github.com/russellallen/self"; + rev = "d16bcaad3c5092dae81ad0b16d503f2a53b8ef86"; + sha256 = "966025b71542e44fc830b951f404f5721ad410ed24f7236fd0cd820ea0fc5731"; + }; + + # gcc 4.6 and above causes crashes on Self startup but gcc 4.4 works. + buildInputs = [ gcc44 ncurses xlibs.libX11 xlibs.libXext makeWrapper cmake ]; + + selfWrapper = ./self; + + installPhase = '' + mkdir -p "$out"/bin + cp ./vm/Self "$out"/bin/Self.wrapped + mkdir -p "$out"/share/self + cp -r ../objects "$out"/share/self/ + makeWrapper $selfWrapper $out/bin/Self \ + --set SELF_ROOT "$out" + ''; + + meta = { + description = "A prototype-based dynamic object-oriented programming language, environment, and virtual machine"; + homepage = "http://selflanguage.org/"; + license = stdenv.lib.licenses.bsd3; + maintainer = [ stdenv.lib.maintainers.doublec ]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/pkgs/development/interpreters/self/self b/pkgs/development/interpreters/self/self new file mode 100755 index 000000000000..d504682086b0 --- /dev/null +++ b/pkgs/development/interpreters/self/self @@ -0,0 +1,18 @@ +#! /usr/bin/env bash + +export SELF_HOME="$HOME/.local/share/self" +if [ -n "$XDG_DATA_HOME" ] + then export SELF_HOME="$XDG_DATA_HOME/self" +fi + +if [ ! -d $SELF_HOME ]; then + mkdir -p $SELF_HOME +fi + +if [ ! -d $SELF_HOME/objects ]; then + mkdir -p $SELF_HOME/objects + cp -r $SELF_ROOT/share/self/objects/* $SELF_HOME/objects + chmod -R +w $SELF_HOME/objects +fi + +exec $SELF_ROOT/bin/Self.wrapped "$@" diff --git a/pkgs/development/libraries/glibc/2.19/multi.nix b/pkgs/development/libraries/glibc/2.19/multi.nix new file mode 100644 index 000000000000..ad4a34152b65 --- /dev/null +++ b/pkgs/development/libraries/glibc/2.19/multi.nix @@ -0,0 +1,31 @@ +{ runCommand, glibc, glibc32 +}: + +runCommand "${glibc.name}-multi" + { inherit glibc32; + glibc64 = glibc; + } + '' + mkdir -p $out + ln -s $glibc64/* $out/ + + rm $out/lib $out/lib64 + mkdir -p $out/lib + ln -s $glibc64/lib/* $out/lib + ln -s $glibc32/lib $out/lib/32 + ln -s lib $out/lib64 + + # fixing ldd RLTDLIST + rm $out/bin + cp -rs $glibc64/bin $out + chmod u+w $out/bin + rm $out/bin/ldd + sed -e "s|^RTLDLIST=.*$|RTLDLIST=\"$out/lib/ld-2.19.so $out/lib/32/ld-linux.so.2\"|g" \ + $glibc64/bin/ldd > $out/bin/ldd + chmod 555 $out/bin/ldd + + rm $out/include + cp -rs $glibc32/include $out + chmod -R u+w $out/include + cp -rsf $glibc64/include $out + '' diff --git a/pkgs/development/libraries/openmpi/default.nix b/pkgs/development/libraries/openmpi/default.nix index 678a439fe0ac..15160d3afc49 100644 --- a/pkgs/development/libraries/openmpi/default.nix +++ b/pkgs/development/libraries/openmpi/default.nix @@ -1,4 +1,13 @@ -{stdenv, fetchurl, gfortran}: +{stdenv, fetchurl, gfortran + +# Enable the Sun Grid Engine bindings +, enableSGE ? false + +# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default +, enablePrefix ? false +}: + +with stdenv.lib; stdenv.mkDerivation { name = "openmpi-1.6.5"; @@ -7,6 +16,10 @@ stdenv.mkDerivation { sha256 = "11gws4d3z7934zna2r7m1f80iay2ha17kp42mkh39wjykfwbldzy"; }; buildInputs = [ gfortran ]; + configureFlags = [] + ++ optional enableSGE "--with-sge" + ++ optional enablePrefix "--enable-mpirun-prefix-by-default" + ; meta = { homePage = http://www.open-mpi.org/; description = "Open source MPI-2 implementation"; diff --git a/pkgs/development/libraries/protobuf/default.nix b/pkgs/development/libraries/protobuf/default.nix index bba8481780a5..3452335decdc 100644 --- a/pkgs/development/libraries/protobuf/default.nix +++ b/pkgs/development/libraries/protobuf/default.nix @@ -1,11 +1,11 @@ { fetchurl, stdenv, zlib }: stdenv.mkDerivation rec { - name = "protobuf-2.5.0"; + name = "protobuf-2.6.0"; src = fetchurl { - url = "http://protobuf.googlecode.com/files/${name}.tar.bz2"; - sha256 = "0xxn9gxhvsgzz2sgmihzf6pf75clr05mqj6218camwrwajpcbgqk"; + url = "http://protobuf.googlecode.com/svn-history/r579/rc/protobuf-2.6.0.tar.bz2"; + sha256 = "0krfkxc85vfznqwbh59qlhp7ld81al9ss35av0gfbg74i0rvjids"; }; buildInputs = [ zlib ]; diff --git a/pkgs/development/python-modules/h5py/default.nix b/pkgs/development/python-modules/h5py/default.nix new file mode 100644 index 000000000000..9ab68ac4cd2b --- /dev/null +++ b/pkgs/development/python-modules/h5py/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, python, buildPythonPackage +, numpy, hdf5, cython +, mpiSupport ? false, mpi4py ? null, mpi ? null }: + +assert mpiSupport == hdf5.mpiSupport; +assert mpiSupport -> mpi != null + && mpi4py != null + && mpi == mpi4py.mpi + && mpi == hdf5.mpi + ; + +with stdenv.lib; + +buildPythonPackage rec { + name = "h5py-2.3.1"; + + src = fetchurl { + url = "https://pypi.python.org/packages/source/h/h5py/${name}.tar.gz"; + md5 = "8f32f96d653e904d20f9f910c6d9dd91"; + }; + + setupPyBuildFlags = [ "--hdf5=${hdf5}" ] + ++ optional mpiSupport "--mpi" + ; + setupPyInstallFlags = setupPyBuildFlags; + + preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else ""; + + buildInputs = [ hdf5 cython ] + ++ optional mpiSupport mpi + ; + propagatedBuildInputs = [ numpy ] + ++ optional mpiSupport mpi4py + ; + + meta = { + description = " + The h5py package is a Pythonic interface to the HDF5 binary data format. + "; + homepage = "http://www.h5py.org/"; + license = stdenv.lib.licenses.bsd2; + }; +} diff --git a/pkgs/development/python-modules/mpi4py/default.nix b/pkgs/development/python-modules/mpi4py/default.nix new file mode 100644 index 000000000000..74d46def9074 --- /dev/null +++ b/pkgs/development/python-modules/mpi4py/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, python, buildPythonPackage, mpi, openssh }: + +buildPythonPackage rec { + name = "mpi4py-1.3.1"; + + src = fetchurl { + url = "https://bitbucket.org/mpi4py/mpi4py/downloads/${name}.tar.gz"; + sha256 = "e7bd2044aaac5a6ea87a87b2ecc73b310bb6efe5026031e33067ea3c2efc3507"; + }; + + passthru = { + inherit mpi; + }; + + configurePhase = ""; + + installPhase = '' + mkdir -p "$out/lib/${python.libPrefix}/site-packages" + export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH" + + ${python}/bin/${python.executable} setup.py install \ + --install-lib=$out/lib/${python.libPrefix}/site-packages \ + --prefix="$out" + + # --install-lib: + # sometimes packages specify where files should be installed outside the usual + # python lib prefix, we override that back so all infrastructure (setup hooks) + # work as expected + ''; + + setupPyBuildFlags = ["--mpicc=${mpi}/bin/mpicc"]; + + buildInputs = [ mpi ]; + # Requires openssh for tests. Tests of dependent packages will also fail, + # if openssh is not present. E.g. h5py with mpi support. + propagatedBuildInputs = [ openssh ]; + + meta = { + description = " + Provides Python bindings for the Message Passing Interface standard. + "; + homepage = "http://code.google.com/p/mpi4py/"; + license = stdenv.lib.licenses.bsd3; + }; +} diff --git a/pkgs/os-specific/linux/shadow/default.nix b/pkgs/os-specific/linux/shadow/default.nix index b52801cacff7..f928dc8e657c 100644 --- a/pkgs/os-specific/linux/shadow/default.nix +++ b/pkgs/os-specific/linux/shadow/default.nix @@ -15,11 +15,11 @@ let in stdenv.mkDerivation rec { - name = "shadow-4.1.5.1"; + name = "shadow-4.2.1"; src = fetchurl { - url = "http://pkg-shadow.alioth.debian.org/releases/${name}.tar.bz2"; - sha256 = "1yvqx57vzih0jdy3grir8vfbkxp0cl0myql37bnmi2yn90vk6cma"; + url = "http://pkg-shadow.alioth.debian.org/releases/${name}.tar.xz"; + sha256 = "0h9x1zdbq0pqmygmc1x459jraiqw4gqz8849v268crk78z8r621v"; }; buildInputs = stdenv.lib.optional (pam != null && stdenv.isLinux) pam; diff --git a/pkgs/tools/misc/flashrom/default.nix b/pkgs/tools/misc/flashrom/default.nix new file mode 100644 index 000000000000..c4e74359b15b --- /dev/null +++ b/pkgs/tools/misc/flashrom/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, libftdi, pciutils }: + +let version = "0.9.7"; in +stdenv.mkDerivation rec { + name = "flashrom-${version}"; + + src = fetchurl { + url = "http://download.flashrom.org/releases/${name}.tar.bz2"; + sha256 = "5a55212d00791981a9a1cb0cdca9d9e58bea6d399864251e7b410b4d3d6137e9"; + }; + + buildInputs = [ pkgconfig libftdi pciutils ]; + + makeFlags = ["PREFIX=$out"]; + + meta = { + homepage = "http://www.flashrom.org"; + description = "Utility for reading, writing, erasing and verifying flash ROM chips"; + license = "GPLv2"; + maintainers = [ stdenv.lib.maintainers.funfunctor ]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/pkgs/tools/misc/hdf5/default.nix b/pkgs/tools/misc/hdf5/default.nix index a7d03d1335f0..5cdc468c2a5a 100644 --- a/pkgs/tools/misc/hdf5/default.nix +++ b/pkgs/tools/misc/hdf5/default.nix @@ -3,6 +3,8 @@ , fetchurl , zlib ? null , szip ? null +, mpi ? null +, enableShared ? true }: stdenv.mkDerivation rec { version = "1.8.13"; @@ -12,11 +14,23 @@ stdenv.mkDerivation rec { sha256 = "1h9qdl321gzm3ihdhlijbl9sh9qcdrw94j7izg64yfqhxj7b7xl2"; }; + passthru = { + mpiSupport = (mpi != null); + inherit mpi; + }; + buildInputs = [] ++ stdenv.lib.optional (zlib != null) zlib ++ stdenv.lib.optional (szip != null) szip; - configureFlags = if szip != null then "--with-szlib=${szip}" else ""; + propagatedBuildInputs = [] + ++ stdenv.lib.optional (mpi != null) mpi; + + configureFlags = " + ${if szip != null then "--with-szlib=${szip}" else ""} + ${if mpi != null then "--enable-parallel" else ""} + ${if enableShared then "--enable-shared" else ""} + "; patches = [./bin-mv.patch]; diff --git a/pkgs/tools/networking/spiped/default.nix b/pkgs/tools/networking/spiped/default.nix index ac2736ffb19e..f854b92b87e5 100644 --- a/pkgs/tools/networking/spiped/default.nix +++ b/pkgs/tools/networking/spiped/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "spiped-${version}"; - version = "1.3.1"; + version = "1.4.0"; src = fetchurl { url = "http://www.tarsnap.com/spiped/${name}.tgz"; - sha256 = "1viglk61v1v2ga1n31r0h8rvib5gy2h02lhhbbnqh2s6ps1sjn4a"; + sha256 = "0pyg1llnqgfx7n7mi3dq4ra9xg3vkxlf01z5jzn7ncq5d6ii7ynq"; }; buildInputs = [ openssl ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3d2350b661e5..c07a8994f3ef 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -965,6 +965,10 @@ let edk2 = callPackage ../development/compilers/edk2 { }; + emscripten = callPackage ../development/compilers/emscripten { }; + + emscriptenfastcomp = callPackage ../development/compilers/emscripten-fastcomp { }; + efibootmgr = callPackage ../tools/system/efibootmgr { }; efivar = callPackage ../tools/system/efivar { }; @@ -1045,6 +1049,8 @@ let platformTools = androidenv.platformTools; }; + flashrom = callPackage ../tools/misc/flashrom { }; + flpsed = callPackage ../applications/editors/flpsed { }; flvstreamer = callPackage ../tools/networking/flvstreamer { }; @@ -1282,6 +1288,12 @@ let hdf5 = callPackage ../tools/misc/hdf5 { szip = null; + mpi = null; + }; + + hdf5-mpi = hdf5.override { + szip = null; + mpi = pkgs.openmpi; }; heimdall = callPackage ../tools/misc/heimdall { }; @@ -3705,6 +3717,8 @@ let scheme48 = callPackage ../development/interpreters/scheme48 { }; + self = callPackage_i686 ../development/interpreters/self { }; + spark = callPackage ../applications/networking/cluster/spark { }; spidermonkey = callPackage ../development/interpreters/spidermonkey { }; @@ -4727,36 +4741,10 @@ let glibcInfo = callPackage ../development/libraries/glibc/2.19/info.nix { }; - glibc_multi = - runCommand "${glibc.name}-multi" - { glibc64 = glibc; - glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc; - } - '' - mkdir -p $out - ln -s $glibc64/* $out/ - - rm $out/lib $out/lib64 - mkdir -p $out/lib - ln -s $glibc64/lib/* $out/lib - ln -s $glibc32/lib $out/lib/32 - ln -s lib $out/lib64 - - # fixing ldd RLTDLIST - rm $out/bin - cp -rs $glibc64/bin $out - chmod u+w $out/bin - rm $out/bin/ldd - sed -e "s|^RTLDLIST=.*$|RTLDLIST=\"$out/lib/ld-2.19.so $out/lib/32/ld-linux.so.2\"|g" \ - $glibc64/bin/ldd > $out/bin/ldd - chmod 555 $out/bin/ldd - - rm $out/include - cp -rs $glibc32/include $out - chmod -R u+w $out/include - cp -rsf $glibc64/include $out - '' # */ - ; + glibc_multi = callPackage ../development/libraries/glibc/2.19/multi.nix { + inherit glibc; + glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc; + }; glm = callPackage ../development/libraries/glm { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8374e29162a9..533f59b78d81 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -90,6 +90,19 @@ rec { ''; }; + h5py = callPackage ../development/python-modules/h5py { + inherit (pkgs) stdenv fetchurl; + inherit python buildPythonPackage cython numpy; + hdf5 = pkgs.hdf5.override { mpi = null; }; + }; + + h5py-mpi = h5py.override { + mpiSupport = true; + mpi = pkgs.openmpi; + hdf5 = pkgs.hdf5.override { mpi = pkgs.openmpi; enableShared = true; }; + inherit mpi4py; + }; + ipython = import ../shells/ipython { inherit (pkgs) stdenv fetchurl sip pyqt4; inherit buildPythonPackage pythonPackages; @@ -106,6 +119,12 @@ rec { pylabQtSupport = false; }); + mpi4py = callPackage ../development/python-modules/mpi4py { + inherit (pkgs) stdenv fetchurl openssh; + inherit python buildPythonPackage; + mpi = pkgs.openmpi; + }; + nixpart = callPackage ../tools/filesystems/nixpart { }; # This is used for NixOps to make sure we won't break it with the next major @@ -2152,6 +2171,7 @@ rec { googlecl = buildPythonPackage rec { version = "0.9.14"; name = "googlecl-${version}"; + disabled = isPy3k; src = fetchurl { url = "https://googlecl.googlecode.com/files/${name}.tar.gz"; @@ -3764,6 +3784,7 @@ rec { google_apputils = buildPythonPackage rec { name = "google-apputils-0.4.0"; + disabled = isPy3k; src = fetchurl { url = http://pypi.python.org/packages/source/g/google-apputils/google-apputils-0.4.0.tar.gz; @@ -3917,6 +3938,7 @@ rec { http_signature = buildPythonPackage (rec { name = "http_signature-0.1.4"; + disabled = isPy3k; src = fetchurl { url = "http://pypi.python.org/packages/source/h/http_signature/${name}.tar.gz"; @@ -4797,6 +4819,7 @@ rec { muttils = buildPythonPackage (rec { name = "muttils-1.3"; + disabled = isPy3k; src = fetchurl { url = http://www.blacktrash.org/hg/muttils/archive/8bb26094df06.tar.bz2; @@ -4859,6 +4882,7 @@ rec { namebench = buildPythonPackage (rec { name = "namebench-1.0.5"; + disabled = isPy3k; src = fetchurl { url = "http://namebench.googlecode.com/files/${name}.tgz"; @@ -5073,6 +5097,7 @@ rec { nose-cprof = buildPythonPackage rec { name = "nose-cprof-0.1-0"; + disabled = isPy3k; src = fetchurl { url = "https://pypi.python.org/packages/source/n/nose-cprof/${name}.tar.gz"; @@ -5812,8 +5837,9 @@ rec { protobuf = buildPythonPackage rec { inherit (pkgs.protobuf) name src; - propagatedBuildInputs = [ pkgs.protobuf setuptools ]; + propagatedBuildInputs = [ pkgs.protobuf google_apputils ]; sourceRoot = "${name}/python"; + meta = { description = "Protocol Buffers are Google's data interchange format."; @@ -6150,6 +6176,8 @@ rec { }; buildInputs = [ unittest2 ]; + + doCheck = !isPyPy; meta = { homepage = "https://launchpad.net/pyflakes"; @@ -8206,6 +8234,7 @@ rec { taskcoach = buildPythonPackage rec { name = "TaskCoach-1.3.22"; + disabled = isPy3k; src = fetchurl { url = "mirror://sourceforge/taskcoach/${name}.tar.gz"; @@ -8347,6 +8376,7 @@ rec { smmap = buildPythonPackage rec { name = "smmap-0.8.2"; + disabled = isPy3k; # next release will have py3k support meta.maintainers = [ stdenv.lib.maintainers.mornfall ]; src = fetchurl { |