Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 109 lines 3.0 kB view raw
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