diff --git a/artiq/conda-artiq.nix b/artiq/conda-artiq.nix index 9e523b4..b5d2870 100644 --- a/artiq/conda-artiq.nix +++ b/artiq/conda-artiq.nix @@ -1,66 +1,13 @@ { pkgs }: -with pkgs; - let - artiqSrc = import ./pkgs/artiq-src.nix { inherit fetchgit; }; version = import ./pkgs/artiq-version.nix; - fakeCondaSource = runCommand "fake-condasrc-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 ${artiqSrc} workaround-conda - pushd workaround-conda - tar cf $out/src.tar . - popd - rm -rf workaround-conda - - cat << EOF > $out/fake-conda/meta.yaml - package: - name: artiq - version: ${version} - - source: - url: ../src.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: - ${lib.concatStringsSep "\n" (map (s: " - ${s}") (import ./conda-artiq-deps.nix))} - - about: - home: https://m-labs.hk/artiq - license: LGPL - summary: 'A leading-edge control system for quantum information experiments' - EOF - - cat << EOF > $out/fake-conda/build.sh - #!/bin/bash - set -e - - export VERSIONEER_OVERRIDE=${version} - python setup.py install \ - --prefix=\$PREFIX \ - --single-version-externally-managed \ - --record=record.txt \ - --no-compile - - EOF - chmod 755 $out/fake-conda/build.sh - ''; + 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; diff --git a/artiq/conda-fake-source.nix b/artiq/conda-fake-source.nix new file mode 100644 index 0000000..73d1219 --- /dev/null +++ b/artiq/conda-fake-source.nix @@ -0,0 +1,53 @@ +{ pkgs }: +{ name, version, src, dependencies }: +pkgs.runCommand "conda-fake-source-${name}" { } + '' + 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: ${name} + version: ${version} + + source: + url: ../src.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}") dependencies)} + EOF + + cat << EOF > $out/fake-conda/build.sh + #!/bin/bash + set -e + + export VERSIONEER_OVERRIDE=${version} + python setup.py install \ + --prefix=\$PREFIX \ + --single-version-externally-managed \ + --record=record.txt \ + --no-compile + + EOF + chmod 755 $out/fake-conda/build.sh + ''