parent
8ce60904ba
commit
3ed4e07a52
@ -1,10 +0,0 @@ |
|||||||
{ callPackage, fetchurl, ... } @ args: |
|
||||||
|
|
||||||
callPackage ./generic.nix (args // rec { |
|
||||||
version = "2.5.0"; |
|
||||||
# make sure you test also -A pythonPackages.protobuf |
|
||||||
src = fetchurl { |
|
||||||
url = "http://protobuf.googlecode.com/files/${version}.tar.bz2"; |
|
||||||
sha256 = "0xxn9gxhvsgzz2sgmihzf6pf75clr05mqj6218camwrwajpcbgqk"; |
|
||||||
}; |
|
||||||
}) |
|
@ -1,61 +0,0 @@ |
|||||||
{ lib, stdenv, version, src |
|
||||||
, autoreconfHook, zlib, gtest |
|
||||||
, ... |
|
||||||
}: |
|
||||||
|
|
||||||
stdenv.mkDerivation { |
|
||||||
pname = "protobuf"; |
|
||||||
inherit version; |
|
||||||
|
|
||||||
inherit src; |
|
||||||
|
|
||||||
postPatch = '' |
|
||||||
rm -rf gtest |
|
||||||
cp -r ${gtest.src}/googletest gtest |
|
||||||
chmod -R a+w gtest |
|
||||||
'' + lib.optionalString stdenv.isDarwin '' |
|
||||||
substituteInPlace src/google/protobuf/testing/googletest.cc \ |
|
||||||
--replace 'tmpnam(b)' '"'$TMPDIR'/foo"' |
|
||||||
''; |
|
||||||
|
|
||||||
outputs = [ "out" "lib" ]; |
|
||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook ]; |
|
||||||
buildInputs = [ zlib ]; |
|
||||||
|
|
||||||
# The generated C++ code uses static initializers which mutate a global data |
|
||||||
# structure. This causes problems for an executable when: |
|
||||||
# |
|
||||||
# 1) it dynamically links to two libs, both of which contain generated C++ for |
|
||||||
# the same proto file, and |
|
||||||
# 2) the two aforementioned libs both dynamically link to libprotobuf. |
|
||||||
# |
|
||||||
# One solution is to statically link libprotobuf, that way the global |
|
||||||
# variables are not shared; in fact, this is necessary for the python Mesos |
|
||||||
# binding to not crash, as the python lib contains two C extensions which |
|
||||||
# both refer to the same proto schema. |
|
||||||
# |
|
||||||
# See: https://github.com/NixOS/nixpkgs/pull/19064#issuecomment-255082684 |
|
||||||
# https://github.com/google/protobuf/issues/1489 |
|
||||||
dontDisableStatic = true; |
|
||||||
configureFlags = [ |
|
||||||
"CFLAGS=-fPIC" |
|
||||||
"CXXFLAGS=-fPIC" |
|
||||||
]; |
|
||||||
|
|
||||||
doCheck = true; |
|
||||||
|
|
||||||
meta = { |
|
||||||
description = "Protocol Buffers - Google's data interchange format"; |
|
||||||
longDescription = |
|
||||||
'' Protocol Buffers are a way of encoding structured data in an |
|
||||||
efficient yet extensible format. Google uses Protocol Buffers for |
|
||||||
almost all of its internal RPC protocols and file formats. |
|
||||||
''; |
|
||||||
license = "mBSD"; |
|
||||||
homepage = "https://developers.google.com/protocol-buffers/"; |
|
||||||
platforms = lib.platforms.unix; |
|
||||||
}; |
|
||||||
|
|
||||||
passthru.version = version; |
|
||||||
} |
|
Loading…
Reference in new issue