gnu: r-inline: Update to 0.3.16.
[jackhill/guix/guix.git] / gnu / packages / lout.scm
index b71abd8..ac66b4e 100644 (file)
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages ghostscript))
 
 (define-public lout
-  ;; This one is a bit tricky, because it doesn't follow the GNU Build System
-  ;; rules.  Instead, it has a makefile that has to be patched to set the
-  ;; prefix, etc., and it has no makefile rules to build its doc.
-  (let ((configure-phase
-         ')
-        (install-man-phase
-         ')
-        (doc-phase
-         '))
-   (package
+  (package
     (name "lout")
     (version "3.40")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://savannah/lout/lout-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
-    (build-system gnu-build-system)               ; actually, just a makefile
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/lout/lout-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
+    (build-system gnu-build-system)     ; actually, just a makefile
     (outputs '("out" "doc"))
     (native-inputs
      `(("ghostscript" ,ghostscript)))
                   (guix build gnu-build-system)
                   (srfi srfi-1))        ; we need SRFI-1
        #:tests? #f                      ; no "check" target
-
-       ;; Customize the build phases.
        #:phases
        (modify-phases %standard-phases
+         ;; This package is a bit tricky, because it doesn't follow the GNU
+         ;; Build System rules.  Instead, it has a makefile that has to be
+         ;; patched to set the prefix, etc., and it has no makefile rules to
+         ;; build its documentation.
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
                (mkdir (string-append out "/bin"))
                (mkdir (string-append out "/lib"))
                (mkdir (string-append out "/man"))
-               (mkdir-p (string-append doc "/share/doc/lout")))
-             #t))
+               (mkdir-p (string-append doc "/share/doc/lout"))
+               #t)))
          (add-after 'install 'install-man-pages
            (lambda* (#:key outputs #:allow-other-keys)
-             (zero? (system* "make" "installman"))))
+             (invoke "make" "installman")
+             #t))
          (add-after 'install 'install-doc
            (lambda* (#:key outputs #:allow-other-keys)
-             (define out
-               (assoc-ref outputs "doc"))
-
-             (setenv "PATH"
-                     (string-append (assoc-ref outputs "out")
-                                    "/bin:" (getenv "PATH")))
-             (chdir "doc")
-             (every (lambda (doc)
-                      (format #t "doc: building `~a'...~%" doc)
-                      (with-directory-excursion doc
-                        (let ((file (string-append out "/share/doc/lout/"
-                                                   doc ".ps")))
-                          (and (or (file-exists? "outfile.ps")
-                                   (zero? (system* "lout" "-r4" "-o"
-                                                   "outfile.ps" "all")))
-                               (begin
-                                 (copy-file "outfile.ps" file)
-                                 #t)
-                               (zero? (system* "ps2pdf"
-                                               "-dPDFSETTINGS=/prepress"
-                                               "-sPAPERSIZE=a4"
-                                               file
-                                               (string-append out "/share/doc/lout/"
-                                                              doc ".pdf")))))))
-                    '("design" "expert" "slides" "user")))))))
+             (let ((out (assoc-ref outputs "doc")))
+               (setenv "PATH"
+                       (string-append (assoc-ref outputs "out")
+                                      "/bin:" (getenv "PATH")))
+               (with-directory-excursion "doc"
+                 (every (lambda (doc)
+                          (format #t "doc: building `~a'...~%" doc)
+                          (with-directory-excursion doc
+                            (let ((file (string-append out "/share/doc/lout/"
+                                                       doc ".ps")))
+                              (unless (file-exists? "outfile.ps")
+                                (invoke "lout" "-r4" "-o"
+                                        "outfile.ps" "all"))
+                              (copy-file "outfile.ps" file)
+                              (invoke "ps2pdf"
+                                      "-dPDFSETTINGS=/prepress"
+                                      "-sPAPERSIZE=a4"
+                                      file
+                                      (string-append out "/share/doc/lout/"
+                                                     doc ".pdf")))))
+                        '("design" "expert" "slides" "user")))
+               #t))))))
     (synopsis "Document layout system")
     (description
-"The Lout document formatting system reads a high-level description of
+     "The Lout document formatting system reads a high-level description of
 a document similar in style to LaTeX and produces a PostScript or plain text
 output file.
 
@@ -123,4 +115,4 @@ TeX macros because Lout is a high-level, purely functional language, the
 outcome of an eight-year research project that went back to the
 beginning.")
     (license gpl3+)
-    (home-page "http://savannah.nongnu.org/projects/lout/"))))
+    (home-page "https://savannah.nongnu.org/projects/lout/")))