60 lines
1.5 KiB
Nix
60 lines
1.5 KiB
Nix
{
|
|
lib,
|
|
fetchFromGitHub,
|
|
buildPythonPackage,
|
|
|
|
# build-system
|
|
setuptools,
|
|
|
|
# dependencies
|
|
luna-usb,
|
|
}:
|
|
|
|
buildPythonPackage rec {
|
|
pname = "luna-soc";
|
|
version = "0.3.2";
|
|
pyproject = true;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "greatscottgadgets";
|
|
repo = "luna-soc";
|
|
tag = version;
|
|
hash = "sha256-Rks1wC0CR5FSu4TrE1thzolT3QBd0yh7q+SxZ1U+pB4=";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace pyproject.toml \
|
|
--replace-fail '"setuptools-git-versioning<2"' "" \
|
|
--replace-fail 'dynamic = ["version"]' 'version = "${version}"'
|
|
|
|
# Read CSR field annotations from the class, not the instance, so amaranth-soc
|
|
# works on Python 3.14 (PEP 649). https://github.com/greatscottgadgets/luna-soc/issues/48
|
|
substituteInPlace luna_soc/gateware/vendor/amaranth_soc/csr/reg.py \
|
|
--replace-fail 'if hasattr(self, "__annotations__"):' \
|
|
'if getattr(type(self), "__annotations__", None):' \
|
|
--replace-fail 'filter_fields(self.__annotations__)' \
|
|
'filter_fields(type(self).__annotations__)'
|
|
'';
|
|
|
|
build-system = [
|
|
setuptools
|
|
];
|
|
|
|
dependencies = [ luna-usb ];
|
|
|
|
# has no tests
|
|
doCheck = false;
|
|
|
|
pythonImportsCheck = [
|
|
"luna_soc"
|
|
];
|
|
|
|
meta = {
|
|
changelog = "https://github.com/greatscottgadgets/luna-soc/releases/tag/${src.tag}";
|
|
description = "Amaranth HDL library for building USB-capable SoC designs";
|
|
homepage = "https://github.com/greatscottgadgets/luna-soc";
|
|
license = lib.licenses.bsd3;
|
|
maintainers = with lib.maintainers; [ carlossless ];
|
|
};
|
|
}
|