Browse Source

clean up bitstream build

Also make the development shell a more ergonomic regular nix-shell instead of the FHS env shell.
pull/30/head
parent
commit
3fe5ce25c5
  1. 20
      artiq/artiq-board.nix
  2. 35
      artiq/artiq-dev.nix
  3. 8
      artiq/pkgs/python-deps.nix
  4. 17
      artiq/shell-dev.nix
  5. 24
      artiq/vivado.nix

20
artiq/artiq-board.nix

@ -8,10 +8,10 @@
, extraInstallCommands ? ""}:
let
artiqSrc = import ./pkgs/artiq-src.nix { fetchgit = pkgs.fetchgit; };
fetchcargo = import ./fetchcargo.nix {
inherit (pkgs) stdenv cacert git cargo cargo-vendor;
};
artiqSrc = import ./pkgs/artiq-src.nix { fetchgit = pkgs.fetchgit; };
cargoDeps = fetchcargo rec {
name = "artiq-firmware-cargo-deps";
src = "${artiqSrc}/artiq/firmware";
@ -42,15 +42,27 @@ let
'';
};
buildenv = import ./artiq-dev.nix { inherit pkgs; };
vivado = import ./vivado.nix { inherit pkgs; };
artiqpkgs = import ./default.nix { inherit pkgs; };
in pkgs.python3Packages.buildPythonPackage rec {
in pkgs.stdenv.mkDerivation rec {
name = "artiq-board-${target}-${variant}-${version}";
version = import ./pkgs/artiq-version.nix (with pkgs; { inherit stdenv fetchgit git; });
phases = [ "buildPhase" "installCheckPhase" "installPhase" ];
buildInputs = [
vivado
pkgs.gnumake
(pkgs.python3.withPackages(ps: with ps; [ jinja2 numpy artiqpkgs.migen artiqpkgs.microscope artiqpkgs.misoc artiqpkgs.jesd204b artiqpkgs.artiq ]))
pkgs.cargo
artiqpkgs.rustc
artiqpkgs.binutils-or1k
artiqpkgs.llvm-or1k
];
buildPhase =
''
${buildenv}/bin/artiq-dev -c "export CARGO_HOME=${cargoVendored}; ${buildCommand}"
export CARGO_HOME=${cargoVendored}
export TARGET_AR=or1k-linux-ar
${buildCommand}
'';
checkPhase = ''
# Search for PCREs in the Vivado output to check for errors

35
artiq/artiq-dev.nix

@ -1,35 +0,0 @@
{ pkgs }:
let
artiqpkgs = import ./default.nix { inherit pkgs; };
in
pkgs.buildFHSUserEnv {
name = "artiq-dev";
targetPkgs = pkgs: (
with pkgs; [
ncurses5
gnumake
zlib
libuuid
xorg.libSM
xorg.libICE
xorg.libXrender
xorg.libX11
xorg.libXext
xorg.libXtst
xorg.libXi
(python3.withPackages(ps: with ps; [ jinja2 numpy paramiko artiqpkgs.migen artiqpkgs.microscope artiqpkgs.misoc artiqpkgs.jesd204b artiqpkgs.artiq ]))
git
cargo
] ++
(with artiqpkgs; [
rustc
binutils-or1k
llvm-or1k
openocd
])
);
profile = ''
export TARGET_AR=${artiqpkgs.binutils-or1k}/bin/or1k-linux-ar
'';
}

8
artiq/pkgs/python-deps.nix

@ -83,8 +83,8 @@ rec {
src = fetchFromGitHub {
owner = "m-labs";
repo = "misoc";
rev = "6e9c1a894312a81b534482949cbfc5f47842edd9";
sha256 = "0y4jh60bmpzzh06k2gzxl3pqzbvvg8ipz029hvmi8d05hzf4kcf3";
rev = "ba816951606d5463d3d2df9fcc6e143b17b3a8a8";
sha256 = "06f2fgp46cgkwgjwdlppl73d8c1k960xm5niq96z647lsblj2d16";
fetchSubmodules = true;
};
@ -107,8 +107,8 @@ rec {
src = fetchFromGitHub {
owner = "m-labs";
repo = "migen";
rev = "5c5486ba9900b1a89a405f4b063dd7faf0e59a4a";
sha256 = "116c5sc8814xmbb99h7sd0j42qak0b5xpl4276lyi2ap4swmxd4h";
rev = "caab41469f5a0cb4014bc00a03898a0b76b00dd1";
sha256 = "06zbbbjzlbyq2nlp13hyk8diw06zrffc37n4b6cxzk1i2aq8g83m";
};
propagatedBuildInputs = with python3Packages; [ colorama sphinx sphinx_rtd_theme ];

17
artiq/shell-dev.nix

@ -1,6 +1,19 @@
{ pkgs ? import <nixpkgs> {}}:
let
artiq-dev = import ./artiq-dev.nix { inherit pkgs; };
artiqpkgs = import ./default.nix { inherit pkgs; };
vivado = import ./vivado.nix { inherit pkgs; };
in
artiq-dev.env
pkgs.mkShell {
buildInputs = [
vivado
pkgs.gnumake
(pkgs.python3.withPackages(ps: with ps; [ jinja2 numpy paramiko artiqpkgs.migen artiqpkgs.microscope artiqpkgs.misoc artiqpkgs.jesd204b artiqpkgs.artiq ]))
pkgs.cargo
artiqpkgs.rustc
artiqpkgs.binutils-or1k
artiqpkgs.llvm-or1k
artiqpkgs.openocd
];
TARGET_AR="or1k-linux-ar";
}

24
artiq/vivado.nix

@ -0,0 +1,24 @@
# Install Vivado in /opt and add to /etc/nixos/configuration.nix:
# nix.sandboxPaths = ["/opt"];
{ pkgs, vivadoPath ? "/opt/Xilinx/Vivado/2019.1" }:
pkgs.buildFHSUserEnv {
name = "vivado";
targetPkgs = pkgs: (
with pkgs; [
ncurses5
zlib
libuuid
xorg.libSM
xorg.libICE
xorg.libXrender
xorg.libX11
xorg.libXext
xorg.libXtst
xorg.libXi
]
);
profile = "source ${vivadoPath}/settings64.sh";
runScript = "vivado";
}
Loading…
Cancel
Save