33afbf39f6
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.
93 lines
2.4 KiB
Nix
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 ];
|
|
};
|
|
}
|