[WIP] Flakes #45
|
@ -1,9 +1,11 @@
|
|||
{ pkgs ? import <nixpkgs> {}
|
||||
, artiq-fast ? <artiq-fast>
|
||||
, sinaraSystemsSrc ? <sinaraSystemsSrc>
|
||||
, sinaraSystemsRev ? null
|
||||
, sinaraSystemsHash ? null
|
||||
}:
|
||||
|
||||
let
|
||||
sinaraSystemsSrc = <sinaraSystemsSrc>;
|
||||
generatedNix = pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; }
|
||||
''
|
||||
mkdir $out
|
||||
|
@ -11,14 +13,21 @@ let
|
|||
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`
|
||||
${if sinaraSystemsRev != null && sinaraSystemsHash != null
|
||||
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`
|
||||
''}
|
||||
|
||||
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
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
{ pkgs, version, src, target }:
|
||||
|
||||
let
|
||||
wfvm = import ../wfvm.nix { inherit pkgs; };
|
||||
wfvm = import ../wfvm.nix {
|
||||
inherit pkgs;
|
||||
wfvm-pkgs = 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}";
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
{ pkgs, version, src }:
|
||||
|
||||
let
|
||||
wfvm = import ../wfvm.nix { inherit pkgs; };
|
||||
wfvm = import ../wfvm.nix {
|
||||
inherit pkgs;
|
||||
wfvm-pkgs = 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}";
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
{ pkgs, conda-windows-llvm-or1k, version, src }:
|
||||
|
||||
let
|
||||
wfvm = import ../wfvm.nix { inherit pkgs; };
|
||||
wfvm = import ../wfvm.nix {
|
||||
inherit pkgs;
|
||||
wfvm-pkgs = 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}";
|
||||
|
|
|
@ -33,8 +33,6 @@ in
|
|||
buildInputs = [ perl groff cmake libxml2 python libffi ] ++ stdenv.lib.optional stdenv.isLinux valgrind;
|
||||
|
||||
preBuild = ''
|
||||
NIX_BUILD_CORES=4
|
||||
makeFlagsArray=(-j''$NIX_BUILD_CORES)
|
||||
mkdir -p $out/
|
||||
'';
|
||||
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
{ pkgs }:
|
||||
|
||||
let
|
||||
# Pin nixpkgs to avoid frequent resource-intensive Windows reinstallations on Hydra.
|
||||
wfvm-pkgs = pkgs.fetchFromGitHub {
|
||||
{ pkgs
|
||||
, wfvm-pkgs ? import (pkgs.fetchFromGitHub {
|
||||
owner = "NixOS";
|
||||
repo = "nixpkgs";
|
||||
rev = "f8248ab6d9e69ea9c07950d73d48807ec595e923";
|
||||
sha256 = "009i9j6mbq6i481088jllblgdnci105b2q4mscprdawg3knlyahk";
|
||||
};
|
||||
}) {}
|
||||
}:
|
||||
|
||||
let
|
||||
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 {}); }
|
||||
in import "${wfvm}/wfvm" { pkgs = wfvm-pkgs; }
|
||||
|
|
|
@ -13,7 +13,10 @@ set -e
|
|||
nix-build -E "
|
||||
let
|
||||
pkgs = import <nixpkgs> {};
|
||||
wfvm = import ../wfvm.nix { inherit pkgs; };
|
||||
wfvm = import ../wfvm.nix {
|
||||
inherit pkgs;
|
||||
wfvm-pkgs = pkgs;
|
||||
};
|
||||
in
|
||||
wfvm.utils.wfvm-run {
|
||||
name = \"get-conda-packages\";
|
||||
|
|
|
@ -10,7 +10,10 @@ let
|
|||
inherit port;
|
||||
}) tcpPorts;
|
||||
|
||||
wfvm = import ../wfvm.nix { inherit pkgs; };
|
||||
wfvm = import ../wfvm.nix {
|
||||
inherit pkgs;
|
||||
wfvm-pkgs = pkgs;
|
||||
};
|
||||
conda-deps = {
|
||||
name = "conda-deps";
|
||||
script = let
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
{ pkgs ? import <nixpkgs> {}
|
||||
, a6p ? <a6p>
|
||||
, artiq-board-generated ? <artiq-board-generated>
|
||||
, 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>
|
||||
)
|
||||
, artiq-fast ? (
|
||||
if a6p
|
||||
then <artiq-board-generated/fast>
|
||||
else <artiq-fast>
|
||||
)
|
||||
}:
|
||||
|
||||
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>;
|
||||
artiq-fast =
|
||||
if a6p
|
||||
then <artiq-board-generated/fast>
|
||||
else <artiq-fast>;
|
||||
artiqVersion = import (artiq-fast + "/pkgs/artiq-version.nix") {
|
||||
inherit (pkgs) stdenv git fetchgit;
|
||||
};
|
||||
|
@ -49,17 +52,17 @@ let
|
|||
|
||||
${if a6p
|
||||
then ''
|
||||
cp -a ${<artiq-board-generated>} $out/board-generated
|
||||
cp -a ${artiq-board-generated} $out/board-generated
|
||||
ln -s board-generated/fast $out/fast
|
||||
''
|
||||
else "cp -a ${<artiq-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
|
||||
${if sinaraSystemsRev != null && sinaraSystemsHash != null
|
||||
then ''
|
||||
REV=${sinaraSystemsRev}
|
||||
HASH=${sinaraSystemsHash}
|
||||
|
@ -109,7 +112,9 @@ let
|
|||
inherit pkgs vivado;
|
||||
}
|
||||
''};
|
||||
conda-artiq-board = import ./conda-artiq-board.nix { inherit pkgs; };
|
||||
conda-artiq-board = import ./conda-artiq-board.nix {
|
||||
inherit pkgs;
|
||||
};
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://git.m-labs.hk/M-Labs/sinara-systems.git";
|
||||
rev = "$REV";
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"nodes": {
|
||||
"artiq-beta-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1614493604,
|
||||
"narHash": "sha256-9P/O4SWHqHWO+OD3d8FihJXQ+Y5JRlW0ajBNYZlIZUg=",
|
||||
"ref": "master",
|
||||
"rev": "b8f4c6b9bb8ce4f2d7dc50e87690ad336841357c",
|
||||
"revCount": 7585,
|
||||
"type": "git",
|
||||
"url": "https://github.com/M-Labs/artiq.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/M-Labs/artiq.git"
|
||||
}
|
||||
},
|
||||
"artiq-legacy-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1613549523,
|
||||
"narHash": "sha256-FgX/W+y8N4/6DLLTJuJVg5gUr3zk/5DxmSIxA4I6ZvE=",
|
||||
"ref": "release-5",
|
||||
"rev": "10c9842fc8844b524811336c6a529c648a2d2fde",
|
||||
"revCount": 7153,
|
||||
"type": "git",
|
||||
"url": "https://github.com/M-Labs/artiq.git"
|
||||
},
|
||||
"original": {
|
||||
"ref": "release-5",
|
||||
"type": "git",
|
||||
"url": "https://github.com/M-Labs/artiq.git"
|
||||
}
|
||||
},
|
||||
"artiq-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1613555154,
|
||||
"narHash": "sha256-D/43YVvMNkcXV6sBBxAqxcmtEO3TagIQEQl0zsGE+ag=",
|
||||
"ref": "release-6",
|
||||
"rev": "c22482787ef806eb8e48d59b6ded7d93c7677c81",
|
||||
"revCount": 7582,
|
||||
"type": "git",
|
||||
"url": "https://github.com/M-Labs/artiq.git"
|
||||
},
|
||||
"original": {
|
||||
"ref": "release-6",
|
||||
"type": "git",
|
||||
"url": "https://github.com/M-Labs/artiq.git"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1614338965,
|
||||
"narHash": "sha256-2HPgL9171Dhlg9lS4Ep5aeh4ejRCED+gNmU9tYzgyic=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "113092f5531ef38a45046990199873755a372646",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "release-20.09",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"artiq-beta-src": "artiq-beta-src",
|
||||
"artiq-legacy-src": "artiq-legacy-src",
|
||||
"artiq-src": "artiq-src",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"sinara-systems": "sinara-systems"
|
||||
}
|
||||
},
|
||||
"sinara-systems": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1615195806,
|
||||
"narHash": "sha256-UfsPJxvERsGiECOFC+sjmk4r61aWepF0nXqRgnmLR80=",
|
||||
"ref": "master",
|
||||
"rev": "1f0605f46cc7cbfcdf427f15a93e0e4a75d0d491",
|
||||
"revCount": 202,
|
||||
"type": "git",
|
||||
"url": "https://git.m-labs.hk/M-Labs/sinara-systems.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.m-labs.hk/M-Labs/sinara-systems.git"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
# let
|
||||
# system = "x86_64-linux";
|
||||
# in
|
||||
{
|
||||
description = "ARTIQ";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/release-20.09";
|
||||
artiq-beta-src = {
|
||||
url = "git+https://github.com/M-Labs/artiq.git";
|
||||
flake = false;
|
||||
};
|
||||
artiq-src = {
|
||||
url = "git+https://github.com/M-Labs/artiq.git?ref=release-6";
|
||||
flake = false;
|
||||
};
|
||||
artiq-legacy-src = {
|
||||
url = "git+https://github.com/M-Labs/artiq.git?ref=release-5";
|
||||
flake = false;
|
||||
};
|
||||
sinara-systems = {
|
||||
url = "git+https://git.m-labs.hk/M-Labs/sinara-systems.git";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = sources@{ self, nixpkgs, sinara-systems, ... }:
|
||||
let
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
];
|
||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||
|
||||
sinaraSystemsSrc = sinara-systems.outPath;
|
||||
sinaraSystemsRev = sinara-systems.rev;
|
||||
sinaraSystemsHash = builtins.replaceStrings ["sha256-"] [""] sinara-systems.narHash;
|
||||
|
||||
artiq-jobsets = system: artiqInputName: a6p:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
artiq-fast-src =
|
||||
let
|
||||
inherit (sources.${artiqInputName}) lastModified rev revCount narHash;
|
||||
hash = builtins.replaceStrings ["sha256-"] [""] narHash;
|
||||
|
||||
artiqSrc = sources.${artiqInputName}.outPath;
|
||||
|
||||
in pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; } ''
|
||||
cp --no-preserve=mode,ownership -R ${./artiq-fast} $out
|
||||
|
||||
MAJOR_VERSION=`cat ${artiqSrc}/MAJOR_VERSION`
|
||||
if [ -e ${artiqSrc}/BETA ]; then
|
||||
SUFFIX=".beta"
|
||||
else
|
||||
SUFFIX=""
|
||||
fi
|
||||
|
||||
cat > $out/pkgs/artiq-src.nix << EOF
|
||||
{ fetchgit }:
|
||||
fetchgit {
|
||||
url = "git://github.com/m-labs/artiq.git";
|
||||
rev = "${rev}";
|
||||
sha256 = "${hash}";
|
||||
}
|
||||
EOF
|
||||
echo "{ stdenv, git, fetchgit }: \"$MAJOR_VERSION.${toString revCount}.`cut -c1-8 <<< ${rev}`$SUFFIX\"" > $out/pkgs/artiq-version.nix
|
||||
echo "{ stdenv, git, fetchgit }: \"${toString lastModified}\"" > $out/pkgs/artiq-timestamp.nix
|
||||
'';
|
||||
artiq-fast =
|
||||
import artiq-fast-src {
|
||||
inherit pkgs;
|
||||
};
|
||||
|
||||
artiq-board-generated =
|
||||
(import ./artiq-board-generated {
|
||||
inherit pkgs;
|
||||
inherit sinaraSystemsSrc sinaraSystemsRev sinaraSystemsHash;
|
||||
artiq-fast = artiq-fast-src;
|
||||
}).generated-nix;
|
||||
|
||||
artiq-full =
|
||||
import ./artiq-full.nix {
|
||||
inherit pkgs a6p artiq-board-generated;
|
||||
artiq-fast = artiq-fast-src;
|
||||
inherit sinaraSystemsSrc sinaraSystemsRev sinaraSystemsHash;
|
||||
};
|
||||
in {
|
||||
inherit artiq-fast artiq-full;
|
||||
};
|
||||
in {
|
||||
packages = forAllSystems (system:
|
||||
builtins.foldl' (a: b: a // b) {} (
|
||||
builtins.attrValues (
|
||||
artiq-jobsets system "artiq-beta-src" true
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
defaultPackage = forAllSystems (system: self.packages.${system}.artiq);
|
||||
|
||||
hydraJobs =
|
||||
let
|
||||
jobset = artiqInputName: a6p: name:
|
||||
forAllSystems (system: (artiq-jobsets system artiqInputName a6p).${name});
|
||||
in {
|
||||
fast = jobset "artiq-src" true "artiq-fast";
|
||||
fast-beta = jobset "artiq-beta-src" true "artiq-fast";
|
||||
fast-legacy = jobset "artiq-legacy-src" false "artiq-fast";
|
||||
full = jobset "artiq-src" true "artiq-full";
|
||||
full-beta = jobset "artiq-beta-src" true "artiq-full";
|
||||
full-legacy = jobset "artiq-legacy-src" false "artiq-full";
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue