diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 0ddf93dbec4..fb8c6b53cb5 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -12,4 +12,21 @@ under the terms of [COPYING](../COPYING), which is an MIT-like license. ## Submitting changes -See the nixpkgs manual for details on how to [Submit changes to nixpkgs](http://hydra.nixos.org/job/nixpkgs/trunk/manual/latest/download-by-type/doc/manual#chap-submitting-changes). +* Format the commits in the following way: + + `(pkg-name | service-name): (from -> to | init at version | refactor | etc)` + + Examples: + + * nginx: init at 2.0.1 + * firefox: 3.0 -> 3.1.1 + * hydra service: add bazBaz option + * nginx service: refactor config generation + +* `meta.description` should: + * Be capitalized + * Not start with the package name + * Not have a dot at the end + +See the nixpkgs manual for more details on how to [Submit changes to nixpkgs](http://hydra.nixos.org/job/nixpkgs/trunk/manual/latest/download-by-type/doc/manual#chap-submitting-changes). + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index aac1650ae7a..ceea615d5d7 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,4 @@ -###### Things done: +###### Things done - [ ] Tested using sandboxing (`nix-build --option build-use-chroot true` or [nix.useChroot](http://nixos.org/nixos/manual/options.html#opt-nix.useChroot) on NixOS) - Built on platform(s) @@ -9,13 +9,5 @@ - [ ] Tested execution of all binary files (usually in `./result/bin/`) - [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md). -###### More - -Fixes issue # - -cc @ - - --- -_Please note, that points are not mandatory, but rather desired._ diff --git a/doc/haskell-users-guide.md b/doc/haskell-users-guide.md index ce61295e567..b981466bf2e 100644 --- a/doc/haskell-users-guide.md +++ b/doc/haskell-users-guide.md @@ -647,6 +647,30 @@ command, i.e. by running: rm /nix/var/nix/manifests/* rm /nix/var/nix/channel-cache/* +### How to use the Haste Haskell-to-Javascript transpiler + +Open a shell with `haste-compiler` and `haste-cabal-install` (you don't actually need +`node`, but it can be useful to test stuff): + + $ nix-shell -p "haskellPackages.ghcWithPackages (self: with self; [haste-cabal-install haste-compiler])" -p nodejs + +You may not need the following step but if `haste-boot` fails to compile all the +packages it needs, this might do the trick + + $ haste-cabal update + +`haste-boot` builds a set of core libraries so that they can be used from Javascript +transpiled programs: + + $ haste-boot + +Transpile and run a "Hello world" program: + + $ echo 'module Main where main = putStrLn "Hello world"' > hello-world.hs + $ hastec --onexec hello-world.hs + $ node hello-world.js + Hello world + ### Builds on Darwin fail with `math.h` not found Users of GHC on Darwin have occasionally reported that builds fail, because the diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 9937912ec3e..34f36a6b516 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -81,6 +81,7 @@ copumpkin = "Dan Peebles "; coroa = "Jonas Hörsch "; couchemar = "Andrey Pavlov "; + cransom = "Casey Ransom "; CrystalGamma = "Jona Stubbe "; cstrahan = "Charles Strahan "; cwoac = "Oliver Matthews "; @@ -139,7 +140,6 @@ garrison = "Jim Garrison "; gavin = "Gavin Rogers "; gebner = "Gabriel Ebner "; - gfxmonk = "Tim Cuthbertson "; giogadi = "Luis G. Torres "; gleber = "Gleb Peregud "; globin = "Robin Gloster "; @@ -233,7 +233,9 @@ mirdhyn = "Merlin Gaillard "; modulistic = "Pablo Costa "; mog = "Matthew O'Gorman "; + moretea = "Maarten Hoogendoorn "; mornfall = "Petr Ročkai "; + MostAwesomeDude = "Corbin Simpson "; MP2E = "Cray Elliott "; msackman = "Matthew Sackman "; mschristiansen = "Mikkel Christiansen "; @@ -345,6 +347,7 @@ the-kenny = "Moritz Ulrich "; theuni = "Christian Theune "; thoughtpolice = "Austin Seipp "; + timbertson = "Tim Cuthbertson "; titanous = "Jonathan Rudenberg "; tohl = "Tomas Hlavaty "; tokudan = "Daniel Frank "; diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml index caba8fb1f4a..fb3f1498a9b 100644 --- a/nixos/doc/manual/configuration/configuration.xml +++ b/nixos/doc/manual/configuration/configuration.xml @@ -28,6 +28,7 @@ effect after you run nixos-rebuild. + diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index b118c79985e..69da1f94882 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -58,6 +58,7 @@ let cp ${../../modules/services/databases/postgresql.xml} configuration/postgresql.xml cp ${../../modules/services/misc/gitlab.xml} configuration/gitlab.xml cp ${../../modules/security/acme.xml} configuration/acme.xml + cp ${../../modules/i18n/input-method/default.xml} configuration/input-methods.xml ln -s ${optionsDocBook} options-db.xml echo "${version}" > version ''; diff --git a/nixos/doc/manual/release-notes/rl-1603.xml b/nixos/doc/manual/release-notes/rl-1603.xml index 1528c8a7246..620c3e362a6 100644 --- a/nixos/doc/manual/release-notes/rl-1603.xml +++ b/nixos/doc/manual/release-notes/rl-1603.xml @@ -63,11 +63,11 @@ has the following highlights: services/monitoring/longview.nix hardware/video/webcam/facetimehd.nix - i18n/inputMethod/default.nix - i18n/inputMethod/fcitx.nix - i18n/inputMethod/ibus.nix - i18n/inputMethod/nabi.nix - i18n/inputMethod/uim.nix + i18n/input-method/default.nix + i18n/input-method/fcitx.nix + i18n/input-method/ibus.nix + i18n/input-method/nabi.nix + i18n/input-method/uim.nix programs/fish.nix security/acme.nix security/audit.nix diff --git a/nixos/lib/test-driver/Machine.pm b/nixos/lib/test-driver/Machine.pm index 8ac0a31f287..37d6518fd8d 100644 --- a/nixos/lib/test-driver/Machine.pm +++ b/nixos/lib/test-driver/Machine.pm @@ -543,7 +543,7 @@ sub waitForX { retry sub { my ($status, $out) = $self->execute("journalctl -b SYSLOG_IDENTIFIER=systemd | grep 'session opened'"); return 0 if $status != 0; - ($status, $out) = $self->execute("xwininfo -root > /dev/null 2>&1"); + ($status, $out) = $self->execute("[ -e /tmp/.X11-unix/X0 ]"); return 1 if $status == 0; } }); diff --git a/nixos/modules/i18n/inputMethod/default.nix b/nixos/modules/i18n/input-method/default.nix similarity index 100% rename from nixos/modules/i18n/inputMethod/default.nix rename to nixos/modules/i18n/input-method/default.nix diff --git a/nixos/modules/i18n/input-method/default.xml b/nixos/modules/i18n/input-method/default.xml new file mode 100644 index 00000000000..c55ac1ec245 --- /dev/null +++ b/nixos/modules/i18n/input-method/default.xml @@ -0,0 +1,131 @@ + + +Input Methods + +Input methods are an operating system component that allows any data, such + as keyboard strokes or mouse movements, to be received as input. In this way + users can enter characters and symbols not found on their input devices. Using + an input method is obligatory for any language that has more graphemes than + there are keys on the keyboard. + +The following input methods are available in NixOS: + + + IBus: The intelligent input bus. + Fcitx: A customizable lightweight input + method. + Nabi: A Korean input method based on XIM. + Uim: The universal input method, is a library with a XIM + bridge. + + +
IBus + +IBus is an Intelligent Input Bus. It provides full featured and user + friendly input method user interface. + +The following snippet can be used to configure IBus: + + +i18n.inputMethod = { + enabled = "ibus"; + ibus.engines = with pkgs.ibus-engines; [ anthy hangul mozc ]; +}; + + +i18n.inputMethod.ibus.engines is optional and can be + used to add extra IBus engines. + +Available extra IBus engines are: + + + Anthy (ibus-engines.anthy): Anthy is a + system for Japanese input method. It converts Hiragana text to Kana Kanji + mixed text. + Hangul (ibus-engines.hangul): Korean input + method. + m17n (ibus-engines.m17n): m17n is an input + method that uses input methods and corresponding icons in the m17n + database. + mozc (ibus-engines.mozc): A Japanese input + method from Google. + Table (ibus-engines.table): An input method + that load tables of input methods. + table-others (ibus-engines.table-others): + Various table-based input methods. + +
+ +
Fcitx + +Fcitx is an input method framework with extension support. It has three + built-in Input Method Engine, Pinyin, QuWei and Table-based input + methods. +The following snippet can be used to configure Fcitx: + + +i18n.inputMethod = { + enabled = "fcitx"; + fcitx.engines = with pkgs.fcitx-engines; [ mozc hangul m17n ]; +}; + + +i18n.inputMethod.fcitx.engines is optional and can be + used to add extra Fcitx engines. + +Available extra Fcitx engines are: + + + Anthy (fcitx-engines.anthy): Anthy is a + system for Japanese input method. It converts Hiragana text to Kana Kanji + mixed text. + Chewing (fcitx-engines.chewing): Chewing is + an intelligent Zhuyin input method. It is one of the most popular input + methods among Traditional Chinese Unix users. + Hangul (fcitx-engines.hangul): Korean input + method. + m17n (fcitx-engines.m17n): m17n is an input + method that uses input methods and corresponding icons in the m17n + database. + mozc (fcitx-engines.mozc): A Japanese input + method from Google. + table-others (fcitx-engines.table-others): + Various table-based input methods. + +
+ +
Nabi + +Nabi is an easy to use Korean X input method. It allows you to enter + phonetic Korean characters (hangul) and pictographic Korean characters + (hanja). +The following snippet can be used to configure Nabi: + + +i18n.inputMethod = { + enabled = "nabi"; +}; + +
+ +
Uim + +Uim (short for "universal input method") is a multilingual input method + framework. Applications can use it through so-called bridges. +The following snippet can be used to configure uim: + + +i18n.inputMethod = { + enabled = "uim"; +}; + + +Note: The i18n.inputMethod.uim.toolbar option can be + used to choose uim toolbar. + +
+
diff --git a/nixos/modules/i18n/inputMethod/fcitx.nix b/nixos/modules/i18n/input-method/fcitx.nix similarity index 100% rename from nixos/modules/i18n/inputMethod/fcitx.nix rename to nixos/modules/i18n/input-method/fcitx.nix diff --git a/nixos/modules/i18n/inputMethod/ibus.nix b/nixos/modules/i18n/input-method/ibus.nix similarity index 100% rename from nixos/modules/i18n/inputMethod/ibus.nix rename to nixos/modules/i18n/input-method/ibus.nix diff --git a/nixos/modules/i18n/inputMethod/nabi.nix b/nixos/modules/i18n/input-method/nabi.nix similarity index 100% rename from nixos/modules/i18n/inputMethod/nabi.nix rename to nixos/modules/i18n/input-method/nabi.nix diff --git a/nixos/modules/i18n/inputMethod/uim.nix b/nixos/modules/i18n/input-method/uim.nix similarity index 100% rename from nixos/modules/i18n/inputMethod/uim.nix rename to nixos/modules/i18n/input-method/uim.nix diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl index d3005cdfd6f..8e75f8d3c40 100644 --- a/nixos/modules/installer/tools/nixos-generate-config.pl +++ b/nixos/modules/installer/tools/nixos-generate-config.pl @@ -474,7 +474,7 @@ my $hwConfig = <systemd.services.<name?>.serviceConfig.SupplementaryGroups. + ''; }; + }; + + config = mkIf config.security.hideProcessInformation { + users.groups.proc.gid = config.ids.gids.proc; + + systemd.services.hidepid = { + wantedBy = [ "local-fs.target" ]; + after = [ "systemd-remount-fs.service" ]; + before = [ "local-fs-pre.target" "local-fs.target" "shutdown.target" ]; + wants = [ "local-fs-pre.target" ]; + + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = ''${pkgs.utillinux}/bin/mount -o remount,hidepid=2,gid=${toString config.ids.gids.proc} /proc''; + ExecStop = ''${pkgs.utillinux}/bin/mount -o remount,hidepid=0,gid=0 /proc''; + }; + + unitConfig = { + DefaultDependencies = false; + Conflicts = "shutdown.target"; + }; + }; + }; +} diff --git a/nixos/modules/services/network-filesystems/tahoe.nix b/nixos/modules/services/network-filesystems/tahoe.nix index ab441339a56..d4b6c05e943 100644 --- a/nixos/modules/services/network-filesystems/tahoe.nix +++ b/nixos/modules/services/network-filesystems/tahoe.nix @@ -26,6 +26,15 @@ in The port on which the introducer will listen. ''; }; + tub.location = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The external location that the introducer should listen on. + + If specified, the port should be included. + ''; + }; package = mkOption { default = pkgs.tahoelafs; defaultText = "pkgs.tahoelafs"; @@ -60,6 +69,18 @@ in system to listen on a different port. ''; }; + tub.location = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The external location that the node should listen on. + + This is the setting to tweak if there are multiple interfaces + and you want to alter which interface Tahoe is advertising. + + If specified, the port should be included. + ''; + }; web.port = mkOption { default = 3456; type = types.int; @@ -144,6 +165,8 @@ in [node] nickname = ${settings.nickname} tub.port = ${toString settings.tub.port} + ${optionalString (settings.tub.location != null) + "tub.location = ${settings.tub.location}"} ''; }); # Actually require Tahoe, so that we will have it installed. @@ -209,6 +232,8 @@ in [node] nickname = ${settings.nickname} tub.port = ${toString settings.tub.port} + ${optionalString (settings.tub.location != null) + "tub.location = ${settings.tub.location}"} # This is a Twisted endpoint. Twisted Web doesn't work on # non-TCP. ~ C. web.port = tcp:${toString settings.web.port} diff --git a/nixos/modules/services/networking/shout.nix b/nixos/modules/services/networking/shout.nix index f069fe7bec9..3664c285773 100644 --- a/nixos/modules/services/networking/shout.nix +++ b/nixos/modules/services/networking/shout.nix @@ -6,6 +6,21 @@ let cfg = config.services.shout; shoutHome = "/var/lib/shout"; + defaultConfig = pkgs.runCommand "config.js" {} '' + EDITOR=true ${pkgs.shout}/bin/shout config --home $PWD + mv config.js $out + ''; + + finalConfigFile = if (cfg.configFile != null) then cfg.configFile else '' + var _ = require('${pkgs.shout}/lib/node_modules/shout/node_modules/lodash') + + module.exports = _.merge( + {}, + require('${defaultConfig}'), + ${builtins.toJSON cfg.config} + ) + ''; + in { options.services.shout = { enable = mkEnableOption "Shout web IRC client"; @@ -35,8 +50,31 @@ in { type = types.nullOr types.lines; default = null; description = '' - Contents of Shout's config.js file. If left empty, - Shout will generate from its defaults at first startup. + Contents of Shout's config.js file. + + Used for backward compatibility, recommended way is now to use + the config option. + + Documentation: http://shout-irc.com/docs/server/configuration.html + ''; + }; + + config = mkOption { + default = {}; + type = types.attrs; + example = { + displayNetwork = false; + defaults = { + name = "Your Network"; + host = "localhost"; + port = 6697; + }; + }; + description = '' + Shout config.js contents as attribute set (will be + converted to JSON to generate the configuration file). + + The options defined here will be merged to the default configuration file. Documentation: http://shout-irc.com/docs/server/configuration.html ''; @@ -57,11 +95,7 @@ in { wantedBy = [ "multi-user.target" ]; wants = [ "network-online.target" ]; after = [ "network-online.target" ]; - preStart = if isNull cfg.configFile then "" - else '' - ln -sf ${pkgs.writeText "config.js" cfg.configFile} \ - ${shoutHome}/config.js - ''; + preStart = "ln -sf ${pkgs.writeText "config.js" finalConfigFile} ${shoutHome}/config.js"; script = concatStringsSep " " [ "${pkgs.shout}/bin/shout" (if cfg.private then "--private" else "--public") diff --git a/nixos/modules/services/web-servers/caddy.nix b/nixos/modules/services/web-servers/caddy.nix new file mode 100644 index 00000000000..0d2612aaa66 --- /dev/null +++ b/nixos/modules/services/web-servers/caddy.nix @@ -0,0 +1,53 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.caddy; + configFile = pkgs.writeText "Caddyfile" cfg.config; +in +{ + options.services.caddy = { + enable = mkEnableOption "Caddy web server"; + + config = mkOption { + description = "Verbatim Caddyfile to use"; + }; + + email = mkOption { + default = ""; + type = types.string; + description = "Email address (for Let's Encrypt certificate)"; + }; + + dataDir = mkOption { + default = "/var/lib/caddy"; + type = types.path; + description = "The data directory, for storing certificates."; + }; + }; + + config = mkIf cfg.enable { + systemd.services.caddy = { + description = "Caddy web server"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${pkgs.caddy}/bin/caddy -conf=${configFile} -email=${cfg.email}"; + Type = "simple"; + User = "caddy"; + Group = "caddy"; + AmbientCapabilities = "cap_net_bind_service"; + }; + }; + + users.extraUsers.caddy = { + group = "caddy"; + uid = config.ids.uids.caddy; + home = cfg.dataDir; + createHome = true; + }; + + users.extraGroups.caddy.gid = config.ids.uids.caddy; + }; +} diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index d03e8ec8b1b..dcf9f820f59 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -221,7 +221,7 @@ in dpi = mkOption { type = types.nullOr types.int; - default = 0; + default = null; description = "DPI resolution to use for X server."; }; @@ -466,6 +466,7 @@ in xorg.xsetroot xorg.xinput xorg.xprop + xorg.xauth pkgs.xterm pkgs.xdg_utils ] @@ -513,8 +514,7 @@ in }; services.xserver.displayManager.xserverArgs = - [ "-ac" - "-terminate" + [ "-terminate" "-config ${configFile}" "-xkbdir" "${cfg.xkbDir}" ] ++ optional (cfg.display != null) ":${toString cfg.display}" diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index a3c83521c35..3f497566ff1 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -472,6 +472,13 @@ in ''; }; + systemd.generator-packages = mkOption { + default = []; + type = types.listOf types.package; + example = literalExample "[ pkgs.systemd-cryptsetup-generator ]"; + description = "Packages providing systemd generators."; + }; + systemd.defaultUnit = mkOption { default = "multi-user.target"; type = types.str; @@ -628,7 +635,18 @@ in environment.systemPackages = [ systemd ]; - environment.etc = { + environment.etc = let + # generate contents for /etc/systemd/system-generators from + # systemd.generators and systemd.generator-packages + generators = pkgs.runCommand "system-generators" { packages = cfg.generator-packages; } '' + mkdir -p $out + for package in $packages + do + ln -s $package/lib/systemd/system-generators/* $out/ + done; + ${concatStrings (mapAttrsToList (generator: target: "ln -s ${target} $out/${generator};\n") cfg.generators)} + ''; + in ({ "systemd/system".source = generateUnits "system" cfg.units upstreamSystemUnits upstreamSystemWants; "systemd/user".source = generateUnits "user" cfg.user.units upstreamUserUnits []; @@ -667,7 +685,9 @@ in ${concatStringsSep "\n" cfg.tmpfiles.rules} ''; - } // mapAttrs' (n: v: nameValuePair "systemd/system-generators/${n}" {"source"=v;}) cfg.generators; + + "systemd/system-generators" = { source = generators; }; + }); system.activationScripts.systemd = stringAfter [ "groups" ] '' diff --git a/nixos/tests/common/user-account.nix b/nixos/tests/common/user-account.nix index ded8275000a..93aeb60e456 100644 --- a/nixos/tests/common/user-account.nix +++ b/nixos/tests/common/user-account.nix @@ -1,9 +1,14 @@ { lib, ... }: -{ users.extraUsers = lib.singleton +{ users.extraUsers.alice = { isNormalUser = true; - name = "alice"; description = "Alice Foobar"; password = "foobar"; }; + + users.extraUsers.bob = + { isNormalUser = true; + description = "Bob Foobar"; + password = "foobar"; + }; } diff --git a/nixos/tests/gnome3-gdm.nix b/nixos/tests/gnome3-gdm.nix index 1c07ddf79c2..42425b57ba3 100644 --- a/nixos/tests/gnome3-gdm.nix +++ b/nixos/tests/gnome3-gdm.nix @@ -32,6 +32,7 @@ import ./make-test.nix ({ pkgs, ...} : { $machine->succeed("getfacl /dev/snd/timer | grep -q alice"); $machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow(qr/Terminal/); $machine->sleep(20); $machine->screenshot("screen"); diff --git a/nixos/tests/gnome3.nix b/nixos/tests/gnome3.nix index 714b3550370..50e7f4eace3 100644 --- a/nixos/tests/gnome3.nix +++ b/nixos/tests/gnome3.nix @@ -27,6 +27,7 @@ import ./make-test.nix ({ pkgs, ...} : { $machine->succeed("getfacl /dev/snd/timer | grep -q alice"); $machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow(qr/Terminal/); $machine->mustSucceed("timeout 900 bash -c 'journalctl -f|grep -m 1 \"GNOME Shell started\"'"); $machine->sleep(10); diff --git a/nixos/tests/i3wm.nix b/nixos/tests/i3wm.nix index 627a150f641..4685992d7a0 100644 --- a/nixos/tests/i3wm.nix +++ b/nixos/tests/i3wm.nix @@ -13,6 +13,8 @@ import ./make-test.nix ({ pkgs, ...} : { testScript = { nodes, ... }: '' $machine->waitForX; + $machine->waitForFile("/home/alice/.Xauthority"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow(qr/first configuration/); $machine->sleep(1); $machine->screenshot("started"); diff --git a/nixos/tests/kde4.nix b/nixos/tests/kde4.nix index dc61658cd1c..2693fb4fbf0 100644 --- a/nixos/tests/kde4.nix +++ b/nixos/tests/kde4.nix @@ -41,11 +41,13 @@ import ./make-test.nix ({ pkgs, ... }: { pkgs.kde4.kdenetwork pkgs.kde4.kdetoys pkgs.kde4.kdewebdev + pkgs.xorg.xmessage ]; }; - testScript = '' + testScript = '' $machine->waitUntilSucceeds("pgrep plasma-desktop"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow(qr/plasma-desktop/); # Check that logging in has given the user ownership of devices. @@ -62,7 +64,7 @@ import ./make-test.nix ({ pkgs, ... }: { $machine->sleep(10); - $machine->screenshot("screen"); + $machine->screenshot("screen"); ''; }) diff --git a/nixos/tests/lightdm.nix b/nixos/tests/lightdm.nix index f30f9062dcd..97ec79406b8 100644 --- a/nixos/tests/lightdm.nix +++ b/nixos/tests/lightdm.nix @@ -22,6 +22,8 @@ import ./make-test.nix ({ pkgs, ...} : { $machine->waitForText(qr/${user.description}/); $machine->screenshot("lightdm"); $machine->sendChars("${user.password}\n"); + $machine->waitForFile("/home/alice/.Xauthority"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow("^IceWM "); ''; }) diff --git a/nixos/tests/misc.nix b/nixos/tests/misc.nix index b926a62194b..cd4086cb8f6 100644 --- a/nixos/tests/misc.nix +++ b/nixos/tests/misc.nix @@ -25,6 +25,8 @@ import ./make-test.nix ({ pkgs, ...} : { }; users.users.sybil = { isNormalUser = true; group = "wheel"; }; security.sudo = { enable = true; wheelNeedsPassword = false; }; + security.hideProcessInformation = true; + users.users.alice = { isNormalUser = true; extraGroups = [ "proc" ]; }; }; testScript = @@ -117,5 +119,12 @@ import ./make-test.nix ({ pkgs, ...} : { subtest "sudo", sub { $machine->succeed("su - sybil -c 'sudo true'"); }; + + # Test hidepid + subtest "hidepid", sub { + $machine->succeed("grep -Fq hidepid=2 /etc/mtab"); + $machine->succeed("[ `su - sybil -c 'pgrep -c -u root'` = 0 ]"); + $machine->succeed("[ `su - alice -c 'pgrep -c -u root'` != 0 ]"); + }; ''; }) diff --git a/nixos/tests/sddm-kde5.nix b/nixos/tests/sddm-kde5.nix index 476cb732e25..f97a6d12b63 100644 --- a/nixos/tests/sddm-kde5.nix +++ b/nixos/tests/sddm-kde5.nix @@ -24,6 +24,8 @@ import ./make-test.nix ({ pkgs, ...} : { testScript = { nodes, ... }: '' startAll; + $machine->waitForFile("/home/alice/.Xauthority"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow("^IceWM "); ''; }) diff --git a/nixos/tests/sddm.nix b/nixos/tests/sddm.nix index e11b5714d5c..22a9e1bd2c7 100644 --- a/nixos/tests/sddm.nix +++ b/nixos/tests/sddm.nix @@ -23,6 +23,8 @@ import ./make-test.nix ({ pkgs, ...} : { testScript = { nodes, ... }: '' startAll; + $machine->waitForFile("/home/alice/.Xauthority"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow("^IceWM "); ''; }) diff --git a/nixos/tests/xfce.nix b/nixos/tests/xfce.nix index c131ef7dc8c..c8b18f12265 100644 --- a/nixos/tests/xfce.nix +++ b/nixos/tests/xfce.nix @@ -15,11 +15,15 @@ import ./make-test.nix ({ pkgs, ...} : { services.xserver.displayManager.auto.user = "alice"; services.xserver.desktopManager.xfce.enable = true; + + environment.systemPackages = [ pkgs.xorg.xmessage ]; }; testScript = '' $machine->waitForX; + $machine->waitForFile("/home/alice/.Xauthority"); + $machine->succeed("xauth merge ~alice/.Xauthority"); $machine->waitForWindow(qr/xfce4-panel/); $machine->sleep(10); @@ -30,5 +34,9 @@ import ./make-test.nix ({ pkgs, ...} : { $machine->waitForWindow(qr/Terminal/); $machine->sleep(10); $machine->screenshot("screen"); + + # Ensure that the X server does proper access control. + $machine->mustFail("su - bob -c 'DISPLAY=:0.0 xmessage Foo'"); + $machine->mustFail("su - bob -c 'DISPLAY=:0 xmessage Foo'"); ''; }) diff --git a/pkgs/applications/audio/csound/default.nix b/pkgs/applications/audio/csound/default.nix index afca63a2a8a..6e2ba7cfd16 100644 --- a/pkgs/applications/audio/csound/default.nix +++ b/pkgs/applications/audio/csound/default.nix @@ -23,6 +23,8 @@ stdenv.mkDerivation { buildInputs = [ cmake libsndfile flex bison alsaLib libpulseaudio tcltk ]; + NIX_LDFLAGS="-L${stdenv.cc.libc.out}/lib"; + meta = { description = "sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms"; homepage = http://www.csounds.com/; diff --git a/pkgs/applications/audio/mopidy-mopify/default.nix b/pkgs/applications/audio/mopidy-mopify/default.nix index abb9c50d71c..0cb076556c7 100644 --- a/pkgs/applications/audio/mopidy-mopify/default.nix +++ b/pkgs/applications/audio/mopidy-mopify/default.nix @@ -3,11 +3,11 @@ pythonPackages.buildPythonApplication rec { name = "mopidy-mopify-${version}"; - version = "1.5.8"; + version = "1.5.17"; src = fetchurl { url = "https://github.com/dirkgroenen/mopidy-mopify/archive/${version}.tar.gz"; - sha256 = "1gq88i5hbyskwhqf51myndqgmrndkyy6gs022sc387fy3dwxmvn0"; + sha256 = "1qi7f5i87ygn486gxc84njl22y84xrwabpz58y5a1hw7z1lp7l8s"; }; propagatedBuildInputs = with pythonPackages; [ mopidy configobj ]; diff --git a/pkgs/applications/audio/mopidy-musicbox-webclient/default.nix b/pkgs/applications/audio/mopidy-musicbox-webclient/default.nix index b2bca838cee..53fb4d6c2f7 100644 --- a/pkgs/applications/audio/mopidy-musicbox-webclient/default.nix +++ b/pkgs/applications/audio/mopidy-musicbox-webclient/default.nix @@ -3,13 +3,13 @@ pythonPackages.buildPythonApplication rec { name = "mopidy-musicbox-webclient-${version}"; - version = "2.0.0"; + version = "2.2.0"; src = fetchFromGitHub { owner = "pimusicbox"; repo = "mopidy-musicbox-webclient"; rev = "v${version}"; - sha256 = "0gnw6jn55jr6q7bdp70mk3cm5f6jy8lm3s7ayfmisihhjbl3rnaq"; + sha256 = "0v09wy40ipl0b0dpgmcdl15c5g732c9jl7zipm4sy4pr8xiy6baa"; }; propagatedBuildInputs = [ mopidy ]; diff --git a/pkgs/applications/audio/mopidy-spotify-tunigo/default.nix b/pkgs/applications/audio/mopidy-spotify-tunigo/default.nix index 4d7c1cb7326..034a07bf027 100644 --- a/pkgs/applications/audio/mopidy-spotify-tunigo/default.nix +++ b/pkgs/applications/audio/mopidy-spotify-tunigo/default.nix @@ -3,13 +3,13 @@ pythonPackages.buildPythonApplication rec { name = "mopidy-spotify-tunigo-${version}"; - version = "0.2.1"; + version = "1.0.0"; src = fetchFromGitHub { owner = "trygveaa"; repo = "mopidy-spotify-tunigo"; rev = "v${version}"; - sha256 = "0827wghbgrscncnshz30l97hgg0g5bsnm0ad8596zh7cai0ibss0"; + sha256 = "1jwk0b2iz4z09qynnhcr07w15lx6i1ra09s9lp48vslqcf2fp36x"; }; propagatedBuildInputs = [ mopidy mopidy-spotify pythonPackages.tunigo ]; diff --git a/pkgs/applications/audio/mopidy-spotify/default.nix b/pkgs/applications/audio/mopidy-spotify/default.nix index 3a717344aef..045c400a17f 100644 --- a/pkgs/applications/audio/mopidy-spotify/default.nix +++ b/pkgs/applications/audio/mopidy-spotify/default.nix @@ -2,11 +2,11 @@ pythonPackages.buildPythonApplication rec { name = "mopidy-spotify-${version}"; - version = "2.3.1"; + version = "3.0.0"; src = fetchurl { url = "https://github.com/mopidy/mopidy-spotify/archive/v${version}.tar.gz"; - sha256 = "0g105kb27q1p8ssrbxkxcjgx9jkqnd9kk5smw8sjcx6f3b23wrwx"; + sha256 = "0w7bhq6nz2xly5g72xd98r7lyzmx7nzfdpghk7vklkx0x41qccz8"; }; propagatedBuildInputs = [ mopidy pythonPackages.pyspotify ]; diff --git a/pkgs/applications/audio/mopidy-youtube/default.nix b/pkgs/applications/audio/mopidy-youtube/default.nix index 2942cba95f0..d3eb8539a19 100644 --- a/pkgs/applications/audio/mopidy-youtube/default.nix +++ b/pkgs/applications/audio/mopidy-youtube/default.nix @@ -3,13 +3,13 @@ pythonPackages.buildPythonApplication rec { name = "mopidy-youtube-${version}"; - version = "2.0.1"; + version = "2.0.2"; src = fetchFromGitHub { owner = "mopidy"; repo = "mopidy-youtube"; rev = "v${version}"; - sha256 = "1si7j7m5kg0cxlhkw8s2mbnpmc9mb3l69n5sgklb1yv1s55iia6z"; + sha256 = "06r3ikyg2ch5n7fbn3sgj04hk6icpfpk1r856qch41995k3bbfg7"; }; propagatedBuildInputs = with pythonPackages; [ mopidy pafy ]; diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix index 29426f43de1..c1bdab8622c 100644 --- a/pkgs/applications/audio/mopidy/default.nix +++ b/pkgs/applications/audio/mopidy/default.nix @@ -1,23 +1,28 @@ -{ stdenv, fetchurl, pythonPackages, pygobject, gst_python, wrapGAppsHook -, glib_networking, gst_plugins_good, gst_plugins_base, gst_plugins_ugly +{ stdenv, fetchFromGitHub, pythonPackages, pygobject3, wrapGAppsHook +, gst_all_1, glib_networking, gobjectIntrospection }: pythonPackages.buildPythonApplication rec { name = "mopidy-${version}"; - version = "1.1.2"; + version = "2.0.0"; - src = fetchurl { - url = "https://github.com/mopidy/mopidy/archive/v${version}.tar.gz"; - sha256 = "1vn4knpmnp3krmn627iv1r7xa50zl816ac6b24b8ph50cq2sqjfv"; + src = fetchFromGitHub { + owner = "mopidy"; + repo = "mopidy"; + rev = "v${version}"; + sha256 = "06f1y87dqc7p6kq5npmg3ki8x4iacyjzd7nq7188x20y2zglrjbm"; }; - buildInputs = [ - wrapGAppsHook gst_plugins_base gst_plugins_good gst_plugins_ugly glib_networking + nativeBuildInputs = [ wrapGAppsHook ]; + + buildInputs = with gst_all_1; [ + gst-plugins-base gst-plugins-good gst-plugins-ugly + glib_networking gobjectIntrospection ]; propagatedBuildInputs = with pythonPackages; [ - gst_python pygobject pykka tornado requests2 + gst-python pygobject3 pykka tornado requests2 ]; # There are no tests diff --git a/pkgs/applications/audio/ncmpcpp/default.nix b/pkgs/applications/audio/ncmpcpp/default.nix index 488fe45e6c8..f0fd29697b1 100644 --- a/pkgs/applications/audio/ncmpcpp/default.nix +++ b/pkgs/applications/audio/ncmpcpp/default.nix @@ -15,11 +15,11 @@ assert taglibSupport -> (taglib != null); with stdenv.lib; stdenv.mkDerivation rec { name = "ncmpcpp-${version}"; - version = "0.7.2"; + version = "0.7.3"; src = fetchurl { url = "http://ncmpcpp.rybczak.net/stable/${name}.tar.bz2"; - sha256 = "0fq9nk796cp7gs0gwrabb6wp7f5h7pph10hrkrik1wf4k3mzb4k3"; + sha256 = "04mj6r0whikliblxfbz92pibwcd7a3ywkryf01a89zd4bi1jk2rc"; }; configureFlags = [ "BOOST_LIB_SUFFIX=" ] diff --git a/pkgs/applications/audio/sound-juicer/default.nix b/pkgs/applications/audio/sound-juicer/default.nix index c27dbad78cc..02a97dde4e2 100644 --- a/pkgs/applications/audio/sound-juicer/default.nix +++ b/pkgs/applications/audio/sound-juicer/default.nix @@ -5,11 +5,6 @@ let major = "3.16"; minor = "1"; - GST_PLUGIN_PATH = stdenv.lib.makeSearchPath "lib/gstreamer-1.0" [ - gst_all_1.gst-plugins-base - gst_all_1.gst-plugins-good - gst_all_1.gst-plugins-bad - gst_all_1.gst-libav ]; in stdenv.mkDerivation rec { version = "${major}.${minor}"; @@ -24,15 +19,16 @@ in stdenv.mkDerivation rec { gnome3.gsettings_desktop_schemas libmusicbrainz5 libdiscid isocodes makeWrapper gnome3.dconf gst_all_1.gstreamer gst_all_1.gst-plugins-base - gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad ]; + gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad + gst_all_1.gst-libav + ]; preFixup = '' for f in $out/bin/* $out/libexec/*; do wrapProgram "$f" \ --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \ --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \ - --prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules" \ - --prefix GST_PLUGIN_PATH : "${GST_PLUGIN_PATH}" + --prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules" done ''; diff --git a/pkgs/applications/editors/nvpy/default.nix b/pkgs/applications/editors/nvpy/default.nix index a6dd7bcb403..c42940440ae 100644 --- a/pkgs/applications/editors/nvpy/default.nix +++ b/pkgs/applications/editors/nvpy/default.nix @@ -1,12 +1,12 @@ { pkgs, fetchurl, tk, buildPythonApplication, pythonPackages }: buildPythonApplication rec { - version = "0.9.2"; + version = "0.9.7"; name = "nvpy-${version}"; src = fetchurl { url = "https://github.com/cpbotha/nvpy/archive/v${version}.tar.gz"; - sha256 = "78e41b80fc5549cba8cfd92b52d6530e8dfc8e8f37e96e4b219f30c266af811d"; + sha256 = "1rd3vlaqkg16iz6qcw6rkbq0jmyvc0843wa3brnvn1nz0kla243f"; }; buildInputs = [tk]; @@ -14,6 +14,7 @@ buildPythonApplication rec { propagatedBuildInputs = [ pythonPackages.markdown pythonPackages.tkinter + pythonPackages.docutils ]; postInstall = '' diff --git a/pkgs/applications/gis/grass/default.nix b/pkgs/applications/gis/grass/default.nix index 39ba1f7265b..c373f8b9e27 100644 --- a/pkgs/applications/gis/grass/default.nix +++ b/pkgs/applications/gis/grass/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { "--with-wxwidgets" "--with-netcdf" "--with-geos" - "--with-postgres" + "--with-postgres" "--with-postgres-libs=${postgresql.lib}/lib/" "--with-mysql" "--with-mysql-includes=${mysql.lib}/include/mysql" "--with-blas" ]; diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix index e75e86a4d53..ef3b7b05b18 100644 --- a/pkgs/applications/graphics/ImageMagick/default.nix +++ b/pkgs/applications/graphics/ImageMagick/default.nix @@ -13,7 +13,7 @@ in stdenv.mkDerivation rec { name = "imagemagick-${version}"; - version = "6.9.2-0"; + version = "6.9.3-8"; src = fetchurl { urls = [ @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { # the original source above removes tarballs quickly "http://distfiles.macports.org/ImageMagick/ImageMagick-${version}.tar.xz" ]; - sha256 = "17ir8bw1j7g7srqmsz3rx780sgnc21zfn0kwyj78iazrywldx8h7"; + sha256 = "129s4cwp6cbhgsr3xr8186q5j02zpbk6kqfk4j7ayb563zsrdb4h"; }; outputs = [ "out" "doc" ]; diff --git a/pkgs/applications/graphics/photoqt/default.nix b/pkgs/applications/graphics/photoqt/default.nix index 9d68a44821a..f9b24581929 100644 --- a/pkgs/applications/graphics/photoqt/default.nix +++ b/pkgs/applications/graphics/photoqt/default.nix @@ -1,14 +1,9 @@ -{ stdenv, fetchurl, cmake, makeWrapper, exiv2, graphicsmagick +{ stdenv, fetchurl, cmake, makeQtWrapper, exiv2, graphicsmagick , qtbase, qtdeclarative, qtmultimedia, qtquickcontrols, qttools }: let version = "1.3"; - qmlPath = stdenv.lib.makeSearchPath "lib/qt5/qml/" [ - qtquickcontrols - qtdeclarative - qtmultimedia - ]; in stdenv.mkDerivation rec { name = "photoqt-${version}"; @@ -18,7 +13,8 @@ stdenv.mkDerivation rec { }; buildInputs = [ - cmake makeWrapper qtbase qtquickcontrols qttools exiv2 graphicsmagick + cmake makeQtWrapper qtbase qtquickcontrols qttools exiv2 graphicsmagick + qtmultimedia qtdeclarative ]; preConfigure = '' @@ -26,7 +22,7 @@ stdenv.mkDerivation rec { ''; postInstall = '' - wrapProgram $out/bin/photoqt --set QML2_IMPORT_PATH "${qmlPath}" + wrapQtProgram $out/bin/photoqt ''; meta = { diff --git a/pkgs/applications/misc/pcmanfm/default.nix b/pkgs/applications/misc/pcmanfm/default.nix index b245a6aace7..bf1bed08ed4 100644 --- a/pkgs/applications/misc/pcmanfm/default.nix +++ b/pkgs/applications/misc/pcmanfm/default.nix @@ -1,10 +1,10 @@ { stdenv, fetchurl, glib, gtk, intltool, libfm, libX11, pango, pkgconfig }: -stdenv.mkDerivation { - name = "pcmanfm-1.2.3"; +stdenv.mkDerivation rec { + name = "pcmanfm-1.2.4"; src = fetchurl { - url = "mirror://sourceforge/pcmanfm/pcmanfm-1.2.3.tar.xz"; - sha256 = "1033rw5jd7nlzbcdpx3bik7347kyh1sg1gkla424gq9vqqpxia6g"; + url = "mirror://sourceforge/pcmanfm/${name}.tar.xz"; + sha256 = "04z3vd9si24yi4c8calqncdpb9b6mbj4cs4f3fs86i6j05gvpk9q"; }; buildInputs = [ glib gtk intltool libfm libX11 pango pkgconfig ]; diff --git a/pkgs/applications/misc/rxvt/default.nix b/pkgs/applications/misc/rxvt/default.nix index c3b5fc861a8..e8914b75b8a 100644 --- a/pkgs/applications/misc/rxvt/default.nix +++ b/pkgs/applications/misc/rxvt/default.nix @@ -1,18 +1,38 @@ -{ stdenv, fetchurl, libX11, libXt }: +{ stdenv, fetchurl +, pkgconfig, libtool +, libX11, libXt, libXpm }: -stdenv.mkDerivation { - name = "rxvt-2.6.4"; +stdenv.mkDerivation rec { + name = "rxvt-${version}"; + version = "2.7.10"; src = fetchurl { - url = mirror://sourceforge/rxvt/rxvt-2.6.4.tar.gz; - sha256 = "0hi29whjv8v11nkjbq1i6ms411v6csykghmlpkmayfjn9nxr02xg"; + url = "mirror://sourceforge/rxvt/${name}.tar.gz"; + sha256 = "0jfl71gz3k7zh3kxdb8lxi06kajjnx7bq1rxjgk680l209jxask1"; }; - buildInputs = [ libX11 libXt ]; + buildInputs = [ pkgconfig libtool libX11 libXt libXpm ]; - meta = { + configurePhase = '' + LIBTOOL=${libtool}/bin/libtool ./configure --prefix=$out --enable-everything --enable-smart-resize --enable-256-color + ''; + + meta = with stdenv.lib; { + homepage = http://rxvt.sourceforge.net/; description = "Colour vt102 terminal emulator with less features and lower memory consumption"; - homepage = http://www.rxvt.org/; - license = "GPL"; + longDescription = '' + rxvt (acronym for our extended virtual terminal) is a terminal + emulator for the X Window System, originally written by Rob Nation + as an extended version of the older xvt terminal by John Bovey of + University of Kent. Mark Olesen extensively modified it later and + took over maintenance for several years. + + rxvt is intended to be a slimmed-down alternate for xterm, + omitting some of its little-used features, like Tektronix 4014 + emulation and toolkit-style configurability. + ''; + maintainers = with maintainers; [ AndersonTorres ]; + license = licenses.gpl2; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/st/default.nix b/pkgs/applications/misc/st/default.nix index 234e8b6ba69..deceba0ea55 100644 --- a/pkgs/applications/misc/st/default.nix +++ b/pkgs/applications/misc/st/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, pkgconfig, writeText, libX11, ncurses, libXext, libXft, fontconfig -, conf? null}: +, conf ? null, patches ? []}: with stdenv.lib; @@ -11,6 +11,8 @@ stdenv.mkDerivation rec { sha256 = "0avsfc1qp8zvshsfjwwrkvk411jlqy58z225bsdhjkl1qc40qcc5"; }; + inherit patches; + configFile = optionalString (conf!=null) (writeText "config.def.h" conf); preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h"; diff --git a/pkgs/applications/misc/st/wayland.nix b/pkgs/applications/misc/st/wayland.nix index ed7e0cf7ca1..4d9f0ef3f8d 100644 --- a/pkgs/applications/misc/st/wayland.nix +++ b/pkgs/applications/misc/st/wayland.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, pkgconfig, writeText , ncurses, wayland, wld, libxkbcommon, fontconfig, pixman -, conf? null}: +, conf ? null, patches ? [] }: with stdenv.lib; @@ -14,6 +14,8 @@ stdenv.mkDerivation rec { sha256 = "7164da135f02405dba5ae3131dfd896e072df29ac6c0928f3b887beffb8a7d97"; }; + inherit patches; + configFile = optionalString (conf!=null) (writeText "config.def.h" conf); preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h"; diff --git a/pkgs/applications/networking/browsers/firefox-bin/sources.nix b/pkgs/applications/networking/browsers/firefox-bin/sources.nix index 1ff70cb8ccf..883b2abf44a 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/sources.nix @@ -4,187 +4,187 @@ # ruby generate_sources.rb > sources.nix { - version = "45.0.1"; + version = "45.0.2"; sources = [ - { locale = "ach"; arch = "linux-i686"; sha256 = "6dff17afbbbb9ba8e064b431db1f6b6a1862ec56e11dfa8cb8ef5d89dd9f7705"; } - { locale = "ach"; arch = "linux-x86_64"; sha256 = "4f806511a1e7c2100d976a9753f0e7ecee483f19ca1176e1867021a55725aabf"; } - { locale = "af"; arch = "linux-i686"; sha256 = "0a2e0b55e43b41304895f624ae95372e4ab52b06c8892e0ef02a8e41c5ff28e5"; } - { locale = "af"; arch = "linux-x86_64"; sha256 = "c865d4a431c3b92347393b62c4589fe67f4323458faf1ee07367e1f432d0e839"; } - { locale = "an"; arch = "linux-i686"; sha256 = "d58dcdb222fad88650d65623005897de7a693d16c44d86f25694a00d7fa5111d"; } - { locale = "an"; arch = "linux-x86_64"; sha256 = "b00ac5cf76fe562cac8f72327cdf0e54b2c4384586fbb064deb72d2741e05268"; } - { locale = "ar"; arch = "linux-i686"; sha256 = "42851096189bc53d18ea26d9de1d0321b033a5601594c0515530263cf3155b12"; } - { locale = "ar"; arch = "linux-x86_64"; sha256 = "4d7e8760da3dac6cffa8eafeb22c759bfad3664bba7f690c0f1d1aa5284aed3c"; } - { locale = "as"; arch = "linux-i686"; sha256 = "706d584ea78172ec88c29d124abf2bd34881c9752231fdb3f491d0bf858fc5c5"; } - { locale = "as"; arch = "linux-x86_64"; sha256 = "13ed628c2ef29b8d3188274e6fc101ba622d4e1ca20880b381e62225c5f057d5"; } - { locale = "ast"; arch = "linux-i686"; sha256 = "9f8f5870245cf0016d4a9a540d29d31249188fa8f390c47cfd330874eb20e8dd"; } - { locale = "ast"; arch = "linux-x86_64"; sha256 = "9bd85381abe1335ca9208ad764477e6f2a926288058c91aee0af3a3967aa1e57"; } - { locale = "az"; arch = "linux-i686"; sha256 = "9e117f5aabdb8f71bcaf8073c76c4b795c957e6739471fed0f484d0ed39b5a98"; } - { locale = "az"; arch = "linux-x86_64"; sha256 = "06ee5bd4f1096e6728120fbed4ed6cbc88cb1003c484a15dd624254ae93ed849"; } - { locale = "be"; arch = "linux-i686"; sha256 = "c6091272b395905e746271176d354ff59eccc9d96c5e1ecc2e8e5c3ac65ed2f0"; } - { locale = "be"; arch = "linux-x86_64"; sha256 = "090ba5d28858b2c58a6a29ce0f435797a938cd788ebd3413db4ced224329d2e4"; } - { locale = "bg"; arch = "linux-i686"; sha256 = "1b8b5bbe6473b13fb80ca31514f7386015f5920c7a3d8391aa5549eedcfd09ce"; } - { locale = "bg"; arch = "linux-x86_64"; sha256 = "b49fa01d8749c1b4d327dca2379e4940d5d85d310e998cad66efecc2f485cf9c"; } - { locale = "bn-BD"; arch = "linux-i686"; sha256 = "3372a82af514706d8eacc5e4d35584379408db964c3cfd35ea75597ddefad7e8"; } - { locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "798a2a405e175f8347dfd933300eba728cde6dbe47fa831552e40b87455bd921"; } - { locale = "bn-IN"; arch = "linux-i686"; sha256 = "3895feec666feb59a554310efc70b248d63906ca6bde59c03d9a29fa2d4cd7c2"; } - { locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "58725666980beeb5a651683a76be2084ba9d40530a063f1f1ebf160fb4db8e0b"; } - { locale = "br"; arch = "linux-i686"; sha256 = "21d56c17d225a6a35711bb8354724a05ad15ec565cc70ec128384f9b8762edba"; } - { locale = "br"; arch = "linux-x86_64"; sha256 = "c0cc5568b2fac5ba35ef742fd1f87fbb73e1bca47240e888848ac804f4bd7714"; } - { locale = "bs"; arch = "linux-i686"; sha256 = "4b2d818c81bc15dad48c47847c14a00cec5b93615a23cb5d2068f4a2ef98b810"; } - { locale = "bs"; arch = "linux-x86_64"; sha256 = "a35a4cd723c446ac5593989f7fc4a56aace5cbf6bce757f3a92986e795ab07ba"; } - { locale = "ca"; arch = "linux-i686"; sha256 = "66497de3bf6069c1af68f6a50988919b8ff37afb9da7ce327a5beb014b75aa0f"; } - { locale = "ca"; arch = "linux-x86_64"; sha256 = "188b43172959c2ef064ef558d0b6518409eb19bb33add98d77a8bf260def55e6"; } - { locale = "cs"; arch = "linux-i686"; sha256 = "2ccd96ef1b831580dcfe84f62501fcebae7fdf8a803786913bd24a9cc9904ff7"; } - { locale = "cs"; arch = "linux-x86_64"; sha256 = "c9e1665399f055c561ec6d8df90235c3bfb3570d7ec613b959e80c5080e7c614"; } - { locale = "cy"; arch = "linux-i686"; sha256 = "789aadc04e83af8cc08cb9dd67bc61aef337a31d2ac17239c194de2d12608b6e"; } - { locale = "cy"; arch = "linux-x86_64"; sha256 = "6d695037d9000911422a6b50d09ef250044d629368900ec569a06ac245c1eb2a"; } - { locale = "da"; arch = "linux-i686"; sha256 = "b63788d28be0cbc37499e5ad41b8a904413c537a5786b1c2934c304f2adf4ded"; } - { locale = "da"; arch = "linux-x86_64"; sha256 = "a5d4cf1dec637ce5c09ee9f8be82ad32756a56ff0e8c529c945b40adb3b928e0"; } - { locale = "de"; arch = "linux-i686"; sha256 = "ae3b299a514423faf79bd21952f90e37a4d8e7be2cadca9a1befff4160f103e7"; } - { locale = "de"; arch = "linux-x86_64"; sha256 = "971b80131db7e1facd480546d9bd780bf69d2a99338d9e50415eb6583e550cdd"; } - { locale = "dsb"; arch = "linux-i686"; sha256 = "87c439cfbd139477055e5a8bd421aa65cb75cdb93090a54899d25411ab3d5dde"; } - { locale = "dsb"; arch = "linux-x86_64"; sha256 = "2a04b723d1ed3f9bab3dc9f11fc315fbce2543bfff37532e7cd7a4b9a33d7936"; } - { locale = "el"; arch = "linux-i686"; sha256 = "37e02fb347d8cb1f3b5079c3be055c0e37cdb3a6ab97b2928237beeb446e800e"; } - { locale = "el"; arch = "linux-x86_64"; sha256 = "9a439341ff9c39cfe8dcb6681221d0d78690ad063ac99a201001f5787b5ec270"; } - { locale = "en-GB"; arch = "linux-i686"; sha256 = "a3cc4951a826e483ddb7832333e032e9197418cacdb4250e5072de1ad2fef5d2"; } - { locale = "en-GB"; arch = "linux-x86_64"; sha256 = "433ecbabc4d1fabb2ebad958c4e7a0bb9cff9a657b1a641f820d5f0a7ba8c1f1"; } - { locale = "en-US"; arch = "linux-i686"; sha256 = "a78498b51059f46d42cf2fcb2232d57d97f2ab4e8a789151d3a26e013132dbb8"; } - { locale = "en-US"; arch = "linux-x86_64"; sha256 = "251e8d67abe989ddbf7cf9e78bba58eee43e3b1eb0c461a9c6c376bda6c71a87"; } - { locale = "en-ZA"; arch = "linux-i686"; sha256 = "d6195b72e56ca9ea366ab47885ee22b0f7bf4811b3cc937c36af53fe4e6f5d89"; } - { locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "f82eba9a593fd6ad8a9b5b8b61d2ccf986080a1cff2af598afe930cd96423a5d"; } - { locale = "eo"; arch = "linux-i686"; sha256 = "b6bcfea89be5883e1e5d2899bab371b7d972d4be5717d21d522bc56679463dd9"; } - { locale = "eo"; arch = "linux-x86_64"; sha256 = "4908438cf56646665f91bf12e46c611818c5323979048d01bbdc4d5cf945832d"; } - { locale = "es-AR"; arch = "linux-i686"; sha256 = "ace48b5a36bccf1d21e17611e9ef7c21786f207da111473479473e5bc5817fe9"; } - { locale = "es-AR"; arch = "linux-x86_64"; sha256 = "277ec48d9b45bd41dcaa141d67f5f814845d5e0faeca97c6f5d507f8c9ce5312"; } - { locale = "es-CL"; arch = "linux-i686"; sha256 = "78cb60452201df5cff7ed7da54f3f876596de0a895887f8016b3d642d727e96c"; } - { locale = "es-CL"; arch = "linux-x86_64"; sha256 = "3be79c28ea7f7ea075fc92e418ff980176dc9707329f1043c54161e703b43028"; } - { locale = "es-ES"; arch = "linux-i686"; sha256 = "4bb8d2732754c1112bc8d32a26b0cfee79449447a4cb8ca368f1d41e9ba43d37"; } - { locale = "es-ES"; arch = "linux-x86_64"; sha256 = "f512f8f1b163c72234173944c5781550810b90c2b6a1a6f8d070b87a8f85192e"; } - { locale = "es-MX"; arch = "linux-i686"; sha256 = "01f2b5e09792714b6315933ec714c5d1baa77bbab5b4e4d06ecf670c47c75d40"; } - { locale = "es-MX"; arch = "linux-x86_64"; sha256 = "c7af08a37c116a5cb805cf0b60ef1b1a8f956fec3381ceb0288c62355b05c91b"; } - { locale = "et"; arch = "linux-i686"; sha256 = "0aac86a5cd520a806aedc2f8111798eebcb08919099973f7d7fc7addfbaa0584"; } - { locale = "et"; arch = "linux-x86_64"; sha256 = "fa0ad1bfd65d231cc58c9d79fb07cd4a98d5976e870af017642a77ebd7a4b260"; } - { locale = "eu"; arch = "linux-i686"; sha256 = "4bad5d7e4e2d917606f63efa079092516ff1435013adb8aedbe95a53aa2c594a"; } - { locale = "eu"; arch = "linux-x86_64"; sha256 = "9e390ebf06c5abc46f80ec8c77bd7572de827ee5d368de34c1252ee386687372"; } - { locale = "fa"; arch = "linux-i686"; sha256 = "9738ddfbaaf3e34c5546c584d9dbdeca68086e66f06b438760befb23e07593cd"; } - { locale = "fa"; arch = "linux-x86_64"; sha256 = "55e8f1f2547a9c7c3bb3cf7029e166ae42a3745f51b58c87d7eeaf6ecdb81952"; } - { locale = "ff"; arch = "linux-i686"; sha256 = "dfb266913e27299469de2a5ffedd5fa47f344d6d7e092ddf630cde726b94934d"; } - { locale = "ff"; arch = "linux-x86_64"; sha256 = "370e310c39f0a87cc8e3ecc5bd6c8f3bbd863b1a8d7e613a0c2fa9be7b8b988c"; } - { locale = "fi"; arch = "linux-i686"; sha256 = "2d10c5e21f414cc83a5413e8a2fc53124c2dadb718861410fa45e57c8ba4fd7c"; } - { locale = "fi"; arch = "linux-x86_64"; sha256 = "d791eda3135572d0735393ee1101383b4d20142a4279dfe615a9e20c341ea4ea"; } - { locale = "fr"; arch = "linux-i686"; sha256 = "94118a53c25a0fb243b63d51a64c077672c4c93d7ca964f6384e3bb8234891a1"; } - { locale = "fr"; arch = "linux-x86_64"; sha256 = "6ccd8216017b2593430a812ea167a97012060d41fbf610bf518b8d997ac59c53"; } - { locale = "fy-NL"; arch = "linux-i686"; sha256 = "bd5cfd3565353ae8d01d8c9089a364394aa0ebc4547a41dba11ced14a494ed9d"; } - { locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "0db0aa59c0df881f901d794fdf99f5abd27db88e0c3ab2d364b22eb7326152db"; } - { locale = "ga-IE"; arch = "linux-i686"; sha256 = "59486516e8aa13ca113e1f2998b05509dba0546aa7b11d99ff6da55a6f069f64"; } - { locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "1cda950ea6cc6d8957d580fd2c59784bf6cd339083f0fc3cd3a084e0326b0041"; } - { locale = "gd"; arch = "linux-i686"; sha256 = "602047e1669e9551f7a3501082e81e3e79287082b981d59f515887c5e892fb70"; } - { locale = "gd"; arch = "linux-x86_64"; sha256 = "d5b901d78e06a75d2534214bb849e31696ec44349c18b9b511e68951d29fde90"; } - { locale = "gl"; arch = "linux-i686"; sha256 = "d55a556321c600024ea2fc38d9671f34c490046da88a89e4ae46d9217bf64677"; } - { locale = "gl"; arch = "linux-x86_64"; sha256 = "3deb86b766f51a218266cf4d97e1b3332c8ca7d75cc86491d940a8b9f37c0bb5"; } - { locale = "gn"; arch = "linux-i686"; sha256 = "f38099f998e5bc396360856fe2543152feed086b64a85b7ac3bd2b9e3e0ad609"; } - { locale = "gn"; arch = "linux-x86_64"; sha256 = "af4055322dc0524a00fc3ac08a4b2eb40a305dd574b92cc591fee6a00482c4b6"; } - { locale = "gu-IN"; arch = "linux-i686"; sha256 = "3210857982a6628f8c2632995c248eed1bd1c719ddcbacb663839990e67b88c8"; } - { locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "bb2154aba760896180ae747648530880127c8c46481b04a1ea0cb3b47c2a6f41"; } - { locale = "he"; arch = "linux-i686"; sha256 = "18b5217fee9e30bd4bb7f1ea27445ff4aede149a286c07b7c8e9740330b7e6eb"; } - { locale = "he"; arch = "linux-x86_64"; sha256 = "2f51ccc6e5c64976c2f81818d0a4381e508aa5f70ec2108f0e6f512a51574709"; } - { locale = "hi-IN"; arch = "linux-i686"; sha256 = "555318d41795c988f41655bcf4653aef259c2e3dc80fdcf95670c6ada7fe687c"; } - { locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "683e0437ff9168e159e933bf72f6db2d95ae94bb06bc48a1d1fafd30b7028fe1"; } - { locale = "hr"; arch = "linux-i686"; sha256 = "c7a2cfb5f4594a3690797ee5559949154b3dd8c9e6a4dbd774e312f914e0b268"; } - { locale = "hr"; arch = "linux-x86_64"; sha256 = "94098ca5f069445a6514d4b7500ae10b018b4e1dba2eb7052a200c5eb707ba41"; } - { locale = "hsb"; arch = "linux-i686"; sha256 = "c81cde05298660186d2760e977e43e554a896105765c043caac74b09326358fb"; } - { locale = "hsb"; arch = "linux-x86_64"; sha256 = "4cdd381d2eb94f163637a328e5ee9369eddc0559f17861377566853e2a7ec571"; } - { locale = "hu"; arch = "linux-i686"; sha256 = "0af518a42e35174f838b958823ad1aa24a14ff75a6058c2171594e16d5670d77"; } - { locale = "hu"; arch = "linux-x86_64"; sha256 = "b4c0212fe6a8df9689d5dfcaa9ebb2a1cf07e1e9817727581411542ea9bf26b5"; } - { locale = "hy-AM"; arch = "linux-i686"; sha256 = "0d62e6627e3ea838089a6b8b8692d034a64b47c66af80561a23bcdd74fcc777b"; } - { locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "0e07e77cfac6588f8b1c3579b7dfc62feafcb72e7f9f57e2618364e3c02c0527"; } - { locale = "id"; arch = "linux-i686"; sha256 = "9361b3c83f4b3fe84d2918810b4651bc2878eeb3cdc849c513aa3faa17bb9a72"; } - { locale = "id"; arch = "linux-x86_64"; sha256 = "baaa11970fb695434fc2c7829d99578f7f48debb5e11729f94b58df330608c36"; } - { locale = "is"; arch = "linux-i686"; sha256 = "3f1fc35dc18a684a22c05a2ce468b5a164b6c83457694f9de4e6f9a72c28c6df"; } - { locale = "is"; arch = "linux-x86_64"; sha256 = "046fa860343ea079db768d94c5dbc563d6564df5a177f2a5cb7fdfa965576019"; } - { locale = "it"; arch = "linux-i686"; sha256 = "ce736af6240e803a3c1fabb58bdae2e27e44ff593e56172b3d6d174c89f606e5"; } - { locale = "it"; arch = "linux-x86_64"; sha256 = "e2a8fb6e3f18b2be4b7736e3c8adf77968bc13dea7f981e20ae47430b137695c"; } - { locale = "ja"; arch = "linux-i686"; sha256 = "2153c10104c62a5814a4f72fab7be6ffa2e03e5c5cc5f7172820d0a139134fe6"; } - { locale = "ja"; arch = "linux-x86_64"; sha256 = "446a20d4ca5c7086045f8750eb0bcc850118d2f020a77f8fa4d116064b443953"; } - { locale = "kk"; arch = "linux-i686"; sha256 = "3ddda0311feee7c247fd309a7721f4be8458fa528e63a2e8f58c005f70007144"; } - { locale = "kk"; arch = "linux-x86_64"; sha256 = "4dd8f3ea040fb2d6056f0c0f615ed38f09c980cee660fba1f8aaf0fd506745eb"; } - { locale = "km"; arch = "linux-i686"; sha256 = "a295d9d466aef89c95989866a38080d3d1b110e4efb52b1a01479817dd1c866c"; } - { locale = "km"; arch = "linux-x86_64"; sha256 = "dbb249a1398c335a155ea2b2f6ac4656f8ff00b999035dce9f5a59532043f9c3"; } - { locale = "kn"; arch = "linux-i686"; sha256 = "357077be38c6869602a13abf1f494ec8a124a9eb2c03a395a1b30276110b6913"; } - { locale = "kn"; arch = "linux-x86_64"; sha256 = "11658a25f30558a6f11f28c80a98800095ef4c5879d456dc3503737a8d9cb465"; } - { locale = "ko"; arch = "linux-i686"; sha256 = "a653f4030480ab17d77c48b144296e78faba7ad48fdce812afbe8243299575c5"; } - { locale = "ko"; arch = "linux-x86_64"; sha256 = "182858b0c4bd6ece47aff2b406da7442eb3fbe148c3bc20975f6bafd2acd37ac"; } - { locale = "lij"; arch = "linux-i686"; sha256 = "449088107c0077318d95176a90a65219a76c851c98dd5b929452bfde2a87773f"; } - { locale = "lij"; arch = "linux-x86_64"; sha256 = "8b45df098143a01f915b8eee0f8b7d56b4ec73fc9cfd0fba8c5f4b8582992f80"; } - { locale = "lt"; arch = "linux-i686"; sha256 = "085e9873154fab87c909cef005a82f0d5ab81a8ece9adfe46766ae69418084f6"; } - { locale = "lt"; arch = "linux-x86_64"; sha256 = "dde643769a14714cb9990fa489389fd5cabcfb26b23c31bb32dbaa17a38f5150"; } - { locale = "lv"; arch = "linux-i686"; sha256 = "f6363da3c7ebd5f9d80454ad126ac1cf03ef2c9fd2eebf5cb174f0d7a9cf1e36"; } - { locale = "lv"; arch = "linux-x86_64"; sha256 = "41fb793c10d5eb52dd3847f9dee30c3f67c8ad5061897d9f13135b7d1666a84b"; } - { locale = "mai"; arch = "linux-i686"; sha256 = "96af787075b06d96a2e8a261b900f6eb590f4997354dcd9f57a8714af3432a12"; } - { locale = "mai"; arch = "linux-x86_64"; sha256 = "514e75157308cd6fc96c54592dd1c1f5b556c15c5b211543644f324eee09b1a2"; } - { locale = "mk"; arch = "linux-i686"; sha256 = "1f809ef4d0afcb13bb40459a63be49ab6e074641e8f4ce54e9d2bd89c4b0b141"; } - { locale = "mk"; arch = "linux-x86_64"; sha256 = "4931d99ddd6851e4e4596a808e6b6e5fe45012711723c6748b752217c70be9d6"; } - { locale = "ml"; arch = "linux-i686"; sha256 = "5081b42676c174226c357c798d64cade2acecf6e935bbfabdaab548d364dd1ff"; } - { locale = "ml"; arch = "linux-x86_64"; sha256 = "1cbaa2c64d8fc098b67f77660e18a3df3e051396a3d5e0f984294b0823324365"; } - { locale = "mr"; arch = "linux-i686"; sha256 = "d1cc4ef0d9938c85a21e64e4a71539d46a78c709edd1ac1dc331da8ae6af57e1"; } - { locale = "mr"; arch = "linux-x86_64"; sha256 = "8fc0abfe8e834c0894187fab63becd1e3d4e071609676c1d0a8fd35a4265ec60"; } - { locale = "ms"; arch = "linux-i686"; sha256 = "7f471e30f28f0ccf6bc285d24923be2b53415891f4f0909c31160bd09d8e2c21"; } - { locale = "ms"; arch = "linux-x86_64"; sha256 = "150101c5a3556664a9e3827edf36c412c64037871a5af5f66c47bed448c8931d"; } - { locale = "nb-NO"; arch = "linux-i686"; sha256 = "67b888c5b666e1428c182dfa79aa1a9a471c785d4dac85e6cf1f618dee9c796a"; } - { locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "57c1aee6f309536788a9a9bd2be3046d65c9b174583de7e0b72cf45f28156f67"; } - { locale = "nl"; arch = "linux-i686"; sha256 = "43feb0205631ff5caa6e7d71fa37a6643b3b3fd92fc06b77cef9e9a0113bb1ce"; } - { locale = "nl"; arch = "linux-x86_64"; sha256 = "182481c49deb71d9344a8789db40e233326719dbe19973fedeaaa504ba771fcb"; } - { locale = "nn-NO"; arch = "linux-i686"; sha256 = "995abcace6138d11252b60958a8d5a13a1abf94c8017e567053468f811549b24"; } - { locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "d449fa5534d9a7f5e772678388770f14fa32226b0366e9a2adf7cd245b911139"; } - { locale = "or"; arch = "linux-i686"; sha256 = "a7abea23a03ed38048e724e2f7fa234e24f0f74d8681e39bca5ef183178df923"; } - { locale = "or"; arch = "linux-x86_64"; sha256 = "b05963dc6e13757b4afd1a1fa72c3128cbdfc9db3ba16adc20d2fd2eb101f165"; } - { locale = "pa-IN"; arch = "linux-i686"; sha256 = "4a30beb8ca9feca58487264abbed2a403336835140767ebac31be24bcf4b9386"; } - { locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "77b77274a7eac09f4d1a7163ba5555ced722369717d98ba1dab014140a4ac235"; } - { locale = "pl"; arch = "linux-i686"; sha256 = "699b72fd6bdda12d71521bc0e32fb1a95d933dc45f62595e6b02f5441ff6d016"; } - { locale = "pl"; arch = "linux-x86_64"; sha256 = "d748461e3e45a3d07aa36bde8fd265a51888e34ce0a8e23fdf893e540cc90e16"; } - { locale = "pt-BR"; arch = "linux-i686"; sha256 = "0b7062f911ce1d70e5300cd85328aa507c9a39ad14110a0241e23280af0f6db5"; } - { locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "b2de3df121d0ca4b4c322533040ae5187cff9fad8e8b83997425867c051b636c"; } - { locale = "pt-PT"; arch = "linux-i686"; sha256 = "801a04cd65d7253c95bfb9b680abba87b45e3f0cff18f94b81945ed47154b9e7"; } - { locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "5e6a28463b388fb2a242af899e521a7c2a4bcc48959d0f6813335fd11e3b5861"; } - { locale = "rm"; arch = "linux-i686"; sha256 = "57d8127547da954a6fdecaaab0006d570125ad577ad7d66e53c97e1c2194258e"; } - { locale = "rm"; arch = "linux-x86_64"; sha256 = "f6158506cbf3c96a5f6a551969338a65369f2be52bfa80359da3941d2f3277bb"; } - { locale = "ro"; arch = "linux-i686"; sha256 = "980701a87255b999c4df5d82a53b653bb513675ba93e5138bc47e91174d03c3f"; } - { locale = "ro"; arch = "linux-x86_64"; sha256 = "95e80b8bbd38510719463ca1b67e574f0a1d62daa8fbd09f4bba277749c57517"; } - { locale = "ru"; arch = "linux-i686"; sha256 = "16e6775a26756b445e5c72220297062b3e4e1ab66efd0324eb161a4d5b353874"; } - { locale = "ru"; arch = "linux-x86_64"; sha256 = "9bc067f5c158f33fdafd8b7ea1ab3492002ceca579a177a292a835d52c430c27"; } - { locale = "si"; arch = "linux-i686"; sha256 = "2fdc744bc85488514b9bcf93b017e6f6fcfd4cf7c249c1e7d307956cb62baf43"; } - { locale = "si"; arch = "linux-x86_64"; sha256 = "366893e7b7337ff6bdfe0def0ac88615e9cadb460fbcb17dd047f18172782208"; } - { locale = "sk"; arch = "linux-i686"; sha256 = "3efabb4f04376688f51df5c70fb4cfc0b382e9b6160eb625969945a8e3272a18"; } - { locale = "sk"; arch = "linux-x86_64"; sha256 = "dd97fc87382cca475b4b8ef8ab137b8f436e4a4792bfc06bcf0e7736e1f5e452"; } - { locale = "sl"; arch = "linux-i686"; sha256 = "3ba940deb5b1db31aaf07c005e62ddbd6acf44d3d0e775aab51c2eb0dc2da936"; } - { locale = "sl"; arch = "linux-x86_64"; sha256 = "dae438abc4cdd552bc7750ecebe958cbb7ef0edbb745d19e9b670db1e5c9fa8f"; } - { locale = "son"; arch = "linux-i686"; sha256 = "ef1baa4e6b333cd19df938dd13b91e091c9ed838b72767def2c0eec7a473532f"; } - { locale = "son"; arch = "linux-x86_64"; sha256 = "c2e45137b18717889977e0203951ddd078e1379f05875915f295b14677b6e75a"; } - { locale = "sq"; arch = "linux-i686"; sha256 = "d4f48c90a2bd4f8751b66653e0aed0de3f4ff9b40bba306377577ef8cbf94541"; } - { locale = "sq"; arch = "linux-x86_64"; sha256 = "85cf583913978c109dcaf07b22442505554813b6129862668ef78f491588a153"; } - { locale = "sr"; arch = "linux-i686"; sha256 = "08725f28304608e029e9e4ccf0fb478eda4b6cde138ad65a53e2f88af97e8a6c"; } - { locale = "sr"; arch = "linux-x86_64"; sha256 = "bfdca6d30f044bed181d45396c81f0a1d0e9b9026607e0700cc1bf225408ac20"; } - { locale = "sv-SE"; arch = "linux-i686"; sha256 = "01f98e4954e1a1df5b0aaf711696b6f7e7237ea3df57071479e8749c621fbbf1"; } - { locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "b1c292410edaa4d6595b21b803287030d21ddd64e7a6a941d7627bb4cbff2435"; } - { locale = "ta"; arch = "linux-i686"; sha256 = "d6d62857ccfe54ab870bcbe0ea98e41d59524b3958c28ddffcfb009d6305fde0"; } - { locale = "ta"; arch = "linux-x86_64"; sha256 = "253080f66f47850222c676d98626c5a879ee708d1f03b3598d4ac205998676c4"; } - { locale = "te"; arch = "linux-i686"; sha256 = "ffa9371d8960707a0062bc6cb5ed5aa84c9e5b9b898ddc403b346b519bf6f814"; } - { locale = "te"; arch = "linux-x86_64"; sha256 = "69c3776bfd41bae4067da4f5f350c5f0a906c2b8d1edffe5d3907bc7ca2ee863"; } - { locale = "th"; arch = "linux-i686"; sha256 = "3dbead624ae46c14208a61ed8c6b515117d472a8f8bebf14478bc467da23eeee"; } - { locale = "th"; arch = "linux-x86_64"; sha256 = "4c0db90021ad46d67f68b3d2d928a279cdff14b7d62f8fa4e07a33135ab925b7"; } - { locale = "tr"; arch = "linux-i686"; sha256 = "744327c6a3c514ff7b0bc5940f1744c95c6ac47165d5b316bbea11412a2d8550"; } - { locale = "tr"; arch = "linux-x86_64"; sha256 = "321f096a89898ed027b95efa4f02fdaa9118eb414e35088ce259b76048bf77fd"; } - { locale = "uk"; arch = "linux-i686"; sha256 = "f3d0a5a328b686cf18339e50a59920fe002166b35c5b5b29c04156bc5b5c6d4b"; } - { locale = "uk"; arch = "linux-x86_64"; sha256 = "b15e82737c69703bcdd97f5699280338e4c2029b5eea7df98fb218a5e2a579f3"; } - { locale = "uz"; arch = "linux-i686"; sha256 = "dfdf28670cacfd43f71d81c609fc2961682ec2c7a64ea540e49a571195e68852"; } - { locale = "uz"; arch = "linux-x86_64"; sha256 = "eaacd1534711def0ab30eb9a53db2553c4cc202ec07c40bc5b2ded7e729347ac"; } - { locale = "vi"; arch = "linux-i686"; sha256 = "4b4753038753d814d1e5a1ff995445abec80fd74d9443cac38495193bf039762"; } - { locale = "vi"; arch = "linux-x86_64"; sha256 = "3051a5f8b0d47860f98839c4496298d71aeb6ef98f099937b8da9d87d7a1986c"; } - { locale = "xh"; arch = "linux-i686"; sha256 = "2798bca7d894a0ba223694fe585e1b9fcf60cc96d881d7570c06a4d77afc4b20"; } - { locale = "xh"; arch = "linux-x86_64"; sha256 = "acb1084e32bc467cd3374e6930c8f51deea38e94ddde09bf5a257d473d2579e8"; } - { locale = "zh-CN"; arch = "linux-i686"; sha256 = "93a3f1b92aeb7a3e7659ebe0ad7c7df966279926fe3fdc7b0047bd858482234f"; } - { locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "047d74546e4767d728e7522d908056c8aaad9cd8152517425443b59ff580bebe"; } - { locale = "zh-TW"; arch = "linux-i686"; sha256 = "b710126e2d7cd6f55b0dd54811de64c30eb69f97ea8a71905b3ea49e59abdfe2"; } - { locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "d3b52404ab397385fcbb617f6cd8cda821d3927852e0a617dd60443c2cad6b65"; } + { locale = "ach"; arch = "linux-i686"; sha256 = "3e925e9594f84e6bce3f24fa0a1207ec584818df4815ae04a6c882644e2f7cc6"; } + { locale = "ach"; arch = "linux-x86_64"; sha256 = "c960352a5288f09752ff76440278e76700a1921109f0976b4d922ceeedec8e9c"; } + { locale = "af"; arch = "linux-i686"; sha256 = "3067a999cc678fe225c11288ed5659a251f237e098903b2cf6f23bdbceb70a9f"; } + { locale = "af"; arch = "linux-x86_64"; sha256 = "f329f7f3e15cd90263d70269c946f83bca01384618a59d590ca371930e7b1939"; } + { locale = "an"; arch = "linux-i686"; sha256 = "564ba48104a2db7709e4b9b25cf8d2853ef8a2b919a14030d7cc59751ac8ab8c"; } + { locale = "an"; arch = "linux-x86_64"; sha256 = "c2628a079e4c601d54c869d3b13ec1a772353885b29a63559aa544d5f48d4873"; } + { locale = "ar"; arch = "linux-i686"; sha256 = "3097a13c59a324f3f9b7504b4941b1846cfbd5593c91597a2475fe87efbb61f7"; } + { locale = "ar"; arch = "linux-x86_64"; sha256 = "b5778932fb122de9f7070393b4ae98e190e648857c94096a495e021a3c956a04"; } + { locale = "as"; arch = "linux-i686"; sha256 = "b6751bdaf612b8a975122812db0e7641eb5932e6c13879d7b48f2b7f5e8a2c6a"; } + { locale = "as"; arch = "linux-x86_64"; sha256 = "6501b0e3c4c55eef08e94dcd6f5fab70d01f88e57630f5a999279286fc9b1058"; } + { locale = "ast"; arch = "linux-i686"; sha256 = "40b5f29d2a818e60d5ed1ef2f37ed5a65bf52b9138b2e4fd1c110b404fbf3910"; } + { locale = "ast"; arch = "linux-x86_64"; sha256 = "6f9e6266d790784d57cab715d8d6fa5e648ec20287c8d6ad746972e284f5558b"; } + { locale = "az"; arch = "linux-i686"; sha256 = "005ca6c0184a9c5a2eee8d49b00782872abbe202c70654d856fd519ce62ea47a"; } + { locale = "az"; arch = "linux-x86_64"; sha256 = "32d5179de71be41b855d0454004e43d336289a6fe4967e869d0b9fb42fe2fe71"; } + { locale = "be"; arch = "linux-i686"; sha256 = "0fadc3acdd104cc171a18c74e11e853a9a322017f3f63b79712dc6628246630c"; } + { locale = "be"; arch = "linux-x86_64"; sha256 = "3fe751e0c702fc8a03f63cba1d1f2e0897b2f729c1b607f68f9934926a3343d8"; } + { locale = "bg"; arch = "linux-i686"; sha256 = "80c49634c1b0acb2ee533ddd6581845270f05a3406cd7b41bf5962182166c000"; } + { locale = "bg"; arch = "linux-x86_64"; sha256 = "12e74f5a3b8500f18126e305d49cf26290fb145d62d888bd00fd44b412dec105"; } + { locale = "bn-BD"; arch = "linux-i686"; sha256 = "22511d1c27f3876bbe7c4e791accdfa205e05cd3fc4143070f8e1e75521fa12e"; } + { locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "239e59d26a842efd2ec61dcca73f7b6aadca6d4bb969e7447bf8ef2ed880a77c"; } + { locale = "bn-IN"; arch = "linux-i686"; sha256 = "72f72e6528c5d9e373e21065eba623cbbfc6c82e73db0df3581a1ffebe664cbd"; } + { locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "580564e4a1e249a7cb6c83736343af43f903df82a97f8d2e19bd749e01867339"; } + { locale = "br"; arch = "linux-i686"; sha256 = "1dbc1d60e99812077b1b43a6f294e9c834db5b08ad67976290a5ea6f07d44c05"; } + { locale = "br"; arch = "linux-x86_64"; sha256 = "2c6524b05b9ab8da113066de6d6380cad29b681921c03486618dd2b6d10ca1ae"; } + { locale = "bs"; arch = "linux-i686"; sha256 = "11b706f2621a8026e10de074f0cbcb6bab4a7b0a17d144640c8296ea35e92c95"; } + { locale = "bs"; arch = "linux-x86_64"; sha256 = "e4ff831c617918c52b3b2a9e69a1f35f8b3e825f407cf6729d7e2b479860de29"; } + { locale = "ca"; arch = "linux-i686"; sha256 = "1c2aefd0ab56bcfd619705aba70018873581c7482307c32842ffdb68ce441f10"; } + { locale = "ca"; arch = "linux-x86_64"; sha256 = "47ab6aa2c474b9b04f246822c471548b2452559d04e4ec8cc099f3686729d285"; } + { locale = "cs"; arch = "linux-i686"; sha256 = "f2c4028d562148ad39390853d388ed0617419e97bda55a0c6c47bf0e94145446"; } + { locale = "cs"; arch = "linux-x86_64"; sha256 = "28d6eb534884b2c05afe87981b894c790fe57508b3e866cdcf341e1f9c51080c"; } + { locale = "cy"; arch = "linux-i686"; sha256 = "684b11673d16778961115b990734888975267c3c253a8081519e53ae95df5798"; } + { locale = "cy"; arch = "linux-x86_64"; sha256 = "d17294841995094d6395a4e65d50e5382e845d59e5949c952e96f4fe739d9bc4"; } + { locale = "da"; arch = "linux-i686"; sha256 = "4f2d29d52968c1b7a96af37beeee7150504bd3c32c4178a814ab0c4f86fe9644"; } + { locale = "da"; arch = "linux-x86_64"; sha256 = "65d01baab9e71a5a3d92124dbcc44c158277b273e8b6bcb302f853f61babde71"; } + { locale = "de"; arch = "linux-i686"; sha256 = "55af9ad39962559a48720c65f66d3bbab037ff30e777439428e2467a4559f039"; } + { locale = "de"; arch = "linux-x86_64"; sha256 = "835ea2e3757beb74c939296aa3d00092ff3f9d6d8805b64a267bcde28de0cb94"; } + { locale = "dsb"; arch = "linux-i686"; sha256 = "5b419a8f5e03257718237249be9c76eee759e46147d154bf994774139bb56be8"; } + { locale = "dsb"; arch = "linux-x86_64"; sha256 = "90d5dae350d65c6db8b156764ccdffe0f9951be29339a68db22018840c2247c1"; } + { locale = "el"; arch = "linux-i686"; sha256 = "77cc23059dc3b2956f3caf5802091ba48c4a42f5d86066f06282f82cb00845b7"; } + { locale = "el"; arch = "linux-x86_64"; sha256 = "daa2180f15708ec07902b639fe30cdb9c2c230622a92011e1065d24b706bbc62"; } + { locale = "en-GB"; arch = "linux-i686"; sha256 = "15b084bfeac2e49a0d40b37a890321500eede1bed2edaa95cf3bba8981bb6a08"; } + { locale = "en-GB"; arch = "linux-x86_64"; sha256 = "c5d17b6386dcae9cf88b2d80b38e921646936f253616104bec5a2fbb58d25fbd"; } + { locale = "en-US"; arch = "linux-i686"; sha256 = "6ef1fb2322cf448afe2c09b008eb2bab0c2efa94378b2ae9889bf83ac6f779af"; } + { locale = "en-US"; arch = "linux-x86_64"; sha256 = "4068eb3eb07e9798ddc1449186a1c60196bb6051ca7217f6bcee5da21e41c6c5"; } + { locale = "en-ZA"; arch = "linux-i686"; sha256 = "4a61661b05ddd62f9e28ada0b39fe1a81cb5d737fa50d636561f79ec324e689c"; } + { locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "ddc551e2d8d0c50ba268ba1e8fd9ecbe52e05b0de0d1bb586045206a9e745a7a"; } + { locale = "eo"; arch = "linux-i686"; sha256 = "236a9b6b632d1f30d63989f03783288eb8c1f144cae80b4549c0eded5dd95f1f"; } + { locale = "eo"; arch = "linux-x86_64"; sha256 = "0f3a07a470e146891326ac36aa38b58018a4aa9ae668c8bbedc3b95c28d3fcb4"; } + { locale = "es-AR"; arch = "linux-i686"; sha256 = "6feb23d97fa5a2356365d5779c18af5fc2a00b0e91c92a5127f4d576f916f7a1"; } + { locale = "es-AR"; arch = "linux-x86_64"; sha256 = "5e2afba4834e6c44e8717090b832c76dfb5303617bc466be5299d579e9b298dc"; } + { locale = "es-CL"; arch = "linux-i686"; sha256 = "3734590f319e8e281938dae65ad2e6fd7496c0c480123a6a819b3bb5d1489c69"; } + { locale = "es-CL"; arch = "linux-x86_64"; sha256 = "e0fcfccfe80dcc71a7d527539e42acfc6d6786a9e8491b426aab7fc3789c8cb6"; } + { locale = "es-ES"; arch = "linux-i686"; sha256 = "126cf64e6f7754fe0ff8a97499ccd528896ad3bbd89296271609092ade68524a"; } + { locale = "es-ES"; arch = "linux-x86_64"; sha256 = "c8dbda78bffec09d401b39b76d9684a03f47102955d04604cfc2e7ddb0315f2f"; } + { locale = "es-MX"; arch = "linux-i686"; sha256 = "8f116ccad3093783476a60ea605e324b0046b84b59c9f858dc080d2e275cac51"; } + { locale = "es-MX"; arch = "linux-x86_64"; sha256 = "e6a9c775983e310d3ed8a98530860ce19e7a78df16dffb95e4735007fcf82a57"; } + { locale = "et"; arch = "linux-i686"; sha256 = "1b2b205731ce638823bd448b3d90e919d13e24b9b92e25eebef3766bac3e8330"; } + { locale = "et"; arch = "linux-x86_64"; sha256 = "97ecc57e21229d46d9d152d7821e860f3f2a53c10eda7caeb865af1919c6a0fe"; } + { locale = "eu"; arch = "linux-i686"; sha256 = "5f0e7875993532ad234fe7af2a191619e308be726ed6ae8be01afc79f8c5f3c8"; } + { locale = "eu"; arch = "linux-x86_64"; sha256 = "bf2a52f3fce8ff4142cb1346cb5ce0f8b51959755698377db0807bc1e87e01eb"; } + { locale = "fa"; arch = "linux-i686"; sha256 = "12d593a12a0fcfcd720a6a5324b349c139f6e6759b111dab869e851241736e28"; } + { locale = "fa"; arch = "linux-x86_64"; sha256 = "29cb4531e485af7dae2a45a1b9a0620292eaa2764b4cd24504bce0e54c8b71ae"; } + { locale = "ff"; arch = "linux-i686"; sha256 = "d67f9937780713ed4c130713239254a1e0d3918f2d2f528b74651b413e281cbf"; } + { locale = "ff"; arch = "linux-x86_64"; sha256 = "140b199b0ce0a32fcf363946c942d733b587d9569c75f2dbab19161385f12d9b"; } + { locale = "fi"; arch = "linux-i686"; sha256 = "586346c2bc47b1b2693d03e4f2fe3b36de00966244120272426c597b94044595"; } + { locale = "fi"; arch = "linux-x86_64"; sha256 = "160d0036392cb38de1a7e15ba9d0d1acf0538ff1b575ab1d1df11d187c5ac74d"; } + { locale = "fr"; arch = "linux-i686"; sha256 = "f33b267d223d704beef813d0c7c8ab534152373435ef04db3b039ad56b02c556"; } + { locale = "fr"; arch = "linux-x86_64"; sha256 = "c141b154d5c56eefd94bfe7e391d0fa4027cee6685820e8be304c801d7064c65"; } + { locale = "fy-NL"; arch = "linux-i686"; sha256 = "2fff2f173cf6008b7bc17cad2ce16a43901f8484f3eb2700368acd64f98f075b"; } + { locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "88227c796a82290c27b97cb27d8f606f1982115eb5724fe4a6169056ac000816"; } + { locale = "ga-IE"; arch = "linux-i686"; sha256 = "f9deacaf81e46267fd1d7297149e9f7e330bc2a58981cd65857c6add5eef6402"; } + { locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "c376d517de3aad4152c0d5dceb8ef1a2deef1213e568404f06163f9d4adbe777"; } + { locale = "gd"; arch = "linux-i686"; sha256 = "f4f11f104fe964196e1588b1cddf5a43c5a8591d41ec7baf365264562240d5be"; } + { locale = "gd"; arch = "linux-x86_64"; sha256 = "40993cbe7c6a42c467868e8cd60eb67aa8d0b7357617f5babb415cc3ffd608e9"; } + { locale = "gl"; arch = "linux-i686"; sha256 = "23c4a4a47fe7150c70f8489921b756ada22e45140e01d6817f9145de32b4d35a"; } + { locale = "gl"; arch = "linux-x86_64"; sha256 = "d3fa81ba627c6e75fea42715d8dc4c5fdbed841429a0493081f915623ad603c4"; } + { locale = "gn"; arch = "linux-i686"; sha256 = "ebbf6f05f6b61a6ecb7f5c91ca4a6b87824edced41777fe35293b5ba6836a6cf"; } + { locale = "gn"; arch = "linux-x86_64"; sha256 = "d9917c8dc1d236e569d040db1512872ce145af934ee3fad7a7e2d5a9a845a856"; } + { locale = "gu-IN"; arch = "linux-i686"; sha256 = "598f3feaa412fa85619fd60ca1a48b2a691867d8aab92b39d98d12a3ebee2253"; } + { locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "f238f84dcc0f41f99073aa4c7bff1fd2dc5f896fb1b9cae00d9d21d199383879"; } + { locale = "he"; arch = "linux-i686"; sha256 = "22aacab2263a799f5503e6d73d76c6c7e8c3f2d39d9a8945d7e062e4078f4eea"; } + { locale = "he"; arch = "linux-x86_64"; sha256 = "6288418353ab0d51ba8b7a02a302e68dc3b26e5565cb14e50316e5300cb2f696"; } + { locale = "hi-IN"; arch = "linux-i686"; sha256 = "2ee18b7653f9edf926ff7927d24c04e9aba503174b4fa773a136fd3e29a256db"; } + { locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "3f18f821cbc4781a9e6d84e54e0a70e2cdd18bcb61342922b1402a3eabb75839"; } + { locale = "hr"; arch = "linux-i686"; sha256 = "c8633fb837adf08b257d19b88e9e5d35c2b24a658da7088a3902b4b9b833e7dd"; } + { locale = "hr"; arch = "linux-x86_64"; sha256 = "714fcde1e42db06a9083946bb929a182891aadfd249bf5b63aa7f6ca744bcf0b"; } + { locale = "hsb"; arch = "linux-i686"; sha256 = "7f86d45ceb3f551b5b371047bbcccf9a75fe2f99df632b42d838419ee0c6d757"; } + { locale = "hsb"; arch = "linux-x86_64"; sha256 = "add010dbfe8a842c16a8dceb019675e04acb7b8de6d952d4b4faa2a368d37f1d"; } + { locale = "hu"; arch = "linux-i686"; sha256 = "cc994b9cfb60517062ce3570839b5e76def0a385b4e8793156d6a4719dd707b3"; } + { locale = "hu"; arch = "linux-x86_64"; sha256 = "a36d229286d5422dd15d5e0f33e7fb99f6ddff3db4efabc3be244fa26c7bd24d"; } + { locale = "hy-AM"; arch = "linux-i686"; sha256 = "508a5d85df7508c453a991e4a9679b31270da70983607cd9d127a8e432728a3c"; } + { locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "e21375aa7d5351a841ba05c8b0d921af1f334d37f714ed3c4303e90b5d4e34aa"; } + { locale = "id"; arch = "linux-i686"; sha256 = "58d7e3a898f5ae05bc7b0e99e83d8a39a7f5f935a086081af4a9d7ea98b927a3"; } + { locale = "id"; arch = "linux-x86_64"; sha256 = "c4b803b519780a0fd5a43fd23a3aef81d4197e860ad8e2908c5ddf2b76f538c3"; } + { locale = "is"; arch = "linux-i686"; sha256 = "a9fd41eb35ed7430915d9b09807555af1d8d81f5520deb4aae58e38edf3ca11a"; } + { locale = "is"; arch = "linux-x86_64"; sha256 = "74c6a4183f32043fcb6a3b52c71e8a23b36fc1381caff0dae8366cd80af391dc"; } + { locale = "it"; arch = "linux-i686"; sha256 = "b6d615f519b7664acb335a305d99bd6c6eb7db98eb29c7957b073fbeb468d63a"; } + { locale = "it"; arch = "linux-x86_64"; sha256 = "f65370cd57b1a885169447cc0b879dde715c58309db49f6c268db5113952a05f"; } + { locale = "ja"; arch = "linux-i686"; sha256 = "1b3766bd19c8841922cbe1e3a8144d9efe5ab4a3c9b2fe216811caff54607704"; } + { locale = "ja"; arch = "linux-x86_64"; sha256 = "68e14f495852e023534bce66626287621a7155464fd56bbe41b38b5bc7305341"; } + { locale = "kk"; arch = "linux-i686"; sha256 = "4a72592497d392d4f749733eeaa7964a95fcc3de007127ec198ac86f6a266382"; } + { locale = "kk"; arch = "linux-x86_64"; sha256 = "9d6333875c11425a467a32ebf649b7577462920592155ed54ec6130ce76073a0"; } + { locale = "km"; arch = "linux-i686"; sha256 = "e380caedd69287569274115aa4cee7b8d2187050d9f65a10ae36c9d48fd1d007"; } + { locale = "km"; arch = "linux-x86_64"; sha256 = "95794fa36975d732987012d406770710985c270c8f4e4c99407711d16279d941"; } + { locale = "kn"; arch = "linux-i686"; sha256 = "b0cd3f0c6da99b3e86ec4b08b962abb0d823329460e87761733db5d7987f1e5d"; } + { locale = "kn"; arch = "linux-x86_64"; sha256 = "47399283f7b395c5079b592c83a93487a17a2cab0e68d35c54aa6e5e647d2c66"; } + { locale = "ko"; arch = "linux-i686"; sha256 = "5f9b1c691d9c9a99dd280e3fff8df813aeeefe42ce5273ddf2848352bfde44f6"; } + { locale = "ko"; arch = "linux-x86_64"; sha256 = "360c82f93b7f529173f9259a4f475595d0ec4dc4b63b6ac46785bccd549e3dbd"; } + { locale = "lij"; arch = "linux-i686"; sha256 = "29f2d93c1f6695c22d4e766ee049bbe4f6fb034e22c12be407062db3deb0805c"; } + { locale = "lij"; arch = "linux-x86_64"; sha256 = "c47c6e13b44b8560487f39c6f668fc03ea42bf848fcb9926cf8e0e0014218fc3"; } + { locale = "lt"; arch = "linux-i686"; sha256 = "5915cf516690de51021eeccc66cce8142fee7882efd7add7a0bfaa5b04d65dbf"; } + { locale = "lt"; arch = "linux-x86_64"; sha256 = "04673232b52aae6b34b87b6a2638ad653a4e81430d21998919a56dbde10febd7"; } + { locale = "lv"; arch = "linux-i686"; sha256 = "6648a4a4b8be23ed6fb64efc0bb3e49c1807b5408d2df19d45a3b098b9bb605d"; } + { locale = "lv"; arch = "linux-x86_64"; sha256 = "769020e490b9b74608cbbb319254694f7a32c62b6397ff8c563fa27a33cbe16b"; } + { locale = "mai"; arch = "linux-i686"; sha256 = "5646fac52682c1053e7b58fa0b13fcf74c8b79e344ffa3a9614fa2509ef2b38d"; } + { locale = "mai"; arch = "linux-x86_64"; sha256 = "eb5db15e6584a5272d9c496d29ce4f500811ed4b49277b93ae432498aef80d0f"; } + { locale = "mk"; arch = "linux-i686"; sha256 = "8430792262871155bf07b652c5f8ae5408b0bb16fd9e6548010e86b2a1d604d0"; } + { locale = "mk"; arch = "linux-x86_64"; sha256 = "273812699d47c99f20d18fdcf547cd9c5386a4d8049dcb93e34c0303a9aae7a5"; } + { locale = "ml"; arch = "linux-i686"; sha256 = "bc3b9905214fde7623aa5567f6a6792b2c5cb32fde1172ad60b108a42a372c24"; } + { locale = "ml"; arch = "linux-x86_64"; sha256 = "0e21ef50fd3ecb301d0a62baf3e084723c0cc05c3a9569ce08ccf2698f40a526"; } + { locale = "mr"; arch = "linux-i686"; sha256 = "fb83926aa70735befc1c8c79c950a9dbb01344dfceff82aefa7640e79f659139"; } + { locale = "mr"; arch = "linux-x86_64"; sha256 = "ae6622f7cb9261985d8cc0bf06af9a51d7d8b391386aded9bf07576be60c5f12"; } + { locale = "ms"; arch = "linux-i686"; sha256 = "16b35b29882238095475719a4f8cecd5e49a8e50bfe5c2b943c604274cfb02ae"; } + { locale = "ms"; arch = "linux-x86_64"; sha256 = "04e390cdeabc686eee093ae2280628375b706c2b09b9aa29e788bc1663b21ad0"; } + { locale = "nb-NO"; arch = "linux-i686"; sha256 = "b3b931e5a38fc71aee2dc2290adb600b0d8e56923c30c748bacbbf527e2e8960"; } + { locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "4d3c6f639e8c6579c525c6e8c5bd036b3c6abe0e2d14ee0596ac207b3f291f84"; } + { locale = "nl"; arch = "linux-i686"; sha256 = "40cc8d419bc536e2826766dbd9b3e58bb98730ed38926387bcadcc5b30c8b742"; } + { locale = "nl"; arch = "linux-x86_64"; sha256 = "4595b76ab812dd9ed16405d0863225c0d6f40dd70a96baee2632a5f8e4d2aab5"; } + { locale = "nn-NO"; arch = "linux-i686"; sha256 = "8cad1d60633dfb059c4e29b3a226397822ed10938909dd783b9b8c7bac0e8866"; } + { locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "d0ac3c7ff26c4747222f2d7a1d5b4b69a861dee261ad338ed88ab8b35cf44ffc"; } + { locale = "or"; arch = "linux-i686"; sha256 = "b05473429fb2b844d96ee88108891e5cdc13c56526017ff6db1909ff60dbe1b5"; } + { locale = "or"; arch = "linux-x86_64"; sha256 = "406816e487831cd9a928fd9c140290f53d4a9575024adf71e1565d24e573abdc"; } + { locale = "pa-IN"; arch = "linux-i686"; sha256 = "beb60cd44b31c3c1ebfae25efb17d78d001f0009bb5a8304e319791ae535daa0"; } + { locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "1abab6f91bd2ff22cd6d9075bcb83ddf6a190291997e5d379eff53fc10fd8c5e"; } + { locale = "pl"; arch = "linux-i686"; sha256 = "65ceeb5cfeaa7d2c246ba3d152ea1fb892a7d50eafd46da2f41d7ec0a4efa759"; } + { locale = "pl"; arch = "linux-x86_64"; sha256 = "d3565007522b0e3a4de15b913c8f1c9421d1d9614fa4f2d6657a4af730f26c87"; } + { locale = "pt-BR"; arch = "linux-i686"; sha256 = "7a0593b15eac64c1261e413f4a22ca2cbb5f489530ae72a637de9bc0de99f2be"; } + { locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "243c12ea35617336d307d8040d1bee1a1827f3c8815e78185e5d5f8c2b58a5d6"; } + { locale = "pt-PT"; arch = "linux-i686"; sha256 = "ed06f6d30204728089609114c5d08a8b2346ca024d6e5743179d0f2f0da753bf"; } + { locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "65cf06f13ce3930b4c6b645e0fa442003d41a3ff99d4ff6ad06039c806bf9815"; } + { locale = "rm"; arch = "linux-i686"; sha256 = "5b230c43a6b56c4052e054d117c2c80450b36d52b166ac3a9c9e3d13b336e44b"; } + { locale = "rm"; arch = "linux-x86_64"; sha256 = "341495282263ce7293350c3623d25a6fc7952429bbc36316687be402831c4376"; } + { locale = "ro"; arch = "linux-i686"; sha256 = "12940db350559cc1ef5dd148f2fd34cb4f445fbd1928d0d8dac6e57b0186e08e"; } + { locale = "ro"; arch = "linux-x86_64"; sha256 = "a53c18fcf239dce6a49a44bbb42a210b6161f5d21e64e9e33096e36b7a187bf2"; } + { locale = "ru"; arch = "linux-i686"; sha256 = "823ecb8bb5b772e896b51bf23ac1fa271b02c1abba9fb4c679c687586047db0b"; } + { locale = "ru"; arch = "linux-x86_64"; sha256 = "fd4e34dd08c5f712c68826710496ac4eab262a4356e06a02718b27dd8c65d35b"; } + { locale = "si"; arch = "linux-i686"; sha256 = "6cc4f9828e366d59a86922292ca8878ef4bb6cee9ee5316b8733d0704dc6f390"; } + { locale = "si"; arch = "linux-x86_64"; sha256 = "ed3c28af72df9960b08071d181b1d097d0326a0cd6eaae673866083f87db18f5"; } + { locale = "sk"; arch = "linux-i686"; sha256 = "cfa4b71bb7acdaa689a28f8aa58f7f9375c7d7e4301cce0aea0eccc60d897d2f"; } + { locale = "sk"; arch = "linux-x86_64"; sha256 = "736ff619f9d9848d202fe9eaa56b6a29e37e47589282adf7d97f8d7103edecfe"; } + { locale = "sl"; arch = "linux-i686"; sha256 = "c8af219be7f7cc7f878425b446b1c02838f651e64a0fcbfae4ec818326927097"; } + { locale = "sl"; arch = "linux-x86_64"; sha256 = "d3309efc0b469e9d24e7e01216b52b31ad854653f3904c76fd136d615d75609b"; } + { locale = "son"; arch = "linux-i686"; sha256 = "fdc1e500f8499b648cf0fd3d99601cfcd0f7d89ae09d800520793751a6b32fee"; } + { locale = "son"; arch = "linux-x86_64"; sha256 = "e1f7038aa136492e3d296b9ff50a3f815f4b587944783ea0ea607717788cb48b"; } + { locale = "sq"; arch = "linux-i686"; sha256 = "c6881862ff53402d427d998c59a741c4abd9b2713c1fbbc5315b140d02445507"; } + { locale = "sq"; arch = "linux-x86_64"; sha256 = "2a83117de89e2b9036c0f7fde6617d9f55fef4955432cd566692e7a2829b1128"; } + { locale = "sr"; arch = "linux-i686"; sha256 = "f214aa32eef11535a73449d7f2626c90b1ce78e469d96c8cc6cd53979582197b"; } + { locale = "sr"; arch = "linux-x86_64"; sha256 = "9931d18c18a785569aade6fd233d3c34910ece758f3355b694b553ce6c5dae7a"; } + { locale = "sv-SE"; arch = "linux-i686"; sha256 = "cd5695110c90744a1b750d34c7294f1109b5c7829025eb28101b6ead5bbbcb3d"; } + { locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "f52fe8f60420171385638a9de46b2b11c03b13239a17ef9fb4f7305774bab664"; } + { locale = "ta"; arch = "linux-i686"; sha256 = "8910a680bc6a6e58433686a020916b072e0d5d95e896cb7fa5a212c00ee20b93"; } + { locale = "ta"; arch = "linux-x86_64"; sha256 = "ae727422e4b7cb2de2b098f6b4adedb2dc788b57eda7ec2ee7ac2d60b645ee64"; } + { locale = "te"; arch = "linux-i686"; sha256 = "0088dcb813864a4e231afd10d4aefca656131a3589b316721e2d87cb29a78dbf"; } + { locale = "te"; arch = "linux-x86_64"; sha256 = "6ef6aa557e691324072d201ad7876dd4d2417dfaaab08d3bfa4620c4626d1380"; } + { locale = "th"; arch = "linux-i686"; sha256 = "da72450d756950635c0b2d95285b5d998aeddd60b43d9ca98ac4b1b707289a96"; } + { locale = "th"; arch = "linux-x86_64"; sha256 = "89ac8220a7be503ecae8dd5a241df4654b93adfac6f431f08b83bb5f7f63de7f"; } + { locale = "tr"; arch = "linux-i686"; sha256 = "64b3e853efe96d75282e0a9ca78db876c3f03b609be0acb551d1d6a7b50e116b"; } + { locale = "tr"; arch = "linux-x86_64"; sha256 = "fe01dcbfe855e661c79ec63c80098d18c1a051c85fc3fb27ac3df8b9c6d1df92"; } + { locale = "uk"; arch = "linux-i686"; sha256 = "1052bb8de8acd200dfed598f5afc1c87a55772b89b2f2ec59b710af1d1bfea90"; } + { locale = "uk"; arch = "linux-x86_64"; sha256 = "986d01b61e36188f1293ee7ab1198f2583605469174e2dd9ead8eec241480cec"; } + { locale = "uz"; arch = "linux-i686"; sha256 = "b114d4696cf20320ec71c7ff92ac2d6477784e4f0c9f15a54701473a469e4667"; } + { locale = "uz"; arch = "linux-x86_64"; sha256 = "19fdc20d1b6a5b556856ad4d43d05cd7ae4bbd0207d326c9f2b0a4a0e3f9425b"; } + { locale = "vi"; arch = "linux-i686"; sha256 = "ec48f6eb7b3fba76d07a4ff4192fe28b4faeaf7dfa2317453f1266dd4cb5e66f"; } + { locale = "vi"; arch = "linux-x86_64"; sha256 = "89a9c826522dece360abc207260b6a71955d1c86f8f0b783e3013d4c7d5edfdb"; } + { locale = "xh"; arch = "linux-i686"; sha256 = "4671201bd924bfb4e290bdd5247b5d972b2dff986db0dd21b26ee0d30f94566f"; } + { locale = "xh"; arch = "linux-x86_64"; sha256 = "f381cc509369405e7a06c78c07de3ee01f8b0cf66d3300cfb10f27cab14d34b0"; } + { locale = "zh-CN"; arch = "linux-i686"; sha256 = "abaac014c04bd29dcb5617c489d4b047522f6ede9139781b04c0a73ff20a19a4"; } + { locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "5da12cc28e6bad8739a0050410efb1ca22d46a42c33fed312acca29e89de007b"; } + { locale = "zh-TW"; arch = "linux-i686"; sha256 = "7279f9ba36dfa988ffade1f54e4f2dcced30be5fab48476d5b6d20d989204274"; } + { locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "e943d7736ec12d269512363d20d5b2a2e8c740c81a764f44f308d497fe95f0ea"; } ]; } diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix index 552c8d4d822..7493350b28f 100644 --- a/pkgs/applications/networking/browsers/firefox/default.nix +++ b/pkgs/applications/networking/browsers/firefox/default.nix @@ -18,14 +18,14 @@ assert stdenv.cc ? libc && stdenv.cc.libc != null; let -common = { pname, version, sha256 }: stdenv.mkDerivation rec { +common = { pname, version, sha512 }: stdenv.mkDerivation rec { name = "${pname}-unwrapped-${version}"; src = fetchurl { url = let ext = if lib.versionAtLeast version "41.0" then "xz" else "bz2"; in "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.${ext}"; - inherit sha256; + inherit sha512; }; buildInputs = @@ -130,14 +130,14 @@ in { firefox-unwrapped = common { pname = "firefox"; - version = "45.0.1"; - sha256 = "1j6raz51zcj2hxk0spk5zq8xzxi5nlxxm60dpnb7cs6dv334m0fi"; + version = "45.0.2"; + sha512 = "8c0b7afb41a1a405fe499299d1a8b1138dac52b9ad67bfc8761b70a26f330581c2aa1d76d67075896ec3a0c3f5367b8b58365ebc8b3a01f801fa37071b3de526"; }; firefox-esr-unwrapped = common { pname = "firefox-esr"; - version = "45.0.1esr"; - sha256 = "0rkk3cr3r7v5xzbcqhyx8b633v4a16ika0wk46p0ichh9n5mci0s"; + version = "45.0.2esr"; + sha512 = "a1e9e9371ee47181b01252d60166c405a7835063dffb4928dfb8abb9f151edd8db1dd2b59f35d7898f1660a0fcd8e41f91a3e799c25b6dd43b6ab056bc5ad6bf"; }; } diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix index 51511621dce..85012f8f709 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, which, pkgconfig, file, glib, gtk2, gtk3, curl}: +{stdenv, fetchurl, which, pkgconfig, file, glib, gtk2, gtk3, curl, libXt}: let srcData = # Generated upstream information rec { @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { export configureFlags="$configureFlags --target-cpu=$(uname -m)" ''; - buildInputs = [which pkgconfig file glib gtk2 gtk3 curl]; + buildInputs = [which pkgconfig file glib gtk2 gtk3 curl libXt]; preferLocalBuild = true; diff --git a/pkgs/applications/networking/browsers/vivaldi/default.nix b/pkgs/applications/networking/browsers/vivaldi/default.nix new file mode 100644 index 00000000000..651f513356b --- /dev/null +++ b/pkgs/applications/networking/browsers/vivaldi/default.nix @@ -0,0 +1,77 @@ +{ stdenv, fetchurl, zlib, libX11, libXext, libSM, libICE +, libXfixes, libXt, libXi, libXcursor, libXScrnSaver, libXcomposite, libXdamage, libXtst, libXrandr +, alsaLib, dbus_libs, cups, libexif, ffmpeg, libudev +, freetype, fontconfig, libXft, libXrender, libxcb, expat, libXau, libXdmcp +, libuuid, xz +, gstreamer, gst_plugins_base, libxml2 +, glib, gtk, pango, gdk_pixbuf, cairo, atk, gnome3 +, nss, nspr +, patchelf +}: + +let + archUrl = name: arch: "https://vivaldi.com/download/stable/${name}_${arch}.deb"; +in +stdenv.mkDerivation rec { + version = "1.0"; + debversion = "stable_1.0.435.40-1"; + product = "vivaldi"; + name = "${product}-${version}"; + + src = if stdenv.system == "x86_64-linux" + then fetchurl { + url = archUrl "vivaldi-${debversion}" "amd64"; + sha256 = "12c051a40258a95f9594eed2f73fa5f591482ac2a41d5cf643811b1ea2a1efbf"; + } + else if stdenv.system == "i686-linux" + then fetchurl { + url = archUrl "vivaldi-${debversion}" "i386"; + sha256 = "6e0b84fba38211bab9a71bc10e97398fca77c0acd82791923c1d432b20846f0f"; + } + else throw "Vivaldi is not supported on ${stdenv.system} (only i686-linux and x86_64 linux are supported)"; + + unpackPhase = '' + ar vx ${src} + tar -xvf data.tar.xz + ''; + + buildInputs = + [ stdenv.cc.cc stdenv.cc.libc zlib libX11 libXt libXext libSM libICE + libXi libXft libXcursor libXfixes libXScrnSaver libXcomposite libXdamage libXtst libXrandr + atk alsaLib dbus_libs cups gtk gdk_pixbuf libexif ffmpeg libudev + freetype fontconfig libXrender libuuid expat glib nss nspr + gstreamer libxml2 gst_plugins_base pango cairo gnome3.gconf + patchelf + ]; + + libPath = stdenv.lib.makeLibraryPath buildInputs + + stdenv.lib.optionalString (stdenv.system == "x86_64-linux") + (":" + stdenv.lib.makeSearchPath "lib64" buildInputs); + + buildPhase = '' + echo "Patching Vivaldi binaries" + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${libPath}" \ + opt/vivaldi/vivaldi-bin + echo "Finished patching Vivaldi binaries" + ''; + + dontPatchELF = true; + dontStrip = true; + + installPhase = '' + mkdir -p "$out" + cp -r opt "$out" + mkdir "$out/bin" + ln -s "$out/opt/vivaldi/vivaldi" "$out/bin/vivaldi" + ''; + + meta = with stdenv.lib; { + description = "A Browser for our Friends, powerful and personal"; + homepage = "https://vivaldi.com"; + license = licenses.unfree; + maintainers = with maintainers; [ otwieracz ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/networking/dropbox-cli/default.nix b/pkgs/applications/networking/dropbox-cli/default.nix index ab79159ea6e..892d8fa3300 100644 --- a/pkgs/applications/networking/dropbox-cli/default.nix +++ b/pkgs/applications/networking/dropbox-cli/default.nix @@ -16,7 +16,8 @@ stdenv.mkDerivation { phases = "unpackPhase installPhase"; installPhase = '' - mkdir -p "$out/bin/" + mkdir -p "$out/bin/" "$out/share/applications" + cp data/dropbox.desktop "$out/share/applications" substitute "dropbox.in" "$out/bin/dropbox" \ --replace '@PACKAGE_VERSION@' ${version} \ --replace '@DESKTOP_FILE_DIR@' "$out/share/applications" \ @@ -24,7 +25,6 @@ stdenv.mkDerivation { --replace '@IMAGEDATA64@' '"too-lazy-to-fix"' sed -i 's:db_path = .*:db_path = "${dropboxd}":' $out/bin/dropbox chmod +x "$out/bin/"* - mv $out/bin/dropbox $out/bin/dropbox-cli patchShebangs "$out/bin" ''; diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index a180e2a01ed..e20db1892bb 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -20,11 +20,11 @@ let # NOTE: When updating, please also update in current stable, as older versions stop working - version = "3.14.7"; + version = "3.18.1"; sha256 = { - "x86_64-linux" = "1pwmghpr0kyca2biysyk90kk9k6ffv4i95vs5rq96vc0zbckws6n"; - "i686-linux" = "08yqrxh09cfd80kbiq1f2sirx9s85acij4khpklvvwrnf2x1i1zm"; + "x86_64-linux" = "1qdahr8xzk3zrrv89335l3aa2gfgjn1ymfixj9zgipv34grkjghm"; + "i686-linux" = "015bjkr2dwyac410i398qm1v60rqln539wcj5f25q776haycbcji"; }."${stdenv.system}" or (throw "system ${stdenv.system} not supported"); arch = diff --git a/pkgs/applications/networking/instant-messengers/baresip/default.nix b/pkgs/applications/networking/instant-messengers/baresip/default.nix index 2935979ebb9..782c801356e 100644 --- a/pkgs/applications/networking/instant-messengers/baresip/default.nix +++ b/pkgs/applications/networking/instant-messengers/baresip/default.nix @@ -4,11 +4,11 @@ , gsm, speex, portaudio, spandsp, libuuid }: stdenv.mkDerivation rec { - version = "0.4.17"; + version = "0.4.18"; name = "baresip-${version}"; src=fetchurl { url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz"; - sha256 = "106nagdyayyxj3q68bs3fsps5wnwzjh82vcmy98fp42j33q6yzny"; + sha256 = "1qgmw0261y89zka9dgqzvirfk3bg8p5b929vqm1418859mw9i87a"; }; buildInputs = [zlib openssl libre librem pkgconfig cairo mpg123 gstreamer gst_ffmpeg gst_plugins_base gst_plugins_bad gst_plugins_good diff --git a/pkgs/applications/networking/instant-messengers/discord/default.nix b/pkgs/applications/networking/instant-messengers/discord/default.nix index a072c4a5d76..86b21f90ad9 100644 --- a/pkgs/applications/networking/instant-messengers/discord/default.nix +++ b/pkgs/applications/networking/instant-messengers/discord/default.nix @@ -2,7 +2,7 @@ , alsaLib, atk, cairo, cups, dbus, expat, fontconfig, freetype, gdk_pixbuf , glib, gnome, gtk, libnotify, libX11, libXcomposite, libXcursor, libXdamage , libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, pango -, udev }: +, libudev }: let version = "0.0.1"; in @@ -19,7 +19,7 @@ stdenv.mkDerivation { stdenv.cc.cc alsaLib atk cairo cups dbus expat fontconfig freetype gdk_pixbuf glib gnome.GConf gtk libnotify libX11 libXcomposite libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender - libXtst nspr nss pango udev + libXtst nspr nss pango libudev ]; installPhase = '' @@ -35,7 +35,7 @@ stdenv.mkDerivation { ln -s $out/DiscordCanary $out/bin/ # Putting udev in the path won't work :( - ln -s ${udev}/lib/libudev.so.1 $out + ln -s ${libudev}/lib/libudev.so.1 $out ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/networking/instant-messengers/skype/default.nix b/pkgs/applications/networking/instant-messengers/skype/default.nix index 98672a29d0b..2f2dba18e49 100644 --- a/pkgs/applications/networking/instant-messengers/skype/default.nix +++ b/pkgs/applications/networking/instant-messengers/skype/default.nix @@ -56,7 +56,7 @@ stdenv.mkDerivation rec { # Fixup desktop file substituteInPlace skype.desktop --replace \ - "Icon=skype.png" "Icon=$out/libexec/skype/icons/SkypeBlue_48x48.png" + "Icon=skype.png" "Icon=$out/libexec/skype/icons/SkypeBlue_128x128.png" substituteInPlace skype.desktop --replace \ "Terminal=0" "Terminal=false" mkdir -p $out/share/applications diff --git a/pkgs/applications/networking/instant-messengers/slack/default.nix b/pkgs/applications/networking/instant-messengers/slack/default.nix index c6e550b5e8f..417eecb4ac8 100644 --- a/pkgs/applications/networking/instant-messengers/slack/default.nix +++ b/pkgs/applications/networking/instant-messengers/slack/default.nix @@ -4,7 +4,7 @@ let - version = "2.0.1"; + version = "2.0.3"; rpath = stdenv.lib.makeSearchPath "lib" [ alsaLib @@ -41,7 +41,7 @@ let if stdenv.system == "x86_64-linux" then fetchurl { url = "https://slack-ssb-updates.global.ssl.fastly.net/linux_releases/slack-desktop-${version}-amd64.deb"; - sha256 = "12d84e61ba366cc5bac105b3f9930f2dfdd64c1e5fabbb08a6877e1c98bfb9c7"; + sha256 = "0pp8n1w9kmh3pph5kc6akdswl3z2lqwryjg9d267wgj62mslr3cg"; } else throw "Slack is not supported on ${stdenv.system}"; @@ -64,16 +64,16 @@ in stdenv.mkDerivation { for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true - patchelf --set-rpath ${rpath}:$out/share/slack $file || true + patchelf --set-rpath ${rpath}:$out/lib/slack $file || true done # Fix the symlink rm $out/bin/slack - ln -s $out/share/slack/slack $out/bin/slack + ln -s $out/lib/slack/slack $out/bin/slack # Fix the desktop link substituteInPlace $out/share/applications/slack.desktop \ - --replace /usr/share/slack/slack $out/share/slack/slack + --replace /usr/lib/slack/slack $out/lib/slack/slack ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix index 040b4893032..450c15bb65e 100644 --- a/pkgs/applications/office/libreoffice/default.nix +++ b/pkgs/applications/office/libreoffice/default.nix @@ -12,7 +12,7 @@ , libatomic_ops, graphite2, harfbuzz, libodfgen , librevenge, libe-book, libmwaw, glm, glew, gst_all_1 , gdb, commonsLogging, librdf_rasqal, makeWrapper, gsettings_desktop_schemas -, defaultIconTheme, glib +, defaultIconTheme, glib, ncurses , langs ? [ "en-US" "en-GB" "ca" "ru" "eo" "fr" "nl" "de" "sl" "pl" ] , withHelp ? true , kdeIntegration ? false @@ -23,8 +23,8 @@ let langsSpaces = lib.concatStringsSep " " langs; major = "5"; minor = "1"; - patch = "0"; - tweak = "3"; + patch = "2"; + tweak = "2"; subdir = "${major}.${minor}.${patch}"; version = "${subdir}${if tweak == "" then "" else "."}${tweak}"; @@ -50,14 +50,14 @@ let translations = fetchSrc { name = "translations"; - sha256 = "1qqffq7646yh7rskzd1wvy0zgkdnkpdbyhvsny424lxqjglyw3px"; + sha256 = "1w2m4hfrxb706p8bjfgklqv0j5hnivbvif3vav7sbngp5ms0vgvz"; }; # TODO: dictionaries help = fetchSrc { name = "help"; - sha256 = "0ixlq6yzn6z8hsih24l934sa05vvz2vk3p03nalpqqrhm7vdzsf2"; + sha256 = "0lr90z5fdg157lcid5w4p0zxi72c4xziiw51kh38kbbqrbb9ykfw"; }; }; @@ -66,7 +66,7 @@ in stdenv.mkDerivation rec { src = fetchurl { url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz"; - sha256 = "1csphxpbpc7bxrwnl5i9nvm3bh3p0j7r3h9ivsdl7cys13q066xl"; + sha256 = "108p8jg22lg3g9wypqv5d71j4vkcpmg2x2w9l2v4z9h10agdrv2l"; }; # Openoffice will open libcups dynamically, so we link it directly @@ -240,7 +240,7 @@ in stdenv.mkDerivation rec { python3 sablotron sane-backends tcsh unzip vigra which zip zlib mdds bluez5 glibc libcmis libwps libabw libxshmfence libatomic_ops graphite2 harfbuzz - librevenge libe-book libmwaw glm glew + librevenge libe-book libmwaw glm glew ncurses libodfgen CoinMP librdf_rasqal defaultIconTheme makeWrapper ] ++ lib.optional kdeIntegration kde4.kdelibs; diff --git a/pkgs/applications/office/libreoffice/libreoffice-srcs.nix b/pkgs/applications/office/libreoffice/libreoffice-srcs.nix index 21a16a5fc69..7af49d51a85 100644 --- a/pkgs/applications/office/libreoffice/libreoffice-srcs.nix +++ b/pkgs/applications/office/libreoffice/libreoffice-srcs.nix @@ -190,8 +190,8 @@ brief = false; } { - name = "graphite2-minimal-1.3.4.tgz"; - md5 = "5c0c9ac0996fbb4a0e17780ff5441959"; + name = "graphite-minimal-1.3.6.tgz"; + md5 = "17df8301bcc459e83f8a8f3aca6183b2"; brief = false; } { @@ -285,8 +285,8 @@ brief = true; } { - name = "language-subtag-registry-2015-08-04.tar.bz2"; - md5 = "bf5986dbfa1c9a0f26cf1b00ed369484"; + name = "language-subtag-registry-2016-02-10.tar.bz2"; + md5 = "d1e7c55a0383f7d720d3ead0b6117284"; brief = true; } { @@ -376,13 +376,13 @@ brief = false; } { - name = "neon-0.29.5.tar.gz"; - md5 = "ff369e69ef0f0143beb5626164e87ae2"; + name = "neon-0.30.1.tar.gz"; + md5 = "231adebe5c2f78fded3e3df6e958878e"; brief = false; } { - name = "nss-3.19.4-with-nspr-4.10.10.tar.gz"; - md5 = "478e0e90ebc4a90159549e77021021fd"; + name = "nss-3.22.2-with-nspr-4.12.tar.gz"; + md5 = "6b254cf2f8cb4b27a3f0b8b7b9966ea7"; brief = false; } { @@ -401,8 +401,8 @@ brief = false; } { - name = "openssl-1.0.2a.tar.gz"; - md5 = "a06c547dac9044161a477211049f60ef"; + name = "openssl-1.0.2g.tar.gz"; + md5 = "f3c710c045cdee5fd114feb69feba7aa"; brief = true; } { diff --git a/pkgs/applications/science/biology/samtools/default.nix b/pkgs/applications/science/biology/samtools/default.nix new file mode 100644 index 00000000000..7c85513bd8e --- /dev/null +++ b/pkgs/applications/science/biology/samtools/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, zlib, ncurses }: + +stdenv.mkDerivation rec { + name = "samtools-${version}"; + version = "1.3"; + + src = fetchurl { + url = "https://github.com/samtools/samtools/releases/download/${version}/${name}.tar.bz2"; + sha256 = "03mnf0mhbfwhqlqfslrhfnw68s3g0fs1as354i9a584mqw1l1smy"; + }; + + buildInputs = [ zlib ncurses ]; + + meta = with stdenv.lib; { + description = "Tools (written in C using htslib) for manipulating next-generation sequencing data"; + license = licenses.mit; + homepage = http://www.htslib.org/; + }; +} diff --git a/pkgs/applications/science/logic/coq/8.5.nix b/pkgs/applications/science/logic/coq/8.5.nix index 104fb02fc45..1485626125d 100644 --- a/pkgs/applications/science/logic/coq/8.5.nix +++ b/pkgs/applications/science/logic/coq/8.5.nix @@ -6,7 +6,7 @@ {stdenv, fetchurl, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}: let - version = "8.5"; + version = "8.5pl1"; coq-version = "8.5"; buildIde = lablgtk != null; ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else ""; @@ -23,8 +23,8 @@ stdenv.mkDerivation { inherit ocaml camlp5; src = fetchurl { - url = https://coq.inria.fr/distrib/V8.5/files/coq-8.5.tar.gz; - sha256 = "0gdfm6k5q1f8sz1xr9ijdkkvwqsb7v8prj21gmwv0z0yp6w2zac9"; + url = "http://coq.inria.fr/distrib/V${version}/files/coq-${version}.tar.gz"; + sha256 = "1w2xvm6w16khfn63bp95s25hnkn2ny3w0yqg3lq63gp11aqpbyjb"; }; buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ]; diff --git a/pkgs/applications/science/logic/mcrl2/default.nix b/pkgs/applications/science/logic/mcrl2/default.nix new file mode 100644 index 00000000000..c8493b59469 --- /dev/null +++ b/pkgs/applications/science/logic/mcrl2/default.nix @@ -0,0 +1,31 @@ +{stdenv, fetchurl, xlibs, cmake, subversion, mesa, qt5, boost, + python27, python27Packages}: + +stdenv.mkDerivation rec { + version = "201409.1"; + build_nr = "13892"; + name = "mcrl2-${version}"; + + src = fetchurl { + url = "http://www.mcrl2.org/download/devel/mcrl2-${version}.${build_nr}.tar.gz"; + sha256 = "0cknpind6rma12q93rbm638ijhy8sj8nd20wnw8l0f651wm0x036"; + }; + + buildInputs = [ xlibs.libX11 cmake subversion mesa qt5.qtbase boost + python27 python27Packages.pyyaml python27Packages.psutil ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A toolset for model-checking concurrent systems and protocols"; + longDescription = '' + A formal specification language with an associated toolset, + that can be used for modelling, validation and verification of + concurrent systems and protocols + ''; + homepage = http://www.mcrl2.org/; + license = licenses.boost; + maintainers = with maintainers; [ moretea ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/version-management/tortoisehg/default.nix b/pkgs/applications/version-management/tortoisehg/default.nix index ec20122d0ce..60e71351208 100644 --- a/pkgs/applications/version-management/tortoisehg/default.nix +++ b/pkgs/applications/version-management/tortoisehg/default.nix @@ -1,25 +1,24 @@ -{ pkgs, lib, mercurial, pyPackages ? pkgs.python27Packages }: +{lib, fetchurl, mercurial, pythonPackages}: -pkgs.buildPythonApplication rec { +pythonPackages.buildPythonApplication rec { name = "tortoisehg-${version}"; - version = "3.6"; + version = "3.7.1"; namePrefix = ""; - src = pkgs.fetchurl { + src = fetchurl { url = "https://bitbucket.org/tortoisehg/targz/downloads/${name}.tar.gz"; - sha256 = "ec43d13f029bb23a12129d2a2c3b3b4daf3d8121cbb5c9c23e4872f7b0b75ad8"; + sha256 = "1ycf8knwk1rs99s5caq611sk4c4nzwyzq8g35hw5kwj15b6dl4k6"; }; - pythonPath = [ pkgs.pyqt4 mercurial ] - ++ (with pyPackages; [qscintilla iniparse]); + pythonPath = with pythonPackages; [ pyqt4 mercurial qscintilla iniparse ]; - propagatedBuildInputs = with pyPackages; [ qscintilla iniparse ]; + propagatedBuildInputs = with pythonPackages; [ qscintilla iniparse ]; doCheck = false; postUnpack = '' substituteInPlace $sourceRoot/setup.py \ - --replace "/usr/share/" "$out/share/" + --replace "sharedir = os.path.join(installcmd.install_data[rootlen:], 'share')" "sharedir = '$out/share/'" ''; postInstall = '' diff --git a/pkgs/applications/video/avidemux/default.nix b/pkgs/applications/video/avidemux/default.nix index 177f3d1b20c..96017a7ba19 100644 --- a/pkgs/applications/video/avidemux/default.nix +++ b/pkgs/applications/video/avidemux/default.nix @@ -1,7 +1,9 @@ { stdenv, lib, fetchurl, cmake, pkgconfig, lndir -, zlib, gettext, libvdpau, libva, libXv, sqlite, x265 -, yasm, fribidi, gtk3, qt4 +, zlib, gettext, libvdpau, libva, libXv, sqlite +, yasm, freetype, fontconfig, fribidi, gtk3, qt4 +, withX265 ? true, x265 , withX264 ? true, x264 +, withXvid ? true, xvidcore , withLAME ? true, lame , withFAAC ? false, faac , withVorbis ? true, libvorbis @@ -11,8 +13,7 @@ , withVPX ? true, libvpx }: -stdenv.mkDerivation rec { - name = "avidemux-${version}"; +let version = "2.6.12"; src = fetchurl { @@ -20,96 +21,108 @@ stdenv.mkDerivation rec { sha256 = "0nz52yih8sff53inndkh2dba759xjzsh4b8xjww419lcpk0qp6kn"; }; - nativeBuildInputs = [ cmake pkgconfig yasm lndir ]; - buildInputs = [ zlib gettext libvdpau libva libXv sqlite x265 fribidi gtk3 qt4 ] - ++ lib.optional withX264 x264 - ++ lib.optional withLAME lame - ++ lib.optional withFAAC faac - ++ lib.optional withVorbis libvorbis - ++ lib.optional withPulse libpulseaudio - ++ lib.optional withFAAD faad2 - ++ lib.optional withOpus libopus - ++ lib.optional withVPX libvpx - ; + common = { + inherit version src; - enableParallelBuilding = false; + patches = [ ./dynamic_install_dir.patch ]; - outputs = [ "out" "cli" "gtk" "qt4" ]; + enableParallelBuilding = false; - patches = [ ./dynamic_install_dir.patch ]; + nativeBuildInputs = [ cmake pkgconfig yasm ]; + buildInputs = [ zlib gettext libvdpau libva libXv sqlite fribidi fontconfig freetype ] + ++ lib.optional withX264 x264 + ++ lib.optional withX265 x265 + ++ lib.optional withXvid xvidcore + ++ lib.optional withLAME lame + ++ lib.optional withFAAC faac + ++ lib.optional withVorbis libvorbis + ++ lib.optional withPulse libpulseaudio + ++ lib.optional withFAAD faad2 + ++ lib.optional withOpus libopus + ++ lib.optional withVPX libvpx + ; - buildCommand = '' - unpackPhase - cd "$sourceRoot" - patchPhase + meta = { + homepage = http://fixounet.free.fr/avidemux/; + description = "Free video editor designed for simple video editing tasks"; + maintainers = with stdenv.lib.maintainers; [ viric abbradar ]; + platforms = with stdenv.lib.platforms; linux; + license = stdenv.lib.licenses.gpl2; + }; + }; - export cmakeFlags="$cmakeFlags -DAVIDEMUX_SOURCE_DIR=$(pwd)" + core = stdenv.mkDerivation (common // { + name = "avidemux-${version}"; - function buildOutput() { - ( plugin_ui="$1" - output_dir="$2" - shift 2 - export cmakeFlags="$cmakeFlags -DPLUGIN_UI=$plugin_ui -DCMAKE_INSTALL_PREFIX=$output_dir" - for i in "$@" avidemux_plugins; do - ( cd "$i" - cmakeConfigurePhase - buildPhase - installPhase - ) - done - rm -rf avidemux_plugins/build - ) - } + preConfigure = '' + cd avidemux_core + ''; + }); - function buildUi() { - plugin_ui="$1" - output_dir="$2" - shift 2 + buildPlugin = args: stdenv.mkDerivation (common // { + name = "avidemux-${args.pluginName}-${version}"; - # Hack to split builds properly - mkdir -p $output_dir - lndir $out $output_dir - buildOutput $plugin_ui $output_dir "$@" - } + buildInputs = (args.buildInputs or []) ++ common.buildInputs ++ [ lndir ]; - function fixupUi() { - output_dir="$1" - shift + cmakeFlags = [ "-DPLUGIN_UI=${args.pluginUi}" ]; - find $output_dir -lname $out\* -delete - find $output_dir -type f | while read -r f; do - rpath="$(patchelf --print-rpath $f 2>/dev/null)" || continue - new_rpath="" - IFS=':' read -ra old_rpath <<< "$rpath" - for p in "''${old_rpath[@]}"; do - new_rpath="$new_rpath:$p" - if [[ $p = $output_dir* ]]; then - new_rpath="$new_rpath:$out/''${p#$output_dir}" - fi - done - patchelf --set-rpath "$new_rpath" $f - patchelf --shrink-rpath $f + passthru.isUi = args.isUi or false; + + buildCommand = '' + unpackPhase + cd "$sourceRoot" + patchPhase + + mkdir $out + lndir ${core} $out + + export cmakeFlags="$cmakeFlags -DAVIDEMUX_SOURCE_DIR=$(pwd)" + + for i in ${toString (args.buildDirs or [])} avidemux_plugins; do + ( cd "$i" + cmakeConfigurePhase + buildPhase + installPhase + ) done - } - buildOutput COMMON $out avidemux_core - buildOutput SETTINGS $out - buildUi CLI $cli avidemux/cli - buildUi GTK $gtk avidemux/gtk - buildUi QT4 $qt4 avidemux/qt4 + fixupPhase + ''; + }); - fixupPhase +in { + avidemux_core = core; - fixupUi $cli - fixupUi $gtk - fixupUi $qt4 - ''; + avidemux_cli = buildPlugin { + pluginName = "cli"; + pluginUi = "CLI"; + isUi = true; + buildDirs = [ "avidemux/cli" ]; + }; - meta = { - homepage = http://fixounet.free.fr/avidemux/; - description = "Free video editor designed for simple video editing tasks"; - maintainers = with stdenv.lib.maintainers; [ viric abbradar ]; - platforms = with stdenv.lib.platforms; linux; - license = stdenv.lib.licenses.gpl2; + avidemux_qt4 = buildPlugin { + pluginName = "qt4"; + buildInputs = [ qt4 ]; + pluginUi = "QT4"; + isUi = true; + buildDirs = [ "avidemux/qt4" ]; + }; + + avidemux_gtk = buildPlugin { + pluginName = "gtk"; + buildInputs = [ gtk3 ]; + pluginUi = "GTK"; + isUi = true; + buildDirs = [ "avidemux/gtk" ]; + }; + + avidemux_common = buildPlugin { + pluginName = "common"; + pluginUi = "COMMON"; + }; + + avidemux_settings = buildPlugin { + pluginName = "settings"; + pluginUi = "SETTINGS"; }; } diff --git a/pkgs/applications/video/avidemux/wrapper.nix b/pkgs/applications/video/avidemux/wrapper.nix index ad41f56d39d..1d1c66cb9fe 100644 --- a/pkgs/applications/video/avidemux/wrapper.nix +++ b/pkgs/applications/video/avidemux/wrapper.nix @@ -1,15 +1,18 @@ -{ buildEnv, avidemux, makeWrapper +{ buildEnv, avidemux_unwrapped, makeWrapper # GTK version is broken upstream, see https://bugzilla.redhat.com/show_bug.cgi?id=1244340 , withUi ? "qt4" }: -let - ui = builtins.getAttr withUi avidemux; +let ui = builtins.getAttr "avidemux_${withUi}" avidemux_unwrapped; in -in buildEnv { - name = "avidemux-${withUi}-" + avidemux.version; +assert ui.isUi; - paths = [ avidemux ui ]; +buildEnv { + name = "avidemux-${withUi}-" + ui.version; + + paths = [ ui avidemux_unwrapped.avidemux_common avidemux_unwrapped.avidemux_settings ]; + + ignoreCollisions = true; buildInputs = [ makeWrapper ]; @@ -26,4 +29,6 @@ in buildEnv { wrapProgram $i --set ADM_ROOT_DIR $out done ''; + + meta = ui.meta; } diff --git a/pkgs/applications/video/bomi/default.nix b/pkgs/applications/video/bomi/default.nix index f1a999e5554..f9301781fc1 100644 --- a/pkgs/applications/video/bomi/default.nix +++ b/pkgs/applications/video/bomi/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchFromGitHub, pkgconfig, perl, python, which, makeWrapper +{ stdenv, fetchurl, fetchFromGitHub, pkgconfig, perl, python, which, makeQtWrapper , libX11, libxcb, mesa , qtbase, qtdeclarative, qtquickcontrols, qttools, qtx11extras , ffmpeg @@ -27,9 +27,6 @@ assert pulseSupport -> libpulseaudio != null; assert cddaSupport -> libcdda != null; assert youtubeSupport -> youtube-dl != null; -let qtPath = makeSearchPath "lib/qt5/qml" [ qtdeclarative qtquickcontrols ]; -in - stdenv.mkDerivation rec { name = "bomi-${version}"; version = "0.9.11"; @@ -56,6 +53,7 @@ stdenv.mkDerivation rec { libvdpau libva libbluray + qtdeclarative qtquickcontrols ] ++ optional jackSupport jack @@ -74,8 +72,7 @@ stdenv.mkDerivation rec { ''; postInstall = '' - wrapProgram $out/bin/bomi \ - --set QML2_IMPORT_PATH ${qtPath} \ + wrapQtProgram $out/bin/bomi \ ${optionalString youtubeSupport "--prefix PATH ':' '${youtube-dl}/bin'"} ''; @@ -87,7 +84,7 @@ stdenv.mkDerivation rec { ++ optional cddaSupport "--enable-cdda" ; - nativeBuildInputs = [ pkgconfig perl python which qttools makeWrapper ]; + nativeBuildInputs = [ pkgconfig perl python which qttools makeQtWrapper ]; enableParallelBuilding = true; diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix index 7fb62a5e1ac..dd5f25d3a6c 100644 --- a/pkgs/applications/video/mpv/default.nix +++ b/pkgs/applications/video/mpv/default.nix @@ -1,5 +1,6 @@ { stdenv, fetchurl, docutils, makeWrapper, perl, pkgconfig, python, which , ffmpeg, freefont_ttf, freetype, libass, libpthreadstubs, lua, lua5_sockets +, libuchardet, rubberband , x11Support ? true, libX11 ? null, libXext ? null, mesa ? null, libXxf86vm ? null , xineramaSupport ? true, libXinerama ? null , xvSupport ? true, libXv ? null @@ -59,11 +60,11 @@ in stdenv.mkDerivation rec { name = "mpv-${version}"; - version = "0.16.0"; + version = "0.17.0"; src = fetchurl { url = "https://github.com/mpv-player/mpv/archive/v${version}.tar.gz"; - sha256 = "1fiqxx85s418qynq2fp0v7cpzrz8j285hwmc4fqgn5ny1vg1jdpw"; + sha256 = "0vms3viwqcwl1mrgmf2yy4c69fvv7xpbkyrl693l6zpwynqd4b30"; }; patchPhase = '' @@ -89,7 +90,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ docutils makeWrapper perl pkgconfig python which ]; buildInputs = [ - ffmpeg freetype libass libpthreadstubs lua lua5_sockets + ffmpeg freetype libass libpthreadstubs lua lua5_sockets libuchardet rubberband ] ++ optionals x11Support [ libX11 libXext mesa libXxf86vm ] ++ optional alsaSupport alsaLib ++ optional xvSupport libXv diff --git a/pkgs/applications/video/vlc/default.nix b/pkgs/applications/video/vlc/default.nix index a84f24a303a..a23bb9a1a94 100644 --- a/pkgs/applications/video/vlc/default.nix +++ b/pkgs/applications/video/vlc/default.nix @@ -9,13 +9,13 @@ , libvdpau, libsamplerate, live555, fluidsynth , onlyLibVLC ? false , qt4 ? null -, withQt5 ? false, qtbase ? null +, withQt5 ? false, qtbase ? null, qtx11extras ? null , jackSupport ? false }: with stdenv.lib; -assert (withQt5 -> qtbase != null); +assert (withQt5 -> qtbase != null && qtx11extras != null); assert (!withQt5 -> qt4 != null); stdenv.mkDerivation rec { @@ -43,6 +43,7 @@ stdenv.mkDerivation rec { fluidsynth ] ++ [(if withQt5 then qtbase else qt4)] + ++ optional withQt5 qtx11extras ++ optional jackSupport libjack2; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/applications/window-managers/jwm/default.nix b/pkgs/applications/window-managers/jwm/default.nix index adbdef5e284..540e5d1c1e6 100644 --- a/pkgs/applications/window-managers/jwm/default.nix +++ b/pkgs/applications/window-managers/jwm/default.nix @@ -1,22 +1,24 @@ { stdenv, fetchurl, pkgconfig, automake, autoconf, libtool, which, xorg, - libX11, libXext, libXinerama, libXpm, libXft, libXau, libXdmcp, libpng, - libjpeg, expat, xproto, xextproto, xineramaproto, librsvg, gettext, + libX11, libXext, libXinerama, libXpm, libXft, libXau, libXdmcp, libXmu, + libpng, libjpeg, expat, xproto, xextproto, xineramaproto, librsvg, gettext, freetype, fontconfig }: stdenv.mkDerivation rec { name = "jwm-${version}"; - version = "1406"; + version = "1495"; src = fetchurl { url = "https://github.com/joewing/jwm/archive/s${version}.tar.gz"; - sha256 = "0yk22b7cshhyfpcqnb4p59yxspx95xg9yp1kmkxi2fyw95cacab4"; + sha256 = "0sn9la3k36k1d9qyxab1sbv2mqicq2w7q4wgy4bj8d48zc8xjy6v"; }; - nativeBuildInputs = [ pkgconfig automake autoconf libtool which ]; + nativeBuildInputs = [ pkgconfig automake autoconf libtool which gettext ]; buildInputs = [ libX11 libXext libXinerama libXpm libXft xorg.libXrender - libXau libXdmcp libpng libjpeg expat xproto xextproto xineramaproto - librsvg gettext freetype fontconfig ]; + libXau libXdmcp libXmu libpng libjpeg expat xproto xextproto xineramaproto + librsvg freetype fontconfig ]; + + enableParallelBuilding = true; preConfigure = "./autogen.sh"; diff --git a/pkgs/build-support/build-fhs-chrootenv/env.nix b/pkgs/build-support/build-fhs-chrootenv/env.nix index 8c45c9c9036..01d75727f0b 100644 --- a/pkgs/build-support/build-fhs-chrootenv/env.nix +++ b/pkgs/build-support/build-fhs-chrootenv/env.nix @@ -3,6 +3,7 @@ { name, profile ? "" , pkgs ? null, targetPkgs ? pkgs: [], multiPkgs ? pkgs: [] , extraBuildCommands ? "", extraBuildCommandsMulti ? "" +, extraOutputsToInstall ? [] }: # HOWTO: @@ -57,6 +58,7 @@ let export LOCALE_ARCHIVE='/usr/lib/locale/locale-archive' export LD_LIBRARY_PATH='/run/opengl-driver/lib:/run/opengl-driver-32/lib:/usr/lib:/usr/lib32' export PATH='/var/setuid-wrappers:/usr/bin:/usr/sbin' + export PKG_CONFIG_PATH=/usr/lib/pkgconfig # Force compilers to look in default search paths export NIX_CFLAGS_COMPILE='-idirafter /usr/include' @@ -118,12 +120,14 @@ let staticUsrProfileTarget = nixpkgs.buildEnv { name = "${name}-usr-target"; paths = [ etcPkg ] ++ basePkgs ++ targetPaths; + extraOutputsToInstall = [ "lib" "out" ] ++ extraOutputsToInstall; ignoreCollisions = true; }; staticUsrProfileMulti = nixpkgs.buildEnv { name = "system-profile-multi"; paths = multiPaths; + extraOutputsToInstall = [ "lib" "out" ] ++ extraOutputsToInstall; ignoreCollisions = true; }; @@ -157,8 +161,8 @@ let cp -rsHf ${staticUsrProfileTarget}/lib64/* lib64/ && chmod u+w -R lib64/ # copy gcc libs - cp -rsHf ${chosenGcc.cc}/lib/* lib32/ - cp -rsHf ${chosenGcc.cc}/lib64/* lib64/ + cp -rsHf ${chosenGcc.cc.lib}/lib/* lib32/ + cp -rsHf ${chosenGcc.cc.lib}/lib64/* lib64/ # symlink 32-bit ld-linux.so ln -s ${staticUsrProfileTarget}/lib/32/ld-linux.so.2 lib/ diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index 8e4a51071e3..1f14bda203d 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -1,5 +1,5 @@ { stdenv, lib, callPackage, runCommand, writeReferencesToFile, writeText, vmTools, writeScript -, docker, shadow, utillinux, coreutils, jshon, e2fsprogs, goPackages }: +, docker, shadow, utillinux, coreutils, jshon, e2fsprogs, goPackages, pigz }: # WARNING: this API is unstable and may be subject to backwards-incompatible changes in the future. @@ -45,27 +45,6 @@ rec { done ''; - mkTarball = { name ? "docker-tar", drv, onlyDeps ? false }: - runCommand "${name}.tar.gz" rec { - inherit drv onlyDeps; - - drvClosure = writeReferencesToFile drv; - - } '' - while read dep; do - echo Copying $dep - dir="$(dirname "$dep")" - mkdir -p "rootfs/$dir" - cp -drf --preserve=mode $dep "rootfs/$dir/" - done < "$drvClosure" - - if [ -z "$onlyDeps" ]; then - cp -drf --preserve=mode $drv/* rootfs/ - fi - - tar -C rootfs/ -cpzf $out . - ''; - shellScript = text: writeScript "script.sh" '' #!${stdenv.shell} @@ -99,16 +78,6 @@ EOF fi ''; - # Append to tar instead of unpacking - mergeTarballs = tarballs: - runCommand "merge-tars" { inherit tarballs; } '' - mkdir tmp - for tb in $tarballs; do - tar -C tmp -xkpf $tb - done - tar -C tmp -cpzf $out . - ''; - runWithOverlay = { name , fromImage ? null, fromImageName ? null, fromImageTag ? null , diskSize ? 1024, preMount ? "", postMount ? "", postUmount ? "" }: vmTools.runInLinuxVM ( @@ -182,7 +151,7 @@ EOF postMount = '' echo Packing raw image - tar -C mnt -czf $out . + tar -C mnt -cf $out . ''; }; @@ -262,8 +231,8 @@ EOF # 6. repack the image buildImage = args@{ name, tag ? "latest" , fromImage ? null, fromImageName ? null, fromImageTag ? null - , contents ? null, tarballs ? [], config ? null - , runAsRoot ? null, diskSize ? 1024, extraCommands ? "" }: + , contents ? null, config ? null, runAsRoot ? null + , diskSize ? 1024, extraCommands ? "" }: let @@ -275,22 +244,18 @@ EOF os = "linux"; config = config; }); - + layer = (if runAsRoot == null then mkPureLayer { inherit baseJson contents extraCommands; } else mkRootLayer { inherit baseJson fromImage fromImageName fromImageTag contents runAsRoot diskSize extraCommands; }); - depsTarball = mkTarball { name = "${baseName}-deps"; - drv = layer; - onlyDeps = true; }; - result = runCommand "${baseName}.tar.gz" { - buildInputs = [ jshon ]; + buildInputs = [ jshon pigz ]; imageName = name; imageTag = tag; inherit fromImage baseJson; - mergedTarball = if tarballs == [] then depsTarball else mergeTarballs ([ depsTarball ] ++ tarballs); + layerClosure = writeReferencesToFile layer; passthru = { buildArgs = args; @@ -320,22 +285,17 @@ EOF mkdir temp cp ${layer}/* temp/ chmod ug+w temp/* - - echo Adding dependencies + + touch layerFiles + for dep in $(cat $layerClosure); do + find $dep >> layerFiles + done + + echo Adding layer tar -tf temp/layer.tar >> baseFiles - tar -tf "$mergedTarball" | grep -v ${layer} > layerFiles - if [ "$(wc -l layerFiles|cut -d ' ' -f 1)" -gt 3 ]; then - sed -i -e 's|^[\./]\+||' baseFiles layerFiles - comm <(sort -n baseFiles|uniq) <(sort -n layerFiles|uniq) -1 -3 > newFiles - mkdir deps - pushd deps - tar -xpf "$mergedTarball" --no-recursion --files-from ../newFiles 2>/dev/null || true - tar -rf ../temp/layer.tar --no-recursion --files-from ../newFiles 2>/dev/null || true - popd - else - echo No new deps, no diffing needed - fi - + comm <(sort -n baseFiles|uniq) <(sort -n layerFiles|uniq|grep -v ${layer}) -1 -3 > newFiles + tar -rpf temp/layer.tar --no-recursion --files-from newFiles 2>/dev/null || true + echo Adding meta if [ -n "$parentID" ]; then @@ -357,7 +317,7 @@ EOF chmod -R a-w image echo Cooking the image - tar -C image -czf $out . + tar -C image -c . | pigz > $out ''; in diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index d4b46cf9e9d..3cd64ed1c02 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -61,6 +61,7 @@ in , md5 ? "" , sha1 ? "" , sha256 ? "" +, sha512 ? "" , recursiveHash ? false @@ -91,7 +92,7 @@ assert (urls == []) != (url == ""); let hasHash = showURLs || (outputHash != "" && outputHashAlgo != "") - || md5 != "" || sha1 != "" || sha256 != ""; + || md5 != "" || sha1 != "" || sha256 != "" || sha512 != ""; urls_ = if urls != [] then urls else [url]; in @@ -114,9 +115,9 @@ if (!hasHash) then throw "Specify hash for fetchurl fixed-output derivation: ${s # New-style output content requirements. outputHashAlgo = if outputHashAlgo != "" then outputHashAlgo else - if sha256 != "" then "sha256" else if sha1 != "" then "sha1" else "md5"; + if sha512 != "" then "sha512" else if sha256 != "" then "sha256" else if sha1 != "" then "sha1" else "md5"; outputHash = if outputHash != "" then outputHash else - if sha256 != "" then sha256 else if sha1 != "" then sha1 else md5; + if sha512 != "" then sha512 else if sha256 != "" then sha256 else if sha1 != "" then sha1 else md5; outputHashMode = if (recursiveHash || executable) then "recursive" else "flat"; diff --git a/pkgs/build-support/grsecurity/default.nix b/pkgs/build-support/grsecurity/default.nix index b6719abed70..6c2e98b9cc1 100644 --- a/pkgs/build-support/grsecurity/default.nix +++ b/pkgs/build-support/grsecurity/default.nix @@ -114,16 +114,10 @@ let "-${grkern.grversion}-${grkern.revision}"; grsecurityOverrider = args: grkern: { - # Apparently as of gcc 4.6, gcc-plugin headers (which are needed by PaX plugins) - # include libgmp headers, so we need these extra tweaks - # As of gcc5 we also need libmpc - buildInputs = args.buildInputs ++ [ pkgs.gmp pkgs.libmpc pkgs.mpfr ]; - preConfigure = '' - extraIncludes="-I${pkgs.gmp.dev}/include -I${pkgs.libmpc}/include -I${pkgs.mpfr.dev}/include" - ${args.preConfigure or ""} - sed -i "s|-I|$extraIncludes -I|" scripts/gcc-plugin.sh - sed -i "s|HOST_EXTRACFLAGS +=|HOST_EXTRACFLAGS += $extraIncludes|" tools/gcc/Makefile - sed -i "s|HOST_EXTRACXXFLAGS +=|HOST_EXTRACXXFLAGS += $extraIncludes|" tools/gcc/Makefile + # additional build inputs for gcc plugins, required by some PaX/grsec features + nativeBuildInputs = args.nativeBuildInputs ++ (with pkgs; [ gmp libmpc mpfr ]); + + preConfigure = args.preConfigure or "" + '' rm localversion-grsec echo ${localver grkern} > localversion-grsec ''; diff --git a/pkgs/desktops/enlightenment/rage.nix b/pkgs/desktops/enlightenment/rage.nix index 8c3391cf271..67f9c68cd61 100644 --- a/pkgs/desktops/enlightenment/rage.nix +++ b/pkgs/desktops/enlightenment/rage.nix @@ -7,19 +7,23 @@ stdenv.mkDerivation rec { url = "http://download.enlightenment.org/rel/apps/rage/${name}.tar.gz"; sha256 = "10j3n8crk16jzqz2hn5djx6vms5f6x83qyiaphhqx94h9dgv2mgg"; }; - buildInputs = [ elementary efl automake autoconf libtool pkgconfig - makeWrapper ]; - GST_PLUGIN_PATH = lib.makeSearchPath "lib/gstreamer-1.0" [ + buildInputs = [ + elementary efl automake autoconf libtool pkgconfig + makeWrapper + gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad - gst_all_1.gst-libav ]; + gst_all_1.gst-libav + ]; + configurePhase = '' ./autogen.sh --prefix=$out ''; + postInstall = '' wrapProgram $out/bin/rage \ - --prefix GST_PLUGIN_PATH : "$GST_PLUGIN_PATH" + --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" ''; meta = { description = "Video + Audio player along the lines of mplayer"; diff --git a/pkgs/desktops/gnome-3/3.18/core/totem/default.nix b/pkgs/desktops/gnome-3/3.18/core/totem/default.nix index 13665c72274..bcf30baa5ba 100644 --- a/pkgs/desktops/gnome-3/3.18/core/totem/default.nix +++ b/pkgs/desktops/gnome-3/3.18/core/totem/default.nix @@ -17,8 +17,8 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 gnome3.grilo clutter_gtk clutter-gst gnome3.totem-pl-parser gnome3.grilo-plugins - gst_all_1.gstreamer gst_all_1.gst-plugins-base - gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad + gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly gst_all_1.gst-libav gnome3.libpeas pygobject3 shared_mime_info dbus_glib gdk_pixbuf gnome3.defaultIconTheme librsvg gnome3.gnome_desktop gnome3.gsettings_desktop_schemas makeWrapper file ]; diff --git a/pkgs/development/compilers/gcc-arm-embedded/default.nix b/pkgs/development/compilers/gcc-arm-embedded/default.nix index 33f51270f43..1c549907c31 100644 --- a/pkgs/development/compilers/gcc-arm-embedded/default.nix +++ b/pkgs/development/compilers/gcc-arm-embedded/default.nix @@ -1,4 +1,5 @@ -{ stdenv, bzip2, patchelf, glibc, gcc, fetchurl, version, releaseType, sha256, ncurses }: +{ stdenv, bzip2, patchelf, glibc, gcc, fetchurl, version, releaseType, sha256, ncurses +, dirName ? null, subdirName ? null }: with stdenv.lib; let versionParts = splitString "-" version; # 4.7 2013q3 20130916 @@ -8,13 +9,15 @@ let yearQuarterParts = splitString "q" yearQuarter; # 2013 3 year = elemAt yearQuarterParts 0; # 2013 quarter = elemAt yearQuarterParts 1; # 3 - subdirName = "${majorVersion}-${year}-q${quarter}-${releaseType}"; # 4.7-2013-q3-update + dirName_ = if dirName != null then dirName else majorVersion; + subdirName_ = if subdirName != null then subdirName + else "${majorVersion}-${year}-q${quarter}-${releaseType}"; # 4.7-2013-q3-update in stdenv.mkDerivation { name = "gcc-arm-embedded-${version}"; src = fetchurl { - url = "https://launchpad.net/gcc-arm-embedded/${majorVersion}/${subdirName}/+download/gcc-arm-none-eabi-${underscoreVersion}-linux.tar.bz2"; + url = "https://launchpad.net/gcc-arm-embedded/${dirName_}/${subdirName_}/+download/gcc-arm-none-eabi-${underscoreVersion}-linux.tar.bz2"; sha256 = sha256; }; diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index d478196af51..74612ae7754 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -218,7 +218,7 @@ stdenv.mkDerivation ({ inherit patches; - outputs = [ "out" "lib" "man" "info" ]; + outputs = if langJava then ["out" "man" "info"] else [ "out" "lib" "man" "info" ]; setOutputFlags = false; NIX_NO_SELF_RPATH = true; @@ -315,7 +315,11 @@ stdenv.mkDerivation ({ FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \ ) fi - ''; + '' + + stdenv.lib.optionalString langJava '' + export lib=$out; + '' + ; dontDisableStatic = true; @@ -538,4 +542,10 @@ stdenv.mkDerivation ({ // optionalAttrs (!stripped || cross != null) { dontStrip = true; NIX_STRIP_DEBUG = 0; } // optionalAttrs (enableMultilib) { dontMoveLib64 = true; } + +// optionalAttrs (langJava) { + postFixup = '' + target="$(echo "$out/libexec/gcc"/*/*/ecj*)" + patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target" + '';} ) diff --git a/pkgs/development/compilers/julia/git.nix b/pkgs/development/compilers/julia/git.nix index 49c26592f2e..1b3ef86cdbe 100644 --- a/pkgs/development/compilers/julia/git.nix +++ b/pkgs/development/compilers/julia/git.nix @@ -130,10 +130,10 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = [ "-fPIC" ]; - LD_LIBRARY_PATH = makeSearchPath "lib" [ + LD_LIBRARY_PATH = makeSearchPath "lib" (concatLists (map (x : x.all) [ arpack fftw fftwSinglePrec gmp libgit2 mpfr openblas openlibm openspecfun pcre2 suitesparse - ]; + ])); dontStrip = true; dontPatchELF = true; diff --git a/pkgs/development/coq-modules/coq-ext-lib/default.nix b/pkgs/development/coq-modules/coq-ext-lib/default.nix index 2eeb6b207b1..d35c062d6e4 100644 --- a/pkgs/development/coq-modules/coq-ext-lib/default.nix +++ b/pkgs/development/coq-modules/coq-ext-lib/default.nix @@ -1,9 +1,10 @@ { stdenv, fetchFromGitHub, coq }: let param = - if coq.coq-version == "8.4" - then { version = "0.9.0"; sha256 = "1n3bk003vvbghbrxkhal6drnc0l65jv9y77wd56is3jw9xgiif0w"; } - else { version = "0.9.0-beta3"; sha256 = "1dya0sqp5jjb2cl7cv2ry4gvcr359bkzzqcz0plknf3f1c5zrv0s"; }; + { + "8.4" = { version = "0.9.0"; sha256 = "1n3bk003vvbghbrxkhal6drnc0l65jv9y77wd56is3jw9xgiif0w"; }; + "8.5" = { version = "0.9.3"; sha256 = "05zff5mrkxpvcsw4gi8whjj5w0mdbqzjmb247lq5b7mry0bypwc5"; }; + }."${coq.coq-version}"; in stdenv.mkDerivation rec { diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index f1e7efd3b12..89c839d49df 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -154,7 +154,6 @@ self: super: { gl = dontHaddock super.gl; groupoids = dontHaddock super.groupoids; hamlet = dontHaddock super.hamlet; - haste-compiler = dontHaddock super.haste-compiler; HaXml = dontHaddock super.HaXml; HDBC-odbc = dontHaddock super.HDBC-odbc; hoodle-core = dontHaddock super.hoodle-core; @@ -964,4 +963,8 @@ self: super: { # https://github.com/danidiaz/pipes-transduce/issues/2 pipes-transduce = super.pipes-transduce.override { foldl = self.foldl_1_1_6; }; + # Haste stuff + haste-Cabal = self.callPackage ../tools/haskell/haste/haste-Cabal.nix {}; + haste-cabal-install = self.callPackage ../tools/haskell/haste/haste-cabal-install.nix { Cabal = self.haste-Cabal; HTTP = self.HTTP_4000_2_23; }; + haste-compiler = self.callPackage ../tools/haskell/haste/haste-compiler.nix { inherit overrideCabal; super-haste-compiler = super.haste-compiler; }; } diff --git a/pkgs/development/interpreters/angelscript/default.nix b/pkgs/development/interpreters/angelscript/default.nix index f5ff0315bee..84b474b08cb 100644 --- a/pkgs/development/interpreters/angelscript/default.nix +++ b/pkgs/development/interpreters/angelscript/default.nix @@ -3,10 +3,10 @@ let s = # Generated upstream information rec { baseName="angelscript"; - version = "2.30.2"; + version = "2.31.0"; name="${baseName}-${version}"; url="http://www.angelcode.com/angelscript/sdk/files/angelscript_${version}.zip"; - sha256 = "1myp691m0nzv51pyfq6qmjyi0asbkx2v8slrnhj32s6aq55pf24c"; + sha256 = "03a0gmz95di62552dv873iwwy1ym96kpyrc0s708assjlslr9716"; }; buildInputs = [ unzip diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index 038ad9bc397..a618fd85d71 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -294,13 +294,13 @@ let in { php55 = generic { - version = "5.5.33"; - sha256 = "1a8ac1zcq68irvdffh08cpi4aaaira4hsqwgns7b95pm9pnv3464"; + version = "5.5.34"; + sha256 = "0745wn0qg9rqibwr948bzc719s7pywizvl1ahkg1j9m92r28i25g"; }; php56 = generic { - version = "5.6.19"; - sha256 = "0s61fncsdgr1mqgh8jma6pi6xxz4gl350467lk00ls3i97wa691a"; + version = "5.6.20"; + sha256 = "07xz48dz1ijwq45vh90jfzdd56k0s5ppi3j5rwc9p9y7mrybziss"; }; php70 = generic { diff --git a/pkgs/development/libraries/botan/unstable.nix b/pkgs/development/libraries/botan/unstable.nix index b3fd76ab20c..dd185f21035 100644 --- a/pkgs/development/libraries/botan/unstable.nix +++ b/pkgs/development/libraries/botan/unstable.nix @@ -2,7 +2,7 @@ callPackage ./generic.nix (args // { baseVersion = "1.11"; - revision = "28"; - sha256 = "0cjr3zkara8js1fbm8ddcbd5mkizxh1wm6fja13psw5j8mpwj554"; + revision = "29"; + sha256 = "157bp8716h17agrxyj7xpsj2i5sqhafj1nfx4gpzccx7y2kyq176"; openssl = null; }) diff --git a/pkgs/development/libraries/geoclue/2.0.nix b/pkgs/development/libraries/geoclue/2.0.nix index 83becae05a4..0c22cc9ff9f 100644 --- a/pkgs/development/libraries/geoclue/2.0.nix +++ b/pkgs/development/libraries/geoclue/2.0.nix @@ -3,11 +3,11 @@ }: stdenv.mkDerivation rec { - name = "geoclue-2.4.2"; + name = "geoclue-2.4.3"; src = fetchurl { url = "http://www.freedesktop.org/software/geoclue/releases/2.4/${name}.tar.xz"; - sha256 = "0g4krigdaf5ipkp4mi16rca62crr8pdk3wkhm0fxbcqnil75fyy4"; + sha256 = "0pk07k65dlw37nz8z5spksivsv5nh96xmbi336rf2yfxf2ldpadd"; }; buildInputs = diff --git a/pkgs/development/libraries/glfw/3.x.nix b/pkgs/development/libraries/glfw/3.x.nix index 681137cd590..094856b66ab 100644 --- a/pkgs/development/libraries/glfw/3.x.nix +++ b/pkgs/development/libraries/glfw/3.x.nix @@ -21,6 +21,7 @@ stdenv.mkDerivation rec { ]; cmakeFlags = "-DBUILD_SHARED_LIBS=ON"; + NIX_LDFLAGS= "-lpthread -L${stdenv.cc.libc.out}/lib"; meta = with stdenv.lib; { description = "Multi-platform library for creating OpenGL contexts and managing input, including keyboard, mouse, joystick and time"; diff --git a/pkgs/development/libraries/libdvdcss/default.nix b/pkgs/development/libraries/libdvdcss/default.nix index d68b0a36751..c5cdec0ae5f 100644 --- a/pkgs/development/libraries/libdvdcss/default.nix +++ b/pkgs/development/libraries/libdvdcss/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +{ stdenv, fetchurl }: stdenv.mkDerivation rec { name = "libdvdcss-${version}"; @@ -9,8 +9,10 @@ stdenv.mkDerivation rec { sha256 = "158k9zagmbk5bkbz96l6lwhh7xcgfcnzflkr4vblskhcab6llhbw"; }; - meta = { + meta = with stdenv.lib; { homepage = http://www.videolan.org/developers/libdvdcss.html; description = "A library for decrypting DVDs"; + license = licenses.gpl2; + platforms = platforms.linux; }; } diff --git a/pkgs/development/libraries/libfm/default.nix b/pkgs/development/libraries/libfm/default.nix index efa9b90e869..db17b46b0d3 100644 --- a/pkgs/development/libraries/libfm/default.nix +++ b/pkgs/development/libraries/libfm/default.nix @@ -3,11 +3,15 @@ let inherit (stdenv.lib) optional; in -stdenv.mkDerivation { - name = if extraOnly then "libfm-extra-1.2.3" else "libfm-1.2.3"; +stdenv.mkDerivation rec { + name = if extraOnly + then "libfm-extra-${version}" + else "libfm-${version}"; + version = "1.2.4"; + src = fetchurl { - url = "mirror://sourceforge/pcmanfm/libfm-1.2.3.tar.xz"; - sha256 = "1ygvw52262r3jp1f45m9cdpx5xgvd4rkyfszslfqvg2c99ig34n6"; + url = "mirror://sourceforge/pcmanfm/libfm-${version}.tar.xz"; + sha256 = "0bsh4p7h2glhxf1cc1lvbxyb4qy0y1zsnl9izf7vrldkikrgc13q"; }; buildInputs = [ glib gtk intltool pango pkgconfig vala ] diff --git a/pkgs/development/libraries/libgphoto2/default.nix b/pkgs/development/libraries/libgphoto2/default.nix index e25cdb61d86..55129a94476 100644 --- a/pkgs/development/libraries/libgphoto2/default.nix +++ b/pkgs/development/libraries/libgphoto2/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://sourceforge/gphoto/${name}.tar.bz2"; - sha256 = "0chz57rhzdz1cbdjw1q5rs439s879kk06jrci4jyn5rlm7iyic6d"; + sha256 = "1wjf79ipqwb5phfjjwf15rwgigakylnfqaj4crs5qnds6ba6i1ld"; }; nativeBuildInputs = [ pkgconfig gettext ]; @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { MTP, and other vendor specific protocols for controlling and transferring data from digital cameras. ''; - version = "2.5.9"; + version = "2.5.10"; # XXX: the homepage claims LGPL, but several src files are lgpl21Plus license = stdenv.lib.licenses.lgpl21Plus; platforms = with stdenv.lib.platforms; unix; diff --git a/pkgs/development/libraries/libgsf/default.nix b/pkgs/development/libraries/libgsf/default.nix index b7e774b5223..25d1ceb40bd 100644 --- a/pkgs/development/libraries/libgsf/default.nix +++ b/pkgs/development/libraries/libgsf/default.nix @@ -4,11 +4,11 @@ with { inherit (stdenv.lib) optionals; }; stdenv.mkDerivation rec { - name = "libgsf-1.14.34"; + name = "libgsf-1.14.36"; src = fetchurl { url = "mirror://gnome/sources/libgsf/1.14/${name}.tar.xz"; - sha256 = "f0fea447e0374a73df45b498fd1701393f8e6acb39746119f8a292fb4a0cb528"; + sha256 = "0h19ssxzz0cmznwga2xy55kjibm24mwxqarnpd0w7xy0hrzm1dvi"; }; nativeBuildInputs = [ pkgconfig intltool ]; diff --git a/pkgs/development/libraries/libuchardet/default.nix b/pkgs/development/libraries/libuchardet/default.nix index 86428e08c47..4b81152a432 100644 --- a/pkgs/development/libraries/libuchardet/default.nix +++ b/pkgs/development/libraries/libuchardet/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { name = "libuchardet-${version}"; - version = "0.0.1"; + version = "0.0.5"; src = fetchFromGitHub { owner = "BYVoid"; repo = "uchardet"; - rev = "69b7133995e4ee260b093323c57a7f8c6c6803b8"; - sha256 = "0yqrc9a7wxsh2fvigjppjp55v4r1q8p40yh048xsvl3kly2rkqy9"; + rev = "v${version}"; + sha256 = "0rkym5bhq3hn7623fy0fggw0qaghha71k8bi41ywqd2lchpahrrm"; }; buildInputs = [ cmake ]; diff --git a/pkgs/development/libraries/libvirt/default.nix b/pkgs/development/libraries/libvirt/default.nix index d2cb7223cbf..1d1945af319 100644 --- a/pkgs/development/libraries/libvirt/default.nix +++ b/pkgs/development/libraries/libvirt/default.nix @@ -9,11 +9,11 @@ stdenv.mkDerivation rec { name = "libvirt-${version}"; - version = "1.3.2"; + version = "1.3.3"; src = fetchurl { url = "http://libvirt.org/sources/${name}.tar.gz"; - sha256 = "01fg9jbifndwc3jzzizsisvz98q325xarczgf6rn11hphckgrip3"; + sha256 = "13w56fhspf7ygr3v0jhh44g25xbcx5vmrprzcy9cajsppa6knq4r"; }; patches = [ ./build-on-bsd.patch ]; diff --git a/pkgs/development/libraries/mygui/default.nix b/pkgs/development/libraries/mygui/default.nix index 2fa62ced2d5..6e4b3e6a862 100644 --- a/pkgs/development/libraries/mygui/default.nix +++ b/pkgs/development/libraries/mygui/default.nix @@ -1,9 +1,12 @@ -{stdenv, fetchFromGitHub, libX11, unzip, ogre, cmake, ois, freetype, libuuid, boost, pkgconfig}: +{ stdenv, fetchFromGitHub, libX11, unzip, cmake, ois, freetype, libuuid, + boost, pkgconfig, withOgre ? false, ogre ? null, mesa ? null } : -stdenv.mkDerivation rec { +let + renderSystem = if withOgre then "3" else "4"; +in stdenv.mkDerivation rec { name = "mygui-${version}"; version = "3.2.2"; - + src = fetchFromGitHub { owner = "MyGUI"; repo = "mygui"; @@ -13,11 +16,15 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - buildInputs = [ libX11 unzip ogre cmake ois freetype libuuid boost pkgconfig ]; + buildInputs = [ libX11 unzip cmake ois freetype libuuid boost pkgconfig (if withOgre then ogre else mesa) ]; - meta = { + # Tools are disabled due to compilation failures. + cmakeFlags = [ "-DMYGUI_BUILD_TOOLS=OFF" "-DMYGUI_BUILD_DEMOS=OFF" "-DMYGUI_RENDERSYSTEM=${renderSystem}" ]; + + meta = with stdenv.lib; { homepage = http://mygui.info/; description = "Library for creating GUIs for games and 3D applications"; - license = stdenv.lib.licenses.lgpl3Plus; + license = licenses.lgpl3Plus; + platforms = platforms.linux; }; } diff --git a/pkgs/development/libraries/ogrepaged/default.nix b/pkgs/development/libraries/ogrepaged/default.nix index 27193e04545..3539a6302b1 100644 --- a/pkgs/development/libraries/ogrepaged/default.nix +++ b/pkgs/development/libraries/ogrepaged/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { buildInputs = [ ois ogre libX11 boost ]; nativeBuildInputs = [ cmake pkgconfig ]; - cmakeFlags = "-DPAGEDGEOMETRY_BUILD_SAMPLES=OFF"; + cmakeFlags = [ "-DPAGEDGEOMETRY_BUILD_SAMPLES=OFF" ]; enableParallelBuilding = true; @@ -19,5 +19,7 @@ stdenv.mkDerivation rec { description = "Paged Geometry for Ogre3D"; homepage = http://code.google.com/p/ogre-paged/; license = stdenv.lib.licenses.mit; + # Build failures + broken = true; }; } diff --git a/pkgs/development/libraries/openscenegraph/default.nix b/pkgs/development/libraries/openscenegraph/default.nix index 578d0219c02..1b69563355b 100644 --- a/pkgs/development/libraries/openscenegraph/default.nix +++ b/pkgs/development/libraries/openscenegraph/default.nix @@ -1,8 +1,9 @@ -{ stdenv, fetchurl, cmake, giflib, libjpeg, libtiff, lib3ds, freetype +{ stdenv, lib, fetchurl, cmake, giflib, libjpeg, libtiff, lib3ds, freetype , libpng, coin3d, jasper, gdal_1_11, xproto, libX11, libXmu , freeglut, mesa, doxygen, ffmpeg, xineLib, unzip, zlib, openal , libxml2, curl, a52dec, faad2, gdk_pixbuf, pkgconfig, kbproto, SDL -, qt4, poppler, librsvg, gtk }: +, qt4, poppler, librsvg, gtk +, withApps ? true }: stdenv.mkDerivation rec { name = "openscenegraph-${version}"; @@ -20,11 +21,13 @@ stdenv.mkDerivation rec { pkgconfig kbproto SDL qt4 poppler librsvg gtk ]; + enableParallelBuilding = true; + cmakeFlags = [ "-DMATH_LIBRARY=" "-DCMAKE_C_FLAGS=-D__STDC_CONSTANT_MACROS=1" "-DCMAKE_CXX_FLAGS=-D__STDC_CONSTANT_MACROS=1" - ]; + ] ++ lib.optional (!withApps) "-DBUILD_OSG_APPLICATIONS=OFF"; meta = with stdenv.lib; { description = "A 3D graphics toolkit"; diff --git a/pkgs/development/libraries/qhull/default.nix b/pkgs/development/libraries/qhull/default.nix index 76ceb12b401..f98c7bdb97e 100644 --- a/pkgs/development/libraries/qhull/default.nix +++ b/pkgs/development/libraries/qhull/default.nix @@ -12,6 +12,11 @@ stdenv.mkDerivation rec { cmakeFlags = "-DMAN_INSTALL_DIR=share/man/man1 -DDOC_INSTALL_DIR=share/doc/qhull"; + patchPhase = stdenv.lib.optionalString stdenv.isDarwin '' + sed -i 's/namespace std { struct bidirectional_iterator_tag; struct random_access_iterator_tag; }/#include /' ./src/libqhullcpp/QhullIterator.h + sed -i 's/namespace std { struct bidirectional_iterator_tag; struct random_access_iterator_tag; }/#include /' ./src/libqhullcpp/QhullLinkedList.h + ''; + meta = { homepage = http://www.qhull.org/; description = "Computes the convex hull, Delaunay triangulation, Voronoi diagram and more"; diff --git a/pkgs/development/libraries/science/robotics/ispike/default.nix b/pkgs/development/libraries/science/robotics/ispike/default.nix new file mode 100644 index 00000000000..5f2263d821d --- /dev/null +++ b/pkgs/development/libraries/science/robotics/ispike/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, cmake, boost +}: + +stdenv.mkDerivation rec { + name = "ispike-${version}"; + version = "2.1.1"; + + src = fetchurl { + url = "mirror://sourceforge/ispike/${name}.tar.gz"; + sha256 = "0khrxp43bi5kisr8j4lp9fl4r5marzf7b4inys62ac108sfb28lp"; + }; + + buildInputs = [ cmake boost ]; + + meta = { + description = "Spiking neural interface between iCub and a spiking neural simulator"; + homepage = https://sourceforge.net/projects/ispike/; + license = stdenv.lib.licenses.lgpl3; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.nico202 ]; + }; + + +} diff --git a/pkgs/development/libraries/tbb/default.nix b/pkgs/development/libraries/tbb/default.nix index 58e5d0864d3..31fc5401e75 100644 --- a/pkgs/development/libraries/tbb/default.nix +++ b/pkgs/development/libraries/tbb/default.nix @@ -1,5 +1,8 @@ { stdenv, fetchurl }: +let + SHLIB_EXT = if stdenv.isDarwin then "dylib" else "so"; +in stdenv.mkDerivation { name = "tbb-4.4-u2"; @@ -13,7 +16,7 @@ stdenv.mkDerivation { installPhase = '' mkdir -p $out/{lib,share/doc} - cp "build/"*release*"/"*so* $out/lib/ + cp "build/"*release*"/"*${SHLIB_EXT}* $out/lib/ mv include $out/ rm $out/include/index.html mv doc/html $out/share/doc/tbb @@ -33,7 +36,7 @@ stdenv.mkDerivation { represents a higher-level, task-based parallelism that abstracts platform details and threading mechanisms for scalability and performance. ''; - platforms = stdenv.lib.platforms.linux; + platforms = with stdenv.lib.platforms; linux ++ darwin; maintainers = with stdenv.lib.maintainers; [ simons thoughtpolice ]; }; } diff --git a/pkgs/development/libraries/vaapi-intel/default.nix b/pkgs/development/libraries/vaapi-intel/default.nix index 5084fc3c10b..6942107d146 100644 --- a/pkgs/development/libraries/vaapi-intel/default.nix +++ b/pkgs/development/libraries/vaapi-intel/default.nix @@ -3,11 +3,11 @@ }: stdenv.mkDerivation rec { - name = "libva-intel-driver-1.6.1"; + name = "libva-intel-driver-1.6.2"; src = fetchurl { url = "http://www.freedesktop.org/software/vaapi/releases/libva-intel-driver/${name}.tar.bz2"; - sha256 = "1nsnl7gix22jbxqm7d5i3fk9gafwayhnsc3qjhbzxs6bbsffjmin"; + sha256 = "1zl51mdxfmnn33r4b0y5qxwlkqfw919aqphsq60d50pwrvdmk1xz"; }; patchPhase = '' diff --git a/pkgs/development/libraries/xvidcore/default.nix b/pkgs/development/libraries/xvidcore/default.nix index 57c66f310fb..057be97ce96 100644 --- a/pkgs/development/libraries/xvidcore/default.nix +++ b/pkgs/development/libraries/xvidcore/default.nix @@ -3,11 +3,11 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "xvidcore-${version}"; - version = "1.3.3"; + version = "1.3.4"; src = fetchurl { url = "http://downloads.xvid.org/downloads/${name}.tar.bz2"; - sha256 = "0m5g75qvapr7xpywg6a83v5x19kw1nm9l2q48lg7jvvpba0bmqdh"; + sha256 = "1xwbmp9wqshc0ckm970zdpi0yvgqxlqg0s8bkz98mnr8p2067bsz"; }; preConfigure = '' diff --git a/pkgs/development/tools/build-managers/gup/build.nix b/pkgs/development/tools/build-managers/gup/build.nix index 7f5caf7e648..a9af037bb81 100644 --- a/pkgs/development/tools/build-managers/gup/build.nix +++ b/pkgs/development/tools/build-managers/gup/build.nix @@ -1,5 +1,5 @@ # NOTE: this file is copied from the upstream repository for this package. -# Please submit any changes you make here to https://github.com/gfxmonk/gup/ +# Please submit any changes you make here to https://github.com/timbertson/gup/ { stdenv, lib, python, which, pychecker ? null }: { src, version, meta ? {} }: diff --git a/pkgs/development/tools/build-managers/gup/default.nix b/pkgs/development/tools/build-managers/gup/default.nix index a907e6ace9e..8e85c63cb6e 100644 --- a/pkgs/development/tools/build-managers/gup/default.nix +++ b/pkgs/development/tools/build-managers/gup/default.nix @@ -1,20 +1,21 @@ -{ stdenv, fetchgit, lib, python, which }: +{ stdenv, fetchFromGitHub, lib, python, which }: let - version = "0.5.4"; - src = fetchgit { - url = "https://github.com/gfxmonk/gup.git"; - rev = "b3980e529c860167b48e31634d2b479fc4d10274"; - sha256 = "bb02ba0a7f1680ed5b9a8e8c9cc42aa07016329840f397d914b94744f9ed7c85"; + version = "0.5.5"; + src = fetchFromGitHub { + sha256 = "12yv0j333z6jkaaal8my3jx3k4ml9hq8ldis5zfvr8179d4xah7q"; + rev = "version-${version}"; + repo = "gup"; + owner = "timbertson"; }; in import ./build.nix { inherit stdenv lib python which; } { inherit src version; meta = { + inherit (src.meta) homepage; description = "A better make, inspired by djb's redo"; - homepage = https://github.com/gfxmonk/gup; license = stdenv.lib.licenses.lgpl2Plus; - maintainers = [ stdenv.lib.maintainers.gfxmonk ]; + maintainers = [ stdenv.lib.maintainers.timbertson ]; platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/development/tools/build-managers/scons/default.nix b/pkgs/development/tools/build-managers/scons/default.nix index 37035b8c44d..417ab348c40 100644 --- a/pkgs/development/tools/build-managers/scons/default.nix +++ b/pkgs/development/tools/build-managers/scons/default.nix @@ -2,7 +2,7 @@ let name = "scons"; - version = "2.4.1"; + version = "2.5.0"; in stdenv.mkDerivation { @@ -10,7 +10,7 @@ stdenv.mkDerivation { src = fetchurl { url = "mirror://sourceforge/scons/${name}-${version}.tar.gz"; - sha256 = "19skywi4sb8riivvrylkjrjhnw1cdxj4ps8v7srwp6y650lz9i4g"; + sha256 = "1sdcj8iapfzmlq7098yas40qwl6khsiwydbxv33sw81wy93nnagb"; }; buildInputs = [python makeWrapper]; diff --git a/pkgs/development/tools/haskell/haste/haste-Cabal.nix b/pkgs/development/tools/haskell/haste/haste-Cabal.nix new file mode 100644 index 00000000000..45a60172e39 --- /dev/null +++ b/pkgs/development/tools/haskell/haste/haste-Cabal.nix @@ -0,0 +1,35 @@ +# Haste requires its own patched up version of Cabal that's not on hackage +{ mkDerivation, array, base, binary, bytestring, containers +, deepseq, directory, extensible-exceptions, filepath, old-time +, pretty, process, QuickCheck, regex-posix, stdenv, tasty +, tasty-hunit, tasty-quickcheck, time, unix +, fetchFromGitHub +}: + +mkDerivation { + pname = "Cabal"; + version = "1.23.0.0"; + src = fetchFromGitHub { + owner = "valderman"; + repo = "cabal"; + rev = "a1962987ba32d5e20090830f50c6afdc78dae005"; + sha256 = "1gjmscfsikcvgkv6zricpfxvj23wxahndm784lg9cpxrc3pn5hvh"; + }; + libraryHaskellDepends = [ + array base binary bytestring containers deepseq directory filepath + pretty process time unix + ]; + testHaskellDepends = [ + base bytestring containers directory extensible-exceptions filepath + old-time pretty process QuickCheck regex-posix tasty tasty-hunit + tasty-quickcheck unix + ]; + prePatch = '' + rm -rf cabal-install + cd Cabal + ''; + doCheck = false; + homepage = "http://www.haskell.org/cabal/"; + description = "A framework for packaging Haskell software"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/pkgs/development/tools/haskell/haste/haste-cabal-install.nix b/pkgs/development/tools/haskell/haste/haste-cabal-install.nix new file mode 100644 index 00000000000..dd140409173 --- /dev/null +++ b/pkgs/development/tools/haskell/haste/haste-cabal-install.nix @@ -0,0 +1,46 @@ +# Haste requires its own patched up version of cabal-install that's not on hackage +{ mkDerivation, array, base, bytestring, Cabal, containers +, directory, extensible-exceptions, filepath, HTTP, mtl, network +, network-uri, pretty, process, QuickCheck, random, regex-posix +, stdenv, stm, tagged, tasty, tasty-hunit, tasty-quickcheck, time +, unix, zlib +, fetchFromGitHub +}: + +mkDerivation { + pname = "cabal-install"; + version = "1.23.0.0"; + src = fetchFromGitHub { + owner = "valderman"; + repo = "cabal"; + rev = "a1962987ba32d5e20090830f50c6afdc78dae005"; + sha256 = "1gjmscfsikcvgkv6zricpfxvj23wxahndm784lg9cpxrc3pn5hvh"; + }; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + array base bytestring Cabal containers directory filepath HTTP mtl + network network-uri pretty process random stm time unix zlib + ]; + testHaskellDepends = [ + array base bytestring Cabal containers directory + extensible-exceptions filepath HTTP mtl network network-uri pretty + process QuickCheck random regex-posix stm tagged tasty tasty-hunit + tasty-quickcheck time unix zlib + ]; + prePatch = '' + rm -rf Cabal + cd cabal-install + ''; + postInstall = '' + mkdir $out/etc + mv bash-completion $out/etc/bash_completion.d + + # Manually added by Nix maintainer + mv -v $out/etc/bash_completion.d/cabal $out/etc/bash_completion.d/haste-cabal + ''; + doCheck = false; + homepage = "http://www.haskell.org/cabal/"; + description = "The command-line interface for Cabal and Hackage"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/pkgs/development/tools/haskell/haste/haste-compiler.nix b/pkgs/development/tools/haskell/haste/haste-compiler.nix new file mode 100644 index 00000000000..f9aa5abae57 --- /dev/null +++ b/pkgs/development/tools/haskell/haste/haste-compiler.nix @@ -0,0 +1,33 @@ +{ mkDerivation +, overrideCabal +, super-haste-compiler +}: + +overrideCabal super-haste-compiler (drv: { + configureFlags = [ "-f-portable" ]; + prePatch = '' + # Get ghc libdir by invoking ghc and point to haste-cabal binary + substituteInPlace src/Haste/Environment.hs \ + --replace \ + 'hasteGhcLibDir = hasteSysDir' \ + 'hasteGhcLibDir = head $ lines $ either (error . show) id $ unsafePerformIO $ shell $ run "ghc" ["--print-libdir"] ""' \ + --replace \ + 'hasteCabalBinary = hasteBinDir "haste-cabal" ++ binaryExt' \ + 'hasteCabalBinary = "haste-cabal" ++ binaryExt' + + # Don't try to download/install haste-cabal in haste-boot: + patch src/haste-boot.hs << EOF + @@ -178,10 +178,6 @@ + pkgSysLibDir, jsmodSysDir, pkgSysDir] + + mkdir True (hasteCabalRootDir portableHaste) + - case getHasteCabal cfg of + - Download -> installHasteCabal portableHaste tmpdir + - Prebuilt fp -> copyHasteCabal portableHaste fp + - Source mdir -> buildHasteCabal portableHaste (maybe "../cabal" id mdir) + + -- Spawn off closure download in the background. + dir <- pwd -- use absolute path for closure to avoid dir changing race + EOF + ''; +}) diff --git a/pkgs/development/tools/misc/dfu-util/default.nix b/pkgs/development/tools/misc/dfu-util/default.nix index f3a986e6432..d0a68caace6 100644 --- a/pkgs/development/tools/misc/dfu-util/default.nix +++ b/pkgs/development/tools/misc/dfu-util/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { name="dfu-util-${version}"; - version = "0.8"; + version = "0.9"; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ libusb1 ]; src = fetchurl { - url = "mirror://debian/pool/main/d/dfu-util/dfu-util_0.8.orig.tar.gz"; - sha256 = "0n7h08avlzin04j93m6hkq9id6hxjiiix7ff9gc2n89aw6dxxjsm"; + url = "http://dfu-util.sourceforge.net/releases/${name}.tar.gz"; + sha256 = "0czq73m92ngf30asdzrfkzraag95hlrr74imbanqq25kdim8qhin"; }; meta = with stdenv.lib; { diff --git a/pkgs/development/tools/selenium/chromedriver/default.nix b/pkgs/development/tools/selenium/chromedriver/default.nix index b2f566ece8d..dd6d75771a3 100644 --- a/pkgs/development/tools/selenium/chromedriver/default.nix +++ b/pkgs/development/tools/selenium/chromedriver/default.nix @@ -8,12 +8,12 @@ assert stdenv.system == "x86_64-linux"; stdenv.mkDerivation rec { product = "chromedriver_linux64"; - name = "${product}-2.14"; - version = "2.14"; + name = "${product}-2.21"; + version = "2.21"; src = fetchurl { url = "http://chromedriver.storage.googleapis.com/${version}/${product}.zip"; - sha256 = "18kpky1v5pc3fv6kv9i2mf4wr4qicmfhf27h9zqy18gh16rlwrin"; + sha256 = "1fhwvqjwqkfm18icacvk0312ii8hf1p03icd3isfcxp7j69qf2wg"; }; buildInputs = [ unzip makeWrapper ]; diff --git a/pkgs/development/tools/sunxi-tools/default.nix b/pkgs/development/tools/sunxi-tools/default.nix index f27b9500319..43256024254 100644 --- a/pkgs/development/tools/sunxi-tools/default.nix +++ b/pkgs/development/tools/sunxi-tools/default.nix @@ -1,11 +1,13 @@ -{ stdenv, fetchgit, pkgconfig, libusb }: +{ stdenv, fetchFromGitHub, pkgconfig, libusb }: + stdenv.mkDerivation { name = "sunxi-tools-1.3"; - src = fetchgit { - url = "https://github.com/linux-sunxi/sunxi-tools"; + src = fetchFromGitHub { + owner = "linux-sunxi"; + repo = "sunxi-tools"; rev = "be1b4c7400161b90437432076360c1f99970f54f"; - sha256 = "0qbl4v66a3mvqai29q2y60zf2b5lj32mh9gyn44gfp0w2bsb10yj"; + sha256 = "02pqaaahra4wbv325264qh5i17mxwicmjx9nm33nw2dpmfmg9xhr"; }; buildInputs = [ pkgconfig libusb ]; @@ -23,7 +25,7 @@ stdenv.mkDerivation { description = "Tools for Allwinner A10 devices"; homepage = http://linux-sunxi.org/; license = licenses.gpl2Plus; - platforms = platforms.unix; + platforms = platforms.linux; maintainers = with maintainers; [ elitak ]; }; } diff --git a/pkgs/development/tools/xqilla/default.nix b/pkgs/development/tools/xqilla/default.nix new file mode 100644 index 00000000000..77bf313e83d --- /dev/null +++ b/pkgs/development/tools/xqilla/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, xercesc }: + +stdenv.mkDerivation rec { + name = "xqilla-${version}"; + version = "2.3.3"; + + src = fetchurl { + url = "mirror://sourceforge/xqilla/XQilla-${version}.tar.gz"; + sha256 = "1mjgcyar3qyizpnb0h9lxaj6p9yq4vj09qd8qan1bwv6z6sbjxlg"; + }; + + configureFlags = [ "--with-xerces=${xercesc}" ]; + + meta = with stdenv.lib; { + description = "XQilla is an XQuery and XPath 2 library and command line utility written in C++, implemented on top of the Xerces-C library."; + license = licenses.asl20 ; + maintainers = with maintainers; [ obadz ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/games/liberal-crime-squad/default.nix b/pkgs/games/liberal-crime-squad/default.nix new file mode 100644 index 00000000000..434f72d62f0 --- /dev/null +++ b/pkgs/games/liberal-crime-squad/default.nix @@ -0,0 +1,28 @@ +{ fetchFromGitHub, stdenv, ncurses, autoconf, automake , SDL2, SDL2_mixer }: + +stdenv.mkDerivation rec { + version = "2016-03-03"; + name = "liberal-crime-squad-${version}"; + src = fetchFromGitHub { + owner = "Kamal-Sadek"; + repo = "Liberal-Crime-Squad"; + rev = "39c5f167e902e33cb37b152215d67f71b9ae8269"; + sha256 = "18s2w2570fd79y9rb7ikxls1qw29l1lbwk9n2dxxqjslbzrbvv31"; + }; + + preConfigure = '' + ./bootstrap + ''; + + buildInputs = [ ncurses autoconf automake SDL2 SDL2_mixer ]; + + meta = with stdenv.lib; { + description = "A humorous politically themed ncurses game"; + longDescription = '' + Welcome to Liberal Crime Squad! The Conservatives have taken the Executive, Legislative, and Judicial branches of government. Over time, the Liberal laws of this nation will erode and turn the country into a BACKWOODS YET CORPORATE NIGHTMARE. To prevent this from happening, the Liberal Crime Squad was established. The mood of the country is shifting, and we need to turn things around. Go out on the streets and indoctrinate Conservative automatons. That is, let them see their True Liberal Nature. Then arm them and send them forth to Stop Evil. + ''; + homepage = https://github.com/Kamal-Sadek/Liberal-Crime-Squad; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/games/openmw/default.nix b/pkgs/games/openmw/default.nix index 29e13aa810a..2fdd2c7e56c 100644 --- a/pkgs/games/openmw/default.nix +++ b/pkgs/games/openmw/default.nix @@ -1,34 +1,38 @@ -{ stdenv, fetchFromGitHub, qt4, ogre, mygui, bullet, ffmpeg, boost, cmake, SDL2, unshield, openal, pkgconfig }: - -stdenv.mkDerivation rec { - version = "0.36.1"; - name = "openmw-${version}"; - - mygui_ = mygui.overrideDerivation (oldAttrs: { - name = "mygui-3.2.1"; - version = "3.2.1"; +{ stdenv, fetchFromGitHub, qt4, openscenegraph, mygui, bullet, ffmpeg, boost, cmake, SDL2, unshield, openal +, giflib, pkgconfig }: +let + openscenegraph_ = openscenegraph.override { + inherit ffmpeg giflib; + withApps = false; + }; + openscenegraph__ = openscenegraph_.overrideDerivation (self: { src = fetchFromGitHub { - owner = "MyGUI"; - repo = "mygui"; - rev = "MyGUI3.2.1"; - sha256 = "1ic4xwyh2akfpqirrbyvicc56yy2r268rzgcgx16yqb4nrldy2p0"; + owner = "OpenMW"; + repo = "osg"; + rev = "a72f43de6e1e4a8191643acb26c3e7138f833798"; + sha256 = "04x2pjfrdz1kaj4i34zpzrmkk018jnr84rb6z646cz5fin3dapyh"; }; }); +in stdenv.mkDerivation rec { + version = "0.38.0"; + name = "openmw-${version}"; src = fetchFromGitHub { owner = "OpenMW"; repo = "openmw"; rev = name; - sha256 = "0yfiilad6izmingc0nhvkvn6dpybps04xwj4k1h13ymip6awm80x"; + sha256 = "1ssz1pa59a34v5vxiccqyvij5s38kl662p7xbc59y90y668f78y6"; }; - buildInputs = [ cmake boost ffmpeg qt4 bullet mygui_ ogre SDL2 unshield openal pkgconfig ]; + enableParallelBuilding = true; - meta = { + buildInputs = [ cmake boost ffmpeg qt4 bullet mygui openscenegraph__ SDL2 unshield openal pkgconfig ]; + + meta = with stdenv.lib; { description = "An unofficial open source engine reimplementation of the game Morrowind"; homepage = "http://openmw.org"; - license = stdenv.lib.licenses.gpl3; + license = licenses.gpl3; + platforms = platforms.linux; }; - } diff --git a/pkgs/games/openttd/default.nix b/pkgs/games/openttd/default.nix index 7411c161146..03f94afd94f 100644 --- a/pkgs/games/openttd/default.nix +++ b/pkgs/games/openttd/default.nix @@ -21,11 +21,11 @@ let in stdenv.mkDerivation rec { name = "openttd-${version}"; - version = "1.5.3"; + version = "1.6.0"; src = fetchurl { url = "http://binaries.openttd.org/releases/${version}/${name}-source.tar.xz"; - sha256 = "0qxss5rxzac94z5k16xv84ll0n163sphs88xkgv3z7vwramagffq"; + sha256 = "1cjf9gz7d0sn7893wv9d00q724sxv3d81bgb0c5f5ppz2ssyc4jc"; }; nativeBuildInputs = [ pkgconfig ]; @@ -34,7 +34,6 @@ stdenv.mkDerivation rec { prefixKey = "--prefix-dir="; configureFlags = [ - "--with-zlib=${zlib.static}/lib/libz.a" "--without-liblzo2" ]; diff --git a/pkgs/games/stuntrally/default.nix b/pkgs/games/stuntrally/default.nix index 2c41a11ab57..436ac958f34 100644 --- a/pkgs/games/stuntrally/default.nix +++ b/pkgs/games/stuntrally/default.nix @@ -3,18 +3,18 @@ stdenv.mkDerivation rec { name = "stunt-rally-${version}"; - version = "2.5"; + version = "2.6"; src = fetchgit { url = git://github.com/stuntrally/stuntrally.git; rev = "refs/tags/${version}"; - sha256 = "1lsh7z7sjfwpdybg6vbwqx1zxsgbfp2n60n7xl33v225p32qh1qf"; + sha256 = "0rrfmldl6m7igni1n4rv2i0s2q5j1ik8dh05ydkaqrpcky96bdr8"; }; tracks = fetchgit { url = git://github.com/stuntrally/tracks.git; rev = "refs/tags/${version}"; - sha256 = "1614j6q1d2f69l58kkqndndvf6svcghhw8pzc2s1plf6k87h67mg"; + sha256 = "186qqyr1nrabfzsgy7b4sjgm38mgd875f4c7qwkm8k2bl7zjkrm2"; }; preConfigure = '' @@ -34,5 +34,7 @@ stdenv.mkDerivation rec { license = licenses.gpl3Plus; maintainers = with maintainers; [ pSub ]; platforms = platforms.linux; + # Build failure + broken = true; }; } diff --git a/pkgs/misc/emulators/mgba/default.nix b/pkgs/misc/emulators/mgba/default.nix index ea11e3a33e2..07470fa54ab 100644 --- a/pkgs/misc/emulators/mgba/default.nix +++ b/pkgs/misc/emulators/mgba/default.nix @@ -1,22 +1,23 @@ -{ stdenv, fetchurl, pkgconfig, cmake, ffmpeg, imagemagick, libzip, SDL2 +{ stdenv, fetchgit +, pkgconfig, cmake, libzip, epoxy, ffmpeg, imagemagick, SDL2 , qtbase, qtmultimedia }: stdenv.mkDerivation rec { - name = "mgba-${meta.version}"; - src = fetchurl { - url = "https://github.com/mgba-emu/mgba/archive/${meta.version}.tar.gz"; - sha256 = "0z52w4dkgjjviwi6w13gls082zclljgx1sa8nlyb1xcnnrn6980l"; + name = "mgba-git-${version}"; + version = "20160325"; + + src = fetchgit { + url = "https://github.com/mgba-emu/mgba.git"; + rev = "be2641c77b4a438e0db487bc82b43bc27a26e0c2"; + sha256 = "0ygsmmp24w14x5fm2qz2v68p59bs2ravn22axrg2ipn5skkgrvxz"; }; buildInputs = [ - pkgconfig cmake ffmpeg imagemagick libzip SDL2 + pkgconfig cmake libzip epoxy ffmpeg imagemagick SDL2 qtbase qtmultimedia ]; - enableParallelBuilding = true; - meta = with stdenv.lib; { - version = "0.3.1"; homepage = https://mgba.io; description = "A modern GBA emulator with a focus on accuracy"; longDescription = '' @@ -38,4 +39,3 @@ stdenv.mkDerivation rec { maintainers = with maintainers; [ MP2E AndersonTorres ]; }; } - diff --git a/pkgs/misc/emulators/wine/base.nix b/pkgs/misc/emulators/wine/base.nix index e031627a032..503e8da6845 100644 --- a/pkgs/misc/emulators/wine/base.nix +++ b/pkgs/misc/emulators/wine/base.nix @@ -1,5 +1,6 @@ { stdenv, lib, pkgArches, name, version, src, monos, geckos, platforms, + pkgconfig, fontforge, makeWrapper, flex, bison, pulseaudioSupport, buildScript ? null, configureFlags ? "" }: @@ -14,24 +15,27 @@ stdenv.mkDerivation ((lib.optionalAttrs (! isNull buildScript) { }) // rec { inherit name src configureFlags; - buildInputs = toBuildInputs pkgArches (pkgs: with pkgs; [ - pkgconfig alsaLib lcms2 fontforge libxml2 libxslt makeWrapper flex bison - ]); + nativeBuildInputs = [ + pkgconfig fontforge makeWrapper flex bison + ]; - nativeBuildInputs = toBuildInputs pkgArches (pkgs: (with pkgs; [ + buildInputs = toBuildInputs pkgArches (pkgs: (with pkgs; [ freetype fontconfig mesa mesa_noglu.osmesa libdrm libpng libjpeg openssl gnutls cups ncurses + alsaLib libxml2 libxslt lcms2 gettext dbus mpg123 openal ]) ++ lib.optional pulseaudioSupport pkgs.libpulseaudio ++ (with pkgs.xorg; [ - xlibsWrapper libXi libXcursor libXinerama libXrandr libXrender libXxf86vm libXcomposite + libXi libXcursor libXinerama libXrandr libXrender libXxf86vm libXcomposite libXext ])); # Wine locates a lot of libraries dynamically through dlopen(). Add # them to the RPATH so that the user doesn't have to set them in # LD_LIBRARY_PATH. - NIX_LDFLAGS = map - (path: "-rpath ${path}/lib") - ([ stdenv.cc.cc ] ++ nativeBuildInputs); + NIX_LDFLAGS = map (path: "-rpath " + path) ( + map (x: "${x}/lib") ([ stdenv.cc.cc ] ++ buildInputs) + # libpulsecommon.so is linked but not found otherwise + ++ lib.optionals pulseaudioSupport (map (x: "${x}/lib/pulseaudio") (toBuildInputs pkgArches (pkgs: [ pkgs.libpulseaudio ]))) + ); # Don't shrink the ELF RPATHs in order to keep the extra RPATH # elements specified above. diff --git a/pkgs/misc/emulators/wine/packages.nix b/pkgs/misc/emulators/wine/packages.nix index 69275a74b35..206deb01b8b 100644 --- a/pkgs/misc/emulators/wine/packages.nix +++ b/pkgs/misc/emulators/wine/packages.nix @@ -1,32 +1,36 @@ -{ system, stdenv, stdenv_32bit, lib, pkgs, pkgsi686Linux, callPackage, +{ system, stdenv, stdenv_32bit, lib, pkgs, pkgsi686Linux, callPackage, callPackage_i686, + overrideCC, wrapCCMulti, gcc49, pulseaudioSupport, wineRelease ? "stable" }: let src = lib.getAttr wineRelease (callPackage ./sources.nix {}); in with src; { - wine32 = import ./base.nix { + wine32 = callPackage_i686 ./base.nix { name = "wine-${version}"; inherit src version pulseaudioSupport; - inherit (pkgsi686Linux) lib stdenv; pkgArches = [ pkgsi686Linux ]; geckos = [ gecko32 ]; monos = [ mono ]; platforms = [ "i686-linux" "x86_64-linux" ]; }; - wine64 = import ./base.nix { + wine64 = callPackage ./base.nix { name = "wine64-${version}"; - inherit src version pulseaudioSupport lib stdenv; + inherit src version pulseaudioSupport; + # FIXME: drop this when GCC is updated to >5.3. + # Corresponding bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69140 + stdenv = overrideCC stdenv gcc49; pkgArches = [ pkgs ]; geckos = [ gecko64 ]; monos = [ mono ]; - configureFlags = "--enable-win64"; + configureFlags = [ "--enable-win64" ]; platforms = [ "x86_64-linux" ]; }; - wineWow = import ./base.nix { + wineWow = callPackage ./base.nix { name = "wine-wow-${version}"; - inherit src version pulseaudioSupport lib; - stdenv = stdenv_32bit; + inherit src version pulseaudioSupport; + # FIXME: see above. + stdenv = overrideCC stdenv_32bit (wrapCCMulti gcc49); pkgArches = [ pkgs pkgsi686Linux ]; geckos = [ gecko32 gecko64 ]; monos = [ mono ]; diff --git a/pkgs/misc/emulators/wine/sources.nix b/pkgs/misc/emulators/wine/sources.nix index cd877403d3a..9ad09ed5dfe 100644 --- a/pkgs/misc/emulators/wine/sources.nix +++ b/pkgs/misc/emulators/wine/sources.nix @@ -30,9 +30,9 @@ in rec { }; unstable = fetchurl rec { - version = "1.9.4"; + version = "1.9.7"; url = "mirror://sourceforge/wine/wine-${version}.tar.bz2"; - sha256 = "1f5v1gns0xs512a6ym785cn29j8dxdbnxnvkg8v0p1w0p6vfmhbm"; + sha256 = "1v47i0pxqcixnh06x23kzp2dbz1cf3d2sric0bw6xqh54ph5yw29"; inherit (stable) mono; gecko32 = fetchurl rec { version = "2.44"; @@ -48,7 +48,7 @@ in rec { staging = fetchFromGitHub rec { inherit (unstable) version; - sha256 = "0xjxbip0ab1lqgxrww08082ndsb8b5wjfwlf51zlr3f59c9bx9y5"; + sha256 = "1h5hwd07qyx0qw5whf6lcp7v57kqd6mrrcvwwg1bydir68b0zp16"; owner = "wine-compholio"; repo = "wine-staging"; rev = "v${version}"; diff --git a/pkgs/os-specific/linux/cgmanager/default.nix b/pkgs/os-specific/linux/cgmanager/default.nix index 1c79fddeca9..2260ac08b63 100644 --- a/pkgs/os-specific/linux/cgmanager/default.nix +++ b/pkgs/os-specific/linux/cgmanager/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, pkgconfig, libnih, dbus, pam }: stdenv.mkDerivation rec { - name = "cgmanager-0.39"; + name = "cgmanager-0.41"; src = fetchurl { url = "https://linuxcontainers.org/downloads/cgmanager/${name}.tar.gz"; - sha256 = "0ysv8klnybp727aad2k0aa67s05q027pzfl7rmm0map4nizlhrcy"; + sha256 = "0n5l4g78ifvyfnj8x9xz06mqn4y8j73sgg4xsbak7hiszfz5bc99"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/os-specific/linux/conspy/default.nix b/pkgs/os-specific/linux/conspy/default.nix index 3c209c6253d..32905b8ec39 100644 --- a/pkgs/os-specific/linux/conspy/default.nix +++ b/pkgs/os-specific/linux/conspy/default.nix @@ -3,11 +3,11 @@ let s = # Generated upstream information rec { baseName="conspy"; - version="1.13"; + version="1.14"; name="${baseName}-${version}"; - hash="059sag372n09y1ddb1i0sx013kzkbr8a9pjqk03kyijn8h1z5hl2"; - url="mirror://sourceforge/project/conspy/conspy-1.13-1/conspy-1.13.tar.gz"; - sha256="059sag372n09y1ddb1i0sx013kzkbr8a9pjqk03kyijn8h1z5hl2"; + hash="069k26xpzsvrn3197ix5yd294zvz03zi2xqj4fip6rlsw74habsf"; + url="mirror://sourceforge/project/conspy/conspy-1.14-1/conspy-1.14.tar.gz"; + sha256="069k26xpzsvrn3197ix5yd294zvz03zi2xqj4fip6rlsw74habsf"; }; buildInputs = [ autoconf automake ncurses diff --git a/pkgs/os-specific/linux/criu/default.nix b/pkgs/os-specific/linux/criu/default.nix index 6afaf36bd80..0d06864df1e 100644 --- a/pkgs/os-specific/linux/criu/default.nix +++ b/pkgs/os-specific/linux/criu/default.nix @@ -1,27 +1,29 @@ { stdenv, fetchurl, protobuf, protobufc, asciidoc -, xmlto, utillinux, docbook_xsl, libpaper }: +, xmlto, utillinux, docbook_xsl, libpaper, libnl, libcap, pkgconfig +, python }: stdenv.mkDerivation rec { name = "criu-${version}"; - version = "1.3-rc2"; + version = "2.0"; src = fetchurl { url = "http://download.openvz.org/criu/${name}.tar.bz2"; - sha256 = "1h9ii91aq8cja22j3520vg3qb3y9h6c064s4115s2ldylm8jmi0s"; + sha256 = "1zqqshslcf503lqip89azp1zz0i8kb7v19b3dyp52izpak62c1z8"; }; enableParallelBuilding = true; - buildInputs = [ protobuf protobufc asciidoc xmlto libpaper ]; + buildInputs = [ protobuf protobufc asciidoc xmlto libpaper libnl libcap pkgconfig python ]; patchPhase = '' chmod +w ./scripts/gen-offsets.sh substituteInPlace ./scripts/gen-offsets.sh --replace hexdump ${utillinux}/bin/hexdump substituteInPlace ./Documentation/Makefile --replace "2>/dev/null" "" substituteInPlace ./Documentation/Makefile --replace "--skip-validation" "--skip-validation -x ${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl" - substituteInPlace ./Makefile --replace "-Werror" "" + substituteInPlace ./criu/Makefile --replace "-I/usr/include/libnl3" "-I${libnl}/include/libnl3" + substituteInPlace ./Makefile --replace "tar-name := $(shell git tag -l v$(CRIU_VERSION))" "tar-name = 2.0" # --replace "-Werror" "" + ln -sf ${protobuf}/include/google/protobuf/descriptor.proto ./images/google/protobuf/descriptor.proto ''; - configurePhase = "make config PREFIX=$out"; buildPhase = "make PREFIX=$out"; installPhase = '' diff --git a/pkgs/os-specific/linux/fanctl/default.nix b/pkgs/os-specific/linux/fanctl/default.nix index 61e100f4c9b..cb188b56c06 100644 --- a/pkgs/os-specific/linux/fanctl/default.nix +++ b/pkgs/os-specific/linux/fanctl/default.nix @@ -1,41 +1,39 @@ -{ stdenv, lib, fetchbzr, makeWrapper, bridge-utils, iproute, dnsmasq, iptables, kmod, utillinux }: +{ stdenv, lib, fetchurl, gnugrep, glibc, gawk, coreutils, bridge-utils, iproute +, dnsmasq, iptables, kmod, utillinux, gnused }: -let stateDir = "/var/lib/fan-networking"; -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "fanctl-${version}"; - version = "0.3.0"; + version = "0.9.0"; - src = fetchbzr { - url = "https://code.launchpad.net/~ubuntu-branches/ubuntu/vivid/ubuntu-fan/vivid-updates"; - rev = 2; - sha256 = "1vcr2rg99g7sx1zynhiggjzc9y9z591i4535hbm21dysy3cisp7i"; + src = fetchurl { + url = "https://launchpad.net/ubuntu/+archive/primary/+files/ubuntu-fan_${version}.tar.xz"; + sha256 = "03dv5zzb8fkl9kkbhznxm48d6j3fjms74fn0s1zip2gz53l1s14n"; }; - buildInputs = [ makeWrapper ]; + # The Ubuntu package creates a number of state/config directories upon + # installation, and so the fanctl script expects those directories to exist + # before being used. Instead, we patch the fanctl script to gracefully handle + # the fact that the directories might not exist yet. + # Also, when dnsmasq is given --conf-file="", it will still attempt to read + # /etc/dnsmasq.conf; if that file does not exist, dnsmasq subsequently fails, + # so we'll use /dev/null, which actually works as intended. + patches = [ ./robustness.patch ]; - # When given --conf-file="", dnsmasq still attempts to read /etc/dnsmasq.conf; - # if that files does not exist, dnsmasq subsequently fails, - # so we'll use /dev/null. - # - # Also, make sure the state directory before starting dnsmasq. - buildPhase = '' + postPatch = '' substituteInPlace fanctl \ - --replace '--conf-file= ' \ - '--conf-file=/dev/null ' \ - --replace '/var/lib/misc' \ - '${stateDir}' - - sed -i '/dnsmasq -u/i \ - mkdir -p ${stateDir}' fanctl + --replace '@PATH@' \ + '${lib.makeSearchPath "bin" [ + gnugrep gawk coreutils bridge-utils iproute dnsmasq + iptables kmod utillinux gnused + glibc # needed for getent + ]}' ''; installPhase = '' mkdir -p $out/bin $out/man/man8 cp fanctl.8 $out/man/man8 cp fanctl $out/bin - wrapProgram $out/bin/fanctl --prefix PATH : \ - ${lib.makeSearchPath "bin" [ bridge-utils iproute dnsmasq iptables kmod utillinux ]}; ''; meta = with lib; { diff --git a/pkgs/os-specific/linux/fanctl/robustness.patch b/pkgs/os-specific/linux/fanctl/robustness.patch new file mode 100644 index 00000000000..7a70a784e3e --- /dev/null +++ b/pkgs/os-specific/linux/fanctl/robustness.patch @@ -0,0 +1,85 @@ +diff --git a/fanctl b/fanctl +index 4338b75..84cf987 100755 +--- a/fanctl ++++ b/fanctl +@@ -5,6 +5,8 @@ + # fanctl down 15 10.1.0.1 + # + ++export PATH="@PATH@" ++ + usage() + { + echo "Usage: $0 [...]" 1>&2 +@@ -23,8 +25,8 @@ run() + "$@" + } + +-state_dir="/run/ubuntu-fan" +-lconfig_dir="/var/lib/ubuntu-fan/config" ++state_dir="/run/fan-networking" ++lconfig_dir="/var/lib/fan-networking/config" + + __ip_split() + { +@@ -931,12 +933,12 @@ dhcp_reconfigure() + --strict-order \ + --bind-interfaces \ + --pid-file="$state_dir/dnsmasq-$C_bridge_state.pid" \ +- --conf-file= \ ++ --conf-file=/dev/null \ + $dhcp_flags \ + --dhcp-no-override \ + --except-interface=lo \ + --interface="$C_bridge" \ +- --dhcp-leasefile=/var/lib/misc/dnsmasq."$C_bridge_state".leases \ ++ --dhcp-leasefile=/var/lib/fan-networking/dnsmasq."$C_bridge_state".leases \ + --dhcp-authoritative \ + || $fail "$C_bridge: failed to start dnsmasq" + +@@ -1559,21 +1561,23 @@ cmd_config() + + case "$cmd" in + list|ls) +- ls -1 "$lconfig_dir" | \ +- while read config +- do +- case "$config" in +- *.conf) ;; +- *) continue ;; +- esac ++ if [ -d $lconfig_dir ]; then ++ ls -1 "$lconfig_dir" | \ ++ while read config ++ do ++ case "$config" in ++ *.conf) ;; ++ *) continue ;; ++ esac + +- config=$( echo "$config" | sed \ +- -e 's/.conf$//' \ +- -e 's/--/ /g' \ +- -e 's@-@/@g' +- ) +- echo "$config" +- done ++ config=$( echo "$config" | sed \ ++ -e 's/.conf$//' \ ++ -e 's/--/ /g' \ ++ -e 's@-@/@g' ++ ) ++ echo "$config" ++ done ++ fi + ;; + show) + cmd_decode_init +@@ -1588,6 +1592,7 @@ cmd_config() + [ -f "$uconfig" ] && cat "$uconfig" + ;; + set) ++ mkdir -p $lconfig_dir || fail "could not create config directory ($lconfig_dir)" + cmd_decode_init + if ! cmd_decode_config "config set" "$@"; then + fail "invalid config" diff --git a/pkgs/os-specific/linux/firejail/default.nix b/pkgs/os-specific/linux/firejail/default.nix index 57820f92cc4..dac0eb0d0f5 100644 --- a/pkgs/os-specific/linux/firejail/default.nix +++ b/pkgs/os-specific/linux/firejail/default.nix @@ -3,11 +3,11 @@ let s = # Generated upstream information rec { baseName="firejail"; - version="0.9.38"; + version="0.9.40"; name="${baseName}-${version}"; - hash="0j0zvff9rwjwxcxddfhgzimjgmr99kd04nl40dllkrv3apv5ag4i"; - url="mirror://sourceforge/project/firejail/firejail/firejail-0.9.38-rc1.tar.bz2"; - sha256="0j0zvff9rwjwxcxddfhgzimjgmr99kd04nl40dllkrv3apv5ag4i"; + hash="1vr0z694wibjkcpmyg7lz68r53z857c8hsb02cqxi4lfkkcmzgh2"; + url="mirror://sourceforge/project/firejail/firejail/firejail-0.9.40-rc1.tar.bz2"; + sha256="1vr0z694wibjkcpmyg7lz68r53z857c8hsb02cqxi4lfkkcmzgh2"; }; buildInputs = [ which diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix index dc0b061af14..0c61aee9713 100644 --- a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix +++ b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix @@ -2,14 +2,14 @@ let - rev = "b7bbd3d1683e9f3bb11ef86b952adee71e83862f"; + rev = "1.20160315"; in stdenv.mkDerivation { name = "raspberrypi-firmware-${rev}"; src = fetchurl { url = "https://github.com/raspberrypi/firmware/archive/${rev}.tar.gz"; - sha256 = "16wpwa1y3imd3la477b3rfbfypssvlh0zjdag3hgkm33aysizijp"; + sha256 = "0a7ycv01s0kk84szsh51hy2mjjil1dzdk0g7k83h50d5nya090fl"; }; installPhase = '' @@ -24,9 +24,11 @@ in stdenv.mkDerivation { done ''; - meta = { + meta = with stdenv.lib; { description = "Firmware for the Raspberry Pi board"; homepage = https://github.com/raspberrypi; - license = stdenv.lib.licenses.unfree; + license = licenses.unfree; + platforms = [ "armv6l-linux" "armv7l-linux" ]; + maintainers = with maintainers; [ viric tavyc ]; }; } diff --git a/pkgs/os-specific/linux/iproute/1000-ubuntu-poc-fan-driver.patch b/pkgs/os-specific/linux/iproute/1000-ubuntu-poc-fan-driver.patch new file mode 100644 index 00000000000..ca91b816000 --- /dev/null +++ b/pkgs/os-specific/linux/iproute/1000-ubuntu-poc-fan-driver.patch @@ -0,0 +1,65 @@ +Description: POC fan driver support + POC Fan driver support +Author: Jay Vosburgh + +Index: iproute2-4.1.1/include/linux/if_tunnel.h +=================================================================== +--- iproute2-4.1.1.orig/include/linux/if_tunnel.h ++++ iproute2-4.1.1/include/linux/if_tunnel.h +@@ -57,6 +57,9 @@ enum { + IFLA_IPTUN_ENCAP_FLAGS, + IFLA_IPTUN_ENCAP_SPORT, + IFLA_IPTUN_ENCAP_DPORT, ++ ++ IFLA_IPTUN_FAN_UNDERLAY = 32, ++ + __IFLA_IPTUN_MAX, + }; + #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) +Index: iproute2-4.1.1/ip/link_iptnl.c +=================================================================== +--- iproute2-4.1.1.orig/ip/link_iptnl.c ++++ iproute2-4.1.1/ip/link_iptnl.c +@@ -66,6 +66,7 @@ static int iptunnel_parse_opt(struct lin + __u32 link = 0; + __u32 laddr = 0; + __u32 raddr = 0; ++ __u32 underlay = 0; + __u8 ttl = 0; + __u8 tos = 0; + __u8 pmtudisc = 1; +@@ -174,6 +175,9 @@ get_failed: + raddr = get_addr32(*argv); + else + raddr = 0; ++ } else if (strcmp(*argv, "underlay") == 0) { ++ NEXT_ARG(); ++ underlay = get_addr32(*argv); + } else if (strcmp(*argv, "local") == 0) { + NEXT_ARG(); + if (strcmp(*argv, "any")) +@@ -318,6 +322,9 @@ get_failed: + } + } + ++ if (underlay) ++ addattr32(n, 1024, IFLA_IPTUN_FAN_UNDERLAY, underlay); ++ + return 0; + } + +@@ -349,6 +356,14 @@ static void iptunnel_print_opt(struct li + + fprintf(f, "local %s ", local); + ++ if (tb[IFLA_IPTUN_FAN_UNDERLAY]) { ++ unsigned addr = rta_getattr_u32(tb[IFLA_IPTUN_FAN_UNDERLAY]); ++ ++ if (addr) ++ fprintf(f, "underlay %s ", ++ format_host(AF_INET, 4, &addr, s1, sizeof(s1))); ++ } ++ + if (tb[IFLA_IPTUN_LINK] && rta_getattr_u32(tb[IFLA_IPTUN_LINK])) { + unsigned link = rta_getattr_u32(tb[IFLA_IPTUN_LINK]); + const char *n = if_indextoname(link, s2); diff --git a/pkgs/os-specific/linux/iproute/ubuntu-fan.patch b/pkgs/os-specific/linux/iproute/1001-ubuntu-poc-fan-driver-v3.patch similarity index 59% rename from pkgs/os-specific/linux/iproute/ubuntu-fan.patch rename to pkgs/os-specific/linux/iproute/1001-ubuntu-poc-fan-driver-v3.patch index e55425c2ce6..a940b341ea0 100644 --- a/pkgs/os-specific/linux/iproute/ubuntu-fan.patch +++ b/pkgs/os-specific/linux/iproute/1001-ubuntu-poc-fan-driver-v3.patch @@ -1,27 +1,19 @@ -This provides support for Ubuntu's Fan Networking [1]. - -These patches were pulled from: -https://code.launchpad.net/~ubuntu-branches/ubuntu/vivid/iproute2/vivid-proposed - -See revisions 18 and 19. - -[1] https://wiki.ubuntu.com/FanNetworking - -diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h -index 102ce7a..7b8f0e5 100644 ---- a/include/linux/if_tunnel.h -+++ b/include/linux/if_tunnel.h -@@ -57,6 +57,9 @@ enum { - IFLA_IPTUN_ENCAP_FLAGS, - IFLA_IPTUN_ENCAP_SPORT, +Description: Fan driver support v3 + Fan driver support v3 +Author: Jay Vosburgh +Index: iproute2-4.1.1/include/linux/if_tunnel.h +=================================================================== +--- iproute2-4.1.1.orig/include/linux/if_tunnel.h ++++ iproute2-4.1.1/include/linux/if_tunnel.h +@@ -59,6 +59,7 @@ enum { IFLA_IPTUN_ENCAP_DPORT, -+ -+ IFLA_IPTUN_FAN_UNDERLAY = 32, + + IFLA_IPTUN_FAN_UNDERLAY = 32, + IFLA_IPTUN_FAN_MAP = 33, + __IFLA_IPTUN_MAX, }; - #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) -@@ -131,4 +134,20 @@ enum { +@@ -134,4 +135,20 @@ enum { }; #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1) @@ -42,10 +34,10 @@ index 102ce7a..7b8f0e5 100644 +}; + #endif /* _IF_TUNNEL_H_ */ -diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c -index 9d6bc98..ec3f05d 100644 ---- a/ip/link_iptnl.c -+++ b/ip/link_iptnl.c +Index: iproute2-4.1.1/ip/link_iptnl.c +=================================================================== +--- iproute2-4.1.1.orig/ip/link_iptnl.c ++++ iproute2-4.1.1/ip/link_iptnl.c @@ -49,6 +49,42 @@ static void usage(int sit) print_usage(stderr, sit); exit(-1); @@ -89,21 +81,10 @@ index 9d6bc98..ec3f05d 100644 static int iptunnel_parse_opt(struct link_util *lu, int argc, char **argv, struct nlmsghdr *n) -@@ -66,6 +102,7 @@ static int iptunnel_parse_opt(struct link_util *lu, int argc, char **argv, - __u32 link = 0; - __u32 laddr = 0; - __u32 raddr = 0; -+ __u32 underlay = 0; - __u8 ttl = 0; - __u8 tos = 0; - __u8 pmtudisc = 1; -@@ -174,6 +211,13 @@ get_failed: - raddr = get_addr32(*argv); - else - raddr = 0; -+ } else if (strcmp(*argv, "underlay") == 0) { -+ NEXT_ARG(); -+ underlay = get_addr32(*argv); +@@ -178,6 +214,10 @@ get_failed: + } else if (strcmp(*argv, "underlay") == 0) { + NEXT_ARG(); + underlay = get_addr32(*argv); + } else if (strcmp(*argv, "fan-map") == 0) { + NEXT_ARG(); + if (fan_parse_map(&argc, &argv, n)) @@ -111,13 +92,7 @@ index 9d6bc98..ec3f05d 100644 } else if (strcmp(*argv, "local") == 0) { NEXT_ARG(); if (strcmp(*argv, "any")) -@@ -318,9 +362,32 @@ get_failed: - } - } - -+ if (underlay) -+ addattr32(n, 1024, IFLA_IPTUN_FAN_UNDERLAY, underlay); -+ +@@ -328,6 +368,28 @@ get_failed: return 0; } @@ -127,16 +102,18 @@ index 9d6bc98..ec3f05d 100644 + struct ip_tunnel_fan_map *m; + struct rtattr *i; + int rem; ++ int p; + + fprintf(f, "fan-map "); + + rem = RTA_PAYLOAD(attr); + for (i = RTA_DATA(attr); RTA_OK(i, rem); i = RTA_NEXT(i, rem)) { ++ p = RTA_PAYLOAD(i); + m = RTA_DATA(i); + fprintf(f, "%s/%d:%s/%d ", -+ rt_addr_n2a(AF_INET, sizeof(m->overlay), &m->overlay, b1, INET_ADDRSTRLEN), ++ rt_addr_n2a(AF_INET, p, &m->overlay, b1, INET_ADDRSTRLEN), + m->overlay_prefix, -+ rt_addr_n2a(AF_INET, sizeof(m->overlay), &m->underlay, b2, INET_ADDRSTRLEN), ++ rt_addr_n2a(AF_INET, p, &m->underlay, b2, INET_ADDRSTRLEN), + m->underlay_prefix); + } +} @@ -144,18 +121,10 @@ index 9d6bc98..ec3f05d 100644 static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) { char s1[1024]; -@@ -349,6 +416,17 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[ +@@ -364,6 +426,9 @@ static void iptunnel_print_opt(struct li + format_host(AF_INET, 4, &addr, s1, sizeof(s1))); + } - fprintf(f, "local %s ", local); - -+ if (tb[IFLA_IPTUN_FAN_UNDERLAY]) { -+ unsigned addr = rta_getattr_u32(tb[IFLA_IPTUN_FAN_UNDERLAY]); -+ -+ if (addr) -+ fprintf(f, "underlay %s ", -+ format_host(AF_INET, 4, &addr, s1, sizeof(s1))); -+ } -+ + if (tb[IFLA_IPTUN_FAN_MAP]) + fan_print_map(f, tb[IFLA_IPTUN_FAN_MAP]); + diff --git a/pkgs/os-specific/linux/iproute/1002-ubuntu-poc-fan-driver-vxlan.patch b/pkgs/os-specific/linux/iproute/1002-ubuntu-poc-fan-driver-vxlan.patch new file mode 100644 index 00000000000..2ddc2840bdd --- /dev/null +++ b/pkgs/os-specific/linux/iproute/1002-ubuntu-poc-fan-driver-vxlan.patch @@ -0,0 +1,177 @@ +Description: Fan driver support VXLAN (p4) + Fan driver setup support for vxlan interfaces. + +Index: iproute2-4.3.0/include/linux/if_link.h +=================================================================== +--- iproute2-4.3.0.orig/include/linux/if_link.h ++++ iproute2-4.3.0/include/linux/if_link.h +@@ -392,6 +392,7 @@ enum { + IFLA_VXLAN_GBP, + IFLA_VXLAN_REMCSUM_NOPARTIAL, + IFLA_VXLAN_COLLECT_METADATA, ++ IFLA_VXLAN_FAN_MAP = 33, + __IFLA_VXLAN_MAX + }; + #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) +Index: iproute2-4.3.0/include/linux/if_tunnel.h +=================================================================== +--- iproute2-4.3.0.orig/include/linux/if_tunnel.h ++++ iproute2-4.3.0/include/linux/if_tunnel.h +@@ -145,7 +145,7 @@ enum { + + #define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) + +-struct ip_tunnel_fan_map { ++struct ifla_fan_map { + __be32 underlay; + __be32 overlay; + __u16 underlay_prefix; +Index: iproute2-4.3.0/ip/iplink_vxlan.c +=================================================================== +--- iproute2-4.3.0.orig/ip/iplink_vxlan.c ++++ iproute2-4.3.0/ip/iplink_vxlan.c +@@ -15,7 +15,10 @@ + #include + #include + #include ++#include + #include ++#include ++#include + + #include "rt_names.h" + #include "utils.h" +@@ -43,6 +46,45 @@ static void explain(void) + print_explain(stderr); + } + ++static int fan_parse_map(int *argcp, char ***argvp, struct nlmsghdr *n) ++{ ++ inet_prefix underlay, overlay; ++ struct ifla_fan_map map; ++ struct rtattr *nest; ++ char **argv = *argvp; ++ int argc = *argcp; ++ ++ nest = addattr_nest(n, 1024, IFLA_VXLAN_FAN_MAP); ++ while (argc > 0) { ++ char *colon = strchr(*argv, ':'); ++ ++ if (!colon) { ++ PREV_ARG(); ++ break; ++ } ++ *colon = '\0'; ++ ++ if (get_prefix(&overlay, *argv, AF_INET)) ++ invarg("invalid fan-map overlay", *argv); ++ if (get_prefix(&underlay, colon + 1, AF_INET)) ++ invarg("invalid fan-map underlay", colon + 1); ++ ++ memcpy(&map.underlay, underlay.data, 4); ++ map.underlay_prefix = underlay.bitlen; ++ memcpy(&map.overlay, overlay.data, 4); ++ map.overlay_prefix = overlay.bitlen; ++ ++ argc--, argv++; ++ ++ addattr_l(n, 1024, IFLA_FAN_MAPPING, &map, sizeof(map)); ++ } ++ addattr_nest_end(n, nest); ++ ++ *argcp = argc; ++ *argvp = argv; ++ return 0; ++} ++ + static int vxlan_parse_opt(struct link_util *lu, int argc, char **argv, + struct nlmsghdr *n) + { +@@ -201,6 +243,10 @@ static int vxlan_parse_opt(struct link_u + udp6zerocsumrx = 0; + } else if (!matches(*argv, "gbp")) { + gbp = 1; ++ } else if (!matches(*argv, "fan-map")) { ++ NEXT_ARG(); ++ if (fan_parse_map(&argc, &argv, n)) ++ invarg("invalid fan-map", *argv); + } else if (matches(*argv, "help") == 0) { + explain(); + return -1; +@@ -279,6 +325,28 @@ static int vxlan_parse_opt(struct link_u + return 0; + } + ++static void fan_print_map(FILE *f, struct rtattr *attr) ++{ ++ char b1[INET_ADDRSTRLEN], b2[INET_ADDRSTRLEN]; ++ struct ifla_fan_map *m; ++ struct rtattr *i; ++ int rem; ++ int p; ++ ++ fprintf(f, "fan-map "); ++ ++ rem = RTA_PAYLOAD(attr); ++ for (i = RTA_DATA(attr); RTA_OK(i, rem); i = RTA_NEXT(i, rem)) { ++ p = RTA_PAYLOAD(i); ++ m = RTA_DATA(i); ++ fprintf(f, "%s/%d:%s/%d ", ++ rt_addr_n2a(AF_INET, p, &m->overlay, b1, INET_ADDRSTRLEN), ++ m->overlay_prefix, ++ rt_addr_n2a(AF_INET, p, &m->underlay, b2, INET_ADDRSTRLEN), ++ m->underlay_prefix); ++ } ++} ++ + static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) + { + __u32 vni; +@@ -321,6 +389,9 @@ static void vxlan_print_opt(struct link_ + } + } + ++ if (tb[IFLA_VXLAN_FAN_MAP]) ++ fan_print_map(f, tb[IFLA_VXLAN_FAN_MAP]); ++ + if (tb[IFLA_VXLAN_LOCAL]) { + __be32 addr = rta_getattr_u32(tb[IFLA_VXLAN_LOCAL]); + if (addr) +Index: iproute2-4.3.0/ip/link_iptnl.c +=================================================================== +--- iproute2-4.3.0.orig/ip/link_iptnl.c ++++ iproute2-4.3.0/ip/link_iptnl.c +@@ -49,10 +49,11 @@ static void usage(int sit) + print_usage(stderr, sit); + exit(-1); + } ++ + static int fan_parse_map(int *argcp, char ***argvp, struct nlmsghdr *n) + { + inet_prefix underlay, overlay; +- struct ip_tunnel_fan_map map; ++ struct ifla_fan_map map; + struct rtattr *nest; + char **argv = *argvp; + int argc = *argcp; +@@ -61,8 +62,10 @@ static int fan_parse_map(int *argcp, cha + while (argc > 0) { + char *colon = strchr(*argv, ':'); + +- if (!colon) ++ if (!colon) { ++ PREV_ARG(); + break; ++ } + *colon = '\0'; + + if (get_prefix(&overlay, *argv, AF_INET)) +@@ -371,7 +374,7 @@ get_failed: + static void fan_print_map(FILE *f, struct rtattr *attr) + { + char b1[INET_ADDRSTRLEN], b2[INET_ADDRSTRLEN]; +- struct ip_tunnel_fan_map *m; ++ struct ifla_fan_map *m; + struct rtattr *i; + int rem; + int p; diff --git a/pkgs/os-specific/linux/iproute/default.nix b/pkgs/os-specific/linux/iproute/default.nix index 891d39d24dd..5f328bd90c8 100644 --- a/pkgs/os-specific/linux/iproute/default.nix +++ b/pkgs/os-specific/linux/iproute/default.nix @@ -10,7 +10,13 @@ stdenv.mkDerivation rec { sha256 = "159988vv3fd78bzhisfl1dl4dd7km3vjzs2d8899a0vcvn412fzh"; }; - patches = lib.optionals enableFan [ ./ubuntu-fan.patch ]; + patches = lib.optionals enableFan [ + # These patches were pulled from: + # https://launchpad.net/ubuntu/xenial/+source/iproute2 + ./1000-ubuntu-poc-fan-driver.patch + ./1001-ubuntu-poc-fan-driver-v3.patch + ./1002-ubuntu-poc-fan-driver-vxlan.patch + ]; preConfigure = '' patchShebangs ./configure diff --git a/pkgs/os-specific/linux/iptables/1.6.nix b/pkgs/os-specific/linux/iptables/1.6.nix new file mode 100644 index 00000000000..88821a15d73 --- /dev/null +++ b/pkgs/os-specific/linux/iptables/1.6.nix @@ -0,0 +1,33 @@ +{stdenv, fetchurl, bison, flex, libnetfilter_conntrack, libnftnl, libmnl}: + +stdenv.mkDerivation rec { + name = "iptables-${version}"; + version = "1.6.0"; + + src = fetchurl { + url = "http://www.netfilter.org/projects/iptables/files/${name}.tar.bz2"; + sha256 = "0q0w1x4aijid8wj7dg1ny9fqwll483f1sqw7kvkskd8q1c52mdsb"; + }; + + nativeBuildInputs = [bison flex]; + + buildInputs = [libnetfilter_conntrack libnftnl libmnl]; + + preConfigure = '' + export NIX_LDFLAGS="$NIX_LDFLAGS -lmnl -lnftnl" + ''; + + configureFlags = '' + --enable-devel + --enable-shared + ''; + + meta = { + description = "A program to configure the Linux IP packet filtering ruleset"; + homepage = http://www.netfilter.org/projects/iptables/index.html; + platforms = stdenv.lib.platforms.linux; + downloadPage = "http://www.netfilter.org/projects/iptables/files/"; + updateWalker = true; + inherit version; + }; +} diff --git a/pkgs/os-specific/linux/kernel/linux-testing.nix b/pkgs/os-specific/linux/kernel/linux-testing.nix index e3edaa43b8c..ea9eb4d551b 100644 --- a/pkgs/os-specific/linux/kernel/linux-testing.nix +++ b/pkgs/os-specific/linux/kernel/linux-testing.nix @@ -1,13 +1,13 @@ { stdenv, fetchurl, perl, buildLinux, ... } @ args: import ./generic.nix (args // rec { - version = "4.6-rc2"; - modDirVersion = "4.6.0-rc2"; + version = "4.6-rc3"; + modDirVersion = "4.6.0-rc3"; extraMeta.branch = "4.6"; src = fetchurl { url = "mirror://kernel/linux/kernel/v4.x/testing/linux-${version}.tar.xz"; - sha256 = "0zihk9s1rkgmn0ghiz9xkg0w88w524af5mmad45rbxhm5751nxcr"; + sha256 = "1vhvhbldk5pvwxhdndyzvyqy5mscpnlz09sfyh2c9rk6wc1hc8xv"; }; features.iwlwifi = true; diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index a8fb1598af7..707ebb544bf 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -71,14 +71,9 @@ rec { patch = ./mips-ext3-n32.patch; }; - ubuntu_fan = + ubuntu_fan_4_4 = { name = "ubuntu-fan"; - patch = ./ubuntu-fan-3.patch; - }; - - ubuntu_fan_4 = - { name = "ubuntu-fan"; - patch = ./ubuntu-fan-4.patch; + patch = ./ubuntu-fan-4.4.patch; }; ubuntu_unprivileged_overlayfs = @@ -159,4 +154,8 @@ rec { { name = "mfd_fix_dependency"; patch = ./chromiumos-patches/mfd-fix-dependency.patch; }; + qat_common_Makefile = + { name = "qat_common_Makefile"; + patch = ./qat_common_Makefile.patch; + }; } diff --git a/pkgs/os-specific/linux/kernel/qat_common_Makefile.patch b/pkgs/os-specific/linux/kernel/qat_common_Makefile.patch new file mode 100644 index 00000000000..2d4476a7fe5 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/qat_common_Makefile.patch @@ -0,0 +1,10 @@ +--- a/drivers/crypto/qat/qat_common/Makefile ++++ b/drivers/crypto/qat/qat_common/Makefile +@@ -2,6 +2,7 @@ + $(obj)/qat_rsapubkey-asn1.h + $(obj)/qat_rsaprivkey-asn1.o: $(obj)/qat_rsaprivkey-asn1.c \ + $(obj)/qat_rsaprivkey-asn1.h ++$(obj)/qat_asym_algs.o: $(obj)/qat_rsaprivkey-asn1.h $(obj)/qat_rsapubkey-asn1.h + + clean-files += qat_rsapubkey-asn1.c qat_rsapubkey-asn1.h + clean-files += qat_rsaprivkey-asn1.c qat_rsapvivkey-asn1.h diff --git a/pkgs/os-specific/linux/kernel/ubuntu-fan-3.patch b/pkgs/os-specific/linux/kernel/ubuntu-fan-3.patch deleted file mode 100644 index c80950d0614..00000000000 --- a/pkgs/os-specific/linux/kernel/ubuntu-fan-3.patch +++ /dev/null @@ -1,616 +0,0 @@ -From f3c956096902669c3529cb01d40deb0c759ed94f Mon Sep 17 00:00:00 2001 -From: Jay Vosburgh -Date: Wed, 1 Apr 2015 16:11:09 -0700 -Subject: [PATCH] UBUNTU: SAUCE: fan: Proof of concept implementation (v2) - -Modification to ipip tunnel driver to accept a new netlink option, -IFLA_IPTUN_FAN_UNDERLAY, which provides a /16 network prefix and enables -TX side destination address remapping for traffic entering the tunnel -(to be encapsulated). - -For an overlay (inner) address Y.A.B.C, the transformation is F.G.A.B, -where "F" and "G" are the first two octets of the underlay network (the -network portion of a /16), "A" and "B" are the low order two octets of the -underlay network host (the host portion of a /16), and "Y" is a configured -first octet of the overlay network. - -E.g., underlay host 10.88.3.4 with an overlay of 99 would host overlay -subnet 99.3.4.0/24. An overlay network datagram from 99.3.4.5 to 99.6.7.8 -would be directed to underlay host 10.88.6.7, which hosts overlay network -99.6.7.0/24. - -Includes net.fan.version sysctl as a sentinel for availability of the -fan functionality. - -NOTE: this requires an updated iproute2 to facilitate configuration of -the fan. - -BugLink: http://bugs.launchpad.net/bugs/1439706 -Signed-off-by: Jay Vosburgh -[apw@canonical.com: move IFLA_IPTUN_FAN_UNDERLAY up to avoid clashing - with future feature additions.] -Signed-off-by: Andy Whitcroft ---- - include/net/ip_tunnels.h | 6 +++ - include/uapi/linux/if_tunnel.h | 4 ++ - net/ipv4/ipip.c | 112 +++++++++++++++++++++++++++++++++++++++-- - 3 files changed, 117 insertions(+), 5 deletions(-) - -diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h -index 25a59eb..d7eada2 100644 ---- a/include/net/ip_tunnels.h -+++ b/include/net/ip_tunnels.h -@@ -51,6 +51,11 @@ struct ip_tunnel_dst { - __be32 saddr; - }; - -+/* Underlay address prefix for ipip fan mode */ -+struct ip_tunnel_fan { -+ u32 underlay; -+}; -+ - struct ip_tunnel { - struct ip_tunnel __rcu *next; - struct hlist_node hash_node; -@@ -82,6 +87,7 @@ struct ip_tunnel { - #endif - struct ip_tunnel_prl_entry __rcu *prl; /* potential router list */ - unsigned int prl_count; /* # of entries in PRL */ -+ struct ip_tunnel_fan fan; - int ip_tnl_net_id; - struct gro_cells gro_cells; - }; -diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h -index bd3cc11..8f7d269 100644 ---- a/include/uapi/linux/if_tunnel.h -+++ b/include/uapi/linux/if_tunnel.h -@@ -57,6 +57,10 @@ enum { - IFLA_IPTUN_ENCAP_FLAGS, - IFLA_IPTUN_ENCAP_SPORT, - IFLA_IPTUN_ENCAP_DPORT, -+ -+ __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ -+ IFLA_IPTUN_FAN_UNDERLAY=32, -+ - __IFLA_IPTUN_MAX, - }; - #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) -diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c -index 40403114..e3c27cd 100644 ---- a/net/ipv4/ipip.c -+++ b/net/ipv4/ipip.c -@@ -209,13 +209,38 @@ drop: - } - - /* -+ * Determine fan tunnel endpoint to send packet to, based on the inner IP -+ * address. For an overlay (inner) address Y.A.B.C, the transformation is -+ * F.G.A.B, where "F" and "G" are the first two octets of the underlay -+ * network (the network portion of a /16), "A" and "B" are the low order -+ * two octets of the underlay network host (the host portion of a /16), -+ * and "Y" is a configured first octet of the overlay network. -+ * -+ * E.g., underlay host 10.88.3.4 with an overlay of 99 would host overlay -+ * subnet 99.3.4.0/24. An overlay network datagram from 99.3.4.5 to -+ * 99.6.7.8, would be directed to underlay host 10.88.6.7, which hosts -+ * overlay network 99.6.7.0/24. -+ */ -+static void ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) -+{ -+ u32 daddr; -+ -+ *iph = tunnel->parms.iph; -+ -+ daddr = ntohl(ip_hdr(skb)->daddr); -+ iph->daddr = htonl((tunnel->fan.underlay & 0xffff0000) | -+ ((daddr >> 8) & 0x0000ffff)); -+} -+ -+/* - * This function assumes it is being called from dev_queue_xmit() - * and that skb is filled properly by that function. - */ - static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) - { - struct ip_tunnel *tunnel = netdev_priv(dev); -- const struct iphdr *tiph = &tunnel->parms.iph; -+ const struct iphdr *tiph; -+ struct iphdr fiph; - - if (unlikely(skb->protocol != htons(ETH_P_IP))) - goto tx_error; -@@ -224,6 +249,13 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) - if (IS_ERR(skb)) - goto out; - -+ if (tunnel->fan.underlay) { -+ ipip_build_fan_iphdr(tunnel, skb, &fiph); -+ tiph = &fiph; -+ } else { -+ tiph = &tunnel->parms.iph; -+ } -+ - skb_set_inner_ipproto(skb, IPPROTO_IPIP); - - ip_tunnel_xmit(skb, dev, tiph, tiph->protocol); -@@ -377,21 +409,44 @@ static bool ipip_netlink_encap_parms(struct nlattr *data[], - return ret; - } - -+static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, -+ struct ip_tunnel_parm *parms) -+{ -+ u32 net = t->fan.underlay; -+ -+ if (!data[IFLA_IPTUN_FAN_UNDERLAY]) -+ goto err_check; -+ -+ net = ntohl(nla_get_be32(data[IFLA_IPTUN_FAN_UNDERLAY])) & 0xffff0000; -+ -+err_check: -+ if (parms->iph.daddr && net) -+ return -EINVAL; -+ -+ t->fan.underlay = net; -+ -+ return 0; -+} -+ - static int ipip_newlink(struct net *src_net, struct net_device *dev, - struct nlattr *tb[], struct nlattr *data[]) - { - struct ip_tunnel_parm p; - struct ip_tunnel_encap ipencap; -+ struct ip_tunnel *t = netdev_priv(dev); -+ int err; - - if (ipip_netlink_encap_parms(data, &ipencap)) { -- struct ip_tunnel *t = netdev_priv(dev); -- int err = ip_tunnel_encap_setup(t, &ipencap); -+ err = ip_tunnel_encap_setup(t, &ipencap); - - if (err < 0) - return err; - } - - ipip_netlink_parms(data, &p); -+ err = ipip_netlink_fan(data, t, &p); -+ if (err < 0) -+ return err; - return ip_tunnel_newlink(dev, tb, &p); - } - -@@ -400,16 +455,20 @@ static int ipip_changelink(struct net_device *dev, struct nlattr *tb[], - { - struct ip_tunnel_parm p; - struct ip_tunnel_encap ipencap; -+ struct ip_tunnel *t = netdev_priv(dev); -+ int err; - - if (ipip_netlink_encap_parms(data, &ipencap)) { -- struct ip_tunnel *t = netdev_priv(dev); -- int err = ip_tunnel_encap_setup(t, &ipencap); -+ err = ip_tunnel_encap_setup(t, &ipencap); - - if (err < 0) - return err; - } - - ipip_netlink_parms(data, &p); -+ err = ipip_netlink_fan(data, t, &p); -+ if (err < 0) -+ return err; - - if (((dev->flags & IFF_POINTOPOINT) && !p.iph.daddr) || - (!(dev->flags & IFF_POINTOPOINT) && p.iph.daddr)) -@@ -441,6 +500,8 @@ static size_t ipip_get_size(const struct net_device *dev) - nla_total_size(2) + - /* IFLA_IPTUN_ENCAP_DPORT */ - nla_total_size(2) + -+ /* IFLA_IPTUN_FAN_UNDERLAY */ -+ nla_total_size(4) + - 0; - } - -@@ -468,6 +529,11 @@ static int ipip_fill_info(struct sk_buff *skb, const struct net_device *dev) - tunnel->encap.flags)) - goto nla_put_failure; - -+ if (tunnel->fan.underlay) -+ if (nla_put_be32(skb, IFLA_IPTUN_FAN_UNDERLAY, -+ htonl(tunnel->fan.underlay))) -+ goto nla_put_failure; -+ - return 0; - - nla_put_failure: -@@ -485,6 +551,9 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { - [IFLA_IPTUN_ENCAP_FLAGS] = { .type = NLA_U16 }, - [IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 }, - [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, -+ -+ [__IFLA_IPTUN_VENDOR_BREAK ... IFLA_IPTUN_MAX] = { .type = NLA_BINARY }, -+ [IFLA_IPTUN_FAN_UNDERLAY] = { .type = NLA_U32 }, - }; - - static struct rtnl_link_ops ipip_link_ops __read_mostly = { -@@ -524,6 +593,23 @@ static struct pernet_operations ipip_net_ops = { - .size = sizeof(struct ip_tunnel_net), - }; - -+#ifdef CONFIG_SYSCTL -+static struct ctl_table_header *ipip_fan_header; -+static unsigned int ipip_fan_version = 1; -+ -+static struct ctl_table ipip_fan_sysctls[] = { -+ { -+ .procname = "version", -+ .data = &ipip_fan_version, -+ .maxlen = sizeof(ipip_fan_version), -+ .mode = 0444, -+ .proc_handler = proc_dointvec, -+ }, -+ {}, -+}; -+ -+#endif /* CONFIG_SYSCTL */ -+ - static int __init ipip_init(void) - { - int err; -@@ -542,9 +628,22 @@ static int __init ipip_init(void) - if (err < 0) - goto rtnl_link_failed; - -+#ifdef CONFIG_SYSCTL -+ ipip_fan_header = register_net_sysctl(&init_net, "net/fan", -+ ipip_fan_sysctls); -+ if (!ipip_fan_header) { -+ err = -ENOMEM; -+ goto sysctl_failed; -+ } -+#endif /* CONFIG_SYSCTL */ -+ - out: - return err; - -+#ifdef CONFIG_SYSCTL -+sysctl_failed: -+ rtnl_link_unregister(&ipip_link_ops); -+#endif /* CONFIG_SYSCTL */ - rtnl_link_failed: - xfrm4_tunnel_deregister(&ipip_handler, AF_INET); - xfrm_tunnel_failed: -@@ -554,6 +653,9 @@ xfrm_tunnel_failed: - - static void __exit ipip_fini(void) - { -+#ifdef CONFIG_SYSCTL -+ unregister_net_sysctl_table(ipip_fan_header); -+#endif /* CONFIG_SYSCTL */ - rtnl_link_unregister(&ipip_link_ops); - if (xfrm4_tunnel_deregister(&ipip_handler, AF_INET)) - pr_info("%s: can't deregister tunnel\n", __func__); --- -2.4.1 - -From 4ea8011656dfdd76e7a2391bdad47c06f85a9d02 Mon Sep 17 00:00:00 2001 -From: Andy Whitcroft -Date: Tue, 21 Jul 2015 16:52:10 +0100 -Subject: [PATCH] UBUNTU: SAUCE: fan: tunnel multiple mapping mode (v3) - -Switch to a single tunnel for all mappings, this removes the limitations -on how many mappings each tunnel can handle, and therefore how many Fan -slices each local address may hold. - -NOTE: This introduces a new kernel netlink interface which needs updated -iproute2 support. - -BugLink: http://bugs.launchpad.net/bugs/1470091 -Signed-off-by: Jay Vosburgh -Signed-off-by: Andy Whitcroft -Acked-by: Tim Gardner -Acked-by: Brad Figg -Signed-off-by: Brad Figg ---- - include/net/ip_tunnels.h | 14 ++++- - include/uapi/linux/if_tunnel.h | 20 ++++++- - net/ipv4/ip_tunnel.c | 7 ++- - net/ipv4/ipip.c | 120 +++++++++++++++++++++++++++++++++-------- - 4 files changed, 133 insertions(+), 28 deletions(-) - -diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h -index d7eada2..2f7bc8c 100644 ---- a/include/net/ip_tunnels.h -+++ b/include/net/ip_tunnels.h -@@ -51,9 +51,18 @@ struct ip_tunnel_dst { - __be32 saddr; - }; - --/* Underlay address prefix for ipip fan mode */ -+/* A fan overlay /8 (250.0.0.0/8, for example) maps to exactly one /16 -+ * underlay (10.88.0.0/16, for example). Multiple local addresses within -+ * the /16 may be used, but a particular overlay may not span -+ * multiple underlay subnets. -+ * -+ * We store one underlay, indexed by the overlay's high order octet. -+ */ -+#define FAN_OVERLAY_CNT 256 -+ - struct ip_tunnel_fan { -- u32 underlay; -+/* u32 __rcu *map;*/ -+ u32 map[FAN_OVERLAY_CNT]; - }; - - struct ip_tunnel { -@@ -104,6 +113,7 @@ struct ip_tunnel { - #define TUNNEL_OAM __cpu_to_be16(0x0200) - #define TUNNEL_CRIT_OPT __cpu_to_be16(0x0400) - #define TUNNEL_OPTIONS_PRESENT __cpu_to_be16(0x0800) -+#define TUNNEL_FAN __cpu_to_be16(0x4000) - - struct tnl_ptk_info { - __be16 flags; -diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h -index 8f7d269..9625934 100644 ---- a/include/uapi/linux/if_tunnel.h -+++ b/include/uapi/linux/if_tunnel.h -@@ -58,8 +58,8 @@ enum { - IFLA_IPTUN_ENCAP_SPORT, - IFLA_IPTUN_ENCAP_DPORT, - -- __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ -- IFLA_IPTUN_FAN_UNDERLAY=32, -+ __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ -+ IFLA_IPTUN_FAN_MAP = 33, - - __IFLA_IPTUN_MAX, - }; -@@ -135,4 +135,20 @@ enum { - }; - - #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1) -+ -+enum { -+ IFLA_FAN_UNSPEC, -+ IFLA_FAN_MAPPING, -+ __IFLA_FAN_MAX, -+}; -+ -+#define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) -+ -+struct ip_tunnel_fan_map { -+ __be32 underlay; -+ __be32 overlay; -+ __u16 underlay_prefix; -+ __u16 overlay_prefix; -+}; -+ - #endif /* _UAPI_IF_TUNNEL_H_ */ -diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c -index d3e4479..60bd10f 100644 ---- a/net/ipv4/ip_tunnel.c -+++ b/net/ipv4/ip_tunnel.c -@@ -1078,6 +1078,11 @@ out: - } - EXPORT_SYMBOL_GPL(ip_tunnel_newlink); - -+static int ip_tunnel_is_fan(struct ip_tunnel *tunnel) -+{ -+ return tunnel->parms.i_flags & TUNNEL_FAN; -+} -+ - int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], - struct ip_tunnel_parm *p) - { -@@ -1087,7 +1092,7 @@ int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], - struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); - - if (dev == itn->fb_tunnel_dev) -- return -EINVAL; -+ return ip_tunnel_is_fan(tunnel) ? 0 : -EINVAL; - - t = ip_tunnel_find(itn, p, dev->type); - -diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c -index e3c27cd..d6ebc66 100644 ---- a/net/ipv4/ipip.c -+++ b/net/ipv4/ipip.c -@@ -107,6 +107,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -208,6 +209,11 @@ drop: - return 0; - } - -+static int ipip_tunnel_is_fan(struct ip_tunnel *tunnel) -+{ -+ return tunnel->parms.i_flags & TUNNEL_FAN; -+} -+ - /* - * Determine fan tunnel endpoint to send packet to, based on the inner IP - * address. For an overlay (inner) address Y.A.B.C, the transformation is -@@ -221,15 +227,20 @@ drop: - * 99.6.7.8, would be directed to underlay host 10.88.6.7, which hosts - * overlay network 99.6.7.0/24. - */ --static void ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) -+static int ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) - { -- u32 daddr; -- -- *iph = tunnel->parms.iph; -+ unsigned int overlay; -+ u32 daddr, underlay; - - daddr = ntohl(ip_hdr(skb)->daddr); -- iph->daddr = htonl((tunnel->fan.underlay & 0xffff0000) | -- ((daddr >> 8) & 0x0000ffff)); -+ overlay = daddr >> 24; -+ underlay = tunnel->fan.map[overlay]; -+ if (!underlay) -+ return -EINVAL; -+ -+ *iph = tunnel->parms.iph; -+ iph->daddr = htonl(underlay | ((daddr >> 8) & 0x0000ffff)); -+ return 0; - } - - /* -@@ -249,8 +260,9 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) - if (IS_ERR(skb)) - goto out; - -- if (tunnel->fan.underlay) { -- ipip_build_fan_iphdr(tunnel, skb, &fiph); -+ if (ipip_tunnel_is_fan(tunnel)) { -+ if (ipip_build_fan_iphdr(tunnel, skb, &fiph)) -+ goto tx_error; - tiph = &fiph; - } else { - tiph = &tunnel->parms.iph; -@@ -409,21 +421,65 @@ static bool ipip_netlink_encap_parms(struct nlattr *data[], - return ret; - } - -+static void ipip_fan_free_map(struct ip_tunnel *t) -+{ -+ memset(&t->fan.map, 0, sizeof(t->fan.map)); -+} -+ -+static int ipip_fan_set_map(struct ip_tunnel *t, struct ip_tunnel_fan_map *map) -+{ -+ u32 overlay, overlay_mask, underlay, underlay_mask; -+ -+ if ((map->underlay_prefix && map->underlay_prefix != 16) || -+ (map->overlay_prefix && map->overlay_prefix != 8)) -+ return -EINVAL; -+ -+ overlay = ntohl(map->overlay); -+ overlay_mask = ntohl(inet_make_mask(map->overlay_prefix)); -+ -+ underlay = ntohl(map->underlay); -+ underlay_mask = ntohl(inet_make_mask(map->underlay_prefix)); -+ -+ if ((overlay & ~overlay_mask) || (underlay & ~underlay_mask)) -+ return -EINVAL; -+ -+ if (!(overlay & overlay_mask) && (underlay & underlay_mask)) -+ return -EINVAL; -+ -+ t->parms.i_flags |= TUNNEL_FAN; -+ -+ /* Special case: overlay 0 and underlay 0 clears all mappings */ -+ if (!overlay && !underlay) { -+ ipip_fan_free_map(t); -+ return 0; -+ } -+ -+ overlay >>= (32 - map->overlay_prefix); -+ t->fan.map[overlay] = underlay; -+ -+ return 0; -+} -+ -+ - static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, - struct ip_tunnel_parm *parms) - { -- u32 net = t->fan.underlay; -- -- if (!data[IFLA_IPTUN_FAN_UNDERLAY]) -- goto err_check; -+ struct ip_tunnel_fan_map *map; -+ struct nlattr *attr; -+ int rem, rv; - -- net = ntohl(nla_get_be32(data[IFLA_IPTUN_FAN_UNDERLAY])) & 0xffff0000; -+ if (!data[IFLA_IPTUN_FAN_MAP]) -+ return 0; - --err_check: -- if (parms->iph.daddr && net) -+ if (parms->iph.daddr) - return -EINVAL; - -- t->fan.underlay = net; -+ nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { -+ map = nla_data(attr); -+ rv = ipip_fan_set_map(t, map); -+ if (rv) -+ return rv; -+ } - - return 0; - } -@@ -500,8 +556,8 @@ static size_t ipip_get_size(const struct net_device *dev) - nla_total_size(2) + - /* IFLA_IPTUN_ENCAP_DPORT */ - nla_total_size(2) + -- /* IFLA_IPTUN_FAN_UNDERLAY */ -- nla_total_size(4) + -+ /* IFLA_IPTUN_FAN_MAP */ -+ nla_total_size(sizeof(struct ip_tunnel_fan_map)) * 256 + - 0; - } - -@@ -529,10 +585,28 @@ static int ipip_fill_info(struct sk_buff *skb, const struct net_device *dev) - tunnel->encap.flags)) - goto nla_put_failure; - -- if (tunnel->fan.underlay) -- if (nla_put_be32(skb, IFLA_IPTUN_FAN_UNDERLAY, -- htonl(tunnel->fan.underlay))) -+ if (tunnel->parms.i_flags & TUNNEL_FAN) { -+ struct nlattr *fan_nest; -+ int i; -+ -+ fan_nest = nla_nest_start(skb, IFLA_IPTUN_FAN_MAP); -+ if (!fan_nest) - goto nla_put_failure; -+ for (i = 0; i < 256; i++) { -+ if (tunnel->fan.map[i]) { -+ struct ip_tunnel_fan_map map; -+ -+ map.underlay = htonl(tunnel->fan.map[i]); -+ map.underlay_prefix = 16; -+ map.overlay = htonl(i << 24); -+ map.overlay_prefix = 8; -+ if (nla_put(skb, IFLA_FAN_MAPPING, -+ sizeof(map), &map)) -+ goto nla_put_failure; -+ } -+ } -+ nla_nest_end(skb, fan_nest); -+ } - - return 0; - -@@ -553,7 +627,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { - [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, - - [__IFLA_IPTUN_VENDOR_BREAK ... IFLA_IPTUN_MAX] = { .type = NLA_BINARY }, -- [IFLA_IPTUN_FAN_UNDERLAY] = { .type = NLA_U32 }, -+ [IFLA_IPTUN_FAN_MAP] = { .type = NLA_NESTED }, - }; - - static struct rtnl_link_ops ipip_link_ops __read_mostly = { -@@ -595,7 +669,7 @@ static struct pernet_operations ipip_net_ops = { - - #ifdef CONFIG_SYSCTL - static struct ctl_table_header *ipip_fan_header; --static unsigned int ipip_fan_version = 1; -+static unsigned int ipip_fan_version = 3; - - static struct ctl_table ipip_fan_sysctls[] = { - { --- -2.4.1 - diff --git a/pkgs/os-specific/linux/kernel/ubuntu-fan-4.4.patch b/pkgs/os-specific/linux/kernel/ubuntu-fan-4.4.patch new file mode 100644 index 00000000000..39150ad790d --- /dev/null +++ b/pkgs/os-specific/linux/kernel/ubuntu-fan-4.4.patch @@ -0,0 +1,1240 @@ +From e64058be3b97c5bd3e034fc4ece21e306ef6f90b Mon Sep 17 00:00:00 2001 +From: Jay Vosburgh +Date: Wed, 1 Apr 2015 16:11:09 -0700 +Subject: [PATCH] UBUNTU: SAUCE: fan: tunnel multiple mapping mode (v3) + +Switch to a single tunnel for all mappings, this removes the limitations +on how many mappings each tunnel can handle, and therefore how many Fan +slices each local address may hold. + +NOTE: This introduces a new kernel netlink interface which needs updated +iproute2 support. + +BugLink: http://bugs.launchpad.net/bugs/1470091 +Signed-off-by: Jay Vosburgh +Signed-off-by: Andy Whitcroft +Signed-off-by: Tim Gardner + +Conflicts: + include/net/ip_tunnels.h +--- + include/net/ip_tunnels.h | 15 ++++ + include/uapi/linux/if_tunnel.h | 20 +++++ + net/ipv4/ip_tunnel.c | 7 +- + net/ipv4/ipip.c | 186 +++++++++++++++++++++++++++++++++++++++-- + 4 files changed, 222 insertions(+), 6 deletions(-) + +diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h +index 62a750a..47fec59 100644 +--- a/include/net/ip_tunnels.h ++++ b/include/net/ip_tunnels.h +@@ -91,6 +91,19 @@ struct ip_tunnel_dst { + }; + + struct metadata_dst; ++/* A fan overlay /8 (250.0.0.0/8, for example) maps to exactly one /16 ++ * underlay (10.88.0.0/16, for example). Multiple local addresses within ++ * the /16 may be used, but a particular overlay may not span ++ * multiple underlay subnets. ++ * ++ * We store one underlay, indexed by the overlay's high order octet. ++ */ ++#define FAN_OVERLAY_CNT 256 ++ ++struct ip_tunnel_fan { ++/* u32 __rcu *map;*/ ++ u32 map[FAN_OVERLAY_CNT]; ++}; + + struct ip_tunnel { + struct ip_tunnel __rcu *next; +@@ -123,6 +136,7 @@ struct ip_tunnel { + #endif + struct ip_tunnel_prl_entry __rcu *prl; /* potential router list */ + unsigned int prl_count; /* # of entries in PRL */ ++ struct ip_tunnel_fan fan; + int ip_tnl_net_id; + struct gro_cells gro_cells; + bool collect_md; +@@ -143,6 +157,7 @@ struct ip_tunnel { + #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000) + + #define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT) ++#define TUNNEL_FAN __cpu_to_be16(0x4000) + + struct tnl_ptk_info { + __be16 flags; +diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h +index af4de90..85a3e4b 100644 +--- a/include/uapi/linux/if_tunnel.h ++++ b/include/uapi/linux/if_tunnel.h +@@ -57,6 +57,10 @@ enum { + IFLA_IPTUN_ENCAP_FLAGS, + IFLA_IPTUN_ENCAP_SPORT, + IFLA_IPTUN_ENCAP_DPORT, ++ ++ __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ ++ IFLA_IPTUN_FAN_MAP = 33, ++ + __IFLA_IPTUN_MAX, + }; + #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) +@@ -132,4 +136,20 @@ enum { + }; + + #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1) ++ ++enum { ++ IFLA_FAN_UNSPEC, ++ IFLA_FAN_MAPPING, ++ __IFLA_FAN_MAX, ++}; ++ ++#define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) ++ ++struct ip_tunnel_fan_map { ++ __be32 underlay; ++ __be32 overlay; ++ __u16 underlay_prefix; ++ __u16 overlay_prefix; ++}; ++ + #endif /* _UAPI_IF_TUNNEL_H_ */ +diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c +index cbb51f3..7a6174b 100644 +--- a/net/ipv4/ip_tunnel.c ++++ b/net/ipv4/ip_tunnel.c +@@ -1110,6 +1110,11 @@ out: + } + EXPORT_SYMBOL_GPL(ip_tunnel_newlink); + ++static int ip_tunnel_is_fan(struct ip_tunnel *tunnel) ++{ ++ return tunnel->parms.i_flags & TUNNEL_FAN; ++} ++ + int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], + struct ip_tunnel_parm *p) + { +@@ -1119,7 +1124,7 @@ int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], + struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); + + if (dev == itn->fb_tunnel_dev) +- return -EINVAL; ++ return ip_tunnel_is_fan(tunnel) ? 0 : -EINVAL; + + t = ip_tunnel_find(itn, p, dev->type); + +diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c +index a09fb0d..56e8984 100644 +--- a/net/ipv4/ipip.c ++++ b/net/ipv4/ipip.c +@@ -107,6 +107,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -208,6 +209,40 @@ drop: + return 0; + } + ++static int ipip_tunnel_is_fan(struct ip_tunnel *tunnel) ++{ ++ return tunnel->parms.i_flags & TUNNEL_FAN; ++} ++ ++/* ++ * Determine fan tunnel endpoint to send packet to, based on the inner IP ++ * address. For an overlay (inner) address Y.A.B.C, the transformation is ++ * F.G.A.B, where "F" and "G" are the first two octets of the underlay ++ * network (the network portion of a /16), "A" and "B" are the low order ++ * two octets of the underlay network host (the host portion of a /16), ++ * and "Y" is a configured first octet of the overlay network. ++ * ++ * E.g., underlay host 10.88.3.4 with an overlay of 99 would host overlay ++ * subnet 99.3.4.0/24. An overlay network datagram from 99.3.4.5 to ++ * 99.6.7.8, would be directed to underlay host 10.88.6.7, which hosts ++ * overlay network 99.6.7.0/24. ++ */ ++static int ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) ++{ ++ unsigned int overlay; ++ u32 daddr, underlay; ++ ++ daddr = ntohl(ip_hdr(skb)->daddr); ++ overlay = daddr >> 24; ++ underlay = tunnel->fan.map[overlay]; ++ if (!underlay) ++ return -EINVAL; ++ ++ *iph = tunnel->parms.iph; ++ iph->daddr = htonl(underlay | ((daddr >> 8) & 0x0000ffff)); ++ return 0; ++} ++ + /* + * This function assumes it is being called from dev_queue_xmit() + * and that skb is filled properly by that function. +@@ -215,7 +250,8 @@ drop: + static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) + { + struct ip_tunnel *tunnel = netdev_priv(dev); +- const struct iphdr *tiph = &tunnel->parms.iph; ++ const struct iphdr *tiph; ++ struct iphdr fiph; + + if (unlikely(skb->protocol != htons(ETH_P_IP))) + goto tx_error; +@@ -224,6 +260,14 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) + if (IS_ERR(skb)) + goto out; + ++ if (ipip_tunnel_is_fan(tunnel)) { ++ if (ipip_build_fan_iphdr(tunnel, skb, &fiph)) ++ goto tx_error; ++ tiph = &fiph; ++ } else { ++ tiph = &tunnel->parms.iph; ++ } ++ + skb_set_inner_ipproto(skb, IPPROTO_IPIP); + + ip_tunnel_xmit(skb, dev, tiph, tiph->protocol); +@@ -375,21 +419,88 @@ static bool ipip_netlink_encap_parms(struct nlattr *data[], + return ret; + } + ++static void ipip_fan_free_map(struct ip_tunnel *t) ++{ ++ memset(&t->fan.map, 0, sizeof(t->fan.map)); ++} ++ ++static int ipip_fan_set_map(struct ip_tunnel *t, struct ip_tunnel_fan_map *map) ++{ ++ u32 overlay, overlay_mask, underlay, underlay_mask; ++ ++ if ((map->underlay_prefix && map->underlay_prefix != 16) || ++ (map->overlay_prefix && map->overlay_prefix != 8)) ++ return -EINVAL; ++ ++ overlay = ntohl(map->overlay); ++ overlay_mask = ntohl(inet_make_mask(map->overlay_prefix)); ++ ++ underlay = ntohl(map->underlay); ++ underlay_mask = ntohl(inet_make_mask(map->underlay_prefix)); ++ ++ if ((overlay & ~overlay_mask) || (underlay & ~underlay_mask)) ++ return -EINVAL; ++ ++ if (!(overlay & overlay_mask) && (underlay & underlay_mask)) ++ return -EINVAL; ++ ++ t->parms.i_flags |= TUNNEL_FAN; ++ ++ /* Special case: overlay 0 and underlay 0 clears all mappings */ ++ if (!overlay && !underlay) { ++ ipip_fan_free_map(t); ++ return 0; ++ } ++ ++ overlay >>= (32 - map->overlay_prefix); ++ t->fan.map[overlay] = underlay; ++ ++ return 0; ++} ++ ++ ++static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, ++ struct ip_tunnel_parm *parms) ++{ ++ struct ip_tunnel_fan_map *map; ++ struct nlattr *attr; ++ int rem, rv; ++ ++ if (!data[IFLA_IPTUN_FAN_MAP]) ++ return 0; ++ ++ if (parms->iph.daddr) ++ return -EINVAL; ++ ++ nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { ++ map = nla_data(attr); ++ rv = ipip_fan_set_map(t, map); ++ if (rv) ++ return rv; ++ } ++ ++ return 0; ++} ++ + static int ipip_newlink(struct net *src_net, struct net_device *dev, + struct nlattr *tb[], struct nlattr *data[]) + { + struct ip_tunnel_parm p; + struct ip_tunnel_encap ipencap; ++ struct ip_tunnel *t = netdev_priv(dev); ++ int err; + + if (ipip_netlink_encap_parms(data, &ipencap)) { +- struct ip_tunnel *t = netdev_priv(dev); +- int err = ip_tunnel_encap_setup(t, &ipencap); ++ err = ip_tunnel_encap_setup(t, &ipencap); + + if (err < 0) + return err; + } + + ipip_netlink_parms(data, &p); ++ err = ipip_netlink_fan(data, t, &p); ++ if (err < 0) ++ return err; + return ip_tunnel_newlink(dev, tb, &p); + } + +@@ -398,16 +509,20 @@ static int ipip_changelink(struct net_device *dev, struct nlattr *tb[], + { + struct ip_tunnel_parm p; + struct ip_tunnel_encap ipencap; ++ struct ip_tunnel *t = netdev_priv(dev); ++ int err; + + if (ipip_netlink_encap_parms(data, &ipencap)) { +- struct ip_tunnel *t = netdev_priv(dev); +- int err = ip_tunnel_encap_setup(t, &ipencap); ++ err = ip_tunnel_encap_setup(t, &ipencap); + + if (err < 0) + return err; + } + + ipip_netlink_parms(data, &p); ++ err = ipip_netlink_fan(data, t, &p); ++ if (err < 0) ++ return err; + + if (((dev->flags & IFF_POINTOPOINT) && !p.iph.daddr) || + (!(dev->flags & IFF_POINTOPOINT) && p.iph.daddr)) +@@ -439,6 +554,8 @@ static size_t ipip_get_size(const struct net_device *dev) + nla_total_size(2) + + /* IFLA_IPTUN_ENCAP_DPORT */ + nla_total_size(2) + ++ /* IFLA_IPTUN_FAN_MAP */ ++ nla_total_size(sizeof(struct ip_tunnel_fan_map)) * 256 + + 0; + } + +@@ -466,6 +583,29 @@ static int ipip_fill_info(struct sk_buff *skb, const struct net_device *dev) + tunnel->encap.flags)) + goto nla_put_failure; + ++ if (tunnel->parms.i_flags & TUNNEL_FAN) { ++ struct nlattr *fan_nest; ++ int i; ++ ++ fan_nest = nla_nest_start(skb, IFLA_IPTUN_FAN_MAP); ++ if (!fan_nest) ++ goto nla_put_failure; ++ for (i = 0; i < 256; i++) { ++ if (tunnel->fan.map[i]) { ++ struct ip_tunnel_fan_map map; ++ ++ map.underlay = htonl(tunnel->fan.map[i]); ++ map.underlay_prefix = 16; ++ map.overlay = htonl(i << 24); ++ map.overlay_prefix = 8; ++ if (nla_put(skb, IFLA_FAN_MAPPING, ++ sizeof(map), &map)) ++ goto nla_put_failure; ++ } ++ } ++ nla_nest_end(skb, fan_nest); ++ } ++ + return 0; + + nla_put_failure: +@@ -483,6 +623,9 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { + [IFLA_IPTUN_ENCAP_FLAGS] = { .type = NLA_U16 }, + [IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 }, + [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, ++ ++ [__IFLA_IPTUN_VENDOR_BREAK ... IFLA_IPTUN_MAX] = { .type = NLA_BINARY }, ++ [IFLA_IPTUN_FAN_MAP] = { .type = NLA_NESTED }, + }; + + static struct rtnl_link_ops ipip_link_ops __read_mostly = { +@@ -523,6 +666,23 @@ static struct pernet_operations ipip_net_ops = { + .size = sizeof(struct ip_tunnel_net), + }; + ++#ifdef CONFIG_SYSCTL ++static struct ctl_table_header *ipip_fan_header; ++static unsigned int ipip_fan_version = 3; ++ ++static struct ctl_table ipip_fan_sysctls[] = { ++ { ++ .procname = "version", ++ .data = &ipip_fan_version, ++ .maxlen = sizeof(ipip_fan_version), ++ .mode = 0444, ++ .proc_handler = proc_dointvec, ++ }, ++ {}, ++}; ++ ++#endif /* CONFIG_SYSCTL */ ++ + static int __init ipip_init(void) + { + int err; +@@ -541,9 +701,22 @@ static int __init ipip_init(void) + if (err < 0) + goto rtnl_link_failed; + ++#ifdef CONFIG_SYSCTL ++ ipip_fan_header = register_net_sysctl(&init_net, "net/fan", ++ ipip_fan_sysctls); ++ if (!ipip_fan_header) { ++ err = -ENOMEM; ++ goto sysctl_failed; ++ } ++#endif /* CONFIG_SYSCTL */ ++ + out: + return err; + ++#ifdef CONFIG_SYSCTL ++sysctl_failed: ++ rtnl_link_unregister(&ipip_link_ops); ++#endif /* CONFIG_SYSCTL */ + rtnl_link_failed: + xfrm4_tunnel_deregister(&ipip_handler, AF_INET); + xfrm_tunnel_failed: +@@ -553,6 +726,9 @@ xfrm_tunnel_failed: + + static void __exit ipip_fini(void) + { ++#ifdef CONFIG_SYSCTL ++ unregister_net_sysctl_table(ipip_fan_header); ++#endif /* CONFIG_SYSCTL */ + rtnl_link_unregister(&ipip_link_ops); + if (xfrm4_tunnel_deregister(&ipip_handler, AF_INET)) + pr_info("%s: can't deregister tunnel\n", __func__); +-- +2.7.4 + +From 14aba409d044e3a314c09c650e1c42de699700b8 Mon Sep 17 00:00:00 2001 +From: Jay Vosburgh +Date: Wed, 11 Nov 2015 13:04:50 +0000 +Subject: [PATCH] UBUNTU: SAUCE: fan: add VXLAN implementation + +Generify the fan mapping support and utilise that to implement fan +mappings over vxlan transport. + +Expose the existance of this functionality (when the module is loaded) +via an additional sysctl marker. + +Signed-off-by: Jay Vosburgh +[apw@canonical.com: added feature marker for fan over vxlan.] +Signed-off-by: Andy Whitcroft +--- + drivers/net/vxlan.c | 245 +++++++++++++++++++++++++++++++++++++++++ + include/net/ip_tunnels.h | 19 +++- + include/net/vxlan.h | 2 + + include/uapi/linux/if_link.h | 1 + + include/uapi/linux/if_tunnel.h | 2 +- + net/ipv4/ip_tunnel.c | 7 +- + net/ipv4/ipip.c | 242 +++++++++++++++++++++++++++++++--------- + 7 files changed, 453 insertions(+), 65 deletions(-) + +diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c +index 405a7b6..a17cfd0 100644 +--- a/drivers/net/vxlan.c ++++ b/drivers/net/vxlan.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -106,6 +107,167 @@ static inline bool vxlan_collect_metadata(struct vxlan_sock *vs) + ip_tunnel_collect_metadata(); + } + ++static struct ip_fan_map *vxlan_fan_find_map(struct vxlan_dev *vxlan, __be32 daddr) ++{ ++ struct ip_fan_map *fan_map; ++ ++ rcu_read_lock(); ++ list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { ++ if (fan_map->overlay == ++ (daddr & inet_make_mask(fan_map->overlay_prefix))) { ++ rcu_read_unlock(); ++ return fan_map; ++ } ++ } ++ rcu_read_unlock(); ++ ++ return NULL; ++} ++ ++static void vxlan_fan_flush_map(struct vxlan_dev *vxlan) ++{ ++ struct ip_fan_map *fan_map; ++ ++ list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { ++ list_del_rcu(&fan_map->list); ++ kfree_rcu(fan_map, rcu); ++ } ++} ++ ++static int vxlan_fan_del_map(struct vxlan_dev *vxlan, __be32 overlay) ++{ ++ struct ip_fan_map *fan_map; ++ ++ fan_map = vxlan_fan_find_map(vxlan, overlay); ++ if (!fan_map) ++ return -ENOENT; ++ ++ list_del_rcu(&fan_map->list); ++ kfree_rcu(fan_map, rcu); ++ ++ return 0; ++} ++ ++static int vxlan_fan_add_map(struct vxlan_dev *vxlan, struct ifla_fan_map *map) ++{ ++ __be32 overlay_mask, underlay_mask; ++ struct ip_fan_map *fan_map; ++ ++ overlay_mask = inet_make_mask(map->overlay_prefix); ++ underlay_mask = inet_make_mask(map->underlay_prefix); ++ ++ netdev_dbg(vxlan->dev, "vfam: map: o %x/%d u %x/%d om %x um %x\n", ++ map->overlay, map->overlay_prefix, ++ map->underlay, map->underlay_prefix, ++ overlay_mask, underlay_mask); ++ ++ if ((map->overlay & ~overlay_mask) || (map->underlay & ~underlay_mask)) ++ return -EINVAL; ++ ++ if (!(map->overlay & overlay_mask) && (map->underlay & underlay_mask)) ++ return -EINVAL; ++ ++ /* Special case: overlay 0 and underlay 0: flush all mappings */ ++ if (!map->overlay && !map->underlay) { ++ vxlan_fan_flush_map(vxlan); ++ return 0; ++ } ++ ++ /* Special case: overlay set and underlay 0: clear map for overlay */ ++ if (!map->underlay) ++ return vxlan_fan_del_map(vxlan, map->overlay); ++ ++ if (vxlan_fan_find_map(vxlan, map->overlay)) ++ return -EEXIST; ++ ++ fan_map = kmalloc(sizeof(*fan_map), GFP_KERNEL); ++ fan_map->underlay = map->underlay; ++ fan_map->overlay = map->overlay; ++ fan_map->underlay_prefix = map->underlay_prefix; ++ fan_map->overlay_mask = ntohl(overlay_mask); ++ fan_map->overlay_prefix = map->overlay_prefix; ++ ++ list_add_tail_rcu(&fan_map->list, &vxlan->fan.fan_maps); ++ ++ return 0; ++} ++ ++static int vxlan_parse_fan_map(struct nlattr *data[], struct vxlan_dev *vxlan) ++{ ++ struct ifla_fan_map *map; ++ struct nlattr *attr; ++ int rem, rv; ++ ++ nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { ++ map = nla_data(attr); ++ rv = vxlan_fan_add_map(vxlan, map); ++ if (rv) ++ return rv; ++ } ++ ++ return 0; ++} ++ ++static int vxlan_fan_build_rdst(struct vxlan_dev *vxlan, struct sk_buff *skb, ++ struct vxlan_rdst *fan_rdst) ++{ ++ struct ip_fan_map *f_map; ++ union vxlan_addr *va; ++ u32 daddr, underlay; ++ struct arphdr *arp; ++ void *arp_ptr; ++ struct ethhdr *eth; ++ struct iphdr *iph; ++ ++ eth = eth_hdr(skb); ++ switch (eth->h_proto) { ++ case htons(ETH_P_IP): ++ iph = ip_hdr(skb); ++ if (!iph) ++ return -EINVAL; ++ daddr = iph->daddr; ++ break; ++ case htons(ETH_P_ARP): ++ arp = arp_hdr(skb); ++ if (!arp) ++ return -EINVAL; ++ arp_ptr = arp + 1; ++ netdev_dbg(vxlan->dev, ++ "vfbr: arp sha %pM sip %pI4 tha %pM tip %pI4\n", ++ arp_ptr, arp_ptr + skb->dev->addr_len, ++ arp_ptr + skb->dev->addr_len + 4, ++ arp_ptr + (skb->dev->addr_len * 2) + 4); ++ arp_ptr += (skb->dev->addr_len * 2) + 4; ++ memcpy(&daddr, arp_ptr, 4); ++ break; ++ default: ++ netdev_dbg(vxlan->dev, "vfbr: unknown eth p %x\n", eth->h_proto); ++ return -EINVAL; ++ } ++ ++ f_map = vxlan_fan_find_map(vxlan, daddr); ++ if (!f_map) ++ return -EINVAL; ++ ++ daddr = ntohl(daddr); ++ underlay = ntohl(f_map->underlay); ++ if (!underlay) ++ return -EINVAL; ++ ++ memset(fan_rdst, 0, sizeof(*fan_rdst)); ++ va = &fan_rdst->remote_ip; ++ va->sa.sa_family = AF_INET; ++ fan_rdst->remote_vni = vxlan->default_dst.remote_vni; ++ va->sin.sin_addr.s_addr = htonl(underlay | ++ ((daddr & ~f_map->overlay_mask) >> ++ (32 - f_map->overlay_prefix - ++ (32 - f_map->underlay_prefix)))); ++ netdev_dbg(vxlan->dev, "vfbr: daddr %x ul %x dst %x\n", ++ daddr, underlay, va->sin.sin_addr.s_addr); ++ ++ return 0; ++} ++ + #if IS_ENABLED(CONFIG_IPV6) + static inline + bool vxlan_addr_equal(const union vxlan_addr *a, const union vxlan_addr *b) +@@ -2029,6 +2191,13 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev, + goto rt_tx_error; + } + ++ if (fan_has_map(&vxlan->fan) && rt->rt_flags & RTCF_LOCAL) { ++ netdev_dbg(dev, "discard fan to localhost %pI4\n", ++ &dst->sin.sin_addr.s_addr); ++ ip_rt_put(rt); ++ goto tx_free; ++ } ++ + /* Bypass encapsulation if the destination is local */ + if (rt->rt_flags & RTCF_LOCAL && + !(rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) { +@@ -2169,6 +2338,20 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev) + return NETDEV_TX_OK; + } + ++ if (fan_has_map(&vxlan->fan)) { ++ struct vxlan_rdst fan_rdst; ++ ++ netdev_dbg(vxlan->dev, "vxlan_xmit p %x d %pM\n", ++ eth->h_proto, eth->h_dest); ++ if (vxlan_fan_build_rdst(vxlan, skb, &fan_rdst)) { ++ dev->stats.tx_dropped++; ++ kfree_skb(skb); ++ return NETDEV_TX_OK; ++ } ++ vxlan_xmit_one(skb, dev, &fan_rdst, 0); ++ return NETDEV_TX_OK; ++ } ++ + f = vxlan_find_mac(vxlan, eth->h_dest); + did_rsc = false; + +@@ -2532,6 +2715,8 @@ static void vxlan_setup(struct net_device *dev) + + for (h = 0; h < FDB_HASH_SIZE; ++h) + INIT_HLIST_HEAD(&vxlan->fdb_head[h]); ++ ++ INIT_LIST_HEAD(&vxlan->fan.fan_maps); + } + + static const struct nla_policy vxlan_policy[IFLA_VXLAN_MAX + 1] = { +@@ -2881,6 +3066,7 @@ EXPORT_SYMBOL_GPL(vxlan_dev_create); + static int vxlan_newlink(struct net *src_net, struct net_device *dev, + struct nlattr *tb[], struct nlattr *data[]) + { ++ struct vxlan_dev *vxlan = netdev_priv(dev); + struct vxlan_config conf; + int err; + +@@ -2899,6 +3085,12 @@ static int vxlan_newlink(struct net *src_net, struct net_device *dev, + conf.remote_ip.sa.sa_family = AF_INET6; + } + ++ if (data[IFLA_VXLAN_FAN_MAP]) { ++ err = vxlan_parse_fan_map(data, vxlan); ++ if (err) ++ return err; ++ } ++ + if (data[IFLA_VXLAN_LOCAL]) { + conf.saddr.sin.sin_addr.s_addr = nla_get_in_addr(data[IFLA_VXLAN_LOCAL]); + conf.saddr.sa.sa_family = AF_INET; +@@ -3037,6 +3229,7 @@ static size_t vxlan_get_size(const struct net_device *dev) + nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_UDP_ZERO_CSUM6_RX */ + nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_REMCSUM_TX */ + nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_REMCSUM_RX */ ++ nla_total_size(sizeof(struct ip_fan_map) * 256) + + 0; + } + +@@ -3083,6 +3276,26 @@ static int vxlan_fill_info(struct sk_buff *skb, const struct net_device *dev) + } + } + ++ if (fan_has_map(&vxlan->fan)) { ++ struct nlattr *fan_nest; ++ struct ip_fan_map *fan_map; ++ ++ fan_nest = nla_nest_start(skb, IFLA_VXLAN_FAN_MAP); ++ if (!fan_nest) ++ goto nla_put_failure; ++ list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { ++ struct ifla_fan_map map; ++ ++ map.underlay = fan_map->underlay; ++ map.underlay_prefix = fan_map->underlay_prefix; ++ map.overlay = fan_map->overlay; ++ map.overlay_prefix = fan_map->overlay_prefix; ++ if (nla_put(skb, IFLA_FAN_MAPPING, sizeof(map), &map)) ++ goto nla_put_failure; ++ } ++ nla_nest_end(skb, fan_nest); ++ } ++ + if (nla_put_u8(skb, IFLA_VXLAN_TTL, vxlan->cfg.ttl) || + nla_put_u8(skb, IFLA_VXLAN_TOS, vxlan->cfg.tos) || + nla_put_u8(skb, IFLA_VXLAN_LEARNING, +@@ -3201,6 +3414,22 @@ static __net_init int vxlan_init_net(struct net *net) + return 0; + } + ++#ifdef CONFIG_SYSCTL ++static struct ctl_table_header *vxlan_fan_header; ++static unsigned int vxlan_fan_version = 4; ++ ++static struct ctl_table vxlan_fan_sysctls[] = { ++ { ++ .procname = "vxlan", ++ .data = &vxlan_fan_version, ++ .maxlen = sizeof(vxlan_fan_version), ++ .mode = 0444, ++ .proc_handler = proc_dointvec, ++ }, ++ {}, ++}; ++#endif /* CONFIG_SYSCTL */ ++ + static void __net_exit vxlan_exit_net(struct net *net) + { + struct vxlan_net *vn = net_generic(net, vxlan_net_id); +@@ -3256,7 +3485,20 @@ static int __init vxlan_init_module(void) + if (rc) + goto out3; + ++#ifdef CONFIG_SYSCTL ++ vxlan_fan_header = register_net_sysctl(&init_net, "net/fan", ++ vxlan_fan_sysctls); ++ if (!vxlan_fan_header) { ++ rc = -ENOMEM; ++ goto sysctl_failed; ++ } ++#endif /* CONFIG_SYSCTL */ ++ + return 0; ++#ifdef CONFIG_SYSCTL ++sysctl_failed: ++ rtnl_link_unregister(&vxlan_link_ops); ++#endif /* CONFIG_SYSCTL */ + out3: + unregister_netdevice_notifier(&vxlan_notifier_block); + out2: +@@ -3269,6 +3511,9 @@ late_initcall(vxlan_init_module); + + static void __exit vxlan_cleanup_module(void) + { ++#ifdef CONFIG_SYSCTL ++ unregister_net_sysctl_table(vxlan_fan_header); ++#endif /* CONFIG_SYSCTL */ + rtnl_link_unregister(&vxlan_link_ops); + unregister_netdevice_notifier(&vxlan_notifier_block); + destroy_workqueue(vxlan_wq); +diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h +index 47fec59..28a38e5 100644 +--- a/include/net/ip_tunnels.h ++++ b/include/net/ip_tunnels.h +@@ -100,9 +100,18 @@ struct metadata_dst; + */ + #define FAN_OVERLAY_CNT 256 + ++struct ip_fan_map { ++ __be32 underlay; ++ __be32 overlay; ++ u16 underlay_prefix; ++ u16 overlay_prefix; ++ u32 overlay_mask; ++ struct list_head list; ++ struct rcu_head rcu; ++}; ++ + struct ip_tunnel_fan { +-/* u32 __rcu *map;*/ +- u32 map[FAN_OVERLAY_CNT]; ++ struct list_head fan_maps; + }; + + struct ip_tunnel { +@@ -157,7 +166,11 @@ struct ip_tunnel { + #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000) + + #define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT) +-#define TUNNEL_FAN __cpu_to_be16(0x4000) ++ ++static inline int fan_has_map(const struct ip_tunnel_fan *fan) ++{ ++ return !list_empty(&fan->fan_maps); ++} + + struct tnl_ptk_info { + __be16 flags; +diff --git a/include/net/vxlan.h b/include/net/vxlan.h +index e289ada..542f421 100644 +--- a/include/net/vxlan.h ++++ b/include/net/vxlan.h +@@ -161,6 +161,8 @@ struct vxlan_dev { + struct vxlan_rdst default_dst; /* default destination */ + u32 flags; /* VXLAN_F_* in vxlan.h */ + ++ struct ip_tunnel_fan fan; ++ + struct timer_list age_timer; + spinlock_t hash_lock; + unsigned int addrcnt; +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h +index 5ad5737..6cde3bf 100644 +--- a/include/uapi/linux/if_link.h ++++ b/include/uapi/linux/if_link.h +@@ -443,6 +443,7 @@ enum { + IFLA_VXLAN_GBP, + IFLA_VXLAN_REMCSUM_NOPARTIAL, + IFLA_VXLAN_COLLECT_METADATA, ++ IFLA_VXLAN_FAN_MAP = 33, + __IFLA_VXLAN_MAX + }; + #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) +diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h +index 85a3e4b..d36b150 100644 +--- a/include/uapi/linux/if_tunnel.h ++++ b/include/uapi/linux/if_tunnel.h +@@ -145,7 +145,7 @@ enum { + + #define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) + +-struct ip_tunnel_fan_map { ++struct ifla_fan_map { + __be32 underlay; + __be32 overlay; + __u16 underlay_prefix; +diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c +index 7a6174b..c821bf1 100644 +--- a/net/ipv4/ip_tunnel.c ++++ b/net/ipv4/ip_tunnel.c +@@ -1110,11 +1110,6 @@ out: + } + EXPORT_SYMBOL_GPL(ip_tunnel_newlink); + +-static int ip_tunnel_is_fan(struct ip_tunnel *tunnel) +-{ +- return tunnel->parms.i_flags & TUNNEL_FAN; +-} +- + int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], + struct ip_tunnel_parm *p) + { +@@ -1124,7 +1119,7 @@ int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], + struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); + + if (dev == itn->fb_tunnel_dev) +- return ip_tunnel_is_fan(tunnel) ? 0 : -EINVAL; ++ return fan_has_map(&tunnel->fan) ? 0 : -EINVAL; + + t = ip_tunnel_find(itn, p, dev->type); + +diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c +index 56e8984..3877b0e 100644 +--- a/net/ipv4/ipip.c ++++ b/net/ipv4/ipip.c +@@ -108,6 +108,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -209,37 +210,144 @@ drop: + return 0; + } + +-static int ipip_tunnel_is_fan(struct ip_tunnel *tunnel) ++static struct ip_fan_map *ipip_fan_find_map(struct ip_tunnel *t, __be32 daddr) + { +- return tunnel->parms.i_flags & TUNNEL_FAN; ++ struct ip_fan_map *fan_map; ++ ++ rcu_read_lock(); ++ list_for_each_entry_rcu(fan_map, &t->fan.fan_maps, list) { ++ if (fan_map->overlay == ++ (daddr & inet_make_mask(fan_map->overlay_prefix))) { ++ rcu_read_unlock(); ++ return fan_map; ++ } ++ } ++ rcu_read_unlock(); ++ ++ return NULL; + } + +-/* +- * Determine fan tunnel endpoint to send packet to, based on the inner IP +- * address. For an overlay (inner) address Y.A.B.C, the transformation is +- * F.G.A.B, where "F" and "G" are the first two octets of the underlay +- * network (the network portion of a /16), "A" and "B" are the low order +- * two octets of the underlay network host (the host portion of a /16), +- * and "Y" is a configured first octet of the overlay network. ++/* Determine fan tunnel endpoint to send packet to, based on the inner IP ++ * address. ++ * ++ * Given a /8 overlay and /16 underlay, for an overlay (inner) address ++ * Y.A.B.C, the transformation is F.G.A.B, where "F" and "G" are the first ++ * two octets of the underlay network (the network portion of a /16), "A" ++ * and "B" are the low order two octets of the underlay network host (the ++ * host portion of a /16), and "Y" is a configured first octet of the ++ * overlay network. ++ * ++ * E.g., underlay host 10.88.3.4/16 with an overlay of 99.0.0.0/8 would ++ * host overlay subnet 99.3.4.0/24. An overlay network datagram from ++ * 99.3.4.5 to 99.6.7.8, would be directed to underlay host 10.88.6.7, ++ * which hosts overlay network subnet 99.6.7.0/24. This transformation is ++ * described in detail further below. ++ * ++ * Using netmasks for the overlay and underlay other than /8 and /16, as ++ * shown above, can yield larger (or smaller) overlay subnets, with the ++ * trade-off of allowing fewer (or more) underlay hosts to participate. ++ * ++ * The size of each overlay network subnet is defined by the total of the ++ * network mask of the overlay plus the size of host portion of the ++ * underlay network. In the above example, /8 + /16 = /24. ++ * ++ * E.g., consider underlay host 10.99.238.5/20 and overlay 99.0.0.0/8. In ++ * this case, the network portion of the underlay is 10.99.224.0/20, and ++ * the host portion is 0.0.14.5 (12 bits). To determine the overlay ++ * network subnet, the 12 bits of host portion are left shifted 12 bits ++ * (/20 - /8) and ORed with the overlay subnet prefix. This yields an ++ * overlay subnet of 99.224.80/20, composed of 8 bits overlay, followed by ++ * 12 bits underlay. This yields 12 bits in the overlay network portion, ++ * allowing for 4094 addresses in each overlay network subnet. The ++ * trade-off is that fewer hosts may participate in the underlay network, ++ * as its host address size has shrunk from 16 bits (65534 addresses) in ++ * the first example to 12 bits (4094 addresses) here. ++ * ++ * For fewer hosts per overlay subnet (permitting a larger number of ++ * underlay hosts to participate), the underlay netmask may be made ++ * smaller. ++ * ++ * E.g., underlay host 10.111.1.2/12 (network 10.96.0.0/12, host portion ++ * is 0.15.1.2, 20 bits) with an overlay of 33.0.0.0/8 would left shift ++ * the 20 bits of host by 4 (so that it's highest order bit is adjacent to ++ * the lowest order bit of the /8 overlay). This yields an overlay subnet ++ * of 33.240.16.32/28 (8 bits overlay, 20 bits from the host portion of ++ * the underlay). This provides more addresses for the underlay network ++ * (approximately 2^20), but each host's segment of the overlay provides ++ * only 4 bits of addresses (14 usable). ++ * ++ * It is also possible to adjust the overlay subnet. ++ * ++ * For an overlay of 240.0.0.0/5 and underlay of 10.88.0.0/20, consider ++ * underlay host 10.88.129.2; the 12 bits of host, 0.0.1.2, are left ++ * shifted 15 bits (/20 - /5), yielding an overlay network of ++ * 240.129.0.0/17. An underlay host of 10.88.244.215 would yield an ++ * overlay network of 242.107.128.0/17. ++ * ++ * For an overlay of 100.64.0.0/10 and underlay of 10.224.220.0/24, for ++ * underlay host 10.224.220.10, the underlay host portion (.10) is left ++ * shifted 14 bits, yielding an overlay network subnet of 100.66.128.0/18. ++ * This would permit 254 addresses on the underlay, with each overlay ++ * segment providing approximately 2^14 - 2 addresses (16382). ++ * ++ * For packets being encapsulated, the overlay network destination IP ++ * address is deconstructed into its overlay and underlay-derived ++ * portions. The underlay portion (determined by the overlay mask and ++ * overlay subnet mask) is right shifted according to the size of the ++ * underlay network mask. This value is then ORed with the network ++ * portion of the underlay network to produce the underlay network ++ * destination for the encapsulated datagram. ++ * ++ * For example, using the initial example of underlay 10.88.3.4/16 and ++ * overlay 99.0.0.0/8, with underlay host 10.88.3.4/16 providing overlay ++ * subnet 99.3.4.0/24 with specfic host 99.3.4.5. A datagram from ++ * 99.3.4.5 to 99.6.7.8 would first have the underlay host derived portion ++ * of the address extracted. This is a number of bits equal to underlay ++ * network host portion. In the destination address, the highest order of ++ * these bits is one bit lower than the lowest order bit from the overlay ++ * network mask. ++ * ++ * Using the sample value, 99.6.7.8, the overlay mask is /8, and the ++ * underlay mask is /16 (leaving 16 bits for the host portion). The bits ++ * to be shifted are the middle two octets, 0.6.7.0, as this is 99.6.7.8 ++ * ANDed with the mask 0x00ffff00 (which is 16 bits, the highest order of ++ * which is 1 bit lower than the lowest order overlay address bit). + * +- * E.g., underlay host 10.88.3.4 with an overlay of 99 would host overlay +- * subnet 99.3.4.0/24. An overlay network datagram from 99.3.4.5 to +- * 99.6.7.8, would be directed to underlay host 10.88.6.7, which hosts +- * overlay network 99.6.7.0/24. ++ * These octets, 0.6.7.0, are then right shifted 8 bits, yielding 0.0.6.7. ++ * This value is then ORed with the underlay network portion, ++ * 10.88.0.0/16, providing 10.88.6.7 as the final underlay destination for ++ * the encapuslated datagram. ++ * ++ * Another transform using the final example: overlay 100.64.0.0/10 and ++ * underlay 10.224.220.0/24. Consider overlay address 100.66.128.1 ++ * sending a datagram to 100.66.200.5. In this case, 8 bits (the host ++ * portion size of 10.224.220.0/24) beginning after the 100.64/10 overlay ++ * prefix are masked off, yielding 0.2.192.0. This is right shifted 14 ++ * (32 - 10 - (32 - 24), i.e., the number of bits between the overlay ++ * network portion and the underlay host portion) bits, yielding 0.0.0.11. ++ * This is ORed with the underlay network portion, 10.224.220.0/24, giving ++ * the underlay destination of 10.224.220.11 for overlay destination ++ * 100.66.200.5. + */ + static int ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) + { +- unsigned int overlay; ++ struct ip_fan_map *f_map; + u32 daddr, underlay; + ++ f_map = ipip_fan_find_map(tunnel, ip_hdr(skb)->daddr); ++ if (!f_map) ++ return -ENOENT; ++ + daddr = ntohl(ip_hdr(skb)->daddr); +- overlay = daddr >> 24; +- underlay = tunnel->fan.map[overlay]; ++ underlay = ntohl(f_map->underlay); + if (!underlay) + return -EINVAL; + + *iph = tunnel->parms.iph; +- iph->daddr = htonl(underlay | ((daddr >> 8) & 0x0000ffff)); ++ iph->daddr = htonl(underlay | ++ ((daddr & ~f_map->overlay_mask) >> ++ (32 - f_map->overlay_prefix - ++ (32 - f_map->underlay_prefix)))); + return 0; + } + +@@ -260,7 +368,7 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) + if (IS_ERR(skb)) + goto out; + +- if (ipip_tunnel_is_fan(tunnel)) { ++ if (fan_has_map(&tunnel->fan)) { + if (ipip_build_fan_iphdr(tunnel, skb, &fiph)) + goto tx_error; + tiph = &fiph; +@@ -325,6 +433,8 @@ static const struct net_device_ops ipip_netdev_ops = { + + static void ipip_tunnel_setup(struct net_device *dev) + { ++ struct ip_tunnel *t = netdev_priv(dev); ++ + dev->netdev_ops = &ipip_netdev_ops; + + dev->type = ARPHRD_TUNNEL; +@@ -336,6 +446,7 @@ static void ipip_tunnel_setup(struct net_device *dev) + dev->features |= IPIP_FEATURES; + dev->hw_features |= IPIP_FEATURES; + ip_tunnel_setup(dev, ipip_net_id); ++ INIT_LIST_HEAD(&t->fan.fan_maps); + } + + static int ipip_tunnel_init(struct net_device *dev) +@@ -419,41 +530,65 @@ static bool ipip_netlink_encap_parms(struct nlattr *data[], + return ret; + } + +-static void ipip_fan_free_map(struct ip_tunnel *t) ++static void ipip_fan_flush_map(struct ip_tunnel *t) + { +- memset(&t->fan.map, 0, sizeof(t->fan.map)); ++ struct ip_fan_map *fan_map; ++ ++ list_for_each_entry_rcu(fan_map, &t->fan.fan_maps, list) { ++ list_del_rcu(&fan_map->list); ++ kfree_rcu(fan_map, rcu); ++ } + } + +-static int ipip_fan_set_map(struct ip_tunnel *t, struct ip_tunnel_fan_map *map) ++static int ipip_fan_del_map(struct ip_tunnel *t, __be32 overlay) + { +- u32 overlay, overlay_mask, underlay, underlay_mask; ++ struct ip_fan_map *fan_map; + +- if ((map->underlay_prefix && map->underlay_prefix != 16) || +- (map->overlay_prefix && map->overlay_prefix != 8)) +- return -EINVAL; ++ fan_map = ipip_fan_find_map(t, overlay); ++ if (!fan_map) ++ return -ENOENT; ++ ++ list_del_rcu(&fan_map->list); ++ kfree_rcu(fan_map, rcu); + +- overlay = ntohl(map->overlay); +- overlay_mask = ntohl(inet_make_mask(map->overlay_prefix)); ++ return 0; ++} + +- underlay = ntohl(map->underlay); +- underlay_mask = ntohl(inet_make_mask(map->underlay_prefix)); ++static int ipip_fan_add_map(struct ip_tunnel *t, struct ifla_fan_map *map) ++{ ++ __be32 overlay_mask, underlay_mask; ++ struct ip_fan_map *fan_map; + +- if ((overlay & ~overlay_mask) || (underlay & ~underlay_mask)) +- return -EINVAL; ++ overlay_mask = inet_make_mask(map->overlay_prefix); ++ underlay_mask = inet_make_mask(map->underlay_prefix); + +- if (!(overlay & overlay_mask) && (underlay & underlay_mask)) ++ if ((map->overlay & ~overlay_mask) || (map->underlay & ~underlay_mask)) + return -EINVAL; + +- t->parms.i_flags |= TUNNEL_FAN; ++ if (!(map->overlay & overlay_mask) && (map->underlay & underlay_mask)) ++ return -EINVAL; + +- /* Special case: overlay 0 and underlay 0 clears all mappings */ +- if (!overlay && !underlay) { +- ipip_fan_free_map(t); ++ /* Special case: overlay 0 and underlay 0: flush all mappings */ ++ if (!map->overlay && !map->underlay) { ++ ipip_fan_flush_map(t); + return 0; + } ++ ++ /* Special case: overlay set and underlay 0: clear map for overlay */ ++ if (!map->underlay) ++ return ipip_fan_del_map(t, map->overlay); ++ ++ if (ipip_fan_find_map(t, map->overlay)) ++ return -EEXIST; ++ ++ fan_map = kmalloc(sizeof(*fan_map), GFP_KERNEL); ++ fan_map->underlay = map->underlay; ++ fan_map->overlay = map->overlay; ++ fan_map->underlay_prefix = map->underlay_prefix; ++ fan_map->overlay_mask = ntohl(overlay_mask); ++ fan_map->overlay_prefix = map->overlay_prefix; + +- overlay >>= (32 - map->overlay_prefix); +- t->fan.map[overlay] = underlay; ++ list_add_tail_rcu(&fan_map->list, &t->fan.fan_maps); + + return 0; + } +@@ -462,7 +597,7 @@ static int ipip_fan_set_map(struct ip_tunnel *t, struct ip_tunnel_fan_map *map) + static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, + struct ip_tunnel_parm *parms) + { +- struct ip_tunnel_fan_map *map; ++ struct ifla_fan_map *map; + struct nlattr *attr; + int rem, rv; + +@@ -474,7 +609,7 @@ static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, + + nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { + map = nla_data(attr); +- rv = ipip_fan_set_map(t, map); ++ rv = ipip_fan_add_map(t, map); + if (rv) + return rv; + } +@@ -555,7 +690,7 @@ static size_t ipip_get_size(const struct net_device *dev) + /* IFLA_IPTUN_ENCAP_DPORT */ + nla_total_size(2) + + /* IFLA_IPTUN_FAN_MAP */ +- nla_total_size(sizeof(struct ip_tunnel_fan_map)) * 256 + ++ nla_total_size(sizeof(struct ifla_fan_map)) * 256 + + 0; + } + +@@ -583,25 +718,22 @@ static int ipip_fill_info(struct sk_buff *skb, const struct net_device *dev) + tunnel->encap.flags)) + goto nla_put_failure; + +- if (tunnel->parms.i_flags & TUNNEL_FAN) { ++ if (fan_has_map(&tunnel->fan)) { + struct nlattr *fan_nest; +- int i; ++ struct ip_fan_map *fan_map; + + fan_nest = nla_nest_start(skb, IFLA_IPTUN_FAN_MAP); + if (!fan_nest) + goto nla_put_failure; +- for (i = 0; i < 256; i++) { +- if (tunnel->fan.map[i]) { +- struct ip_tunnel_fan_map map; +- +- map.underlay = htonl(tunnel->fan.map[i]); +- map.underlay_prefix = 16; +- map.overlay = htonl(i << 24); +- map.overlay_prefix = 8; +- if (nla_put(skb, IFLA_FAN_MAPPING, +- sizeof(map), &map)) +- goto nla_put_failure; +- } ++ list_for_each_entry_rcu(fan_map, &tunnel->fan.fan_maps, list) { ++ struct ifla_fan_map map; ++ ++ map.underlay = fan_map->underlay; ++ map.underlay_prefix = fan_map->underlay_prefix; ++ map.overlay = fan_map->overlay; ++ map.overlay_prefix = fan_map->overlay_prefix; ++ if (nla_put(skb, IFLA_FAN_MAPPING, sizeof(map), &map)) ++ goto nla_put_failure; + } + nla_nest_end(skb, fan_nest); + } +-- +2.7.4 + diff --git a/pkgs/os-specific/linux/kernel/ubuntu-fan-4.patch b/pkgs/os-specific/linux/kernel/ubuntu-fan-4.patch deleted file mode 100644 index 0050af6c252..00000000000 --- a/pkgs/os-specific/linux/kernel/ubuntu-fan-4.patch +++ /dev/null @@ -1,616 +0,0 @@ -From f3c956096902669c3529cb01d40deb0c759ed94f Mon Sep 17 00:00:00 2001 -From: Jay Vosburgh -Date: Wed, 1 Apr 2015 16:11:09 -0700 -Subject: [PATCH] UBUNTU: SAUCE: fan: Proof of concept implementation (v2) - -Modification to ipip tunnel driver to accept a new netlink option, -IFLA_IPTUN_FAN_UNDERLAY, which provides a /16 network prefix and enables -TX side destination address remapping for traffic entering the tunnel -(to be encapsulated). - -For an overlay (inner) address Y.A.B.C, the transformation is F.G.A.B, -where "F" and "G" are the first two octets of the underlay network (the -network portion of a /16), "A" and "B" are the low order two octets of the -underlay network host (the host portion of a /16), and "Y" is a configured -first octet of the overlay network. - -E.g., underlay host 10.88.3.4 with an overlay of 99 would host overlay -subnet 99.3.4.0/24. An overlay network datagram from 99.3.4.5 to 99.6.7.8 -would be directed to underlay host 10.88.6.7, which hosts overlay network -99.6.7.0/24. - -Includes net.fan.version sysctl as a sentinel for availability of the -fan functionality. - -NOTE: this requires an updated iproute2 to facilitate configuration of -the fan. - -BugLink: http://bugs.launchpad.net/bugs/1439706 -Signed-off-by: Jay Vosburgh -[apw@canonical.com: move IFLA_IPTUN_FAN_UNDERLAY up to avoid clashing - with future feature additions.] -Signed-off-by: Andy Whitcroft ---- - include/net/ip_tunnels.h | 6 +++ - include/uapi/linux/if_tunnel.h | 4 ++ - net/ipv4/ipip.c | 112 +++++++++++++++++++++++++++++++++++++++-- - 3 files changed, 117 insertions(+), 5 deletions(-) - -diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h -index 25a59eb..d7eada2 100644 ---- a/include/net/ip_tunnels.h -+++ b/include/net/ip_tunnels.h -@@ -51,6 +51,11 @@ struct ip_tunnel_dst { - __be32 saddr; - }; - -+/* Underlay address prefix for ipip fan mode */ -+struct ip_tunnel_fan { -+ u32 underlay; -+}; -+ - struct ip_tunnel { - struct ip_tunnel __rcu *next; - struct hlist_node hash_node; -@@ -82,6 +87,7 @@ struct ip_tunnel { - #endif - struct ip_tunnel_prl_entry __rcu *prl; /* potential router list */ - unsigned int prl_count; /* # of entries in PRL */ -+ struct ip_tunnel_fan fan; - int ip_tnl_net_id; - struct gro_cells gro_cells; - }; -diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h -index bd3cc11..8f7d269 100644 ---- a/include/uapi/linux/if_tunnel.h -+++ b/include/uapi/linux/if_tunnel.h -@@ -57,6 +57,10 @@ enum { - IFLA_IPTUN_ENCAP_FLAGS, - IFLA_IPTUN_ENCAP_SPORT, - IFLA_IPTUN_ENCAP_DPORT, -+ -+ __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ -+ IFLA_IPTUN_FAN_UNDERLAY=32, -+ - __IFLA_IPTUN_MAX, - }; - #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) -diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c -index 40403114..e3c27cd 100644 ---- a/net/ipv4/ipip.c -+++ b/net/ipv4/ipip.c -@@ -209,13 +209,38 @@ drop: - } - - /* -+ * Determine fan tunnel endpoint to send packet to, based on the inner IP -+ * address. For an overlay (inner) address Y.A.B.C, the transformation is -+ * F.G.A.B, where "F" and "G" are the first two octets of the underlay -+ * network (the network portion of a /16), "A" and "B" are the low order -+ * two octets of the underlay network host (the host portion of a /16), -+ * and "Y" is a configured first octet of the overlay network. -+ * -+ * E.g., underlay host 10.88.3.4 with an overlay of 99 would host overlay -+ * subnet 99.3.4.0/24. An overlay network datagram from 99.3.4.5 to -+ * 99.6.7.8, would be directed to underlay host 10.88.6.7, which hosts -+ * overlay network 99.6.7.0/24. -+ */ -+static void ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) -+{ -+ u32 daddr; -+ -+ *iph = tunnel->parms.iph; -+ -+ daddr = ntohl(ip_hdr(skb)->daddr); -+ iph->daddr = htonl((tunnel->fan.underlay & 0xffff0000) | -+ ((daddr >> 8) & 0x0000ffff)); -+} -+ -+/* - * This function assumes it is being called from dev_queue_xmit() - * and that skb is filled properly by that function. - */ - static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) - { - struct ip_tunnel *tunnel = netdev_priv(dev); -- const struct iphdr *tiph = &tunnel->parms.iph; -+ const struct iphdr *tiph; -+ struct iphdr fiph; - - if (unlikely(skb->protocol != htons(ETH_P_IP))) - goto tx_error; -@@ -224,6 +249,13 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) - if (IS_ERR(skb)) - goto out; - -+ if (tunnel->fan.underlay) { -+ ipip_build_fan_iphdr(tunnel, skb, &fiph); -+ tiph = &fiph; -+ } else { -+ tiph = &tunnel->parms.iph; -+ } -+ - skb_set_inner_ipproto(skb, IPPROTO_IPIP); - - ip_tunnel_xmit(skb, dev, tiph, tiph->protocol); -@@ -377,21 +409,44 @@ static bool ipip_netlink_encap_parms(struct nlattr *data[], - return ret; - } - -+static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, -+ struct ip_tunnel_parm *parms) -+{ -+ u32 net = t->fan.underlay; -+ -+ if (!data[IFLA_IPTUN_FAN_UNDERLAY]) -+ goto err_check; -+ -+ net = ntohl(nla_get_be32(data[IFLA_IPTUN_FAN_UNDERLAY])) & 0xffff0000; -+ -+err_check: -+ if (parms->iph.daddr && net) -+ return -EINVAL; -+ -+ t->fan.underlay = net; -+ -+ return 0; -+} -+ - static int ipip_newlink(struct net *src_net, struct net_device *dev, - struct nlattr *tb[], struct nlattr *data[]) - { - struct ip_tunnel_parm p; - struct ip_tunnel_encap ipencap; -+ struct ip_tunnel *t = netdev_priv(dev); -+ int err; - - if (ipip_netlink_encap_parms(data, &ipencap)) { -- struct ip_tunnel *t = netdev_priv(dev); -- int err = ip_tunnel_encap_setup(t, &ipencap); -+ err = ip_tunnel_encap_setup(t, &ipencap); - - if (err < 0) - return err; - } - - ipip_netlink_parms(data, &p); -+ err = ipip_netlink_fan(data, t, &p); -+ if (err < 0) -+ return err; - return ip_tunnel_newlink(dev, tb, &p); - } - -@@ -400,16 +455,20 @@ static int ipip_changelink(struct net_device *dev, struct nlattr *tb[], - { - struct ip_tunnel_parm p; - struct ip_tunnel_encap ipencap; -+ struct ip_tunnel *t = netdev_priv(dev); -+ int err; - - if (ipip_netlink_encap_parms(data, &ipencap)) { -- struct ip_tunnel *t = netdev_priv(dev); -- int err = ip_tunnel_encap_setup(t, &ipencap); -+ err = ip_tunnel_encap_setup(t, &ipencap); - - if (err < 0) - return err; - } - - ipip_netlink_parms(data, &p); -+ err = ipip_netlink_fan(data, t, &p); -+ if (err < 0) -+ return err; - - if (((dev->flags & IFF_POINTOPOINT) && !p.iph.daddr) || - (!(dev->flags & IFF_POINTOPOINT) && p.iph.daddr)) -@@ -441,6 +500,8 @@ static size_t ipip_get_size(const struct net_device *dev) - nla_total_size(2) + - /* IFLA_IPTUN_ENCAP_DPORT */ - nla_total_size(2) + -+ /* IFLA_IPTUN_FAN_UNDERLAY */ -+ nla_total_size(4) + - 0; - } - -@@ -468,6 +529,11 @@ static int ipip_fill_info(struct sk_buff *skb, const struct net_device *dev) - tunnel->encap.flags)) - goto nla_put_failure; - -+ if (tunnel->fan.underlay) -+ if (nla_put_be32(skb, IFLA_IPTUN_FAN_UNDERLAY, -+ htonl(tunnel->fan.underlay))) -+ goto nla_put_failure; -+ - return 0; - - nla_put_failure: -@@ -485,6 +551,9 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { - [IFLA_IPTUN_ENCAP_FLAGS] = { .type = NLA_U16 }, - [IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 }, - [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, -+ -+ [__IFLA_IPTUN_VENDOR_BREAK ... IFLA_IPTUN_MAX] = { .type = NLA_BINARY }, -+ [IFLA_IPTUN_FAN_UNDERLAY] = { .type = NLA_U32 }, - }; - - static struct rtnl_link_ops ipip_link_ops __read_mostly = { -@@ -524,6 +593,23 @@ static struct pernet_operations ipip_net_ops = { - .size = sizeof(struct ip_tunnel_net), - }; - -+#ifdef CONFIG_SYSCTL -+static struct ctl_table_header *ipip_fan_header; -+static unsigned int ipip_fan_version = 1; -+ -+static struct ctl_table ipip_fan_sysctls[] = { -+ { -+ .procname = "version", -+ .data = &ipip_fan_version, -+ .maxlen = sizeof(ipip_fan_version), -+ .mode = 0444, -+ .proc_handler = proc_dointvec, -+ }, -+ {}, -+}; -+ -+#endif /* CONFIG_SYSCTL */ -+ - static int __init ipip_init(void) - { - int err; -@@ -542,9 +628,22 @@ static int __init ipip_init(void) - if (err < 0) - goto rtnl_link_failed; - -+#ifdef CONFIG_SYSCTL -+ ipip_fan_header = register_net_sysctl(&init_net, "net/fan", -+ ipip_fan_sysctls); -+ if (!ipip_fan_header) { -+ err = -ENOMEM; -+ goto sysctl_failed; -+ } -+#endif /* CONFIG_SYSCTL */ -+ - out: - return err; - -+#ifdef CONFIG_SYSCTL -+sysctl_failed: -+ rtnl_link_unregister(&ipip_link_ops); -+#endif /* CONFIG_SYSCTL */ - rtnl_link_failed: - xfrm4_tunnel_deregister(&ipip_handler, AF_INET); - xfrm_tunnel_failed: -@@ -554,6 +653,9 @@ xfrm_tunnel_failed: - - static void __exit ipip_fini(void) - { -+#ifdef CONFIG_SYSCTL -+ unregister_net_sysctl_table(ipip_fan_header); -+#endif /* CONFIG_SYSCTL */ - rtnl_link_unregister(&ipip_link_ops); - if (xfrm4_tunnel_deregister(&ipip_handler, AF_INET)) - pr_info("%s: can't deregister tunnel\n", __func__); --- -2.4.1 - -From 4ea8011656dfdd76e7a2391bdad47c06f85a9d02 Mon Sep 17 00:00:00 2001 -From: Andy Whitcroft -Date: Tue, 21 Jul 2015 16:52:10 +0100 -Subject: [PATCH] UBUNTU: SAUCE: fan: tunnel multiple mapping mode (v3) - -Switch to a single tunnel for all mappings, this removes the limitations -on how many mappings each tunnel can handle, and therefore how many Fan -slices each local address may hold. - -NOTE: This introduces a new kernel netlink interface which needs updated -iproute2 support. - -BugLink: http://bugs.launchpad.net/bugs/1470091 -Signed-off-by: Jay Vosburgh -Signed-off-by: Andy Whitcroft -Acked-by: Tim Gardner -Acked-by: Brad Figg -Signed-off-by: Brad Figg ---- - include/net/ip_tunnels.h | 14 ++++- - include/uapi/linux/if_tunnel.h | 20 ++++++- - net/ipv4/ip_tunnel.c | 7 ++- - net/ipv4/ipip.c | 120 +++++++++++++++++++++++++++++++++-------- - 4 files changed, 133 insertions(+), 28 deletions(-) - -diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h -index d7eada2..2f7bc8c 100644 ---- a/include/net/ip_tunnels.h -+++ b/include/net/ip_tunnels.h -@@ -51,9 +51,18 @@ struct ip_tunnel_dst { - __be32 saddr; - }; - --/* Underlay address prefix for ipip fan mode */ -+/* A fan overlay /8 (250.0.0.0/8, for example) maps to exactly one /16 -+ * underlay (10.88.0.0/16, for example). Multiple local addresses within -+ * the /16 may be used, but a particular overlay may not span -+ * multiple underlay subnets. -+ * -+ * We store one underlay, indexed by the overlay's high order octet. -+ */ -+#define FAN_OVERLAY_CNT 256 -+ - struct ip_tunnel_fan { -- u32 underlay; -+/* u32 __rcu *map;*/ -+ u32 map[FAN_OVERLAY_CNT]; - }; - - struct ip_tunnel { -@@ -104,6 +113,7 @@ struct ip_tunnel { - #define TUNNEL_OAM __cpu_to_be16(0x0200) - #define TUNNEL_CRIT_OPT __cpu_to_be16(0x0400) - #define TUNNEL_GENEVE_OPT __cpu_to_be16(0x0800) - #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000) -+#define TUNNEL_FAN __cpu_to_be16(0x4000) - - #define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT) -diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h -index 8f7d269..9625934 100644 ---- a/include/uapi/linux/if_tunnel.h -+++ b/include/uapi/linux/if_tunnel.h -@@ -58,8 +58,8 @@ enum { - IFLA_IPTUN_ENCAP_SPORT, - IFLA_IPTUN_ENCAP_DPORT, - -- __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ -- IFLA_IPTUN_FAN_UNDERLAY=32, -+ __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ -+ IFLA_IPTUN_FAN_MAP = 33, - - __IFLA_IPTUN_MAX, - }; -@@ -135,4 +135,20 @@ enum { - }; - - #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1) -+ -+enum { -+ IFLA_FAN_UNSPEC, -+ IFLA_FAN_MAPPING, -+ __IFLA_FAN_MAX, -+}; -+ -+#define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) -+ -+struct ip_tunnel_fan_map { -+ __be32 underlay; -+ __be32 overlay; -+ __u16 underlay_prefix; -+ __u16 overlay_prefix; -+}; -+ - #endif /* _UAPI_IF_TUNNEL_H_ */ -diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c -index d3e4479..60bd10f 100644 ---- a/net/ipv4/ip_tunnel.c -+++ b/net/ipv4/ip_tunnel.c -@@ -1078,6 +1078,11 @@ out: - } - EXPORT_SYMBOL_GPL(ip_tunnel_newlink); - -+static int ip_tunnel_is_fan(struct ip_tunnel *tunnel) -+{ -+ return tunnel->parms.i_flags & TUNNEL_FAN; -+} -+ - int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], - struct ip_tunnel_parm *p) - { -@@ -1087,7 +1092,7 @@ int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], - struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); - - if (dev == itn->fb_tunnel_dev) -- return -EINVAL; -+ return ip_tunnel_is_fan(tunnel) ? 0 : -EINVAL; - - t = ip_tunnel_find(itn, p, dev->type); - -diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c -index e3c27cd..d6ebc66 100644 ---- a/net/ipv4/ipip.c -+++ b/net/ipv4/ipip.c -@@ -107,6 +107,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -208,6 +209,11 @@ drop: - return 0; - } - -+static int ipip_tunnel_is_fan(struct ip_tunnel *tunnel) -+{ -+ return tunnel->parms.i_flags & TUNNEL_FAN; -+} -+ - /* - * Determine fan tunnel endpoint to send packet to, based on the inner IP - * address. For an overlay (inner) address Y.A.B.C, the transformation is -@@ -221,15 +227,20 @@ drop: - * 99.6.7.8, would be directed to underlay host 10.88.6.7, which hosts - * overlay network 99.6.7.0/24. - */ --static void ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) -+static int ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) - { -- u32 daddr; -- -- *iph = tunnel->parms.iph; -+ unsigned int overlay; -+ u32 daddr, underlay; - - daddr = ntohl(ip_hdr(skb)->daddr); -- iph->daddr = htonl((tunnel->fan.underlay & 0xffff0000) | -- ((daddr >> 8) & 0x0000ffff)); -+ overlay = daddr >> 24; -+ underlay = tunnel->fan.map[overlay]; -+ if (!underlay) -+ return -EINVAL; -+ -+ *iph = tunnel->parms.iph; -+ iph->daddr = htonl(underlay | ((daddr >> 8) & 0x0000ffff)); -+ return 0; - } - - /* -@@ -249,8 +260,9 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) - if (IS_ERR(skb)) - goto out; - -- if (tunnel->fan.underlay) { -- ipip_build_fan_iphdr(tunnel, skb, &fiph); -+ if (ipip_tunnel_is_fan(tunnel)) { -+ if (ipip_build_fan_iphdr(tunnel, skb, &fiph)) -+ goto tx_error; - tiph = &fiph; - } else { - tiph = &tunnel->parms.iph; -@@ -409,21 +421,65 @@ static bool ipip_netlink_encap_parms(struct nlattr *data[], - return ret; - } - -+static void ipip_fan_free_map(struct ip_tunnel *t) -+{ -+ memset(&t->fan.map, 0, sizeof(t->fan.map)); -+} -+ -+static int ipip_fan_set_map(struct ip_tunnel *t, struct ip_tunnel_fan_map *map) -+{ -+ u32 overlay, overlay_mask, underlay, underlay_mask; -+ -+ if ((map->underlay_prefix && map->underlay_prefix != 16) || -+ (map->overlay_prefix && map->overlay_prefix != 8)) -+ return -EINVAL; -+ -+ overlay = ntohl(map->overlay); -+ overlay_mask = ntohl(inet_make_mask(map->overlay_prefix)); -+ -+ underlay = ntohl(map->underlay); -+ underlay_mask = ntohl(inet_make_mask(map->underlay_prefix)); -+ -+ if ((overlay & ~overlay_mask) || (underlay & ~underlay_mask)) -+ return -EINVAL; -+ -+ if (!(overlay & overlay_mask) && (underlay & underlay_mask)) -+ return -EINVAL; -+ -+ t->parms.i_flags |= TUNNEL_FAN; -+ -+ /* Special case: overlay 0 and underlay 0 clears all mappings */ -+ if (!overlay && !underlay) { -+ ipip_fan_free_map(t); -+ return 0; -+ } -+ -+ overlay >>= (32 - map->overlay_prefix); -+ t->fan.map[overlay] = underlay; -+ -+ return 0; -+} -+ -+ - static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, - struct ip_tunnel_parm *parms) - { -- u32 net = t->fan.underlay; -- -- if (!data[IFLA_IPTUN_FAN_UNDERLAY]) -- goto err_check; -+ struct ip_tunnel_fan_map *map; -+ struct nlattr *attr; -+ int rem, rv; - -- net = ntohl(nla_get_be32(data[IFLA_IPTUN_FAN_UNDERLAY])) & 0xffff0000; -+ if (!data[IFLA_IPTUN_FAN_MAP]) -+ return 0; - --err_check: -- if (parms->iph.daddr && net) -+ if (parms->iph.daddr) - return -EINVAL; - -- t->fan.underlay = net; -+ nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { -+ map = nla_data(attr); -+ rv = ipip_fan_set_map(t, map); -+ if (rv) -+ return rv; -+ } - - return 0; - } -@@ -500,8 +556,8 @@ static size_t ipip_get_size(const struct net_device *dev) - nla_total_size(2) + - /* IFLA_IPTUN_ENCAP_DPORT */ - nla_total_size(2) + -- /* IFLA_IPTUN_FAN_UNDERLAY */ -- nla_total_size(4) + -+ /* IFLA_IPTUN_FAN_MAP */ -+ nla_total_size(sizeof(struct ip_tunnel_fan_map)) * 256 + - 0; - } - -@@ -529,10 +585,28 @@ static int ipip_fill_info(struct sk_buff *skb, const struct net_device *dev) - tunnel->encap.flags)) - goto nla_put_failure; - -- if (tunnel->fan.underlay) -- if (nla_put_be32(skb, IFLA_IPTUN_FAN_UNDERLAY, -- htonl(tunnel->fan.underlay))) -+ if (tunnel->parms.i_flags & TUNNEL_FAN) { -+ struct nlattr *fan_nest; -+ int i; -+ -+ fan_nest = nla_nest_start(skb, IFLA_IPTUN_FAN_MAP); -+ if (!fan_nest) - goto nla_put_failure; -+ for (i = 0; i < 256; i++) { -+ if (tunnel->fan.map[i]) { -+ struct ip_tunnel_fan_map map; -+ -+ map.underlay = htonl(tunnel->fan.map[i]); -+ map.underlay_prefix = 16; -+ map.overlay = htonl(i << 24); -+ map.overlay_prefix = 8; -+ if (nla_put(skb, IFLA_FAN_MAPPING, -+ sizeof(map), &map)) -+ goto nla_put_failure; -+ } -+ } -+ nla_nest_end(skb, fan_nest); -+ } - - return 0; - -@@ -553,7 +627,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { - [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, - - [__IFLA_IPTUN_VENDOR_BREAK ... IFLA_IPTUN_MAX] = { .type = NLA_BINARY }, -- [IFLA_IPTUN_FAN_UNDERLAY] = { .type = NLA_U32 }, -+ [IFLA_IPTUN_FAN_MAP] = { .type = NLA_NESTED }, - }; - - static struct rtnl_link_ops ipip_link_ops __read_mostly = { -@@ -595,7 +669,7 @@ static struct pernet_operations ipip_net_ops = { - - #ifdef CONFIG_SYSCTL - static struct ctl_table_header *ipip_fan_header; --static unsigned int ipip_fan_version = 1; -+static unsigned int ipip_fan_version = 3; - - static struct ctl_table ipip_fan_sysctls[] = { - { --- -2.4.1 - diff --git a/pkgs/os-specific/linux/lxc/default.nix b/pkgs/os-specific/linux/lxc/default.nix index fcfe4975fd7..4ac5d0c7951 100644 --- a/pkgs/os-specific/linux/lxc/default.nix +++ b/pkgs/os-specific/linux/lxc/default.nix @@ -12,11 +12,11 @@ in with stdenv.lib; stdenv.mkDerivation rec { name = "lxc-${version}"; - version = "1.1.5"; + version = "2.0.0"; src = fetchurl { url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz"; - sha256 = "1gnhgs4i2zamfdydj895inr9i072658wd47nf1ryw5710hdsv24m"; + sha256 = "1r0hgk91n3frrmla1681l74ag5sngbbkdagvjfqzxwcf9l8pwwsv"; }; nativeBuildInputs = [ @@ -29,10 +29,6 @@ stdenv.mkDerivation rec { patches = [ ./support-db2x.patch - (fetchpatch { - url = "https://github.com/lxc/lxc/commit/3db8dd39a797f87f8b348f1b6b44953a25f3f170.patch"; - sha256 = "0scbzm9dqqhqsl0ri8da8a34r4qj9ph0cg68l9s7gw01vpvqbs8l"; - }) ]; XML_CATALOG_FILES = "${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml"; @@ -40,7 +36,6 @@ stdenv.mkDerivation rec { configureFlags = [ "--localstatedir=/var" "--sysconfdir=/etc" - "--enable-doc" "--disable-api-docs" "--with-init-script=none" "--with-distro=nixos" # just to be sure it is "unknown" diff --git a/pkgs/os-specific/linux/lxc/support-db2x.patch b/pkgs/os-specific/linux/lxc/support-db2x.patch index 4662ca2e504..16715992d35 100644 --- a/pkgs/os-specific/linux/lxc/support-db2x.patch +++ b/pkgs/os-specific/linux/lxc/support-db2x.patch @@ -1,8 +1,8 @@ diff --git a/configure.ac b/configure.ac -index 92a4690..4dd341b 100644 +index 84f8699..dce9033 100644 --- a/configure.ac +++ b/configure.ac -@@ -91,9 +91,9 @@ if test "x$enable_doc" = "xyes" -o "x$enable_doc" = "xauto"; then +@@ -192,9 +192,9 @@ if test "x$enable_doc" = "xyes" -o "x$enable_doc" = "xauto"; then AC_SUBST(db2xman) fi AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"]) diff --git a/pkgs/os-specific/linux/sysdig/default.nix b/pkgs/os-specific/linux/sysdig/default.nix index c9a594e684c..8296ec62c5b 100644 --- a/pkgs/os-specific/linux/sysdig/default.nix +++ b/pkgs/os-specific/linux/sysdig/default.nix @@ -3,10 +3,10 @@ let inherit (stdenv.lib) optional optionalString; s = rec { baseName="sysdig"; - version = "0.8.0"; + version = "0.9.0"; name="${baseName}-${version}"; url="https://github.com/draios/sysdig/archive/${version}.tar.gz"; - sha256 = "1939k3clwxg09m1bn0szqiy2nxg66srl72n7476jc58hgaraq3dr"; + sha256 = "198x1zmlydvi4i1sfvs8xjh9z5pb47l6xs4phrnkwwak46rhka3j"; }; buildInputs = [ cmake zlib luajit ncurses perl jsoncpp libb64 openssl curl diff --git a/pkgs/os-specific/linux/systemd/cryptsetup-generator.nix b/pkgs/os-specific/linux/systemd/cryptsetup-generator.nix new file mode 100644 index 00000000000..2935990755c --- /dev/null +++ b/pkgs/os-specific/linux/systemd/cryptsetup-generator.nix @@ -0,0 +1,25 @@ +{ stdenv, systemd, cryptsetup }: + +assert stdenv.isLinux; + +stdenv.lib.overrideDerivation systemd (p: { + version = p.version; + name = "systemd-cryptsetup-generator"; + + nativeBuildInputs = p.nativeBuildInputs ++ [ cryptsetup ]; + outputs = [ "out" ]; + + buildPhase = '' + make $makeFlags built-sources + make $makeFlags systemd-cryptsetup + make $makeFlags systemd-cryptsetup-generator + ''; + + installPhase = '' + mkdir -p $out/lib/systemd/ + cp systemd-cryptsetup $out/lib/systemd/systemd-cryptsetup + + mkdir -p $out/lib/systemd/system-generators/ + cp systemd-cryptsetup-generator $out/lib/systemd/system-generators/systemd-cryptsetup-generator + ''; +}) diff --git a/pkgs/servers/ftp/pure-ftpd/default.nix b/pkgs/servers/ftp/pure-ftpd/default.nix new file mode 100644 index 00000000000..0cbf920cb72 --- /dev/null +++ b/pkgs/servers/ftp/pure-ftpd/default.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + name = "pure-ftpd-1.0.42"; + + src = fetchurl { + url = "https://download.pureftpd.org/pub/pure-ftpd/releases/${name}.tar.gz"; + sha256 = "1yg7v1l3ng7c08nhh804k28y1f8ccmg0rq1a9l2sg45ib273mrvv"; + }; + + meta = with stdenv.lib; { + description = "A free, secure, production-quality and standard-conformant FTP server"; + homepage = https://www.pureftpd.org; + license = licenses.isc; # with some parts covered by BSD3(?) + maintainers = [ maintainers.lethalman ]; + }; + +} diff --git a/pkgs/servers/http/nginx/unstable.nix b/pkgs/servers/http/nginx/unstable.nix index 257cf96b4a7..5af882bac52 100644 --- a/pkgs/servers/http/nginx/unstable.nix +++ b/pkgs/servers/http/nginx/unstable.nix @@ -8,10 +8,10 @@ with stdenv.lib; let - version = "1.9.11"; + version = "1.9.14"; mainSrc = fetchurl { url = "http://nginx.org/download/nginx-${version}.tar.gz"; - sha256 = "07x5d2ryf547xrj4wp8w90kz2d93sxjhkfjb0vdscmxgmzs74p3a"; + sha256 = "1ljpyigqb6sbm4f8mi4fyvwfcvfapzg4z35s9cwb9ri8dl3r6j1b"; }; in diff --git a/pkgs/servers/irc/charybdis/default.nix b/pkgs/servers/irc/charybdis/default.nix index a38a25c8a5c..c8368fa9524 100644 --- a/pkgs/servers/irc/charybdis/default.nix +++ b/pkgs/servers/irc/charybdis/default.nix @@ -1,12 +1,13 @@ -{ stdenv, fetchgit, bison, flex, openssl }: +{ stdenv, fetchFromGitHub, bison, flex, openssl }: stdenv.mkDerivation rec { - name = "charybdis-3.5.0-rc1"; + name = "charybdis-3.5.1"; - src = fetchgit { - url = "https://github.com/atheme/charybdis.git"; - rev = "43a9b61c427cd0f3fa2c192890b8a48d9ea6fb7f"; - sha256 = "ae2c8a72e6a29c901f9b51759b542ee12c4ec918050a2d9d65e5635077a0fcef"; + src = fetchFromGitHub { + owner = "charybdis-ircd"; + repo = "charybdis"; + rev = name; + sha256 = "12lwfcgszama7140l1qhmhf1v05csipswrvqzmg8pkaazbag4ka7"; }; patches = [ @@ -22,13 +23,12 @@ stdenv.mkDerivation rec { buildInputs = [ bison flex openssl ]; - meta = { - description = "An extremely scalable ircd with some cooperation with the ratbox and ircu guys"; - homepage = https://github.com/atheme/charybdis; - license = stdenv.lib.licenses.gpl2; - maintainers = [ stdenv.lib.maintainers.lassulus ]; - platforms = stdenv.lib.platforms.linux; + meta = with stdenv.lib; { + description = "IRCv3 server designed to be highly scalable"; + homepage = http://www.charybdis.io/; + license = licenses.gpl2; + maintainers = with maintainers; [ lassulus fpletz ]; + platforms = platforms.unix; }; - } diff --git a/pkgs/servers/samba/4.x.nix b/pkgs/servers/samba/4.x.nix index 0f3b9bb7a65..2368ba18a49 100644 --- a/pkgs/servers/samba/4.x.nix +++ b/pkgs/servers/samba/4.x.nix @@ -18,11 +18,11 @@ with lib; stdenv.mkDerivation rec { - name = "samba-4.3.6"; + name = "samba-4.3.8"; src = fetchurl { url = "mirror://samba/pub/samba/stable/${name}.tar.gz"; - sha256 = "0929fpk2pq4v389naai519xvsm9bzpar4jlgjxwlx1cnn6jyql9j"; + sha256 = "041b5frh4ikcka922aqhqjvlv4w2s7jycyykpvsknj0a79ncd79p"; }; patches = diff --git a/pkgs/servers/unifi/default.nix b/pkgs/servers/unifi/default.nix index e683c7f5f0c..5684704205f 100644 --- a/pkgs/servers/unifi/default.nix +++ b/pkgs/servers/unifi/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "unifi-controller-${version}"; - version = "4.8.14"; + version = "4.8.15"; src = fetchurl { url = "https://dl.ubnt.com/unifi/${version}/UniFi.unix.zip"; - sha256 = "2498d898399c4ce636ea62e5e4bb1afdd6146e45d721084fe28a44bfd3dffb11"; + sha256 = "1p77l2186mw32l59inyd79rpachcs634z891k1vqcwn9gm7a39r2"; }; buildInputs = [ unzip ]; diff --git a/pkgs/tools/admin/tigervnc/default.nix b/pkgs/tools/admin/tigervnc/default.nix index d6156ab4909..cac1b9b3c92 100644 --- a/pkgs/tools/admin/tigervnc/default.nix +++ b/pkgs/tools/admin/tigervnc/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchgit, xorg , autoconf, automake, cvs, libtool, nasm, pixman, xkeyboard_config , fontDirectories, libgcrypt, gnutls, pam, flex, bison, gettext -, cmake, libjpeg_turbo, fltk +, cmake, libjpeg_turbo, fltk, nettle, libiconv, libtasn1 }: with stdenv.lib; @@ -69,12 +69,12 @@ stdenv.mkDerivation rec { buildInputs = [ xorg.libX11 xorg.libXext gettext xorg.libICE xorg.libXtst xorg.libXi xorg.libSM xorg.libXft nasm libgcrypt gnutls pam pixman libjpeg_turbo fltk xorg.xineramaproto - xorg.libXinerama xorg.libXcursor + xorg.libXinerama xorg.libXcursor nettle libiconv libtasn1 ]; nativeBuildInputs = [ autoconf automake cvs xorg.utilmacros xorg.fontutil libtool flex bison - cmake + cmake gettext ] ++ xorg.xorgserver.nativeBuildInputs; @@ -91,4 +91,4 @@ stdenv.mkDerivation rec { # Prevent a store collision. priority = 4; }; -} \ No newline at end of file +} diff --git a/pkgs/tools/archivers/unshield/default.nix b/pkgs/tools/archivers/unshield/default.nix index 251a62ee489..fae72e5fcd8 100644 --- a/pkgs/tools/archivers/unshield/default.nix +++ b/pkgs/tools/archivers/unshield/default.nix @@ -1,15 +1,31 @@ -{stdenv, fetchsvn, zlib, autoconf, automake, libtool}: +{ stdenv, fetchFromGitHub, fetchpatch, cmake, zlib, openssl }: -stdenv.mkDerivation { - name = "unshield-0.7pre3955"; - src = fetchsvn { - url = https://synce.svn.sourceforge.net/svnroot/synce/trunk/unshield; - rev = 3955; - sha256 = "0rpk7sb7b0v19qn4jn0iih505l4zkpns3mrbmm88p61xiz06zg7a"; +stdenv.mkDerivation rec { + name = "unshield-${version}"; + version = "1.3"; + + src = fetchFromGitHub { + owner = "twogood"; + repo = "unshield"; + rev = version; + sha256 = "0cg84jr0ymvi8bmm3lx5hshhgm33vnr1rma1mfyqkc065c7gi9ja"; + }; + + patches = [ + # Fix build in separate directory + (fetchpatch { + url = "https://github.com/twogood/unshield/commit/07ce8d82f0f60b9048265410fa8063298ab520c4.patch"; + sha256 = "160pbk2r98lv3vd0qxsxm6647qn5mddj37jzfmccdja4dpxhxz2z"; + }) + ]; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ zlib openssl ]; + + meta = with stdenv.lib; { + description = "Tool and library to extract CAB files from InstallShield installers"; + homepage = https://github.com/twogood/unshield; + license = licenses.mit; + platforms = platforms.linux; }; - configureFlags = "--with-zlib=${zlib}"; - buildInputs = [autoconf automake libtool]; - preConfigure = '' - ./bootstrap - ''; } diff --git a/pkgs/tools/archivers/zpaq/default.nix b/pkgs/tools/archivers/zpaq/default.nix index 8a0a3ef4cca..9eac9f071cb 100644 --- a/pkgs/tools/archivers/zpaq/default.nix +++ b/pkgs/tools/archivers/zpaq/default.nix @@ -3,11 +3,11 @@ let s = # Generated upstream information rec { baseName="zpaq"; - version="709"; + version="710"; name="${baseName}-${version}"; - hash="105lwd9cckmmhg5v9ddf873wzbkdsl7wfqyd30kn0q78sg3c0avh"; - url="http://mattmahoney.net/dc/zpaq709.zip"; - sha256="105lwd9cckmmhg5v9ddf873wzbkdsl7wfqyd30kn0q78sg3c0avh"; + hash="089h09rlcyag1j1i38jjzwzm69p6p4wnh6n2rsbl3p5mcvdfnwhk"; + url="http://mattmahoney.net/dc/zpaq710.zip"; + sha256="089h09rlcyag1j1i38jjzwzm69p6p4wnh6n2rsbl3p5mcvdfnwhk"; }; in stdenv.mkDerivation { diff --git a/pkgs/tools/archivers/zpaq/zpaqd.nix b/pkgs/tools/archivers/zpaq/zpaqd.nix index 6a7891d2ebe..3268135b57b 100644 --- a/pkgs/tools/archivers/zpaq/zpaqd.nix +++ b/pkgs/tools/archivers/zpaq/zpaqd.nix @@ -3,11 +3,11 @@ let s = # Generated upstream information rec { baseName="zpaqd"; - version="633"; + version="707"; name="${baseName}-${version}"; - hash="00zgc4mcmsd3d4afgzmrp6ymcyy8gb9kap815d5a3f9zhhzkz4dx"; - url="http://mattmahoney.net/dc/zpaqd633.zip"; - sha256="00zgc4mcmsd3d4afgzmrp6ymcyy8gb9kap815d5a3f9zhhzkz4dx"; + hash="0012jzs2gk232shgx60323jd3g1i5ab5sjydynz2d1k3dkjxs688"; + url="http://mattmahoney.net/dc/zpaqd707.zip"; + sha256="0012jzs2gk232shgx60323jd3g1i5ab5sjydynz2d1k3dkjxs688"; }; isUnix = with stdenv; isLinux || isGNU || isDarwin || isFreeBSD || isOpenBSD; isx86 = stdenv.isi686 || stdenv.isx86_64; diff --git a/pkgs/tools/backup/borg/default.nix b/pkgs/tools/backup/borg/default.nix index b46ea186dee..79c08ec325a 100644 --- a/pkgs/tools/backup/borg/default.nix +++ b/pkgs/tools/backup/borg/default.nix @@ -2,12 +2,12 @@ python3Packages.buildPythonApplication rec { name = "borgbackup-${version}"; - version = "1.0.0"; + version = "1.0.1"; namePrefix = ""; src = fetchurl { url = "https://pypi.python.org/packages/source/b/borgbackup/borgbackup-${version}.tar.gz"; - sha256 = "0wa6cvqs3rni5nwrgagigchcly8a53rxk56z0zn8iaii2cqrw2sh"; + sha256 = "1fhzsj66fnyz8059k0zx8ldhyjqj73980qrz48aqwz1097kc58jq"; }; nativeBuildInputs = with python3Packages; [ diff --git a/pkgs/tools/backup/partimage/default.nix b/pkgs/tools/backup/partimage/default.nix index 18e8bb40025..37d99a115f8 100644 --- a/pkgs/tools/backup/partimage/default.nix +++ b/pkgs/tools/backup/partimage/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { name = "no-SSLv2.patch"; url = "https://projects.archlinux.org/svntogit/community.git/plain/trunk" + "/use-SSLv3-by-default.patch?h=packages/partimage&id=7e95d1c6614e"; - sha256 = "1zfixa6g1nb1hqfzn2wvyvxsr38gm7908zfml2iaqnwy6iz6jd8v"; + sha256 = "17dfqwvwnkinz8vs0l3bjjbmfx3a7y8nv3wn67gjsqpmggcpdnd6"; }) ]; diff --git a/pkgs/tools/compression/pbzip2/default.nix b/pkgs/tools/compression/pbzip2/default.nix index 352b4db6a34..fb3da5e48d6 100644 --- a/pkgs/tools/compression/pbzip2/default.nix +++ b/pkgs/tools/compression/pbzip2/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchurl, bzip2 }: let major = "1.1"; - version = "${major}.12"; + version = "${major}.13"; in stdenv.mkDerivation rec { name = "pbzip2-${version}"; src = fetchurl { url = "https://launchpad.net/pbzip2/${major}/${version}/+download/${name}.tar.gz"; - sha256 = "1vk6065dv3a47p86vmp8hv3n1ygd9hraz0gq89gvzlx7lmcb6fsp"; + sha256 = "1rnvgcdixjzbrmcr1nv9b6ccrjfrhryaj7jwz28yxxv6lam3xlcg"; }; buildInputs = [ bzip2 ]; diff --git a/pkgs/tools/filesystems/glusterfs/default.nix b/pkgs/tools/filesystems/glusterfs/default.nix index 7fd56e7dd7f..94bfb5fb498 100644 --- a/pkgs/tools/filesystems/glusterfs/default.nix +++ b/pkgs/tools/filesystems/glusterfs/default.nix @@ -6,11 +6,11 @@ let s = # Generated upstream information rec { baseName="glusterfs"; - version="3.7.8"; + version="3.7.10"; name="${baseName}-${version}"; - hash="0r5l8ax1gavhl06k30lg88xs8fj7w6iyd69s5qq5fw1jvavkx709"; - url="http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.8/glusterfs-3.7.8.tar.gz"; - sha256="0r5l8ax1gavhl06k30lg88xs8fj7w6iyd69s5qq5fw1jvavkx709"; + hash="0shqvhqlmiywrr3vy8yazc8xcj6b04ci2zjgyca2vy7wa60lzfgg"; + url="http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.10/glusterfs-3.7.10.tar.gz"; + sha256="0shqvhqlmiywrr3vy8yazc8xcj6b04ci2zjgyca2vy7wa60lzfgg"; }; buildInputs = [ fuse bison flex_2_5_35 openssl python ncurses readline diff --git a/pkgs/tools/graphics/asymptote/default.nix b/pkgs/tools/graphics/asymptote/default.nix index db7fad78a49..1c5c4983c80 100644 --- a/pkgs/tools/graphics/asymptote/default.nix +++ b/pkgs/tools/graphics/asymptote/default.nix @@ -10,11 +10,11 @@ let s = # Generated upstream information rec { baseName="asymptote"; - version="2.36"; + version="2.37"; name="${baseName}-${version}"; - hash="0l0pznrn4k3v07cmn5rx8nq088zjs9bv2mkcks65z5lqlk5pccnd"; - url="mirror://sourceforge/project/asymptote/2.36/asymptote-2.36.src.tgz"; - sha256="0l0pznrn4k3v07cmn5rx8nq088zjs9bv2mkcks65z5lqlk5pccnd"; + hash="16nh02m52mk9a53i8wc6l9vg710gnzr3lfbypcbvamghvaj0458i"; + url="mirror://sourceforge/project/asymptote/2.37/asymptote-2.37.src.tgz"; + sha256="16nh02m52mk9a53i8wc6l9vg710gnzr3lfbypcbvamghvaj0458i"; }; buildInputs = [ freeglut ghostscriptX imagemagick fftw diff --git a/pkgs/tools/graphics/imgurbash/default.nix b/pkgs/tools/graphics/imgurbash/default.nix deleted file mode 100644 index 66f85af8793..00000000000 --- a/pkgs/tools/graphics/imgurbash/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ stdenv, fetchurl, bash, curl, xsel }: - -stdenv.mkDerivation { - name = "imgurbash-4"; - - src = fetchurl { - url = "https://imgur.com/tools/imgurbash.sh"; - sha256 = "16m7dn5vqzx1q4pzssnwiwajfzrbhrz0niyhf5abxi1lwr3h0ca1"; - }; - - buildCommand = '' - mkdir -p $out/bin - cat <$out/bin/imgurbash - #!${bash}/bin/bash - PATH=${stdenv.lib.makeSearchPath "bin" [curl xsel]}:\$PATH - EOF - cat $src >>$out/bin/imgurbash - chmod +x $out/bin/imgurbash - ''; - - meta = with stdenv.lib; { - description = "A simple bash script to upload an image to imgur from the commandline"; - license = licenses.publicDomain; - platforms = platforms.linux; - maintainers = with maintainers; [ abbradar ]; - }; -} diff --git a/pkgs/tools/graphics/imgurbash2/default.nix b/pkgs/tools/graphics/imgurbash2/default.nix new file mode 100644 index 00000000000..5e7b4dcb387 --- /dev/null +++ b/pkgs/tools/graphics/imgurbash2/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, bash, curl, xsel }: + +stdenv.mkDerivation rec { + name = "imgurbash2-${version}"; + version = "1.0"; + + src = fetchFromGitHub { + owner = "ram-on"; + repo = "imgurbash2"; + rev = version; + sha256 = "0w8xfdvv6h0cqln9a2b1rskpyv4v5qsywqzg10smg05xlrh9f5nx"; + }; + + installPhase = '' + mkdir -p $out/bin + cat <$out/bin/imgurbash2 + #!${bash}/bin/bash + PATH=${stdenv.lib.makeSearchPath "bin" [curl xsel]}:\$PATH + EOF + cat imgurbash2 >> $out/bin/imgurbash2 + chmod +x $out/bin/imgurbash2 + ''; + + meta = with stdenv.lib; { + description = "A shell script that uploads images to imgur"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ abbradar ]; + homepage = https://github.com/ram-on/imgurbash2; + }; +} diff --git a/pkgs/tools/graphics/pngcrush/default.nix b/pkgs/tools/graphics/pngcrush/default.nix index 6a6f3e7b13c..3bcbc5d5ead 100644 --- a/pkgs/tools/graphics/pngcrush/default.nix +++ b/pkgs/tools/graphics/pngcrush/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, libpng }: stdenv.mkDerivation rec { - name = "pngcrush-1.7.92"; + name = "pngcrush-1.8.1"; src = fetchurl { url = "mirror://sourceforge/pmt/${name}-nolib.tar.xz"; - sha256 = "0dlwbqckv90cpvg8qhkl3nk5yb75ddi61vbpmmp9n0j6qq9lp6y4"; + sha256 = "1h3sibmmiq4ynvf8hrpksfrbcmszxh4bqpkqy5c0m8828c7drpr9"; }; makeFlags = [ "CC=cc" "LD=cc" ]; # gcc and/or clang compat diff --git a/pkgs/tools/misc/mcrl2/default.nix b/pkgs/tools/misc/mcrl2/default.nix deleted file mode 100644 index a67081d5ef2..00000000000 --- a/pkgs/tools/misc/mcrl2/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{stdenv, fetchurl, mesa, wxGTK, libX11}: - -stdenv.mkDerivation { - name = "mcrl2-200901"; - src = fetchurl { - url = http://www.win.tue.nl/mcrl2/download/release/mcrl2-200901-src.tar.bz2 ; - sha256 = "0lji31d7dv15q8092b8g01j023dd7miq3nw8klgc8jd136xpwdp9"; - }; - - buildInputs = [ mesa wxGTK libX11 ] ; -} - - - diff --git a/pkgs/tools/misc/tmux/default.nix b/pkgs/tools/misc/tmux/default.nix index aab229c0ad2..7bd79b30885 100644 --- a/pkgs/tools/misc/tmux/default.nix +++ b/pkgs/tools/misc/tmux/default.nix @@ -1,15 +1,28 @@ -{ stdenv, fetchurl, ncurses, libevent, pkgconfig }: +{ stdenv, fetchFromGitHub, autoreconfHook, ncurses, libevent, pkgconfig }: + +let + + bashCompletion = fetchFromGitHub { + owner = "przepompownia"; + repo = "tmux-bash-completion"; + rev = "678a27616b70c649c6701cae9cd8c92b58cc051b"; + sha256 = "1d2myrh4xiay9brsxafb02pi922760sdkyyy5xjm4sfh4iimc4zf"; + }; + +in stdenv.mkDerivation rec { name = "tmux-${version}"; - version = "2.1"; + version = "2.2"; - src = fetchurl { - url = "https://github.com/tmux/tmux/releases/download/${version}/${name}.tar.gz"; - sha256 = "0xk1mylsb08sf0w597mdgj9s6hxxjvjvjd6bngpjvvxwyixlwmii"; + src = fetchFromGitHub { + owner = "tmux"; + repo = "tmux"; + rev = version; + sha256 = "04k9yxjp357sdw6365z6qx87vmwygl3v3wpvd78pp63ky5hzbbay"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig autoreconfHook ]; buildInputs = [ ncurses libevent ]; @@ -20,7 +33,7 @@ stdenv.mkDerivation rec { postInstall = '' mkdir -p $out/etc/bash_completion.d - cp -v examples/bash_completion_tmux.sh $out/etc/bash_completion.d/tmux + cp -v ${bashCompletion}/completions/tmux $out/etc/bash_completion.d/tmux ''; meta = { @@ -44,6 +57,6 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.bsd3; platforms = stdenv.lib.platforms.unix; - maintainers = with stdenv.lib.maintainers; [ thammers ]; + maintainers = with stdenv.lib.maintainers; [ thammers fpletz ]; }; } diff --git a/pkgs/tools/misc/wv/default.nix b/pkgs/tools/misc/wv/default.nix index dbb46cea832..b0943f469b3 100644 --- a/pkgs/tools/misc/wv/default.nix +++ b/pkgs/tools/misc/wv/default.nix @@ -1,12 +1,14 @@ { stdenv, fetchurl, zlib, imagemagick, libpng, glib, pkgconfig, libgsf , libxml2, bzip2 }: -stdenv.mkDerivation { - name = "wv-1.2.4"; +stdenv.mkDerivation rec { + pname = "wv"; + version = "1.2.9"; + name = "${pname}-${version}"; src = fetchurl { - url = mirror://sourceforge/wvware/wv-1.2.4.tar.gz; - sha256 = "1mn2ax6qjy3pvixlnvbkn6ymy6y4l2wxrr4brjaczm121s8hjcb7"; + url = "http://www.abisource.com/downloads/${pname}/${version}/${name}.tar.gz"; + sha256 = "17f16lkdv1c3amaz2hagiicih59ynpp4786k1m2qa1sw68xhswsc"; }; buildInputs = [ zlib imagemagick libpng glib pkgconfig libgsf libxml2 bzip2 ]; diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix index 9c42a4cfe00..a10fd37da28 100644 --- a/pkgs/tools/misc/youtube-dl/default.nix +++ b/pkgs/tools/misc/youtube-dl/default.nix @@ -12,11 +12,11 @@ buildPythonApplication rec { name = "youtube-dl-${version}"; - version = "2016.02.13"; + version = "2016.04.06"; src = fetchurl { - url = "http://yt-dl.org/downloads/${stdenv.lib.getVersion name}/${name}.tar.gz"; - sha256 = "0d6ml6nas0pnp6is73fn326ayxkdmxvarzyr96qd6gyjm9icpdcb"; + url = "http://yt-dl.org/downloads/${version}/${name}.tar.gz"; + sha256 = "1kdrjwrn0x1wmvansvd2222gfqnld4zdihf2jwnz36112r1p8nhi"; }; buildInputs = [ makeWrapper zip pandoc ]; diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix index b1bfeb215f6..dbb85f38635 100644 --- a/pkgs/tools/networking/i2p/default.nix +++ b/pkgs/tools/networking/i2p/default.nix @@ -1,10 +1,10 @@ { stdenv, procps, coreutils, fetchurl, jdk, jre, ant, gettext, which }: stdenv.mkDerivation rec { - name = "i2p-0.9.24"; + name = "i2p-0.9.25"; src = fetchurl { url = "https://github.com/i2p/i2p.i2p/archive/${name}.tar.gz"; - sha256 = "0hk28cigil6ia707zb6p8n7959xg7v816bacxxlln780cc1wi830"; + sha256 = "1lj4khln0k0b4f55hjighwn5j3cyal8flmapjmadjyj6cd5py0v8"; }; buildInputs = [ jdk ant gettext which ]; patches = [ ./i2p.patch ]; diff --git a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix index 5f1d6b4ef1a..aa1b01c11fa 100644 --- a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix +++ b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix @@ -6,13 +6,13 @@ # some loss of functionality because of it. pythonPackages.buildPythonApplication rec { - version = "1.10.2"; + version = "1.11.0"; name = "tahoe-lafs-${version}"; namePrefix = ""; src = fetchurl { - url = "http://tahoe-lafs.org/source/tahoe-lafs/releases/allmydata-tahoe-${version}.tar.bz2"; - sha256 = "1rvv0ik5biy7ji8pg56v0qycnggzr3k6dbg88n555nb6r4cxgmgy"; + url = "https://tahoe-lafs.org/downloads/tahoe-lafs-${version}.tar.bz2"; + sha256 = "0hrp87rarbmmpnrxk91s83h6irkykds3pl263dagcddbdl5inqdi"; }; patchPhase = '' @@ -30,7 +30,6 @@ pythonPackages.buildPythonApplication rec { sed -i 's/"pycrypto.*"/"pycrypto"/' src/allmydata/_auto_deps.py ''; - # Some tests want this + http://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-dep-sdists/mock-0.6.0.tar.bz2 buildInputs = with pythonPackages; [ unzip numpy mock ]; # The `backup' command requires `sqlite3'. @@ -48,8 +47,8 @@ pythonPackages.buildPythonApplication rec { ''; checkPhase = '' - # TODO: broken with wheels - #${pythonPackages.python.interpreter} setup.py trial + # Still broken. ~ C. + # trial allmydata ''; meta = { @@ -60,9 +59,9 @@ pythonPackages.buildPythonApplication rec { such a way that it remains available even when some of the peers are unavailable, malfunctioning, or malicious. ''; - homepage = http://allmydata.org/; + homepage = http://tahoe-lafs.org/; license = [ lib.licenses.gpl2Plus /* or */ "TGPPLv1+" ]; - maintainers = [ lib.maintainers.simons ]; + maintainers = with lib.maintainers; [ simons MostAwesomeDude ]; platforms = lib.platforms.gnu; # arbitrary choice }; } diff --git a/pkgs/tools/security/clamav/default.nix b/pkgs/tools/security/clamav/default.nix index 0a172935bb5..bebb8a95a58 100644 --- a/pkgs/tools/security/clamav/default.nix +++ b/pkgs/tools/security/clamav/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation rec { name = "clamav-${version}"; - version = "0.99"; + version = "0.99.1"; src = fetchurl { url = "mirror://sourceforge/clamav/clamav-${version}.tar.gz"; - sha256 = "1abyg349yr31z764jcgx67q5v098jrkrj88bqkzmys6xza62qyfj"; + sha256 = "12nm4mxzx3qlbm65cadflzncjfkxdfqcp0lch29i5yfk4a8nhi71"; }; buildInputs = [ zlib bzip2 libxml2 openssl ncurses curl libiconv libmilter pcre ]; diff --git a/pkgs/tools/security/sudo/default.nix b/pkgs/tools/security/sudo/default.nix index df8024e040e..b2af5451b8b 100644 --- a/pkgs/tools/security/sudo/default.nix +++ b/pkgs/tools/security/sudo/default.nix @@ -4,14 +4,14 @@ }: stdenv.mkDerivation rec { - name = "sudo-1.8.15"; + name = "sudo-1.8.16"; src = fetchurl { urls = [ "ftp://ftp.sudo.ws/pub/sudo/${name}.tar.gz" "ftp://ftp.sudo.ws/pub/sudo/OLD/${name}.tar.gz" ]; - sha256 = "0263gi6i19fyzzc488n0qw3m518i39f6a7qmrfvahk9j10bkh5j3"; + sha256 = "0k86sm9ilhxhvnfwq3092zhfxazj3kddn0y2mirz0nqjqmpq50rd"; }; configureFlags = [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c33401eed89..b54fb2f892d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -411,7 +411,7 @@ in arcanist = callPackage ../development/tools/misc/arcanist {}; - arduino = arduino-core.override { withGui = true; }; + arduino = self.arduino-core.override { withGui = true; }; arduino-core = callPackage ../development/arduino/arduino-core { jdk = jdk; @@ -458,12 +458,12 @@ in amule = callPackage ../tools/networking/p2p/amule { }; - amuleDaemon = appendToName "daemon" (amule.override { + amuleDaemon = appendToName "daemon" (self.amule.override { monolithic = false; daemon = true; }); - amuleGui = appendToName "gui" (amule.override { + amuleGui = appendToName "gui" (self.amule.override { monolithic = false; client = true; }); @@ -496,16 +496,16 @@ in pkgs_i686 = pkgsi686Linux; }; - inherit (androidenv) androidsdk_4_4 androidndk; + inherit (self.androidenv) androidsdk_4_4 androidndk; - androidsdk = androidenv.androidsdk_6_0; + androidsdk = self.androidenv.androidsdk_6_0; arc-gtk-theme = callPackage ../misc/themes/arc { }; aria2 = callPackage ../tools/networking/aria2 { inherit (darwin.apple_sdk.frameworks) Security; }; - aria = aria2; + aria = self.aria2; at = callPackage ../tools/system/at { }; @@ -637,7 +637,9 @@ in btfs = callPackage ../os-specific/linux/btfs { }; - cabal2nix = haskellPackages.cabal2nix; + cabal2nix = self.haskellPackages.cabal2nix; + + caddy = goPackages.caddy.bin // { outputs = [ "bin" ]; }; capstone = callPackage ../development/libraries/capstone { }; @@ -701,7 +703,7 @@ in deis = goPackages.deis.bin // { outputs = [ "bin" ]; }; - dfilemanager = kde5.dfilemanager; + dfilemanager = self.kde5.dfilemanager; diagrams-builder = callPackage ../tools/graphics/diagrams-builder { inherit (haskellPackages) ghcWithPackages diagrams-builder; @@ -780,8 +782,6 @@ in mcrl = callPackage ../tools/misc/mcrl { }; - mcrl2 = callPackage ../tools/misc/mcrl2 { }; - meson = callPackage ../development/tools/build-managers/meson { }; mp3fs = callPackage ../tools/filesystems/mp3fs { }; @@ -854,12 +854,12 @@ in enableStandardFeatures = false; }; - asciidoc-full = appendToName "full" (asciidoc.override { + asciidoc-full = appendToName "full" (self.asciidoc.override { inherit (pythonPackages) pygments; enableStandardFeatures = true; }); - asciidoc-full-with-plugins = appendToName "full-with-plugins" (asciidoc.override { + asciidoc-full-with-plugins = appendToName "full-with-plugins" (self.asciidoc.override { inherit (pythonPackages) pygments; enableStandardFeatures = true; enableExtraPlugins = true; @@ -960,9 +960,9 @@ in cdrkit = callPackage ../tools/cd-dvd/cdrkit { }; - libceph = ceph.lib; + libceph = self.ceph.lib; ceph = callPackage ../tools/filesystems/ceph { boost = boost159; }; - ceph-dev = ceph; + ceph-dev = self.ceph; #ceph-dev = lowPrio (callPackage ../tools/filesystems/ceph/dev.nix { }); cfdg = callPackage ../tools/graphics/cfdg { }; @@ -992,7 +992,7 @@ in gst_plugins = [ gst_plugins_base gst_plugins_good gst_plugins_ugly gst_ffmpeg ]; }; - clementineFree = clementine.free; + clementineFree = self.clementine.free; ciopfs = callPackage ../tools/filesystems/ciopfs { }; @@ -1148,9 +1148,9 @@ in cudatoolkit7 cudatoolkit75; - cudatoolkit = cudatoolkit7; + cudatoolkit = self.cudatoolkit7; - curlFull = curl.override { + curlFull = self.curl.override { idnSupport = true; ldapSupport = true; gssSupport = true; @@ -1300,7 +1300,7 @@ in doomseeker = callPackage ../applications/misc/doomseeker { }; - drive = go14Packages.drive.bin // { outputs = [ "bin" ]; }; + drive = self.go14Packages.drive.bin // { outputs = [ "bin" ]; }; driftnet = callPackage ../tools/networking/driftnet {}; @@ -1679,17 +1679,17 @@ in gnupg1orig = callPackage ../tools/security/gnupg/1.nix { }; gnupg1compat = callPackage ../tools/security/gnupg/1compat.nix { }; - gnupg1 = gnupg1compat; # use config.packageOverrides if you prefer original gnupg1 + gnupg1 = self.gnupg1compat; # use config.packageOverrides if you prefer original gnupg1 gnupg20 = callPackage ../tools/security/gnupg/20.nix { }; gnupg21 = callPackage ../tools/security/gnupg/21.nix { }; - gnupg = gnupg21; + gnupg = self.gnupg21; gnuplot = callPackage ../tools/graphics/gnuplot { qt = qt4; }; - gnuplot_qt = gnuplot.override { withQt = true; }; + gnuplot_qt = self.gnuplot.override { withQt = true; }; # must have AquaTerm installed separately - gnuplot_aquaterm = gnuplot.override { aquaterm = true; }; + gnuplot_aquaterm = self.gnuplot.override { aquaterm = true; }; gnused = callPackage ../tools/text/gnused { }; @@ -1773,15 +1773,15 @@ in trustedGrub-for-HP = callPackage_i686 ../tools/misc/grub/trusted.nix { for_HP_laptop = true; }; - grub2 = grub2_full; + grub2 = self.grub2_full; grub2_full = callPackage ../tools/misc/grub/2.0x.nix { }; - grub2_efi = grub2_full.override { + grub2_efi = self.grub2_full.override { efiSupport = true; }; - grub2_light = grub2_full.override { + grub2_light = self.grub2_full.override { zfsSupport = false; }; @@ -1874,16 +1874,16 @@ in mpi = null; }; - hdf5-mpi = appendToName "mpi" (hdf5.override { + hdf5-mpi = appendToName "mpi" (self.hdf5.override { szip = null; mpi = pkgs.openmpi; }); - hdf5-cpp = appendToName "cpp" (hdf5.override { + hdf5-cpp = appendToName "cpp" (self.hdf5.override { cpp = true; }); - hdf5-fortran = appendToName "fortran" (hdf5.override { + hdf5-fortran = appendToName "fortran" (self.hdf5.override { inherit gfortran; }); @@ -1975,7 +1975,7 @@ in imgur-screenshot = callPackage ../tools/graphics/imgur-screenshot { }; - imgurbash = callPackage ../tools/graphics/imgurbash { }; + imgurbash2 = callPackage ../tools/graphics/imgurbash2 { }; inadyn = callPackage ../tools/networking/inadyn { }; @@ -1995,9 +1995,9 @@ in iperf2 = callPackage ../tools/networking/iperf/2.nix { }; iperf3 = callPackage ../tools/networking/iperf/3.nix { }; - iperf = iperf3; + iperf = self.iperf3; - ipfs = goPackages.ipfs.bin // { outputs = [ "bin" ]; }; + ipfs = self.goPackages.ipfs.bin // { outputs = [ "bin" ]; }; ipmitool = callPackage ../tools/system/ipmitool { static = false; @@ -2015,12 +2015,14 @@ in ised = callPackage ../tools/misc/ised {}; - isl = isl_0_14; + isl = self.isl_0_15; isl_0_11 = callPackage ../development/libraries/isl/0.11.1.nix { }; isl_0_12 = callPackage ../development/libraries/isl/0.12.2.nix { }; isl_0_14 = callPackage ../development/libraries/isl/0.14.1.nix { }; isl_0_15 = callPackage ../development/libraries/isl/0.15.0.nix { }; + ispike = callPackage ../development/libraries/science/robotics/ispike { }; + isync = callPackage ../tools/networking/isync { }; isyncUnstable = callPackage ../tools/networking/isync/unstable.nix { }; @@ -2930,7 +2932,7 @@ in pystringtemplate = callPackage ../development/python-modules/stringtemplate { }; - pythonDBus = dbus_python; + pythonDBus = self.dbus_python; pythonIRClib = pythonPackages.pythonIRClib; @@ -3411,9 +3413,7 @@ in torbutton = callPackage ../tools/security/torbutton { }; - torbrowser = callPackage ../tools/security/tor/torbrowser.nix { - stdenv = overrideCC stdenv gcc5; - }; + torbrowser = callPackage ../tools/security/tor/torbrowser.nix { }; touchegg = callPackage ../tools/inputmethods/touchegg { }; @@ -3807,7 +3807,7 @@ in xflux = callPackage ../tools/misc/xflux { }; xfsprogs = callPackage ../tools/filesystems/xfsprogs { }; - libxfs = xfsprogs.dev; # outputs TODO + libxfs = self.xfsprogs.dev; # outputs TODO xml2 = callPackage ../tools/text/xml/xml2 { }; @@ -3991,7 +3991,7 @@ in clangUnwrapped = llvm: pkg: callPackage pkg { inherit llvm; }; - clangSelf = clangWrapSelf llvmPackagesSelf.clang; + clangSelf = self.clangWrapSelf llvmPackagesSelf.clang; clangWrapSelf = build: callPackage ../build-support/cc-wrapper { cc = build; @@ -4023,7 +4023,7 @@ in ocamlPackages = ocamlPackages_4_02; }); - cryptol = haskellPackages.cryptol; + cryptol = self.haskellPackages.cryptol; cython = pythonPackages.cython; cython3 = python3Packages.cython; @@ -4044,18 +4044,20 @@ in gcc = gcc5; - gcc_multi = + wrapCCMulti = cc: if system == "x86_64-linux" then lowPrio ( let extraBuildCommands = '' echo "dontMoveLib64=1" >> $out/nix-support/setup-hook ''; - in wrapCCWith (callPackage ../build-support/cc-wrapper) glibc_multi extraBuildCommands (gcc.cc.override { - stdenv = overrideCC stdenv (wrapCCWith (callPackage ../build-support/cc-wrapper) glibc_multi "" gcc.cc); + in wrapCCWith (callPackage ../build-support/cc-wrapper) glibc_multi extraBuildCommands (cc.cc.override { + stdenv = overrideCC stdenv (wrapCCWith (callPackage ../build-support/cc-wrapper) glibc_multi "" cc.cc); profiledCompiler = false; enableMultilib = true; })) - else throw "Multilib gcc not supported on ‘${system}’"; + else throw "Multilib ${cc.name} not supported on ‘${system}’"; + + gcc_multi = wrapCCMulti gcc; gcc_debug = lowPrio (wrapCC (gcc.cc.override { stripped = false; @@ -4287,7 +4289,14 @@ in releaseType = "update"; sha256 = "c5e0025b065750bbd76b5357b4fc8606d88afbac9ff55b8a82927b4b96178154"; }; - gcc-arm-embedded = gcc-arm-embedded-4_9; + gcc-arm-embedded-5_2 = pkgs.callPackage_i686 ../development/compilers/gcc-arm-embedded { + dirName = "5.0"; + subdirName = "5-2015-q4-major"; + version = "5.2-2015q4-20151219"; + releaseType = "major"; + sha256 = "12mbwl9iwbw7h6gwwkvyvfmrsz7vgjz27jh2cz9z006ihzigi50y"; + }; + gcc-arm-embedded = self.gcc-arm-embedded-4_9; gforth = callPackage ../development/compilers/gforth {}; @@ -4300,7 +4309,7 @@ in haskellPackages = haskell.packages.ghc7103.override { overrides = config.haskellPackageOverrides or (self: super: {}); }; - inherit (haskellPackages) ghc cabal-install stack; + inherit (self.haskellPackages) ghc cabal-install stack; haxe = callPackage ../development/compilers/haxe { inherit (ocamlPackages) camlp4; @@ -4308,7 +4317,7 @@ in hxcpp = callPackage ../development/compilers/haxe/hxcpp.nix { }; hhvm = callPackage ../development/compilers/hhvm { }; - hiphopvm = hhvm; /* Compatibility alias */ + hiphopvm = self.hhvm; /* Compatibility alias */ hop = callPackage ../development/compilers/hop { }; @@ -4334,7 +4343,7 @@ in inherit (darwin.apple_sdk.frameworks) Security Foundation; }; - go = go_1_5; + go = self.go_1_5; go-repo-root = goPackages.go-repo-root.bin // { outputs = [ "bin" ]; }; @@ -4354,7 +4363,7 @@ in xulrunner = firefox-unwrapped; }; - icedtea_web = icedtea8_web; + icedtea_web = self.icedtea8_web; idrisPackages = callPackage ../development/idris-modules { inherit (haskellPackages) idris; @@ -4384,44 +4393,44 @@ in bootjdk = callPackage ../development/compilers/openjdk/bootstrap.nix { version = "8"; }; }; - openjdk = if stdenv.isDarwin then openjdk7 else openjdk8; + openjdk = if stdenv.isDarwin then self.openjdk7 else self.openjdk8; - jdk7 = openjdk7 // { outputs = [ "out" ]; }; - jre7 = lib.setName "openjre-${lib.getVersion pkgs.openjdk7.jre}" (openjdk7.jre // { outputs = [ "jre" ]; }); + jdk7 = self.openjdk7 // { outputs = [ "out" ]; }; + jre7 = lib.setName "openjre-${lib.getVersion pkgs.openjdk7.jre}" (self.openjdk7.jre // { outputs = [ "jre" ]; }); - jdk8 = openjdk8 // { outputs = [ "out" ]; }; - jre8 = lib.setName "openjre-${lib.getVersion pkgs.openjdk8.jre}" (openjdk8.jre // { outputs = [ "jre" ]; }); + jdk8 = self.openjdk8 // { outputs = [ "out" ]; }; + jre8 = lib.setName "openjre-${lib.getVersion pkgs.openjdk8.jre}" (self.openjdk8.jre // { outputs = [ "jre" ]; }); - jdk = if stdenv.isDarwin then jdk7 else jdk8; - jre = if stdenv.isDarwin then jre7 else jre8; + jdk = if stdenv.isDarwin then self.jdk7 else self.jdk8; + jre = if stdenv.isDarwin then self.jre7 else self.jre8; - oraclejdk = pkgs.jdkdistro true false; + oraclejdk = self.jdkdistro true false; - oraclejdk7 = pkgs.oraclejdk7distro true false; + oraclejdk7 = self.oraclejdk7distro true false; - oraclejdk7psu = pkgs.oraclejdk7psu_distro true false; + oraclejdk7psu = self.oraclejdk7psu_distro true false; - oraclejdk8 = pkgs.oraclejdk8distro true false; + oraclejdk8 = self.oraclejdk8distro true false; - oraclejdk8psu = pkgs.oraclejdk8psu_distro true false; + oraclejdk8psu = self.oraclejdk8psu_distro true false; - oraclejre = lowPrio (pkgs.jdkdistro false false); + oraclejre = lowPrio (self.jdkdistro false false); - oraclejre7 = lowPrio (pkgs.oraclejdk7distro false false); + oraclejre7 = lowPrio (self.oraclejdk7distro false false); - oraclejre7psu = lowPrio (pkgs.oraclejdk7psu_distro false false); + oraclejre7psu = lowPrio (self.oraclejdk7psu_distro false false); - oraclejre8 = lowPrio (pkgs.oraclejdk8distro false false); + oraclejre8 = lowPrio (self.oraclejdk8distro false false); - oraclejre8psu = lowPrio (pkgs.oraclejdk8psu_distro false false); + oraclejre8psu = lowPrio (self.oraclejdk8psu_distro false false); - jrePlugin = jre8Plugin; + jrePlugin = self.jre8Plugin; - jre6Plugin = lowPrio (pkgs.jdkdistro false true); + jre6Plugin = lowPrio (self.jdkdistro false true); - jre7Plugin = lowPrio (pkgs.oraclejdk7distro false true); + jre7Plugin = lowPrio (self.oraclejdk7distro false true); - jre8Plugin = lowPrio (pkgs.oraclejdk8distro false true); + jre8Plugin = lowPrio (self.oraclejdk8distro false true); supportsJDK = system == "i686-linux" || @@ -4476,17 +4485,17 @@ in liquibase = callPackage ../development/tools/database/liquibase { }; - llvm = llvmPackages.llvm; + llvm = self.llvmPackages.llvm; - llvm_38 = llvmPackages_38.llvm; - llvm_37 = llvmPackages_37.llvm; - llvm_36 = llvmPackages_36.llvm; - llvm_35 = llvmPackages_35.llvm; - llvm_34 = llvmPackages_34.llvm; + llvm_38 = self.llvmPackages_38.llvm; + llvm_37 = self.llvmPackages_37.llvm; + llvm_36 = self.llvmPackages_36.llvm; + llvm_35 = self.llvmPackages_35.llvm; + llvm_34 = self.llvmPackages_34.llvm; - llvmPackages = recurseIntoAttrs llvmPackages_37; + llvmPackages = recurseIntoAttrs self.llvmPackages_37; - llvmPackagesSelf = llvmPackages_34.override { + llvmPackagesSelf = self.llvmPackages_34.override { stdenv = libcxxStdenv; }; @@ -5271,10 +5280,10 @@ in inherit (darwin.apple_sdk.frameworks) Carbon Cocoa; javacSupport = true; odbcSupport = true; }; - erlang = erlangR18; - erlang_odbc = erlangR18_odbc; - erlang_javac = erlangR18_javac; - erlang_odbc_javac = erlangR18_odbc_javac; + erlang = self.erlangR18; + erlang_odbc = self.erlangR18_odbc; + erlang_javac = self.erlangR18_javac; + erlang_odbc_javac = self.erlangR18_odbc_javac; rebar = callPackage ../development/tools/build-managers/rebar { }; rebar3-open = callPackage ../development/tools/build-managers/rebar3 { hermeticRebar3 = false; }; @@ -5294,7 +5303,7 @@ in guile_2_0 = callPackage ../development/interpreters/guile { }; - guile = guile_2_0; + guile = self.guile_2_0; hadoop = callPackage ../applications/networking/cluster/hadoop { }; @@ -5322,7 +5331,7 @@ in love_0_8 = callPackage ../development/interpreters/love/0.8.nix { lua=lua5_1; }; love_0_9 = callPackage ../development/interpreters/love/0.9.nix { }; love_0_10 = callPackage ../development/interpreters/love/0.10.nix { }; - love = love_0_10; + love = self.love_0_10; ### LUA MODULES @@ -5337,22 +5346,22 @@ in lua5_3_compat = callPackage ../development/interpreters/lua-5/5.3.nix { compat = true; }; - lua5 = lua5_2_compat; - lua = lua5; + lua5 = self.lua5_2_compat; + lua = self.lua5; lua51Packages = recurseIntoAttrs (callPackage ./lua-packages.nix { lua = lua5_1; }); lua52Packages = recurseIntoAttrs (callPackage ./lua-packages.nix { lua = lua5_2; }); - luaPackages = lua52Packages; + luaPackages = self.lua52Packages; - lua5_1_sockets = lua51Packages.luasocket; + lua5_1_sockets = self.lua51Packages.luasocket; lua5_expat = callPackage ../development/interpreters/lua-5/expat.nix {}; lua5_sec = callPackage ../development/interpreters/lua-5/sec.nix { }; luajit = callPackage ../development/interpreters/luajit {}; - luarocks = luaPackages.luarocks; + luarocks = self.luaPackages.luarocks; toluapp = callPackage ../development/tools/toluapp { lua = lua5_1; # doesn't work with any other :( @@ -5588,7 +5597,7 @@ in version = "2.8"; }; - amdappsdk = amdappsdk28; + amdappsdk = self.amdappsdk28; amdappsdkFull = callPackage ../development/misc/amdapp-sdk { version = "2.8"; @@ -5655,7 +5664,7 @@ in antlr3 = callPackage ../development/tools/parsing/antlr { }; - ant = apacheAnt; + ant = self.apacheAnt; apacheAnt = callPackage ../development/tools/build-managers/apache-ant { }; @@ -5678,7 +5687,7 @@ in autocutsel = callPackage ../tools/X11/autocutsel{ }; - automake = automake115x; + automake = self.automake115x; automake110x = callPackage ../development/tools/misc/automake/automake-1.10.x.nix { }; @@ -5708,7 +5717,7 @@ in bin_replace_string = callPackage ../development/tools/misc/bin_replace_string { }; - binutils = if stdenv.isDarwin then darwin.binutils else binutils-raw; + binutils = if stdenv.isDarwin then self.darwin.binutils else self.binutils-raw; binutils-raw = callPackage ../development/tools/misc/binutils { inherit noSysDirs; }; @@ -5726,7 +5735,7 @@ in bison2 = callPackage ../development/tools/parsing/bison/2.x.nix { }; bison3 = callPackage ../development/tools/parsing/bison/3.x.nix { }; - bison = bison3; + bison = self.bison3; bossa = callPackage ../development/tools/misc/bossa { wxGTK = wxGTK30; @@ -5833,9 +5842,9 @@ in inherit (darwin) ps; }; - cmakeCurses = cmake.override { useNcurses = true; }; + cmakeCurses = self.cmake.override { useNcurses = true; }; - cmakeWithGui = cmakeCurses.override { useQt4 = true; }; + cmakeWithGui = self.cmakeCurses.override { useQt4 = true; }; coccinelle = callPackage ../development/tools/misc/coccinelle { }; @@ -5913,7 +5922,7 @@ in inherit (darwin.apple_sdk.frameworks) CoreServices; }; - doxygen_gui = lowPrio (doxygen.override { inherit qt4; }); + doxygen_gui = lowPrio (self.doxygen.override { inherit qt4; }); drush = callPackage ../development/tools/misc/drush { }; @@ -5972,10 +5981,10 @@ in gnumake380 = callPackage ../development/tools/build-managers/gnumake/3.80 { }; gnumake381 = callPackage ../development/tools/build-managers/gnumake/3.81 { }; gnumake382 = callPackage ../development/tools/build-managers/gnumake/3.82 { }; - gnumake3 = gnumake382; + gnumake3 = self.gnumake382; gnumake40 = callPackage ../development/tools/build-managers/gnumake/4.0 { }; gnumake41 = callPackage ../development/tools/build-managers/gnumake/4.1 { }; - gnumake = gnumake41; + gnumake = self.gnumake41; gob2 = callPackage ../development/tools/misc/gob2 { }; @@ -6048,7 +6057,7 @@ in lemon = callPackage ../development/tools/parsing/lemon { }; - libtool = libtool_2; + libtool = self.libtool_2; libtool_1_5 = callPackage ../development/tools/misc/libtool { }; @@ -6291,7 +6300,7 @@ in inherit (gnu) mig; }; - gdbGuile = lowPrio (gdb.override { inherit guile; }); + gdbGuile = lowPrio (self.gdb.override { inherit guile; }); gdbCross = lowPrio (callPackage ../development/tools/misc/gdb { target = crossSystem; @@ -6382,7 +6391,7 @@ in aspellDicts = recurseIntoAttrs (callPackages ../development/libraries/aspell/dictionaries.nix {}); - aterm = aterm25; + aterm = self.aterm25; aterm25 = callPackage ../development/libraries/aterm/2.5.nix { }; @@ -6419,7 +6428,7 @@ in boost155 = callPackage ../development/libraries/boost/1.55.nix { }; boost159 = callPackage ../development/libraries/boost/1.59.nix { }; boost160 = callPackage ../development/libraries/boost/1.60.nix { }; - boost = boost160; + boost = self.boost160; boost_process = callPackage ../development/libraries/boost-process { }; @@ -6497,7 +6506,7 @@ in clucene_core_1 = callPackage ../development/libraries/clucene-core { }; - clucene_core = clucene_core_1; + clucene_core = self.clucene_core_1; clutter = callPackage ../development/libraries/clutter { }; @@ -6563,22 +6572,22 @@ in # Make bdb5 the default as it is the last release under the custom # bsd-like license - db = db5; - db4 = db48; + db = self.db5; + db4 = self.db48; db44 = callPackage ../development/libraries/db/db-4.4.nix { }; db45 = callPackage ../development/libraries/db/db-4.5.nix { }; db47 = callPackage ../development/libraries/db/db-4.7.nix { }; db48 = callPackage ../development/libraries/db/db-4.8.nix { }; - db5 = db53; + db5 = self.db53; db53 = callPackage ../development/libraries/db/db-5.3.nix { }; - db6 = db60; + db6 = self.db60; db60 = callPackage ../development/libraries/db/db-6.0.nix { }; dbus = callPackage ../development/libraries/dbus { }; dbus_cplusplus = callPackage ../development/libraries/dbus-cplusplus { }; dbus_glib = callPackage ../development/libraries/dbus-glib { }; dbus_java = callPackage ../development/libraries/java/dbus-java { }; - dbus_python = pythonPackages.dbus; + dbus_python = self.pythonPackages.dbus; dbus-sharp-1_0 = callPackage ../development/libraries/dbus-sharp/dbus-sharp-1.0.nix { }; dbus-sharp-2_0 = callPackage ../development/libraries/dbus-sharp { }; @@ -6587,9 +6596,9 @@ in dbus-sharp-glib-2_0 = callPackage ../development/libraries/dbus-sharp-glib { }; # Should we deprecate these? Currently there are many references. - dbus_tools = pkgs.dbus.out; - dbus_libs = pkgs.dbus; - dbus_daemon = pkgs.dbus.daemon; + dbus_tools = self.dbus.out; + dbus_libs = self.dbus; + dbus_daemon = self.dbus.daemon; dee = callPackage ../development/libraries/dee { }; @@ -6666,10 +6675,10 @@ in inherit (darwin.apple_sdk.frameworks) Cocoa; }; # Aliases - ffmpeg_0 = ffmpeg_0_10; - ffmpeg_1 = ffmpeg_1_2; - ffmpeg_2 = ffmpeg_2_8; - ffmpeg = ffmpeg_2; + ffmpeg_0 = self.ffmpeg_0_10; + ffmpeg_1 = self.ffmpeg_1_2; + ffmpeg_2 = self.ffmpeg_2_8; + ffmpeg = self.ffmpeg_2; ffmpeg-full = callPackage ../development/libraries/ffmpeg-full { # The following need to be fixed on Darwin @@ -6692,9 +6701,9 @@ in ffms = callPackage ../development/libraries/ffms { }; fftw = callPackage ../development/libraries/fftw { }; - fftwSinglePrec = fftw.override { precision = "single"; }; - fftwFloat = fftwSinglePrec; # the configure option is just an alias - fftwLongDouble = fftw.override { precision = "long-double"; }; + fftwSinglePrec = self.fftw.override { precision = "single"; }; + fftwFloat = self.fftwSinglePrec; # the configure option is just an alias + fftwLongDouble = self.fftw.override { precision = "long-double"; }; filter-audio = callPackage ../development/libraries/filter-audio {}; @@ -6748,7 +6757,7 @@ in funambol = callPackage ../development/libraries/funambol { }; - fam = gamin; + fam = self.gamin; gamin = callPackage ../development/libraries/gamin { }; @@ -6764,7 +6773,7 @@ in gecode_3 = callPackage ../development/libraries/gecode/3.nix { }; gecode_4 = callPackage ../development/libraries/gecode { }; - gecode = gecode_4; + gecode = self.gecode_4; gegl = callPackage ../development/libraries/gegl { }; @@ -6774,7 +6783,7 @@ in geoclue2 = callPackage ../development/libraries/geoclue/2.0.nix {}; - geoipWithDatabase = makeOverridable (callPackage ../development/libraries/geoip) { + geoipWithDatabase = self.geoip.override { drvName = "geoip-tools"; geoipDatabase = geolite-legacy; }; @@ -6814,7 +6823,7 @@ in glew = callPackage ../development/libraries/glew { }; glew110 = callPackage ../development/libraries/glew/1.10.nix { }; - glfw = glfw3; + glfw = self.glfw3; glfw2 = callPackage ../development/libraries/glfw/2.x.nix { }; glfw3 = callPackage ../development/libraries/glfw/3.x.nix { }; @@ -6874,7 +6883,7 @@ in gmp4 = callPackage ../development/libraries/gmp/4.3.2.nix { }; # required by older GHC versions gmp5 = callPackage ../development/libraries/gmp/5.1.x.nix { }; gmp6 = callPackage ../development/libraries/gmp/6.x.nix { }; - gmp = gmp6; + gmp = self.gmp6; gmpxx = appendToName "with-cxx" (gmp.override { cxx = true; }); #GMP ex-satellite, so better keep it near gmp @@ -6950,7 +6959,7 @@ in gnu-efi = callPackage ../development/libraries/gnu-efi { }; - gnutls = gnutls34; + gnutls = self.gnutls34; gnutls33 = callPackage ../development/libraries/gnutls/3.3.nix { guileBindings = config.gnutls.guile or false; @@ -6992,7 +7001,7 @@ in }; glib = callPackage ../development/libraries/glib { }; - glib-tested = glib.override { # checked version separate to break cycles + glib-tested = self.glib.override { # checked version separate to break cycles doCheck = true; libffi = libffi.override { doCheck = true; }; }; @@ -7035,7 +7044,7 @@ in gtk3 = callPackage ../development/libraries/gtk+/3.x.nix { }; - gtk = pkgs.gtk2; + gtk = self.gtk2; gtkmm = callPackage ../development/libraries/gtkmm/2.x.nix { }; gtkmm3 = callPackage ../development/libraries/gtkmm/3.x.nix { }; @@ -7056,7 +7065,7 @@ in libgnomeprintui GConf gnomepanel; }; - gtk-sharp = gtk-sharp-2_0; + gtk-sharp = self.gtk-sharp-2_0; gtk-sharp-beans = callPackage ../development/libraries/gtk-sharp-beans { }; @@ -7076,10 +7085,10 @@ in # TODO : Let admin choose. # We are using mit-krb5 because it is better maintained - kerberos = libkrb5; + kerberos = self.libkrb5; heimdalFull = callPackage ../development/libraries/kerberos/heimdal.nix { }; - libheimdal = heimdalFull.override { type = "lib"; }; + libheimdal = self.heimdalFull.override { type = "lib"; }; harfbuzz = callPackage ../development/libraries/harfbuzz { }; harfbuzz-icu = callPackage ../development/libraries/harfbuzz { @@ -7091,7 +7100,7 @@ in herqq = callPackage ../development/libraries/herqq { }; - heyefi = haskellPackages.heyefi; + heyefi = self.haskellPackages.heyefi; hidapi = callPackage ../development/libraries/hidapi { libusb = libusb1; @@ -7222,11 +7231,11 @@ in krb5Full = callPackage ../development/libraries/kerberos/krb5.nix { inherit (darwin) bootstrap_cmds; }; - libkrb5 = krb5Full.override { type = "lib"; }; + libkrb5 = self.krb5Full.override { type = "lib"; }; LASzip = callPackage ../development/libraries/LASzip { }; - lcms = lcms1; + lcms = self.lcms1; lcms1 = callPackage ../development/libraries/lcms { }; @@ -7288,9 +7297,8 @@ in libaudclient = callPackage ../development/libraries/libaudclient { }; - libav = libav_11; # branch 11 is API-compatible with branch 10 - libav_all = callPackage ../development/libraries/libav { }; - inherit (libav_all) libav_0_8 libav_11; + libav = self.libav_11; # branch 11 is API-compatible with branch 10 + inherit (callPackages ../development/libraries/libav { }) libav_0_8 libav_11; libavc1394 = callPackage ../development/libraries/libavc1394 { }; @@ -7309,10 +7317,10 @@ in libcaca = callPackage ../development/libraries/libcaca { }; libcanberra = callPackage ../development/libraries/libcanberra { }; - libcanberra_gtk3 = libcanberra.override { gtk = gtk3; }; + libcanberra_gtk3 = self.libcanberra.override { gtk = gtk3; }; libcanberra_kde = if (config.kde_runtime.libcanberraWithoutGTK or true) - then libcanberra.override { gtk = null; } - else libcanberra; + then self.libcanberra.override { gtk = null; } + else self.libcanberra; libcec = callPackage ../development/libraries/libcec { }; libcec_platform = callPackage ../development/libraries/libcec/platform.nix { }; @@ -7387,7 +7395,7 @@ in sqlite = null; }; - libdbiDrivers = libdbiDriversBase.override { + libdbiDrivers = self.libdbiDriversBase.override { inherit sqlite libmysql; }; @@ -7405,7 +7413,7 @@ in inherit (darwin.apple_sdk.frameworks) OpenGL; }; - libdevil-nox = libdevil.override { + libdevil-nox = self.libdevil.override { libX11 = null; mesa = null; }; @@ -7502,7 +7510,7 @@ in liblo = callPackage ../development/libraries/liblo { }; - liblrdf = librdf; + liblrdf = self.librdf; liblscp = callPackage ../development/libraries/liblscp { }; @@ -7703,7 +7711,7 @@ in libjpeg_original = callPackage ../development/libraries/libjpeg { }; libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { }; - libjpeg = if stdenv.isLinux then libjpeg_turbo else libjpeg_original; # some problems, both on FreeBSD and Darwin + libjpeg = if stdenv.isLinux then self.libjpeg_turbo else self.libjpeg_original; # some problems, both on FreeBSD and Darwin libjpeg62 = callPackage ../development/libraries/libjpeg/62.nix { libtool = libtool_1_5; @@ -7769,7 +7777,7 @@ in libmusicbrainz5 = callPackage ../development/libraries/libmusicbrainz/5.x.nix { }; - libmusicbrainz = libmusicbrainz3; + libmusicbrainz = self.libmusicbrainz3; libmwaw = callPackage ../development/libraries/libmwaw { }; @@ -7836,7 +7844,7 @@ in libpgf = callPackage ../development/libraries/libpgf { }; libpng = callPackage ../development/libraries/libpng { }; - libpng_apng = libpng.override { apngSupport = true; }; + libpng_apng = self.libpng.override { apngSupport = true; }; libpng12 = callPackage ../development/libraries/libpng/12.nix { }; libpaper = callPackage ../development/libraries/libpaper { }; @@ -7957,7 +7965,7 @@ in libupnp = callPackage ../development/libraries/pupnp { }; - giflib = giflib_5_1; + giflib = self.giflib_5_1; giflib_4_1 = callPackage ../development/libraries/giflib/4.1.nix { }; giflib_5_0 = callPackage ../development/libraries/giflib/5.0.nix { }; giflib_5_1 = callPackage ../development/libraries/giflib/5.1.nix { }; @@ -7990,9 +7998,9 @@ in inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreServices; }); - libuv = libuvVersions.v1_7_5; + libuv = self.libuvVersions.v1_7_5; - libv4l = lowPrio (v4l_utils.override { + libv4l = lowPrio (self.v4l_utils.override { alsaLib = null; libX11 = null; qt4 = null; @@ -8029,7 +8037,7 @@ in libwmf = callPackage ../development/libraries/libwmf { }; - libwnck = libwnck2; + libwnck = self.libwnck2; libwnck2 = callPackage ../development/libraries/libwnck { }; libwnck3 = callPackage ../development/libraries/libwnck/3.x.nix { }; @@ -8055,13 +8063,13 @@ in libxml2 = callPackage ../development/libraries/libxml2 { }; libxml2Python = pkgs.buildEnv { # slightly hacky - name = "libxml2+py-${pkgs.libxml2.version}"; - paths = with libxml2; [ dev bin py ]; - inherit (pkgs.libxml2) passthru; + name = "libxml2+py-${self.libxml2.version}"; + paths = with self.libxml2; [ dev bin py ]; + inherit (self.libxml2) passthru; # the hook to find catalogs is hidden by buildEnv postBuild = '' mkdir "$out/nix-support" - cp '${libxml2.dev}/nix-support/propagated-native-build-inputs' "$out/nix-support/" + cp '${self.libxml2.dev}/nix-support/propagated-native-build-inputs' "$out/nix-support/" ''; }; @@ -8251,7 +8259,7 @@ in newt = callPackage ../development/libraries/newt { }; nghttp2 = callPackage ../development/libraries/nghttp2 { }; - libnghttp2 = nghttp2.override { + libnghttp2 = self.nghttp2.override { prefix = "lib"; fetchurl = fetchurlBoot; }; @@ -8345,8 +8353,7 @@ in openslp = callPackage ../development/libraries/openslp {}; - # 2.3 breaks some backward-compability - libressl = libressl_2_2; + libressl = self.libressl_2_3; libressl_2_2 = callPackage ../development/libraries/libressl/2.2.nix { fetchurl = fetchurlBoot; }; @@ -8495,7 +8502,7 @@ in libpng = libpng12; }; - qt4 = pkgs.kde4.qt4; + qt4 = self.kde4.qt4; qt48 = callPackage ../development/libraries/qt-4.x/4.8 { # GNOME dependencies are not used unless gtkStyle == true @@ -8522,7 +8529,7 @@ in let imported = import ../development/libraries/qt-5/5.5 { inherit pkgs; }; in recurseIntoAttrs (imported.override (super: qt5LibsFun)); - qt5 = qt54; + qt5 = self.qt54; qt5LibsFun = self: with self; { @@ -8572,10 +8579,10 @@ in telepathy = callPackage ../development/libraries/telepathy/qt { }; - vlc = callPackage ../applications/video/vlc { + vlc = lowPrio (callPackage ../applications/video/vlc { qt4 = null; withQt5 = true; - }; + }); }; @@ -9485,7 +9492,7 @@ in rdf4store = callPackage ../servers/http/4store { }; - apacheHttpd = pkgs.apacheHttpd_2_4; + apacheHttpd = self.apacheHttpd_2_4; apacheHttpd_2_2 = callPackage ../servers/http/apache-httpd/2.2.nix { sslSupport = true; @@ -9525,7 +9532,7 @@ in cassandra_1_2 = callPackage ../servers/nosql/cassandra/1.2.nix { }; cassandra_2_0 = callPackage ../servers/nosql/cassandra/2.0.nix { }; cassandra_2_1 = callPackage ../servers/nosql/cassandra/2.1.nix { }; - cassandra = cassandra_2_1; + cassandra = self.cassandra_2_1; apache-jena = callPackage ../servers/nosql/apache-jena/binary.nix { java = jdk; @@ -9535,7 +9542,7 @@ in java = jdk; }; - fuseki = apache-jena-fuseki; + fuseki = self.apache-jena-fuseki; apcupsd = callPackage ../servers/apcupsd { }; @@ -9878,6 +9885,8 @@ in pumpio = callPackage ../servers/web-apps/pump.io { }; + pure-ftpd = callPackage ../servers/ftp/pure-ftpd { }; + pyIRCt = callPackage ../servers/xmpp/pyIRCt {}; pyMAILt = callPackage ../servers/xmpp/pyMAILt {}; @@ -10017,6 +10026,8 @@ in zookeeper_mt = callPackage ../development/libraries/zookeeper_mt { }; + xqilla = callPackage ../development/tools/xqilla { }; + xquartz = callPackage ../servers/x11/xquartz { }; quartz-wm = callPackage ../servers/x11/quartz-wm { stdenv = clangStdenv; @@ -10082,17 +10093,13 @@ in microcodeIntel = callPackage ../os-specific/linux/microcode/intel.nix { }; - apparmor = callPackage ../os-specific/linux/apparmor { swig = swig2; }; - libapparmor = apparmor.libapparmor; - apparmor-pam = apparmor.apparmor-pam; - apparmor-parser = apparmor.apparmor-parser; - apparmor-profiles = apparmor.apparmor-profiles; - apparmor-utils = apparmor.apparmor-utils; + inherit (callPackages ../os-specific/linux/apparmor { swig = swig2; }) + libapparmor apparmor-pam apparmor-parser apparmor-profiles apparmor-utils; atop = callPackage ../os-specific/linux/atop { }; audit = callPackage ../os-specific/linux/audit { }; - libaudit = audit; + libaudit = self.audit; b43Firmware_5_1_138 = callPackage ../os-specific/linux/firmware/b43-firmware/5.1.138.nix { }; @@ -10111,7 +10118,7 @@ in # Needed for LibreOffice bluez5_28 = lowPrio (callPackage ../os-specific/linux/bluez/bluez5_28.nix { }); - bluez = bluez5; + bluez = self.bluez5; inherit (pythonPackages) bedup; @@ -10195,7 +10202,7 @@ in inherit (darwin) libobjc; }; - devicemapper = lvm2; + devicemapper = self.lvm2; disk_indicator = callPackage ../os-specific/linux/disk-indicator { }; @@ -10248,7 +10255,7 @@ in ebtables = callPackage ../os-specific/linux/ebtables { }; - eject = utillinux; + eject = self.utillinux; facetimehd-firmware = callPackage ../os-specific/linux/firmware/facetimehd-firmware { }; @@ -10259,7 +10266,7 @@ in fatrace = callPackage ../os-specific/linux/fatrace { }; ffadoFull = callPackage ../os-specific/linux/ffado { }; - libffado = ffadoFull.override { prefix = "lib"; }; + libffado = self.ffadoFull.override { prefix = "lib"; }; fbterm = callPackage ../os-specific/linux/fbterm { }; @@ -10283,7 +10290,7 @@ in ncurses = null; # Keep curses disabled for lack of value }; - gpm-ncurses = gpm.override { inherit ncurses; }; + gpm-ncurses = self.gpm.override { inherit ncurses; }; gradm = callPackage ../os-specific/linux/gradm { flex = flex_2_5_35; @@ -10324,6 +10331,11 @@ in }; iptables = callPackage ../os-specific/linux/iptables { }; + # The freshest version — possibly crashing connmand? + # https://github.com/NixOS/nixpkgs/commit/fe00c8a83f696e3430ee4aa3fc850f171da52450 + iptables_16 = callPackage ../os-specific/linux/iptables/1.6.nix { + flex = flex_2_5_35; + }; ipset = callPackage ../os-specific/linux/ipset { }; @@ -10363,7 +10375,7 @@ in # -- Linux kernel expressions ------------------------------------------------ - linuxHeaders = linuxHeaders_3_18; + linuxHeaders = self.linuxHeaders_3_18; linuxHeaders24Cross = forceNativeDrv (callPackage ../os-specific/linux/kernel-headers/2.4.nix { cross = assert crossSystem != null; crossSystem; @@ -10376,12 +10388,12 @@ in linuxHeaders_3_18 = callPackage ../os-specific/linux/kernel-headers/3.18.nix { }; # We can choose: - linuxHeadersCrossChooser = ver : if ver == "2.4" then linuxHeaders24Cross - else if ver == "2.6" then linuxHeaders26Cross + linuxHeadersCrossChooser = ver : if ver == "2.4" then self.linuxHeaders24Cross + else if ver == "2.6" then self.linuxHeaders26Cross else throw "Unknown linux kernel version"; linuxHeadersCross = assert crossSystem != null; - linuxHeadersCrossChooser crossSystem.platform.kernelMajor; + self.linuxHeadersCrossChooser crossSystem.platform.kernelMajor; kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { }; @@ -10453,7 +10465,7 @@ in }; linux_4_4 = callPackage ../os-specific/linux/kernel/linux-4.4.nix { - kernelPatches = [ kernelPatches.bridge_stp_helper ] + kernelPatches = [ kernelPatches.bridge_stp_helper kernelPatches.qat_common_Makefile ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu kernelPatches.mips_fpu_sigill @@ -10494,7 +10506,7 @@ in ]; }; - linux_chromiumos_latest = linux_chromiumos_3_18; + linux_chromiumos_latest = self.linux_chromiumos_3_18; /* grsec configuration @@ -10545,36 +10557,36 @@ in grsecOptions = { kernelPatch = patch; } // opts; }); - grKernel = patch: opts: (mkGrsecurity patch opts).grsecKernel; - grPackage = patch: opts: recurseIntoAttrs (mkGrsecurity patch opts).grsecPackage; + grKernel = patch: opts: (self.mkGrsecurity patch opts).grsecKernel; + grPackage = patch: opts: recurseIntoAttrs (self.mkGrsecurity patch opts).grsecPackage; # grsecurity kernels (see also linuxPackages_grsec_*) - linux_grsec_desktop_3_14 = grKernel kernelPatches.grsecurity_3_14 grFlavors.desktop; - linux_grsec_server_3_14 = grKernel kernelPatches.grsecurity_3_14 grFlavors.server; - linux_grsec_server_xen_3_14 = grKernel kernelPatches.grsecurity_3_14 grFlavors.server_xen; + linux_grsec_desktop_3_14 = self.grKernel kernelPatches.grsecurity_3_14 self.grFlavors.desktop; + linux_grsec_server_3_14 = self.grKernel kernelPatches.grsecurity_3_14 self.grFlavors.server; + linux_grsec_server_xen_3_14 = self.grKernel kernelPatches.grsecurity_3_14 self.grFlavors.server_xen; - linux_grsec_desktop_4_1 = grKernel kernelPatches.grsecurity_4_1 grFlavors.desktop; - linux_grsec_server_4_1 = grKernel kernelPatches.grsecurity_4_1 grFlavors.server; - linux_grsec_server_xen_4_1 = grKernel kernelPatches.grsecurity_4_1 grFlavors.server_xen; + linux_grsec_desktop_4_1 = self.grKernel kernelPatches.grsecurity_4_1 self.grFlavors.desktop; + linux_grsec_server_4_1 = self.grKernel kernelPatches.grsecurity_4_1 self.grFlavors.server; + linux_grsec_server_xen_4_1 = self.grKernel kernelPatches.grsecurity_4_1 self.grFlavors.server_xen; - linux_grsec_desktop_4_4 = grKernel kernelPatches.grsecurity_4_4 grFlavors.desktop; - linux_grsec_server_4_4 = grKernel kernelPatches.grsecurity_4_4 grFlavors.server; - linux_grsec_server_xen_4_4 = grKernel kernelPatches.grsecurity_4_4 grFlavors.server_xen; + linux_grsec_desktop_4_4 = self.grKernel kernelPatches.grsecurity_4_4 self.grFlavors.desktop; + linux_grsec_server_4_4 = self.grKernel kernelPatches.grsecurity_4_4 self.grFlavors.server; + linux_grsec_server_xen_4_4 = self.grKernel kernelPatches.grsecurity_4_4 self.grFlavors.server_xen; - linux_grsec_desktop_latest = grKernel kernelPatches.grsecurity_latest grFlavors.desktop; - linux_grsec_server_latest = grKernel kernelPatches.grsecurity_latest grFlavors.server; - linux_grsec_server_xen_latest = grKernel kernelPatches.grsecurity_latest grFlavors.server_xen; + linux_grsec_desktop_latest = self.grKernel kernelPatches.grsecurity_latest self.grFlavors.desktop; + linux_grsec_server_latest = self.grKernel kernelPatches.grsecurity_latest self.grFlavors.server; + linux_grsec_server_xen_latest = self.grKernel kernelPatches.grsecurity_latest self.grFlavors.server_xen; # grsecurity: old names - linux_grsec_testing_desktop = linux_grsec_desktop_latest; - linux_grsec_testing_server = linux_grsec_server_latest; - linux_grsec_testing_server_xen = linux_grsec_server_xen_latest; + linux_grsec_testing_desktop = self.linux_grsec_desktop_latest; + linux_grsec_testing_server = self.linux_grsec_server_latest; + linux_grsec_testing_server_xen = self.linux_grsec_server_xen_latest; - linux_grsec_stable_desktop = linux_grsec_desktop_3_14; - linux_grsec_stable_server = linux_grsec_server_3_14; - linux_grsec_stable_server_xen = linux_grsec_server_xen_3_14; + linux_grsec_stable_desktop = self.linux_grsec_desktop_3_14; + linux_grsec_stable_server = self.linux_grsec_server_3_14; + linux_grsec_stable_server_xen = self.linux_grsec_server_xen_3_14; /* Linux kernel modules are inherently tied to a specific kernel. So rather than provide specific instances of those packages for a @@ -10694,67 +10706,67 @@ in }; # The current default kernel / kernel modules. - linuxPackages = linuxPackages_4_4; - linux = linuxPackages.kernel; + linuxPackages = self.linuxPackages_4_4; + linux = self.linuxPackages.kernel; # Update this when adding the newest kernel major version! - linuxPackages_latest = pkgs.linuxPackages_4_5; - linux_latest = linuxPackages_latest.kernel; + linuxPackages_latest = self.linuxPackages_4_5; + linux_latest = self.linuxPackages_latest.kernel; # Build the kernel modules for the some of the kernels. - linuxPackages_mptcp = linuxPackagesFor pkgs.linux_mptcp linuxPackages_mptcp; - linuxPackages_rpi = linuxPackagesFor pkgs.linux_rpi linuxPackages_rpi; - linuxPackages_3_10 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_10 linuxPackages_3_10); - linuxPackages_3_10_tuxonice = linuxPackagesFor pkgs.linux_3_10_tuxonice linuxPackages_3_10_tuxonice; - linuxPackages_3_12 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_12 linuxPackages_3_12); - linuxPackages_3_14 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_14 linuxPackages_3_14); - linuxPackages_3_18 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_18 linuxPackages_3_18); - linuxPackages_4_1 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_1 linuxPackages_4_1); - linuxPackages_4_3 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_3 linuxPackages_4_3); - linuxPackages_4_4 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_4 linuxPackages_4_4); - linuxPackages_4_5 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_5 linuxPackages_4_5); - linuxPackages_testing = recurseIntoAttrs (linuxPackagesFor pkgs.linux_testing linuxPackages_testing); + linuxPackages_mptcp = self.linuxPackagesFor self.linux_mptcp linuxPackages_mptcp; + linuxPackages_rpi = self.linuxPackagesFor self.linux_rpi linuxPackages_rpi; + linuxPackages_3_10 = recurseIntoAttrs (self.linuxPackagesFor self.linux_3_10 linuxPackages_3_10); + linuxPackages_3_10_tuxonice = self.linuxPackagesFor self.linux_3_10_tuxonice linuxPackages_3_10_tuxonice; + linuxPackages_3_12 = recurseIntoAttrs (self.linuxPackagesFor self.linux_3_12 linuxPackages_3_12); + linuxPackages_3_14 = recurseIntoAttrs (self.linuxPackagesFor self.linux_3_14 linuxPackages_3_14); + linuxPackages_3_18 = recurseIntoAttrs (self.linuxPackagesFor self.linux_3_18 linuxPackages_3_18); + linuxPackages_4_1 = recurseIntoAttrs (self.linuxPackagesFor self.linux_4_1 linuxPackages_4_1); + linuxPackages_4_3 = recurseIntoAttrs (self.linuxPackagesFor self.linux_4_3 linuxPackages_4_3); + linuxPackages_4_4 = recurseIntoAttrs (self.linuxPackagesFor self.linux_4_4 linuxPackages_4_4); + linuxPackages_4_5 = recurseIntoAttrs (self.linuxPackagesFor self.linux_4_5 linuxPackages_4_5); + linuxPackages_testing = recurseIntoAttrs (self.linuxPackagesFor self.linux_testing linuxPackages_testing); linuxPackages_custom = {version, src, configfile}: - let linuxPackages_self = (linuxPackagesFor (pkgs.linuxManualConfig {inherit version src configfile; - allowImportFromDerivation=true;}) + let linuxPackages_self = (self.linuxPackagesFor (self.linuxManualConfig {inherit version src configfile; + allowImportFromDerivation=true;}) linuxPackages_self); in recurseIntoAttrs linuxPackages_self; # Build a kernel for Xen dom0 - linuxPackages_latest_xen_dom0 = recurseIntoAttrs (linuxPackagesFor (pkgs.linux_latest.override { features.xen_dom0=true; }) linuxPackages_latest); + linuxPackages_latest_xen_dom0 = recurseIntoAttrs (self.linuxPackagesFor (self.linux_latest.override { features.xen_dom0=true; }) linuxPackages_latest); # grsecurity packages - linuxPackages_grsec_desktop_3_14 = grPackage kernelPatches.grsecurity_3_14 grFlavors.desktop; - linuxPackages_grsec_server_3_14 = grPackage kernelPatches.grsecurity_3_14 grFlavors.server; - linuxPackages_grsec_server_xen_3_14 = grPackage kernelPatches.grsecurity_3_14 grFlavors.server_xen; + linuxPackages_grsec_desktop_3_14 = self.grPackage kernelPatches.grsecurity_3_14 self.grFlavors.desktop; + linuxPackages_grsec_server_3_14 = self.grPackage kernelPatches.grsecurity_3_14 self.grFlavors.server; + linuxPackages_grsec_server_xen_3_14 = self.grPackage kernelPatches.grsecurity_3_14 self.grFlavors.server_xen; - linuxPackages_grsec_desktop_4_1 = grPackage kernelPatches.grsecurity_4_1 grFlavors.desktop; - linuxPackages_grsec_server_4_1 = grPackage kernelPatches.grsecurity_4_1 grFlavors.server; - linuxPackages_grsec_server_xen_4_1 = grPackage kernelPatches.grsecurity_4_1 grFlavors.server_xen; + linuxPackages_grsec_desktop_4_1 = self.grPackage kernelPatches.grsecurity_4_1 self.grFlavors.desktop; + linuxPackages_grsec_server_4_1 = self.grPackage kernelPatches.grsecurity_4_1 self.grFlavors.server; + linuxPackages_grsec_server_xen_4_1 = self.grPackage kernelPatches.grsecurity_4_1 self.grFlavors.server_xen; - linuxPackages_grsec_desktop_4_4 = grPackage kernelPatches.grsecurity_4_4 grFlavors.desktop; - linuxPackages_grsec_server_4_4 = grPackage kernelPatches.grsecurity_4_4 grFlavors.server; - linuxPackages_grsec_server_xen_4_4 = grPackage kernelPatches.grsecurity_4_4 grFlavors.server_xen; + linuxPackages_grsec_desktop_4_4 = self.grPackage kernelPatches.grsecurity_4_4 self.grFlavors.desktop; + linuxPackages_grsec_server_4_4 = self.grPackage kernelPatches.grsecurity_4_4 self.grFlavors.server; + linuxPackages_grsec_server_xen_4_4 = self.grPackage kernelPatches.grsecurity_4_4 self.grFlavors.server_xen; - linuxPackages_grsec_desktop_latest = grPackage kernelPatches.grsecurity_latest grFlavors.desktop; - linuxPackages_grsec_server_latest = grPackage kernelPatches.grsecurity_latest grFlavors.server; - linuxPackages_grsec_server_xen_latest = grPackage kernelPatches.grsecurity_latest grFlavors.server_xen; + linuxPackages_grsec_desktop_latest = self.grPackage kernelPatches.grsecurity_latest self.grFlavors.desktop; + linuxPackages_grsec_server_latest = self.grPackage kernelPatches.grsecurity_latest self.grFlavors.server; + linuxPackages_grsec_server_xen_latest = self.grPackage kernelPatches.grsecurity_latest self.grFlavors.server_xen; # grsecurity: old names - linuxPackages_grsec_testing_desktop = linuxPackages_grsec_desktop_latest; - linuxPackages_grsec_testing_server = linuxPackages_grsec_server_latest; - linuxPackages_grsec_testing_server_xen = linuxPackages_grsec_server_xen_latest; + linuxPackages_grsec_testing_desktop = self.linuxPackages_grsec_desktop_latest; + linuxPackages_grsec_testing_server = self.linuxPackages_grsec_server_latest; + linuxPackages_grsec_testing_server_xen = self.linuxPackages_grsec_server_xen_latest; - linuxPackages_grsec_stable_desktop = linuxPackages_grsec_desktop_3_14; - linuxPackages_grsec_stable_server = linuxPackages_grsec_server_3_14; - linuxPackages_grsec_stable_server_xen = linuxPackages_grsec_server_xen_3_14; + linuxPackages_grsec_stable_desktop = self.linuxPackages_grsec_desktop_3_14; + linuxPackages_grsec_stable_server = self.linuxPackages_grsec_server_3_14; + linuxPackages_grsec_stable_server_xen = self.linuxPackages_grsec_server_xen_3_14; # ChromiumOS kernels - linuxPackages_chromiumos_3_14 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_chromiumos_3_14 linuxPackages_chromiumos_3_14); - linuxPackages_chromiumos_3_18 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_chromiumos_3_18 linuxPackages_chromiumos_3_18); - linuxPackages_chromiumos_latest = recurseIntoAttrs (linuxPackagesFor pkgs.linux_chromiumos_latest linuxPackages_chromiumos_latest); + linuxPackages_chromiumos_3_14 = recurseIntoAttrs (self.linuxPackagesFor self.linux_chromiumos_3_14 linuxPackages_chromiumos_3_14); + linuxPackages_chromiumos_3_18 = recurseIntoAttrs (self.linuxPackagesFor self.linux_chromiumos_3_18 linuxPackages_chromiumos_3_18); + linuxPackages_chromiumos_latest = recurseIntoAttrs (self.linuxPackagesFor self.linux_chromiumos_latest linuxPackages_chromiumos_latest); # A function to build a manually-configured kernel linuxManualConfig = pkgs.buildLinux; @@ -10996,8 +11008,8 @@ in }; # Provided with sysfsutils. - libsysfs = sysfsutils; - systool = sysfsutils; + libsysfs = self.sysfsutils; + systool = self.sysfsutils; sysklogd = callPackage ../os-specific/linux/sysklogd { }; @@ -11014,6 +11026,9 @@ in udev.lib = libudev.out; # ${systemd.udev.lib}/lib/libudev.* }; + # standalone cryptsetup generator for systemd + systemd-cryptsetup-generator = callPackage ../os-specific/linux/systemd/cryptsetup-generator.nix { }; + # In nixos, you can set systemd.package = pkgs.systemd_with_lvm2 to get # LVM2 working in systemd. systemd_with_lvm2 = pkgs.lib.overrideDerivation pkgs.systemd (p: { @@ -11262,9 +11277,9 @@ in docbook_xsl docbook_xsl_ns; - docbook_xml_xslt = docbook_xsl; + docbook_xml_xslt = self.docbook_xsl; - docbook5_xsl = docbook_xsl_ns; + docbook5_xsl = self.docbook_xsl_ns; dosemu_fonts = callPackage ../data/fonts/dosemu-fonts { }; @@ -11326,7 +11341,7 @@ in liberation_ttf_from_source = callPackage ../data/fonts/redhat-liberation-fonts { }; liberation_ttf_binary = callPackage ../data/fonts/redhat-liberation-fonts/binary.nix { }; - liberation_ttf = liberation_ttf_binary; + liberation_ttf = self.liberation_ttf_binary; libertine = callPackage ../data/fonts/libertine { }; @@ -11565,7 +11580,7 @@ in antiword = callPackage ../applications/office/antiword {}; - ardour = ardour4; + ardour = self.ardour4; ardour3 = callPackage ../applications/audio/ardour/ardour3.nix { inherit (gnome) libgnomecanvas libgnomecanvasmm; @@ -11604,8 +11619,8 @@ in altcoins = recurseIntoAttrs ( callPackage ../applications/altcoins { callPackage = newScope { boost = boost155; }; } ); - bitcoin = altcoins.bitcoin; - bitcoin-xt = altcoins.bitcoin-xt; + bitcoin = self.altcoins.bitcoin; + bitcoin-xt = self.altcoins.bitcoin-xt; aumix = callPackage ../applications/audio/aumix { gtkGUI = false; @@ -11613,12 +11628,12 @@ in autopanosiftc = callPackage ../applications/graphics/autopanosiftc { }; - avidemux_unwrapped = callPackage ../applications/video/avidemux { }; - - avidemux = callPackage ../applications/video/avidemux/wrapper.nix { - avidemux = avidemux_unwrapped; + avidemux_unwrapped = callPackage ../applications/video/avidemux { + libva = libva-full; # also wants libva-x11 }; + avidemux = callPackage ../applications/video/avidemux/wrapper.nix { }; + avogadro = callPackage ../applications/science/chemistry/avogadro { eigen = eigen2; }; @@ -11637,7 +11652,7 @@ in cairo = cairo.override { xcbSupport = true; }; luaPackages = luaPackages.override { inherit lua; }; }; - awesome = awesome-3-5; + awesome = self.awesome-3-5; awesomebump = qt5.callPackage ../applications/graphics/awesomebump { }; @@ -11647,7 +11662,7 @@ in backintime-qt4 = callPackage ../applications/networking/sync/backintime/qt4.nix { }; - backintime = backintime-qt4; + backintime = self.backintime-qt4; bandwidth = callPackage ../tools/misc/bandwidth { }; @@ -11753,7 +11768,7 @@ in cddiscid = callPackage ../applications/audio/cd-discid { }; - cdparanoia = cdparanoiaIII; + cdparanoia = self.cdparanoiaIII; cdparanoiaIII = callPackage ../applications/audio/cdparanoia { inherit (darwin) IOKit; @@ -11788,9 +11803,9 @@ in chronos = callPackage ../applications/networking/cluster/chronos { }; - chromiumBeta = lowPrio (chromium.override { channel = "beta"; }); + chromiumBeta = lowPrio (self.chromium.override { channel = "beta"; }); - chromiumDev = lowPrio (chromium.override { channel = "dev"; }); + chromiumDev = lowPrio (self.chromium.override { channel = "dev"; }); chuck = callPackage ../applications/audio/chuck { }; @@ -11848,7 +11863,7 @@ in comical = callPackage ../applications/graphics/comical { }; conkeror-unwrapped = callPackage ../applications/networking/browsers/conkeror { }; - conkeror = wrapFirefox conkeror-unwrapped { }; + conkeror = self.wrapFirefox conkeror-unwrapped { }; csdp = callPackage ../applications/science/math/csdp { liblapack = liblapackWithoutAtlas; @@ -11879,7 +11894,7 @@ in d4x = callPackage ../applications/misc/d4x { }; - darcs = haskell.lib.overrideCabal haskellPackages.darcs (drv: { + darcs = haskell.lib.overrideCabal self.haskellPackages.darcs (drv: { configureFlags = (stdenv.lib.remove "-flibrary" drv.configureFlags or []) ++ ["-f-library"]; enableSharedExecutables = false; enableSharedLibraries = false; @@ -11928,7 +11943,7 @@ in djvu2pdf = callPackage ../tools/typesetting/djvu2pdf { }; djview = callPackage ../applications/graphics/djview { }; - djview4 = pkgs.djview; + djview4 = self.djview; dmenu = callPackage ../applications/misc/dmenu { }; @@ -11936,10 +11951,9 @@ in dmenu2 = callPackage ../applications/misc/dmenu2 { }; - dmtx = dmtx-utils; + dmtx = self.dmtx-utils; - dmtx-utils = callPackage (callPackage ../tools/graphics/dmtx-utils) { - }; + dmtx-utils = callPackage ../tools/graphics/dmtx-utils { }; docker = callPackage ../applications/virtualization/docker { btrfs-progs = btrfs-progs_4_4_1; @@ -11991,10 +12005,10 @@ in elvis = callPackage ../applications/editors/elvis { }; - emacs = emacs24; - emacsPackages = emacs24Packages; - emacsPackagesNg = emacs24PackagesNg; - emacsMelpa = emacs24PackagesNg; # for backward compatibility + emacs = self.emacs24; + emacsPackages = self.emacs24Packages; + emacsPackagesNg = self.emacs24PackagesNg; + emacsMelpa = self.emacs24PackagesNg; # for backward compatibility emacs24 = callPackage ../applications/editors/emacs-24 { # use override to enable additional features @@ -12008,7 +12022,7 @@ in inherit (darwin.apple_sdk.frameworks) AppKit CoreWLAN GSS Kerberos ImageIO; }; - emacs24-nox = lowPrio (appendToName "nox" (emacs24.override { + emacs24-nox = lowPrio (appendToName "nox" (self.emacs24.override { withX = false; withGTK2 = false; withGTK3 = false; @@ -12377,15 +12391,15 @@ in enableGTK3 = false; }) firefox-unwrapped firefox-esr-unwrapped; - firefox = wrapFirefox firefox-unwrapped { }; - firefox-esr = wrapFirefox firefox-esr-unwrapped { }; + firefox = self.wrapFirefox firefox-unwrapped { }; + firefox-esr = self.wrapFirefox firefox-esr-unwrapped { }; firefox-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin { gconf = pkgs.gnome.GConf; inherit (pkgs.gnome) libgnome libgnomeui; }; - firefox-bin = wrapFirefox firefox-bin-unwrapped { + firefox-bin = self.wrapFirefox firefox-bin-unwrapped { browserName = "firefox"; name = "firefox-bin-" + (builtins.parseDrvName firefox-bin-unwrapped.name).version; @@ -12402,9 +12416,9 @@ in debug = config.flashplayer.debug or false; }; - flashplayer-standalone = pkgsi686Linux.flashplayer.sa; + flashplayer-standalone = self.pkgsi686Linux.flashplayer.sa; - flashplayer-standalone-debugger = (pkgsi686Linux.flashplayer.override { debug = true; }).sa; + flashplayer-standalone-debugger = (self.pkgsi686Linux.flashplayer.override { debug = true; }).sa; fluxbox = callPackage ../applications/window-managers/fluxbox { }; @@ -12454,7 +12468,7 @@ in wrapPython = pythonPackages.wrapPython; }; - gimp = gimp_2_8; + gimp = self.gimp_2_8; gimp-with-plugins = callPackage ../applications/graphics/gimp/wrapper.nix { gimp = gimp_2_8; @@ -12465,7 +12479,7 @@ in gitAndTools = recurseIntoAttrs (callPackage ../applications/version-management/git-and-tools {}); - inherit (gitAndTools) git gitFull gitSVN git-cola svn2git git-radar transcrypt git-crypt; + inherit (self.gitAndTools) git gitFull gitSVN git-cola svn2git git-radar transcrypt git-crypt; gitMinimal = git.override { withManual = false; @@ -12601,9 +12615,9 @@ in google-chrome = callPackage ../applications/networking/browsers/google-chrome { gconf = gnome.GConf; }; - google-chrome-beta = google-chrome.override { channel = "beta"; }; + google-chrome-beta = self.google-chrome.override { channel = "beta"; }; - google-chrome-dev = google-chrome.override { channel = "dev"; }; + google-chrome-dev = self.google-chrome.override { channel = "dev"; }; googleearth = callPackage_i686 ../applications/misc/googleearth { }; @@ -12731,7 +12745,7 @@ in inherit (perlPackages.override { pkgs = pkgs // { imagemagick = imagemagickBig;}; }) PerlMagick; }; - imagemagick_light = imagemagick.override { + imagemagick_light = self.imagemagick.override { bzip2 = null; zlib = null; libX11 = null; @@ -12749,7 +12763,7 @@ in libxml2 = null; }; - imagemagick = imagemagickBig.override { + imagemagick = self.imagemagickBig.override { ghostscript = null; }; @@ -12805,7 +12819,7 @@ in jackmeter = callPackage ../applications/audio/jackmeter { }; jackmix = callPackage ../applications/audio/jackmix { }; - jackmix_jack1 = jackmix.override { jack = jack1; }; + jackmix_jack1 = self.jackmix.override { jack = jack1; }; jalv = callPackage ../applications/audio/jalv { }; @@ -12916,7 +12930,7 @@ in libowfat = callPackage ../development/libraries/libowfat { }; librecad = callPackage ../applications/misc/librecad { }; - librecad2 = librecad; # backwards compatibility alias, added 2015-10 + librecad2 = self.librecad; # backwards compatibility alias, added 2015-10 libreoffice = callPackage ../applications/office/libreoffice { inherit (perlPackages) ArchiveZip CompressZlib; @@ -12949,7 +12963,7 @@ in ledger3 = callPackage ../applications/office/ledger { boost = boost155; }; - ledger = ledger3; + ledger = self.ledger3; lighttable = callPackage ../applications/editors/lighttable {}; @@ -13352,6 +13366,8 @@ in inherit (pkgs.kde4) kdelibs; }; + vivaldi = callPackage ../applications/networking/browsers/vivaldi {}; + opusfile = callPackage ../applications/audio/opusfile { }; opusTools = callPackage ../applications/audio/opus-tools { }; @@ -13726,10 +13742,12 @@ in st = callPackage ../applications/misc/st { conf = config.st.conf or null; + patches = config.st.patches or null; }; st-wayland = callPackage ../applications/misc/st/wayland.nix { conf = config.st.conf or null; + patches = config.st.patches or null; }; stag = callPackage ../applications/misc/stag { @@ -13754,7 +13772,7 @@ in sxiv = callPackage ../applications/graphics/sxiv { }; - bittorrentSync = bittorrentSync14; + bittorrentSync = self.bittorrentSync14; bittorrentSync14 = callPackage ../applications/networking/bittorrentsync/1.4.x.nix { }; bittorrentSync20 = callPackage ../applications/networking/bittorrentsync/2.0.x.nix { }; @@ -13769,7 +13787,7 @@ in withQt5 = false; }; - lightdm_qt = lightdm.override { withQt5 = true; }; + lightdm_qt = self.lightdm.override { withQt5 = true; }; lightdm_gtk_greeter = callPackage ../applications/display-managers/lightdm-gtk-greeter { }; @@ -14337,23 +14355,23 @@ in }; kodiPlain = callPackage ../applications/video/kodi { }; - xbmcPlain = kodiPlain; + xbmcPlain = self.kodiPlain; kodiPlugins = recurseIntoAttrs (callPackage ../applications/video/kodi/plugins.nix { kodi = kodiPlain; }); - xbmcPlugins = kodiPlugins; + xbmcPlugins = self.kodiPlugins; - kodi = wrapKodi { + kodi = self.wrapKodi { kodi = kodiPlain; }; - xbmc = kodi; + xbmc = self.kodi; kodi-retroarch-advanced-launchers = callPackage ../misc/emulators/retroarch/kodi-advanced-launchers.nix { cores = retroArchCores; }; - xbmc-retroarch-advanced-launchers = kodi-retroarch-advanced-launchers; + xbmc-retroarch-advanced-launchers = self.kodi-retroarch-advanced-launchers; xca = callPackage ../applications/misc/xca { }; @@ -14645,16 +14663,16 @@ in freeglut = null; }); - construo = construoBase.override { + construo = self.construoBase.override { inherit mesa freeglut; }; crack_attack = callPackage ../games/crack-attack { }; crafty = callPackage ../games/crafty { }; - craftyFull = appendToName "full" (crafty.override { fullVariant = true; }); + craftyFull = appendToName "full" (self.crafty.override { fullVariant = true; }); - crawlTiles = crawl.override { + crawlTiles = self.crawl.override { tileMode = true; }; @@ -14671,10 +14689,8 @@ in duckmarines = callPackage ../games/duckmarines { love = love_0_9; }; dwarf-fortress-packages = recurseIntoAttrs (callPackage ../games/dwarf-fortress { }); - - dwarf-fortress = dwarf-fortress-packages.dwarf-fortress.override { }; - - dwarf-therapist = dwarf-fortress-packages.dwarf-therapist; + inherit (self.dwarf-fortress-packages) + dwarf-fortress dwarf-therapist; d1x_rebirth = callPackage ../games/d1x-rebirth { }; @@ -14771,6 +14787,8 @@ in lgogdownloader = callPackage ../games/lgogdownloader { }; + liberal-crime-squad = callPackage ../games/liberal-crime-squad { }; + lincity = callPackage ../games/lincity {}; lincity_ng = callPackage ../games/lincity/ng.nix {}; @@ -15131,15 +15149,15 @@ in gnome3_18 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.18 { }); - gnome3 = gnome3_18; + gnome3 = self.gnome3_18; - gnome = recurseIntoAttrs gnome2; + gnome = recurseIntoAttrs self.gnome2; hsetroot = callPackage ../tools/X11/hsetroot { }; kakasi = callPackage ../tools/text/kakasi { }; - kde4 = recurseIntoAttrs pkgs.kde414; + kde4 = recurseIntoAttrs self.kde414; kde414 = kdePackagesFor @@ -15518,6 +15536,8 @@ in plink = callPackage ../applications/science/biology/plink/default.nix { }; + samtools = callPackage ../applications/science/biology/samtools/default.nix { }; + ### SCIENCE/MATH @@ -15533,7 +15553,7 @@ in withLapack = false; }; - atlasWithLapack = atlas.override { withLapack = true; }; + atlasWithLapack = self.atlas.override { withLapack = true; }; blas = callPackage ../development/libraries/science/math/blas { }; @@ -15545,11 +15565,11 @@ in # with atlas. Atlas, when built with liblapack as a dependency, uses 3.5.0 # without atlas. Etc. liblapackWithAtlas = callPackage ../development/libraries/science/math/liblapack {}; - liblapackWithoutAtlas = liblapackWithAtlas.override { atlas = null; }; + liblapackWithoutAtlas = self.liblapackWithAtlas.override { atlas = null; }; liblapack_3_5_0WithAtlas = callPackage ../development/libraries/science/math/liblapack/3.5.0.nix {}; - liblapack_3_5_0WithoutAtlas = liblapack_3_5_0WithAtlas.override { atlas = null; }; - liblapack = liblapackWithAtlas; - liblapack_3_5_0 = liblapack_3_5_0WithAtlas; + liblapack_3_5_0WithoutAtlas = self.liblapack_3_5_0WithAtlas.override { atlas = null; }; + liblapack = self.liblapackWithAtlas; + liblapack_3_5_0 = self.liblapack_3_5_0WithAtlas; liblbfgs = callPackage ../development/libraries/science/math/liblbfgs { }; @@ -15775,6 +15795,8 @@ in metis-prover = callPackage ../applications/science/logic/metis-prover { }; + mcrl2 = callPackage ../applications/science/logic/mcrl2 { }; + minisat = callPackage ../applications/science/logic/minisat {}; opensmt = callPackage ../applications/science/logic/opensmt { }; @@ -15821,7 +15843,7 @@ in z3 = callPackage ../applications/science/logic/z3 {}; z3_opt = callPackage ../applications/science/logic/z3_opt {}; - boolector = boolector15; + boolector = self.boolector15; boolector15 = callPackage ../applications/science/logic/boolector {}; boolector16 = lowPrio (callPackage ../applications/science/logic/boolector { useV16 = true; @@ -16018,7 +16040,7 @@ in enableAllFeatures = false; }; - dblatexFull = appendToName "full" (dblatex.override { + dblatexFull = appendToName "full" (self.dblatex.override { enableAllFeatures = true; }); @@ -16034,7 +16056,7 @@ in fakenes = callPackage ../misc/emulators/fakenes { }; - faust = faust2; + faust = self.faust2; faust1 = callPackage ../applications/audio/faust/faust1.nix { }; @@ -16079,7 +16101,7 @@ in cupsSupport = config.ghostscript.cups or (!stdenv.isDarwin); }; - ghostscriptX = appendToName "with-X" (ghostscript.override { + ghostscriptX = appendToName "with-X" (self.ghostscript.override { x11Support = true; }); @@ -16095,11 +16117,11 @@ in hplip = callPackage ../misc/drivers/hplip { }; - hplipWithPlugin = hplip.override { withPlugin = true; }; + hplipWithPlugin = self.hplip.override { withPlugin = true; }; hplip_3_15_9 = callPackage ../misc/drivers/hplip/3.15.9.nix { }; - hplipWithPlugin_3_15_9 = hplip_3_15_9.override { withPlugin = true; }; + hplipWithPlugin_3_15_9 = self.hplip_3_15_9.override { withPlugin = true; }; # using the new configuration style proposal which is unstable jack1 = callPackage ../misc/jackaudio/jack1.nix { }; @@ -16107,7 +16129,7 @@ in jack2Full = callPackage ../misc/jackaudio { libopus = libopus.override { withCustomModes = true; }; }; - libjack2 = jack2Full.override { prefix = "lib"; }; + libjack2 = self.jack2Full.override { prefix = "lib"; }; libjack2-git = callPackage ../misc/jackaudio/git.nix { }; keynav = callPackage ../tools/X11/keynav { }; @@ -16124,7 +16146,9 @@ in mongoc = callPackage ../development/libraries/mongoc { }; - mupen64plus = callPackage ../misc/emulators/mupen64plus { }; + mupen64plus = callPackage ../misc/emulators/mupen64plus { + stdenv = overrideCC stdenv gcc49; + }; inherit (callPackages ../tools/package-management/nix { storeDir = config.nix.storeDir or "/nix/store"; @@ -16390,7 +16414,7 @@ in }; vimprobable2 = wrapFirefox vimprobable2-unwrapped { }; - inherit (kde4) rekonq; + inherit (self.kde4) rekonq; vimb-unwrapped = callPackage ../applications/networking/browsers/vimb { webkit = webkitgtk2; diff --git a/pkgs/top-level/go-packages.nix b/pkgs/top-level/go-packages.nix index 1da324e5879..c0f1d84ae3d 100644 --- a/pkgs/top-level/go-packages.nix +++ b/pkgs/top-level/go-packages.nix @@ -195,6 +195,16 @@ let buildInputs = [ gohtml ]; }; + acme = buildFromGitHub { + rev = "v0.3.0"; + owner = "xenolf"; + repo = "lego"; + sha256 = "0hlnqdn793j4s43bhnmpi2lxgmjxs1ccg26alxnrcyw5x7p2vvdn"; + + subPackages = [ "acme" ]; + propagatedBuildInputs = [ crypto dns go-jose-v1 net ]; + }; + adapted = buildFromGitHub { rev = "eaea06aaff855227a71b1c58b18bc6de822e3e77"; version = "2015-06-03"; @@ -401,6 +411,18 @@ let propagatedBuildInputs = [ panicwrap revel ]; }; + caddy = buildFromGitHub { + rev = "9099375b11b7b5e62b831627c2927d1c4c666071"; + version = "v0.8.2"; + owner = "mholt"; + repo = "caddy"; + sha256 = "1zdy2sxir21ngh2ird01sv4fgj6sy3wl4s6k4piklri8ps1zw0k0"; + buildInputs = [ + acme blackfriday crypto go-humanize go-shlex go-syslog + http-authentication lumberjack-v2 toml websocket yaml-v2 + ]; + }; + cascadia = buildGoPackage rec { rev = "54abbbf07a45a3ef346ebe903e0715d9a3c19352"; #master name = "cascadia-${stdenv.lib.strings.substring 0 7 rev}"; @@ -661,11 +683,11 @@ let }; dns = buildFromGitHub { - rev = "e59f851c912767b1db587dcabee6e6652e495c75"; - version = "2015-07-22"; - owner = "miekg"; - repo = "dns"; - sha256 = "1zcj4drmmskwvjy5ld54qd8a34ls9651ysl3q7c2bcambax5r0hp"; + rev = "7e024ce8ce18b21b475ac6baf8fa3c42536bf2fa"; + version = "2016-03-28"; + owner = "miekg"; + repo = "dns"; + sha256 = "0hlwb52lnnj3c6papjk9i5w5cjdw6r7c891v4xksnfvk1f9cy9kl"; }; docopt-go = buildFromGitHub { @@ -1561,6 +1583,16 @@ let sha256 = "0qrcsh7j9mxcaspw8lfxh9hhflz55vj4aq1xy00v78301czq6jlj"; }; + go-jose-v1 = buildFromGitHub { + rev = "v1.0.1"; + owner = "square"; + repo = "go-jose"; + sha256 = "0asa1kl1qbx0cyayk44jhxxff0awpkwiw6va7yzrzjzhfc5kvg7p"; + propagatedBuildInputs = [ cli-go ]; + goPackagePath = "gopkg.in/square/go-jose.v1"; + goPackageAliases = [ "github.com/square/go-jose" ]; + }; + go-liblzma = buildFromGitHub { rev = "e74be71c3c60411922b5424e875d7692ea638b78"; version = "2016-01-01"; @@ -1702,6 +1734,20 @@ let }; }; + jp = buildFromGitHub { + rev = "0.1.2"; + owner = "jmespath"; + repo = "jp"; + sha256 = "1i0jl0c062crigkxqx8zpyqliz8j4d37y95cna33jl777kx42r6h"; + meta = with stdenv.lib; { + description = "A command line to JMESPath, an expression language for manipulating JSON"; + license = licenses.asl20; + homepage = http://jmespath.org; + maintainers = with maintainers; [ cransom ]; + platforms = platforms.unix; + }; + }; + mattn.go-runewidth = buildFromGitHub { rev = "d6bea18f789704b5f83375793155289da36a3c7f"; version = "2016-03-15"; @@ -1770,6 +1816,13 @@ let }; }; + go-shlex = buildFromGitHub { + rev = "3f9db97f856818214da2e1057f8ad84803971cff"; + owner = "flynn"; + repo = "go-shlex"; + sha256 = "2a6a6f8eb150260cd60881ec5f027b7d1d2946ee22c627b450773eaf3d1de4c8"; + }; + go-simplejson = buildFromGitHub { rev = "18db6e68d8fd9cbf2e8ebe4c81a78b96fd9bf05a"; version = "2015-03-31"; @@ -1996,6 +2049,13 @@ let buildInputs = [ crypto protobuf goamz rgbterm go-bindata go-homedir ldap g2s gox ]; }; + http-authentication = buildFromGitHub { + rev = "3eca13d6893afd7ecabe15f4445f5d2872a1b012"; + owner = "jimstudt"; + repo = "http-authentication"; + sha256 = "08601600811a172d7f806b541f05691e4bef812ed8a68f7de65fde9ee11a3cb7"; + }; + http2 = buildFromGitHub rec { rev = "f8202bc903bda493ebba4aa54922d78430c2c42f"; owner = "bradfitz"; @@ -2242,6 +2302,16 @@ let sha256 = "1hfj1lx7wdpifn16zqrl4xml6cj5gxbn6hfz1f46g2a6bdf0gcvs"; }; + lumberjack-v2 = buildFromGitHub { + rev = "v2.0"; + owner = "natefinch"; + repo = "lumberjack"; + sha256 = "1v92v8vkip36l2fs6l5dpp655151hrijjc781cif658r8nf7xr82"; + goPackagePath = "gopkg.in/natefinch/lumberjack.v2"; + goPackageAliases = [ "github.com/natefinch/lumberjack" ]; + }; + + lxd = buildFromGitHub { rev = "lxd-2.0.0.rc4"; owner = "lxc"; @@ -3410,10 +3480,10 @@ let }; skydns = buildFromGitHub { - rev = "2.5.2b"; + rev = "2.5.3a"; owner = "skynetservices"; repo = "skydns"; - sha256 = "01vac6bd71wky5jbd5k4a0x665bjn1cpmw7p655jrdcn5757c2lv"; + sha256 = "0i1iaif79cwnwm7pc8nxfa261cgl4zhm3p2a5a3smhy1ibgccpq7"; buildInputs = [ go-etcd rcrowley.go-metrics dns go-systemd prometheus.client_golang diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 3dc8d928e0d..7ba988fbc9c 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -967,7 +967,7 @@ let self = _self // overrides; _self = with self; { CatalystViewTT TemplateToolkit TestAggregate TestWWWMechanize TestWWWMechanizeCatalyst ]; propagatedBuildInputs = [ CatalystComponentInstancePerContext CatalystRuntime - ConfigAny HTMLFormFu Moose MooseXAttributeChained RegexpAssemble TaskWeaken + CGI ConfigAny HTMLFormFu Moose MooseXAttributeChained RegexpAssemble TaskWeaken namespaceautoclean ]; }; @@ -1463,7 +1463,7 @@ let self = _self // overrides; _self = with self; { sha256 = "06b8f1864101de69b2264ad3c3a2b15333e428cf9f5d17a777cfc61f8c64093f"; }; buildInputs = [ TestRequires ]; - propagatedBuildInputs = [ HTTPMessage ]; + propagatedBuildInputs = [ CGI HTTPMessage ]; meta = { homepage = https://github.com/tokuhirom/p5-cgi-emulate-psgi; description = "PSGI adapter for CGI"; @@ -1515,6 +1515,7 @@ let self = _self // overrides; _self = with self; { url = mirror://cpan/authors/id/M/MI/MIYAGAWA/CGI-PSGI-0.15.tar.gz; sha256 = "c50dcb10bf8486a9843baed032ad89d879ff2f41c993342dead62f947a598d91"; }; + propagatedBuildInputs = [ CGI ]; meta = { description = "Adapt CGI.pm to the PSGI protocol"; license = "perl"; @@ -3068,7 +3069,7 @@ let self = _self // overrides; _self = with self; { url = mirror://cpan/authors/id/J/JH/JHOBLITT/DateTime-Format-ISO8601-0.08.tar.gz; sha256 = "1syccqd5jlwms8v78ksnf68xijzl97jky5vbwhnyhxi5gvgfx8xk"; }; - propagatedBuildInputs = [ DateTime DateTimeFormatBuilder ]; + propagatedBuildInputs = [ DateTime DateTimeFormatBuilder ModuleBuild ]; meta = { description = "Parses ISO8601 formats"; license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ]; @@ -3110,7 +3111,7 @@ let self = _self // overrides; _self = with self; { url = "mirror://cpan/authors/id/X/XM/XMIKEW/${name}.tar.gz"; sha256 = "07cgz60gxvrv7xqvngyll60pa8cx93h3jyx9kc9wdkn95qbd864q"; }; - propagatedBuildInputs = [ DateTime DateTimeFormatBuilder ]; + propagatedBuildInputs = [ DateTime DateTimeFormatBuilder ModuleBuild ]; meta = { description = "Parse and format MySQL dates and times"; license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ]; @@ -4792,14 +4793,15 @@ let self = _self // overrides; _self = with self; { FileBaseDir = buildPerlPackage rec { version = "0.03"; name = "File-BaseDir-${version}"; - configurePhase = '' - preConfigure || true - perl Build.PL PREFIX="$out" prefix="$out" - ''; src = fetchurl { url = "mirror://cpan/modules/by-module/File/${name}.tar.gz"; sha256 = "0029cba7a3b5d8aa5f7d03cb1b7ba2bcf2829382f7f26aa3bee06fce8611a886"; }; + configurePhase = '' + preConfigure || true + perl Build.PL PREFIX="$out" prefix="$out" + ''; + propagatedBuildInputs = [ ModuleBuild ]; }; FileCheckTree = buildPerlPackage { @@ -5620,7 +5622,7 @@ let self = _self // overrides; _self = with self; { sha256 = "0fvilng85wc65pna898x7mp4hx73mhahl7j2s10gj76avmxdizsw"; }; buildInputs = [ FileShareDirInstall TestAggregate TestException ]; - propagatedBuildInputs = [ Clone ConfigAny DataVisitor DateTime + propagatedBuildInputs = [ CGI Clone ConfigAny DataVisitor DateTime DateTimeFormatBuilder DateTimeFormatNatural DateTimeFormatStrptime DateTimeLocale EmailValid FileShareDir HTMLScrubber HTMLTokeParserSimple HTTPMessage HashFlatten ListMoreUtils ModulePluggable Moose MooseXAliases @@ -5656,7 +5658,7 @@ let self = _self // overrides; _self = with self; { sha256 = "84ac24fb1d551f998145435265e5b6fd4a52ec61e4fadd3d7755eb648be2c4b2"; }; buildInputs = [ TestDeep ]; - propagatedBuildInputs = [ CacheCache ClassContainer ExceptionClass HTMLParser LogAny ParamsValidate ]; + propagatedBuildInputs = [ CacheCache CGI ClassContainer ExceptionClass HTMLParser LogAny ParamsValidate ]; meta = { homepage = http://metacpan.org/release/HTML-Mason; description = "High-performance, dynamic web site authoring system"; @@ -8912,7 +8914,7 @@ let self = _self // overrides; _self = with self; { url = mirror://cpan/authors/id/K/KG/KGRENNAN/Net-OAuth-0.28.tar.gz; sha256 = "0k4h4a5048h7qgyx25ih64x0l4airx8a6d9gjq08wmxcl2fk3z3v"; }; - buildInputs = [ TestWarn ]; + buildInputs = [ ModuleBuild TestWarn ]; propagatedBuildInputs = [ ClassAccessor ClassDataInheritable DigestHMAC DigestSHA1 LWPUserAgent URI ]; meta = { description = "An implementation of the OAuth protocol"; @@ -9032,6 +9034,7 @@ let self = _self // overrides; _self = with self; { url = mirror://cpan/authors/id/M/MM/MMIMS/Net-Twitter-Lite-0.11002.tar.gz; sha256 = "032gyn1h3r5d83wvz7nj3k7g50wcf73lbbmjc18466ml90vigys0"; }; + buildInputs = [ ModuleBuild ]; propagatedBuildInputs = [ CryptSSLeay LWPUserAgent NetOAuth URI ]; doCheck = false; meta = { @@ -10869,11 +10872,11 @@ let self = _self // overrides; _self = with self; { libfile-stripnondeterminism = buildPerlPackage rec { name = "libstrip-nondeterminism-${version}"; - version = "0.014"; + version = "0.016"; src = fetchurl { url = "http://http.debian.net/debian/pool/main/s/strip-nondeterminism/strip-nondeterminism_${version}.orig.tar.gz"; - sha256 = "0yiddi9r87iysa2msr6l5fc5631zmi5ldsy8m3sd9chrlhag361g"; + sha256 = "1y9lfhxgwyysybing72n3hng2db5njpk2dbb80vskdz75r7ffqjp"; }; buildInputs = [ ArchiveZip_1_53 pkgs.file ]; @@ -10882,11 +10885,11 @@ let self = _self // overrides; _self = with self; { strip-nondeterminism = buildPerlPackage rec { name = "strip-nondeterminism-${version}"; - version = "0.014"; + version = "0.016"; src = fetchurl { url = "http://http.debian.net/debian/pool/main/s/strip-nondeterminism/strip-nondeterminism_${version}.orig.tar.gz"; - sha256 = "0yiddi9r87iysa2msr6l5fc5631zmi5ldsy8m3sd9chrlhag361g"; + sha256 = "1y9lfhxgwyysybing72n3hng2db5njpk2dbb80vskdz75r7ffqjp"; }; buildInputs = [ ArchiveZip_1_53 libfile-stripnondeterminism pkgs.file ]; @@ -12260,7 +12263,7 @@ let self = _self // overrides; _self = with self; { url = mirror://cpan/authors/id/M/MR/MRAMBERG/Test-WWW-Mechanize-CGI-0.1.tar.gz; sha256 = "0bwwdk0iai5dlvvfpja971qpgvmf6yq67iag4z4szl9v5sra0xm5"; }; - propagatedBuildInputs = [ TestWWWMechanize WWWMechanizeCGI ]; + propagatedBuildInputs = [ CGI TestWWWMechanize WWWMechanizeCGI ]; meta = { maintainers = with maintainers; [ ocharles ]; platforms = stdenv.lib.platforms.unix; @@ -12733,6 +12736,7 @@ let self = _self // overrides; _self = with self; { url = mirror://cpan/authors/id/M/MA/MATTLAW/Text-Trim-1.02.tar.gz; sha256 = "1bnwjl5n04w8nnrzrm75ljn4pijqbijr9csfkjcs79h4gwn9lwqw"; }; + propagatedBuildInputs = [ CGI ModuleBuild ]; meta = { description = "Remove leading and/or trailing whitespace from strings"; license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index fe642ed0756..a8e3e93c302 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8048,12 +8048,12 @@ in modules // { django_1_9 = buildPythonPackage rec { name = "Django-${version}"; - version = "1.9.4"; + version = "1.9.5"; disabled = pythonOlder "2.7"; src = pkgs.fetchurl { url = "http://www.djangoproject.com/m/releases/1.9/${name}.tar.gz"; - sha256 = "1sdxixj4p3wx245dm608bqw5bdabl701qab0ar5wjivyd6mfga5d"; + sha256 = "19kaw9flk9jjz1n7q378waybxnkrrhkq240lby4zaaas62nnfip5"; }; # patch only $out/bin to avoid problems with starter templates (see #3134) @@ -8072,12 +8072,12 @@ in modules // { django_1_8 = buildPythonPackage rec { name = "Django-${version}"; - version = "1.8.11"; + version = "1.8.12"; disabled = pythonOlder "2.7"; src = pkgs.fetchurl { url = "http://www.djangoproject.com/m/releases/1.8/${name}.tar.gz"; - sha256 = "1yrmlj3h2hp5kc5m11ybya21x2wfr5bqqbkcsw6hknj86pkqn57c"; + sha256 = "04vi1rmin161drssqhi9n54j6mz8l6vs46pc7zbn50vzacysg3xn"; }; # too complicated to setup @@ -15584,7 +15584,7 @@ in modules // { meta = { description = "Bringing the power of python to stream editing"; homepage = https://github.com/timbertson/piep; - maintainers = with maintainers; [ gfxmonk ]; + maintainers = with maintainers; [ timbertson ]; license = licenses.gpl3; }; }; @@ -23598,14 +23598,14 @@ in modules // { tunigo = buildPythonPackage rec { name = "tunigo-${version}"; - version = "0.1.3"; + version = "1.0.0"; propagatedBuildInputs = with self; [ requests2 ]; src = pkgs.fetchFromGitHub { owner = "trygveaa"; repo = "python-tunigo"; rev = "v${version}"; - sha256 = "02ili37dbs5mk5f6v3fmi1sji39ymc4zyq44x0abxzr88nc8nh97"; + sha256 = "07q9girrjjffzkn8xj4l3ynf9m4psi809zf6f81f54jdb330p2fs"; }; buildInputs = with self; [ mock nose ]; @@ -25450,15 +25450,15 @@ in modules // { }; geeknote = buildPythonPackage rec { - version = "2015-03-02"; + version = "2015-05-11"; name = "geeknote-${version}"; disabled = ! isPy27; src = pkgs.fetchFromGitHub { owner = "VitaliyRodnenko"; repo = "geeknote"; - rev = "7ea2255bb6"; - sha256 = "0lw3m8g7r8r7dxhqih08x0i6agd201q2ig35a59rd4vygr3xqw2j"; + rev = "8489a87d044e164edb321ba9acca8d4631de3dca"; + sha256 = "0l16v4xnyqnsf84b1pma0jmdyxvmfwcv3sm8slrv3zv7zpmcm3lf"; }; /* build with tests fails with "Can not create application dirictory : @@ -25816,11 +25816,11 @@ in modules // { pafy = buildPythonPackage rec { name = "pafy-${version}"; - version = "0.4.3"; + version = "0.5.0"; src = pkgs.fetchurl { url = "https://pypi.python.org/packages/source/p/pafy/${name}.tar.gz"; - sha256 = "1la4nn4n66p6dmcf1dyxw7i5j0xprmq82gwmxjv1jjis7vsnk254"; + sha256 = "1q699dcnq34nfgm0bg8mp5krhzk9cyirqdcadhs9al4fa5410igw"; }; propagatedBuildInputs = with self; [ youtube-dl ];