[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#26917: [PATCH] Add thermald and thermald-service-type (for cpu frequ
From: |
Christopher Allan Webber |
Subject: |
bug#26917: [PATCH] Add thermald and thermald-service-type (for cpu frequency scaling) |
Date: |
Sun, 14 May 2017 00:28:34 -0500 |
User-agent: |
mu4e 0.9.18; emacs 25.2.1 |
Bah, this should have been sent to guix-patches.
Christopher Allan Webber writes:
> Hello! I got tired of my laptop crashing so much due to overheating, so
> here's a package for thermald as well as a service type.
>
>>From 56c7019d58d4a064fe44e626a1396b62cbf808b0 Mon Sep 17 00:00:00 2001
> From: Christopher Allan Webber <address@hidden>
> Date: Sat, 13 May 2017 19:36:01 -0500
> Subject: [PATCH 1/2] gnu: Add thermald.
>
> * gnu/packages/admin.scm (thermald): New variable.
> ---
> gnu/packages/admin.scm | 54
> +++++++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 53 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
> index ff0431999..20cb8f180 100644
> --- a/gnu/packages/admin.scm
> +++ b/gnu/packages/admin.scm
> @@ -17,6 +17,7 @@
> ;;; Copyright © 2016 John Darrington <address@hidden>
> ;;; Copyright © 2017 Ben Sturmfels <address@hidden>
> ;;; Copyright © 2017 Ethan R. Jones <address@hidden>
> +;;; Copyright © 2017 Christopher Allan Webber <address@hidden>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -80,7 +81,8 @@
> #:use-module (gnu packages autotools)
> #:use-module (gnu packages gnome)
> #:use-module (gnu packages kerberos)
> - #:use-module (gnu packages gtk))
> + #:use-module (gnu packages gtk)
> + #:use-module (gnu packages xml))
>
> (define-public aide
> (package
> @@ -2130,3 +2132,53 @@ logo, or any ASCII file of your choice. The main
> purpose of Neofetch is to be
> used in screenshots to show other users what operating system or distribution
> you are running, what theme or icon set you are using, etc.")
> (license license:expat)))
> +
> +(define-public thermald
> + (package
> + (name "thermald")
> + (version "1.6")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append "https://github.com/01org/thermal_daemon/archive/v"
> + version ".tar.gz"))
> + (sha256 (base32
> + "14klz9fnvi9jdlaqwrp61xa5nh051n8ykrs1fh1wxd7j66qf2fn6"))))
> + (build-system gnu-build-system)
> + (arguments
> + `(#:phases (modify-phases %standard-phases
> + (add-after
> + 'unpack 'autogen.sh-and-fix-paths
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let ((out (assoc-ref outputs "out")))
> + ;; upstartconfir is hardcoded to /etc/init and the
> build
> + ;; system tries to mkdir that. We don't even need
> upstart
> + ;; files at all; this is a fast and kludgy workaround
> + (substitute* "data/Makefile.am"
> + (("upstartconfdir = /etc/init")
> + (string-append "upstartconfdir = "
> + out "/etc/init")))
> + ;; Now run autogen
> + (zero? (system* "sh" "autogen.sh"))))))
> + #:configure-flags
> + (let ((out (assoc-ref %outputs "out")))
> + (list (string-append "--sysconfdir="
> + out "/etc")
> + (string-append "--with-udev-dir="
> + out "/lib/udev")
> + (string-append "--with-dbus-sys-dir="
> + out "/etc/dbus-1/system.d")
> + "--localstatedir=/var"))))
> + (native-inputs
> + `(("autoconf" ,autoconf)
> + ("automake" ,automake)
> + ("glib" ,glib "bin") ; for glib-genmarshal, etc.
> + ("pkg-config" ,pkg-config)))
> + (inputs
> + `(("dbus-glib" ,dbus-glib)
> + ("libxml2" ,libxml2)))
> + (home-page "https://01.org/linux-thermal-daemon/")
> + (synopsis "CPU scaling for thermal management")
> + (description "The Linux Thermal Daemon helps monitor and control
> temperature
> +on systems running the Linux kernel.")
> + (license license:gpl2+)))
> --
> 2.12.2
>
>>From de2045cdc81ddef7b01b3445fb731a3252f5b4a8 Mon Sep 17 00:00:00 2001
> From: Christopher Allan Webber <address@hidden>
> Date: Sat, 13 May 2017 19:37:02 -0500
> Subject: [PATCH 2/2] services: Add 'thermald-service-type'.
>
> * gnu/services/admin.scm (<thermald-configuration>): New record type.
> (thermald-shepherd-service, thermald-service-type): New variables.
> * doc/guix.texi (Thermal Management): New section documenting thermald.
> ---
> doc/guix.texi | 23 ++++++++++++++++++++++-
> gnu/services/admin.scm | 51
> ++++++++++++++++++++++++++++++++++++++++++++++----
> 2 files changed, 69 insertions(+), 5 deletions(-)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 22dc8b3f9..1fee7616c 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -35,7 +35,8 @@ Copyright @copyright{} 2017 Mathieu address@hidden
> Copyright @copyright{} 2017 Federico address@hidden
> Copyright @copyright{} 2017 Carlo address@hidden
> Copyright @copyright{} 2017 Thomas address@hidden
> -Copyright @copyright{} 2017 humanitiesNerd
> +Copyright @copyright{} 2017 address@hidden
> +Copyright @copyright{} 2017 Christopher Allan Webber
>
> Permission is granted to copy, distribute and/or modify this document
> under the terms of the GNU Free Documentation License, Version 1.3 or
> @@ -14746,6 +14747,26 @@ The following is an example @code{dicod-service}
> configuration.
> %dicod-database:gcide))))
> @end example
>
> address@hidden Thermal Management
> +
> +The @code{(gnu services admin)} module provides an interface to
> +thermald, a cpu frequency scaling service which helps prevent overheating.
> +
> address@hidden {Scheme Variable} thermald-service-type
> +This is the service type for thermald.
> address@hidden defvr
> +
> address@hidden {Data Type} thermald-configuration
> +Data type representing the configuration of THERMALD-SERVICE.
> +
> address@hidden @asis
> address@hidden @code{ignore-cpuid-check?} {default: @code{#f}}
> +Ignore cpuid check for supported CPU models.
> +
> address@hidden table
> address@hidden deftp
> +
> +
> @subsubsection Version Control
>
> The @code{(gnu services version-control)} module provides the following
> services:
> diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
> index 6ac24e32b..ec274b416 100644
> --- a/gnu/services/admin.scm
> +++ b/gnu/services/admin.scm
> @@ -32,17 +32,27 @@
> rottlog-configuration
> rottlog-configuration?
> rottlog-service
> - rottlog-service-type))
> + rottlog-service-type
> +
> + thermald-configuration
> + thermald-service-type))
>
> ;;; Commentary:
> ;;;
> -;;; This module implements configuration of rottlog by writing
> +;;; Various administration services.
> +;;;
> +;;; Code:
> +
> +
> +
> +;;;
> +;;; Rotlog
> +;;;
> +;;; This service implements configuration of rottlog by writing
> ;;; /etc/rottlog/{rc,hourly|daily|weekly}. Example usage
> ;;;
> ;;; (mcron-service)
> ;;; (service rottlog-service-type (rottlog-configuration))
> -;;;
> -;;; Code:
>
> (define %rotated-files
> ;; Syslog files subject to rotation.
> @@ -118,4 +128,37 @@
> (compose list rottlog-rottlog))))
> (default-value (rottlog-configuration))))
>
> +
> +
> +;;;
> +;;; thermald
> +;;;
> +;;; This service implements cpu scaling. Helps prevent overheating!
> +
> +(define-record-type* <thermald-configuration>
> + thermald-configuration make-thermald-configuration
> + thermald-configuration?
> + (ignore-cpuid-check? thermald-ignore-cpuid-check?
> + (default #f)))
> +
> +(define (thermald-shepherd-service config)
> + (list
> + (shepherd-service
> + (provision '(thermald))
> + (documentation "Run thermald cpu frequency scaling.")
> + (start #~(make-forkexec-constructor
> + '(#$(file-append thermald "/sbin/thermald")
> + "--no-daemon"
> + #$@(if (thermald-ignore-cpuid-check? config)
> + '("--ignore-cpuid-check")
> + '()))))
> + (stop #~(make-kill-destructor)))))
> +
> +(define thermald-service-type
> + (service-type
> + (name 'thermald)
> + (extensions (list (service-extension shepherd-root-service-type
> + thermald-shepherd-service)))
> + (default-value (thermald-configuration))))
> +
> ;;; admin.scm ends here