Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 lib,
3 stdenv,
4 fetchurl,
5 jdk17_headless,
6 makeWrapper,
7 bash,
8 coreutils,
9 gnugrep,
10 gnused,
11 ps,
12 nixosTests,
13}:
14
15let
16 versionMap = {
17 "4_0" = {
18 kafkaVersion = "4.0.0";
19 scalaVersion = "2.13";
20 sha256 = "sha256-e4Uuk4vAneEM2W7KN1UljH0l+4nb3XYwVxdgfhg14qo=";
21 jre = jdk17_headless;
22 nixosTest = nixosTests.kafka.base.kafka_4_0;
23 };
24 "3_9" = {
25 kafkaVersion = "3.9.0";
26 scalaVersion = "2.13";
27 sha256 = "sha256-q8REAt3xA+OPGbDktE5l2pqDG6nlj9dyUEGxqhaO6NE=";
28 jre = jdk17_headless;
29 nixosTest = nixosTests.kafka.base.kafka_3_9;
30 };
31 "3_8" = {
32 kafkaVersion = "3.8.1";
33 scalaVersion = "2.13";
34 sha256 = "sha256-IhdChtYMqmKyVQbEhpRLxuBNjLLS8VCD0v60gjl3i2I=";
35 jre = jdk17_headless;
36 nixosTest = nixosTests.kafka.base.kafka_3_8;
37 };
38 "3_7" = {
39 kafkaVersion = "3.7.1";
40 scalaVersion = "2.13";
41 sha256 = "sha256-YqyuShQ92YPcfrSATVdEugxQsZm1CPWZ7wAQIOJVj8k=";
42 jre = jdk17_headless;
43 nixosTest = nixosTests.kafka.base.kafka_3_7;
44 };
45 };
46
47 build =
48 versionInfo:
49 stdenv.mkDerivation rec {
50 version = "${versionInfo.scalaVersion}-${versionInfo.kafkaVersion}";
51 pname = "apache-kafka";
52
53 src = fetchurl {
54 url = "mirror://apache/kafka/${versionInfo.kafkaVersion}/kafka_${version}.tgz";
55 inherit (versionInfo) sha256;
56 };
57
58 nativeBuildInputs = [ makeWrapper ];
59 buildInputs = [
60 versionInfo.jre
61 bash
62 gnugrep
63 gnused
64 coreutils
65 ps
66 ];
67
68 installPhase = ''
69 mkdir -p $out
70 cp -R config libs $out
71
72 mkdir -p $out/bin
73 cp bin/kafka* $out/bin
74 cp bin/connect* $out/bin
75
76 # allow us the specify logging directory using env
77 substituteInPlace $out/bin/kafka-run-class.sh \
78 --replace 'LOG_DIR="$base_dir/logs"' 'LOG_DIR="$KAFKA_LOG_DIR"'
79
80 substituteInPlace $out/bin/kafka-server-stop.sh \
81 --replace 'ps' '${ps}/bin/ps'
82
83 for p in $out/bin\/*.sh; do
84 wrapProgram $p \
85 --set JAVA_HOME "${versionInfo.jre}" \
86 --set KAFKA_LOG_DIR "/tmp/apache-kafka-logs" \
87 --prefix PATH : "${bash}/bin:${coreutils}/bin:${gnugrep}/bin:${gnused}/bin"
88 done
89 chmod +x $out/bin\/*
90 '';
91
92 passthru = {
93 inherit (versionInfo) jre; # Used by the NixOS module to select the supported JRE
94 tests.nixos = versionInfo.nixosTest;
95 };
96
97 meta = {
98 homepage = "https://kafka.apache.org";
99 description = "High-throughput distributed messaging system";
100 license = lib.licenses.asl20;
101 sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
102 maintainers = [ lib.maintainers.ragge ];
103 platforms = lib.platforms.unix;
104 };
105 };
106in
107lib.mapAttrs' (
108 majorVersion: versionInfo: lib.nameValuePair "apacheKafka_${majorVersion}" (build versionInfo)
109) versionMap