Merge branch 'core-updates'
This commit is contained in:
commit
72e2815d18
58
gnu/local.mk
58
gnu/local.mk
|
@ -2,7 +2,7 @@
|
|||
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013, 2014, 2015, 2016, 2017 Andreas Enge <andreas@enge.fr>
|
||||
# Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
# Copyright © 2013, 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
|
||||
# Copyright © 2013, 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
|
||||
# Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
|
||||
# Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
|
||||
# Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org>
|
||||
|
@ -533,7 +533,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/bcftools-regidx-unsigned-char.patch \
|
||||
%D%/packages/patches/binutils-ld-new-dtags.patch \
|
||||
%D%/packages/patches/binutils-loongson-workaround.patch \
|
||||
%D%/packages/patches/binutils-mips-bash-bug.patch \
|
||||
%D%/packages/patches/blast+-fix-makefile.patch \
|
||||
%D%/packages/patches/byobu-writable-status.patch \
|
||||
%D%/packages/patches/cairo-CVE-2016-9082.patch \
|
||||
|
@ -561,7 +560,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/cool-retro-term-memory-leak-1.patch \
|
||||
%D%/packages/patches/cool-retro-term-remove-non-free-fonts.patch \
|
||||
%D%/packages/patches/coreutils-cut-huge-range-test.patch \
|
||||
%D%/packages/patches/coreutils-fix-cross-compilation.patch \
|
||||
%D%/packages/patches/cpio-CVE-2016-2037.patch \
|
||||
%D%/packages/patches/cpufrequtils-fix-aclocal.patch \
|
||||
%D%/packages/patches/cracklib-CVE-2016-6318.patch \
|
||||
|
@ -594,9 +592,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/emacs-source-date-epoch.patch \
|
||||
%D%/packages/patches/erlang-man-path.patch \
|
||||
%D%/packages/patches/eudev-rules-directory.patch \
|
||||
%D%/packages/patches/eudev-conflicting-declaration.patch \
|
||||
%D%/packages/patches/evilwm-lost-focus-bug.patch \
|
||||
%D%/packages/patches/expat-CVE-2016-0718-fix-regression.patch \
|
||||
%D%/packages/patches/exim-CVE-2017-1000369.patch \
|
||||
%D%/packages/patches/fastcap-mulGlobal.patch \
|
||||
%D%/packages/patches/fastcap-mulSetup.patch \
|
||||
|
@ -608,22 +604,20 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/fcgi-2.4.0-gcc44-fixes.patch \
|
||||
%D%/packages/patches/fcgi-2.4.0-poll.patch \
|
||||
%D%/packages/patches/findutils-localstatedir.patch \
|
||||
%D%/packages/patches/findutils-gnulib-multi-core.patch \
|
||||
%D%/packages/patches/findutils-test-xargs.patch \
|
||||
%D%/packages/patches/flint-ldconfig.patch \
|
||||
%D%/packages/patches/fltk-shared-lib-defines.patch \
|
||||
%D%/packages/patches/fltk-xfont-on-demand.patch \
|
||||
%D%/packages/patches/fontconfig-charwidth-symbol-conflict.patch \
|
||||
%D%/packages/patches/fontconfig-path-max.patch \
|
||||
%D%/packages/patches/fontforge-svg-modtime.patch \
|
||||
%D%/packages/patches/freeimage-CVE-2015-0852.patch \
|
||||
%D%/packages/patches/freeimage-CVE-2016-5684.patch \
|
||||
%D%/packages/patches/freeimage-fix-build-with-gcc-5.patch \
|
||||
%D%/packages/patches/freetype-CVE-2017-8105.patch \
|
||||
%D%/packages/patches/freetype-CVE-2017-8287.patch \
|
||||
%D%/packages/patches/fuse-overlapping-headers.patch \
|
||||
%D%/packages/patches/gawk-shell.patch \
|
||||
%D%/packages/patches/gcc-arm-bug-71399.patch \
|
||||
%D%/packages/patches/gcc-arm-link-spec-fix.patch \
|
||||
%D%/packages/patches/gcc-asan-powerpc-missing-include.patch \
|
||||
%D%/packages/patches/gcc-cross-environment-variables.patch \
|
||||
%D%/packages/patches/gcc-libvtv-runpath.patch \
|
||||
%D%/packages/patches/gcc-strmov-store-file-names.patch \
|
||||
|
@ -645,14 +639,13 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/gegl-CVE-2012-4433.patch \
|
||||
%D%/packages/patches/gemma-intel-compat.patch \
|
||||
%D%/packages/patches/geoclue-config.patch \
|
||||
%D%/packages/patches/gettext-multi-core.patch \
|
||||
%D%/packages/patches/gettext-gnulib-multi-core.patch \
|
||||
%D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \
|
||||
%D%/packages/patches/ghostscript-CVE-2013-5653.patch \
|
||||
%D%/packages/patches/ghostscript-CVE-2015-3228.patch \
|
||||
%D%/packages/patches/ghostscript-CVE-2016-7976.patch \
|
||||
%D%/packages/patches/ghostscript-CVE-2016-7978.patch \
|
||||
%D%/packages/patches/ghostscript-CVE-2016-7979.patch \
|
||||
%D%/packages/patches/ghostscript-CVE-2016-8602.patch \
|
||||
%D%/packages/patches/ghostscript-CVE-2017-8291.patch \
|
||||
%D%/packages/patches/ghostscript-no-header-id.patch \
|
||||
%D%/packages/patches/ghostscript-no-header-uuid.patch \
|
||||
%D%/packages/patches/ghostscript-no-header-creationdate.patch \
|
||||
%D%/packages/patches/ghostscript-runpath.patch \
|
||||
%D%/packages/patches/glib-networking-ssl-cert-file.patch \
|
||||
%D%/packages/patches/glib-tests-timer.patch \
|
||||
|
@ -685,10 +678,13 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/graphicsmagick-CVE-2017-12936.patch \
|
||||
%D%/packages/patches/graphicsmagick-CVE-2017-12937.patch \
|
||||
%D%/packages/patches/graphite2-ffloat-store.patch \
|
||||
%D%/packages/patches/grep-gnulib-lock.patch \
|
||||
%D%/packages/patches/grep-timing-sensitive-test.patch \
|
||||
%D%/packages/patches/groff-source-date-epoch.patch \
|
||||
%D%/packages/patches/gsl-test-i686.patch \
|
||||
%D%/packages/patches/gspell-dash-test.patch \
|
||||
%D%/packages/patches/guile-1.8-cpp-4.5.patch \
|
||||
%D%/packages/patches/guile-2.2-default-utf8.patch \
|
||||
%D%/packages/patches/guile-bytestructures-name-clash.patch \
|
||||
%D%/packages/patches/guile-default-utf8.patch \
|
||||
%D%/packages/patches/guile-linux-syscalls.patch \
|
||||
|
@ -725,6 +721,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/icu4c-reset-keyword-list-iterator.patch \
|
||||
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
|
||||
%D%/packages/patches/ilmbase-fix-tests.patch \
|
||||
%D%/packages/patches/intltool-perl-compatibility.patch \
|
||||
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
|
||||
%D%/packages/patches/jacal-fix-texinfo.patch \
|
||||
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
|
||||
|
@ -773,6 +770,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/libgit2-0.25.1-mtime-0.patch \
|
||||
%D%/packages/patches/libgdata-fix-tests.patch \
|
||||
%D%/packages/patches/libgdata-glib-duplicate-tests.patch \
|
||||
%D%/packages/patches/libffi-3.2.1-complex-alpha.patch \
|
||||
%D%/packages/patches/libjxr-fix-function-signature.patch \
|
||||
%D%/packages/patches/libjxr-fix-typos.patch \
|
||||
%D%/packages/patches/liboop-mips64-deplibs-fix.patch \
|
||||
|
@ -789,27 +787,10 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/libssh-hostname-parser-bug.patch \
|
||||
%D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch \
|
||||
%D%/packages/patches/libtar-CVE-2013-4420.patch \
|
||||
%D%/packages/patches/libtasn1-CVE-2017-6891.patch \
|
||||
%D%/packages/patches/libtasn1-CVE-2017-10790.patch \
|
||||
%D%/packages/patches/libtasn1-CVE-2017-10790.patch \
|
||||
%D%/packages/patches/libtheora-config-guess.patch \
|
||||
%D%/packages/patches/libtiff-CVE-2016-10092.patch \
|
||||
%D%/packages/patches/libtiff-CVE-2016-10093.patch \
|
||||
%D%/packages/patches/libtiff-CVE-2016-10094.patch \
|
||||
%D%/packages/patches/libtiff-CVE-2016-10688.patch \
|
||||
%D%/packages/patches/libtiff-CVE-2017-5225.patch \
|
||||
%D%/packages/patches/libtiff-CVE-2017-9936.patch \
|
||||
%D%/packages/patches/libtiff-assertion-failure.patch \
|
||||
%D%/packages/patches/libtiff-divide-by-zero-ojpeg.patch \
|
||||
%D%/packages/patches/libtiff-divide-by-zero-tiffcp.patch \
|
||||
%D%/packages/patches/libtiff-divide-by-zero-tiffcrop.patch \
|
||||
%D%/packages/patches/libtiff-divide-by-zero.patch \
|
||||
%D%/packages/patches/libtiff-heap-overflow-pixarlog-luv.patch \
|
||||
%D%/packages/patches/libtiff-heap-overflow-tif-dirread.patch \
|
||||
%D%/packages/patches/libtiff-heap-overflow-tiffcp.patch \
|
||||
%D%/packages/patches/libtiff-heap-overflow-tiffcrop.patch \
|
||||
%D%/packages/patches/libtiff-invalid-read.patch \
|
||||
%D%/packages/patches/libtiff-null-dereference.patch \
|
||||
%D%/packages/patches/libtiff-tiffcp-underflow.patch \
|
||||
%D%/packages/patches/libtiff-tiffgetfield-bugs.patch \
|
||||
%D%/packages/patches/libtiff-tiffycbcrtorgb-integer-overflow.patch \
|
||||
%D%/packages/patches/libtiff-tiffycbcrtorgbinit-integer-overflow.patch \
|
||||
|
@ -817,6 +798,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/libtorrent-rasterbar-boost-compat.patch \
|
||||
%D%/packages/patches/libtool-skip-tests2.patch \
|
||||
%D%/packages/patches/libunwind-CVE-2015-3239.patch \
|
||||
%D%/packages/patches/libunistring-gnulib-multi-core.patch \
|
||||
%D%/packages/patches/libusb-0.1-disable-tests.patch \
|
||||
%D%/packages/patches/libvpx-CVE-2016-2818.patch \
|
||||
%D%/packages/patches/libxcb-python-3.5-compat.patch \
|
||||
|
@ -855,11 +837,11 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/mcrypt-CVE-2012-4409.patch \
|
||||
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
|
||||
%D%/packages/patches/mcrypt-CVE-2012-4527.patch \
|
||||
%D%/packages/patches/mesa-fix-32bit-test-failures.patch \
|
||||
%D%/packages/patches/mesa-skip-disk-cache-test.patch \
|
||||
%D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \
|
||||
%D%/packages/patches/metabat-remove-compilation-date.patch \
|
||||
%D%/packages/patches/metabat-fix-compilation.patch \
|
||||
%D%/packages/patches/metabat-fix-boost-issue.patch \
|
||||
%D%/packages/patches/mhash-keygen-test-segfault.patch \
|
||||
%D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \
|
||||
%D%/packages/patches/mpc123-initialize-ao.patch \
|
||||
|
@ -916,6 +898,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/patchelf-rework-for-arm.patch \
|
||||
%D%/packages/patches/patchutils-xfail-gendiff-tests.patch \
|
||||
%D%/packages/patches/patch-hurd-path-max.patch \
|
||||
%D%/packages/patches/pcre-CVE-2017-7186.patch \
|
||||
%D%/packages/patches/pcre2-CVE-2017-7186.patch \
|
||||
%D%/packages/patches/pcre2-CVE-2017-8786.patch \
|
||||
%D%/packages/patches/perl-file-path-CVE-2017-6512.patch \
|
||||
|
@ -926,7 +909,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
|
||||
%D%/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \
|
||||
%D%/packages/patches/perl-net-amazon-s3-moose-warning.patch \
|
||||
%D%/packages/patches/perl-net-ssleay-disable-ede-test.patch \
|
||||
%D%/packages/patches/perl-net-dns-resolver-programmable-fix.patch \
|
||||
%D%/packages/patches/perl-no-sys-dirs.patch \
|
||||
%D%/packages/patches/perl-module-pluggable-search.patch \
|
||||
|
@ -945,8 +927,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/plotutils-libpng-jmpbuf.patch \
|
||||
%D%/packages/patches/polkit-drop-test.patch \
|
||||
%D%/packages/patches/policycoreutils-make-sepolicy-use-python3.patch \
|
||||
%D%/packages/patches/poppler-CVE-2017-9776.patch \
|
||||
%D%/packages/patches/poppler-fix-crash-with-broken-documents.patch \
|
||||
%D%/packages/patches/portaudio-audacity-compat.patch \
|
||||
%D%/packages/patches/portmidi-modular-build.patch \
|
||||
%D%/packages/patches/procmail-ambiguous-getline-debian.patch \
|
||||
|
@ -970,7 +950,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/python-3.5-fix-tests.patch \
|
||||
%D%/packages/patches/python-3.5-getentropy-on-old-kernels.patch \
|
||||
%D%/packages/patches/python-dendropy-fix-tests.patch \
|
||||
%D%/packages/patches/python-file-double-encoding-bug.patch \
|
||||
%D%/packages/patches/python-fix-tests.patch \
|
||||
%D%/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch \
|
||||
%D%/packages/patches/python-genshi-buildable-on-python-2.7.patch \
|
||||
|
@ -1029,6 +1008,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/scotch-test-threading.patch \
|
||||
%D%/packages/patches/sdl-libx11-1.6.patch \
|
||||
%D%/packages/patches/seq24-rename-mutex.patch \
|
||||
%D%/packages/patches/shishi-fix-libgcrypt-detection.patch \
|
||||
%D%/packages/patches/slim-session.patch \
|
||||
%D%/packages/patches/slim-config.patch \
|
||||
%D%/packages/patches/slim-sigusr1.patch \
|
||||
|
@ -1057,7 +1037,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/tcsh-fix-out-of-bounds-read.patch \
|
||||
%D%/packages/patches/teensy-loader-cli-help.patch \
|
||||
%D%/packages/patches/teeworlds-use-latest-wavpack.patch \
|
||||
%D%/packages/patches/texlive-texmf-CVE-2016-10243.patch \
|
||||
%D%/packages/patches/texi2html-document-encoding.patch \
|
||||
%D%/packages/patches/texi2html-i18n.patch \
|
||||
%D%/packages/patches/thefuck-test-environ.patch \
|
||||
|
@ -1101,6 +1080,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/weechat-python.patch \
|
||||
%D%/packages/patches/wget-CVE-2017-6508.patch \
|
||||
%D%/packages/patches/wget-fix-504-test-timeout.patch \
|
||||
%D%/packages/patches/wget-perl-5.26.patch \
|
||||
%D%/packages/patches/wicd-bitrate-none-fix.patch \
|
||||
%D%/packages/patches/wicd-get-selected-profile-fix.patch \
|
||||
%D%/packages/patches/wicd-urwid-1.3.patch \
|
||||
|
|
|
@ -167,10 +167,10 @@ and provides a \"top-like\" mode (monitoring).")
|
|||
`(("pkg-config" ,pkg-config)
|
||||
|
||||
;; This is the Guile we use as a cross-compiler...
|
||||
("guile" ,guile-2.0)))
|
||||
("guile" ,guile-2.2)))
|
||||
(inputs
|
||||
;; ... and this is the one that appears in shebangs when cross-compiling.
|
||||
`(("guile" ,guile-2.0)))
|
||||
`(("guile" ,guile-2.2)))
|
||||
(synopsis "System service manager")
|
||||
(description
|
||||
"The GNU Shepherd is a daemon-managing daemon, meaning that it supervises
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;;
|
||||
|
@ -479,7 +480,6 @@ binary.")
|
|||
(base32
|
||||
"0amh9ik44jfg66csyvf4zz1l878c4755kjndq9j0270akflgrbb2"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("readline" ,readline)))
|
||||
(native-inputs
|
||||
`(("ed" ,ed)
|
||||
("flex" ,flex)
|
||||
|
|
|
@ -78,6 +78,16 @@ C++ @dfn{Standard Template Library} (STL).")
|
|||
"/lib"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-boost-build-error
|
||||
;; A chain of Boost headers leads to this error: "make_array" is
|
||||
;; not a member of "boost::serialization". This can be avoided by
|
||||
;; loading the "array_wrapper" header first.
|
||||
(lambda _
|
||||
(substitute* "src/synfig/valuenodes/valuenode_dynamic.cpp"
|
||||
(("#include <boost/numeric/odeint/integrate/integrate.hpp>" match)
|
||||
(string-append
|
||||
"#include <boost/serialization/array_wrapper.hpp>\n" match)))
|
||||
#t))
|
||||
(add-after 'unpack 'adapt-to-libxml++-changes
|
||||
(lambda _
|
||||
(substitute* "configure"
|
||||
|
|
|
@ -184,8 +184,7 @@ backups (called chunks) to allow easy burning to CD/DVD.")
|
|||
(define-public libarchive
|
||||
(package
|
||||
(name "libarchive")
|
||||
(replacement libarchive-3.3.1)
|
||||
(version "3.2.2")
|
||||
(version "3.3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -193,7 +192,7 @@ backups (called chunks) to allow easy burning to CD/DVD.")
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"03q6y428rg723c9fj1vidzjw46w1vf8z0h95lkvz1l9jw571j739"))))
|
||||
"1rr40hxlm9vy5z2zb5w7pyfkgd1a4s061qapm83s19accb8mpji9"))))
|
||||
(build-system gnu-build-system)
|
||||
;; TODO: Add -L/path/to/nettle in libarchive.pc.
|
||||
(inputs
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
|
||||
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -87,7 +89,8 @@ command-line arguments, multiple languages, and so on.")
|
|||
(sha256
|
||||
(base32
|
||||
"1dcasjp3a578nrvzrcn38mpizb8w1q6mvfzhjmcqqgkf0nsivj72"))
|
||||
(patches (search-patches "grep-timing-sensitive-test.patch"))))
|
||||
(patches (search-patches "grep-timing-sensitive-test.patch"
|
||||
"grep-gnulib-lock.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("perl" ,perl))) ;some of the tests require it
|
||||
(arguments
|
||||
|
@ -228,14 +231,14 @@ differences.")
|
|||
(define-public diffutils
|
||||
(package
|
||||
(name "diffutils")
|
||||
(version "3.5")
|
||||
(version "3.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/diffutils/diffutils-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0csmqfz8ks23kdjsq0v2ll1acqiz8lva06dj19mwmymrsp69ilys"))))
|
||||
"1mivg0fy3a6fcn535ln8nkgfj6vxh5hsxxs5h6692wxmsjyyh8fn"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Comparing and merging files")
|
||||
(description
|
||||
|
@ -258,8 +261,13 @@ interactive means to merge two files.")
|
|||
(sha256
|
||||
(base32
|
||||
"178nn4dl7wbcw499czikirnkniwnx36argdnqgz4ik9i6zvwkm6y"))
|
||||
(patches (search-patches "findutils-localstatedir.patch"
|
||||
"findutils-test-xargs.patch"))))
|
||||
(patches (search-patches
|
||||
"findutils-localstatedir.patch"
|
||||
"findutils-test-xargs.patch"
|
||||
;; test-lock has performance issues on multi-core
|
||||
;; machines, it hangs or takes a long time to complete.
|
||||
;; This is a commit from gnulib to fix this issue.
|
||||
"findutils-gnulib-multi-core.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list
|
||||
|
@ -285,15 +293,15 @@ used to apply commands with arbitrarily long arguments.")
|
|||
(define-public coreutils
|
||||
(package
|
||||
(name "coreutils")
|
||||
(version "8.26")
|
||||
(version "8.27")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/coreutils/coreutils-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"13lspazc7xkviy93qz7ks9jv4sldvgmwpq36ghrbrqpq93br8phm"))
|
||||
(patches (search-patches "coreutils-fix-cross-compilation.patch"))))
|
||||
"0sv547572iq8ayy8klir4hnngnx92a9nsazmf1wgzfc7xr4x74c8"))
|
||||
(patches (search-patches "coreutils-cut-huge-range-test.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("acl" ,acl) ; TODO: add SELinux
|
||||
("gmp" ,gmp) ;bignums in 'expr', yay!
|
||||
|
@ -308,21 +316,12 @@ used to apply commands with arbitrarily long arguments.")
|
|||
;; copy of help2man. However, don't pass it when cross-compiling since
|
||||
;; that would lead it to try to run programs to get their '--help' output
|
||||
;; for help2man.
|
||||
`(,@(if (%current-target-system)
|
||||
'()
|
||||
`(("perl" ,perl)))
|
||||
|
||||
;; Apply this patch only on ARM to avoid a full rebuild.
|
||||
;; TODO: Move to 'patches' in the next update cycle.
|
||||
,@(if (string-prefix? "arm" (or (%current-target-system)
|
||||
(%current-system)))
|
||||
`(("cut-test.patch"
|
||||
,(search-patch "coreutils-cut-huge-range-test.patch")))
|
||||
'())))
|
||||
(if (%current-target-system)
|
||||
'()
|
||||
`(("perl" ,perl))))
|
||||
(outputs '("out" "debug"))
|
||||
(arguments
|
||||
`(#:parallel-build? #f ; help2man may be called too early
|
||||
#:parallel-tests? #f ; race condition fixed after 8.26
|
||||
#:phases (alist-cons-before
|
||||
'build 'patch-shell-references
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
|
@ -337,22 +336,7 @@ used to apply commands with arbitrarily long arguments.")
|
|||
(substitute* (find-files "tests" "\\.sh$")
|
||||
(("#!/bin/sh")
|
||||
(format #f "#!~a/bin/sh" bash)))))
|
||||
|
||||
,@(if (string-prefix? "arm" (or (%current-target-system)
|
||||
(%current-system)))
|
||||
'((alist-cons-before
|
||||
'build 'patch-cut-test
|
||||
(lambda* (#:key inputs native-inputs
|
||||
#:allow-other-keys)
|
||||
(let ((patch (or (assoc-ref inputs
|
||||
"cut-test.patch")
|
||||
(assoc-ref native-inputs
|
||||
"cut-test.patch"))))
|
||||
(zero?
|
||||
(system* "patch" "-p1" "--force"
|
||||
"--input" patch))))
|
||||
%standard-phases))
|
||||
'(%standard-phases)))))
|
||||
%standard-phases)))
|
||||
(synopsis "Core GNU utilities (file, text, shell)")
|
||||
(description
|
||||
"GNU Coreutils includes all of the basic command-line tools that are
|
||||
|
@ -362,29 +346,6 @@ functionality beyond that which is outlined in the POSIX standard.")
|
|||
(license gpl3+)
|
||||
(home-page "https://www.gnu.org/software/coreutils/")))
|
||||
|
||||
;; We add version 8.27 here for use in (gnu system) due to a time
|
||||
;; zone bug in `date' versions 8.25 - 8.26.
|
||||
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23035
|
||||
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26238
|
||||
(define-public coreutils-8.27
|
||||
(package
|
||||
(inherit coreutils)
|
||||
(version "8.27")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/coreutils/coreutils-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0sv547572iq8ayy8klir4hnngnx92a9nsazmf1wgzfc7xr4x74c8"))))
|
||||
(arguments
|
||||
(if (string-prefix? "arm" (or (%current-target-system)
|
||||
(%current-system)))
|
||||
(substitute-keyword-arguments (package-arguments coreutils)
|
||||
((#:phases phases)
|
||||
`(alist-delete 'patch-cut-test ,phases)))
|
||||
(package-arguments coreutils)))))
|
||||
|
||||
(define-public coreutils-minimal
|
||||
;; Coreutils without its optional dependencies.
|
||||
(package
|
||||
|
@ -434,17 +395,16 @@ change. GNU make offers many powerful extensions over the standard utility.")
|
|||
(define-public binutils
|
||||
(package
|
||||
(name "binutils")
|
||||
(version "2.27")
|
||||
(version "2.28")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/binutils/binutils-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"125clslv17xh1sab74343fg6v31msavpmaa1c1394zsqa773g5rn"))
|
||||
"0wiasgns7i8km8nrxas265sh2dfpsw93b3qw195ipc90w4z475v2"))
|
||||
(patches (search-patches "binutils-ld-new-dtags.patch"
|
||||
"binutils-loongson-workaround.patch"
|
||||
"binutils-mips-bash-bug.patch"))))
|
||||
"binutils-loongson-workaround.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; TODO: Add dependency on zlib + those for Gold.
|
||||
|
@ -456,10 +416,6 @@ change. GNU make offers many powerful extensions over the standard utility.")
|
|||
;; Don't search under /usr/lib & co.
|
||||
"--with-lib-path=/no-ld-lib-path"
|
||||
|
||||
;; Glibc 2.17 has a "comparison of unsigned
|
||||
;; expression >= 0 is always true" in wchar.h.
|
||||
"--disable-werror"
|
||||
|
||||
;; Install BFD. It ends up in a hidden directory,
|
||||
;; but it's here.
|
||||
"--enable-install-libbfd"
|
||||
|
@ -482,7 +438,7 @@ included.")
|
|||
(define* (make-ld-wrapper name #:key
|
||||
(target (const #f))
|
||||
binutils
|
||||
(guile (canonical-package guile-2.0))
|
||||
(guile (canonical-package guile-2.2))
|
||||
(bash (canonical-package bash))
|
||||
(guile-for-build guile))
|
||||
"Return a package called NAME that contains a wrapper for the 'ld' program
|
||||
|
@ -558,7 +514,6 @@ store.")
|
|||
(package
|
||||
(name "glibc")
|
||||
(version "2.25")
|
||||
(replacement glibc-2.25-patched)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/glibc/glibc-"
|
||||
|
@ -576,7 +531,12 @@ store.")
|
|||
(modules '((guix build utils)))
|
||||
(patches (search-patches "glibc-ldd-x86_64.patch"
|
||||
"glibc-versioned-locpath.patch"
|
||||
"glibc-o-largefile.patch"))))
|
||||
"glibc-o-largefile.patch"
|
||||
"glibc-memchr-overflow-i686.patch"
|
||||
"glibc-vectorized-strcspn-guards.patch"
|
||||
"glibc-CVE-2017-1000366-pt1.patch"
|
||||
"glibc-CVE-2017-1000366-pt2.patch"
|
||||
"glibc-CVE-2017-1000366-pt3.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
|
||||
|
@ -588,10 +548,6 @@ store.")
|
|||
(arguments
|
||||
`(#:out-of-source? #t
|
||||
|
||||
;; In version 2.21, there a race in the 'elf' directory, see
|
||||
;; <http://lists.gnu.org/archive/html/guix-devel/2015-02/msg00709.html>.
|
||||
#:parallel-build? #f
|
||||
|
||||
;; The libraries have an empty RUNPATH, but some, such as the versioned
|
||||
;; libraries (libdl-2.24.so, etc.) have ld.so marked as NEEDED. Since
|
||||
;; these libraries are always going to be found anyway, just skip
|
||||
|
@ -667,19 +623,6 @@ store.")
|
|||
;; 4.7.1.
|
||||
((" -lgcc_s") ""))
|
||||
|
||||
;; Apply patch only on i686.
|
||||
;; TODO: Move the patch to 'patches' in the next update cycle.
|
||||
,@(if (string-prefix? "i686" (or (%current-target-system)
|
||||
(%current-system)))
|
||||
`((unless (zero? (system* "patch" "-p1" "--force"
|
||||
"--input"
|
||||
(or (assoc-ref native-inputs
|
||||
"glibc-memchr-overflow-i686.patch")
|
||||
(assoc-ref inputs
|
||||
"glibc-memchr-overflow-i686.patch"))))
|
||||
(error "patch failed for glibc-memchr-overflow-i686.patch")))
|
||||
'())
|
||||
|
||||
;; Have `system' use that Bash.
|
||||
(substitute* "sysdeps/posix/system.c"
|
||||
(("#define[[:blank:]]+SHELL_PATH.*$")
|
||||
|
@ -723,15 +666,7 @@ store.")
|
|||
;; install the message catalogs, with 'msgfmt'.
|
||||
(native-inputs `(("texinfo" ,texinfo)
|
||||
("perl" ,perl)
|
||||
("gettext" ,gettext-minimal)
|
||||
|
||||
;; Apply this patch only on i686 to avoid a full rebuild.
|
||||
;; TODO: Move to 'patches' in the next update cycle.
|
||||
,@(if (string-prefix? "i686" (or (%current-target-system)
|
||||
(%current-system)))
|
||||
`(("glibc-memchr-overflow-i686.patch"
|
||||
,(search-patch "glibc-memchr-overflow-i686.patch")))
|
||||
'())))
|
||||
("gettext" ,gettext-minimal)))
|
||||
|
||||
(native-search-paths
|
||||
;; Search path for packages that provide locale data. This is useful
|
||||
|
@ -780,71 +715,6 @@ with the Linux kernel.")
|
|||
;; Add libmachuser.so and libhurduser.so to libc.so's search path.
|
||||
;; See <http://lists.gnu.org/archive/html/bug-hurd/2015-07/msg00051.html>.
|
||||
`(modify-phases ,original-phases
|
||||
;; TODO: This is almost an exact copy of the phase of the same name
|
||||
;; in glibc/linux. The only difference is that the i686 patch is
|
||||
;; not applied here. In the next update cycle the patch moves to
|
||||
;; the patches field and this overwritten phase won't be needed any
|
||||
;; more.
|
||||
(replace 'pre-configure
|
||||
(lambda* (#:key inputs native-inputs outputs
|
||||
#:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
;; FIXME: Normally we would look it up only in INPUTS
|
||||
;; but cross-base uses it as a native input.
|
||||
(bash (or (assoc-ref inputs "static-bash")
|
||||
(assoc-ref native-inputs "static-bash"))))
|
||||
;; Install the rpc data base file under `$out/etc/rpc'.
|
||||
;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ];
|
||||
(substitute* "sunrpc/Makefile"
|
||||
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
|
||||
(string-append out "/etc/rpc" suffix "\n"))
|
||||
(("^install-others =.*$")
|
||||
(string-append "install-others = " out "/etc/rpc\n")))
|
||||
|
||||
(substitute* "Makeconfig"
|
||||
;; According to
|
||||
;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>,
|
||||
;; linking against libgcc_s is not needed with GCC
|
||||
;; 4.7.1.
|
||||
((" -lgcc_s") ""))
|
||||
|
||||
;; Have `system' use that Bash.
|
||||
(substitute* "sysdeps/posix/system.c"
|
||||
(("#define[[:blank:]]+SHELL_PATH.*$")
|
||||
(format #f "#define SHELL_PATH \"~a/bin/bash\"\n"
|
||||
bash)))
|
||||
|
||||
;; Same for `popen'.
|
||||
(substitute* "libio/iopopen.c"
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/sh")))
|
||||
|
||||
;; Same for the shell used by the 'exec' functions for
|
||||
;; scripts that lack a shebang.
|
||||
(substitute* (find-files "." "^paths\\.h$")
|
||||
(("#define[[:blank:]]+_PATH_BSHELL[[:blank:]].*$")
|
||||
(string-append "#define _PATH_BSHELL \""
|
||||
bash "/bin/sh\"\n")))
|
||||
|
||||
;; Nscd uses __DATE__ and __TIME__ to create a string to
|
||||
;; make sure the client and server come from the same
|
||||
;; libc. Use something deterministic instead.
|
||||
(substitute* "nscd/nscd_stat.c"
|
||||
(("static const char compilation\\[21\\] =.*$")
|
||||
(string-append
|
||||
"static const char compilation[21] = \""
|
||||
(string-take (basename out) 20) "\";\n")))
|
||||
|
||||
;; Make sure we don't retain a reference to the
|
||||
;; bootstrap Perl.
|
||||
(substitute* "malloc/mtrace.pl"
|
||||
(("^#!.*")
|
||||
;; The shebang can be omitted, because there's the
|
||||
;; "bilingual" eval/exec magic at the top of the file.
|
||||
"")
|
||||
(("exec @PERL@")
|
||||
"exec perl")))))
|
||||
(add-after 'install 'augment-libc.so
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out")))
|
||||
|
@ -902,19 +772,6 @@ GLIBC/HURD for a Hurd host"
|
|||
(define-syntax glibc
|
||||
(identifier-syntax (glibc-for-target)))
|
||||
|
||||
(define glibc-2.25-patched
|
||||
(package
|
||||
(inherit glibc)
|
||||
(source (origin
|
||||
(inherit (package-source glibc))
|
||||
(patches (search-patches "glibc-ldd-x86_64.patch"
|
||||
"glibc-versioned-locpath.patch"
|
||||
"glibc-o-largefile.patch"
|
||||
"glibc-vectorized-strcspn-guards.patch"
|
||||
"glibc-CVE-2017-1000366-pt1.patch"
|
||||
"glibc-CVE-2017-1000366-pt2.patch"
|
||||
"glibc-CVE-2017-1000366-pt3.patch"))))))
|
||||
|
||||
;; Below are old libc versions, which we use mostly to build locale data in
|
||||
;; the old format (which the new libc cannot cope with.)
|
||||
|
||||
|
|
|
@ -211,33 +211,33 @@ without modification.")
|
|||
(outputs (delete "include" (package-outputs bash)))
|
||||
|
||||
(arguments
|
||||
(let ((args `(#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
,@(package-arguments bash))))
|
||||
(substitute-keyword-arguments args
|
||||
((#:configure-flags flags)
|
||||
`(list "--without-bash-malloc"
|
||||
"--disable-readline"
|
||||
"--disable-history"
|
||||
"--disable-help-builtin"
|
||||
"--disable-progcomp"
|
||||
"--disable-net-redirections"
|
||||
"--disable-nls"
|
||||
(substitute-keyword-arguments (package-arguments bash)
|
||||
((#:modules _ '())
|
||||
'((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)))
|
||||
((#:configure-flags flags '())
|
||||
`(list "--without-bash-malloc"
|
||||
"--disable-readline"
|
||||
"--disable-history"
|
||||
"--disable-help-builtin"
|
||||
"--disable-progcomp"
|
||||
"--disable-net-redirections"
|
||||
"--disable-nls"
|
||||
|
||||
;; Pretend 'dlopen' is missing so we don't build loadable
|
||||
;; modules and related code.
|
||||
"ac_cv_func_dlopen=no"
|
||||
;; Pretend 'dlopen' is missing so we don't build loadable
|
||||
;; modules and related code.
|
||||
"ac_cv_func_dlopen=no"
|
||||
|
||||
,@(if (%current-target-system)
|
||||
'("bash_cv_job_control_missing=no"
|
||||
"bash_cv_getcwd_malloc=yes")
|
||||
'())))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
;; No loadable modules.
|
||||
(delete 'move-development-files))))))))
|
||||
,@(if (%current-target-system)
|
||||
'("bash_cv_job_control_missing=no"
|
||||
"bash_cv_getcwd_malloc=yes")
|
||||
'())))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
;; No loadable modules.
|
||||
(delete 'move-development-files)))))))
|
||||
|
||||
(define-public static-bash
|
||||
;; Statically-linked Bash that contains nothing but the 'bash' binary and
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -23,7 +24,8 @@
|
|||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages hurd))
|
||||
|
||||
(define-public libgc
|
||||
(package
|
||||
|
@ -38,8 +40,20 @@
|
|||
"143x7g0d0k6250ai6m2x3l4y352mzizi4wbgrmahxscv2aqjhjm1"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '(;; Install gc_cpp.h et al.
|
||||
"--enable-cplusplus")))
|
||||
`(#:configure-flags
|
||||
(list
|
||||
;; Install gc_cpp.h et al.
|
||||
"--enable-cplusplus"
|
||||
;; In GNU/Hurd systems during the 'Check' phase,
|
||||
;; there is a deadlock caused by the 'gctest' test.
|
||||
;; To disable the error set "--disable-gcj-support"
|
||||
;; to configure script. See bug report and discussion:
|
||||
;; <https://lists.opendylan.org/pipermail/bdwgc/2017-April/006275.html>
|
||||
;; <https://lists.gnu.org/archive/html/bug-hurd/2017-01/msg00008.html>
|
||||
,@(if (hurd-triplet? (or (%current-system)
|
||||
(%current-target-system)))
|
||||
'("--disable-gcj-support")
|
||||
'()))))
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
(inputs `(("libatomic-ops" ,libatomic-ops)))
|
||||
(outputs '("out" "debug"))
|
||||
|
|
|
@ -3486,7 +3486,8 @@ form of assemblies or reads.")
|
|||
(base32
|
||||
"0rws9r1ziv6way8cf49jg8bzj7x2131kfqkhj8byf0z5hnrq3bwv"))
|
||||
(patches (search-patches "metabat-remove-compilation-date.patch"
|
||||
"metabat-fix-compilation.patch"))))
|
||||
"metabat-fix-compilation.patch"
|
||||
"metabat-fix-boost-issue.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -4685,6 +4686,10 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
|
|||
'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
;; Allow 'konfigure.perl' to find 'package.prl'.
|
||||
(setenv "PERL5LIB"
|
||||
(string-append ".:" (getenv "PERL5LIB")))
|
||||
|
||||
;; The 'configure' script doesn't recognize things like
|
||||
;; '--enable-fast-install'.
|
||||
(zero? (system* "./configure"
|
||||
|
|
|
@ -28,14 +28,15 @@
|
|||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages icu4c)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages shells)
|
||||
#:use-module (gnu packages perl))
|
||||
#:use-module (gnu packages shells))
|
||||
|
||||
(define-public boost
|
||||
(package
|
||||
(name "boost")
|
||||
(version "1.63.0")
|
||||
(version "1.64.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -44,9 +45,10 @@
|
|||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1c5kzhcqahnic55dxcnw7r80qvwx5sfa2sa97yzv7xjrywljbbmy"))))
|
||||
"0cikd35xfkpg9nnl76yqqnqxnf3hyfjjww8xjd4akflprsm5rk3v"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("zlib" ,zlib)))
|
||||
(inputs `(("icu4c" ,icu4c)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("python" ,python-2)
|
||||
|
|
|
@ -122,7 +122,7 @@
|
|||
("bison" ,bison)
|
||||
;; Due to a bug in flex >= 2.6.2, GRUB must be built with an older flex:
|
||||
;; <http://lists.gnu.org/archive/html/grub-devel/2017-02/msg00133.html>
|
||||
;; TODO Try building with flex > 2.6.3.
|
||||
;; TODO Try building with flex > 2.6.4.
|
||||
("flex" ,flex-2.6.1)
|
||||
("texinfo" ,texinfo)
|
||||
("help2man" ,help2man)
|
||||
|
@ -292,7 +292,7 @@ menu to select one of the installed operating systems.")
|
|||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("bison" ,bison)
|
||||
("flex" ,flex-2.6.1))) ; A bug in flex prevents building with flex-2.6.3.
|
||||
("flex" ,flex)))
|
||||
(arguments
|
||||
`(#:make-flags
|
||||
(list "CC=gcc"
|
||||
|
|
|
@ -162,6 +162,7 @@ successful, or false to signal an error."
|
|||
gnu-triplet->nix-system)
|
||||
(%current-system))))
|
||||
"Return the name of Glibc's dynamic linker for SYSTEM."
|
||||
;; See the 'SYSDEP_KNOWN_INTERPRETER_NAMES' cpp macro in libc.
|
||||
(cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2")
|
||||
((string=? system "i686-linux") "/lib/ld-linux.so.2")
|
||||
((string=? system "armhf-linux") "/lib/ld-linux-armhf.so.3")
|
||||
|
@ -170,6 +171,7 @@ successful, or false to signal an error."
|
|||
((string=? system "i686-gnu") "/lib/ld.so.1")
|
||||
((string=? system "aarch64-linux") "/lib/ld-linux-aarch64.so.1")
|
||||
((string=? system "powerpc-linux") "/lib/ld.so.1")
|
||||
((string=? system "powerpc64le-linux") "/lib/ld64.so.2")
|
||||
((string=? system "alpha-linux") "/lib/ld-linux.so.2")
|
||||
|
||||
;; XXX: This one is used bare-bones, without a libc, so add a case
|
||||
|
|
|
@ -509,14 +509,7 @@ the bootstrap environment."
|
|||
(propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0))))
|
||||
(native-inputs
|
||||
`(("texinfo" ,texinfo-boot0)
|
||||
("perl" ,perl-boot0)
|
||||
;; Apply this patch only on i686 to avoid a full rebuild.
|
||||
;; TODO: Remove in the next update cycle.
|
||||
,@(if (string-prefix? "i686" (or (%current-target-system)
|
||||
(%current-system)))
|
||||
`(("glibc-memchr-overflow-i686.patch"
|
||||
,(search-patch "glibc-memchr-overflow-i686.patch")))
|
||||
'())))
|
||||
("perl" ,perl-boot0)))
|
||||
(inputs
|
||||
`(;; The boot inputs. That includes the bootstrap libc. We don't want
|
||||
;; it in $CPATH, hence the 'pre-configure' phase above.
|
||||
|
@ -806,13 +799,14 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
|||
|
||||
(define bash-final
|
||||
;; Link with `-static-libgcc' to make sure we don't retain a reference
|
||||
;; to the bootstrap GCC.
|
||||
;; to the bootstrap GCC. Use "bash-minimal" to avoid an extra dependency
|
||||
;; on Readline and ncurses.
|
||||
(let ((bash (package
|
||||
(inherit bash)
|
||||
(inherit bash-minimal)
|
||||
(arguments
|
||||
`(#:disallowed-references
|
||||
,(assoc-ref %boot3-inputs "coreutils&co")
|
||||
,@(package-arguments bash))))))
|
||||
,@(package-arguments bash-minimal))))))
|
||||
(package-with-bootstrap-guile
|
||||
(package-with-explicit-inputs (static-libgcc-package bash)
|
||||
%boot3-inputs
|
||||
|
@ -828,7 +822,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
|||
;; This package must be public because other modules refer to it. However,
|
||||
;; mark it as hidden so that 'fold-packages' ignores it.
|
||||
(package-with-bootstrap-guile
|
||||
(package-with-explicit-inputs (hidden-package guile-2.0/fixed)
|
||||
(package-with-explicit-inputs (hidden-package guile-2.2/fixed)
|
||||
%boot4-inputs
|
||||
(current-source-location)
|
||||
#:guile %bootstrap-guile)))
|
||||
|
@ -849,12 +843,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
|||
|
||||
(define-public ld-wrapper
|
||||
;; The final 'ld' wrapper, which uses the final Guile and Binutils.
|
||||
(package (inherit ld-wrapper-boot3)
|
||||
(name "ld-wrapper")
|
||||
(inputs `(("guile" ,guile-final)
|
||||
("bash" ,bash-final)
|
||||
,@(fold alist-delete (package-inputs ld-wrapper-boot3)
|
||||
'("guile" "bash"))))))
|
||||
(make-ld-wrapper "ld-wrapper"
|
||||
#:binutils binutils-final
|
||||
#:guile guile-final
|
||||
#:bash bash-final))
|
||||
|
||||
(define %boot5-inputs
|
||||
;; Now with UTF-8 locales. Remember that the bootstrap binaries were built
|
||||
|
@ -947,7 +939,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
|||
the implicit inputs of 'gnu-build-system', return that one, otherwise return
|
||||
PACKAGE.
|
||||
|
||||
The goal is to avoid duplication in cases like GUILE-FINAL vs. GUILE-2.0,
|
||||
The goal is to avoid duplication in cases like GUILE-FINAL vs. GUILE-2.2,
|
||||
COREUTILS-FINAL vs. COREUTILS, etc."
|
||||
;; XXX: This doesn't handle dependencies of the final inputs, such as
|
||||
;; libunistring, GMP, etc.
|
||||
|
|
|
@ -212,84 +212,78 @@ file; as a result, it is often used in conjunction with \"tar\", resulting in
|
|||
(home-page "https://www.gnu.org/software/gzip/")))
|
||||
|
||||
(define-public bzip2
|
||||
(let ((build-shared-lib
|
||||
;; Build a shared library.
|
||||
'(lambda* (#:key inputs #:allow-other-keys)
|
||||
(patch-makefile-SHELL "Makefile-libbz2_so")
|
||||
(zero? (system* "make" "-f" "Makefile-libbz2_so"))))
|
||||
(install-shared-lib
|
||||
'(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(libdir (string-append out "/lib")))
|
||||
(for-each (lambda (file)
|
||||
(let ((base (basename file)))
|
||||
(format #t "installing `~a' to `~a'~%"
|
||||
base libdir)
|
||||
(copy-file file
|
||||
(string-append libdir "/" base))))
|
||||
(find-files "." "^libbz2\\.so")))))
|
||||
(set-cross-environment
|
||||
'(lambda* (#:key target #:allow-other-keys)
|
||||
(substitute* (find-files "." "Makefile")
|
||||
(("CC=.*$")
|
||||
(string-append "CC = " target "-gcc\n"))
|
||||
(("AR=.*$")
|
||||
(string-append "AR = " target "-ar\n"))
|
||||
(("RANLIB=.*$")
|
||||
(string-append "RANLIB = " target "-ranlib\n"))
|
||||
(("^all:(.*)test" _ prerequisites)
|
||||
;; Remove 'all' -> 'test' dependency.
|
||||
(string-append "all:" prerequisites "\n"))))))
|
||||
(package
|
||||
(name "bzip2")
|
||||
(version "1.0.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.bzip.org/" version "/bzip2-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-1))
|
||||
#:phases
|
||||
,(if (%current-target-system)
|
||||
(package
|
||||
(name "bzip2")
|
||||
(version "1.0.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.bzip.org/" version "/bzip2-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-1))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key target #:allow-other-keys)
|
||||
(if ,(%current-target-system)
|
||||
;; Cross-compilation: use the cross tools.
|
||||
(substitute* (find-files "." "Makefile")
|
||||
(("CC=.*$")
|
||||
(string-append "CC = " target "-gcc\n"))
|
||||
(("AR=.*$")
|
||||
(string-append "AR = " target "-ar\n"))
|
||||
(("RANLIB=.*$")
|
||||
(string-append "RANLIB = " target "-ranlib\n"))
|
||||
(("^all:(.*)test" _ prerequisites)
|
||||
;; Remove 'all' -> 'test' dependency.
|
||||
(string-append "all:" prerequisites "\n")))
|
||||
#t)))
|
||||
(add-before 'build 'build-shared-lib
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(patch-makefile-SHELL "Makefile-libbz2_so")
|
||||
(zero? (system* "make" "-f" "Makefile-libbz2_so"))))
|
||||
(add-after 'install 'install-shared-lib
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(libdir (string-append out "/lib")))
|
||||
(for-each (lambda (file)
|
||||
(let ((base (basename file)))
|
||||
(format #t "installing `~a' to `~a'~%"
|
||||
base libdir)
|
||||
(copy-file file
|
||||
(string-append libdir "/" base))))
|
||||
(find-files "." "^libbz2\\.so")))
|
||||
#t))
|
||||
(add-after 'install-shared-lib 'patch-scripts
|
||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out")))
|
||||
(substitute* (string-append out "/bin/bzdiff")
|
||||
(("/bin/rm") "rm")))
|
||||
#t)))
|
||||
|
||||
;; Cross-compilation: use the cross tools.
|
||||
`(alist-cons-before
|
||||
'build 'build-shared-lib ,build-shared-lib
|
||||
(alist-cons-after
|
||||
'install 'install-shared-lib ,install-shared-lib
|
||||
(alist-replace 'configure ,set-cross-environment
|
||||
%standard-phases)))
|
||||
#:make-flags (list (string-append "PREFIX="
|
||||
(assoc-ref %outputs "out")))
|
||||
|
||||
;; Native compilation: build the shared library.
|
||||
`(alist-cons-before
|
||||
'build 'build-shared-lib ,build-shared-lib
|
||||
(alist-cons-after
|
||||
'install 'install-shared-lib ,install-shared-lib
|
||||
(alist-delete 'configure %standard-phases))))
|
||||
|
||||
#:make-flags (list (string-append "PREFIX="
|
||||
(assoc-ref %outputs "out")))
|
||||
|
||||
;; Don't attempt to run the tests when cross-compiling.
|
||||
,@(if (%current-target-system)
|
||||
'(#:tests? #f)
|
||||
'())))
|
||||
(synopsis "High-quality data compression program")
|
||||
(description
|
||||
"bzip2 is a freely available, patent free (see below), high-quality data
|
||||
;; Don't attempt to run the tests when cross-compiling.
|
||||
,@(if (%current-target-system)
|
||||
'(#:tests? #f)
|
||||
'())))
|
||||
(synopsis "High-quality data compression program")
|
||||
(description
|
||||
"bzip2 is a freely available, patent free (see below), high-quality data
|
||||
compressor. It typically compresses files to within 10% to 15% of the best
|
||||
available techniques (the PPM family of statistical compressors), whilst
|
||||
being around twice as fast at compression and six times faster at
|
||||
decompression.")
|
||||
(license (license:non-copyleft "file://LICENSE"
|
||||
"See LICENSE in the distribution."))
|
||||
(home-page "http://www.bzip.org/"))))
|
||||
(license (license:non-copyleft "file://LICENSE"
|
||||
"See LICENSE in the distribution."))
|
||||
(home-page "http://www.bzip.org/")))
|
||||
|
||||
(define-public lbzip2
|
||||
(package
|
||||
|
@ -462,14 +456,14 @@ some compression ratio).")
|
|||
(define-public lzip
|
||||
(package
|
||||
(name "lzip")
|
||||
(version "1.16")
|
||||
(version "1.18")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/lzip/lzip-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0l9724rw1l3hg2ldr3n7ihqich4m9nc6y7l302bvdj4jmxdw530j"))))
|
||||
"1p8lvc22sv3damld9ng8y6i8z2dvvpsbi9v7yhr5bc2a20m8iya7"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.nongnu.org/lzip/lzip.html")
|
||||
(synopsis "Lossless data compressor based on the LZMA algorithm")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
|
||||
|
@ -53,7 +53,7 @@
|
|||
(define-public cups-filters
|
||||
(package
|
||||
(name "cups-filters")
|
||||
(version "1.13.1")
|
||||
(version "1.14.1")
|
||||
(source(origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
|
@ -61,7 +61,7 @@
|
|||
"cups-filters-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0s7hylp2lcvc1vrqpywpv7lspkrh4xf7cyi4nbg10cf38rshj474"))
|
||||
"0175jhqpsyn7bkh7w43ydhyws5zsdak05hr1fsadvzslvwqkffgi"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; install backends, banners and filters to cups-filters output
|
||||
|
@ -141,7 +141,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
|
|||
(define-public cups-minimal
|
||||
(package
|
||||
(name "cups-minimal")
|
||||
(version "2.2.1")
|
||||
(version "2.2.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -149,7 +149,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
|
|||
version "/cups-" version "-source.tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1m8rwhbk0l8n19iwm51r2569jj15d0x6mpqhfig0bk3pm4577f43"))))
|
||||
"1k4qxafmapq6hzbkh273fdyzkj9alw6ppwz5k933bhsi4svlsvar"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
|
|
|
@ -43,14 +43,14 @@
|
|||
(package
|
||||
(name "curl")
|
||||
(replacement curl-7.55.0)
|
||||
(version "7.53.0")
|
||||
(version "7.54.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://curl.haxx.se/download/curl-"
|
||||
version ".tar.lzma"))
|
||||
(sha256
|
||||
(base32
|
||||
"1k0i31xygb804c61llhin5wbpcscg4gfqmbxcfkpdr1alwh7igrq"))))
|
||||
"0vnv3cz0s1l5cjby86hm0x6pgzqijmdm97qa9q5px200956z6yib"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out"
|
||||
"doc")) ;1.2 MiB of man3 pages
|
||||
|
|
|
@ -128,14 +128,14 @@ either single machines or networked clusters.")
|
|||
(define-public gdbm
|
||||
(package
|
||||
(name "gdbm")
|
||||
(version "1.12")
|
||||
(version "1.13")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gdbm/gdbm-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1smwz4x5qa4js0zf1w3asq6z7mh20zlgwbh2bk5dczw6xrk22yyr"))))
|
||||
"0lx201q20dvc70f8a3c9s7s18z15inlxvbffph97ngvrgnyjq9cx"))))
|
||||
(arguments `(#:configure-flags '("--enable-libgdbm-compat")))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.gnu.org.ua/software/gdbm")
|
||||
|
@ -754,7 +754,7 @@ for example from a shell script.")
|
|||
(define-public sqlite
|
||||
(package
|
||||
(name "sqlite")
|
||||
(version "3.17.0")
|
||||
(version "3.19.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (let ((numeric-version
|
||||
|
@ -770,7 +770,7 @@ for example from a shell script.")
|
|||
numeric-version ".tar.gz")))
|
||||
(sha256
|
||||
(base32
|
||||
"0k472gq0p706jq4529p60znvw02hdf172qxgbdv59q0n7anqbr54"))))
|
||||
"00b3l2qglpl1inx21fckiwxnfq5xf6441flc79rqg7zdvh1rq4h6"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("readline" ,readline)))
|
||||
(arguments
|
||||
|
@ -861,6 +861,7 @@ extremely small.")
|
|||
(native-inputs
|
||||
`(("perl-dbd-sqlite" ,perl-dbd-sqlite)
|
||||
("perl-file-temp" ,perl-file-temp)
|
||||
("perl-module-install" ,perl-module-install)
|
||||
("perl-package-stash" ,perl-package-stash)
|
||||
("perl-test-deep" ,perl-test-deep)
|
||||
("perl-test-exception" ,perl-test-exception)
|
||||
|
@ -914,7 +915,8 @@ single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\",
|
|||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-cache-cache" ,perl-cache-cache)
|
||||
("perl-dbd-sqlite" ,perl-dbd-sqlite)))
|
||||
("perl-dbd-sqlite" ,perl-dbd-sqlite)
|
||||
("perl-module-install" ,perl-module-install)))
|
||||
(propagated-inputs
|
||||
`(("perl-carp-clan" ,perl-carp-clan)
|
||||
("perl-dbix-class" ,perl-dbix-class)))
|
||||
|
@ -937,6 +939,8 @@ built-in caching support.")
|
|||
(base32
|
||||
"1w47rh2241iy5x3a9bqsyd5kdp9sk43dksr99frzv4qn4jsazfn6"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-module-install" ,perl-module-install)))
|
||||
(propagated-inputs
|
||||
`(("perl-dbix-class" ,perl-dbix-class)))
|
||||
(home-page "http://search.cpan.org/dist/DBIx-Class-IntrospectableM2M")
|
||||
|
@ -967,6 +971,7 @@ introspected and examined.")
|
|||
("perl-config-general" ,perl-config-general)
|
||||
("perl-dbd-sqlite" ,perl-dbd-sqlite)
|
||||
("perl-dbix-class-introspectablem2m" ,perl-dbix-class-introspectablem2m)
|
||||
("perl-module-install" ,perl-module-install)
|
||||
("perl-moose" ,perl-moose)
|
||||
("perl-moosex-markasmethods" ,perl-moosex-markasmethods)
|
||||
("perl-moosex-nonmoose" ,perl-moosex-nonmoose)
|
||||
|
@ -1090,7 +1095,8 @@ module, and nothing else.")
|
|||
"17sgwq3mvqjhv3b77cnvrq60xgp8harjhlnvpwmxc914rqc5ckaz"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-test-deep" ,perl-test-deep)
|
||||
`(("perl-module-install" ,perl-module-install)
|
||||
("perl-test-deep" ,perl-test-deep)
|
||||
("perl-test-exception" ,perl-test-exception)
|
||||
("perl-test-warn" ,perl-test-warn)))
|
||||
(propagated-inputs
|
||||
|
|
|
@ -28,14 +28,14 @@
|
|||
(define-public ed
|
||||
(package
|
||||
(name "ed")
|
||||
(version "1.14.1")
|
||||
(version "1.14.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/ed/ed-"
|
||||
version ".tar.lz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ajm69pma7gigddlrq2qi4dsllz9vhm8gqwpkcdagdd2yaw7xfgz"))))
|
||||
"1nqhk3n1s1p77g2bjnj55acicsrlyb2yasqxqwpx0w0djfx64ygm"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("lzip" ,lzip)))
|
||||
(arguments
|
||||
|
|
|
@ -447,7 +447,7 @@ with a layered architecture of JTAG interface and TAP support.")
|
|||
,@(package-arguments xbinutils)))
|
||||
(native-inputs
|
||||
`(("bison" ,bison)
|
||||
("flex" ,flex-2.6.1) ; needed because of yywrap error
|
||||
("flex" ,flex)
|
||||
("texinfo" ,texinfo)
|
||||
("dejagnu" ,dejagnu)
|
||||
,@(package-native-inputs xbinutils))))))
|
||||
|
@ -828,7 +828,7 @@ simulator.")
|
|||
(base32
|
||||
"14b3h2ji740s8zq5vwm4qdcxs4aa4wxi6wb9di3bv1h39x14nyr9"))))
|
||||
("texinfo" ,texinfo)
|
||||
("flex" ,flex-2.6.1) ; A bug in flex prevents building with flex-2.6.3.
|
||||
("flex" ,flex)
|
||||
("bison" ,bison)
|
||||
("guile-1.8" ,guile-1.8)
|
||||
("which" ,base:which)))
|
||||
|
|
|
@ -28,14 +28,14 @@
|
|||
(define-public file
|
||||
(package
|
||||
(name "file")
|
||||
(version "5.28")
|
||||
(version "5.30")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://ftp.astron.com/pub/file/file-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"04p0w9ggqq6cqvwhyni0flji1z0rwrz896hmhkxd2mc6dca5xjqf"))))
|
||||
"057jpcyy8ws7q4s4sm8r1rxb8xycdbng2z4y9i98f094wlr28k39"))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; When cross-compiling, this package depends upon a native install of
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
(define-public flex
|
||||
(package
|
||||
(name "flex")
|
||||
(version "2.6.3")
|
||||
(version "2.6.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -41,7 +41,7 @@
|
|||
"flex-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1an2cn2z85mkpgqcinh1fhhcd7993qm2lil1yxic8iz76ci79ck8"))))
|
||||
"15g9bv236nzi665p9ggqjlfn4dwck5835vf0bbw2cz7h5c1swyp8"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(let ((bison-for-tests
|
||||
|
@ -86,10 +86,6 @@ executes the corresponding C code.")
|
|||
(license (non-copyleft "file://COPYING"
|
||||
"See COPYING in the distribution."))))
|
||||
|
||||
;;; Many packages fail to build with flex > 2.6.1, due to this bug in flex:
|
||||
;;; <https://github.com/westes/flex/issues/162>
|
||||
;;; We must not use a flex before 2.6.1, due to CVE-2016-6354.
|
||||
;;; TODO Try using flex > 2.6.3.
|
||||
(define-public flex-2.6.1
|
||||
(package
|
||||
(inherit flex)
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gperf)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages xml)
|
||||
|
@ -48,14 +49,13 @@
|
|||
(define-public freetype
|
||||
(package
|
||||
(name "freetype")
|
||||
(replacement freetype/fixed)
|
||||
(version "2.7.1")
|
||||
(version "2.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/freetype/freetype-"
|
||||
version ".tar.bz2"))
|
||||
(sha256 (base32
|
||||
"121gm15ayfg3rglby8ifh8384mcjb9dhmx9j40zl7yszw72b4frs"))))
|
||||
"02xlj611alpvl3h33hvfw1jyxc1vp9mzwcckkiglkhn3hknh7im3"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
|
@ -74,15 +74,6 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
|
|||
(license license:freetype) ; some files have other licenses
|
||||
(home-page "https://www.freetype.org/")))
|
||||
|
||||
(define freetype/fixed
|
||||
(package
|
||||
(inherit freetype)
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source freetype))
|
||||
(patches (search-patches "freetype-CVE-2017-8105.patch"
|
||||
"freetype-CVE-2017-8287.patch"))))))
|
||||
|
||||
(define-public ttfautohint
|
||||
(package
|
||||
(name "ttfautohint")
|
||||
|
@ -235,22 +226,21 @@ fonts to/from the WOFF2 format.")
|
|||
(define-public fontconfig
|
||||
(package
|
||||
(name "fontconfig")
|
||||
(version "2.12.1")
|
||||
(version "2.12.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://www.freedesktop.org/software/fontconfig/release/fontconfig-"
|
||||
version ".tar.bz2"))
|
||||
(patches (search-patches "fontconfig-charwidth-symbol-conflict.patch"
|
||||
"fontconfig-path-max.patch"))
|
||||
(sha256 (base32
|
||||
"1wy7svvp7df6bjpg1m5vizb3ngd7rhb20vpclv3x3qa71khs6jdl"))))
|
||||
"1ggq6jmz3mlzk4xjs615aqw9h3hq33chjn82bhli26kk09kby95x"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs `(("expat" ,expat)
|
||||
("freetype" ,freetype)))
|
||||
(inputs `(("gs-fonts" ,gs-fonts)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
`(("gperf" ,gperf) ; Try dropping this for > 2.12.3.
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list "--with-cache-dir=/var/cache/fontconfig"
|
||||
|
@ -268,10 +258,12 @@ fonts to/from the WOFF2 format.")
|
|||
"PYTHON=false")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-tests-for-freetype-2.7.1
|
||||
(add-before 'configure 'regenerate-fcobjshash
|
||||
;; XXX The pre-generated gperf files are broken.
|
||||
;; See <https://bugs.freedesktop.org/show_bug.cgi?id=101280>.
|
||||
(lambda _
|
||||
(substitute* "test/run-test.sh"
|
||||
(("\\\| sort") "| cut -d' ' -f2 | sort"))
|
||||
(delete-file "src/fcobjshash.h")
|
||||
(delete-file "src/fcobjshash.gperf")
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
|
@ -385,8 +377,7 @@ applications should be.")
|
|||
(define-public graphite2
|
||||
(package
|
||||
(name "graphite2")
|
||||
(version "1.3.9")
|
||||
(replacement graphite2/fixed)
|
||||
(version "1.3.10")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -395,7 +386,7 @@ applications should be.")
|
|||
(patches (search-patches "graphite2-ffloat-store.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0rs5h7m340z75kygx8d72cps0q6yvvqa9i788vym7585cfv8a0gc"))))
|
||||
"1bm1rl2ww0m8rvmknh8fpajyz9xqv43qs9qrzf7xd5gaz6rf7zch"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
`(("python" ,python-2) ; because of "import imap" in tests
|
||||
|
@ -411,21 +402,6 @@ and returns a sequence of positioned glyphids from the font.")
|
|||
(license license:lgpl2.1+)
|
||||
(home-page "https://github.com/silnrsi/graphite")))
|
||||
|
||||
(define graphite2/fixed
|
||||
(package
|
||||
(inherit graphite2)
|
||||
(name "graphite2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (let ((version "1.3.10"))
|
||||
(string-append "https://github.com/silnrsi/graphite/releases/"
|
||||
"download/" version "/" name "-" version ".tgz")))
|
||||
(patches (search-patches "graphite2-ffloat-store.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1bm1rl2ww0m8rvmknh8fpajyz9xqv43qs9qrzf7xd5gaz6rf7zch"))))))
|
||||
|
||||
(define-public potrace
|
||||
(package
|
||||
(name "potrace")
|
||||
|
|
|
@ -393,7 +393,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
|
|||
(define-public wayland-protocols
|
||||
(package
|
||||
(name "wayland-protocols")
|
||||
(version "1.7")
|
||||
(version "1.9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -401,7 +401,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
|
|||
"wayland-protocols-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"07qw166s6bm81zfnhf4lmww6wj0il960fm3vp7n1z3rign9jlpv3"))))
|
||||
"0xag2yci0l13brmq2k12vdv0wlnb2j0rxk2cnp170fya63g74sv6"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("wayland" ,wayland)))
|
||||
|
|
|
@ -213,7 +213,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC
|
|||
;; Fix the dynamic linker's file name.
|
||||
(substitute* (find-files "gcc/config"
|
||||
"^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
|
||||
(("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^ ]*).*$"
|
||||
(("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^ \t]*).*$"
|
||||
_ gnu-user suffix)
|
||||
(format #f "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
|
||||
gnu-user suffix
|
||||
|
@ -385,6 +385,7 @@ Go. It also includes runtime support libraries for these languages.")
|
|||
"0fihlcy5hnksdxk0sn6bvgnyq8gfrgs8m794b1jxwd1dxinzg3b0"))
|
||||
(patches (search-patches "gcc-arm-bug-71399.patch"
|
||||
"gcc-strmov-store-file-names.patch"
|
||||
"gcc-asan-powerpc-missing-include.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-5-source-date-epoch-1.patch"
|
||||
"gcc-5-source-date-epoch-2.patch"))))))
|
||||
|
|
|
@ -154,6 +154,11 @@ you can create PNG images on the fly or modify existing files.")
|
|||
(base32
|
||||
"1kaxs67rfd4w46lxgcg3pa05a596l0h1k8n4zk2gwrrar4022wpx"))))
|
||||
(build-system perl-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-env
|
||||
(lambda _ (setenv "PERL_USE_UNSAFE_INC" "1"))))))
|
||||
(native-inputs
|
||||
`(("perl-module-build" ,perl-module-build)))
|
||||
(propagated-inputs
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -45,7 +46,13 @@
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z"))))
|
||||
"0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z"))
|
||||
;; test-lock has performance issues on multi-core machines,
|
||||
;; it hangs or takes a long time to complete.
|
||||
;; There is one commit in gettext and one commit
|
||||
;; in gettext's embedded gnulib to fix this issue.
|
||||
(patches (search-patches "gettext-multi-core.patch"
|
||||
"gettext-gnulib-multi-core.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out"
|
||||
"doc")) ;8 MiB of HTML
|
||||
|
@ -137,6 +144,13 @@ translated messages from the catalogs. Nearly all GNU packages use Gettext.")
|
|||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'set-search-path
|
||||
(lambda _
|
||||
;; Work around "dotless @INC" build failure.
|
||||
(setenv "PERL5LIB"
|
||||
(string-append (getcwd) ":"
|
||||
(getenv "PERL5LIB")))
|
||||
#t))
|
||||
;; FIXME: One test fails as we don't have SGMLS.pm
|
||||
(add-before 'check 'disable-sgml-test
|
||||
(lambda _
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2013, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -129,85 +130,129 @@ printing, and psresize, for adjusting page sizes.")
|
|||
|
||||
(define-public ghostscript
|
||||
(package
|
||||
(name "ghostscript")
|
||||
(replacement ghostscript/fixed)
|
||||
(version "9.14.0")
|
||||
;; XXX Try removing the bundled copy of jbig2dec.
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1"))
|
||||
(patches (search-patches "ghostscript-CVE-2013-5653.patch"
|
||||
"ghostscript-CVE-2015-3228.patch"
|
||||
"ghostscript-CVE-2016-7976.patch"
|
||||
"ghostscript-CVE-2016-7978.patch"
|
||||
"ghostscript-CVE-2016-7979.patch"
|
||||
"ghostscript-CVE-2016-8602.patch"
|
||||
"ghostscript-runpath.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Honor --docdir.
|
||||
'(substitute* "Makefile.in"
|
||||
(("^docdir=.*$") "docdir = @docdir@\n")
|
||||
(("^exdir=.*$") "exdir = $(docdir)/examples\n")))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" "doc")) ;16 MiB of HTML/PS doc + examples
|
||||
(inputs `(("freetype" ,freetype)
|
||||
("lcms" ,lcms)
|
||||
("libjpeg-8" ,libjpeg-8)
|
||||
("libpng" ,libpng)
|
||||
("libpaper" ,libpaper)
|
||||
("libtiff" ,libtiff)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("pkg-config" ,pkg-config) ; needed to find libtiff
|
||||
("python" ,python-wrapper)
|
||||
("tcl" ,tcl)))
|
||||
(arguments
|
||||
`(#:disallowed-references ("doc")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'configure 'patch-config-files
|
||||
(lambda _
|
||||
(substitute* "base/all-arch.mak"
|
||||
(("/bin/sh") (which "sh")))
|
||||
(substitute* "base/unixhead.mak"
|
||||
(("/bin/sh") (which "sh")))))
|
||||
(name "ghostscript")
|
||||
(version "9.21")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/ArtifexSoftware/"
|
||||
"ghostpdl-downloads/releases/download/gs"
|
||||
(string-delete #\. version)
|
||||
"/ghostscript-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0lyhjcrkmd5fcmh8h56bs4xr9k4jasmikv5vsix1hd4ai0ad1q9b"))
|
||||
(patches (search-patches "ghostscript-runpath.patch"
|
||||
"ghostscript-CVE-2017-8291.patch"
|
||||
"ghostscript-no-header-creationdate.patch"
|
||||
"ghostscript-no-header-id.patch"
|
||||
"ghostscript-no-header-uuid.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Remove bundled libraries. The bundled OpenJPEG is a patched fork so
|
||||
;; we leave it, at least for now.
|
||||
;; TODO Try unbundling ijs, which is developed alongside Ghostscript.
|
||||
'(begin
|
||||
(for-each delete-file-recursively '("freetype" "jbig2dec" "jpeg"
|
||||
"lcms2" "libpng"
|
||||
"tiff" "zlib"))))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" "doc")) ;19 MiB of HTML/PS doc + examples
|
||||
(arguments
|
||||
`(#:disallowed-references ("doc")
|
||||
#:configure-flags
|
||||
(list "--with-system-libtiff"
|
||||
"LIBS=-lz"
|
||||
(string-append "ZLIBDIR="
|
||||
(assoc-ref %build-inputs "zlib") "/include")
|
||||
"--enable-dynamic"
|
||||
|
||||
,@(if (%current-target-system)
|
||||
'(;; Specify the native compiler, which is used to build 'echogs'
|
||||
;; and other intermediary tools when cross-compiling; see
|
||||
;; <https://ghostscript.com/FAQ.html>.
|
||||
"CCAUX=gcc"
|
||||
|
||||
;; Save 'config.log' etc. of the native build under
|
||||
;; auxtmp/, useful for debugging.
|
||||
"--enable-save_confaux")
|
||||
'()))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-doc-dir
|
||||
(lambda _
|
||||
;; Honor --docdir.
|
||||
(substitute* "Makefile.in"
|
||||
(("^docdir=.*$") "docdir = @docdir@\n")
|
||||
(("^exdir=.*$") "exdir = $(docdir)/examples\n"))
|
||||
#t))
|
||||
(add-after 'configure 'remove-doc-reference
|
||||
(lambda _
|
||||
;; Don't retain a reference to the 'doc' output in 'gs'.
|
||||
;; The only use of this definition is in the output of
|
||||
;; 'gs --help', so this change is fine.
|
||||
(substitute* "base/gscdef.c"
|
||||
(("GS_DOCDIR")
|
||||
"\"~/.guix-profile/share/doc/ghostscript\""))
|
||||
#t))
|
||||
(add-after 'configure 'patch-config-files
|
||||
(lambda _
|
||||
(substitute* "base/unixhead.mak"
|
||||
(("/bin/sh") (which "sh")))
|
||||
#t))
|
||||
,@(if (%current-target-system)
|
||||
`((add-after 'configure 'add-native-lz
|
||||
(lambda _
|
||||
;; Don't retain a reference to the 'doc' output in 'gs'.
|
||||
;; The only use of this definition is in the output of
|
||||
;; 'gs --help', so this change is fine.
|
||||
(substitute* "base/gscdef.c"
|
||||
(("GS_DOCDIR")
|
||||
"\"~/.guix-profile/share/doc/ghostscript\""))))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
;; Build 'libgs.so', but don't build the statically-linked 'gs'
|
||||
;; binary (saves 18 MiB).
|
||||
(zero? (system* "make" "so" "-j"
|
||||
(number->string (parallel-job-count))))))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(zero? (system* "make" "soinstall"))))
|
||||
(add-after 'install 'create-gs-symlink
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
;; some programs depend on having a 'gs' binary available
|
||||
(symlink "gsc" (string-append out "/bin/gs"))))))))
|
||||
(synopsis "PostScript and PDF interpreter")
|
||||
(description
|
||||
"Ghostscript is an interpreter for the PostScript language and the PDF
|
||||
;; Add missing '-lz' for native tools such as 'mkromfs'.
|
||||
(substitute* "Makefile"
|
||||
(("^AUXEXTRALIBS=(.*)$" _ value)
|
||||
(string-append "AUXEXTRALIBS = -lz " value "\n")))
|
||||
#t)))
|
||||
'())
|
||||
(replace 'build
|
||||
(lambda _
|
||||
;; Build 'libgs.so', but don't build the statically-linked 'gs'
|
||||
;; binary (saves 22 MiB).
|
||||
(zero? (system* "make" "so" "-j"
|
||||
(number->string (parallel-job-count))))))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(zero? (system* "make" "soinstall"))))
|
||||
(add-after 'install 'create-gs-symlink
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
;; Some programs depend on having a 'gs' binary available.
|
||||
(symlink "gsc" (string-append out "/bin/gs"))
|
||||
#t))))))
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("python" ,python-wrapper)
|
||||
("tcl" ,tcl)
|
||||
|
||||
;; When cross-compiling, some of the natively-built tools require all
|
||||
;; these libraries.
|
||||
,@(if (%current-target-system)
|
||||
`(("zlib/native" ,zlib)
|
||||
("libjpeg/native" ,libjpeg)
|
||||
("lcms2/native" ,lcms))
|
||||
'())))
|
||||
(inputs
|
||||
`(("freetype" ,freetype)
|
||||
("jbig2dec" ,jbig2dec)
|
||||
("lcms2" ,lcms)
|
||||
("libjpeg" ,libjpeg)
|
||||
("libpaper" ,libpaper)
|
||||
("libpng" ,libpng)
|
||||
("libtiff" ,libtiff)
|
||||
("zlib" ,zlib)))
|
||||
(synopsis "PostScript and PDF interpreter")
|
||||
(description
|
||||
"Ghostscript is an interpreter for the PostScript language and the PDF
|
||||
file format. It also includes a C library that implements the graphics
|
||||
capabilities of the PostScript language. It supports a wide variety of
|
||||
output file formats and printers.")
|
||||
(license license:agpl3+)
|
||||
(home-page "https://www.gnu.org/software/ghostscript/")
|
||||
(properties '((upstream-name . "gnu-ghostscript")))))
|
||||
(home-page "https://www.ghostscript.com/")
|
||||
(license license:agpl3+)))
|
||||
|
||||
(define-public ghostscript/x
|
||||
(package/inherit ghostscript
|
||||
|
@ -216,27 +261,11 @@ output file formats and printers.")
|
|||
("libxt" ,libxt)
|
||||
,@(package-inputs ghostscript)))))
|
||||
|
||||
(define ghostscript/fixed
|
||||
(package
|
||||
(inherit ghostscript)
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source ghostscript))
|
||||
(patches
|
||||
(append
|
||||
(origin-patches (package-source ghostscript))
|
||||
(search-patches "ghostscript-CVE-2017-8291.patch")))))))
|
||||
|
||||
(define-public ijs
|
||||
(package
|
||||
(name "ijs")
|
||||
(version "9.14.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-"
|
||||
version ".tar.xz"))
|
||||
(sha256 (base32
|
||||
"0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1"))))
|
||||
(version (package-version ghostscript))
|
||||
(source (package-source ghostscript))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("libtool" ,libtool)
|
||||
|
@ -244,31 +273,29 @@ output file formats and printers.")
|
|||
("autoconf" ,autoconf)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(alist-cons-after
|
||||
'unpack 'autogen
|
||||
(lambda _
|
||||
;; need to regenerate macros
|
||||
(system* "autoreconf" "-if")
|
||||
;; do not run configure
|
||||
(substitute* "autogen.sh"
|
||||
(("^.*\\$srcdir/configure.*") ""))
|
||||
(system* "bash" "autogen.sh")
|
||||
|
||||
;; create configure script in ./ijs/
|
||||
(chdir "ijs")
|
||||
;; do not run configure
|
||||
(substitute* "autogen.sh"
|
||||
(("^.*\\$srcdir/configure.*") "")
|
||||
(("^ + && echo Now type.*$") ""))
|
||||
(zero? (system* "bash" "autogen.sh")))
|
||||
%standard-phases)))
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'autogen
|
||||
(lambda _
|
||||
;; need to regenerate macros
|
||||
(system* "autoreconf" "-if")
|
||||
;; do not run configure
|
||||
(substitute* "autogen.sh"
|
||||
(("^.*\\$srcdir/configure.*") ""))
|
||||
(system* "bash" "autogen.sh")
|
||||
;; create configure script in ./ijs/
|
||||
(chdir "ijs")
|
||||
;; do not run configure
|
||||
(substitute* "autogen.sh"
|
||||
(("^.*\\$srcdir/configure.*") "")
|
||||
(("^ + && echo Now type.*$") ""))
|
||||
(zero? (system* "bash" "autogen.sh")))))))
|
||||
(synopsis "IJS driver framework for inkjet and other raster devices")
|
||||
(description
|
||||
"IJS is a protocol for transmission of raster page images. This package
|
||||
provides the reference implementation of the raster printer driver
|
||||
architecture.")
|
||||
(license license:expat)
|
||||
(home-page "https://www.gnu.org/software/ghostscript/")))
|
||||
(home-page (package-home-page ghostscript))))
|
||||
|
||||
(define-public gs-fonts
|
||||
(package
|
||||
|
@ -286,6 +313,10 @@ architecture.")
|
|||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; nothing to check, just files to copy
|
||||
|
||||
#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-1))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
|
@ -309,13 +340,13 @@ Ghostscript. It currently includes the 35 standard PostScript fonts.")
|
|||
(define-public libspectre
|
||||
(package
|
||||
(name "libspectre")
|
||||
(version "0.2.7")
|
||||
(version "0.2.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://libspectre.freedesktop.org/releases/libspectre-"
|
||||
version ".tar.gz"))
|
||||
(sha256 (base32
|
||||
"1v63lqc6bhhxwkpa43qmz8phqs8ci4dhzizyy16d3vkb20m846z8"))))
|
||||
"1a67iglsc3r05mzngyg9kb1gy8whq4fgsnyjwi7bqfw2i7rnl9b5"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("ghostscript" ,ghostscript)))
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages documentation)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
|
@ -216,7 +217,7 @@ also known as DXTn or DXTC) for Mesa.")
|
|||
(define-public mesa
|
||||
(package
|
||||
(name "mesa")
|
||||
(version "17.0.6")
|
||||
(version "17.1.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -226,10 +227,9 @@ also known as DXTn or DXTC) for Mesa.")
|
|||
version "/mesa-" version ".tar.xz")))
|
||||
(sha256
|
||||
(base32
|
||||
"17d60jjzg4ddm95gk2cqx0xz6b9anmmz6ax4majwr3gis2yg7v49"))
|
||||
"1bcwxin7nmbnv92xav381b6qxscsx1zzc71ryfvj03cglbkb1wq6"))
|
||||
(patches
|
||||
(search-patches "mesa-fix-32bit-test-failures.patch"
|
||||
"mesa-wayland-egl-symbols-check-mips.patch"
|
||||
(search-patches "mesa-wayland-egl-symbols-check-mips.patch"
|
||||
"mesa-skip-disk-cache-test.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
|
@ -246,6 +246,7 @@ also known as DXTn or DXTC) for Mesa.")
|
|||
`(("expat" ,expat)
|
||||
("dri2proto" ,dri2proto)
|
||||
("dri3proto" ,dri3proto)
|
||||
("libelf" ,libelf) ;required for r600 when using llvm
|
||||
("libva" ,(force libva-without-mesa))
|
||||
("libxml2" ,libxml2)
|
||||
;; TODO: Add 'libxml2-python' for OpenGL ES 1.1 and 2.0 support
|
||||
|
@ -261,7 +262,8 @@ also known as DXTn or DXTC) for Mesa.")
|
|||
("wayland" ,wayland)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("python" ,python-2)))
|
||||
("python" ,python-2)
|
||||
("which" ,(@ (gnu packages base) which))))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
'(,@(match (%current-system)
|
||||
|
@ -293,7 +295,7 @@ also known as DXTn or DXTC) for Mesa.")
|
|||
,@(match (%current-system)
|
||||
((or "x86_64-linux" "i686-linux")
|
||||
'("--with-dri-drivers=i915,i965,nouveau,r200,radeon,swrast"
|
||||
"--enable-gallium-llvm")) ; default is x86/x86_64 only
|
||||
"--enable-llvm")) ; default is x86/x86_64 only
|
||||
(_
|
||||
'("--with-dri-drivers=nouveau,r200,radeon,swrast"))))
|
||||
#:phases
|
||||
|
|
|
@ -347,6 +347,7 @@ bindings to call into the C library.")
|
|||
(uri (string-append "https://launchpad.net/intltool/trunk/"
|
||||
version "/+download/intltool-"
|
||||
version ".tar.gz"))
|
||||
(patches (search-patches "intltool-perl-compatibility.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1karx4sb7bnm2j67q0q74hspkfn6lqprpy5r99vkn5bb36a4viv7"))))
|
||||
|
|
|
@ -1163,7 +1163,7 @@ dealing with different structured file formats.")
|
|||
(define-public librsvg
|
||||
(package
|
||||
(name "librsvg")
|
||||
(version "2.40.16")
|
||||
(version "2.40.17")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||
|
@ -1171,7 +1171,7 @@ dealing with different structured file formats.")
|
|||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0bpz6gsq8xi1pb5k9ax6vinph460v14znch3y5yz167s0dmwz2yl"))))
|
||||
"1k39gyf7f5m9x0jvpcxvfcqswdb04xhm1lbwbjabn1f4xk5wbxp6"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -1375,6 +1375,17 @@ is intended for user preferences; not arbitrary data storage.")
|
|||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("intltool" ,intltool)))
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
(add-after 'configure 'use-our-intltool
|
||||
(lambda _
|
||||
;; Do not use the bundled intltool commands, which lack
|
||||
;; the "dotless @INC" fixes of our 'intltool' package.
|
||||
(substitute* (find-files "." "^Makefile$")
|
||||
(("^INTLTOOL_(EXTRACT|UPDATE|MERGE) = .*$" _ tool)
|
||||
(string-append "INTLTOOL_" tool " = intltool-"
|
||||
(string-downcase tool) "\n")))
|
||||
#t)))))
|
||||
(home-page "https://www.gnome.org")
|
||||
(synopsis "Base MIME and Application database for GNOME")
|
||||
(description "GNOME Mime Data is a module which contains the base MIME
|
||||
|
@ -2407,7 +2418,11 @@ libxml to ease remote use of the RESTful API.")
|
|||
(build-system gnu-build-system)
|
||||
(outputs '("out" "doc"))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
`(#:modules ((guix build utils)
|
||||
(guix build gnu-build-system)
|
||||
(ice-9 popen))
|
||||
|
||||
#:configure-flags
|
||||
(list (string-append "--with-html-dir="
|
||||
(assoc-ref %outputs "doc")
|
||||
"/share/gtk-doc/html")
|
||||
|
@ -2417,34 +2432,77 @@ libxml to ease remote use of the RESTful API.")
|
|||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'disable-unconnected-socket-test
|
||||
;; This test fails due to missing /etc/nsswitch.conf
|
||||
;; in the build environment.
|
||||
(lambda _
|
||||
(substitute* "tests/socket-test.c"
|
||||
((".*/sockets/unconnected.*") ""))
|
||||
#t))
|
||||
;; This test fails due to missing /etc/nsswitch.conf
|
||||
;; in the build environment.
|
||||
(lambda _
|
||||
(substitute* "tests/socket-test.c"
|
||||
((".*/sockets/unconnected.*") ""))
|
||||
#t))
|
||||
(add-before 'check 'pre-check
|
||||
(lambda _
|
||||
;; The 'check-local' target runs 'env LANG=C sort -u',
|
||||
;; unset 'LC_ALL' to make 'LANG' working.
|
||||
(unsetenv "LC_ALL")
|
||||
;; The ca-certificates.crt is not available in the build
|
||||
;; environment.
|
||||
(setenv "SSL_CERT_FILE" "/dev/null")
|
||||
;; HTTPD in Guix uses mod_event and does not build prefork.
|
||||
(substitute* "tests/httpd.conf"
|
||||
(("^LoadModule mpm_prefork_module.*$") "\n"))
|
||||
#t))
|
||||
(lambda _
|
||||
;; The 'check-local' target runs 'env LANG=C sort -u',
|
||||
;; unset 'LC_ALL' to make 'LANG' working.
|
||||
(unsetenv "LC_ALL")
|
||||
;; The ca-certificates.crt is not available in the build
|
||||
;; environment.
|
||||
(setenv "SSL_CERT_FILE" "/dev/null")
|
||||
;; HTTPD in Guix uses mod_event and does not build prefork.
|
||||
(substitute* "tests/httpd.conf"
|
||||
(("^LoadModule mpm_prefork_module.*$") "\n"))
|
||||
|
||||
;; Generate a self-signed certificate that has "localhost" as its
|
||||
;; 'dnsName'. Failing to do that, and starting with GnuTLS
|
||||
;; 3.5.12, tests such as "ssl-tests" fail:
|
||||
;;
|
||||
;; ERROR:ssl-test.c:406:do_tls_interaction_test: Unexpected status 6 Unacceptable TLS certificate (expected 200 OK)
|
||||
;;
|
||||
;; 'certtool' is interactive so we have to pipe it the answers.
|
||||
;; Reported at <https://bugzilla.gnome.org/show_bug.cgi?id=784696>.
|
||||
(let ((pipe (open-output-pipe "certtool --generate-self-signed \
|
||||
--load-privkey tests/test-key.pem --outfile tests/test-cert.pem")))
|
||||
(for-each (lambda (line)
|
||||
(display line pipe)
|
||||
(newline pipe))
|
||||
'("" ;Common name
|
||||
"" ;UID
|
||||
"Guix" ;Organizational unit name
|
||||
"GNU" ;Organization name
|
||||
"" ;Locality name
|
||||
"" ;State or province
|
||||
"" ;Country
|
||||
"" ;subject's domain component (DC)
|
||||
"" ;E-mail
|
||||
"" ;serial number
|
||||
"-1" ;expiration time
|
||||
"N" ;belong to authority?
|
||||
"N" ;web client certificate?
|
||||
"N" ;IPsec IKE?
|
||||
"Y" ;web server certificate?
|
||||
"localhost" ;dnsName of subject
|
||||
"" ;dnsName of subject (end)
|
||||
"" ;URI of subject
|
||||
"127.0.0.1" ;IP address of subject
|
||||
"" ;signing?
|
||||
"" ;encryption?
|
||||
"" ;sign OCSP requests?
|
||||
"" ;sign code?
|
||||
"" ;time stamping?
|
||||
"" ;email protection?
|
||||
"" ;URI of the CRL distribution point
|
||||
"y" ;above info OK?
|
||||
))
|
||||
(close-pipe pipe))
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(zero?
|
||||
(system* "make"
|
||||
;; Install vala bindings into $out.
|
||||
(string-append "vapidir=" %output
|
||||
"/share/vala/vapi")
|
||||
"install")))))))
|
||||
(lambda _
|
||||
(zero?
|
||||
(system* "make"
|
||||
;; Install vala bindings into $out.
|
||||
(string-append "vapidir=" %output
|
||||
"/share/vala/vapi")
|
||||
"install")))))))
|
||||
(native-inputs
|
||||
`(("glib:bin" ,glib "bin") ; for glib-mkenums
|
||||
`(("glib:bin" ,glib "bin") ; for glib-mkenums
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("intltool" ,intltool)
|
||||
("pkg-config" ,pkg-config)
|
||||
|
@ -2453,6 +2511,7 @@ libxml to ease remote use of the RESTful API.")
|
|||
;; These are needed for the tests.
|
||||
;; FIXME: Add PHP once available.
|
||||
("curl" ,curl)
|
||||
("gnutls" ,gnutls) ;for 'certtool'
|
||||
("httpd" ,httpd)))
|
||||
(propagated-inputs
|
||||
;; libsoup-2.4.pc refers to all these.
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
(define-public libgpg-error
|
||||
(package
|
||||
(name "libgpg-error")
|
||||
(version "1.26")
|
||||
(version "1.27")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -66,7 +66,7 @@
|
|||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0sgfia0syq78k1c9h10rkhc1nfv5v097icrprlx2x4qn074wnjsc"))))
|
||||
"1li95ni122fzinzlmxbln63nmgij63irxfvi52ws4zfbzv3am4sg"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://gnupg.org")
|
||||
(synopsis "Library of error values for GnuPG components")
|
||||
|
@ -82,15 +82,14 @@ Daemon and possibly more in the future.")
|
|||
(define-public libgcrypt
|
||||
(package
|
||||
(name "libgcrypt")
|
||||
(replacement libgcrypt-1.7.8)
|
||||
(version "1.7.6")
|
||||
(version "1.7.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1g05prhgqw4ryd0w433q8nhds0h93kf47hfjagi2r7dghkpaysk2"))))
|
||||
"16f1rsv4y4w2pk1il2jbcqggsb6mrlfva5vayd205fp68zm7d0ll"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("libgpg-error-host" ,libgpg-error)))
|
||||
|
@ -116,30 +115,6 @@ generation.")
|
|||
(properties '((ftp-server . "ftp.gnupg.org")
|
||||
(ftp-directory . "/gcrypt/libgcrypt")))))
|
||||
|
||||
(define libgcrypt-1.7.8
|
||||
(package
|
||||
(inherit libgcrypt)
|
||||
(version "1.7.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"16f1rsv4y4w2pk1il2jbcqggsb6mrlfva5vayd205fp68zm7d0ll"))))))
|
||||
|
||||
(define-public libgcrypt-1.5
|
||||
(package (inherit libgcrypt)
|
||||
(version "1.5.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ydy7bgra5jbq9mxl5x031nif3m6y3balc6ndw2ngj11wnsjc61h"))))))
|
||||
|
||||
(define-public libassuan
|
||||
(package
|
||||
(name "libassuan")
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
;;; Copyright © 2016, 2017 Petter <petter@mykolab.ch>
|
||||
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru>
|
||||
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -296,6 +297,13 @@ sequential processes (CSP) concurrent programming features added.")
|
|||
(substitute* "../misc/cgo/testcarchive/carchive_test.go"
|
||||
(("#!/usr/bin/env") (string-append "#!" (which "env"))))
|
||||
|
||||
;; Escape braces in test data to workaround test failure. For
|
||||
;; more information:
|
||||
;; https://github.com/golang/go/issues/20007
|
||||
;; FIXME: remove this once we upgrade to 1.9
|
||||
(substitute* "cmd/vet/testdata/copylock_func.go"
|
||||
(("struct\\{lock sync.Mutex\\}") "struct\\{lock sync.Mutex\\}"))
|
||||
|
||||
(substitute* "net/lookup_unix.go"
|
||||
(("/etc/protocols") (string-append net-base "/etc/protocols")))
|
||||
(substitute* "net/port_unix.go"
|
||||
|
|
|
@ -40,12 +40,18 @@
|
|||
(uri (string-append "mirror://gnu/groff/groff-" version
|
||||
".tar.gz"))
|
||||
(sha256 (base32
|
||||
"1998v2kcs288d3y7kfxpvl369nqi06zbbvjzafyvyl3pr7bajj1s"))))
|
||||
"1998v2kcs288d3y7kfxpvl369nqi06zbbvjzafyvyl3pr7bajj1s"))
|
||||
(patches (search-patches "groff-source-date-epoch.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out"
|
||||
"doc")) ;12MiB of PS, PDF, HTML, and examples
|
||||
(inputs `(("ghostscript" ,ghostscript)
|
||||
("netpbm" ,netpbm)))
|
||||
|
||||
;; Note: groff's HTML backend uses executables from netpbm when they are in
|
||||
;; $PATH. In practice, not having them doesn't prevent it from install its
|
||||
;; own HTML doc, nor does it change its capabilities, so we removed netpbm
|
||||
;; from 'inputs'.
|
||||
|
||||
(inputs `(("ghostscript" ,ghostscript)))
|
||||
(native-inputs `(("bison" ,bison)
|
||||
("perl" ,perl)
|
||||
("psutils" ,psutils)
|
||||
|
|
|
@ -154,7 +154,11 @@ without requiring the source code to be rewritten.")
|
|||
(inputs `(("libffi" ,libffi)
|
||||
("readline" ,readline)
|
||||
,@(libiconv-if-needed)
|
||||
,@(if (target-mingw?) '() `(("bash" ,bash)))))
|
||||
|
||||
;; We need Bash when cross-compiling because some of the scripts
|
||||
;; in bin/ refer to it. Use 'bash-minimal' because we don't need
|
||||
;; an interactive Bash with Readline and all.
|
||||
,@(if (target-mingw?) '() `(("bash" ,bash-minimal)))))
|
||||
(propagated-inputs
|
||||
`( ;; These ones aren't normally needed here, but since `libguile-2.0.la'
|
||||
;; reads `-lltdl -lunistring', adding them here will add the needed
|
||||
|
@ -213,24 +217,20 @@ without requiring the source code to be rewritten.")
|
|||
(home-page "https://www.gnu.org/software/guile/")
|
||||
(license license:lgpl3+)))
|
||||
|
||||
(define-public guile-2.0/fixed
|
||||
;; A package of Guile 2.0 that's rarely changed. It is the one used
|
||||
;; in the `base' module, and thus changing it entails a full rebuild.
|
||||
(package
|
||||
(inherit guile-2.0)
|
||||
(properties '((hidden? . #t))))) ;people should install 'guile-2.0'
|
||||
|
||||
(define-public guile-2.2
|
||||
(package (inherit guile-2.0)
|
||||
(name "guile")
|
||||
(version "2.2.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
|
||||
;; Note: we are limited to one of the compression formats
|
||||
;; supported by the bootstrap binaries, so no lzip here.
|
||||
(uri (string-append "mirror://gnu/guile/guile-" version
|
||||
".tar.lz"))
|
||||
".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1dnh75h4rkx1zflpsngznkwcd6afn6zrc5x3xq7n946pm5bnx5bq"))
|
||||
"1azm25zcmxif0skxfrp11d2wc89nrzpjaann9yxdw6pvjxhs948w"))
|
||||
(modules '((guix build utils)))
|
||||
|
||||
;; Remove the pre-built object files. Instead, build everything
|
||||
|
@ -250,6 +250,17 @@ without requiring the source code to be rewritten.")
|
|||
(files '("lib/guile/2.2/site-ccache"
|
||||
"share/guile/site/2.2")))))))
|
||||
|
||||
(define-public guile-2.2/fixed
|
||||
;; A package of Guile 2.2 that's rarely changed. It is the one used
|
||||
;; in the `base' module, and thus changing it entails a full rebuild.
|
||||
(package
|
||||
(inherit guile-2.2)
|
||||
(properties '((hidden? . #t) ;people should install 'guile-2.2'
|
||||
(timeout . 72000) ;20 hours
|
||||
(max-silent-time . 36000))) ;10 hours (needed on ARM
|
||||
; when heavily loaded)
|
||||
(replacement #f)))
|
||||
|
||||
(define-public guile-next
|
||||
(deprecated-package "guile-next" guile-2.2))
|
||||
|
||||
|
@ -1742,7 +1753,11 @@ dictionary and suggesting spelling corrections.")
|
|||
("automake" ,automake)
|
||||
("libtool" ,libtool)
|
||||
;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
|
||||
("gettext" ,gettext-minimal)))
|
||||
("gettext" ,gettext-minimal)
|
||||
|
||||
;; Bash with loadable module support, for the test
|
||||
;; suite.
|
||||
("bash-full" ,bash)))
|
||||
(inputs `(("guile" ,guile-2.0)
|
||||
("bash:include" ,bash "include")))
|
||||
(synopsis "Extend Bash using Guile")
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
(package
|
||||
(name "icu4c")
|
||||
(version "58.2")
|
||||
(replacement icu4c/fixed)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -42,6 +41,9 @@
|
|||
"/icu4c-"
|
||||
(string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
|
||||
"-src.tgz"))
|
||||
(patches
|
||||
(search-patches "icu4c-CVE-2017-7867-CVE-2017-7868.patch"
|
||||
"icu4c-reset-keyword-list-iterator.patch"))
|
||||
(sha256
|
||||
(base32 "036shcb3f8bm1lynhlsb4kpjm9s9c2vdiir01vg216rs2l8482ib"))))
|
||||
(build-system gnu-build-system)
|
||||
|
@ -68,15 +70,6 @@ C/C++ part.")
|
|||
(license x11)
|
||||
(home-page "http://site.icu-project.org/")))
|
||||
|
||||
(define icu4c/fixed
|
||||
(package
|
||||
(inherit icu4c)
|
||||
(source (origin
|
||||
(inherit (package-source icu4c))
|
||||
(patches
|
||||
(search-patches "icu4c-CVE-2017-7867-CVE-2017-7868.patch"
|
||||
"icu4c-reset-keyword-list-iterator.patch"))))))
|
||||
|
||||
(define-public java-icu4j
|
||||
(package
|
||||
(name "java-icu4j")
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
(define-public libpng
|
||||
(package
|
||||
(name "libpng")
|
||||
(version "1.6.28")
|
||||
(version "1.6.29")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
|
||||
|
@ -83,7 +83,8 @@
|
|||
"ftp://ftp.simplesystems.org/pub/libpng/png/src/history"
|
||||
"/libpng16/libpng-" version ".tar.xz")))
|
||||
(sha256
|
||||
(base32 "0ylgyx93hnk38haqrh8prd3ax5ngzwvjqw5cxw7p9nxmwsfyrlyq"))))
|
||||
(base32
|
||||
"0fgjqp7x6jynacmqh6dj72cn6nnf6yxjfqqqfsxrx0pyx22bcia2"))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; libpng.la says "-lz", so propagate it.
|
||||
|
@ -383,31 +384,21 @@ extracting icontainer icon files.")
|
|||
(define-public libtiff
|
||||
(package
|
||||
(name "libtiff")
|
||||
(replacement libtiff-4.0.8)
|
||||
(version "4.0.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://download.osgeo.org/libtiff/tiff-"
|
||||
version ".tar.gz"))
|
||||
(patches (search-patches "libtiff-heap-overflow-tiffcp.patch"
|
||||
"libtiff-null-dereference.patch"
|
||||
"libtiff-heap-overflow-tif-dirread.patch"
|
||||
"libtiff-heap-overflow-pixarlog-luv.patch"
|
||||
"libtiff-divide-by-zero.patch"
|
||||
"libtiff-divide-by-zero-ojpeg.patch"
|
||||
"libtiff-tiffcp-underflow.patch"
|
||||
"libtiff-invalid-read.patch"
|
||||
"libtiff-CVE-2016-10092.patch"
|
||||
"libtiff-heap-overflow-tiffcrop.patch"
|
||||
"libtiff-divide-by-zero-tiffcrop.patch"
|
||||
"libtiff-CVE-2016-10093.patch"
|
||||
"libtiff-divide-by-zero-tiffcp.patch"
|
||||
"libtiff-assertion-failure.patch"
|
||||
"libtiff-CVE-2016-10094.patch"
|
||||
"libtiff-CVE-2017-5225.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"06ghqhr4db1ssq0acyyz49gr8k41gzw6pqb6mbn5r7jqp77s4hwz"))))
|
||||
(version "4.0.8")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://download.osgeo.org/libtiff/tiff-"
|
||||
version ".tar.gz"))
|
||||
(patches
|
||||
(search-patches "libtiff-tiffgetfield-bugs.patch"
|
||||
"libtiff-CVE-2016-10688.patch"
|
||||
"libtiff-CVE-2017-9936.patch"
|
||||
"libtiff-tiffycbcrtorgb-integer-overflow.patch"
|
||||
"libtiff-tiffycbcrtorgbinit-integer-overflow.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0419mh6kkhz5fkyl77gv0in8x4d2jpdpfs147y8mj86rrjlabmsr"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out"
|
||||
"doc")) ;1.3 MiB of HTML documentation
|
||||
|
@ -417,9 +408,6 @@ extracting icontainer icon files.")
|
|||
(assoc-ref %outputs "doc")
|
||||
"/share/doc/"
|
||||
,name "-" ,version))))
|
||||
;; Build with a patched GCC to work around <http://bugs.gnu.org/24703>.
|
||||
(native-inputs
|
||||
`(("gcc@5" ,gcc-5)))
|
||||
(inputs `(("zlib" ,zlib)
|
||||
("libjpeg" ,libjpeg)))
|
||||
(synopsis "Library for handling TIFF files")
|
||||
|
@ -432,24 +420,6 @@ collection of tools for doing simple manipulations of TIFF images.")
|
|||
"See COPYRIGHT in the distribution."))
|
||||
(home-page "http://www.simplesystems.org/libtiff/")))
|
||||
|
||||
(define libtiff-4.0.8
|
||||
(package
|
||||
(inherit libtiff)
|
||||
(version "4.0.8")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://download.osgeo.org/libtiff/tiff-"
|
||||
version ".tar.gz"))
|
||||
(patches (search-patches "libtiff-tiffgetfield-bugs.patch"
|
||||
"libtiff-CVE-2016-10688.patch"
|
||||
"libtiff-CVE-2017-9936.patch"
|
||||
"libtiff-tiffycbcrtorgb-integer-overflow.patch"
|
||||
"libtiff-tiffycbcrtorgbinit-integer-overflow.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0419mh6kkhz5fkyl77gv0in8x4d2jpdpfs147y8mj86rrjlabmsr"))))))
|
||||
|
||||
(define-public leptonica
|
||||
(package
|
||||
(name "leptonica")
|
||||
|
@ -1065,7 +1035,16 @@ differences in file encoding, image quality, and other small variations.")
|
|||
("libjpeg" ,libjpeg)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:make-flags '("CXXFLAGS=-fpermissive"))) ;required for MHashPP.cc
|
||||
`(#:make-flags '("CXXFLAGS=-fpermissive") ;required for MHashPP.cc
|
||||
|
||||
#:phases (modify-phases %standard-phases
|
||||
(add-before 'configure 'set-perl-search-path
|
||||
(lambda _
|
||||
;; Work around "dotless @INC" build failure.
|
||||
(setenv "PERL5LIB"
|
||||
(string-append (getcwd) "/tests:"
|
||||
(getenv "PERL5LIB")))
|
||||
#t)))))
|
||||
(home-page "http://steghide.sourceforge.net")
|
||||
(synopsis "Image and audio steganography")
|
||||
(description
|
||||
|
|
|
@ -1602,7 +1602,7 @@ IcedTea build harness.")
|
|||
(string-append "lib" name ".so")))))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(catch 'encoding-error
|
||||
(catch 'decoding-error
|
||||
(lambda ()
|
||||
(substitute* file
|
||||
(("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2012, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -23,8 +24,10 @@
|
|||
|
||||
(define-module (gnu packages kerberos)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages libidn)
|
||||
#:use-module (gnu packages linux)
|
||||
|
@ -32,6 +35,7 @@
|
|||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages databases)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
|
@ -42,7 +46,7 @@
|
|||
(define-public mit-krb5
|
||||
(package
|
||||
(name "mit-krb5")
|
||||
(version "1.14.4")
|
||||
(version "1.15.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://web.mit.edu/kerberos/dist/krb5/"
|
||||
|
@ -50,20 +54,13 @@
|
|||
"/krb5-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"158bgq9xcg5ljgzia1880ak7m9g6vf2r009rzdqif5n9h111m9h3"))))
|
||||
"0igbi5d095c2hgpn2cixpc4q2ij8vgg2bx7yjfly5zfmvlqqhz23"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("bison" ,bison)
|
||||
("perl" ,perl)))
|
||||
(arguments
|
||||
`(;; Work around "No rule to make target '../../include/gssapi/gssapi.h',
|
||||
;; needed by 'authgss_prot.so'."
|
||||
#:parallel-build? #f
|
||||
|
||||
;; Likewise with tests.
|
||||
#:parallel-tests? #f
|
||||
|
||||
;; XXX: On 32-bit systems, 'kdb5_util' hangs on an fcntl/F_SETLKW call
|
||||
`(;; XXX: On 32-bit systems, 'kdb5_util' hangs on an fcntl/F_SETLKW call
|
||||
;; while running the tests in 'src/tests'.
|
||||
#:tests? ,(string=? (%current-system) "x86_64-linux")
|
||||
|
||||
|
@ -105,25 +102,23 @@ cryptography.")
|
|||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/shishi/shishi-"
|
||||
version ".tar.gz"))
|
||||
(patches (search-patches "shishi-fix-libgcrypt-detection.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"032qf72cpjdfffq1yq54gz3ahgqf2ijca4vl31sfabmjzq9q370d"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(;; This is required since we patch some of the build scripts.
|
||||
;; Remove for the next Shishi release after 1.0.2 or when
|
||||
;; removing 'shishi-fix-libgcrypt-detection.patch'.
|
||||
#:configure-flags '("ac_cv_libgcrypt=yes")))
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("gnutls" ,gnutls)
|
||||
("libidn" ,libidn)
|
||||
("linux-pam" ,linux-pam-1.2)
|
||||
("zlib" ,zlib)
|
||||
;; libgcrypt 1.6 fails because of the following test:
|
||||
;; #include <gcrypt.h>
|
||||
;; /* GCRY_MODULE_ID_USER was added in 1.4.4 and gc-libgcrypt.c
|
||||
;; will fail on startup if we don't have 1.4.4 or later, so
|
||||
;; test for it early. */
|
||||
;; #if !defined GCRY_MODULE_ID_USER
|
||||
;; error too old libgcrypt
|
||||
;; #endif
|
||||
("libgcrypt" ,libgcrypt-1.5)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
("libtasn1" ,libtasn1)))
|
||||
(home-page "https://www.gnu.org/software/shishi/")
|
||||
(synopsis "Implementation of the Kerberos 5 network security system")
|
||||
|
|
|
@ -15,7 +15,7 @@ main="(@ (gnu build-support ld-wrapper) ld-wrapper)"
|
|||
exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@"
|
||||
!#
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -35,6 +35,7 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line))
|
|||
(define-module (gnu build-support ld-wrapper)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 match)
|
||||
#:autoload (ice-9 rdelim) (read-string)
|
||||
#:export (ld-wrapper))
|
||||
|
||||
;;; Commentary:
|
||||
|
@ -222,9 +223,44 @@ impure library ~s~%"
|
|||
'()
|
||||
library-files))
|
||||
|
||||
(define (expand-arguments args)
|
||||
;; Expand ARGS such that "response file" arguments, such as "@args.txt", are
|
||||
;; expanded (info "(gcc) Overall Options").
|
||||
(define (response-file-arguments file)
|
||||
(when %debug?
|
||||
(format (current-error-port)
|
||||
"ld-wrapper: attempting to read arguments from '~a'~%" file))
|
||||
|
||||
;; FIXME: Options can contain whitespace if they are protected by single
|
||||
;; or double quotes; this is not implemented here.
|
||||
(string-tokenize (call-with-input-file file read-string)))
|
||||
|
||||
(define result
|
||||
(fold-right (lambda (arg result)
|
||||
(if (string-prefix? "@" arg)
|
||||
(let ((file (string-drop arg 1)))
|
||||
(append (catch 'system-error
|
||||
(lambda ()
|
||||
(response-file-arguments file))
|
||||
(lambda args
|
||||
;; FILE doesn't exist or cannot be read so
|
||||
;; leave ARG as is.
|
||||
(list arg)))
|
||||
result))
|
||||
(cons arg result)))
|
||||
'()
|
||||
args))
|
||||
|
||||
;; If there are "@" arguments in RESULT *and* we can expand them (they don't
|
||||
;; refer to nonexistent files), then recurse.
|
||||
(if (equal? result args)
|
||||
result
|
||||
(expand-arguments result)))
|
||||
|
||||
(define (ld-wrapper . args)
|
||||
;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches.
|
||||
(let* ((path (library-search-path args))
|
||||
(let* ((args (expand-arguments args))
|
||||
(path (library-search-path args))
|
||||
(libs (library-files-linked args path))
|
||||
(args (append args (rpath-arguments libs))))
|
||||
(when %debug?
|
||||
|
|
|
@ -121,7 +121,7 @@ programs.")
|
|||
(define-public libuv
|
||||
(package
|
||||
(name "libuv")
|
||||
(version "1.11.0")
|
||||
(version "1.12.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/libuv/libuv/archive/v"
|
||||
|
@ -129,7 +129,7 @@ programs.")
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0yhw86011l2dg2prms0d86szygrix4pxpgnyzs7iljy2xk3fxivf"))))
|
||||
"0l0jrb5q3i8br10c8skc6xdwlxkmlpn3n0kngaqd68fsi1593kj1"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-cons-after
|
||||
|
@ -157,20 +157,20 @@ similar IOCP, and event ports, asynchronous TCP/UDP sockets, asynchronous DNS
|
|||
resolution, asynchronous file system operations, and threading primitives.")
|
||||
|
||||
;; A few files fall under other non-copyleft licenses; see 'LICENSE' for
|
||||
;; details.
|
||||
(license x11)))
|
||||
;; details. Documentation is CC-BY 4.0 as of 1.12.0; see 'LICENSE-docs'.
|
||||
(license (list expat cc-by4.0))))
|
||||
|
||||
(define-public perl-anyevent
|
||||
(package
|
||||
(name "perl-anyevent")
|
||||
(version "7.13")
|
||||
(version "7.14")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
|
||||
"AnyEvent-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1b84ilkbrfbzqapv25x8z6gva92skbrf2srybdabb1wnxx6ky454"))))
|
||||
"0akxr9y0q9yjkl614x4clbiiayvh5a67y8gmci54plxs4p95i4sk"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-canary-stability" ,perl-canary-stability)))
|
||||
|
|
|
@ -42,7 +42,8 @@
|
|||
name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0dya49bnhianl0r65m65xndz6ls2jn1xngyn72gd28ls3n7bnvnh"))))
|
||||
"0dya49bnhianl0r65m65xndz6ls2jn1xngyn72gd28ls3n7bnvnh"))
|
||||
(patches (search-patches "libffi-3.2.1-complex-alpha.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments `(#:phases (alist-cons-after 'install 'post-install
|
||||
,post-install-phase
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -20,6 +20,7 @@
|
|||
|
||||
(define-module (gnu packages libidn)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages libunistring)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
|
@ -53,42 +54,19 @@ Java libraries.")
|
|||
(define-public libidn2
|
||||
(package
|
||||
(name "libidn2")
|
||||
(version "0.16")
|
||||
(version "2.0.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://alpha.gnu.org/gnu/libidn/libidn2-"
|
||||
version ".tar.gz"))
|
||||
(uri (string-append "mirror://gnu/libidn/" name "-" version
|
||||
".tar.lz"))
|
||||
(sha256
|
||||
(base32
|
||||
"13v8kh4d5nfkymai88zlw3h7k4x9khrpdpv97waf4ah8ykzrxb9g"))))
|
||||
;; XXX: Make sure to remove the 'create-pkg-config' phase
|
||||
;; below when this package is updated to >= 0.17.
|
||||
"0pqaj8d01aj4i110669fincqs10kgynyqcrmq2q7pss8v9dcd1jq"))))
|
||||
(native-inputs
|
||||
`(("lzip" ,lzip)))
|
||||
(inputs
|
||||
`(("libunistring" ,libunistring)))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'install 'create-pkgconfig-file
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(pkgconfig (string-append out "/lib/pkgconfig")))
|
||||
(mkdir-p pkgconfig)
|
||||
(call-with-output-file (string-append pkgconfig "/libidn2.pc")
|
||||
(lambda (port)
|
||||
(format port "prefix=~a
|
||||
exec_prefix=${prefix}
|
||||
libdir=${exec_prefix}/lib
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: Libidn2
|
||||
Description: Library implementing IDNA2008 and TR46
|
||||
Version: ~a
|
||||
Libs: -L${libdir} -lidn2
|
||||
Cflags: -I${includedir}
|
||||
"
|
||||
out ,version)))
|
||||
#t))))))
|
||||
(synopsis "Internationalized domain name library for IDNA2008")
|
||||
(description "Libidn2 is an internationalized domain library implementing
|
||||
the IDNA2008 specifications. Libidn2 is believed to be a complete IDNA2008
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -25,14 +26,14 @@
|
|||
(define-public libsigsegv
|
||||
(package
|
||||
(name "libsigsegv")
|
||||
(version "2.10")
|
||||
(version "2.11")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://gnu/libsigsegv/libsigsegv-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44"))))
|
||||
(base32 "063swdvq7mbmc1clv0rnh20grwln1zfc2qnm0sa1hivcxyr2wz6x"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.gnu.org/software/libsigsegv/")
|
||||
(synopsis "Library for handling page faults")
|
||||
|
@ -44,12 +45,12 @@
|
|||
;; linux-libre-headers-cross-mips64el-linux-gnu-3.3.8/include/asm/sigcontext.h:57:8: error: redefinition of 'struct sigcontext'
|
||||
(if (string-contains (or (%current-target-system) (%current-system))
|
||||
"mips64el")
|
||||
`(#:phases (alist-cons-before
|
||||
'configure 'patch-mips-old-h
|
||||
(lambda _
|
||||
(substitute* "src/fault-linux-mips-old.h"
|
||||
(("#include <asm/sigcontext\\.h>") "")))
|
||||
%standard-phases))
|
||||
`(#:phases (modify-phases %standard-phases
|
||||
(add-before 'configure 'patch-mips-old-h
|
||||
(lambda _
|
||||
(substitute* "src/fault-linux-mips-old.h"
|
||||
(("#include <asm/sigcontext\\.h>") ""))
|
||||
#t))))
|
||||
'()))
|
||||
(description
|
||||
"GNU libsigsegv is a library to handle page faults, which occur when a
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -24,6 +25,7 @@
|
|||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base))
|
||||
|
||||
(define-public libunistring
|
||||
|
@ -37,7 +39,11 @@
|
|||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"15z76qrmrvkc3c6hfq2lzzqysgd21s682f2smycfab5g598n8drf"))))
|
||||
"15z76qrmrvkc3c6hfq2lzzqysgd21s682f2smycfab5g598n8drf"))
|
||||
;; test-lock has performance issues on multi-core machines,
|
||||
;; it hangs or takes a long time to complete.
|
||||
;; This is a commit from gnulib to fix this issue.
|
||||
(patches (search-patches "libunistring-gnulib-multi-core.patch"))))
|
||||
(propagated-inputs (libiconv-if-needed))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
|
|
|
@ -125,6 +125,7 @@
|
|||
((string-prefix? "arm" arch) "arm")
|
||||
((string-prefix? "aarch64" arch) "arm64")
|
||||
((string-prefix? "alpha" arch) "alpha")
|
||||
((string-prefix? "powerpc" arch) "powerpc") ;including "powerpc64le"
|
||||
(else arch))))
|
||||
|
||||
(define-public (system->defconfig system)
|
||||
|
@ -132,6 +133,7 @@
|
|||
defconfig. Return the appropiate make target if applicable, otherwise return
|
||||
\"defconfig\"."
|
||||
(cond ((string-prefix? "powerpc-" system) "pmac32_defconfig")
|
||||
((string-prefix? "powerpc64le-" system) "ppc64_defconfig")
|
||||
(else "defconfig")))
|
||||
|
||||
(define (linux-libre-urls version)
|
||||
|
@ -499,7 +501,7 @@ providing the system administrator with some help in common tasks.")
|
|||
(define-public util-linux
|
||||
(package
|
||||
(name "util-linux")
|
||||
(version "2.29.2")
|
||||
(version "2.30")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://kernel.org/linux/utils/"
|
||||
|
@ -507,7 +509,7 @@ providing the system administrator with some help in common tasks.")
|
|||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1qz81w8vzrmy8xn9yx7ls4amkbgwx6vr62pl6kv9g7r0g3ba9kmc"))
|
||||
"13d0ax8bcapga8phj2nclx86w57ddqxbr98ajibpzjq6d7zs8262"))
|
||||
(patches (search-patches "util-linux-tests.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
|
@ -668,7 +670,7 @@ slabtop, and skill.")
|
|||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libusb" ,libusb)
|
||||
("eudev" ,eudev-with-hwdb)))
|
||||
("eudev" ,eudev)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "http://www.linux-usb.org/")
|
||||
|
@ -911,7 +913,7 @@ intercept and print the system calls executed by the program.")
|
|||
(define-public alsa-lib
|
||||
(package
|
||||
(name "alsa-lib")
|
||||
(version "1.1.3")
|
||||
(version "1.1.4.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -919,7 +921,7 @@ intercept and print the system calls executed by the program.")
|
|||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"174n2psp0328xcy2f1ayls67598bxli6q9cf00d2qnac3012aa3i"))))
|
||||
"0xjvi381105gldhv0z872a0x58sghznyx19j45lw5iyi2h68gfwi"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.alsa-project.org/")
|
||||
(synopsis "The Advanced Linux Sound Architecture libraries")
|
||||
|
@ -2042,7 +2044,7 @@ from the module-init-tools project.")
|
|||
;; The post-systemd fork, maintained by Gentoo.
|
||||
(package
|
||||
(name "eudev")
|
||||
(version "3.2.1")
|
||||
(version "3.2.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -2050,10 +2052,18 @@ from the module-init-tools project.")
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"06gyyl90n85x8i7lfhns514y1kg1ians13l467admyzy3kjxkqsp"))
|
||||
(patches (search-patches "eudev-rules-directory.patch"
|
||||
"eudev-conflicting-declaration.patch"))))
|
||||
"0qqgbgpm5wdllk0s04pf80nwc8pr93xazwri1bylm1f15zn5ck1y"))
|
||||
(patches (search-patches "eudev-rules-directory.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
(add-after 'install 'build-hwdb
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Build OUT/etc/udev/hwdb.bin. This allows 'lsusb' and
|
||||
;; similar tools to display product names.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(zero? (system* (string-append out "/bin/udevadm")
|
||||
"hwdb" "--update"))))))))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("perl" ,perl)
|
||||
|
@ -2072,19 +2082,7 @@ time.")
|
|||
(license license:gpl2+)))
|
||||
|
||||
(define-public eudev-with-hwdb
|
||||
;; TODO: Merge with 'eudev'.
|
||||
(package
|
||||
(inherit eudev)
|
||||
(name "eudev-with-hwdb")
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
(add-after 'install 'build-hwdb
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Build OUT/etc/udev/hwdb.bin. This allows 'lsusb' and
|
||||
;; similar tools to display product names.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(zero? (system* (string-append out "/bin/udevadm")
|
||||
"hwdb" "--update"))))))))))
|
||||
(deprecated-package "eudev-with-hwdb" eudev))
|
||||
|
||||
(define-public lvm2
|
||||
(package
|
||||
|
@ -3024,7 +3022,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
|
|||
"1sb4aflgyrl7apricjipa8wx95qm69yja0lmn2f19g560c3v1b2c"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
`(#:configure-flags
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(list "--sysconfdir=/etc"
|
||||
"--localstatedir=/var"
|
||||
|
@ -3053,7 +3051,12 @@ Bluetooth audio output devices like headphones or loudspeakers.")
|
|||
(string-append out "/lib/udev/hid2hci --method"))
|
||||
(("/sbin/udevadm")
|
||||
(string-append (assoc-ref inputs "eudev") "/bin/udevadm")))
|
||||
#t))))))
|
||||
#t))))
|
||||
|
||||
;; FIXME: Skip one test that segfaults on ARM.
|
||||
,@(if (string=? (%current-system) "armhf-linux")
|
||||
'(#:make-flags '("XFAIL_TESTS=unit/test-gatt"))
|
||||
'())))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("gettext" ,gettext-minimal)))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -502,23 +502,23 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
|
|||
;; .scm and .go files relative to its installation directory, rather
|
||||
;; than in hard-coded configure-time paths.
|
||||
(let* ((patches (cons* (search-patch "guile-relocatable.patch")
|
||||
(search-patch "guile-default-utf8.patch")
|
||||
(search-patch "guile-2.2-default-utf8.patch")
|
||||
(search-patch "guile-linux-syscalls.patch")
|
||||
(origin-patches (package-source guile-2.0))))
|
||||
(source (origin (inherit (package-source guile-2.0))
|
||||
(origin-patches (package-source guile-2.2))))
|
||||
(source (origin (inherit (package-source guile-2.2))
|
||||
(patches patches)))
|
||||
(guile (package (inherit guile-2.0)
|
||||
(name (string-append (package-name guile-2.0) "-static"))
|
||||
(guile (package (inherit guile-2.2)
|
||||
(name (string-append (package-name guile-2.2) "-static"))
|
||||
(source source)
|
||||
(synopsis "Statically-linked and relocatable Guile")
|
||||
|
||||
;; Remove the 'debug' output (see above for the reason.)
|
||||
(outputs (delete "debug" (package-outputs guile-2.0)))
|
||||
(outputs (delete "debug" (package-outputs guile-2.2)))
|
||||
|
||||
(propagated-inputs
|
||||
`(("bdw-gc" ,libgc)
|
||||
,@(alist-delete "bdw-gc"
|
||||
(package-propagated-inputs guile-2.0))))
|
||||
(package-propagated-inputs guile-2.2))))
|
||||
(arguments
|
||||
`(;; When `configure' checks for ltdl availability, it
|
||||
;; doesn't try to link using libtool, and thus fails
|
||||
|
@ -534,7 +534,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
|
|||
(("^guile_LDFLAGS =")
|
||||
"guile_LDFLAGS = -all-static")
|
||||
|
||||
;; Add `-ldl' *after* libguile-2.0.la.
|
||||
;; Add `-ldl' *after* libguile-2.2.la.
|
||||
(("^guile_LDADD =(.*)$" _ ldadd)
|
||||
(string-append "guile_LDADD = "
|
||||
(string-trim-right ldadd)
|
||||
|
@ -561,13 +561,13 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
|
|||
(out (assoc-ref %outputs "out"))
|
||||
(guile1 (string-append in "/bin/guile"))
|
||||
(guile2 (string-append out "/bin/guile")))
|
||||
(mkdir-p (string-append out "/share/guile/2.0"))
|
||||
(copy-recursively (string-append in "/share/guile/2.0")
|
||||
(string-append out "/share/guile/2.0"))
|
||||
(mkdir-p (string-append out "/share/guile/2.2"))
|
||||
(copy-recursively (string-append in "/share/guile/2.2")
|
||||
(string-append out "/share/guile/2.2"))
|
||||
|
||||
(mkdir-p (string-append out "/lib/guile/2.0/ccache"))
|
||||
(copy-recursively (string-append in "/lib/guile/2.0/ccache")
|
||||
(string-append out "/lib/guile/2.0/ccache"))
|
||||
(mkdir-p (string-append out "/lib/guile/2.2/ccache"))
|
||||
(copy-recursively (string-append in "/lib/guile/2.2/ccache")
|
||||
(string-append out "/lib/guile/2.2/ccache"))
|
||||
|
||||
(mkdir (string-append out "/bin"))
|
||||
(copy-file guile1 guile2)
|
||||
|
|
|
@ -1868,7 +1868,7 @@ implemented in ANSI C, and MPI for communications.")
|
|||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("zlib" ,zlib)
|
||||
("flex" ,flex-2.6.1) ; A bug in flex prevents building with flex-2.6.3.
|
||||
("flex" ,flex)
|
||||
("bison" ,bison)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
|
|
@ -195,22 +195,23 @@ terminal using ncurses.")
|
|||
(define-public ncmpcpp
|
||||
(package
|
||||
(name "ncmpcpp")
|
||||
(version "0.7.7")
|
||||
(version "0.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "http://ncmpcpp.rybczak.net/stable/ncmpcpp-"
|
||||
(string-append "https://ncmpcpp.rybczak.net/stable/ncmpcpp-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1vq19m36608pvw1g8nbcaqqb89wsw05v35pi45xwr20z7g4bxg5p"))))
|
||||
"0nj6ky805a55acj0w57sbn3vfmmkbqp97rhbi0q9848n10f2l3rg"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("libmpdclient" ,libmpdclient)
|
||||
("boost" ,boost)
|
||||
("readline" ,readline)
|
||||
("ncurses" ,ncurses)
|
||||
("taglib" ,taglib)
|
||||
("icu4c" ,icu4c)))
|
||||
("icu4c" ,icu4c)
|
||||
("curl" ,curl)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
|
@ -221,7 +222,7 @@ terminal using ncurses.")
|
|||
but it provides new useful features such as support for regular expressions
|
||||
for library searches, extended song format, items filtering, the ability to
|
||||
sort playlists, and a local file system browser.")
|
||||
(home-page "http://ncmpcpp.rybczak.net/")
|
||||
(home-page "https://ncmpcpp.rybczak.net/")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public mpdscribble
|
||||
|
|
|
@ -38,12 +38,12 @@
|
|||
(define-public ncurses
|
||||
(package
|
||||
(name "ncurses")
|
||||
(replacement ncurses/fixed)
|
||||
(version "6.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/ncurses/ncurses-"
|
||||
version ".tar.gz"))
|
||||
(patches (search-patches "ncurses-CVE-2017-10684-10685.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0q3jck7lna77z5r42f13c4xglc7azd19pxfrjrpgp2yf615w4lgm"))))
|
||||
|
@ -190,17 +190,6 @@ ncursesw library provides wide character support.")
|
|||
(license x11)
|
||||
(home-page "https://www.gnu.org/software/ncurses/")))
|
||||
|
||||
(define ncurses/fixed
|
||||
(package
|
||||
(inherit ncurses)
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source ncurses))
|
||||
(patches
|
||||
(append
|
||||
(origin-patches (package-source ncurses))
|
||||
(search-patches "ncurses-CVE-2017-10684-10685.patch")))))))
|
||||
|
||||
(define-public ncurses/gpm
|
||||
(package/inherit ncurses
|
||||
(name "ncurses-with-gpm")
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
(define-public netpbm
|
||||
(package
|
||||
(name "netpbm")
|
||||
(version "10.61.01")
|
||||
(version "10.78.3")
|
||||
(source (origin
|
||||
(method svn-fetch)
|
||||
;; At the time of first packaging, the "super-stable" and
|
||||
|
@ -48,10 +48,10 @@
|
|||
;; To determine the correct release: "svn log version.mk".
|
||||
(uri (svn-reference
|
||||
(url "http://svn.code.sf.net/p/netpbm/code/advanced")
|
||||
(revision 1832)))
|
||||
(revision 2965)))
|
||||
(sha256
|
||||
(base32
|
||||
"1mj1pqq18yj0yb6l24zfjls7axhqmiv0pvcaabl5xvc4a0dm543j"))
|
||||
"1k7as9qi1942wyjxpvbf02wg0h4braw44m3m3vvi8sm9y5z1m967"))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
|
@ -87,6 +87,9 @@
|
|||
(drop "ppmtopjxl" in "converter/ppm")
|
||||
|
||||
;; Remove timestamps from the generated code.
|
||||
(substitute* "buildtools/makepointerman"
|
||||
(("gmctime[(][)]")
|
||||
"\"Thu Jan 1 00:00:00 1970\""))
|
||||
(substitute* "buildtools/stamp-date"
|
||||
(("^DATE=.*")
|
||||
"DATE=\"Thu Jan 01 00:00:00+0000 1970\"\n")
|
||||
|
@ -124,8 +127,8 @@
|
|||
|
||||
(let ((rgb (string-append (assoc-ref inputs "xorg-rgb")
|
||||
"/share/X11/rgb.txt")))
|
||||
(substitute* "pm_config.in.h"
|
||||
(("/usr/share/X11/rgb.txt") rgb))
|
||||
(substitute* "config.mk"
|
||||
(("/usr/share/netpbm/rgb.txt") rgb))
|
||||
|
||||
;; Our Ghostscript no longer provides the 'gs' command, only
|
||||
;; 'gsc', so look for that instead.
|
||||
|
@ -146,7 +149,15 @@
|
|||
(("all-in-place.test") "")
|
||||
(("pnmpsnr.test") "")
|
||||
(("pnmremap1.test") "")
|
||||
(("gif-roundtrip.test") ""))
|
||||
(("gif-roundtrip.test") "")
|
||||
|
||||
;; These two tests started failing in netpbm-10.78.3.
|
||||
(("jpeg-roundtrip.test") "")
|
||||
(("pbmtext.test") "")
|
||||
|
||||
;; Skip tests that use nonfree programs that we don't build.
|
||||
(("ps-alt-roundtrip.test") "" )
|
||||
(("pbm-misc-converters.test") ""))
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs make-flags #:allow-other-keys)
|
||||
|
|
|
@ -40,8 +40,7 @@
|
|||
(define-public openldap
|
||||
(package
|
||||
(name "openldap")
|
||||
(replacement openldap/fixed)
|
||||
(version "2.4.44")
|
||||
(version "2.4.45")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
|
||||
|
@ -51,14 +50,14 @@
|
|||
"ftp://mirror.switch.ch/mirror/OpenLDAP/"
|
||||
"openldap-release/openldap-" version ".tgz")
|
||||
(string-append
|
||||
"ftp://ftp.OpenLDAP.org/pub/OpenLDAP/"
|
||||
"https://www.openldap.org/software/download/OpenLDAP/"
|
||||
"openldap-release/openldap-" version ".tgz")
|
||||
(string-append
|
||||
"ftp://ftp.dti.ad.jp/pub/net/OpenLDAP/"
|
||||
"openldap-release/openldap-" version ".tgz")))
|
||||
(sha256
|
||||
(base32
|
||||
"0044p20hx07fwgw2mbwj1fkx04615hhs1qyx4mawj2bhqvrnppnp"))))
|
||||
"091qvwk5dkcpp17ziabcnh3rg3m7qwzw2pihfcd1d5fdxgywzmnd"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("bdb" ,bdb-5.3)
|
||||
("cyrus-sasl" ,cyrus-sasl)
|
||||
|
@ -71,23 +70,25 @@
|
|||
(arguments
|
||||
`(#:tests? #f
|
||||
#:phases
|
||||
(alist-cons-after
|
||||
'configure 'provide-libtool
|
||||
(lambda _ (copy-file (which "libtool") "libtool"))
|
||||
%standard-phases)))
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'configure 'provide-libtool
|
||||
(lambda _ (copy-file (which "libtool") "libtool")
|
||||
#t))
|
||||
(add-after 'install 'patch-sasl-path
|
||||
;; Give -L arguments for cyrus-sasl to avoid propagation.
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(sasl (assoc-ref inputs "cyrus-sasl")))
|
||||
(substitute* (map (lambda (f) (string-append out "/" f))
|
||||
'("lib/libldap.la" "lib/libldap_r.la"))
|
||||
(("-lsasl2" lib)
|
||||
(string-append "-L" sasl "/lib " lib)))
|
||||
#t))))))
|
||||
(synopsis "Implementation of the Lightweight Directory Access Protocol")
|
||||
(description
|
||||
"OpenLDAP is a free implementation of the Lightweight Directory Access Protocol.")
|
||||
(license openldap2.8)
|
||||
(home-page "http://www.openldap.org/")))
|
||||
|
||||
(define openldap/fixed
|
||||
(package
|
||||
(inherit openldap)
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source openldap))
|
||||
(patches (search-patches "openldap-CVE-2017-9287.patch"))))))
|
||||
(home-page "https://www.openldap.org/")))
|
||||
|
||||
(define-public nss-pam-ldapd
|
||||
(package
|
||||
|
|
|
@ -261,7 +261,7 @@
|
|||
(base32
|
||||
"1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r"))))))
|
||||
(propagated-inputs
|
||||
`(("gnutls" ,gnutls/guile-2.2) ;for 'guix download' & co.
|
||||
`(("gnutls" ,gnutls)
|
||||
("guile-json" ,guile-json)
|
||||
("guile-ssh" ,guile-ssh)
|
||||
("guile-git" ,guile-git)))
|
||||
|
@ -288,7 +288,7 @@ the Nix package manager.")
|
|||
`(("guile" ,guile-2.0)
|
||||
,@(alist-delete "guile" (package-inputs guix))))
|
||||
(propagated-inputs
|
||||
`(("gnutls" ,gnutls)
|
||||
`(("gnutls" ,gnutls/guile-2.0)
|
||||
("guile-json" ,guile2.0-json)
|
||||
("guile-ssh" ,guile2.0-ssh)
|
||||
("guile-git" ,guile2.0-git)))))
|
||||
|
|
|
@ -5,9 +5,6 @@ Not applying the first patch (apparently) leads to miscompiled firmware,
|
|||
and loading it fails with a "Target is unresponsive" message from the
|
||||
'ath9k_htc' module.
|
||||
|
||||
The final hunk, applied to 'gas/config/tc-xtensa.c', is copied from the
|
||||
upstream file 'local/patches/binutils-2.27_fixup.patch'.
|
||||
|
||||
From dbca73446265ce01b8e11462c3346b25953e3399 Mon Sep 17 00:00:00 2001
|
||||
From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
|
||||
Date: Mon, 7 Jan 2013 15:59:53 +0530
|
||||
|
@ -28969,20 +28966,3 @@ index 30f4f41..fe9b051 100644
|
|||
#define XCHAL_MAX_INSTRUCTION_SIZE 3
|
||||
--
|
||||
1.8.1
|
||||
|
||||
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
|
||||
index d062044..ca261ae 100644
|
||||
--- a/gas/config/tc-xtensa.c
|
||||
+++ b/gas/config/tc-xtensa.c
|
||||
@@ -2228,7 +2228,7 @@ xg_reverse_shift_count (char **cnt_argp)
|
||||
cnt_arg = *cnt_argp;
|
||||
|
||||
/* replace the argument with "31-(argument)" */
|
||||
- new_arg = concat ("31-(", cnt_argp, ")", (char *) NULL);
|
||||
+ new_arg = concat ("31-(", cnt_arg, ")", (char *) NULL);
|
||||
|
||||
free (cnt_arg);
|
||||
*cnt_argp = new_arg;
|
||||
--
|
||||
2.10.1
|
||||
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
Bash 4.2.0(1)-release, which we use during bootstrap, does not yield the
|
||||
"x" case in:
|
||||
|
||||
case x"$EMULATION_NAME" in x) ;; *) ;; esac
|
||||
|
||||
when 'EMULATION_NAME' is undefined. Bash 4.3.30(1)-release doesn't have this
|
||||
problem. Work around it.
|
||||
|
||||
This Bash bug was fixed
|
||||
in <http://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-007>.
|
||||
|
||||
--- a/ld/emulparams/elf32bmipn32-defs.sh
|
||||
+++ b/ld/emulparams/elf32bmipn32-defs.sh
|
||||
@@ -13,7 +13,7 @@ LITTLE_OUTPUT_FORMAT="elf32-littlemips"
|
||||
TEMPLATE_NAME=elf32
|
||||
EXTRA_EM_FILE=mipself
|
||||
|
||||
-case x"$EMULATION_NAME" in
|
||||
+case "x$EMULATION_NAME" in
|
||||
xelf32*n32*) ELFSIZE=32 ;;
|
||||
xelf64*) ELFSIZE=64 ;;
|
||||
x) ;;
|
|
@ -1,22 +1,33 @@
|
|||
This patch fixes 100% reproducible test failures on arm-linux-gnueabihf in our
|
||||
the build environment chroot, as reported at <https://bugs.gnu.org/26253>.
|
||||
It is a followup to this upstream patch:
|
||||
the build environment chroot, as reported at <https://bugs.gnu.org/26253>,
|
||||
and now on x86_64-linux-gnu as well. It is a variant of this upstream patch:
|
||||
|
||||
commit 28803c8a3144d5d4363cdbd148bbe067af1a67c2
|
||||
Author: Pádraig Brady <P@draigBrady.com>
|
||||
Date: Fri Mar 3 00:25:54 2017 -0800
|
||||
commit f5422009389678680dba9ff4ecb7d33632ee3383
|
||||
Author: Ludovic Courtès <ludo@gnu.org>
|
||||
Date: Mon Mar 27 20:34:39 2017 -0700
|
||||
|
||||
tests: avoid a spurious failure on older debian
|
||||
tests: avoid false ulimit failure on some systems
|
||||
|
||||
* tests/misc/cut-huge-range.sh: On some systems returns_ may
|
||||
use more memory, so incorporate that in the determination
|
||||
of the ulimit value to use. Noticed on ARMv7 with bash-4.4.12,
|
||||
and x86_64 with bash-4.2.37.
|
||||
Fixes http://bugs.gnu.org/26253
|
||||
|
||||
... which appeared to be insufficient.
|
||||
|
||||
diff --git a/tests/misc/cut-huge-range.sh b/tests/misc/cut-huge-range.sh
|
||||
index 6b3c5b6ed..55b7b640e 100755
|
||||
--- a/tests/misc/cut-huge-range.sh
|
||||
+++ b/tests/misc/cut-huge-range.sh
|
||||
@@ -22,6 +22,7 @@ getlimits_
|
||||
@@ -20,9 +20,9 @@
|
||||
print_ver_ cut
|
||||
getlimits_
|
||||
|
||||
vm=$(get_min_ulimit_v_ cut -b1 /dev/null) \
|
||||
-vm=$(get_min_ulimit_v_ cut -b1 /dev/null) \
|
||||
+vm=$(get_min_ulimit_v_ sh -c 'cut -b1 /dev/null') \
|
||||
|| skip_ "this shell lacks ulimit support"
|
||||
+vm=$(($vm + $(getconf PAGESIZE))) # avoid spurious failures
|
||||
vm=$(($vm + 1000)) # avoid spurious failures
|
||||
|
||||
# sed script to subtract one from the input.
|
||||
# Each input line should consist of a positive decimal number.
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
Coreutils fails to cross compile for other platforms because cu_install_program
|
||||
is not being evaluated properly. This patch fixes it.
|
||||
See <https://lists.gnu.org/archive/html/coreutils/2017-01/msg00039.html>
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -5023,7 +5023,7 @@ pr = progs-readme
|
||||
@CROSS_COMPILING_FALSE@cu_install_program = src/ginstall
|
||||
|
||||
# Use the just-built 'ginstall', when not cross-compiling.
|
||||
-@CROSS_COMPILING_TRUE@cu_install_program = @INSTALL_PROGRAM@
|
||||
+@CROSS_COMPILING_TRUE@cu_install_program := @INSTALL@
|
||||
info_TEXINFOS = doc/coreutils.texi
|
||||
doc_coreutils_TEXINFOS = \
|
||||
doc/perm.texi \
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
Fix build failure due to conflicting declaration of
|
||||
keyboard_lookup_key() in gperf-3.1:
|
||||
|
||||
https://bugs.gentoo.org/show_bug.cgi?id=604864
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
|
||||
https://github.com/gentoo/eudev/commit/5bab4d8de0dcbb8e2e7d4d5125b4aea1652a0d60
|
||||
|
||||
From 5bab4d8de0dcbb8e2e7d4d5125b4aea1652a0d60 Mon Sep 17 00:00:00 2001
|
||||
From: "Anthony G. Basile" <blueness@gentoo.org>
|
||||
Date: Thu, 5 Jan 2017 16:21:17 -0500
|
||||
Subject: [PATCH] src/udev/udev-builtin-keyboard.c: fix build with gperf 3.1
|
||||
|
||||
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
|
||||
---
|
||||
src/udev/udev-builtin-keyboard.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
|
||||
index 73171c3..fad3520 100644
|
||||
--- a/src/udev/udev-builtin-keyboard.c
|
||||
+++ b/src/udev/udev-builtin-keyboard.c
|
||||
@@ -28,7 +28,6 @@
|
||||
|
||||
#include "udev.h"
|
||||
|
||||
-static const struct key *keyboard_lookup_key(const char *str, unsigned len);
|
||||
#include "keyboard-keys-from-name.h"
|
||||
#include "keyboard-keys-to-name.h"
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
Fix regression caused by fix for CVE-2016-0718 when building with -DXML_UNICODE.
|
||||
|
||||
Discussion:
|
||||
|
||||
https://sourceforge.net/p/expat/bugs/539/
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
|
||||
https://sourceforge.net/p/expat/code_git/ci/af507cef2c93cb8d40062a0abe43a4f4e9158fb2/
|
||||
|
||||
From af507cef2c93cb8d40062a0abe43a4f4e9158fb2 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Pipping <sebastian@pipping.org>
|
||||
Date: Sun, 17 Jul 2016 20:22:29 +0200
|
||||
Subject: [PATCH 1/2] Fix regression bug #539 (needs -DXML_UNICODE)
|
||||
|
||||
Thanks to Andy Wang and Karl Waclawek!
|
||||
---
|
||||
expat/lib/xmlparse.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
|
||||
index b308e67..0d5dd7b 100644
|
||||
--- a/lib/xmlparse.c
|
||||
+++ b/lib/xmlparse.c
|
||||
@@ -2468,7 +2468,7 @@ doContent(XML_Parser parser,
|
||||
&fromPtr, rawNameEnd,
|
||||
(ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1);
|
||||
convLen = (int)(toPtr - (XML_Char *)tag->buf);
|
||||
- if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) {
|
||||
+ if ((fromPtr >= rawNameEnd) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) {
|
||||
tag->name.strLen = convLen;
|
||||
break;
|
||||
}
|
||||
--
|
||||
2.10.0
|
|
@ -0,0 +1,294 @@
|
|||
This patch fixes performance problems on multi-core machines
|
||||
as reported at <https://bugs.gnu.org/26441>.
|
||||
|
||||
See commit 480d374e596a0ee3fed168ab42cd84c313ad3c89 in Gnulib
|
||||
by Bruno Haible <bruno@clisp.org>.
|
||||
|
||||
diff --git a/tests/test-lock.c b/tests/test-lock.c
|
||||
index a992f64..fb18dee 100644
|
||||
--- a/tests/test-lock.c
|
||||
+++ b/tests/test-lock.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Test of locking in multithreaded situations.
|
||||
- Copyright (C) 2005, 2008-2015 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2005, 2008-2017 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -50,6 +50,28 @@
|
||||
Uncomment this to see if the operating system has a fair scheduler. */
|
||||
#define EXPLICIT_YIELD 1
|
||||
|
||||
+/* Whether to use 'volatile' on some variables that communicate information
|
||||
+ between threads. If set to 0, a semaphore or a lock is used to protect
|
||||
+ these variables. If set to 1, 'volatile' is used; this is theoretically
|
||||
+ equivalent but can lead to much slower execution (e.g. 30x slower total
|
||||
+ run time on a 40-core machine), because 'volatile' does not imply any
|
||||
+ synchronization/communication between different CPUs. */
|
||||
+#define USE_VOLATILE 0
|
||||
+
|
||||
+#if USE_POSIX_THREADS && HAVE_SEMAPHORE_H
|
||||
+/* Whether to use a semaphore to communicate information between threads.
|
||||
+ If set to 0, a lock is used. If set to 1, a semaphore is used.
|
||||
+ Uncomment this to reduce the dependencies of this test. */
|
||||
+# define USE_SEMAPHORE 1
|
||||
+/* Mac OS X provides only named semaphores (sem_open); its facility for
|
||||
+ unnamed semaphores (sem_init) does not work. */
|
||||
+# if defined __APPLE__ && defined __MACH__
|
||||
+# define USE_NAMED_SEMAPHORE 1
|
||||
+# else
|
||||
+# define USE_UNNAMED_SEMAPHORE 1
|
||||
+# endif
|
||||
+#endif
|
||||
+
|
||||
/* Whether to print debugging messages. */
|
||||
#define ENABLE_DEBUGGING 0
|
||||
|
||||
@@ -90,6 +112,12 @@
|
||||
|
||||
#include "glthread/thread.h"
|
||||
#include "glthread/yield.h"
|
||||
+#if USE_SEMAPHORE
|
||||
+# include <errno.h>
|
||||
+# include <fcntl.h>
|
||||
+# include <semaphore.h>
|
||||
+# include <unistd.h>
|
||||
+#endif
|
||||
|
||||
#if ENABLE_DEBUGGING
|
||||
# define dbgprintf printf
|
||||
@@ -103,6 +131,132 @@
|
||||
# define yield()
|
||||
#endif
|
||||
|
||||
+#if USE_VOLATILE
|
||||
+struct atomic_int {
|
||||
+ volatile int value;
|
||||
+};
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+}
|
||||
+static int
|
||||
+get_atomic_int_value (struct atomic_int *ai)
|
||||
+{
|
||||
+ return ai->value;
|
||||
+}
|
||||
+static void
|
||||
+set_atomic_int_value (struct atomic_int *ai, int new_value)
|
||||
+{
|
||||
+ ai->value = new_value;
|
||||
+}
|
||||
+#elif USE_SEMAPHORE
|
||||
+/* This atomic_int implementation can only support the values 0 and 1.
|
||||
+ It is initially 0 and can be set to 1 only once. */
|
||||
+# if USE_UNNAMED_SEMAPHORE
|
||||
+struct atomic_int {
|
||||
+ sem_t semaphore;
|
||||
+};
|
||||
+#define atomic_int_semaphore(ai) (&(ai)->semaphore)
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+ sem_init (&ai->semaphore, 0, 0);
|
||||
+}
|
||||
+# endif
|
||||
+# if USE_NAMED_SEMAPHORE
|
||||
+struct atomic_int {
|
||||
+ sem_t *semaphore;
|
||||
+};
|
||||
+#define atomic_int_semaphore(ai) ((ai)->semaphore)
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+ sem_t *s;
|
||||
+ unsigned int count;
|
||||
+ for (count = 0; ; count++)
|
||||
+ {
|
||||
+ char name[80];
|
||||
+ /* Use getpid() in the name, so that different processes running at the
|
||||
+ same time will not interfere. Use ai in the name, so that different
|
||||
+ atomic_int in the same process will not interfere. Use a count in
|
||||
+ the name, so that even in the (unlikely) case that a semaphore with
|
||||
+ the specified name already exists, we can try a different name. */
|
||||
+ sprintf (name, "test-lock-%lu-%p-%u",
|
||||
+ (unsigned long) getpid (), ai, count);
|
||||
+ s = sem_open (name, O_CREAT | O_EXCL, 0600, 0);
|
||||
+ if (s == SEM_FAILED)
|
||||
+ {
|
||||
+ if (errno == EEXIST)
|
||||
+ /* Retry with a different name. */
|
||||
+ continue;
|
||||
+ else
|
||||
+ {
|
||||
+ perror ("sem_open failed");
|
||||
+ abort ();
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ /* Try not to leave a semaphore hanging around on the file system
|
||||
+ eternally, if we can avoid it. */
|
||||
+ sem_unlink (name);
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ ai->semaphore = s;
|
||||
+}
|
||||
+# endif
|
||||
+static int
|
||||
+get_atomic_int_value (struct atomic_int *ai)
|
||||
+{
|
||||
+ if (sem_trywait (atomic_int_semaphore (ai)) == 0)
|
||||
+ {
|
||||
+ if (sem_post (atomic_int_semaphore (ai)))
|
||||
+ abort ();
|
||||
+ return 1;
|
||||
+ }
|
||||
+ else if (errno == EAGAIN)
|
||||
+ return 0;
|
||||
+ else
|
||||
+ abort ();
|
||||
+}
|
||||
+static void
|
||||
+set_atomic_int_value (struct atomic_int *ai, int new_value)
|
||||
+{
|
||||
+ if (new_value == 0)
|
||||
+ /* It's already initialized with 0. */
|
||||
+ return;
|
||||
+ /* To set the value 1: */
|
||||
+ if (sem_post (atomic_int_semaphore (ai)))
|
||||
+ abort ();
|
||||
+}
|
||||
+#else
|
||||
+struct atomic_int {
|
||||
+ gl_lock_define (, lock)
|
||||
+ int value;
|
||||
+};
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+ gl_lock_init (ai->lock);
|
||||
+}
|
||||
+static int
|
||||
+get_atomic_int_value (struct atomic_int *ai)
|
||||
+{
|
||||
+ gl_lock_lock (ai->lock);
|
||||
+ int ret = ai->value;
|
||||
+ gl_lock_unlock (ai->lock);
|
||||
+ return ret;
|
||||
+}
|
||||
+static void
|
||||
+set_atomic_int_value (struct atomic_int *ai, int new_value)
|
||||
+{
|
||||
+ gl_lock_lock (ai->lock);
|
||||
+ ai->value = new_value;
|
||||
+ gl_lock_unlock (ai->lock);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#define ACCOUNT_COUNT 4
|
||||
|
||||
static int account[ACCOUNT_COUNT];
|
||||
@@ -170,12 +324,12 @@ lock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int lock_checker_done;
|
||||
+static struct atomic_int lock_checker_done;
|
||||
|
||||
static void *
|
||||
lock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!lock_checker_done)
|
||||
+ while (get_atomic_int_value (&lock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ());
|
||||
gl_lock_lock (my_lock);
|
||||
@@ -200,7 +354,8 @@ test_lock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- lock_checker_done = 0;
|
||||
+ init_atomic_int (&lock_checker_done);
|
||||
+ set_atomic_int_value (&lock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
checkerthread = gl_thread_create (lock_checker_thread, NULL);
|
||||
@@ -210,7 +365,7 @@ test_lock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- lock_checker_done = 1;
|
||||
+ set_atomic_int_value (&lock_checker_done, 1);
|
||||
gl_thread_join (checkerthread, NULL);
|
||||
check_accounts ();
|
||||
}
|
||||
@@ -254,12 +409,12 @@ rwlock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int rwlock_checker_done;
|
||||
+static struct atomic_int rwlock_checker_done;
|
||||
|
||||
static void *
|
||||
rwlock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!rwlock_checker_done)
|
||||
+ while (get_atomic_int_value (&rwlock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check rdlock\n", gl_thread_self_pointer ());
|
||||
gl_rwlock_rdlock (my_rwlock);
|
||||
@@ -284,7 +439,8 @@ test_rwlock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- rwlock_checker_done = 0;
|
||||
+ init_atomic_int (&rwlock_checker_done);
|
||||
+ set_atomic_int_value (&rwlock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
@@ -295,7 +451,7 @@ test_rwlock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- rwlock_checker_done = 1;
|
||||
+ set_atomic_int_value (&rwlock_checker_done, 1);
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (checkerthreads[i], NULL);
|
||||
check_accounts ();
|
||||
@@ -356,12 +512,12 @@ reclock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int reclock_checker_done;
|
||||
+static struct atomic_int reclock_checker_done;
|
||||
|
||||
static void *
|
||||
reclock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!reclock_checker_done)
|
||||
+ while (get_atomic_int_value (&reclock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ());
|
||||
gl_recursive_lock_lock (my_reclock);
|
||||
@@ -386,7 +542,8 @@ test_recursive_lock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- reclock_checker_done = 0;
|
||||
+ init_atomic_int (&reclock_checker_done);
|
||||
+ set_atomic_int_value (&reclock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
checkerthread = gl_thread_create (reclock_checker_thread, NULL);
|
||||
@@ -396,7 +553,7 @@ test_recursive_lock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- reclock_checker_done = 1;
|
||||
+ set_atomic_int_value (&reclock_checker_done, 1);
|
||||
gl_thread_join (checkerthread, NULL);
|
||||
check_accounts ();
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
The first patch is copied from the upstream source repository:
|
||||
|
||||
https://cgit.freedesktop.org/fontconfig/commit/?id=1ab5258f7c2abfafcd63a760ca08bf93591912da
|
||||
|
||||
The second patch is adapted from a message to from the OpenEmbedded mailing list:
|
||||
|
||||
http://lists.openembedded.org/pipermail/openembedded-core/2016-December/130213.html
|
||||
|
||||
From 1ab5258f7c2abfafcd63a760ca08bf93591912da Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 14 Dec 2016 16:11:05 -0800
|
||||
Subject: Avoid conflicts with integer width macros from TS 18661-1:2014
|
||||
|
||||
glibc 2.25+ has now defined these macros in <limits.h>
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=5b17fd0da62bf923cb61d1bb7b08cf2e1f1f9c1a
|
||||
|
||||
Create an alias for FC_CHAR_WIDTH for ABI compatibility
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
|
||||
index 5c72b22..070a557 100644
|
||||
--- a/fontconfig/fontconfig.h
|
||||
+++ b/fontconfig/fontconfig.h
|
||||
@@ -128,7 +128,8 @@ typedef int FcBool;
|
||||
#define FC_USER_CACHE_FILE ".fonts.cache-" FC_CACHE_VERSION
|
||||
|
||||
/* Adjust outline rasterizer */
|
||||
-#define FC_CHAR_WIDTH "charwidth" /* Int */
|
||||
+#define FC_CHARWIDTH "charwidth" /* Int */
|
||||
+#define FC_CHAR_WIDTH FC_CHARWIDTH
|
||||
#define FC_CHAR_HEIGHT "charheight"/* Int */
|
||||
#define FC_MATRIX "matrix" /* FcMatrix */
|
||||
|
||||
diff --git a/src/fcobjs.h b/src/fcobjs.h
|
||||
index 1fc4f65..d27864b 100644
|
||||
--- a/src/fcobjs.h
|
||||
+++ b/src/fcobjs.h
|
||||
@@ -51,7 +51,7 @@ FC_OBJECT (DPI, FcTypeDouble, NULL)
|
||||
FC_OBJECT (RGBA, FcTypeInteger, NULL)
|
||||
FC_OBJECT (SCALE, FcTypeDouble, NULL)
|
||||
FC_OBJECT (MINSPACE, FcTypeBool, NULL)
|
||||
-FC_OBJECT (CHAR_WIDTH, FcTypeInteger, NULL)
|
||||
+FC_OBJECT (CHARWIDTH, FcTypeInteger, NULL)
|
||||
FC_OBJECT (CHAR_HEIGHT, FcTypeInteger, NULL)
|
||||
FC_OBJECT (MATRIX, FcTypeMatrix, NULL)
|
||||
FC_OBJECT (CHARSET, FcTypeCharSet, FcCompareCharSet)
|
||||
--
|
||||
cgit v0.10.2
|
||||
|
||||
From 20cddc824c6501c2082cac41b162c34cd5fcc530 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem at gmail.com>
|
||||
Date: Sun, 11 Dec 2016 14:32:00 -0800
|
||||
Subject: [PATCH] Avoid conflicts with integer width macros from TS
|
||||
18661-1:2014
|
||||
|
||||
glibc 2.25+ has now defined these macros in <limits.h>
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=5b17fd0da62bf923cb61d1bb7b08cf2e1f1f9c1a
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem at gmail.com>
|
||||
---
|
||||
Upstream-Status: Submitted
|
||||
|
||||
fontconfig/fontconfig.h | 2 +-
|
||||
src/fcobjs.h | 2 +-
|
||||
src/fcobjshash.gperf | 2 +-
|
||||
src/fcobjshash.h | 2 +-
|
||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: fontconfig-2.12.1/src/fcobjshash.h
|
||||
===================================================================
|
||||
--- fontconfig-2.12.1.orig/src/fcobjshash.h
|
||||
+++ fontconfig-2.12.1/src/fcobjshash.h
|
||||
@@ -284,7 +284,7 @@ FcObjectTypeLookup (register const char
|
||||
{(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_CHARSET_OBJECT},
|
||||
{-1},
|
||||
#line 47 "fcobjshash.gperf"
|
||||
- {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHAR_WIDTH_OBJECT},
|
||||
+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHARWIDTH_OBJECT},
|
||||
#line 48 "fcobjshash.gperf"
|
||||
{(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_CHAR_HEIGHT_OBJECT},
|
||||
#line 55 "fcobjshash.gperf"
|
|
@ -1,124 +0,0 @@
|
|||
This patch fix the build on GNU/Hurd, due to PATH_MAX isn't defined.
|
||||
|
||||
The patch was adapted from upstream source repository:
|
||||
'<https://cgit.freedesktop.org/fontconfig/commit/?id=abdb6d658e1a16410dd1c964e365a3ebd5039e7c>'
|
||||
Commit: abdb6d658e1a16410dd1c964e365a3ebd5039e7c
|
||||
|
||||
---
|
||||
src/fcdefault.c | 34 +++++++++++++++++++++++++++-------
|
||||
src/fcint.h | 6 ++++++
|
||||
src/fcstat.c | 12 +++++++++++-
|
||||
3 files changed, 44 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/fcdefault.c b/src/fcdefault.c
|
||||
index 6647a8f..5afd7ec 100644
|
||||
--- a/src/fcdefault.c
|
||||
+++ b/src/fcdefault.c
|
||||
@@ -148,17 +148,34 @@ retry:
|
||||
prgname = FcStrdup ("");
|
||||
#else
|
||||
# if defined (HAVE_GETEXECNAME)
|
||||
- const char *p = getexecname ();
|
||||
+ char *p = FcStrdup(getexecname ());
|
||||
# elif defined (HAVE_READLINK)
|
||||
- char buf[PATH_MAX + 1];
|
||||
- int len;
|
||||
+ size_t size = FC_PATH_MAX;
|
||||
char *p = NULL;
|
||||
|
||||
- len = readlink ("/proc/self/exe", buf, sizeof (buf) - 1);
|
||||
- if (len != -1)
|
||||
+ while (1)
|
||||
{
|
||||
- buf[len] = '\0';
|
||||
- p = buf;
|
||||
+ char *buf = malloc (size);
|
||||
+ ssize_t len;
|
||||
+
|
||||
+ if (!buf)
|
||||
+ break;
|
||||
+
|
||||
+ len = readlink ("/proc/self/exe", buf, size - 1);
|
||||
+ if (len < 0)
|
||||
+ {
|
||||
+ free (buf);
|
||||
+ break;
|
||||
+ }
|
||||
+ if (len < size - 1)
|
||||
+ {
|
||||
+ buf[len] = 0;
|
||||
+ p = buf;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ free (buf);
|
||||
+ size *= 2;
|
||||
}
|
||||
# else
|
||||
char *p = NULL;
|
||||
@@ -176,6 +193,9 @@ retry:
|
||||
|
||||
if (!prgname)
|
||||
prgname = FcStrdup ("");
|
||||
+
|
||||
+ if (p)
|
||||
+ free (p);
|
||||
#endif
|
||||
|
||||
if (!fc_atomic_ptr_cmpexch (&default_prgname, NULL, prgname)) {
|
||||
diff --git a/src/fcint.h b/src/fcint.h
|
||||
index ac911ad..dad34c5 100644
|
||||
--- a/src/fcint.h
|
||||
+++ b/src/fcint.h
|
||||
@@ -70,6 +70,12 @@ extern pfnSHGetFolderPathA pSHGetFolderPathA;
|
||||
# define FC_DIR_SEPARATOR_S "/"
|
||||
#endif
|
||||
|
||||
+#ifdef PATH_MAX
|
||||
+#define FC_PATH_MAX PATH_MAX
|
||||
+#else
|
||||
+#define FC_PATH_MAX 128
|
||||
+#endif
|
||||
+
|
||||
#if __GNUC__ >= 4
|
||||
#define FC_UNUSED __attribute__((unused))
|
||||
#else
|
||||
diff --git a/src/fcstat.c b/src/fcstat.c
|
||||
index 1734fa4..f6e1aaa 100644
|
||||
--- a/src/fcstat.c
|
||||
+++ b/src/fcstat.c
|
||||
@@ -278,8 +278,13 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum)
|
||||
{
|
||||
#endif
|
||||
struct stat statb;
|
||||
- char f[PATH_MAX + 1];
|
||||
+ char *f = malloc (len + 1 + dlen + 1);
|
||||
|
||||
+ if (!f)
|
||||
+ {
|
||||
+ ret = -1;
|
||||
+ goto bail;
|
||||
+ }
|
||||
memcpy (f, dir, len);
|
||||
f[len] = FC_DIR_SEPARATOR;
|
||||
memcpy (&f[len + 1], files[n]->d_name, dlen);
|
||||
@@ -287,11 +292,16 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum)
|
||||
if (lstat (f, &statb) < 0)
|
||||
{
|
||||
ret = -1;
|
||||
+ free (f);
|
||||
goto bail;
|
||||
}
|
||||
if (S_ISDIR (statb.st_mode))
|
||||
+ {
|
||||
+ free (f);
|
||||
goto bail;
|
||||
+ }
|
||||
|
||||
+ free (f);
|
||||
dtype = statb.st_mode;
|
||||
#ifdef HAVE_STRUCT_DIRENT_D_TYPE
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
Fix CVE-2017-8105:
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8105
|
||||
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
|
||||
https://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=f958c48ee431bef8d4d466b40c9cb2d4dbcb7791
|
||||
|
||||
From f958c48ee431bef8d4d466b40c9cb2d4dbcb7791 Mon Sep 17 00:00:00 2001
|
||||
From: Werner Lemberg <wl@gnu.org>
|
||||
Date: Fri, 24 Mar 2017 09:15:10 +0100
|
||||
Subject: [PATCH] [psaux] Better protect `flex' handling.
|
||||
|
||||
Reported as
|
||||
|
||||
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
|
||||
|
||||
* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
|
||||
<callothersubr>: Since there is not a single flex operator but a
|
||||
series of subroutine calls, malformed fonts can call arbitrary other
|
||||
operators after the start of a flex, possibly adding points. For
|
||||
this reason we have to check the available number of points before
|
||||
inserting a point.
|
||||
---
|
||||
ChangeLog | 15 +++++++++++++++
|
||||
src/psaux/t1decode.c | 9 +++++++++
|
||||
2 files changed, 24 insertions(+)
|
||||
|
||||
diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c
|
||||
index af7b465e..7dd45135 100644
|
||||
--- a/src/psaux/t1decode.c
|
||||
+++ b/src/psaux/t1decode.c
|
||||
@@ -780,10 +780,19 @@
|
||||
/* point without adding any point to the outline */
|
||||
idx = decoder->num_flex_vectors++;
|
||||
if ( idx > 0 && idx < 7 )
|
||||
+ {
|
||||
+ /* in malformed fonts it is possible to have other */
|
||||
+ /* opcodes in the middle of a flex (which don't */
|
||||
+ /* increase `num_flex_vectors'); we thus have to */
|
||||
+ /* check whether we can add a point */
|
||||
+ if ( FT_SET_ERROR( t1_builder_check_points( builder, 1 ) ) )
|
||||
+ goto Syntax_Error;
|
||||
+
|
||||
t1_builder_add_point( builder,
|
||||
x,
|
||||
y,
|
||||
(FT_Byte)( idx == 3 || idx == 6 ) );
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
|
||||
--
|
||||
2.12.2
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
Fix CVE-2017-8287:
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8287
|
||||
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
https://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=3774fc08b502c3e685afca098b6e8a195aded6a0
|
||||
|
||||
From 3774fc08b502c3e685afca098b6e8a195aded6a0 Mon Sep 17 00:00:00 2001
|
||||
From: Werner Lemberg <wl@gnu.org>
|
||||
Date: Sun, 26 Mar 2017 08:32:09 +0200
|
||||
Subject: [PATCH] * src/psaux/psobjs.c (t1_builder_close_contour): Add safety
|
||||
guard.
|
||||
|
||||
Reported as
|
||||
|
||||
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
src/psaux/psobjs.c | 8 ++++++++
|
||||
2 files changed, 16 insertions(+)
|
||||
|
||||
diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c
|
||||
index d18e821a..0baf8368 100644
|
||||
--- a/src/psaux/psobjs.c
|
||||
+++ b/src/psaux/psobjs.c
|
||||
@@ -1718,6 +1718,14 @@
|
||||
first = outline->n_contours <= 1
|
||||
? 0 : outline->contours[outline->n_contours - 2] + 1;
|
||||
|
||||
+ /* in malformed fonts it can happen that a contour was started */
|
||||
+ /* but no points were added */
|
||||
+ if ( outline->n_contours && first == outline->n_points )
|
||||
+ {
|
||||
+ outline->n_contours--;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
/* We must not include the last point in the path if it */
|
||||
/* is located on the first point. */
|
||||
if ( outline->n_points > 1 )
|
||||
--
|
||||
2.12.2
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
Add missing include that triggers a build failure on PowerPC:
|
||||
|
||||
../../../../gcc-5.4.0/libsanitizer/asan/asan_linux.cc: In function ‘bool __asan::AsanInterceptsSignal(int)’:
|
||||
../../../../gcc-5.4.0/libsanitizer/asan/asan_linux.cc:222:20: error: ‘SIGSEGV’ was not declared in this scope
|
||||
return signum == SIGSEGV && common_flags()->handle_segv;
|
||||
^
|
||||
From <https://patchwork.ozlabs.org/patch/725596/>.
|
||||
|
||||
diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc
|
||||
index c504168..59087b9 100644
|
||||
--- a/libsanitizer/asan/asan_linux.cc
|
||||
+++ b/libsanitizer/asan/asan_linux.cc
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <dlfcn.h>
|
||||
#include <fcntl.h>
|
||||
#include <pthread.h>
|
||||
+#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <unwind.h>
|
|
@ -0,0 +1,178 @@
|
|||
This patch fixes performance problems on multi-core machines
|
||||
as reported at <https://bugs.gnu.org/26441>.
|
||||
|
||||
See commit 480d374e596a0ee3fed168ab42cd84c313ad3c89 in Gnulib
|
||||
by Bruno Haible <bruno@clisp.org>.
|
||||
|
||||
diff --git a/gettext-tools/gnulib-tests/test-lock.c b/gettext-tools/gnulib-tests/test-lock.c
|
||||
index cb734b4e6..aa6de2739 100644
|
||||
--- a/gettext-tools/gnulib-tests/test-lock.c
|
||||
+++ b/gettext-tools/gnulib-tests/test-lock.c
|
||||
@@ -50,6 +50,13 @@
|
||||
Uncomment this to see if the operating system has a fair scheduler. */
|
||||
#define EXPLICIT_YIELD 1
|
||||
|
||||
+/* Whether to use 'volatile' on some variables that communicate information
|
||||
+ between threads. If set to 0, a lock is used to protect these variables.
|
||||
+ If set to 1, 'volatile' is used; this is theoretically equivalent but can
|
||||
+ lead to much slower execution (e.g. 30x slower total run time on a 40-core
|
||||
+ machine. */
|
||||
+#define USE_VOLATILE 0
|
||||
+
|
||||
/* Whether to print debugging messages. */
|
||||
#define ENABLE_DEBUGGING 0
|
||||
|
||||
@@ -103,6 +110,51 @@
|
||||
# define yield()
|
||||
#endif
|
||||
|
||||
+#if USE_VOLATILE
|
||||
+struct atomic_int {
|
||||
+ volatile int value;
|
||||
+};
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+}
|
||||
+static int
|
||||
+get_atomic_int_value (struct atomic_int *ai)
|
||||
+{
|
||||
+ return ai->value;
|
||||
+}
|
||||
+static void
|
||||
+set_atomic_int_value (struct atomic_int *ai, int new_value)
|
||||
+{
|
||||
+ ai->value = new_value;
|
||||
+}
|
||||
+#else
|
||||
+struct atomic_int {
|
||||
+ gl_lock_define (, lock)
|
||||
+ int value;
|
||||
+};
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+ gl_lock_init (ai->lock);
|
||||
+}
|
||||
+static int
|
||||
+get_atomic_int_value (struct atomic_int *ai)
|
||||
+{
|
||||
+ gl_lock_lock (ai->lock);
|
||||
+ int ret = ai->value;
|
||||
+ gl_lock_unlock (ai->lock);
|
||||
+ return ret;
|
||||
+}
|
||||
+static void
|
||||
+set_atomic_int_value (struct atomic_int *ai, int new_value)
|
||||
+{
|
||||
+ gl_lock_lock (ai->lock);
|
||||
+ ai->value = new_value;
|
||||
+ gl_lock_unlock (ai->lock);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#define ACCOUNT_COUNT 4
|
||||
|
||||
static int account[ACCOUNT_COUNT];
|
||||
@@ -170,12 +222,12 @@ lock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int lock_checker_done;
|
||||
+static struct atomic_int lock_checker_done;
|
||||
|
||||
static void *
|
||||
lock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!lock_checker_done)
|
||||
+ while (get_atomic_int_value (&lock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ());
|
||||
gl_lock_lock (my_lock);
|
||||
@@ -200,7 +252,8 @@ test_lock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- lock_checker_done = 0;
|
||||
+ init_atomic_int (&lock_checker_done);
|
||||
+ set_atomic_int_value (&lock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
checkerthread = gl_thread_create (lock_checker_thread, NULL);
|
||||
@@ -210,7 +263,7 @@ test_lock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- lock_checker_done = 1;
|
||||
+ set_atomic_int_value (&lock_checker_done, 1);
|
||||
gl_thread_join (checkerthread, NULL);
|
||||
check_accounts ();
|
||||
}
|
||||
@@ -254,12 +307,12 @@ rwlock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int rwlock_checker_done;
|
||||
+static struct atomic_int rwlock_checker_done;
|
||||
|
||||
static void *
|
||||
rwlock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!rwlock_checker_done)
|
||||
+ while (get_atomic_int_value (&rwlock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check rdlock\n", gl_thread_self_pointer ());
|
||||
gl_rwlock_rdlock (my_rwlock);
|
||||
@@ -284,7 +337,8 @@ test_rwlock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- rwlock_checker_done = 0;
|
||||
+ init_atomic_int (&rwlock_checker_done);
|
||||
+ set_atomic_int_value (&rwlock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
@@ -295,7 +349,7 @@ test_rwlock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- rwlock_checker_done = 1;
|
||||
+ set_atomic_int_value (&rwlock_checker_done, 1);
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (checkerthreads[i], NULL);
|
||||
check_accounts ();
|
||||
@@ -356,12 +410,12 @@ reclock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int reclock_checker_done;
|
||||
+static struct atomic_int reclock_checker_done;
|
||||
|
||||
static void *
|
||||
reclock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!reclock_checker_done)
|
||||
+ while (get_atomic_int_value (&reclock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ());
|
||||
gl_recursive_lock_lock (my_reclock);
|
||||
@@ -386,7 +440,8 @@ test_recursive_lock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- reclock_checker_done = 0;
|
||||
+ init_atomic_int (&reclock_checker_done);
|
||||
+ set_atomic_int_value (&reclock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
checkerthread = gl_thread_create (reclock_checker_thread, NULL);
|
||||
@@ -396,7 +451,7 @@ test_recursive_lock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- reclock_checker_done = 1;
|
||||
+ set_atomic_int_value (&reclock_checker_done, 1);
|
||||
gl_thread_join (checkerthread, NULL);
|
||||
check_accounts ();
|
||||
}
|
|
@ -0,0 +1,185 @@
|
|||
This patch fixes performance problems on multi-core machines
|
||||
as reported at <https://bugs.gnu.org/26441>.
|
||||
|
||||
See commit 1afbcb06fded2a427b761dd1615b1e48e1e853cc in Gettext
|
||||
by Bruno Haible <bruno@clisp.org>.
|
||||
|
||||
diff --git a/gettext-runtime/tests/test-lock.c b/gettext-runtime/tests/test-lock.c
|
||||
index d279d1d60..51cec3d6b 100644
|
||||
--- a/gettext-runtime/tests/test-lock.c
|
||||
+++ b/gettext-runtime/tests/test-lock.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Test of locking in multithreaded situations.
|
||||
- Copyright (C) 2005, 2008-2016 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2005, 2008-2017 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
@@ -50,6 +50,13 @@
|
||||
Uncomment this to see if the operating system has a fair scheduler. */
|
||||
#define EXPLICIT_YIELD 1
|
||||
|
||||
+/* Whether to use 'volatile' on some variables that communicate information
|
||||
+ between threads. If set to 0, a lock is used to protect these variables.
|
||||
+ If set to 1, 'volatile' is used; this is theoretically equivalent but can
|
||||
+ lead to much slower execution (e.g. 30x slower total run time on a 40-core
|
||||
+ machine. */
|
||||
+#define USE_VOLATILE 0
|
||||
+
|
||||
/* Whether to print debugging messages. */
|
||||
#define ENABLE_DEBUGGING 0
|
||||
|
||||
@@ -214,6 +221,51 @@ static inline void * gl_thread_self_pointer (void)
|
||||
# define yield()
|
||||
#endif
|
||||
|
||||
+#if USE_VOLATILE
|
||||
+struct atomic_int {
|
||||
+ volatile int value;
|
||||
+};
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+}
|
||||
+static int
|
||||
+get_atomic_int_value (struct atomic_int *ai)
|
||||
+{
|
||||
+ return ai->value;
|
||||
+}
|
||||
+static void
|
||||
+set_atomic_int_value (struct atomic_int *ai, int new_value)
|
||||
+{
|
||||
+ ai->value = new_value;
|
||||
+}
|
||||
+#else
|
||||
+struct atomic_int {
|
||||
+ gl_lock_define (, lock)
|
||||
+ int value;
|
||||
+};
|
||||
+static void
|
||||
+init_atomic_int (struct atomic_int *ai)
|
||||
+{
|
||||
+ gl_lock_init (ai->lock);
|
||||
+}
|
||||
+static int
|
||||
+get_atomic_int_value (struct atomic_int *ai)
|
||||
+{
|
||||
+ gl_lock_lock (ai->lock);
|
||||
+ int ret = ai->value;
|
||||
+ gl_lock_unlock (ai->lock);
|
||||
+ return ret;
|
||||
+}
|
||||
+static void
|
||||
+set_atomic_int_value (struct atomic_int *ai, int new_value)
|
||||
+{
|
||||
+ gl_lock_lock (ai->lock);
|
||||
+ ai->value = new_value;
|
||||
+ gl_lock_unlock (ai->lock);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#define ACCOUNT_COUNT 4
|
||||
|
||||
static int account[ACCOUNT_COUNT];
|
||||
@@ -281,12 +333,12 @@ lock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int lock_checker_done;
|
||||
+static struct atomic_int lock_checker_done;
|
||||
|
||||
static void *
|
||||
lock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!lock_checker_done)
|
||||
+ while (get_atomic_int_value (&lock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ());
|
||||
gl_lock_lock (my_lock);
|
||||
@@ -311,7 +363,8 @@ test_lock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- lock_checker_done = 0;
|
||||
+ init_atomic_int (&lock_checker_done);
|
||||
+ set_atomic_int_value (&lock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
checkerthread = gl_thread_create (lock_checker_thread, NULL);
|
||||
@@ -321,7 +374,7 @@ test_lock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- lock_checker_done = 1;
|
||||
+ set_atomic_int_value (&lock_checker_done, 1);
|
||||
gl_thread_join (checkerthread, NULL);
|
||||
check_accounts ();
|
||||
}
|
||||
@@ -365,12 +418,12 @@ rwlock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int rwlock_checker_done;
|
||||
+static struct atomic_int rwlock_checker_done;
|
||||
|
||||
static void *
|
||||
rwlock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!rwlock_checker_done)
|
||||
+ while (get_atomic_int_value (&rwlock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check rdlock\n", gl_thread_self_pointer ());
|
||||
gl_rwlock_rdlock (my_rwlock);
|
||||
@@ -395,7 +448,8 @@ test_rwlock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- rwlock_checker_done = 0;
|
||||
+ init_atomic_int (&rwlock_checker_done);
|
||||
+ set_atomic_int_value (&rwlock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
@@ -406,7 +460,7 @@ test_rwlock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- rwlock_checker_done = 1;
|
||||
+ set_atomic_int_value (&rwlock_checker_done, 1);
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (checkerthreads[i], NULL);
|
||||
check_accounts ();
|
||||
@@ -467,12 +521,12 @@ reclock_mutator_thread (void *arg)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static volatile int reclock_checker_done;
|
||||
+static struct atomic_int reclock_checker_done;
|
||||
|
||||
static void *
|
||||
reclock_checker_thread (void *arg)
|
||||
{
|
||||
- while (!reclock_checker_done)
|
||||
+ while (get_atomic_int_value (&reclock_checker_done) == 0)
|
||||
{
|
||||
dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ());
|
||||
gl_recursive_lock_lock (my_reclock);
|
||||
@@ -497,7 +551,8 @@ test_recursive_lock (void)
|
||||
/* Initialization. */
|
||||
for (i = 0; i < ACCOUNT_COUNT; i++)
|
||||
account[i] = 1000;
|
||||
- reclock_checker_done = 0;
|
||||
+ init_atomic_int (&reclock_checker_done);
|
||||
+ set_atomic_int_value (&reclock_checker_done, 0);
|
||||
|
||||
/* Spawn the threads. */
|
||||
checkerthread = gl_thread_create (reclock_checker_thread, NULL);
|
||||
@@ -507,7 +562,7 @@ test_recursive_lock (void)
|
||||
/* Wait for the threads to terminate. */
|
||||
for (i = 0; i < THREAD_COUNT; i++)
|
||||
gl_thread_join (threads[i], NULL);
|
||||
- reclock_checker_done = 1;
|
||||
+ set_atomic_int_value (&reclock_checker_done, 1);
|
||||
gl_thread_join (checkerthread, NULL);
|
||||
check_accounts ();
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
The following patch was adapted for GNU Ghostscript
|
||||
by Mark H Weaver <mhw@netris.org> based on:
|
||||
|
||||
http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=ab109aaeb3ddba59518b036fb288402a65cf7ce8
|
||||
|
||||
From ab109aaeb3ddba59518b036fb288402a65cf7ce8 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Sat, 5 Mar 2016 14:56:03 -0800
|
||||
Subject: [PATCH] Bug 694724: Have filenameforall and getenv honor SAFER
|
||||
|
||||
---
|
||||
Resource/Init/gs_init.ps | 2 ++
|
||||
psi/zfile.c | 36 ++++++++++++++++++++----------------
|
||||
2 files changed, 22 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||
index fa33d88..99888ac 100644
|
||||
--- a/Resource/Init/gs_init.ps
|
||||
+++ b/Resource/Init/gs_init.ps
|
||||
@@ -2018,6 +2018,7 @@ readonly def
|
||||
|
||||
/.locksafe {
|
||||
.locksafe_userparams
|
||||
+ systemdict /getenv {pop //false} put
|
||||
% setpagedevice has the side effect of clearing the page, but
|
||||
% we will just document that. Using setpagedevice keeps the device
|
||||
% properties and pagedevice .LockSafetyParams in agreement even
|
||||
@@ -2036,6 +2037,7 @@ readonly def
|
||||
%%
|
||||
/.locksafeglobal {
|
||||
.locksafe_userparams
|
||||
+ systemdict /getenv {pop //false} put
|
||||
% setpagedevice has the side effect of clearing the page, but
|
||||
% we will just document that. Using setpagedevice keeps the device
|
||||
% properties and pagedevice .LockSafetyParams in agreement even
|
||||
diff --git a/psi/zfile.c b/psi/zfile.c
|
||||
index 320ecd5..0b9f299 100644
|
||||
--- a/psi/zfile.c
|
||||
+++ b/psi/zfile.c
|
||||
@@ -371,22 +371,26 @@ file_continue(i_ctx_t *i_ctx_p)
|
||||
|
||||
if (len < devlen)
|
||||
return_error(e_rangecheck); /* not even room for device len */
|
||||
- memcpy((char *)pscratch->value.bytes, iodev->dname, devlen);
|
||||
- code = iodev->procs.enumerate_next(pfen, (char *)pscratch->value.bytes + devlen,
|
||||
- len - devlen);
|
||||
- if (code == ~(uint) 0) { /* all done */
|
||||
- esp -= 5; /* pop proc, pfen, devlen, iodev , mark */
|
||||
- return o_pop_estack;
|
||||
- } else if (code > len) /* overran string */
|
||||
- return_error(e_rangecheck);
|
||||
- else {
|
||||
- push(1);
|
||||
- ref_assign(op, pscratch);
|
||||
- r_set_size(op, code + devlen);
|
||||
- push_op_estack(file_continue); /* come again */
|
||||
- *++esp = pscratch[2]; /* proc */
|
||||
- return o_push_estack;
|
||||
- }
|
||||
+
|
||||
+ do {
|
||||
+ memcpy((char *)pscratch->value.bytes, iodev->dname, devlen);
|
||||
+ code = iodev->procs.enumerate_next(pfen, (char *)pscratch->value.bytes + devlen,
|
||||
+ len - devlen);
|
||||
+ if (code == ~(uint) 0) { /* all done */
|
||||
+ esp -= 5; /* pop proc, pfen, devlen, iodev , mark */
|
||||
+ return o_pop_estack;
|
||||
+ } else if (code > len) /* overran string */
|
||||
+ return_error(e_rangecheck);
|
||||
+ else if (iodev != iodev_default(imemory)
|
||||
+ || (check_file_permissions_reduced(i_ctx_p, (char *)pscratch->value.bytes, code + devlen, "PermitFileReading")) == 0) {
|
||||
+ push(1);
|
||||
+ ref_assign(op, pscratch);
|
||||
+ r_set_size(op, code + devlen);
|
||||
+ push_op_estack(file_continue); /* come again */
|
||||
+ *++esp = pscratch[2]; /* proc */
|
||||
+ return o_push_estack;
|
||||
+ }
|
||||
+ } while(1);
|
||||
}
|
||||
/* Cleanup procedure for enumerating files */
|
||||
static int
|
||||
--
|
||||
2.9.1
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
The file names in the upstream patch below were modified to apply to GNU
|
||||
ghostscript.
|
||||
|
||||
From 0c0b0859ae1aba64861599f0e7f74f143f305932 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Tue, 7 Jul 2015 16:57:41 +0100
|
||||
Subject: [PATCH] Bug 696041: sanity check for memory allocation.
|
||||
|
||||
In gs_heap_alloc_bytes(), add a sanity check to ensure we don't overflow the
|
||||
variable holding the actual number of bytes we allocate.
|
||||
|
||||
No cluster differences
|
||||
---
|
||||
gs/base/gsmalloc.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/base/gsmalloc.c b/base/gsmalloc.c
|
||||
index 624552d..cad79c2 100644
|
||||
--- a/base/gsmalloc.c
|
||||
+++ b/base/gsmalloc.c
|
||||
@@ -178,7 +178,7 @@ gs_heap_alloc_bytes(gs_memory_t * mem, uint size, client_name_t cname)
|
||||
} else {
|
||||
uint added = size + sizeof(gs_malloc_block_t);
|
||||
|
||||
- if (mmem->limit - added < mmem->used)
|
||||
+ if (added <= size || mmem->limit - added < mmem->used)
|
||||
set_msg("exceeded limit");
|
||||
else if ((ptr = (byte *) Memento_label(malloc(added), cname)) == 0)
|
||||
set_msg("failed");
|
||||
--
|
||||
2.4.6
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
The following patch was adapted for GNU Ghostscript
|
||||
by Mark H Weaver <mhw@netris.org> based on:
|
||||
|
||||
http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=6d444c273da5499a4cd72f21cb6d4c9a5256807d
|
||||
|
||||
From 6d444c273da5499a4cd72f21cb6d4c9a5256807d Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Wed, 5 Oct 2016 09:55:55 +0100
|
||||
Subject: [PATCH] Bug 697178: Add a file permissions callback
|
||||
|
||||
For the rare occasions when the graphics library directly opens a file
|
||||
(currently for reading), this allows us to apply any restrictions on
|
||||
file access normally applied in the interpteter.
|
||||
---
|
||||
base/gsicc_manage.c | 10 ++++++----
|
||||
base/gslibctx.c | 12 +++++++++++-
|
||||
base/gslibctx.h | 7 +++++++
|
||||
psi/imain.c | 2 ++
|
||||
psi/int.mak | 2 +-
|
||||
psi/zfile.c | 19 +++++++++++++++++++
|
||||
psi/zfile.h | 7 +++++++
|
||||
7 files changed, 53 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/base/gsicc_manage.c b/base/gsicc_manage.c
|
||||
index 931c2a6..e9c09c3 100644
|
||||
--- a/base/gsicc_manage.c
|
||||
+++ b/base/gsicc_manage.c
|
||||
@@ -1028,10 +1028,12 @@ gsicc_open_search(const char* pname, int namelen, gs_memory_t *mem_gc,
|
||||
}
|
||||
|
||||
/* First just try it like it is */
|
||||
- str = sfopen(pname, "rb", mem_gc);
|
||||
- if (str != NULL) {
|
||||
- *strp = str;
|
||||
- return 0;
|
||||
+ if (gs_check_file_permission(mem_gc, pname, namelen, "r") >= 0) {
|
||||
+ str = sfopen(pname, "rb", mem_gc);
|
||||
+ if (str != NULL) {
|
||||
+ *strp = str;
|
||||
+ return 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* If that fails, try %rom% */ /* FIXME: Not sure this is needed or correct */
|
||||
diff --git a/base/gslibctx.c b/base/gslibctx.c
|
||||
index eaa0458..37ce1ca 100644
|
||||
--- a/base/gslibctx.c
|
||||
+++ b/base/gslibctx.c
|
||||
@@ -121,7 +121,7 @@ int gs_lib_ctx_init( gs_memory_t *mem )
|
||||
mem->gs_lib_ctx = NULL;
|
||||
return -1;
|
||||
}
|
||||
-
|
||||
+ pio->client_check_file_permission = NULL;
|
||||
gp_get_realtime(pio->real_time_0);
|
||||
|
||||
return 0;
|
||||
@@ -262,3 +262,13 @@ void errflush(const gs_memory_t *mem)
|
||||
fflush(mem->gs_lib_ctx->fstderr);
|
||||
/* else nothing to flush */
|
||||
}
|
||||
+
|
||||
+int
|
||||
+gs_check_file_permission (gs_memory_t *mem, const char *fname, const int len, const char *permission)
|
||||
+{
|
||||
+ int code = 0;
|
||||
+ if (mem->gs_lib_ctx->client_check_file_permission != NULL) {
|
||||
+ code = mem->gs_lib_ctx->client_check_file_permission(mem, fname, len, permission);
|
||||
+ }
|
||||
+ return code;
|
||||
+}
|
||||
diff --git a/base/gslibctx.h b/base/gslibctx.h
|
||||
index 7a4e110..020e2d9 100644
|
||||
--- a/base/gslibctx.h
|
||||
+++ b/base/gslibctx.h
|
||||
@@ -32,6 +32,9 @@ typedef struct gs_fapi_server_s gs_fapi_server;
|
||||
# define gs_font_dir_DEFINED
|
||||
typedef struct gs_font_dir_s gs_font_dir;
|
||||
#endif
|
||||
+
|
||||
+typedef int (*client_check_file_permission_t) (gs_memory_t *mem, const char *fname, const int len, const char *permission);
|
||||
+
|
||||
typedef struct gs_lib_ctx_s
|
||||
{
|
||||
gs_memory_t *memory; /* mem->gs_lib_ctx->memory == mem */
|
||||
@@ -59,6 +62,7 @@ typedef struct gs_lib_ctx_s
|
||||
bool dict_auto_expand; /* ps dictionary: false level 1 true level 2 or 3 */
|
||||
/* A table of local copies of the IODevices */
|
||||
struct gx_io_device_s **io_device_table;
|
||||
+ client_check_file_permission_t client_check_file_permission;
|
||||
/* Define the default value of AccurateScreens that affects setscreen
|
||||
and setcolorscreen. */
|
||||
bool screen_accurate_screens;
|
||||
@@ -108,6 +112,9 @@ int
|
||||
void gs_lib_ctx_set_icc_directory(const gs_memory_t *mem_gc, const char* pname,
|
||||
int dir_namelen);
|
||||
|
||||
+int
|
||||
+gs_check_file_permission (gs_memory_t *mem, const char *fname, const int len, const char *permission);
|
||||
+
|
||||
#define IS_LIBCTX_STDOUT(mem, f) (f == mem->gs_lib_ctx->fstdout)
|
||||
#define IS_LIBCTX_STDERR(mem, f) (f == mem->gs_lib_ctx->fstderr)
|
||||
|
||||
diff --git a/psi/imain.c b/psi/imain.c
|
||||
index 9a9bb5d..6874128 100644
|
||||
--- a/psi/imain.c
|
||||
+++ b/psi/imain.c
|
||||
@@ -57,6 +57,7 @@
|
||||
#include "ivmspace.h"
|
||||
#include "idisp.h" /* for setting display device callback */
|
||||
#include "iplugin.h"
|
||||
+#include "zfile.h"
|
||||
|
||||
#ifdef PACIFY_VALGRIND
|
||||
#include "valgrind.h"
|
||||
@@ -215,6 +216,7 @@ gs_main_init1(gs_main_instance * minst)
|
||||
"the_gs_name_table");
|
||||
if (code < 0)
|
||||
return code;
|
||||
+ mem->gs_lib_ctx->client_check_file_permission = z_check_file_permissions;
|
||||
}
|
||||
code = obj_init(&minst->i_ctx_p, &idmem); /* requires name_init */
|
||||
if (code < 0)
|
||||
diff --git a/psi/int.mak b/psi/int.mak
|
||||
index 4654afc..bb30d51 100644
|
||||
--- a/psi/int.mak
|
||||
+++ b/psi/int.mak
|
||||
@@ -1868,7 +1868,7 @@ $(PSOBJ)imain.$(OBJ) : $(PSSRC)imain.c $(GH) $(memory__h) $(string__h)\
|
||||
$(ialloc_h) $(iconf_h) $(idebug_h) $(idict_h) $(idisp_h) $(iinit_h)\
|
||||
$(iname_h) $(interp_h) $(iplugin_h) $(isave_h) $(iscan_h) $(ivmspace_h)\
|
||||
$(iinit_h) $(main_h) $(oper_h) $(ostack_h)\
|
||||
- $(sfilter_h) $(store_h) $(stream_h) $(strimpl_h)
|
||||
+ $(sfilter_h) $(store_h) $(stream_h) $(strimpl_h) $(zfile_h)
|
||||
$(PSCC) $(PSO_)imain.$(OBJ) $(C_) $(PSSRC)imain.c
|
||||
|
||||
#****** $(CCINT) interp.c
|
||||
diff --git a/psi/zfile.c b/psi/zfile.c
|
||||
index 2c6c958..2f27f82 100644
|
||||
--- a/psi/zfile.c
|
||||
+++ b/psi/zfile.c
|
||||
@@ -197,6 +197,25 @@ check_file_permissions(i_ctx_t *i_ctx_p, const char *fname, int len,
|
||||
return check_file_permissions_reduced(i_ctx_p, fname_reduced, rlen, permitgroup);
|
||||
}
|
||||
|
||||
+/* z_check_file_permissions: see zfile.h for explanation
|
||||
+ */
|
||||
+int
|
||||
+z_check_file_permissions(gs_memory_t *mem, const char *fname, const int len, const char *permission)
|
||||
+{
|
||||
+ i_ctx_t *i_ctx_p = get_minst_from_memory(mem)->i_ctx_p;
|
||||
+ gs_parsed_file_name_t pname;
|
||||
+ const char *permitgroup = permission[0] == 'r' ? "PermitFileReading" : "PermitFileWriting";
|
||||
+ int code = gs_parse_file_name(&pname, fname, len, imemory);
|
||||
+ if (code < 0)
|
||||
+ return code;
|
||||
+
|
||||
+ if (pname.iodev && i_ctx_p->LockFilePermissions && strcmp(pname.iodev->dname, "%pipe%") == 0)
|
||||
+ return e_invalidfileaccess;
|
||||
+
|
||||
+ code = check_file_permissions(i_ctx_p, fname, len, permitgroup);
|
||||
+ return code;
|
||||
+}
|
||||
+
|
||||
/* <name_string> <access_string> file <file> */
|
||||
int /* exported for zsysvm.c */
|
||||
zfile(i_ctx_t *i_ctx_p)
|
||||
diff --git a/psi/zfile.h b/psi/zfile.h
|
||||
index fdf1373..a9399c7 100644
|
||||
--- a/psi/zfile.h
|
||||
+++ b/psi/zfile.h
|
||||
@@ -22,4 +22,11 @@
|
||||
int zopen_file(i_ctx_t *i_ctx_p, const gs_parsed_file_name_t *pfn,
|
||||
const char *file_access, stream **ps, gs_memory_t *mem);
|
||||
|
||||
+/* z_check_file_permissions: a callback (via mem->gs_lib_ctx->client_check_file_permission)
|
||||
+ * to allow applying the above permissions checks when opening file(s) from
|
||||
+ * the graphics library
|
||||
+ */
|
||||
+int
|
||||
+z_check_file_permissions(gs_memory_t *mem, const char *fname,
|
||||
+ const int len, const char *permission);
|
||||
#endif
|
||||
--
|
||||
2.9.1
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From 6f749c0c44e7b9e09737b9f29edf29925a34f0cf Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Wed, 5 Oct 2016 09:59:25 +0100
|
||||
Subject: [PATCH] Bug 697179: Reference count device icc profile
|
||||
|
||||
when copying a device
|
||||
---
|
||||
base/gsdevice.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/base/gsdevice.c b/base/gsdevice.c
|
||||
index 778106f..aea986a 100644
|
||||
--- a/base/gsdevice.c
|
||||
+++ b/base/gsdevice.c
|
||||
@@ -614,6 +614,7 @@ gx_device_init(gx_device * dev, const gx_device * proto, gs_memory_t * mem,
|
||||
dev->memory = mem;
|
||||
dev->retained = !internal;
|
||||
rc_init(dev, mem, (internal ? 0 : 1));
|
||||
+ rc_increment(dev->icc_struct);
|
||||
}
|
||||
|
||||
void
|
||||
--
|
||||
2.9.1
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
The following patch was adapted for GNU Ghostscript
|
||||
by Mark H Weaver <mhw@netris.org> based on:
|
||||
|
||||
http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=875a0095f37626a721c7ff57d606a0f95af03913
|
||||
|
||||
From 875a0095f37626a721c7ff57d606a0f95af03913 Mon Sep 17 00:00:00 2001
|
||||
From: Ken Sharp <ken.sharp@artifex.com>
|
||||
Date: Wed, 5 Oct 2016 10:10:58 +0100
|
||||
Subject: [PATCH] DSC parser - validate parameters
|
||||
|
||||
Bug #697190 ".initialize_dsc_parser doesn't validate the parameter is a dict type before using it."
|
||||
|
||||
Regardless of any security implications, its simply wrong for a PostScript
|
||||
operator not to validate its parameter(s).
|
||||
|
||||
No differences expected.
|
||||
---
|
||||
psi/zdscpars.c | 13 +++++++++----
|
||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/psi/zdscpars.c b/psi/zdscpars.c
|
||||
index c05e154..9b4b605 100644
|
||||
--- a/psi/zdscpars.c
|
||||
+++ b/psi/zdscpars.c
|
||||
@@ -150,11 +150,16 @@ zinitialize_dsc_parser(i_ctx_t *i_ctx_p)
|
||||
ref local_ref;
|
||||
int code;
|
||||
os_ptr const op = osp;
|
||||
- dict * const pdict = op->value.pdict;
|
||||
- gs_memory_t * const mem = (gs_memory_t *)dict_memory(pdict);
|
||||
- dsc_data_t * const data =
|
||||
- gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t, "DSC parser init");
|
||||
+ dict *pdict;
|
||||
+ gs_memory_t *mem;
|
||||
+ dsc_data_t *data;
|
||||
|
||||
+ check_read_type(*op, t_dictionary);
|
||||
+
|
||||
+ pdict = op->value.pdict;
|
||||
+ mem = (gs_memory_t *)dict_memory(pdict);
|
||||
+
|
||||
+ data = gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t, "DSC parser init");
|
||||
if (!data)
|
||||
return_error(e_VMerror);
|
||||
data->document_level = 0;
|
||||
--
|
||||
2.9.1
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
The following patch was adapted for GNU Ghostscript
|
||||
by Mark H Weaver <mhw@netris.org> based on:
|
||||
|
||||
http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=f5c7555c30393e64ec1f5ab0dfae5b55b3b3fc78
|
||||
|
||||
From f5c7555c30393e64ec1f5ab0dfae5b55b3b3fc78 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Sat, 8 Oct 2016 16:10:27 +0100
|
||||
Subject: [PATCH] Bug 697203: check for sufficient params in .sethalftone5
|
||||
|
||||
and param types
|
||||
---
|
||||
psi/zht2.c | 12 ++++++++++--
|
||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/psi/zht2.c b/psi/zht2.c
|
||||
index fb4a264..dfa27a4 100644
|
||||
--- a/psi/zht2.c
|
||||
+++ b/psi/zht2.c
|
||||
@@ -82,14 +82,22 @@ zsethalftone5(i_ctx_t *i_ctx_p)
|
||||
gs_memory_t *mem;
|
||||
uint edepth = ref_stack_count(&e_stack);
|
||||
int npop = 2;
|
||||
- int dict_enum = dict_first(op);
|
||||
+ int dict_enum;
|
||||
ref rvalue[2];
|
||||
int cname, colorant_number;
|
||||
byte * pname;
|
||||
uint name_size;
|
||||
int halftonetype, type = 0;
|
||||
gs_state *pgs = igs;
|
||||
- int space_index = r_space_index(op - 1);
|
||||
+ int space_index;
|
||||
+
|
||||
+ if (ref_stack_count(&o_stack) < 2)
|
||||
+ return_error(e_stackunderflow);
|
||||
+ check_type(*op, t_dictionary);
|
||||
+ check_type(*(op - 1), t_dictionary);
|
||||
+
|
||||
+ dict_enum = dict_first(op);
|
||||
+ space_index = r_space_index(op - 1);
|
||||
|
||||
mem = (gs_memory_t *) idmemory->spaces_indexed[space_index];
|
||||
|
||||
--
|
||||
2.9.1
|
||||
|
|
@ -1,15 +1,60 @@
|
|||
Fix CVE-2017-8291:
|
||||
|
||||
https://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-8291
|
||||
https://bugs.ghostscript.com/show_bug.cgi?id=697799
|
||||
https://bugs.ghostscript.com/show_bug.cgi?id=697808 (duplicate)
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8291
|
||||
|
||||
This patch is adapted from these two Artifex Ghostscript commits by Leo
|
||||
Famulari <leo@famulari.name>:
|
||||
Patches copied from upstream source repository:
|
||||
|
||||
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=04b37bbce174eed24edec7ad5b920eb93db4d47d;hp=4f83478c88c2e05d6e8d79ca4557eb039354d2f3
|
||||
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f83478c88c2e05d6e8d79ca4557eb039354d2f3;hp=5603e8fc3e59c435318877efe627967ee6baebb8
|
||||
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f83478c88c2e05d6e8d79ca4557eb039354d2f3
|
||||
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=04b37bbce174eed24edec7ad5b920eb93db4d47d
|
||||
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=57f20719e1cfaea77b67cb26e26de7fe4d7f9b2e
|
||||
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ccfd2c75ac9be4cbd369e4cbdd40ba11a0c7bdad
|
||||
|
||||
From 4f83478c88c2e05d6e8d79ca4557eb039354d2f3 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Thu, 27 Apr 2017 13:03:33 +0100
|
||||
Subject: [PATCH] Bug 697799: have .eqproc check its parameters
|
||||
|
||||
The Ghostscript custom operator .eqproc was not check the number or type of
|
||||
the parameters it was given.
|
||||
---
|
||||
psi/zmisc3.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/psi/zmisc3.c b/psi/zmisc3.c
|
||||
index 54b304246..37293ff4b 100644
|
||||
--- a/psi/zmisc3.c
|
||||
+++ b/psi/zmisc3.c
|
||||
@@ -56,6 +56,12 @@ zeqproc(i_ctx_t *i_ctx_p)
|
||||
ref2_t stack[MAX_DEPTH + 1];
|
||||
ref2_t *top = stack;
|
||||
|
||||
+ if (ref_stack_count(&o_stack) < 2)
|
||||
+ return_error(gs_error_stackunderflow);
|
||||
+ if (!r_is_array(op - 1) || !r_is_array(op)) {
|
||||
+ return_error(gs_error_typecheck);
|
||||
+ }
|
||||
+
|
||||
make_array(&stack[0].proc1, 0, 1, op - 1);
|
||||
make_array(&stack[0].proc2, 0, 1, op);
|
||||
for (;;) {
|
||||
--
|
||||
2.13.0
|
||||
|
||||
From 04b37bbce174eed24edec7ad5b920eb93db4d47d Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Thu, 27 Apr 2017 13:21:31 +0100
|
||||
Subject: [PATCH] Bug 697799: have .rsdparams check its parameters
|
||||
|
||||
The Ghostscript internal operator .rsdparams wasn't checking the number or
|
||||
type of the operands it was being passed. Do so.
|
||||
---
|
||||
psi/zfrsd.c | 22 +++++++++++++++-------
|
||||
1 file changed, 15 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/psi/zfrsd.c b/psi/zfrsd.c
|
||||
index fb4bce9..2629afa 100644
|
||||
index 191107d8a..950588d69 100644
|
||||
--- a/psi/zfrsd.c
|
||||
+++ b/psi/zfrsd.c
|
||||
@@ -49,13 +49,20 @@ zrsdparams(i_ctx_t *i_ctx_p)
|
||||
|
@ -24,9 +69,9 @@ index fb4bce9..2629afa 100644
|
|||
+ int code = 0;
|
||||
+
|
||||
+ if (ref_stack_count(&o_stack) < 1)
|
||||
+ return_error(e_stackunderflow);
|
||||
+ return_error(gs_error_stackunderflow);
|
||||
+ if (!r_has_type(op, t_dictionary) && !r_has_type(op, t_null)) {
|
||||
+ return_error(e_typecheck);
|
||||
+ return_error(gs_error_typecheck);
|
||||
+ }
|
||||
|
||||
make_empty_array(&empty_array, a_readonly);
|
||||
|
@ -35,15 +80,15 @@ index fb4bce9..2629afa 100644
|
|||
+ && dict_find_string(op, "Filter", &pFilter) > 0) {
|
||||
if (!r_is_array(pFilter)) {
|
||||
if (!r_has_type(pFilter, t_name))
|
||||
return_error(e_typecheck);
|
||||
return_error(gs_error_typecheck);
|
||||
@@ -94,12 +101,13 @@ zrsdparams(i_ctx_t *i_ctx_p)
|
||||
return_error(e_typecheck);
|
||||
return_error(gs_error_typecheck);
|
||||
}
|
||||
}
|
||||
- code = dict_int_param(op, "Intent", 0, 3, 0, &Intent);
|
||||
+ if (r_has_type(op, t_dictionary))
|
||||
+ code = dict_int_param(op, "Intent", 0, 3, 0, &Intent);
|
||||
if (code < 0 && code != e_rangecheck) /* out-of-range int is ok, use 0 */
|
||||
if (code < 0 && code != gs_error_rangecheck) /* out-of-range int is ok, use 0 */
|
||||
return code;
|
||||
- if ((code = dict_bool_param(op, "AsyncRead", false, &AsyncRead)) < 0
|
||||
- )
|
||||
|
@ -54,20 +99,97 @@ index fb4bce9..2629afa 100644
|
|||
push(1);
|
||||
op[-1] = *pFilter;
|
||||
if (pDecodeParms)
|
||||
--
|
||||
2.13.0
|
||||
|
||||
From 57f20719e1cfaea77b67cb26e26de7fe4d7f9b2e Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Wed, 3 May 2017 12:05:45 +0100
|
||||
Subject: [PATCH] Bug 697846: revision to commit 4f83478c88 (.eqproc)
|
||||
|
||||
When using the "DELAYBIND" feature, it turns out that .eqproc can be called with
|
||||
parameters that are not both procedures. In this case, it turns out, the
|
||||
expectation is for the operator to return 'false', rather than throw an error.
|
||||
---
|
||||
psi/zmisc3.c | 15 +++++++++++++--
|
||||
1 file changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/psi/zmisc3.c b/psi/zmisc3.c
|
||||
index 54b3042..0d357f1 100644
|
||||
index 37293ff4b..3f01d39a3 100644
|
||||
--- a/psi/zmisc3.c
|
||||
+++ b/psi/zmisc3.c
|
||||
@@ -56,6 +56,12 @@ zeqproc(i_ctx_t *i_ctx_p)
|
||||
@@ -38,6 +38,15 @@ zcliprestore(i_ctx_t *i_ctx_p)
|
||||
return gs_cliprestore(igs);
|
||||
}
|
||||
|
||||
+static inline bool
|
||||
+eqproc_check_type(ref *r)
|
||||
+{
|
||||
+ return r_has_type(r, t_array)
|
||||
+ || r_has_type(r, t_mixedarray)
|
||||
+ || r_has_type(r, t_shortarray)
|
||||
+ || r_has_type(r, t_oparray);
|
||||
+}
|
||||
+
|
||||
/* <proc1> <proc2> .eqproc <bool> */
|
||||
/*
|
||||
* Test whether two procedures are equal to depth 10.
|
||||
@@ -58,8 +67,10 @@ zeqproc(i_ctx_t *i_ctx_p)
|
||||
|
||||
if (ref_stack_count(&o_stack) < 2)
|
||||
return_error(gs_error_stackunderflow);
|
||||
- if (!r_is_array(op - 1) || !r_is_array(op)) {
|
||||
- return_error(gs_error_typecheck);
|
||||
+ if (!eqproc_check_type(op -1) || !eqproc_check_type(op)) {
|
||||
+ make_false(op - 1);
|
||||
+ pop(1);
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
make_array(&stack[0].proc1, 0, 1, op - 1);
|
||||
--
|
||||
2.13.0
|
||||
|
||||
From ccfd2c75ac9be4cbd369e4cbdd40ba11a0c7bdad Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Thu, 11 May 2017 14:07:48 +0100
|
||||
Subject: [PATCH] Bug 697892: fix check for op stack underflow.
|
||||
|
||||
In the original fix, I used the wrong method to check for stack underflow, this
|
||||
is using the correct method.
|
||||
---
|
||||
psi/zfrsd.c | 3 +--
|
||||
psi/zmisc3.c | 3 +--
|
||||
2 files changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/psi/zfrsd.c b/psi/zfrsd.c
|
||||
index 950588d69..9c035b96d 100644
|
||||
--- a/psi/zfrsd.c
|
||||
+++ b/psi/zfrsd.c
|
||||
@@ -54,8 +54,7 @@ zrsdparams(i_ctx_t *i_ctx_p)
|
||||
uint i;
|
||||
int code = 0;
|
||||
|
||||
- if (ref_stack_count(&o_stack) < 1)
|
||||
- return_error(gs_error_stackunderflow);
|
||||
+ check_op(1);
|
||||
if (!r_has_type(op, t_dictionary) && !r_has_type(op, t_null)) {
|
||||
return_error(gs_error_typecheck);
|
||||
}
|
||||
diff --git a/psi/zmisc3.c b/psi/zmisc3.c
|
||||
index 3f01d39a3..43803b55b 100644
|
||||
--- a/psi/zmisc3.c
|
||||
+++ b/psi/zmisc3.c
|
||||
@@ -65,8 +65,7 @@ zeqproc(i_ctx_t *i_ctx_p)
|
||||
ref2_t stack[MAX_DEPTH + 1];
|
||||
ref2_t *top = stack;
|
||||
|
||||
+ if (ref_stack_count(&o_stack) < 2)
|
||||
+ return_error(e_stackunderflow);
|
||||
+ if (!r_is_array(op - 1) || !r_is_array(op)) {
|
||||
+ return_error(e_typecheck);
|
||||
+ }
|
||||
+
|
||||
make_array(&stack[0].proc1, 0, 1, op - 1);
|
||||
make_array(&stack[0].proc2, 0, 1, op);
|
||||
for (;;) {
|
||||
- if (ref_stack_count(&o_stack) < 2)
|
||||
- return_error(gs_error_stackunderflow);
|
||||
+ check_op(2);
|
||||
if (!eqproc_check_type(op -1) || !eqproc_check_type(op)) {
|
||||
make_false(op - 1);
|
||||
pop(1);
|
||||
--
|
||||
2.13.0
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
This patch makes emission of /CreationDate and /ModDate headers optional.
|
||||
|
||||
If the environment variable GS_GENERATE_UUIDS is set to "0" or "no", it will
|
||||
not write out the "/ID" field (if that's permissible).
|
||||
|
||||
Upstream does not want to do this.
|
||||
|
||||
See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
|
||||
diff --git a/orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c b/bb/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
|
||||
index 0fb067e..b342e2c 100644
|
||||
--- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
|
||||
+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
|
||||
@@ -305,6 +305,9 @@ pdf_initialize_ids(gx_device_pdf * pdev)
|
||||
* date and time, rather than (for example) %%CreationDate from the
|
||||
* PostScript file. We think this is wrong, but we do the same.
|
||||
*/
|
||||
+ if (!getenv("GS_GENERATE_UUIDS") ||
|
||||
+ (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 &&
|
||||
+ strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))
|
||||
{
|
||||
struct tm tms;
|
||||
time_t t;
|
|
@ -0,0 +1,57 @@
|
|||
This patch makes the "/ID" field optional.
|
||||
|
||||
If the environment variable GS_GENERATE_UUIDS is set to "0" or "no", it will
|
||||
not write out the "/ID" field (if that's permissible).
|
||||
|
||||
Upstream does not want to do this.
|
||||
|
||||
See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
|
||||
diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
|
||||
--- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c 2017-07-09 23:30:28.960479189 +0200
|
||||
+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c 2017-07-09 23:34:34.306524488 +0200
|
||||
@@ -1580,8 +1580,11 @@
|
||||
* +1 for the linearisation dict and +1 for the primary hint stream.
|
||||
*/
|
||||
linear_params->FirsttrailerOffset = gp_ftell_64(linear_params->Lin_File.file);
|
||||
- gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n \n",
|
||||
- linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, 0);
|
||||
+ gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
|
||||
+ linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber);
|
||||
+ if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 && strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */
|
||||
+ gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID);
|
||||
+ gs_sprintf(LDict, "/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n \n", 0);
|
||||
fwrite(LDict, strlen(LDict), 1, linear_params->Lin_File.file);
|
||||
|
||||
/* Write document catalog (Part 4) */
|
||||
@@ -2102,8 +2105,11 @@
|
||||
* in the missing values.
|
||||
*/
|
||||
code = gp_fseek_64(linear_params->sfile, linear_params->FirsttrailerOffset, SEEK_SET);
|
||||
- gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n",
|
||||
- linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, mainxref);
|
||||
+ gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
|
||||
+ linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber);
|
||||
+ if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */
|
||||
+ gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID);
|
||||
+ gs_sprintf(LDict, "/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n", mainxref);
|
||||
fwrite(LDict, strlen(LDict), 1, linear_params->sfile);
|
||||
|
||||
code = gp_fseek_64(linear_params->sfile, pdev->ResourceUsage[HintStreamObj].LinearisedOffset, SEEK_SET);
|
||||
@@ -2674,10 +2680,12 @@
|
||||
stream_puts(s, "trailer\n");
|
||||
pprintld3(s, "<< /Size %ld /Root %ld 0 R /Info %ld 0 R\n",
|
||||
pdev->next_id, Catalog_id, Info_id);
|
||||
- stream_puts(s, "/ID [");
|
||||
- psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
|
||||
- psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
|
||||
- stream_puts(s, "]\n");
|
||||
+ if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) { /* ID is mandatory when encrypting */
|
||||
+ stream_puts(s, "/ID [");
|
||||
+ psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
|
||||
+ psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
|
||||
+ stream_puts(s, "]\n");
|
||||
+ }
|
||||
if (pdev->OwnerPassword.size > 0) {
|
||||
pprintld1(s, "/Encrypt %ld 0 R ", Encrypt_id);
|
||||
}
|
||||
Nur in gnu-ghostscript-9.14.0/devices/vector: gdevpdf.c.orig.
|
|
@ -0,0 +1,50 @@
|
|||
This patch makes the UUIDs in the XMP header optional, depending on the
|
||||
setting of the environment variable GS_GENERATE_UUIDS.
|
||||
|
||||
If the environment variable GS_GENERATE_UUIDS is set to "0" or "no", it will
|
||||
not write out the Document UUID field and also will write the Instance ID
|
||||
field value as "".
|
||||
|
||||
Upstream does not want to do this.
|
||||
|
||||
See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
|
||||
diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c
|
||||
--- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c 2017-07-09 23:30:28.960479189 +0200
|
||||
+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c 2017-07-10 01:04:12.252478276 +0200
|
||||
@@ -617,7 +617,7 @@
|
||||
return code;
|
||||
|
||||
/* PDF/A XMP reference recommends setting UUID to empty. If not empty must be a URI */
|
||||
- if (pdev->PDFA != 0)
|
||||
+ if (pdev->PDFA != 0 || (getenv("GS_GENERATE_UUIDS") && (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") == 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") == 0)))
|
||||
instance_uuid[0] = 0x00;
|
||||
|
||||
cre_date_time_len = pdf_get_docinfo_item(pdev, "/CreationDate", cre_date_time, sizeof(cre_date_time));
|
||||
@@ -719,15 +719,18 @@
|
||||
pdf_xml_tag_close(s, "rdf:Description");
|
||||
pdf_xml_newline(s);
|
||||
|
||||
- pdf_xml_tag_open_beg(s, "rdf:Description");
|
||||
- pdf_xml_attribute_name(s, "rdf:about");
|
||||
- pdf_xml_attribute_value(s, instance_uuid);
|
||||
- pdf_xml_attribute_name(s, "xmlns:xapMM");
|
||||
- pdf_xml_attribute_value(s, "http://ns.adobe.com/xap/1.0/mm/");
|
||||
- pdf_xml_attribute_name(s, "xapMM:DocumentID");
|
||||
- pdf_xml_attribute_value(s, document_uuid);
|
||||
- pdf_xml_tag_end_empty(s);
|
||||
- pdf_xml_newline(s);
|
||||
+ if (!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 && strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))
|
||||
+ {
|
||||
+ pdf_xml_tag_open_beg(s, "rdf:Description");
|
||||
+ pdf_xml_attribute_name(s, "rdf:about");
|
||||
+ pdf_xml_attribute_value(s, instance_uuid);
|
||||
+ pdf_xml_attribute_name(s, "xmlns:xapMM");
|
||||
+ pdf_xml_attribute_value(s, "http://ns.adobe.com/xap/1.0/mm/");
|
||||
+ pdf_xml_attribute_name(s, "xapMM:DocumentID");
|
||||
+ pdf_xml_attribute_value(s, document_uuid);
|
||||
+ pdf_xml_tag_end_empty(s);
|
||||
+ pdf_xml_newline(s);
|
||||
+ }
|
||||
|
||||
pdf_xml_tag_open_beg(s, "rdf:Description");
|
||||
pdf_xml_attribute_name(s, "rdf:about");
|
|
@ -1,17 +1,18 @@
|
|||
This patch adds $(libdir) to the RUNPATH of 'gsc' and 'gsx'.
|
||||
|
||||
--- gnu-ghostscript-9.14.0/base/unix-dll.mak 2015-04-05 15:12:45.386957927 +0200
|
||||
+++ gnu-ghostscript-9.14.0/base/unix-dll.mak 2015-04-05 15:12:49.222982359 +0200
|
||||
@@ -91,11 +91,11 @@ $(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR)
|
||||
diff --git a/base/unix-dll.mak b/base/unix-dll.mak
|
||||
index 9d57a99..36ef1ff 100644
|
||||
--- a/base/unix-dll.mak
|
||||
+++ b/base/unix-dll.mak
|
||||
@@ -171,11 +171,11 @@ gpdl-so-links-subtarget: $(GPDL_SO) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
||||
# Build the small Ghostscript loaders, with Gtk+ and without
|
||||
$(GSSOC_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER)
|
||||
$(GSSOC_XE): gs-so-links-subtarget $(PSSRC)$(SOC_LOADER) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
||||
$(GLCC) -g -o $(GSSOC_XE) $(PSSRC)dxmainc.c \
|
||||
- -L$(BINDIR) -l$(GS_SO_BASE)
|
||||
+ -L$(BINDIR) -l$(GS_SO_BASE) -Wl,-rpath=$(libdir)
|
||||
|
||||
$(GSSOX_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER)
|
||||
$(GSSOX_XE): gs-so-links-subtarget $(PSSRC)$(SOC_LOADER) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
||||
$(GLCC) -g $(SOC_CFLAGS) -o $(GSSOX_XE) $(PSSRC)$(SOC_LOADER) \
|
||||
- -L$(BINDIR) -l$(GS_SO_BASE) $(SOC_LIBS)
|
||||
+ -L$(BINDIR) -l$(GS_SO_BASE) $(SOC_LIBS) -Wl,-rpath=$(libdir)
|
||||
|
||||
# ------------------------- Recursive make targets ------------------------- #
|
||||
$(PCLSOC_XE): gpcl6-so-links-subtarget $(PLSRC)$(REALMAIN_SRC).c $(UNIX_DLL_MAK) $(MAKEDIRS)
|
||||
$(GLCC) -g -o $(PCLSOC_XE) $(PLSRC)$(REALMAIN_SRC).c -L$(BINDIR) -l$(PCL_SO_BASE)
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
This patch fix error on 'gnulib' library required to build
|
||||
'grep' package on GNU/Hurd.
|
||||
The patch was adapted from upstream source repository:
|
||||
'<http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commit;h=4084b3a1094372b960ce4a97634e08f4538c8bdd>'
|
||||
|
||||
Commit: 4084b3a1094372b960ce4a97634e08f4538c8bdd
|
||||
|
||||
diff --git a/lib/glthread/lock.c b/lib/glthread/lock.c
|
||||
index 061562b..afc86f4 100644
|
||||
--- a/lib/glthread/lock.c
|
||||
+++ b/lib/glthread/lock.c
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
/* ------------------------- gl_rwlock_t datatype ------------------------- */
|
||||
|
||||
-# if HAVE_PTHREAD_RWLOCK && (HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER || (__GNU_LIBRARY__ > 1))
|
||||
+# if HAVE_PTHREAD_RWLOCK && (HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER || (defined PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP && (__GNU_LIBRARY__ > 1)))
|
||||
|
||||
# ifdef PTHREAD_RWLOCK_INITIALIZER
|
||||
|
||||
diff --git a/lib/glthread/lock.h b/lib/glthread/lock.h
|
||||
index ec16d39..67932aa 100644
|
||||
--- a/lib/glthread/lock.h
|
||||
+++ b/lib/glthread/lock.h
|
||||
@@ -179,7 +179,7 @@ typedef pthread_mutex_t gl_lock_t;
|
||||
|
||||
/* ------------------------- gl_rwlock_t datatype ------------------------- */
|
||||
|
||||
-# if HAVE_PTHREAD_RWLOCK && (HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER || (__GNU_LIBRARY__ > 1))
|
||||
+# if HAVE_PTHREAD_RWLOCK && (HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER || (defined PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP && (__GNU_LIBRARY__ > 1)))
|
||||
|
||||
# ifdef PTHREAD_RWLOCK_INITIALIZER
|
|
@ -0,0 +1,299 @@
|
|||
Adds support for the environment variable SOURCE_DATE_EPOCH.
|
||||
|
||||
See: https://sources.debian.net/patches/groff/1.22.3-9/source-date-epoch.patch/
|
||||
|
||||
From abc23bc9245e18468817f2838361c3a08f7521e2 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@debian.org>
|
||||
Date: Thu, 5 Nov 2015 11:47:34 +0000
|
||||
Subject: Implement `SOURCE_DATE_EPOCH' for reproducible builds.
|
||||
|
||||
Author: Colin Watson <cjwatson@debian.org>
|
||||
Forwarded: yes
|
||||
Last-Update: 2015-11-05
|
||||
|
||||
Patch-Name: source-date-epoch.patch
|
||||
---
|
||||
doc/groff.texinfo | 6 +++++
|
||||
src/devices/grohtml/grohtml.man | 7 ++++++
|
||||
src/devices/grohtml/post-html.cpp | 5 ++--
|
||||
src/devices/gropdf/gropdf.man | 7 ++++++
|
||||
src/devices/gropdf/gropdf.pl | 3 ++-
|
||||
src/devices/grops/grops.man | 7 ++++++
|
||||
src/devices/grops/ps.cpp | 3 ++-
|
||||
src/include/curtime.h | 23 ++++++++++++++++++
|
||||
src/libs/libgroff/Makefile.sub | 2 ++
|
||||
src/libs/libgroff/curtime.cpp | 51 +++++++++++++++++++++++++++++++++++++++
|
||||
src/roff/troff/input.cpp | 3 ++-
|
||||
11 files changed, 112 insertions(+), 5 deletions(-)
|
||||
create mode 100644 src/include/curtime.h
|
||||
create mode 100644 src/libs/libgroff/curtime.cpp
|
||||
|
||||
diff --git a/doc/groff.texinfo b/doc/groff.texinfo
|
||||
index 066b5274..1d3c7a9f 100644
|
||||
--- a/doc/groff.texinfo
|
||||
+++ b/doc/groff.texinfo
|
||||
@@ -1453,6 +1453,12 @@ default directory (on Unix and GNU/Linux systems, this is usually
|
||||
@item GROFF_TYPESETTER
|
||||
@tindex GROFF_TYPESETTER@r{, environment variable}
|
||||
The default output device.
|
||||
+
|
||||
+@item SOURCE_DATE_EPOCH
|
||||
+@tindex SOURCE_DATE_EPOCH@r{, environment variable}
|
||||
+A timestamp (expressed as seconds since the Unix epoch) to use in place of
|
||||
+the current time when initializing time-based built-in registers such as
|
||||
+@code{\n[seconds]}.
|
||||
@end table
|
||||
|
||||
Note that MS-DOS and MS-Windows ports of @code{groff} use semi-colons,
|
||||
diff --git a/src/devices/grohtml/grohtml.man b/src/devices/grohtml/grohtml.man
|
||||
index 51eae224..4be4abbc 100644
|
||||
--- a/src/devices/grohtml/grohtml.man
|
||||
+++ b/src/devices/grohtml/grohtml.man
|
||||
@@ -419,6 +419,13 @@ and
|
||||
for more details.
|
||||
.
|
||||
.
|
||||
+.TP
|
||||
+.SM
|
||||
+.B SOURCE_DATE_EPOCH
|
||||
+A timestamp (expressed as seconds since the Unix epoch) to use as the
|
||||
+creation timestamp in place of the current time.
|
||||
+.
|
||||
+.
|
||||
.\" --------------------------------------------------------------------
|
||||
.SH BUGS
|
||||
.\" --------------------------------------------------------------------
|
||||
diff --git a/src/devices/grohtml/post-html.cpp b/src/devices/grohtml/post-html.cpp
|
||||
index fefbf014..b5fc5167 100644
|
||||
--- a/src/devices/grohtml/post-html.cpp
|
||||
+++ b/src/devices/grohtml/post-html.cpp
|
||||
@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
#include "html.h"
|
||||
#include "html-text.h"
|
||||
#include "html-table.h"
|
||||
+#include "curtime.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
@@ -5013,7 +5014,7 @@ void html_printer::do_file_components (void)
|
||||
.put_string(Version_string)
|
||||
.end_comment();
|
||||
|
||||
- t = time(0);
|
||||
+ t = current_time();
|
||||
html.begin_comment("CreationDate: ")
|
||||
.put_string(ctime(&t), strlen(ctime(&t))-1)
|
||||
.end_comment();
|
||||
@@ -5126,7 +5127,7 @@ html_printer::~html_printer()
|
||||
.put_string(Version_string)
|
||||
.end_comment();
|
||||
|
||||
- t = time(0);
|
||||
+ t = current_time();
|
||||
html.begin_comment("CreationDate: ")
|
||||
.put_string(ctime(&t), strlen(ctime(&t))-1)
|
||||
.end_comment();
|
||||
diff --git a/src/devices/gropdf/gropdf.man b/src/devices/gropdf/gropdf.man
|
||||
index 3bbace6a..cc0c82f1 100644
|
||||
--- a/src/devices/gropdf/gropdf.man
|
||||
+++ b/src/devices/gropdf/gropdf.man
|
||||
@@ -1029,6 +1029,13 @@ and
|
||||
for more details.
|
||||
.
|
||||
.
|
||||
+.TP
|
||||
+.SM
|
||||
+.B SOURCE_DATE_EPOCH
|
||||
+A timestamp (expressed as seconds since the Unix epoch) to use as the
|
||||
+creation timestamp in place of the current time.
|
||||
+.
|
||||
+.
|
||||
.\" --------------------------------------------------------------------
|
||||
.SH FILES
|
||||
.\" --------------------------------------------------------------------
|
||||
diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl
|
||||
index 035d1238..c25c4c67 100644
|
||||
--- a/src/devices/gropdf/gropdf.pl
|
||||
+++ b/src/devices/gropdf/gropdf.pl
|
||||
@@ -239,13 +239,14 @@ elsif (exists($ppsz{$papersz}))
|
||||
@defaultmb=@mediabox=(0,0,$ppsz{$papersz}->[0],$ppsz{$papersz}->[1]);
|
||||
}
|
||||
|
||||
-my (@dt)=localtime(time);
|
||||
+my (@dt)=localtime($ENV{SOURCE_DATE_EPOCH} || time);
|
||||
my $dt=PDFDate(\@dt);
|
||||
|
||||
my %info=('Creator' => "(groff version $cfg{GROFF_VERSION})",
|
||||
'Producer' => "(gropdf version $cfg{GROFF_VERSION})",
|
||||
'ModDate' => "($dt)",
|
||||
'CreationDate' => "($dt)");
|
||||
+
|
||||
while (<>)
|
||||
{
|
||||
chomp;
|
||||
diff --git a/src/devices/grops/grops.man b/src/devices/grops/grops.man
|
||||
index 99fb7486..272c2d18 100644
|
||||
--- a/src/devices/grops/grops.man
|
||||
+++ b/src/devices/grops/grops.man
|
||||
@@ -1419,6 +1419,13 @@ and
|
||||
for more details.
|
||||
.
|
||||
.
|
||||
+.TP
|
||||
+.SM
|
||||
+.B SOURCE_DATE_EPOCH
|
||||
+A timestamp (expressed as seconds since the Unix epoch) to use as the
|
||||
+creation timestamp in place of the current time.
|
||||
+.
|
||||
+.
|
||||
.\" --------------------------------------------------------------------
|
||||
.SH FILES
|
||||
.\" --------------------------------------------------------------------
|
||||
diff --git a/src/devices/grops/ps.cpp b/src/devices/grops/ps.cpp
|
||||
index 745a503b..03e65372 100644
|
||||
--- a/src/devices/grops/ps.cpp
|
||||
+++ b/src/devices/grops/ps.cpp
|
||||
@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
#include "cset.h"
|
||||
#include "nonposix.h"
|
||||
#include "paper.h"
|
||||
+#include "curtime.h"
|
||||
|
||||
#include "ps.h"
|
||||
#include <time.h>
|
||||
@@ -1390,7 +1391,7 @@ ps_printer::~ps_printer()
|
||||
#else
|
||||
time_t
|
||||
#endif
|
||||
- t = time(0);
|
||||
+ t = current_time();
|
||||
fputs(ctime(&t), out.get_file());
|
||||
}
|
||||
for (font_pointer_list *f = font_list; f; f = f->next) {
|
||||
diff --git a/src/include/curtime.h b/src/include/curtime.h
|
||||
new file mode 100644
|
||||
index 00000000..a4105196
|
||||
--- /dev/null
|
||||
+++ b/src/include/curtime.h
|
||||
@@ -0,0 +1,23 @@
|
||||
+/* Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
+
|
||||
+This file is part of groff.
|
||||
+
|
||||
+groff 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 2 of the License, or
|
||||
+(at your option) any later version.
|
||||
+
|
||||
+groff 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.
|
||||
+
|
||||
+The GNU General Public License version 2 (GPL2) is available in the
|
||||
+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
|
||||
+
|
||||
+#ifdef LONG_FOR_TIME_T
|
||||
+long
|
||||
+#else
|
||||
+time_t
|
||||
+#endif
|
||||
+current_time();
|
||||
diff --git a/src/libs/libgroff/Makefile.sub b/src/libs/libgroff/Makefile.sub
|
||||
index 840d9934..4cb4937a 100644
|
||||
--- a/src/libs/libgroff/Makefile.sub
|
||||
+++ b/src/libs/libgroff/Makefile.sub
|
||||
@@ -32,6 +32,7 @@ OBJS=\
|
||||
cmap.$(OBJEXT) \
|
||||
color.$(OBJEXT) \
|
||||
cset.$(OBJEXT) \
|
||||
+ curtime.$(OBJEXT) \
|
||||
device.$(OBJEXT) \
|
||||
errarg.$(OBJEXT) \
|
||||
error.$(OBJEXT) \
|
||||
@@ -82,6 +83,7 @@ CCSRCS=\
|
||||
$(srcdir)/cmap.cpp \
|
||||
$(srcdir)/color.cpp \
|
||||
$(srcdir)/cset.cpp \
|
||||
+ $(srcdir)/curtime.cpp \
|
||||
$(srcdir)/device.cpp \
|
||||
$(srcdir)/errarg.cpp \
|
||||
$(srcdir)/error.cpp \
|
||||
diff --git a/src/libs/libgroff/curtime.cpp b/src/libs/libgroff/curtime.cpp
|
||||
new file mode 100644
|
||||
index 00000000..00821b7f
|
||||
--- /dev/null
|
||||
+++ b/src/libs/libgroff/curtime.cpp
|
||||
@@ -0,0 +1,51 @@
|
||||
+/* Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
+
|
||||
+This file is part of groff.
|
||||
+
|
||||
+groff 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 2 of the License, or
|
||||
+(at your option) any later version.
|
||||
+
|
||||
+groff 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.
|
||||
+
|
||||
+The GNU General Public License version 2 (GPL2) is available in the
|
||||
+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
|
||||
+
|
||||
+#include <errno.h>
|
||||
+#include <limits.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <time.h>
|
||||
+
|
||||
+#include "errarg.h"
|
||||
+#include "error.h"
|
||||
+
|
||||
+#ifdef LONG_FOR_TIME_T
|
||||
+long
|
||||
+#else
|
||||
+time_t
|
||||
+#endif
|
||||
+current_time()
|
||||
+{
|
||||
+ char *source_date_epoch = getenv("SOURCE_DATE_EPOCH");
|
||||
+
|
||||
+ if (source_date_epoch) {
|
||||
+ errno = 0;
|
||||
+ char *endptr;
|
||||
+ long epoch = strtol(source_date_epoch, &endptr, 10);
|
||||
+
|
||||
+ if ((errno == ERANGE && (epoch == LONG_MAX || epoch == LONG_MIN)) ||
|
||||
+ (errno != 0 && epoch == 0))
|
||||
+ fatal("$SOURCE_DATE_EPOCH: strtol: %1", strerror(errno));
|
||||
+ if (endptr == source_date_epoch)
|
||||
+ fatal("$SOURCE_DATE_EPOCH: no digits found: %1", endptr);
|
||||
+ if (*endptr != '\0')
|
||||
+ fatal("$SOURCE_DATE_EPOCH: trailing garbage: %1", endptr);
|
||||
+ return epoch;
|
||||
+ } else
|
||||
+ return time(0);
|
||||
+}
|
||||
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
|
||||
index 9594f074..f7d2c18a 100644
|
||||
--- a/src/roff/troff/input.cpp
|
||||
+++ b/src/roff/troff/input.cpp
|
||||
@@ -36,6 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
#include "input.h"
|
||||
#include "defs.h"
|
||||
#include "unicode.h"
|
||||
+#include "curtime.h"
|
||||
|
||||
// Needed for getpid() and isatty()
|
||||
#include "posix.h"
|
||||
@@ -8138,7 +8139,7 @@ static void init_registers()
|
||||
#else /* not LONG_FOR_TIME_T */
|
||||
time_t
|
||||
#endif /* not LONG_FOR_TIME_T */
|
||||
- t = time(0);
|
||||
+ t = current_time();
|
||||
// Use struct here to work around misfeature in old versions of g++.
|
||||
struct tm *tt = localtime(&t);
|
||||
set_number_reg("seconds", int(tt->tm_sec));
|
|
@ -0,0 +1,78 @@
|
|||
This hack makes Guile default to UTF-8. This avoids calls to
|
||||
`iconv_open'; `iconv_open' tries to open shared objects that aren't
|
||||
available during bootstrap, so using UTF-8 avoids that (and UTF-8 has
|
||||
built-in conversions in glibc, too.)
|
||||
|
||||
diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
|
||||
index 7cd753009..de92653a4 100644
|
||||
--- a/libguile/bytevectors.c
|
||||
+++ b/libguile/bytevectors.c
|
||||
@@ -1918,7 +1918,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
|
||||
if (scm_i_is_narrow_string (str)) \
|
||||
{ \
|
||||
err = mem_iconveh (scm_i_string_chars (str), c_strlen, \
|
||||
- "ISO-8859-1", c_utf_name, \
|
||||
+ "UTF-8", c_utf_name, \
|
||||
iconveh_question_mark, NULL, \
|
||||
&c_utf, &c_utf_len); \
|
||||
if (SCM_UNLIKELY (err)) \
|
||||
diff --git a/libguile/ports.c b/libguile/ports.c
|
||||
index 2a25cd58e..bdaf921ca 100644
|
||||
--- a/libguile/ports.c
|
||||
+++ b/libguile/ports.c
|
||||
@@ -959,7 +959,9 @@ canonicalize_encoding (const char *enc)
|
||||
char *ret;
|
||||
int i;
|
||||
|
||||
- if (!enc || encoding_matches (enc, sym_ISO_8859_1))
|
||||
+ if (enc == NULL)
|
||||
+ return sym_UTF_8;
|
||||
+ if (encoding_matches (enc, sym_ISO_8859_1))
|
||||
return sym_ISO_8859_1;
|
||||
if (encoding_matches (enc, sym_UTF_8))
|
||||
return sym_UTF_8;
|
||||
@@ -4182,7 +4184,7 @@ scm_init_ports (void)
|
||||
scm_c_define ("%default-port-conversion-strategy",
|
||||
scm_make_fluid_with_default (sym_substitute));
|
||||
/* Use the locale as the default port encoding. */
|
||||
- scm_i_set_default_port_encoding (locale_charset ());
|
||||
+ scm_i_set_default_port_encoding ("UTF-8");
|
||||
|
||||
scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION,
|
||||
"scm_init_ice_9_ports",
|
||||
diff --git a/libguile/strings.c b/libguile/strings.c
|
||||
index 5c49e33d8..0131e6dc8 100644
|
||||
--- a/libguile/strings.c
|
||||
+++ b/libguile/strings.c
|
||||
@@ -1561,7 +1561,7 @@ scm_i_default_string_failed_conversion_handler (void)
|
||||
SCM
|
||||
scm_from_locale_stringn (const char *str, size_t len)
|
||||
{
|
||||
- return scm_from_stringn (str, len, locale_charset (),
|
||||
+ return scm_from_stringn (str, len, "UTF-8",
|
||||
scm_i_default_string_failed_conversion_handler ());
|
||||
}
|
||||
|
||||
@@ -1885,7 +1885,7 @@ char *
|
||||
scm_to_locale_stringn (SCM str, size_t *lenp)
|
||||
{
|
||||
return scm_to_stringn (str, lenp,
|
||||
- locale_charset (),
|
||||
+ "UTF-8",
|
||||
scm_i_default_string_failed_conversion_handler ());
|
||||
}
|
||||
|
||||
@@ -2216,11 +2216,11 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
|
||||
len = 0;
|
||||
enc = encoding;
|
||||
if (enc == NULL)
|
||||
- enc = "ISO-8859-1";
|
||||
+ enc = "UTF-8";
|
||||
if (scm_i_is_narrow_string (str))
|
||||
{
|
||||
ret = mem_iconveh (scm_i_string_chars (str), ilen,
|
||||
- "ISO-8859-1", enc,
|
||||
+ "UTF-8", enc,
|
||||
(enum iconv_ilseq_handler) handler, NULL,
|
||||
&buf, &len);
|
||||
|
|
@ -35,11 +35,11 @@ location of the `guile' binary, allowing it to be relocated.
|
|||
+
|
||||
+ module_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
|
||||
+ strcpy (module_dir, prefix);
|
||||
+ strcat (module_dir, "/share/guile/2.0");
|
||||
+ strcat (module_dir, "/share/guile/" SCM_EFFECTIVE_VERSION);
|
||||
+
|
||||
+ ccache_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
|
||||
+ strcpy (ccache_dir, prefix);
|
||||
+ strcat (ccache_dir, "/lib/guile/2.0/ccache");
|
||||
+ strcat (ccache_dir, "/lib/guile/" SCM_EFFECTIVE_VERSION "/ccache");
|
||||
+
|
||||
env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_PATH"));
|
||||
if (env && strcmp (env, "") == 0)
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
This patch fixes a regex parsing compatibility issue with Perl 5.26.0.
|
||||
It manifests during the configure phase of at-spi2-core like this:
|
||||
|
||||
------
|
||||
Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/^(.*)\${ <-- HERE ?([A-Z_]+)}?(.*)$/ at /gnu/store/...-intltool-0.51.0/bin/intltool-update line 1065.
|
||||
------
|
||||
|
||||
Copied from Gentoo and MSYS2:
|
||||
|
||||
https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-util/intltool/files/intltool-0.51.0-perl-5.26.patch?id=1105187fc65d8bf643e682fcef39620dcfd9326a
|
||||
https://github.com/Alexpux/MSYS2-packages/blob/0d3f442553ae4fc8798e32cbf44c4252fa8f3c07/intltool/perl-5.22-compatibility.patch
|
||||
|
||||
#diff -ruN intltool-0.51.0.orig/intltool-update.in intltool-0.51.0/intltool-update.in
|
||||
#--- intltool-0.51.0.orig/intltool-update.in 2017-06-28 00:47:20.889269294 +0200
|
||||
#+++ intltool-0.51.0/intltool-update.in 2017-06-28 00:48:14.592271529 +0200
|
||||
#@@ -1068,7 +1068,7 @@
|
||||
# my $untouched = $1;
|
||||
# my $sub = "";
|
||||
# # Ignore recursive definitions of variables
|
||||
#- $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
|
||||
#+ $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\$\{?$2}?/;
|
||||
#
|
||||
# return SubstituteVariable ("$untouched$sub$rest");
|
||||
# }
|
||||
--- intltool-0.51.0.orig/intltool-update.in 2015-03-09 02:39:54.000000000 +0100
|
||||
+++ intltool-0.51.0.orig/intltool-update.in 2015-06-19 01:52:07.171228154 +0200
|
||||
@@ -1062,7 +1062,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
|
||||
+ if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/)
|
||||
{
|
||||
my $rest = $3;
|
||||
my $untouched = $1;
|
||||
@@ -1068,7 +1068,7 @@
|
||||
my $untouched = $1;
|
||||
my $sub = "";
|
||||
# Ignore recursive definitions of variables
|
||||
- $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
|
||||
+ $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\$\{?$2}?/;
|
||||
|
||||
return SubstituteVariable ("$untouched$sub$rest");
|
||||
}
|
||||
@@ -1190,10 +1190,10 @@
|
||||
$name =~ s/\(+$//g;
|
||||
$version =~ s/\(+$//g;
|
||||
|
||||
- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
|
||||
- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
|
||||
- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
|
||||
- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
|
||||
+ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
|
||||
+ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
|
||||
+ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
|
||||
+ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
|
||||
}
|
||||
|
||||
if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m)
|
||||
@@ -1219,11 +1219,11 @@
|
||||
$version =~ s/\(+$//g;
|
||||
$bugurl =~ s/\(+$//g if (defined $bugurl);
|
||||
|
||||
- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
|
||||
- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
|
||||
- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
|
||||
- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
|
||||
- $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\${?\w+}?/);
|
||||
+ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
|
||||
+ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
|
||||
+ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
|
||||
+ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
|
||||
+ $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/);
|
||||
}
|
||||
|
||||
# \s makes this not work, why?
|
|
@ -0,0 +1,28 @@
|
|||
The patch fixes build failure of form:
|
||||
../src/alpha/osf.S:298:2: error: #error "osf.S out of sync with ffi.h"
|
||||
Upstream fixed the bug in a more invasive way
|
||||
but didn't have releases since 3.2.1.
|
||||
|
||||
The patch is taken from Gentoo:
|
||||
https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-libs/libffi/files/libffi-3.2.1-complex_alpha.patch
|
||||
|
||||
--- libffi-3.2.1/src/alpha/osf.S 2015-01-16 10:46:15.000000000 +0100
|
||||
+++ libffi-3.2.1/src/alpha/osf.S 2015-01-16 10:46:24.000000000 +0100
|
||||
@@ -279,6 +279,7 @@
|
||||
.gprel32 $load_64 # FFI_TYPE_SINT64
|
||||
.gprel32 $load_none # FFI_TYPE_STRUCT
|
||||
.gprel32 $load_64 # FFI_TYPE_POINTER
|
||||
+ .gprel32 $load_none # FFI_TYPE_COMPLEX
|
||||
|
||||
/* Assert that the table above is in sync with ffi.h. */
|
||||
|
||||
@@ -294,7 +295,8 @@
|
||||
|| FFI_TYPE_SINT64 != 12 \
|
||||
|| FFI_TYPE_STRUCT != 13 \
|
||||
|| FFI_TYPE_POINTER != 14 \
|
||||
- || FFI_TYPE_LAST != 14
|
||||
+ || FFI_TYPE_COMPLEX != 15 \
|
||||
+ || FFI_TYPE_LAST != 15
|
||||
#error "osf.S out of sync with ffi.h"
|
||||
#endif
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
Fix CVE-2017-6891:
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6891
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
|
||||
https://git.savannah.gnu.org/cgit/libtasn1.git/commit/?id=5520704d075802df25ce4ffccc010ba1641bd484
|
||||
|
||||
From 5520704d075802df25ce4ffccc010ba1641bd484 Mon Sep 17 00:00:00 2001
|
||||
From: Nikos Mavrogiannopoulos <nmav@redhat.com>
|
||||
Date: Thu, 18 May 2017 18:03:34 +0200
|
||||
Subject: [PATCH] asn1_find_node: added safety check on asn1_find_node()
|
||||
|
||||
This prevents a stack overflow in asn1_find_node() which
|
||||
is triggered by too long variable names in the definitions
|
||||
files. That means that applications have to deliberately
|
||||
pass a too long 'name' constant to asn1_write_value()
|
||||
and friends. Reported by Jakub Jirasek.
|
||||
|
||||
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
|
||||
---
|
||||
lib/parser_aux.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/lib/parser_aux.c b/lib/parser_aux.c
|
||||
index b4a7370..976ab38 100644
|
||||
--- a/lib/parser_aux.c
|
||||
+++ b/lib/parser_aux.c
|
||||
@@ -120,6 +120,9 @@ asn1_find_node (asn1_node pointer, const char *name)
|
||||
if (n_end)
|
||||
{
|
||||
nsize = n_end - n_start;
|
||||
+ if (nsize >= sizeof(n))
|
||||
+ return NULL;
|
||||
+
|
||||
memcpy (n, n_start, nsize);
|
||||
n[nsize] = 0;
|
||||
n_start = n_end;
|
||||
@@ -158,6 +161,9 @@ asn1_find_node (asn1_node pointer, const char *name)
|
||||
if (n_end)
|
||||
{
|
||||
nsize = n_end - n_start;
|
||||
+ if (nsize >= sizeof(n))
|
||||
+ return NULL;
|
||||
+
|
||||
memcpy (n, n_start, nsize);
|
||||
n[nsize] = 0;
|
||||
n_start = n_end;
|
||||
--
|
||||
2.13.0
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
Fix CVE-2016-10092:
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2620
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10092
|
||||
https://security-tracker.debian.org/tracker/CVE-2016-10092
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcrop.c: fix readContigStripsIntoBuffer() in -i (ignore)
|
||||
mode so that the output buffer is correctly incremented to avoid write
|
||||
outside bounds.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2620
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1178; previous revision: 1.1177
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcrop.c,v <-- tools/tiffcrop.c
|
||||
new revision: 1.47; previous revision: 1.46
|
||||
|
||||
Index: libtiff/tools/tiffcrop.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcrop.c,v
|
||||
retrieving revision 1.46
|
||||
retrieving revision 1.47
|
||||
diff -u -r1.46 -r1.47
|
||||
--- libtiff/tools/tiffcrop.c 18 Nov 2016 14:58:46 -0000 1.46
|
||||
+++ libtiff/tools/tiffcrop.c 3 Dec 2016 11:35:56 -0000 1.47
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffcrop.c,v 1.46 2016-11-18 14:58:46 erouault Exp $ */
|
||||
+/* $Id: tiffcrop.c,v 1.47 2016-12-03 11:35:56 erouault Exp $ */
|
||||
|
||||
/* tiffcrop.c -- a port of tiffcp.c extended to include manipulations of
|
||||
* the image data through additional options listed below
|
||||
@@ -3698,7 +3698,7 @@
|
||||
(unsigned long) strip, (unsigned long)rows);
|
||||
return 0;
|
||||
}
|
||||
- bufp += bytes_read;
|
||||
+ bufp += stripsize;
|
||||
}
|
||||
|
||||
return 1;
|
|
@ -1,53 +0,0 @@
|
|||
Fix CVE-2016-10093:
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2610
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10093
|
||||
https://security-tracker.debian.org/tracker/CVE-2016-10093
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcp.c: fix uint32 underflow/overflow that can cause
|
||||
heap-based buffer overflow.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2610
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1187; previous revision: 1.1186
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v <-- tools/tiffcp.c
|
||||
new revision: 1.59; previous revision: 1.58
|
||||
|
||||
Index: libtiff/tools/tiffcp.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v
|
||||
retrieving revision 1.58
|
||||
retrieving revision 1.59
|
||||
diff -u -r1.58 -r1.59
|
||||
--- libtiff/tools/tiffcp.c 3 Dec 2016 15:44:15 -0000 1.58
|
||||
+++ libtiff/tools/tiffcp.c 3 Dec 2016 16:40:01 -0000 1.59
|
||||
@@ -1163,7 +1163,7 @@
|
||||
|
||||
static void
|
||||
cpStripToTile(uint8* out, uint8* in,
|
||||
- uint32 rows, uint32 cols, int outskew, int inskew)
|
||||
+ uint32 rows, uint32 cols, int outskew, int64 inskew)
|
||||
{
|
||||
while (rows-- > 0) {
|
||||
uint32 j = cols;
|
||||
@@ -1320,7 +1320,7 @@
|
||||
tdata_t tilebuf;
|
||||
uint32 imagew = TIFFScanlineSize(in);
|
||||
uint32 tilew = TIFFTileRowSize(in);
|
||||
- int iskew = imagew - tilew;
|
||||
+ int64 iskew = (int64)imagew - (int64)tilew;
|
||||
uint8* bufp = (uint8*) buf;
|
||||
uint32 tw, tl;
|
||||
uint32 row;
|
||||
@@ -1348,7 +1348,7 @@
|
||||
status = 0;
|
||||
goto done;
|
||||
}
|
||||
- if (colb + tilew > imagew) {
|
||||
+ if (colb > iskew) {
|
||||
uint32 width = imagew - colb;
|
||||
uint32 oskew = tilew - width;
|
||||
cpStripToTile(bufp + colb,
|
|
@ -1,34 +0,0 @@
|
|||
Fix CVE-2016-10094:
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2640
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10094
|
||||
https://security-tracker.debian.org/tracker/CVE-2016-10094
|
||||
|
||||
2016-12-20 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiff2pdf.c: avoid potential heap-based overflow in
|
||||
t2p_readwrite_pdf_image_tile().
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2640
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1199; previous revision: 1.1198
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiff2pdf.c,v <-- tools/tiff2pdf.c
|
||||
new revision: 1.101; previous revision: 1.100
|
||||
|
||||
Index: libtiff/tools/tiff2pdf.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiff2pdf.c,v
|
||||
retrieving revision 1.100
|
||||
retrieving revision 1.101
|
||||
diff -u -r1.100 -r1.101
|
||||
--- libtiff/tools/tiff2pdf.c 20 Dec 2016 17:24:35 -0000 1.100
|
||||
+++ libtiff/tools/tiff2pdf.c 20 Dec 2016 17:28:17 -0000 1.101
|
||||
@@ -2895,7 +2895,7 @@
|
||||
return(0);
|
||||
}
|
||||
if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &count, &jpt) != 0) {
|
||||
- if (count >= 4) {
|
||||
+ if (count > 4) {
|
||||
int retTIFFReadRawTile;
|
||||
/* Ignore EOI marker of JpegTables */
|
||||
_TIFFmemcpy(buffer, jpt, count - 2);
|
|
@ -1,86 +0,0 @@
|
|||
Fix CVE-2017-5225 (Heap based buffer overflow in tools/tiffcp):
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2656
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5225
|
||||
https://security-tracker.debian.org/tracker/CVE-2017-5225
|
||||
|
||||
2017-01-11 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcp.c: error out cleanly in cpContig2SeparateByRow and
|
||||
cpSeparate2ContigByRow if BitsPerSample != 8 to avoid heap based
|
||||
overflow.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2656 and
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2657
|
||||
|
||||
|
||||
less C/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1210; previous revision: 1.1209
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v <-- tools/tiffcp.c
|
||||
new revision: 1.61; previous revision: 1.60
|
||||
|
||||
Index: libtiff/tools/tiffcp.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v
|
||||
retrieving revision 1.60
|
||||
retrieving revision 1.61
|
||||
diff -u -r1.60 -r1.61
|
||||
--- libtiff/tools/tiffcp.c 3 Dec 2016 16:50:02 -0000 1.60
|
||||
+++ libtiff/tools/tiffcp.c 11 Jan 2017 19:26:14 -0000 1.61
|
||||
#@@ -1,4 +1,4 @@
|
||||
#-/* $Id: tiffcp.c,v 1.60 2016-12-03 16:50:02 erouault Exp $ */
|
||||
#+/* $Id: tiffcp.c,v 1.61 2017-01-11 19:26:14 erouault Exp $ */
|
||||
#
|
||||
# /*
|
||||
# * Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -591,7 +591,7 @@
|
||||
static int
|
||||
tiffcp(TIFF* in, TIFF* out)
|
||||
{
|
||||
- uint16 bitspersample, samplesperpixel = 1;
|
||||
+ uint16 bitspersample = 1, samplesperpixel = 1;
|
||||
uint16 input_compression, input_photometric = PHOTOMETRIC_MINISBLACK;
|
||||
copyFunc cf;
|
||||
uint32 width, length;
|
||||
@@ -1067,6 +1067,16 @@
|
||||
register uint32 n;
|
||||
uint32 row;
|
||||
tsample_t s;
|
||||
+ uint16 bps = 0;
|
||||
+
|
||||
+ (void) TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
+ if( bps != 8 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(in),
|
||||
+ "Error, can only handle BitsPerSample=8 in %s",
|
||||
+ "cpContig2SeparateByRow");
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
inbuf = _TIFFmalloc(scanlinesizein);
|
||||
outbuf = _TIFFmalloc(scanlinesizeout);
|
||||
@@ -1120,6 +1130,16 @@
|
||||
register uint32 n;
|
||||
uint32 row;
|
||||
tsample_t s;
|
||||
+ uint16 bps = 0;
|
||||
+
|
||||
+ (void) TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
+ if( bps != 8 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(in),
|
||||
+ "Error, can only handle BitsPerSample=8 in %s",
|
||||
+ "cpSeparate2ContigByRow");
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
inbuf = _TIFFmalloc(scanlinesizein);
|
||||
outbuf = _TIFFmalloc(scanlinesizeout);
|
||||
@@ -1784,7 +1804,7 @@
|
||||
uint32 w, l, tw, tl;
|
||||
int bychunk;
|
||||
|
||||
- (void) TIFFGetField(in, TIFFTAG_PLANARCONFIG, &shortv);
|
||||
+ (void) TIFFGetFieldDefaulted(in, TIFFTAG_PLANARCONFIG, &shortv);
|
||||
if (shortv != config && bitspersample != 8 && samplesperpixel > 1) {
|
||||
fprintf(stderr,
|
||||
"%s: Cannot handle different planar configuration w/ bits/sample != 8\n",
|
|
@ -1,60 +0,0 @@
|
|||
Fix assertion failure in readSeparateTilesIntoBuffer():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2605
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcp.c: replace assert( (bps % 8) == 0 ) by a non assert
|
||||
check.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2605
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1188; previous revision: 1.1187
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v <-- tools/tiffcp.c
|
||||
new revision: 1.60; previous revision: 1.59
|
||||
|
||||
Index: libtiff/tools/tiffcp.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v
|
||||
retrieving revision 1.59
|
||||
retrieving revision 1.60
|
||||
diff -u -r1.59 -r1.60
|
||||
--- libtiff/tools/tiffcp.c 3 Dec 2016 16:40:01 -0000 1.59
|
||||
+++ libtiff/tools/tiffcp.c 3 Dec 2016 16:50:02 -0000 1.60
|
||||
@@ -45,7 +45,6 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <ctype.h>
|
||||
-#include <assert.h>
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
@@ -1393,7 +1392,12 @@
|
||||
status = 0;
|
||||
goto done;
|
||||
}
|
||||
- assert( bps % 8 == 0 );
|
||||
+ if( (bps % 8) != 0 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(in), "Error, cannot handle BitsPerSample that is not a multiple of 8");
|
||||
+ status = 0;
|
||||
+ goto done;
|
||||
+ }
|
||||
bytes_per_sample = bps/8;
|
||||
|
||||
for (row = 0; row < imagelength; row += tl) {
|
||||
@@ -1584,7 +1588,12 @@
|
||||
_TIFFfree(obuf);
|
||||
return 0;
|
||||
}
|
||||
- assert( bps % 8 == 0 );
|
||||
+ if( (bps % 8) != 0 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(out), "Error, cannot handle BitsPerSample that is not a multiple of 8");
|
||||
+ _TIFFfree(obuf);
|
||||
+ return 0;
|
||||
+ }
|
||||
bytes_per_sample = bps/8;
|
||||
|
||||
for (row = 0; row < imagelength; row += tl) {
|
|
@ -1,63 +0,0 @@
|
|||
Fix divide-by-zero in OJPEGDecodeRaw():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2611
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* libtiff/tif_ojpeg.c: make OJPEGDecode() early exit in case of failure
|
||||
in
|
||||
OJPEGPreDecode(). This will avoid a divide by zero, and potential other
|
||||
issues.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2611
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1177; previous revision: 1.1176
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tif_ojpeg.c,v <-- libtiff/tif_ojpeg.c
|
||||
new revision: 1.66; previous revision: 1.65
|
||||
|
||||
Index: libtiff/libtiff/tif_ojpeg.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_ojpeg.c,v
|
||||
retrieving revision 1.65
|
||||
retrieving revision 1.66
|
||||
diff -u -r1.65 -r1.66
|
||||
--- libtiff/libtiff/tif_ojpeg.c 4 Sep 2016 21:32:56 -0000 1.65
|
||||
+++ libtiff/libtiff/tif_ojpeg.c 3 Dec 2016 11:15:18 -0000 1.66
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tif_ojpeg.c,v 1.65 2016-09-04 21:32:56 erouault Exp $ */
|
||||
+/* $Id: tif_ojpeg.c,v 1.66 2016-12-03 11:15:18 erouault Exp $ */
|
||||
|
||||
/* WARNING: The type of JPEG encapsulation defined by the TIFF Version 6.0
|
||||
specification is now totally obsolete and deprecated for new applications and
|
||||
@@ -244,6 +244,7 @@
|
||||
|
||||
typedef struct {
|
||||
TIFF* tif;
|
||||
+ int decoder_ok;
|
||||
#ifndef LIBJPEG_ENCAP_EXTERNAL
|
||||
JMP_BUF exit_jmpbuf;
|
||||
#endif
|
||||
@@ -722,6 +723,7 @@
|
||||
}
|
||||
sp->write_curstrile++;
|
||||
}
|
||||
+ sp->decoder_ok = 1;
|
||||
return(1);
|
||||
}
|
||||
|
||||
@@ -784,8 +786,14 @@
|
||||
static int
|
||||
OJPEGDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
|
||||
{
|
||||
+ static const char module[]="OJPEGDecode";
|
||||
OJPEGState* sp=(OJPEGState*)tif->tif_data;
|
||||
(void)s;
|
||||
+ if( !sp->decoder_ok )
|
||||
+ {
|
||||
+ TIFFErrorExt(tif->tif_clientdata,module,"Cannot decode: decoder not correctly initialized");
|
||||
+ return 0;
|
||||
+ }
|
||||
if (sp->libjpeg_jpeg_query_style==0)
|
||||
{
|
||||
if (OJPEGDecodeRaw(tif,buf,cc)==0)
|
|
@ -1,104 +0,0 @@
|
|||
Fix two divide-by-zero bugs in readSeparateTilesIntoBuffer():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2597
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2607
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcp.c: avoid potential division by zero is BitsPerSamples
|
||||
tag is
|
||||
missing.
|
||||
Reported by Agostino sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2597
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1183; previous revision: 1.1182
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v <-- tools/tiffcp.c
|
||||
new revision: 1.57; previous revision: 1.56
|
||||
|
||||
Index: libtiff/tools/tiffcp.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v
|
||||
retrieving revision 1.56
|
||||
retrieving revision 1.57
|
||||
diff -u -r1.56 -r1.57
|
||||
--- libtiff/tools/tiffcp.c 2 Dec 2016 22:13:32 -0000 1.56
|
||||
+++ libtiff/tools/tiffcp.c 3 Dec 2016 14:42:40 -0000 1.57
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffcp.c,v 1.56 2016-12-02 22:13:32 erouault Exp $ */
|
||||
+/* $Id: tiffcp.c,v 1.57 2016-12-03 14:42:40 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -1378,7 +1378,7 @@
|
||||
uint8* bufp = (uint8*) buf;
|
||||
uint32 tw, tl;
|
||||
uint32 row;
|
||||
- uint16 bps, bytes_per_sample;
|
||||
+ uint16 bps = 0, bytes_per_sample;
|
||||
|
||||
tilebuf = _TIFFmalloc(tilesize);
|
||||
if (tilebuf == 0)
|
||||
@@ -1387,6 +1387,12 @@
|
||||
(void) TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw);
|
||||
(void) TIFFGetField(in, TIFFTAG_TILELENGTH, &tl);
|
||||
(void) TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
+ if( bps == 0 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(in), "Error, cannot read BitsPerSample");
|
||||
+ status = 0;
|
||||
+ goto done;
|
||||
+ }
|
||||
assert( bps % 8 == 0 );
|
||||
bytes_per_sample = bps/8;
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcp.c: avoid potential division by zero is BitsPerSamples
|
||||
tag is
|
||||
missing.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2607
|
||||
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1186; previous revision: 1.1185
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v <-- tools/tiffcp.c
|
||||
new revision: 1.58; previous revision: 1.57
|
||||
|
||||
Index: libtiff/tools/tiffcp.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v
|
||||
retrieving revision 1.57
|
||||
retrieving revision 1.58
|
||||
diff -u -r1.57 -r1.58
|
||||
--- libtiff/tools/tiffcp.c 3 Dec 2016 14:42:40 -0000 1.57
|
||||
+++ libtiff/tools/tiffcp.c 3 Dec 2016 15:44:15 -0000 1.58
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffcp.c,v 1.57 2016-12-03 14:42:40 erouault Exp $ */
|
||||
+/* $Id: tiffcp.c,v 1.58 2016-12-03 15:44:15 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -1569,7 +1569,7 @@
|
||||
uint8* bufp = (uint8*) buf;
|
||||
uint32 tl, tw;
|
||||
uint32 row;
|
||||
- uint16 bps, bytes_per_sample;
|
||||
+ uint16 bps = 0, bytes_per_sample;
|
||||
|
||||
obuf = _TIFFmalloc(TIFFTileSize(out));
|
||||
if (obuf == NULL)
|
||||
@@ -1578,6 +1578,12 @@
|
||||
(void) TIFFGetField(out, TIFFTAG_TILELENGTH, &tl);
|
||||
(void) TIFFGetField(out, TIFFTAG_TILEWIDTH, &tw);
|
||||
(void) TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
+ if( bps == 0 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(out), "Error, cannot read BitsPerSample");
|
||||
+ _TIFFfree(obuf);
|
||||
+ return 0;
|
||||
+ }
|
||||
assert( bps % 8 == 0 );
|
||||
bytes_per_sample = bps/8;
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
Fix divide-by-zero in readSeparateStripsIntoBuffer():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2619
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcrop.c: fix integer division by zero when BitsPerSample is
|
||||
missing.
|
||||
Reported by Agostina Sarubo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2619
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1180; previous revision: 1.1179
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcrop.c,v <-- tools/tiffcrop.c
|
||||
new revision: 1.49; previous revision: 1.48
|
||||
|
||||
Index: libtiff/tools/tiffcrop.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcrop.c,v
|
||||
retrieving revision 1.48
|
||||
retrieving revision 1.49
|
||||
diff -u -r1.48 -r1.49
|
||||
--- libtiff/tools/tiffcrop.c 3 Dec 2016 12:19:32 -0000 1.48
|
||||
+++ libtiff/tools/tiffcrop.c 3 Dec 2016 13:00:04 -0000 1.49
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffcrop.c,v 1.48 2016-12-03 12:19:32 erouault Exp $ */
|
||||
+/* $Id: tiffcrop.c,v 1.49 2016-12-03 13:00:04 erouault Exp $ */
|
||||
|
||||
/* tiffcrop.c -- a port of tiffcp.c extended to include manipulations of
|
||||
* the image data through additional options listed below
|
||||
@@ -1164,7 +1164,7 @@
|
||||
tdata_t obuf;
|
||||
|
||||
(void) TIFFGetFieldDefaulted(out, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
|
||||
- (void) TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
+ (void) TIFFGetFieldDefaulted(out, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
bytes_per_sample = (bps + 7) / 8;
|
||||
if( width == 0 ||
|
||||
(uint32)bps * (uint32)spp > TIFF_UINT32_MAX / width ||
|
||||
@@ -4760,7 +4760,7 @@
|
||||
int i, bytes_per_sample, bytes_per_pixel, shift_width, result = 1;
|
||||
uint32 j;
|
||||
int32 bytes_read = 0;
|
||||
- uint16 bps, planar;
|
||||
+ uint16 bps = 0, planar;
|
||||
uint32 nstrips;
|
||||
uint32 strips_per_sample;
|
||||
uint32 src_rowsize, dst_rowsize, rows_processed, rps;
|
||||
@@ -4780,7 +4780,7 @@
|
||||
}
|
||||
|
||||
memset (srcbuffs, '\0', sizeof(srcbuffs));
|
||||
- TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
+ TIFFGetFieldDefaulted(in, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
TIFFGetFieldDefaulted(in, TIFFTAG_PLANARCONFIG, &planar);
|
||||
TIFFGetFieldDefaulted(in, TIFFTAG_ROWSPERSTRIP, &rps);
|
||||
if (rps > length)
|
|
@ -1,67 +0,0 @@
|
|||
Fix an integer overflow in TIFFReadEncodedStrip() that led to division-by-zero:
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2596
|
||||
|
||||
2016-12-02 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* libtiff/tif_read.c, libtiff/tiffiop.h: fix uint32 overflow in
|
||||
TIFFReadEncodedStrip() that caused an integer division by zero.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2596
|
||||
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1173; previous revision: 1.1172
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tif_read.c,v <-- libtiff/tif_read.c
|
||||
new revision: 1.50; previous revision: 1.49
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tiffiop.h,v <-- libtiff/tiffiop.h
|
||||
new revision: 1.90; previous revision: 1.89
|
||||
|
||||
Index: libtiff/libtiff/tif_read.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_read.c,v
|
||||
retrieving revision 1.49
|
||||
retrieving revision 1.50
|
||||
diff -u -r1.49 -r1.50
|
||||
--- libtiff/libtiff/tif_read.c 10 Jul 2016 18:00:21 -0000 1.49
|
||||
+++ libtiff/libtiff/tif_read.c 2 Dec 2016 21:56:56 -0000 1.50
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tif_read.c,v 1.49 2016-07-10 18:00:21 erouault Exp $ */
|
||||
+/* $Id: tif_read.c,v 1.50 2016-12-02 21:56:56 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -346,7 +346,7 @@
|
||||
rowsperstrip=td->td_rowsperstrip;
|
||||
if (rowsperstrip>td->td_imagelength)
|
||||
rowsperstrip=td->td_imagelength;
|
||||
- stripsperplane=((td->td_imagelength+rowsperstrip-1)/rowsperstrip);
|
||||
+ stripsperplane= TIFFhowmany_32_maxuint_compat(td->td_imagelength, rowsperstrip);
|
||||
stripinplane=(strip%stripsperplane);
|
||||
plane=(uint16)(strip/stripsperplane);
|
||||
rows=td->td_imagelength-stripinplane*rowsperstrip;
|
||||
Index: libtiff/libtiff/tiffiop.h
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tiffiop.h,v
|
||||
retrieving revision 1.89
|
||||
retrieving revision 1.90
|
||||
diff -u -r1.89 -r1.90
|
||||
--- libtiff/libtiff/tiffiop.h 23 Jan 2016 21:20:34 -0000 1.89
|
||||
+++ libtiff/libtiff/tiffiop.h 2 Dec 2016 21:56:56 -0000 1.90
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffiop.h,v 1.89 2016-01-23 21:20:34 erouault Exp $ */
|
||||
+/* $Id: tiffiop.h,v 1.90 2016-12-02 21:56:56 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -250,6 +250,10 @@
|
||||
#define TIFFhowmany_32(x, y) (((uint32)x < (0xffffffff - (uint32)(y-1))) ? \
|
||||
((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y))) : \
|
||||
0U)
|
||||
+/* Variant of TIFFhowmany_32() that doesn't return 0 if x close to MAXUINT. */
|
||||
+/* Caution: TIFFhowmany_32_maxuint_compat(x,y)*y might overflow */
|
||||
+#define TIFFhowmany_32_maxuint_compat(x, y) \
|
||||
+ (((uint32)(x) / (uint32)(y)) + ((((uint32)(x) % (uint32)(y)) != 0) ? 1 : 0))
|
||||
#define TIFFhowmany8_32(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
|
||||
#define TIFFroundup_32(x, y) (TIFFhowmany_32(x,y)*(y))
|
||||
#define TIFFhowmany_64(x, y) ((((uint64)(x))+(((uint64)(y))-1))/((uint64)(y)))
|
|
@ -1,131 +0,0 @@
|
|||
Fix heap-based buffer overflow in _TIFFmemcpy():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2604
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* libtiff/tif_pixarlog.c, libtiff/tif_luv.c: fix heap-based buffer
|
||||
overflow on generation of PixarLog / LUV compressed files, with
|
||||
ColorMap, TransferFunction attached and nasty plays with bitspersample.
|
||||
The fix for LUV has not been tested, but suffers from the same kind
|
||||
of issue of PixarLog.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2604
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1175; previous revision: 1.1174
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tif_luv.c,v <-- libtiff/tif_luv.c
|
||||
new revision: 1.44; previous revision: 1.43
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tif_pixarlog.c,v <--
|
||||
libtiff/tif_pixarlog.c
|
||||
new revision: 1.49; previous revision: 1.48
|
||||
|
||||
Index: libtiff/libtiff/tif_luv.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_luv.c,v
|
||||
retrieving revision 1.43
|
||||
retrieving revision 1.44
|
||||
diff -u -r1.43 -r1.44
|
||||
--- libtiff/libtiff/tif_luv.c 4 Sep 2016 21:32:56 -0000 1.43
|
||||
+++ libtiff/libtiff/tif_luv.c 2 Dec 2016 23:05:51 -0000 1.44
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tif_luv.c,v 1.43 2016-09-04 21:32:56 erouault Exp $ */
|
||||
+/* $Id: tif_luv.c,v 1.44 2016-12-02 23:05:51 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Greg Ward Larson
|
||||
@@ -158,6 +158,7 @@
|
||||
typedef struct logLuvState LogLuvState;
|
||||
|
||||
struct logLuvState {
|
||||
+ int encoder_state; /* 1 if encoder correctly initialized */
|
||||
int user_datafmt; /* user data format */
|
||||
int encode_meth; /* encoding method */
|
||||
int pixel_size; /* bytes per pixel */
|
||||
@@ -1552,6 +1553,7 @@
|
||||
td->td_photometric, "must be either LogLUV or LogL");
|
||||
break;
|
||||
}
|
||||
+ sp->encoder_state = 1;
|
||||
return (1);
|
||||
notsupported:
|
||||
TIFFErrorExt(tif->tif_clientdata, module,
|
||||
@@ -1563,19 +1565,27 @@
|
||||
static void
|
||||
LogLuvClose(TIFF* tif)
|
||||
{
|
||||
+ LogLuvState* sp = (LogLuvState*) tif->tif_data;
|
||||
TIFFDirectory *td = &tif->tif_dir;
|
||||
|
||||
+ assert(sp != 0);
|
||||
/*
|
||||
* For consistency, we always want to write out the same
|
||||
* bitspersample and sampleformat for our TIFF file,
|
||||
* regardless of the data format being used by the application.
|
||||
* Since this routine is called after tags have been set but
|
||||
* before they have been recorded in the file, we reset them here.
|
||||
+ * Note: this is really a nasty approach. See PixarLogClose
|
||||
*/
|
||||
- td->td_samplesperpixel =
|
||||
- (td->td_photometric == PHOTOMETRIC_LOGL) ? 1 : 3;
|
||||
- td->td_bitspersample = 16;
|
||||
- td->td_sampleformat = SAMPLEFORMAT_INT;
|
||||
+ if( sp->encoder_state )
|
||||
+ {
|
||||
+ /* See PixarLogClose. Might avoid issues with tags whose size depends
|
||||
+ * on those below, but not completely sure this is enough. */
|
||||
+ td->td_samplesperpixel =
|
||||
+ (td->td_photometric == PHOTOMETRIC_LOGL) ? 1 : 3;
|
||||
+ td->td_bitspersample = 16;
|
||||
+ td->td_sampleformat = SAMPLEFORMAT_INT;
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
Index: libtiff/libtiff/tif_pixarlog.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_pixarlog.c,v
|
||||
retrieving revision 1.48
|
||||
retrieving revision 1.49
|
||||
diff -u -r1.48 -r1.49
|
||||
--- libtiff/libtiff/tif_pixarlog.c 23 Sep 2016 22:12:18 -0000 1.48
|
||||
+++ libtiff/libtiff/tif_pixarlog.c 2 Dec 2016 23:05:51 -0000 1.49
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tif_pixarlog.c,v 1.48 2016-09-23 22:12:18 erouault Exp $ */
|
||||
+/* $Id: tif_pixarlog.c,v 1.49 2016-12-02 23:05:51 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996-1997 Sam Leffler
|
||||
@@ -1233,8 +1233,10 @@
|
||||
static void
|
||||
PixarLogClose(TIFF* tif)
|
||||
{
|
||||
+ PixarLogState* sp = (PixarLogState*) tif->tif_data;
|
||||
TIFFDirectory *td = &tif->tif_dir;
|
||||
|
||||
+ assert(sp != 0);
|
||||
/* In a really sneaky (and really incorrect, and untruthful, and
|
||||
* troublesome, and error-prone) maneuver that completely goes against
|
||||
* the spirit of TIFF, and breaks TIFF, on close, we covertly
|
||||
@@ -1243,8 +1245,19 @@
|
||||
* readers that don't know about PixarLog, or how to set
|
||||
* the PIXARLOGDATFMT pseudo-tag.
|
||||
*/
|
||||
- td->td_bitspersample = 8;
|
||||
- td->td_sampleformat = SAMPLEFORMAT_UINT;
|
||||
+
|
||||
+ if (sp->state&PLSTATE_INIT) {
|
||||
+ /* We test the state to avoid an issue such as in
|
||||
+ * http://bugzilla.maptools.org/show_bug.cgi?id=2604
|
||||
+ * What appends in that case is that the bitspersample is 1 and
|
||||
+ * a TransferFunction is set. The size of the TransferFunction
|
||||
+ * depends on 1<<bitspersample. So if we increase it, an access
|
||||
+ * out of the buffer will happen at directory flushing.
|
||||
+ * Another option would be to clear those targs.
|
||||
+ */
|
||||
+ td->td_bitspersample = 8;
|
||||
+ td->td_sampleformat = SAMPLEFORMAT_UINT;
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
|
@ -1,132 +0,0 @@
|
|||
Fix heap-based buffer overflow in TIFFFillStrip():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2608
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* libtiff/tif_dirread.c: modify ChopUpSingleUncompressedStrip() to
|
||||
instanciate compute ntrips as TIFFhowmany_32(td->td_imagelength,
|
||||
rowsperstrip),
|
||||
instead of a logic based on the total size of data. Which is faulty is
|
||||
the total size of data is not sufficient to fill the whole image, and
|
||||
thus
|
||||
results in reading outside of the StripByCounts/StripOffsets arrays
|
||||
when
|
||||
using TIFFReadScanline().
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2608.
|
||||
|
||||
* libtiff/tif_strip.c: revert the change in TIFFNumberOfStrips() done
|
||||
for http://bugzilla.maptools.org/show_bug.cgi?id=2587 / CVE-2016-9273
|
||||
since
|
||||
the above change is a better fix that makes it unnecessary.
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1176; previous revision: 1.1175
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v <--
|
||||
libtiff/tif_dirread.c
|
||||
new revision: 1.205; previous revision: 1.204
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tif_strip.c,v <-- libtiff/tif_strip.c
|
||||
new revision: 1.38; previous revision: 1.37
|
||||
|
||||
Index: libtiff/libtiff/tif_dirread.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v
|
||||
retrieving revision 1.204
|
||||
retrieving revision 1.205
|
||||
diff -u -r1.204 -r1.205
|
||||
--- libtiff/libtiff/tif_dirread.c 16 Nov 2016 15:14:15 -0000 1.204
|
||||
+++ libtiff/libtiff/tif_dirread.c 3 Dec 2016 11:02:15 -0000 1.205
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tif_dirread.c,v 1.204 2016-11-16 15:14:15 erouault Exp $ */
|
||||
+/* $Id: tif_dirread.c,v 1.205 2016-12-03 11:02:15 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -5502,8 +5502,7 @@
|
||||
uint64 rowblockbytes;
|
||||
uint64 stripbytes;
|
||||
uint32 strip;
|
||||
- uint64 nstrips64;
|
||||
- uint32 nstrips32;
|
||||
+ uint32 nstrips;
|
||||
uint32 rowsperstrip;
|
||||
uint64* newcounts;
|
||||
uint64* newoffsets;
|
||||
@@ -5534,18 +5533,17 @@
|
||||
return;
|
||||
|
||||
/*
|
||||
- * never increase the number of strips in an image
|
||||
+ * never increase the number of rows per strip
|
||||
*/
|
||||
if (rowsperstrip >= td->td_rowsperstrip)
|
||||
return;
|
||||
- nstrips64 = TIFFhowmany_64(bytecount, stripbytes);
|
||||
- if ((nstrips64==0)||(nstrips64>0xFFFFFFFF)) /* something is wonky, do nothing. */
|
||||
- return;
|
||||
- nstrips32 = (uint32)nstrips64;
|
||||
+ nstrips = TIFFhowmany_32(td->td_imagelength, rowsperstrip);
|
||||
+ if( nstrips == 0 )
|
||||
+ return;
|
||||
|
||||
- newcounts = (uint64*) _TIFFCheckMalloc(tif, nstrips32, sizeof (uint64),
|
||||
+ newcounts = (uint64*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint64),
|
||||
"for chopped \"StripByteCounts\" array");
|
||||
- newoffsets = (uint64*) _TIFFCheckMalloc(tif, nstrips32, sizeof (uint64),
|
||||
+ newoffsets = (uint64*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint64),
|
||||
"for chopped \"StripOffsets\" array");
|
||||
if (newcounts == NULL || newoffsets == NULL) {
|
||||
/*
|
||||
@@ -5562,18 +5560,18 @@
|
||||
* Fill the strip information arrays with new bytecounts and offsets
|
||||
* that reflect the broken-up format.
|
||||
*/
|
||||
- for (strip = 0; strip < nstrips32; strip++) {
|
||||
+ for (strip = 0; strip < nstrips; strip++) {
|
||||
if (stripbytes > bytecount)
|
||||
stripbytes = bytecount;
|
||||
newcounts[strip] = stripbytes;
|
||||
- newoffsets[strip] = offset;
|
||||
+ newoffsets[strip] = stripbytes ? offset : 0;
|
||||
offset += stripbytes;
|
||||
bytecount -= stripbytes;
|
||||
}
|
||||
/*
|
||||
* Replace old single strip info with multi-strip info.
|
||||
*/
|
||||
- td->td_stripsperimage = td->td_nstrips = nstrips32;
|
||||
+ td->td_stripsperimage = td->td_nstrips = nstrips;
|
||||
TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
|
||||
|
||||
_TIFFfree(td->td_stripbytecount);
|
||||
Index: libtiff/libtiff/tif_strip.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_strip.c,v
|
||||
retrieving revision 1.37
|
||||
retrieving revision 1.38
|
||||
diff -u -r1.37 -r1.38
|
||||
--- libtiff/libtiff/tif_strip.c 9 Nov 2016 23:00:49 -0000 1.37
|
||||
+++ libtiff/libtiff/tif_strip.c 3 Dec 2016 11:02:15 -0000 1.38
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tif_strip.c,v 1.37 2016-11-09 23:00:49 erouault Exp $ */
|
||||
+/* $Id: tif_strip.c,v 1.38 2016-12-03 11:02:15 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991-1997 Sam Leffler
|
||||
@@ -63,15 +63,6 @@
|
||||
TIFFDirectory *td = &tif->tif_dir;
|
||||
uint32 nstrips;
|
||||
|
||||
- /* If the value was already computed and store in td_nstrips, then return it,
|
||||
- since ChopUpSingleUncompressedStrip might have altered and resized the
|
||||
- since the td_stripbytecount and td_stripoffset arrays to the new value
|
||||
- after the initial affectation of td_nstrips = TIFFNumberOfStrips() in
|
||||
- tif_dirread.c ~line 3612.
|
||||
- See http://bugzilla.maptools.org/show_bug.cgi?id=2587 */
|
||||
- if( td->td_nstrips )
|
||||
- return td->td_nstrips;
|
||||
-
|
||||
nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 :
|
||||
TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip));
|
||||
if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
|
|
@ -1,67 +0,0 @@
|
|||
Fix heap buffer overflow in tiffcp when parsing number of inks:
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2599
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tif_dir.c: when TIFFGetField(, TIFFTAG_NUMBEROFINKS, ) is
|
||||
called,
|
||||
limit the return number of inks to SamplesPerPixel, so that code that
|
||||
parses
|
||||
ink names doesn't go past the end of the buffer.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2599
|
||||
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1184; previous revision: 1.1183
|
||||
/cvs/maptools/cvsroot/libtiff/libtiff/tif_dir.c,v <-- libtiff/tif_dir.c
|
||||
new revision: 1.128; previous revision: 1.127
|
||||
|
||||
Index: libtiff/libtiff/tif_dir.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dir.c,v
|
||||
retrieving revision 1.127
|
||||
retrieving revision 1.128
|
||||
diff -u -r1.127 -r1.128
|
||||
--- libtiff/libtiff/tif_dir.c 25 Oct 2016 21:35:15 -0000 1.127
|
||||
+++ libtiff/libtiff/tif_dir.c 3 Dec 2016 15:30:31 -0000 1.128
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tif_dir.c,v 1.127 2016-10-25 21:35:15 erouault Exp $ */
|
||||
+/* $Id: tif_dir.c,v 1.128 2016-12-03 15:30:31 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -854,6 +854,32 @@
|
||||
if( fip == NULL ) /* cannot happen since TIFFGetField() already checks it */
|
||||
return 0;
|
||||
|
||||
+ if( tag == TIFFTAG_NUMBEROFINKS )
|
||||
+ {
|
||||
+ int i;
|
||||
+ for (i = 0; i < td->td_customValueCount; i++) {
|
||||
+ uint16 val;
|
||||
+ TIFFTagValue *tv = td->td_customValues + i;
|
||||
+ if (tv->info->field_tag != tag)
|
||||
+ continue;
|
||||
+ val = *(uint16 *)tv->value;
|
||||
+ /* Truncate to SamplesPerPixel, since the */
|
||||
+ /* setting code for INKNAMES assume that there are SamplesPerPixel */
|
||||
+ /* inknames. */
|
||||
+ /* Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2599 */
|
||||
+ if( val > td->td_samplesperpixel )
|
||||
+ {
|
||||
+ TIFFWarningExt(tif->tif_clientdata,"_TIFFVGetField",
|
||||
+ "Truncating NumberOfInks from %u to %u",
|
||||
+ val, td->td_samplesperpixel);
|
||||
+ val = td->td_samplesperpixel;
|
||||
+ }
|
||||
+ *va_arg(ap, uint16*) = val;
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* We want to force the custom code to be used for custom
|
||||
* fields even if the tag happens to match a well known
|
|
@ -1,60 +0,0 @@
|
|||
Fix heap-based buffer overflow in combineSeparateSamples16bits():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2621
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcrop.c: add 3 extra bytes at end of strip buffer in
|
||||
readSeparateStripsIntoBuffer() to avoid read outside of heap allocated
|
||||
buffer.
|
||||
Reported by Agostina Sarubo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2621
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1179; previous revision: 1.1178
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcrop.c,v <-- tools/tiffcrop.c
|
||||
new revision: 1.48; previous revision: 1.47
|
||||
|
||||
Index: libtiff/tools/tiffcrop.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcrop.c,v
|
||||
retrieving revision 1.47
|
||||
retrieving revision 1.48
|
||||
diff -u -r1.47 -r1.48
|
||||
--- libtiff/tools/tiffcrop.c 3 Dec 2016 11:35:56 -0000 1.47
|
||||
+++ libtiff/tools/tiffcrop.c 3 Dec 2016 12:19:32 -0000 1.48
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffcrop.c,v 1.47 2016-12-03 11:35:56 erouault Exp $ */
|
||||
+/* $Id: tiffcrop.c,v 1.48 2016-12-03 12:19:32 erouault Exp $ */
|
||||
|
||||
/* tiffcrop.c -- a port of tiffcp.c extended to include manipulations of
|
||||
* the image data through additional options listed below
|
||||
@@ -4815,10 +4815,17 @@
|
||||
nstrips = TIFFNumberOfStrips(in);
|
||||
strips_per_sample = nstrips /spp;
|
||||
|
||||
+ /* Add 3 padding bytes for combineSeparateSamples32bits */
|
||||
+ if( (size_t) stripsize > 0xFFFFFFFFU - 3U )
|
||||
+ {
|
||||
+ TIFFError("readSeparateStripsIntoBuffer", "Integer overflow when calculating buffer size.");
|
||||
+ exit(-1);
|
||||
+ }
|
||||
+
|
||||
for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
|
||||
{
|
||||
srcbuffs[s] = NULL;
|
||||
- buff = _TIFFmalloc(stripsize);
|
||||
+ buff = _TIFFmalloc(stripsize + 3);
|
||||
if (!buff)
|
||||
{
|
||||
TIFFError ("readSeparateStripsIntoBuffer",
|
||||
@@ -4827,6 +4834,9 @@
|
||||
_TIFFfree (srcbuffs[i]);
|
||||
return 0;
|
||||
}
|
||||
+ buff[stripsize] = 0;
|
||||
+ buff[stripsize+1] = 0;
|
||||
+ buff[stripsize+2] = 0;
|
||||
srcbuffs[s] = buff;
|
||||
}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
Fix invalid read in t2p_writeproc():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2639
|
||||
|
||||
2016-12-20 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiff2pdf.c: avoid potential invalid memory read in
|
||||
t2p_writeproc.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2639
|
||||
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1198; previous revision: 1.1197
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiff2pdf.c,v <-- tools/tiff2pdf.c
|
||||
new revision: 1.100; previous revision: 1.99
|
||||
|
||||
Index: libtiff/tools/tiff2pdf.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiff2pdf.c,v
|
||||
retrieving revision 1.99
|
||||
retrieving revision 1.100
|
||||
diff -u -r1.99 -r1.100
|
||||
--- libtiff/tools/tiff2pdf.c 20 Dec 2016 17:13:26 -0000 1.99
|
||||
+++ libtiff/tools/tiff2pdf.c 20 Dec 2016 17:24:35 -0000 1.100
|
||||
@@ -2896,6 +2896,7 @@
|
||||
}
|
||||
if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &count, &jpt) != 0) {
|
||||
if (count >= 4) {
|
||||
+ int retTIFFReadRawTile;
|
||||
/* Ignore EOI marker of JpegTables */
|
||||
_TIFFmemcpy(buffer, jpt, count - 2);
|
||||
bufferoffset += count - 2;
|
||||
@@ -2903,22 +2904,23 @@
|
||||
table_end[0] = buffer[bufferoffset-2];
|
||||
table_end[1] = buffer[bufferoffset-1];
|
||||
xuint32 = bufferoffset;
|
||||
- bufferoffset -= 2;
|
||||
- bufferoffset += TIFFReadRawTile(
|
||||
+ bufferoffset -= 2;
|
||||
+ retTIFFReadRawTile= TIFFReadRawTile(
|
||||
input,
|
||||
tile,
|
||||
(tdata_t) &(((unsigned char*)buffer)[bufferoffset]),
|
||||
-1);
|
||||
+ if( retTIFFReadRawTile < 0 )
|
||||
+ {
|
||||
+ _TIFFfree(buffer);
|
||||
+ t2p->t2p_error = T2P_ERR_ERROR;
|
||||
+ return(0);
|
||||
+ }
|
||||
+ bufferoffset += retTIFFReadRawTile;
|
||||
/* Overwrite SOI marker of image scan with previously */
|
||||
/* saved end of JpegTables */
|
||||
buffer[xuint32-2]=table_end[0];
|
||||
buffer[xuint32-1]=table_end[1];
|
||||
- } else {
|
||||
- bufferoffset += TIFFReadRawTile(
|
||||
- input,
|
||||
- tile,
|
||||
- (tdata_t) &(((unsigned char*)buffer)[bufferoffset]),
|
||||
- -1);
|
||||
}
|
||||
}
|
||||
t2pWriteFile(output, (tdata_t) buffer, bufferoffset);
|
|
@ -1,42 +0,0 @@
|
|||
Fix NULL pointer dereference in TIFFReadRawData():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2594
|
||||
|
||||
|
||||
2016-12-03 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffinfo.c: fix null pointer dereference in -r mode when
|
||||
* the
|
||||
image has
|
||||
no StripByteCount tag.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2594
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1182; previous revision: 1.1181
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffinfo.c,v <-- tools/tiffinfo.c
|
||||
new revision: 1.26; previous revision: 1.25
|
||||
|
||||
Index: libtiff/tools/tiffinfo.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffinfo.c,v
|
||||
retrieving revision 1.25
|
||||
retrieving revision 1.26
|
||||
diff -u -r1.25 -r1.26
|
||||
--- libtiff/tools/tiffinfo.c 12 Nov 2016 20:06:05 -0000 1.25
|
||||
+++ libtiff/tools/tiffinfo.c 3 Dec 2016 14:18:49 -0000 1.26
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffinfo.c,v 1.25 2016-11-12 20:06:05 bfriesen Exp $ */
|
||||
+/* $Id: tiffinfo.c,v 1.26 2016-12-03 14:18:49 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -417,7 +417,7 @@
|
||||
uint64* stripbc=NULL;
|
||||
|
||||
TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &stripbc);
|
||||
- if (nstrips > 0) {
|
||||
+ if (stripbc != NULL && nstrips > 0) {
|
||||
uint32 bufsize = (uint32) stripbc[0];
|
||||
tdata_t buf = _TIFFmalloc(bufsize);
|
||||
tstrip_t s;
|
|
@ -1,41 +0,0 @@
|
|||
Fix a integer underflow in tiffcp that led to heap overflows in
|
||||
TIFFReverseBits():
|
||||
|
||||
http://bugzilla.maptools.org/show_bug.cgi?id=2598
|
||||
|
||||
2016-12-02 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* tools/tiffcp.c: avoid uint32 underflow in cpDecodedStrips that
|
||||
can cause various issues, such as buffer overflows in the library.
|
||||
Reported by Agostino Sarubbo.
|
||||
Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2598
|
||||
|
||||
|
||||
/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog
|
||||
new revision: 1.1174; previous revision: 1.1173
|
||||
/cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v <-- tools/tiffcp.c
|
||||
new revision: 1.56; previous revision: 1.55
|
||||
|
||||
Index: libtiff/tools/tiffcp.c
|
||||
===================================================================
|
||||
RCS file: /cvs/maptools/cvsroot/libtiff/tools/tiffcp.c,v
|
||||
retrieving revision 1.55
|
||||
retrieving revision 1.56
|
||||
diff -u -r1.55 -r1.56
|
||||
--- libtiff/tools/tiffcp.c 8 Oct 2016 15:54:57 -0000 1.55
|
||||
+++ libtiff/tools/tiffcp.c 2 Dec 2016 22:13:32 -0000 1.56
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $Id: tiffcp.c,v 1.55 2016-10-08 15:54:57 erouault Exp $ */
|
||||
+/* $Id: tiffcp.c,v 1.56 2016-12-02 22:13:32 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988-1997 Sam Leffler
|
||||
@@ -985,7 +985,7 @@
|
||||
tstrip_t s, ns = TIFFNumberOfStrips(in);
|
||||
uint32 row = 0;
|
||||
_TIFFmemset(buf, 0, stripsize);
|
||||
- for (s = 0; s < ns; s++) {
|
||||
+ for (s = 0; s < ns && row < imagelength; s++) {
|
||||
tsize_t cc = (row + rowsperstrip > imagelength) ?
|
||||
TIFFVStripSize(in, imagelength - row) : stripsize;
|
||||
if (TIFFReadEncodedStrip(in, s, buf, cc) < 0
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue