gnu: Add sg3_utils.

Message ID 871t1skp8l.fsf@gmail.com
State New
Headers

Commit Message

Chris Marusich Aug. 14, 2016, 3:23 a.m. UTC
  Leo Famulari <leo@famulari.name> writes:

> Thanks for this patch! How about putting it in disk.scm? I have no
> strong preference either way. I don't like moving things around too much
> once they have been created, however :)

sg3_utils and its library can be used with any SCSI device, which
includes many devices which are not hard disks, such as CD-ROMs and
media changers (i.e., jukeboxes), so I don't think it makes sense to put
it into a file whose scope is limited to disks.

>> +  #:use-module ((guix licenses)
>> +                #:select (gpl2+ bsd-3))
>
> Do we need to use #:select here? How about using a license prefix? What
> are the pros and cons?
>
>> +(define-public sg3_utils
>> +  (package
>> +    (name "sg3_utils")
>
> We like to use underscores instead of hyphens in package names:
>
> https://www.gnu.org/software/guix/manual/html_node/Package-Naming.html#Package-Naming

Thank you for pointing this out.  I've updated it (see attached patch).

>> +    (description
>> +     "sg3_utils is a collection of utilities for devices that use the Small
>> +Computer System Interface (SCSI) command set.  It includes utilities to read
>> +data from, write data to, control, modify, and query the state of SCSI
>> +devices.  For example, this package provides command-line tools to copy data
>> +based on \"dd\" syntax and semantics (called sg_dd, sgp_dd and sgm_dd), check
>> +INQUIRY data and VPD pages (sg_inq), check mode and log pages (sginfo,
>> +sg_modes and sg_logs), spin up and down disks (sg_start), do self
>> +tests (sg_senddiag), parse sense data, and perform various other functions.
>> +In addition, this package includes a library, called libsgutils, which can be
>> +used in C and C++ programs to interact with SCSI devices.")
>
> I think that dd, and all the sg_* commands, should be wrapped in texinfo
> markup, like this:
>
> @code{dd}

Done!  Thanks for the tip.
  

Comments

Leo Famulari Aug. 14, 2016, 4:46 p.m. UTC | #1
On Sat, Aug 13, 2016 at 08:23:38PM -0700, Chris Marusich wrote:
> sg3_utils and its library can be used with any SCSI device, which
> includes many devices which are not hard disks, such as CD-ROMs and
> media changers (i.e., jukeboxes), so I don't think it makes sense to put
> it into a file whose scope is limited to disks.

Ah, I can't wait for jukebox.scm ;)

> >> +  #:use-module ((guix licenses)
> >> +                #:select (gpl2+ bsd-3))
> >
> > Do we need to use #:select here? How about using a license prefix? What
> > are the pros and cons?

I'll leave this as is.

> > We like to use underscores instead of hyphens in package names:
> >
> > https://www.gnu.org/software/guix/manual/html_node/Package-Naming.html#Package-Naming
> 
> Thank you for pointing this out.  I've updated it (see attached patch).

Thanks for understanding my mistake; I got it backwards in the sentence
you replied to :p

> 
> > I think that dd, and all the sg_* commands, should be wrapped in texinfo
> > markup, like this:
> >
> > @code{dd}
> 
> Done!  Thanks for the tip.

Thanks! Pushed as 5cf30103f7.
  
Chris Marusich Aug. 14, 2016, 6:49 p.m. UTC | #2
Leo Famulari <leo@famulari.name> writes:

>> >> +  #:use-module ((guix licenses)
>> >> +                #:select (gpl2+ bsd-3))
>> >
>> > Do we need to use #:select here? How about using a license prefix? What
>> > are the pros and cons?
>
> I'll leave this as is.

Oh, sorry, I missed this comment.  What is the difference?  I'm
unfamiliar with what it means to "use a license prefix"; where can I
find more info about that?

> Pushed as 5cf30103f7.

Thank you!
  
Leo Famulari Aug. 14, 2016, 7:21 p.m. UTC | #3
On Sun, Aug 14, 2016 at 11:49:28AM -0700, Chris Marusich wrote:
> Leo Famulari <leo@famulari.name> writes:
> 
> >> >> +  #:use-module ((guix licenses)
> >> >> +                #:select (gpl2+ bsd-3))
> >> >
> >> > Do we need to use #:select here? How about using a license prefix? What
> >> > are the pros and cons?
> >
> > I'll leave this as is.
> 
> Oh, sorry, I missed this comment.  What is the difference?  I'm
> unfamiliar with what it means to "use a license prefix"; where can I
> find more info about that?

Generally, we have the problem of using different variables named
'expat', 'zlib', 'openssl', and possibly others. For those 3, there are
both package and license variables sharing the name.

So, if we want to refer to both the package and license variables of,
for example, expat, we have to distinguish them somehow. So, we
sometimes "prefix" the licenses when they are used, to distinguish them
from the packages.

There is a good example in 'gnu/packages/admin.scm'. Check line 33,
where the license module is imported:

33   #:use-module ((guix licenses) #:prefix license:)

and line 107, where you can see it in action:

107     (license license:gpl2+)))

Using #:select to only import specific licenses can help, but you still
have a problem when it's time to #:select the expat license.
  
Chris Marusich Aug. 15, 2016, 2:15 a.m. UTC | #4
Leo Famulari <leo@famulari.name> writes:

> Generally, we have the problem of using different variables named
> 'expat', 'zlib', 'openssl', and possibly others. For those 3, there are
> both package and license variables sharing the name.
>
> So, if we want to refer to both the package and license variables of,
> for example, expat, we have to distinguish them somehow. So, we
> sometimes "prefix" the licenses when they are used, to distinguish them
> from the packages.
>
> There is a good example in 'gnu/packages/admin.scm'. Check line 33,
> where the license module is imported:
>
> 33   #:use-module ((guix licenses) #:prefix license:)
>
> and line 107, where you can see it in action:
>
> 107     (license license:gpl2+)))
>
> Using #:select to only import specific licenses can help, but you still
> have a problem when it's time to #:select the expat license.

I see!  That's useful.  Thanks for the tip.
  

Patch

From 3539ae43993d2118e101446086e123651a132460 Mon Sep 17 00:00:00 2001
From: Chris Marusich <cmmarusich@gmail.com>
Date: Sat, 13 Aug 2016 01:58:03 -0700
Subject: [PATCH] gnu: Add sg3_utils.

* gnu/local.mk: Include gnu/packages/scsi.scm.
* gnu/packages/scsi.scm: Add new file.
* gnu/packages/scsi.scm (sg3_utils): New variable.
---
 gnu/local.mk          |  1 +
 gnu/packages/scsi.scm | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+)
 create mode 100644 gnu/packages/scsi.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 44ace61..99dbb30 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -305,6 +305,7 @@  GNU_SYSTEM_MODULES =				\
   %D%/packages/scheme.scm			\
   %D%/packages/screen.scm			\
   %D%/packages/scribus.scm			\
+  %D%/packages/scsi.scm				\
   %D%/packages/sdl.scm				\
   %D%/packages/search.scm			\
   %D%/packages/serialization.scm		\
diff --git a/gnu/packages/scsi.scm b/gnu/packages/scsi.scm
new file mode 100644
index 0000000..92e2d7a
--- /dev/null
+++ b/gnu/packages/scsi.scm
@@ -0,0 +1,54 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages scsi)
+  #:use-module ((guix licenses)
+                #:select (gpl2+ bsd-3))
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu))
+
+(define-public sg3-utils
+  (package
+    (name "sg3-utils")
+    (version "1.42")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://sg.danny.cz/sg/p/sg3_utils-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1fg71rj0f1gdjmkj0z8wlv46cf9lryjdyjkbi7fjmssgi5jyvblp"))))
+    (build-system gnu-build-system)
+    (home-page "http://sg.danny.cz/sg/sg3_utils.html")
+    (synopsis "SCSI device utilities")
+    (description
+     "sg3-utils is a collection of utilities for devices that use the Small
+Computer System Interface (SCSI) command set.  It includes utilities to read
+data from, write data to, control, modify, and query the state of SCSI
+devices.  For example, this package provides command-line tools to copy data
+based on @code{dd} syntax and semantics (called @code{sg_dd}, @code{sgp_dd}
+and @code{sgm_dd}), check INQUIRY data and VPD pages (@code{sg_inq}), check
+mode and log pages (@code{sginfo}, @code{sg_modes} and @code{sg_logs}), spin
+up and down disks (@code{sg_start}), do self tests (@code{sg_senddiag}), parse
+sense data (@code{sg_decode_sense}), and perform various other functions.  In
+addition, this package includes a library, called libsgutils, which can be
+used in C and C++ programs to interact with SCSI devices.")
+    ;; The libsgutils library itself is licensed under bsd-3.  Some tools are
+    ;; licensed under bsd-3, also.  Some tools are licensed under gpl2+.
+    (license (list gpl2+ bsd-3))))
-- 
2.9.2