Compare commits

...

749 Commits

Author SHA1 Message Date
Astro f7dd925234 artiq-fast: do update nixpkgs.nix 2021-03-11 19:12:46 +01:00
Astro bc501c96ab hydra/artiq.json: use my fork, keep only 1 2021-03-11 18:54:20 +01:00
Astro a7ceb26099 Merge branch 'no-stdenv-lib' into astro 2021-03-11 18:54:09 +01:00
Astro 4294277702 Merge branch 'pin-nixpkgs' into astro 2021-03-11 18:53:55 +01:00
Astro e42e87d56b artiq-fast: pin nixpkgs, use in artiq-board-generated+artiq-full
attempt at gitea issue #31
2021-03-11 18:52:01 +01:00
Astro 84fc1375d1 s/stdenv.lib/lib/ 2021-03-11 17:32:26 +01:00
Leon Riesebos 50fb3cd8e1 update flake8-artiq 2021-03-08 12:14:12 -05:00
Sebastien Bourdeauducq b8a803a64f conda: require python<3.8 for llvmlite 2021-03-01 15:35:30 +08:00
Sebastien Bourdeauducq 4e9339e3a8 misoc: bump 2021-02-28 14:31:52 +08:00
Sebastien Bourdeauducq f2bdeaf401 example-user-env: disable cirq 2021-02-26 11:40:46 +08:00
Sebastien Bourdeauducq a57b927418 targets -> boards 2021-02-17 16:25:18 +08:00
Sebastien Bourdeauducq 5b2ee17cb9 build Zynq targets against ARTIQ stable 2021-02-17 16:21:51 +08:00
Sebastien Bourdeauducq c46534d41b ARTIQ-6 is now stable, add legacy builds 2021-02-17 16:13:09 +08:00
Sebastien Bourdeauducq 5eea3a8267 beta -> a6p 2021-02-17 16:01:19 +08:00
Sebastien Bourdeauducq 9806228a8c check artiq-board-generated more often 2021-02-16 10:01:10 +08:00
Astro bc1ffe4fbf artiq-full/conda-channel: fix artiq-fast path 2021-02-15 21:26:52 +01:00
Sebastien Bourdeauducq 0c3f5161e1 misoc: bump 2021-02-15 21:44:13 +08:00
Astro 72fb469b0b artiq-full/conda-channel: fix artiq-fast path 2021-02-15 14:18:25 +01:00
Sebastien Bourdeauducq a6ea6e3666 migen: bump 2021-02-15 18:44:00 +08:00
Astro 64ee51b673 artiq-full: split code generation into artiq-board-generated jobset 2021-02-15 04:15:09 +01:00
Astro 33c33d49df artiq-full: replace variants list with readDir of sinara-systems 2021-02-11 21:41:23 +01:00
Sebastien Bourdeauducq d1a6c2f5db artiq-full: disable archived variants 2021-02-07 09:43:56 +08:00
Sebastien Bourdeauducq 5c6dc61d4d mcu: missing file rename from 0d706f000f 2021-02-06 22:05:00 +08:00
Sebastien Bourdeauducq 87c2586250 mcu: add Hydra Git input for Sayma MMC firmware 2021-02-06 22:03:13 +08:00
Sebastien Bourdeauducq 42107ff1e9 mcu: build Sayma MMC firmware 2021-02-06 22:00:54 +08:00
Sebastien Bourdeauducq 0d706f000f stm32 -> mcu 2021-02-06 21:45:40 +08:00
topquark12 29b4cb1b09 artiq-full: add stanford 2021-02-04 16:08:25 +08:00
topquark12 b83f40008c artiq-full: add cu2 2021-02-04 14:44:48 +08:00
topquark12 6d0dafb722 artiq-full: add cu3 2021-02-04 12:35:35 +08:00
topquark12 f1d689ae78 artiq-full: add sydney2 2021-02-04 10:46:22 +08:00
Harry Ho 487bf219ba artiq-full: build illinois 2021-02-03 17:55:48 +08:00
Astro 4666f1aa6a artiq-full: concatenate paths as paths not strings
fixes running with restrict-eval=true on Hydra
2021-02-02 13:24:02 +01:00
Astro d149c66d05 artiq-full: move reading standalone flag from sinara-systems to before generatedNix 2021-02-02 13:23:31 +01:00
Sebastien Bourdeauducq 3c1a84a07e Revert "artiq-full: move reading standalone flag from sinara-systems to before generatedNix"
hydra-eval-jobs returned exit code 1:
error: --- Error --- hydra-eval-jobs
worker error: error: --- RestrictedPathError --- hydra-eval-jobs
access to path '/nix/store/xq8mnh5rf5v0www2amzvlbf8m6r0ckjv-pm405hs1s21h4p3bq7fg2vcwwc1gqcfv-source/apm.json' is forbidden in restricted mode

This reverts commit b0e041c716.
2021-02-02 15:29:26 +08:00
Astro 70a0b8f90f artiq-full: let drtio-ddbs depend on one json file instead of full sinara-systems 2021-02-02 15:11:52 +08:00
Astro b0e041c716 artiq-full: move reading standalone flag from sinara-systems to before generatedNix 2021-02-02 15:11:52 +08:00
Harry Ho 6fe5a903b9 stm32: update stabilizer IP address override
* Affected by 2144af5bcd .
2021-02-02 12:16:10 +08:00
Harry Ho 726ee7aa82 stm32: allow binary filename and package name to be different
* The major motivation is that Stabilizer ( since f1f15aca65 ) now contains multiple binaries, and the filenames of the generated ELFs (e.g. `dual-iir`, `lockin-internal`) do not necessarily contain the project name as a substring.
2021-02-02 11:16:24 +08:00
Harry Ho 21f5362b6f stm32: fix stabilizer IP address override
* required by at least 659a6879f7 or later
* also substitutes the default gateway address (24-bit netmask)
2021-02-01 16:40:28 +08:00
Harry Ho 35c2844612 artiq-full: build cu 2021-02-01 12:18:09 +08:00
Sebastien Bourdeauducq d5b5dbeeb2 migen-axi: bump 2021-01-30 18:24:05 +08:00
Sebastien Bourdeauducq 57aca5d142 migen: bump 2021-01-30 18:22:22 +08:00
David Nadlinger 87fdb2c5ea Export qasync from artiq-fast
This makes it easier to pull in qasync from custom dev environments
(artiq-fast.qasync).
2021-01-29 14:29:22 +00:00
Sebastien Bourdeauducq 58aabaaa0e example-user-env: disable spyder 2021-01-28 12:22:27 +08:00
Sebastien Bourdeauducq eac7f4bddb Revert "artiq: move stable to nixpkgs 20.09"
This reverts commit b810407aa9.
2021-01-28 12:21:09 +08:00
Sebastien Bourdeauducq b810407aa9 artiq: move stable to nixpkgs 20.09 2021-01-27 13:14:12 +08:00
Sebastien Bourdeauducq e39f359122 bump sipyco 2021-01-27 13:09:08 +08:00
occheung 049de83093 artiq-full: build hw3 2021-01-26 15:17:12 +08:00
Sebastien Bourdeauducq 221d2fe793 example-user-env: artiq-5 compat 2021-01-18 15:21:45 +08:00
Sebastien Bourdeauducq 8b59734705 example-user-env: add flake8-artiq 2021-01-18 15:20:42 +08:00
Sebastien Bourdeauducq 360eb10ada update flake8-artiq 2021-01-18 15:19:55 +08:00
Sebastien Bourdeauducq 4d99f4884e example-user-env: matplotlib-qt issues 2021-01-15 17:48:59 +08:00
Sebastien Bourdeauducq 45f46f8901 add user environment test 2021-01-15 17:23:19 +08:00
Sebastien Bourdeauducq 7ee9e4f068 fix syntax 2021-01-15 17:22:48 +08:00
Sebastien Bourdeauducq 8396cfa1cb extras: update controllers 2021-01-15 16:53:54 +08:00
Sebastien Bourdeauducq 7a76d08cb0 simplify/fix jsonschema dependency 2021-01-15 16:36:48 +08:00
Astro ce676be8e4 artiq: add dependency jsonschema (#38)
artiq: add dependency jsonschema

Support for resolution of https://github.com/m-labs/artiq/issues/1474

Co-authored-by: Stephan Maka <sm@m-labs.hk>
Reviewed-on: M-Labs/nix-scripts#38
Co-Authored-By: Astro <sm@m-labs.hk>
Co-Committed-By: Astro <sm@m-labs.hk>
2021-01-15 16:32:55 +08:00
Sebastien Bourdeauducq 2984cff156 artiq-full: disable archived variants 2021-01-15 16:30:29 +08:00
occheung 3cd8e64846 artiq-full: build stfc master + satellite 2021-01-15 13:05:22 +08:00
occheung f5145e23ee artiq-full: build okinawa 2021-01-05 12:43:59 +08:00
occheung 58b49c173e artiq-full: build nist3 2020-12-29 13:29:33 +08:00
occheung d4c78c8d1b artiq-full: build berkeley3 master + satellite 2020-12-28 16:05:03 +08:00
Astro cc6e7095f3 artiq-full: add a boardsWithoutBuildSplit blacklist 2020-12-27 02:04:47 +01:00
Astro e189ee4c8f artiq-board: refactor vivado derivations into discardContextFromPath, tighten software src 2020-12-23 18:03:40 +01:00
Astro 2f4b063513 artiq-board: use new misoc top-level Makefile for software build 2020-12-23 17:46:31 +01:00
Astro 0cf2def070 artiq-board: move software build into separate derivation 2020-12-23 17:46:12 +01:00
Astro 22a6d5fb2e artiq-full: fix artiq-board paths 2020-12-23 15:31:14 +01:00
Astro 1c103ccb62 artiq-fast: move new artiq-board.nix to artiq-full/ 2020-12-23 15:31:14 +01:00
Sebastien Bourdeauducq 42df27a7fd misoc: bump 2020-12-23 12:01:37 +08:00
Drew Risinger 2577aa52c0 artiq: pass wrapped python env to subprocesses
Fixes https://github.com/m-labs/artiq-comtools/issues/7.
Basically, python subprocesses can't see all installed python packages
in a python environment because it uses the wrong Python exe (i.e. it
doesn't use the wrapped exe). This patches the PATH in the binary
wrappers (e.g. */bin/artiq_session) to include the correct python path.
2020-12-23 10:55:43 +08:00
Sebastien Bourdeauducq a45b6fc771 misoc: bump 2020-12-22 23:46:51 +08:00
Sebastien Bourdeauducq 228a73fc55 artiq-full: remove vlbai leftovers 2020-12-22 22:40:18 +08:00
occheung e97e8be246 artiq-full: move nist2 to 6+ (kasli2) 2020-12-22 09:34:44 +08:00
Sebastien Bourdeauducq 2814292f05 jesd204: bump 2020-12-19 17:04:59 +08:00
Robert Jördens cefb3ce2f2 vlbai*: deactivate 2020-12-19 09:42:45 +01:00
Robert Jördens 2f2ed2b68e disable mpik 2020-12-17 18:34:58 +01:00
Robert Jördens 718230f12a remove hub,opticlock,ptb 2020-12-17 18:06:31 +01:00
Drew Risinger ca28925120 treewide: name -> pname where possible
Changes "name = '...-${version}" -> "pname = '...'" syntax everywhere
that is easy.
This matches current best nixpkgs convention.
The nixpkgs standard derivation will convert this to name =
"${pname}-${version}" automatically.
This also has the added benefit of adding the version to the filepath
for several packages that didn't have it before.

The only remaining files are ./artiq-full/extras.nix &
./artiq-fast/pkgs/python-deps.nix.
extras.nix had a
semi-confusing function that I didn't want to mess with.
2020-12-17 14:16:45 +08:00
Drew Risinger beb99234fe conda build: allow pname or name convention 2020-12-17 14:16:45 +08:00
Sebastien Bourdeauducq f072c46ee3 wand: depend on quamash 2020-12-16 15:44:12 +08:00
occheung abf17296c8 artiq-full: build nus 2020-12-15 09:46:45 +08:00
occheung 755f36ecdf artiq-full: build ucsb 2020-12-14 21:23:48 +08:00
Sebastien Bourdeauducq 0c3cb62cde artiq-full: use uTCA for sayma-satellite-st 2020-12-14 11:38:33 +08:00
occheung d1f7e5d25f add wipm7 device database 2020-12-14 11:18:42 +08:00
occheung 73d7fe2502 artiq-full: build wipm7 master + satellite 2020-12-14 09:37:08 +08:00
Sebastien Bourdeauducq eb48b4a6b8 artiq-fast: do not put both quamash and qasync in conda channel
This causes conda's lame excuse for a dependency solver to break, as usual.
2020-12-12 22:27:23 +08:00
Sebastien Bourdeauducq 093b1b7224 artiq-fast: quamash -> qasync on artiq-6+ 2020-12-12 21:58:04 +08:00
Sebastien Bourdeauducq faedd3e1ea artiq-full: fix typo/syntax 2020-12-12 14:30:57 +08:00
Sebastien Bourdeauducq 56382d6301 artiq-full: disable flake8-artiq manual 2020-12-10 11:35:50 +08:00
Robert Jördens 6721a8ea17 Merge remote-tracking branch 'quartiq/master'
* quartiq/master:
  added innsbruck5
  added basel
  add ptb8
2020-12-09 20:07:02 +01:00
SingularitySurfer 08241d9ab0 added innsbruck5 2020-12-09 16:08:38 +00:00
Sebastien Bourdeauducq 7259a0b3aa artiq-full: disable archived variants 2020-12-09 12:26:23 +08:00
SingularitySurfer b17a99ac3b added basel 2020-12-08 16:22:15 +01:00
SingularitySurfer 3d26cd62cf add ptb8 2020-12-08 16:22:15 +01:00
SingularitySurfer 8771512787 added basel 2020-12-08 13:24:07 +00:00
Sebastien Bourdeauducq d688ed1a56 extras: add flake8-artiq 2020-12-08 13:45:40 +08:00
Sebastien Bourdeauducq ea292df252 artiq-full: add artiq-board-sayma-satellite-st 2020-12-07 18:09:12 +08:00
Astro 00352b9942 artiq-board, artiq-board-legacy: dontFixup board packages
resolves gitea issue #35
2020-12-02 17:07:19 +01:00
SingularitySurfer cf4ca3e4f2 add ptb8 2020-12-02 15:22:35 +00:00
Astro eab83a6a3f artiq-fast: build gateware from a self-contained separate source derivation (#23)
artiq-fast: add nativeBuildInputs to artiq-board-legacy.nix

artiq-board: fix scope of toPythonModule

artiq-board: use new --gateware-identifier-str

artiq-board: use legacy code for artiq<6

artiq-board: get/remove/re-add version identifiers

artiq-fast: build gateware from a self-contained separate source derivation

Addresses item 2. of Gitea issue #1.

Co-authored-by: Stephan Maka <stephan@spaceboyz.net>
Reviewed-on: M-Labs/nix-scripts#23
2020-12-02 17:22:54 +08:00
occheung 262ef72eb7 artiq-full: build apm 2020-11-30 18:25:22 +08:00
Astro 12fbe64616 artiq-fast: add strictDeps=true to fetchcargo.nix, nativeBuildInputs to artiq-board.nix
this indeed cuts runtime dependencies (gitea issue #34)
2020-11-26 17:10:36 +01:00
Robert Jördens 6acf5b3f93 innsbruck4, ubirmingham2: add 2020-11-26 15:56:10 +01:00
Astro 5695977531 Revert "artiq-board.nix: move compilers into nativeBuildInputs"
This reverts commit fd25af0733.
2020-11-25 21:23:03 +01:00
Astro 2e62831998 Revert "artiq-fast: add strictDeps=true to fetchcargo.nix"
This reverts commit 843da12452.
2020-11-25 21:23:02 +01:00
Astro fd25af0733 artiq-board.nix: move compilers into nativeBuildInputs
Part of Gitea issue #34
2020-11-25 18:19:03 +01:00
Astro 843da12452 artiq-fast: add strictDeps=true to fetchcargo.nix
part of gitea issue #34. unfortunately, the flag has inferior
documentation, so this is just a try.
2020-11-25 18:05:51 +01:00
Drew Risinger 267b497ac4 python3Packages.pyqtgraph: 0.10.0 -> 0.11.0 2020-11-24 23:14:17 +08:00
Sebastien Bourdeauducq ff54c815d5 artiq-full: move ptb7 to 6+ (kasli2) 2020-11-24 00:10:49 +08:00
Sebastien Bourdeauducq eb398dcc53 artiq-full: package wand 2020-11-23 23:23:02 +08:00
Robert Jördens 88cd472f90 innsbruck3: artiq 6 2020-11-17 18:55:03 +01:00
Robert Jördens 6eac1b5f3f ptb3master/satellite: fix artiq major version restrictions 2020-11-17 18:53:32 +01:00
Robert Jördens c31b0144d3 innsbruck3, ptb7: add 2020-11-16 08:42:48 +00:00
Robert Jördens 34c5ff76b9 ptb2/3: refactor 2020-11-16 08:42:32 +00:00
Astro 571cfbd8a6 python-deps: bump migen, migen-axi 2020-11-12 15:43:17 +01:00
Sebastien Bourdeauducq 0db0ffb128 zynq: power off board when done 2020-11-10 22:49:07 +08:00
Sebastien Bourdeauducq 083e389b41 artiq-fast: put board lockfile into separate directory
Files at the root of /tmp cannot be written by different users for some reason.
2020-11-10 22:47:48 +08:00
Sebastien Bourdeauducq 777b9dbecd phaser: remove inappropriate load-after-build code 2020-11-09 13:45:36 +08:00
Sebastien Bourdeauducq 0a11450df3 migen: bump 2020-11-06 12:32:51 +08:00
Sebastien Bourdeauducq 30629929a8 migen: bump 2020-11-06 12:25:21 +08:00
Sebastien Bourdeauducq d53eed3880 phaser: remove unnecessary patch 2020-11-06 12:24:20 +08:00
Astro df36762bfe stm32: update rustc 2020-10-30 14:49:33 +01:00
occheung 8477bc2919 artiq-full: build wipm6 2020-10-22 17:35:21 +08:00
Sebastien Bourdeauducq 01dbcb5886 artiq-full: build atomionics 2020-10-21 18:28:22 +08:00
Sebastien Bourdeauducq f2c9e226ac zynq: install artiq-netboot for HITL test 2020-10-15 16:15:39 +08:00
Sebastien Bourdeauducq b46f418176 add artiq-netboot package 2020-10-15 16:12:51 +08:00
Harry Ho 6ee5fa70ec artiq-full: build siom 2020-10-15 15:12:00 +08:00
Sebastien Bourdeauducq 24510c81d6 python-deps: update migen-axi 2020-10-14 20:30:59 +08:00
occheung 17e6cbf6b1 artiq-full: build ustc3 2020-10-14 11:57:34 +08:00
Sebastien Bourdeauducq 59844c28d9 zynq: build with nixos 20.09 2020-10-13 18:24:57 +08:00
Sebastien Bourdeauducq 4172f745e3 add Phaser gateware 2020-10-12 22:49:47 +08:00
Sebastien Bourdeauducq ee9983728e update migen+misoc 2020-10-12 22:33:40 +08:00
Sebastien Bourdeauducq b50d1a0f7e artiq-full: build nist2 2020-10-12 17:45:48 +08:00
Sebastien Bourdeauducq a9108d5fa3 stm32: move to nixos 20.09 2020-10-08 14:43:22 +08:00
Sebastien Bourdeauducq 0064906c6f stm32: use nativeBuildInputs correctly 2020-10-08 14:32:36 +08:00
Sebastien Bourdeauducq 9754f45904 use new simplified hydra jobset declarations 2020-10-08 14:08:20 +08:00
Sebastien Bourdeauducq 59ad8b124a remove HeavyX 2020-10-08 14:00:18 +08:00
Sebastien Bourdeauducq 1263c7f15f Revert "attempting to fix hydra jobsets"
This reverts commit 477f9ce197.
2020-10-08 13:54:36 +08:00
Sebastien Bourdeauducq 477f9ce197 attempting to fix hydra jobsets 2020-10-08 13:52:17 +08:00
Sebastien Bourdeauducq 4dd16d3aa8 replace deprecated nixpkgs-channels repository 2020-10-08 09:15:50 +08:00
Sebastien Bourdeauducq 497f1970a0 gluelogic: move to nixos 20.09 2020-10-08 09:10:46 +08:00
Sebastien Bourdeauducq bf45666b2b artiq: move beta to nixos 20.09
There are still issues on Zynq due to cargo, so keep 20.03 there for now.
2020-10-08 09:09:10 +08:00
Sebastien Bourdeauducq 6cbfebf626 artiq-full: update wavedrom 2020-10-07 19:30:04 +08:00
Sebastien Bourdeauducq 9870fce5a6 stm32: hydra restricted mode 2020-09-25 14:40:57 +08:00
Sebastien Bourdeauducq a6f94d37e9 stm32: hydra restricted mode 2020-09-25 14:38:09 +08:00
Sebastien Bourdeauducq 657d3c1b27 stm32: add humpback fpga build dependencies 2020-09-25 14:35:09 +08:00
Sebastien Bourdeauducq fe728a7303 artiq-full: disable archived variants 2020-09-24 18:06:09 +08:00
Sebastien Bourdeauducq f392ca6fd6 Revert "artiq-full: disable archived variants"
This reverts commit 9a39d707da.
2020-09-24 18:05:50 +08:00
Sebastien Bourdeauducq 9a39d707da artiq-full: disable archived variants 2020-09-24 18:05:08 +08:00
Sebastien Bourdeauducq 3e607f7d12 stm32: add humpback-dds 2020-09-24 11:12:19 +08:00
Sebastien Bourdeauducq f69616307e stm32: dontFixup 2020-09-24 11:12:05 +08:00
Astro 62f7610087 stm32: update rustc 2020-09-23 03:47:21 +02:00
Harry Ho 68318b05ec artiq-full: build ucsd 2020-09-18 10:05:27 +08:00
Astro 7c7c0cb58d stm32: add checkPhase to thermostat 2020-09-18 01:15:13 +02:00
Sebastien Bourdeauducq 5ba0896be6 migen: bump 2020-09-17 16:39:38 +08:00
Harry Ho 7c4eb8e770 stm32: generate memory image from elf for dfu bootloader to download 2020-09-17 12:52:18 +08:00
Sebastien Bourdeauducq c64d73649f stm32: update rustc 2020-09-11 22:25:43 +08:00
Sebastien Bourdeauducq e6fb3088b1 stm32: cleanup rustManifest 2020-09-11 22:21:15 +08:00
Sebastien Bourdeauducq e4d6dd253d stm32: fix stabilizer IP address override 2020-09-11 18:38:37 +08:00
Sebastien Bourdeauducq b5d7b1d10a stm32: update rustc 2020-09-11 18:38:20 +08:00
Sebastien Bourdeauducq 864bddd0b4 zynq: fix previous commit 2020-09-09 19:26:22 +08:00
Sebastien Bourdeauducq de7c867866 zynq: use exposed zynq-rs from artiq-zynq 2020-09-09 19:23:53 +08:00
Sebastien Bourdeauducq 58c9c6f83c zynq: try to work around hydra restricted mode problems 2020-09-09 19:19:10 +08:00
Sebastien Bourdeauducq 532dd5c861 zynq: fix previous commit 2020-09-09 19:14:41 +08:00
Sebastien Bourdeauducq eabcda5013 zynq: fix previous commit 2020-09-09 19:13:35 +08:00
Sebastien Bourdeauducq b3715bbfc8 zynq: use zynq-rs from artiq-zynq 2020-09-09 19:11:41 +08:00
Sebastien Bourdeauducq 51bd917512 cleanup 2020-09-09 18:46:46 +08:00
Sebastien Bourdeauducq b7a1f42a06 zynq: set SZL environment variable 2020-09-09 18:36:41 +08:00
Sebastien Bourdeauducq 53838bd55f zynq: use new zynq-rs 2020-09-09 16:51:03 +08:00
Sebastien Bourdeauducq 354f653a13 zynq: work around tnetplug connection freezing (attempt 2) 2020-09-09 16:33:28 +08:00
Sebastien Bourdeauducq 33b66b1a65 zynq: work around tnetplug connection freezing 2020-09-09 15:54:36 +08:00
Sebastien Bourdeauducq 1b324970e5 zynq: set OPENOCD_ZYNQ 2020-09-09 15:44:09 +08:00
Sebastien Bourdeauducq 44ffc90e3a zynq: artiq-zynq does not take mozillaOverlay anymore 2020-09-09 15:23:20 +08:00
Sebastien Bourdeauducq 6c51ea48fa fix previous commit 2020-09-01 17:53:58 +08:00
Sebastien Bourdeauducq 953000afd1 zynq: run ARTIQ test suite 2020-09-01 17:53:07 +08:00
Sebastien Bourdeauducq 82ff5added artiq-full: make luh 6+ only (fastino) 2020-08-20 17:21:20 +08:00
Sebastien Bourdeauducq 51ecc65edc disable wipm4 2020-08-07 15:04:34 +08:00
Sebastien Bourdeauducq 536e26b771 zc706 -> zynq-rs 2020-08-06 20:30:00 +08:00
Robert Jördens a7179589bd su variant: disable 2020-08-04 15:27:40 +02:00
Sebastien Bourdeauducq d88e2287e2 gluelogic: fix python-deps 2020-08-02 20:28:34 +08:00
Sebastien Bourdeauducq 1c43932205 cleanup/fix python-deps import 2020-08-01 10:40:00 +08:00
Sebastien Bourdeauducq 60e554c501 artiq: use new misoc for artiq-6 2020-08-01 10:31:07 +08:00
Sebastien Bourdeauducq 7b27d68841 artiq: apply Qt wrapper to artiq_session 2020-08-01 10:20:15 +08:00
Sebastien Bourdeauducq 241d6224cb Revert "artiq: build beta version with nixos unstable"
This reverts commit 7a1ac77c8b.
2020-07-29 19:07:12 +08:00
Sebastien Bourdeauducq 3c463f7397 artiq-board: mention asm/llvm_asm 2020-07-29 13:38:53 +08:00
Sebastien Bourdeauducq 4a1de56ce5 artiq-board: update cargo
Older version doesn't compile with new rustc due to asm/llvm_asm breaking change.
2020-07-29 13:37:21 +08:00
Sebastien Bourdeauducq 7a1ac77c8b artiq: build beta version with nixos unstable 2020-07-28 21:20:38 +08:00
Sebastien Bourdeauducq 7001d011fd update pythonparser patch for conda 2020-07-28 13:18:07 +08:00
Sebastien Bourdeauducq 454c3d806c hack-patch pythonparser for python 3.8 2020-07-28 10:46:29 +08:00
Sebastien Bourdeauducq 4ef1b6e76d artiq-board: disable timing check 2020-07-26 23:51:19 +08:00
Astro be5787ab55 conda-windows/binutils-recipe: change to --build=x86_64-w64-mingw32
Fixes Gitea issue #28
2020-07-24 10:01:37 +08:00
Astro bc447638a9 Revert "conda-windows-binutils-or1k: build with msys2, not conda"
This reverts commit 3409eb3c11.
2020-07-24 09:35:29 +08:00
Astro 7f32f8e438 Revert "conda-windows-binutils-arm: likewise"
This reverts commit 1d7b1e9175.
2020-07-24 09:35:06 +08:00
Astro 89d700a796 windows/binutils: change to --build=x86_64-w64-mingw32 2020-07-24 09:33:49 +08:00
Harry Ho d86ea71a76 artiq-full: make purdue builds in ARTIQ-6+ only 2020-07-23 17:01:13 +08:00
Harry Ho 756c256c77 artiq-full: build purdue 2020-07-23 10:49:42 +08:00
Astro 1d7b1e9175 conda-windows-binutils-arm: likewise 2020-07-22 08:24:37 +08:00
Astro 3409eb3c11 conda-windows-binutils-or1k: build with msys2, not conda 2020-07-22 06:43:56 +08:00
Sebastien Bourdeauducq 6c328f32f1 migen-axi: bump 2020-07-19 14:04:50 +08:00
Sebastien Bourdeauducq e75d16f55a artiq: fix use of Qt 2020-07-17 11:48:43 +08:00
Sebastien Bourdeauducq cc00cfc1a8 wfvm: bump 2020-07-14 15:28:00 +08:00
Sebastien Bourdeauducq e8054aebbd zynq: run gateware simulation tests 2020-07-13 19:05:50 +08:00
Sebastien Bourdeauducq 30e0886a16 artiq-full: remove dependency of board packages on sinara-systems source (#21) 2020-07-13 00:23:45 +08:00
Sebastien Bourdeauducq 888481c0ce typo 2020-07-12 23:20:31 +08:00
Sebastien Bourdeauducq cc5694dedf artiq-board: allow setting src 2020-07-12 23:19:40 +08:00
Sebastien Bourdeauducq e0a9253084 migen: bump 2020-07-11 09:50:42 +08:00
Sebastien Bourdeauducq eaa571b61f artiq-full: disable archived variants 2020-07-10 18:44:09 +08:00
Sebastien Bourdeauducq c0f5d74bd0 artiq-full: build purpleberry 2020-07-10 18:42:31 +08:00
Astro fe8417e229 windows: add a doc note to make_conda_packages.sh 2020-07-10 00:49:56 +02:00
Sebastien Bourdeauducq 46388263c4 zynq: add debug messages to HITL test 2020-07-06 12:44:32 +08:00
Sebastien Bourdeauducq bba16a693e zynq: power-cycle ZC706 before running tests
Like most trashy hardware of its kind, Zynq does not have a reliable reset.
2020-07-05 23:18:06 +08:00
Sebastien Bourdeauducq e623036a65 zynq: add Completed message at end of HITL test 2020-07-05 20:48:40 +08:00
Sebastien Bourdeauducq 8e30790990 zynq: fix previous commit 2020-07-05 00:03:56 +08:00
Sebastien Bourdeauducq 1888638dd5 zynq: fix nix store permission problems 2020-07-05 00:02:22 +08:00
Sebastien Bourdeauducq 7ab53bb9eb zynq: set USER variable 2020-07-04 23:58:32 +08:00
Sebastien Bourdeauducq eba5934c80 zynq: run simple kernel 2020-07-04 23:56:57 +08:00
Sebastien Bourdeauducq e372f357a8 zynq: fix openocd files transfer 2020-07-04 23:46:54 +08:00
Sebastien Bourdeauducq a89e2e5e5b zynq: fix ssh auth 2020-07-04 23:44:47 +08:00
Sebastien Bourdeauducq 0b87a11ae2 zynq: fix rpi4 host key problems (4th attempt) 2020-07-04 23:41:58 +08:00
Sebastien Bourdeauducq f6e1164476 zynq: fix rpi4 host key problems (third attempt) 2020-07-04 17:41:02 +08:00
Sebastien Bourdeauducq 2c26169353 zynq: fix rpi4 host key problems (second attempt) 2020-07-04 17:39:10 +08:00
Sebastien Bourdeauducq 1a3c57864d zynq: fix rpi4 host key problems 2020-07-04 17:37:30 +08:00
Sebastien Bourdeauducq 3dfd3b166a zynq: use bash to execute remote-run script 2020-07-04 17:29:29 +08:00
Sebastien Bourdeauducq 563161860e zynq: add HITL test (WIP) 2020-07-04 17:27:42 +08:00
Sebastien Bourdeauducq 02899d343c extended-tests: remove IPv4 SSH host entry for rpi-1 2020-07-04 16:21:54 +08:00
Sebastien Bourdeauducq 50f9897c2e use new technique to access network from Hydra tests 2020-07-04 16:17:20 +08:00
Robert Jördens eb867a355b artiq-full: add qleds 2020-07-02 16:34:15 +02:00
Sebastien Bourdeauducq 4578bbc74e artiq-full: remove channel constituents 2020-07-02 20:34:06 +08:00
Astro 088a101d89 windows: doc make_conda_packages.sh 2020-07-01 17:56:52 +02:00
Sebastien Bourdeauducq 8c508de922 artiq: add binutils-arm dependency for 6.0+ 2020-06-28 17:29:40 +08:00
Sebastien Bourdeauducq 48bc991c7c move wfvm.nix into artiq-fast
Avoids issue with generatedNix
2020-06-28 14:50:44 +08:00
Sebastien Bourdeauducq 4cd7a559e8 use external WFVM, pin WFVM nixpkgs 2020-06-28 14:46:32 +08:00
Sebastien Bourdeauducq 005792ed77 wfvm: restrict distribution of VS layout 2020-06-28 13:56:43 +08:00
Sebastien Bourdeauducq 64224a0b51 wfvm: cleanup 2020-06-28 13:56:28 +08:00
Sebastien Bourdeauducq 6eecb5085d wfvm: move out MSYS2 package list 2020-06-27 17:22:34 +08:00
Sebastien Bourdeauducq 486b343b15 windows: update conda dependencies for beta test 2020-06-27 17:06:55 +08:00
Astro 30f205680f wfvm: add RESTRICTDIST- to names of nonfree output paths
Preparation for M-Labs/nix-scripts#26
2020-06-26 20:48:34 +02:00
Astro c00c10e223 artiq-board: fix and simplify check for timing criteria
Re-fixes Gitea issue #15
2020-06-25 00:21:48 +02:00
Sebastien Bourdeauducq e87d2b4ecd windows: add back test timeout 2020-06-24 22:28:16 +08:00
Sebastien Bourdeauducq d809926d10 conda-windows: try fixing llvmlite-artiq setup.py install 2020-06-24 22:22:00 +08:00
Sebastien Bourdeauducq 491aae094c gluelogic: add urukul-cpld-legacy 2020-06-24 19:08:52 +08:00
Sebastien Bourdeauducq e347cb7c4b conda-windows: use compiled llvm-or1k for llvmlite-artiq 2020-06-23 22:27:18 +08:00
Sebastien Bourdeauducq 9733ec3509 llvm-or1k: bump 2020-06-23 21:18:37 +08:00
Sebastien Bourdeauducq ed313133b8 conda-windows: fix llvm-or1k yaml syntax 2020-06-23 19:49:28 +08:00
Sebastien Bourdeauducq 69d8e02853 conda-windows: build llvmlite with VS, again 2020-06-23 19:48:53 +08:00
Sebastien Bourdeauducq 80bf1d300e wfvm: cleanup 2020-06-23 19:06:53 +08:00
Sebastien Bourdeauducq 536d45012e conda-windows: build llvm with VS, second attempt 2020-06-23 16:24:59 +08:00
Sebastien Bourdeauducq 4158527dba wfvm: add back MSVC 2020-06-23 16:24:59 +08:00
Sebastien Bourdeauducq 3f75a81ec1 artiq-fast: remove unnecessary buildInput in windows-no-hardware-tests 2020-06-22 18:05:51 +08:00
Sebastien Bourdeauducq 5c07a9e95d windows: fix no-hardware-tests 2020-06-22 17:53:01 +08:00
Sebastien Bourdeauducq 8111b2f42b windows: run tests using WFVM 2020-06-22 17:45:18 +08:00
Sebastien Bourdeauducq 1b79bdaa20 wfvm: set -e in scripts 2020-06-22 17:24:53 +08:00
Sebastien Bourdeauducq d641e1613f artiq-fast: remove ping attempt 2020-06-22 17:20:38 +08:00
Sebastien Bourdeauducq 7ca6ada7ee conda-windows: do not set msys path twice in binutils 2020-06-22 16:53:40 +08:00
Sebastien Bourdeauducq 3766781a24 windows: do not use idiotic .conda files 2020-06-22 16:48:11 +08:00
Sebastien Bourdeauducq 5dc2ed0c79 conda: do not depend on Python
python dependency just seems to cause more misbehavior of the crappy conda dep handler.
2020-06-22 15:41:28 +08:00
Sebastien Bourdeauducq 72d4eab21b conda: remove version specification from deps
They just seem to tickle bugs in conda's shitty excuse for a dependency solver.
2020-06-22 15:29:00 +08:00
Sebastien Bourdeauducq 11dfff09b9 artiq-fast: fix a448d3bdc 2020-06-22 15:22:25 +08:00
Sebastien Bourdeauducq 97bb368cab conda: do not specify h5py 2.8
h5py 2.8 sometimes causes the conda crap to install Python 3.5.
2020-06-22 15:18:47 +08:00
Sebastien Bourdeauducq a448d3bdc0 artiq-fast: organize 2020-06-22 15:13:02 +08:00
Sebastien Bourdeauducq 05cde854dd windows: add script to automatically download conda dependencies and create fetchurl nix files 2020-06-22 14:56:02 +08:00
Sebastien Bourdeauducq bd8fa5d955 wfvm: support disabling fake RTC
Avoids SSL 'certificate not yet valid' errors.
2020-06-22 14:43:02 +08:00
Sebastien Bourdeauducq d895203b5b conda-windows: add binutils-arm again 2020-06-22 12:57:52 +08:00
Sebastien Bourdeauducq 7838d6e683 conda-windows: make binutils generic 2020-06-22 12:57:29 +08:00
Sebastien Bourdeauducq b2e40e0594 conda-windows: new attempt at binutils 2020-06-22 12:33:36 +08:00
Sebastien Bourdeauducq dd377e0459 wfvm: remove CMake
Better install via MSYS2 if needed.
2020-06-20 19:58:49 +08:00
Sebastien Bourdeauducq ffed59ad95 wfvm: remove Visual Studio
Installer is a piece of trash and won't work reliably in command line.
2020-06-20 19:58:20 +08:00
Sebastien Bourdeauducq 8c8ede8387 wfvm: increase VM disk image size
Windows software is seriously bloated.
2020-06-20 19:52:22 +08:00
Sebastien Bourdeauducq 942c654af0 conda-windows: also enable on stable channel 2020-06-20 18:33:29 +08:00
Sebastien Bourdeauducq 90cc2c5049 split into it-infra 2020-06-20 17:53:53 +08:00
Sebastien Bourdeauducq 77722ae68b wfvm: do not use virtio graphics (driver not installed) 2020-06-20 14:23:49 +08:00
Sebastien Bourdeauducq 8fa63fe916 commit missing file 2020-06-20 13:57:06 +08:00
Sebastien Bourdeauducq 561eb3a02e conda-windows: redistribute old packages 2020-06-20 13:56:15 +08:00
Your Name 5ef34eff97 conda-windows: work around more conda build dependency handling idiocy 2020-06-19 09:54:37 +08:00
Astro 131df3a337 nixops: set astro's shell to bashInteractive
I hope this is lighter than `programs.zsh.enable = true;`
2020-06-18 16:19:42 +02:00
Sebastien Bourdeauducq 0e4d2e3b54 conda-windows: fix name of conda package for VS activation 2020-06-18 19:06:23 +08:00
Sebastien Bourdeauducq ae201e2aa8 wfvm: fix VS download 2020-06-18 18:50:01 +08:00
Sebastien Bourdeauducq b30fa47e53 conda-windows: try to use conda package for VS activation 2020-06-18 18:48:54 +08:00
Sebastien Bourdeauducq e589989955 wfvm: install Win8.1 SDK in VS 2020-06-18 18:19:46 +08:00
Sebastien Bourdeauducq df38a58ae7 conda-windows: fix previous commit 2020-06-18 16:34:19 +08:00
Sebastien Bourdeauducq eb4fa6ee15 conda-windows: fix llvm-or1k after 9479f297fc 2020-06-18 16:28:57 +08:00
Sebastien Bourdeauducq 7ff56838b6 conda-windows: build llvm with VS (WIP) 2020-06-18 16:22:05 +08:00
Sebastien Bourdeauducq f18d1d70d2 nixops: disable geary
breaks without gnome-keyring
2020-06-18 16:06:34 +08:00
Sebastien Bourdeauducq 9479f297fc conda-windows: restrict to beta channel
Windoze is a truly horrible excuse for a OS and there have been lots of problems with those packages.
2020-06-18 16:05:20 +08:00
Sebastien Bourdeauducq 330636726c wfvm: downgrade visual studio to 2017
The conda garbage does not support later versions.
2020-06-18 15:34:55 +08:00
Sebastien Bourdeauducq 21f3b682c5 wfvm: get the visual studio installer to work
It is chock full of bugs and also the instructions on the microsoft website are wrong.
2020-06-18 14:16:56 +08:00
Sebastien Bourdeauducq 2db006aa19 Revert "nixops: enable fish-nix-shell on rpi"
Still fails with 'exec format error'.

This reverts commit 3e19ee59c9.
2020-06-18 11:12:28 +08:00
Sebastien Bourdeauducq d64fcec76e wfvm: use absolute path for VS layout creation 2020-06-18 11:09:36 +08:00
Astro f1325dce29 artiq-board.nix: move inputs outside inner function, accept vivado as arg to cut memory usage 2020-06-17 23:20:23 +02:00
Sebastien Bourdeauducq 08d28437e4 wfvm: new visual studio installation technique 2020-06-18 01:58:09 +08:00
Sebastien Bourdeauducq 1bf63a88ad wfvm: fix win-get of directory 2020-06-18 01:55:53 +08:00
Sebastien Bourdeauducq 6d2d0745e0 conda-windows: be more selective when copying conda packages 2020-06-18 00:10:57 +08:00
Sebastien Bourdeauducq 0e446db26e wfvm: fix win-get path problems 2020-06-18 00:10:33 +08:00
Sebastien Bourdeauducq ab90fc88f6 wfvm: disable SSH host key warning messages 2020-06-17 23:42:22 +08:00
Sebastien Bourdeauducq 0f99ffc583 wfvm: use sftp instead of scp
scp is bogged down transferring the 13k files of the Visual Studio pile of garbage.
2020-06-17 23:40:49 +08:00
Sebastien Bourdeauducq 465cc193ec wfvm: add official cmake msi 2020-06-17 21:51:36 +08:00
Sebastien Bourdeauducq a5b336f63c wfvm: add MSVC layer 2020-06-17 17:45:57 +08:00
Sebastien Bourdeauducq aa76904361 wfvm: fix indentation 2020-06-17 17:08:35 +08:00
Sebastien Bourdeauducq 3d41477178 wfvm: support transferring folders recursively 2020-06-17 17:02:24 +08:00
Sebastien Bourdeauducq 3e19ee59c9 nixops: enable fish-nix-shell on rpi 2020-06-17 12:31:16 +08:00
Sebastien Bourdeauducq 7ac26d6348 nixops: disable mutableUsers 2020-06-17 12:29:56 +08:00
Sebastien Bourdeauducq a676854640 nixops: add harry to wireshark group 2020-06-17 12:23:58 +08:00
Sebastien Bourdeauducq 6437ef3070 nixbld: cleanup system packages 2020-06-17 12:23:37 +08:00
Sebastien Bourdeauducq dd688f7c11 conda: fix 40311dc33 2020-06-16 19:50:13 +08:00
Sebastien Bourdeauducq 5b5742c3f0 wfvm: upgrade Anaconda
The previous version craps out when installing sipyco from a channel (but not from a file, go figure.)
2020-06-16 19:46:50 +08:00
Sebastien Bourdeauducq 96ba1fab12 wfvm: autologin user
This makes manual testing of GUI applications easier.
2020-06-16 19:06:20 +08:00
Sebastien Bourdeauducq 40311dc33d conda: add numpy dependency to sipyco 2020-06-16 17:33:16 +08:00
Sebastien Bourdeauducq dc8df8660a conda-windows: build llvmlite-artiq 2020-06-16 16:23:47 +08:00
Sebastien Bourdeauducq 20925a3d8d conda-windows: build llvm-or1k 2020-06-16 15:32:48 +08:00
Sebastien Bourdeauducq 90150c7dbe wfvm: install msys mingw make and cmake 2020-06-16 15:14:50 +08:00
Sebastien Bourdeauducq d407eee013 wfvm: revert accidentally committed part of f464b61290 2020-06-16 14:49:16 +08:00
Sebastien Bourdeauducq 4272fe445c conda-windows: clean up msys path 2020-06-16 14:05:47 +08:00
Sebastien Bourdeauducq 5be1c8aa4a wfvm: make everything 64-bit 2020-06-16 13:29:40 +08:00
Sebastien Bourdeauducq 978ea89fe0 wfvm: install cmake in msys2 packages 2020-06-16 13:16:03 +08:00
Sebastien Bourdeauducq f464b61290 conda-windows: fix binutils target handling 2020-06-16 12:52:42 +08:00
Sebastien Bourdeauducq d75e222bfc conda-windows: add libiconv dependency to binutils 2020-06-16 12:44:57 +08:00
Sebastien Bourdeauducq 448905f06e conda-windows: do not include binutils source in recipe
Otherwise conda includes it in the final package and bloats it.
2020-06-15 20:20:40 +08:00
Sebastien Bourdeauducq 7e50d7de1c conda-windows: build binutils via WFVM 2020-06-15 20:16:11 +08:00
Sebastien Bourdeauducq 5ab186e3dc wfvm: allow network access in SSH demo 2020-06-15 20:16:11 +08:00
Sebastien Bourdeauducq 0ba8000660 wfvm: fix 'protocol error: filename does not match request' in win-get 2020-06-15 20:16:11 +08:00
Sebastien Bourdeauducq 38d7c89a8b wfvm: fix QEMU not found in wfvm-run 2020-06-15 20:16:11 +08:00
Sebastien Bourdeauducq 72357a62f1 wfvm: make demo image more like default 2020-06-15 20:16:11 +08:00
Sebastien Bourdeauducq cb359a0ceb rpi: use upstream kernel 2020-06-15 18:13:31 +08:00
Sebastien Bourdeauducq b1bb414a74 nixops: install chromium 2020-06-15 16:55:34 +08:00
Sebastien Bourdeauducq 17b8869da2 nixbld: remove yubico otp 2020-06-15 16:55:34 +08:00
Sebastien Bourdeauducq dcb8e499df wfvm: automate make_msys_packages.sh 2020-06-15 14:05:14 +08:00
Sebastien Bourdeauducq 107340b08a wfvm: add win-get 2020-06-15 14:05:14 +08:00
Sebastien Bourdeauducq ded12b51fd wfvm: set default windows image parameters 2020-06-15 14:05:14 +08:00
Sebastien Bourdeauducq cc37c8232d wfvm: improve SSH use 2020-06-15 14:05:14 +08:00
Sebastien Bourdeauducq 876f278fdb wfvm: use '-display none' instead of '-nographic' 2020-06-15 14:05:14 +08:00
Sebastien Bourdeauducq 873b2a0287 nixops,nixbld: update SSH keys 2020-06-15 00:32:34 +08:00
Sebastien Bourdeauducq 4510ae7552 wfvm: reorganize, add demo-ssh 2020-06-15 00:29:01 +08:00
Sebastien Bourdeauducq 18f84a65c6 wfvm: remove unnecessary HOME 2020-06-15 00:29:01 +08:00
Sebastien Bourdeauducq cc14162e60 wfvm: cleanup, move QEMU netdev settings out of defaults 2020-06-15 00:29:01 +08:00
Sebastien Bourdeauducq 70c6a212e2 nixops: yubikey piv auth 2020-06-14 22:52:17 +08:00
Sebastien Bourdeauducq cfc20a13c5 nixops: use git for nixos-unstable instead of (stale) channel 2020-06-14 22:51:00 +08:00
Sebastien Bourdeauducq 8fc3860e9d conda-channel: create win-64 output 2020-06-14 22:50:02 +08:00
Sebastien Bourdeauducq a9830e0a51 wfvm: remove direnv file (accidentally committed?) 2020-06-14 21:59:38 +08:00
Sebastien Bourdeauducq 7c758967e0 wfvm: remove more dead code 2020-06-14 17:08:18 +08:00
Sebastien Bourdeauducq 996802257d wfvm: clean up nix imports 2020-06-14 17:06:03 +08:00
Sebastien Bourdeauducq 446dbbfbf2 wfvm: remove more dead code 2020-06-14 17:05:28 +08:00
Sebastien Bourdeauducq 0a2e7dae93 wfvm: remove dead code 2020-06-14 16:57:59 +08:00
Sebastien Bourdeauducq 768d38db46 wfvm: remove installation 'settling' nonsense
Corruption was caused by the VM being killed instead of cleanly shut down.
2020-06-14 16:47:55 +08:00
Sebastien Bourdeauducq aa0e0517c2 wfvm: wait for VM to terminate instead of killing it 2020-06-14 12:23:22 +08:00
Sebastien Bourdeauducq 10bb7df7ed wfvm: reorganize 2020-06-14 12:23:22 +08:00
Sebastien Bourdeauducq a808a5d090 wfvm: install MSYS compiler packages 2020-06-14 12:23:22 +08:00
Sebastien Bourdeauducq d652347dc7 nixbld: remove obsolete iwlwifi-related firmware override 2020-06-14 00:40:30 +08:00
Sebastien Bourdeauducq 596f4cf4b9 nixbld: unbreak hydra sysbuild 2020-06-14 00:37:41 +08:00
Sebastien Bourdeauducq 088403cf6f wfvm: remove duplicated SSH code 2020-06-13 18:57:50 +08:00
Sebastien Bourdeauducq 75c44b0369 wfvm: install MSYS2 2020-06-13 18:57:50 +08:00
Sebastien Bourdeauducq 72d155c047 wfvm: Use OpenSSH instead of Paramiko
The Paramiko hack does not stream stdout/stderr and makes debugging or using expect problematic.
2020-06-13 18:57:50 +08:00
Sebastien Bourdeauducq 22a8a5ed92 wfvm: let layers have build inputs 2020-06-13 18:57:50 +08:00
Sebastien Bourdeauducq b8a7f84483 wfvm: avoid copying large anaconda installer file 2020-06-13 18:57:50 +08:00
Sebastien Bourdeauducq 40e8cc8407 add wfvm 2020-06-13 18:57:50 +08:00
Sebastien Bourdeauducq b6c186b632 nixbld: use own DNS resolver 2020-06-13 13:58:26 +08:00
Sebastien Bourdeauducq 98e6c29401 vivado: update to 2020.1 2020-06-11 13:23:15 +08:00
Sebastien Bourdeauducq e15a0235a3 Revert "migen: add patch to limit vivado threads to 1"
This reverts commit 8f7308b036.
2020-06-11 08:18:02 +08:00
Astro 8f7308b036 migen: add patch to limit vivado threads to 1 2020-06-10 19:42:17 +02:00
Sebastien Bourdeauducq dc2c495293 conda: update artiq dependencies 2020-06-10 21:46:36 +08:00
Sebastien Bourdeauducq 5bc76b0959 artiq-full: disable berkeley build 2020-06-10 18:05:26 +08:00
Sebastien Bourdeauducq 27c3940955 libartiq-support: no more build in lit.cfg 2020-06-10 17:16:01 +08:00
Sebastien Bourdeauducq 6313687278 remove artiq dependency on rustc 2020-06-10 17:09:43 +08:00
Sebastien Bourdeauducq 1ffce94d92 conda: handle architecture-dependent packages in channel 2020-06-10 12:05:01 +08:00
Sebastien Bourdeauducq f1742db24f conda: add llvmlite-artiq 2020-06-10 11:53:43 +08:00
Sebastien Bourdeauducq c7fa00304b conda: also show architecture-dependent packages in build products 2020-06-10 11:44:19 +08:00
Sebastien Bourdeauducq 649124a463 conda: add quamash
Closes #24
2020-06-10 11:43:41 +08:00
Sebastien Bourdeauducq 1f4639c7e4 conda: fix system shared libs not found in conda-build (#24) 2020-06-10 11:43:09 +08:00
Sebastien Bourdeauducq 0292090670 conda: include ARM support in llvm-or1k 2020-06-09 18:29:40 +08:00
Sebastien Bourdeauducq 20c2871896 conda: build llvm-or1k 2020-06-09 18:21:54 +08:00
Sebastien Bourdeauducq 9e900d321e conda: add binutils.nix 2020-06-09 17:30:40 +08:00
Sebastien Bourdeauducq e9c07a8985 conda: build binutils 2020-06-09 17:29:38 +08:00
Sebastien Bourdeauducq ef8664443a artiq-full: fix more conda paths 2020-06-09 16:24:14 +08:00
Sebastien Bourdeauducq ffaa3f74ec artiq-full: fix conda paths 2020-06-09 16:11:08 +08:00
Sebastien Bourdeauducq 37e70bbda1 conda: build asyncserial 2020-06-09 16:08:14 +08:00
Sebastien Bourdeauducq 68078d38d8 artiq: use nixpkgs levenshtein 2020-06-09 15:52:36 +08:00
Sebastien Bourdeauducq b7d872a720 nixops: disable powerManagement 2020-06-09 15:48:47 +08:00
Sebastien Bourdeauducq bf9f5804e2 nixops: install gitAndTools.gitFull 2020-06-09 15:48:35 +08:00
Sebastien Bourdeauducq f03d0370db artiq: use nixpkgs quamash 2020-06-09 15:47:35 +08:00
Sebastien Bourdeauducq 7ab028deb6 conda: build pythonparser 2020-06-09 15:43:18 +08:00
Sebastien Bourdeauducq 0581ac7b69 conda: build bscan-spi-bitstreams 2020-06-09 15:29:18 +08:00
Sebastien Bourdeauducq 245b96a844 conda: remove unneeded PYTHON env var 2020-06-09 15:12:37 +08:00
Sebastien Bourdeauducq 456a21d363 conda: update system deps
List copied from nixpkgs.conda.
2020-06-09 15:12:11 +08:00
Sebastien Bourdeauducq 5d8ffd44ef move conda files to dedicated folder 2020-06-09 14:30:23 +08:00
Sebastien Bourdeauducq 38eff183a8 artiq-full: build sydney 2020-06-08 18:46:02 +08:00
Sebastien Bourdeauducq 2edf38876d nixops: enable SSH agent with opensc on desktop machines 2020-06-04 19:34:55 +08:00
Sebastien Bourdeauducq d6691c2e68 gluelogic: build Fastino gateware 2020-05-31 16:57:54 +08:00
Sebastien Bourdeauducq e2c1948931 cpld -> gluelogic 2020-05-31 16:47:30 +08:00
Sebastien Bourdeauducq 6ac087c823 artiq: move stable to nixos 20.03 2020-05-30 14:20:25 +08:00
Sebastien Bourdeauducq a7ebb7c834 Revert "artiq-full: simpler workaround for https://github.com/NixOS/nixpkgs/pull/85763"
Fixed upstream.

This reverts commit aa21bde6e5.
2020-05-30 14:18:48 +08:00
Sebastien Bourdeauducq 3801458324 artiq-full: restore ist 2020-05-30 14:10:23 +08:00
Sebastien Bourdeauducq 47e7231ee0 nixbld: add DNS entry for metlino 2020-05-29 15:45:20 +08:00
Sebastien Bourdeauducq 4b29022876 misoc: bump 2020-05-29 15:41:03 +08:00
Robert Jördens 16fdb7465d luh3: add 2020-05-28 16:54:10 +02:00
Sebastien Bourdeauducq 6acdcdb180 artiq-full: build osaka 2020-05-28 17:20:42 +08:00
Sebastien Bourdeauducq 46738cea8c nixops: add dsleung user 2020-05-28 17:19:29 +08:00
Sebastien Bourdeauducq 7c9068c9cc nixops: disable gnome web browser 2020-05-28 17:19:09 +08:00
Sebastien Bourdeauducq 3e4034f936 nixops: add new desktop machines 2020-05-28 17:17:41 +08:00
Sebastien Bourdeauducq 170e2b3dae artiq-full: add conda package for kasli-tester 2020-05-26 17:00:25 +08:00
Sebastien Bourdeauducq aa21bde6e5 artiq-full: simpler workaround for https://github.com/NixOS/nixpkgs/pull/85763 2020-05-26 15:50:49 +08:00
Sebastien Bourdeauducq e9d050d1e1 Revert "artiq-full: simpler workaround for https://github.com/NixOS/nixpkgs/pull/85763"
Still breaks hydra-eval-job.

This reverts commit ca4f299ab9.
2020-05-26 15:45:07 +08:00
Sebastien Bourdeauducq ca4f299ab9 artiq-full: simpler workaround for https://github.com/NixOS/nixpkgs/pull/85763 2020-05-26 15:42:44 +08:00
Sebastien Bourdeauducq f9c728aab7 Revert "artiq-full: work around https://github.com/NixOS/nixpkgs/pull/85763"
Makes hydra-eval-job OOM for some reason.

This reverts commit ced0ef13b3.
2020-05-26 15:38:06 +08:00
Sebastien Bourdeauducq ced0ef13b3 artiq-full: work around https://github.com/NixOS/nixpkgs/pull/85763 2020-05-26 15:32:26 +08:00
Sebastien Bourdeauducq c4eae355d3 add rpi-5 2020-05-25 16:31:04 +08:00
Sebastien Bourdeauducq a110358e37 nixops: yubikey udev 2020-05-21 12:35:46 +08:00
Sebastien Bourdeauducq 00ccf48332 nixops: update SSH settings for yubikey 2020-05-21 12:25:12 +08:00
Sebastien Bourdeauducq 2f1b8ad0f4 enable gitea email notifications 2020-05-21 12:24:38 +08:00
Robert Jördens c3089d0730 uaarhus, ugranada: add 2020-05-19 17:15:39 +02:00
Sebastien Bourdeauducq db65504dab migen: bump 2020-05-14 15:09:25 +08:00
Sebastien Bourdeauducq 7bd6523807 nixops: add zeus machine 2020-05-13 14:21:51 +08:00
Sebastien Bourdeauducq cc8f6d9ae8 nixops: add udev rules for saleae + oceanoptics 2020-05-13 14:21:34 +08:00
Sebastien Bourdeauducq 86907b40cc nixops: more dev packages 2020-05-13 14:21:14 +08:00
Sebastien Bourdeauducq d05caf3468 nixops: install mode dev tools on desktop 2020-05-10 15:45:26 +08:00
Sebastien Bourdeauducq bd33e26a40 nixops: common users, gnome, disable SSH password, light config 2020-05-09 21:52:00 +08:00
Sebastien Bourdeauducq 95ccdcc5be misoc: bump 2020-05-09 16:43:58 +08:00
Sebastien Bourdeauducq 43967e2324 migen: bump 2020-05-07 12:57:18 +08:00
Sebastien Bourdeauducq 6a1476405d nixops: create occheung account 2020-05-07 12:55:08 +08:00
Sebastien Bourdeauducq 19310060e0 nixops: prevent cups from creating broken and conflicting printer entries
https://askubuntu.com/questions/345083/how-do-i-disable-automatic-remote-printer-installation
2020-05-03 14:15:20 +08:00
Sebastien Bourdeauducq 9695aaf74f zynq: build experiments again 2020-05-03 09:46:28 +08:00
Sebastien Bourdeauducq dc1e0cf3d7 rpi: update users 2020-05-03 09:43:52 +08:00
Astro 1af80bace3 zynq: syntax 2020-05-03 01:49:57 +02:00
Astro 5a5c832de2 zynq: remove args 2020-05-03 01:45:54 +02:00
Astro 1bfe9be055 zynq: try to filter for "zc706-" jobs 2020-05-03 01:36:49 +02:00
Sebastien Bourdeauducq bc03ef956e hydra: rename zc706 to zynq 2020-05-01 14:11:02 +08:00
Sebastien Bourdeauducq bb1658990a zc706: works in nix-build. hydra still breaks for obscure reason 2020-05-01 11:56:53 +08:00
Sebastien Bourdeauducq b1accc9810 zc706: trying to understand evaluation problems... 2020-05-01 11:51:10 +08:00
Sebastien Bourdeauducq a6d5f444d1 zc706: trying to understand evaluation problems... 2020-05-01 11:40:43 +08:00
Sebastien Bourdeauducq 96578b9ad7 zc706: trying to understand evaluation problems... 2020-05-01 11:40:10 +08:00
Sebastien Bourdeauducq 69390df36d zc706: trying to understand evaluation problems... 2020-05-01 11:39:02 +08:00
Sebastien Bourdeauducq 1110d6fbb8 zc706: trying to understand evaluation problems... 2020-05-01 11:37:36 +08:00
Sebastien Bourdeauducq d11d73c246 zc706: fix mapAttrs 2020-05-01 11:35:05 +08:00
Sebastien Bourdeauducq 06757b311a zc706: build artiq-zynq 2020-05-01 11:30:01 +08:00
Sebastien Bourdeauducq 556fda274d update nmigen.org redirect 2020-04-29 16:20:04 +08:00
Sebastien Bourdeauducq 1e568b244b desktop: remove whois 2020-04-29 15:23:20 +08:00
Sebastien Bourdeauducq cfc843819d nixops: create pca006132 account 2020-04-27 16:30:50 +08:00
Sebastien Bourdeauducq 50f7c293e8 nixbld: fix recurring acme certificate permission problems 2020-04-27 11:59:08 +08:00
Sebastien Bourdeauducq 3cface01af artiq-comtools: bump 2020-04-25 12:47:23 +08:00
Sebastien Bourdeauducq aac80b9f84 misoc: bump 2020-04-23 23:07:42 +08:00
Sebastien Bourdeauducq 38a66c9d41 migen: bump 2020-04-23 23:05:59 +08:00
Sebastien Bourdeauducq fa7c3d2454 nixpkgs 20.03 updates 2020-04-20 17:51:38 +08:00
Sebastien Bourdeauducq 5dd966ceb0 remove pyftdi (upstream nixpkgs) 2020-04-20 17:49:45 +08:00
Sebastien Bourdeauducq f7f3ec9a37 nixbld: update hydra 2020-04-20 15:37:46 +08:00
Sebastien Bourdeauducq 4b92e7c00f nixbld: remove munin workaround (no longer needed on 20.03) 2020-04-20 14:24:45 +08:00
Sebastien Bourdeauducq 7f6d54c6cd upgrade to nixos 20.03 2020-04-20 14:21:48 +08:00
Sebastien Bourdeauducq b37f00336e artiq-full: build oklahoma 2020-04-18 18:35:03 +08:00
Sebastien Bourdeauducq 55593d3210 artiq-full: rm archived systems 2020-04-17 21:21:03 +08:00
Sebastien Bourdeauducq 9c86d4b797 nixops: disable fish-nix-shell on rpi (buggy) 2020-04-16 16:30:41 +08:00
Sebastien Bourdeauducq d7dbb1b1c1 nixbld: plugdev permissions for common devices 2020-04-16 16:14:35 +08:00
Sebastien Bourdeauducq aea9642136 nixops: add cnc machine 2020-04-16 13:08:51 +08:00
Sebastien Bourdeauducq c9137824e9 nixops: cleanup 2020-04-16 13:08:33 +08:00
Sebastien Bourdeauducq d939fd7c1a nixops: update SSH keys 2020-04-16 13:08:17 +08:00
Sebastien Bourdeauducq 6e8e2824a9 nixops: use fish and fish-nix-shell consistently 2020-04-16 13:06:23 +08:00
Astro 9617de32f9 mattermost-github-integration: pin src rev 2020-04-16 03:00:29 +02:00
Sebastien Bourdeauducq a8198e9eea nixbld: add shop email backend 2020-04-15 21:15:26 +08:00
Sebastien Bourdeauducq ec732461cb nixops/desktop: update package collection 2020-04-12 10:03:35 +08:00
Sebastien Bourdeauducq 2b08520101 nixbld: add second ZC706 IP address 2020-04-11 22:10:20 +08:00
Sebastien Bourdeauducq b13b90f661 migen: bump 2020-04-11 18:00:25 +08:00
Sebastien Bourdeauducq 61be83c730 migen-axi: bump 2020-04-10 17:50:41 +08:00
Sebastien Bourdeauducq e8342cdf6b misoc: bump 2020-04-10 17:50:34 +08:00
Sebastien Bourdeauducq 57891b5cae migen-axi: fix compat with nixpkgs 19.09 2020-04-10 17:12:50 +08:00
Sebastien Bourdeauducq 58f507580a zc706: build on nixos 20.03 2020-04-10 16:51:42 +08:00
Sebastien Bourdeauducq 438123f76e migen-axi: bump 2020-04-10 15:47:39 +08:00
Sebastien Bourdeauducq a59a543f81 artiq-full: build no 2020-04-04 20:27:04 +08:00
Sebastien Bourdeauducq 179d74a137 nixbld: setup second red pitaya 2020-04-04 18:03:48 +08:00
Sebastien Bourdeauducq 0c6418755e build ARTIQ beta against nixpkgs 20.03 2020-04-04 13:04:56 +08:00
Sebastien Bourdeauducq 7d740fd464 lock cargo and cargo-vendor
With nixpkgs 20.03, the provided cargo package can no longer use the old rustc-or1k.
2020-04-04 13:02:18 +08:00
Sebastien Bourdeauducq 6888f2dfd2 urukul: bump CPLD release 2020-04-03 17:30:00 +08:00
Sebastien Bourdeauducq 9015e109c0 artiq-full: build new systems 2020-04-01 21:52:13 +08:00
Sebastien Bourdeauducq 49f5af3eca desktop: add astro user 2020-03-31 14:11:58 +08:00
Sebastien Bourdeauducq bad4c09735 artiq-full: disable archived variants 2020-03-27 13:27:23 +08:00
Sebastien Bourdeauducq e7b886f07a remove sjm user 2020-03-27 13:14:22 +08:00
Astro 5c43dbd0ea stm32: update rust-nightly 2020-03-23 18:42:30 +01:00
Stewart Mackenzie fafc71610d added ustc2 2020-03-19 17:32:40 +08:00
Sebastien Bourdeauducq dec885c896 set stabilizer IP address within M-Labs network 2020-03-17 19:43:22 +08:00
Sebastien Bourdeauducq b72369d457 nixops: add rj account to rpi 2020-03-17 13:26:09 +08:00
Sebastien Bourdeauducq 57715ff325 nixbld: static IP for Red Pitaya 2020-03-17 13:25:46 +08:00
Sebastien Bourdeauducq 3dfe8d9902 artiq-full: hw2 is ARTIQ-6+ only (Mirny) 2020-03-16 19:03:41 +08:00
Robert Jördens 78c3352fb9 artiq-full: add olomouc 2020-03-16 11:18:19 +01:00
Sebastien Bourdeauducq bb8e95a805 rpi: add vince account 2020-03-14 11:13:04 +08:00
Robert Jördens c6724c4884 artiq-full: add uamsterdam 2020-03-11 11:50:20 +01:00
Sebastien Bourdeauducq a90944bb5f disable mitll/mitll2 builds 2020-03-11 10:37:33 +08:00
Robert Jördens 687a09d957 femto[123]: add 2020-03-08 19:21:11 +01:00
Sebastien Bourdeauducq 37e464755f nixops: update desktop accounts 2020-03-07 21:09:35 +08:00
Sebastien Bourdeauducq bc876fa374 unlb -> unlv 2020-03-05 14:09:54 +08:00
Stewart Mackenzie 010de9691e added unlb 2020-03-04 17:29:46 +08:00
Stewart Mackenzie 6db4ccfaa4 added hw2 master + satellite 2020-03-04 17:29:38 +08:00
Stewart Mackenzie 36fa4372cd added berkeley3 2020-03-04 17:28:52 +08:00
Stewart Mackenzie fccd9ea62a added liaf 2020-02-19 14:37:59 +08:00
Robert Jördens 8e36ea82a6 artiq-full: add vtt-mikes 2020-02-14 17:17:32 +01:00
Stewart Mackenzie 46624ad101 rename grif -> griffith 2020-02-09 18:13:43 +08:00
Stewart Mackenzie 6b8e2171fc artiq_full: add grif 2020-02-07 18:44:32 +08:00
Sebastien Bourdeauducq 8d29d163f2 built mitll4 2020-02-06 16:59:37 +08:00
Sebastien Bourdeauducq b0407a3775 migen: bump 2020-02-05 00:08:07 +08:00
Sebastien Bourdeauducq 9f5be63f8e migen: bump 2020-02-04 17:43:27 +08:00
Sebastien Bourdeauducq 0217471462 built mitll3 2020-01-31 17:26:19 +08:00
Sebastien Bourdeauducq 9ee661049c use temporary redirect code 2020-01-30 11:33:51 +08:00
Sebastien Bourdeauducq 125654bcce redirect nmigen domain to github repos 2020-01-30 11:31:21 +08:00
Sebastien Bourdeauducq 3091d20e23 fix previous commit 2020-01-29 10:01:34 +08:00
Sebastien Bourdeauducq 29da8f5ab2 bump toptica-lasersdk-artiq 2020-01-27 22:59:38 +08:00
Astro 99fd8085ed hydra/artiq: add zc706 2020-01-26 01:39:44 +01:00
Sebastien Bourdeauducq 987d1d93d3 build rice 2020-01-23 19:34:43 +08:00
Sebastien Bourdeauducq 102341dcf1 add builds for new systems 2020-01-21 15:46:02 +08:00
Sebastien Bourdeauducq 14fe3d5a56 revert accidentally committed part of beee821588 2020-01-21 13:55:18 +08:00
Sebastien Bourdeauducq d11f13ce3a jesd204: bump 2020-01-20 20:25:25 +08:00
Sebastien Bourdeauducq 7efd520ba5 jesd204: bump 2020-01-20 15:57:49 +08:00
Sebastien Bourdeauducq 4c6daeda64 migen: bump 2020-01-20 13:00:31 +08:00
Sebastien Bourdeauducq 369c167327 jesd204: bump 2020-01-20 12:50:10 +08:00
Sebastien Bourdeauducq d26906d6d0 bump migen and misoc 2020-01-18 10:26:16 +08:00
Robert Jördens 661f0ba142 artiq-full: add luh2 2020-01-06 18:07:13 +01:00
Sebastien Bourdeauducq f927de3280 openocd: use --disable-werror
Unbreaks build with recent GCC.
2020-01-06 12:33:30 +08:00
Sebastien Bourdeauducq beee821588 nixops: update permissions 2020-01-06 10:53:45 +08:00
Sebastien Bourdeauducq 2ba53bff9c rpi: remove QF users 2020-01-04 18:32:36 +08:00
Sebastien Bourdeauducq df6906bf9b Revert "rpi: install blackmagic and dfu-util"
blackmagic breaks on rpi

This reverts commit 0ad6609bf3.
2020-01-02 18:53:46 +08:00
Sebastien Bourdeauducq 0ad6609bf3 rpi: install blackmagic and dfu-util 2020-01-02 18:50:48 +08:00
Sebastien Bourdeauducq e795d704d6 nixbld: another attempt at using a less shitty wifi card 2020-01-02 18:49:07 +08:00
Sebastien Bourdeauducq 58bd5c697e nixbld: try another workaround for wifi bugs 2020-01-02 17:18:02 +08:00
Sebastien Bourdeauducq dc7bab3abf rpi: add sjm user 2020-01-02 00:55:34 +08:00
Sebastien Bourdeauducq f6d4bc3d83 nixbld: try new workaround for Linux wifi shittiness
The Linux wifi AP support is dire:
* rtl8192cu AP mode loses packets and connections
* rtl8xxxu does not support AP mode
* ath10k firmware crashes from time to time
* iwlwifi with hostapd 2.9 causes kernel crashes every few days with NULL pointer dereference

It seems iwlwifi with hostapd 2.8 could be the least bad option.
Revert to that version and disable problematic (insecure) CONFIG_EAP_PWD.
2019-12-30 18:23:54 +08:00
Sebastien Bourdeauducq 49f014fb67 nixbld: stop using iwlwifi garbage
It just won't stop crashing.
2019-12-25 17:53:03 +08:00
Sebastien Bourdeauducq e34a070124 nixbld: lock Linux kernel version to 4.19.79
On newer kernel versions (somewhere before 4.19.89) the shitty iwlwifi driver would crash
the machine every few days with a message like:

Dec 25 12:22:25 nixbld kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000068
Dec 25 12:22:25 nixbld kernel: PGD 0 P4D 0
Dec 25 12:22:25 nixbld kernel: Oops: 0002 [#1] SMP PTI
Dec 25 12:22:25 nixbld kernel: CPU: 2 PID: 15625 Comm: kworker/2:1 Not tainted 4.19.90 #1-NixOS
Dec 25 12:22:25 nixbld kernel: Hardware name: EVGA INTERNATIONAL CO.,LTD Default string/121-KS-E375, BIOS 1.07 03/15/2018
Dec 25 12:22:25 nixbld kernel: Workqueue: events iwl_mvm_add_new_dqa_stream_wk [iwlmvm]
Dec 25 12:22:25 nixbld kernel: RIP: 0010:iwl_trans_pcie_txq_enable+0x5b/0x460 [iwlwifi]
Dec 25 12:22:25 nixbld kernel: Code: 63 c6 4c 8b ac c7 40 91 00 00 f0 48 0f ab 87 40 a1 00 00 73 0d 80 3d 6b 65 03 00 00 0f 84 cb 03 00 00 44 89 c7 e8 15 c7 14 ce <49> 89 45 68 4d 85 e4 0f 84 eb 02 00>
Dec 25 12:22:25 nixbld kernel: RSP: 0018:ffffa47386937c30 EFLAGS: 00010202
Dec 25 12:22:25 nixbld kernel: RAX: 0000000000002710 RBX: 000000000000001f RCX: 0000000000000000
Dec 25 12:22:25 nixbld kernel: RDX: 3ffffffffffffffe RSI: 000000000000001f RDI: 0000000000002710
Dec 25 12:22:25 nixbld kernel: RBP: 0000000000000000 R08: 0000000000002710 R09: 0000000000000001
Dec 25 12:22:25 nixbld kernel: R10: 0000000000000004 R11: ffff916f0a199ff0 R12: 0000000000000000
Dec 25 12:22:25 nixbld kernel: R13: 0000000000000000 R14: 0000000000000000 R15: ffff916f08480018
Dec 25 12:22:25 nixbld kernel: FS:  0000000000000000(0000) GS:ffff916f36280000(0000) knlGS:0000000000000000
Dec 25 12:22:25 nixbld kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Dec 25 12:22:25 nixbld kernel: CR2: 0000000000000068 CR3: 0000000834e0a004 CR4: 00000000003606e0
Dec 25 12:22:25 nixbld kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Dec 25 12:22:25 nixbld kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Dec 25 12:22:25 nixbld kernel: Call Trace:
Dec 25 12:22:25 nixbld kernel:  iwl_mvm_enable_txq+0x230/0x3b0 [iwlmvm]
Dec 25 12:22:25 nixbld kernel:  ? iwl_mvm_add_new_dqa_stream_wk+0x897/0x13b0 [iwlmvm]
Dec 25 12:22:25 nixbld kernel:  iwl_mvm_add_new_dqa_stream_wk+0x897/0x13b0 [iwlmvm]
Dec 25 12:22:25 nixbld kernel:  ? entry_SYSCALL_64_stage2+0xf/0x10
Dec 25 12:22:25 nixbld kernel:  ? __switch_to_asm+0x41/0x70
Dec 25 12:22:25 nixbld kernel:  ? __switch_to_asm+0x41/0x70
Dec 25 12:22:25 nixbld kernel:  ? __switch_to_asm+0x41/0x70
Dec 25 12:22:25 nixbld kernel:  ? __switch_to+0x8c/0x440
Dec 25 12:22:25 nixbld kernel:  ? __switch_to_asm+0x41/0x70
Dec 25 12:22:25 nixbld kernel:  ? __switch_to_asm+0x35/0x70
Dec 25 12:22:25 nixbld kernel:  process_one_work+0x206/0x400
Dec 25 12:22:25 nixbld kernel:  worker_thread+0x2d/0x3e0
Dec 25 12:22:25 nixbld kernel:  ? process_one_work+0x400/0x400
Dec 25 12:22:25 nixbld kernel:  kthread+0x112/0x130
Dec 25 12:22:25 nixbld kernel:  ? kthread_bind+0x30/0x30
Dec 25 12:22:25 nixbld kernel:  ret_from_fork+0x35/0x40
2019-12-25 14:39:31 +08:00
Sebastien Bourdeauducq bde01362f7 rpi: install telnet 2019-12-21 10:41:50 +08:00
Sebastien Bourdeauducq b817b63bcc migen: bump 2019-12-20 15:21:44 +08:00
Sebastien Bourdeauducq b466d410ec build Mirny CPLD image 2019-12-19 12:51:52 +08:00
Sebastien Bourdeauducq 1f2eabed65 nixbld: fix wifi network 2019-12-19 11:47:38 +08:00
Sebastien Bourdeauducq 8fddcd68e8 nixbld: update mail server 2019-12-18 16:26:10 +08:00
Sebastien Bourdeauducq fbd2a521e1 Revert "windows tests: enable socat debug output"
This corrupted communication with the core device and caused analyzer tests to fail.

This reverts commit bdaf824f21.
2019-12-18 11:10:21 +08:00
Robert Jördens 7f1bd87cfe artiq-full: freiburg1 2019-12-17 18:17:46 +01:00
Astro dd61844e34 windows tests: increase boot wait delay
Perhaps it just needs more time when there is load on the host? Related
to Gitea issue #22
2019-12-16 22:51:30 +01:00
Sebastien Bourdeauducq 6ca5ab5aac migen: bump 2019-12-16 11:41:56 +08:00
Astro bdaf824f21 windows tests: enable socat debug output
Related to Gitea issue #22
2019-12-12 23:20:15 +01:00
Sebastien Bourdeauducq 7a2268490d sipyco: bump 2019-12-12 10:43:14 +08:00
Sebastien Bourdeauducq 91f36d4ca5 artiq-full: build hw 2019-12-11 16:24:05 +08:00
Sebastien Bourdeauducq 107060f50c nixbld: remove adoptopenjdk-openj9-bin-11
This is for running NATview, but since there are fewer uTCA issues with Sayma v2 this is not really necessary anymore.

And for power control, STM32 + SSR works better than uTCA.
2019-12-10 11:59:29 +08:00
Sebastien Bourdeauducq e6488e16d2 nixbld: boards are no longer connected directly 2019-12-10 11:58:52 +08:00
Sebastien Bourdeauducq 6680dc6c34 nixbld: remove whitequark account 2019-12-10 11:52:05 +08:00
Sebastien Bourdeauducq 76d606c43e typo 2019-12-04 19:37:24 +08:00
Sebastien Bourdeauducq 5f031e78ac use pkgs.lib.strings.versionAtLeast 2019-12-03 12:01:42 +08:00
Sebastien Bourdeauducq ddaaaa543b only build bonn1 on ARTIQ-6 2019-12-03 11:46:01 +08:00
Robert Jördens 5c41551a48 artiq-full: add bonn1 drtio system 2019-12-02 15:35:31 +01:00
Robert Jördens 89bee91a69 artiq-full: add bonn1master/satellite 2019-12-02 11:32:36 +01:00
Sebastien Bourdeauducq b0b78f037d rpi: add jerry account 2019-12-01 18:50:01 +08:00
Sebastien Bourdeauducq e283196520 highfinesse-net: bump 2019-11-26 23:28:45 +08:00
Robert Jördens 8c03c73522 artiq-full: innsbruck -> innsbruck2 2019-11-26 11:58:29 +01:00
Sebastien Bourdeauducq d88137f8b7 gitea: enable emails (and password recovery) 2019-11-25 21:58:49 +08:00
Sebastien Bourdeauducq 7d7813555d artiq-full: build mit 2019-11-23 10:53:12 +08:00
Sebastien Bourdeauducq 4bd0495834 nixbld: set up rpi SSH port redirects for IPv4 users 2019-11-20 19:29:35 +08:00
Sebastien Bourdeauducq 5b06c68583 rpi: add florent account 2019-11-20 19:17:16 +08:00
Sebastien Bourdeauducq 3b3371eebf restore ARTIQ-2 manual 2019-11-19 10:18:53 +08:00
Sebastien Bourdeauducq 42c09c01d4 desktop: enable SSH X11 forward 2019-11-18 18:59:07 +08:00
Sebastien Bourdeauducq d16f35b91b rpi: install psmisc 2019-11-18 15:19:55 +08:00
Sebastien Bourdeauducq 596a9bc6b4 customize gitea homepage 2019-11-18 13:48:40 +08:00
Sebastien Bourdeauducq 3d8252acf8 restore ARTIQ-3 manual 2019-11-17 09:33:31 +08:00
Sebastien Bourdeauducq 6c6ad630f9 fix previous commit (again) 2019-11-14 18:33:00 +08:00
Sebastien Bourdeauducq fe805ffa93 fix previous commit 2019-11-14 17:56:19 +08:00
Sebastien Bourdeauducq 303bc7b162 fix beta version marker handling 2019-11-14 17:44:36 +08:00
Sebastien Bourdeauducq 961dcac63d add conda package for toptica-lasersdk-artiq 2019-11-14 17:12:17 +08:00
Sebastien Bourdeauducq e50a89acea build ARTIQ releases 2019-11-14 17:07:46 +08:00
Sebastien Bourdeauducq 9a342421ba artiq: take into account beta version marker 2019-11-14 16:56:36 +08:00
Sebastien Bourdeauducq 26f1418492 urukul: also build release version 2019-11-14 16:34:25 +08:00
Sebastien Bourdeauducq 5797648204 build artiq-comtools 2019-11-14 15:22:17 +08:00
Astro 91182a37dd windows: add sshUnquoted to for interpolated parameters
This partially reverts commit 525b91cb21.
2019-11-14 00:41:42 +01:00
Sebastien Bourdeauducq 184de89074 hut2: bump 2019-11-12 22:18:38 +08:00
Sebastien Bourdeauducq d7ccb02bfc sipyco: bump 2019-11-12 19:50:07 +08:00
Sebastien Bourdeauducq f17599940b sipyco: use timestamp file 2019-11-12 19:37:10 +08:00
Sebastien Bourdeauducq 0136a154a8 fix sipyco doc aliases 2019-11-12 18:34:03 +08:00
Sebastien Bourdeauducq 57b817f07e build sipyco manual 2019-11-12 10:43:50 +08:00
Sebastien Bourdeauducq c16af00977 windows: run sipyco tests 2019-11-10 19:39:30 +08:00
Sebastien Bourdeauducq 525b91cb21 windows: work around $i not working in $ssh 2019-11-10 19:33:21 +08:00
Sebastien Bourdeauducq a4f9732a3d windows: work around scp weirdness 2019-11-10 18:47:39 +08:00
Sebastien Bourdeauducq 63625e74b8 artiq: depend on sipyco 2019-11-10 15:54:02 +08:00
Sebastien Bourdeauducq ebe72e4f51 sipyco: bump 2019-11-10 15:48:03 +08:00
Sebastien Bourdeauducq eae4612ecb conda-artiq-board: BIOS -> bootloader 2019-11-09 18:59:45 +08:00
Sebastien Bourdeauducq 0565ff9819 add metadata to ARTIQ conda package 2019-11-09 18:58:21 +08:00
Sebastien Bourdeauducq 648a1d7f41 artiq-full: build csu 2019-11-08 10:24:52 +08:00
Sebastien Bourdeauducq d84a9ba72d remove unneeded doCheck = false 2019-11-07 19:38:21 +08:00
Sebastien Bourdeauducq 9b0bead69b package sipyco and use for controllers 2019-11-07 19:34:36 +08:00
Sebastien Bourdeauducq e69ddf6c4c nixbld: fix munin 2019-11-07 16:14:01 +08:00
Sebastien Bourdeauducq 430647ef37 rpi: install picocom 2019-11-07 13:19:43 +08:00
Sebastien Bourdeauducq a0d6fbd6ad vivado: update to 2019.2 2019-11-02 11:36:17 +08:00
Sebastien Bourdeauducq 6fd6648132 fix indentation 2019-11-01 11:06:25 +08:00
Sebastien Bourdeauducq a6f8e1a558 stm32: work around hydra restricted mode 2019-11-01 11:04:55 +08:00
Sebastien Bourdeauducq 60e16ada2a artiq: use cargosha256.nix file 2019-11-01 10:28:53 +08:00
Sebastien Bourdeauducq c4835c6be7 stm32: use cargosha256.nix files 2019-11-01 10:13:27 +08:00
Sebastien Bourdeauducq 653cb7ce3b migen: bump 2019-11-01 10:06:01 +08:00
Sebastien Bourdeauducq 618e817c86 rpi: enable wireshark 2019-11-01 09:27:31 +08:00
Sebastien Bourdeauducq c1db80023b nixbld: add kasli-customer DNS entry 2019-10-31 11:14:20 +08:00
Sebastien Bourdeauducq e463b62bfc rpi: add harry account 2019-10-31 10:50:47 +08:00
Sebastien Bourdeauducq 1a8c152326 stabilizer: update cargoSha256 2019-10-31 10:12:13 +08:00
Sebastien Bourdeauducq 891bb0b31f rpi: install screen, gdb, minicom 2019-10-26 18:42:59 +08:00
Robert Jördens c3d6ee5627 artiq-full: build ptbal 2019-10-23 13:21:37 +02:00
Sebastien Bourdeauducq aa6d631863 nixops: set up devboard users 2019-10-22 20:27:02 +08:00
Sebastien Bourdeauducq e4a9bd5d6b artiq-full: remove openocd-aarch64 (now handled via nixops) 2019-10-22 20:13:58 +08:00
Sebastien Bourdeauducq 392e3dcb8e nixbld: use faster rpi for aarch64 builds 2019-10-22 20:10:20 +08:00
Sebastien Bourdeauducq ee60f202b1 nixops: add rpi-3 and rpi-4 2019-10-22 20:09:56 +08:00
Sebastien Bourdeauducq 7167c34bfe nixbld: install nixops, remove virtmanager 2019-10-21 21:38:24 +08:00
Sebastien Bourdeauducq 6b39084e8d add nixops files 2019-10-21 21:26:44 +08:00
Sebastien Bourdeauducq ed516be5ef rpi: install lm_sensors and file 2019-10-21 18:28:14 +08:00
Sebastien Bourdeauducq 379335cc6e nixbld: remove unnecessary NetworkManager setting
We are not using NetworkManager here.
2019-10-21 16:12:57 +08:00
Sebastien Bourdeauducq 833a9c7430 nixbld: add perso.m-labs.hk 2019-10-17 15:17:42 +08:00
Sebastien Bourdeauducq 3aa23cacfc nixbld: fix indentation 2019-10-17 14:36:49 +08:00
Sebastien Bourdeauducq 3d17cacda7 misoc: bump 2019-10-16 18:00:26 +08:00
Sebastien Bourdeauducq 0469ca21da nixbld: get static IPs out of DHCP range, and give them DNS entries 2019-10-16 17:49:00 +08:00
Sebastien Bourdeauducq d77fcf79ef stabilizer: update cargoSha256 2019-10-16 17:27:23 +08:00
Sebastien Bourdeauducq ff09666bfe rpi: disable /boot partition
https://github.com/NixOS/nixpkgs/issues/22014#issuecomment-290152982
2019-10-16 15:48:20 +08:00
Sebastien Bourdeauducq 68534d2ce2 nixbld: IPv6 on internal networks 2019-10-16 13:48:13 +08:00
Sebastien Bourdeauducq e89afabdfb nixbld: isolate wifi network. Closes #20 2019-10-15 19:42:26 +08:00
Sebastien Bourdeauducq dd490121b6 nixbld: filter CUPS access using firewall
CUPS listenAddresses is problematic.
2019-10-15 19:20:32 +08:00
Sebastien Bourdeauducq f3fe798126 nixbld: disable libvirtd (#20) 2019-10-15 17:26:51 +08:00
Robert Jördens 0e9b1b6516 artiq-full: generate vlbai master/satellite ddb 2019-10-15 09:58:02 +02:00
Sebastien Bourdeauducq 1f5ff43846 artiq-full: generate DDB templates for DRTIO systems 2019-10-15 11:16:11 +08:00
Sebastien Bourdeauducq b7bc5ecc84 artiq-full: build new systems 2019-10-10 17:17:19 +08:00
Sebastien Bourdeauducq a2a58f0532 artiq: build for NixOS 19.09 2019-10-10 10:54:03 +08:00
Sebastien Bourdeauducq c0c9af04d4 nixbld: add openhardware.hk site 2019-10-09 21:33:37 +08:00
Sebastien Bourdeauducq a85a16ff73 nixbld: remove fractalide 2019-10-09 21:08:12 +08:00
Sebastien Bourdeauducq dfe48379c5 nixbld: document secret permissions 2019-10-09 10:41:15 +08:00
Sebastien Bourdeauducq d5ce8ce4c3 bscan_spi_bitstreams: bump 2019-10-08 12:47:28 +08:00
Sebastien Bourdeauducq ad04c877d3 migen: bump 2019-10-08 12:29:51 +08:00
Sebastien Bourdeauducq ec32280ed6 migen: bump 2019-10-08 00:12:29 +08:00
Sebastien Bourdeauducq 1062353e4a migen: bump 2019-10-07 20:30:39 +08:00
Sebastien Bourdeauducq 52792c38e1 conda-channel: symlink packages instead of copying them 2019-10-07 13:14:40 +08:00
Sebastien Bourdeauducq bc66970d62 artiq-full: add conda packages for sayma/metlino 2019-10-07 12:20:49 +08:00
Sebastien Bourdeauducq 2bba980f49 artiq-full: refresh sayma build derivations 2019-10-07 12:20:32 +08:00
Sebastien Bourdeauducq 41b94d29a1 artiq-board: allow absence of bootloader
The Sayma RTM FPGA does not have one.
2019-10-07 12:19:31 +08:00
Sebastien Bourdeauducq ff352eec52 migen: bump 2019-10-06 18:20:29 +08:00
Sebastien Bourdeauducq c6444e2cc0 misoc: bump 2019-10-06 18:19:44 +08:00
Sebastien Bourdeauducq a5531baae3 migen: bump 2019-10-06 13:10:59 +08:00
Sebastien Bourdeauducq 616f878714 misoc: bump 2019-10-06 13:10:15 +08:00
Sebastien Bourdeauducq 9502c2b0a8 misoc: bump 2019-10-05 11:04:23 +08:00
Sebastien Bourdeauducq 98fb754b74 migen: bump 2019-10-04 23:04:41 +08:00
Sebastien Bourdeauducq 694ba9dfac migen: bump 2019-10-04 21:32:19 +08:00
Sebastien Bourdeauducq b8dc4624f7 artiq-full: add saymamaster 2019-10-04 21:20:13 +08:00
Sebastien Bourdeauducq 2375b90ebf migen: bump 2019-10-04 19:11:33 +08:00
Sebastien Bourdeauducq 6a09d1cc6f nixbld: add QF users 2019-09-30 10:33:28 +08:00
Sebastien Bourdeauducq e05fd797fd nixbld: install gdb system-wide 2019-09-30 10:33:28 +08:00
Robert Jördens e694e32c08 artiq-full: add mpq 2019-09-27 10:39:49 +02:00
Sebastien Bourdeauducq 771b91f4f3 nixbld: support yubikey+password 2FA 2019-09-22 20:25:03 +08:00
Sebastien Bourdeauducq 5a023b7e8f urukul: build with nixos 19.09 2019-09-19 09:50:56 +08:00
Sebastien Bourdeauducq 50859120da stm32: build with nixos 19.09 2019-09-19 09:50:37 +08:00
Sebastien Bourdeauducq dcf0397bc8 web: build with nixos 19.09 2019-09-19 09:45:40 +08:00
Sebastien Bourdeauducq 099b7dee2a nixbld: store email account info in /etc/nixos/secret 2019-09-19 09:44:34 +08:00
Sebastien Bourdeauducq d28167badf Revert "nixbld: use store_uri for hydra"
secret-key should not be used with the local store (https://github.com/NixOS/hydra/issues/679#issuecomment-532607341)

This reverts commit ef80154c64.
2019-09-18 18:46:18 +08:00
Sebastien Bourdeauducq ef80154c64 nixbld: use store_uri for hydra
Note that binary_cache_secret_key_file is actually not ignored, contrary to what the hydra warning message says.
binary_cache_secret_key_file is used by the perl code, when hydra itself as acting as a binary cache (over http), but store-uri is used by the c++ code, when the queue-runner is copying artifacts into whatever the store-uri is
This mess ought to be cleaned up in hydra at some point.
2019-09-18 17:35:39 +08:00
Sebastien Bourdeauducq 361d7445a5 nixbld: cleanup 2019-09-18 15:38:07 +08:00
Sebastien Bourdeauducq 0f45d03e32 nixbld: fix flarum 'bad gateway' error 2019-09-18 14:23:14 +08:00
Sebastien Bourdeauducq f531f0c0d7 nixbld: add IPv6 tunnel 2019-09-18 12:38:35 +08:00
Sebastien Bourdeauducq 9ea3e2e47b nixbld: factor out network interface names 2019-09-18 12:20:03 +08:00
Sebastien Bourdeauducq 3bd0f2c1e9 nixbld: LAN router
Replaces OpenWrt router that was limited to 100Mbps (new fiber is 300Mbps).
2019-09-18 12:13:10 +08:00
Sebastien Bourdeauducq 44018d0a56 nixbld: handle upstream patches properly in overridden packages 2019-09-18 11:57:13 +08:00
Sebastien Bourdeauducq 8efe227959 nixbld: NixOS 19.09 fixes 2019-09-17 17:22:43 +08:00
Sebastien Bourdeauducq 4f648fba07 nixbld: fix nginx alias_traversal configuration issue
https://github.com/yandex/gixy/blob/master/docs/en/plugins/aliastraversal.md
2019-09-17 16:40:22 +08:00
Sebastien Bourdeauducq efc066d2cb openocd: fix build with gcc8 2019-09-17 09:48:39 +08:00
Sebastien Bourdeauducq bd9062421d nixbld: enable apparmor
This doesn't do much for now and apparmor support needs some work, but this enables the
kernel boot options so we can fix apparmor later without having to reboot the server.
2019-09-16 09:32:58 +08:00
Sebastien Bourdeauducq cf6173a240 stabilizer: update cargoSha256 2019-09-13 13:46:08 +08:00
Sebastien Bourdeauducq b8b6fdbba5 nixbld: add prototype mail server 2019-09-13 12:48:51 +08:00
Sebastien Bourdeauducq 40e87731e0 nixbld: enable UPS monitoring 2019-09-11 17:37:59 +08:00
Sebastien Bourdeauducq 01c4478099 rpi: use default linux kernel 2019-09-11 17:37:20 +08:00
Sebastien Bourdeauducq d8a0b2bdac stabilizer: update cargoSha256 2019-09-11 16:12:34 +08:00
Sebastien Bourdeauducq 9059658521 artiq-full: add oregon 2019-09-11 15:55:33 +08:00
Robert Jördens 20a9e3df08 artiq-full: add ptb6 2019-09-10 19:40:30 +02:00
Sebastien Bourdeauducq 350701c682 nixbld: update installed packages 2019-09-05 16:47:01 +08:00
Sebastien Bourdeauducq 8a8f987098 nixbld: act as wifi access point 2019-09-05 15:27:44 +08:00
Sebastien Bourdeauducq b6e65c0989 stabilizer: update cargoSha256 2019-08-29 19:27:33 +08:00
Sebastien Bourdeauducq 8decf4700d artiq-full: add indiana 2019-08-29 19:07:02 +08:00
Sebastien Bourdeauducq 33631c5f85 rustc: build ARM crates 2019-08-26 11:40:30 +08:00
Sebastien Bourdeauducq 9b99ee9aad Revert "binutils-arm: armv7-unknown-linux-gnueabihf -> armv7-linux-gnueabihf"
rustc insists on -unknown.

This reverts commit d3c514ac7c.
2019-08-26 11:22:41 +08:00
Sebastien Bourdeauducq d3c514ac7c binutils-arm: armv7-unknown-linux-gnueabihf -> armv7-linux-gnueabihf 2019-08-26 11:12:25 +08:00
Sebastien Bourdeauducq 5c64321fcc binutils-arm: use armv7-unknown-linux-gnueabihf target 2019-08-26 10:37:24 +08:00
Sebastien Bourdeauducq 5e1d97618c binutils: consistent naming 2019-08-26 10:17:17 +08:00
Sebastien Bourdeauducq 63cd39068c llvm: target ARM (Zynq) 2019-08-26 09:29:49 +08:00
Sebastien Bourdeauducq aa30c7b539 add ARM binutils to the development environment (Zynq) 2019-08-25 09:27:12 +08:00
Sebastien Bourdeauducq 11b91906e2 migen: bump 2019-08-23 18:42:10 +08:00
Sebastien Bourdeauducq 312689fc61 migen: bump 2019-08-23 18:40:00 +08:00
Sebastien Bourdeauducq 19f124bff3 migen-axi: fix MiSoC identifier core compatibility, enable tests 2019-08-23 18:08:20 +08:00
Sebastien Bourdeauducq 405a9ecc1b ramda: enable tests 2019-08-23 17:41:51 +08:00
Sebastien Bourdeauducq a089158a1d add migen-axi to the development enviroment
Enables Zynq gateware development.
2019-08-23 17:01:39 +08:00
Sebastien Bourdeauducq 709c004585 rpi: update nix channel URL 2019-08-17 10:27:25 +08:00
Astro dc3cc3f596 nixbld: run hydra hooks for artiq-manual only on success
should fix GH issue #18
2019-08-14 00:05:04 +02:00
Sebastien Bourdeauducq 615fb34dc7 artiq-full: add wipm4 2019-08-12 15:47:40 +08:00
Robert Jördens 35c88811a9 artiq-full: add opticlock 2019-08-08 22:00:38 +02:00
Sebastien Bourdeauducq e96907239e thermostat: update cargoSha256 2019-08-08 18:31:21 +08:00
Sebastien Bourdeauducq 4c9973893e stm32: update rust 2019-08-08 17:52:09 +08:00
Sebastien Bourdeauducq d5c87cf188 stabilizer: update cargoSha256 2019-08-08 17:20:48 +08:00
Robert Jördens ff7349c9b7 add ptb5 2019-08-06 17:34:30 +02:00
Robert Jördens c9fb50b3d2 add innsbruck 2019-08-06 13:55:12 +02:00
Robert Jördens 59c58abd89 ptb4, siegen: add 2019-08-05 18:59:51 +02:00
Robert Jördens a14fbf0d8f add npl1, npl2 2019-08-02 11:24:35 +02:00
Sebastien Bourdeauducq f92d6b96f4 nixbld: disable docker 2019-08-01 10:37:47 +08:00
Sebastien Bourdeauducq 405492b2e9 nixbld: add fish shell 2019-07-31 22:48:42 +08:00
Sebastien Bourdeauducq a86f29733e nixbld: redirect old artiq resources page 2019-07-31 22:48:42 +08:00
Jan Kiethe df452f7d94 artiq-full.nix: added ptbin variant
Signed-off-by: Jan Kiethe <jan.kiethe@ptb.de>
Signed-off-by: Robert Jördens <rj@quartiq.de>
2019-07-30 12:04:33 +02:00
Sebastien Bourdeauducq 51fde169d5 heavyx: use nixos-19.03 2019-07-29 15:00:23 +08:00
Sebastien Bourdeauducq 552b872bac nixbld: add legacy migen manual URL 2019-07-29 11:44:48 +08:00
Sebastien Bourdeauducq 820ede4ac3 nixbld: optimize web server settings 2019-07-27 11:27:28 +08:00
Sebastien Bourdeauducq 049ef39c29 remove ARTIQ-2 manual 2019-07-27 10:38:06 +08:00
Sebastien Bourdeauducq 4d0c0e295a nixbld: use custom 404 page 2019-07-26 21:29:54 +08:00
Sebastien Bourdeauducq 789336adca urukul: fix migen package path 2019-07-26 15:58:01 +08:00
Sebastien Bourdeauducq 06e8e67d10 nixbld: increase max push size for HTTPS gitea 2019-07-22 19:34:07 +08:00
Sebastien Bourdeauducq af31db6d21 nixbld: add ARTIQ-4 manual legacy URL 2019-07-22 19:32:18 +08:00
Sebastien Bourdeauducq 00de3141b0 nixbld: update fractalide settings 2019-07-19 16:24:04 +08:00
Sebastien Bourdeauducq 618486ca8a nixbld: update web settings 2019-07-19 16:23:47 +08:00
Sebastien Bourdeauducq 78caeebf02 serve website from hydra 2019-07-19 15:57:35 +08:00
Sebastien Bourdeauducq 5326cab419 use recommended nginx patch 2019-07-19 15:19:39 +08:00
Sebastien Bourdeauducq c134bfd3c1 web fixes and improvements 2019-07-19 15:00:06 +08:00
Sebastien Bourdeauducq 4d9e1f6e36 nixbld: redirect old URLs 2019-07-18 23:25:35 +08:00
Sebastien Bourdeauducq 0cc3a2bc3d conda: use levenshtein from conda-forge 2019-07-18 12:24:31 +08:00
Sebastien Bourdeauducq 77cc78adcb build kc705-nist_qc2 2019-07-18 09:41:33 +08:00
Sebastien Bourdeauducq 5173a26468 nixbld: ignore broken conda-generated index.html 2019-07-18 00:47:18 +08:00
Sebastien Bourdeauducq f51d24ac2e nixbld: publish conda channel on WWW 2019-07-18 00:20:05 +08:00
Sebastien Bourdeauducq b6b0080649 conda-channel: package name 2019-07-18 00:15:11 +08:00
Sebastien Bourdeauducq dfa2a4017e nixbld: update documentation jobset name 2019-07-18 00:10:33 +08:00
Sebastien Bourdeauducq fc0d2144ba create a conda channel 2019-07-18 00:08:35 +08:00
Sebastien Bourdeauducq a50117095d fix conda-build (again) 2019-07-17 23:51:46 +08:00
Sebastien Bourdeauducq f077761be8 fix conda-build 2019-07-17 23:51:09 +08:00
Sebastien Bourdeauducq 5526e491cf expose condaBuilderEnv 2019-07-17 23:50:06 +08:00
Sebastien Bourdeauducq 8921993d15 fix manual build 2019-07-17 22:48:14 +08:00
Sebastien Bourdeauducq f089f6e1ef typo 2019-07-17 22:41:43 +08:00
Sebastien Bourdeauducq 14c0bd7103 move conda-artiq-board to artiq-full 2019-07-17 22:36:44 +08:00
Sebastien Bourdeauducq c4b57f341b remove artiq-extras from artiq-fast 2019-07-17 20:27:03 +08:00
Sebastien Bourdeauducq 11608e139c move artiq-extras to artiq-full 2019-07-17 20:22:13 +08:00
Sebastien Bourdeauducq 0507ade49d remove remnants of manual from artiq-fast 2019-07-17 20:11:28 +08:00
Sebastien Bourdeauducq 53d8569d35 rename channels
nix-channel --add <url> now gives a good channel name by default
2019-07-17 20:03:36 +08:00
Sebastien Bourdeauducq c5ade34066 move manual to artiq-full 2019-07-17 20:02:06 +08:00
Sebastien Bourdeauducq 5d8e29eacb include artiq-fast in artiq-full 2019-07-17 19:35:29 +08:00
Sebastien Bourdeauducq 93667c0fe1 fix hydra jobset name 2019-07-17 19:26:55 +08:00
Sebastien Bourdeauducq a7e8319735 move some packages to artiq-full 2019-07-17 19:21:06 +08:00
Sebastien Bourdeauducq dfa5b47d9b rename jobsets to artiq-fast/artiq-full 2019-07-17 19:19:43 +08:00
Sebastien Bourdeauducq 0a231bb200 sinara-systems: build duke3 2019-07-17 14:00:09 +08:00
Sebastien Bourdeauducq 9adabb3a29 migen: bump 2019-07-05 18:31:01 +08:00
Your Name 75a235ab51 update conda-build 2019-07-05 10:09:03 +08:00
Sebastien Bourdeauducq f46580e867 fix/bump migen 2019-07-03 23:04:31 +08:00
Sebastien Bourdeauducq 8de1dbdd53 build Urukul CPLD gateware 2019-07-03 23:01:51 +08:00
Sebastien Bourdeauducq 07daeb2572 artiq-board: make Python module again 2019-07-03 21:29:24 +08:00
Sebastien Bourdeauducq 3fe5ce25c5 clean up bitstream build
Also make the development shell a more ergonomic regular nix-shell instead of the FHS env shell.
2019-07-03 20:28:00 +08:00
Sebastien Bourdeauducq 41a19cbf34 update stewart settings 2019-07-01 22:53:39 +08:00
Sebastien Bourdeauducq 8d9faac567 backup: exclude gitea archives 2019-07-01 22:53:03 +08:00
Sebastien Bourdeauducq 9e796e5073 nixbld: add password on munin output 2019-06-24 18:54:44 +08:00
Sebastien Bourdeauducq ae4fcf44d3 sinara-systems: build berkeley2 and unsw2, improve style 2019-06-21 16:03:38 +08:00
Sebastien Bourdeauducq 0c051456a7 migen: bump 2019-06-21 15:07:13 +08:00
Robert Jördens 3267b29f4f sinara-systems: add su 2019-06-20 11:54:46 +02:00
Sebastien Bourdeauducq 264cff7d4b use ARTIQ MAJOR_VERSION file 2019-06-13 14:05:30 +08:00
Astro 01e71b8511 extended-tests: restore initial generateTestOkHash 2019-06-13 03:11:06 +02:00
Astro 489d0e43c7 extended-tests: ssh with explicit private key, force re-run 2019-06-13 02:56:17 +02:00
Astro f250aff384 force extended-tests re-run 2019-06-12 13:01:00 +02:00
Astro 3114bd4e5e extended-tests: ssh with user sb 2019-06-12 13:00:23 +02:00
Astro 0dae4220bf force extended-tests re-run 2019-06-12 00:08:11 +02:00
Astro f7926ccddf extended-tests: explicitly pass ssh UserKnownHostsFile 2019-06-12 00:07:39 +02:00
Astro 0f33ddf0d7 force extended-tests re-run 2019-06-11 23:34:39 +02:00
Astro 584a232d9a force extended-tests re-run 2019-06-11 23:01:47 +02:00
Astro 87a93802e1 extended-tests: fix ssh path 2019-06-11 23:01:08 +02:00
119 changed files with 26575 additions and 13807 deletions

View File

@ -0,0 +1,97 @@
# Install Vivado in /opt and add to /etc/nixos/configuration.nix:
# nix.sandboxPaths = ["/opt"];
{ pkgs ? import <nixpkgs> {}
, 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.nix") {
inherit (pkgs) stdenv lib cacert git;
inherit (artiqpkgs) cargo cargo-vendor;
};
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
artiqpkgs.rustc
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;
}

View File

@ -0,0 +1,54 @@
{ pkgs ? import <artiq-fast/pkgs/nixpkgs.nix> { inherit (import <nixpkgs> {}) fetchgit; } {}
, artiq-fast ? <artiq-fast>
}:
let
sinaraSystemsSrc = <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 ./fast/pkgs/nixpkgs.git { inherit (import <nixpkgs> {}) fetchgit; }
}:
let
sinaraSystemsSrc = pkgs.fetchgit {
url = "https://git.m-labs.hk/M-Labs/sinara-systems.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;
}

View File

@ -2,10 +2,17 @@ let
pkgs = import <nixpkgs> {};
artiqSrc = <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} $out
cp --no-preserve=mode,ownership -R ${./artiq-fast} $out
REV=`git --git-dir ${artiqSrc}/.git rev-parse HEAD`
COMMITCOUNT=`git --git-dir ${artiqSrc}/.git rev-list --count 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
@ -21,67 +28,60 @@ let
sha256 = "$HASH";
}
EOF
echo "{ stdenv, git, fetchgit }: \"5.$COMMITCOUNT.`cut -c1-8 <<< $REV`.beta\"" > $out/pkgs/artiq-version.nix
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
'';
generateTestOkHash = pkgs.runCommand "generate-test-ok-hash" { buildInputs = [ pkgs.nix ]; }
''
TMPDIR=`mktemp -d`
cp ${generatedNix}/pkgs/artiq-version.nix $TMPDIR/passed
HASH=`nix-hash --type sha256 --base32 $TMPDIR`
echo \"$HASH\" > $out
REV=`git --git-dir ${<nixpkgs>}/.git rev-parse HEAD`
NIXPKGS_CLEAN=`mktemp -d`
cp -a ${<nixpkgs>}/. $NIXPKGS_CLEAN
chmod -R 755 $NIXPKGS_CLEAN/.git
chmod 755 $NIXPKGS_CLEAN
rm -rf $NIXPKGS_CLEAN/.git
HASH=`nix-hash --type sha256 --base32 $NIXPKGS_CLEAN`
cat > $out/pkgs/nixpkgs.nix << EOF
{ fetchgit }:
import (fetchgit {
url = "https://github.com/nixos/nixpkgs.git";
rev = "$REV";
sha256 = "$HASH";
})
EOF
'';
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;
artiqPkg = artiqpkgs.conda-artiq;
inherit pkgs artiqpkgs;
} // overrides);
jobs = (builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) artiqpkgs) // {
# This is in the example in the ARTIQ manual - precompile it to speed up
# installation for users.
matplotlib-qt = pkgs.lib.hydraJob (pkgs.python3Packages.matplotlib.override { enableQt = true; });
# For Raspberry Pi JTAG servers
openocd-aarch64 = pkgs.lib.hydraJob ((import <nixpkgs> { system = "aarch64-linux"; }).callPackage ./artiq/pkgs/openocd.nix {});
};
jobs = (builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) artiqpkgs);
in
jobs // {
generated-nix = pkgs.lib.hydraJob generatedNix; # used by sinara-systems
channel = pkgs.releaseTools.channel rec {
name = "main";
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";
buildInputs = [ (windowsRunner {}) ];
phases = [ "buildPhase" ];
buildPhase = ''
${windowsRunner {}}/bin/run.sh
${windowsRunner { testCommand = "python -m unittest discover -v sipyco.test && python -m unittest discover -v artiq.test"; }}/bin/wfvm-run-windows-tests
touch $out
'';
};
# HACK: Abuse fixed-output derivations to escape the sandbox and run the hardware
# unit tests, all integrated in the Hydra interface.
# One major downside of this hack is the tests are only run when generateTestOkHash
# changes, i.e. when the ARTIQ version changes (and not the dependencies).
# Impure derivations, when they land in Nix/Hydra, should improve the situation.
extended-tests = pkgs.stdenv.mkDerivation {
name = "extended-tests";
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = import generateTestOkHash;
__hydraRetry = false;
# requires patched Nix
__networked = true;
buildInputs = [
(pkgs.python3.withPackages(ps: [ ps.paramiko artiqpkgs.artiq artiqpkgs.artiq-board-kc705-nist_clock ]))
artiqpkgs.binutils-or1k
artiqpkgs.openocd
pkgs.iputils
pkgs.openssh
];
phases = [ "buildPhase" ];
@ -91,12 +91,17 @@ in
mkdir $HOME/.ssh
cp /opt/hydra_id_rsa $HOME/.ssh/id_rsa
cp /opt/hydra_id_rsa.pub $HOME/.ssh/id_rsa.pub
echo "rpi-1,192.168.1.188 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMc7waNkP2HjL5Eo94evoxJhC8CbYj4i2n1THe5TPIR3" > $HOME/.ssh/known_hosts
echo "rpi-1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMc7waNkP2HjL5Eo94evoxJhC8CbYj4i2n1THe5TPIR3" > $HOME/.ssh/known_hosts
chmod 600 $HOME/.ssh/id_rsa
LOCKCTL=$(mktemp -d)
mkfifo $LOCKCTL/lockctl
cat $LOCKCTL/lockctl | ssh rpi-1 'flock /tmp/board_lock-kc705-1 -c "echo Ok; cat"' | (
cat $LOCKCTL/lockctl | ${pkgs.openssh}/bin/ssh \
-i $HOME/.ssh/id_rsa \
-o UserKnownHostsFile=$HOME/.ssh/known_hosts \
sb@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
@ -108,18 +113,15 @@ in
artiq_flash -t kc705 -H rpi-1
sleep 15
# ping: socket: Operation not permitted
#ping kc705-1 -c10 -w30
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%\\anaconda\\envs\\artiq-env\\Lib\\site-packages\\artiq\\examples\\kc705_nist_clock&&python -m unittest discover -v artiq.test.coredevice"; }}/bin/run.sh
${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
)
mkdir $out
cp ${generatedNix}/pkgs/artiq-version.nix $out/passed
touch $out
'';
};
}

View File

@ -1,21 +1,21 @@
# Install Vivado in /opt and add to /etc/nixos/configuration.nix:
# nix.sandboxPaths = ["/opt"];
{ pkgs }:
{ target
, variant
, buildCommand ? "python -m artiq.gateware.targets.${target} -V ${variant}"
, extraInstallCommands ? ""}:
{ pkgs
, vivado ? import ./vivado.nix { inherit pkgs; }
}:
let
fetchcargo = import ./fetchcargo.nix {
inherit (pkgs) stdenv cacert git cargo cargo-vendor;
};
artiqSrc = import ./pkgs/artiq-src.nix { fetchgit = pkgs.fetchgit; };
artiqpkgs = import ./default.nix { inherit pkgs; };
fetchcargo = import ./fetchcargo.nix {
inherit (pkgs) stdenv lib cacert git;
inherit (artiqpkgs) cargo cargo-vendor;
};
cargoDeps = fetchcargo rec {
name = "artiq-firmware-cargo-deps";
src = "${artiqSrc}/artiq/firmware";
sha256 = "1xzjn9i4rkd9124v2gbdplsgsvp1hlx7czdgc58n316vsnrkbr86";
sha256 = (import "${artiqSrc}/artiq/firmware/cargosha256.nix");
};
cargoVendored = pkgs.stdenv.mkDerivation {
@ -42,26 +42,43 @@ let
'';
};
buildenv = import ./artiq-dev.nix { inherit pkgs; };
in
{ target
, variant
, src ? null
, buildCommand ? "python -m artiq.gateware.targets.${target} -V ${variant}"
, extraInstallCommands ? ""
, ... }:
in pkgs.python3Packages.buildPythonPackage rec {
# 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; });
phases = [ "buildPhase" "installCheckPhase" "installPhase" ];
inherit src;
phases = [ "buildPhase" "installCheckPhase" "installPhase" "checkPhase" ];
nativeBuildInputs = [
vivado
pkgs.gnumake
artiqpkgs.cargo
artiqpkgs.rustc
artiqpkgs.binutils-or1k
artiqpkgs.llvm-or1k
];
buildInputs = [ (pkgs.python3.withPackages(ps: with ps; [ jinja2 numpy artiqpkgs.migen artiqpkgs.microscope artiqpkgs.misoc artiqpkgs.jesd204b artiqpkgs.artiq ])) ];
buildPhase =
''
${buildenv}/bin/artiq-dev -c "export CARGO_HOME=${cargoVendored}; ${buildCommand}"
export CARGO_HOME=${cargoVendored}
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 = false;
checkPhase = ''
# Search for PCREs in the Vivado output to check for errors
check_log() {
set +e
grep -Pe "$1" artiq_${target}/${variant}/gateware/vivado.log
FOUND=$?
set -e
if [ $FOUND != 1 ]; then
exit 1
fi
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\."
@ -71,11 +88,15 @@ in pkgs.python3Packages.buildPythonPackage rec {
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
cp artiq_${target}/${variant}/software/bootloader/bootloader.bin $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;
})

View File

@ -0,0 +1,11 @@
--- 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);

View File

@ -0,0 +1,21 @@
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##

View File

@ -0,0 +1,17 @@
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.'

View File

@ -0,0 +1,54 @@
{ 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
''

View File

@ -0,0 +1,83 @@
{ 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
''

View File

@ -0,0 +1,76 @@
{ 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.8
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
''

View File

@ -0,0 +1,177 @@
{ 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";
})
]

View File

@ -0,0 +1,13 @@
{ 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
''

View File

@ -0,0 +1,38 @@
{ 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 = [
"llvmlite-artiq"
"binutils-or1k-linux"
"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"
];
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

View File

@ -0,0 +1,45 @@
{ 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;
}

View File

@ -0,0 +1,36 @@
{ 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 -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;
}

View File

@ -0,0 +1,30 @@
# 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.stdenv.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
'';
}

View File

@ -0,0 +1,47 @@
{ pkgs }:
with pkgs;
let
condaDeps = [ stdenv.cc 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-2019.03-Linux-x86_64.sh";
sha256 = "0fmpdd5876ylds98mydmv5klnwlzasa461k0l1f4vhbw96vm3j25";
};
condaSrcChmod = runCommand "conda-src-chmod" { } "mkdir $out; cp ${condaInstaller} $out/conda-installer.sh; chmod +x $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.7/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}"
'';
in
buildFHSUserEnv {
name = "conda-builder-env";
targetPkgs = pkgs: ([ condaInstalled ] ++ condaDeps ++ [
# for llvm-or1k
cmake
]
);
}

View File

@ -1,5 +1,5 @@
{ pkgs }:
{ name, version, src, dependencies ? []}:
{ name, version, src, extraSrcCommands ? "", dependencies ? [], extraYaml ? ""}:
pkgs.runCommand "conda-fake-source-${name}" { }
''
mkdir -p $out/fake-conda;
@ -7,6 +7,7 @@ pkgs.runCommand "conda-fake-source-${name}" { }
# 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
@ -35,6 +36,8 @@ pkgs.runCommand "conda-fake-source-${name}" { }
requirements:
run:
${pkgs.lib.concatStringsSep "\n" (map (s: " - ${s}") dependencies)}
${extraYaml}
EOF
cat << EOF > $out/fake-conda/build.sh
@ -42,6 +45,7 @@ pkgs.runCommand "conda-fake-source-${name}" { }
set -e
export VERSIONEER_OVERRIDE=${version}
export LD_LIBRARY_PATH=/lib
python setup.py install \
--prefix=\$PREFIX \
--single-version-externally-managed \

View File

@ -0,0 +1,52 @@
{ 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;
}

View File

@ -0,0 +1,69 @@
{ 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.8
- 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
'';
}

163
artiq-fast/default.nix Normal file
View File

@ -0,0 +1,163 @@
{ pkgs ? import ./pkgs/nixpkgs.nix { inherit (import <nixpkgs> {}) fetchgit; } {}}:
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; };
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; } {
target = board.target;
variant = board.variant;
};
in
start // {
"artiq-board-${board.target}-${board.variant}" = boardBinaries;
}) {} boards;
mainPackages = rec {
inherit (pythonDeps) sipyco asyncserial pythonparser pyqtgraph-qt5 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 = callPackage ./pkgs/rust/rustc-with-crates.nix
((lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}) //
{ inherit llvm-or1k; });
cargo = callPackage ./pkgs/rust/cargo.nix { inherit rustc; };
cargo-vendor = callPackage ./pkgs/rust/cargo-vendor.nix {};
llvmlite-artiq = callPackage ./pkgs/llvmlite-artiq.nix { inherit llvm-or1k; };
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 {};
};
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;
extraSrcCommands = "patch -p1 < ${./pkgs/pythonparserver.patch}";
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;
inherit (mainPackages.openocd) 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 = 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;
};
};
condaWindowsLegacy = {
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";
};
};
condaWindowsExperimental = 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 condaWindowsExperimental else condaWindowsLegacy;
in
boardPackages // mainPackages // condaNoarch // condaLinux // condaWindows

View File

@ -1,7 +1,8 @@
{ stdenv, cacert, git, cargo, cargo-vendor }:
{ 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;
@ -30,6 +31,6 @@ stdenv.mkDerivation {
outputHashMode = "recursive";
outputHash = sha256;
impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
preferLocalBuild = true;
}

View File

@ -0,0 +1,22 @@
{ 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

45
artiq-fast/pkgs/artiq.nix Normal file
View File

@ -0,0 +1,45 @@
{ stdenv, lib, pythonDeps, fetchgit, git, python3Packages, qt5, binutils-or1k, binutils-arm, llvm-or1k, llvmlite-artiq, libartiq-support, lit, outputcheck }:
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 = [ binutils-or1k llvm-or1k llvmlite-artiq ]
++ (lib.lists.optionals (lib.strings.versionAtLeast version "6.0") [ binutils-arm ])
++ (with pythonDeps; [ sipyco pyqtgraph-qt5 pythonparser ])
++ (with python3Packages; [ pygit2 numpy dateutil scipy prettytable pyserial python-Levenshtein h5py pyqt5 ])
++ [(if (lib.strings.versionAtLeast version "6.0") then pythonDeps.qasync else python3Packages.quamash)];
dontWrapQtApps = true;
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' '' ];
checkInputs = [ binutils-or1k outputcheck ];
checkPhase =
''
python -m unittest discover -v artiq.test
TESTDIR=`mktemp -d`
cp --no-preserve=mode,ownership -R ${src}/artiq/test/lit $TESTDIR
LIBARTIQ_SUPPORT=${libartiq-support}/libartiq_support.so ${lit}/bin/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 ];
};
}

View File

@ -1,18 +1,19 @@
{ stdenv, buildPackages
{ stdenv, lib, buildPackages
, fetchurl, zlib
, platform, target
}:
stdenv.mkDerivation rec {
basename = "binutils";
platform = "or1k";
inherit platform;
version = "2.30";
name = "${basename}_${platform}-${version}";
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=or1k-linux"];
[ "--enable-shared" "--enable-deterministic-archives" "--target=${target}"];
outputs = [ "out" "info" "man" ];
depsBuildBuild = [ buildPackages.stdenv.cc ];
buildInputs = [ zlib ];
@ -26,7 +27,7 @@ stdenv.mkDerivation rec {
`gprof', `nm', `strip', etc.
'';
homepage = http://www.gnu.org/software/binutils/;
license = stdenv.lib.licenses.gpl3Plus;
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";

View File

@ -1,13 +1,15 @@
{ stdenv, fetchgit, git, rustc }:
stdenv.mkDerivation rec {
name = "libartiq-support-${version}";
pname = "libartiq-support";
version = import ./artiq-version.nix { inherit stdenv fetchgit git; };
src = import ./artiq-src.nix { inherit fetchgit; };
buildInputs = [ rustc ];
phases = [ "buildPhase" ];
# keep in sync with artiq/test/lit/lit.cfg or remove build from the latter once we don't use buildbot/conda anymore
buildPhase =
''
mkdir $out
${rustc}/bin/rustc ${src}/artiq/test/libartiq_support/lib.rs --out-dir $out -Cpanic=unwind -g
rustc ${src}/artiq/test/libartiq_support/lib.rs --out-dir $out -Cpanic=unwind -g
'';
}

View File

@ -1,14 +1,14 @@
{ stdenv
{ stdenv, lib
, fetchFromGitHub, runCommand
, perl, groff, cmake, libxml2, python, libffi, valgrind
}:
let
llvm-src = fetchFromGitHub {
rev = "527aa86b578da5dfb9cf4510b71f0f46a11249f7";
rev = "7746fe85489e92e1caffda18b9d7b2ae9e5da1a8";
owner = "m-labs";
repo = "llvm-or1k";
sha256 = "0lmcg9xj66pf4mb6racipw67vm8kwm84dl861hyqnywd61kvhrwa";
sha256 = "0jqbb3k9r91swsyrdak8fzvs1qi451zy8dqmpqriaxk5g83ny5b7";
};
clang-src = fetchFromGitHub {
rev = "9e996136d52ed506ed8f57ef8b13b0f0f735e6a3";
@ -25,10 +25,12 @@ let
'';
in
stdenv.mkDerivation rec {
name = "llvm-or1k";
pname = "llvm-or1k";
version = "6.0.0";
passthru.llvm-src = llvm-src;
src = llvm-clang-src;
buildInputs = [ perl groff cmake libxml2 python libffi ] ++ stdenv.lib.optional stdenv.isLinux valgrind;
buildInputs = [ perl groff cmake libxml2 python libffi ] ++ lib.optional stdenv.isLinux valgrind;
preBuild = ''
NIX_BUILD_CORES=4
@ -40,7 +42,7 @@ in
"-DCMAKE_BUILD_TYPE=Release"
"-DLLVM_BUILD_LLVM_DYLIB=ON"
"-DLLVM_LINK_LLVM_DYLIB=ON"
"-DLLVM_TARGETS_TO_BUILD=X86"
"-DLLVM_TARGETS_TO_BUILD=X86;ARM"
"-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=OR1K"
"-DLLVM_ENABLE_ASSERTIONS=OFF"
"-DLLVM_INSTALL_UTILS=ON"
@ -57,8 +59,8 @@ in
meta = {
description = "Collection of modular and reusable compiler and toolchain technologies";
homepage = http://llvm.org/;
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ sb0 ];
platforms = stdenv.lib.platforms.all;
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ sb0 ];
platforms = lib.platforms.all;
};
}

View File

@ -1,6 +1,7 @@
{ stdenv, fetchFromGitHub, llvm-or1k, makeWrapper, python3, ncurses, zlib, python3Packages }:
{ stdenv, lib, fetchFromGitHub, llvm-or1k, makeWrapper, python3, ncurses, zlib, python3Packages }:
python3Packages.buildPythonPackage rec {
name = "llvmlite-artiq";
pname = "llvmlite-artiq";
version = "0.23.0.dev";
src = fetchFromGitHub {
rev = "158f9d3a898dbf055ca513d69505df288c681fea";
owner = "m-labs";
@ -12,7 +13,7 @@ python3Packages.buildPythonPackage rec {
preBuild = "export LLVM_CONFIG=${llvm-or1k}/bin/llvm-config";
meta = with stdenv.lib; {
meta = with lib; {
description = "A lightweight LLVM python binding for writing JIT compilers";
homepage = "http://llvmlite.pydata.org/";
maintainers = with maintainers; [ sb0 ];

View File

@ -0,0 +1,6 @@
{ fetchgit }:
import (fetchgit {
url = "https://github.com/nixos/nixpkgs.git";
rev = "1c7f02b0b9f115ccbc122ce39ae99debc1af857a";
sha256 = "14sichs3hyg4ybcacvzglw97lg747y1ls5lsazv0n5yxv5w06l3d";
})

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, autoreconfHook, libftdi, libusb1, pkgconfig, hidapi }:
{ stdenv, lib, fetchFromGitHub, autoreconfHook, libftdi, libusb1, pkgconfig, hidapi }:
stdenv.mkDerivation rec {
name = "openocd-mlabs-${version}";
pname = "openocd-mlabs";
version = "0.10.0";
src = fetchFromGitHub {
@ -14,8 +14,8 @@ stdenv.mkDerivation rec {
bscan_spi_bitstreams = fetchFromGitHub {
owner = "quartiq";
repo = "bscan_spi_bitstreams";
rev = "a628956da7dc794e6e3c95b31ff9ce3af58bc763";
sha256 = "1cydbym3wv9jwxh6lw9im1mjzr7w8rzzx95bxkjschmzjq4h13vk";
rev = "01d8f819f15baf9a8cc5d96945a51e4d267ff564";
sha256 = "1zqv47kzgvbn4c8cr019a6wcja7gn5h1z4kvw5bhpc72fyhagal9";
};
nativeBuildInputs = [ pkgconfig ];
@ -32,12 +32,14 @@ stdenv.mkDerivation rec {
"--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 = ''
@ -53,7 +55,7 @@ stdenv.mkDerivation rec {
cp ${bscan_spi_bitstreams}/*.bit "$out/share/bscan-spi-bitstreams"
'';
meta = with stdenv.lib; {
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

View File

@ -0,0 +1,308 @@
{ 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.3";
src = fetchFromGitHub {
owner = "m-labs";
repo = "pythonparser";
rev = "5b391fe86f43bb9f4f96c5bc0532e2a112db2936";
sha256 = "1gw1fk4y2l6bwq0fg2a9dfc1rvq8cv492dyil96amjdhsxvnx35b";
};
patches = [ ./pythonparserver.patch ];
propagatedBuildInputs = with python3Packages; [ regex ];
};
pyqtgraph-qt5 = python3Packages.buildPythonPackage rec {
pname = "pyqtgraph_qt5";
version = "0.11.0";
doCheck = false;
pythonImportsCheck = [ "pyqtgraph" ];
src = fetchFromGitHub {
owner = "pyqtgraph";
repo = "pyqtgraph";
rev = "pyqtgraph-${version}";
sha256 = "03fvpkqdn80ni51msvyivmghw41qk4vplwdqndkvzzzlppimdjbn";
};
propagatedBuildInputs = with python3Packages; [ scipy numpy pyqt5 pyopengl ];
};
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-02-15" else "unstable-2020-05-29";
src = if misoc-new
then (fetchFromGitHub {
owner = "m-labs";
repo = "misoc";
rev = "d84551418042cea0891ea743442e20684b51e77a";
sha256 = "1id5qjr9dl4r3vi6jdn7dfpnr2wb08nrm3nfscn18clbbdxybyjn";
fetchSubmodules = true;
})
else (fetchFromGitHub {
owner = "m-labs";
repo = "misoc";
rev = "7e5fe8d38835175202dad2c51d37b20b76fd9e16";
sha256 = "0i8bppz7x2s45lx9n49c0r87pqps09z35yzc17amvx21qsplahxn";
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-02-08";
src = fetchFromGitHub {
owner = "m-labs";
repo = "migen";
rev = "7014bdccc11270764186e6a4441fb58238c612aa";
sha256 = "12mhmcdf0jqv33ald9x9zb1qi26sw4ywdfgg5saqvmx0pmbmvynk";
};
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-2020-12-18";
src = fetchFromGitHub {
owner = "m-labs";
repo = "jesd204b";
rev = "23bd08f5ee95eb42502f9fbe1c2a45e8c083eab9";
sha256 = "0x2mh5fv4q0b1f8pjc2kcyjqbfgiyp1hlvbfgk8dbsraj50i566h";
};
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-01-22";
src = fetchFromGitHub {
owner = "peteut";
repo = "migen-axi";
rev = "9439ee900358598cecc682db327aa30e506172b5";
sha256 = "1z5s8ifq7fbpqi6sx2i87rmz63kbgh9ck94fs2qf21ixhxi46nm3";
};
nativeBuildInputs = [ python3Packages.pbr ];
propagatedBuildInputs = [ python3Packages.click python3Packages.numpy python3Packages.toolz python3Packages.jinja2 ramda migen misoc ];
postPatch = ''
substituteInPlace requirements.txt \
--replace "jinja2==2.10.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"
'';
checkInputs = [ python3Packages.pytest 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;
};
};
}

View File

@ -1,25 +1,27 @@
diff --git a/pythonparser/lexer.py b/pythonparser/lexer.py
index a62eaf1..2c48d36 100644
index a62eaf1..c70e85a 100644
--- a/pythonparser/lexer.py
+++ b/pythonparser/lexer.py
@@ -79,6 +79,7 @@ class Lexer:
@@ -79,6 +79,8 @@ class Lexer:
(3, 4): _reserved_3_1,
(3, 5): _reserved_3_5,
(3, 6): _reserved_3_5,
+ (3, 7): _reserved_3_5,
+ (3, 8): _reserved_3_5,
}
"""
A map from a tuple (*major*, *minor*) corresponding to Python version to
@@ -102,6 +103,7 @@ class Lexer:
@@ -102,6 +104,8 @@ class Lexer:
(3, 4): _string_prefixes_3_3,
(3, 5): _string_prefixes_3_3,
(3, 6): _string_prefixes_3_6,
+ (3, 7): _string_prefixes_3_6,
+ (3, 8): _string_prefixes_3_6,
}
"""
A map from a tuple (*major*, *minor*) corresponding to Python version to
diff --git a/pythonparser/parser.py b/pythonparser/parser.py
index 10c741d..f748695 100644
index 10c741d..62b93e1 100644
--- a/pythonparser/parser.py
+++ b/pythonparser/parser.py
@@ -419,7 +419,7 @@ class Parser(object):
@ -27,7 +29,7 @@ index 10c741d..f748695 100644
self.yield_expr = self.yield_expr__26
return
- elif version in ((3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6)):
+ elif version in ((3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7)):
+ elif version in ((3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8)):
if version == (3, 0):
self.with_stmt = self.with_stmt__26 # lol
else:

View File

@ -1,4 +1,4 @@
{ stdenv, makeWrapper, bash, buildRustPackage, curl, darwin
{ stdenv, lib, makeWrapper, bash, buildRustPackage, curl, darwin
, version
, src
, platform
@ -6,7 +6,7 @@
}:
let
inherit (stdenv.lib) optionalString;
inherit (lib) optionalString;
inherit (darwin.apple_sdk.frameworks) Security;
bootstrapping = versionType == "bootstrap";
@ -26,14 +26,14 @@ rec {
inherit version;
inherit src;
meta = with stdenv.lib; {
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 ] ++ stdenv.lib.optional stdenv.isDarwin Security;
buildInputs = [ bash ] ++ lib.optional stdenv.isDarwin Security;
postPatch = ''
patchShebangs .
@ -60,7 +60,7 @@ rec {
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 '${stdenv.lib.getLib curl}/lib/libcurl.4.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
@ -80,14 +80,14 @@ rec {
inherit version;
inherit src;
meta = with stdenv.lib; {
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 ] ++ stdenv.lib.optional stdenv.isDarwin Security;
buildInputs = [ makeWrapper bash ] ++ lib.optional stdenv.isDarwin Security;
postPatch = ''
patchShebangs .
@ -107,7 +107,7 @@ rec {
${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 '${stdenv.lib.getLib curl}/lib/libcurl.4.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" \

View File

@ -0,0 +1,693 @@
# 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 <alex@alexcrichton.com>" ];
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";
};
}

View File

@ -0,0 +1,10 @@
{ callPackage, fetchFromGitHub }:
((callPackage ./cargo-vendor-carnix.nix {}).cargo_vendor {}).overrideAttrs (attrs: {
src = fetchFromGitHub {
owner = "alexcrichton";
repo = "cargo-vendor";
rev = "9355661303ce2870d68a69d99953fce22581e31e";
sha256 = "0d4j3r09am3ynwhczimzv39264f5xz37jxa9js123y46w5by3wd2";
};
})

View File

@ -0,0 +1,62 @@
{ 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;
};
}

View File

@ -50,6 +50,25 @@ let
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"'
@ -62,9 +81,15 @@ let
'';
};
in
runCommand "rustc" {}
''
mkdir -p $out/lib/rustlib/or1k-unknown-none/lib/
cp -r ${or1k-crates}/* $out/lib/rustlib/or1k-unknown-none/lib/
cp -r ${rustc_internal}/* $out
''
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" ];
}

View File

@ -1,4 +1,4 @@
{ stdenv, targetPackages
{ stdenv, lib, targetPackages
, fetchurl, file, python2, tzdata, ps
, llvm-or1k, ncurses, zlib, darwin, rustPlatform, git, cmake, curl
, which, libffi, gdb
@ -14,7 +14,7 @@
}:
let
inherit (stdenv.lib) optional optionalString;
inherit (lib) optional optionalString;
inherit (darwin.apple_sdk.frameworks) Security;
target = builtins.replaceStrings [" "] [","] (builtins.toString targets);
@ -26,7 +26,7 @@ let
in
stdenv.mkDerivation {
name = "rustc-${version}";
pname = "rustc";
inherit version;
inherit src;
@ -171,7 +171,7 @@ stdenv.mkDerivation {
# https://github.com/rust-lang/rust/issues/30181
# enableParallelBuilding = false;
meta = with stdenv.lib; {
meta = with lib; {
homepage = https://www.rust-lang.org/;
description = "A safe, concurrent, practical language";
maintainers = with maintainers; [ sb0 ];

20
artiq-fast/shell-dev.nix Normal file
View File

@ -0,0 +1,20 @@
{ pkgs ? import <nixpkgs> {}}:
let
artiqpkgs = import ./default.nix { inherit pkgs; };
vivado = import ./vivado.nix { inherit pkgs; };
in
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
artiqpkgs.rustc
artiqpkgs.binutils-or1k
artiqpkgs.binutils-arm
artiqpkgs.llvm-or1k
artiqpkgs.openocd
];
TARGET_AR="or1k-linux-ar";
}

24
artiq-fast/vivado.nix Normal file
View File

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

16
artiq-fast/wfvm.nix Normal file
View File

@ -0,0 +1,16 @@
{ 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 {}); }

View File

@ -0,0 +1,17 @@
{ 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";
})
]

View File

@ -0,0 +1,27 @@
{ 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/six-1.15.0-py_0.tar.bz2";
sha256 = "08rsfp9bd2mz8r120s8w5vgncy0gn732xa0lfgbmx833548cfqmb";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.1-py_0.tar.bz2";
sha256 = "0cbcd0jq6683ibj8ncsmmrbhbjvwww8i22lb68bx4xfzsmb9z8cb";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/noarch/cached-property-1.5.1-py_1.tar.bz2";
sha256 = "1yl6h3wb6hxgw79i7rpgpq260l5vqfcj5dv5kyxn8z99xdkp52q5";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.20-py_0.tar.bz2";
sha256 = "1qwcb07q8cjz0qpj6pfxb0qb68kddmx9bv9wr5pghwz78q8073z9";
})
]

View File

@ -0,0 +1,167 @@
{ 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";
})
]

View File

@ -0,0 +1,132 @@
{ pkgs } : [
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/regex-2020.5.14-py37he774522_0.tar.bz2";
sha256 = "125l0ywc17h5hlpidjbr7dxyz9c24xmfjllj19dmvbx8hdlmvp99";
})
(pkgs.fetchurl {
url = "https://conda.anaconda.org/conda-forge/win-64/python_abi-3.7-1_cp37m.tar.bz2";
sha256 = "04dllvrvczky7p7d82iqj7czmy5mm8w7h2gg0zpjzx0s09gkq09l";
})
(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/pip-20.1.1-py37_1.tar.bz2";
sha256 = "0wx0sdjq2kkdid4m0iss1bxjhpdk1lnrqsl3w7bqc0papz3gbx0a";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/mkl_fft-1.1.0-py37h45dec08_0.tar.bz2";
sha256 = "1v73rd107x1r77gv77cn2bv50hr15c0rwspzf7pdp93i5ydk7fm0";
})
(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://conda.anaconda.org/conda-forge/win-64/pygit2-1.2.1-py37h4ab8f01_0.tar.bz2";
sha256 = "1rj6bmf56g3imcrhfd67nqfzd5jjpnmbck714p6aqljxjw5x1zja";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/certifi-2020.6.20-py37_0.tar.bz2";
sha256 = "0601dwm5grhwnq7kvhz9sr49pw72ji8xbc28jc6z3pzihin243fy";
})
(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/vs2015_runtime-14.16.27012-hf0eaf9b_2.tar.bz2";
sha256 = "1gbm6i6nkp8linmak5mm42hj1nzqd5ppak8kv1n3wfn52p21ngvs";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/intel-openmp-2020.1-216.tar.bz2";
sha256 = "097kkdpd27gc5v5fwsanbrpvmkqricbkd2igglz0yym0x2rldgb8";
})
(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/pyqtgraph-0.10.0-py37h28b3542_3.tar.bz2";
sha256 = "1vfxym7lpiv624ll82yp07v2906chdzvczjj9xbvfvk2sk0w1nk7";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/python-levenshtein-0.12.0-py37he774522_1001.tar.bz2";
sha256 = "0wgk6wi4hcc1msv6467y8rhd3zpxrlb6dc0a4fg5wrvzww9wh4dx";
})
(pkgs.fetchurl {
url = "https://conda.anaconda.org/conda-forge/win-64/libgit2-1.0.0-h79a9ecc_0.tar.bz2";
sha256 = "1pi4hd4kah49wzy00iml5wpbscc0lx6ljk6lwnx92gas5z8856jd";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/setuptools-47.3.1-py37_0.tar.bz2";
sha256 = "1lljknly57bh73h30hn6vv826dx4vls736psa9jvf0d6l2kqrzrq";
})
(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_random-1.1.1-py37h47e9c7a_0.tar.bz2";
sha256 = "1f85bd7rrzdprgmk83v1klana32j016128fkxk8kpk7idfd36zqv";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/python-3.7.7-h81c818b_4.tar.bz2";
sha256 = "092bv939n68yjkcm7q626nd6s5kqqvdrgjfqn1nadnqig612w2p9";
})
(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/openssl-1.1.1g-he774522_0.tar.bz2";
sha256 = "1gwfj33qb8inikdhmgcm30iz1ag8x71lzicsxbdr7ni4153df5gb";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/scipy-1.5.0-py37h9439919_0.tar.bz2";
sha256 = "01pj0a82y9qd9z5fn5gv4argcc5g5s8kqj0lwjy9hj50qf6qwj76";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-1.18.5-py37h6530119_0.tar.bz2";
sha256 = "1knb5na7ij7ik76blsgwhdsy3i9r2l0154z5g5dkb2ds3sk878np";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/sqlite-3.32.3-h2a8f88b_0.tar.bz2";
sha256 = "1ddzwj0f6jikj6hsasg3vlwamsqhf5lc8k1la7gqbd77s11b8isc";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/numpy-base-1.18.5-py37hc3f5095_0.tar.bz2";
sha256 = "1dyxk2v7rm87najv3f8i04q44wxicfx9qrap9dy2vpqlrz3bj82j";
})
(pkgs.fetchurl {
url = "https://repo.anaconda.com/pkgs/main/win-64/mkl-2020.1-216.tar.bz2";
sha256 = "1klj0sjlj5x1anjbkf017f16ssc65dkpg1rrn06njirbhwsc9w5m";
})
]

View File

@ -0,0 +1,79 @@
#!/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 <nixpkgs> {};
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 06-22-20
call conda config --prepend channels https://conda.m-labs.hk/artiq-beta
call conda config --append channels conda-forge
call conda create -n artiq -y
call conda install --dry-run --json -n artiq artiq > packages.json
date 04-20-20
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

View File

@ -0,0 +1,10 @@
{ pkgs ? import <nixpkgs> {} }:
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

View File

@ -0,0 +1,60 @@
{ 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;
wfvm = import ../wfvm.nix { inherit pkgs; };
conda-deps = {
name = "conda-deps";
script = let
artiq6 = pkgs.lib.strings.versionAtLeast artiqpkgs.artiq.version "6.0";
qt-asyncio-package = if artiq6 then artiqpkgs.conda-qasync else artiqpkgs.conda-quamash;
conda-deps-noarch = import (if artiq6 then ./conda_noarch_packages.nix else ./conda_noarch_packages-legacy.nix) { inherit pkgs; };
conda-deps-win-64 = import (if artiq6 then ./conda_win-64_packages.nix else ./conda_win-64_packages-legacy.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) );
in
''
win-exec 'mkdir fake-channel && mkdir fake-channel\noarch && mkdir fake-channel\win-64'
${conda-packages-put}
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'
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"
'';
}

248
artiq-full.nix Normal file
View File

@ -0,0 +1,248 @@
{ a6p ? <a6p>
, artiq-fast ? (
if a6p
then <artiq-board-generated/fast>
else <artiq-fast>
)
, pkgs ? import (artiq-fast + "/pkgs/nixpkgs.nix") { inherit (import <nixpkgs> {}) fetchgit; } {}
}:
let
sinaraSystemsRev = builtins.readFile <artiq-board-generated/sinara-rev.txt>;
sinaraSystemsHash = builtins.readFile <artiq-board-generated/sinara-hash.txt>;
sinaraSystemsSrc =
if a6p
then pkgs.fetchgit {
url = "https://git.m-labs.hk/M-Labs/sinara-systems.git";
rev = sinaraSystemsRev;
sha256 = sinaraSystemsHash;
}
else <sinaraSystemsSrc>;
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 a6p
then ''
cp -a ${<artiq-board-generated>} $out/board-generated
ln -s board-generated/fast $out/fast
''
else "cp -a ${<artiq-fast>} $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 a6p
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 ./fast/pkgs/nixpkgs.nix { inherit (import <nixpkgs> {}) fetchgit; } {} }:
let
artiq-fast = import ${if a6p 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 a6p then "./board-generated" else "."}/fast/vivado.nix {
inherit pkgs;
};
artiq-board =
${if a6p
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;
}
''};
conda-artiq-board = import ./conda-artiq-board.nix { inherit pkgs; };
src = pkgs.fetchgit {
url = "https://git.m-labs.hk/M-Labs/sinara-systems.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};
drtio-systems = {
${pkgs.lib.optionalString a6p ''
berkeley3 = {
master = "berkeley3master";
satellites = {
"1" = "berkeley3satellite";
};
};
bonn1 = {
master = "bonn1master";
satellites = {
"1" = "bonn1satellite";
};
};
hw2 = {
master = "hw2master";
satellites = {
"1" = "hw2satellite";
};
};
ptb3 = {
master = "ptb3master";
satellites = {
"1" = "ptb3satellite";
};
};
purdue = {
master = "purduemaster";
satellites = {
"1" = "purduesatellite";
};
};
stfc = {
master = "stfcmaster";
satellites = {
"1" = "stfcsatellite";
};
};
wipm7 = {
master = "wipm7master";
satellites = {
"1" = "wipm7satellite";
};
};
''}
};
drtio-ddbs = pkgs.lib.attrsets.mapAttrs'
(system: crates: pkgs.lib.attrsets.nameValuePair ("device-db-" + system)
(pkgs.stdenv.mkDerivation {
name = "device-db-\''${system}";
buildInputs = ddbDeps;
phases = [ "buildPhase" ];
buildPhase = "
mkdir \$out
artiq_ddb_template \
\''${pkgs.lib.strings.concatStringsSep " " (pkgs.lib.attrsets.mapAttrsToList (dest: desc: "-s " + dest + " " + (src + "/\''${desc}.json")) crates.satellites) } \
\''${src}/\''${crates.master}.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
";
})) drtio-systems;
extras = import ./extras.nix { inherit pkgs; inherit (artiq-fast) sipyco asyncserial artiq; };
in
artiq-fast // artiq-targets // drtio-ddbs // 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; };
}

View File

@ -0,0 +1,125 @@
# 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 <<EOF
open_checkpoint top_route.dcp
'' +
(pkgs.lib.concatMapStrings ({ cell, init }:
''
set_property INIT ${init} [get_cell ${cell}]
''
) identifiers) +
''
source "top_bitstream.tcl"
EOF
vivado -mode batch -source top.tcl
'';
installPhase = ''
TARGET_DIR=$out/${installPath}
mkdir -p $TARGET_DIR
chmod a+r top.bit
cp top.bit $TARGET_DIR/
'';
# temporarily disabled because there is currently always at least one Kasli bitstream
# that fails timing and blocks the conda channel.
doCheck = false;
checkPhase = ''
# Search for PCREs in the Vivado output to check for errors
check_log() {
set +e
grep -Pe "$1" vivado.log
FOUND=$?
set -e
if [ $FOUND != 1 ]; then
exit 1
fi
}
check_log "\d+ constraint not met\."
check_log "Timing constraints are not met\."
'';
};
in
pkgs.python3Packages.toPythonModule (
pkgs.buildEnv rec {
inherit name;
paths = [ generated vivadoOutput ];
pathsToLink = [ "/${installPath}" ];
})

View File

@ -1,7 +1,7 @@
{ stdenv, lib, fetchgit, git, python3Packages, texlive, texinfo, sphinxcontrib-wavedrom }:
{ stdenv, lib, fetchgit, git, python3Packages, texlive, texinfo, sphinxcontrib-wavedrom, artiq-fast }:
let
artiqVersion = import ./artiq-version.nix { inherit stdenv fetchgit git; };
artiqVersion = import (artiq-fast + "/pkgs/artiq-version.nix") { inherit stdenv fetchgit git; };
isLatexPdfTarget = target: builtins.match "latexpdf.*" target != null;
@ -16,7 +16,7 @@ let
name = "artiq-manual-${target}-${version}";
version = artiqVersion;
src = import ./artiq-src.nix { inherit fetchgit; };
src = import (artiq-fast + "/pkgs/artiq-src.nix") { inherit fetchgit; };
buildInputs = [
python3Packages.sphinx python3Packages.sphinx_rtd_theme
python3Packages.sphinx-argparse sphinxcontrib-wavedrom
@ -26,7 +26,7 @@ let
preBuild = ''
export VERSIONEER_OVERRIDE=${artiqVersion}
export SOURCE_DATE_EPOCH=${import ./artiq-timestamp.nix { inherit stdenv fetchgit git; }}
export SOURCE_DATE_EPOCH=${import (artiq-fast + "/pkgs/artiq-timestamp.nix") { inherit stdenv fetchgit git; }}
cd doc/manual
'';
makeFlags = [ target ];

View File

@ -0,0 +1,65 @@
{ 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-sayma-rtm = {
target = "sayma";
variant = "rtm";
buildCommand = "python -m artiq.gateware.targets.sayma_rtm";
};
artiq-board-sayma-satellite = {
target = "sayma";
variant = "satellite";
buildCommand = "python -m artiq.gateware.targets.sayma_amc";
};
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 "6.0") {
artiq-board-sayma-satellite-st = {
target = "sayma";
variant = "satellite";
buildCommand = "python -m artiq.gateware.targets.sayma_amc --jdcg-type syncdds";
};
})

View File

@ -4,7 +4,7 @@
with pkgs;
let
version = import ./pkgs/artiq-version.nix (with pkgs; { inherit stdenv fetchgit git; });
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;
@ -28,7 +28,7 @@ let
about:
home: https://m-labs.hk/artiq
license: LGPL
summary: 'Bitstream, BIOS and firmware for the ${target}-${variant} board variant'
summary: 'Bitstream, bootloader and firmware for the ${target}-${variant} board variant'
EOF
cat << EOF > $out/fake-conda/build.sh
@ -40,7 +40,7 @@ let
EOF
chmod 755 $out/fake-conda/build.sh
'';
conda-artiq-board = import ./conda-build.nix { inherit pkgs; } {
conda-artiq-board = import ./fast/conda/build.nix { inherit pkgs; } {
name = "conda-artiq-board-${target}-${variant}";
src = fakeCondaSource;
};

View File

@ -0,0 +1,25 @@
{ 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"
''

View File

@ -0,0 +1,38 @@
{ 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
artiq-full.artiq-board-kasli-oregon
ps.paramiko
ps.pandas
ps.numpy
ps.scipy
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 # broken on 20.03
pkgs.R
];
} "touch $out";
}

248
artiq-full/extras.nix Normal file
View File

@ -0,0 +1,248 @@
{ 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 ? {}, withManual ? true}:
{
"${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 = "3d011bdadc41bb5d4b7e536fbfdb3744d9d9a6de";
sha256 = "1i6vk2j97fr1fnm6lzi5n33l6ldvcyfjgfxgr59pcpbz6xhbbgp2";
};
pythonOptions = {
propagatedBuildInputs = [ pkgs.python3Packages.flake8 ];
checkInputs = [ pkgs.python3Packages.pytest pkgs.python3Packages.mypy pkgs.python3Packages.flake8 ];
checkPhase =
''
pytest
mypy
flake8
'';
};
condaOptions = { dependencies = [ "flake8" ]; };
})

View File

@ -0,0 +1,24 @@
#!/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");

View File

@ -0,0 +1,43 @@
{ 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;
};
};
}

View File

@ -0,0 +1,56 @@
{ 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)

View File

@ -0,0 +1,30 @@
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 = ""

View File

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

View File

@ -1,172 +0,0 @@
{ pkgs, asyncserial, artiq }:
let
dualPackage = (
{ name, version, src, pythonOptions ? {}, condaOptions ? {}}:
{
"${name}" = pkgs.python3Packages.buildPythonPackage ({
inherit version;
name = "${name}-${version}";
inherit src;
} // pythonOptions);
"${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=${with pkgs; import ./pkgs/artiq-timestamp.nix { inherit 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
'';
};
"conda-${name}" = import ./conda-build.nix { inherit pkgs; } {
name = "conda-${name}";
src = import ./conda-fake-source.nix { inherit pkgs; } ({
inherit name version src;
} // condaOptions);
};
}
);
# 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.0";
src = pkgs.fetchFromGitHub {
owner = "m-labs";
repo = "korad_ka3005p";
rev = "e8c02ade175b842972f76a27919a4aaf8190de90";
sha256 = "1svgnx52amvy9xl0b2wkz0ii4ycjvjv96ac0g07zkxabdqm5ff65";
};
pythonOptions = { propagatedBuildInputs = [ asyncserial artiq ]; };
condaOptions = { dependencies = [ "asyncserial" ]; };
}) // (dualPackage {
name = "novatech409b";
version = "1.0";
src = pkgs.fetchFromGitHub {
owner = "m-labs";
repo = "novatech409b";
rev = "442e82e2234c0bf951da2084a77861f8977755c8";
sha256 = "032qgg48dy2k31vj0q8bfni0iy2kcyscd32bq60h701wvass6jv7";
};
pythonOptions = { propagatedBuildInputs = [ asyncserial artiq ]; };
condaOptions = { dependencies = [ "asyncserial" ]; };
}) // (dualPackage {
name = "lda";
version = "1.0";
src = pkgs.fetchFromGitHub {
owner = "m-labs";
repo = "lda";
rev = "4329da1497f496839ce20beebce0d79ed453941f";
sha256 = "00c15a03xy9vbca0j2zfy89l3ghbdmmv5wqfksm6pdwy4z036cwa";
};
pythonOptions = {
propagatedBuildInputs = [ artiq ];
postPatch = ''
substituteInPlace lda/hidapi.py \
--replace "hidapi_lib_path = None"\
"hidapi_lib_path = '${hidapi}/lib/libhidapi-libusb.so.0'"
'';
};
}) // (dualPackage {
name = "thorlabs_tcube";
version = "1.0";
src = pkgs.fetchFromGitHub {
owner = "m-labs";
repo = "thorlabs_tcube";
rev = "b72e7ba7de8355bd93dd20d53b6f15386dff229d";
sha256 = "1lqwqflwbfdykmhf6g0pwgiq7i2vf67ybj4l8n3jn16vny21b41s";
};
pythonOptions = { propagatedBuildInputs = [ asyncserial artiq ]; };
condaOptions = { dependencies = [ "asyncserial" ]; };
}) // (dualPackage {
name = "newfocus8742";
version = "0.1";
src = pkgs.fetchFromGitHub {
owner = "quartiq";
repo = "newfocus8742";
rev = "31a92595d1cb77d9256b891ec17eed0fbeceb1bc";
sha256 = "1dww0y83d4i6nma1q5hnaagih94c32bxlla5p6a5a8zkc4x2pky9";
};
pythonOptions = {
propagatedBuildInputs = [ pkgs.python3Packages.pyusb artiq ];
# no unit tests so do a simple smoke test
checkPhase = "python -m newfocus8742.aqctl_newfocus8742 --version";
};
}) // (dualPackage {
name = "hut2";
version = "0.1";
src = pkgs.fetchFromGitHub {
owner = "quartiq";
repo = "hut2";
rev = "acfd62dcd60d37250e2d1b691344c6e65b6e83eb";
sha256 = "0dpx3c5aclj7gki6iaybjbx9rqrxnwccpxcvjwp594ccbcswvclr";
};
pythonOptions = {
propagatedBuildInputs = [ artiq ];
# no unit tests without hardware so do a simple smoke test
checkPhase = "python -m hut2.aqctl_hut2 --version";
};
}) // 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.1";
name = "toptica-lasersdk-artiq-${version}";
src = pkgs.fetchFromGitHub {
owner = "quartiq";
repo = "lasersdk-artiq";
rev = "d38bb985e7ddffc9ac9d94fe136cac10947bfd72";
sha256 = "03a09lc81l2l787yjm0xjpnjvs5x77ndmks3xxh25yyxdhsdf1fl";
};
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 = [ toptica-lasersdk artiq ];
};
} // (dualPackage {
name = "highfinesse-net";
version = "0.1";
src = pkgs.fetchFromGitHub {
owner = "quartiq";
repo = "highfinesse-net";
rev = "6864ae5da5cbc67953b968010115db951e52a272";
sha256 = "1k8xacgam5xghxvljvdzpsdhhq86fra13hkvdy7y301s9nyp30s4";
};
pythonOptions = {
propagatedBuildInputs = [ artiq ];
# no unit tests without hardware so do a simple smoke test
checkPhase = "python -m highfinesse_net.aqctl_highfinesse_net --version";
};
})

View File

@ -1,18 +0,0 @@
[
"python >=3.5.3,<3.6"
"llvmlite-artiq 0.23.0.dev py35_5"
"binutils-or1k-linux >=2.27"
"pythonparser >=1.1"
"openocd 0.10.0 6"
"scipy"
"numpy"
"prettytable"
"h5py 2.8"
"python-dateutil"
"pyqt >=5.5"
"quamash"
"pyqtgraph 0.10.0"
"pygit2"
"aiohttp >=3"
"levenshtein"
]

View File

@ -1,16 +0,0 @@
{ pkgs }:
let
version = import ./pkgs/artiq-version.nix (with pkgs; { inherit stdenv fetchgit git; });
fakeCondaSource = import ./conda-fake-source.nix { inherit pkgs; } {
name = "artiq";
inherit version;
src = import ./pkgs/artiq-src.nix { fetchgit = pkgs.fetchgit; };
dependencies = import ./conda-artiq-deps.nix;
};
conda-artiq = import ./conda-build.nix { inherit pkgs; } {
name = "conda-artiq";
src = fakeCondaSource;
};
in
conda-artiq

View File

@ -1,44 +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, src, recipe ? "fake-conda"}:
with pkgs;
let
condaDeps = [ stdenv.cc xorg.libSM xorg.libICE xorg.libXrender libselinux ];
# 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-2018.12-Linux-x86_64.sh";
sha256 = "006fgyz75ihd00qzbr1cny97xf1mwnzibbqyhskghraqgs2x068h";
};
condaSrcChmod = runCommand "conda-src-chmod" { } "mkdir $out; cp ${condaInstaller} $out/conda-installer.sh; chmod +x $out/conda-installer.sh";
condaInstallerEnv = buildFHSUserEnv {
name = "conda-installer-env";
targetPkgs = pkgs: ([ condaSrcChmod ] ++ condaDeps);
};
condaInstalled = runCommand "conda-installed" { }
''
${condaInstallerEnv}/bin/conda-installer-env -c "${condaSrcChmod}/conda-installer.sh -p $out -b"
'';
condaBuilderEnv = buildFHSUserEnv {
name = "conda-builder-env";
targetPkgs = pkgs: [ condaInstalled ] ++ condaDeps;
};
in stdenv.mkDerivation {
inherit name src;
buildInputs = [ condaBuilderEnv ];
buildCommand =
''
HOME=`pwd`
mkdir $out
${condaBuilderEnv}/bin/conda-builder-env -c "PYTHON=python conda build --no-anaconda-upload --no-test --output-folder $out $src/${recipe}"
mkdir -p $out/nix-support
echo file conda $out/noarch/*.tar.bz2 >> $out/nix-support/hydra-build-products
'';
}

View File

@ -1,47 +0,0 @@
{ pkgs ? import <nixpkgs> {}}:
with pkgs;
let
pythonDeps = callPackage ./pkgs/python-deps.nix {};
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; } {
target = board.target;
variant = board.variant;
};
in
start // {
"artiq-board-${board.target}-${board.variant}" = boardBinaries;
"conda-artiq-board-${board.target}-${board.variant}" = import ./conda-artiq-board.nix { inherit pkgs; } {
target = board.target;
variant = board.variant;
boardBinaries = boardBinaries;
};
}) {} boards;
manualPackages = import ./pkgs/artiq-manual.nix {
inherit stdenv lib fetchgit git python3Packages texlive texinfo;
inherit (pythonDeps) sphinxcontrib-wavedrom;
};
mainPackages = rec {
inherit (pythonDeps) asyncserial levenshtein pythonparser quamash pyqtgraph-qt5 misoc migen microscope jesd204b lit outputcheck wavedrom sphinxcontrib-wavedrom;
binutils-or1k = callPackage ./pkgs/binutils-or1k.nix {};
llvm-or1k = callPackage ./pkgs/llvm-or1k.nix {};
rustc = callPackage ./pkgs/rust
((stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}) //
{ inherit llvm-or1k; });
llvmlite-artiq = callPackage ./pkgs/llvmlite-artiq.nix { inherit llvm-or1k; };
libartiq-support = callPackage ./pkgs/libartiq-support.nix { inherit rustc; };
artiq = callPackage ./pkgs/artiq.nix { inherit binutils-or1k 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 {};
conda-artiq = import ./conda-artiq.nix { inherit pkgs; };
} // boardPackages // manualPackages;
extraPackages = import ./artiq-extras.nix { inherit pkgs; inherit (mainPackages) asyncserial artiq; };
in
mainPackages // extraPackages

View File

@ -1,15 +0,0 @@
{ stdenv, git, fetchgit }:
let
artiq-version = stdenv.mkDerivation {
name = "artiq-version";
src = import ./artiq-src.nix { inherit fetchgit; };
buildPhase = ''
REV=`${git}/bin/git rev-parse HEAD`
COMMITCOUNT=`${git}/bin/git rev-list --count HEAD`
'';
installPhase = ''
echo -n 5.$COMMITCOUNT.`cut -c1-8 <<< $REV`.beta > $out
'';
};
in
builtins.readFile artiq-version

View File

@ -1,29 +0,0 @@
{ stdenv, callPackage, fetchgit, git, python3Packages, qt5Full, binutils-or1k, llvm-or1k, llvmlite-artiq, libartiq-support, lit, outputcheck }:
let
pythonDeps = callPackage ./python-deps.nix {};
in
python3Packages.buildPythonPackage rec {
name = "artiq-${version}";
version = import ./artiq-version.nix { inherit stdenv fetchgit git; };
src = import ./artiq-src.nix { inherit fetchgit; };
preBuild = "export VERSIONEER_OVERRIDE=${version}";
propagatedBuildInputs = [ binutils-or1k llvm-or1k llvmlite-artiq qt5Full ]
++ (with pythonDeps; [ levenshtein pyqtgraph-qt5 quamash pythonparser ])
++ (with python3Packages; [ aiohttp pygit2 numpy dateutil scipy prettytable pyserial h5py pyqt5 ]);
checkInputs = [ binutils-or1k outputcheck ];
checkPhase =
''
python -m unittest discover -v artiq.test
TESTDIR=`mktemp -d`
cp --no-preserve=mode,ownership -R ${src}/artiq/test/lit $TESTDIR
LIBARTIQ_SUPPORT=${libartiq-support}/libartiq_support.so ${lit}/bin/lit -v $TESTDIR/lit
'';
meta = with stdenv.lib; {
description = "A leading-edge control system for quantum information experiments";
homepage = https://m-labs/artiq;
license = licenses.lgpl3;
maintainers = [ maintainers.sb0 ];
};
}

View File

@ -1,244 +0,0 @@
{ stdenv, fetchFromGitHub, python, python3Packages }:
rec {
# User dependencies
asyncserial = python3Packages.buildPythonPackage rec {
name = "asyncserial";
src = fetchFromGitHub {
owner = "m-labs";
repo = "asyncserial";
rev = "d95bc1d6c791b0e9785935d2f62f628eb5cdf98d";
sha256 = "0yzkka9jk3612v8gx748x6ziwykq5lr7zmr9wzkcls0v2yilqx9k";
};
propagatedBuildInputs = with python3Packages; [ pyserial ];
doCheck = false;
};
levenshtein = python3Packages.buildPythonPackage rec {
name = "levenshtein";
src = fetchFromGitHub {
owner = "ztane";
repo = "python-Levenshtein";
rev = "854e61a05bb8b750e990add96df412cd5448b75e";
sha256 = "1yf21kg1g2ivm5a4dx1jra9k0c33np54d0hk5ymnfyc4f6pg386q";
};
doCheck = false;
};
pythonparser = python3Packages.buildPythonPackage rec {
name = "pythonparser";
src = fetchFromGitHub {
owner = "m-labs";
repo = "pythonparser";
rev = "5b391fe86f43bb9f4f96c5bc0532e2a112db2936";
sha256 = "1gw1fk4y2l6bwq0fg2a9dfc1rvq8cv492dyil96amjdhsxvnx35b";
};
patches = [ ./python37hack.patch ];
propagatedBuildInputs = with python3Packages; [ regex ];
};
quamash = python3Packages.buildPythonPackage rec {
name = "quamash";
src = fetchFromGitHub {
owner = "harvimt";
repo = "quamash";
rev = "e513b30f137415c5e098602fa383e45debab85e7";
sha256 = "117rp9r4lz0kfz4dmmpa35hp6nhbh6b4xq0jmgvqm68g9hwdxmqa";
};
propagatedBuildInputs = with python3Packages; [ pyqt5 ];
doCheck = false;
};
pyqtgraph-qt5 = python3Packages.buildPythonPackage rec {
name = "pyqtgraph_qt5-${version}";
version = "0.10.0";
doCheck = false;
src = fetchFromGitHub {
owner = "pyqtgraph";
repo = "pyqtgraph";
rev = "1426e334e1d20542400d77c72c132b04c6d17ddb";
sha256 = "1079haxyr316jf0wpirxdj0ry6j8mr16cqr0dyyrd5cnxwl7zssh";
};
propagatedBuildInputs = with python3Packages; [ scipy numpy pyqt5 pyopengl ];
};
# TODO: use python3Packages.pyftdi starting with NixOS 19.09 or later
# Upstream PR: https://github.com/NixOS/nixpkgs/pull/61256
pyftdi = python3Packages.buildPythonPackage rec {
name = "pyftdi";
src = fetchFromGitHub {
owner = "eblot";
repo = "pyftdi";
rev = "8e6f0bab6cff3eb60d2dbe578d0c5a2d1a9e135c";
sha256 = "0mw79fjnvswa0j3bzr0y906rz1vjbr8lwy0albgvsfr0ngwbajqy";
};
propagatedBuildInputs = with python3Packages; [ pyusb pyserial ];
};
# Development/firmware dependencies
misoc = python3Packages.buildPythonPackage rec {
name = "misoc";
src = fetchFromGitHub {
owner = "m-labs";
repo = "misoc";
rev = "6e9c1a894312a81b534482949cbfc5f47842edd9";
sha256 = "0y4jh60bmpzzh06k2gzxl3pqzbvvg8ipz029hvmi8d05hzf4kcf3";
fetchSubmodules = true;
};
# TODO: fix misoc bitrot and re-enable tests
doCheck = false;
propagatedBuildInputs = with python3Packages; [ pyserial jinja2 numpy asyncserial migen ];
meta = with stdenv.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 {
name = "migen";
src = fetchFromGitHub {
owner = "m-labs";
repo = "migen";
rev = "bc903441a5a27cb36b6961c29529ff98cd94f1ec";
sha256 = "0rjjhbh6m2r5w71cvyzbh90wgykm1ygsxj1h5f5z87zka3dfvxwn";
};
propagatedBuildInputs = with python3Packages; [ colorama sphinx sphinx_rtd_theme ];
meta = with stdenv.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 {
name = "microscope";
src = fetchFromGitHub {
owner = "m-labs";
repo = "microscope";
rev = "bcbc5346c71ad8f7a1a0b7771a9d126b18fdf558";
sha256 = "1hslm2nn2z1bl84ya4fsab3pvcdmbziwn7zkai0cm3bv525fjxxd";
};
propagatedBuildInputs = with python3Packages; [ pyserial prettytable msgpack migen ];
meta = with stdenv.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 {
name = "jesd204b";
src = fetchFromGitHub {
owner = "m-labs";
repo = "jesd204b";
rev = "2fd6391c0a9197580d60f7d8a146191dc7337b03";
sha256 = "1lhw8f0dp42xx4g6d7hyhqhrnd6i5ll4a1wcg265rqz3600i4009";
};
propagatedBuildInputs = with python3Packages; [ migen misoc ];
meta = with stdenv.lib; {
description = "JESD204B core for Migen/MiSoC";
homepage = "https://m-labs.hk/migen";
license = licenses.bsd2;
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 stdenv.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 stdenv.lib; {
description = "A tool for checking tool output inspired by LLVM's FileCheck";
homepage = "https://github.com/stp/OutputCheck";
license = licenses.bsd3;
};
};
# Documentation building dependencies
wavedrom = python3Packages.buildPythonPackage rec {
pname = "wavedrom";
version = "0.1";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "006w683zlmmwcw5xz1n5dwg34ims5jg3gl2700ql4wr0myjz6710";
};
buildInputs = [ python3Packages.setuptools_scm ];
propagatedBuildInputs = with python3Packages; [ svgwrite attrdict ];
doCheck = false;
meta = with stdenv.lib; {
description = "WaveDrom compatible Python module and command line";
homepage = "https://pypi.org/project/wavedrom/";
license = licenses.mit;
};
};
sphinxcontrib-wavedrom = python3Packages.buildPythonPackage rec {
pname = "sphinxcontrib-wavedrom";
version = "2.0.0";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "0nk36zqq5ipxqx9izz2iazb3iraasanv3nm05bjr21gw42zgkz22";
};
buildInputs = [ python3Packages.setuptools_scm ];
propagatedBuildInputs = [ wavedrom ] ++ (with python3Packages; [ sphinx xcffib cairosvg ]);
doCheck = false;
meta = with stdenv.lib; {
description = "A Sphinx extension that allows including WaveDrom diagrams";
homepage = "https://pypi.org/project/sphinxcontrib-wavedrom/";
license = licenses.mit;
};
};
}

View File

@ -1,6 +0,0 @@
{ pkgs ? import <nixpkgs> {}}:
let
artiq-dev = import ./artiq-dev.nix { inherit pkgs; };
in
artiq-dev.env

View File

@ -1,25 +0,0 @@
# Preparation steps
## Install a Windows image
```shell
nix-build install.nix -I artiqSrc=…/artiq
result/bin/windows-installer.sh
```
Follow the instructions.
## Install Anaconda to the image
```shell
result/bin/anaconda-installer.sh
```
Move the image `c.img` to one of Nix' `extra-sandbox-paths` (`nix.sandboxPaths` on NixOS).
# Running the tests manually
```shell
nix-build --pure --arg diskImage "\"…/c.img\"" -I artiqSrc=…/artiq manual-test-run.nix
```

View File

@ -1,91 +0,0 @@
{ pkgs ? import <nixpkgs> {},
diskImageSize ? "22G",
qemuMem ? "4G",
}:
with pkgs;
let
windowsIso = fetchurl {
url = "https://software-download.microsoft.com/download/sg/17763.107.101029-1455.rs5_release_svc_refresh_CLIENT_LTSC_EVAL_x64FRE_en-us.iso";
sha256 = "668fe1af70c2f7416328aee3a0bb066b12dc6bbd2576f40f812b95741e18bc3a";
};
anaconda = fetchurl {
url = "https://repo.anaconda.com/archive/Anaconda3-2019.03-Windows-x86_64.exe";
sha256 = "1f9icm5rwab6l1f23a70dw0qixzrl62wbglimip82h4zhxlh3jfj";
};
escape = builtins.replaceStrings [ "\\" ] [ "\\\\" ];
qemu = import ./qemu.nix {
inherit pkgs qemuMem;
diskImage = "c.img";
};
# Double-escape because we produce a script from a shell heredoc
ssh = cmd: qemu.ssh (escape cmd);
scp = qemu.scp;
sshCondaEnv = cmd: ssh "anaconda\\scripts\\activate && ${cmd}";
condaEnv = "artiq-env";
condaDepSpecs =
builtins.concatStringsSep " "
(map (s: "\"${s}\"")
(import ../conda-artiq-deps.nix));
instructions =
builtins.toFile "install.txt"
(builtins.readFile ./install.txt);
in
stdenv.mkDerivation {
name = "windows-installer";
src = windowsIso;
setSourceRoot = "sourceRoot=`pwd`";
unpackCmd = ''
ln -s $curSrc windows.iso
'';
propagatedBuildInputs = qemu.inputs;
dontBuild = true;
installPhase = ''
mkdir -p $out/bin $out/data
ln -s $(readlink windows.iso) $out/data/windows.iso
cat > $out/bin/windows-installer.sh << EOF
#!/usr/bin/env bash
set -e -m
${qemu.qemu-img} create -f qcow2 c.img ${diskImageSize}
${qemu.runQemu false [] [
"-boot" "order=d"
"-drive" "file=c.img,index=0,media=disk,cache=unsafe"
"-drive" "file=$out/data/windows.iso,index=1,media=cdrom,cache=unsafe"
]} &
cat ${instructions}
wait
EOF
cat > $out/bin/anaconda-installer.sh << EOF
#!/usr/bin/env bash
set -e -m
${qemu.runQemu false [] [
"-boot" "order=c"
"-drive" "file=c.img,index=0,media=disk"
]} &
sleep 10
${ssh "ver"}
${scp anaconda "Anaconda.exe"}
${ssh "start /wait \"\" Anaconda.exe /S /D=%cd%\\anaconda"}
${sshCondaEnv "conda config --add channels conda-forge"}
${sshCondaEnv "conda config --add channels m-labs"}
( ${sshCondaEnv "conda update -y conda"} ) || true
${sshCondaEnv "conda update -y --all"}
${sshCondaEnv "conda create -y -n ${condaEnv}"}
${sshCondaEnv "conda install -y -n ${condaEnv} ${condaDepSpecs}"}
${ssh "shutdown /p /f"}
echo "Waiting for qemu exit"
wait
EOF
chmod a+x $out/bin/*.sh
'';
}

View File

@ -1,13 +0,0 @@
Add user account with expected password [user/user].
Enable the OpenSSH server:
- "Add or remove programs"
- "Manage optional features"
- "Add a feature"
- "OpenSSH Server"
- "Install"
- Open "Services"
- Double-click the "OpenSSH SSH Server" service
- Set "Startup type" to "Automatic"
- "Start"
- "Ok"
Then press ENTER here to proceed with automatic installation

View File

@ -1,27 +0,0 @@
# This runs `run-test.nix` with `nix-build`
{ pkgs ? import <nixpkgs> {},
diskImage ? "/opt/windows/c.img",
qemuMem ? "2G",
testTimeout ? 180,
}:
with pkgs;
let
windowsRunner = overrides:
import ./run-test.nix ({
inherit pkgs diskImage qemuMem testTimeout;
} // overrides);
in
stdenv.mkDerivation {
name = "windows-test";
phases = [ "installPhase" "checkPhase" ];
installPhase = "touch $out";
doCheck = true;
checkPhase = ''
${windowsRunner { testCommand = "set ARTIQ_ROOT=%cd%\\anaconda\\envs\\artiq-env\\Lib\\site-packages\\artiq\\examples\\kc705_nist_clock&&python -m unittest discover -v artiq.test"; }}/bin/run.sh
'';
}

View File

@ -1,54 +0,0 @@
{ pkgs,
diskImage,
qemuMem,
sshUser ? "user",
sshPassword ? "user",
}:
with pkgs;
let
qemu-img = "${qemu_kvm}/bin/qemu-img";
runQemu = isolateNetwork: forwardedPorts: extraArgs:
let
restrict =
if isolateNetwork
then "on"
else "off";
# use socat instead of `tcp:…` to allow multiple connections
guestfwds =
builtins.concatStringsSep ""
(map ({ listenAddr, targetAddr, port }:
",guestfwd=tcp:${listenAddr}:${toString port}-cmd:${socat}/bin/socat\\ -\\ tcp:${targetAddr}:${toString port}"
) forwardedPorts);
args = [
"-enable-kvm"
"-m" qemuMem
"-bios" "${OVMF.fd}/FV/OVMF.fd"
"-netdev" "user,id=n1,net=192.168.1.0/24,restrict=${restrict},hostfwd=tcp::2022-:22${guestfwds}"
"-device" "e1000,netdev=n1"
];
argStr = builtins.concatStringsSep " " (args ++ extraArgs);
in "${qemu_kvm}/bin/qemu-system-x86_64 ${argStr}";
# Pass empty config file to prevent ssh from failing to create ~/.ssh
sshOpts = "-F /dev/null -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=\$TMP/known_hosts";
ssh = cmd: ''
echo ssh windows '${cmd}'
${sshpass}/bin/sshpass -p${sshPassword} -- \
${openssh}/bin/ssh -np 2022 ${sshOpts} \
${sshUser}@localhost \
'${cmd}'
'';
scp = src: target: ''
echo "Copy ${src} to ${target}"
${sshpass}/bin/sshpass -p${sshPassword} -- \
${openssh}/bin/scp -P 2022 ${sshOpts} \
"${src}" "${sshUser}@localhost:${target}"
'';
in
{
inherit qemu-img runQemu ssh scp;
inputs = [ qemu_kvm openssh sshpass ];
}

View File

@ -1,80 +0,0 @@
{ pkgs,
diskImage ? "/opt/windows/c.img",
qemuMem ? "2G",
testTimeout ? 600,
artiqPkg ? import ../conda-artiq.nix { inherit pkgs; },
testCommand ? "python -m unittest discover -v artiq.test",
}:
with pkgs;
let
escape = builtins.replaceStrings [ "\\" ] [ "\\\\" ];
qemu = import ./qemu.nix {
inherit pkgs qemuMem;
diskImage = "c.img";
};
# Double-escape because we produce a script from a shell heredoc
ssh = cmd: qemu.ssh (escape cmd);
scp = qemu.scp;
condaEnv = "artiq-env";
tcpPorts = [ 1380 1381 1382 1383 ];
forwardedPorts =
map (port: {
listenAddr = "192.168.1.50";
targetAddr = "192.168.1.50";
inherit port;
}) tcpPorts;
in
stdenv.mkDerivation {
name = "windows-test-runner";
src = ./.;
propagatedBuildInputs = qemu.inputs;
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cat > $out/bin/run.sh << EOF
#!/usr/bin/env bash
set -e -m
# +1 day from last modification of the disk image
CLOCK=$(date -Is -d @$(expr $(stat -c %Y ${diskImage}) + 86400))
${qemu.runQemu true forwardedPorts [
"-boot" "order=c"
"-snapshot"
"-drive" "file=${diskImage},index=0,media=disk,cache=unsafe"
"-rtc" "base=\\$CLOCK"
"-display" "none"
]} &
echo "Wait for Windows to boot"
sleep 10
${ssh "ver"}
for pkg in ${artiqPkg}/noarch/artiq*.tar.bz2 ; do
${scp "\\$pkg" "artiq.tar.bz2"}
${ssh "anaconda\\scripts\\activate ${condaEnv} && conda install artiq.tar.bz2"}
done
# Schedule a timed shutdown against hanging test runs
${ssh "shutdown -s -t ${toString testTimeout}"}
FAIL=n
( ${ssh "anaconda\\scripts\\activate ${condaEnv} && ${testCommand}"} ) || FAIL=y
# Abort timeouted shutdown
${ssh "shutdown -a"}
# Power off immediately
${ssh "shutdown -p -f"}
wait
if [ "\$FAIL" = "y" ]; then
exit 1
else
exit 0
fi
EOF
chmod a+x $out/bin/run.sh
'';
}

6
gluelogic.nix Normal file
View File

@ -0,0 +1,6 @@
{ pkgs ? import <nixpkgs> {} }:
let
jobs = import ./gluelogic/default.nix { inherit pkgs; };
in
builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) jobs

105
gluelogic/default.nix Normal file
View File

@ -0,0 +1,105 @@
{ pkgs ? import <nixpkgs> {} }:
let
artiqpkgs = import ../artiq-fast/pkgs/python-deps.nix { inherit (pkgs) stdenv fetchgit fetchFromGitHub python3Packages; misoc-new = true; };
ise = import ./ise.nix { inherit pkgs; };
vivado = import ../artiq-fast/vivado.nix { inherit pkgs; };
buildUrukulCpld = {version, src}: pkgs.stdenv.mkDerivation {
pname = "urukul-cpld";
inherit src version;
buildInputs = [(pkgs.python3.withPackages(ps: [artiqpkgs.migen]))] ++ (builtins.attrValues ise);
phases = ["buildPhase" "installPhase"];
buildPhase = "python $src/urukul_impl.py";
installPhase =
''
mkdir -p $out $out/nix-support
cp build/urukul.jed $out
echo file binary-dist $out/urukul.jed >> $out/nix-support/hydra-build-products
'';
};
buildMirnyCpld = {version, src}: pkgs.stdenv.mkDerivation {
pname = "mirny-cpld";
inherit src version;
buildInputs = [(pkgs.python3.withPackages(ps: [artiqpkgs.migen]))] ++ (builtins.attrValues ise);
phases = ["buildPhase" "installPhase"];
buildPhase = "python $src/mirny_impl.py";
installPhase =
''
mkdir -p $out $out/nix-support
cp build/mirny.jed $out
echo file binary-dist $out/mirny.jed >> $out/nix-support/hydra-build-products
'';
};
in
{
urukul-cpld-master = buildUrukulCpld {
version = "master";
src = <urukulSrc>;
};
urukul-cpld-release = buildUrukulCpld rec {
version = "1.4.0";
src = pkgs.fetchFromGitHub {
owner = "quartiq";
repo = "urukul";
rev = "v${version}";
sha256 = "1962jpzqzn22cwkcmfnvwqlj5i89pljhgfk64n6pk73clir9mp0w";
};
};
urukul-cpld-legacy = buildUrukulCpld rec {
version = "1.3.1";
src = pkgs.fetchFromGitHub {
owner = "quartiq";
repo = "urukul";
rev = "v${version}";
sha256 = "1nvarspqbf9f7b27j34jkkh4mj6rwrlmccmfpz5nnzk3h2j6zbqc";
};
};
mirny-cpld-master = buildMirnyCpld {
version = "master";
src = <mirnySrc>;
};
mirny-cpld-release = buildMirnyCpld rec {
version = "0.2.4";
src = pkgs.fetchFromGitHub {
owner = "quartiq";
repo = "mirny";
rev = "v${version}";
sha256 = "0fyz0g1h1s54zdivkfqhgyhpq7gjkl9kxkcfy3104p2f889l1vgw";
};
};
fastino-fpga = pkgs.stdenv.mkDerivation {
name = "fastino-fpga";
src = <fastinoSrc>;
buildInputs = [(pkgs.python3.withPackages(ps: [artiqpkgs.migen artiqpkgs.misoc]))] ++ [pkgs.yosys pkgs.nextpnr pkgs.icestorm];
phases = ["buildPhase" "installPhase"];
buildPhase = "python $src/fastino_phy.py";
installPhase =
''
mkdir -p $out $out/nix-support
cp build/fastino.bin $out
echo file binary-dist $out/fastino.bin >> $out/nix-support/hydra-build-products
'';
};
phaser-fpga = pkgs.stdenv.mkDerivation {
name = "phaser-fpga";
src = <phaserSrc>;
patchPhase = ''
substituteInPlace phaser.py \
--replace "source ../load.tcl" \
""
'';
buildInputs = [ (pkgs.python3.withPackages(ps: [ artiqpkgs.migen artiqpkgs.misoc ])) ] ++ [ vivado ];
buildPhase = "python phaser.py";
installPhase =
''
mkdir -p $out $out/nix-support
cp build/phaser.bit $out
echo file binary-dist $out/phaser.bit >> $out/nix-support/hydra-build-products
'';
dontFixup = true;
doCheck = true;
checkInputs = [ pkgs.python3Packages.pytest ];
checkPhase = "pytest";
};
}

31
gluelogic/ise.nix Normal file
View File

@ -0,0 +1,31 @@
# Install ISE in /opt and add to /etc/nixos/configuration.nix:
# nix.sandboxPaths = ["/opt"];
{ pkgs, isePath ? "/opt/Xilinx/14.7/ISE_DS" }:
let
makeXilinxEnv = name: pkgs.buildFHSUserEnv {
inherit name;
targetPkgs = pkgs: (
with pkgs; [
ncurses5
zlib
libuuid
xorg.libSM
xorg.libICE
xorg.libXrender
xorg.libX11
xorg.libXext
xorg.libXtst
xorg.libXi
]
);
profile =
''
source ${isePath}/common/.settings64.sh ${isePath}/common
source ${isePath}/ISE/.settings64.sh ${isePath}/ISE
'';
runScript = name;
};
in
pkgs.lib.attrsets.genAttrs ["xst" "ngdbuild" "cpldfit" "taengine" "hprep6"] makeXilinxEnv

View File

@ -1,16 +1,187 @@
{
"enabled": 1,
"hidden": true,
"description": "js",
"nixexprinput": "nixScripts",
"nixexprpath": "hydra/artiq.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs-channels nixos-19.03", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }
"fast-beta": {
"enabled": 1,
"hidden": false,
"description": "Core ARTIQ packages to build fast for CI purposes (beta version)",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-fast.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/nix-scripts.git", "emailresponsible": false },
"artiqSrc": { "type": "git", "value": "git://github.com/m-labs/artiq.git master 1", "emailresponsible": false }
}
},
"board-generated-beta": {
"enabled": 1,
"hidden": false,
"description": "Generated code for ARTIQ boards (beta version)",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-board-generated",
"checkinterval": 14400,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/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-beta:generated-nix", "emailresponsible": false }
}
},
"full-beta": {
"enabled": 1,
"hidden": false,
"description": "Full set of ARTIQ packages (beta version)",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-full.nix",
"checkinterval": 86400,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/nix-scripts.git", "emailresponsible": false },
"a6p": { "type": "boolean", "value": "true" },
"artiq-board-generated": { "type": "sysbuild", "value": "artiq:board-generated-beta:generated-nix", "emailresponsible": false }
}
},
"fast": {
"enabled": 1,
"hidden": false,
"description": "Core ARTIQ packages to build fast for CI purposes",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-fast.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/nix-scripts.git", "emailresponsible": false },
"artiqSrc": { "type": "git", "value": "git://github.com/m-labs/artiq.git release-6 1", "emailresponsible": false }
}
},
"board-generated": {
"enabled": 1,
"hidden": false,
"description": "Generated code for ARTIQ boards",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-board-generated",
"checkinterval": 14400,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/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 }
}
},
"full": {
"enabled": 1,
"hidden": false,
"description": "Full set of ARTIQ packages",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-full.nix",
"checkinterval": 86400,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/nix-scripts.git", "emailresponsible": false },
"a6p": { "type": "boolean", "value": "true" },
"artiq-board-generated": { "type": "sysbuild", "value": "artiq:board-generated:generated-nix", "emailresponsible": false }
}
},
"fast-legacy": {
"enabled": 1,
"hidden": false,
"description": "Core ARTIQ packages to build fast for CI purposes (legacy version)",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-fast.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.03", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/nix-scripts.git", "emailresponsible": false },
"artiqSrc": { "type": "git", "value": "git://github.com/m-labs/artiq.git release-5 1", "emailresponsible": false }
}
},
"full-legacy": {
"enabled": 1,
"hidden": false,
"description": "Full set of ARTIQ packages (legacy version)",
"nixexprinput": "nixScripts",
"nixexprpath": "artiq-full.nix",
"checkinterval": 86400,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.03", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/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" },
"artiq-fast": { "type": "sysbuild", "value": "artiq:fast-legacy:generated-nix", "emailresponsible": false }
}
},
"gluelogic": {
"enabled": 1,
"hidden": false,
"description": "Glue logic gateware for Sinara devices",
"nixexprinput": "nixScripts",
"nixexprpath": "gluelogic.nix",
"checkinterval": 172800,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/nix-scripts.git", "emailresponsible": false },
"urukulSrc": { "type": "git", "value": "git://github.com/quartiq/urukul", "emailresponsible": false },
"mirnySrc": { "type": "git", "value": "git://github.com/quartiq/mirny", "emailresponsible": false },
"fastinoSrc": { "type": "git", "value": "git://github.com/quartiq/fastino", "emailresponsible": false },
"phaserSrc": { "type": "git", "value": "git://github.com/quartiq/phaser", "emailresponsible": false }
}
},
"zynq": {
"enabled": 1,
"hidden": false,
"description": "ARTIQ on Zynq",
"nixexprinput": "nixScripts",
"nixexprpath": "zynq.nix",
"checkinterval": 300,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 1,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/astro/nix-scripts.git", "emailresponsible": false },
"artiq-fast": { "type": "sysbuild", "value": "artiq:fast:generated-nix", "emailresponsible": false },
"zynq-rs": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/zynq-rs.git", "emailresponsible": false },
"artiq-zynq": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/artiq-zynq.git", "emailresponsible": false }
}
}
}

View File

@ -1,45 +0,0 @@
{ pkgs ? import <nixpkgs> {}}:
{
jobsets = pkgs.runCommand "spec.json" {}
''
cat > $out << EOF
{
"main": {
"enabled": 1,
"hidden": false,
"description": "Main ARTIQ packages and board support packages for HITL CI",
"nixexprinput": "nixScripts",
"nixexprpath": "main.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs-channels nixos-19.03", "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 master 1", "emailresponsible": false }
}
},
"sinara-systems": {
"enabled": 1,
"hidden": false,
"description": "Board support packages for other Sinara systems",
"nixexprinput": "nixScripts",
"nixexprpath": "sinara-systems.nix",
"checkinterval": 86400,
"schedulingshares": 1,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs-channels nixos-19.03", "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 },
"m-labs": { "type": "sysbuild", "value": "artiq:main:generated-nix", "emailresponsible": false }
}
}
}
EOF
'';
}

View File

@ -1,16 +0,0 @@
{
"enabled": 1,
"hidden": true,
"description": "js",
"nixexprinput": "nixScripts",
"nixexprpath": "hydra/fpga.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs-channels nixos-unstable", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }
}
}

View File

@ -1,26 +0,0 @@
{ pkgs ? import <nixpkgs> {}}:
{
jobsets = pkgs.runCommand "spec.json" {}
''
cat > $out << EOF
{
"heavyx": {
"enabled": 1,
"hidden": false,
"description": "HeavyX SoC toolkit experiment",
"nixexprinput": "heavyx",
"nixexprpath": "release.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs-channels nixos-unstable", "emailresponsible": false },
"heavyx": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/HeavyX.git", "emailresponsible": false }
}
}
}
EOF
'';
}

23
hydra/mcu.json Normal file
View File

@ -0,0 +1,23 @@
{
"mcu": {
"enabled": 1,
"hidden": false,
"description": "MCU firmware",
"nixexprinput": "nixScripts",
"nixexprpath": "mcu.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.09", "emailresponsible": false },
"mozillaOverlay": { "type": "git", "value": "git://github.com/mozilla/nixpkgs-mozilla.git", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false },
"stabilizerSrc": { "type": "git", "value": "git://github.com/quartiq/stabilizer.git", "emailresponsible": false },
"thermostatSrc": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/thermostat.git", "emailresponsible": false },
"humpbackDdsSrc": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/humpback-dds.git", "emailresponsible": false },
"saymaMmcSrc": { "type": "git", "value": "git://github.com/sinara-hw/openMMC sayma-devel", "emailresponsible": false }
}
}
}

View File

@ -1,16 +0,0 @@
{
"enabled": 1,
"hidden": true,
"description": "js",
"nixexprinput": "nixScripts",
"nixexprpath": "hydra/stm32.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs-channels nixos-19.03", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false }
}
}

View File

@ -1,29 +0,0 @@
{ pkgs ? import <nixpkgs> {}}:
{
jobsets = pkgs.runCommand "spec.json" {}
''
cat > $out << EOF
{
"stm32": {
"enabled": 1,
"hidden": false,
"description": "STM32 firmware",
"nixexprinput": "nixScripts",
"nixexprpath": "stm32.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs-channels nixos-19.03", "emailresponsible": false },
"mozillaOverlay": { "type": "git", "value": "git://github.com/mozilla/nixpkgs-mozilla.git", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false },
"stabilizerSrc": { "type": "git", "value": "git://github.com/quartiq/stabilizer.git", "emailresponsible": false },
"thermostatSrc": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/thermostat.git", "emailresponsible": false }
}
}
}
EOF
'';
}

19
hydra/web.json Normal file
View File

@ -0,0 +1,19 @@
{
"web": {
"enabled": 1,
"hidden": false,
"description": "M-Labs website",
"nixexprinput": "nixScripts",
"nixexprpath": "web.nix",
"checkinterval": 300,
"schedulingshares": 10,
"enableemail": false,
"emailoverride": "",
"keepnr": 10,
"inputs": {
"nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs nixos-20.03", "emailresponsible": false },
"nixScripts": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/nix-scripts.git", "emailresponsible": false },
"webSrc": { "type": "git", "value": "https://git.m-labs.hk/M-Labs/web2019.git", "emailresponsible": false }
}
}
}

8
mcu.nix Normal file
View File

@ -0,0 +1,8 @@
{ pkgs ? import <nixpkgs> {} }:
let
jobs = import ./mcu/default.nix {
mozillaOverlay = import <mozillaOverlay>;
};
in
builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) jobs

22155
mcu/channel-rust-nightly.toml Normal file

File diff suppressed because it is too large Load Diff

105
mcu/default.nix Normal file
View File

@ -0,0 +1,105 @@
{ # Use master branch of the overlay by default
mozillaOverlay ? import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz),
rustManifest ? ./channel-rust-nightly.toml
}:
let
pkgs = import <nixpkgs> { overlays = [ mozillaOverlay ]; };
rustPlatform = pkgs.recurseIntoAttrs (pkgs.callPackage ./rustPlatform.nix {
inherit rustManifest;
});
buildStm32Firmware = { name, src, patchPhase ? "", extraNativeBuildInputs ? [], checkPhase ? "", ... } @ args:
let
# If binaryName is specified as an arg of buildStm32Firmware,
# then the .nix containing the cargoSha256 must be named "cargosha256-${binaryName}.nix";
# otherwise, the .nix must be named "cargosha256.nix".
cargoSha256Drv = pkgs.runCommand "${name}-cargosha256" { } ''
cp "${src}/cargosha256${
if (args ? binaryName) then "-" + args.binaryName else ""
}.nix" $out
'';
# If binaryName is specified as an arg of buildStm32Firmware,
# then use it as the filename of the ELF generated from `cargo build`;
# otherwise, use the `name` arg (i.e. the Rust package name) as the ELF filename.
binaryName = if (args ? binaryName) then args.binaryName else name;
in
rustPlatform.buildRustPackage rec {
inherit name;
version = "0.0.0";
inherit src;
cargoSha256 = (import cargoSha256Drv);
inherit patchPhase;
nativeBuildInputs = [ pkgs.llvm ] ++ extraNativeBuildInputs;
buildPhase = ''
export CARGO_HOME=$(mktemp -d cargo-home.XXX)
cargo build --release
'';
inherit checkPhase;
installPhase = ''
mkdir -p $out $out/nix-support
cp target/thumbv7em-none-eabihf/release/${binaryName} $out/${name}.elf
echo file binary-dist $out/${name}.elf >> $out/nix-support/hydra-build-products
llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/${binaryName} $out/${name}.bin
echo file binary-dist $out/${name}.bin >> $out/nix-support/hydra-build-products
'';
dontFixup = true;
};
migen = (import ../artiq-fast/pkgs/python-deps.nix { inherit (pkgs) stdenv fetchgit fetchFromGitHub python3Packages; misoc-new = true; }).migen;
in
{
stabilizer-dual-iir = buildStm32Firmware {
name = "stabilizer-dual-iir";
binaryName = "dual-iir";
src = <stabilizerSrc>;
patchPhase = ''
substituteInPlace src/hardware/configuration.rs \
--replace "IpAddress::v4(10, 34, 16, 103)" \
"IpAddress::v4(192, 168, 1, 76)" \
--replace "Ipv4Address::new(10, 34, 16, 1)" \
"Ipv4Address::new(192, 168, 1, 1)"
'';
};
thermostat = buildStm32Firmware {
name = "thermostat";
src = <thermostatSrc>;
checkPhase = ''
cargo test --target=${pkgs.rust.toRustTarget pkgs.stdenv.targetPlatform}
'';
};
humpback-dds = buildStm32Firmware {
name = "humpback-dds";
src = <humpbackDdsSrc>;
extraNativeBuildInputs = [
(pkgs.python3.withPackages(ps: [ migen ]))
pkgs.yosys
pkgs.nextpnr
pkgs.icestorm
];
};
# openMMC build system breaks if host compiler is not available, so do not use stdenvNoCC here
sayma-mmc = pkgs.stdenv.mkDerivation {
name = "sayma-mmc";
src = <saymaMmcSrc>;
phases = [ "unpackPhase" "buildPhase" "installPhase" ];
nativeBuildInputs = [ pkgs.cmake pkgs.gcc-arm-embedded ];
buildPhase =
''
mkdir build
cd build
cmake .. -DBOARD=sayma -DBOARD_RTM=sayma -DVERSION= -DTARGET_CONTROLLER=LPC1776 -DCMAKE_BUILD_TYPE=Debug
make
'';
installPhase =
''
mkdir $out
cp out/* $out
mkdir -p $out $out/nix-support
echo file binary-dist $out/openMMC.axf >> $out/nix-support/hydra-build-products
echo file binary-dist $out/openMMC.bin >> $out/nix-support/hydra-build-products
'';
};
}

View File

@ -1,54 +0,0 @@
{ config, pkgs, lib, ... }:
with lib;
let
makeBackup = pkgs.writeScript "make-backup" ''
#!${pkgs.bash}/bin/bash
set -e
umask 0077
DBDUMPDIR=`mktemp -d`
pushd $DBDUMPDIR
${config.services.mysql.package}/bin/mysqldump --single-transaction flarum > flarum.sql
${pkgs.sudo}/bin/sudo -u mattermost ${config.services.postgresql.package}/bin/pg_dump mattermost > mattermost.sql
${pkgs.gnutar}/bin/tar cf - /etc/nixos /var/lib/gitea flarum.sql mattermost.sql | \
${pkgs.bzip2}/bin/bzip2 | \
${pkgs.gnupg}/bin/gpg --symmetric --batch --passphrase-file /etc/nixos/secret/backup-passphrase | \
${pkgs.rclone}/bin/rclone rcat --config /etc/nixos/secret/rclone.conf dropbox:backup-`date +%F`.tar.bz2.gpg
popd
rm -rf $DBDUMPDIR
echo Backup done
'';
cfg = config.services.mlabs-backup;
in
{
options.services.mlabs-backup = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enable backups";
};
};
config = mkIf cfg.enable {
systemd.services.mlabs-backup = {
description = "M-Labs backup";
serviceConfig = {
Type = "oneshot";
User = "root";
Group = "root";
ExecStart = "${makeBackup}";
};
};
systemd.timers.mlabs-backup = {
description = "M-Labs backup";
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = "weekly";
};
};
}

Some files were not shown because too many files have changed in this diff Show More