Commit Message
Hi,
This patch adds sg3_utils (and libsgutils).
When I ran 'guix size sg3_utils', I noticed the following output, which
seemed large to me. Is it normal?
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix size sg3_utils
store item total self
/gnu/store/vbs91pmyw56m7sf8h7qvn465cbwbi24g-sg3_utils-1.42 74.9 2.4 3.2%
/gnu/store/9nifwk709wajpyfwa0jzaa3p6mf10vxs-gcc-4.9.3-lib 60.9 22.9 30.5%
/gnu/store/ykzwykkvr2c80rw4l1qh3mvfdkl7jibi-bash-4.3.42 49.7 4.7 6.3%
/gnu/store/68rzhy9px1njppv0nmbm8nk0sdkg5jx6-readline-6.3 45.0 1.2 1.6%
/gnu/store/ld16jy012l3jpkj6azynzmldxn28cspw-ncurses-6.0 43.8 5.7 7.6%
/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23 38.1 36.7 49.0%
/gnu/store/0010wvgs40kdq8chzsh403qm7la9jxq7-bash-static-4.3.42 1.4 1.4 1.9%
total: 74.9 MiB
--8<---------------cut here---------------end--------------->8---
It might be nice to package the library and the tools separately. How
might I do that? The release tarball's README says the following, but I
see no obvious way to split the build output into 3 separate packages:
"Various distributions (of Linux mainly) distribute sg3_utils as 3
installable packages. One is a package containing the shared library
discussed above (e.g. libsgutils2-2_1.33-0.1_i386.deb). A second package
contains the utilities (e.g. sg3-utils_1.33-0.1_i386.deb) and depends on
the first package). Finally there is an optional package that contains
header files and a static library
(e.g. libsgutils2-dev_1.33-0.1_i386.deb). This final package is only
needed to build other packages (e.g. sdparm) that wish to use the
sg3_utils shared library."
Comments
On Sat, Aug 13, 2016 at 02:42:34AM -0700, Chris Marusich wrote:
> Hi,
>
> This patch adds sg3_utils (and libsgutils).
>
> When I ran 'guix size sg3_utils', I noticed the following output, which
> seemed large to me. Is it normal?
>
> --8<---------------cut here---------------start------------->8---
> $ ./pre-inst-env guix size sg3_utils
> store item total self
> /gnu/store/vbs91pmyw56m7sf8h7qvn465cbwbi24g-sg3_utils-1.42 74.9 2.4 3.2%
> /gnu/store/9nifwk709wajpyfwa0jzaa3p6mf10vxs-gcc-4.9.3-lib 60.9 22.9 30.5%
> /gnu/store/ykzwykkvr2c80rw4l1qh3mvfdkl7jibi-bash-4.3.42 49.7 4.7 6.3%
> /gnu/store/68rzhy9px1njppv0nmbm8nk0sdkg5jx6-readline-6.3 45.0 1.2 1.6%
> /gnu/store/ld16jy012l3jpkj6azynzmldxn28cspw-ncurses-6.0 43.8 5.7 7.6%
> /gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23 38.1 36.7 49.0%
> /gnu/store/0010wvgs40kdq8chzsh403qm7la9jxq7-bash-static-4.3.42 1.4 1.4 1.9%
> total: 74.9 MiB
> --8<---------------cut here---------------end--------------->8---
The overall size looks normal to me. I don't understand how sg3_utils can be
2.4 MiB, while increasing the closure size by 14 MiB.
> It might be nice to package the library and the tools separately. How
> might I do that? The release tarball's README says the following, but I
> see no obvious way to split the build output into 3 separate packages:
>
> "Various distributions (of Linux mainly) distribute sg3_utils as 3
> installable packages. One is a package containing the shared library
> discussed above (e.g. libsgutils2-2_1.33-0.1_i386.deb). A second package
> contains the utilities (e.g. sg3-utils_1.33-0.1_i386.deb) and depends on
> the first package). Finally there is an optional package that contains
> header files and a static library
> (e.g. libsgutils2-dev_1.33-0.1_i386.deb). This final package is only
> needed to build other packages (e.g. sdparm) that wish to use the
> sg3_utils shared library."
We tend not to create separate outputs unless there is a good reason. A
good reason could be a rarely used component that is disproportionately
large; we might try to put that in a separate output so it doesn't bloat
users' profiles unnecessarily.
A really good upstream build system will make this easy. Check the nmap
package definition for an example: we can build an install ndiff
directly into its own output, and this keeps the Python reference
separate from the default nmap output.
From 68fefdc9ec01e9a09296e4aaba8d127d4c3c3dd4 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/education.scm.
* gnu/packages/scsi.scm: Add new file.
* gnu/packages/scsi.scm (sg3_utils): New variable.
---
gnu/local.mk | 1 +
gnu/packages/scsi.scm | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 54 insertions(+)
create mode 100644 gnu/packages/scsi.scm
@@ -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 \
new file mode 100644
@@ -0,0 +1,53 @@
+;;; 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 \"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.")
+ ;; 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.7.3