From 255686e8fc327e9a56cbdb27f6d65f180cb168a8 Mon Sep 17 00:00:00 2001 From: Timo Kaufmann Date: Wed, 26 Jun 2019 15:15:38 +0200 Subject: [PATCH 1/4] bzildBazelPackage: fix fetch with no markers Previously the installPhase of the fixed ouput derivation would fail for a package that has no markers, since `sed` would complain about having no input files. If we use `find` instead of bash globs, that problem goes away. --- pkgs/build-support/build-bazel-package/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index 1004a7ce3f9..c0ad4a6a38e 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -51,8 +51,10 @@ in stdenv.mkDerivation (fBuildAttrs // { rm -rf $bazelOut/external/{local_*,\@local_*} # Patching markers to make them deterministic - sed -i 's, -\?[0-9][0-9]*$, 1,' $bazelOut/external/\@*.marker - sed -i '/^ENV:TMP.*/d' $bazelOut/external/\@*.marker + find $bazelOut/external -name '@*\.marker' -exec sed -i \ + -e 's, -\?[0-9][0-9]*$, 1,' \ + -e '/^ENV:TMP.*/d' \ + '{}' \; # Remove all vcs files rm -rf $(find $bazelOut/external -type d -name .git) From 34387bcf5bc41042b3b08fadafd009d37aac2e5f Mon Sep 17 00:00:00 2001 From: Timo Kaufmann Date: Wed, 26 Jun 2019 15:23:50 +0200 Subject: [PATCH 2/4] buildBazelPackage: fix preConfigure without dependencies --- pkgs/build-support/build-bazel-package/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index c0ad4a6a38e..7c9fc83e0f1 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -88,8 +88,8 @@ in stdenv.mkDerivation (fBuildAttrs // { ''; preConfigure = '' - mkdir -p $bazelOut/external - cp -r $deps/* $bazelOut/external + mkdir -p "$bazelOut" + cp -r $deps $bazelOut/external chmod -R +w $bazelOut find $bazelOut -type l | while read symlink; do ln -sf $(readlink "$symlink" | sed "s,NIX_BUILD_TOP,$NIX_BUILD_TOP,") "$symlink" From 43c62fd3c9bced13aafd228e85a3eb234cfaa382 Mon Sep 17 00:00:00 2001 From: Timo Kaufmann Date: Wed, 26 Jun 2019 17:03:01 +0200 Subject: [PATCH 3/4] python.pkgs.tensorflow-probability: use bazel Fixes the tensorflow-probability built by first building the wheel with bazel. This actually creates the dist-info folder, allowing the package to be picked up as a pip dependency. --- .../tensorflow-probability/default.nix | 62 ++++++++++++++++--- 1 file changed, 55 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/tensorflow-probability/default.nix b/pkgs/development/python-modules/tensorflow-probability/default.nix index 4b0e6e7722f..0f03adfccf5 100644 --- a/pkgs/development/python-modules/tensorflow-probability/default.nix +++ b/pkgs/development/python-modules/tensorflow-probability/default.nix @@ -1,8 +1,13 @@ { lib , fetchFromGitHub +, buildBazelPackage , buildPythonPackage , python +, setuptools +, wheel , tensorflow +, six +, numpy , decorator , cloudpickle , hypothesis @@ -12,19 +17,62 @@ , pytest }: -buildPythonPackage rec { - pname = "tensorflow-probability"; +let version = "0.7"; + pname = "tensorflow_probability"; - src = fetchFromGitHub { - owner = "tensorflow"; - repo = "probability"; - rev = "v${version}"; - sha256 = "0sy9gmjcvmwciamqvd7kd9qw2wd7ksklk80815fsn7sj0wiqxjyd"; + # first build all binaries and generate setup.py using bazel + bazel-wheel = buildBazelPackage { + name = "${pname}-${version}-py2.py3-none-any.whl"; + + src = fetchFromGitHub { + owner = "tensorflow"; + repo = "probability"; + rev = "v${version}"; + sha256 = "0sy9gmjcvmwciamqvd7kd9qw2wd7ksklk80815fsn7sj0wiqxjyd"; + }; + + nativeBuildInputs = [ + # needed to create the output wheel in installPhase + python + setuptools + wheel + ]; + + bazelTarget = ":pip_pkg"; + + fetchAttrs = { + sha256 = "0sjjj9z1dhilhpc8pq4154czrb79z9cm044jvn75kxcjv6v5l2m5"; + }; + + buildAttrs = { + preBuild = '' + patchShebangs . + ''; + + installPhase = '' + # work around timestamp issues + # https://github.com/NixOS/nixpkgs/issues/270#issuecomment-467583872 + export SOURCE_DATE_EPOCH=315532800 + + # First build, then move. Otherwise pip_pkg would create the dir $out + # and then put the wheel in that directory. However we want $out to + # point directly to the wheel file. + ./bazel-bin/pip_pkg . --release + mv *.whl "$out" + ''; + }; }; +in buildPythonPackage rec { + inherit version pname; + format = "wheel"; + + src = bazel-wheel; propagatedBuildInputs = [ tensorflow + six + numpy decorator cloudpickle ]; From 79c5510f521f3f7eada826a7b13967bb3e67d381 Mon Sep 17 00:00:00 2001 From: Timo Kaufmann Date: Wed, 26 Jun 2019 12:26:39 +0200 Subject: [PATCH 4/4] python.pkgs.dm-sonnet: 1.30 -> 1.33 --- pkgs/development/python-modules/dm-sonnet/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/dm-sonnet/default.nix b/pkgs/development/python-modules/dm-sonnet/default.nix index 41dc30e4719..c10dafdabc6 100644 --- a/pkgs/development/python-modules/dm-sonnet/default.nix +++ b/pkgs/development/python-modules/dm-sonnet/default.nix @@ -15,7 +15,7 @@ }: let - version = "1.30"; + version = "1.33"; # first build all binaries and generate setup.py using bazel bazel-build = buildBazelPackage rec { @@ -25,7 +25,7 @@ let owner = "deepmind"; repo = "sonnet"; rev = "v${version}"; - sha256 = "1dli4a4arx2gmb4p676pfibvnpag9f13znisrk9381g7xpqqmaw6"; + sha256 = "1nqsja1s8jrkq6v1whgh7smk17313mjr9vs3k5c1m8px4yblzhqc"; }; nativeBuildInputs = [