summaryrefslogtreecommitdiff
path: root/gnu/packages/linux.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r--gnu/packages/linux.scm397
1 files changed, 239 insertions, 158 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 36cef84b14..ba90175513 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -34,7 +34,7 @@
;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com>
-;;; Copyright © 2019-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019-2025 Maxim Cournoyer <maxim@guixotic.coop>
;;; Copyright © 2019 Stefan Stefanović <stefanx2ovic@gmail.com>
;;; Copyright © 2019-2022 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net>
@@ -83,6 +83,8 @@
;;; Copyright © 2024 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2024, 2025 Ashish SHUKLA <ashish.is@lostca.se>
;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com>
+;;; Copyright © 2025 Mathieu Laparie <mlaparie@disr.it>
+;;; Copyright © 2025 John Kehayias <john.kehayias@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -242,6 +244,7 @@
(linux linux-libre)
source
defconfig
+ modconfig
(configs "")
extra-version)
"Make a customized Linux package NAME derived from the LINUX package.
@@ -255,6 +258,10 @@ A DEFCONFIG file to be used can be given as an origin, as a file-like object
available in the Linux sources. If DEFCONFIG is not given, then a defconfig
file will be saved from the LINUX package configuration.
+MODCONFIG is an origin or file-like object used for make localmodconfig to
+disable unlisted modules. For instance, this can come from using modprobed-db
+periodically on a running machine to find all loaded modules.
+
Additional CONFIGS will be used to modify the given or saved defconfig, which
will finally be used to build Linux.
@@ -323,7 +330,12 @@ of 'uname -r' behind the Linux version numbers."
(chmod guix_defconfig #o644)
(modify-defconfig guix_defconfig '#$configs)
(invoke "make" "guix_defconfig")
- (verify-config ".config" guix_defconfig))))))))))
+ (verify-config ".config" guix_defconfig)
+ ;; Minimize module building if provided e.g. a modprobed-db
+ ;; database.
+ (if #$modconfig
+ (invoke "make" (string-append "LSMOD=" #$modconfig)
+ "localmodconfig")))))))))))
(define (make-defconfig uri sha256-as-base32)
(origin (method url-fetch)
@@ -514,7 +526,22 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The current "stable" kernels. That is, the most recently released major
;; versions that are still supported upstream.
-(define-public linux-libre-6.15-version "6.15.10")
+(define-public linux-libre-6.16-version "6.16.4")
+(define-public linux-libre-6.16-gnu-revision "gnu")
+(define deblob-scripts-6.16
+ (linux-libre-deblob-scripts
+ linux-libre-6.16-version
+ linux-libre-6.16-gnu-revision
+ (base32 "1s44yaxib45834mjmvqkl70s2lazbzvpxhp4z7qwxkrkpw94mdxx")
+ (base32 "1i4kba2wpkc7jmj7b2qjkrgqsl0g0s1h7j9pfvc7zqyyn9v3kkqr")))
+(define-public linux-libre-6.16-pristine-source
+ (let ((version linux-libre-6.16-version)
+ (hash (base32 "08mnd8qir2vxjmgblhnqfrfbv2zlig68f4r5askk7d8h3b3y79fn")))
+ (make-linux-libre-source version
+ (%upstream-linux-source version hash)
+ deblob-scripts-6.16)))
+
+(define-public linux-libre-6.15-version "6.15.11")
(define-public linux-libre-6.15-gnu-revision "gnu")
(define deblob-scripts-6.15
(linux-libre-deblob-scripts
@@ -524,7 +551,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0301x3n5qbg8xm48pxq1dhrq0vkr61bqdcyaz0mbckrg20kw6m67")))
(define-public linux-libre-6.15-pristine-source
(let ((version linux-libre-6.15-version)
- (hash (base32 "01pxk3cnil1wbysp4s6ybh5djskxzf9llmk1qy7zfr2l4mwnbkd4")))
+ (hash (base32 "14sxwrvw9p4ybizb8ky1rgahc62q0aw5qkmzqp3cpnavqfgldaw9")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-6.15)))
@@ -533,7 +560,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; Here are the support timelines:
;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-6.12-version "6.12.42")
+(define-public linux-libre-6.12-version "6.12.44")
(define-public linux-libre-6.12-gnu-revision "gnu")
(define deblob-scripts-6.12
(linux-libre-deblob-scripts
@@ -543,12 +570,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1yl447396g454116j8v17wsqg5i0gyb2rrxvaygw6xdkbwrrj28j")))
(define-public linux-libre-6.12-pristine-source
(let ((version linux-libre-6.12-version)
- (hash (base32 "1yy17c06sn6l0skz8n1kxqhzldgwxxd0xhs11fd3086d56554128")))
+ (hash (base32 "1bmx2vpxy6nkxnmm2a3zmv9smaajfhvslj6id54j4yq2sc722l5n")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-6.12)))
-(define-public linux-libre-6.6-version "6.6.102")
+(define-public linux-libre-6.6-version "6.6.103")
(define-public linux-libre-6.6-gnu-revision "gnu")
(define deblob-scripts-6.6
(linux-libre-deblob-scripts
@@ -558,12 +585,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "11i7pvm5n31rvp05msbm3ciclr84cz9c94f5r5aa6mmzhslwpbxk")))
(define-public linux-libre-6.6-pristine-source
(let ((version linux-libre-6.6-version)
- (hash (base32 "0p6yjifwyrqlppn40isgxb0b5vqmljggmnp7w75vlc2c6fvzxll0")))
+ (hash (base32 "13mi8blsw0gps586qbvh7ga5r9pv9jld4fkbp9vaaaz6qcwdv26j")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-6.6)))
-(define-public linux-libre-6.1-version "6.1.148")
+(define-public linux-libre-6.1-version "6.1.149")
(define-public linux-libre-6.1-gnu-revision "gnu")
(define deblob-scripts-6.1
(linux-libre-deblob-scripts
@@ -573,12 +600,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0f3jgbfd2j7sz7h1hb30s1r9147g1cbb3ia09k9834fvbiz1ihaa")))
(define-public linux-libre-6.1-pristine-source
(let ((version linux-libre-6.1-version)
- (hash (base32 "18c024bqqc3srzv2gva55p95yghjc6x3p3f54v3hziki4wx3v86r")))
+ (hash (base32 "0fdyfxw80zhkwh29m5v7xfmbyks5wi6isdq6bv96cn4ssfw0dsf4")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-6.1)))
-(define-public linux-libre-5.15-version "5.15.189")
+(define-public linux-libre-5.15-version "5.15.190")
(define-public linux-libre-5.15-gnu-revision "gnu")
(define deblob-scripts-5.15
(linux-libre-deblob-scripts
@@ -588,12 +615,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0rg65s6kd9gxxa3wl6180pr39rb6zbcicwjik4kygs2ns0247y56")))
(define-public linux-libre-5.15-pristine-source
(let ((version linux-libre-5.15-version)
- (hash (base32 "1hshd26ahn6dbw6jnqi0v5afpk672w7p09mk7iri93i7hxdh5l73")))
+ (hash (base32 "0146lslj0my0mhcx7wfp984f270zr8iiyq9899v6f7cflkqi9f32")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.15)))
-(define-public linux-libre-5.10-version "5.10.240")
+(define-public linux-libre-5.10-version "5.10.241")
(define-public linux-libre-5.10-gnu-revision "gnu1")
(define deblob-scripts-5.10
(linux-libre-deblob-scripts
@@ -603,12 +630,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0r1whrfhhhjyvppiidhihcvyzcab6dva6g9a4div8jkxm62s2cq3")))
(define-public linux-libre-5.10-pristine-source
(let ((version linux-libre-5.10-version)
- (hash (base32 "04sdcf4aqsqchii38anzmk9f9x65wv8q1x3m9dandmi6fabw724d")))
+ (hash (base32 "1mnqjvb1hmr7p035c66k3z0idirhsj9j5zwgb92gi0ac0s1fkh88")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.10)))
-(define-public linux-libre-5.4-version "5.4.296")
+(define-public linux-libre-5.4-version "5.4.297")
(define-public linux-libre-5.4-gnu-revision "gnu1")
(define deblob-scripts-5.4
(linux-libre-deblob-scripts
@@ -618,7 +645,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0l7pwhgw9laxfypcpqlz411x3hybcw2269abh3lpcw96bgv5m1k2")))
(define-public linux-libre-5.4-pristine-source
(let ((version linux-libre-5.4-version)
- (hash (base32 "0fm73yqzbzclh2achcj8arpg428d412k2wgmlfmyy6xzb1762qrx")))
+ (hash (base32 "0hd8x32xgvj4qnc6cls0q21zfgvxxfz7xhbwgl48hxfggbmgq37i")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.4)))
@@ -651,6 +678,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(patches (append (origin-patches source)
patches))))
+(define-public linux-libre-6.16-source
+ (source-with-patches linux-libre-6.16-pristine-source
+ (list %boot-logo-patch
+ %linux-libre-arm-export-__sync_icache_dcache-patch)))
+
(define-public linux-libre-6.15-source
(source-with-patches linux-libre-6.15-pristine-source
(list %boot-logo-patch
@@ -777,6 +809,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(description "Headers of the Linux-Libre kernel.")
(license license:gpl2)))
+(define-public linux-libre-headers-6.16
+ (make-linux-libre-headers* linux-libre-6.16-version
+ linux-libre-6.16-gnu-revision
+ linux-libre-6.16-source))
+
(define-public linux-libre-headers-6.15
(make-linux-libre-headers* linux-libre-6.15-version
linux-libre-6.15-gnu-revision
@@ -822,7 +859,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; linux-libre-headers-latest points to the latest headers package
;; and should be used as a dependency for packages that depend on
;; the headers.
-(define-public linux-libre-headers-latest linux-libre-headers-6.15)
+(define-public linux-libre-headers-latest linux-libre-headers-6.16)
;;;
@@ -1149,6 +1186,14 @@ Linux kernel. It has been modified to remove all non-free binary blobs.")
;;; Generic kernel packages.
;;;
+(define-public linux-libre-6.16
+ (make-linux-libre* linux-libre-6.16-version
+ linux-libre-6.16-gnu-revision
+ linux-libre-6.16-source
+ '("x86_64-linux" "i686-linux" "aarch64-linux"
+ "powerpc64le-linux" "riscv64-linux")
+ #:configuration-file kernel-config))
+
(define-public linux-libre-6.15
(make-linux-libre* linux-libre-6.15-version
linux-libre-6.15-gnu-revision
@@ -2348,7 +2393,7 @@ and the notification, WiFi, and Bluetooth LED.")
(define-public tuxedo-keyboard
(package
(name "tuxedo-keyboard")
- (version "4.14.2")
+ (version "4.15.4")
(source
(origin
(method git-fetch)
@@ -2357,21 +2402,23 @@ and the notification, WiFi, and Bluetooth LED.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0b7qivyd8r58cq84q11b2z919px5p9k5zbinm6ahj07w0lsq2j7b"))))
+ (base32 "0mimgcbp57gp3smd439g8040sl80qqnfzmh2vhs2qv1kwyxs75sq"))))
(build-system linux-module-build-system)
(arguments
(list #:tests? #f)) ; no test suite
+ ;; This package fails to build on aarch64, and the manufacturer only sells
+ ;; machines based on Intel-compatible processors. For more information, see
+ ;; <https://codeberg.org/guix/guix/pulls/1795>.
+ (supported-systems '("i686-linux" "x86_64-linux"))
(home-page "https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers")
(synopsis "Linux kernel modules to control keyboard on most Tuxedo computers")
(description
"This package provides the @code{tuxedo_keyboard}, @code{tuxedo_io},
@code{clevo_wmi} @acronym{WMI, Windows Management Engine} and the
@code{clevo_acpi} @acronym{ACPI, Advanced Configuration and Power Interface}
-kernel modules to control the keyboard on most Tuxedo computers. Only white
-backlight only models are currently not supported. The @code{tuxedo_io}
-module is also needed for the @code{tuxedo-control-center} (short tcc)
-package.")
- (license license:gpl3+)))
+kernel modules to control the keyboard on most Tuxedo computers. The @code{tuxedo_io}
+module is also needed for the @code{tuxedo-control-center} (short tcc) package.")
+ (license license:gpl2+)))
(define-public evdi
(package
@@ -3063,7 +3110,7 @@ deviation, and minimum and maximum values. It can show a nice histogram too.")
;; FIXME: For now we cannot reliably run tests on GNU/Hurd:
;; <https://bugs.gnu.org/47791>.
#:tests? (and (not (%current-target-system))
- (not (string-suffix? "-gnu" (%current-system))))
+ (not (system-hurd?)))
#:phases
#~(modify-phases %standard-phases
@@ -3378,24 +3425,20 @@ slabtop, tload, top, vmstat, w, watch and sysctl.")
(define-public usbutils
(package
(name "usbutils")
- (version "017")
+ (version "018")
(source
(origin
- (method url-fetch)
- (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
- "usbutils-" version ".tar.xz"))
- (sha256
- (base32 "0nz008kshcajc9asxr4j5dh4wgq72z52lws4ga6y60wirzymz8m6"))))
- (build-system gnu-build-system)
+ (method url-fetch)
+ (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
+ "usbutils-" version ".tar.xz"))
+ (sha256
+ (base32 "14xd7j9fl3pm0z4dhqj3mf9paqk431kq4vi602f5hiw5nmcqpxl3"))))
+ (build-system meson-build-system)
(outputs (list "out" "python"))
(arguments
(list
#:phases
#~(modify-phases %standard-phases
- (add-before 'bootstrap 'patch-bootstrap-scripts
- (lambda _
- (substitute* "usbhid-dump/bootstrap"
- (("/bin/sh") (which "sh")))))
(add-after 'install 'separate-python-output
;; Separating one Python script shaves more than 106 MiB from :out.
(lambda _
@@ -3404,17 +3447,21 @@ slabtop, tload, top, vmstat, w, watch and sysctl.")
(new (string-append #$output:python "/" file)))
(mkdir-p (dirname new))
(rename-file old new)))
- (list "bin/lsusb.py")))))))
- (inputs
- (list eudev libusb python))
- (native-inputs
- (list autoconf automake libtool pkg-config))
+ (list "bin/lsusb.py"))))
+ (add-after 'install 'install-usbreset
+ (lambda _
+ (install-file "usbreset"
+ (string-append #$output "/bin")))))))
+ (native-inputs (list pkg-config))
+ (inputs (list eudev libusb python))
(home-page "http://www.linux-usb.org/")
(synopsis
"Tools for working with USB devices")
(description
- "Collection of tools to query what type of USB devices are connected to the
-system, including @command{lsusb}.")
+ "Collection of tools to query what type of USB devices are connected to
+the system, including @command{lsusb}. The experimental @command{usbreset}
+command included in the package, but be aware that it may not work for all
+devices.")
(license license:gpl2+)))
(define-public usbip-utils
@@ -8103,124 +8150,128 @@ not as a replacement for it.")
license:gpl3+)))) ; everything else
(define-public hotspot
- (package
- (name "hotspot")
- (version "1.5.1")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/KDAB/hotspot")
- (commit (string-append "v" version))
- ;; Include the bundled perfparser and PrefixTickLabels
- ;; libraries, which are to be used in source form.
- (recursive? #t)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "04k2rvf2lgi8hp7dzqzn65fcd2lsiylwr04d44q75j0wvgbjjv1v"))))
- (build-system qt-build-system)
- (arguments
- (list
- ;; As mentioned in the option help text, the KAuth helper cannot be
- ;; installed to a custom prefix and the build fails with "file cannot
- ;; create directory: /polkit-1/actions. Maybe need administrative"
- ;; (see: https://bugs.kde.org/show_bug.cgi?id=363678).
- #:configure-flags #~(list "-DINSTALL_KAUTH_HELPER=OFF"
- "-DQT6_BUILD=ON")
- #:qtbase qtbase
- ;; The 'tst_models' and 'tst_callgraphgenerator' fail, with
- ;; the later seemingly requiring sudo or access to the kernel
- ;; trace points.
- #:test-exclude
- (string-append
- "("
- (string-join
- ;; The 'tst_models' expected output doesn't exactly
- ;; match.
- '("tst_models"
- ;; The 'tst_callgraphgenerator' perf invocation
- ;; fails when run in the build container.
- "tst_callgraphgenerator"
- ;; The 'tst_perfparser' test requires sudo/access
- ;; to the kernel scheduler trace points.
- "tst_perfparser")
- "|")
- ")")
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'patch-perfparser
- ;; XXX: This phase is copied from qt-creator: keep them in sync!
- (lambda* (#:key inputs #:allow-other-keys)
- ;; perfparser attempts to dynamically load the demangle
- ;; libraries; use their absolute file name to avoid having to
- ;; set LD_LIBRARY_PATH.
- (let ((librustc_demangle.so
- (with-exception-handler (lambda (ex)
- (if (search-error? ex)
- #f
- (raise-exception ex)))
- (lambda ()
- (search-input-file inputs "lib/librustc_demangle.so"))
- #:unwind? #t)))
- (substitute* "3rdparty/perfparser/app/demangler.cpp"
- (("loadDemangleLib\\(QStringLiteral\\(\"rustc_demangle\")"
- all)
- (if librustc_demangle.so
- (format #f "loadDemangleLib(QStringLiteral(~s)"
- librustc_demangle.so)
- all)) ;no rustc_demangle; leave unchanged
- (("loadDemangleLib\\(QStringLiteral\\(\"d_demangle\")")
- (format #f "loadDemangleLib(QStringLiteral(~s)"
- (search-input-file inputs
- "lib/libd_demangle.so")))))))
- (add-after 'unpack 'path-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "src/perfoutputwidgetkonsole.cpp"
- (("\"tail\"")
- (format #f "~s" (search-input-file inputs "bin/tail"))))
- (substitute* "src/perfrecord.cpp"
- (("\"perf( )?\"" _ space)
- (string-append "\"" (search-input-file inputs "bin/perf")
- (or space "") "\""))))))))
- (native-inputs
- (list extra-cmake-modules
- vulkan-headers))
- (inputs
- (append
- (list coreutils-minimal
- d-demangler
- elfutils
- karchive
- kconfig
- kcoreaddons
- kddockwidgets
- kgraphviewer
- ki18n
- kio
- kiconthemes
- kitemmodels
- kitemviews
- knotifications
- kparts
- ksyntaxhighlighting
- kwindowsystem
- libxkbcommon
- perf
- qtdeclarative
- qtsvg
- solid
- threadweaver
- `(,zstd "lib"))
- (if (supported-package? rust-rustc-demangle-capi-0.1)
- (list rust-rustc-demangle-capi-0.1)
- '())))
- (home-page "https://github.com/KDAB/hotspot")
- (synopsis "Performance analysis GUI for Linux perf")
- (description "Hotspot is a standalone GUI for performance data analysis.
+ ;; Use the latest git commit as it includes unreleased fixes for the test
+ ;; suite.
+ (let ((commit "5cec69301a3f34ada86ce9fe01a9538b04b3cf7c")
+ (revision "0"))
+ (package
+ (name "hotspot")
+ (version (git-version "1.5.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/KDAB/hotspot")
+ (commit commit)
+ ;; Include the bundled perfparser and PrefixTickLabels
+ ;; libraries, which are to be used in source form.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "115gskjdcb1q3mgrnv1qcdrhxabjzl1hhkpk1klk67ayicsk1ym6"))))
+ (build-system qt-build-system)
+ (arguments
+ (list
+ ;; As mentioned in the option help text, the KAuth helper cannot be
+ ;; installed to a custom prefix and the build fails with "file cannot
+ ;; create directory: /polkit-1/actions. Maybe need administrative"
+ ;; (see: https://bugs.kde.org/show_bug.cgi?id=363678).
+ #:configure-flags #~(list "-DINSTALL_KAUTH_HELPER=OFF"
+ "-DQT6_BUILD=ON")
+ #:qtbase qtbase
+ ;; The 'tst_models' and 'tst_callgraphgenerator' fail, with
+ ;; the later seemingly requiring sudo or access to the kernel
+ ;; trace points.
+ #:test-exclude
+ (string-append
+ "("
+ (string-join
+ ;; The 'tst_models' expected output doesn't exactly
+ ;; match.
+ '("tst_models"
+ ;; The 'tst_callgraphgenerator' perf invocation
+ ;; fails when run in the build container.
+ "tst_callgraphgenerator"
+ ;; The 'tst_perfparser' test requires sudo/access
+ ;; to the kernel scheduler trace points.
+ "tst_perfparser")
+ "|")
+ ")")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-perfparser
+ ;; XXX: This phase is copied from qt-creator: keep them in sync!
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; perfparser attempts to dynamically load the demangle
+ ;; libraries; use their absolute file name to avoid having to
+ ;; set LD_LIBRARY_PATH.
+ (let ((librustc_demangle.so
+ (with-exception-handler (lambda (ex)
+ (if (search-error? ex)
+ #f
+ (raise-exception ex)))
+ (lambda ()
+ (search-input-file inputs "lib/librustc_demangle.so"))
+ #:unwind? #t)))
+ (substitute* "3rdparty/perfparser/app/demangler.cpp"
+ (("loadDemangleLib\\(QStringLiteral\\(\"rustc_demangle\")"
+ all)
+ (if librustc_demangle.so
+ (format #f "loadDemangleLib(QStringLiteral(~s)"
+ librustc_demangle.so)
+ all)) ;no rustc_demangle; leave unchanged
+ (("loadDemangleLib\\(QStringLiteral\\(\"d_demangle\")")
+ (format #f "loadDemangleLib(QStringLiteral(~s)"
+ (search-input-file inputs
+ "lib/libd_demangle.so")))))))
+ (add-after 'unpack 'path-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/perfoutputwidgetkonsole.cpp"
+ (("\"tail\"")
+ (format #f "~s" (search-input-file inputs "bin/tail"))))
+ (substitute* "src/perfrecord.cpp"
+ (("\"perf( )?\"" _ space)
+ (string-append "\"" (search-input-file inputs "bin/perf")
+ (or space "") "\""))))))))
+ (native-inputs
+ (list extra-cmake-modules
+ vulkan-headers))
+ (inputs
+ (append
+ (list coreutils-minimal
+ d-demangler
+ elfutils
+ karchive
+ kconfig
+ kcoreaddons
+ kddockwidgets
+ kgraphviewer
+ ki18n
+ kio
+ kiconthemes
+ kitemmodels
+ kitemviews
+ knotifications
+ kparts
+ ksyntaxhighlighting
+ kwindowsystem
+ libxkbcommon
+ perf
+ qtdeclarative
+ qtsvg
+ solid
+ threadweaver
+ `(,zstd "lib"))
+ (if (supported-package? rust-rustc-demangle-capi-0.1)
+ (list rust-rustc-demangle-capi-0.1)
+ '())))
+ (home-page "https://github.com/KDAB/hotspot")
+ (synopsis "Performance analysis GUI for Linux perf")
+ (description "Hotspot is a standalone GUI for performance data analysis.
It aims to be similar to KCachegrind, but for data collected with
@command{perf}, a profiler for use with the kernel Linux. Its main feature is
graphically visualizing a @file{perf.data} file.")
- (license (list license:gpl2+ license:gpl3+)))) ;dual licensed
+ (license (list license:gpl2+ license:gpl3+))))) ;dual licensed
(define-public ecryptfs-utils
(package
@@ -12190,6 +12241,36 @@ virtual server table in the Linux kernel. The Linux Virtual Server can be used
to build scalable network services based on a cluster of two or more nodes.")
(license license:gpl2+)))
+(define-public ryzenadj
+ (package
+ (name "ryzenadj")
+ (version "0.17.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/flygoat/ryzenadj/archive/refs/tags/"
+ "v" version ".tar.gz"))
+ (sha256
+ (base32 "0i2x6kbn2ix52vjz1mmh0c0g3w0k4sn0lq68wbsk0pgndzcck2l4"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin (delete-file-recursively "win32")
+ #t))))
+ (build-system cmake-build-system)
+ (inputs (list pciutils))
+ (arguments
+ (list #:tests? #f ; No test suite
+ #:phases #~(modify-phases %standard-phases
+ (add-before 'install 'build
+ (lambda _
+ (invoke "cmake" "-DCMAKE_BUILD_TYPE=Release" "."))))))
+ (home-page "https://github.com/flygoat/ryzenadj")
+ (synopsis "Power management tool for AMD Ryzen APUs")
+ (description
+ "@command{ryzenadj} is an utility to adjust power management settings for
+AMD Ryzen mobile processors. You will need to ensure it can access /dev/mem,
+for instance by using the \"iomem=relaxed\" kernel argument.")
+ (license license:lgpl3)))
+
(define-public ryzen-smu
(package
(name "ryzen-smu")