diff options
Diffstat (limited to 'gnu/packages/xfig.scm')
-rw-r--r-- | gnu/packages/xfig.scm | 215 |
1 files changed, 115 insertions, 100 deletions
diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm index 8efe561433..9d07a5cd42 100644 --- a/gnu/packages/xfig.scm +++ b/gnu/packages/xfig.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2022 Ivan Vilata i Balaguer <ivan@selidor.net> +;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,20 +23,26 @@ (define-module (gnu packages xfig) #:use-module (guix packages) - #:use-module ((guix licenses) #:select (bsd-2)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages freedesktop) #:use-module (gnu packages ghostscript) #:use-module (gnu packages xorg) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages image) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages netpbm) #:use-module (gnu packages compression)) -(define-public xfig +(define-public fig2dev (package - (name "xfig") - (version "3.2.8b") + (name "fig2dev") + (version "3.2.9") (source (origin (method url-fetch) @@ -43,115 +50,123 @@ name "-" version ".tar.xz")) (sha256 (base32 - "0fndgbm1mkqb1sn2v2kj3nx9mxj70jbp31y2bjvzcmmkry0q3k5j")))) + "1cch429zbmrg2zy1mkx9xwnpvkjhmlw40c88bvi2virws744dqhm")))) (build-system gnu-build-system) - (native-inputs - ;; For tests. - (list desktop-file-utils ghostscript)) - (inputs - `(("libxaw3d" ,libxaw3d) - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) - ("libxpm" ,libxpm) - ("libx11" ,libx11) - ("libxt" ,libxt))) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'install 'strip-bogus-exec-prefix - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "xfig.desktop" - ;; The patch-dot-desktop-files phase requires a relative name. - (("Exec=/usr/bin/xfig") "Exec=xfig")) - #t))))) - (home-page "https://mcj.sourceforge.net/") - (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))) + (list + #:modules '((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26)) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs #:allow-other-keys) + (let ((programs + (find-files (string-append #$output "/bin"))) + (path + (search-path-as-list + '("bin") + (map (cut assoc-ref inputs <>) + (list "ghostscript" "imagemagick"))))) + (for-each (lambda (program) + (wrap-program program + `("PATH" ":" prefix ,path))) + programs))))))) + (inputs + (list libpng zlib + ;; Quoth INSTALL: + ;; “To run fig2dev, the packages + ;; ghostscript, and one out of + ;; netpbm | ImageMagick | GraphicsMagick + ;; are needed to produce various bitmap output formats, or process + ;; fig files with embedded images.” + ghostscript + imagemagick)) + (native-inputs + ;; XXX: Tests fail if netpbm is absent. + (list netpbm)) + (home-page "https://sourceforge.net/projects/mcj") + (synopsis "Translate Fig to other graphic description formats") + (description "Fig2dev is a set of tools for creating TeX documents with +graphics which are portable, in the sense that they can be printed in a wide +variety of environments.") + (license + (license:non-copyleft "file://Makefile.am" + "See <https://spdx.org/licenses/Xfig.html>.")))) (define-public transfig + (deprecated-package "transfig" fig2dev)) + +(define-public xfig (package - (name "transfig") - (version "3.2.5e") + (name "xfig") + (version "3.2.9") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/mcj/mcj-source/transfig." - version ".tar.gz")) + (uri (string-append "mirror://sourceforge/mcj/" + name "-" version ".tar.xz")) (sha256 (base32 - "0i3p7qmg2w8qrad3pn42b0miwarql7yy0gpd49b1bpal6bqsiicf")) + "1xy2zqbd1wn2fij95kgnj39850r7xk74kvx7kp0dxhmvs429vv8k")) + ;; TODO: Remove these patches and snippet when updating, + ;; upstreamed since commit `84375ac05e923b46bbacc8b336b0dfbe29497b6b'. (patches - (search-patches - "transfig-gcc10-fno-common.patch")))) ; fix GCC10 build + (search-patches "xfig-Enable-error-message-for-missing-libraries.patch" + "xfig-Use-pkg-config-to-set-fontconfig-CFLAGS-and-LIBS.patch" + "xfig-Fix-double-free-when-requesting-MediaBox.patch")) + (modules '((guix build utils))) + (snippet + ;; The patch-dot-desktop-files phase requires a relative name. + #~(begin + (substitute* "xfig.desktop" + (("^(Exec=)/usr/bin/" _ key) key)) + ;; This forces autoreconf to be invoked, needed for patches + ;; to be effective. + (delete-file "configure"))))) (build-system gnu-build-system) + (arguments + (list + #:modules '((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26)) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs #:allow-other-keys) + (let ((path + (search-path-as-list + '("bin") + (map (cut assoc-ref inputs <>) + (list "ghostscript" "fig2dev"))))) + (wrap-program (string-append #$output "/bin/xfig") + `("PATH" ":" prefix ,path)))))))) (native-inputs - (list imake makedepend)) + (list pkg-config + ;; TODO: Remove the import on (gnu packages autotools) + ;; and related packages in the next update. + autoconf automake libtool + ;; For tests. + desktop-file-utils)) (inputs - `(("xfig" ,xfig) - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) - ("libxpm" ,libxpm) - ("libx11" ,libx11) - ("zlib" ,zlib))) - (arguments - `(#:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((imake (assoc-ref inputs "imake")) - (out (assoc-ref outputs "out"))) - (substitute* '("fig2dev/Imakefile" - "transfig/Imakefile") - (("XCOMM (BINDIR = )[[:graph:]]*" _ front) - (string-append front out "/bin")) - (("XCOMM USEINLINE") "USEINLINE") - ;; The variable name is deceptive. The directory is used as an - ;; installation path for bitmaps. - (("(XFIGLIBDIR =[[:blank:]]*)[[:graph:]]*" _ front) - (string-append front out "/lib")) - (("(XPMLIBDIR = )[[:graph:]]*" _ front) - (string-append front (assoc-ref inputs "libxpm") "/lib")) - (("(XPMINC = -I)[[:graph:]]*" _ front) - (string-append front (assoc-ref inputs "libxpm") "/include/X11")) - (("/usr/local/lib/fig2dev") (string-append out "/lib"))) - ;; The -a argument is required in order to pick up the correct paths - ;; to several X header files. - (invoke "xmkmf" "-a") - (substitute* '("Makefile" - "fig2dev/Makefile" - "fig2dev/dev/Makefile" - "transfig/Makefile") - ;; These imake variables somehow remain undefined - (("DefaultGcc2[[:graph:]]*Opt") "-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)) - ;; The "l" option was silently ignored until binutils 2.36, - ;; where it got a different purpose. So remove it to avoid - ;; "ar: libdeps specified more than once". - (("((AR|MODAR) = ar )clq" _ front) - (string-append front "cq"))) - #t))) - (add-after 'install 'install/doc - (lambda _ - (invoke "make" "install.man")))))) + (list ghostscript + fig2dev + libxaw3d + libjpeg-turbo + libpng + libxpm + libx11 + libxft + libxt)) (home-page "https://mcj.sourceforge.net/") - (synopsis "Create portable LaTeX figures") + (synopsis "Interactive drawing tool") (description - "Transfig creates a makefile to translate figures described in Fig code -or PIC into a specified LaTeX graphics language. PIC files are identified by -the suffix \".pic\"; Fig files can be specified either with or without the -suffix \".fig\". Transfig also creates a TeX macro file appropriate to the -target language.") - (license bsd-2))) + "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 + (license:non-copyleft "file://Makefile.am" + "See <https://spdx.org/licenses/Xfig.html>.")))) |