split gateware building into individual derivations

This commit is contained in:
Robin Appelman 2024-08-23 16:41:29 +02:00
commit 3e9035e7b5
3 changed files with 56 additions and 35 deletions

View file

@ -6,6 +6,7 @@ final: prev: {
apollo-cynthion = final.python-cynthion.pkgs.callPackage ./pkgs/cynthion/apollo-firmware.nix {board = "cynthion";}; apollo-cynthion = final.python-cynthion.pkgs.callPackage ./pkgs/cynthion/apollo-firmware.nix {board = "cynthion";};
cynthion = final.callPackage ./pkgs/cynthion {}; cynthion = final.callPackage ./pkgs/cynthion {};
cynthion-unwrapped = final.python-cynthion.pkgs.callPackage ./pkgs/cynthion/cynthion.nix {}; cynthion-unwrapped = final.python-cynthion.pkgs.callPackage ./pkgs/cynthion/cynthion.nix {};
cynthion-gateware-single = final.callPackage ./pkgs/cynthion/single-gateware.nix {};
cynthion-gateware = final.callPackage ./pkgs/cynthion/gateware.nix {}; cynthion-gateware = final.callPackage ./pkgs/cynthion/gateware.nix {};
cynthion-moondancer = final.callPackage ./pkgs/cynthion/moondancer-bin.nix {}; cynthion-moondancer = final.callPackage ./pkgs/cynthion/moondancer-bin.nix {};
cynthion-udev = final.callPackage ./pkgs/cynthion/udev.nix {}; cynthion-udev = final.callPackage ./pkgs/cynthion/udev.nix {};

View file

@ -1,39 +1,18 @@
{ {
stdenvNoCC, symlinkJoin,
cynthion-gateware-single,
cynthion-unwrapped, cynthion-unwrapped,
zsh, lib,
yosys,
nextpnr,
trellis,
... ...
}: }: let
stdenvNoCC.mkDerivation { inherit (lib) crossLists;
pname = "cynthion-gateware"; platformVersions = ["0D1" "0D2" "0D3" "0D4" "0D5" "0D6" "0D7" "1D0" "1D1" "1D2" "1D3" "1D4"];
inherit (cynthion-unwrapped) version src; bitstreams = ["analyzer" "selftest" "facedancer"];
dontFixup = true; gatewares = crossLists (platform: bitstream: (cynthion-gateware-single.override {
inherit bitstream;
nativeBuildInputs = [ platform = "CynthionPlatformRev${platform}";
cynthion-unwrapped })) [platformVersions bitstreams];
yosys in symlinkJoin {
nextpnr name = "cynthion-gateware-${cynthion-unwrapped.version}";
trellis paths = gatewares;
zsh
];
preBuild = ''
cd cynthion/python
'';
buildPhase = ''
runHook preBuild
make -j $NIX_BUILD_CORES SHELL=zsh bitstreams
runHook postBuild
'';
installPhase = ''
mkdir -p $out/share
cp -r assets $out/share
'';
} }

View file

@ -0,0 +1,41 @@
{
stdenvNoCC,
cynthion-unwrapped,
zsh,
yosys,
nextpnr,
trellis,
bitstream ? null,
platform ? null,
...
}: stdenvNoCC.mkDerivation {
pname = "cynthion-gateware-${bitstream}";
version = "${cynthion-unwrapped.version}-${platform}";
inherit (cynthion-unwrapped) src;
dontFixup = true;
nativeBuildInputs = [
cynthion-unwrapped
yosys
nextpnr
trellis
zsh
];
LUNA_PLATFORM = "cynthion.gateware.platform:${platform}";
buildPhase = ''
runHook preBuild
mkdir -p assets/${platform}
python -m cynthion.gateware.${bitstream}.top --dry-run --output assets/${platform}/${bitstream}.bit
runHook postBuild
'';
installPhase = ''
mkdir -p $out/share
cp -r assets $out/share
'';
}