gfal2: Init at 2.22.2
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, fetchFromGitHub
|
||||
# Native build inputs
|
||||
, cmake
|
||||
, pkg-config
|
||||
# General build inputs
|
||||
, glib
|
||||
, gtest
|
||||
, json_c
|
||||
, openldap
|
||||
# Plugin build inputs
|
||||
, cryptopp
|
||||
, davix-copy
|
||||
, dcap
|
||||
, libssh2
|
||||
, libuuid
|
||||
, pugixml
|
||||
, xrootd
|
||||
# For enablePluginStatus.https only
|
||||
, gsoap
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gfal2";
|
||||
version = "2.22.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cern-fts";
|
||||
repo = "gfal2";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-xcM29mZRUrnSE0//rHMaJFgPBeT6E4WdB9tCFa/y5+g=";
|
||||
};
|
||||
|
||||
passthru.enablePluginStatus = {
|
||||
# TODO: Change back to `true` once dcap is fixed on Darwin.
|
||||
dcap = !dcap.meta.broken;
|
||||
file = true;
|
||||
gridftp = false;
|
||||
# davix-copy's dependency gsoap is currently only available on Linux.
|
||||
# TODO: Change back to `true` once gsoap is fixed on Darwin.
|
||||
http = lib.meta.availableOn stdenv.hostPlatform gsoap;
|
||||
lfc = false;
|
||||
# Break because of redundant `-luuid`. This needs to be fixed from the gfal2 upstream.
|
||||
# TODO: Change back to `true` once fixed.
|
||||
mock = !stdenv.isDarwin;
|
||||
rfio = false;
|
||||
sftp = true;
|
||||
srm = false;
|
||||
xrootd = true;
|
||||
};
|
||||
|
||||
passthru.tests = (
|
||||
# Enable only one plugin in each test case,
|
||||
# to ensure that they gets their dependency when invoked separately.
|
||||
lib.listToAttrs
|
||||
(map
|
||||
(pluginName: lib.nameValuePair
|
||||
"gfal2-${pluginName}"
|
||||
(finalAttrs.finalPackage.overrideAttrs (previousAttrs: {
|
||||
passthru = previousAttrs.passthru // {
|
||||
enablePluginStatus = lib.mapAttrs (n: v: n == pluginName) previousAttrs.passthru.enablePluginStatus;
|
||||
};
|
||||
})))
|
||||
(lib.filter (lib.flip lib.getAttr finalAttrs.passthru.enablePluginStatus) (lib.attrNames finalAttrs.passthru.enablePluginStatus))
|
||||
)
|
||||
) // {
|
||||
# Disable all plugins in this test case.
|
||||
gfal2-minimal = finalAttrs.finalPackage.overrideAttrs (previousAttrs: {
|
||||
passthru.enablePluginStatus = lib.mapAttrs (n: v: false) previousAttrs.passthru.enablePluginStatus;
|
||||
});
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = lib.unique (
|
||||
[
|
||||
glib
|
||||
json_c
|
||||
# gfal2 version older than 2.21.1 fails to see openldap 2.5+
|
||||
# and will complain
|
||||
# bin/ld: cannot find -lldap_r: No such file or directory
|
||||
# See https://github.com/cern-fts/gfal2/blob/aa24462bb67e259e525f26fb5feb97050a8c5c61/RELEASE-NOTES
|
||||
openldap
|
||||
pugixml # Optional, for MDS Cache.
|
||||
]
|
||||
++ lib.optionals finalAttrs.passthru.enablePluginStatus.dcap [ dcap ]
|
||||
++ lib.optionals finalAttrs.passthru.enablePluginStatus.http [ cryptopp davix-copy ]
|
||||
++ lib.optionals finalAttrs.passthru.enablePluginStatus.mock [ libuuid ]
|
||||
++ lib.optionals finalAttrs.passthru.enablePluginStatus.sftp [ libssh2 ]
|
||||
++ lib.optionals finalAttrs.passthru.enablePluginStatus.xrootd [ xrootd libuuid ]
|
||||
);
|
||||
|
||||
cmakeFlags = (
|
||||
map
|
||||
(pluginName: "-DPLUGIN_${lib.toUpper pluginName}=${lib.toUpper (lib.boolToString finalAttrs.passthru.enablePluginStatus.${pluginName})}")
|
||||
(lib.attrNames finalAttrs.passthru.enablePluginStatus)
|
||||
)
|
||||
++ [ "-DSKIP_TESTS=${lib.toUpper (lib.boolToString (!finalAttrs.doCheck))}" ]
|
||||
++ lib.optionals finalAttrs.doCheck [ "-DGTEST_INCLUDE_DIR=${gtest.dev}/include" ]
|
||||
++ lib.optionals finalAttrs.passthru.enablePluginStatus.http [ "-DCRYPTOPP_INCLUDE_DIRS=${cryptopp.dev}/include/cryptopp" ]
|
||||
++ lib.optionals finalAttrs.passthru.enablePluginStatus.xrootd [ "-DXROOTD_INCLUDE_DIR=${xrootd.dev}/include/xrootd" ]
|
||||
;
|
||||
|
||||
doCheck = stdenv.hostPlatform.isLinux;
|
||||
|
||||
checkInputs = [
|
||||
gtest
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Multi-protocol data management library by CERN";
|
||||
longDescription = ''
|
||||
GFAL (Grid File Access Library )
|
||||
is a C library providing an abstraction layer of
|
||||
the grid storage system complexity.
|
||||
The complexity of the grid is hidden from the client side
|
||||
behind a simple common POSIX API.
|
||||
'';
|
||||
homepage = "https://github.com/cern-fts/gfal2";
|
||||
license = licenses.asl20;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ ShamrockLee ];
|
||||
mainProgram = "gfal2";
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user