diff --git a/pkgs/by-name/ag/aggregate6/package.nix b/pkgs/by-name/ag/aggregate6/package.nix new file mode 100644 index 0000000000000..c9a5c83e78bff --- /dev/null +++ b/pkgs/by-name/ag/aggregate6/package.nix @@ -0,0 +1,4 @@ +{ python3Packages }: + +with python3Packages; +toPythonApplication aggregate6 diff --git a/pkgs/by-name/ar/arouteserver/package.nix b/pkgs/by-name/ar/arouteserver/package.nix new file mode 100644 index 0000000000000..99c976e8ec71c --- /dev/null +++ b/pkgs/by-name/ar/arouteserver/package.nix @@ -0,0 +1,59 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + bgpq4, +}: + +python3Packages.buildPythonPackage rec { + pname = "arouteserver"; + version = "1.23.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "pierky"; + repo = "arouteserver"; + rev = "v${version}"; + hash = "sha256-EZOBMDBsxbuVzzjQWU8V4n3gcLkRQxCq2eVK/Tyko4E="; + }; + + postPatch = '' + substituteInPlace tests/static/test_irr_queries_failover.py --replace-fail 'bgpq4 -h' '${lib.getExe bgpq4} -h' + + substituteInPlace pierky/arouteserver/builder.py pierky/arouteserver/config/program.py tests/static/test_cfg_program.py \ + --replace-fail '"bgpq4"' '"${lib.getExe bgpq4}"' + ''; + + build-system = with python3Packages; [ setuptools ]; + + dependencies = with python3Packages; [ + aggregate6 + jinja2 + pyyaml + requests + packaging + urllib3 + setuptools + ]; + + nativeCheckInputs = with python3Packages; [ + pytestCheckHook + requests-mock + ]; + + pythonImportsCheck = [ + "pierky" + "pierky.arouteserver" + ]; + + pytestFlagsArray = [ "tests/static" ]; + + meta = { + description = "Automatically build (and test) feature-rich configurations for BGP route servers"; + mainProgram = "arouteserver"; + homepage = "https://github.com/pierky/arouteserver"; + changelog = "https://github.com/pierky/arouteserver/blob/v${version}/CHANGES.rst"; + license = with lib.licenses; [ gpl3Only ]; + maintainers = lib.teams.wdz.members ++ (with lib.maintainers; [ marcel ]); + }; +} diff --git a/pkgs/development/python-modules/aggregate6/0001-setup-remove-nose-coverage.patch b/pkgs/development/python-modules/aggregate6/0001-setup-remove-nose-coverage.patch new file mode 100644 index 0000000000000..feaddc4650321 --- /dev/null +++ b/pkgs/development/python-modules/aggregate6/0001-setup-remove-nose-coverage.patch @@ -0,0 +1,31 @@ +From d20c7039316ea7c76da86963b266d3c34001b9f7 Mon Sep 17 00:00:00 2001 +From: Marcel +Date: Sat, 2 Nov 2024 21:13:37 +0100 +Subject: [PATCH] setup: remove nose, coverage + +--- + setup.py | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/setup.py b/setup.py +index b880f27..7a47360 100644 +--- a/setup.py ++++ b/setup.py +@@ -70,7 +70,7 @@ setup( + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6' + ], +- setup_requires=["nose", "coverage", "mock"], ++ setup_requires=["mock"], + install_requires=["py-radix==0.10.0"] + ( + ["future", "ipaddress"] if sys.version_info.major == 2 else [] + ), +@@ -78,5 +78,4 @@ setup( + entry_points={'console_scripts': + ['aggregate6 = aggregate6.aggregate6:main']}, + data_files = [('man/man7', ['aggregate6.7'])], +- test_suite='nose.collector' + ) +-- +2.44.1 + diff --git a/pkgs/development/python-modules/aggregate6/default.nix b/pkgs/development/python-modules/aggregate6/default.nix new file mode 100644 index 0000000000000..2be5f07a85ac9 --- /dev/null +++ b/pkgs/development/python-modules/aggregate6/default.nix @@ -0,0 +1,48 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + py-radix-sr, + pytestCheckHook, + mock, +}: + +buildPythonPackage rec { + pname = "aggregate6"; + version = "1.0.12"; + pyproject = true; + + src = fetchFromGitHub { + owner = "job"; + repo = "aggregate6"; + rev = version; + hash = "sha256-tBo9LSmEu/0KPSeg17dlh7ngUvP9GyW6b01qqpr5Bx0="; + }; + + patches = [ ./0001-setup-remove-nose-coverage.patch ]; + + # py-radix-sr is a fork, with fixes + postPatch = '' + substituteInPlace setup.py --replace-fail 'py-radix==0.10.0' 'py-radix-sr' + ''; + + build-system = [ setuptools ]; + + dependencies = [ py-radix-sr ]; + + nativeCheckInputs = [ + pytestCheckHook + mock + ]; + + pythonImportsCheck = [ "aggregate6" ]; + + meta = { + description = "IPv4 and IPv6 prefix aggregation tool"; + mainProgram = "aggregate6"; + homepage = "https://github.com/job/aggregate6"; + license = with lib.licenses; [ bsd2 ]; + maintainers = lib.teams.wdz.members ++ (with lib.maintainers; [ marcel ]); + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8bcd85ca9ae3a..429832b1dfa2a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -123,6 +123,8 @@ self: super: with self; { agent-py = callPackage ../development/python-modules/agent-py { }; + aggregate6 = callPackage ../development/python-modules/aggregate6 { }; + ago = callPackage ../development/python-modules/ago { }; aggdraw = callPackage ../development/python-modules/aggdraw { };