bug-guix
[Top][All Lists]
Advanced

[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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]