Files

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

116 lines
3.4 KiB
Nix
Raw Permalink Normal View History

2025-10-09 14:15:47 +02:00
{
lib,
llvmPackages,
fetchFromGitHub,
cmake,
ninja,
bison,
flex,
libarchive,
pam,
unixODBC,
jsoncons,
curl,
systemdLibs,
openssl,
boost183,
nlohmann_json,
nanodbc,
fmt_9,
spdlog,
}:
llvmPackages.stdenv.mkDerivation (finalAttrs: {
pname = "irods";
version = "5.0.1";
src = fetchFromGitHub {
owner = "irods";
repo = "irods";
tag = finalAttrs.version;
hash = "sha256-/mcuqukgDoMc89FL/TfOhHWglsfdLmQbAnQYT8vTFsY=";
};
nativeBuildInputs = [
cmake
ninja
bison
flex
];
buildInputs = [
libarchive
pam
unixODBC
jsoncons
curl
systemdLibs
];
propagatedBuildInputs = [
openssl
# Can potentially be unpinned after:
# <https://github.com/irods/irods/issues/7248>
boost183
nlohmann_json
nanodbc
# Tracking issue for `fmt_11`:
# <https://github.com/irods/irods/issues/8454>
fmt_9
(spdlog.override {
fmt = fmt_9;
})
];
cmakeFlags = finalAttrs.passthru.commonCmakeFlags ++ [
# Tracking issues for moving these to `find_package`:
# * <https://github.com/irods/irods/issues/6249>
# * <https://github.com/irods/irods/issues/6253>
(lib.cmakeFeature "IRODS_EXTERNALS_FULLPATH_BOOST" "${boost183}")
(lib.cmakeFeature "IRODS_EXTERNALS_FULLPATH_NANODBC" "${nanodbc}")
(lib.cmakeFeature "IRODS_EXTERNALS_FULLPATH_JSONCONS" "${jsoncons}")
];
postPatch = ''
patchShebangs ./test
substituteInPlace plugins/database/CMakeLists.txt --replace-fail \
'COMMAND cpp -E -P -D''${plugin} "''${CMAKE_CURRENT_BINARY_DIR}/src/icatSysTables.sql.pp" ' \
'COMMAND cpp -E -P -D''${plugin} "''${CMAKE_CURRENT_BINARY_DIR}/src/icatSysTables.sql.pp" -o '
substituteInPlace server/auth/CMakeLists.txt --replace-fail SETUID ""
'';
passthru = {
commonCmakeFlags = [
# We already use Clang in the `stdenv`.
(lib.cmakeBool "IRODS_BUILD_WITH_CLANG" false)
# Upstream builds with LLVM 16 and doesnt handle newer warnings.
(lib.cmakeBool "IRODS_BUILD_WITH_WERROR" false)
(lib.cmakeFeature "IRODS_HOME_DIRECTORY" "${placeholder "out"}")
(lib.cmakeFeature "IRODS_LINUX_DISTRIBUTION_NAME" "NixOS")
(lib.cmakeFeature "IRODS_LINUX_DISTRIBUTION_VERSION" lib.trivial.release)
(lib.cmakeFeature "IRODS_LINUX_DISTRIBUTION_VERSION_MAJOR" lib.trivial.release)
(lib.cmakeFeature "CPACK_GENERATOR" "TGZ")
];
};
meta = {
description = "Integrated Rule-Oriented Data System (iRODS)";
longDescription = ''
The Integrated Rule-Oriented Data System (iRODS) is open source data management
software used by research organizations and government agencies worldwide.
iRODS is released as a production-level distribution aimed at deployment in mission
critical environments. It virtualizes data storage resources, so users can take
control of their data, regardless of where and on what device the data is stored.
As data volumes grow and data services become more complex, iRODS is increasingly
important in data management. The development infrastructure supports exhaustive
testing on supported platforms; plug-in support for microservices, storage resources,
drivers, and databases; and extensive documentation, training and support services.
'';
homepage = "https://irods.org";
license = lib.licenses.bsd3;
maintainers = [ lib.maintainers.bzizou ];
platforms = lib.platforms.linux;
mainProgram = "irodsServer";
};
})