Hello,
I have recently uncovered a "feature" that works little bit than described in
the manual,
During definition of a new variable, package, there is an option called
supported-systems which defaults to %default-systems.
However, if the package is known to work on certain architecture the right
thing is to list the supported architectures, right?
If I select package which is not supported by my current architecture and build
it I get notification like this one:
`warning: package [email protected] does not support x86_64-linux`
So suppose I have the same package for different architectures, each has it's
own unique tarball.
I've defined one package and inherited from it, changing the source for the
other and selecting the correct supported-systems.
Unfortunately, this approach fails as Guix does not select the right package I
want to use on the current system.
So should the approach be to define just one variable for the package and then
conditionally select the right tarball/git for the package?
Also is this considered bug or a feature?
FIY I know the right way would be to build Grafana from source in this case
which would solve the issue I just wanted to know in general more about the use
case of the supported-systems option.
----
Petr
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021-2022 Petr Hodina <[email protected]>
(define-module (nongnu packages grafana)
#:use-module (guix packages)
#:use-module (gnu packages base)
#:use-module (gnu packages elf)
#:use-module (gnu packages gcc)
#:use-module (gnu packages glib)
#:use-module (guix download)
#:use-module (nonguix build-system binary)
#:use-module ((guix licenses)
#:prefix license:))
(define-public grafana-bin
(package
(name "grafana")
(version "9.3.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://dl.grafana.com/oss/release/grafana-" version
".linux-amd64.tar.gz"))
(sha256
(base32
"177d396sg6pwa7vwsdwqy6fg17kq47n619s4745z62s6inq3i0vr"))))
(build-system binary-build-system)
(arguments
'(#:strip-binaries? #f ;TODO: For some reason it fails validate-runpath
;; phase if enabled
#:install-plan `(("bin/grafana-cli" "bin/grafana-cli")
("bin/grafana-server" "bin/grafana-server")
("conf/defaults.ini" "etc/grafana/grafana.ini")
("conf" "share/grafana/")
("public" "share/grafana/")
("scripts" "share/grafana/")
("plugins-bundled" "share/grafana/"))
#:patchelf-plan (list (list "bin/grafana-cli"
'("glibc" "gcc:lib"))
(list "bin/grafana-server"
'("glibc" "gcc:lib")))
#:phases
;; TODO: This should be moved to the service
(modify-phases %standard-phases
(add-after 'unpack 'fix-data-dir-path
(lambda _
(substitute* "conf/defaults.ini"
(("data = data")
"data = /var/lib/grafana")
(("logs = data/log")
"data = /var/logs/grafana")
(("plugins = data/plugins")
"data = /var/lib/grafana")))))))
(supported-systems '("x86_64-linux"))
(native-inputs (list patchelf))
(inputs `(("gcc:lib" ,gcc "lib")
("glibc" ,glibc)))
(synopsis "Platform for monitoring and observability")
(description
"Grafana allows you to query, visualize, alert on
and understand your metrics no matter where they are stored. Create, explore,
and share dashboards with your team and foster a data-driven culture:
@enumerate
@ite Visualizations: Fast and flexible client side graphs with a multitude
of options. Panel plugins offer many different ways to visualize metrics
and logs
@item Dynamic Dashboards: Create dynamic & reusable dashboards with template
variables that appear as dropdowns at the top of the dashboard.
@item Explore Metrics: Explore your data through ad-hoc queries and dynamic
drilldown. Split view and compare different time ranges, queries and data
sources side by side.
@item Explore Logs: Experience the magic of switching from metrics to logs with
preserved label filters. Quickly search through all your logs or streaming them
live.
@item Alerting: Visually define alert rules for your most important metrics.
Grafana will continuously evaluate and send notifications to systems like Slack,
PagerDuty, VictorOps, OpsGenie.
@item Mixed Data Sources: Mix different data sources in the same graph! You can
specify a data source on a per-query basis. This works for even custom
datasources.
@end enumerate")
(home-page "https://grafana.com/")
(license license:agpl3)))
(define-public grafana-bin-aarch64
(package
(inherit grafana-bin)
(name "grafana")
(version "9.3.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://dl.grafana.com/oss/release/grafana-" version
".linux-arm64.tar.gz"))
(sha256
(base32
"1ps8aa279fh8hcngda794f69w6hm78pw9pgvwyxlnx229581zrkv"))))
(supported-systems '("aarch64-linux"))))
(define-public grafana-bin-armhf
(package
(inherit grafana-bin)
(name "grafana")
(version "9.3.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://dl.grafana.com/oss/release/grafana-" version
".linux-armv7.tar.gz"))
(sha256
(base32
"0avndch41m5k7gpxzdk8k1gzz3nyscmw3va4mk5813vbfmynv2bn"))))
(supported-systems '("armhf-linux"))))