diff --git a/artiq-fast/conda/bscan-spi-bitstreams.nix b/artiq-fast/conda/bscan-spi-bitstreams.nix index e70379c..ba78405 100644 --- a/artiq-fast/conda/bscan-spi-bitstreams.nix +++ b/artiq-fast/conda/bscan-spi-bitstreams.nix @@ -6,7 +6,7 @@ let 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 ${bscan_spi_bitstreams} workaround-conda + cp --no-preserve=mode,ownership -L -R ${bscan_spi_bitstreams} workaround-conda pushd workaround-conda tar cf $out/src.tar . popd diff --git a/artiq-fast/default.nix b/artiq-fast/default.nix index 46be656..d3af6aa 100644 --- a/artiq-fast/default.nix +++ b/artiq-fast/default.nix @@ -2,7 +2,8 @@ with pkgs; let artiq6 = pkgs.lib.strings.versionAtLeast mainPackages.artiq.version "6.0"; - pythonDeps = import ./pkgs/python-deps.nix { inherit (pkgs) lib fetchgit fetchFromGitHub python3Packages; misoc-new = artiq6; }; + 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; }; boards = [ { target = "kasli"; variant = "tester"; } @@ -35,7 +36,7 @@ let libartiq-support = callPackage ./pkgs/libartiq-support.nix { inherit rustc; }; artiq = callPackage ./pkgs/artiq.nix { inherit pythonDeps binutils-or1k binutils-arm llvm-or1k llvmlite-artiq libartiq-support lit outputcheck; }; artiq-env = (pkgs.python3.withPackages(ps: [ artiq ])).overrideAttrs (oldAttrs: { name = "${pkgs.python3.name}-artiq-env-${artiq.version}"; }); - openocd = callPackage ./pkgs/openocd.nix { autoreconfHook = pkgs.autoreconfHook269 or pkgs.autoreconfHook; }; + openocd = callPackage ./pkgs/openocd.nix { }; }; condaNoarch = { @@ -76,7 +77,7 @@ let }; conda-bscan-spi-bitstreams = import ./conda/bscan-spi-bitstreams.nix { inherit pkgs; - inherit (mainPackages.openocd) bscan_spi_bitstreams; + 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; } { diff --git a/artiq-fast/pkgs/openocd-jtagspi.diff b/artiq-fast/pkgs/openocd-jtagspi.diff new file mode 100644 index 0000000..fa41f94 --- /dev/null +++ b/artiq-fast/pkgs/openocd-jtagspi.diff @@ -0,0 +1,24 @@ +diff --git a/src/flash/nor/spi.c b/src/flash/nor/spi.c +index af72ffc4..e5c9a9bd 100644 +--- a/src/flash/nor/spi.c ++++ b/src/flash/nor/spi.c +@@ -90,8 +90,8 @@ const struct flash_device flash_devices[] = { + FLASH_ID("mac 25r6435f", 0x03, 0x00, 0x02, 0xd8, 0xc7, 0x001728c2, 0x100, 0x10000, 0x800000), + FLASH_ID("micron n25q064", 0x03, 0xeb, 0x02, 0xd8, 0xc7, 0x0017ba20, 0x100, 0x10000, 0x800000), + FLASH_ID("micron n25q128", 0x03, 0xeb, 0x02, 0xd8, 0xc7, 0x0018ba20, 0x100, 0x10000, 0x1000000), +- FLASH_ID("micron n25q256 3v", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x0019ba20, 0x100, 0x10000, 0x2000000), +- FLASH_ID("micron n25q256 1.8v", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x0019bb20, 0x100, 0x10000, 0x2000000), ++ FLASH_ID("micron n25q256 3v", 0x03, 0xeb, 0x02, 0xd8, 0xc7, 0x0019ba20, 0x100, 0x10000, 0x2000000), ++ FLASH_ID("micron n25q256 1.8v", 0x03, 0xeb, 0x02, 0xd8, 0xc7, 0x0019bb20, 0x100, 0x10000, 0x2000000), + FLASH_ID("micron mt25ql512", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x0020ba20, 0x100, 0x10000, 0x4000000), + FLASH_ID("micron mt25ql01", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x0021ba20, 0x100, 0x10000, 0x8000000), + FLASH_ID("micron mt25ql02", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x0022ba20, 0x100, 0x10000, 0x10000000), +@@ -124,7 +124,7 @@ const struct flash_device flash_devices[] = { + FLASH_ID("issi is25lp064", 0x03, 0x00, 0x02, 0xd8, 0xc7, 0x0017609d, 0x100, 0x10000, 0x800000), + FLASH_ID("issi is25lp128d", 0x03, 0xeb, 0x02, 0xd8, 0xc7, 0x0018609d, 0x100, 0x10000, 0x1000000), + FLASH_ID("issi is25wp128d", 0x03, 0xeb, 0x02, 0xd8, 0xc7, 0x0018709d, 0x100, 0x10000, 0x1000000), +- FLASH_ID("issi is25lp256d", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x0019609d, 0x100, 0x10000, 0x2000000), ++ FLASH_ID("issi is25lp256d", 0x03, 0xeb, 0x02, 0xd8, 0xc7, 0x0019609d, 0x100, 0x10000, 0x2000000), + FLASH_ID("issi is25wp256d", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x0019709d, 0x100, 0x10000, 0x2000000), + FLASH_ID("issi is25lp512m", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x001a609d, 0x100, 0x10000, 0x4000000), + FLASH_ID("issi is25wp512m", 0x13, 0xec, 0x12, 0xdc, 0xc7, 0x001a709d, 0x100, 0x10000, 0x4000000), diff --git a/artiq-fast/pkgs/openocd.nix b/artiq-fast/pkgs/openocd.nix index 9d32c24..3f3070c 100644 --- a/artiq-fast/pkgs/openocd.nix +++ b/artiq-fast/pkgs/openocd.nix @@ -1,74 +1,26 @@ -{ stdenv, lib, fetchFromGitHub, autoreconfHook, libftdi, libusb1, pkgconfig, hidapi }: - -stdenv.mkDerivation rec { - pname = "openocd-mlabs"; - version = "0.10.0"; - - src = fetchFromGitHub { - owner = "m-labs"; - repo = "openocd"; - fetchSubmodules = true; - rev = "c383a57adcff332b2c5cf8d55a84626285b42c2c"; - sha256 = "0xlj9cs72acx3zqagvr7f1c0v6lnqhl8fgrlhgmhmvk5n9knk492"; - }; - bscan_spi_bitstreams = fetchFromGitHub { +{ stdenv, buildEnv, lib, fetchFromGitHub, openocd }: +let + bscan_spi_bitstreams-pkg = stdenv.mkDerivation { + name = "bscan_spi_bitstreams"; + src = fetchFromGitHub { owner = "quartiq"; repo = "bscan_spi_bitstreams"; rev = "01d8f819f15baf9a8cc5d96945a51e4d267ff564"; sha256 = "1zqv47kzgvbn4c8cr019a6wcja7gn5h1z4kvw5bhpc72fyhagal9"; - }; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ autoreconfHook libftdi libusb1 hidapi ]; - - configureFlags = [ - "--enable-jtag_vpi" - "--enable-usb_blaster_libftdi" - "--enable-amtjtagaccel" - "--enable-gw16012" - "--enable-presto_libftdi" - "--enable-openjtag_ftdi" - "--enable-oocd_trace" - "--enable-buspirate" - "--enable-sysfsgpio" - "--enable-remote-bitbang" - "--disable-werror" - ]; - - NIX_CFLAGS_COMPILE = [ - "-Wno-implicit-fallthrough" - "-Wno-format-truncation" - "-Wno-format-overflow" - "-Wno-error=tautological-compare" - ]; - - postInstall = '' - mkdir -p "$out/etc/udev/rules.d" - rules="$out/share/openocd/contrib/60-openocd.rules" - if [ ! -f "$rules" ]; then - echo "$rules is missing, must update the Nix file." - exit 1 - fi - ln -s "$rules" "$out/etc/udev/rules.d/" - - mkdir -p "$out/share/bscan-spi-bitstreams" - cp ${bscan_spi_bitstreams}/*.bit "$out/share/bscan-spi-bitstreams" - ''; - - meta = with lib; { - description = "Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing"; - longDescription = '' - OpenOCD provides on-chip programming and debugging support with a layered - architecture of JTAG interface and TAP support, debug target support - (e.g. ARM, MIPS), and flash chip drivers (e.g. CFI, NAND, etc.). Several - network interfaces are available for interactiving with OpenOCD: HTTP, - telnet, TCL, and GDB. The GDB server enables OpenOCD to function as a - "remote target" for source-level debugging of embedded systems using the - GNU GDB program. + }; + phases = ["installPhase"]; + installPhase = + '' + mkdir -p $out/share/bscan-spi-bitstreams + cp $src/*.bit $out/share/bscan-spi-bitstreams ''; - homepage = http://openocd.sourceforge.net/; - license = licenses.gpl2Plus; - maintainers = with maintainers; [ sb0 ]; - platforms = platforms.linux; }; -} + # https://docs.lambdaconcept.com/screamer/troubleshooting.html#error-contents-differ + openocd-fixed = openocd.overrideAttrs(oa: { + patches = oa.patches or [] ++ [ ./openocd-jtagspi.diff ]; + }); +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 index bb939f6..fd15a96 100644 --- a/artiq-fast/pkgs/python-deps.nix +++ b/artiq-fast/pkgs/python-deps.nix @@ -86,21 +86,21 @@ rec { misoc = python3Packages.buildPythonPackage { pname = "misoc"; - version = if misoc-new then "unstable-2021-02-15" else "unstable-2020-05-29"; + version = if misoc-new then "unstable-2021-07-29" else "unstable-2021-02-15"; src = if misoc-new then (fetchFromGitHub { owner = "m-labs"; repo = "misoc"; - rev = "d84551418042cea0891ea743442e20684b51e77a"; - sha256 = "1id5qjr9dl4r3vi6jdn7dfpnr2wb08nrm3nfscn18clbbdxybyjn"; + rev = "f048d1fbfd48c93542d2f1e591139f95c7c9cde6"; + sha256 = "1ny0d0q6mnjsxq746q4chn2grfac8brs4w60k9fxk2h5abvfgij8"; fetchSubmodules = true; }) else (fetchFromGitHub { owner = "m-labs"; repo = "misoc"; - rev = "7e5fe8d38835175202dad2c51d37b20b76fd9e16"; - sha256 = "0i8bppz7x2s45lx9n49c0r87pqps09z35yzc17amvx21qsplahxn"; + rev = "d84551418042cea0891ea743442e20684b51e77a"; + sha256 = "1id5qjr9dl4r3vi6jdn7dfpnr2wb08nrm3nfscn18clbbdxybyjn"; fetchSubmodules = true; }); diff --git a/artiq-zynq.nix b/artiq-zynq.nix index 2423339..7d1518f 100644 --- a/artiq-zynq.nix +++ b/artiq-zynq.nix @@ -45,7 +45,6 @@ in export SZL=${szlEnv} pushd ${} export NIX_SSHOPTS="-F /dev/null -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -i /opt/hydra_id_rsa" - ssh $NIX_SSHOPTS rpi-4 "nix-store -r ${} --add-root openocd-pkgs --indirect && nix-env -e openocd && nix-env -iA openocd -f openocd-pkgs && rm openocd-pkgs" bash ${}/remote_run.sh -h rpi-4 -o "$NIX_SSHOPTS" -d ${artiq-zynq.zc706-nist_qc2-jtag} popd diff --git a/hydra/artiq.json b/hydra/artiq.json index 73c1aa3..88db575 100644 --- a/hydra/artiq.json +++ b/hydra/artiq.json @@ -65,7 +65,7 @@ "emailoverride": "", "keepnr": 10, "inputs": { - "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false }, + "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-21.05", "emailresponsible": false }, "nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }, "artiqSrc": { "type": "git", "value": "git://github.com/m-labs/artiq.git release-6 1", "emailresponsible": false } } @@ -82,7 +82,7 @@ "emailoverride": "", "keepnr": 10, "inputs": { - "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false }, + "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-21.05", "emailresponsible": false }, "nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }, "sinaraSystemsSrc": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/sinara-systems.git master 1", "emailresponsible": false }, "artiq-fast": { "type": "sysbuild", "value": "artiq:fast:generated-nix", "emailresponsible": false } @@ -100,7 +100,7 @@ "emailoverride": "", "keepnr": 10, "inputs": { - "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false }, + "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-21.05", "emailresponsible": false }, "nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }, "a6p": { "type": "boolean", "value": "true" }, "artiq-board-generated": { "type": "sysbuild", "value": "artiq:board-generated:generated-nix", "emailresponsible": false } @@ -119,7 +119,7 @@ "emailoverride": "", "keepnr": 10, "inputs": { - "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false }, + "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-21.05", "emailresponsible": false }, "nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }, "artiqSrc": { "type": "git", "value": "git://github.com/m-labs/artiq.git release-5 1", "emailresponsible": false } } @@ -136,7 +136,7 @@ "emailoverride": "", "keepnr": 10, "inputs": { - "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false }, + "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-21.05", "emailresponsible": false }, "nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }, "sinaraSystemsSrc": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/sinara-systems.git master 1", "emailresponsible": false }, "a6p": { "type": "boolean", "value": "false" }, @@ -220,7 +220,7 @@ "emailoverride": "", "keepnr": 10, "inputs": { - "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false }, + "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-21.05", "emailresponsible": false }, "nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }, "artiq-fast": { "type": "sysbuild", "value": "artiq:fast:generated-nix", "emailresponsible": false }, "artiq-zynq": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/artiq-zynq.git release-6", "emailresponsible": false },