From 49afb43e03b1de34741c0812cc45fe48c06c404b Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Mon, 16 Apr 2018 18:08:30 +0530 Subject: [PATCH] gnu: Add inxi. * gnu/packages/admin.scm (inxi): New variable. --- gnu/packages/admin.scm | 115 +++++++++++++++++- .../patches/inxi-minimal-fix-syntax.patch | 18 +++ 2 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/inxi-minimal-fix-syntax.patch diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 5e2cf2d7a..7081f7f08 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -50,8 +50,11 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages check) #:use-module (gnu packages cyrus-sasl) + #:use-module (gnu packages dns) + #:use-module (gnu packages file) #:use-module (gnu packages ncurses) #:use-module (gnu packages readline) #:use-module (gnu packages linux) @@ -70,6 +73,7 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages bison) #:use-module (gnu packages flex) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages openldap) #:use-module (gnu packages mcrypt) @@ -97,7 +101,8 @@ #:use-module (gnu packages xml) #:use-module (gnu packages boost) #:use-module (gnu packages elf) - #:use-module (gnu packages mpi)) + #:use-module (gnu packages mpi) + #:use-module (gnu packages web)) (define-public aide (package @@ -2649,3 +2654,111 @@ Python loading in HPC environments.") ;; This package supports x86_64 and PowerPC64 (supported-systems '("x86_64-linux")) (license license:lgpl2.1))) + +(define-public inxi-minimal + (let ((version "3.0.04-1") + (real-name "inxi")) + (package + (name "inxi-minimal") + (version version) + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/smxi/inxi" + "/archive/" version "/inxi.tar.gz")) + (file-name (string-append real-name "-" version ".tar.gz")) + (sha256 + (base32 + "14zxdsjgh9dbijmpp0hhvg2yiqqfwnqgcc6x8dpl1v15z1h1r7pc")) + (patches (search-patches "inxi-minimal-fix-syntax.patch")))) + (build-system trivial-build-system) + (inputs + `(("bash" ,bash) + ("perl" ,perl))) + (native-inputs + `(("gzip" ,gzip) + ("tar" ,tar) + ("xz" ,xz))) + (arguments + `(#:modules + ((guix build utils) + (ice-9 match) + (srfi srfi-26)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match) + (srfi srfi-26)) + (setenv "PATH" (string-append + (assoc-ref %build-inputs "bash") "/bin" ":" + (assoc-ref %build-inputs "gzip") "/bin" ":" + (assoc-ref %build-inputs "perl") "/bin" ":" + (assoc-ref %build-inputs "tar") "/bin" ":" + (assoc-ref %build-inputs "xz") "/bin")) + (invoke "tar" "xvf" (assoc-ref %build-inputs "source")) + (with-directory-excursion ,(string-append real-name "-" version) + (substitute* "inxi" (("/usr/bin/env perl") (which "perl"))) + (let ((bin (string-append %output "/bin"))) + (install-file "inxi" bin) + (wrap-program (string-append bin "/inxi") + `("PATH" ":" = + ("$PATH" + ,@(map (lambda (input) + (string-append (match input + ((name . store) store)) + "/bin")) + %build-inputs))) + `("PERL5LIB" ":" = + ,(delete + "" + (map (match-lambda + (((? (cut string-prefix? "perl-" <>) name) . dir) + (string-append dir "/lib/perl5/site_perl")) + (_ "")) + %build-inputs))))) + (invoke "gzip" "inxi.1") + (install-file "inxi.1.gz" + (string-append %output "/share/doc/man/man1"))) + #t))) + (home-page "https://smxi.org/docs/inxi.htm") + (synopsis "Full featured system information script") + (description "Inxi is a system information script that can display +various things about your hardware and software to users in an IRC chatroom or +support forum. It runs with the /exec command in most IRC clients. ") + (license license:gpl3+)))) + +(define-public inxi + (package + (inherit inxi-minimal) + (name "inxi") + (inputs + `(("dmidecode" ,dmidecode) + ("file" ,file) + ("bind:utils" ,isc-bind "utils") ; dig + ("gzip" ,gzip) + ("iproute2" ,iproute) ; ip + ("kmod" ,kmod) ; modinfo + ("lm-sensors" ,lm-sensors) + ("mesa-utils" ,mesa-utils) + ("pciutils" ,pciutils) + ("procps" ,procps) + ("tar" ,tar) + ("tree" ,tree) + ("util-linux" ,util-linux) ; lsblk, lsusb, etc. + ("wmctrl" ,wmctrl) + ("xdpyinfo" ,xdpyinfo) + ("xprop" ,xprop) + ("xrandr" ,xrandr) + ("coreutils" ,coreutils) ; uptime + ;; TODO: Add more inputs: + ;; ipmi-sensors + ;; hddtemp + ;; perl-xml-dumper + ;; ipmitool + ,@(package-inputs inxi-minimal))) + (propagated-inputs + `(("perl-cpanel-json-xs" ,perl-cpanel-json-xs) + ("perl-http-tiny" ,perl-http-tiny) + ("perl-io-socket-ssl" ,perl-io-socket-ssl) + ("perl-json-xs" ,perl-json-xs) + ("perl-time-hires" ,perl-time-hires))))) diff --git a/gnu/packages/patches/inxi-minimal-fix-syntax.patch b/gnu/packages/patches/inxi-minimal-fix-syntax.patch new file mode 100644 index 000000000..ca5cde328 --- /dev/null +++ b/gnu/packages/patches/inxi-minimal-fix-syntax.patch @@ -0,0 +1,18 @@ +Copyright © 2018 Oleg Pykhalov + +This patch fixes “Quantifier follows nothing in regex” error. + +--- a/inxi 2018-04-30 20:51:47.665352075 +0300 ++++ b/inxi 2018-04-30 20:52:21.721804635 +0300 +@@ -4602,11 +4602,6 @@ + sub cleaner { + my ($item) = @_; + return $item if !$item;# handle cases where it was 0 or '' +- $item =~ s/chipset|components|computing|computer|corporation|communications|electronics|electrical|electric|gmbh|group|incorporation|industrial|international|nee|revision|semiconductor|software|technologies|technology|ltd\.||\bltd\b|inc\.||\binc\b|intl\.|co\.||corp\.||\(tm\)|\(r\)|®|\(rev ..\)|\'|\"|\sinc\s*$|\?//gi; +- $item =~ s/,|\*/ /g; +- $item =~ s/\s\s+/ /g; +- $item =~ s/^\s+|\s+$//g; +- return $item; + } + + sub dmi_cleaner { -- 2.17.0