diff --git a/artiq-board-generated/artiq-board.nix b/artiq-board-generated/artiq-board.nix deleted file mode 100644 index d891ac5..0000000 --- a/artiq-board-generated/artiq-board.nix +++ /dev/null @@ -1,98 +0,0 @@ -# Install Vivado in /opt and add to /etc/nixos/configuration.nix: -# nix.sandboxPaths = ["/opt"]; - -{ pkgs ? import {} -, artiq-fast -}: - -let - artiqSrc = import (artiq-fast + "/pkgs/artiq-src.nix") { fetchgit = pkgs.fetchgit; }; - artiqpkgs = import artiq-fast { inherit pkgs; }; - pythonEnv = pkgs.python3.withPackages (ps: with ps; [ - jinja2 jsonschema numpy artiqpkgs.migen artiqpkgs.microscope artiqpkgs.misoc artiqpkgs.jesd204b artiqpkgs.artiq - ]); - fetchcargo = import (artiq-fast + "/fetchcargo-legacy.nix") { - inherit (pkgs) stdenv lib cacert git; - cargo = artiqpkgs.cargo-legacy; - cargo-vendor = artiqpkgs.cargo-vendor-legacy; - }; - cargoDeps = fetchcargo rec { - name = "artiq-firmware-cargo-deps"; - src = "${artiqSrc}/artiq/firmware"; - sha256 = import (artiqSrc + "/artiq/firmware/cargosha256.nix"); - }; - - cargoVendored = pkgs.stdenv.mkDerivation { - name = "artiq-firmware-cargo-vendored"; - src = cargoDeps; - phases = [ "unpackPhase" "installPhase" ]; - installPhase = - '' - mkdir -p $out/registry - cat << EOF > $out/config - [source.crates-io] - registry = "https://github.com/rust-lang/crates.io-index" - replace-with = "vendored-sources" - - [source."https://github.com/m-labs/libfringe"] - git = "https://github.com/m-labs/libfringe" - rev = "b8a6d8f" - replace-with = "vendored-sources" - - [source.vendored-sources] - directory = "$out/registry" - EOF - cp -R * $out/registry - ''; - }; -in -{ target -, variant -, src ? null -, buildCommand ? "python -m artiq.gateware.targets.${target} -V ${variant}" -, extraInstallCommands ? "" -, ... -}: -let - name = "artiq-board-${target}-${variant}-${artiqpkgs.artiq.version}-xxx"; - installPath = "${pkgs.python3Packages.python.sitePackages}/artiq/board-support/${target}-${variant}"; -in -# Board packages are Python modules so that they get added to the ARTIQ Python -# environment, and artiq_flash finds them. -pkgs.stdenv.mkDerivation { - name = "artiq-board-${target}-${variant}-${artiqpkgs.artiq.version}"; - inherit src; - phases = [ "buildPhase" "installPhase" ]; - nativeBuildInputs = [ - pkgs.gnumake pkgs.which pythonEnv - artiqpkgs.cargo-legacy - artiqpkgs.rustc-legacy - artiqpkgs.binutils-or1k - artiqpkgs.llvm-or1k - ]; - buildInputs = [ pythonEnv ]; - buildPhase = - '' - export CARGO_HOME=${cargoVendored} - export TARGET_AR=or1k-linux-ar - ${buildCommand} --no-compile-gateware --gateware-identifier-str=unprogrammed - ''; - installPhase = - '' - mkdir -p $out - cp -ar artiq_${target}/${variant}/gateware $out - - TARGET_DIR=$out/${pkgs.python3Packages.python.sitePackages}/artiq/board-support/${target}-${variant} - mkdir -p $TARGET_DIR - if [ -e artiq_${target}/${variant}/software/bootloader/bootloader.bin ] - then cp artiq_${target}/${variant}/software/bootloader/bootloader.bin $TARGET_DIR - fi - if [ -e artiq_${target}/${variant}/software/runtime ] - then cp artiq_${target}/${variant}/software/runtime/runtime.{elf,fbi} $TARGET_DIR - else cp artiq_${target}/${variant}/software/satman/satman.{elf,fbi} $TARGET_DIR - fi - ${extraInstallCommands} - ''; - # don't mangle ELF files as they are not for NixOS - dontFixup = true; -} diff --git a/artiq-board-generated/default.nix b/artiq-board-generated/default.nix deleted file mode 100644 index eccfcf0..0000000 --- a/artiq-board-generated/default.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ pkgs ? import {} -, artiq-fast ? -}: - -let - sinaraSystemsSrc = ; - generatedNix = pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; } - '' - mkdir $out - cp ${./artiq-board.nix} $out/artiq-board.nix - cp ${../artiq-full/artiq-targets.nix} $out/artiq-targets.nix - cp -a ${artiq-fast} $out/fast - - REV=`git --git-dir ${sinaraSystemsSrc}/.git rev-parse HEAD` - echo -n $REV > $out/sinara-rev.txt - SINARA_SRC_CLEAN=`mktemp -d` - cp -a ${sinaraSystemsSrc}/. $SINARA_SRC_CLEAN - chmod -R 755 $SINARA_SRC_CLEAN/.git - chmod 755 $SINARA_SRC_CLEAN - rm -rf $SINARA_SRC_CLEAN/.git - HASH=`nix-hash --type sha256 --base32 $SINARA_SRC_CLEAN` - echo -n $HASH > $out/sinara-hash.txt - - cat > $out/default.nix << EOF - { pkgs ? import {} - }: - - let - sinaraSystemsSrc = pkgs.fetchgit { - url = "https://git.m-labs.hk/M-Labs/sinara-systems-legacy.git"; - rev = "$REV"; - sha256 = "$HASH"; - }; - artiq-fast = import ./fast { inherit pkgs; }; - artiq-board = import ./artiq-board.nix { - inherit pkgs; - artiq-fast = ./fast; - }; - in - builtins.mapAttrs (_: conf: pkgs.lib.hydraJob (artiq-board conf)) ( - import ./artiq-targets.nix { - inherit pkgs sinaraSystemsSrc; - artiqVersion = artiq-fast.artiq.version; - } - ) - EOF - ''; - artiq-board-generated = import generatedNix { - inherit pkgs; - }; -in -artiq-board-generated // { - generated-nix = pkgs.lib.hydraJob generatedNix; -} diff --git a/artiq-fast.nix b/artiq-fast.nix deleted file mode 100644 index ddcb8ea..0000000 --- a/artiq-fast.nix +++ /dev/null @@ -1,111 +0,0 @@ -let - pkgs = import { overlays = [ (import ./artiq-fast/mozilla-overlay.nix) ]; }; - artiqSrc = ; - generatedNix = pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; } - # keep in sync with artiq-fast/pkgs/artiq-version.nix - '' - cp --no-preserve=mode,ownership -R ${./artiq-fast} $out - REV=`git --git-dir ${artiqSrc}/.git rev-parse HEAD` - MAJOR_VERSION=`cat ${artiqSrc}/MAJOR_VERSION` - if [ -e ${artiqSrc}/BETA ]; then - SUFFIX=".beta" - else - SUFFIX="" - fi - COMMIT_COUNT=`git --git-dir ${artiqSrc}/.git rev-list --count HEAD` - TIMESTAMP=`git --git-dir ${artiqSrc}/.git log -1 --format=%ct` - ARTIQ_SRC_CLEAN=`mktemp -d` - cp -a ${artiqSrc}/. $ARTIQ_SRC_CLEAN - chmod -R 755 $ARTIQ_SRC_CLEAN/.git - chmod 755 $ARTIQ_SRC_CLEAN - rm -rf $ARTIQ_SRC_CLEAN/.git - HASH=`nix-hash --type sha256 --base32 $ARTIQ_SRC_CLEAN` - cat > $out/pkgs/artiq-src.nix << EOF - { fetchgit }: - fetchgit { - url = "https://github.com/m-labs/artiq.git"; - rev = "$REV"; - sha256 = "$HASH"; - } - EOF - echo "{ stdenv, git, fetchgit }: \"$MAJOR_VERSION.$COMMIT_COUNT.`cut -c1-8 <<< $REV`$SUFFIX\"" > $out/pkgs/artiq-version.nix - echo "{ stdenv, git, fetchgit }: \"$TIMESTAMP\"" > $out/pkgs/artiq-timestamp.nix - ''; - artiqpkgs = import "${generatedNix}/default.nix" { inherit pkgs; }; - artiqVersion = import "${generatedNix}/pkgs/artiq-version.nix" (with pkgs; { inherit stdenv fetchgit git; }); - windowsRunner = overrides: - import "${generatedNix}/windows/run-test.nix" ({ - inherit pkgs artiqpkgs; - } // overrides); - jobs = (builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) artiqpkgs); -in - jobs // { - generated-nix = pkgs.lib.hydraJob generatedNix; # used by artiq-full - artiq-fast = pkgs.releaseTools.channel { - name = "artiq-fast"; - src = generatedNix; - constituents = builtins.attrValues jobs; - }; - - windows-no-hardware-tests = pkgs.stdenv.mkDerivation { - name = "windows-no-hardware-tests"; - phases = [ "buildPhase" ]; - buildPhase = '' - ${windowsRunner { testCommand = "python -m unittest discover -v sipyco.test && python -m unittest discover -v artiq.test"; }}/bin/wfvm-run-windows-tests - touch $out - ''; - }; - - extended-tests = pkgs.stdenv.mkDerivation { - name = "extended-tests"; - - __networked = true; # compatibility with old patched Nix - # breaks hydra, https://github.com/NixOS/hydra/issues/1216 - #__impure = true; # Nix 2.8+ - - buildInputs = [ - (pkgs.python3.withPackages(ps: [ ps.paramiko artiqpkgs.artiq artiqpkgs.artiq-board-kc705-nist_clock ])) - artiqpkgs.openocd - pkgs.openssh - ] ++ (if (pkgs.lib.versionAtLeast artiqVersion "7.0") then [ pkgs.llvm_11 pkgs.lld_11 ] else [ artiqpkgs.binutils-or1k ]); - phases = [ "buildPhase" ]; - buildPhase = - '' - export HOME=`mktemp -d` - mkdir $HOME/.ssh - cp /opt/hydra_id_ed25519 $HOME/.ssh/id_ed25519 - cp /opt/hydra_id_ed25519.pub $HOME/.ssh/id_ed25519.pub - echo "rpi-1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACtBFDVBYoAE4fpJCTANZSE0bcVpTR3uvfNvb80C4i5" > $HOME/.ssh/known_hosts - chmod 600 $HOME/.ssh/id_ed25519 - LOCKCTL=$(mktemp -d) - mkfifo $LOCKCTL/lockctl - - cat $LOCKCTL/lockctl | ${pkgs.openssh}/bin/ssh \ - -i $HOME/.ssh/id_ed25519 \ - -o UserKnownHostsFile=$HOME/.ssh/known_hosts \ - rpi-1 \ - 'mkdir -p /tmp/board_lock && flock /tmp/board_lock/kc705-1 -c "echo Ok; cat"' \ - | ( - # End remote flock via FIFO - atexit_unlock() { - echo > $LOCKCTL/lockctl - } - trap atexit_unlock EXIT - - # Read "Ok" line when remote successfully locked - read LOCK_OK - - artiq_flash -t kc705 -H rpi-1 - sleep 15 - - export ARTIQ_ROOT=`python -c "import artiq; print(artiq.__path__[0])"`/examples/kc705_nist_clock - export ARTIQ_LOW_LATENCY=1 - python -m unittest discover -v artiq.test.coredevice - - ${windowsRunner { testCommand = "set ARTIQ_ROOT=%cd%\\Anaconda3\\envs\\artiq-env\\Lib\\site-packages\\artiq\\examples\\kc705_nist_clock&& python -m unittest discover -v artiq.test.coredevice"; }}/bin/wfvm-run-windows-tests - ) - - touch $out - ''; - }; - } diff --git a/artiq-fast/artiq-board.nix b/artiq-fast/artiq-board.nix deleted file mode 100644 index 1b0f418..0000000 --- a/artiq-fast/artiq-board.nix +++ /dev/null @@ -1,143 +0,0 @@ -# Install Vivado in /opt and add to /etc/nixos/configuration.nix: -# nix.sandboxPaths = ["/opt"]; - -{ pkgs -, rustPlatform -, vivado ? import ./vivado.nix { inherit pkgs; } -}: - -let - artiqSrc = import ./pkgs/artiq-src.nix { fetchgit = pkgs.fetchgit; }; - artiqpkgs = import ./default.nix { inherit pkgs; }; - - fetchcargo-legacy = import ./fetchcargo-legacy.nix { - inherit (pkgs) stdenv lib cacert git; - cargo = artiqpkgs.cargo-legacy; - cargo-vendor = artiqpkgs.cargo-vendor-legacy; - }; - cargoDeps-legacy = fetchcargo-legacy rec { - name = "artiq-firmware-cargo-deps"; - src = "${artiqSrc}/artiq/firmware"; - sha256 = (import "${artiqSrc}/artiq/firmware/cargosha256.nix"); - }; - cargoVendored-legacy = pkgs.stdenv.mkDerivation { - name = "artiq-firmware-cargo-vendored"; - src = cargoDeps-legacy; - phases = [ "unpackPhase" "installPhase" ]; - installPhase = - '' - mkdir -p $out/registry - cat << EOF > $out/config - [source.crates-io] - registry = "https://github.com/rust-lang/crates.io-index" - replace-with = "vendored-sources" - - [source."https://github.com/m-labs/libfringe"] - git = "https://github.com/m-labs/libfringe" - rev = "b8a6d8f" - replace-with = "vendored-sources" - - [source.vendored-sources] - directory = "$out/registry" - EOF - cp -R * $out/registry - ''; - }; - - cargoDeps = rustPlatform.fetchCargoTarball { - name = "artiq-firmware-cargo-deps"; - src = "${artiqSrc}/artiq/firmware"; - sha256 = "sha256-YyycMsDzR+JRcMZJd6A/CRi2J9nKmaWY/KXUnAQaZ00="; - }; - - cargo-xbuild = rustPlatform.buildRustPackage rec { - pname = "cargo-xbuild"; - version = "0.6.5"; - src = pkgs.fetchFromGitHub { - owner = "rust-osdev"; - repo = pname; - rev = "v${version}"; - sha256 = "18djvygq9v8rmfchvi2hfj0i6fhn36m716vqndqnj56fiqviwxvf"; - }; - cargoSha256 = "13sj9j9kl6js75h9xq0yidxy63vixxm9q3f8jil6ymarml5wkhx8"; - }; - - artiq7 = pkgs.lib.strings.versionAtLeast artiqpkgs.artiq.version "7.0"; - -in -{ target -, variant -, src ? null -, buildCommand ? "python -m artiq.gateware.targets.${target} -V ${variant}" -, extraInstallCommands ? "" -, ... }: - -# Board packages are Python modules so that they get added to the ARTIQ Python -# environment, and artiq_flash finds them. -pkgs.python3Packages.toPythonModule (pkgs.stdenv.mkDerivation rec { - name = "artiq-board-${target}-${variant}-${version}"; - version = import ./pkgs/artiq-version.nix (with pkgs; { inherit stdenv fetchgit git; }); - inherit src; - phases = [ "buildPhase" "checkPhase" "installPhase" ]; - nativeBuildInputs = [ vivado pkgs.gnumake ] - ++ (if artiq7 - then [ - rustPlatform.rust.rustc - rustPlatform.rust.cargo - pkgs.llvmPackages_11.clang-unwrapped - pkgs.llvm_11 - pkgs.lld_11 - rustPlatform.cargoSetupHook - cargo-xbuild - ] else [ - artiqpkgs.cargo-legacy - artiqpkgs.rustc-legacy - artiqpkgs.binutils-or1k - artiqpkgs.llvm-or1k - ]); - buildInputs = [ (pkgs.python3.withPackages(ps: with ps; [ artiqpkgs.migen artiqpkgs.microscope artiqpkgs.misoc artiqpkgs.jesd204b artiqpkgs.artiq ] ++ (pkgs.lib.optional artiq7 jsonschema))) ]; - buildPhase = if artiq7 - then - '' - ARTIQ_PATH=`python -c "import artiq; print(artiq.__path__[0])"` - ln -s $ARTIQ_PATH/firmware/Cargo.lock . - cargoDeps=${cargoDeps} - cargoSetupPostUnpackHook - cargoSetupPostPatchHook - export TARGET_AR=llvm-ar - ${buildCommand} - '' - else - '' - export CARGO_HOME=${cargoVendored-legacy} - export TARGET_AR=or1k-linux-ar - ${buildCommand} - ''; - # temporarily disabled because there is currently always at least one Kasli bitstream - # that fails timing and blocks the conda channel. - doCheck = artiq7; - checkPhase = '' - # Search for PCREs in the Vivado output to check for errors - check_log() { - grep -Pe "$1" artiq_${target}/${variant}/gateware/vivado.log && exit 1 || true - } - check_log "\d+ constraint not met\." - check_log "Timing constraints are not met\." - ''; - installPhase = - '' - TARGET_DIR=$out/${pkgs.python3Packages.python.sitePackages}/artiq/board-support/${target}-${variant} - mkdir -p $TARGET_DIR - cp artiq_${target}/${variant}/gateware/top.bit $TARGET_DIR - if [ -e artiq_${target}/${variant}/software/bootloader/bootloader.bin ] - then cp artiq_${target}/${variant}/software/bootloader/bootloader.bin $TARGET_DIR - fi - if [ -e artiq_${target}/${variant}/software/runtime ] - then cp artiq_${target}/${variant}/software/runtime/runtime.{elf,fbi} $TARGET_DIR - else cp artiq_${target}/${variant}/software/satman/satman.{elf,fbi} $TARGET_DIR - fi - ${extraInstallCommands} - ''; - # don't mangle ELF files as they are not for NixOS - dontFixup = true; -}) diff --git a/artiq-fast/conda-windows/binutils-hack-libiconv.patch b/artiq-fast/conda-windows/binutils-hack-libiconv.patch deleted file mode 100644 index a2ab319..0000000 --- a/artiq-fast/conda-windows/binutils-hack-libiconv.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/intl/relocatable.c 2018-02-28 18:19:46.318224392 +0000 -+++ b/intl/relocatable.c 2018-02-28 18:19:37.614224749 +0000 -@@ -145,7 +145,7 @@ - libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); - #endif - #if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 -- libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); -+ // libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); - #endif - #if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix - libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); diff --git a/artiq-fast/conda-windows/binutils-recipe/bld.bat b/artiq-fast/conda-windows/binutils-recipe/bld.bat deleted file mode 100644 index fd0ec21..0000000 --- a/artiq-fast/conda-windows/binutils-recipe/bld.bat +++ /dev/null @@ -1,21 +0,0 @@ -set MSYS=C:\MSYS64 -set TRIPLE=x86_64-w64-mingw32 -set PATH=%MSYS%\usr\bin;%MSYS%\mingw64\bin;%PATH% - -mkdir build -cd build -set CFLAGS=-I%PREFIX:\=/%/Library/include/ -set LDFLAGS=-L%PREFIX:\=/%/Library/lib/ -sh ../configure --build=%TRIPLE% ^ - --prefix="%PREFIX:\=/%/Library" ^ - --target=##TARGET## -if errorlevel 1 exit 1 - -make -j4 -if errorlevel 1 exit 1 - -make install -if errorlevel 1 exit 1 - -rem this is a copy of prefixed executables -rmdir /S /Q %PREFIX%\Library\##TARGET## diff --git a/artiq-fast/conda-windows/binutils-recipe/meta.yaml b/artiq-fast/conda-windows/binutils-recipe/meta.yaml deleted file mode 100644 index a9532a6..0000000 --- a/artiq-fast/conda-windows/binutils-recipe/meta.yaml +++ /dev/null @@ -1,17 +0,0 @@ -package: - name: binutils-##TARGET## - version: ##VERSION## - -source: - url: ../src.tar.bz2 - -requirements: - build: - - libiconv - run: - - libiconv - -about: - home: https://www.gnu.org/software/binutils/ - license: GPL - summary: 'A set of programming tools for creating and managing binary programs, object files, libraries, profile data, and assembly source code.' diff --git a/artiq-fast/conda-windows/binutils.nix b/artiq-fast/conda-windows/binutils.nix deleted file mode 100644 index 6358ebe..0000000 --- a/artiq-fast/conda-windows/binutils.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ pkgs, version, src, target }: - -let - wfvm = import ../wfvm.nix { inherit pkgs; }; - libiconv-filename = "libiconv-1.15-h1df5818_7.tar.bz2"; - libiconv = pkgs.fetchurl { - url = "https://anaconda.org/anaconda/libiconv/1.15/download/win-64/${libiconv-filename}"; - sha256 = "0p431madykrjmi9sbl2sy9kzb0l3vhgs677i8q7cx8g210ab5g52"; - }; - vc14-filename = "vc-14.1-h0510ff6_4.tar.bz2"; - vc14 = pkgs.fetchurl { - url = "https://anaconda.org/anaconda/vc/14.1/download/win-64/${vc14-filename}"; - sha256 = "0nsyxph667x8ky1nybakpnk816dkrzbf1684jd7pp6wm5x73p34v"; - }; - vs2015_runtime-filename = "vs2015_runtime-14.16.27012-hf0eaf9b_2.tar.bz2"; - vs2015_runtime = pkgs.fetchurl { - url = "https://anaconda.org/anaconda/vs2015_runtime/14.16.27012/download/win-64/${vs2015_runtime-filename}"; - sha256 = "1gbm6i6nkp8linmak5mm42hj1nzqd5ppak8kv1n3wfn52p21ngvs"; - }; - build = wfvm.utils.wfvm-run { - name = "build-binutils"; - image = wfvm.makeWindowsImage { installCommands = with wfvm.layers; [ anaconda3 msys2 (msys2-packages (import ./msys_packages.nix { inherit pkgs; } )) ]; }; - script = '' - # Create a fake channel to work around another pile of bugs and cretinous design decisions from conda. - ${wfvm.utils.win-exec}/bin/win-exec "mkdir fake-channel && mkdir fake-channel\win-64" - ln -s ${libiconv} ${libiconv-filename} - ${wfvm.utils.win-put}/bin/win-put ${libiconv-filename} ./fake-channel/win-64 - ln -s ${vc14} ${vc14-filename} - ${wfvm.utils.win-put}/bin/win-put ${vc14-filename} ./fake-channel/win-64 - ln -s ${vs2015_runtime} ${vs2015_runtime-filename} - ${wfvm.utils.win-put}/bin/win-put ${vs2015_runtime-filename} ./fake-channel/win-64 - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda index fake-channel" - - cp --no-preserve=mode,ownership -R ${./binutils-recipe} binutils - sed -i s/##TARGET##/${target}/g binutils/* - sed -i s/##VERSION##/${version}/g binutils/* - ${wfvm.utils.win-put}/bin/win-put binutils . - tar xjf ${src} - patch -d binutils-${version} -p1 < ${./binutils-hack-libiconv.patch} - tar cjf src.tar.bz2 binutils-${version} - ${wfvm.utils.win-put}/bin/win-put src.tar.bz2 . - - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda build --no-anaconda-upload --no-test -c file:///C:/users/wfvm/fake-channel --override-channels binutils" - - ${wfvm.utils.win-get}/bin/win-get "Anaconda3/conda-bld/win-64/binutils-${target}-${version}-0.tar.bz2" - ''; - }; -in - pkgs.runCommand "conda-windows-binutils-${target}" { buildInputs = [ build ]; } '' - wfvm-run-build-binutils - mkdir -p $out/win-64 $out/nix-support - cp binutils-*.tar.bz2 $out/win-64 - echo file conda $out/win-64/*.tar.bz2 >> $out/nix-support/hydra-build-products - '' diff --git a/artiq-fast/conda-windows/llvm-or1k.nix b/artiq-fast/conda-windows/llvm-or1k.nix deleted file mode 100644 index e23140a..0000000 --- a/artiq-fast/conda-windows/llvm-or1k.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ pkgs, version, src }: - -let - wfvm = import ../wfvm.nix { inherit pkgs; }; - conda-vs2015_runtime-filename = "vs2015_runtime-14.16.27012-hf0eaf9b_2.tar.bz2"; - conda-vs2015_runtime = pkgs.fetchurl { - url = "https://anaconda.org/anaconda/vs2015_runtime/14.16.27012/download/win-64/${conda-vs2015_runtime-filename}"; - sha256 = "1gbm6i6nkp8linmak5mm42hj1nzqd5ppak8kv1n3wfn52p21ngvs"; - }; - conda-cmake-filename = "cmake-3.17.2-h33f27b4_0.tar.bz2"; - conda-cmake = pkgs.fetchurl { - url = "https://anaconda.org/anaconda/cmake/3.17.2/download/win-64/${conda-cmake-filename}"; - sha256 = "0lg782pj2i9h20rwfkwwskis038r98b3z4c9j1a6ih95rc6m2acn"; - }; - build = wfvm.utils.wfvm-run { - name = "build-llvm-or1k"; - image = wfvm.makeWindowsImage { installCommands = with wfvm.layers; [ anaconda3 msvc msvc-ide-unbreak ]; }; - script = '' - # Create a fake channel so that the conda garbage doesn't complain about not finding the packages it just installed. - ln -s ${conda-vs2015_runtime} ${conda-vs2015_runtime-filename} - ln -s ${conda-cmake} ${conda-cmake-filename} - ${wfvm.utils.win-exec}/bin/win-exec "mkdir fake-channel && mkdir fake-channel\win-64" - ${wfvm.utils.win-put}/bin/win-put ${conda-vs2015_runtime-filename} ./fake-channel/win-64 - ${wfvm.utils.win-put}/bin/win-put ${conda-cmake-filename} ./fake-channel/win-64 - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda index fake-channel" - - cat > meta.yaml << EOF - package: - name: llvm-or1k - version: ${version} - - source: - url: ../src.tar - - requirements: - build: - - cmake - EOF - - cat > bld.bat << EOF - set BUILD_TYPE=Release - set CMAKE_GENERATOR=Visual Studio 15 2017 Win64 - - mkdir build - cd build - cmake .. -G "%CMAKE_GENERATOR%" ^ - -Thost=x64 ^ - -DCMAKE_BUILD_TYPE="%BUILD_TYPE%" ^ - -DCMAKE_INSTALL_PREFIX="%LIBRARY_PREFIX%" ^ - -DLLVM_BUILD_LLVM_DYLIB=ON ^ - -DLLVM_TARGETS_TO_BUILD=X86;ARM ^ - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=OR1K ^ - -DLLVM_ENABLE_ASSERTIONS=OFF ^ - -DLLVM_INSTALL_UTILS=ON ^ - -DLLVM_INCLUDE_TESTS=OFF ^ - -DLLVM_INCLUDE_DOCS=OFF ^ - -DLLVM_INCLUDE_EXAMPLES=OFF - if errorlevel 1 exit 1 - cmake --build . --config "%BUILD_TYPE%" --parallel 4 - if errorlevel 1 exit 1 - cmake --build . --config "%BUILD_TYPE%" --target install - if errorlevel 1 exit 1 - EOF - - ${wfvm.utils.win-exec}/bin/win-exec "mkdir llvm-or1k" - ${wfvm.utils.win-put}/bin/win-put meta.yaml llvm-or1k - ${wfvm.utils.win-put}/bin/win-put bld.bat llvm-or1k - ln -s ${src} src - tar chf src.tar src - ${wfvm.utils.win-put}/bin/win-put src.tar . - - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda build --no-anaconda-upload --no-test -c file:///C:/users/wfvm/fake-channel --override-channels llvm-or1k" - - ${wfvm.utils.win-get}/bin/win-get "Anaconda3/conda-bld/win-64/llvm-or1k-${version}-0.tar.bz2" - ''; - }; -in - pkgs.runCommand "conda-windows-llvm-or1k" { buildInputs = [ build ]; } '' - wfvm-run-build-llvm-or1k - mkdir -p $out/win-64 $out/nix-support - cp llvm-or1k-*.tar.bz2 $out/win-64 - echo file conda $out/win-64/*.tar.bz2 >> $out/nix-support/hydra-build-products - '' diff --git a/artiq-fast/conda-windows/llvmlite-artiq.nix b/artiq-fast/conda-windows/llvmlite-artiq.nix deleted file mode 100644 index 606830a..0000000 --- a/artiq-fast/conda-windows/llvmlite-artiq.nix +++ /dev/null @@ -1,76 +0,0 @@ -{ pkgs, conda-windows-llvm-or1k, version, src }: - -let - wfvm = import ../wfvm.nix { inherit pkgs; }; - conda-vs2015_runtime-filename = "vs2015_runtime-14.16.27012-hf0eaf9b_2.tar.bz2"; - conda-vs2015_runtime = pkgs.fetchurl { - url = "https://anaconda.org/anaconda/vs2015_runtime/14.16.27012/download/win-64/${conda-vs2015_runtime-filename}"; - sha256 = "1gbm6i6nkp8linmak5mm42hj1nzqd5ppak8kv1n3wfn52p21ngvs"; - }; - conda-cmake-filename = "cmake-3.17.2-h33f27b4_0.tar.bz2"; - conda-cmake = pkgs.fetchurl { - url = "https://anaconda.org/anaconda/cmake/3.17.2/download/win-64/${conda-cmake-filename}"; - sha256 = "0lg782pj2i9h20rwfkwwskis038r98b3z4c9j1a6ih95rc6m2acn"; - }; - build = wfvm.utils.wfvm-run { - name = "build-llvmlite-artiq"; - image = wfvm.makeWindowsImage { installCommands = with wfvm.layers; [ anaconda3 msvc msvc-ide-unbreak ]; }; - script = '' - ln -s ${conda-vs2015_runtime} ${conda-vs2015_runtime-filename} - ln -s ${conda-cmake} ${conda-cmake-filename} - ${wfvm.utils.win-exec}/bin/win-exec "mkdir fake-channel && mkdir fake-channel\win-64" - ${wfvm.utils.win-put}/bin/win-put ${conda-vs2015_runtime-filename} ./fake-channel/win-64 - ${wfvm.utils.win-put}/bin/win-put ${conda-cmake-filename} ./fake-channel/win-64 - ${wfvm.utils.win-put}/bin/win-put ${conda-windows-llvm-or1k}/win-64/llvm-or1k-*.tar.bz2 ./fake-channel/win-64 - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda index fake-channel" - - cat > meta.yaml << EOF - package: - name: llvmlite-artiq - version: ${version} - - source: - url: ../src.tar - - requirements: - build: - - cmake - - llvm-or1k - run: - - python<3.9 - EOF - - cat > bld.bat << EOF - @rem Let CMake know about the LLVM install path, for find_package() - set CMAKE_PREFIX_PATH=%LIBRARY_PREFIX% - - @rem Ensure there are no build leftovers (CMake can complain) - if exist ffi\build rmdir /S /Q ffi\build - - python setup.py install \ - --prefix=%PREFIX% \ - --single-version-externally-managed \ - --record=record.txt \ - --no-compile - if errorlevel 1 exit 1 - EOF - - ${wfvm.utils.win-exec}/bin/win-exec "mkdir llvmlite-artiq" - ${wfvm.utils.win-put}/bin/win-put meta.yaml llvmlite-artiq - ${wfvm.utils.win-put}/bin/win-put bld.bat llvmlite-artiq - ln -s ${src} src - tar chf src.tar src - ${wfvm.utils.win-put}/bin/win-put src.tar . - - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda build --no-anaconda-upload --no-test -c file:///C:/users/wfvm/fake-channel --override-channels llvmlite-artiq" - - ${wfvm.utils.win-get}/bin/win-get "Anaconda3/conda-bld/win-64/llvmlite-artiq-${version}-0.tar.bz2" - ''; - }; -in - pkgs.runCommand "conda-windows-llvmlite-artiq" { buildInputs = [ build ]; } '' - wfvm-run-build-llvmlite-artiq - mkdir -p $out/win-64 $out/nix-support - cp llvmlite-artiq-*.tar.bz2 $out/win-64 - echo file conda $out/win-64/*.tar.bz2 >> $out/nix-support/hydra-build-products - '' diff --git a/artiq-fast/conda-windows/msys_packages.nix b/artiq-fast/conda-windows/msys_packages.nix deleted file mode 100644 index 2547b8e..0000000 --- a/artiq-fast/conda-windows/msys_packages.nix +++ /dev/null @@ -1,177 +0,0 @@ -{ pkgs } : [ - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libiconv-1.16-1-any.pkg.tar.xz"; - sha256 = "0w8jkjr5gwybw9469216vs6vpibkq36wx47bbl4r0smi4wvh2yxk"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-zlib-1.2.11-7-any.pkg.tar.xz"; - sha256 = "1hnfagn5m0ys4f8349d8dpbqvh9p900jjn83r7fi1az6i9dz1v0x"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-binutils-2.34-3-any.pkg.tar.zst"; - sha256 = "0ahlwbg5ir89nbra407yrzsplib4cia9m0dggcqjw1i4bxi7ypj1"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-headers-git-8.0.0.5905.066f1b3c-1-any.pkg.tar.zst"; - sha256 = "0sskg0vvgggs932i09ipm5rrllv6vdf1ai3d3fvbi5pxis1xc9g0"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-crt-git-8.0.0.5905.066f1b3c-1-any.pkg.tar.zst"; - sha256 = "1sjizkvknivbjs962fqxcmjkgnrvhd1frq96cfj2fyzk5cz7kfx0"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-isl-0.22.1-1-any.pkg.tar.xz"; - sha256 = "1nj7sj3hgxhziqs1l7k42ginl10w7iy1b753mwvqiczfs322hb90"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gmp-6.2.0-1-any.pkg.tar.xz"; - sha256 = "1l4qdxr8xp6xyxabwcf9b876db3rhj4v54zsvb4v1kwm3jrs7caw"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpfr-4.0.2-2-any.pkg.tar.xz"; - sha256 = "0hriryx58bkk3sihnhd4i6966civ3hq8i68rnc9kjivk47wi49rj"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpc-1.1.0-1-any.pkg.tar.xz"; - sha256 = "0x1kg178l6mf9ivdy71bci36h2a37vypg4jk3k7y31ks6i79zifp"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libwinpthread-git-8.0.0.5906.c9a21571-1-any.pkg.tar.zst"; - sha256 = "16aqi04drn252cxdh1brpbi4syn4bfjb84qk4xqbnffnpxpvv5ph"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libs-10.1.0-3-any.pkg.tar.zst"; - sha256 = "0bmkrb9x7z0azzxl3z08r6chcl0pbnaijar7cdjxb2nh7fbbdzzp"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-windows-default-manifest-6.4-3-any.pkg.tar.xz"; - sha256 = "1kwxb3q2slgsg17lkd0dc9fjks5f205dgm79fj0xq0zmrsns83kc"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-winpthreads-git-8.0.0.5906.c9a21571-1-any.pkg.tar.zst"; - sha256 = "17nq8gs1nnxgligdrp5n6h4pnk46xw0yhjk2hn6y12vvpn7iv05v"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-zstd-1.4.5-1-any.pkg.tar.zst"; - sha256 = "1jfxzajmbvlap1c0v17s8dzwdx0fi8kyrkmgr6gw1snisgllifyh"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-10.1.0-3-any.pkg.tar.zst"; - sha256 = "1gkcc6hh20glx4b96ldsnd70r8dbp460bxfznm9z2rwgr0mxb374"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/make-4.3-1-x86_64.pkg.tar.xz"; - sha256 = "0bmgggw56gkx7dcd8simpi2lhgz98limikx8wm0cb8cn7awi9w82"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/m4-1.4.18-2-x86_64.pkg.tar.xz"; - sha256 = "05x7myqwwxk3vfqmliwk5pfn0w04fnjh1sqafsynpb9hx0c563ji"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/diffutils-3.7-1-x86_64.pkg.tar.xz"; - sha256 = "11qdxn4mr8a96palhp5jkam904fh77bsw5v7mslhnzag4cg3kybx"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/autoconf-2.69-5-any.pkg.tar.xz"; - sha256 = "1fxvgbjnmmb7dvmssfxkiw151dfd1wzj04hf45zklmzs4h2kkwda"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.6-1.6.3-2-any.pkg.tar.xz"; - sha256 = "0if4wrr1vm2f1zjjh6dpln97xc1l1052bcawzmndwfh561cfxqb6"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.7-1.7.9-2-any.pkg.tar.xz"; - sha256 = "1mjhp1k4c0xm8hfm3yckqvfb4ablzgg8a87l7wxaq1mmmskjmhpq"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.8-1.8.5-3-any.pkg.tar.xz"; - sha256 = "046bzr44ss0lglx9lzccj9li74arz632hyvz6l9fcp98dndr3qjk"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.9-1.9.6-2-any.pkg.tar.xz"; - sha256 = "0bh0dldmrd46xhix5358nj9sgf298n4ap0y8dsl6rvjsb5c0l5hd"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.10-1.10.3-3-any.pkg.tar.xz"; - sha256 = "0p26lkx5n1mmmw1y98bgwzbxfxkfa18fqxvkgsm60fznjig4dq61"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.11-1.11.6-3-any.pkg.tar.xz"; - sha256 = "1cjkav2bskf9rdm8g3hsl2l7wz1lx8dfigwqib0xhm7n8i8gc560"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.12-1.12.6-3-any.pkg.tar.xz"; - sha256 = "1c0h2lngfjjfvw0jkrfah1fs25k0vdm80hlxfjs912almh2yg5gv"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.13-1.13.4-4-any.pkg.tar.xz"; - sha256 = "0mczn8hanqn3hxr104klb832b4cnzn44bbn7lvqfsbvvjpklv9ld"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.14-1.14.1-3-any.pkg.tar.xz"; - sha256 = "04gjyfszyphxy7qc1rr8378ms9hql0sy8a1gyj0mvpbmgb0phgkp"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.15-1.15.1-1-any.pkg.tar.xz"; - sha256 = "00n1f3c6fwznpm1f6xmj30q41ixw5vdg52yg48yvr4jswb78qf8q"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake1.16-1.16.1-1-any.pkg.tar.xz"; - sha256 = "1ds8rpagrlkzi28n5rh0jcibbic49xssl2hz6sy41my0vd8a3z9y"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/automake-wrapper-11-1-any.pkg.tar.xz"; - sha256 = "1dzymv59wri7qqmgmy5xfkq6zvfcb0znwspc149a04d0bhxs75gw"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/libltdl-2.4.6-9-x86_64.pkg.tar.xz"; - sha256 = "0j0xazjpj28dib9vjn3paibhry77k903rzvbkdn6gnl20smj18g2"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/tar-1.32-1-x86_64.pkg.tar.xz"; - sha256 = "0ynz2qwzbcmixcxddp05q2wc7iqli6svzkrjss9izrpmbkv5ifa5"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/libtool-2.4.6-9-x86_64.pkg.tar.xz"; - sha256 = "0mrnkayrhmrgq446nyysvj3kadqm1xhyl97qqv6hrq57lhkcry2p"; -}) - -(pkgs.fetchurl { - url = "http://repo.msys2.org/msys/x86_64/texinfo-6.7-1-x86_64.pkg.tar.xz"; - sha256 = "0c50809yg9g95m8yib867q8m28sjabqppz2qbzh3gr83z55kknnw"; -}) -] diff --git a/artiq-fast/conda-windows/redistribute.nix b/artiq-fast/conda-windows/redistribute.nix deleted file mode 100644 index a64b9c1..0000000 --- a/artiq-fast/conda-windows/redistribute.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, name, filename, baseurl, sha256 }: - -let - download = pkgs.fetchurl { - url = "${baseurl}${filename}"; - inherit sha256; - }; -in - pkgs.runCommand "conda-windows-${name}" { } '' - mkdir -p $out/win-64 $out/nix-support - ln -s ${download} $out/win-64/${filename} - echo file conda $out/win-64/${filename} >> $out/nix-support/hydra-build-products - '' diff --git a/artiq-fast/conda/artiq.nix b/artiq-fast/conda/artiq.nix deleted file mode 100644 index c85fc4e..0000000 --- a/artiq-fast/conda/artiq.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ pkgs }: - -let - version = import ../pkgs/artiq-version.nix (with pkgs; { inherit stdenv fetchgit git; }); - fakeCondaSource = import ./fake-source.nix { inherit pkgs; } { - name = "artiq"; - inherit version; - src = import ../pkgs/artiq-src.nix { fetchgit = pkgs.fetchgit; }; - dependencies = [ - "pythonparser" - "scipy" - "numpy" - "prettytable" - "h5py" - "python-dateutil" - "pyqt" - (if (pkgs.lib.strings.versionAtLeast version "6.0") then "qasync" else "quamash") - "pyqtgraph" - "pygit2" - "python-levenshtein" - "sipyco" - ] ++ (if (pkgs.lib.strings.versionAtLeast version "7.0") then ["llvmlite" "llvm-tools" "lld"] else ["llvmlite-artiq" "binutils-or1k-linux"]); - extraYaml = - '' - about: - home: https://m-labs.hk/artiq - license: LGPL - summary: 'A leading-edge control system for quantum information experiments' - ''; - }; - conda-artiq = import ./build.nix { inherit pkgs; } { - name = "conda-artiq"; - src = fakeCondaSource; - }; -in - conda-artiq diff --git a/artiq-fast/conda/binutils.nix b/artiq-fast/conda/binutils.nix deleted file mode 100644 index 823ea75..0000000 --- a/artiq-fast/conda/binutils.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ pkgs, version, src, target }: - -let - fake-src = pkgs.runCommand "conda-fake-source-binutils-${target}" { } - '' - mkdir -p $out/fake-conda; - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: binutils-${target} - version: ${version} - - source: - url: ${src} - - # Note: libiconv is also a build dependency, but the conda garbage won't find it - # if installed from a file (even if it shows up in conda list), as is the case - # when using this script. - requirements: - run: - - libiconv - - EOF - - cat << EOF > $out/fake-conda/build.sh - #!/bin/bash - set -e - - mkdir build - cd build - ../configure --target=${target} --prefix=\$PREFIX - make - make install - - # this is a copy of prefixed executables - rm -rf $PREFIX/${target} - - EOF - chmod 755 $out/fake-conda/build.sh - ''; -in - import ./build.nix { inherit pkgs; } { - name = "conda-binutils-${target}"; - src = fake-src; - } diff --git a/artiq-fast/conda/bscan-spi-bitstreams.nix b/artiq-fast/conda/bscan-spi-bitstreams.nix deleted file mode 100644 index ba78405..0000000 --- a/artiq-fast/conda/bscan-spi-bitstreams.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ pkgs, bscan_spi_bitstreams }: - -let - src = pkgs.runCommand "conda-fake-source-bscan_spi_bitstreams" { } - '' - mkdir -p $out/fake-conda; - - # work around yet more idiotic conda behavior - build breaks if write permissions aren't set on source files. - cp --no-preserve=mode,ownership -L -R ${bscan_spi_bitstreams} workaround-conda - pushd workaround-conda - tar cf $out/src.tar . - popd - rm -rf workaround-conda - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: bscan-spi-bitstreams - version: "0.10.0" - - source: - url: ../src.tar - - build: - noarch: generic - binary_relocation: false - script: - - "mkdir -p \$PREFIX/share/bscan-spi-bitstreams" - - "cp *.bit \$PREFIX/share/bscan-spi-bitstreams" - - EOF - ''; -in - import ./build.nix { inherit pkgs; } { - name = "conda-bscan_spi_bitstreams"; - inherit src; - } diff --git a/artiq-fast/conda/build.nix b/artiq-fast/conda/build.nix deleted file mode 100644 index 506ed4c..0000000 --- a/artiq-fast/conda/build.nix +++ /dev/null @@ -1,30 +0,0 @@ -# We need to pass the whole source to conda for the git variables to work. -# recipe must be a string pointing to a path within the source. - -{ pkgs }: -{ name ? null -, src -, pname ? null -, version ? null -, recipe ? "fake-conda" -}: - -# Check that either name is specified or both pname & version are specified. -assert (name == null) -> pname != null && version != null; -assert (name != null) -> pname == null && version == null; -let - condaBuilderEnv = import ./builder-env.nix { inherit pkgs; }; - realName = if (name != null) then name else "${pname}-${version}"; -in pkgs.stdenvNoCC.mkDerivation { - name = realName; - inherit src; - buildCommand = - '' - HOME=`pwd` - mkdir $out - ${condaBuilderEnv}/bin/conda-builder-env -c "conda build --no-anaconda-upload --no-test --output-folder $out $src/${recipe}" - - mkdir -p $out/nix-support - echo file conda $out/*/*.tar.bz2 >> $out/nix-support/hydra-build-products - ''; -} diff --git a/artiq-fast/conda/builder-env.nix b/artiq-fast/conda/builder-env.nix deleted file mode 100644 index b5bbbbc..0000000 --- a/artiq-fast/conda/builder-env.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ pkgs }: - -with pkgs; - -let - condaDeps = [ zlib xorg.libSM xorg.libICE xorg.libX11 xorg.libXau xorg.libXi xorg.libXrender libselinux libGL ]; - # Use the full Anaconda distribution, which already contains conda-build and its many dependencies, - # so we don't have to manually deal with them. - condaInstaller = fetchurl { - url = "https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh"; - sha256 = "0lrxwd3pwz8k3jxwgkd9x47wgkqqy9s8m7hgx1x2gw4gcwysnl97"; - }; - condaSrcChmod = runCommand "conda-src-chmod" { } - '' - mkdir $out - cp ${condaInstaller} $out/conda-installer.sh - chmod +x $out/conda-installer.sh - # keep the same file length to avoid breaking embedded payload offsets - sed -i 0,/unset\ LD_LIBRARY_PATH/s//\#nset\ LD_LIBRARY_PATH/ $out/conda-installer.sh - ''; - condaInstallerEnv = buildFHSUserEnv { - name = "conda-installer-env"; - targetPkgs = pkgs: ([ condaSrcChmod ] ++ condaDeps); - }; - - # for binutils - libiconv-filename = "libiconv-1.15-h516909a_1006.tar.bz2"; - libiconv = pkgs.fetchurl { - url = "https://anaconda.org/conda-forge/libiconv/1.15/download/linux-64/${libiconv-filename}"; - sha256 = "1y1g807881j95f9s6mjinf6b7mqa51vc9jf0v7cx8hn7xx4d10ik"; - }; - - condaInstalled = runCommand "conda-installed" { } - '' - ${condaInstallerEnv}/bin/conda-installer-env -c "${condaSrcChmod}/conda-installer.sh -p $out -b" - substituteInPlace $out/lib/python3.8/site-packages/conda/gateways/disk/__init__.py \ - --replace "os.chmod(path, 0o2775)" "pass" - - # The conda garbage breaks if the package filename is prefixed with the Nix store hash. - # Symptom is "WARNING conda.core.prefix_data:_load_single_record(167): Ignoring malformed - # prefix record at: /nix/store/[...].json", and the package is not registered in the conda - # list, even though its files are installed. - ln -s ${libiconv} ${libiconv-filename} - ${condaInstallerEnv}/bin/conda-installer-env -c "$out/bin/conda install ${libiconv-filename}" - ''; - - binutils-fhs = (pkgs.binutils.overrideAttrs(oa: {postFixup = oa.postFixup + "echo /lib64/ld-linux-x86-64.so.2 > $out/nix-support/dynamic-linker";})); - gcc-fhs = (pkgs.gcc.override {bintools = binutils-fhs;} ); -in - buildFHSUserEnv { - name = "conda-builder-env"; - targetPkgs = pkgs: ([ condaInstalled ] ++ condaDeps ++ [ - binutils-fhs - gcc-fhs - # for llvm-or1k - cmake - ] - ); - } diff --git a/artiq-fast/conda/fake-source.nix b/artiq-fast/conda/fake-source.nix deleted file mode 100644 index 6118de0..0000000 --- a/artiq-fast/conda/fake-source.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ pkgs }: -{ name, version, src, extraSrcCommands ? "", dependencies ? [], extraYaml ? ""}: -pkgs.runCommand "conda-fake-source-${name}" { } - '' - mkdir -p $out/fake-conda; - - # work around yet more idiotic conda behavior - build breaks if write permissions aren't set on source files. - cp --no-preserve=mode,ownership -R ${src} workaround-conda - pushd workaround-conda - ${extraSrcCommands} - tar cf $out/src.tar . - popd - rm -rf workaround-conda - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: ${name} - version: ${version} - - source: - url: ../src.tar - - {% set data = load_setup_py_data() %} - - build: - noarch: python - entry_points: - # NOTE: conda-build cannot distinguish between console and gui scripts - {% for entry_point_type, entry_points in data.get("entry_points", dict()).items() -%} - {% for entry_point in entry_points -%} - - {{ entry_point }} - {% endfor %} - {% endfor %} - ignore_prefix_files: True - - requirements: - run: - ${pkgs.lib.concatStringsSep "\n" (map (s: " - ${s}") dependencies)} - - ${extraYaml} - EOF - - cat << EOF > $out/fake-conda/build.sh - #!/bin/bash - set -e - - export VERSIONEER_OVERRIDE=${version} - export LD_LIBRARY_PATH=/lib - python setup.py install \ - --prefix=\$PREFIX \ - --single-version-externally-managed \ - --record=record.txt \ - --no-compile - - EOF - chmod 755 $out/fake-conda/build.sh - '' diff --git a/artiq-fast/conda/llvm-or1k.nix b/artiq-fast/conda/llvm-or1k.nix deleted file mode 100644 index 4c54973..0000000 --- a/artiq-fast/conda/llvm-or1k.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ pkgs, version, src }: - -let - fake-src = pkgs.runCommand "conda-fake-source-llvm-or1k" { } - '' - mkdir -p $out/fake-conda; - - # work around yet more idiotic conda behavior - build breaks if write permissions aren't set on source files. - cp --no-preserve=mode,ownership -R ${src} workaround-conda - pushd workaround-conda - tar cf $out/src.tar . - popd - rm -rf workaround-conda - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: llvm-or1k - version: ${version} - - # Use the nixpkgs cmake to build, so we are less bothered by conda idiocy. - - source: - url: ../src.tar - - EOF - - cat << EOF > $out/fake-conda/build.sh - mkdir build - cd build - cmake .. \$COMPILER32 \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=\$PREFIX \ - -DLLVM_BUILD_LLVM_DYLIB=ON \ - -DLLVM_LINK_LLVM_DYLIB=ON \ - -DLLVM_TARGETS_TO_BUILD=X86\;ARM \ - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=OR1K \ - -DLLVM_ENABLE_ASSERTIONS=OFF \ - -DLLVM_INSTALL_UTILS=ON \ - -DLLVM_INCLUDE_TESTS=OFF \ - -DLLVM_INCLUDE_DOCS=OFF \ - -DLLVM_INCLUDE_EXAMPLES=OFF - make -j2 - make install - - EOF - chmod 755 $out/fake-conda/build.sh - ''; -in - import ./build.nix { inherit pkgs; } { - name = "conda-llvm-or1k"; - src = fake-src; - } diff --git a/artiq-fast/conda/llvmlite-artiq.nix b/artiq-fast/conda/llvmlite-artiq.nix deleted file mode 100644 index dabed08..0000000 --- a/artiq-fast/conda/llvmlite-artiq.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ pkgs, conda-llvm-or1k, version, src }: - -let - condaBuilderEnv = import ./builder-env.nix { inherit pkgs; }; - fake-src = pkgs.runCommand "conda-fake-source-llvmlite-artiq" { } - '' - mkdir -p $out/fake-conda; - - # work around yet more idiotic conda behavior - build breaks if write permissions aren't set on source files. - cp --no-preserve=mode,ownership -R ${src} workaround-conda - pushd workaround-conda - tar cf $out/src.tar . - popd - rm -rf workaround-conda - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: llvmlite-artiq - version: ${version} - - source: - url: ../src.tar - - # Again, we don't specify build dependencies since the conda garbage mistakenly thinks - # that they are not there if they have been installed from files. - requirements: - run: - - python<3.9 - - ncurses [linux] - EOF - - cat << EOF > $out/fake-conda/build.sh - #!/bin/bash - set -e - - export LD_LIBRARY_PATH=/lib - python setup.py install \ - --prefix=\$PREFIX \ - --single-version-externally-managed \ - --record=record.txt \ - --no-compile - - EOF - chmod 755 $out/fake-conda/build.sh - ''; -in - pkgs.stdenv.mkDerivation { - name = "conda-llvmlite-artiq"; - src = fake-src; - buildCommand = - '' - HOME=`pwd` - mkdir $out - cat << EOF > conda-commands.sh - set -e - - conda create --prefix ./conda_tmp ${conda-llvm-or1k}/*/*.tar.bz2 - conda init - source .bashrc - conda activate ./conda_tmp - - conda build --no-anaconda-upload --no-test --output-folder $out $src/fake-conda - EOF - ${condaBuilderEnv}/bin/conda-builder-env conda-commands.sh - - mkdir -p $out/nix-support - echo file conda $out/*/*.tar.bz2 >> $out/nix-support/hydra-build-products - ''; - } diff --git a/artiq-fast/conda/llvmlite-patched.nix b/artiq-fast/conda/llvmlite-patched.nix deleted file mode 100644 index 4361708..0000000 --- a/artiq-fast/conda/llvmlite-patched.nix +++ /dev/null @@ -1,88 +0,0 @@ -{ pkgs, src }: - -let - condaBuilderEnv = import ./builder-env.nix { inherit pkgs; }; - fake-src = pkgs.runCommand "conda-fake-source-llvmlite" { } - '' - mkdir -p $out/fake-conda; - - mkdir conda-sucks - pushd conda-sucks - tar xvf ${src} --strip-components=1 - tar cf $out/src.tar . - patch -p1 < ${../pkgs/llvmlite-callsite.diff} - patch -p1 < ${../pkgs/llvmlite-abiname.diff} - popd - rm -rf conda-sucks - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: llvmlite - version: 0.99 # high version number to entice the conda filth to choose it over others - - source: - url: ../src.tar - - # Again, we don't specify build dependencies since the conda garbage mistakenly thinks - # that they are not there if they have been installed from files. - requirements: - run: - - libllvm11 - - python<3.9 - - zlib - EOF - - cat << EOF > $out/fake-conda/build.sh - #!/bin/bash - set -e - - export LD_LIBRARY_PATH=/lib - python setup.py install \ - --prefix=\$PREFIX \ - --single-version-externally-managed \ - --record=record.txt \ - --no-compile - - EOF - chmod 755 $out/fake-conda/build.sh - ''; - conda-zlib = pkgs.fetchurl { - url = "https://anaconda.org/conda-forge/zlib/1.2.11/download/linux-64/zlib-1.2.11-h36c2ea0_1013.tar.bz2"; - sha256 = "sha256-zsSNs1p97wARv9qiuR5eBdKgrXiLiHGiE+uMrP63QYo="; - }; - conda-llvm = pkgs.fetchurl { - url = "https://anaconda.org/conda-forge/llvm/11.1.0/download/linux-64/llvm-11.1.0-h32600fe_2.tar.bz2"; - sha256 = "sha256-E+jnVeGHad3LH+dKqFKH0/lBuQqZKtybXF44uArmNz8="; - }; - conda-llvm-tools = pkgs.fetchurl { - url = "https://anaconda.org/conda-forge/llvm-tools/11.1.0/download/linux-64/llvm-tools-11.1.0-hf817b99_2.tar.bz2"; - sha256 = "sha256-Y87krT+d9vdVIPliJVc/szIVBRA3NNcUDdY9Gc9KpXg="; - }; - conda-llvmdev = pkgs.fetchurl { - url = "https://anaconda.org/conda-forge/llvmdev/11.1.0/download/linux-64/llvmdev-11.1.0-hf817b99_2.tar.bz2"; - sha256 = "sha256-vN87BWggPfpFp51Qm60R3D5krQ4AQwiEJaqPfVb6x40="; - }; -in - pkgs.stdenv.mkDerivation { - name = "conda-llvmlite"; - src = fake-src; - buildCommand = - '' - HOME=`pwd` - mkdir $out - cat << EOF > conda-commands.sh - set -e - - conda create --prefix ./conda_tmp ${conda-zlib} ${conda-llvm} ${conda-llvm-tools} ${conda-llvmdev} - conda init - source .bashrc - conda activate ./conda_tmp - - conda build --no-anaconda-upload --no-test --output-folder $out $src/fake-conda - EOF - ${condaBuilderEnv}/bin/conda-builder-env conda-commands.sh - - mkdir -p $out/nix-support - echo file conda $out/*/*.tar.bz2 >> $out/nix-support/hydra-build-products - ''; - } diff --git a/artiq-fast/default.nix b/artiq-fast/default.nix deleted file mode 100644 index 4ef4ca6..0000000 --- a/artiq-fast/default.nix +++ /dev/null @@ -1,172 +0,0 @@ -{ pkgs ? import { overlays = [ (import ./mozilla-overlay.nix) ]; }}: -with pkgs; -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"; } - { target = "kc705"; variant = "nist_clock"; } - ]; - boardPackages = pkgs.lib.lists.foldr (board: start: - let - boardBinaries = import ./artiq-board.nix { inherit pkgs rustPlatform; } { - target = board.target; - variant = board.variant; - }; - in - start // { - "artiq-board-${board.target}-${board.variant}" = boardBinaries; - }) {} boards; - - mainPackages = rec { - inherit (pythonDeps) sipyco asyncserial pythonparser artiq-netboot misoc migen microscope jesd204b migen-axi lit outputcheck qasync; - 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 - ((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 {}; - 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-env = (pkgs.python3.withPackages(ps: [ artiq ])).overrideAttrs (oldAttrs: { name = "${pkgs.python3.name}-artiq-env-${artiq.version}"; }); - openocd = callPackage ./pkgs/openocd.nix { }; - }; - - condaNoarch = { - conda-pythonparser = import ./conda/build.nix { inherit pkgs; } { - pname = "conda-pythonparser"; - inherit (pythonDeps.pythonparser) version; - src = import ./conda/fake-source.nix { inherit pkgs; } { - name = "pythonparser"; - inherit (pythonDeps.pythonparser) version src; - dependencies = ["regex"]; - }; - }; - conda-sipyco = import ./conda/build.nix { inherit pkgs; } { - pname = "conda-sipyco"; - inherit (pythonDeps.sipyco) version; - src = import ./conda/fake-source.nix { inherit pkgs; } { - name = "sipyco"; - inherit (pythonDeps.sipyco) version src; - dependencies = ["numpy"]; - }; - }; - conda-quamash = import ./conda/build.nix { inherit pkgs; } { - pname = "conda-quamash"; - inherit (pkgs.python3Packages.quamash) version; - src = import ./conda/fake-source.nix { inherit pkgs; } { - name = "quamash"; - inherit (pkgs.python3Packages.quamash) version src; - }; - }; - conda-qasync = import ./conda/build.nix { inherit pkgs; } { - pname = "conda-qasync"; - inherit (pythonDeps.qasync) version; - src = import ./conda/fake-source.nix { inherit pkgs; } { - name = "qasync"; - inherit (pythonDeps.qasync) version src; - }; - }; - conda-bscan-spi-bitstreams = import ./conda/bscan-spi-bitstreams.nix { - inherit pkgs; - bscan_spi_bitstreams = "${mainPackages.openocd}/share/bscan-spi-bitstreams"; - }; - conda-artiq = import ./conda/artiq.nix { inherit pkgs; }; - conda-asyncserial = import ./conda/build.nix { inherit pkgs; } { - pname = "conda-asyncserial"; - inherit (pythonDeps.asyncserial) version; - src = import ./conda/fake-source.nix { inherit pkgs; } { - name = "asyncserial"; - inherit (pythonDeps.asyncserial) version src; - dependencies = ["pyserial"]; - }; - }; - }; - - 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 { - conda-binutils-or1k = import ./conda/binutils.nix { - inherit pkgs; - inherit (mainPackages.binutils-or1k) version src; - target = "or1k-linux"; - }; - conda-binutils-arm = import ./conda/binutils.nix { - inherit pkgs; - inherit (mainPackages.binutils-arm) version src; - target = "armv7-unknown-linux-gnueabihf"; - }; - conda-llvm-or1k = import ./conda/llvm-or1k.nix { - inherit pkgs; - inherit (mainPackages.llvm-or1k) version; - src = mainPackages.llvm-or1k.llvm-src; - }; - conda-llvmlite-artiq = import ./conda/llvmlite-artiq.nix { - inherit pkgs conda-llvm-or1k; - inherit (mainPackages.llvmlite-artiq) version src; - }; - }); - - condaWindows5 = { - conda-windows-binutils-or1k = import ./conda-windows/redistribute.nix { - inherit pkgs; - name = "binutils-or1k"; - filename = "binutils-or1k-linux-2.27-h93a10e1_6.tar.bz2"; - baseurl = "https://anaconda.org/m-labs/binutils-or1k-linux/2.27/download/win-64/"; - sha256 = "0gbks36hfsx3893mihj0bdmg5vwccrq5fw8xp9b9xb8p5pr8qhzx"; - }; - conda-windows-llvm-or1k = import ./conda-windows/redistribute.nix { - inherit pkgs; - name = "llvm-or1k"; - filename = "llvm-or1k-6.0.0-25.tar.bz2"; - baseurl = "https://anaconda.org/m-labs/llvm-or1k/6.0.0/download/win-64/"; - sha256 = "06mnrg79rn9ni0d5z0x3jzb300nhqhbc2h9qbq5m50x3sgm8km63"; - }; - conda-windows-llvmlite-artiq = import ./conda-windows/redistribute.nix { - inherit pkgs; - name = "llvmlite-artiq"; - filename = "llvmlite-artiq-0.23.0.dev-py35_5.tar.bz2"; - baseurl = "https://anaconda.org/m-labs/llvmlite-artiq/0.23.0.dev/download/win-64/"; - sha256 = "10w24w5ljvan06pbvwqj4pzal072jnyynmwm42dn06pq88ryz9wj"; - }; - }; - - condaWindows6 = rec { - conda-windows-binutils-or1k = import ./conda-windows/binutils.nix { - inherit pkgs; - inherit (mainPackages.binutils-or1k) version src; - target = "or1k-linux"; - }; - conda-windows-binutils-arm = import ./conda-windows/binutils.nix { - inherit pkgs; - inherit (mainPackages.binutils-or1k) version src; - target = "armv7-unknown-linux-gnueabihf"; - }; - conda-windows-llvm-or1k = import ./conda-windows/llvm-or1k.nix { - inherit pkgs; - inherit (mainPackages.llvm-or1k) version; - src = mainPackages.llvm-or1k.llvm-src; - }; - conda-windows-llvmlite-artiq = import ./conda-windows/llvmlite-artiq.nix { - inherit pkgs conda-windows-llvm-or1k; - inherit (mainPackages.llvmlite-artiq) version src; - }; - }; - - condaWindows = if artiq6 then (if artiq7 then {} else condaWindows6) else condaWindows5; -in - boardPackages // mainPackages // condaNoarch // condaLinux // condaWindows diff --git a/artiq-fast/fetchcargo-legacy.nix b/artiq-fast/fetchcargo-legacy.nix deleted file mode 100644 index 5eacf77..0000000 --- a/artiq-fast/fetchcargo-legacy.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ stdenv, lib, cacert, git, cargo, cargo-vendor }: -{ name, src, sha256 }: -stdenv.mkDerivation { - name = "${name}-vendor"; - strictDeps = true; - nativeBuildInputs = [ cacert git cargo cargo-vendor ]; - inherit src; - - phases = "unpackPhase patchPhase installPhase"; - - installPhase = '' - if [[ ! -f Cargo.lock ]]; then - echo - echo "ERROR: The Cargo.lock file doesn't exist" - echo - echo "Cargo.lock is needed to make sure that cargoSha256 doesn't change" - echo "when the registry is updated." - echo - - exit 1 - fi - - export CARGO_HOME=$(mktemp -d cargo-home.XXX) - - cargo vendor - - cp -ar vendor $out - ''; - - outputHashAlgo = "sha256"; - outputHashMode = "recursive"; - outputHash = sha256; - - impureEnvVars = lib.fetchers.proxyImpureEnvVars; - preferLocalBuild = true; -} diff --git a/artiq-fast/mozilla-overlay.nix b/artiq-fast/mozilla-overlay.nix deleted file mode 100644 index f294a7e..0000000 --- a/artiq-fast/mozilla-overlay.nix +++ /dev/null @@ -1,10 +0,0 @@ -let - pkgs = import {}; - overlay = pkgs.fetchFromGitHub { - owner = "mozilla"; - repo = "nixpkgs-mozilla"; - rev = "0510159186dd2ef46e5464484fbdf119393afa58"; - sha256 = "sha256-HJX4Pc5ZUAg4apxB/XHuJ+6ukzvRQqeZMjscOBst2bA="; - }; -in - import overlay diff --git a/artiq-fast/pkgs/artiq-src.nix b/artiq-fast/pkgs/artiq-src.nix deleted file mode 100644 index 004f263..0000000 --- a/artiq-fast/pkgs/artiq-src.nix +++ /dev/null @@ -1 +0,0 @@ -{ fetchgit }: diff --git a/artiq-fast/pkgs/artiq-timestamp.nix b/artiq-fast/pkgs/artiq-timestamp.nix deleted file mode 100644 index f1669c2..0000000 --- a/artiq-fast/pkgs/artiq-timestamp.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ stdenv, git, fetchgit }: -let - artiq-timestamp = stdenv.mkDerivation { - name = "artiq-timestamp"; - src = import ./artiq-src.nix { inherit fetchgit; }; - buildPhase = '' - TIMESTAMP=`${git}/bin/git log -1 --format=%ct` - ''; - installPhase = '' - echo -n $TIMESTAMP > $out - ''; - }; -in - builtins.readFile artiq-timestamp diff --git a/artiq-fast/pkgs/artiq-version.nix b/artiq-fast/pkgs/artiq-version.nix deleted file mode 100644 index 6363d5e..0000000 --- a/artiq-fast/pkgs/artiq-version.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ stdenv, git, fetchgit }: -let - artiq-version = stdenv.mkDerivation { - name = "artiq-version"; - src = import ./artiq-src.nix { inherit fetchgit; }; - # keep in sync with ../../artiq-fast.nix - buildPhase = '' - REV=`${git}/bin/git rev-parse HEAD` - MAJOR_VERSION=`cat MAJOR_VERSION` - if [ -e BETA ]; then - SUFFIX=".beta" - else - SUFFIX="" - fi - COMMIT_COUNT=`${git}/bin/git rev-list --count HEAD` - ''; - installPhase = '' - echo -n $MAJOR_VERSION.$COMMIT_COUNT.`cut -c1-8 <<< $REV`$SUFFIX > $out - ''; - }; -in - builtins.readFile artiq-version diff --git a/artiq-fast/pkgs/artiq.nix b/artiq-fast/pkgs/artiq.nix deleted file mode 100644 index 2dbf81b..0000000 --- a/artiq-fast/pkgs/artiq.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ 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 }: - -python3Packages.buildPythonPackage rec { - pname = "artiq"; - version = import ./artiq-version.nix { inherit stdenv fetchgit git; }; - src = import ./artiq-src.nix { inherit fetchgit; }; - - 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 ]) - ++ [(if (lib.strings.versionAtLeast version "6.0") then pythonDeps.qasync else python3Packages.quamash)]; - - dontWrapQtApps = true; - postFixup = '' - wrapQtApp "$out/bin/artiq_dashboard" - wrapQtApp "$out/bin/artiq_browser" - wrapQtApp "$out/bin/artiq_session" - ''; - - # Modifies PATH to pass the wrapped python environment (i.e. python3.withPackages(...) to subprocesses. - # Allows subprocesses using python to find all packages you have installed - makeWrapperArgs = [ - ''--run 'if [ ! -z "$NIX_PYTHONPREFIX" ]; then export PATH=$NIX_PYTHONPREFIX/bin:$PATH;fi' '' - "--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 ]); - 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 - ''; - - - meta = with lib; { - description = "A leading-edge control system for quantum information experiments"; - homepage = https://m-labs/artiq; - license = licenses.lgpl3; - maintainers = [ maintainers.sb0 ]; - }; -} diff --git a/artiq-fast/pkgs/binutils.nix b/artiq-fast/pkgs/binutils.nix deleted file mode 100644 index 5f06028..0000000 --- a/artiq-fast/pkgs/binutils.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ stdenv, lib, buildPackages -, fetchurl, zlib -, platform, target -}: - -stdenv.mkDerivation rec { - basename = "binutils"; - inherit platform; - version = "2.30"; - name = "${basename}-${platform}-${version}"; - src = fetchurl { - url = "https://ftp.gnu.org/gnu/binutils/binutils-${version}.tar.bz2"; - sha256 = "028cklfqaab24glva1ks2aqa1zxa6w6xmc8q34zs1sb7h22dxspg"; - }; - configureFlags = - [ "--enable-shared" "--enable-deterministic-archives" "--target=${target}"]; - outputs = [ "out" "info" "man" ]; - depsBuildBuild = [ buildPackages.stdenv.cc ]; - buildInputs = [ zlib ]; - enableParallelBuilding = true; - meta = { - description = "Tools for manipulating binaries (linker, assembler, etc.)"; - longDescription = '' - The GNU Binutils are a collection of binary tools. The main - ones are `ld' (the GNU linker) and `as' (the GNU assembler). - They also include the BFD (Binary File Descriptor) library, - `gprof', `nm', `strip', etc. - ''; - homepage = http://www.gnu.org/software/binutils/; - license = lib.licenses.gpl3Plus; - /* Give binutils a lower priority than gcc-wrapper to prevent a - collision due to the ld/as wrappers/symlinks in the latter. */ - priority = "10"; - }; -} diff --git a/artiq-fast/pkgs/libartiq-support.nix b/artiq-fast/pkgs/libartiq-support.nix deleted file mode 100644 index 7f5a9d1..0000000 --- a/artiq-fast/pkgs/libartiq-support.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ stdenv, fetchgit, git, rustc }: -stdenv.mkDerivation rec { - pname = "libartiq-support"; - version = import ./artiq-version.nix { inherit stdenv fetchgit git; }; - - src = import ./artiq-src.nix { inherit fetchgit; }; - - buildInputs = [ rustc ]; - phases = [ "buildPhase" ]; - buildPhase = - '' - mkdir $out - rustc $src/artiq/test/libartiq_support/lib.rs --out-dir $out -Cpanic=unwind -g - ''; -} diff --git a/artiq-fast/pkgs/llvm-or1k.nix b/artiq-fast/pkgs/llvm-or1k.nix deleted file mode 100644 index 5b7820d..0000000 --- a/artiq-fast/pkgs/llvm-or1k.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ stdenv, lib -, fetchFromGitHub, runCommand -, perl, groff, cmake, libxml2, python, libffi, valgrind -}: - -let - llvm-src = fetchFromGitHub { - rev = "7746fe85489e92e1caffda18b9d7b2ae9e5da1a8"; - owner = "m-labs"; - repo = "llvm-or1k"; - sha256 = "0jqbb3k9r91swsyrdak8fzvs1qi451zy8dqmpqriaxk5g83ny5b7"; - }; - clang-src = fetchFromGitHub { - rev = "9e996136d52ed506ed8f57ef8b13b0f0f735e6a3"; - owner = "m-labs"; - repo = "clang-or1k"; - sha256 = "0w5f450i76y162aswi2c7jip8x3arzljaxhbqp8qfdffm0rdbjp4"; - }; - llvm-clang-src = runCommand "llvm-clang-src" {} - '' - mkdir -p $out - mkdir -p $out/tools/clang - cp -r ${llvm-src}/* $out/ - cp -r ${clang-src}/* $out/tools/clang - ''; -in - stdenv.mkDerivation rec { - pname = "llvm-or1k"; - version = "6.0.0"; - passthru.llvm-src = llvm-src; - src = llvm-clang-src; - - buildInputs = [ perl groff cmake libxml2 python libffi ] ++ lib.optional stdenv.isLinux valgrind; - - preBuild = '' - NIX_BUILD_CORES=4 - makeFlagsArray=(-j''$NIX_BUILD_CORES) - mkdir -p $out/ - ''; - - cmakeFlags = with stdenv; [ - "-DCMAKE_BUILD_TYPE=Release" - "-DLLVM_BUILD_LLVM_DYLIB=ON" - "-DLLVM_LINK_LLVM_DYLIB=ON" - "-DLLVM_TARGETS_TO_BUILD=X86;ARM" - "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=OR1K" - "-DLLVM_ENABLE_ASSERTIONS=OFF" - "-DLLVM_INSTALL_UTILS=ON" - "-DLLVM_INCLUDE_TESTS=OFF" - "-DLLVM_INCLUDE_DOCS=OFF" - "-DLLVM_INCLUDE_EXAMPLES=OFF" - "-DCLANG_ENABLE_ARCMT=OFF" - "-DCLANG_ENABLE_STATIC_ANALYZER=OFF" - "-DCLANG_INCLUDE_TESTS=OFF" - "-DCLANG_INCLUDE_DOCS=OFF" - ]; - - enableParallelBuilding = true; - meta = { - description = "Collection of modular and reusable compiler and toolchain technologies"; - homepage = http://llvm.org/; - license = lib.licenses.bsd3; - maintainers = with lib.maintainers; [ sb0 ]; - platforms = lib.platforms.all; - }; - } diff --git a/artiq-fast/pkgs/llvmlite-abiname.diff b/artiq-fast/pkgs/llvmlite-abiname.diff deleted file mode 100644 index 7162ae0..0000000 --- a/artiq-fast/pkgs/llvmlite-abiname.diff +++ /dev/null @@ -1,62 +0,0 @@ -diff --git a/ffi/targets.cpp b/ffi/targets.cpp -index 98de259fc..1ce472c20 100644 ---- a/ffi/targets.cpp -+++ b/ffi/targets.cpp -@@ -182,7 +182,8 @@ LLVMPY_CreateTargetMachine(LLVMTargetRef T, - const char *RelocModel, - const char *CodeModel, - int PrintMC, -- int JIT) -+ int JIT, -+ const char *ABIName) - { - using namespace llvm; - CodeGenOpt::Level cgol; -@@ -233,6 +234,7 @@ LLVMPY_CreateTargetMachine(LLVMTargetRef T, - - TargetOptions opt; - opt.PrintMachineCode = PrintMC; -+ opt.MCOptions.ABIName = ABIName; - - bool jit = JIT; - -diff --git a/llvmlite/binding/targets.py b/llvmlite/binding/targets.py -index eb53f09f2..a7e6ffdc3 100644 ---- a/llvmlite/binding/targets.py -+++ b/llvmlite/binding/targets.py -@@ -218,7 +218,7 @@ def __str__(self): - - def create_target_machine(self, cpu='', features='', - opt=2, reloc='default', codemodel='jitdefault', -- printmc=False, jit=False): -+ printmc=False, jit=False, abiname=''): - """ - Create a new TargetMachine for this target and the given options. - -@@ -230,6 +230,9 @@ def create_target_machine(self, cpu='', features='', - - The `jit` option should be set when the target-machine is to be used - in a JIT engine. -+ -+ The `abiname` option specifies the ABI. RISC-V targets with hard-float -+ needs to pass the ABI name to LLVM. - """ - assert 0 <= opt <= 3 - assert reloc in RELOC -@@ -249,6 +252,7 @@ def create_target_machine(self, cpu='', features='', - _encode_string(codemodel), - int(printmc), - int(jit), -+ _encode_string(abiname), - ) - if tm: - return TargetMachine(tm) -@@ -403,6 +407,8 @@ def has_svml(): - c_int, - # JIT - c_int, -+ # ABIName -+ c_char_p, - ] - ffi.lib.LLVMPY_CreateTargetMachine.restype = ffi.LLVMTargetMachineRef - diff --git a/artiq-fast/pkgs/llvmlite-artiq.nix b/artiq-fast/pkgs/llvmlite-artiq.nix deleted file mode 100644 index 81308e2..0000000 --- a/artiq-fast/pkgs/llvmlite-artiq.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ stdenv, lib, fetchFromGitHub, llvm-or1k, makeWrapper, python3, ncurses, zlib, python3Packages }: -python3Packages.buildPythonPackage rec { - pname = "llvmlite-artiq"; - version = "0.23.0.dev"; - src = fetchFromGitHub { - rev = "158f9d3a898dbf055ca513d69505df288c681fea"; - owner = "m-labs"; - repo = "llvmlite"; - sha256 = "1anniwya5jhhr2sxfdnwrsjy17yrk3x61i9hsm1rljsb8zvh68d5"; - }; - - buildInputs = [ makeWrapper python3 ncurses zlib llvm-or1k python3Packages.setuptools ]; - - preBuild = "export LLVM_CONFIG=${llvm-or1k}/bin/llvm-config"; - - meta = with lib; { - description = "A lightweight LLVM python binding for writing JIT compilers"; - homepage = "http://llvmlite.pydata.org/"; - maintainers = with maintainers; [ sb0 ]; - license = licenses.bsd2; - platforms = platforms.unix; - }; -} diff --git a/artiq-fast/pkgs/llvmlite-callsite.diff b/artiq-fast/pkgs/llvmlite-callsite.diff deleted file mode 100644 index b18529b..0000000 --- a/artiq-fast/pkgs/llvmlite-callsite.diff +++ /dev/null @@ -1,185 +0,0 @@ -diff --git a/llvmlite/ir/builder.py b/llvmlite/ir/builder.py -index f18a8d8bd..b4958770e 100644 ---- a/llvmlite/ir/builder.py -+++ b/llvmlite/ir/builder.py -@@ -872,14 +872,14 @@ def resume(self, landingpad): - # Call APIs - - def call(self, fn, args, name='', cconv=None, tail=False, fastmath=(), -- attrs=()): -+ attrs=(), arg_attrs=None): - """ - Call function *fn* with *args*: - name = fn(args...) - """ - inst = instructions.CallInstr(self.block, fn, args, name=name, - cconv=cconv, tail=tail, fastmath=fastmath, -- attrs=attrs) -+ attrs=attrs, arg_attrs=arg_attrs) - self._insert(inst) - return inst - -@@ -908,9 +908,11 @@ def store_reg(self, value, reg_type, reg_name, name=''): - return self.asm(ftype, "", "{%s}" % reg_name, [value], True, name) - - def invoke(self, fn, args, normal_to, unwind_to, -- name='', cconv=None, tail=False): -+ name='', cconv=None, fastmath=(), attrs=(), arg_attrs=None): - inst = instructions.InvokeInstr(self.block, fn, args, normal_to, -- unwind_to, name=name, cconv=cconv) -+ unwind_to, name=name, cconv=cconv, -+ fastmath=fastmath, attrs=attrs, -+ arg_attrs=arg_attrs) - self._set_terminator(inst) - return inst - -diff --git a/llvmlite/ir/instructions.py b/llvmlite/ir/instructions.py -index 7e82ee032..f337c1586 100644 ---- a/llvmlite/ir/instructions.py -+++ b/llvmlite/ir/instructions.py -@@ -5,7 +5,7 @@ - from llvmlite.ir import types - from llvmlite.ir.values import (Block, Function, Value, NamedValue, Constant, - MetaDataArgument, MetaDataString, AttributeSet, -- Undefined) -+ Undefined, ArgumentAttributes) - from llvmlite.ir._utils import _HasMetadata - - -@@ -63,13 +63,20 @@ class FastMathFlags(AttributeSet): - - class CallInstr(Instruction): - def __init__(self, parent, func, args, name='', cconv=None, tail=False, -- fastmath=(), attrs=()): -+ fastmath=(), attrs=(), arg_attrs=None): - self.cconv = (func.calling_convention - if cconv is None and isinstance(func, Function) - else cconv) - self.tail = tail - self.fastmath = FastMathFlags(fastmath) - self.attributes = CallInstrAttributes(attrs) -+ self.arg_attributes = {} -+ if arg_attrs: -+ for idx, attrs in arg_attrs.items(): -+ if not (0 <= idx < len(args)): -+ raise ValueError("Invalid argument index {}" -+ .format(idx)) -+ self.arg_attributes[idx] = ArgumentAttributes(attrs) - - # Fix and validate arguments - args = list(args) -@@ -111,8 +118,13 @@ def called_function(self): - return self.callee - - def _descr(self, buf, add_metadata): -- args = ', '.join(['{0} {1}'.format(a.type, a.get_reference()) -- for a in self.args]) -+ def descr_arg(i, a): -+ if i in self.arg_attributes: -+ attrs = ' '.join(self.arg_attributes[i]._to_list()) + ' ' -+ else: -+ attrs = '' -+ return '{0} {1}{2}'.format(a.type, attrs, a.get_reference()) -+ args = ', '.join([descr_arg(i, a) for i, a in enumerate(self.args)]) - - fnty = self.callee.function_type - # Only print function type if variable-argument -@@ -142,10 +154,12 @@ def descr(self, buf): - - class InvokeInstr(CallInstr): - def __init__(self, parent, func, args, normal_to, unwind_to, name='', -- cconv=None): -+ cconv=None, fastmath=(), attrs=(), arg_attrs=None): - assert isinstance(normal_to, Block) - assert isinstance(unwind_to, Block) -- super(InvokeInstr, self).__init__(parent, func, args, name, cconv) -+ super(InvokeInstr, self).__init__(parent, func, args, name, cconv, -+ tail=False, fastmath=fastmath, -+ attrs=attrs, arg_attrs=arg_attrs) - self.opname = "invoke" - self.normal_to = normal_to - self.unwind_to = unwind_to -diff --git a/llvmlite/tests/test_ir.py b/llvmlite/tests/test_ir.py -index e97e528ac..ab5864719 100644 ---- a/llvmlite/tests/test_ir.py -+++ b/llvmlite/tests/test_ir.py -@@ -1181,6 +1181,39 @@ def test_call_metadata(self): - call void @"llvm.dbg.declare"(metadata i32* %"a", metadata !0, metadata !0) - """) # noqa E501 - -+ def test_call_attributes(self): -+ block = self.block(name='my_block') -+ builder = ir.IRBuilder(block) -+ fun_ty = ir.FunctionType( -+ ir.VoidType(), (int32.as_pointer(), int32, int32.as_pointer())) -+ fun = ir.Function(builder.function.module, fun_ty, 'fun') -+ fun.args[0].add_attribute('sret') -+ retval = builder.alloca(int32, name='retval') -+ other = builder.alloca(int32, name='other') -+ builder.call( -+ fun, -+ (retval, ir.Constant(int32, 42), other), -+ arg_attrs={ -+ 0: ('sret', 'noalias'), -+ 2: 'noalias' -+ } -+ ) -+ self.check_block(block, """\ -+ my_block: -+ %"retval" = alloca i32 -+ %"other" = alloca i32 -+ call void @"fun"(i32* noalias sret %"retval", i32 42, i32* noalias %"other") -+ """) # noqa E501 -+ -+ def test_invalid_call_attributes(self): -+ block = self.block() -+ builder = ir.IRBuilder(block) -+ fun_ty = ir.FunctionType(ir.VoidType(), ()) -+ fun = ir.Function(builder.function.module, fun_ty, 'fun') -+ with self.assertRaises(ValueError): -+ # The function has no arguments, so this should fail. -+ builder.call(fun, (), arg_attrs={0: 'sret'}) -+ - def test_invoke(self): - block = self.block(name='my_block') - builder = ir.IRBuilder(block) -@@ -1196,6 +1229,39 @@ def test_invoke(self): - to label %"normal" unwind label %"unwind" - """) - -+ def test_invoke_attributes(self): -+ block = self.block(name='my_block') -+ builder = ir.IRBuilder(block) -+ fun_ty = ir.FunctionType( -+ ir.VoidType(), (int32.as_pointer(), int32, int32.as_pointer())) -+ fun = ir.Function(builder.function.module, fun_ty, 'fun') -+ fun.calling_convention = "fastcc" -+ fun.args[0].add_attribute('sret') -+ retval = builder.alloca(int32, name='retval') -+ other = builder.alloca(int32, name='other') -+ bb_normal = builder.function.append_basic_block(name='normal') -+ bb_unwind = builder.function.append_basic_block(name='unwind') -+ builder.invoke( -+ fun, -+ (retval, ir.Constant(int32, 42), other), -+ bb_normal, -+ bb_unwind, -+ cconv='fastcc', -+ fastmath='fast', -+ attrs='noinline', -+ arg_attrs={ -+ 0: ('sret', 'noalias'), -+ 2: 'noalias' -+ } -+ ) -+ self.check_block(block, """\ -+ my_block: -+ %"retval" = alloca i32 -+ %"other" = alloca i32 -+ invoke fast fastcc void @"fun"(i32* noalias sret %"retval", i32 42, i32* noalias %"other") noinline -+ to label %"normal" unwind label %"unwind" -+ """) # noqa E501 -+ - def test_landingpad(self): - block = self.block(name='my_block') - builder = ir.IRBuilder(block) diff --git a/artiq-fast/pkgs/llvmlite-llvm11.nix b/artiq-fast/pkgs/llvmlite-llvm11.nix deleted file mode 100644 index 9bc140a..0000000 --- a/artiq-fast/pkgs/llvmlite-llvm11.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ python3Packages, llvm_11 }: - -python3Packages.buildPythonPackage rec { - pname = "llvmlite"; - version = "0.37.0-artiq"; - src = python3Packages.fetchPypi { - inherit pname; - version = "0.37.0"; - sha256 = "sha256-Y5K4cM0BjsDGRda7uRjWqg7sqMYmdLqu4whi1raGWxU="; - }; - # https://github.com/numba/llvmlite/pull/702 - # https://github.com/numba/llvmlite/pull/775 - patches = [ ./llvmlite-callsite.diff ./llvmlite-abiname.diff ]; - nativeBuildInputs = [ llvm_11 ]; - # Disable static linking - # https://github.com/numba/llvmlite/issues/93 - postPatch = '' - substituteInPlace ffi/Makefile.linux --replace "-static-libstdc++" "" - substituteInPlace llvmlite/tests/test_binding.py --replace "test_linux" "nope" - ''; - # Set directory containing llvm-config binary - preConfigure = '' - export LLVM_CONFIG=${llvm_11.dev}/bin/llvm-config - ''; - doCheck = false; # FIXME -} diff --git a/artiq-fast/pkgs/openocd-jtagspi.diff b/artiq-fast/pkgs/openocd-jtagspi.diff deleted file mode 100644 index 13b8227..0000000 --- a/artiq-fast/pkgs/openocd-jtagspi.diff +++ /dev/null @@ -1,830 +0,0 @@ -diff --git a/doc/openocd.texi b/doc/openocd.texi -index 138922d08..ad9f10d2e 100644 ---- a/doc/openocd.texi -+++ b/doc/openocd.texi -@@ -5565,6 +5565,10 @@ will not work. These include all @command{*_image} and - functionality is available through the @command{flash write_bank}, - @command{flash read_bank}, and @command{flash verify_bank} commands. - -+According to device size, 1- to 4-byte addresses are sent. However, some -+flash chips additionally have to be switched to 4-byte addresses by an extra -+command, see below. -+ - @itemize - @item @var{ir} ... is loaded into the JTAG IR to map the flash as the JTAG DR. - For the bitstreams generated from @file{xilinx_bscan_spi.py} this is the -@@ -5577,6 +5581,29 @@ set _XILINX_USER1 0x02 - flash bank $_FLASHNAME spi 0x0 0 0 0 \ - $_TARGETNAME $_XILINX_USER1 - @end example -+ -+@deffn Command {jtagspi set} bank_id name total_size page_size read_cmd unused pprg_cmd mass_erase_cmd sector_size sector_erase_cmd -+Sets flash parameters: @var{name} human readable string, @var{total_size} -+size in bytes, @var{page_size} is write page size. @var{read_cmd} and @var{pprg_cmd} -+are commands for read and page program, respectively. @var{mass_erase_cmd}, -+@var{sector_size} and @var{sector_erase_cmd} are optional. -+@example -+jtagspi set 0 w25q128 0x1000000 0x100 0x03 0 0x02 0xC7 0x10000 0xD8 -+@end example -+@end deffn -+ -+@deffn Command {jtagspi cmd} bank_id resp_num cmd_byte ... -+Sends command @var{cmd_byte} and at most 20 following bytes and reads -+@var{resp_num} bytes afterwards. E.g. for 'Enter 4-byte address mode' -+@example -+jtagspi cmd 0 0 0xB7 -+@end example -+@end deffn -+ -+@deffn Command {jtagspi always_4byte} bank_id [ on | off ] -+Some devices use 4-byte addresses for all commands except the legacy 0x03 read -+regardless of device size. This command controls the corresponding hack. -+@end deffn - @end deffn - - @deffn {Flash Driver} {xcf} -diff --git a/src/flash/nor/jtagspi.c b/src/flash/nor/jtagspi.c -index dc49fda61..e9a643d12 100644 ---- a/src/flash/nor/jtagspi.c -+++ b/src/flash/nor/jtagspi.c -@@ -29,9 +29,12 @@ - - struct jtagspi_flash_bank { - struct jtag_tap *tap; -- const struct flash_device *dev; -+ struct flash_device dev; -+ char devname[32]; - bool probed; -+ bool always_4byte; /* use always 4-byte address except for basic read 0x03 */ - uint32_t ir; -+ unsigned int addr_len; /* address length in bytes */ - }; - - FLASH_BANK_COMMAND_HANDLER(jtagspi_flash_bank_command) -@@ -42,10 +45,11 @@ FLASH_BANK_COMMAND_HANDLER(jtagspi_flash_bank_command) - return ERROR_COMMAND_SYNTAX_ERROR; - - info = malloc(sizeof(struct jtagspi_flash_bank)); -- if (!info) { -+ if (info == NULL) { - LOG_ERROR("no memory for flash bank info"); - return ERROR_FAIL; - } -+ bank->sectors = NULL; - bank->driver_priv = info; - - info->tap = NULL; -@@ -69,70 +73,59 @@ static void jtagspi_set_ir(struct flash_bank *bank) - jtag_add_ir_scan(info->tap, &field, TAP_IDLE); - } - --static void flip_u8(uint8_t *in, uint8_t *out, int len) -+static void flip_u8(const uint8_t *in, uint8_t *out, unsigned int len) - { -- for (int i = 0; i < len; i++) -+ for (unsigned int i = 0; i < len; i++) - out[i] = flip_u32(in[i], 8); - } - - static int jtagspi_cmd(struct flash_bank *bank, uint8_t cmd, -- uint32_t *addr, uint8_t *data, int len) -+ uint8_t *write_buffer, unsigned int write_len, uint8_t *data_buffer, int data_len) - { -- struct jtagspi_flash_bank *info = bank->driver_priv; -+ assert(write_buffer || write_len == 0); -+ assert(data_buffer || data_len == 0); -+ - struct scan_field fields[6]; -- uint8_t marker = 1; -- uint8_t xfer_bits_buf[4]; -- uint8_t addr_buf[3]; -- uint8_t *data_buf; -- uint32_t xfer_bits; -- int is_read, lenb, n; - -- /* LOG_DEBUG("cmd=0x%02x len=%i", cmd, len); */ -+ LOG_DEBUG("cmd=0x%02x write_len=%d data_len=%d", cmd, write_len, data_len); - -- is_read = (len < 0); -+ /* negative data_len == read operation */ -+ const bool is_read = (data_len < 0); - if (is_read) -- len = -len; -- -- n = 0; -+ data_len = -data_len; - -+ int n = 0; -+ const uint8_t marker = 1; - fields[n].num_bits = 1; - fields[n].out_value = ▮ - fields[n].in_value = NULL; - n++; - -- xfer_bits = 8 + len - 1; -- /* cmd + read/write - 1 due to the counter implementation */ -- if (addr) -- xfer_bits += 24; -- h_u32_to_be(xfer_bits_buf, xfer_bits); -- flip_u8(xfer_bits_buf, xfer_bits_buf, 4); -- fields[n].num_bits = 32; -- fields[n].out_value = xfer_bits_buf; -+ /* transfer length = cmd + address + read/write, -+ * -1 due to the counter implementation */ -+ uint8_t xfer_bits[4]; -+ h_u32_to_be(xfer_bits, ((sizeof(cmd) + write_len + data_len) * CHAR_BIT) - 1); -+ flip_u8(xfer_bits, xfer_bits, sizeof(xfer_bits)); -+ fields[n].num_bits = sizeof(xfer_bits) * CHAR_BIT; -+ fields[n].out_value = xfer_bits; - fields[n].in_value = NULL; - n++; - -- cmd = flip_u32(cmd, 8); -- fields[n].num_bits = 8; -+ flip_u8(&cmd, &cmd, sizeof(cmd)); -+ fields[n].num_bits = sizeof(cmd) * CHAR_BIT; - fields[n].out_value = &cmd; - fields[n].in_value = NULL; - n++; - -- if (addr) { -- h_u24_to_be(addr_buf, *addr); -- flip_u8(addr_buf, addr_buf, 3); -- fields[n].num_bits = 24; -- fields[n].out_value = addr_buf; -+ if (write_len) { -+ flip_u8(write_buffer, write_buffer, write_len); -+ fields[n].num_bits = write_len * CHAR_BIT; -+ fields[n].out_value = write_buffer; - fields[n].in_value = NULL; - n++; - } - -- lenb = DIV_ROUND_UP(len, 8); -- data_buf = malloc(lenb); -- if (lenb > 0) { -- if (!data_buf) { -- LOG_ERROR("no memory for spi buffer"); -- return ERROR_FAIL; -- } -+ if (data_len > 0) { - if (is_read) { - fields[n].num_bits = jtag_tap_count_enabled(); - fields[n].out_value = NULL; -@@ -140,78 +133,313 @@ static int jtagspi_cmd(struct flash_bank *bank, uint8_t cmd, - n++; - - fields[n].out_value = NULL; -- fields[n].in_value = data_buf; -+ fields[n].in_value = data_buffer; - } else { -- flip_u8(data, data_buf, lenb); -- fields[n].out_value = data_buf; -+ flip_u8(data_buffer, data_buffer, data_len); -+ fields[n].out_value = data_buffer; - fields[n].in_value = NULL; - } -- fields[n].num_bits = len; -+ fields[n].num_bits = data_len * CHAR_BIT; - n++; - } - - jtagspi_set_ir(bank); - /* passing from an IR scan to SHIFT-DR clears BYPASS registers */ -+ struct jtagspi_flash_bank *info = bank->driver_priv; - jtag_add_dr_scan(info->tap, n, fields, TAP_IDLE); - int retval = jtag_execute_queue(); - - if (is_read) -- flip_u8(data_buf, data, lenb); -- free(data_buf); -+ flip_u8(data_buffer, data_buffer, data_len); - return retval; - } - -+COMMAND_HANDLER(jtagspi_handle_set) -+{ -+ struct flash_bank *bank = NULL; -+ struct jtagspi_flash_bank *info = NULL; -+ struct flash_sector *sectors = NULL; -+ uint32_t temp; -+ unsigned int index = 1; -+ int retval; -+ -+ LOG_DEBUG("%s", __func__); -+ -+ /* there are 6 mandatory arguments: -+ * devname, size_in_bytes, pagesize, read_cmd, unused, pprog_cmd */ -+ if (index + 6 > CMD_ARGC) { -+ command_print(CMD, "jtagspi: not enough arguments"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank); -+ if (ERROR_OK != retval) -+ return retval; -+ info = bank->driver_priv; -+ -+ /* invalidate all old info */ -+ if (info->probed) { -+ bank->size = 0; -+ bank->num_sectors = 0; -+ if (bank->sectors) -+ free(bank->sectors); -+ bank->sectors = NULL; -+ info->always_4byte = false; -+ info->probed = false; -+ } -+ memset(&info->dev, 0, sizeof(info->dev)); -+ -+ strncpy(info->devname, CMD_ARGV[index++], sizeof(info->devname) - 1); -+ info->devname[sizeof(info->devname) - 1] = '\0'; -+ -+ COMMAND_PARSE_NUMBER(u32, CMD_ARGV[index++], temp); -+ info->dev.size_in_bytes = temp; -+ if ((temp & (temp - 1)) || (temp < (1UL << 8))) { -+ command_print(CMD, "jtagspi: device size must be 2^n with n >= 8"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ COMMAND_PARSE_NUMBER(u32, CMD_ARGV[index++], temp); -+ info->dev.pagesize = temp; -+ if (info->dev.pagesize == 0) -+ info->dev.pagesize = SPIFLASH_DEF_PAGESIZE; -+ if ((temp & (temp - 1)) || (temp > info->dev.size_in_bytes)) { -+ command_print(CMD, "jtagspi: page size must be 2^n and <= device size"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ COMMAND_PARSE_NUMBER(u8, CMD_ARGV[index++], info->dev.read_cmd); -+ if ((info->dev.read_cmd != 0x03) && -+ (info->dev.read_cmd != 0x13)) { -+ command_print(CMD, "jtagspi: only 0x03/0x13 READ allowed"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ COMMAND_PARSE_NUMBER(u8, CMD_ARGV[index++], info->dev.qread_cmd); -+ -+ COMMAND_PARSE_NUMBER(u8, CMD_ARGV[index++], info->dev.pprog_cmd); -+ if ((info->dev.pprog_cmd != 0x02) && -+ (info->dev.pprog_cmd != 0x12)) { -+ command_print(CMD, "jtagspi: only 0x02/0x12 PPRG allowed"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ /* remaining params are optional */ -+ if (index < CMD_ARGC) -+ COMMAND_PARSE_NUMBER(u8, CMD_ARGV[index++], info->dev.chip_erase_cmd); -+ else -+ info->dev.chip_erase_cmd = 0x00; -+ -+ if (index < CMD_ARGC) { -+ COMMAND_PARSE_NUMBER(u32, CMD_ARGV[index++], temp); -+ info->dev.sectorsize = temp; -+ if ((info->dev.sectorsize > info->dev.size_in_bytes) || -+ (info->dev.sectorsize < info->dev.pagesize) || (temp & (temp - 1))) { -+ command_print(CMD, "jtagspi: sector size must be 2^n and <= device size"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ if (index < CMD_ARGC) -+ COMMAND_PARSE_NUMBER(u8, CMD_ARGV[index++], info->dev.erase_cmd); -+ else { -+ command_print(CMD, "jtagspi: erase command missing"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ } else { -+ /* no sector size / sector erase cmd given, treat whole bank as a single sector */ -+ info->dev.erase_cmd = 0x00; -+ info->dev.sectorsize = info->dev.size_in_bytes; -+ } -+ -+ if (index < CMD_ARGC) { -+ command_print(CMD, "jtagspi: extra arguments"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ /* set correct size value */ -+ bank->size = info->dev.size_in_bytes; -+ -+ /* calculate address length in bytes */ -+ if (bank->size <= (1UL << 8)) -+ info->addr_len = 1; -+ else if (bank->size <= (1UL << 16)) -+ info->addr_len = 2; -+ else if (bank->size <= (1UL << 24)) -+ info->addr_len = 3; -+ else { -+ info->addr_len = 4; -+ LOG_WARNING("4-byte addresses needed, might need extra command to enable"); -+ } -+ -+ /* create and fill sectors array */ -+ bank->num_sectors = -+ info->dev.size_in_bytes / info->dev.sectorsize; -+ sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors); -+ if (sectors == NULL) { -+ LOG_ERROR("Not enough memory"); -+ return ERROR_FAIL; -+ } -+ -+ for (unsigned int sector = 0; sector < bank->num_sectors; sector++) { -+ sectors[sector].offset = sector * (info->dev.sectorsize); -+ sectors[sector].size = info->dev.sectorsize; -+ sectors[sector].is_erased = -1; -+ sectors[sector].is_protected = 0; -+ } -+ -+ bank->sectors = sectors; -+ info->dev.name = info->devname; -+ if (info->dev.size_in_bytes / 4096) -+ LOG_INFO("flash \'%s\' id = unknown\nflash size = %" PRIu32 " kbytes", -+ info->dev.name, info->dev.size_in_bytes / 1024); -+ else -+ LOG_INFO("flash \'%s\' id = unknown\nflash size = %" PRIu32 " bytes", -+ info->dev.name, info->dev.size_in_bytes); -+ info->probed = true; -+ -+ return ERROR_OK; -+} -+ -+COMMAND_HANDLER(jtagspi_handle_cmd) -+{ -+ struct flash_bank *bank; -+ unsigned int index = 1; -+ const int max = 21; -+ uint8_t num_write, num_read, write_buffer[max], read_buffer[1 << CHAR_BIT]; -+ uint8_t data, *ptr; -+ char temp[4], output[(2 + max + (1 << CHAR_BIT)) * 3 + 8]; -+ int retval; -+ -+ LOG_DEBUG("%s", __func__); -+ -+ if (CMD_ARGC < 3) { -+ command_print(CMD, "jtagspi: not enough arguments"); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ num_write = CMD_ARGC - 2; -+ if (num_write > max) { -+ LOG_ERROR("at most %d bytes may be send", max); -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ } -+ -+ retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank); -+ if (ERROR_OK != retval) -+ return retval; -+ -+ COMMAND_PARSE_NUMBER(u8, CMD_ARGV[index++], num_read); -+ -+ snprintf(output, sizeof(output), "spi: "); -+ for (ptr = &write_buffer[0] ; index < CMD_ARGC; index++) { -+ COMMAND_PARSE_NUMBER(u8, CMD_ARGV[index], data); -+ *ptr++ = data; -+ snprintf(temp, sizeof(temp), "%02" PRIx8 " ", data); -+ strncat(output, temp, sizeof(output) - strlen(output) - 1); -+ } -+ strncat(output, "-> ", sizeof(output) - strlen(output) - 1); -+ -+ /* process command */ -+ ptr = &read_buffer[0]; -+ jtagspi_cmd(bank, write_buffer[0], &write_buffer[1], num_write - 1, ptr, -num_read); -+ if (retval != ERROR_OK) -+ return retval; -+ -+ for ( ; num_read > 0; num_read--) { -+ snprintf(temp, sizeof(temp), "%02" PRIx8 " ", *ptr++); -+ strncat(output, temp, sizeof(output) - strlen(output) - 1); -+ } -+ command_print(CMD, "%s", output); -+ -+ return ERROR_OK; -+} -+ -+COMMAND_HANDLER(jtagspi_handle_always_4byte) -+{ -+ struct flash_bank *bank; -+ struct jtagspi_flash_bank *jtagspi_info; -+ int retval; -+ -+ LOG_DEBUG("%s", __func__); -+ -+ if ((CMD_ARGC != 1) && (CMD_ARGC != 2)) -+ return ERROR_COMMAND_SYNTAX_ERROR; -+ -+ retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank); -+ if (ERROR_OK != retval) -+ return retval; -+ -+ jtagspi_info = bank->driver_priv; -+ -+ if (CMD_ARGC == 1) -+ command_print(CMD, jtagspi_info->always_4byte ? "on" : "off"); -+ else -+ COMMAND_PARSE_BOOL(CMD_ARGV[1], jtagspi_info->always_4byte, "on", "off"); -+ -+ return ERROR_OK; -+} -+ - static int jtagspi_probe(struct flash_bank *bank) - { - struct jtagspi_flash_bank *info = bank->driver_priv; - struct flash_sector *sectors; -+ const struct flash_device *p; - uint8_t in_buf[3]; - uint32_t id, sectorsize; - -- if (info->probed) -+ if (bank->sectors) { - free(bank->sectors); -+ bank->sectors = NULL; -+ } - info->probed = false; - -- if (!bank->target->tap) { -+ if (bank->target->tap == NULL) { - LOG_ERROR("Target has no JTAG tap"); - return ERROR_FAIL; - } - info->tap = bank->target->tap; - -- jtagspi_cmd(bank, SPIFLASH_READ_ID, NULL, in_buf, -24); -+ jtagspi_cmd(bank, SPIFLASH_READ_ID, NULL, 0, in_buf, -3); - /* the table in spi.c has the manufacturer byte (first) as the lsb */ - id = le_to_h_u24(in_buf); - -- info->dev = NULL; -- for (const struct flash_device *p = flash_devices; p->name ; p++) -+ memset(&info->dev, 0, sizeof(info->dev)); -+ for (p = flash_devices; p->name ; p++) - if (p->device_id == id) { -- info->dev = p; -+ memcpy(&info->dev, p, sizeof(info->dev)); - break; - } - -- if (!(info->dev)) { -- LOG_ERROR("Unknown flash device (ID 0x%08" PRIx32 ")", id); -+ if (!(p->name)) { -+ LOG_ERROR("Unknown flash device (ID 0x%06" PRIx32 ")", id & 0xFFFFFF); - return ERROR_FAIL; - } - -- LOG_INFO("Found flash device \'%s\' (ID 0x%08" PRIx32 ")", -- info->dev->name, info->dev->device_id); -+ LOG_INFO("Found flash device \'%s\' (ID 0x%06" PRIx32 ")", -+ info->dev.name, info->dev.device_id & 0xFFFFFF); - - /* Set correct size value */ -- bank->size = info->dev->size_in_bytes; -- if (bank->size <= (1UL << 16)) -- LOG_WARNING("device needs 2-byte addresses - not implemented"); -- if (bank->size > (1UL << 24)) -- LOG_WARNING("device needs paging or 4-byte addresses - not implemented"); -+ bank->size = info->dev.size_in_bytes; -+ -+ /* calculate address length in bytes */ -+ if (bank->size <= (1UL << 8)) -+ info->addr_len = 1; -+ else if (bank->size <= (1UL << 16)) -+ info->addr_len = 2; -+ else if (bank->size <= (1UL << 24)) -+ info->addr_len = 3; -+ else { -+ info->addr_len = 4; -+ LOG_WARNING("4-byte addresses needed, might need extra command to enable"); -+ } - - /* if no sectors, treat whole bank as single sector */ -- sectorsize = info->dev->sectorsize ? -- info->dev->sectorsize : info->dev->size_in_bytes; -+ sectorsize = info->dev.sectorsize ? -+ info->dev.sectorsize : info->dev.size_in_bytes; - - /* create and fill sectors array */ -- bank->num_sectors = info->dev->size_in_bytes / sectorsize; -+ bank->num_sectors = info->dev.size_in_bytes / sectorsize; - sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors); -- if (!sectors) { -+ if (sectors == NULL) { - LOG_ERROR("not enough memory"); - return ERROR_FAIL; - } -@@ -228,27 +456,35 @@ static int jtagspi_probe(struct flash_bank *bank) - return ERROR_OK; - } - -+static int jtagspi_auto_probe(struct flash_bank *bank) -+{ -+ struct jtagspi_flash_bank *info = bank->driver_priv; -+ -+ if (info->probed) -+ return ERROR_OK; -+ return jtagspi_probe(bank); -+} -+ - static int jtagspi_read_status(struct flash_bank *bank, uint32_t *status) - { - uint8_t buf; -- int err = jtagspi_cmd(bank, SPIFLASH_READ_STATUS, NULL, &buf, -8); -+ int err = jtagspi_cmd(bank, SPIFLASH_READ_STATUS, NULL, 0, &buf, -1); - if (err == ERROR_OK) { - *status = buf; -- /* LOG_DEBUG("status=0x%08" PRIx32, *status); */ -+ LOG_DEBUG("status=0x%02" PRIx8, *status); - } -- - return err; - } - - static int jtagspi_wait(struct flash_bank *bank, int timeout_ms) - { -- uint32_t status; - int64_t t0 = timeval_ms(); - int64_t dt; - - do { - dt = timeval_ms() - t0; - -+ uint32_t status = (uint32_t)-1; - int retval = jtagspi_read_status(bank, &status); - if (retval != ERROR_OK) - return retval; -@@ -266,16 +502,15 @@ static int jtagspi_wait(struct flash_bank *bank, int timeout_ms) - - static int jtagspi_write_enable(struct flash_bank *bank) - { -- uint32_t status; -- -- jtagspi_cmd(bank, SPIFLASH_WRITE_ENABLE, NULL, NULL, 0); -+ jtagspi_cmd(bank, SPIFLASH_WRITE_ENABLE, NULL, 0, NULL, 0); - -+ uint32_t status = (uint32_t)-1; - int retval = jtagspi_read_status(bank, &status); - if (retval != ERROR_OK) - return retval; - - if ((status & SPIFLASH_WE_BIT) == 0) { -- LOG_ERROR("Cannot enable write to flash. Status=0x%08" PRIx32, status); -+ LOG_ERROR("Cannot enable write to flash. Status=0x%02" PRIx8, status); - return ERROR_FAIL; - } - return ERROR_OK; -@@ -287,28 +522,51 @@ static int jtagspi_bulk_erase(struct flash_bank *bank) - int retval; - int64_t t0 = timeval_ms(); - -- if (info->dev->chip_erase_cmd == 0x00) -+ if (info->dev.chip_erase_cmd == 0x00) - return ERROR_FLASH_OPER_UNSUPPORTED; - - retval = jtagspi_write_enable(bank); - if (retval != ERROR_OK) - return retval; -- jtagspi_cmd(bank, info->dev->chip_erase_cmd, NULL, NULL, 0); -- retval = jtagspi_wait(bank, bank->num_sectors*JTAGSPI_MAX_TIMEOUT); -+ -+ jtagspi_cmd(bank, info->dev.chip_erase_cmd, NULL, 0, NULL, 0); -+ if (retval != ERROR_OK) -+ return retval; -+ -+ retval = jtagspi_wait(bank, bank->num_sectors * JTAGSPI_MAX_TIMEOUT); - LOG_INFO("took %" PRId64 " ms", timeval_ms() - t0); - return retval; - } - -+static uint8_t *fill_addr(uint32_t addr, unsigned int addr_len, uint8_t *buffer) -+{ -+ for (buffer += addr_len; addr_len > 0; --addr_len) { -+ *--buffer = addr; -+ addr >>= 8; -+ } -+ -+ return buffer; -+} -+ - static int jtagspi_sector_erase(struct flash_bank *bank, unsigned int sector) - { - struct jtagspi_flash_bank *info = bank->driver_priv; - int retval; -+ uint8_t addr[sizeof(uint32_t)]; - int64_t t0 = timeval_ms(); - - retval = jtagspi_write_enable(bank); - if (retval != ERROR_OK) - return retval; -- jtagspi_cmd(bank, info->dev->erase_cmd, &bank->sectors[sector].offset, NULL, 0); -+ -+ /* ATXP032/064/128 use always 4-byte addresses except for 0x03 read */ -+ unsigned int addr_len = info->always_4byte ? 4 : info->addr_len; -+ -+ retval = jtagspi_cmd(bank, info->dev.erase_cmd, fill_addr(bank->sectors[sector].offset, addr_len, addr), -+ addr_len, NULL, 0); -+ if (retval != ERROR_OK) -+ return retval; -+ - retval = jtagspi_wait(bank, JTAGSPI_MAX_TIMEOUT); - LOG_INFO("sector %u took %" PRId64 " ms", sector, timeval_ms() - t0); - return retval; -@@ -339,8 +597,9 @@ static int jtagspi_erase(struct flash_bank *bank, unsigned int first, - } - } - -- if (first == 0 && last == (bank->num_sectors - 1) -- && info->dev->chip_erase_cmd != info->dev->erase_cmd) { -+ if (first == 0 && last == (bank->num_sectors - 1) && -+ info->dev.chip_erase_cmd != 0x00 && -+ info->dev.chip_erase_cmd != info->dev.erase_cmd) { - LOG_DEBUG("Trying bulk erase."); - retval = jtagspi_bulk_erase(bank); - if (retval == ERROR_OK) -@@ -349,7 +608,7 @@ static int jtagspi_erase(struct flash_bank *bank, unsigned int first, - LOG_WARNING("Bulk flash erase failed. Falling back to sector erase."); - } - -- if (info->dev->erase_cmd == 0x00) -+ if (info->dev.erase_cmd == 0x00) - return ERROR_FLASH_OPER_UNSUPPORTED; - - for (unsigned int sector = first; sector <= last; sector++) { -@@ -374,49 +633,93 @@ static int jtagspi_protect(struct flash_bank *bank, int set, unsigned int first, - static int jtagspi_read(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count) - { - struct jtagspi_flash_bank *info = bank->driver_priv; -+ uint32_t pagesize, currsize; -+ uint8_t addr[sizeof(uint32_t)]; -+ int retval; - - if (!(info->probed)) { -- LOG_ERROR("Flash bank not yet probed."); -+ LOG_ERROR("Flash bank not probed."); - return ERROR_FLASH_BANK_NOT_PROBED; - } - -- jtagspi_cmd(bank, SPIFLASH_READ, &offset, buffer, -count*8); -+ /* if no sectorsize, use reasonable default */ -+ pagesize = info->dev.sectorsize ? info->dev.sectorsize : info->dev.pagesize; -+ if (pagesize == 0) -+ pagesize = (info->dev.size_in_bytes <= SPIFLASH_DEF_PAGESIZE) ? -+ info->dev.size_in_bytes : SPIFLASH_DEF_PAGESIZE; -+ -+ /* ATXP032/064/128 use always 4-byte addresses except for 0x03 read */ -+ unsigned int addr_len = ((info->dev.read_cmd != 0x03) && info->always_4byte) ? 4 : info->addr_len; -+ -+ while (count > 0) { -+ /* length up to end of current page */ -+ currsize = ((offset + pagesize) & ~(pagesize - 1)) - offset; -+ /* but no more than remaining size */ -+ currsize = (count < currsize) ? count : currsize; -+ -+ retval = jtagspi_cmd(bank, info->dev.read_cmd, fill_addr(offset, addr_len, addr), -+ addr_len, buffer, -currsize); -+ if (retval != ERROR_OK) { -+ LOG_ERROR("page read error"); -+ return retval; -+ } -+ LOG_DEBUG("read page at 0x%08" PRIx32, offset); -+ offset += currsize; -+ buffer += currsize; -+ count -= currsize; -+ } - return ERROR_OK; - } - - static int jtagspi_page_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count) - { -+ struct jtagspi_flash_bank *info = bank->driver_priv; -+ uint8_t addr[sizeof(uint32_t)]; - int retval; - - retval = jtagspi_write_enable(bank); - if (retval != ERROR_OK) - return retval; -- jtagspi_cmd(bank, SPIFLASH_PAGE_PROGRAM, &offset, (uint8_t *) buffer, count*8); -+ -+ /* ATXP032/064/128 use always 4-byte addresses except for 0x03 read */ -+ unsigned int addr_len = ((info->dev.read_cmd != 0x03) && info->always_4byte) ? 4 : info->addr_len; -+ -+ retval = jtagspi_cmd(bank, info->dev.pprog_cmd, fill_addr(offset, addr_len, addr), -+ addr_len, (uint8_t *) buffer, count); -+ if (retval != ERROR_OK) -+ return retval; - return jtagspi_wait(bank, JTAGSPI_MAX_TIMEOUT); - } - - static int jtagspi_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count) - { - struct jtagspi_flash_bank *info = bank->driver_priv; -+ uint32_t pagesize, currsize; - int retval; -- uint32_t n, pagesize; - - if (!(info->probed)) { -- LOG_ERROR("Flash bank not yet probed."); -+ LOG_ERROR("Flash bank not probed."); - return ERROR_FLASH_BANK_NOT_PROBED; - } - - /* if no write pagesize, use reasonable default */ -- pagesize = info->dev->pagesize ? info->dev->pagesize : SPIFLASH_DEF_PAGESIZE; -+ pagesize = info->dev.pagesize ? info->dev.pagesize : SPIFLASH_DEF_PAGESIZE; -+ -+ while (count > 0) { -+ /* length up to end of current page */ -+ currsize = ((offset + pagesize) & ~(pagesize - 1)) - offset; -+ /* but no more than remaining size */ -+ currsize = (count < currsize) ? count : currsize; - -- for (n = 0; n < count; n += pagesize) { -- retval = jtagspi_page_write(bank, buffer + n, offset + n, -- MIN(count - n, pagesize)); -+ retval = jtagspi_page_write(bank, buffer, offset, currsize); - if (retval != ERROR_OK) { - LOG_ERROR("page write error"); - return retval; - } -- LOG_DEBUG("wrote page at 0x%08" PRIx32, offset + n); -+ LOG_DEBUG("wrote page at 0x%08" PRIx32, offset); -+ offset += currsize; -+ buffer += currsize; -+ count -= currsize; - } - return ERROR_OK; - } -@@ -430,22 +733,72 @@ static int jtagspi_info(struct flash_bank *bank, struct command_invocation *cmd) - return ERROR_OK; - } - -- command_print_sameline(cmd, "\nSPIFI flash information:\n" -- " Device \'%s\' (ID 0x%08" PRIx32 ")\n", -- info->dev->name, info->dev->device_id); -+ command_print_sameline(cmd, "flash \'%s\', device id = 0x%06" PRIx32 -+ ", flash size = %" PRIu32 " %sbytes\n(page size = %" PRIu32 -+ ", read = 0x%02" PRIx8 ", qread = 0x%02" PRIx8 -+ ", pprog = 0x%02" PRIx8 ", mass_erase = 0x%02" PRIx8 -+ ", sector size = %" PRIu32 " %sbytes, sector_erase = 0x%02" PRIx8 ")", -+ info->dev.name, info->dev.device_id & 0xFFFFFF, -+ bank->size / 4096 ? bank->size / 1024 : bank->size, -+ bank->size / 4096 ? "k" : "", info->dev.pagesize, -+ info->dev.read_cmd, info->dev.qread_cmd, -+ info->dev.pprog_cmd, info->dev.chip_erase_cmd, -+ info->dev.sectorsize / 4096 ? -+ info->dev.sectorsize / 1024 : info->dev.sectorsize, -+ info->dev.sectorsize / 4096 ? "k" : "", -+ info->dev.erase_cmd); - - return ERROR_OK; - } - -+static const struct command_registration jtagspi_exec_command_handlers[] = { -+ { -+ .name = "set", -+ .handler = jtagspi_handle_set, -+ .mode = COMMAND_EXEC, -+ .usage = "bank_id name chip_size page_size read_cmd unused pprg_cmd " -+ "[ mass_erase_cmd ] [ sector_size sector_erase_cmd ]", -+ .help = "Set device parameters if not autodetected.", -+ }, -+ { -+ .name = "cmd", -+ .handler = jtagspi_handle_cmd, -+ .mode = COMMAND_EXEC, -+ .usage = "bank_id num_resp cmd_byte ...", -+ .help = "Send low-level command cmd_byte and following bytes, read num_bytes.", -+ }, -+ { -+ .name = "always_4byte", -+ .handler = jtagspi_handle_always_4byte, -+ .mode = COMMAND_EXEC, -+ .usage = "bank_id [ on | off ]", -+ .help = "Use always 4-byte address except for basic 0x03.", -+ }, -+ -+ COMMAND_REGISTRATION_DONE -+}; -+ -+static const struct command_registration jtagspi_command_handlers[] = { -+ { -+ .name = "jtagspi", -+ .mode = COMMAND_ANY, -+ .help = "jtagspi command group", -+ .usage = "", -+ .chain = jtagspi_exec_command_handlers, -+ }, -+ COMMAND_REGISTRATION_DONE -+}; -+ - const struct flash_driver jtagspi_flash = { - .name = "jtagspi", -+ .commands = jtagspi_command_handlers, - .flash_bank_command = jtagspi_flash_bank_command, - .erase = jtagspi_erase, - .protect = jtagspi_protect, - .write = jtagspi_write, - .read = jtagspi_read, - .probe = jtagspi_probe, -- .auto_probe = jtagspi_probe, -+ .auto_probe = jtagspi_auto_probe, - .erase_check = default_flash_blank_check, - .info = jtagspi_info, - .free_driver_priv = default_flash_free_driver_priv, diff --git a/artiq-fast/pkgs/openocd.nix b/artiq-fast/pkgs/openocd.nix deleted file mode 100644 index fe53a24..0000000 --- a/artiq-fast/pkgs/openocd.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ stdenv, buildEnv, lib, fetchFromGitHub, autoreconfHook269, openocd }: -let - bscan_spi_bitstreams-pkg = stdenv.mkDerivation { - name = "bscan_spi_bitstreams"; - src = fetchFromGitHub { - owner = "quartiq"; - repo = "bscan_spi_bitstreams"; - rev = "01d8f819f15baf9a8cc5d96945a51e4d267ff564"; - sha256 = "1zqv47kzgvbn4c8cr019a6wcja7gn5h1z4kvw5bhpc72fyhagal9"; - }; - phases = ["installPhase"]; - installPhase = - '' - mkdir -p $out/share/bscan-spi-bitstreams - cp $src/*.bit $out/share/bscan-spi-bitstreams - ''; - }; - openocd-fixed = openocd.overrideAttrs(oa: { - version = "unstable-2021-09-15"; - src = fetchFromGitHub { - owner = "openocd-org"; - repo = "openocd"; - rev = "a0bd3c9924870c3b8f428648410181040dabc33c"; - sha256 = "sha256-YgUsl4/FohfsOncM4uiz/3c6g2ZN4oZ0y5vV/2Skwqg="; - fetchSubmodules = true; - }; - # https://review.openocd.org/c/openocd/+/4876 - patches = oa.patches or [] ++ [ ./openocd-jtagspi.diff ]; - nativeBuildInputs = oa.nativeBuildInputs or [] ++ [ autoreconfHook269 ]; - }); -in - buildEnv { - name = "openocd-bscanspi"; - paths = [ openocd-fixed bscan_spi_bitstreams-pkg ]; - } diff --git a/artiq-fast/pkgs/python-deps.nix b/artiq-fast/pkgs/python-deps.nix deleted file mode 100644 index 393f7e7..0000000 --- a/artiq-fast/pkgs/python-deps.nix +++ /dev/null @@ -1,297 +0,0 @@ -{ lib, fetchgit, fetchFromGitHub, python3Packages, misoc-new }: - -rec { - # User dependencies - sipyco = python3Packages.buildPythonPackage rec { - pname = "sipyco"; - version = "1.2"; - src = fetchFromGitHub { - owner = "m-labs"; - repo = "sipyco"; - rev = "v${version}"; - sha256 = "02x2s66x9bbzj82d823vjg2i73w7iqwvkrjbbyrsav6ccj7f90sj"; - }; - propagatedBuildInputs = with python3Packages; [ numpy ]; - }; - - asyncserial = python3Packages.buildPythonPackage rec { - pname = "asyncserial"; - version = "0.1"; - src = fetchFromGitHub { - owner = "m-labs"; - repo = "asyncserial"; - rev = "d95bc1d6c791b0e9785935d2f62f628eb5cdf98d"; - sha256 = "0yzkka9jk3612v8gx748x6ziwykq5lr7zmr9wzkcls0v2yilqx9k"; - }; - propagatedBuildInputs = with python3Packages; [ pyserial ]; - }; - - pythonparser = python3Packages.buildPythonPackage rec { - pname = "pythonparser"; - version = "1.4"; - src = fetchFromGitHub { - owner = "m-labs"; - repo = "pythonparser"; - rev = "5413ee5c9f8760e95c6acd5d6e88dabb831ad201"; - sha256 = "1b9p3pjnfaiaf2k0a3iq39aj2vymfxx139hqdqkd3q4awrwy1957"; - }; - propagatedBuildInputs = with python3Packages; [ regex ]; - }; - - qasync = python3Packages.buildPythonPackage rec { - pname = "qasync"; - version = "0.10.0"; - - src = fetchFromGitHub { - owner = "CabbageDevelopment"; - repo = "qasync"; - rev = "v${version}"; - sha256 = "1zga8s6dr7gk6awmxkh4pf25gbg8n6dv1j4b0by7y0fhi949qakq"; - }; - - propagatedBuildInputs = [ python3Packages.pyqt5 ]; - - checkInputs = [ python3Packages.pytest ]; - checkPhase = '' - pytest -k 'test_qthreadexec.py' # the others cause the test execution to be aborted, I think because of asyncio - ''; - }; - - # Development/firmware dependencies - artiq-netboot = python3Packages.buildPythonPackage rec { - pname = "artiq-netboot"; - version = "unstable-2020-10-15"; - - src = fetchgit { - url = "https://git.m-labs.hk/m-labs/artiq-netboot.git"; - rev = "04f69eb07df73abe4b89fde2c24084f7664f2104"; - sha256 = "0ql4fr8m8gpb2yql8aqsdqsssxb8zqd6l65kl1f6s9845zy7shs9"; - }; - }; - - misoc = python3Packages.buildPythonPackage { - pname = "misoc"; - version = if misoc-new then "unstable-2021-10-10" else "unstable-2021-02-15"; - - src = if misoc-new - then (fetchFromGitHub { - owner = "m-labs"; - repo = "misoc"; - rev = "f5203e406520874e15ab5d070058ef642fc57fd9"; - sha256 = "sha256-/2XTejqj0Bo81HaTrlTSWwInnWwsuqnq+CURXbpIrkA="; - fetchSubmodules = true; - }) - else (fetchFromGitHub { - owner = "m-labs"; - repo = "misoc"; - rev = "d84551418042cea0891ea743442e20684b51e77a"; - sha256 = "1id5qjr9dl4r3vi6jdn7dfpnr2wb08nrm3nfscn18clbbdxybyjn"; - fetchSubmodules = true; - }); - - # TODO: fix misoc bitrot and re-enable tests - doCheck = false; - - propagatedBuildInputs = with python3Packages; [ pyserial jinja2 numpy asyncserial migen ]; - - meta = with lib; { - description = "A high performance and small footprint system-on-chip based on Migen"; - homepage = "https://m-labs.hk/migen"; - license = licenses.bsd2; - platforms = platforms.unix; - }; - }; - - migen = python3Packages.buildPythonPackage rec { - pname = "migen"; - version = "unstable-2021-12-16"; - - src = fetchFromGitHub { - owner = "m-labs"; - repo = "migen"; - rev = "ac703010eaa06ac9b6e32f97c6fa98b15de22b31"; - sha256 = "sha256-qpVj/yJf4hDDc99XXpVPH4EbLC8aCmEtACn5qNc3DGI="; - }; - - propagatedBuildInputs = with python3Packages; [ colorama ]; - - meta = with lib; { - description = "A Python toolbox for building complex digital hardware"; - homepage = "https://m-labs.hk/migen"; - license = licenses.bsd2; - platforms = platforms.unix; - }; - }; - - microscope = python3Packages.buildPythonPackage rec { - pname = "microscope"; - version = "unstable-2019-05-17"; - - src = fetchFromGitHub { - owner = "m-labs"; - repo = "microscope"; - rev = "bcbc5346c71ad8f7a1a0b7771a9d126b18fdf558"; - sha256 = "1hslm2nn2z1bl84ya4fsab3pvcdmbziwn7zkai0cm3bv525fjxxd"; - }; - - propagatedBuildInputs = with python3Packages; [ pyserial prettytable msgpack migen ]; - - meta = with lib; { - description = "Finding the bacteria in rotting FPGA designs"; - homepage = "https://m-labs.hk/migen"; - license = licenses.bsd2; - platforms = platforms.unix; - }; - }; - - jesd204b = python3Packages.buildPythonPackage rec { - pname = "jesd204b"; - version = "unstable-2021-05-05"; - - src = fetchFromGitHub { - owner = "m-labs"; - repo = "jesd204b"; - rev = "bf1cd9014c8b7a9db67609f653634daaf3bcd39b"; - sha256 = "035csm6as4p75cjz7kd6gnras14856i2jzi9g1gd800g284hw9n3"; - }; - - propagatedBuildInputs = with python3Packages; [ migen misoc ]; - - meta = with lib; { - description = "JESD204B core for Migen/MiSoC"; - homepage = "https://m-labs.hk/migen"; - license = licenses.bsd2; - platforms = platforms.unix; - }; - }; - - fastnumbers = python3Packages.buildPythonPackage rec { - pname = "fastnumbers"; - version = "2.2.1"; - - src = python3Packages.fetchPypi { - inherit pname version; - sha256 = "0j15i54p7nri6hkzn1wal9pxri4pgql01wgjccig6ar0v5jjbvsy"; - }; - - meta = with lib; { - description = "Super-fast and clean conversions to numbers"; - homepage = "https://github.com/SethMMorton/fastnumbers"; - license = licenses.mit; - platforms = platforms.unix; - }; - }; - - ramda = python3Packages.buildPythonPackage { - pname = "ramda"; - version = "unstable-2019-02-01"; - - src = fetchFromGitHub { - owner = "peteut"; - repo = "ramda.py"; - rev = "bd58f8e69d0e9a713d9c1f286a1ac5e5603956b1"; - sha256 = "0qzd5yp9lbaham8p1wiymdjapzbqsli7lvngv24c3z4ybd9jlq9g"; - }; - - nativeBuildInputs = [ python3Packages.pbr ]; - propagatedBuildInputs = [ python3Packages.future fastnumbers ]; - - checkInputs = [ python3Packages.pytest python3Packages.pytest-flake8 ]; - checkPhase = "pytest"; - - preBuild = '' - export PBR_VERSION=0.0.1 - ''; - - meta = with lib; { - description = "Ramda, ported to Python"; - homepage = "https://github.com/peteut/ramda.py"; - license = licenses.mit; - platforms = platforms.unix; - }; - }; - - migen-axi = python3Packages.buildPythonPackage { - pname = "migen-axi"; - version = "unstable-2021-09-15"; - - src = fetchFromGitHub { - owner = "peteut"; - repo = "migen-axi"; - rev = "9763505ee96acd7572280a2d1233721342dc7c3f"; - sha256 = "15c7g05n183rka66fl1glzp6h7xjlpy1p6k8biry24dangsmxmvg"; - }; - - nativeBuildInputs = [ python3Packages.pbr ]; - propagatedBuildInputs = [ python3Packages.click python3Packages.numpy python3Packages.toolz python3Packages.jinja2 ramda migen misoc ]; - - postPatch = '' - substituteInPlace requirements.txt \ - --replace "jinja2==2.11.3" "jinja2" - substituteInPlace requirements.txt \ - --replace "future==0.18.2" "future" - substituteInPlace requirements.txt \ - --replace "ramda==0.5.5" "ramda" - substituteInPlace requirements.txt \ - --replace "colorama==0.4.3" "colorama" - substituteInPlace requirements.txt \ - --replace "toolz==0.10.0" "toolz" - substituteInPlace requirements.txt \ - --replace "pyserial==3.4" "pyserial" - ''; - - - checkInputs = [ python3Packages.pytest python3Packages.pytest-timeout python3Packages.pytest-flake8 ]; - checkPhase = "pytest"; - - preBuild = '' - export PBR_VERSION=0.0.1 - ''; - - meta = with lib; { - description = "AXI support for Migen/MiSoC"; - homepage = "https://github.com/peteut/migen-axi"; - license = licenses.mit; - platforms = platforms.unix; - }; - }; - - # not using the nixpkgs version because it is Python 2 and an "application" - lit = python3Packages.buildPythonPackage rec { - pname = "lit"; - version = "0.7.1"; - - src = python3Packages.fetchPypi { - inherit pname version; - sha256 = "ecef2833aef7f411cb923dac109c7c9dcc7dbe7cafce0650c1e8d19c243d955f"; - }; - - # Non-standard test suite. Needs custom checkPhase. - doCheck = false; - - meta = with lib; { - description = "Portable tool for executing LLVM and Clang style test suites"; - homepage = http://llvm.org/docs/CommandGuide/lit.html; - license = licenses.ncsa; - }; - }; - - outputcheck = python3Packages.buildPythonApplication rec { - pname = "outputcheck"; - version = "0.4.2"; - - src = fetchFromGitHub { - owner = "stp"; - repo = "OutputCheck"; - rev = "e0f533d3c5af2949349856c711bf4bca50022b48"; - sha256 = "1y27vz6jq6sywas07kz3v01sqjd0sga9yv9w2cksqac3v7wmf2a0"; - }; - prePatch = "echo ${version} > RELEASE-VERSION"; - - meta = with lib; { - description = "A tool for checking tool output inspired by LLVM's FileCheck"; - homepage = "https://github.com/stp/OutputCheck"; - license = licenses.bsd3; - }; - }; -} diff --git a/artiq-fast/pkgs/rust-legacy/binaryBuild.nix b/artiq-fast/pkgs/rust-legacy/binaryBuild.nix deleted file mode 100644 index c64a62f..0000000 --- a/artiq-fast/pkgs/rust-legacy/binaryBuild.nix +++ /dev/null @@ -1,117 +0,0 @@ -{ stdenv, lib, makeWrapper, bash, buildRustPackage, curl, darwin -, version -, src -, platform -, versionType -}: - -let - inherit (lib) optionalString; - inherit (darwin.apple_sdk.frameworks) Security; - - bootstrapping = versionType == "bootstrap"; - - installComponents - = "rustc,rust-std-${platform}" - + (optionalString bootstrapping ",cargo") - ; -in - -rec { - inherit buildRustPackage; - - rustc = stdenv.mkDerivation rec { - name = "rustc-${versionType}-${version}"; - - inherit version; - inherit src; - - meta = with lib; { - homepage = http://www.rust-lang.org/; - description = "A safe, concurrent, practical language"; - maintainers = with maintainers; [ sb0 ]; - license = [ licenses.mit licenses.asl20 ]; - }; - - buildInputs = [ bash ] ++ lib.optional stdenv.isDarwin Security; - - postPatch = '' - patchShebangs . - ''; - - installPhase = '' - ./install.sh --prefix=$out \ - --components=${installComponents} - - ${optionalString (stdenv.isLinux && bootstrapping) '' - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - "$out/bin/rustc" - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - "$out/bin/rustdoc" - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - "$out/bin/cargo" - ''} - - ${optionalString (stdenv.isDarwin && bootstrapping) '' - install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/rustc" - install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/rustdoc" - install_name_tool -change /usr/lib/libiconv.2.dylib '${darwin.libiconv}/lib/libiconv.2.dylib' "$out/bin/cargo" - install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/cargo" - install_name_tool -change /usr/lib/libcurl.4.dylib '${lib.getLib curl}/lib/libcurl.4.dylib' "$out/bin/cargo" - for f in $out/lib/lib*.dylib; do - install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$f" - done - ''} - - # Do NOT, I repeat, DO NOT use `wrapProgram` on $out/bin/rustc - # (or similar) here. It causes strange effects where rustc loads - # the wrong libraries in a bootstrap-build causing failures that - # are very hard to track down. For details, see - # https://github.com/rust-lang/rust/issues/34722#issuecomment-232164943 - ''; - }; - - cargo = stdenv.mkDerivation rec { - name = "cargo-${versionType}-${version}"; - - inherit version; - inherit src; - - meta = with lib; { - homepage = http://www.rust-lang.org/; - description = "A safe, concurrent, practical language"; - maintainers = with maintainers; [ sb0 ]; - license = [ licenses.mit licenses.asl20 ]; - }; - - buildInputs = [ makeWrapper bash ] ++ lib.optional stdenv.isDarwin Security; - - postPatch = '' - patchShebangs . - ''; - - installPhase = '' - patchShebangs ./install.sh - ./install.sh --prefix=$out \ - --components=cargo - - ${optionalString (stdenv.isLinux && bootstrapping) '' - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - "$out/bin/cargo" - ''} - - ${optionalString (stdenv.isDarwin && bootstrapping) '' - install_name_tool -change /usr/lib/libiconv.2.dylib '${darwin.libiconv}/lib/libiconv.2.dylib' "$out/bin/cargo" - install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/cargo" - install_name_tool -change /usr/lib/libcurl.4.dylib '${lib.getLib curl}/lib/libcurl.4.dylib' "$out/bin/cargo" - ''} - - wrapProgram "$out/bin/cargo" \ - --suffix PATH : "${rustc}/bin" - ''; - }; -} diff --git a/artiq-fast/pkgs/rust-legacy/bootstrap.nix b/artiq-fast/pkgs/rust-legacy/bootstrap.nix deleted file mode 100644 index 55348c5..0000000 --- a/artiq-fast/pkgs/rust-legacy/bootstrap.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ stdenv, fetchurl, callPackage }: - -let - # Note: the version MUST be one version prior to the version we're - # building - version = "1.28.0"; - - # fetch hashes by running `print-hashes.sh 1.24.1` - hashes = { - i686-unknown-linux-gnu = "de7cdb4e665e897ea9b10bf6fd545f900683296456d6a11d8510397bb330455f"; - x86_64-unknown-linux-gnu = "2a1390340db1d24a9498036884e6b2748e9b4b057fc5219694e298bdaa37b810"; - armv7-unknown-linux-gnueabihf = "346558d14050853b87049e5e1fbfae0bf0360a2f7c57433c6985b1a879c349a2"; - aarch64-unknown-linux-gnu = "9b6fbcee73070332c811c0ddff399fa31965bec62ef258656c0c90354f6231c1"; - i686-apple-darwin = "752e2c9182e057c4a54152d1e0b3949482c225d02bb69d9d9a4127dc2a65fb68"; - x86_64-apple-darwin = "5d7a70ed4701fe9410041c1eea025c95cad97e5b3d8acc46426f9ac4f9f02393"; - }; - - platform = - if stdenv.hostPlatform.system == "i686-linux" - then "i686-unknown-linux-gnu" - else if stdenv.hostPlatform.system == "x86_64-linux" - then "x86_64-unknown-linux-gnu" - else if stdenv.hostPlatform.system == "armv7l-linux" - then "armv7-unknown-linux-gnueabihf" - else if stdenv.hostPlatform.system == "aarch64-linux" - then "aarch64-unknown-linux-gnu" - else if stdenv.hostPlatform.system == "i686-darwin" - then "i686-apple-darwin" - else if stdenv.hostPlatform.system == "x86_64-darwin" - then "x86_64-apple-darwin" - else throw "missing bootstrap url for platform ${stdenv.hostPlatform.system}"; - - src = fetchurl { - url = "https://static.rust-lang.org/dist/rust-${version}-${platform}.tar.gz"; - sha256 = hashes."${platform}"; - }; - -in callPackage ./binaryBuild.nix - { inherit version src platform; - buildRustPackage = null; - versionType = "bootstrap"; - } diff --git a/artiq-fast/pkgs/rust-legacy/cargo-vendor-carnix.nix b/artiq-fast/pkgs/rust-legacy/cargo-vendor-carnix.nix deleted file mode 100644 index 9af5cbe..0000000 --- a/artiq-fast/pkgs/rust-legacy/cargo-vendor-carnix.nix +++ /dev/null @@ -1,693 +0,0 @@ -# Generated by carnix 0.10.0: carnix generate-nix --src . -{ lib, buildPlatform, buildRustCrate, buildRustCrateHelpers, cratesIO, fetchgit }: -with buildRustCrateHelpers; -let inherit (lib.lists) fold; - inherit (lib.attrsets) recursiveUpdate; -in -rec { - crates = cratesIO // rec { -# cargo-vendor-0.1.23 - - crates.cargo_vendor."0.1.23" = deps: { features?(features_.cargo_vendor."0.1.23" deps {}) }: buildRustCrate { - crateName = "cargo-vendor"; - version = "0.1.23"; - description = "A Cargo subcommand to vendor all crates.io dependencies onto the local\nfilesystem.\n"; - authors = [ "Alex Crichton " ]; - edition = "2018"; - src = exclude [ ".git" "target" ] ./.; - dependencies = mapFeatures features ([ - (cratesIO.crates."cargo"."${deps."cargo_vendor"."0.1.23"."cargo"}" deps) - (cratesIO.crates."docopt"."${deps."cargo_vendor"."0.1.23"."docopt"}" deps) - (cratesIO.crates."env_logger"."${deps."cargo_vendor"."0.1.23"."env_logger"}" deps) - (cratesIO.crates."failure"."${deps."cargo_vendor"."0.1.23"."failure"}" deps) - (cratesIO.crates."serde"."${deps."cargo_vendor"."0.1.23"."serde"}" deps) - (cratesIO.crates."serde_json"."${deps."cargo_vendor"."0.1.23"."serde_json"}" deps) - (cratesIO.crates."toml"."${deps."cargo_vendor"."0.1.23"."toml"}" deps) - ] - ++ (if features.cargo_vendor."0.1.23".openssl or false then [ (cratesIO.crates.openssl."${deps."cargo_vendor"."0.1.23".openssl}" deps) ] else [])); - features = mkFeatures (features."cargo_vendor"."0.1.23" or {}); - }; - features_.cargo_vendor."0.1.23" = deps: f: updateFeatures f (rec { - cargo."${deps.cargo_vendor."0.1.23".cargo}".default = true; - cargo_vendor."0.1.23".default = (f.cargo_vendor."0.1.23".default or true); - docopt."${deps.cargo_vendor."0.1.23".docopt}".default = true; - env_logger."${deps.cargo_vendor."0.1.23".env_logger}".default = true; - failure."${deps.cargo_vendor."0.1.23".failure}".default = true; - openssl = fold recursiveUpdate {} [ - { "${deps.cargo_vendor."0.1.23".openssl}"."vendored" = - (f.openssl."${deps.cargo_vendor."0.1.23".openssl}"."vendored" or false) || - (cargo_vendor."0.1.23"."vendored-openssl" or false) || - (f."cargo_vendor"."0.1.23"."vendored-openssl" or false); } - { "${deps.cargo_vendor."0.1.23".openssl}".default = true; } - ]; - serde = fold recursiveUpdate {} [ - { "${deps.cargo_vendor."0.1.23".serde}"."derive" = true; } - { "${deps.cargo_vendor."0.1.23".serde}".default = true; } - ]; - serde_json."${deps.cargo_vendor."0.1.23".serde_json}".default = true; - toml."${deps.cargo_vendor."0.1.23".toml}".default = true; - }) [ - (cratesIO.features_.cargo."${deps."cargo_vendor"."0.1.23"."cargo"}" deps) - (cratesIO.features_.docopt."${deps."cargo_vendor"."0.1.23"."docopt"}" deps) - (cratesIO.features_.env_logger."${deps."cargo_vendor"."0.1.23"."env_logger"}" deps) - (cratesIO.features_.failure."${deps."cargo_vendor"."0.1.23"."failure"}" deps) - (cratesIO.features_.openssl."${deps."cargo_vendor"."0.1.23"."openssl"}" deps) - (cratesIO.features_.serde."${deps."cargo_vendor"."0.1.23"."serde"}" deps) - (cratesIO.features_.serde_json."${deps."cargo_vendor"."0.1.23"."serde_json"}" deps) - (cratesIO.features_.toml."${deps."cargo_vendor"."0.1.23"."toml"}" deps) - ]; - - -# end - - }; - - cargo_vendor = crates.crates.cargo_vendor."0.1.23" deps; - __all = [ (cargo_vendor {}) ]; - deps.adler32."1.0.3" = {}; - deps.aho_corasick."0.7.3" = { - memchr = "2.2.0"; - }; - deps.ansi_term."0.11.0" = { - winapi = "0.3.7"; - }; - deps.atty."0.2.11" = { - termion = "1.5.1"; - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.autocfg."0.1.2" = {}; - deps.backtrace."0.3.15" = { - cfg_if = "0.1.7"; - rustc_demangle = "0.1.14"; - autocfg = "0.1.2"; - backtrace_sys = "0.1.28"; - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.backtrace_sys."0.1.28" = { - libc = "0.2.51"; - cc = "1.0.35"; - }; - deps.bitflags."1.0.4" = {}; - deps.bstr."0.1.2" = { - memchr = "2.2.0"; - }; - deps.build_const."0.2.1" = {}; - deps.byteorder."1.3.1" = {}; - deps.bytes."0.4.12" = { - byteorder = "1.3.1"; - iovec = "0.1.2"; - }; - deps.bytesize."1.0.0" = {}; - deps.cargo."0.35.0" = { - atty = "0.2.11"; - byteorder = "1.3.1"; - bytesize = "1.0.0"; - clap = "2.33.0"; - crates_io = "0.23.0"; - crossbeam_utils = "0.6.5"; - crypto_hash = "0.3.3"; - curl = "0.4.21"; - curl_sys = "0.4.18"; - env_logger = "0.6.1"; - failure = "0.1.5"; - filetime = "0.2.4"; - flate2 = "1.0.7"; - fs2 = "0.4.3"; - git2 = "0.8.0"; - git2_curl = "0.9.0"; - glob = "0.2.11"; - hex = "0.3.2"; - home = "0.3.4"; - ignore = "0.4.7"; - im_rc = "12.3.4"; - jobserver = "0.1.13"; - lazy_static = "1.3.0"; - lazycell = "1.2.1"; - libc = "0.2.51"; - libgit2_sys = "0.7.11"; - log = "0.4.6"; - num_cpus = "1.10.0"; - opener = "0.3.2"; - rustc_workspace_hack = "1.0.0"; - rustfix = "0.4.5"; - same_file = "1.0.4"; - semver = "0.9.0"; - serde = "1.0.90"; - serde_ignored = "0.0.4"; - serde_json = "1.0.39"; - shell_escape = "0.1.4"; - tar = "0.4.22"; - tempfile = "3.0.7"; - termcolor = "1.0.4"; - toml = "0.4.10"; - unicode_width = "0.1.5"; - url = "1.7.2"; - url_serde = "0.2.0"; - core_foundation = "0.6.4"; - fwdansi = "1.0.1"; - miow = "0.3.3"; - winapi = "0.3.7"; - }; - deps.cargo_vendor."0.1.23" = { - cargo = "0.35.0"; - docopt = "1.1.0"; - env_logger = "0.6.1"; - failure = "0.1.5"; - openssl = "0.10.20"; - serde = "1.0.90"; - serde_json = "1.0.39"; - toml = "0.5.0"; - }; - deps.cc."1.0.35" = {}; - deps.cfg_if."0.1.7" = {}; - deps.clap."2.33.0" = { - atty = "0.2.11"; - bitflags = "1.0.4"; - strsim = "0.8.0"; - textwrap = "0.11.0"; - unicode_width = "0.1.5"; - vec_map = "0.8.1"; - ansi_term = "0.11.0"; - }; - deps.cloudabi."0.0.3" = { - bitflags = "1.0.4"; - }; - deps.commoncrypto."0.2.0" = { - commoncrypto_sys = "0.2.0"; - }; - deps.commoncrypto_sys."0.2.0" = { - libc = "0.2.51"; - }; - deps.core_foundation."0.6.4" = { - core_foundation_sys = "0.6.2"; - libc = "0.2.51"; - }; - deps.core_foundation_sys."0.6.2" = {}; - deps.crates_io."0.23.0" = { - curl = "0.4.21"; - failure = "0.1.5"; - http = "0.1.17"; - serde = "1.0.90"; - serde_derive = "1.0.90"; - serde_json = "1.0.39"; - url = "1.7.2"; - }; - deps.crc."1.8.1" = { - build_const = "0.2.1"; - }; - deps.crc32fast."1.2.0" = { - cfg_if = "0.1.7"; - }; - deps.crossbeam_channel."0.3.8" = { - crossbeam_utils = "0.6.5"; - smallvec = "0.6.9"; - }; - deps.crossbeam_utils."0.6.5" = { - cfg_if = "0.1.7"; - lazy_static = "1.3.0"; - }; - deps.crypto_hash."0.3.3" = { - hex = "0.3.2"; - commoncrypto = "0.2.0"; - openssl = "0.10.20"; - winapi = "0.3.7"; - }; - deps.curl."0.4.21" = { - curl_sys = "0.4.18"; - libc = "0.2.51"; - socket2 = "0.3.8"; - openssl_probe = "0.1.2"; - openssl_sys = "0.9.43"; - kernel32_sys = "0.2.2"; - schannel = "0.1.15"; - winapi = "0.2.8"; - }; - deps.curl_sys."0.4.18" = { - libc = "0.2.51"; - libnghttp2_sys = "0.1.1"; - libz_sys = "1.0.25"; - cc = "1.0.35"; - pkg_config = "0.3.14"; - openssl_sys = "0.9.43"; - winapi = "0.3.7"; - }; - deps.docopt."1.1.0" = { - lazy_static = "1.3.0"; - regex = "1.1.6"; - serde = "1.0.90"; - strsim = "0.9.1"; - }; - deps.either."1.5.2" = {}; - deps.env_logger."0.6.1" = { - atty = "0.2.11"; - humantime = "1.2.0"; - log = "0.4.6"; - regex = "1.1.6"; - termcolor = "1.0.4"; - }; - deps.failure."0.1.5" = { - backtrace = "0.3.15"; - failure_derive = "0.1.5"; - }; - deps.failure_derive."0.1.5" = { - proc_macro2 = "0.4.27"; - quote = "0.6.12"; - syn = "0.15.32"; - synstructure = "0.10.1"; - }; - deps.filetime."0.2.4" = { - cfg_if = "0.1.7"; - redox_syscall = "0.1.54"; - libc = "0.2.51"; - }; - deps.flate2."1.0.7" = { - crc32fast = "1.2.0"; - libc = "0.2.51"; - libz_sys = "1.0.25"; - miniz_sys = "0.1.11"; - miniz_oxide_c_api = "0.2.1"; - }; - deps.fnv."1.0.6" = {}; - deps.foreign_types."0.3.2" = { - foreign_types_shared = "0.1.1"; - }; - deps.foreign_types_shared."0.1.1" = {}; - deps.fs2."0.4.3" = { - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.fuchsia_cprng."0.1.1" = {}; - deps.fwdansi."1.0.1" = { - memchr = "2.2.0"; - termcolor = "1.0.4"; - }; - deps.git2."0.8.0" = { - bitflags = "1.0.4"; - libc = "0.2.51"; - libgit2_sys = "0.7.11"; - log = "0.4.6"; - url = "1.7.2"; - openssl_probe = "0.1.2"; - openssl_sys = "0.9.43"; - }; - deps.git2_curl."0.9.0" = { - curl = "0.4.21"; - git2 = "0.8.0"; - log = "0.4.6"; - url = "1.7.2"; - }; - deps.glob."0.2.11" = {}; - deps.globset."0.4.3" = { - aho_corasick = "0.7.3"; - bstr = "0.1.2"; - fnv = "1.0.6"; - log = "0.4.6"; - regex = "1.1.6"; - }; - deps.hashbrown."0.1.8" = { - byteorder = "1.3.1"; - scopeguard = "0.3.3"; - }; - deps.hex."0.3.2" = {}; - deps.home."0.3.4" = { - scopeguard = "0.3.3"; - winapi = "0.3.7"; - }; - deps.http."0.1.17" = { - bytes = "0.4.12"; - fnv = "1.0.6"; - itoa = "0.4.3"; - }; - deps.humantime."1.2.0" = { - quick_error = "1.2.2"; - }; - deps.idna."0.1.5" = { - matches = "0.1.8"; - unicode_bidi = "0.3.4"; - unicode_normalization = "0.1.8"; - }; - deps.ignore."0.4.7" = { - crossbeam_channel = "0.3.8"; - globset = "0.4.3"; - lazy_static = "1.3.0"; - log = "0.4.6"; - memchr = "2.2.0"; - regex = "1.1.6"; - same_file = "1.0.4"; - thread_local = "0.3.6"; - walkdir = "2.2.7"; - winapi_util = "0.1.2"; - }; - deps.im_rc."12.3.4" = { - sized_chunks = "0.1.3"; - typenum = "1.10.0"; - rustc_version = "0.2.3"; - }; - deps.iovec."0.1.2" = { - libc = "0.2.51"; - winapi = "0.2.8"; - }; - deps.itertools."0.7.11" = { - either = "1.5.2"; - }; - deps.itoa."0.4.3" = {}; - deps.jobserver."0.1.13" = { - log = "0.4.6"; - libc = "0.2.51"; - rand = "0.6.5"; - }; - deps.kernel32_sys."0.2.2" = { - winapi = "0.2.8"; - winapi_build = "0.1.1"; - }; - deps.lazy_static."1.3.0" = {}; - deps.lazycell."1.2.1" = {}; - deps.libc."0.2.51" = {}; - deps.libgit2_sys."0.7.11" = { - curl_sys = "0.4.18"; - libc = "0.2.51"; - libssh2_sys = "0.2.11"; - libz_sys = "1.0.25"; - cc = "1.0.35"; - pkg_config = "0.3.14"; - openssl_sys = "0.9.43"; - }; - deps.libnghttp2_sys."0.1.1" = { - libc = "0.2.51"; - cc = "1.0.35"; - }; - deps.libssh2_sys."0.2.11" = { - libc = "0.2.51"; - libz_sys = "1.0.25"; - cc = "1.0.35"; - pkg_config = "0.3.14"; - openssl_sys = "0.9.43"; - }; - deps.libz_sys."1.0.25" = { - libc = "0.2.51"; - cc = "1.0.35"; - pkg_config = "0.3.14"; - }; - deps.lock_api."0.1.5" = { - scopeguard = "0.3.3"; - }; - deps.log."0.4.6" = { - cfg_if = "0.1.7"; - }; - deps.matches."0.1.8" = {}; - deps.matrixmultiply."0.1.15" = { - rawpointer = "0.1.0"; - }; - deps.memchr."2.2.0" = {}; - deps.miniz_sys."0.1.11" = { - libc = "0.2.51"; - cc = "1.0.35"; - }; - deps.miniz_oxide."0.2.1" = { - adler32 = "1.0.3"; - }; - deps.miniz_oxide_c_api."0.2.1" = { - crc = "1.8.1"; - libc = "0.2.51"; - miniz_oxide = "0.2.1"; - cc = "1.0.35"; - }; - deps.miow."0.3.3" = { - socket2 = "0.3.8"; - winapi = "0.3.7"; - }; - deps.ndarray."0.12.1" = { - itertools = "0.7.11"; - matrixmultiply = "0.1.15"; - num_complex = "0.2.1"; - num_traits = "0.2.6"; - }; - deps.num_complex."0.2.1" = { - num_traits = "0.2.6"; - }; - deps.num_traits."0.2.6" = {}; - deps.num_cpus."1.10.0" = { - libc = "0.2.51"; - }; - deps.once_cell."0.1.8" = { - parking_lot = "0.7.1"; - }; - deps.opener."0.3.2" = { - failure = "0.1.5"; - failure_derive = "0.1.5"; - winapi = "0.3.7"; - }; - deps.openssl."0.10.20" = { - bitflags = "1.0.4"; - cfg_if = "0.1.7"; - foreign_types = "0.3.2"; - lazy_static = "1.3.0"; - libc = "0.2.51"; - openssl_sys = "0.9.43"; - }; - deps.openssl_probe."0.1.2" = {}; - deps.openssl_src."111.2.1+1.1.1b" = { - cc = "1.0.35"; - }; - deps.openssl_sys."0.9.43" = { - libc = "0.2.51"; - cc = "1.0.35"; - openssl_src = "111.2.1+1.1.1b"; - pkg_config = "0.3.14"; - rustc_version = "0.2.3"; - }; - deps.parking_lot."0.7.1" = { - lock_api = "0.1.5"; - parking_lot_core = "0.4.0"; - }; - deps.parking_lot_core."0.4.0" = { - rand = "0.6.5"; - smallvec = "0.6.9"; - rustc_version = "0.2.3"; - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.percent_encoding."1.0.1" = {}; - deps.pkg_config."0.3.14" = {}; - deps.proc_macro2."0.4.27" = { - unicode_xid = "0.1.0"; - }; - deps.quick_error."1.2.2" = {}; - deps.quote."0.6.12" = { - proc_macro2 = "0.4.27"; - }; - deps.rand."0.6.5" = { - rand_chacha = "0.1.1"; - rand_core = "0.4.0"; - rand_hc = "0.1.0"; - rand_isaac = "0.1.1"; - rand_jitter = "0.1.3"; - rand_os = "0.1.3"; - rand_pcg = "0.1.2"; - rand_xorshift = "0.1.1"; - autocfg = "0.1.2"; - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.rand_chacha."0.1.1" = { - rand_core = "0.3.1"; - autocfg = "0.1.2"; - }; - deps.rand_core."0.3.1" = { - rand_core = "0.4.0"; - }; - deps.rand_core."0.4.0" = {}; - deps.rand_hc."0.1.0" = { - rand_core = "0.3.1"; - }; - deps.rand_isaac."0.1.1" = { - rand_core = "0.3.1"; - }; - deps.rand_jitter."0.1.3" = { - rand_core = "0.4.0"; - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.rand_os."0.1.3" = { - rand_core = "0.4.0"; - rdrand = "0.4.0"; - cloudabi = "0.0.3"; - fuchsia_cprng = "0.1.1"; - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.rand_pcg."0.1.2" = { - rand_core = "0.4.0"; - autocfg = "0.1.2"; - }; - deps.rand_xorshift."0.1.1" = { - rand_core = "0.3.1"; - }; - deps.rawpointer."0.1.0" = {}; - deps.rdrand."0.4.0" = { - rand_core = "0.3.1"; - }; - deps.redox_syscall."0.1.54" = {}; - deps.redox_termios."0.1.1" = { - redox_syscall = "0.1.54"; - }; - deps.regex."1.1.6" = { - aho_corasick = "0.7.3"; - memchr = "2.2.0"; - regex_syntax = "0.6.6"; - thread_local = "0.3.6"; - utf8_ranges = "1.0.2"; - }; - deps.regex_syntax."0.6.6" = { - ucd_util = "0.1.3"; - }; - deps.remove_dir_all."0.5.1" = { - winapi = "0.3.7"; - }; - deps.rustc_demangle."0.1.14" = {}; - deps.rustc_workspace_hack."1.0.0" = {}; - deps.rustc_version."0.2.3" = { - semver = "0.9.0"; - }; - deps.rustfix."0.4.5" = { - failure = "0.1.5"; - log = "0.4.6"; - serde = "1.0.90"; - serde_derive = "1.0.90"; - serde_json = "1.0.39"; - }; - deps.ryu."0.2.7" = {}; - deps.same_file."1.0.4" = { - winapi_util = "0.1.2"; - }; - deps.schannel."0.1.15" = { - lazy_static = "1.3.0"; - winapi = "0.3.7"; - }; - deps.scopeguard."0.3.3" = {}; - deps.semver."0.9.0" = { - semver_parser = "0.7.0"; - serde = "1.0.90"; - }; - deps.semver_parser."0.7.0" = {}; - deps.serde."1.0.90" = { - serde_derive = "1.0.90"; - }; - deps.serde_derive."1.0.90" = { - proc_macro2 = "0.4.27"; - quote = "0.6.12"; - syn = "0.15.32"; - }; - deps.serde_ignored."0.0.4" = { - serde = "1.0.90"; - }; - deps.serde_json."1.0.39" = { - itoa = "0.4.3"; - ryu = "0.2.7"; - serde = "1.0.90"; - }; - deps.shell_escape."0.1.4" = {}; - deps.sized_chunks."0.1.3" = { - typenum = "1.10.0"; - }; - deps.smallvec."0.6.9" = {}; - deps.socket2."0.3.8" = { - cfg_if = "0.1.7"; - libc = "0.2.51"; - redox_syscall = "0.1.54"; - winapi = "0.3.7"; - }; - deps.strsim."0.8.0" = {}; - deps.strsim."0.9.1" = { - hashbrown = "0.1.8"; - ndarray = "0.12.1"; - }; - deps.syn."0.15.32" = { - proc_macro2 = "0.4.27"; - quote = "0.6.12"; - unicode_xid = "0.1.0"; - }; - deps.synstructure."0.10.1" = { - proc_macro2 = "0.4.27"; - quote = "0.6.12"; - syn = "0.15.32"; - unicode_xid = "0.1.0"; - }; - deps.tar."0.4.22" = { - filetime = "0.2.4"; - redox_syscall = "0.1.54"; - libc = "0.2.51"; - }; - deps.tempfile."3.0.7" = { - cfg_if = "0.1.7"; - rand = "0.6.5"; - remove_dir_all = "0.5.1"; - redox_syscall = "0.1.54"; - libc = "0.2.51"; - winapi = "0.3.7"; - }; - deps.termcolor."1.0.4" = { - wincolor = "1.0.1"; - }; - deps.termion."1.5.1" = { - libc = "0.2.51"; - redox_syscall = "0.1.54"; - redox_termios = "0.1.1"; - }; - deps.textwrap."0.11.0" = { - unicode_width = "0.1.5"; - }; - deps.thread_local."0.3.6" = { - lazy_static = "1.3.0"; - }; - deps.toml."0.4.10" = { - serde = "1.0.90"; - }; - deps.toml."0.5.0" = { - serde = "1.0.90"; - }; - deps.typenum."1.10.0" = {}; - deps.ucd_util."0.1.3" = {}; - deps.unicode_bidi."0.3.4" = { - matches = "0.1.8"; - }; - deps.unicode_normalization."0.1.8" = { - smallvec = "0.6.9"; - }; - deps.unicode_width."0.1.5" = {}; - deps.unicode_xid."0.1.0" = {}; - deps.url."1.7.2" = { - idna = "0.1.5"; - matches = "0.1.8"; - percent_encoding = "1.0.1"; - }; - deps.url_serde."0.2.0" = { - serde = "1.0.90"; - url = "1.7.2"; - }; - deps.utf8_ranges."1.0.2" = {}; - deps.vcpkg."0.2.6" = {}; - deps.vec_map."0.8.1" = {}; - deps.walkdir."2.2.7" = { - same_file = "1.0.4"; - winapi = "0.3.7"; - winapi_util = "0.1.2"; - }; - deps.winapi."0.2.8" = {}; - deps.winapi."0.3.7" = { - winapi_i686_pc_windows_gnu = "0.4.0"; - winapi_x86_64_pc_windows_gnu = "0.4.0"; - }; - deps.winapi_build."0.1.1" = {}; - deps.winapi_i686_pc_windows_gnu."0.4.0" = {}; - deps.winapi_util."0.1.2" = { - winapi = "0.3.7"; - }; - deps.winapi_x86_64_pc_windows_gnu."0.4.0" = {}; - deps.wincolor."1.0.1" = { - winapi = "0.3.7"; - winapi_util = "0.1.2"; - }; -} diff --git a/artiq-fast/pkgs/rust-legacy/cargo-vendor.nix b/artiq-fast/pkgs/rust-legacy/cargo-vendor.nix deleted file mode 100644 index 43dc02c..0000000 --- a/artiq-fast/pkgs/rust-legacy/cargo-vendor.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ callPackage, fetchFromGitHub }: - -((callPackage ./cargo-vendor-carnix.nix {}).cargo_vendor {}).overrideAttrs (attrs: { - src = fetchFromGitHub { - owner = "alexcrichton"; - repo = "cargo-vendor"; - rev = "9355661303ce2870d68a69d99953fce22581e31e"; - sha256 = "0d4j3r09am3ynwhczimzv39264f5xz37jxa9js123y46w5by3wd2"; - }; -}) diff --git a/artiq-fast/pkgs/rust-legacy/cargo.nix b/artiq-fast/pkgs/rust-legacy/cargo.nix deleted file mode 100644 index 04f5fea..0000000 --- a/artiq-fast/pkgs/rust-legacy/cargo.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ stdenv, lib, file, curl, pkgconfig, python, openssl, cmake, zlib -, makeWrapper, libiconv, cacert, rustPlatform, rustc, libgit2 -, fetchurl -}: - -rustPlatform.buildRustPackage rec { - # Note: we can't build cargo 1.28.0 because rustc tightened the borrow checker rules and broke - # backward compatibility, which affects old cargo versions. - # There are also issues with asm/llvm_asm with recent rustc and cargo versions prior to 1.39. - pname = "cargo"; - version = "1.39.0"; - src = fetchurl { - url = "https://static.rust-lang.org/dist/rustc-1.39.0-src.tar.gz"; - sha256 = "0mwkc1bnil2cfyf6nglpvbn2y0zfbv44zfhsd5qg4c9rm6vgd8dl"; - }; - - # the rust source tarball already has all the dependencies vendored, no need to fetch them again - cargoVendorDir = "vendor"; - preBuild = "pushd src/tools/cargo"; - postBuild = "popd"; - - passthru.rustc = rustc; - - # changes hash of vendor directory otherwise - dontUpdateAutotoolsGnuConfigScripts = true; - - nativeBuildInputs = [ pkgconfig cmake makeWrapper ]; - buildInputs = [ cacert file curl python openssl zlib libgit2 ]; - - LIBGIT2_SYS_USE_PKG_CONFIG = 1; - - # fixes: the cargo feature `edition` requires a nightly version of Cargo, but this is the `stable` channel - RUSTC_BOOTSTRAP = 1; - - postInstall = '' - # NOTE: We override the `http.cainfo` option usually specified in - # `.cargo/config`. This is an issue when users want to specify - # their own certificate chain as environment variables take - # precedence - wrapProgram "$out/bin/cargo" \ - --suffix PATH : "${rustc}/bin" \ - --set CARGO_HTTP_CAINFO "${cacert}/etc/ssl/certs/ca-bundle.crt" \ - --set SSL_CERT_FILE "${cacert}/etc/ssl/certs/ca-bundle.crt" - ''; - - checkPhase = '' - # Disable cross compilation tests - export CFG_DISABLE_CROSS_TESTS=1 - cargo test - ''; - - # Disable check phase as there are failures (4 tests fail) - doCheck = false; - - meta = with lib; { - homepage = https://crates.io; - description = "Downloads your Rust project's dependencies and builds your project"; - maintainers = with maintainers; [ wizeman retrry ]; - license = [ licenses.mit licenses.asl20 ]; - platforms = platforms.unix; - }; -} diff --git a/artiq-fast/pkgs/rust-legacy/patches/disable-test-inherit-env.patch b/artiq-fast/pkgs/rust-legacy/patches/disable-test-inherit-env.patch deleted file mode 100644 index fcb75ed..0000000 --- a/artiq-fast/pkgs/rust-legacy/patches/disable-test-inherit-env.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- rustc-1.26.2-src.org/src/libstd/process.rs 2018-06-01 21:40:11.000000000 +0100 -+++ rustc-1.26.2-src/src/libstd/process.rs 2018-06-08 07:50:23.023828658 +0100 -@@ -1745,6 +1745,7 @@ - } - - #[test] -+ #[ignore] - fn test_inherit_env() { - use env; - diff --git a/artiq-fast/pkgs/rust-legacy/patches/net-tcp-disable-tests.patch b/artiq-fast/pkgs/rust-legacy/patches/net-tcp-disable-tests.patch deleted file mode 100644 index 10713b6..0000000 --- a/artiq-fast/pkgs/rust-legacy/patches/net-tcp-disable-tests.patch +++ /dev/null @@ -1,104 +0,0 @@ -diff --git a/src/libstd/net/tcp.rs b/src/libstd/net/tcp.rs -index 0f60b5b3e..9b08415e7 100644 ---- a/src/libstd/net/tcp.rs -+++ b/src/libstd/net/tcp.rs -@@ -962,6 +962,7 @@ mod tests { - } - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn listen_localhost() { - let socket_addr = next_test_ip4(); -@@ -1020,6 +1021,7 @@ mod tests { - }) - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn read_eof() { - each_ip(&mut |addr| { -@@ -1039,6 +1041,7 @@ mod tests { - }) - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn write_close() { - each_ip(&mut |addr| { -@@ -1065,6 +1068,7 @@ mod tests { - }) - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn multiple_connect_serial() { - each_ip(&mut |addr| { -@@ -1087,6 +1091,7 @@ mod tests { - }) - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn multiple_connect_interleaved_greedy_schedule() { - const MAX: usize = 10; -@@ -1123,6 +1128,7 @@ mod tests { - } - - #[test] -+ #[cfg_attr(target_os = "macos", ignore)] - fn multiple_connect_interleaved_lazy_schedule() { - const MAX: usize = 10; - each_ip(&mut |addr| { -@@ -1401,6 +1407,7 @@ mod tests { - } - - #[test] -+ #[cfg_attr(target_os = "macos", ignore)] - fn clone_while_reading() { - each_ip(&mut |addr| { - let accept = t!(TcpListener::bind(&addr)); -@@ -1421,7 +1422,10 @@ mod tests { - - // FIXME: re-enabled bitrig/openbsd tests once their socket timeout code - // no longer has rounding errors. -- #[cfg_attr(any(target_os = "bitrig", target_os = "netbsd", target_os = "openbsd"), ignore)] -+ #[cfg_attr(any(target_os = "bitrig", -+ target_os = "netbsd", -+ target_os = "openbsd", -+ target_os = "macos"), ignore)] - #[test] - fn timeouts() { - let addr = next_test_ip4(); -@@ -1596,6 +1603,7 @@ mod tests { - drop(listener); - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn nodelay() { - let addr = next_test_ip4(); -@@ -1610,6 +1618,7 @@ mod tests { - assert_eq!(false, t!(stream.nodelay())); - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn ttl() { - let ttl = 100; -@@ -1647,6 +1656,7 @@ mod tests { - } - } - -+ #[cfg_attr(target_os = "macos", ignore)] - #[test] - fn peek() { - each_ip(&mut |addr| { -@@ -1679,6 +1689,7 @@ mod tests { - } - - #[test] -+ #[cfg_attr(any(target_os = "linux", target_os = "macos"), ignore)] - fn connect_timeout_unroutable() { - // this IP is unroutable, so connections should always time out, - // provided the network is reachable to begin with. diff --git a/artiq-fast/pkgs/rust-legacy/patches/stdsimd-disable-doctest.patch b/artiq-fast/pkgs/rust-legacy/patches/stdsimd-disable-doctest.patch deleted file mode 100644 index 6ef7fd0..0000000 --- a/artiq-fast/pkgs/rust-legacy/patches/stdsimd-disable-doctest.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/src/stdsimd/coresimd/x86/mod.rs b/src/stdsimd/coresimd/x86/mod.rs -index 32915c332..7cb54f31e 100644 ---- a/src/stdsimd/coresimd/x86/mod.rs -+++ b/src/stdsimd/coresimd/x86/mod.rs -@@ -279,7 +279,6 @@ types! { - /// - /// # Examples - /// -- /// ``` - /// # #![feature(cfg_target_feature, target_feature, stdsimd)] - /// # #![cfg_attr(not(dox), no_std)] - /// # #[cfg(not(dox))] -@@ -301,7 +300,6 @@ types! { - /// # } - /// # if is_x86_feature_detected!("sse") { unsafe { foo() } } - /// # } -- /// ``` - pub struct __m256(f32, f32, f32, f32, f32, f32, f32, f32); - - /// 256-bit wide set of four `f64` types, x86-specific diff --git a/artiq-fast/pkgs/rust-legacy/print-hashes.sh b/artiq-fast/pkgs/rust-legacy/print-hashes.sh deleted file mode 100755 index 7eb00a3..0000000 --- a/artiq-fast/pkgs/rust-legacy/print-hashes.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# All rust-related downloads can be found at -# https://static.rust-lang.org/dist/index.html. To find the date on -# which a particular thing was last updated, look for the *-date.txt -# file, e.g. -# https://static.rust-lang.org/dist/channel-rust-beta-date.txt - -PLATFORMS=( - i686-unknown-linux-gnu - x86_64-unknown-linux-gnu - armv7-unknown-linux-gnueabihf - aarch64-unknown-linux-gnu - i686-apple-darwin - x86_64-apple-darwin -) -BASEURL=https://static.rust-lang.org/dist -VERSION=${1:-} -DATE=${2:-} - -if [[ -z $VERSION ]] -then - echo "No version supplied" - exit -1 -fi - -if [[ -n $DATE ]] -then - BASEURL=$BASEURL/$DATE -fi - -for PLATFORM in "${PLATFORMS[@]}" -do - URL="$BASEURL/rust-$VERSION-$PLATFORM.tar.gz.sha256" - SHA256=$(curl -sSfL $URL | cut -d ' ' -f 1) - echo "$PLATFORM = \"$SHA256\";" -done diff --git a/artiq-fast/pkgs/rust-legacy/rustc-with-crates.nix b/artiq-fast/pkgs/rust-legacy/rustc-with-crates.nix deleted file mode 100644 index 90a66d6..0000000 --- a/artiq-fast/pkgs/rust-legacy/rustc-with-crates.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ stdenv, callPackage, recurseIntoAttrs, makeRustPlatform, llvm-or1k, fetchurl -, targets ? [] -, targetToolchains ? [] -, targetPatches ? [] -, fetchFromGitHub -, runCommand -}: - -let - rustPlatform = recurseIntoAttrs (makeRustPlatform (callPackage ./bootstrap.nix {})); - version = "1.28.0"; - src = fetchFromGitHub { - owner = "m-labs"; - repo = "rust"; - sha256 = "03lfps3xvvv7wv1nnwn3n1ji13z099vx8c3fpbzp9rnasrwzp5jy"; - rev = "f305fb024318e96997fbe6e4a105b0cc1052aad4"; # artiq-1.28.0 branch - fetchSubmodules = true; - }; - rustc_internal = callPackage ./rustc.nix { - inherit stdenv llvm-or1k targets targetPatches targetToolchains rustPlatform version src; - - patches = [ - ./patches/net-tcp-disable-tests.patch - - # Re-evaluate if this we need to disable this one - #./patches/stdsimd-disable-doctest.patch - - # Fails on hydra - not locally; the exact reason is unknown. - # Comments in the test suggest that some non-reproducible environment - # variables such $RANDOM can make it fail. - ./patches/disable-test-inherit-env.patch - ]; - - #configureFlags = [ "--release-channel=stable" ]; - - # 1. Upstream is not running tests on aarch64: - # see https://github.com/rust-lang/rust/issues/49807#issuecomment-380860567 - # So we do the same. - # 2. Tests run out of memory for i686 - #doCheck = !stdenv.isAarch64 && !stdenv.isi686; - - # Disabled for now; see https://github.com/NixOS/nixpkgs/pull/42348#issuecomment-402115598. - doCheck = false; - }; - or1k-crates = stdenv.mkDerivation { - name = "or1k-crates"; - inherit src; - phases = [ "unpackPhase" "buildPhase" ]; - buildPhase = '' - destdir=$out - rustc="${rustc_internal}/bin/rustc --out-dir ''${destdir} -L ''${destdir} --target or1k-unknown-none -g -C target-feature=+mul,+div,+ffl1,+cmov,+addc -C opt-level=s --crate-type rlib" - - mkdir -p ''${destdir} - ''${rustc} --crate-name core src/libcore/lib.rs - ''${rustc} --crate-name compiler_builtins src/libcompiler_builtins/src/lib.rs --cfg 'feature="compiler-builtins"' --cfg 'feature="mem"' - ''${rustc} --crate-name std_unicode src/libstd_unicode/lib.rs - ''${rustc} --crate-name alloc src/liballoc/lib.rs - ''${rustc} --crate-name libc src/liblibc_mini/lib.rs - ''${rustc} --crate-name unwind src/libunwind/lib.rs - ''${rustc} -Cpanic=abort --crate-name panic_abort src/libpanic_abort/lib.rs - ''${rustc} -Cpanic=unwind --crate-name panic_unwind src/libpanic_unwind/lib.rs --cfg llvm_libunwind - ''; - }; - arm-crates = stdenv.mkDerivation { - name = "arm-crates"; - inherit src; - phases = [ "unpackPhase" "buildPhase" ]; - buildPhase = '' - destdir=$out - rustc="${rustc_internal}/bin/rustc --out-dir ''${destdir} -L ''${destdir} --target armv7-unknown-linux-gnueabihf -g -C target-feature=+dsp,+fp16,+neon,+vfp3 -C opt-level=s --crate-type rlib" - - mkdir -p ''${destdir} - ''${rustc} --crate-name core src/libcore/lib.rs - ''${rustc} --crate-name compiler_builtins src/libcompiler_builtins/src/lib.rs --cfg 'feature="compiler-builtins"' --cfg 'feature="mem"' - ''${rustc} --crate-name std_unicode src/libstd_unicode/lib.rs - ''${rustc} --crate-name alloc src/liballoc/lib.rs - ''${rustc} --crate-name libc src/liblibc_mini/lib.rs - ''${rustc} --crate-name unwind src/libunwind/lib.rs - ''${rustc} -Cpanic=abort --crate-name panic_abort src/libpanic_abort/lib.rs - ''${rustc} -Cpanic=unwind --crate-name panic_unwind src/libpanic_unwind/lib.rs --cfg llvm_libunwind - ''; - }; -in - stdenv.mkDerivation { - name = "rustc"; - inherit src version; - buildCommand = '' - mkdir -p $out/lib/rustlib/or1k-unknown-none/lib/ - cp -r ${or1k-crates}/* $out/lib/rustlib/or1k-unknown-none/lib/ - mkdir -p $out/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/ - cp -r ${arm-crates}/* $out/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/ - cp -r ${rustc_internal}/* $out - ''; - passAsFile = [ "buildCommand" ]; - } diff --git a/artiq-fast/pkgs/rust-legacy/rustc.nix b/artiq-fast/pkgs/rust-legacy/rustc.nix deleted file mode 100644 index 23e9bf4..0000000 --- a/artiq-fast/pkgs/rust-legacy/rustc.nix +++ /dev/null @@ -1,182 +0,0 @@ -{ stdenv, lib, targetPackages -, fetchurl, file, python2, tzdata, ps -, llvm-or1k, ncurses, zlib, darwin, rustPlatform, git, cmake, curl -, which, libffi, gdb -, version -, src -, configureFlags ? [] -, patches -, targets -, targetPatches -, targetToolchains -, doCheck ? true -, broken ? false -}: - -let - inherit (lib) optional optionalString; - inherit (darwin.apple_sdk.frameworks) Security; - - target = builtins.replaceStrings [" "] [","] (builtins.toString targets); - src_rustc = fetchurl { - url = "https://static.rust-lang.org/dist/rustc-1.28.0-src.tar.gz"; - sha256 = "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"; - }; - -in - -stdenv.mkDerivation { - pname = "rustc"; - inherit version; - - inherit src; - - __darwinAllowLocalNetworking = true; - - # rustc complains about modified source files otherwise - dontUpdateAutotoolsGnuConfigScripts = true; - - # Running the default `strip -S` command on Darwin corrupts the - # .rlib files in "lib/". - # - # See https://github.com/NixOS/nixpkgs/pull/34227 - stripDebugList = if stdenv.isDarwin then [ "bin" ] else null; - - NIX_LDFLAGS = optionalString stdenv.isDarwin "-rpath ${llvm-or1k}/lib"; - - # Enable nightly features in stable compiles (used for - # bootstrapping, see https://github.com/rust-lang/rust/pull/37265). - # This loosens the hard restrictions on bootstrapping-compiler - # versions. - RUSTC_BOOTSTRAP = "1"; - - # Increase codegen units to introduce parallelism within the compiler. - RUSTFLAGS = "-Ccodegen-units=10"; - - # We need rust to build rust. If we don't provide it, configure will try to download it. - # Reference: https://github.com/rust-lang/rust/blob/master/src/bootstrap/configure.py - configureFlags = configureFlags - ++ [ "--enable-local-rust" "--local-rust-root=${rustPlatform.rust.rustc}" "--enable-rpath" ] - ++ [ "--enable-vendor" ] - ++ [ "--default-linker=${targetPackages.stdenv.cc}/bin/cc" ] - ++ [ "--enable-llvm-link-shared" ] - ++ optional (targets != []) "--target=${target}" - ++ [ "--llvm-root=${llvm-or1k}" ] ; - - # The bootstrap.py will generated a Makefile that then executes the build. - # The BOOTSTRAP_ARGS used by this Makefile must include all flags to pass - # to the bootstrap builder. - postConfigure = '' - substituteInPlace Makefile --replace 'BOOTSTRAP_ARGS :=' 'BOOTSTRAP_ARGS := --jobs $(NIX_BUILD_CORES)' - ''; - - # FIXME: qknight, readd deleted vendor folder from 1.28 rustc - preConfigure = '' - export HOME=$out - # HACK: we add the vendor folder from rustc 1.28 to make the compiling work - tar xf ${src_rustc} - mv rustc-1.28.0-src/src/vendor/ src/vendor - ''; - - patches = patches ++ targetPatches; - - # the rust build system complains that nix alters the checksums - dontFixLibtool = true; - - passthru.target = target; - - postPatch = '' - patchShebangs src/etc - - # Fix the configure script to not require curl as we won't use it - sed -i configure \ - -e '/probe_need CFG_CURL curl/d' - - # Disable fragile tests. - rm -vr src/test/run-make/linker-output-non-utf8 || true - rm -vr src/test/run-make/issue-26092 || true - - # Remove test targeted at LLVM 3.9 - https://github.com/rust-lang/rust/issues/36835 - rm -vr src/test/run-pass/issue-36023.rs || true - - # Disable test getting stuck on hydra - possible fix: - # https://reviews.llvm.org/rL281650 - rm -vr src/test/run-pass/issue-36474.rs || true - - # On Hydra: `TcpListener::bind(&addr)`: Address already in use (os error 98)' - sed '/^ *fn fast_rebind()/i#[ignore]' -i src/libstd/net/tcp.rs - - # https://github.com/rust-lang/rust/issues/39522 - echo removing gdb-version-sensitive tests... - find src/test/debuginfo -type f -execdir grep -q ignore-gdb-version '{}' \; -print -delete - rm src/test/debuginfo/{borrowed-c-style-enum.rs,c-style-enum-in-composite.rs,gdb-pretty-struct-and-enums-pre-gdb-7-7.rs,generic-enum-with-different-disr-sizes.rs} - - # Useful debugging parameter - # export VERBOSE=1 - '' + optionalString stdenv.isDarwin '' - # Disable all lldb tests. - # error: Can't run LLDB test because LLDB's python path is not set - rm -vr src/test/debuginfo/* - rm -v src/test/run-pass/backtrace-debuginfo.rs - - # error: No such file or directory - rm -v src/test/run-pass/issue-45731.rs - - # Disable tests that fail when sandboxing is enabled. - substituteInPlace src/libstd/sys/unix/ext/net.rs \ - --replace '#[test]' '#[test] #[ignore]' - substituteInPlace src/test/run-pass/env-home-dir.rs \ - --replace 'home_dir().is_some()' true - rm -v src/test/run-pass/fds-are-cloexec.rs # FIXME: pipes? - rm -v src/test/run-pass/sync-send-in-std.rs # FIXME: ??? - ''; - - # rustc unfortunately need cmake for compiling llvm-rt but doesn't - # use it for the normal build. This disables cmake in Nix. - dontUseCmakeConfigure = true; - - # ps is needed for one of the test cases - nativeBuildInputs = - [ file python2 ps rustPlatform.rust.rustc git cmake - which libffi - ] - # Only needed for the debuginfo tests - ++ optional (!stdenv.isDarwin) gdb; - - buildInputs = [ ncurses zlib llvm-or1k ] ++ targetToolchains - ++ optional stdenv.isDarwin Security; - - outputs = [ "out" "man" "doc" ]; - setOutputFlags = false; - - # Disable codegen units and hardening for the tests. - preCheck = '' - export RUSTFLAGS= - export TZDIR=${tzdata}/share/zoneinfo - export hardeningDisable=all - '' + - # Ensure TMPDIR is set, and disable a test that removing the HOME - # variable from the environment falls back to another home - # directory. - optionalString stdenv.isDarwin '' - export TMPDIR=/tmp - sed -i '28s/home_dir().is_some()/true/' ./src/test/run-pass/env-home-dir.rs - ''; - - inherit doCheck; - - configurePlatforms = []; - - # https://github.com/NixOS/nixpkgs/pull/21742#issuecomment-272305764 - # https://github.com/rust-lang/rust/issues/30181 - # enableParallelBuilding = false; - - meta = with lib; { - homepage = https://www.rust-lang.org/; - description = "A safe, concurrent, practical language"; - maintainers = with maintainers; [ sb0 ]; - license = [ licenses.mit licenses.asl20 ]; - platforms = platforms.linux ++ platforms.darwin; - broken = broken; - }; -} diff --git a/artiq-fast/rust-platform.nix b/artiq-fast/rust-platform.nix deleted file mode 100644 index 26ccce9..0000000 --- a/artiq-fast/rust-platform.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ pkgs }: -let - rustManifest = pkgs.fetchurl { - url = "https://static.rust-lang.org/dist/2021-01-29/channel-rust-nightly.toml"; - sha256 = "sha256-EZKgw89AH4vxaJpUHmIMzMW/80wAFQlfcxRoBD9nz0c="; - }; - targets = []; - rustChannelOfTargets = _channel: _date: targets: - (pkgs.lib.rustLib.fromManifestFile rustManifest { - inherit (pkgs) stdenv lib fetchurl patchelf; - }).rust.override { - inherit targets; - extensions = ["rust-src"]; - }; - rust = rustChannelOfTargets "nightly" null targets; -in - pkgs.recurseIntoAttrs (pkgs.makeRustPlatform { - rustc = rust; - cargo = rust; - }) diff --git a/artiq-fast/shell-dev.nix b/artiq-fast/shell-dev.nix deleted file mode 100644 index aff6905..0000000 --- a/artiq-fast/shell-dev.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ pkgs ? import {}}: - -let - artiqpkgs = import ./default.nix { inherit pkgs; }; - vivado = import ./vivado.nix { inherit pkgs; }; -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 - 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.binutils-or1k - artiqpkgs.binutils-arm - artiqpkgs.llvm-or1k - artiqpkgs.openocd - ]; - TARGET_AR="or1k-linux-ar"; - } diff --git a/artiq-fast/shell.nix b/artiq-fast/shell.nix deleted file mode 100644 index 0f14cc3..0000000 --- a/artiq-fast/shell.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs ? import {}}: - -let - artiqpkgs = import ./default.nix { inherit pkgs; }; -in - pkgs.mkShell { - buildInputs = [ (pkgs.python3.withPackages(ps: [artiqpkgs.artiq])) ]; - } diff --git a/artiq-fast/vivado.nix b/artiq-fast/vivado.nix deleted file mode 100644 index f6e5f41..0000000 --- a/artiq-fast/vivado.nix +++ /dev/null @@ -1,24 +0,0 @@ -# Install Vivado in /opt and add to /etc/nixos/configuration.nix: -# nix.sandboxPaths = ["/opt"]; - -{ pkgs, vivadoPath ? "/opt/Xilinx/Vivado/2021.2" }: - -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 - ] ++ ( if pkgs ? libxcrypt-legacy then [ pkgs.libxcrypt-legacy ] else []) - ); - profile = "source ${vivadoPath}/settings64.sh"; - runScript = "vivado"; -} diff --git a/artiq-fast/wfvm-legacy.nix b/artiq-fast/wfvm-legacy.nix deleted file mode 100644 index a520492..0000000 --- a/artiq-fast/wfvm-legacy.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ pkgs }: - -let - # Pin nixpkgs to avoid frequent resource-intensive Windows reinstallations on Hydra. - wfvm-pkgs = pkgs.fetchFromGitHub { - owner = "NixOS"; - repo = "nixpkgs"; - rev = "f8248ab6d9e69ea9c07950d73d48807ec595e923"; - sha256 = "009i9j6mbq6i481088jllblgdnci105b2q4mscprdawg3knlyahk"; - }; - wfvm = pkgs.fetchgit { - url = "https://git.m-labs.hk/M-Labs/wfvm.git"; - rev = "4b497938ffd9fcddf84a3dbe2f01524395292adb"; - sha256 = "0m3kdbbcskqc1lf8b5f7ccbll9b7vkl4r00kbyx3yjb2rs6cqvil"; - }; -in import "${wfvm}/wfvm" { pkgs = (import wfvm-pkgs {}); } diff --git a/artiq-fast/wfvm.nix b/artiq-fast/wfvm.nix deleted file mode 100644 index 2384088..0000000 --- a/artiq-fast/wfvm.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ pkgs }: - -let - # Pin nixpkgs to avoid frequent resource-intensive Windows reinstallations on Hydra. - wfvm-pkgs = pkgs.fetchFromGitHub { - owner = "NixOS"; - repo = "nixpkgs"; - rev = "f8248ab6d9e69ea9c07950d73d48807ec595e923"; - sha256 = "009i9j6mbq6i481088jllblgdnci105b2q4mscprdawg3knlyahk"; - }; - wfvm = pkgs.fetchgit { - url = "https://git.m-labs.hk/M-Labs/wfvm.git"; - rev = "c7d9060eeef46bebaf376c95ca37c7a65a2ea896"; - sha256 = "022fb7zpn48hg9qihmqmzqdphks7b7cbnw6f5s1qy1in5c7f8rx9"; - }; -in import "${wfvm}/wfvm" { pkgs = (import wfvm-pkgs {}); } diff --git a/artiq-fast/windows/conda_noarch_packages-5.nix b/artiq-fast/windows/conda_noarch_packages-5.nix deleted file mode 100644 index 560a116..0000000 --- a/artiq-fast/windows/conda_noarch_packages-5.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs } : [ - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/noarch/prettytable-0.7.2-py_3.tar.bz2"; - sha256 = "0b7s4xm6bbkcg37sf1i3mxrbac0vxhryq22m3qx4x9kh6k2c5g5q"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.20-py_0.tar.bz2"; - sha256 = "1qwcb07q8cjz0qpj6pfxb0qb68kddmx9bv9wr5pghwz78q8073z9"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/six-1.15.0-py_0.tar.bz2"; - sha256 = "08rsfp9bd2mz8r120s8w5vgncy0gn732xa0lfgbmx833548cfqmb"; -}) -] diff --git a/artiq-fast/windows/conda_noarch_packages-6.nix b/artiq-fast/windows/conda_noarch_packages-6.nix deleted file mode 100644 index 14c0452..0000000 --- a/artiq-fast/windows/conda_noarch_packages-6.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ pkgs } : [ - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/noarch/prettytable-2.1.0-pyhd8ed1ab_0.tar.bz2"; - sha256 = "1w71padwzy6ay5g8zl575ali994cssgcgzf5917rap3fmw2mgg4d"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_0.tar.bz2"; - sha256 = "120wav3bxbyv0jsvbl94rxsigqqchsqg4qqxccg9ij7ydirmqaql"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/pyqtgraph-0.11.0-py_0.tar.bz2"; - sha256 = "1jnid69dpvhd8nscmkm761qpqz8ip0gka5av90xs3i0pqkqmffqg"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/cached-property-1.5.2-py_0.tar.bz2"; - sha256 = "01mcbrsrdwvinyvp0fs2hbkczydb33gbz59ldhb1484w5mm9y9bi"; -}) -] diff --git a/artiq-fast/windows/conda_noarch_packages-7.nix b/artiq-fast/windows/conda_noarch_packages-7.nix deleted file mode 100644 index 038718a..0000000 --- a/artiq-fast/windows/conda_noarch_packages-7.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ pkgs } : [ - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/cached-property-1.5.2-py_0.tar.bz2"; - sha256 = "01mcbrsrdwvinyvp0fs2hbkczydb33gbz59ldhb1484w5mm9y9bi"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/zipp-3.6.0-pyhd3eb1b0_0.tar.bz2"; - sha256 = "1wj0hmhn09b4szs5zyslpd1mggy90pbjil6q3lyqkw3z492za80q"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/noarch/prettytable-2.4.0-pyhd8ed1ab_0.tar.bz2"; - sha256 = "1iv2x8m8xf2y8v68kz2lil2zaji7gsz099zs8wsrap03j5vpraf0"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.0-pyhd3eb1b0_1.tar.bz2"; - sha256 = "10bxbfy7dlmbr8b21ddb1k2wkrzhs7j2zgmss38pv4g5xidv9v74"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/pyqtgraph-0.11.0-py_0.tar.bz2"; - sha256 = "1jnid69dpvhd8nscmkm761qpqz8ip0gka5av90xs3i0pqkqmffqg"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_0.tar.bz2"; - sha256 = "120wav3bxbyv0jsvbl94rxsigqqchsqg4qqxccg9ij7ydirmqaql"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.2-pyhd3eb1b0_0.tar.bz2"; - sha256 = "1brzm9v9yvs3xhdh89jzw5xjq4a3r9vizhkhdfcax86d2q52ji97"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.21-pyhd3eb1b0_0.tar.bz2"; - sha256 = "1dyi89xx73kq0caz4jx493czn16w0dl1gjhw0c5kw28bxz6i8wm8"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/wcwidth-0.2.5-pyhd3eb1b0_0.tar.bz2"; - sha256 = "1x3sncbrp7bml6qjss24qyy0rsjbdhnzjwpf6apcd14kzspnr21a"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/noarch/tzdata-2021e-hda174b7_0.tar.bz2"; - sha256 = "1sxgc0pamsskszm29cxpwzlffydxjr3aqpgly7j1f3ansvchxvb4"; -}) -] diff --git a/artiq-fast/windows/conda_win-64_packages-5.nix b/artiq-fast/windows/conda_win-64_packages-5.nix deleted file mode 100644 index 74bb79d..0000000 --- a/artiq-fast/windows/conda_win-64_packages-5.nix +++ /dev/null @@ -1,167 +0,0 @@ -{ pkgs } : [ - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/pyqt-5.9.2-py35h6538335_2.tar.bz2"; - sha256 = "1anwq53nic50cijngxaylpn6232j9wdc2wz2rykqpgzvs1ms108s"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/zlib-1.2.11-h62dcd97_4.tar.bz2"; - sha256 = "1jxd7sg0c278hqv09q6hridpdnyhkd34gbs92wkravj3gwsr1adk"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/openssl-1.1.1g-he774522_0.tar.bz2"; - sha256 = "1gwfj33qb8inikdhmgcm30iz1ag8x71lzicsxbdr7ni4153df5gb"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/mkl_random-1.0.1-py35h77b88f5_1.tar.bz2"; - sha256 = "0899qg9ih8srpw9q5mxd85hg4gpawb7lmz25x9xi401cfwhgwq7l"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/hdf5-1.10.2-hac2f561_1.tar.bz2"; - sha256 = "0l1i5bpxl0bn9hf738ywygjwc32d4cq5fjkgzij3x27cxi8nvd21"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/tbb4py-2018.0.5-py35he980bc4_0.tar.bz2"; - sha256 = "0gypjcmciw3rnd2cq0sqmvspgzaas13fghv633dqj8g3bvl4lfif"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/wheel-0.31.1-py35_0.tar.bz2"; - sha256 = "07zmbg57lpvqd9nmahiff1mhzxmzchx1v128dcrj4iamymjcdlzf"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/vs2015_runtime-14.16.27012-hf0eaf9b_2.tar.bz2"; - sha256 = "1gbm6i6nkp8linmak5mm42hj1nzqd5ppak8kv1n3wfn52p21ngvs"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/pygit2-0.27.1-py35hfa6e2cd_0.tar.bz2"; - sha256 = "1jypm8vxs4j4yr37ai4ki9qsslv3wz6slklmisnvjraz1a4vzaf8"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/pip-10.0.1-py35_0.tar.bz2"; - sha256 = "0zwlkfgnag1s64wbwdcg44zqj2dpfcq1g4b6dsk82q24j7fw40i3"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/h5py-2.8.0-py35h3bdd7fb_2.tar.bz2"; - sha256 = "0743wrf51b2vs8ybasjpn7ricbh740r7drxcimkhbxp8r6vd66vp"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-1.15.2-py35ha559c80_0.tar.bz2"; - sha256 = "1igf4gm726s4kg7km24flxdxr73fafaz3z18y3ndcb5f6r9zwa44"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/mkl-2018.0.3-1.tar.bz2"; - sha256 = "01pq0f2787q58avg5ylfrbpf4jlg2b6rbajvf3swjpm1cmzxkm81"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/libssh2-1.9.0-h7a1dbc1_1.tar.bz2"; - sha256 = "0sz405ab3n7991hxy8l9affs1slivsimgadxsdr6wvpgx3j4aqgx"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/tk-8.6.10-he774522_0.tar.bz2"; - sha256 = "15bfncacdxmcbn4xixmfz2m7a09k7hcpwxvwn1lki84bx0fmzsis"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/sqlite-3.32.2-h2a8f88b_0.tar.bz2"; - sha256 = "086jjnxfchypkr8cp1q8nsis0jfvl293bv4bcg7ikv7aia3vda8p"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/wincertstore-0.2-py35hfebbdb8_0.tar.bz2"; - sha256 = "1624bzqlbiq4jlz46l65574smw739p7l38ydzxmayq3jmwx6zaar"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/certifi-2018.8.24-py35_1.tar.bz2"; - sha256 = "06ygpkx3f71rwmq9lgc29r6jj4g1zi8rvrmn4mrrsb9b5sf0rzgf"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/icu-58.2-ha925a31_3.tar.bz2"; - sha256 = "0vcl0j3v9ab022s2g3a9iv1pn7sflh670yyf5m08hdyf049m3jz7"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/regex-2018.08.29-py35hfa6e2cd_0.tar.bz2"; - sha256 = "16cjgwpaqnfy8bg35iz12bb9whpws4abiz4cq4shpnh6gnwpwzj3"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/cffi-1.11.5-py35h74b6da3_1.tar.bz2"; - sha256 = "0nc3ps4xl8rqpwiqaqqr5lrqzk8lx1a4hh3fpm7i7rlppqn5pm6a"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/libcurl-7.69.1-h2a8f88b_0.tar.bz2"; - sha256 = "182zrmgl2142gfgnbgjsk0gbj85vw75xzxvhn9lzm485ghxsasvg"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/mkl_fft-1.0.6-py35hdbbee80_0.tar.bz2"; - sha256 = "0xb02rx28rjlp5clavg19jb129ihcarrkz46pncaar91qxckbbxz"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/pyqtgraph-0.10.0-py35h28b3542_3.tar.bz2"; - sha256 = "0ywzw3i4kf5ccck9whmg1j7s22x6i5fpywndy8rkr9va38g4nazq"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/sip-4.19.8-py35h6538335_0.tar.bz2"; - sha256 = "1y761zpm6bi0pb61x1y26ap56hylh6mjg1xq9zl08bmcl2dlkwfy"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/setuptools-40.2.0-py35_0.tar.bz2"; - sha256 = "146piyifnip1flqph19nxilnhfbzzsxlhfyx0i61wv7krr6ln9yy"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/python-levenshtein-0.12.0-py35_0.tar.bz2"; - sha256 = "1rdpzv1y535swf17nm88chkp1m8w3wd3nwdy7jk1xfcnx1da5ss6"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/libgit2-0.27.8-hfac1375_0.tar.bz2"; - sha256 = "05pjzwmm5vyxwcgi6vv3i961x3dgdd9c4b1ihagq9kyxgqfy21kd"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/scipy-1.1.0-py35h4f6bf74_1.tar.bz2"; - sha256 = "0sdyj5nlycv4krz7f8rzhi0kxv302gpx65x1zwhj8dn6b2c50li0"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/curl-7.69.1-h2a8f88b_0.tar.bz2"; - sha256 = "0hw5dh7gzx8fap4c3vkc2xc2q9by3f5ndbigr6pm6w5v29qaydn4"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/intel-openmp-2019.4-245.tar.bz2"; - sha256 = "13qid5aagyxsfy5ng4bbwb7hs9jj29jvqbpvvkjiy6bgv36m8kr8"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-base-1.15.2-py35h8128ebf_0.tar.bz2"; - sha256 = "166w4wkp9dwl505hc00hny1mq2mlvb169n7c9nws7dz8j36pqfrx"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/python-3.5.6-he025d50_0.tar.bz2"; - sha256 = "0ygvmbyvhc2jisb5bzb0r5709qmn8392gr7rv6c8vrdiylfiqr73"; -}) -] diff --git a/artiq-fast/windows/conda_win-64_packages-6.nix b/artiq-fast/windows/conda_win-64_packages-6.nix deleted file mode 100644 index 93e4030..0000000 --- a/artiq-fast/windows/conda_win-64_packages-6.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ pkgs } : [ - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-base-1.20.2-py38hc2deb75_0.tar.bz2"; - sha256 = "1940fryxlil04d5y0df1s1sydhny8l97slvfm7v40mxibdmf2sdn"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/hdf5-1.10.6-h7ebc959_0.tar.bz2"; - sha256 = "09bik65gspyrqj3j5p67wf2ywhgyfz3pkw39gwdzha7yyjkkzx0q"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/certifi-2021.5.30-py38haa95532_0.tar.bz2"; - sha256 = "0hzj23xjw88wllz1l4qdnzp335608vm8pl7w1ka9pkg6ip69lnpm"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/sqlite-3.36.0-h2bbff1b_0.tar.bz2"; - sha256 = "15w0lhcl97wafqvc6ccc96311wc5rrmh16i4ki1pw6kzkfmr1k6r"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/libgit2-1.1.1-h8648793_0.tar.bz2"; - sha256 = "0rwmd48g7sywmxgcyjad3hznpm15d3w5604syrkcs2ryih0cgwkd"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/h5py-3.2.1-py38h3de5c98_0.tar.bz2"; - sha256 = "17czl7gvv6d9v6ng9l6c0i1iy181cr1qq7cyn2s90kamnfh3dx8b"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-1.20.2-py38ha4e8547_0.tar.bz2"; - sha256 = "0w4hkirwgh4bp7djzxp2yh086jfdbz1y3njsrpqm441rjjq39hpz"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/python_abi-3.8-2_cp38.tar.bz2"; - sha256 = "1j62rls5r6646b7gagc7d6jj6sqiyqd9vq442dqg3pwyldlz3zqg"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/python-levenshtein-0.12.2-py38h2bbff1b_0.tar.bz2"; - sha256 = "0xvl3v7q1wr0a8li3f8d7hara58lcvrr6hmcd6cqkvcnhggkhp9s"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/pygit2-1.6.1-py38h294d835_0.tar.bz2"; - sha256 = "0frgv2b1ckgp8w574abliz369lbziyqsipkwxcjy4l9rbn2pa0rj"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/ca-certificates-2021.5.25-haa95532_1.tar.bz2"; - sha256 = "0g77ic1hs9gj9nknjgrn7byk63z82ima7gqynjcds1kbk8cy4hcd"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/pip-21.1.3-py38haa95532_0.tar.bz2"; - sha256 = "1wzb3f3n1lndmxbr3agmx4rr1k11jf60fcrqmgr1d7a3ygqvqy4q"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/python-3.8.10-hdbf39b2_7.tar.bz2"; - sha256 = "05p2g1552crfmcf4a9wfjg4d1qngsvi1srpca2hqr6s9slip2w19"; -}) -] diff --git a/artiq-fast/windows/conda_win-64_packages-7.nix b/artiq-fast/windows/conda_win-64_packages-7.nix deleted file mode 100644 index 112754d..0000000 --- a/artiq-fast/windows/conda_win-64_packages-7.nix +++ /dev/null @@ -1,182 +0,0 @@ -{ pkgs } : [ - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/ca-certificates-2021.10.26-haa95532_2.tar.bz2"; - sha256 = "14zdv6whd7cw298mkwpgkfydpz6zwhjq6gvxpw5s77m9b8jyi08w"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/jpeg-9d-h2bbff1b_0.tar.bz2"; - sha256 = "0jdwx9bl89byaqi73h0wr9hkjdi0ia47izgj602xfzc8ylhg0fxl"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/python_abi-3.9-2_cp39.tar.bz2"; - sha256 = "04d9pbqzck0330jv7mi8x4r1883sv421lwai2p9yamr2yl6xpan0"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/certifi-2021.10.8-py39haa95532_0.tar.bz2"; - sha256 = "032gmb2lyd0kwb7cr1j90fqyb44aar9jnki9jzjp6p65lbckc27l"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/python-3.9.7-h6244533_1.tar.bz2"; - sha256 = "1pgnrci071wbjdsarjrjssqvbk6nr2hbsvwdvzvf255f33264jj3"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/pip-21.2.4-py39haa95532_0.tar.bz2"; - sha256 = "06a916f8fyjydy5rrrhvwjxn5jwr1w2b6dvhgpsa09bq4p1c2qid"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/regex-2021.8.3-py39h2bbff1b_0.tar.bz2"; - sha256 = "1p8kf8d2d3cb6z91fl2sjrn3mpaxb7pq1rc20705k1lqbjf9biga"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/mkl-2021.4.0-haa95532_640.tar.bz2"; - sha256 = "115zmm4n769xl442qmv5h2ik5fyc1hb8cm1hc5a1vyb7bqwj2xrx"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/setuptools-58.0.4-py39haa95532_0.tar.bz2"; - sha256 = "0avlsc1k3ms92panb24z5vas5gkfm9zxy0mh71pv7yqc466k2qc0"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/importlib-metadata-4.8.2-py39haa95532_0.tar.bz2"; - sha256 = "1fjr69ibknprp25742vzpbck6byrw84w2g3zxa5vqsyz7pyv27xb"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/numba/win-64/llvmlite-0.38.0rc1-py39_0.tar.bz2"; - sha256 = "0xmd338r5vl9f456cvmmf4s1bz1jxc3yv58050xqgifpkrx3z3vr"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/hdf5-1.10.6-h7ebc959_0.tar.bz2"; - sha256 = "09bik65gspyrqj3j5p67wf2ywhgyfz3pkw39gwdzha7yyjkkzx0q"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/intel-openmp-2021.4.0-haa95532_3556.tar.bz2"; - sha256 = "19mmjvcm7f8nzyk7djjsd9lf6qx01f35wrvmragv1fhzsis3ddgf"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/mkl_random-1.2.2-py39hf11a4ad_0.tar.bz2"; - sha256 = "03h3857xvp5klhc24jn7lh0h7227qrk7q7ch768w27bx27g27js3"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-base-1.21.2-py39h0829f74_0.tar.bz2"; - sha256 = "1x97k4kdvdwh0aahrpzfaypsf7zvxkqwn0xw7cph2p9fzk7j88zw"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/pygit2-1.7.2-py39hb82d6ee_0.tar.bz2"; - sha256 = "1l56b7x1mrha9fs4j2zw4f2c199ab0yw1yggdivjyn40xll9x2sd"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/openssl-1.1.1l-h2bbff1b_0.tar.bz2"; - sha256 = "1w37wciivy4dqa1gvkwq23myv7sk7vr4davarvxc9hjl2is3r4dm"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/sip-4.19.13-py39hd77b12b_0.tar.bz2"; - sha256 = "1p2wgpzy1ccya314m53qjqnw2wns7wj4lxv3lkmddx940f12i76r"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/libssh2-1.10.0-h680486a_2.tar.bz2"; - sha256 = "1nnzz9hxgj63gs48flj6pxq6nqz9gkx54gwibyq502za1rbhbyw6"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/python-levenshtein-0.12.2-py39h2bbff1b_0.tar.bz2"; - sha256 = "1y5g9l07whv614qyafkzbph30zi9kypxfswdxh0gknsih8941j0k"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/pyreadline-2.1-py39haa95532_1.tar.bz2"; - sha256 = "0581i2vp5b1dx7z9v4q41dd9ppj9bh9xgy0cnd7zd01zblafdbj5"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/h5py-3.6.0-py39h3de5c98_0.tar.bz2"; - sha256 = "0g6jw2c6qn4vzmn6k3yal8qxrdzcdzpx6grwq1mjxpamb11akni7"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/numba/win-64/icc_rt-2020.2-intel_254.tar.bz2"; - sha256 = "195km05did3n7zaljg7vwz11n8ibf935gk0m7dy07ngfk97s8w9f"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/lld-12.0.0-he71bc95_0.tar.bz2"; - sha256 = "0f6aw6d72w339jyqyjavnnsv35k2dc4pl79ymylczwf2my37rqpk"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/mkl-service-2.4.0-py39h2bbff1b_0.tar.bz2"; - sha256 = "05sbxqipw9cp2c4p5imadk4hc9ds1d25hys5vamjp6pnl6435ipk"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/pyqt-5.9.2-py39hd77b12b_6.tar.bz2"; - sha256 = "1v3qbmidh2h4vkzf5w8lisjc58z2714bbvaf0dg5m2k5vga4zh84"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/llvm-tools-12.0.0-h05d9aec_3.tar.bz2"; - sha256 = "0ly686hb730mvhw47xyz92dqchq46wkdaw1v2a6i0fzzdgf3ww9p"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/libxml2-2.9.12-h0ad7f3c_0.tar.bz2"; - sha256 = "0gm1ajhiwdk23cc62nkayqqwqcccxwzj01dmypycx5d6cbh46l9y"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/wincertstore-0.2-py39haa95532_2.tar.bz2"; - sha256 = "0fvcgpmn13i9rxql4dvw8ybzj2vvck0fqsqk1qrgdl3zkh841f1z"; -}) - -(pkgs.fetchurl { - url = "https://conda.anaconda.org/conda-forge/win-64/libgit2-1.3.0-h8648793_1.tar.bz2"; - sha256 = "0gw71dk8a2b80822p44rarq5nqiww8g9braxvbxnwanam5wl5611"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/cffi-1.15.0-py39h2bbff1b_0.tar.bz2"; - sha256 = "1akbnswb1zigf1cx8im6s96rjmfryl4i20sg3xgaqy5papz926hf"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/mkl_fft-1.3.1-py39h277e83a_0.tar.bz2"; - sha256 = "0i2v4vzwklvwp1n003yyr2hgpb1gjsh05ibsc92w0c5angf0s4wp"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-1.21.2-py39hfca59bb_0.tar.bz2"; - sha256 = "1f10ka0vyx319z3f51zfxfcbwipa3vscw175c6i2qsb9ynlihqi7"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/scipy-1.7.1-py39hbe87c03_2.tar.bz2"; - sha256 = "131xc7qr5lrfnxdy8p09y6gghx0h7wbaif2kq4r1jmmmm8pksjm6"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/libllvm12-12.0.0-h425c57c_3.tar.bz2"; - sha256 = "1k5396hvb4hbylcpnx4m7v7kggw9kn8j1w0v91lwzc3gv64q83l9"; -}) - -(pkgs.fetchurl { - url = "https://repo.anaconda.com/pkgs/main/win-64/sqlite-3.36.0-h2bbff1b_0.tar.bz2"; - sha256 = "15w0lhcl97wafqvc6ccc96311wc5rrmh16i4ki1pw6kzkfmr1k6r"; -}) -] diff --git a/artiq-fast/windows/make_conda_packages.sh b/artiq-fast/windows/make_conda_packages.sh deleted file mode 100755 index 1c788f1..0000000 --- a/artiq-fast/windows/make_conda_packages.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bash - -# Run manually to build the list of conda dependencies to install in the -# test environments. - -# NOTE: This procedure encounters failing HTTPS handshakes. To circumvent just -# for testing, insert `call conda config --set ssl_verify no` into -# getcondapackages.bat. To securely update the sources lists update the RTC -# hack to the proper date instead. - -set -e - -nix-build -E " -let - pkgs = import {}; - wfvm = import ../wfvm.nix { inherit pkgs; }; -in - wfvm.utils.wfvm-run { - name = \"get-conda-packages\"; - image = wfvm.makeWindowsImage { installCommands = [ wfvm.layers.anaconda3 ]; }; - # TODO: fix wfvm login expiry and also remove 'date' workarounds below - #fakeRtc = false; - isolateNetwork = false; - script = '' - cat > getcondapackages.bat << EOF - date 12-14-21 - call conda config --prepend channels https://conda.m-labs.hk/artiq-beta - call conda config --append channels conda-forge - call conda config --prepend channels numba - call conda create -n artiq -y - call conda install --dry-run --json -n artiq artiq > packages.json - EOF - \${wfvm.utils.win-put}/bin/win-put getcondapackages.bat - \${wfvm.utils.win-exec}/bin/win-exec '.\Anaconda3\Scripts\activate && getcondapackages' - \${wfvm.utils.win-get}/bin/win-get packages.json - ''; - } -" - -./result/bin/wfvm-run-get-conda-packages - -python -c " -import json - -with open('packages.json') as json_file: - packages = json.load(json_file) - -with open('packages_noarch.txt', 'w') as list_noarch: - with open('packages_win-64.txt', 'w') as list_win64: - for fetch in packages['actions']['FETCH']: - if 'm-labs' not in fetch['channel']: - if fetch['subdir'] == 'noarch': - list = list_noarch - elif fetch['subdir'] == 'win-64': - list = list_win64 - else: - raise ValueError - url = fetch['url'] - if url.endswith('.conda'): - url = url[:-6] + '.tar.bz2' - print(url, file=list) -" - -for type in "noarch" "win-64"; do - echo Downloading $type packages - out=conda_$type\_packages.nix - echo "{ pkgs } : [" > $out - while read package; do - hash=$(nix-prefetch-url $package) - echo " -(pkgs.fetchurl { - url = \"$package\"; - sha256 = \"$hash\"; -})" >> $out - done < packages_$type.txt - echo "]" >> $out -done - -rm result getcondapackages.bat packages.json packages_noarch.txt packages_win-64.txt diff --git a/artiq-fast/windows/manual-test-run.nix b/artiq-fast/windows/manual-test-run.nix deleted file mode 100644 index fd4d554..0000000 --- a/artiq-fast/windows/manual-test-run.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ pkgs ? import {} }: - -let - artiqpkgs = import ../. { inherit pkgs; }; - run-test = import ./run-test.nix { - inherit pkgs artiqpkgs; - testCommand = "set ARTIQ_ROOT=%cd%\\Anaconda3\\envs\\artiq-env\\Lib\\site-packages\\artiq\\examples\\kc705_nist_clock&& python -m unittest discover -v sipyco.test && python -m unittest discover -v artiq.test"; - }; -in - run-test diff --git a/artiq-fast/windows/run-test.nix b/artiq-fast/windows/run-test.nix deleted file mode 100644 index 76888e5..0000000 --- a/artiq-fast/windows/run-test.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ pkgs, artiqpkgs, testCommand, testTimeout ? 600 }: - -let - condaEnv = "artiq-env"; - tcpPorts = [ 1380 1381 1382 1383 ]; - forwardedPorts = - map (port: { - listenAddr = "192.168.1.50"; - targetAddr = "192.168.1.50"; - inherit port; - }) tcpPorts; - - artiq6 = pkgs.lib.strings.versionAtLeast artiqpkgs.artiq.version "6.0"; - artiq7 = pkgs.lib.strings.versionAtLeast artiqpkgs.artiq.version "7.0"; - wfvm = import (if artiq6 then ../wfvm.nix else ../wfvm-legacy.nix) { inherit pkgs; }; - conda-deps = { - name = "conda-deps"; - script = let - qt-asyncio-package = if artiq6 then artiqpkgs.conda-qasync else artiqpkgs.conda-quamash; - conda-deps-noarch = import (if artiq7 then ./conda_noarch_packages-7.nix else if artiq6 then ./conda_noarch_packages-6.nix else ./conda_noarch_packages-5.nix) { inherit pkgs; }; - conda-deps-win-64 = import (if artiq7 then ./conda_win-64_packages-7.nix else if artiq6 then ./conda_win-64_packages-6.nix else ./conda_win-64_packages-5.nix) { inherit pkgs; }; - conda-packages-put = pkgs.lib.strings.concatStringsSep "\n" - ( (map (package: ''win-put ${package} 'fake-channel/noarch' '') conda-deps-noarch) - ++ (map (package: ''win-put ${package} 'fake-channel/win-64' '') conda-deps-win-64) ); - conda-packages-legacy-put = if artiq7 then "" else - '' - win-put ${artiqpkgs.conda-windows-binutils-or1k}/win-64/*.tar.bz2 'fake-channel/win-64' - win-put ${artiqpkgs.conda-windows-llvm-or1k}/win-64/*.tar.bz2 'fake-channel/win-64' - win-put ${artiqpkgs.conda-windows-llvmlite-artiq}/win-64/*.tar.bz2 'fake-channel/win-64' - ''; - in - '' - win-exec 'mkdir fake-channel && mkdir fake-channel\noarch && mkdir fake-channel\win-64' - - ${conda-packages-put} - - ${conda-packages-legacy-put} - - win-put ${artiqpkgs.conda-pythonparser}/noarch/*.tar.bz2 'fake-channel/noarch' - win-put ${artiqpkgs.conda-sipyco}/noarch/*.tar.bz2 'fake-channel/noarch' - win-put ${qt-asyncio-package}/noarch/*.tar.bz2 'fake-channel/noarch' - ''; - }; -in - wfvm.utils.wfvm-run { - name = "windows-tests"; - image = wfvm.makeWindowsImage { installCommands = [ wfvm.layers.anaconda3 conda-deps ]; }; - inherit forwardedPorts; - script = - '' - ${wfvm.utils.win-put}/bin/win-put ${artiqpkgs.conda-artiq}/noarch/*.tar.bz2 'fake-channel/noarch' - - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda index fake-channel" - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda create -n ${condaEnv} --offline" - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate ${condaEnv} && conda install -y -c file:///C:/users/wfvm/fake-channel --offline artiq"\ - - # Schedule a timed shutdown against hanging test runs - ${wfvm.utils.win-exec}/bin/win-exec "shutdown -s -t ${toString testTimeout}" - - ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate ${condaEnv} && ${testCommand}" - - # Abort timeouted shutdown - ${wfvm.utils.win-exec}/bin/win-exec "shutdown -a" - ''; - } diff --git a/artiq-full.nix b/artiq-full.nix deleted file mode 100644 index cfda6c8..0000000 --- a/artiq-full.nix +++ /dev/null @@ -1,187 +0,0 @@ -{ pkgs ? import { overlays = [ (import ./artiq-fast/mozilla-overlay.nix) ]; } -, use-generated ? -}: - -let - sinaraSystemsRev = builtins.readFile ; - sinaraSystemsHash = builtins.readFile ; - sinaraSystemsSrc = - if use-generated - then pkgs.fetchgit { - url = "https://git.m-labs.hk/M-Labs/sinara-systems-legacy.git"; - rev = sinaraSystemsRev; - sha256 = sinaraSystemsHash; - } - else ; - artiq-fast = - if use-generated - then - else ; - artiqVersion = import (artiq-fast + "/pkgs/artiq-version.nix") { - inherit (pkgs) stdenv git fetchgit; - }; - targets = import ./artiq-full/artiq-targets.nix { - inherit pkgs artiqVersion sinaraSystemsSrc; - }; - kasliVariants = map ({ variant, ... }: variant) ( - builtins.filter ({ target, ... }: target == "kasli") ( - builtins.attrValues targets - ) - ); - standaloneVariants = map ({ variant, ... }: variant) ( - builtins.filter ({ target, standalone ? false, ... }: target == "kasli" && standalone) ( - builtins.attrValues targets - ) - ); - serializedTargets = pkgs.lib.generators.toPretty {} ( - map (conf: - if conf ? buildCommand - then conf // { - buildCommand = builtins.replaceStrings ["$"] ["\\\\\\$"] conf.buildCommand; - } - else conf - ) (builtins.attrValues targets) - ); - - generatedNix = pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; } - '' - mkdir $out - - ${if use-generated - then '' - cp -a ${} $out/board-generated - ln -s board-generated/fast $out/fast - '' - else "cp -a ${} $out/fast"} - cp ${./artiq-full}/artiq-board-vivado.nix $out - cp ${./artiq-full}/generate-identifier.py $out - cp ${./artiq-full}/conda-artiq-board.nix $out - cp ${./artiq-full}/extras.nix $out - cp ${./artiq-full}/*.patch $out - - ${if use-generated - then '' - REV=${sinaraSystemsRev} - HASH=${sinaraSystemsHash} - '' - else '' - REV=`git --git-dir ${sinaraSystemsSrc}/.git rev-parse HEAD` - SINARA_SRC_CLEAN=`mktemp -d` - cp -a ${sinaraSystemsSrc}/. $SINARA_SRC_CLEAN - chmod -R 755 $SINARA_SRC_CLEAN/.git - chmod 755 $SINARA_SRC_CLEAN - rm -rf $SINARA_SRC_CLEAN/.git - HASH=`nix-hash --type sha256 --base32 $SINARA_SRC_CLEAN` - ''} - cat > $out/default.nix << EOF - { pkgs ? import { overlays = [ (import ./fast/mozilla-overlay.nix) ]; }}: - - let - artiq-fast = import ${if use-generated then "./board-generated" else "."}/fast { inherit pkgs; }; - ddbDeps = [ - artiq-fast.artiq - (pkgs.python3.withPackages (ps: [ ps.jsonschema ])) - ]; - - kasliVariants = [${builtins.concatStringsSep " " ( - builtins.map (variant: "\"${variant}\"") kasliVariants - )}]; - standaloneVariants = [${builtins.concatStringsSep " " ( - builtins.map (variant: "\"${variant}\"") standaloneVariants - )}]; - - vivado = import ${if use-generated then "./board-generated" else "."}/fast/vivado.nix { - inherit pkgs; - }; - artiq-board = - ${if use-generated - then '' - import ./artiq-board-vivado.nix { - inherit pkgs vivado; - version = artiq-fast.artiq.version; - board-generated = import ./board-generated { - inherit pkgs; - }; - } - '' - else '' - import ./fast/artiq-board.nix { - inherit pkgs vivado; - rustPlatform = import ./fast/rust-platform.nix { inherit pkgs; }; - } - ''}; - conda-artiq-board = import ./conda-artiq-board.nix { inherit pkgs; }; - src = pkgs.fetchgit { - url = "https://git.m-labs.hk/M-Labs/sinara-systems-legacy.git"; - rev = "$REV"; - sha256 = "$HASH"; - }; - artiq-targets = pkgs.lib.lists.foldr (conf: start: - let - inherit (conf) target variant; - json = src + "/\''${variant}.json"; - boardBinaries = artiq-board (conf // { - src = json; - }); - in - start // { - "artiq-board-\''${target}-\''${variant}" = boardBinaries; - "conda-artiq-board-\''${target}-\''${variant}" = conda-artiq-board { - boardBinaries = boardBinaries; - inherit target variant; - }; - } // (pkgs.lib.optionalAttrs ( - target == "kasli" && - builtins.elem variant standaloneVariants - ) { - "device-db-\''${target}-\''${variant}" = pkgs.stdenv.mkDerivation { - name = "device-db-\''${target}-\''${variant}"; - buildInputs = ddbDeps; - phases = [ "buildPhase" ]; - buildPhase = " - mkdir \$out - artiq_ddb_template \''${json} -o \$out/device_db.py - mkdir \$out/nix-support - echo file device_db_template \$out/device_db.py >> \$out/nix-support/hydra-build-products - "; - }; - }) - ) {} ${serializedTargets}; - extras = import ./extras.nix { inherit pkgs; inherit (artiq-fast) sipyco asyncserial artiq; }; - in - artiq-fast // artiq-targets // extras // rec { - conda-artiq-board-kasli-tester = conda-artiq-board { - target = "kasli"; - variant = "tester"; - boardBinaries = artiq-fast.artiq-board-kasli-tester; - }; - conda-artiq-board-kc705-nist_clock = conda-artiq-board { - target = "kc705"; - variant = "nist_clock"; - boardBinaries = artiq-fast.artiq-board-kc705-nist_clock; - }; - } - EOF - ''; - pythonDeps = import ./artiq-full/python-deps.nix { inherit pkgs; }; - sipycoManualPackages = import ./artiq-full/sipyco-manual.nix { - inherit (pkgs) stdenv lib python3Packages texlive texinfo; - inherit (import artiq-fast { inherit pkgs; }) sipyco; - }; - artiqManualPackages = import ./artiq-full/artiq-manual.nix { - inherit (pkgs) stdenv lib fetchgit git python3Packages texlive texinfo; - inherit (pythonDeps) sphinxcontrib-wavedrom; - inherit artiq-fast; - }; - artiq-full = import generatedNix { inherit pkgs; }; - exampleUserEnv = import ./artiq-full/example-user-env.nix { inherit pkgs artiq-full; }; - jobs = artiq-full // sipycoManualPackages // artiqManualPackages // exampleUserEnv; -in - builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) jobs // { - artiq-full = pkgs.releaseTools.channel { - name = "artiq-full"; - src = generatedNix; - constituents = []; - }; - conda-channel = import ./artiq-full/conda-channel.nix { inherit pkgs artiq-fast; } { inherit jobs; }; - } diff --git a/artiq-full/artiq-board-vivado.nix b/artiq-full/artiq-board-vivado.nix deleted file mode 100644 index 73509b9..0000000 --- a/artiq-full/artiq-board-vivado.nix +++ /dev/null @@ -1,125 +0,0 @@ -# Install Vivado in /opt and add to /etc/nixos/configuration.nix: -# nix.sandboxPaths = ["/opt"]; - -{ pkgs -, vivado ? import ./fast/vivado.nix { inherit pkgs; } -, board-generated -, version -}: - -let - # Funnelling the source code through a Nix string allows dropping - # all dependencies via `unsafeDiscardStringContext`. - discardContextFromPath = { name, src }: - let - packed = pkgs.stdenv.mkDerivation { - name = "${name}.nar.base64"; - buildInputs = [ pkgs.nix ]; - phases = [ "installPhase" ]; - installPhase = "nix-store --dump ${src} | base64 -w0 > $out"; - }; - unpacked = archive: - pkgs.stdenvNoCC.mkDerivation { - name = builtins.unsafeDiscardStringContext name; - - phases = [ "installPhase" ]; - buildInputs = [ pkgs.nix ]; - installPhase = "base64 -d < ${archive} | nix-store --restore $out"; - }; - in - unpacked ( - builtins.toFile "${builtins.unsafeDiscardStringContext name}.nar.base64" ( - builtins.unsafeDiscardStringContext ( - builtins.readFile packed - ))) ; -in -{ target -, variant -, extraInstallCommands ? "" -, ... }: -let - name = "artiq-board-${target}-${variant}-${version}"; - installPath = builtins.unsafeDiscardStringContext "${pkgs.python3Packages.python.sitePackages}/artiq/board-support/${target}-${variant}"; - - generated = board-generated."artiq-board-${target}-${variant}"; - - identifierStr = "${version};${variant}"; - identifiers = import ( - pkgs.runCommandLocal "${name}-identifiers.nix" { - buildInputs = [ pkgs.python3 ]; - } ''python ${./generate-identifier.py} "${identifierStr}" > $out'' - ); - - # Depends on just Vivado and the generated Bitstream source - vivadoCheckpoint = pkgs.stdenvNoCC.mkDerivation { - name = builtins.unsafeDiscardStringContext "${name}-vivado-checkpoint"; - - src = discardContextFromPath { - name = "${name}-gateware"; - src = "${generated}/gateware"; - }; - buildInputs = [ vivado pkgs.nix ]; - buildPhase = '' - vivado -mode batch -source top_route.tcl - ''; - - installPhase = '' - mkdir -p $out - - chmod a+r top_route.dcp - cp top_route.dcp $out - cp top_bitstream.tcl $out - ''; - }; - - vivadoOutput = pkgs.stdenvNoCC.mkDerivation { - name = builtins.unsafeDiscardStringContext "${name}-vivado-output"; - src = vivadoCheckpoint; - buildInputs = [ vivado ]; - buildPhase = - '' - cat >top.tcl <> $out/nix-support/hydra-build-products - '' - else '' - mkdir -p ${dest} - cp -r _build/${target} ${dest}/ - - mkdir -p $out/nix-support/ - echo doc manual ${dest}/${target} index.html >> $out/nix-support/hydra-build-products - ''; - }; - - targets = [ "html" "latexpdf" ]; -in - builtins.listToAttrs (map (target: { name = "artiq-manual-${target}"; value = artiq-manual target; }) targets) diff --git a/artiq-full/artiq-targets.nix b/artiq-full/artiq-targets.nix deleted file mode 100644 index 9062c24..0000000 --- a/artiq-full/artiq-targets.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ pkgs -, artiqVersion -, sinaraSystemsSrc -}: - -let - jsons = - map (jsonFile: builtins.fromJSON ( - builtins.readFile (sinaraSystemsSrc + "/${jsonFile}") - )) ( - builtins.attrNames ( - pkgs.lib.filterAttrs (name: type: - type != "directory" && - builtins.match ".+\\.json" name != null - ) (builtins.readDir sinaraSystemsSrc) - ) - ); - kasli = builtins.listToAttrs ( - builtins.map ({ variant, base, ... }: { - name = "artiq-board-kasli-${variant}"; - value = { - target = "kasli"; - inherit variant; - src = sinaraSystemsSrc + "/${variant}.json"; - buildCommand = "python -m artiq.gateware.targets.kasli_generic $src"; - standalone = base == "standalone"; - }; - }) ( - builtins.filter (json: - pkgs.lib.strings.versionAtLeast artiqVersion ( - if json ? min_artiq_version - then json.min_artiq_version - else "0" - ) - ) jsons - ) - ); -in -kasli // { - artiq-board-metlino-master = { - target = "metlino"; - variant = "master"; - buildCommand = "python -m artiq.gateware.targets.metlino"; - }; - artiq-board-kc705-nist_qc2 = { - target = "kc705"; - variant = "nist_qc2"; - }; -} // (pkgs.lib.optionalAttrs (pkgs.lib.strings.versionAtLeast artiqVersion "7.0") { - artiq-board-kc705-nist_clock_master = { - target = "kc705"; - variant = "nist_clock_master"; - }; - artiq-board-kc705-nist_qc2_master = { - target = "kc705"; - variant = "nist_qc2_master"; - }; - artiq-board-kc705-nist_clock_satellite = { - target = "kc705"; - variant = "nist_clock_satellite"; - }; - artiq-board-kc705-nist_qc2_satellite = { - target = "kc705"; - variant = "nist_qc2_satellite"; - }; -}) diff --git a/artiq-full/conda-artiq-board.nix b/artiq-full/conda-artiq-board.nix deleted file mode 100644 index 7954320..0000000 --- a/artiq-full/conda-artiq-board.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ pkgs }: -{ target, variant, boardBinaries }: - -with pkgs; - -let - version = import ./fast/pkgs/artiq-version.nix (with pkgs; { inherit stdenv fetchgit git; }); - fakeCondaSource = runCommand "fake-condasrc-artiq-board-${target}-${variant}" { } - '' - mkdir -p $out/fake-conda; - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: artiq-board-${target}-${variant} - version: ${version} - - build: - noarch: python - ignore_prefix_files: True - - outputs: - - name: artiq-board-${target}-${variant} - noarch: python - files: - - site-packages - ignore_prefix_files: True - - about: - home: https://m-labs.hk/artiq - license: LGPL - summary: 'Bitstream, bootloader and firmware for the ${target}-${variant} board variant' - EOF - - cat << EOF > $out/fake-conda/build.sh - #!/bin/bash - set -e - SOC_PREFIX=\$PREFIX/site-packages/artiq/board-support/${target}-${variant} - mkdir -p \$SOC_PREFIX - cp ${boardBinaries}/${pkgs.python3Packages.python.sitePackages}/artiq/board-support/${target}-${variant}/* \$SOC_PREFIX - EOF - chmod 755 $out/fake-conda/build.sh - ''; - conda-artiq-board = import ./fast/conda/build.nix { inherit pkgs; } { - name = "conda-artiq-board-${target}-${variant}"; - src = fakeCondaSource; - }; -in - conda-artiq-board diff --git a/artiq-full/conda-channel.nix b/artiq-full/conda-channel.nix deleted file mode 100644 index e54c356..0000000 --- a/artiq-full/conda-channel.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ pkgs, artiq-fast }: -{ jobs }: - -let - condaBuilderEnv = import (artiq-fast + "/conda/builder-env.nix") { inherit pkgs; }; -in - pkgs.runCommand "conda-channel" { } - '' - mkdir -p $out/noarch $out/linux-64 $out/win-64 - for storepath in ${pkgs.lib.concatMapStringsSep " " builtins.toString (builtins.attrValues jobs)}; do - hydra_build_products=$storepath/nix-support/hydra-build-products - if [ -f $hydra_build_products ]; then - while IFS= read -r line; do - type=`echo $line | cut -f2 -d " "` - if [ $type == "conda" ]; then - path=`echo $line | cut -f3 -d " "` - arch=`echo $path | cut -f5 -d "/"` - ln -s $path $out/$arch - fi - done < $hydra_build_products - fi - done - cd $out - ${condaBuilderEnv}/bin/conda-builder-env -c "conda index" - '' diff --git a/artiq-full/example-user-env.nix b/artiq-full/example-user-env.nix deleted file mode 100644 index 4a9c526..0000000 --- a/artiq-full/example-user-env.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ pkgs, artiq-full }: -let - matplotlib-qt = (pkgs.python3Packages.matplotlib.override { enableQt = true; }); -in -{ - artiq-example-user-env = pkgs.runCommand "artiq-example-user-env" { - buildInputs = [ - (pkgs.python3.withPackages(ps: [ - artiq-full.artiq - artiq-full.artiq-comtools - artiq-full.wand - artiq-full.flake8-artiq - artiq-full.lda - artiq-full.korad_ka3005p - artiq-full.novatech409b - artiq-full.thorlabs_tcube - artiq-full.artiq-board-kc705-nist_clock - ps.paramiko - ps.pandas - ps.numpy - ps.scipy - # our newer llvmlite conflicts with the one in nixpkgs (21.05), reenable after nixpkgs updates llvmlite - #ps.numba - ps.bokeh - matplotlib-qt - # cirq is broken and doesn't build (as of 20.09.3281.06b11191834) - #(ps.cirq.override { matplotlib = matplotlib-qt; }) - # qiskit does not work with matplotlib-qt - #ps.qiskit - ])) - - artiq-full.openocd - pkgs.gtkwave - pkgs.spyder - pkgs.R - ]; - } "touch $out"; -} diff --git a/artiq-full/extras.nix b/artiq-full/extras.nix deleted file mode 100644 index eb1d881..0000000 --- a/artiq-full/extras.nix +++ /dev/null @@ -1,275 +0,0 @@ -{ pkgs, sipyco, asyncserial, artiq }: -let - condaBuild = import ./fast/conda/build.nix { inherit pkgs; }; - condaFakeSource = import ./fast/conda/fake-source.nix { inherit pkgs; }; - dualPackage = ( - { name, version, src, pythonOptions ? {}, condaOptions ? {}, enabled ? true, withManual ? true}: - pkgs.lib.optionalAttrs enabled ({ - "${name}" = pkgs.python3Packages.buildPythonPackage ({ - inherit version; - name = "${name}-${version}"; - inherit src; - } // pythonOptions); - "conda-${name}" = condaBuild { - name = "conda-${name}"; - src = condaFakeSource ({ - inherit name version src; - } // condaOptions); - }; - } // (pkgs.lib.optionalAttrs withManual { - "${name}-manual-html" = pkgs.stdenv.mkDerivation { - name = "${name}-manual-html-${version}"; - inherit version src; - buildInputs = (with pkgs.python3Packages; [ sphinx sphinx_rtd_theme sphinx-argparse ]) ++ [ artiq ]; - preBuild = '' - export SOURCE_DATE_EPOCH=${import ./fast/pkgs/artiq-timestamp.nix { inherit (pkgs) stdenv fetchgit git; }} - cd doc - ''; - makeFlags = [ "html" ]; - installPhase = - let - dest = "$out/share/doc/${name}-manual"; - in - '' - mkdir -p ${dest} - cp -r _build/html ${dest}/ - - mkdir -p $out/nix-support/ - echo doc manual ${dest}/html index.html >> $out/nix-support/hydra-build-products - ''; - }; - })) - ); - # https://github.com/m-labs/artiq/issues/23 - hidapi = pkgs.hidapi.overrideAttrs (oa: { - src = pkgs.fetchFromGitHub { - owner = "signal11"; - repo = "hidapi"; - rev = "a6a622ffb680c55da0de787ff93b80280498330f"; - sha256 = "17n7c4v3jjrnzqwxpflggxjn6vkzscb32k4kmxqjbfvjqnx7qp7j"; - }; - }); -in - (dualPackage { - name = "korad_ka3005p"; - version = "1.1"; - src = pkgs.fetchFromGitHub { - owner = "m-labs"; - repo = "korad_ka3005p"; - rev = "a1898409cb188b388ed1cf84e76ca69e9c8a74eb"; - sha256 = "0h20qss70nssqiagc2fx75mravq1pji7rizhag3nq8xrcz2w20nc"; - }; - pythonOptions = { propagatedBuildInputs = [ sipyco asyncserial ]; }; - condaOptions = { dependencies = [ "sipyco" "asyncserial" ]; }; - }) // (dualPackage { - name = "novatech409b"; - version = "1.1"; - src = pkgs.fetchFromGitHub { - owner = "m-labs"; - repo = "novatech409b"; - rev = "3bd559753972f07d881df66b7c6819afc5436053"; - sha256 = "1g9qv6fn5h7d393mb1v7w8sg6fimqg34blqdj22qnayb4agw1wyg"; - }; - pythonOptions = { propagatedBuildInputs = [ sipyco asyncserial ]; }; - condaOptions = { dependencies = [ "sipyco" "asyncserial" ]; }; - }) // (dualPackage { - name = "lda"; - version = "1.1"; - src = pkgs.fetchFromGitHub { - owner = "m-labs"; - repo = "lda"; - rev = "e6bf828b6dfd7fbf59b61b691712736c98c95970"; - sha256 = "1w4ykzsl3386bz4ggpd6i60b6a3k7rnc6qjw59xm3hk0vs3w2vyn"; - }; - pythonOptions = { - propagatedBuildInputs = [ sipyco ]; - postPatch = '' - substituteInPlace lda/hidapi.py \ - --replace "hidapi_lib_path = None"\ - "hidapi_lib_path = '${hidapi}/lib/libhidapi-libusb.so.0'" - ''; - }; - condaOptions = { dependencies = [ "sipyco" ]; }; - }) // (dualPackage { - name = "thorlabs_tcube"; - version = "1.1"; - src = pkgs.fetchFromGitHub { - owner = "m-labs"; - repo = "thorlabs_tcube"; - rev = "0cb0c15fc7e660a150e193245f5338d48f8b97db"; - sha256 = "1n4zmjcj2kpd97217y602pq6x8s80w39fgyi6qjmal92aicqdg07"; - }; - pythonOptions = { propagatedBuildInputs = [ sipyco asyncserial ]; }; - condaOptions = { dependencies = [ "sipyco" "asyncserial" ]; }; - }) // (dualPackage { - name = "newfocus8742"; - version = "0.2"; - src = pkgs.fetchFromGitHub { - owner = "quartiq"; - repo = "newfocus8742"; - rev = "9f6092b724b33b934aa4d3a1d6a20c295cd1d02d"; - sha256 = "0qf05ghylnqf3l5vjx5dc748wi84xn6p6lb6f9r8p6f1z7z67fb8"; - }; - pythonOptions = { - propagatedBuildInputs = [ sipyco pkgs.python3Packages.pyusb ]; - # no unit tests so do a simple smoke test - checkPhase = "python -m newfocus8742.aqctl_newfocus8742 -h"; - }; - condaOptions = { dependencies = [ "sipyco" ]; }; - }) // (dualPackage { - name = "hut2"; - version = "0.2"; - src = pkgs.fetchFromGitHub { - owner = "quartiq"; - repo = "hut2"; - rev = "68369d5d63d233827840a9a752d90454a4e03baa"; - sha256 = "0r832c0icz8v3w27ci13024bqfslj1gx6dwhjv11ksw229xdcghd"; - }; - pythonOptions = { - propagatedBuildInputs = [ sipyco ]; - # no unit tests without hardware so do a simple smoke test - checkPhase = "python -m hut2.aqctl_hut2 -h"; - }; - condaOptions = { dependencies = [ "sipyco" ]; }; - }) // rec { - toptica-lasersdk = pkgs.python3Packages.buildPythonPackage rec { - version = "2.0.0"; - name = "toptica-lasersdk-${version}"; - format = "wheel"; - src = pkgs.fetchurl { - url = "https://files.pythonhosted.org/packages/6b/e2/5c98407215884c2570453a78bc0d6f0bbe619f06593847ccd6a2f1d3fe59/toptica_lasersdk-2.0.0-py3-none-any.whl"; - sha256 = "1k5d9ah8qzp75hh63nh9l5dk808v9ybpmzlhrdc3sxmas3ajv8s7"; - }; - propagatedBuildInputs = [ pkgs.python3Packages.pyserial ]; - }; - toptica-lasersdk-artiq = pkgs.python3Packages.buildPythonPackage rec { - version = "0.2"; - name = "toptica-lasersdk-artiq-${version}"; - src = pkgs.fetchFromGitHub { - owner = "quartiq"; - repo = "lasersdk-artiq"; - rev = "901dec13a1bf9429ce7ab49be34b03d1c49b8a9f"; - sha256 = "0lqxvgvpgrpw1kzhg5axnfb40ils2vdk75r43hqmk2lfz4sydwb2"; - }; - postPatch = '' - substituteInPlace lasersdk_artiq/aqctl_laser.py \ - --replace "toptica.lasersdk.async.client" \ - "toptica.lasersdk.asyncio.client" - substituteInPlace lasersdk_artiq/test.py \ - --replace "toptica.lasersdk.async.client" \ - "toptica.lasersdk.asyncio.client" - ''; - propagatedBuildInputs = [ sipyco toptica-lasersdk ]; - }; - conda-toptica-lasersdk-artiq = condaBuild { - name = "conda-toptica-lasersdk-artiq"; - src = condaFakeSource { - name = "toptica-lasersdk-artiq"; - inherit (toptica-lasersdk-artiq) version src; - dependencies = [ "sipyco" "lasersdk =1.3.1" ]; - }; - }; - } // (dualPackage { - name = "highfinesse-net"; - version = "0.2"; - src = pkgs.fetchFromGitHub { - owner = "quartiq"; - repo = "highfinesse-net"; - rev = "a9cc049c9846845d2b2d8662266ec11fe770abee"; - sha256 = "01mk4gf6rk3jqpz4y7m35vawjybvyp26bizz5a4ygkb8dq5l51g4"; - }; - pythonOptions = { - propagatedBuildInputs = [ sipyco ]; - # no unit tests without hardware so do a simple smoke test - checkPhase = "python -m highfinesse_net.aqctl_highfinesse_net -h"; - }; - condaOptions = { dependencies = [ "sipyco" ]; }; - }) // rec { - artiq-comtools = pkgs.python3Packages.buildPythonPackage rec { - name = "artiq-comtools-${version}"; - version = "1.1"; - src = pkgs.fetchFromGitHub { - owner = "m-labs"; - repo = "artiq-comtools"; - rev = "v${version}"; - sha256 = "165j12k9nnrkf2pv0idcv6xhnp1hnsllna4rps2dssnqgjfaw1ss"; - }; - propagatedBuildInputs = [ sipyco pkgs.python3Packages.numpy pkgs.python3Packages.aiohttp ]; - # Modifies PATH to pass the wrapped python environment (i.e. python3.withPackages(...) to subprocesses. - # Allows subprocesses using python to find all packages you have installed - makeWrapperArgs = [ ''--run 'if [ ! -z "$NIX_PYTHONPREFIX" ]; then export PATH=$NIX_PYTHONPREFIX/bin:$PATH;fi' '' ]; - }; - conda-artiq-comtools = condaBuild { - name = "conda-artiq-comtools"; - src = condaFakeSource { - name = "artiq-comtools"; - inherit (artiq-comtools) version src; - dependencies = [ "sipyco" "numpy" "aiohttp >=3" ]; - }; - }; - } // { - wand = pkgs.python3Packages.buildPythonApplication rec { - name = "wand"; - version = "0.4.dev"; - src = pkgs.fetchFromGitHub { - owner = "OxfordIonTrapGroup"; - repo = "wand"; - rev = "0bf1cfef4aa37e5761c20ac8702abec125b45e23"; - sha256 = "0jfw6w6id7qkx2f6rklrmp13b2hsnvii1qbls60ampx399lcb43g"; - }; - patches = [ ./wand-fix-config-dir.patch ]; - nativeBuildInputs = [ pkgs.qt5.wrapQtAppsHook ]; - dontWrapQtApps = true; - postFixup = '' - wrapQtApp "$out/bin/wand_gui" - ''; - propagatedBuildInputs = with pkgs.python3Packages; [ artiq quamash numpy scipy influxdb setuptools ]; - }; - } // (dualPackage { - name = "flake8-artiq"; - version = "0.1.0"; - withManual = false; - src = pkgs.fetchgit { - url = "https://gitlab.com/duke-artiq/flake8-artiq.git"; - rev = "1216092974140a561850905734fc22fdacdc2cde"; - sha256 = "0rkab2qdwyzms6nxc44jzb5grvkkbpjwwmfv2zj96cm6cm8d9pdr"; - }; - pythonOptions = { - propagatedBuildInputs = [ pkgs.python3Packages.flake8 ]; - checkInputs = [ pkgs.python3Packages.pytestCheckHook ]; - }; - condaOptions = { dependencies = [ "flake8" ]; }; - }) // (dualPackage rec { - name = "dax"; - version = "6.7"; - enabled = builtins.head (builtins.splitVersion version) == builtins.head (builtins.splitVersion artiq.version); - withManual = false; - src = pkgs.fetchgit { - url = "https://gitlab.com/duke-artiq/dax.git"; - rev = "v${version}"; - sha256 = "0rgvqqiypqvxjzrsixn3h7dn93isqw5vc2wrmpkxhzvw9lh5ihm7"; - }; - pythonOptions = { - VERSIONEER_OVERRIDE = version; - inherit (pkgs.python3Packages.pygit2) SSL_CERT_FILE; - propagatedBuildInputs = [ artiq sipyco ] - ++ (with pkgs.python3Packages; [ numpy scipy pyvcd natsort pygit2 matplotlib graphviz h5py networkx sortedcontainers ]); - checkInputs = [ pkgs.python3Packages.pytestCheckHook ]; - }; - condaOptions = { dependencies = [ "python>=3.7" "artiq" "sipyco" "numpy" "scipy" "pyvcd" "natsort" "pygit2" "matplotlib" "python-graphviz" "h5py" "networkx" "sortedcontainers" ]; }; - }) // (dualPackage { - name = "dax-applets"; - version = "0.0.0"; - withManual = false; - src = pkgs.fetchgit { - url = "https://gitlab.com/duke-artiq/dax-applets.git"; - rev = "0f0196b6941b0c44a33c85d8c02047ca65466463"; - sha256 = "0mx6yjvprhdnkdigwns8mg6v5daqxpgbv7mf63fa76i1iv2wvak4"; - }; - pythonOptions = { - propagatedBuildInputs = [ artiq ] - ++ (with pkgs.python3Packages; [ numpy pyqt5 pyqtgraph ]); - doCheck = false; - }; - condaOptions = { dependencies = [ "python>=3.5" "artiq" "numpy" "pyqt" "pyqtgraph" ]; }; - }) diff --git a/artiq-full/generate-identifier.py b/artiq-full/generate-identifier.py deleted file mode 100755 index 942505b..0000000 --- a/artiq-full/generate-identifier.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env python -# -# Encodes data like ARTIQ build_soc.py ReprogrammableIdentifier - -import sys - -if len(sys.argv) != 2: - raise ValueError('argument missing') - -identifier_str = sys.argv[1] -contents = list(identifier_str.encode()) -l = len(contents) -if l > 255: - raise ValueError("Identifier string must be 255 characters or less") -contents.insert(0, l) - -f = sys.stdout -f.write("[\n"); -for i in range(7): - init = sum(1 << j if c & (1 << i) else 0 for j, c in enumerate(contents)) - f.write( - ' {{ cell = "identifier_str{}"; init = "256\'h{:X}"; }}\n'.format(i, init) - ) -f.write("]\n"); diff --git a/artiq-full/python-deps.nix b/artiq-full/python-deps.nix deleted file mode 100644 index ab5bd86..0000000 --- a/artiq-full/python-deps.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ pkgs }: - -rec { - wavedrom = pkgs.python3Packages.buildPythonPackage rec { - pname = "wavedrom"; - version = "2.0.3.post2"; - - src = pkgs.python3Packages.fetchPypi { - inherit pname version; - sha256 = "13a4086417nv836s2wbj3f4r31gwapbyw5smgl00jsqizwsk96r3"; - }; - - buildInputs = [ pkgs.python3Packages.setuptools_scm ]; - propagatedBuildInputs = with pkgs.python3Packages; [ svgwrite attrdict ]; - doCheck = false; - - meta = with pkgs.lib; { - description = "WaveDrom compatible Python module and command line"; - homepage = "https://pypi.org/project/wavedrom/"; - license = licenses.mit; - }; - }; - - sphinxcontrib-wavedrom = pkgs.python3Packages.buildPythonPackage rec { - pname = "sphinxcontrib-wavedrom"; - version = "2.1.1"; - - src = pkgs.python3Packages.fetchPypi { - inherit pname version; - sha256 = "09xq4csdcil2x8mm38yd5k6lfbkazicvm278xnzwbfc9vghkqqs2"; - }; - - buildInputs = [ pkgs.python3Packages.setuptools_scm ]; - propagatedBuildInputs = [ wavedrom ] ++ (with pkgs.python3Packages; [ sphinx xcffib cairosvg ]); - doCheck = false; - - meta = with pkgs.lib; { - description = "A Sphinx extension that allows including WaveDrom diagrams"; - homepage = "https://pypi.org/project/sphinxcontrib-wavedrom/"; - license = licenses.mit; - }; - }; -} diff --git a/artiq-full/sipyco-manual.nix b/artiq-full/sipyco-manual.nix deleted file mode 100644 index 45a431c..0000000 --- a/artiq-full/sipyco-manual.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ stdenv, lib, python3Packages, texlive, texinfo, sipyco }: - -let - version = sipyco.version; - - isLatexPdfTarget = target: builtins.match "latexpdf.*" target != null; - - latex = texlive.combine { - inherit (texlive) - scheme-basic latexmk cmap collection-fontsrecommended fncychap - titlesec tabulary varwidth framed fancyvrb float wrapfig parskip - upquote capt-of needspace etoolbox; - }; - - sipyco-manual = target: stdenv.mkDerivation rec { - name = "sipyco-manual-${target}-${version}"; - inherit version; - - src = sipyco.src; - buildInputs = [ - python3Packages.sphinx python3Packages.sphinx_rtd_theme - python3Packages.sphinx-argparse sipyco - ] ++ - lib.optional (isLatexPdfTarget target) latex ++ - lib.optional (target == "texinfo") texinfo; - - preBuild = '' - export SOURCE_DATE_EPOCH=`cat TIMESTAMP` - cd doc - ''; - makeFlags = [ target ]; - - installPhase = - let - dest = "$out/share/doc/sipyco-manual"; - in - if isLatexPdfTarget target - then '' - mkdir -p ${dest} - cp _build/latex/SiPyCo.pdf ${dest}/ - - mkdir -p $out/nix-support/ - echo doc-pdf manual ${dest} SiPyCo.pdf >> $out/nix-support/hydra-build-products - '' - else '' - mkdir -p ${dest} - cp -r _build/${target} ${dest}/ - - mkdir -p $out/nix-support/ - echo doc manual ${dest}/${target} index.html >> $out/nix-support/hydra-build-products - ''; - }; - - targets = [ "html" "latexpdf" ]; -in - builtins.listToAttrs (map (target: { name = "sipyco-manual-${target}"; value = sipyco-manual target; }) targets) diff --git a/artiq-full/wand-fix-config-dir.patch b/artiq-full/wand-fix-config-dir.patch deleted file mode 100644 index 44ee805..0000000 --- a/artiq-full/wand-fix-config-dir.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/wand/tools.py b/wand/tools.py -index a51dabd..4d5a9d1 100644 ---- a/wand/tools.py -+++ b/wand/tools.py -@@ -6,6 +6,7 @@ import shutil - import logging - - from sipyco import pyon -+from artiq.appdirs import user_config_dir - import wand - - logger = logging.getLogger(__name__) -@@ -26,10 +27,15 @@ class LockException(Exception): - pass - - -+def get_user_config_dir(): -+ dir = user_config_dir("wand", "oitg", "1") -+ os.makedirs(dir, exist_ok=True) -+ return dir -+ -+ - def get_config_path(args, name_suffix=""): - config_file = "{}{}_config.pyon".format(args.name, name_suffix) -- wand_dir = os.path.dirname(wand.__file__) -- config_path = os.path.join(wand_dir, config_file) -+ config_path = os.path.join(get_user_config_dir(), config_file) - - if args.backup_dir == "": - backup_path = "" diff --git a/artiq-zynq.nix b/artiq-zynq.nix deleted file mode 100644 index c8fc6bd..0000000 --- a/artiq-zynq.nix +++ /dev/null @@ -1,84 +0,0 @@ -let - pkgs = import { overlays = [ (import ./artiq-fast/mozilla-overlay.nix) ]; }; - artiq-zynq = import ; - artiq-fast = import { inherit pkgs; }; -in - ( - builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) artiq-zynq - ) // { - gateware-sim = pkgs.lib.hydraJob (pkgs.stdenv.mkDerivation { - name = "gateware-sim"; - buildInputs = [ artiq-fast.migen artiq-fast.migen-axi artiq-fast.artiq ]; - - phases = [ "buildPhase" ]; - - buildPhase = - '' - python -m unittest discover ${}/src/gateware -v - touch $out - ''; - }); - zc706-hitl-tests = pkgs.lib.hydraJob (pkgs.stdenv.mkDerivation { - name = "zc706-hitl-tests"; - - __networked = true; # compatibility with old patched Nix - # breaks hydra, https://github.com/NixOS/hydra/issues/1216 - #__impure = true; # Nix 2.8+ - - buildInputs = [ - pkgs.netcat pkgs.openssh pkgs.rsync artiq-fast.artiq artiq-fast.artiq-netboot - ]; - phases = [ "buildPhase" ]; - - buildPhase = - '' - export NIX_SSHOPTS="-F /dev/null -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -i /opt/hydra_id_ed25519" - LOCKCTL=$(mktemp -d) - mkfifo $LOCKCTL/lockctl - - cat $LOCKCTL/lockctl | ${pkgs.openssh}/bin/ssh \ - $NIX_SSHOPTS \ - rpi-4 \ - 'mkdir -p /tmp/board_lock && flock /tmp/board_lock/zc706-1 -c "echo Ok; cat"' \ - | ( - # End remote flock via FIFO - atexit_unlock() { - echo > $LOCKCTL/lockctl - } - trap atexit_unlock EXIT - - # Read "Ok" line when remote successfully locked - read LOCK_OK - - echo Power cycling board... - (echo b; sleep 5; echo B; sleep 5) | nc -N -w6 192.168.1.31 3131 - echo Power cycle done. - - export USER=hydra - export OPENOCD_ZYNQ=${artiq-zynq.zynq-rs}/openocd - export SZL=${(import artiq-zynq.zynq-rs).zc706-szl}/szl.elf - pushd ${} - bash ${}/remote_run.sh -h rpi-4 -o "$NIX_SSHOPTS" -d ${artiq-zynq.zc706-nist_qc2-jtag} - popd - - echo Waiting for the firmware to boot... - sleep 15 - - echo Running test kernel... - artiq_run --device-db ${}/examples/device_db.py ${}/examples/mandelbrot.py - - echo Running ARTIQ unit tests... - export ARTIQ_ROOT=${}/examples - export ARTIQ_LOW_LATENCY=1 - python -m unittest discover artiq.test.coredevice -v - - touch $out - - echo Completed - - (echo b; sleep 5) | nc -N -w6 192.168.1.31 3131 - echo Board powered off - ) - ''; - }); - } diff --git a/zynq-rs.nix b/zynq-rs.nix deleted file mode 100644 index 47ac60f..0000000 --- a/zynq-rs.nix +++ /dev/null @@ -1,7 +0,0 @@ -let - pkgs = import {}; - zynq-rs = import ; -in - ( - builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) zynq-rs - )