mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-11 12:15:34 +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;
|
doCheck = false;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
description = "Python bindings for FoundationDB";
|
description = "Python bindings for FoundationDB";
|
||||||
homepage = "https://www.foundationdb.org";
|
homepage = "https://www.foundationdb.org";
|
||||||
license = with licenses; [ asl20 ];
|
license = with lib.licenses; [ asl20 ];
|
||||||
maintainers = with maintainers; [ thoughtpolice ];
|
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 { };
|
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 { };
|
fuse-ext2 = darwin.apple_sdk_11_0.callPackage ../tools/filesystems/fuse-ext2 { };
|
||||||
|
|
||||||
fwknop = callPackage ../tools/security/fwknop {
|
fwknop = callPackage ../tools/security/fwknop {
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
inherit (super)
|
inherit (super)
|
||||||
agdaPackages
|
agdaPackages
|
||||||
apacheHttpdPackages
|
apacheHttpdPackages
|
||||||
fdbPackages
|
|
||||||
fusePackages
|
fusePackages
|
||||||
gns3Packages
|
gns3Packages
|
||||||
haskellPackages
|
haskellPackages
|
||||||
|
|
|
@ -5213,8 +5213,8 @@ self: super: with self; {
|
||||||
|
|
||||||
fortiosapi = callPackage ../development/python-modules/fortiosapi { };
|
fortiosapi = callPackage ../development/python-modules/fortiosapi { };
|
||||||
|
|
||||||
foundationdb73 = callPackage ../servers/foundationdb/python.nix {
|
foundationdb = callPackage ../development/python-modules/foundationdb {
|
||||||
foundationdb = pkgs.foundationdb73;
|
inherit (pkgs) foundationdb;
|
||||||
};
|
};
|
||||||
|
|
||||||
fountains = callPackage ../development/python-modules/fountains { };
|
fountains = callPackage ../development/python-modules/fountains { };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue