python312Packages.icontract: relax deps (#380554)
[NixPkgs.git] / pkgs / by-name / dr / druid / package.nix
blob76101c55a26bb5c049d13f0237d8b70986045e69
2   lib,
3   stdenv,
4   fetchurl,
5   mysql_jdbc,
6   extensions ? { },
7   libJars ? [ ],
8   nixosTests,
9   mysqlSupport ? true,
11 let
12   inherit (lib)
13     concatStringsSep
14     licenses
15     maintainers
16     mapAttrsToList
17     optionalString
18     forEach
19     ;
21 stdenv.mkDerivation (finalAttrs: {
22   pname = "apache-druid";
23   version = "31.0.0";
25   src = fetchurl {
26     url = "mirror://apache/druid/${finalAttrs.version}/apache-druid-${finalAttrs.version}-bin.tar.gz";
27     hash = "sha256-xppAoKNS/qB8WVMwBPxxHbOy5uDGl3IxrCWV1T+YQkE=";
28   };
30   dontBuild = true;
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   );
54   loadJars = concatStringsSep "\n" (forEach libJars (jar: "cp ${jar} $out/lib/"));
56   installPhase = ''
57     runHook preInstall
58     mkdir $out
59     mv * $out
60     ${optionalString mysqlSupport "ln -s ${mysql_jdbc}/share/java/mysql-connector-java.jar $out/extensions/mysql-metadata-storage"}
61     ${finalAttrs.loadExtensions}
62     ${finalAttrs.loadJars}
63     runHook postInstall
64   '';
66   passthru = {
67     tests = nixosTests.druid.default.passthru.override { druidPackage = finalAttrs.finalPackage; };
68   };
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   };