about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/opentsdb/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/opentsdb/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/misc/opentsdb/default.nix336
1 files changed, 322 insertions, 14 deletions
diff --git a/nixpkgs/pkgs/tools/misc/opentsdb/default.nix b/nixpkgs/pkgs/tools/misc/opentsdb/default.nix
index 18ba5f4b5fc5..2ed19e476023 100644
--- a/nixpkgs/pkgs/tools/misc/opentsdb/default.nix
+++ b/nixpkgs/pkgs/tools/misc/opentsdb/default.nix
@@ -1,34 +1,338 @@
-{ lib, stdenv, autoconf, automake, curl, fetchurl, fetchpatch, jdk8, makeWrapper, nettools
-, python2, git
+{ lib
+, stdenv
+, autoconf
+, automake
+, bash
+, curl
+, fetchFromGitHub
+, fetchMavenArtifact
+, fetchurl
+, fetchpatch
+, git
+, jdk8
+, makeWrapper
+, nettools
+, python3
 }:
 
-let jdk = jdk8; jre = jdk8.jre; in
-
-stdenv.mkDerivation rec {
+let
+  jdk = jdk8;
+  jre = jdk8.jre;
+  artifacts = {
+    apache = [
+      (fetchMavenArtifact {
+        groupId = "org.apache.commons";
+        artifactId = "commons-math3";
+        version = "3.6.1";
+        hash = "sha256-HlbXsFjSi2Wr0la4RY44hbZ0wdWI+kPNfRy7nH7yswg=";
+      })
+    ];
+    guava = [
+      (fetchMavenArtifact {
+        groupId = "com.google.guava";
+        artifactId = "guava";
+        version = "18.0";
+        hash = "sha256-1mT7/APS5c6cqypE+wHx0L+d/r7MwaRzsfnqMfefb5k=";
+      })
+    ];
+    gwt = [
+      (fetchMavenArtifact {
+        groupId = "com.google.gwt";
+        artifactId = "gwt-dev";
+        version = "2.6.1";
+        hash = "sha256-iS8VpnMPuxE9L9hkTJVtW5Tqgw2TIYei47zRvkdoK0o=";
+      })
+      (fetchMavenArtifact {
+        groupId = "com.google.gwt";
+        artifactId = "gwt-user";
+        version = "2.6.1";
+        hash = "sha256-3IlJ+b6C0Gmuh7aAFg9+ldgvZCdfJmTB8qcdC4HZC9g=";
+      })
+      (fetchMavenArtifact {
+        groupId = "net.opentsdb";
+        artifactId = "opentsdb-gwt-theme";
+        version = "1.0.0";
+        hash = "sha256-JJsjcRlQmIrwpOtMweH12e/Ut5NG8R50VPiOAMMGEdc=";
+      })
+    ];
+    hamcrest = [
+      (fetchMavenArtifact {
+        url = "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar";
+        groupId = "org.hamcrest";
+        artifactId = "hamcrest-core";
+        version = "1.3";
+        hash = "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=";
+      })
+    ];
+    hbase = [
+      (fetchMavenArtifact {
+        groupId = "org.hbase";
+        artifactId = "asynchbase";
+        version = "1.8.2";
+        hash = "sha256-D7mKprHMW23dE0SzdNsagv3Hp2G5HUN7sKfs1nVzQF4=";
+      })
+    ];
+    jackson = [
+      (fetchMavenArtifact {
+        groupId = "com.fasterxml.jackson.core";
+        artifactId = "jackson-annotations";
+        version = "2.14.1";
+        hash = "sha256-0lW0uGP/jscUqPlvpVw0Yh1D27grgtP1dHZJakwJ4ec=";
+      })
+      (fetchMavenArtifact {
+        groupId = "com.fasterxml.jackson.core";
+        artifactId = "jackson-core";
+        version = "2.14.1";
+        hash = "sha256-ARQYfilrNMkxwb+eWoQVK2K/q30YL1Yj85gtwto15SY=";
+      })
+      (fetchMavenArtifact {
+        groupId = "com.fasterxml.jackson.core";
+        artifactId = "jackson-databind";
+        version = "2.14.1";
+        hash = "sha256-QjoMgG3ks/petKKGmDBeOjd3xzHhvPobLzo3YMe253M=";
+      })
+    ];
+    javacc = [
+      (fetchMavenArtifact {
+        groupId = "net.java.dev.javacc";
+        artifactId = "javacc";
+        version = "6.1.2";
+        hash = "sha256-7Qxclglhz+tDE4LPAVKCewEVZ0fbN5LRv5PoHjLCBKs=";
+      })
+    ];
+    javassist = [
+      (fetchMavenArtifact {
+        groupId = "org.javassist";
+        artifactId = "javassist";
+        version = "3.21.0-GA";
+        hash = "sha256-eqWeAx+UGYSvB9rMbKhebcm9OkhemqJJTLwDTvoSJdA=";
+      })
+    ];
+    jexl = [
+      (fetchMavenArtifact {
+        groupId = "commons-logging";
+        artifactId = "commons-logging";
+        version = "1.2";
+        hash = "sha256-2t3qHqC+D1aXirMAa4rJKDSv7vvZt+TmMW/KV98PpjY=";
+      })
+      (fetchMavenArtifact {
+        groupId = "org.apache.commons";
+        artifactId = "commons-jexl";
+        version = "2.1.1";
+        hash = "sha256-A8mp+uXaeM5SwL8kRnzDc1W34jGW3/SDniwP8BigEwY=";
+      })
+    ];
+    jgrapht = [
+      (fetchMavenArtifact {
+        groupId = "org.jgrapht";
+        artifactId = "jgrapht-core";
+        version = "0.9.1";
+        hash = "sha256-5u8cEVaJ7aCBQrhtUkYg2mQ7bp8BNAUletB/QtxcaXg=";
+      })
+    ];
+    junit = [
+      (fetchMavenArtifact {
+        groupId = "junit";
+        artifactId = "junit";
+        version = "4.11";
+        hash = "sha256-kKjhYD7spI5+h586+8lWBxUyKYXzmidPb2BwtD+dBv4=";
+      })
+    ];
+    kryo = [
+      (fetchMavenArtifact {
+        groupId = "org.ow2.asm";
+        artifactId = "asm";
+        version = "4.0";
+        hash = "sha256-+y3ekCCke7AkxD2d4KlOc6vveTvwjwE1TMl8stLiqVc=";
+      })
+      (fetchMavenArtifact {
+        groupId = "com.esotericsoftware.kryo";
+        artifactId = "kryo";
+        version = "2.21.1";
+        hash = "sha256-adEG73euU3sZBp9WUQNLZBN6Y3UAZXTAxjsuvDuy7q4=";
+      })
+      (fetchMavenArtifact {
+        groupId = "com.esotericsoftware.minlog";
+        artifactId = "minlog";
+        version = "1.2";
+        hash = "sha256-pnjLGqj10D2QHJksdXQYQdmKm8PVXa0C6E1lMVxOYPI=";
+      })
+      (fetchMavenArtifact {
+        groupId = "com.esotericsoftware.reflectasm";
+        artifactId = "reflectasm";
+        version = "1.07";
+        classifier = "shaded";
+        hash = "sha256-CKcOrbSydO2u/BGUwfdXBiGlGwqaoDaqFdzbe5J+fHY=";
+      })
+    ];
+    logback = [
+      (fetchMavenArtifact {
+        groupId = "ch.qos.logback";
+        artifactId = "logback-classic";
+        version = "1.3.4";
+        hash = "sha256-uGal2myLeOFVxn/M11YoYNC1/Hdric2WjC8/Ljf8OgI=";
+      })
+      (fetchMavenArtifact {
+        groupId = "ch.qos.logback";
+        artifactId = "logback-core";
+        version = "1.3.4";
+        hash = "sha256-R0CgmLtEOnRFVN093wYsaCKHspQGZ1TikuE0bIv1zt0=";
+      })
+    ];
+    mockito = [
+      (fetchMavenArtifact {
+        groupId = "org.mockito";
+        artifactId = "mockito-core";
+        version = "1.9.5";
+        hash = "sha256-+XSDuglEufoTOqKWOHZN2+rbUew9vAIHTFj6LK7NB/o=";
+      })
+    ];
+    netty = [
+      (fetchMavenArtifact {
+        groupId = "io.netty";
+        artifactId = "netty";
+        version = "3.10.6.Final";
+        hash = "sha256-h2ilD749k6iNjmAA6l1o4w9Q3JFbN2TDxYcPcMT7O0k=";
+      })
+    ];
+    objenesis = [
+      (fetchMavenArtifact {
+        groupId = "org.objenesis";
+        artifactId = "objenesis";
+        version = "1.3";
+        hash = "sha256-3U7z0wkQY6T+xXjLsrvmwfkhwACRuimT3Nmv0l/5REo=";
+      })
+    ];
+    powermock = [
+      (fetchMavenArtifact {
+        groupId = "org.powermock";
+        artifactId = "powermock-mockito-release-full";
+        version = "1.5.4";
+        classifier = "full";
+        hash = "sha256-GWXaFG/ZtPlc7uKrghQHNAPzEu2k5VGYCYTXIlbylb4=";
+      })
+    ];
+    protobuf = [
+      (fetchMavenArtifact {
+        groupId = "com.google.protobuf";
+        artifactId = "protobuf-java";
+        version = "2.5.0";
+        hash = "sha256-4MHGRXXABWAXJefGoCzr+eEoXoiPdWsqHXP/qNclzHQ=";
+      })
+    ];
+    slf4j = [
+      (fetchMavenArtifact {
+        groupId = "org.slf4j";
+        artifactId = "log4j-over-slf4j";
+        version = "2.0.6";
+        hash = "sha256-QHMpiJioL0KeHr2iNaMUc7G0jDR94ShnNbtnkiUm6uQ=";
+      })
+      (fetchMavenArtifact {
+        groupId = "org.slf4j";
+        artifactId = "slf4j-api";
+        version = "2.0.6";
+        hash = "sha256-LyqS1BCyaBOdfWO3XtJeIZlc/kEAwZvyNXfP28gHe9o=";
+      })
+    ];
+    suasync = [
+      (fetchMavenArtifact {
+        groupId = "com.stumbleupon";
+        artifactId = "async";
+        version = "1.4.0";
+        hash = "sha256-FJ1HH68JOkjNtkShjLTJ8K4NO/A/qu88ap7J7SEndrM=";
+      })
+    ];
+    validation-api = [
+      (fetchMavenArtifact {
+        groupId = "javax.validation";
+        artifactId = "validation-api";
+        version = "1.0.0.GA";
+        hash = "sha256-5FnzE+vG2ySD+M6q05rwcIY2G0dPqS5A9ELo3l2Yldw=";
+      })
+      (fetchMavenArtifact {
+        groupId = "javax.validation";
+        artifactId = "validation-api";
+        version = "1.0.0.GA";
+        classifier = "sources";
+        hash = "sha256-o5TVKpt/4rsU8HGNKzyDCP/o836RGVYBI5jVXJ+fm1Q=";
+      })
+    ];
+    zookeeper = [
+      (fetchMavenArtifact {
+        groupId = "org.apache.zookeeper";
+        artifactId = "zookeeper";
+        version = "3.4.6";
+        hash = "sha256-ijdaHvmMvA4fbp39DZbZFLdNN60AtL+Bvrd/qPNNM64=";
+      })
+    ];
+  };
+in stdenv.mkDerivation rec {
   pname = "opentsdb";
-  version = "2.4.0";
+  version = "2.4.1";
 
-  src = fetchurl {
-    url = "https://github.com/OpenTSDB/opentsdb/releases/download/v${version}/${pname}-${version}.tar.gz";
-    sha256 = "0b0hilqmgz6n1q7irp17h48v8fjpxhjapgw1py8kyav1d51s7mm2";
+  src = fetchFromGitHub {
+    owner = "OpenTSDB";
+    repo = "opentsdb";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-899m1H0UCLsI/bnSrNFnnny4MxSw3XBzf7rgDuEajDs=";
   };
 
   patches = [
     (fetchpatch {
-      name = "CVE-2020-35476.patch";
-      url = "https://github.com/OpenTSDB/opentsdb/commit/b89fded4ee326dc064b9d7e471e9f29f7d1dede9.patch";
-      sha256 = "1vb9m0a4fsjqcjagiypvkngzgsw4dil8jrlhn5xbz7rwx8x96wvb";
+      name = "bump-deps.0.patch";
+      url = "https://github.com/OpenTSDB/opentsdb/commit/2f4bbfba2f9a32f9295123e8b90adba022c11ece.patch";
+      hash = "sha256-4LpR4O8mNiJZQ7PUmAzFdkZAaF8i9/ZM5NhQ+8AJgSw=";
     })
+    (fetchpatch {
+      name = "bump-deps.1.patch";
+      url = "https://github.com/OpenTSDB/opentsdb/commit/8c6a86ddbc367c7e4e2877973b70f77c105c6158.patch";
+      hash = "sha256-LZHqDOhwO/Gfgu870hJ6/uxnmigv7RP8OFe2a7Ug5SM=";
+    })
+    (fetchpatch {
+      name = "bump-deps.2.patch";
+      url = "https://github.com/OpenTSDB/opentsdb/commit/9b62442ba5c006376f57ef250fb7debe1047c3bf.patch";
+      hash = "sha256-2VjI9EkirKj4h7xhUtWdnKxJG0Noz3Hk5njm3pYEU1g=";
+    })
+    (fetchpatch {
+      name = "CVE-2023-25826.prerequisite.0.patch";
+      url = "https://github.com/OpenTSDB/opentsdb/commit/a82a4f85f0fc1af554a104f28cc495451b26b1f6.patch";
+      hash = "sha256-GgoRZUGdKthK+ZwMpgSQQ4V2oHyqi8SwWGZT571gltQ=";
+    })
+    (fetchpatch {
+      name = "CVE-2023-25826.prerequisite.1.patch";
+      url = "https://github.com/OpenTSDB/opentsdb/commit/22b27ea30a859a6dbdcd65fcdf61190d46e1b677.patch";
+      hash = "sha256-pXo6U7d4iy2squAiFvV2iDAQcNDdrl0pIOQEXfkJ3a8=";
+    })
+    (fetchpatch {
+      name = "CVE-2023-25826.patch";
+      url = "https://github.com/OpenTSDB/opentsdb/commit/07c4641471c6f5c2ab5aab615969e97211eb50d9.patch";
+      hash = "sha256-88gIOhAhLCQC/UesIdYtjf0UgKNfnO0W2icyoMmiC3U=";
+    })
+    (fetchpatch {
+      name = "CVE-2023-25827.patch";
+      url = "https://github.com/OpenTSDB/opentsdb/commit/fa88d3e4b5369f9fb73da384fab0b23e246309ba.patch";
+      hash = "sha256-FJHUiEmGhBIHoyOwNZtUWA36ENbrqDkUT8HfccmMSe8=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    autoconf
+    automake
+    makeWrapper
   ];
 
-  nativeBuildInputs = [ makeWrapper autoconf automake ];
-  buildInputs = [ curl jdk nettools python2 git ];
+  buildInputs = [ curl jdk nettools python3 git ];
 
   preConfigure = ''
+    chmod +x build-aux/fetchdep.sh.in
     patchShebangs ./build-aux/
     ./bootstrap
   '';
 
+  preBuild = lib.concatStrings (lib.mapAttrsToList (dir: lib.concatMapStrings (artifact: ''
+    cp ${artifact}/share/java/* third_party/${dir}
+  '')) artifacts);
+
   postInstall = ''
     wrapProgram $out/bin/tsdb \
       --set JAVA_HOME "${jre}" \
@@ -40,6 +344,10 @@ stdenv.mkDerivation rec {
     homepage = "http://opentsdb.net";
     license = licenses.lgpl21Plus;
     platforms = lib.platforms.linux;
+    sourceProvenance = with sourceTypes; [
+      fromSource
+      binaryBytecode  # maven dependencies
+    ];
     maintainers = [ ];
   };
 }