about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/networking/ripe-atlas-tools/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/networking/ripe-atlas-tools/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/networking/ripe-atlas-tools/default.nix97
1 files changed, 97 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/networking/ripe-atlas-tools/default.nix b/nixpkgs/pkgs/tools/networking/ripe-atlas-tools/default.nix
new file mode 100644
index 000000000000..0fc3897b8780
--- /dev/null
+++ b/nixpkgs/pkgs/tools/networking/ripe-atlas-tools/default.nix
@@ -0,0 +1,97 @@
+{ lib
+, python3
+, fetchFromGitHub
+, installShellFiles
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "ripe-atlas-tools";
+  version = "3.1.0";
+
+  src = fetchFromGitHub {
+    owner = "RIPE-NCC";
+    repo = "ripe-atlas-tools";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-aETSDXCVteTruRKV/8Aw3R/bprB6txOsXrFvoZOxIus=";
+  };
+
+  postPatch = ''
+    # This mapping triggers network access on docs generation: https://github.com/RIPE-NCC/ripe-atlas-tools/issues/235
+    sed -i '/^intersphinx_mapping/d' docs/conf.py
+    # TODO: Ensure user-agent is picked up during build, remove me when https://github.com/RIPE-NCC/ripe-atlas-tools/pull/236
+    echo "include ripe/atlas/tools/user-agent" >> MANIFEST.in
+  '';
+
+  nativeBuildInputs = with python3.pkgs; [
+    sphinx-rtd-theme
+    sphinxHook
+    installShellFiles
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    ipy
+    pyopenssl
+    python-dateutil
+    pyyaml
+    requests
+    ripe-atlas-cousteau
+    ripe-atlas-sagan
+    typing-extensions
+    tzlocal
+    ujson
+  ];
+
+  preBuild = ''
+    echo "RIPE Atlas Tools [NixOS ${version}" > ripe/atlas/tools/user-agent
+  '';
+
+  postInstall = ''
+    installShellCompletion --cmd ripe-atlas --bash ./ripe-atlas-bash-completion.sh
+  '';
+
+  pythonImportsCheck = [
+    "ripe.atlas.tools"
+  ];
+
+  nativeCheckInputs = with python3.pkgs; [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Network tests: https://github.com/RIPE-NCC/ripe-atlas-tools/issues/234
+    "test_arg_from_file"
+    "test_arg_from_stdin"
+    # We injected our user-agent so the tests will fail
+    "test_user_agent_mac"
+    "test_user_agent_windows"
+    "test_user_agent_xdg_absent"
+    "test_user_agent_xdg_present"
+  ];
+
+  disabledTestPaths = [
+    # Relies on `ripe-atlas` being available in the PATH, installed with autocompletions
+    "tests/test_bash_completion.py"
+    # AS lookups are not mocked up: https://github.com/RIPE-NCC/ripe-atlas-tools/blob/master/tests/renderers/test_traceroute_aspath.py#L26
+    "tests/renderers/test_traceroute_aspath.py"
+    # We already build Sphinx so we do not need to test it
+    "tests/test_docs.py"
+  ];
+
+  HOME = "$TMPDIR"; # for cache generation.
+
+  # Necessary because it confuse the tests when it does "from ripe.atlas.sagan import X"
+  # version.py is used by Sphinx tests.
+  preCheck = ''
+    rm -rf ripe
+    mkdir -p ripe/atlas/tools
+    echo "__version__ = \"${version}\"" > ripe/atlas/tools/version.py
+  '';
+
+  meta = with lib; {
+    description = "RIPE ATLAS project tools";
+    homepage = "https://github.com/RIPE-NCC/ripe-atlas-tools";
+    changelog = "https://github.com/RIPE-NCC/ripe-atlas-tools/blob/v${version}/CHANGES.rst";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ raitobezarius ];
+  };
+}