2019-02-14 15:29:42 +08:00
|
|
|
let
|
2021-09-12 18:35:03 +08:00
|
|
|
pkgs = import <nixpkgs> { overlays = [ (import ./artiq-fast/mozilla-overlay.nix) ]; };
|
2019-02-14 20:16:56 +08:00
|
|
|
artiqSrc = <artiqSrc>;
|
2019-02-14 19:31:46 +08:00
|
|
|
generatedNix = pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; }
|
2019-11-14 17:44:36 +08:00
|
|
|
# keep in sync with artiq-fast/pkgs/artiq-version.nix
|
2019-02-14 15:29:42 +08:00
|
|
|
''
|
2019-07-17 19:19:43 +08:00
|
|
|
cp --no-preserve=mode,ownership -R ${./artiq-fast} $out
|
2019-02-14 19:31:46 +08:00
|
|
|
REV=`git --git-dir ${artiqSrc}/.git rev-parse HEAD`
|
2019-06-13 14:05:30 +08:00
|
|
|
MAJOR_VERSION=`cat ${artiqSrc}/MAJOR_VERSION`
|
2019-11-14 18:33:00 +08:00
|
|
|
if [ -e ${artiqSrc}/BETA ]; then
|
2019-11-14 17:44:36 +08:00
|
|
|
SUFFIX=".beta"
|
|
|
|
else
|
|
|
|
SUFFIX=""
|
|
|
|
fi
|
2019-06-13 14:05:30 +08:00
|
|
|
COMMIT_COUNT=`git --git-dir ${artiqSrc}/.git rev-list --count HEAD`
|
2019-04-24 04:25:34 +08:00
|
|
|
TIMESTAMP=`git --git-dir ${artiqSrc}/.git log -1 --format=%ct`
|
2019-03-31 23:06:46 +08:00
|
|
|
ARTIQ_SRC_CLEAN=`mktemp -d`
|
|
|
|
cp -a ${artiqSrc}/. $ARTIQ_SRC_CLEAN
|
|
|
|
chmod -R 755 $ARTIQ_SRC_CLEAN/.git
|
|
|
|
chmod 755 $ARTIQ_SRC_CLEAN
|
|
|
|
rm -rf $ARTIQ_SRC_CLEAN/.git
|
|
|
|
HASH=`nix-hash --type sha256 --base32 $ARTIQ_SRC_CLEAN`
|
2019-02-14 19:31:46 +08:00
|
|
|
cat > $out/pkgs/artiq-src.nix << EOF
|
|
|
|
{ fetchgit }:
|
|
|
|
fetchgit {
|
|
|
|
url = "git://github.com/m-labs/artiq.git";
|
|
|
|
rev = "$REV";
|
|
|
|
sha256 = "$HASH";
|
|
|
|
}
|
|
|
|
EOF
|
2019-11-14 17:56:19 +08:00
|
|
|
echo "{ stdenv, git, fetchgit }: \"$MAJOR_VERSION.$COMMIT_COUNT.`cut -c1-8 <<< $REV`$SUFFIX\"" > $out/pkgs/artiq-version.nix
|
2019-04-24 15:05:29 +08:00
|
|
|
echo "{ stdenv, git, fetchgit }: \"$TIMESTAMP\"" > $out/pkgs/artiq-timestamp.nix
|
2019-02-14 15:29:42 +08:00
|
|
|
'';
|
2019-02-15 18:17:34 +08:00
|
|
|
artiqpkgs = import "${generatedNix}/default.nix" { inherit pkgs; };
|
2019-04-24 15:17:40 +08:00
|
|
|
artiqVersion = import "${generatedNix}/pkgs/artiq-version.nix" (with pkgs; { inherit stdenv fetchgit git; });
|
2021-12-14 18:22:32 +08:00
|
|
|
windowsRunner = overrides:
|
2019-04-18 21:54:06 +08:00
|
|
|
import "${generatedNix}/windows/run-test.nix" ({
|
2020-06-22 17:45:18 +08:00
|
|
|
inherit pkgs artiqpkgs;
|
2021-12-14 18:22:32 +08:00
|
|
|
} // overrides);
|
2019-07-17 19:21:06 +08:00
|
|
|
jobs = (builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) artiqpkgs);
|
2019-02-14 15:29:42 +08:00
|
|
|
in
|
|
|
|
jobs // {
|
2019-07-17 19:19:43 +08:00
|
|
|
generated-nix = pkgs.lib.hydraJob generatedNix; # used by artiq-full
|
2019-07-17 20:03:36 +08:00
|
|
|
artiq-fast = pkgs.releaseTools.channel {
|
|
|
|
name = "artiq-fast";
|
2019-02-14 17:49:40 +08:00
|
|
|
src = generatedNix;
|
2019-02-14 15:29:42 +08:00
|
|
|
constituents = builtins.attrValues jobs;
|
|
|
|
};
|
2019-03-14 11:19:18 +08:00
|
|
|
|
2019-04-22 06:09:27 +08:00
|
|
|
windows-no-hardware-tests = pkgs.stdenv.mkDerivation {
|
|
|
|
name = "windows-no-hardware-tests";
|
|
|
|
phases = [ "buildPhase" ];
|
|
|
|
buildPhase = ''
|
2020-06-22 17:53:01 +08:00
|
|
|
${windowsRunner { testCommand = "python -m unittest discover -v sipyco.test && python -m unittest discover -v artiq.test"; }}/bin/wfvm-run-windows-tests
|
2019-04-22 06:09:27 +08:00
|
|
|
touch $out
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2019-04-15 07:12:48 +08:00
|
|
|
extended-tests = pkgs.stdenv.mkDerivation {
|
|
|
|
name = "extended-tests";
|
2019-03-14 17:51:04 +08:00
|
|
|
|
2020-07-04 16:17:20 +08:00
|
|
|
# requires patched Nix
|
|
|
|
__networked = true;
|
2019-03-14 17:51:04 +08:00
|
|
|
|
2019-03-14 11:19:18 +08:00
|
|
|
buildInputs = [
|
2019-03-14 12:26:03 +08:00
|
|
|
(pkgs.python3.withPackages(ps: [ ps.paramiko artiqpkgs.artiq artiqpkgs.artiq-board-kc705-nist_clock ]))
|
|
|
|
artiqpkgs.openocd
|
2019-05-30 06:41:22 +08:00
|
|
|
pkgs.openssh
|
2021-09-13 07:07:41 +08:00
|
|
|
] ++ (if (pkgs.lib.versionAtLeast artiqVersion "7.0") then [ pkgs.llvm_11 pkgs.lld_11 ] else [ artiqpkgs.binutils-or1k ]);
|
2019-03-14 17:52:44 +08:00
|
|
|
phases = [ "buildPhase" ];
|
|
|
|
buildPhase =
|
2019-03-14 11:19:18 +08:00
|
|
|
''
|
2019-03-14 14:06:40 +08:00
|
|
|
export HOME=`mktemp -d`
|
|
|
|
mkdir $HOME/.ssh
|
2021-12-03 18:36:41 +08:00
|
|
|
cp /opt/hydra_id_ed25519 $HOME/.ssh/id_ed25519
|
|
|
|
cp /opt/hydra_id_ed25519.pub $HOME/.ssh/id_ed25519.pub
|
2021-04-24 16:53:52 +08:00
|
|
|
echo "rpi-1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPOBQVcsvk6WgRj18v4m0zkFeKrcN9gA+r6sxQxNwFpv" > $HOME/.ssh/known_hosts
|
2021-12-03 18:36:41 +08:00
|
|
|
chmod 600 $HOME/.ssh/id_ed25519
|
2019-05-30 19:29:30 +08:00
|
|
|
LOCKCTL=$(mktemp -d)
|
|
|
|
mkfifo $LOCKCTL/lockctl
|
2019-04-15 07:12:48 +08:00
|
|
|
|
2019-06-12 06:07:27 +08:00
|
|
|
cat $LOCKCTL/lockctl | ${pkgs.openssh}/bin/ssh \
|
2021-12-03 18:36:41 +08:00
|
|
|
-i $HOME/.ssh/id_ed25519 \
|
2019-06-12 06:07:27 +08:00
|
|
|
-o UserKnownHostsFile=$HOME/.ssh/known_hosts \
|
2021-08-04 10:22:37 +08:00
|
|
|
rpi-1 \
|
2020-11-10 22:47:48 +08:00
|
|
|
'mkdir -p /tmp/board_lock && flock /tmp/board_lock/kc705-1 -c "echo Ok; cat"' \
|
2019-06-12 06:07:27 +08:00
|
|
|
| (
|
2019-05-30 06:49:00 +08:00
|
|
|
# End remote flock via FIFO
|
|
|
|
atexit_unlock() {
|
2019-05-30 19:29:30 +08:00
|
|
|
echo > $LOCKCTL/lockctl
|
2019-05-30 06:49:00 +08:00
|
|
|
}
|
|
|
|
trap atexit_unlock EXIT
|
|
|
|
|
2019-05-30 05:46:03 +08:00
|
|
|
# Read "Ok" line when remote successfully locked
|
|
|
|
read LOCK_OK
|
2019-04-15 07:12:48 +08:00
|
|
|
|
2019-05-30 05:46:03 +08:00
|
|
|
artiq_flash -t kc705 -H rpi-1
|
|
|
|
sleep 15
|
|
|
|
|
|
|
|
export ARTIQ_ROOT=`python -c "import artiq; print(artiq.__path__[0])"`/examples/kc705_nist_clock
|
|
|
|
export ARTIQ_LOW_LATENCY=1
|
|
|
|
python -m unittest discover -v artiq.test.coredevice
|
|
|
|
|
2020-06-22 17:45:18 +08:00
|
|
|
${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
|
2019-05-30 05:46:03 +08:00
|
|
|
)
|
2019-04-15 07:12:48 +08:00
|
|
|
|
2020-07-04 16:17:20 +08:00
|
|
|
touch $out
|
2019-03-14 11:19:18 +08:00
|
|
|
'';
|
|
|
|
};
|
2019-02-14 15:29:42 +08:00
|
|
|
}
|