forked from M-Labs/artiq-extrapkg
build ARTIQ conda package
This commit is contained in:
parent
d2d79b180c
commit
b01ba6c43a
96
flake.nix
96
flake.nix
|
@ -40,14 +40,106 @@
|
||||||
name = "conda-builder-env";
|
name = "conda-builder-env";
|
||||||
targetPkgs = pkgs: condaDeps ++ [ condaInstalled ];
|
targetPkgs = pkgs: condaDeps ++ [ condaInstalled ];
|
||||||
};
|
};
|
||||||
|
makeCondaRecipe = (constituent:
|
||||||
|
''
|
||||||
|
# conda build breaks if write permissions aren't set on source files.
|
||||||
|
cp --no-preserve=mode,ownership -R ${constituent.src} workaround-conda
|
||||||
|
cd workaround-conda
|
||||||
|
tar cf ../${constituent.name}.tar .
|
||||||
|
cd ..
|
||||||
|
rm -rf workaround-conda
|
||||||
|
|
||||||
|
mkdir -p conda/${constituent.name}
|
||||||
|
|
||||||
|
cat << EOF > conda/${constituent.name}/meta.yaml
|
||||||
|
package:
|
||||||
|
name: ${constituent.name}
|
||||||
|
version: ${constituent.version}
|
||||||
|
|
||||||
|
source:
|
||||||
|
url: ../../${constituent.name}.tar
|
||||||
|
|
||||||
|
{% set data = load_setup_py_data() %}
|
||||||
|
|
||||||
|
build:
|
||||||
|
noarch: python
|
||||||
|
entry_points:
|
||||||
|
# NOTE: conda-build cannot distinguish between console and gui scripts
|
||||||
|
{% for entry_point_type, entry_points in data.get("entry_points", dict()).items() -%}
|
||||||
|
{% for entry_point in entry_points -%}
|
||||||
|
- {{ entry_point }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
ignore_prefix_files: True
|
||||||
|
|
||||||
|
requirements:
|
||||||
|
run:
|
||||||
|
${pkgs.lib.concatStringsSep "\n" (map (s: " - ${s}") constituent.dependencies)}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF > conda/${constituent.name}/build.sh
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
python setup.py install \
|
||||||
|
--prefix=\$PREFIX \
|
||||||
|
--single-version-externally-managed \
|
||||||
|
--record=record.txt \
|
||||||
|
--no-compile
|
||||||
|
EOF
|
||||||
|
chmod 755 conda/${constituent.name}/build.sh
|
||||||
|
''
|
||||||
|
);
|
||||||
|
makeCondaChannel = constituents: pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
name = "conda-channel";
|
||||||
|
buildInputs = [ condaBuilderEnv ];
|
||||||
|
phases = [ "buildPhase" "installPhase" ];
|
||||||
|
buildPhase = pkgs.lib.concatStringsSep "\n" (map makeCondaRecipe constituents);
|
||||||
|
installPhase =
|
||||||
|
''
|
||||||
|
HOME=`pwd`
|
||||||
|
mkdir $out
|
||||||
|
conda-builder-env -c "
|
||||||
|
${pkgs.lib.concatStringsSep "\n"
|
||||||
|
(map (constituent: "conda build --no-anaconda-upload --no-test --output-folder $out conda/${constituent.name}") constituents)}
|
||||||
|
"
|
||||||
|
|
||||||
|
mkdir $out/nix-support
|
||||||
|
for package in $out/*/*.tar.bz2; do
|
||||||
|
echo file conda $package >> $out/nix-support/hydra-build-products
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
in rec {
|
in rec {
|
||||||
packages.x86_64-linux = {
|
packages.x86_64-linux = {
|
||||||
inherit condaBuilderEnv;
|
condaChannel = makeCondaChannel [
|
||||||
|
{
|
||||||
|
name = "artiq";
|
||||||
|
version = artiq.packages.x86_64-linux.artiq.version;
|
||||||
|
src = artiq.packages.x86_64-linux.artiq.src;
|
||||||
|
dependencies = [
|
||||||
|
"pythonparser"
|
||||||
|
"scipy"
|
||||||
|
"numpy"
|
||||||
|
"prettytable"
|
||||||
|
"h5py"
|
||||||
|
"python-dateutil"
|
||||||
|
"pyqt"
|
||||||
|
"qasync"
|
||||||
|
"pyqtgraph"
|
||||||
|
"pygit2"
|
||||||
|
"python-levenshtein"
|
||||||
|
"sipyco"
|
||||||
|
"llvmlite"
|
||||||
|
"llvm-tools"
|
||||||
|
"lld"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
hydraJobs = {
|
hydraJobs = {
|
||||||
inherit (packages.x86_64-linux) condaBuilderEnv;
|
inherit (packages.x86_64-linux) condaChannel;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue