1{
2 lib,
3 stdenv,
4 fetchurl,
5 mysql_jdbc,
6 extensions ? { },
7 libJars ? [ ],
8 nixosTests,
9 mysqlSupport ? true,
10}:
11let
12 inherit (lib)
13 concatStringsSep
14 licenses
15 maintainers
16 mapAttrsToList
17 optionalString
18 forEach
19 ;
20in
21stdenv.mkDerivation (finalAttrs: {
22 pname = "apache-druid";
23 version = "33.0.0";
24
25 src = fetchurl {
26 url = "mirror://apache/druid/${finalAttrs.version}/apache-druid-${finalAttrs.version}-bin.tar.gz";
27 hash = "sha256-XuXdvMInODSvihjdFzsqBLmpEct85RYnnbYFeIq9fXk=";
28 };
29
30 dontBuild = true;
31
32 loadExtensions = (
33 concatStringsSep "\n" (
34 mapAttrsToList (
35 dir: files:
36 ''
37 if ! test -d $out/extensions/${dir}; then
38 mkdir $out/extensions/${dir};
39 fi
40 ''
41 + concatStringsSep "\n" (
42 forEach files (file: ''
43 if test -d ${file} ; then
44 cp ${file}/* $out/extensions/${dir}/
45 else
46 cp ${file} $out/extensions/${dir}/
47 fi
48 '')
49 )
50 ) extensions
51 )
52 );
53
54 loadJars = concatStringsSep "\n" (forEach libJars (jar: "cp ${jar} $out/lib/"));
55
56 installPhase = ''
57 runHook preInstall
58 mkdir $out
59 mv * $out
60 ${optionalString mysqlSupport "ln -s ${mysql_jdbc}/share/java/mysql-connector-j.jar $out/extensions/mysql-metadata-storage"}
61 ${finalAttrs.loadExtensions}
62 ${finalAttrs.loadJars}
63 runHook postInstall
64 '';
65
66 passthru = {
67 tests = nixosTests.druid.default.passthru.override { druidPackage = finalAttrs.finalPackage; };
68 };
69
70 meta = {
71 description = "Apache Druid: a high performance real-time analytics database";
72 homepage = "https://github.com/apache/druid";
73 license = licenses.asl20;
74 maintainers = with maintainers; [ vsharathchandra ];
75 mainProgram = "druid";
76 };
77
78})