summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/xfig.scm131
2 files changed, 132 insertions, 0 deletions
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 <bavier@member.fsf.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(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)))