;;; 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.