diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2018-04-13 09:45:55 +0300 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2018-04-13 10:53:34 +0300 |
commit | a5d4c96b8d90b8bb87e07bd6a7be78991db91bc9 (patch) | |
tree | 279453ee7af0528f1301afa7eac7ecc69493e607 | |
parent | de7f234a3a3e583e7af832e956b44455c71dc5cb (diff) | |
download | gnu-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.scm | 50 |
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 |