diff --git a/artiq-fast/default.nix b/artiq-fast/default.nix index 4ef4ca6..66b7a9c 100644 --- a/artiq-fast/default.nix +++ b/artiq-fast/default.nix @@ -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 diff --git a/artiq-fast/pkgs/artiq.nix b/artiq-fast/pkgs/artiq.nix index 2dbf81b..484f112 100644 --- a/artiq-fast/pkgs/artiq.nix +++ b/artiq-fast/pkgs/artiq.nix @@ -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 ''; diff --git a/artiq-fast/pkgs/python-deps.nix b/artiq-fast/pkgs/python-deps.nix index 393f7e7..b105b5d 100644 --- a/artiq-fast/pkgs/python-deps.nix +++ b/artiq-fast/pkgs/python-deps.nix @@ -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 \ diff --git a/artiq-fast/shell-dev.nix b/artiq-fast/shell-dev.nix index aff6905..88deddd 100644 --- a/artiq-fast/shell-dev.nix +++ b/artiq-fast/shell-dev.nix @@ -1,21 +1,87 @@ { pkgs ? import {}}: +with import {}; + 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"; }