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