[PATCH] gnu: Add powerstat.

DoneSubmitted by Tobias Geerinckx-Rice.
Details
3 participants
  • Jean-Baptiste Note
  • Tobias Geerinckx-Rice
  • Mathieu Othacehe
Owner
unassigned
Severity
normal
T
T
Tobias Geerinckx-Rice wrote on 9 May 17:15 +0200
(address . guix-patches@gnu.org)
20200509151509.11424-1-me@tobias.gr
* gnu/packages/linux.scm (powerstat): New public variable.--- gnu/packages/linux.scm | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+)
Toggle diff (57 lines)diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scmindex d2bffe8d8c..0d558f0277 100644--- a/gnu/packages/linux.scm+++ b/gnu/packages/linux.scm@@ -1195,7 +1195,50 @@ at login. Local and dynamic reconfiguration are its key features.") ;;; Miscellaneous. ;;; +(define-public powerstat+ (package+ (name "powerstat")+ (version "0.02.22")+ (source+ (origin+ (method url-fetch)+ (uri (string-append "https://kernel.ubuntu.com/~cking/tarballs/"+ "powerstat/powerstat-" version ".tar.gz"))+ (sha256+ (base32 "0r355b9syqa2nhfy8ksvxyy5d58v0isf983842js091s6liy0x7g"))))+ (build-system gnu-build-system)+ (arguments+ `(#:make-flags+ (list "CC=gcc"+ (string-append "prefix=" (assoc-ref %outputs "out")))+ #:tests? #f ; no test suite+ #:phases+ (modify-phases %standard-phases+ (add-after 'unpack 'respect-$prefix+ ;; https://bugs.launchpad.net/ubuntu/+source/powerstat/+bug/1877744+ (lambda _+ (substitute* "Makefile"+ (("DIR=/usr/") "DIR=$(prefix)/"))+ #t))+ (delete 'configure)))) ; no configure script+ (home-page "https://kernel.ubuntu.com/~cking/powerstat/")+ (synopsis "Measure system power consumption")+ (description+ "Powerstat measures and reports your computer's power consumption in real+time. On mobile PCs, it uses ACPI battery information to measure the power+drain of the entire system.++Powerstat can also report @acronym{RAPL, Running Average Power Limit} power+domain measurements. These are available only on some hardware such as Intel+Sandybridge and newer, and cover only part of the machine's components such as+CPU, DRAM, and graphics. However, they provide accurate and immediate readings+and don't require a battery at all.++The output is like @command{vmstat} but also shows power consumption statistics:+at the end of a run, @command{powerstat} will calculate the average, standard+deviation, and minimum and maximum values. It can show a nice histogram too.")+ (license license:gpl2)))+ (define-public psmisc (package (name "psmisc")-- 2.26.2
M
M
Mathieu Othacehe wrote on 9 May 19:01 +0200
(name . Tobias Geerinckx-Rice via Guix-patches via)(address . guix-patches@gnu.org)
87y2q1yrd7.fsf@gnu.org
Hey Tobias,
Toggle quote (4 lines)> + (arguments> + `(#:make-flags> + (list "CC=gcc"
Hard-coding CC this way will prevent cross-compilation. You can have alook to "crda" or "libaio" for examples.
As this is a recurring pattern, we should find a way to add it somewherein the build-system. But for now, the ugly snippet appending targetshould work :).
Otherwise this looks fine!
Thanks,
Mathieu
T
T
Tobias Geerinckx-Rice wrote on 9 May 19:32 +0200
(name . Mathieu Othacehe)(address . othacehe@gnu.org)
87ftc9ovz4.fsf@nckx
Mathieu,
Mathieu Othacehe 写道:
Toggle quote (4 lines)> Hard-coding CC this way will prevent cross-compilation. You can > have a> look to "crda" or "libaio" for examples.
Eh? This is the first time anyone's ever mentioned that. Thanks! It's obvious how much cross-compilation means to me.
(You realise there are *hundreds* of CC=gcc lines in current Guix, right?)
Don't get me wrong: I love that Guix still cares so much about cross-compilation, and the tremendous effort I see in the logs every month to make it work better, when (at least a few years ago) it was all the rage to declare it dead since VMs exist or something.
Toggle quote (6 lines)> As this is a recurring pattern, we should find a way to add it > somewhere> in the build-system. But for now, the ugly snippet appending > target> should work :).
I agree that handling (only) standard GNU variables[0] in the GNU build system makes sense.
I'll add the snippet of power.
Kind regards,
T G-R
[0]: https://www.gnu.org/prep/standards/standards.html#Utilities-in-Makefiles
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQT12iAyS4c9C3o4dnINsP+IT1VteQUCXrbpIAAKCRANsP+IT1Vteb6jAP95HIdXAXs7iNWww4m53Jtg7m2TE/Sese/tNWJ0mcsyUgD+NB3Yu810NOuG7x2rBLKzLPuxl+ZqaFPrmszpPb43bQk==ksoC-----END PGP SIGNATURE-----
J
J
Jean-Baptiste Note wrote on 9 May 22:03 +0200
(name . Tobias Geerinckx-Rice via Guix-patches via)(address . guix-patches@gnu.org)
875zd47u57.fsf@m4x.org
Hi there,
There are actually more than 300 such instances, and counting...
Couldn't we get a "magic" variable %target-cc like we have%output, %outputs -- then we could just stubstitute gcc for thisvariable...
I would do it, if I only knew where these are defined, but my schemeskills are definitely lacking :)
Kind regards,Jean-Baptiste
T
T
Tobias Geerinckx-Rice wrote on 9 May 22:42 +0200
(name . Mathieu Othacehe)(address . othacehe@gnu.org)(address . 41150-done@debbugs.gnu.org)
875zd4q1qm.fsf@nckx
Mathieu again,
Mathieu Othacehe 写道:
Toggle quote (4 lines)> Hard-coding CC this way will prevent cross-compilation. You can > have a> look to "crda" or "libaio" for examples.
Do you happen to know why libaio specifies the full path to gcc (only) when cross-compiling? I didn't bother modifying it to test.
I cross-built powerstat for aarch64 on my laptop (then ran it by accident -- modern GNU/Linux is mad). I'm not restricting platforms (yet) since my knowledge of ACPI support outside of x86 does not exist.
Pushed as 510a8eb1b8b4f2686606e427b8965c126b81ed8a.
Thanks!
T G-R
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQT12iAyS4c9C3o4dnINsP+IT1VteQUCXrcVsQAKCRANsP+IT1VtebQlAQDM+r+N65Z6NSTGNEOKOSHse+jcAfAMzRNlNRRs5h24awEA/N/oFj1SPtpM9mxNVp3KRQAxWMsw1n+/IIjadESHRwY==UrvL-----END PGP SIGNATURE-----
Closed
T
T
Tobias Geerinckx-Rice wrote on 9 May 23:04 +0200
(name . Jean-Baptiste Note)(address . jean-baptiste.note@m4x.org)
873688q0qf.fsf@nckx
Jean-Baptiste!
Jean-Baptiste Note 写道:
Toggle quote (2 lines)> There are actually more than 300 such instances
*Hundreds*! :-p
On a positive note there are 3 fewer occurences on c-u (308) than master (311).
I used a simple ‘grep CC=gcc | wc -l’; I suspect you did something similar.
Toggle quote (2 lines)> and counting...
It shouldn't increase if people posts their patches for review (...and they actually get reviewed...). CC=gcc is an old habit but not difficult to break.
Toggle quote (4 lines)> Couldn't we get a "magic" variable %target-cc like we have> %output, %outputs -- then we could just stubstitute gcc for this> variable...
I'm (not yet?) (no longer?) convinced that's a good idea once gnu-build-system takes care of those 308 packages and we're left with the exceptions.
When I replied to Mathieu's last mail I hadn't looked at the code yet:
(let ((target ,(%current-target-system))) (list (string-append "CC=" (if target (string-append target "-gcc") "gcc"))))
To me, abstracting that is beyond overkill.
However, I don't know much about cross-compiling. TBH I'd be sowewhat surprised if none of the CROSS-* procedures I regularly scroll past do something like this already.
Toggle quote (4 lines)> I would do it, if I only knew where these are defined, but my > scheme> skills are definitely lacking :)
Mainly (gnu packages cross-base).
Kind regards,
T G-R, currently building kernels to properly answer your hibernation mails...
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQT12iAyS4c9C3o4dnINsP+IT1VteQUCXrcayAAKCRANsP+IT1VteZm2AQD8p0su3ihHXIZRAKGQImt0u6tF68Rn+8owjqGJVbbSaQEA7bX94GXUK5y+PfAHe3oUIs3PipD/KEdHyxTIQUoUmg8==oqBb-----END PGP SIGNATURE-----
T
T
Tobias Geerinckx-Rice wrote on 9 May 23:10 +0200
(name . Jean-Baptiste Note)(address . jean-baptiste.note@m4x.org)(address . 41150@debbugs.gnu.org)
87zhagolv8.fsf@nckx
Tobias Geerinckx-Rice 写道:
Toggle quote (7 lines)> Jean-Baptiste Note 写道:>> I would do it, if I only knew where these are defined, but my >> scheme>> skills are definitely lacking :)>> Mainly (gnu packages cross-base).
...or if you mean the % friends: (guix utils). %target-gcc could be computed at evaluation (as opposed to build) time so is relatively simple [see previous mail for ‘too simple’ argument].
Kind regards,
T G-R
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQT12iAyS4c9C3o4dnINsP+IT1VteQUCXrccSwAKCRANsP+IT1VteQZmAQCCRdZh7KH1BMKCl6L2ug03vXh7gumU2jRmJQBAPywM6AEAoREifhwotBub/jdIbdYz9TvRmOS5YkqfN8FMw4lToQE==UOqE-----END PGP SIGNATURE-----
M
M
Mathieu Othacehe wrote on 10 May 09:24 +0200
Re: bug#41150: [PATCH] gnu: Add powerstat.
(address . 41150@debbugs.gnu.org)(address . me@tobias.gr)
87mu6gi76e.fsf@gnu.org
Hey,
Toggle quote (3 lines)> Do you happen to know why libaio specifies the full path to gcc (only) when> cross-compiling? I didn't bother modifying it to test.
Just tested, this does not seem useful.
Toggle quote (4 lines)> I cross-built powerstat for aarch64 on my laptop (then ran it by accident --> modern GNU/Linux is mad). I'm not restricting platforms (yet) since my> knowledge of ACPI support outside of x86 does not exist.
It's for sure less common than on x86, but it seems that it exists, see:https://www.kernel.org/doc/Documentation/arm64/arm-acpi.txt.
Toggle quote (2 lines)> Pushed as 510a8eb1b8b4f2686606e427b8965c126b81ed8a.
Thanks for fixing it :)
Mathieu
?