5e7c2d6cef
GitOrigin-RevId: f99e5f03cc0aa231ab5950a15ed02afec45ed51a
80 lines
2.1 KiB
Nix
80 lines
2.1 KiB
Nix
{ lib
|
|
, buildPythonApplication
|
|
, fetchFromGitHub
|
|
, click
|
|
, semantic-version
|
|
, requests
|
|
, colorama
|
|
, pyserial
|
|
, wheel
|
|
, scons
|
|
, setuptools
|
|
, tinyprog
|
|
, flit-core
|
|
, pytestCheckHook
|
|
}:
|
|
|
|
buildPythonApplication rec {
|
|
pname = "apio";
|
|
version = "0.8.1";
|
|
format = "pyproject";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "FPGAwars";
|
|
repo = "apio";
|
|
rev = "v${version}";
|
|
sha256 = "sha256-04qAGTzusMT3GsaRxDoXNJK1Mslzxu+ugQclBJx8xzE=";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace pyproject.toml \
|
|
--replace 'scons==4.2.0' 'scons' \
|
|
--replace '==' '>='
|
|
|
|
substituteInPlace apio/managers/scons.py --replace \
|
|
'return "tinyprog --libusb --program"' \
|
|
'return "${tinyprog}/bin/tinyprog --libusb --program"'
|
|
substituteInPlace apio/util.py --replace \
|
|
'_command = join(get_bin_dir(), "tinyprog")' \
|
|
'_command = "${tinyprog}/bin/tinyprog"'
|
|
|
|
# semantic-version seems to not support version numbers like the one of tinyprog in Nixpkgs (1.0.24.dev114+gxxxxxxx).
|
|
# See https://github.com/rbarrois/python-semanticversion/issues/47.
|
|
# This leads to an error like "Error: Invalid version string: '1.0.24.dev114+g97f6353'"
|
|
# when executing "apio upload" for a TinyFPGA.
|
|
# Replace the dot with a dash to work around this problem.
|
|
substituteInPlace apio/managers/scons.py --replace \
|
|
'version = semantic_version.Version(pkg_version)' \
|
|
'version = semantic_version.Version(pkg_version.replace(".dev", "-dev"))'
|
|
'';
|
|
|
|
nativeBuildInputs = [
|
|
flit-core
|
|
];
|
|
|
|
propagatedBuildInputs = [
|
|
click
|
|
semantic-version
|
|
requests
|
|
colorama
|
|
pyserial
|
|
wheel
|
|
scons
|
|
setuptools # needs pkg_resources at runtime (technically not needed when tinyprog is also in this list because of the propagatedBuildInputs of tinyprog)
|
|
|
|
tinyprog # needed for upload to TinyFPGA
|
|
];
|
|
|
|
nativeCheckInputs = [
|
|
pytestCheckHook
|
|
];
|
|
|
|
pytestFlagsArray = [ "--offline" ];
|
|
|
|
meta = with lib; {
|
|
description = "Open source ecosystem for open FPGA boards";
|
|
homepage = "https://github.com/FPGAwars/apio";
|
|
license = licenses.gpl2Only;
|
|
maintainers = with maintainers; [ Luflosi ];
|
|
};
|
|
}
|