From b3f3fb825e5614ed373429c4e664be75eef92472 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 10 Oct 2014 13:10:42 -0500 Subject: [PATCH] gnu: Add xfig. * gnu/packages/xfig.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/xfig.scm | 131 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 gnu/packages/xfig.scm diff --git a/gnu-system.am b/gnu-system.am index 1e875becb7..6028527e44 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -257,6 +257,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/which.scm \ gnu/packages/wordnet.scm \ gnu/packages/wv.scm \ + gnu/packages/xfig.scm \ gnu/packages/xiph.scm \ gnu/packages/xlockmore.scm \ gnu/packages/xml.scm \ diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm new file mode 100644 index 0000000000..7cb22586d5 --- /dev/null +++ b/gnu/packages/xfig.scm @@ -0,0 +1,131 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages xfig) + #:use-module (guix packages) + #:use-module ((guix licenses) #:select (bsd-2)) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages xorg) + #:use-module (gnu packages image) + #:use-module (gnu packages groff) + #:use-module (gnu packages compression)) + +(define-public xfig + (package + (name "xfig") + (version "3.2.5c") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/mcj/mcj-source/xfig." + version ".full.tar.gz")) + (sha256 + (base32 + "1yd1jclvw5w3ja4jjzr1ysbn8iklh88wq84jn9d1gavrbfbqyqpa")))) + (build-system gnu-build-system) + (native-inputs + `(("imake" ,imake) + ("makedepend" ,makedepend) + ("groff" ,groff))) ;for creating some doc + (inputs + `(("libxaw3d" ,libxaw3d) + ;; Requires libjpeg>=9a, otherwise jmorecfg.h define an enum FALSE that + ;; conflicts with the FALSE macro from X11/Intrinsic.h + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libxpm" ,libxpm) + ("libx11" ,libx11) + ("libxmu" ,libxmu) + ("libxt" ,libxt) + ("zlib" ,zlib))) + (arguments + `(#:tests? #f + #:phases + (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((imake (assoc-ref inputs "imake")) + (out (assoc-ref outputs "out"))) + (substitute* "Imakefile" + (("XCOMM (BINDIR = )[[:graph:]]*" _ front) + (string-append front out "/bin")) + (("(PNGLIBDIR = )[[:graph:]]*" _ front) + (string-append front (assoc-ref inputs "libpng") "/lib")) + (("(PNGINC = -I)[[:graph:]]*" _ front) + (string-append front (assoc-ref inputs "libpng") "/include")) + (("(JPEGLIBDIR = )[[:graph:]]*" _ front) + (string-append front (assoc-ref inputs "libjpeg") "/lib")) + (("(JPEGINC = -I)[[:graph:]]*" _ front) + (string-append front (assoc-ref inputs "libjpeg") "/include")) + (("(ZLIBDIR = )[[:graph:]]*" _ front) + (string-append front (assoc-ref inputs "zlib") "/lib")) + (("(XPMLIBDIR = )[[:graph:]]*" _ front) + (string-append front (assoc-ref inputs "libxpm") "/lib")) + (("(XPMINC = -I)[[:graph:]]*" _ front) + (string-append front (assoc-ref inputs "libxpm") "/include")) + (("(XFIGLIBDIR = )[[:graph:]]*" _ front) + (string-append front out "/lib")) + (("(XFIGDOCDIR = )[[:graph:]]*" _ front) + (string-append front out "/share/doc")) + (("XCOMM USEINLINE") "USEINLINE")) + ;; The -a argument is required in order to pick up the correct paths + ;; to several X header files. + (zero? (system* "xmkmf" "-a")) + ;; Reset some variables that are inherited from imake templates + (substitute* "Makefile" + ;; This imake variable somehow remains undefined + (("DefaultGcc2AMD64Opt") "-O2") + ;; Reset a few variable defaults that are set in imake templates + ((imake) out) + (("(MANPATH = )[[:graph:]]*" _ front) + (string-append front out "/share/man")) + (("(CONFDIR = )([[:graph:]]*)" _ front default) + (string-append front out default))))) + (alist-cons-after + 'install 'install/libs + (lambda _ + (zero? (system* "make" "install.libs"))) + (alist-cons-after + 'install 'install/doc + (lambda _ + (begin + ;; The Doc/xfig_man.html file is expected by the install.html + ;; target, but is not present in the tarball, so generate it. + (use-modules (ice-9 popen)) + (let* ((in (open-pipe* OPEN_READ + "groff" "-mandoc" "-Thtml" + "Doc/xfig.man")) + (out (open-output-file "Doc/xfig_man.html"))) + (begin + (dump-port in out) + (close-pipe in) + (close-port out))) + (zero? (system* "make" "install.doc")))) + %standard-phases))))) + (home-page "http://xfig.org/") + (synopsis "Interactive drawing tool") + (description + "Xfig is an interactive drawing tool which runs under X Window System. +In xfig, figures may be drawn using objects such as circles, boxes, lines, +spline curves, text, etc. It is also possible to import images in formats +such as GIF, JPEG, EPSF (PostScript), etc. Those objects can be created, +deleted, moved or modified. Attributes such as colors or line styles can be +selected in various ways. For text, 35 fonts are available.") + (license bsd-2)))