Package: guix;
Reported by: Christopher Allan Webber <cwebber <at> dustycloud.org>
Date: Sun, 14 May 2017 01:06:01 UTC
Severity: normal
Tags: patch
Done: Christopher Allan Webber <cwebber <at> dustycloud.org>
Bug is archived. No further changes may be made.
Message #10 received at 26917-done <at> debbugs.gnu.org (full text, mbox):
From: Christopher Allan Webber <cwebber <at> dustycloud.org> To: 26917-done <at> debbugs.gnu.org Subject: Re: bug#26917: [PATCH] Add thermald and thermald-service-type (for cpu frequency scaling) Date: Sun, 14 May 2017 00:28:34 -0500
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 <cwebber <at> dustycloud.org> > 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 <jmd <at> gnu.org> > ;;; Copyright © 2017 Ben Sturmfels <ben <at> sturm.com.au> > ;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23 <at> gmail.com> > +;;; Copyright © 2017 Christopher Allan Webber <cwebber <at> dustycloud.org> > ;;; > ;;; 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 <cwebber <at> dustycloud.org> > 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 Othacehe@* > Copyright @copyright{} 2017 Federico Beffa@* > Copyright @copyright{} 2017 Carlo Zancanaro@* > Copyright @copyright{} 2017 Thomas Danckaert@* > -Copyright @copyright{} 2017 humanitiesNerd > +Copyright @copyright{} 2017 humanitiesNerd@* > +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 > > +@subsection Thermal Management > + > +The @code{(gnu services admin)} module provides an interface to > +thermald, a cpu frequency scaling service which helps prevent overheating. > + > +@defvr {Scheme Variable} thermald-service-type > +This is the service type for thermald. > +@end defvr > + > +@deftp {Data Type} thermald-configuration > +Data type representing the configuration of THERMALD-SERVICE. > + > +@table @asis > +@item @code{ignore-cpuid-check?} {default: @code{#f}} > +Ignore cpuid check for supported CPU models. > + > +@end table > +@end 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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.