gnu: mdadm: Add compilation fix for gcc-4.9.
[jackhill/guix/guix.git] / gnu / packages / gettext.scm
index 92da811..9289946 100644 (file)
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,7 +18,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages gettext)
-  #:use-module ((guix licenses) #:select (gpl3))
+  #:use-module ((guix licenses) #:select (gpl3+))
   #:use-module (gnu packages)
   #:use-module (guix packages)
   #:use-module (guix download)
 (define-public gnu-gettext
   (package
     (name "gettext")
-    (version "0.19.2")
+    (version "0.19.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gettext/gettext-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1fs9jbmcx26f2ghvnn92x1ks7qfhjg2wv7fbv5nczaz0yrpawj0c"))))
+               "0gvz86m4cs8bdf3mwmwsyx6lrq4ydfxgadrgd9jlx32z3bnz3jca"))
+             (patches (list (search-patch "gettext-msgunfmt.patch")))))
     (build-system gnu-build-system)
     (inputs
      `(("expat" ,expat)))
                  'check 'patch-tests
                  (lambda* (#:key inputs #:allow-other-keys)
                    (let* ((bash (which "sh")))
-                     (substitute*
-                         (find-files "gettext-tools/tests"
-                                     "^(lang-sh|msg(exec|filter)-[0-9])")
-                       (("#![[:blank:]]/bin/sh")
-                        (format #f "#!~a" bash)))
+                     ;; Some of the files we're patching are
+                     ;; ISO-8859-1-encoded, so choose it as the default
+                     ;; encoding so the byte encoding is preserved.
+                     (with-fluids ((%default-port-encoding #f))
+                       (substitute*
+                           (find-files "gettext-tools/tests"
+                                       "^(lang-sh|msg(exec|filter)-[0-9])")
+                         (("#![[:blank:]]/bin/sh")
+                          (format #f "#!~a" bash)))
 
-                     (substitute* (cons "gettext-tools/src/msginit.c"
-                                        (find-files "gettext-tools/gnulib-tests"
-                                                    "posix_spawn"))
-                       (("/bin/sh")
-                        bash))
+                       (substitute* (cons "gettext-tools/src/msginit.c"
+                                          (find-files "gettext-tools/gnulib-tests"
+                                                      "posix_spawn"))
+                         (("/bin/sh")
+                          bash))
 
-                     (substitute* "gettext-tools/src/project-id"
-                       (("/bin/pwd")
-                        "pwd"))))
-                 %standard-phases)
+                       (substitute* "gettext-tools/src/project-id"
+                         (("/bin/pwd")
+                          "pwd")))))
+                 (alist-cons-before
+                  'configure 'link-expat
+                  (lambda _
+                    ;; Gettext defaults to opening expat via dlopen on
+                    ;; "Linux".  Change to link directly.
+                    (substitute* "gettext-tools/configure"
+                      (("LIBEXPAT=\"-ldl\"") "LIBEXPAT=\"-ldl -lexpat\"")
+                      (("LTLIBEXPAT=\"-ldl\"") "LTLIBEXPAT=\"-ldl -lexpat\"")))
+                  %standard-phases))
 
        ;; When tests fail, we want to know the details.
        #:make-flags '("VERBOSE=yes")))
@@ -77,4 +91,4 @@ textual output of programs into multiple languages.  It provides translators
 with the means to create message catalogs, as well as an Emacs mode to work
 with them, and a runtime library to load translated messages from the
 catalogs.  Nearly all GNU packages use Gettext.")
-    (license gpl3))) ; some files are under GPLv2+
+    (license gpl3+)))                             ;some files are under GPLv2+