1{
2 lib,
3 stdenv,
4 bzip2,
5 zlib,
6 autoconf,
7 automake,
8 cmake,
9 help2man,
10 texinfo,
11 libtool,
12 cppzmq,
13 libarchive,
14 avro-cpp,
15 boost,
16 zeromq,
17 openssl,
18 pam,
19 libiodbc,
20 libkrb5,
21 gcc,
22 libcxx,
23 which,
24 catch2,
25 nanodbc,
26 fmt,
27 nlohmann_json,
28 curl,
29 spdlog_rods,
30 bison,
31 flex,
32}:
33
34# Common attributes of irods packages
35
36{
37 nativeBuildInputs = [
38 autoconf
39 automake
40 cmake
41 help2man
42 texinfo
43 which
44 gcc
45 bison
46 flex
47 ];
48 buildInputs = [
49 bzip2
50 zlib
51 libtool
52 cppzmq
53 libarchive
54 avro-cpp
55 zeromq
56 openssl
57 pam
58 libiodbc
59 libkrb5
60 boost
61 libcxx
62 catch2
63 nanodbc
64 fmt
65 nlohmann_json
66 spdlog_rods
67 curl
68 ];
69
70 cmakeFlags = [
71 "-DIRODS_EXTERNALS_FULLPATH_CLANG=${stdenv.cc}"
72 "-DIRODS_EXTERNALS_FULLPATH_CLANG_RUNTIME=${stdenv.cc}"
73 "-DIRODS_EXTERNALS_FULLPATH_ARCHIVE=${libarchive.lib}"
74 "-DIRODS_EXTERNALS_FULLPATH_AVRO=${avro-cpp}"
75 "-DIRODS_EXTERNALS_FULLPATH_BOOST=${boost}"
76 "-DIRODS_EXTERNALS_FULLPATH_ZMQ=${zeromq}"
77 "-DIRODS_EXTERNALS_FULLPATH_CPPZMQ=${cppzmq}"
78 "-DIRODS_EXTERNALS_FULLPATH_CATCH2=${catch2}"
79 "-DIRODS_EXTERNALS_FULLPATH_NANODBC=${nanodbc}"
80 "-DIRODS_EXTERNALS_FULLPATH_FMT=${fmt}"
81 "-DIRODS_EXTERNALS_FULLPATH_JSON=${nlohmann_json}"
82 "-DIRODS_EXTERNALS_FULLPATH_SPDLOG=${spdlog_rods}"
83 "-DIRODS_LINUX_DISTRIBUTION_NAME=nix"
84 "-DIRODS_LINUX_DISTRIBUTION_VERSION_MAJOR=1.0"
85 "-DCPACK_GENERATOR=TGZ"
86 "-DCMAKE_CXX_FLAGS=-I${lib.getDev libcxx}/include/c++/v1"
87 "-DPAM_LIBRARY=${pam}/lib/libpam.so"
88 "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
89 "-DIRODS_HOME_DIRECTORY=${placeholder "out"}"
90 "-DCMAKE_INSTALL_SBINDIR=${placeholder "out"}/sbin"
91 ];
92
93 postPatch = ''
94 patchShebangs ./packaging ./scripts
95 '';
96
97 meta = with lib; {
98 description = "Integrated Rule-Oriented Data System (iRODS)";
99 longDescription = ''
100 The Integrated Rule-Oriented Data System (iRODS) is open source data management
101 software used by research organizations and government agencies worldwide.
102 iRODS is released as a production-level distribution aimed at deployment in mission
103 critical environments. It virtualizes data storage resources, so users can take
104 control of their data, regardless of where and on what device the data is stored.
105 As data volumes grow and data services become more complex, iRODS is increasingly
106 important in data management. The development infrastructure supports exhaustive
107 testing on supported platforms; plug-in support for microservices, storage resources,
108 drivers, and databases; and extensive documentation, training and support services.'';
109 homepage = "https://irods.org";
110 license = lib.licenses.bsd3;
111 maintainers = [ lib.maintainers.bzizou ];
112 platforms = lib.platforms.linux;
113 };
114}