gnu: Add 'version-prefix' and 'version-major+minor'; use them.
authorIan Denhardt <ian@zenhack.net>
Sun, 19 Oct 2014 02:03:42 +0000 (22:03 -0400)
committerLudovic Courtès <ludo@gnu.org>
Mon, 20 Oct 2014 13:32:54 +0000 (15:32 +0200)
The procedure version-prefix truncates a version string to a certain
number of components. version-major+minor is a special case of this,
which extracts the "major.minor" part of the string. Previously this
was handled by an expression common to several packages.

* guix/utils.scm (version-prefix, version-major+minor): New procedures
* gnu/packages/backup.scm (duplicity): Use version-major+minor.
* gnu/packages/cmake.scm (cmake): Likewise.
* gnu/packages/gnome.scm (libbonobo, libbonoboui): Likewise.
* gnu/packages/gnutls.scm (gnutls): Likewise.
* gnu/packages/mail.scm (gmime): Likewise.
* gnu/packages/mpd.scm (mpd): Likewise.
* gnu/packages/mpi.scm (openmpi): Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
gnu/packages/backup.scm
gnu/packages/cmake.scm
gnu/packages/gnome.scm
gnu/packages/gnutls.scm
gnu/packages/mail.scm
gnu/packages/mpd.scm
gnu/packages/mpi.scm
guix/utils.scm

index 1aef75e..a634c94 100644 (file)
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
@@ -38,8 +40,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages rsync)
   #:use-module (gnu packages ssh)
-  #:use-module (gnu packages xml)
-  #:use-module (srfi srfi-1))
+  #:use-module (gnu packages xml))
 
 (define-public duplicity
   (package
@@ -49,7 +50,7 @@
      (origin
       (method url-fetch)
       (uri (string-append "https://code.launchpad.net/duplicity/"
-                          (string-join (take (string-split version #\.) 2) ".")
+                          (version-major+minor version)
                           "-series/" version "/+download/duplicity-"
                           version ".tar.gz"))
       (sha256
index 2c20c73..63805ef 100644 (file)
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module ((guix licenses) #:select (bsd-3))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages file)
-  #:use-module (gnu packages xml)
-  #:use-module (srfi srfi-1))
+  #:use-module (gnu packages xml))
 
 (define-public cmake
   (package
@@ -39,8 +40,7 @@
              (method url-fetch)
              (uri (string-append
                    "http://www.cmake.org/files/v"
-                   (string-join (take (string-split version #\.) 2)
-                                ".")
+                   (version-major+minor version)
                    "/cmake-" version ".tar.gz"))
              (sha256
               (base32 "11q21vyrr6c6smyjy81k2k07zmn96ggjia9im9cxwvj0n88bm1fq"))
@@ -91,8 +91,7 @@
                                "--mandir=share/man"
                                ,(string-append
                                  "--docdir=share/doc/cmake-"
-                                 (string-join (take (string-split version #\.) 2)
-                                              "."))))))
+                                 (version-major+minor version))))))
                    %standard-phases)))))
     (inputs
      `(("file"       ,file)
index bbb3053..d497246 100644 (file)
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages bison)
@@ -42,8 +44,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages xorg)
-  #:use-module (srfi srfi-1))
+  #:use-module (gnu packages xorg))
 
 (define-public brasero
   (package
@@ -706,8 +707,7 @@ featuring mature C, C++ and Python bindings.")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
-                                  (string-join (take (string-split version #\.) 2)
-                                               ".")
+                                  (version-major+minor version)
                                   "/" name "-" version ".tar.bz2"))
               (sha256
                (base32 "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i"))
@@ -1077,7 +1077,7 @@ widgets built in the loading process.")
               (method url-fetch)
               (uri (string-append
                     "mirror://gnome/sources/" name "/"
-                    (string-join (take (string-split version #\.) 2) ".")
+                    (version-major+minor version)
                     "/" name "-" version ".tar.bz2"))
               (sha256
                (base32
index 3e4fa63..1660588 100644 (file)
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module ((gnu packages compression) #:prefix guix:)
   #:use-module (gnu packages)
@@ -29,8 +31,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages which)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (srfi srfi-1))
+  #:use-module (gnu packages pkg-config))
 
 (define-public libtasn1
   (package
@@ -69,8 +70,7 @@ specifications.")
               ;; Note: Releases are no longer on ftp.gnu.org since the
               ;; schism (after version 3.1.5).
               (string-append "mirror://gnupg/gnutls/v"
-                             (string-join (take (string-split version #\.) 2)
-                                          ".")
+                             (version-major+minor version)
                              "/gnutls-" version ".tar.xz"))
              (sha256
               (base32
index 2a742cd..46c2409 100644 (file)
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -49,9 +50,9 @@
                 #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
-  #:use-module (guix build-system python)
-  #:use-module (srfi srfi-1))
+  #:use-module (guix build-system python))
 
 (define-public mailutils
   (package
@@ -192,9 +193,7 @@ operating systems.")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gmime/"
-                                  (string-join (take (string-split version #\.)
-                                                     2)
-                                               ".")
+                                  (version-major+minor version)
                                   "/gmime-" version ".tar.xz"))
               (sha256
                (base32
index 0accc5e..4aa313b 100644 (file)
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages mpd)
-  #:use-module (srfi srfi-1)
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages compression)
@@ -72,8 +73,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
               (method url-fetch)
               (uri
                (string-append "http://musicpd.org/download/mpd/"
-                              (string-join (take (string-split
-                                                  version #\.) 2) ".")
+                              (version-major+minor version)
                               "/mpd-" version ".tar.gz"))
               (sha256
                (base32
index e7919bc..a268239 100644 (file)
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module ((guix licenses)
                 #:hide (expat))
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages gcc)
@@ -32,8 +34,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages valgrind)
-  #:use-module (srfi srfi-1))
+  #:use-module (gnu packages valgrind))
 
 (define-public hwloc
   (package
@@ -88,8 +89,7 @@ bind processes, and much more.")
      (origin
       (method url-fetch)
       (uri (string-append "http://www.open-mpi.org/software/ompi/v"
-                          (string-join (take (string-split version #\.) 2)
-                                       ".")
+                          (version-major+minor version)
                           "/downloads/openmpi-" version ".tar.bz2"))
       (sha256
        (base32
index 6392914..9b802b6 100644 (file)
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,6 +66,8 @@
             %current-target-system
             version-compare
             version>?
+            version-prefix
+            version-major+minor
             guile-version>?
             package-name->name+version
             string-tokenize*
@@ -518,6 +521,17 @@ or '= when they denote equal versions."
               ((negative? result) '<)
               (else '=))))))
 
+(define (version-prefix version-string num-parts)
+  "Truncate version-string to the first num-parts components of the version.
+For example, (version-prefix \"2.1.47.4.23\" 3) returns \"2.1.47\""
+  (string-join (take (string-split version-string #\.) num-parts) "."))
+
+
+(define (version-major+minor version-string)
+  "Return \"<major>.<minor>\", where major and minor are the major and
+minor version numbers from version-string."
+  (version-prefix version-string 2))
+
 (define (version>? a b)
   "Return #t when A denotes a newer version than B."
   (eq? '> (version-compare a b)))