Subject: [PATCH 47/47] gnu: Add go-github-com-prometheus-prometheus.

From: Leo Nikkilä <[email-masked]>
Date: Fri, 25 Mar 2022 15:32:11 +0200

* gnu/packages/patches/go-github-com-prometheus-prometheus-remove-deps.patch:
New patch, reduce go-github-com-prometheus-prometheus dependency tree.
* gnu/packages/monitoring.scm (go-github-com-prometheus-prometheus): New
variable.
---
 gnu/packages/monitoring.scm                   | 83 +++++++++++++++++++
 ...om-prometheus-prometheus-remove-deps.patch | 33 ++++++++
 2 files changed, 116 insertions(+)
 create mode 100644 gnu/packages/patches/go-github-com-prometheus-prometheus-remove-deps.patch

diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 7935c92815..968eb6b1ee 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2021, 2022 Marius Bakke <[email-masked]>
 ;;; Copyright © 2021 Stefan Reichör <[email-masked]>
 ;;; Copyright © 2021 Raphaël Mélotte <[email-masked]>
+;;; Copyright © 2022 Leo Nikkilä <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,6 +49,7 @@ (define-module (gnu packages monitoring)
   #:use-module (gnu packages django)
   #:use-module (gnu packages gd)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages image)
   #:use-module (gnu packages mail)
   #:use-module (gnu packages ncurses)
@@ -61,6 +63,7 @@ (define-module (gnu packages monitoring)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages rrdtool)
+  #:use-module (gnu packages syncthing)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web))
@@ -499,6 +502,86 @@ (define-public go-github-com-prometheus-node-exporter
     (home-page "https://github.com/prometheus/node_exporter")
     (license license:asl2.0)))
 
+(define-public go-github-com-prometheus-prometheus
+  (package
+    (name "go-github-com-prometheus-prometheus")
+    (version "2.33.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/prometheus/prometheus")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0arz7ksrfavzg3vm5rlf6y3gbj8l59cg4x4zw6gmmd1dkflm2jx3"))
+              (patches (search-patches
+                        "go-github-com-prometheus-prometheus-remove-deps.patch"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/prometheus/prometheus/cmd/prometheus"
+       #:unpack-path "github.com/prometheus/prometheus"
+       #:install-source? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda* (#:key import-path #:allow-other-keys)
+             ;; `k8s.io/klog' is replaced by `simonpasquier/klog-gokit'
+             (substitute* (find-files (string-append "src/" import-path)
+                                      "\\.go")
+               (("k8s.io/klog/v2") "github.com/simonpasquier/klog-gokit/v3")
+               (("k8s.io/klog") "github.com/simonpasquier/klog-gokit"))
+             #t)))))
+    (native-inputs (list go-github-com-alecthomas-template
+                         go-github-com-alecthomas-units
+                         go-github-com-aws-aws-sdk-go
+                         go-github-com-cespare-xxhash
+                         go-github-com-dennwc-varint
+                         go-github-com-edsrzf-mmap-go
+                         go-github-com-fsnotify-fsnotify
+                         go-github-com-go-kit-log
+                         go-github-com-go-logfmt-logfmt
+                         go-github-com-go-openapi-strfmt
+                         go-github-com-gogo-protobuf
+                         go-github-com-golang-snappy
+                         go-github-com-json-iterator-go
+                         go-github-com-mwitkow-go-conntrack
+                         go-github-com-oklog-run
+                         go-github-com-oklog-ulid
+                         go-github-com-opentracing-contrib-go-stdlib
+                         go-github-com-opentracing-opentracing-go
+                         go-github-com-pkg-errors
+                         go-github-com-prometheus-alertmanager-api
+                         go-github-com-prometheus-client-golang
+                         go-github-com-prometheus-client-model
+                         go-github-com-prometheus-common
+                         go-github-com-prometheus-exporter-toolkit
+                         go-github-com-shurcool-httpfs
+                         go-github-com-shurcool-vfsgen
+                         go-github-com-simonpasquier-klog-gokit
+                         go-github-com-simonpasquier-klog-gokit-v3
+                         go-github-com-stretchr-testify
+                         go-github-com-uber-jaeger-client-go
+                         go-github-com-uber-jaeger-lib
+                         go-go-uber-org-atomic
+                         go-go-uber-org-goleak
+                         go-golang-org-x-net
+                         go-golang-org-x-sync
+                         go-golang-org-x-sys
+                         go-golang-org-x-time
+                         go-golang-org-x-tools
+                         go-gopkg-in-alecthomas-kingpin.v2
+                         go-gopkg-in-yaml-v2
+                         go-gopkg-in-yaml-v3))
+    (synopsis "Monitoring system and time series database")
+    (description
+     "Prometheus is a systems and service monitoring system.  It
+collects metrics from configured targets at given intervals, evaluates
+rule expressions, displays the results, and can trigger alerts when
+specified conditions are observed.")
+    (home-page "https://github.com/prometheus/prometheus")
+    (license license:asl2.0)))
+
 (define-public temper-exporter
   (let ((commit "a87bbab19c05609d62d9e4c7941178700c1ef84d")
         (revision "0"))
diff --git a/gnu/packages/patches/go-github-com-prometheus-prometheus-remove-deps.patch b/gnu/packages/patches/go-github-com-prometheus-prometheus-remove-deps.patch
new file mode 100644
index 0000000000..4d4626d2d1
--- /dev/null
+++ b/gnu/packages/patches/go-github-com-prometheus-prometheus-remove-deps.patch
@@ -0,0 +1,33 @@
+This patch reduces the Prometheus dependency tree, most of which
+consists of unpackaged Go libraries, by removing certain discovery
+plugins.
+
+diff --git a/discovery/install/install.go b/discovery/install/install.go
+index e16b348f6..a3944cf9f 100644
+--- a/discovery/install/install.go
++++ b/discovery/install/install.go
+@@ -17,24 +17,9 @@ package install
+ 
+ import (
+-	_ "github.com/prometheus/prometheus/discovery/aws"          // register aws
+-	_ "github.com/prometheus/prometheus/discovery/azure"        // register azure
+-	_ "github.com/prometheus/prometheus/discovery/consul"       // register consul
+-	_ "github.com/prometheus/prometheus/discovery/digitalocean" // register digitalocean
+-	_ "github.com/prometheus/prometheus/discovery/dns"          // register dns
+ 	_ "github.com/prometheus/prometheus/discovery/eureka"       // register eureka
+ 	_ "github.com/prometheus/prometheus/discovery/file"         // register file
+-	_ "github.com/prometheus/prometheus/discovery/gce"          // register gce
+-	_ "github.com/prometheus/prometheus/discovery/hetzner"      // register hetzner
+ 	_ "github.com/prometheus/prometheus/discovery/http"         // register http
+-	_ "github.com/prometheus/prometheus/discovery/kubernetes"   // register kubernetes
+-	_ "github.com/prometheus/prometheus/discovery/linode"       // register linode
+ 	_ "github.com/prometheus/prometheus/discovery/marathon"     // register marathon
+-	_ "github.com/prometheus/prometheus/discovery/moby"         // register moby
+-	_ "github.com/prometheus/prometheus/discovery/openstack"    // register openstack
+ 	_ "github.com/prometheus/prometheus/discovery/puppetdb"     // register puppetdb
+-	_ "github.com/prometheus/prometheus/discovery/scaleway"     // register scaleway
+ 	_ "github.com/prometheus/prometheus/discovery/triton"       // register triton
+-	_ "github.com/prometheus/prometheus/discovery/uyuni"        // register uyuni
+-	_ "github.com/prometheus/prometheus/discovery/xds"          // register xds
+-	_ "github.com/prometheus/prometheus/discovery/zookeeper"    // register zookeeper
+ )
-- 
2.34.0