mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00
foundationdb: move to pkgs/by-name (#396805)
This commit is contained in:
commit
f3ddc7475d
9 changed files with 180 additions and 241 deletions
175
pkgs/by-name/fo/foundationdb/package.nix
Normal file
175
pkgs/by-name/fo/foundationdb/package.nix
Normal file
|
@ -0,0 +1,175 @@
|
|||
{
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
fetchpatch,
|
||||
cmake,
|
||||
ninja,
|
||||
python3,
|
||||
openjdk,
|
||||
mono,
|
||||
openssl,
|
||||
boost186,
|
||||
pkg-config,
|
||||
msgpack-cxx,
|
||||
toml11,
|
||||
jemalloc,
|
||||
doctest,
|
||||
}:
|
||||
let
|
||||
boost = boost186;
|
||||
# Only even numbered versions compile on aarch64; odd numbered versions have avx enabled.
|
||||
avxEnabled =
|
||||
version:
|
||||
let
|
||||
isOdd = n: lib.trivial.mod n 2 != 0;
|
||||
patch = lib.toInt (lib.versions.patch version);
|
||||
in
|
||||
isOdd patch;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "foundationdb";
|
||||
version = "7.3.42";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "apple";
|
||||
repo = "foundationdb";
|
||||
tag = version;
|
||||
hash = "sha256-jQcm+HLai5da2pZZ7iLdN6fpQZxf5+/kkfv9OSXQ57c=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./disable-flowbench.patch
|
||||
./don-t-use-static-boost-libs.patch
|
||||
# GetMsgpack: add 4+ versions of upstream
|
||||
# https://github.com/apple/foundationdb/pull/10935
|
||||
(fetchpatch {
|
||||
url = "https://github.com/apple/foundationdb/commit/c35a23d3f6b65698c3b888d76de2d93a725bff9c.patch";
|
||||
hash = "sha256-bneRoZvCzJp0Hp/G0SzAyUyuDrWErSpzv+ickZQJR5w=";
|
||||
})
|
||||
# Add a dependency that prevents bindingtester to run before the python bindings are generated
|
||||
# https://github.com/apple/foundationdb/pull/11859
|
||||
(fetchpatch {
|
||||
url = "https://github.com/apple/foundationdb/commit/8d04c97a74c6b83dd8aa6ff5af67587044c2a572.patch";
|
||||
hash = "sha256-ZLIcmcfirm1+96DtTIr53HfM5z38uTLZrRNHAmZL6rc=";
|
||||
})
|
||||
];
|
||||
|
||||
hardeningDisable = [ "fortify" ];
|
||||
|
||||
postPatch = ''
|
||||
# allow using any msgpack-cxx version
|
||||
substituteInPlace cmake/GetMsgpack.cmake \
|
||||
--replace-warn 'find_package(msgpack-cxx 6 QUIET CONFIG)' 'find_package(msgpack-cxx QUIET CONFIG)'
|
||||
|
||||
# Use our doctest package
|
||||
substituteInPlace bindings/c/test/unit/third_party/CMakeLists.txt \
|
||||
--replace-fail '/opt/doctest_proj_2.4.8' '${doctest}/include'
|
||||
|
||||
# Upstream upgraded to Boost 1.86 with no code changes; see:
|
||||
# <https://github.com/apple/foundationdb/pull/11788>
|
||||
substituteInPlace cmake/CompileBoost.cmake \
|
||||
--replace-fail 'find_package(Boost 1.78.0 EXACT ' 'find_package(Boost '
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
jemalloc
|
||||
msgpack-cxx
|
||||
openssl
|
||||
toml11
|
||||
];
|
||||
|
||||
checkInputs = [ doctest ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
mono
|
||||
ninja
|
||||
openjdk
|
||||
pkg-config
|
||||
python3
|
||||
];
|
||||
|
||||
separateDebugInfo = true;
|
||||
dontFixCmake = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DFDB_RELEASE=TRUE"
|
||||
|
||||
# Disable CMake warnings for project developers.
|
||||
"-Wno-dev"
|
||||
|
||||
# CMake Error at fdbserver/CMakeLists.txt:332 (find_library):
|
||||
# > Could not find lz4_STATIC_LIBRARIES using the following names: liblz4.a
|
||||
"-DSSD_ROCKSDB_EXPERIMENTAL=FALSE"
|
||||
|
||||
"-DBUILD_DOCUMENTATION=FALSE"
|
||||
|
||||
# LTO brings up overall build time, but results in much smaller
|
||||
# binaries for all users and the cache.
|
||||
"-DUSE_LTO=ON"
|
||||
|
||||
# Gold helps alleviate the link time, especially when LTO is
|
||||
# enabled. But even then, it still takes a majority of the time.
|
||||
"-DUSE_LD=GOLD"
|
||||
|
||||
# FIXME: why can't openssl be found automatically?
|
||||
"-DOPENSSL_USE_STATIC_LIBS=FALSE"
|
||||
"-DOPENSSL_CRYPTO_LIBRARY=${openssl.out}/lib/libcrypto.so"
|
||||
"-DOPENSSL_SSL_LIBRARY=${openssl.out}/lib/libssl.so"
|
||||
];
|
||||
|
||||
# the install phase for cmake is pretty wonky right now since it's not designed to
|
||||
# coherently install packages as most linux distros expect -- it's designed to build
|
||||
# packaged artifacts that are shipped in RPMs, etc. we need to add some extra code to
|
||||
# cmake upstream to fix this, and if we do, i think most of this can go away.
|
||||
postInstall = ''
|
||||
mv $out/sbin/fdbmonitor $out/bin/fdbmonitor
|
||||
mkdir $out/libexec && mv $out/usr/lib/foundationdb/backup_agent/backup_agent $out/libexec/backup_agent
|
||||
mv $out/sbin/fdbserver $out/bin/fdbserver
|
||||
|
||||
rm -rf $out/etc $out/lib/foundationdb $out/lib/systemd $out/log $out/sbin $out/usr $out/var
|
||||
|
||||
# move results into multi outputs
|
||||
mkdir -p $dev $lib
|
||||
mv $out/include $dev/include
|
||||
mv $out/lib $lib/lib
|
||||
|
||||
# python bindings
|
||||
# NB: use the original setup.py.in, so we can substitute VERSION correctly
|
||||
cp ../LICENSE ./bindings/python
|
||||
substitute ../bindings/python/setup.py.in ./bindings/python/setup.py \
|
||||
--replace 'VERSION' "${version}"
|
||||
rm -f ./bindings/python/setup.py.* ./bindings/python/CMakeLists.txt
|
||||
rm -f ./bindings/python/fdb/*.pth # remove useless files
|
||||
rm -f ./bindings/python/*.rst ./bindings/python/*.mk
|
||||
|
||||
cp -R ./bindings/python/ tmp-pythonsrc/
|
||||
tar -zcf $pythonsrc --transform s/tmp-pythonsrc/python-foundationdb/ ./tmp-pythonsrc/
|
||||
|
||||
# java bindings
|
||||
mkdir -p $lib/share/java
|
||||
mv lib/fdb-java-*.jar $lib/share/java/fdb-java.jar
|
||||
'';
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
"lib"
|
||||
"pythonsrc"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Open source, distributed, transactional key-value store";
|
||||
homepage = "https://www.foundationdb.org";
|
||||
license = lib.licenses.asl20;
|
||||
platforms = [ "x86_64-linux" ] ++ lib.optionals (!(avxEnabled version)) [ "aarch64-linux" ];
|
||||
# Fails when cross-compiling with "/bin/sh: gcc-ar: not found"
|
||||
broken = stdenv.buildPlatform != stdenv.hostPlatform;
|
||||
maintainers = with lib.maintainers; [
|
||||
thoughtpolice
|
||||
lostnet
|
||||
];
|
||||
};
|
||||
}
|
|
@ -18,10 +18,10 @@ buildPythonPackage {
|
|||
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Python bindings for FoundationDB";
|
||||
homepage = "https://www.foundationdb.org";
|
||||
license = with licenses; [ asl20 ];
|
||||
maintainers = with maintainers; [ thoughtpolice ];
|
||||
license = with lib.licenses; [ asl20 ];
|
||||
maintainers = with lib.maintainers; [ thoughtpolice ];
|
||||
};
|
||||
}
|
|
@ -1,178 +0,0 @@
|
|||
# This builder is for FoundationDB CMake build system.
|
||||
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
ninja,
|
||||
python3,
|
||||
openjdk,
|
||||
mono,
|
||||
pkg-config,
|
||||
msgpack-cxx,
|
||||
toml11,
|
||||
jemalloc,
|
||||
doctest,
|
||||
|
||||
gccStdenv,
|
||||
llvmPackages,
|
||||
useClang ? false,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
stdenv = if useClang then llvmPackages.libcxxStdenv else gccStdenv;
|
||||
|
||||
# Only even numbered versions compile on aarch64; odd numbered versions have avx enabled.
|
||||
avxEnabled =
|
||||
version:
|
||||
let
|
||||
isOdd = n: lib.trivial.mod n 2 != 0;
|
||||
patch = lib.toInt (lib.versions.patch version);
|
||||
in
|
||||
isOdd patch;
|
||||
|
||||
makeFdb =
|
||||
{
|
||||
version,
|
||||
hash,
|
||||
rev ? "refs/tags/${version}",
|
||||
officialRelease ? true,
|
||||
patches ? [ ],
|
||||
boost,
|
||||
ssl,
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "foundationdb";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "apple";
|
||||
repo = "foundationdb";
|
||||
inherit rev hash;
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
ssl
|
||||
boost
|
||||
msgpack-cxx
|
||||
toml11
|
||||
jemalloc
|
||||
];
|
||||
|
||||
checkInputs = [ doctest ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
ninja
|
||||
python3
|
||||
openjdk
|
||||
mono
|
||||
] ++ lib.optionals useClang [ llvmPackages.lld ];
|
||||
|
||||
separateDebugInfo = true;
|
||||
dontFixCmake = true;
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.optionalString officialRelease "-DFDB_RELEASE=TRUE")
|
||||
|
||||
# Disable CMake warnings for project developers.
|
||||
"-Wno-dev"
|
||||
|
||||
# CMake Error at fdbserver/CMakeLists.txt:332 (find_library):
|
||||
# > Could not find lz4_STATIC_LIBRARIES using the following names: liblz4.a
|
||||
"-DSSD_ROCKSDB_EXPERIMENTAL=FALSE"
|
||||
|
||||
"-DBUILD_DOCUMENTATION=FALSE"
|
||||
|
||||
# LTO brings up overall build time, but results in much smaller
|
||||
# binaries for all users and the cache.
|
||||
(lib.optionalString (!useClang) "-DUSE_LTO=ON")
|
||||
|
||||
# Gold helps alleviate the link time, especially when LTO is
|
||||
# enabled. But even then, it still takes a majority of the time.
|
||||
# Same with LLD when Clang is available.
|
||||
(lib.optionalString useClang "-DUSE_LD=LLD")
|
||||
(lib.optionalString (!useClang) "-DUSE_LD=GOLD")
|
||||
|
||||
# FIXME: why can't openssl be found automatically?
|
||||
"-DOPENSSL_USE_STATIC_LIBS=FALSE"
|
||||
"-DOPENSSL_CRYPTO_LIBRARY=${ssl.out}/lib/libcrypto.so"
|
||||
"-DOPENSSL_SSL_LIBRARY=${ssl.out}/lib/libssl.so"
|
||||
];
|
||||
|
||||
hardeningDisable = [ "fortify" ];
|
||||
|
||||
inherit patches;
|
||||
|
||||
postPatch = ''
|
||||
# allow using any msgpack-cxx version
|
||||
substituteInPlace cmake/GetMsgpack.cmake \
|
||||
--replace-warn 'find_package(msgpack-cxx 6 QUIET CONFIG)' 'find_package(msgpack-cxx QUIET CONFIG)'
|
||||
|
||||
# Use our doctest package
|
||||
substituteInPlace bindings/c/test/unit/third_party/CMakeLists.txt \
|
||||
--replace-fail '/opt/doctest_proj_2.4.8' '${doctest}/include'
|
||||
|
||||
# Upstream upgraded to Boost 1.86 with no code changes; see:
|
||||
# <https://github.com/apple/foundationdb/pull/11788>
|
||||
substituteInPlace cmake/CompileBoost.cmake \
|
||||
--replace-fail 'find_package(Boost 1.78.0 EXACT ' 'find_package(Boost '
|
||||
'';
|
||||
|
||||
# the install phase for cmake is pretty wonky right now since it's not designed to
|
||||
# coherently install packages as most linux distros expect -- it's designed to build
|
||||
# packaged artifacts that are shipped in RPMs, etc. we need to add some extra code to
|
||||
# cmake upstream to fix this, and if we do, i think most of this can go away.
|
||||
postInstall = ''
|
||||
mv $out/sbin/fdbmonitor $out/bin/fdbmonitor
|
||||
mkdir $out/libexec && mv $out/usr/lib/foundationdb/backup_agent/backup_agent $out/libexec/backup_agent
|
||||
mv $out/sbin/fdbserver $out/bin/fdbserver
|
||||
|
||||
rm -rf $out/etc $out/lib/foundationdb $out/lib/systemd $out/log $out/sbin $out/usr $out/var
|
||||
|
||||
# move results into multi outputs
|
||||
mkdir -p $dev $lib
|
||||
mv $out/include $dev/include
|
||||
mv $out/lib $lib/lib
|
||||
|
||||
# python bindings
|
||||
# NB: use the original setup.py.in, so we can substitute VERSION correctly
|
||||
cp ../LICENSE ./bindings/python
|
||||
substitute ../bindings/python/setup.py.in ./bindings/python/setup.py \
|
||||
--replace 'VERSION' "${version}"
|
||||
rm -f ./bindings/python/setup.py.* ./bindings/python/CMakeLists.txt
|
||||
rm -f ./bindings/python/fdb/*.pth # remove useless files
|
||||
rm -f ./bindings/python/*.rst ./bindings/python/*.mk
|
||||
|
||||
cp -R ./bindings/python/ tmp-pythonsrc/
|
||||
tar -zcf $pythonsrc --transform s/tmp-pythonsrc/python-foundationdb/ ./tmp-pythonsrc/
|
||||
|
||||
# java bindings
|
||||
mkdir -p $lib/share/java
|
||||
mv lib/fdb-java-*.jar $lib/share/java/fdb-java.jar
|
||||
'';
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
"lib"
|
||||
"pythonsrc"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Open source, distributed, transactional key-value store";
|
||||
homepage = "https://www.foundationdb.org";
|
||||
license = licenses.asl20;
|
||||
platforms = [ "x86_64-linux" ] ++ lib.optionals (!(avxEnabled version)) [ "aarch64-linux" ];
|
||||
# Fails when cross-compiling with "/bin/sh: gcc-ar: not found"
|
||||
broken = stdenv.buildPlatform != stdenv.hostPlatform;
|
||||
maintainers = with maintainers; [
|
||||
thoughtpolice
|
||||
lostnet
|
||||
];
|
||||
};
|
||||
};
|
||||
in
|
||||
makeFdb
|
|
@ -1,49 +0,0 @@
|
|||
{
|
||||
gccStdenv,
|
||||
llvmPackages,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
|
||||
cmake,
|
||||
ninja,
|
||||
python3,
|
||||
openjdk,
|
||||
mono,
|
||||
openssl,
|
||||
boost186,
|
||||
pkg-config,
|
||||
msgpack-cxx,
|
||||
toml11,
|
||||
jemalloc,
|
||||
doctest,
|
||||
}@args:
|
||||
|
||||
let
|
||||
cmakeBuild = import ./cmake.nix args;
|
||||
in
|
||||
{
|
||||
foundationdb73 = cmakeBuild {
|
||||
version = "7.3.42";
|
||||
hash = "sha256-jQcm+HLai5da2pZZ7iLdN6fpQZxf5+/kkfv9OSXQ57c=";
|
||||
boost = boost186;
|
||||
ssl = openssl;
|
||||
|
||||
patches = [
|
||||
./patches/disable-flowbench.patch
|
||||
./patches/don-t-use-static-boost-libs.patch
|
||||
# GetMsgpack: add 4+ versions of upstream
|
||||
# https://github.com/apple/foundationdb/pull/10935
|
||||
(fetchpatch {
|
||||
url = "https://github.com/apple/foundationdb/commit/c35a23d3f6b65698c3b888d76de2d93a725bff9c.patch";
|
||||
hash = "sha256-bneRoZvCzJp0Hp/G0SzAyUyuDrWErSpzv+ickZQJR5w=";
|
||||
})
|
||||
# Add a dependency that prevents bindingtester to run before the python bindings are generated
|
||||
# https://github.com/apple/foundationdb/pull/11859
|
||||
(fetchpatch {
|
||||
url = "https://github.com/apple/foundationdb/commit/8d04c97a74c6b83dd8aa6ff5af67587044c2a572.patch";
|
||||
hash = "sha256-ZLIcmcfirm1+96DtTIr53HfM5z38uTLZrRNHAmZL6rc=";
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
|
@ -3446,14 +3446,6 @@ with pkgs;
|
|||
|
||||
fstl = qt5.callPackage ../applications/graphics/fstl { };
|
||||
|
||||
fdbPackages = dontRecurseIntoAttrs (callPackage ../servers/foundationdb { });
|
||||
|
||||
inherit (fdbPackages)
|
||||
foundationdb73
|
||||
;
|
||||
|
||||
foundationdb = foundationdb73;
|
||||
|
||||
fuse-ext2 = darwin.apple_sdk_11_0.callPackage ../tools/filesystems/fuse-ext2 { };
|
||||
|
||||
fwknop = callPackage ../tools/security/fwknop {
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
inherit (super)
|
||||
agdaPackages
|
||||
apacheHttpdPackages
|
||||
fdbPackages
|
||||
fusePackages
|
||||
gns3Packages
|
||||
haskellPackages
|
||||
|
|
|
@ -5213,8 +5213,8 @@ self: super: with self; {
|
|||
|
||||
fortiosapi = callPackage ../development/python-modules/fortiosapi { };
|
||||
|
||||
foundationdb73 = callPackage ../servers/foundationdb/python.nix {
|
||||
foundationdb = pkgs.foundationdb73;
|
||||
foundationdb = callPackage ../development/python-modules/foundationdb {
|
||||
inherit (pkgs) foundationdb;
|
||||
};
|
||||
|
||||
fountains = callPackage ../development/python-modules/fountains { };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue