nixpkgs/pkgs/tools/networking/ripe-atlas-tools/default.nix

97 lines
2.7 KiB
Nix

{ 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 ];
};
}