From 33dc8ced657188aeb3f1a28ac5cdff107f99b81d Mon Sep 17 00:00:00 2001 From: Raymond Gauthier Date: Wed, 30 Aug 2017 22:55:53 -0400 Subject: [PATCH 001/138] vscode-extension-ms-vscode-cpptools: Init at 0.12.3 --- .../vscode-extensions/cpptools/default.nix | 128 ++++++++++++++++++ .../vscode-cpptools-0-12-3-package-json.patch | 82 +++++++++++ pkgs/misc/vscode-extensions/default.nix | 4 +- 3 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 pkgs/misc/vscode-extensions/cpptools/default.nix create mode 100644 pkgs/misc/vscode-extensions/cpptools/vscode-cpptools-0-12-3-package-json.patch diff --git a/pkgs/misc/vscode-extensions/cpptools/default.nix b/pkgs/misc/vscode-extensions/cpptools/default.nix new file mode 100644 index 000000000000..87c782222fc5 --- /dev/null +++ b/pkgs/misc/vscode-extensions/cpptools/default.nix @@ -0,0 +1,128 @@ +{ stdenv, lib, fetchurl, vscode-utils, unzip, dos2unix, mono46, clang-tools, writeScript +, gdbUseFixed ? true, gdb # The gdb default setting will be fixed to specified. Use version from `PATH` otherwise. +}: + +assert gdbUseFixed -> null != gdb; + +/* + Note that this version of the extension still has some nix specific issues + which could not be fixed merely by patching (inside a C# dll). + + In particular, the debugger requires either gnome-terminal or xterm. However + instead of looking for the terminal executable in `PATH`, for any linux platform + the dll uses an hardcoded path to one of these. + + So, in order for debugging to work properly, you merely need to create symlinks + to one of these terminals at the appropriate location. + + The good news is the the utility library is open source and with some effort + we could build a patched version ourselves. See: + + + + Also, the extension should eventually no longer require an external terminal. See: + + + + Once the symbolic link temporary solution taken, everything shoud run smootly. +*/ + +let + gdbDefaultsTo = if gdbUseFixed then "${gdb}/bin/gdb" else "gdb"; + + langComponentBinaries = stdenv.mkDerivation { + name = "cpptools-language-component-binaries"; + + src = fetchurl { + url = https://download.visualstudio.microsoft.com/download/pr/11151953/d3cc8b654bffb8a2f3896d101f3c3155/Bin_Linux.zip; + sha256 = "12qbxsrdc73cqjb84xdck1xafzhfkcyn6bqbpcy1bxxr3b7hxbii"; + }; + + buildInputs = [ unzip ]; + + patchPhase = '' + elfInterpreter="${stdenv.glibc.out}/lib/ld-linux-x86-64.so.2" + patchelf --set-interpreter "$elfInterpreter" ./Microsoft.VSCode.CPP.Extension.linux + patchelf --set-interpreter "$elfInterpreter" ./Microsoft.VSCode.CPP.IntelliSense.Msvc.linux + chmod a+x ./Microsoft.VSCode.CPP.Extension.linux ./Microsoft.VSCode.CPP.IntelliSense.Msvc.linux + ''; + + installPhase = '' + mkdir -p "$out/bin" + find . -mindepth 1 -maxdepth 1 | xargs cp -a -t "$out/bin" + ''; + }; + + cpptoolsJsonFile = fetchurl { + url = https://download.visualstudio.microsoft.com/download/pr/11070848/7b97d6724d52cae8377c61bb4601c989/cpptools.json; + sha256 = "124f091aic92rzbg2vg831y22zr5wi056c1kh775djqs3qv31ja6"; + }; + + + + openDebugAD7Script = writeScript "OpenDebugAD7" '' + #!${stdenv.shell} + BIN_DIR="$(cd "$(dirname "$0")" && pwd -P)" + ${if gdbUseFixed + then '' + export PATH=''${PATH}''${PATH:+:}${gdb}/bin + '' + else ""} + ${mono46}/bin/mono $BIN_DIR/bin/OpenDebugAD7.exe $* + ''; +in + +vscode-utils.buildVscodeMarketplaceExtension { + mktplcRef = { + name = "cpptools"; + publisher = "ms-vscode"; + version = "0.12.3"; + sha256 = "1dcqy54n1w29xhbvxscd41hdrbdwar6g12zx02f6kh2f1kw34z5z"; + }; + + buildInputs = [ + dos2unix + ]; + + prePatch = '' + dos2unix package.json + ''; + + patches = [ + ./vscode-cpptools-0-12-3-package-json.patch + ]; + + postPatch = '' + # Patch `packages.json` so that nix's *gdb* is used as default value for `miDebuggerPath`. + substituteInPlace "./package.json" \ + --replace "\"default\": \"/usr/bin/gdb\"" "\"default\": \"${gdbDefaultsTo}\"" + + # Prevent download/install of extensions + touch "./install.lock" + + # Move unused files out of the way. + mv ./debugAdapters/bin/OpenDebugAD7.exe.config ./debugAdapters/bin/OpenDebugAD7.exe.config.unused + + # Bring the `cpptools.json` file at the root of the package, same as the extension would do. + cp -p "${cpptoolsJsonFile}" "./cpptools.json" + + # Combining the language component binaries as part of our package. + find "${langComponentBinaries}/bin" -mindepth 1 -maxdepth 1 | xargs cp -p -t "./bin" + + # Mono runtimes from nix package (used by generated `OpenDebugAD7`). + rm "./debugAdapters/OpenDebugAD7" + cp -p "${openDebugAD7Script}" "./debugAdapters/OpenDebugAD7" + + # Clang-format from nix package. + mkdir -p "./LLVM" + find "${clang-tools}" -mindepth 1 -maxdepth 1 | xargs ln -s -t "./LLVM" + ''; + + meta = with stdenv.lib; { + license = licenses.unfree; + maintainer = [ maintainers.jraygauthier ]; + # A 32 bit linux would also be possible with some effort (specific download of binaries + + # patching of the elf files with 32 bit interpreter). + platforms = [ "x86_64-linux" ]; + }; +} \ No newline at end of file diff --git a/pkgs/misc/vscode-extensions/cpptools/vscode-cpptools-0-12-3-package-json.patch b/pkgs/misc/vscode-extensions/cpptools/vscode-cpptools-0-12-3-package-json.patch new file mode 100644 index 000000000000..1873963f460d --- /dev/null +++ b/pkgs/misc/vscode-extensions/cpptools/vscode-cpptools-0-12-3-package-json.patch @@ -0,0 +1,82 @@ +diff --git a/package.json b/package.json +index 518e839..1c17c35 100644 +--- a/package.json ++++ b/package.json +@@ -37,7 +37,26 @@ + "Linters" + ], + "activationEvents": [ +- "*" ++ "onLanguage:cpp", ++ "onLanguage:c", ++ "onCommand:extension.pickNativeProcess", ++ "onCommand:extension.pickRemoteNativeProcess", ++ "onCommand:extension.provideInitialConfigurations_cppvsdbg", ++ "onCommand:extension.provideInitialConfigurations_cppdbg", ++ "onCommand:C_Cpp.ConfigurationEdit", ++ "onCommand:C_Cpp.ConfigurationSelect", ++ "onCommand:C_Cpp.SwitchHeaderSource", ++ "onCommand:C_Cpp.UnloadLanguageServer", ++ "onCommand:C_Cpp.Navigate", ++ "onCommand:C_Cpp.GoToDeclaration", ++ "onCommand:C_Cpp.PeekDeclaration", ++ "onCommand:C_Cpp.ToggleErrorSquiggles", ++ "onCommand:C_Cpp.ToggleIncludeFallback", ++ "onCommand:C_Cpp.ShowReleaseNotes", ++ "onCommand:C_Cpp.ResetDatabase", ++ "workspaceContains:.vscode/c_cpp_properties.json", ++ "onDebug:cppdbg", ++ "onDebug:cppvsdbg" + ], + "main": "./out/src/main", + "contributes": { +@@ -281,8 +300,7 @@ + "cpp" + ] + }, +- "runtime": "node", +- "program": "./out/src/Debugger/Proxy/debugProxy.js", ++ "program": "./debugAdapters/OpenDebugAD7", + "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217", + "variables": { + "pickProcess": "extension.pickNativeProcess", +@@ -722,7 +740,29 @@ + } + } + } +- } ++ }, ++ "configurationSnippets": [ ++ { ++ "label": "C/C++: (gdb) Launch", ++ "description": "Launch with gdb.", ++ "bodyText": "{\n\t\"name\": \"(gdb) Launch\",\n\t\"type\": \"cppdbg\",\n\t\"request\": \"launch\",\n\t\"program\": \"enter program name, for example \\${workspaceRoot}/a.out\",\n\t\"args\": [],\n\t\"stopAtEntry\": false,\n\t\"cwd\": \"\\${workspaceRoot}\",\n\t\"environment\": [],\n\t\"externalConsole\": true,\n\t\"MIMode\": \"gdb\",\n\t\"setupCommands\": [\n\t {\n\t \"description\": \"Enable pretty-printing for gdb\",\n\t \"text\": \"-enable-pretty-printing\",\n\t \"ignoreFailures\": true\n\t }\n\t]\n}" ++ }, ++ { ++ "label": "C/C++: (gdb) Attach", ++ "description": "Attach with gdb.", ++ "bodyText": "{ \n\t\"name\": \"(gdb) Attach\",\n\t\"type\": \"cppdbg\",\n\t\"request\": \"attach\",\n\t\"program\": \"enter program name, for example \\${workspaceRoot}/a.out\",\n\t\"processId\": \"\\${command:pickProcess}\",\n\t\"MIMode\": \"gdb\"\n}" ++ }, ++ { ++ "label": "C/C++: (gdb) Pipe Launch", ++ "description": "Pipe Launch with gdb.", ++ "bodyText": "{\n\t\"name\": \"(gdb) Pipe Launch\",\n\t\"type\": \"cppdbg\",\n\t\"request\": \"launch\",\n\t\"program\": \"enter program name, for example \\${workspaceRoot}/a.out\",\n\t\"args\": [],\n\t\"stopAtEntry\": false,\n\t\"cwd\": \"\\${workspaceRoot}\",\n\t\"environment\": [],\n\t\"externalConsole\": true,\n\t\"pipeTransport\": {\n\t\t\"debuggerPath\": \"/usr/bin/gdb\",\n\t\t\"pipeProgram\": \"/usr/bin/ssh\",\n\t\t\"pipeArgs\": [],\n\t\t\"pipeCwd\": \"\"\n\t},\n\t\"MIMode\": \"gdb\",\n\t\"setupCommands\": [\n\t {\n\t \"description\": \"Enable pretty-printing for gdb\",\n\t \"text\": \"-enable-pretty-printing\",\n\t \"ignoreFailures\": true\n\t }\n\t]\n}" ++ }, ++ { ++ "label": "C/C++: (gdb) Pipe Attach", ++ "description": "Pipe Attach with gdb.", ++ "bodyText": "{\n\t\"name\": \"(gdb) Pipe Attach\",\n\t\"type\": \"cppdbg\",\n\t\"request\": \"attach\",\n\t\"program\": \"enter program name, for example \\${workspaceRoot}/a.out\",\n\t\"processId\": \"\\${command:pickRemoteProcess}\",\n\t\"pipeTransport\": {\n\t\t\"debuggerPath\": \"/usr/bin/gdb\",\n\t\t\"pipeProgram\": \"/usr/bin/ssh\",\n\t\t\"pipeArgs\": [],\n\t\t\"pipeCwd\": \"\"\n\t},\n\t\"MIMode\": \"gdb\"\n}" ++ } ++ ] + }, + { + "type": "cppvsdbg", +@@ -741,7 +781,7 @@ + "variables": { + "pickProcess": "extension.pickNativeProcess" + }, +- "initialConfigurations": "extension.provideInitialConfigurations_cppvsdbg", ++ "initialConfigurations": "", + "configurationAttributes": { + "launch": { + "required": [ diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix index d357c43abd85..8047e29ad558 100644 --- a/pkgs/misc/vscode-extensions/default.nix +++ b/pkgs/misc/vscode-extensions/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, vscode-utils }: +{ stdenv, lib, fetchurl, callPackage, vscode-utils }: let inherit (vscode-utils) buildVscodeExtension buildVscodeMarketplaceExtension; @@ -22,4 +22,6 @@ rec { license = licenses.mit; }; }; + + ms-vscode.cpptools = callPackage ./cpptools {}; } \ No newline at end of file From 160e914f502df0740a7e04cd477ae0b9d109da58 Mon Sep 17 00:00:00 2001 From: Clemens Fruhwirth Date: Thu, 26 Oct 2017 22:47:21 +0200 Subject: [PATCH 002/138] python-trezor: Move mnemonic dependency to propagatedBuildInputs --- pkgs/development/python-modules/trezor/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/trezor/default.nix b/pkgs/development/python-modules/trezor/default.nix index c473403f53d5..cb4b63ade81d 100644 --- a/pkgs/development/python-modules/trezor/default.nix +++ b/pkgs/development/python-modules/trezor/default.nix @@ -12,9 +12,9 @@ buildPythonPackage rec { sha256 = "6bdb69fc125ba705854e21163be6c7da3aa17c2a3a84f40b6d8a3f6e4a8cb314"; }; - propagatedBuildInputs = [ protobuf hidapi requests ]; + propagatedBuildInputs = [ protobuf hidapi requests mnemonic ]; - buildInputs = [ ecdsa mnemonic ]; + buildInputs = [ ecdsa ]; # There are no actual tests: "ImportError: No module named tests" doCheck = false; From 9711aac642b184a63498dd4bbf8a572721be53c8 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Fri, 27 Oct 2017 23:05:12 +0000 Subject: [PATCH 003/138] nixUnstable: rename to nix-unstable --- pkgs/tools/package-management/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 4359682d96a0..f41e002a7661 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -160,7 +160,7 @@ in rec { }) // { perl-bindings = nixStable; }; nixUnstable = (lib.lowPrio (common rec { - name = "nix-1.12${suffix}"; + name = "nix-unstable-1.12${suffix}"; suffix = "pre5663_c7af84ce"; src = fetchFromGitHub { owner = "NixOS"; From 65d115dd7decad85a04bea563c6a1b9ff9075adb Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Sat, 28 Oct 2017 13:42:50 +0100 Subject: [PATCH 004/138] python.pkgs.libagent: add missing unidecode lib --- pkgs/development/python-modules/libagent/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/libagent/default.nix b/pkgs/development/python-modules/libagent/default.nix index 5318142fe706..84c0a613854e 100644 --- a/pkgs/development/python-modules/libagent/default.nix +++ b/pkgs/development/python-modules/libagent/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchPypi, buildPythonPackage, ed25519, ecdsa -, semver, keepkey, trezor, mnemonic, ledgerblue +, semver, keepkey, trezor, mnemonic, ledgerblue, unidecode }: buildPythonPackage rec { @@ -17,6 +17,10 @@ buildPythonPackage rec { trezor mnemonic ledgerblue ]; + propagatedBuildInputs = [ + unidecode + ]; + meta = with stdenv.lib; { description = "Using hardware wallets as SSH/GPG agent"; homepage = https://github.com/romanz/trezor-agent; From b831d3845f885ebb102ec0d63d4b664fbdfd10f8 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 14:59:04 +0800 Subject: [PATCH 005/138] pythonPackages.clientform: Remove package From upstream: This functionality provided by this module is now part of mechanize. I don't intend to make further standalone releases of ClientForm. --- pkgs/top-level/python-packages.nix | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d83ac0df11b0..4f7db48b7d96 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2752,24 +2752,6 @@ in { cligj = callPackage ../development/python-modules/cligj { }; - clientform = buildPythonPackage (rec { - name = "clientform-0.2.10"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "mirror://pypi/C/ClientForm/ClientForm-0.2.10.tar.gz"; - sha256 = "0dydh3i1sx7rrj6d0gj375wkjpiivm7jjlsimw6hmwv4ck7yf1wm"; - }; - - meta = { - homepage = http://wwwsearch.sourceforge.net/ClientForm/; - - license = "bsd"; - - description = "Python module for handling HTML forms on the client side"; - }; - }); - /* There is a project called "closure-linter" on PyPI that is the same as this, but it does not appear to be owned by Google. So we're pulling from Google's GitHub repo instead. */ @@ -11299,7 +11281,7 @@ in { sha256 = "0rki9nl4y42q694parafcsdcdqvkdjckrbg6n0691302lfsrkyfl"; }; - propagatedBuildInputs = with self; [ clientform html5lib ]; + propagatedBuildInputs = with self; [ html5lib ]; doCheck = false; From e78864e3b7db45d4b803fb816781ec7ce904aedc Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 15:21:17 +0800 Subject: [PATCH 006/138] pythonPackages.skype4py: Remove package, not updated in years and no dependent packages --- pkgs/top-level/python-packages.nix | 33 ------------------------------ 1 file changed, 33 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4f7db48b7d96..933635931887 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19613,39 +19613,6 @@ in { }; }; - - skype4py = buildPythonPackage (rec { - name = "Skype4Py-1.0.32.0"; - disabled = isPy3k || isPyPy; - - src = pkgs.fetchurl { - url = mirror://sourceforge/skype4py/Skype4Py-1.0.32.0.tar.gz; - sha256 = "0cmkrv450wa8v50bng5dflpwkl5c1p9pzysjkb2956w5kvwh6f5b"; - }; - - unpackPhase = '' - tar xf $src - find . -type d -exec chmod +rx {} \; - sourceRoot=`pwd`/`ls -d S*` - ''; - - # error: invalid command 'test' - doCheck = false; - - propagatedBuildInputs = with self; [ pkgs.xorg.libX11 dbus-python pygobject2 ]; - - meta = { - description = "High-level, platform independent Skype API wrapper for Python"; - - # The advertisement says https://developer.skype.com/wiki/Skype4Py - # but that url does not work. This following web page points to the - # download link and has some information about the package. - homepage = http://pypi.python.org/pypi/Skype4Py/1.0.32.0; - broken = true; - license = "BSD"; - }; - }); - smartdc = buildPythonPackage rec { name = "smartdc-0.1.12"; From 892a0005ff299e2dc561376f74af9e56476b71e5 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 15:29:10 +0800 Subject: [PATCH 007/138] pythonPackages.pyxattr: 0.5.1 -> 0.6.0 --- .../python-modules/pyxattr/default.nix | 26 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 20 +------------- 2 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 pkgs/development/python-modules/pyxattr/default.nix diff --git a/pkgs/development/python-modules/pyxattr/default.nix b/pkgs/development/python-modules/pyxattr/default.nix new file mode 100644 index 000000000000..558dc37a394f --- /dev/null +++ b/pkgs/development/python-modules/pyxattr/default.nix @@ -0,0 +1,26 @@ +{ lib +, pkgs +, fetchPypi +, buildPythonPackage +}: + +buildPythonPackage rec { + pname = "pyxattr"; + version = "0.6.0"; + name = pname + "-" + version; + + src = fetchPypi { + inherit pname version; + sha256 = "1a3fqjlgbzq5hmc3yrnxxxl8nyn3rz2kfn17svbsahaq4gj0xl09"; + }; + + # IOError: [Errno 95] Operation not supported (expected) + doCheck = false; + + buildInputs = with pkgs; [ attr ]; + + meta = with lib; { + description = "A Python extension module which gives access to the extended attributes for filesystem objects available in some operating systems"; + license = licenses.lgpl21Plus; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 933635931887..1e90fb1ae723 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17612,25 +17612,7 @@ in { pywinrm = callPackage ../development/python-modules/pywinrm { }; - pyxattr = buildPythonPackage (rec { - name = "pyxattr-0.5.1"; - - src = pkgs.fetchurl { - url = "https://github.com/downloads/iustin/pyxattr/${name}.tar.gz"; - sha256 = "0jmkffik6hdzs7ng8c65bggss2ai40nm59jykswdf5lpd36cxddq"; - }; - - # error: invalid command 'test' - doCheck = false; - - buildInputs = with self; [ pkgs.attr ]; - - meta = { - description = "A Python extension module which gives access to the extended attributes for filesystem objects available in some operating systems"; - license = licenses.lgpl21Plus; - }; - }); - + pyxattr = callPackage ../development/python-modules/pyxattr { }; pyaml = buildPythonPackage (rec { name = "pyaml-15.02.1"; From 286ca78bf77dec222137d83f900a67759b04d1f2 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 15:43:04 +0800 Subject: [PATCH 008/138] pythonPackages.fuse: Move to python-modules --- .../python-modules/python-fuse/default.nix | 27 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 20 +------------- 2 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 pkgs/development/python-modules/python-fuse/default.nix diff --git a/pkgs/development/python-modules/python-fuse/default.nix b/pkgs/development/python-modules/python-fuse/default.nix new file mode 100644 index 000000000000..d9debce6aecb --- /dev/null +++ b/pkgs/development/python-modules/python-fuse/default.nix @@ -0,0 +1,27 @@ +{ lib +, pkgconfig +, fetchurl +, fuse +, buildPythonPackage +, isPy3k +}: + +buildPythonPackage rec { + baseName = "fuse"; + version = "0.2.1"; + name = "${baseName}-${version}"; + disabled = isPy3k; + + src = fetchurl { + url = "mirror://sourceforge/fuse/fuse-python-${version}.tar.gz"; + sha256 = "06rmp1ap6flh64m81j0n3a357ij2vj9zwcvvw0p31y6hz1id9shi"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ fuse ]; + + meta = { + description = "Python bindings for FUSE"; + license = lib.licenses.lgpl21; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1e90fb1ae723..2d4604e1a748 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9253,25 +9253,7 @@ in { }; }; - fuse = buildPythonPackage (rec { - baseName = "fuse"; - version = "0.2.1"; - name = "${baseName}-${version}"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "mirror://sourceforge/fuse/fuse-python-${version}.tar.gz"; - sha256 = "06rmp1ap6flh64m81j0n3a357ij2vj9zwcvvw0p31y6hz1id9shi"; - }; - - nativeBuildInputs = [ pkgs.pkgconfig ]; - buildInputs = with self; [ pkgs.fuse ]; - - meta = { - description = "Python bindings for FUSE"; - license = licenses.lgpl21; - }; - }); + fuse = callPackage ../development/python-modules/python-fuse { }; fusepy = buildPythonPackage rec { name = "fusepy-2.0.4"; From 552922cf538f2ab77c5c950b8abb3bda6a4a8bb2 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 15:49:35 +0800 Subject: [PATCH 009/138] pythonPackages.pylibacl: 0.5.1 -> 0.5.3 --- .../python-modules/pylibacl/default.nix | 27 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 20 +------------- 2 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 pkgs/development/python-modules/pylibacl/default.nix diff --git a/pkgs/development/python-modules/pylibacl/default.nix b/pkgs/development/python-modules/pylibacl/default.nix new file mode 100644 index 000000000000..97fbe28e50d7 --- /dev/null +++ b/pkgs/development/python-modules/pylibacl/default.nix @@ -0,0 +1,27 @@ +{ lib +, buildPythonPackage +, fetchPypi +, pkgs +}: + +buildPythonPackage rec { + pname = "pylibacl"; + version = "0.5.3"; + name = pname + "-" + version; + + src = fetchPypi { + inherit pname version; + sha256 = "0c3xw1s5bh6jnsc0wwyxnn6kn6x6rpbmmi05ap1f81fyqlgrzgj0"; + }; + + # ERROR: testExtended (tests.test_acls.AclExtensions) + # IOError: [Errno 0] Error + doCheck = false; + + buildInputs = with pkgs; [ acl ]; + + meta = { + description = "A Python extension module for POSIX ACLs, it can be used to query, list, add, and remove ACLs from files and directories under operating systems that support them"; + license = lib.licenses.lgpl21Plus; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2d4604e1a748..a8e0e704ef53 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -16986,25 +16986,7 @@ in { }; }; - pylibacl = buildPythonPackage (rec { - name = "pylibacl-0.5.1"; - - src = pkgs.fetchurl { - url = "https://github.com/downloads/iustin/pylibacl/${name}.tar.gz"; - sha256 = "1idks7j9bn62xzsaxkvhl7bdq6ws8kv8aa0wahfh7724qlbbcf1k"; - }; - - # ERROR: testExtended (tests.test_acls.AclExtensions) - # IOError: [Errno 0] Error - doCheck = false; - - buildInputs = with self; [ pkgs.acl ]; - - meta = { - description = "A Python extension module for POSIX ACLs, it can be used to query, list, add, and remove ACLs from files and directories under operating systems that support them"; - license = licenses.lgpl21Plus; - }; - }); + pylibacl = callPackage ../development/python-modules/pylibacl { }; pyliblo = buildPythonPackage rec { name = "pyliblo-${version}"; From 49a1221562f84ec6e1aa2b41eedeac376defb558 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 19:21:26 +0800 Subject: [PATCH 010/138] salut-a-toi: Move pythonPackages dependencies not required by other packages into salut-a-toi derivation --- .../salut-a-toi/default.nix | 20 ++++-- .../salut-a-toi/requirements.nix | 67 +++++++++++++++++++ .../python-modules/pyfeed/default.nix | 23 ------- pkgs/top-level/python-packages.nix | 39 ----------- 4 files changed, 81 insertions(+), 68 deletions(-) create mode 100644 pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix delete mode 100644 pkgs/development/python-modules/pyfeed/default.nix 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 4f360c831a25..9ff1799ddd2d 100644 --- a/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix +++ b/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix @@ -1,7 +1,12 @@ -{stdenv, fetchurl, python27Packages, file }: +{ stdenv, fetchurl, python27Packages, file }: let inherit (python27Packages) python; + requirements = (import ./requirements.nix { + inherit stdenv fetchurl; + pythonPackages = python27Packages; + }); + in stdenv.mkDerivation rec { name = "salut-a-toi"; @@ -13,12 +18,15 @@ in sha256 = "0kn9403n8fpzl0hsb9kkzicsmzq2fjl627l31yykbqzc4nsr780d"; }; - buildInputs = with python27Packages; + buildInputs = with python27Packages; [ python twisted urwid wxPython pygobject2 - wokkel dbus-python pyfeed wrapPython setuptools file + dbus-python wrapPython setuptools file pycrypto pyxdg - ]; + ] ++ (with requirements; [ + pyfeed + wokkel + ]); configurePhase = '' sed -i "/use_setuptools/d" setup.py @@ -26,7 +34,7 @@ in sed -e "1aexport PATH=\"\$PATH\":\"$out/bin\":\"${python27Packages.twisted}/bin\"" -i src/sat.sh sed -e "1aexport PYTHONPATH=\"\$PYTHONPATHPATH\":\"$PYTHONPATH\":"$out/${python.sitePackages}"" -i src/sat.sh - echo 'import wokkel.muc' | python + echo 'import wokkel.muc' | python ''; buildPhase = '' @@ -39,7 +47,7 @@ in for i in "$out/bin"/*; do head -n 1 "$i" | grep -E '[/ ]python( |$)' && { wrapProgram "$i" --prefix PYTHONPATH : "$PYTHONPATH:$out/${python.sitePackages}" - } || true + } || true done ''; diff --git a/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix b/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix new file mode 100644 index 000000000000..1a6811182453 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix @@ -0,0 +1,67 @@ +{ fetchurl +, stdenv +, pythonPackages +}: + +let + buildPythonPackage = pythonPackages.buildPythonPackage; + + xe = buildPythonPackage rec { + url = "http://www.blarg.net/%7Esteveha/xe-0.7.4.tar.gz"; + name = stdenv.lib.nameFromURL url ".tar"; + src = fetchurl { + inherit url; + sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42"; + }; + + # error: invalid command 'test' + doCheck = false; + + meta = { + homepage = "http://home.blarg.net/~steveha/xe.html"; + description = "XML elements"; + }; + }; + +in { + + pyfeed = (buildPythonPackage rec { + url = "http://www.blarg.net/%7Esteveha/pyfeed-0.7.4.tar.gz"; + + name = stdenv.lib.nameFromURL url ".tar"; + + src = fetchurl { + inherit url; + sha256 = "1h4msq573m7wm46h3cqlx4rsn99f0l11rhdqgf50lv17j8a8vvy1"; + }; + + propagatedBuildInputs = [ xe ]; + + # error: invalid command 'test' + doCheck = false; + + meta = with stdenv.lib; { + homepage = "http://home.blarg.net/~steveha/pyfeed.html"; + description = "Tools for syndication feeds"; + }; + + }); + + wokkel = buildPythonPackage (rec { + url = "http://wokkel.ik.nu/releases/0.7.0/wokkel-0.7.0.tar.gz"; + name = stdenv.lib.nameFromURL url ".tar"; + src = fetchurl { + inherit url; + sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml"; + }; + + propagatedBuildInputs = with pythonPackages; [twisted dateutil]; + + meta = with stdenv.lib; { + description = "Some (mainly XMPP-related) additions to twisted"; + homepage = "http://wokkel.ik.nu/"; + license = licenses.mit; + }; + }); + +} diff --git a/pkgs/development/python-modules/pyfeed/default.nix b/pkgs/development/python-modules/pyfeed/default.nix deleted file mode 100644 index a1591037fb5a..000000000000 --- a/pkgs/development/python-modules/pyfeed/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ stdenv, buildPythonPackage, fetchurl -, xe }: - -buildPythonPackage rec { - url = "http://www.blarg.net/%7Esteveha/pyfeed-0.7.4.tar.gz"; - - name = stdenv.lib.nameFromURL url ".tar"; - - src = fetchurl { - inherit url; - sha256 = "1h4msq573m7wm46h3cqlx4rsn99f0l11rhdqgf50lv17j8a8vvy1"; - }; - - propagatedBuildInputs = [ xe ]; - - # error: invalid command 'test' - doCheck = false; - - meta = with stdenv.lib; { - homepage = "http://home.blarg.net/~steveha/pyfeed.html"; - description = "Tools for syndication feeds"; - }; -} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a8e0e704ef53..1311e0491cd4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -16258,8 +16258,6 @@ in { }; }; - pyfeed = callPackage ../development/python-modules/pyfeed { }; - pyfftw = callPackage ../development/python-modules/pyfftw { }; pyfiglet = callPackage ../development/python-modules/pyfiglet { }; @@ -21547,26 +21545,6 @@ EOF widgetsnbextension = callPackage ../development/python-modules/widgetsnbextension { }; - - wokkel = buildPythonPackage (rec { - url = "http://wokkel.ik.nu/releases/0.7.0/wokkel-0.7.0.tar.gz"; - name = nameFromURL url ".tar"; - src = pkgs.fetchurl { - inherit url; - sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml"; - }; - - disabled = isPy3k; - - propagatedBuildInputs = with self; [twisted dateutil]; - - meta = { - description = "Some (mainly XMPP-related) additions to twisted"; - homepage = "http://wokkel.ik.nu/"; - license = licenses.mit; - }; - }); - magic-wormhole = callPackage ../development/python-modules/magic-wormhole { }; wsgiproxy2 = buildPythonPackage rec { @@ -21607,23 +21585,6 @@ EOF propagatedBuildInputs = with self; [ eventlib application ]; }; - xe = buildPythonPackage rec { - url = "http://www.blarg.net/%7Esteveha/xe-0.7.4.tar.gz"; - name = stdenv.lib.nameFromURL url ".tar"; - src = pkgs.fetchurl { - inherit url; - sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42"; - }; - - # error: invalid command 'test' - doCheck = false; - - meta = { - homepage = "http://home.blarg.net/~steveha/xe.html"; - description = "XML elements"; - }; - }; - xlib = buildPythonPackage (rec { name = "xlib-${version}"; version = "0.17"; From 88683da1157ea23835a83bd4ee864aa882177c72 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 21:27:15 +0800 Subject: [PATCH 011/138] pythonpackages.pymacs: Remove package, does not seem to be maintained upstream --- pkgs/top-level/python-packages.nix | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1311e0491cd4..05374eb8c54c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17006,29 +17006,6 @@ in { }; }; - pymacs = buildPythonPackage rec { - version = "0.25"; - name = "pymacs-${version}"; - disabled = isPy3k || isPyPy; - - src = pkgs.fetchurl { - url = "https://github.com/pinard/Pymacs/tarball/v${version}"; - name = "${name}.tar.gz"; - sha256 = "1hmy76c5igm95rqbld7gvk0az24smvc8hplfwx2f5rhn6frj3p2i"; - }; - - configurePhase = "make"; - - doCheck = false; - - meta = { - description = "Emacs Lisp to Python interface"; - homepage = http://pymacs.progiciels-bpi.ca; - license = licenses.gpl2; - maintainers = with maintainers; [ goibhniu ]; - }; - }; - pypcap = callPackage ../development/python-modules/pypcap {}; pyplatec = buildPythonPackage rec { From d1144c05ec0e965915cbf18196342d3dc2de9084 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 21:30:42 +0800 Subject: [PATCH 012/138] pythonpackages.ropemode: Remove outdated package, far behind upstream --- pkgs/top-level/python-packages.nix | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 05374eb8c54c..068b85668a41 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18206,25 +18206,6 @@ in { }; }; - ropemode = buildPythonPackage rec { - version = "0.2"; - name = "ropemode-${version}"; - - src = pkgs.fetchurl { - url = "mirror://pypi/r/ropemode/${name}.tar.gz"; - sha256 = "0jw6h1wvk6wk0wknqdf7s9pw76m8472jv546lqdd88jbl2scgcjl"; - }; - - propagatedBuildInputs = with self; [ rope ]; - - meta = { - description = "A plugin for performing python refactorings in emacs"; - homepage = http://rope.sf.net; - maintainers = with maintainers; [ goibhniu ]; - license = licenses.gpl2; - }; - }; - ropper = callPackage ../development/python-modules/ropper { }; routes = buildPythonPackage rec { From b9b8efc8123645d21b253fb7210f63ab5dbe9da2 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 21:31:30 +0800 Subject: [PATCH 013/138] pythonpackages.ropemacs: Remove outdated package, far behind upstream --- pkgs/top-level/python-packages.nix | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 068b85668a41..86db6ec7a289 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18187,25 +18187,6 @@ in { }; }; - ropemacs = buildPythonPackage rec { - version = "0.7"; - name = "ropemacs-${version}"; - - src = pkgs.fetchurl { - url = "mirror://pypi/r/ropemacs/${name}.tar.gz"; - sha256 = "1x5qf1drcdz9jfiiakc60kzqkb3ahsg9j902c5byf3gjfacdrmqj"; - }; - - propagatedBuildInputs = with self; [ ropemode ]; - - meta = { - description = "A plugin for performing python refactorings in emacs"; - homepage = http://rope.sf.net/ropemacs.html; - maintainers = with maintainers; [ goibhniu ]; - license = licenses.gpl2; - }; - }; - ropper = callPackage ../development/python-modules/ropper { }; routes = buildPythonPackage rec { From 8b8dd0926fe3f5ea8605813056264d4dea32ae06 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 21:33:24 +0800 Subject: [PATCH 014/138] pythonpackages.taskcoach: Remove outdated package, far behind upstream --- pkgs/top-level/python-packages.nix | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 86db6ec7a289..c3e982e173c4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -20169,36 +20169,6 @@ in { }; }; - taskcoach = buildPythonPackage rec { - name = "TaskCoach-1.3.22"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "mirror://sourceforge/taskcoach/${name}.tar.gz"; - sha256 = "1ddx56bqmh347synhgjq625ijv5hqflr0apxg0nl4jqdsqk1zmxh"; - }; - - propagatedBuildInputs = with self; [ wxPython ]; - - # I don't know why I need to add these libraries. Shouldn't they - # be part of wxPython? - postInstall = '' - libspaths=${with pkgs.xorg; pkgs.lib.makeLibraryPath [ libSM libXScrnSaver ]} - wrapProgram $out/bin/taskcoach.py \ - --prefix LD_LIBRARY_PATH : $libspaths - ''; - - # error: invalid command 'test' - doCheck = false; - - meta = { - homepage = http://taskcoach.org/; - description = "Todo manager to keep track of personal tasks and todo lists"; - license = licenses.gpl3Plus; - broken = stdenv.isDarwin; - }; - }; - taskw = buildPythonPackage rec { version = "1.0.3"; name = "taskw-${version}"; From e86b3a07d188950f2c46af7c09df9ab16c6f4aed Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 21:43:54 +0800 Subject: [PATCH 015/138] pythonpackages.ledger-autosync: Remove outdated package --- pkgs/top-level/python-packages.nix | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c3e982e173c4..de172153208a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6186,35 +6186,6 @@ in { }; }; - ledger-autosync = buildPythonPackage rec { - name = "ledger-autosync-${version}"; - version = "0.2.3"; - src = pkgs.fetchurl { - url = "mirror://pypi/l/ledger-autosync/ledger-autosync-${version}.tar.gz"; - sha256 = "f19fa66e656309825887171d84a462e64676b1cc36b62e4dd8679ff63926a469"; - }; - - propagatedBuildInputs = with self; [ ofxclient ]; - - buildInputs = with self; [ - mock - nose - # Used at runtime to translate ofx entries to the ledger - # format. In fact, user could use either ledger or hledger. - pkgs.which - pkgs.ledger ]; - - # Tests are disable since they require hledger and python-ledger - doCheck = false; - - meta = { - homepage = https://gitlab.com/egh/ledger-autosync; - description = "ledger-autosync is a program to pull down transactions from your bank and create ledger transactions for them"; - license = licenses.gpl3; - maintainers = with maintainers; [ lewo ]; - }; - }; - libsexy = callPackage ../development/python-modules/libsexy { libsexy = pkgs.libsexy; }; From e87ffaefc6207ffec6ec4a6b1aeb5e9d255d4fb6 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 21:52:26 +0800 Subject: [PATCH 016/138] anki: Depend on pythonPackages.beautifulsoup4 instead of pythonPackages.beautifulsoup --- pkgs/games/anki/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix index c5bac4db8e5b..4a531c07efd0 100644 --- a/pkgs/games/anki/default.nix +++ b/pkgs/games/anki/default.nix @@ -7,8 +7,8 @@ }: let - version = "2.0.46"; - inherit (python2Packages) python wrapPython sqlalchemy pyaudio beautifulsoup httplib2 matplotlib pyqt4; + version = "2.0.47"; + inherit (python2Packages) python wrapPython sqlalchemy pyaudio beautifulsoup4 httplib2 matplotlib pyqt4; qt4 = pyqt4.qt; in stdenv.mkDerivation rec { @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { sha256 = "01h51rbnj0r6lmjnn2vzxzaf7mxkc0azmg1v4mvf4pkpsp50a7hr"; }; - pythonPath = [ pyqt4 sqlalchemy pyaudio beautifulsoup httplib2 ] + pythonPath = [ pyqt4 sqlalchemy pyaudio beautifulsoup4 httplib2 ] ++ lib.optional plotsSupport matplotlib; buildInputs = [ python wrapPython lame mplayer libpulseaudio ]; From 12d8140a5197e855cc042db4d12010e0cb53d87b Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 21:54:48 +0800 Subject: [PATCH 017/138] pythonpackages.python_tvrage: Remove dead package --- pkgs/top-level/python-packages.nix | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index de172153208a..7cd5731cdca1 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8993,27 +8993,6 @@ in { pytorch = callPackage ../development/python-modules/pytorch { }; - python_tvrage = buildPythonPackage (rec { - version = "0.4.1"; - name = "tvrage-${version}"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/python-tvrage/python-tvrage-${version}.tar.gz"; - sha256 = "f8a530376c5cf1bc573d1945a8504c3394b228c731a3eff5100c705997a72063"; - }; - - # has mostly networking dependent tests - doCheck = false; - propagatedBuildInputs = with self; [ beautifulsoup ]; - - meta = { - homepage = https://github.com/ckreutzer/python-tvrage; - description = "Client interface for tvrage.com's XML-based api feeds"; - license = licenses.bsd3; - maintainers = with maintainers; [ domenkozar ]; - }; - }); - python2-pythondialog = buildPythonPackage rec { name = "python2-pythondialog-${version}"; version = "3.3.0"; From bb50ae9807be1ca06e801502c3449864ff6bf82a Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:03:17 +0800 Subject: [PATCH 018/138] pythonPackages.beautifulsoup: Move into pyload, no longer depended upon by any packages --- .../networking/pyload/beautifulsoup.nix | 20 +++++++++++++++++++ .../networking/pyload/default.nix | 11 ++++++++-- pkgs/top-level/python-packages.nix | 19 ------------------ 3 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 pkgs/applications/networking/pyload/beautifulsoup.nix diff --git a/pkgs/applications/networking/pyload/beautifulsoup.nix b/pkgs/applications/networking/pyload/beautifulsoup.nix new file mode 100644 index 000000000000..571df924e1f8 --- /dev/null +++ b/pkgs/applications/networking/pyload/beautifulsoup.nix @@ -0,0 +1,20 @@ +{ pythonPackages, isPy3k, pkgs }: + +pythonPackages.buildPythonPackage rec { + name = "beautifulsoup-3.2.1"; + disabled = isPy3k; + + src = pkgs.fetchurl { + url = "http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.2.1.tar.gz"; + sha256 = "1nshbcpdn0jpcj51x0spzjp519pkmqz0n0748j7dgpz70zlqbfpm"; + }; + + # error: invalid command 'test' + doCheck = false; + + meta = { + homepage = http://www.crummy.com/software/BeautifulSoup/; + license = "bsd"; + description = "Undemanding HTML/XML parser"; + }; +} diff --git a/pkgs/applications/networking/pyload/default.nix b/pkgs/applications/networking/pyload/default.nix index f8cd1ab1d00b..c331c4f287e6 100644 --- a/pkgs/applications/networking/pyload/default.nix +++ b/pkgs/applications/networking/pyload/default.nix @@ -1,5 +1,12 @@ -{ stdenv, fetchFromGitHub, fetchpatch, pythonPackages, gocr, unrar, rhino, spidermonkey }: -pythonPackages.buildPythonApplication rec { +{ stdenv, fetchFromGitHub, fetchpatch, pythonPackages, gocr, unrar, rhino, spidermonkey +, pkgs }: + +let + beautifulsoup = pythonPackages.callPackage ./beautifulsoup.nix { + inherit pythonPackages; + }; + +in pythonPackages.buildPythonApplication rec { version = "0.4.9-next"; name = "pyLoad-" + version; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 7cd5731cdca1..1bc50dc0e212 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1253,25 +1253,6 @@ in { }; }; - beautifulsoup = buildPythonPackage (rec { - name = "beautifulsoup-3.2.1"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.2.1.tar.gz"; - sha256 = "1nshbcpdn0jpcj51x0spzjp519pkmqz0n0748j7dgpz70zlqbfpm"; - }; - - # error: invalid command 'test' - doCheck = false; - - meta = { - homepage = http://www.crummy.com/software/BeautifulSoup/; - license = "bsd"; - description = "Undemanding HTML/XML parser"; - }; - }); - beautifulsoup4 = callPackage ../development/python-modules/beautifulsoup4 { }; beaker = buildPythonPackage rec { From ab66d6ea229cb4796628de824d22f342efe51590 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:11:23 +0800 Subject: [PATCH 019/138] pythonpackages.rtmidi: Remove outdated package --- pkgs/top-level/python-packages.nix | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1bc50dc0e212..c8f33b87715e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7716,30 +7716,6 @@ in { }; - rtmidi = buildPythonPackage rec { - version = "0.3a"; - name = "rtmidi-${version}"; - - src = pkgs.fetchurl { - url = "http://chrisarndt.de/projects/python-rtmidi/download/python-${name}.tar.bz2"; - sha256 = "0d2if633m3kbiricd5hgn1csccd8xab6lnab1bq9prdr9ks9i8h6"; - }; - - preConfigure = '' - sed -i "/use_setuptools/d" setup.py - ''; - - buildInputs = with self; [ pkgs.alsaLib pkgs.libjack2 ]; - - meta = { - description = "A Python wrapper for the RtMidi C++ library written with Cython"; - homepage = http://trac.chrisarndt.de/code/wiki/python-rtmidi; - license = licenses.mit; - maintainers = with maintainers; [ goibhniu ]; - }; - }; - - setuptools-git = buildPythonPackage rec { name = "setuptools-git-${version}"; version = "1.1"; From 1b55fc59228f23ac5aa3d50021332a93ac8c1ad7 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:13:15 +0800 Subject: [PATCH 020/138] pythonpackages.doxypy: Remove outdated package --- pkgs/top-level/python-packages.nix | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c8f33b87715e..c256c1d23c34 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8371,22 +8371,6 @@ in { }; }; - doxypy = buildPythonPackage rec { - name = "doxypy-0.4.2"; - - src = pkgs.fetchurl { - url = "http://code.foosel.org/files/${name}.tar.gz"; - sha256 = "1afmb30zmy7942b53qa5vd3js883wwqqls35n8xfb3rnj0qnll8g"; - }; - - meta = { - homepage = http://code.foosel.org/doxypy; - description = "An input filter for Doxygen"; - }; - - doCheck = false; - }; - dtopt = buildPythonPackage rec { name = "dtopt-0.1"; From 495b099818a88f35f5df9248b34dc72a4793ffa4 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:31:44 +0800 Subject: [PATCH 021/138] pythonpackages.requests_oauth2: Remove dead package --- pkgs/top-level/python-packages.nix | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c256c1d23c34..b5034a807396 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17762,27 +17762,6 @@ in { }; }; - requests_oauth2 = buildPythonPackage rec { - name = "requests-oauth2-0.1.1"; - # python3 does not support relative imports - disabled = isPy3k; - - src = pkgs.fetchurl { - url = https://github.com/maraujop/requests-oauth2/archive/0.1.1.tar.gz; - sha256 = "1aij66qg9j5j4vzyh64nbg72y7pcafgjddxsi865racsay43xfqg"; - }; - - propagatedBuildInputs = with self; [ requests ]; - # no tests in tarball - doCheck = false; - - meta = { - description = "Python's Requests OAuth2 (Open Authentication) plugin"; - homepage = https://github.com/maraujop/requests-oauth2; - }; - }; - - restview = callPackage ../development/python-modules/restview { }; readme = buildPythonPackage rec { From 3fcf9bc9b18e0012d9b668913ca5e8b90c6ea9c2 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:47:06 +0800 Subject: [PATCH 022/138] pythonpackages.googlecl: Remove outdated package (source url dead) --- pkgs/top-level/python-packages.nix | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b5034a807396..a8c9f58545dc 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5635,27 +5635,6 @@ in { google-compute-engine = callPackage ../tools/virtualization/google-compute-engine { }; - googlecl = buildPythonPackage rec { - version = "0.9.14"; - name = "googlecl-${version}"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "https://googlecl.googlecode.com/files/${name}.tar.gz"; - sha256 = "0nnf7xkr780wivr5xnchfcrahlzy9bi2dxcs1w1bh1014jql0iha"; - }; - - meta = { - description = "Brings Google services to the command line"; - homepage = https://code.google.com/p/googlecl/; - license = licenses.asl20; - maintainers = with maintainers; [ lovek323 ]; - platforms = platforms.unix; - }; - - propagatedBuildInputs = with self; [ gdata ]; - }; - gplaycli = buildPythonPackage rec { version = "0.1.2"; name = "gplaycli-${version}"; From 2ca086da827f66980e1cc31f88862918b011a599 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:52:43 +0800 Subject: [PATCH 023/138] pythonpackages.deform_bootstrap: Remove seemingly dead package --- pkgs/top-level/python-packages.nix | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a8c9f58545dc..d382e0d5b4b9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4617,30 +4617,6 @@ in { }; }; - deform_bootstrap = buildPythonPackage rec { - name = "deform_bootstrap-0.2.9"; - - src = pkgs.fetchurl { - url = "mirror://pypi/d/deform_bootstrap/${name}.tar.gz"; - sha256 = "1hgq3vqsfqdmlyahnlc40w13viawhpzqf4jzigsggdb41x545fda"; - }; - - buildInputs = [ self.mock ]; - propagatedBuildInputs = with self; [ deform pyramid ]; - - # demo is removed as it depends on deformdemo - patchPhase = '' - rm -rf deform_bootstrap/demo - ''; - - meta = { - maintainers = with maintainers; [ domenkozar ]; - platforms = platforms.all; - }; - }; - - demjson = callPackage ../development/python-modules/demjson { }; - derpconf = self.buildPythonPackage rec { name = "derpconf-0.4.9"; From 938369861a7fcf9bee1820753a9f8aadf4a52fec Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:54:38 +0800 Subject: [PATCH 024/138] pythonpackages.trac: Remove outdated package --- pkgs/top-level/python-packages.nix | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d382e0d5b4b9..36e7c72b213f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -20355,29 +20355,6 @@ in { }; }; - trac = buildPythonPackage { - name = "trac-1.0.1"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = http://ftp.edgewall.com/pub/trac/Trac-1.0.1.tar.gz; - sha256 = "1nqa95fcnkpyq4jk6az7l7sqgm3b3pjq3bx1n7y4v3bad5jr1m4x"; - }; - - # couple of failing tests - doCheck = false; - - PYTHON_EGG_CACHE = "`pwd`/.egg-cache"; - - propagatedBuildInputs = with self; [ genshi ]; - - meta = { - description = "Enhanced wiki and issue tracking system for software development projects"; - - license = "BSD"; - }; - }; - traits = buildPythonPackage rec { name = "traits-${version}"; version = "4.5.0"; From 33a56ef0a68cc06298556d866b24f1f2a8286639 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 22:57:36 +0800 Subject: [PATCH 025/138] pythonpackages.redNotebook: Remove outdated package --- pkgs/top-level/python-packages.nix | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 36e7c72b213f..5e839de23989 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -22963,29 +22963,6 @@ EOF }; }; - - redNotebook = buildPythonPackage rec { - name = "rednotebook-1.8.1"; - - src = pkgs.fetchurl { - url = "mirror://sourceforge/rednotebook/${name}.tar.gz"; - sha256 = "00b7s4xpqpxsbzjvjx9qsx5d84m9pvn383c5di1nsfh35pig0rzn"; - }; - - # no tests available - doCheck = false; - - propagatedBuildInputs = with self; [ pygtk pywebkitgtk pyyaml chardet ]; - - meta = { - homepage = http://rednotebook.sourceforge.net/index.html; - description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds"; - license = licenses.gpl2; - maintainers = with maintainers; [ tstrobel ]; - }; - }; - - uncertainties = callPackage ../development/python-modules/uncertainties { }; funcy = buildPythonPackage rec { From 2170a73d5c3a666790a0cb3bc128801b24c0f4a7 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 23:05:21 +0800 Subject: [PATCH 026/138] pythonpackages.rtslib_fb: Remove outdated package --- pkgs/top-level/python-packages.nix | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 5e839de23989..9c0d4d4de31d 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18225,22 +18225,6 @@ in { }; }; - rtslib_fb = buildPythonPackage rec { - version = "2.1.fb43"; - name = "rtslib-fb-${version}"; - - src = pkgs.fetchurl { - url = "https://github.com/agrover/rtslib-fb/archive/v${version}.tar.gz"; - sha256 = "1b59vyy12g6rix9l2fxx0hjiq33shkb79v57gwffs57vh74wc53v"; - }; - - meta = { - description = "A Python object API for managing the Linux LIO kernel target"; - homepage = "https://github.com/agrover/rtslib-fb"; - platforms = platforms.linux; - }; - }; - s3transfer = buildPythonPackage rec { version = "0.1.10"; name = "s3transfer-${version}"; From cb7caad4e96550f5ea88a412c6e9d4f848ae5413 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 23:06:52 +0800 Subject: [PATCH 027/138] pythonpackages.targetcli_fb: Remove outdated package --- pkgs/top-level/python-packages.nix | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9c0d4d4de31d..e4ebf1813536 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19957,27 +19957,6 @@ in { tabulate = callPackage ../development/python-modules/tabulate { }; - targetcli_fb = buildPythonPackage rec { - version = "2.1.fb33"; - name = "targetcli-fb-${version}"; - - src = pkgs.fetchurl { - url = "https://github.com/agrover/targetcli-fb/archive/v${version}.tar.gz"; - sha256 = "1zcm0agdpf866020b43fl8zyyyzz6r74mn1sz4xpaa0pinpwjk42"; - }; - - propagatedBuildInputs = with self; [ - configshell_fb - rtslib_fb - ]; - - meta = { - description = "A command shell for managing the Linux LIO kernel target"; - homepage = "https://github.com/agrover/targetcli-fb"; - platforms = platforms.linux; - }; - }; - taskw = buildPythonPackage rec { version = "1.0.3"; name = "taskw-${version}"; From 7d6a912bfeeb37f62735c579cc1c8935dee14f3b Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 23:08:09 +0800 Subject: [PATCH 028/138] pythonpackages.configshell_fb: Remove outdated package --- pkgs/top-level/python-packages.nix | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e4ebf1813536..72cc1b282d19 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2981,30 +2981,6 @@ in { }); - configshell_fb = buildPythonPackage rec { - version = "1.1.fb10"; - name = "configshell-fb-${version}"; - - src = pkgs.fetchurl { - url = "https://github.com/agrover/configshell-fb/archive/v${version}.tar.gz"; - sha256 = "1dd87xvm98nk3jzybb041gjdahi2z9b53pwqhyxcfj4a91y82ndy"; - }; - - propagatedBuildInputs = with self; [ - pyparsing - urwid - ]; - - # Fails on python 3 due to a None value where a string is expected - doCheck = !isPy3k; - - meta = { - description = "A Python library for building configuration shells"; - homepage = "https://github.com/agrover/configshell-fb"; - platforms = platforms.linux; - }; - }; - confluent-kafka = callPackage ../development/python-modules/confluent-kafka {}; construct = callPackage ../development/python-modules/construct {}; From b2de5a9373d890622eb44849626299ca29dd1370 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 23:12:47 +0800 Subject: [PATCH 029/138] pythonpackages.nose-selecttests: Remove outdated package --- pkgs/top-level/python-packages.nix | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 72cc1b282d19..a637ef4e2184 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12467,23 +12467,6 @@ in { nose-exclude = callPackage ../development/python-modules/nose-exclude { }; - nose-selecttests = buildPythonPackage rec { - version = "0.4"; - name = "nose-selecttests-${version}"; - - src = pkgs.fetchurl { - url = "mirror://pypi/n/nose-selecttests/${name}.zip"; - sha256 = "0lgrfgp3sq8xi8d9grrg0z8jsyk0wl8a3rxw31hb7vdncin5b7n5"; - }; - - propagatedBuildInputs = with self; [ nose ]; - - meta = { - description = "Simple nose plugin that enables developers to run subset of collected tests to spare some waiting time for better things"; - }; - }; - - nose2 = if isPy26 then null else (buildPythonPackage rec { name = "nose2-0.5.0"; src = pkgs.fetchurl { From 98024e2d85ba94eab44db8ee326aa7631ab93861 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Oct 2017 23:14:24 +0800 Subject: [PATCH 030/138] pythonpackages.pyramid_debugtoolbar: Remove outdated package --- pkgs/top-level/python-packages.nix | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a637ef4e2184..9e4674103966 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7080,19 +7080,6 @@ in { }; - pyramid_debugtoolbar = buildPythonPackage rec { - name = "pyramid_debugtoolbar-1.0.9"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pyramid_debugtoolbar/${name}.tar.gz"; - sha256 = "1vnzg1qnnyisv7znxg7pasayfyr3nz7rrs5nqr4fmdgwj9q2pyv0"; - }; - - buildInputs = with self; [ ]; - propagatedBuildInputs = with self; [ pyramid pyramid_mako ]; - }; - - pyramid_mako = buildPythonPackage rec { name = "pyramid_mako-0.3.1"; From b2e6b560164aeaa06dff26b43c79157b886bbe1b Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Wed, 1 Nov 2017 21:58:48 +0100 Subject: [PATCH 031/138] expat: 2.2.4 -> 2.2.5 --- pkgs/development/libraries/expat/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/expat/default.nix b/pkgs/development/libraries/expat/default.nix index 6533997de2f8..569a82b750a5 100644 --- a/pkgs/development/libraries/expat/default.nix +++ b/pkgs/development/libraries/expat/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchpatch, fetchurl }: stdenv.mkDerivation rec { - name = "expat-2.2.4"; + name = "expat-2.2.5"; src = fetchurl { url = "mirror://sourceforge/expat/${name}.tar.bz2"; - sha256 = "17h1fb9zvqvf0sr78j211bngc6jpql5wzar8fg9b52jzjvdqbb83"; + sha256 = "1xpd78sp7m34jqrw5x13bz7kgz0n6aj15wn4zj4gfx3ypbpk5p6r"; }; outputs = [ "out" "dev" ]; # TODO: fix referrers From b3b438a8fde43811c54c59ea905511cb1d49c9da Mon Sep 17 00:00:00 2001 From: gnidorah Date: Tue, 17 Oct 2017 13:38:18 +0300 Subject: [PATCH 032/138] mailnag: use setup.py --- .../networking/mailreaders/mailnag/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/mailreaders/mailnag/default.nix b/pkgs/applications/networking/mailreaders/mailnag/default.nix index 281bc690bad5..e04a5dd469b6 100644 --- a/pkgs/applications/networking/mailreaders/mailnag/default.nix +++ b/pkgs/applications/networking/mailreaders/mailnag/default.nix @@ -6,7 +6,9 @@ , withNetworkManager ? true }: -pythonPackages.buildPythonApplication rec { +let + inherit (pythonPackages) python; +in pythonPackages.buildPythonApplication rec { name = "mailnag-${version}"; version = "1.2.1"; @@ -31,6 +33,10 @@ pythonPackages.buildPythonApplication rec { pygobject3 dbus-python pyxdg ]; + buildPhase = ""; + + installPhase = "${python}/bin/python setup.py install --prefix=$out"; + doCheck = false; meta = with stdenv.lib; { From 5c06711c80d560ee2c090f1373c9757398a52163 Mon Sep 17 00:00:00 2001 From: gnidorah Date: Thu, 19 Oct 2017 22:00:17 +0300 Subject: [PATCH 033/138] mailnag: gnomekeyring by default --- .../networking/mailreaders/mailnag/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/mailreaders/mailnag/default.nix b/pkgs/applications/networking/mailreaders/mailnag/default.nix index e04a5dd469b6..b1ca80fc7e47 100644 --- a/pkgs/applications/networking/mailreaders/mailnag/default.nix +++ b/pkgs/applications/networking/mailreaders/mailnag/default.nix @@ -2,8 +2,8 @@ , gdk_pixbuf, libnotify, gst_all_1 , libgnome_keyring3, networkmanager , wrapGAppsHook, gnome3 -, withGnomeKeyring ? false -, withNetworkManager ? true +# otherwise passwords are stored unencrypted +, withGnomeKeyring ? true }: let @@ -22,8 +22,7 @@ in pythonPackages.buildPythonApplication rec { gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gnome3.defaultIconTheme - ] ++ stdenv.lib.optional withGnomeKeyring libgnome_keyring3 - ++ stdenv.lib.optional withNetworkManager networkmanager; + ] ++ stdenv.lib.optional withGnomeKeyring libgnome_keyring3; nativeBuildInputs = [ wrapGAppsHook From 14d3a7d744dc6d8b93282f87dfe19585cff923bd Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 22:41:03 +0000 Subject: [PATCH 034/138] python.pkgs.urwid: fix tests --- pkgs/development/python-modules/urwid/default.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/urwid/default.nix b/pkgs/development/python-modules/urwid/default.nix index 129f4821e875..8d5b7ab76e5d 100644 --- a/pkgs/development/python-modules/urwid/default.nix +++ b/pkgs/development/python-modules/urwid/default.nix @@ -1,4 +1,4 @@ -{ stdenv, buildPythonPackage, fetchPypi }: +{ stdenv, buildPythonPackage, fetchPypi, fetchpatch }: buildPythonPackage (rec { pname = "urwid"; @@ -10,6 +10,19 @@ buildPythonPackage (rec { sha256 = "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"; }; + patches = [ + # fix tests + (fetchpatch { + url = "https://github.com/mwhudson/urwid/commit/4b0ed8b6030450e6d99909a7c683e9642e546387.patch"; + sha256 = "0azpn0ylbg8mfpr0y27n4lnq0ph75a4d4m9wdv3napnhf1vh9ahx"; + }) + # fix tests + (fetchpatch { + url = "https://github.com/floppym/urwid/commit/f68f2cf089cfd5ec45863baf59a91d5aeb0cf5c3.patch"; + sha256 = "1b3vz7mrwz2bqvdwvbyv2j835f9lzapgw0j2km4sam76bxmgfpgq"; + }) + ]; + meta = with stdenv.lib; { description = "A full-featured console (xterm et al.) user interface library"; homepage = http://excess.org/urwid; From 9d8cc4fab073478b9453b616b0bc2375b16134a6 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 23:32:49 +0000 Subject: [PATCH 035/138] python.pkgs.hyperframe: 4.0.1 -> 5.1.0 --- .../python-modules/hyperframe/default.nix | 17 +++++++++++++++++ pkgs/top-level/python-packages.nix | 16 +--------------- 2 files changed, 18 insertions(+), 15 deletions(-) create mode 100644 pkgs/development/python-modules/hyperframe/default.nix diff --git a/pkgs/development/python-modules/hyperframe/default.nix b/pkgs/development/python-modules/hyperframe/default.nix new file mode 100644 index 000000000000..91e00a7a1461 --- /dev/null +++ b/pkgs/development/python-modules/hyperframe/default.nix @@ -0,0 +1,17 @@ +{ stdenv, buildPythonPackage, fetchPypi }: +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "hyperframe"; + version = "5.1.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "017vjbb1xjak1pxcvihhilzjnmpfvhapk7k88wp6lvdkkm9l8nd2"; + }; + + meta = with stdenv.lib; { + description = "HTTP/2 framing layer for Python"; + homepage = "http://hyper.rtfd.org/"; + license = licenses.mit; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b9c5fa93dfa5..fa5ee02f51cd 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11604,21 +11604,7 @@ in { }; }; - hyperframe = buildPythonPackage rec { - name = "hyperframe-${version}"; - version = "4.0.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/h/hyperframe/${name}.tar.gz"; - sha256 = "0hsfq0jigwa0i58z7vbnp62l7za49gmlg75vnygq2ijhkidkcmwa"; - }; - - meta = { - description = "HTTP/2 framing layer for Python"; - homepage = "http://hyper.rtfd.org/"; - license = licenses.mit; - }; - }; + hyperframe = callPackage ../development/python-modules/hyperframe { }; h2 = buildPythonPackage rec { name = "h2-${version}"; From fd261eefbd99e7a4d3e5adc9cfa99a32d5b7ca7d Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 23:33:38 +0000 Subject: [PATCH 036/138] python.pkgs.h2: 2.5.1 -> 3.0.1 --- .../development/python-modules/h2/default.nix | 21 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 18 +--------------- 2 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 pkgs/development/python-modules/h2/default.nix diff --git a/pkgs/development/python-modules/h2/default.nix b/pkgs/development/python-modules/h2/default.nix new file mode 100644 index 000000000000..08cd1943eff6 --- /dev/null +++ b/pkgs/development/python-modules/h2/default.nix @@ -0,0 +1,21 @@ +{ stdenv, buildPythonPackage, fetchPypi +, enum34, hpack, hyperframe }: + +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "h2"; + version = "3.0.1"; + + src = fetchPypi { + inherit pname version; + sha256 = "0r3f43r0v7sqgdjjg5ngw0dndk2v6cyd0jncpwya54m37y42z5mj"; + }; + + propagatedBuildInputs = [ enum34 hpack hyperframe ]; + + meta = with stdenv.lib; { + description = "HTTP/2 State-Machine based protocol implementation"; + homepage = "http://hyper.rtfd.org/"; + license = licenses.mit; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index fa5ee02f51cd..1e6101f0bbb8 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11606,23 +11606,7 @@ in { hyperframe = callPackage ../development/python-modules/hyperframe { }; - h2 = buildPythonPackage rec { - name = "h2-${version}"; - version = "2.5.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/h/h2/${name}.tar.gz"; - sha256 = "0xhzm5vcfhdq3mihynwh4ljwi0r06lvzk3ypr0gmmbcp1x43ffb7"; - }; - - propagatedBuildInputs = with self; [ enum34 hpack hyperframe ]; - - meta = { - description = "HTTP/2 State-Machine based protocol implementation"; - homepage = "http://hyper.rtfd.org/"; - license = licenses.mit; - }; - }; + h2 = callPackage ../development/python-modules/h2 { }; editorconfig = buildPythonPackage rec { name = "EditorConfig-${version}"; From 206a3c7653491165f8947aab18361787a2521119 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 23:34:11 +0000 Subject: [PATCH 037/138] python.pkgs.kaitaistruct: 0.6 -> 0.7 --- .../python-modules/kaitaistruct/default.nix | 18 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 16 +--------------- 2 files changed, 19 insertions(+), 15 deletions(-) create mode 100644 pkgs/development/python-modules/kaitaistruct/default.nix diff --git a/pkgs/development/python-modules/kaitaistruct/default.nix b/pkgs/development/python-modules/kaitaistruct/default.nix new file mode 100644 index 000000000000..c99619566175 --- /dev/null +++ b/pkgs/development/python-modules/kaitaistruct/default.nix @@ -0,0 +1,18 @@ +{ stdenv, kaitaistruct, buildPythonPackage, fetchPypi }: + +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "kaitaistruct"; + version = "0.7"; + + src = fetchPypi { + inherit pname version; + sha256 = "19j3snmr0qbd48f7yd3cc21ffv13dahf8ys591dnalbhvnkar71i"; + }; + + meta = with stdenv.lib; { + description = "Kaitai Struct: runtime library for Python"; + homepage = "https://github.com/kaitai-io/kaitai_struct_python_runtime"; + license = licenses.mit; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1e6101f0bbb8..b2962dc84597 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13812,21 +13812,7 @@ in { pecan = callPackage ../development/python-modules/pecan { }; - kaitaistruct = buildPythonPackage rec { - name = "kaitaistruct-${version}"; - version = "0.6"; - - src = pkgs.fetchurl { - url = "mirror://pypi/k/kaitaistruct/${name}.tar.gz"; - sha256 = "0rwcrlz7f2bwmypqa38pag492bp71wp1bhz51hsaynjjyr9knr12"; - }; - - meta = with stdenv.lib; { - description = "Kaitai Struct: runtime library for Python"; - homepage = "https://github.com/kaitai-io/kaitai_struct_python_runtime"; - license = licenses.mit; - }; - }; + kaitaistruct = callPackage ../development/python-modules/kaitaistruct { }; Kajiki = buildPythonPackage rec { name = "Kajiki-${version}"; From a478343856d0a3e47ecd198c3bde1735c934c658 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 23:35:11 +0000 Subject: [PATCH 038/138] python.pkgs.pyasn1: 0.1.9 -> 0.3.4 --- .../python-modules/pyasn1/default.nix | 19 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 16 +--------------- 2 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 pkgs/development/python-modules/pyasn1/default.nix diff --git a/pkgs/development/python-modules/pyasn1/default.nix b/pkgs/development/python-modules/pyasn1/default.nix new file mode 100644 index 000000000000..d0122a5b7e40 --- /dev/null +++ b/pkgs/development/python-modules/pyasn1/default.nix @@ -0,0 +1,19 @@ +{ stdenv, buildPythonPackage, fetchPypi, }: + +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pyasn1"; + version = "0.3.4"; + + src = fetchPypi { + inherit pname version; + sha256 = "06hhy38jhwh95gpn8f03cr439273fsfsh4vhd5024r86nh5gyiir"; + }; + + meta = with stdenv.lib; { + description = "ASN.1 tools for Python"; + homepage = http://pyasn1.sourceforge.net/; + license = "mBSD"; + platforms = platforms.unix; # arbitrary choice + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b2962dc84597..c549a3bad4a6 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15524,21 +15524,7 @@ in { }; - pyasn1 = buildPythonPackage rec { - name = "pyasn1-0.1.9"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pyasn1/${name}.tar.gz"; - sha256 = "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"; - }; - - meta = { - description = "ASN.1 tools for Python"; - homepage = http://pyasn1.sourceforge.net/; - license = "mBSD"; - platforms = platforms.unix; # arbitrary choice - }; - }; + pyasn1 = callPackage ../development/python-modules/pyasn1 { }; pyasn1-modules = buildPythonPackage rec { name = "pyasn1-modules-${version}"; From 3cdbc9705dd186581a812e362879b798064dfb55 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 23:35:52 +0000 Subject: [PATCH 039/138] python.pkgs.pyasn1-modules: 0.0.8 -> 0.1.5 --- .../python-modules/pyasn1-modules/default.nix | 22 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 20 +---------------- 2 files changed, 23 insertions(+), 19 deletions(-) create mode 100644 pkgs/development/python-modules/pyasn1-modules/default.nix diff --git a/pkgs/development/python-modules/pyasn1-modules/default.nix b/pkgs/development/python-modules/pyasn1-modules/default.nix new file mode 100644 index 000000000000..a7ee15d6a181 --- /dev/null +++ b/pkgs/development/python-modules/pyasn1-modules/default.nix @@ -0,0 +1,22 @@ +{ stdenv, buildPythonPackage, fetchPypi, pyasn1, isPyPy }: + +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pyasn1-modules"; + version = "0.1.5"; + disabled = isPyPy; + + src = fetchPypi { + inherit pname version; + sha256 = "1239h6h67vg0wazg2qgv6m3hdim2gs66pl89lbnayk55bbnkwc0x"; + }; + + propagatedBuildInputs = [ pyasn1 ]; + + meta = with stdenv.lib; { + description = "A collection of ASN.1-based protocols modules"; + homepage = https://pypi.python.org/pypi/pyasn1-modules; + license = licenses.bsd3; + platforms = platforms.unix; # same as pyasn1 + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c549a3bad4a6..b9f62a1f34b9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15526,25 +15526,7 @@ in { pyasn1 = callPackage ../development/python-modules/pyasn1 { }; - pyasn1-modules = buildPythonPackage rec { - name = "pyasn1-modules-${version}"; - version = "0.0.8"; - disabled = isPyPy; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pyasn1-modules/${name}.tar.gz"; - sha256 = "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"; - }; - - propagatedBuildInputs = with self; [ pyasn1 ]; - - meta = { - description = "A collection of ASN.1-based protocols modules"; - homepage = https://pypi.python.org/pypi/pyasn1-modules; - license = licenses.bsd3; - platforms = platforms.unix; # same as pyasn1 - }; - }; + pyasn1-modules = callPackage ../development/python-modules/pyasn1-modules { }; pyaudio = buildPythonPackage rec { name = "python-pyaudio-${version}"; From f255de884b147fb6efc2b1ae95493f99d5512d2a Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 23:36:38 +0000 Subject: [PATCH 040/138] python.pkgs.ldap3: 1.0.4 -> 2.3 --- .../python-modules/ldap3/default.nix | 24 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 20 +--------------- 2 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 pkgs/development/python-modules/ldap3/default.nix diff --git a/pkgs/development/python-modules/ldap3/default.nix b/pkgs/development/python-modules/ldap3/default.nix new file mode 100644 index 000000000000..895272f351de --- /dev/null +++ b/pkgs/development/python-modules/ldap3/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchPypi, buildPythonPackage, gssapi, pyasn1 }: + +buildPythonPackage rec { + version = "2.3"; + pname = "ldap3"; + name = "${pname}-${version}"; + + src = fetchPypi { + inherit pname version; + sha256 = "1b36lwil4iflk2ay8gi663abpnfm8id7qg4n3jkmmqbnc1sv6mn0"; + }; + + buildInputs = [ gssapi ]; + + propagatedBuildInputs = [ pyasn1 ]; + + doCheck = false; # requires network + + meta = with stdenv.lib; { + homepage = https://pypi.python.org/pypi/ldap3; + description = "A strictly RFC 4510 conforming LDAP V3 pure Python client library"; + license = licenses.lgpl3; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b9f62a1f34b9..f7db34b4f61e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -16856,25 +16856,7 @@ in { inherit (pkgs) openldap cyrus_sasl openssl; }; - ldap3 = buildPythonPackage rec { - version = "1.0.4"; - name = "ldap3-${version}"; - - src = pkgs.fetchurl { - url = "mirror://pypi/l/ldap3/${name}.tar.gz"; - sha256 = "0j4qqj9vq022hy7wfqn8s0j4vm2g6paabbzas1vbyspawvcfai98"; - }; - - buildInputs = with self; [ gssapi ]; - - propagatedBuildInputs = with self; [ pyasn1 ]; - - meta = { - homepage = https://pypi.python.org/pypi/ldap3; - description = "A strictly RFC 4510 conforming LDAP V3 pure Python client library"; - license = licenses.lgpl3; - }; - }; + ldap3 = callPackage ../development/python-modules/ldap3 {}; ptest = buildPythonPackage rec { name = pname + "-" + version; From 0433604f51966bc43ffdbb6d741665a5738c6b7d Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Thu, 2 Nov 2017 23:38:23 +0000 Subject: [PATCH 041/138] mitmproxy: 2.0.2 -> 2017-10-31 --- pkgs/tools/networking/mitmproxy/default.nix | 74 ++++----------------- 1 file changed, 12 insertions(+), 62 deletions(-) diff --git a/pkgs/tools/networking/mitmproxy/default.nix b/pkgs/tools/networking/mitmproxy/default.nix index 7348cd7f1165..f96987a1300b 100644 --- a/pkgs/tools/networking/mitmproxy/default.nix +++ b/pkgs/tools/networking/mitmproxy/default.nix @@ -1,82 +1,32 @@ { stdenv, fetchpatch, fetchFromGitHub, fetchurl, python3, glibcLocales }: -let - p = python3.override { - packageOverrides = self: super: { - cryptography = super.cryptography.overridePythonAttrs (oldAttrs: rec { - version = "1.8.2"; - name = "${oldAttrs.pname}-${version}"; - src = oldAttrs.src.override { - inherit version; - sha256 = "8e88ebac371a388024dab3ccf393bf3c1790d21bc3c299d5a6f9f83fb823beda"; - }; - }); - cryptography_vectors = super.cryptography_vectors.overridePythonAttrs (oldAttrs: rec { - version = self.cryptography.version; - name = "${oldAttrs.pname}-${version}"; - src = oldAttrs.src.override { - inherit version; - sha256 = "00daa04c9870345f56605d91d7d4897bc1b16f6fff7c74cb602b08ef16c0fb43"; - }; - }); - pyopenssl = super.pyopenssl.overridePythonAttrs (oldAttrs: rec { - version = "17.0.0"; - name = "${oldAttrs.pname}-${version}"; - src = oldAttrs.src.override { - inherit version; - sha256 = "1pdg1gpmkzj8yasg6cmkhcivxcdp4c12nif88y4qvsxq5ffzxas8"; - }; - patches = fetchpatch { - url = "https://github.com/pyca/pyopenssl/commit/" - + "a40898b5f1d472f9449a344f703fa7f90cddc21d.patch"; - sha256 = "0bdfrhfvdfxhfknn46s4db23i3hww6ami2r1l5rfrri0pn8b8mh7"; - }; - }); - }; - }; -in p.pkgs.buildPythonPackage rec { +python3.pkgs.buildPythonPackage rec { baseName = "mitmproxy"; - name = "${baseName}-${version}"; - version = "2.0.2"; + name = "${baseName}-unstable-2017-10-31"; src = fetchFromGitHub { owner = baseName; repo = baseName; - rev = "v${version}"; - sha256 = "1x1a28al5clpfd69rjcpw26gjjnpsm1vfl4scrwpdd1jhkw044h9"; + rev = "80a8eaa708ea31dd9c5e7e1ab6b02c69079039c0"; + sha256 = "0rvwm11yryzlp3c1i42rk2iv1m38yn6r83k41jb51hwg6wzbwzvw"; }; - patches = [ - # fix tests - (fetchpatch { - url = "https://github.com/mitmproxy/mitmproxy/commit/b3525570929ba47c10d9d08696876c39487f7000.patch"; - sha256 = "111fld5gqdii7rs1jhqaqrxgbyhfn6qd0y7l15k4npamsnvdnv20"; - }) - # bump pyOpenSSL - (fetchpatch { - url = https://github.com/mitmproxy/mitmproxy/commit/6af72160bf98b58682b8f9fc5aabf51928d2b1d3.patch; - sha256 = "1q4ml81pq9c8j9iscq8janbxf4s37w3bqskbs6r30yqzy63v54f2"; - }) - # https://github.com/mitmproxy/mitmproxy/commit/3d7cde058b7e6242d93b9bc9d3e17520ffb578a5 - ./tornado-4.6.patch - ]; - checkPhase = '' export HOME=$(mktemp -d) # test_echo resolves hostnames - LC_CTYPE=en_US.UTF-8 pytest -k 'not test_echo' + LC_CTYPE=en_US.UTF-8 pytest -k 'not test_echo and not test_find_unclaimed_URLs ' ''; - propagatedBuildInputs = with p.pkgs; [ - blinker click certifi construct cryptography - cssutils editorconfig h2 html2text hyperframe - jsbeautifier kaitaistruct passlib pyasn1 pyopenssl + propagatedBuildInputs = with python3.pkgs; [ + blinker click certifi cryptography + h2 hyperframe + kaitaistruct passlib pyasn1 pyopenssl pyparsing pyperclip requests ruamel_yaml tornado - urwid watchdog brotlipy sortedcontainers + urwid brotlipy sortedcontainers ldap3 ]; - buildInputs = with p.pkgs; [ - beautifulsoup4 flask pytz pytest pytestrunner protobuf glibcLocales + buildInputs = with python3.pkgs; [ + beautifulsoup4 flask pytest pytestrunner glibcLocales ]; meta = with stdenv.lib; { From c1de18ea236994120b5ab3c3700099f8dbe0d221 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Fri, 3 Nov 2017 00:44:23 +0000 Subject: [PATCH 042/138] vigra: enable parallel building (this rebuilds libreoffice) --- pkgs/development/libraries/vigra/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/vigra/default.nix b/pkgs/development/libraries/vigra/default.nix index 2910e8b7dbbc..324d977c72e5 100644 --- a/pkgs/development/libraries/vigra/default.nix +++ b/pkgs/development/libraries/vigra/default.nix @@ -24,6 +24,8 @@ in stdenv.mkDerivation rec { ++ stdenv.lib.optionals (stdenv.system == "x86_64-linux") [ "-DCMAKE_CXX_FLAGS=-fPIC" "-DCMAKE_C_FLAGS=-fPIC" ]; + enableParallelBuilding = true; + meta = with stdenv.lib; { description = "Novel computer vision C++ library with customizable algorithms and data structures"; homepage = http://hci.iwr.uni-heidelberg.de/vigra; From b2d6c638105d2178c41e5f5c94e3739e844d0e91 Mon Sep 17 00:00:00 2001 From: Raymond Gauthier Date: Thu, 2 Nov 2017 23:24:43 -0400 Subject: [PATCH 043/138] geckodriver: init at 0.19.1 --- .../development/tools/geckodriver/default.nix | 25 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/development/tools/geckodriver/default.nix diff --git a/pkgs/development/tools/geckodriver/default.nix b/pkgs/development/tools/geckodriver/default.nix new file mode 100644 index 000000000000..8f6e0dde5899 --- /dev/null +++ b/pkgs/development/tools/geckodriver/default.nix @@ -0,0 +1,25 @@ +{ lib +, fetchurl +, rustPlatform +}: + +with rustPlatform; + +buildRustPackage rec { + version = "0.19.1"; + name = "geckodriver-${version}"; + + src = fetchurl { + url = "https://github.com/mozilla/geckodriver/archive/v${version}.tar.gz"; + sha256 = "04zpv4aiwbig466yj24hhazl5hrapkyvwlhvg0za5599ykzdv47m"; + }; + + cargoSha256 = "1cny8caqcd9p98hra1k7y4d3lb8sxsyaplr0svbwam0d2qc1c257"; + + meta = with lib; { + description = "Proxy for using W3C WebDriver-compatible clients to interact with Gecko-based browsers"; + homepage = https://github.com/mozilla/geckodriver; + license = licenses.mpl20; + maintainers = with maintainers; [ jraygauthier ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8fd266caa5fa..605900586782 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1074,6 +1074,8 @@ with pkgs; go-dependency-manager = callPackage ../development/tools/gdm { }; + geckodriver = callPackage ../development/tools/geckodriver { }; + geekbench = callPackage ../tools/misc/geekbench { }; gencfsm = callPackage ../tools/security/gencfsm { }; From f07ae8902d09b8ebaf7d3c4d15081dc9edf2550d Mon Sep 17 00:00:00 2001 From: Raymond Gauthier Date: Thu, 2 Nov 2017 23:26:49 -0400 Subject: [PATCH 044/138] pythonV.V-selenium: from 2.52.0 to 3.6.0 --- .../python-modules/selenium/default.nix | 50 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 31 +----------- 2 files changed, 51 insertions(+), 30 deletions(-) create mode 100644 pkgs/development/python-modules/selenium/default.nix diff --git a/pkgs/development/python-modules/selenium/default.nix b/pkgs/development/python-modules/selenium/default.nix new file mode 100644 index 000000000000..d33e86a3f079 --- /dev/null +++ b/pkgs/development/python-modules/selenium/default.nix @@ -0,0 +1,50 @@ +{ lib +, stdenv +, fetchurl +, fetchFromGitHub +, buildPythonPackage +, geckodriver +, xorg +}: + +buildPythonPackage rec { + name = "selenium-3.6.0"; + src = fetchurl { + url = "mirror://pypi/s/selenium/${name}.tar.gz"; + sha256 = "15qpvz0bdwjvpcj11fm0rw6r5inr66sqw89ww50l025sbhf04qwm"; + }; + + buildInputs = [xorg.libX11]; + + propagatedBuildInputs = [ + geckodriver + ]; + + # Recompiling x_ignore_nofocus.so as the original one dlopen's libX11.so.6 by some + # absolute paths. Replaced by relative path so it is found when used in nix. + x_ignore_nofocus = + fetchFromGitHub { + owner = "SeleniumHQ"; + repo = "selenium"; + rev = "selenium-3.6.0"; + sha256 = "13wf4hx4i7nhl4s8xkziwxl0km1j873syrj4amragj6mpip2wn8v"; + }; + + patchPhase = '' + cp "${x_ignore_nofocus}/cpp/linux-specific/"* . + substituteInPlace x_ignore_nofocus.c --replace "/usr/lib/libX11.so.6" "${xorg.libX11.out}/lib/libX11.so.6" + gcc -c -fPIC x_ignore_nofocus.c -o x_ignore_nofocus.o + gcc -shared \ + -Wl,${if stdenv.isDarwin then "-install_name" else "-soname"},x_ignore_nofocus.so \ + -o x_ignore_nofocus.so \ + x_ignore_nofocus.o + cp -v x_ignore_nofocus.so selenium/webdriver/firefox/${if stdenv.is64bit then "amd64" else "x86"}/ + ''; + + meta = with lib; { + description = "The selenium package is used to automate web browser interaction from Python"; + homepage = http://www.seleniumhq.org; + license = licenses.asl20; + maintainers = with maintainers; [ jraygauthier ]; + }; +} \ No newline at end of file diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 60d5f9577e47..5313b19b8eb4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18615,36 +18615,7 @@ in { seaborn = callPackage ../development/python-modules/seaborn { }; - selenium = buildPythonPackage rec { - name = "selenium-2.52.0"; - src = pkgs.fetchurl { - url = "mirror://pypi/s/selenium/${name}.tar.gz"; - sha256 = "0971rd9b8kb97xp9fvrwzvxr8vqfdjc020cs75n787ya82km01c2"; - }; - - buildInputs = with self; [pkgs.xorg.libX11]; - - # Recompiling x_ignore_nofocus.so as the original one dlopen's libX11.so.6 by some - # absolute paths. Replaced by relative path so it is found when used in nix. - x_ignore_nofocus = - pkgs.fetchFromGitHub { - owner = "SeleniumHQ"; - repo = "selenium"; - rev = "selenium-2.52.0"; - sha256 = "1n58akim9np2jy22jfgichq1ckvm8gglqi2hn3syphh0jjqq6cfx"; - }; - - patchPhase = '' - cp "${x_ignore_nofocus}/cpp/linux-specific/"* . - substituteInPlace x_ignore_nofocus.c --replace "/usr/lib/libX11.so.6" "${pkgs.xorg.libX11.out}/lib/libX11.so.6" - gcc -c -fPIC x_ignore_nofocus.c -o x_ignore_nofocus.o - gcc -shared \ - -Wl,${if stdenv.isDarwin then "-install_name" else "-soname"},x_ignore_nofocus.so \ - -o x_ignore_nofocus.so \ - x_ignore_nofocus.o - cp -v x_ignore_nofocus.so py/selenium/webdriver/firefox/${if pkgs.stdenv.is64bit then "amd64" else "x86"}/ - ''; - }; + selenium = callPackage ../development/python-modules/selenium { }; serpy = callPackage ../development/python-modules/serpy { }; From cc04a30b6e14c4a6b2353766c8e22a6e96d30e76 Mon Sep 17 00:00:00 2001 From: Yegor Timoshenko Date: Thu, 2 Nov 2017 15:49:28 +0000 Subject: [PATCH 045/138] rambox: build from source --- .../instant-messengers/rambox/bare.nix | 61 ++++++++++++++++ .../instant-messengers/rambox/default.nix | 70 +++++-------------- .../rambox/fetchNodeModules.nix | 26 +++++++ .../rambox/hide-check-for-updates.patch | 35 ++++++++++ .../instant-messengers/rambox/isDev.patch | 14 ++++ .../instant-messengers/rambox/sencha/bare.nix | 41 +++++++++++ .../rambox/sencha/default.nix | 17 +++++ .../rambox/sencha/response.varfile | 13 ++++ 8 files changed, 223 insertions(+), 54 deletions(-) create mode 100644 pkgs/applications/networking/instant-messengers/rambox/bare.nix create mode 100644 pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix create mode 100644 pkgs/applications/networking/instant-messengers/rambox/hide-check-for-updates.patch create mode 100644 pkgs/applications/networking/instant-messengers/rambox/isDev.patch create mode 100644 pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix create mode 100644 pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix create mode 100644 pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile diff --git a/pkgs/applications/networking/instant-messengers/rambox/bare.nix b/pkgs/applications/networking/instant-messengers/rambox/bare.nix new file mode 100644 index 000000000000..ceb922624a12 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/rambox/bare.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchFromGitHub, fetchNodeModules, nodejs-8_x, ruby, sencha }: + +stdenv.mkDerivation rec { + name = "rambox-bare-${version}"; + version = "0.5.13"; + + src = fetchFromGitHub { + owner = "saenzramiro"; + repo = "rambox"; + rev = version; + sha256 = "0c770a9z017y6gcrpyri7s1gifm8zi5f29bq5nvh3zzg4wgqh326"; + }; + + nativeBuildInputs = [ nodejs-8_x ruby sencha ]; + + node_modules = fetchNodeModules { + inherit src; + + nodejs = nodejs-8_x; + sha256 = "1y3q8ggyvfywxqi5hn9mvr1sjfylspis43iyf4b7snyr1a1br3r4"; + }; + + patches = [ ./hide-check-for-updates.patch ./isDev.patch ]; + + # These credentials are only for this derivation. If you want to get credentials + # for another distribution, go to https://auth0.com. If you want to reuse the same + # domain, drop a line at yegortimoshenko@gmail.com! + auth0ClientID = "0spuNKfIGeLAQ_Iki9t3fGxbfJl3k8SU"; + auth0Domain = "nixpkgs.auth0.com"; + + configurePhase = '' + echo 'var auth0Cfg = { clientID: "${auth0ClientID}", domain: "${auth0Domain}" };' > env.js + ln -s ${node_modules} node_modules + ''; + + buildPhase = '' + mkdir ../rambox-build + npm run sencha:compile:build + ''; + + installPhase = '' + mv ../rambox-build/ $out + + # https://github.com/saenzramiro/rambox/issues/1281 + echo '{"name": "rambox", "version": "${version}", "main": "electron/main.js"}' > $out/package.json + + # https://github.com/saenzramiro/rambox/issues/1282 + cp --parents ext/packages/ext-locale/build/ext-locale-*.js $out + + # Symbolic link causes `Uncaught Error: Cannot find module 'immutable'` + cp -r ${node_modules} $out/node_modules + ''; + + meta = with stdenv.lib; { + description = "Messaging and emailing app that combines common web applications into one"; + homepage = http://rambox.pro; + license = licenses.gpl3; + maintainers = with maintainers; [ gnidorah ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/networking/instant-messengers/rambox/default.nix b/pkgs/applications/networking/instant-messengers/rambox/default.nix index 7c8367d7f7fb..2e574fae8fa5 100644 --- a/pkgs/applications/networking/instant-messengers/rambox/default.nix +++ b/pkgs/applications/networking/instant-messengers/rambox/default.nix @@ -1,64 +1,26 @@ -{ stdenv, fetchurl, dpkg, makeWrapper -, xorg, gtk2, atk, glib, pango, gdk_pixbuf, cairo, freetype, fontconfig -, gnome2, dbus, nss, nspr, alsaLib, cups, expat, udev, libnotify, xdg_utils }: +{ stdenv, newScope, makeWrapper, electron, xdg_utils }: let - bits = if stdenv.system == "x86_64-linux" then "x64" - else "ia32"; - - version = "0.5.13"; - - runtimeDeps = [ - udev libnotify - ]; - deps = (with xorg; [ - libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes - libXrender libX11 libXtst libXScrnSaver libxcb - ]) ++ [ - gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus - gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc - ] ++ runtimeDeps; -in stdenv.mkDerivation rec { - name = "rambox-${version}"; - src = fetchurl { - url = "https://github.com/saenzramiro/rambox/releases/download/${version}/Rambox_${version}-${bits}.deb"; - sha256 = if bits == "x64" then - "0bn562fr1wsnn3xsd4q2rrxi6c56vckrkfmjl2dqb30hpmj2vn0d" else - "180ndvkil5mk5idwnn7spfygnhhll6pjc342pfzgmzk46a723qs4"; + callPackage = newScope self; + self = { + fetchNodeModules = callPackage ./fetchNodeModules.nix {}; + rambox-bare = callPackage ./bare.nix {}; + sencha = callPackage ./sencha {}; }; +in - # don't remove runtime deps - dontPatchELF = true; +with self; - buildInputs = [ dpkg makeWrapper ]; +stdenv.mkDerivation { + name = "rambox-${rambox-bare.version}"; - unpackPhase = "dpkg-deb -x $src ."; + nativeBuildInputs = [ makeWrapper ]; + + unpackPhase = ":"; installPhase = '' - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" opt/Rambox/rambox - patchelf --set-rpath "$out/opt/Rambox:${stdenv.lib.makeLibraryPath deps}" opt/Rambox/rambox - - mkdir -p $out/bin - cp -r opt $out - ln -s $out/opt/Rambox/rambox $out/bin - - # provide resources - cp -r usr/share $out - substituteInPlace $out/share/applications/rambox.desktop \ - --replace Exec=\"/opt/Rambox/rambox\" Exec=rambox + makeWrapper ${electron}/bin/electron $out/bin/rambox \ + --add-flags "${rambox-bare} --without-update" \ + --prefix PATH : ${xdg_utils}/bin ''; - - postFixup = '' - paxmark m $out/opt/Rambox/rambox - wrapProgram $out/opt/Rambox/rambox --prefix PATH : ${xdg_utils}/bin - ''; - - meta = with stdenv.lib; { - description = "Free and Open Source messaging and emailing app that combines common web applications into one"; - homepage = http://rambox.pro; - license = licenses.mit; - maintainers = [ maintainers.gnidorah ]; - platforms = ["i686-linux" "x86_64-linux"]; - hydraPlatforms = []; - }; } diff --git a/pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix b/pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix new file mode 100644 index 000000000000..047890a932ca --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix @@ -0,0 +1,26 @@ +{ stdenv, jq }: { src, nodejs, sha256 }: + +# Only npm >= 5.4.2 is deterministic, see: +# https://github.com/npm/npm/issues/17979#issuecomment-332701215 +assert stdenv.lib.versionAtLeast nodejs.version "8.9.0"; + +stdenv.mkDerivation { + name = "node_modules"; + + outputHashAlgo = "sha256"; + outputHash = sha256; + outputHashMode = "recursive"; + + nativeBuildInputs = [ jq nodejs ]; + + buildCommand = '' + cp -r ${src}/* . + HOME=. npm install --force --ignore-scripts --only=production + for f in $(find node_modules -name package.json); do + # https://github.com/npm/npm/issues/10393 + jq -S 'delpaths(keys | map(select(startswith("_")) | [.]))' $f > $f.tmp + mv $f.tmp $f + done + mv node_modules $out + ''; +} diff --git a/pkgs/applications/networking/instant-messengers/rambox/hide-check-for-updates.patch b/pkgs/applications/networking/instant-messengers/rambox/hide-check-for-updates.patch new file mode 100644 index 000000000000..8363baef2dfc --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/rambox/hide-check-for-updates.patch @@ -0,0 +1,35 @@ +https://github.com/saenzramiro/rambox/issues/1283 + +diff -urNZ a/electron/menu.js b/electron/menu.js +--- a/electron/menu.js 2017-11-02 22:02:59.753119865 +0000 ++++ b/electron/menu.js 2017-11-02 22:08:34.419698562 +0000 +@@ -220,14 +220,6 @@ + } + }, + { +- label: locale['menu.help[5]'], +- click(item, win) { +- const webContents = win.webContents; +- const send = webContents.send.bind(win.webContents); +- send('autoUpdater:check-update'); +- } +- }, +- { + label: locale['menu.help[6]'], + click() { + sendAction('showAbout') +@@ -290,14 +282,6 @@ + type: 'separator' + }); + helpSubmenu.push({ +- label: `&`+locale['menu.help[5]'], +- click(item, win) { +- const webContents = win.webContents; +- const send = webContents.send.bind(win.webContents); +- send('autoUpdater:check-update'); +- } +- }); +- helpSubmenu.push({ + label: `&`+locale['menu.help[6]'], + click() { + sendAction('showAbout') diff --git a/pkgs/applications/networking/instant-messengers/rambox/isDev.patch b/pkgs/applications/networking/instant-messengers/rambox/isDev.patch new file mode 100644 index 000000000000..b918144c7662 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/rambox/isDev.patch @@ -0,0 +1,14 @@ +https://github.com/saenzramiro/rambox/issues/1280 + +diff -urNZ a/electron/main.js b/electron/main.js +--- a/electron/main.js 2017-11-02 14:58:06.085127616 +0000 ++++ b/electron/main.js 2017-11-02 14:58:18.316887679 +0000 +@@ -8,7 +8,7 @@ + // Configuration + const Config = require('electron-config'); + // Development +-const isDev = require('electron-is-dev'); ++const isDev = false; + // Updater + const updater = require('./updater'); + // File System diff --git a/pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix b/pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix new file mode 100644 index 000000000000..9b4a718ed23d --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, gzip, which, unzip, jdk }: + +let + version = "6.5.2"; + srcs = { + i686-linux = fetchurl { + url = "https://cdn.sencha.com/cmd/${version}/no-jre/SenchaCmd-${version}-linux-i386.sh.zip"; + sha256 = "18gcqw9434xab97skcb97iw4p4s2pgggvq7jaisblap0ja00kqjr"; + }; + x86_64-linux = fetchurl { + url = "https://cdn.sencha.com/cmd/${version}/no-jre/SenchaCmd-${version}-linux-amd64.sh.zip"; + sha256 = "1b8jv99k37q1bi7b29f23lfzxc66v5fqdmr1rxsrqchwcrllc0z7"; + }; + }; +in + +stdenv.mkDerivation rec { + inherit version; + + name = "sencha-bare-${version}"; + src = srcs.${stdenv.system}; + + nativeBuildInputs = [ gzip which unzip ]; + buildInputs = [ jdk ]; + + sourceRoot = "."; + + configurePhase = '' + substituteAll ${./response.varfile} response.varfile + ''; + + installPhase = '' + ./SenchaCmd*.sh -q -dir $out -varfile response.varfile + rm $out/shell-wrapper.sh $out/Uninstaller + ''; + + meta = with stdenv.lib; { + license = licenses.unfree; + platforms = attrNames srcs; + }; +} diff --git a/pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix b/pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix new file mode 100644 index 000000000000..1ca04a9e1686 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix @@ -0,0 +1,17 @@ +{ stdenv, callPackage, makeWrapper }: + +let + sencha-bare = callPackage ./bare.nix {}; +in + +stdenv.mkDerivation { + name = "sencha-${sencha-bare.version}"; + + nativeBuildInputs = [ makeWrapper ]; + + unpackPhase = ":"; + + installPhase = '' + makeWrapper ${sencha-bare}/sencha $out/bin/sencha + ''; +} diff --git a/pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile b/pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile new file mode 100644 index 000000000000..0ff6f0a30d50 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile @@ -0,0 +1,13 @@ +addToPath$Integer=1 +parentDir=. +sys.adminRights$Boolean=false +sys.component.148$Boolean=true +sys.component.157$Boolean=true +sys.component.26$Boolean=true +sys.component.30$Boolean=true +sys.component.90$Boolean=true +sys.component.91$Boolean=true +sys.component.92$Boolean=true +sys.component.94$Boolean=true +sys.installationDir=@out@ +sys.languageId=en \ No newline at end of file From 3e9daece1d1ed6919061f965bc9acea5c6f68a3b Mon Sep 17 00:00:00 2001 From: Bojan Nikolic Date: Fri, 3 Nov 2017 21:36:43 +0000 Subject: [PATCH 046/138] nixos/cc-wrapper: Fix bug if dynamicLinker not found If a dynamic linker for target is not found the generated script fails due to unbound variable error (due to "set -u"). Correct by specifying default value with dynamicLinker:- and not generating ldflagsBefore if no linker is found. This problem was found when cross compiling to mingw32 targets --- pkgs/build-support/cc-wrapper/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 489fb02dcb5d..80f794cbdde2 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -286,7 +286,7 @@ stdenv.mkDerivation { *) echo "Multiple dynamic linkers found for platform '${targetPlatform.config}'." >&2;; esac - if [ -n "$dynamicLinker" ]; then + if [ -n "''${dynamicLinker:-}" ]; then echo $dynamicLinker > $out/nix-support/dynamic-linker '' + (if targetPlatform.isDarwin then '' @@ -296,7 +296,9 @@ stdenv.mkDerivation { echo ${libc_lib}/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 fi - local ldflagsBefore=(-dynamic-linker "$dynamicLinker") + if [ -n "''${dynamicLinker:-}" ]; then + local ldflagsBefore=(-dynamic-linker "$dynamicLinker") + fi '') + '' fi From 632a1807db13f0176f1374788cd15070eebed8e5 Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Sat, 4 Nov 2017 12:57:58 +0100 Subject: [PATCH 047/138] hyp: move expression out python-packages.nix --- pkgs/servers/http/hyp/default.nix | 19 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ pkgs/top-level/python-packages.nix | 19 ------------------- 3 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 pkgs/servers/http/hyp/default.nix diff --git a/pkgs/servers/http/hyp/default.nix b/pkgs/servers/http/hyp/default.nix new file mode 100644 index 000000000000..3a1eb50f05be --- /dev/null +++ b/pkgs/servers/http/hyp/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, python3Packages }: + +python3Packages.buildPythonPackage rec { + name = "hyp-server-${version}"; + version = "1.2.0"; + + src = fetchurl { + url = "mirror://pypi/h/hyp-server/${name}.tar.gz"; + sha256 = "1lafjdcn9nnq6xc3hhyizfwh6l69lc7rixn6dx65aq71c913jc15"; + }; + + meta = with stdenv.lib; { + description = "Hyperminimal https server"; + homepage = https://github.com/rnhmjoj/hyp; + license = with licenses; [gpl3Plus mit]; + maintainers = with maintainers; [ rnhmjoj ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b64dd498b6d0..93c1245eb11b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11489,6 +11489,8 @@ with pkgs; exhibitor = callPackage ../servers/exhibitor { }; + hyp = callPackage ../servers/http/hyp/default.nix { }; + prosody = callPackage ../servers/xmpp/prosody { lua5 = lua5_1; inherit (lua51Packages) luasocket luasec luaexpat luafilesystem luabitop luaevent luazlib; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index cf670a40c6cc..300dcd1e9d5e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7726,25 +7726,6 @@ in { subliminal = callPackage ../development/python-modules/subliminal {}; - hyp = buildPythonPackage rec { - name = "hyp-server-${version}"; - version = "1.2.0"; - disabled = !isPy3k; - - src = pkgs.fetchurl { - url = "mirror://pypi/h/hyp-server/${name}.tar.gz"; - sha256 = "1lafjdcn9nnq6xc3hhyizfwh6l69lc7rixn6dx65aq71c913jc15"; - }; - - meta = { - description = "Hyperminimal https server"; - homepage = https://github.com/rnhmjoj/hyp; - license = with licenses; [gpl3Plus mit]; - maintainers = with maintainers; [ rnhmjoj ]; - platforms = platforms.unix; - }; - }; - hyperlink = callPackage ../development/python-modules/hyperlink {}; zope_copy = buildPythonPackage rec { From 25f080ca4af5b5bff1640cdd11202a3ae31b086c Mon Sep 17 00:00:00 2001 From: mimadrid Date: Tue, 24 Oct 2017 17:53:30 +0200 Subject: [PATCH 048/138] gawk: 4.1.4 -> 4.2.0 --- pkgs/tools/text/gawk/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index 415a2ade28db..65d0a1e4c00a 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -19,11 +19,11 @@ let inherit (stdenv.lib) optional; in stdenv.mkDerivation rec { - name = "gawk-4.1.4"; + name = "gawk-4.2.0"; src = fetchurl { url = "mirror://gnu/gawk/${name}.tar.xz"; - sha256 = "0rn2mmjxm767zliqzd67j7h2ncjn4j0321c60y9fy3grs3i89qak"; + sha256 = "1wm9lqj77y7xz07zi0n187aqm8zavzxzpm1j53ahxz81q0qwvwyl"; }; # When we do build separate interactive version, it makes sense to always include man. From ef21b240c84ae4a1c3dd3c7060006d766c2140bc Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Sun, 5 Nov 2017 10:12:19 +0100 Subject: [PATCH 049/138] fetchurl: add passthru so that we could add e.g. the `version` attribute. --- pkgs/build-support/fetchurl/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 5811950bf053..8dac273eb1ca 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -84,6 +84,9 @@ in , # Meta information, if any. meta ? {} + + # Passthru information, if any. +, passthru ? {} }: assert builtins.isList urls; @@ -139,4 +142,5 @@ else stdenv.mkDerivation { ''; inherit meta; + inherit passthru; } From 5f3b84e979a85765fd2f05b302d75b24b285f930 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Tue, 17 Oct 2017 00:31:44 +0300 Subject: [PATCH 050/138] cc-wrapper: disable POSIX compatibility --- pkgs/build-support/cc-wrapper/cc-wrapper.sh | 2 +- pkgs/build-support/cc-wrapper/gnat-wrapper.sh | 2 +- pkgs/build-support/cc-wrapper/gnatlink-wrapper.sh | 2 +- pkgs/build-support/cc-wrapper/ld-wrapper.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/cc-wrapper.sh b/pkgs/build-support/cc-wrapper/cc-wrapper.sh index f1f56cf5cec4..d2cdbf6ce0cc 100644 --- a/pkgs/build-support/cc-wrapper/cc-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/cc-wrapper.sh @@ -1,5 +1,5 @@ #! @shell@ -set -eu -o pipefail +set -eu -o pipefail +o posix shopt -s nullglob if (( "${NIX_DEBUG:-0}" >= 7 )); then diff --git a/pkgs/build-support/cc-wrapper/gnat-wrapper.sh b/pkgs/build-support/cc-wrapper/gnat-wrapper.sh index b15f1e461e5f..7a0eb28be636 100644 --- a/pkgs/build-support/cc-wrapper/gnat-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/gnat-wrapper.sh @@ -1,5 +1,5 @@ #! @shell@ -set -eu -o pipefail +set -eu -o pipefail +o posix shopt -s nullglob if (( "${NIX_DEBUG:-0}" >= 7 )); then diff --git a/pkgs/build-support/cc-wrapper/gnatlink-wrapper.sh b/pkgs/build-support/cc-wrapper/gnatlink-wrapper.sh index 88e644dc54dc..0944d74e431b 100644 --- a/pkgs/build-support/cc-wrapper/gnatlink-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/gnatlink-wrapper.sh @@ -1,5 +1,5 @@ #! @shell@ -set -eu -o pipefail +set -eu -o pipefail +o posix shopt -s nullglob if (( "${NIX_DEBUG:-0}" >= 7 )); then diff --git a/pkgs/build-support/cc-wrapper/ld-wrapper.sh b/pkgs/build-support/cc-wrapper/ld-wrapper.sh index 232e1245af07..ef618f9a86d4 100644 --- a/pkgs/build-support/cc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/ld-wrapper.sh @@ -1,5 +1,5 @@ #! @shell@ -set -eu -o pipefail +set -eu -o pipefail +o posix shopt -s nullglob if (( "${NIX_DEBUG:-0}" >= 7 )); then From aee015dbcf229a441883660aa48201b215e946a2 Mon Sep 17 00:00:00 2001 From: volth Date: Sun, 5 Nov 2017 17:17:31 +0000 Subject: [PATCH 051/138] opera: 46.0.2597.39 -> 48.0.2685.52 --- .../networking/browsers/opera/default.nix | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix index 52a2ce9164c9..0852b5c9d434 100644 --- a/pkgs/applications/networking/browsers/opera/default.nix +++ b/pkgs/applications/networking/browsers/opera/default.nix @@ -37,7 +37,7 @@ let mirror = https://get.geo.opera.com/pub/opera/desktop; - version = "46.0.2597.39"; + version = "48.0.2685.52"; rpath = stdenv.lib.makeLibraryPath [ @@ -87,19 +87,10 @@ in stdenv.mkDerivation { name = "opera-${version}"; - src = - #if stdenv.system == "i686-linux" then - # fetchurl { - # url = "${mirror}/${version}/linux/opera-stable_${version}_i386.deb"; - # sha256 = "..."; - # } - #else - if stdenv.system == "x86_64-linux" then - fetchurl { - url = "${mirror}/${version}/linux/opera-stable_${version}_amd64.deb"; - sha256 = "1ladvqilm5rr222wjybvribnyii2l0p8jbsd10xr06wps63g1kia"; - } - else throw "Opera is not supported on ${stdenv.system} (only x86_64 linux is supported)"; + src = fetchurl { + url = "${mirror}/${version}/linux/opera-stable_${version}_amd64.deb"; + sha256 = "027njqh2as4d0xsnvzamqiplghb8cxqnc19y0vqkvjnsw57v828p"; + }; unpackCmd = "${dpkg}/bin/dpkg-deb -x $curSrc ."; @@ -123,6 +114,7 @@ in stdenv.mkDerivation { meta = { homepage = http://www.opera.com; description = "Web browser"; + platforms = [ "x86_64-linux" ]; license = stdenv.lib.licenses.unfree; }; } From 721e07ea99573cb242a0df6c00f260471e12388b Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sun, 5 Nov 2017 11:29:50 -0600 Subject: [PATCH 052/138] hplip: 3.17.9 -> 3.17.10 --- pkgs/misc/drivers/hplip/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix index a01fc74ce471..66ed1d44adc7 100644 --- a/pkgs/misc/drivers/hplip/default.nix +++ b/pkgs/misc/drivers/hplip/default.nix @@ -11,16 +11,16 @@ let name = "hplip-${version}"; - version = "3.17.9"; + version = "3.17.10"; src = fetchurl { url = "mirror://sourceforge/hplip/${name}.tar.gz"; - sha256 = "0y46jjq8jdfk9m4vjq55h8yggibvqbi9rl08vni7vbhxym1diamj"; + sha256 = "0v27hg856b5z2rilczcbfgz8ksxn0n810g1glac3mxkj8qbl8wqg"; }; plugin = fetchurl { - url = "http://hplipopensource.com/hplip-web/plugin/${name}-plugin.run"; - sha256 = "10z8vzwcwmwni7s4j9xp0fa7l4lwrhl4kp450dga3fj0cck1gxwq"; + url = "http://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/${name}-plugin.run"; + sha256 = "07am3dnl0ipgfswz5wndprryljh9rqbfhq7mm4d4yyj3bdnnzlig"; }; hplipState = substituteAll { From 0c01c58aec109d856aeb09fc3479b4af902174a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 27 Aug 2017 22:06:04 +0200 Subject: [PATCH 053/138] gcc6: fix build with new glibc, by upstream patches --- pkgs/development/compilers/gcc/6/default.nix | 4 +- .../compilers/gcc/struct-sigaltstack.patch | 87 ++++++++ .../compilers/gcc/struct-ucontext.patch | 190 ++++++++++++++++++ 3 files changed, 280 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/gcc/struct-sigaltstack.patch create mode 100644 pkgs/development/compilers/gcc/struct-ucontext.patch diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 47cb93c19953..7d019c7fe848 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -72,7 +72,9 @@ let version = "6.4.0"; # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its # target libraries and tools. ++ optional langAda ../gnat-cflags.patch - ++ optional langFortran ../gfortran-driving.patch; + ++ optional langFortran ../gfortran-driving.patch + ++ [ ../struct-ucontext.patch ../struct-sigaltstack.patch ] # glibc-2.26 + ; javaEcj = fetchurl { # The `$(top_srcdir)/ecj.jar' file is automatically picked up at diff --git a/pkgs/development/compilers/gcc/struct-sigaltstack.patch b/pkgs/development/compilers/gcc/struct-sigaltstack.patch new file mode 100644 index 000000000000..6e1ddb252c24 --- /dev/null +++ b/pkgs/development/compilers/gcc/struct-sigaltstack.patch @@ -0,0 +1,87 @@ +From 72edc2c02f8b4768ad660f46a1c7e2400c0a8e06 Mon Sep 17 00:00:00 2001 +From: jakub +Date: Mon, 17 Jul 2017 19:41:08 +0000 +Subject: [PATCH] Backported from mainline 2017-07-14 Jakub + Jelinek + + PR sanitizer/81066 + * sanitizer_common/sanitizer_linux.h: Cherry-pick upstream r307969. + * sanitizer_common/sanitizer_linux.cc: Likewise. + * sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc: Likewise. + * tsan/tsan_platform_linux.cc: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250287 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + libsanitizer/ChangeLog (REMOVED) | 11 +++++++++++ + libsanitizer/sanitizer_common/sanitizer_linux.cc | 3 +-- + libsanitizer/sanitizer_common/sanitizer_linux.h | 4 +--- + .../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc | 2 +- + libsanitizer/tsan/tsan_platform_linux.cc | 2 +- + 5 files changed, 15 insertions(+), 7 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc +index 806fcd5..5b6f186 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc +@@ -605,8 +605,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) { + } + #endif + +-uptr internal_sigaltstack(const struct sigaltstack *ss, +- struct sigaltstack *oss) { ++uptr internal_sigaltstack(const void *ss, void *oss) { + return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss); + } + +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h +index 895bfc1..a42df57 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.h ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.h +@@ -19,7 +19,6 @@ + #include "sanitizer_platform_limits_posix.h" + + struct link_map; // Opaque type returned by dlopen(). +-struct sigaltstack; + + namespace __sanitizer { + // Dirent structure for getdents(). Note that this structure is different from +@@ -28,8 +27,7 @@ struct linux_dirent; + + // Syscall wrappers. + uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count); +-uptr internal_sigaltstack(const struct sigaltstack* ss, +- struct sigaltstack* oss); ++uptr internal_sigaltstack(const void* ss, void* oss); + uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set, + __sanitizer_sigset_t *oldset); + +diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +index 891386dc..234e8c6 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +@@ -273,7 +273,7 @@ static int TracerThread(void* argument) { + + // Alternate stack for signal handling. + InternalScopedBuffer handler_stack_memory(kHandlerStackSize); +- struct sigaltstack handler_stack; ++ stack_t handler_stack; + internal_memset(&handler_stack, 0, sizeof(handler_stack)); + handler_stack.ss_sp = handler_stack_memory.data(); + handler_stack.ss_size = kHandlerStackSize; +diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc +index 2ed5718..6f972ab 100644 +--- a/libsanitizer/tsan/tsan_platform_linux.cc ++++ b/libsanitizer/tsan/tsan_platform_linux.cc +@@ -287,7 +287,7 @@ void InitializePlatform() { + int ExtractResolvFDs(void *state, int *fds, int nfd) { + #if SANITIZER_LINUX && !SANITIZER_ANDROID + int cnt = 0; +- __res_state *statp = (__res_state*)state; ++ struct __res_state *statp = (struct __res_state*)state; + for (int i = 0; i < MAXNS && cnt < nfd; i++) { + if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1) + fds[cnt++] = statp->_u._ext.nssocks[i]; +-- +2.9.3 + diff --git a/pkgs/development/compilers/gcc/struct-ucontext.patch b/pkgs/development/compilers/gcc/struct-ucontext.patch new file mode 100644 index 000000000000..c7fb6d1f71cf --- /dev/null +++ b/pkgs/development/compilers/gcc/struct-ucontext.patch @@ -0,0 +1,190 @@ +From b685411208e0aaa79190d54faf945763514706b8 Mon Sep 17 00:00:00 2001 +From: jsm28 +Date: Tue, 4 Jul 2017 10:23:57 +0000 +Subject: [PATCH] Use ucontext_t not struct ucontext in linux-unwind.h files. + +Current glibc no longer gives the ucontext_t type the tag struct +ucontext, to conform with POSIX namespace rules. This requires +various linux-unwind.h files in libgcc, that were previously using +struct ucontext, to be fixed to use ucontext_t instead. This is +similar to the removal of the struct siginfo tag from siginfo_t some +years ago. + +This patch changes those files to use ucontext_t instead. As the +standard name that should be unconditionally safe, so this is not +restricted to architectures supported by glibc, or conditioned on the +glibc version. + +Tested compilation together with current glibc with glibc's +build-many-glibcs.py. + + * config/aarch64/linux-unwind.h (aarch64_fallback_frame_state), + config/alpha/linux-unwind.h (alpha_fallback_frame_state), + config/bfin/linux-unwind.h (bfin_fallback_frame_state), + config/i386/linux-unwind.h (x86_64_fallback_frame_state, + x86_fallback_frame_state), config/m68k/linux-unwind.h (struct + uw_ucontext), config/nios2/linux-unwind.h (struct nios2_ucontext), + config/pa/linux-unwind.h (pa32_fallback_frame_state), + config/sh/linux-unwind.h (sh_fallback_frame_state), + config/tilepro/linux-unwind.h (tile_fallback_frame_state), + config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Use + ucontext_t instead of struct ucontext. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@249957 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + libgcc/ChangeLog (REMOVED) | 14 ++++++++++++++ + libgcc/config/aarch64/linux-unwind.h | 2 +- + libgcc/config/alpha/linux-unwind.h | 2 +- + libgcc/config/bfin/linux-unwind.h | 2 +- + libgcc/config/i386/linux-unwind.h | 4 ++-- + libgcc/config/m68k/linux-unwind.h | 2 +- + libgcc/config/nios2/linux-unwind.h | 2 +- + libgcc/config/pa/linux-unwind.h | 2 +- + libgcc/config/sh/linux-unwind.h | 2 +- + libgcc/config/tilepro/linux-unwind.h | 2 +- + libgcc/config/xtensa/linux-unwind.h | 2 +- + 11 files changed, 25 insertions(+), 11 deletions(-) + +diff --git a/libgcc/config/aarch64/linux-unwind.h b/libgcc/config/aarch64/linux-unwind.h +index 4512efb..06de45a 100644 +--- a/libgcc/config/aarch64/linux-unwind.h ++++ b/libgcc/config/aarch64/linux-unwind.h +@@ -52,7 +52,7 @@ aarch64_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe + { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + }; + + struct rt_sigframe *rt_; +diff --git a/libgcc/config/alpha/linux-unwind.h b/libgcc/config/alpha/linux-unwind.h +index bdbba4a..e84812e 100644 +--- a/libgcc/config/alpha/linux-unwind.h ++++ b/libgcc/config/alpha/linux-unwind.h +@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; + } +diff --git a/libgcc/config/bfin/linux-unwind.h b/libgcc/config/bfin/linux-unwind.h +index 77b7c23..8bf5e82 100644 +--- a/libgcc/config/bfin/linux-unwind.h ++++ b/libgcc/config/bfin/linux-unwind.h +@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context, + void *puc; + char retcode[8]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + + /* The void * cast is necessary to avoid an aliasing warning. +diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h +index 540a0a2..29efbe3 100644 +--- a/libgcc/config/i386/linux-unwind.h ++++ b/libgcc/config/i386/linux-unwind.h +@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context, + if (*(unsigned char *)(pc+0) == 0x48 + && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL) + { +- struct ucontext *uc_ = context->cfa; ++ ucontext_t *uc_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem + because it does not alias anything. */ +@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context, + siginfo_t *pinfo; + void *puc; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/m68k/linux-unwind.h b/libgcc/config/m68k/linux-unwind.h +index 75b7cf7..f964e24 100644 +--- a/libgcc/config/m68k/linux-unwind.h ++++ b/libgcc/config/m68k/linux-unwind.h +@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + /* is unfortunately broken right now. */ + struct uw_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + unsigned long uc_filler[80]; +diff --git a/libgcc/config/nios2/linux-unwind.h b/libgcc/config/nios2/linux-unwind.h +index 2304142..30f25ea 100644 +--- a/libgcc/config/nios2/linux-unwind.h ++++ b/libgcc/config/nios2/linux-unwind.h +@@ -38,7 +38,7 @@ struct nios2_mcontext { + + struct nios2_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + struct nios2_mcontext uc_mcontext; + sigset_t uc_sigmask; /* mask last for extensibility */ +diff --git a/libgcc/config/pa/linux-unwind.h b/libgcc/config/pa/linux-unwind.h +index 9a2657f..e47493d 100644 +--- a/libgcc/config/pa/linux-unwind.h ++++ b/libgcc/config/pa/linux-unwind.h +@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context, + struct sigcontext *sc; + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *frame; + + /* rt_sigreturn trampoline: +diff --git a/libgcc/config/sh/linux-unwind.h b/libgcc/config/sh/linux-unwind.h +index e389cac..0bf43ba 100644 +--- a/libgcc/config/sh/linux-unwind.h ++++ b/libgcc/config/sh/linux-unwind.h +@@ -180,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/tilepro/linux-unwind.h b/libgcc/config/tilepro/linux-unwind.h +index 796e976..75f8890 100644 +--- a/libgcc/config/tilepro/linux-unwind.h ++++ b/libgcc/config/tilepro/linux-unwind.h +@@ -61,7 +61,7 @@ tile_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe { + unsigned char save_area[C_ABI_SAVE_AREA_SIZE]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* Return if this is not a signal handler. */ +diff --git a/libgcc/config/xtensa/linux-unwind.h b/libgcc/config/xtensa/linux-unwind.h +index 9872492..586a9d4 100644 +--- a/libgcc/config/xtensa/linux-unwind.h ++++ b/libgcc/config/xtensa/linux-unwind.h +@@ -67,7 +67,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context, + + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* movi a2, __NR_rt_sigreturn; syscall */ +-- +2.9.3 + From 9bb67d5c1e546968fa3d195f0bcad82414243566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sat, 26 Aug 2017 11:35:11 +0200 Subject: [PATCH 054/138] glibc: 2.25-49 -> 2.26-75 Security: the NEWS claims a couple more CVEs are fixed than what we patched, though perhaps nothing critical. I personally don't find DNS fragmentation attacks that interesting anymore, as it's just about weaker improvements for cases that choose not to use DNSSEC. Largest expected caveat: upstream bumped the minimal supportable kernel to 3.2.0. That's the oldest kernel still supported upstream, released in Jan 2012, but most notably RHEL 6 and derivates still use a heavily patched 2.6.32 kernel and those systems are still supported and in use (production support is scheduled to last till the end of 2020!). --- .../libraries/glibc/2.25-49.patch.gz | Bin 89721 -> 0 bytes .../libraries/glibc/2.26-75.patch.gz | Bin 0 -> 289084 bytes pkgs/development/libraries/glibc/common.nix | 17 +++++++---------- 3 files changed, 7 insertions(+), 10 deletions(-) delete mode 100644 pkgs/development/libraries/glibc/2.25-49.patch.gz create mode 100644 pkgs/development/libraries/glibc/2.26-75.patch.gz diff --git a/pkgs/development/libraries/glibc/2.25-49.patch.gz b/pkgs/development/libraries/glibc/2.25-49.patch.gz deleted file mode 100644 index 6796347e3795f2c45c400cbb3789ff86f36ebf92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89721 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 z%0D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 C_JCdh diff --git a/pkgs/development/libraries/glibc/2.26-75.patch.gz b/pkgs/development/libraries/glibc/2.26-75.patch.gz new file mode 100644 index 0000000000000000000000000000000000000000..e2a8867e4fff6396fd1c1a368929c9f0e93e6d1e GIT binary patch literal 289084 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≷Ipmyu+f)j4K7 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�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 z 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 literal 0 HcmV?d00001 diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 5c7bbb32c330..7894d75fbe67 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -19,9 +19,9 @@ } @ args: let - version = "2.25"; - patchSuffix = "-49"; - sha256 = "067bd9bb3390e79aa45911537d13c3721f1d9d3769931a30c2681bfee66f23a0"; + version = "2.26"; + patchSuffix = "-75"; + sha256 = "1ggnj1hzjym7sn93rbwydcqd562q73lsb7g7kd199g6j9j9hlkp5"; cross = if buildPlatform != hostPlatform then hostPlatform else null; in @@ -46,7 +46,7 @@ stdenv.mkDerivation ({ glibc-2.25-49-gbc5ace67fe $ git show --reverse glibc-2.25..release/2.25/master | gzip -n -9 --rsyncable - > 2.25-49.patch.gz */ - ./2.25-49.patch.gz + ./2.26-75.patch.gz /* Have rpcgen(1) look for cpp(1) in $PATH. */ ./rpcgen-path.patch @@ -100,15 +100,12 @@ stdenv.mkDerivation ({ (if profilingLibraries then "--enable-profile" else "--disable-profile") - ] ++ lib.optionals (cross == null && withLinuxHeaders) [ - "--enable-kernel=2.6.32" + ] ++ lib.optionals withLinuxHeaders [ + "--enable-kernel=3.2.0" # can't get below with glibc >= 2.26 ] ++ lib.optionals (cross != null) [ (if cross.withTLS then "--with-tls" else "--without-tls") (if cross ? float && cross.float == "soft" then "--without-fp" else "--with-fp") - ] ++ lib.optionals (cross != null - && cross.platform ? kernelMajor - && cross.platform.kernelMajor == "2.6") [ - "--enable-kernel=2.6.0" + ] ++ lib.optionals (cross != null) [ "--with-__thread" ] ++ lib.optionals (cross == null && stdenv.isArm) [ "--host=arm-linux-gnueabi" From 1aef6f40bbbe3348986058a12898e57afd4c0ba6 Mon Sep 17 00:00:00 2001 From: "Ricardo M. Correia" Date: Thu, 14 Sep 2017 14:58:37 +0200 Subject: [PATCH 055/138] libgit2: fix hash ... and switch to fetchFromGitHub to avoid future hash changes. --- pkgs/development/libraries/git2/default.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/git2/default.nix b/pkgs/development/libraries/git2/default.nix index 0d53d00737ba..ecc6552d1b44 100644 --- a/pkgs/development/libraries/git2/default.nix +++ b/pkgs/development/libraries/git2/default.nix @@ -1,13 +1,16 @@ -{ stdenv, fetchurl, pkgconfig, cmake, zlib, python, libssh2, openssl, curl, http-parser, libiconv }: +{ stdenv, fetchFromGitHub, cmake, pkgconfig, python +, zlib, libssh2, openssl, http-parser, curl, libiconv +}: stdenv.mkDerivation (rec { version = "0.25.1"; name = "libgit2-${version}"; - src = fetchurl { - name = "${name}.tar.gz"; - url = "https://github.com/libgit2/libgit2/tarball/v${version}"; - sha256 = "100bah8picqjzyhpw4wd7z5vyidcb8aggin50bhbpn607h8n8bml"; + src = fetchFromGitHub { + owner = "libgit2"; + repo = "libgit2"; + rev = "v${version}"; + sha256 = "1jhikg0gqpdzfzhgv44ybdpm24lvgkc7ki4306lc5lvmj1s2nylj"; }; # TODO: `cargo` (rust's package manager) surfaced a serious bug in @@ -23,8 +26,11 @@ stdenv.mkDerivation (rec { cmakeFlags = "-DTHREADSAFE=ON"; nativeBuildInputs = [ cmake python pkgconfig ]; + buildInputs = [ zlib libssh2 openssl http-parser curl ]; + enableParallelBuilding = true; + meta = { description = "The Git linkable library"; homepage = https://libgit2.github.com/; From ce1b0c05a52f70fbf03c277018384c9bac3fdf56 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Sun, 5 Nov 2017 05:03:17 +0000 Subject: [PATCH 056/138] libgit2: 0.25.1 -> 0.26.0 --- pkgs/development/libraries/git2/0.25.nix | 43 +++++++++++++++++++++ pkgs/development/libraries/git2/default.nix | 25 ++++-------- pkgs/top-level/all-packages.nix | 10 +++-- 3 files changed, 56 insertions(+), 22 deletions(-) create mode 100644 pkgs/development/libraries/git2/0.25.nix diff --git a/pkgs/development/libraries/git2/0.25.nix b/pkgs/development/libraries/git2/0.25.nix new file mode 100644 index 000000000000..ecc6552d1b44 --- /dev/null +++ b/pkgs/development/libraries/git2/0.25.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, python +, zlib, libssh2, openssl, http-parser, curl, libiconv +}: + +stdenv.mkDerivation (rec { + version = "0.25.1"; + name = "libgit2-${version}"; + + src = fetchFromGitHub { + owner = "libgit2"; + repo = "libgit2"; + rev = "v${version}"; + sha256 = "1jhikg0gqpdzfzhgv44ybdpm24lvgkc7ki4306lc5lvmj1s2nylj"; + }; + + # TODO: `cargo` (rust's package manager) surfaced a serious bug in + # libgit2 when the `Security.framework` transport is used on Darwin. + # The upstream issue is tracked at + # https://github.com/libgit2/libgit2/issues/3885 - feel free to + # remove this patch as soon as it's resolved (i.E. when cargo is + # working fine without this patch) + patches = stdenv.lib.optionals stdenv.isDarwin [ + ./disable-security.framework.patch + ]; + + cmakeFlags = "-DTHREADSAFE=ON"; + + nativeBuildInputs = [ cmake python pkgconfig ]; + + buildInputs = [ zlib libssh2 openssl http-parser curl ]; + + enableParallelBuilding = true; + + meta = { + description = "The Git linkable library"; + homepage = https://libgit2.github.com/; + license = stdenv.lib.licenses.gpl2; + platforms = with stdenv.lib.platforms; all; + }; +} // stdenv.lib.optionalAttrs (!stdenv.isLinux) { + NIX_LDFLAGS = "-liconv"; + propagatedBuildInputs = [ libiconv ]; +}) diff --git a/pkgs/development/libraries/git2/default.nix b/pkgs/development/libraries/git2/default.nix index ecc6552d1b44..42cf181f84f1 100644 --- a/pkgs/development/libraries/git2/default.nix +++ b/pkgs/development/libraries/git2/default.nix @@ -1,28 +1,17 @@ -{ stdenv, fetchFromGitHub, cmake, pkgconfig, python -, zlib, libssh2, openssl, http-parser, curl, libiconv -}: +{ stdenv, fetchFromGitHub, pkgconfig, cmake, zlib, python, libssh2, openssl, curl, http-parser, libiconv }: stdenv.mkDerivation (rec { - version = "0.25.1"; name = "libgit2-${version}"; + version = "0.26.0"; + # keep the version in sync with pythonPackages.pygit2 and gnome3.libgit2-glib src = fetchFromGitHub { owner = "libgit2"; repo = "libgit2"; rev = "v${version}"; - sha256 = "1jhikg0gqpdzfzhgv44ybdpm24lvgkc7ki4306lc5lvmj1s2nylj"; + sha256 = "0zrrmfkfhd2xb4879z5khjb6xsdklrm01f1lscrs2ks68v25fk78"; }; - # TODO: `cargo` (rust's package manager) surfaced a serious bug in - # libgit2 when the `Security.framework` transport is used on Darwin. - # The upstream issue is tracked at - # https://github.com/libgit2/libgit2/issues/3885 - feel free to - # remove this patch as soon as it's resolved (i.E. when cargo is - # working fine without this patch) - patches = stdenv.lib.optionals stdenv.isDarwin [ - ./disable-security.framework.patch - ]; - cmakeFlags = "-DTHREADSAFE=ON"; nativeBuildInputs = [ cmake python pkgconfig ]; @@ -31,11 +20,11 @@ stdenv.mkDerivation (rec { enableParallelBuilding = true; - meta = { + meta = with stdenv.lib; { description = "The Git linkable library"; homepage = https://libgit2.github.com/; - license = stdenv.lib.licenses.gpl2; - platforms = with stdenv.lib.platforms; all; + license = licenses.gpl2; + platforms = with platforms; all; }; } // stdenv.lib.optionalAttrs (!stdenv.isLinux) { NIX_LDFLAGS = "-liconv"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e87a3f73472f..b02213de79d8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8293,11 +8293,13 @@ with pkgs; icon-lang = callPackage ../development/interpreters/icon-lang { }; - libgit2 = callPackage ../development/libraries/git2 ( - stdenv.lib.optionalAttrs stdenv.isDarwin { + inherit (rec { + arg = stdenv.lib.optionalAttrs stdenv.isDarwin { inherit (darwin) libiconv; - } - ); + }; + libgit2 = callPackage ../development/libraries/git2 arg; + libgit2_0_25 = callPackage ../development/libraries/git2/0.25.nix arg; + }) libgit2 libgit2_0_25; gle = callPackage ../development/libraries/gle { }; From 43934459fa82b99abab5565fac537922aecf08ce Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Thu, 2 Nov 2017 16:35:40 +0800 Subject: [PATCH 057/138] pythonPackages.pygit2: 0.25.1 -> 0.26.0 --- .../python-modules/pygit2/default.nix | 31 ++++++++++++++ pkgs/top-level/python-packages.nix | 40 +------------------ 2 files changed, 32 insertions(+), 39 deletions(-) create mode 100644 pkgs/development/python-modules/pygit2/default.nix diff --git a/pkgs/development/python-modules/pygit2/default.nix b/pkgs/development/python-modules/pygit2/default.nix new file mode 100644 index 000000000000..90bfe9783918 --- /dev/null +++ b/pkgs/development/python-modules/pygit2/default.nix @@ -0,0 +1,31 @@ +{ stdenv, lib, buildPythonPackage, fetchPypi, isPyPy, libgit2, six, cffi }: + +buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pygit2"; + version = "0.26.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "1cbc488ra3kg7r3qky17ms0szi3cda2d96qfkv1l9djsy9hnvw57"; + }; + + preConfigure = lib.optionalString stdenv.isDarwin '' + export DYLD_LIBRARY_PATH="${libgit2}/lib" + ''; + + propagatedBuildInputs = [ libgit2 six ] ++ lib.optional (!isPyPy) cffi; + + preCheck = '' + # disable tests that require networking + rm test/test_repository.py + rm test/test_credentials.py + rm test/test_submodule.py + ''; + + meta = with lib; { + description = "A set of Python bindings to the libgit2 shared library"; + homepage = https://pypi.python.org/pypi/pygit2; + license = licenses.gpl2; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e4600cf162a5..98470de6b52e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15674,45 +15674,7 @@ in { }; }; - pygit2 = buildPythonPackage rec { - name = "pygit2-0.25.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pygit2/${name}.tar.gz"; - sha256 = "0sja3g9mqwp5bnhdc313b2gc4z3p70nn6zzf2h8j581g0lrn0sg8"; - }; - - # Fixes a bug which can cause test failed when cffi==1.10 - prePatch = let - cffiVersionPatch = pkgs.fetchurl { - url = "https://github.com/libgit2/pygit2/commit/b88dc868423af2f760f649960112efd0e37e5335.patch"; - sha256 = "14cfrz56y2dnwlxrrss9pjhxfnyyg5856gbabzjzyx674k0qcid4"; - }; - in '' - # we need to delete part of the patch because the missing .travis.yml causes problem - sed -e '1,36d' ${cffiVersionPatch} | patch -p1 - ''; - - preConfigure = ( if stdenv.isDarwin then '' - export DYLD_LIBRARY_PATH="${pkgs.libgit2}/lib" - '' else "" ); - - propagatedBuildInputs = with self; [ pkgs.libgit2 six ] ++ optionals (!isPyPy) [ cffi ]; - - preCheck = '' - # disable tests that require networking - rm test/test_repository.py - rm test/test_credentials.py - rm test/test_submodule.py - ''; - - meta = { - homepage = https://pypi.python.org/pypi/pygit2; - description = "A set of Python bindings to the libgit2 shared library"; - license = licenses.gpl2; - platforms = platforms.all; - }; - }; + pygit2 = callPackage ../development/python-modules/pygit2 { }; Babel = buildPythonPackage (rec { name = "Babel-2.3.4"; From 711f260f71a4b54f28296fc89a2e0c854b72eff2 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Fri, 3 Nov 2017 03:30:31 +0000 Subject: [PATCH 058/138] libgit2-glib: 0.25.0 -> 0.26.0 --- pkgs/desktops/gnome-3/misc/libgit2-glib/default.nix | 10 ++++++---- pkgs/desktops/gnome-3/misc/libgit2-glib/src.nix | 10 ++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/desktops/gnome-3/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/misc/libgit2-glib/default.nix index a71dbf5494da..36feb09d7eef 100644 --- a/pkgs/desktops/gnome-3/misc/libgit2-glib/default.nix +++ b/pkgs/desktops/gnome-3/misc/libgit2-glib/default.nix @@ -1,12 +1,14 @@ -{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala_0_32, libssh2 +{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala, libssh2 , gtk_doc, gobjectIntrospection, libgit2, glib }: stdenv.mkDerivation rec { inherit (import ./src.nix fetchurl) name src; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ gnome3.gnome_common libtool vala_0_32 libssh2 - gtk_doc gobjectIntrospection libgit2 glib ]; + nativeBuildInputs = [ + gnome3.gnome_common libtool pkgconfig vala gtk_doc gobjectIntrospection + ]; + + buildInputs = [ libssh2 libgit2 glib ]; meta = with stdenv.lib; { platforms = platforms.linux; diff --git a/pkgs/desktops/gnome-3/misc/libgit2-glib/src.nix b/pkgs/desktops/gnome-3/misc/libgit2-glib/src.nix index b9abde42cbda..00e747500c61 100644 --- a/pkgs/desktops/gnome-3/misc/libgit2-glib/src.nix +++ b/pkgs/desktops/gnome-3/misc/libgit2-glib/src.nix @@ -1,12 +1,10 @@ # Autogenerated by maintainers/scripts/gnome.sh update -fetchurl: rec { - major = "0.25"; - minor = "0"; - name = "libgit2-glib-${major}.${minor}"; +fetchurl: { + name = "libgit2-glib-0.26.0"; src = fetchurl { - url = "mirror://gnome/sources/libgit2-glib/${major}/${name}.tar.xz"; - sha256 = "0rf5gcr3khp35wj9ax9cbyq5j3iiwa1l0fi16w6sfgmrryd6n9aa"; + url = mirror://gnome/sources/libgit2-glib/0.26/libgit2-glib-0.26.0.tar.xz; + sha256 = "06b16cfcc3a53d9804858618d690e5509e9af2e2245b75f0479cadbbe39745c3"; }; } From 2b9975c2440c1f6250a7b41194f8b72c66270458 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Fri, 3 Nov 2017 03:51:01 +0000 Subject: [PATCH 059/138] gitg: 3.24.0 -> 3.26.0 --- pkgs/desktops/gnome-3/misc/gitg/src.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/desktops/gnome-3/misc/gitg/src.nix b/pkgs/desktops/gnome-3/misc/gitg/src.nix index 9c6dd2148ccf..c72e2830ad1e 100644 --- a/pkgs/desktops/gnome-3/misc/gitg/src.nix +++ b/pkgs/desktops/gnome-3/misc/gitg/src.nix @@ -1,10 +1,10 @@ # Autogenerated by maintainers/scripts/gnome.sh update fetchurl: { - name = "gitg-3.24.0"; + name = "gitg-3.26.0"; src = fetchurl { - url = mirror://gnome/sources/gitg/3.24/gitg-3.24.0.tar.xz; - sha256 = "3e4ec4a8ae83bc7ced8c7610927ade70e37daa5e8beeb4f357a6ea30b4cc951e"; + url = mirror://gnome/sources/gitg/3.26/gitg-3.26.0.tar.xz; + sha256 = "26730d437d6a30d6e341b9e8da99d2134dce4b96022c195609f45062f82b54d5"; }; } From 2fb0edd085ea83a66e88de209806be720fb53244 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Fri, 3 Nov 2017 04:49:55 +0000 Subject: [PATCH 060/138] git-series: fix build after "source" name change --- pkgs/development/tools/git-series/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/git-series/default.nix b/pkgs/development/tools/git-series/default.nix index 44120ad023ae..7d94863ea1cb 100644 --- a/pkgs/development/tools/git-series/default.nix +++ b/pkgs/development/tools/git-series/default.nix @@ -17,7 +17,7 @@ buildRustPackage rec { cargoDepsHook = '' ( - cd ${name}-src + cd */ # see https://github.com/git-series/git-series/pull/56 patch -p1 < ${fetchpatch { url = "https://github.com/Mic92/git-series/commit/3aa30a47d74ebf90b444dccdf8c153f07f119483.patch"; From 225a05906c3a9b4a9d59d00d10cbf7b86d7fc881 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Fri, 3 Nov 2017 17:48:42 +0000 Subject: [PATCH 061/138] julia_05: use libgit2_0_25 It's libgit2 test fails with libgit2 0.26.0. --- pkgs/top-level/all-packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b02213de79d8..8dcc65f175c6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6011,6 +6011,7 @@ with pkgs; julia_05 = callPackage ../development/compilers/julia/0.5.nix { gmp = gmp6; + libgit2 = libgit2_0_25; openblas = openblasCompat; inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; llvm = llvm_38; From 62e18a947b88124e2728ec846ff9f90542cc77ed Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Sun, 5 Nov 2017 16:38:00 +0000 Subject: [PATCH 062/138] libgit2: delete obsolete patch --- pkgs/development/libraries/git2/0.25.nix | 10 ---- .../git2/disable-security.framework.patch | 58 ------------------- 2 files changed, 68 deletions(-) delete mode 100644 pkgs/development/libraries/git2/disable-security.framework.patch diff --git a/pkgs/development/libraries/git2/0.25.nix b/pkgs/development/libraries/git2/0.25.nix index ecc6552d1b44..679049a0e13e 100644 --- a/pkgs/development/libraries/git2/0.25.nix +++ b/pkgs/development/libraries/git2/0.25.nix @@ -13,16 +13,6 @@ stdenv.mkDerivation (rec { sha256 = "1jhikg0gqpdzfzhgv44ybdpm24lvgkc7ki4306lc5lvmj1s2nylj"; }; - # TODO: `cargo` (rust's package manager) surfaced a serious bug in - # libgit2 when the `Security.framework` transport is used on Darwin. - # The upstream issue is tracked at - # https://github.com/libgit2/libgit2/issues/3885 - feel free to - # remove this patch as soon as it's resolved (i.E. when cargo is - # working fine without this patch) - patches = stdenv.lib.optionals stdenv.isDarwin [ - ./disable-security.framework.patch - ]; - cmakeFlags = "-DTHREADSAFE=ON"; nativeBuildInputs = [ cmake python pkgconfig ]; diff --git a/pkgs/development/libraries/git2/disable-security.framework.patch b/pkgs/development/libraries/git2/disable-security.framework.patch deleted file mode 100644 index ce6a008b1c4c..000000000000 --- a/pkgs/development/libraries/git2/disable-security.framework.patch +++ /dev/null @@ -1,58 +0,0 @@ -From fbc2ea65406236a740b8734dd41dc5ddbc24f8c9 Mon Sep 17 00:00:00 2001 -From: mulrich -Date: Mon, 8 Aug 2016 15:36:07 +0200 -Subject: [PATCH] disable security.framework - ---- - CMakeLists.txt | 7 +++---- - src/curl_stream.c | 9 ++++++++- - 2 files changed, 11 insertions(+), 5 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 93a9e47..331e148 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -49,7 +49,8 @@ ENDIF() - - IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - SET( USE_ICONV ON ) -- FIND_PACKAGE(Security) -+ # FIND_PACKAGE(Security) -+ SET(SECURITY_FOUND "NO") - FIND_PACKAGE(CoreFoundation REQUIRED) - ENDIF() - -@@ -87,9 +88,7 @@ IF(MSVC) - OPTION(MSVC_CRTDBG "Enable CRTDBG memory leak reporting" OFF) - ENDIF() - --IF (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") -- OPTION( USE_OPENSSL "Link with and use openssl library" ON ) --ENDIF() -+OPTION( USE_OPENSSL "Link with and use openssl library" ON ) - - CHECK_STRUCT_HAS_MEMBER ("struct stat" st_mtim "sys/types.h;sys/stat.h" - HAVE_STRUCT_STAT_ST_MTIM LANGUAGE C) -diff --git a/src/curl_stream.c b/src/curl_stream.c -index 98de187..a8a9f4c 100644 ---- a/src/curl_stream.c -+++ b/src/curl_stream.c -@@ -309,7 +309,14 @@ int git_curl_stream_new(git_stream **out, const char *host, const char *port) - curl_easy_setopt(handle, CURLOPT_HTTPPROXYTUNNEL, 1); - curl_easy_setopt(handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY); - -- /* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1); */ -+ const char* cainfo = getenv("SSL_CERT_FILE"); -+ if(cainfo != NULL) { -+ curl_easy_setopt(handle, CURLOPT_CAINFO, cainfo); -+ } -+ -+ /* -+ curl_easy_setopt(handle, CURLOPT_VERBOSE, 1); -+ */ - - st->parent.version = GIT_STREAM_VERSION; - st->parent.encrypted = 0; /* we don't encrypt ourselves */ --- -2.3.8 (Apple Git-58) - From c3786d07b16bdc7c8268a979fdcdf0307974e9d2 Mon Sep 17 00:00:00 2001 From: Fahad Sadah <92872+fahadsadah@users.noreply.github.com> Date: Sun, 5 Nov 2017 21:37:27 +0000 Subject: [PATCH 063/138] python: fastimport 0.9.4 -> 0.9.6 --- .../python-modules/fastimport/default.nix | 22 ++++++++++++++++ pkgs/top-level/python-packages.nix | 26 ++----------------- 2 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 pkgs/development/python-modules/fastimport/default.nix diff --git a/pkgs/development/python-modules/fastimport/default.nix b/pkgs/development/python-modules/fastimport/default.nix new file mode 100644 index 000000000000..ee1048ec5fac --- /dev/null +++ b/pkgs/development/python-modules/fastimport/default.nix @@ -0,0 +1,22 @@ +{ stdenv, buildPythonPackage, python, fetchurl }: + +buildPythonPackage rec { + name = "fastimport-${version}"; + version = "0.9.6"; + + src = fetchurl { + url = "mirror://pypi/f/fastimport/${name}.tar.gz"; + sha256 = "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"; + }; + + checkPhase = '' + ${python.interpreter} -m unittest discover + ''; + + meta = with stdenv.lib; { + homepage = https://launchpad.net/python-fastimport; + description = "VCS fastimport/fastexport parser"; + maintainers = with maintainers; [ koral ]; + license = licenses.gpl2Plus; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 7664f422c0b9..595e7dc27b42 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8645,30 +8645,8 @@ in { }; }; - fastimport = buildPythonPackage rec { - name = "fastimport-${version}"; - version = "0.9.4"; - - # Judging from SyntaxError - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "mirror://pypi/f/fastimport/${name}.tar.gz"; - sha256 = "0k8x7552ypx9rc14vbsvg2lc6z0r8pv9laah28pdwyynbq10825d"; - }; - - checkPhase = '' - ${python.interpreter} -m unittest discover - ''; - - meta = { - homepage = https://launchpad.net/python-fastimport; - description = "VCS fastimport/fastexport parser"; - maintainers = with maintainers; [ koral ]; - license = licenses.gpl2Plus; - }; - }; - + fastimport = callPackage ../development/python-modules/fastimport { }; + feedgen = callPackage ../development/python-modules/feedgen { }; feedgenerator = callPackage ../development/python-modules/feedgenerator { From 2ed054885b9f52868dae3571a85bb75b3c1eddcf Mon Sep 17 00:00:00 2001 From: Bojan Nikolic Date: Sun, 5 Nov 2017 22:57:44 +0000 Subject: [PATCH 064/138] Remove the unnecessary second conditional --- pkgs/build-support/cc-wrapper/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 80f794cbdde2..2445753ff045 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -296,9 +296,8 @@ stdenv.mkDerivation { echo ${libc_lib}/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 fi - if [ -n "''${dynamicLinker:-}" ]; then - local ldflagsBefore=(-dynamic-linker "$dynamicLinker") - fi + local ldflagsBefore=(-dynamic-linker "$dynamicLinker") + '') + '' fi From 3a63fc1258bcd4576e20af36ad683f18224da0e5 Mon Sep 17 00:00:00 2001 From: Bojan Nikolic Date: Sun, 5 Nov 2017 23:00:24 +0000 Subject: [PATCH 065/138] Remove trailing line --- pkgs/build-support/cc-wrapper/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 2445753ff045..a12c835dd9bf 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -297,7 +297,6 @@ stdenv.mkDerivation { fi local ldflagsBefore=(-dynamic-linker "$dynamicLinker") - '') + '' fi From dd18e063ef681aab4f67454ad385fe4b21331458 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Thu, 2 Nov 2017 15:16:24 +0800 Subject: [PATCH 066/138] sqlitebrowser: 3.10.0 -> 3.10.1 and make it work with Qt 5.9 --- .../tools/database/sqlitebrowser/default.nix | 27 ++++++++++++------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/pkgs/development/tools/database/sqlitebrowser/default.nix b/pkgs/development/tools/database/sqlitebrowser/default.nix index adeb377dccd0..74adac9f8a32 100644 --- a/pkgs/development/tools/database/sqlitebrowser/default.nix +++ b/pkgs/development/tools/database/sqlitebrowser/default.nix @@ -1,32 +1,39 @@ -{ mkDerivation, lib, fetchFromGitHub, qtbase, qttools, sqlite, cmake }: +{ mkDerivation, lib, fetchFromGitHub, cmake, antlr +, qtbase, qttools, qscintilla, sqlite }: mkDerivation rec { - version = "3.10.0"; + version = "3.10.1"; name = "sqlitebrowser-${version}"; src = fetchFromGitHub { repo = "sqlitebrowser"; owner = "sqlitebrowser"; rev = "v${version}"; - sha256 = "1fwr7p4b6glc3s0a06i7cg8l9p1mrcm4vyhyf2wi89cyg22rrf5c"; + sha256 = "1brzam8yv6sbdmbqsp7vglhd6wlx49g2ap8llr271zrkld4k3kar"; }; - buildInputs = [ qtbase qttools sqlite ]; - nativeBuildInputs = [ cmake ]; + buildInputs = [ qtbase qscintilla sqlite ]; - cmakeFlags = [ "-DUSE_QT5=TRUE" ]; + nativeBuildInputs = [ cmake antlr qttools ]; - # A regression was introduced in CMakeLists.txt on v3.9.x - # See https://github.com/sqlitebrowser/sqlitebrowser/issues/832 and issues/755 + enableParallelBuilding = true; + + # We have to patch out Test and PrintSupport to make this work with Qt 5.9 + # It can go when the application supports 5.9 postPatch = '' - substituteInPlace CMakeLists.txt --replace 'project("DB Browser for SQLite")' 'project(sqlitebrowser)' + substituteInPlace CMakeLists.txt \ + --replace Test "" \ + --replace PrintSupport "" + + substituteInPlace libs/qcustomplot-source/CMakeLists.txt \ + --replace PrintSupport "" ''; meta = with lib; { description = "DB Browser for SQLite"; homepage = http://sqlitebrowser.org/; license = licenses.gpl3; - maintainers = [ maintainers.matthiasbeyer ]; + maintainers = with maintainers; [ matthiasbeyer ]; platforms = platforms.linux; # can only test on linux }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7383df20c0ec..56e57ca42bcd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7588,7 +7588,7 @@ with pkgs; flex = flex_2_5_35; }; - sqlitebrowser = libsForQt56.callPackage ../development/tools/database/sqlitebrowser { }; + sqlitebrowser = libsForQt5.callPackage ../development/tools/database/sqlitebrowser { }; sselp = callPackage ../tools/X11/sselp{ }; From 030223237ab88229246d7fbb5dd62602849eb3e7 Mon Sep 17 00:00:00 2001 From: Peter Marheine Date: Mon, 6 Nov 2017 08:33:59 +0000 Subject: [PATCH 067/138] flexget: fix build with updated dependencies --- pkgs/applications/networking/flexget/default.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/networking/flexget/default.nix b/pkgs/applications/networking/flexget/default.nix index 9e5e90996bcb..105239aca024 100644 --- a/pkgs/applications/networking/flexget/default.nix +++ b/pkgs/applications/networking/flexget/default.nix @@ -24,9 +24,6 @@ buildPythonApplication rec { # 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 - substituteInPlace requirements.txt \ --replace "chardet==3.0.3" "chardet" \ --replace "rebulk==0.8.2" "rebulk" \ @@ -35,7 +32,13 @@ buildPythonApplication rec { --replace "sqlalchemy==1.1.10" "sqlalchemy" \ --replace "zxcvbn-python==4.4.15" "zxcvbn-python" \ --replace "flask-cors==3.0.2" "flask-cors" \ - --replace "certifi==2017.4.17" "certifi" + --replace "certifi==2017.4.17" "certifi" \ + --replace "apscheduler==3.3.1" "apscheduler" \ + --replace "path.py==10.3.1" "path.py" \ + --replace "tempora==1.8" "tempora" \ + --replace "cheroot==5.5.0" "cheroot" \ + --replace "six==1.10.0" "six" \ + --replace "aniso8601==1.2.1" "aniso8601" ''; checkPhase = '' @@ -47,7 +50,8 @@ buildPythonApplication rec { and not test_double_episodes \ and not test_inject_force \ and not test_double_prefered \ - and not test_double" + and not test_double \ + and not test_non_ascii" ''; buildInputs = [ pytest mock vcrpy pytest-catchlog boto3 ]; From 7100c1a0e02cca0259c33ed0bd2d96263ae233f0 Mon Sep 17 00:00:00 2001 From: Antoine Eiche Date: Mon, 6 Nov 2017 10:26:55 +0100 Subject: [PATCH 068/138] pythonPackages.devpi_common: remove one test --- pkgs/development/python-modules/devpi-common/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/python-modules/devpi-common/default.nix b/pkgs/development/python-modules/devpi-common/default.nix index 082f2baeceb8..67f8debc43a0 100644 --- a/pkgs/development/python-modules/devpi-common/default.nix +++ b/pkgs/development/python-modules/devpi-common/default.nix @@ -14,6 +14,8 @@ with pythonPackages;buildPythonPackage rec { checkInputs = [ pytest ]; checkPhase = '' + # Don't know why this test is failing! + substituteInPlace testing/test_request.py --replace "test_env" "noop_test_env" py.test ''; From a0f01a5f0b1dc7d0bd1794ea93380600f44e6a51 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Nov 2017 10:48:09 +0100 Subject: [PATCH 069/138] bitcoin-abc: 0.15.0 -> 0.16.0 --- pkgs/applications/altcoins/bitcoin-abc.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/altcoins/bitcoin-abc.nix b/pkgs/applications/altcoins/bitcoin-abc.nix index a113aadcd628..011e3cd7c874 100644 --- a/pkgs/applications/altcoins/bitcoin-abc.nix +++ b/pkgs/applications/altcoins/bitcoin-abc.nix @@ -7,13 +7,13 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version; - version = "0.15.0"; + version = "0.16.0"; src = fetchFromGitHub { owner = "bitcoin-ABC"; repo = "bitcoin-abc"; rev = "v${version}"; - sha256 = "1fygn6cc99iasg5g5jyps5ps873hfnn4ln4hsmcwlwiqd591qxyv"; + sha256 = "0wwcgvd8zgl5qh6z1sa3kdv1lr9cwwbs9j2gaad5mqr9sfwbbxdh"; }; patches = [ ./fix-bitcoin-qt-build.patch ]; From 2c50340575a4b91bd983894d294e5619ae4aee96 Mon Sep 17 00:00:00 2001 From: Michael Fellinger Date: Mon, 6 Nov 2017 14:47:33 +0100 Subject: [PATCH 070/138] elm-format: 0.5.2 -> 0.7.0 --- .../compilers/elm/packages/elm-format.nix | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/pkgs/development/compilers/elm/packages/elm-format.nix b/pkgs/development/compilers/elm/packages/elm-format.nix index a9340fc94fe4..56db835ac10a 100644 --- a/pkgs/development/compilers/elm/packages/elm-format.nix +++ b/pkgs/development/compilers/elm/packages/elm-format.nix @@ -1,37 +1,40 @@ -{ mkDerivation, aeson, ansi-terminal, ansi-wl-pprint, base, binary -, bytestring, containers, directory, edit-distance, fetchgit -, filemanip, filepath, HUnit, indents, mtl, optparse-applicative -, parsec, pretty, process, QuickCheck, quickcheck-io -, regex-applicative, split, stdenv, tasty, tasty-golden -, tasty-hunit, tasty-quickcheck, text, union-find, wl-pprint +{ mkDerivation, ansi-terminal, ansi-wl-pprint, base, binary +, bytestring, Cabal, cmark, containers, directory, fetchgit +, filepath, free, HUnit, indents, json, mtl, optparse-applicative +, parsec, process, QuickCheck, quickcheck-io, split, stdenv, tasty +, tasty-golden, tasty-hunit, tasty-quickcheck, text }: mkDerivation { pname = "elm-format"; - version = "0.5.2"; + version = "0.7.0"; src = fetchgit { url = "http://github.com/avh4/elm-format"; - sha256 = "0lman7h6wr75y90javcc4y1scvwgv125gqqaqvfrd5xrfmm43gg8"; - rev = "e452ed9342620e7bb0bc822983b96411d57143ef"; + sha256 = "1snl2lrrzdwgzi68agi3sdw84aslj04pzzxpm1mam9ic6dzhn3jf"; + rev = "da4b415c6a2b7e77b7d9f00beca3e45230e603fb"; }; - isLibrary = false; + + doHaddock = false; + isLibrary = true; isExecutable = true; - executableHaskellDepends = [ - aeson ansi-terminal ansi-wl-pprint base binary bytestring - containers directory edit-distance filemanip filepath indents mtl - optparse-applicative parsec pretty process regex-applicative split - text + setupHaskellDepends = [ base Cabal directory filepath process ]; + libraryHaskellDepends = [ + ansi-terminal ansi-wl-pprint base binary bytestring containers + directory filepath free indents json mtl optparse-applicative + parsec process split text ]; + executableHaskellDepends = [ base ]; testHaskellDepends = [ - aeson ansi-terminal ansi-wl-pprint base binary bytestring - containers directory edit-distance filemanip filepath HUnit indents - mtl optparse-applicative parsec pretty process QuickCheck - quickcheck-io regex-applicative split tasty tasty-golden - tasty-hunit tasty-quickcheck text union-find wl-pprint + base cmark containers HUnit mtl parsec QuickCheck quickcheck-io + split tasty tasty-golden tasty-hunit tasty-quickcheck text ]; jailbreak = true; postInstall = '' ln -s $out/bin/elm-format-0.18 $out/bin/elm-format ''; + postPatch = '' + sed -i "s|desc <-.*||" ./Setup.hs + sed -i "s|gitDescribe = .*|gitDescribe = \\\\\"da4b415c\\\\\"\"|" ./Setup.hs + ''; homepage = http://elm-lang.org; description = "A source code formatter for Elm"; license = stdenv.lib.licenses.bsd3; From b0d193f596d055b69435ece4b3cea0fb3d06dde5 Mon Sep 17 00:00:00 2001 From: gnidorah Date: Wed, 1 Nov 2017 09:36:56 +0300 Subject: [PATCH 071/138] SDL2: wayland support --- pkgs/development/libraries/SDL2/default.nix | 4 +++- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/SDL2/default.nix b/pkgs/development/libraries/SDL2/default.nix index 3216a130f671..d2ffa45626be 100644 --- a/pkgs/development/libraries/SDL2/default.nix +++ b/pkgs/development/libraries/SDL2/default.nix @@ -2,6 +2,7 @@ , openglSupport ? false, mesa_noglu , alsaSupport ? true, alsaLib , x11Support ? true, libICE, libXi, libXScrnSaver, libXcursor, libXinerama, libXext, libXxf86vm, libXrandr +, waylandSupport ? true, wayland, wayland-protocols, libxkbcommon , dbusSupport ? false, dbus , udevSupport ? false, udev , ibusSupport ? false, ibus @@ -17,7 +18,7 @@ assert openglSupport -> (stdenv.isDarwin || mesa_noglu != null && x11Support); let configureFlagsFun = attrs: [ - "--disable-oss" "--disable-x11-shared" + "--disable-oss" "--disable-x11-shared" "--disable-wayland-shared" "--disable-pulseaudio-shared" "--disable-alsa-shared" ] ++ lib.optional alsaSupport "--with-alsa-prefix=${attrs.alsaLib.out}/lib" ++ lib.optional (!x11Support) "--without-x"; @@ -39,6 +40,7 @@ stdenv.mkDerivation rec { # Since `libpulse*.la' contain `-lgdbm', PulseAudio must be propagated. propagatedBuildInputs = lib.optionals x11Support [ libICE libXi libXScrnSaver libXcursor libXinerama libXext libXrandr libXxf86vm ] ++ + lib.optionals waylandSupport [ wayland wayland-protocols libxkbcommon ] ++ lib.optional pulseaudioSupport libpulseaudio; buildInputs = [ audiofile ] ++ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2d35b429f2ad..acff92fc86c6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10579,6 +10579,7 @@ with pkgs; openglSupport = mesaSupported; alsaSupport = stdenv.isLinux; x11Support = !stdenv.isCygwin; + waylandSupport = stdenv.isLinux; udevSupport = stdenv.isLinux; pulseaudioSupport = config.pulseaudio or stdenv.isLinux; inherit (darwin.apple_sdk.frameworks) AudioUnit Cocoa CoreAudio CoreServices ForceFeedback OpenGL; From cac4cb401c2f3190fb8ddae27fcb5a9c9fc9da8a Mon Sep 17 00:00:00 2001 From: Piotr Bogdan Date: Mon, 6 Nov 2017 14:15:43 +0000 Subject: [PATCH 072/138] debootstrap: 1.0.87 -> 1.0.92 --- pkgs/tools/misc/debootstrap/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/debootstrap/default.nix b/pkgs/tools/misc/debootstrap/default.nix index e70efe6c4f11..a65862a78451 100644 --- a/pkgs/tools/misc/debootstrap/default.nix +++ b/pkgs/tools/misc/debootstrap/default.nix @@ -4,13 +4,13 @@ # There is also cdebootstrap now. Is that easier to maintain? stdenv.mkDerivation rec { name = "debootstrap-${version}"; - version = "1.0.87"; + version = "1.0.92"; src = fetchurl { # git clone git://git.debian.org/d-i/debootstrap.git # I'd like to use the source. However it's lacking the lanny script ? (still true?) url = "mirror://debian/pool/main/d/debootstrap/debootstrap_${version}.tar.gz"; - sha256 = "1amk3wghx4f7zfp7d8r0hgqn5gvph50qa6nvh32q2j8aihdr7374"; + sha256 = "06gp6ivmfh0ks4mibx1mz0pwzjyxqas319s741pp9b3k091jkip1"; }; buildInputs = [ dpkg gettext gawk perl ]; From 217257c835ebda5ff189108adddeb72fc82a58da Mon Sep 17 00:00:00 2001 From: Piotr Bogdan Date: Mon, 6 Nov 2017 14:40:12 +0000 Subject: [PATCH 073/138] dfeet: 0.3.11 -> 0.3.12 --- pkgs/development/tools/misc/d-feet/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/misc/d-feet/default.nix b/pkgs/development/tools/misc/d-feet/default.nix index bd08c6c4c05e..14a52f4e08a6 100644 --- a/pkgs/development/tools/misc/d-feet/default.nix +++ b/pkgs/development/tools/misc/d-feet/default.nix @@ -2,7 +2,7 @@ , pythonPackages, makeWrapper, gnome3, libwnck3 }: let - version = "${major}.11"; + version = "${major}.12"; major = "0.3"; in pythonPackages.buildPythonApplication rec { name = "d-feet-${version}"; @@ -10,7 +10,7 @@ in pythonPackages.buildPythonApplication rec { src = fetchurl { url = "mirror://gnome/sources/d-feet/${major}/d-feet-${version}.tar.xz"; - sha256 = "a3dc940c66f84b996c328531e3034d475ec690d7ff639445ff7ca746aa8cb9c2"; + sha256 = "054hl56rii9ff7rzl42h7993ywjbxmhlcd7bk8fi1c2bx98c6s68"; }; nativeBuildInputs = [ pkgconfig ]; From 6c3bae563e9e046e4d6d4a89cac10d5a0be34e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 6 Nov 2017 17:05:33 +0100 Subject: [PATCH 074/138] icu: fix build with glibc-2.26 --- pkgs/development/libraries/icu/base.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/libraries/icu/base.nix b/pkgs/development/libraries/icu/base.nix index 78e0c5740446..b12e76a90a99 100644 --- a/pkgs/development/libraries/icu/base.nix +++ b/pkgs/development/libraries/icu/base.nix @@ -25,6 +25,9 @@ stdenv.mkDerivation { echo Source root reset to ''${sourceRoot} ''; + # https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27 + postPatch = "substituteInPlace i18n/digitlst.cpp --replace '' ''"; + inherit patchFlags patches; preConfigure = '' From 40b347f2051b158e4d077eb95eff02df8a65524f Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Mon, 6 Nov 2017 17:52:08 +0100 Subject: [PATCH 075/138] i3lock-color: limit to i686 and x86-64 platforms Compilation fails for other CPU architectures due to requiring the SSE2 instruction set. See [1] for upstream issue. [1]: https://github.com/chrjguill/i3lock-color/issues/44 --- pkgs/applications/window-managers/i3/lock-color.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/window-managers/i3/lock-color.nix b/pkgs/applications/window-managers/i3/lock-color.nix index fd47a104326e..a589e21be98b 100644 --- a/pkgs/applications/window-managers/i3/lock-color.nix +++ b/pkgs/applications/window-managers/i3/lock-color.nix @@ -28,6 +28,9 @@ stdenv.mkDerivation rec { homepage = https://i3wm.org/i3lock/; maintainers = with maintainers; [ garbas malyn ]; license = licenses.bsd3; - platforms = platforms.all; + + # Needs the SSE2 instruction set. See upstream issue + # https://github.com/chrjguill/i3lock-color/issues/44 + platforms = platforms.i686 ++ platforms.x86_64; }; } From 05b90907a7b134ab8e4c51dce87fff2c4ac3a85a Mon Sep 17 00:00:00 2001 From: Sarah Brofeldt Date: Mon, 6 Nov 2017 18:18:19 +0100 Subject: [PATCH 076/138] openra: Add python to bin PATH, fixing launcher --- pkgs/games/openra/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/games/openra/default.nix b/pkgs/games/openra/default.nix index fb01346d84e8..5665dfc9e945 100644 --- a/pkgs/games/openra/default.nix +++ b/pkgs/games/openra/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, mono, makeWrapper, lua , SDL2, freetype, openal, systemd, pkgconfig, - dotnetPackages, gnome3, curl, unzip, which + dotnetPackages, gnome3, curl, unzip, which, python }: stdenv.mkDerivation rec { @@ -60,7 +60,7 @@ stdenv.mkDerivation rec { postInstall = with stdenv.lib; let runtime = makeLibraryPath [ SDL2 freetype openal systemd lua ]; - binaries= makeBinPath [ which mono gnome3.zenity ]; + binaries= makeBinPath [ which mono gnome3.zenity python ]; in '' wrapProgram $out/lib/openra/launch-game.sh \ --prefix PATH : "${binaries}" \ From 6949cfa58edacf1e9fb83f69ba60aae18a3c851c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Mon, 6 Nov 2017 19:07:36 +0100 Subject: [PATCH 077/138] nix-zsh-completions: 0.3.1 -> 0.3.2 Adds support for nix1.12 and various improvements. --- lib/maintainers.nix | 1 + pkgs/shells/nix-zsh-completions/default.nix | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 45f7f8f51d13..514709082fce 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -265,6 +265,7 @@ hbunke = "Hendrik Bunke "; hce = "Hans-Christian Esperer "; hectorj = "Hector Jusforgues "; + hedning = "Tor Hedin Brønner "; heel = "Sergii Paryzhskyi "; henrytill = "Henry Till "; hhm = "hhm "; diff --git a/pkgs/shells/nix-zsh-completions/default.nix b/pkgs/shells/nix-zsh-completions/default.nix index eaae85990b20..af0552662938 100644 --- a/pkgs/shells/nix-zsh-completions/default.nix +++ b/pkgs/shells/nix-zsh-completions/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchFromGitHub }: let - version = "0.3.1"; + version = "0.3.2"; in stdenv.mkDerivation rec { @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { owner = "spwhitt"; repo = "nix-zsh-completions"; rev = "${version}"; - sha256 = "1sbc52f5818bcygljrji84dyvgw727x50m9v6qfrsdaji3zkqga1"; + sha256 = "0i306k50g07n9smy68npma1k90sv173zy12jdi8wm7h1sj53m5rv"; }; installPhase = '' @@ -24,6 +24,6 @@ stdenv.mkDerivation rec { description = "ZSH completions for Nix, NixOS, and NixOps"; license = stdenv.lib.licenses.bsd3; platforms = stdenv.lib.platforms.all; - maintainers = [ stdenv.lib.maintainers.spwhitt stdenv.lib.maintainers.olejorgenb ]; + maintainers = [ stdenv.lib.maintainers.spwhitt stdenv.lib.maintainers.olejorgenb stdenv.lib.maintainers.hedning ]; }; } From 6535f0bca658d772efffbfe04ba5f9e625a9b31e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 6 Nov 2017 19:20:21 +0100 Subject: [PATCH 078/138] flex: fix with glibc-2.26 It caused segfaults, e.g. when building doxygen. --- pkgs/development/tools/parsing/flex/default.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/parsing/flex/default.nix b/pkgs/development/tools/parsing/flex/default.nix index 92fba47b756f..354126b5457f 100644 --- a/pkgs/development/tools/parsing/flex/default.nix +++ b/pkgs/development/tools/parsing/flex/default.nix @@ -1,4 +1,6 @@ -{ stdenv, fetchurl, bison, m4 }: +{ stdenv, fetchurl, bison, m4 +, fetchpatch, autoreconfHook, help2man +}: stdenv.mkDerivation rec { name = "flex-${version}"; @@ -9,6 +11,14 @@ stdenv.mkDerivation rec { sha256 = "15g9bv236nzi665p9ggqjlfn4dwck5835vf0bbw2cz7h5c1swyp8"; }; + patches = [(fetchpatch { + name = "glibc-2.26.patch"; + url = "https://raw.githubusercontent.com/lede-project/source/0fb14a2b1ab2f82c" + + "/tools/flex/patches/200-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch"; + sha256 = "1aarhcmz7mfrgh15pkj6f7ikxa2m0mllw1i1vscsf1kw5d05lw6f"; + })]; + nativeBuildInputs = [ autoreconfHook help2man ]; + buildInputs = [ bison ]; propagatedBuildInputs = [ m4 ]; From 880a636ef4e18d10abdf50f3485b5624ff0d4299 Mon Sep 17 00:00:00 2001 From: James Edington Date: Mon, 6 Nov 2017 12:22:17 -0600 Subject: [PATCH 079/138] palemoon: 27.5.0 -> 27.6.0 Version bump because apparently Moonchild published 27.6.0_Release --- pkgs/applications/networking/browsers/palemoon/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/browsers/palemoon/default.nix b/pkgs/applications/networking/browsers/palemoon/default.nix index d5e6e47e9285..e24c21b535bf 100644 --- a/pkgs/applications/networking/browsers/palemoon/default.nix +++ b/pkgs/applications/networking/browsers/palemoon/default.nix @@ -10,14 +10,14 @@ stdenv.mkDerivation rec { name = "palemoon-${version}"; - version = "27.5.0"; + version = "27.6.0"; src = fetchFromGitHub { name = "palemoon-src"; owner = "MoonchildProductions"; repo = "Pale-Moon"; rev = version + "_Release"; - sha256 = "0m4fgwxn6hs8r240i6acaajx76cvqy1b7cqmdsxd33qpjrrj1h9d"; + sha256 = "1v5rbam93fcc7c1l69clr9chi2l0zv0dhjq12v535n8vv9lhahhl"; }; desktopItem = makeDesktopItem { From 3562c2cfa721576a38a9c6783d551015c3242613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 6 Nov 2017 19:25:14 +0100 Subject: [PATCH 080/138] flex: add notes about the glibc-2.26 patch --- pkgs/development/tools/parsing/flex/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/tools/parsing/flex/default.nix b/pkgs/development/tools/parsing/flex/default.nix index 354126b5457f..4ea11a622ea1 100644 --- a/pkgs/development/tools/parsing/flex/default.nix +++ b/pkgs/development/tools/parsing/flex/default.nix @@ -11,6 +11,8 @@ stdenv.mkDerivation rec { sha256 = "15g9bv236nzi665p9ggqjlfn4dwck5835vf0bbw2cz7h5c1swyp8"; }; + # Also upstream, will be part of 2.6.5 + # https://github.com/westes/flex/commit/24fd0551333e patches = [(fetchpatch { name = "glibc-2.26.patch"; url = "https://raw.githubusercontent.com/lede-project/source/0fb14a2b1ab2f82c" From 967ecb802ea4f07c50514d1642f4fa83a1dc6327 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sun, 5 Nov 2017 19:20:46 +0200 Subject: [PATCH 081/138] raspberrypifw: 1.20170811 -> 1.20171029 --- pkgs/os-specific/linux/firmware/raspberrypi/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix index bb714f60c2df..c71f1c0ea2e9 100644 --- a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix +++ b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "raspberrypi-firmware-${version}"; - version = "1.20170811"; + version = "1.20171029"; src = fetchFromGitHub { owner = "raspberrypi"; repo = "firmware"; rev = version; - sha256 = "1lrbbslpwjgvrn7hk3l104gkl07qxh7qd4cdyqccqhqzip9wqhkn"; + sha256 = "12aisha8rlr28310hakps04z9p45kd2wvks0w1vxw1kwfh1ncy9s"; }; dontStrip = true; # Stripping breaks some of the binaries From bf585f288100b5cf08499f3053b811581b0fa1a6 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sun, 5 Nov 2017 19:28:00 +0200 Subject: [PATCH 082/138] linux_rpi: 1.20170811 -> 1.20171029 --- pkgs/os-specific/linux/kernel/linux-rpi.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-rpi.nix b/pkgs/os-specific/linux/kernel/linux-rpi.nix index 2d8a3f0afcdd..fb97aa579df0 100644 --- a/pkgs/os-specific/linux/kernel/linux-rpi.nix +++ b/pkgs/os-specific/linux/kernel/linux-rpi.nix @@ -1,8 +1,8 @@ { stdenv, hostPlatform, fetchFromGitHub, perl, buildLinux, ... } @ args: let - modDirVersion = "4.9.41"; - tag = "1.20170811"; + modDirVersion = "4.9.59"; + tag = "1.20171029"; in stdenv.lib.overrideDerivation (import ./generic.nix (args // rec { version = "${modDirVersion}-${tag}"; @@ -12,7 +12,7 @@ stdenv.lib.overrideDerivation (import ./generic.nix (args // rec { owner = "raspberrypi"; repo = "linux"; rev = "raspberrypi-kernel_${tag}-1"; - sha256 = "1ly0x7a43zvig0fv7lc6rpq49pcdb7i9sdb78p4gi5485zap40kb"; + sha256 = "19lb1gxz21x1d5zdznzqfq60kxg7iqmyl6l0mb9qg2vrl8fcgnxk"; }; features = { From 1ac1581253579ee49e469752ec0c0172c6cced7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 6 Nov 2017 20:18:15 +0100 Subject: [PATCH 083/138] libselinux: fix missing include after glibc-2.26 --- pkgs/os-specific/linux/libselinux/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/os-specific/linux/libselinux/default.nix b/pkgs/os-specific/linux/libselinux/default.nix index f20efcb32373..541ead7258f6 100644 --- a/pkgs/os-specific/linux/libselinux/default.nix +++ b/pkgs/os-specific/linux/libselinux/default.nix @@ -39,6 +39,9 @@ stdenv.mkDerivation rec { postPatch = optionalString enablePython '' sed -i -e 's|\$(LIBDIR)/libsepol.a|${libsepol}/lib/libsepol.a|' src/Makefile + '' + + '' + sed '1i#include ' -i src/setrans_client.c ''; preBuild = '' From f35f995fff3cf6d0436b1f3d94259769a1e3a266 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Mon, 6 Nov 2017 19:22:38 +0000 Subject: [PATCH 084/138] dns-root-data: 2017-08-29 -> 2017-10-24 --- pkgs/data/misc/dns-root-data/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/data/misc/dns-root-data/default.nix b/pkgs/data/misc/dns-root-data/default.nix index dade4be1aaff..88b608c78152 100644 --- a/pkgs/data/misc/dns-root-data/default.nix +++ b/pkgs/data/misc/dns-root-data/default.nix @@ -4,7 +4,7 @@ let rootHints = fetchurl { url = "https://www.internic.net/domain/named.root"; - sha256 = "01n4bqf95kbvig1hahqzmmdkpn4v7mzfc1p944gq922i5j3fjr92"; + sha256 = "0vdrff4l8s8grif52dnh091s8qydhh88k25zqd9rj66sf1qwcwxl"; }; rootKey = ./root.key; @@ -13,7 +13,7 @@ let in stdenv.mkDerivation { - name = "dns-root-data-2017-08-29"; + name = "dns-root-data-2017-10-24"; buildCommand = '' mkdir $out From f47e13866d8fe80aef8d1d367cac6d478dece6ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 6 Nov 2017 20:33:36 +0100 Subject: [PATCH 085/138] libtirpc: fix missing include after glibc-2.26 --- pkgs/development/libraries/ti-rpc/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/libraries/ti-rpc/default.nix b/pkgs/development/libraries/ti-rpc/default.nix index d66b5d82ff52..0d6674cce814 100644 --- a/pkgs/development/libraries/ti-rpc/default.nix +++ b/pkgs/development/libraries/ti-rpc/default.nix @@ -8,6 +8,10 @@ stdenv.mkDerivation rec { sha256 = "1xchbxy0xql7yl7z4n1icj8r7dmly46i22fvm00vdjq64zlmqg3j"; }; + postPatch = '' + sed '1i#include ' -i src/xdr_sizeof.c + ''; + nativeBuildInputs = [ autoreconfHook ]; propagatedBuildInputs = [ libkrb5 ]; From 2aa4517d4fd8ff50a3f9f9a5a9631b4618eb6f37 Mon Sep 17 00:00:00 2001 From: Servilio Afre Puentes Date: Mon, 6 Nov 2017 13:13:35 -0500 Subject: [PATCH 086/138] gitaly: 0.38.0 -> 0.43.1 --- .../version-management/gitaly/Gemfile | 4 + .../version-management/gitaly/Gemfile.lock | 26 +++++ .../version-management/gitaly/default.nix | 4 +- .../version-management/gitaly/gemset.nix | 102 ++++++++++++++++++ 4 files changed, 134 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/version-management/gitaly/Gemfile b/pkgs/applications/version-management/gitaly/Gemfile index 88b7120d6f9a..7e8f9f2b2557 100644 --- a/pkgs/applications/version-management/gitaly/Gemfile +++ b/pkgs/applications/version-management/gitaly/Gemfile @@ -3,3 +3,7 @@ source 'https://rubygems.org' gem 'github-linguist', '~> 4.7.0', require: 'linguist' gem 'gitaly-proto', '~> 0.37.0', require: 'gitaly' gem 'activesupport' + +group :development, :test do + gem 'gitlab-styles', '~> 2.0.0', require: false +end diff --git a/pkgs/applications/version-management/gitaly/Gemfile.lock b/pkgs/applications/version-management/gitaly/Gemfile.lock index 68433fc6878e..5ea14855b97f 100644 --- a/pkgs/applications/version-management/gitaly/Gemfile.lock +++ b/pkgs/applications/version-management/gitaly/Gemfile.lock @@ -8,6 +8,7 @@ GEM tzinfo (~> 1.1) addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) + ast (2.3.0) charlock_holmes (0.7.5) concurrent-ruby (1.0.5) escape_utils (1.1.1) @@ -21,6 +22,10 @@ GEM escape_utils (~> 1.1.0) mime-types (>= 1.19) rugged (>= 0.23.0b) + gitlab-styles (2.0.0) + rubocop (~> 0.49) + rubocop-gitlab-security (~> 0.1.0) + rubocop-rspec (~> 1.15) google-protobuf (3.4.0.2) googleauth (0.5.3) faraday (~> 0.12) @@ -47,7 +52,26 @@ GEM multi_json (1.12.1) multipart-post (2.0.0) os (0.9.6) + parallel (1.12.0) + parser (2.4.0.0) + ast (~> 2.2) + powerpack (0.1.1) public_suffix (2.0.5) + rainbow (2.2.2) + rake + rake (12.1.0) + rubocop (0.50.0) + parallel (~> 1.10) + parser (>= 2.3.3.1, < 3.0) + powerpack (~> 0.1) + rainbow (>= 2.2.2, < 3.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + rubocop-gitlab-security (0.1.0) + rubocop (>= 0.47.1) + rubocop-rspec (1.17.0) + rubocop (>= 0.50.0) + ruby-progressbar (1.8.3) rugged (0.26.0) signet (0.7.3) addressable (~> 2.3) @@ -57,6 +81,7 @@ GEM thread_safe (0.3.6) tzinfo (1.2.2) thread_safe (~> 0.1) + unicode-display_width (1.3.0) PLATFORMS ruby @@ -65,6 +90,7 @@ DEPENDENCIES activesupport gitaly-proto (~> 0.37.0) github-linguist (~> 4.7.0) + gitlab-styles (~> 2.0.0) BUNDLED WITH 1.15.4 diff --git a/pkgs/applications/version-management/gitaly/default.nix b/pkgs/applications/version-management/gitaly/default.nix index ba8831d370c7..63e5758107f7 100644 --- a/pkgs/applications/version-management/gitaly/default.nix +++ b/pkgs/applications/version-management/gitaly/default.nix @@ -7,14 +7,14 @@ let gemdir = ./.; }; in buildGoPackage rec { - version = "0.38.0"; + version = "0.43.1"; name = "gitaly-${version}"; src = fetchFromGitLab { owner = "gitlab-org"; repo = "gitaly"; rev = "v${version}"; - sha256 = "02s5gjxbjvm990n4h5zkyqj71a9mp4yj83hfl8mma0g7gx00icsf"; + sha256 = "19ggfc5nwv8q1wq739ab8qdfdngpi33431dgfa9593p6ad7v6hyq"; }; goPackagePath = "gitlab.com/gitlab-org/gitaly"; diff --git a/pkgs/applications/version-management/gitaly/gemset.nix b/pkgs/applications/version-management/gitaly/gemset.nix index 6dc3eb596665..57480f3f337e 100644 --- a/pkgs/applications/version-management/gitaly/gemset.nix +++ b/pkgs/applications/version-management/gitaly/gemset.nix @@ -17,6 +17,14 @@ }; version = "2.5.1"; }; + ast = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pp82blr5fakdk27d1d21xq9zchzb6vmyb1zcsl520s3ygvprn8m"; + type = "gem"; + }; + version = "2.3.0"; + }; charlock_holmes = { source = { remotes = ["https://rubygems.org"]; @@ -68,6 +76,15 @@ }; version = "4.7.6"; }; + gitlab-styles = { + dependencies = ["rubocop" "rubocop-gitlab-security" "rubocop-rspec"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1k8xrkjx8rcny8p0gsp18wskvn1qbw4rfgdp1f6x0p4xp6dlhjf4"; + type = "gem"; + }; + version = "2.0.0"; + }; google-protobuf = { source = { remotes = ["https://rubygems.org"]; @@ -184,6 +201,31 @@ }; version = "0.9.6"; }; + parallel = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qv2yj4sxr36ga6xdxvbq9h05hn10bwcbkqv6j6q1fiixhsdnnzd"; + type = "gem"; + }; + version = "1.12.0"; + }; + parser = { + dependencies = ["ast"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "130rfk8a2ws2fyq52hmi1n0xakylw39wv4x1qhai4z17x2b0k9cq"; + type = "gem"; + }; + version = "2.4.0.0"; + }; + powerpack = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fnn3fli5wkzyjl4ryh0k90316shqjfnhydmc7f8lqpi0q21va43"; + type = "gem"; + }; + version = "0.1.1"; + }; public_suffix = { source = { remotes = ["https://rubygems.org"]; @@ -192,6 +234,58 @@ }; version = "2.0.5"; }; + rainbow = { + dependencies = ["rake"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w"; + type = "gem"; + }; + version = "2.2.2"; + }; + rake = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0mfqgpp3m69s5v1rd51lfh5qpjwyia5p4rg337pw8c8wzm6pgfsw"; + type = "gem"; + }; + version = "12.1.0"; + }; + rubocop = { + dependencies = ["parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hpd7zcv4y9y750wj630abvmcjwv39dsrj1fjff60ik7gfri0xlz"; + type = "gem"; + }; + version = "0.50.0"; + }; + rubocop-gitlab-security = { + dependencies = ["rubocop"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0aw9qmyc6xj6fi0jxp8m4apk358rd91z492ragn6jp4rghkqj5cy"; + type = "gem"; + }; + version = "0.1.0"; + }; + rubocop-rspec = { + dependencies = ["rubocop"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hf48ng67yswvshmv4cyysj1rs1z3fnvlycr50jdcgwlynpyxkhs"; + type = "gem"; + }; + version = "1.17.0"; + }; + ruby-progressbar = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "029kv0q3kfq53rjyak4ypn7196l8z4hflfmv4p5787n78z7baiqf"; + type = "gem"; + }; + version = "1.8.3"; + }; rugged = { source = { remotes = ["https://rubygems.org"]; @@ -226,4 +320,12 @@ }; version = "1.2.2"; }; + unicode-display_width = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12pi0gwqdnbx1lv5136v3vyr0img9wr0kxcn4wn54ipq4y41zxq8"; + type = "gem"; + }; + version = "1.3.0"; + }; } \ No newline at end of file From 3e90cbe2688c34ccad9a155abc2525605c887b7b Mon Sep 17 00:00:00 2001 From: Servilio Afre Puentes Date: Mon, 6 Nov 2017 14:02:26 -0500 Subject: [PATCH 087/138] gitlab-shell: make the patches apply cleanly --- .../gitlab-shell/remove-hardcoded-locations.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch b/pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch index e88dbad071f5..dd1ecafb8bf8 100644 --- a/pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch +++ b/pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch @@ -3,7 +3,7 @@ index 0b11ce3..ffc3faf 100644 --- a/lib/gitlab_projects.rb +++ b/lib/gitlab_projects.rb @@ -8,7 +8,7 @@ require_relative 'gitlab_metrics' - require_relative 'gitlab_reference_counter' + require_relative 'gitlab_metrics' class GitlabProjects - GLOBAL_HOOKS_DIRECTORY = File.join(ROOT_PATH, 'hooks') @@ -15,7 +15,7 @@ diff --git a/lib/gitlab_shell.rb b/lib/gitlab_shell.rb index e7d0254..181ec8a 100644 --- a/lib/gitlab_shell.rb +++ b/lib/gitlab_shell.rb -@@ -163,7 +163,8 @@ class GitlabShell +@@ -188,7 +188,8 @@ class GitlabShell end # We use 'chdir: ROOT_PATH' to let the next executable know where config.yml is. From c9bb6ac1fd13d5e7a346f5b3c65b07441530705b Mon Sep 17 00:00:00 2001 From: Servilio Afre Puentes Date: Mon, 6 Nov 2017 14:04:27 -0500 Subject: [PATCH 088/138] gitlab-shell: 5.9.0 -> 5.9.3 --- pkgs/applications/version-management/gitlab-shell/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/version-management/gitlab-shell/default.nix b/pkgs/applications/version-management/gitlab-shell/default.nix index 1fdb529d9ac4..ac05ca4c4847 100644 --- a/pkgs/applications/version-management/gitlab-shell/default.nix +++ b/pkgs/applications/version-management/gitlab-shell/default.nix @@ -1,14 +1,14 @@ { stdenv, ruby, bundler, fetchFromGitLab, go }: stdenv.mkDerivation rec { - version = "5.9.0"; + version = "5.9.3"; name = "gitlab-shell-${version}"; srcs = fetchFromGitLab { owner = "gitlab-org"; repo = "gitlab-shell"; rev = "v${version}"; - sha256 = "1zjlwivksaqlfxxhxjgpqa3293nhijw76fj7nv0l11820wplc7yf"; + sha256 = "12iil8ap9lbd7skj7xr2v6lsyjdd97svbmyj0n2j8m819fv0x27p"; }; buildInputs = [ From fa0148abf83873b27667346f95b9f76fa09b7a31 Mon Sep 17 00:00:00 2001 From: Servilio Afre Puentes Date: Mon, 6 Nov 2017 14:39:03 -0500 Subject: [PATCH 089/138] gitlab-workhorse: 3.0.0 -> 3.2.0 --- .../version-management/gitlab-workhorse/default.nix | 4 ++-- .../gitlab-workhorse/remove-hardcoded-paths.patch | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/version-management/gitlab-workhorse/default.nix b/pkgs/applications/version-management/gitlab-workhorse/default.nix index a91a15e66b85..1f3407eddcf5 100644 --- a/pkgs/applications/version-management/gitlab-workhorse/default.nix +++ b/pkgs/applications/version-management/gitlab-workhorse/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchFromGitLab, git, go }: stdenv.mkDerivation rec { - version = "3.0.0"; + version = "3.2.0"; name = "gitlab-workhorse-${version}"; srcs = fetchFromGitLab { owner = "gitlab-org"; repo = "gitlab-workhorse"; rev = "v${version}"; - sha256 = "0lz3bgwww640c7gh97vf40a8h6cz4znscl0r00z6iiwkc0xxzp7j"; + sha256 = "1ivqlhvmxhdb8359yh469zl45j00n94b53naqi8jx06kijfsdz4r"; }; buildInputs = [ git go ]; diff --git a/pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch b/pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch index 37f3d2deef54..d8313ecb433a 100644 --- a/pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch +++ b/pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch @@ -2,11 +2,11 @@ diff --git a/internal/git/command.go b/internal/git/command.go index 0e5496c..5778294 100644 --- a/internal/git/command.go +++ b/internal/git/command.go -@@ -16,6 +16,7 @@ func gitCommand(gl_id string, name string, args ...string) *exec.Cmd { +@@ -19,6 +19,7 @@ func gitCommand(gl_id string, name string, args ...string) *exec.Cmd { cmd.Env = []string{ fmt.Sprintf("HOME=%s", os.Getenv("HOME")), fmt.Sprintf("PATH=%s", os.Getenv("PATH")), + fmt.Sprintf("GITLAB_SHELL_CONFIG_PATH=%s", os.Getenv("GITLAB_SHELL_CONFIG_PATH")), fmt.Sprintf("LD_LIBRARY_PATH=%s", os.Getenv("LD_LIBRARY_PATH")), - fmt.Sprintf("GL_ID=%s", gl_id), + fmt.Sprintf("GL_PROTOCOL=http"), } From f2ac5e0acf7ecd32d87696c9d8d2aeb8d6896eb5 Mon Sep 17 00:00:00 2001 From: Servilio Afre Puentes Date: Fri, 3 Nov 2017 17:27:58 -0400 Subject: [PATCH 090/138] gitlab: 10.0.2 -> 10.1.1 --- .../version-management/gitlab/Gemfile | 17 +- .../version-management/gitlab/Gemfile.lock | 102 +++++------ .../version-management/gitlab/default.nix | 6 +- .../version-management/gitlab/gemset.nix | 166 +++++++++++------- .../gitlab/nulladapter.patch | 6 +- .../gitlab/remove-hardcoded-locations.patch | 20 +-- 6 files changed, 182 insertions(+), 135 deletions(-) diff --git a/pkgs/applications/version-management/gitlab/Gemfile b/pkgs/applications/version-management/gitlab/Gemfile index 97af3413b156..b4a457bff6e5 100644 --- a/pkgs/applications/version-management/gitlab/Gemfile +++ b/pkgs/applications/version-management/gitlab/Gemfile @@ -23,10 +23,10 @@ gem 'faraday', '~> 0.12' # Authentication libraries gem 'devise', '~> 4.2' gem 'doorkeeper', '~> 4.2.0' -gem 'doorkeeper-openid_connect', '~> 1.1.0' +gem 'doorkeeper-openid_connect', '~> 1.2.0' gem 'omniauth', '~> 1.4.2' gem 'omniauth-auth0', '~> 1.4.1' -gem 'omniauth-azure-oauth2', '~> 0.0.6' +gem 'omniauth-azure-oauth2', '~> 0.0.9' gem 'omniauth-cas3', '~> 1.1.4' gem 'omniauth-facebook', '~> 4.0.0' gem 'omniauth-github', '~> 1.1.1' @@ -105,7 +105,7 @@ gem 'fog-rackspace', '~> 0.1.1' gem 'fog-aliyun', '~> 0.1.0' # for Google storage -gem 'google-api-client', '~> 0.8.6' +gem 'google-api-client', '~> 0.13.6' # for aws storage gem 'unf', '~> 0.1.4' @@ -116,7 +116,7 @@ gem 'seed-fu', '~> 2.3.5' # Markdown and HTML processing gem 'html-pipeline', '~> 1.11.0' gem 'deckar01-task_list', '2.0.0' -gem 'gitlab-markup', '~> 1.5.1' +gem 'gitlab-markup', '~> 1.6.2' gem 'redcarpet', '~> 3.4' gem 'RedCloth', '~> 4.3.2' gem 'rdoc', '~> 4.2' @@ -239,7 +239,7 @@ gem 'rack-proxy', '~> 0.6.0' gem 'sass-rails', '~> 5.0.6' gem 'uglifier', '~> 2.7.2' -gem 'addressable', '~> 2.3.8' +gem 'addressable', '~> 2.5.2' gem 'bootstrap-sass', '~> 3.3.0' gem 'font-awesome-rails', '~> 4.7' gem 'gemojione', '~> 3.3' @@ -281,7 +281,7 @@ group :metrics do gem 'influxdb', '~> 0.2', require: false # Prometheus - gem 'prometheus-client-mmap', '~>0.7.0.beta14' + gem 'prometheus-client-mmap', '~>0.7.0.beta18' gem 'raindrops', '~> 0.18' end @@ -356,12 +356,13 @@ end group :test do gem 'shoulda-matchers', '~> 3.1.2', require: false gem 'email_spec', '~> 1.6.0' - gem 'json-schema', '~> 2.6.2' + gem 'json-schema', '~> 2.8.0' gem 'webmock', '~> 2.3.2' gem 'test_after_commit', '~> 1.1' gem 'sham_rack', '~> 1.3.6' gem 'timecop', '~> 0.8.0' gem 'concurrent-ruby', '~> 1.0.5' + gem 'test-prof', '~> 0.2.5' end gem 'octokit', '~> 4.6.2' @@ -397,7 +398,7 @@ group :ed25519 do end # Gitaly GRPC client -gem 'gitaly-proto', '~> 0.33.0', require: 'gitaly' +gem 'gitaly-proto', '~> 0.39.0', require: 'gitaly' gem 'toml-rb', '~> 0.3.15', require: false diff --git a/pkgs/applications/version-management/gitlab/Gemfile.lock b/pkgs/applications/version-management/gitlab/Gemfile.lock index 61c5335962b0..fd3aab2d54ad 100644 --- a/pkgs/applications/version-management/gitlab/Gemfile.lock +++ b/pkgs/applications/version-management/gitlab/Gemfile.lock @@ -47,7 +47,8 @@ GEM adamantium (0.2.0) ice_nine (~> 0.11.0) memoizable (~> 0.4.0) - addressable (2.3.8) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) akismet (2.0.0) allocations (1.0.5) arel (6.0.4) @@ -64,10 +65,6 @@ GEM attr_encrypted (3.0.3) encryptor (~> 3.0.0) attr_required (1.0.0) - autoparse (0.3.3) - addressable (>= 2.3.1) - extlib (>= 0.9.15) - multi_json (>= 1.0.0) autoprefixer-rails (6.2.3) execjs json @@ -85,7 +82,7 @@ GEM coderay (>= 1.0.0) erubis (>= 2.6.6) rack (>= 0.9.0) - bindata (2.3.5) + bindata (2.4.1) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) bootstrap-sass (3.3.6) @@ -148,6 +145,8 @@ GEM debugger-ruby_core_source (1.3.8) deckar01-task_list (2.0.0) html-pipeline + declarative (0.0.10) + declarative-option (0.1.0) default_value_for (3.0.2) activerecord (>= 3.2.0, < 5.1) descendants_tracker (0.0.4) @@ -169,9 +168,9 @@ GEM docile (1.1.5) domain_name (0.5.20161021) unf (>= 0.0.5, < 1.0.0) - doorkeeper (4.2.0) + doorkeeper (4.2.6) railties (>= 4.2) - doorkeeper-openid_connect (1.1.2) + doorkeeper-openid_connect (1.2.0) doorkeeper (~> 4.0) json-jwt (~> 1.6) dropzonejs-rails (0.7.2) @@ -190,13 +189,12 @@ GEM excon (0.57.1) execjs (2.6.0) expression_parser (0.9.0) - extlib (0.9.16) factory_girl (4.7.0) activesupport (>= 3.0.0) factory_girl_rails (4.7.0) factory_girl (~> 4.7.0) railties (>= 3.0.0) - faraday (0.12.1) + faraday (0.12.2) multipart-post (>= 1.2, < 3) faraday_middleware (0.11.0.1) faraday (>= 0.7.4, < 1.0) @@ -277,7 +275,7 @@ GEM po_to_json (>= 1.0.0) rails (>= 3.2.0) gherkin-ruby (0.3.2) - gitaly-proto (0.33.0) + gitaly-proto (0.39.0) google-protobuf (~> 3.1) grpc (~> 1.0) github-linguist (4.7.6) @@ -290,12 +288,12 @@ GEM flowdock (~> 0.7) gitlab-grit (>= 2.4.1) multi_json - gitlab-grit (2.8.1) + gitlab-grit (2.8.2) charlock_holmes (~> 0.6) diff-lcs (~> 1.1) - mime-types (>= 1.16, < 3) + mime-types (>= 1.16) posix-spawn (~> 0.3) - gitlab-markup (1.5.1) + gitlab-markup (1.6.2) gitlab_omniauth-ldap (2.0.4) net-ldap (~> 0.16) omniauth (~> 1.3) @@ -321,20 +319,16 @@ GEM json multi_json request_store (>= 1.0) - google-api-client (0.8.7) - activesupport (>= 3.2, < 5.0) - addressable (~> 2.3) - autoparse (~> 0.3) - extlib (~> 0.9) - faraday (~> 0.9) - googleauth (~> 0.3) - launchy (~> 2.4) - multi_json (~> 1.10) - retriable (~> 1.4) - signet (~> 0.6) + google-api-client (0.13.6) + addressable (~> 2.5, >= 2.5.1) + googleauth (~> 0.5) + httpclient (>= 2.8.1, < 3.0) + mime-types (~> 3.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) google-protobuf (3.4.0.2) - googleauth (0.5.1) - faraday (~> 0.9) + googleauth (0.5.3) + faraday (~> 0.12) jwt (~> 1.4) logging (~> 2.0) memoist (~> 0.12) @@ -359,7 +353,7 @@ GEM rake grape_logging (1.7.0) grape - grpc (1.4.5) + grpc (1.6.0) google-protobuf (~> 3.1) googleauth (~> 0.5.1) haml (4.0.7) @@ -418,14 +412,14 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.6) - json-jwt (1.7.1) + json-jwt (1.7.2) activesupport bindata multi_json (>= 1.3) securecompare url_safe_base64 - json-schema (2.6.2) - addressable (~> 2.3.8) + json-schema (2.8.0) + addressable (>= 2.4) jwt (1.5.6) kaminari (1.0.1) activesupport (>= 4.1.0) @@ -477,18 +471,20 @@ GEM mail (2.6.6) mime-types (>= 1.16, < 4) mail_room (0.9.1) - memoist (0.15.0) + memoist (0.16.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) method_source (0.8.2) - mime-types (2.99.3) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) mimemagic (0.3.0) mini_mime (0.1.4) mini_portile2 (2.3.0) minitest (5.7.0) mmap2 (2.2.7) mousetrap-rails (1.4.6) - multi_json (1.12.1) + multi_json (1.12.2) multi_xml (0.6.0) multipart-post (2.0.0) mustermann (1.0.0) @@ -518,10 +514,10 @@ GEM omniauth-oauth2 (~> 1.1) omniauth-authentiq (0.3.1) omniauth-oauth2 (~> 1.3, >= 1.3.1) - omniauth-azure-oauth2 (0.0.6) + omniauth-azure-oauth2 (0.0.9) jwt (~> 1.0) omniauth (~> 1.0) - omniauth-oauth2 (~> 1.1) + omniauth-oauth2 (~> 1.4) omniauth-cas3 (1.1.4) addressable (~> 2.3) nokogiri (~> 1.7, >= 1.7.1) @@ -547,7 +543,7 @@ GEM omniauth-oauth (1.1.0) oauth omniauth (~> 1.0) - omniauth-oauth2 (1.3.1) + omniauth-oauth2 (1.4.0) oauth2 (~> 1.0) omniauth (~> 1.2) omniauth-oauth2-generic (0.2.2) @@ -626,7 +622,7 @@ GEM parser unparser procto (0.0.3) - prometheus-client-mmap (0.7.0.beta14) + prometheus-client-mmap (0.7.0.beta18) mmap2 (~> 2.2, >= 2.2.7) pry (0.10.4) coderay (~> 1.1.0) @@ -637,6 +633,7 @@ GEM pry (~> 0.10) pry-rails (0.3.5) pry (>= 0.9.10) + public_suffix (3.0.0) pyu-ruby-sasl (0.0.3.3) rack (1.6.8) rack-accept (0.4.5) @@ -686,7 +683,7 @@ GEM rainbow (2.2.2) rake raindrops (0.18.0) - rake (12.0.0) + rake (12.1.0) rblineprof (0.3.6) debugger-ruby_core_source (~> 1.3) rbnacl (4.0.2) @@ -719,6 +716,10 @@ GEM redis-store (~> 1.2.0) redis-store (1.2.0) redis (>= 2.2) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) request_store (1.3.1) responders (2.3.0) railties (>= 4.2.0, < 5.1) @@ -726,7 +727,7 @@ GEM http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 4.0) netrc (~> 0.8) - retriable (1.4.1) + retriable (3.1.1) rinku (2.0.0) rotp (2.1.2) rouge (2.2.1) @@ -884,6 +885,7 @@ GEM ffi sysexits (1.2.0) temple (0.7.7) + test-prof (0.2.5) test_after_commit (1.1.0) activerecord (>= 3.2) text (1.3.1) @@ -904,12 +906,13 @@ GEM tzinfo (1.2.3) thread_safe (~> 0.1) u2f (0.2.1) + uber (0.1.0) uglifier (2.7.2) execjs (>= 0.3.0) json (>= 1.8.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.2) + unf_ext (0.0.7.4) unicode-display_width (1.3.0) unicorn (5.1.0) kgio (~> 2.6) @@ -965,7 +968,7 @@ DEPENDENCIES activerecord-nulldb-adapter activerecord_sane_schema_dumper (= 0.2) acts-as-taggable-on (~> 4.0) - addressable (~> 2.3.8) + addressable (~> 2.5.2) akismet (~> 2.0) allocations (~> 1.0) asana (~> 0.6.0) @@ -1002,7 +1005,7 @@ DEPENDENCIES devise-two-factor (~> 3.0.0) diffy (~> 3.1.0) doorkeeper (~> 4.2.0) - doorkeeper-openid_connect (~> 1.1.0) + doorkeeper-openid_connect (~> 1.2.0) dropzonejs-rails (~> 0.7.1) email_reply_trimmer (~> 0.1) email_spec (~> 1.6.0) @@ -1027,15 +1030,15 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.2.0) - gitaly-proto (~> 0.33.0) + gitaly-proto (~> 0.39.0) github-linguist (~> 4.7.0) gitlab-flowdock-git-hook (~> 1.0.1) - gitlab-markup (~> 1.5.1) + gitlab-markup (~> 1.6.2) gitlab_omniauth-ldap (~> 2.0.4) gollum-lib (~> 4.2) gollum-rugged_adapter (~> 0.4.4) gon (~> 6.1.0) - google-api-client (~> 0.8.6) + google-api-client (~> 0.13.6) gpgme grape (~> 1.0) grape-entity (~> 0.6.0) @@ -1053,7 +1056,7 @@ DEPENDENCIES jira-ruby (~> 1.4) jquery-atwho-rails (~> 1.3.2) jquery-rails (~> 4.1.0) - json-schema (~> 2.6.2) + json-schema (~> 2.8.0) jwt (~> 1.5.6) kaminari (~> 1.0) knapsack (~> 1.11.0) @@ -1077,7 +1080,7 @@ DEPENDENCIES omniauth (~> 1.4.2) omniauth-auth0 (~> 1.4.1) omniauth-authentiq (~> 0.3.1) - omniauth-azure-oauth2 (~> 0.0.6) + omniauth-azure-oauth2 (~> 0.0.9) omniauth-cas3 (~> 1.1.4) omniauth-facebook (~> 4.0.0) omniauth-github (~> 1.1.1) @@ -1103,7 +1106,7 @@ DEPENDENCIES pg (~> 0.18.2) poltergeist (~> 1.9.0) premailer-rails (~> 1.9.7) - prometheus-client-mmap (~> 0.7.0.beta14) + prometheus-client-mmap (~> 0.7.0.beta18) pry-byebug (~> 3.4.1) pry-rails (~> 0.3.4) rack-attack (~> 4.4.1) @@ -1166,6 +1169,7 @@ DEPENDENCIES stackprof (~> 0.2.10) state_machines-activerecord (~> 0.4.0) sys-filesystem (~> 1.1.6) + test-prof (~> 0.2.5) test_after_commit (~> 1.1) thin (~> 1.7.0) timecop (~> 0.8.0) diff --git a/pkgs/applications/version-management/gitlab/default.nix b/pkgs/applications/version-management/gitlab/default.nix index 657221d4b420..bc3ca9192bcb 100644 --- a/pkgs/applications/version-management/gitlab/default.nix +++ b/pkgs/applications/version-management/gitlab/default.nix @@ -18,11 +18,11 @@ let }; }; - version = "10.0.2"; + version = "10.1.1"; gitlabDeb = fetchurl { url = "https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_${version}-ce.0_amd64.deb/download"; - sha256 = "0jsqjarvjzbxv1yiddzp5xwsqqrq5cvam0xn749p1vzqhcp8pahc"; + sha256 = "0xvzxcygy6ffqm24rk6v9gs6g9r744vpwwvk9d00wjla7hwmq3w2"; }; in @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { owner = "gitlabhq"; repo = "gitlabhq"; rev = "v${version}"; - sha256 = "1602d6nkb41gg80n6p0wqxrjsn79s0z3817461d8dw2ha2dmbl34"; + sha256 = "0p118msad6l12pd4q3vkvjggiiasbkh6pnl94riqyb5zkb7yrb1a"; }; patches = [ diff --git a/pkgs/applications/version-management/gitlab/gemset.nix b/pkgs/applications/version-management/gitlab/gemset.nix index 34567ddb3ea4..4fb4c48b0dee 100644 --- a/pkgs/applications/version-management/gitlab/gemset.nix +++ b/pkgs/applications/version-management/gitlab/gemset.nix @@ -115,12 +115,13 @@ version = "0.2.0"; }; addressable = { + dependencies = ["public_suffix"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1533axm85gpz267km9gnfarf9c78g2scrysd6b8yw33vmhkz2km6"; + sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"; type = "gem"; }; - version = "2.3.8"; + version = "2.5.2"; }; akismet = { source = { @@ -205,15 +206,6 @@ }; version = "1.0.0"; }; - autoparse = { - dependencies = ["addressable" "extlib" "multi_json"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1q5wkd8gc2ckmgry9fba4b8vxb5kr8k8gqq2wycbirgq06mbllb6"; - type = "gem"; - }; - version = "0.3.3"; - }; autoprefixer-rails = { dependencies = ["execjs" "json"]; source = { @@ -292,10 +284,10 @@ bindata = { source = { remotes = ["https://rubygems.org"]; - sha256 = "07i51jzq9iamw40xmmcgkrdq4m8f0vb5gp53p6q1vggj7z53q3v7"; + sha256 = "0anbg203zjr4crql20ss5b9xg2c6a7j8nm6hs8w3ll1h1akkpp2z"; type = "gem"; }; - version = "2.3.5"; + version = "2.4.1"; }; binding_of_caller = { dependencies = ["debug_inspector"]; @@ -592,6 +584,22 @@ }; version = "2.0.0"; }; + declarative = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0642xvwzzbgi3kp1bg467wma4g3xqrrn0sk369hjam7w579gnv5j"; + type = "gem"; + }; + version = "0.0.10"; + }; + declarative-option = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g4ibxq566f1frnhdymzi9hxxcm4g2gw4n21mpjk2mhwym4q6l0p"; + type = "gem"; + }; + version = "0.1.0"; + }; default_value_for = { dependencies = ["activerecord"]; source = { @@ -665,19 +673,19 @@ dependencies = ["railties"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0hs8r280k7a1kibzxrhifjps880n43jfrybf4mqpffw669jrwk3v"; + sha256 = "0r5rfvjjnlf9cn97cdrfw260zkg785k4197xqidgb35445k62mah"; type = "gem"; }; - version = "4.2.0"; + version = "4.2.6"; }; doorkeeper-openid_connect = { dependencies = ["doorkeeper" "json-jwt"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1pla85j5wxra0k9rhj04g2ai5d5jg97fiavi0s9v2hjba2l54cni"; + sha256 = "13k0xlr1grjj8ri26qy2zwbgi3fqxinvnygh53bnyi9qcynx5827"; type = "gem"; }; - version = "1.1.2"; + version = "1.2.0"; }; dropzonejs-rails = { dependencies = ["rails"]; @@ -778,14 +786,6 @@ }; version = "0.9.0"; }; - extlib = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1cbw3vgb189z3vfc1arijmsd604m3w5y5xvdfkrblc9qh7sbk2rh"; - type = "gem"; - }; - version = "0.9.16"; - }; factory_girl = { dependencies = ["activesupport"]; source = { @@ -808,10 +808,10 @@ dependencies = ["multipart-post"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1wkx9844vacsk2229xbc27djf6zw15kqd60ifr78whf9mp9v6l03"; + sha256 = "157c4cmb5g1b3ny6k9qf9z57rfijl54fcq3hnqqf6g31g1m096b2"; type = "gem"; }; - version = "0.12.1"; + version = "0.12.2"; }; faraday_middleware = { dependencies = ["faraday"]; @@ -1071,10 +1071,10 @@ dependencies = ["google-protobuf" "grpc"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0f15idw1850kwi0na6x3xlk13ljwx3mpfnxfv58631cmb3ac7wf8"; + sha256 = "0irc3yfyr5li2ki6w03znsklnk0qx3srk4wrb7jav042c4kw325k"; type = "gem"; }; - version = "0.33.0"; + version = "0.39.0"; }; github-linguist = { dependencies = ["charlock_holmes" "escape_utils" "mime-types" "rugged"]; @@ -1106,18 +1106,18 @@ dependencies = ["charlock_holmes" "diff-lcs" "mime-types" "posix-spawn"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0lf1cr6pzqrbnxiiwym6q74b1a2ihdi91dynajk8hi1p093hl66n"; + sha256 = "0xgs3l81ghlc5nm75n0pz7b2cj3hpscfq5iy27c483nnjn2v5mc4"; type = "gem"; }; - version = "2.8.1"; + version = "2.8.2"; }; gitlab-markup = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1aam7zvvbai5nv7vf0c0640pvik6s71f276lip4yb4slbg0pfpn2"; + sha256 = "114jfbyyfwad609k1l1fcmbzszb3frdchh83gdwndkglllvprhjz"; type = "gem"; }; - version = "1.5.1"; + version = "1.6.2"; }; gitlab_omniauth-ldap = { dependencies = ["net-ldap" "omniauth" "pyu-ruby-sasl" "rubyntlm"]; @@ -1174,13 +1174,13 @@ version = "6.1.0"; }; google-api-client = { - dependencies = ["activesupport" "addressable" "autoparse" "extlib" "faraday" "googleauth" "launchy" "multi_json" "retriable" "signet"]; + dependencies = ["addressable" "googleauth" "httpclient" "mime-types" "representable" "retriable"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "11wr57j9fp6x6fym4k1a7jqp72qgc8l24mfwb4y55bbvdmkv1b2d"; + sha256 = "0ac9qa0kwnirkvwz2w9zf07lqcgbmnvgd1wg8xxyjbadwsbpyf1y"; type = "gem"; }; - version = "0.8.7"; + version = "0.13.6"; }; google-protobuf = { source = { @@ -1194,10 +1194,10 @@ dependencies = ["faraday" "jwt" "logging" "memoist" "multi_json" "os" "signet"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1nzkg63s161c6jsia92c1jfwpayzbpwn588smd286idn07y0az2m"; + sha256 = "1xpmvrzhczak25nm0k3r9aa083lmfnzi94mir3g1xyrgzz66vxli"; type = "gem"; }; - version = "0.5.1"; + version = "0.5.3"; }; gpgme = { dependencies = ["mini_portile2"]; @@ -1248,10 +1248,10 @@ dependencies = ["google-protobuf" "googleauth"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1zhci260088zlghpaz6ania1blz1dd7lgklsjnqk1vcymhpr6b38"; + sha256 = "056ipqai887x5jpbgcc215kdi0lfqjzcjbx3hx11cjrfww01zc52"; type = "gem"; }; - version = "1.4.5"; + version = "1.6.0"; }; haml = { dependencies = ["tilt"]; @@ -1471,19 +1471,19 @@ dependencies = ["activesupport" "bindata" "multi_json" "securecompare" "url_safe_base64"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1ylvlnb6assan9qkhz1vq1gbfwxg35q9a8f8qhlyx0fak5fyks23"; + sha256 = "15a3v498lvsshzgjnk2dmyvjv87y3lffq71axj5xq3iz4mp1r4b2"; type = "gem"; }; - version = "1.7.1"; + version = "1.7.2"; }; json-schema = { dependencies = ["addressable"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "15bva4w940ckan3q89in5f98s8zz77nxglylgm98697wa4fbfqp9"; + sha256 = "11di8qyam6bmqn0fvvvf3crgaqy4sil0d406ymx0jacn3ff98ymz"; type = "gem"; }; - version = "2.6.2"; + version = "2.8.0"; }; jwt = { source = { @@ -1662,10 +1662,10 @@ memoist = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0yd3rd7bnbhn9n47qlhcii5z89liabdjhy3is3h6gq77gyfk4f5q"; + sha256 = "0pq8fhqh8w25qcw9v3vzfb0i6jp0k3949ahxc3wrwz2791dpbgbh"; type = "gem"; }; - version = "0.15.0"; + version = "0.16.0"; }; memoizable = { dependencies = ["thread_safe"]; @@ -1685,12 +1685,21 @@ version = "0.8.2"; }; mime-types = { + dependencies = ["mime-types-data"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "03j98xr0qw2p2jkclpmk7pm29yvmmh0073d8d43ajmr0h3w7i5l9"; + sha256 = "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"; type = "gem"; }; - version = "2.99.3"; + version = "3.1"; + }; + mime-types-data = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"; + type = "gem"; + }; + version = "3.2016.0521"; }; mimemagic = { source = { @@ -1743,10 +1752,10 @@ multi_json = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1wpc23ls6v2xbk3l1qncsbz16npvmw8p0b38l8czdzri18mp51xk"; + sha256 = "1raim9ddjh672m32psaa9niw67ywzjbxbdb8iijx3wv9k5b0pk2x"; type = "gem"; }; - version = "1.12.1"; + version = "1.12.2"; }; multi_xml = { source = { @@ -1895,10 +1904,10 @@ dependencies = ["jwt" "omniauth" "omniauth-oauth2"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0qay454zvyas8xfnfkycqpjkafaq5pw4gaji176cdfw0blhviz0s"; + sha256 = "0ck5616fjik0dw89xvak1mi8ijcv10lsh6n9h4107l5dys2g3jfx"; type = "gem"; }; - version = "0.0.6"; + version = "0.0.9"; }; omniauth-cas3 = { dependencies = ["addressable" "nokogiri" "omniauth"]; @@ -1976,10 +1985,10 @@ dependencies = ["oauth2" "omniauth"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0mskwlw5ibx9mz7ywqji6mm56ikf7mglbnfc02qhg6ry527jsxdm"; + sha256 = "0aykbg5qfm37ywrq34dydrhxa5jwpski71dpspgp2fi6dinx09f5"; type = "gem"; }; - version = "1.3.1"; + version = "1.4.0"; }; omniauth-oauth2-generic = { dependencies = ["omniauth-oauth2"]; @@ -2247,10 +2256,10 @@ dependencies = ["mmap2"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1r9s30hypcpw4abxlzcjlkcwkckqvr5sbph3blbl0rq2r8c8h25p"; + sha256 = "1fgkilpiha338mvfkj5rwhny3vld0nb3v1vgbrlxbhnvch26wakh"; type = "gem"; }; - version = "0.7.0.beta14"; + version = "0.7.0.beta18"; }; pry = { dependencies = ["coderay" "method_source" "slop"]; @@ -2279,6 +2288,14 @@ }; version = "0.3.5"; }; + public_suffix = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0snaj1gxfib4ja1mvy3dzmi7am73i0mkqr0zkz045qv6509dhj5f"; + type = "gem"; + }; + version = "3.0.0"; + }; pyu-ruby-sasl = { source = { remotes = ["https://rubygems.org"]; @@ -2431,10 +2448,10 @@ rake = { source = { remotes = ["https://rubygems.org"]; - sha256 = "01j8fc9bqjnrsxbppncai05h43315vmz9fwg28qdsgcjw9ck1d7n"; + sha256 = "0mfqgpp3m69s5v1rd51lfh5qpjwyia5p4rg337pw8c8wzm6pgfsw"; type = "gem"; }; - version = "12.0.0"; + version = "12.1.0"; }; rblineprof = { dependencies = ["debugger-ruby_core_source"]; @@ -2575,6 +2592,15 @@ }; version = "1.2.0"; }; + representable = { + dependencies = ["declarative" "declarative-option" "uber"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qm9rgi1j5a6nv726ka4mmixivlxfsg91h8rpp72wwd4vqbkkm07"; + type = "gem"; + }; + version = "3.0.4"; + }; request_store = { source = { remotes = ["https://rubygems.org"]; @@ -2604,10 +2630,10 @@ retriable = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1cmhwgv5r4vn7iqy4bfbnbb73pzl8ik69zrwq9vdim45v8b13gsj"; + sha256 = "0pnriyn9zh120hxm92vb12hfsf7c98nawyims1shxj3ldpl0l3ar"; type = "gem"; }; - version = "1.4.1"; + version = "3.1.1"; }; rinku = { source = { @@ -3195,6 +3221,14 @@ }; version = "0.7.7"; }; + test-prof = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08nvn3c1mzgcjgk9lr3py0zjd8fjjrm3ncn9rpqkfbx429mgw2l3"; + type = "gem"; + }; + version = "0.2.5"; + }; test_after_commit = { dependencies = ["activerecord"]; source = { @@ -3296,6 +3330,14 @@ }; version = "0.2.1"; }; + uber = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1p1mm7mngg40x05z52md3mbamkng0zpajbzqjjwmsyw0zw3v9vjv"; + type = "gem"; + }; + version = "0.1.0"; + }; uglifier = { dependencies = ["execjs" "json"]; source = { @@ -3317,10 +3359,10 @@ unf_ext = { source = { remotes = ["https://rubygems.org"]; - sha256 = "04d13bp6lyg695x94whjwsmzc2ms72d94vx861nx1y40k3817yp8"; + sha256 = "14hr2dzqh33kqc0xchs8l05pf3kjcayvad4z1ip5rdjxrkfk8glb"; type = "gem"; }; - version = "0.0.7.2"; + version = "0.0.7.4"; }; unicode-display_width = { source = { diff --git a/pkgs/applications/version-management/gitlab/nulladapter.patch b/pkgs/applications/version-management/gitlab/nulladapter.patch index 70195fe821a0..3b30ff03346b 100644 --- a/pkgs/applications/version-management/gitlab/nulladapter.patch +++ b/pkgs/applications/version-management/gitlab/nulladapter.patch @@ -14,7 +14,7 @@ diff --git a/Gemfile.lock b/Gemfile.lock index 38944248f9..08ce4486ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock -@@ -32,6 +32,8 @@ GEM +@@ -33,6 +33,8 @@ GEM activemodel (= 4.2.8) activesupport (= 4.2.8) arel (~> 6.0) @@ -23,11 +23,11 @@ index 38944248f9..08ce4486ba 100644 activerecord_sane_schema_dumper (0.2) rails (>= 4, < 5) activesupport (4.2.8) -@@ -926,6 +928,7 @@ PLATFORMS +@@ -963,6 +965,7 @@ PLATFORMS DEPENDENCIES RedCloth (~> 4.3.2) ace-rails-ap (~> 4.1.0) + activerecord-nulldb-adapter activerecord_sane_schema_dumper (= 0.2) acts-as-taggable-on (~> 4.0) - addressable (~> 2.3.8) + addressable (~> 2.5.2) diff --git a/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch index c88f525715e0..39c7c28847c4 100644 --- a/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch +++ b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch @@ -27,20 +27,20 @@ diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index 0b33783869..cd4e41d9bd 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example -@@ -521,7 +521,7 @@ production: &base +@@ -574,7 +574,7 @@ production: &base # CAUTION! # Use the default values unless you really know what you are doing git: - bin_path: /usr/bin/git + bin_path: git - # The next value is the maximum memory size grit can use - # Given in number of bytes per git object (e.g. a commit) - # This value can be increased if you have very large commits + + ## Webpack settings + # If enabled, this will tell rails to serve frontend assets from the webpack-dev-server running diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 8ddf8e4d2e..559cf9adf7 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb -@@ -219,7 +219,7 @@ Settings.gitlab['user'] ||= 'git' +@@ -252,7 +252,7 @@ Settings.gitlab['user'] ||= 'git' Settings.gitlab['user_home'] ||= begin Etc.getpwnam(Settings.gitlab['user']).dir rescue ArgumentError # no user configured @@ -49,15 +49,15 @@ index 8ddf8e4d2e..559cf9adf7 100644 end Settings.gitlab['time_zone'] ||= nil Settings.gitlab['signup_enabled'] ||= true if Settings.gitlab['signup_enabled'].nil? -@@ -454,7 +454,7 @@ Settings.backup['upload']['storage_class'] ||= nil +@@ -491,7 +491,7 @@ Settings.backup['upload']['storage_class'] ||= nil + # Git # Settings['git'] ||= Settingslogic.new({}) - Settings.git['max_size'] ||= 20971520 # 20.megabytes --Settings.git['bin_path'] ||= '/usr/bin/git' -+Settings.git['bin_path'] ||= 'git' - Settings.git['timeout'] ||= 10 +-Settings.git['bin_path'] ||= '/usr/bin/git' ++Settings.git['bin_path'] ||= 'git' # Important: keep the satellites.path setting until GitLab 9.0 at + # least. This setting is fed to 'rm -rf' in diff --git a/lib/gitlab/logger.rb b/lib/gitlab/logger.rb index 59b21149a9..4f4a39a06c 100644 --- a/lib/gitlab/logger.rb From e4a535afb9e384f836213b8730effb87d3ccfc0a Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Mon, 6 Nov 2017 20:56:48 +0000 Subject: [PATCH 091/138] Revert "pythonpackages.redNotebook: Remove outdated package" This reverts commit 33a56ef0a68cc06298556d866b24f1f2a8286639. --- pkgs/top-level/python-packages.nix | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d76c836734c6..e8b8bf440360 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -22735,6 +22735,29 @@ EOF }; }; + + redNotebook = buildPythonPackage rec { + name = "rednotebook-1.8.1"; + + src = pkgs.fetchurl { + url = "mirror://sourceforge/rednotebook/${name}.tar.gz"; + sha256 = "00b7s4xpqpxsbzjvjx9qsx5d84m9pvn383c5di1nsfh35pig0rzn"; + }; + + # no tests available + doCheck = false; + + propagatedBuildInputs = with self; [ pygtk pywebkitgtk pyyaml chardet ]; + + meta = { + homepage = http://rednotebook.sourceforge.net/index.html; + description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds"; + license = licenses.gpl2; + maintainers = with maintainers; [ tstrobel ]; + }; + }; + + uncertainties = callPackage ../development/python-modules/uncertainties { }; funcy = buildPythonPackage rec { From 5d5eb6aba4189a0cb13dbf9b127fac91c6df2b9c Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Tue, 7 Nov 2017 00:17:31 +0200 Subject: [PATCH 092/138] lcdproc: Disable parallel build https://hydra.nixos.org/build/63628044 --- pkgs/servers/monitoring/lcdproc/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/monitoring/lcdproc/default.nix b/pkgs/servers/monitoring/lcdproc/default.nix index 027e10901573..859849f7b2c7 100644 --- a/pkgs/servers/monitoring/lcdproc/default.nix +++ b/pkgs/servers/monitoring/lcdproc/default.nix @@ -24,7 +24,9 @@ stdenv.mkDerivation rec { buildInputs = [ freetype libX11 libftdi libusb libusb1 ncurses ]; nativeBuildInputs = [ autoreconfHook doxygen makeWrapper pkgconfig ]; - enableParallelBuilding = true; + + # In 0.5.9: gcc: error: libbignum.a: No such file or directory + enableParallelBuilding = false; postFixup = '' for f in $out/bin/*.pl ; do From 97f816dc56f4205b3689011b8837bab889ff0474 Mon Sep 17 00:00:00 2001 From: Michael Alan Dorman Date: Mon, 6 Nov 2017 17:53:35 -0500 Subject: [PATCH 093/138] pythonPackages.fuse: fix infinite recursion in expression I believe this resolves #31338. --- pkgs/top-level/python-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d76c836734c6..8cba91324a08 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8991,7 +8991,7 @@ in { }; }; - fuse = callPackage ../development/python-modules/python-fuse { }; + fuse = callPackage ../development/python-modules/python-fuse { fuse = pkgs.fuse; }; fusepy = buildPythonPackage rec { name = "fusepy-2.0.4"; From 2b8d48a9fc82b3e70a4402828cac6603dead937c Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Mon, 6 Nov 2017 23:20:14 +0000 Subject: [PATCH 094/138] rednotebook: move to applications/editors --- .../editors/rednotebook/default.nix | 22 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 23 +------------------ 2 files changed, 23 insertions(+), 22 deletions(-) create mode 100644 pkgs/applications/editors/rednotebook/default.nix diff --git a/pkgs/applications/editors/rednotebook/default.nix b/pkgs/applications/editors/rednotebook/default.nix new file mode 100644 index 000000000000..ed4b16363051 --- /dev/null +++ b/pkgs/applications/editors/rednotebook/default.nix @@ -0,0 +1,22 @@ +{ lib, buildPythonPackage, fetchurl, pygtk, pywebkitgtk, pyyaml, chardet }: + +buildPythonPackage rec { + name = "rednotebook-1.8.1"; + + src = fetchurl { + url = "mirror://sourceforge/rednotebook/${name}.tar.gz"; + sha256 = "00b7s4xpqpxsbzjvjx9qsx5d84m9pvn383c5di1nsfh35pig0rzn"; + }; + + # no tests available + doCheck = false; + + propagatedBuildInputs = [ pygtk pywebkitgtk pyyaml chardet ]; + + meta = with lib; { + homepage = http://rednotebook.sourceforge.net/index.html; + description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds"; + license = licenses.gpl2; + maintainers = with maintainers; [ tstrobel ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e8b8bf440360..da7fae5f904e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -22735,28 +22735,7 @@ EOF }; }; - - redNotebook = buildPythonPackage rec { - name = "rednotebook-1.8.1"; - - src = pkgs.fetchurl { - url = "mirror://sourceforge/rednotebook/${name}.tar.gz"; - sha256 = "00b7s4xpqpxsbzjvjx9qsx5d84m9pvn383c5di1nsfh35pig0rzn"; - }; - - # no tests available - doCheck = false; - - propagatedBuildInputs = with self; [ pygtk pywebkitgtk pyyaml chardet ]; - - meta = { - homepage = http://rednotebook.sourceforge.net/index.html; - description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds"; - license = licenses.gpl2; - maintainers = with maintainers; [ tstrobel ]; - }; - }; - + redNotebook = callPackage ../applications/editors/rednotebook { }; uncertainties = callPackage ../development/python-modules/uncertainties { }; From b48d954228e270ea041fbc674f742295d58478fc Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Mon, 6 Nov 2017 23:45:57 +0000 Subject: [PATCH 095/138] rednotebook: 1.8.1 -> 2.3 --- .../editors/rednotebook/default.nix | 35 +++++++++++++------ pkgs/top-level/all-packages.nix | 2 ++ pkgs/top-level/python-packages.nix | 2 +- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/editors/rednotebook/default.nix b/pkgs/applications/editors/rednotebook/default.nix index ed4b16363051..1a0e6e54fb3e 100644 --- a/pkgs/applications/editors/rednotebook/default.nix +++ b/pkgs/applications/editors/rednotebook/default.nix @@ -1,22 +1,37 @@ -{ lib, buildPythonPackage, fetchurl, pygtk, pywebkitgtk, pyyaml, chardet }: +{ lib, buildPythonApplication, fetchFromGitHub +, gdk_pixbuf, glib, gtk3, pango, webkitgtk +, pygobject3, pyyaml +}: -buildPythonPackage rec { - name = "rednotebook-1.8.1"; +buildPythonApplication rec { + name = "rednotebook-${version}"; + version = "2.3"; - src = fetchurl { - url = "mirror://sourceforge/rednotebook/${name}.tar.gz"; - sha256 = "00b7s4xpqpxsbzjvjx9qsx5d84m9pvn383c5di1nsfh35pig0rzn"; + src = fetchFromGitHub { + owner = "jendrikseipp"; + repo = "rednotebook"; + rev = "v${version}"; + sha256 = "0zkfid104hcsf20r6829v11wxdghqkd3j1zbgyvd1s7q4nxjn5lj"; }; - # no tests available + # We have not packaged tests. doCheck = false; - propagatedBuildInputs = [ pygtk pywebkitgtk pyyaml chardet ]; + propagatedBuildInputs = [ + gdk_pixbuf glib gtk3 pango webkitgtk + pygobject3 pyyaml + ]; + + makeWrapperArgs = [ + "--set GI_TYPELIB_PATH $GI_TYPELIB_PATH" + "--prefix XDG_DATA_DIRS : $out/share" + "--suffix XDG_DATA_DIRS : $XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ]; meta = with lib; { - homepage = http://rednotebook.sourceforge.net/index.html; + homepage = http://rednotebook.sourceforge.net/; description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds"; license = licenses.gpl2; - maintainers = with maintainers; [ tstrobel ]; + maintainers = with maintainers; [ orivej tstrobel ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 82ca5a10ffc7..a632eb3ece12 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16361,6 +16361,8 @@ with pkgs; recode = callPackage ../tools/text/recode { }; + rednotebook = python3Packages.callPackage ../applications/editors/rednotebook { }; + remotebox = callPackage ../applications/virtualization/remotebox { }; retroshare = libsForQt5.callPackage ../applications/networking/p2p/retroshare { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index da7fae5f904e..36f9ff866299 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -22735,7 +22735,7 @@ EOF }; }; - redNotebook = callPackage ../applications/editors/rednotebook { }; + redNotebook = pkgs.rednotebook; # Backwards compatibility alias. uncertainties = callPackage ../development/python-modules/uncertainties { }; From 471175e0be6ef55b368363e132ff8cee09c3ca1c Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Mon, 6 Nov 2017 17:38:29 +0000 Subject: [PATCH 096/138] ocamlPackages.zed: 1.5 -> 1.6 --- pkgs/development/ocaml-modules/zed/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/ocaml-modules/zed/default.nix b/pkgs/development/ocaml-modules/zed/default.nix index 85977792b4d3..1ddb6d180405 100644 --- a/pkgs/development/ocaml-modules/zed/default.nix +++ b/pkgs/development/ocaml-modules/zed/default.nix @@ -3,8 +3,8 @@ let param = if stdenv.lib.versionAtLeast ocaml.version "4.02" then { - version = "1.5"; - sha256 = "1nq884cxl1k4daa549bk7bxarwivbpp51k4blbiwyxwfhs29xgfr"; + version = "1.6"; + sha256 = "00hhxcjf3bj3w2qm8nzs9x6vrqkadf4i0277s5whzy2rmiknj63v"; buildInputs = [ jbuilder ]; extra = { buildPhase = "jbuilder build -p zed"; From 37fc1fcd4557eb45924c7c8747b6ec0e953d300a Mon Sep 17 00:00:00 2001 From: Anthony Cowley Date: Mon, 6 Nov 2017 20:38:18 -0500 Subject: [PATCH 097/138] rtags: 2.12 -> 2.15 --- pkgs/development/tools/rtags/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/rtags/default.nix b/pkgs/development/tools/rtags/default.nix index 32be2a503bfc..8fe47bd0cb54 100644 --- a/pkgs/development/tools/rtags/default.nix +++ b/pkgs/development/tools/rtags/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { name = "rtags-${version}"; - version = "2.12"; + version = "2.15"; nativeBuildInputs = [ cmake pkgconfig ]; buildInputs = [ llvmPackages.llvm openssl emacs ] @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { rev = "refs/tags/v${version}"; fetchSubmodules = true; url = "https://github.com/andersbakken/rtags.git"; - sha256 = "0bgjcvyvkpqcgw4571iz39sqydmcaz6ymx7kxcmq6j7rffs6qs7l"; + sha256 = "12nnyav2q1ddkz9wm0aclhn7r74xj4ibrb0x05k7mcf694bg79c0"; # unicode file names lead to different checksums on HFS+ vs. other # filesystems because of unicode normalisation postFetch = '' From 2d3149f4a808c2f90ed1dbf188f7371d193e7964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 06:33:09 +0100 Subject: [PATCH 098/138] icu: only patch-out xlocale if using glibc --- pkgs/development/libraries/icu/base.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/icu/base.nix b/pkgs/development/libraries/icu/base.nix index b12e76a90a99..8a7cf8365a5b 100644 --- a/pkgs/development/libraries/icu/base.nix +++ b/pkgs/development/libraries/icu/base.nix @@ -26,7 +26,9 @@ stdenv.mkDerivation { ''; # https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27 - postPatch = "substituteInPlace i18n/digitlst.cpp --replace '' ''"; + postPatch = if stdenv ? glibc + then "substituteInPlace i18n/digitlst.cpp --replace '' ''" + else null; # won't find locale_t on darwin inherit patchFlags patches; From 7ccad2a4f2f89081903bc467bbd8b2fae41370ed Mon Sep 17 00:00:00 2001 From: Benjamin Staffin Date: Tue, 7 Nov 2017 00:34:44 -0500 Subject: [PATCH 099/138] vboot_reference: build all the tools This expands the build to include more things that are useful on chromebooks, like `crossystem` --- pkgs/tools/system/vboot_reference/default.nix | 16 +++++----- .../vboot_reference/dont_static_link.patch | 30 +++++++++++++++++++ 2 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 pkgs/tools/system/vboot_reference/dont_static_link.patch diff --git a/pkgs/tools/system/vboot_reference/default.nix b/pkgs/tools/system/vboot_reference/default.nix index 0b8933bb7af3..e410ef1cee50 100644 --- a/pkgs/tools/system/vboot_reference/default.nix +++ b/pkgs/tools/system/vboot_reference/default.nix @@ -17,17 +17,17 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - buildPhase = '' + patches = [ ./dont_static_link.patch ]; + + preBuild = '' patchShebangs scripts - make -j''${NIX_BUILD_CORES:-1} \ - `pwd`/build/cgpt/cgpt \ - `pwd`/build/futility/futility ''; - installPhase = '' - mkdir -p $out/bin - cp build/cgpt/cgpt $out/bin - cp build/futility/futility $out/bin + makeFlags = [ + "DESTDIR=$(out)" + ]; + + postInstall = '' mkdir -p $out/share/vboot cp -r tests/devkeys* $out/share/vboot/ ''; diff --git a/pkgs/tools/system/vboot_reference/dont_static_link.patch b/pkgs/tools/system/vboot_reference/dont_static_link.patch new file mode 100644 index 000000000000..506b942e246e --- /dev/null +++ b/pkgs/tools/system/vboot_reference/dont_static_link.patch @@ -0,0 +1,30 @@ +--- +--- a/Makefile ++++ b/Makefile +@@ -964,7 +964,7 @@ ${UTILLIB21}: ${UTILLIB21_OBJS} ${FWLIB2 + # Link tests for external repos + ${BUILD}/host/linktest/extern: ${HOSTLIB} + ${BUILD}/host/linktest/extern: LIBS = ${HOSTLIB} +-${BUILD}/host/linktest/extern: LDLIBS += -static ++#${BUILD}/host/linktest/extern: LDLIBS += -static + TEST_OBJS += ${BUILD}/host/linktest/extern.o + + .PHONY: hostlib +@@ -1056,7 +1056,7 @@ ${UTIL_BINS} ${UTIL_BINS_STATIC}: ${UTIL + ${UTIL_BINS} ${UTIL_BINS_STATIC}: LIBS = ${UTILLIB} + + # Utilities for auto-update toolkits must be statically linked. +-${UTIL_BINS_STATIC}: LDFLAGS += -static ++${UTIL_BINS_STATIC}: + + + .PHONY: utils +@@ -1089,7 +1089,7 @@ futil: ${FUTIL_STATIC_BIN} ${FUTIL_BIN} + + ${FUTIL_STATIC_BIN}: ${FUTIL_STATIC_OBJS} ${UTILLIB} + @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" +- ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} -static $^ ${LDLIBS} ++ ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} $^ ${LDLIBS} + + ${FUTIL_BIN}: LDLIBS += ${CRYPTO_LIBS} + ${FUTIL_BIN}: ${FUTIL_OBJS} ${UTILLIB} From 7ba482a74a4bbdfa907b781776ccc85bb48aff75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 07:27:32 +0100 Subject: [PATCH 100/138] live555: fixup build with glibc-2.26 --- pkgs/development/libraries/live555/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/live555/default.nix b/pkgs/development/libraries/live555/default.nix index de4d295ebe3b..e0f84f5080df 100644 --- a/pkgs/development/libraries/live555/default.nix +++ b/pkgs/development/libraries/live555/default.nix @@ -12,7 +12,12 @@ stdenv.mkDerivation { sha256 = "02z2f8z5cy0ajnh9pgar40lsxdknfw5cbyw52138hxnpr6adrvak"; }; - postPatch = "sed 's,/bin/rm,rm,g' -i genMakefiles"; + postPatch = "sed 's,/bin/rm,rm,g' -i genMakefiles" + + stdenv.lib.optionalString (stdenv ? glibc) '' + + substituteInPlace liveMedia/include/Locale.hh \ + --replace '' '' + ''; configurePhase = '' sed \ From 81c50404702c7ed7236107acc4b3c8587a967487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 08:33:48 +0100 Subject: [PATCH 101/138] gpm: fixup build with glibc-2.26 --- pkgs/servers/gpm/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/servers/gpm/default.nix b/pkgs/servers/gpm/default.nix index e260ccfb761b..6096aa1ed74d 100644 --- a/pkgs/servers/gpm/default.nix +++ b/pkgs/servers/gpm/default.nix @@ -12,6 +12,11 @@ stdenv.mkDerivation rec { sha256 = "13d426a8h403ckpc8zyf7s2p5rql0lqbg2bv0454x0pvgbfbf4gh"; }; + postPatch = '' + sed '1i#include ' -i src/daemon/open_console.c + substituteInPlace src/prog/gpm-root.y --replace __sigemptyset sigemptyset + ''; + nativeBuildInputs = [ automake autoconf libtool flex bison texinfo ]; buildInputs = [ ncurses ]; From e0a36522a752694dbe5da303b44a2cc69fea0d11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 09:17:00 +0100 Subject: [PATCH 102/138] llvm 3.7--4: fixup build with glibc-2.26 --- pkgs/development/compilers/llvm/3.7/llvm.nix | 13 +++++++++++++ pkgs/development/compilers/llvm/3.8/llvm.nix | 13 +++++++++++++ pkgs/development/compilers/llvm/3.9/llvm.nix | 14 ++++++++++++++ pkgs/development/compilers/llvm/4/llvm.nix | 14 ++++++++++++++ 4 files changed, 54 insertions(+) diff --git a/pkgs/development/compilers/llvm/3.7/llvm.nix b/pkgs/development/compilers/llvm/3.7/llvm.nix index b600665cd8f6..54ab8c108773 100644 --- a/pkgs/development/compilers/llvm/3.7/llvm.nix +++ b/pkgs/development/compilers/llvm/3.7/llvm.nix @@ -1,5 +1,6 @@ { stdenv , fetch +, fetchpatch , perl , groff , cmake @@ -45,6 +46,18 @@ in stdenv.mkDerivation rec { # those always succeed has the net effect of disabling all bindings. prePatch = '' substituteInPlace cmake/config-ix.cmake --replace "if(WIN32)" "if(1)" + '' + + stdenv.lib.optionalString (stdenv ? glibc) '' + ( + cd projects/compiler-rt + patch -p1 < ${ + fetchpatch { + name = "sigaltstack.patch"; # for glibc-2.26 + url = https://github.com/llvm-mirror/compiler-rt/commit/8a5e425a68d.diff; + sha256 = "0h4y5vl74qaa7dl54b1fcyqalvlpd8zban2d1jxfkxpzyi7m8ifi"; + } + } + ) ''; # hacky fix: created binaries need to be run before installation diff --git a/pkgs/development/compilers/llvm/3.8/llvm.nix b/pkgs/development/compilers/llvm/3.8/llvm.nix index f8b8948e749e..a0fbdf2b706a 100644 --- a/pkgs/development/compilers/llvm/3.8/llvm.nix +++ b/pkgs/development/compilers/llvm/3.8/llvm.nix @@ -1,5 +1,6 @@ { stdenv , fetch +, fetchpatch , perl , groff , cmake @@ -49,6 +50,18 @@ in stdenv.mkDerivation rec { substituteInPlace CMakeLists.txt \ --replace 'set(CMAKE_INSTALL_NAME_DIR "@rpath")' "set(CMAKE_INSTALL_NAME_DIR "$out/lib")" \ --replace 'set(CMAKE_INSTALL_RPATH "@executable_path/../lib")' "" + '' + + stdenv.lib.optionalString (stdenv ? glibc) '' + ( + cd projects/compiler-rt + patch -p1 < ${ + fetchpatch { + name = "sigaltstack.patch"; # for glibc-2.26 + url = https://github.com/llvm-mirror/compiler-rt/commit/8a5e425a68d.diff; + sha256 = "0h4y5vl74qaa7dl54b1fcyqalvlpd8zban2d1jxfkxpzyi7m8ifi"; + } + } + ) ''; # hacky fix: created binaries need to be run before installation diff --git a/pkgs/development/compilers/llvm/3.9/llvm.nix b/pkgs/development/compilers/llvm/3.9/llvm.nix index 809c49ac24a2..495f95a5bbdb 100644 --- a/pkgs/development/compilers/llvm/3.9/llvm.nix +++ b/pkgs/development/compilers/llvm/3.9/llvm.nix @@ -91,6 +91,20 @@ in stdenv.mkDerivation rec { + stdenv.lib.optionalString (enableSharedLibraries) '' substitute '${./llvm-outputs.patch}' ./llvm-outputs.patch --subst-var lib patch -p1 < ./llvm-outputs.patch + '' + + stdenv.lib.optionalString (stdenv ? glibc) '' + ( + cd projects/compiler-rt + patch -p1 < ${ + fetchpatch { + name = "sigaltstack.patch"; # for glibc-2.26 + url = https://github.com/llvm-mirror/compiler-rt/commit/8a5e425a68d.diff; + sha256 = "0h4y5vl74qaa7dl54b1fcyqalvlpd8zban2d1jxfkxpzyi7m8ifi"; + } + } + substituteInPlace lib/esan/esan_sideline_linux.cpp \ + --replace 'struct sigaltstack' 'stack_t' + ) ''; # hacky fix: created binaries need to be run before installation diff --git a/pkgs/development/compilers/llvm/4/llvm.nix b/pkgs/development/compilers/llvm/4/llvm.nix index e90603ffefae..332fee8529ba 100644 --- a/pkgs/development/compilers/llvm/4/llvm.nix +++ b/pkgs/development/compilers/llvm/4/llvm.nix @@ -67,6 +67,20 @@ in stdenv.mkDerivation rec { + stdenv.lib.optionalString (enableSharedLibraries) '' substitute '${./llvm-outputs.patch}' ./llvm-outputs.patch --subst-var lib patch -p1 < ./llvm-outputs.patch + '' + + stdenv.lib.optionalString (stdenv ? glibc) '' + ( + cd projects/compiler-rt + patch -p1 < ${ + fetchpatch { + name = "sigaltstack.patch"; # for glibc-2.26 + url = https://github.com/llvm-mirror/compiler-rt/commit/8a5e425a68d.diff; + sha256 = "0h4y5vl74qaa7dl54b1fcyqalvlpd8zban2d1jxfkxpzyi7m8ifi"; + } + } + substituteInPlace lib/esan/esan_sideline_linux.cpp \ + --replace 'struct sigaltstack' 'stack_t' + ) ''; # hacky fix: created binaries need to be run before installation From 52d6eecc241a26f5a0ecb9ed04c76d2fd924255a Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Tue, 7 Nov 2017 08:47:48 +0100 Subject: [PATCH 103/138] iniparser: 4.0 -> 4.1 --- .../libraries/iniparser/default.nix | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/pkgs/development/libraries/iniparser/default.nix b/pkgs/development/libraries/iniparser/default.nix index a09bcd6f039c..e586b30393e6 100644 --- a/pkgs/development/libraries/iniparser/default.nix +++ b/pkgs/development/libraries/iniparser/default.nix @@ -1,17 +1,14 @@ { stdenv, fetchFromGitHub }: -let - inherit (stdenv.lib) optional; - -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "iniparser-${version}"; - version = "4.0"; + version = "4.1"; src = fetchFromGitHub { owner = "ndevilla"; repo = "iniparser"; rev = "v${version}"; - sha256 = "0339qa0qxa5z02xjcs5my8v91v0r9jm4piswrl1sa29kwyxgv5nb"; + sha256 = "0dhab6pad6wh816lr7r3jb6z273njlgw2vpw8kcfnmi7ijaqhnr5"; }; patches = ./no-usr.patch; @@ -19,9 +16,6 @@ in stdenv.mkDerivation rec { doCheck = true; preCheck = "patchShebangs test/make-tests.sh"; - # TODO: Build dylib on Darwin - buildFlags = (if stdenv.isDarwin then [ "libiniparser.a" ] else [ "libiniparser.so" ]) ++ [ "CC=cc" ]; - installPhase = '' mkdir -p $out/lib @@ -34,17 +28,16 @@ in stdenv.mkDerivation rec { done; cp -r html $out/share/doc/${name} - '' + (if stdenv.isDarwin then '' cp libiniparser.a $out/lib - '' else '' - cp libiniparser.so.0 $out/lib - ln -s libiniparser.so.0 $out/lib/libiniparser.so - ''); + cp libiniparser.so.1 $out/lib + ln -s libiniparser.so.1 $out/lib/libiniparser.so + ''; - meta = { + meta = with stdenv.lib; { inherit (src.meta) homepage; description = "Free standalone ini file parsing library"; - license = stdenv.lib.licenses.mit; - platforms = stdenv.lib.platforms.unix; + license = licenses.mit; + platforms = platforms.unix; + maintainers = [ maintainers.primeos ]; }; } From 2b995c544de793df1b86d7dfdf386637a3e3012f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Mon, 30 Oct 2017 12:45:36 +0000 Subject: [PATCH 104/138] osx_private_sdk: reduce output size and remove it from runtime closures --- .../libsecurity_filedb/default.nix | 2 +- .../libsecurity_generic/default.nix | 2 +- .../libsecurity_keychain/default.nix | 4 +-- .../libsecurity_utilities/default.nix | 5 ++-- .../os-specific/darwin/cf-private/default.nix | 23 ++++----------- .../darwin/osx-private-sdk/default.nix | 29 +++++++++++++++---- .../darwin/security-tool/default.nix | 2 +- 7 files changed, 36 insertions(+), 31 deletions(-) diff --git a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_filedb/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_filedb/default.nix index 0234cbc62792..fb1ea2509d76 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_filedb/default.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_filedb/default.nix @@ -6,7 +6,7 @@ appleDerivation { libsecurity_cdsa_plugin ]; patchPhase = '' - cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/local/include/sandbox_private.h . + cp ${osx_private_sdk}/include/sandbox_private.h . substituteInPlace sandbox_private.h --replace '' '"${apple_sdk.sdk}/include/sandbox.h"' substituteInPlace lib/AtomicFile.cpp --replace '' '"sandbox_private.h"' ''; diff --git a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_generic/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_generic/default.nix index ef449a7d415d..93857ea792c2 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_generic/default.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_generic/default.nix @@ -10,7 +10,7 @@ name: version: sha256: args: let patchPhase = '' # allows including - ln -s ${pkgs.darwin.osx_private_sdk}/PrivateSDK10.9.sparse.sdk/System/Library/Frameworks/Security.framework/Versions/A/PrivateHeaders Security + cp -R ${pkgs.darwin.osx_private_sdk}/include/SecurityPrivateHeaders Security grep -Rl MacErrors.h . | while read file; do substituteInPlace "''$file" --replace \ diff --git a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_keychain/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_keychain/default.nix index 34a2a49ea0e4..06137879410d 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_keychain/default.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_keychain/default.nix @@ -18,9 +18,9 @@ appleDerivation { substituteInPlace lib/SecCertificate.cpp --replace '#include ' "" - cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/include/xpc/private.h xpc + cp ${osx_private_sdk}/include/xpc/private.h xpc cp ${apple_sdk.sdk}/include/xpc/*.h xpc - cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/local/include/sandbox_private.h lib/sandbox.h + cp ${osx_private_sdk}/include/sandbox_private.h lib/sandbox.h substituteInPlace lib/SecItemPriv.h \ --replace "extern CFTypeRef kSecAttrAccessGroup" "extern const CFTypeRef kSecAttrAccessGroup" \ diff --git a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_utilities/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_utilities/default.nix index 8dae60724137..bb55fd48d8b2 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/libsecurity_utilities/default.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/libsecurity_utilities/default.nix @@ -17,9 +17,8 @@ appleDerivation { substituteInPlace lib/powerwatch.h --replace \ '' \ '"${IOKit}/Library/Frameworks/IOKit.framework/Headers/pwr_mgt/IOPMLibPrivate.h"' - - cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/include/security_utilities/utilities_dtrace.h lib - cp -R ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/local/include/bsm lib + cp -R ${osx_private_sdk}/include/bsm lib + cp ${osx_private_sdk}/include/utilities_dtrace.h lib '' + stdenv.lib.optionalString (!stdenv.cc.nativeLibc) '' substituteInPlace lib/vproc++.cpp --replace /usr/local/include/vproc_priv.h ${stdenv.libc}/include/vproc_priv.h ''; diff --git a/pkgs/os-specific/darwin/cf-private/default.nix b/pkgs/os-specific/darwin/cf-private/default.nix index 48860504f73c..f8c25339370b 100644 --- a/pkgs/os-specific/darwin/cf-private/default.nix +++ b/pkgs/os-specific/darwin/cf-private/default.nix @@ -1,31 +1,18 @@ { stdenv, osx_private_sdk, CF }: -let - headers = [ - "CFAvailability.h" - "CFAttributedString.h" - "CFFileDescriptor.h" - "CFFileSecurity.h" - "CFNotificationCenter.h" - "CFStringTokenizer.h" - "CFURLEnumerator.h" - "CFURL.h" - "CoreFoundation.h" - ]; - -in stdenv.mkDerivation { +stdenv.mkDerivation { name = "${CF.name}-private"; phases = [ "installPhase" "fixupPhase" ]; installPhase = '' dest=$out/Library/Frameworks/CoreFoundation.framework/Headers mkdir -p $dest pushd $dest - for file in ${CF}/Library/Frameworks/CoreFoundation.framework/Headers/*; do - ln -s $file - done + cp -Lv ${osx_private_sdk}/include/CoreFoundationPrivateHeaders/* $dest + for file in ${CF}/Library/Frameworks/CoreFoundation.framework/Headers/*; do + ln -sf $file + done popd - install -m 0644 ${osx_private_sdk}/PrivateSDK10.10.sparse.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/{${stdenv.lib.concatStringsSep "," headers}} $dest ''; setupHook = ./setup-hook.sh; diff --git a/pkgs/os-specific/darwin/osx-private-sdk/default.nix b/pkgs/os-specific/darwin/osx-private-sdk/default.nix index c2c2aea54f8c..1eecdbc5618d 100644 --- a/pkgs/os-specific/darwin/osx-private-sdk/default.nix +++ b/pkgs/os-specific/darwin/osx-private-sdk/default.nix @@ -1,8 +1,27 @@ { stdenv, fetchFromGitHub }: -fetchFromGitHub { - owner = "samdmarshall"; - repo = "OSXPrivateSDK"; - rev = "f4d52b60e86b496abfaffa119a7d299562d99783"; - sha256 = "0bv0884yxpvk2ishxj8gdy1w6wb0gwfq55q5qjp0s8z0z7f63zqh"; +stdenv.mkDerivation { + name = "OSXPrivateSDK"; + + src = fetchFromGitHub { + owner = "samdmarshall"; + repo = "OSXPrivateSDK"; + rev = "f4d52b60e86b496abfaffa119a7d299562d99783"; + sha256 = "0bv0884yxpvk2ishxj8gdy1w6wb0gwfq55q5qjp0s8z0z7f63zqh"; + }; + + # NOTE: we install only headers that are really needed to keep closure sie + # reasonable. + installPhase = '' + mkdir -p $out/include + sdk10=PrivateSDK10.10.sparse.sdk + sdk=PrivateSDK10.9.sparse.sdk + cp $sdk/usr/local/include/sandbox_private.h $out/include/sandbox_private.h + # this can be removed once we dtrace binary + cp $sdk/usr/local/include/security_utilities/utilities_dtrace.h $out/include/utilities_dtrace.h + cp -RL $sdk/usr/include/xpc $out/include/xpc + cp -RL $sdk/usr/local/include/bsm $out/include/bsm + cp -RL $sdk/System/Library/Frameworks/Security.framework/Versions/A/PrivateHeaders $out/include/SecurityPrivateHeaders + cp -RL $sdk10/System/Library/Frameworks/CoreFoundation.framework/Headers $out/include/CoreFoundationPrivateHeaders + ''; } diff --git a/pkgs/os-specific/darwin/security-tool/default.nix b/pkgs/os-specific/darwin/security-tool/default.nix index 5a89940c9dae..2b8c7718aee8 100644 --- a/pkgs/os-specific/darwin/security-tool/default.nix +++ b/pkgs/os-specific/darwin/security-tool/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { patchPhase = '' # copied from libsecurity_generic - ln -s ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/System/Library/Frameworks/Security.framework/Versions/A/PrivateHeaders Security + cp -R ${osx_private_sdk}/include/SecurityPrivateHeaders Security substituteInPlace cmsutil.c --replace \ '' \ From 27c8fd24e509d7ab0d80c7da1ab1f9ebb739c442 Mon Sep 17 00:00:00 2001 From: Raphael Das Gupta Date: Mon, 6 Nov 2017 22:33:37 +0100 Subject: [PATCH 105/138] nixos/mysql: fix typo in description of mysql.bind option --- nixos/modules/services/databases/mysql.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/databases/mysql.nix b/nixos/modules/services/databases/mysql.nix index 845e6d4c22ef..c6c463bce7d5 100644 --- a/nixos/modules/services/databases/mysql.nix +++ b/nixos/modules/services/databases/mysql.nix @@ -67,7 +67,7 @@ in type = types.nullOr types.str; default = null; example = literalExample "0.0.0.0"; - description = "Address to bind to. The default it to bind to all addresses"; + description = "Address to bind to. The default is to bind to all addresses"; }; port = mkOption { From d2df286df7657c5be9bb1801ff9d5d099d8b0d0d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 7 Nov 2017 12:25:17 +0100 Subject: [PATCH 106/138] nixUnstable: nix-1.12pre5663_c7af84ce -> nix-1.12pre5732_fd10f6f2 --- pkgs/tools/package-management/nix/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 4359682d96a0..efe239224ae4 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -161,12 +161,12 @@ in rec { nixUnstable = (lib.lowPrio (common rec { name = "nix-1.12${suffix}"; - suffix = "pre5663_c7af84ce"; + suffix = "pre5732_fd10f6f2"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; - rev = "c7af84ce846a9deefa5b4db1b1bce1c091ca2a1e"; - sha256 = "1sc6rkx0500jz4fyfqm7443s1q24whmpx10mfs12wdk516f0q8qh"; + rev = "fd10f6f2414521947ca60b9d1508d909f50e9faa"; + sha256 = "17561jll94c8hdpxnyvdbjslnwr9g7ii4wqvrla7gfza236j9hff"; }; fromGit = true; })) // { perl-bindings = perl-bindings { nix = nixUnstable; }; }; From 139d931d4dc6f7da75cb66094c204526961a9633 Mon Sep 17 00:00:00 2001 From: Raphael Das Gupta Date: Tue, 7 Nov 2017 11:34:03 +0100 Subject: [PATCH 107/138] nox: add license information: MIT nox was licensed under MIT License since at least 0.0.2. See https://github.com/madjar/nox/commit/b7e084a7c507aff4c56afb4d719eefb142393d1a --- pkgs/tools/package-management/nox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/tools/package-management/nox/default.nix b/pkgs/tools/package-management/nox/default.nix index ed7ec74483f3..f6c5c7b53e13 100644 --- a/pkgs/tools/package-management/nox/default.nix +++ b/pkgs/tools/package-management/nox/default.nix @@ -25,6 +25,7 @@ pythonPackages.buildPythonApplication rec { homepage = https://github.com/madjar/nox; description = "Tools to make nix nicer to use"; maintainers = [ lib.maintainers.madjar ]; + license = lib.licenses.mit; platforms = lib.platforms.all; }; } From 8da04338d799cafb394984e02166772f3218393c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 12:55:10 +0100 Subject: [PATCH 108/138] gcc-4.9: fixup build with glibc-2.26 Upstream didn't backport this, but fortunately it wasn't too hard. --- .../development/compilers/gcc/4.9/default.nix | 1 + .../gcc/struct-sigaltstack-4.9.patch | 78 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index d7684a61a2ac..4675787912e8 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -72,6 +72,7 @@ let version = "4.9.4"; # target libraries and tools. ++ optional langAda ../gnat-cflags.patch ++ optional langFortran ../gfortran-driving.patch + ++ [ ../struct-ucontext.patch ../struct-sigaltstack-4.9.patch ] # glibc-2.26 ; javaEcj = fetchurl { diff --git a/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch b/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch new file mode 100644 index 000000000000..fc126b4813d6 --- /dev/null +++ b/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch @@ -0,0 +1,78 @@ +hand-resolved trivial conflicts for 4.9 from the upstream patch +72edc2c02f8b4768ad660f46a1c7e2400c0a8e06 +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc +index 69c9c10..8e53673 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc +@@ -599,8 +599,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) { + return internal_syscall(__NR_prctl, option, arg2, arg3, arg4, arg5); + } + +-uptr internal_sigaltstack(const struct sigaltstack *ss, +- struct sigaltstack *oss) { ++uptr internal_sigaltstack(const void *ss, void *oss) { + return internal_syscall(__NR_sigaltstack, (uptr)ss, (uptr)oss); + } + +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h +index 6422df1..8e111d1 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.h ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.h +@@ -18,7 +18,6 @@ + #include "sanitizer_platform_limits_posix.h" + + struct link_map; // Opaque type returned by dlopen(). +-struct sigaltstack; + + namespace __sanitizer { + // Dirent structure for getdents(). Note that this structure is different from +@@ -28,8 +27,7 @@ struct linux_dirent; + // Syscall wrappers. + uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count); + uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5); +-uptr internal_sigaltstack(const struct sigaltstack* ss, +- struct sigaltstack* oss); ++uptr internal_sigaltstack(const void* ss, void* oss); + uptr internal_sigaction(int signum, const __sanitizer_kernel_sigaction_t *act, + __sanitizer_kernel_sigaction_t *oldact); + uptr internal_sigprocmask(int how, __sanitizer_kernel_sigset_t *set, +diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +index 891386dc..234e8c6 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +@@ -273,7 +273,7 @@ static int TracerThread(void* argument) { + + // Alternate stack for signal handling. + InternalScopedBuffer handler_stack_memory(kHandlerStackSize); +- struct sigaltstack handler_stack; ++ stack_t handler_stack; + internal_memset(&handler_stack, 0, sizeof(handler_stack)); + handler_stack.ss_sp = handler_stack_memory.data(); + handler_stack.ss_size = kHandlerStackSize; +diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc +index 2ed5718..6f972ab 100644 +--- a/libsanitizer/tsan/tsan_platform_linux.cc ++++ b/libsanitizer/tsan/tsan_platform_linux.cc +@@ -287,7 +287,7 @@ void InitializePlatform() { + int ExtractResolvFDs(void *state, int *fds, int nfd) { + #if SANITIZER_LINUX && !SANITIZER_ANDROID + int cnt = 0; +- __res_state *statp = (__res_state*)state; ++ struct __res_state *statp = (struct __res_state*)state; + for (int i = 0; i < MAXNS && cnt < nfd; i++) { + if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1) + fds[cnt++] = statp->_u._ext.nssocks[i]; + +error: 'SIGSEGV' was not declared in this scope +diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc +index 0692eb1..472f734 100644 +--- a/libsanitizer/asan/asan_linux.cc ++++ b/libsanitizer/asan/asan_linux.cc +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + #include + #include + #include From 5a43ac2c601f870cc3b5eeee027712ed74726bca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20D=C3=A9n=C3=A8s?= Date: Sun, 22 Oct 2017 16:15:12 +0200 Subject: [PATCH 109/138] coqPackages.mathcomp: 1.6.1 -> 1.6.4 --- pkgs/development/coq-modules/mathcomp/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/coq-modules/mathcomp/default.nix b/pkgs/development/coq-modules/mathcomp/default.nix index a80c934c6c19..046c3b2f795e 100644 --- a/pkgs/development/coq-modules/mathcomp/default.nix +++ b/pkgs/development/coq-modules/mathcomp/default.nix @@ -2,9 +2,9 @@ let param = { - version = "1.6.1"; - url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.1.tar.gz; - sha256 = "1j9ylggjzrxz1i2hdl2yhsvmvy5z6l4rprwx7604401080p5sgjw"; + version = "1.6.4"; + url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.4.tar.gz; + sha256 = "0qmjjb6jsxmmf4gpw10r30rmrvwqgzirvvgyy41mz2vhgwis8wn6"; }; in callPackage ./generic.nix { From 90d33e4eaa5248e640fa9f8836a7876a34d14c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20D=C3=A9n=C3=A8s?= Date: Sun, 22 Oct 2017 16:15:57 +0200 Subject: [PATCH 110/138] coqPackages.ssreflect: 1.6.1 -> 1.6.4 --- pkgs/development/coq-modules/ssreflect/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/coq-modules/ssreflect/default.nix b/pkgs/development/coq-modules/ssreflect/default.nix index 352b98ab88b9..49f999fc20ba 100644 --- a/pkgs/development/coq-modules/ssreflect/default.nix +++ b/pkgs/development/coq-modules/ssreflect/default.nix @@ -2,9 +2,9 @@ let param = { - version = "1.6.1"; - url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.1.tar.gz; - sha256 = "1j9ylggjzrxz1i2hdl2yhsvmvy5z6l4rprwx7604401080p5sgjw"; + version = "1.6.4"; + url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.4.tar.gz; + sha256 = "0qmjjb6jsxmmf4gpw10r30rmrvwqgzirvvgyy41mz2vhgwis8wn6"; }; in callPackage ./generic.nix { From 3c3e1db36408277e6b8590c822146978d59868b2 Mon Sep 17 00:00:00 2001 From: Parnell Springmeyer Date: Tue, 7 Nov 2017 06:26:45 -0600 Subject: [PATCH 111/138] signal-desktop: init at 1.0.35 (#31335) * signal-desktop: init at 1.0.35 --- .../signal-desktop/default.nix | 88 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 90 insertions(+) create mode 100644 pkgs/applications/networking/instant-messengers/signal-desktop/default.nix diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix new file mode 100644 index 000000000000..0376fb79c9be --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix @@ -0,0 +1,88 @@ +{ stdenv, lib, fetchurl, dpkg, gnome2, atk, cairo, gdk_pixbuf, glib, freetype, +fontconfig, dbus, libX11, xlibs, libXi, libXcursor, libXdamage, libXrandr, +libXcomposite, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, +nspr, alsaLib, cups, expat, udev +}: +let + rpath = lib.makeLibraryPath [ + alsaLib + atk + cairo + cups + dbus + expat + fontconfig + freetype + gdk_pixbuf + glib + gnome2.GConf + gnome2.gtk + gnome2.pango + libX11 + libXScrnSaver + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXtst + nspr + nss + stdenv.cc.cc + udev + xlibs.libxcb + ]; + +in + stdenv.mkDerivation rec { + name = "signal-desktop-${version}"; + + version = "1.0.35"; + + src = + if stdenv.system == "x86_64-linux" then + fetchurl { + url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb"; + sha256 = "d9f9d4d54f4121efc8eadf1cf0ff957828088b313e53b66dc540b851c44c1860"; + } + else + throw "Signal for Desktop is not currently supported on ${stdenv.system}"; + + phases = [ "unpackPhase" "installPhase" ]; + nativeBuildInputs = [ dpkg ]; + unpackPhase = "dpkg-deb -x $src ."; + installPhase = '' + mkdir -p $out + cp -R opt $out + + mv ./usr/share $out/share + mv $out/opt/Signal $out/libexec + rmdir $out/opt + + chmod -R g-w $out + + # Patch signal + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath ${rpath}:$out/libexec $out/libexec/signal-desktop + + # Symlink to bin + mkdir -p $out/bin + ln -s $out/libexec/signal-desktop $out/bin/signal-desktop + + # Fix the desktop link + substituteInPlace $out/share/applications/signal-desktop.desktop \ + --replace /opt/Signal/signal-desktop $out/bin/signal-desktop + ''; + + meta = { + description = "Signal Private Messenger for the Desktop."; + homepage = https://signal.org/; + license = lib.licenses.gpl3; + platforms = [ + "x86_64-linux" + ]; + }; + } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 94522d50e46d..a99e007f7337 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4379,6 +4379,8 @@ with pkgs; sigil = libsForQt56.callPackage ../applications/editors/sigil { }; + signal-desktop = callPackage ../applications/networking/instant-messengers/signal-desktop { }; + # aka., pgp-tools signing-party = callPackage ../tools/security/signing-party { }; From 3339a7dc7c047c79d71ea58f98cd9817612aa435 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 12:36:48 +0000 Subject: [PATCH 112/138] python.pkgs.textfixtures: 4.5.0 -> 5.3.0 --- .../python-modules/testfixtures/default.nix | 23 +++++++++++++++++ pkgs/top-level/python-packages.nix | 25 +------------------ 2 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 pkgs/development/python-modules/testfixtures/default.nix diff --git a/pkgs/development/python-modules/testfixtures/default.nix b/pkgs/development/python-modules/testfixtures/default.nix new file mode 100644 index 000000000000..23b5a5aa9e26 --- /dev/null +++ b/pkgs/development/python-modules/testfixtures/default.nix @@ -0,0 +1,23 @@ +{ stdenv, buildPythonPackage, fetchPypi +, mock, manuel, pytest, sybil, zope_component, django }: + +buildPythonPackage rec { + pname = "testfixtures"; + version = "5.3.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "1xfar653qmikwb94xj3f0xfp8dh2llxjsxipx1272d8qwl0aknnx"; + }; + + checkInputs = [ mock manuel pytest sybil zope_component ]; + + checkPhase = '' + # django is too much hasle to setup at the moment + pytest --ignore=testfixtures/tests/test_django testfixtures/tests + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/Simplistix/testfixtures"; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8cba91324a08..2cfe3f6087fb 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -21809,30 +21809,7 @@ EOF }; }; - testfixtures = buildPythonPackage rec { - name = "testfixtures-${version}"; - version = "4.5.0"; - - src = pkgs.fetchurl { - url = "mirror://pypi/t/testfixtures/testfixtures-${version}.tar.gz"; - sha256 = "0my8zq9d27mc7j78pz9971cn5wz6zi4vxlqa50szr2vq9j2xxkll"; - }; - - buildInputs = with self; [ nose mock manuel ]; - - checkPhase = '' - nosetests -v - ''; - - # Test suite seems broken - # TypeError: TestSuite() missing 1 required positional argument: 'm' - # Haven't checked with newer version - doCheck = false; - - meta = with stdenv.lib; { - homepage = "https://github.com/Simplistix/testfixtures"; - }; - }; + testfixtures = callPackage ../development/python-modules/testfixtures {}; tissue = buildPythonPackage rec { name = "tissue-0.9.2"; From 8fb1ec1af424236fc3e6abfca70fc60b9cff5fbb Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 12:41:27 +0000 Subject: [PATCH 113/138] python.pkgs.update_checker: 0.11 -> 0.16 --- .../python-modules/update_checker/default.nix | 22 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 19 +--------------- 2 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 pkgs/development/python-modules/update_checker/default.nix diff --git a/pkgs/development/python-modules/update_checker/default.nix b/pkgs/development/python-modules/update_checker/default.nix new file mode 100644 index 000000000000..ad401d80190d --- /dev/null +++ b/pkgs/development/python-modules/update_checker/default.nix @@ -0,0 +1,22 @@ +{ stdenv, buildPythonPackage, fetchPypi, requests}: + +buildPythonPackage rec { + pname = "update_checker"; + version = "0.16"; + + src = fetchPypi { + inherit pname version; + sha256 = "1f38l40d32dm0avcidf3dmikma8z0la84yngj88v4xygzi399qvh"; + }; + + propagatedBuildInputs = [ requests ]; + + # requires network + doCheck = false; + + meta = with stdenv.lib; { + description = "A python module that will check for package updates"; + homepage = https://github.com/bboe/update_checker; + license = licenses.bsd2; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2cfe3f6087fb..8f39040f4bfa 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -20556,24 +20556,7 @@ in { }; }; - update_checker = buildPythonPackage rec { - name = "update_checker-0.11"; - - src = pkgs.fetchurl { - url = "mirror://pypi/u/update_checker/${name}.tar.gz"; - sha256 = "681bc7c26cffd1564eb6f0f3170d975a31c2a9f2224a32f80fe954232b86f173"; - }; - - propagatedBuildInputs = with self; [ requests ]; - - doCheck = false; - - meta = { - description = "A python module that will check for package updates"; - homepage = https://github.com/bboe/update_checker; - license = licenses.bsd2; - }; - }; + update_checker = callPackage ../development/python-modules/update_checker {}; uritemplate = buildPythonPackage rec { name = "uritemplate-${version}"; From b0225f8cbc1ae6a07bd35b020a17301a2d5787a9 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 12:47:24 +0000 Subject: [PATCH 114/138] python.pkgs.sybil: init at 1.0.5 --- .../python-modules/sybil/default.nix | 24 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 pkgs/development/python-modules/sybil/default.nix diff --git a/pkgs/development/python-modules/sybil/default.nix b/pkgs/development/python-modules/sybil/default.nix new file mode 100644 index 000000000000..b1fe22df4767 --- /dev/null +++ b/pkgs/development/python-modules/sybil/default.nix @@ -0,0 +1,24 @@ +{ stdenv, buildPythonApplication, fetchPypi +, pytest, nose }: + +buildPythonApplication rec { + pname = "sybil"; + version = "1.0.5"; + + src = fetchPypi { + inherit pname version; + sha256 = "0x8qd5p5qliv8wmdglda2iy3f70i4jg8zqyk8yhklm5hrxm8jdl6"; + }; + + checkInputs = [ pytest nose ]; + + checkPhase = '' + py.test tests + ''; + + meta = with stdenv.lib; { + description = "Automated testing for the examples in your documentation."; + homepage = https://github.com/cjw296/sybil/; + license = licenses.mit; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8f39040f4bfa..8cc46bc2589b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19733,6 +19733,8 @@ in { }; }; + sybil = callPackage ../development/python-modules/sybil { }; + syncthing-gtk = buildPythonPackage rec { version = "0.9.2.3"; name = "syncthing-gtk-${version}"; From af9e6c1634de3a0f256cbcf788dd8b16d7de8618 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 12:50:11 +0000 Subject: [PATCH 115/138] python.pkgs.prawcore: init at 0.12.0 --- .../python-modules/prawcore/default.nix | 38 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 40 insertions(+) create mode 100644 pkgs/development/python-modules/prawcore/default.nix diff --git a/pkgs/development/python-modules/prawcore/default.nix b/pkgs/development/python-modules/prawcore/default.nix new file mode 100644 index 000000000000..eb3fb784dc97 --- /dev/null +++ b/pkgs/development/python-modules/prawcore/default.nix @@ -0,0 +1,38 @@ +{ stdenv, buildPythonPackage, fetchFromGitHub +, requests +, testfixtures, mock, requests_toolbelt +, betamax, betamax-serializers, betamax-matchers +}: + +buildPythonPackage rec { + pname = "prawcore"; + version = "0.12.0"; + + src = fetchFromGitHub { + owner = "praw-dev"; + repo = "prawcore"; + rev = "v${version}"; + sha256 = "1z5fz6v4bv6xw84l4q3rpw3j63bb2dldl0fd6ckz8wqlpb2l45br"; + }; + + propagatedBuildInputs = [ + requests + ]; + + checkInputs = [ + testfixtures + mock + betamax + betamax-serializers + betamax-matchers + requests_toolbelt + ]; + + meta = with stdenv.lib; { + description = "Low-level communication layer for PRAW"; + homepage = http://praw.readthedocs.org/; + license = licenses.gpl3; + platforms = platforms.all; + maintainers = with maintainers; [ jgeerds ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8cc46bc2589b..dbfb52b1fadf 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15095,6 +15095,8 @@ in { }; }; + prawcore = callPackage ../development/python-modules/prawcore { }; + premailer = callPackage ../development/python-modules/premailer { }; prettytable = buildPythonPackage rec { From a5744101a2a1e01901e8a82a4a0654bdaff5ff9a Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 12:53:19 +0000 Subject: [PATCH 116/138] python.pkgs.praw: 3.5.0 -> 5.2.0 --- .../python-modules/praw/default.nix | 43 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 29 +------------ 2 files changed, 44 insertions(+), 28 deletions(-) create mode 100644 pkgs/development/python-modules/praw/default.nix diff --git a/pkgs/development/python-modules/praw/default.nix b/pkgs/development/python-modules/praw/default.nix new file mode 100644 index 000000000000..c0be1009b069 --- /dev/null +++ b/pkgs/development/python-modules/praw/default.nix @@ -0,0 +1,43 @@ +{ stdenv, buildPythonPackage, fetchFromGitHub +, requests, decorator, flake8, mock, six, update_checker, pytestrunner, prawcore +, pytest, betamax, betamax-serializers, betamax-matchers, requests_toolbelt +}: + +buildPythonPackage rec { + pname = "praw"; + version = "5.2.0"; + + src = fetchFromGitHub { + owner = "praw-dev"; + repo = "praw"; + rev = "v${version}"; + sha256 = "0nwfadczxa1fyq65zc3sfv8g2r4w3xrx3bdi5fv9xpn97wh2ifgw"; + }; + + propagatedBuildInputs = [ + requests + decorator + flake8 + mock + six + update_checker + pytestrunner + prawcore + ]; + + checkInputs = [ + pytest + betamax + betamax-serializers + betamax-matchers + requests_toolbelt + ]; + + meta = with stdenv.lib; { + description = "Python Reddit API wrapper"; + homepage = http://praw.readthedocs.org/; + license = licenses.gpl3; + platforms = platforms.all; + maintainers = with maintainers; [ jgeerds ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index dbfb52b1fadf..727a2b25adba 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15066,34 +15066,7 @@ in { }; }; - praw = buildPythonPackage rec { - name = "praw-3.5.0"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/praw/${name}.zip"; - sha256 = "1hwdzqbrjdkicqhyxpcpsmld21k0ndpy8d2gk6l5mv9isw3dm8qa"; - }; - - propagatedBuildInputs = with self; [ - requests - decorator - flake8 - mock - six - update_checker - ]; - - # can't find the tests module? - doCheck = false; - - meta = { - description = "Python Reddit API wrapper"; - homepage = http://praw.readthedocs.org/; - license = licenses.gpl3; - platforms = platforms.all; - maintainers = with maintainers; [ jgeerds ]; - }; - }; + praw = callPackage ../development/python-modules/praw { }; prawcore = callPackage ../development/python-modules/prawcore { }; From 5413be5645d688a2dd56c024a796e8f213bc657c Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 12:59:22 +0000 Subject: [PATCH 117/138] python.pkgs.betamax-serializers: init at 0.2.0 --- .../betamax-serializers/default.nix | 20 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 1 + 2 files changed, 21 insertions(+) create mode 100644 pkgs/development/python-modules/betamax-serializers/default.nix diff --git a/pkgs/development/python-modules/betamax-serializers/default.nix b/pkgs/development/python-modules/betamax-serializers/default.nix new file mode 100644 index 000000000000..2ad23f1f9e65 --- /dev/null +++ b/pkgs/development/python-modules/betamax-serializers/default.nix @@ -0,0 +1,20 @@ +{ stdenv, buildPythonPackage, fetchPypi +, betamax, pyyaml }: + +buildPythonPackage rec { + pname = "betamax-serializers"; + version = "0.2.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "1yqzwx204m4lxlpg04cwv6iwzmcpdzr19wvj97vvxchp0g4qg83d"; + }; + + buildInputs = [ betamax pyyaml ]; + + meta = with stdenv.lib; { + homepage = https://gitlab.com/betamax/serializers; + description = "A set of third-party serializers for Betamax"; + license = licenses.asl20; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 727a2b25adba..475b3a2ea40a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1329,6 +1329,7 @@ in { maintainers = with maintainers; [ pSub ]; }; }; + betamax-serializers = callPackage ../development/python-modules/betamax-serializers { }; bibtexparser = callPackage ../development/python-modules/bibtexparser { }; From b71500ef5ae25a8ae7a445302dfeb1ca3b71b415 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 13:00:05 +0000 Subject: [PATCH 118/138] python.pkgs.betamax-matchers: 0.3.0 -> 0.4.0 --- .../betamax-matchers/default.nix | 21 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 18 +--------------- 2 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 pkgs/development/python-modules/betamax-matchers/default.nix diff --git a/pkgs/development/python-modules/betamax-matchers/default.nix b/pkgs/development/python-modules/betamax-matchers/default.nix new file mode 100644 index 000000000000..762154ac45d2 --- /dev/null +++ b/pkgs/development/python-modules/betamax-matchers/default.nix @@ -0,0 +1,21 @@ +{ stdenv, buildPythonPackage, fetchPypi +, betamax, requests_toolbelt }: + +buildPythonPackage rec { + pname = "betamax-matchers"; + version = "0.4.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"; + }; + + buildInputs = [ betamax requests_toolbelt ]; + + meta = with stdenv.lib; { + homepage = https://github.com/sigmavirus24/betamax_matchers; + description = "A group of experimental matchers for Betamax"; + license = licenses.asl20; + maintainers = with maintainers; [ pSub ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 475b3a2ea40a..9941a80dd6bb 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1311,24 +1311,8 @@ in { }; }; - betamax-matchers = buildPythonPackage rec { - name = "betamax-matchers-${version}"; - version = "0.3.0"; + betamax-matchers = callPackage ../development/python-modules/betamax-matchers { }; - src = pkgs.fetchurl { - url = "mirror://pypi/b/betamax-matchers/${name}.tar.gz"; - sha256 = "039kvqsdcvvlfxjc3n1x2xvjg6qkqbql0p7rc4z7bnxm9kcm88la"; - }; - - buildInputs = with self; [ betamax requests_toolbelt ]; - - meta = with stdenv.lib; { - homepage = https://github.com/sigmavirus24/betamax_matchers; - description = "A group of experimental matchers for Betamax"; - license = licenses.asl20; - maintainers = with maintainers; [ pSub ]; - }; - }; betamax-serializers = callPackage ../development/python-modules/betamax-serializers { }; bibtexparser = callPackage ../development/python-modules/bibtexparser { }; From 54c14e2fa37f0ecb22469a16aff0e76d99ecf75c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 14:53:10 +0100 Subject: [PATCH 119/138] gcc-4.8: fix with glibc-2.26 --- .../development/compilers/gcc/4.8/default.nix | 6 +- .../gcc/res_state-not-declared.patch | 13 ++ .../compilers/gcc/sigsegv-not-declared.patch | 13 ++ .../compilers/gcc/struct-ucontext-4.8.patch | 177 ++++++++++++++++++ 4 files changed, 208 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/gcc/res_state-not-declared.patch create mode 100644 pkgs/development/compilers/gcc/sigsegv-not-declared.patch create mode 100644 pkgs/development/compilers/gcc/struct-ucontext-4.8.patch diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 72e37f18a178..3031df56150b 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -78,7 +78,11 @@ let version = "4.8.5"; sha256 = "01jd7pdarh54ki498g6sz64ijl9a1l5f9v8q2696aaxalvh2vwzl"; excludes = [ "gcc/cp/ChangeLog" ]; })] - ; + ++ [ # glibc-2.26 + ../struct-ucontext-4.8.patch + ../sigsegv-not-declared.patch + ../res_state-not-declared.patch + ]; javaEcj = fetchurl { # The `$(top_srcdir)/ecj.jar' file is automatically picked up at diff --git a/pkgs/development/compilers/gcc/res_state-not-declared.patch b/pkgs/development/compilers/gcc/res_state-not-declared.patch new file mode 100644 index 000000000000..e970487786d0 --- /dev/null +++ b/pkgs/development/compilers/gcc/res_state-not-declared.patch @@ -0,0 +1,13 @@ +diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc +index fe69430..49f5270 100644 +--- a/libsanitizer/tsan/tsan_platform_linux.cc ++++ b/libsanitizer/tsan/tsan_platform_linux.cc +@@ -351,7 +351,7 @@ bool IsGlobalVar(uptr addr) { + // closes within glibc. The code is a pure hack. + int ExtractResolvFDs(void *state, int *fds, int nfd) { + int cnt = 0; +- __res_state *statp = (__res_state*)state; ++ struct __res_state *statp = (struct __res_state*)state; + for (int i = 0; i < MAXNS && cnt < nfd; i++) { + if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1) + fds[cnt++] = statp->_u._ext.nssocks[i]; diff --git a/pkgs/development/compilers/gcc/sigsegv-not-declared.patch b/pkgs/development/compilers/gcc/sigsegv-not-declared.patch new file mode 100644 index 000000000000..f9cfaec82026 --- /dev/null +++ b/pkgs/development/compilers/gcc/sigsegv-not-declared.patch @@ -0,0 +1,13 @@ +error: 'SIGSEGV' was not declared in this scope +diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc +index 0692eb1..472f734 100644 +--- a/libsanitizer/asan/asan_linux.cc ++++ b/libsanitizer/asan/asan_linux.cc +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch b/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch new file mode 100644 index 000000000000..630ef6586e45 --- /dev/null +++ b/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch @@ -0,0 +1,177 @@ +From b685411208e0aaa79190d54faf945763514706b8 Mon Sep 17 00:00:00 2001 +From: jsm28 +Date: Tue, 4 Jul 2017 10:23:57 +0000 +Subject: [PATCH] Use ucontext_t not struct ucontext in linux-unwind.h files. + +Current glibc no longer gives the ucontext_t type the tag struct +ucontext, to conform with POSIX namespace rules. This requires +various linux-unwind.h files in libgcc, that were previously using +struct ucontext, to be fixed to use ucontext_t instead. This is +similar to the removal of the struct siginfo tag from siginfo_t some +years ago. + +This patch changes those files to use ucontext_t instead. As the +standard name that should be unconditionally safe, so this is not +restricted to architectures supported by glibc, or conditioned on the +glibc version. + +Tested compilation together with current glibc with glibc's +build-many-glibcs.py. + + * config/aarch64/linux-unwind.h (aarch64_fallback_frame_state), + config/alpha/linux-unwind.h (alpha_fallback_frame_state), + config/bfin/linux-unwind.h (bfin_fallback_frame_state), + config/i386/linux-unwind.h (x86_64_fallback_frame_state, + x86_fallback_frame_state), config/m68k/linux-unwind.h (struct + uw_ucontext), config/nios2/linux-unwind.h (struct nios2_ucontext), + config/pa/linux-unwind.h (pa32_fallback_frame_state), + config/sh/linux-unwind.h (sh_fallback_frame_state), + config/tilepro/linux-unwind.h (tile_fallback_frame_state), + config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Use + ucontext_t instead of struct ucontext. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@249957 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + libgcc/ChangeLog (REMOVED) | 14 ++++++++++++++ + libgcc/config/aarch64/linux-unwind.h | 2 +- + libgcc/config/alpha/linux-unwind.h | 2 +- + libgcc/config/bfin/linux-unwind.h | 2 +- + libgcc/config/i386/linux-unwind.h | 4 ++-- + libgcc/config/m68k/linux-unwind.h | 2 +- + libgcc/config/nios2/linux-unwind.h | 2 +- + libgcc/config/pa/linux-unwind.h | 2 +- + libgcc/config/sh/linux-unwind.h | 2 +- + libgcc/config/tilepro/linux-unwind.h | 2 +- + libgcc/config/xtensa/linux-unwind.h | 2 +- + 11 files changed, 25 insertions(+), 11 deletions(-) + +diff --git a/libgcc/config/aarch64/linux-unwind.h b/libgcc/config/aarch64/linux-unwind.h +index 4512efb..06de45a 100644 +--- a/libgcc/config/aarch64/linux-unwind.h ++++ b/libgcc/config/aarch64/linux-unwind.h +@@ -52,7 +52,7 @@ aarch64_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe + { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + }; + + struct rt_sigframe *rt_; +diff --git a/libgcc/config/alpha/linux-unwind.h b/libgcc/config/alpha/linux-unwind.h +index bdbba4a..e84812e 100644 +--- a/libgcc/config/alpha/linux-unwind.h ++++ b/libgcc/config/alpha/linux-unwind.h +@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; + } +diff --git a/libgcc/config/bfin/linux-unwind.h b/libgcc/config/bfin/linux-unwind.h +index 77b7c23..8bf5e82 100644 +--- a/libgcc/config/bfin/linux-unwind.h ++++ b/libgcc/config/bfin/linux-unwind.h +@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context, + void *puc; + char retcode[8]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + + /* The void * cast is necessary to avoid an aliasing warning. +diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h +index 540a0a2..29efbe3 100644 +--- a/libgcc/config/i386/linux-unwind.h ++++ b/libgcc/config/i386/linux-unwind.h +@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context, + if (*(unsigned char *)(pc+0) == 0x48 + && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL) + { +- struct ucontext *uc_ = context->cfa; ++ ucontext_t *uc_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem + because it does not alias anything. */ +@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context, + siginfo_t *pinfo; + void *puc; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/m68k/linux-unwind.h b/libgcc/config/m68k/linux-unwind.h +index 75b7cf7..f964e24 100644 +--- a/libgcc/config/m68k/linux-unwind.h ++++ b/libgcc/config/m68k/linux-unwind.h +@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + /* is unfortunately broken right now. */ + struct uw_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + unsigned long uc_filler[80]; +diff --git a/libgcc/config/pa/linux-unwind.h b/libgcc/config/pa/linux-unwind.h +index 9a2657f..e47493d 100644 +--- a/libgcc/config/pa/linux-unwind.h ++++ b/libgcc/config/pa/linux-unwind.h +@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context, + struct sigcontext *sc; + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *frame; + + /* rt_sigreturn trampoline: +diff --git a/libgcc/config/sh/linux-unwind.h b/libgcc/config/sh/linux-unwind.h +index e389cac..0bf43ba 100644 +--- a/libgcc/config/sh/linux-unwind.h ++++ b/libgcc/config/sh/linux-unwind.h +@@ -180,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/tilepro/linux-unwind.h b/libgcc/config/tilepro/linux-unwind.h +index 796e976..75f8890 100644 +--- a/libgcc/config/tilepro/linux-unwind.h ++++ b/libgcc/config/tilepro/linux-unwind.h +@@ -61,7 +61,7 @@ tile_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe { + unsigned char save_area[C_ABI_SAVE_AREA_SIZE]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* Return if this is not a signal handler. */ +diff --git a/libgcc/config/xtensa/linux-unwind.h b/libgcc/config/xtensa/linux-unwind.h +index 9872492..586a9d4 100644 +--- a/libgcc/config/xtensa/linux-unwind.h ++++ b/libgcc/config/xtensa/linux-unwind.h +@@ -67,7 +67,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context, + + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* movi a2, __NR_rt_sigreturn; syscall */ +-- +2.9.3 + From d51f9b364e5aa2a35da4e8ad12efe01a031ec545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 15:27:53 +0100 Subject: [PATCH 120/138] checkpolicy: fixup includes with glibc-2.26 --- pkgs/os-specific/linux/checkpolicy/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/os-specific/linux/checkpolicy/default.nix b/pkgs/os-specific/linux/checkpolicy/default.nix index 9fbed50f3b9a..8e01bb2a5c80 100644 --- a/pkgs/os-specific/linux/checkpolicy/default.nix +++ b/pkgs/os-specific/linux/checkpolicy/default.nix @@ -10,16 +10,17 @@ stdenv.mkDerivation rec { sha256 = "1m5wjm43lzp6bld8higsvdm2dkddydihhwv9qw2w9r4dm0largcv"; }; + # Don't build tests + postPatch = '' + sed '/-C test/d' -i Makefile + sed '1i#include ' -i checkpolicy.c + ''; + nativeBuildInputs = [ bison flex ]; buildInputs = [ libsepol ]; NIX_CFLAGS_COMPILE = "-fstack-protector-all"; - # Don't build tests - postPatch = '' - sed -i '/-C test/d' Makefile - ''; - preBuild = '' makeFlagsArray+=("LEX=flex") makeFlagsArray+=("LIBDIR=${libsepol}/lib") From f04b64c1e97fcacf6a6272de5a0562ced97db436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 15:39:24 +0100 Subject: [PATCH 121/138] gcc-4.5: fixup build with glibc-2.26 The older the GCC, the easier the backporting :-) --- .../development/compilers/gcc/4.5/default.nix | 1 + .../compilers/gcc/struct-ucontext-4.5.patch | 107 ++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 pkgs/development/compilers/gcc/struct-ucontext-4.5.patch diff --git a/pkgs/development/compilers/gcc/4.5/default.nix b/pkgs/development/compilers/gcc/4.5/default.nix index 5bad03d30252..41d31888bde1 100644 --- a/pkgs/development/compilers/gcc/4.5/default.nix +++ b/pkgs/development/compilers/gcc/4.5/default.nix @@ -153,6 +153,7 @@ stdenv.mkDerivation ({ # target libraries and tools. ++ optional langAda ../gnat-cflags.patch ++ optional langVhdl ./ghdl-ortho-cflags.patch + ++ [ ../struct-ucontext-4.5.patch ] # glibc-2.26 ; postPatch = diff --git a/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch b/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch new file mode 100644 index 000000000000..a84e9ffe2681 --- /dev/null +++ b/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch @@ -0,0 +1,107 @@ +Trivally backported the upstream commit +b685411208e0aaa79190d54faf945763514706b8 +(different directory, some files not present, etc.) +We only really use x86* from those, probably, so I didn't bother much. +diff --git a/gcc/config/alpha/linux-unwind.h b/gcc/config/alpha/linux-unwind.h +index bdbba4a..e84812e 100644 +--- a/gcc/config/alpha/linux-unwind.h ++++ b/gcc/config/alpha/linux-unwind.h +@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; + } +diff --git a/gcc/config/bfin/linux-unwind.h b/gcc/config/bfin/linux-unwind.h +index 77b7c23..8bf5e82 100644 +--- a/gcc/config/bfin/linux-unwind.h ++++ b/gcc/config/bfin/linux-unwind.h +@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context, + void *puc; + char retcode[8]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + + /* The void * cast is necessary to avoid an aliasing warning. +diff --git a/gcc/config/i386/linux-unwind.h b/gcc/config/i386/linux-unwind.h +index 540a0a2..29efbe3 100644 +--- a/gcc/config/i386/linux-unwind.h ++++ b/gcc/config/i386/linux-unwind.h +@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context, + if (*(unsigned char *)(pc+0) == 0x48 + && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL) + { +- struct ucontext *uc_ = context->cfa; ++ ucontext_t *uc_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem + because it does not alias anything. */ +@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context, + siginfo_t *pinfo; + void *puc; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/gcc/config/m68k/linux-unwind.h b/gcc/config/m68k/linux-unwind.h +index 75b7cf7..f964e24 100644 +--- a/gcc/config/m68k/linux-unwind.h ++++ b/gcc/config/m68k/linux-unwind.h +@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + /* is unfortunately broken right now. */ + struct uw_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + unsigned long uc_filler[80]; +diff --git a/gcc/config/pa/linux-unwind.h b/gcc/config/pa/linux-unwind.h +index 9a2657f..e47493d 100644 +--- a/gcc/config/pa/linux-unwind.h ++++ b/gcc/config/pa/linux-unwind.h +@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context, + struct sigcontext *sc; + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *frame; + + /* rt_sigreturn trampoline: +diff --git a/gcc/config/sh/linux-unwind.h b/gcc/config/sh/linux-unwind.h +index e389cac..0bf43ba 100644 +--- a/gcc/config/sh/linux-unwind.h ++++ b/gcc/config/sh/linux-unwind.h +@@ -180,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/gcc/config/xtensa/linux-unwind.h b/gcc/config/xtensa/linux-unwind.h +index 9872492..586a9d4 100644 +--- a/gcc/config/xtensa/linux-unwind.h ++++ b/gcc/config/xtensa/linux-unwind.h +@@ -67,7 +67,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context, + + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* movi a2, __NR_rt_sigreturn; syscall */ +-- +2.9.3 + From 467b9b7a930bc6de60023dbec1c8b914b882e2d9 Mon Sep 17 00:00:00 2001 From: Yegor Timoshenko Date: Tue, 7 Nov 2017 14:48:20 +0000 Subject: [PATCH 122/138] lmms: 1.1.90 -> 1.2.0-rc4, Qt5, optional lame, libsoundio, portaudio --- pkgs/applications/audio/lmms/default.nix | 36 +++++++++++++++++------- pkgs/top-level/all-packages.nix | 6 ++-- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/pkgs/applications/audio/lmms/default.nix b/pkgs/applications/audio/lmms/default.nix index dcefbb06436f..25d7f2ed015b 100644 --- a/pkgs/applications/audio/lmms/default.nix +++ b/pkgs/applications/audio/lmms/default.nix @@ -1,31 +1,47 @@ -{ stdenv, fetchFromGitHub, SDL, alsaLib, cmake, fftwSinglePrec, fluidsynth -, fltk13, libjack2, libvorbis , libsamplerate, libsndfile, pkgconfig -, libpulseaudio, qt4, freetype, libgig -}: +{ stdenv, fetchFromGitHub, cmake, pkgconfig, alsaLib ? null, fftwFloat, fltk13 +, fluidsynth ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null +, libsamplerate, libsoundio ? null, libsndfile, libvorbis ? null, portaudio ? null +, qtbase, qttools, SDL ? null }: stdenv.mkDerivation rec { name = "lmms-${version}"; - version = "1.1.90"; + version = "1.2.0-rc4"; src = fetchFromGitHub { owner = "LMMS"; repo = "lmms"; rev = "v${version}"; - sha256 = "0njiarndwqamqiinr1wbwkzjn87yzr1z5k9cfwk0jdkbalgakkq3"; + sha256 = "1n3py18zqbvfnkdiz4wc6z60xaajpkd3kn1wxmby5dmc4vccvjj5"; }; + nativeBuildInputs = [ cmake qttools pkgconfig ]; + buildInputs = [ - SDL alsaLib cmake fftwSinglePrec fltk13 fluidsynth libjack2 libgig - libsamplerate libsndfile libvorbis pkgconfig libpulseaudio qt4 + alsaLib + fftwFloat + fltk13 + fluidsynth + lame + libgig + libjack2 + libpulseaudio + libsamplerate + libsndfile + libsoundio + libvorbis + portaudio + qtbase + SDL # TODO: switch to SDL2 in the next version ]; + cmakeFlags = [ "-DWANT_QT5=ON" ]; enableParallelBuilding = true; meta = with stdenv.lib; { - description = "Linux MultiMedia Studio"; + description = "DAW similar to FL Studio (music production software)"; homepage = https://lmms.io; license = licenses.gpl2Plus; platforms = platforms.linux; - maintainers = [ maintainers.goibhniu ]; + maintainers = with maintainers; [ goibhniu yegortimoshenko ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 983dacda0449..5dd094232b38 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15475,8 +15475,10 @@ with pkgs; llpp = ocaml-ng.ocamlPackages.callPackage ../applications/misc/llpp { }; - lmms = callPackage ../applications/audio/lmms { - stdenv = overrideCC stdenv gcc5; + lmms = libsForQt5.callPackage ../applications/audio/lmms { + lame = null; + libsoundio = null; + portaudio = null; }; loxodo = callPackage ../applications/misc/loxodo { }; From c7e3555d8b0f8ba96c9e8772b73107617adfe24a Mon Sep 17 00:00:00 2001 From: James Earl Douglas Date: Tue, 7 Nov 2017 07:56:14 -0700 Subject: [PATCH 123/138] jenkins: 2.87 -> 2.88 --- .../tools/continuous-integration/jenkins/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix index e6f01ba5c93d..f3385b26111a 100644 --- a/pkgs/development/tools/continuous-integration/jenkins/default.nix +++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "jenkins-${version}"; - version = "2.87"; + version = "2.88"; src = fetchurl { url = "http://mirrors.jenkins-ci.org/war/${version}/jenkins.war"; - sha256 = "1nzs9nn1nr2jav59v1xj39rzmrh1zmwaqnpaiqsll8kixkr9rb8f"; + sha256 = "062hnbyj73311sxhkwla6sl33zb43v8p7hjssgbh0bfvgmnlayim"; }; buildCommand = '' From 0e5014def922ba9224b8d8eecf8b66b81a296a6f Mon Sep 17 00:00:00 2001 From: James Earl Douglas Date: Tue, 7 Nov 2017 07:56:37 -0700 Subject: [PATCH 124/138] jenkins: add earldouglas as a maintainer --- .../tools/continuous-integration/jenkins/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix index f3385b26111a..ea5a5e370178 100644 --- a/pkgs/development/tools/continuous-integration/jenkins/default.nix +++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix @@ -19,6 +19,6 @@ stdenv.mkDerivation rec { homepage = http://jenkins-ci.org; license = licenses.mit; platforms = platforms.all; - maintainers = with maintainers; [ coconnor fpletz ]; + maintainers = with maintainers; [ coconnor fpletz earldouglas ]; }; } From 0f8c85d5d0f6c10f41f369641ced5ed707580fa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 16:40:12 +0100 Subject: [PATCH 125/138] strongswan: fixup includes with glibc-2.26 --- pkgs/tools/networking/strongswan/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/tools/networking/strongswan/default.nix b/pkgs/tools/networking/strongswan/default.nix index 7ef278e359cc..89019986bca2 100644 --- a/pkgs/tools/networking/strongswan/default.nix +++ b/pkgs/tools/networking/strongswan/default.nix @@ -35,6 +35,8 @@ stdenv.mkDerivation rec { # the configuration files. In the absence of that we patch swanctl to look # for configuration files in /etc/swanctl. substituteInPlace src/swanctl/swanctl.h --replace "SWANCTLDIR" "\"/etc/swanctl\"" + # glibc-2.26 reorganized internal includes + sed '1i#include ' -i src/libstrongswan/utils/utils/memory.h ''; preConfigure = '' From d0c8c66068ffaa0bc10f4749c7e4d8df728fc9c3 Mon Sep 17 00:00:00 2001 From: Andreas Rammhold Date: Tue, 7 Nov 2017 16:10:18 +0100 Subject: [PATCH 126/138] cvs: fix CVE-2017-12836 This patch is based on the work of the patch from Thorsten Glaser (MirBSD) [1] [1] http://www.mirbsd.org/cvs.cgi/src/gnu/usr.bin/cvs/src/rsh-client.c.diff?r1=1.6;r2=1.7 --- .../cvs/CVE-2017-12836.patch | 29 +++++++++++++++++++ .../version-management/cvs/default.nix | 1 + 2 files changed, 30 insertions(+) create mode 100644 pkgs/applications/version-management/cvs/CVE-2017-12836.patch diff --git a/pkgs/applications/version-management/cvs/CVE-2017-12836.patch b/pkgs/applications/version-management/cvs/CVE-2017-12836.patch new file mode 100644 index 000000000000..950079423685 --- /dev/null +++ b/pkgs/applications/version-management/cvs/CVE-2017-12836.patch @@ -0,0 +1,29 @@ +--- a/src/rsh-client.c.orig 2005-10-02 17:17:21.000000000 +0200 ++++ b/src/rsh-client.c 2017-11-07 16:56:06.957370469 +0100 +@@ -53,7 +53,7 @@ + char *cvs_server = (root->cvs_server != NULL + ? root->cvs_server : getenv ("CVS_SERVER")); + int i = 0; +- /* This needs to fit "rsh", "-b", "-l", "USER", "host", ++ /* This needs to fit "rsh", "-b", "-l", "USER", "--", "host", + "cmd (w/ args)", and NULL. We leave some room to grow. */ + char *rsh_argv[10]; + +@@ -97,6 +97,9 @@ + rsh_argv[i++] = root->username; + } + ++ /* Only non-option arguments from here. (CVE-2017-12836) */ ++ rsh_argv[i++] = "--"; ++ + rsh_argv[i++] = root->hostname; + rsh_argv[i++] = cvs_server; + rsh_argv[i++] = "server"; +@@ -171,6 +174,7 @@ + *p++ = root->username; + } + ++ *p++ = "--"; + *p++ = root->hostname; + *p++ = command; + *p++ = NULL; diff --git a/pkgs/applications/version-management/cvs/default.nix b/pkgs/applications/version-management/cvs/default.nix index 8c69517a7506..a330db6a8d67 100644 --- a/pkgs/applications/version-management/cvs/default.nix +++ b/pkgs/applications/version-management/cvs/default.nix @@ -11,6 +11,7 @@ stdenv.mkDerivation { patches = [ ./getcwd-chroot.patch ./CVE-2012-0804.patch + ./CVE-2017-12836.patch ]; hardeningDisable = [ "fortify" "format" ]; From 7b8e40c6b1980df5b5d976e7f1b6e483cb23284a Mon Sep 17 00:00:00 2001 From: Tom Macdonald Date: Tue, 7 Nov 2017 16:45:41 +0100 Subject: [PATCH 127/138] procodile: init at 1.0.17 --- lib/maintainers.nix | 1 + pkgs/tools/system/procodile/Gemfile | 2 ++ pkgs/tools/system/procodile/Gemfile.lock | 15 +++++++++++++++ pkgs/tools/system/procodile/default.nix | 22 ++++++++++++++++++++++ pkgs/tools/system/procodile/gemset.nix | 19 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 6 files changed, 61 insertions(+) create mode 100644 pkgs/tools/system/procodile/Gemfile create mode 100644 pkgs/tools/system/procodile/Gemfile.lock create mode 100644 pkgs/tools/system/procodile/default.nix create mode 100644 pkgs/tools/system/procodile/gemset.nix diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 514709082fce..e01907ac5cdb 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -518,6 +518,7 @@ rardiol = "Ricardo Ardissone "; rasendubi = "Alexey Shmalko "; raskin = "Michael Raskin <7c6f434c@mail.ru>"; + ravloony = "Tom Macdonald "; rbasso = "Rafael Basso "; redbaron = "Maxim Ivanov "; redvers = "Redvers Davies "; diff --git a/pkgs/tools/system/procodile/Gemfile b/pkgs/tools/system/procodile/Gemfile new file mode 100644 index 000000000000..77e4bb430e96 --- /dev/null +++ b/pkgs/tools/system/procodile/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gem 'procodile' diff --git a/pkgs/tools/system/procodile/Gemfile.lock b/pkgs/tools/system/procodile/Gemfile.lock new file mode 100644 index 000000000000..51ab44a762ab --- /dev/null +++ b/pkgs/tools/system/procodile/Gemfile.lock @@ -0,0 +1,15 @@ +GEM + remote: https://rubygems.org/ + specs: + json (2.1.0) + procodile (1.0.17) + json + +PLATFORMS + ruby + +DEPENDENCIES + procodile + +BUNDLED WITH + 1.14.6 diff --git a/pkgs/tools/system/procodile/default.nix b/pkgs/tools/system/procodile/default.nix new file mode 100644 index 000000000000..3a5cb1b4965d --- /dev/null +++ b/pkgs/tools/system/procodile/default.nix @@ -0,0 +1,22 @@ +{ lib, bundlerEnv, ruby, stdenv }: + +bundlerEnv rec { + name = "procodile-${version}"; + + gemfile = ./Gemfile; + lockfile = ./Gemfile.lock; + gemset = ./gemset.nix; + + version = (import gemset).procodile.version; + inherit ruby; + + gemdir = ./.; + + meta = with lib; { + description = "Run processes in the background (and foreground) on Mac & Linux from a Procfile (for production and/or development environments)"; + homepage = https://adam.ac/procodile; + license = with licenses; mit; + maintainers = [ maintainers.ravloony ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/tools/system/procodile/gemset.nix b/pkgs/tools/system/procodile/gemset.nix new file mode 100644 index 000000000000..8216159ad940 --- /dev/null +++ b/pkgs/tools/system/procodile/gemset.nix @@ -0,0 +1,19 @@ +{ + json = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"; + type = "gem"; + }; + version = "2.1.0"; + }; + procodile = { + dependencies = ["json"]; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gfms2h4k9zqq7jn04nphibcsjykgxiqwdyyz2r4kq428a25kqsf"; + type = "gem"; + }; + version = "1.0.17"; + }; +} \ No newline at end of file diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a738d18b64c4..dc8f55883a4e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7484,6 +7484,8 @@ with pkgs; premake = premake4; + procodile = callPackage ../tools/system/procodile { }; + qtcreator = libsForQt5.callPackage ../development/qtcreator { }; r10k = callPackage ../tools/system/r10k { }; From 198fd526ca69873b9808202e2e8dffa6813823e7 Mon Sep 17 00:00:00 2001 From: Tim Steinbach Date: Tue, 7 Nov 2017 17:15:09 +0000 Subject: [PATCH 128/138] Revert "coqPackages.{ssreflect,mathcomp}: 1.6.1 -> 1.6.4" --- pkgs/development/coq-modules/mathcomp/default.nix | 6 +++--- pkgs/development/coq-modules/ssreflect/default.nix | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/coq-modules/mathcomp/default.nix b/pkgs/development/coq-modules/mathcomp/default.nix index 046c3b2f795e..a80c934c6c19 100644 --- a/pkgs/development/coq-modules/mathcomp/default.nix +++ b/pkgs/development/coq-modules/mathcomp/default.nix @@ -2,9 +2,9 @@ let param = { - version = "1.6.4"; - url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.4.tar.gz; - sha256 = "0qmjjb6jsxmmf4gpw10r30rmrvwqgzirvvgyy41mz2vhgwis8wn6"; + version = "1.6.1"; + url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.1.tar.gz; + sha256 = "1j9ylggjzrxz1i2hdl2yhsvmvy5z6l4rprwx7604401080p5sgjw"; }; in callPackage ./generic.nix { diff --git a/pkgs/development/coq-modules/ssreflect/default.nix b/pkgs/development/coq-modules/ssreflect/default.nix index 49f999fc20ba..352b98ab88b9 100644 --- a/pkgs/development/coq-modules/ssreflect/default.nix +++ b/pkgs/development/coq-modules/ssreflect/default.nix @@ -2,9 +2,9 @@ let param = { - version = "1.6.4"; - url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.4.tar.gz; - sha256 = "0qmjjb6jsxmmf4gpw10r30rmrvwqgzirvvgyy41mz2vhgwis8wn6"; + version = "1.6.1"; + url = https://github.com/math-comp/math-comp/archive/mathcomp-1.6.1.tar.gz; + sha256 = "1j9ylggjzrxz1i2hdl2yhsvmvy5z6l4rprwx7604401080p5sgjw"; }; in callPackage ./generic.nix { From 7e571b9a9910d56356aadd8f11c6a4518de9410e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 7 Nov 2017 18:54:55 +0100 Subject: [PATCH 129/138] mesos: fixup includes with glibc-2.26 --- pkgs/applications/networking/cluster/mesos/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/applications/networking/cluster/mesos/default.nix b/pkgs/applications/networking/cluster/mesos/default.nix index 116e74326908..909242273930 100644 --- a/pkgs/applications/networking/cluster/mesos/default.nix +++ b/pkgs/applications/networking/cluster/mesos/default.nix @@ -60,6 +60,8 @@ in stdenv.mkDerivation rec { "CXXFLAGS=-O2 -Wno-error=strict-aliasing" ) + substituteInPlace 3rdparty/stout/include/stout/jsonify.hpp \ + --replace '' '' # Fix cases where makedev(),major(),minor() are referenced through # instead of sed 1i'#include ' -i src/linux/fs.cpp From 8ad6b2e862ca6606bdaea46bfc089caf6a019806 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 17:59:24 +0000 Subject: [PATCH 130/138] python.pkgs.keepkey: 0.7.3 -> 4.0.0 --- .../python-modules/keepkey/default.nix | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/keepkey/default.nix b/pkgs/development/python-modules/keepkey/default.nix index 3e58e9e3e03d..9ea6840c4d2c 100644 --- a/pkgs/development/python-modules/keepkey/default.nix +++ b/pkgs/development/python-modules/keepkey/default.nix @@ -1,21 +1,25 @@ -{ stdenv, fetchPypi, buildPythonPackage, ecdsa -, mnemonic, protobuf, hidapi }: +{ stdenv, fetchFromGitHub, buildPythonPackage, pytest +, ecdsa , mnemonic, protobuf, hidapi, trezor }: buildPythonPackage rec { name = "${pname}-${version}"; pname = "keepkey"; - version = "0.7.3"; + version = "4.0.0"; - src = fetchPypi { - inherit pname version; - sha256 = "14d2r8dlx997ypgma2k8by90acw7i3l7hfq4gar9lcka0lqfj714"; + src = fetchFromGitHub { + owner = "keepkey"; + repo = "python-keepkey"; + rev = "v${version}"; + sha256 = "144awjkc169z2n1ffirs697y6m97izh3pbh3sjhy3nji7jszh592"; }; - propagatedBuildInputs = [ protobuf hidapi ]; + propagatedBuildInputs = [ protobuf hidapi trezor ]; buildInputs = [ ecdsa mnemonic ]; - # There are no actual tests: "ImportError: No module named tests" + checkInputs = [ pytest ]; + + # tests requires hardware doCheck = false; # Remove impossible dependency constraint From 05f9a3661253c657b156cd3459e99b7c27807829 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim Date: Tue, 7 Nov 2017 18:00:57 +0000 Subject: [PATCH 131/138] python.pkgs.libagent: enable tests --- pkgs/development/python-modules/libagent/default.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/libagent/default.nix b/pkgs/development/python-modules/libagent/default.nix index 84c0a613854e..fe12f5ffb197 100644 --- a/pkgs/development/python-modules/libagent/default.nix +++ b/pkgs/development/python-modules/libagent/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchPypi, buildPythonPackage, ed25519, ecdsa -, semver, keepkey, trezor, mnemonic, ledgerblue, unidecode +, semver, keepkey, trezor, mnemonic, ledgerblue, unidecode, mock, pytest }: buildPythonPackage rec { @@ -17,9 +17,13 @@ buildPythonPackage rec { trezor mnemonic ledgerblue ]; - propagatedBuildInputs = [ - unidecode - ]; + propagatedBuildInputs = [ unidecode ]; + + checkInputs = [ mock pytest ]; + + checkPhase = '' + py.test libagent/tests + ''; meta = with stdenv.lib; { description = "Using hardware wallets as SSH/GPG agent"; From 3f3ac8829f04100bb9d1da2719fb8427474b5cb5 Mon Sep 17 00:00:00 2001 From: Kilian Schweppe Date: Tue, 7 Nov 2017 19:12:48 +0100 Subject: [PATCH 132/138] mpw: 2.1 -> 2.6 --- pkgs/tools/security/mpw/default.nix | 45 +++++++++++------------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/pkgs/tools/security/mpw/default.nix b/pkgs/tools/security/mpw/default.nix index e30866021da6..3e1e3a882839 100644 --- a/pkgs/tools/security/mpw/default.nix +++ b/pkgs/tools/security/mpw/default.nix @@ -1,50 +1,39 @@ -{ stdenv, fetchzip, autoconf, automake, openssl, libxml2, fetchFromGitHub, ncurses }: +{ stdenv, cmake, fetchFromGitHub, ncurses, libsodium, json_c }: -let - scrypt_src = fetchzip { - url = "http://www.tarsnap.com/scrypt/scrypt-1.2.0.tgz"; - sha256 = "0ahylib2pimlhjcm566kpim6n16jci5v749xwdkr9ivgfjrv3xn4"; - }; - -in stdenv.mkDerivation { - name = "mpw-2.1-6834f36"; +stdenv.mkDerivation rec { + name = "mpw-2.6-f8043ae"; src = fetchFromGitHub { owner = "Lyndir"; repo = "MasterPassword"; - rev = "6834f3689f5dfd4e59ad6959961d349c224977ee"; - sha256 = "0zlpx3hb1y2l60hg961h05lb9yf3xb5phnyycvazah2674gkwb2p"; + rev = "f8043ae16d73ddfb205aadd25c35cd9c5e95b228"; + sha256 = "0hy02ri7y3sca85z3ff5i68crwav5cjd7rrdqj7jrnpp1bw4yapi"; }; postUnpack = '' - sourceRoot+=/MasterPassword/C + sourceRoot+=/platform-independent/cli-c ''; - prePatch = '' - patchShebangs . - mkdir lib/scrypt/src - cp -R --no-preserve=ownership ${scrypt_src}/* lib/scrypt/src - chmod +w -R lib/scrypt/src - substituteInPlace lib/scrypt/src/libcperciva/cpusupport/Build/cpusupport.sh \ - --replace dirname "$(type -P dirname)" - substituteInPlace lib/scrypt/src/Makefile.in --replace "command -p mv" "mv" + preConfigure = '' + substituteInPlace CMakeLists.txt --replace curses ncurses + echo ${name} > VERSION ''; - NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2"; + dontUseCmakeBuildDir = true; - buildInputs = [ autoconf automake openssl libxml2 ncurses ]; + nativeBuildInputs = [ cmake ]; - buildPhase = '' - substituteInPlace build --replace '"curses"' '"ncurses"' - targets="mpw mpw-tests" ./build - ''; + buildInputs = [ ncurses libsodium json_c ]; installPhase = '' mkdir -p $out/bin mv mpw $out/bin/mpw ''; - meta = { - platforms = stdenv.lib.platforms.unix; + meta = with stdenv.lib; { + homepage = http://masterpasswordapp.com/; + description = "A stateless password management solution"; + license = licenses.gpl3; + platforms = platforms.unix; }; } From 3b9fbfc1625fcc23a5dae905b804128c1004ff11 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Tue, 7 Nov 2017 20:38:11 +0200 Subject: [PATCH 133/138] libnsl: init at 1.1.0 This code was formerly part of glibc, but is now standalone to be able to link against TI-RPC for IPv6 support. --- pkgs/development/libraries/libnsl/default.nix | 24 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 pkgs/development/libraries/libnsl/default.nix diff --git a/pkgs/development/libraries/libnsl/default.nix b/pkgs/development/libraries/libnsl/default.nix new file mode 100644 index 000000000000..d4af280c3cd8 --- /dev/null +++ b/pkgs/development/libraries/libnsl/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchFromGitHub, autoreconfHook, libtirpc, pkgconfig }: + +stdenv.mkDerivation rec { + name = "libnsl-${version}"; + version = "1.1.0"; + + src = fetchFromGitHub { + owner = "thkukuk"; + repo = "libnsl"; + rev = "libnsl-${version}"; + sha256 = "0h8br0gmgw3fp5fmy6bfbj1qlk9hry1ssg25ssjgxbd8spczpscs"; + }; + + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ libtirpc ]; + + meta = with stdenv.lib; { + description = "Client interface library for NIS(YP) and NIS+"; + homepage = https://github.com/thkukuk/libnsl; + license = licenses.lgpl21; + maintainers = [ maintainers.dezgeg ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9df84ea3077d..7f0410a114ab 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9263,6 +9263,8 @@ with pkgs; libnice = callPackage ../development/libraries/libnice { }; + libnsl = callPackage ../development/libraries/libnsl { }; + liboping = callPackage ../development/libraries/liboping { }; libplist = callPackage ../development/libraries/libplist { }; From 34f3ef2c4d590a85ccebddf9537a5315abd9c137 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Tue, 7 Nov 2017 20:38:41 +0200 Subject: [PATCH 134/138] tcp_wrappers: Use libnsl to fix build after new glibc https://hydra.nixos.org/build/63759192 https://sourceware.org/ml/libc-alpha/2017-02/msg00478.html --- pkgs/os-specific/linux/tcp-wrappers/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/tcp-wrappers/default.nix b/pkgs/os-specific/linux/tcp-wrappers/default.nix index 6a400f1de226..7da4e39ca6c0 100644 --- a/pkgs/os-specific/linux/tcp-wrappers/default.nix +++ b/pkgs/os-specific/linux/tcp-wrappers/default.nix @@ -1,4 +1,4 @@ -{ fetchurl, stdenv }: +{ fetchurl, stdenv, libnsl }: let vanillaVersion = "7.6.q"; @@ -22,6 +22,8 @@ in stdenv.mkDerivation rec { patches="$(cat debian/patches/series | sed 's,^,debian/patches/,') $patches" ''; + buildInputs = [ libnsl ]; + makeFlags = [ "STRINGS=" "REAL_DAEMON_DIR=$(out)/bin" "linux" ]; installPhase = '' From 653624061ccaa4820853d73e5b27245b3fcba1a5 Mon Sep 17 00:00:00 2001 From: Kamil Chmielewski Date: Tue, 7 Nov 2017 20:20:39 +0100 Subject: [PATCH 135/138] pony-stable: 0.0.1 -> 0.1.1 --- pkgs/development/compilers/ponyc/pony-stable.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/ponyc/pony-stable.nix b/pkgs/development/compilers/ponyc/pony-stable.nix index 21488361f4a9..0e382efd7079 100644 --- a/pkgs/development/compilers/ponyc/pony-stable.nix +++ b/pkgs/development/compilers/ponyc/pony-stable.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "pony-stable-${version}"; - version = "0.0.1"; + version = "0.1.1"; src = fetchFromGitHub { owner = "ponylang"; repo = "pony-stable"; rev = version; - sha256 = "0q05135mnzzdwam7cnmxq34clqhmc83yp2gi63sx20c74rcw3p6v"; + sha256 = "0v4039iijjv93m89s3dsikcbp1y0hml6g1agj44s6w2g4m8kiiw3"; }; buildInputs = [ ponyc ]; From 0364cf6620ef356198307d2048e35def1bc1af9c Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Tue, 7 Nov 2017 21:34:51 +0200 Subject: [PATCH 136/138] rpcbind: Fix build with libnsl --- pkgs/servers/rpcbind/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/rpcbind/default.nix b/pkgs/servers/rpcbind/default.nix index da59241bad3c..dd09985a07bc 100644 --- a/pkgs/servers/rpcbind/default.nix +++ b/pkgs/servers/rpcbind/default.nix @@ -1,4 +1,4 @@ -{ fetchurl, stdenv, pkgconfig, libtirpc +{ fetchurl, stdenv, pkgconfig, libnsl, libtirpc , useSystemd ? true, systemd }: stdenv.mkDerivation rec { @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { ./sunrpc.patch ]; - buildInputs = [ libtirpc ] + buildInputs = [ libnsl libtirpc ] ++ stdenv.lib.optional useSystemd systemd; configureFlags = [ From c638dacf4b9f1b86e8195d9508be18ef24990a43 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Tue, 7 Nov 2017 21:48:15 +0100 Subject: [PATCH 137/138] eclipse-plugin-bytecode-outline: 2.4.3 -> 2.5.0 --- pkgs/applications/editors/eclipse/plugins.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/editors/eclipse/plugins.nix b/pkgs/applications/editors/eclipse/plugins.nix index 0aeaee2155a7..4bad9eb2d64a 100644 --- a/pkgs/applications/editors/eclipse/plugins.nix +++ b/pkgs/applications/editors/eclipse/plugins.nix @@ -152,16 +152,16 @@ rec { bytecode-outline = buildEclipsePlugin rec { name = "bytecode-outline-${version}"; - version = "2.4.3"; + version = "2.5.0.201711011753-5a57fdf"; srcFeature = fetchurl { url = "http://andrei.gmxhome.de/eclipse/features/de.loskutov.BytecodeOutline.feature_${version}.jar"; - sha256 = "0imhwp73gxy1y5d5gpjgd05ywn0xg3vqc5980wcx3fd51g4ifc67"; + sha256 = "0yciqhcq0n5i326mwy57r4ywmkz2c2jky7r4pcmznmhvks3z65ps"; }; srcPlugin = fetchurl { url = "http://dl.bintray.com/iloveeclipse/plugins/de.loskutov.BytecodeOutline_${version}.jar"; - sha256 = "0230i88mvvxhn11m9c5mv3494zhh1xkxyfyva9qahck0wbqwpzkw"; + sha256 = "1vmsqv32jfl7anvdkw0vir342miv5sr9df7vd1w44lf1yf97vxlw"; }; meta = with stdenv.lib; { From 233a0b3f36790e1219938a539b769f9bce42b770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Kj=C3=A6r?= Date: Tue, 7 Nov 2017 14:54:10 +0900 Subject: [PATCH 138/138] php: specify CXXFLAGS for macOS Fixes #31059 --- pkgs/development/interpreters/php/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index c967ed2b8623..b28d5acf9786 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -20,10 +20,12 @@ let enableParallelBuilding = true; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig ]; buildInputs = [ flex bison ] ++ lib.optional stdenv.isLinux systemd; + CXXFLAGS = lib.optional stdenv.cc.isClang "-std=c++11"; + flags = { # much left to do here...

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�`4h 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