gnu: upower: Enable GObject introspection.
[jackhill/guix/guix.git] / gnu / packages / netpbm.scm
index 64db777..475635e 100644 (file)
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages compression)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages ghostscript)
-  #:use-module (gnu packages libjpeg)
-  #:use-module (gnu packages libpng)
-  #:use-module (gnu packages libtiff)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
+  #:use-module (guix build-system gnu)
   #:use-module ((guix licenses) #:select (gpl2))
   #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix svn-download))
 
 (define-public netpbm
   (package
    (name "netpbm")
    (version "10.61.01")
    (source (origin
-            (method url-fetch)
-            ;; The "super-stable" and "stable" versions do not compile
-            ;; with newer libpng; we need the "advanced" version. The tarball
-            ;; on the server is generated by sourceforge from the "advanced"
-            ;; branch of the subversion repository:
-            ;; svn checkout http://netpbm.svn.sourceforge.net/svnroot/netpbm/advanced netpbm-version
-            (uri (string-append "http://www.multiprecision.org/guix/netpbm-"
-                                version ".tar.xz"))
-            (sha256 (base32
-                     "10nwvxc85kr6vhlhhahagy7s9848bbixl54b0p4ppim4g0dl10jz"))))
+            (method svn-fetch)
+            ;; At the time of first packaging, the "super-stable" and
+            ;; "stable" versions did not compile with newer libpng;
+            ;; we needed the "advanced" version.
+            ;; The currently highest stable version is 10.47.53,
+            ;; the currently highest advanced version is 10.69.4,
+            ;; svn release 2397.
+            ;; To determine the correct release: "svn log version.mk".
+            (uri (svn-reference
+                   (url "http://svn.code.sf.net/p/netpbm/code/advanced")
+                   (revision 1832)))
+            (sha256
+              (base32
+               "1mj1pqq18yj0yb6l24zfjls7axhqmiv0pvcaabl5xvc4a0dm543j"))
+            (file-name (string-append name "-" version "-checkout"))
+            (modules '((guix build utils)))
+            (snippet
+             ;; Remove non-FSDG-compliant code.
+             '(begin
+                (use-modules (guix build utils))
+
+                (define-syntax drop
+                  (syntax-rules (in)
+                    ;; Remove PROGRAM from DIRECTORY/Makefile, and remove
+                    ;; DIRECTORY/PROGRAM and DIRECTORY/PROGRAM.c.
+                    ((_ program ... in directory)
+                     (begin
+                       (substitute* (string-append directory "/Makefile")
+                         ((program) "") ...)
+
+                       (let* ((subdir (string-append directory "/" program))
+                              (dot-c  (string-append subdir ".c")))
+                         (when (file-exists? subdir)
+                           (delete-file-recursively subdir))
+                         (when (file-exists? dot-c)
+                           (delete-file dot-c)))
+
+                       ...))))
+
+                ;; Drop advertisement for non-free program.
+                (drop "hpcdtoppm" in "converter/ppm")
+
+                ;; Drop programs without a license, see
+                ;; <http://packages.debian.org/changelogs/pool/main/n/netpbm-free/netpbm-free_10.0-12.2/libnetpbm10.copyright>.
+                (drop "pbmto4425" "pbmtoln03" "pbmtolps" "pbmtopk" "pktopbm"
+                      in "converter/pbm")
+                (drop "spottopgm" in "converter/pgm")
+                (drop "ppmtopjxl" in "converter/ppm")))))
    (build-system gnu-build-system)
    (inputs `(("ghostscript" ,ghostscript)
              ("libjpeg" ,libjpeg)
        'configure
        (lambda _
         (copy-file "config.mk.in" "config.mk")
+        (chmod "config.mk" #o664)
         (let ((f (open-file "config.mk" "a")))
          (display "CC=gcc\n" f)
          (display "CFLAGS_SHLIB += -fPIC\n" f)
          (display "TIFFLIB = libtiff.so\n" f)
          (display "JPEGLIB = libjpeg.so\n" f)
          (display "ZLIB = libz.so\n" f)
-         (close-port f)
-         ;; drop advertisement for non-free program
-         (substitute* "converter/ppm/Makefile" (("hpcdtoppm") ""))
-         ;; drop programs without license, see
-         ;; http://packages.debian.org/changelogs/pool/main/n/netpbm-free/netpbm-free_10.0-12.2/libnetpbm10.copyright
-         (substitute* "converter/pbm/Makefile"
-           (("pbmto4425") "")
-           (("pbmtoln03") "")
-           (("pbmtolps") "")
-           (("pbmtopk") "")
-           (("pktopbm") ""))
-         (substitute* "converter/pgm/Makefile" (("spottopgm") ""))
-         (substitute* "converter/ppm/Makefile" (("ppmtopjxl") ""))))
+         (display (string-append "LDFLAGS += -Wl,-rpath=" %output "/lib") f)
+         (close-port f)))
       (alist-cons-before
        'check 'setup-check
        (lambda _
            (for-each delete-file
                      '("config_template" "pkginfo" "README" "VERSION")))))
       %standard-phases)))))
-   (synopsis "Netpbm, a toolkit for manipulation of images")
+   (synopsis "Toolkit for manipulation of images")
    (description
     "Netpbm is a toolkit for the manipulation of graphic images, including
 the conversion of images between a variety of different formats.