guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 1/1] Factor out a common pattern into a procedure.


From: Ian Denhardt
Subject: [PATCH v2 1/1] Factor out a common pattern into a procedure.
Date: Sat, 18 Oct 2014 22:03:42 -0400

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.
---
 gnu/packages/backup.scm |  7 ++++---
 gnu/packages/cmake.scm  | 11 +++++------
 gnu/packages/gnome.scm  | 10 +++++-----
 gnu/packages/gnutls.scm |  8 ++++----
 gnu/packages/mail.scm   |  9 ++++-----
 gnu/packages/mpd.scm    |  6 +++---
 gnu/packages/mpi.scm    |  8 ++++----
 guix/utils.scm          | 14 ++++++++++++++
 8 files changed, 43 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 1aef75e..a634c94 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; 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
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 2c20c73..63805ef 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <address@hidden>
 ;;; Copyright © 2014 Mark H Weaver <address@hidden>
 ;;; Copyright © 2014 Eric Bavier <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,14 +23,14 @@
   #: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)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index bbb3053..d497246 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <address@hidden>
 ;;; Copyright © 2014 Ludovic Courtès <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; 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
diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm
index 3e4fa63..1660588 100644
--- a/gnu/packages/gnutls.scm
+++ b/gnu/packages/gnutls.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2014 Mark H Weaver <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; 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
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 2a742cd..46c2409 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2014 Mark H Weaver <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; 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
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 0accc5e..4aa313b 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 David Thompson <address@hidden>
 ;;; Copyright © 2014 Andreas Enge <address@hidden>
 ;;; Copyright © 2014 Cyrill Schenkel <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,11 +20,11 @@
 ;;; 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
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index e7919bc..a268239 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <address@hidden>
 ;;; Copyright © 2014 Ludovic Courtès <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; 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
diff --git a/guix/utils.scm b/guix/utils.scm
index 6392914..9b802b6 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2013 Mark H Weaver <address@hidden>
 ;;; Copyright © 2014 Eric Bavier <address@hidden>
+;;; Copyright © 2014 Ian Denhardt <address@hidden>
 ;;;
 ;;; 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)))
-- 
1.9.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]