Merge staging-next into staging

authored by github-actions[bot] and committed by GitHub 179051c7 886a17f9

+188 -108
+9 -8
doc/using/configuration.chapter.md
··· 164 164 165 165 Note that `permittedInsecurePackages` is only checked if `allowInsecurePredicate` is not specified. 166 166 167 - ### `config` Options Reference 168 - 169 - The following attributes can be passed in [`config`](#chap-packageconfig). 170 - 171 - ```{=docbook} 172 - <include xmlns="http://www.w3.org/2001/XInclude" href="../doc-support/result/config-options.docbook.xml"/> 173 - ``` 174 - 175 167 ## Modify packages via `packageOverrides` {#sec-modify-via-packageOverrides} 176 168 177 169 You can define a function called `packageOverrides` in your local `~/.config/nixpkgs/config.nix` to override Nix packages. It must be a function that takes pkgs as an argument and returns a modified set of packages. ··· 183 175 }; 184 176 } 185 177 ``` 178 + 179 + ## `config` Options Reference {#sec-config-options-reference} 180 + 181 + The following attributes can be passed in [`config`](#chap-packageconfig). 182 + 183 + ```{=docbook} 184 + <include xmlns="http://www.w3.org/2001/XInclude" href="../doc-support/result/config-options.docbook.xml"/> 185 + ``` 186 + 186 187 187 188 ## Declarative Package Management {#sec-declarative-package-management} 188 189
+3 -3
pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
··· 87 87 fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ]; 88 88 89 89 # Upstream source 90 - version = "11.0.13"; 90 + version = "11.0.14"; 91 91 92 92 lang = "en-US"; 93 93 ··· 98 98 "https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz" 99 99 "https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz" 100 100 ]; 101 - sha256 = "03pzwzgikc43pm0lga61jdzg46fanmvd1wsnb2xkq0y1ny8gsqfz"; 101 + sha256 = "19lsxdxbdismjrv2kmvm10cmr1x5klc2khlmrybycdw2vx7r41mn"; 102 102 }; 103 103 104 104 i686-linux = fetchurl { ··· 107 107 "https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz" 108 108 "https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz" 109 109 ]; 110 - sha256 = "0j8h2g404sagzjxnwf55n8hpvmwk52qhml98nyliajf1xg8v8k19"; 110 + sha256 = "0hkj4vn5jk3z32mdgzzwmhj5xa4mv5p1nnwqhlsbc3g5b5q8bc7q"; 111 111 }; 112 112 }; 113 113 in
+2 -2
pkgs/applications/office/homebank/default.nix
··· 3 3 4 4 stdenv.mkDerivation rec { 5 5 pname = "homebank"; 6 - version = "5.5.4"; 6 + version = "5.5.5"; 7 7 src = fetchurl { 8 8 url = "http://homebank.free.fr/public/homebank-${version}.tar.gz"; 9 - sha256 = "sha256-DQZpvKCZNArlwhPqE8srkyg7/IoOTPelkCwYKTZuV2U="; 9 + sha256 = "sha256-vs4F7LUjkhR0JKoeWheTiXd7gr9Gir69c+twsq+cnmc="; 10 10 }; 11 11 12 12 nativeBuildInputs = [ pkg-config wrapGAppsHook ];
+8 -14
pkgs/development/libraries/liblouis/default.nix
··· 1 1 { fetchFromGitHub 2 2 , lib 3 3 , stdenv 4 - , fetchpatch 5 4 , autoreconfHook 6 5 , pkg-config 7 6 , gettext ··· 14 13 15 14 stdenv.mkDerivation rec { 16 15 pname = "liblouis"; 17 - version = "3.21.0"; 16 + version = "3.22.0"; 17 + 18 + outputs = [ "out" "dev" "man" "info" "doc" ]; 18 19 19 20 src = fetchFromGitHub { 20 21 owner = "liblouis"; 21 22 repo = "liblouis"; 22 23 rev = "v${version}"; 23 - sha256 = "sha256-Hfn0dfXihtUfO3R+qJaetrPwupcIwblvi1DQdHCF1s8="; 24 + sha256 = "sha256-EI/uaHXe0NlqdEw764q0SjerThYEVLRogUlmrsZwXnY="; 24 25 }; 25 - 26 - patches = [ 27 - (fetchpatch { 28 - name = "parenthesize-memcpy-calls-clang.patch"; 29 - url = "https://github.com/liblouis/liblouis/commit/528f38938e9f539a251d9de92ad1c1b90401c4d0.patch"; 30 - sha256 = "0hlhqsvd5wflg70bd7bmssnchk8znzbr93in0zpspzbyap6xz112"; 31 - }) 32 - ]; 33 - 34 - outputs = [ "out" "dev" "man" "info" "doc" ]; 35 26 36 27 nativeBuildInputs = [ 37 28 autoreconfHook ··· 71 62 meta = with lib; { 72 63 description = "Open-source braille translator and back-translator"; 73 64 homepage = "http://liblouis.org/"; 74 - license = licenses.lgpl21; 65 + license = with licenses; [ 66 + lgpl21Plus # library 67 + gpl3Plus # tools 68 + ]; 75 69 maintainers = with maintainers; [ jtojnar ]; 76 70 platforms = platforms.unix; 77 71 };
+3 -3
pkgs/development/python-modules/atom/default.nix
··· 9 9 10 10 buildPythonPackage rec { 11 11 pname = "atom"; 12 - version = "0.8.0"; 12 + version = "0.8.1"; 13 13 format = "pyproject"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "nucleic"; 17 17 repo = pname; 18 - rev = version; 19 - hash = "sha256-Xby3QopKw7teShMi80RMG8YdhOOvfQb5vwOuFEUTxHQ="; 18 + rev = "refs/tags/${version}"; 19 + hash = "sha256-odthydKmgbOXYT8YAIn5MlFfH/BD8MMkuRYaiI8OZD4="; 20 20 }; 21 21 22 22 SETUPTOOLS_SCM_PRETEND_VERSION = version;
+3 -3
pkgs/development/python-modules/ghapi/default.nix
··· 9 9 10 10 buildPythonPackage rec { 11 11 pname = "ghapi"; 12 - version = "0.1.20"; 12 + version = "0.1.21"; 13 13 format = "setuptools"; 14 14 15 15 disabled = pythonOlder "3.8"; ··· 17 17 src = fetchFromGitHub { 18 18 owner = "fastai"; 19 19 repo = "ghapi"; 20 - rev = version; 21 - sha256 = "sha256-Pry+qCHCt+c+uwkLaoTVUY1KblESj6kcNtMfGwK1rfk="; 20 + rev = "refs/tags/${version}"; 21 + sha256 = "sha256-6VcsIcRhIHByd1aPZLIJ+g4o1einHpyJuSamwh1Ag5M="; 22 22 }; 23 23 24 24 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/peaqevcore/default.nix
··· 6 6 7 7 buildPythonPackage rec { 8 8 pname = "peaqevcore"; 9 - version = "1.0.11"; 9 + version = "1.0.14"; 10 10 format = "setuptools"; 11 11 12 12 disabled = pythonOlder "3.7"; 13 13 14 14 src = fetchPypi { 15 15 inherit pname version; 16 - hash = "sha256-cY2+H6FiojUEOHuA+wuIubtJKjNQlgten1edWgkoLb0="; 16 + hash = "sha256-zHVi950iUultt66amL22d/7INglJtSOHvWCPUSaw5h4="; 17 17 }; 18 18 19 19 postPatch = ''
+2 -2
pkgs/development/python-modules/pyroute2-core/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyroute2-core"; 10 - version = "0.6.11"; 10 + version = "0.6.12"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "pyroute2.core"; 17 17 inherit version; 18 - hash = "sha256-9Odxls1lje7pUCu0UkhfQIgbL2dOZQkiV1J/kgfgxGw="; 18 + hash = "sha256-uzb8nlAOHNtNq205/sJPoJtvMoo7uCFfrRQas/rv8p8="; 19 19 }; 20 20 21 21 # pyroute2 sub-modules have no tests
+2 -2
pkgs/development/python-modules/pyroute2-ethtool/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyroute2-ethtool"; 10 - version = "0.6.11"; 10 + version = "0.6.12"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "pyroute2.ethtool"; 17 17 inherit version; 18 - hash = "sha256-3xFsK50WtnRS8ImEWU4Hke9Ndp1Asm4wPEBfQT1rYXU="; 18 + hash = "sha256-MwIRm/DezL7yCN682Yckxd23+iri2V6HCokF4G36apU="; 19 19 }; 20 20 21 21 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyroute2-ipdb/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyroute2-ipdb"; 10 - version = "0.6.11"; 10 + version = "0.6.12"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "pyroute2.ipdb"; 17 17 inherit version; 18 - hash = "sha256-UTP5LuZbBukfDpQPJ+N5ZFtKGFJppZfpsISnsm9eabs="; 18 + hash = "sha256-hKh5SFFMdhECeMyA3Quzqp7h+iQMMmCYBJEuLEq5dVs="; 19 19 }; 20 20 21 21 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyroute2-ipset/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyroute2-ipset"; 10 - version = "0.6.11"; 10 + version = "0.6.12"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "pyroute2.ipset"; 17 17 inherit version; 18 - hash = "sha256-uIfclrm1tujUickd5R4uyDHvPExyC2M9mpm5NLF1rts="; 18 + hash = "sha256-nvj7b6HF/XhzqmFg6aOQKMFDEFwAcyOnoJXi/coNvG4="; 19 19 }; 20 20 21 21 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyroute2-ndb/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyroute2-ndb"; 10 - version = "0.6.11"; 10 + version = "0.6.12"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "pyroute2.ndb"; 17 17 inherit version; 18 - hash = "sha256-jz956VgO9Z9ZPlMQobB34wd04Og/XV7IP+J58htdk+Y="; 18 + hash = "sha256-Oc+uaqftRH6Dw3Sa2G1rZ3Mx2u81ErKIyz8xhnA1QgI="; 19 19 }; 20 20 21 21 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyroute2-nftables/default.nix
··· 6 6 7 7 buildPythonPackage rec { 8 8 pname = "pyroute2-nftables"; 9 - version = "0.6.11"; 9 + version = "0.6.12"; 10 10 11 11 src = fetchPypi { 12 12 pname = "pyroute2.nftables"; 13 13 inherit version; 14 - sha256 = "sha256-2SHAH4HBcXknCa2rdHk1s+ju+IN5ndcLPD8dgSGagqU="; 14 + sha256 = "sha256-jy04M73r49LxfbHAuDgSaoFWmkc0O/jPJwdDlW8YCSc="; 15 15 }; 16 16 17 17 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyroute2-nslink/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyroute2-nslink"; 10 - version = "0.6.11"; 10 + version = "0.6.12"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "pyroute2.nslink"; 17 17 inherit version; 18 - hash = "sha256-R94n1UEceOMmXXbCCkgq6N2JLnp2eqAW4qweIpNI2CI="; 18 + hash = "sha256-c66rD7CyHdyYACIiq1Nfu6rmUsIL9YmFp4Z1gxOFik4="; 19 19 }; 20 20 21 21 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyroute2-protocols/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "pyroute2-protocols"; 10 - version = "0.6.11"; 10 + version = "0.6.12"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 15 15 src = fetchPypi { 16 16 pname = "pyroute2.protocols"; 17 17 inherit version; 18 - hash = "sha256-AnmW9ILlcZh2mwO5fbhY4ZazWSAy2wHJgLp5Anlmxk4="; 18 + hash = "sha256-j83UNlQVjxIyKhOqDsx6yhvMZEfAh54gRjniacCpSxY="; 19 19 }; 20 20 21 21 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/pyroute2/default.nix
··· 15 15 16 16 buildPythonPackage rec { 17 17 pname = "pyroute2"; 18 - version = "0.6.11"; 18 + version = "0.6.12"; 19 19 format = "setuptools"; 20 20 21 21 disabled = pythonOlder "3.7"; 22 22 23 23 src = fetchPypi { 24 24 inherit pname version; 25 - hash = "sha256-E2NGvmbVUuRUHQZ52/+say4SN9/TnuGpUGL4UCRJF70="; 25 + hash = "sha256-cnUvmx9R+4oUGgf6LpbMlAadVh/EYcNX1ep88gtPTn4="; 26 26 }; 27 27 28 28 propagatedBuildInputs = [
+48 -28
pkgs/development/python-modules/social-auth-core/default.nix
··· 1 1 { lib 2 2 , buildPythonPackage 3 + , cryptography 4 + , defusedxml 3 5 , fetchFromGitHub 4 - , requests 6 + , httpretty 7 + , lxml 5 8 , oauthlib 6 - , requests-oauthlib 7 9 , pyjwt 8 - , cryptography 9 - , defusedxml 10 + , pytestCheckHook 11 + , python-jose 10 12 , python3-openid 11 - , python-jose 12 13 , python3-saml 13 - , pytestCheckHook 14 - , httpretty 14 + , pythonOlder 15 + , requests 16 + , requests-oauthlib 15 17 }: 16 18 17 19 buildPythonPackage rec { 18 20 pname = "social-auth-core"; 19 - version = "4.2.0"; 21 + version = "4.3.0"; 22 + format = "setuptools"; 23 + 24 + disabled = pythonOlder "3.7"; 20 25 21 26 src = fetchFromGitHub { 22 27 owner = "python-social-auth"; 23 28 repo = "social-core"; 24 - rev = version; 25 - sha256 = "sha256-kaL6sfAyQlzxszCEbhW7sns/mcOv0U+QgplmUd6oegQ="; 29 + rev = "refs/tags/${version}"; 30 + hash = "sha256-P9IWnu1/PWVNl/tZZ4bqz0WnruKu/jXASZBoaWXWeYI="; 26 31 }; 27 32 33 + propagatedBuildInputs = [ 34 + cryptography 35 + defusedxml 36 + oauthlib 37 + pyjwt 38 + python3-openid 39 + requests 40 + requests-oauthlib 41 + ]; 42 + 43 + passthru.optional-dependencies = { 44 + openidconnect = [ 45 + python-jose 46 + ]; 47 + saml = [ 48 + lxml 49 + python3-saml 50 + ]; 51 + azuread = [ 52 + cryptography 53 + ]; 54 + }; 55 + 56 + checkInputs = [ 57 + pytestCheckHook 58 + httpretty 59 + ] ++ passthru.optional-dependencies.openidconnect 60 + ++ passthru.optional-dependencies.saml 61 + ++ passthru.optional-dependencies.azuread; 62 + 28 63 # Disable checking the code coverage 29 64 prePatch = '' 30 65 substituteInPlace social_core/tests/requirements.txt \ ··· 35 70 --replace "{posargs:-v --cov=social_core}" "{posargs:-v}" 36 71 ''; 37 72 38 - propagatedBuildInputs = [ 39 - requests 40 - oauthlib 41 - requests-oauthlib 42 - pyjwt 43 - cryptography 44 - defusedxml 45 - python3-openid 46 - python-jose 47 - python3-saml 73 + pythonImportsCheck = [ 74 + "social_core" 48 75 ]; 49 76 50 - checkInputs = [ 51 - pytestCheckHook 52 - httpretty 53 - ]; 54 - 55 - pythonImportsCheck = [ "social_core" ]; 56 - 57 77 meta = with lib; { 78 + description = "Module for social authentication/registration mechanisms"; 58 79 homepage = "https://github.com/python-social-auth/social-core"; 59 - description = "Python Social Auth - Core"; 60 80 license = licenses.bsd3; 61 81 maintainers = with maintainers; [ n0emis ]; 62 82 };
+42 -22
pkgs/os-specific/linux/checksec/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub, makeWrapper, file, findutils 2 - , binutils-unwrapped, glibc, coreutils, sysctl, openssl 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + , makeWrapper 5 + , file 6 + , findutils 7 + , binutils-unwrapped 8 + , glibc 9 + , coreutils 10 + , sysctl 11 + , openssl 3 12 }: 4 13 5 14 stdenv.mkDerivation rec { 6 15 pname = "checksec"; 7 - version = "2.5.0"; 16 + version = "2.6.0"; 8 17 9 18 src = fetchFromGitHub { 10 19 owner = "slimm609"; 11 20 repo = "checksec.sh"; 12 21 rev = version; 13 - sha256 = "sha256-GxWXocz+GCEssRrIQP6E9hjVIhVh2EmZrefELxQlV1Q="; 22 + hash = "sha256-BWtchWXukIDSLJkFX8M/NZBvfi7vUE2j4yFfS0KEZDo="; 14 23 }; 15 24 16 - patches = [ ./0001-attempt-to-modprobe-config-before-checking-kernel.patch ]; 17 - nativeBuildInputs = [ makeWrapper ]; 25 + patches = [ 26 + ./0001-attempt-to-modprobe-config-before-checking-kernel.patch 27 + ]; 18 28 19 - installPhase = let 20 - path = lib.makeBinPath [ 21 - findutils file binutils-unwrapped sysctl openssl 22 - ]; 23 - in '' 24 - mkdir -p $out/bin 25 - install checksec $out/bin 26 - substituteInPlace $out/bin/checksec --replace /lib/libc.so.6 ${glibc.out}/lib/libc.so.6 27 - substituteInPlace $out/bin/checksec --replace "/usr/bin/id -" "${coreutils}/bin/id -" 28 - wrapProgram $out/bin/checksec \ 29 - --prefix PATH : ${path} 30 - ''; 29 + nativeBuildInputs = [ 30 + makeWrapper 31 + ]; 32 + 33 + installPhase = 34 + let 35 + path = lib.makeBinPath [ 36 + findutils 37 + file 38 + binutils-unwrapped 39 + sysctl 40 + openssl 41 + ]; 42 + in 43 + '' 44 + mkdir -p $out/bin 45 + install checksec $out/bin 46 + substituteInPlace $out/bin/checksec --replace /lib/libc.so.6 ${glibc.out}/lib/libc.so.6 47 + substituteInPlace $out/bin/checksec --replace "/usr/bin/id -" "${coreutils}/bin/id -" 48 + wrapProgram $out/bin/checksec \ 49 + --prefix PATH : ${path} 50 + ''; 31 51 32 52 meta = with lib; { 33 - description = "A tool for checking security bits on executables"; 34 - homepage = "https://www.trapkit.de/tools/checksec/"; 35 - license = licenses.bsd3; 36 - platforms = platforms.linux; 53 + description = "Tool for checking security bits on executables"; 54 + homepage = "https://www.trapkit.de/tools/checksec/"; 55 + license = licenses.bsd3; 56 + platforms = platforms.linux; 37 57 maintainers = with maintainers; [ thoughtpolice globin ]; 38 58 }; 39 59 }
+2 -2
pkgs/tools/security/hash-slinger/default.nix
··· 8 8 9 9 stdenv.mkDerivation rec { 10 10 pname = "hash-slinger"; 11 - version = "3.1"; 11 + version = "3.2"; 12 12 13 13 src = fetchFromGitHub { 14 14 owner = "letoams"; 15 15 repo = pname; 16 16 rev = version; 17 - sha256 = "sha256-mhMUdZt846QjwRIh2m/4EE+93fUcCKc2FFeoFpzKYvk="; 17 + sha256 = "sha256-PfOEGqPMGLixoqHENZnxOv9nK+dYMqe6P0k+ZiJMik0="; 18 18 }; 19 19 20 20 pythonPath = with python3.pkgs; [
+6 -3
pkgs/tools/security/haveged/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub }: 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + }: 2 5 3 6 stdenv.mkDerivation rec { 4 7 pname = "haveged"; 5 - version = "1.9.17"; 8 + version = "1.9.18"; 6 9 7 10 src = fetchFromGitHub { 8 11 owner = "jirka-h"; 9 12 repo = "haveged"; 10 13 rev = "v${version}"; 11 - sha256 = "sha256-uVl+TZVMsf+9aRATQndYMK4l4JfOBvstd1O2nTHyMYU="; 14 + hash = "sha256-fyL/J2A13ap582j4gdC8u63Ah67Old+BaO/CLyEeN/g="; 12 15 }; 13 16 14 17 strictDeps = true;
+40
pkgs/tools/security/ldapmonitor/default.nix
··· 1 + { lib 2 + , fetchFromGitHub 3 + , python3 4 + }: 5 + 6 + python3.pkgs.buildPythonApplication rec { 7 + pname = "ldapmonitor"; 8 + version = "1.3"; 9 + format = "other"; 10 + 11 + src = fetchFromGitHub { 12 + owner = "p0dalirius"; 13 + repo = pname; 14 + rev = version; 15 + hash = "sha256-lwTXvrnOVodCUQtR8FmCXiPuZ1Wx1ySfDKghpLXNuI4="; 16 + }; 17 + 18 + sourceRoot = "${src.name}/python"; 19 + 20 + propagatedBuildInputs = with python3.pkgs; [ 21 + impacket 22 + ldap 23 + ldap3 24 + ]; 25 + 26 + installPhase = '' 27 + runHook preInstall 28 + 29 + install -vD pyLDAPmonitor.py $out/bin/ldapmonitor 30 + 31 + runHook postInstall 32 + ''; 33 + 34 + meta = with lib; { 35 + description = "Tool to monitor creation, deletion and changes to LDAP objects"; 36 + homepage = "https://github.com/p0dalirius/LDAPmonitor"; 37 + license = with licenses; [ gpl3Only ]; 38 + maintainers = with maintainers; [ fab ]; 39 + }; 40 + }
+2
pkgs/top-level/all-packages.nix
··· 7951 7951 7952 7952 lcdf-typetools = callPackage ../tools/misc/lcdf-typetools { }; 7953 7953 7954 + ldapmonitor = callPackage ../tools/security/ldapmonitor { }; 7955 + 7954 7956 ldapvi = callPackage ../tools/misc/ldapvi { }; 7955 7957 7956 7958 ldeep = python3Packages.callPackage ../tools/security/ldeep { };