leveldb: reenable RTTI in build

LevelDB 1.23 forces -fno-rtti in their CMakeLists.txt, which breaks
downstream projects (e.g. Ceph).

See
https://github.com/NixOS/nixpkgs/issues/147801#issuecomment-984627336
for some discussion about this.

OpenSUSE, Fedora, and Arch have all re-enabled RTTI in their packaging
of LevelDB as a result.
This commit is contained in:
Luke Granger-Brown 2021-12-26 21:34:38 +00:00
parent 4707331a3f
commit 5d2fefe6e5

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, fixDarwinDylibNames, snappy, cmake
{ lib, stdenv, fetchFromGitHub, fetchpatch, fixDarwinDylibNames, snappy, cmake
, static ? stdenv.hostPlatform.isStatic }:
stdenv.mkDerivation rec {
@ -12,6 +12,17 @@ stdenv.mkDerivation rec {
sha256 = "sha256-RL+dfSFZZzWvUobSqiPbuC4nDiGzjIIukbVJZRacHbI=";
};
patches = [
# Re-enable RTTI. Needed for e.g. Ceph to compile properly.
# See https://github.com/NixOS/nixpkgs/issues/147801,
# https://github.com/google/leveldb/issues/731,
# https://lists.ceph.io/hyperkitty/list/dev@ceph.io/thread/K4OSAA4AJS2V7FQI6GNCKCK3IRQDBQRS/.
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/leveldb/raw/e8178670c664e952fdd00f1fc6e3eb28b2c5b6a8/f/0006-revert-no-rtti.patch";
sha256 = "sha256-d2YAV8O+1VKu3WwgNsWw6Cxg5sUUR+xOlJtA7pTcigQ=";
})
];
outputs = [ "out" "dev" ];
buildInputs = [ snappy ];