From: Oleg Pykhalov <go.wigust@gmail.com>
To: Pierre Neidhardt <ambrevar@gmail.com>
Cc: 31178@debbugs.gnu.org, 31176@debbugs.gnu.org
Subject: [bug#31178] [PATCH] gnu: Add inxi.
Date: Mon, 30 Apr 2018 22:18:13 +0300 [thread overview]
Message-ID: <874ljstsei.fsf@gmail.com> (raw)
In-Reply-To: <87sh7c7u4w.fsf@gmail.com> (Pierre Neidhardt's message of "Mon, 30 Apr 2018 18:01:43 +0530")
[-- Attachment #1.1: Type: text/plain, Size: 1205 bytes --]
Hello Pierre,
Pierre Neidhardt <ambrevar@gmail.com> writes:
> Oleg, if I understood correctly, your concern was about inputs.
> To re-quote myself:
>
>> If I understand correctly, relying on native-inputs would mean that if the user
>> runs `guix gc`, then all of inxi "optional" dependencies would go.
>> Is this correct?
All “references” should survive ‘guix gc’:
--8<---------------cut here---------------start------------->8---
guix gc --references $(env GUIX_PACKAGE_PATH= guix build --no-grafts inxi)
--8<---------------cut here---------------end--------------->8---
> What's your take on inputs then? If there is anything else, please go
> ahead, I can try to address those issues.
OK, here is a new recipe, which works even in a container (unlike old
‘inxi’ which is a Shell script and not Perl).
--8<---------------cut here---------------start------------->8---
~/src/guix/pre-inst-env env GUIX_PACKAGE_PATH= guix environment --no-grafts --container --ad-hoc inxi
--8<---------------cut here---------------end--------------->8---
I've succeeded to test it by invoking ‘inxi’ and ‘inxi --full’, but
please test it more for your use cases.
[-- Attachment #1.2: gnu: Add inxi. --]
[-- Type: text/x-patch, Size: 7300 bytes --]
From 49afb43e03b1de34741c0812cc45fe48c06c404b Mon Sep 17 00:00:00 2001
From: Pierre Neidhardt <ambrevar@gmail.com>
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 <go.wigust@gmail.com>
+
+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\.|<ltd>|\bltd\b|inc\.|<inc>|\binc\b|intl\.|co\.|<co>|corp\.|<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
[-- Attachment #1.3: Type: text/plain, Size: 284 bytes --]
[…]
> I think it's better to have a package that behaves well in the general
> case than not having a package at all.
I agree. We have an old ‘inxi’ (Shell script version), which should not
produce collisions because of unnecessary ‘propagated-inputs’.
Oleg.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
next prev parent reply other threads:[~2018-04-30 19:19 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-16 12:38 [bug#31178] [PATCH] gnu: Add inxi Pierre Neidhardt
2018-04-22 21:42 ` [bug#31176] " Ludovic Courtès
2018-04-23 4:33 ` Pierre Neidhardt
2018-04-23 5:23 ` Oleg Pykhalov
2018-04-23 5:34 ` [bug#31176] " Pierre Neidhardt
2018-04-28 21:27 ` Ludovic Courtès
2018-04-29 17:38 ` Oleg Pykhalov
2018-04-30 10:07 ` Ludovic Courtès
2018-04-30 12:31 ` [bug#31176] " Pierre Neidhardt
2018-04-30 19:18 ` Oleg Pykhalov [this message]
2018-05-01 7:27 ` [bug#31178] " Oleg Pykhalov
2018-05-06 9:42 ` Pierre Neidhardt
2018-05-06 13:31 ` Oleg Pykhalov
2018-05-07 10:14 ` Peter Neidhardt
2018-05-07 15:29 ` Oleg Pykhalov
2018-05-07 19:52 ` [bug#31176] " Peter Neidhardt
2018-05-08 18:11 ` [bug#31178] " Oleg Pykhalov
2018-04-30 13:17 ` Tobias Geerinckx-Rice
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874ljstsei.fsf@gmail.com \
--to=go.wigust@gmail.com \
--cc=31176@debbugs.gnu.org \
--cc=31178@debbugs.gnu.org \
--cc=ambrevar@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).