aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2018-04-13 09:45:55 +0300
committerEfraim Flashner <efraim@flashner.co.il>2018-04-13 10:53:34 +0300
commita5d4c96b8d90b8bb87e07bd6a7be78991db91bc9 (patch)
tree279453ee7af0528f1301afa7eac7ecc69493e607
parentde7f234a3a3e583e7af832e956b44455c71dc5cb (diff)
downloadgnu-guix-a5d4c96b8d90b8bb87e07bd6a7be78991db91bc9.tar
gnu-guix-a5d4c96b8d90b8bb87e07bd6a7be78991db91bc9.tar.gz
gnu: freeimage: Remove bundled libraries.
This fixes bug #28261. * gnu/packages/image.scm (freeimage)[source]: Remove bundled libraries. [arguments]: Replace 'configure phase, add phase to replace unbuildable files with empty ones. Adjust makeflags to new inputs. [native-inputs]: Add pkg-config. [inputs]: Add libjpeg, libjxr, libpng, libraw, libtiff, libwebp, openexr, openjpeg, zlib. [supported-systems]: Add mips64el-linux as a supported system.
-rw-r--r--gnu/packages/image.scm50
1 files changed, 44 insertions, 6 deletions
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 1234203feb..e27b9223dd 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -55,6 +55,7 @@
#:use-module (gnu packages maths)
#:use-module (gnu packages mcrypt)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages xml)
@@ -717,26 +718,63 @@ supplies a generic doubly-linked list and some string functions.")
(sha256
(base32
"12bz57asdcfsz3zr9i9nska0fb6h3z2aizy412qjqkixkginbz7v"))
- (patches (search-patches "freeimage-CVE-2015-0852.patch"
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each
+ (lambda (dir)
+ (delete-file-recursively (string-append "Source/" dir)))
+ '("LibJPEG" "LibJXR" "LibOpenJPEG" "LibPNG" "LibRawLite"
+ "LibWebP" "OpenEXR" "ZLib"))))
+ (patches (search-patches "freeimage-unbundle.patch"
+ "freeimage-CVE-2015-0852.patch"
"freeimage-CVE-2016-5684.patch"
"freeimage-fix-build-with-gcc-5.patch"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
- (delete 'configure)
+ ;; According to Fedora these files depend on private headers, but their
+ ;; presence is required for building, so we replace them with empty files.
+ (add-after 'unpack 'delete-unbuildable-files
+ (lambda _
+ (for-each (lambda (file)
+ (delete-file file)
+ (close (open file O_CREAT)))
+ '("Source/FreeImage/PluginG3.cpp"
+ "Source/FreeImageToolkit/JPEGTransform.cpp"))
+ #t))
+ ;; These scripts generate the Makefiles.
+ (replace 'configure
+ (lambda _
+ (invoke "sh" "gensrclist.sh")
+ (invoke "sh" "genfipsrclist.sh")))
(add-before 'build 'patch-makefile
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "Makefile.gnu"
(("/usr") (assoc-ref outputs "out"))
(("-o root -g root") ""))
#t)))
- #:make-flags '("CC=gcc")
+ #:make-flags
+ (list "CC=gcc"
+ ;; We need '-fpermissive' for Source/FreeImage.h.
+ ;; libjxr doesn't have a pkg-config file.
+ (string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden -fpermissive "
+ "-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib"))
#:tests? #f)) ; no check target
(native-inputs
- `(("unzip" ,unzip)))
- ;; Fails to build on MIPS due to assembly code in the source.
- (supported-systems (delete "mips64el-linux" %supported-systems))
+ `(("pkg-config" ,pkg-config)
+ ("unzip" ,unzip)))
+ (inputs
+ `(("libjpeg" ,libjpeg)
+ ("libjxr" ,libjxr)
+ ("libpng" ,libpng)
+ ("libraw" ,libraw)
+ ("libtiff" ,libtiff)
+ ("libwebp" ,libwebp)
+ ("openexr" ,openexr)
+ ("openjpeg" ,openjpeg)
+ ("zlib" ,zlib)))
(synopsis "Library for handling popular graphics image formats")
(description
"FreeImage is a library for developers who would like to support popular