2019-02-15 23:18:40 +08:00
|
|
|
{ pkgs ? import <nixpkgs> {}}:
|
2019-02-15 23:06:00 +08:00
|
|
|
|
2019-02-15 23:39:57 +08:00
|
|
|
let
|
2019-02-16 00:24:20 +08:00
|
|
|
sinaraSystemsSrc = <sinaraSystemsSrc>;
|
2019-02-15 23:39:57 +08:00
|
|
|
|
2019-02-16 00:24:20 +08:00
|
|
|
generatedNix = pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; }
|
|
|
|
''
|
|
|
|
mkdir $out
|
2019-07-17 19:35:29 +08:00
|
|
|
|
|
|
|
cp -a ${<artiq-fast>} $out/fast
|
2019-07-17 22:36:44 +08:00
|
|
|
cp ${./artiq-full/conda-artiq-board.nix} $out/conda-artiq-board.nix
|
2019-07-17 20:22:13 +08:00
|
|
|
cp ${./artiq-full/extras.nix} $out/extras.nix
|
2019-07-17 19:35:29 +08:00
|
|
|
|
2019-02-16 00:24:20 +08:00
|
|
|
REV=`git --git-dir ${sinaraSystemsSrc}/.git rev-parse HEAD`
|
2019-04-18 15:14:23 +08:00
|
|
|
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`
|
2019-02-16 00:24:20 +08:00
|
|
|
cat > $out/default.nix << EOF
|
|
|
|
{ pkgs ? import <nixpkgs> {}}:
|
2019-02-15 23:39:57 +08:00
|
|
|
|
2019-02-15 23:50:44 +08:00
|
|
|
let
|
2019-12-03 11:46:01 +08:00
|
|
|
artiq-fast = import ./fast { inherit pkgs; };
|
|
|
|
|
2019-02-16 00:24:20 +08:00
|
|
|
target = "kasli";
|
2019-06-21 16:03:38 +08:00
|
|
|
variants = [
|
2019-10-10 17:17:19 +08:00
|
|
|
"afmaster"
|
|
|
|
"afsatellite"
|
2019-06-21 16:03:38 +08:00
|
|
|
"berkeley"
|
|
|
|
"berkeley2"
|
2020-03-04 17:28:52 +08:00
|
|
|
"berkeley3"
|
2019-11-08 10:24:52 +08:00
|
|
|
"csu"
|
2019-06-21 16:03:38 +08:00
|
|
|
"duke"
|
|
|
|
"duke2"
|
2019-07-17 14:00:09 +08:00
|
|
|
"duke3"
|
2020-03-09 02:21:02 +08:00
|
|
|
"femto1"
|
|
|
|
"femto2"
|
|
|
|
"femto3"
|
2019-12-18 01:17:46 +08:00
|
|
|
"freiburg1"
|
2020-02-09 18:13:43 +08:00
|
|
|
"griffith"
|
2019-06-21 16:03:38 +08:00
|
|
|
"hub"
|
2019-12-11 16:24:05 +08:00
|
|
|
"hw"
|
2019-08-29 19:07:02 +08:00
|
|
|
"indiana"
|
2019-11-26 18:58:29 +08:00
|
|
|
"innsbruck2"
|
2020-02-19 14:37:59 +08:00
|
|
|
"liaf"
|
2019-06-21 16:03:38 +08:00
|
|
|
"luh"
|
2020-01-07 01:05:53 +08:00
|
|
|
"luh2"
|
2020-02-15 00:17:32 +08:00
|
|
|
"mikes"
|
2019-11-23 10:53:12 +08:00
|
|
|
"mit"
|
2020-01-31 17:26:19 +08:00
|
|
|
"mitll3"
|
2020-02-06 16:59:37 +08:00
|
|
|
"mitll4master"
|
|
|
|
"mitll4satellite"
|
2019-06-21 16:03:38 +08:00
|
|
|
"mpik"
|
2019-09-27 16:39:49 +08:00
|
|
|
"mpq"
|
2020-01-21 15:46:02 +08:00
|
|
|
"nict"
|
|
|
|
"nist"
|
2020-04-04 20:27:04 +08:00
|
|
|
"no"
|
2019-08-02 17:24:35 +08:00
|
|
|
"npl1"
|
|
|
|
"npl2"
|
2020-04-18 18:35:03 +08:00
|
|
|
"oklahoma"
|
2020-03-16 18:18:09 +08:00
|
|
|
"olomouc"
|
2019-08-09 01:17:17 +08:00
|
|
|
"opticlock"
|
2019-09-11 15:55:33 +08:00
|
|
|
"oregon"
|
2019-06-21 16:03:38 +08:00
|
|
|
"ptb"
|
|
|
|
"ptb2"
|
|
|
|
"ptb3"
|
2019-08-06 00:59:51 +08:00
|
|
|
"ptb4"
|
2019-08-06 23:34:30 +08:00
|
|
|
"ptb5"
|
2019-09-11 01:40:26 +08:00
|
|
|
"ptb6"
|
2019-10-23 19:21:37 +08:00
|
|
|
"ptbal"
|
2019-07-30 15:32:53 +08:00
|
|
|
"ptbin"
|
2020-04-01 21:52:13 +08:00
|
|
|
"purdue"
|
|
|
|
"qe"
|
2020-01-23 19:34:43 +08:00
|
|
|
"rice"
|
2019-10-04 21:20:13 +08:00
|
|
|
"saymamaster"
|
2019-08-06 00:59:51 +08:00
|
|
|
"siegen"
|
2019-06-21 16:03:38 +08:00
|
|
|
"su"
|
|
|
|
"ubirmingham"
|
2020-03-05 14:09:54 +08:00
|
|
|
"unlv"
|
2019-06-21 16:03:38 +08:00
|
|
|
"unsw2"
|
2020-03-19 17:32:40 +08:00
|
|
|
"ustc2"
|
2019-06-21 16:03:38 +08:00
|
|
|
"vlbaimaster"
|
|
|
|
"vlbaisatellite"
|
|
|
|
"wipm"
|
2019-08-12 15:47:40 +08:00
|
|
|
"wipm4"
|
2019-10-10 17:17:19 +08:00
|
|
|
"wipm5master"
|
|
|
|
"wipm5satellite"
|
2019-12-04 19:37:24 +08:00
|
|
|
] ++ (pkgs.lib.lists.optionals (pkgs.lib.strings.versionAtLeast artiq-fast.artiq.version "6.0") [
|
2019-12-03 11:46:01 +08:00
|
|
|
"bonn1master"
|
|
|
|
"bonn1satellite"
|
2020-03-16 19:03:41 +08:00
|
|
|
"hw2master"
|
|
|
|
"hw2satellite"
|
2020-03-11 17:45:07 +08:00
|
|
|
"uamsterdam"
|
2019-12-03 11:46:01 +08:00
|
|
|
]);
|
2019-02-16 00:24:20 +08:00
|
|
|
|
2019-07-17 19:35:29 +08:00
|
|
|
artiq-board = import ./fast/artiq-board.nix { inherit pkgs; };
|
2019-07-17 22:36:44 +08:00
|
|
|
conda-artiq-board = import ./conda-artiq-board.nix { inherit pkgs; };
|
2019-02-16 00:24:20 +08:00
|
|
|
src = pkgs.fetchgit {
|
2019-05-07 15:58:33 +08:00
|
|
|
url = "https://git.m-labs.hk/M-Labs/sinara-systems.git";
|
2019-02-16 00:24:20 +08:00
|
|
|
rev = "$REV";
|
|
|
|
sha256 = "$HASH";
|
2019-02-15 23:50:44 +08:00
|
|
|
};
|
2019-02-19 20:47:44 +08:00
|
|
|
generic-kasli = pkgs.lib.lists.foldr (variant: start:
|
2019-02-16 00:24:20 +08:00
|
|
|
let
|
2019-02-17 12:52:48 +08:00
|
|
|
json = builtins.toPath (src + "/\''${variant}.json");
|
2019-02-16 00:24:20 +08:00
|
|
|
boardBinaries = artiq-board {
|
|
|
|
inherit target variant;
|
|
|
|
buildCommand = "python -m artiq.gateware.targets.kasli_generic \''${json}";
|
|
|
|
};
|
|
|
|
in
|
|
|
|
start // {
|
|
|
|
"artiq-board-\''${target}-\''${variant}" = boardBinaries;
|
|
|
|
"conda-artiq-board-\''${target}-\''${variant}" = conda-artiq-board {
|
|
|
|
boardBinaries = boardBinaries;
|
|
|
|
inherit target variant;
|
2019-02-22 23:46:16 +08:00
|
|
|
};
|
2019-05-09 16:34:31 +08:00
|
|
|
} // (pkgs.lib.optionalAttrs ((builtins.fromJSON (builtins.readFile json)).base == "standalone") {
|
2019-02-22 23:46:16 +08:00
|
|
|
"device-db-\''${target}-\''${variant}" = pkgs.stdenv.mkDerivation {
|
|
|
|
name = "device-db-\''${target}-\''${variant}";
|
2019-07-17 19:19:43 +08:00
|
|
|
buildInputs = [ artiq-fast.artiq ];
|
2019-02-22 23:46:16 +08:00
|
|
|
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
|
|
|
|
";
|
|
|
|
};
|
2019-05-09 16:10:17 +08:00
|
|
|
})) {} variants;
|
2019-10-15 11:16:11 +08:00
|
|
|
drtio-systems = {
|
|
|
|
af = {
|
|
|
|
master = "afmaster";
|
|
|
|
satellites = {
|
|
|
|
"1" = "afsatellite";
|
|
|
|
};
|
|
|
|
};
|
2020-02-06 16:59:37 +08:00
|
|
|
mitll4 = {
|
|
|
|
master = "mitll4master";
|
|
|
|
satellites = {
|
|
|
|
"1" = "mitll4satellite";
|
|
|
|
};
|
|
|
|
};
|
2019-10-15 15:58:02 +08:00
|
|
|
vlbai = {
|
|
|
|
master = "vlbaimaster";
|
|
|
|
satellites = {
|
|
|
|
"1" = "vlbaisatellite";
|
|
|
|
};
|
|
|
|
};
|
2019-10-15 11:16:11 +08:00
|
|
|
wipm5 = {
|
|
|
|
master = "wipm5master";
|
|
|
|
satellites = {
|
|
|
|
"1" = "wipm5satellite";
|
|
|
|
};
|
|
|
|
};
|
2019-12-04 19:37:24 +08:00
|
|
|
} // (pkgs.lib.optionalAttrs (pkgs.lib.strings.versionAtLeast artiq-fast.artiq.version "6.0") {
|
2019-12-03 11:46:01 +08:00
|
|
|
bonn1 = {
|
|
|
|
master = "bonn1master";
|
|
|
|
satellites = {
|
|
|
|
"1" = "bonn1satellite";
|
|
|
|
};
|
|
|
|
};
|
2020-03-16 19:03:41 +08:00
|
|
|
hw2 = {
|
|
|
|
master = "hw2master";
|
|
|
|
satellites = {
|
|
|
|
"1" = "hw2satellite";
|
|
|
|
};
|
|
|
|
};
|
2019-12-03 11:46:01 +08:00
|
|
|
});
|
2019-10-15 11:16:11 +08:00
|
|
|
drtio-ddbs = pkgs.lib.attrsets.mapAttrs'
|
|
|
|
(system: crates: pkgs.lib.attrsets.nameValuePair ("device-db-" + system)
|
|
|
|
(pkgs.stdenv.mkDerivation {
|
|
|
|
name = "device-db-\''${system}";
|
|
|
|
buildInputs = [ artiq-fast.artiq ];
|
|
|
|
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;
|
2019-11-07 19:34:36 +08:00
|
|
|
extras = import ./extras.nix { inherit pkgs; inherit (artiq-fast) sipyco asyncserial artiq; };
|
2019-02-19 20:47:44 +08:00
|
|
|
in
|
2019-10-15 11:16:11 +08:00
|
|
|
artiq-fast // generic-kasli // drtio-ddbs // extras // rec {
|
2019-10-07 12:20:32 +08:00
|
|
|
artiq-board-sayma-rtm = artiq-board {
|
|
|
|
target = "sayma";
|
|
|
|
variant = "rtm";
|
|
|
|
buildCommand = "python -m artiq.gateware.targets.sayma_rtm";
|
|
|
|
};
|
2019-02-19 20:47:44 +08:00
|
|
|
artiq-board-sayma-satellite = artiq-board {
|
|
|
|
target = "sayma";
|
|
|
|
variant = "satellite";
|
2019-10-07 12:20:32 +08:00
|
|
|
buildCommand = "python -m artiq.gateware.targets.sayma_amc";
|
2019-02-19 20:47:44 +08:00
|
|
|
};
|
2019-05-19 11:44:53 +08:00
|
|
|
artiq-board-metlino-master = artiq-board {
|
|
|
|
target = "metlino";
|
|
|
|
variant = "master";
|
|
|
|
buildCommand = "python -m artiq.gateware.targets.metlino";
|
|
|
|
};
|
2019-07-18 09:41:33 +08:00
|
|
|
artiq-board-kc705-nist_qc2 = artiq-board {
|
|
|
|
target = "kc705";
|
|
|
|
variant = "nist_qc2";
|
|
|
|
};
|
2019-10-07 12:20:49 +08:00
|
|
|
|
|
|
|
conda-artiq-board-sayma-rtm = conda-artiq-board {
|
|
|
|
target = "sayma";
|
|
|
|
variant = "rtm";
|
|
|
|
boardBinaries = artiq-board-sayma-rtm;
|
|
|
|
};
|
|
|
|
conda-artiq-board-sayma-satellite = conda-artiq-board {
|
|
|
|
target = "sayma";
|
|
|
|
variant = "satellite";
|
|
|
|
boardBinaries = artiq-board-sayma-satellite;
|
|
|
|
};
|
|
|
|
conda-artiq-board-metlino-master = conda-artiq-board {
|
|
|
|
target = "metlino";
|
|
|
|
variant = "master";
|
|
|
|
boardBinaries = artiq-board-metlino-master;
|
|
|
|
};
|
2019-07-17 22:36:44 +08:00
|
|
|
conda-artiq-board-kc705-nist_clock = conda-artiq-board {
|
|
|
|
target = "kc705";
|
|
|
|
variant = "nist_clock";
|
|
|
|
boardBinaries = artiq-fast.artiq-board-kc705-nist_clock;
|
|
|
|
};
|
2019-07-18 09:41:33 +08:00
|
|
|
conda-artiq-board-kc705-nist_qc2 = conda-artiq-board {
|
|
|
|
target = "kc705";
|
|
|
|
variant = "nist_qc2";
|
|
|
|
boardBinaries = artiq-board-kc705-nist_qc2;
|
|
|
|
};
|
2019-02-19 20:47:44 +08:00
|
|
|
}
|
2019-02-16 00:24:20 +08:00
|
|
|
EOF
|
|
|
|
'';
|
2019-07-17 22:41:43 +08:00
|
|
|
pythonDeps = import ./artiq-full/python-deps.nix { inherit pkgs; };
|
2019-11-12 10:43:50 +08:00
|
|
|
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 {
|
2019-07-17 20:02:06 +08:00
|
|
|
inherit (pkgs) stdenv lib fetchgit git python3Packages texlive texinfo;
|
|
|
|
inherit (pythonDeps) sphinxcontrib-wavedrom;
|
|
|
|
};
|
2019-11-12 10:43:50 +08:00
|
|
|
jobs = (import generatedNix { inherit pkgs; }) // sipycoManualPackages // artiqManualPackages // {
|
2019-07-17 19:21:06 +08:00
|
|
|
# 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; });
|
|
|
|
};
|
2019-02-15 23:39:57 +08:00
|
|
|
in
|
2019-07-17 22:48:14 +08:00
|
|
|
builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) jobs // {
|
2019-07-17 20:03:36 +08:00
|
|
|
artiq-full = pkgs.releaseTools.channel {
|
|
|
|
name = "artiq-full";
|
2019-02-16 00:24:20 +08:00
|
|
|
src = generatedNix;
|
|
|
|
constituents = builtins.attrValues jobs;
|
|
|
|
};
|
2019-07-18 00:08:35 +08:00
|
|
|
conda-channel = import ./artiq-full/conda-channel.nix { inherit pkgs; } { inherit jobs; };
|
2019-02-16 00:24:20 +08:00
|
|
|
}
|