diff --git a/doc/languages-frameworks/haskell.md b/doc/languages-frameworks/haskell.md index 1cab3d1e4ee..2ae3e39bb65 100644 --- a/doc/languages-frameworks/haskell.md +++ b/doc/languages-frameworks/haskell.md @@ -11,32 +11,35 @@ date: 2015-06-01 Nixpkgs distributes build instructions for all Haskell packages registered on [Hackage](http://hackage.haskell.org/), but strangely enough normal Nix package lookups don't seem to discover any of them, except for the default version of ghc, cabal-install, and stack: - - $ nix-env -i alex - error: selector ‘alex’ matches no derivations - $ nix-env -qa ghc - ghc-7.10.2 +``` +$ nix-env -i alex +error: selector ‘alex’ matches no derivations +$ nix-env -qa ghc +ghc-7.10.2 +``` The Haskell package set is not registered in the top-level namespace because it is *huge*. If all Haskell packages were visible to these commands, then name-based search/install operations would be much slower than they are now. We avoided that by keeping all Haskell-related packages in a separate attribute set called `haskellPackages`, which the following command will list: - - $ nix-env -f "" -qaP -A haskellPackages - haskellPackages.a50 a50-0.5 - haskellPackages.abacate haskell-abacate-0.0.0.0 - haskellPackages.abcBridge haskell-abcBridge-0.12 - haskellPackages.afv afv-0.1.1 - haskellPackages.alex alex-3.1.4 - haskellPackages.Allure Allure-0.4.101.1 - haskellPackages.alms alms-0.6.7 - [... some 8000 entries omitted ...] +``` +$ nix-env -f "" -qaP -A haskellPackages +haskellPackages.a50 a50-0.5 +haskellPackages.abacate haskell-abacate-0.0.0.0 +haskellPackages.abcBridge haskell-abcBridge-0.12 +haskellPackages.afv afv-0.1.1 +haskellPackages.alex alex-3.1.4 +haskellPackages.Allure Allure-0.4.101.1 +haskellPackages.alms alms-0.6.7 +[... some 8000 entries omitted ...] +``` To install any of those packages into your profile, refer to them by their attribute path (first column): - - $ nix-env -f "" -iA haskellPackages.Allure ... +```shell +nix-env -f "" -iA haskellPackages.Allure ... +``` The attribute path of any Haskell packages corresponds to the name of that particular package on Hackage: the package `cabal-install` has the attribute @@ -58,55 +61,60 @@ Attribute paths are deterministic inside of Nixpkgs, but the path necessary to reach Nixpkgs varies from system to system. We dodged that problem by giving `nix-env` an explicit `-f ""` parameter, but if you call `nix-env` without that flag, then chances are the invocation fails: - - $ nix-env -iA haskellPackages.cabal-install - error: attribute ‘haskellPackages’ in selection path - ‘haskellPackages.cabal-install’ not found +``` +$ nix-env -iA haskellPackages.cabal-install +error: attribute ‘haskellPackages’ in selection path + ‘haskellPackages.cabal-install’ not found +``` On NixOS, for example, Nixpkgs does *not* exist in the top-level namespace by default. To figure out the proper attribute path, it's easiest to query for the path of a well-known Nixpkgs package, i.e.: - - $ nix-env -qaP coreutils - nixos.coreutils coreutils-8.23 +``` +$ nix-env -qaP coreutils +nixos.coreutils coreutils-8.23 +``` If your system responds like that (most NixOS installations will), then the attribute path to `haskellPackages` is `nixos.haskellPackages`. Thus, if you want to use `nix-env` without giving an explicit `-f` flag, then that's the way to do it: - - $ nix-env -qaP -A nixos.haskellPackages - $ nix-env -iA nixos.haskellPackages.cabal-install +```shell +nix-env -qaP -A nixos.haskellPackages +nix-env -iA nixos.haskellPackages.cabal-install +``` Our current default compiler is GHC 7.10.x and the `haskellPackages` set contains packages built with that particular version. Nixpkgs contains the latest major release of every GHC since 6.10.4, however, and there is a whole family of package sets available that defines Hackage packages built with each of those compilers, too: - - $ nix-env -f "" -qaP -A haskell.packages.ghc6123 - $ nix-env -f "" -qaP -A haskell.packages.ghc763 +```shell +nix-env -f "" -qaP -A haskell.packages.ghc6123 +nix-env -f "" -qaP -A haskell.packages.ghc763 +``` The name `haskellPackages` is really just a synonym for `haskell.packages.ghc7102`, because we prefer that package set internally and recommend it to our users as their default choice, but ultimately you are free to compile your Haskell packages with any GHC version you please. The following command displays the complete list of available compilers: - - $ nix-env -f "" -qaP -A haskell.compiler - haskell.compiler.ghc6104 ghc-6.10.4 - haskell.compiler.ghc6123 ghc-6.12.3 - haskell.compiler.ghc704 ghc-7.0.4 - haskell.compiler.ghc722 ghc-7.2.2 - haskell.compiler.ghc742 ghc-7.4.2 - haskell.compiler.ghc763 ghc-7.6.3 - haskell.compiler.ghc784 ghc-7.8.4 - haskell.compiler.ghc7102 ghc-7.10.2 - haskell.compiler.ghcHEAD ghc-7.11.20150402 - haskell.compiler.ghcNokinds ghc-nokinds-7.11.20150704 - haskell.compiler.ghcjs ghcjs-0.1.0 - haskell.compiler.jhc jhc-0.8.2 - haskell.compiler.uhc uhc-1.1.9.0 +``` +$ nix-env -f "" -qaP -A haskell.compiler +haskell.compiler.ghc6104 ghc-6.10.4 +haskell.compiler.ghc6123 ghc-6.12.3 +haskell.compiler.ghc704 ghc-7.0.4 +haskell.compiler.ghc722 ghc-7.2.2 +haskell.compiler.ghc742 ghc-7.4.2 +haskell.compiler.ghc763 ghc-7.6.3 +haskell.compiler.ghc784 ghc-7.8.4 +haskell.compiler.ghc7102 ghc-7.10.2 +haskell.compiler.ghcHEAD ghc-7.11.20150402 +haskell.compiler.ghcNokinds ghc-nokinds-7.11.20150704 +haskell.compiler.ghcjs ghcjs-0.1.0 +haskell.compiler.jhc jhc-0.8.2 +haskell.compiler.uhc uhc-1.1.9.0 +``` We have no package sets for `jhc` or `uhc` yet, unfortunately, but for every version of GHC listed above, there exists a package set based on that compiler. @@ -121,8 +129,9 @@ A simple development environment consists of a Haskell compiler and one or both of the tools `cabal-install` and `stack`. We saw in section [How to install Haskell packages] how you can install those programs into your user profile: - - $ nix-env -f "" -iA haskellPackages.ghc haskellPackages.cabal-install +```shell +nix-env -f "" -iA haskellPackages.ghc haskellPackages.cabal-install +``` Instead of the default package set `haskellPackages`, you can also use the more precise name `haskell.compiler.ghc7102`, which has the advantage that it refers @@ -131,24 +140,25 @@ given time. Once you've made those tools available in `$PATH`, it's possible to build Hackage packages the same way people without access to Nix do it all the time: - - $ cabal get lens-4.11 && cd lens-4.11 - $ cabal install -j --dependencies-only - $ cabal configure - $ cabal build +```shell +cabal get lens-4.11 && cd lens-4.11 +cabal install -j --dependencies-only +cabal configure +cabal build +``` If you enjoy working with Cabal sandboxes, then that's entirely possible too: just execute the command - - $ cabal sandbox init - +```shell +cabal sandbox init +``` before installing the required dependencies. The `nix-shell` utility makes it easy to switch to a different compiler version; just enter the Nix shell environment with the command - - $ nix-shell -p haskell.compiler.ghc784 - +```shell +nix-shell -p haskell.compiler.ghc784 +``` to bring GHC 7.8.4 into `$PATH`. Alternatively, you can use Stack instead of `nix-shell` directly to select compiler versions and other build tools per-project. It uses `nix-shell` under the hood when Nix support is turned on. @@ -159,8 +169,9 @@ shell switches your build to use that compiler instead. If you're working on a project that doesn't depend on any additional system libraries outside of GHC, then it's even sufficient to just run the `cabal configure` command inside of the shell: - - $ nix-shell -p haskell.compiler.ghc784 --command "cabal configure" +```shell +nix-shell -p haskell.compiler.ghc784 --command "cabal configure" +``` Afterwards, all other commands like `cabal build` work just fine in any shell environment, because the configure phase recorded the absolute paths to all @@ -187,29 +198,30 @@ packages, which determines the libraries known to that particular version of GHC. For example, the Nix expression `ghcWithPackages (pkgs: [pkgs.mtl])` generates a copy of GHC that has the `mtl` library registered in addition to its normal core packages: +``` +$ nix-shell -p "haskellPackages.ghcWithPackages (pkgs: [pkgs.mtl])" - $ nix-shell -p "haskellPackages.ghcWithPackages (pkgs: [pkgs.mtl])" - - [nix-shell:~]$ ghc-pkg list mtl - /nix/store/zy79...-ghc-7.10.2/lib/ghc-7.10.2/package.conf.d: - mtl-2.2.1 +[nix-shell:~]$ ghc-pkg list mtl +/nix/store/zy79...-ghc-7.10.2/lib/ghc-7.10.2/package.conf.d: + mtl-2.2.1 +``` This function allows users to define their own development environment by means of an override. After adding the following snippet to `~/.config/nixpkgs/config.nix`, - - { - packageOverrides = super: let self = super.pkgs; in - { - myHaskellEnv = self.haskell.packages.ghc7102.ghcWithPackages - (haskellPackages: with haskellPackages; [ - # libraries - arrows async cgi criterion - # tools - cabal-install haskintex - ]); - }; - } - +```nix +{ + packageOverrides = super: let self = super.pkgs; in + { + myHaskellEnv = self.haskell.packages.ghc7102.ghcWithPackages + (haskellPackages: with haskellPackages; [ + # libraries + arrows async cgi criterion + # tools + cabal-install haskintex + ]); + }; +} +``` it's possible to install that compiler with `nix-env -f "" -iA myHaskellEnv`. If you'd like to switch that development environment to a different version of GHC, just replace the `ghc7102` bit in the previous @@ -221,14 +233,15 @@ file conflicts.) The generated `ghc` program is a wrapper script that re-directs the real GHC executable to use a new `lib` directory --- one that we specifically constructed to contain all those packages the user requested: - - $ cat $(type -p ghc) - #! /nix/store/xlxj...-bash-4.3-p33/bin/bash -e - export NIX_GHC=/nix/store/19sm...-ghc-7.10.2/bin/ghc - export NIX_GHCPKG=/nix/store/19sm...-ghc-7.10.2/bin/ghc-pkg - export NIX_GHC_DOCDIR=/nix/store/19sm...-ghc-7.10.2/share/doc/ghc/html - export NIX_GHC_LIBDIR=/nix/store/19sm...-ghc-7.10.2/lib/ghc-7.10.2 - exec /nix/store/j50p...-ghc-7.10.2/bin/ghc "-B$NIX_GHC_LIBDIR" "$@" +``` +$ cat $(type -p ghc) +#! /nix/store/xlxj...-bash-4.3-p33/bin/bash -e +export NIX_GHC=/nix/store/19sm...-ghc-7.10.2/bin/ghc +export NIX_GHCPKG=/nix/store/19sm...-ghc-7.10.2/bin/ghc-pkg +export NIX_GHC_DOCDIR=/nix/store/19sm...-ghc-7.10.2/share/doc/ghc/html +export NIX_GHC_LIBDIR=/nix/store/19sm...-ghc-7.10.2/lib/ghc-7.10.2 +exec /nix/store/j50p...-ghc-7.10.2/bin/ghc "-B$NIX_GHC_LIBDIR" "$@" +``` The variables `$NIX_GHC`, `$NIX_GHCPKG`, etc. point to the *new* store path `ghcWithPackages` constructed specifically for this environment. The last line @@ -248,23 +261,25 @@ than trying to guess them at compile-time. To make sure that mechanism works properly all the time, we recommend that you set those variables to meaningful values in your shell environment, too, i.e. by adding the following code to your `~/.bashrc`: - - if type >/dev/null 2>&1 -p ghc; then - eval "$(egrep ^export "$(type -p ghc)")" - fi +```bash +if type >/dev/null 2>&1 -p ghc; then + eval "$(egrep ^export "$(type -p ghc)")" +fi +``` If you are certain that you'll use only one GHC environment which is located in your user profile, then you can use the following code, too, which has the advantage that it doesn't contain any paths from the Nix store, i.e. those settings always remain valid even if a `nix-env -u` operation updates the GHC environment in your profile: - - if [ -e ~/.nix-profile/bin/ghc ]; then - export NIX_GHC="$HOME/.nix-profile/bin/ghc" - export NIX_GHCPKG="$HOME/.nix-profile/bin/ghc-pkg" - export NIX_GHC_DOCDIR="$HOME/.nix-profile/share/doc/ghc/html" - export NIX_GHC_LIBDIR="$HOME/.nix-profile/lib/ghc-$($NIX_GHC --numeric-version)" - fi +```bash +if [ -e ~/.nix-profile/bin/ghc ]; then + export NIX_GHC="$HOME/.nix-profile/bin/ghc" + export NIX_GHCPKG="$HOME/.nix-profile/bin/ghc-pkg" + export NIX_GHC_DOCDIR="$HOME/.nix-profile/share/doc/ghc/html" + export NIX_GHC_LIBDIR="$HOME/.nix-profile/lib/ghc-$($NIX_GHC --numeric-version)" +fi +``` ### How to install a compiler with libraries, hoogle and documentation indexes @@ -280,20 +295,20 @@ uses all those things. A precise name for this thing would be long and scary. For example, installing the following environment - - { - packageOverrides = super: let self = super.pkgs; in - { - myHaskellEnv = self.haskellPackages.ghcWithHoogle - (haskellPackages: with haskellPackages; [ - # libraries - arrows async cgi criterion - # tools - cabal-install haskintex - ]); - }; - } - +```nix +{ + packageOverrides = super: let self = super.pkgs; in + { + myHaskellEnv = self.haskellPackages.ghcWithHoogle + (haskellPackages: with haskellPackages; [ + # libraries + arrows async cgi criterion + # tools + cabal-install haskintex + ]); + }; +} +``` allows one to browse module documentation index [not too dissimilar to this](https://downloads.haskell.org/~ghc/latest/docs/html/libraries/index.html) for all the specified packages and their dependencies by directing a browser of @@ -303,23 +318,24 @@ choice to `~/.nix-profiles/share/doc/hoogle/index.html` (or After you've marveled enough at that try adding the following to your `~/.ghc/ghci.conf` - - :def hoogle \s -> return $ ":! hoogle search -cl --count=15 \"" ++ s ++ "\"" - :def doc \s -> return $ ":! hoogle search -cl --info \"" ++ s ++ "\"" - +``` +:def hoogle \s -> return $ ":! hoogle search -cl --count=15 \"" ++ s ++ "\"" +:def doc \s -> return $ ":! hoogle search -cl --info \"" ++ s ++ "\"" +``` and test it by typing into `ghci`: - - :hoogle a -> a - :doc a -> a +``` +:hoogle a -> a +:doc a -> a +``` Be sure to note the links to `haddock` files in the output. With any modern and properly configured terminal emulator you can just click those links to navigate there. Finally, you can run - - hoogle server -p 8080 - +```shell +hoogle server -p 8080 +``` and navigate to http://localhost:8080/ for your own local [Hoogle](https://www.haskell.org/hoogle/). Note, however, that Firefox and possibly other browsers disallow navigation from `http:` to `file:` URIs for @@ -334,18 +350,20 @@ It has first-class support for Nix. Stack can optionally use Nix to automatically select the right version of GHC and other build tools to build, test and execute apps in an existing project downloaded from somewhere on the Internet. Pass the `--nix` flag to any `stack` command to do so, e.g. - - $ git clone --recursive http://github.com/yesodweb/wai - $ cd wai - $ stack --nix build +```shell +git clone --recursive http://github.com/yesodweb/wai +cd wai +stack --nix build +``` If you want `stack` to use Nix by default, you can add a `nix` section to the `stack.yaml` file, as explained in the [Stack documentation][stack-nix-doc]. For example: - - nix: - enable: true - packages: [pkgconfig zeromq zlib] +```yaml +nix: + enable: true + packages: [pkgconfig zeromq zlib] +``` The example configuration snippet above tells Stack to create an ad hoc environment for `nix-shell` as in the below section, in which the `pkgconfig`, @@ -356,10 +374,11 @@ Some projects have more sophisticated needs. For examples, some ad hoc environments might need to expose Nixpkgs packages compiled in a certain way, or with extra environment variables. In these cases, you'll need a `shell` field instead of `packages`: - - nix: - enable: true - shell-file: shell.nix +```yaml +nix: + enable: true + shell-file: shell.nix +``` For more on how to write a `shell.nix` file see the below section. You'll need to express a derivation. Note that Nixpkgs ships with a convenience wrapper @@ -368,32 +387,34 @@ create this derivation in exactly the way Stack expects. All of the same inputs as `mkDerivation` can be provided. For example, to build a Stack project that including packages that link against a version of the R library compiled with special options turned on: +```nix +with (import { }); - with (import { }); - - let R = pkgs.R.override { enableStrictBarrier = true; }; - in - haskell.lib.buildStackProject { - name = "HaskellR"; - buildInputs = [ R zeromq zlib ]; - } +let R = pkgs.R.override { enableStrictBarrier = true; }; +in +haskell.lib.buildStackProject { + name = "HaskellR"; + buildInputs = [ R zeromq zlib ]; +} +``` You can select a particular GHC version to compile with by setting the `ghc` attribute as an argument to `buildStackProject`. Better yet, let Stack choose what GHC version it wants based on the snapshot specified in `stack.yaml` (only works with Stack >= 1.1.3): +```nix +{nixpkgs ? import { }, ghc ? nixpkgs.ghc}: - {nixpkgs ? import { }, ghc ? nixpkgs.ghc}: +with nixpkgs; - with nixpkgs; - - let R = pkgs.R.override { enableStrictBarrier = true; }; - in - haskell.lib.buildStackProject { - name = "HaskellR"; - buildInputs = [ R zeromq zlib ]; - inherit ghc; - } +let R = pkgs.R.override { enableStrictBarrier = true; }; +in +haskell.lib.buildStackProject { + name = "HaskellR"; + buildInputs = [ R zeromq zlib ]; + inherit ghc; +} +``` [stack-nix-doc]: http://docs.haskellstack.org/en/stable/nix_integration.html @@ -401,24 +422,26 @@ in `stack.yaml` (only works with Stack >= 1.1.3): The easiest way to create an ad hoc development environment is to run `nix-shell` with the appropriate GHC environment given on the command-line: - - nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [mtl pandoc])" +```shell +nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [mtl pandoc])" +``` For more sophisticated use-cases, however, it's more convenient to save the desired configuration in a file called `shell.nix` that looks like this: - - { nixpkgs ? import {}, compiler ? "ghc7102" }: - let - inherit (nixpkgs) pkgs; - ghc = pkgs.haskell.packages.${compiler}.ghcWithPackages (ps: with ps; [ - monad-par mtl - ]); - in - pkgs.stdenv.mkDerivation { - name = "my-haskell-env-0"; - buildInputs = [ ghc ]; - shellHook = "eval $(egrep ^export ${ghc}/bin/ghc)"; - } +```nix +{ nixpkgs ? import {}, compiler ? "ghc7102" }: +let + inherit (nixpkgs) pkgs; + ghc = pkgs.haskell.packages.${compiler}.ghcWithPackages (ps: with ps; [ + monad-par mtl + ]); +in +pkgs.stdenv.mkDerivation { + name = "my-haskell-env-0"; + buildInputs = [ ghc ]; + shellHook = "eval $(egrep ^export ${ghc}/bin/ghc)"; +} +``` Now run `nix-shell` --- or even `nix-shell --pure` --- to enter a shell environment that has the appropriate compiler in `$PATH`. If you use `--pure`, @@ -434,13 +457,14 @@ already! Every Haskell package has an `env` attribute that provides a shell environment suitable for compiling that particular package. If you'd like to hack the `lens` library, for example, then you just have to check out the source code and enter the appropriate environment: +``` +$ cabal get lens-4.11 && cd lens-4.11 +Downloading lens-4.11... +Unpacking to lens-4.11/ - $ cabal get lens-4.11 && cd lens-4.11 - Downloading lens-4.11... - Unpacking to lens-4.11/ - - $ nix-shell "" -A haskellPackages.lens.env - [nix-shell:/tmp/lens-4.11]$ +$ nix-shell "" -A haskellPackages.lens.env +[nix-shell:/tmp/lens-4.11]$ +``` At point, you can run `cabal configure`, `cabal build`, and all the other development commands. Note that you need `cabal-install` installed in your @@ -459,18 +483,20 @@ convert those automatically into build instructions for Nix using the For example, let's assume that you're working on a private project called `foo`. To generate a Nix build expression for it, change into the project's top-level directory and run the command: - - $ cabal2nix . >foo.nix - +```shell +cabal2nix . > foo.nix +``` Then write the following snippet into a file called `default.nix`: - - { nixpkgs ? import {}, compiler ? "ghc7102" }: - nixpkgs.pkgs.haskell.packages.${compiler}.callPackage ./foo.nix { } +```nix +{ nixpkgs ? import {}, compiler ? "ghc7102" }: +nixpkgs.pkgs.haskell.packages.${compiler}.callPackage ./foo.nix { } +``` Finally, store the following code in a file called `shell.nix`: - - { nixpkgs ? import {}, compiler ? "ghc7102" }: - (import ./default.nix { inherit nixpkgs compiler; }).env +```nix +{ nixpkgs ? import {}, compiler ? "ghc7102" }: +(import ./default.nix { inherit nixpkgs compiler; }).env +``` At this point, you can run `nix-build` to have Nix compile your project and install it into a Nix store path. The local directory will contain a symlink @@ -486,9 +512,9 @@ libraries your package might need. If your package does not depend on any system-level libraries, then it's sufficient to run - - $ nix-shell --command "cabal configure" - +```shell +nix-shell --command "cabal configure" +``` once to set up your build. `cabal-install` determines the absolute paths to all resources required for the build and writes them into a config file in the `dist/` directory. Once that's done, you can run `cabal build` and any other @@ -502,14 +528,15 @@ If you want to do some quick-and-dirty hacking and don't want to bother setting up a `default.nix` and `shell.nix` file manually, then you can use the `--shell` flag offered by `cabal2nix` to have it generate a stand-alone `nix-shell` environment for you. With that feature, running - - $ cabal2nix --shell . >shell.nix - $ nix-shell --command "cabal configure" - +```shell +cabal2nix --shell . > shell.nix +nix-shell --command "cabal configure" +``` is usually enough to set up a build environment for any given Haskell package. You can even use that generated file to run `nix-build`, too: - - $ nix-build shell.nix +```shell +nix-build shell.nix +``` ### How to build projects that depend on each other @@ -518,33 +545,34 @@ you'll have to register those packages in the Nixpkgs set to make them visible for the dependency resolution performed by `callPackage`. First of all, change into each of your projects top-level directories and generate a `default.nix` file with `cabal2nix`: - - $ cd ~/src/foo && cabal2nix . >default.nix - $ cd ~/src/bar && cabal2nix . >default.nix - +```shell +cd ~/src/foo && cabal2nix . > default.nix +cd ~/src/bar && cabal2nix . > default.nix +``` Then edit your `~/.config/nixpkgs/config.nix` file to register those builds in the default Haskell package set: - - { - packageOverrides = super: let self = super.pkgs; in - { - haskellPackages = super.haskellPackages.override { - overrides = self: super: { - foo = self.callPackage ../src/foo {}; - bar = self.callPackage ../src/bar {}; - }; - }; - }; - } - +```nix +{ + packageOverrides = super: let self = super.pkgs; in + { + haskellPackages = super.haskellPackages.override { + overrides = self: super: { + foo = self.callPackage ../src/foo {}; + bar = self.callPackage ../src/bar {}; + }; + }; + }; +} +``` Once that's accomplished, `nix-env -f "" -qA haskellPackages` will show your packages like any other package from Hackage, and you can build them - - $ nix-build "" -A haskellPackages.foo - +```shell +nix-build "" -A haskellPackages.foo +``` or enter an interactive shell environment suitable for building them: - - $ nix-shell "" -A haskellPackages.bar.env +```shell +nix-shell "" -A haskellPackages.bar.env +``` ## Miscellaneous Topics @@ -555,20 +583,20 @@ to manipulate the package as much as you please. One useful application of this feature is to replace the default `mkDerivation` function with one that enables library profiling for all packages. To accomplish that, add configure the following snippet in your `~/.config/nixpkgs/config.nix` file: - - { - packageOverrides = super: let self = super.pkgs; in - { - profiledHaskellPackages = self.haskellPackages.override { - overrides = self: super: { - mkDerivation = args: super.mkDerivation (args // { - enableLibraryProfiling = true; - }); - }; - }; +```nix +{ + packageOverrides = super: let self = super.pkgs; in + { + profiledHaskellPackages = self.haskellPackages.override { + overrides = self: super: { + mkDerivation = args: super.mkDerivation (args // { + enableLibraryProfiling = true; + }); }; - } - + }; + }; +} +``` Then, replace instances of `haskellPackages` in the `cabal2nix`-generated `default.nix` or `shell.nix` files with `profiledHaskellPackages`. @@ -580,35 +608,39 @@ at the time of this writing. This is fine for users of GHC 7.10.x, but GHC 7.8.4 cannot compile that binary. Now, one way to solve that problem is to register an older version of `ghc-events` in the 7.8.x-specific package set. The first step is to generate Nix build instructions with `cabal2nix`: - - $ cabal2nix cabal://ghc-events-0.4.3.0 >~/.nixpkgs/ghc-events-0.4.3.0.nix - +```shell +cabal2nix cabal://ghc-events-0.4.3.0 > ~/.nixpkgs/ghc-events-0.4.3.0.nix +``` Then add the override in `~/.config/nixpkgs/config.nix`: - - { - packageOverrides = super: let self = super.pkgs; in - { - haskell = super.haskell // { - packages = super.haskell.packages // { - ghc784 = super.haskell.packages.ghc784.override { - overrides = self: super: { - ghc-events = self.callPackage ./ghc-events-0.4.3.0.nix {}; - }; - }; +```nix +{ + packageOverrides = super: let self = super.pkgs; in + { + haskell = super.haskell // { + packages = super.haskell.packages // { + ghc784 = super.haskell.packages.ghc784.override { + overrides = self: super: { + ghc-events = self.callPackage ./ghc-events-0.4.3.0.nix {}; }; }; }; - } + }; + }; +} +``` This code is a little crazy, no doubt, but it's necessary because the intuitive version +```nix +{ # ... - haskell.packages.ghc784 = super.haskell.packages.ghc784.override { - overrides = self: super: { - ghc-events = self.callPackage ./ghc-events-0.4.3.0.nix {}; - }; + haskell.packages.ghc784 = super.haskell.packages.ghc784.override { + overrides = self: super: { + ghc-events = self.callPackage ./ghc-events-0.4.3.0.nix {}; }; - + }; +} +``` doesn't do what we want it to: that code replaces the `haskell` package set in Nixpkgs with one that contains only one entry,`packages`, which contains only one entry `ghc784`. This override loses the `haskell.compiler` set, and it @@ -618,16 +650,16 @@ iterating over each step in hierarchy. Once it's accomplished, however, we can install a variant of `ghc-events` that's compiled with GHC 7.8.4: - - nix-env -f "" -iA haskell.packages.ghc784.ghc-events - +```shell +nix-env -f "" -iA haskell.packages.ghc784.ghc-events +``` Unfortunately, it turns out that this build fails again while executing the test suite! Apparently, the release archive on Hackage is missing some data files that the test suite requires, so we cannot run it. We accomplish that by re-generating the Nix expression with the `--no-check` flag: - - $ cabal2nix --no-check cabal://ghc-events-0.4.3.0 >~/.nixpkgs/ghc-events-0.4.3.0.nix - +```shell +cabal2nix --no-check cabal://ghc-events-0.4.3.0 > ~/.nixpkgs/ghc-events-0.4.3.0.nix +``` Now the builds succeeds. Of course, in the concrete example of `ghc-events` this whole exercise is not @@ -642,91 +674,98 @@ older version might be useful. GHC and distributed build farms don't get along well: - https://ghc.haskell.org/trac/ghc/ticket/4012 + - https://ghc.haskell.org/trac/ghc/ticket/4012 When you see an error like this one - - package foo-0.7.1.0 is broken due to missing package - text-1.2.0.4-98506efb1b9ada233bb5c2b2db516d91 - +``` +package foo-0.7.1.0 is broken due to missing package +text-1.2.0.4-98506efb1b9ada233bb5c2b2db516d91 +``` then you have to download and re-install `foo` and all its dependents from scratch: - - # nix-store -q --referrers /nix/store/*-haskell-text-1.2.0.4 \ - | xargs -L 1 nix-store --repair-path +```shell +nix-store -q --referrers /nix/store/*-haskell-text-1.2.0.4 \ + | xargs -L 1 nix-store --repair-path +``` If you're using additional Hydra servers other than `hydra.nixos.org`, then it might be necessary to purge the local caches that store data from those machines to disable these binary channels for the duration of the previous command, i.e. by running: - - rm /nix/var/nix/binary-cache-v3.sqlite - rm /nix/var/nix/manifests/* - rm /nix/var/nix/channel-cache/* +```shell +rm /nix/var/nix/binary-cache-v3.sqlite +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 - +```shell +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 - +```shell +haste-cabal update +``` `haste-boot` builds a set of core libraries so that they can be used from Javascript transpiled programs: - - $ haste-boot - +```shell +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 +``` +$ 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 compiler complains about a missing include file: - - fatal error: 'math.h' file not found - +``` +fatal error: 'math.h' file not found +``` The issue has been discussed at length in [ticket 6390](https://github.com/NixOS/nixpkgs/issues/6390), and so far no good solution has been proposed. As a work-around, users who run into this problem can configure the environment variables - - export NIX_CFLAGS_COMPILE="-idirafter /usr/include" - export NIX_CFLAGS_LINK="-L/usr/lib" - +```shell +export NIX_CFLAGS_COMPILE="-idirafter /usr/include" +export NIX_CFLAGS_LINK="-L/usr/lib" +``` in their `~/.bashrc` file to avoid the compiler error. ### Builds using Stack complain about missing system libraries - -- While building package zlib-0.5.4.2 using: - runhaskell -package=Cabal-1.22.4.0 -clear-package-db [... lots of flags ...] - Process exited with code: ExitFailure 1 - Logs have been written to: /home/foo/src/stack-ide/.stack-work/logs/zlib-0.5.4.2.log +``` +-- While building package zlib-0.5.4.2 using: + runhaskell -package=Cabal-1.22.4.0 -clear-package-db [... lots of flags ...] +Process exited with code: ExitFailure 1 +Logs have been written to: /home/foo/src/stack-ide/.stack-work/logs/zlib-0.5.4.2.log - Configuring zlib-0.5.4.2... - Setup.hs: Missing dependency on a foreign library: - * Missing (or bad) header file: zlib.h - This problem can usually be solved by installing the system package that - provides this library (you may need the "-dev" version). If the library is - already installed but in a non-standard location then you can use the flags - --extra-include-dirs= and --extra-lib-dirs= to specify where it is. - If the header file does exist, it may contain errors that are caught by the C - compiler at the preprocessing stage. In this case you can re-run configure - with the verbosity flag -v3 to see the error messages. +Configuring zlib-0.5.4.2... +Setup.hs: Missing dependency on a foreign library: +* Missing (or bad) header file: zlib.h +This problem can usually be solved by installing the system package that +provides this library (you may need the "-dev" version). If the library is +already installed but in a non-standard location then you can use the flags +--extra-include-dirs= and --extra-lib-dirs= to specify where it is. +If the header file does exist, it may contain errors that are caught by the C +compiler at the preprocessing stage. In this case you can re-run configure +with the verbosity flag -v3 to see the error messages. +``` When you run the build inside of the nix-shell environment, the system -is configured to find libz.so without any special flags -- the compiler +is configured to find `libz.so` without any special flags -- the compiler and linker "just know" how to find it. Consequently, Cabal won't record -any search paths for libz.so in the package description, which means +any search paths for `libz.so` in the package description, which means that the package works fine inside of nix-shell, but once you leave the shell the shared object can no longer be found. That issue is by no means specific to Stack: you'll have that problem with any other @@ -735,63 +774,66 @@ environment. You can remedy this issue in several ways. The easiest is to add a `nix` section to the `stack.yaml` like the following: +```yaml +nix: + enable: true + packages: [ zlib ] +``` - nix: - enable: true - packages: [ zlib ] - -Stack's Nix support knows to add `${zlib.out}/lib` and `${zlib.dev}/include` as an -`--extra-lib-dirs` and `extra-include-dirs`, respectively. Alternatively, you -can achieve the same effect by hand. First of all, run - - $ nix-build --no-out-link "" -A zlib - /nix/store/alsvwzkiw4b7ip38l4nlfjijdvg3fvzn-zlib-1.2.8 - +Stack's Nix support knows to add `${zlib.out}/lib` and `${zlib.dev}/include` +as an `--extra-lib-dirs` and `extra-include-dirs`, respectively. +Alternatively, you can achieve the same effect by hand. First of all, run +``` +$ nix-build --no-out-link "" -A zlib +/nix/store/alsvwzkiw4b7ip38l4nlfjijdvg3fvzn-zlib-1.2.8 +``` to find out the store path of the system's zlib library. Now, you can -1) add that path (plus a "/lib" suffix) to your $LD_LIBRARY_PATH - environment variable to make sure your system linker finds libz.so - automatically. It's no pretty solution, but it will work. + 1. add that path (plus a "/lib" suffix) to your `$LD_LIBRARY_PATH` + environment variable to make sure your system linker finds `libz.so` + automatically. It's no pretty solution, but it will work. -2) As a variant of (1), you can also install any number of system - libraries into your user's profile (or some other profile) and point - $LD_LIBRARY_PATH to that profile instead, so that you don't have to - list dozens of those store paths all over the place. + 2. As a variant of (1), you can also install any number of system + libraries into your user's profile (or some other profile) and point + `$LD_LIBRARY_PATH` to that profile instead, so that you don't have to + list dozens of those store paths all over the place. -3) The solution I prefer is to call stack with an appropriate - --extra-lib-dirs flag like so: + 3. The solution I prefer is to call stack with an appropriate + --extra-lib-dirs flag like so: + ```shell + stack --extra-lib-dirs=/nix/store/alsvwzkiw4b7ip38l4nlfjijdvg3fvzn-zlib-1.2.8/lib build + ``` - $ stack --extra-lib-dirs=/nix/store/alsvwzkiw4b7ip38l4nlfjijdvg3fvzn-zlib-1.2.8/lib build + Typically, you'll need `--extra-include-dirs` as well. It's possible + to add those flag to the project's `stack.yaml` or your user's + global `~/.stack/global/stack.yaml` file so that you don't have to + specify them manually every time. But again, you're likely better off + using Stack's Nix support instead. - Typically, you'll need --extra-include-dirs as well. It's possible - to add those flag to the project's "stack.yaml" or your user's - global "~/.stack/global/stack.yaml" file so that you don't have to - specify them manually every time. But again, you're likely better off using - Stack's Nix support instead. - - The same thing applies to `cabal configure`, of course, if you're - building with `cabal-install` instead of Stack. + The same thing applies to `cabal configure`, of course, if you're + building with `cabal-install` instead of Stack. ### Creating statically linked binaries There are two levels of static linking. The first option is to configure the build with the Cabal flag `--disable-executable-dynamic`. In Nix expressions, this can be achieved by setting the attribute: - - enableSharedExecutables = false; - +``` +enableSharedExecutables = false; +``` That gives you a binary with statically linked Haskell libraries and dynamically linked system libraries. To link both Haskell libraries and system libraries statically, the additional flags `--ghc-option=-optl=-static --ghc-option=-optl=-pthread` need to be used. In Nix, this is accomplished with: +``` +configureFlags = [ "--ghc-option=-optl=-static" "--ghc-option=-optl=-pthread" ]; +``` - configureFlags = [ "--ghc-option=-optl=-static" "--ghc-option=-optl=-pthread" ]; - -It's important to realize, however, that most system libraries in Nix are built -as shared libraries only, i.e. there is just no static library available that -Cabal could link! +It's important to realize, however, that most system libraries in Nix are +built as shared libraries only, i.e. there is just no static library +available that Cabal could link! ### Building GHC with integer-simple @@ -801,7 +843,7 @@ The implementation can be found in the [integer-gmp](http://hackage.haskell.org/package/integer-gmp) package. A potential problem with this is that GMP is licensed under the -[​GNU Lesser General Public License (LGPL)](http://www.gnu.org/copyleft/lesser.html), +[GNU Lesser General Public License (LGPL)](http://www.gnu.org/copyleft/lesser.html), a kind of "copyleft" license. According to the terms of the LGPL, paragraph 5, you may distribute a program that is designed to be compiled and dynamically linked with the library under the terms of your choice (i.e., commercially) but @@ -814,7 +856,7 @@ The LGPL licensing for GMP is a problem for the overall licensing of binary programs compiled with GHC because most distributions (and builds) of GHC use static libraries. (Dynamic libraries are currently distributed only for OS X.) The LGPL licensing situation may be worse: even though -​[The Glasgow Haskell Compiler License](https://www.haskell.org/ghc/license) +[The Glasgow Haskell Compiler License](https://www.haskell.org/ghc/license) is essentially a "free software" license (BSD3), according to paragraph 2 of the LGPL, GHC must be distributed under the terms of the LGPL! @@ -825,58 +867,59 @@ alternative implemention for Integer called To get a GHC compiler build with `integer-simple` instead of `integer-gmp` use the attribute: `haskell.compiler.integer-simple."${ghcVersion}"`. For example: - - $ nix-build -E '(import {}).haskell.compiler.integer-simple.ghc802' - ... - $ result/bin/ghc-pkg list | grep integer - integer-simple-0.1.1.1 - +``` +$ nix-build -E '(import {}).haskell.compiler.integer-simple.ghc802' +... +$ result/bin/ghc-pkg list | grep integer + integer-simple-0.1.1.1 +``` The following command displays the complete list of GHC compilers build with `integer-simple`: - - $ nix-env -f "" -qaP -A haskell.compiler.integer-simple - haskell.compiler.integer-simple.ghc7102 ghc-7.10.2 - haskell.compiler.integer-simple.ghc7103 ghc-7.10.3 - haskell.compiler.integer-simple.ghc722 ghc-7.2.2 - haskell.compiler.integer-simple.ghc742 ghc-7.4.2 - haskell.compiler.integer-simple.ghc783 ghc-7.8.3 - haskell.compiler.integer-simple.ghc784 ghc-7.8.4 - haskell.compiler.integer-simple.ghc801 ghc-8.0.1 - haskell.compiler.integer-simple.ghc802 ghc-8.0.2 - haskell.compiler.integer-simple.ghcHEAD ghc-8.1.20170106 +``` +$ nix-env -f "" -qaP -A haskell.compiler.integer-simple +haskell.compiler.integer-simple.ghc7102 ghc-7.10.2 +haskell.compiler.integer-simple.ghc7103 ghc-7.10.3 +haskell.compiler.integer-simple.ghc722 ghc-7.2.2 +haskell.compiler.integer-simple.ghc742 ghc-7.4.2 +haskell.compiler.integer-simple.ghc783 ghc-7.8.3 +haskell.compiler.integer-simple.ghc784 ghc-7.8.4 +haskell.compiler.integer-simple.ghc801 ghc-8.0.1 +haskell.compiler.integer-simple.ghc802 ghc-8.0.2 +haskell.compiler.integer-simple.ghcHEAD ghc-8.1.20170106 +``` To get a package set supporting `integer-simple` use the attribute: `haskell.packages.integer-simple."${ghcVersion}"`. For example use the following to get the `scientific` package build with `integer-simple`: - - $ nix-build -A haskell.packages.integer-simple.ghc802.scientific - +```shell +nix-build -A haskell.packages.integer-simple.ghc802.scientific +``` ## Other resources -- The Youtube video [Nix Loves Haskell](https://www.youtube.com/watch?v=BsBhi_r-OeE) - provides an introduction into Haskell NG aimed at beginners. The slides are - available at http://cryp.to/nixos-meetup-3-slides.pdf and also -- in a form - ready for cut & paste -- at - https://github.com/NixOS/cabal2nix/blob/master/doc/nixos-meetup-3-slides.md. + - The Youtube video [Nix Loves Haskell](https://www.youtube.com/watch?v=BsBhi_r-OeE) + provides an introduction into Haskell NG aimed at beginners. The slides are + available at http://cryp.to/nixos-meetup-3-slides.pdf and also -- in a form + ready for cut & paste -- at + https://github.com/NixOS/cabal2nix/blob/master/doc/nixos-meetup-3-slides.md. -- Another Youtube video is [Escaping Cabal Hell with Nix](https://www.youtube.com/watch?v=mQd3s57n_2Y), - which discusses the subject of Haskell development with Nix but also provides - a basic introduction to Nix as well, i.e. it's suitable for viewers with - almost no prior Nix experience. + - Another Youtube video is [Escaping Cabal Hell with Nix](https://www.youtube.com/watch?v=mQd3s57n_2Y), + which discusses the subject of Haskell development with Nix but also provides + a basic introduction to Nix as well, i.e. it's suitable for viewers with + almost no prior Nix experience. -- Oliver Charles wrote a very nice [Tutorial how to develop Haskell packages with Nix](http://wiki.ocharles.org.uk/Nix). + - Oliver Charles wrote a very nice [Tutorial how to develop Haskell packages with Nix](http://wiki.ocharles.org.uk/Nix). -- The *Journey into the Haskell NG infrastructure* series of postings - describe the new Haskell infrastructure in great detail: + - The *Journey into the Haskell NG infrastructure* series of postings + describe the new Haskell infrastructure in great detail: - - [Part 1](http://lists.science.uu.nl/pipermail/nix-dev/2015-January/015591.html) - explains the differences between the old and the new code and gives - instructions how to migrate to the new setup. + - [Part 1](http://lists.science.uu.nl/pipermail/nix-dev/2015-January/015591.html) + explains the differences between the old and the new code and gives + instructions how to migrate to the new setup. - - [Part 2](http://lists.science.uu.nl/pipermail/nix-dev/2015-January/015608.html) - looks in-depth at how to tweak and configure your setup by means of - overrides. + - [Part 2](http://lists.science.uu.nl/pipermail/nix-dev/2015-January/015608.html) + looks in-depth at how to tweak and configure your setup by means of + overrides. - - [Part 3](http://lists.science.uu.nl/pipermail/nix-dev/2015-April/016912.html) - describes the infrastructure that keeps the Haskell package set in Nixpkgs - up-to-date. + - [Part 3](http://lists.science.uu.nl/pipermail/nix-dev/2015-April/016912.html) + describes the infrastructure that keeps the Haskell package set in Nixpkgs + up-to-date. diff --git a/lib/customisation.nix b/lib/customisation.nix index 4853290db54..6d6c0234087 100644 --- a/lib/customisation.nix +++ b/lib/customisation.nix @@ -167,7 +167,7 @@ rec { /* Make a set of packages with a common scope. All packages called with the provided `callPackage' will be evaluated with the same arguments. Any package in the set may depend on any other. The - `override' function allows subsequent modification of the package + `overrideScope' function allows subsequent modification of the package set in a consistent way, i.e. all packages in the set will be called with the overridden packages. The package sets may be hierarchical: the packages in the set are called with the scope @@ -177,7 +177,7 @@ rec { let self = f self // { newScope = scope: newScope (self // scope); callPackage = self.newScope {}; - override = g: + overrideScope = g: makeScope newScope (self_: let super = f self_; in super // g super self_); packages = f; diff --git a/lib/filesystem.nix b/lib/filesystem.nix index 91b04d81c13..3925beb2134 100644 --- a/lib/filesystem.nix +++ b/lib/filesystem.nix @@ -1,4 +1,22 @@ -{ # locateDominatingFile : RegExp +{ # haskellPathsInDir : Path -> Map String Path + # A map of all haskell packages defined in the given path, + # identified by having a cabal file with the same name as the + # directory itself. + haskellPathsInDir = root: + let # Files in the root + root-files = builtins.attrNames (builtins.readDir root); + # Files with their full paths + root-files-with-paths = + map (file: + { name = file; value = root + "/${file}"; } + ) root-files; + # Subdirectories of the root with a cabal file. + cabal-subdirs = + builtins.filter ({ name, value }: + builtins.pathExists (value + "/${name}.cabal") + ) root-files-with-paths; + in builtins.listToAttrs cabal-subdirs; + # locateDominatingFile : RegExp # -> Path # -> Nullable { path : Path; # matches : [ MatchResults ]; diff --git a/lib/licenses.nix b/lib/licenses.nix index 000a55224ea..0919699b41e 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -531,6 +531,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { fullName = "Do What The F*ck You Want To Public License"; }; + wxWindows = spdx { + spdxId = "WXwindows"; + fullName = "wxWindows Library Licence, Version 3.1"; + }; + zlib = spdx { spdxId = "Zlib"; fullName = "zlib License"; diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 9d5b2e21bc9..d75cbec8d51 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -232,6 +232,7 @@ jcumming = "Jack Cummings "; jdagilliland = "Jason Gilliland "; jefdaj = "Jeffrey David Johnson "; + jensbin = "Jens Binkert "; jerith666 = "Matt McHenry "; jfb = "James Felix Black "; jgeerds = "Jascha Geerds "; @@ -468,6 +469,7 @@ s1lvester = "Markus Silvester "; samuelrivas = "Samuel Rivas "; sander = "Sander van der Burg "; + sargon = "Daniel Ehlers "; schmitthenner = "Fabian Schmitthenner "; schneefux = "schneefux "; schristo = "Scott Christopher "; @@ -490,6 +492,7 @@ skrzyp = "Jakub Skrzypnik "; sleexyz = "Sean Lee "; smironov = "Sergey Mironov "; + snyh = "Xia Bin "; solson = "Scott Olson "; spacefrogg = "Michael Raitza "; spencerjanssen = "Spencer Janssen "; @@ -502,6 +505,7 @@ sternenseemann = "Lukas Epple "; stesie = "Stefan Siegl "; steveej = "Stefan Junker "; + SuprDewd = "Bjarki Ágúst Guðmundsson "; swarren83 = "Shawn Warren "; swistak35 = "Rafał Łasocha "; szczyp = "Szczyp "; @@ -511,6 +515,7 @@ takikawa = "Asumu Takikawa "; taktoa = "Remy Goldschmidt "; taku0 = "Takuo Yonezawa "; + tari = "Peter Marheine "; tavyc = "Octavian Cerna "; teh = "Tom Hunger "; telotortium = "Robert Irelan "; diff --git a/lib/meta.nix b/lib/meta.nix index 44e3cc011f1..ae652e579c3 100644 --- a/lib/meta.nix +++ b/lib/meta.nix @@ -45,7 +45,7 @@ rec { /* Decrease the nix-env priority of the package, i.e., other versions/variants of the package will be preferred. */ - lowPrio = drv: addMetaAttrs { priority = "10"; } drv; + lowPrio = drv: addMetaAttrs { priority = 10; } drv; /* Apply lowPrio to an attrset with derivations @@ -56,7 +56,7 @@ rec { /* Increase the nix-env priority of the package, i.e., this version/variant of the package will be preferred. */ - hiPrio = drv: addMetaAttrs { priority = "-10"; } drv; + hiPrio = drv: addMetaAttrs { priority = -10; } drv; /* Apply hiPrio to an attrset with derivations diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index 4322c8e2ff6..0bea38ab419 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -21,6 +21,39 @@ rec { kernelAutoModules = false; }; + pogoplug4 = { + name = "pogoplug4"; + + gcc = { + arch = "armv5te"; + float = "soft"; + }; + + kernelMajor = "2.6"; + kernelHeadersBaseConfig = "multi_v5_defconfig"; + kernelBaseConfig = "multi_v5_defconfig"; + kernelArch = "arm"; + kernelAutoModules = false; + kernelExtraConfig = + '' + # Ubi for the mtd + MTD_UBI y + UBIFS_FS y + UBIFS_FS_XATTR y + UBIFS_FS_ADVANCED_COMPR y + UBIFS_FS_LZO y + UBIFS_FS_ZLIB y + UBIFS_FS_DEBUG n + ''; + kernelMakeFlags = [ "LOADADDR=0x8000" ]; + kernelTarget = "uImage"; + # TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working + #kernelDTB = true; + + # XXX can be anything non-null, pkgs actually only cares if it is set or not + uboot = "pogoplug4"; + }; + sheevaplug = { name = "sheevaplug"; kernelMajor = "2.6"; @@ -307,6 +340,43 @@ rec { uboot = null; }; + scaleway-c1 = armv7l-hf-multiplatform // { + gcc = { + cpu = "cortex-a9"; + fpu = "vfpv3"; + float = "hard"; + }; + }; + + utilite = { + name = "utilite"; + kernelMajor = "2.6"; + kernelHeadersBaseConfig = "multi_v7_defconfig"; + kernelBaseConfig = "multi_v7_defconfig"; + kernelArch = "arm"; + kernelAutoModules = false; + kernelExtraConfig = + '' + # Ubi for the mtd + MTD_UBI y + UBIFS_FS y + UBIFS_FS_XATTR y + UBIFS_FS_ADVANCED_COMPR y + UBIFS_FS_LZO y + UBIFS_FS_ZLIB y + UBIFS_FS_DEBUG n + ''; + kernelMakeFlags = [ "LOADADDR=0x10800000" ]; + kernelTarget = "uImage"; + kernelDTB = true; + uboot = true; #XXX: any non-null value here is needed so that mkimage is present to build kernelTarget uImage + gcc = { + cpu = "cortex-a9"; + fpu = "neon"; + float = "hard"; + }; + }; + guruplug = sheevaplug // { # Define `CONFIG_MACH_GURUPLUG' (see # ) diff --git a/nixos/doc/manual/release-notes/rl-1709.xml b/nixos/doc/manual/release-notes/rl-1709.xml index 5fba4c34ec8..7a92f2e8a63 100644 --- a/nixos/doc/manual/release-notes/rl-1709.xml +++ b/nixos/doc/manual/release-notes/rl-1709.xml @@ -39,6 +39,13 @@ following incompatible changes: All JetBrains IDEs are now at jetbrains. + + + flexget's state database cannot be upgraded to its + new internal format, requiring removal of any existing + db-config.sqlite which will be automatically recreated. + + diff --git a/nixos/modules/config/i18n.nix b/nixos/modules/config/i18n.nix index 799f0793c74..65ef9512780 100644 --- a/nixos/modules/config/i18n.nix +++ b/nixos/modules/config/i18n.nix @@ -2,21 +2,27 @@ with lib; -let - - glibcLocales = pkgs.glibcLocales.override { - allLocales = any (x: x == "all") config.i18n.supportedLocales; - locales = config.i18n.supportedLocales; - }; - -in - { ###### interface options = { i18n = { + glibcLocales = mkOption { + type = types.path; + default = pkgs.glibcLocales.override { + allLocales = any (x: x == "all") config.i18n.supportedLocales; + locales = config.i18n.supportedLocales; + }; + example = literalExample "pkgs.glibcLocales"; + description = '' + Customized pkg.glibcLocales package. + + Changing this option can disable handling of i18n.defaultLocale + and supportedLocale. + ''; + }; + defaultLocale = mkOption { type = types.str; default = "en_US.UTF-8"; @@ -118,7 +124,7 @@ in ''); environment.systemPackages = - optional (config.i18n.supportedLocales != []) glibcLocales; + optional (config.i18n.supportedLocales != []) config.i18n.glibcLocales; environment.sessionVariables = { LANG = config.i18n.defaultLocale; @@ -126,7 +132,7 @@ in }; systemd.globalEnvironment = mkIf (config.i18n.supportedLocales != []) { - LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive"; + LOCALE_ARCHIVE = "${config.i18n.glibcLocales}/lib/locale/locale-archive"; }; # ‘/etc/locale.conf’ is used by systemd. diff --git a/nixos/modules/installer/tools/nixos-prepare-root.sh b/nixos/modules/installer/tools/nixos-prepare-root.sh index cd786c47ef6..0bd70d2d349 100644 --- a/nixos/modules/installer/tools/nixos-prepare-root.sh +++ b/nixos/modules/installer/tools/nixos-prepare-root.sh @@ -37,7 +37,7 @@ mkdir -m 0755 -p $mountPoint/tmp/root mkdir -m 0755 -p $mountPoint/var mkdir -m 0700 -p $mountPoint/root -ln -s /run $mountPoint/var/run +ln -sf /run $mountPoint/var/run # Create the necessary Nix directories on the target device mkdir -m 0755 -p \ diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index 6c2507d69d2..d217b3452fb 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -293,6 +293,7 @@ radarr = 275; jackett = 276; aria2 = 277; + clickhouse = 278; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -555,6 +556,7 @@ radarr = 275; jackett = 276; aria2 = 277; + clickhouse = 278; # When adding a gid, make sure it doesn't match an existing # uid. Users and groups with the same name should have equal diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 99bc0da2b3a..672521166e4 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -71,6 +71,7 @@ ./programs/atop.nix ./programs/bash/bash.nix ./programs/blcr.nix + ./programs/browserpass.nix ./programs/cdemu.nix ./programs/chromium.nix ./programs/command-not-found/command-not-found.nix @@ -88,6 +89,7 @@ ./programs/mtr.nix ./programs/nano.nix ./programs/oblogout.nix + ./programs/qt5ct.nix ./programs/screen.nix ./programs/slock.nix ./programs/shadow.nix @@ -164,6 +166,7 @@ ./services/continuous-integration/jenkins/slave.nix ./services/databases/4store-endpoint.nix ./services/databases/4store.nix + ./services/databases/clickhouse.nix ./services/databases/couchdb.nix ./services/databases/firebird.nix ./services/databases/hbase.nix @@ -505,6 +508,7 @@ ./services/networking/wpa_supplicant.nix ./services/networking/xinetd.nix ./services/networking/xl2tpd.nix + ./services/networking/xrdp.nix ./services/networking/zerobin.nix ./services/networking/zerotierone.nix ./services/networking/znc.nix @@ -530,8 +534,9 @@ ./services/security/munge.nix ./services/security/oauth2_proxy.nix ./services/security/physlock.nix - ./services/security/torify.nix + ./services/security/sshguard.nix ./services/security/tor.nix + ./services/security/torify.nix ./services/security/torsocks.nix ./services/system/cgmanager.nix ./services/system/cloud-init.nix diff --git a/nixos/modules/profiles/hardened.nix b/nixos/modules/profiles/hardened.nix index c7f80fe47aa..8bde2e4f498 100644 --- a/nixos/modules/profiles/hardened.nix +++ b/nixos/modules/profiles/hardened.nix @@ -47,4 +47,16 @@ with lib; # ... or at least apply some hardening to it boot.kernel.sysctl."net.core.bpf_jit_harden" = mkDefault true; + + # A recurring problem with user namespaces is that there are + # still code paths where the kernel's permission checking logic + # fails to account for namespacing, instead permitting a + # namespaced process to act outside the namespace with the + # same privileges as it would have inside it. This is particularly + # bad in the common case of running as root within the namespace. + # + # Setting the number of allowed userns to 0 effectively disables + # the feature at runtime. Attempting to create a user namespace + # with unshare will then fail with "no space left on device". + boot.kernel.sysctl."user.max_user_namespaces" = mkDefault 0; } diff --git a/nixos/modules/programs/browserpass.nix b/nixos/modules/programs/browserpass.nix new file mode 100644 index 00000000000..2b7ec185643 --- /dev/null +++ b/nixos/modules/programs/browserpass.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + + ###### interface + options = { + programs.browserpass = { + enable = mkOption { + default = false; + type = types.bool; + description = '' + Whether to install the NativeMessaging configuration for installed browsers. + ''; + }; + }; + }; + + ###### implementation + config = mkIf config.programs.browserpass.enable { + environment.systemPackages = [ pkgs.browserpass ]; + environment.etc."chromium/native-messaging-hosts/com.dannyvankooten.browserpass.json".source = "${pkgs.browserpass}/etc/chrome-host.json"; + environment.etc."opt/chrome/native-messaging-hosts/com.dannyvankooten.browserpass.json".source = "${pkgs.browserpass}/etc/chrome-host.json"; + }; +} diff --git a/nixos/modules/programs/environment.nix b/nixos/modules/programs/environment.nix index a1615c920c0..48a1e2a0a88 100644 --- a/nixos/modules/programs/environment.nix +++ b/nixos/modules/programs/environment.nix @@ -20,6 +20,7 @@ in { NIXPKGS_CONFIG = "/etc/nix/nixpkgs-config.nix"; PAGER = mkDefault "less -R"; EDITOR = mkDefault "nano"; + XCURSOR_PATH = "$HOME/.icons"; }; environment.profiles = @@ -42,6 +43,7 @@ in GTK_PATH = [ "/lib/gtk-2.0" "/lib/gtk-3.0" ]; XDG_CONFIG_DIRS = [ "/etc/xdg" ]; XDG_DATA_DIRS = [ "/share" ]; + XCURSOR_PATH = [ "/share/icons" ]; MOZ_PLUGIN_PATH = [ "/lib/mozilla/plugins" ]; LIBEXEC_PATH = [ "/lib/libexec" ]; }; diff --git a/nixos/modules/programs/qt5ct.nix b/nixos/modules/programs/qt5ct.nix new file mode 100644 index 00000000000..550634e65be --- /dev/null +++ b/nixos/modules/programs/qt5ct.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + meta.maintainers = [ maintainers.romildo ]; + + ###### interface + options = { + programs.qt5ct = { + enable = mkOption { + default = false; + type = types.bool; + description = '' + Whether to enable the Qt5 Configuration Tool (qt5ct), a + program that allows users to configure Qt5 settings (theme, + font, icons, etc.) under desktop environments or window + manager without Qt integration. + + Official home page: https://sourceforge.net/projects/qt5ct/ + ''; + }; + }; + }; + + ###### implementation + config = mkIf config.programs.qt5ct.enable { + environment.variables.QT_QPA_PLATFORMTHEME = "qt5ct"; + environment.systemPackages = [ pkgs.qt5ct ]; + }; +} diff --git a/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix b/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix index fde241ca3ce..e5246bb4260 100644 --- a/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix +++ b/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix @@ -36,6 +36,24 @@ in https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md ''; }; + + patterns = mkOption { + default = []; + type = types.listOf(types.listOf(types.string)); + + example = literalExample '' + [ + ["rm -rf *" "fg=white,bold,bg=red"] + ] + ''; + + description = '' + Specifies custom patterns to be highlighted by zsh-syntax-highlighting. + + Please refer to the docs for more information about the usage: + https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/pattern.md + ''; + }; }; }; @@ -48,6 +66,16 @@ in ${optionalString (length(cfg.highlighters) > 0) "ZSH_HIGHLIGHT_HIGHLIGHTERS=(${concatStringsSep " " cfg.highlighters})" } + + ${optionalString (length(cfg.patterns) > 0) + (assert(elem "pattern" cfg.highlighters); (foldl ( + a: b: + assert(length(b) == 2); '' + ${a} + ZSH_HIGHLIGHT_PATTERNS+=('${elemAt b 0}' '${elemAt b 1}') + '' + ) "") cfg.patterns) + } ''; }; } diff --git a/nixos/modules/security/lock-kernel-modules.nix b/nixos/modules/security/lock-kernel-modules.nix index 51994ee76c1..260ec3fc946 100644 --- a/nixos/modules/security/lock-kernel-modules.nix +++ b/nixos/modules/security/lock-kernel-modules.nix @@ -25,7 +25,7 @@ with lib; script = "echo -n 1 > /proc/sys/kernel/modules_disabled"; - unitConfig.ConditionPathIsWritable = "/proc/sys/kernel"; + unitConfig.ConditionPathIsReadWrite = "/proc/sys/kernel"; serviceConfig = { Type = "oneshot"; diff --git a/nixos/modules/services/backup/tarsnap.nix b/nixos/modules/services/backup/tarsnap.nix index 67112343c33..7c9dedb67ad 100644 --- a/nixos/modules/services/backup/tarsnap.nix +++ b/nixos/modules/services/backup/tarsnap.nix @@ -230,6 +230,14 @@ in Download bandwidth rate limit in bytes. ''; }; + + verbose = mkOption { + type = types.bool; + default = false; + description = '' + Whether to produce verbose logging output. + ''; + }; }; } )); @@ -293,7 +301,10 @@ in ''; script = - let run = ''tarsnap --configfile "/etc/tarsnap/${name}.conf" -c -f "${name}-$(date +"%Y%m%d%H%M%S")" ${concatStringsSep " " cfg.directories}''; + let run = ''tarsnap --configfile "/etc/tarsnap/${name}.conf" \ + -c -f "${name}-$(date +"%Y%m%d%H%M%S")" \ + ${optionalString cfg.verbose "-v"} \ + ${concatStringsSep " " cfg.directories}''; in if (cfg.cachedir != null) then '' mkdir -p ${cfg.cachedir} chmod 0700 ${cfg.cachedir} diff --git a/nixos/modules/services/backup/znapzend.nix b/nixos/modules/services/backup/znapzend.nix index 648089f90b7..35c0308c9dc 100644 --- a/nixos/modules/services/backup/znapzend.nix +++ b/nixos/modules/services/backup/znapzend.nix @@ -20,15 +20,12 @@ in description = "ZnapZend - ZFS Backup System"; after = [ "zfs.target" ]; - path = with pkgs; [ znapzend zfs mbuffer openssh ]; + path = with pkgs; [ zfs mbuffer openssh ]; - script = '' - znapzend - ''; - - reload = '' - /bin/kill -HUP $MAINPID - ''; + serviceConfig = { + ExecStart = "${pkgs.znapzend}/bin/znapzend"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + }; }; }; diff --git a/nixos/modules/services/databases/clickhouse.nix b/nixos/modules/services/databases/clickhouse.nix new file mode 100644 index 00000000000..631d7f8cba7 --- /dev/null +++ b/nixos/modules/services/databases/clickhouse.nix @@ -0,0 +1,75 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.services.clickhouse; + confDir = "/etc/clickhouse-server"; + stateDir = "/var/lib/clickhouse"; +in +with lib; +{ + + ###### interface + + options = { + + services.clickhouse = { + + enable = mkOption { + default = false; + description = "Whether to enable ClickHouse database server."; + }; + + }; + + }; + + + ###### implementation + + config = mkIf cfg.enable { + + users.extraUsers.clickhouse = { + name = "clickhouse"; + uid = config.ids.uids.clickhouse; + group = "clickhouse"; + description = "ClickHouse server user"; + }; + + users.extraGroups.clickhouse.gid = config.ids.gids.clickhouse; + + systemd.services.clickhouse = { + description = "ClickHouse server"; + + wantedBy = [ "multi-user.target" ]; + + after = [ "network.target" ]; + + preStart = '' + mkdir -p ${stateDir} + chown clickhouse:clickhouse ${confDir} ${stateDir} + ''; + + script = '' + cd "${confDir}" + exec ${pkgs.clickhouse}/bin/clickhouse-server + ''; + + serviceConfig = { + User = "clickhouse"; + Group = "clickhouse"; + PermissionsStartOnly = true; + }; + }; + + environment.etc = { + "clickhouse-server/config.xml" = { + source = "${pkgs.clickhouse}/etc/clickhouse-server/config.xml"; + }; + + "clickhouse-server/users.xml" = { + source = "${pkgs.clickhouse}/etc/clickhouse-server/users.xml"; + }; + }; + + }; + +} diff --git a/nixos/modules/services/misc/gogs.nix b/nixos/modules/services/misc/gogs.nix index ca8fc06e483..ad2e36d04d5 100644 --- a/nixos/modules/services/misc/gogs.nix +++ b/nixos/modules/services/misc/gogs.nix @@ -14,7 +14,7 @@ let HOST = ${cfg.database.host}:${toString cfg.database.port} NAME = ${cfg.database.name} USER = ${cfg.database.user} - PASSWD = ${cfg.database.password} + PASSWD = #dbpass# PATH = ${cfg.database.path} [repository] @@ -26,6 +26,10 @@ let HTTP_PORT = ${toString cfg.httpPort} ROOT_URL = ${cfg.rootUrl} + [session] + COOKIE_NAME = session + COOKIE_SECURE = ${boolToString cfg.cookieSecure} + [security] SECRET_KEY = #secretkey# INSTALL_LOCK = true @@ -102,7 +106,21 @@ in password = mkOption { type = types.str; default = ""; - description = "Database password."; + description = '' + The password corresponding to . + Warning: this is stored in cleartext in the Nix store! + Use instead. + ''; + }; + + passwordFile = mkOption { + type = types.nullOr types.path; + default = null; + example = "/run/keys/gogs-dbpassword"; + description = '' + A file containing the password corresponding to + . + ''; }; path = mkOption { @@ -148,6 +166,15 @@ in description = "HTTP listen port."; }; + cookieSecure = mkOption { + type = types.bool; + default = false; + description = '' + Marks session cookies as "secure" as a hint for browsers to only send + them via HTTPS. This option is recommend, if Gogs is being served over HTTPS. + ''; + }; + extraConfig = mkOption { type = types.str; default = ""; @@ -164,13 +191,25 @@ in wantedBy = [ "multi-user.target" ]; path = [ pkgs.gogs.bin ]; - preStart = '' + preStart = let + runConfig = "${cfg.stateDir}/custom/conf/app.ini"; + secretKey = "${cfg.stateDir}/custom/conf/secret_key"; + in '' # copy custom configuration and generate a random secret key if needed ${optionalString (cfg.useWizard == false) '' mkdir -p ${cfg.stateDir}/custom/conf - cp -f ${configFile} ${cfg.stateDir}/custom/conf/app.ini - KEY=$(head -c 16 /dev/urandom | tr -dc A-Za-z0-9) - sed -i "s,#secretkey#,$KEY,g" ${cfg.stateDir}/custom/conf/app.ini + cp -f ${configFile} ${runConfig} + + if [ ! -e ${secretKey} ]; then + head -c 16 /dev/urandom | base64 > ${secretKey} + fi + + KEY=$(head -n1 ${secretKey}) + DBPASS=$(head -n1 ${cfg.database.passwordFile}) + sed -e "s,#secretkey#,$KEY,g" \ + -e "s,#dbpass#,$DBPASS,g" \ + -i ${runConfig} + chmod 440 ${runConfig} ${secretKey} ''} mkdir -p ${cfg.repositoryRoot} @@ -212,5 +251,16 @@ in }; extraGroups.gogs.gid = config.ids.gids.gogs; }; + + warnings = optional (cfg.database.password != "") + ''config.services.gogs.database.password will be stored as plaintext + in the Nix store. Use database.passwordFile instead.''; + + # Create database passwordFile default when password is configured. + services.gogs.database.passwordFile = mkIf (cfg.database.password != "") + (mkDefault (toString (pkgs.writeTextFile { + name = "gogs-database-password"; + text = cfg.database.password; + }))); }; } diff --git a/nixos/modules/services/monitoring/cadvisor.nix b/nixos/modules/services/monitoring/cadvisor.nix index 8ae8b12056c..6ca420a05b2 100644 --- a/nixos/modules/services/monitoring/cadvisor.nix +++ b/nixos/modules/services/monitoring/cadvisor.nix @@ -54,7 +54,29 @@ in { storageDriverPassword = mkOption { default = "root"; type = types.str; - description = "Cadvisor storage driver password."; + description = '' + Cadvisor storage driver password. + + Warning: this password is stored in the world-readable Nix store. It's + recommended to use the option + since that gives you control over the security of the password. + also takes precedence over . + ''; + }; + + storageDriverPasswordFile = mkOption { + type = types.str; + description = '' + File that contains the cadvisor storage driver password. + + takes precedence over + + Warning: when is non-empty this defaults to a file in the + world-readable Nix store that contains the value of . + + It's recommended to override this with a path not in the Nix store. + Tip: use nixops key management + ''; }; storageDriverSecure = mkOption { @@ -65,35 +87,44 @@ in { }; }; - config = mkIf cfg.enable { - systemd.services.cadvisor = { - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" "docker.service" "influxdb.service" ]; + config = mkMerge [ + { services.cadvisor.storageDriverPasswordFile = mkIf (cfg.storageDriverPassword != "") ( + mkDefault (toString (pkgs.writeTextFile { + name = "cadvisor-storage-driver-password"; + text = cfg.storageDriverPassword; + })) + ); + } - postStart = mkBefore '' - until ${pkgs.curl.bin}/bin/curl -s -o /dev/null 'http://${cfg.listenAddress}:${toString cfg.port}/containers/'; do - sleep 1; - done - ''; + (mkIf cfg.enable { + systemd.services.cadvisor = { + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" "docker.service" "influxdb.service" ]; - serviceConfig = { - ExecStart = ''${pkgs.cadvisor}/bin/cadvisor \ - -logtostderr=true \ - -listen_ip=${cfg.listenAddress} \ - -port=${toString cfg.port} \ - ${optionalString (cfg.storageDriver != null) '' - -storage_driver ${cfg.storageDriver} \ - -storage_driver_user ${cfg.storageDriverHost} \ - -storage_driver_db ${cfg.storageDriverDb} \ - -storage_driver_user ${cfg.storageDriverUser} \ - -storage_driver_password ${cfg.storageDriverPassword} \ - ${optionalString cfg.storageDriverSecure "-storage_driver_secure"} - ''} + postStart = mkBefore '' + until ${pkgs.curl.bin}/bin/curl -s -o /dev/null 'http://${cfg.listenAddress}:${toString cfg.port}/containers/'; do + sleep 1; + done ''; - TimeoutStartSec=300; - }; - }; - virtualisation.docker.enable = mkDefault true; - }; + script = '' + exec ${pkgs.cadvisor}/bin/cadvisor \ + -logtostderr=true \ + -listen_ip="${cfg.listenAddress}" \ + -port="${toString cfg.port}" \ + ${optionalString (cfg.storageDriver != null) '' + -storage_driver "${cfg.storageDriver}" \ + -storage_driver_user "${cfg.storageDriverHost}" \ + -storage_driver_db "${cfg.storageDriverDb}" \ + -storage_driver_user "${cfg.storageDriverUser}" \ + -storage_driver_password "$(cat "${cfg.storageDriverPasswordFile}")" \ + ${optionalString cfg.storageDriverSecure "-storage_driver_secure"} + ''} + ''; + + serviceConfig.TimeoutStartSec=300; + }; + virtualisation.docker.enable = mkDefault true; + }) + ]; } diff --git a/nixos/modules/services/monitoring/longview.nix b/nixos/modules/services/monitoring/longview.nix index 770d56e60ef..9c38956f9ba 100644 --- a/nixos/modules/services/monitoring/longview.nix +++ b/nixos/modules/services/monitoring/longview.nix @@ -5,22 +5,10 @@ with lib; let cfg = config.services.longview; - pidFile = "/run/longview.pid"; + runDir = "/run/longview"; + configsDir = "${runDir}/longview.d"; - apacheConf = optionalString (cfg.apacheStatusUrl != "") '' - location ${cfg.apacheStatusUrl}?auto - ''; - mysqlConf = optionalString (cfg.mysqlUser != "") '' - username ${cfg.mysqlUser} - password ${cfg.mysqlPassword} - ''; - nginxConf = optionalString (cfg.nginxStatusUrl != "") '' - location ${cfg.nginxStatusUrl} - ''; - -in - -{ +in { options = { services.longview = { @@ -35,10 +23,27 @@ in apiKey = mkOption { type = types.str; + default = ""; example = "01234567-89AB-CDEF-0123456789ABCDEF"; description = '' Longview API key. To get this, look in Longview settings which are found at https://manager.linode.com/longview/. + + Warning: this secret is stored in the world-readable Nix store! + Use instead. + ''; + }; + + apiKeyFile = mkOption { + type = types.nullOr types.path; + default = null; + example = "/run/keys/longview-api-key"; + description = '' + A file containing the Longview API key. + To get this, look in Longview settings which + are found at https://manager.linode.com/longview/. + + takes precedence over . ''; }; @@ -77,11 +82,23 @@ in mysqlPassword = mkOption { type = types.str; + default = ""; description = '' - The password corresponding to mysqlUser. Warning: this is - stored in cleartext in the Nix store! + The password corresponding to . + Warning: this is stored in cleartext in the Nix store! + Use instead. ''; }; + + mysqlPasswordFile = mkOption { + type = types.nullOr types.path; + default = null; + example = "/run/keys/dbpassword"; + description = '' + A file containing the password corresponding to . + ''; + }; + }; }; @@ -94,25 +111,50 @@ in serviceConfig.Type = "forking"; serviceConfig.ExecStop = "-${pkgs.coreutils}/bin/kill -TERM $MAINPID"; serviceConfig.ExecReload = "-${pkgs.coreutils}/bin/kill -HUP $MAINPID"; - serviceConfig.PIDFile = pidFile; + serviceConfig.PIDFile = "${runDir}/longview.pid"; serviceConfig.ExecStart = "${pkgs.longview}/bin/longview"; + preStart = '' + umask 077 + mkdir -p ${configsDir} + '' + (optionalString (cfg.apiKeyFile != null) '' + cp --no-preserve=all "${cfg.apiKeyFile}" ${runDir}/longview.key + '') + (optionalString (cfg.apacheStatusUrl != "") '' + cat > ${configsDir}/Apache.conf < ${configsDir}/MySQL.conf < ${configsDir}/Nginx.conf </dev/null | ${pkgs.bash}/bin/bash + PATH="/run/wrappers/bin:/run/current-system/sw/bin" ${pkgs.munin}/sbin/munin-node-configure --shell --families contrib,auto,manual --config ${nodeConf} --libdir=${muninPlugins} --servicedir=/etc/munin/plugins 2>/dev/null | ${pkgs.bash}/bin/bash ''; serviceConfig = { ExecStart = "${pkgs.munin}/sbin/munin-node --config ${nodeConf} --servicedir /etc/munin/plugins/"; diff --git a/nixos/modules/services/monitoring/ups.nix b/nixos/modules/services/monitoring/ups.nix index c4c4ed227b3..29dc68f90cc 100644 --- a/nixos/modules/services/monitoring/ups.nix +++ b/nixos/modules/services/monitoring/ups.nix @@ -80,7 +80,7 @@ let }; config = { - directives = mkHeader ([ + directives = mkOrder 10 ([ "driver = ${config.driver}" "port = ${config.port}" ''desc = "${config.description}"'' diff --git a/nixos/modules/services/networking/radicale.nix b/nixos/modules/services/networking/radicale.nix index f9300fdabc5..ef860e7e5df 100644 --- a/nixos/modules/services/networking/radicale.nix +++ b/nixos/modules/services/networking/radicale.nix @@ -57,4 +57,6 @@ in serviceConfig.Group = "radicale"; }; }; + + meta.maintainers = with lib.maintainers; [ aneeshusa ]; } diff --git a/nixos/modules/services/networking/xrdp.nix b/nixos/modules/services/networking/xrdp.nix new file mode 100644 index 00000000000..bf59130ce5b --- /dev/null +++ b/nixos/modules/services/networking/xrdp.nix @@ -0,0 +1,153 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xrdp; + confDir = pkgs.runCommand "xrdp.conf" { } '' + mkdir $out + + cp ${cfg.package}/etc/xrdp/{km-*,xrdp,sesman,xrdp_keyboard}.ini $out + + cat > $out/startwm.sh <&2 <fail("modprobe dccp"); }; + + # Test userns + subtest "userns", sub { + $machine->fail("unshare --user"); + }; ''; }) diff --git a/nixos/tests/radicale.nix b/nixos/tests/radicale.nix new file mode 100644 index 00000000000..4c2ed8456dd --- /dev/null +++ b/nixos/tests/radicale.nix @@ -0,0 +1,80 @@ +let + port = 5232; + radicaleOverlay = self: super: { + radicale = super.radicale.overrideAttrs (oldAttrs: { + propagatedBuildInputs = with self.pythonPackages; + (oldAttrs.propagatedBuildInputs or []) ++ [ + passlib + ]; + }); + }; + common = { config, pkgs, ...}: { + services.radicale = { + enable = true; + config = let home = config.users.extraUsers.radicale.home; in '' + [server] + hosts = 127.0.0.1:${builtins.toString port} + daemon = False + [encoding] + [well-known] + [auth] + type = htpasswd + htpasswd_filename = /etc/radicale/htpasswd + htpasswd_encryption = bcrypt + [git] + [rights] + [storage] + type = filesystem + filesystem_folder = ${home}/collections + [logging] + [headers] + ''; + }; + # WARNING: DON'T DO THIS IN PRODUCTION! + # This puts secrets (albeit hashed) directly into the Nix store for ease of testing. + environment.etc."radicale/htpasswd".source = with pkgs; let + py = python.withPackages(ps: with ps; [ passlib ]); + in runCommand "htpasswd" {} '' + ${py}/bin/python -c " +from passlib.apache import HtpasswdFile +ht = HtpasswdFile( + '$out', + new=True, + default_scheme='bcrypt' +) +ht.set_password('someuser', 'really_secret_password') +ht.save() +" + ''; + }; + +in import ./make-test.nix ({ lib, ... }: { + name = "radicale"; + meta.maintainers = with lib.maintainers; [ aneeshusa ]; + + # Test radicale with bcrypt-based htpasswd authentication + nodes = { + py2 = { config, pkgs, ... }@args: (common args) // { + nixpkgs.overlays = [ + radicaleOverlay + ]; + }; + py3 = { config, pkgs, ... }@args: (common args) // { + nixpkgs.overlays = [ + (self: super: { + python = self.python3; + pythonPackages = self.python3.pkgs; + }) + radicaleOverlay + ]; + }; + }; + + testScript = '' + for my $machine ($py2, $py3) { + $machine->waitForUnit('radicale.service'); + $machine->waitForOpenPort(${builtins.toString port}); + $machine->succeed('curl -s http://someuser:really_secret_password@127.0.0.1:${builtins.toString port}/someuser/calendar.ics/'); + } + ''; +}) diff --git a/nixos/tests/xrdp.nix b/nixos/tests/xrdp.nix new file mode 100644 index 00000000000..c997e36cc44 --- /dev/null +++ b/nixos/tests/xrdp.nix @@ -0,0 +1,45 @@ +import ./make-test.nix ({ pkgs, ...} : { + name = "xrdp"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ volth ]; + }; + + nodes = { + server = { lib, pkgs, ... }: { + imports = [ ./common/user-account.nix ]; + services.xrdp.enable = true; + services.xrdp.defaultWindowManager = "${pkgs.xterm}/bin/xterm"; + networking.firewall.allowedTCPPorts = [ 3389 ]; + }; + + client = { lib, pkgs, ... }: { + imports = [ ./common/x11.nix ./common/user-account.nix ]; + services.xserver.displayManager.auto.user = "alice"; + environment.systemPackages = [ pkgs.freerdp ]; + services.xrdp.enable = true; + services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm"; + }; + }; + + testScript = { nodes, ... }: '' + startAll; + + $client->waitForX; + $client->waitForFile("/home/alice/.Xauthority"); + $client->succeed("xauth merge ~alice/.Xauthority"); + + $client->sleep(5); + + $client->execute("xterm &"); + $client->sleep(1); + $client->sendChars("xfreerdp /cert-tofu /w:640 /h:480 /v:127.0.0.1 /u:alice /p:foobar\n"); + $client->sleep(5); + $client->screenshot("localrdp"); + + $client->execute("xterm &"); + $client->sleep(1); + $client->sendChars("xfreerdp /cert-tofu /w:640 /h:480 /v:server /u:alice /p:foobar\n"); + $client->sleep(5); + $client->screenshot("remoterdp"); + ''; +}) diff --git a/pkgs/applications/audio/abcde/default.nix b/pkgs/applications/audio/abcde/default.nix index a729d5cd4ef..6cb1ae6de71 100644 --- a/pkgs/applications/audio/abcde/default.nix +++ b/pkgs/applications/audio/abcde/default.nix @@ -19,46 +19,31 @@ in configurePhase = '' sed -i "s|^[[:blank:]]*prefix *=.*$|prefix = $out|g ; s|^[[:blank:]]*etcdir *=.*$|etcdir = $out/etc|g ; - s|^[[:blank:]]*INSTALL *=.*$|INSTALL = install -c|g" \ - "Makefile"; + s|^[[:blank:]]*INSTALL *=.*$|INSTALL = install -c|g" \ + "Makefile"; # We use `cd-paranoia' from GNU libcdio, which contains a hyphen # in its name, unlike Xiph's cdparanoia. sed -i "s|^[[:blank:]]*CDPARANOIA=.*$|CDPARANOIA=cd-paranoia|g ; s|^[[:blank:]]*DEFAULT_CDROMREADERS=.*$|DEFAULT_CDROMREADERS=\"cd-paranoia cdda2wav\"|g" \ - "abcde" + "abcde" - substituteInPlace "abcde" \ - --replace "/etc/abcde.conf" "$out/etc/abcde.conf" + substituteInPlace "abcde" \ + --replace "/etc/abcde.conf" "$out/etc/abcde.conf" ''; - # no ELFs in this package, only scripts - dontStrip = true; - dontPatchELF = true; - buildInputs = [ makeWrapper ]; + propagatedBuildInputs = [ perl DigestSHA MusicBrainz MusicBrainzDiscID ]; + installFlags = [ "sysconfdir=$(out)/etc" ]; - postInstall = '' - # substituteInPlace "$out/bin/cddb-tool" \ - # --replace '#!/bin/sh' '#!${bash}/bin/sh' - # substituteInPlace "$out/bin/abcde" \ - # --replace '#!/bin/bash' '#!${bash}/bin/bash' - - # generic fixup script should be doing this, but it ignores this file for some reason - substituteInPlace "$out/bin/abcde-musicbrainz-tool" \ - --replace '#!/usr/bin/perl' '#!${perl}/bin/perl' - - wrapProgram "$out/bin/abcde" --prefix PATH ":" \ - ${stdenv.lib.makeBinPath [ "$out" which libcdio cddiscid wget vorbis-tools id3v2 eyeD3 lame flac glyr ]} - - wrapProgram "$out/bin/cddb-tool" --prefix PATH ":" \ - "${wget}/bin" - - wrapProgram "$out/bin/abcde-musicbrainz-tool" --prefix PATH ":" \ - "${wget}/bin" + postFixup = '' + for cmd in abcde cddb-tool abcde-musicbrainz-tool; do + wrapProgram "$out/bin/$cmd" --prefix PATH ":" \ + ${stdenv.lib.makeBinPath [ "$out" which libcdio cddiscid wget vorbis-tools id3v2 eyeD3 lame flac glyr ]} + done ''; meta = { diff --git a/pkgs/applications/audio/google-play-music-desktop-player/default.nix b/pkgs/applications/audio/google-play-music-desktop-player/default.nix new file mode 100644 index 00000000000..12e9b88880d --- /dev/null +++ b/pkgs/applications/audio/google-play-music-desktop-player/default.nix @@ -0,0 +1,79 @@ +{ stdenv, alsaLib, atk, cairo, cups, dbus, dpkg, expat, fontconfig, freetype +, fetchurl, GConf, gdk_pixbuf, glib, gtk2, libpulseaudio, makeWrapper, nspr +, nss, pango, udev, xorg +}: + +let + version = "4.2.0"; + + deps = [ + alsaLib + atk + cairo + cups + dbus + expat + fontconfig + freetype + GConf + gdk_pixbuf + glib + gtk2 + libpulseaudio + nspr + nss + pango + stdenv.cc.cc + udev + xorg.libX11 + xorg.libxcb + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXScrnSaver + xorg.libXtst + ]; + +in + +stdenv.mkDerivation { + name = "google-play-music-desktop-player-${version}"; + + src = fetchurl { + url = "https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/releases/download/v${version}/google-play-music-desktop-player_${version}_amd64.deb"; + sha256 = "0n59b73jc6b86p5063xz7n0z48wy9mzqcx0l34av2hqkx6wcb2h8"; + }; + + dontBuild = true; + buildInputs = [ dpkg makeWrapper ]; + + unpackPhase = '' + dpkg -x $src . + ''; + + installPhase = '' + mkdir -p $out + cp -r ./usr/share $out + cp -r ./usr/bin $out + + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + "$out/share/google-play-music-desktop-player/Google Play Music Desktop Player" + + wrapProgram $out/bin/google-play-music-desktop-player \ + --prefix LD_LIBRARY_PATH : "$out/share/google-play-music-desktop-player" \ + --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath deps}" + ''; + + meta = { + homepage = https://www.googleplaymusicdesktopplayer.com/; + description = "A beautiful cross platform Desktop Player for Google Play Music"; + license = stdenv.lib.licenses.mit; + platforms = [ "x86_64-linux" ]; + maintainers = stdenv.lib.maintainers.SuprDewd; + }; +} diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix index f675febafb5..d1f487b37ac 100644 --- a/pkgs/applications/display-managers/sddm/default.nix +++ b/pkgs/applications/display-managers/sddm/default.nix @@ -25,6 +25,12 @@ let }) ]; + postPatch = + # Module Qt5::Test must be included in `find_package` before it is used. + '' + sed -i CMakeLists.txt -e '/find_package(Qt5/ s|)| Test)|' + ''; + nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig qttools ]; buildInputs = [ diff --git a/pkgs/applications/editors/emacs-modes/elpa-generated.nix b/pkgs/applications/editors/emacs-modes/elpa-generated.nix index e3129254058..5d301c519be 100644 --- a/pkgs/applications/editors/emacs-modes/elpa-generated.nix +++ b/pkgs/applications/editors/emacs-modes/elpa-generated.nix @@ -872,6 +872,19 @@ license = lib.licenses.free; }; }) {}; + hook-helpers = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { + pname = "hook-helpers"; + version = "1.1"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/hook-helpers-1.1.tar"; + sha256 = "0xvabl0lfc0ijr98clsyh0bqk2fdi1ncl0knn58j2p30gn9958i5"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/hook-helpers.html"; + license = lib.licenses.free; + }; + }) {}; html5-schema = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { pname = "html5-schema"; version = "0.1"; diff --git a/pkgs/applications/editors/emacs-modes/melpa-generated.nix b/pkgs/applications/editors/emacs-modes/melpa-generated.nix index d5ce5e272f7..f23b082132b 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-generated.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-generated.nix @@ -338,7 +338,7 @@ pname = "ac-dabbrev"; version = "20130905.2218"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/ac-dabbrev.el"; + url = "https://www.emacswiki.org/emacs/download/ac-dabbrev.el?revision=9"; sha256 = "0q0lbhdng5s5hqa342yyvg02hf2bfbwq513lj1rlaqz4ykvpd7fh"; }; recipeFile = fetchurl { @@ -380,8 +380,8 @@ src = fetchFromGitHub { owner = "emacs-eclim"; repo = "emacs-eclim"; - rev = "c13d1e853722bac880e82e6b04158015e7b12f6c"; - sha256 = "18bm0prhnahj0b397hn9nn98d09rrzfhzfg86glxqy4y8k6f0ai6"; + rev = "1d0ac3f4cd90d44e75f75c8c0bd234013349e14f"; + sha256 = "0cds3rmyp3imx234vdbmrl5l7fq90aixb8n1iv0ba5jrx1yk91lz"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e9d3075587fbd9ca188535fd945a7dc451c6d7e/recipes/ac-emacs-eclim"; @@ -800,8 +800,8 @@ src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "18c6aa5b00451abf9dd34df60cb5b35e7d0866a6"; - sha256 = "1ih0bbjq0ydcs41zaz5lv87q32lx871rhjfgs7yqgd713bc55xxh"; + rev = "6b2ec42acfed369121aff26d1135669bfc272880"; + sha256 = "0fbjrn1ca4xacygwvsbam8lpl3p88i5nbfqmaz7n6xrlb788zv77"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/ac-rtags"; @@ -1045,22 +1045,22 @@ license = lib.licenses.free; }; }) {}; - ace-pinyin = callPackage ({ ace-jump-mode, avy, fetchFromGitHub, fetchurl, lib, melpaBuild, pinyinlib }: + ace-pinyin = callPackage ({ avy, fetchFromGitHub, fetchurl, lib, melpaBuild, pinyinlib }: melpaBuild { pname = "ace-pinyin"; - version = "20160611.1755"; + version = "20170430.2326"; src = fetchFromGitHub { owner = "cute-jumper"; repo = "ace-pinyin"; - rev = "8f7d7fdf3912730076d30b0a3ba17d05da1db9ee"; - sha256 = "06bsrnhhpncmk6jpcnvmjdb0ccz6z34ksf2ywp00l1c343p90v38"; + rev = "a9df88c1e6a32a4f4895acbb8c45383693c494c1"; + sha256 = "18xi669c15k0m1wb7x231ch1kzqgpi4nm54c42ajrkfq7l8kxq8w"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/ace-pinyin"; sha256 = "1b3asvzm3k66lsdkmlsgmnf8xlyic8zv294j1iahzkwm6bzqj8wd"; name = "ace-pinyin"; }; - packageRequires = [ ace-jump-mode avy pinyinlib ]; + packageRequires = [ avy pinyinlib ]; meta = { homepage = "https://melpa.org/#/ace-pinyin"; license = lib.licenses.free; @@ -1194,12 +1194,12 @@ add-node-modules-path = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "add-node-modules-path"; - version = "20160912.220"; + version = "20170501.151"; src = fetchFromGitHub { owner = "codesuki"; repo = "add-node-modules-path"; - rev = "9ed240e05dcb9628ba380151b54b02688be5e78e"; - sha256 = "0avv3ypdpscchq9n1lxs0ba0fc52zjyv7dbv54s7sclqxx4mi63k"; + rev = "8eef7fa6765af1716fc21db08f19f3d3e9b68998"; + sha256 = "1dm2gdhs9zy5jqhbqipdgzfj24mrzxz064ax9l2dg0lqylk1dc0q"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/63e99d8fc0678d7b1831cae8940e9e6547780861/recipes/add-node-modules-path"; @@ -1423,12 +1423,12 @@ airline-themes = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, powerline }: melpaBuild { pname = "airline-themes"; - version = "20161024.1051"; + version = "20170425.1646"; src = fetchFromGitHub { owner = "AnthonyDiGirolamo"; repo = "airline-themes"; - rev = "11e69a143ed66e50f0c95fda93ba0a5fa8bdf583"; - sha256 = "1n9qf9xmqbm0mjgcbzxgnmy1020rbh1cd7jmjbbfd8xhlh0kw14z"; + rev = "66538be615e2623e520e056ec18cb63e8de7b8c9"; + sha256 = "1q2w0xfywkg519wpm4g80v1s1jkddlcabbvlc6n4nxm2v35pvcwc"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/addeb923176132a52807308fa5e71d41c9511802/recipes/airline-themes"; @@ -1528,12 +1528,12 @@ alert = callPackage ({ fetchFromGitHub, fetchurl, gntp, lib, log4e, melpaBuild }: melpaBuild { pname = "alert"; - version = "20170223.1030"; + version = "20170429.1810"; src = fetchFromGitHub { owner = "jwiegley"; repo = "alert"; - rev = "fa9e6917c48e5338f3ed81226e1e5e5ec21563fb"; - sha256 = "0ri8lv3ln7n3msc8y6y9133dv8h0550xi142fn7w0s95hbskr61l"; + rev = "88ecd5f8ad7c4d3b17c3a068b9b50696ae0b815c"; + sha256 = "0wnqf67ssbhm4l3ds49jm4pbj8pxcwv5g9x3xwmbrli3h1zb136r"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/113953825ac4ff98d90a5375eb48d8b7bfa224e7/recipes/alert"; @@ -1591,12 +1591,12 @@ all-the-icons = callPackage ({ emacs, fetchFromGitHub, fetchurl, font-lock-plus, lib, melpaBuild }: melpaBuild { pname = "all-the-icons"; - version = "20170423.244"; + version = "20170428.1114"; src = fetchFromGitHub { owner = "domtronn"; repo = "all-the-icons.el"; - rev = "8d7cc77b174b56cba6cf2bac27fea99f918340f0"; - sha256 = "05xfbndlk65a38ixl7m92lha0v9z3hw4zk051a7nr2bzsfvyg92g"; + rev = "0ed04c0cdf10ce43a01323ac97f129520de09a7e"; + sha256 = "0h7h0rbd34g5yrm4f1bpdwkw3yrj2w75jzgh2blrdhbs29sxdv1s"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/604c01aa15927bd122260529ff0f4bb6a8168b7e/recipes/all-the-icons"; @@ -1770,7 +1770,7 @@ pname = "anchored-transpose"; version = "20080904.2254"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/anchored-transpose.el"; + url = "https://www.emacswiki.org/emacs/download/anchored-transpose.el?revision=8"; sha256 = "1hklypbp79pgaf1yklbm3qx4skm3xlml0cm1r9b9js3dbqyha651"; }; recipeFile = fetchurl { @@ -2354,7 +2354,7 @@ pname = "aok"; version = "20130824.427"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/aok.el"; + url = "https://www.emacswiki.org/emacs/download/aok.el?revision=13"; sha256 = "10vdmxzifxx3fkpyg76ngnj79k3d2pq0f322rd8ssc66alxhkz3g"; }; recipeFile = fetchurl { @@ -2580,7 +2580,7 @@ pname = "apu"; version = "20170221.750"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/apu.el"; + url = "https://www.emacswiki.org/emacs/download/apu.el?revision=27"; sha256 = "15mq2b0df4hx53hqvgl3hcrbf9ww370byg90cail6rm50wamyik6"; }; recipeFile = fetchurl { @@ -2597,12 +2597,12 @@ arch-packer = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s }: melpaBuild { pname = "arch-packer"; - version = "20170417.346"; + version = "20170501.345"; src = fetchFromGitHub { owner = "brotzeitmacher"; repo = "arch-packer"; - rev = "4a37e8fb9fadfb9f4e75a042231192b0a582b40d"; - sha256 = "0l36f5hnz4k556hkx42qsp2df9g319znnqq5mqgabykqbdd604hs"; + rev = "72515980818a213510f867eb6c58c896f1749ced"; + sha256 = "0im6i4j83v74w21vlshk78kn9qpqb8nd7wlnpvf6zabr5a3gr0rx"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/39f13017cde2d209a58dc45f0df25dc723398b72/recipes/arch-packer"; @@ -2766,7 +2766,7 @@ pname = "ascii"; version = "20130824.500"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/ascii.el"; + url = "https://www.emacswiki.org/emacs/download/ascii.el?revision=10"; sha256 = "05fjsj5nmc05cmsi0qj914dqdwk8rll1d4dwhn0crw36p2ivql75"; }; recipeFile = fetchurl { @@ -2846,12 +2846,12 @@ async = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "async"; - version = "20170219.942"; + version = "20170429.2207"; src = fetchFromGitHub { owner = "jwiegley"; repo = "emacs-async"; - rev = "666066d30a420d86801d8380f5991f2b82471107"; - sha256 = "1hjyac7dm0yvg5y32fii6508wwhl5q493i8ikf3fszafz03nc6sc"; + rev = "6c9c3a2812deb32d88aa8bcba07c266a8e8f3601"; + sha256 = "0c5jfc0fldv3a62kkqmqv2zy87gzfv86w1f9ghy8h48m3vr4x54z"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/async"; @@ -3141,7 +3141,7 @@ pname = "auto-capitalize"; version = "20160415.1403"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/auto-capitalize.el"; + url = "https://www.emacswiki.org/emacs/download/auto-capitalize.el?revision=19"; sha256 = "0xywyfpsi64g9lihm5ncmjrj06iq9s6pp9fmsgj1hdf9y0z65lg0"; }; recipeFile = fetchurl { @@ -3516,7 +3516,7 @@ pname = "auto-install"; version = "20150418.1702"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/auto-install.el"; + url = "https://www.emacswiki.org/emacs/download/auto-install.el?revision=82"; sha256 = "043pb2wk7jh0jgxphdl4848rjyabna26gj0vlhpiyd8zc361pg9d"; }; recipeFile = fetchurl { @@ -3787,7 +3787,7 @@ pname = "autofit-frame"; version = "20170221.752"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/autofit-frame.el"; + url = "https://www.emacswiki.org/emacs/download/autofit-frame.el?revision=48"; sha256 = "0c2b0d743w1c58iicg9r194zq2l5xxa08zyxj0nljw2dz9lhacwm"; }; recipeFile = fetchurl { @@ -4078,7 +4078,7 @@ pname = "awk-it"; version = "20130917.1148"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/awk-it.el"; + url = "https://www.emacswiki.org/emacs/download/awk-it.el?revision=10"; sha256 = "1r1vbi1r3rdbkyb2naciqwja7hxigjhqfxsfcinnygabsi7fw9aw"; }; recipeFile = fetchurl { @@ -4207,7 +4207,7 @@ pname = "backup-each-save"; version = "20130704.732"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/backup-each-save.el"; + url = "https://www.emacswiki.org/emacs/download/backup-each-save.el?revision=2"; sha256 = "0b9vvi2m0fdv36wj8mvawl951gjmg3pypg08a8n6rzn3rwg0fwz7"; }; recipeFile = fetchurl { @@ -4435,7 +4435,7 @@ pname = "batch-mode"; version = "20140807.1350"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/batch-mode.el"; + url = "https://www.emacswiki.org/emacs/download/batch-mode.el?revision=14"; sha256 = "1aa611jrzw4svmxvw1ghgh53x4nry0sl7mxmp4kxiaybqqvz6a1p"; }; recipeFile = fetchurl { @@ -4828,12 +4828,12 @@ better-defaults = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "better-defaults"; - version = "20160619.2308"; + version = "20170425.834"; src = fetchFromGitHub { owner = "technomancy"; repo = "better-defaults"; - rev = "ce2a9a85636a2ec220a6005185fb271b6f264907"; - sha256 = "0f1qq2fr734fa5cnlfpz4nm9j3wa1npji1vid3z02sllnh9y2dvq"; + rev = "6f502fd2d7aa8940a31fd630f883a63e04a002e6"; + sha256 = "15vayr1wy4qzgsv37pg8gjbv6b5zm9r51ql5j5l5q1x1ks9b6w2f"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7bb729c1ad8602a5c0c27e81c9442981a54a924a/recipes/better-defaults"; @@ -4850,7 +4850,7 @@ pname = "better-registers"; version = "20140813.119"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/better-registers.el"; + url = "https://www.emacswiki.org/emacs/download/better-registers.el?revision=23"; sha256 = "05dlhhvd1m9q642gqqj6klif13shbinqi6bi72fldidi1z6wcqlh"; }; recipeFile = fetchurl { @@ -5288,7 +5288,7 @@ pname = "blank-mode"; version = "20130824.459"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/blank-mode.el"; + url = "https://www.emacswiki.org/emacs/download/blank-mode.el?revision=40"; sha256 = "1wdplnmdllbydwr9gyyq4fbkxl5xjh7220vd4iajyv74pg2jkkkv"; }; recipeFile = fetchurl { @@ -5389,12 +5389,12 @@ blog-admin = callPackage ({ cl-lib ? null, ctable, f, fetchFromGitHub, fetchurl, lib, melpaBuild, names, s }: melpaBuild { pname = "blog-admin"; - version = "20170310.909"; + version = "20170430.721"; src = fetchFromGitHub { owner = "CodeFalling"; repo = "blog-admin"; - rev = "925e9cf749387fc5c631d93c1652a4a80eac91c3"; - sha256 = "0kb1y56cq990i1hsvk8dfrh3ks67l6wf7a3658w6f1nj903xy3rf"; + rev = "a7d3fa9317e9aa0b492e61b0706c4d9ca2f7a4b5"; + sha256 = "0ry1n53y1jz0gmijhypp84kaxkxn8g1pma74dwqmsy7f5ayhwi3h"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/blog-admin"; @@ -5868,7 +5868,7 @@ pname = "bs-ext"; version = "20130824.459"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/bs-ext.el"; + url = "https://www.emacswiki.org/emacs/download/bs-ext.el?revision=8"; sha256 = "1yslzlx54n17330sf6b2pynz01y6ifnkhipz4hggn1i55bz8hvrw"; }; recipeFile = fetchurl { @@ -6095,7 +6095,7 @@ pname = "buffer-stack"; version = "20101223.220"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/buffer-stack.el"; + url = "https://www.emacswiki.org/emacs/download/buffer-stack.el?revision=2"; sha256 = "0d87cl7a4rcd6plbjyf26vaar7imwd18z24xdi4dz734m9zbkg6r"; }; recipeFile = fetchurl { @@ -7078,7 +7078,7 @@ pname = "centered-cursor-mode"; version = "20151001.634"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/centered-cursor-mode.el"; + url = "https://www.emacswiki.org/emacs/download/centered-cursor-mode.el?revision=30"; sha256 = "15psyizjz8wf9wfxwwcdmg1bxf8jbv0qy40rskz7si7vxin8hhxl"; }; recipeFile = fetchurl { @@ -7162,8 +7162,8 @@ src = fetchFromGitHub { owner = "cfengine"; repo = "core"; - rev = "863111d5e625700a95679f6068f1de230dc73eb5"; - sha256 = "0a1fvr8raqa9na41znsznikimm2q0cldrdq5xw75c2xw8glfi3q6"; + rev = "8a525212ccc9af959f857ead918e27c0c1ffb67b"; + sha256 = "1kw14wrqqfyi1znj412hgykqz530m3rjl2cr8sih8ajr9704bkhw"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c737839aeda583e61257ad40157e24df7f918b0f/recipes/cfengine-code-style"; @@ -7202,7 +7202,7 @@ version = "20170201.347"; src = fetchsvn { url = "https://beta.visl.sdu.dk/svn/visl/tools/vislcg3/trunk/emacs"; - rev = "12149"; + rev = "12175"; sha256 = "0lv9lsh1dnsmida4hhj04ysq48v4m12nj9yq621xn3i6s2qz7s1k"; }; recipeFile = fetchurl { @@ -7219,12 +7219,12 @@ challenger-deep-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "challenger-deep-theme"; - version = "20170402.534"; + version = "20170428.301"; src = fetchFromGitHub { owner = "MaxSt"; repo = "challenger-deep"; - rev = "02317915e36cb19e3e46f17fdec074677159b3a7"; - sha256 = "02khn3wwzjxai81jrp8yaxfsa5n685l9b09ryd0wjf2hsa8ng975"; + rev = "a1e32cc882de952b887824bcc100aa095cb87b94"; + sha256 = "0f71ws2an3ivy4hyjqm141xxd7r62xh783n6fp21z7ya4zkzlvb5"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7942f539d025c1e2b059d49e1984716cbbc90a67/recipes/challenger-deep-theme"; @@ -7555,12 +7555,12 @@ chinese-pyim = callPackage ({ async, chinese-pyim-basedict, cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild, popup, pos-tip }: melpaBuild { pname = "chinese-pyim"; - version = "20170313.423"; + version = "20170430.131"; src = fetchFromGitHub { owner = "tumashu"; repo = "chinese-pyim"; - rev = "36284714815a2339bf25ed2a6051e6136ad81920"; - sha256 = "10qvikdi2mh72s9c5df2y8hx9m1hny3g9mwm8ar5nfvdhpwwhnnp"; + rev = "2fd3610a6585069693c4ce7b7eef6dcba7e57855"; + sha256 = "0k0nvv032i065lkmh1afyax5jx8bnshnxr2d0dfqhmlp8mpa5znx"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/157a264533124ba05c161aa93a32c7209f002fba/recipes/chinese-pyim"; @@ -7724,7 +7724,7 @@ pname = "chm-view"; version = "20110616.1019"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/chm-view.el"; + url = "https://www.emacswiki.org/emacs/download/chm-view.el?revision=5"; sha256 = "1r274pf0xrcdml4sy2nhhp3v5pr3y3s4lvk45hd3pmw1i4pw2fd8"; }; recipeFile = fetchurl { @@ -7804,12 +7804,12 @@ cider = callPackage ({ clojure-mode, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, pkg-info, queue, seq, spinner }: melpaBuild { pname = "cider"; - version = "20170403.402"; + version = "20170430.816"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "cider"; - rev = "35c18ac8afefecf746fa0a77e930636736cf6541"; - sha256 = "1r4706s8k3kpgkcn1jm9794bhpjfp0zxc4siqrr0h5hxfjnizc59"; + rev = "97be6b9344cdec7735dd5213ae780d7b9aa73144"; + sha256 = "1872wyfydvczlp59nd5ycpy85xxfzljz4z88x3p4x8parh55kri1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/55a937aed818dbe41530037da315f705205f189b/recipes/cider"; @@ -8080,7 +8080,7 @@ version = "20170120.137"; src = fetchsvn { url = "http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format"; - rev = "301302"; + rev = "301795"; sha256 = "1m3h5kln4v2hcwc4ahzk356415iizcg8cmika8221qvqci4wj7bm"; }; recipeFile = fetchurl { @@ -8286,12 +8286,12 @@ clj-refactor = callPackage ({ cider, clojure-mode, edn, emacs, fetchFromGitHub, fetchurl, hydra, inflections, lib, melpaBuild, multiple-cursors, paredit, s, seq, yasnippet }: melpaBuild { pname = "clj-refactor"; - version = "20170407.553"; + version = "20170430.1144"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "clj-refactor.el"; - rev = "0a25f2ed361fff056ee23cfa64eac1423c75dfeb"; - sha256 = "1alpvwmfqm9hqgcd4bhg54pvqjc85dc7wrcajxzv00gki47gj2zs"; + rev = "640271f1ecb27933209053898545142f5bc95652"; + sha256 = "192v6k7kkjkkdn0papcj47hpwrczlm413kaz1i6176whzqbm7cj0"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3a2db268e55d10f7d1d5a5f02d35b2c27b12b78e/recipes/clj-refactor"; @@ -8722,8 +8722,8 @@ src = fetchFromGitHub { owner = "Kitware"; repo = "CMake"; - rev = "759c6752127092447e8978a978eefde451024b28"; - sha256 = "016473s4x0z154hbcgafzv178rxq45rvspb7ap2qm6fw32abs117"; + rev = "033d4f37a7a31c640294924f732d0f735bdcacbc"; + sha256 = "18nxdiri1654xg7h7mnqbwk6xkj43g9mjr9b47jqgjpg9401dfyy"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/598723893ae4bc2e60f527a072efe6ed9d4e2488/recipes/cmake-mode"; @@ -8782,7 +8782,7 @@ pname = "cmds-menu"; version = "20170221.1557"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/cmds-menu.el"; + url = "https://www.emacswiki.org/emacs/download/cmds-menu.el?revision=10"; sha256 = "0ladkkydypf08mn3j749fv46blpzyvh45kx52qdzhwxjiz7nlmfs"; }; recipeFile = fetchurl { @@ -8990,7 +8990,7 @@ pname = "col-highlight"; version = "20170221.1559"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/col-highlight.el"; + url = "https://www.emacswiki.org/emacs/download/col-highlight.el?revision=30"; sha256 = "1xm1sbmcily1zy5xfpiphy3waq7928xpqmsrm3rcy37xbk2xj7vr"; }; recipeFile = fetchurl { @@ -9195,12 +9195,12 @@ color-theme-sanityinc-tomorrow = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "color-theme-sanityinc-tomorrow"; - version = "20170330.33"; + version = "20170501.350"; src = fetchFromGitHub { owner = "purcell"; repo = "color-theme-sanityinc-tomorrow"; - rev = "56d9c31a6bea3657363f79d5987d4afa6a4caf41"; - sha256 = "19aw5bac7sgyj70g093ds43ddx69mqrwgabx0wvjcg84kfggl6j4"; + rev = "16b8e1fccf3a80d8216a9343bb4b6ac0811f8102"; + sha256 = "02pq5s3jb61r1zx56im00kfy5yf1ba3mlsq6wwb6770ydcsk9r1r"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/color-theme-sanityinc-tomorrow"; @@ -9280,7 +9280,7 @@ pname = "column-marker"; version = "20121128.43"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/column-marker.el"; + url = "https://www.emacswiki.org/emacs/download/column-marker.el?revision=13"; sha256 = "05bv198zhqw5hqq6cr11mhz02dpca74hhp1ycwq369m0yb2naxy9"; }; recipeFile = fetchurl { @@ -9507,12 +9507,12 @@ company-ansible = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "company-ansible"; - version = "20170311.1313"; + version = "20170430.53"; src = fetchFromGitHub { owner = "krzysztof-magosa"; repo = "company-ansible"; - rev = "f08c19e95e67c852512c30b6825dae3dbd3005a0"; - sha256 = "0qypfla1j7c34syphh21nyswr363v6vwi87614wx9d1rz5v4h24n"; + rev = "2c30c3bdb8316b27d5c1832b944cb146d00de456"; + sha256 = "183hyy5vy7xs6hwsk8nrylck8w5czcqwzfx0wik4ppx8011jzis1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7b44cd4bd9f9a7c942ca3f3bd88b2ce61ffff130/recipes/company-ansible"; @@ -9757,8 +9757,8 @@ src = fetchFromGitHub { owner = "emacs-eclim"; repo = "emacs-eclim"; - rev = "c13d1e853722bac880e82e6b04158015e7b12f6c"; - sha256 = "18bm0prhnahj0b397hn9nn98d09rrzfhzfg86glxqy4y8k6f0ai6"; + rev = "1d0ac3f4cd90d44e75f75c8c0bd234013349e14f"; + sha256 = "0cds3rmyp3imx234vdbmrl5l7fq90aixb8n1iv0ba5jrx1yk91lz"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e9d3075587fbd9ca188535fd945a7dc451c6d7e/recipes/company-emacs-eclim"; @@ -9942,12 +9942,12 @@ company-irony = callPackage ({ cl-lib ? null, company, emacs, fetchFromGitHub, fetchurl, irony, lib, melpaBuild }: melpaBuild { pname = "company-irony"; - version = "20160826.56"; + version = "20170411.1645"; src = fetchFromGitHub { owner = "Sarcasm"; repo = "company-irony"; - rev = "f1d6761c581fd12fa1188e26478c0229d8348332"; - sha256 = "10kbyrryjk66ix5024acqrc0nn3hfgsavfpgbdspwbhwcff9czsx"; + rev = "87834a6e46dea52b8469ec636e6dc0a97e85bf27"; + sha256 = "05j439h4fzwakf91j0m70giyb6cwycnwy087nikxyfdiq7nk8lg2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d2b6a8d57b192325dcd30fddc9ff8dd1516ad680/recipes/company-irony"; @@ -10152,12 +10152,12 @@ company-qml = callPackage ({ company, fetchFromGitHub, fetchurl, lib, melpaBuild, qml-mode }: melpaBuild { pname = "company-qml"; - version = "20160707.1705"; + version = "20170428.1008"; src = fetchFromGitHub { owner = "cute-jumper"; repo = "company-qml"; - rev = "2027907611cd8a484289340506c63fa3a2c891a8"; - sha256 = "13nxvn0rvz9nfyi0w7iczq28afvln1q6djhn4drfm3ipmrx0cfgg"; + rev = "4af4f32a7ad86d86bb9293fb0b675aec513b5736"; + sha256 = "09d733r07gr4cxp7npyhi93xchvirxh1v00fr487v4a0mdaahpxf"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b53477eaba4ef62f8317c9454e15ac015442fed/recipes/company-qml"; @@ -10173,12 +10173,12 @@ company-quickhelp = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, pos-tip }: melpaBuild { pname = "company-quickhelp"; - version = "20170416.526"; + version = "20170429.1052"; src = fetchFromGitHub { owner = "expez"; repo = "company-quickhelp"; - rev = "81d9081fa68ef16ccd11ecc6296bf870d47d11f0"; - sha256 = "1fp7niq3xyp3xdqmbf6hzdz0g6p4rpk9lf4vhg2619qmkzh3k1d7"; + rev = "432c62f034a5097d3f85d7f54afcdc016d7afa12"; + sha256 = "06ijf4ayqkmlmk5waxi7alinv3wpy23b8xm35llf3h1ncg99zwqj"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/022cc4fee54bb0194822947c70058145e2980b94/recipes/company-quickhelp"; @@ -10246,8 +10246,8 @@ src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "18c6aa5b00451abf9dd34df60cb5b35e7d0866a6"; - sha256 = "1ih0bbjq0ydcs41zaz5lv87q32lx871rhjfgs7yqgd713bc55xxh"; + rev = "6b2ec42acfed369121aff26d1135669bfc272880"; + sha256 = "0fbjrn1ca4xacygwvsbam8lpl3p88i5nbfqmaz7n6xrlb788zv77"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/company-rtags"; @@ -10414,8 +10414,8 @@ src = fetchFromGitHub { owner = "abingham"; repo = "emacs-ycmd"; - rev = "21ada9ffbf5f921c87837796ea0b542d6d447d56"; - sha256 = "1pzc4fvrm2yfrrnfjhnnial2vj4iavr6vfnw6q2i4hz95h5b9mih"; + rev = "5c32c5b2454dd1ff31fb4c15704cd970b73574b2"; + sha256 = "0wr1hjgrrwbz97k05kcj6snn3bw8ra6k61wvahl4kiqvsf0ywss9"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/company-ycmd"; @@ -10431,12 +10431,12 @@ composable = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "composable"; - version = "20170319.644"; + version = "20170426.459"; src = fetchFromGitHub { owner = "paldepind"; repo = "composable.el"; - rev = "30bdd343f846d71c280189a1236324591b10d9ce"; - sha256 = "1pnawyjr6r80nlbh8mncvr42kwr9kha18sslnzx6agm0zzil36ib"; + rev = "09020605ee7f4e52ff2fa2f6d68d826db1ee7565"; + sha256 = "0vhvgn0ybdnh8c71sbjxh6bb05w5ivm3rmkj4f255zqfkjyddl7q"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1fc0f076198e4be46a33a26eea9f2d273dda12b8/recipes/composable"; @@ -10494,12 +10494,12 @@ conda = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, pythonic, s }: melpaBuild { pname = "conda"; - version = "20161103.743"; + version = "20170425.1845"; src = fetchFromGitHub { owner = "necaris"; repo = "conda.el"; - rev = "5a13e7deda80adb40553f1c256531d040a4c99a1"; - sha256 = "011z47hkynss8a56c2fi702laqxicmwai6anald58436pdxi3y6y"; + rev = "6ba9ef5d72ef613f478e07e2ebf57b47066beee7"; + sha256 = "0mp6jzyvz3m41vb4kwwikyvcjgc8qgryyx71n1m50jr2i23s9nk2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fcf762e34837975f5440a1d81a7f09699778123e/recipes/conda"; @@ -10766,12 +10766,12 @@ counsel = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, swiper }: melpaBuild { pname = "counsel"; - version = "20170425.51"; + version = "20170427.915"; src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "f98f89f1bd90e8165c776efe47bb6c8c7377c5a2"; - sha256 = "1xx7xic3cn4ak0adpariib2f636m42d04m197x7y74msx4jwjd6z"; + rev = "37a1e643608b88a44ee39f77c775f57cc19109df"; + sha256 = "11yj2nkw7zcj470rqwqkhvza9cjv9i82kh3ldaznaa0495f4bs2m"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/06c50f32b8d603db0d70e77907e36862cd66b811/recipes/counsel"; @@ -11230,7 +11230,7 @@ pname = "crosshairs"; version = "20170221.1608"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/crosshairs.el"; + url = "https://www.emacswiki.org/emacs/download/crosshairs.el?revision=39"; sha256 = "1wjj88zv37ak9zd12d7sy7j261x5y17wxmw5jrzk56shkpdvcbq0"; }; recipeFile = fetchurl { @@ -11331,12 +11331,12 @@ csharp-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "csharp-mode"; - version = "20170203.1122"; + version = "20170428.6"; src = fetchFromGitHub { owner = "josteink"; repo = "csharp-mode"; - rev = "571c4c70fe2de790e093cff23050827c5f6e96aa"; - sha256 = "14wr98hq1banf0dbyi83rar0apj9gvwdqfvmnmhzxfr6dnzxsybf"; + rev = "0f65654c5102d21198164299d950d75a1230424e"; + sha256 = "0bzq47l1svb20l0xjr8m2jac43r5akrv8kdn93s30rglgh0pidxn"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/736716bbcfd9c9fb1d10ce290cb4f66fe1c68f44/recipes/csharp-mode"; @@ -11437,7 +11437,7 @@ pname = "csv-nav"; version = "20130407.1120"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/csv-nav.el"; + url = "https://www.emacswiki.org/emacs/download/csv-nav.el?revision=7"; sha256 = "15rfg3326xcs3zj3siy9rn7yff101vfch1srskdi2650c3l3krva"; }; recipeFile = fetchurl { @@ -11542,8 +11542,8 @@ src = fetchFromGitHub { owner = "mortberg"; repo = "cubicaltt"; - rev = "a2358867957d0046f960a32660580d8b0ef22a58"; - sha256 = "02kiy3rn87kcpjcw4l7f2qrf37bnzp7f44qwlh3905rlzs4vby4f"; + rev = "ab4e8cb5d32b18b1124b5ce3c00f55517ee1da80"; + sha256 = "0ggm159grpck9gwra92nv168h1yjwfj2q0ghd066da7wkhhhmy9n"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1be42b49c206fc4f0df6fb50fed80b3d9b76710b/recipes/cubicaltt"; @@ -11602,7 +11602,7 @@ pname = "cursor-chg"; version = "20170221.1610"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/cursor-chg.el"; + url = "https://www.emacswiki.org/emacs/download/cursor-chg.el?revision=21"; sha256 = "026x1mbjrf68xrv970jbf131d26rj0nmzi1x0c8r6qdr02pw2jy1"; }; recipeFile = fetchurl { @@ -11743,7 +11743,7 @@ pname = "cygwin-mount"; version = "20131111.1346"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/cygwin-mount.el"; + url = "https://www.emacswiki.org/emacs/download/cygwin-mount.el?revision=17"; sha256 = "09my4gj3qm9rdpk8lg6n6ki8ywj7kwzwd4hhgwascfnfi1hzwdvw"; }; recipeFile = fetchurl { @@ -11806,8 +11806,8 @@ src = fetchFromGitHub { owner = "cython"; repo = "cython"; - rev = "e1e33240b3eeaaca5a4dd5ced7c80d481a68aca1"; - sha256 = "0vcqn3jimrihk9awhnyir2b3csc7lg3pwwpq5p5ghcdkdgsv8f5l"; + rev = "73f045236bacf035ab9f4fe38e23705f465fc9d6"; + sha256 = "1pzjwbsc2ly0haw756swrcvj1n4452vyvbx2zh0m8lxjfhsgqz62"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/be9bfabe3f79153cb859efc7c3051db244a63879/recipes/cython-mode"; @@ -11928,12 +11928,12 @@ dante = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild }: melpaBuild { pname = "dante"; - version = "20170420.45"; + version = "20170430.1336"; src = fetchFromGitHub { owner = "jyp"; repo = "dante"; - rev = "b762667c372a36e631eabee02f4feca7cdeb267c"; - sha256 = "142yw8lm57h94n8ycybbrjzgd9lm7xdraiwvmmzdv1m44h1rmf79"; + rev = "03afbbd5029339c6a4fa3fe4ff79b4818f062295"; + sha256 = "03x8p8rjfipgxgy6mjg6r2ss4x565m2d0cai7i6ghk7mf8i7ipl4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5afa8226077cbda4b76f52734cf8e0b745ab88e8/recipes/dante"; @@ -12869,11 +12869,11 @@ dic-lookup-w3m = callPackage ({ fetchsvn, fetchurl, lib, melpaBuild, stem, w3m }: melpaBuild { pname = "dic-lookup-w3m"; - version = "20170315.709"; + version = "20170427.732"; src = fetchsvn { url = "https://svn.osdn.jp/svnroot/dic-lookup-w3m/"; - rev = "96"; - sha256 = "17g0bl94qmzalh3m6r6q10q06864d1h1nx5i7fddsamakmg89ziw"; + rev = "97"; + sha256 = "077iz1fsw22rhzlsigslx5k6hsk1xny3kikr4gcwdmjd28yh7nvg"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/caaa21f235c4864f6008fb454d0a970a2fd22a86/recipes/dic-lookup-w3m"; @@ -13183,7 +13183,7 @@ pname = "dired-details"; version = "20130824.458"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/dired-details.el"; + url = "https://www.emacswiki.org/emacs/download/dired-details.el?revision=15"; sha256 = "1ddrhj1kw0wl7jbs9jn067vfffsvqhz4izfw9f7ihxz34fdl2iza"; }; recipeFile = fetchurl { @@ -13450,12 +13450,12 @@ dired-launch = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "dired-launch"; - version = "20170328.809"; + version = "20170409.1923"; src = fetchFromGitHub { owner = "thomp"; repo = "dired-launch"; - rev = "036204d3b86d4fbbd479f65d9af243cca079a47f"; - sha256 = "1g7kn9c2w165rchjbrkllvykj4952f7zgrhlr3lnfnf5dampy20k"; + rev = "9dea31574dcf006d5247b488a1942faaac434362"; + sha256 = "03dim1ca332882i08r19k4vjzw3hwwg132n2mrxhniyzgkk7g891"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/31c9a4945d65aa6afc371c447a572284d38d4d71/recipes/dired-launch"; @@ -13616,7 +13616,7 @@ pname = "dired-sort"; version = "20090208.2038"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/dired-sort.el"; + url = "https://www.emacswiki.org/emacs/download/dired-sort.el?revision=1"; sha256 = "1dpxkxxfs14sdm3hwxv0j26lq0qzx4gryw42vrcdi680aj24962z"; }; recipeFile = fetchurl { @@ -13634,7 +13634,7 @@ pname = "dired-sort-menu"; version = "20130824.507"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/dired-sort-menu.el"; + url = "https://www.emacswiki.org/emacs/download/dired-sort-menu.el?revision=9"; sha256 = "1i42r7j1c8677qf79ig33bia24d2yvcj26y92migfvrlbi03w4qi"; }; recipeFile = fetchurl { @@ -13754,12 +13754,12 @@ direnv = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, with-editor }: melpaBuild { pname = "direnv"; - version = "20170313.309"; + version = "20170501.218"; src = fetchFromGitHub { owner = "wbolster"; repo = "emacs-direnv"; - rev = "72340994841db19083eb1226cd09abe75d1c1e13"; - sha256 = "0dx63z3cmpcbn1lr9baqhh78j5xfyv1n5yp6fs210hmrbhlfpr8d"; + rev = "2cdf87ea96f9a08dee98762b18b5f8a5198ecf63"; + sha256 = "172jyl8v4zy9bbha8nndq63x8svn9xqkafkj3q17z289na8iaylh"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5419809ee62b920463e359c8e1314cd0763657c1/recipes/direnv"; @@ -14007,7 +14007,7 @@ pname = "disk"; version = "20081128.706"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/disk.el"; + url = "https://www.emacswiki.org/emacs/download/disk.el?revision=9"; sha256 = "1c0pgqvl1z2f5hprszln53pn2v2pqy110r3wx3g84v71w6378bbv"; }; recipeFile = fetchurl { @@ -14619,12 +14619,12 @@ doom-themes = callPackage ({ all-the-icons, cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "doom-themes"; - version = "20170422.1853"; + version = "20170430.2137"; src = fetchFromGitHub { owner = "hlissner"; repo = "emacs-doom-theme"; - rev = "bde6fb34c735631e3995443580efe7eda65b7baf"; - sha256 = "0lyrl7lqg0ws4xyz1h0ps6c74rfwra9p93lkip613vr7fr70pinc"; + rev = "8d82db1ccc2fae17cc4de396698049596f12912d"; + sha256 = "0gjh4z5n2pq5lxfvbgbiv7fhr86vnlhimyx8qh2x4q7yffpixmgm"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/73fd9f3c2352ea1af49166c2fe586d0410614081/recipes/doom-themes"; @@ -14641,7 +14641,7 @@ pname = "doremi"; version = "20170221.1634"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/doremi.el"; + url = "https://www.emacswiki.org/emacs/download/doremi.el?revision=42"; sha256 = "03alkj4mxajsgmghw935hm3c95a12222zq1ig6kwmfrla5kg3b7q"; }; recipeFile = fetchurl { @@ -14660,7 +14660,7 @@ pname = "doremi-cmd"; version = "20170221.1631"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/doremi-cmd.el"; + url = "https://www.emacswiki.org/emacs/download/doremi-cmd.el?revision=47"; sha256 = "09iizx079y43qk3jd66n8i8ifm2s7jnc9g7831nv5f3c26rgl0w6"; }; recipeFile = fetchurl { @@ -14679,7 +14679,7 @@ pname = "doremi-frm"; version = "20170221.1632"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/doremi-frm.el"; + url = "https://www.emacswiki.org/emacs/download/doremi-frm.el?revision=74"; sha256 = "0f9vwajgdm37krz55sv5c8ijfqhy5gsxj1zyxg8zbs6l33giynxd"; }; recipeFile = fetchurl { @@ -14697,7 +14697,7 @@ pname = "doremi-mac"; version = "20170221.1633"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/doremi-mac.el"; + url = "https://www.emacswiki.org/emacs/download/doremi-mac.el?revision=30"; sha256 = "002jhqk26ywiyci1r91aqbq0zhbxy6rsyw3h74ck04rxjfc49rxl"; }; recipeFile = fetchurl { @@ -14988,7 +14988,7 @@ pname = "dropdown-list"; version = "20120329.936"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/dropdown-list.el"; + url = "https://www.emacswiki.org/emacs/download/dropdown-list.el?revision=5"; sha256 = "1szy46sk3nvlbb3yzk1s983281kkf507xr3fkclkki3d3x31n08a"; }; recipeFile = fetchurl { @@ -15049,7 +15049,7 @@ version = "20130120.1257"; src = fetchsvn { url = "https://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/emacs/"; - rev = "1792605"; + rev = "1793314"; sha256 = "016dxpzm1zba8rag7czynlk58hys4xab4mz1nkry5bfihknpzcrq"; }; recipeFile = fetchurl { @@ -15213,11 +15213,11 @@ dyalog-mode = callPackage ({ cl-lib ? null, emacs, fetchhg, fetchurl, lib, melpaBuild }: melpaBuild { pname = "dyalog-mode"; - version = "20170415.628"; + version = "20170427.55"; src = fetchhg { url = "https://bitbucket.com/harsman/dyalog-mode"; - rev = "6cc0b8488a17"; - sha256 = "03x94q315yq5kg2wvsp508a9hxl625iji3b84kywmg5hb3w5r9qn"; + rev = "2c70af4813fc"; + sha256 = "0brhk5q0jdb3p9nlsfk2bjixqymy4lmrqha138idpx47ka7cjsvn"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/dyalog-mode"; @@ -15527,12 +15527,12 @@ easy-hugo = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "easy-hugo"; - version = "20170425.110"; + version = "20170426.6"; src = fetchFromGitHub { owner = "masasam"; repo = "emacs-easy-hugo"; - rev = "37ddd55bedce68643948b928e09cf6195a8dc301"; - sha256 = "11agzmkwmij861ppgvdkqqpxs1sccvc4w5rl3956igc9c3lys008"; + rev = "5ea62c254c61fcad89d1620ce40b6fda65586d65"; + sha256 = "0p961msrkqxc99rkjdy79x1pdns4dfbvdmv8yl0zi4ib3b07qar1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/easy-hugo"; @@ -15717,7 +15717,7 @@ pname = "echo-bell"; version = "20170221.1635"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/echo-bell.el"; + url = "https://www.emacswiki.org/emacs/download/echo-bell.el?revision=8"; sha256 = "0000ya8y6v5xvl5qkrsamzwh1iikc3clhpdpdr2da6c4b9cznydh"; }; recipeFile = fetchurl { @@ -15734,12 +15734,12 @@ eclim = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, json ? null, lib, melpaBuild, popup, s, yasnippet }: melpaBuild { pname = "eclim"; - version = "20170328.1807"; + version = "20170430.1903"; src = fetchFromGitHub { owner = "emacs-eclim"; repo = "emacs-eclim"; - rev = "c13d1e853722bac880e82e6b04158015e7b12f6c"; - sha256 = "18bm0prhnahj0b397hn9nn98d09rrzfhzfg86glxqy4y8k6f0ai6"; + rev = "1d0ac3f4cd90d44e75f75c8c0bd234013349e14f"; + sha256 = "0cds3rmyp3imx234vdbmrl5l7fq90aixb8n1iv0ba5jrx1yk91lz"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e9d3075587fbd9ca188535fd945a7dc451c6d7e/recipes/eclim"; @@ -15923,12 +15923,12 @@ ede-php-autoload = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "ede-php-autoload"; - version = "20170406.609"; + version = "20170428.933"; src = fetchFromGitHub { owner = "stevenremot"; repo = "ede-php-autoload"; - rev = "2aae77b5ca2ce458f56fe67a33d5e84bb9428e5d"; - sha256 = "1vsmpvip4dwj1jwvj5iswci14xky4mrfpqgh1g8i56p5ql9ifsmr"; + rev = "65e502602dbc623257a820245d41f94cf2e1f07d"; + sha256 = "1569g3rnklxnnknrs9nmyjk9axrdhpr9pcz2ma925sb388jyrf5r"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8ee9f7fd9cbc3397cd9af34b08b75c3d9d8bc551/recipes/ede-php-autoload"; @@ -16154,12 +16154,12 @@ editorconfig = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "editorconfig"; - version = "20170417.2125"; + version = "20170425.2155"; src = fetchFromGitHub { owner = "editorconfig"; repo = "editorconfig-emacs"; - rev = "bad62d8ac750bd06e7c31d2c3e744a37129c2ccd"; - sha256 = "1iwirdvrs7fl1qx5qwhxa8xjxsnh3dn2vvbh43bkm2an8abssx4y"; + rev = "fa13d6dc990b7603652e622d848b5466bb43332b"; + sha256 = "1gica5jwjbyysh5zv90hnhqkl70zrszsb726ncbykwwwxsibq9b2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/50d4f2ed288ef38153a7eab44c036e4f075b51d0/recipes/editorconfig"; @@ -16175,12 +16175,12 @@ editorconfig-custom-majormode = callPackage ({ editorconfig, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "editorconfig-custom-majormode"; - version = "20170309.2112"; + version = "20170426.127"; src = fetchFromGitHub { owner = "10sr"; repo = "editorconfig-custom-majormode-el"; - rev = "f5b9e0932e861c71611b5dfbd2c04ce635d14e34"; - sha256 = "0iql5c9a5qzzdwp3f1n5pb3zcglnby2hhx4nsplpjr0ffbqgad63"; + rev = "52880ccfcbcd4444c6003f37904b5ea1ed2bba95"; + sha256 = "1xk3c0g0a6g2p7wg26aphl6cdz45iql0s4w1qa8np2hly10a4cxy"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fcd47bf4630442ad1a941ad432cef64c7746aa71/recipes/editorconfig-custom-majormode"; @@ -16391,12 +16391,12 @@ ein = callPackage ({ cl-generic, dash, fetchFromGitHub, fetchurl, lib, melpaBuild, request, websocket }: melpaBuild { pname = "ein"; - version = "20170421.1829"; + version = "20170426.1909"; src = fetchFromGitHub { owner = "millejoh"; repo = "emacs-ipython-notebook"; - rev = "5ed0b871ce40364a555eda5c6cef23529e6b6ac9"; - sha256 = "0qi13019b980dlz18107pwsckk3x152rrf3hbcliczbprzxgy8wp"; + rev = "db07da61d3e2dea02efafb8daf82c95c28521817"; + sha256 = "13wf9cqm1sf92dyfr71rci3x8pcwww8chfccgcafq9gc7lvb9ias"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/215e163755fe391ce1f049622e7b9bf9a8aea95a/recipes/ein"; @@ -16715,7 +16715,7 @@ pname = "el-swank-fuzzy"; version = "20130824.457"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/el-swank-fuzzy.el"; + url = "https://www.emacswiki.org/emacs/download/el-swank-fuzzy.el?revision=3"; sha256 = "1g2jhm9m5qcj6a231n5ch6b8bqwzq3kj275nd4s89p89v1252qhn"; }; recipeFile = fetchurl { @@ -16817,7 +16817,7 @@ pname = "eldoc-extension"; version = "20140306.645"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/eldoc-extension.el"; + url = "https://www.emacswiki.org/emacs/download/eldoc-extension.el?revision=10"; sha256 = "13ncpp3hrwk0h030c5nnm2zfiingilr5b876jsf2wxmylg57nbch"; }; recipeFile = fetchurl { @@ -16960,12 +16960,12 @@ elfeed = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "elfeed"; - version = "20170420.1828"; + version = "20170429.1038"; src = fetchFromGitHub { owner = "skeeto"; repo = "elfeed"; - rev = "ea702790bb2af6cd10078dc3a1d22c95009231a2"; - sha256 = "122fas0qyws80icd9k573k66mf0jwnasxmd7c093flx5l061pipz"; + rev = "f06c06d36117985d7a7b4aa799d256ca8ec25962"; + sha256 = "0y3rgg4524xw7gdxzhq2jmjkj0qgkffpw251ysc88ihz24pcxc8l"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/407ae027fcec444622c2a822074b95996df9e6af/recipes/elfeed"; @@ -17034,8 +17034,8 @@ src = fetchFromGitHub { owner = "skeeto"; repo = "elfeed"; - rev = "ea702790bb2af6cd10078dc3a1d22c95009231a2"; - sha256 = "122fas0qyws80icd9k573k66mf0jwnasxmd7c093flx5l061pipz"; + rev = "f06c06d36117985d7a7b4aa799d256ca8ec25962"; + sha256 = "0y3rgg4524xw7gdxzhq2jmjkj0qgkffpw251ysc88ihz24pcxc8l"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/62459d16ee44d5fcf170c0ebc981ca2c7d4672f2/recipes/elfeed-web"; @@ -17492,12 +17492,12 @@ elpy = callPackage ({ company, fetchFromGitHub, fetchurl, find-file-in-project, highlight-indentation, lib, melpaBuild, pyvenv, s, yasnippet }: melpaBuild { pname = "elpy"; - version = "20170414.319"; + version = "20170430.255"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "elpy"; - rev = "e4982452a3be29df4ab71f2463485c3e697c6f1a"; - sha256 = "18g65sy70p8s5v5r150b6b1wqmi11q6n213l8ign038iqjmbar8r"; + rev = "574605dce756e878457164817e6d63d915008a84"; + sha256 = "1q8ll1sxdvxgd6mqwz55bv2zwxgz2rqlzyk2xksnh9sna4bhr6xv"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy"; @@ -18580,12 +18580,12 @@ ensime = callPackage ({ company, dash, fetchFromGitHub, fetchurl, lib, melpaBuild, popup, s, sbt-mode, scala-mode, yasnippet }: melpaBuild { pname = "ensime"; - version = "20170424.30"; + version = "20170427.1536"; src = fetchFromGitHub { owner = "ensime"; repo = "ensime-emacs"; - rev = "74dc2ca769200c731f7452ddcd900612a2960390"; - sha256 = "1rmwq0jfhakqq5q150mqsphfl30ljnp7c1n8ysa8h6pawa0942sj"; + rev = "53ff716396a7559a9b170524795f622371f5ae49"; + sha256 = "1mqzwagicif9k00f86kny53qk9xf40jfvw4mnrd8n2abspkk0ggp"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/502faab70af713f50dd8952be4f7a5131075e78e/recipes/ensime"; @@ -19007,12 +19007,12 @@ erc-twitch = callPackage ({ erc ? null, fetchFromGitHub, fetchurl, json ? null, lib, melpaBuild }: melpaBuild { pname = "erc-twitch"; - version = "20160522.859"; + version = "20170426.2306"; src = fetchFromGitHub { owner = "vibhavp"; repo = "erc-twitch"; - rev = "c1ece5d18a2d13a08e8f764271be9e21a9bdddc5"; - sha256 = "094pzznjiv33lbjjg7yfjngc5hrphjj5j2l6jjy7fd62vh4m9jxk"; + rev = "53c6af0cb72e56d897d30a40e7e5066668d6b5ec"; + sha256 = "0qirx38czv8m7sgj3rm1zncmyd8z6k4xhd8ixwxl7nigfpqvvv4c"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/46f8640b24bade45cc729eeb370adf959f99526f/recipes/erc-twitch"; @@ -19217,12 +19217,12 @@ erlang = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "erlang"; - version = "20170309.216"; + version = "20170428.34"; src = fetchFromGitHub { owner = "erlang"; repo = "otp"; - rev = "8ca868848600702696828d729387343d73311a50"; - sha256 = "0shzkcgm8kxg923dxy47iqlb0mz86pifmgdlva1qiinn2sfac323"; + rev = "ffa80a41370025ed2fb95967e731f13cc7e45e4f"; + sha256 = "0w70asgh3ygg2sbdhn5d5jdg877a68wihdbb5830yyg3knwd6qc4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang"; @@ -19426,12 +19426,12 @@ esa = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "esa"; - version = "20170423.525"; + version = "20170427.845"; src = fetchFromGitHub { owner = "nabinno"; repo = "esa.el"; - rev = "5313d17d57c237d7c2903ded3be61bda5512c585"; - sha256 = "1wgk51dvhpliyak83li4hm7wcjldm3b41awf6aq8chxask0qd22j"; + rev = "8bd011cd1861113f54ad155d3c62725e1dcd37e7"; + sha256 = "1a5mrz3m0gy5r7dcw31s488jgfhrp4axcnsmma40q2x3harp0hsk"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/esa"; @@ -19636,12 +19636,12 @@ eshell-up = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "eshell-up"; - version = "20170108.749"; + version = "20170425.1037"; src = fetchFromGitHub { owner = "peterwvj"; repo = "eshell-up"; - rev = "e30081fdfb20e380bdcd00b04fcca41aa2bc57af"; - sha256 = "1xq1y6ddq9hxcc13wzj55snc7dg75y1z78f5bhnm9ps3ww7nmc9s"; + rev = "b00e447ad7941ab31bcbb6bc0205fd492e887e7d"; + sha256 = "1802887ad7y6m40azfvzz6aapdzkp655jpiryimqd11kwbsinmvv"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/eshell-up"; @@ -19804,12 +19804,12 @@ ess = callPackage ({ fetchFromGitHub, fetchurl, julia-mode, lib, melpaBuild }: melpaBuild { pname = "ess"; - version = "20170327.248"; + version = "20170501.306"; src = fetchFromGitHub { owner = "emacs-ess"; repo = "ESS"; - rev = "dd623f1c67c54fb1f9c20403fa976cb1272a5074"; - sha256 = "033rsdxrmcjcmjpdkbqykr0zir7ycy0f706q5x6m3vn13wm5hgfb"; + rev = "40583c1e2680f1746ceb91242c478d0b6fb988d5"; + sha256 = "1mj11wpiy96q48l8hclgkhm0963p7904rzr991wfr465p17bsg6q"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/12997b9e2407d782b3d2fcd2843f7c8b22442c0a/recipes/ess"; @@ -19994,7 +19994,7 @@ pname = "etags-select"; version = "20130824.500"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/etags-select.el"; + url = "https://www.emacswiki.org/emacs/download/etags-select.el?revision=21"; sha256 = "0gmlmxlwfsfk5axn3x5cfvqy9bx26ynpbg50mdxiljk7wzqs5dyb"; }; recipeFile = fetchurl { @@ -20012,7 +20012,7 @@ pname = "etags-table"; version = "20130824.457"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/etags-table.el"; + url = "https://www.emacswiki.org/emacs/download/etags-table.el?revision=4"; sha256 = "0apm8as606bbkpa7i1hkwcbajzsmsyxn6cwfk9dkkll5bh4vglqf"; }; recipeFile = fetchurl { @@ -20530,6 +20530,27 @@ license = lib.licenses.free; }; }) {}; + evil-goggles = callPackage ({ emacs, evil, fetchFromGitHub, fetchurl, lib, melpaBuild }: + melpaBuild { + pname = "evil-goggles"; + version = "20170425.1702"; + src = fetchFromGitHub { + owner = "edkolev"; + repo = "evil-goggles"; + rev = "056a35572e818fa5ea7144768d77a62600f1fea7"; + sha256 = "1ngrmalk14a71mvnc0z813npn552df0gynkjv4ra8y0y4plryxjl"; + }; + recipeFile = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ad1b922fc3a6c74b1fd5c8477f769a22bf2241fb/recipes/evil-goggles"; + sha256 = "0m8yj2rsjgkrwdh3jk9g36299s5ib5xbaah3vcjq8ladp3v7amqa"; + name = "evil-goggles"; + }; + packageRequires = [ emacs evil ]; + meta = { + homepage = "https://melpa.org/#/evil-goggles"; + license = lib.licenses.free; + }; + }) {}; evil-iedit-state = callPackage ({ evil, fetchFromGitHub, fetchurl, iedit, lib, melpaBuild }: melpaBuild { pname = "evil-iedit-state"; @@ -20617,12 +20638,12 @@ evil-lion = callPackage ({ emacs, evil, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "evil-lion"; - version = "20170420.1028"; + version = "20170429.1542"; src = fetchFromGitHub { owner = "edkolev"; repo = "evil-lion"; - rev = "8a78f89c9aa11832b4a063439f726e5123f436fa"; - sha256 = "118jlz2risrhy5d6x6lq4b1ihbpb23n9ah982w7ccwxs5xmjsl0v"; + rev = "f11ccadecc5d7fe9e78b81a7eedf0556677fb9a8"; + sha256 = "0jbs208b4r6s487flh628b1bf330y7d4r3288gk5ydpn6rzr3wnd"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8a7a0691775afec6d2c7be3d6739b55bd1d2053d/recipes/evil-lion"; @@ -21583,12 +21604,12 @@ exwm-x = callPackage ({ cl-lib ? null, exwm, fetchFromGitHub, fetchurl, lib, melpaBuild, swiper, switch-window }: melpaBuild { pname = "exwm-x"; - version = "20170424.250"; + version = "20170429.1543"; src = fetchFromGitHub { owner = "tumashu"; repo = "exwm-x"; - rev = "e5e8e572531c859e944d3607478b681e0f4a4603"; - sha256 = "0627ysigqv25hf58rjk85xm9hmcwf5qs8sl6nvvxha4laq9cw98g"; + rev = "e809d02f3f34cefdb99ea849f4921e129bc9c829"; + sha256 = "029ps73vq9f41sg0k6prg7yw7a1cyhfma11l767wv5v0g03153md"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a0e6e23bcffdcd1e17c70599c563609050e5de40/recipes/exwm-x"; @@ -22610,12 +22631,12 @@ fish-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "fish-mode"; - version = "20170425.106"; + version = "20170430.623"; src = fetchFromGitHub { owner = "wwwjfy"; repo = "emacs-fish"; - rev = "f6c52f5863605cc227dbfada4aa46fef55f5106a"; - sha256 = "00aa98y53864n22qca6jhkzw9xsld0nmrfz3g78fjwxkm7gl9gci"; + rev = "888d037008272f6001207a2990e51ba87fe187e6"; + sha256 = "1r2clxm68nq8jhgc5cly51i6axjmi720r5m34dhf6zblwib4lfdp"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/efac97c0f54a3300251020c4626056526c18b441/recipes/fish-mode"; @@ -22632,7 +22653,7 @@ pname = "fit-frame"; version = "20170222.1754"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/fit-frame.el"; + url = "https://www.emacswiki.org/emacs/download/fit-frame.el?revision=63"; sha256 = "1wm2jc7h5zhv695wf21l3n9gjn31ddgd0vybx8brj1nbvavifs0x"; }; recipeFile = fetchurl { @@ -22950,7 +22971,7 @@ pname = "fliptext"; version = "20131113.1818"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/fliptext.el"; + url = "https://www.emacswiki.org/emacs/download/fliptext.el?revision=4"; sha256 = "1viigj04kla20dk46xm913jzqrmx05rpjrpghnc0ylbqppqdwzpw"; }; recipeFile = fetchurl { @@ -23093,12 +23114,12 @@ flycheck = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, let-alist, lib, melpaBuild, pkg-info, seq }: melpaBuild { pname = "flycheck"; - version = "20170415.1006"; + version = "20170428.1244"; src = fetchFromGitHub { owner = "flycheck"; repo = "flycheck"; - rev = "52897d5808e17c416cfe394c638c3c7dfb9ad7c4"; - sha256 = "1vpvs160ykqn607qy8vzf0zxgx0v7kljp3ld9f5mf0fzvm3kxyqv"; + rev = "6354ecc6fd45645629b9427584e22140c8d6277e"; + sha256 = "1vkhm4ch2hbsvfwsh4v4ap55grkvr9gzj3zr5ck7z16pn5a1r7bh"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/649f9c3576e81409ae396606798035173cc6669f/recipes/flycheck"; @@ -24147,8 +24168,8 @@ src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "18c6aa5b00451abf9dd34df60cb5b35e7d0866a6"; - sha256 = "1ih0bbjq0ydcs41zaz5lv87q32lx871rhjfgs7yqgd713bc55xxh"; + rev = "6b2ec42acfed369121aff26d1135669bfc272880"; + sha256 = "0fbjrn1ca4xacygwvsbam8lpl3p88i5nbfqmaz7n6xrlb788zv77"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/flycheck-rtags"; @@ -24336,8 +24357,8 @@ src = fetchFromGitHub { owner = "abingham"; repo = "emacs-ycmd"; - rev = "21ada9ffbf5f921c87837796ea0b542d6d447d56"; - sha256 = "1pzc4fvrm2yfrrnfjhnnial2vj4iavr6vfnw6q2i4hz95h5b9mih"; + rev = "5c32c5b2454dd1ff31fb4c15704cd970b73574b2"; + sha256 = "0wr1hjgrrwbz97k05kcj6snn3bw8ra6k61wvahl4kiqvsf0ywss9"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/flycheck-ycmd"; @@ -25675,7 +25696,7 @@ pname = "frame-cmds"; version = "20170222.1758"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/frame-cmds.el"; + url = "https://www.emacswiki.org/emacs/download/frame-cmds.el?revision=92"; sha256 = "1r2hyl7f1rgw20mh8nj0lzf491p5pl4pfprv0yj0jls5jaqds4xc"; }; recipeFile = fetchurl { @@ -25693,7 +25714,7 @@ pname = "frame-fns"; version = "20170222.1759"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/frame-fns.el"; + url = "https://www.emacswiki.org/emacs/download/frame-fns.el?revision=31"; sha256 = "1yl51wnmlmbirrhcf07rnqix62q7ijymwfbahwjsz2s18g2zyj6n"; }; recipeFile = fetchurl { @@ -25753,7 +25774,7 @@ pname = "framemove"; version = "20130328.433"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/framemove.el"; + url = "https://www.emacswiki.org/emacs/download/framemove.el?revision=4"; sha256 = "03ll68d0j0b55rfxymzcirdigkmxcy8556d0i67ghdzmcqfwily7"; }; recipeFile = fetchurl { @@ -25922,22 +25943,30 @@ license = lib.licenses.free; }; }) {}; - fstar-mode = callPackage ({ company, dash, emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, quick-peek, yasnippet }: + fstar-mode = callPackage ({ company, company-quickhelp, dash, emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, quick-peek, yasnippet }: melpaBuild { pname = "fstar-mode"; - version = "20170424.818"; + version = "20170501.229"; src = fetchFromGitHub { owner = "FStarLang"; repo = "fstar-mode.el"; - rev = "727d7066c7b125b659a920ee08a601c15a31b00c"; - sha256 = "0h8h7dwffmgis1ppwj7k68bsr0y5r1x00h37k52zizam9pc2gia7"; + rev = "fa8cd790b6c017b720d623879b13ff17d32352cb"; + sha256 = "0393wrzd89dg880j7pzs7c6c0zsc839b4abwp9v4xjmp9v3nd1fy"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/fstar-mode"; sha256 = "1cjwai0qf48m18dsa0r9sh4qlgvdzg5ajfbmxxc2vqzcl5ygrxjx"; name = "fstar-mode"; }; - packageRequires = [ company dash emacs flycheck quick-peek yasnippet ]; + packageRequires = [ + company + company-quickhelp + dash + emacs + flycheck + quick-peek + yasnippet + ]; meta = { homepage = "https://melpa.org/#/fstar-mode"; license = lib.licenses.free; @@ -25949,8 +25978,8 @@ version = "20170107.626"; src = fetchgit { url = "git://factorcode.org/git/factor.git"; - rev = "717a49c365298549a5ba0588980c7fcf528c2f40"; - sha256 = "1zib3yd3mp7a8g2mg9rl6xqm8bhyr39jfyl8388qqr1k1p2mbw8b"; + rev = "e44104c8d2b832ab8e023c9b5b31417b77e649d1"; + sha256 = "1q0x4s1lqkxjnzppphvcvnpl6d61mp5gz5zx4pa0xms8zk6yln9f"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0c3633c23baa472560a489fc663a0302f082bcef/recipes/fuel"; @@ -26075,8 +26104,8 @@ src = fetchFromGitHub { owner = "HIPERFIT"; repo = "futhark"; - rev = "e1bdbff5957c0ea43bd21a7b072c8614f885c549"; - sha256 = "1cijh09jfzfcm8nbv8pqlnaz27lh834r5qyvyhj9aj9w6991r7nr"; + rev = "d93981a27a282814fcf8ed51109c2f40661e868e"; + sha256 = "0a077w8p7cl7f8w960widqd1h7yzhy3wl3dcbwj5nqn652q8qpjn"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0607f01aad7e77d53595ad8db95d32acfd29b148/recipes/futhark-mode"; @@ -26114,7 +26143,7 @@ pname = "fuzzy-format"; version = "20130824.500"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/fuzzy-format.el"; + url = "https://www.emacswiki.org/emacs/download/fuzzy-format.el?revision=6"; sha256 = "1iv0x1cb12kknnxyq2gca7m3c3rg9s4cxz397sazkh1csrn0b2i7"; }; recipeFile = fetchurl { @@ -26132,7 +26161,7 @@ pname = "fuzzy-match"; version = "20170222.1800"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/fuzzy-match.el"; + url = "https://www.emacswiki.org/emacs/download/fuzzy-match.el?revision=23"; sha256 = "1wxl900wikkzykzp95v84kcyw3m1d16hklhyqqhsmg58ph4i6r94"; }; recipeFile = fetchurl { @@ -26714,12 +26743,12 @@ ghub = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "ghub"; - version = "20160808.538"; + version = "20170426.419"; src = fetchFromGitHub { owner = "tarsius"; repo = "ghub"; - rev = "f9535e53fe6c5ffb18986ebf51e8529b9ec0da63"; - sha256 = "17cn3xl40kp2mx3w89w0cds47jrvx76ms2js3a9nr4bb0cgyw1yv"; + rev = "da60fa2316bf829cab18676afd5a43088ac06b60"; + sha256 = "0aj0ayh4jvpxwqss5805qnklqbp9krzbh689syyz65ja6r0r2bgs"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9375cbae3ffe5bf4ba5606358860050f3005d9b7/recipes/ghub"; @@ -26886,8 +26915,8 @@ src = fetchFromGitHub { owner = "magit"; repo = "magit"; - rev = "a34259407996c6d3b7e520ed38340017befa26ab"; - sha256 = "08sn6vl2r06r19xkmb9n9zicycc6dq1grhsfhh4zjg7lzp7v9bj6"; + rev = "595f7c6fac10a91f9edb68615f23d05b3d829f3c"; + sha256 = "1a5lglslbhsnwjaspxbxj2kqnz53k7vkfb91xj73pqxk9lr8m2y5"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/git-commit"; @@ -26903,12 +26932,12 @@ git-commit-insert-issue = callPackage ({ bitbucket, fetchFromGitLab, fetchurl, github-issues, gitlab, helm, lib, melpaBuild, projectile, s }: melpaBuild { pname = "git-commit-insert-issue"; - version = "20170424.326"; + version = "20170424.347"; src = fetchFromGitLab { owner = "emacs-stuff"; repo = "git-commit-insert-issue"; - rev = "f73f5b4b7ce2b1696212b2cbfec4f68554e06364"; - sha256 = "0vp5rbm0vdhdbkw4xb244q71jiaax81a5py52z0jc0kwsi4khwn9"; + rev = "41d526a1294cd5509c8786e772a391d338f10ed5"; + sha256 = "1z05hybhxbxmi5353sp4zjhrwn50w84b67v1p1r1sh694i8xhn16"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/git-commit-insert-issue"; @@ -27744,7 +27773,7 @@ pname = "gnus-spotlight"; version = "20130901.735"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/gnus-spotlight.el"; + url = "https://www.emacswiki.org/emacs/download/gnus-spotlight.el?revision=2"; sha256 = "1r6bck1hsvk39ccri1h128jj8zd0fh9bsrlp8ijb0v9f6x3cysw4"; }; recipeFile = fetchurl { @@ -28559,12 +28588,12 @@ gotham-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "gotham-theme"; - version = "20170414.1046"; + version = "20170426.1411"; src = fetchFromGitHub { owner = "wasamasa"; repo = "gotham-theme"; - rev = "2d1a302500cf82155c0f9ca61200b7bf02717e43"; - sha256 = "183djv4p540m641hcp5nlbk8isr8fq6f109xj4kkfd6mbrs13pig"; + rev = "b939d0687ffdcc961f58af30178cee1981c72c4f"; + sha256 = "1inldaab0mzpv81zkfjy9kbwd89iclmdbgnwg790yympqaycpynf"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4b388de872be397864a1217a330ba80437c287c0/recipes/gotham-theme"; @@ -28581,7 +28610,7 @@ pname = "goto-chg"; version = "20131228.659"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/goto-chg.el"; + url = "https://www.emacswiki.org/emacs/download/goto-chg.el?revision=9"; sha256 = "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij"; }; recipeFile = fetchurl { @@ -28644,8 +28673,8 @@ src = fetchFromGitHub { owner = "vmware"; repo = "govmomi"; - rev = "8e61e010f3b6dd5e1302b76f23d1fa9aa56a82a6"; - sha256 = "1pgxq0s4cap8b3chh86jx3myrraiidbn35l6lagxml313xf7qq1r"; + rev = "35ddbd457a017bd933712fbbab56f4d6cacb32b5"; + sha256 = "12qslv5900iq2dd2aqylifmpizddl32r9akshiahfxznf4zjkf1n"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/92d6391318021c63b06fe39b0ca38f667bb45ae9/recipes/govc"; @@ -29213,12 +29242,12 @@ gruvbox-theme = callPackage ({ autothemer, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "gruvbox-theme"; - version = "20161229.1817"; + version = "20170426.150"; src = fetchFromGitHub { owner = "Greduan"; repo = "emacs-theme-gruvbox"; - rev = "9a9f384a19742eb07b03b1975478c2e71a09b2e3"; - sha256 = "1pbb8ihvldpbcvr4bwqjmlyc6wv51h49fn522vxzl9kjmhs9fqi1"; + rev = "693dcf13ee929c1a3e6e5ac54f6fb5c7ec31f249"; + sha256 = "0b6ppxq9yiwhn22f7bbq5l552650lajapqq6j73rixya74a37lzi"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2bd48c87919f64ced9f3add4860751bb34cb5ecb/recipes/gruvbox-theme"; @@ -29532,8 +29561,8 @@ src = fetchFromGitHub { owner = "clarete"; repo = "hackernews.el"; - rev = "d6857acce7032035ffb4ee23358712127b8dd5a5"; - sha256 = "1xgx66dlhz4my1blnkddcwk6aan532fnvgli2dbbiy5ixn8aw1kc"; + rev = "629fe18abbef6674821876ed089c4fa83b709d1b"; + sha256 = "1s3ybiifbszp7v3gznh9f78dzwb1smdq3hb8np9swjr2fzcshwl4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c43a342e47e5ede468bcf51a60d4dea3926f51bd/recipes/hackernews"; @@ -29926,12 +29955,12 @@ hasky-extensions = callPackage ({ avy-menu, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "hasky-extensions"; - version = "20170110.631"; + version = "20170426.1347"; src = fetchFromGitHub { owner = "hasky-mode"; repo = "hasky-extensions"; - rev = "c94662f0efdc9f350d8554e62955f0a7405ab545"; - sha256 = "0hlwv3m0mmwwvqa0nla9b8n7mi43zxmpg6fmmqi311ii75sqb2pa"; + rev = "f1159dd640b54852beb6d3ef51b167e72f2c066b"; + sha256 = "15zjxiqd9akvr8v1id8i2qwb30393cskp1a20c8wlvh5y7i4fffp"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e3f73e3df8476fa231d04211866671dd74911603/recipes/hasky-extensions"; @@ -30094,7 +30123,7 @@ pname = "header2"; version = "20170223.729"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/header2.el"; + url = "https://www.emacswiki.org/emacs/download/header2.el?revision=69"; sha256 = "0cv74cfihr13jrgyqbj4x0na659djfyrhflxni6jdbgbysi4zf6k"; }; recipeFile = fetchurl { @@ -30132,12 +30161,12 @@ helm = callPackage ({ async, emacs, fetchFromGitHub, fetchurl, helm-core, lib, melpaBuild, popup }: melpaBuild { pname = "helm"; - version = "20170425.328"; + version = "20170501.106"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm"; - rev = "5edb88b03f1779fe93d59401570da2555d46733b"; - sha256 = "16y7ga4x1h1hvfq6yqn1hw9dakzlkslbq2hg9sgan5fr1fxlyqzr"; + rev = "d31a2a61b96fffa8a1f68872fdad0258d701a8ce"; + sha256 = "10qwsa6x5w29wymd4ivji1g4kcwvwf5d3ncqq9cb5wx95p8wrbc4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7e8bccffdf69479892d76b9336a4bec3f35e919d/recipes/helm"; @@ -30720,12 +30749,12 @@ helm-core = callPackage ({ async, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "helm-core"; - version = "20170425.234"; + version = "20170428.2241"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm"; - rev = "5edb88b03f1779fe93d59401570da2555d46733b"; - sha256 = "16y7ga4x1h1hvfq6yqn1hw9dakzlkslbq2hg9sgan5fr1fxlyqzr"; + rev = "d31a2a61b96fffa8a1f68872fdad0258d701a8ce"; + sha256 = "10qwsa6x5w29wymd4ivji1g4kcwvwf5d3ncqq9cb5wx95p8wrbc4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7a700c5665e6d72cb4cecf7fb5a2dd43ef9bf7/recipes/helm-core"; @@ -31811,12 +31840,12 @@ helm-make = callPackage ({ fetchFromGitHub, fetchurl, helm, lib, melpaBuild, projectile }: melpaBuild { pname = "helm-make"; - version = "20170412.1229"; + version = "20170430.1053"; src = fetchFromGitHub { owner = "abo-abo"; repo = "helm-make"; - rev = "2ece0aaaab86c38cf8f81f165dc81f84209c28d9"; - sha256 = "0j3km2qln3sak4mmlaajyr88w6gikh0baalhz0qb5mvnys2d6l74"; + rev = "8bb531fa77fe1259cccdc2fa7629d65989684f16"; + sha256 = "1vvdk2f41aqhcb8hawk0x17ix1fyanvx3m2zd398lhv3r6mll0r4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0f25f066c60d4caff1fbf885bc944cac47515ec8/recipes/helm-make"; @@ -32000,12 +32029,12 @@ helm-org-rifle = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, helm, lib, melpaBuild, s }: melpaBuild { pname = "helm-org-rifle"; - version = "20170420.1958"; + version = "20170429.2219"; src = fetchFromGitHub { owner = "alphapapa"; repo = "helm-org-rifle"; - rev = "918bc67e0d44e4413294aac983d1930f39a7c20f"; - sha256 = "0l6nkwqsf0kwd5wzdp3vjf3bz1sq7d683i2678wsbhgjj3a1r5zm"; + rev = "ccf5224302ad5a028ff4f5c717ccfc74e6a34c22"; + sha256 = "1969axixs230d8xv61mmv85xl1c5vf58xp5vdvmyzgn0nmxnfs0p"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f39cc94dde5aaf0d6cfea5c98dd52cdb0bcb1615/recipes/helm-org-rifle"; @@ -32508,8 +32537,8 @@ src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "18c6aa5b00451abf9dd34df60cb5b35e7d0866a6"; - sha256 = "1ih0bbjq0ydcs41zaz5lv87q32lx871rhjfgs7yqgd713bc55xxh"; + rev = "6b2ec42acfed369121aff26d1135669bfc272880"; + sha256 = "0fbjrn1ca4xacygwvsbam8lpl3p88i5nbfqmaz7n6xrlb788zv77"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/helm-rtags"; @@ -32945,12 +32974,12 @@ helm-xref = callPackage ({ emacs, fetchFromGitHub, fetchurl, helm, lib, melpaBuild }: melpaBuild { pname = "helm-xref"; - version = "20170424.428"; + version = "20170425.1440"; src = fetchFromGitHub { owner = "brotzeitmacher"; repo = "helm-xref"; - rev = "29d1f46d3f2c7346f13e2abcdc3e8c8605265818"; - sha256 = "0rqgbm5f402agyi2jqni9dv6gdxkm1w92a39qlhz7gya1235a9si"; + rev = "cd458044be2cec95f31f0ac318b0f80f4b92785b"; + sha256 = "0lx2xrkwrbzkbs26gwksdqpywcsfsi3d4g2mw1h8aabd12hnr4my"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f39f3d09a8f00d0358653631a8643b6dd71a9bd1/recipes/helm-xref"; @@ -33147,7 +33176,7 @@ pname = "hexrgb"; version = "20170304.1213"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/hexrgb.el"; + url = "https://www.emacswiki.org/emacs/download/hexrgb.el?revision=75"; sha256 = "1aj1fsc3wr8174xs45j2wc2mm6f8v6zs40xn0r4qisdw0plmsbsy"; }; recipeFile = fetchurl { @@ -33249,7 +33278,7 @@ pname = "hide-comnt"; version = "20170223.739"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/hide-comnt.el"; + url = "https://www.emacswiki.org/emacs/download/hide-comnt.el?revision=25"; sha256 = "1shkq45vm60nh2kkvf284nck8jwxh7f7m4c5d53k66mxn214h53m"; }; recipeFile = fetchurl { @@ -33288,7 +33317,7 @@ pname = "hide-region"; version = "20140201.314"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/hide-region.el"; + url = "https://www.emacswiki.org/emacs/download/hide-region.el?revision=6"; sha256 = "1zxrygpf47bzj6p808r3qhj3dfr3m8brp1xgxs33c7f88rinfval"; }; recipeFile = fetchurl { @@ -33327,7 +33356,7 @@ pname = "hideshowvis"; version = "20170227.1250"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/hideshowvis.el"; + url = "https://www.emacswiki.org/emacs/download/hideshowvis.el?revision=10"; sha256 = "02a6v2m54r5nfbi54h1502aqh7gnz827pfi1sq266qyzj3p6yz12"; }; recipeFile = fetchurl { @@ -33366,7 +33395,7 @@ pname = "highlight"; version = "20170223.743"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/highlight.el"; + url = "https://www.emacswiki.org/emacs/download/highlight.el?revision=145"; sha256 = "05dsa2sfciajwagm1gzl3v2r199nl1yjnb6l0v8ria3f9d72yj5j"; }; recipeFile = fetchurl { @@ -33405,7 +33434,7 @@ pname = "highlight-chars"; version = "20170223.740"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/highlight-chars.el"; + url = "https://www.emacswiki.org/emacs/download/highlight-chars.el?revision=18"; sha256 = "00rna5bs0ilgsdi5168djjpb3hg89yq20pp17sx5r3jcksm2fm4f"; }; recipeFile = fetchurl { @@ -33423,7 +33452,7 @@ pname = "highlight-cl"; version = "20091012.1030"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/highlight-cl.el"; + url = "https://www.emacswiki.org/emacs/download/highlight-cl.el?revision=3"; sha256 = "0r3kzs2fsi3kl5gqmsv75dc7lgfl4imrrqhg09ij6kq1ri8gjxjw"; }; recipeFile = fetchurl { @@ -33463,7 +33492,7 @@ pname = "highlight-current-line"; version = "20051013.1056"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/highlight-current-line.el"; + url = "https://www.emacswiki.org/emacs/download/highlight-current-line.el?revision=4"; sha256 = "1aki7a7nnj9n7vh19k4fr0v7cqbwkrpc6b3f3yv95vcqj8a4y34c"; }; recipeFile = fetchurl { @@ -33732,7 +33761,7 @@ pname = "highlight-tail"; version = "20140415.1841"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/highlight-tail.el"; + url = "https://www.emacswiki.org/emacs/download/highlight-tail.el?revision=5"; sha256 = "1bbiyqddqkrp3c7xsg1m4143611bhg1kkakrwscqjb4cfmx29qqg"; }; recipeFile = fetchurl { @@ -33816,8 +33845,8 @@ src = fetchFromGitHub { owner = "chrisdone"; repo = "hindent"; - rev = "712ab8c48759dddc2b3f0c752db3c1e2f90b142b"; - sha256 = "1rrvcdqmgmk033bb5zvyrnbbwhbhkpmhi5rv9bbikci49ka4jy5g"; + rev = "b14e690af82e48fee6b3fd596bc96d4c1c31ea04"; + sha256 = "1ypmvr57x3q1kp85yadl5wfphdhd40aqmd6aklcn3hi3ddnsxb7j"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/dbae71a47446095f768be35e689025aed57f462f/recipes/hindent"; @@ -34023,7 +34052,7 @@ pname = "hl-defined"; version = "20170223.744"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/hl-defined.el"; + url = "https://www.emacswiki.org/emacs/download/hl-defined.el?revision=9"; sha256 = "0sj1ypfawb1pxblm11zbfyy96f2mbpnmif972yqfrxzf5h20ra1y"; }; recipeFile = fetchurl { @@ -34040,12 +34069,12 @@ hl-indent = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "hl-indent"; - version = "20141227.1330"; + version = "20170429.1404"; src = fetchFromGitHub { owner = "ikirill"; repo = "hl-indent"; - rev = "e749f726ce589e04bb508160e7b290b61fb64d75"; - sha256 = "17apqs7yqd89mv5283kmwp7byaaimj7j0vis0z1d89jlmp8i6zbc"; + rev = "bdb2e0177a7c8b29af26998e688b856adc6ded93"; + sha256 = "0fwb64ja5ij97308pnd7g6l5mascavcp7jcar8igxv9yyqnw6pfi"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3aa6ce8f3d1349e28dd9dea8396c38257e3cea2f/recipes/hl-indent"; @@ -34122,7 +34151,7 @@ pname = "hl-spotlight"; version = "20170223.746"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/hl-spotlight.el"; + url = "https://www.emacswiki.org/emacs/download/hl-spotlight.el?revision=15"; sha256 = "02x7p6hy1mkhbish55mzsdp6a1pnsdcfl4qi9cq48syg6cfm8fw3"; }; recipeFile = fetchurl { @@ -34976,7 +35005,7 @@ pname = "icicles"; version = "20170409.1830"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/icicles.el"; + url = "https://www.emacswiki.org/emacs/download/icicles.el?revision=1087"; sha256 = "00zsdahszs919zvklxgpm5kqhm2139cdr4acchgp9ppnyljs94jp"; }; recipeFile = fetchurl { @@ -35705,7 +35734,7 @@ pname = "igrep"; version = "20130824.507"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/igrep.el"; + url = "https://www.emacswiki.org/emacs/download/igrep.el?revision=10"; sha256 = "0qiv69v7ig38iizif7zg8aljdmpa1jk8bsfa0iyhqqqrkvsmhc29"; }; recipeFile = fetchurl { @@ -36157,12 +36186,12 @@ indium = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, js2-mode, lib, melpaBuild, seq, websocket }: melpaBuild { pname = "indium"; - version = "20170424.1433"; + version = "20170429.1206"; src = fetchFromGitHub { owner = "NicolasPetton"; repo = "Indium"; - rev = "72e8e4496758b8a590f41caaa4bf79df04496a5f"; - sha256 = "12q9lbyi5yabls94q7rm3k3va9vx70vdf3hadzrbny97kfqh75rf"; + rev = "664bd1e75f4c6f22cb5ab934ca0d7666be72ccb3"; + sha256 = "0c3dydpqam7f10mjc1dngdx7c1hc6sxajhsr7qm894saiw185232"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4292058cc6e31cabc0de575134427bce7fcef541/recipes/indium"; @@ -36199,12 +36228,12 @@ inf-clojure = callPackage ({ clojure-mode, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "inf-clojure"; - version = "20170414.1424"; + version = "20170426.2200"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "inf-clojure"; - rev = "e10ac489e015515aaa7f49d397c08a26063cf777"; - sha256 = "0085mjlbw6sppgps3g6zlmkr1ih8ffnfjmaak05vsfiq5sivxldl"; + rev = "6179a743742fae35c0d61b4d6a4ddb08508ea10a"; + sha256 = "09dq36sylqnnjrxcr4gy76q8164l896l0qf5v5jsaiklv0zf5rf3"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5d6112e06d1efcb7cb5652b0bec8d282d7f67bd9/recipes/inf-clojure"; @@ -36553,12 +36582,12 @@ inline-docs = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "inline-docs"; - version = "20170130.1434"; + version = "20170428.632"; src = fetchFromGitHub { owner = "stardiviner"; repo = "inline-docs.el"; - rev = "4e94a62f6b02c37c1497f34b36fe36f04cc23405"; - sha256 = "0851jgh5v36d7lq9pwlmigqpqrfbrqqssib4id7s4c8j4sh4c03g"; + rev = "6bf47ce245de9603cbb0405084f733e5927d9fb0"; + sha256 = "10vlm92h97cx18my72jm72911c7j5ipl6ngrv3m6paz3bwklxdz1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/inline-docs"; @@ -36973,7 +37002,7 @@ pname = "irfc"; version = "20130824.507"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/irfc.el"; + url = "https://www.emacswiki.org/emacs/download/irfc.el?revision=45"; sha256 = "197ybqwbj8qjh2p9pkf5mvqnrkpcgmv8c5s2gvl6msyrabk0mnca"; }; recipeFile = fetchurl { @@ -36990,12 +37019,12 @@ irony = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, json ? null, lib, melpaBuild }: melpaBuild { pname = "irony"; - version = "20170404.1127"; + version = "20170427.1601"; src = fetchFromGitHub { owner = "Sarcasm"; repo = "irony-mode"; - rev = "3a903459d0c368b318a00ad94a18484dafde67a5"; - sha256 = "1mjwhx9cj8ilv4xf0phpg3xx5h14z4gz4d0ghi7gzakkk5bl31yk"; + rev = "46b3bf2a8b6877bcba430e372c6fa7a9299c52d0"; + sha256 = "1s8v1ba6l6liipjyhkm3x2cmph4jz5b91wpd6zyh70s2jd5hkym8"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d2b6a8d57b192325dcd30fddc9ff8dd1516ad680/recipes/irony"; @@ -37011,12 +37040,12 @@ irony-eldoc = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, irony, lib, melpaBuild }: melpaBuild { pname = "irony-eldoc"; - version = "20141226.2219"; + version = "20170429.1307"; src = fetchFromGitHub { owner = "ikirill"; repo = "irony-eldoc"; - rev = "bd1fadbc7c806d84aeec098b19238e5328cbbb7b"; - sha256 = "01fjpfixfcca01a5fnnpd2wga4j30p0kwhbai25prvib4qcp1kqn"; + rev = "0526b60ba09526c1f5d068f70ffdef67bc46a62b"; + sha256 = "0qyzqaq3v4rnpy2ifv7jm1qnl260kz2zpkkmb8kbc60baqd0wnbv"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fc42459d5c1671bd478d781339f2572b3de2e7d0/recipes/irony-eldoc"; @@ -37072,7 +37101,7 @@ pname = "isearch-prop"; version = "20170303.1504"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/isearch-prop.el"; + url = "https://www.emacswiki.org/emacs/download/isearch-prop.el?revision=79"; sha256 = "0q18i76gq2pfnkqlbxlx2hndpy9mhbag302dvr8irk1kjwgngz5r"; }; recipeFile = fetchurl { @@ -37282,8 +37311,8 @@ src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "f98f89f1bd90e8165c776efe47bb6c8c7377c5a2"; - sha256 = "1xx7xic3cn4ak0adpariib2f636m42d04m197x7y74msx4jwjd6z"; + rev = "37a1e643608b88a44ee39f77c775f57cc19109df"; + sha256 = "11yj2nkw7zcj470rqwqkhvza9cjv9i82kh3ldaznaa0495f4bs2m"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/06c24112a5e17c423a4d92607356b25eb90a9a7b/recipes/ivy"; @@ -37387,8 +37416,8 @@ src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "f98f89f1bd90e8165c776efe47bb6c8c7377c5a2"; - sha256 = "1xx7xic3cn4ak0adpariib2f636m42d04m197x7y74msx4jwjd6z"; + rev = "37a1e643608b88a44ee39f77c775f57cc19109df"; + sha256 = "11yj2nkw7zcj470rqwqkhvza9cjv9i82kh3ldaznaa0495f4bs2m"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/06c24112a5e17c423a4d92607356b25eb90a9a7b/recipes/ivy-hydra"; @@ -37471,8 +37500,8 @@ src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "18c6aa5b00451abf9dd34df60cb5b35e7d0866a6"; - sha256 = "1ih0bbjq0ydcs41zaz5lv87q32lx871rhjfgs7yqgd713bc55xxh"; + rev = "6b2ec42acfed369121aff26d1135669bfc272880"; + sha256 = "0fbjrn1ca4xacygwvsbam8lpl3p88i5nbfqmaz7n6xrlb788zv77"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/ivy-rtags"; @@ -37948,12 +37977,12 @@ jaword = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, tinysegmenter }: melpaBuild { pname = "jaword"; - version = "20150325.718"; + version = "20170425.2327"; src = fetchFromGitHub { owner = "zk-phi"; repo = "jaword"; - rev = "a96bc63a08f616cc23dcc43d565e1f22a94aa9f3"; - sha256 = "1430xwd86fdlv1gzkdlp9a0x3w4blbplw24z0m7y8b0j9rhl4fka"; + rev = "ac062b0e5ab4bd3270497e80aa0f3ac033a0493f"; + sha256 = "05kbscympb59njfrs94w4b2lwkc3057wzib65kq0l93bx4pcw2iy"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/00fe123ddc7fbcb9fd2b97e8a9fc8a8c5fabbf7f/recipes/jaword"; @@ -38032,12 +38061,12 @@ jdee = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, memoize }: melpaBuild { pname = "jdee"; - version = "20170330.21"; + version = "20170428.1341"; src = fetchFromGitHub { owner = "jdee-emacs"; repo = "jdee"; - rev = "551276220abab21106112c6100a1078313189243"; - sha256 = "0myln9igbw628lm14l44w3hh2fm6lpbys6iv1b05cfzwpkiszsnh"; + rev = "9505591c3d5ff120d3e1c7736bc8869a281880c8"; + sha256 = "0lbcvhi9swgx3by9qfw3d861qxj8spiaiygbxwh4p0lqmbz6wfad"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a6d2c98f3bf2075e33d95c7befe205df802e798d/recipes/jdee"; @@ -38222,7 +38251,7 @@ pname = "jira"; version = "20131210.1022"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/jira.el"; + url = "https://www.emacswiki.org/emacs/download/jira.el?revision=11"; sha256 = "18b6hdqk59gnqh4ibq8lj59kbsg5gbyfb7vfcvpgmxjikpl3cgkz"; }; recipeFile = fetchurl { @@ -38533,12 +38562,12 @@ js2-mode = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "js2-mode"; - version = "20170417.1325"; + version = "20170429.455"; src = fetchFromGitHub { owner = "mooz"; repo = "js2-mode"; - rev = "32f9782bd95bf5d79e26b006f44a793e37771c45"; - sha256 = "1d6w0fl01r3vl7hw4wn1npzwmk5v16gc6gndvfbz469xmz3h7c4y"; + rev = "659f683dbae890d9483bfc603c5599280987f1c2"; + sha256 = "14xwpbasc7jws2gr0d53wvn4rl9bd2b9mgrmwr5jv0rx3ijvgag5"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/js2-mode"; @@ -38804,12 +38833,12 @@ julia-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "julia-mode"; - version = "20170210.1504"; + version = "20170426.1806"; src = fetchFromGitHub { owner = "JuliaLang"; repo = "julia-emacs"; - rev = "9067194d9df9c856ae6cff4060b19810759f74d4"; - sha256 = "0vaq2dv77pj9xkn8vfk4wv2lxxn1fy0a473blblzrhgcifd7dfv4"; + rev = "46d2469c408888cfeeec27904116cfc22ceb1461"; + sha256 = "13w3wpq5qi5fvzs56ckfr118qx7kfllhjsxxfj2l4ijg8x5d56vq"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8522d197cb1b2c139959e7189765001c5ee7e61a/recipes/julia-mode"; @@ -39096,12 +39125,12 @@ kaolin-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "kaolin-theme"; - version = "20170425.321"; + version = "20170430.703"; src = fetchFromGitHub { owner = "0rdy"; repo = "kaolin-theme"; - rev = "a51f9118ee6b5d9dfafa0f5588917e7e2df51431"; - sha256 = "19cfsksjhyh20d9yh2qbddaccq3pwf8gg75dm0dblvv5vlakcrhv"; + rev = "3f80853b73f801d23e659ae83dbd47dd94c69e4c"; + sha256 = "1gsq8jpybhz6myi4ihp12fw49q1bsfr9p0f5dmifjj21yibgakkb"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d2abf9d914cdc210bbd47ea92d0dac76683e21f0/recipes/kaolin-theme"; @@ -39604,8 +39633,8 @@ src = fetchFromGitHub { owner = "kivy"; repo = "kivy"; - rev = "75cf7bf7b3668b38c606089f07238b2b0da4ebc2"; - sha256 = "04fh2wjdm09z7njh30lfgh1kvhv1v4rpm2wk3073c6fkyvflc8sg"; + rev = "ead4655cc24a184eec7eb9dc2817fbc9cb408956"; + sha256 = "1h4l562788f06fxjphfnirb9aavyj2j63whxp59m0vygy284brph"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/688e2a114073958c413e56e1d117d48db9d16fb8/recipes/kivy-mode"; @@ -39768,12 +39797,12 @@ kosmos-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "kosmos-theme"; - version = "20170218.1121"; + version = "20170430.1226"; src = fetchFromGitHub { owner = "habamax"; repo = "kosmos-theme"; - rev = "0c7b2257ab1d8aedafcf89a43dd2112871df23b4"; - sha256 = "18n0lw6cfc56np4s3mvpdp13pnsmqhjn1izipjv1s1sgyjj04qj4"; + rev = "91db9871b8fc0a6294fdb18c33fd1b3cd5ab1ca7"; + sha256 = "017x8p7gqq51746y7wr2q1nrbhcp1mz8da284s1arg28d263p58s"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/kosmos-theme"; @@ -40000,7 +40029,7 @@ pname = "lacarte"; version = "20170307.837"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/lacarte.el"; + url = "https://www.emacswiki.org/emacs/download/lacarte.el?revision=41"; sha256 = "0m3swrvxz0cy01pd4kag626fxqp4l2zzwpgr26yp5wpsfxl9avv8"; }; recipeFile = fetchurl { @@ -40647,7 +40676,7 @@ pname = "lib-requires"; version = "20170307.855"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/lib-requires.el"; + url = "https://www.emacswiki.org/emacs/download/lib-requires.el?revision=53"; sha256 = "04lrkdjrhsgg7vgvw1mkr9a5m9xlyvjvnj2aj6w453bgmnp1mbvv"; }; recipeFile = fetchurl { @@ -40925,7 +40954,7 @@ pname = "lispxmp"; version = "20170110.1508"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/lispxmp.el"; + url = "https://www.emacswiki.org/emacs/download/lispxmp.el?revision=17"; sha256 = "120wgxvckrgryfg2lvyx60rkcayii0g4ny2cdk3aiwsrpqcyhlyr"; }; recipeFile = fetchurl { @@ -40942,12 +40971,12 @@ lispy = callPackage ({ ace-window, emacs, fetchFromGitHub, fetchurl, hydra, iedit, lib, melpaBuild, swiper, zoutline }: melpaBuild { pname = "lispy"; - version = "20170424.1045"; + version = "20170430.402"; src = fetchFromGitHub { owner = "abo-abo"; repo = "lispy"; - rev = "fe138743a47bc0079c31509eda32c86e2943c91c"; - sha256 = "1mywr9nsx1x0lsb7v0g8ak9ympiddnybm6ajg0pdlr8psh0nzzw7"; + rev = "2853551c60880282bcf76554eb39e008d0d9b712"; + sha256 = "0zdm17z9xbs0488i8a31dn55ypmr6zgj7b88frjh93jpns218xrs"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e23c062ff32d7aeae486c01e29c56a74727dcf1d/recipes/lispy"; @@ -41276,12 +41305,12 @@ live-py-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "live-py-mode"; - version = "20170413.2124"; + version = "20170429.2207"; src = fetchFromGitHub { owner = "donkirkby"; repo = "live-py-plugin"; - rev = "f5603fb6bcfbae1e6950da7f91c3a15cf5250bb1"; - sha256 = "1zzk3rc86xrkys3rcqiz61mnp00jkvb05f8p21av52h19axm4nn8"; + rev = "4be2360a693b41da84a3f38dce52fdcd183442e4"; + sha256 = "0r8cmk6lybnp8ggfhq5wabs0jdgvvxmbl370r3sfx8njz5c2hv3v"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c7615237e80b46b5c50cb51a3ed5b07d92566fb7/recipes/live-py-mode"; @@ -41363,8 +41392,8 @@ version = "20150910.644"; src = fetchgit { url = "http://llvm.org/git/llvm"; - rev = "1ef6a945eb9723326c1e7748ed1680dca46edf92"; - sha256 = "10kxnhvfhwpdrsjgba2vlg9vaqk7r9kjq8zv7aa05x7zn06i985h"; + rev = "02f82baedd269eebb269f3aa4664a26aaa6a90a5"; + sha256 = "1fiagx7bwbl9zjzf0rcxiiina3khyk8w96y1acadi6969dmla90k"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/05b7a689463c1dd4d3d00b992b9863d10e93112d/recipes/llvm-mode"; @@ -41799,12 +41828,12 @@ lsp-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild }: melpaBuild { pname = "lsp-mode"; - version = "20170422.954"; + version = "20170430.934"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-mode"; - rev = "fcec82c2f05d603031599d0d170c093bbd2c3a83"; - sha256 = "0jhlijviazn0hdcrgmh1lnbywcfrb6lsf9gbv0lh56kjwf8896p7"; + rev = "0c869d80024b48fb1ca8c1499ebac8ef20d76005"; + sha256 = "0j6brd6c7vrn4ayc5zx29j54zp4qnczfz7sli7l1vvx1fzx25kid"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1a7b69312e688211089a23b75910c05efb507e35/recipes/lsp-mode"; @@ -41820,12 +41849,12 @@ lsp-python = callPackage ({ fetchFromGitHub, fetchurl, lib, lsp-mode, melpaBuild }: melpaBuild { pname = "lsp-python"; - version = "20170421.322"; + version = "20170430.443"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-python"; - rev = "972f1b77ac059e8a8d39f1f0b48fe2b9f146f439"; - sha256 = "02i97m1d35pz2w50006pdpc3anpgnysxbxhkx6hl1s2m8kwrrlwz"; + rev = "5e032b39d74e63dee9157bf967f3902caa8524fa"; + sha256 = "1rhk6hlcvvg9yqy3x9fx8qdvhyf2aih2k6m4x5cr80mzvczmxl31"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1a7b69312e688211089a23b75910c05efb507e35/recipes/lsp-python"; @@ -41883,11 +41912,11 @@ luarocks = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "luarocks"; - version = "20170326.941"; + version = "20170430.1605"; src = fetchFromGitHub { owner = "emacs-pe"; repo = "luarocks.el"; - rev = "e0e52ba395432e18508740cc3d097b2918f55b9b"; + rev = "cee27ba0716edf338077387969883226dd2b7484"; sha256 = "0rdsjmmi95agb859997qdhbk0dns2jyx2mlg8rync58wna70nmbn"; }; recipeFile = fetchurl { @@ -42153,12 +42182,12 @@ magit = callPackage ({ async, dash, emacs, fetchFromGitHub, fetchurl, git-commit, lib, magit-popup, melpaBuild, with-editor }: melpaBuild { pname = "magit"; - version = "20170424.1053"; + version = "20170425.638"; src = fetchFromGitHub { owner = "magit"; repo = "magit"; - rev = "a34259407996c6d3b7e520ed38340017befa26ab"; - sha256 = "08sn6vl2r06r19xkmb9n9zicycc6dq1grhsfhh4zjg7lzp7v9bj6"; + rev = "595f7c6fac10a91f9edb68615f23d05b3d829f3c"; + sha256 = "1a5lglslbhsnwjaspxbxj2kqnz53k7vkfb91xj73pqxk9lr8m2y5"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/68bb049b7c4424345f5c1aea82e950a5e47e9e47/recipes/magit"; @@ -42181,12 +42210,12 @@ magit-annex = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, magit, melpaBuild }: melpaBuild { pname = "magit-annex"; - version = "20170408.1426"; + version = "20170429.756"; src = fetchFromGitHub { owner = "magit"; repo = "magit-annex"; - rev = "ae6250aead8f283eac8d6951a249cfc7d85e0b40"; - sha256 = "0n6dhc92z5w67rcfngjzprzbdn42ja263gdqa7fncqq9p66slccq"; + rev = "b8f191e37d0b3136aa0b00345961b6f7cf2e5789"; + sha256 = "097x8jblz83h750syxxcra9rswmghdwbpnx2xv8wbgwg3axch7rm"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/magit-annex"; @@ -42353,8 +42382,8 @@ src = fetchFromGitHub { owner = "magit"; repo = "magit"; - rev = "a34259407996c6d3b7e520ed38340017befa26ab"; - sha256 = "08sn6vl2r06r19xkmb9n9zicycc6dq1grhsfhh4zjg7lzp7v9bj6"; + rev = "595f7c6fac10a91f9edb68615f23d05b3d829f3c"; + sha256 = "1a5lglslbhsnwjaspxbxj2kqnz53k7vkfb91xj73pqxk9lr8m2y5"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/magit-popup"; @@ -43025,8 +43054,8 @@ src = fetchFromGitHub { owner = "ancane"; repo = "markdown-preview-mode"; - rev = "65f48df07c87d37275cc6a135741df4b585f1836"; - sha256 = "0gkfwm7zxwdi7x7xd6m9sl9q1p5f2q8mxryq6cd4xldbvbcki71f"; + rev = "50e5baed5ca3a1d2fed08f32802976a5ed358fed"; + sha256 = "1p1npnhlh99m9pxvd1jhbzn9dxhg5fjml1bw8yakrv7k1h6zwrd3"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d3c5d222cf0d7eca6a4e3eb914907f8ca58e40f0/recipes/markdown-preview-mode"; @@ -43196,12 +43225,12 @@ mastodon = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "mastodon"; - version = "20170424.2154"; + version = "20170429.952"; src = fetchFromGitHub { owner = "jdenen"; repo = "mastodon.el"; - rev = "b18b37b6807875ff1b84afa85d82be819342e7d6"; - sha256 = "1398svw9jfvcsigchdaf8amc9c8r8fy900hsxl297hsfbm5sb79g"; + rev = "ac10d7a647aa77aa933076a523a48ec0a283dd15"; + sha256 = "1cy11qlms6499vjphnx5yxpknvs1a90q67ibrijhwyhsy9gi798l"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/809d963b69b154325faaf61e54ca87b94c1c9a90/recipes/mastodon"; @@ -43528,12 +43557,12 @@ meghanada = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, yasnippet }: melpaBuild { pname = "meghanada"; - version = "20170412.2054"; + version = "20170426.1921"; src = fetchFromGitHub { owner = "mopemope"; repo = "meghanada-emacs"; - rev = "fa20a6ae2e0f0ed3437181f2dc233b8c2a9dca6e"; - sha256 = "1awi879ch0ms2js1v1kb0c0jv7iicgj8qrfj9xlb3j4wzmxi3vcw"; + rev = "54be7c38ceeb7de4bd926a577f9920e174534b37"; + sha256 = "0apqxpkngyygfdj1wnqs5fl87bfbb4m5vis9cv8q3fcq92yhjqa1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4c75c69b2f00be9a93144f632738272c1e375785/recipes/meghanada"; @@ -43718,8 +43747,8 @@ src = fetchFromGitHub { owner = "the-lambda-church"; repo = "merlin"; - rev = "89f9643c08211a770454919551a7fd8605d1fca8"; - sha256 = "13x0zjd297ssqmbvba32zk2p588kznd5ag4wh3nqb6fdgyzy4d63"; + rev = "420416f182d2ea2a2285ab4bd22e5898dfb20a83"; + sha256 = "101vk16c5wayd51s8w0mvy99bk7q3gm2gz8i8616wa1lmyszjknh"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b1b9bfd3164e62758dc0a3362d85c6627ed7cbf8/recipes/merlin"; @@ -43757,7 +43786,7 @@ pname = "message-x"; version = "20151029.718"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/message-x.el"; + url = "https://www.emacswiki.org/emacs/download/message-x.el?revision=9"; sha256 = "05ic97plsysh4nqwdrsl5m9f24m11w24bahj8bxzfdawfima2bkf"; }; recipeFile = fetchurl { @@ -43795,12 +43824,12 @@ meta-presenter = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "meta-presenter"; - version = "20160924.2206"; + version = "20170425.1934"; src = fetchFromGitHub { owner = "myTerminal"; repo = "meta-presenter"; - rev = "0b7f3d47e34fdd0c150da55e58ec2bfc274930a8"; - sha256 = "06s93i46rm91i23in51mf7ynl37c90f2gl52ykv48p41dyv1kg6v"; + rev = "e882ac7f7658dd9507aca0ff88c88fcf74618252"; + sha256 = "0h8zg2nvb0yn0z8xv1101r8rjxgs05k08j3n71inr7n118sa98bj"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b73e9424515b3ddea220b786e91c57ee22bed87f/recipes/meta-presenter"; @@ -44299,7 +44328,7 @@ pname = "minor-mode-hack"; version = "20141226.1220"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/minor-mode-hack.el"; + url = "https://www.emacswiki.org/emacs/download/minor-mode-hack.el?revision=10"; sha256 = "0vwvvhzqiad82qvfwygb2arq1mdvh1lj6q2as0a92fg1vc95qcb0"; }; recipeFile = fetchurl { @@ -44359,7 +44388,7 @@ pname = "misc-cmds"; version = "20170307.847"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/misc-cmds.el"; + url = "https://www.emacswiki.org/emacs/download/misc-cmds.el?revision=103"; sha256 = "1w58z2j95sycgkakgb9anlc3q73v77whspi9a4j1kf6lmcbpyms8"; }; recipeFile = fetchurl { @@ -44377,7 +44406,7 @@ pname = "misc-fns"; version = "20170307.848"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/misc-fns.el"; + url = "https://www.emacswiki.org/emacs/download/misc-fns.el?revision=50"; sha256 = "0jjmd33z36dikkbskskgbdv8pflkwaxn4ifajq4ghrdprdhm6gbm"; }; recipeFile = fetchurl { @@ -44688,7 +44717,7 @@ pname = "modeline-char"; version = "20170307.854"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/modeline-char.el"; + url = "https://www.emacswiki.org/emacs/download/modeline-char.el?revision=8"; sha256 = "1c6ij1c0d6r9chzwqcpgdjq1rb2h0m09fpck9rc9rg5jy7fgdc0d"; }; recipeFile = fetchurl { @@ -44706,7 +44735,7 @@ pname = "modeline-posn"; version = "20170307.856"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/modeline-posn.el"; + url = "https://www.emacswiki.org/emacs/download/modeline-posn.el?revision=43"; sha256 = "1cpab6k0p65nmw78y5v4lbpxw6pczkzk46zmkc76pi55yjpw6pbm"; }; recipeFile = fetchurl { @@ -45120,7 +45149,7 @@ pname = "mouse3"; version = "20170324.1050"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/mouse3.el"; + url = "https://www.emacswiki.org/emacs/download/mouse3.el?revision=39"; sha256 = "0rnpfz0d4spxkyssgf3j5kfajm54i1vism2q0giikd0savrh0a1c"; }; recipeFile = fetchurl { @@ -45452,12 +45481,12 @@ mu4e-alert = callPackage ({ alert, emacs, fetchFromGitHub, fetchurl, ht, lib, melpaBuild, s }: melpaBuild { pname = "mu4e-alert"; - version = "20170403.2222"; + version = "20170429.816"; src = fetchFromGitHub { owner = "iqbalansari"; repo = "mu4e-alert"; - rev = "c57a29933e4a03e0ece8310c51a8bc2143f8b010"; - sha256 = "0mgxldxb07ixp8jli7j5jgv2b5vfzhvdv9nszqap4hp4iz7hm50f"; + rev = "3453e25ff6c07c1b768b2a79fdb9fc5c97100e76"; + sha256 = "1nvsfbfsma59ilf7c3vjngnmx3aapwvvvaafdy5szm5r6lkicqvg"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/mu4e-alert"; @@ -45537,7 +45566,7 @@ pname = "multi-eshell"; version = "20120608.1135"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/multi-eshell.el"; + url = "https://www.emacswiki.org/emacs/download/multi-eshell.el?revision=9"; sha256 = "1w1jwfznpl214a1xx46zlgqbx9c5yjzpyqqrkn3xqjgnj485yhkl"; }; recipeFile = fetchurl { @@ -45827,7 +45856,7 @@ pname = "muttrc-mode"; version = "20090804.1552"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/muttrc-mode.el"; + url = "https://www.emacswiki.org/emacs/download/muttrc-mode.el?revision=7"; sha256 = "1xihp3zdqs9054j3bfrd9wnahsvvxjk1ags1iy50ncv5850ppjis"; }; recipeFile = fetchurl { @@ -46012,12 +46041,12 @@ myterminal-controls = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "myterminal-controls"; - version = "20160924.2206"; + version = "20170425.1936"; src = fetchFromGitHub { owner = "myTerminal"; repo = "myterminal-controls"; - rev = "b76ef43a64f25cbea67b966ebf88eb12518a52b4"; - sha256 = "1x8sfhdb5cw1xih9gpr07pz3f0y9wzxv38pxg4pllkayc2sqhsr4"; + rev = "3edcef051f882342ca769b84527bf92dfb755e14"; + sha256 = "0g9vyy639aqnk0g9rmrlszc7i0rl2f2ygnzfs4pwakgfiwig5r0c"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4a82a45d9fcafea0795f832bce1bdd7bc83667e2/recipes/myterminal-controls"; @@ -46076,7 +46105,7 @@ pname = "naked"; version = "20170418.1822"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/naked.el"; + url = "https://www.emacswiki.org/emacs/download/naked.el?revision=23"; sha256 = "1k3j6dyp8p47q43i4ba53krl06yx32rkjnh2f5x1zqk6nxnb1wf8"; }; recipeFile = fetchurl { @@ -46324,7 +46353,7 @@ pname = "narrow-indirect"; version = "20170307.921"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/narrow-indirect.el"; + url = "https://www.emacswiki.org/emacs/download/narrow-indirect.el?revision=13"; sha256 = "1sdyya2gmmd2h39kmijf514y3vln6ax5xdfsrkx1hcalw4l418gh"; }; recipeFile = fetchurl { @@ -46953,8 +46982,8 @@ src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; - rev = "9b63bb88c8873d192b8b01608e5d230817dd3375"; - sha256 = "1w75zcq721awyyfn0v2bycmg4cgrgzmmj9hxzpwsywab2l25kjba"; + rev = "b0b81b75001d06fc38fc187969089a068ddf2ed2"; + sha256 = "06n98nwwcrhnv4zbkq5lr943bdmkqq2df00yqarh2irv6ixk8lq7"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f2b542189cfde5b9b1ebee4625684949b6704ded/recipes/nix-mode"; @@ -47075,12 +47104,12 @@ no-littering = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "no-littering"; - version = "20170312.612"; + version = "20170426.404"; src = fetchFromGitHub { owner = "tarsius"; repo = "no-littering"; - rev = "18e1506135be031db010292d27ef156e32766017"; - sha256 = "1lqz9fda24i3zkff9nnj4gndrs2bfql80wvvfisn106a3j0ah1n8"; + rev = "e041942cb0f4f02d00cf30afb956208496562ba4"; + sha256 = "00d6fz5kg2k6py5mj2h9rzbqa4gkiv02h9ba55psfgbnmak6ip0v"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cf5d2152c91b7c5c38181b551db3287981657ce3/recipes/no-littering"; @@ -48436,8 +48465,8 @@ src = fetchFromGitHub { owner = "OCamlPro"; repo = "ocp-indent"; - rev = "ef97b02aad386203da7066d159cc7d847dc3f55f"; - sha256 = "1sx3bbp75v4xkd4aikrap735rp00klzxz22qsij76v0r7dhrdlr4"; + rev = "ade286009fdc241270e46ec28d2813c84c6c15eb"; + sha256 = "0kh1p3f05nh0krcxvbr7l9229g8gf4h2czk4fahs72m7rlh53iqi"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e1af061328b15360ed25a232cc6b8fbce4a7b098/recipes/ocp-indent"; @@ -48642,12 +48671,12 @@ omni-quotes = callPackage ({ dash, f, fetchFromGitHub, fetchurl, ht, lib, melpaBuild, omni-log, s }: melpaBuild { pname = "omni-quotes"; - version = "20170423.1216"; + version = "20170425.1132"; src = fetchFromGitHub { owner = "AdrieanKhisbe"; repo = "omni-quotes.el"; - rev = "3ea0853eb36fec07c8ff2da0d29fd969febaadcd"; - sha256 = "0zbj07gi23f2g1gzf2d9d86jngxjrq91lm3dbd3rwlwpnhd8285p"; + rev = "454116c1dd6581baaeefd6b9310b1b6b7a5c36d0"; + sha256 = "1h8lrpi5wizi5vncdz83cxlx7c71xw3sw89sfg462zfbz2sq8afl"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3402524f79381c99fdeb81a6a5a9241c918811be/recipes/omni-quotes"; @@ -48684,12 +48713,12 @@ omni-tags = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild, pcre2el }: melpaBuild { pname = "omni-tags"; - version = "20150513.1053"; + version = "20170426.1409"; src = fetchFromGitHub { owner = "AdrieanKhisbe"; repo = "omni-tags.el"; - rev = "f949a062e8dab12e8fda39eec465d53a2f23e314"; - sha256 = "01nawy8nadi9yspnql4wq8ssn5xgaf34yknxdjyhkswjr3bql3f4"; + rev = "8f0f6c302fab900b7681e5c039f90850cbbabd33"; + sha256 = "0cqj4h4bdhmb0r6f2xx9g6cs3599m4j3snkrvsgddaq8c6mg47w0"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c77e57f41484c08cae9f47c4379d1752ccf43ce2/recipes/omni-tags"; @@ -48842,7 +48871,7 @@ pname = "oneonone"; version = "20170416.858"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/oneonone.el"; + url = "https://www.emacswiki.org/emacs/download/oneonone.el?revision=129"; sha256 = "0ag62z31mb5n50m9qph2ww945pr71j95c5xv7krna1iq01qr8ji1"; }; recipeFile = fetchurl { @@ -49972,8 +50001,8 @@ version = "20140107.519"; src = fetchgit { url = "git://orgmode.org/org-mode.git"; - rev = "9874458468d527a4ac0b520a8771e0b6eaed4a9b"; - sha256 = "1rh294zhsnpicvw8jv32x52b2sxiw2bnrjn88wlvnhp51wzgwgpr"; + rev = "5bc540eae129c34d7763aacf7eaa596b04a3f256"; + sha256 = "0k6kvh0chi5d1qbnd86zksfn5yb7j87nk2cvy4a48dz59df61mzg"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ee69e5e7b1617a29919d5fcece92414212fdf963/recipes/org-mac-iCal"; @@ -49992,8 +50021,8 @@ version = "20170105.1723"; src = fetchgit { url = "git://orgmode.org/org-mode.git"; - rev = "9874458468d527a4ac0b520a8771e0b6eaed4a9b"; - sha256 = "1rh294zhsnpicvw8jv32x52b2sxiw2bnrjn88wlvnhp51wzgwgpr"; + rev = "5bc540eae129c34d7763aacf7eaa596b04a3f256"; + sha256 = "0k6kvh0chi5d1qbnd86zksfn5yb7j87nk2cvy4a48dz59df61mzg"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b86c666ee9b0620390a250dddd42b17cbec2409f/recipes/org-mac-link"; @@ -50156,12 +50185,12 @@ org-page = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, git, ht, htmlize, lib, melpaBuild, mustache, org, simple-httpd }: melpaBuild { pname = "org-page"; - version = "20170419.2242"; + version = "20170428.424"; src = fetchFromGitHub { owner = "kelvinh"; repo = "org-page"; - rev = "8aac90e1c1bf06c91430306d652fd5c40961f99f"; - sha256 = "1vhdd2n7ynmy8gc51mga9nf0wpsk4hfnqgbihsy3i3i73k6wil0v"; + rev = "ca37f5bd48c1bb2a90ff0dc6ce708fb408903ed2"; + sha256 = "1v1a51xy1lnp2flg929fkann405l0rsgv3fpg6y3q39m28wxz2xk"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/872f163d4da58760009001472e2240f00d4d2d89/recipes/org-page"; @@ -50442,12 +50471,12 @@ org-ref = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, helm, helm-bibtex, hydra, ivy, key-chord, lib, melpaBuild, s }: melpaBuild { pname = "org-ref"; - version = "20170423.1812"; + version = "20170429.651"; src = fetchFromGitHub { owner = "jkitchin"; repo = "org-ref"; - rev = "5f56a28e2ec242f5291b5f16f62af29619ecfdcd"; - sha256 = "17gia39gi54ggbbz69w0dfk9cannjyp2jz9wn3ki0mbjgjflg3c6"; + rev = "1ce8358160f7d98fac4543f73b2302965389ca4d"; + sha256 = "0nkd9akrdpsr26rqgbcwg41943rb12liap2bswy3f8gp9bqhc3wv"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/550e4dcef2f74fbd96474561c1cb6c4fd80091fe/recipes/org-ref"; @@ -51611,8 +51640,8 @@ src = fetchFromGitHub { owner = "jkitchin"; repo = "scimax"; - rev = "45c3d06ca2c0a651934e60a67f9e7f0dad55e98d"; - sha256 = "1j4xl7qy51my0c4dswpmj5yyh97i4745g1a508pwq13wzngb3s3a"; + rev = "da84a1cfe3c95757abc7bd3e567866a26f724f76"; + sha256 = "0bkhx6rnvv70z60lgkf36hcp7pcakh3drd8q277xhzfirg4dixa7"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/222ccf4480395bda8c582ad5faf8c7902a69370e/recipes/ox-clip"; @@ -52111,12 +52140,12 @@ package-build = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "package-build"; - version = "20170412.1620"; + version = "20170429.225"; src = fetchFromGitHub { owner = "melpa"; repo = "package-build"; - rev = "2346b0eec188cce4106ac605a396ded0d380f610"; - sha256 = "053zzllffpa17nq488zgc7xhn27p1b42jrg28k5vpzvmin64bda3"; + rev = "0cb81955bb3933ff0c39a488e9a4b3540ee918a7"; + sha256 = "06gc0ha2aaj20z5rlbn19z4j57l0xc46a3285kqwa5xk3jnk3213"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/948fb86b710aafe6bc71f95554655dfdfcab0cca/recipes/package-build"; @@ -52364,7 +52393,7 @@ pname = "palette"; version = "20170307.936"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/palette.el"; + url = "https://www.emacswiki.org/emacs/download/palette.el?revision=84"; sha256 = "112b91z1f4p0j4kzrn8110w9pk2fyndjqiiyh0vkwah2ihpsw3pj"; }; recipeFile = fetchurl { @@ -52448,8 +52477,8 @@ src = fetchFromGitHub { owner = "joostkremers"; repo = "pandoc-mode"; - rev = "88ad7ea08afae0bf062755bb1e91c5543aac6028"; - sha256 = "0vjxlbm143i9a8pi5v2q82fms8lwf1i24nddxj4a1js2r6mpz15m"; + rev = "f0d3cff41a02e938b152898a6fbf9935af873e96"; + sha256 = "1kc1gagw8w1pwy3qhg58kvmab07hssj4aawyzhj0fsz1rf6zq7d7"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4e39cd8e8b4f61c04fa967def6a653bb22f45f5b/recipes/pandoc-mode"; @@ -52532,8 +52561,8 @@ src = fetchFromGitHub { owner = "Malabarba"; repo = "paradox"; - rev = "71a8eb68cd618094244110c5d2d5ae9632605204"; - sha256 = "1zkhmpd20vm95l9bfgzlpc2hl8qvig3rm9kxhyrhwn2iybna05rw"; + rev = "4554d7651c26de10d350db28e150c685cd171e19"; + sha256 = "0k2gbgrh1vb810qpdx632gbd8gx0gy4img022a16n620l3g1s0rn"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e6aed365c42987d64d0cd9a8a6178339b1b39e8/recipes/paradox"; @@ -52673,12 +52702,12 @@ parinfer = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "parinfer"; - version = "20170315.2109"; + version = "20170430.321"; src = fetchFromGitHub { owner = "DogLooksGood"; repo = "parinfer-mode"; - rev = "c67686b24cf14064931d812f29f4114b30696d12"; - sha256 = "0lpj81hkzw24v1f3s13rw22sm1nm0i177di5v2b8kwy50pjirs8v"; + rev = "f5de68ae43a93f537f6f6b2266ba3952b56ccf2f"; + sha256 = "1g8bjlw0ygwjsf9p8r48bml7zw4jybb2g3r8a7qq5k75dz81k4f7"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/470ab2b5cceef23692523b4668b15a0775a0a5ba/recipes/parinfer"; @@ -52715,12 +52744,12 @@ parsebib = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "parsebib"; - version = "20170326.2344"; + version = "20170501.347"; src = fetchFromGitHub { owner = "joostkremers"; repo = "parsebib"; - rev = "73327c471d92c7716484d8c3cbcdeed1d70ae468"; - sha256 = "18g7mir5ynik5ryg0hl6vpjpajz6d6j0xd9ni54h3h60vvhciwmi"; + rev = "bc31b627c666df576aa37e21c27a2223b3cb91a3"; + sha256 = "1bnqnxkb9dnl0fjrrjx0xn9jsqki2h8ygw3d5dm4bl79smah3qkh"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c39633957475dcd6a033760ba20a957716cce59c/recipes/parsebib"; @@ -54077,12 +54106,12 @@ php-mode = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "php-mode"; - version = "20170419.1240"; + version = "20170428.1853"; src = fetchFromGitHub { owner = "ejmr"; repo = "php-mode"; - rev = "8fd56d646985201f7a6bebb49aaaeed760cad302"; - sha256 = "1rlj7zm19vgk9k7q1b44ckw3sabyw5jk9bqhp06fq8bpvi46hy3d"; + rev = "6e57817aa3a3cabe41e069ff8af1521db118ff13"; + sha256 = "15lf3hvq466bhsnw5hzmpnwsnynqk0wsg5d5vn2n4j9kax4lzhb9"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7cdbc35fee67b87b87ec72aa00e6dca77aef17c4/recipes/php-mode"; @@ -54665,12 +54694,12 @@ play-routes-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "play-routes-mode"; - version = "20160615.2053"; + version = "20170426.33"; src = fetchFromGitHub { owner = "brocode"; repo = "play-routes-mode"; - rev = "325ce59b0b3cb27ddbbde9949a16f6a749ffbd3f"; - sha256 = "0jn4mcwaws92lsj5hp67zlx03qwcxbqacy3rigy1b183ksqqf26i"; + rev = "ef8230932f7bb96643febbd6872c522932f9571a"; + sha256 = "1wv4wnkcdlq5qvxr55wgs6dc64m69r0niz0r5h2ch9d5nclmvbkh"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/740cef8687232eb0e2186e8df956c2d4f39575cf/recipes/play-routes-mode"; @@ -54792,7 +54821,7 @@ pname = "plsql"; version = "20121115.243"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/plsql.el"; + url = "https://www.emacswiki.org/emacs/download/plsql.el?revision=5"; sha256 = "1v0wvy9fd1qq3aq83x5jv3953n0n51x7y2r2ql11j0h8xasy42p1"; }; recipeFile = fetchurl { @@ -54953,7 +54982,7 @@ pname = "point-undo"; version = "20100504.129"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/point-undo.el"; + url = "https://www.emacswiki.org/emacs/download/point-undo.el?revision=6"; sha256 = "13c1iw77ccvrfrv4lyljg8fpm7xqhnv29yzvig8wr8b5j2vsd8bz"; }; recipeFile = fetchurl { @@ -55475,7 +55504,7 @@ pname = "pp-c-l"; version = "20170307.939"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/pp-c-l.el"; + url = "https://www.emacswiki.org/emacs/download/pp-c-l.el?revision=25"; sha256 = "0q36bq82lp381jnzf8kapiiglqgibzkhsxlhpgfdg3ynbmw5i1cc"; }; recipeFile = fetchurl { @@ -55616,7 +55645,7 @@ pname = "pretty-lambdada"; version = "20170307.940"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/pretty-lambdada.el"; + url = "https://www.emacswiki.org/emacs/download/pretty-lambdada.el?revision=15"; sha256 = "0b8m96hbqmgyqmv5f890fnyl9vl2wcsaz8w4b11wdprh82ravp4r"; }; recipeFile = fetchurl { @@ -55908,7 +55937,7 @@ pname = "project-local-variables"; version = "20080502.952"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/project-local-variables.el"; + url = "https://www.emacswiki.org/emacs/download/project-local-variables.el?revision=1"; sha256 = "1bb5b6hxg3gvwf0sqwkd97nnipsmr60py0rnsfhgvizn4cj3khhw"; }; recipeFile = fetchurl { @@ -56411,8 +56440,8 @@ src = fetchFromGitHub { owner = "google"; repo = "protobuf"; - rev = "4920e27a488976c9993cef686d868a846868eb56"; - sha256 = "1abrznpxaflnvds1vfnz92jxs88sw4z3i6skwrsq0f3cii5ymiwq"; + rev = "067b1eec3bf852abaad0844999461baff8a5fdc8"; + sha256 = "12mkj6imw3n5l5cn558sfic46f463skm0hipp9pfqkln3yh92gsl"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b4e7f5f641251e17add561991d3bcf1fde23467b/recipes/protobuf-mode"; @@ -57004,12 +57033,12 @@ pydoc = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "pydoc"; - version = "20160529.1639"; + version = "20170429.1158"; src = fetchFromGitHub { owner = "statmobile"; repo = "pydoc"; - rev = "5392248e33d83ef05d3b2809b0c6b207786b2644"; - sha256 = "1m0jb5pk1a1ww5jx2y5nz21by4dh7nlnhdn6bigz53ra449rrxii"; + rev = "84133eefce0e52a861894815f0c414f1f276f6e1"; + sha256 = "1j5cjfak8rak8rp1cijjfyndpxjkr2vqw22av3386pbwdm6fzamg"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5c4988a66040ddf659492bdb0ae2b9617c342c69/recipes/pydoc"; @@ -57175,8 +57204,8 @@ src = fetchFromGitHub { owner = "PyCQA"; repo = "pylint"; - rev = "7cb3ffddfd96f5e099ca697f6b1e30e727544627"; - sha256 = "19f1bjhyizhsb2xva8f5n2x20nmja34j5ps278phqmg46qffbw5j"; + rev = "cb6e4523ce001012202e5767c8029fdfad21af1e"; + sha256 = "1xj0qpfi18gklrh5lvi12xaich4kbxl0yjlqk6gifnx58jhi81y4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a073c91d6f4d31b82f6bfee785044c4e3ae96d3f/recipes/pylint"; @@ -57318,12 +57347,12 @@ python-mode = callPackage ({ fetchFromGitLab, fetchurl, lib, melpaBuild }: melpaBuild { pname = "python-mode"; - version = "20170307.457"; + version = "20170429.55"; src = fetchFromGitLab { owner = "python-mode-devs"; repo = "python-mode"; - rev = "ac40376edcd2ca5a608f8aaa87b76fa020a2f3a3"; - sha256 = "0z375bx4609c1p9bb1awvrzcqscmn4v5jzarkw9ps5y1r0770b1r"; + rev = "d6a3bde1d79dc0507a7ad14508c07425ca283277"; + sha256 = "1zdvpq5ngx6n277r7xm5wyzfmpgpvsz0ilp865xdhkj2c3dyd2zw"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/82861e1ab114451af5e1106d53195afd3605448a/recipes/python-mode"; @@ -57360,12 +57389,12 @@ python-test = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "python-test"; - version = "20170415.1556"; + version = "20170427.1549"; src = fetchFromGitHub { owner = "emacs-pe"; repo = "python-test.el"; - rev = "2005e6f6797e875ba0946a3f50c2320c28614e7c"; - sha256 = "1wvyi4mdzasnby3z57xax6w6wkag3zpk23y99n9mhmfmf0fvyvix"; + rev = "7052b5ff1b599ce04800779b283bf4d293a7f223"; + sha256 = "18i0nh4qslbnj106hnxjmzgyg1gwyv2k968xwna73lzp7d4ykaq4"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0ea68b3aa9c057e81a3e90a359a38ac16cb26c2f/recipes/python-test"; @@ -58564,7 +58593,7 @@ pname = "recentf-ext"; version = "20161210.840"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/recentf-ext.el"; + url = "https://www.emacswiki.org/emacs/download/recentf-ext.el?revision=5"; sha256 = "0pzimhqkrdg2s9zw7ysir740cmaycf6fjs08bmlfjads7vdbjfpg"; }; recipeFile = fetchurl { @@ -59477,7 +59506,7 @@ pname = "reveal-next"; version = "20170101.1120"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/reveal-next.el"; + url = "https://www.emacswiki.org/emacs/download/reveal-next.el?revision=7"; sha256 = "0vqacr3q9n772qmyyj35dxkqp79yqrpfhlf8zj70jzg04xzy6f0m"; }; recipeFile = fetchurl { @@ -59600,7 +59629,7 @@ pname = "rfringe"; version = "20110405.820"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/rfringe.el"; + url = "https://www.emacswiki.org/emacs/download/rfringe.el?revision=1"; sha256 = "02i5znln0aphvmvaia3sz75bvjhqwyjq1blf5qkcbprnn95lm3yh"; }; recipeFile = fetchurl { @@ -59806,12 +59835,12 @@ robe = callPackage ({ fetchFromGitHub, fetchurl, inf-ruby, lib, melpaBuild }: melpaBuild { pname = "robe"; - version = "20170418.314"; + version = "20170428.553"; src = fetchFromGitHub { owner = "dgutov"; repo = "robe"; - rev = "39d07da7e3fbcfbf9ab851acdeca1511974e913b"; - sha256 = "1km8cglgqrg8gb35011jmgz86i273v6hbbna3x17828kmyh8w7wn"; + rev = "336dea660fc382de413ca4b7755232ec2abb3602"; + sha256 = "0945c0qnyr289qzy2pxsn2v4z0gxzjs3ln859h387dl451c99l8q"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/673f920d02fe761bc080b73db7d37dbf5b6d86d8/recipes/robe"; @@ -60020,8 +60049,8 @@ src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "18c6aa5b00451abf9dd34df60cb5b35e7d0866a6"; - sha256 = "1ih0bbjq0ydcs41zaz5lv87q32lx871rhjfgs7yqgd713bc55xxh"; + rev = "6b2ec42acfed369121aff26d1135669bfc272880"; + sha256 = "0fbjrn1ca4xacygwvsbam8lpl3p88i5nbfqmaz7n6xrlb788zv77"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/rtags"; @@ -60082,7 +60111,7 @@ version = "20161115.2259"; src = fetchsvn { url = "https://svn.ruby-lang.org/repos/ruby/trunk/misc/"; - rev = "58479"; + rev = "58531"; sha256 = "0n4gnpms3vyvnag3sa034yisfcfy5gnwl2l46krfwy6qjm1nyzhf"; }; recipeFile = fetchurl { @@ -60100,7 +60129,7 @@ pname = "ruby-block"; version = "20131210.1931"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/ruby-block.el"; + url = "https://www.emacswiki.org/emacs/download/ruby-block.el?revision=12"; sha256 = "0c4vy9xsw44g6q9nc8aaav5avgp34h24mvgcnww468afiimivdcq"; }; recipeFile = fetchurl { @@ -60162,7 +60191,7 @@ version = "20150424.752"; src = fetchsvn { url = "https://svn.ruby-lang.org/repos/ruby/trunk/misc/"; - rev = "58479"; + rev = "58531"; sha256 = "0n4gnpms3vyvnag3sa034yisfcfy5gnwl2l46krfwy6qjm1nyzhf"; }; recipeFile = fetchurl { @@ -60494,12 +60523,12 @@ s = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "s"; - version = "20160928.636"; + version = "20170428.1026"; src = fetchFromGitHub { owner = "magnars"; repo = "s.el"; - rev = "fc395c8d5e6c14d5e0920ab80d4d5df007eed14a"; - sha256 = "07db8jfi1m19x760grkznaiwbap5dp00cicd88cbam16a0qfhbjj"; + rev = "e61dee51474e61b777575b474459c582f3084f64"; + sha256 = "0yw23k8ix8v8sablqzn4802xxzf6b63q6hk3chypbx3y41363s8p"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/s"; @@ -60788,12 +60817,12 @@ sbt-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "sbt-mode"; - version = "20170317.330"; + version = "20170427.1535"; src = fetchFromGitHub { owner = "ensime"; repo = "emacs-sbt-mode"; - rev = "c92cf327f49d9bf8a146dec64b72baf7d341d80c"; - sha256 = "1iysw66g3nxsfl3svxi2j7ish3hzi4b8qy30wcj27jjwfjn2mywp"; + rev = "6f2cedfd07d2fa68b12bc435f9f30b32b8d9d2b0"; + sha256 = "1jaxaxjd6jzmzz49f1z1prjardql6nqbrgk3hbmfqshvlm6hq344"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/364abdc3829fc12e19f00b534565227dbc30baad/recipes/sbt-mode"; @@ -60813,8 +60842,8 @@ src = fetchFromGitHub { owner = "openscad"; repo = "openscad"; - rev = "0a00aecc6f3a510a8ef0c396bc04a73e5746cbeb"; - sha256 = "1k6psvjx8l0znb4rx46q4ykw6mc6npcwiz8xhk9nm9pd66hjnw7g"; + rev = "85b015e3d6cc8c5eeb128220ee624244942adc74"; + sha256 = "06kjj534303hvkm81nikxnnj456qjhfa506h0l5qv5mjmv6qgl6g"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2d27782b9ac8474fbd4f51535351207c9c84984c/recipes/scad-mode"; @@ -61187,7 +61216,7 @@ pname = "screenshot"; version = "20120509.405"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/screenshot.el"; + url = "https://www.emacswiki.org/emacs/download/screenshot.el?revision=8"; sha256 = "0q7yxaaa0fic4d2xwr0qk28clkinwz4xvw3wf8dv1g322s0xx2cw"; }; recipeFile = fetchurl { @@ -61373,7 +61402,7 @@ pname = "second-sel"; version = "20170307.946"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/second-sel.el"; + url = "https://www.emacswiki.org/emacs/download/second-sel.el?revision=28"; sha256 = "1sgwza2ka3iqsajnppq2vd150h1wbkzzi04rk7bzpqj32dyh7gbx"; }; recipeFile = fetchurl { @@ -61390,11 +61419,11 @@ secretaria = callPackage ({ alert, emacs, f, fetchgit, fetchurl, lib, melpaBuild, org, s }: melpaBuild { pname = "secretaria"; - version = "20161017.1345"; + version = "20170430.1724"; src = fetchgit { url = "https://bitbucket.org/shackra/secretaria.el"; - rev = "aae30bfc93fa5ea846bce086b22321c46b94ff7b"; - sha256 = "18ad7q2a131gpvjj8923vp06zh0zfdy1589vs3f09v16aazbcfqc"; + rev = "7551dfa21a4a796e0306041145c32c2ec8738028"; + sha256 = "1wiqk8ja3wjv7kmnnd93fg9rync08wjyhy1ssxan5csqfg89vw5a"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7b4c9ccbf2eeaa290f3b9d1e5eaaeb5b5547b365/recipes/secretaria"; @@ -61685,7 +61714,7 @@ pname = "sequential-command"; version = "20151207.1403"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/sequential-command.el"; + url = "https://www.emacswiki.org/emacs/download/sequential-command.el?revision=3"; sha256 = "0vg8rqzzi29swznhra2mnf45czr2vb77dpcxn3j0fi7gynx3wcwk"; }; recipeFile = fetchurl { @@ -62164,12 +62193,12 @@ shen-elisp = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "shen-elisp"; - version = "20170213.1303"; + version = "20170427.1502"; src = fetchFromGitHub { owner = "deech"; repo = "shen-elisp"; - rev = "8248cd96a0931cb3215dc13e0905ac4be1701981"; - sha256 = "1acml0p04wxnm0di9iy5kwml6myr7gcj09ky6dw35f0k0m1w51ba"; + rev = "ffe17dee05f75539cf5e4c59395e4c7400ececaa"; + sha256 = "10dq3qj1q8i6f604zws97xrvjxwrdcjj3ygh6xpna00cvf40llc2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/shen-elisp"; @@ -62250,8 +62279,8 @@ src = fetchFromGitHub { owner = "chrisdone"; repo = "structured-haskell-mode"; - rev = "45b32a79d90a4e23064f0ca18d4ff9283b01ef03"; - sha256 = "189vx1kjrdr0lxbfbvfvrxvr1y216px23rfa52ysha5av2khr39v"; + rev = "3b81e8739abe187fa378701152370d31bf44b331"; + sha256 = "1p9yb105yjzhhl2aj2hpqb4275m0liagn43r49ily8syvaj15r4m"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/68a2fddb7e000487f022b3827a7de9808ae73e2a/recipes/shm"; @@ -62331,7 +62360,7 @@ pname = "showkey"; version = "20170307.1528"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/showkey.el"; + url = "https://www.emacswiki.org/emacs/download/showkey.el?revision=11"; sha256 = "143889knvy6ifvq759869gbjfg10k10mi2by2hajcgzqhby72h61"; }; recipeFile = fetchurl { @@ -62934,12 +62963,12 @@ slack = callPackage ({ alert, circe, emojify, fetchFromGitHub, fetchurl, lib, melpaBuild, oauth2, request, websocket }: melpaBuild { pname = "slack"; - version = "20170422.956"; + version = "20170430.750"; src = fetchFromGitHub { owner = "yuya373"; repo = "emacs-slack"; - rev = "dbda2739d49b073095bde1ededd3321c99857630"; - sha256 = "019dzm2nxawbkk2qhqz130w4pa3i8s0w8vpmw4r7f408kz32m23y"; + rev = "52c55f3ab9818f09849a27edf57653672779f681"; + sha256 = "1z4c8aghp33q1rwydknqqcs68svp3hr77399ng7rqdlkdxfhrbj6"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f0258cc41de809b67811a5dde3d475c429df0695/recipes/slack"; @@ -62997,12 +63026,12 @@ slime = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, macrostep, melpaBuild }: melpaBuild { pname = "slime"; - version = "20170421.1423"; + version = "20170430.1855"; src = fetchFromGitHub { owner = "slime"; repo = "slime"; - rev = "7dc97e11f0d7efecc3adadfbc24dcc69fe0709fb"; - sha256 = "06iij0xcs8w3j9ikffmx8c1cvfplngjnwhyfq5xbzd4vj2iqwxn2"; + rev = "956c27fe668cd2cc36f76da4759b783a8b606409"; + sha256 = "1n4i70xryiz12p986db6pf9ib6snr52cvabxldzrn4y9n19qxf6c"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/14c60acbfde13d5e9256cea83d4d0d33e037d4b9/recipes/slime"; @@ -63376,7 +63405,7 @@ pname = "smart-compile"; version = "20161118.403"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/smart-compile.el"; + url = "https://www.emacswiki.org/emacs/download/smart-compile.el?revision=7"; sha256 = "163s97h1a9pjz3pqyn2mhh4mf05b7yycp29k5wnk3c9zc71pafvp"; }; recipeFile = fetchurl { @@ -63686,12 +63715,12 @@ smartparens = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "smartparens"; - version = "20170424.505"; + version = "20170430.844"; src = fetchFromGitHub { owner = "Fuco1"; repo = "smartparens"; - rev = "64813a85884c704cba185e9937c26bd4813e0e8f"; - sha256 = "1gmqnm3rd9bhr41bqz16ij5r1jxj3srgvwhmqw4k8yprw3zaqz2p"; + rev = "5296ea87fe907fdc0b501698fd0d8d0cbb68c4ed"; + sha256 = "0zyr3iwkch7ix0q7s2hqqszyk3s8v2r74qcp0zzmr5bpwi4qv84f"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bd98f85461ef7134502d4f2aa8ce1bc764f3bda3/recipes/smartparens"; @@ -64042,12 +64071,12 @@ snakemake-mode = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, magit-popup, melpaBuild }: melpaBuild { pname = "snakemake-mode"; - version = "20170406.1736"; + version = "20170430.1436"; src = fetchFromGitHub { owner = "kyleam"; repo = "snakemake-mode"; - rev = "15803162483e635f3e22b2efea33ccad725e0535"; - sha256 = "1nc8xp22i57kf89x0qh69dspl9hl710m01gdr35ph5gl8ycmyir5"; + rev = "22b3efd741e26f59e18c9fd28691d8b84c9130ab"; + sha256 = "0hjp5ci7miggw0gs2y8q867gi7p3dq2yyfkckkh52isrp0yvz0wf"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3a5b51fee1c9e6ce7e21555faa355d118d34b8d/recipes/snakemake-mode"; @@ -64210,12 +64239,12 @@ solarized-theme = callPackage ({ cl-lib ? null, dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "solarized-theme"; - version = "20161222.109"; + version = "20170430.800"; src = fetchFromGitHub { owner = "bbatsov"; repo = "solarized-emacs"; - rev = "dc80b1fe7c613d26b6357dbf447b593af6000ca6"; - sha256 = "0w0lxihnzkav8mab050s600p06f8cmvvdv84fnfzj8zmd2raifki"; + rev = "8aa2ce76327dc7081b1c9a310e858fe2b854d899"; + sha256 = "1a8hqagh4jjskyyc66s2xyspn9k4hvl430kfzgjcfzis889v19y7"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/solarized-theme"; @@ -64357,12 +64386,12 @@ sotlisp = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "sotlisp"; - version = "20161012.1217"; + version = "20170429.1945"; src = fetchFromGitHub { owner = "Malabarba"; repo = "speed-of-thought-lisp"; - rev = "fffe8d0b42b143a2e7df0470d9049fa57b6ecac5"; - sha256 = "0j5zwb1ypqps30126w2684lmjh8ia4qxg8inlajcbv8i3pbai7k6"; + rev = "89dfed2b5d2e9a3b16bfc47f169412b583626059"; + sha256 = "17g03bfaq98ncd95qwms18pdrn5jphq7g2g606pymf10qr62g3n2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e6aed365c42987d64d0cd9a8a6178339b1b39e8/recipes/sotlisp"; @@ -64595,12 +64624,12 @@ spaceline-all-the-icons = callPackage ({ all-the-icons, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, spaceline }: melpaBuild { pname = "spaceline-all-the-icons"; - version = "20170425.313"; + version = "20170501.515"; src = fetchFromGitHub { owner = "domtronn"; repo = "spaceline-all-the-icons.el"; - rev = "be53e5bde0e855c012bc99602830984a7008604a"; - sha256 = "19xwy2dqlp585vi2ihr85rhf609lc57l133gc3bcz09aii24lfkb"; + rev = "80b49f79ee191ea604b9c11e27a3b167f6e45017"; + sha256 = "0q0frwx37bvx1hjcsrjiq3m09fag44z14d36p58gp3a7mh9p2618"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d039e057c1d441592da8f54e6d524b395b030375/recipes/spaceline-all-the-icons"; @@ -64722,7 +64751,7 @@ pname = "speck"; version = "20160717.951"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/speck.el"; + url = "https://www.emacswiki.org/emacs/download/speck.el?revision=12"; sha256 = "0zn7gjrga1ly1za04jd4s61m1dwkyy960x7g3x9hn4szqvpcsvfa"; }; recipeFile = fetchurl { @@ -65201,7 +65230,7 @@ pname = "sqlplus"; version = "20161110.758"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/sqlplus.el"; + url = "https://www.emacswiki.org/emacs/download/sqlplus.el?revision=25"; sha256 = "04wqy4ss6499rpn0rnczmn39yi78xkqslblyq4xb700xzmzn7sg3"; }; recipeFile = fetchurl { @@ -65658,7 +65687,7 @@ pname = "sticky"; version = "20101129.1852"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/sticky.el"; + url = "https://www.emacswiki.org/emacs/download/sticky.el?revision=4"; sha256 = "18izyia1j3w2c07qhkp9h6rnvw35m5k1brrrjhm51fpdv2xj65fy"; }; recipeFile = fetchurl { @@ -65823,7 +65852,7 @@ pname = "strings"; version = "20170307.1533"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/strings.el"; + url = "https://www.emacswiki.org/emacs/download/strings.el?revision=49"; sha256 = "08sq20ys4xkkg11jyrnlzibl5v73i7zlnj28ygivy3sqvp07z7iz"; }; recipeFile = fetchurl { @@ -66214,7 +66243,7 @@ pname = "summarye"; version = "20130328.327"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/summarye.el"; + url = "https://www.emacswiki.org/emacs/download/summarye.el?revision=4"; sha256 = "0q5m8d6p9aqbfx17zgznkqw2jgh027xix4894wrdz91670zxd3py"; }; recipeFile = fetchurl { @@ -66463,7 +66492,7 @@ pname = "swbuff-x"; version = "20130607.314"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/swbuff-x.el"; + url = "https://www.emacswiki.org/emacs/download/swbuff-x.el?revision=9"; sha256 = "1fkicyjvanh8yk2y27sq075sarcyqhsdz0r4xhillpnv34ji98r5"; }; recipeFile = fetchurl { @@ -66547,8 +66576,8 @@ src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "f98f89f1bd90e8165c776efe47bb6c8c7377c5a2"; - sha256 = "1xx7xic3cn4ak0adpariib2f636m42d04m197x7y74msx4jwjd6z"; + rev = "76db661dde5a1bd748d510825ce1e3ae69ef7302"; + sha256 = "0wj3h5zjrf09456xqlgc5dq8ph35b7s622rkd7vmhfay38da9bn0"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e64cad81615ef3ec34fab1f438b0c55134833c97/recipes/swiper"; @@ -66606,12 +66635,12 @@ switch-window = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "switch-window"; - version = "20160229.334"; + version = "20170430.2202"; src = fetchFromGitHub { owner = "dimitri"; repo = "switch-window"; - rev = "c1bbe51573a19ff6adae8531bf20601e5da5f7db"; - sha256 = "09ba45zbya2a72prq13pjg9pgbs86c6kayf8q2papvr9f5yv57xa"; + rev = "4640e40f52a9c368ff72a1ef9675988cb4c3e9ce"; + sha256 = "1n28mz5yb0hw08s85axwxhfw92sv7r4jjv4w9r7bw466mijiql4s"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d2204e3b53ade1e400e143ac219f3c7ab63a1e9/recipes/switch-window"; @@ -66690,12 +66719,12 @@ symbol-overlay = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "symbol-overlay"; - version = "20170424.907"; + version = "20170501.108"; src = fetchFromGitHub { owner = "wolray"; repo = "symbol-overlay"; - rev = "0a03aecead1c11355fe4be61d2f6339f6116bc32"; - sha256 = "1m6d792zc82w615py9f401nl7ab21nz6k3f2sipinv27d9zkn911"; + rev = "765e1d3b073ab0f86979cb61393e523c37633240"; + sha256 = "0qrmk8ph6ckc36h7r2yc5b3viig4g5ns1jrpbxnpx7jsb9kk3yaz"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c2a468ebe1a3e5a35ef40c59a62befbf8960bd7b/recipes/symbol-overlay"; @@ -66817,7 +66846,7 @@ pname = "synonyms"; version = "20170307.1537"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/synonyms.el"; + url = "https://www.emacswiki.org/emacs/download/synonyms.el?revision=63"; sha256 = "0456mmp3niljpghqcngknqkrxmpkba3n95ab4pf0b0021z2zjyxk"; }; recipeFile = fetchurl { @@ -66880,8 +66909,8 @@ src = fetchFromGitHub { owner = "emacs-berlin"; repo = "syntactic-close"; - rev = "79b0de7f93e9590700aa2226752bc99434c53b42"; - sha256 = "0rqw7ckgcxa5m4ykvw1kgqgdyzc569j2pfj71q866drg150yq8s4"; + rev = "d9f01e66d495db42142b845c6da5fa3d7692bf29"; + sha256 = "0630v7h84fjw28j3lpwmwhfz3r6f7phiqccy7454vs0yxjyz0bp5"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f2c15c0c8ee37a1de042a974c6daddbfa7f33f1d/recipes/syntactic-close"; @@ -67315,12 +67344,12 @@ tawny-mode = callPackage ({ cider, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "tawny-mode"; - version = "20160504.1046"; + version = "20170422.1502"; src = fetchFromGitHub { owner = "phillord"; repo = "tawny-owl"; - rev = "f7013f7e70da5d2fff2fcaf88c5edc2d807a022b"; - sha256 = "08l8c1kixx32zm7vvs4xy7zp53aqwlgx567hg7byqy8mqn3x0q8f"; + rev = "de9ac4ab45d311fc9f5bf2d7fde73178f4562731"; + sha256 = "1j2kf4jp3iyafmp75da80a4s99d5l0svf53lwbqa8k66q9k9nhzh"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ea9a114ff739f7d6f5d4c3167f5635ddf79bf60c/recipes/tawny-mode"; @@ -67483,12 +67512,12 @@ telephone-line = callPackage ({ cl-generic, cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, seq }: melpaBuild { pname = "telephone-line"; - version = "20161105.840"; + version = "20170429.1338"; src = fetchFromGitHub { owner = "dbordak"; repo = "telephone-line"; - rev = "44f296e6a16afdde97927c170c6dd0cdb3a3598b"; - sha256 = "16zjijz9syzbcxq1d4bx11kagxwhzygrlgdqvb443cch5s70n2n7"; + rev = "f1f017607ffcff7f4fe81e3fd5c04fd70e23d96a"; + sha256 = "02sdm7538kq6122ppsmkw47q00jrxb1wj9nx21z12y3y1s5gllsb"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9c998b70365fb0a210c3b9639db84034c7d45097/recipes/telephone-line"; @@ -67735,12 +67764,12 @@ terminal-here = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "terminal-here"; - version = "20170413.521"; + version = "20170426.48"; src = fetchFromGitHub { owner = "davidshepherd7"; repo = "terminal-here"; - rev = "722213c91d1cd123649629908d7c872b28c49490"; - sha256 = "1511ja1184231py38gi64a4xcxpsp98fh60m63j62kav9wlzbkkr"; + rev = "86b3fb5616be1a0a90e21a9b2cade25c62243b5d"; + sha256 = "11cp9r282syyxqx4ihx3h75lac1xg32hhwssjib29p3ph48mq8si"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f8df6f7e23476eb52e7fdfbf9de277d3b44db978/recipes/terminal-here"; @@ -67760,8 +67789,8 @@ src = fetchFromGitHub { owner = "ternjs"; repo = "tern"; - rev = "e5a3f048ee7c7729434918648cafc564cbb3046a"; - sha256 = "0dgsg6nppssf3fjv37idb7z4c3k6plxjybp9al079bqhkr1cawdz"; + rev = "54b5bf3316124436e1d3982e109ce76c935cd86e"; + sha256 = "1ygkskll8mdpnk081f1f43f5l20yys0q9y94x27mvk92ppwb8w9n"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eaecd67af24050c72c5df73c3a12e717f95d5059/recipes/tern"; @@ -67781,8 +67810,8 @@ src = fetchFromGitHub { owner = "ternjs"; repo = "tern"; - rev = "e5a3f048ee7c7729434918648cafc564cbb3046a"; - sha256 = "0dgsg6nppssf3fjv37idb7z4c3k6plxjybp9al079bqhkr1cawdz"; + rev = "54b5bf3316124436e1d3982e109ce76c935cd86e"; + sha256 = "1ygkskll8mdpnk081f1f43f5l20yys0q9y94x27mvk92ppwb8w9n"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eaecd67af24050c72c5df73c3a12e717f95d5059/recipes/tern-auto-complete"; @@ -68051,7 +68080,7 @@ pname = "tfs"; version = "20120508.1120"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/tfs.el"; + url = "https://www.emacswiki.org/emacs/download/tfs.el?revision=9"; sha256 = "16byw8ix7bjh5ldr8rymisq2bhc5sh7db6rhpf0x28yd6mmzn73v"; }; recipeFile = fetchurl { @@ -68093,8 +68122,8 @@ src = fetchFromGitHub { owner = "myTerminal"; repo = "theme-looper"; - rev = "5e3a3ea7ad31d4b38efa2cc08f0063b230736da9"; - sha256 = "06khrrjlhnzckr2zisdbx4pj6r8kmv7dbdzvzh74qz79x337lvzn"; + rev = "0feeed3c93fc54305499bda5953112487f25a3a0"; + sha256 = "18fkfr7cihnkxbz7r2p6dl5w2yzaibx3qxgwqgmx3g47lb1g13gc"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/theme-looper"; @@ -68132,7 +68161,7 @@ pname = "thesaurus"; version = "20121125.1137"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/thesaurus.el"; + url = "https://www.emacswiki.org/emacs/download/thesaurus.el?revision=6"; sha256 = "0zcyasdzb7dvmld8418cy2mg8mpdx01bv44cm0sp5950scrypsaq"; }; recipeFile = fetchurl { @@ -68151,7 +68180,7 @@ pname = "thing-cmds"; version = "20170331.1338"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/thing-cmds.el"; + url = "https://www.emacswiki.org/emacs/download/thing-cmds.el?revision=57"; sha256 = "0zi7hbdb5w0lry09rdsxmb0kqnfp6s72kn0z5npfhvwalkcpywbq"; }; recipeFile = fetchurl { @@ -68274,8 +68303,8 @@ src = fetchFromGitHub { owner = "apache"; repo = "thrift"; - rev = "3311a9b2375276441234218f4351c6a8f66a6bc2"; - sha256 = "0raiwmix51sk97g9y3d45wism9yf6f1k2kq8b7m8ypacd1vhijdc"; + rev = "19baeefd8c38d62085891d7956349601f79448b3"; + sha256 = "03sfqcxgvg68y16pygxsgpl5dj7yfr0abyjhlraxq3qlc8bcy1rb"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/857ab7e3a5c290265d88ebacb9685b3faee586e5/recipes/thrift"; @@ -68293,7 +68322,7 @@ pname = "thumb-frm"; version = "20170307.1540"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/thumb-frm.el"; + url = "https://www.emacswiki.org/emacs/download/thumb-frm.el?revision=62"; sha256 = "1mfz4gkq71sp9q7pa8q0md36g7x0dpsqz0np507dx2kypzqhklpd"; }; recipeFile = fetchurl { @@ -68331,12 +68360,12 @@ tide = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, typescript-mode }: melpaBuild { pname = "tide"; - version = "20170412.541"; + version = "20170428.1227"; src = fetchFromGitHub { owner = "ananthakumaran"; repo = "tide"; - rev = "9b6599246679d7d09c97b44d3d4375d4e895f061"; - sha256 = "0j5n9wn596ayqyzymr0p20mx8cxp5pzz6362nicr13s0rn7bz4rv"; + rev = "26f6645c1de8c94d8c41755580abe3cb39ee749f"; + sha256 = "1x9nwg4zv0ng65a3gndgpkj0mal38j9bgsjcvz4fs6la8a6bidy2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a21e063011ebbb03ac70bdcf0a379f9e383bdfab/recipes/tide"; @@ -68353,7 +68382,7 @@ pname = "tidy"; version = "20111222.956"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/tidy.el"; + url = "https://www.emacswiki.org/emacs/download/tidy.el?revision=9"; sha256 = "0psci55a3angwv45z9i8wz8jw634rxg1xawkrb57m878zcxxddwa"; }; recipeFile = fetchurl { @@ -68695,7 +68724,7 @@ pname = "todochiku"; version = "20150112.1254"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/todochiku.el"; + url = "https://www.emacswiki.org/emacs/download/todochiku.el?revision=16"; sha256 = "0fhlyjl0a3fd25as185j6dmch0wsrf1zc59q29lhjximg9lk3hr5"; }; recipeFile = fetchurl { @@ -68754,12 +68783,12 @@ togetherly = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "togetherly"; - version = "20150820.138"; + version = "20170425.2316"; src = fetchFromGitHub { owner = "zk-phi"; repo = "togetherly"; - rev = "9d655661984f7d62e9d6e0e9d47ae7ca8c4f43c7"; - sha256 = "1falf86mm2206szkkwiwa5yk65y12asv84j1pdbcy6n8y6hha796"; + rev = "a6491bd5dd84f2aded0cd112ff06ae76ff78dfeb"; + sha256 = "05x6ppfkpklxf1098acs6gpd3zm9k05vhywa7n01y2g6nhp697pw"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/05da36e2d57a57255423a24a34742cbac2f6c9a5/recipes/togetherly"; @@ -68962,7 +68991,7 @@ pname = "top-mode"; version = "20130605.1039"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/top-mode.el"; + url = "https://www.emacswiki.org/emacs/download/top-mode.el?revision=3"; sha256 = "0a5rl1cgznycqwx4r48mh69lgm8ixbnlfzbqdyvclgm8fldbannn"; }; recipeFile = fetchurl { @@ -69781,7 +69810,7 @@ pname = "typing"; version = "20121026.1418"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/typing.el"; + url = "https://www.emacswiki.org/emacs/download/typing.el?revision=13"; sha256 = "0mgvpdp3vlvjy32d163h2mzsf9j2ij2f542sdr3rsy8l80n6nx31"; }; recipeFile = fetchurl { @@ -69904,7 +69933,7 @@ pname = "ucs-cmds"; version = "20170308.1512"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/ucs-cmds.el"; + url = "https://www.emacswiki.org/emacs/download/ucs-cmds.el?revision=23"; sha256 = "072swg5iyx9n4xpdm65ydh2z7g11jqi3jjwkhcd7a389lavfqnbw"; }; recipeFile = fetchurl { @@ -69963,12 +69992,12 @@ ujelly-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "ujelly-theme"; - version = "20170413.358"; + version = "20170430.1443"; src = fetchFromGitHub { owner = "marktran"; repo = "color-theme-ujelly"; - rev = "304f9470fc3b4fa29e0e9a030c5a10363c55a729"; - sha256 = "0igw5p2idf5c07qzhc0m2i2mhn3yhvjy3yrk4dbw1vbzx1b1afdh"; + rev = "0bfbef56427f077a6630c803d312a82dc1743550"; + sha256 = "0wgzn1wlyiqb0bz2wrzh5pv5ljgqg99x7vc6pzr106ia13ccvpnp"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/ujelly-theme"; @@ -70006,7 +70035,7 @@ pname = "unbound"; version = "20160505.2355"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/unbound.el"; + url = "https://www.emacswiki.org/emacs/download/unbound.el?revision=11"; sha256 = "0awmzz9cfr17ggpzsgxqqhz5946l7705vvkfaiz7qx9wg0pbch18"; }; recipeFile = fetchurl { @@ -70538,7 +70567,7 @@ pname = "usage-memo"; version = "20110722.851"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/usage-memo.el"; + url = "https://www.emacswiki.org/emacs/download/usage-memo.el?revision=12"; sha256 = "00g1zj5fjykdi6gh2wkswpwx132xa6jmwfnrgfg5r96zwb8pib4i"; }; recipeFile = fetchurl { @@ -70601,8 +70630,8 @@ src = fetchFromGitHub { owner = "diml"; repo = "utop"; - rev = "d9f198899bba90bb5b38271046fde9c1af24830d"; - sha256 = "1wj7m5f6kgh6m8sl0j6wlfaz01i960lxyam2mk1nxhf7nl6zp7bk"; + rev = "6759d18811e5ad12fb9e609f55da4a27b80f0133"; + sha256 = "0ai77jc7ys4s8aqaks69i7sj1s2ig9chlm2b6lb0czhwrxjkzhr1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30489fe52b4031184e54f994770aa3291257bc9d/recipes/utop"; @@ -71480,7 +71509,7 @@ pname = "vline"; version = "20120108.445"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/vline.el"; + url = "https://www.emacswiki.org/emacs/download/vline.el?revision=17"; sha256 = "1ys6928fgk8mswa4gv10cxggir8acck27g78cw1z3pdz5gakbgnj"; }; recipeFile = fetchurl { @@ -71646,7 +71675,7 @@ pname = "w32browser-dlgopen"; version = "20170309.1433"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/w32browser-dlgopen.el"; + url = "https://www.emacswiki.org/emacs/download/w32browser-dlgopen.el?revision=25"; sha256 = "1fkkrqwhkg58jjjsjf0fzwabaaxarjylp22zng1id6hqfsm7r1cd"; }; recipeFile = fetchurl { @@ -71786,12 +71815,12 @@ wandbox = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, request, s }: melpaBuild { pname = "wandbox"; - version = "20170324.1014"; + version = "20170425.1502"; src = fetchFromGitHub { owner = "kosh04"; repo = "emacs-wandbox"; - rev = "4e52c14aca11de4686d4f1de98588cb5cf42d815"; - sha256 = "1c9wvnc8nqizh5sw424hznnqymfcyqdgdj8gzwfy5i04mi7mic4p"; + rev = "c82a71e880cb701281dd96a9772bdad37a6eacf2"; + sha256 = "0hdpy4rf0406615mx5w235dkz71v24qmr2ci5rlqmfv53si0gynj"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/wandbox"; @@ -72038,12 +72067,12 @@ web-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "web-mode"; - version = "20170419.132"; + version = "20170430.1025"; src = fetchFromGitHub { owner = "fxbois"; repo = "web-mode"; - rev = "a2e274403a1813dcace73759cb56acbe81deeace"; - sha256 = "0bk6pkbg37kdbmg6lrbyklfd19xfy8mz5ir0cfw8z64qx9dzyi3z"; + rev = "21fd91db6d5549e5b399ed2e2fab4443fea6a377"; + sha256 = "047wr5v1d98bdavg8x7cn3009g4g2r6xd4y8waax2a644zhs9rj5"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6f0565555eaa356141422c5175d6cca4e9eb5c00/recipes/web-mode"; @@ -72140,22 +72169,22 @@ license = lib.licenses.free; }; }) {}; - webpaste = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, request }: + webpaste = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, json ? null, lib, melpaBuild, request }: melpaBuild { pname = "webpaste"; - version = "20170423.22"; + version = "20170429.632"; src = fetchFromGitHub { owner = "etu"; repo = "webpaste.el"; - rev = "69f94520035282c3eb838e6f240a6db93e54b99c"; - sha256 = "0qxcx2pns77s4mgr1cfzvlhxmfvzckx52phq63b2wmxkijkbwpba"; + rev = "b3bcde185857371b083f294c15f4dc773be64d36"; + sha256 = "1j80f8l01bwxxcg0gn6ms3dyc3irg4wwxvchj6cqfgb6zbb23f33"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/13847d91c1780783e516943adee8a3530c757e17/recipes/webpaste"; sha256 = "1pqqapslb5wxfrf1ykrj5jxcl43pix17lawgdqrqkv5fyxbhmfpm"; name = "webpaste"; }; - packageRequires = [ cl-lib emacs request ]; + packageRequires = [ cl-lib emacs json request ]; meta = { homepage = "https://melpa.org/#/webpaste"; license = lib.licenses.free; @@ -72395,12 +72424,12 @@ which-key = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "which-key"; - version = "20170418.501"; + version = "20170501.544"; src = fetchFromGitHub { owner = "justbur"; repo = "emacs-which-key"; - rev = "2e855196c78420b76f6f6cb92822255669599d7e"; - sha256 = "1hgdanmifn97i4n73q2nv7s2g0kidrv9hf4bysb08rmn38w26ny3"; + rev = "9d2ba1bcba289fb81f92b797022b238c6b21f82e"; + sha256 = "01hfp4arbzfklhrmv0va7h8g8ykzgr52qqp2kgn8cim937wdwy6w"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/315865a3df97c0694f648633d44b8b34df1ac76d/recipes/which-key"; @@ -72687,7 +72716,7 @@ pname = "wimpy-del"; version = "20170309.1436"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/wimpy-del.el"; + url = "https://www.emacswiki.org/emacs/download/wimpy-del.el?revision=26"; sha256 = "0impy9kp1xnhs0834azzndx93p8q53dxdqd9hz0n1mg0h8331c13"; }; recipeFile = fetchurl { @@ -72953,12 +72982,12 @@ winum = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "winum"; - version = "20170418.631"; + version = "20170430.1629"; src = fetchFromGitHub { owner = "deb0ch"; repo = "emacs-winum"; - rev = "8e886302c7e1d8fd521a95e0f00d6efab295a883"; - sha256 = "19rf806v3yv6qy6p8mf54g1whdrh7vc107z31kqaqdwq681fhi37"; + rev = "e950370d82cbb90ba291fc1c32de5d6f35068932"; + sha256 = "1p4b9gdrifjndk0irv735f8spy541x78chibdnr1i3qil2ib8xms"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c1caa7a54a910a44322fdee300e8cce6ddcde071/recipes/winum"; @@ -72977,8 +73006,8 @@ version = "20160419.1232"; src = fetchhg { url = "https://bitbucket.com/ArneBab/wisp"; - rev = "626eaec86a97"; - sha256 = "13hcp52krlb0vw3wxvw9mdcm7qxr80p2rs52zkkzrc73qvzxvwn3"; + rev = "f94ec5fed665"; + sha256 = "0k66dxxc8k2snzmw385a78xqfgbpjzsfg3jm0gk5wqyn185ab50n"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode"; @@ -73204,12 +73233,12 @@ worf = callPackage ({ ace-link, fetchFromGitHub, fetchurl, hydra, lib, melpaBuild, swiper, zoutline }: melpaBuild { pname = "worf"; - version = "20170422.416"; + version = "20170427.8"; src = fetchFromGitHub { owner = "abo-abo"; repo = "worf"; - rev = "015d2fd00a112215d370ae6d11c44f4702e2239f"; - sha256 = "0afxqgiw3p2y3lhgny8j25fqkf0im9qqdz9fsjgddhrmq0gkllhc"; + rev = "8b0de0d0896aa82a31d13972baf15de56ca5516e"; + sha256 = "14jk3sinxrb2685y5dslrik10cwjwjc76pgwj3w47h4s6ykarwn8"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f00f8765e35c21dd1a4b5c01c239ed4d15170ab7/recipes/worf"; @@ -73355,8 +73384,8 @@ src = fetchFromGitHub { owner = "joostkremers"; repo = "writeroom-mode"; - rev = "071ebbecf6bc9dc40c5d1a120a9aa3d27ddaa81b"; - sha256 = "1w4bhp9b3jm6gqj4lvxbljr2xw05xldsxb8xaddj3ac82afq7kh5"; + rev = "da6dced4fcceef5eb5f48b4e835fc46e4a8e4f47"; + sha256 = "15pvsqqx4nxgsximb7y4mp7w56bplp2b2gfbl4aldlbc73ga1x45"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4e39cd8e8b4f61c04fa967def6a653bb22f45f5b/recipes/writeroom-mode"; @@ -73603,12 +73632,12 @@ xah-fly-keys = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "xah-fly-keys"; - version = "20170415.740"; + version = "20170429.2232"; src = fetchFromGitHub { owner = "xahlee"; repo = "xah-fly-keys"; - rev = "96f697741eb4dc48afa1ab45f33cb21695c4fbb5"; - sha256 = "1dqh6dkxw3h1z72snbpn2a8fgyr9a70n3p267pjiblg7wzxvrdiz"; + rev = "775f8822018a414b993996718a1e20b77b5b106c"; + sha256 = "1v7bw4bf8ghgbqcabiv9iy9wyb99ynic95xm8zs2w8scj508yaph"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fc1683be70d1388efa3ce00adc40510e595aef2b/recipes/xah-fly-keys"; @@ -74381,7 +74410,7 @@ pname = "yaoddmuse"; version = "20170325.1752"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/yaoddmuse.el"; + url = "https://www.emacswiki.org/emacs/download/yaoddmuse.el?revision=104"; sha256 = "0vlllq3xmnlni0ws226pqxj68nshclbl5rgqv6y11i3yvzgiazr6"; }; recipeFile = fetchurl { @@ -74606,12 +74635,12 @@ ycmd = callPackage ({ cl-lib ? null, dash, deferred, emacs, fetchFromGitHub, fetchurl, let-alist, lib, melpaBuild, pkg-info, request, request-deferred, s }: melpaBuild { pname = "ycmd"; - version = "20170424.1519"; + version = "20170429.549"; src = fetchFromGitHub { owner = "abingham"; repo = "emacs-ycmd"; - rev = "21ada9ffbf5f921c87837796ea0b542d6d447d56"; - sha256 = "1pzc4fvrm2yfrrnfjhnnial2vj4iavr6vfnw6q2i4hz95h5b9mih"; + rev = "5c32c5b2454dd1ff31fb4c15704cd970b73574b2"; + sha256 = "0wr1hjgrrwbz97k05kcj6snn3bw8ra6k61wvahl4kiqvsf0ywss9"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4b25378540c64d0214797348579671bf2b8cc696/recipes/ycmd"; @@ -74742,12 +74771,12 @@ zeal-at-point = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "zeal-at-point"; - version = "20161114.1811"; + version = "20170427.2042"; src = fetchFromGitHub { owner = "jinzhu"; repo = "zeal-at-point"; - rev = "bc71e4ecb154e140fa688add55d26d01b5a52dea"; - sha256 = "15ymggp3j7bxwp5q4ng8g2hnym8psgjyvx5baxh4d0yc54jiq1gx"; + rev = "50a1bd4240ff0db7c8f2046c3b00c5a8e14b9d2f"; + sha256 = "1xy9nbbk0fkd9dm8n0c0gy52vi34s6vgzbnab0hrghn6whs89ig8"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4bcb472b6b18b75acd9c68e1fc7ecce4c2a40d8f/recipes/zeal-at-point"; @@ -74804,12 +74833,12 @@ zenburn-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "zenburn-theme"; - version = "20170306.2250"; + version = "20170430.758"; src = fetchFromGitHub { owner = "bbatsov"; repo = "zenburn-emacs"; - rev = "f031c785b469cf4356fddb997eccf60399e34235"; - sha256 = "029955wp29wdrk1ddmhxixd76vhkp2li3mjaknw9d8iqz819vshc"; + rev = "a035b214d6862289f8e0b1bf9fc737222da6b4a3"; + sha256 = "0wkcgm9n56ws8frw7zsdhvibzr5xmzg4in8bbfw3rr8na9ggvhh3"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/zenburn-theme"; @@ -74891,8 +74920,8 @@ src = fetchFromGitHub { owner = "AndreaOrru"; repo = "zig-mode"; - rev = "1d2639072736283b6112a7f7cf30da7897b27c3e"; - sha256 = "04s529jsjjb5bann99asspb3wcip7ww2d7niylkza9z6rfcyaj2g"; + rev = "9a252ebd4ccd8a30abef3d9ed0ecb510e3d88844"; + sha256 = "07ar5lijj3y62ynx1fj9qxabf0h82laxzyb60f6cgxpzgxfpn1b8"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/64d12e362a2490e85c8e7a66a5ed1ebff9ce95a6/recipes/zig-mode"; @@ -75077,7 +75106,7 @@ pname = "zones"; version = "20170309.1440"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/zones.el"; + url = "https://www.emacswiki.org/emacs/download/zones.el?revision=28"; sha256 = "1mgfv9q4mwng0cqni13kmsridbfqsw66z5cgynlrvagga6v94bq0"; }; recipeFile = fetchurl { @@ -75117,7 +75146,7 @@ pname = "zoom-frm"; version = "20170309.1439"; src = fetchurl { - url = "https://www.emacswiki.org/emacs/download/zoom-frm.el"; + url = "https://www.emacswiki.org/emacs/download/zoom-frm.el?revision=44"; sha256 = "03f3clivm7nfgg16k9pcshdwbwmjaqk0lcdm9d0180dl1c1z2wvs"; }; recipeFile = fetchurl { @@ -75263,8 +75292,8 @@ version = "20170420.2233"; src = fetchhg { url = "https://bitbucket.com/zck/zpresent.el"; - rev = "085e342c3b84"; - sha256 = "1pmq15xrh2787cwj7ckn03rparknyf7qwrskmy2f8n9dqlfw7pnq"; + rev = "ad268aa11cd6"; + sha256 = "086byrfwpypvljjb78x6a48bl3haa5d0zm0qf1cm313y7lb6wpvs"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3aae38ad54490fa650c832fb7d22e2c73b0fb060/recipes/zpresent"; diff --git a/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix b/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix index df1fa4a3340..8f3dd9a313b 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix @@ -1157,12 +1157,12 @@ all-the-icons = callPackage ({ emacs, fetchFromGitHub, fetchurl, font-lock-plus, lib, melpaBuild }: melpaBuild { pname = "all-the-icons"; - version = "2.5.0"; + version = "2.5.2"; src = fetchFromGitHub { owner = "domtronn"; repo = "all-the-icons.el"; - rev = "2169d831731d206902114de3fc1b075b9e6b4ed4"; - sha256 = "125qw96rzbkv39skxk5511jrcx9hxm0fqcmny6213wzswgdn37z3"; + rev = "0ed04c0cdf10ce43a01323ac97f129520de09a7e"; + sha256 = "0h7h0rbd34g5yrm4f1bpdwkw3yrj2w75jzgh2blrdhbs29sxdv1s"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/604c01aa15927bd122260529ff0f4bb6a8168b7e/recipes/all-the-icons"; @@ -4626,12 +4626,12 @@ company-ansible = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "company-ansible"; - version = "0.5.0"; + version = "0.6.0"; src = fetchFromGitHub { owner = "krzysztof-magosa"; repo = "company-ansible"; - rev = "f08c19e95e67c852512c30b6825dae3dbd3005a0"; - sha256 = "0qypfla1j7c34syphh21nyswr363v6vwi87614wx9d1rz5v4h24n"; + rev = "2c30c3bdb8316b27d5c1832b944cb146d00de456"; + sha256 = "183hyy5vy7xs6hwsk8nrylck8w5czcqwzfx0wik4ppx8011jzis1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7b44cd4bd9f9a7c942ca3f3bd88b2ce61ffff130/recipes/company-ansible"; @@ -5241,12 +5241,12 @@ conda = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, pythonic, s }: melpaBuild { pname = "conda"; - version = "0.0.6"; + version = "0.0.7"; src = fetchFromGitHub { owner = "necaris"; repo = "conda.el"; - rev = "5a13e7deda80adb40553f1c256531d040a4c99a1"; - sha256 = "011z47hkynss8a56c2fi702laqxicmwai6anald58436pdxi3y6y"; + rev = "6ba9ef5d72ef613f478e07e2ebf57b47066beee7"; + sha256 = "0mp6jzyvz3m41vb4kwwikyvcjgc8qgryyx71n1m50jr2i23s9nk2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fcf762e34837975f5440a1d81a7f09699778123e/recipes/conda"; @@ -6730,12 +6730,12 @@ direnv = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, with-editor }: melpaBuild { pname = "direnv"; - version = "1.1.0"; + version = "1.2.0"; src = fetchFromGitHub { owner = "wbolster"; repo = "emacs-direnv"; - rev = "cc8fbcc9c71f120c45c3363ed6ad202352e9a6d5"; - sha256 = "03m4c2x7d7hmsgx3ma4z0ra5y6s7fyfsxmzwz618pfa94nbx3qny"; + rev = "2cdf87ea96f9a08dee98762b18b5f8a5198ecf63"; + sha256 = "172jyl8v4zy9bbha8nndq63x8svn9xqkafkj3q17z289na8iaylh"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5419809ee62b920463e359c8e1314cd0763657c1/recipes/direnv"; @@ -7265,8 +7265,8 @@ version = "0.7"; src = fetchhg { url = "https://bitbucket.com/harsman/dyalog-mode"; - rev = "6cc0b8488a17"; - sha256 = "03x94q315yq5kg2wvsp508a9hxl625iji3b84kywmg5hb3w5r9qn"; + rev = "2c70af4813fc"; + sha256 = "0brhk5q0jdb3p9nlsfk2bjixqymy4lmrqha138idpx47ka7cjsvn"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/dyalog-mode"; @@ -7450,12 +7450,12 @@ easy-hugo = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "easy-hugo"; - version = "0.5.5"; + version = "0.6.6"; src = fetchFromGitHub { owner = "masasam"; repo = "emacs-easy-hugo"; - rev = "65fe2afeb240ff16b6fa0e580e3b03342b388e28"; - sha256 = "0sv4m44zbil54mppqybq5978f3dnn0smjpkl3qw7d4sfh4dwf779"; + rev = "5ea62c254c61fcad89d1620ce40b6fda65586d65"; + sha256 = "0p961msrkqxc99rkjdy79x1pdns4dfbvdmv8yl0zi4ib3b07qar1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/easy-hugo"; @@ -8477,12 +8477,12 @@ elpy = callPackage ({ company, fetchFromGitHub, fetchurl, find-file-in-project, highlight-indentation, lib, melpaBuild, pyvenv, s, yasnippet }: melpaBuild { pname = "elpy"; - version = "1.14.1"; + version = "1.15.0"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "elpy"; - rev = "9afc370f7044d4e5c5a47e7080b43468ff2a4e28"; - sha256 = "1ynranqi0lv9nhap4ydqns3znpqpc0q69qyb22i93pkd505ryyf8"; + rev = "574605dce756e878457164817e6d63d915008a84"; + sha256 = "1q8ll1sxdvxgd6mqwz55bv2zwxgz2rqlzyk2xksnh9sna4bhr6xv"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy"; @@ -10786,12 +10786,12 @@ exwm-x = callPackage ({ cl-lib ? null, exwm, fetchFromGitHub, fetchurl, lib, melpaBuild, swiper, switch-window }: melpaBuild { pname = "exwm-x"; - version = "0.6"; + version = "0.7.1"; src = fetchFromGitHub { owner = "tumashu"; repo = "exwm-x"; - rev = "87715a6891b31bc19954ea9fe1c1a9bf57bdbbce"; - sha256 = "0x9gg3fy5xw3vf8gyfa5j5k08gnnfpsyjh4dk80sbbnf0z7cwycw"; + rev = "503051b19858ede766c4987f65e7c375d0200e3b"; + sha256 = "0m0fhi5pxq43kyl4shqz199x6mnwyxjk62z338vlmd6g8izlg5j7"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a0e6e23bcffdcd1e17c70599c563609050e5de40/recipes/exwm-x"; @@ -13400,22 +13400,22 @@ license = lib.licenses.free; }; }) {}; - ghub = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: + ghub = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "ghub"; - version = "1.1.0"; + version = "1.2.0"; src = fetchFromGitHub { owner = "tarsius"; repo = "ghub"; - rev = "018aa524e12141b0d5a121ffcbde6d66d3f7aa4d"; - sha256 = "0phskyb48bvmmrrjcd8n7w2cnwyhfq6i3cfl71l8ypxb4pdibz0l"; + rev = "da60fa2316bf829cab18676afd5a43088ac06b60"; + sha256 = "0aj0ayh4jvpxwqss5805qnklqbp9krzbh689syyz65ja6r0r2bgs"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9375cbae3ffe5bf4ba5606358860050f3005d9b7/recipes/ghub"; sha256 = "01kzziqv5y798rps52w45kkdcn0shhb6mrina2iawab4rlvlmnd8"; name = "ghub"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/ghub"; license = lib.licenses.free; @@ -16456,12 +16456,12 @@ helm-org-rifle = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, helm, lib, melpaBuild, s }: melpaBuild { pname = "helm-org-rifle"; - version = "1.4.0"; + version = "1.4.1"; src = fetchFromGitHub { owner = "alphapapa"; repo = "helm-org-rifle"; - rev = "6d467b82d8c7584b7ab839bbaaac701af393209b"; - sha256 = "1mmwms4s52537sq17zhm8sakyq1mkf4nqcxgydsg4zlmvzzxpz8l"; + rev = "93df6808dda8f50da4f435c47763733703905119"; + sha256 = "1zyl8x03n9n9sc7bys2nqdmzadl5qrwi01qn1gy48jrkfhgiva6g"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f39cc94dde5aaf0d6cfea5c98dd52cdb0bcb1615/recipes/helm-org-rifle"; @@ -21556,12 +21556,12 @@ mastodon = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "mastodon"; - version = "0.6.0"; + version = "0.6.2"; src = fetchFromGitHub { owner = "jdenen"; repo = "mastodon.el"; - rev = "9b9e0bb7c4d414ffc26a0547d1e76cd106cc58b6"; - sha256 = "1cjx022zrn7jbcq1x7x61xayhlpik2bm6vs37hh382ad7bnqgcyb"; + rev = "ac10d7a647aa77aa933076a523a48ec0a283dd15"; + sha256 = "1cy11qlms6499vjphnx5yxpknvs1a90q67ibrijhwyhsy9gi798l"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/809d963b69b154325faaf61e54ca87b94c1c9a90/recipes/mastodon"; @@ -21745,12 +21745,12 @@ meghanada = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, yasnippet }: melpaBuild { pname = "meghanada"; - version = "0.7.4"; + version = "0.7.5"; src = fetchFromGitHub { owner = "mopemope"; repo = "meghanada-emacs"; - rev = "9c97a5c23b016cd9dec3c22f626f2ec22c5035c1"; - sha256 = "1nx84c7akgjrbql9jjb4gj3j09iai8k3g3wrwam61fblqm5ckhny"; + rev = "54be7c38ceeb7de4bd926a577f9920e174534b37"; + sha256 = "0apqxpkngyygfdj1wnqs5fl87bfbb4m5vis9cv8q3fcq92yhjqa1"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4c75c69b2f00be9a93144f632738272c1e375785/recipes/meghanada"; @@ -21826,6 +21826,27 @@ license = lib.licenses.free; }; }) {}; + meta-presenter = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: + melpaBuild { + pname = "meta-presenter"; + version = "1.0.0"; + src = fetchFromGitHub { + owner = "myTerminal"; + repo = "meta-presenter"; + rev = "7ba8d30e36ce6de6e563c7f3a41a24d288787c48"; + sha256 = "0m23qsbai8j0bx0px7v3ipw92i4y8maxibna6zqrw3msv1j3s7cw"; + }; + recipeFile = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/b73e9424515b3ddea220b786e91c57ee22bed87f/recipes/meta-presenter"; + sha256 = "0f70cfa91wavchlx8d9hdlgq90cmnylhbg2dbw603rzjkyvslp5d"; + name = "meta-presenter"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/meta-presenter"; + license = lib.licenses.free; + }; + }) {}; metafmt = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "metafmt"; @@ -22626,12 +22647,12 @@ mu4e-alert = callPackage ({ alert, emacs, fetchFromGitHub, fetchurl, ht, lib, melpaBuild, s }: melpaBuild { pname = "mu4e-alert"; - version = "0.4"; + version = "1.0"; src = fetchFromGitHub { owner = "iqbalansari"; repo = "mu4e-alert"; - rev = "75ee79ed663bde0bd52f09c5b444cbd9e13a738a"; - sha256 = "09sywhf1g8yqadzp19djar2gm3fmilqi3pbdm0hvm9b7xpq1gg44"; + rev = "3453e25ff6c07c1b768b2a79fdb9fc5c97100e76"; + sha256 = "1nvsfbfsma59ilf7c3vjngnmx3aapwvvvaafdy5szm5r6lkicqvg"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/mu4e-alert"; @@ -22854,6 +22875,27 @@ license = lib.licenses.free; }; }) {}; + myterminal-controls = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: + melpaBuild { + pname = "myterminal-controls"; + version = "1.0.0"; + src = fetchFromGitHub { + owner = "myTerminal"; + repo = "myterminal-controls"; + rev = "59ff3a02e34969a2ac608906937cb65cb514f9f1"; + sha256 = "11b0m09n1qqhjbdmcilb1g1408k17700qn37m3wavjrcjvdhnd5n"; + }; + recipeFile = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/4a82a45d9fcafea0795f832bce1bdd7bc83667e2/recipes/myterminal-controls"; + sha256 = "0ipk5s2whf3l68q0dydm1j6rcb6jhk61hgjwxygdphifvih7c5y2"; + name = "myterminal-controls"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/myterminal-controls"; + license = lib.licenses.free; + }; + }) {}; name-this-color = callPackage ({ cl-lib ? null, dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "name-this-color"; @@ -23214,12 +23256,12 @@ nix-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "nix-mode"; - version = "1.11.8"; + version = "1.11.9"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; - rev = "206b61b07405229979ed9a1518da1560930d05ee"; - sha256 = "1qlddlzkpavhsrb7h3cyqhif5qc2qhkhjwnv4pbzg9hamqbd45wc"; + rev = "5d59ec86d4cf07a705407a9e538869dd25ec7d9d"; + sha256 = "0ankhmx4raaims2q0q1yffq5z6hqil01zpj6vynrqi1n7z4rjr90"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f2b542189cfde5b9b1ebee4625684949b6704ded/recipes/nix-mode"; @@ -23256,12 +23298,12 @@ no-littering = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "no-littering"; - version = "0.5.6"; + version = "0.5.7"; src = fetchFromGitHub { owner = "tarsius"; repo = "no-littering"; - rev = "0227c5eea5b9f3fb056a7ef6052ef6f076371bde"; - sha256 = "0hjb2paylmcc68998cqgfdnw79z43ha5bv1cg91ysbdjcx2lp1x7"; + rev = "e041942cb0f4f02d00cf30afb956208496562ba4"; + sha256 = "00d6fz5kg2k6py5mj2h9rzbqa4gkiv02h9ba55psfgbnmak6ip0v"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cf5d2152c91b7c5c38181b551db3287981657ce3/recipes/no-littering"; @@ -23882,12 +23924,12 @@ omni-quotes = callPackage ({ dash, f, fetchFromGitHub, fetchurl, ht, lib, melpaBuild, omni-log, s }: melpaBuild { pname = "omni-quotes"; - version = "0.4.22"; + version = "0.5.0"; src = fetchFromGitHub { owner = "AdrieanKhisbe"; repo = "omni-quotes.el"; - rev = "a10eca089dd87389c99f5c5ef8e3f8779f2652d2"; - sha256 = "0i2xnpa6jickpp2i47c5l7c6djxz2lli8lcx402sijzmn1lx44sj"; + rev = "454116c1dd6581baaeefd6b9310b1b6b7a5c36d0"; + sha256 = "1h8lrpi5wizi5vncdz83cxlx7c71xw3sw89sfg462zfbz2sq8afl"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3402524f79381c99fdeb81a6a5a9241c918811be/recipes/omni-quotes"; @@ -25872,12 +25914,12 @@ parinfer = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "parinfer"; - version = "0.4.9"; + version = "0.4.10"; src = fetchFromGitHub { owner = "DogLooksGood"; repo = "parinfer-mode"; - rev = "c67686b24cf14064931d812f29f4114b30696d12"; - sha256 = "0lpj81hkzw24v1f3s13rw22sm1nm0i177di5v2b8kwy50pjirs8v"; + rev = "5b3b247d68eeaf7404598cbcbf2158e07f16e65d"; + sha256 = "0v97ncb0w1slb0x8861l3yr1kqz6fgw1fwl1z9lz6hh8p2ih34sk"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/470ab2b5cceef23692523b4668b15a0775a0a5ba/recipes/parinfer"; @@ -27505,12 +27547,12 @@ protobuf-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: melpaBuild { pname = "protobuf-mode"; - version = "3.3.0pre1"; + version = "3.3.0"; src = fetchFromGitHub { owner = "google"; repo = "protobuf"; - rev = "fba2acd72e8cbf138912295df227ee2c914158c3"; - sha256 = "1862lp6br6ngfd13gz8m1x2glkz02qxbp6vj261ricbvc7fgkyd7"; + rev = "a6189acd18b00611c1dc7042299ad75486f08a1a"; + sha256 = "1258yz9flyyaswh3izv227kwnhwcxn4nwavdz9iznqmh24qmi59w"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b4e7f5f641251e17add561991d3bcf1fde23467b/recipes/protobuf-mode"; @@ -30926,12 +30968,12 @@ snakemake-mode = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, magit-popup, melpaBuild }: melpaBuild { pname = "snakemake-mode"; - version = "1.2.0"; + version = "1.2.1"; src = fetchFromGitHub { owner = "kyleam"; repo = "snakemake-mode"; - rev = "15803162483e635f3e22b2efea33ccad725e0535"; - sha256 = "1nc8xp22i57kf89x0qh69dspl9hl710m01gdr35ph5gl8ycmyir5"; + rev = "22b3efd741e26f59e18c9fd28691d8b84c9130ab"; + sha256 = "0hjp5ci7miggw0gs2y8q867gi7p3dq2yyfkckkh52isrp0yvz0wf"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3a5b51fee1c9e6ce7e21555faa355d118d34b8d/recipes/snakemake-mode"; @@ -31178,12 +31220,12 @@ spaceline-all-the-icons = callPackage ({ all-the-icons, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, spaceline }: melpaBuild { pname = "spaceline-all-the-icons"; - version = "1.0.5"; + version = "1.0.7"; src = fetchFromGitHub { owner = "domtronn"; repo = "spaceline-all-the-icons.el"; - rev = "be53e5bde0e855c012bc99602830984a7008604a"; - sha256 = "19xwy2dqlp585vi2ihr85rhf609lc57l133gc3bcz09aii24lfkb"; + rev = "8915d284fc0b5fb83c9d6300750a40ef4ac05eae"; + sha256 = "0fhni6lxs6pa8hgq16mapsxbyiqd74x9d0hhml77lanwgyy3fxnk"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d039e057c1d441592da8f54e6d524b395b030375/recipes/spaceline-all-the-icons"; @@ -34182,12 +34224,12 @@ wandbox = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, request, s }: melpaBuild { pname = "wandbox"; - version = "0.6.2"; + version = "0.6.3"; src = fetchFromGitHub { owner = "kosh04"; repo = "emacs-wandbox"; - rev = "4e52c14aca11de4686d4f1de98588cb5cf42d815"; - sha256 = "1c9wvnc8nqizh5sw424hznnqymfcyqdgdj8gzwfy5i04mi7mic4p"; + rev = "c82a71e880cb701281dd96a9772bdad37a6eacf2"; + sha256 = "0hdpy4rf0406615mx5w235dkz71v24qmr2ci5rlqmfv53si0gynj"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/wandbox"; @@ -34368,22 +34410,22 @@ license = lib.licenses.free; }; }) {}; - webpaste = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, request }: + webpaste = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, json ? null, lib, melpaBuild, request }: melpaBuild { pname = "webpaste"; - version = "1.2.1"; + version = "1.2.2"; src = fetchFromGitHub { owner = "etu"; repo = "webpaste.el"; - rev = "69f94520035282c3eb838e6f240a6db93e54b99c"; - sha256 = "0qxcx2pns77s4mgr1cfzvlhxmfvzckx52phq63b2wmxkijkbwpba"; + rev = "72ba31e5acb424cc3f87fb9c05233729722ef98e"; + sha256 = "07bc62ymhx2kvnqi433w2nwnhqz18x6wdp1l1jqhljbr5xk39pn2"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/13847d91c1780783e516943adee8a3530c757e17/recipes/webpaste"; sha256 = "1pqqapslb5wxfrf1ykrj5jxcl43pix17lawgdqrqkv5fyxbhmfpm"; name = "webpaste"; }; - packageRequires = [ cl-lib emacs request ]; + packageRequires = [ cl-lib emacs json request ]; meta = { homepage = "https://melpa.org/#/webpaste"; license = lib.licenses.free; @@ -34815,8 +34857,8 @@ version = "0.9.1"; src = fetchhg { url = "https://bitbucket.com/ArneBab/wisp"; - rev = "626eaec86a97"; - sha256 = "13hcp52krlb0vw3wxvw9mdcm7qxr80p2rs52zkkzrc73qvzxvwn3"; + rev = "f94ec5fed665"; + sha256 = "0k66dxxc8k2snzmw385a78xqfgbpjzsfg3jm0gk5wqyn185ab50n"; }; recipeFile = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode"; diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix index 26b4d3833f3..13af20d5f45 100644 --- a/pkgs/applications/editors/jetbrains/default.nix +++ b/pkgs/applications/editors/jetbrains/default.nix @@ -185,12 +185,12 @@ in clion = buildClion rec { name = "clion-${version}"; - version = "2017.1"; + version = "2017.1.1"; description = "C/C++ IDE. New. Intelligent. Cross-platform"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz"; - sha256 = "00fc023ca56f2781864cddc7bd5c2897d837d1db17dd8f987abe046ed4df3ca5"; + sha256 = "1bh92gakxqrg65rfhg8984ca338ff0y17kdjkpr6rbh1i39npgcs"; }; wmClass = "jetbrains-clion"; }; diff --git a/pkgs/applications/graphics/displaycal/default.nix b/pkgs/applications/graphics/displaycal/default.nix new file mode 100644 index 00000000000..80d2b290367 --- /dev/null +++ b/pkgs/applications/graphics/displaycal/default.nix @@ -0,0 +1,57 @@ +{buildPythonPackage, stdenv, fetchurl, pkgconfig + , libXext, libXxf86vm, libX11, libXrandr, libXinerama + , argyllcms, wxPython, numpy + }: +buildPythonPackage { + name = "displaycal-3.2.4.0"; + + enableParallelBuilding = true; + + src = fetchurl { + url = mirror://sourceforge/project/dispcalgui/release/3.2.4.0/DisplayCAL-3.2.4.0.tar.gz; + sha256 = "0swkhv338d1kmfxyf30zzdjs5xpbha40pg2zysiipcbasc0xhlb8"; + }; + + propagatedBuildInputs = [ + libXext + libXxf86vm + libX11 + libXrandr + libXinerama + argyllcms + wxPython + numpy + ]; + + nativeBuildInputs = [ + pkgconfig + ]; + + preConfigure = '' + mkdir dist + cp {misc,dist}/DisplayCAL.appdata.xml + mkdir -p $out + ln -s $out/share/DisplayCAL $out/Resources + ''; + + # no idea why it looks there - symlink .json lang (everything) + postInstall = '' + for x in $out/share/DisplayCAL/*; do + ln -s $x $out/lib/python2.7/site-packages/DisplayCAL + done + + for prog in "$out/bin/"*; do + wrapProgram "$prog" \ + --prefix PYTHONPATH : "$PYTHONPATH" \ + --prefix PATH : ${argyllcms}/bin + done + ''; + + meta = { + description = "Display Calibration and Characterization powered by Argyll CMS"; + homepage = http://displaycal.net/; + license = stdenv.lib.licenses.gpl3; + maintainers = [stdenv.lib.maintainers.marcweber]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/applications/graphics/ocrad/default.nix b/pkgs/applications/graphics/ocrad/default.nix index 3ec25b503eb..ac67759c258 100644 --- a/pkgs/applications/graphics/ocrad/default.nix +++ b/pkgs/applications/graphics/ocrad/default.nix @@ -1,11 +1,11 @@ { fetchurl, stdenv, lzip, texinfo }: stdenv.mkDerivation rec { - name = "ocrad-0.25"; + name = "ocrad-0.26"; src = fetchurl { url = "mirror://gnu/ocrad/${name}.tar.lz"; - sha256 = "1m2dblgvvjs48rsglfdwq0ib9zk8h9n34xsh67ibrg0g0ffbw477"; + sha256 = "0g4fq7maybdnd1471kd05a3f5sb7spa3d26k706rk85sd5wd70y3"; }; buildInputs = [ lzip texinfo ]; diff --git a/pkgs/applications/misc/albert/default.nix b/pkgs/applications/misc/albert/default.nix index 4a42c55c249..80e77858a06 100644 --- a/pkgs/applications/misc/albert/default.nix +++ b/pkgs/applications/misc/albert/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "albert-${version}"; - version = "0.10.2"; + version = "0.11.1"; src = fetchFromGitHub { owner = "albertlauncher"; repo = "albert"; rev = "v${version}"; - sha256 = "0plb8c7js91bpf7qgq1snhry8x4zixyy34lq42nhsglab2kaq4ns"; + sha256 = "1ai0h3lbdac0a4xzd6pm3i0r8w0gfdnw9rdkj0szyzvm428f88s6"; }; nativeBuildInputs = [ cmake makeQtWrapper ]; @@ -19,7 +19,16 @@ stdenv.mkDerivation rec { postPatch = '' sed -i "/QStringList dirs = {/a \"$out/lib\"," \ - src/lib/albert/src/pluginsystem/extensionmanager.cpp + src/lib/albert/src/albert/extensionmanager.cpp + ''; + + preBuild = '' + mkdir -p "$out/" + ln -s "$PWD/lib" "$out/lib" + ''; + + postBuild = '' + rm "$out/lib" ''; fixupPhase = '' diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix index 8d34a126daa..fd35c5d3681 100644 --- a/pkgs/applications/misc/calibre/default.nix +++ b/pkgs/applications/misc/calibre/default.nix @@ -55,7 +55,7 @@ stdenv.mkDerivation rec { poppler_utils libpng imagemagick libjpeg fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils ] ++ (with python2Packages; [ - apsw beautifulsoup cssselect cssutils dateutil lxml mechanize netifaces pillow + apsw cssselect cssutils dateutil lxml mechanize netifaces pillow python pyqt5 sip # the following are distributed with calibre, but we use upstream instead chardet cherrypy html5lib_0_9999999 odfpy routes diff --git a/pkgs/applications/misc/deepin-terminal/default.nix b/pkgs/applications/misc/deepin-terminal/default.nix new file mode 100644 index 00000000000..e145bbe22e7 --- /dev/null +++ b/pkgs/applications/misc/deepin-terminal/default.nix @@ -0,0 +1,29 @@ +{ stdenv, unzip, fetchFromGitHub, pkgconfig, gtk3, vala, cmake, vte, gee, wnck, gettext, libsecret, json_glib }: + +stdenv.mkDerivation rec { + name = "deepin-terminal-${version}"; + version = "2.3.3"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-terminal"; + rev = version; + sha256 = "0qam34g1rannv8kvw1zbps763a9ii9vbrkxyxxdk737hlpxdzg8h"; + }; + + patchPhase = '' + substituteInPlace project_path.c --replace __FILE__ \"$out/share/deepin-terminal/\" + ''; + buildInputs = [ unzip gtk3 pkgconfig vala cmake vte gee wnck gettext libsecret json_glib ]; + + meta = { + description = "The default terminal emulation for Deepin"; + longDescription = '' + Deepin terminal, it sharpens your focus in the world of command line! + It is an advanced terminal emulator with workspace, multiple windows, remote management, quake mode and other features. + ''; + homepage = "https://github.com/linuxdeepin/deepin-terminal/"; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/applications/misc/hugo/default.nix b/pkgs/applications/misc/hugo/default.nix index e134b3d79a2..11be3d733c4 100644 --- a/pkgs/applications/misc/hugo/default.nix +++ b/pkgs/applications/misc/hugo/default.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "hugo-${version}"; - version = "0.20.5"; + version = "0.20.6"; goPackagePath = "github.com/spf13/hugo"; @@ -10,7 +10,7 @@ buildGoPackage rec { owner = "spf13"; repo = "hugo"; rev = "v${version}"; - sha256 = "0gsxsxri5jivvc862a1dapij667726vs55vjqas84lsg1066q5p2"; + sha256 = "1r8sjx7rbrjk2a3x3x6cd987xykm2j06jbnwxxsn4rs6yym0yjl8"; }; goDeps = ./deps.nix; diff --git a/pkgs/applications/misc/jekyll/Gemfile b/pkgs/applications/misc/jekyll/Gemfile index 4074421fca3..97ebb9705bd 100644 --- a/pkgs/applications/misc/jekyll/Gemfile +++ b/pkgs/applications/misc/jekyll/Gemfile @@ -1,5 +1,7 @@ source 'https://rubygems.org' gem 'jekyll' +gem 'jekyll-feed' gem 'jekyll-paginate' gem 'rdiscount' gem 'RedCloth' +gem 'minima' diff --git a/pkgs/applications/misc/jekyll/Gemfile.lock b/pkgs/applications/misc/jekyll/Gemfile.lock index c2d82181be2..da4be83382f 100644 --- a/pkgs/applications/misc/jekyll/Gemfile.lock +++ b/pkgs/applications/misc/jekyll/Gemfile.lock @@ -1,36 +1,48 @@ GEM remote: https://rubygems.org/ specs: - RedCloth (4.2.9) - colorator (0.1) - ffi (1.9.10) - jekyll (3.0.1) - colorator (~> 0.1) + RedCloth (4.3.2) + addressable (2.5.0) + public_suffix (~> 2.0, >= 2.0.2) + colorator (1.1.0) + ffi (1.9.18) + forwardable-extended (2.6.0) + jekyll (3.4.1) + addressable (~> 2.4) + colorator (~> 1.0) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 1.1) kramdown (~> 1.3) liquid (~> 3.0) mercenary (~> 0.3.3) + pathutil (~> 0.9) rouge (~> 1.7) safe_yaml (~> 1.0) - jekyll-sass-converter (1.4.0) - sass (~> 3.4) - jekyll-watch (1.3.0) - listen (~> 3.0) + jekyll-feed (0.9.1) + jekyll (~> 3.3) jekyll-paginate (1.1.0) - kramdown (1.9.0) + jekyll-sass-converter (1.5.0) + sass (~> 3.4) + jekyll-watch (1.5.0) + listen (~> 3.0, < 3.1) + kramdown (1.13.2) liquid (3.0.6) - listen (3.0.5) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - mercenary (0.3.5) - rb-fsevent (0.9.7) - rb-inotify (0.9.5) + listen (3.0.8) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + mercenary (0.3.6) + minima (2.1.0) + jekyll (~> 3.3) + pathutil (0.14.0) + forwardable-extended (~> 2.6) + public_suffix (2.0.5) + rb-fsevent (0.9.8) + rb-inotify (0.9.8) ffi (>= 0.5.0) - rdiscount (2.1.8) - rouge (1.10.1) + rdiscount (2.2.0.1) + rouge (1.11.1) safe_yaml (1.0.4) - sass (3.4.20) + sass (3.4.23) PLATFORMS ruby @@ -38,7 +50,10 @@ PLATFORMS DEPENDENCIES RedCloth jekyll + jekyll-feed + jekyll-paginate + minima rdiscount BUNDLED WITH - 1.10.6 + 1.14.4 diff --git a/pkgs/applications/misc/jekyll/default.nix b/pkgs/applications/misc/jekyll/default.nix index b06a28513b8..f3661030a2b 100644 --- a/pkgs/applications/misc/jekyll/default.nix +++ b/pkgs/applications/misc/jekyll/default.nix @@ -1,11 +1,13 @@ -{ stdenv, lib, bundlerEnv, ruby_2_2, curl }: +{ stdenv, lib, bundlerEnv, ruby }: bundlerEnv rec { name = "jekyll-${version}"; - version = "3.0.1"; - ruby = ruby_2_2; - gemdir = ./.; + version = (import gemset).jekyll.version; + inherit ruby; + gemfile = ./Gemfile; + lockfile = ./Gemfile.lock; + gemset = ./gemset.nix; meta = with lib; { description = "Simple, blog aware, static site generator"; diff --git a/pkgs/applications/misc/jekyll/gemset.nix b/pkgs/applications/misc/jekyll/gemset.nix index a5c72d09385..5b1a35209ae 100644 --- a/pkgs/applications/misc/jekyll/gemset.nix +++ b/pkgs/applications/misc/jekyll/gemset.nix @@ -1,145 +1,183 @@ { - "RedCloth" = { - version = "4.2.9"; + addressable = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "1j5r0anj8m4qlf2psnldip4b8ha2bsscv11lpdgnfh4nnchzjnxw"; type = "gem"; - sha256 = "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"; }; + version = "2.5.0"; }; - "colorator" = { - version = "0.1"; + colorator = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"; type = "gem"; - sha256 = "09zp15hyd9wlbgf1kmrf4rnry8cpvh1h9fj7afarlqcy4hrfdpvs"; }; - }; - "ffi" = { - version = "1.9.10"; - source = { - type = "gem"; - sha256 = "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"; - }; - }; - "jekyll" = { - version = "3.0.1"; - source = { - type = "gem"; - sha256 = "107svn6r7pvkg9wwfi4r44d2rqppysjf9zf09h7z1ajsy8k2s65a"; - }; - dependencies = [ - "colorator" - "jekyll-sass-converter" - "jekyll-watch" - "jekyll-paginate" - "kramdown" - "liquid" - "mercenary" - "rouge" - "safe_yaml" - ]; - }; - "jekyll-sass-converter" = { - version = "1.4.0"; - source = { - type = "gem"; - sha256 = "095757w0pg6qh3wlfg1j1mw4fsz7s89ia4zai5f2rhx9yxsvk1d8"; - }; - dependencies = [ - "sass" - ]; - }; - "jekyll-watch" = { - version = "1.3.0"; - source = { - type = "gem"; - sha256 = "1mqwvrd2hm6ah5zsxqsv2xdp31wl94pl8ybb1q324j79z8pvyarg"; - }; - dependencies = [ - "listen" - ]; - }; - "jekyll-paginate" = { version = "1.1.0"; + }; + ffi = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0"; type = "gem"; + }; + version = "1.9.18"; + }; + forwardable-extended = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"; + type = "gem"; + }; + version = "2.6.0"; + }; + jekyll = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qbnjx7bpshbcam6p9ss2g6gpd3gxz6h4w9yszphj3ip335yhawb"; + type = "gem"; + }; + version = "3.4.1"; + }; + jekyll-feed = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1dj62gy1jskkn703mi5h0bkg1psbpkdm2qqdw3bhjfid9358qvay"; + type = "gem"; + }; + version = "0.9.1"; + }; + jekyll-paginate = { + source = { sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8"; - }; - }; - "kramdown" = { - version = "1.9.0"; - source = { type = "gem"; - sha256 = "12sral2xli39mnr4b9m2sxdlgam4ni0a1mkxawc5311z107zj3p0"; }; + version = "1.1.0"; }; - "liquid" = { - version = "3.0.6"; + jekyll-sass-converter = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "01m921763yfgx1gc33k5ixqz623f4c4azgnpqhgsc2q61fyfk3q1"; type = "gem"; + }; + version = "1.5.0"; + }; + jekyll-watch = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02rg3wi95w2l0bg1igl5k6pza723vn2b2gj975gycz1cpmhdjn6z"; + type = "gem"; + }; + version = "1.5.0"; + }; + kramdown = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1isiqc40q44zg57bd6cfnw1a2l0s2j5skw2awn2cz3gcm7wsf49d"; + type = "gem"; + }; + version = "1.13.2"; + }; + liquid = { + source = { sha256 = "033png37ym4jrjz5bi7zb4ic4yxacwvnllm1xxmrnr4swgyyygc2"; - }; - }; - "listen" = { - version = "3.0.5"; - source = { type = "gem"; - sha256 = "182wd2pkf690ll19lx6zbk01a3rqkk5lwsyin6kwydl7lqxj5z3g"; }; - dependencies = [ - "rb-fsevent" - "rb-inotify" - ]; + version = "3.0.6"; }; - "mercenary" = { - version = "0.3.5"; + listen = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"; type = "gem"; - sha256 = "0ls7z086v4xl02g4ia5jhl9s76d22crgmplpmj0c383liwbqi9pb"; }; + version = "3.0.8"; }; - "rb-fsevent" = { - version = "0.9.7"; + mercenary = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"; type = "gem"; - sha256 = "1xlkflgxngwkd4nyybccgd1japrba4v3kwnp00alikj404clqx4v"; }; + version = "0.3.6"; }; - "rb-inotify" = { - version = "0.9.5"; + minima = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "1s7ks9fqfvqx7qicnkrg76wavg9mjas52f7iyhr89lz9mqiy7p39"; type = "gem"; - sha256 = "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"; }; - dependencies = [ - "ffi" - ]; + version = "2.1.0"; }; - "rdiscount" = { - version = "2.1.8"; + pathutil = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f444wx6vjd30lkkb2zn1k5a6g33lidrpyy7lmgy66n1gsiipzn7"; type = "gem"; - sha256 = "0vcyy90r6wfg0b0y5wqp3d25bdyqjbwjhkm1xy9jkz9a7j72n70v"; }; + version = "0.14.0"; }; - "rouge" = { - version = "1.10.1"; + public_suffix = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q"; type = "gem"; - sha256 = "0wp8as9ypdy18kdj9h70kny1rdfq71mr8cj2bpahr9vxjjvjasqz"; }; + version = "2.0.5"; }; - "safe_yaml" = { - version = "1.0.4"; + rb-fsevent = { source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pdiasp9zlr306yld19szapi6kdjk38rpv1hih9x0ry40x6mb63n"; type = "gem"; + }; + version = "0.9.8"; + }; + rb-inotify = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bq14f3md5nm00kgxgf0r9lcbn0vgbwljgajif0slxcwv622fjg9"; + type = "gem"; + }; + version = "0.9.8"; + }; + rdiscount = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1arvk3k06prxasq1djbj065ixar4zl171340g7wr1ww4gj9makx3"; + type = "gem"; + }; + version = "2.2.0.1"; + }; + RedCloth = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"; + type = "gem"; + }; + version = "4.3.2"; + }; + rouge = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13amckbdknnc5491ag28y8pqbyfpbzx5n4rlmadxhd3wkrhp92c8"; + type = "gem"; + }; + version = "1.11.1"; + }; + safe_yaml = { + source = { sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"; - }; - }; - "sass" = { - version = "3.4.20"; - source = { type = "gem"; - sha256 = "04rpdcp258arh2wgdk9shbqnzd6cbbbpi3wpi9a0wby8awgpxmyf"; }; + version = "1.0.4"; }; -} + sass = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0da4mn3n60cm1ss1pw1rrpa7fxagglxiwcgvz1asf1qgf4mvcwyr"; + type = "gem"; + }; + version = "3.4.23"; + }; +} \ No newline at end of file diff --git a/pkgs/applications/misc/osmctools/default.nix b/pkgs/applications/misc/osmctools/default.nix index 5a9ffc13007..e70be8201b3 100644 --- a/pkgs/applications/misc/osmctools/default.nix +++ b/pkgs/applications/misc/osmctools/default.nix @@ -37,10 +37,10 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Command line tools for transforming Open Street Map files"; - homepage = '' - http://wiki.openstreetmap.org/wiki/Osmconvert + homepage = [ + https://wiki.openstreetmap.org/wiki/Osmconvert https://wiki.openstreetmap.org/wiki/Osmfilter - ''; + ]; platforms = platforms.unix; }; } diff --git a/pkgs/applications/misc/robomongo/default.nix b/pkgs/applications/misc/robomongo/default.nix index 1516e827c5e..64f4c1aab48 100644 --- a/pkgs/applications/misc/robomongo/default.nix +++ b/pkgs/applications/misc/robomongo/default.nix @@ -1,7 +1,32 @@ { stdenv, fetchurl, zlib, glib, xorg, dbus, fontconfig, freetype, xkeyboard_config, makeDesktopItem, makeWrapper }: -let +stdenv.mkDerivation rec { + name = "robomongo-${version}"; + version = "0.9.0"; + + src = fetchurl { + url = "https://download.robomongo.org/${version}/linux/robomongo-${version}-linux-x86_64-0786489.tar.gz"; + sha256 = "1q8ahdz3afcw002p8dl2pybzkq4srk6bnikrz216yx1gswivdcad"; + }; + + icon = fetchurl { + url = "https://github.com/Studio3T/robomongo/raw/${version}/trash/install/linux/robomongo.png"; + sha256 = "15li8536x600kkfkb3h6mw7y0f2ljkv951pc45dpiw036vldibv2"; + }; + + desktopItem = makeDesktopItem { + name = "robomongo"; + exec = "robomongo"; + icon = icon; + comment = "Query GUI for mongodb"; + desktopName = "Robomongo"; + genericName = "MongoDB management tool"; + categories = "Development;IDE;mongodb;"; + }; + + nativeBuildInputs = [makeWrapper]; + ldLibraryPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc zlib @@ -18,56 +43,35 @@ let freetype ]; - icon = fetchurl { - url = "https://github.com/Studio3T/robomongo/raw/v0.9.0/trash/install/linux/robomongo.png"; - sha256 = "15li8536x600kkfkb3h6mw7y0f2ljkv951pc45dpiw036vldibv2"; + installPhase = '' + BASEDIR=$out/lib/robomongo + + mkdir -p $BASEDIR/bin + cp bin/* $BASEDIR/bin + + mkdir -p $BASEDIR/lib + cp -r lib/* $BASEDIR/lib + + mkdir -p $out/share/applications + cp $desktopItem/share/applications/* $out/share/applications + + mkdir -p $out/share/icons + cp ${icon} $out/share/icons/robomongo.png + + patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2 $BASEDIR/bin/robomongo + + mkdir $out/bin + + makeWrapper $BASEDIR/bin/robomongo $out/bin/robomongo \ + --suffix LD_LIBRARY_PATH : ${ldLibraryPath} \ + --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb + ''; + + meta = { + homepage = "https://robomongo.org/"; + description = "Query GUI for mongodb"; + platforms = stdenv.lib.intersectLists stdenv.lib.platforms.linux stdenv.lib.platforms.x86_64; + license = stdenv.lib.licenses.gpl3; + maintainers = [ stdenv.lib.maintainers.eperuffo ]; }; -in - stdenv.mkDerivation { - name = "robomongo-0.9.0"; - - src = fetchurl { - url = "https://download.robomongo.org/0.9.0/linux/robomongo-0.9.0-linux-x86_64-0786489.tar.gz"; - sha256 = "1q8ahdz3afcw002p8dl2pybzkq4srk6bnikrz216yx1gswivdcad"; - }; - - desktopItem = makeDesktopItem { - name = "robomongo"; - exec = "robomongo"; - icon = icon; - comment = "Query GUI for mongodb"; - desktopName = "Robomongo"; - genericName = "MongoDB management tool"; - categories = "Development;IDE;mongodb;"; - }; - - buildInputs = [makeWrapper]; - - installPhase = '' - mkdir -p $out/bin - cp bin/* $out/bin - - mkdir -p $out/lib - cp -r lib/* $out/lib - - mkdir -p $out/share/applications - cp $desktopItem/share/applications/* $out/share/applications - - mkdir -p $out/share/icons - cp ${icon} $out/share/icons/robomongo.png - - patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2 $out/bin/robomongo - - wrapProgram $out/bin/robomongo \ - --suffix LD_LIBRARY_PATH : ${ldLibraryPath} \ - --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb - ''; - - meta = { - homepage = "https://robomongo.org/"; - description = "Query GUI for mongodb"; - platforms = stdenv.lib.intersectLists stdenv.lib.platforms.linux stdenv.lib.platforms.x86_64; - license = stdenv.lib.licenses.gpl3; - maintainers = [ stdenv.lib.maintainers.eperuffo ]; - }; - } +} diff --git a/pkgs/applications/misc/termdown/default.nix b/pkgs/applications/misc/termdown/default.nix new file mode 100644 index 00000000000..631fc08e95e --- /dev/null +++ b/pkgs/applications/misc/termdown/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub, buildPythonApplication, +click, pyfiglet, dateutil}: + +with stdenv.lib; + +buildPythonApplication rec { + + name = "termdown-${version}"; + version = "1.11.0"; + + src = fetchFromGitHub { + rev = "d1e3504e02ad49013595112cb03fbf175822e58d"; + sha256 = "1i6fxymg52q95n0cbm4imdxh6yvpj3q57yf7w9z5d9pr35cf1iq5"; + repo = "termdown"; + owner = "trehn"; + }; + + propagatedBuildInputs = [ dateutil click pyfiglet ]; + + meta = with stdenv.lib; { + description = "Starts a countdown to or from TIMESPEC"; + longDescription = "Countdown timer and stopwatch in your terminal"; + homepage = https://github.com/trehn/termdown; + license = licenses.gpl3; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/misc/toot/default.nix b/pkgs/applications/misc/toot/default.nix new file mode 100644 index 00000000000..5a3be423cd2 --- /dev/null +++ b/pkgs/applications/misc/toot/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub, pythonPackages }: + +pythonPackages.buildPythonApplication rec { + version = "0.8.0"; + name = "toot-${version}"; + + src = fetchFromGitHub { + owner = "ihabunek"; + repo = "toot"; + rev = "${version}"; + sha256 = "1y1jz4f53njq94zab0icf7jhd4jp10ywm508l4lw6spb69wr7rdy"; + }; + + propagatedBuildInputs = with pythonPackages; + [ requests2 beautifulsoup4 future ]; + + meta = with stdenv.lib; { + description = "Mastodon CLI interface"; + homepage = "https://github.com/ihabunek/toot"; + license = licenses.mit; + maintainers = [ maintainers.matthiasbeyer ]; + }; + +} + diff --git a/pkgs/applications/networking/browsers/vivaldi/default.nix b/pkgs/applications/networking/browsers/vivaldi/default.nix index ed07225dd8d..da9f6472821 100644 --- a/pkgs/applications/networking/browsers/vivaldi/default.nix +++ b/pkgs/applications/networking/browsers/vivaldi/default.nix @@ -10,16 +10,16 @@ }: let - version = "1.8"; - build = "770.56-1"; + version = "1.9"; + build = "818.44-1"; fullVersion = "stable_${version}.${build}"; info = if stdenv.is64bit then { arch = "amd64"; - sha256 = "1f9cwr41rl0mqwg3xn2nfb5xnr0h0vc4wiz8367bd67zf4an61d2"; + sha256 = "0apkwgd98ld5k77nplzmk67nz6mb5pi8jyrnkp96m93mr41b08bq"; } else { arch = "i386"; - sha256 = "1240w3gqn5rbvkb0v1g66syrc92r1vzk82fkmvy92qsnx0d5z7nn "; + sha256 = "0xyf0z1cnzmb3pv6rgsbd7jdjf1v137priz4kkymr8jgmpq0mmfx "; }; in stdenv.mkDerivation rec { diff --git a/pkgs/applications/networking/cluster/openshift/default.nix b/pkgs/applications/networking/cluster/openshift/default.nix index 403457bb4a6..3915ab6cc26 100644 --- a/pkgs/applications/networking/cluster/openshift/default.nix +++ b/pkgs/applications/networking/cluster/openshift/default.nix @@ -1,13 +1,12 @@ -{ stdenv, fetchFromGitHub, go, which }: +{ stdenv, fetchFromGitHub, which, buildGoPackage }: let - version = "1.3.2"; + version = "1.5.0"; ver = stdenv.lib.elemAt (stdenv.lib.splitString "." version); versionMajor = ver 0; versionMinor = ver 1; versionPatch = ver 2; -in -stdenv.mkDerivation rec { +in buildGoPackage rec { name = "openshift-origin-${version}"; inherit version; @@ -15,17 +14,18 @@ stdenv.mkDerivation rec { owner = "openshift"; repo = "origin"; rev = "v${version}"; - sha256 = "0zw8zb9c6icigcq6y47ppnjnqyghk2kril07bapbddvgnvbbfp6m"; + sha256 = "0qvyxcyca3888nkgvyvqcmybm95ncwxb3zvrzbg2gz8kx6g6350v"; }; - buildInputs = [ go which ]; + buildInputs = [ which ]; + goPackagePath = null; patchPhase = '' patchShebangs ./hack ''; buildPhase = '' - export GOPATH=$(pwd) + cd go/src/origin-v${version}-src # Openshift build require this variables to be set # unless there is a .git folder which is not the case with fetchFromGitHub export OS_GIT_VERSION=${version} @@ -35,10 +35,8 @@ stdenv.mkDerivation rec { ''; installPhase = '' - export GOOS=$(go env GOOS) - export GOARCH=$(go env GOARCH) - mkdir -p "$out/bin" - mv _output/local/bin/$GOOS/$GOARCH/* "$out/bin/" + mkdir -p "$bin/bin" + cp "_output/local/bin/$(go env GOOS)/$(go env GOARCH)/"* "$bin/bin/" ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/networking/flexget/default.nix b/pkgs/applications/networking/flexget/default.nix index f7dd9618307..64afbdac1b9 100644 --- a/pkgs/applications/networking/flexget/default.nix +++ b/pkgs/applications/networking/flexget/default.nix @@ -1,31 +1,53 @@ { lib -, pythonPackages -, fetchurl +, fetchFromGitHub +, python , transmission , deluge , config }: -with pythonPackages; +with python.pkgs; -buildPythonPackage rec { - version = "1.2.337"; +buildPythonApplication rec { + version = "2.10.40"; name = "FlexGet-${version}"; - disabled = isPy3k; - src = fetchurl { - url = "mirror://pypi/F/FlexGet/${name}.tar.gz"; - sha256 = "0f7aaf0bf37860f0c5adfb0ba59ca228aa3f5c582131445623a4c3bc82d45346"; + src = fetchFromGitHub { + owner = "Flexget"; + repo = "Flexget"; + rev = version; + sha256 = "0hh21yv1lvdfi198snwjabfsdh04fnpjszpgg28wvg5pd1qq8lqv"; }; - doCheck = false; + doCheck = true; + # test_regexp requires that HOME exist, test_filesystem requires a + # unicode-capable filesystem (and setting LC_ALL doesn't work). + # setlocale: LC_ALL: cannot change locale (en_US.UTF-8) + postPatch = '' + sed -i '/def test_non_ascii/i\ import pytest\ + @pytest.mark.skip' flexget/tests/test_filesystem.py - buildInputs = [ nose ]; + substituteInPlace requirements.txt --replace "guessit<=2.0.4" "guessit" + ''; + + # Disable 3 failing tests caused by guessit upgrade + # https://github.com/Flexget/Flexget/issues/1804 + checkPhase = '' + export HOME=. + py.test --disable-pytest-warnings -k "not test_date_options and not test_ep_as_quality and not testFromGroup" + ''; + + buildInputs = [ pytest mock vcrpy pytest-catchlog boto3 ]; propagatedBuildInputs = [ - paver feedparser sqlalchemy pyyaml rpyc - beautifulsoup_4_1_3 html5lib_0_9999999 pyrss2gen pynzb progressbar jinja2 flask - cherrypy requests dateutil_2_1 jsonschema python_tvrage tmdb3 - guessit pathpy apscheduler ] + feedparser sqlalchemy pyyaml + beautifulsoup4 html5lib PyRSS2Gen pynzb + rpyc jinja2 requests2 dateutil jsonschema + pathpy guessit APScheduler + terminaltables colorclass + cherrypy flask flask-restful flask-restplus_0_8 + flask-compress flask_login flask-cors + pyparsing safe future zxcvbn-python ] + ++ lib.optional (pythonOlder "3.4") pathlib # enable deluge and transmission plugin support, if they're installed ++ lib.optional (config.deluge or false) deluge ++ lib.optional (transmission != null) transmissionrpc; @@ -34,6 +56,6 @@ buildPythonPackage rec { homepage = http://flexget.com/; description = "Multipurpose automation tool for content like torrents"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ domenkozar ]; + maintainers = with lib.maintainers; [ domenkozar tari ]; }; -} \ No newline at end of file +} diff --git a/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix b/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix index f4f4aac5efa..4f360c831a2 100644 --- a/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix +++ b/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix @@ -15,7 +15,7 @@ in buildInputs = with python27Packages; [ - python twisted urwid beautifulsoup wxPython pygobject2 + python twisted urwid wxPython pygobject2 wokkel dbus-python pyfeed wrapPython setuptools file pycrypto pyxdg ]; diff --git a/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix b/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix index 1b42957f908..51488ce9c0f 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix @@ -1,595 +1,595 @@ { - version = "52.0.1"; + version = "52.1.0"; sources = [ - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ar/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ar/thunderbird-52.1.0.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; - sha512 = "1543d3b17ac8a6a437b34df0b3d33081b86554107321716b534471c86415a80fd4cb7f35fb60be7482a7476bdc4d2c5f9fe29dbd8381ff841e1f0daf2007e8a2"; + sha512 = "3d322ea4b6a37c1b9b50439dcede0ef2fbe8109b5b4918ccfd8fad479698f951c98e57e6a4a655fbd0d27dd5de038779c717f62d6fff3da1b923d147731656c2"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ast/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ast/thunderbird-52.1.0.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; - sha512 = "b7b9543253530cb3f166d155465d320d30138542974e71cc92e5c3be6efe12014ff2db5b63372297f7cd3bf72cd1a866606f1bbb288504b6a272e7820ada1bdf"; + sha512 = "21a1609e9b71fbfa9f4bc67f866d007c9fbddd69f59362d2eb93383c2d313bffed2dd181328b3452f4cf4f45a69a1194ce141b83b542f3bc33944f5dd3378aa1"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/be/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/be/thunderbird-52.1.0.tar.bz2"; locale = "be"; arch = "linux-x86_64"; - sha512 = "f9283894e7c9bbeafb8fa6dbd2aeb1756b8d2456fe06c4278741c79171197b505d9a3d4b8e1cc3b18cf22be71555e1eded616ef0ed2648958b0d4d07f9d96654"; + sha512 = "8d8ebfd0839ad061d36cbdfa1f6805ffbb3310a32a370b9f1a67651a96ff2cb35adf8997572b69581514b8b03a9635396dbf8bfd280f6d9cc96b5954f161ec99"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/bg/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/bg/thunderbird-52.1.0.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; - sha512 = "486e2b3e149b73d3bc272546f7cc55b9d8da97d48808ca5aa0c3fc12d5bc0ea49c353f8b2c95ca398cc6938e67087f8ace8bd9bbbffe75712fe64b05994937e8"; + sha512 = "5ec47e9d65bc07c69192631a78e4f9b2dc0668786aab46e0883a3f2a43b134bb41b16de7b42063b4a8a3ea9751e65ebb153dfb5e73331df9cf29142018b371dc"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/bn-BD/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/bn-BD/thunderbird-52.1.0.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; - sha512 = "da54a9b78deb56de84623e71e60083aaa53dd8180f6d63f6ecc5133af846e5f773e63ce9131dc751178210994765a4e3daf68c582e180dd25f26d4f8e95e9646"; + sha512 = "2b5f067124ed28252858d0f801cd5457a17912b1380c292bac2734cb69db123071f534aac9c7ba715a406cdf5e7b3e05d9b76a08efa11c9f7a9a75141b546ade"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/br/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/br/thunderbird-52.1.0.tar.bz2"; locale = "br"; arch = "linux-x86_64"; - sha512 = "b647bc0aa73ca1d4deca50f70d5cb78bc95663c7c1668464c1b2d6d0e944f69ad73de28dd3868a6ac3461c5e64e74e206d508569d52ae8aa2a1da8f1164c4d94"; + sha512 = "61570ca71bdd07e8299c7579bb7aa3cbb49fc190715261de8c1f3c74bc6cbafa66d030949a8e27299310f550bc7db8a5772b3fa22572340d5888be1b33909972"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ca/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ca/thunderbird-52.1.0.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; - sha512 = "3c9562e14e20d90d76e6c8b39ef3047899fa094a5639ddffd716b687adb484a97cb6036e3228cdfb207086b28917b74fc44eca07408e7882f45941e50dfbfed6"; + sha512 = "b90e4e220f1a27e53303412e3cee2d1e5b855cd9da2dce3bcff120a6d7d6c8d92e5ddf3e241f9dd5fcde9217afd2631953e8c34bb1ff76a13da23ff15b47fecd"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/cs/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/cs/thunderbird-52.1.0.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; - sha512 = "ed20a0b054d4e86ed1577c8a2672aa692ef47345243716f6dc840910b29cd915df75f8be9ac05bef385afb5721739fb08276c4bf48a51178fa46033c1131c1be"; + sha512 = "9846b281b50693fcc28a753f9200f3f232fee32f5353d37dc2eb041416dc35d19693a133b2cb7bbb0bd6c1858ca4e2eaaacdb52f08d2ac9957900caa11cfd07f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/cy/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/cy/thunderbird-52.1.0.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; - sha512 = "2dcc1d221db9bb647f5bf454a767f692e5eb592d1c6af52e144c55cfc81f0e3e05ddc2e3c4cb66b0031e09531641716009d062f340a5948233165564a3d5a5d0"; + sha512 = "8e053f0b1974b35cea5e2161af7a45346f3070187f503b2ce1f7286a7d2b9c7eb4fc9e35d6b4774a1eaf34cabc935b08712f2fa94b1dc1a5457f8e93ce0b688b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/da/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/da/thunderbird-52.1.0.tar.bz2"; locale = "da"; arch = "linux-x86_64"; - sha512 = "1046c0ecf657a9c5b30e99175f6200e541bb5f33031f1a440b26d12d6de0c558e15f8c2f965a05e59f83c46849944e010bcbdeb6fe100672d97acf0d4038febc"; + sha512 = "4bcc230f2466d7b4c4f138afd40e2e95253b0087afececcbcdeaf1a3a4fd489714ffef5bb1a9b461afaa17f115b1188a7d41d4520b3e49c840dc912897283e9c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/de/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/de/thunderbird-52.1.0.tar.bz2"; locale = "de"; arch = "linux-x86_64"; - sha512 = "10842eafd14068ae5d2447fc2d3aa35066af97a6e49b88d38bcf37be1e754d2403b1c039dc09f418128cd9369da6e0afee278914dd41a2ce48cb4872a7d4d18c"; + sha512 = "3edbaba5339c93a5cdfe237bf648ea1643c362d12733880f6795f9237699e8304667ecc73c7e4cb766b20d3d4a150ad8e5c230754813dad891b032f7ce684622"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/dsb/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/dsb/thunderbird-52.1.0.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; - sha512 = "f7e6b05dfc94f64c988c761877d02ad3c66a7cc47e2818d267d7839d0b1fa7688ecfac8fd3af98e9e9318806a78e4559d6cfe45de0d96b7f5f8d411c6f6cf051"; + sha512 = "ada2c5fc8e71523ae86d3ffd2f51c700b127811d0e47146a500a103acc48c09af17f546fa97c655b27408ca1ac442c927a3023f1e6be3bcee644eacba39db27b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/el/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/el/thunderbird-52.1.0.tar.bz2"; locale = "el"; arch = "linux-x86_64"; - sha512 = "0ac5a23a38987a5af15bbb8e458a89df378b89fdd8721063d6df16a3658201ef1fb4f2d04b6272e1d9d43c1d2273df4cc0fc79b7d374f1fdaf7335c77fdd9381"; + sha512 = "e9498ce714276bd4585c611944865d4fd7eccd30892c910258f6362846fa3cee4c1f49bdf6b77e509aa4fcc6bf2652c5060567cb670d9d842373c69cf6f4d158"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/en-GB/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/en-GB/thunderbird-52.1.0.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; - sha512 = "73f42d30f8fea9063e984d9b44c82aac545a20833133cead89ea147e92595e66da2a1f3d3bd0c09bd1584482474607e6856ba17ff80edff51b169aaba03bdfac"; + sha512 = "47d12c3121e649d847fcace280d270313f23323e949adb9d3f66aeb9e9feeae6faa014588066d692ef1864b8459ca3834b2ae6d038e9b5338f822fafc9a4b6ea"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/en-US/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/en-US/thunderbird-52.1.0.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; - sha512 = "51eafcc7466a2136ddad110fc43640c578d69758e53eace8da52a11ea86869b5d05e537b6132c3c49eb6bc6fc5bad77f2967a472c160963a41775b34600b7582"; + sha512 = "588381a6c0a324dcda7634d0fd431f3902fabfae58510b0b1a6787550a70598364bd463705fc089d79d2697e8996e066787dfd5827ac4d2a34ce9f150a3d54bf"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/es-AR/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/es-AR/thunderbird-52.1.0.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; - sha512 = "b57cbef7843364917632605dafc056323adeb9d06da7e53a65a4450e009fa1f2c54cb5380ed886db4530e845bd6f39cd160ac90f19f99d63ca1f85af09ed77fe"; + sha512 = "5d60384202a3de2819491096df1c65c9838ca7645a30aa62ba49d28176fcbd3353affb7f5984be01b17a6f899a6b8cdcded034ee91ce092842330e19a665fa62"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/es-ES/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/es-ES/thunderbird-52.1.0.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; - sha512 = "408adb2ef60bbad16152ceaebc8f26c62fb829960e941dc5fc2814b183b780bd0fe79847351395321026a0ef53f703b72b6f4bdc233b3284d050e8bde35c0beb"; + sha512 = "23966c83592dcd00653683acb4a9f954c3b5fb67c2720a0f40ff4d39559f210354e1805ae2677a5e8bceaf2e09e439c1fc01309dda9ffba71ca91a6324baaa64"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/et/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/et/thunderbird-52.1.0.tar.bz2"; locale = "et"; arch = "linux-x86_64"; - sha512 = "3186c5a026029e7b7b4dec47079b69b7f33398b2cf276b9bbf0b726d64709f176e45e31e0abb74c4302d693aae0ecafcde945c78da097cc2b0c1499481c78ea0"; + sha512 = "088d55020f599413466113a7aa464dc50526705a8a8b260c36298b5b5394582a708a5c66f09359fa71a4b7771f2a24c2f1ed015fd12696e069789cb106d3626c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/eu/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/eu/thunderbird-52.1.0.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; - sha512 = "c60d3e2ab30e84628158ac65dc5c58ffe5a7b9dc7c3d5e5135456ac4be4d4734a4f4dc7d65c15f400dacc55fddc739934f3978f6184a93a662466b759938d1c5"; + sha512 = "8aaec6db5457fc1464899aee22b9d797dbe7fa98c171ed9b7c30f61c550123fa66a0ad5f95ea9102dbae71cf91997b7f51cdfecd30e5138a7f30c9bc34c9ece4"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/fi/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/fi/thunderbird-52.1.0.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; - sha512 = "14aadef508eabbaaf81a2304934f3848e3831f9d8df2413a49002be36f951c87355e1954d84d58509086c1b0e0aa1de5865edb733d0a07b655942830c83ffa18"; + sha512 = "e9db01444b83d4f4e0d745599cfc5c976d4b2a1a5027bd800c6c60350172a4719e61f49e527a923d9a1c436a87dce48f582fb54e3f1aac4b091492e945a30762"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/fr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/fr/thunderbird-52.1.0.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; - sha512 = "0711ff8a5955ef185678b27e8e43704c652d9024ab4b8558eddfc2c94f87dd24603f144f391f35580c3fd512cd44ca729253501495860e6799440e56c4895c67"; + sha512 = "c6709a91ae730adcd2f21e4e639db17b78ce2c0edbc0790e46e177dfa4f676acfca6c3b242a438a9bba9e40565164cc927f2435be8a73f1f613459d5aa926681"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/fy-NL/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/fy-NL/thunderbird-52.1.0.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; - sha512 = "99e49dcc4085db1895b0e2ec2e7a769fb608415135d550485fea03ccc99f325771682f725c78578944c82b2f18aeb207c8abceb86db5390056d27c291f19556d"; + sha512 = "41130e5dc138e0b396e50cdc74a096e4de65bcce0ca39a426cc572b077291a8b810543c700657ae8dbf64409d6346581ae44e24584b087f874ebe14fce125dda"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ga-IE/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ga-IE/thunderbird-52.1.0.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; - sha512 = "f0bc291e1b3dc2e226aaa48e5b87c1e6690ccd04b4b62b36fc654e86173c9dc6ef47170524ceffbb59093bd4188a3cb01a894469daa4bf49a0a8895034d17645"; + sha512 = "bca05359f485c88c78d307affb42179c431f39e9eb164fda36c14713496eb8befe03ce36bf01ff1c27e172a86e69b712665d833f140b3b0574c33c83f8fd8151"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/gd/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/gd/thunderbird-52.1.0.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; - sha512 = "65388bee6e5f8255779f319eb0d47310762ac6d3ff6b61f3accb151e52dfff8e079aa16be714fe4a89bd722bf72b65f930384d555d68016a27b71bd236388f7f"; + sha512 = "2bbb9f96ba9d23b77ff1584a3164a16cbb4b2218591db055b2aa3ad1e5e1f6a296cb953e9c6dd7bed3db0f6baf8113097de00ab6020d0b49a7208ce3d2060955"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/gl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/gl/thunderbird-52.1.0.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; - sha512 = "64c439a0d2a75a3b9a460966c585913656884da7cf7f81f58e612c9f2523ac690a8585bca61e60fe31e13ed6f07d484e3dab6bff876fa247dc1488f084d8a6b4"; + sha512 = "7cbe56d4ef86addbb2a1347744fb873cedb04b1d699dc25a3ff22e2469d2e287a5d2018ee88d6155dadc0f366091e0132f73382741245ca7054d8f6d7e6d90a0"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/he/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/he/thunderbird-52.1.0.tar.bz2"; locale = "he"; arch = "linux-x86_64"; - sha512 = "7b20a5d996164daca9ce2d6af03a987eb67394eba01c942b29aca3009ee062f0c57cc011baede67c09a7b0dba63e029a5fb5753d18edc34c87926fd16651e208"; + sha512 = "7d9574e77e30ccd5880323fa74550efbd7ad220bf1ca5215e6c9bbedc94010497f09b21a667cd64797cd8145a332932a65425c5fb86a4299af03d29e4e6b7865"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/hr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/hr/thunderbird-52.1.0.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; - sha512 = "4419fac97644cf895021bd974e15466936b45babab7634e35855ddecb2575a43cf9be65cbf83c1c27648b58b656c9f6b4e8d454be901b479cdf86180f244a646"; + sha512 = "09194dccd33136017a458924212bdcea7e8986992bd8ade29794b2a4bd2cf42a8da9510423e57f48ff69483f592aa44da5e837ae1413eb94d29748dd62a213a7"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/hsb/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/hsb/thunderbird-52.1.0.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; - sha512 = "0f31903823ee2cada852aefa8d19b64ef9ee9e9f80fb709481c155a7a4c97169703a35e7de1f2b805fd91d98321dad81fe0321775c4bf9af5f01d38ab75c70a7"; + sha512 = "b1e686c60b37e909fd109b71f69467bec41dfa9e9cae37fb541bf34488a36f2f08ea1cd4023e94863ea62185d96d1c97f4b1209b7c5dbbc43f5a0d005148b0cc"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/hu/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/hu/thunderbird-52.1.0.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; - sha512 = "a2972f056d54b7d22ff090e43144ee16f38b01a1d6ba76dcebeebfdae086bde752008fdc89650947944bc80c82078f94995db8bf8daf339ec0a8fa5475435477"; + sha512 = "d92362f40609242c78a89a652dda961ef174dadb551a9b8b677d06e96e4c557e3e08f8169bfe0f4554cd223e76d57bf1301f9603d8e297c5c66c16fef1514ea8"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/hy-AM/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/hy-AM/thunderbird-52.1.0.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; - sha512 = "47e80c575adae2327cecb5c41ed747c9d4da5ecc9e9ff8afc5dd35764b039050aa07dcbdb79d50fd7a4d8eff6f233f1a3cac3365e6a4db26e0058030d82a0f6f"; + sha512 = "7e94c115871e196aa0e2b616457fabae7b63715aca4602daf6d2d622ffa74920e26b10a539633fa93b39c56c09206962cb58ff823bd00e6044bf94a287147413"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/id/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/id/thunderbird-52.1.0.tar.bz2"; locale = "id"; arch = "linux-x86_64"; - sha512 = "3d8f7a87727e772aa9435bf0e381703003f9a1fee98d71dd7f3fdb7add574a0c5245dcf8903895fa858ec2afbb9823d658db4fd800427d29c71ca93546adcd8d"; + sha512 = "becb04e3e501ea23300f149b9326f3282c2ab60f70eb39c1a82ec2dc5ef65e7c8c00ae2a349378dcf215e118410c0ff1027f305bd8bdf6a1d5cefde64350ddc4"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/is/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/is/thunderbird-52.1.0.tar.bz2"; locale = "is"; arch = "linux-x86_64"; - sha512 = "5ba20b28c08cf19f12acf887b92959a09cfb471776ab1805feda15ec4d406a23ab9c6c719a64ad2a65684f9e1bad00dd2f321285bfa85bf8e2f5aea5ffcc26e6"; + sha512 = "4bb30f257282db43f62ce50b4913ab5978f7cc8198b3c696d16631cb0f3369f474e1f1ecc91441a5762253be4e2506317b02ce9d30880f4d6e4ed792b6da95db"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/it/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/it/thunderbird-52.1.0.tar.bz2"; locale = "it"; arch = "linux-x86_64"; - sha512 = "127471777e937b3b02f07bd66366680eea194171554bf7f11659331fcba414b49d0ce07457d754f5131084ea89d90d6e9d4e62929fe3d7c8c4a3d58b1b34b72c"; + sha512 = "7ed5f13c42d8df83e8cbbc5e814c40c52ca46eb35254f5abf615ecfefe8a89d2bee56650f0358563de37c2503483fda272cc606e25bcc9dcb62100eb5885e66e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ja/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ja/thunderbird-52.1.0.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; - sha512 = "aa013a6c50d660a150b2b4247eaee467ca1a1a232d268121a8e8113386c9575e2667f4cf75c1e7ae77458869a9bd4d2f7972c5cb2aa919296bbf3aca44d48093"; + sha512 = "8fc066d2b0da0de13d0fb069542c4336bcc8416c1b435d8541cda86b768afc8cd1156f0a8ba90d7c22d4dbb9a5f4a294d5a34af825f4adbf07a74f316dad6206"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/kab/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/kab/thunderbird-52.1.0.tar.bz2"; locale = "kab"; arch = "linux-x86_64"; - sha512 = "6f4f4b27c658103dd6c4a9d2c9cfdca09097539eef1e123bda9f11d185a25f0cb944e96d37e9a2c36664700948c4b052a5eaf463e4fb045fe6def4773b19a8c6"; + sha512 = "2264224e6d6c4fd4dee4197fbbada0dfd7f1dd1554a54df0694d03e22ccf5881f8ffab47ad65686d4021209d0ac0938567c661b4599f4a76bcf2c57a66b7c9fc"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ko/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ko/thunderbird-52.1.0.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; - sha512 = "4efbc262f563e03ec78a10658772c9c3b446e5c378159d35a68b432d1b582dac589723525a26e337a2739c0ea116cbaadfe8fae110ad172fd7268a7c5e76c50f"; + sha512 = "76b8c2bc2269af9bc18b8de47d1537885e54fa1e6e7d7c4b5dd4d1daf38abdf9b5e480668ab3aa3d95f5f81440d270f45743f276ebfd664d567c7c19d2dee465"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/lt/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/lt/thunderbird-52.1.0.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; - sha512 = "b1f1cbdd9642e283144200d716783a212948bec80e1b5d27046e80c22349e8b103e98f31bbbe392f4a1467805bbb28801b0f8c597808f03bc6fdc9110cef2900"; + sha512 = "1a858766068e87c0184ef52fc356673669120295a9c21ef33a535936e46050d32214e8f59bb7fddf12915db1a00eba4e4322ecb53864ea5dc64416301ce2c15e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/nb-NO/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/nb-NO/thunderbird-52.1.0.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; - sha512 = "51e675ca839bb7d205121b7023244a9716eb4b7f400c534f6b3a3275aceaf827262a816b790492d3cf01b6f01d64b7cb0c1f2385d1ecc74dad0f450f8d1b26dd"; + sha512 = "a76b77a8080caa6126f1fc1d14b14027abe47b054030b8a2806cf07080ff0c735add14917d5f6edbd281f8e305c2e3f5d59d54677e9860957ce6f5aeaeac8452"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/nl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/nl/thunderbird-52.1.0.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; - sha512 = "866a4d117196834fc415e6dc394c82a9cef6747c838068abf0efef5cb5e03f26d65f5c3e9ccd90fe7229a8785817736ee574d73424ac50633650bfe6c9848633"; + sha512 = "e925f8a705683ca709b2d5595bf0566bd659a55b397d324819e70b1089fac40e9faa88396826351c8246e16d81cca44f9fd961abb08e37691b90bcbf85268a83"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/nn-NO/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/nn-NO/thunderbird-52.1.0.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; - sha512 = "664d8941c433fc04fa836f1dbec12ad73ce3cf9d19d898c8cd6b6c9fc283380e7af27a0ab949881f5b6151595a6c584f938aee6f88e5239fa2de0403813c3388"; + sha512 = "feb78573c9663a4d9662537bf04080cc860b74966f5a0be8fb02959b07da9cbaec37bc9d406a69878e24377d5289599e971096f759a64b9c962eaab72e12e230"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/pa-IN/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/pa-IN/thunderbird-52.1.0.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; - sha512 = "4dfb57686154b3542fef873d08037fb86f7574260884494872433496b82f0b58a14710931fdd0bd5dbe7372658691b2e953a4fd794378a993f97fd6c8c9ac496"; + sha512 = "1006a8663b4d525d4a7562ba4af16283d997cdcde3251a5869cdf796c7b7502a9b39e8859983d541f1c9750d5caaabe4eba4567ccc1efeefc6bc4be5fc552e16"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/pl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/pl/thunderbird-52.1.0.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; - sha512 = "47041481a2cc660bd6de4a018aa77ee4f8217fc7091b37ab8c26d1ec1dcb0678ea80130ee84289dcacd6266431da4532a66b041faba56f1bd8746e991c748a82"; + sha512 = "295f44282ba8ae0a228b1448d904776b11fddc2d52251881b4e3056356fa22e7db05ecbe2c76036b5ea140e46cf2d922ad1ac106bdaf00564612da0bc9701693"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/pt-BR/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/pt-BR/thunderbird-52.1.0.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; - sha512 = "3001331547a05bf5b76620886096fb80cc594c625a335fc613408da5c43075c15abb0a6803cc34c740cef5d7ed9339e21c2db3a8a736901350674ab3b1024514"; + sha512 = "bd5254ccd19f92ecb4ba6d92ed28a775c157b3cc3739dc55ffb7bf622c79b9928b8bd22e5f213724a3f0597307f33f32e6eb9e024a857cf691f13a45ac02c62d"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/pt-PT/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/pt-PT/thunderbird-52.1.0.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; - sha512 = "402dc645810068339fb9fc18d6e3f025c48013281e3604e9a3da8228ee6cdd304ad3d2c10781dedbae9dbba3737fb122a3fd5abc3c856d1afaaaed2d7e23042e"; + sha512 = "2906ef8d811e400008624e153238a03c9ca86fca0a39a6866a2f90a98b40238d00836ffc34e0ac4b397d0b9699ca603ff7bb041b213c21eced2b4814c2082d15"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/rm/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/rm/thunderbird-52.1.0.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; - sha512 = "4789cbabb8ba897a508e9dff91fcf838eae8fb4d330f500bb7f545cf46efbffd978801016898bc89bd6f9fc558df2737c427c16e2ec40c0a7866301abd7450c5"; + sha512 = "537620483820fe23bc09f8061e3a2fe11a2871b56f6efb6e0e328e038bc2632c02daca14160dee53cfdbbb82c700f3b447fb6ea7a83a51bb8cb8d4c7364f0698"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ro/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ro/thunderbird-52.1.0.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; - sha512 = "fbeb8ae935f69efe85b1fb45969b8142b197d340293034c088ed50cdb563466128e305f8ad2c1586c9c18c2fd5fd4042b95ac15aa9e2783fcda2c67a6aa941b3"; + sha512 = "e645a8467a6e5add1f1b13da06e9a4bce2c49fcf8a649ab9e99cecc45fe995aa24655050adf5f74e466b567ff52a7ad24b4c6ee4247a93d4a94e496f493b5359"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ru/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ru/thunderbird-52.1.0.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; - sha512 = "a0a21b2ea3720b776b3a7944c1a9030ab80451a4405afd87f49b424326cfa69769e7e9bb54071c7747f4fe4af8f18fc3a9f8db73a848c554d9d4f3eded8cb9f9"; + sha512 = "5b85e10f87b7501923302f98d737d327d6f22410d83c2d60b82b471e50bc3936673c78f6b38b7e49df035e2c92a29e7e13ff2dc1a21b9322662bc2fa52bdc359"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/si/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/si/thunderbird-52.1.0.tar.bz2"; locale = "si"; arch = "linux-x86_64"; - sha512 = "bb919c3b00f4122cfaefad1a88a68d3dcc88f09bc6db717cee14ba3ab76adc4b4c1ff32dcbbe0babe7336856c31153eb69e2297d88ca60f9e561aab083344710"; + sha512 = "4741f58a8f5577da82abf6803cedb53afe4cc956ae791ed93e43d3c1db900d3f58b2a4064c052a0822f76c4fc6ffda5abe4a14eb10606f5eef5c68b3b302dcfe"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/sk/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/sk/thunderbird-52.1.0.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; - sha512 = "c6e1e049a264bac92fc103b3242fa36dc38caecfe22b909c41ac86e570d7f3c9a7b39ad9d8f9f918fafb60f91e0e3fcd925a598c9f7deb6f7874a92436de6ec6"; + sha512 = "de86889f49c59978702a3cd90fe924ad1dda3f9fbf5285a172376b73d0e0cf0d63e671b361b6a125ab7a5ee97202ae18fcf55534936a7bb680f1dc8e425f5c11"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/sl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/sl/thunderbird-52.1.0.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; - sha512 = "7af3e5a875077f94ef0e7aefd1b170d8f8285fe99b9c59ef568c055253f812949127a37557b88f2097282de8f1615d272abdee51713b30f376b08300c29bc814"; + sha512 = "7b6349f962a834269a9a5f0163a220eabb07866d0333545684cc986dd54b5ac800a7e450db54f695e811236dbd22eb7f7c73afe4f1d21c85052c8c256231120f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/sq/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/sq/thunderbird-52.1.0.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; - sha512 = "ff37ad0845c95ff043c906bf80b7221a541a1eb038ee2be63d7b2d8d1cc8ecf26698b2fed0433334454203e09c98d4166e972e07968fa32e17d826811687613d"; + sha512 = "13451f76b5a954bb07d6bb3352cbd6e2d509819d9a92f07e21f7bb4c4cf555fd09fe080f21fb5bee4bf21f6de288137366f82e895cdb752d0676db61f25f023c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/sr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/sr/thunderbird-52.1.0.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; - sha512 = "487c92ecc4123607466a0e758a16dd87537be32750b12a206129281ec42afc8fc672cebdf948b3233850b8b31338abc829ef60f8a10187eab6bedcc11cd6e11e"; + sha512 = "eb6d9602fe4418f0bd4c633cf8d729556e52fb31183f1abba7c699dc4e7fbb2cea2a0aab6ed5f9cc23987446b5259b400d6151714f45aeb9029965447ac4958a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/sv-SE/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/sv-SE/thunderbird-52.1.0.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; - sha512 = "e0eb86726198982cc14db6bf1c2b7fda2b60492ed318978c6c9349ad7514eb0a35798a3179ba1cc71c84f3219439068c957c38bc87207e5ad81c200378f5ea1d"; + sha512 = "9f9170e3f93c92f2f1d9d82b9661fad400001bfa75fa95b0bf5468d7d06dcf6634ff066e7edb6112c081b741666202220bf08149954f523017a7256b126a6da1"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/ta-LK/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/ta-LK/thunderbird-52.1.0.tar.bz2"; locale = "ta-LK"; arch = "linux-x86_64"; - sha512 = "7a3ab20a071e8cd1728104c31260e3b443cf5c88e116240ce4575c544708fcd5ba386385c72d38b98c1ad76c1d58ff3553828d547e1e64e179521edbe5d31388"; + sha512 = "f78a9783706410634a2fb0884fd745ed6fd1e8ebed694eff5d508d2e06be573794b67886fde5ccc26c879222ab51c49bc64a0e05d39fca981e03e8151998ec6a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/tr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/tr/thunderbird-52.1.0.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; - sha512 = "6ffd911857ecc23c6a41181b684cb9cf9eadc7a76ecb1cade7ae1a5cedca1cff5b18660d76d6b10d722f28493a618417ccf31037229a1af62281c04360a986a6"; + sha512 = "47192344dba9b360fa99b401f0312fc333fee983c1838cf2d9d93852166379b226c4713363ebab16ce3839521da2c8d1f9a570a5ec17678eac9761744273934f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/uk/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/uk/thunderbird-52.1.0.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; - sha512 = "751b43543f7ec4684f4f71450aa301e5f63ea252901cec77593ff637fbb054a578d7fc13a58ba05247af46e86af11f1ec7f0151ab49eb4f824fb11c03c15c6cc"; + sha512 = "ac117704222405e0184ec01f138a7b25b8da96f5e4e5f9ef8452d20b1e4d03dfe8256a54056c682c600c0868d3818b40376065dd52ca9f2cd2e8a5e6d480edb8"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/vi/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/vi/thunderbird-52.1.0.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; - sha512 = "9aa955924e9a7cf6dbf9f9ad94e9d8cff9f91cda4da5ddb8a1e9d2719081ba5adce1cdb57ec55a76473679c63dddc9ac95589503adfa5d4ad00afae6002ff4fe"; + sha512 = "ccd0e5da1d86502a3d46b076e03ec9fda2924d8a1a370c7eeb22a75f3dcc3777737f3d87172613f4dd2302d81d94393b4e35de8bf2bdc746664a3a6379c3e9a4"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/zh-CN/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/zh-CN/thunderbird-52.1.0.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; - sha512 = "3bf34fb329ea1bceab24b0249c138e82c3725569ac82023a33d70c8a94e559f9d930b277bfb8df34571e4e2195293ee997de95c6dc22285be9e3ef15bd145ebf"; + sha512 = "d0bc299c467d58b858ae5b6cdf44ca4b8b37cb3e49e92d3bbcb9a57aa84a6983ad39af3643484bdfc00c6ea7818d1eea2c92ef2cfd3c94af881f1fc51914f08a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-x86_64/zh-TW/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-x86_64/zh-TW/thunderbird-52.1.0.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; - sha512 = "f8928de4dce61b52fd69305023ff4893e35cfba2aa712dc34dc7deb024a36cd7c12a662a497a21e7f647b14779216a3aa2b6a01f84751860dea04b388b265c6a"; + sha512 = "37d1085c0dcbdd8ace9f3ae876277ebd36b8ee4dd79b260fd766b24452649afd8a9509d340bbd9891e0a4fed47592c7961681dfec13d9ff448c89a4df52e8c53"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ar/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ar/thunderbird-52.1.0.tar.bz2"; locale = "ar"; arch = "linux-i686"; - sha512 = "1a5f8a3da90724b1a85b63b7fee31d104e4ba1620b25e6823fa556d8f675335f3c25dce0499defbf8277c3fb6db98c58500aa6ec1460a194715d2d87942a35ed"; + sha512 = "a31e7209b1848d3f29566266a1d58d8ac5d82690146fedaa45f79cd4b016278f1f1faf84405141494093bcfdf27246a2e24880a02612037f99b2d3a0c9ebf950"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ast/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ast/thunderbird-52.1.0.tar.bz2"; locale = "ast"; arch = "linux-i686"; - sha512 = "a4f5994657846378b0a472deb03d87fc30d27b35d9787c8fa53a7b428dbd4f3b0bef988863894606dc9b6c2370965353bba4b54140602a5acb7f3da433822f72"; + sha512 = "9a69f6c59f80275941fa731e8ab110d84d53854ccb830f0c8224a65c36e63872f05f06e8ebd9ef94e3fd200fe6863c580798b233217a44bdcc12b4268ca8c61b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/be/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/be/thunderbird-52.1.0.tar.bz2"; locale = "be"; arch = "linux-i686"; - sha512 = "2c029ac149cfab2eef9e1812dfaf755692265df49bc564f665e34308a1124f749a47850cfc19d1b15a16ee63aaa319ffce97e7025e894aa4a94c91cf81998f28"; + sha512 = "e6756055957d4d073d00aa8abc7dc8ab1e7e8acab170a555628714ea65c36042f6ee171c3c596020244ee241c6a600b0a9d42abc82761df41b5dad3d5a2a53b2"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/bg/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/bg/thunderbird-52.1.0.tar.bz2"; locale = "bg"; arch = "linux-i686"; - sha512 = "ece638e2a33645df20d4c59b157efc57650b591b78e774dc5f82174495faa6afe9e80aac62e5fa106feb29d5cd7369313e3a182adc65e7c9f870a7d0e9e796e0"; + sha512 = "b22a4394cdac862e5870b45b11c7f87556bec2cb38e47f8da22a37325145361df4c815676e9a91def8d8a0d5b2ca876cd57c048dbea3acdcc6e517042a64a20c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/bn-BD/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/bn-BD/thunderbird-52.1.0.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; - sha512 = "8c799ded0a1d090bc8a82044dbbe843f737d9e0481db6ddf33b1609e19b0f7535249677b22a53d71a3f7cf430adeb86421eb2383cad5c73317da71c2c15e50b1"; + sha512 = "e956bd67e1ff58132020204d643a8fd618431d9716fd77dccfbf30cc9610c4f5305e2477471394cf33cf8ed80a3be141be9b67aa73c6f08e44cdfc0d00e4c9e5"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/br/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/br/thunderbird-52.1.0.tar.bz2"; locale = "br"; arch = "linux-i686"; - sha512 = "9417121f1d26d5be82e4857b87283857b072e433e0d90c191902a118489f165add64a5241309934a0b91cb21128c92326a4ce98622a2b2444e55d5bf7ddf57ac"; + sha512 = "692fae122e2b381d110907b4a23001a51811dacb1506a563f9680cc5b80bb0692e1a1b52b1612765032645d3a33dd2d4631ad8255aa1e013f6441601d6330693"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ca/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ca/thunderbird-52.1.0.tar.bz2"; locale = "ca"; arch = "linux-i686"; - sha512 = "0b0e29ac69055336f5e157bb48d86316f36d86f0e984a11a000e4c4518478e8198cd4eb2d6815c1c6456d17c6047d92ff5ae0f6ef4f26a96bd172b8c0a8c308d"; + sha512 = "bbe5204d6b465c3c68f88bd8983081fb5e7ee7e7483208f14b5d107b28ea129692c1b5c7ccbd8f9f0f3dc65b6b444c0a11e13768fe36c9e6b7547dff0e50612a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/cs/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/cs/thunderbird-52.1.0.tar.bz2"; locale = "cs"; arch = "linux-i686"; - sha512 = "6124454cd4ded6cecf953beab5fff1ed6105ba881624b83fef6c0d8798bab161a63abc3b0dd9a94fff5ed850f638feb95f5de4b9268b9ea71b9fb5eb52618407"; + sha512 = "b5219752cc20657b401c4101accc7f16e44a2ed82ce4e80a890ad2d58d552cd435d83c4a69ede8b0949ecf84d81c2ab2b1da4c51b623b8365096fa3c234771d7"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/cy/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/cy/thunderbird-52.1.0.tar.bz2"; locale = "cy"; arch = "linux-i686"; - sha512 = "b1f0c7dae07a7130f1e9f2abfeff12008ce40f7486ef14964c17c7e665c3b4ceb52e48d504965da78993117f5bb12e14853c2a740b00a71c03574445f1129db9"; + sha512 = "769c15d09d20dbf4a27b61ad315188598463068c7de23d97dd498e2005a610c1af77b6bb452304a41c9c709f4bbba963a8680dbd08329ec7c6ce2b29ffa76242"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/da/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/da/thunderbird-52.1.0.tar.bz2"; locale = "da"; arch = "linux-i686"; - sha512 = "5b1e6fd39cfd1d206a1a670a25df98ea73f490be5880a5190ab918b9ffc852000085c0ad89dec1dcea25c101a7ccc43bbc531f63a5dae95a515e0152dd2eee21"; + sha512 = "b023c8fdda97e1f1bd6876ef614b2c790e0602e6ca2725fb4844fddbc57d61225a888f9a63c9cc08133d6c2f35d57993dfefa2200f6ef5c05c93b764ff5efb7c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/de/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/de/thunderbird-52.1.0.tar.bz2"; locale = "de"; arch = "linux-i686"; - sha512 = "5690e0d91c4969f36805e21348fd5d868cf02dc524f24081b4af9afde85ec053a76f4b7a7746c591514973cf18b0e153b9e54112393aeea501e7696b3f63b0ff"; + sha512 = "bedb599246d6228f5de3ef68f8325683f613fc393205167a74493102b9fb7e9360affe956ba2941255437ff7834daf5b5605bd29af68175ca11cb275cb9d61ef"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/dsb/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/dsb/thunderbird-52.1.0.tar.bz2"; locale = "dsb"; arch = "linux-i686"; - sha512 = "8b5663ccb6402578181d84ae92a823d86c243fcdb77a25c69e6be660d137fadde4fae5ca5385bc393d9809ae06bb9b57c68791c8d06c864e710e9f33ab2183e5"; + sha512 = "5537329de234605ab7dce6ff1716a565f823ee9028a9c3627fec5ff479c7bb503246908967ba504228b1e6b2e389c1c1a00bdfd622b4bf74cc5d1dac31a92578"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/el/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/el/thunderbird-52.1.0.tar.bz2"; locale = "el"; arch = "linux-i686"; - sha512 = "0cbf7aeb360ac59d4d4dcac603194c03082e37325c0aa08e79a872f819f5cb25484f0cd7577333194d12a80260ac665fc964b4300c49c2f96c6a6e885cc8b8c3"; + sha512 = "173902ae0833c298d26e3ae1113741bcc22ca195a94d7935a8135c35195d84fd6488c3ae98ec9da5abafa2fce48d3d0becd8d61ccfb2943e6ac8c5011748d3bf"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/en-GB/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/en-GB/thunderbird-52.1.0.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; - sha512 = "fd565d48ceeaddca038265577fef52643218afdcaeda5d022ea125012ed565628670aeb6db3822830a39b43b8372d843129dbeaabaabe7904e93a2389c03957c"; + sha512 = "a2cb84189f7f94b7ea556451ef624e9884b5c7717804eecd9f0b03f9d6b07ba986afc7aa0b85f12223c71face57eacc32c460d3e939ec187704355a979117e6c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/en-US/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/en-US/thunderbird-52.1.0.tar.bz2"; locale = "en-US"; arch = "linux-i686"; - sha512 = "a0c4dbb1f39e9bacf8fdd7660d280142c072ab709204f02a2ea4eb7dab9a4475a121551c98fedb4cac2f1700b0adace7e7af04decd8c2d65bb14a4bc58bf8b59"; + sha512 = "60ef6f688c237a44550a98ff061fc947dd9c2d44db4739d63948e58adbad1287f1ea2b2320d7a8b77b1c6ebd5dc48104f5ef421424a033649f981bb77978f54e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/es-AR/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/es-AR/thunderbird-52.1.0.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; - sha512 = "205893ac76ba91d29ed6f169da01b0ac548e03985eae64955c5493969060c7eb31b6fe0557ecf17301576e1a4b637f2615818ef38322f91bb366c747530dfe22"; + sha512 = "f287931dfd410de49972450cfcf9a8e5cbd207a4dfce126b2229bff18037f535eeed90434fb403fd882dd6d3d00415c0ec633d41ee904d8dfcdda15f6076b0f5"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/es-ES/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/es-ES/thunderbird-52.1.0.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; - sha512 = "6ffbb09840acf9033a7f1f1b19e81d6d51cb90f2578c741c42a81f2e7413d4e9f47afbf756a7b317dd7e7d66ffd025c0d2af31c765c7a8318a291e63d4eeb8a5"; + sha512 = "22aac95907cc6f81b0f26224688da6e53ed4086cfc2692ecc1db5ebb4a9c70e561ba22cd1a64775e42480ee302d638c38332a681468e54dabf8932253c7c8a42"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/et/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/et/thunderbird-52.1.0.tar.bz2"; locale = "et"; arch = "linux-i686"; - sha512 = "79907c40de73a6761bc94b72395eddfd44cac795c6ab0614e764f467f59eb506829c9957ac3fa338feea8a900134195fe549c6b4568655078904337755319523"; + sha512 = "3d6dc02524638f61f6d608f476a99d06f92f9a5b3effe98cb88db050fff63c1beada0f547688b49c8d341f4b03715d05fb3b5b2b26fe23e735680369250171cb"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/eu/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/eu/thunderbird-52.1.0.tar.bz2"; locale = "eu"; arch = "linux-i686"; - sha512 = "dd799f923143380e7a639a9ba313e24dc4457e6a0ec9d6b266103e64c606db2ee702f56fca746049972b2fb63f03713307ee7a19ca7b3dcb93ac6d6cabc897db"; + sha512 = "9d451b1d9a2e96de191f4e50e1eef21ae6100b531ae23e9e503188d94164b476d1938908b839339dcbb693ddc5d309199d3a9f8be5ad462f2b7458df81e9945c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/fi/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/fi/thunderbird-52.1.0.tar.bz2"; locale = "fi"; arch = "linux-i686"; - sha512 = "1aed6627a6a0a72d5e0d52b1831d4f756205d92aadccff43a1b9543d0d426b2cea3b9d20ca1829f29b1c9a1a832a43a7cbe9b870aab138df3133c2e886d826c7"; + sha512 = "194211fad20c3ec98c6d082a301fef99f887f2bf974eaf98abed221059196c632f857c0b3881a618580ef33e8a86790a78a2c018d5abed5f32ccca307298f0ad"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/fr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/fr/thunderbird-52.1.0.tar.bz2"; locale = "fr"; arch = "linux-i686"; - sha512 = "c3d1fc74da5379825e180c3a3d0569c83a3f0098eeb396fd73eb3470d054207317506fead5b116a32b7a3e2a4c7c98431da9eb16548daef3baab052d53f432ff"; + sha512 = "4eaea56f7eab5a42bce95c0a53493e6f480d5741b27980409b5667337a9aa3ddbd8a20945774ccdc43182572e2821f6f929b7c93b713cba6803cf4c6f837b5e3"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/fy-NL/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/fy-NL/thunderbird-52.1.0.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; - sha512 = "c557220187979d06f1697511a69dac852c3f6662e6474b9d8bd0f0d49b5211d5963b1b6dc75a0e3f831bc724f3e28e0548da7cd67e8ab90c29901e07ec802f03"; + sha512 = "124ae25aa3d469c7fc83c031a5cffe76e49db991f8a8af5cf9d67cee88b9fa37e941e22c94c92f0b52e3222604eb19b6d63d258aa220079e864f67276deff2f8"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ga-IE/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ga-IE/thunderbird-52.1.0.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; - sha512 = "02b3ba15ab86764cf41d275aea8d39310455e74e0f00418c91151bfea623385efe0c59202dc499a7f3e72cb6c64c7c30ce35663c1fe69a761a1761865f7852a2"; + sha512 = "e91c8b5d176c19be49ae6a10c600369f38a420872b1621ede488f10bfbe5e09890d96a18e5e12256020a5d774723d582cc3a799e3cff27ef90d60cafb8bb1f05"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/gd/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/gd/thunderbird-52.1.0.tar.bz2"; locale = "gd"; arch = "linux-i686"; - sha512 = "24086d6f92611b0b8a9e3b79e42a5494dca7147bf8597df33d5d3ff745a1bac41ce39156f7df43bd6c21b4e845474ca085f9082cf4207cfec982c50a88fc6c16"; + sha512 = "51e5529755401848cd491835a70d73bb37142993ce7e6149d6647cfc2bc252dd71d4fdd06c9b0fa3a6d3c8d0c06eec06bf86825890da7fc09c8cc4820460be71"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/gl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/gl/thunderbird-52.1.0.tar.bz2"; locale = "gl"; arch = "linux-i686"; - sha512 = "66b9b1f073b352a6c3147e44631b88cd79e1985a4d6dabea142170871cb795778edcf2e7c2f0d4b94dbf35b24783b26e30534402d2a5e05cf2587609183820f9"; + sha512 = "a8781dcbd9f77ad6e77aa728d384499d7e3b3a7b279efd109d5857a6c89a96673440fd3b4d053652aee1f2972abb22b40e09952c8b09e2b69d5acb405eca95d5"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/he/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/he/thunderbird-52.1.0.tar.bz2"; locale = "he"; arch = "linux-i686"; - sha512 = "b52223e1314043ea50a70184e7812533b389cc58c6e0442daa96975955645478ee161e60f4a8e4f517164efac83e0157bfe6a88d25d056f3849ebd3652b39d56"; + sha512 = "c6fd0ca900c4119ada2f8655cdc95caa2bf9df21c7599dd47b56bd13b5e8462831c5cd9c97dae0c573ee806e3f83fc01559a10ae3e7b36a600821560b6aa3bdc"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/hr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/hr/thunderbird-52.1.0.tar.bz2"; locale = "hr"; arch = "linux-i686"; - sha512 = "010c2ae0a21e167613b88c110ed93e6e60920e8343c6ef22159dddd116f2cdaec18a6545132bac87d828ea717d6090979ad88483093cc280f9f97292fae1e456"; + sha512 = "2875c00b77ca528ae0e9166c5c5db430b1637217a3d9b577c6fd37a06996d458c04c1c23153f266046a62fe8184b532b4e168e0529cd2d44528dc227cfd776cb"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/hsb/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/hsb/thunderbird-52.1.0.tar.bz2"; locale = "hsb"; arch = "linux-i686"; - sha512 = "1f7b6864a4760ad77c3b93f56eaa80f07c89cfbbf03523c71c74f7677c4a3b7b54505cc720990308477316d7e30839916b1c51cff8d3cd5c9af99919df8a3f38"; + sha512 = "2386b17c22d245afdd090c24953714f924674703a4d63c95f55ebb94b1022d4f227b06db17e055b6a91c1ea7e6c69856af4fbd09b734a0e8d798ffe357580302"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/hu/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/hu/thunderbird-52.1.0.tar.bz2"; locale = "hu"; arch = "linux-i686"; - sha512 = "5ef71ed0803dfbc0c4ecb28de017969e40b9df3c6099866863004914fff1804a010f721d779f43e6b240d7b309b7877664b5d96ea2c5dfef6fe0403b3592c359"; + sha512 = "2576a743a98ea6e86bf423812b971ca251c98efcc3f4539365abd7936d917ff730b4772c3e56a460928b98af338d4fa7180d43c1ade8b6fab6eca90450a754a2"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/hy-AM/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/hy-AM/thunderbird-52.1.0.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; - sha512 = "2271c6d528dfd2e61c98dc976a0aadc20d39bd8d1e7cdeefe7cdebd9e0eedcfc17e6503c8b204d560b2b9bdd05b5a87de5b0422268e39ef8fc1a31874a7807e4"; + sha512 = "0b7ef3390cba99e03930ce884b6ac59120769be6def7f29feff1fdd2206c3a8d3af04bc9bf5f5437487d1a4793177d60ba03a15190c3c87ac4a0fa771d956417"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/id/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/id/thunderbird-52.1.0.tar.bz2"; locale = "id"; arch = "linux-i686"; - sha512 = "6469eed9762451392ff88ef76a4811b4122413050c4eb5b7f7ccc97e34ae0ce5c00ac8ccd41aeda92a9478d335f62bc2055e7200d1bae5217cc7370275ff72e6"; + sha512 = "f2917198294b0566867018d1b90b4110eb6eda677e912ae2b199c8e3ee9c716d3b5e33aeef48db8d3a09e2a7f6a10af0f17157ef8d12e5451b87c52a2e1f3dfd"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/is/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/is/thunderbird-52.1.0.tar.bz2"; locale = "is"; arch = "linux-i686"; - sha512 = "6b46c946d456408152f7058540a1247f278b0d228717f089582f11a2e6c8221834fb09da48c93aa8ccd68fab537719d0f8ec3b16cd043ce6b59113cce75d1018"; + sha512 = "73ccc2e38fe68a25154596a65887c1c3e90a2d6166f0764bcc6d9f7e7018ec5d443a5b24f41acbb8e77fbbc522c74ca6ef909fe9ba636a8288c1724b02ed9673"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/it/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/it/thunderbird-52.1.0.tar.bz2"; locale = "it"; arch = "linux-i686"; - sha512 = "2fa1ad4d939fd916e29d3f76bbc55f2eef4823225d32bf2292e03fc59c81d24657aabdd228df092e4039ddd555e7ea3a39c840bec58154f10c8535a79a2d3814"; + sha512 = "2255900a747d69de7a30b9b72a1eb261f35fa3a6269435f98923e82271ceaaa173bb3d86034e9fe1f9ba0e29250592ade8583f9cd51f29798549cc9f628ae46d"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ja/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ja/thunderbird-52.1.0.tar.bz2"; locale = "ja"; arch = "linux-i686"; - sha512 = "c4ad832486169e0bbbc1a14a7da399e0149b236a8ad9b71ec723a6c9098c4c90446e0c2c8ae0e4ccd78a48fdf8096f6b0290b0f6ab74469a53b8259358e6ea03"; + sha512 = "5429e24c2ba0e59dd4ead497a887f456be12a19921fd6447d80e93c92b4a2d9c08cd79b31c2d5e57ec75133474adf94eff87239cb934c5c3c2ef126291da46ff"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/kab/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/kab/thunderbird-52.1.0.tar.bz2"; locale = "kab"; arch = "linux-i686"; - sha512 = "9cfafbe2030610fa01901600c6661af69f9bd66f10c76ab227da966cc860e4a1ab9c07a80b3901d72ee440762536ddd0c1d478539f1087215dfe130e507df79a"; + sha512 = "6611561fb82a9cd2b3e1e1fdb1cbaf851d0e659c3ab083661121ab7a71f717f7a67fd23f8d5886d144cb8fd0aaaa0754f7253c44ef486de5f9b0cc54bba42550"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ko/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ko/thunderbird-52.1.0.tar.bz2"; locale = "ko"; arch = "linux-i686"; - sha512 = "640c0f3466aebfb43b88e8a580797661a2eb016f4eea4d9dd081009f4bdb17008bbcae1759a2d70d8dda3159f024813ee943b2a88a0c21a97f14f4079dc7744a"; + sha512 = "7c6864d255b2e745a2052246ba234e82da45df81d7b6c4ad11edc08cdeeba3abe18f1827b6c53ca182bf02d0d4ef01fbba8be426523800c8702bc5d93be20e9e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/lt/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/lt/thunderbird-52.1.0.tar.bz2"; locale = "lt"; arch = "linux-i686"; - sha512 = "9a5c403ea9456d2f27b77c7a46120f45eddad60fc2d93617b246d5b7b7cc59a93698d00dfc35b33997cac5ff71ffb036469f63e8553cf8cc6a73de8959b76b9a"; + sha512 = "c74489039875d5db0dfd55de1b245136d4b42048f685e9cf665a62791260c8b23322ab94f474ea389556217d3c802268325d7f14b584d18c071be57d9fbf67f6"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/nb-NO/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/nb-NO/thunderbird-52.1.0.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; - sha512 = "c485347ea4518875bcc384259bbb63b1bf2b6c1e5fb76e7540bea9ac664c0f6b517c563144489ce6ce3a65fc6aa9736088040020e073627fca032ae53c3c6e2f"; + sha512 = "ef6687126f5d405367a26cf74c4ad8255bb2be69b902c1b38557c54bd4fe5c997ac08f182da9b09c6fc4c69a1531fbf8c0a5f28e3cd1f01644c356a2c67e7221"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/nl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/nl/thunderbird-52.1.0.tar.bz2"; locale = "nl"; arch = "linux-i686"; - sha512 = "fab94d96dd0a0cd8370c336acda2049c58c73b7f22f7975d8304a33d81950ebf82a14a335dbea02d8e78a63512b4bac041965516948812d9ee833342fd54c951"; + sha512 = "464beeb01f5cd4a19029205899df4c0d60fcc93c8557566feeac937c33f180def8ba459662994d9209c692f473950518aed277801d8ee28618f6afac419cfa4b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/nn-NO/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/nn-NO/thunderbird-52.1.0.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; - sha512 = "63917ddf88f0731c228bf04513a753216c9393f2a9eef685ef36d0d6d442491e6eddcbf4e77cc87c4b588878667aec08c4346f3418a148af77585b0b037285b8"; + sha512 = "726ff54f1612db1dd3683a4b752045316f5ca3531596eb2b70403b5bbf4273610570d518cd71800abd1d12311043754d4ae8a8ef0946b37b454c7430d5998c40"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/pa-IN/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/pa-IN/thunderbird-52.1.0.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; - sha512 = "c49d476f02431e3ef23680ffb3dd58dc226e5b6c25003df7a98bebf69a0bb0167d60edc0ff764c9e36aeb9e7a06f19fec4651bee293f986b30688cec2f6d1d9e"; + sha512 = "937510a072e1e298f13d21e46dce40ce75e309b9dac590b3bdffcd2ba45b3035f4b5059ea7e38b187694d6721fa8b43bcb8bc7104da7a8859175f1c8364ba9dc"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/pl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/pl/thunderbird-52.1.0.tar.bz2"; locale = "pl"; arch = "linux-i686"; - sha512 = "3764defe3440f4c283d9c9e806c05653017f70921d84778a40d71bfc4028d146b8aff5114631050fb3eca8c9f1b33e40f5440c647fadf238ce36dc0eb5245a27"; + sha512 = "65bc1dac3e1721e6e4afb041e449c1d5ecb9f878e8e32e6ab223998e1160bbd0e9e55313f079d7d7128174befe7de42a87d294dcce5e33865d0d7aff77251b00"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/pt-BR/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/pt-BR/thunderbird-52.1.0.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; - sha512 = "3c016085676d2fb8b98685d7785f4163ebe4382f051760f2596e072f37c8d5121cdf87b5a90448a1360213fe2f6c1c369be04d744c22d39f7ce4dc6135fe458b"; + sha512 = "626590730865d64fe9469cc54680f182e37e40a78dc7419f33c3012c21e5d74e7e154a0e87e930d9137ca2a278ff932e233b9365d8fe45fa806f04da0759ab53"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/pt-PT/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/pt-PT/thunderbird-52.1.0.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; - sha512 = "79ee1c273c74993b5e98ad9fb3c8434284e414dd14a70028525d214454f83ee1a1475531dd001d1b34ec37eb903f12f9675b388e7728c51c52164020e5cda0db"; + sha512 = "10de12c212918f4dda40f68c23fe2ac8a5f9f59c22140f4e10ca2a0ce455a9458747b2b3517958f7fddf86a9328a1793749ec9874b5045902a5b023ecf11f202"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/rm/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/rm/thunderbird-52.1.0.tar.bz2"; locale = "rm"; arch = "linux-i686"; - sha512 = "f150d1652924fc6a5f3ab9116a1000c08c99cc597fb433c3c27a4b4008768cd63034ccf6ed75870fa4444af02cbad33d0d11433017a3df461d98af59c1d6c8d9"; + sha512 = "01339904126b1e07d1c24eb7cfb78cf0fc3bfdab33423f8dd9986336237392cd713fcd3943c40db8176247aa45e46abcdbe4089e9bfc2416349f70c0777de9f1"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ro/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ro/thunderbird-52.1.0.tar.bz2"; locale = "ro"; arch = "linux-i686"; - sha512 = "524f5266679084fa3d3dd97daa66d2c1c729c70e9d1a77dbb6565e0d8e15dba507f33c4ce4e4ab11a31f69dfafcb67b0d7ef2b20c21b8d98608d242f63313e2e"; + sha512 = "1d980d6862de2795d708b229a071d31ade551cf171142a43db9bf9c2efc3aab1f14a6ed147654380b3f046091fb96809ff40935e9bbe81d6003837d18e77b64d"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ru/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ru/thunderbird-52.1.0.tar.bz2"; locale = "ru"; arch = "linux-i686"; - sha512 = "fdc15364d34e676db345189247033b25a6b7cff4cf6b0096845a672e0ecb4d5ae41105b139c6814f359c5f4c2cdb2165faccca1028fe085bca1dd165920030e3"; + sha512 = "c5197130284ec29668c85a10f8d638a00cd7e5197e87925d24fabdef28a3f526ca1d2a32f38c737848db9d23bbb735556dc3fc1f8877eb29f01018fd646d33ea"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/si/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/si/thunderbird-52.1.0.tar.bz2"; locale = "si"; arch = "linux-i686"; - sha512 = "d6782f94a20cc654801f3f17cc0b01fef195423b83c4f0ee9582de6af4f7fca97ec12649ae0de432d9ca2f3f1519b399a82609e70f101cea30f85e377dbabd4e"; + sha512 = "b0bcdb1b97c5988fab11172dd49a97a5626f7735450c9d1527d30dc4783bfa2c2087a0923c332fc04306e0937ffa0792c6b12e1f6b76381a3fafd3bc347095fc"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/sk/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/sk/thunderbird-52.1.0.tar.bz2"; locale = "sk"; arch = "linux-i686"; - sha512 = "0c3072655ebffc0527f678a1b68cf56b117ea7b247891e12b80c22f2a4936ae087dafe17144d58a406d5b5bf38d2e6090c5146b6d3d34fa5b3ccd911cc960e58"; + sha512 = "0e7e2be2de816aa75e094207bf6c3c3b4872d31713f7b35775ed9b983fc391ab5b1c2675d4d9fb1803c749519eafee397426a0acde6352635b47745f742a7a44"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/sl/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/sl/thunderbird-52.1.0.tar.bz2"; locale = "sl"; arch = "linux-i686"; - sha512 = "439dd725c83bf40b258712385ef8a5286e92b10dc77996c16c6cd22589f7ea276ced47788bae29a6ecc3d2d785f25ce99c98a18fd4f9e0330478645803cc0944"; + sha512 = "1ba4c498b4f94aa07894747172d22682fbce249df89f15e5e07c45a313de89c1f01e6a94bc06a597663416b1f9c7fc0106fef0b799dc1afa752ed28470d8082d"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/sq/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/sq/thunderbird-52.1.0.tar.bz2"; locale = "sq"; arch = "linux-i686"; - sha512 = "59b342d58a04cd4b71f1ae67ba66e3d10f4f464612f6e072c838fa5cf3479ada72fa7be09a10508dcc62da10983cd284f20ca6e4e6874fc92433337332733d51"; + sha512 = "026f992caeea7cb43b8a6e4078f0e1f9b1abdcc1e73ddaa1adf714bcdfad4ba4d234e007701d9c8ad5ff7807eb41c9795fd92831c6928286e687f9fa53ef6b0e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/sr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/sr/thunderbird-52.1.0.tar.bz2"; locale = "sr"; arch = "linux-i686"; - sha512 = "1cb49257c91ba6afa41aeaa60380b812017210ea102dec90e405fa80ba48fbf8df70d4128c6c0bbab3bfabf81ee21b06c8180f38cbd87715093ae872f4c941e9"; + sha512 = "7bef28114f9ef2a243d67878bbf92fbce5a421be6954c339ec81e659abd1cbf63e3e0797b965eb7ec90219a7cbcc800b2aac3f390fd8c6c7dbe816cd13fb7bb2"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/sv-SE/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/sv-SE/thunderbird-52.1.0.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; - sha512 = "28c6554e85186f5eefd79f63c9d0b3d258ce76c29156e70c1badbfc71e201ee82889223d7c60a98e3fd44644937378892725136781e9a1644007c80207ba1cb6"; + sha512 = "4de60c656296be7019413ddf0621b8d50fa56276c503b3581f481533a08283901df5c344a4b4d6ba0b2237e94f9e9c362611c3d87832da41f48edd820485a0c0"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/ta-LK/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/ta-LK/thunderbird-52.1.0.tar.bz2"; locale = "ta-LK"; arch = "linux-i686"; - sha512 = "9f04041814a6f806b9b24aceedb9a7e608384b65a9b607994eded3813af83467c4ab8d85beb972775da7daaf0a86ab55bd74bbdda2a499323b6761550f568a61"; + sha512 = "62c732f52adf0019042b3669798d057bc20e77817fb114f5b27d940d507ca8e58d65144e6ef231dbfd9603ec3c070c77fe51fd1bae191a30a9b986708fe07c66"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/tr/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/tr/thunderbird-52.1.0.tar.bz2"; locale = "tr"; arch = "linux-i686"; - sha512 = "bceaae576db6d1f49c40e9e361b77580f5bf142945ebf20b3cf38b0b61d8a68a2b9478b5a1dfea114daec363aec5934fbcef4ae88638626fe3ff93a28f07ccd0"; + sha512 = "2bec1d2daab3da2f557b2af094b3fca47c08162ce495540c06aba14578674fd5ce4869d07e8a3452e2d8d263eb80c807af85c2e344dd23acd6625e9cbb739f9f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/uk/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/uk/thunderbird-52.1.0.tar.bz2"; locale = "uk"; arch = "linux-i686"; - sha512 = "e88f4f496e3dd19655e76a3b79e4519a05e76390fb3acf05d194a300bc459a1e66b082a6150b9f4ec82308c881de402b30474764f946f81f55c1ea6e483e4161"; + sha512 = "67f7423ef8042c6cfea06ab22ac62ef54951fa4e77142da03d8e8b0643eb42a0fa88b9518f34600512f511621428185a3038e446b3626791b2c91d71f67cca82"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/vi/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/vi/thunderbird-52.1.0.tar.bz2"; locale = "vi"; arch = "linux-i686"; - sha512 = "1c361e41b1ba06d9a08cfbb5532619311d81e3a7717eb0dd2d289195f198be7fea2558df707f97a49846fe073a0c775cfae610ed3fabeaa2cedbb1fa7c21d8ec"; + sha512 = "ab1e18232cef0eef6141fc014949b4efe945815712e2485711f37d8cc6ada8bd842652bce8792b5072c057a1888938136dd397ac6cc0ab57c4fb51d1b855ef1b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/zh-CN/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/zh-CN/thunderbird-52.1.0.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; - sha512 = "fabe94285cbc1ca40e398dd41747fcfb0a51aaefe3346835ac6e3946d5d8ce1610d39c55276e2c6e02f7a1424af46a06529d5533aeb83b8448aff0dd9183a6b4"; + sha512 = "90aa3e13705d5e118af8ff64714bd70bc8a9ba75ca5db91a1f138164a091f516791543a7e827aad739064c689687df8691881aa3e191f541a78f3fc7ca16f8e7"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.0.1/linux-i686/zh-TW/thunderbird-52.0.1.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/52.1.0/linux-i686/zh-TW/thunderbird-52.1.0.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; - sha512 = "f4764c8fae1231d1e10c30baf99583c534fb403ff03ca9a61a472d932645590ee863b56feb13df13438a7eef83e55445be196a9f62078a0e18961edb043bbec9"; + sha512 = "0a5aef6a3f590212707b868da11308c4258079e8e9b163b720fee0a23b845b377779e648a1180bc050da102341173f123b054df56a4a8e81a0b31daa96c5f42b"; } ]; } diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix index 3e3b43aedb4..501e7180783 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix @@ -22,11 +22,11 @@ let wrapperTool = if enableGTK3 then wrapGAppsHook else makeWrapper; in stdenv.mkDerivation rec { name = "thunderbird-${version}"; - version = "52.0.1"; + version = "52.1.0"; src = fetchurl { url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz"; - sha512 = "7b8324a230a10b738b9a28c31b195bfb149b1f47eec6662d93a7d0c424d56303dbc2bca6645b30323c6da86628d6e49de359e1067081a5d0bd66541174a8be48"; + sha512 = "08016334a0cc8af96d5c5b9aad0b8bf1ca3c105ff4a412abbeaeefefda1301cb149eafb4e78314f710567b952267d1d3c999dc8e5534a4a8d06abdcb11ee98c8"; }; # New sed no longer tolerates this mistake. diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index 3ec24bb2022..fa8ccf60a2a 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -138,6 +138,6 @@ in { mumble_git = client gitSource; murmur = server stableSource; murmur_git = (server gitSource).overrideAttrs (old: { - meta = old.meta // { broken = true; }; + meta = old.meta // { broken = iceSupport; }; }); } diff --git a/pkgs/applications/networking/owncloud-client/default.nix b/pkgs/applications/networking/owncloud-client/default.nix index ccd1b5cfeae..207581ed29b 100644 --- a/pkgs/applications/networking/owncloud-client/default.nix +++ b/pkgs/applications/networking/owncloud-client/default.nix @@ -1,16 +1,16 @@ -{ stdenv, fetchurl, cmake, qt5, pkgconfig, qtkeychain, sqlite }: +{ stdenv, fetchurl, cmake, pkgconfig, qtbase, qtwebkit, qtkeychain, sqlite }: stdenv.mkDerivation rec { name = "owncloud-client-${version}"; - version = "2.3.0"; + version = "2.3.1"; src = fetchurl { url = "https://download.owncloud.com/desktop/stable/owncloudclient-${version}.tar.xz"; - sha256 = "10ah4zmnv4hfi50k59qwk990h1a4g95d3yvxqqrv4x1dv8p2sscf"; + sha256 = "051rky4rpm73flxxkhfdxqq23ncnk4ixhscbg74w82sa4d93f54k"; }; nativeBuildInputs = [ pkgconfig cmake ]; - buildInputs = [ qt5.qtbase qt5.qtwebkit qtkeychain sqlite ]; + buildInputs = [ qtbase qtwebkit qtkeychain sqlite ]; cmakeFlags = [ "-UCMAKE_INSTALL_LIBDIR" diff --git a/pkgs/applications/networking/p2p/qbittorrent/default.nix b/pkgs/applications/networking/p2p/qbittorrent/default.nix index 17548d82441..de05555633e 100644 --- a/pkgs/applications/networking/p2p/qbittorrent/default.nix +++ b/pkgs/applications/networking/p2p/qbittorrent/default.nix @@ -10,11 +10,11 @@ assert guiSupport -> (dbus_libs != null); with stdenv.lib; stdenv.mkDerivation rec { name = "qbittorrent-${version}"; - version = "3.3.11"; + version = "3.3.12"; src = fetchurl { url = "mirror://sourceforge/qbittorrent/${name}.tar.xz"; - sha256 = "0q57ahhlx7r5k1ji87gbp4rvjfvhirlmcx5nbwrfvqmxsigar4j8"; + sha256 = "0vs626khavhqqnq2hrwrxyc8ihbngharcf1fd37nwccvy13qqljn"; }; nativeBuildInputs = [ pkgconfig which ]; diff --git a/pkgs/applications/networking/remote/xrdp/default.nix b/pkgs/applications/networking/remote/xrdp/default.nix new file mode 100644 index 00000000000..8079a0aabe6 --- /dev/null +++ b/pkgs/applications/networking/remote/xrdp/default.nix @@ -0,0 +1,106 @@ +{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, which, perl, autoconf, automake, libtool, openssl, systemd, pam, fuse, libjpeg, libopus, nasm, xorg }: + +let + xorgxrdp = stdenv.mkDerivation rec { + name = "xorgxrdp-${version}"; + version = "0.2.1"; + + src = fetchFromGitHub { + owner = "neutrinolabs"; + repo = "xorgxrdp"; + rev = "v${version}"; + sha256 = "13713qs1v79xa02iw6vaj9b2q62ix770a32z56ql05d6yvfdsfhi"; + }; + + nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ]; + + buildInputs = [ xorg.xorgserver ]; + + postPatch = '' + # patch from Debian, allows to run xrdp daemon under unprivileged user + substituteInPlace module/rdpClientCon.c \ + --replace 'g_sck_listen(dev->listen_sck);' 'g_sck_listen(dev->listen_sck); g_chmod_hex(dev->uds_data, 0x0660);' + + substituteInPlace configure.ac \ + --replace 'moduledir=`pkg-config xorg-server --variable=moduledir`' "moduledir=$out/lib/xorg/modules" \ + --replace 'sysconfdir="/etc"' "sysconfdir=$out/etc" + ''; + + preConfigure = "./bootstrap"; + + configureFlags = [ "XRDP_CFLAGS=-I${xrdp.src}/common" ]; + + enableParallelBuilding = true; + }; + + xrdp = stdenv.mkDerivation rec { + version = "0.9.2"; + rev = "48c26a3"; # Fixes https://github.com/neutrinolabs/xrdp/issues/609; not a patch on top of the official repo because "xorgxrdp.configureFlags" above includes "xrdp.src" which must be fixed already + name = "xrdp-${version}.${rev}"; + + src = fetchFromGitHub { + owner = "volth"; + repo = "xrdp"; + rev = rev; + fetchSubmodules = true; + sha256 = "0zs03amshmvy65d26vsv31n9jflkjf43vsjhg4crzifka3vz9p16"; + }; + + nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ]; + + buildInputs = [ openssl systemd pam fuse libjpeg libopus xorg.libX11 xorg.libXfixes xorg.libXrandr ]; + + postPatch = '' + substituteInPlace sesman/xauth.c --replace "xauth -q" "${xorg.xauth}/bin/xauth -q" + ''; + + preConfigure = '' + (cd librfxcodec && ./bootstrap && ./configure --prefix=$out --enable-static --disable-shared) + ./bootstrap + ''; + dontDisableStatic = true; + configureFlags = [ "--with-systemdsystemunitdir=./do-not-install" "--enable-ipv6" "--enable-jpeg" "--enable-fuse" "--enable-rfxcodec" "--enable-opus" ]; + + installFlags = [ "DESTDIR=$(out)" "prefix=" ]; + + postInstall = '' + # remove generated keys (as non-determenistic) and upstart script + rm $out/etc/xrdp/{rsakeys.ini,key.pem,cert.pem,xrdp.sh} + + cp $src/keygen/openssl.conf $out/share/xrdp/openssl.conf + + substituteInPlace $out/etc/xrdp/sesman.ini --replace /etc/xrdp/pulse $out/etc/xrdp/pulse + + # remove all session types except Xorg (they are not supported by this setup) + ${perl}/bin/perl -i -ne 'print unless /\[(X11rdp|Xvnc|console|vnc-any|sesman-any|rdp-any|neutrinordp-any)\]/ .. /^$/' $out/etc/xrdp/xrdp.ini + + # remove all session types and then add Xorg + ${perl}/bin/perl -i -ne 'print unless /\[(X11rdp|Xvnc|Xorg)\]/ .. /^$/' $out/etc/xrdp/sesman.ini + + cat >> $out/etc/xrdp/sesman.ini < /etc/passwd + echo "root:x:0:0::/root:${stdenv.shell}" > /etc/passwd echo "root:!x:::::::" > /etc/shadow fi if [[ ! -f /etc/group ]]; then diff --git a/pkgs/build-support/emacs/buffer.nix b/pkgs/build-support/emacs/buffer.nix index 6c5e0570fd0..75e660d0214 100644 --- a/pkgs/build-support/emacs/buffer.nix +++ b/pkgs/build-support/emacs/buffer.nix @@ -3,7 +3,7 @@ { lib, writeText, inherit-local }: -{ +rec { withPackages = pkgs: let extras = map (x: x.emacsBufferSetup pkgs) (builtins.filter (builtins.hasAttr "emacsBufferSetup") pkgs); in writeText "dir-locals.el" '' @@ -49,4 +49,28 @@ ${lib.concatStringsSep "\n" extras} ''; + # nix-buffer function for a project with a bunch of haskell packages + # in one directory + haskellMonoRepo = { project-root # The monorepo root + , haskellPackages # The composed haskell packages set that contains all of the packages + }: { root }: + let # The haskell paths. + haskell-paths = lib.filesystem.haskellPathsInDir project-root; + # Find the haskell package that the 'root' is in, if any. + haskell-path-parent = + let filtered = builtins.filter (name: + lib.hasPrefix (toString (project-root + "/${name}")) (toString root) + ) (builtins.attrNames haskell-paths); + in + if filtered == [] then null else builtins.head filtered; + # We're in the directory of a haskell package + is-haskell-package = haskell-path-parent != null; + haskell-package = haskellPackages.${haskell-path-parent}; + # GHC environment with all needed deps for the haskell package + haskell-package-env = + builtins.head haskell-package.env.nativeBuildInputs; + in + if is-haskell-package + then withPackages [ haskell-package-env ] + else {}; } diff --git a/pkgs/build-support/kde/wrapper.nix b/pkgs/build-support/kde/wrapper.nix index 228eb696bd9..4442b111d79 100644 --- a/pkgs/build-support/kde/wrapper.nix +++ b/pkgs/build-support/kde/wrapper.nix @@ -48,9 +48,9 @@ stdenv.mkDerivation { --suffix PATH : "$env/bin" \ --prefix XDG_CONFIG_DIRS : "$env/etc/xdg" \ --prefix XDG_DATA_DIRS : "$env/share:${gtk3}/share/gsettings-schemas/${gtk3.name}" \ - --set QML_IMPORT_PATH "$env/lib/qt5/imports" \ - --set QML2_IMPORT_PATH "$env/lib/qt5/qml" \ - --set QT_PLUGIN_PATH "$env/lib/qt5/plugins" \ + --prefix QML_IMPORT_PATH : "$env/lib/qt5/imports" \ + --prefix QML2_IMPORT_PATH : "$env/lib/qt5/qml" \ + --prefix QT_PLUGIN_PATH : "$env/lib/qt5/plugins" \ --prefix GIO_EXTRA_MODULES : "${dconf.lib}/lib/gio/modules" good="1" break diff --git a/pkgs/build-support/release/ant-build.nix b/pkgs/build-support/release/ant-build.nix index c77db30a81c..5ab24132290 100644 --- a/pkgs/build-support/release/ant-build.nix +++ b/pkgs/build-support/release/ant-build.nix @@ -69,7 +69,7 @@ stdenv.mkDerivation ( mkdir -p $out/bin cat >> $out/bin/${w.name} < 0.1.0.1 ever gets released. stunclient = overrideCabal super.stunclient (drv: { diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix index b9e96886ac5..e2dc2dbe35e 100644 --- a/pkgs/development/haskell-modules/configuration-nix.nix +++ b/pkgs/development/haskell-modules/configuration-nix.nix @@ -433,7 +433,7 @@ self: super: builtins.intersectAttrs super { haskell-gi-base = addBuildDepend super.haskell-gi-base pkgs.gobjectIntrospection; # Requires gi-javascriptcore API version 4 - gi-webkit2 = super.gi-webkit2.override { gi-javascriptcore = self.gi-javascriptcore_4_0_11; }; + gi-webkit2 = super.gi-webkit2.override { gi-javascriptcore = self.gi-javascriptcore_4_0_12; }; # requires valid, writeable $HOME hatex-guide = overrideCabal super.hatex-guide (drv: { diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index 6a17762a1fe..5192e09e2de 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -89,7 +89,8 @@ self: let sha256Arg = if isNull sha256 then "--sha256=" else ''--sha256="${sha256}"''; in pkgs.stdenv.mkDerivation { name = "cabal2nix-${name}"; - buildInputs = [ pkgs.cabal2nix ]; + buildInputs = [ pkgs.haskellPackages.cabal2nix ]; + preferLocalBuild = true; phases = ["installPhase"]; LANG = "en_US.UTF-8"; LOCALE_ARCHIVE = pkgs.lib.optionalString pkgs.stdenv.isLinux "${pkgs.glibcLocales}/lib/locale/locale-archive"; diff --git a/pkgs/development/interpreters/love/0.10.nix b/pkgs/development/interpreters/love/0.10.nix index 04b574d4559..854052edf05 100644 --- a/pkgs/development/interpreters/love/0.10.nix +++ b/pkgs/development/interpreters/love/0.10.nix @@ -28,6 +28,8 @@ stdenv.mkDerivation rec { "--with-lua=luajit" ]; + NIX_CFLAGS_COMPILE = [ "-DluaL_reg=luaL_Reg" ]; # needed since luajit-2.1.0-beta3 + meta = { homepage = "http://love2d.org"; description = "A Lua-based 2D game engine/scripting language"; diff --git a/pkgs/development/interpreters/love/0.9.nix b/pkgs/development/interpreters/love/0.9.nix index f08d1d2ec7e..da733ef29a8 100644 --- a/pkgs/development/interpreters/love/0.9.nix +++ b/pkgs/development/interpreters/love/0.9.nix @@ -20,6 +20,8 @@ stdenv.mkDerivation rec { "--with-lua=luajit" ]; + NIX_CFLAGS_COMPILE = [ "-DluaL_reg=luaL_Reg" ]; # needed since luajit-2.1.0-beta3 + meta = { homepage = "http://love2d.org"; description = "A Lua-based 2D game engine/scripting language"; diff --git a/pkgs/development/interpreters/lua-5/expat.nix b/pkgs/development/interpreters/lua-5/expat.nix deleted file mode 100644 index fb0bb5e5ff5..00000000000 --- a/pkgs/development/interpreters/lua-5/expat.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ stdenv, fetchurl, lua5, expat }: - -stdenv.mkDerivation rec { - version = "1.3.0"; - name = "lua-expat-${version}"; - isLibrary = true; - src = fetchurl { - url = "https://matthewwild.co.uk/projects/luaexpat/luaexpat-${version}.tar.gz"; - sha256 = "1hvxqngn0wf5642i5p3vcyhg3pmp102k63s9ry4jqyyqc1wkjq6h"; - }; - - buildInputs = [ lua5 expat ]; - - preBuild = '' - makeFlagsArray=( - LUA_LDIR="$out/share/lua/${lua5.luaversion}" - LUA_INC="-I${lua5}/include" LUA_CDIR="$out/lib/lua/${lua5.luaversion}" - EXPAT_INC="-I${expat.dev}/include"); - ''; - - meta = { - homepage = "http://matthewwild.co.uk/projects/luaexpat"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.flosse ]; - }; -} diff --git a/pkgs/development/interpreters/lua-5/sec.nix b/pkgs/development/interpreters/lua-5/sec.nix deleted file mode 100644 index 478f65fd828..00000000000 --- a/pkgs/development/interpreters/lua-5/sec.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ stdenv, fetchurl, lua5, openssl }: - -stdenv.mkDerivation rec { - version = "0.5"; - name = "lua-sec-${version}"; - src = fetchurl { - url = "https://github.com/brunoos/luasec/archive/luasec-${version}.tar.gz"; - sha256 = "08rm12cr1gjdnbv2jpk7xykby9l292qmz2v0dfdlgb4jfj7mk034"; - }; - - buildInputs = [ lua5 openssl ]; - - hardeningDisable = stdenv.lib.optional stdenv.isi686 "stackprotector"; - - preBuild = '' - makeFlagsArray=( - linux - LUAPATH="$out/lib/lua/${lua5.luaversion}" - LUACPATH="$out/lib/lua/${lua5.luaversion}" - INC_PATH="-I${lua5}/include" - LIB_PATH="-L$out/lib"); - ''; - - meta = { - homepage = "https://github.com/brunoos/luasec"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.flosse ]; - }; -} diff --git a/pkgs/development/interpreters/luajit/default.nix b/pkgs/development/interpreters/luajit/default.nix index 6da5c265aaf..1694e3e4850 100644 --- a/pkgs/development/interpreters/luajit/default.nix +++ b/pkgs/development/interpreters/luajit/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { name = "luajit-${version}"; - version = "2.1.0-beta2"; + version = "2.1.0-beta3"; luaversion = "5.1"; src = fetchurl { url = "http://luajit.org/download/LuaJIT-${version}.tar.gz"; - sha256 = "0iyghj1xjlmd9ywa4flf9yszynf3jhbp0yqb9b49k7ab0g528fbi"; + sha256 = "1hyrhpkwjqsv54hnnx4cl8vk44h9d6c9w0fz1jfjz00w255y7lhs"; }; enableParallelBuilding = true; diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index c3f56b4c664..96ea21e0205 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -23,11 +23,6 @@ let buildInputs = [ flex bison pkgconfig ] ++ lib.optional stdenv.isLinux systemd; - configureFlags = [ - "EXTENSION_DIR=$(out)/lib/php/extensions" - ] ++ lib.optional stdenv.isDarwin "--with-iconv=${libiconv}" - ++ lib.optional stdenv.isLinux "--with-fpm-systemd"; - flags = { # much left to do here... @@ -267,26 +262,40 @@ let hardeningDisable = [ "bindnow" ]; - configurePhase = '' + preConfigure = '' # Don't record the configure flags since this causes unnecessary - # runtime dependencies - except for php-embed, as uwsgi needs them. - ${lib.optionalString (!(config.php.embed or false)) '' + # runtime dependencies for i in main/build-defs.h.in scripts/php-config.in; do substituteInPlace $i \ --replace '@CONFIGURE_COMMAND@' '(omitted)' \ --replace '@CONFIGURE_OPTIONS@' "" \ --replace '@PHP_LDFLAGS@' "" done - ''} - [[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin - ./configure --with-config-file-scan-dir=/etc/php.d --with-config-file-path=$out/etc --prefix=$out $configureFlags + #[[ -z "$libxml2" ]] || addToSearchPath PATH $libxml2/bin + + configureFlags+=(--with-config-file-path=$out/etc \ + --includedir=$dev/include \ + EXTENSION_DIR=$out/lib/php/extensions) ''; + configureFlags = [ + "--with-config-file-scan-dir=/etc/php.d" + ] ++ lib.optional stdenv.isDarwin "--with-iconv=${libiconv}" + ++ lib.optional stdenv.isLinux "--with-fpm-systemd"; + postInstall = '' cp php.ini-production $out/etc/php.ini ''; + postFixup = '' + mkdir -p $dev/bin $dev/share/man/man1 + mv $out/bin/phpize $out/bin/php-config $dev/bin/ + mv $out/share/man/man1/phpize.1.gz \ + $out/share/man/man1/php-config.1.gz \ + $dev/share/man/man1/ + ''; + src = fetchurl { url = "http://www.php.net/distributions/php-${version}.tar.bz2"; inherit sha256; @@ -298,6 +307,7 @@ let license = licenses.php301; maintainers = with maintainers; [ globin ]; platforms = platforms.all; + outputsToInstall = [ "out" "dev" ]; }; patches = if !php7 then [ ./fix-paths.patch ] else [ ./fix-paths-php7.patch ]; diff --git a/pkgs/development/libraries/audio/libgme/default.nix b/pkgs/development/libraries/audio/libgme/default.nix new file mode 100644 index 00000000000..3bc048dd22f --- /dev/null +++ b/pkgs/development/libraries/audio/libgme/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchFromBitbucket, cmake }: +let + version = "0.6.1"; +in stdenv.mkDerivation { + name = "libgme-${version}"; + + meta = with stdenv.lib; { + description = "A collection of video game music chip emulators"; + homepage = "https://bitbucket.org/mpyne/game-music-emu/overview"; + license = licenses.lgpl21; + platforms = platforms.all; + maintainers = with maintainers; [ lheckemann ]; + }; + + src = fetchFromBitbucket { + owner = "mpyne"; + repo = "game-music-emu"; + rev = version; + sha256 = "04vwpv3pmjcil1jw5vcnlg45nch5awqs06y3xqdlp3ibx5i4k199"; + }; + + buildInputs = [ cmake ]; +} diff --git a/pkgs/development/libraries/cimg/builder.sh b/pkgs/development/libraries/cimg/builder.sh deleted file mode 100644 index 6473395493c..00000000000 --- a/pkgs/development/libraries/cimg/builder.sh +++ /dev/null @@ -1,11 +0,0 @@ - -source $stdenv/setup - -unpackPhase -cd $sourceRoot - -install -dm 755 $out/include/cimg $doc/share/doc/cimg/html $doc/share/cimg/examples $doc/share/cimg/plugins - -install -m 644 CImg.h $out/include/cimg -cp -dr --no-preserve=ownership examples/* $doc/share/cimg/examples/ -cp -dr --no-preserve=ownership plugins/* $doc/share/cimg/plugins/ diff --git a/pkgs/development/libraries/cimg/default.nix b/pkgs/development/libraries/cimg/default.nix index a9470ee3f41..c294647b35d 100644 --- a/pkgs/development/libraries/cimg/default.nix +++ b/pkgs/development/libraries/cimg/default.nix @@ -1,5 +1,4 @@ -{ stdenv, fetchurl -, unzip }: +{ stdenv, fetchurl, unzip }: stdenv.mkDerivation rec { @@ -13,7 +12,14 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ unzip ]; - builder = ./builder.sh; + installPhase = '' + install -dm 755 $out/include/CImg/plugins $doc/share/doc/cimg/examples + + install -m 644 CImg.h $out/include/ + cp -dr --no-preserve=ownership examples/* $doc/share/doc/cimg/examples/ + cp -dr --no-preserve=ownership plugins/* $out/include/CImg/plugins/ + cp README.txt $doc/share/doc/cimg/ + ''; outputs = [ "out" "doc" ]; diff --git a/pkgs/development/libraries/eccodes/default.nix b/pkgs/development/libraries/eccodes/default.nix new file mode 100644 index 00000000000..2ba97af133e --- /dev/null +++ b/pkgs/development/libraries/eccodes/default.nix @@ -0,0 +1,52 @@ +{ fetchurl, stdenv +, cmake, netcdf, openjpeg, libpng, gfortran +, enablePython ? false, pythonPackages +, enablePosixThreads ? false +, enableOpenMPThreads ? false}: +with stdenv.lib; +stdenv.mkDerivation rec { + name = "eccodes-${version}"; + version = "2.2.0"; + + src = fetchurl { + url = https://software.ecmwf.int/wiki/download/attachments/45757960/eccodes-2.2.0-Source.tar.gz; + sha256 = "1hzl0akjfxphqivnaj2kg131w8ki80ba3872h0a45f4pchci4h8s"; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ netcdf + openjpeg + libpng + gfortran + ]; + propagatedBuildInputs = optionals enablePython [ + pythonPackages.python + pythonPackages.numpy + ]; + + cmakeFlags = [ "-DENABLE_PYTHON=${if enablePython then "ON" else "OFF"}" + "-DENABLE_PNG=ON" + "-DENABLE_ECCODES_THREADS=${if enablePosixThreads then "ON" else "OFF"}" + "-DENABLE_ECCODES_OMP_THREADS=${if enableOpenMPThreads then "ON" else "OFF"}" + ]; + + enableParallelBuilding = true; + + doCheck = true; + + # Only do tests that don't require downloading 120MB of testdata + checkPhase = stdenv.lib.optionalString (stdenv.isDarwin) '' + substituteInPlace "tests/include.sh" --replace "set -ea" "set -ea; export DYLD_LIBRARY_PATH=$(pwd)/lib" + '' + '' + ctest -R "eccodes_t_(definitions|calendar|unit_tests|md5|uerra|grib_2nd_order_numValues|julian)" -VV + ''; + + meta = { + homepage = "https://software.ecmwf.int/wiki/display/ECC/"; + license = licenses.asl20; + maintainers = with maintainers; [ knedlsepp ]; + platforms = platforms.unix; + description = "ECMWF library for reading and writing GRIB, BUFR and GTS abbreviated header"; + }; +} diff --git a/pkgs/development/libraries/farbfeld/default.nix b/pkgs/development/libraries/farbfeld/default.nix index d14de1938b9..3f309f06630 100644 --- a/pkgs/development/libraries/farbfeld/default.nix +++ b/pkgs/development/libraries/farbfeld/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { name = "farbfeld-${version}"; - version = "2"; + version = "3"; src = fetchgit { url = "http://git.suckless.org/farbfeld"; rev = "refs/tags/${version}"; - sha256 = "1rj6pqn50v6r7l3j7m872fgynxsh22zx863jg0jzmb4x6wx2m2qv"; + sha256 = "1k9cnw2zk9ywcn4hibf7wgi4czwyxhgjdmia6ghpw3wcz8vi71xl"; }; buildInputs = [ libpng libjpeg ]; @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Suckless image format with conversion tools"; - license = licenses.mit; + license = licenses.isc; platforms = platforms.linux; maintainers = with maintainers; [ pSub ]; }; diff --git a/pkgs/development/libraries/ffmpeg-full/default.nix b/pkgs/development/libraries/ffmpeg-full/default.nix index 9a5c228ac82..1839f4d0ef3 100644 --- a/pkgs/development/libraries/ffmpeg-full/default.nix +++ b/pkgs/development/libraries/ffmpeg-full/default.nix @@ -14,7 +14,6 @@ , swscaleAlphaBuild ? true # Alpha channel support in swscale , hardcodedTablesBuild ? true # Hardcode decode tables instead of runtime generation , safeBitstreamReaderBuild ? true # Buffer boundary checking in bitreaders -, memalignHackBuild ? false # Emulate memalign , multithreadBuild ? true # Multithreading via pthreads/win32 threads , networkBuild ? true # Network support , pixelutilsBuild ? true # Pixel utils in libavutil @@ -120,7 +119,6 @@ #, vo-aacenc ? null # AAC encoder #, vo-amrwbenc ? null # AMR-WB encoder , wavpack ? null # Wavpack encoder -, x11grabExtlib ? false, libXext ? null, libXfixes ? null # X11 grabbing (legacy) , x264 ? null # H.264/AVC encoder , x265 ? null # H.265/HEVC encoder , xavs ? null # AVS encoder @@ -227,16 +225,15 @@ assert libxcbxfixesExtlib -> libxcb != null; assert libxcbshapeExtlib -> libxcb != null; assert openglExtlib -> mesa != null; assert opensslExtlib -> gnutls == null && openssl != null && nonfreeLicensing; -assert x11grabExtlib -> libX11 != null && libXv != null; assert nvenc -> nvidia-video-sdk != null && nonfreeLicensing; stdenv.mkDerivation rec { name = "ffmpeg-full-${version}"; - version = "3.2.4"; + version = "3.3"; src = fetchurl { url = "https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz"; - sha256 = "0ymg1mkg1n0770gmjfqp79p5ijxq04smfrsrrxc8pjc0y0agyf3f"; + sha256 = "17anx7rnbi63if1ndr61836lf76dpn47n0y424hc48bj05y7z7jr"; }; patchPhase = ''patchShebangs . @@ -264,7 +261,6 @@ stdenv.mkDerivation rec { (enableFeature swscaleAlphaBuild "swscale-alpha") (enableFeature hardcodedTablesBuild "hardcoded-tables") (enableFeature safeBitstreamReaderBuild "safe-bitstream-reader") - (enableFeature memalignHackBuild "memalign-hack") (if multithreadBuild then ( if isCygwin then "--disable-pthreads --enable-w32threads" @@ -377,7 +373,6 @@ stdenv.mkDerivation rec { #(enableFeature (vo-aacenc != null && version3Licensing) "libvo-aacenc") #(enableFeature (vo-amrwbenc != null && version3Licensing) "libvo-amrwbenc") (enableFeature (wavpack != null) "libwavpack") - (enableFeature (x11grabExtlib && gplLicensing) "x11grab") (enableFeature (x264 != null && gplLicensing) "libx264") (enableFeature (x265 != null && gplLicensing) "libx265") (enableFeature (xavs != null && gplLicensing) "libxavs") @@ -400,10 +395,9 @@ stdenv.mkDerivation rec { bzip2 celt fontconfig freetype frei0r fribidi game-music-emu gnutls gsm libjack2 ladspaH lame libass libbluray libbs2b libcaca libdc1394 libmodplug libogg libopus libssh libtheora libvdpau libvorbis libvpx libwebp libX11 - libxcb libXext libXfixes libXv lzma openal openjpeg_1 libpulseaudio rtmpdump + libxcb libXv lzma openal openjpeg_1 libpulseaudio rtmpdump samba SDL2 soxr speex vid-stab wavpack x264 x265 xavs xvidcore zeromq4 zlib ] ++ optional openglExtlib mesa - ++ optionals x11grabExtlib [ libXext libXfixes ] ++ optionals nonfreeLicensing [ fdk_aac openssl ] ++ optional ((isLinux || isFreeBSD) && libva != null) libva ++ optionals isLinux [ alsaLib libraw1394 libv4l ] diff --git a/pkgs/development/libraries/ffmpeg/3.1.nix b/pkgs/development/libraries/ffmpeg/3.1.nix deleted file mode 100644 index 8e79d1ad0e1..00000000000 --- a/pkgs/development/libraries/ffmpeg/3.1.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ stdenv, callPackage -# Darwin frameworks -, Cocoa, CoreMedia -, ... -}@args: - -callPackage ./generic.nix (args // rec { - version = "${branch}.7"; - branch = "3.1"; - sha256 = "0ldf484r3waslv0sjx3vcwlkfgh28bd1wqcj26snfhav7zkf10kl"; - darwinFrameworks = [ Cocoa CoreMedia ]; - patches = stdenv.lib.optional stdenv.isDarwin ./sdk_detection.patch; -}) diff --git a/pkgs/development/libraries/ffmpeg/3.2.nix b/pkgs/development/libraries/ffmpeg/3.2.nix deleted file mode 100644 index 17ed6fb0e4b..00000000000 --- a/pkgs/development/libraries/ffmpeg/3.2.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ stdenv, callPackage -# Darwin frameworks -, Cocoa, CoreMedia -, ... -}@args: - -callPackage ./generic.nix (args // rec { - version = "${branch}.4"; - branch = "3.2"; - sha256 = "194n8hwmz2rpgh2rz8bc3mnxjyj3jh090mqp7k76msg9la9kbyn0"; - darwinFrameworks = [ Cocoa CoreMedia ]; - patches = stdenv.lib.optional stdenv.isDarwin ./sdk_detection.patch; -}) diff --git a/pkgs/development/libraries/ffmpeg/3.3.nix b/pkgs/development/libraries/ffmpeg/3.3.nix new file mode 100644 index 00000000000..03bb9d44dda --- /dev/null +++ b/pkgs/development/libraries/ffmpeg/3.3.nix @@ -0,0 +1,12 @@ +{ stdenv, callPackage +# Darwin frameworks +, Cocoa, CoreMedia +, ... +}@args: + +callPackage ./generic.nix (args // rec { + version = "${branch}"; + branch = "3.3"; + sha256 = "1p3brx0qa3i3569zlmcmpbxf17q73nrmbx2vp39s8h77r53qdq11"; + darwinFrameworks = [ Cocoa CoreMedia ]; +}) diff --git a/pkgs/development/libraries/ffmpeg/generic.nix b/pkgs/development/libraries/ffmpeg/generic.nix index 0ac82f98a24..8c74abc5709 100644 --- a/pkgs/development/libraries/ffmpeg/generic.nix +++ b/pkgs/development/libraries/ffmpeg/generic.nix @@ -6,7 +6,7 @@ # Build options , runtimeCpuDetectBuild ? true # Detect CPU capabilities at runtime , multithreadBuild ? true # Multithreading via pthreads/win32 threads -, sdlSupport ? !stdenv.isArm, SDL ? null +, sdlSupport ? !stdenv.isArm, SDL ? null, SDL2 ? null , vdpauSupport ? !stdenv.isArm, libvdpau ? null # Developer options , debugDeveloper ? false @@ -128,7 +128,7 @@ stdenv.mkDerivation rec { (ifMinVer "2.4" "--enable-lzma") (ifMinVer "2.2" (enableFeature openglSupport "opengl")) (disDarwinOrArmFix (ifMinVer "0.9" "--enable-libpulse") "0.9" "--disable-libpulse") - (ifMinVer "2.5" (if sdlSupport then "--enable-sdl" else "")) # Only configurable since 2.5, auto detected before then + (ifMinVer "2.5" (if sdlSupport && reqMin "3.2" then "--enable-sdl2" else if sdlSupport then "--enable-sdl" else null)) # autodetected before 2.5, SDL1 support removed in 3.2 for SDL2 (ifMinVer "1.2" "--enable-libsoxr") "--enable-libx264" "--enable-libxvid" @@ -155,7 +155,7 @@ stdenv.mkDerivation rec { ++ optional isLinux alsaLib ++ optionals isDarwin darwinFrameworks ++ optional vdpauSupport libvdpau - ++ optional sdlSupport SDL; + ++ optional sdlSupport (if reqMin "3.2" then SDL2 else SDL); enableParallelBuilding = true; diff --git a/pkgs/development/libraries/ffmpeg/sdk_detection.patch b/pkgs/development/libraries/ffmpeg/sdk_detection.patch deleted file mode 100644 index f0b8789c66b..00000000000 --- a/pkgs/development/libraries/ffmpeg/sdk_detection.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/libavcodec/audiotoolboxdec.c b/libavcodec/audiotoolboxdec.c ---- a/libavcodec/audiotoolboxdec.c -+++ b/libavcodec/audiotoolboxdec.c -@@ -32,7 +32,7 @@ - #include "libavutil/opt.h" - #include "libavutil/log.h" - --#ifndef __MAC_10_11 -+#if __MAC_OS_X_VERSION_MIN_REQUIRED < 101100 - #define kAudioFormatEnhancedAC3 'ec-3' - #endif - diff --git a/pkgs/development/libraries/gdal/default.nix b/pkgs/development/libraries/gdal/default.nix index 9805bc17c44..e39d39ab81b 100644 --- a/pkgs/development/libraries/gdal/default.nix +++ b/pkgs/development/libraries/gdal/default.nix @@ -1,10 +1,12 @@ { stdenv, fetchurl, composableDerivation, unzip, libjpeg, libtiff, zlib , postgresql, mysql, libgeotiff, pythonPackages, proj, geos, openssl -, libpng +, libpng, sqlite, libspatialite , netcdf, hdf5 , curl , netcdfSupport ? true }: +with stdenv.lib; + composableDerivation.composableDerivation {} (fixed: rec { version = "2.1.3"; name = "gdal-${version}"; @@ -14,7 +16,7 @@ composableDerivation.composableDerivation {} (fixed: rec { sha256 = "0jh7filpf5dk5iz5acj7y3y49ihnzqypxckdlj0sjigbqq6hlsmf"; }; - buildInputs = [ unzip libjpeg libtiff libpng proj openssl ] + buildInputs = [ unzip libjpeg libtiff libpng proj openssl sqlite libspatialite ] ++ (with pythonPackages; [ python numpy wrapPython ]) ++ (stdenv.lib.optionals netcdfSupport [ netcdf hdf5 curl ]); @@ -28,10 +30,11 @@ composableDerivation.composableDerivation {} (fixed: rec { "--with-libtiff=${libtiff.dev}" # optional (without largetiff support) "--with-png=${libpng.dev}" # optional "--with-libz=${zlib.dev}" # optional - "--with-pg=${postgresql}/bin/pg_config" "--with-mysql=${mysql.lib.dev}/bin/mysql_config" "--with-geotiff=${libgeotiff}" + "--with-sqlite3=${sqlite.dev}" + "--with-spatialite=${libspatialite}" "--with-python" # optional "--with-static-proj4=${proj}" # optional "--with-geos=${geos}/bin/geos-config"# optional diff --git a/pkgs/development/libraries/glfw/3.x.nix b/pkgs/development/libraries/glfw/3.x.nix index 1500718c737..ec3c2f5569d 100644 --- a/pkgs/development/libraries/glfw/3.x.nix +++ b/pkgs/development/libraries/glfw/3.x.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, cmake, mesa, libXrandr, libXi, libXxf86vm, libXfixes, xlibsWrapper , libXinerama, libXcursor -, darwin +, darwin, fixDarwinDylibNames }: stdenv.mkDerivation rec { @@ -19,15 +19,15 @@ stdenv.mkDerivation rec { buildInputs = [ cmake mesa libXrandr libXi libXxf86vm libXfixes xlibsWrapper libXinerama libXcursor - ] ++ stdenv.lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Cocoa Kernel ]); + ] ++ stdenv.lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Cocoa Kernel fixDarwinDylibNames ]); cmakeFlags = "-DBUILD_SHARED_LIBS=ON"; - meta = with stdenv.lib; { + meta = with stdenv.lib; { description = "Multi-platform library for creating OpenGL contexts and managing input, including keyboard, mouse, joystick and time"; homepage = "http://www.glfw.org/"; license = licenses.zlib; maintainers = with maintainers; [ marcweber ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/development/libraries/gstreamer/bad/default.nix b/pkgs/development/libraries/gstreamer/bad/default.nix index 1125bb7bb8a..7ca2ddd0ce2 100644 --- a/pkgs/development/libraries/gstreamer/bad/default.nix +++ b/pkgs/development/libraries/gstreamer/bad/default.nix @@ -5,7 +5,7 @@ , openjpeg, libopus, librsvg , wildmidi, fluidsynth, libvdpau, wayland , libwebp, xvidcore, gnutls, mjpegtools -, mesa, libintlOrEmpty +, mesa, libintlOrEmpty, libgme }: assert faacSupport -> faac != null; @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { openjpeg libopus librsvg fluidsynth libvdpau libwebp xvidcore gnutls mesa - mjpegtools + mjpegtools libgme ] ++ libintlOrEmpty ++ optional faacSupport faac diff --git a/pkgs/development/libraries/imlib2/default.nix b/pkgs/development/libraries/imlib2/default.nix index a6ad33d842c..8c66dcec161 100644 --- a/pkgs/development/libraries/imlib2/default.nix +++ b/pkgs/development/libraries/imlib2/default.nix @@ -5,11 +5,11 @@ with stdenv.lib; stdenv.mkDerivation rec { - name = "imlib2-1.4.9"; + name = "imlib2-1.4.10"; src = fetchurl { url = "mirror://sourceforge/enlightenment/${name}.tar.bz2"; - sha256 = "08809xxk2555yj6glixzw9a0x3x8cx55imd89kj3r0h152bn8a3x"; + sha256 = "0wm2q2xlkbm71k7mw2jyzbxgzylrkcj5yh6nq58w5gybhp98qs9z"; }; buildInputs = [ libjpeg libtiff giflib libpng bzip2 freetype ] @@ -46,6 +46,7 @@ stdenv.mkDerivation rec { easily, without sacrificing speed. ''; + homepage = http://docs.enlightenment.org/api/imlib2/html; license = licenses.free; platforms = platforms.unix; maintainers = with maintainers; [ spwhitt ]; diff --git a/pkgs/development/libraries/json-c/default.nix b/pkgs/development/libraries/json-c/default.nix index da12b732d00..b8c72d9669e 100644 --- a/pkgs/development/libraries/json-c/default.nix +++ b/pkgs/development/libraries/json-c/default.nix @@ -1,14 +1,12 @@ { stdenv, fetchurl, autoreconfHook }: stdenv.mkDerivation rec { - name = "json-c-0.12"; + name = "json-c-0.12.1"; src = fetchurl { url = "https://s3.amazonaws.com/json-c_releases/releases/${name}-nodoc.tar.gz"; - sha256 = "0dgvjjyb9xva63l6sy70sdch2w4ryvacdmfd3fg2f2v13lqx5mkg"; + sha256 = "148jkvpnxmg1fwwigp0nq9qbd5vzpnmgiw3y34w7k6fymalpsqas"; }; - patches = [ ./unused-variable.patch ]; - outputs = [ "out" "dev" ]; nativeBuildInputs = [ autoreconfHook ]; # won't configure without it, no idea why diff --git a/pkgs/development/libraries/json-c/unused-variable.patch b/pkgs/development/libraries/json-c/unused-variable.patch deleted file mode 100644 index 1726234c526..00000000000 --- a/pkgs/development/libraries/json-c/unused-variable.patch +++ /dev/null @@ -1,18 +0,0 @@ -See https://groups.google.com/forum/#!topic/json-c/TYodemkG338 -diff --git a/json_tokener.c b/json_tokener.c -index 19de8ef..32bc8af 100644 ---- a/json_tokener.c -+++ b/json_tokener.c -@@ -352,12 +352,10 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok, - - case json_tokener_state_inf: /* aka starts with 'i' */ - { -- int size; - int size_inf; - int is_negative = 0; - - printbuf_memappend_fast(tok->pb, &c, 1); -- size = json_min(tok->st_pos+1, json_null_str_len); - size_inf = json_min(tok->st_pos+1, json_inf_str_len); - char *infbuf = tok->pb->buf; - if (*infbuf == '-') diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index 2906dc78886..221fba628ba 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -96,7 +96,7 @@ let kwallet = callPackage ./kwallet.nix {}; kwayland = callPackage ./kwayland.nix {}; kwidgetsaddons = callPackage ./kwidgetsaddons.nix {}; - kwindowsystem = callPackage ./kwindowsystem.nix {}; + kwindowsystem = callPackage ./kwindowsystem {}; kxmlgui = callPackage ./kxmlgui.nix {}; kxmlrpcclient = callPackage ./kxmlrpcclient.nix {}; modemmanager-qt = callPackage ./modemmanager-qt.nix {}; diff --git a/pkgs/development/libraries/kde-frameworks/kinit/default.nix b/pkgs/development/libraries/kde-frameworks/kinit/default.nix index b965f761e92..f5cfa166e91 100644 --- a/pkgs/development/libraries/kde-frameworks/kinit/default.nix +++ b/pkgs/development/libraries/kde-frameworks/kinit/default.nix @@ -1,9 +1,12 @@ { kdeFramework, lib, copyPathsToStore, extra-cmake-modules, kdoctools, - kconfig, kcrash, ki18n, kio, kservice, kwindowsystem + kconfig, kcrash, ki18n, kio, kparts, kservice, kwindowsystem, plasma-framework }: +let + inherit (lib) getLib; +in kdeFramework { name = "kinit"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; @@ -12,4 +15,9 @@ kdeFramework { kconfig kcrash ki18n kio kservice kwindowsystem ]; patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + NIX_CFLAGS_COMPILE = [ + ''-DNIXPKGS_KF5_KIOCORE="${getLib kio}/lib/libKF5KIOCore.so.5"'' + ''-DNIXPKGS_KF5_PARTS="${getLib kparts}/lib/libKF5Parts.so.5"'' + ''-DNIXPKGS_KF5_PLASMA="${getLib plasma-framework}/lib/libKF5Plasma.so.5"'' + ]; } diff --git a/pkgs/development/libraries/kde-frameworks/kinit/kdeinit-extra_libs.patch b/pkgs/development/libraries/kde-frameworks/kinit/kdeinit-extra_libs.patch new file mode 100644 index 00000000000..75e632d4129 --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks/kinit/kdeinit-extra_libs.patch @@ -0,0 +1,49 @@ +Index: kinit-5.32.0/src/kdeinit/kinit.cpp +=================================================================== +--- kinit-5.32.0.orig/src/kdeinit/kinit.cpp ++++ kinit-5.32.0/src/kdeinit/kinit.cpp +@@ -96,11 +96,9 @@ static const char *extra_libs[] = { + "libKF5Parts.5.dylib", + "libKF5Plasma.5.dylib" + #else +- "libKF5KIOCore.so.5", +- "libKF5Parts.so.5", +-//#ifdef __KDE_HAVE_GCC_VISIBILITY // Removed for KF5, we'll see. +- "libKF5Plasma.so.5" +-//#endif ++ NIXPKGS_KF5_KIOCORE, ++ NIXPKGS_KF5_PARTS, ++ NIXPKGS_KF5_PLASMA + #endif + }; + #endif +@@ -1533,20 +1531,6 @@ static int initXconnection() + } + #endif + +-#ifndef Q_OS_OSX +-// Find a shared lib in the lib dir, e.g. libkio.so. +-// Completely unrelated to plugins. +-static QString findSharedLib(const QString &lib) +-{ +- QString path = QFile::decodeName(CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/") + lib; +- if (QFile::exists(path)) { +- return path; +- } +- // We could also look in LD_LIBRARY_PATH, but really, who installs the main libs in different prefixes? +- return QString(); +-} +-#endif +- + extern "C" { + + static void secondary_child_handler(int) +@@ -1692,7 +1676,7 @@ int main(int argc, char **argv) + if (!d.suicide && qEnvironmentVariableIsEmpty("KDE_IS_PRELINKED")) { + const int extrasCount = sizeof(extra_libs) / sizeof(extra_libs[0]); + for (int i = 0; i < extrasCount; i++) { +- const QString extra = findSharedLib(QString::fromLatin1(extra_libs[i])); ++ const QString extra = QString::fromLatin1(extra_libs[i]); + if (!extra.isEmpty()) { + QLibrary l(extra); + l.setLoadHints(QLibrary::ExportExternalSymbolsHint); diff --git a/pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch b/pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch index a5c76fca248..b949723fb54 100644 --- a/pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch +++ b/pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch @@ -1,8 +1,8 @@ -Index: kinit-5.24.0/src/kdeinit/kinit.cpp +Index: kinit-5.32.0/src/kdeinit/kinit.cpp =================================================================== ---- kinit-5.24.0.orig/src/kdeinit/kinit.cpp -+++ kinit-5.24.0/src/kdeinit/kinit.cpp -@@ -672,19 +672,16 @@ static pid_t launch(int argc, const char +--- kinit-5.32.0.orig/src/kdeinit/kinit.cpp ++++ kinit-5.32.0/src/kdeinit/kinit.cpp +@@ -623,19 +623,15 @@ static pid_t launch(int argc, const char if (!libpath.isEmpty()) { if (libpath_relative) { @@ -23,10 +23,9 @@ Index: kinit-5.24.0/src/kdeinit/kinit.cpp + QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' '); + // Reverse the profile list. + std::reverse(profiles.begin(), profiles.end()); -+ const QString libdir = QString::fromLatin1("/lib/"); -+ Q_FOREACH (const QByteArray &profile, profiles) { ++ for (const QByteArray &profile: profiles) { + if (!profile.isEmpty()) { -+ l.setFileName(QFile::decodeName(profile) + libdir + libpath); ++ l.setFileName(QFile::decodeName(profile) + QStringLiteral("/lib/") + libpath); + if (l.load()) break; + } } diff --git a/pkgs/development/libraries/kde-frameworks/kinit/series b/pkgs/development/libraries/kde-frameworks/kinit/series index 576b8a935bf..9195a4e8e6b 100644 --- a/pkgs/development/libraries/kde-frameworks/kinit/series +++ b/pkgs/development/libraries/kde-frameworks/kinit/series @@ -1,2 +1,3 @@ kinit-libpath.patch start_kdeinit-path.patch +kdeinit-extra_libs.patch diff --git a/pkgs/development/libraries/kde-frameworks/kwindowsystem.nix b/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix similarity index 61% rename from pkgs/development/libraries/kde-frameworks/kwindowsystem.nix rename to pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix index 4bfd813ff93..8a91bdbac52 100644 --- a/pkgs/development/libraries/kde-frameworks/kwindowsystem.nix +++ b/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix @@ -1,5 +1,5 @@ { - kdeFramework, lib, + kdeFramework, lib, copyPathsToStore, extra-cmake-modules, qtbase, qttools, qtx11extras }: @@ -12,4 +12,8 @@ kdeFramework { }; nativeBuildInputs = [ extra-cmake-modules qttools ]; propagatedBuildInputs = [ qtx11extras ]; + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DNIXPKGS_QT_PLUGIN_PATH=\"$out/lib/qt5/plugins\"" + ''; } diff --git a/pkgs/development/libraries/kde-frameworks/kwindowsystem/platform-plugins-path.patch b/pkgs/development/libraries/kde-frameworks/kwindowsystem/platform-plugins-path.patch new file mode 100644 index 00000000000..ed24897d342 --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks/kwindowsystem/platform-plugins-path.patch @@ -0,0 +1,22 @@ +Index: kwindowsystem-5.32.0/src/pluginwrapper.cpp +=================================================================== +--- kwindowsystem-5.32.0.orig/src/pluginwrapper.cpp ++++ kwindowsystem-5.32.0/src/pluginwrapper.cpp +@@ -37,14 +37,9 @@ Q_GLOBAL_STATIC(KWindowSystemPluginWrapp + static QStringList pluginCandidates() + { + QStringList ret; +- foreach (const QString &path, QCoreApplication::libraryPaths()) { +- QDir pluginDir(path + QLatin1Literal("/kf5/org.kde.kwindowsystem.platforms")); +- if (!pluginDir.exists()) { +- continue; +- } +- foreach (const QString &entry, pluginDir.entryList(QDir::Files | QDir::NoDotAndDotDot)) { +- ret << pluginDir.absoluteFilePath(entry); +- } ++ QDir pluginDir(QStringLiteral(NIXPKGS_QT_PLUGIN_PATH) + QLatin1Literal("/kf5/org.kde.kwindowsystem.platforms")); ++ foreach (const QString &entry, pluginDir.entryList(QDir::Files | QDir::NoDotAndDotDot)) { ++ ret << pluginDir.absoluteFilePath(entry); + } + return ret; + } diff --git a/pkgs/development/libraries/kde-frameworks/kwindowsystem/series b/pkgs/development/libraries/kde-frameworks/kwindowsystem/series new file mode 100644 index 00000000000..2cd02056ff8 --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks/kwindowsystem/series @@ -0,0 +1 @@ +platform-plugins-path.patch diff --git a/pkgs/development/libraries/libidn2/default.nix b/pkgs/development/libraries/libidn2/default.nix index 9a736a38e3f..61926dad24d 100644 --- a/pkgs/development/libraries/libidn2/default.nix +++ b/pkgs/development/libraries/libidn2/default.nix @@ -4,11 +4,11 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "libidn2-${version}"; - version = "2.0.1"; + version = "2.0.2"; src = fetchurl { url = "mirror://gnu/gnu/libidn/${name}.tar.gz"; - sha256 = "1lzi4wng22gyzlgkr8jk75d03f2bnnch5yhmiwb0hram2la6a8qd"; + sha256 = "1azfhz8zj1c27a5k2cspnkzkyfhcsqx2yc2sygh720dbn8l2imlc"; }; outputs = [ "bin" "dev" "out" "info" "devdoc" ]; diff --git a/pkgs/development/libraries/libmatroska/default.nix b/pkgs/development/libraries/libmatroska/default.nix index 3b3dee138a5..81fa9011e30 100644 --- a/pkgs/development/libraries/libmatroska/default.nix +++ b/pkgs/development/libraries/libmatroska/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, pkgconfig, libebml }: stdenv.mkDerivation rec { - name = "libmatroska-1.4.5"; + name = "libmatroska-1.4.7"; src = fetchurl { url = "http://dl.matroska.org/downloads/libmatroska/${name}.tar.bz2"; - sha256 = "1g2p2phmhkp86ldd2zqx6q0s33r7d38rsfnr4wmmdr81d6j3y0kr"; + sha256 = "1yi5cnv13nhl27xyqayd5l3sf0j3swfj3apzibv71yg9pariwi26"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/development/libraries/libmicrohttpd/default.nix b/pkgs/development/libraries/libmicrohttpd/default.nix index c38d5c82570..0a1fe70bd1d 100644 --- a/pkgs/development/libraries/libmicrohttpd/default.nix +++ b/pkgs/development/libraries/libmicrohttpd/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, libgcrypt, curl, gnutls, pkgconfig }: stdenv.mkDerivation rec { - name = "libmicrohttpd-0.9.52"; + name = "libmicrohttpd-0.9.53"; src = fetchurl { url = "mirror://gnu/libmicrohttpd/${name}.tar.gz"; - sha256 = "1smgxw6jv81yybg86bzr4c2sn7a31apf8q4zz0kpch9xfrp7yyal"; + sha256 = "1i1c7hwjmc4n31cgmfycgi8xsnm3kyc4zzdd4dir6i0z70nyq5cv"; }; outputs = [ "out" "dev" "devdoc" "info" ]; diff --git a/pkgs/development/libraries/libplist/default.nix b/pkgs/development/libraries/libplist/default.nix index 7ff44db52a8..f1c421b4bf7 100644 --- a/pkgs/development/libraries/libplist/default.nix +++ b/pkgs/development/libraries/libplist/default.nix @@ -3,13 +3,12 @@ let inherit (python2Packages) python cython; in stdenv.mkDerivation rec { - name = "libplist-1.12"; + name = "libplist-${version}"; + version = "2.0.0"; - nativeBuildInputs = [ pkgconfig swig2 python cython ]; + nativeBuildInputs = [ pkgconfig swig2 python cython ]; - #patches = [ ./swig.patch ]; - - propagatedBuildInputs = [ libxml2 glib ]; + propagatedBuildInputs = [ glib ]; passthru.swig = swig2; @@ -21,19 +20,12 @@ in stdenv.mkDerivation rec { src = fetchurl { url = "http://www.libimobiledevice.org/downloads/${name}.tar.bz2"; - sha256 = "1gj4nv0bvdm5y2sqm2vj2rn44k67ahw3mh6q614qq4nyngfdxzqf"; + sha256 = "00pnh9zf3iwdji2faccns7vagbmbrwbj9a8zp9s53a6rqaa9czis"; }; meta = { homepage = http://github.com/JonathanBeck/libplist; platforms = stdenv.lib.platforms.all; maintainers = [ ]; - knownVulnerabilities = [ - "CVE-2017-5209: base64decode function in base64.c allows attackers to obtain sensitive information from process memory or cause a denial of service" - "CVE-2017-5545: attackers to obtain sensitive information from process memory or cause a denial of service" - "CVE-2017-5834: A heap-buffer overflow in parse_dict_node" - "CVE-2017-5835: A memory allocation error leading to DoS" - "CVE-2017-5836: A type inconsistency in bplist.c" - ]; }; } diff --git a/pkgs/development/libraries/libplist/swig.patch b/pkgs/development/libraries/libplist/swig.patch deleted file mode 100644 index 9686a7cbf51..00000000000 --- a/pkgs/development/libraries/libplist/swig.patch +++ /dev/null @@ -1,37 +0,0 @@ -commit ca6096bc29873d5a3c03d782b134253ac2e61beb -Author: Yury G. Kudryashov -Date: Fri Sep 24 17:16:40 2010 +0400 - - Install python bindings to libplist prefix, not to system directory. - - This allows one to install libplist to $HOME/prefix and adjust - PYTHONPATH. - -diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt -index 379cb95..fcacde0 100644 ---- a/swig/CMakeLists.txt -+++ b/swig/CMakeLists.txt -@@ -9,16 +9,18 @@ SWIG_ADD_MODULE( plist python plist.i ) - SWIG_LINK_LIBRARIES( plist plist plist++ ${PYTHON_LIBRARIES} ) - - EXEC_PROGRAM("${PYTHON_EXECUTABLE}" -- ARGS "-c 'try:\n import distutils.sysconfig; print distutils.sysconfig.get_python_lib(plat_specific=1)\nexcept: pass\n'" -- OUTPUT_VARIABLE DISTUTILS_PYTHON_ILIBRARY_PATH -+ ARGS "-c 'import sys; print sys.version[:3];'" -+ OUTPUT_VARIABLE PYTHON_SHORT_VERSION - ) - -+SET(PYTHON_SITE_PACKAGES_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_SHORT_VERSION}/site-packages CACHE PATH "The directory where python modules will be installed to.") -+ - INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/_plist${CMAKE_SHARED_MODULE_SUFFIX} -- DESTINATION ${DISTUTILS_PYTHON_ILIBRARY_PATH}/plist/ ) -+ DESTINATION ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/plist/ ) - INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/plist.py -- DESTINATION ${DISTUTILS_PYTHON_ILIBRARY_PATH}/plist/ ) -+ DESTINATION ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/plist/ ) - INSTALL( FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py -- DESTINATION ${DISTUTILS_PYTHON_ILIBRARY_PATH}/plist/ ) -+ DESTINATION ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/plist/ ) - INSTALL( FILES ${CMAKE_CURRENT_SOURCE_DIR}/plist.i - DESTINATION include/plist/swig COMPONENT dev) - diff --git a/pkgs/development/libraries/physics/rivet/default.nix b/pkgs/development/libraries/physics/rivet/default.nix index a82c14fee77..f68c2ea877d 100644 --- a/pkgs/development/libraries/physics/rivet/default.nix +++ b/pkgs/development/libraries/physics/rivet/default.nix @@ -28,8 +28,8 @@ stdenv.mkDerivation rec { xcolor xkeyval ;}; - buildInputs = [ ghostscript hepmc imagemagick python2 latex makeWrapper ]; - propagatedBuildInputs = [ fastjet gsl yoda ]; + buildInputs = [ hepmc imagemagick python2 latex makeWrapper ]; + propagatedBuildInputs = [ fastjet ghostscript gsl yoda ]; preInstall = '' substituteInPlace bin/make-plots \ diff --git a/pkgs/development/libraries/physics/yoda/default.nix b/pkgs/development/libraries/physics/yoda/default.nix index c1f0d3a2930..e6d0f3c500e 100644 --- a/pkgs/development/libraries/physics/yoda/default.nix +++ b/pkgs/development/libraries/physics/yoda/default.nix @@ -1,17 +1,29 @@ -{ stdenv, fetchurl, python2Packages, makeWrapper }: +{ stdenv, fetchurl, fetchpatch, python2Packages, root, makeWrapper, withRootSupport ? false }: stdenv.mkDerivation rec { name = "yoda-${version}"; - version = "1.6.5"; + version = "1.6.6"; src = fetchurl { url = "http://www.hepforge.org/archive/yoda/YODA-${version}.tar.bz2"; - sha256 = "1i8lmj63cd3qnxl9k2cb1abap2pirhx7ffinm834wbpy9iszwxql"; + sha256 = "088xx4q6b03bnj6xg5189m8wsznhal8aj3jk40sbj24idm4jl5yg"; }; pythonPath = []; # python wrapper support - buildInputs = with python2Packages; [ python numpy matplotlib makeWrapper ]; + patches = [ + (fetchpatch { + url = "https://yoda.hepforge.org/hg/yoda/rev/3dbc8927e715?style=raw"; + sha256 = "02rm34z9lbab66p7gpij12qwdph5fddpksg80qz0m537wjwy2ddy"; + }) + (fetchpatch { + url = "https://yoda.hepforge.org/hg/yoda/rev/669c2be582ef?style=raw"; + sha256 = "0s705cl3bazpvpvy46vv1k223knwxq2yy5na1c6lv217sq9w86wj"; + }) + ]; + + buildInputs = with python2Packages; [ python numpy matplotlib makeWrapper ] + ++ stdenv.lib.optional withRootSupport root; enableParallelBuilding = true; diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/nix-profiles-library-paths.patch b/pkgs/development/libraries/qt-5/5.6/qtbase/nix-profiles-library-paths.patch deleted file mode 100644 index d454a74109a..00000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtbase/nix-profiles-library-paths.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: qtbase-opensource-src-5.6.0/src/corelib/kernel/qcoreapplication.cpp -=================================================================== ---- qtbase-opensource-src-5.6.0.orig/src/corelib/kernel/qcoreapplication.cpp -+++ qtbase-opensource-src-5.6.0/src/corelib/kernel/qcoreapplication.cpp -@@ -2533,7 +2533,17 @@ QStringList QCoreApplication::libraryPat - QStringList *app_libpaths = new QStringList; - coreappdata()->app_libpaths.reset(app_libpaths); - -+ // Add library paths derived from NIX_PROFILES. -+ const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' '); -+ const QString plugindir = QString::fromLatin1("/lib/qt5/plugins"); -+ Q_FOREACH (const QByteArray &profile, profiles) { -+ if (!profile.isEmpty()) { -+ app_libpaths->append(QFile::decodeName(profile) + plugindir); -+ } -+ } -+ - const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH"); -+ qunsetenv("QT_PLUGIN_PATH"); // do not propagate to child processes - if (!libPathEnv.isEmpty()) { - QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts); - for (QStringList::const_iterator it = paths.constBegin(); it != paths.constEnd(); ++it) { diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/series b/pkgs/development/libraries/qt-5/5.6/qtbase/series index 2196d838375..9ef8c998c66 100644 --- a/pkgs/development/libraries/qt-5/5.6/qtbase/series +++ b/pkgs/development/libraries/qt-5/5.6/qtbase/series @@ -4,6 +4,5 @@ dlopen-libXcursor.patch dlopen-openssl.patch dlopen-dbus.patch xdg-config-dirs.patch -nix-profiles-library-paths.patch compose-search-path.patch libressl.patch diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/cmake-paths-darwin.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/cmake-paths-darwin.patch deleted file mode 100644 index da7f36542ef..00000000000 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/cmake-paths-darwin.patch +++ /dev/null @@ -1,384 +0,0 @@ -Index: qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -+++ qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -@@ -9,30 +9,6 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0) - endif() - !!ENDIF - --!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND) --!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) --set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") --!!ELSE --get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH) --# Use original install prefix when loaded through a --# cross-prefix symbolic link such as /lib -> /usr/lib. --get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) --get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH) --if(_realCurr STREQUAL _realOrig) -- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) --else() -- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) --endif() --unset(_realOrig) --unset(_realCurr) --unset(_IMPORT_PREFIX) --!!ENDIF --!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) --get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) --!!ELSE --set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") --!!ENDIF -- - !!IF !equals(TEMPLATE, aux) - # For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead. - set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.MAJOR_VERSION).$$eval(QT.$${MODULE}.MINOR_VERSION).$$eval(QT.$${MODULE}.PATCH_VERSION)") -@@ -59,7 +35,10 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta - set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - - !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") -+ set(imported_location \"@NIX_OUT@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") -+ if(NOT EXISTS \"${imported_location}\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") -+ endif() - !!ELSE - set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") - !!ENDIF -@@ -74,45 +53,17 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta - \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" - ) - --!!IF !isEmpty(CMAKE_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") --!!ELSE -- set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") --!!ENDIF -- _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib}) -- if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") -- set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES -- \"IMPORTED_IMPLIB_${Configuration}\" ${imported_implib} -- ) -- endif() --!!ENDIF - endmacro() - !!ENDIF - - if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - - !!IF !no_module_headers --!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) -- set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" -- ) --!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) -- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" -- ) --!!ELSE -- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") --!!ENDIF --!!ELSE - !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) -- set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") -+ set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"@NIX_OUT@/lib\" \"@NIX_OUT@/lib/$${MODULE_INCNAME}.framework/Headers\") - !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) - set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" -+ \"\" - ) - !!ELSE - set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") -@@ -128,7 +80,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME - set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") - !!ENDIF - !!ENDIF --!!ENDIF -+ - !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS) - include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL) - !!ENDIF -@@ -253,28 +205,19 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME - - !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) - !!IF isEmpty(CMAKE_DEBUG_TYPE) --!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE -- if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE -- _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) --!!ELSE // CMAKE_STATIC_WINDOWS_BUILD - if (EXISTS - !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" -+ \"@NIX_OUT@/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" - !!ELSE - \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" - !!ENDIF - AND EXISTS - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) -+ \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) - !!ELSE - \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) - !!ENDIF - _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - endif() - !!ENDIF // CMAKE_DEBUG_TYPE - !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD -@@ -282,36 +225,23 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME - !!ENDIF // CMAKE_RELEASE_TYPE - - !!IF !isEmpty(CMAKE_DEBUG_TYPE) --!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) -- _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) --!!ELSE - _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - - !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) - !!IF isEmpty(CMAKE_RELEASE_TYPE) --!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE -- if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE -- _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) --!!ELSE // CMAKE_STATIC_WINDOWS_BUILD - if (EXISTS - !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" -+ \"@NIX_OUT@/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" - !!ELSE - \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" - !!ENDIF - AND EXISTS - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) -+ \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) - !!ELSE - \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) - !!ENDIF - _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - endif() - !!ENDIF // CMAKE_RELEASE_TYPE - !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD -@@ -328,11 +258,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME - macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) - set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - --!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") --!!ELSE -- set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") --!!ENDIF -+ set(imported_location \"${PLUGIN_LOCATION}\") - _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) - set_target_properties(Qt5::${Plugin} PROPERTIES - \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} -Index: qtbase-opensource-src-5.8.0/src/gui/Qt5GuiConfigExtras.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/src/gui/Qt5GuiConfigExtras.cmake.in -+++ qtbase-opensource-src-5.8.0/src/gui/Qt5GuiConfigExtras.cmake.in -@@ -2,7 +2,7 @@ - !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE) - - !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) --set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\") -+set(Qt5Gui_EGL_INCLUDE_DIRS \"@NIX_DEV@/$$CMAKE_INCLUDE_DIR/QtANGLE\") - !!ELSE - set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\") - !!ENDIF -@@ -17,13 +17,13 @@ macro(_populate_qt5gui_gl_target_propert - set_property(TARGET Qt5::${TargetName} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - - !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Gui_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") -+ set(imported_location \"@NIX_OUT@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") - !!ELSE - set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") - !!ENDIF - - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_implib \"${_qt5Gui_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") -+ set(imported_implib \"@NIX_DEV@/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") - !!ELSE - set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") - !!ENDIF -Index: qtbase-opensource-src-5.8.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/src/widgets/Qt5WidgetsConfigExtras.cmake.in -+++ qtbase-opensource-src-5.8.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in -@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic) - add_executable(Qt5::uic IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") - !!ENDIF -Index: qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtras.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/src/corelib/Qt5CoreConfigExtras.cmake.in -+++ qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtras.cmake.in -@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake) - add_executable(Qt5::qmake IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") - !!ENDIF -@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::moc) - add_executable(Qt5::moc IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") - !!ENDIF -@@ -35,7 +35,7 @@ if (NOT TARGET Qt5::rcc) - add_executable(Qt5::rcc IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") - !!ENDIF -@@ -131,7 +131,7 @@ if (NOT TARGET Qt5::WinMain) - !!IF !isEmpty(CMAKE_RELEASE_TYPE) - set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") - !!ELSE - set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") - !!ENDIF -@@ -145,7 +145,7 @@ if (NOT TARGET Qt5::WinMain) - set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) - - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") - !!ELSE - set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") - !!ENDIF -Index: qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in -+++ qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in -@@ -1,6 +1,6 @@ - - !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE) --set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") -+set(_qt5_corelib_extra_includes \"@NIX_DEV@/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") - !!ELSE - set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") - !!ENDIF -Index: qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in -+++ qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in -@@ -1,6 +1,6 @@ - - !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE) --set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") -+set(_qt5_corelib_extra_includes \"@NIX_DEV@/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") - !!ELSE - set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") - !!ENDIF -Index: qtbase-opensource-src-5.8.0/src/dbus/Qt5DBusConfigExtras.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/src/dbus/Qt5DBusConfigExtras.cmake.in -+++ qtbase-opensource-src-5.8.0/src/dbus/Qt5DBusConfigExtras.cmake.in -@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml) - add_executable(Qt5::qdbuscpp2xml IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") - !!ENDIF -@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::qdbusxml2cpp) - add_executable(Qt5::qdbusxml2cpp IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") - !!ENDIF -Index: qtbase-opensource-src-5.8.0/mkspecs/features/create_cmake.prf -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/mkspecs/features/create_cmake.prf -+++ qtbase-opensource-src-5.8.0/mkspecs/features/create_cmake.prf -@@ -136,28 +136,28 @@ contains(CONFIG, plugin) { - - win32 { - isEmpty(CMAKE_STATIC_TYPE) { -- CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.dll -- CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.dll -+ CMAKE_PLUGIN_LOCATION_RELEASE = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/$${TARGET}.dll -+ CMAKE_PLUGIN_LOCATION_DEBUG = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/$${TARGET}d.dll - } else:mingw { -- CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}.a -- CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}d.a -+ CMAKE_PLUGIN_LOCATION_RELEASE = $${CMAKE_PLUGIN_DIR}/$$PLUGIN_TYPE/lib$${TARGET}.a -+ CMAKE_PLUGIN_LOCATION_DEBUG = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/lib$${TARGET}d.a - } else { # MSVC static -- CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.lib -- CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.lib -+ CMAKE_PLUGIN_LOCATION_RELEASE = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/$${TARGET}.lib -+ CMAKE_PLUGIN_LOCATION_DEBUG = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/$${TARGET}d.lib - } - } else { - mac { - isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .dylib - else: CMAKE_PlUGIN_EXT = .a - -- CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} -- CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} -+ CMAKE_PLUGIN_LOCATION_RELEASE = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} -+ CMAKE_PLUGIN_LOCATION_DEBUG = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} - } else { - isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .so - else: CMAKE_PlUGIN_EXT = .a - -- CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} -- CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} -+ CMAKE_PLUGIN_LOCATION_RELEASE = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} -+ CMAKE_PLUGIN_LOCATION_DEBUG = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} - } - } - cmake_target_file.input = $$PWD/data/cmake/Qt5PluginTarget.cmake.in -Index: qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -=================================================================== ---- qtbase-opensource-src-5.8.0.orig/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -+++ qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -@@ -2,10 +2,10 @@ - add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) - - !!IF !isEmpty(CMAKE_RELEASE_TYPE) --_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") -+_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"@NIX_OUT@/$${CMAKE_PLUGIN_LOCATION_RELEASE}\") - !!ENDIF - !!IF !isEmpty(CMAKE_DEBUG_TYPE) --_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") -+_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"@NIX_OUT@/$${CMAKE_PLUGIN_LOCATION_DEBUG}\") - !!ENDIF - - list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/cmake-paths.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/cmake-paths.patch index 0d5c2d51092..c43653558e3 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/cmake-paths.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/cmake-paths.patch @@ -1,7 +1,7 @@ -Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +Index: qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -+++ qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +--- qtbase-opensource-src-5.8.0.orig/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in ++++ qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -9,30 +9,6 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0) endif() !!ENDIF @@ -45,7 +45,7 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cm !!ELSE set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") !!ENDIF -@@ -74,45 +53,18 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta +@@ -74,19 +53,6 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" ) @@ -65,23 +65,26 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cm endmacro() !!ENDIF - if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - +@@ -95,24 +61,24 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME !!IF !no_module_headers --!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) -- set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS + !!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS - \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" - \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" -- ) --!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) -- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS ++ \"@NIX_OUT@/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" ++ \"@NIX_OUT@/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" + ) + !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS - \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" - \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" -- ) --!!ELSE -- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") --!!ENDIF --!!ELSE ++ \"@NIX_OUT@/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" ++ \"@NIX_OUT@/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" + ) + !!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") + !!ENDIF + !!ELSE !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) - set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"@NIX_DEV@/$$CMAKE_INCLUDE_DIR\" \"@NIX_DEV@/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") @@ -94,27 +97,17 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cm ) !!ELSE set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") -@@ -128,7 +80,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME - set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") - !!ENDIF - !!ENDIF --!!ENDIF -+ - !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS) - include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL) - !!ENDIF -@@ -253,28 +205,19 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME - - !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) +@@ -255,7 +221,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME !!IF isEmpty(CMAKE_DEBUG_TYPE) --!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) + !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) - if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE -- if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE -- _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) --!!ELSE // CMAKE_STATIC_WINDOWS_BUILD ++ if (EXISTS \"@NIX_OUT@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) + !!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) + !!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE +@@ -263,13 +229,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME + !!ELSE // CMAKE_STATIC_WINDOWS_BUILD if (EXISTS !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) - \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" @@ -129,31 +122,17 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cm !!ELSE \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) !!ENDIF - _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - endif() - !!ENDIF // CMAKE_DEBUG_TYPE - !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD -@@ -282,36 +225,23 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME - !!ENDIF // CMAKE_RELEASE_TYPE - - !!IF !isEmpty(CMAKE_DEBUG_TYPE) --!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) -- _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) --!!ELSE - _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - - !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) +@@ -292,7 +258,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME !!IF isEmpty(CMAKE_RELEASE_TYPE) --!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) + !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) - if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE -- if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE -- _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) --!!ELSE // CMAKE_STATIC_WINDOWS_BUILD ++ if (EXISTS \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) + !!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) + !!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE +@@ -300,13 +266,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME + !!ELSE // CMAKE_STATIC_WINDOWS_BUILD if (EXISTS !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) - \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" @@ -168,12 +147,7 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cm !!ELSE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) !!ENDIF - _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - endif() - !!ENDIF // CMAKE_RELEASE_TYPE - !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD -@@ -328,11 +258,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME +@@ -328,11 +294,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) @@ -186,10 +160,10 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cm _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) set_target_properties(Qt5::${Plugin} PROPERTIES \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} -Index: qtbase-opensource-src-5.7.0/src/gui/Qt5GuiConfigExtras.cmake.in +Index: qtbase-opensource-src-5.8.0/src/gui/Qt5GuiConfigExtras.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/gui/Qt5GuiConfigExtras.cmake.in -+++ qtbase-opensource-src-5.7.0/src/gui/Qt5GuiConfigExtras.cmake.in +--- qtbase-opensource-src-5.8.0.orig/src/gui/Qt5GuiConfigExtras.cmake.in ++++ qtbase-opensource-src-5.8.0/src/gui/Qt5GuiConfigExtras.cmake.in @@ -2,7 +2,7 @@ !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE) @@ -215,10 +189,10 @@ Index: qtbase-opensource-src-5.7.0/src/gui/Qt5GuiConfigExtras.cmake.in !!ELSE set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") !!ENDIF -Index: qtbase-opensource-src-5.7.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in +Index: qtbase-opensource-src-5.8.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/widgets/Qt5WidgetsConfigExtras.cmake.in -+++ qtbase-opensource-src-5.7.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in +--- qtbase-opensource-src-5.8.0.orig/src/widgets/Qt5WidgetsConfigExtras.cmake.in ++++ qtbase-opensource-src-5.8.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in @@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic) add_executable(Qt5::uic IMPORTED) @@ -228,10 +202,10 @@ Index: qtbase-opensource-src-5.7.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in !!ELSE set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") !!ENDIF -Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtras.cmake.in +Index: qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtras.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/corelib/Qt5CoreConfigExtras.cmake.in -+++ qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtras.cmake.in +--- qtbase-opensource-src-5.8.0.orig/src/corelib/Qt5CoreConfigExtras.cmake.in ++++ qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtras.cmake.in @@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake) add_executable(Qt5::qmake IMPORTED) @@ -277,10 +251,10 @@ Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtras.cmake.in !!ELSE set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") !!ENDIF -Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in +Index: qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in -+++ qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in +--- qtbase-opensource-src-5.8.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in ++++ qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in @@ -1,6 +1,6 @@ !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE) @@ -289,10 +263,10 @@ Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForIn !!ELSE set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") !!ENDIF -Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in +Index: qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in -+++ qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in +--- qtbase-opensource-src-5.8.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in ++++ qtbase-opensource-src-5.8.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in @@ -1,6 +1,6 @@ !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE) @@ -301,10 +275,10 @@ Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmak !!ELSE set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") !!ENDIF -Index: qtbase-opensource-src-5.7.0/src/dbus/Qt5DBusConfigExtras.cmake.in +Index: qtbase-opensource-src-5.8.0/src/dbus/Qt5DBusConfigExtras.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/dbus/Qt5DBusConfigExtras.cmake.in -+++ qtbase-opensource-src-5.7.0/src/dbus/Qt5DBusConfigExtras.cmake.in +--- qtbase-opensource-src-5.8.0.orig/src/dbus/Qt5DBusConfigExtras.cmake.in ++++ qtbase-opensource-src-5.8.0/src/dbus/Qt5DBusConfigExtras.cmake.in @@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml) add_executable(Qt5::qdbuscpp2xml IMPORTED) @@ -323,10 +297,27 @@ Index: qtbase-opensource-src-5.7.0/src/dbus/Qt5DBusConfigExtras.cmake.in !!ELSE set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") !!ENDIF -Index: qtbase-opensource-src-5.7.0/mkspecs/features/create_cmake.prf +Index: qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in =================================================================== ---- qtbase-opensource-src-5.7.0.orig/mkspecs/features/create_cmake.prf -+++ qtbase-opensource-src-5.7.0/mkspecs/features/create_cmake.prf +--- qtbase-opensource-src-5.8.0.orig/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in ++++ qtbase-opensource-src-5.8.0/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in +@@ -2,10 +2,10 @@ + add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) + + !!IF !isEmpty(CMAKE_RELEASE_TYPE) +-_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") ++_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"@NIX_OUT@/$${CMAKE_PLUGIN_LOCATION_RELEASE}\") + !!ENDIF + !!IF !isEmpty(CMAKE_DEBUG_TYPE) +-_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") ++_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"@NIX_OUT@/$${CMAKE_PLUGIN_LOCATION_DEBUG}\") + !!ENDIF + + list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) +Index: qtbase-opensource-src-5.8.0/mkspecs/features/create_cmake.prf +=================================================================== +--- qtbase-opensource-src-5.8.0.orig/mkspecs/features/create_cmake.prf ++++ qtbase-opensource-src-5.8.0/mkspecs/features/create_cmake.prf @@ -136,28 +136,28 @@ contains(CONFIG, plugin) { win32 { @@ -338,7 +329,7 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/create_cmake.prf } else:mingw { - CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}.a - CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}d.a -+ CMAKE_PLUGIN_LOCATION_RELEASE = $${CMAKE_PLUGIN_DIR}/$$PLUGIN_TYPE/lib$${TARGET}.a ++ CMAKE_PLUGIN_LOCATION_RELEASE = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/lib$${TARGET}.a + CMAKE_PLUGIN_LOCATION_DEBUG = $${CMAKE_PLUGIN_DIR}$$PLUGIN_TYPE/lib$${TARGET}d.a } else { # MSVC static - CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.lib @@ -366,20 +357,3 @@ Index: qtbase-opensource-src-5.7.0/mkspecs/features/create_cmake.prf } } cmake_target_file.input = $$PWD/data/cmake/Qt5PluginTarget.cmake.in -Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -=================================================================== ---- qtbase-opensource-src-5.7.0.orig/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -+++ qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -@@ -2,10 +2,10 @@ - add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) - - !!IF !isEmpty(CMAKE_RELEASE_TYPE) --_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") -+_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"@NIX_OUT@/$${CMAKE_PLUGIN_LOCATION_RELEASE}\") - !!ENDIF - !!IF !isEmpty(CMAKE_DEBUG_TYPE) --_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") -+_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"@NIX_OUT@/$${CMAKE_PLUGIN_LOCATION_DEBUG}\") - !!ENDIF - - list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/compose-search-path.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/compose-search-path.patch index a0e344a7bc6..d0bea4afaa3 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/compose-search-path.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/compose-search-path.patch @@ -1,16 +1,18 @@ -Index: qtbase-opensource-src-5.7.0/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp +Index: qtbase-opensource-src-5.8.0/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp -+++ qtbase-opensource-src-5.7.0/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp -@@ -257,10 +257,7 @@ void TableGenerator::initPossibleLocatio - // the QTCOMPOSE environment variable +--- qtbase-opensource-src-5.8.0.orig/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp ++++ qtbase-opensource-src-5.8.0/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp +@@ -258,12 +258,9 @@ void TableGenerator::initPossibleLocatio + m_possibleLocations.reserve(7); if (qEnvironmentVariableIsSet("QTCOMPOSE")) m_possibleLocations.append(QString::fromLocal8Bit(qgetenv("QTCOMPOSE"))); - m_possibleLocations.append(QStringLiteral("/usr/share/X11/locale")); - m_possibleLocations.append(QStringLiteral("/usr/local/share/X11/locale")); - m_possibleLocations.append(QStringLiteral("/usr/lib/X11/locale")); - m_possibleLocations.append(QStringLiteral("/usr/local/lib/X11/locale")); -+ m_possibleLocations.append(QStringLiteral("${libX11}/share/X11/locale")); m_possibleLocations.append(QStringLiteral(X11_PREFIX "/share/X11/locale")); m_possibleLocations.append(QStringLiteral(X11_PREFIX "/lib/X11/locale")); ++ m_possibleLocations.append(QStringLiteral(NIXPKGS_QTCOMPOSE)); } + + QString TableGenerator::findComposeFile() diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/decrypt-ssl-traffic.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/decrypt-ssl-traffic.patch deleted file mode 100644 index 495db07cfbb..00000000000 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/decrypt-ssl-traffic.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: qtbase-opensource-src-5.5.1/src/network/ssl/qsslsocket_openssl.cpp -=================================================================== ---- qtbase-opensource-src-5.5.1.orig/src/network/ssl/qsslsocket_openssl.cpp -+++ qtbase-opensource-src-5.5.1/src/network/ssl/qsslsocket_openssl.cpp -@@ -48,7 +48,7 @@ - ****************************************************************************/ - - //#define QSSLSOCKET_DEBUG --//#define QT_DECRYPT_SSL_TRAFFIC -+#define QT_DECRYPT_SSL_TRAFFIC - - #include "qssl_p.h" - #include "qsslsocket_openssl_p.h" diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix index be35032785d..e11d9dd1f29 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix @@ -34,13 +34,52 @@ stdenv.mkDerivation { name = "qtbase-${version}"; inherit src version; + propagatedBuildInputs = + [ + libxml2 libxslt openssl pcre16 sqlite zlib + + # Text rendering + harfbuzz icu + + # Image formats + libjpeg libpng libtiff + ] + + ++ lib.optional mesaSupported mesa + + ++ lib.optionals (!stdenv.isDarwin) [ + dbus glib udev + + # Text rendering + fontconfig freetype + + # X11 libs + libX11 libXcomposite libXext libXi libXrender libxcb libxkbcommon xcbutil + xcbutilimage xcbutilkeysyms xcbutilrenderutil xcbutilwm + ] + + ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ + AGL AppKit ApplicationServices Carbon Cocoa + CoreAudio CoreBluetooth CoreLocation CoreServices + DiskArbitration Foundation OpenGL + darwin.cf-private darwin.apple_sdk.sdk darwin.libobjc libiconv + ]); + + buildInputs = [ ] + ++ lib.optionals (!stdenv.isDarwin) [ gtk3 libinput ] + ++ lib.optional developerBuild gdb + ++ lib.optional (cups != null) cups + ++ lib.optional (mysql != null) mysql.lib + ++ lib.optional (postgresql != null) postgresql; + + nativeBuildInputs = + [ bison flex gperf lndir perl pkgconfig python2 ] + ++ lib.optional (!stdenv.isDarwin) patchelf; + outputs = [ "out" "dev" ]; patches = - copyPathsToStore (lib.readPathsFromFile ./. ./series) - ++ [(if stdenv.isDarwin then ./cmake-paths-darwin.patch else ./cmake-paths.patch)] - ++ lib.optional decryptSslTraffic ./decrypt-ssl-traffic.patch - ++ lib.optionals mesaSupported [ ./dlopen-gl.patch ./mkspecs-libgl.patch ]; + copyPathsToStore (lib.readPathsFromFile ./. ./series); postPatch = '' @@ -48,37 +87,19 @@ stdenv.mkDerivation { substituteInPlace src/corelib/global/global.pri --replace /bin/ls ${coreutils}/bin/ls sed -e 's@/\(usr\|opt\)/@/var/empty/@g' -i config.tests/*/*.test -i mkspecs/*/*.conf - sed -i 's/PATHS.*NO_DEFAULT_PATH//' "src/corelib/Qt5Config.cmake.in" - sed -i 's/PATHS.*NO_DEFAULT_PATH//' "src/corelib/Qt5CoreMacros.cmake" - sed -i 's/NO_DEFAULT_PATH//' "src/gui/Qt5GuiConfigExtras.cmake.in" - sed -i 's/PATHS.*NO_DEFAULT_PATH//' "mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in" - - substituteInPlace src/network/kernel/qdnslookup_unix.cpp \ - --replace "@glibc@" "${stdenv.cc.libc.out}" - substituteInPlace src/network/kernel/qhostinfo_unix.cpp \ - --replace "@glibc@" "${stdenv.cc.libc.out}" - - substituteInPlace src/network/ssl/qsslsocket_openssl_symbols.cpp \ - --replace "@openssl@" "${openssl.out}" - '' + lib.optionalString stdenv.isLinux '' - substituteInPlace src/plugins/platforms/xcb/qxcbcursor.cpp \ - --replace "@libXcursor@" "${libXcursor.out}" - - substituteInPlace src/dbus/qdbus_symbols.cpp \ - --replace "@dbus_libs@" "${dbus.lib}" - - substituteInPlace \ - src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp \ - --replace "@libX11@" "${libX11.out}" + sed -i '/PATHS.*NO_DEFAULT_PATH/ d' src/corelib/Qt5Config.cmake.in + sed -i '/PATHS.*NO_DEFAULT_PATH/ d' src/corelib/Qt5CoreMacros.cmake + sed -i 's/NO_DEFAULT_PATH//' src/gui/Qt5GuiConfigExtras.cmake.in + sed -i '/PATHS.*NO_DEFAULT_PATH/ d' mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in '' + + lib.optionalString mesaSupported '' - substituteInPlace \ - src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp \ - --replace "@mesa_lib@" "${mesa.out}" - substituteInPlace mkspecs/common/linux.conf \ - --replace "@mesa_lib@" "${mesa.out}" \ - --replace "@mesa_inc@" "${mesa.dev or mesa}" - ''+ lib.optionalString stdenv.isDarwin '' + sed -i mkspecs/common/linux.conf \ + -e "/^QMAKE_INCDIR_OPENGL/ s|$|${mesa.dev or mesa}/include|" \ + -e "/^QMAKE_LIBDIR_OPENGL/ s|$|${mesa.out}/lib|" + '' + + + lib.optionalString stdenv.isDarwin '' sed -i \ -e 's|! /usr/bin/xcode-select --print-path >/dev/null 2>&1;|false;|' \ -e 's|! /usr/bin/xcrun -find xcodebuild >/dev/null 2>&1;|false;|' \ @@ -106,132 +127,132 @@ stdenv.mkDerivation { -importdir $out/lib/qt5/imports \ -qmldir $out/lib/qt5/qml \ -docdir $out/share/doc/qt5" + + NIX_CFLAGS_COMPILE+=" -DNIXPKGS_QPA_PLATFORM_PLUGIN_PATH=\"''${!outputLib}/lib/qt5/plugins\"" ''; + + NIX_CFLAGS_COMPILE = + [ + "-Wno-error=sign-compare" # freetype-2.5.4 changed signedness of some struct fields + ''-DNIXPKGS_QTCOMPOSE="${libX11.out}/share/X11/locale"'' + ''-DNIXPKGS_LIBRESOLV="${stdenv.cc.libc.out}/lib/libresolv"'' + ''-DNIXPKGS_LIBXCURSOR="${libXcursor.out}/lib/libXcursor"'' + ] + + ++ lib.optional mesaSupported + ''-DNIXPKGS_MESA_GL="${mesa.out}/lib/libGL"'' + + ++ lib.optionals stdenv.isDarwin + [ + "-D__MAC_OS_X_VERSION_MAX_ALLOWED=1090" + "-D__AVAILABILITY_INTERNAL__MAC_10_10=__attribute__((availability(macosx,introduced=10.10)))" + # Note that nixpkgs's objc4 is from macOS 10.11 while the SDK is + # 10.9 which necessitates the above macro definition that mentions + # 10.10 + ] + + ++ lib.optional decryptSslTraffic "-DQT_DECRYPT_SSL_TRAFFIC"; + prefixKey = "-prefix "; - # -no-eglfs, -no-directfb, -no-linuxfb and -no-kms because of the current minimalist mesa - # TODO Remove obsolete and useless flags once the build will be totally mastered - configureFlags = '' - -verbose - -confirm-license - -opensource - - -release - -shared - ${lib.optionalString developerBuild "-developer-build"} - -accessibility - -optimized-qmake - -strip - -no-reduce-relocations - -system-proxies - -pkg-config - - -gui - -widgets - -opengl desktop - -qml-debug - -icu - -pch - - ${lib.optionalString (!system-x86_64) "-no-sse2"} - -no-sse3 - -no-ssse3 - -no-sse4.1 - -no-sse4.2 - -no-avx - -no-avx2 - -no-mips_dsp - -no-mips_dspr2 - - -system-zlib - -system-libjpeg - -system-harfbuzz - -system-pcre - -openssl-linked - - -system-sqlite - -${if mysql != null then "plugin" else "no"}-sql-mysql - -${if postgresql != null then "plugin" else "no"}-sql-psql - - -make libs - -make tools - -${lib.optionalString (buildExamples == false) "no"}make examples - -${lib.optionalString (buildTests == false) "no"}make tests - -v - '' + lib.optionalString (!stdenv.isDarwin) '' - -rpath - -glib - -xcb - -qpa xcb - - -${lib.optionalString (cups == null) "no-"}cups - - -no-eglfs - -no-directfb - -no-linuxfb - -no-kms - - -libinput - -gtk - -system-libpng - -system-xcb - -system-xkbcommon - -dbus-linked - '' + lib.optionalString stdenv.isDarwin '' - -platform macx-clang - -no-use-gold-linker - -no-fontconfig - -qt-freetype - -qt-libpng - ''; - # PostgreSQL autodetection fails sporadically because Qt omits the "-lpq" flag # if dependency paths contain the string "pq", which can occur in the hash. # To prevent these failures, we need to override PostgreSQL detection. PSQL_LIBS = lib.optionalString (postgresql != null) "-L${postgresql.lib}/lib -lpq"; - propagatedBuildInputs = [ - libxml2 libxslt openssl pcre16 sqlite zlib + # -no-eglfs, -no-directfb, -no-linuxfb and -no-kms because of the current minimalist mesa + # TODO Remove obsolete and useless flags once the build will be totally mastered + configureFlags = + [ + "-verbose" + "-confirm-license" + "-opensource" - # Text rendering - harfbuzz icu + "-release" + "-shared" + "-accessibility" + "-optimized-qmake" + "-strip" + "-system-proxies" + "-pkg-config" + ] + ++ lib.optionals developerBuild [ + "-developer-build" + "-no-warnings-are-errors" + ] + ++ [ + "-gui" + "-widgets" + "-opengl desktop" + "-qml-debug" + "-icu" + "-pch" + ] - # Image formats - libjpeg libpng libtiff - ] - ++ lib.optional mesaSupported mesa - ++ lib.optionals (!stdenv.isDarwin) [ - dbus glib udev + ++ [ + ''${lib.optionalString (!system-x86_64) "-no"}-sse2'' + "-no-sse3" + "-no-ssse3" + "-no-sse4.1" + "-no-sse4.2" + "-no-avx" + "-no-avx2" + "-no-mips_dsp" + "-no-mips_dspr2" + ] - # Text rendering - fontconfig freetype + ++ [ + "-system-zlib" + "-system-libjpeg" + "-system-harfbuzz" + "-system-pcre" + "-openssl-linked" + "-system-sqlite" + ''-${if mysql != null then "plugin" else "no"}-sql-mysql'' + ''-${if postgresql != null then "plugin" else "no"}-sql-psql'' - # X11 libs - libX11 libXcomposite libXext libXi libXrender libxcb libxkbcommon xcbutil - xcbutilimage xcbutilkeysyms xcbutilrenderutil xcbutilwm - ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ - AGL AppKit ApplicationServices Carbon Cocoa - CoreAudio CoreBluetooth CoreLocation CoreServices - DiskArbitration Foundation OpenGL - darwin.cf-private darwin.libobjc libiconv - ]); + "-make libs" + "-make tools" + ''-${lib.optionalString (buildExamples == false) "no"}make examples'' + ''-${lib.optionalString (buildTests == false) "no"}make tests'' + "-v" + ] - buildInputs = [ ] - ++ lib.optionals (!stdenv.isDarwin) [ gtk3 libinput ] - ++ lib.optional developerBuild gdb - ++ lib.optional (cups != null) cups - ++ lib.optional (mysql != null) mysql.lib - ++ lib.optional (postgresql != null) postgresql; + ++ lib.optionals (!stdenv.isDarwin) [ + "-rpath" - nativeBuildInputs = [ bison flex gperf lndir perl pkgconfig python2 ] ++ lib.optional (!stdenv.isDarwin) patchelf; + "-system-xcb" + "-xcb" + "-qpa xcb" - # freetype-2.5.4 changed signedness of some struct fields - NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare" - + lib.optionalString stdenv.isDarwin " -D__MAC_OS_X_VERSION_MAX_ALLOWED=1090 -D__AVAILABILITY_INTERNAL__MAC_10_10=__attribute__((availability(macosx,introduced=10.10)))"; - # Note that nixpkgs's objc4 is from macOS 10.11 while the SDK is - # 10.9 which necessitates the above macro definition that mentions - # 10.10 + "-system-xkbcommon" + "-libinput" + "-xkbcommon-evdev" + + "-no-eglfs" + "-no-gbm" + "-no-kms" + "-no-linuxfb" + + ''-${lib.optionalString (cups == null) "no-"}cups'' + "-dbus-linked" + "-glib" + "-gtk" + "-inotify" + "-system-libjpeg" + "-system-libpng" + ] + + ++ lib.optionals stdenv.isDarwin [ + "-platform macx-clang" + "-no-use-gold-linker" + "-no-fontconfig" + "-qt-freetype" + "-qt-libpng" + ]; + + enableParallelBuilding = true; postInstall = '' find "$out" -name "*.cmake" | while read file; do @@ -257,28 +278,43 @@ stdenv.mkDerivation { '' # Don't retain build-time dependencies like gdb. sed '/QMAKE_DEFAULT_.*DIRS/ d' -i $dev/mkspecs/qconfig.pri + '' - # Move libtool archives and qmake projects + # Move libtool archives into $dev + + '' if [ "z''${!outputLib}" != "z''${!outputDev}" ]; then pushd "''${!outputLib}" - find lib -name '*.a' -o -name '*.la'${if stdenv.isDarwin then "" else "-o -name '*.prl'"} | \ - while read -r file; do - mkdir -p "''${!outputDev}/$(dirname "$file")" - mv "''${!outputLib}/$file" "''${!outputDev}/$file" - done + find lib -name '*.a' -o -name '*.la' | while read -r file; do + mkdir -p "''${!outputDev}/$(dirname "$file")" + mv "''${!outputLib}/$file" "''${!outputDev}/$file" + done popd fi '' + + # Move qmake project files into $dev. + # Don't move .prl files on darwin because they end up in + # "dev/lib/Foo.framework/Foo.prl" which interferes with subsequent + # use of lndir in the qtbase setup-hook. On Linux, the .prl files + # are in lib, and so do not cause a subsequent recreation of deep + # framework directory trees. + + lib.optionalString (!stdenv.isDarwin) '' + if [ "z''${!outputLib}" != "z''${!outputDev}" ]; then + pushd "''${!outputLib}" + find lib -name '*.prl' | while read -r file; do + mkdir -p "''${!outputDev}/$(dirname "$file")" + mv "''${!outputLib}/$file" "''${!outputDev}/$file" + done + popd + fi + '' + # fixup .pc file (where to find 'moc' etc.) + lib.optionalString (!stdenv.isDarwin) '' sed -i "$dev/lib/pkgconfig/Qt5Core.pc" \ -e "/^host_bins=/ c host_bins=$dev/bin" '' - # Don' move .prl files on darwin because they end up in - # "dev/lib/Foo.framework/Foo.prl" which interferes with subsequent - # use of lndir in the qtbase setup-hook. On Linux, the .prl files - # are in lib, and so do not cause a subsequent recreation of deep - # framework directory trees. + + lib.optionalString stdenv.isDarwin '' fixDarwinDylibNames_rpath() { local flags=() @@ -300,8 +336,6 @@ stdenv.mkDerivation { then ../../qtbase-setup-hook-darwin.sh else ../../qtbase-setup-hook.sh; - enableParallelBuilding = true; - meta = with lib; { homepage = http://www.qt.io; description = "A cross-platform application framework for C++"; diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-dbus.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-dbus.patch deleted file mode 100644 index 10b0b6701dd..00000000000 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-dbus.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: qtbase-opensource-src-5.7.0/src/dbus/qdbus_symbols.cpp -=================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/dbus/qdbus_symbols.cpp -+++ qtbase-opensource-src-5.7.0/src/dbus/qdbus_symbols.cpp -@@ -97,7 +97,7 @@ bool qdbus_loadLibDBus() - #ifdef Q_OS_WIN - QLatin1String("dbus-1"), - #endif -- QLatin1String("libdbus-1") -+ QLatin1String("@dbus_libs@/lib/libdbus-1") - }; - - lib->unload(); diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-gl.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-gl.patch index ea3073ced50..c835f2bfe44 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-gl.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-gl.patch @@ -1,17 +1,19 @@ -Index: qtbase-opensource-src-5.5.1/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp +Index: qtbase-opensource-src-5.8.0/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp =================================================================== ---- qtbase-opensource-src-5.5.1.orig/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -+++ qtbase-opensource-src-5.5.1/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -@@ -563,7 +563,12 @@ void (*QGLXContext::getProcAddress(const - { +--- qtbase-opensource-src-5.8.0.orig/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp ++++ qtbase-opensource-src-5.8.0/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp +@@ -576,7 +576,14 @@ QFunctionPointer QGLXContext::getProcAdd + #ifndef QT_NO_LIBRARY extern const QString qt_gl_library_name(); // QLibrary lib(qt_gl_library_name()); + // Check system library paths first QLibrary lib(QLatin1String("GL")); ++#ifdef NIXPKGS_MESA_GL + if (!lib.load()) { + // Fallback to Mesa driver -+ lib.setFileName(QLatin1String("@mesa_lib@/lib/libGL")); ++ lib.setFileName(QLatin1String(NIXPKGS_MESA_GL)); + } ++#endif // NIXPKGS_MESA_GL glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB"); + #endif } - } diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-libXcursor.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-libXcursor.patch index 02b7efb73d2..d0e82cf122a 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-libXcursor.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-libXcursor.patch @@ -1,17 +1,20 @@ -Index: qtbase-opensource-src-5.7.0/src/plugins/platforms/xcb/qxcbcursor.cpp +Index: qtbase-opensource-src-5.8.0/src/plugins/platforms/xcb/qxcbcursor.cpp =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/plugins/platforms/xcb/qxcbcursor.cpp -+++ qtbase-opensource-src-5.7.0/src/plugins/platforms/xcb/qxcbcursor.cpp -@@ -309,10 +309,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *c +--- qtbase-opensource-src-5.8.0.orig/src/plugins/platforms/xcb/qxcbcursor.cpp ++++ qtbase-opensource-src-5.8.0/src/plugins/platforms/xcb/qxcbcursor.cpp +@@ -309,13 +309,13 @@ QXcbCursor::QXcbCursor(QXcbConnection *c #if defined(XCB_USE_XLIB) && !defined(QT_NO_LIBRARY) static bool function_ptrs_not_initialized = true; if (function_ptrs_not_initialized) { - QLibrary xcursorLib(QLatin1String("Xcursor"), 1); -+ QLibrary xcursorLib(QLatin1String("@libXcursor@/lib/libXcursor"), 1); ++ QLibrary xcursorLib(QLatin1String(NIXPKGS_LIBXCURSOR), 1); bool xcursorFound = xcursorLib.load(); if (!xcursorFound) { // try without the version number - xcursorLib.setFileName(QLatin1String("Xcursor")); -+ xcursorLib.setFileName(QLatin1String("@libXcursor@/lib/Xcursor")); ++ xcursorLib.setFileName(QLatin1String(NIXPKGS_LIBXCURSOR)); xcursorFound = xcursorLib.load(); } if (xcursorFound) { + ptrXcursorLibraryLoadCursor = + (PtrXcursorLibraryLoadCursor) xcursorLib.resolve("XcursorLibraryLoadCursor"); + ptrXcursorLibraryGetTheme = diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-openssl.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-openssl.patch deleted file mode 100644 index 9891bfeac5b..00000000000 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-openssl.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: qtbase-opensource-src-5.7.0/src/network/ssl/qsslsocket_openssl_symbols.cpp -=================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/network/ssl/qsslsocket_openssl_symbols.cpp -+++ qtbase-opensource-src-5.7.0/src/network/ssl/qsslsocket_openssl_symbols.cpp -@@ -658,8 +658,8 @@ static QPair loadO - #endif - #if defined(SHLIB_VERSION_NUMBER) && !defined(Q_OS_QNX) // on QNX, the libs are always libssl.so and libcrypto.so - // first attempt: the canonical name is libssl.so. -- libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String(SHLIB_VERSION_NUMBER)); -- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String(SHLIB_VERSION_NUMBER)); -+ libssl->setFileNameAndVersion(QLatin1String("@openssl@/lib/libssl"), QLatin1String(SHLIB_VERSION_NUMBER)); -+ libcrypto->setFileNameAndVersion(QLatin1String("@openssl@/lib/libcrypto"), QLatin1String(SHLIB_VERSION_NUMBER)); - if (libcrypto->load() && libssl->load()) { - // libssl.so. and libcrypto.so. found - return pair; -@@ -676,8 +676,8 @@ static QPair loadO - // OS X's /usr/lib/libssl.dylib, /usr/lib/libcrypto.dylib will be picked up in the third - // attempt, _after_ /Contents/Frameworks has been searched. - // iOS does not ship a system libssl.dylib, libcrypto.dylib in the first place. -- libssl->setFileNameAndVersion(QLatin1String("ssl"), -1); -- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), -1); -+ libssl->setFileNameAndVersion(QLatin1String("@openssl@/lib/libssl"), -1); -+ libcrypto->setFileNameAndVersion(QLatin1String("@openssl@/lib/libcrypto"), -1); - if (libcrypto->load() && libssl->load()) { - // libssl.so.0 and libcrypto.so.0 found - return pair; diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-resolv.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-resolv.patch index 98a3610f5fb..ef7cd4a910a 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-resolv.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/dlopen-resolv.patch @@ -1,26 +1,26 @@ -Index: qtbase-opensource-src-5.7.0/src/network/kernel/qdnslookup_unix.cpp +Index: qtbase-opensource-src-5.8.0/src/network/kernel/qdnslookup_unix.cpp =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/network/kernel/qdnslookup_unix.cpp -+++ qtbase-opensource-src-5.7.0/src/network/kernel/qdnslookup_unix.cpp -@@ -85,7 +85,7 @@ static bool resolveLibraryInternal() +--- qtbase-opensource-src-5.8.0.orig/src/network/kernel/qdnslookup_unix.cpp ++++ qtbase-opensource-src-5.8.0/src/network/kernel/qdnslookup_unix.cpp +@@ -90,7 +90,7 @@ static bool resolveLibraryInternal() if (!lib.load()) #endif { - lib.setFileName(QLatin1String("resolv")); -+ lib.setFileName(QLatin1String("@glibc@/lib/resolv")); ++ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV)); if (!lib.load()) return false; } -Index: qtbase-opensource-src-5.7.0/src/network/kernel/qhostinfo_unix.cpp +Index: qtbase-opensource-src-5.8.0/src/network/kernel/qhostinfo_unix.cpp =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/network/kernel/qhostinfo_unix.cpp -+++ qtbase-opensource-src-5.7.0/src/network/kernel/qhostinfo_unix.cpp +--- qtbase-opensource-src-5.8.0.orig/src/network/kernel/qhostinfo_unix.cpp ++++ qtbase-opensource-src-5.8.0/src/network/kernel/qhostinfo_unix.cpp @@ -100,7 +100,7 @@ static bool resolveLibraryInternal() if (!lib.load()) #endif { - lib.setFileName(QLatin1String("resolv")); -+ lib.setFileName(QLatin1String("@glibc@/lib/libresolv")); ++ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV)); if (!lib.load()) return false; } diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/libressl.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/libressl.patch index 4390db977a7..e9c60e7ab07 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/libressl.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/libressl.patch @@ -9,11 +9,11 @@ is defined in openssl, but not in libressl. src/network/ssl/qsslcontext_openssl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: qtbase-opensource-src-5.7.0/src/network/ssl/qsslcontext_openssl.cpp +Index: qtbase-opensource-src-5.8.0/src/network/ssl/qsslcontext_openssl.cpp =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/network/ssl/qsslcontext_openssl.cpp -+++ qtbase-opensource-src-5.7.0/src/network/ssl/qsslcontext_openssl.cpp -@@ -347,7 +347,7 @@ init_context: +--- qtbase-opensource-src-5.8.0.orig/src/network/ssl/qsslcontext_openssl.cpp ++++ qtbase-opensource-src-5.8.0/src/network/ssl/qsslcontext_openssl.cpp +@@ -351,7 +351,7 @@ init_context: const QVector qcurves = sslContext->sslConfiguration.ellipticCurves(); if (!qcurves.isEmpty()) { @@ -22,7 +22,7 @@ Index: qtbase-opensource-src-5.7.0/src/network/ssl/qsslcontext_openssl.cpp // Set the curves to be used if (q_SSLeay() >= 0x10002000L) { // SSL_CTX_ctrl wants a non-const pointer as last argument, -@@ -360,7 +360,7 @@ init_context: +@@ -364,7 +364,7 @@ init_context: sslContext->errorCode = QSslError::UnspecifiedError; } } else diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/mkspecs-libgl.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/mkspecs-libgl.patch deleted file mode 100644 index fda3d3e3653..00000000000 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/mkspecs-libgl.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: qtbase-opensource-src-5.5.1/mkspecs/common/linux.conf -=================================================================== ---- qtbase-opensource-src-5.5.1.orig/mkspecs/common/linux.conf -+++ qtbase-opensource-src-5.5.1/mkspecs/common/linux.conf -@@ -12,8 +12,8 @@ QMAKE_INCDIR = - QMAKE_LIBDIR = - QMAKE_INCDIR_X11 = - QMAKE_LIBDIR_X11 = --QMAKE_INCDIR_OPENGL = --QMAKE_LIBDIR_OPENGL = -+QMAKE_INCDIR_OPENGL = @mesa_inc@/include -+QMAKE_LIBDIR_OPENGL = @mesa_lib@/lib - QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL - QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL - QMAKE_INCDIR_EGL = diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/nix-profiles-library-paths.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/nix-profiles-library-paths.patch deleted file mode 100644 index ebaf3651a6d..00000000000 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/nix-profiles-library-paths.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: qtbase-opensource-src-5.7.0/src/corelib/kernel/qcoreapplication.cpp -=================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/corelib/kernel/qcoreapplication.cpp -+++ qtbase-opensource-src-5.7.0/src/corelib/kernel/qcoreapplication.cpp -@@ -2487,7 +2487,17 @@ QStringList QCoreApplication::libraryPat - QStringList *app_libpaths = new QStringList; - coreappdata()->app_libpaths.reset(app_libpaths); - -+ // Add library paths derived from NIX_PROFILES. -+ const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' '); -+ const QString plugindir = QString::fromLatin1("/lib/qt5/plugins"); -+ for (const QByteArray &profile: profiles) { -+ if (!profile.isEmpty()) { -+ app_libpaths->append(QFile::decodeName(profile) + plugindir); -+ } -+ } -+ - const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH"); -+ qunsetenv("QT_PLUGIN_PATH"); // do not propagate to child processes - if (!libPathEnv.isEmpty()) { - QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts); - for (QStringList::const_iterator it = paths.constBegin(); it != paths.constEnd(); ++it) { diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/qnativesocketengine-type-pun.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/qnativesocketengine-type-pun.patch new file mode 100644 index 00000000000..ad40dfab2f7 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/qnativesocketengine-type-pun.patch @@ -0,0 +1,14 @@ +Index: qtbase-opensource-src-5.8.0/src/network/socket/qnativesocketengine_unix.cpp +=================================================================== +--- qtbase-opensource-src-5.8.0.orig/src/network/socket/qnativesocketengine_unix.cpp ++++ qtbase-opensource-src-5.8.0/src/network/socket/qnativesocketengine_unix.cpp +@@ -979,7 +979,8 @@ qint64 QNativeSocketEnginePrivate::nativ + if (cmsgptr->cmsg_len == CMSG_LEN(sizeof(int)) + && ((cmsgptr->cmsg_level == IPPROTO_IPV6 && cmsgptr->cmsg_type == IPV6_HOPLIMIT) + || (cmsgptr->cmsg_level == IPPROTO_IP && cmsgptr->cmsg_type == IP_TTL))) { +- header->hopLimit = *reinterpret_cast(CMSG_DATA(cmsgptr)); ++ int *ttl = reinterpret_cast(CMSG_DATA(cmsgptr)); ++ header->hopLimit = *ttl; + } + + #ifndef QT_NO_SCTP diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-plugin-path.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-plugin-path.patch new file mode 100644 index 00000000000..6d40ed19c00 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-plugin-path.patch @@ -0,0 +1,15 @@ +Index: qtbase-opensource-src-5.8.0/src/gui/kernel/qguiapplication.cpp +=================================================================== +--- qtbase-opensource-src-5.8.0.orig/src/gui/kernel/qguiapplication.cpp ++++ qtbase-opensource-src-5.8.0/src/gui/kernel/qguiapplication.cpp +@@ -1217,6 +1217,10 @@ void QGuiApplicationPrivate::createPlatf + + // Load the platform integration + QString platformPluginPath = QString::fromLocal8Bit(qgetenv("QT_QPA_PLATFORM_PLUGIN_PATH")); ++ if (!platformPluginPath.isEmpty()) { ++ platformPluginPath.append(QStringLiteral(":")); ++ } ++ platformPluginPath.append(QStringLiteral(NIXPKGS_QPA_PLATFORM_PLUGIN_PATH)); + + + QByteArray platformName; diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/series b/pkgs/development/libraries/qt-5/5.8/qtbase/series index 2196d838375..0378ca1f503 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/series +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/series @@ -1,9 +1,9 @@ dlopen-resolv.patch tzdir.patch dlopen-libXcursor.patch -dlopen-openssl.patch -dlopen-dbus.patch xdg-config-dirs.patch -nix-profiles-library-paths.patch -compose-search-path.patch libressl.patch +qpa-plugin-path.patch +dlopen-gl.patch +compose-search-path.patch +cmake-paths.patch diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/tzdir.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/tzdir.patch index f4056dd9cc9..b8c05815a78 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/tzdir.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/tzdir.patch @@ -1,29 +1,28 @@ -Index: qtbase-opensource-src-5.7.0/src/corelib/tools/qtimezoneprivate_tz.cpp +Index: qtbase-opensource-src-5.8.0/src/corelib/tools/qtimezoneprivate_tz.cpp =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/corelib/tools/qtimezoneprivate_tz.cpp -+++ qtbase-opensource-src-5.7.0/src/corelib/tools/qtimezoneprivate_tz.cpp -@@ -68,7 +68,10 @@ typedef QHash Q +--- qtbase-opensource-src-5.8.0.orig/src/corelib/tools/qtimezoneprivate_tz.cpp ++++ qtbase-opensource-src-5.8.0/src/corelib/tools/qtimezoneprivate_tz.cpp +@@ -70,7 +70,11 @@ typedef QHash Q // Parse zone.tab table, assume lists all installed zones, if not will need to read directories static QTzTimeZoneHash loadTzTimeZones() { - QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); -+ QString path = qgetenv("TZDIR"); -+ path += "/zone.tab"; ++ // Try TZDIR first, in case we're running on NixOS. ++ QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab"); ++ // Fallback to traditional paths in case we are not on NixOS. + if (!QFile::exists(path)) + path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); if (!QFile::exists(path)) path = QStringLiteral("/usr/lib/zoneinfo/zone.tab"); -@@ -566,12 +569,18 @@ void QTzTimeZonePrivate::init(const QByt +@@ -642,12 +646,16 @@ void QTzTimeZonePrivate::init(const QByt if (!tzif.open(QIODevice::ReadOnly)) return; } else { - // Open named tz, try modern path first, if fails try legacy path - tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); -+ // Try TZDIR first -+ QString zoneinfoDir = qgetenv("TZDIR"); -+ zoneinfoDir += "/" + QString::fromLocal8Bit(ianaId); -+ tzif.setFileName(zoneinfoDir); ++ // Try TZDIR first, in case we're running on NixOS ++ tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId)); if (!tzif.open(QIODevice::ReadOnly)) { - tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); - if (!tzif.open(QIODevice::ReadOnly)) diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/xdg-config-dirs.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/xdg-config-dirs.patch index 1f2f316c5b2..b5c21f064a4 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/xdg-config-dirs.patch +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/xdg-config-dirs.patch @@ -1,8 +1,8 @@ -Index: qtbase-opensource-src-5.7.0/src/corelib/io/qsettings.cpp +Index: qtbase-opensource-src-5.8.0/src/corelib/io/qsettings.cpp =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/corelib/io/qsettings.cpp -+++ qtbase-opensource-src-5.7.0/src/corelib/io/qsettings.cpp -@@ -1161,6 +1161,23 @@ QConfFileSettingsPrivate::QConfFileSetti +--- qtbase-opensource-src-5.8.0.orig/src/corelib/io/qsettings.cpp ++++ qtbase-opensource-src-5.8.0/src/corelib/io/qsettings.cpp +@@ -1134,6 +1134,23 @@ QConfFileSettingsPrivate::QConfFileSetti confFiles[F_System | F_Application].reset(QConfFile::fromName(systemPath + appFile, false)); confFiles[F_System | F_Organization].reset(QConfFile::fromName(systemPath + orgFile, false)); @@ -26,10 +26,10 @@ Index: qtbase-opensource-src-5.7.0/src/corelib/io/qsettings.cpp for (i = 0; i < NumConfFiles; ++i) { if (confFiles[i]) { spec = i; -Index: qtbase-opensource-src-5.7.0/src/corelib/io/qsettings_p.h +Index: qtbase-opensource-src-5.8.0/src/corelib/io/qsettings_p.h =================================================================== ---- qtbase-opensource-src-5.7.0.orig/src/corelib/io/qsettings_p.h -+++ qtbase-opensource-src-5.7.0/src/corelib/io/qsettings_p.h +--- qtbase-opensource-src-5.8.0.orig/src/corelib/io/qsettings_p.h ++++ qtbase-opensource-src-5.8.0/src/corelib/io/qsettings_p.h @@ -246,7 +246,7 @@ public: F_Organization = 0x1, F_User = 0x0, diff --git a/pkgs/development/libraries/qt-5/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/make-qt-wrapper.sh index 8f42682fa23..4a5651f74c9 100644 --- a/pkgs/development/libraries/qt-5/make-qt-wrapper.sh +++ b/pkgs/development/libraries/qt-5/make-qt-wrapper.sh @@ -2,9 +2,9 @@ wrapQtProgram() { local prog="$1" shift wrapProgram "$prog" \ - --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ - --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ - --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ + --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ + --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ --prefix GIO_EXTRA_MODULES : "$GIO_EXTRA_MODULES" \ @@ -17,9 +17,9 @@ makeQtWrapper() { shift shift makeWrapper "$old" "$new" \ - --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ - --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ - --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ + --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ + --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ --prefix GIO_EXTRA_MODULES : "$GIO_EXTRA_MODULES" \ diff --git a/pkgs/development/libraries/qtinstaller/default.nix b/pkgs/development/libraries/qtinstaller/default.nix new file mode 100644 index 00000000000..29db95e6919 --- /dev/null +++ b/pkgs/development/libraries/qtinstaller/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, qtdeclarative , qttools, qtbase, qmakeHook }: + +stdenv.mkDerivation rec { + name = "qtinstaller"; + buildInputs = [ qtdeclarative qttools qtbase qmakeHook ]; + version = "2.0.3"; + src = fetchurl { + url = "http://download.qt.io/official_releases/qt-installer-framework/${version}/qt-installer-framework-opensource-${version}-src.tar.gz"; + sha256 = "003gwjg02isw8qjyka377g1ahlisfyi44l6xfa4hvvdgqqq0hy2f"; + name = "qt-installer-framework-opensource-src-${version}.tar.gz"; + }; + + outputs = [ "out" "dev" "doc" ]; + + installPhase = '' + mkdir -p $out/{bin,lib,share/qt-installer-framework} + cp -a bin/{archivegen,binarycreator,devtool,installerbase,repogen} $out/bin + cp -a lib/{libinstaller.so*,lib7z.a} $out/lib + cp -a examples $out/share/qt-installer-framework/ + ''; + + postFixup = '' + moveToOutput "bin/archivegen" "$out" + moveToOutput "bin/binarycreator" "$out" + moveToOutput "bin/devtool" "$out" + moveToOutput "bin/installerbase" "$out" + moveToOutput "bin/repogen" "$out" + moveToOutput "share" "$doc" + moveToOutput "lib/libinstaller.so" "$out" + moveToOutput "lib/libinstaller.so.1" "$out" + moveToOutput "lib/libinstaller.so.1.0" "$out" + moveToOutput "lib/libinstaller.so.1.0.0" "$out" + ''; + + meta = (qtbase.meta) // { + description = ''Qt installer framework''; + }; +} diff --git a/pkgs/development/libraries/science/math/blas/default.nix b/pkgs/development/libraries/science/math/blas/default.nix index ce35743e8bc..6f729e8a0b2 100644 --- a/pkgs/development/libraries/science/math/blas/default.nix +++ b/pkgs/development/libraries/science/math/blas/default.nix @@ -46,6 +46,13 @@ stdenv.mkDerivation rec { ln -s libblas.so.${version} "$out/lib/libblas.so" ''; + preFixup = stdenv.lib.optionalString stdenv.isDarwin '' + for fn in $(find $out/lib -name "*.so*"); do + if [ -L "$fn" ]; then continue; fi + install_name_tool -id "$fn" "$fn" + done + ''; + meta = { description = "Basic Linear Algebra Subprograms"; license = stdenv.lib.licenses.publicDomain; diff --git a/pkgs/development/libraries/vulkan-loader/default.nix b/pkgs/development/libraries/vulkan-loader/default.nix index 4432c22bcd8..f62279786c6 100644 --- a/pkgs/development/libraries/vulkan-loader/default.nix +++ b/pkgs/development/libraries/vulkan-loader/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchgit, fetchFromGitHub, cmake, pkgconfig, git, python3, python3Packages, glslang, spirv-tools, x11, libxcb, libXrandr, - libXext, wayland, mesa_noglu }: + libXext, wayland, mesa_noglu, makeWrapper }: let version = "1.0.42.2"; @@ -16,6 +16,7 @@ stdenv.mkDerivation rec { name = "vulkan-loader-${version}"; inherit version src; + nativeBuildInputs = [ makeWrapper ]; buildInputs = [ cmake pkgconfig git python3 python3Packages.lxml glslang spirv-tools x11 libxcb libXrandr libXext wayland ]; @@ -50,7 +51,10 @@ stdenv.mkDerivation rec { mkdir -p $demos/bin cp demos/*.spv demos/*.ppm $demos/bin find demos -type f -executable -not -name vulkaninfo -exec cp {} $demos/bin \; - ''; + for p in cube cubepp; do + wrapProgram $demos/bin/$p --run "cd $demos/bin" + done + ''; meta = with stdenv.lib; { description = "LunarG Vulkan loader"; diff --git a/pkgs/development/libraries/wxGTK-2.8/default.nix b/pkgs/development/libraries/wxwidgets/2.8/default.nix similarity index 71% rename from pkgs/development/libraries/wxGTK-2.8/default.nix rename to pkgs/development/libraries/wxwidgets/2.8/default.nix index 9538f1dd1f8..15db4386e01 100644 --- a/pkgs/development/libraries/wxGTK-2.8/default.nix +++ b/pkgs/development/libraries/wxwidgets/2.8/default.nix @@ -65,6 +65,10 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = { - platforms = stdenv.lib.platforms.linux; + platforms = platforms.linux; + license = licenses.wxWindows; + homepage = "https://www.wxwidgets.org/"; + description = "a C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base"; + longDescription = "wxWidgets gives you a single, easy-to-use API for writing GUI applications on multiple platforms that still utilize the native platform's controls and utilities. Link with the appropriate library for your platform and compiler, and your application will adopt the look and feel appropriate to that platform. On top of great GUI functionality, wxWidgets gives you: online help, network programming, streams, clipboard and drag and drop, multithreading, image loading and saving in a variety of popular formats, database support, HTML viewing and printing, and much more."; }; } diff --git a/pkgs/development/libraries/wxGTK-2.9/default.nix b/pkgs/development/libraries/wxwidgets/2.9/default.nix similarity index 71% rename from pkgs/development/libraries/wxGTK-2.9/default.nix rename to pkgs/development/libraries/wxwidgets/2.9/default.nix index 28cd79b5549..af9dde75cf4 100644 --- a/pkgs/development/libraries/wxGTK-2.9/default.nix +++ b/pkgs/development/libraries/wxwidgets/2.9/default.nix @@ -67,6 +67,10 @@ stdenv.mkDerivation { enableParallelBuilding = true; meta = { - platforms = with stdenv.lib.platforms; darwin ++ linux; + platforms = with platforms; darwin ++ linux; + license = licenses.wxWindows; + homepage = "https://www.wxwidgets.org/"; + description = "a C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base"; + longDescription = "wxWidgets gives you a single, easy-to-use API for writing GUI applications on multiple platforms that still utilize the native platform's controls and utilities. Link with the appropriate library for your platform and compiler, and your application will adopt the look and feel appropriate to that platform. On top of great GUI functionality, wxWidgets gives you: online help, network programming, streams, clipboard and drag and drop, multithreading, image loading and saving in a variety of popular formats, database support, HTML viewing and printing, and much more."; }; } diff --git a/pkgs/development/libraries/wxGTK-3.0/default.nix b/pkgs/development/libraries/wxwidgets/3.0/default.nix similarity index 75% rename from pkgs/development/libraries/wxGTK-3.0/default.nix rename to pkgs/development/libraries/wxwidgets/3.0/default.nix index 4fea863827f..5b1e0fc067c 100644 --- a/pkgs/development/libraries/wxGTK-3.0/default.nix +++ b/pkgs/development/libraries/wxwidgets/3.0/default.nix @@ -78,6 +78,10 @@ stdenv.mkDerivation { enableParallelBuilding = true; meta = { - platforms = with stdenv.lib.platforms; darwin ++ linux; + platforms = with platforms; darwin ++ linux; + license = licenses.wxWindows; + homepage = "https://www.wxwidgets.org/"; + description = "a C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base"; + longDescription = "wxWidgets gives you a single, easy-to-use API for writing GUI applications on multiple platforms that still utilize the native platform's controls and utilities. Link with the appropriate library for your platform and compiler, and your application will adopt the look and feel appropriate to that platform. On top of great GUI functionality, wxWidgets gives you: online help, network programming, streams, clipboard and drag and drop, multithreading, image loading and saving in a variety of popular formats, database support, HTML viewing and printing, and much more."; }; } diff --git a/pkgs/development/libraries/wxmac/default.nix b/pkgs/development/libraries/wxwidgets/3.0/mac.nix similarity index 79% rename from pkgs/development/libraries/wxmac/default.nix rename to pkgs/development/libraries/wxwidgets/3.0/mac.nix index f4e71424833..fc747268cab 100644 --- a/pkgs/development/libraries/wxmac/default.nix +++ b/pkgs/development/libraries/wxwidgets/3.0/mac.nix @@ -100,6 +100,10 @@ stdenv.mkDerivation rec { meta = { platforms = platforms.darwin; + license = licenses.wxWindows; maintainers = [ maintainers.lnl7 ]; + homepage = "https://www.wxwidgets.org/"; + description = "a C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base"; + longDescription = "wxWidgets gives you a single, easy-to-use API for writing GUI applications on multiple platforms that still utilize the native platform's controls and utilities. Link with the appropriate library for your platform and compiler, and your application will adopt the look and feel appropriate to that platform. On top of great GUI functionality, wxWidgets gives you: online help, network programming, streams, clipboard and drag and drop, multithreading, image loading and saving in a variety of popular formats, database support, HTML viewing and printing, and much more."; }; } diff --git a/pkgs/development/ocaml-modules/lambda-term/default.nix b/pkgs/development/ocaml-modules/lambda-term/default.nix index f66773d426a..86e4ebccbae 100644 --- a/pkgs/development/ocaml-modules/lambda-term/default.nix +++ b/pkgs/development/ocaml-modules/lambda-term/default.nix @@ -1,10 +1,10 @@ -{ stdenv, fetchurl, libev, ocaml, findlib, ocamlbuild, ocaml_lwt, ocaml_react, zed }: +{ stdenv, buildOcaml, fetchurl, libev, ocaml, findlib, ocamlbuild, ocaml_lwt, ocaml_react, zed }: assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.01"; -stdenv.mkDerivation rec { +buildOcaml rec { version = "1.10"; - name = "lambda-term-${version}"; + name = "lambda-term"; src = fetchurl { url = "https://github.com/diml/lambda-term/archive/${version}.tar.gz"; @@ -17,6 +17,8 @@ stdenv.mkDerivation rec { createFindlibDestdir = true; + hasSharedObjects = true; + meta = { description = "Terminal manipulation library for OCaml"; longDescription = '' Lambda-term is a cross-platform library for diff --git a/pkgs/development/ocaml-modules/lwt/default.nix b/pkgs/development/ocaml-modules/lwt/default.nix index 53d5a25a39e..d450a877517 100644 --- a/pkgs/development/ocaml-modules/lwt/default.nix +++ b/pkgs/development/ocaml-modules/lwt/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchzip, which, cryptopp, ocaml, findlib, ocamlbuild, camlp4 +{ stdenv, buildOcaml, fetchzip, which, cryptopp, ocaml, findlib, ocamlbuild, camlp4 , ocaml_react, ocaml_ssl, libev, pkgconfig, ncurses, ocaml_oasis, glib , ppx_tools, result, cppo , ppxSupport ? stdenv.lib.versionAtLeast ocaml.version "4.02" @@ -15,8 +15,8 @@ let param = }; in -stdenv.mkDerivation rec { - name = "ocaml-lwt-${version}"; +buildOcaml rec { + name = "lwt"; inherit (param) version; src = fetchzip { @@ -36,6 +36,8 @@ stdenv.mkDerivation rec { createFindlibDestdir = true; + hasSharedObjects = true; + meta = with stdenv.lib; { homepage = http://ocsigen.org/lwt; description = "Lightweight thread library for Objective Caml"; diff --git a/pkgs/development/ocaml-modules/merlin_extend/default.nix b/pkgs/development/ocaml-modules/merlin_extend/default.nix new file mode 100644 index 00000000000..79b8b69bbb5 --- /dev/null +++ b/pkgs/development/ocaml-modules/merlin_extend/default.nix @@ -0,0 +1,26 @@ +{ stdenv, buildOcaml, fetchFromGitHub, cppo }: + +buildOcaml rec { + name = "merlin_extend"; + version = "0.3"; + + minimumSupportedOcamlVersion = "4.02"; + + src = fetchFromGitHub { + owner = "let-def"; + repo = "merlin-extend"; + sha256 = "1z6hybcb7ry0bkzjd0r2dlcgjnhhxdsr06x3h03sj7h5fihsc7vd"; + rev = "v${version}"; + }; + + buildInputs = [ cppo ]; + + createFindlibDestdir = true; + + meta = with stdenv.lib; { + homepage = https://github.com/let-def/merlin-extend; + description = "SDK to extend Merlin"; + license = licenses.mit; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix b/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix index 3694dd2d6ab..a056cdeb1b5 100644 --- a/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix +++ b/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "ocaml${ocaml.version}-ocaml-migrate-parsetree-${version}"; - version = "0.5"; + version = "0.7"; src = fetchFromGitHub { owner = "let-def"; repo = "ocaml-migrate-parsetree"; rev = "v${version}"; - sha256 = "023lnd3kxa3d4zgsvv0z2lyzhg05zcgagy18vaalimbza57wq83h"; + sha256 = "142svvixhz153argd3khk7sr38dhiy4w6sck4766f8b48p41pp3m"; }; buildInputs = [ ocaml findlib ocamlbuild jbuilder ]; diff --git a/pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix b/pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix new file mode 100644 index 00000000000..c402c6be4f1 --- /dev/null +++ b/pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix @@ -0,0 +1,26 @@ +{ stdenv, buildOcaml, fetchFromGitHub, ocaml-migrate-parsetree }: + +buildOcaml rec { + name = "ppx_tools_versioned"; + version = "5.0alpha"; + + minimumSupportedOcamlVersion = "4.02"; + + src = fetchFromGitHub { + owner = "let-def"; + repo = "ppx_tools_versioned"; + rev = version; + sha256 = "0sa3w0plpa0s202s9yjgz7dbk32xd2s6fymkjijrhj4lkvh08mba"; + }; + + propagatedBuildInputs = [ ocaml-migrate-parsetree ]; + + createFindlibDestdir = true; + + meta = with stdenv.lib; { + homepage = https://github.com/let-def/ppx_tools_versioned; + description = "Tools for authors of syntactic tools (such as ppx rewriters)"; + license = licenses.gpl2; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/pkgs/development/perl-modules/File-Slurp/silence-deprecation.patch b/pkgs/development/perl-modules/File-Slurp/silence-deprecation.patch new file mode 100644 index 00000000000..7b513f21a29 --- /dev/null +++ b/pkgs/development/perl-modules/File-Slurp/silence-deprecation.patch @@ -0,0 +1,10 @@ +--- File-Slurp-9999.19.orig/lib/File/Slurp.pm 2011-05-30 21:58:53.000000000 +0200 ++++ File-Slurp-9999.19/lib/File/Slurp.pm 2017-04-28 10:05:59.047681755 +0200 +@@ -4,6 +4,7 @@ + + use strict; + use warnings ; ++no warnings 'deprecated'; + + use Carp ; + use Exporter ; diff --git a/pkgs/development/python-modules/APScheduler/default.nix b/pkgs/development/python-modules/APScheduler/default.nix new file mode 100644 index 00000000000..a556aebc47e --- /dev/null +++ b/pkgs/development/python-modules/APScheduler/default.nix @@ -0,0 +1,65 @@ +{ lib +, buildPythonPackage +, fetchPypi +, setuptools_scm +, pytest +, pytestcov +, sqlalchemy +, tornado +, twisted +, mock +, trollius +, gevent +, six +, pytz +, tzlocal +, funcsigs +, futures +, isPy3k +}: + +buildPythonPackage rec { + pname = "APScheduler"; + version = "3.3.1"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "f68874dff1bdffcc6ce3adb7840c1e4d162c609a3e3f831351df30b75732767b"; + }; + + buildInputs = [ + setuptools_scm + ]; + + checkInputs = [ + pytest + pytestcov + sqlalchemy + tornado + twisted + mock + trollius + gevent + ]; + + propagatedBuildInputs = [ + six + pytz + tzlocal + funcsigs + ] ++ lib.optional (!isPy3k) futures; + + checkPhase = '' + py.test + ''; + + # Somehow it cannot find pytestcov + doCheck = false; + + meta = with lib; { + description = "A Python library that lets you schedule your Python code to be executed"; + homepage = http://pypi.python.org/pypi/APScheduler/; + license = licenses.mit; + }; +} \ No newline at end of file diff --git a/pkgs/development/python-modules/Wand/default.nix b/pkgs/development/python-modules/Wand/default.nix new file mode 100644 index 00000000000..f7b6aeae615 --- /dev/null +++ b/pkgs/development/python-modules/Wand/default.nix @@ -0,0 +1,51 @@ +{ stdenv +, lib +, buildPythonPackage +, fetchPypi +, imagemagick +, pytest +, psutil +, memory_profiler +, pytest_xdist +, sharedLibraryExtension +}: + +let + magick_wand_library = "${imagemagick}/lib/libMagickWand-6.Q16${sharedLibraryExtension}"; + imagemagick_library = "${imagemagick}/lib/libMagickCore-6.Q16${sharedLibraryExtension}"; +in buildPythonPackage rec { + pname = "Wand"; + version = "0.4.4"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "28e0454c9d16d69c5d5034918d96320d8f9f1377b4fdaf4944eec2f938c74704"; + }; + + checkInputs = [ pytest pytest_xdist memory_profiler psutil ]; + + buildInputs = [ imagemagick ]; + + patches = [ + ./libraries.patch + ]; + + inherit magick_wand_library imagemagick_library; + + postPatch = '' + substituteAllInPlace wand/api.py + ''; + + # No tests + doCheck = false; + meta = { + description = "Ctypes-based simple MagickWand API binding for Python"; + homepage = http://wand-py.org/; + license = with lib.licenses; [ mit ]; + }; + + passthru = { + inherit imagemagick; + }; +} diff --git a/pkgs/development/python-modules/Wand/libraries.patch b/pkgs/development/python-modules/Wand/libraries.patch new file mode 100644 index 00000000000..15b19f5168b --- /dev/null +++ b/pkgs/development/python-modules/Wand/libraries.patch @@ -0,0 +1,149 @@ +diff --git a/wand/api.py b/wand/api.py +index 2c18513..1a1b511 100644 +--- a/wand/api.py ++++ b/wand/api.py +@@ -43,98 +43,6 @@ class c_magick_char_p(ctypes.c_char_p): + """ + library.MagickRelinquishMemory(self) + +- +-def library_paths(): +- """Iterates for library paths to try loading. The result paths are not +- guaranteed that they exist. +- +- :returns: a pair of libwand and libmagick paths. they can be the same. +- path can be ``None`` as well +- :rtype: :class:`tuple` +- +- """ +- libwand = None +- libmagick = None +- versions = '', '-6', '-Q16', '-Q8', '-6.Q16' +- options = '', 'HDRI', 'HDRI-2' +- system = platform.system() +- magick_home = os.environ.get('MAGICK_HOME') +- +- if system == 'Windows': +- # ImageMagick installers normally install coder and filter DLLs in +- # subfolders, we need to add those folders to PATH, otherwise loading +- # the DLL later will fail. +- try: +- with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, +- r"SOFTWARE\ImageMagick\Current") as reg_key: +- libPath = winreg.QueryValueEx(reg_key, "LibPath") +- coderPath = winreg.QueryValueEx(reg_key, "CoderModulesPath") +- filterPath = winreg.QueryValueEx(reg_key, "FilterModulesPath") +- magick_home = libPath[0] +- os.environ['PATH'] += (';' + libPath[0] + ";" + +- coderPath[0] + ";" + filterPath[0]) +- except OSError: +- # otherwise use MAGICK_HOME, and we assume the coder and +- # filter DLLs are in the same directory +- pass +- +- def magick_path(path): +- return os.path.join(magick_home, *path) +- combinations = itertools.product(versions, options) +- for suffix in (version + option for version, option in combinations): +- # On Windows, the API is split between two libs. On other platforms, +- # it's all contained in one. +- if magick_home: +- if system == 'Windows': +- libwand = 'CORE_RL_wand_{0}.dll'.format(suffix), +- libmagick = 'CORE_RL_magick_{0}.dll'.format(suffix), +- yield magick_path(libwand), magick_path(libmagick) +- libwand = 'libMagickWand{0}.dll'.format(suffix), +- libmagick = 'libMagickCore{0}.dll'.format(suffix), +- yield magick_path(libwand), magick_path(libmagick) +- elif system == 'Darwin': +- libwand = 'lib', 'libMagickWand{0}.dylib'.format(suffix), +- yield magick_path(libwand), magick_path(libwand) +- else: +- libwand = 'lib', 'libMagickWand{0}.so'.format(suffix), +- yield magick_path(libwand), magick_path(libwand) +- if system == 'Windows': +- libwand = ctypes.util.find_library('CORE_RL_wand_' + suffix) +- libmagick = ctypes.util.find_library('CORE_RL_magick_' + suffix) +- yield libwand, libmagick +- libwand = ctypes.util.find_library('libMagickWand' + suffix) +- libmagick = ctypes.util.find_library('libMagickCore' + suffix) +- yield libwand, libmagick +- else: +- libwand = ctypes.util.find_library('MagickWand' + suffix) +- yield libwand, libwand +- +- +-def load_library(): +- """Loads the MagickWand library. +- +- :returns: the MagickWand library and the ImageMagick library +- :rtype: :class:`ctypes.CDLL` +- +- """ +- tried_paths = [] +- for libwand_path, libmagick_path in library_paths(): +- if libwand_path is None or libmagick_path is None: +- continue +- try: +- tried_paths.append(libwand_path) +- libwand = ctypes.CDLL(libwand_path) +- if libwand_path == libmagick_path: +- libmagick = libwand +- else: +- tried_paths.append(libmagick_path) +- libmagick = ctypes.CDLL(libmagick_path) +- except (IOError, OSError): +- continue +- return libwand, libmagick +- raise IOError('cannot find library; tried paths: ' + repr(tried_paths)) +- +- + if not hasattr(ctypes, 'c_ssize_t'): + if ctypes.sizeof(ctypes.c_uint) == ctypes.sizeof(ctypes.c_void_p): + ctypes.c_ssize_t = ctypes.c_int +@@ -176,43 +84,14 @@ class AffineMatrix(ctypes.Structure): + # Preserve the module itself even if it fails to import + sys.modules['wand._api'] = sys.modules['wand.api'] + +-try: +- libraries = load_library() +-except (OSError, IOError): +- msg = 'http://docs.wand-py.org/en/latest/guide/install.html' +- if sys.platform.startswith(('dragonfly', 'freebsd')): +- msg = 'pkg install' +- elif sys.platform == 'win32': +- msg += '#install-imagemagick-on-windows' +- elif sys.platform == 'darwin': +- mac_pkgmgrs = {'brew': 'brew install freetype imagemagick', +- 'port': 'port install imagemagick'} +- for pkgmgr in mac_pkgmgrs: +- with os.popen('which ' + pkgmgr) as f: +- if f.read().strip(): +- msg = mac_pkgmgrs[pkgmgr] +- break +- else: +- msg += '#install-imagemagick-on-mac' +- else: +- distname, _, __ = platform.linux_distribution() +- distname = (distname or '').lower() +- if distname in ('debian', 'ubuntu'): +- msg = 'apt-get install libmagickwand-dev' +- elif distname in ('fedora', 'centos', 'redhat'): +- msg = 'yum install ImageMagick-devel' +- raise ImportError('MagickWand shared library not found.\n' +- 'You probably had not installed ImageMagick library.\n' +- 'Try to install:\n ' + msg) +- + #: (:class:`ctypes.CDLL`) The MagickWand library. +-library = libraries[0] ++library = ctypes.CDLL("@magick_wand_library@") + + #: (:class:`ctypes.CDLL`) The ImageMagick library. It is the same with + #: :data:`library` on platforms other than Windows. + #: + #: .. versionadded:: 0.1.10 +-libmagick = libraries[1] ++libmagick = ctypes.CDLL("@imagemagick_library@") + + try: + library.MagickWandGenesis.argtypes = [] diff --git a/pkgs/development/python-modules/asgi_ipc/default.nix b/pkgs/development/python-modules/asgi_ipc/default.nix new file mode 100644 index 00000000000..9774433ddc5 --- /dev/null +++ b/pkgs/development/python-modules/asgi_ipc/default.nix @@ -0,0 +1,20 @@ +{ stdenv, buildPythonPackage, fetchurl, + asgiref, msgpack, posix_ipc +}: +buildPythonPackage rec { + name = "asgi_ipc-${version}"; + version = "1.3.1"; + + src = fetchurl { + url = "mirror://pypi/a/asgi_ipc/${name}.tar.gz"; + sha256 = "1dm8xvm1z28f421ck1ympxsq2sjm9xb7dla6p8yd2bz6gn6p5h7v"; + }; + + propagatedBuildInputs = [ asgiref msgpack posix_ipc ]; + + meta = with stdenv.lib; { + description = "Posix IPC-backed ASGI channel layer implementation"; + license = licenses.bsd3; + homepage = http://github.com/django/asgi_ipc/; + }; +} diff --git a/pkgs/development/python-modules/asgi_redis/default.nix b/pkgs/development/python-modules/asgi_redis/default.nix new file mode 100644 index 00000000000..5576fc0e68b --- /dev/null +++ b/pkgs/development/python-modules/asgi_redis/default.nix @@ -0,0 +1,23 @@ +{ stdenv, buildPythonPackage, fetchurl, + asgiref, asgi_ipc, msgpack, six, redis, cryptography +}: +buildPythonPackage rec { + name = "asgi_redis-${version}"; + version = "1.3.0"; + + src = fetchurl { + url = "mirror://pypi/a/asgi_redis/${name}.tar.gz"; + sha256 = "0zhv51w0fx3i8m0032nk9v00l6mxaswyi95yzy7p7fjww4q74ncl"; + }; + + # Requires a redis server available + doCheck = false; + + propagatedBuildInputs = [ asgiref asgi_ipc msgpack six redis cryptography ]; + + meta = with stdenv.lib; { + description = "Redis-backed ASGI channel layer implementation"; + license = licenses.bsd3; + homepage = http://github.com/django/asgi_redis/; + }; +} diff --git a/pkgs/development/python-modules/asgiref/default.nix b/pkgs/development/python-modules/asgiref/default.nix new file mode 100644 index 00000000000..1bd3ef19f7e --- /dev/null +++ b/pkgs/development/python-modules/asgiref/default.nix @@ -0,0 +1,18 @@ +{ stdenv, buildPythonPackage, fetchurl, six }: +buildPythonPackage rec { + name = "asgiref-${version}"; + version = "1.1.1"; + + src = fetchurl { + url = "mirror://pypi/a/asgiref/${name}.tar.gz"; + sha256 = "0gayxnysknwg8hxb5kvmi2mmd5dnrhgza23daf8j25w3nj2drars"; + }; + + propagatedBuildInputs = [ six ]; + + meta = with stdenv.lib; { + description = "Reference ASGI adapters and channel layers"; + license = licenses.bsd3; + homepage = https://github.com/django/asgiref; + }; +} diff --git a/pkgs/development/python-modules/autobahn/default.nix b/pkgs/development/python-modules/autobahn/default.nix new file mode 100644 index 00000000000..6230a5d149c --- /dev/null +++ b/pkgs/development/python-modules/autobahn/default.nix @@ -0,0 +1,30 @@ +{ stdenv, buildPythonPackage, fetchurl, isPy3k, + unittest2, mock, pytest, trollius, pytest-asyncio, + six, twisted, txaio +}: +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "autobahn"; + version = "0.18.2"; + + src = fetchurl { + url = "mirror://pypi/a/${pname}/${name}.tar.gz"; + sha256 = "1alp71plqnrak5nm2vn9mmkxayjb081c1kihqwf60wdpvv0w7y14"; + }; + + buildInputs = [ unittest2 mock pytest trollius pytest-asyncio ]; + propagatedBuildInputs = [ six twisted txaio ]; + + disabled = !isPy3k; + checkPhase = '' + py.test $out + ''; + + meta = with stdenv.lib; { + description = "WebSocket and WAMP in Python for Twisted and asyncio."; + homepage = "http://crossbar.io/autobahn"; + license = licenses.mit; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/development/python-modules/automat/default.nix b/pkgs/development/python-modules/automat/default.nix new file mode 100644 index 00000000000..146f47bd945 --- /dev/null +++ b/pkgs/development/python-modules/automat/default.nix @@ -0,0 +1,25 @@ +{ stdenv, buildPythonPackage, fetchurl, + m2r, setuptools_scm, six, attrs }: +buildPythonPackage rec { + name = "Automat-${version}"; + version = "0.5.0"; + + src = fetchurl { + url = "mirror://pypi/A/Automat/${name}.tar.gz"; + sha256 = "1hnpknkqnc2m900kkzrzx9l6g5dy5dassrdj9pn34x1pcdkyr2a8"; + }; + + buildInputs = [ m2r setuptools_scm ]; + propagatedBuildInputs = [ six attrs ]; + + # Some tests require twisetd, but twisted requires Automat to build. + # this creates a circular dependency. + doCheck = false; + + meta = with stdenv.lib; { + homepage = https://github.com/glyph/Automat; + description = "Self-service finite-state machines for the programmer on the go"; + license = licenses.mit; + maintainers = [ ]; + }; +} diff --git a/pkgs/development/python-modules/bcrypt.nix b/pkgs/development/python-modules/bcrypt.nix index 94f04880c8e..8a099983521 100644 --- a/pkgs/development/python-modules/bcrypt.nix +++ b/pkgs/development/python-modules/bcrypt.nix @@ -1,5 +1,5 @@ { stdenv, buildPythonPackage, isPyPy, fetchurl -, cffi, pycparser, mock, pytest, py }: +, cffi, pycparser, mock, pytest, py, six }: with stdenv.lib; @@ -12,7 +12,7 @@ buildPythonPackage rec { sha256 = "1al54xafv1aharpb22yv5rjjc63fm60z3pn2shbiq48ah9f1fvil"; }; buildInputs = [ pycparser mock pytest py ]; - propagatedBuildInputs = optional (!isPyPy) cffi; + propagatedBuildInputs = [ six ] ++ optional (!isPyPy) cffi; meta = { maintainers = with maintainers; [ domenkozar ]; diff --git a/pkgs/development/python-modules/cffi/default.nix b/pkgs/development/python-modules/cffi/default.nix new file mode 100644 index 00000000000..55bd8deef9a --- /dev/null +++ b/pkgs/development/python-modules/cffi/default.nix @@ -0,0 +1,30 @@ +{ lib, buildPythonPackage, isPyPy, fetchPypi, libffi, pycparser, pytest }: + +if isPyPy then null else buildPythonPackage rec { + pname = "cffi"; + version = "1.10.0"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "1mffyilq4qycm8gs4wkgb18rnqil8a9blqq77chdlshzxc8jkc5k"; + }; + + propagatedBuildInputs = [ libffi pycparser ]; + buildInputs = [ pytest ]; + + patchPhase = '' + substituteInPlace testing/cffi0/test_ownlib.py --replace "gcc" "cc" + ''; + + checkPhase = '' + py.test + ''; + + meta = with lib; { + maintainers = with maintainers; [ domenkozar ]; + homepage = https://cffi.readthedocs.org/; + license = with licenses; [ mit ]; + description = "Foreign Function Interface for Python calling C code"; + }; +} diff --git a/pkgs/development/python-modules/channels/default.nix b/pkgs/development/python-modules/channels/default.nix index c7466d242c7..a589369210d 100644 --- a/pkgs/development/python-modules/channels/default.nix +++ b/pkgs/development/python-modules/channels/default.nix @@ -3,11 +3,11 @@ }: buildPythonPackage rec { name = "channels-${version}"; - version = "1.0.3"; + version = "1.1.3"; src = fetchurl { url = "mirror://pypi/c/channels/${name}.tar.gz"; - sha256 = "1bwlqnfc27p1qnjmdl8jnr941gpl8ggnxxfy8anh9qgmg20q9pfd"; + sha256 = "182war437i6wsxwf2v4szn8ig0nkpinpn4n27fxhh5q8w832hj93"; }; # Files are missing in the distribution diff --git a/pkgs/development/python-modules/constantly/default.nix b/pkgs/development/python-modules/constantly/default.nix new file mode 100644 index 00000000000..44fbeb6d39f --- /dev/null +++ b/pkgs/development/python-modules/constantly/default.nix @@ -0,0 +1,18 @@ +{ stdenv, buildPythonPackage, fetchurl +}: +buildPythonPackage rec { + name = "constantly-${version}"; + version = "15.1.0"; + + src = fetchurl { + url = "mirror://pypi/c/constantly/${name}.tar.gz"; + sha256 = "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq"; + }; + + meta = with stdenv.lib; { + homepage = https://github.com/twisted/constantly; + description = "symbolic constant support"; + license = licenses.mit; + maintainers = [ ]; + }; +} diff --git a/pkgs/development/python-modules/daphne/default.nix b/pkgs/development/python-modules/daphne/default.nix index 6e19d9d9e86..34cc597ede9 100644 --- a/pkgs/development/python-modules/daphne/default.nix +++ b/pkgs/development/python-modules/daphne/default.nix @@ -1,15 +1,16 @@ { stdenv, buildPythonPackage, fetchurl, - asgiref, autobahn, twisted + asgiref, autobahn, twisted, hypothesis }: buildPythonPackage rec { name = "daphne-${version}"; - version = "1.0.3"; + version = "1.2.0"; src = fetchurl { url = "mirror://pypi/d/daphne/${name}.tar.gz"; - sha256 = "1bpavq3sxr66mqwnnfg67pcchyaq7siqyin2r89aqadf6nab58d2"; + sha256 = "084216isw7rwy693i62rbd8kvpqx418jvf1q72cplv833wz3in7l"; }; + buildInputs = [ hypothesis ]; propagatedBuildInputs = [ asgiref autobahn twisted ]; meta = with stdenv.lib; { diff --git a/pkgs/development/python-modules/django-compat/default.nix b/pkgs/development/python-modules/django-compat/default.nix new file mode 100644 index 00000000000..d8a314750ca --- /dev/null +++ b/pkgs/development/python-modules/django-compat/default.nix @@ -0,0 +1,23 @@ +{ stdenv, buildPythonPackage, fetchurl, + django, django_nose, six +}: +buildPythonPackage rec { + name = "django-compat-${version}"; + version = "1.0.14"; + + src = fetchurl { + url = "mirror://pypi/d/django-compat/${name}.tar.gz"; + sha256 = "18y5bxxmafcd4np42mzbalva5lpssq0b8ki7zckbzvdv2mnv43xj"; + }; + + doCheck = false; + + buildInputs = [ django_nose ]; + propagatedBuildInputs = [ django six ]; + + meta = with stdenv.lib; { + description = "Forward and backwards compatibility layer for Django 1.4, 1.7, 1.8, 1.9, 1.10 and 1.11"; + homepage = https://github.com/arteria/django-compat; + license = licenses.mit; + }; +} diff --git a/pkgs/development/python-modules/django/1_11.nix b/pkgs/development/python-modules/django/1_11.nix new file mode 100644 index 00000000000..3f7806bb34b --- /dev/null +++ b/pkgs/development/python-modules/django/1_11.nix @@ -0,0 +1,37 @@ +{ stdenv, buildPythonPackage, fetchurl, substituteAll, + pythonOlder, + geos, gdal, pytz +}: +buildPythonPackage rec { + name = "Django-${version}"; + version = "1.11"; + disabled = pythonOlder "2.7"; + + src = fetchurl { + url = "http://www.djangoproject.com/m/releases/1.11/${name}.tar.gz"; + sha256 = "0c1c2n05wv1br651hfbvnxw8ymcn4q8m56893pyv8xj2jijbiwxn"; + }; + + patches = [ + (substituteAll { + src = ./1.10-gis-libs.template.patch; + geos = geos; + gdal = gdal; + }) + ]; + + # patch only $out/bin to avoid problems with starter templates (see #3134) + postFixup = '' + wrapPythonProgramsIn $out/bin "$out $pythonPath" + ''; + + propagatedBuildInputs = [ pytz ]; + + # too complicated to setup + doCheck = false; + + meta = { + description = "A high-level Python Web framework"; + homepage = https://www.djangoproject.com/; + }; +} diff --git a/pkgs/development/python-modules/django_guardian.nix b/pkgs/development/python-modules/django_guardian.nix index 1b31456162b..aee9707a523 100644 --- a/pkgs/development/python-modules/django_guardian.nix +++ b/pkgs/development/python-modules/django_guardian.nix @@ -4,11 +4,11 @@ }: buildPythonPackage rec { name = "django-guardian-${version}"; - version = "1.4.6"; + version = "1.4.8"; src = fetchurl { url = "mirror://pypi/d/django-guardian/${name}.tar.gz"; - sha256 = "1r3xj0ik0hh6dfak4kjndxk5v73x95nfbppgr394nhnmiayv4zc5"; + sha256 = "039mfx47c05vl6vlld0ahyq37z7m5g68vqc38pj8iic5ysr98drm"; }; buildInputs = [ pytest pytestrunner pytest-django django_environ mock setuptools_scm ]; diff --git a/pkgs/development/python-modules/dkimpy/default.nix b/pkgs/development/python-modules/dkimpy/default.nix new file mode 100644 index 00000000000..df768f5d122 --- /dev/null +++ b/pkgs/development/python-modules/dkimpy/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, openssl, makeWrapper, buildPythonApplication +, pytest, dns }: + +buildPythonApplication rec { + name = "${pname}-${majorversion}.${minorversion}"; + pname = "dkimpy"; + majorversion = "0.6"; + minorversion = "1"; + + src = fetchurl { + url = "https://launchpad.net/${pname}/${majorversion}/${majorversion}.${minorversion}/+download/${name}.tar.gz"; + sha256 = "0zmvyw18ww1jqrbqws636w3xki59fyqva553r6s74q5c4jvy36v2"; + }; + + buildInputs = [ pytest ]; + propagatedBuildInputs = [ openssl dns ]; + + patchPhase = ''substituteInPlace dknewkey.py --replace \ + /usr/bin/openssl ${openssl}/bin/openssl + ''; + + postInstall = '' + mkdir -p $out/bin $out/libexec + mv $out/bin/*.py $out/libexec + makeWrapper "$out/libexec/dkimverify.py" $out/bin/dkimverify + makeWrapper "$out/libexec/dkimsign.py" $out/bin/dkimsign + makeWrapper "$out/libexec/arcverify.py" $out/bin/arcverify + makeWrapper "$out/libexec/arcsign.py" $out/bin/arcsign + makeWrapper "$out/libexec/dknewkey.py" $out/bin/dknewkey + ''; + + meta = with stdenv.lib; { + description = "DKIM + ARC email signing/verification tools + Python module"; + longDescription = ''Python module that implements DKIM (DomainKeys Identified Mail) + email signing and verification. It also provides a number of convєnient tools + for command line signing and verification, as well as generating new DKIM records. + This version also supports the experimental Authenticated Received Chain (ARC) + protocol. + ''; + homepage = "https://launchpad.net/dkimpy"; + license = licenses.bsd3; + maintainers = with maintainers; [ leenaars ]; + }; +} diff --git a/pkgs/development/python-modules/dogpile.cache/default.nix b/pkgs/development/python-modules/dogpile.cache/default.nix new file mode 100644 index 00000000000..af8bd1a1d11 --- /dev/null +++ b/pkgs/development/python-modules/dogpile.cache/default.nix @@ -0,0 +1,24 @@ +{ stdenv, buildPythonPackage, fetchPypi +, dogpile_core, pytest, pytestcov, mock, Mako +}: + +buildPythonPackage rec { + pname = "dogpile.cache"; + version = "0.6.2"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "73793471af07af6dc5b3ee015abfaca4220caaa34c615537f5ab007ed150726d"; + }; + + propagatedBuildInputs = [ dogpile_core ]; + buildInputs = [ pytest pytestcov mock Mako ]; + + meta = with stdenv.lib; { + description = "A caching front-end based on the Dogpile lock"; + homepage = http://bitbucket.org/zzzeek/dogpile.cache; + platforms = platforms.unix; + license = licenses.bsd3; + }; +} diff --git a/pkgs/development/python-modules/flask-restplus/0.8.nix b/pkgs/development/python-modules/flask-restplus/0.8.nix new file mode 100644 index 00000000000..bd586aeb32f --- /dev/null +++ b/pkgs/development/python-modules/flask-restplus/0.8.nix @@ -0,0 +1,42 @@ +{ lib +, buildPythonPackage +, fetchPypi +, nose +, blinker +, tzlocal +, mock +, rednose +, flask +, six +, jsonschema +, pytz +, aniso8601 +, flask-restful +}: + +buildPythonPackage rec { + pname = "flask-restplus"; + version = "0.8.6"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "3bb76cc156b9a09da62396d82b29fa31e4f27cccf79528538fe7155cf2785593"; + }; + + checkInputs = [ nose blinker tzlocal mock rednose ]; + propagatedBuildInputs = [ flask six jsonschema pytz aniso8601 flask-restful ]; + + # RuntimeError: Working outside of application context. + doCheck = false; + + checkPhase = '' + nosetests + ''; + + meta = { + homepage = "https://github.com/noirbizarre/flask-restplus"; + description = "Fast, easy and documented API development with Flask"; + license = lib.licenses.mit; + }; +} \ No newline at end of file diff --git a/pkgs/development/python-modules/guessit/default.nix b/pkgs/development/python-modules/guessit/default.nix new file mode 100644 index 00000000000..7cf051b89a6 --- /dev/null +++ b/pkgs/development/python-modules/guessit/default.nix @@ -0,0 +1,32 @@ +{ lib +, buildPythonPackage +, fetchPypi +, pytestrunner +, dateutil +, babelfish +, rebulk +}: + +buildPythonPackage rec { + pname = "guessit"; + version = "2.1.2"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "9f7e12b7f2215548284631a20aae6fc009c8af2bb8cc5d5e5e339cb15361dd95"; + }; + + # Tests require more packages. + doCheck = false; + buildInputs = [ pytestrunner ]; + propagatedBuildInputs = [ + dateutil babelfish rebulk + ]; + + meta = { + homepage = http://pypi.python.org/pypi/guessit; + license = lib.licenses.lgpl3; + description = "A library for guessing information from video files"; + }; +} \ No newline at end of file diff --git a/pkgs/development/python-modules/ipython/5.nix b/pkgs/development/python-modules/ipython/5.nix new file mode 100644 index 00000000000..011c8665290 --- /dev/null +++ b/pkgs/development/python-modules/ipython/5.nix @@ -0,0 +1,65 @@ +{ lib +, stdenv +, buildPythonPackage +, fetchPypi +, pythonOlder +# Build dependencies +, glibcLocales +# Test dependencies +, nose +, pygments +, testpath +, isPy27 +, mock +# Runtime dependencies +, backports_shutil_get_terminal_size +, jedi +, decorator +, pathlib2 +, pickleshare +, requests2 +, simplegeneric +, traitlets +, prompt_toolkit +, pexpect +, appnope +}: + +buildPythonPackage rec { + pname = "ipython"; + version = "5.3.0"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "bf5e615e7d96dac5a61fbf98d9e2926d98aa55582681bea7e9382992a3f43c1d"; + }; + + prePatch = stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace setup.py --replace "'gnureadline'" " " + ''; + + buildInputs = [ glibcLocales ]; + + checkInputs = [ nose pygments testpath ] ++ lib.optional isPy27 mock; + + propagatedBuildInputs = [ + backports_shutil_get_terminal_size decorator pickleshare prompt_toolkit + simplegeneric traitlets requests2 pathlib2 pexpect + ] ++ lib.optionals stdenv.isDarwin [ appnope ]; + + LC_ALL="en_US.UTF-8"; + + doCheck = false; # Circular dependency with ipykernel + + checkPhase = '' + nosetests + ''; + + meta = { + description = "IPython: Productive Interactive Computing"; + homepage = http://ipython.org/; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ bjornfor jgeerds orivej lnl7 ]; + }; +} diff --git a/pkgs/development/python-modules/ipython/default.nix b/pkgs/development/python-modules/ipython/default.nix index 0823a76e2a6..de7d0a8d81b 100644 --- a/pkgs/development/python-modules/ipython/default.nix +++ b/pkgs/development/python-modules/ipython/default.nix @@ -8,8 +8,6 @@ # Test dependencies , nose , pygments -, isPy27 -, mock # Runtime dependencies , jedi , decorator @@ -37,7 +35,7 @@ buildPythonPackage rec { buildInputs = [ glibcLocales ]; - checkInputs = [ nose pygments ] ++ lib.optional isPy27 mock; + checkInputs = [ nose pygments ]; propagatedBuildInputs = [ jedi diff --git a/pkgs/development/python-modules/keras/default.nix b/pkgs/development/python-modules/keras/default.nix index 65c72ca9831..ab9d315e794 100644 --- a/pkgs/development/python-modules/keras/default.nix +++ b/pkgs/development/python-modules/keras/default.nix @@ -12,12 +12,12 @@ buildPythonPackage rec { pname = "Keras"; - version = "1.2.2"; + version = "2.0.3"; name = "${pname}-${version}"; src = fetchPypi { inherit pname version; - sha256 = "0bby93sffjadrxnx9j9nn2lq0ygsgqjp16260c6lz77b6r1qrcfj"; + sha256 = "1x4p179smmnki6mng9n3lsi9glv2jg0y1ls154msplz9jm5bv39r"; }; checkInputs = [ diff --git a/pkgs/development/python-modules/m2r/default.nix b/pkgs/development/python-modules/m2r/default.nix new file mode 100644 index 00000000000..49f1e2da5ba --- /dev/null +++ b/pkgs/development/python-modules/m2r/default.nix @@ -0,0 +1,24 @@ +{ stdenv, buildPythonPackage, fetchurl, + mistune, docutils } : +buildPythonPackage rec { + name = "m2r-${version}"; + version = "0.1.5"; + + src = fetchurl { + url = "mirror://pypi/m/m2r/${name}.tar.gz"; + sha256 = "08rjn3x1qag60wawjnq95wmgijrn33apr4fhj01s2p6hmrqgfj1l"; + }; + + propagatedBuildInputs = [ mistune docutils ]; + + # Some tests interfeere with each other (test.md and test.rst are + # deleted by some tests and not properly regenerated) + doCheck = false; + + meta = with stdenv.lib; { + homepage = https://github.com/miyakogi/m2r; + description = "converts a markdown file including reST markups to a valid reST format"; + license = licenses.mit; + maintainers = [ ]; + }; +} diff --git a/pkgs/development/python-modules/pbr/default.nix b/pkgs/development/python-modules/pbr/default.nix new file mode 100644 index 00000000000..15c0d921ef8 --- /dev/null +++ b/pkgs/development/python-modules/pbr/default.nix @@ -0,0 +1,21 @@ +{ stdenv, buildPythonPackage, fetchPypi }: + +buildPythonPackage rec { + pname = "pbr"; + version = "2.0.0"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "0ccd2db529afd070df815b1521f01401d43de03941170f8a800e7531faba265d"; + }; + + # circular dependencies with fixtures + doCheck = false; + + meta = { + homepage = "http://docs.openstack.org/developer/pbr/"; + license = stdenv.lib.licenses.asl20; + description = "Python Build Reasonableness"; + }; +} diff --git a/pkgs/development/python-modules/plumbum/default.nix b/pkgs/development/python-modules/plumbum/default.nix new file mode 100644 index 00000000000..216c163bc9d --- /dev/null +++ b/pkgs/development/python-modules/plumbum/default.nix @@ -0,0 +1,21 @@ +{ lib +, buildPythonPackage +, fetchPypi +, pytest +}: + +buildPythonPackage rec { + pname = "plumbum"; + version = "1.6.3"; + name = "${pname}-${version}"; + + checkInputs = [ pytest ]; + + # No tests in archive + doCheck = false; + + src = fetchPypi { + inherit pname version; + sha256 = "0249e708459f1b05627a7ca8787622c234e4db495a532acbbd1f1f17f28c7320"; + }; +} \ No newline at end of file diff --git a/pkgs/development/python-modules/pytest-asyncio/default.nix b/pkgs/development/python-modules/pytest-asyncio/default.nix new file mode 100644 index 00000000000..a8e3f7e0268 --- /dev/null +++ b/pkgs/development/python-modules/pytest-asyncio/default.nix @@ -0,0 +1,19 @@ +{ stdenv, buildPythonPackage, fetchurl, pytest }: +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pytest-asyncio"; + version = "0.5.0"; + + src = fetchurl { + url = "mirror://pypi/p/${pname}/${name}.tar.gz"; + sha256 = "03sxq8fglr4lw4y6wqlbli9ypr65fxzx6hlpn5wpccx8v5472iff"; + }; + + buildInputs = [ pytest ]; + + meta = with stdenv.lib; { + description = "library for testing asyncio code with pytest"; + license = licenses.asl20; + homepage = https://github.com/pytest-dev/pytest-asyncio; + }; +} diff --git a/pkgs/development/python-modules/tqdm/default.nix b/pkgs/development/python-modules/tqdm/default.nix new file mode 100644 index 00000000000..6a0dd6a3655 --- /dev/null +++ b/pkgs/development/python-modules/tqdm/default.nix @@ -0,0 +1,32 @@ +{ lib +, buildPythonPackage +, fetchPypi +, nose +, coverage +, glibcLocales +, flake8 +, matplotlib +, pandas +}: + +buildPythonPackage rec { + pname = "tqdm"; + version = "4.11.2"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "14baa7a9ea7723d46f60de5f8c6f20e840baa7e3e193bf0d9ec5fe9103a15254"; + }; + + buildInputs = [ nose coverage glibcLocales flake8 ]; + + LC_ALL="en_US.UTF-8"; + + meta = { + description = "A Fast, Extensible Progress Meter"; + homepage = https://github.com/tqdm/tqdm; + license = with lib.licenses; [ mit ]; + maintainers = with lib.maintainers; [ fridh ]; + }; +} diff --git a/pkgs/development/python-modules/twisted/default.nix b/pkgs/development/python-modules/twisted/default.nix new file mode 100644 index 00000000000..0cfb00c48b8 --- /dev/null +++ b/pkgs/development/python-modules/twisted/default.nix @@ -0,0 +1,45 @@ +{ stdenv, buildPythonPackage, fetchurl, python, + zope_interface, incremental, automat, constantly +}: +buildPythonPackage rec { + + name = "Twisted-${version}"; + version = "17.1.0"; + + src = fetchurl { + url = "mirror://pypi/T/Twisted/${name}.tar.bz2"; + sha256 = "1p245mg15hkxp7hy5cyq2fgvlgjkb4cg0gwkwd148nzy1bbi3wnv"; + }; + + propagatedBuildInputs = [ zope_interface incremental automat constantly ]; + + # Patch t.p._inotify to point to libc. Without this, + # twisted.python.runtime.platform.supportsINotify() == False + patchPhase = stdenv.lib.optionalString stdenv.isLinux '' + substituteInPlace src/twisted/python/_inotify.py --replace \ + "ctypes.util.find_library('c')" "'${stdenv.glibc.out}/lib/libc.so.6'" + ''; + + # Generate Twisted's plug-in cache. Twisted users must do it as well. See + # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3 + # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for + # details. + postInstall = "$out/bin/twistd --help > /dev/null"; + + checkPhase = '' + ${python.interpreter} -m unittest discover -s twisted/test + ''; + # Tests require network + doCheck = false; + + meta = with stdenv.lib; { + homepage = http://twistedmatrix.com/; + description = "Twisted, an event-driven networking engine written in Python"; + longDescription = '' + Twisted is an event-driven networking engine written in Python + and licensed under the MIT license. + ''; + license = licenses.mit; + maintainers = [ ]; + }; +} diff --git a/pkgs/development/python-modules/txaio/default.nix b/pkgs/development/python-modules/txaio/default.nix new file mode 100644 index 00000000000..66b01d61094 --- /dev/null +++ b/pkgs/development/python-modules/txaio/default.nix @@ -0,0 +1,28 @@ +{ stdenv, buildPythonPackage, fetchurl, + pytest, mock, six, twisted +}: +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "txaio"; + version = "2.7.0"; + + buildInputs = [ pytest mock ]; + propagatedBuildInputs = [ six twisted ]; + + checkPhase = '' + py.test -k "not test_sdist" + ''; + + src = fetchurl { + url = "mirror://pypi/t/${pname}/${name}.tar.gz"; + sha256 = "0hwd6jx6hb44p40id9r0m42y07rav5jvddf0f1bcm269i3dnwr47"; + }; + + meta = with stdenv.lib; { + description = "Utilities to support code that runs unmodified on Twisted and asyncio."; + homepage = "https://github.com/crossbario/txaio"; + license = licenses.mit; + maintainers = with maintainers; [ nand0p ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/development/python-modules/vcrpy/default.nix b/pkgs/development/python-modules/vcrpy/default.nix index c925649b8b2..c82a02cb4a4 100644 --- a/pkgs/development/python-modules/vcrpy/default.nix +++ b/pkgs/development/python-modules/vcrpy/default.nix @@ -1,38 +1,44 @@ { buildPythonPackage , lib -, pkgs +, six +, fetchPypi , pyyaml , mock , contextlib2 , wrapt -, pytest_27 +, pytest , httpbin , pytest-httpbin , yarl +, pythonOlder +, pythonAtLeast }: buildPythonPackage rec { + pname = "vcrpy"; version = "1.10.5"; - name = "vcrpy-${version}"; + name = "${pname}-${version}"; - src = pkgs.fetchurl { - url = "mirror://pypi/v/vcrpy/vcrpy-${version}.tar.gz"; + src = fetchPypi { + inherit pname version; sha256 = "12kncg6jyvj15mi8ca74514f2x1ih753nhyz769nwvh39r468167"; }; - buildInputs = [ - pyyaml - mock - contextlib2 - wrapt - pytest_27 - httpbin + checkInputs = [ + pytest pytest-httpbin - yarl ]; + propagatedBuildInputs = [ + pyyaml + wrapt + six + ] + ++ lib.optionals (pythonOlder "3.3") [ contextlib2 mock ] + ++ lib.optionals (pythonAtLeast "3.4") [ yarl ]; + checkPhase = '' - py.test --ignore=tests/integration -k "TestVCRConnection.testing_connect" + py.test --ignore=tests/integration -k "not TestVCRConnection" ''; meta = with lib; { diff --git a/pkgs/development/python-modules/zxcvbn-python/default.nix b/pkgs/development/python-modules/zxcvbn-python/default.nix new file mode 100644 index 00000000000..65d343cbec9 --- /dev/null +++ b/pkgs/development/python-modules/zxcvbn-python/default.nix @@ -0,0 +1,25 @@ +{ lib +, buildPythonPackage +, fetchPypi +}: + +buildPythonPackage rec { + pname = "zxcvbn-python"; + version = "4.4.14"; + + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "fd3a46536035851571e3f4142b64d6e7bcf0ade3cd40d8fecae7a1243945e327"; + }; + + # No tests in archive + doCheck = false; + + meta = { + description = "Python implementation of Dropbox's realistic password strength estimator, zxcvbn"; + homepage = https://github.com/dwolfhub/zxcvbn-python; + license = with lib.licenses; [ mit ]; + }; +} \ No newline at end of file diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix index e115b2c679d..83346037dad 100644 --- a/pkgs/development/ruby-modules/gem-config/default.nix +++ b/pkgs/development/ruby-modules/gem-config/default.nix @@ -78,6 +78,18 @@ in [ darwin.apple_sdk.frameworks.CoreServices ]; }; + # disable bundle install as it can't install anything in addition to what is + # specified in pkgs/applications/misc/jekyll/Gemfile anyway. Also do chmod_R + # to compensate for read-only files in site_template in nix store. + jekyll = attrs: { + postInstall = '' + installPath=$(cat $out/nix-support/gem-meta/install-path) + sed -i $installPath/lib/jekyll/commands/new.rb \ + -e 's@Exec.run("bundle", "install"@Exec.run("true"@' \ + -e 's@FileUtils.cp_r site_template + "/.", path@FileUtils.cp_r site_template + "/.", path; FileUtils.chmod_R "u+w", path@' + ''; + }; + # note that you need version >= v3.16.14.8, # otherwise the gem will fail to link to the libv8 binary. # see: https://github.com/cowboyd/libv8/pull/161 diff --git a/pkgs/development/tools/backblaze-b2/default.nix b/pkgs/development/tools/backblaze-b2/default.nix index 045272e19d3..850affb0610 100644 --- a/pkgs/development/tools/backblaze-b2/default.nix +++ b/pkgs/development/tools/backblaze-b2/default.nix @@ -11,7 +11,7 @@ pythonPackages.buildPythonApplication rec { sha256 = "1gl1z7zg3s1xgx45i6b1bvx9iwviiiinl4my00h66qkhrw7ag8p1"; }; - propagatedBuildInputs = with pythonPackages; [ futures requests2 six tqdm4 ]; + propagatedBuildInputs = with pythonPackages; [ futures requests2 six tqdm ]; checkPhase = '' python test_b2_command_line.py test diff --git a/pkgs/development/tools/boomerang/default.nix b/pkgs/development/tools/boomerang/default.nix index cfd8c03af6d..1e84a05cc85 100644 --- a/pkgs/development/tools/boomerang/default.nix +++ b/pkgs/development/tools/boomerang/default.nix @@ -1,43 +1,31 @@ -{ stdenv, fetchgit, cmake, expat }: +{ stdenv, fetchgit, cmake, expat, qt5, boost }: stdenv.mkDerivation rec { name = "boomerang-${version}"; - version = "0.3.2alpha"; + version = "0.3.99-alpha-2016-11-02"; src = fetchgit { url = "https://github.com/nemerle/boomerang.git"; - rev = "78c6b9dd33790be43dcb07edc549161398904006"; - sha256 = "1n49wx2v9r40mh5kdkspqvc8rccpb4s004qxqvn4fwc59dm0pqbs"; + rev = "f95d6436845e9036c8cfbd936731449475f79b7a"; + sha256 = "1q3q92lfj24ij5sxdbdhcqyan28r6db1w80yrks4csf9zjij1ixh"; }; - buildInputs = [ cmake expat ]; + buildInputs = [ cmake expat qt5.qtbase boost ]; + + patches = [ ./fix-install.patch ./fix-output.patch ]; postPatch = '' - sed -i -e 's/-std=c++0x/-std=c++11 -fpermissive/' CMakeLists.txt + substituteInPlace loader/BinaryFileFactory.cpp \ + --replace '"lib"' '"../lib"' - # Hardcode library base path ("lib/" is appended elsewhere) - sed -i -e 's|::m_base_path = "|&'"$out"'/|' loader/BinaryFileFactory.cpp - # Deactivate setting base path at runtime - sed -i -e 's/m_base_path *=[^}]*//' include/BinaryFile.h + substituteInPlace ui/DecompilerThread.cpp \ + --replace '"output"' '"./output"' - # Fix up shared directory locations - shared="$out/share/boomerang/" - find frontend -name '*.cpp' -print | xargs sed -i -e \ - 's|Boomerang::get()->getProgPath()|std::string("'"$shared"'")|' + substituteInPlace boomerang.cpp \ + --replace 'progPath("./")' "progPath(\"$out/share/boomerang/\")" - cat >> loader/CMakeLists.txt <> CMakeLists.txt < +Date: Thu, 30 Mar 2017 10:06:03 -0500 +Subject: [PATCH] cmake: add install bits + +--- + CMakeLists.txt | 3 +++ + loader/CMakeLists.txt | 2 ++ + ui/CMakeLists.txt | 2 ++ + 3 files changed, 7 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 826fe307..740861db 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -113,3 +113,6 @@ SET_PROPERTY(TARGET boom_base PROPERTY CXX_STANDARD_REQUIRED ON) + + ADD_SUBDIRECTORY(loader) + ADD_SUBDIRECTORY(ui) ++ ++INSTALL(DIRECTORY signatures DESTINATION share/boomerang) ++INSTALL(DIRECTORY frontend/machine DESTINATION share/boomerang/frontend) +diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt +index b371d366..dcf715fd 100644 +--- a/loader/CMakeLists.txt ++++ b/loader/CMakeLists.txt +@@ -6,6 +6,8 @@ macro(BOOMERANG_ADD_LOADER name) + endif() + qt5_use_modules(${target_name} Core) + set_target_properties(${target_name} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/out/lib") ++ install(TARGETS "${target_name}" ++ LIBRARY DESTINATION lib) + endmacro() + + BOOMERANG_ADD_LOADER(Elf elf/ElfBinaryFile.cpp elf/ElfBinaryFile.h) +diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt +index f6fe3271..8729b522 100644 +--- a/ui/CMakeLists.txt ++++ b/ui/CMakeLists.txt +@@ -26,3 +26,5 @@ boom_base frontend db type boomerang_DSLs codegen util boom_base + ${CMAKE_THREAD_LIBS_INIT} boomerang_passes + ) + qt5_use_modules(boomerang Core Xml Widgets) ++ ++INSTALL(TARGETS boomerang DESTINATION bin) +-- +2.11.0 + diff --git a/pkgs/development/tools/boomerang/fix-output.patch b/pkgs/development/tools/boomerang/fix-output.patch new file mode 100644 index 00000000000..18fbe74177b --- /dev/null +++ b/pkgs/development/tools/boomerang/fix-output.patch @@ -0,0 +1,24 @@ +From f3f5f888a1b1fe72ea8fc8cc96ef4ee386011e1c Mon Sep 17 00:00:00 2001 +From: Will Dietz +Date: Thu, 30 Mar 2017 11:21:38 -0500 +Subject: [PATCH] don't default to writing to program directory + +--- + boomerang.cpp | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/boomerang.cpp b/boomerang.cpp +index 5951ed91..b592f482 100644 +--- a/boomerang.cpp ++++ b/boomerang.cpp +@@ -601,7 +601,6 @@ int Boomerang::processCommand(QStringList &args) { + */ + void Boomerang::setProgPath(const QString &p) { + progPath = p + "/"; +- outputPath = progPath + "/output/"; // Default output path (can be overridden with -o below) + } + + /** +-- +2.11.0 + diff --git a/pkgs/development/tools/build-managers/doit/default.nix b/pkgs/development/tools/build-managers/doit/default.nix new file mode 100644 index 00000000000..61f6a402cab --- /dev/null +++ b/pkgs/development/tools/build-managers/doit/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, python3Packages }: + +let + + name = "doit"; + version = "0.30.3"; + +in python3Packages.buildPythonApplication { + name = "${name}-${version}"; + + src = fetchurl { + url = "mirror://pypi/d/${name}/${name}-${version}.tar.gz"; + sha256 = "1fcsslc3mc4bszq5xdqbxv37720s1s31d6pbfwc2iyxk1x2wi219"; + }; + + buildInputs = with python3Packages; [ mock pytest ]; + + propagatedBuildInputs = with python3Packages; [ cloudpickle pyinotify ]; + + # Tests fail due to mysterious gdbm.open() resource temporarily + # unavailable errors. + doCheck = false; + checkPhase = "py.test"; + + meta = { + homepage = "http://pydoit.org/"; + description = "A task management & automation tool"; + license = stdenv.lib.licenses.mit; + longDescription = '' + doit is a modern open-source build-tool written in python + designed to be simple to use and flexible to deal with complex + work-flows. It is specially suitable for building and managing + custom work-flows where there is no out-of-the-box solution + available. + ''; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/development/tools/misc/hydra/default.nix b/pkgs/development/tools/misc/hydra/default.nix index 1e04a10eccd..f7c410ecfb2 100644 --- a/pkgs/development/tools/misc/hydra/default.nix +++ b/pkgs/development/tools/misc/hydra/default.nix @@ -62,15 +62,15 @@ let }; in releaseTools.nixBuild rec { name = "hydra-${version}"; - version = "2017-03-21"; + version = "2017-04-26"; inherit stdenv; src = fetchFromGitHub { owner = "NixOS"; repo = "hydra"; - rev = "57bc0eaead8c76ffd71ddc49adfacc47bb8a75ac"; - sha256 = "1kshl6ms42fgh621s1ba3a224rawqzgvl89rq1k6c9qhlplpndd9"; + rev = "1f94f0369937c9187b158f53a4a361507a62c5e9"; + sha256 = "0h013690pwm20vykccr6l4k0q1jdb065127pblfhs23a287ayqlm"; }; buildInputs = diff --git a/pkgs/development/tools/misc/premake/5.nix b/pkgs/development/tools/misc/premake/5.nix new file mode 100644 index 00000000000..b0bb32449a4 --- /dev/null +++ b/pkgs/development/tools/misc/premake/5.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub, CoreServices }: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "premake-${version}"; + version = "5.0.0pre.alpha.11"; + + src = fetchFromGitHub { + owner = "premake"; + repo = "premake-core"; + rev = "5dfb0238bc309df04819dd430def621ce854678d"; + sha256 = "0k9xbqrnbwj0hnmdgcrwn70py1kiqvr10l42aw42xnlmdyg1sgsc"; + }; + + buildInputs = optional stdenv.isDarwin [ CoreServices ]; + + patchPhase = optional stdenv.isDarwin '' + substituteInPlace premake5.lua \ + --replace -mmacosx-version-min=10.4 -mmacosx-version-min=10.5 + ''; + + buildPhase = + if stdenv.isDarwin then '' + make -f Bootstrap.mak osx + '' else '' + make -f Bootstrap.mak linux + ''; + + installPhase = '' + install -Dm755 bin/release/premake5 $out/bin/premake5 + ''; + + meta = { + homepage = https://premake.github.io; + description = "A simple build configuration and project generation tool using lua"; + license = stdenv.lib.licenses.bsd3; + platforms = platforms.darwin ++ platforms.linux; + }; +} diff --git a/pkgs/development/tools/ocaml/utop/default.nix b/pkgs/development/tools/ocaml/utop/default.nix index 31549729cfe..8ab1371af9c 100644 --- a/pkgs/development/tools/ocaml/utop/default.nix +++ b/pkgs/development/tools/ocaml/utop/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4, ocaml_react -, lambdaTerm, ocaml_lwt, makeWrapper, camomile, zed, cppo, ppx_tools +{ stdenv, fetchurl, bash, ocaml, findlib, ocamlbuild, camlp4, ocaml_react +, lambdaTerm, ocaml_lwt, camomile, zed, cppo, ppx_tools }: stdenv.mkDerivation rec { @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { sha256 = "16z02vp9n97iax4fqpbi7v86r75vbabxvnd1rirh8w2miixs1g4x"; }; - buildInputs = [ ocaml findlib ocamlbuild makeWrapper cppo camlp4 ppx_tools ]; + buildInputs = [ ocaml findlib ocamlbuild cppo camlp4 ppx_tools ]; propagatedBuildInputs = [ lambdaTerm ocaml_lwt ]; @@ -28,21 +28,41 @@ stdenv.mkDerivation rec { dontStrip = true; postFixup = - let p = p: "${p}/lib/ocaml/${ocaml.version}/site-lib"; in - '' - pushd $out/bin - for prog in * + let + path = "etc/utop/env"; + + # derivation of just runtime deps so env vars created by + # setup-hooks can be saved for use at runtime + runtime = stdenv.mkDerivation rec { + name = "utop-runtime-env-${version}"; + + buildInputs = [ findlib ] ++ propagatedBuildInputs; + + phases = [ "installPhase" ]; + + installPhase = '' + mkdir -p "$out"/${path} + for e in OCAMLPATH CAML_LD_LIBRARY_PATH; do + printf %s "''${!e}" > "$out"/${path}/$e + done + ''; + }; + + get = key: ''$(cat "${runtime}/${path}/${key}")''; + in '' + for prog in "$out"/bin/* do - mv $prog .$prog-wrapped - cat > $prog <> .config << EOF + CONFIG_CMD_SETEXPR=y + EOF + ''; + # sata init; load sata 0 $loadaddr u-boot-with-nand-spl.imx + # sf probe; sf update $loadaddr 0 80000 + }; + ubootWandboard = buildUBoot rec { defconfig = "wandboard_defconfig"; targetPlatforms = ["armv7l-linux"]; diff --git a/pkgs/os-specific/linux/atop/default.nix b/pkgs/os-specific/linux/atop/default.nix index c9a51ae569a..790ab51c80d 100644 --- a/pkgs/os-specific/linux/atop/default.nix +++ b/pkgs/os-specific/linux/atop/default.nix @@ -1,12 +1,12 @@ {stdenv, fetchurl, zlib, ncurses}: stdenv.mkDerivation rec { - version = "2.2-3"; + version = "2.3.0"; name = "atop-${version}"; src = fetchurl { url = "http://www.atoptool.nl/download/atop-${version}.tar.gz"; - sha256 = "0p85isn6zih3xfprjym5xanqzazwqjj8x2mmwqyqpqjv6nibi1f7"; + sha256 = "0r5j9q89wpylmg0px5xymxi3jpihw9wq8bh37g3ciymsw1fp5r3k"; }; buildInputs = [zlib ncurses]; diff --git a/pkgs/os-specific/linux/bluez/bluez5.nix b/pkgs/os-specific/linux/bluez/bluez5.nix index 9149f6da033..89734b321fc 100644 --- a/pkgs/os-specific/linux/bluez/bluez5.nix +++ b/pkgs/os-specific/linux/bluez/bluez5.nix @@ -53,6 +53,7 @@ stdenv.mkDerivation rec { # FIXME: Move these into a separate package to prevent Bluez from # depending on Python etc. postInstall = '' + cp ./attrib/gatttool $out/bin/gatttool mkdir -p $test/test cp -a test $test pushd $test/test diff --git a/pkgs/os-specific/linux/guvcview/default.nix b/pkgs/os-specific/linux/guvcview/default.nix index 5385651030b..581d0f841b9 100644 --- a/pkgs/os-specific/linux/guvcview/default.nix +++ b/pkgs/os-specific/linux/guvcview/default.nix @@ -5,12 +5,12 @@ assert pulseaudioSupport -> libpulseaudio != null; stdenv.mkDerivation rec { - version = "2.0.4"; + version = "2.0.5"; name = "guvcview-${version}"; src = fetchurl { url = "mirror://sourceforge/project/guvcview/source/guvcview-src-${version}.tar.gz"; - sha256 = "18jg6dlqallpvjkb09dyn1v6prdmim4rrw22mhv8vdd9d18z83k7"; + sha256 = "a86beb5993a8449ed3cbcc6ec2a238ef0b90138b6cbe2afab4456d37f44c41a0"; }; buildInputs = diff --git a/pkgs/os-specific/linux/ioport/default.nix b/pkgs/os-specific/linux/ioport/default.nix new file mode 100644 index 00000000000..8ad84014a1a --- /dev/null +++ b/pkgs/os-specific/linux/ioport/default.nix @@ -0,0 +1,17 @@ +{ stdenv, perl, fetchurl }: + +stdenv.mkDerivation { + name = "ioport-1.2"; + src = fetchurl { + url = "http://people.redhat.com/rjones/ioport/files/ioport-1.2.tar.gz"; + sha256 = "1h4d5g78y7kla0zl25jgyrk43wy3m3bygqg0blki357bc55irb3z"; + }; + buildInputs = [ perl ]; + meta = with stdenv.lib; { + description = "Direct access to I/O ports from the command line"; + homepage = http://people.redhat.com/rjones/ioport/; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.cleverca22 ]; + }; +} diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.10.patch b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.10.patch new file mode 100644 index 00000000000..21040239a2b --- /dev/null +++ b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.10.patch @@ -0,0 +1,784 @@ +commit d0273888226b264d34795970c073d6e935d5114f +Author: Tejun Heo +Date: Fri Mar 11 07:31:23 2016 -0500 + + sched: Misc preps for cgroup unified hierarchy interface + + Make the following changes in preparation for the cpu controller + interface implementation for the unified hierarchy. This patch + doesn't cause any functional differences. + + * s/cpu_stats_show()/cpu_cfs_stats_show()/ + + * s/cpu_files/cpu_legacy_files/ + + * Separate out cpuacct_stats_read() from cpuacct_stats_show(). While + at it, make the @val array u64 for consistency. + + Signed-off-by: Tejun Heo + Cc: Ingo Molnar + Cc: Peter Zijlstra + Cc: Li Zefan + Cc: Johannes Weiner + +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index c56fb57f2991..112037890e9b 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -8724,7 +8724,7 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) + return ret; + } + +-static int cpu_stats_show(struct seq_file *sf, void *v) ++static int cpu_cfs_stats_show(struct seq_file *sf, void *v) + { + struct task_group *tg = css_tg(seq_css(sf)); + struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; +@@ -8764,7 +8764,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, + } + #endif /* CONFIG_RT_GROUP_SCHED */ + +-static struct cftype cpu_files[] = { ++static struct cftype cpu_legacy_files[] = { + #ifdef CONFIG_FAIR_GROUP_SCHED + { + .name = "shares", +@@ -8785,7 +8785,7 @@ static struct cftype cpu_files[] = { + }, + { + .name = "stat", +- .seq_show = cpu_stats_show, ++ .seq_show = cpu_cfs_stats_show, + }, + #endif + #ifdef CONFIG_RT_GROUP_SCHED +@@ -8810,7 +8810,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { + .fork = cpu_cgroup_fork, + .can_attach = cpu_cgroup_can_attach, + .attach = cpu_cgroup_attach, +- .legacy_cftypes = cpu_files, ++ .legacy_cftypes = cpu_legacy_files, + .early_init = true, + }; + +diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c +index 9add206b5608..4dd7b8588b69 100644 +--- a/kernel/sched/cpuacct.c ++++ b/kernel/sched/cpuacct.c +@@ -276,26 +276,33 @@ static int cpuacct_all_seq_show(struct seq_file *m, void *V) + return 0; + } + +-static int cpuacct_stats_show(struct seq_file *sf, void *v) ++static void cpuacct_stats_read(struct cpuacct *ca, ++ u64 (*val)[CPUACCT_STAT_NSTATS]) + { +- struct cpuacct *ca = css_ca(seq_css(sf)); +- s64 val[CPUACCT_STAT_NSTATS]; + int cpu; +- int stat; + +- memset(val, 0, sizeof(val)); ++ memset(val, 0, sizeof(*val)); ++ + for_each_possible_cpu(cpu) { + u64 *cpustat = per_cpu_ptr(ca->cpustat, cpu)->cpustat; + +- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; +- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; ++ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; ++ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; + } ++} ++ ++static int cpuacct_stats_show(struct seq_file *sf, void *v) ++{ ++ u64 val[CPUACCT_STAT_NSTATS]; ++ int stat; ++ ++ cpuacct_stats_read(css_ca(seq_css(sf)), &val); + + for (stat = 0; stat < CPUACCT_STAT_NSTATS; stat++) { +- seq_printf(sf, "%s %lld\n", ++ seq_printf(sf, "%s %llu\n", + cpuacct_stat_desc[stat], + (long long)cputime64_to_clock_t(val[stat])); + } + +commit 41103511fa43b4aa04fea259c5c60fef752ddefb +Author: Tejun Heo +Date: Fri Mar 11 07:31:23 2016 -0500 + + sched: Implement interface for cgroup unified hierarchy + + While the cpu controller doesn't have any functional problems, there + are a couple interface issues which can be addressed in the v2 + interface. + + * cpuacct being a separate controller. This separation is artificial + and rather pointless as demonstrated by most use cases co-mounting + the two controllers. It also forces certain information to be + accounted twice. + + * Use of different time units. Writable control knobs use + microseconds, some stat fields use nanoseconds while other cpuacct + stat fields use centiseconds. + + * Control knobs which can't be used in the root cgroup still show up + in the root. + + * Control knob names and semantics aren't consistent with other + controllers. + + This patchset implements cpu controller's interface on the unified + hierarchy which adheres to the controller file conventions described + in Documentation/cgroups/unified-hierarchy.txt. Overall, the + following changes are made. + + * cpuacct is implictly enabled and disabled by cpu and its information + is reported through "cpu.stat" which now uses microseconds for all + time durations. All time duration fields now have "_usec" appended + to them for clarity. While this doesn't solve the double accounting + immediately, once majority of users switch to v2, cpu can directly + account and report the relevant stats and cpuacct can be disabled on + the unified hierarchy. + + Note that cpuacct.usage_percpu is currently not included in + "cpu.stat". If this information is actually called for, it can be + added later. + + * "cpu.shares" is replaced with "cpu.weight" and operates on the + standard scale defined by CGROUP_WEIGHT_MIN/DFL/MAX (1, 100, 10000). + The weight is scaled to scheduler weight so that 100 maps to 1024 + and the ratio relationship is preserved - if weight is W and its + scaled value is S, W / 100 == S / 1024. While the mapped range is a + bit smaller than the orignal scheduler weight range, the dead zones + on both sides are relatively small and covers wider range than the + nice value mappings. This file doesn't make sense in the root + cgroup and isn't create on root. + + * "cpu.cfs_quota_us" and "cpu.cfs_period_us" are replaced by "cpu.max" + which contains both quota and period. + + * "cpu.rt_runtime_us" and "cpu.rt_period_us" are replaced by + "cpu.rt.max" which contains both runtime and period. + + v2: cpu_stats_show() was incorrectly using CONFIG_FAIR_GROUP_SCHED for + CFS bandwidth stats and also using raw division for u64. Use + CONFIG_CFS_BANDWITH and do_div() instead. + + The semantics of "cpu.rt.max" is not fully decided yet. Dropped + for now. + + Signed-off-by: Tejun Heo + Cc: Ingo Molnar + Cc: Peter Zijlstra + Cc: Li Zefan + Cc: Johannes Weiner + +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 112037890e9b..a80d586a4317 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -8803,6 +8803,139 @@ static struct cftype cpu_legacy_files[] = { + { } /* terminate */ + }; + ++static int cpu_stats_show(struct seq_file *sf, void *v) ++{ ++ cpuacct_cpu_stats_show(sf); ++ ++#ifdef CONFIG_CFS_BANDWIDTH ++ { ++ struct task_group *tg = css_tg(seq_css(sf)); ++ struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; ++ u64 throttled_usec; ++ ++ throttled_usec = cfs_b->throttled_time; ++ do_div(throttled_usec, NSEC_PER_USEC); ++ ++ seq_printf(sf, "nr_periods %d\n" ++ "nr_throttled %d\n" ++ "throttled_usec %llu\n", ++ cfs_b->nr_periods, cfs_b->nr_throttled, ++ throttled_usec); ++ } ++#endif ++ return 0; ++} ++ ++#ifdef CONFIG_FAIR_GROUP_SCHED ++static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css, ++ struct cftype *cft) ++{ ++ struct task_group *tg = css_tg(css); ++ u64 weight = scale_load_down(tg->shares); ++ ++ return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024); ++} ++ ++static int cpu_weight_write_u64(struct cgroup_subsys_state *css, ++ struct cftype *cftype, u64 weight) ++{ ++ /* ++ * cgroup weight knobs should use the common MIN, DFL and MAX ++ * values which are 1, 100 and 10000 respectively. While it loses ++ * a bit of range on both ends, it maps pretty well onto the shares ++ * value used by scheduler and the round-trip conversions preserve ++ * the original value over the entire range. ++ */ ++ if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX) ++ return -ERANGE; ++ ++ weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL); ++ ++ return sched_group_set_shares(css_tg(css), scale_load(weight)); ++} ++#endif ++ ++static void __maybe_unused cpu_period_quota_print(struct seq_file *sf, ++ long period, long quota) ++{ ++ if (quota < 0) ++ seq_puts(sf, "max"); ++ else ++ seq_printf(sf, "%ld", quota); ++ ++ seq_printf(sf, " %ld\n", period); ++} ++ ++/* caller should put the current value in *@periodp before calling */ ++static int __maybe_unused cpu_period_quota_parse(char *buf, ++ u64 *periodp, u64 *quotap) ++{ ++ char tok[21]; /* U64_MAX */ ++ ++ if (!sscanf(buf, "%s %llu", tok, periodp)) ++ return -EINVAL; ++ ++ *periodp *= NSEC_PER_USEC; ++ ++ if (sscanf(tok, "%llu", quotap)) ++ *quotap *= NSEC_PER_USEC; ++ else if (!strcmp(tok, "max")) ++ *quotap = RUNTIME_INF; ++ else ++ return -EINVAL; ++ ++ return 0; ++} ++ ++#ifdef CONFIG_CFS_BANDWIDTH ++static int cpu_max_show(struct seq_file *sf, void *v) ++{ ++ struct task_group *tg = css_tg(seq_css(sf)); ++ ++ cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg)); ++ return 0; ++} ++ ++static ssize_t cpu_max_write(struct kernfs_open_file *of, ++ char *buf, size_t nbytes, loff_t off) ++{ ++ struct task_group *tg = css_tg(of_css(of)); ++ u64 period = tg_get_cfs_period(tg); ++ u64 quota; ++ int ret; ++ ++ ret = cpu_period_quota_parse(buf, &period, "a); ++ if (!ret) ++ ret = tg_set_cfs_bandwidth(tg, period, quota); ++ return ret ?: nbytes; ++} ++#endif ++ ++static struct cftype cpu_files[] = { ++ { ++ .name = "stat", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .seq_show = cpu_stats_show, ++ }, ++#ifdef CONFIG_FAIR_GROUP_SCHED ++ { ++ .name = "weight", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .read_u64 = cpu_weight_read_u64, ++ .write_u64 = cpu_weight_write_u64, ++ }, ++#endif ++#ifdef CONFIG_CFS_BANDWIDTH ++ { ++ .name = "max", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .seq_show = cpu_max_show, ++ .write = cpu_max_write, ++ }, ++#endif ++ { } /* terminate */ ++}; ++ + struct cgroup_subsys cpu_cgrp_subsys = { + .css_alloc = cpu_cgroup_css_alloc, + .css_released = cpu_cgroup_css_released, +@@ -8811,7 +8944,15 @@ struct cgroup_subsys cpu_cgrp_subsys = { + .can_attach = cpu_cgroup_can_attach, + .attach = cpu_cgroup_attach, + .legacy_cftypes = cpu_legacy_files, ++ .dfl_cftypes = cpu_files, + .early_init = true, ++#ifdef CONFIG_CGROUP_CPUACCT ++ /* ++ * cpuacct is enabled together with cpu on the unified hierarchy ++ * and its stats are reported through "cpu.stat". ++ */ ++ .depends_on = 1 << cpuacct_cgrp_id, ++#endif + }; + + #endif /* CONFIG_CGROUP_SCHED */ +diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c +index 4dd7b8588b69..97c6dd7d8f59 100644 +--- a/kernel/sched/cpuacct.c ++++ b/kernel/sched/cpuacct.c +@@ -347,6 +347,31 @@ static struct cftype files[] = { + { } /* terminate */ + }; + ++/* used to print cpuacct stats in cpu.stat on the unified hierarchy */ ++void cpuacct_cpu_stats_show(struct seq_file *sf) ++{ ++ struct cgroup_subsys_state *css; ++ u64 usage, val[CPUACCT_STAT_NSTATS]; ++ ++ css = cgroup_get_e_css(seq_css(sf)->cgroup, &cpuacct_cgrp_subsys); ++ ++ usage = cpuusage_read(css, seq_cft(sf)); ++ cpuacct_stats_read(css_ca(css), &val); ++ ++ val[CPUACCT_STAT_USER] *= TICK_NSEC; ++ val[CPUACCT_STAT_SYSTEM] *= TICK_NSEC; ++ do_div(usage, NSEC_PER_USEC); ++ do_div(val[CPUACCT_STAT_USER], NSEC_PER_USEC); ++ do_div(val[CPUACCT_STAT_SYSTEM], NSEC_PER_USEC); ++ ++ seq_printf(sf, "usage_usec %llu\n" ++ "user_usec %llu\n" ++ "system_usec %llu\n", ++ usage, val[CPUACCT_STAT_USER], val[CPUACCT_STAT_SYSTEM]); ++ ++ css_put(css); ++} ++ + /* + * charge this task's execution time to its accounting group. + * +diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h +index ba72807c73d4..ddf7af466d35 100644 +--- a/kernel/sched/cpuacct.h ++++ b/kernel/sched/cpuacct.h +@@ -2,6 +2,7 @@ + + extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); + extern void cpuacct_account_field(struct task_struct *tsk, int index, u64 val); ++extern void cpuacct_cpu_stats_show(struct seq_file *sf); + + #else + +@@ -14,4 +15,8 @@ cpuacct_account_field(struct task_struct *tsk, int index, u64 val) + { + } + ++static inline void cpuacct_cpu_stats_show(struct seq_file *sf) ++{ ++} ++ + #endif + +commit 2dae6b0ec091c93131e02eb56987ec6c26818f42 +Author: Tejun Heo +Date: Fri Aug 5 12:41:01 2016 -0400 + + cgroup: add documentation regarding CPU controller cgroup v2 support + + Signed-off-by: Tejun Heo + +diff --git a/Documentation/cgroup-v2-cpu.txt b/Documentation/cgroup-v2-cpu.txt +new file mode 100644 +index 000000000000..1ed7032d4472 +--- /dev/null ++++ b/Documentation/cgroup-v2-cpu.txt +@@ -0,0 +1,368 @@ ++ ++ ++CPU Controller on Control Group v2 ++ ++August, 2016 Tejun Heo ++ ++ ++While most controllers have support for cgroup v2 now, the CPU ++controller support is not upstream yet due to objections from the ++scheduler maintainers on the basic designs of cgroup v2. This ++document explains the current situation as well as an interim ++solution, and details the disagreements and arguments. The latest ++version of this document can be found at the following URL. ++ ++ https://git.kernel.org/cgit/linux/kernel/git/tj/cgroup.git/tree/Documentation/cgroup-v2-cpu.txt?h=cgroup-v2-cpu ++ ++This document was posted to the linux-kernel and cgroup mailing lists. ++Unfortunately, no consensus was reached as of Oct, 2016. The thread ++can be found at the following URL. ++ ++ http://lkml.kernel.org/r/20160805170752.GK2542@mtj.duckdns.org ++ ++ ++CONTENTS ++ ++1. Current Situation and Interim Solution ++2. Disagreements and Arguments ++ 2-1. Contentious Restrictions ++ 2-1-1. Process Granularity ++ 2-1-2. No Internal Process Constraint ++ 2-2. Impact on CPU Controller ++ 2-2-1. Impact of Process Granularity ++ 2-2-2. Impact of No Internal Process Constraint ++ 2-3. Arguments for cgroup v2 ++3. Way Forward ++4. References ++ ++ ++1. Current Situation and Interim Solution ++ ++All objections from the scheduler maintainers apply to cgroup v2 core ++design, and there are no known objections to the specifics of the CPU ++controller cgroup v2 interface. The only blocked part is changes to ++expose the CPU controller interface on cgroup v2, which comprises the ++following two patches: ++ ++ [1] sched: Misc preps for cgroup unified hierarchy interface ++ [2] sched: Implement interface for cgroup unified hierarchy ++ ++The necessary changes are superficial and implement the interface ++files on cgroup v2. The combined diffstat is as follows. ++ ++ kernel/sched/core.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++-- ++ kernel/sched/cpuacct.c | 57 ++++++++++++------ ++ kernel/sched/cpuacct.h | 5 + ++ 3 files changed, 189 insertions(+), 22 deletions(-) ++ ++The patches are easy to apply and forward-port. The following git ++branch will always carry the two patches on top of the latest release ++of the upstream kernel. ++ ++ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu ++ ++There also are versioned branches going back to v4.4. ++ ++ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu-$KERNEL_VER ++ ++While it's difficult to tell whether the CPU controller support will ++be merged, there are crucial resource control features in cgroup v2 ++that are only possible due to the design choices that are being ++objected to, and every effort will be made to ease enabling the CPU ++controller cgroup v2 support out-of-tree for parties which choose to. ++ ++ ++2. Disagreements and Arguments ++ ++There have been several lengthy discussion threads [3][4] on LKML ++around the structural constraints of cgroup v2. The two that affect ++the CPU controller are process granularity and no internal process ++constraint. Both arise primarily from the need for common resource ++domain definition across different resources. ++ ++The common resource domain is a powerful concept in cgroup v2 that ++allows controllers to make basic assumptions about the structural ++organization of processes and controllers inside the cgroup hierarchy, ++and thus solve problems spanning multiple types of resources. The ++prime example for this is page cache writeback: dirty page cache is ++regulated through throttling buffered writers based on memory ++availability, and initiating batched write outs to the disk based on ++IO capacity. Tracking and controlling writeback inside a cgroup thus ++requires the direct cooperation of the memory and the IO controller. ++ ++This easily extends to other areas, such as CPU cycles consumed while ++performing memory reclaim or IO encryption. ++ ++ ++2-1. Contentious Restrictions ++ ++For controllers of different resources to work together, they must ++agree on a common organization. This uniform model across controllers ++imposes two contentious restrictions on the CPU controller: process ++granularity and the no-internal-process constraint. ++ ++ ++ 2-1-1. Process Granularity ++ ++ For memory, because an address space is shared between all threads ++ of a process, the terminal consumer is a process, not a thread. ++ Separating the threads of a single process into different memory ++ control domains doesn't make semantical sense. cgroup v2 ensures ++ that all controller can agree on the same organization by requiring ++ that threads of the same process belong to the same cgroup. ++ ++ There are other reasons to enforce process granularity. One ++ important one is isolating system-level management operations from ++ in-process application operations. The cgroup interface, being a ++ virtual filesystem, is very unfit for multiple independent ++ operations taking place at the same time as most operations have to ++ be multi-step and there is no way to synchronize multiple accessors. ++ See also [5] Documentation/cgroup-v2.txt, "R-2. Thread Granularity" ++ ++ ++ 2-1-2. No Internal Process Constraint ++ ++ cgroup v2 does not allow processes to belong to any cgroup which has ++ child cgroups when resource controllers are enabled on it (the ++ notable exception being the root cgroup itself). This is because, ++ for some resources, a resource domain (cgroup) is not directly ++ comparable to the terminal consumer (process/task) of said resource, ++ and so putting the two into a sibling relationship isn't meaningful. ++ ++ - Differing Control Parameters and Capabilities ++ ++ A cgroup controller has different resource control parameters and ++ capabilities from a terminal consumer, be that a task or process. ++ There are a couple cases where a cgroup control knob can be mapped ++ to a per-task or per-process API but they are exceptions and the ++ mappings aren't obvious even in those cases. ++ ++ For example, task priorities (also known as nice values) set ++ through setpriority(2) are mapped to the CPU controller ++ "cpu.shares" values. However, how exactly the two ranges map and ++ even the fact that they map to each other at all are not obvious. ++ ++ The situation gets further muddled when considering other resource ++ types and control knobs. IO priorities set through ioprio_set(2) ++ cannot be mapped to IO controller weights and most cgroup resource ++ control knobs including the bandwidth control knobs of the CPU ++ controller don't have counterparts in the terminal consumers. ++ ++ - Anonymous Resource Consumption ++ ++ For CPU, every time slice consumed from inside a cgroup, which ++ comprises most but not all of consumed CPU time for the cgroup, ++ can be clearly attributed to a specific task or process. Because ++ these two types of entities are directly comparable as consumers ++ of CPU time, it's theoretically possible to mix tasks and cgroups ++ on the same tree levels and let them directly compete for the time ++ quota available to their common ancestor. ++ ++ However, the same can't be said for resource types like memory or ++ IO: the memory consumed by the page cache, for example, can be ++ tracked on a per-cgroup level, but due to mismatches in lifetimes ++ of involved objects (page cache can persist long after processes ++ are gone), shared usages and the implementation overhead of ++ tracking persistent state, it can no longer be attributed to ++ individual processes after instantiation. Consequently, any IO ++ incurred by page cache writeback can be attributed to a cgroup, ++ but not to the individual consumers inside the cgroup. ++ ++ For memory and IO, this makes a resource domain (cgroup) an object ++ of a fundamentally different type than a terminal consumer ++ (process). A process can't be a first class object in the resource ++ distribution graph as its total resource consumption can't be ++ described without the containing resource domain. ++ ++ Disallowing processes in internal cgroups avoids competition between ++ cgroups and processes which cannot be meaningfully defined for these ++ resources. All resource control takes place among cgroups and a ++ terminal consumer interacts with the containing cgroup the same way ++ it would with the system without cgroup. ++ ++ Root cgroup is exempt from this constraint, which is in line with ++ how root cgroup is handled in general - it's excluded from cgroup ++ resource accounting and control. ++ ++ ++Enforcing process granularity and no internal process constraint ++allows all controllers to be on the same footing in terms of resource ++distribution hierarchy. ++ ++ ++2-2. Impact on CPU Controller ++ ++As indicated earlier, the CPU controller's resource distribution graph ++is the simplest. Every schedulable resource consumption can be ++attributed to a specific task. In addition, for weight based control, ++the per-task priority set through setpriority(2) can be translated to ++and from a per-cgroup weight. As such, the CPU controller can treat a ++task and a cgroup symmetrically, allowing support for any tree layout ++of cgroups and tasks. Both process granularity and the no internal ++process constraint restrict how the CPU controller can be used. ++ ++ ++ 2-2-1. Impact of Process Granularity ++ ++ Process granularity prevents tasks belonging to the same process to ++ be assigned to different cgroups. It was pointed out [6] that this ++ excludes the valid use case of hierarchical CPU distribution within ++ processes. ++ ++ To address this issue, the rgroup (resource group) [7][8][9] ++ interface, an extension of the existing setpriority(2) API, was ++ proposed, which is in line with other programmable priority ++ mechanisms and eliminates the risk of in-application configuration ++ and system configuration stepping on each other's toes. ++ Unfortunately, the proposal quickly turned into discussions around ++ cgroup v2 design decisions [4] and no consensus could be reached. ++ ++ ++ 2-2-2. Impact of No Internal Process Constraint ++ ++ The no internal process constraint disallows tasks from competing ++ directly against cgroups. Here is an excerpt from Peter Zijlstra ++ pointing out the issue [10] - R, L and A are cgroups; t1, t2, t3 and ++ t4 are tasks: ++ ++ ++ R ++ / | \ ++ t1 t2 A ++ / \ ++ t3 t4 ++ ++ ++ Is fundamentally different from: ++ ++ ++ R ++ / \ ++ L A ++ / \ / \ ++ t1 t2 t3 t4 ++ ++ ++ Because if in the first hierarchy you add a task (t5) to R, all of ++ its A will run at 1/4th of total bandwidth where before it had ++ 1/3rd, whereas with the second example, if you add our t5 to L, A ++ doesn't get any less bandwidth. ++ ++ ++ It is true that the trees are semantically different from each other ++ and the symmetric handling of tasks and cgroups is aesthetically ++ pleasing. However, it isn't clear what the practical usefulness of ++ a layout with direct competition between tasks and cgroups would be, ++ considering that number and behavior of tasks are controlled by each ++ application, and cgroups primarily deal with system level resource ++ distribution; changes in the number of active threads would directly ++ impact resource distribution. Real world use cases of such layouts ++ could not be established during the discussions. ++ ++ ++2-3. Arguments for cgroup v2 ++ ++There are strong demands for comprehensive hierarchical resource ++control across all major resources, and establishing a common resource ++hierarchy is an essential step. As with most engineering decisions, ++common resource hierarchy definition comes with its trade-offs. With ++cgroup v2, the trade-offs are in the form of structural constraints ++which, among others, restrict the CPU controller's space of possible ++configurations. ++ ++However, even with the restrictions, cgroup v2, in combination with ++rgroup, covers most of identified real world use cases while enabling ++new important use cases of resource control across multiple resource ++types that were fundamentally broken previously. ++ ++Furthermore, for resource control, treating resource domains as ++objects of a different type from terminal consumers has important ++advantages - it can account for resource consumptions which are not ++tied to any specific terminal consumer, be that a task or process, and ++allows decoupling resource distribution controls from in-application ++APIs. Even the CPU controller may benefit from it as the kernel can ++consume significant amount of CPU cycles in interrupt context or tasks ++shared across multiple resource domains (e.g. softirq). ++ ++Finally, it's important to note that enabling cgroup v2 support for ++the CPU controller doesn't block use cases which require the features ++which are not available on cgroup v2. Unlikely, but should anybody ++actually rely on the CPU controller's symmetric handling of tasks and ++cgroups, backward compatibility is and will be maintained by being ++able to disconnect the controller from the cgroup v2 hierarchy and use ++it standalone. This also holds for cpuset which is often used in ++highly customized configurations which might be a poor fit for common ++resource domains. ++ ++The required changes are minimal, the benefits for the target use ++cases are critical and obvious, and use cases which have to use v1 can ++continue to do so. ++ ++ ++3. Way Forward ++ ++cgroup v2 primarily aims to solve the problem of comprehensive ++hierarchical resource control across all major computing resources, ++which is one of the core problems of modern server infrastructure ++engineering. The trade-offs that cgroup v2 took are results of ++pursuing that goal and gaining a better understanding of the nature of ++resource control in the process. ++ ++I believe that real world usages will prove cgroup v2's model right, ++considering the crucial pieces of comprehensive resource control that ++cannot be implemented without common resource domains. This is not to ++say that cgroup v2 is fixed in stone and can't be updated; if there is ++an approach which better serves both comprehensive resource control ++and the CPU controller's flexibility, we will surely move towards ++that. It goes without saying that discussions around such approach ++should consider practical aspects of resource control as a whole ++rather than absolutely focusing on a particular controller. ++ ++Until such consensus can be reached, the CPU controller cgroup v2 ++support will be maintained out of the mainline kernel in an easily ++accessible form. If there is anything cgroup developers can do to ++ease the pain, please feel free to contact us on the cgroup mailing ++list at cgroups@vger.kernel.org. ++ ++ ++4. References ++ ++[1] http://lkml.kernel.org/r/20160105164834.GE5995@mtj.duckdns.org ++ [PATCH 1/2] sched: Misc preps for cgroup unified hierarchy interface ++ Tejun Heo ++ ++[2] http://lkml.kernel.org/r/20160105164852.GF5995@mtj.duckdns.org ++ [PATCH 2/2] sched: Implement interface for cgroup unified hierarchy ++ Tejun Heo ++ ++[3] http://lkml.kernel.org/r/1438641689-14655-4-git-send-email-tj@kernel.org ++ [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy ++ Tejun Heo ++ ++[4] http://lkml.kernel.org/r/20160407064549.GH3430@twins.programming.kicks-ass.net ++ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP ++ Peter Zijlstra ++ ++[5] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/cgroup-v2.txt ++ Control Group v2 ++ Tejun Heo ++ ++[6] http://lkml.kernel.org/r/CAPM31RJNy3jgG=DYe6GO=wyL4BPPxwUm1f2S6YXacQmo7viFZA@mail.gmail.com ++ Re: [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy ++ Paul Turner ++ ++[7] http://lkml.kernel.org/r/20160105154503.GC5995@mtj.duckdns.org ++ [RFD] cgroup: thread granularity support for cpu controller ++ Tejun Heo ++ ++[8] http://lkml.kernel.org/r/1457710888-31182-1-git-send-email-tj@kernel.org ++ [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP ++ Tejun Heo ++ ++[9] http://lkml.kernel.org/r/20160311160522.GA24046@htj.duckdns.org ++ Example program for PRIO_RGRP ++ Tejun Heo ++ ++[10] http://lkml.kernel.org/r/20160407082810.GN3430@twins.programming.kicks-ass.net ++ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource ++ Peter Zijlstra diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.11.patch b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.11.patch new file mode 100644 index 00000000000..38cc0532ba9 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.11.patch @@ -0,0 +1,784 @@ +commit 827b86ad1dd21feed4c0b99faf6059f245f7dadb +Author: Tejun Heo +Date: Fri Mar 11 07:31:23 2016 -0500 + + sched: Misc preps for cgroup unified hierarchy interface + + Make the following changes in preparation for the cpu controller + interface implementation for the unified hierarchy. This patch + doesn't cause any functional differences. + + * s/cpu_stats_show()/cpu_cfs_stats_show()/ + + * s/cpu_files/cpu_legacy_files/ + + * Separate out cpuacct_stats_read() from cpuacct_stats_show(). While + at it, make the @val array u64 for consistency. + + Signed-off-by: Tejun Heo + Cc: Ingo Molnar + Cc: Peter Zijlstra + Cc: Li Zefan + Cc: Johannes Weiner + +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 3b31fc05a0f1..a1b95e83fa87 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -7174,7 +7174,7 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) + return ret; + } + +-static int cpu_stats_show(struct seq_file *sf, void *v) ++static int cpu_cfs_stats_show(struct seq_file *sf, void *v) + { + struct task_group *tg = css_tg(seq_css(sf)); + struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; +@@ -7214,7 +7214,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, + } + #endif /* CONFIG_RT_GROUP_SCHED */ + +-static struct cftype cpu_files[] = { ++static struct cftype cpu_legacy_files[] = { + #ifdef CONFIG_FAIR_GROUP_SCHED + { + .name = "shares", +@@ -7235,7 +7235,7 @@ static struct cftype cpu_files[] = { + }, + { + .name = "stat", +- .seq_show = cpu_stats_show, ++ .seq_show = cpu_cfs_stats_show, + }, + #endif + #ifdef CONFIG_RT_GROUP_SCHED +@@ -7261,7 +7261,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { + .fork = cpu_cgroup_fork, + .can_attach = cpu_cgroup_can_attach, + .attach = cpu_cgroup_attach, +- .legacy_cftypes = cpu_files, ++ .legacy_cftypes = cpu_legacy_files, + .early_init = true, + }; + +diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c +index f95ab29a45d0..6151c23f722f 100644 +--- a/kernel/sched/cpuacct.c ++++ b/kernel/sched/cpuacct.c +@@ -276,26 +276,33 @@ static int cpuacct_all_seq_show(struct seq_file *m, void *V) + return 0; + } + +-static int cpuacct_stats_show(struct seq_file *sf, void *v) ++static void cpuacct_stats_read(struct cpuacct *ca, ++ u64 (*val)[CPUACCT_STAT_NSTATS]) + { +- struct cpuacct *ca = css_ca(seq_css(sf)); +- s64 val[CPUACCT_STAT_NSTATS]; + int cpu; +- int stat; + +- memset(val, 0, sizeof(val)); ++ memset(val, 0, sizeof(*val)); ++ + for_each_possible_cpu(cpu) { + u64 *cpustat = per_cpu_ptr(ca->cpustat, cpu)->cpustat; + +- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; +- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; ++ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; ++ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; + } ++} ++ ++static int cpuacct_stats_show(struct seq_file *sf, void *v) ++{ ++ u64 val[CPUACCT_STAT_NSTATS]; ++ int stat; ++ ++ cpuacct_stats_read(css_ca(seq_css(sf)), &val); + + for (stat = 0; stat < CPUACCT_STAT_NSTATS; stat++) { +- seq_printf(sf, "%s %lld\n", ++ seq_printf(sf, "%s %llu\n", + cpuacct_stat_desc[stat], + (long long)nsec_to_clock_t(val[stat])); + } + +commit fdb64d002b3a223ce4bb11aa4448a42050470052 +Author: Tejun Heo +Date: Fri Mar 11 07:31:23 2016 -0500 + + sched: Implement interface for cgroup unified hierarchy + + While the cpu controller doesn't have any functional problems, there + are a couple interface issues which can be addressed in the v2 + interface. + + * cpuacct being a separate controller. This separation is artificial + and rather pointless as demonstrated by most use cases co-mounting + the two controllers. It also forces certain information to be + accounted twice. + + * Use of different time units. Writable control knobs use + microseconds, some stat fields use nanoseconds while other cpuacct + stat fields use centiseconds. + + * Control knobs which can't be used in the root cgroup still show up + in the root. + + * Control knob names and semantics aren't consistent with other + controllers. + + This patchset implements cpu controller's interface on the unified + hierarchy which adheres to the controller file conventions described + in Documentation/cgroups/unified-hierarchy.txt. Overall, the + following changes are made. + + * cpuacct is implictly enabled and disabled by cpu and its information + is reported through "cpu.stat" which now uses microseconds for all + time durations. All time duration fields now have "_usec" appended + to them for clarity. While this doesn't solve the double accounting + immediately, once majority of users switch to v2, cpu can directly + account and report the relevant stats and cpuacct can be disabled on + the unified hierarchy. + + Note that cpuacct.usage_percpu is currently not included in + "cpu.stat". If this information is actually called for, it can be + added later. + + * "cpu.shares" is replaced with "cpu.weight" and operates on the + standard scale defined by CGROUP_WEIGHT_MIN/DFL/MAX (1, 100, 10000). + The weight is scaled to scheduler weight so that 100 maps to 1024 + and the ratio relationship is preserved - if weight is W and its + scaled value is S, W / 100 == S / 1024. While the mapped range is a + bit smaller than the orignal scheduler weight range, the dead zones + on both sides are relatively small and covers wider range than the + nice value mappings. This file doesn't make sense in the root + cgroup and isn't create on root. + + * "cpu.cfs_quota_us" and "cpu.cfs_period_us" are replaced by "cpu.max" + which contains both quota and period. + + * "cpu.rt_runtime_us" and "cpu.rt_period_us" are replaced by + "cpu.rt.max" which contains both runtime and period. + + v2: cpu_stats_show() was incorrectly using CONFIG_FAIR_GROUP_SCHED for + CFS bandwidth stats and also using raw division for u64. Use + CONFIG_CFS_BANDWITH and do_div() instead. + + The semantics of "cpu.rt.max" is not fully decided yet. Dropped + for now. + + Signed-off-by: Tejun Heo + Cc: Ingo Molnar + Cc: Peter Zijlstra + Cc: Li Zefan + Cc: Johannes Weiner + +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index a1b95e83fa87..f01d56e58a1b 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -7253,6 +7253,139 @@ static struct cftype cpu_legacy_files[] = { + { } /* Terminate */ + }; + ++static int cpu_stats_show(struct seq_file *sf, void *v) ++{ ++ cpuacct_cpu_stats_show(sf); ++ ++#ifdef CONFIG_CFS_BANDWIDTH ++ { ++ struct task_group *tg = css_tg(seq_css(sf)); ++ struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; ++ u64 throttled_usec; ++ ++ throttled_usec = cfs_b->throttled_time; ++ do_div(throttled_usec, NSEC_PER_USEC); ++ ++ seq_printf(sf, "nr_periods %d\n" ++ "nr_throttled %d\n" ++ "throttled_usec %llu\n", ++ cfs_b->nr_periods, cfs_b->nr_throttled, ++ throttled_usec); ++ } ++#endif ++ return 0; ++} ++ ++#ifdef CONFIG_FAIR_GROUP_SCHED ++static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css, ++ struct cftype *cft) ++{ ++ struct task_group *tg = css_tg(css); ++ u64 weight = scale_load_down(tg->shares); ++ ++ return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024); ++} ++ ++static int cpu_weight_write_u64(struct cgroup_subsys_state *css, ++ struct cftype *cftype, u64 weight) ++{ ++ /* ++ * cgroup weight knobs should use the common MIN, DFL and MAX ++ * values which are 1, 100 and 10000 respectively. While it loses ++ * a bit of range on both ends, it maps pretty well onto the shares ++ * value used by scheduler and the round-trip conversions preserve ++ * the original value over the entire range. ++ */ ++ if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX) ++ return -ERANGE; ++ ++ weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL); ++ ++ return sched_group_set_shares(css_tg(css), scale_load(weight)); ++} ++#endif ++ ++static void __maybe_unused cpu_period_quota_print(struct seq_file *sf, ++ long period, long quota) ++{ ++ if (quota < 0) ++ seq_puts(sf, "max"); ++ else ++ seq_printf(sf, "%ld", quota); ++ ++ seq_printf(sf, " %ld\n", period); ++} ++ ++/* caller should put the current value in *@periodp before calling */ ++static int __maybe_unused cpu_period_quota_parse(char *buf, ++ u64 *periodp, u64 *quotap) ++{ ++ char tok[21]; /* U64_MAX */ ++ ++ if (!sscanf(buf, "%s %llu", tok, periodp)) ++ return -EINVAL; ++ ++ *periodp *= NSEC_PER_USEC; ++ ++ if (sscanf(tok, "%llu", quotap)) ++ *quotap *= NSEC_PER_USEC; ++ else if (!strcmp(tok, "max")) ++ *quotap = RUNTIME_INF; ++ else ++ return -EINVAL; ++ ++ return 0; ++} ++ ++#ifdef CONFIG_CFS_BANDWIDTH ++static int cpu_max_show(struct seq_file *sf, void *v) ++{ ++ struct task_group *tg = css_tg(seq_css(sf)); ++ ++ cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg)); ++ return 0; ++} ++ ++static ssize_t cpu_max_write(struct kernfs_open_file *of, ++ char *buf, size_t nbytes, loff_t off) ++{ ++ struct task_group *tg = css_tg(of_css(of)); ++ u64 period = tg_get_cfs_period(tg); ++ u64 quota; ++ int ret; ++ ++ ret = cpu_period_quota_parse(buf, &period, "a); ++ if (!ret) ++ ret = tg_set_cfs_bandwidth(tg, period, quota); ++ return ret ?: nbytes; ++} ++#endif ++ ++static struct cftype cpu_files[] = { ++ { ++ .name = "stat", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .seq_show = cpu_stats_show, ++ }, ++#ifdef CONFIG_FAIR_GROUP_SCHED ++ { ++ .name = "weight", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .read_u64 = cpu_weight_read_u64, ++ .write_u64 = cpu_weight_write_u64, ++ }, ++#endif ++#ifdef CONFIG_CFS_BANDWIDTH ++ { ++ .name = "max", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .seq_show = cpu_max_show, ++ .write = cpu_max_write, ++ }, ++#endif ++ { } /* terminate */ ++}; ++ + struct cgroup_subsys cpu_cgrp_subsys = { + .css_alloc = cpu_cgroup_css_alloc, + .css_online = cpu_cgroup_css_online, +@@ -7262,7 +7395,15 @@ struct cgroup_subsys cpu_cgrp_subsys = { + .can_attach = cpu_cgroup_can_attach, + .attach = cpu_cgroup_attach, + .legacy_cftypes = cpu_legacy_files, ++ .dfl_cftypes = cpu_files, + .early_init = true, ++#ifdef CONFIG_CGROUP_CPUACCT ++ /* ++ * cpuacct is enabled together with cpu on the unified hierarchy ++ * and its stats are reported through "cpu.stat". ++ */ ++ .depends_on = 1 << cpuacct_cgrp_id, ++#endif + }; + + #endif /* CONFIG_CGROUP_SCHED */ +diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c +index 6151c23f722f..fc1cf13c3af1 100644 +--- a/kernel/sched/cpuacct.c ++++ b/kernel/sched/cpuacct.c +@@ -347,6 +347,31 @@ static struct cftype files[] = { + { } /* terminate */ + }; + ++/* used to print cpuacct stats in cpu.stat on the unified hierarchy */ ++void cpuacct_cpu_stats_show(struct seq_file *sf) ++{ ++ struct cgroup_subsys_state *css; ++ u64 usage, val[CPUACCT_STAT_NSTATS]; ++ ++ css = cgroup_get_e_css(seq_css(sf)->cgroup, &cpuacct_cgrp_subsys); ++ ++ usage = cpuusage_read(css, seq_cft(sf)); ++ cpuacct_stats_read(css_ca(css), &val); ++ ++ val[CPUACCT_STAT_USER] *= TICK_NSEC; ++ val[CPUACCT_STAT_SYSTEM] *= TICK_NSEC; ++ do_div(usage, NSEC_PER_USEC); ++ do_div(val[CPUACCT_STAT_USER], NSEC_PER_USEC); ++ do_div(val[CPUACCT_STAT_SYSTEM], NSEC_PER_USEC); ++ ++ seq_printf(sf, "usage_usec %llu\n" ++ "user_usec %llu\n" ++ "system_usec %llu\n", ++ usage, val[CPUACCT_STAT_USER], val[CPUACCT_STAT_SYSTEM]); ++ ++ css_put(css); ++} ++ + /* + * charge this task's execution time to its accounting group. + * +diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h +index ba72807c73d4..ddf7af466d35 100644 +--- a/kernel/sched/cpuacct.h ++++ b/kernel/sched/cpuacct.h +@@ -2,6 +2,7 @@ + + extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); + extern void cpuacct_account_field(struct task_struct *tsk, int index, u64 val); ++extern void cpuacct_cpu_stats_show(struct seq_file *sf); + + #else + +@@ -14,4 +15,8 @@ cpuacct_account_field(struct task_struct *tsk, int index, u64 val) + { + } + ++static inline void cpuacct_cpu_stats_show(struct seq_file *sf) ++{ ++} ++ + #endif + +commit 8dde150866b8c433216105c50b7e889d5242d583 +Author: Tejun Heo +Date: Fri Aug 5 12:41:01 2016 -0400 + + cgroup: add documentation regarding CPU controller cgroup v2 support + + Signed-off-by: Tejun Heo + +diff --git a/Documentation/cgroup-v2-cpu.txt b/Documentation/cgroup-v2-cpu.txt +new file mode 100644 +index 000000000000..1ed7032d4472 +--- /dev/null ++++ b/Documentation/cgroup-v2-cpu.txt +@@ -0,0 +1,368 @@ ++ ++ ++CPU Controller on Control Group v2 ++ ++August, 2016 Tejun Heo ++ ++ ++While most controllers have support for cgroup v2 now, the CPU ++controller support is not upstream yet due to objections from the ++scheduler maintainers on the basic designs of cgroup v2. This ++document explains the current situation as well as an interim ++solution, and details the disagreements and arguments. The latest ++version of this document can be found at the following URL. ++ ++ https://git.kernel.org/cgit/linux/kernel/git/tj/cgroup.git/tree/Documentation/cgroup-v2-cpu.txt?h=cgroup-v2-cpu ++ ++This document was posted to the linux-kernel and cgroup mailing lists. ++Unfortunately, no consensus was reached as of Oct, 2016. The thread ++can be found at the following URL. ++ ++ http://lkml.kernel.org/r/20160805170752.GK2542@mtj.duckdns.org ++ ++ ++CONTENTS ++ ++1. Current Situation and Interim Solution ++2. Disagreements and Arguments ++ 2-1. Contentious Restrictions ++ 2-1-1. Process Granularity ++ 2-1-2. No Internal Process Constraint ++ 2-2. Impact on CPU Controller ++ 2-2-1. Impact of Process Granularity ++ 2-2-2. Impact of No Internal Process Constraint ++ 2-3. Arguments for cgroup v2 ++3. Way Forward ++4. References ++ ++ ++1. Current Situation and Interim Solution ++ ++All objections from the scheduler maintainers apply to cgroup v2 core ++design, and there are no known objections to the specifics of the CPU ++controller cgroup v2 interface. The only blocked part is changes to ++expose the CPU controller interface on cgroup v2, which comprises the ++following two patches: ++ ++ [1] sched: Misc preps for cgroup unified hierarchy interface ++ [2] sched: Implement interface for cgroup unified hierarchy ++ ++The necessary changes are superficial and implement the interface ++files on cgroup v2. The combined diffstat is as follows. ++ ++ kernel/sched/core.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++-- ++ kernel/sched/cpuacct.c | 57 ++++++++++++------ ++ kernel/sched/cpuacct.h | 5 + ++ 3 files changed, 189 insertions(+), 22 deletions(-) ++ ++The patches are easy to apply and forward-port. The following git ++branch will always carry the two patches on top of the latest release ++of the upstream kernel. ++ ++ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu ++ ++There also are versioned branches going back to v4.4. ++ ++ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu-$KERNEL_VER ++ ++While it's difficult to tell whether the CPU controller support will ++be merged, there are crucial resource control features in cgroup v2 ++that are only possible due to the design choices that are being ++objected to, and every effort will be made to ease enabling the CPU ++controller cgroup v2 support out-of-tree for parties which choose to. ++ ++ ++2. Disagreements and Arguments ++ ++There have been several lengthy discussion threads [3][4] on LKML ++around the structural constraints of cgroup v2. The two that affect ++the CPU controller are process granularity and no internal process ++constraint. Both arise primarily from the need for common resource ++domain definition across different resources. ++ ++The common resource domain is a powerful concept in cgroup v2 that ++allows controllers to make basic assumptions about the structural ++organization of processes and controllers inside the cgroup hierarchy, ++and thus solve problems spanning multiple types of resources. The ++prime example for this is page cache writeback: dirty page cache is ++regulated through throttling buffered writers based on memory ++availability, and initiating batched write outs to the disk based on ++IO capacity. Tracking and controlling writeback inside a cgroup thus ++requires the direct cooperation of the memory and the IO controller. ++ ++This easily extends to other areas, such as CPU cycles consumed while ++performing memory reclaim or IO encryption. ++ ++ ++2-1. Contentious Restrictions ++ ++For controllers of different resources to work together, they must ++agree on a common organization. This uniform model across controllers ++imposes two contentious restrictions on the CPU controller: process ++granularity and the no-internal-process constraint. ++ ++ ++ 2-1-1. Process Granularity ++ ++ For memory, because an address space is shared between all threads ++ of a process, the terminal consumer is a process, not a thread. ++ Separating the threads of a single process into different memory ++ control domains doesn't make semantical sense. cgroup v2 ensures ++ that all controller can agree on the same organization by requiring ++ that threads of the same process belong to the same cgroup. ++ ++ There are other reasons to enforce process granularity. One ++ important one is isolating system-level management operations from ++ in-process application operations. The cgroup interface, being a ++ virtual filesystem, is very unfit for multiple independent ++ operations taking place at the same time as most operations have to ++ be multi-step and there is no way to synchronize multiple accessors. ++ See also [5] Documentation/cgroup-v2.txt, "R-2. Thread Granularity" ++ ++ ++ 2-1-2. No Internal Process Constraint ++ ++ cgroup v2 does not allow processes to belong to any cgroup which has ++ child cgroups when resource controllers are enabled on it (the ++ notable exception being the root cgroup itself). This is because, ++ for some resources, a resource domain (cgroup) is not directly ++ comparable to the terminal consumer (process/task) of said resource, ++ and so putting the two into a sibling relationship isn't meaningful. ++ ++ - Differing Control Parameters and Capabilities ++ ++ A cgroup controller has different resource control parameters and ++ capabilities from a terminal consumer, be that a task or process. ++ There are a couple cases where a cgroup control knob can be mapped ++ to a per-task or per-process API but they are exceptions and the ++ mappings aren't obvious even in those cases. ++ ++ For example, task priorities (also known as nice values) set ++ through setpriority(2) are mapped to the CPU controller ++ "cpu.shares" values. However, how exactly the two ranges map and ++ even the fact that they map to each other at all are not obvious. ++ ++ The situation gets further muddled when considering other resource ++ types and control knobs. IO priorities set through ioprio_set(2) ++ cannot be mapped to IO controller weights and most cgroup resource ++ control knobs including the bandwidth control knobs of the CPU ++ controller don't have counterparts in the terminal consumers. ++ ++ - Anonymous Resource Consumption ++ ++ For CPU, every time slice consumed from inside a cgroup, which ++ comprises most but not all of consumed CPU time for the cgroup, ++ can be clearly attributed to a specific task or process. Because ++ these two types of entities are directly comparable as consumers ++ of CPU time, it's theoretically possible to mix tasks and cgroups ++ on the same tree levels and let them directly compete for the time ++ quota available to their common ancestor. ++ ++ However, the same can't be said for resource types like memory or ++ IO: the memory consumed by the page cache, for example, can be ++ tracked on a per-cgroup level, but due to mismatches in lifetimes ++ of involved objects (page cache can persist long after processes ++ are gone), shared usages and the implementation overhead of ++ tracking persistent state, it can no longer be attributed to ++ individual processes after instantiation. Consequently, any IO ++ incurred by page cache writeback can be attributed to a cgroup, ++ but not to the individual consumers inside the cgroup. ++ ++ For memory and IO, this makes a resource domain (cgroup) an object ++ of a fundamentally different type than a terminal consumer ++ (process). A process can't be a first class object in the resource ++ distribution graph as its total resource consumption can't be ++ described without the containing resource domain. ++ ++ Disallowing processes in internal cgroups avoids competition between ++ cgroups and processes which cannot be meaningfully defined for these ++ resources. All resource control takes place among cgroups and a ++ terminal consumer interacts with the containing cgroup the same way ++ it would with the system without cgroup. ++ ++ Root cgroup is exempt from this constraint, which is in line with ++ how root cgroup is handled in general - it's excluded from cgroup ++ resource accounting and control. ++ ++ ++Enforcing process granularity and no internal process constraint ++allows all controllers to be on the same footing in terms of resource ++distribution hierarchy. ++ ++ ++2-2. Impact on CPU Controller ++ ++As indicated earlier, the CPU controller's resource distribution graph ++is the simplest. Every schedulable resource consumption can be ++attributed to a specific task. In addition, for weight based control, ++the per-task priority set through setpriority(2) can be translated to ++and from a per-cgroup weight. As such, the CPU controller can treat a ++task and a cgroup symmetrically, allowing support for any tree layout ++of cgroups and tasks. Both process granularity and the no internal ++process constraint restrict how the CPU controller can be used. ++ ++ ++ 2-2-1. Impact of Process Granularity ++ ++ Process granularity prevents tasks belonging to the same process to ++ be assigned to different cgroups. It was pointed out [6] that this ++ excludes the valid use case of hierarchical CPU distribution within ++ processes. ++ ++ To address this issue, the rgroup (resource group) [7][8][9] ++ interface, an extension of the existing setpriority(2) API, was ++ proposed, which is in line with other programmable priority ++ mechanisms and eliminates the risk of in-application configuration ++ and system configuration stepping on each other's toes. ++ Unfortunately, the proposal quickly turned into discussions around ++ cgroup v2 design decisions [4] and no consensus could be reached. ++ ++ ++ 2-2-2. Impact of No Internal Process Constraint ++ ++ The no internal process constraint disallows tasks from competing ++ directly against cgroups. Here is an excerpt from Peter Zijlstra ++ pointing out the issue [10] - R, L and A are cgroups; t1, t2, t3 and ++ t4 are tasks: ++ ++ ++ R ++ / | \ ++ t1 t2 A ++ / \ ++ t3 t4 ++ ++ ++ Is fundamentally different from: ++ ++ ++ R ++ / \ ++ L A ++ / \ / \ ++ t1 t2 t3 t4 ++ ++ ++ Because if in the first hierarchy you add a task (t5) to R, all of ++ its A will run at 1/4th of total bandwidth where before it had ++ 1/3rd, whereas with the second example, if you add our t5 to L, A ++ doesn't get any less bandwidth. ++ ++ ++ It is true that the trees are semantically different from each other ++ and the symmetric handling of tasks and cgroups is aesthetically ++ pleasing. However, it isn't clear what the practical usefulness of ++ a layout with direct competition between tasks and cgroups would be, ++ considering that number and behavior of tasks are controlled by each ++ application, and cgroups primarily deal with system level resource ++ distribution; changes in the number of active threads would directly ++ impact resource distribution. Real world use cases of such layouts ++ could not be established during the discussions. ++ ++ ++2-3. Arguments for cgroup v2 ++ ++There are strong demands for comprehensive hierarchical resource ++control across all major resources, and establishing a common resource ++hierarchy is an essential step. As with most engineering decisions, ++common resource hierarchy definition comes with its trade-offs. With ++cgroup v2, the trade-offs are in the form of structural constraints ++which, among others, restrict the CPU controller's space of possible ++configurations. ++ ++However, even with the restrictions, cgroup v2, in combination with ++rgroup, covers most of identified real world use cases while enabling ++new important use cases of resource control across multiple resource ++types that were fundamentally broken previously. ++ ++Furthermore, for resource control, treating resource domains as ++objects of a different type from terminal consumers has important ++advantages - it can account for resource consumptions which are not ++tied to any specific terminal consumer, be that a task or process, and ++allows decoupling resource distribution controls from in-application ++APIs. Even the CPU controller may benefit from it as the kernel can ++consume significant amount of CPU cycles in interrupt context or tasks ++shared across multiple resource domains (e.g. softirq). ++ ++Finally, it's important to note that enabling cgroup v2 support for ++the CPU controller doesn't block use cases which require the features ++which are not available on cgroup v2. Unlikely, but should anybody ++actually rely on the CPU controller's symmetric handling of tasks and ++cgroups, backward compatibility is and will be maintained by being ++able to disconnect the controller from the cgroup v2 hierarchy and use ++it standalone. This also holds for cpuset which is often used in ++highly customized configurations which might be a poor fit for common ++resource domains. ++ ++The required changes are minimal, the benefits for the target use ++cases are critical and obvious, and use cases which have to use v1 can ++continue to do so. ++ ++ ++3. Way Forward ++ ++cgroup v2 primarily aims to solve the problem of comprehensive ++hierarchical resource control across all major computing resources, ++which is one of the core problems of modern server infrastructure ++engineering. The trade-offs that cgroup v2 took are results of ++pursuing that goal and gaining a better understanding of the nature of ++resource control in the process. ++ ++I believe that real world usages will prove cgroup v2's model right, ++considering the crucial pieces of comprehensive resource control that ++cannot be implemented without common resource domains. This is not to ++say that cgroup v2 is fixed in stone and can't be updated; if there is ++an approach which better serves both comprehensive resource control ++and the CPU controller's flexibility, we will surely move towards ++that. It goes without saying that discussions around such approach ++should consider practical aspects of resource control as a whole ++rather than absolutely focusing on a particular controller. ++ ++Until such consensus can be reached, the CPU controller cgroup v2 ++support will be maintained out of the mainline kernel in an easily ++accessible form. If there is anything cgroup developers can do to ++ease the pain, please feel free to contact us on the cgroup mailing ++list at cgroups@vger.kernel.org. ++ ++ ++4. References ++ ++[1] http://lkml.kernel.org/r/20160105164834.GE5995@mtj.duckdns.org ++ [PATCH 1/2] sched: Misc preps for cgroup unified hierarchy interface ++ Tejun Heo ++ ++[2] http://lkml.kernel.org/r/20160105164852.GF5995@mtj.duckdns.org ++ [PATCH 2/2] sched: Implement interface for cgroup unified hierarchy ++ Tejun Heo ++ ++[3] http://lkml.kernel.org/r/1438641689-14655-4-git-send-email-tj@kernel.org ++ [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy ++ Tejun Heo ++ ++[4] http://lkml.kernel.org/r/20160407064549.GH3430@twins.programming.kicks-ass.net ++ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP ++ Peter Zijlstra ++ ++[5] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/cgroup-v2.txt ++ Control Group v2 ++ Tejun Heo ++ ++[6] http://lkml.kernel.org/r/CAPM31RJNy3jgG=DYe6GO=wyL4BPPxwUm1f2S6YXacQmo7viFZA@mail.gmail.com ++ Re: [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy ++ Paul Turner ++ ++[7] http://lkml.kernel.org/r/20160105154503.GC5995@mtj.duckdns.org ++ [RFD] cgroup: thread granularity support for cpu controller ++ Tejun Heo ++ ++[8] http://lkml.kernel.org/r/1457710888-31182-1-git-send-email-tj@kernel.org ++ [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP ++ Tejun Heo ++ ++[9] http://lkml.kernel.org/r/20160311160522.GA24046@htj.duckdns.org ++ Example program for PRIO_RGRP ++ Tejun Heo ++ ++[10] http://lkml.kernel.org/r/20160407082810.GN3430@twins.programming.kicks-ass.net ++ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource ++ Peter Zijlstra diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.6.patch b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.6.patch deleted file mode 100644 index f64908317ca..00000000000 --- a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.6.patch +++ /dev/null @@ -1,407 +0,0 @@ -commit 6426c5b02d4aab620219b08a5d97ad8851b56b0d -Author: Tejun Heo -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Misc preps for cgroup unified hierarchy interface - - Make the following changes in preparation for the cpu controller - interface implementation for the unified hierarchy. This patch - doesn't cause any functional differences. - - * s/cpu_stats_show()/cpu_cfs_stats_show()/ - - * s/cpu_files/cpu_legacy_files/ - - * Separate out cpuacct_stats_read() from cpuacct_stats_show(). While - at it, remove pointless cpuacct_stat_desc[] array. - - Signed-off-by: Tejun Heo - Cc: Ingo Molnar - Cc: Peter Zijlstra - Cc: Li Zefan - Cc: Johannes Weiner - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index d1f7149..0d34f35 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -8371,7 +8371,7 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) - return ret; - } - --static int cpu_stats_show(struct seq_file *sf, void *v) -+static int cpu_cfs_stats_show(struct seq_file *sf, void *v) - { - struct task_group *tg = css_tg(seq_css(sf)); - struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -@@ -8411,7 +8411,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, - } - #endif /* CONFIG_RT_GROUP_SCHED */ - --static struct cftype cpu_files[] = { -+static struct cftype cpu_legacy_files[] = { - #ifdef CONFIG_FAIR_GROUP_SCHED - { - .name = "shares", -@@ -8432,7 +8432,7 @@ static struct cftype cpu_files[] = { - }, - { - .name = "stat", -- .seq_show = cpu_stats_show, -+ .seq_show = cpu_cfs_stats_show, - }, - #endif - #ifdef CONFIG_RT_GROUP_SCHED -@@ -8457,7 +8457,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .fork = cpu_cgroup_fork, - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, -- .legacy_cftypes = cpu_files, -+ .legacy_cftypes = cpu_legacy_files, - .early_init = true, - }; - -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index 4a81120..b99030a 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -180,36 +180,33 @@ static int cpuacct_percpu_seq_show(struct seq_file *m, void *V) - return 0; - } - --static const char * const cpuacct_stat_desc[] = { -- [CPUACCT_STAT_USER] = "user", -- [CPUACCT_STAT_SYSTEM] = "system", --}; -- --static int cpuacct_stats_show(struct seq_file *sf, void *v) -+static void cpuacct_stats_read(struct cpuacct *ca, u64 *userp, u64 *sysp) - { -- struct cpuacct *ca = css_ca(seq_css(sf)); - int cpu; -- s64 val = 0; - -+ *userp = 0; - for_each_online_cpu(cpu) { - struct kernel_cpustat *kcpustat = per_cpu_ptr(ca->cpustat, cpu); -- val += kcpustat->cpustat[CPUTIME_USER]; -- val += kcpustat->cpustat[CPUTIME_NICE]; -+ *userp += kcpustat->cpustat[CPUTIME_USER]; -+ *userp += kcpustat->cpustat[CPUTIME_NICE]; - } -- val = cputime64_to_clock_t(val); -- seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_USER], val); - -- val = 0; -+ *sysp = 0; - for_each_online_cpu(cpu) { - struct kernel_cpustat *kcpustat = per_cpu_ptr(ca->cpustat, cpu); -- val += kcpustat->cpustat[CPUTIME_SYSTEM]; -- val += kcpustat->cpustat[CPUTIME_IRQ]; -- val += kcpustat->cpustat[CPUTIME_SOFTIRQ]; -+ *sysp += kcpustat->cpustat[CPUTIME_SYSTEM]; -+ *sysp += kcpustat->cpustat[CPUTIME_IRQ]; -+ *sysp += kcpustat->cpustat[CPUTIME_SOFTIRQ]; - } -+} - -- val = cputime64_to_clock_t(val); -- seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_SYSTEM], val); -+static int cpuacct_stats_show(struct seq_file *sf, void *v) -+{ -+ cputime64_t user, sys; - -+ cpuacct_stats_read(css_ca(seq_css(sf)), &user, &sys); -+ seq_printf(sf, "user %lld\n", cputime64_to_clock_t(user)); -+ seq_printf(sf, "system %lld\n", cputime64_to_clock_t(sys)); - return 0; - } - - -commit d2a799f795a5d5a69c9dc365c34f926e0649f840 -Author: Tejun Heo -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Implement interface for cgroup unified hierarchy - - While the cpu controller doesn't have any functional problems, there - are a couple interface issues which can be addressed in the v2 - interface. - - * cpuacct being a separate controller. This separation is artificial - and rather pointless as demonstrated by most use cases co-mounting - the two controllers. It also forces certain information to be - accounted twice. - - * Use of different time units. Writable control knobs use - microseconds, some stat fields use nanoseconds while other cpuacct - stat fields use centiseconds. - - * Control knobs which can't be used in the root cgroup still show up - in the root. - - * Control knob names and semantics aren't consistent with other - controllers. - - This patchset implements cpu controller's interface on the unified - hierarchy which adheres to the controller file conventions described - in Documentation/cgroups/unified-hierarchy.txt. Overall, the - following changes are made. - - * cpuacct is implictly enabled and disabled by cpu and its information - is reported through "cpu.stat" which now uses microseconds for all - time durations. All time duration fields now have "_usec" appended - to them for clarity. While this doesn't solve the double accounting - immediately, once majority of users switch to v2, cpu can directly - account and report the relevant stats and cpuacct can be disabled on - the unified hierarchy. - - Note that cpuacct.usage_percpu is currently not included in - "cpu.stat". If this information is actually called for, it can be - added later. - - * "cpu.shares" is replaced with "cpu.weight" and operates on the - standard scale defined by CGROUP_WEIGHT_MIN/DFL/MAX (1, 100, 10000). - The weight is scaled to scheduler weight so that 100 maps to 1024 - and the ratio relationship is preserved - if weight is W and its - scaled value is S, W / 100 == S / 1024. While the mapped range is a - bit smaller than the orignal scheduler weight range, the dead zones - on both sides are relatively small and covers wider range than the - nice value mappings. This file doesn't make sense in the root - cgroup and isn't create on root. - - * "cpu.cfs_quota_us" and "cpu.cfs_period_us" are replaced by "cpu.max" - which contains both quota and period. - - * "cpu.rt_runtime_us" and "cpu.rt_period_us" are replaced by - "cpu.rt.max" which contains both runtime and period. - - v2: cpu_stats_show() was incorrectly using CONFIG_FAIR_GROUP_SCHED for - CFS bandwidth stats and also using raw division for u64. Use - CONFIG_CFS_BANDWITH and do_div() instead. - - The semantics of "cpu.rt.max" is not fully decided yet. Dropped - for now. - - Signed-off-by: Tejun Heo - Cc: Ingo Molnar - Cc: Peter Zijlstra - Cc: Li Zefan - Cc: Johannes Weiner - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 0d34f35..5990efc 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -8450,6 +8450,139 @@ static struct cftype cpu_legacy_files[] = { - { } /* terminate */ - }; - -+static int cpu_stats_show(struct seq_file *sf, void *v) -+{ -+ cpuacct_cpu_stats_show(sf); -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ struct task_group *tg = css_tg(seq_css(sf)); -+ struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -+ u64 throttled_usec; -+ -+ throttled_usec = cfs_b->throttled_time; -+ do_div(throttled_usec, NSEC_PER_USEC); -+ -+ seq_printf(sf, "nr_periods %d\n" -+ "nr_throttled %d\n" -+ "throttled_usec %llu\n", -+ cfs_b->nr_periods, cfs_b->nr_throttled, -+ throttled_usec); -+ } -+#endif -+ return 0; -+} -+ -+#ifdef CONFIG_FAIR_GROUP_SCHED -+static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css, -+ struct cftype *cft) -+{ -+ struct task_group *tg = css_tg(css); -+ u64 weight = scale_load_down(tg->shares); -+ -+ return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024); -+} -+ -+static int cpu_weight_write_u64(struct cgroup_subsys_state *css, -+ struct cftype *cftype, u64 weight) -+{ -+ /* -+ * cgroup weight knobs should use the common MIN, DFL and MAX -+ * values which are 1, 100 and 10000 respectively. While it loses -+ * a bit of range on both ends, it maps pretty well onto the shares -+ * value used by scheduler and the round-trip conversions preserve -+ * the original value over the entire range. -+ */ -+ if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX) -+ return -ERANGE; -+ -+ weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL); -+ -+ return sched_group_set_shares(css_tg(css), scale_load(weight)); -+} -+#endif -+ -+static void __maybe_unused cpu_period_quota_print(struct seq_file *sf, -+ long period, long quota) -+{ -+ if (quota < 0) -+ seq_puts(sf, "max"); -+ else -+ seq_printf(sf, "%ld", quota); -+ -+ seq_printf(sf, " %ld\n", period); -+} -+ -+/* caller should put the current value in *@periodp before calling */ -+static int __maybe_unused cpu_period_quota_parse(char *buf, -+ u64 *periodp, u64 *quotap) -+{ -+ char tok[21]; /* U64_MAX */ -+ -+ if (!sscanf(buf, "%s %llu", tok, periodp)) -+ return -EINVAL; -+ -+ *periodp *= NSEC_PER_USEC; -+ -+ if (sscanf(tok, "%llu", quotap)) -+ *quotap *= NSEC_PER_USEC; -+ else if (!strcmp(tok, "max")) -+ *quotap = RUNTIME_INF; -+ else -+ return -EINVAL; -+ -+ return 0; -+} -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+static int cpu_max_show(struct seq_file *sf, void *v) -+{ -+ struct task_group *tg = css_tg(seq_css(sf)); -+ -+ cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg)); -+ return 0; -+} -+ -+static ssize_t cpu_max_write(struct kernfs_open_file *of, -+ char *buf, size_t nbytes, loff_t off) -+{ -+ struct task_group *tg = css_tg(of_css(of)); -+ u64 period = tg_get_cfs_period(tg); -+ u64 quota; -+ int ret; -+ -+ ret = cpu_period_quota_parse(buf, &period, "a); -+ if (!ret) -+ ret = tg_set_cfs_bandwidth(tg, period, quota); -+ return ret ?: nbytes; -+} -+#endif -+ -+static struct cftype cpu_files[] = { -+ { -+ .name = "stat", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_stats_show, -+ }, -+#ifdef CONFIG_FAIR_GROUP_SCHED -+ { -+ .name = "weight", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .read_u64 = cpu_weight_read_u64, -+ .write_u64 = cpu_weight_write_u64, -+ }, -+#endif -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ .name = "max", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_max_show, -+ .write = cpu_max_write, -+ }, -+#endif -+ { } /* terminate */ -+}; -+ - struct cgroup_subsys cpu_cgrp_subsys = { - .css_alloc = cpu_cgroup_css_alloc, - .css_released = cpu_cgroup_css_released, -@@ -8458,7 +8591,15 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, - .legacy_cftypes = cpu_legacy_files, -+ .dfl_cftypes = cpu_files, - .early_init = true, -+#ifdef CONFIG_CGROUP_CPUACCT -+ /* -+ * cpuacct is enabled together with cpu on the unified hierarchy -+ * and its stats are reported through "cpu.stat". -+ */ -+ .depends_on = 1 << cpuacct_cgrp_id, -+#endif - }; - - #endif /* CONFIG_CGROUP_SCHED */ -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index b99030a..a1a5a4b 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -227,6 +227,30 @@ static struct cftype files[] = { - { } /* terminate */ - }; - -+/* used to print cpuacct stats in cpu.stat on the unified hierarchy */ -+void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+ struct cgroup_subsys_state *css; -+ u64 usage, user, sys; -+ -+ css = cgroup_get_e_css(seq_css(sf)->cgroup, &cpuacct_cgrp_subsys); -+ -+ usage = cpuusage_read(css, seq_cft(sf)); -+ cpuacct_stats_read(css_ca(css), &user, &sys); -+ -+ user *= TICK_NSEC; -+ sys *= TICK_NSEC; -+ do_div(usage, NSEC_PER_USEC); -+ do_div(user, NSEC_PER_USEC); -+ do_div(sys, NSEC_PER_USEC); -+ -+ seq_printf(sf, "usage_usec %llu\n" -+ "user_usec %llu\n" -+ "system_usec %llu\n", usage, user, sys); -+ -+ css_put(css); -+} -+ - /* - * charge this task's execution time to its accounting group. - * -diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h -index ba72807..ddf7af4 100644 ---- a/kernel/sched/cpuacct.h -+++ b/kernel/sched/cpuacct.h -@@ -2,6 +2,7 @@ - - extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); - extern void cpuacct_account_field(struct task_struct *tsk, int index, u64 val); -+extern void cpuacct_cpu_stats_show(struct seq_file *sf); - - #else - -@@ -14,4 +15,8 @@ cpuacct_account_field(struct task_struct *tsk, int index, u64 val) - { - } - -+static inline void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+} -+ - #endif diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.7.patch b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.7.patch deleted file mode 100644 index 74dae740e37..00000000000 --- a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.7.patch +++ /dev/null @@ -1,407 +0,0 @@ -commit 0d966df508ef4d6c0b1baae9e369f4fb0d3e10af -Author: Tejun Heo -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Misc preps for cgroup unified hierarchy interface - - Make the following changes in preparation for the cpu controller - interface implementation for the unified hierarchy. This patch - doesn't cause any functional differences. - - * s/cpu_stats_show()/cpu_cfs_stats_show()/ - - * s/cpu_files/cpu_legacy_files/ - - * Separate out cpuacct_stats_read() from cpuacct_stats_show(). While - at it, remove pointless cpuacct_stat_desc[] array. - - Signed-off-by: Tejun Heo - Cc: Ingo Molnar - Cc: Peter Zijlstra - Cc: Li Zefan - Cc: Johannes Weiner - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 97ee9ac..c148dfe 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -8482,7 +8482,7 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) - return ret; - } - --static int cpu_stats_show(struct seq_file *sf, void *v) -+static int cpu_cfs_stats_show(struct seq_file *sf, void *v) - { - struct task_group *tg = css_tg(seq_css(sf)); - struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -@@ -8522,7 +8522,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, - } - #endif /* CONFIG_RT_GROUP_SCHED */ - --static struct cftype cpu_files[] = { -+static struct cftype cpu_legacy_files[] = { - #ifdef CONFIG_FAIR_GROUP_SCHED - { - .name = "shares", -@@ -8543,7 +8543,7 @@ static struct cftype cpu_files[] = { - }, - { - .name = "stat", -- .seq_show = cpu_stats_show, -+ .seq_show = cpu_cfs_stats_show, - }, - #endif - #ifdef CONFIG_RT_GROUP_SCHED -@@ -8568,7 +8568,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .fork = cpu_cgroup_fork, - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, -- .legacy_cftypes = cpu_files, -+ .legacy_cftypes = cpu_legacy_files, - .early_init = true, - }; - -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index 41f85c4..3eb9eda 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -242,36 +242,33 @@ static int cpuacct_percpu_seq_show(struct seq_file *m, void *V) - return __cpuacct_percpu_seq_show(m, CPUACCT_USAGE_NRUSAGE); - } - --static const char * const cpuacct_stat_desc[] = { -- [CPUACCT_STAT_USER] = "user", -- [CPUACCT_STAT_SYSTEM] = "system", --}; -- --static int cpuacct_stats_show(struct seq_file *sf, void *v) -+static void cpuacct_stats_read(struct cpuacct *ca, u64 *userp, u64 *sysp) - { -- struct cpuacct *ca = css_ca(seq_css(sf)); - int cpu; -- s64 val = 0; - -+ *userp = 0; - for_each_possible_cpu(cpu) { - struct kernel_cpustat *kcpustat = per_cpu_ptr(ca->cpustat, cpu); -- val += kcpustat->cpustat[CPUTIME_USER]; -- val += kcpustat->cpustat[CPUTIME_NICE]; -+ *userp += kcpustat->cpustat[CPUTIME_USER]; -+ *userp += kcpustat->cpustat[CPUTIME_NICE]; - } -- val = cputime64_to_clock_t(val); -- seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_USER], val); - -- val = 0; -+ *sysp = 0; - for_each_possible_cpu(cpu) { - struct kernel_cpustat *kcpustat = per_cpu_ptr(ca->cpustat, cpu); -- val += kcpustat->cpustat[CPUTIME_SYSTEM]; -- val += kcpustat->cpustat[CPUTIME_IRQ]; -- val += kcpustat->cpustat[CPUTIME_SOFTIRQ]; -+ *sysp += kcpustat->cpustat[CPUTIME_SYSTEM]; -+ *sysp += kcpustat->cpustat[CPUTIME_IRQ]; -+ *sysp += kcpustat->cpustat[CPUTIME_SOFTIRQ]; - } -+} - -- val = cputime64_to_clock_t(val); -- seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_SYSTEM], val); -+static int cpuacct_stats_show(struct seq_file *sf, void *v) -+{ -+ cputime64_t user, sys; - -+ cpuacct_stats_read(css_ca(seq_css(sf)), &user, &sys); -+ seq_printf(sf, "user %lld\n", cputime64_to_clock_t(user)); -+ seq_printf(sf, "system %lld\n", cputime64_to_clock_t(sys)); - return 0; - } - - -commit ed6d93036ec930cb774da10b7c87f67905ce71f1 -Author: Tejun Heo -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Implement interface for cgroup unified hierarchy - - While the cpu controller doesn't have any functional problems, there - are a couple interface issues which can be addressed in the v2 - interface. - - * cpuacct being a separate controller. This separation is artificial - and rather pointless as demonstrated by most use cases co-mounting - the two controllers. It also forces certain information to be - accounted twice. - - * Use of different time units. Writable control knobs use - microseconds, some stat fields use nanoseconds while other cpuacct - stat fields use centiseconds. - - * Control knobs which can't be used in the root cgroup still show up - in the root. - - * Control knob names and semantics aren't consistent with other - controllers. - - This patchset implements cpu controller's interface on the unified - hierarchy which adheres to the controller file conventions described - in Documentation/cgroups/unified-hierarchy.txt. Overall, the - following changes are made. - - * cpuacct is implictly enabled and disabled by cpu and its information - is reported through "cpu.stat" which now uses microseconds for all - time durations. All time duration fields now have "_usec" appended - to them for clarity. While this doesn't solve the double accounting - immediately, once majority of users switch to v2, cpu can directly - account and report the relevant stats and cpuacct can be disabled on - the unified hierarchy. - - Note that cpuacct.usage_percpu is currently not included in - "cpu.stat". If this information is actually called for, it can be - added later. - - * "cpu.shares" is replaced with "cpu.weight" and operates on the - standard scale defined by CGROUP_WEIGHT_MIN/DFL/MAX (1, 100, 10000). - The weight is scaled to scheduler weight so that 100 maps to 1024 - and the ratio relationship is preserved - if weight is W and its - scaled value is S, W / 100 == S / 1024. While the mapped range is a - bit smaller than the orignal scheduler weight range, the dead zones - on both sides are relatively small and covers wider range than the - nice value mappings. This file doesn't make sense in the root - cgroup and isn't create on root. - - * "cpu.cfs_quota_us" and "cpu.cfs_period_us" are replaced by "cpu.max" - which contains both quota and period. - - * "cpu.rt_runtime_us" and "cpu.rt_period_us" are replaced by - "cpu.rt.max" which contains both runtime and period. - - v2: cpu_stats_show() was incorrectly using CONFIG_FAIR_GROUP_SCHED for - CFS bandwidth stats and also using raw division for u64. Use - CONFIG_CFS_BANDWITH and do_div() instead. - - The semantics of "cpu.rt.max" is not fully decided yet. Dropped - for now. - - Signed-off-by: Tejun Heo - Cc: Ingo Molnar - Cc: Peter Zijlstra - Cc: Li Zefan - Cc: Johannes Weiner - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index c148dfe..7bba2c5 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -8561,6 +8561,139 @@ static struct cftype cpu_legacy_files[] = { - { } /* terminate */ - }; - -+static int cpu_stats_show(struct seq_file *sf, void *v) -+{ -+ cpuacct_cpu_stats_show(sf); -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ struct task_group *tg = css_tg(seq_css(sf)); -+ struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -+ u64 throttled_usec; -+ -+ throttled_usec = cfs_b->throttled_time; -+ do_div(throttled_usec, NSEC_PER_USEC); -+ -+ seq_printf(sf, "nr_periods %d\n" -+ "nr_throttled %d\n" -+ "throttled_usec %llu\n", -+ cfs_b->nr_periods, cfs_b->nr_throttled, -+ throttled_usec); -+ } -+#endif -+ return 0; -+} -+ -+#ifdef CONFIG_FAIR_GROUP_SCHED -+static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css, -+ struct cftype *cft) -+{ -+ struct task_group *tg = css_tg(css); -+ u64 weight = scale_load_down(tg->shares); -+ -+ return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024); -+} -+ -+static int cpu_weight_write_u64(struct cgroup_subsys_state *css, -+ struct cftype *cftype, u64 weight) -+{ -+ /* -+ * cgroup weight knobs should use the common MIN, DFL and MAX -+ * values which are 1, 100 and 10000 respectively. While it loses -+ * a bit of range on both ends, it maps pretty well onto the shares -+ * value used by scheduler and the round-trip conversions preserve -+ * the original value over the entire range. -+ */ -+ if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX) -+ return -ERANGE; -+ -+ weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL); -+ -+ return sched_group_set_shares(css_tg(css), scale_load(weight)); -+} -+#endif -+ -+static void __maybe_unused cpu_period_quota_print(struct seq_file *sf, -+ long period, long quota) -+{ -+ if (quota < 0) -+ seq_puts(sf, "max"); -+ else -+ seq_printf(sf, "%ld", quota); -+ -+ seq_printf(sf, " %ld\n", period); -+} -+ -+/* caller should put the current value in *@periodp before calling */ -+static int __maybe_unused cpu_period_quota_parse(char *buf, -+ u64 *periodp, u64 *quotap) -+{ -+ char tok[21]; /* U64_MAX */ -+ -+ if (!sscanf(buf, "%s %llu", tok, periodp)) -+ return -EINVAL; -+ -+ *periodp *= NSEC_PER_USEC; -+ -+ if (sscanf(tok, "%llu", quotap)) -+ *quotap *= NSEC_PER_USEC; -+ else if (!strcmp(tok, "max")) -+ *quotap = RUNTIME_INF; -+ else -+ return -EINVAL; -+ -+ return 0; -+} -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+static int cpu_max_show(struct seq_file *sf, void *v) -+{ -+ struct task_group *tg = css_tg(seq_css(sf)); -+ -+ cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg)); -+ return 0; -+} -+ -+static ssize_t cpu_max_write(struct kernfs_open_file *of, -+ char *buf, size_t nbytes, loff_t off) -+{ -+ struct task_group *tg = css_tg(of_css(of)); -+ u64 period = tg_get_cfs_period(tg); -+ u64 quota; -+ int ret; -+ -+ ret = cpu_period_quota_parse(buf, &period, "a); -+ if (!ret) -+ ret = tg_set_cfs_bandwidth(tg, period, quota); -+ return ret ?: nbytes; -+} -+#endif -+ -+static struct cftype cpu_files[] = { -+ { -+ .name = "stat", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_stats_show, -+ }, -+#ifdef CONFIG_FAIR_GROUP_SCHED -+ { -+ .name = "weight", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .read_u64 = cpu_weight_read_u64, -+ .write_u64 = cpu_weight_write_u64, -+ }, -+#endif -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ .name = "max", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_max_show, -+ .write = cpu_max_write, -+ }, -+#endif -+ { } /* terminate */ -+}; -+ - struct cgroup_subsys cpu_cgrp_subsys = { - .css_alloc = cpu_cgroup_css_alloc, - .css_released = cpu_cgroup_css_released, -@@ -8569,7 +8702,15 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, - .legacy_cftypes = cpu_legacy_files, -+ .dfl_cftypes = cpu_files, - .early_init = true, -+#ifdef CONFIG_CGROUP_CPUACCT -+ /* -+ * cpuacct is enabled together with cpu on the unified hierarchy -+ * and its stats are reported through "cpu.stat". -+ */ -+ .depends_on = 1 << cpuacct_cgrp_id, -+#endif - }; - - #endif /* CONFIG_CGROUP_SCHED */ -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index 3eb9eda..7a02d26 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -305,6 +305,30 @@ static struct cftype files[] = { - { } /* terminate */ - }; - -+/* used to print cpuacct stats in cpu.stat on the unified hierarchy */ -+void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+ struct cgroup_subsys_state *css; -+ u64 usage, user, sys; -+ -+ css = cgroup_get_e_css(seq_css(sf)->cgroup, &cpuacct_cgrp_subsys); -+ -+ usage = cpuusage_read(css, seq_cft(sf)); -+ cpuacct_stats_read(css_ca(css), &user, &sys); -+ -+ user *= TICK_NSEC; -+ sys *= TICK_NSEC; -+ do_div(usage, NSEC_PER_USEC); -+ do_div(user, NSEC_PER_USEC); -+ do_div(sys, NSEC_PER_USEC); -+ -+ seq_printf(sf, "usage_usec %llu\n" -+ "user_usec %llu\n" -+ "system_usec %llu\n", usage, user, sys); -+ -+ css_put(css); -+} -+ - /* - * charge this task's execution time to its accounting group. - * -diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h -index ba72807..ddf7af4 100644 ---- a/kernel/sched/cpuacct.h -+++ b/kernel/sched/cpuacct.h -@@ -2,6 +2,7 @@ - - extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); - extern void cpuacct_account_field(struct task_struct *tsk, int index, u64 val); -+extern void cpuacct_cpu_stats_show(struct seq_file *sf); - - #else - -@@ -14,4 +15,8 @@ cpuacct_account_field(struct task_struct *tsk, int index, u64 val) - { - } - -+static inline void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+} -+ - #endif diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.9.patch b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.9.patch new file mode 100644 index 00000000000..6f0904cbce9 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.9.patch @@ -0,0 +1,784 @@ +commit 280858b0bb3384b9ec06b455e196b453888bd6b8 +Author: Tejun Heo +Date: Fri Mar 11 07:31:23 2016 -0500 + + sched: Misc preps for cgroup unified hierarchy interface + + Make the following changes in preparation for the cpu controller + interface implementation for the unified hierarchy. This patch + doesn't cause any functional differences. + + * s/cpu_stats_show()/cpu_cfs_stats_show()/ + + * s/cpu_files/cpu_legacy_files/ + + * Separate out cpuacct_stats_read() from cpuacct_stats_show(). While + at it, make the @val array u64 for consistency. + + Signed-off-by: Tejun Heo + Cc: Ingo Molnar + Cc: Peter Zijlstra + Cc: Li Zefan + Cc: Johannes Weiner + +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 154fd689fe02..57472485b79c 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -8705,7 +8705,7 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) + return ret; + } + +-static int cpu_stats_show(struct seq_file *sf, void *v) ++static int cpu_cfs_stats_show(struct seq_file *sf, void *v) + { + struct task_group *tg = css_tg(seq_css(sf)); + struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; +@@ -8745,7 +8745,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, + } + #endif /* CONFIG_RT_GROUP_SCHED */ + +-static struct cftype cpu_files[] = { ++static struct cftype cpu_legacy_files[] = { + #ifdef CONFIG_FAIR_GROUP_SCHED + { + .name = "shares", +@@ -8766,7 +8766,7 @@ static struct cftype cpu_files[] = { + }, + { + .name = "stat", +- .seq_show = cpu_stats_show, ++ .seq_show = cpu_cfs_stats_show, + }, + #endif + #ifdef CONFIG_RT_GROUP_SCHED +@@ -8791,7 +8791,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { + .fork = cpu_cgroup_fork, + .can_attach = cpu_cgroup_can_attach, + .attach = cpu_cgroup_attach, +- .legacy_cftypes = cpu_files, ++ .legacy_cftypes = cpu_legacy_files, + .early_init = true, + }; + +diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c +index bc0b309c3f19..d1e5dd0b3a64 100644 +--- a/kernel/sched/cpuacct.c ++++ b/kernel/sched/cpuacct.c +@@ -276,26 +276,33 @@ static int cpuacct_all_seq_show(struct seq_file *m, void *V) + return 0; + } + +-static int cpuacct_stats_show(struct seq_file *sf, void *v) ++static void cpuacct_stats_read(struct cpuacct *ca, ++ u64 (*val)[CPUACCT_STAT_NSTATS]) + { +- struct cpuacct *ca = css_ca(seq_css(sf)); +- s64 val[CPUACCT_STAT_NSTATS]; + int cpu; +- int stat; + +- memset(val, 0, sizeof(val)); ++ memset(val, 0, sizeof(*val)); ++ + for_each_possible_cpu(cpu) { + u64 *cpustat = per_cpu_ptr(ca->cpustat, cpu)->cpustat; + +- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; +- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; +- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; ++ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; ++ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; ++ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; + } ++} ++ ++static int cpuacct_stats_show(struct seq_file *sf, void *v) ++{ ++ u64 val[CPUACCT_STAT_NSTATS]; ++ int stat; ++ ++ cpuacct_stats_read(css_ca(seq_css(sf)), &val); + + for (stat = 0; stat < CPUACCT_STAT_NSTATS; stat++) { +- seq_printf(sf, "%s %lld\n", ++ seq_printf(sf, "%s %llu\n", + cpuacct_stat_desc[stat], + cputime64_to_clock_t(val[stat])); + } + +commit 015cbdcb90034fd566d00de9d3d405613da3cd26 +Author: Tejun Heo +Date: Fri Mar 11 07:31:23 2016 -0500 + + sched: Implement interface for cgroup unified hierarchy + + While the cpu controller doesn't have any functional problems, there + are a couple interface issues which can be addressed in the v2 + interface. + + * cpuacct being a separate controller. This separation is artificial + and rather pointless as demonstrated by most use cases co-mounting + the two controllers. It also forces certain information to be + accounted twice. + + * Use of different time units. Writable control knobs use + microseconds, some stat fields use nanoseconds while other cpuacct + stat fields use centiseconds. + + * Control knobs which can't be used in the root cgroup still show up + in the root. + + * Control knob names and semantics aren't consistent with other + controllers. + + This patchset implements cpu controller's interface on the unified + hierarchy which adheres to the controller file conventions described + in Documentation/cgroups/unified-hierarchy.txt. Overall, the + following changes are made. + + * cpuacct is implictly enabled and disabled by cpu and its information + is reported through "cpu.stat" which now uses microseconds for all + time durations. All time duration fields now have "_usec" appended + to them for clarity. While this doesn't solve the double accounting + immediately, once majority of users switch to v2, cpu can directly + account and report the relevant stats and cpuacct can be disabled on + the unified hierarchy. + + Note that cpuacct.usage_percpu is currently not included in + "cpu.stat". If this information is actually called for, it can be + added later. + + * "cpu.shares" is replaced with "cpu.weight" and operates on the + standard scale defined by CGROUP_WEIGHT_MIN/DFL/MAX (1, 100, 10000). + The weight is scaled to scheduler weight so that 100 maps to 1024 + and the ratio relationship is preserved - if weight is W and its + scaled value is S, W / 100 == S / 1024. While the mapped range is a + bit smaller than the orignal scheduler weight range, the dead zones + on both sides are relatively small and covers wider range than the + nice value mappings. This file doesn't make sense in the root + cgroup and isn't create on root. + + * "cpu.cfs_quota_us" and "cpu.cfs_period_us" are replaced by "cpu.max" + which contains both quota and period. + + * "cpu.rt_runtime_us" and "cpu.rt_period_us" are replaced by + "cpu.rt.max" which contains both runtime and period. + + v2: cpu_stats_show() was incorrectly using CONFIG_FAIR_GROUP_SCHED for + CFS bandwidth stats and also using raw division for u64. Use + CONFIG_CFS_BANDWITH and do_div() instead. + + The semantics of "cpu.rt.max" is not fully decided yet. Dropped + for now. + + Signed-off-by: Tejun Heo + Cc: Ingo Molnar + Cc: Peter Zijlstra + Cc: Li Zefan + Cc: Johannes Weiner + +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 57472485b79c..c0ae869f51c4 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -8784,6 +8784,139 @@ static struct cftype cpu_legacy_files[] = { + { } /* terminate */ + }; + ++static int cpu_stats_show(struct seq_file *sf, void *v) ++{ ++ cpuacct_cpu_stats_show(sf); ++ ++#ifdef CONFIG_CFS_BANDWIDTH ++ { ++ struct task_group *tg = css_tg(seq_css(sf)); ++ struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; ++ u64 throttled_usec; ++ ++ throttled_usec = cfs_b->throttled_time; ++ do_div(throttled_usec, NSEC_PER_USEC); ++ ++ seq_printf(sf, "nr_periods %d\n" ++ "nr_throttled %d\n" ++ "throttled_usec %llu\n", ++ cfs_b->nr_periods, cfs_b->nr_throttled, ++ throttled_usec); ++ } ++#endif ++ return 0; ++} ++ ++#ifdef CONFIG_FAIR_GROUP_SCHED ++static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css, ++ struct cftype *cft) ++{ ++ struct task_group *tg = css_tg(css); ++ u64 weight = scale_load_down(tg->shares); ++ ++ return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024); ++} ++ ++static int cpu_weight_write_u64(struct cgroup_subsys_state *css, ++ struct cftype *cftype, u64 weight) ++{ ++ /* ++ * cgroup weight knobs should use the common MIN, DFL and MAX ++ * values which are 1, 100 and 10000 respectively. While it loses ++ * a bit of range on both ends, it maps pretty well onto the shares ++ * value used by scheduler and the round-trip conversions preserve ++ * the original value over the entire range. ++ */ ++ if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX) ++ return -ERANGE; ++ ++ weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL); ++ ++ return sched_group_set_shares(css_tg(css), scale_load(weight)); ++} ++#endif ++ ++static void __maybe_unused cpu_period_quota_print(struct seq_file *sf, ++ long period, long quota) ++{ ++ if (quota < 0) ++ seq_puts(sf, "max"); ++ else ++ seq_printf(sf, "%ld", quota); ++ ++ seq_printf(sf, " %ld\n", period); ++} ++ ++/* caller should put the current value in *@periodp before calling */ ++static int __maybe_unused cpu_period_quota_parse(char *buf, ++ u64 *periodp, u64 *quotap) ++{ ++ char tok[21]; /* U64_MAX */ ++ ++ if (!sscanf(buf, "%s %llu", tok, periodp)) ++ return -EINVAL; ++ ++ *periodp *= NSEC_PER_USEC; ++ ++ if (sscanf(tok, "%llu", quotap)) ++ *quotap *= NSEC_PER_USEC; ++ else if (!strcmp(tok, "max")) ++ *quotap = RUNTIME_INF; ++ else ++ return -EINVAL; ++ ++ return 0; ++} ++ ++#ifdef CONFIG_CFS_BANDWIDTH ++static int cpu_max_show(struct seq_file *sf, void *v) ++{ ++ struct task_group *tg = css_tg(seq_css(sf)); ++ ++ cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg)); ++ return 0; ++} ++ ++static ssize_t cpu_max_write(struct kernfs_open_file *of, ++ char *buf, size_t nbytes, loff_t off) ++{ ++ struct task_group *tg = css_tg(of_css(of)); ++ u64 period = tg_get_cfs_period(tg); ++ u64 quota; ++ int ret; ++ ++ ret = cpu_period_quota_parse(buf, &period, "a); ++ if (!ret) ++ ret = tg_set_cfs_bandwidth(tg, period, quota); ++ return ret ?: nbytes; ++} ++#endif ++ ++static struct cftype cpu_files[] = { ++ { ++ .name = "stat", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .seq_show = cpu_stats_show, ++ }, ++#ifdef CONFIG_FAIR_GROUP_SCHED ++ { ++ .name = "weight", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .read_u64 = cpu_weight_read_u64, ++ .write_u64 = cpu_weight_write_u64, ++ }, ++#endif ++#ifdef CONFIG_CFS_BANDWIDTH ++ { ++ .name = "max", ++ .flags = CFTYPE_NOT_ON_ROOT, ++ .seq_show = cpu_max_show, ++ .write = cpu_max_write, ++ }, ++#endif ++ { } /* terminate */ ++}; ++ + struct cgroup_subsys cpu_cgrp_subsys = { + .css_alloc = cpu_cgroup_css_alloc, + .css_released = cpu_cgroup_css_released, +@@ -8792,7 +8925,15 @@ struct cgroup_subsys cpu_cgrp_subsys = { + .can_attach = cpu_cgroup_can_attach, + .attach = cpu_cgroup_attach, + .legacy_cftypes = cpu_legacy_files, ++ .dfl_cftypes = cpu_files, + .early_init = true, ++#ifdef CONFIG_CGROUP_CPUACCT ++ /* ++ * cpuacct is enabled together with cpu on the unified hierarchy ++ * and its stats are reported through "cpu.stat". ++ */ ++ .depends_on = 1 << cpuacct_cgrp_id, ++#endif + }; + + #endif /* CONFIG_CGROUP_SCHED */ +diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c +index d1e5dd0b3a64..57f390514c39 100644 +--- a/kernel/sched/cpuacct.c ++++ b/kernel/sched/cpuacct.c +@@ -347,6 +347,31 @@ static struct cftype files[] = { + { } /* terminate */ + }; + ++/* used to print cpuacct stats in cpu.stat on the unified hierarchy */ ++void cpuacct_cpu_stats_show(struct seq_file *sf) ++{ ++ struct cgroup_subsys_state *css; ++ u64 usage, val[CPUACCT_STAT_NSTATS]; ++ ++ css = cgroup_get_e_css(seq_css(sf)->cgroup, &cpuacct_cgrp_subsys); ++ ++ usage = cpuusage_read(css, seq_cft(sf)); ++ cpuacct_stats_read(css_ca(css), &val); ++ ++ val[CPUACCT_STAT_USER] *= TICK_NSEC; ++ val[CPUACCT_STAT_SYSTEM] *= TICK_NSEC; ++ do_div(usage, NSEC_PER_USEC); ++ do_div(val[CPUACCT_STAT_USER], NSEC_PER_USEC); ++ do_div(val[CPUACCT_STAT_SYSTEM], NSEC_PER_USEC); ++ ++ seq_printf(sf, "usage_usec %llu\n" ++ "user_usec %llu\n" ++ "system_usec %llu\n", ++ usage, val[CPUACCT_STAT_USER], val[CPUACCT_STAT_SYSTEM]); ++ ++ css_put(css); ++} ++ + /* + * charge this task's execution time to its accounting group. + * +diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h +index ba72807c73d4..ddf7af466d35 100644 +--- a/kernel/sched/cpuacct.h ++++ b/kernel/sched/cpuacct.h +@@ -2,6 +2,7 @@ + + extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); + extern void cpuacct_account_field(struct task_struct *tsk, int index, u64 val); ++extern void cpuacct_cpu_stats_show(struct seq_file *sf); + + #else + +@@ -14,4 +15,8 @@ cpuacct_account_field(struct task_struct *tsk, int index, u64 val) + { + } + ++static inline void cpuacct_cpu_stats_show(struct seq_file *sf) ++{ ++} ++ + #endif + +commit 5019fe3d7ec456b58d451ef06fe1f81d7d9f28a9 +Author: Tejun Heo +Date: Fri Aug 5 12:41:01 2016 -0400 + + cgroup: add documentation regarding CPU controller cgroup v2 support + + Signed-off-by: Tejun Heo + +diff --git a/Documentation/cgroup-v2-cpu.txt b/Documentation/cgroup-v2-cpu.txt +new file mode 100644 +index 000000000000..1ed7032d4472 +--- /dev/null ++++ b/Documentation/cgroup-v2-cpu.txt +@@ -0,0 +1,368 @@ ++ ++ ++CPU Controller on Control Group v2 ++ ++August, 2016 Tejun Heo ++ ++ ++While most controllers have support for cgroup v2 now, the CPU ++controller support is not upstream yet due to objections from the ++scheduler maintainers on the basic designs of cgroup v2. This ++document explains the current situation as well as an interim ++solution, and details the disagreements and arguments. The latest ++version of this document can be found at the following URL. ++ ++ https://git.kernel.org/cgit/linux/kernel/git/tj/cgroup.git/tree/Documentation/cgroup-v2-cpu.txt?h=cgroup-v2-cpu ++ ++This document was posted to the linux-kernel and cgroup mailing lists. ++Unfortunately, no consensus was reached as of Oct, 2016. The thread ++can be found at the following URL. ++ ++ http://lkml.kernel.org/r/20160805170752.GK2542@mtj.duckdns.org ++ ++ ++CONTENTS ++ ++1. Current Situation and Interim Solution ++2. Disagreements and Arguments ++ 2-1. Contentious Restrictions ++ 2-1-1. Process Granularity ++ 2-1-2. No Internal Process Constraint ++ 2-2. Impact on CPU Controller ++ 2-2-1. Impact of Process Granularity ++ 2-2-2. Impact of No Internal Process Constraint ++ 2-3. Arguments for cgroup v2 ++3. Way Forward ++4. References ++ ++ ++1. Current Situation and Interim Solution ++ ++All objections from the scheduler maintainers apply to cgroup v2 core ++design, and there are no known objections to the specifics of the CPU ++controller cgroup v2 interface. The only blocked part is changes to ++expose the CPU controller interface on cgroup v2, which comprises the ++following two patches: ++ ++ [1] sched: Misc preps for cgroup unified hierarchy interface ++ [2] sched: Implement interface for cgroup unified hierarchy ++ ++The necessary changes are superficial and implement the interface ++files on cgroup v2. The combined diffstat is as follows. ++ ++ kernel/sched/core.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++-- ++ kernel/sched/cpuacct.c | 57 ++++++++++++------ ++ kernel/sched/cpuacct.h | 5 + ++ 3 files changed, 189 insertions(+), 22 deletions(-) ++ ++The patches are easy to apply and forward-port. The following git ++branch will always carry the two patches on top of the latest release ++of the upstream kernel. ++ ++ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu ++ ++There also are versioned branches going back to v4.4. ++ ++ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu-$KERNEL_VER ++ ++While it's difficult to tell whether the CPU controller support will ++be merged, there are crucial resource control features in cgroup v2 ++that are only possible due to the design choices that are being ++objected to, and every effort will be made to ease enabling the CPU ++controller cgroup v2 support out-of-tree for parties which choose to. ++ ++ ++2. Disagreements and Arguments ++ ++There have been several lengthy discussion threads [3][4] on LKML ++around the structural constraints of cgroup v2. The two that affect ++the CPU controller are process granularity and no internal process ++constraint. Both arise primarily from the need for common resource ++domain definition across different resources. ++ ++The common resource domain is a powerful concept in cgroup v2 that ++allows controllers to make basic assumptions about the structural ++organization of processes and controllers inside the cgroup hierarchy, ++and thus solve problems spanning multiple types of resources. The ++prime example for this is page cache writeback: dirty page cache is ++regulated through throttling buffered writers based on memory ++availability, and initiating batched write outs to the disk based on ++IO capacity. Tracking and controlling writeback inside a cgroup thus ++requires the direct cooperation of the memory and the IO controller. ++ ++This easily extends to other areas, such as CPU cycles consumed while ++performing memory reclaim or IO encryption. ++ ++ ++2-1. Contentious Restrictions ++ ++For controllers of different resources to work together, they must ++agree on a common organization. This uniform model across controllers ++imposes two contentious restrictions on the CPU controller: process ++granularity and the no-internal-process constraint. ++ ++ ++ 2-1-1. Process Granularity ++ ++ For memory, because an address space is shared between all threads ++ of a process, the terminal consumer is a process, not a thread. ++ Separating the threads of a single process into different memory ++ control domains doesn't make semantical sense. cgroup v2 ensures ++ that all controller can agree on the same organization by requiring ++ that threads of the same process belong to the same cgroup. ++ ++ There are other reasons to enforce process granularity. One ++ important one is isolating system-level management operations from ++ in-process application operations. The cgroup interface, being a ++ virtual filesystem, is very unfit for multiple independent ++ operations taking place at the same time as most operations have to ++ be multi-step and there is no way to synchronize multiple accessors. ++ See also [5] Documentation/cgroup-v2.txt, "R-2. Thread Granularity" ++ ++ ++ 2-1-2. No Internal Process Constraint ++ ++ cgroup v2 does not allow processes to belong to any cgroup which has ++ child cgroups when resource controllers are enabled on it (the ++ notable exception being the root cgroup itself). This is because, ++ for some resources, a resource domain (cgroup) is not directly ++ comparable to the terminal consumer (process/task) of said resource, ++ and so putting the two into a sibling relationship isn't meaningful. ++ ++ - Differing Control Parameters and Capabilities ++ ++ A cgroup controller has different resource control parameters and ++ capabilities from a terminal consumer, be that a task or process. ++ There are a couple cases where a cgroup control knob can be mapped ++ to a per-task or per-process API but they are exceptions and the ++ mappings aren't obvious even in those cases. ++ ++ For example, task priorities (also known as nice values) set ++ through setpriority(2) are mapped to the CPU controller ++ "cpu.shares" values. However, how exactly the two ranges map and ++ even the fact that they map to each other at all are not obvious. ++ ++ The situation gets further muddled when considering other resource ++ types and control knobs. IO priorities set through ioprio_set(2) ++ cannot be mapped to IO controller weights and most cgroup resource ++ control knobs including the bandwidth control knobs of the CPU ++ controller don't have counterparts in the terminal consumers. ++ ++ - Anonymous Resource Consumption ++ ++ For CPU, every time slice consumed from inside a cgroup, which ++ comprises most but not all of consumed CPU time for the cgroup, ++ can be clearly attributed to a specific task or process. Because ++ these two types of entities are directly comparable as consumers ++ of CPU time, it's theoretically possible to mix tasks and cgroups ++ on the same tree levels and let them directly compete for the time ++ quota available to their common ancestor. ++ ++ However, the same can't be said for resource types like memory or ++ IO: the memory consumed by the page cache, for example, can be ++ tracked on a per-cgroup level, but due to mismatches in lifetimes ++ of involved objects (page cache can persist long after processes ++ are gone), shared usages and the implementation overhead of ++ tracking persistent state, it can no longer be attributed to ++ individual processes after instantiation. Consequently, any IO ++ incurred by page cache writeback can be attributed to a cgroup, ++ but not to the individual consumers inside the cgroup. ++ ++ For memory and IO, this makes a resource domain (cgroup) an object ++ of a fundamentally different type than a terminal consumer ++ (process). A process can't be a first class object in the resource ++ distribution graph as its total resource consumption can't be ++ described without the containing resource domain. ++ ++ Disallowing processes in internal cgroups avoids competition between ++ cgroups and processes which cannot be meaningfully defined for these ++ resources. All resource control takes place among cgroups and a ++ terminal consumer interacts with the containing cgroup the same way ++ it would with the system without cgroup. ++ ++ Root cgroup is exempt from this constraint, which is in line with ++ how root cgroup is handled in general - it's excluded from cgroup ++ resource accounting and control. ++ ++ ++Enforcing process granularity and no internal process constraint ++allows all controllers to be on the same footing in terms of resource ++distribution hierarchy. ++ ++ ++2-2. Impact on CPU Controller ++ ++As indicated earlier, the CPU controller's resource distribution graph ++is the simplest. Every schedulable resource consumption can be ++attributed to a specific task. In addition, for weight based control, ++the per-task priority set through setpriority(2) can be translated to ++and from a per-cgroup weight. As such, the CPU controller can treat a ++task and a cgroup symmetrically, allowing support for any tree layout ++of cgroups and tasks. Both process granularity and the no internal ++process constraint restrict how the CPU controller can be used. ++ ++ ++ 2-2-1. Impact of Process Granularity ++ ++ Process granularity prevents tasks belonging to the same process to ++ be assigned to different cgroups. It was pointed out [6] that this ++ excludes the valid use case of hierarchical CPU distribution within ++ processes. ++ ++ To address this issue, the rgroup (resource group) [7][8][9] ++ interface, an extension of the existing setpriority(2) API, was ++ proposed, which is in line with other programmable priority ++ mechanisms and eliminates the risk of in-application configuration ++ and system configuration stepping on each other's toes. ++ Unfortunately, the proposal quickly turned into discussions around ++ cgroup v2 design decisions [4] and no consensus could be reached. ++ ++ ++ 2-2-2. Impact of No Internal Process Constraint ++ ++ The no internal process constraint disallows tasks from competing ++ directly against cgroups. Here is an excerpt from Peter Zijlstra ++ pointing out the issue [10] - R, L and A are cgroups; t1, t2, t3 and ++ t4 are tasks: ++ ++ ++ R ++ / | \ ++ t1 t2 A ++ / \ ++ t3 t4 ++ ++ ++ Is fundamentally different from: ++ ++ ++ R ++ / \ ++ L A ++ / \ / \ ++ t1 t2 t3 t4 ++ ++ ++ Because if in the first hierarchy you add a task (t5) to R, all of ++ its A will run at 1/4th of total bandwidth where before it had ++ 1/3rd, whereas with the second example, if you add our t5 to L, A ++ doesn't get any less bandwidth. ++ ++ ++ It is true that the trees are semantically different from each other ++ and the symmetric handling of tasks and cgroups is aesthetically ++ pleasing. However, it isn't clear what the practical usefulness of ++ a layout with direct competition between tasks and cgroups would be, ++ considering that number and behavior of tasks are controlled by each ++ application, and cgroups primarily deal with system level resource ++ distribution; changes in the number of active threads would directly ++ impact resource distribution. Real world use cases of such layouts ++ could not be established during the discussions. ++ ++ ++2-3. Arguments for cgroup v2 ++ ++There are strong demands for comprehensive hierarchical resource ++control across all major resources, and establishing a common resource ++hierarchy is an essential step. As with most engineering decisions, ++common resource hierarchy definition comes with its trade-offs. With ++cgroup v2, the trade-offs are in the form of structural constraints ++which, among others, restrict the CPU controller's space of possible ++configurations. ++ ++However, even with the restrictions, cgroup v2, in combination with ++rgroup, covers most of identified real world use cases while enabling ++new important use cases of resource control across multiple resource ++types that were fundamentally broken previously. ++ ++Furthermore, for resource control, treating resource domains as ++objects of a different type from terminal consumers has important ++advantages - it can account for resource consumptions which are not ++tied to any specific terminal consumer, be that a task or process, and ++allows decoupling resource distribution controls from in-application ++APIs. Even the CPU controller may benefit from it as the kernel can ++consume significant amount of CPU cycles in interrupt context or tasks ++shared across multiple resource domains (e.g. softirq). ++ ++Finally, it's important to note that enabling cgroup v2 support for ++the CPU controller doesn't block use cases which require the features ++which are not available on cgroup v2. Unlikely, but should anybody ++actually rely on the CPU controller's symmetric handling of tasks and ++cgroups, backward compatibility is and will be maintained by being ++able to disconnect the controller from the cgroup v2 hierarchy and use ++it standalone. This also holds for cpuset which is often used in ++highly customized configurations which might be a poor fit for common ++resource domains. ++ ++The required changes are minimal, the benefits for the target use ++cases are critical and obvious, and use cases which have to use v1 can ++continue to do so. ++ ++ ++3. Way Forward ++ ++cgroup v2 primarily aims to solve the problem of comprehensive ++hierarchical resource control across all major computing resources, ++which is one of the core problems of modern server infrastructure ++engineering. The trade-offs that cgroup v2 took are results of ++pursuing that goal and gaining a better understanding of the nature of ++resource control in the process. ++ ++I believe that real world usages will prove cgroup v2's model right, ++considering the crucial pieces of comprehensive resource control that ++cannot be implemented without common resource domains. This is not to ++say that cgroup v2 is fixed in stone and can't be updated; if there is ++an approach which better serves both comprehensive resource control ++and the CPU controller's flexibility, we will surely move towards ++that. It goes without saying that discussions around such approach ++should consider practical aspects of resource control as a whole ++rather than absolutely focusing on a particular controller. ++ ++Until such consensus can be reached, the CPU controller cgroup v2 ++support will be maintained out of the mainline kernel in an easily ++accessible form. If there is anything cgroup developers can do to ++ease the pain, please feel free to contact us on the cgroup mailing ++list at cgroups@vger.kernel.org. ++ ++ ++4. References ++ ++[1] http://lkml.kernel.org/r/20160105164834.GE5995@mtj.duckdns.org ++ [PATCH 1/2] sched: Misc preps for cgroup unified hierarchy interface ++ Tejun Heo ++ ++[2] http://lkml.kernel.org/r/20160105164852.GF5995@mtj.duckdns.org ++ [PATCH 2/2] sched: Implement interface for cgroup unified hierarchy ++ Tejun Heo ++ ++[3] http://lkml.kernel.org/r/1438641689-14655-4-git-send-email-tj@kernel.org ++ [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy ++ Tejun Heo ++ ++[4] http://lkml.kernel.org/r/20160407064549.GH3430@twins.programming.kicks-ass.net ++ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP ++ Peter Zijlstra ++ ++[5] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/cgroup-v2.txt ++ Control Group v2 ++ Tejun Heo ++ ++[6] http://lkml.kernel.org/r/CAPM31RJNy3jgG=DYe6GO=wyL4BPPxwUm1f2S6YXacQmo7viFZA@mail.gmail.com ++ Re: [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy ++ Paul Turner ++ ++[7] http://lkml.kernel.org/r/20160105154503.GC5995@mtj.duckdns.org ++ [RFD] cgroup: thread granularity support for cpu controller ++ Tejun Heo ++ ++[8] http://lkml.kernel.org/r/1457710888-31182-1-git-send-email-tj@kernel.org ++ [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP ++ Tejun Heo ++ ++[9] http://lkml.kernel.org/r/20160311160522.GA24046@htj.duckdns.org ++ Example program for PRIO_RGRP ++ Tejun Heo ++ ++[10] http://lkml.kernel.org/r/20160407082810.GN3430@twins.programming.kicks-ass.net ++ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource ++ Peter Zijlstra diff --git a/pkgs/os-specific/linux/kernel/linux-4.11.nix b/pkgs/os-specific/linux/kernel/linux-4.11.nix new file mode 100644 index 00000000000..ee96cbee6cb --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-4.11.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, perl, buildLinux, ... } @ args: + +import ./generic.nix (args // rec { + version = "4.11"; + extraMeta.branch = "4.11"; + modDirVersion = "4.11.0"; + + src = fetchurl { + url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; + sha256 = "b67ecafd0a42b3383bf4d82f0850cbff92a7e72a215a6d02f42ddbafcf42a7d6"; + }; + + kernelPatches = args.kernelPatches; + + features.iwlwifi = true; + features.efiBootStub = true; + features.needsCifsUtils = true; + features.netfilterRPFilter = true; +} // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-4.4.nix b/pkgs/os-specific/linux/kernel/linux-4.4.nix index 79018caae5c..bffdf9ac752 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.4.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.4.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, perl, buildLinux, ... } @ args: import ./generic.nix (args // rec { - version = "4.4.64"; + version = "4.4.65"; extraMeta.branch = "4.4"; src = fetchurl { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; - sha256 = "0rfx3018chv4a486f03yas7fjr5vpqzhfjaa99rs069qid2smhn7"; + sha256 = "1vdb1804m3x991p3z0apxzsrp3ppdgngbfwj4j2ac062xgsp5x31"; }; kernelPatches = args.kernelPatches; diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp.nix b/pkgs/os-specific/linux/kernel/linux-mptcp.nix index e533670014b..3d244b794e9 100644 --- a/pkgs/os-specific/linux/kernel/linux-mptcp.nix +++ b/pkgs/os-specific/linux/kernel/linux-mptcp.nix @@ -1,8 +1,8 @@ { stdenv, fetchurl, perl, buildLinux, ... } @ args: import ./generic.nix (args // rec { - mptcpVersion = "0.91.2"; - modDirVersion = "4.1.35"; + mptcpVersion = "0.91.3"; + modDirVersion = "4.1.38"; version = "${modDirVersion}-mptcp_v${mptcpVersion}"; extraMeta = { @@ -12,7 +12,7 @@ import ./generic.nix (args // rec { src = fetchurl { url = "https://github.com/multipath-tcp/mptcp/archive/v${mptcpVersion}.tar.gz"; - sha256 = "1jfxycg8i99ry2cr2ksarvqjzlr46sp192wkpb4sb2mynbzf3dmk"; + sha256 = "0vqjnkzcbbvyq24w3cryfmw7hhws1xqkkxqcv71szkbqqs6mcr14"; }; kernelPatches = args.kernelPatches; diff --git a/pkgs/os-specific/linux/sysdig/default.nix b/pkgs/os-specific/linux/sysdig/default.nix index 27a0d301acf..ad2cace270b 100644 --- a/pkgs/os-specific/linux/sysdig/default.nix +++ b/pkgs/os-specific/linux/sysdig/default.nix @@ -25,6 +25,12 @@ stdenv.mkDerivation rec { "-DSYSDIG_VERSION=${version}" ] ++ optional (kernel == null) "-DBUILD_DRIVER=OFF"; + # needed since luajit-2.1.0-beta3 + NIX_CFLAGS_COMPILE = [ + "-DluaL_reg=luaL_Reg" + "-DluaL_getn(L,i)=((int)lua_objlen(L,i))" + ]; + preConfigure = '' export INSTALL_MOD_PATH="$out" '' + optionalString (kernel != null) '' diff --git a/pkgs/os-specific/linux/upstart/check-config.nix b/pkgs/os-specific/linux/upstart/check-config.nix new file mode 100644 index 00000000000..5803b4ed833 --- /dev/null +++ b/pkgs/os-specific/linux/upstart/check-config.nix @@ -0,0 +1,43 @@ +# Useful tool to check syntax of a config file. Upstart needs a dbus +# session, so this script wraps one up and makes the operation not +# require any prior state. +# +# See: http://mwhiteley.com/scripts/2012/12/11/dbus-init-checkconf.html +{stdenv, coreutils, upstart, writeScript, dbus}: + +writeScript "upstart-check-config" '' + #!${stdenv.shell} + + set -o errexit + set -o nounset + + export PATH=${stdenv.lib.makeBinPath [dbus.out upstart coreutils]}:$PATH + + if [[ $# -ne 1 ]] + then + echo "Usage: $0 upstart-conf-file" >&2 + exit 1 + fi + config=$1 && shift + + dbus_pid_file=$(mktemp) + exec 4<> $dbus_pid_file + + dbus_add_file=$(mktemp) + exec 6<> $dbus_add_file + + dbus-daemon --fork --print-pid 4 --print-address 6 --session + + function clean { + dbus_pid=$(cat $dbus_pid_file) + if [[ -n $dbus_pid ]]; then + kill $dbus_pid + fi + rm -f $dbus_pid_file $dbus_add_file + } + trap "{ clean; }" EXIT + + export DBUS_SESSION_BUS_ADDRESS=$(cat $dbus_add_file) + + init-checkconf $config +'' diff --git a/pkgs/os-specific/linux/upstart/default.nix b/pkgs/os-specific/linux/upstart/default.nix index 938f4edd2fb..d5b9be34d9c 100644 --- a/pkgs/os-specific/linux/upstart/default.nix +++ b/pkgs/os-specific/linux/upstart/default.nix @@ -1,17 +1,20 @@ -{ stdenv, fetchurl, pkgconfig, dbus, libnih }: +{ stdenv, fetchurl, pkgconfig, dbus, libnih, python, makeWrapper, utillinux +, writeScript }: -let version = "1.5"; in +let + inherit (stdenv.lib) makeBinPath; + version = "1.5"; -stdenv.mkDerivation rec { + upstart = stdenv.mkDerivation rec { name = "upstart-${version}"; - + src = fetchurl { url = "http://upstart.ubuntu.com/download/${version}/${name}.tar.gz"; sha256 = "01w4ab6nlisz5blb0an1sxjkndwikr7sjp0cmz4lg00g3n7gahmx"; }; - buildInputs = [ pkgconfig dbus libnih ]; - + buildInputs = [ pkgconfig dbus libnih python makeWrapper]; + NIX_CFLAGS_COMPILE = '' -DSHELL="${stdenv.shell}" @@ -33,6 +36,16 @@ stdenv.mkDerivation rec { t=$out/etc/bash_completion.d mkdir -p $t cp ${./upstart-bash-completion} $t/upstart + + # Patch some binaries to refer to the correct binary location. + sed -i "s,/sbin/init,$out/bin/init,g" $out/bin/init-checkconf + sed -i "s,initctl,$out/bin/initctl," $out/bin/initctl2dot + + # Add some missing executable permissions, and wrap binaries. + chmod +x $out/bin/init-checkconf $out/bin/init-checkconf + wrapProgram $out/bin/init-checkconf \ + --prefix PATH : $out/bin:${makeBinPath [utillinux dbus]} + wrapProgram $out/bin/initctl2dot --prefix PATH : $out/bin ''; meta = { @@ -40,4 +53,6 @@ stdenv.mkDerivation rec { description = "An event-based replacement for the /sbin/init daemon"; platforms = stdenv.lib.platforms.linux; }; -} +}; + +in upstart diff --git a/pkgs/os-specific/linux/wpa_supplicant/gui.nix b/pkgs/os-specific/linux/wpa_supplicant/gui.nix index 89f40589c87..d2bd6ff739f 100644 --- a/pkgs/os-specific/linux/wpa_supplicant/gui.nix +++ b/pkgs/os-specific/linux/wpa_supplicant/gui.nix @@ -1,32 +1,25 @@ -{ stdenv, fetchurl, qt4, qmake4Hook, imagemagick, wpa_supplicant }: +{ stdenv, fetchurl, qtbase, qmakeHook, inkscape, imagemagick, wpa_supplicant }: stdenv.mkDerivation { name = "wpa_gui-${wpa_supplicant.version}"; inherit (wpa_supplicant) src; - buildInputs = [ qt4 ]; - nativeBuildInputs = [ qmake4Hook imagemagick ]; + buildInputs = [ qtbase ]; + nativeBuildInputs = [ qmakeHook inkscape imagemagick ]; - patches = [ ./remove_inkscape.patch ]; prePatch = '' cd wpa_supplicant/wpa_gui-qt4 ''; - preConfigure = '' - lrelease wpa_gui.pro - ''; - postBuild = '' make -C icons ''; - installPhase = '' - mkdir -pv $out/bin + postInstall = '' + mkdir -pv $out/{bin,share/applications,share/icons} cp -v wpa_gui $out/bin - mkdir -pv $out/share/applications cp -v wpa_gui.desktop $out/share/applications - mkdir -pv $out/share/icons cp -av icons/hicolor $out/share/icons ''; diff --git a/pkgs/os-specific/linux/wpa_supplicant/remove_inkscape.patch b/pkgs/os-specific/linux/wpa_supplicant/remove_inkscape.patch deleted file mode 100644 index 1bdb164e24f..00000000000 --- a/pkgs/os-specific/linux/wpa_supplicant/remove_inkscape.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 7a42ef048b420f9b939085ea8c6af6deb9c19dac Mon Sep 17 00:00:00 2001 -From: Moritz Ulrich -Date: Sun, 30 Oct 2016 22:17:54 +0100 -Subject: [PATCH] Foo - ---- - icons/Makefile | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/icons/Makefile b/icons/Makefile -index 709514c..9a5fa94 100644 ---- a/icons/Makefile -+++ b/icons/Makefile -@@ -9,10 +9,9 @@ all: $(ICONS) - - %.png: - mkdir -p hicolor/$(word 1, $(subst /, ,$(@)))/apps/ -- inkscape $(subst .png,.svg, $(word 2, $(subst /, , $(@)))) --without-gui \ -- --export-width=$(word 1, $(subst x, , $(@))) \ -- --export-height=$(word 2, $(subst x, , $(subst /, , $(@)))) \ -- --export-png=hicolor/$(word 1, $(subst /, ,$(@)))/apps/$(word 2, $(subst /, , $@)) -+ convert $(subst .png,.svg, $(word 2, $(subst /, , $(@)))) \ -+ -size $(word 1, $(subst x, , $(@)))x$(word 2, $(subst x, , $(subst /, , $(@)))) \ -+ hicolor/$(word 1, $(subst /, ,$(@)))/apps/$(word 2, $(subst /, , $@)) - - %.xpm: - mkdir -p pixmaps/ --- -2.10.1 - diff --git a/pkgs/servers/clickhouse/default.nix b/pkgs/servers/clickhouse/default.nix new file mode 100644 index 00000000000..fc35dfdda47 --- /dev/null +++ b/pkgs/servers/clickhouse/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, cmake, libtool, boost, double_conversion, gperftools, icu, libmysql, lz4, openssl, poco, re2, readline, sparsehash, unixODBC, zookeeper_mt, zstd }: + +stdenv.mkDerivation rec { + name = "clickhouse-${version}"; + + version = "1.1.54190"; + + src = fetchFromGitHub { + owner = "yandex"; + repo = "ClickHouse"; + rev = "v${version}-stable"; + sha256 = "03snzrhz3ai66fqy3rh89cgmpiaskg3077zflkwzqxwx69jkmqix"; + }; + + patches = [ ./prefix.patch ./termcap.patch ]; + + nativeBuildInputs = [ cmake libtool ]; + + buildInputs = [ boost double_conversion gperftools icu libmysql lz4 openssl poco re2 readline sparsehash unixODBC zookeeper_mt zstd ]; + + cmakeFlags = [ "-DENABLE_TESTS=OFF" "-DUNBUNDLED=ON" "-DUSE_STATIC_LIBRARIES=OFF" ]; + + NIX_CFLAGS_COMPILE = [ "-Wno-error=unused-function" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://clickhouse.yandex/; + description = "Column-oriented database management system"; + license = licenses.asl20; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/servers/clickhouse/prefix.patch b/pkgs/servers/clickhouse/prefix.patch new file mode 100644 index 00000000000..a311bf83dd9 --- /dev/null +++ b/pkgs/servers/clickhouse/prefix.patch @@ -0,0 +1,30 @@ +From ccc3596aa3ca041f457bf44d3437d935f56e82a4 Mon Sep 17 00:00:00 2001 +From: Orivej Desh +Date: Sun, 26 Mar 2017 23:57:32 +0000 +Subject: [PATCH] Do not override CMAKE_INSTALL_PREFIX + +--- + CMakeLists.txt | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 517b25e..6d8ced2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -141,12 +141,7 @@ if (ENABLE_TESTS) + endif (ENABLE_TESTS) + + # Installation prefix +-if (NOT CMAKE_SYSTEM MATCHES "FreeBSD") +- set (CMAKE_INSTALL_PREFIX /usr) +- set (CLICKHOUSE_ETC_DIR /etc) +-else () +- set (CLICKHOUSE_ETC_DIR ${CMAKE_INSTALL_PREFIX}/etc) +-endif () ++set (CLICKHOUSE_ETC_DIR ${CMAKE_INSTALL_PREFIX}/etc) + + + option (UNBUNDLED "Try find all libraries in system (if fail - use bundled from contrib/)" OFF) +-- +2.12.0 + diff --git a/pkgs/servers/clickhouse/termcap.patch b/pkgs/servers/clickhouse/termcap.patch new file mode 100644 index 00000000000..e030d095690 --- /dev/null +++ b/pkgs/servers/clickhouse/termcap.patch @@ -0,0 +1,25 @@ +From c2105ecdf6a6cc1fbb4c1ae01475db6a65fee32f Mon Sep 17 00:00:00 2001 +From: Orivej Desh +Date: Mon, 27 Mar 2017 01:39:11 +0000 +Subject: [PATCH] Search for termcap in ncurses + +--- + cmake/find_readline_edit.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/find_readline_edit.cmake b/cmake/find_readline_edit.cmake +index 26f2768..f520ece 100644 +--- a/cmake/find_readline_edit.cmake ++++ b/cmake/find_readline_edit.cmake +@@ -7,7 +7,7 @@ endif () + + list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES .so.2) + +-find_library (TERMCAP_LIB NAMES termcap) ++find_library (TERMCAP_LIB NAMES ncurses) + find_library (EDIT_LIB NAMES edit) + + set(READLINE_INCLUDE_PATHS "/var/empty/local/var/empty/readline/include") +-- +2.12.0 + diff --git a/pkgs/servers/dns/knot-resolver/default.nix b/pkgs/servers/dns/knot-resolver/default.nix index f388302f4bf..c60e7232b79 100644 --- a/pkgs/servers/dns/knot-resolver/default.nix +++ b/pkgs/servers/dns/knot-resolver/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, utillinux, hexdump, which +{ stdenv, fetchurl, fetchpatch, pkgconfig, utillinux, hexdump, which , knot-dns, luajit, libuv, lmdb , cmocka, systemd, hiredis, libmemcached , gnutls, nettle @@ -17,6 +17,12 @@ stdenv.mkDerivation rec { sha256 = "31e1b8899c5592433e5265a8e9685126fc5aeff3bd6b10884154b2e34b786f3c"; }; + patches = [(fetchpatch { + name = "luajit-2.1.0-beta3.diff"; + url = https://gitlab.labs.nic.cz/knot/resolver/merge_requests/289.diff; + sha256 = "1cgfi715qhmvb31ri2wr6cacsjvb1dqavdmnnl1074y25zalxfax"; + })]; + outputs = [ "out" "dev" ]; configurePhase = ":"; diff --git a/pkgs/servers/http/nginx/modules.nix b/pkgs/servers/http/nginx/modules.nix index 20ea55f82a1..9626045500b 100644 --- a/pkgs/servers/http/nginx/modules.nix +++ b/pkgs/servers/http/nginx/modules.nix @@ -175,4 +175,13 @@ in { src = ngx_pagespeed; }; + + shibboleth = { + src = fetchFromGitHub { + owner = "nginx-shib"; + repo = "nginx-http-shibboleth"; + rev = "48b70d87bf7796d7813813a837e52b3a86e6f6f4"; + sha256 = "0k8xcln5sf0m4r0m550dkhl07zhncp285dpysk6r4v6vqzqmhzdc"; + }; + }; } diff --git a/pkgs/servers/monitoring/longview/default.nix b/pkgs/servers/monitoring/longview/default.nix index d4f22ab81ee..212ab8513a9 100644 --- a/pkgs/servers/monitoring/longview/default.nix +++ b/pkgs/servers/monitoring/longview/default.nix @@ -16,8 +16,13 @@ stdenv.mkDerivation rec { ./log-stdout.patch ]; + # Read all configuration from /run/longview postPatch = '' - substituteInPlace Linode/Longview/Util.pm --replace /var/run/longview.pid /run/longview.pid + substituteInPlace Linode/Longview/Util.pm \ + --replace /var/run/longview.pid /run/longview/longview.pid \ + --replace /etc/linode /run/longview + substituteInPlace Linode/Longview.pl \ + --replace /etc/linode /run/longview ''; buildInputs = [ perl makeWrapper glibc ] diff --git a/pkgs/servers/nosql/eventstore/default.nix b/pkgs/servers/nosql/eventstore/default.nix index d58005f7be2..572cfe1f17d 100644 --- a/pkgs/servers/nosql/eventstore/default.nix +++ b/pkgs/servers/nosql/eventstore/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { mkdir -p $out/{bin,lib/eventstore/clusternode} cp -r bin/clusternode/* $out/lib/eventstore/clusternode/ cat > $out/bin/clusternode << EOF - #!/bin/sh + #!${stdenv.shell} exec ${mono}/bin/mono $out/lib/eventstore/clusternode/EventStore.ClusterNode.exe "\$@" EOF chmod +x $out/bin/clusternode diff --git a/pkgs/servers/radicale/default.nix b/pkgs/servers/radicale/default.nix index 47bdad75343..a701ad5d833 100644 --- a/pkgs/servers/radicale/default.nix +++ b/pkgs/servers/radicale/default.nix @@ -9,13 +9,13 @@ pythonPackages.buildPythonApplication rec { sha256 = "1c5lv8qca21mndkx350wxv34qypqh6gb4rhzms4anr642clq3jg2"; }; - propagatedBuildInputs = [ + propagatedBuildInputs = stdenv.lib.optionals (!pythonPackages.isPy3k) [ pythonPackages.flup pythonPackages.ldap pythonPackages.sqlalchemy ]; - doCheck = true; + doCheck = !pythonPackages.isPy3k; meta = with stdenv.lib; { homepage = http://www.radicale.org/; @@ -29,6 +29,6 @@ pythonPackages.buildPythonApplication rec { ''; license = licenses.gpl3Plus; platform = platforms.all; - maintainers = with maintainers; [ edwtjo pSub ]; + maintainers = with maintainers; [ edwtjo pSub aneeshusa ]; }; } diff --git a/pkgs/servers/tvheadend/default.nix b/pkgs/servers/tvheadend/default.nix index b05977a1e25..09cb2cca628 100644 --- a/pkgs/servers/tvheadend/default.nix +++ b/pkgs/servers/tvheadend/default.nix @@ -1,9 +1,9 @@ -{avahi, dbus, fetchurl, git, gnutar, gzip, libav, libiconv, openssl, pkgconfig, python +{avahi, cmake, dbus, fetchurl, gettext, git, gnutar, gzip, bzip2, ffmpeg, libiconv, openssl, pkgconfig, python , stdenv, which, zlib}: with stdenv.lib; -let version = "4.0.8"; +let version = "4.2.1"; pkgName = "tvheadend"; in @@ -13,16 +13,26 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://github.com/tvheadend/tvheadend/archive/v${version}.tar.gz"; - sha256 = "0k4g7pvfyk4bxpsjdwv7bmbygbp7gfg9wrr2aqb099ncbz18bx04"; + sha256 = "1wrj3w595c1hfl2vmfdmp5qncy5samqi7iisyq76jf3nlzgw6dvn"; }; enableParallelBuilding = true; # disable dvbscan, as having it enabled causes a network download which # cannot happen during build. - configureFlags = [ "--disable-dvbscan" ]; + configureFlags = [ + "--disable-dvbscan" + "--disable-bintray_cache" + "--disable-ffmpeg_static" + "--disable-hdhomerun_client" + "--disable-hdhomerun_static" + ]; - buildInputs = [ avahi dbus git gnutar gzip libav libiconv openssl pkgconfig python + buildPhase = "make"; + + dontUseCmakeConfigure = true; + + buildInputs = [ avahi dbus cmake gettext git gnutar gzip bzip2 ffmpeg libiconv openssl pkgconfig python which zlib ]; preConfigure = '' diff --git a/pkgs/servers/unifi/default.nix b/pkgs/servers/unifi/default.nix index a11618d24f5..2ce0ba1d5f5 100644 --- a/pkgs/servers/unifi/default.nix +++ b/pkgs/servers/unifi/default.nix @@ -1,25 +1,30 @@ -{ stdenv, fetchurl, unzip }: +{ stdenv +, dpkg +, fetchurl +, unzip +}: stdenv.mkDerivation rec { name = "unifi-controller-${version}"; - version = "5.4.14"; + version = "5.5.11"; src = fetchurl { - url = "https://dl.ubnt.com/unifi/${version}/UniFi.unix.zip"; - sha256 = "16scryd8g0dsswawwadxxqsirir6mn0jaawv3qcszqj52vlz878w"; + url = "https://www.ubnt.com/downloads/unifi/5.5.11-5107276ec2/unifi_sysvinit_all.deb"; + sha256 = "1jsixz7g7h7fdwb512flcwk0vblrsxpg4i9jdz7r72bkmvnxk7mm"; }; - buildInputs = [ unzip ]; + buildInputs = [ dpkg ]; + + unpackPhase = '' + dpkg-deb -x ${src} ./ + ''; doConfigure = false; - buildPhase = '' - rm -rf bin conf readme.txt - ''; - installPhase = '' mkdir -p $out - cp -ar * $out + cd ./usr/lib/unifi + cp -ar dl lib webapps $out ''; meta = with stdenv.lib; { diff --git a/pkgs/servers/xmpp/pyIRCt/default.nix b/pkgs/servers/xmpp/pyIRCt/default.nix index 2a87eeb7cb5..ebdc73aec30 100644 --- a/pkgs/servers/xmpp/pyIRCt/default.nix +++ b/pkgs/servers/xmpp/pyIRCt/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { sed -e '/configFiles/iimport os' -i config.py cp * $out/share/${name} cat > $out/bin/pyIRCt < $out/bin/pyMAILt <=0.9,<0.10' acme - ''; - checkPhase = '' $out/bin/simp_le --test ''; diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-mozc/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-mozc/default.nix index cdd99cd7e9a..596b3ce1565 100644 --- a/pkgs/tools/inputmethods/fcitx-engines/fcitx-mozc/default.nix +++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-mozc/default.nix @@ -1,10 +1,11 @@ -{ clangStdenv, fetchFromGitHub, fetchurl, fetchpatch, fetchsvn, gyp, which, ninja, - python, pkgconfig, protobuf, gtk2, zinnia, qt4, libxcb, tegaki-zinnia-japanese, +{ clangStdenv, fetchFromGitHub, fetchurl, fetchpatch, gyp, which, ninja, + python, pkgconfig, protobuf, gtk2, zinnia, qt5, libxcb, tegaki-zinnia-japanese, fcitx, gettext }: let - japanese_usage_dictionary = fetchsvn { - url = "http://japanese-usage-dictionary.googlecode.com/svn/trunk"; - rev = "10"; + japanese_usage_dictionary = fetchFromGitHub { + owner = "hiroyuki-komatsu"; + repo = "japanese-usage-dictionary"; + rev = "e5b3425575734c323e1d947009dd74709437b684"; sha256 = "0pyrpz9c8nxccwpgyr36w314mi8h132cis8ijvlqmmhqxwsi30hm"; }; icons = fetchurl { @@ -13,30 +14,30 @@ let }; in clangStdenv.mkDerivation rec { name = "fcitx-mozc-${version}"; - version = "2.17.2313.102"; + version = "2.20.2673.102"; src = fetchFromGitHub { owner = "google"; repo = "mozc"; - rev = "3306d3314499a54a4064b8b80bbc1bce3f6cfac4"; - sha256 = "0l7mjlnbm6i1ipni8pg9ym5bjg3rzkaxi9xwmsz2lddv348sqii2"; + rev = "280e38fe3d9db4df52f0713acf2ca65898cd697a"; + sha256 = "0s599f817gjgqynm4n1yll1ipd25ai2c55y8k6wvhg9s7qaxnyhs"; }; nativeBuildInputs = [ gyp which ninja python pkgconfig ]; - buildInputs = [ protobuf gtk2 zinnia qt4 libxcb fcitx gettext ]; + buildInputs = [ protobuf gtk2 zinnia qt5.qtbase libxcb fcitx gettext ]; postUnpack = '' rmdir $sourceRoot/src/third_party/japanese_usage_dictionary/ ln -s ${japanese_usage_dictionary} $sourceRoot/src/third_party/japanese_usage_dictionary - tar -xzf ${icons} -C $sourceRoot + tar -xzf ${icons} -C $sourceRoot/src ''; - patch_version = "2.17.2313.102.1"; + patch_version = "2.18.2612.102.1"; patches = [ (fetchpatch rec { name = "fcitx-mozc-${patch_version}.patch"; url = "https://download.fcitx-im.org/fcitx-mozc/${name}"; - sha256 = "172c34jkppibvwr9qf9xwgh2hdrmmhyx7nsdj49krxbfdlsy3yy0"; + sha256 = "1f9m4310kz09v5qvnv75ka2vq63m7by023qrkpddgq4dv7gxx3ca"; }) ]; @@ -47,42 +48,34 @@ in clangStdenv.mkDerivation rec { configurePhase = '' export GYP_DEFINES="document_dir=$out/share/doc/mozc use_libzinnia=1 use_libprotobuf=1" - python src/build_mozc.py gyp --gypdir=${gyp}/bin --server_dir=$out/lib/mozc \ - python src/unix/fcitx/fcitx.gyp gyp --gypdir=${gyp}/bin - ''; - - preBuildPhase = '' - head -n 29 src/server/mozc_server.cc > LICENSE + cd src && python build_mozc.py gyp --gypdir=${gyp}/bin --server_dir=$out/lib/mozc ''; buildPhase = '' - python src/build_mozc.py build -c Release \ - unix/fcitx/fcitx.gyp:fcitx-mozc \ + PYTHONPATH="$PWD:$PYTHONPATH" python build_mozc.py build -c Release \ server/server.gyp:mozc_server \ - gui/gui.gyp:mozc_tool - ''; - - checkPhase = '' - python src/build_mozc.py runtests -c Release + gui/gui.gyp:mozc_tool \ + unix/fcitx/fcitx.gyp:fcitx-mozc ''; installPhase = '' - install -d $out/share/licenses/fcitx-mozc/ - install -m 644 LICENSE src/data/installer/*.html $out/share/licenses/fcitx-mozc/ + install -d $out/share/licenses/fcitx-mozc + head -n 29 server/mozc_server.cc > $out/share/licenses/fcitx-mozc/LICENSE + install -m 644 data/installer/*.html $out/share/licenses/fcitx-mozc/ install -d $out/share/doc/mozc - install -m 644 src/data/installer/*.html $out/share/doc/mozc/ + install -m 644 data/installer/*.html $out/share/doc/mozc/ - install -D -m 755 src/out_linux/Release/mozc_server $out/lib/mozc/mozc_server - install -m 755 src/out_linux/Release/mozc_tool $out/lib/mozc/mozc_tool + install -D -m 755 out_linux/Release/mozc_server $out/lib/mozc/mozc_server + install -m 755 out_linux/Release/mozc_tool $out/lib/mozc/mozc_tool - install -D -m 755 src/out_linux/Release/fcitx-mozc.so $out/lib/fcitx/fcitx-mozc.so - install -D -m 644 src/unix/fcitx/fcitx-mozc.conf $out/share/fcitx/addon/fcitx-mozc.conf - install -D -m 644 src/unix/fcitx/mozc.conf $out/share/fcitx/inputmethod/mozc.conf + install -D -m 755 out_linux/Release/fcitx-mozc.so $out/lib/fcitx/fcitx-mozc.so + install -D -m 644 unix/fcitx/fcitx-mozc.conf $out/share/fcitx/addon/fcitx-mozc.conf + install -D -m 644 unix/fcitx/mozc.conf $out/share/fcitx/inputmethod/mozc.conf install -d $out/share/doc/mozc - for mofile in src/out_linux/Release/gen/unix/fcitx/po/*.mo + for mofile in out_linux/Release/gen/unix/fcitx/po/*.mo do filename=`basename $mofile` lang=$filename.mo @@ -90,18 +83,9 @@ in clangStdenv.mkDerivation rec { done install -d $out/share/fcitx/imicon - install -m 644 fcitx-mozc-icons/mozc.png $out/share/fcitx/imicon/mozc.png + install -m 644 fcitx-mozc-icons/mozc.png $out/share/fcitx/imicon/mozc.png install -d $out/share/fcitx/mozc/icon - install -m 644 fcitx-mozc-icons/mozc.png $out/share/fcitx/mozc/icon/mozc.png - install -m 644 fcitx-mozc-icons/mozc-alpha_full.png $out/share/fcitx/mozc/icon/mozc-alpha_full.png - install -m 644 fcitx-mozc-icons/mozc-alpha_half.png $out/share/fcitx/mozc/icon/mozc-alpha_half.png - install -m 644 fcitx-mozc-icons/mozc-direct.png $out/share/fcitx/mozc/icon/mozc-direct.png - install -m 644 fcitx-mozc-icons/mozc-hiragana.png $out/share/fcitx/mozc/icon/mozc-hiragana.png - install -m 644 fcitx-mozc-icons/mozc-katakana_full.png $out/share/fcitx/mozc/icon/mozc-katakana_full.png - install -m 644 fcitx-mozc-icons/mozc-katakana_half.png $out/share/fcitx/mozc/icon/mozc-katakana_half.png - install -m 644 fcitx-mozc-icons/mozc-dictionary.png $out/share/fcitx/mozc/icon/mozc-dictionary.png - install -m 644 fcitx-mozc-icons/mozc-properties.png $out/share/fcitx/mozc/icon/mozc-properties.png - install -m 644 fcitx-mozc-icons/mozc-tool.png $out/share/fcitx/mozc/icon/mozc-tool.png + install -m 644 fcitx-mozc-icons/*.png $out/share/fcitx/mozc/icon/ ''; meta = with clangStdenv.lib; { diff --git a/pkgs/tools/inputmethods/fcitx/fcitx-configtool.nix b/pkgs/tools/inputmethods/fcitx/fcitx-configtool.nix index 80abc5dd20c..83034222261 100644 --- a/pkgs/tools/inputmethods/fcitx/fcitx-configtool.nix +++ b/pkgs/tools/inputmethods/fcitx/fcitx-configtool.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, makeWrapper, pkgconfig, cmake, fcitx, gtk3, isocodes, gnome3 }: stdenv.mkDerivation rec { - name = "fcitx-configtool-0.4.8"; + name = "fcitx-configtool-0.4.9"; meta = with stdenv.lib; { description = "GTK-based config tool for Fcitx"; @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://download.fcitx-im.org/fcitx-configtool/${name}.tar.xz"; - sha256 = "1vaim0namw58bfafbvws1vgd4010p19zwqfbx6bd1zi5sgchdg0f"; + sha256 = "1ypr2jr3vzs2shqfrvhqy69xvagrn9x507180i9wxy14hb97a82r"; }; buildInputs = [ makeWrapper fcitx cmake isocodes pkgconfig gtk3 diff --git a/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix b/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix index 3f421e327d7..b0da0034ef9 100644 --- a/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix +++ b/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "fcitx-qt5-${version}"; - version = "1.0.5"; + version = "1.1.0"; src = fetchurl { url = "http://download.fcitx-im.org/fcitx-qt5/${name}.tar.xz"; - sha256 = "1pj1b04n8r4kl7jh1qdv0xshgzb3zrmizfa3g5h3yk589h191vwc"; + sha256 = "0r8c5k0qin3mz2p1mdciip6my0x58662sx5z50zs4c5pkdg21qwv"; }; nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig ]; diff --git a/pkgs/tools/misc/fzf/default.nix b/pkgs/tools/misc/fzf/default.nix index 6001a785c7a..872a02ed9de 100644 --- a/pkgs/tools/misc/fzf/default.nix +++ b/pkgs/tools/misc/fzf/default.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "fzf-${version}"; - version = "0.16.6"; + version = "0.16.7"; rev = "${version}"; goPackagePath = "github.com/junegunn/fzf"; @@ -11,7 +11,7 @@ buildGoPackage rec { inherit rev; owner = "junegunn"; repo = "fzf"; - sha256 = "0nzjbm40c4w9d0d34s5qnr9jkrh1vkn508xl2lfwfvmnzsnb9xbn"; + sha256 = "11ka5n7mrm5pb9riah28zyshvfz2svm4wn6fbama39yp6sc01x23"; }; outputs = [ "bin" "out" "man" ]; diff --git a/pkgs/tools/misc/fzf/deps.nix b/pkgs/tools/misc/fzf/deps.nix index 2f033c5b1c2..289ea9f11ae 100644 --- a/pkgs/tools/misc/fzf/deps.nix +++ b/pkgs/tools/misc/fzf/deps.nix @@ -23,8 +23,8 @@ fetch = { type = "git"; url = "https://github.com/junegunn/go-shellwords"; - rev = "33bd8f1ebe16d6e5eb688cc885749a63059e9167"; - sha256 = "0xcymw0fm0ir8d9swh1bkpknnqgx5ijjsj433z4d9riy8h8ywpw8"; + rev = "02e3cf038dcea8290e44424da473dd12be796a8a"; + sha256 = "1pg7pl25wvpl2dbpyrv9p1r7prnqimxlf6136vn0dfm54j2x4mnr"; }; } { diff --git a/pkgs/tools/misc/qt5ct/default.nix b/pkgs/tools/misc/qt5ct/default.nix index dd94e379eed..4377b386d85 100644 --- a/pkgs/tools/misc/qt5ct/default.nix +++ b/pkgs/tools/misc/qt5ct/default.nix @@ -2,18 +2,18 @@ stdenv.mkDerivation rec { name = "qt5ct-${version}"; - version = "0.24"; + version = "0.30"; src = fetchurl { url = "mirror://sourceforge/qt5ct/qt5ct-${version}.tar.bz2"; - sha256 = "0k62nd945pbgkshycijzrgdyrwj5kcswk33slaj7hr7d6r7bmb6p"; + sha256 = "1k0ywd440qvf84chadjb4fnkn8dkfl56cc3a6wqg6a59drslvng6"; }; buildInputs = [ qtbase qtsvg ]; nativeBuildInputs = [ makeQtWrapper qmakeHook qttools ]; preConfigure = '' - qmakeFlags="$qmakeFlags PLUGINDIR=$out/lib/qt5/plugins/platformthemes/" + qmakeFlags="$qmakeFlags PLUGINDIR=$out/lib/qt5/plugins" ''; preFixup = '' diff --git a/pkgs/tools/misc/rockbox-utility/default.nix b/pkgs/tools/misc/rockbox-utility/default.nix index 7ef6d2ce7ed..2ec03094f9f 100644 --- a/pkgs/tools/misc/rockbox-utility/default.nix +++ b/pkgs/tools/misc/rockbox-utility/default.nix @@ -1,4 +1,6 @@ -{ stdenv, fetchurl, libusb1, qt5 }: +{ stdenv, fetchurl, pkgconfig, libusb1 +, qtbase, qttools, makeQtWrapper, qmakeHook +, withEspeak ? false, espeak ? null }: stdenv.mkDerivation rec { name = "rockbox-utility-${version}"; @@ -9,15 +11,25 @@ stdenv.mkDerivation rec { sha256 = "0k3ycga3b0jnj13whwiip2l0gx32l50pnbh7kfima87nq65aaa5w"; }; - buildInputs = [ libusb1 ] ++ (with qt5; [ qtbase qttools ]); - nativeBuildInputs = [ qt5.qmakeHook ]; + buildInputs = [ libusb1 qtbase qttools ] + ++ stdenv.lib.optional withEspeak espeak; + nativeBuildInputs = [ makeQtWrapper pkgconfig qmakeHook ]; preConfigure = '' cd rbutil/rbutilqt ''; installPhase = '' - install -Dm755 RockboxUtility $out/bin/RockboxUtility + runHook preInstall + + install -Dm755 RockboxUtility $out/bin/rockboxutility + ln -s $out/bin/rockboxutility $out/bin/RockboxUtility + wrapQtProgram $out/bin/rockboxutility \ + ${stdenv.lib.optionalString withEspeak '' + --prefix PATH : ${espeak}/bin + ''} + + runHook postInstall ''; meta = with stdenv.lib; { diff --git a/pkgs/tools/networking/cmst/default.nix b/pkgs/tools/networking/cmst/default.nix index 91472b7c61e..e5d404d65e1 100644 --- a/pkgs/tools/networking/cmst/default.nix +++ b/pkgs/tools/networking/cmst/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "cmst-${version}"; - version = "2016.10.03"; + version = "2017.03.18"; src = fetchFromGitHub { repo = "cmst"; owner = "andrew-bibb"; rev = name; - sha256 = "1pvk1jg0fiw0j4f1wrnhgirgziliwa44sxfdmcq9ans4zbig4izh"; + sha256 = "0lsg8ya36df48ij0jawgli3f63hy6mn9zcla48whb1l4r7cih545"; }; nativeBuildInputs = [ makeWrapper qmakeHook ]; diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 565892181e4..5e4966a374b 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -4,10 +4,10 @@ stdenv.mkDerivation rec { name = "connman-${version}"; - version = "1.33"; + version = "1.34"; src = fetchurl { url = "mirror://kernel/linux/network/connman/${name}.tar.xz"; - sha256 = "187mknq2i907gf8dz0i79359gn1qc9mryvqkcgb280d7dw1ld2dw"; + sha256 = "07n71wcy1c4cc01ca4dl9k1jpdqr5nsyr33dqf7k87wwfa681859"; }; buildInputs = [ openconnect polkit diff --git a/pkgs/tools/networking/networkmanager_dmenu/default.nix b/pkgs/tools/networking/networkmanager_dmenu/default.nix new file mode 100644 index 00000000000..f9b84be6015 --- /dev/null +++ b/pkgs/tools/networking/networkmanager_dmenu/default.nix @@ -0,0 +1,40 @@ +{ stdenv, glib, fetchFromGitHub, networkmanager, python3Packages +, gobjectIntrospection, dmenu }: + +let inherit (python3Packages) python pygobject3; +in stdenv.mkDerivation rec { + name = "networkmanager_dmenu-unstable-${version}"; + version = "2017-04-13"; + + src = fetchFromGitHub { + owner = "firecat53"; + repo = "networkmanager-dmenu"; + rev = "fbc0704702b32c2efb30ba6b5c0ad6f054a71a18"; + sha256 = "1584zrhla1njvkrbvb1rq66q06gs510f0l1ls3z7x7jmn322y6yr"; + }; + + buildInputs = [ glib python pygobject3 gobjectIntrospection networkmanager python3Packages.wrapPython ]; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp networkmanager_dmenu $out/bin/ + ''; + + postFixup = '' + makeWrapperArgs="\ + --prefix GI_TYPELIB_PATH : $GI_TYPELIB_PATH \ + --prefix PYTHONPATH : \"$(toPythonPath $out):$(toPythonPath ${pygobject3})\"" + wrapPythonPrograms + ''; + + + meta = with stdenv.lib; { + description = "Small script to manage NetworkManager connections with dmenu instead of nm-applet"; + homepage = https://github.com/firecat53/networkmanager-dmenu; + license = stdenv.lib.licenses.mit; + maintainers = [ stdenv.lib.maintainers.jensbin ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/tools/networking/nzbget/default.nix b/pkgs/tools/networking/nzbget/default.nix index 5cffb6c5c0e..e7a23b70ce9 100644 --- a/pkgs/tools/networking/nzbget/default.nix +++ b/pkgs/tools/networking/nzbget/default.nix @@ -3,14 +3,16 @@ stdenv.mkDerivation rec { name = "nzbget-${version}"; - version = "18.0"; + version = "18.1"; src = fetchurl { url = "http://github.com/nzbget/nzbget/releases/download/v${version}/nzbget-${version}-src.tar.gz"; - sha256 = "0nzm2qbhwrbq02ynfl2vgs6k58bk5fk45d3547a4g1lqhri3dijb"; + sha256 = "069q75b0s9fzzy15m96dhn83jypgc91yx998rl0nykfcl7nzkxyx"; }; - buildInputs = [ pkgconfig libxml2 ncurses libsigcxx libpar2 gnutls + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ libxml2 ncurses libsigcxx libpar2 gnutls libgcrypt zlib openssl ]; enableParallelBuilding = true; diff --git a/pkgs/tools/networking/offlineimap/default.nix b/pkgs/tools/networking/offlineimap/default.nix index d585be26e26..70a4bc87b97 100644 --- a/pkgs/tools/networking/offlineimap/default.nix +++ b/pkgs/tools/networking/offlineimap/default.nix @@ -2,7 +2,7 @@ asciidoc, libxml2, libxslt, docbook_xml_xslt }: pythonPackages.buildPythonApplication rec { - version = "7.0.13"; + version = "7.1.0"; name = "offlineimap-${version}"; namePrefix = ""; @@ -10,7 +10,7 @@ pythonPackages.buildPythonApplication rec { owner = "OfflineIMAP"; repo = "offlineimap"; rev = "v${version}"; - sha256 = "0108xmp9df6cb1nzw3ym59mir3phgfdgp5d43n44ymsk2cc39xcc"; + sha256 = "10hxzp2hwkarvmwhw9mxbp9wkbclxwm6n0d7i4xs8r1s94yiffb3"; }; postPatch = '' diff --git a/pkgs/tools/networking/wrk/default.nix b/pkgs/tools/networking/wrk/default.nix index 226180196fd..7c72c2cd210 100644 --- a/pkgs/tools/networking/wrk/default.nix +++ b/pkgs/tools/networking/wrk/default.nix @@ -21,6 +21,8 @@ stdenv.mkDerivation rec { --replace "#include chrome-host.json + sed -e "s!%%replace%%!$host_file!" go/src/${goPackagePath}/firefox/host.json > firefox-host.json + + install -D chrome-host.json $bin/etc/chrome-host.json + install -D firefox-host.json $bin/lib/mozilla/native-messaging-hosts/com.dannyvankooten.browserpass.json + ''; + + meta = { + description = "A Chrome & Firefox extension for zx2c4's pass"; + homepage = "https://github.com/dannyvankooten/browserpass"; + license = stdenv.lib.licenses.mit; + platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + }; +} diff --git a/pkgs/tools/security/masscan/default.nix b/pkgs/tools/security/masscan/default.nix new file mode 100644 index 00000000000..46c90481628 --- /dev/null +++ b/pkgs/tools/security/masscan/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, libpcap }: + +stdenv.mkDerivation rec { + name = "masscan-${version}"; + version = "2016-11-03"; + + src = fetchFromGitHub { + owner = "robertdavidgraham"; + repo = "masscan"; + rev = "dc88677a11dc3d9a5f6aa55cc1377bc17dba1496"; + sha256 = "1mdjqkn4gnbwr5nci6i6xn7qzkjgq7dx37fzd6gghv87xgw7cdbg"; + }; + + buildInputs = [ libpcap ]; + + makeFlags = [ "PREFIX=$(out)" "CC=cc" "-j" ]; + + postInstall = '' + mkdir -p $out/share/man/man8 + mkdir -p $out/share/{doc,licenses}/masscan + mkdir -p $out/etc/masscan + + cp data/exclude.conf $out/etc/masscan + cp -t $out/share/doc/masscan doc/algorithm.js doc/howto-afl.md doc/bot.hml + cp doc/masscan.8 $out/share/man/man8/masscan.8 + cp LICENSE $out/share/licenses/masscan/LICENSE + ''; + + meta = with stdenv.lib; { + description = "Fast scan of the Internet"; + homepage = https://github.com/robertdavidgraham/masscan; + license = licenses.agpl3; + platforms = with platforms; allBut darwin; + maintainers = with maintainers; [ rnhmjoj ]; + }; +} diff --git a/pkgs/tools/security/sshguard/0001-Remove-the-unnecessary-from-ipset-cmds.patch b/pkgs/tools/security/sshguard/0001-Remove-the-unnecessary-from-ipset-cmds.patch new file mode 100644 index 00000000000..f1233a04b7a --- /dev/null +++ b/pkgs/tools/security/sshguard/0001-Remove-the-unnecessary-from-ipset-cmds.patch @@ -0,0 +1,27 @@ +From 11f0d238d3149c31c4440b8f6a58fe6a00b82d3a Mon Sep 17 00:00:00 2001 +From: Daniel Aleksandersen +Date: Mon, 13 Mar 2017 16:29:33 +0100 +Subject: [PATCH 1/3] Remove the unnecessary = from ipset cmds + +--- + src/fw/sshg-fw-ipset.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/fw/sshg-fw-ipset.sh b/src/fw/sshg-fw-ipset.sh +index 510bc2c..dc7f86b 100644 +--- a/src/fw/sshg-fw-ipset.sh ++++ b/src/fw/sshg-fw-ipset.sh +@@ -3,8 +3,8 @@ + # This file is part of SSHGuard. + + fw_init() { +- ipset -quiet create -exist sshguard4 hash:ip family=inet +- ipset -quiet create -exist sshguard6 hash:ip family=inet6 ++ ipset -quiet create -exist sshguard4 hash:ip family inet ++ ipset -quiet create -exist sshguard6 hash:ip family inet6 + } + + fw_block() { +-- +2.10.0 + diff --git a/pkgs/tools/security/sshguard/default.nix b/pkgs/tools/security/sshguard/default.nix new file mode 100644 index 00000000000..bb165e53c73 --- /dev/null +++ b/pkgs/tools/security/sshguard/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, autoreconfHook, yacc, flex}: + + +stdenv.mkDerivation rec { + version = "2.0.0"; + name = "sshguard-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/sshguard/sshguard-2.0.0.tar.gz"; + sha256 = "e87c6c4a6dddf06f440ea76464eb6197869c0293f0a60ffa51f8a6a0d7b0cb06"; + }; + + doCheck = true; + + nativeBuildInputs = [ autoreconfHook yacc flex ]; + + configureFlags = [ "--sysconfdir=/etc" ]; + + patches = [ ./0001-Remove-the-unnecessary-from-ipset-cmds.patch ]; + + meta = with stdenv.lib; { + description = "SSHGuard protects hosts from brute-force attacks"; + longDescription = '' + SSHGuard can read log messages from various input sources. Log messages are parsed, line-by-line, for recognized patterns. + If an attack, such as several login failures within a few seconds, is detected, the offending IP is blocked. + ''; + homepage = https://sshguard.net; + license = licenses.bsd3; + maintainers = with maintainers; [ sargon ]; + platforms = with platforms; linux ++ darwin ++ freebsd ++ netbsd ++ openbsd; + }; +} diff --git a/pkgs/tools/system/efibootmgr/default.nix b/pkgs/tools/system/efibootmgr/default.nix index 11418919e41..31be8ab63f4 100644 --- a/pkgs/tools/system/efibootmgr/default.nix +++ b/pkgs/tools/system/efibootmgr/default.nix @@ -1,26 +1,29 @@ -{ stdenv, fetchFromGitHub, perl, efivar, pciutils, zlib, popt }: +{ stdenv, fetchFromGitHub, pkgconfig, efivar, popt }: stdenv.mkDerivation rec { name = "efibootmgr-${version}"; - version = "13"; + version = "15"; - buildInputs = [ perl efivar pciutils zlib popt ]; + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ efivar popt ]; src = fetchFromGitHub { owner = "rhinstaller"; repo = "efibootmgr"; rev = version; - sha256 = "1kwmvx111c3a5783kx3az76mkhpr1nsdx0yv09gp4k0hgzqlqj96"; + sha256 = "0z7h1dirp8za6lbbf4f3dzn7l1px891rdymhkbqc10yj6gi1jpqp"; }; NIX_CFLAGS_COMPILE = "-I${efivar}/include/efivar"; - NIX_LDFLAGS = "-lefiboot -lefivar -lpopt"; + + makeFlags = [ "EFIDIR=nixos" ]; installFlags = [ "prefix=$(out)" ]; meta = with stdenv.lib; { description = "A Linux user-space application to modify the Intel Extensible Firmware Interface (EFI) Boot Manager"; - homepage = http://linux.dell.com/efibootmgr/; + homepage = https://github.com/rhinstaller/efibootmgr; license = licenses.gpl2; platforms = platforms.linux; }; diff --git a/pkgs/tools/text/platinum-searcher/default.nix b/pkgs/tools/text/platinum-searcher/default.nix index 502af44262b..c76ba8ea88d 100644 --- a/pkgs/tools/text/platinum-searcher/default.nix +++ b/pkgs/tools/text/platinum-searcher/default.nix @@ -2,8 +2,8 @@ buildGoPackage rec { name = "the_platinum_searcher-${version}"; - version = "2.1.3"; - rev = "v2.1.3"; + version = "2.1.5"; + rev = "v${version}"; goPackagePath = "github.com/monochromegane/the_platinum_searcher"; @@ -11,11 +11,16 @@ buildGoPackage rec { inherit rev; owner = "monochromegane"; repo = "the_platinum_searcher"; - sha256 = "09pkdfh7fqn3x4l9zaw5wzk20k7nfdwry7br9vfy3vv3fwv61ynp"; + sha256 = "1y7kl3954dimx9hp2bf1vjg1h52hj1v6cm4f5nhrqzwrawp0b6q0"; }; goDeps = ./deps.nix; + preFixup = stdenv.lib.optionalString stdenv.isDarwin '' + # fixes cycle between $out and $bin + install_name_tool -delete_rpath $out/lib $bin/bin/pt + ''; + meta = with stdenv.lib; { homepage = https://github.com/monochromegane/the_platinum_searcher; description = "A code search tool similar to ack and the_silver_searcher(ag)."; diff --git a/pkgs/tools/text/platinum-searcher/deps.nix b/pkgs/tools/text/platinum-searcher/deps.nix index da3f3ff1b8a..04fb9bd4be3 100644 --- a/pkgs/tools/text/platinum-searcher/deps.nix +++ b/pkgs/tools/text/platinum-searcher/deps.nix @@ -4,8 +4,8 @@ fetch = { type = "git"; url = "https://gopkg.in/yaml.v2"; - rev = "a83829b6f1293c91addabc89d0571c246397bbf4"; - sha256 = "1m4dsmk90sbi17571h6pld44zxz7jc4lrnl4f27dpd1l8g5xvjhh"; + rev = "a5b47d31c556af34a302ce5d659e6fea44d90de0"; + sha256 = "0v6l48fshdjrqzyq1kwn22gy7vy434xdr1i0lm3prsf6jbln9fam"; }; } { @@ -13,8 +13,8 @@ fetch = { type = "git"; url = "https://github.com/jessevdk/go-flags"; - rev = "1b89bf73cd2c3a911d7b2a279ab085c4a18cf539"; - sha256 = "027nglc5xx1cm03z9sisg0iqrhwcj6gh5z254rrpl8p4fwrxx680"; + rev = "4e64e4a4e2552194cf594243e23aa9baf3b4297e"; + sha256 = "02x7f1wm8119s27h4dc3a4aw6shydnpnnkvzwg5xm0snn5kb4zxm"; }; } { @@ -22,8 +22,8 @@ fetch = { type = "git"; url = "https://github.com/BurntSushi/toml"; - rev = "056c9bc7be7190eaa7715723883caffa5f8fa3e4"; - sha256 = "0gkgkw04ndr5y7hrdy0r4v2drs5srwfcw2bs1gyas066hwl84xyw"; + rev = "99064174e013895bbd9b025c31100bd1d9b590ca"; + sha256 = "058qrar8rvw3wb0ci1mf1axnqq2729cvv9zmdr4ms2nn9s97yiz9"; }; } { @@ -31,8 +31,8 @@ fetch = { type = "git"; url = "https://go.googlesource.com/text"; - rev = "5eb8d4684c4796dd36c74f6452f2c0fa6c79597e"; - sha256 = "1cjwm2pv42dbfqc6ylr7jmma902zg4gng5aarqrbjf1k2nf2vs14"; + rev = "a49bea13b776691cb1b49873e5d8df96ec74831a"; + sha256 = "1pcmgf88wml6ca8v63nh3nxsfvpzjv3c4qj2w2wkizbil826g7as"; }; } { @@ -76,8 +76,8 @@ fetch = { type = "git"; url = "https://github.com/shiena/ansicolor"; - rev = "a5e2b567a4dd6cc74545b8a4f27c9d63b9e7735b"; - sha256 = "0gwplb1b4fvav1vjf4b2dypy5rcp2w41vrbxkd1dsmac870cy75p"; + rev = "a422bbe96644373c5753384a59d678f7d261ff10"; + sha256 = "1dcn8a9z6a5dxa2m3fkppnajcls8lanbl38qggkf646yi5qsk1hc"; }; } ] diff --git a/pkgs/tools/text/rst2html5/default.nix b/pkgs/tools/text/rst2html5/default.nix new file mode 100644 index 00000000000..3d8afd0540a --- /dev/null +++ b/pkgs/tools/text/rst2html5/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pythonPackages }: + +pythonPackages.buildPythonPackage rec { + + name = "${pname}-${version}"; + pname = "rst2html5"; + version = "1.9.3"; + + src = fetchurl { + url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; + sha256 = "1js90asy7s0278b4p28inkkp0r7ajr5fk5pcdgcdw628a30vl3i6"; + }; + + propagatedBuildInputs = with pythonPackages; + [ docutils genshi pygments beautifulsoup4 ]; + + meta = with stdenv.lib;{ + homepage = "https://bitbucket.org/andre_felipe_dias/rst2html5"; + description = "Converts ReSTructuredText to (X)HTML5"; + license = licenses.mit; + maintainers = with maintainers; [ AndersonTorres ]; + }; +} diff --git a/pkgs/tools/virtualization/linode-cli/default.nix b/pkgs/tools/virtualization/linode-cli/default.nix new file mode 100644 index 00000000000..f74492b7727 --- /dev/null +++ b/pkgs/tools/virtualization/linode-cli/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub, buildPerlPackage, perlPackages, makeWrapper}: + +buildPerlPackage rec { + name = "linode-cli-${version}"; + version = "1.4.7"; + + src = fetchFromGitHub { + owner = "linode"; + repo = "cli"; + rev = "v${version}"; + sha256 = "1wiz067wgxi4z4rz4n9p7dlvx5z4hkl2nxpfvhikl6dri4m2nkkp"; + }; + + buildInputs = [ makeWrapper ]; + propagatedBuildInputs = with perlPackages; [ + JSON + LWPUserAgent + MozillaCA + TryTiny + WebServiceLinode + ]; + + # Wrap perl scripts so they can find libraries + postInstall = '' + for n in "$out/bin"/*; do + wrapProgram "$n" --prefix PERL5LIB : "$PERL5LIB" + done + ''; + + # Has no tests + doCheck = false; + + # Has no "doc" or "devdoc" outputs + outputs = [ "out" ]; + + meta = with stdenv.lib; { + description = "Command-line interface to the Linode platform"; + homepage = "https://github.com/linode/cli"; + license = with licenses; [ artistic2 gpl2 ]; + maintainers = with maintainers; [ nixy ]; + }; +} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 1046b86dbb4..94fedabd562 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -82,6 +82,9 @@ doNotDisplayTwice rec { links = links2; # added 2016-01-31 lttngTools = lttng-tools; # added 2014-07-31 lttngUst = lttng-ust; # added 2014-07-31 + lua5_sec = luaPackages.luasec; # added 2017-05-02 + lua5_1_sockets = lua51Packages.luasocket; # added 2017-05-02 + lua5_expat = luaPackages.luaexpat; # added 2017-05-02 m3d-linux = m33-linux; # added 2016-08-13 manpages = man-pages; # added 2015-12-06 man_db = man-db; # added 2016-05 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e8df4011bc7..82c75fecfec 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -273,7 +273,8 @@ with pkgs; inherit kernel rootModules allowMissing; }; - kdeDerivation = import ../build-support/kde/derivation.nix { inherit stdenv lib; }; + kdeDerivation = makeOverridable (import ../build-support/kde/derivation.nix) + { inherit stdenv lib; }; kdeWrapper = callPackage ../build-support/kde/wrapper.nix { inherit (gnome3) dconf; @@ -523,6 +524,8 @@ with pkgs; dgsh = callPackage ../shells/dgsh { }; + dkimpy = pythonPackages.dkimpy; + elvish = callPackage ../shells/elvish { }; encryptr = callPackage ../tools/security/encryptr { @@ -547,6 +550,8 @@ with pkgs; pass = callPackage ../tools/security/pass { }; + browserpass = callPackage ../tools/security/browserpass { }; + oracle-instantclient = callPackage ../development/libraries/oracle-instantclient { }; kwakd = callPackage ../servers/kwakd { }; @@ -856,6 +861,8 @@ with pkgs; devmem2 = callPackage ../os-specific/linux/devmem2 { }; + ioport = callPackage ../os-specific/linux/ioport {}; + diagrams-builder = callPackage ../tools/graphics/diagrams-builder { inherit (haskellPackages) ghcWithPackages diagrams-builder; }; @@ -1003,6 +1010,8 @@ with pkgs; mathics = pythonPackages.mathics; + masscan = callPackage ../tools/security/masscan { }; + meson = callPackage ../development/tools/build-managers/meson { }; metricbeat = callPackage ../misc/logging/metricbeat { }; @@ -1759,8 +1768,9 @@ with pkgs; m17n = callPackage ../tools/inputmethods/fcitx-engines/fcitx-m17n { }; mozc = callPackage ../tools/inputmethods/fcitx-engines/fcitx-mozc { - inherit (pythonPackages) gyp; - protobuf = protobuf.override { stdenv = clangStdenv; }; + python = python2; + inherit (python2Packages) gyp; + protobuf = protobuf3_2.override { stdenv = clangStdenv; }; }; table-other = callPackage ../tools/inputmethods/fcitx-engines/fcitx-table-other { }; @@ -2864,6 +2874,8 @@ with pkgs; macchanger = callPackage ../os-specific/linux/macchanger { }; + madlang = haskell.lib.justStaticExecutables haskellPackages.madlang; + mailcheck = callPackage ../applications/networking/mailreaders/mailcheck { }; maildrop = callPackage ../tools/networking/maildrop { }; @@ -3147,6 +3159,8 @@ with pkgs; networkmanagerapplet = newScope gnome2 ../tools/networking/network-manager-applet { }; + networkmanager_dmenu = callPackage ../tools/networking/networkmanager_dmenu { }; + newsbeuter = callPackage ../applications/networking/feedreaders/newsbeuter { }; newsbeuter-dev = callPackage ../applications/networking/feedreaders/newsbeuter/dev.nix { }; @@ -3355,9 +3369,7 @@ with pkgs; owncloud90 owncloud91; - owncloud-client = callPackage ../applications/networking/owncloud-client { - inherit (libsForQt5) qtkeychain; - }; + owncloud-client = libsForQt56.callPackage ../applications/networking/owncloud-client { }; p2pvc = callPackage ../applications/video/p2pvc {}; @@ -3703,6 +3715,8 @@ with pkgs; radvd = callPackage ../tools/networking/radvd { }; + rainbowstream = pythonPackages.rainbowstream; + rambox = callPackage ../applications/networking/instant-messengers/rambox { }; ranger = callPackage ../applications/misc/ranger { }; @@ -3723,6 +3737,8 @@ with pkgs; redsocks = callPackage ../tools/networking/redsocks { }; + rst2html5 = callPackage ../tools/text/rst2html5 { }; + rt = callPackage ../servers/rt { }; rtmpdump = callPackage ../tools/video/rtmpdump { }; @@ -3818,7 +3834,7 @@ with pkgs; rlwrap = callPackage ../tools/misc/rlwrap { }; - rockbox_utility = callPackage ../tools/misc/rockbox-utility { }; + rockbox_utility = libsForQt5.callPackage ../tools/misc/rockbox-utility { }; rosegarden = callPackage ../applications/audio/rosegarden { }; @@ -4002,6 +4018,8 @@ with pkgs; snort = callPackage ../applications/networking/ids/snort { }; + sshguard = callPackage ../tools/security/sshguard {}; + softhsm = callPackage ../tools/security/softhsm { }; solr = callPackage ../servers/search/solr { }; @@ -5952,11 +5970,6 @@ with pkgs; luaPackages = lua52Packages; - lua5_1_sockets = 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; @@ -6148,6 +6161,8 @@ with pkgs; regina = callPackage ../development/interpreters/regina { }; + inherit (ocamlPackages) reason; + renpy = callPackage ../development/interpreters/renpy { ffmpeg = ffmpeg_2; }; @@ -6565,6 +6580,8 @@ with pkgs; doctl = callPackage ../development/tools/doctl { }; + doit = callPackage ../development/tools/build-managers/doit { }; + dot2tex = pythonPackages.dot2tex; doxygen = callPackage ../development/tools/documentation/doxygen { @@ -6859,6 +6876,10 @@ with pkgs; premake4 = callPackage ../development/tools/misc/premake { }; + premake5 = callPackage ../development/tools/misc/premake/5.nix { + inherit (darwin.apple_sdk.frameworks) CoreServices; + }; + premake = premake4; qtcreator = libsForQt5.callPackage ../development/qtcreator { }; @@ -7392,6 +7413,8 @@ with pkgs; dxflib = callPackage ../development/libraries/dxflib {}; + eccodes = callPackage ../development/libraries/eccodes { }; + eclib = callPackage ../development/libraries/eclib {}; eigen = callPackage ../development/libraries/eigen {}; @@ -7454,17 +7477,14 @@ with pkgs; ffmpeg_2_8 = callPackage ../development/libraries/ffmpeg/2.8.nix { inherit (darwin.apple_sdk.frameworks) Cocoa; }; - ffmpeg_3_1 = callPackage ../development/libraries/ffmpeg/3.1.nix { - inherit (darwin.apple_sdk.frameworks) Cocoa CoreMedia; - }; - ffmpeg_3_2 = callPackage ../development/libraries/ffmpeg/3.2.nix { + ffmpeg_3_3 = callPackage ../development/libraries/ffmpeg/3.3.nix { inherit (darwin.apple_sdk.frameworks) Cocoa CoreMedia; }; # Aliases ffmpeg_0 = ffmpeg_0_10; ffmpeg_1 = ffmpeg_1_2; ffmpeg_2 = ffmpeg_2_8; - ffmpeg_3 = ffmpeg_3_2; + ffmpeg_3 = ffmpeg_3_3; ffmpeg = ffmpeg_3; ffmpeg-full = callPackage ../development/libraries/ffmpeg-full { @@ -9540,30 +9560,32 @@ with pkgs; developerBuild = true; }); - qt56 = recurseIntoAttrs (import ../development/libraries/qt-5/5.6 { - inherit newScope; - inherit stdenv fetchurl makeSetupHook makeWrapper; - bison = bison2; # error: too few arguments to function 'int yylex(... - inherit cups; - harfbuzz = harfbuzz-icu; - mesa = mesa_noglu; - inherit perl; - inherit (gst_all_1) gstreamer gst-plugins-base; - }); + qt56 = recurseIntoAttrs (makeOverridable + (import ../development/libraries/qt-5/5.6) { + inherit newScope; + inherit stdenv fetchurl makeSetupHook makeWrapper; + bison = bison2; # error: too few arguments to function 'int yylex(... + inherit cups; + harfbuzz = harfbuzz-icu; + mesa = mesa_noglu; + inherit perl; + inherit (gst_all_1) gstreamer gst-plugins-base; + }); libsForQt56 = recurseIntoAttrs (lib.makeScope qt56.newScope mkLibsForQt5); - qt58 = recurseIntoAttrs (import ../development/libraries/qt-5/5.8 { - inherit newScope; - inherit stdenv fetchurl makeSetupHook makeWrapper; - bison = bison2; # error: too few arguments to function 'int yylex(... - inherit cups; - harfbuzz = harfbuzz-icu; - mesa = mesa_noglu; - inherit perl; - inherit (gst_all_1) gstreamer gst-plugins-base; - inherit (gnome3) gtk3 dconf; - }); + qt58 = recurseIntoAttrs (makeOverridable + (import ../development/libraries/qt-5/5.8) { + inherit newScope; + inherit stdenv fetchurl makeSetupHook makeWrapper; + bison = bison2; # error: too few arguments to function 'int yylex(... + inherit cups; + harfbuzz = harfbuzz-icu; + mesa = mesa_noglu; + inherit perl; + inherit (gst_all_1) gstreamer gst-plugins-base; + inherit (gnome3) gtk3 dconf; + }); libsForQt58 = recurseIntoAttrs (lib.makeScope qt58.newScope mkLibsForQt5); @@ -9663,6 +9685,8 @@ with pkgs; withQt5 = true; }; + qtinstaller = callPackage ../development/libraries/qtinstaller { }; + qtkeychain = callPackage ../development/libraries/qtkeychain { withQt5 = true; }; @@ -9735,6 +9759,8 @@ with pkgs; inherit (haskellPackages) ghcWithPackages; }; + libgme = callPackage ../development/libraries/audio/libgme { }; + librdf_raptor = callPackage ../development/libraries/librdf/raptor.nix { }; librdf_raptor2 = callPackage ../development/libraries/librdf/raptor2.nix { }; @@ -10220,26 +10246,26 @@ with pkgs; wxGTK = wxGTK28; - wxGTK28 = callPackage ../development/libraries/wxGTK-2.8 { + wxGTK28 = callPackage ../development/libraries/wxwidgets/2.8 { inherit (gnome2) GConf; withMesa = lib.elem system lib.platforms.mesaPlatforms; }; - wxGTK29 = callPackage ../development/libraries/wxGTK-2.9/default.nix { + wxGTK29 = callPackage ../development/libraries/wxwidgets/2.9/default.nix { inherit (gnome2) GConf; inherit (darwin.stubs) setfile; inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QuickTime; withMesa = lib.elem system lib.platforms.mesaPlatforms; }; - wxGTK30 = callPackage ../development/libraries/wxGTK-3.0/default.nix { + wxGTK30 = callPackage ../development/libraries/wxwidgets/3.0/default.nix { inherit (gnome2) GConf; inherit (darwin.stubs) setfile; inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit; withMesa = lib.elem system lib.platforms.mesaPlatforms; }; - wxmac = callPackage ../development/libraries/wxmac { + wxmac = callPackage ../development/libraries/wxwidgets/3.0/mac.nix { inherit (darwin.apple_sdk.frameworks) AGL Cocoa Kernel; inherit (darwin.stubs) setfile rez derez; }; @@ -10671,6 +10697,8 @@ with pkgs; charybdis = callPackage ../servers/irc/charybdis {}; + clickhouse = callPackage ../servers/clickhouse { }; + couchdb = callPackage ../servers/http/couchdb { spidermonkey = spidermonkey_1_8_5; python = python27; @@ -10849,6 +10877,11 @@ with pkgs; nginxModules = callPackage ../servers/http/nginx/modules.nix { }; + # We should move to dynmaic modules and create a nginxFull package with all modules + nginxShibboleth = callPackage ../servers/http/nginx/stable.nix { + modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders nginxModules.shibboleth ]; + }; + ngircd = callPackage ../servers/irc/ngircd { }; nix-binary-cache = callPackage ../servers/http/nix-binary-cache {}; @@ -11635,7 +11668,6 @@ with pkgs; kernelPatches = [ kernelPatches.bridge_stp_helper kernelPatches.p9_fixes - kernelPatches.packet_fix_race_condition_CVE_2016_8655 kernelPatches.DCCP_double_free_vulnerability_CVE-2017-6074 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") @@ -11684,10 +11716,7 @@ with pkgs; kernelPatches = [ kernelPatches.bridge_stp_helper kernelPatches.p9_fixes - # See pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md - # when adding a new linux version - # !!! 4.7 patch doesn't apply, 4.9 patch not up yet, will keep checking - # kernelPatches.cpu-cgroup-v2."4.7" + kernelPatches.cpu-cgroup-v2."4.9" kernelPatches.modinst_arg_list_too_long ] ++ lib.optionals ((platform.kernelArch or null) == "mips") @@ -11698,13 +11727,26 @@ with pkgs; }; linux_4_10 = callPackage ../os-specific/linux/kernel/linux-4.10.nix { + kernelPatches = + [ kernelPatches.bridge_stp_helper + kernelPatches.p9_fixes + kernelPatches.cpu-cgroup-v2."4.10" + kernelPatches.modinst_arg_list_too_long + ] + ++ lib.optionals ((platform.kernelArch or null) == "mips") + [ kernelPatches.mips_fpureg_emu + kernelPatches.mips_fpu_sigill + kernelPatches.mips_ext3_n32 + ]; + }; + + linux_4_11 = callPackage ../os-specific/linux/kernel/linux-4.11.nix { kernelPatches = [ kernelPatches.bridge_stp_helper kernelPatches.p9_fixes # See pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md # when adding a new linux version - # !!! 4.7 patch doesn't apply, 4.9 patch not up yet, will keep checking - # kernelPatches.cpu-cgroup-v2."4.7" + kernelPatches.cpu-cgroup-v2."4.11" kernelPatches.modinst_arg_list_too_long ] ++ lib.optionals ((platform.kernelArch or null) == "mips") @@ -11882,7 +11924,7 @@ with pkgs; linux = linuxPackages.kernel; # Update this when adding the newest kernel major version! - linuxPackages_latest = linuxPackages_4_10; + linuxPackages_latest = linuxPackages_4_11; linux_latest = linuxPackages_latest.kernel; # Build the kernel modules for the some of the kernels. @@ -11892,6 +11934,7 @@ with pkgs; linuxPackages_4_4 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_4); linuxPackages_4_9 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_9); linuxPackages_4_10 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_10); + linuxPackages_4_11 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_4_11); # Don't forget to update linuxPackages_latest! # Intentionally lacks recurseIntoAttrs, as -rc kernels will quite likely break out-of-tree modules and cause failed Hydra builds. @@ -12254,6 +12297,7 @@ with pkgs; ubootRaspberryPi2 ubootRaspberryPi3_32bit ubootRaspberryPi3_64bit + ubootUtilite ubootWandboard ; @@ -12291,6 +12335,8 @@ with pkgs; upstart = callPackage ../os-specific/linux/upstart { }; + upstart-check-config = callPackage ../os-specific/linux/upstart/check-config.nix {}; + usbutils = callPackage ../os-specific/linux/usbutils { }; usermount = callPackage ../os-specific/linux/usermount { }; @@ -12371,7 +12417,7 @@ with pkgs; wpa_supplicant = callPackage ../os-specific/linux/wpa_supplicant { }; - wpa_supplicant_gui = callPackage ../os-specific/linux/wpa_supplicant/gui.nix { }; + wpa_supplicant_gui = libsForQt5.callPackage ../os-specific/linux/wpa_supplicant/gui.nix { }; xf86_input_mtrack = callPackage ../os-specific/linux/xf86-input-mtrack { }; @@ -13873,6 +13919,8 @@ with pkgs; xfontsel = callPackage ../applications/misc/xfontsel { }; inherit (xorg) xlsfonts; + xrdp = callPackage ../applications/networking/remote/xrdp { }; + freerdp = callPackage ../applications/networking/remote/freerdp { inherit libpulseaudio; inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good; @@ -14065,6 +14113,10 @@ with pkgs; googleearth = callPackage_i686 ../applications/misc/googleearth { }; + google-play-music-desktop-player = callPackage ../applications/audio/google-play-music-desktop-player { + inherit (gnome2) GConf; + }; + google_talk_plugin = callPackage ../applications/networking/browsers/mozilla-plugins/google-talk-plugin { libpng = libpng12; }; @@ -14809,7 +14861,18 @@ with pkgs; speechdSupport = config.mumble.speechdSupport or false; pulseSupport = config.pulseaudio or false; iceSupport = config.murmur.iceSupport or true; - }) mumble mumble_git murmur murmur_git; + }) mumble mumble_git murmur; + + inherit (callPackages ../applications/networking/mumble { + avahi = avahi.override { + withLibdnssdCompat = true; + }; + qt5 = qt56; # Mumble doesn't work with Qt > 5.5 + jackSupport = config.mumble.jackSupport or false; + speechdSupport = config.mumble.speechdSupport or false; + pulseSupport = config.pulseaudio or false; + iceSupport = false; + }) murmur_git; mumble_overlay = callPackage ../applications/networking/mumble/overlay.nix { mumble_i686 = if system == "x86_64-linux" @@ -15773,12 +15836,20 @@ with pkgs; telepathy_idle = callPackage ../applications/networking/instant-messengers/telepathy/idle {}; + termdown = (newScope pythonPackages) ../applications/misc/termdown { }; + terminal-notifier = callPackage ../applications/misc/terminal-notifier {}; terminator = callPackage ../applications/misc/terminator { vte = gnome2.vte.override { pythonSupport = true; }; }; + deepin-terminal = callPackage ../applications/misc/deepin-terminal { + vte = gnome3.vte; + wnck = libwnck3; + gee = libgee_0_8; + }; + termite = callPackage ../applications/misc/termite { vte = gnome3.vte-ng; }; @@ -15849,6 +15920,8 @@ with pkgs; tortoisehg = callPackage ../applications/version-management/tortoisehg { }; + toot = callPackage ../applications/misc/toot { }; + toxic = callPackage ../applications/networking/instant-messengers/toxic { }; transcode = callPackage ../applications/audio/transcode { }; @@ -16619,6 +16692,8 @@ with pkgs; boost = boost160; }; + displaycal = (newScope pythonPackages) ../applications/graphics/displaycal {}; + drumkv1 = callPackage ../applications/audio/drumkv1 { }; duckmarines = callPackage ../games/duckmarines { love = love_0_9; }; @@ -17171,6 +17246,10 @@ with pkgs; gnome3 = gnome3_22; + gnomeExtensions = { + dash-to-dock = callPackage ../desktops/gnome-3/extensions/dash-to-dock { }; + }; + hsetroot = callPackage ../tools/X11/hsetroot { }; kakasi = callPackage ../tools/text/kakasi { }; @@ -17560,6 +17639,8 @@ with pkgs; cryptoverif = callPackage ../applications/science/logic/cryptoverif { }; + cubicle = callPackage ../applications/science/logic/cubicle { }; + cvc3 = callPackage ../applications/science/logic/cvc3 { gmp = lib.overrideDerivation gmp (a: { dontDisableStatic = true; }); }; @@ -17866,6 +17947,9 @@ with pkgs; thepeg = callPackage ../development/libraries/physics/thepeg { }; yoda = callPackage ../development/libraries/physics/yoda { }; + yoda-with-root = lowPrio (callPackage ../development/libraries/physics/yoda { + withRootSupport = true; + }); ### MISC @@ -18106,6 +18190,8 @@ with pkgs; nix-prefetch-svn nix-prefetch-scripts; + nix-update-source = callPackage ../tools/package-management/nix-update-source {}; + nix-template-rpm = callPackage ../build-support/templaterpm { inherit (pythonPackages) python toposort; }; nix-repl = callPackage ../tools/package-management/nix-repl { }; @@ -18577,6 +18663,7 @@ with pkgs; ghc-standalone-archive = callPackage ../os-specific/darwin/ghc-standalone-archive { inherit (darwin) cctools; }; + chrome-gnome-shell = callPackage ../desktops/gnome-3/extensions/chrome-gnome-shell {}; messenger-for-desktop = callPackage ../applications/networking/instant-messengers/messenger-for-desktop {}; NSPlist = callPackage ../development/libraries/NSPlist {}; @@ -18585,4 +18672,5 @@ with pkgs; xib2nib = callPackage ../development/tools/xib2nib {}; + linode-cli = callPackage ../tools/virtualization/linode-cli { }; } diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index cf2b676a5d4..d330de0f267 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -289,6 +289,8 @@ let merlin = callPackage ../development/tools/ocaml/merlin { }; + merlin_extend = callPackage ../development/ocaml-modules/merlin_extend { }; + mezzo = callPackage ../development/compilers/mezzo { }; mlgmp = callPackage ../development/ocaml-modules/mlgmp { }; @@ -499,6 +501,8 @@ let then callPackage ../development/ocaml-modules/ppx_tools {} else null; + ppx_tools_versioned = callPackage ../development/ocaml-modules/ppx_tools_versioned { }; + pycaml = callPackage ../development/ocaml-modules/pycaml { }; qcheck = callPackage ../development/ocaml-modules/qcheck { @@ -509,6 +513,8 @@ let re = callPackage ../development/ocaml-modules/re { }; + reason = callPackage ../development/compilers/reason { }; + rresult = callPackage ../development/ocaml-modules/rresult { }; safepass = callPackage ../development/ocaml-modules/safepass { }; diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 7cd58e66b0c..e48e1269166 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -5537,6 +5537,8 @@ let self = _self // overrides; _self = with self; { FileSlurp = buildPerlPackage { name = "File-Slurp-9999.19"; + # WARNING: check on next update if deprecation warning is gone + patches = [ ../development/perl-modules/File-Slurp/silence-deprecation.patch ]; src = fetchurl { url = mirror://cpan/authors/id/U/UR/URI/File-Slurp-9999.19.tar.gz; sha256 = "0hrn4nipwx40d6ji8ssgr5nw986z9iqq8cn0kdpbszh9jplynaff"; @@ -15511,4 +15513,19 @@ let self = _self // overrides; _self = with self; { }; }; + WebServiceLinode = buildPerlModule rec { + name = "WebService-Linode-0.28"; + src = fetchurl { + url = "mirror://cpan/authors/id/M/MI/MIKEGRB/${name}.tar.gz"; + sha256 = "66a315016999c0d2043caae86e664dad10c6613708f33a2f56aae8030326c509"; + }; + buildInputs = [ ModuleBuildTiny ]; + propagatedBuildInputs = [ JSON LWP LWPProtocolhttps ]; + meta = { + homepage = https://github.com/mikegrb/WebService-Linode; + description = "Perl Interface to the Linode.com API"; + license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ]; + }; + }; + }; in self diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 585655e746e..18d8fa92c20 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -67,10 +67,14 @@ let else throw "Unsupported kind ${kind}"); in fetcher (builtins.removeAttrs attrs ["format"]); + # This should become part of stdenv! + sharedLibraryExtension = if stdenv.isDarwin then ".dylib" else ".so"; + in { inherit python bootstrapped-pip pythonAtLeast pythonOlder isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k mkPythonDerivation buildPythonPackage buildPythonApplication; inherit fetchPypi; + inherit sharedLibraryExtension; # helpers @@ -188,6 +192,8 @@ in { asn1crypto = callPackage ../development/python-modules/asn1crypto { }; + automat = callPackage ../development/python-modules/automat { }; + # packages defined elsewhere bap = callPackage ../development/python-modules/bap { @@ -235,6 +241,8 @@ in { }; }; + dkimpy = callPackage ../development/python-modules/dkimpy { }; + emcee = buildPythonPackage { name = "emcee-2.1.0"; src = pkgs.fetchurl { @@ -782,62 +790,11 @@ in { }; }; - asgiref = buildPythonPackage rec { - name = "asgiref-${version}"; - version = "1.0.0"; + asgiref = callPackage ../development/python-modules/asgiref { }; - src = pkgs.fetchurl { - url = "mirror://pypi/a/asgiref/${name}.tar.gz"; - sha256 = "1jg4nxjsn7nc4vd3170xd60m6syn57m6xwyyna6r68vniq8nhg7i"; - }; + asgi_ipc = callPackage ../development/python-modules/asgi_ipc { }; - propagatedBuildInputs = with self ; [ six ]; - - meta = { - description = "Reference ASGI adapters and channel layers"; - license = licenses.bsd3; - homepage = https://github.com/django/asgiref; - }; - }; - - asgi_ipc = buildPythonPackage rec { - name = "asgi_ipc-${version}"; - version = "1.2.0"; - - src = pkgs.fetchurl { - url = "mirror://pypi/a/asgi_ipc/${name}.tar.gz"; - sha256 = "03phyfj30s4sgaqfbmv38nfvx3kdmjwsh3558d2lxrf2gdrimmf9"; - }; - - propagatedBuildInputs = with self ; [ asgiref msgpack posix_ipc ]; - - meta = { - description = "Posix IPC-backed ASGI channel layer implementation"; - license = licenses.bsd3; - homepage = http://github.com/django/asgi_ipc/; - }; - }; - - asgi_redis = buildPythonPackage rec { - name = "asgi_redis-${version}"; - version = "1.0.0"; - - src = pkgs.fetchurl { - url = "mirror://pypi/a/asgi_redis/${name}.tar.gz"; - sha256 = "1pdzxannmgb0as2x6xy0rk4xi8ygnsggpsa0z31pzpwbk6jsgwxd"; - }; - - # Requires a redis server available - doCheck = false; - - propagatedBuildInputs = with self ; [ asgiref asgi_ipc msgpack six redis cryptography ]; - - meta = { - description = "Redis-backed ASGI channel layer implementation"; - license = licenses.bsd3; - homepage = http://github.com/django/asgi_redis/; - }; - }; + asgi_redis = callPackage ../development/python-modules/asgi_redis { }; python-editor = buildPythonPackage rec { name = "python-editor-${version}"; @@ -927,7 +884,36 @@ in { }; }; - almir = buildPythonPackage rec { + almir = let + sqlalchemy_0_8 = buildPythonPackage rec { + name = "SQLAlchemy-0.8.7"; + disabled = isPy34 || isPy35; +# doCheck = !isPyPy; + + src = pkgs.fetchurl { + url = "mirror://pypi/S/SQLAlchemy/${name}.tar.gz"; + sha256 = "9edb47d137db42d57fd26673d6c841e189b1aeb9b566cca908962fcc8448c0bc"; + }; + + preConfigure = optionalString isPy3k '' + python3 sa2to3.py --no-diffs -w lib test examples + ''; + + buildInputs = with self; [ nose mock ] + ++ stdenv.lib.optional doCheck pysqlite; + + checkPhase = '' + ${python.executable} sqla_nose.py + ''; + + doCheck = false; + + meta = { + homepage = http://www.sqlalchemy.org/; + description = "A Python SQL toolkit and Object Relational Mapper"; + }; + }; + in buildPythonPackage rec { name = "almir-0.1.8"; src = pkgs.fetchurl { @@ -960,12 +946,12 @@ in { self.pyramid_jinja2 self.pyramid_tm self.pytz - self.sqlalchemy8 + sqlalchemy_0_8 self.transaction self.waitress self.webhelpers self.psycopg2 - (self.zope_sqlalchemy.override rec {propagatedBuildInputs = with self; [ sqlalchemy8 transaction ];}) + (self.zope_sqlalchemy.override rec {propagatedBuildInputs = with self; [ sqlalchemy_0_8 transaction ];}) ]; postInstall = '' @@ -975,6 +961,8 @@ in { meta = { maintainers = with maintainers; [ domenkozar ]; platforms = platforms.all; + # Two versions of sqlalchemy in closure + broken = true; }; }; @@ -1247,39 +1235,7 @@ in { }; }; - apscheduler = buildPythonPackage rec { - name = "APScheduler-3.3.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/A/APScheduler/${name}.tar.gz"; - sha256 = "f68874dff1bdffcc6ce3adb7840c1e4d162c609a3e3f831351df30b75732767b"; - }; - - buildInputs = with self; [ - pytest - sqlalchemy - tornado - twisted - mock - trollius - gevent - setuptools_scm - ]; - - propagatedBuildInputs = with self; [ - six - pytz - tzlocal - futures - funcsigs - ]; - - meta = with pkgs.stdenv.lib; { - description = "A Python library that lets you schedule your Python code to be executed"; - homepage = http://pypi.python.org/pypi/APScheduler/; - license = licenses.mit; - }; - }; + APScheduler = callPackage ../development/python-modules/APScheduler { }; args = buildPythonPackage rec { name = "args-0.1.0"; @@ -2077,7 +2033,6 @@ in { babelfish = buildPythonPackage rec { version = "0.5.5"; name = "babelfish-${version}"; - disabled = isPy3k; src = pkgs.fetchurl { url = "mirror://pypi/b/babelfish/${name}.tar.gz"; @@ -2171,11 +2126,11 @@ in { }); beautifulsoup4 = buildPythonPackage (rec { - name = "beautifulsoup4-4.5.1"; + name = "beautifulsoup4-4.5.3"; src = pkgs.fetchurl { url = "mirror://pypi/b/beautifulsoup4/${name}.tar.gz"; - sha256 = "1qgmhw65ncsgccjhslgkkszif47q6gvxwqv4mim17agxd81p951w"; + sha256 = "0glaw1vyxnbp03fni7h5496n6iib0n5iim4gax1n0ngscs9s075j"; }; buildInputs = [ self.nose ]; @@ -2191,26 +2146,6 @@ in { }; }); - # flexget needs beatifulsoup < 4.4 for now - beautifulsoup_4_1_3 = buildPythonPackage (rec { - name = "beautifulsoup4-4.1.3"; - - src = pkgs.fetchurl { - url = "mirror://pypi/b/beautifulsoup4/${name}.tar.gz"; - sha256 = "0cbcml88bkx9gf1wznxa0kqz1wpyakfbyh9gmxw0wljhda1q0zk1"; - }; - - meta = { - homepage = http://crummy.com/software/BeautifulSoup/bs4/; - description = "HTML and XML parser"; - license = licenses.mit; - maintainers = with maintainers; [ domenkozar ]; - }; - - disabled = isPy3k; - - }); - beaker = buildPythonPackage rec { name = "Beaker-${version}"; version = "1.8.0"; @@ -2519,14 +2454,18 @@ in { }; colorclass = buildPythonPackage rec { + pname = "colorclass"; version = "2.2.0"; - name = "colorclass-${version}"; + name = "${pname}-${version}"; - src = pkgs.fetchurl { - url = "mirror://pypi/c/colorclass/${name}.tar.gz"; + src = fetchPypi { + inherit pname version; sha256 = "b05c2a348dfc1aff2d502527d78a5b7b7e2f85da94a96c5081210d8e9ee8e18b"; }; + # No tests in archive + doCheck = false; + meta = { homepage = "https://github.com/Robpol86/colorclass"; license = licenses.mit; @@ -2572,6 +2511,8 @@ in { }; }; + constantly = callPackage ../development/python-modules/constantly { }; + cornice = buildPythonPackage rec { name = "cornice-${version}"; version = "1.2.1"; @@ -2832,26 +2773,6 @@ in { }; }; - billiard_33 = buildPythonPackage rec { - name = "billiard-${version}"; - version = "3.3.0.23"; - - disabled = isPyPy; - - src = pkgs.fetchurl { - url = "mirror://pypi/b/billiard/${name}.tar.gz"; - sha256 = "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"; - }; - - buildInputs = with self; [ nose unittest2 mock ]; - - meta = { - homepage = https://github.com/celery/billiard; - description = "Python multiprocessing fork with improvements and bugfixes"; - license = licenses.bsd3; - }; - }; - billiard = buildPythonPackage rec { name = "billiard-${version}"; version = "3.5.0.2"; @@ -5067,32 +4988,7 @@ in { bcrypt = callPackage ../development/python-modules/bcrypt.nix { }; - cffi = if isPyPy then null else buildPythonPackage rec { - name = "cffi-1.9.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/c/cffi/${name}.tar.gz"; - sha256 = "563e0bd53fda03c151573217b3a49b3abad8813de9dd0632e10090f6190fdaf8"; - }; - - propagatedBuildInputs = with self; [ pkgs.libffi pycparser ]; - buildInputs = with self; [ pytest ]; - - patchPhase = '' - substituteInPlace testing/cffi0/test_ownlib.py --replace "gcc" "cc" - ''; - - checkPhase = '' - py.test - ''; - - meta = { - maintainers = with maintainers; [ domenkozar ]; - homepage = https://cffi.readthedocs.org/; - license = with licenses; [ mit ]; - description = "Foreign Function Interface for Python calling C code"; - }; - }; + cffi = callPackage ../development/python-modules/cffi { }; pycollada = buildPythonPackage rec { name = "pycollada-0.4.1"; @@ -5257,6 +5153,8 @@ in { pytest-httpbin = callPackage ../development/python-modules/pytest-httpbin { }; + pytest-asyncio = callPackage ../development/python-modules/pytest-asyncio { }; + pytestcache = buildPythonPackage rec { name = "pytest-cache-1.0"; src = pkgs.fetchurl { @@ -5541,8 +5439,8 @@ in { sha256 = "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"; }; - buildInputs = with self; [ pytest pytest_xdist virtualenv process-tests ]; - propagatedBuildInputs = with self; [ coverage ]; + buildInputs = with self; [ pytest_xdist virtualenv process-tests ]; + propagatedBuildInputs = with self; [ pytest coverage ]; # xdist related tests fail with the following error # OSError: [Errno 13] Permission denied: 'py/_code' @@ -6173,28 +6071,6 @@ in { }; }); - # flexget requires 2.1 - dateutil_2_1 = buildPythonPackage (rec { - name = "dateutil-2.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/python-dateutil/python-${name}.tar.gz"; - sha256 = "1vlx0lpsxjxz64pz87csx800cwfqznjyr2y7nk3vhmzhkwzyqi2c"; - }; - - propagatedBuildInputs = with self; [ self.six ]; - - buildInputs = [ pkgs.glibcLocales ]; - - LC_ALL="en_US.UTF-8"; - - meta = { - description = "Powerful extensions to the standard datetime module"; - homepage = http://pypi.python.org/pypi/python-dateutil; - license = "BSD-style"; - }; - }); - ddar = buildPythonPackage { name = "ddar-1.0"; @@ -6259,34 +6135,6 @@ in { }; }; - deform2 = buildPythonPackage rec { - name = "deform-2.0a2"; - - src = pkgs.fetchurl { - url = "mirror://pypi/d/deform/${name}.tar.gz"; - sha256 = "1gfaf1d8zp0mp4h229srlffxdp86w1nni9g4aqsshxysr23x591z"; - }; - - buildInputs = with self; [] ++ optional isPy26 unittest2; - - propagatedBuildInputs = - [ self.beautifulsoup4 - self.peppercorn - self.colander - self.translationstring - self.chameleon - self.zope_deprecation - self.coverage - self.nose - ]; - - meta = { - maintainers = with maintainers; [ garbas domenkozar ]; - platforms = platforms.all; - }; - }; - - deform_bootstrap = buildPythonPackage rec { name = "deform_bootstrap-0.2.9"; @@ -6571,24 +6419,7 @@ in { }; }; - dogpile_cache = buildPythonPackage rec { - name = "dogpile.cache-0.5.4"; - - propagatedBuildInputs = with self; [ dogpile_core ]; - - src = pkgs.fetchurl { - url = "mirror://pypi/d/dogpile.cache/dogpile.cache-0.5.4.tar.gz"; - sha256 = "9eab7a5dc05ad1b6573144c4a2717226b5c38811f9ec29b514e774535a91ea24"; - }; - - doCheck = false; - - meta = { - description = "A caching front-end based on the Dogpile lock"; - homepage = http://bitbucket.org/zzzeek/dogpile.cache; - license = licenses.bsd3; - }; - }; + dogpile_cache = callPackage ../development/python-modules/dogpile.cache { }; dogpile_core = buildPythonPackage rec { name = "dogpile.core-0.4.1"; @@ -7063,7 +6894,7 @@ in { }; ezdxf = callPackage ../development/python-modules/ezdxf {}; - + facebook-sdk = buildPythonPackage rec { name = "facebook-sdk-0.4.0"; @@ -8425,6 +8256,8 @@ in { }; }; + m2r = callPackage ../development/python-modules/m2r { }; + mailchimp = buildPythonPackage rec { version = "2.0.9"; name = "mailchimp-${version}"; @@ -8470,7 +8303,21 @@ in { }; }; - mwlib = buildPythonPackage rec { + mwlib = let + pyparsing = buildPythonPackage rec { + name = "pyparsing-1.5.7"; + disabled = isPy3k; + + src = pkgs.fetchurl { + url = "mirror://pypi/p/pyparsing/${name}.tar.gz"; + sha256 = "646e14f90b3689b005c19ac9b6b390c9a39bf976481849993e277d7380e6e79f"; + }; + meta = { + homepage = http://pyparsing.wikispaces.com/; + description = "An alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions"; + }; + }; + in buildPythonPackage rec { version = "0.15.15"; name = "mwlib-${version}"; @@ -8488,7 +8335,7 @@ in { pillow py pyPdf - pyparsing1 + pyparsing qserve roman simplejson @@ -8496,6 +8343,15 @@ in { timelib ]; + checkInputs = with self; [ pytest ]; + + checkPhase = '' + py.test + ''; + + # Tests are in build directory but we need extension modules that are in $out + doCheck = false; + meta = { description = "Library for parsing MediaWiki articles and converting them to different output formats"; homepage = "http://pediapress.com/code/"; @@ -8727,12 +8583,12 @@ in { pants13-pre = buildPythonPackage rec { pname = "pantsbuild.pants"; - version = "1.3.0.dev13"; + version = "1.3.0.dev19"; name = "${pname}-${version}"; src = self.fetchPypi { inherit pname version; - sha256 = "0gnz0f74s53xccfdn78v2dg1m3gx2mm0pdmmjvs5ikfbb9lidhz4"; + sha256 = "07gxx8kzkcx3pm2qd5sz2xb3nw9khvbapiqdzgjvzbvai2gsd5qq"; }; prePatch = '' @@ -8881,7 +8737,8 @@ in { sha256 = "1z27wdxs5rj5xhhqfzvzn3yg682irkxw6dcs5jj7mcf97psk8gd8"; }; - buildInputs = with self; [ nose pybcrypt]; + buildInputs = with self; [ nose ]; + propagatedBuildInputs = with self; [ bcrypt ]; meta = { description = "A password hashing library for Python"; @@ -9392,7 +9249,6 @@ in { meta = { maintainers = with maintainers; [ domenkozar ]; platforms = platforms.all; - broken = true; }; }; @@ -10098,7 +9954,7 @@ in { zodb venusian colander - deform2 + deform python_magic pyyaml cryptacular @@ -10453,7 +10309,11 @@ in { }; }; - django = self.django_1_10; + django = self.django_1_11; + + django_1_11 = callPackage ../development/python-modules/django/1_11.nix { + gdal = self.gdal; + }; django_1_10 = callPackage ../development/python-modules/django/1_10.nix { gdal = self.gdal; @@ -10599,27 +10459,7 @@ in { }; }; - django_compat = buildPythonPackage rec { - name = "django-compat-${version}"; - version = "1.0.13"; - - # build process attempts to access a missing README.rst - disabled = isPy35; - - src = pkgs.fetchurl { - url = "mirror://pypi/d/django-compat/${name}.tar.gz"; - sha256 = "0s0z7cx0vv1kjsyzk24sg256hfnd09ssilc9rakhxrzr3firgx80"; - }; - - buildInputs = with self; [ django_nose ]; - propagatedBuildInputs = with self; [ django six ]; - - meta = { - description = "Forward and backwards compatibility layer for Django 1.4, 1.7, 1.8, 1.9 and 1.10"; - homepage = https://github.com/arteria/django-compat; - license = licenses.mit; - }; - }; + django_compat = callPackage ../development/python-modules/django-compat { }; django_environ = buildPythonPackage rec { name = "django-environ-${version}"; @@ -10722,10 +10562,8 @@ in { # TODO improve the that multi-override necessity (the fixpoint based python # packages work can be the solution) propagatedBuildInputs = with self; [ django_1_9 (django_compat.override { - buildInputs = with self; [ (django_nose.override { - propagatedBuildInputs = with self; [ django_1_9 nose ]; - }) ]; - propagatedBuildInputs = with self; [ django_1_9 six ]; + django = django_1_9; + django_nose = django_nose.override { propagatedBuildInputs = [django_1_9 nose]; }; }) ]; meta = { @@ -11695,28 +11533,8 @@ in { }; }; - flask-restplus = buildPythonPackage rec { - name = "flask-restplus-${version}"; - # Exactly 0.8.6 is required by flexget - version = "0.8.6"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "mirror://pypi/f/flask-restplus/${name}.tar.gz"; - sha256 = "3bb76cc156b9a09da62396d82b29fa31e4f27cccf79528538fe7155cf2785593"; - }; - - # Requires additional packages. - doCheck = false; - buildInputs = with self; [ nose blinker tzlocal ]; - propagatedBuildInputs = with self; [ flask six jsonschema pytz aniso8601 flask-restful ]; - - meta = { - homepage = "https://github.com/noirbizarre/flask-restplus"; - description = "Fast, easy and documented API development with Flask"; - license = licenses.mit; - }; - }; + # Exactly 0.8.6 is required by flexget + flask-restplus_0_8 = callPackage ../development/python-modules/flask-restplus/0.8.nix { }; flask_script = buildPythonPackage rec { name = "Flask-Script-${version}"; @@ -12718,29 +12536,7 @@ in { }; }; - guessit = buildPythonPackage rec { - version = "0.9.4"; - name = "guessit-${version}"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "mirror://pypi/g/guessit/${name}.tar.gz"; - sha256 = "068d3dmyk4v04p2zna0340lsdnpkm10gyza62apd9akgjh9rfs48"; - }; - - propagatedBuildInputs = with self; [ - dateutil_2_1 requests stevedore babelfish pyyaml - ]; - - # A unicode test fails - doCheck = false; - - meta = { - homepage = http://pypi.python.org/pypi/guessit; - license = licenses.lgpl3; - description = "A library for guessing information from video files"; - }; - }; + guessit = callPackage ../development/python-modules/guessit { }; rebulk = buildPythonPackage rec { version = "0.8.2"; @@ -13248,7 +13044,12 @@ in { ipyparallel = callPackage ../development/python-modules/ipyparallel { }; - ipython = callPackage ../development/python-modules/ipython { }; + # Newer versions of IPython no longer support Python 2.7. + ipython = if isPy27 then self.ipython_5 else self.ipython_6; + + ipython_5 = callPackage ../development/python-modules/ipython/5.nix { }; + + ipython_6 = callPackage ../development/python-modules/ipython { }; ipython_genutils = buildPythonPackage rec { version = "0.2.0"; @@ -13669,6 +13470,8 @@ in { sha256 = "1hl2psnn1chm698rimyn9dgcpl1mxgc8dj11b3ipp8z37yfjs3z9"; }; + disabled = isPy3k; + propagatedBuildInputs = with self; [ werkzeug twisted ]; meta = { @@ -14140,25 +13943,6 @@ in { }; }); - lxml_3_5 = buildPythonPackage ( rec { - name = "lxml-3.5.0"; - - src = pkgs.fetchurl { - url = "mirror://pypi/l/lxml/${name}.tar.gz"; - sha256 = "0y7m2s8ci6q642zl85y5axkj8z827l0vhjl532acb75hlkir77rl"; - }; - - buildInputs = with self; [ pkgs.libxml2 pkgs.libxslt ]; - - hardeningDisable = stdenv.lib.optional stdenv.isDarwin "format"; - - meta = { - description = "Pythonic binding for the libxml2 and libxslt libraries"; - homepage = http://lxml.de; - license = licenses.bsd3; - }; - }); - lxc = buildPythonPackage (rec { name = "python-lxc-unstable-2016-08-25"; disabled = !isPy27; @@ -14270,6 +14054,7 @@ in { description = "Super-fast templating language"; homepage = http://www.makotemplates.org; license = licenses.mit; + platforms = platforms.unix; maintainers = with maintainers; [ domenkozar ]; }; }; @@ -14428,24 +14213,6 @@ in { }; }); - mccabe_0_5 = buildPythonPackage (rec { - name = "mccabe-0.5.2"; - - src = pkgs.fetchurl { - url = "mirror://pypi/m/mccabe/${name}.tar.gz"; - sha256 = "1zss8c5cn8wvxsbjzv70dxymybh3cjzrjl19vxfbnyvmidng0wrl"; - }; - - buildInputs = with self; [ pytestrunner pytest ]; - - meta = { - description = "McCabe checker, plugin for flake8"; - homepage = "https://github.com/flintwork/mccabe"; - license = licenses.mit; - maintainers = with maintainers; [ ]; - }; - }); - mechanize = buildPythonPackage (rec { name = "mechanize-0.2.5"; disabled = isPy3k; @@ -14685,11 +14452,11 @@ in { rainbowstream = buildPythonPackage rec { name = "rainbowstream-${version}"; - version = "1.3.6"; + version = "1.3.7"; src = pkgs.fetchurl { url = "mirror://pypi/r/rainbowstream/${name}.tar.gz"; - sha256 = "04ki61mc2f5rw60zssr1rr6dmjmvhlws5rpnwd3zih6pi5b7cy4a"; + sha256 = "0zpi1x3b535pwx8rkq57nnrb5d5ma65vvlalar9vi6ilp124x1w2"; }; patches = [ @@ -15567,6 +15334,9 @@ in { sha256 = "170fbf11c54def1b5fcc919be0a890b760bb2eca81f56123a5dda0c69b5b099e"; }; + # Judging from SyntaxError + disabled = isPy3k; + meta = { maintainers = with maintainers; [ garbas domenkozar ]; platforms = platforms.linux; @@ -15812,6 +15582,8 @@ in { name = "${name}.tar.gz"; }; + disabled = isPy3k; + propagatedBuildInputs = with self; [ twisted ]; postInstall = "twistd --help > /dev/null"; @@ -18550,26 +18322,7 @@ in { }; }; - pbr = buildPythonPackage rec { - name = "pbr-${version}"; - version = "1.8.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pbr/${name}.tar.gz"; - sha256 = "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"; - }; - - # circular dependencies with fixtures - doCheck = false; - #buildInputs = with self; [ testtools testscenarios testresources - # testrepository fixtures ]; - - meta = { - description = "Python Build Reasonableness"; - homepage = "http://docs.openstack.org/developer/pbr/"; - license = licenses.asl20; - }; - }; + pbr = callPackage ../development/python-modules/pbr { }; fixtures = buildPythonPackage rec { name = "fixtures-1.4.0"; @@ -19195,16 +18948,7 @@ in { }; - plumbum = buildPythonPackage rec { - name = "plumbum-1.5.0"; - - buildInputs = with self; [ self.six ]; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/plumbum/${name}.tar.gz"; - sha256 = "b759f9e3b6771dff3332f01bc0683d1a56218f44d97942dabd906a0cd1cfb756"; - }; - }; + plumbum = callPackage ../development/python-modules/plumbum { }; polib = buildPythonPackage rec { @@ -20115,16 +19859,16 @@ in { }); pydot = buildPythonPackage rec { - name = "pydot-1.0.2"; + name = "pydot-1.2.3"; disabled = isPy3k; src = pkgs.fetchurl { url = "mirror://pypi/p/pydot/${name}.tar.gz"; - sha256 = "80ea01a7ba75671a3b7890375be0ad8d5321b07bfb6f572192c31409062b59f3"; + sha256 = "edb5d3f249f97fbd9c4bb16959e61bc32ecf40eee1a9f6d27abe8d01c0a73502"; }; propagatedBuildInputs = with self; [pyparsing pkgs.graphviz]; meta = { - homepage = http://code.google.com/p/pydot/; + homepage = https://github.com/erocarrera/pydot; description = "Allows to easily create both directed and non directed graphs from Python"; }; }; @@ -20352,11 +20096,11 @@ in { pyfiglet = buildPythonPackage rec { name = "pyfiglet-${version}"; - version = "0.7.2"; + version = "0.7.5"; src = pkgs.fetchurl { url = "mirror://pypi/p/pyfiglet/${name}.tar.gz"; - sha256 = "0v8a18wvaqnb1jksyv5dc5n6zj0vrkyhz0ivmm8gfwpa0ky6n68y"; + sha256 = "04jy4182hn5xfs6jf432gxclfj1rhssd7bsf0b4gymrjzkhr8qa4"; }; doCheck = false; @@ -20934,22 +20678,6 @@ in { }; }; - pyparsing1 = buildPythonPackage rec { - name = "pyparsing-1.5.7"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pyparsing/${name}.tar.gz"; - sha256 = "646e14f90b3689b005c19ac9b6b390c9a39bf976481849993e277d7380e6e79f"; - }; - - meta = { - homepage = http://pyparsing.wikispaces.com/; - description = "An alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions"; - }; - }; - - pyparted = buildPythonPackage rec { name = "pyparted-${version}"; version = "3.10.7"; @@ -21121,14 +20849,19 @@ in { }; }); - pyrss2gen = buildPythonPackage (rec { - name = "PyRSS2Gen-1.0.0"; + PyRSS2Gen = buildPythonPackage (rec { + pname = "PyRSS2Gen"; + version = "1.1"; + name = "${pname}-${version}"; - src = pkgs.fetchurl { - url = "mirror://pypi/P/PyRSS2Gen/${name}.tar.gz"; + src = fetchPypi { + inherit pname version; sha256 = "4929d022713129401160fd47550d5158931e4ea6a7136b5d8dfe3b13ac16f2f0"; }; + # No tests in archive + doCheck = false; + meta = { homepage = http://www.dalkescientific.om/Python/PyRSS2Gen.html; description = "Library for generating RSS 2.0 feeds"; @@ -22443,6 +22176,23 @@ in { }; }; + rednose = buildPythonPackage rec { + name = "rednose-${version}"; + version = "1.2.1"; + + src = pkgs.fetchurl { + url = "mirror://pypi/r/rednose/${name}.tar.gz"; + sha256 = "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"; + }; + + meta = { + description = "A python nose plugin adding color to console results."; + }; + + buildInputs = with self; [ nose six ]; + propagatedBuildInputs = with self; [ colorama termstyle ]; + }; + reikna = callPackage ../development/python-modules/reikna { }; repocheck = buildPythonPackage rec { @@ -22643,8 +22393,7 @@ in { homepage = "https://github.com/goinnn/django-multiselectfield"; }; }; - - + reviewboard = buildPythonPackage rec { name = "ReviewBoard-2.5.1.1"; @@ -24987,37 +24736,9 @@ in { rope = if isPy3k then null else self.rope; }; - sqlalchemy8 = buildPythonPackage rec { - name = "SQLAlchemy-0.8.7"; - disabled = isPy34 || isPy35; - doCheck = !isPyPy; - src = pkgs.fetchurl { - url = "mirror://pypi/S/SQLAlchemy/${name}.tar.gz"; - sha256 = "9edb47d137db42d57fd26673d6c841e189b1aeb9b566cca908962fcc8448c0bc"; - }; - preConfigure = optionalString isPy3k '' - python3 sa2to3.py --no-diffs -w lib test examples - ''; - - buildInputs = with self; [ nose mock ] - ++ stdenv.lib.optional doCheck pysqlite; - - checkPhase = '' - ${python.executable} sqla_nose.py - ''; - - meta = { - homepage = http://www.sqlalchemy.org/; - description = "A Python SQL toolkit and Object Relational Mapper"; - broken = true; - }; - }; - - sqlalchemy = self.sqlalchemy_1_0; - - sqlalchemy_1_0 = buildPythonPackage rec { + sqlalchemy = buildPythonPackage rec { name = "SQLAlchemy-${version}"; version = "1.0.15"; @@ -25044,20 +24765,20 @@ in { }; }; - sqlalchemy_imageattach = buildPythonPackage rec { - name = "SQLAlchemy-ImageAttach-${version}"; - version = "0.8.2"; - disabled = isPy33; + SQLAlchemy-ImageAttach = buildPythonPackage rec { + pname = "SQLAlchemy-ImageAttach"; + version = "1.0.0"; + name = "${pname}-${version}"; src = pkgs.fetchFromGitHub { repo = "sqlalchemy-imageattach"; - owner = "crosspop"; + owner = "dahlia"; rev = "${version}"; - sha256 = "1pqf7vk4lsvnhw169cqfyk0iz5f8n45470mdslklpi38z2fax9p0"; + sha256 = "0ba97pn5dh00qvxyjbr0mr3pilxqw5kb3a6jd4wwbsfcv6nngqig"; }; - buildInputs = with self; [ pytest webob pkgs.imagemagick nose ]; - propagatedBuildInputs = with self; [ sqlalchemy8 Wand ]; + checkInputs = with self; [ pytest Wand.imagemagick webob ]; + propagatedBuildInputs = with self; [ sqlalchemy Wand ]; checkPhase = '' cd tests @@ -25069,7 +24790,7 @@ in { doCheck = !isPyPy; # failures due to sqla version mismatch meta = { - homepage = https://github.com/crosspop/sqlalchemy-imageattach; + homepage = https://github.com/dahlia/sqlalchemy-imageattach; description = "SQLAlchemy extension for attaching images to entity objects"; license = licenses.mit; }; @@ -25946,51 +25667,7 @@ in { }; }; - tqdm = buildPythonPackage rec { - name = "tqdm-${version}"; - version = "4.8.4"; - - src = pkgs.fetchurl { - url = "mirror://pypi/t/tqdm/${name}.tar.gz"; - sha256 = "bab05f8bb6efd2702ab6c532e5e6a758a66c0d2f443e09784b73e4066e6b3a37"; - }; - - buildInputs = with self; [ nose coverage pkgs.glibcLocales flake8 ]; - propagatedBuildInputs = with self; [ matplotlib pandas ]; - - LC_ALL="en_US.UTF-8"; - - doCheck = false; # Many transient failures in performance tests and due to use of sleep - - meta = { - description = "A Fast, Extensible Progress Meter"; - homepage = https://github.com/tqdm/tqdm; - license = with licenses; [ mit ]; - }; - }; - - tqdm4 = buildPythonPackage rec { - name = "tqdm-${version}"; - version = "4.7.6"; - - src = pkgs.fetchurl { - url = "mirror://pypi/t/tqdm/${name}.tar.gz"; - sha256 = "1z801zl1y3cf6ixzw4jlpkbp9a9j92sqzs35l0jaqfq00aj1bdm0"; - }; - - buildInputs = with self; [ nose coverage pkgs.glibcLocales flake8 ]; - propagatedBuildInputs = with self; [ matplotlib pandas ]; - - LC_ALL="en_US.UTF-8"; - - doCheck = false; # Many transient failures in performance tests and due to use of sleep - - meta = { - description = "A Fast, Extensible Progress Meter"; - homepage = https://github.com/tqdm/tqdm; - license = with licenses; [ mit ]; - }; - }; + tqdm = callPackage ../development/python-modules/tqdm { }; smmap = buildPythonPackage rec { name = "smmap-0.9.0"; @@ -26350,47 +26027,7 @@ in { }; }; - twisted = buildPythonPackage rec { - - name = "Twisted-${version}"; - version = "16.4.1"; - src = pkgs.fetchurl { - url = "mirror://pypi/T/Twisted/${name}.tar.bz2"; - sha256 = "1d8d73f006c990744effb35588359fd44d43608649ac0b6b7edc71176e88e816"; - }; - - propagatedBuildInputs = with self; [ zope_interface ]; - - # Patch t.p._inotify to point to libc. Without this, - # twisted.python.runtime.platform.supportsINotify() == False - patchPhase = optionalString stdenv.isLinux '' - substituteInPlace twisted/python/_inotify.py --replace \ - "ctypes.util.find_library('c')" "'${stdenv.glibc.out}/lib/libc.so.6'" - ''; - - # Generate Twisted's plug-in cache. Twisted users must do it as well. See - # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3 - # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for - # details. - postInstall = "$out/bin/twistd --help > /dev/null"; - - checkPhase = '' - ${python.interpreter} -m unittest discover -s twisted/test - ''; - # Tests require network - doCheck = false; - - meta = { - homepage = http://twistedmatrix.com/; - description = "Twisted, an event-driven networking engine written in Python"; - longDescription = '' - Twisted is an event-driven networking engine written in Python - and licensed under the MIT license. - ''; - license = licenses.mit; - maintainers = [ ]; - }; - }; + twisted = callPackage ../development/python-modules/twisted { }; tzlocal = buildPythonPackage rec { name = "tzlocal-1.2.2"; @@ -26992,28 +26629,10 @@ EOF websockets = callPackage ../development/python-modules/websockets { }; - Wand = buildPythonPackage rec { - pname = "Wand"; - version = "0.4.4"; - name = "${pname}-${version}"; - - src = pkgs.fetchurl { - url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; - sha256 = "28e0454c9d16d69c5d5034918d96320d8f9f1377b4fdaf4944eec2f938c74704"; - }; - - buildInputs = with self; [ pkgs.imagemagick pytest psutil memory_profiler pytest_xdist ]; - - # No tests - doCheck = false; - meta = { - description = "Ctypes-based simple MagickWand API binding for Python"; - homepage = http://wand-py.org/; - platforms = platforms.all; - }; + Wand = callPackage ../development/python-modules/Wand { + imagemagick = pkgs.imagemagickBig; }; - wcwidth = buildPythonPackage rec { name = "wcwidth-${version}"; version = "0.1.6"; @@ -27215,6 +26834,8 @@ EOF sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml"; }; + disabled = isPy3k; + propagatedBuildInputs = with self; [twisted dateutil]; meta = { @@ -31773,31 +31394,7 @@ EOF ''; }; - txaio = buildPythonPackage rec { - name = "${pname}-${version}"; - pname = "txaio"; - version = "2.5.2"; - - meta = { - description = "Utilities to support code that runs unmodified on Twisted and asyncio."; - homepage = "https://github.com/crossbario/txaio"; - license = licenses.mit; - maintainers = with maintainers; [ nand0p ]; - platforms = platforms.all; - }; - - buildInputs = with self; [ pytest mock ]; - propagatedBuildInputs = with self; [ six twisted ]; - - checkPhase = '' - py.test -k "not test_sdist" - ''; - - src = pkgs.fetchurl { - url = "mirror://pypi/t/${pname}/${name}.tar.gz"; - sha256 = "321d441b336447b72dbe81a4d73470414454baf0543ec701fcfecbf4dcbda0fe"; - }; - }; + txaio = callPackage ../development/python-modules/txaio { }; ramlfications = buildPythonPackage rec { name = "${pname}-${version}"; @@ -31842,28 +31439,7 @@ EOF }; }; - autobahn = buildPythonPackage rec { - name = "${pname}-${version}"; - pname = "autobahn"; - version = "0.16.0"; - src = pkgs.fetchurl { - url = "mirror://pypi/a/${pname}/${name}.tar.gz"; - sha256 = "1158ml8h3g0vlsgw2jmy579glbg7dn0mjij8xibdl509b8qv9p51"; - }; - buildInputs = with self; [ unittest2 mock pytest_29 trollius ]; - propagatedBuildInputs = with self; [ six twisted txaio ]; - checkPhase = '' - py.test $out - ''; - - meta = { - description = "WebSocket and WAMP in Python for Twisted and asyncio."; - homepage = "http://crossbar.io/autobahn"; - license = licenses.mit; - maintainers = with maintainers; [ nand0p ]; - platforms = platforms.all; - }; - }; + autobahn = callPackage ../development/python-modules/autobahn { }; jsonref = buildPythonPackage rec { name = "${pname}-${version}"; @@ -32201,6 +31777,8 @@ EOF }; }; + zxcvbn-python = callPackage ../development/python-modules/zxcvbn-python { }; + incremental = callPackage ../development/python-modules/incremental { }; treq = callPackage ../development/python-modules/treq { };