diff --git a/pkgs/development/python-modules/dm-sonnet/default.nix b/pkgs/development/python-modules/dm-sonnet/default.nix new file mode 100644 index 000000000000..718084364179 --- /dev/null +++ b/pkgs/development/python-modules/dm-sonnet/default.nix @@ -0,0 +1,85 @@ +{ lib +, fetchFromGitHub +, buildBazelPackage +, buildPythonPackage +, git +, python +, six +, absl-py +, semantic-version +, contextlib2 +, wrapt +, tensorflow +, tensorflow-probability +}: + +let + version = "1.30"; + + # first build all binaries and generate setup.py using bazel + bazel-build = buildBazelPackage rec { + name = "dm-sonnet-bazel-${version}"; + + src = fetchFromGitHub { + owner = "deepmind"; + repo = "sonnet"; + rev = "v${version}"; + sha256 = "1dli4a4arx2gmb4p676pfibvnpag9f13znisrk9381g7xpqqmaw6"; + }; + + nativeBuildInputs = [ + git # needed to fetch the bazel deps (protobuf in particular) + ]; + + # see https://github.com/deepmind/sonnet/blob/master/docs/INSTALL.md + bazelTarget = ":install"; + + fetchAttrs = { + sha256 = "1qwq6xp6gdmy8f0k96q3nsgqs56adrbgq39g5smwik6griwfx9mr"; + }; + + buildAttrs = { + preBuild = '' + patchShebangs . + ''; + + installPhase = '' + # do not generate a wheel, instead just copy the generated files to $out to be installed by buildPythonPackage + sed -i 's,.*bdist_wheel.*,cp -rL . "$out"; exit 0,' bazel-bin/install + + # the target directory "dist" does not actually matter since we're not generating a wheel + bazel-bin/install dist + ''; + }; + }; + +# now use pip to install the package prepared by bazel +in buildPythonPackage rec { + pname = "dm-sonnet"; + inherit version; + + src = bazel-build; + + propagatedBuildInputs = [ + six + absl-py + semantic-version + contextlib2 + wrapt + tensorflow + tensorflow-probability + ]; + + # not sure how to properly run the real test suite -- through bazel? + checkPhase = '' + ${python.interpreter} -c "import sonnet" + ''; + + meta = with lib; { + description = "TensorFlow-based neural network library"; + homepage = https://sonnet.dev; + license = licenses.asl20; + maintainers = with maintainers; [ timokau ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1de7388833e9..37a3b376cf15 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4927,6 +4927,8 @@ in { snapperGUI = callPackage ../development/python-modules/snappergui { }; + dm-sonnet = callPackage ../development/python-modules/dm-sonnet { }; + uncertainties = callPackage ../development/python-modules/uncertainties { }; funcy = callPackage ../development/python-modules/funcy { };