add our own packages to nix environment

master
Ada 2022-02-23 19:06:04 -07:00
parent bbb883ed82
commit be6b907eea
4 changed files with 127 additions and 45 deletions

View File

@ -4,7 +4,6 @@ let
artiq6 = pkgs.lib.strings.versionAtLeast mainPackages.artiq.version "6.0";
artiq7 = pkgs.lib.strings.versionAtLeast mainPackages.artiq.version "7.0";
pythonDeps = import ./pkgs/python-deps.nix { inherit (pkgs) lib fetchgit fetchFromGitHub python3Packages; misoc-new = artiq7; };
rustPlatform = import ./rust-platform.nix { inherit pkgs; };
boards = [
{ target = "kasli"; variant = "tester"; }
@ -12,7 +11,7 @@ let
];
boardPackages = pkgs.lib.lists.foldr (board: start:
let
boardBinaries = import ./artiq-board.nix { inherit pkgs rustPlatform; } {
boardBinaries = import ./artiq-board.nix { inherit pkgs; } {
target = board.target;
variant = board.variant;
};
@ -22,22 +21,20 @@ let
}) {} boards;
mainPackages = rec {
inherit (pythonDeps) sipyco asyncserial pythonparser artiq-netboot misoc migen microscope jesd204b migen-axi lit outputcheck qasync;
inherit (pythonDeps) sipyco artiq_tools asyncserial pythonparser artiq-netboot misoc migen microscope jesd204b migen-axi lit outputcheck qasync pyqtgraph;
binutils-or1k = callPackage ./pkgs/binutils.nix { platform = "or1k"; target = "or1k-linux"; };
binutils-arm = callPackage ./pkgs/binutils.nix { platform = "arm"; target = "armv7-unknown-linux-gnueabihf"; };
llvm-or1k = callPackage ./pkgs/llvm-or1k.nix {};
rustc-legacy = callPackage ./pkgs/rust-legacy/rustc-with-crates.nix
rustc = callPackage ./pkgs/rust/rustc-with-crates.nix
((lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}) //
{ inherit llvm-or1k; });
rustc = if artiq7 then rustPlatform.rust.rustc else rustc-legacy;
cargo-legacy = callPackage ./pkgs/rust-legacy/cargo.nix { inherit rustc; rustPlatform = rustPackages_1_45.rustPlatform; };
cargo-vendor-legacy = callPackage ./pkgs/rust-legacy/cargo-vendor.nix {};
cargo = callPackage ./pkgs/rust/cargo.nix { inherit rustc; rustPlatform = rustPackages_1_45.rustPlatform; };
cargo-vendor = callPackage ./pkgs/rust/cargo-vendor.nix {};
llvmlite-artiq = callPackage ./pkgs/llvmlite-artiq.nix { inherit llvm-or1k; };
llvmlite-llvm11 = callPackage ./pkgs/llvmlite-llvm11.nix { };
libartiq-support = callPackage ./pkgs/libartiq-support.nix { inherit rustc; };
artiq = callPackage ./pkgs/artiq.nix { inherit pythonDeps binutils-or1k binutils-arm llvm-or1k llvmlite-artiq llvmlite-llvm11 libartiq-support lit outputcheck; };
artiq = callPackage ./pkgs/artiq.nix { inherit pythonDeps binutils-or1k binutils-arm llvm-or1k llvmlite-artiq libartiq-support lit outputcheck; };
artiq-env = (pkgs.python3.withPackages(ps: [ artiq ])).overrideAttrs (oldAttrs: { name = "${pkgs.python3.name}-artiq-env-${artiq.version}"; });
openocd = callPackage ./pkgs/openocd.nix { };
};
@ -77,6 +74,14 @@ let
inherit (pythonDeps.qasync) version src;
};
};
conda-pyqtgraph = import ./conda/build.nix { inherit pkgs; } {
pname = "conda-pyqtgraph";
inherit (pythonDeps.pyqtgraph) version;
src = import ./conda/fake-source.nix { inherit pkgs; } {
name = "pyqtgraph";
inherit (pythonDeps.pyqtgraph) version src;
};
};
conda-bscan-spi-bitstreams = import ./conda/bscan-spi-bitstreams.nix {
inherit pkgs;
bscan_spi_bitstreams = "${mainPackages.openocd}/share/bscan-spi-bitstreams";
@ -93,13 +98,7 @@ let
};
};
condaLinux = if artiq7 then ({
# ARTIQ-7 uses upstream conda-forge packages except llvmlite
conda-llvmlite = import ./conda/llvmlite-patched.nix {
inherit pkgs;
inherit (mainPackages.llvmlite-llvm11) src;
};
}) else (rec {
condaLinux = rec {
conda-binutils-or1k = import ./conda/binutils.nix {
inherit pkgs;
inherit (mainPackages.binutils-or1k) version src;
@ -119,9 +118,9 @@ let
inherit pkgs conda-llvm-or1k;
inherit (mainPackages.llvmlite-artiq) version src;
};
});
};
condaWindows5 = {
condaWindowsLegacy = {
conda-windows-binutils-or1k = import ./conda-windows/redistribute.nix {
inherit pkgs;
name = "binutils-or1k";
@ -145,7 +144,7 @@ let
};
};
condaWindows6 = rec {
condaWindowsExperimental = rec {
conda-windows-binutils-or1k = import ./conda-windows/binutils.nix {
inherit pkgs;
inherit (mainPackages.binutils-or1k) version src;
@ -167,6 +166,6 @@ let
};
};
condaWindows = if artiq6 then (if artiq7 then {} else condaWindows6) else condaWindows5;
condaWindows = if artiq6 then condaWindowsExperimental else condaWindowsLegacy;
in
boardPackages // mainPackages // condaNoarch // condaLinux // condaWindows

View File

@ -1,6 +1,4 @@
{ stdenv, lib, pythonDeps, fetchgit, git, python3Packages, qt5, libartiq-support, lit, outputcheck, fontconfig,
binutils-or1k, binutils-arm, llvm-or1k, llvmlite-artiq,
llvm_11, lld_11, llvmlite-llvm11 }:
{ stdenv, lib, pythonDeps, fetchgit, git, python3Packages, qt5, binutils-or1k, binutils-arm, llvm-or1k, llvmlite-artiq, libartiq-support, lit, outputcheck, fontconfig }:
python3Packages.buildPythonPackage rec {
pname = "artiq";
@ -10,12 +8,10 @@ python3Packages.buildPythonPackage rec {
preBuild = "export VERSIONEER_OVERRIDE=${version}";
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
propagatedBuildInputs = [ ]
++ (lib.lists.optionals (!lib.strings.versionAtLeast version "7.0") [ binutils-or1k llvm-or1k llvmlite-artiq ])
++ (lib.lists.optionals (lib.strings.versionAtLeast version "7.0") [ llvm_11 lld_11 llvmlite-llvm11 ])
++ (lib.lists.optionals (lib.strings.versionAtLeast version "6.0" && !lib.strings.versionAtLeast version "7.0") [ binutils-arm ])
++ (with pythonDeps; [ sipyco pythonparser ])
++ (with python3Packages; [ pygit2 numpy dateutil scipy prettytable pyserial python-Levenshtein h5py pyqt5 pyqtgraph ])
propagatedBuildInputs = [ binutils-or1k llvm-or1k llvmlite-artiq ]
++ (lib.lists.optionals (lib.strings.versionAtLeast version "6.0") [ binutils-arm ])
++ (with pythonDeps; [ sipyco pythonparser pyqtgraph])
++ (with python3Packages; [ pygit2 numpy dateutil scipy prettytable pyserial python-Levenshtein h5py pyqt5 ])
++ [(if (lib.strings.versionAtLeast version "6.0") then pythonDeps.qasync else python3Packages.quamash)];
dontWrapQtApps = true;
@ -32,14 +28,14 @@ python3Packages.buildPythonPackage rec {
"--set FONTCONFIG_FILE ${fontconfig.out}/etc/fonts/fonts.conf"
];
checkInputs = [ lit outputcheck ] ++ (if (lib.strings.versionAtLeast version "7.0") then [ lld_11 llvm_11 ] else [ binutils-or1k ]);
checkInputs = [ binutils-or1k outputcheck ];
checkPhase =
''
python -m unittest discover -v artiq.test
TESTDIR=`mktemp -d`
cp --no-preserve=mode,ownership -R $src/artiq/test/lit $TESTDIR
LIBARTIQ_SUPPORT=${libartiq-support}/libartiq_support.so lit -v $TESTDIR/lit
cp --no-preserve=mode,ownership -R ${src}/artiq/test/lit $TESTDIR
LIBARTIQ_SUPPORT=${libartiq-support}/libartiq_support.so ${lit}/bin/lit -v $TESTDIR/lit
'';

View File

@ -14,6 +14,13 @@ rec {
propagatedBuildInputs = with python3Packages; [ numpy ];
};
artiq_tools = python3Packages.buildPythonPackage rec {
pname = "artiq_tools";
version = "0.2";
src = /home/thomp/scratch/artiq_tools;
propagatedBuildInputs = with python3Packages; [ numpy typing ];
};
asyncserial = python3Packages.buildPythonPackage rec {
pname = "asyncserial";
version = "0.1";
@ -57,6 +64,20 @@ rec {
'';
};
pyqtgraph = python3Packages.buildPythonPackage rec {
pname = "pyqtgraph";
version = "0.12.3";
src = fetchFromGitHub {
rev = "123717df28ee91c0472ce939175c1b14bc1e4364";
owner = "jkthompsonlab";
repo = "pyqtgraph";
sha256 = "sha256-8RO2rl0/isS2/Ad5oAcuvaabg/wSoXGsL3PJdmGCfk4=";
};
propagatedBuildInputs = with python3Packages; [ numpy setuptools ];
doCheck = false;
};
# Development/firmware dependencies
artiq-netboot = python3Packages.buildPythonPackage rec {
pname = "artiq-netboot";
@ -71,14 +92,14 @@ rec {
misoc = python3Packages.buildPythonPackage {
pname = "misoc";
version = if misoc-new then "unstable-2021-10-10" else "unstable-2021-02-15";
version = if misoc-new then "unstable-2021-09-10" else "unstable-2021-02-15";
src = if misoc-new
then (fetchFromGitHub {
owner = "m-labs";
repo = "misoc";
rev = "f5203e406520874e15ab5d070058ef642fc57fd9";
sha256 = "sha256-/2XTejqj0Bo81HaTrlTSWwInnWwsuqnq+CURXbpIrkA=";
rev = "c9572e777febf7abcfbebf624e0323d82600f267";
sha256 = "sha256-dal999XLFvS8Ol1hZnQjx7q/UfAXkzSMhAWcZKCDPx4=";
fetchSubmodules = true;
})
else (fetchFromGitHub {
@ -104,13 +125,13 @@ rec {
migen = python3Packages.buildPythonPackage rec {
pname = "migen";
version = "unstable-2021-12-16";
version = "unstable-2021-08-10";
src = fetchFromGitHub {
owner = "m-labs";
repo = "migen";
rev = "ac703010eaa06ac9b6e32f97c6fa98b15de22b31";
sha256 = "sha256-qpVj/yJf4hDDc99XXpVPH4EbLC8aCmEtACn5qNc3DGI=";
rev = "27dbf03edd75c32dc1706e2a1316950c3a8d452a";
sha256 = "0c7c7bbc05cb8xvxd612cxr7mvsxhaim0apfh7ax32wi9ykpl1ad";
};
propagatedBuildInputs = with python3Packages; [ colorama ];
@ -213,13 +234,13 @@ rec {
migen-axi = python3Packages.buildPythonPackage {
pname = "migen-axi";
version = "unstable-2021-09-15";
version = "unstable-2021-08-23";
src = fetchFromGitHub {
owner = "peteut";
repo = "migen-axi";
rev = "9763505ee96acd7572280a2d1233721342dc7c3f";
sha256 = "15c7g05n183rka66fl1glzp6h7xjlpy1p6k8biry24dangsmxmvg";
rev = "1f94ee0fc847dad118020bfc8c6a8f26ed9958bd";
sha256 = "0bk4g8k7cng8na01p7h6llrfpjkmxsamyi1kacvk3n110l2kl93g";
};
nativeBuildInputs = [ python3Packages.pbr ];
@ -227,7 +248,7 @@ rec {
postPatch = ''
substituteInPlace requirements.txt \
--replace "jinja2==2.11.3" "jinja2"
--replace "jinja2==2.10.3" "jinja2"
substituteInPlace requirements.txt \
--replace "future==0.18.2" "future"
substituteInPlace requirements.txt \

View File

@ -1,21 +1,87 @@
{ pkgs ? import <nixpkgs> {}}:
with import <nixpkgs> {};
let
set-scratch-dir = ./set-scratch-dir.sh;
artiqpkgs = import ./default.nix { inherit pkgs; };
vivado = import ./vivado.nix { inherit pkgs; };
sipyco = python3Packages.buildPythonPackage rec {
pname = "sipyco";
version = "0.1";
src = /home/thomp/scratch/sipyco;
propagatedBuildInputs = [ pkgs.python3Packages.statsmodels ];
doCheck = false;
};
artiq_tools = python3Packages.buildPythonPackage rec {
pname = "artiq_tools";
version = "0.2";
src = /home/thomp/scratch/artiq_tools;
propagatedBuildInputs = [ pkgs.python3Packages.numpy pkgs.python3Packages.typing artiqpkgs.artiq pkgs.python3Packages.pyzmq pkgs.python3Packages.matplotlib];
};
oitg = python3Packages.buildPythonPackage rec {
pname = "oitg";
version = "0.1";
src = /home/thomp/scratch/oitg;
propagatedBuildInputs = [ pkgs.python3Packages.statsmodels ];
doCheck = false;
};
python_library = python3Packages.buildPythonPackage rec {
pname = "python_library";
version = "0.1";
src = /home/thomp/scratch/python-library;
propagatedBuildInputs = [ pkgs.python3Packages.numpy pkgs.python3Packages.scipy pkgs.python3Packages.matplotlib ];
};
strontium_library = python3Packages.buildPythonPackage rec {
pname = "strontium_library";
version = "0.1";
src = /home/thomp/scratch/strontium-library;
propagatedBuildInputs = [ pkgs.python3Packages.numpy pkgs.python3Packages.scipy pkgs.python3Packages.matplotlib pkgs.python3Packages.influxdb];
};
ndscan = python3Packages.buildPythonPackage rec {
pname = "ndscan";
version = "0.1";
src = /home/thomp/scratch/ndscan;
propagatedBuildInputs = [ artiqpkgs.artiq oitg];
doCheck = false;
};
analysis_library = python3Packages.buildPythonPackage rec {
pname = "analysis_library";
version = "0.1";
src = /home/thomp/scratch/analysis-library;
propagatedBuildInputs = [ pkgs.python3Packages.h5py pkgs.python3Packages.matplotlib pkgs.python3Packages.scipy pkgs.python3Packages.numpy python_library strontium_library pkgs.python3Packages.uncertainties];
doCheck = false;
};
in
assert pkgs.lib.asserts.assertMsg (!pkgs.lib.strings.versionAtLeast artiqpkgs.artiq.version "7.0") "For ARTIQ 7+, use 'nix develop' on the flake instead.";
pkgs.mkShell {
buildInputs = [
vivado
sipyco
artiq_tools
analysis_library
python_library
strontium_library
ndscan
pkgs.gnumake
(pkgs.python3.withPackages(ps: (with ps; [ jinja2 jsonschema numpy paramiko ]) ++ (with artiqpkgs; [ migen microscope misoc jesd204b migen-axi artiq ])))
artiqpkgs.cargo-legacy
artiqpkgs.rustc-legacy
artiqpkgs.cargo
artiqpkgs.rustc
artiqpkgs.binutils-or1k
artiqpkgs.binutils-arm
artiqpkgs.llvm-or1k
artiqpkgs.openocd
];
shellHook = ''
source ${set-scratch-dir};
export PYTHONPATH="$scratch_dir/artiq_tools:$PYTHONPATH"
export PYTHONPATH="$scratch_dir/oitg:$PYTHONPATH"
export PYTHONPATH="$scratch_dir/analysis-library:$PYTHONPATH"
export PYTHONPATH="$scratch_dir/python-library:$PYTHONPATH"
export PYTHONPATH="$scratch_dir/strontium-library:$PYTHONPATH"
export PYTHONPATH="$scratch_dir/ndscan:$PYTHONPATH"
export PYTHONPATH="$scratch_dir/sipyco:$PYTHONPATH"
'';
TARGET_AR="or1k-linux-ar";
}