Files
nixpkgs/pkgs/development/python-modules/amaranth/default.nix
T
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

93 lines
2.4 KiB
Nix

{ lib
, buildPythonPackage
, pythonOlder
, fetchFromGitHub
, fetchpatch
, setuptools
, setuptools-scm
, pyvcd
, jinja2
, importlib-resources
, importlib-metadata
, git
# for tests
, pytestCheckHook
, symbiyosys
, yices
, yosys
}:
buildPythonPackage rec {
pname = "amaranth";
version = "0.3";
# python setup.py --version
realVersion = "0.3";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "amaranth-lang";
repo = "amaranth";
rev = "39a83f4d995d16364cc9b99da646ff8db6394166";
sha256 = "P9AG3t30eGeeCN5+t7mjhRoOWIGZVzWQji9eYXphjA0=";
};
patches = [
(fetchpatch {
name = "fix-for-setuptools-64.0.2-preparation.patch";
url = "https://github.com/amaranth-lang/amaranth/commit/64771a065a280fa683c1e6692383bec4f59f20fa.patch";
hash = "sha256-Rsh9vVvUQj9nIcrsRirmR6XwFrfZ2VMaYJ4RCQ8sBE0=";
# This commit removes support for Python 3.6, which is unnecessary to fix
# the build when using new setuptools. Include only one file, which has a
# harmless comment change so that the subsequent patch applies cleanly.
includes = ["amaranth/_toolchain/cxx.py"];
})
(fetchpatch {
name = "fix-for-setuptools-64.0.2.patch";
url = "https://github.com/amaranth-lang/amaranth/pull/722/commits/e5a56b07c568e5f4cc2603eefebd14c5cc4e13d8.patch";
hash = "sha256-C8FyMSKHA7XsEMpO9eYNZx/X5rGaK7p3eXP+jSb6wVg=";
})
];
SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}";
nativeBuildInputs = [
git
setuptools-scm
];
propagatedBuildInputs = [
jinja2
pyvcd
setuptools
] ++
lib.optional (pythonOlder "3.9") importlib-resources ++
lib.optional (pythonOlder "3.8") importlib-metadata;
nativeCheckInputs = [
pytestCheckHook
symbiyosys
yices
yosys
];
postPatch = ''
substituteInPlace setup.py \
--replace "Jinja2~=2.11" "Jinja2>=2.11" \
--replace "pyvcd~=0.2.2" "pyvcd"
# jinja2.contextfunction was removed in jinja2 v3.1
substituteInPlace amaranth/build/plat.py \
--replace "@jinja2.contextfunction" "@jinja2.pass_context"
'';
pythonImportsCheck = [ "amaranth" ];
meta = with lib; {
description = "A modern hardware definition language and toolchain based on Python";
homepage = "https://amaranth-lang.org/docs/amaranth";
license = licenses.bsd2;
maintainers = with maintainers; [ emily thoughtpolice ];
};
}