gnu: sbcl-trivial-clipboard: Update to 20200904.
[jackhill/guix/guix.git] / gnu / packages / gettext.scm
index 9b45e84..b9070ae 100644 (file)
@@ -2,11 +2,13 @@
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Miguel <rosen644835@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +34,8 @@
   #:use-module (guix build-system perl)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages emacs)
+  #:use-module (gnu packages libunistring)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages xml)
 (define-public gettext-minimal
   (package
     (name "gettext-minimal")
-    (version "0.19.8.1")
+    (version "0.20.1")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/gettext/gettext-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                ;; The gnulib test-lock test is prone to writer starvation
-                ;; with our glibc@2.25, which prefers readers, so disable it.
-                ;; The gnulib commit b20e8afb0b2 should fix this once
-                ;; incorporated here.
-                 (substitute* "gettext-runtime/tests/Makefile.in"
-                   (("TESTS = test-lock\\$\\(EXEEXT\\)") "TESTS ="))
-                 (substitute* "gettext-tools/gnulib-tests/Makefile.in"
-                  (("test-lock\\$\\(EXEEXT\\) ") ""))
-                 #t))))
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gettext/gettext-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0p3zwkk27wm2m2ccfqm57nj7vqkmfpn7ja1nf65zmhz8qqs5chb6"))))
     (build-system gnu-build-system)
     (outputs '("out"
-               "doc"))                            ;8 MiB of HTML
+               "doc"))                            ;9 MiB of HTML
     (inputs
-     `(("expat" ,expat)))
+     `(("libunistring" ,libunistring)
+       ("libxml2" ,libxml2)
+
+       ;; TODO: ncurses is only needed for the 'libtextstyle' library.
+       ;; The next version of gettext can use a separate libtextstyle,
+       ;; but for now we include it here in 'gettext-minimal'.
+       ("ncurses" ,ncurses)))
     (arguments
-     `(#:phases
+     `(#:configure-flags '("--with-included-libunistring=no"
+                           "--with-included-libxml=no")
+       #:phases
        (modify-phases %standard-phases
+         (add-before 'patch-source-shebangs 'patch-fixed-paths
+           (lambda _
+             (substitute* '("gettext-tools/config.h.in"
+                            "gettext-tools/gnulib-tests/init.sh"
+                            "gettext-tools/tests/init.sh"
+                            "gettext-tools/system-tests/run-test")
+               (("/bin/sh") "sh"))
+             (substitute* '("gettext-tools/src/project-id"
+                            "gettext-tools/projects/KDE/trigger"
+                            "gettext-tools/projects/GNOME/trigger")
+               (("/bin/pwd") "pwd"))
+             #t))
         (add-before 'check 'patch-tests
          (lambda* (#:key inputs #:allow-other-keys)
            (let* ((bash (which "sh")))
                  (("/bin/pwd")
                   "pwd"))
 
-               #t))))
-        (add-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\""))
-           #t)))
+               #t)))))
 
        ;; When tests fail, we want to know the details.
        #:make-flags '("VERBOSE=yes")))
 textual output of programs into multiple languages.  It provides translators
 with the means to create message catalogs, and a runtime library to load
 translated messages from the catalogs.  Nearly all GNU packages use Gettext.")
+    (properties `((upstream-name . "gettext")
+                  (cpe-name . "gettext")))
     (license gpl3+)))                             ;some files are under GPLv2+
 
 ;; Use that name to avoid clashes with Guile's 'gettext' procedure.
@@ -139,41 +145,52 @@ translated messages from the catalogs.  Nearly all GNU packages use Gettext.")
     (native-inputs `(("emacs" ,emacs-minimal))) ; for Emacs tools
     (synopsis "Tools and documentation for translation")))
 
+(define-public libtextstyle
+  (package
+    (name "libtextstyle")
+    (version "0.21")
+    (source (origin
+              (inherit (package-source gnu-gettext))
+              (uri (string-append "mirror://gnu/gettext/gettext-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "04kbg1sx0ncfrsbr85ggjslqkzzb243fcw9nyh3rrv1a22ihszf7"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'chdir
+                    (lambda _
+                      (chdir "libtextstyle")
+                      #t)))))
+    ;; libtextstyle bundles libxml2, glib (a small subset thereof), and
+    ;; libcroco, but it purposefully prevents users from using an external
+    ;; copy, to reduce the startup time of programs using libtextstyle.
+    (home-page "https://www.gnu.org/software/gettext/")
+    (synopsis "Text styling library")
+    (description
+     "GNU libtextstyle is a C library that provides an easy way to add styling
+to programs that produce output to a console or terminal emulator window.  It
+allows applications to emit text annotated with styling information, such as
+color, font attributes (weight, posture), or underlining.")
+    (license gpl3+)))
+
 (define-public po4a
   (package
     (name "po4a")
-    (version "0.47")
+    (version "0.57")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://alioth.debian.org/frs/download.php"
-                                  "/file/4142/po4a-" version ".tar.gz"))
+              (uri (string-append "https://github.com/mquinson/po4a/releases/download/v"
+                                  version "/po4a-" version ".tar.gz"))
               (sha256
                (base32
-                "01vm0750aq0h2lphrflv3wq9gz7y0py8frglfpacn58ivyvy242h"))))
+                "15yd27krlpdvjhcnwys6i5k1ww62ifq2yx8k1zxyxiwy84myqmdv"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'set-search-path
-           (lambda _
-             ;; Work around "dotless @INC" build failure.
-             (setenv "PERL5LIB"
-                     (string-append (getcwd) ":"
-                                    (getenv "PERL5LIB")))
-             #t))
-         ;; FIXME: One test fails as we don't have SGMLS.pm
-         (add-before 'check 'disable-sgml-test
-          (lambda _
-            (delete-file "t/20-sgml.t")
-            #t))
-         (add-after 'unpack 'fix-builder
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (substitute* "Po4aBuilder.pm"
-              ;; By default it tries to install into perl's manpath.
-              (("my \\$mandir = .*$")
-               (string-append "my $mandir = \"" (assoc-ref outputs "out")
-                              "/share/man\";\n")))
-            #t))
          (add-after 'install 'wrap-programs
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Make sure all executables in "bin" find the Perl modules
@@ -192,15 +209,35 @@ translated messages from the catalogs.  Nearly all GNU packages use Gettext.")
                        (find-files (string-append (assoc-ref outputs "out")
                                                   "/share/man")
                                    ".*\\.gz$"))
+             #t))
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "." ".*\\.xml(-good)?")
+               (("http://www.oasis-open.org/docbook/xml/4.1.2/")
+                (string-append (assoc-ref inputs "docbook-xml")
+                               "/xml/dtd/docbook/")))
+             #t))
+         (add-before 'check 'disable-failing-tests
+           (lambda _
+             ;; FIXME: ‘Files ../t-03-asciidoc/Titles.po and Titles.po differ’.
+             (delete-file "t/03-asciidoc.t")
+
+             ;; FIXME: these tests require SGMLS.pm.
+             (delete-file "t/01-classes.t")
+             (delete-file "t/16-sgml.t")
+
              #t)))))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("perl-module-build" ,perl-module-build)
        ("docbook-xsl" ,docbook-xsl)
-       ("docbook-xml" ,docbook-xml) ;for tests
-       ("texlive" ,texlive-tiny) ;for tests
        ("libxml2" ,libxml2)
-       ("xsltproc" ,libxslt)))
+       ("xsltproc" ,libxslt)
+
+       ;; For tests.
+       ("docbook-xml" ,docbook-xml-4.1.2)
+       ("perl-yaml-tiny" ,perl-yaml-tiny)
+       ("texlive" ,texlive-tiny)))
     (home-page "https://po4a.org/")
     (synopsis "Scripts to ease maintenance of translations")
     (description