From f58c96149d18d96061f1b5a1b176bd33325f543a Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Fri, 20 Feb 2015 10:36:16 -0800 Subject: [PATCH] protobuf: Fix python build --- .../libraries/protobuf/generic.nix | 2 ++ pkgs/top-level/python-packages.nix | 34 ++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/protobuf/generic.nix b/pkgs/development/libraries/protobuf/generic.nix index 929621204a0d..16432b4357ab 100644 --- a/pkgs/development/libraries/protobuf/generic.nix +++ b/pkgs/development/libraries/protobuf/generic.nix @@ -31,4 +31,6 @@ stdenv.mkDerivation rec { homepage = http://code.google.com/p/protobuf/; }; + + passthru.version = version; } diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 705962698770..9e8516ad4303 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7512,16 +7512,42 @@ let }; }; - protobuf = buildPythonPackage rec { - inherit (pkgs.protobuf) name src; + protobuf = self.protobuf2_6; + protobuf2_6 = self.protobufBuild pkgs.protobuf2_6; + protobuf2_5 = self.protobufBuild pkgs.protobuf2_5; + protobufBuild = protobuf: buildPythonPackage rec { + inherit (protobuf) name src; - propagatedBuildInputs = with self; [ pkgs.protobuf google_apputils ]; - sourceRoot = "${name}-src/python"; + propagatedBuildInputs = with self; [ protobuf google_apputils ]; + + prePatch = '' + while [ ! -d python ]; do + cd * + done + cd python + ''; + + preConfigure = optionalString (versionAtLeast protobuf.version "2.6.0") '' + PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp + PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=2 + ''; + + checkPhase = if versionAtLeast protobuf.version "2.6.0" then '' + python setup.py google_test --cpp_implementation + '' else '' + python setup.py test + ''; + + installFlags = optional (versionAtLeast protobuf.version "2.6.0") "--cpp_implementation"; + + doCheck = true; meta = { description = "Protocol Buffers are Google's data interchange format"; homepage = http://code.google.com/p/protobuf/; }; + + passthru.protobuf = protobuf; };