Merge branch 'core-updates'

This commit is contained in:
Ludovic Courtès 2015-09-26 15:14:53 +02:00
commit e1556533d3
108 changed files with 1495 additions and 2572 deletions

View File

@ -221,10 +221,11 @@ valid."
(define (cross-jobs system) (define (cross-jobs system)
(define (from-32-to-64? target) (define (from-32-to-64? target)
;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. ;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
;; This hacks prevents known-to-fail cross-builds from i686-linux to ;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
;; mips64el-linux-gnuabi64. ;; mips64el-linux-gnuabi64.
(and (string-prefix? "i686-" system) (and (or (string-prefix? "i686-" system)
(string-prefix? "armhf-" system))
(string-suffix? "64" target))) (string-suffix? "64" target)))
(define (same? target) (define (same? target)

View File

@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.68) AC_PREREQ(2.68)
AC_INIT([GNU Guix], [0.8.3], [bug-guix@gnu.org], [guix], AC_INIT([GNU Guix], [0.9.0], [bug-guix@gnu.org], [guix],
[http://www.gnu.org/software/guix/]) [http://www.gnu.org/software/guix/])
AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_AUX_DIR([build-aux])

View File

@ -934,7 +934,9 @@ some of them.
@subsection Locales @subsection Locales
@anchor{locales-and-locpath}
@cindex locales, when not on GuixSD @cindex locales, when not on GuixSD
@vindex LOCPATH
Packages installed @i{via} Guix will not use the host system's locale Packages installed @i{via} Guix will not use the host system's locale
data. Instead, you must first install one of the locale packages data. Instead, you must first install one of the locale packages
available with Guix and then define the @code{LOCPATH} environment available with Guix and then define the @code{LOCPATH} environment
@ -5569,6 +5571,13 @@ list only the locales that are actually used, as in:
(charset "EUC-JP"))) (charset "EUC-JP")))
@end example @end example
@vindex LOCPATH
The compiled locale definitions are available at
@file{/run/current-system/locale}, which is the default location where
the GNU@tie{}libc looks for locale data. This can be overridden using
the @code{LOCPATH} environment variable (@pxref{locales-and-locpath,
@code{LOCPATH} and locale packages}).
The @code{locale-definition} form is provided by the @code{(gnu system The @code{locale-definition} form is provided by the @code{(gnu system
locale)} module. Details are given below. locale)} module. Details are given below.

View File

@ -101,6 +101,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/feh.scm \ gnu/packages/feh.scm \
gnu/packages/figlet.scm \ gnu/packages/figlet.scm \
gnu/packages/file.scm \ gnu/packages/file.scm \
gnu/packages/finance.scm \
gnu/packages/firmware.scm \ gnu/packages/firmware.scm \
gnu/packages/fish.scm \ gnu/packages/fish.scm \
gnu/packages/flashing-tools.scm \ gnu/packages/flashing-tools.scm \
@ -385,6 +386,7 @@ dist_patch_DATA = \
gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch \ gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch \
gnu/packages/patches/abiword-use-proper-png-api.patch \ gnu/packages/patches/abiword-use-proper-png-api.patch \
gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \ gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \
gnu/packages/patches/acl-hurd-path-max.patch \
gnu/packages/patches/aegis-constness-error.patch \ gnu/packages/patches/aegis-constness-error.patch \
gnu/packages/patches/aegis-perl-tempdir1.patch \ gnu/packages/patches/aegis-perl-tempdir1.patch \
gnu/packages/patches/aegis-perl-tempdir2.patch \ gnu/packages/patches/aegis-perl-tempdir2.patch \
@ -416,6 +418,7 @@ dist_patch_DATA = \
gnu/packages/patches/clang-libc-search-path.patch \ gnu/packages/patches/clang-libc-search-path.patch \
gnu/packages/patches/clucene-pkgconfig.patch \ gnu/packages/patches/clucene-pkgconfig.patch \
gnu/packages/patches/cmake-fix-tests.patch \ gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/coreutils-racy-tail-test.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \ gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/cpufrequtils-fix-aclocal.patch \ gnu/packages/patches/cpufrequtils-fix-aclocal.patch \
gnu/packages/patches/crda-optional-gcrypt.patch \ gnu/packages/patches/crda-optional-gcrypt.patch \
@ -468,6 +471,7 @@ dist_patch_DATA = \
gnu/packages/patches/glibc-bootstrap-system.patch \ gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-ldd-x86_64.patch \ gnu/packages/patches/glibc-ldd-x86_64.patch \
gnu/packages/patches/glibc-locales.patch \ gnu/packages/patches/glibc-locales.patch \
gnu/packages/patches/glibc-o-largefile.patch \
gnu/packages/patches/gmp-arm-asm-nothumb.patch \ gnu/packages/patches/gmp-arm-asm-nothumb.patch \
gnu/packages/patches/gnucash-price-quotes-perl.patch \ gnu/packages/patches/gnucash-price-quotes-perl.patch \
gnu/packages/patches/gnutls-doc-fix.patch \ gnu/packages/patches/gnutls-doc-fix.patch \
@ -502,7 +506,10 @@ dist_patch_DATA = \
gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch \ gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch \
gnu/packages/patches/icecat-freetype-2.6.patch \ gnu/packages/patches/icecat-freetype-2.6.patch \
gnu/packages/patches/icecat-libvpx-1.4.patch \ gnu/packages/patches/icecat-libvpx-1.4.patch \
gnu/packages/patches/icu4c-CVE-2014-6585.patch \
gnu/packages/patches/icu4c-CVE-2015-1270.patch \
gnu/packages/patches/icu4c-CVE-2015-4760.patch \ gnu/packages/patches/icu4c-CVE-2015-4760.patch \
gnu/packages/patches/imagemagick-test-segv.patch \
gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \
gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \
gnu/packages/patches/julia-0.3.10-fix-empty-array.patch \ gnu/packages/patches/julia-0.3.10-fix-empty-array.patch \
@ -526,31 +533,13 @@ dist_patch_DATA = \
gnu/packages/patches/libmad-frame-length.patch \ gnu/packages/patches/libmad-frame-length.patch \
gnu/packages/patches/libmad-mips-newgcc.patch \ gnu/packages/patches/libmad-mips-newgcc.patch \
gnu/packages/patches/libtheora-config-guess.patch \ gnu/packages/patches/libtheora-config-guess.patch \
gnu/packages/patches/libtiff-CVE-2012-4564.patch \
gnu/packages/patches/libtiff-CVE-2013-1960.patch \
gnu/packages/patches/libtiff-CVE-2013-1961.patch \
gnu/packages/patches/libtiff-CVE-2013-4231.patch \
gnu/packages/patches/libtiff-CVE-2013-4232.patch \
gnu/packages/patches/libtiff-CVE-2013-4243.patch \
gnu/packages/patches/libtiff-CVE-2013-4244.patch \
gnu/packages/patches/libtiff-CVE-2014-8127-pt1.patch \
gnu/packages/patches/libtiff-CVE-2014-8127-pt2.patch \
gnu/packages/patches/libtiff-CVE-2014-8127-pt3.patch \
gnu/packages/patches/libtiff-CVE-2014-8127-pt4.patch \
gnu/packages/patches/libtiff-CVE-2014-8128-pt1.patch \
gnu/packages/patches/libtiff-CVE-2014-8128-pt2.patch \
gnu/packages/patches/libtiff-CVE-2014-8128-pt3.patch \
gnu/packages/patches/libtiff-CVE-2014-8128-pt4.patch \
gnu/packages/patches/libtiff-CVE-2014-8128-pt5.patch \
gnu/packages/patches/libtiff-CVE-2014-8129.patch \
gnu/packages/patches/libtiff-CVE-2014-9330.patch \
gnu/packages/patches/libtiff-CVE-2014-9655.patch \
gnu/packages/patches/libtool-skip-tests2.patch \ gnu/packages/patches/libtool-skip-tests2.patch \
gnu/packages/patches/libssh-CVE-2014-0017.patch \ gnu/packages/patches/libssh-CVE-2014-0017.patch \
gnu/packages/patches/libwmf-CVE-2006-3376.patch \ gnu/packages/patches/libwmf-CVE-2006-3376.patch \
gnu/packages/patches/libwmf-CVE-2009-1364.patch \ gnu/packages/patches/libwmf-CVE-2009-1364.patch \
gnu/packages/patches/libwmf-CVE-2015-0848+4588+4695+4696.patch \ gnu/packages/patches/libwmf-CVE-2015-0848+4588+4695+4696.patch \
gnu/packages/patches/lirc-localstatedir.patch \ gnu/packages/patches/lirc-localstatedir.patch \
gnu/packages/patches/libpthread-glibc-preparation.patch \
gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \
gnu/packages/patches/lua-pkgconfig.patch \ gnu/packages/patches/lua-pkgconfig.patch \
gnu/packages/patches/lua51-liblua-so.patch \ gnu/packages/patches/lua51-liblua-so.patch \
@ -583,12 +572,14 @@ dist_patch_DATA = \
gnu/packages/patches/nvi-db4.patch \ gnu/packages/patches/nvi-db4.patch \
gnu/packages/patches/openexr-missing-samples.patch \ gnu/packages/patches/openexr-missing-samples.patch \
gnu/packages/patches/openssl-runpath.patch \ gnu/packages/patches/openssl-runpath.patch \
gnu/packages/patches/openssl-c-rehash.patch \
gnu/packages/patches/orpheus-cast-errors-and-includes.patch \ gnu/packages/patches/orpheus-cast-errors-and-includes.patch \
gnu/packages/patches/ots-no-include-missing-file.patch \ gnu/packages/patches/ots-no-include-missing-file.patch \
gnu/packages/patches/patchelf-page-size.patch \ gnu/packages/patches/patchelf-page-size.patch \
gnu/packages/patches/patchelf-rework-for-arm.patch \ gnu/packages/patches/patchelf-rework-for-arm.patch \
gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \ gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \
gnu/packages/patches/patch-hurd-path-max.patch \ gnu/packages/patches/patch-hurd-path-max.patch \
gnu/packages/patches/perl-autosplit-default-time.patch \
gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \ gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \ gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
gnu/packages/patches/perl-module-pluggable-search.patch \ gnu/packages/patches/perl-module-pluggable-search.patch \
@ -598,6 +589,7 @@ dist_patch_DATA = \
gnu/packages/patches/perl-tk-x11-discover.patch \ gnu/packages/patches/perl-tk-x11-discover.patch \
gnu/packages/patches/pidgin-add-search-path.patch \ gnu/packages/patches/pidgin-add-search-path.patch \
gnu/packages/patches/pingus-sdl-libs-config.patch \ gnu/packages/patches/pingus-sdl-libs-config.patch \
gnu/packages/patches/pixman-pointer-arithmetic.patch \
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \ gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
gnu/packages/patches/polkit-drop-test.patch \ gnu/packages/patches/polkit-drop-test.patch \
gnu/packages/patches/portaudio-audacity-compat.patch \ gnu/packages/patches/portaudio-audacity-compat.patch \
@ -666,7 +658,8 @@ dist_patch_DATA = \
gnu/packages/patches/unzip-remove-build-date.patch \ gnu/packages/patches/unzip-remove-build-date.patch \
gnu/packages/patches/util-linux-tests.patch \ gnu/packages/patches/util-linux-tests.patch \
gnu/packages/patches/upower-builddir.patch \ gnu/packages/patches/upower-builddir.patch \
gnu/packages/patches/valgrind-glibc-2.21.patch \ gnu/packages/patches/valgrind-glibc-2.22.patch \
gnu/packages/patches/valgrind-linux-libre-4.x.patch \
gnu/packages/patches/vpnc-script.patch \ gnu/packages/patches/vpnc-script.patch \
gnu/packages/patches/vtk-mesa-10.patch \ gnu/packages/patches/vtk-mesa-10.patch \
gnu/packages/patches/w3m-fix-compile.patch \ gnu/packages/patches/w3m-fix-compile.patch \

View File

@ -26,6 +26,7 @@
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (gnu packages)
#:use-module (guix build-system gnu)) #:use-module (guix build-system gnu))
(define-public acl (define-public acl
@ -39,7 +40,8 @@
version ".src.tar.gz")) version ".src.tar.gz"))
(sha256 (sha256
(base32 (base32
"08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p")))) "08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p"))
(patches (list (search-patch "acl-hurd-path-max.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; FIXME: Investigate test suite failures `(#:tests? #f ; FIXME: Investigate test suite failures
@ -58,11 +60,8 @@
(inputs `(("attr" ,attr))) (inputs `(("attr" ,attr)))
(native-inputs (native-inputs
`(("gettext" ,gnu-gettext) `(("gettext" ,gnu-gettext)
("perl" ,perl) ("perl" ,perl)))
("sed" ,sed))) (home-page "http://savannah.nongnu.org/projects/acl")
(home-page
"http://savannah.nongnu.org/projects/acl")
(synopsis (synopsis
"Library and tools for manipulating access control lists") "Library and tools for manipulating access control lists")
(description (description

View File

@ -428,6 +428,7 @@ connection alive.")
(zero? (system* "tar" "cf" "bind.tar.gz" (zero? (system* "tar" "cf" "bind.tar.gz"
"bind-9.9.5-P1" "bind-9.9.5-P1"
;; avoid non-determinism in the archive ;; avoid non-determinism in the archive
"--sort=name"
"--mtime=@0" "--mtime=@0"
"--owner=root:0" "--owner=root:0"
"--group=root:0")))) "--group=root:0"))))

View File

@ -340,7 +340,7 @@ tools (analyzer, mono/stereo tools, crossovers).")
(define-public csound (define-public csound
(package (package
(name "csound") (name "csound")
(version "6.04") (version "6.05")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -348,7 +348,7 @@ tools (analyzer, mono/stereo tools, crossovers).")
version "/Csound" version ".tar.gz")) version "/Csound" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1030w38lxdwjz1irr32m9cl0paqmgr02lab2m7f7j1yihwxj1w0g")))) "0a1sni6lr7qpwywpggbkp0ia3h9bwwgf9i87gsag8ra2h30v82hd"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)

View File

@ -52,7 +52,8 @@
"--disable-xmltoman" "--disable-xmltoman"
"--enable-tests" "--enable-tests"
"--disable-qt3" "--disable-qt4" "--disable-qt3" "--disable-qt4"
"--disable-gtk" "--disable-gtk3"))) "--disable-gtk" "--disable-gtk3"
"--enable-compat-libdns_sd")))
(inputs (inputs
`(("expat" ,expat) `(("expat" ,expat)
("glib" ,glib) ("glib" ,glib)

View File

@ -4,6 +4,7 @@
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -33,11 +34,13 @@
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages hurd)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)) #:use-module (guix build-system trivial))
@ -246,10 +249,18 @@ used to apply commands with arbitrarily long arguments.")
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2")))) "0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2"))
(patches
(list (search-patch "coreutils-racy-tail-test.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("acl" ,acl) ; TODO: add SELinux (inputs `(("acl" ,acl) ; TODO: add SELinux
("gmp" ,gmp))) ("gmp" ,gmp) ;bignums in 'expr', yay!
;; Drop the dependency on libcap when cross-compiling since it's
;; not quite cross-compilable.
,@(if (%current-target-system)
'()
`(("libcap" ,libcap))))) ;capability support is 'ls', etc.
(native-inputs (native-inputs
;; Perl is needed to run tests in native builds, and to run the bundled ;; Perl is needed to run tests in native builds, and to run the bundled
;; copy of help2man. However, don't pass it when cross-compiling since ;; copy of help2man. However, don't pass it when cross-compiling since
@ -285,6 +296,14 @@ functionality beyond that which is outlined in the POSIX standard.")
(license gpl3+) (license gpl3+)
(home-page "http://www.gnu.org/software/coreutils/"))) (home-page "http://www.gnu.org/software/coreutils/")))
(define-public coreutils-minimal
;; Coreutils without its optional dependencies.
(package
(inherit coreutils)
(name "coreutils-minimal")
(outputs '("out"))
(inputs '())))
(define-public gnu-make (define-public gnu-make
(package (package
(name "make") (name "make")
@ -326,14 +345,14 @@ change. GNU make offers many powerful extensions over the standard utility.")
(define-public binutils (define-public binutils
(package (package
(name "binutils") (name "binutils")
(version "2.25") (version "2.25.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/binutils/binutils-" (uri (string-append "mirror://gnu/binutils/binutils-"
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"08r9i26b05zcwb9zxb6zllpfdiiicdfsgbpsjlrjmvx3rxjzrpi2")) "08lzmhidzc16af1zbx34f8cy4z7mzrswpdbhrb8shy3xxpflmcdm"))
(patches (list (search-patch "binutils-ld-new-dtags.patch") (patches (list (search-patch "binutils-ld-new-dtags.patch")
(search-patch "binutils-loongson-workaround.patch"))))) (search-patch "binutils-loongson-workaround.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
@ -439,14 +458,14 @@ store.")
(define-public glibc (define-public glibc
(package (package
(name "glibc") (name "glibc")
(version "2.21") (version "2.22")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/glibc/glibc-" (uri (string-append "mirror://gnu/glibc/glibc-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1f135546j34s9bfkydmx2nhh9vwxlx60jldi80zmsnln6wj3dsxf")) "0j49682pm2nh4qbdw35bas82p1pgfnz4d2l7iwfyzvrvj0318wzb"))
(snippet (snippet
;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is ;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is
;; required on LFS distros to avoid loading the distro's libc.so ;; required on LFS distros to avoid loading the distro's libc.so
@ -455,7 +474,9 @@ store.")
(("use_ldconfig=yes") (("use_ldconfig=yes")
"use_ldconfig=no"))) "use_ldconfig=no")))
(modules '((guix build utils))) (modules '((guix build utils)))
(patches (list (search-patch "glibc-ldd-x86_64.patch"))))) (patches (map search-patch
'("glibc-ldd-x86_64.patch"
"glibc-o-largefile.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
@ -472,7 +493,7 @@ store.")
#:parallel-build? #f #:parallel-build? #f
;; The libraries have an empty RUNPATH, but some, such as the versioned ;; The libraries have an empty RUNPATH, but some, such as the versioned
;; libraries (libdl-2.21.so, etc.) have ld.so marked as NEEDED. Since ;; libraries (libdl-2.22.so, etc.) have ld.so marked as NEEDED. Since
;; these libraries are always going to be found anyway, just skip ;; these libraries are always going to be found anyway, just skip
;; RUNPATH checks. ;; RUNPATH checks.
#:validate-runpath? #f #:validate-runpath? #f
@ -513,72 +534,65 @@ store.")
"libc_cv_ssp=no") "libc_cv_ssp=no")
#:tests? #f ; XXX #:tests? #f ; XXX
#:phases (alist-cons-before #:phases (modify-phases %standard-phases
'configure 'pre-configure (add-before
(lambda* (#:key inputs native-inputs outputs 'configure 'pre-configure
#:allow-other-keys) (lambda* (#:key inputs native-inputs outputs
(let* ((out (assoc-ref outputs "out")) #:allow-other-keys)
(bin (string-append out "/bin"))) (let* ((out (assoc-ref outputs "out"))
;; Use `pwd', not `/bin/pwd'. (bin (string-append out "/bin"))
(substitute* "configure" ;; FIXME: Normally we would look it up only in INPUTS
(("/bin/pwd") "pwd")) ;; but cross-base uses it as a native input.
(bash (or (assoc-ref inputs "static-bash")
(assoc-ref native-inputs "static-bash"))))
;; Use `pwd', not `/bin/pwd'.
(substitute* "configure"
(("/bin/pwd") "pwd"))
;; Install the rpc data base file under `$out/etc/rpc'. ;; Install the rpc data base file under `$out/etc/rpc'.
;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ]; ;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ];
(substitute* "sunrpc/Makefile" (substitute* "sunrpc/Makefile"
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix) (("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
(string-append out "/etc/rpc" suffix "\n")) (string-append out "/etc/rpc" suffix "\n"))
(("^install-others =.*$") (("^install-others =.*$")
(string-append "install-others = " out "/etc/rpc\n"))) (string-append "install-others = " out "/etc/rpc\n")))
(substitute* "Makeconfig" (substitute* "Makeconfig"
;; According to ;; According to
;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>, ;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>,
;; linking against libgcc_s is not needed with GCC ;; linking against libgcc_s is not needed with GCC
;; 4.7.1. ;; 4.7.1.
((" -lgcc_s") "")) ((" -lgcc_s") ""))
;; Copy a statically-linked Bash in the output, with ;; Have `system' use that Bash.
;; no references to other store paths. (substitute* "sysdeps/posix/system.c"
;; FIXME: Normally we would look it up only in INPUTS but (("#define[[:blank:]]+SHELL_PATH.*$")
;; cross-base uses it as a native input. (format #f "#define SHELL_PATH \"~a/bin/bash\"\n"
(mkdir-p bin) bash)))
(copy-file (string-append (or (assoc-ref inputs
"static-bash")
(assoc-ref native-inputs
"static-bash"))
"/bin/bash")
(string-append bin "/bash"))
(remove-store-references (string-append bin "/bash"))
(chmod (string-append bin "/bash") #o555)
;; Keep a symlink, for `patch-shebang' resolution. ;; Same for `popen'.
(with-directory-excursion bin (substitute* "libio/iopopen.c"
(symlink "bash" "sh")) (("/bin/sh")
(string-append bash "/bin/bash")))
;; Have `system' use that Bash. ;; Same for the shell used by the 'exec' functions for
(substitute* "sysdeps/posix/system.c" ;; scripts that lack a shebang.
(("#define[[:blank:]]+SHELL_PATH.*$") (substitute* (find-files "." "^paths\\.h$")
(format #f "#define SHELL_PATH \"~a/bin/bash\"\n" (("#define[[:blank:]]+_PATH_BSHELL[[:blank:]].*$")
out))) (string-append "#define _PATH_BSHELL \""
bash "/bin/bash\"\n")))
;; Same for `popen'. ;; Make sure we don't retain a reference to the
(substitute* "libio/iopopen.c" ;; bootstrap Perl.
(("/bin/sh") (substitute* "malloc/mtrace.pl"
(string-append out "/bin/bash"))) (("^#!.*")
;; The shebang can be omitted, because there's the
;; "bilingual" eval/exec magic at the top of the file.
"")
(("exec @PERL@")
"exec perl"))))))))
;; Make sure we don't retain a reference to the (inputs `(("static-bash" ,static-bash)))
;; 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"))))
%standard-phases)))
(inputs `(("static-bash" ,(static-package bash-light))))
;; To build the manual, we need Texinfo and Perl. Gettext is needed to ;; To build the manual, we need Texinfo and Perl. Gettext is needed to
;; install the message catalogs, with 'msgfmt'. ;; install the message catalogs, with 'msgfmt'.
@ -626,10 +640,6 @@ the 'share/locale' sub-directory of this package.")
`(alist-replace `(alist-replace
'build 'build
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; Delete $out/bin, which contains 'bash'.
(delete-file-recursively (string-append out "/bin")))
(zero? (system* "make" "localedata/install-locales" (zero? (system* "make" "localedata/install-locales"
"-j" (number->string (parallel-job-count))))) "-j" (number->string (parallel-job-count)))))
(alist-delete 'install ,phases))) (alist-delete 'install ,phases)))
@ -700,6 +710,113 @@ variety of options. It is an alternative to the shell \"type\" built-in
command.") command.")
(license gpl3+))) ; some files are under GPLv2+ (license gpl3+))) ; some files are under GPLv2+
(define-public glibc/hurd
;; The Hurd's libc variant.
(package (inherit glibc)
(name "glibc-hurd")
(version "2.18")
(source (origin
(method git-fetch)
(uri (git-reference
(url "git://git.sv.gnu.org/hurd/glibc")
(commit "cc94b3cfe65523f980359e5f0e93a26196bda1d3")))
(sha256
(base32
"17gsh0kaz0zyvghjmx861mi2p65m9901lngi179x61zm6v2v3xc4"))
(file-name (string-append name "-" version))
(patches (map search-patch
'("glibc-hurd-extern-inline.patch")))))
;; Libc provides <hurd.h>, which includes a bunch of Hurd and Mach headers,
;; so both should be propagated.
(propagated-inputs `(("gnumach-headers" ,gnumach-headers)
("hurd-headers" ,hurd-headers)
("hurd-minimal" ,hurd-minimal)))
(native-inputs
`(,@(package-native-inputs glibc)
("patch/libpthread-patch" ,(search-patch "libpthread-glibc-preparation.patch"))
("mig" ,mig)
("perl" ,perl)
("libpthread" ,(origin
(method git-fetch)
(uri (git-reference
(url "git://git.sv.gnu.org/hurd/libpthread")
(commit "0ef7b75c4ba91b6660f0d3d8b51d14d25e3d5bfb")))
(sha256
(base32
"031py18fls15z0wprni33mf762kg6fx8xqijppimhp83yp6ky3l3"))
(file-name "libpthread")))))
(arguments
(substitute-keyword-arguments (package-arguments glibc)
((#:configure-flags original-configure-flags)
`(append (list "--host=i686-pc-gnu"
;; nscd fails to build for GNU/Hurd:
;; <https://lists.gnu.org/archive/html/bug-hurd/2014-07/msg00006.html>.
;; Disable it.
"--disable-nscd")
(filter (lambda (flag)
(not (or (string-prefix? "--with-headers=" flag)
(string-prefix? "--enable-kernel=" flag))))
;; Evaluate 'original-configure-flags' in a
;; lexical environment that has a dummy
;; "linux-headers" input, to prevent errors.
(let ((%build-inputs `(("linux-headers" . "@DUMMY@")
,@%build-inputs)))
,original-configure-flags))))
((#:phases phases)
`(alist-cons-after
'unpack 'prepare-libpthread
(lambda* (#:key inputs #:allow-other-keys)
(copy-recursively (assoc-ref inputs "libpthread") "libpthread")
(system* "patch" "--force" "-p1" "-i"
(assoc-ref inputs "patch/libpthread-patch"))
#t)
,phases))))
(synopsis "The GNU C Library (GNU Hurd variant)")
(supported-systems %hurd-systems)))
(define-public glibc/hurd-headers
(package (inherit glibc/hurd)
(name "glibc-hurd-headers")
(outputs '("out"))
(propagated-inputs `(("gnumach-headers" ,gnumach-headers)
("hurd-headers" ,hurd-headers)))
(arguments
(substitute-keyword-arguments (package-arguments glibc/hurd)
;; We just pass the flags really needed to build the headers.
((#:configure-flags _)
`(list "--enable-add-ons"
"--host=i686-pc-gnu"
"--enable-obsolete-rpc"))
((#:phases _)
'(alist-replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(and (zero? (system* "make" "install-headers"))
;; Make an empty stubs.h to work around not being able to
;; produce a valid stubs.h and causing the build to fail. See
;; <http://lists.gnu.org/archive/html/guix-devel/2014-04/msg00233.html>.
(let ((out (assoc-ref outputs "out")))
(close-port
(open-output-file
(string-append out "/include/gnu/stubs.h"))))))
;; Nothing to build.
(alist-delete
'build
(alist-cons-before
'configure 'pre-configure
(lambda _
;; Use the right 'pwd'.
(substitute* "configure"
(("/bin/pwd") "pwd")))
%standard-phases))))))))
(define-public tzdata (define-public tzdata
(package (package
(name "tzdata") (name "tzdata")

View File

@ -214,10 +214,10 @@ without modification.")
(license gpl3+) (license gpl3+)
(home-page "http://www.gnu.org/software/bash/")))) (home-page "http://www.gnu.org/software/bash/"))))
(define-public bash-light (define-public bash-minimal
;; A stripped-down Bash for non-interactive use. ;; A stripped-down Bash for non-interactive use.
(package (inherit bash) (package (inherit bash)
(name "bash-light") (name "bash-minimal")
(inputs '()) ; no readline, no curses (inputs '()) ; no readline, no curses
(arguments (arguments
(let ((args `(#:modules ((guix build gnu-build-system) (let ((args `(#:modules ((guix build gnu-build-system)
@ -239,6 +239,28 @@ without modification.")
'("bash_cv_job_control_missing=no") '("bash_cv_job_control_missing=no")
'())))))))) '()))))))))
(define-public static-bash
;; Statically-linked Bash that contains nothing but the 'bash' binary and
;; 'sh' symlink, without any reference.
(let ((bash (static-package bash-minimal)))
(package
(inherit bash)
(name "bash-static")
(arguments
(substitute-keyword-arguments
`(#:allowed-references ("out") ,@(package-arguments bash))
((#:phases phases)
`(alist-cons-after
'strip 'remove-everything-but-the-binary
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(remove-store-references (string-append bin "/bash"))
(delete-file (string-append bin "/bashbug"))
(delete-file-recursively (string-append out "/share"))
#t))
,phases)))))))
(define-public bash-completion (define-public bash-completion
(package (package
(name "bash-completion") (name "bash-completion")

View File

@ -233,9 +233,8 @@ computational cluster.")
'install 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
(mkdir-p bin)
(for-each (lambda (file) (for-each (lambda (file)
(copy-file file (string-append bin (basename file)))) (install-file file bin))
(find-files "bin" ".*")))) (find-files "bin" ".*"))))
%standard-phases))))) %standard-phases)))))
(home-page "https://github.com/arq5x/bedtools2") (home-page "https://github.com/arq5x/bedtools2")
@ -559,9 +558,8 @@ confidence to have in an alignment.")
'install 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
(mkdir-p bin)
(for-each (lambda (file) (for-each (lambda (file)
(copy-file file (string-append bin file))) (install-file file bin))
(find-files "." "bowtie2.*")))) (find-files "." "bowtie2.*"))))
(alist-replace (alist-replace
'check 'check
@ -611,9 +609,9 @@ gapped, local, and paired-end alignment modes.")
(mkdir-p bin) (mkdir-p bin)
(mkdir-p doc) (mkdir-p doc)
(mkdir-p man) (mkdir-p man)
(copy-file "bwa" (string-append bin "/bwa")) (install-file "bwa" bin)
(copy-file "README.md" (string-append doc "/README.md")) (install-file "README.md" doc)
(copy-file "bwa.1" (string-append man "/bwa.1")))) (install-file "bwa.1" man)))
;; no "configure" script ;; no "configure" script
(alist-delete 'configure %standard-phases)))) (alist-delete 'configure %standard-phases))))
(inputs `(("zlib" ,zlib))) (inputs `(("zlib" ,zlib)))
@ -1308,14 +1306,12 @@ estimates transcript expression.")
(alist-replace (alist-replace
'install 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) (let ((bin (string-append (assoc-ref outputs "out") "/bi/")))
(mkdir-p bin) (for-each (lambda (file)
(for-each (install-file file bin))
(lambda (file) (find-files
(copy-file file (string-append bin file))) "."
(find-files "hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$"))))
"."
"hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$"))))
(alist-delete 'configure %standard-phases))))) (alist-delete 'configure %standard-phases)))))
(native-inputs (native-inputs
`(("unzip" ,unzip))) `(("unzip" ,unzip)))
@ -2091,17 +2087,14 @@ distribution, coverage uniformity, strand specificity, etc.")
'install 'install-library 'install 'install-library
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((lib (string-append (assoc-ref outputs "out") "/lib"))) (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
(mkdir-p lib) (install-file "libbam.a" lib)))
(copy-file "libbam.a" (string-append lib "/libbam.a"))))
(alist-cons-after (alist-cons-after
'install 'install-headers 'install 'install-headers
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((include (string-append (assoc-ref outputs "out") (let ((include (string-append (assoc-ref outputs "out")
"/include/samtools/"))) "/include/samtools/")))
(mkdir-p include)
(for-each (lambda (file) (for-each (lambda (file)
(copy-file file (string-append include (install-file file include))
(basename file))))
(scandir "." (lambda (name) (string-match "\\.h$" name)))) (scandir "." (lambda (name) (string-match "\\.h$" name))))
#t)) #t))
(alist-delete 'configure %standard-phases)))))) (alist-delete 'configure %standard-phases))))))
@ -2356,8 +2349,7 @@ accessed/downloaded on demand across HTTP.")
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") (let ((bin (string-append (assoc-ref outputs "out")
"/bin/"))) "/bin/")))
(mkdir-p bin) (install-file "plink" bin)
(copy-file "plink" (string-append bin "plink"))
#t)))))) #t))))))
(inputs (inputs
`(("zlib" ,zlib) `(("zlib" ,zlib)
@ -2617,8 +2609,7 @@ is one that takes arguments.")
'install 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
(mkdir-p bin) (install-file "STAR" bin)))
(copy-file "STAR" (string-append bin "STAR"))))
(alist-delete (alist-delete
'configure %standard-phases))))) 'configure %standard-phases)))))
(native-inputs (native-inputs

View File

@ -164,6 +164,8 @@ successful, or false to signal an error."
((string=? system "i686-linux") "/lib/ld-linux.so.2") ((string=? system "i686-linux") "/lib/ld-linux.so.2")
((string=? system "armhf-linux") "/lib/ld-linux-armhf.so.3") ((string=? system "armhf-linux") "/lib/ld-linux-armhf.so.3")
((string=? system "mips64el-linux") "/lib/ld.so.1") ((string=? system "mips64el-linux") "/lib/ld.so.1")
((string=? system "i586-gnu") "/lib/ld.so.1")
((string=? system "i686-gnu") "/lib/ld.so.1")
;; XXX: This one is used bare-bones, without a libc, so add a case ;; XXX: This one is used bare-bones, without a libc, so add a case
;; here just so we can keep going. ;; here just so we can keep going.

View File

@ -26,6 +26,7 @@
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages gnuzilla) #:use-module (gnu packages gnuzilla)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages perl)
#:use-module (gnu packages tls)) #:use-module (gnu packages tls))
(define certdata2pem (define certdata2pem
@ -76,7 +77,8 @@
(outputs '("out")) (outputs '("out"))
(native-inputs (native-inputs
`(("certdata2pem" ,certdata2pem) `(("certdata2pem" ,certdata2pem)
("openssl" ,openssl))) ("openssl" ,openssl)
("perl" ,perl))) ;for OpenSSL's 'c_rehash'
(inputs '()) (inputs '())
(propagated-inputs '()) (propagated-inputs '())
(arguments (arguments

View File

@ -136,10 +136,9 @@ supervised tests.")
,version))) ,version)))
(begin (begin
(for-each mkdir-p (list incdir docdir)) (for-each mkdir-p (list incdir docdir))
(copy-file (string-append source (install-file (string-append source
"/single_include/catch.hpp") "/single_include/catch.hpp")
(string-append incdir incdir)
"/catch.hpp"))
(copy-recursively (string-append source "/docs") (copy-recursively (string-append source "/docs")
docdir)))))) docdir))))))
(home-page "http://catch-lib.net/") (home-page "http://catch-lib.net/")

View File

@ -36,7 +36,7 @@
(define-public cmake (define-public cmake
(package (package
(name "cmake") (name "cmake")
(version "3.2.2") (version "3.3.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -44,12 +44,11 @@
(version-major+minor version) (version-major+minor version)
"/cmake-" version ".tar.gz")) "/cmake-" version ".tar.gz"))
(sha256 (sha256
(base32 "0y3w83al0vh9ll7fnqm3nx7l8hsl85k8iv9abxb791q36rp4xsdd")) (base32 "1mp32dqywk4dfw7zmpgp31axszv7h74yk69g273z21q7d8n04rfd"))
(patches (list (search-patch "cmake-fix-tests.patch"))))) (patches (list (search-patch "cmake-fix-tests.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:test-target "test" `(#:test-target "test"
#:parallel-tests? #f ; 3 test from RunCMake fails
#:phases (alist-cons-before #:phases (alist-cons-before
'configure 'patch-bin-sh 'configure 'patch-bin-sh
(lambda _ (lambda _

View File

@ -117,9 +117,8 @@ highlighting your own code that seemed comprehensible when you wrote it.")
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(data (string-append out "/share/gtags")) (data (string-append out "/share/gtags"))
(lisp (string-append out "/share/emacs/site-lisp"))) (lisp (string-append out "/share/emacs/site-lisp")))
(mkdir-p lisp) (install-file (string-append data "/gtags.el")
(copy-file (string-append data "/gtags.el") lisp)
(string-append lisp "/gtags.el"))
(delete-file (string-append data "/gtags.el")) (delete-file (string-append data "/gtags.el"))
#t)) #t))
%standard-phases))) %standard-phases)))

View File

@ -419,18 +419,17 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
#:guile %bootstrap-guile)))) #:guile %bootstrap-guile))))
(define static-bash-for-glibc (define static-bash-for-glibc
;; A statically-linked Bash to be embedded in GLIBC-FINAL, for use by ;; A statically-linked Bash to be used by GLIBC-FINAL in system(3) & co.
;; system(3) & co.
(let* ((gcc (cross-gcc-wrapper gcc-boot0 binutils-boot0 (let* ((gcc (cross-gcc-wrapper gcc-boot0 binutils-boot0
glibc-final-with-bootstrap-bash glibc-final-with-bootstrap-bash
(car (assoc-ref %boot1-inputs "bash")))) (car (assoc-ref %boot1-inputs "bash"))))
(bash (package (inherit bash-light) (bash (package (inherit static-bash)
(native-inputs `(("bison" ,bison-boot1))) (native-inputs `(("bison" ,bison-boot1)))
(arguments (arguments
`(#:guile ,%bootstrap-guile `(#:guile ,%bootstrap-guile
,@(package-arguments bash-light)))))) ,@(package-arguments static-bash))))))
(package-with-bootstrap-guile (package-with-bootstrap-guile
(package-with-explicit-inputs (static-package bash) (package-with-explicit-inputs bash
`(("gcc" ,gcc) `(("gcc" ,gcc)
("libc" ,glibc-final-with-bootstrap-bash) ("libc" ,glibc-final-with-bootstrap-bash)
,@(fold alist-delete %boot1-inputs ,@(fold alist-delete %boot1-inputs
@ -490,6 +489,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(arguments (arguments
`(#:allowed-references `(#:allowed-references
,(cons* `(,gcc-boot0 "lib") (linux-libre-headers-boot0) ,(cons* `(,gcc-boot0 "lib") (linux-libre-headers-boot0)
static-bash-for-glibc
(package-outputs glibc-final-with-bootstrap-bash)) (package-outputs glibc-final-with-bootstrap-bash))
,@(package-arguments glibc-final-with-bootstrap-bash))))) ,@(package-arguments glibc-final-with-bootstrap-bash)))))
@ -562,7 +562,8 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
`(#:guile ,%bootstrap-guile `(#:guile ,%bootstrap-guile
#:implicit-inputs? #f #:implicit-inputs? #f
#:allowed-references ("out" "lib" ,glibc-final) #:allowed-references ("out" "lib"
,glibc-final ,static-bash-for-glibc)
;; Things like libasan.so and libstdc++.so NEED ld.so for some ;; Things like libasan.so and libstdc++.so NEED ld.so for some
;; reason, but it is not in their RUNPATH. This is a false ;; reason, but it is not in their RUNPATH. This is a false
@ -596,8 +597,12 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
((#:phases phases) ((#:phases phases)
`(alist-delete 'symlink-libgcc_eh ,phases))))) `(alist-delete 'symlink-libgcc_eh ,phases)))))
;; This time we want Texinfo, so we get the manual. ;; This time we want Texinfo, so we get the manual. Add
;; STATIC-BASH-FOR-GLIBC so that it's used in the final shebangs of
;; scripts such as 'mkheaders' and 'fixinc.sh' (XXX: who cares about these
;; scripts?).
(native-inputs `(("texinfo" ,texinfo-boot0) (native-inputs `(("texinfo" ,texinfo-boot0)
("static-bash" ,static-bash-for-glibc)
,@(package-native-inputs gcc-boot0))) ,@(package-native-inputs gcc-boot0)))
(inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp))) (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp)))
@ -655,10 +660,90 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(current-source-location) (current-source-location)
#:guile %bootstrap-guile)))))) #:guile %bootstrap-guile))))))
(define (locale-proof-package p)
"Return a new package based on P that ignores 'LOCPATH'. The result is a
\"locale-proof\" package in the sense that it cannot end up loading locale
data that is not in the format its libc expects. This is useful because the
locale binary format may change incompatibly between libc versions."
(package
(inherit p)
(name (string-append (package-name p) "-lp"))
(build-system trivial-build-system)
(inputs `(("original" ,p)
("bash" ,bash-final)))
(outputs '("out"))
(arguments
'(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((out (assoc-ref %outputs "out"))
(bin (string-append out "/bin"))
(bash (assoc-ref %build-inputs "bash"))
(binaries (assoc-ref %build-inputs "original"))
(programs (find-files (string-append binaries "/bin"))))
(define (wrap-program program)
(let ((base (basename program)))
(call-with-output-file base
(lambda (port)
(format port "#!~a/bin/sh
# Unset 'LOCPATH' so that the program does not end up loading incompatible
# locale data.
unset LOCPATH
exec \"~a\" \"$@\"\n"
bash program)))
(chmod base #o755)))
(mkdir-p bin)
(with-directory-excursion bin
(for-each wrap-program programs)
#t)))))))
(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"))))))
(define %boot5-inputs (define %boot5-inputs
;; Now with UTF-8 locale. ;; Now with UTF-8 locales. Since the locale binary format differs between
`(("locales" ,glibc-utf8-locales-final) ;; libc versions, we have to rebuild some of the packages so that they use
,@%boot4-inputs)) ;; the new libc, which allows them to load locale data from
;; GLIBC-UTF8-LOCALES-FINAL (remember that the bootstrap binaries were built
;; with an older libc, which cannot load the new locale format.) See
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
(let ((new-libc-package (compose package-with-bootstrap-guile
(cut package-with-explicit-inputs <>
%boot4-inputs
(current-source-location)
#:guile %bootstrap-guile))))
`(("locales" ,glibc-utf8-locales-final)
("ld-wrapper" ,ld-wrapper)
("binutils" ,binutils-final)
("bash" ,bash-final)
("make" ,(new-libc-package gnu-make))
;; Some test suites (grep, Gnulib) use 'diff' to compare files in locale
;; encoding, so we need support this.
("diffutils" ,(new-libc-package diffutils))
("findutils" ,(new-libc-package findutils))
;; Grep's test suite uses 'timeout' from Coreutils to execute command,
;; and yet these commands need to see the valid 'LOCPATH'.
("coreutils" ,(new-libc-package coreutils-minimal))
;; We just wrap the remaining binaries (tar, gzip, xz, etc.) so that
;; they ignore 'LOCPATH' (if they did not, they would be hit by an
;; assertion failure in loadlocale.c.)
("coreutils&co" ,(locale-proof-package %bootstrap-coreutils&co))
,@(fold alist-delete %boot4-inputs
'("coreutils&co" "findutils" "diffutils" "make"
"bash" "binutils-cross" "ld-wrapper")))))
(define gnu-make-final (define gnu-make-final
;; The final GNU Make, which uses the final Guile. ;; The final GNU Make, which uses the final Guile.
@ -668,15 +753,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
,@%boot5-inputs) ,@%boot5-inputs)
(current-source-location)))) (current-source-location))))
(define-public ld-wrapper
;; The final `ld' wrapper, which uses the final Guile.
(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"))))))
(define coreutils-final (define coreutils-final
;; The final Coreutils. Treat them specially because some packages, such as ;; The final Coreutils. Treat them specially because some packages, such as
;; Findutils, keep a reference to the Coreutils they were built with. ;; Findutils, keep a reference to the Coreutils they were built with.
@ -791,14 +867,6 @@ COREUTILS-FINAL vs. COREUTILS, etc."
(((names . directories) ...) (((names . directories) ...)
(union-build out directories))) (union-build out directories)))
;; Remove the 'sh' and 'bash' binaries that come with
;; libc to avoid polluting the user's profile (these are
;; statically-linked binaries with no locale support and
;; so on.)
(for-each (lambda (file)
(delete-file (string-append out "/bin/" file)))
'("sh" "bash"))
(union-build (assoc-ref %outputs "debug") (union-build (assoc-ref %outputs "debug")
(list (assoc-ref %build-inputs (list (assoc-ref %build-inputs
"libc-debug"))))))) "libc-debug")))))))

View File

@ -253,7 +253,7 @@ than gzip and 15 % smaller output than bzip2.")
(define-public lzo (define-public lzo
(package (package
(name "lzo") (name "lzo")
(version "2.06") (version "2.09")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -261,7 +261,7 @@ than gzip and 15 % smaller output than bzip2.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0wryshs446s7cclrbjykyj766znhcpnr7s3cxy33ybfn6vwfcygz")))) "0k5kpj3jnsjfxqqkblpfpx0mqcy86zs5fhjhgh2kq1hksg7ag57j"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments '(#:configure-flags '("--enable-shared"))) (arguments '(#:configure-flags '("--enable-shared")))
(home-page "http://www.oberhumer.com/opensource/lzo") (home-page "http://www.oberhumer.com/opensource/lzo")

View File

@ -37,7 +37,7 @@
(define-public cups-filters (define-public cups-filters
(package (package
(name "cups-filters") (name "cups-filters")
(version "1.0.71") (version "1.0.75")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -45,7 +45,7 @@
"cups-filters-" version ".tar.xz")) "cups-filters-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"07wwlqcykfjfqcwj1bxk60ggahyaw7wcx32n5s104d1qkhham01i")) "0wrh9jmd2rm4z8c8nb50llb10shj1hik9vwqnr0djcvf63mfqsbw"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; install backends, banners and filters to cups-filters output ;; install backends, banners and filters to cups-filters output
@ -71,7 +71,8 @@
,(string-append "--with-rcdir=" ,(string-append "--with-rcdir="
(assoc-ref %outputs "out") "/etc/rc.d")))) (assoc-ref %outputs "out") "/etc/rc.d"))))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("glib" ,glib "bin") ; for gdbus-codegen
("pkg-config" ,pkg-config)))
(inputs (inputs
`(("fontconfig" ,fontconfig) `(("fontconfig" ,fontconfig)
("freetype" ,freetype) ("freetype" ,freetype)
@ -109,14 +110,14 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
(define-public cups-minimal (define-public cups-minimal
(package (package
(name "cups-minimal") (name "cups-minimal")
(version "2.0.3") (version "2.1.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://www.cups.org/software/" (uri (string-append "http://www.cups.org/software/"
version "/cups-" version "-source.tar.gz")) version "/cups-" version "-source.tar.bz2"))
(sha256 (sha256
(base32 (base32
"1kq1kpny0hghqgbjvashlv6qw1xn0c1p3d4r3cx8qxdzd2ifk4lf")))) "1jfjqsw9l7jbn5kb9i96k0wj12kjdbgx0rd8157dif22hi0kh0ms"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags

View File

@ -2,6 +2,7 @@
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz> ;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -47,6 +48,8 @@
(base32 (base32
"0gjnaav9vmwwwza451na1643br7i0kxgd4002pwqh3xk5ywvdap7")))) "0gjnaav9vmwwwza451na1643br7i0kxgd4002pwqh3xk5ywvdap7"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out"
"doc")) ;1.2 MiB of man3 pages
(inputs `(("gnutls" ,gnutls) (inputs `(("gnutls" ,gnutls)
("gss" ,gss) ("gss" ,gss)
("libidn" ,libidn) ("libidn" ,libidn)
@ -63,40 +66,50 @@
`(#:configure-flags '("--with-gnutls" "--with-gssapi") `(#:configure-flags '("--with-gnutls" "--with-gssapi")
;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl ;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl
#:phases #:phases
(alist-replace (modify-phases %standard-phases
'check (add-after
(lambda _ 'install 'move-man3-pages
(substitute* "tests/runtests.pl" (lambda* (#:key outputs #:allow-other-keys)
(("/bin/sh") (which "sh"))) ;; Move section 3 man pages to "doc".
;; Test #1135 requires extern-scan.pl, which is not part of the (let ((out (assoc-ref outputs "out"))
;; tarball due to a mistake. It has been fixed upstream. We can (doc (assoc-ref outputs "doc")))
;; simply disable the test as it is specific to VMS and OS/400. (mkdir-p (string-append doc "/share/man"))
(delete-file "tests/data/test1135") (rename-file (string-append out "/share/man/man3")
(string-append doc "/share/man/man3"))
#t)))
(replace
'check
(lambda _
(substitute* "tests/runtests.pl"
(("/bin/sh") (which "sh")))
;; Test #1135 requires extern-scan.pl, which is not part of the
;; tarball due to a mistake. It has been fixed upstream. We can
;; simply disable the test as it is specific to VMS and OS/400.
(delete-file "tests/data/test1135")
;; XXX FIXME: Test #1510 seems to work on some machines and not ;; XXX FIXME: Test #1510 seems to work on some machines and not
;; others, possibly based on the kernel version. It works on GuixSD ;; others, possibly based on the kernel version. It works on GuixSD
;; on x86_64 with linux-libre-4.1, but fails on Hydra for both i686 ;; on x86_64 with linux-libre-4.1, but fails on Hydra for both i686
;; and x86_64 with the following error: ;; and x86_64 with the following error:
;; ;;
;; test 1510...[HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)] ;; test 1510...[HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)]
;; ;;
;; 1510: output (log/stderr1510) FAILED: ;; 1510: output (log/stderr1510) FAILED:
;; --- log/check-expected 2015-06-27 07:45:53.166720834 +0000 ;; --- log/check-expected 2015-06-27 07:45:53.166720834 +0000
;; +++ log/check-generated 2015-06-27 07:45:53.166720834 +0000 ;; +++ log/check-generated 2015-06-27 07:45:53.166720834 +0000
;; @@ -1,5 +1,5 @@ ;; @@ -1,5 +1,5 @@
;; * Connection #0 to host server1.example.com left intact[LF] ;; * Connection #0 to host server1.example.com left intact[LF]
;; * Connection #1 to host server2.example.com left intact[LF] ;; * Connection #1 to host server2.example.com left intact[LF]
;; * Connection #2 to host server3.example.com left intact[LF] ;; * Connection #2 to host server3.example.com left intact[LF]
;; -* Closing connection 0[LF] ;; -* Closing connection 0[LF]
;; +* Closing connection 1[LF] ;; +* Closing connection 1[LF]
;; * Connection #3 to host server4.example.com left intact[LF] ;; * Connection #3 to host server4.example.com left intact[LF]
(delete-file "tests/data/test1510") (delete-file "tests/data/test1510")
;; The top-level "make check" does "make -C tests quiet-test", which ;; The top-level "make check" does "make -C tests quiet-test", which
;; is too quiet. Use the "test" target instead, which is more ;; is too quiet. Use the "test" target instead, which is more
;; verbose. ;; verbose.
(zero? (system* "make" "-C" "tests" "test"))) (zero? (system* "make" "-C" "tests" "test")))))))
%standard-phases)))
(synopsis "Command line tool for transferring data with URL syntax") (synopsis "Command line tool for transferring data with URL syntax")
(description (description
"curl is a command line tool for transferring data with URL syntax, "curl is a command line tool for transferring data with URL syntax,

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 David Thompson <davet@gnu.org> ;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
@ -68,26 +68,31 @@
"doc")) ; 94 MiB of HTML docs "doc")) ; 94 MiB of HTML docs
(arguments (arguments
'(#:tests? #f ; no check target available '(#:tests? #f ; no check target available
#:phases #:phases
(alist-replace (alist-replace
'configure 'configure
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")) (let ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc"))) (doc (assoc-ref outputs "doc")))
;; '--docdir' is not honored, so we need to patch. ;; '--docdir' is not honored, so we need to patch.
(substitute* "dist/Makefile.in" (substitute* "dist/Makefile.in"
(("docdir[[:blank:]]*=.*") (("docdir[[:blank:]]*=.*")
(string-append "docdir = " doc "/share/doc/bdb"))) (string-append "docdir = " doc "/share/doc/bdb")))
(zero? (zero?
(system* "./dist/configure" (system* "./dist/configure"
(string-append "--prefix=" out) (string-append "--prefix=" out)
(string-append "CONFIG_SHELL=" (which "bash")) (string-append "CONFIG_SHELL=" (which "bash"))
(string-append "SHELL=" (which "bash")) (string-append "SHELL=" (which "bash"))
;; The compatibility mode is needed by some packages, ;; The compatibility mode is needed by some packages,
;; notably iproute2. ;; notably iproute2.
"--enable-compat185")))) "--enable-compat185"
;; The following flag is needed so that the inclusion
;; of db_cxx.h into C++ files works; it leads to
;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
"--enable-cxx"))))
%standard-phases))) %standard-phases)))
(synopsis "Berkeley database") (synopsis "Berkeley database")
(description (description
@ -307,7 +312,7 @@ types are supported, as is encryption.")
(define-public sqlite (define-public sqlite
(package (package
(name "sqlite") (name "sqlite")
(version "3.8.10.2") (version "3.8.11.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; TODO: Download from sqlite.org once this bug : ;; TODO: Download from sqlite.org once this bug :
@ -322,9 +327,13 @@ types are supported, as is encryption.")
(map (cut string-pad <> 2 #\0) (map (cut string-pad <> 2 #\0)
other-digits)) other-digits))
6 #\0)))))) 6 #\0))))))
(string-append (list
"https://fossies.org/linux/misc/sqlite-autoconf-" (string-append
numeric-version ".tar.gz") "https://fossies.org/linux/misc/sqlite-autoconf-"
numeric-version ".tar.gz")
(string-append
"http://distfiles.gentoo.org/distfiles/"
"/sqlite-autoconf-" numeric-version ".tar.gz"))
;; XXX: As of 2015-09-08, SourceForge is squatting the URL ;; XXX: As of 2015-09-08, SourceForge is squatting the URL
;; below, returning 200 and showing an advertising page. ;; below, returning 200 and showing an advertising page.
@ -334,7 +343,7 @@ types are supported, as is encryption.")
)) ))
(sha256 (sha256
(base32 (base32
"09nnaqx50gl1vmfvdipirizr61q3s0ywlql50f9kr1bx9rdfb0l3")))) "1dnkl4qr1dgaprbyf3jddfiynkhxnin86qabni47wjlc0fnb16gv"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("readline" ,readline))) (inputs `(("readline" ,readline)))
(arguments (arguments

View File

@ -406,9 +406,9 @@ operations.")
(lisp-dir (string-append %output "/share/emacs/site-lisp"))) (lisp-dir (string-append %output "/share/emacs/site-lisp")))
(setenv "PATH" PATH) (setenv "PATH" PATH)
(system* tar "xvf" source) (system* tar "xvf" source)
(mkdir-p lisp-dir)
(copy-file (string-append ,name "-" ,version "/magit-svn.el") (install-file (string-append ,name "-" ,version "/magit-svn.el")
(string-append lisp-dir "/magit-svn.el")) lisp-dir)
(with-directory-excursion lisp-dir (with-directory-excursion lisp-dir
(parameterize ((%emacs emacs)) (parameterize ((%emacs emacs))
@ -462,18 +462,14 @@ support for Git-SVN.")
out "/share/doc/haskell-mode-" ,version)) out "/share/doc/haskell-mode-" ,version))
(info (string-append out "/share/info"))) (info (string-append out "/share/info")))
(define (copy-to-dir dir files) (define (copy-to-dir dir files)
(mkdir-p dir) (for-each (lambda (f)
(for-each (install-file f dir))
(lambda (f) files))
(copy-file f (string-append dir "/" (basename f))))
files))
(with-directory-excursion "doc" (with-directory-excursion "doc"
(unless (zero? (system* "makeinfo" "haskell-mode.texi")) (unless (zero? (system* "makeinfo" "haskell-mode.texi"))
(error "makeinfo failed")) (error "makeinfo failed"))
(mkdir-p info) (install-file "haskell-mode.info" info))
(copy-file "haskell-mode.info"
(string-append info "/haskell-mode.info")))
(copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md")) (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
(copy-to-dir el-dir (find-files "." "\\.elc?")) (copy-to-dir el-dir (find-files "." "\\.elc?"))
;; these are now distributed with emacs ;; these are now distributed with emacs
@ -952,11 +948,9 @@ single buffer.")
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((target (string-append (assoc-ref outputs "out") (let ((target (string-append (assoc-ref outputs "out")
"/share/emacs/site-lisp/"))) "/share/emacs/site-lisp/")))
(mkdir-p target) (for-each (lambda (file)
(for-each (install-file file target))
(lambda (file) (find-files "../lisp" "^(pdf|tab).*\\.elc?"))
(copy-file file (string-append target (basename file))))
(find-files "../lisp" "^(pdf|tab).*\\.elc?"))
(emacs-byte-compile-directory target) (emacs-byte-compile-directory target)
(emacs-generate-autoloads "pdf-tools" target))))))) (emacs-generate-autoloads "pdf-tools" target)))))))
(native-inputs `(("autoconf" ,autoconf) (native-inputs `(("autoconf" ,autoconf)

View File

@ -302,11 +302,9 @@ optimizer; and it can produce photorealistic and design review images.")
(doc (string-append data "/doc/" ,name "-" ,version)) (doc (string-append data "/doc/" ,name "-" ,version))
(examples (string-append doc "/examples"))) (examples (string-append doc "/examples")))
(with-directory-excursion "bin" (with-directory-excursion "bin"
(mkdir-p bin) (for-each (lambda (f)
(for-each (install-file f bin))
(lambda (f) (find-files "." ".*")))
(copy-file f (string-append bin "/" (basename f))))
(find-files "." ".*")))
(copy-recursively "doc" doc) (copy-recursively "doc" doc)
(copy-recursively "examples" examples) (copy-recursively "examples" examples)
#t)))))) #t))))))
@ -352,11 +350,9 @@ multipole-accelerated algorithm.")
(doc (string-append data "/doc/" ,name "-" ,version)) (doc (string-append data "/doc/" ,name "-" ,version))
(examples (string-append doc "/examples"))) (examples (string-append doc "/examples")))
(with-directory-excursion "bin" (with-directory-excursion "bin"
(mkdir-p bin) (for-each (lambda (f)
(for-each (install-file f bin))
(lambda (f) (find-files "." ".*")))
(copy-file f (string-append bin "/" (basename f))))
(find-files "." ".*")))
(copy-recursively "doc" doc) (copy-recursively "doc" doc)
(copy-recursively "examples" examples) (copy-recursively "examples" examples)
#t)))))) #t))))))

82
gnu/packages/finance.scm Normal file
View File

@ -0,0 +1,82 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages finance)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages boost)
#:use-module (gnu packages databases)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages tls)
#:use-module (gnu packages upnp))
(define-public bitcoin-core
(package
(name "bitcoin-core")
(version "0.11.0")
(source (origin
(method url-fetch)
(uri
(string-append "https://bitcoin.org/bin/bitcoin-core-"
version "/bitcoin-"
version ".tar.gz"))
(sha256
(base32
"17yh6lq13xzzi5v2i48qaxiqm40x3hrj4gwyamkib9yzmmb1gfji"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("python" ,python-wrapper) ; for the tests
("util-linux" ,util-linux))) ; provides the hexdump command for tests
(inputs
`(("bdb" ,bdb)
("boost" ,boost)
("miniupnpc" ,miniupnpc)
("openssl" ,openssl)
("protobuf" ,protobuf)
("qt" ,qt)))
(arguments
`(#:configure-flags
(list
;; We use a bdb version newer than 4.8.
"--with-incompatible-bdb"
;; Boost is not found unless specified manually.
(string-append "--with-boost="
(assoc-ref %build-inputs "boost")))
#:phases
(modify-phases %standard-phases
(add-before 'check 'set-home
(lambda _
(setenv "HOME" (getenv "TMPDIR"))))))) ; Tests write to $HOME.
(home-page "https://bitcoin.org/en/")
(synopsis "Bitcoin peer-to-peer client")
(description
"Bitcoin is a digital currency that enables instant payments to anyone
anywhere in the world. It uses peer-to-peer technology to operate without
central authority: managing transactions and issuing money are carried out
collectively by the network. Bitcoin Core is the reference implementation
of the bitcoin protocol. This package provides the Bitcoin Core command
line client and a client based on Qt.")
(license license:expat)))

View File

@ -71,14 +71,14 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
(define-public fontconfig (define-public fontconfig
(package (package
(name "fontconfig") (name "fontconfig")
(version "2.11.92") (version "2.11.94")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"http://www.freedesktop.org/software/fontconfig/release/fontconfig-" "http://www.freedesktop.org/software/fontconfig/release/fontconfig-"
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (base32 (sha256 (base32
"18r45dcnaj93izwfr082qiwg8ka7ll6j0c9yf1slblm542d5pmd9")))) "1psrl4b4gi4wmbvwwh43lk491wsl8lgvqj146prlcha3vwjc0qyp"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(propagated-inputs `(("expat" ,expat) (propagated-inputs `(("expat" ,expat)
("freetype" ,freetype))) ("freetype" ,freetype)))
@ -86,13 +86,24 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
(arguments (arguments
`(#:configure-flags `(#:configure-flags
;; point to user profile instead of /usr/share/fonts in /etc/fonts.conf (list "--with-cache-dir=/var/cache/fontconfig"
(list "--with-default-fonts=~/.guix-profile/share/fonts" ;; register gs-fonts as default fonts
;; register gs-fonts (string-append "--with-default-fonts="
(string-append "--with-add-fonts=" (assoc-ref %build-inputs "gs-fonts")
(assoc-ref %build-inputs "gs-fonts") "/share/fonts")
"/share/fonts")))) ;; register fonts from user profile
"--with-add-fonts=~/.guix-profile/share/fonts"
;; python is not actually needed
"PYTHON=false")
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda _
;; Don't try to create /var/cache/fontconfig.
(zero? (system* "make" "install"
"fc_cachedir=$(TMPDIR)"
"RUN_FC_CACHE_TEST=false")))))))
(synopsis "Library for configuring and customizing font access") (synopsis "Library for configuring and customizing font access")
(description (description
"Fontconfig can discover new fonts when installed automatically; "Fontconfig can discover new fonts when installed automatically;
@ -192,7 +203,7 @@ applications should be.")
(define-public graphite2 (define-public graphite2
(package (package
(name "graphite2") (name "graphite2")
(version "1.2.4") (version "1.3.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -201,12 +212,13 @@ applications should be.")
version ".tgz")) version ".tgz"))
(sha256 (sha256
(base32 (base32
"00xhv1mp640fr3wmdzwn4yz0g56jd4r9fb7b02mc1g19h0bdbhsb")))) "0xvhmlyyxg2qmbwyl8k2f9w7mrbjyl59823pnjd8xmxpyl6976d5"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs
`(("python" ,python-2) ; because of "import imap" in tests
("python-fonttools" ,python2-fonttools)))
(inputs (inputs
`(("freetype" ,freetype) `(("freetype" ,freetype)))
("perl" ,perl)
("python" ,python-2))) ; because of "import imap" in tests
(synopsis "Reimplementation of the SIL Graphite text processing engine") (synopsis "Reimplementation of the SIL Graphite text processing engine")
(description (description
"Graphite2 is a reimplementation of the SIL Graphite text processing "Graphite2 is a reimplementation of the SIL Graphite text processing

View File

@ -206,7 +206,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC
;; Fix the dynamic linker's file name. ;; Fix the dynamic linker's file name.
(substitute* (find-files "gcc/config" (substitute* (find-files "gcc/config"
"^linux(64|-elf|-eabi)?\\.h$") "^(linux|gnu)(64|-elf|-eabi)?\\.h$")
(("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix) (("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
(format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%" (format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%"
suffix suffix
@ -578,11 +578,7 @@ using compilers other than GCC."
(("@XSL_STYLE_DIR@") (("@XSL_STYLE_DIR@")
(string-append (string-append
docbook "/xml/xsl/" docbook "/xml/xsl/"
(string-drop (strip-store-file-name docbook)))))))
docbook
(+ 34
(string-length
(%store-directory))))))))))
(replace 'build (replace 'build
(lambda _ (lambda _
;; XXX: There's also a 'doc-info' target, but it ;; XXX: There's also a 'doc-info' target, but it

View File

@ -119,7 +119,7 @@ shared NFS home directories.")
(define glib (define glib
(package (package
(name "glib") (name "glib")
(version "2.44.0") (version "2.44.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" (uri (string-append "mirror://gnome/sources/"
@ -127,7 +127,7 @@ shared NFS home directories.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1fgmjv3yzxgbks31h42201x2izpw0sd84h8dfw0si3x00sqn5lzj")) "01yabrfp64i11mrks3p1gcks99lw0zm7f5vhkc53sl4amyndw4c8"))
(patches (list (search-patch "glib-tests-homedir.patch") (patches (list (search-patch "glib-tests-homedir.patch")
(search-patch "glib-tests-desktop.patch") (search-patch "glib-tests-desktop.patch")
(search-patch "glib-tests-prlimit.patch") (search-patch "glib-tests-prlimit.patch")

View File

@ -787,7 +787,7 @@ XML/CSS rendering engine.")
(define-public libgsf (define-public libgsf
(package (package
(name "libgsf") (name "libgsf")
(version "1.14.30") (version "1.14.34")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
@ -795,7 +795,7 @@ XML/CSS rendering engine.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0w2v1a9sxsymd1mcy4mwsz4r6za9iwq69rj86nb939p41d4c6j6b")))) "0a5m1i5gp4m2z0cn2x1rrdm8wgrr04bzv65l8pgp6jipw13s9zph"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("intltool" ,intltool) `(("intltool" ,intltool)
@ -820,7 +820,7 @@ dealing with different structured file formats.")
(define-public librsvg (define-public librsvg
(package (package
(name "librsvg") (name "librsvg")
(version "2.40.9") (version "2.40.10")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
@ -828,7 +828,7 @@ dealing with different structured file formats.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0fplymmqqr28y24vcnb01szn62pfbqhk8p1ngns54x9m6mflr5hk")))) "0y9lvnb9ij9mjg8cyp7xysi0c5ms5v4q1zrhx42b546f71s80p4n"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases

View File

@ -190,14 +190,12 @@ in the Mozilla clients.")
(obj (match (scandir "dist" (cut string-suffix? "OBJ" <>)) (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
((obj) (string-append "dist/" obj))))) ((obj) (string-append "dist/" obj)))))
;; Install nss-config to $out/bin. ;; Install nss-config to $out/bin.
(mkdir-p (string-append out "/bin")) (install-file (string-append obj "/bin/nss-config")
(copy-file (string-append obj "/bin/nss-config") (string-append out "/bin"))
(string-append out "/bin/nss-config"))
(delete-file (string-append obj "/bin/nss-config")) (delete-file (string-append obj "/bin/nss-config"))
;; Install nss.pc to $out/lib/pkgconfig. ;; Install nss.pc to $out/lib/pkgconfig.
(mkdir-p (string-append out "/lib/pkgconfig")) (install-file (string-append obj "/lib/pkgconfig/nss.pc")
(copy-file (string-append obj "/lib/pkgconfig/nss.pc") (string-append out "/lib/pkgconfig"))
(string-append out "/lib/pkgconfig/nss.pc"))
(delete-file (string-append obj "/lib/pkgconfig/nss.pc")) (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
(rmdir (string-append obj "/lib/pkgconfig")) (rmdir (string-append obj "/lib/pkgconfig"))
;; Install other files. ;; Install other files.

View File

@ -43,15 +43,15 @@
(define-public cgal (define-public cgal
(package (package
(name "cgal") (name "cgal")
(version "4.5.1") (version "4.6.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"http://gforge.inria.fr/frs/download.php/file/34402/CGAL-" "http://gforge.inria.fr/frs/download.php/file/"
version ".tar.xz")) "35139/CGAL-4.6.3.tar.xz"))
(sha256 (sha256
(base32 (base32
"1565ycbds92bxmhi09avc1jl6ks141ig00j110l49gqxp9swy6zv")))) "08gwjjh0qz3fakj1y2nsl2qvb0qv5lc7k1pxwjkagh37hxxh4f73"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(;; "RelWithDebInfo" is not supported. '(;; "RelWithDebInfo" is not supported.

View File

@ -144,28 +144,34 @@ affine transformation (scale, rotation, shear, etc.).")
(define-public harfbuzz (define-public harfbuzz
(package (package
(name "harfbuzz") (name "harfbuzz")
(version "0.9.40") (version "1.0.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-" (uri (string-append "http://www.freedesktop.org/software/"
version ".tar.bz2")) "harfbuzz/release/harfbuzz-"
(sha256 version ".tar.bz2"))
(base32 (sha256
"07rjp05axas96fp23lpf8l2yyfdj9yib4m0qjv592vdyhcsxaw8p")))) (base32
"1xrxlrvgyr6mm9qjxmkif2kvcah082y94gf1vqi0f0bdl1g8gp7b"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out"
"bin")) ; 160K, only hb-view depend on cairo
(inputs (inputs
`(("cairo" ,cairo) `(("cairo" ,cairo)))
(propagated-inputs
;; There are all in the Requires or Requires.private field of '.pc'.
`(("glib" ,glib)
("graphite2" ,graphite2) ("graphite2" ,graphite2)
("icu4c" ,icu4c))) ("icu4c" ,icu4c)))
(propagated-inputs
`(("glib" ,glib))) ; required by harfbuzz-gobject.pc
(native-inputs (native-inputs
`(("gobject-introspection" ,gobject-introspection) `(("gobject-introspection" ,gobject-introspection)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("python" ,python-2))) ; incompatible with Python 3 (print syntax) ("python" ,python-2))) ; incompatible with Python 3 (print syntax)
(arguments (arguments
`(#:configure-flags `("--with-graphite2" `(#:configure-flags `("--with-graphite2"
"--with-gobject"))) "--with-gobject"
,(string-append
"--bindir=" (assoc-ref %outputs "bin") "/bin"))))
(synopsis "OpenType text shaping engine") (synopsis "OpenType text shaping engine")
(description (description
"HarfBuzz is an OpenType text shaping engine.") "HarfBuzz is an OpenType text shaping engine.")
@ -508,7 +514,7 @@ application suites.")
(define-public gtk+ (define-public gtk+
(package (inherit gtk+-2) (package (inherit gtk+-2)
(name "gtk+") (name "gtk+")
(version "3.16.3") (version "3.16.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
@ -516,7 +522,7 @@ application suites.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"195ykv53sl2gsc847wcnd79zilm1yzcc2cfjxnrakhh2dd5gshr9")))) "1gpzlnfrifc17yfk0zki6b2vmsfpf5cmrbh232s6iaan11np44jd"))))
(propagated-inputs (propagated-inputs
`(("at-spi2-atk" ,at-spi2-atk) `(("at-spi2-atk" ,at-spi2-atk)
("atk" ,atk) ("atk" ,atk)
@ -556,9 +562,6 @@ application suites.")
(substitute* "testsuite/Makefile.in" (substitute* "testsuite/Makefile.in"
(("SUBDIRS = gdk gtk a11y css reftests") (("SUBDIRS = gdk gtk a11y css reftests")
"SUBDIRS = gdk")) "SUBDIRS = gdk"))
(substitute* '("demos/widget-factory/Makefile.in"
"demos/gtk-demo/Makefile.in")
(("gtk-update-icon-cache") "$(bindir)/gtk-update-icon-cache"))
#t) #t)
(alist-cons-after (alist-cons-after
'install 'wrap-gtk-encode-symbolic-svg 'install 'wrap-gtk-encode-symbolic-svg

View File

@ -467,7 +467,7 @@ http:://json.org specification. These are the main features:
scm-files) scm-files)
;; Also copy over the README. ;; Also copy over the README.
(copy-file "README.org" (string-append doc "/README.org")) (install-file "README.org" doc)
#t)))) #t))))
(inputs (inputs
`(("guile" ,guile-2.0))) `(("guile" ,guile-2.0)))

View File

@ -20,11 +20,14 @@
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages autotools)) #:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (guix git-download))
(define-public gnumach-headers (define-public gnumach-headers
(package (package
@ -73,7 +76,9 @@
(base32 (base32
"13r1pg8icyc0pl082z7k36i440pr1f3nr7ahig3rrc0r7qndqmk9")))) "13r1pg8icyc0pl082z7k36i440pr1f3nr7ahig3rrc0r7qndqmk9"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("gnumach-headers" ,gnumach-headers))) ;; Flex is needed both at build and run time.
(inputs `(("gnumach-headers" ,gnumach-headers)
("flex" ,flex)))
(native-inputs (native-inputs
`(("flex" ,flex) `(("flex" ,flex)
("bison" ,bison))) ("bison" ,bison)))
@ -128,3 +133,55 @@ communication.")
"This package provides C headers of the GNU Hurd, used to build the GNU C "This package provides C headers of the GNU Hurd, used to build the GNU C
Library and other user programs.") Library and other user programs.")
(license gpl2+))) (license gpl2+)))
(define-public hurd-minimal
(package (inherit hurd-headers)
(name "hurd-minimal")
(inputs `(("glibc-hurd-headers" ,glibc/hurd-headers)))
(native-inputs
`(("autoconf" ,(autoconf-wrapper))
("mig" ,mig)))
(arguments
`(#:phases (alist-replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; We need to copy libihash.a to the output directory manually,
;; since there is no target for that in the makefile.
(mkdir-p (string-append out "/include"))
(copy-file "libihash/ihash.h"
(string-append out "/include/ihash.h"))
(mkdir-p (string-append out "/lib"))
(copy-file "libihash/libihash.a"
(string-append out "/lib/libihash.a"))
#t))
(alist-replace
'build
(lambda _
(zero? (system* "make" "-Clibihash" "libihash.a")))
(alist-cons-before
'configure 'bootstrap
(lambda _
(zero? (system* "autoreconf" "-vfi")))
%standard-phases)))
#:configure-flags '(;; Pretend we're on GNU/Hurd; 'configure' wants
;; that.
"--host=i686-pc-gnu"
;; Reduce set of dependencies.
"--disable-ncursesw"
"--disable-test"
"--without-libbz2"
"--without-libz"
"--without-parted"
;; Skip the clnt_create check because it expects
;; a working glibc causing a circular dependency.
"ac_cv_search_clnt_create=no")
#:tests? #f))
(home-page "http://www.gnu.org/software/hurd/hurd.html")
(synopsis "GNU Hurd libraries")
(description
"This package provides libihash, needed to build the GNU C
Library for GNU/Hurd.")
(license gpl2+)))

View File

@ -82,6 +82,7 @@
("dconf" ,dconf) ("dconf" ,dconf)
("gconf" ,gconf) ("gconf" ,gconf)
("gtk2" ,gtk+-2) ("gtk2" ,gtk+-2)
("gtk+" ,gtk+)
("intltool" ,intltool) ("intltool" ,intltool)
("libnotify" ,libnotify) ("libnotify" ,libnotify)
("iso-codes" ,iso-codes) ("iso-codes" ,iso-codes)

View File

@ -38,7 +38,9 @@
"-src.tgz")) "-src.tgz"))
(sha256 (sha256
(base32 "0ys5f5spizg45qlaa31j2lhgry0jka2gfha527n4ndfxxz5j4sz1")) (base32 "0ys5f5spizg45qlaa31j2lhgry0jka2gfha527n4ndfxxz5j4sz1"))
(patches (list (search-patch "icu4c-CVE-2015-4760.patch"))))) (patches (map search-patch '("icu4c-CVE-2014-6585.patch"
"icu4c-CVE-2015-1270.patch"
"icu4c-CVE-2015-4760.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("perl" ,perl))) `(("perl" ,perl)))

View File

@ -107,41 +107,24 @@ image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.")
(define-public libtiff (define-public libtiff
(package (package
(name "libtiff") (name "libtiff")
(version "4.0.3") (version "4.0.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "ftp://ftp.remotesensing.org/pub/libtiff/tiff-" (uri (string-append "ftp://ftp.remotesensing.org/pub/libtiff/tiff-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (base32 (sha256 (base32
"0wj8d1iwk9vnpax2h29xqc2hwknxg3s0ay2d5pxkg59ihbifn6pa")) "171hgy4mylwmvdm7gp6ffjva81m4j56v3fbqsbfl7avzxn1slpp2"))))
(patches (map search-patch '("libtiff-CVE-2012-4564.patch"
"libtiff-CVE-2013-1960.patch"
"libtiff-CVE-2013-1961.patch"
"libtiff-CVE-2013-4231.patch"
"libtiff-CVE-2013-4232.patch"
"libtiff-CVE-2013-4244.patch"
"libtiff-CVE-2013-4243.patch"
"libtiff-CVE-2014-9330.patch"
"libtiff-CVE-2014-8127-pt1.patch"
"libtiff-CVE-2014-8127-pt2.patch"
"libtiff-CVE-2014-8127-pt3.patch"
"libtiff-CVE-2014-8127-pt4.patch"
"libtiff-CVE-2014-8128-pt1.patch"
"libtiff-CVE-2014-8128-pt2.patch"
"libtiff-CVE-2014-8128-pt3.patch"
"libtiff-CVE-2014-8129.patch"
"libtiff-CVE-2014-9655.patch"
"libtiff-CVE-2014-8128-pt4.patch"
"libtiff-CVE-2014-8128-pt5.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("zlib" ,zlib) (outputs '("out"
("libjpeg-8" ,libjpeg-8))) "doc")) ;1.3 MiB of HTML documentation
;; currently does not compile with libjpeg version 9
(arguments (arguments
`(#:configure-flags ;; Instead of using --docdir, this package has its own --with-docdir.
(list (string-append "--with-jpeg-include-dir=" `(#:configure-flags (list (string-append "--with-docdir="
(assoc-ref %build-inputs "libjpeg-8") (assoc-ref %outputs "doc")
"/include")))) "/share/doc/"
,name "-" ,version))))
(inputs `(("zlib" ,zlib)
("libjpeg" ,libjpeg)))
(synopsis "Library for handling TIFF files") (synopsis "Library for handling TIFF files")
(description (description
"Libtiff provides support for the Tag Image File Format (TIFF), a format "Libtiff provides support for the Tag Image File Format (TIFF), a format

View File

@ -23,6 +23,7 @@
#:use-module (guix build-system perl) #:use-module (guix build-system perl)
#:use-module (guix download) #:use-module (guix download)
#:use-module ((guix licenses) #:select (fsf-free)) #:use-module ((guix licenses) #:select (fsf-free))
#:use-module (gnu packages)
#:use-module (gnu packages algebra) #:use-module (gnu packages algebra)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
@ -37,14 +38,15 @@
(define-public imagemagick (define-public imagemagick
(package (package
(name "imagemagick") (name "imagemagick")
(version "6.9.1-3") (version "6.9.2-1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-" (uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"18wbsjfccxlgsdsd6h9wvhcjrsglyi086jk4bk029ik07rh81laz")))) "159afhqrj22jlz745ccbgnkdiwvn8pjcc96jic0iv9ms7gqxwln5"))
(patches (list (search-patch "imagemagick-test-segv.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases
@ -84,7 +86,7 @@
("libxml2" ,libxml2) ("libxml2" ,libxml2)
("libtiff" ,libtiff) ("libtiff" ,libtiff)
("libpng" ,libpng) ("libpng" ,libpng)
("libjpeg" ,libjpeg-8) ("libjpeg" ,libjpeg)
("pango" ,pango) ("pango" ,pango)
("freetype" ,freetype) ("freetype" ,freetype)
("bzip2" ,bzip2) ("bzip2" ,bzip2)

View File

@ -102,8 +102,8 @@
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((java (string-append (assoc-ref outputs "out") (let ((java (string-append (assoc-ref outputs "out")
"/share/java"))) "/share/java")))
(mkdir-p java) (install-file "swt.jar" java)
(copy-file "swt.jar" (string-append java "/swt.jar"))) #t) #t))
(alist-delete 'configure %standard-phases)))))) (alist-delete 'configure %standard-phases))))))
(inputs (inputs
`(("xulrunner" ,icecat) `(("xulrunner" ,icecat)

View File

@ -26,13 +26,13 @@
(define-public libidn (define-public libidn
(package (package
(name "libidn") (name "libidn")
(version "1.31") (version "1.32")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/libidn/libidn-" version (uri (string-append "mirror://gnu/libidn/libidn-" version
".tar.gz")) ".tar.gz"))
(sha256 (base32 (sha256 (base32
"026z12mczlag443ms9n954h36pi3m7iva9jfw8y4ispsj772zpxg")))) "1xf4hphhahcjm2xwx147lfpsavjwv9l4c2gf6hx71zxywbz5lpds"))))
(build-system gnu-build-system) (build-system gnu-build-system)
;; FIXME: No Java and C# libraries are currently built. ;; FIXME: No Java and C# libraries are currently built.
(synopsis "Internationalized string processing library") (synopsis "Internationalized string processing library")

View File

@ -321,7 +321,7 @@ It has been modified to remove all non-free binary blobs.")
(define-public linux-pam (define-public linux-pam
(package (package
(name "linux-pam") (name "linux-pam")
(version "1.1.6") (version "1.2.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -331,7 +331,7 @@ It has been modified to remove all non-free binary blobs.")
version ".tar.bz2"))) version ".tar.bz2")))
(sha256 (sha256
(base32 (base32
"1hlz2kqvbjisvwyicdincq7nz897b9rrafyzccwzqiqg53b8gf5s")))) "1n9lnf9gjs72kbj1g354v1xhi2j27aqaah15vykh7cnkq08i4arl"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("flex" ,flex) `(("flex" ,flex)
@ -390,7 +390,7 @@ providing the system administrator with some help in common tasks.")
(define-public util-linux (define-public util-linux
(package (package
(name "util-linux") (name "util-linux")
(version "2.25.2") (version "2.27")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://kernel.org/linux/utils/" (uri (string-append "mirror://kernel.org/linux/utils/"
@ -398,19 +398,20 @@ providing the system administrator with some help in common tasks.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1miwwdq1zwvhf0smrxx3fjddq3mz22s8rc5cw54s7x3kbdqpyig0")) "1ivdx1bhjbakf77agm9dn3wyxia1wgz9lzxgd61zqxw3xzih9gzw"))
(patches (list (search-patch "util-linux-tests.patch"))) (patches (list (search-patch "util-linux-tests.patch")))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; We take the 'logger' program from GNU Inetutils and 'kill' ;; We take the 'logger' program from GNU Inetutils and 'kill'
;; from GNU Coreutils. ;; from GNU Coreutils.
'(substitute* "configure" '(begin
(("build_logger=yes") "build_logger=no") (substitute* "configure"
(("build_kill=yes") "build_kill=no"))))) (("build_logger=yes") "build_logger=no")
(("build_kill=yes") "build_kill=no"))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags (list "--disable-use-tty-group" `(#:configure-flags (list "--disable-use-tty-group"
"--enable-ddate"
;; Install completions where our ;; Install completions where our
;; bash-completion package expects them. ;; bash-completion package expects them.
@ -1021,19 +1022,15 @@ advanced aspects of IP configuration (iptunnel, ipmaddr).")
(define-public libcap (define-public libcap
(package (package
(name "libcap") (name "libcap")
(version "2.22") (version "2.24")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; Tarballs used to be available from
;; <https://www.kernel.org/pub/linux/libs/security/linux-privs/>
;; but they never came back after kernel.org was compromised.
(uri (string-append (uri (string-append
"mirror://debian/pool/main/libc/libcap2/libcap2_" "mirror://kernel.org/linux/libs/security/linux-privs/"
version ".orig.tar.gz")) "libcap2/libcap-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"07vjhkznm82p8dm4w6j8mmg7h5c70lp5s9bwwfdmgwpbixfydjp1")))) "0rbc9qbqs5bp9am9s9g83wxj5k4ixps2agy9dxr1v1fwg27mdr6f"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments '(#:phases (arguments '(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View File

@ -115,7 +115,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
#:native-inputs native-inputs)) #:native-inputs native-inputs))
(define %bash-static (define %bash-static
(static-package bash-light)) (static-package bash-minimal))
(define %static-inputs (define %static-inputs
;; Packages that are to be used as %BOOTSTRAP-INPUTS. ;; Packages that are to be used as %BOOTSTRAP-INPUTS.
@ -253,10 +253,8 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; But of course, there are exceptions to this rule. ;; But of course, there are exceptions to this rule.
(let ((grep (assoc-ref %build-inputs "grep"))) (let ((grep (assoc-ref %build-inputs "grep")))
(copy-file (string-append grep "/bin/fgrep") (install-file (string-append grep "/bin/fgrep") bin)
(string-append bin "/fgrep")) (install-file (string-append grep "/bin/egrep") bin))
(copy-file (string-append grep "/bin/egrep")
(string-append bin "/egrep")))
;; Clear references to the store path. ;; Clear references to the store path.
(for-each remove-store-references (for-each remove-store-references
@ -425,8 +423,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
"--disable-libcilkrts" "--disable-libcilkrts"
"--disable-libvtv" "--disable-libvtv"
"--disable-libssp" "--disable-libssp"
"--disable-libquadmath" "--disable-libquadmath")
"--disable-decimal-float")
(remove (cut string-match "--(.*plugin|enable-languages)" <>) (remove (cut string-match "--(.*plugin|enable-languages)" <>)
,flags))) ,flags)))
((#:phases phases) ((#:phases phases)
@ -631,7 +628,8 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
".tar.xz") ".tar.xz")
"." "."
;; avoid non-determinism in the archive ;; avoid non-determinism in the archive
"--mtime=@0" "--owner=root:0" "--group=root:0")))))))))) "--sort=name" "--mtime=@0"
"--owner=root:0" "--group=root:0"))))))))))
(define %bootstrap-binaries-tarball (define %bootstrap-binaries-tarball
;; A tarball with the statically-linked bootstrap binaries. ;; A tarball with the statically-linked bootstrap binaries.

View File

@ -1828,21 +1828,17 @@ specifications.")
(string-append lib "/liblpsolve55.a")) (string-append lib "/liblpsolve55.a"))
(copy-file "lpsolve55/bin/ux64/liblpsolve55.so" (copy-file "lpsolve55/bin/ux64/liblpsolve55.so"
(string-append lib "/liblpsolve55.so")) (string-append lib "/liblpsolve55.so"))
(mkdir-p bin) (install-file "lp_solve/bin/ux64/lp_solve" bin)
(copy-file "lp_solve/bin/ux64/lp_solve"
(string-append bin "/lp_solve"))
(mkdir-p include)
;; Install a subset of the header files as on Debian ;; Install a subset of the header files as on Debian
;; (plus lp_bit.h, which matches the regular expression). ;; (plus lp_bit.h, which matches the regular expression).
(for-each (for-each (lambda (name)
(lambda (name) (install-file name include))
(copy-file name (string-append include "/" name))) (find-files "." "lp_[HMSa-z].*\\.h$"))
(find-files "." "lp_[HMSa-z].*\\.h$"))
(with-directory-excursion "shared" (with-directory-excursion "shared"
(for-each (for-each (lambda (name)
(lambda (name) (install-file name include))
(copy-file name (string-append include "/" name))) (find-files "." "\\.h$")))
(find-files "." "\\.h$")))
#t)))))) #t))))))
(home-page "http://lpsolve.sourceforge.net/") (home-page "http://lpsolve.sourceforge.net/")
(synopsis "Mixed integer linear programming (MILP) solver") (synopsis "Mixed integer linear programming (MILP) solver")

View File

@ -435,7 +435,7 @@ format.")
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))) (bin (string-append out "/bin")))
(mkdir-p bin) (mkdir-p bin)
(copy-file "mpc123" (string-append bin "/mpc123")))) (install-file "mpc123" bin)))
%standard-phases)) %standard-phases))
#:tests? #f)) #:tests? #f))

View File

@ -28,21 +28,17 @@
'(lambda _ '(lambda _
(for-each patch-makefile-SHELL (for-each patch-makefile-SHELL
(find-files "." "Makefile.in")))) (find-files "." "Makefile.in"))))
(configure-phase (remove-shebang-phase
'(lambda* (#:key inputs outputs configure-flags '(lambda _
#:allow-other-keys) ;; To avoid retaining a reference to the bootstrap Bash via the
;; The `ncursesw5-config' has a #!/bin/sh. We want to patch ;; shebang of the 'ncursesw5-config' script, simply remove that
;; it to point to libc's embedded Bash, to avoid retaining a ;; shebang: it'll work just as well without it.
;; reference to the bootstrap Bash. (substitute* "misc/ncurses-config.in"
(let* ((libc (assoc-ref inputs "libc")) (("#!@SHELL@")
(bash (string-append libc "/bin/bash")) "# No shebang here, use /bin/sh!\n")
(out (assoc-ref outputs "out"))) (("@SHELL@ \\$0")
(format #t "configure flags: ~s~%" configure-flags) "$0"))
(zero? (apply system* bash "./configure" #t))
(string-append "SHELL=" bash)
(string-append "CONFIG_SHELL=" bash)
(string-append "--prefix=" out)
configure-flags)))))
(post-install-phase (post-install-phase
'(lambda* (#:key outputs #:allow-other-keys) '(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
@ -56,9 +52,9 @@
(define lib.a (define lib.a
(string-append "lib" lib ".a")) (string-append "lib" lib ".a"))
(define libw.so.x (define libw.so.x
(string-append "lib" lib "w.so.5")) (string-append "lib" lib "w.so.6"))
(define lib.so.x (define lib.so.x
(string-append "lib" lib ".so.5")) (string-append "lib" lib ".so.6"))
(define lib.so (define lib.so
(string-append "lib" lib ".so")) (string-append "lib" lib ".so"))
@ -73,14 +69,14 @@
'("curses" "ncurses" "form" "panel" "menu"))))))) '("curses" "ncurses" "form" "panel" "menu")))))))
(package (package
(name "ncurses") (name "ncurses")
(version "5.9") (version "6.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/ncurses/ncurses-" (uri (string-append "mirror://gnu/ncurses/ncurses-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh")))) "0q3jck7lna77z5r42f13c4xglc7azd19pxfrjrpgp2yf615w4lgm"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags
@ -90,37 +86,20 @@
;; what users expect. ;; what users expect.
,(string-append "--includedir=" (assoc-ref %outputs "out") ,(string-append "--includedir=" (assoc-ref %outputs "out")
"/include") "/include")
"--enable-overwrite" ;really honor --includedir
;; Make sure programs like 'tic', 'reset', and 'clear' have a ;; Make sure programs like 'tic', 'reset', and 'clear' have a
;; correct RUNPATH. ;; correct RUNPATH.
,(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") ,(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out")
"/lib") "/lib"))
;; C++ bindings fail to build on
;; `i386-pc-solaris2.11' with GCC 3.4.3:
;; <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6395191>.
,,@(if (string=? (%current-system) "i686-solaris")
'("--without-cxx-binding")
'()))
#:tests? #f ; no "check" target #:tests? #f ; no "check" target
#:phases ,(if (%current-target-system) #:phases (modify-phases %standard-phases
(add-after 'install 'post-install
`(alist-cons-before ; cross build ,post-install-phase)
'configure 'patch-makefile-SHELL (add-before 'configure 'patch-makefile-SHELL
,patch-makefile-phase ,patch-makefile-phase)
(alist-cons-after (add-after 'unpack 'remove-unneeded-shebang
'install 'post-install ,post-install-phase ,remove-shebang-phase))))
%standard-phases))
`(alist-cons-after ; native build
'install 'post-install ,post-install-phase
(alist-cons-before
'configure 'patch-makefile-SHELL
,patch-makefile-phase
(alist-replace
'configure
,configure-phase
%standard-phases))))))
(self-native-input? #t) ; for `tic' (self-native-input? #t) ; for `tic'
(synopsis "Terminal emulation (termcap, terminfo) library") (synopsis "Terminal emulation (termcap, terminfo) library")
(description (description

View File

@ -66,11 +66,8 @@
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")) (bin (string-append out "/bin"))
(doc (string-append out "/share/doc/ninja"))) (doc (string-append out "/share/doc/ninja")))
(mkdir-p bin) (install-file "ninja" bin)
(copy-file "ninja" (string-append bin "/ninja")) (install-file "doc/manual.asciidoc" doc)
(mkdir-p doc)
(copy-file "doc/manual.asciidoc"
(string-append doc "/manual.asciidoc"))
#t)))))) #t))))))
(home-page "http://martine.github.io/ninja/") (home-page "http://martine.github.io/ninja/")
(synopsis "Small build system") (synopsis "Small build system")

View File

@ -34,7 +34,7 @@
(define-public openldap (define-public openldap
(package (package
(name "openldap") (name "openldap")
(version "2.4.40") (version "2.4.42")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -51,7 +51,7 @@
"openldap-release/openldap-" version ".tgz"))) "openldap-release/openldap-" version ".tgz")))
(sha256 (sha256
(base32 (base32
"1nyslrgwxwilgv5sixc37svls5rbvhsv9drb7hlrjr2vqaji29ni")))) "0qwfpb5ipp2l76v11arghq5mr0sjc6xhjfg8a0kgsaw5qpib1dzf"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("bdb" ,bdb) (inputs `(("bdb" ,bdb)
("openssl" ,openssl) ("openssl" ,openssl)

View File

@ -176,7 +176,7 @@ the Nix package manager.")
;; ;;
;; Note: use a short commit id; when using the long one, the limit on socket ;; Note: use a short commit id; when using the long one, the limit on socket
;; file names is exceeded while running the tests. ;; file names is exceeded while running the tests.
(let ((commit "5d09263")) (let ((commit "abbe2c6"))
(package (inherit guix-0.8.3) (package (inherit guix-0.8.3)
(version (string-append "0.8.3." commit)) (version (string-append "0.8.3." commit))
(source (origin (source (origin
@ -186,7 +186,7 @@ the Nix package manager.")
(commit commit))) (commit commit)))
(sha256 (sha256
(base32 (base32
"0v5g90di91j218x620shib7xjrjd5dkk4h1zrlg98hdmbgxq5s3j")) "1zgjj5knpz3qbbqdjm4yh436bzfgasc6p0k3xnx58hfjd88mdsga"))
(file-name (string-append "guix-" version "-checkout")))) (file-name (string-append "guix-" version "-checkout"))))
(arguments (arguments
(substitute-keyword-arguments (package-arguments guix-0.8.3) (substitute-keyword-arguments (package-arguments guix-0.8.3)

View File

@ -0,0 +1,80 @@
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=636512
From: Svante Signell <srs@kth.se>
Subject: acl: Fix FTBFS on hurd-i386
Date: Wed, 03 Aug 2011 19:36:27 +0200
Currently acl does not compile on hurd-i386. The problem is a PATH_MAX
definition which is not supported on GNU/Hurd.
Index: acl-2.2.52/setfacl/parse.c
===================================================================
--- acl-2.2.52/setfacl/parse.c
+++ acl-2.2.52/setfacl/parse.c
@@ -419,7 +419,13 @@ read_acl_comments(
bytes for "# file: ". Not a good solution but for now it is the
best I can do without too much impact on the code. [tw]
*/
+
+#ifdef __GNU__
+ char *linebuf;
+ size_t dummy = 0;
+#else
char linebuf[(4*PATH_MAX)+9];
+#endif
char *cp;
char *p;
int comments_read = 0;
@@ -449,9 +455,13 @@ read_acl_comments(
if (line)
(*line)++;
+#ifdef __GNU__
+ if (getline(&linebuf, &dummy, file) == -1)
+ break;
+#else
if (fgets(linebuf, sizeof(linebuf), file) == NULL)
break;
-
+#endif
comments_read = 1;
p = strrchr(linebuf, '\0');
@@ -473,7 +483,12 @@ read_acl_comments(
goto fail;
*path_p = (char*)malloc(strlen(cp)+1);
if (!*path_p)
+ {
+#ifdef __GNU__
+ free (linebuf);
+#endif
return -1;
+ }
strcpy(*path_p, cp);
}
} else if (strncmp(cp, "owner:", 6) == 0) {
@@ -522,13 +537,24 @@ read_acl_comments(
}
}
if (ferror(file))
+ {
+#ifdef __GNU__
+ free (linebuf);
+#endif
return -1;
+ }
+#ifdef __GNU__
+ free (linebuf);
+#endif
return comments_read;
fail:
if (path_p && *path_p) {
free(*path_p);
*path_p = NULL;
}
+#ifdef __GNU__
+ free (linebuf);
+#endif
return -EINVAL;
}

View File

@ -0,0 +1,13 @@
Skip this test, which uncovers a race condition in how 'tail' handles
file deletion. See <http://bugs.gnu.org/21460>.
--- a/tests/tail-2/assert.sh
+++ b/tests/tail-2/assert.sh
@@ -16,6 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+exit 77 # see <http://bugs.gnu.org/21460>
# This test fails with tail from textutils-2.0.
# It would get something like this:

View File

@ -0,0 +1,35 @@
This changes the way _EXTERN_INLINE is defined so we can
avoid external definition errors.
https://lists.gnu.org/archive/html/bug-hurd/2014-04/msg00002.html
diff --git a/signal/sigsetops.c b/signal/sigsetops.c
index 0317662..b92c296 100644
--- a/signal/sigsetops.c
+++ b/signal/sigsetops.c
@@ -3,7 +3,9 @@
#include <features.h>
-#define _EXTERN_INLINE
+#ifndef _EXTERN_INLINE
+#define _EXTERN_INLINE __extern_inline
+#endif
#ifndef __USE_EXTERN_INLINES
# define __USE_EXTERN_INLINES 1
#endif
Link libmachuser and libhurduser automatically with libc, since they are
considered a standard part of the API in GNU-land.
--- a/Makerules
+++ b/Makerules
@@ -978,6 +978,9 @@
'$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
' AS_NEEDED (' $(rtlddir)/$(rtld-installed-name) ') )' \
) > $@.new
+ifeq ($(patsubst gnu%,,$(config-os)),)
+ echo 'INPUT ( AS_NEEDED ( -lmachuser -lhurduser ) )' >> $@.new
+endif
mv -f $@.new $@
endif

View File

@ -9,9 +9,9 @@ in a package separate from glibc.
because otherwise, 'localedef' fails with: because otherwise, 'localedef' fails with:
"cannot write output files to `(null)'". "cannot write output files to `(null)'".
--- glibc-2.20/localedata/Makefile 2014-09-07 10:09:09.000000000 +0200 --- glibc-2.22/localedata/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ glibc-2.20/localedata/Makefile 2015-02-11 10:23:55.560545568 +0100 +++ glibc-2.22/localedata/Makefile 2015-09-25 14:18:34.698941752 +0200
@@ -217,7 +217,7 @@ INSTALL-SUPPORTED-LOCALES=$(addprefix in @@ -195,7 +195,7 @@ INSTALL-SUPPORTED-LOCALES=$(addprefix in
# Sometimes the whole collection of locale files should be installed. # Sometimes the whole collection of locale files should be installed.
LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
@ -20,12 +20,12 @@ in a package separate from glibc.
install-locales: $(INSTALL-SUPPORTED-LOCALES) install-locales: $(INSTALL-SUPPORTED-LOCALES)
install-locales-dir: install-locales-dir:
@@ -234,7 +234,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo @@ -212,7 +212,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo
input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \
$(LOCALEDEF) --alias-file=../intl/locale.alias \ $(LOCALEDEF) --alias-file=../intl/locale.alias \
-i locales/$$input -c -f charmaps/$$charset \ -i locales/$$input -c -f charmaps/$$charset \
- $(addprefix --prefix=,$(install_root)) $$locale; \ - $(addprefix --prefix=,$(install_root)) $$locale \
+ $(addprefix --prefix=,$(install_root)) $(localedir)/$$locale; \ + $(addprefix --prefix=,$(install_root)) $(localedir)/$$locale \
echo ' done'; \ && echo ' done'; \
tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP

View File

@ -0,0 +1,25 @@
This fixes <https://sourceware.org/bugzilla/show_bug.cgi?id=18781>
whereby, on 32-bit platforms, libc 2.22 would fail to pass O_LARGEFILE
to 'openat'. This was caught by 'tests/sparse03.at' in the tar
test suite.
commit eb32b0d40308166c4d8f6330cc2958cb1e545075
Author: Andreas Schwab <schwab@suse.de>
Date: Mon Aug 10 14:12:47 2015 +0200
Readd O_LARGEFILE flag for openat64 (bug 18781)
--- a/sysdeps/unix/sysv/linux/openat.c
+++ b/sysdeps/unix/sysv/linux/openat.c
@@ -68,6 +68,11 @@ __OPENAT (int fd, const char *file, int oflag, ...)
va_end (arg);
}
+ /* We have to add the O_LARGEFILE flag for openat64. */
+#ifdef MORE_OFLAGS
+ oflag |= MORE_OFLAGS;
+#endif
+
return SYSCALL_CANCEL (openat, fd, file, oflag, mode);
}
libc_hidden_def (__OPENAT)

View File

@ -0,0 +1,21 @@
Copied from Debian.
description: out-of-bounds read
origin: https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-6585
--- a/source/layout/LETableReference.h
+++ b/source/layout/LETableReference.h
@@ -322,7 +322,12 @@ LE_TRACE_TR("INFO: new RTAO")
}
const T& operator()(le_uint32 i, LEErrorCode &success) const {
- return *getAlias(i,success);
+ const T *ret = getAlias(i,success);
+ if (LE_FAILURE(success) || ret==NULL) {
+ return *(new T());
+ } else {
+ return *ret;
+ }
}
size_t getOffsetFor(le_uint32 i, LEErrorCode &success) const {

View File

@ -0,0 +1,15 @@
Copied from Debian.
diff --git a/source/common/ucnv_io.cpp b/source/common/ucnv_io.cpp
index 5dd35d8..4424664 100644
--- a/source/common/ucnv_io.cpp
+++ b/source/common/ucnv_io.cpp
@@ -744,7 +744,7 @@ ucnv_io_getConverterName(const char *alias, UBool *containsOption, UErrorCode *p
* the name begins with 'x-'. If it does, strip it off and try
* again. This behaviour is similar to how ICU4J does it.
*/
- if (aliasTmp[0] == 'x' || aliasTmp[1] == '-') {
+ if (aliasTmp[0] == 'x' && aliasTmp[1] == '-') {
aliasTmp = aliasTmp+2;
} else {
break;

View File

@ -0,0 +1,20 @@
This patch works around a segmentation fault in 'Magick++/tests/color' when
running 'Magick++/tests/tests.tap'. Here we get an exception early on, which
is supposedly harmless:
Caught exception: color: UnableToOpenConfigureFile `colors.xml' @ warning/configure.c/GetConfigureOptions/706
However, when the stack unwinders run, 'UnregisterDOTImage' gets called even
though 'RegisterDOTImage' hadn't been called yet; thus, 'graphic_context' in
coders/dot.c is NULL, leading to the segfault.
--- ImageMagick-6.9.2-1/coders/dot.c 2015-09-16 17:32:42.900323334 +0200
+++ ImageMagick-6.9.2-1/coders/dot.c 2015-09-16 17:32:48.312367636 +0200
@@ -240,6 +240,7 @@ ModuleExport void UnregisterDOTImage(voi
(void) UnregisterMagickInfo("GV");
(void) UnregisterMagickInfo("DOT");
#if defined(MAGICKCORE_GVC_DELEGATE)
+ if (graphic_context != NULL)
gvFreeContext(graphic_context);
#endif
}

View File

@ -0,0 +1,146 @@
This patch helps to integrate the Hurd's libpthread as a libc add-on.
It writes the configure file, removes an rpc call not yet
implemented on the version of gnumach we use and defines
a missing macro.
diff --git a/libpthread/configure b/libpthread/configure
new file mode 100644
index 0000000..2cdbc71
--- /dev/null
+++ b/libpthread/configure
@@ -0,0 +1,2 @@
+libc_add_on_canonical=libpthread
+libc_add_on_subdirs=.
--
1.9.0
We are using a version of GNU Mach that lacks 'thread_terminate_release'
(not introduced yet). The 'thread_terminate' RPC call will be enough for
our needs.
See <http://lists.gnu.org/archive/html/bug-hurd/2014-05/msg00127.html>.
diff --git a/libpthread/sysdeps/mach/pt-thread-terminate.c b/libpthread/sysdeps/mach/pt-thread-terminate.c
index 6672065..129a611 100644
--- a/libpthread/sysdeps/mach/pt-thread-terminate.c
+++ b/libpthread/sysdeps/mach/pt-thread-terminate.c
@@ -70,9 +70,9 @@ __pthread_thread_terminate (struct __pthread *thread)
__mach_port_destroy (__mach_task_self (), wakeup_port);
/* Terminate and release all that's left. */
- err = __thread_terminate_release (kernel_thread, mach_task_self (),
- kernel_thread, reply_port,
- stackaddr, stacksize);
+ /* err = __thread_terminate_release (kernel_thread, mach_task_self (), */
+ /* kernel_thread, reply_port, */
+ /* stackaddr, stacksize); */
/* The kernel does not support it yet. Leak but at least terminate
correctly. */
--
1.9.2
The __PTHREAD_SPIN_LOCK_INITIALIZER definition is missing, so we
define it to __SPIN_LOCK_INITIALIZER which already exists.
See <http://lists.gnu.org/archive/html/commit-hurd/2009-04/msg00006.html>.
diff --git a/libpthread/sysdeps/mach/bits/spin-lock.h b/libpthread/sysdeps/mach/bits/spin-lock.h
index 537dac9..fca0e5a 100644
--- a/libpthread/sysdeps/mach/bits/spin-lock.h
+++ b/libpthread/sysdeps/mach/bits/spin-lock.h
@@ -30,7 +30,7 @@ typedef __spin_lock_t __pthread_spinlock_t;
/* Initializer for a spin lock object. */
#ifndef __PTHREAD_SPIN_LOCK_INITIALIZER
-#error __PTHREAD_SPIN_LOCK_INITIALIZER undefined: should be defined by <lock-intern.h>.
+#define __PTHREAD_SPIN_LOCK_INITIALIZER __SPIN_LOCK_INITIALIZER
#endif
__END_DECLS
The version of the glibc we use doesn't include the shm-directory.c file and does
not yet support IS_IN.
See <https://lists.gnu.org/archive/html/bug-hurd/2015-03/msg00078.html>
diff --git a/libpthread/Makefile b/libpthread/Makefile
index 2906788..b8dee58 100644
--- a/libpthread/Makefile
+++ b/libpthread/Makefile
@@ -149,8 +149,6 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate \
sem-post sem-timedwait sem-trywait sem-unlink \
sem-wait \
\
- shm-directory \
- \
cthreads-compat \
$(SYSDEPS)
--
2.3.6
diff --git a/libpthread/pthread/pt-create.c b/libpthread/pthread/pt-create.c
index d88afae..84044dc 100644
--- a/libpthread/pthread/pt-create.c
+++ b/libpthread/pthread/pt-create.c
@@ -28,7 +28,7 @@
#include <pt-internal.h>
-#if IS_IN (libpthread)
+#ifdef IS_IN_libpthread
# include <ctype.h>
#endif
#ifdef HAVE_USELOCALE
@@ -50,7 +50,7 @@ entry_point (struct __pthread *self, void *(*start_routine)(void *), void *arg)
__resp = &self->res_state;
#endif
-#if IS_IN (libpthread)
+#ifdef IS_IN_libpthread
/* Initialize pointers to locale data. */
__ctype_init ();
#endif
diff --git a/libpthread/pthread/pt-initialize.c b/libpthread/pthread/pt-initialize.c
index 9e5404b..b9cacbd 100644
--- a/libpthread/pthread/pt-initialize.c
+++ b/libpthread/pthread/pt-initialize.c
@@ -28,7 +28,7 @@
DEFINE_HOOK (__pthread_init, (void));
-#if IS_IN (libpthread)
+#ifdef IS_IN_libpthread
static const struct pthread_functions pthread_functions =
{
.ptr_pthread_attr_destroy = __pthread_attr_destroy,
@@ -81,7 +81,7 @@ static const struct pthread_functions pthread_functions =
void
___pthread_init (void)
{
-#if IS_IN (libpthread)
+#ifdef IS_IN_libpthread
__libc_pthread_init(&pthread_functions);
#endif
RUN_HOOK (__pthread_init, ());
diff --git a/libpthread/pthread/pt-internal.h b/libpthread/pthread/pt-internal.h
index 18b5b4c..8cdcfce 100644
--- a/libpthread/pthread/pt-internal.h
+++ b/libpthread/pthread/pt-internal.h
@@ -35,7 +35,7 @@
#include <pt-sysdep.h>
#include <pt-machdep.h>
-#if IS_IN (libpthread)
+#ifdef IS_IN_libpthread
# include <ldsodefs.h>
#endif
@@ -60,7 +60,7 @@ enum pthread_state
# define PTHREAD_SYSDEP_MEMBERS
#endif
-#if !(IS_IN (libpthread))
+#ifndef IS_IN_libpthread
#ifdef ENABLE_TLS
/* Type of the TCB. */
typedef struct

View File

@ -1,33 +0,0 @@
Copied from Debian
Index: tiff-4.0.3/tools/ppm2tiff.c
===================================================================
--- tiff-4.0.3.orig/tools/ppm2tiff.c 2013-06-23 10:36:50.779629492 -0400
+++ tiff-4.0.3/tools/ppm2tiff.c 2013-06-23 10:36:50.775629494 -0400
@@ -89,6 +89,7 @@
int c;
extern int optind;
extern char* optarg;
+ tmsize_t scanline_size;
if (argc < 2) {
fprintf(stderr, "%s: Too few arguments\n", argv[0]);
@@ -237,8 +238,16 @@
}
if (TIFFScanlineSize(out) > linebytes)
buf = (unsigned char *)_TIFFmalloc(linebytes);
- else
- buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
+ else {
+ scanline_size = TIFFScanlineSize(out);
+ if (scanline_size != 0)
+ buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
+ else {
+ fprintf(stderr, "%s: scanline size overflow\n",infile);
+ (void) TIFFClose(out);
+ exit(-2);
+ }
+ }
if (resolution > 0) {
TIFFSetField(out, TIFFTAG_XRESOLUTION, resolution);
TIFFSetField(out, TIFFTAG_YRESOLUTION, resolution);

View File

@ -1,148 +0,0 @@
Copied from Debian
Index: tiff-4.0.3/tools/tiff2pdf.c
===================================================================
--- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-06-23 10:36:50.979629486 -0400
+++ tiff-4.0.3/tools/tiff2pdf.c 2013-06-23 10:36:50.975629486 -0400
@@ -3341,33 +3341,56 @@
uint32 height){
tsize_t i=0;
- uint16 ri =0;
- uint16 v_samp=1;
- uint16 h_samp=1;
- int j=0;
-
- i++;
-
- while(i<(*striplength)){
+
+ while (i < *striplength) {
+ tsize_t datalen;
+ uint16 ri;
+ uint16 v_samp;
+ uint16 h_samp;
+ int j;
+ int ncomp;
+
+ /* marker header: one or more FFs */
+ if (strip[i] != 0xff)
+ return(0);
+ i++;
+ while (i < *striplength && strip[i] == 0xff)
+ i++;
+ if (i >= *striplength)
+ return(0);
+ /* SOI is the only pre-SOS marker without a length word */
+ if (strip[i] == 0xd8)
+ datalen = 0;
+ else {
+ if ((*striplength - i) <= 2)
+ return(0);
+ datalen = (strip[i+1] << 8) | strip[i+2];
+ if (datalen < 2 || datalen >= (*striplength - i))
+ return(0);
+ }
switch( strip[i] ){
- case 0xd8:
- /* SOI - start of image */
+ case 0xd8: /* SOI - start of image */
_TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), 2);
*bufferoffset+=2;
- i+=2;
break;
- case 0xc0:
- case 0xc1:
- case 0xc3:
- case 0xc9:
- case 0xca:
+ case 0xc0: /* SOF0 */
+ case 0xc1: /* SOF1 */
+ case 0xc3: /* SOF3 */
+ case 0xc9: /* SOF9 */
+ case 0xca: /* SOF10 */
if(no==0){
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
- for(j=0;j<buffer[*bufferoffset+9];j++){
- if( (buffer[*bufferoffset+11+(2*j)]>>4) > h_samp)
- h_samp = (buffer[*bufferoffset+11+(2*j)]>>4);
- if( (buffer[*bufferoffset+11+(2*j)] & 0x0f) > v_samp)
- v_samp = (buffer[*bufferoffset+11+(2*j)] & 0x0f);
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
+ ncomp = buffer[*bufferoffset+9];
+ if (ncomp < 1 || ncomp > 4)
+ return(0);
+ v_samp=1;
+ h_samp=1;
+ for(j=0;j<ncomp;j++){
+ uint16 samp = buffer[*bufferoffset+11+(3*j)];
+ if( (samp>>4) > h_samp)
+ h_samp = (samp>>4);
+ if( (samp & 0x0f) > v_samp)
+ v_samp = (samp & 0x0f);
}
v_samp*=8;
h_samp*=8;
@@ -3381,45 +3404,43 @@
(unsigned char) ((height>>8) & 0xff);
buffer[*bufferoffset+6]=
(unsigned char) (height & 0xff);
- *bufferoffset+=strip[i+2]+2;
- i+=strip[i+2]+2;
-
+ *bufferoffset+=datalen+2;
+ /* insert a DRI marker */
buffer[(*bufferoffset)++]=0xff;
buffer[(*bufferoffset)++]=0xdd;
buffer[(*bufferoffset)++]=0x00;
buffer[(*bufferoffset)++]=0x04;
buffer[(*bufferoffset)++]=(ri >> 8) & 0xff;
buffer[(*bufferoffset)++]= ri & 0xff;
- } else {
- i+=strip[i+2]+2;
}
break;
- case 0xc4:
- case 0xdb:
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
- *bufferoffset+=strip[i+2]+2;
- i+=strip[i+2]+2;
+ case 0xc4: /* DHT */
+ case 0xdb: /* DQT */
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
+ *bufferoffset+=datalen+2;
break;
- case 0xda:
+ case 0xda: /* SOS */
if(no==0){
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
- *bufferoffset+=strip[i+2]+2;
- i+=strip[i+2]+2;
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
+ *bufferoffset+=datalen+2;
} else {
buffer[(*bufferoffset)++]=0xff;
buffer[(*bufferoffset)++]=
(unsigned char)(0xd0 | ((no-1)%8));
- i+=strip[i+2]+2;
}
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), (*striplength)-i-1);
- *bufferoffset+=(*striplength)-i-1;
+ i += datalen + 1;
+ /* copy remainder of strip */
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i]), *striplength - i);
+ *bufferoffset+= *striplength - i;
return(1);
default:
- i+=strip[i+2]+2;
+ /* ignore any other marker */
+ break;
}
+ i += datalen + 1;
}
-
+ /* failed to find SOS marker */
return(0);
}
#endif

View File

@ -1,770 +0,0 @@
Copied from Debian
Index: tiff-4.0.3/contrib/dbs/xtiff/xtiff.c
===================================================================
--- tiff-4.0.3.orig/contrib/dbs/xtiff/xtiff.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/contrib/dbs/xtiff/xtiff.c 2013-06-23 10:36:51.147629484 -0400
@@ -512,9 +512,9 @@
Arg args[1];
if (tfMultiPage)
- sprintf(buffer, "%s - page %d", fileName, tfDirectory);
+ snprintf(buffer, sizeof(buffer), "%s - page %d", fileName, tfDirectory);
else
- strcpy(buffer, fileName);
+ snprintf(buffer, sizeof(buffer), "%s", fileName);
XtSetArg(args[0], XtNlabel, buffer);
XtSetValues(labelWidget, args, 1);
}
Index: tiff-4.0.3/libtiff/tif_dirinfo.c
===================================================================
--- tiff-4.0.3.orig/libtiff/tif_dirinfo.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/libtiff/tif_dirinfo.c 2013-06-23 10:36:51.147629484 -0400
@@ -711,7 +711,7 @@
* note that this name is a special sign to TIFFClose() and
* _TIFFSetupFields() to free the field
*/
- sprintf(fld->field_name, "Tag %d", (int) tag);
+ snprintf(fld->field_name, 32, "Tag %d", (int) tag);
return fld;
}
Index: tiff-4.0.3/libtiff/tif_codec.c
===================================================================
--- tiff-4.0.3.orig/libtiff/tif_codec.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/libtiff/tif_codec.c 2013-06-23 10:36:51.151629482 -0400
@@ -108,7 +108,8 @@
const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
char compression_code[20];
- sprintf( compression_code, "%d", tif->tif_dir.td_compression );
+ snprintf(compression_code, sizeof(compression_code), "%d",
+ tif->tif_dir.td_compression );
TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
"%s compression support is not configured",
c ? c->name : compression_code );
Index: tiff-4.0.3/tools/tiffdither.c
===================================================================
--- tiff-4.0.3.orig/tools/tiffdither.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/tools/tiffdither.c 2013-06-23 10:36:51.151629482 -0400
@@ -260,7 +260,7 @@
TIFFSetField(out, TIFFTAG_FILLORDER, fillorder);
else
CopyField(TIFFTAG_FILLORDER, shortv);
- sprintf(thing, "Dithered B&W version of %s", argv[optind]);
+ snprintf(thing, sizeof(thing), "Dithered B&W version of %s", argv[optind]);
TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
CopyField(TIFFTAG_PHOTOMETRIC, shortv);
CopyField(TIFFTAG_ORIENTATION, shortv);
Index: tiff-4.0.3/tools/rgb2ycbcr.c
===================================================================
--- tiff-4.0.3.orig/tools/rgb2ycbcr.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/tools/rgb2ycbcr.c 2013-06-23 10:36:51.151629482 -0400
@@ -332,7 +332,8 @@
TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
{ char buf[2048];
char *cp = strrchr(TIFFFileName(in), '/');
- sprintf(buf, "YCbCr conversion of %s", cp ? cp+1 : TIFFFileName(in));
+ snprintf(buf, sizeof(buf), "YCbCr conversion of %s",
+ cp ? cp+1 : TIFFFileName(in));
TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, buf);
}
TIFFSetField(out, TIFFTAG_SOFTWARE, TIFFGetVersion());
Index: tiff-4.0.3/tools/tiff2pdf.c
===================================================================
--- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/tools/tiff2pdf.c 2013-06-23 10:36:51.151629482 -0400
@@ -3630,7 +3630,9 @@
char buffer[16];
int buflen=0;
- buflen=sprintf(buffer, "%%PDF-%u.%u ", t2p->pdf_majorversion&0xff, t2p->pdf_minorversion&0xff);
+ buflen = snprintf(buffer, sizeof(buffer), "%%PDF-%u.%u ",
+ t2p->pdf_majorversion&0xff,
+ t2p->pdf_minorversion&0xff);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t)"\n%\342\343\317\323\n", 7);
@@ -3644,10 +3646,10 @@
tsize_t t2p_write_pdf_obj_start(uint32 number, TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
- buflen=sprintf(buffer, "%lu", (unsigned long)number);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
written += t2pWriteFile(output, (tdata_t) buffer, buflen );
written += t2pWriteFile(output, (tdata_t) " 0 obj\n", 7);
@@ -3686,13 +3688,13 @@
written += t2pWriteFile(output, (tdata_t) "/", 1);
for (i=0;i<namelen;i++){
if ( ((unsigned char)name[i]) < 0x21){
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
nextchar=1;
}
if ( ((unsigned char)name[i]) > 0x7E){
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
nextchar=1;
@@ -3700,57 +3702,57 @@
if (nextchar==0){
switch (name[i]){
case 0x23:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x25:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x28:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x29:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x2F:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x3C:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x3E:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x5B:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x5D:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x7B:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
case 0x7D:
- sprintf(buffer, "#%.2X", name[i]);
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
buffer[sizeof(buffer) - 1] = '\0';
written += t2pWriteFile(output, (tdata_t) buffer, 3);
break;
@@ -3865,14 +3867,14 @@
tsize_t t2p_write_pdf_stream_dict(tsize_t len, uint32 number, TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
written += t2pWriteFile(output, (tdata_t) "/Length ", 8);
if(len!=0){
written += t2p_write_pdf_stream_length(len, output);
} else {
- buflen=sprintf(buffer, "%lu", (unsigned long)number);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
}
@@ -3913,10 +3915,10 @@
tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
- buflen=sprintf(buffer, "%lu", (unsigned long)len);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)len);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "\n", 1);
@@ -3930,7 +3932,7 @@
tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output)
{
tsize_t written = 0;
- char buffer[16];
+ char buffer[32];
int buflen = 0;
written += t2pWriteFile(output,
@@ -3969,7 +3971,6 @@
written += t2p_write_pdf_string(t2p->pdf_datetime, output);
}
written += t2pWriteFile(output, (tdata_t) "\n/Producer ", 11);
- _TIFFmemset((tdata_t)buffer, 0x00, sizeof(buffer));
snprintf(buffer, sizeof(buffer), "libtiff / tiff2pdf - %d", TIFFLIB_VERSION);
written += t2p_write_pdf_string(buffer, output);
written += t2pWriteFile(output, (tdata_t) "\n", 1);
@@ -4110,7 +4111,7 @@
{
tsize_t written=0;
tdir_t i=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
int page=0;
@@ -4118,7 +4119,7 @@
(tdata_t) "<< \n/Type /Pages \n/Kids [ ", 26);
page = t2p->pdf_pages+1;
for (i=0;i<t2p->tiff_pagecount;i++){
- buflen=sprintf(buffer, "%d", page);
+ buflen=snprintf(buffer, sizeof(buffer), "%d", page);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
if ( ((i+1)%8)==0 ) {
@@ -4133,8 +4134,7 @@
}
}
written += t2pWriteFile(output, (tdata_t) "] \n/Count ", 10);
- _TIFFmemset(buffer, 0x00, 16);
- buflen=sprintf(buffer, "%d", t2p->tiff_pagecount);
+ buflen=snprintf(buffer, sizeof(buffer), "%d", t2p->tiff_pagecount);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " \n>> \n", 6);
@@ -4149,28 +4149,28 @@
unsigned int i=0;
tsize_t written=0;
- char buffer[16];
+ char buffer[256];
int buflen=0;
written += t2pWriteFile(output, (tdata_t) "<<\n/Type /Page \n/Parent ", 24);
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_pages);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_pages);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
written += t2pWriteFile(output, (tdata_t) "/MediaBox [", 11);
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x1);
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x1);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " ", 1);
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y1);
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y1);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " ", 1);
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x2);
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x2);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " ", 1);
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y2);
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y2);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "] \n", 3);
written += t2pWriteFile(output, (tdata_t) "/Contents ", 10);
- buflen=sprintf(buffer, "%lu", (unsigned long)(object + 1));
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(object + 1));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
written += t2pWriteFile(output, (tdata_t) "/Resources << \n", 15);
@@ -4178,15 +4178,13 @@
written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount;i++){
written += t2pWriteFile(output, (tdata_t) "/Im", 3);
- buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
+ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "_", 1);
- buflen = sprintf(buffer, "%u", i+1);
+ buflen = snprintf(buffer, sizeof(buffer), "%u", i+1);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " ", 1);
- buflen = sprintf(
- buffer,
- "%lu",
+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
@@ -4198,12 +4196,10 @@
} else {
written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
written += t2pWriteFile(output, (tdata_t) "/Im", 3);
- buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
+ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " ", 1);
- buflen = sprintf(
- buffer,
- "%lu",
+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
@@ -4212,9 +4208,7 @@
if(t2p->tiff_transferfunctioncount != 0) {
written += t2pWriteFile(output, (tdata_t) "/ExtGState <<", 13);
t2pWriteFile(output, (tdata_t) "/GS1 ", 5);
- buflen = sprintf(
- buffer,
- "%lu",
+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)(object + 3));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
@@ -4587,7 +4581,7 @@
if(t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount>0){
for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount; i++){
box=t2p->tiff_tiles[t2p->pdf_page].tiles_tiles[i].tile_box;
- buflen=sprintf(buffer,
+ buflen=snprintf(buffer, sizeof(buffer),
"q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d_%ld Do Q\n",
t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
box.mat[0],
@@ -4602,7 +4596,7 @@
}
} else {
box=t2p->pdf_imagebox;
- buflen=sprintf(buffer,
+ buflen=snprintf(buffer, sizeof(buffer),
"q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d Do Q\n",
t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
box.mat[0],
@@ -4627,59 +4621,48 @@
TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
written += t2p_write_pdf_stream_dict(0, t2p->pdf_xrefcount+1, output);
written += t2pWriteFile(output,
(tdata_t) "/Type /XObject \n/Subtype /Image \n/Name /Im",
42);
- buflen=sprintf(buffer, "%u", t2p->pdf_page+1);
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
if(tile != 0){
written += t2pWriteFile(output, (tdata_t) "_", 1);
- buflen=sprintf(buffer, "%lu", (unsigned long)tile);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)tile);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
}
written += t2pWriteFile(output, (tdata_t) "\n/Width ", 8);
- _TIFFmemset((tdata_t)buffer, 0x00, 16);
if(tile==0){
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_width);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_width);
} else {
if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
} else {
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
}
}
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "\n/Height ", 9);
- _TIFFmemset((tdata_t)buffer, 0x00, 16);
if(tile==0){
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_length);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_length);
} else {
if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
} else {
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
}
}
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "\n/BitsPerComponent ", 19);
- _TIFFmemset((tdata_t)buffer, 0x00, 16);
- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "\n/ColorSpace ", 13);
written += t2p_write_pdf_xobject_cs(t2p, output);
@@ -4723,11 +4706,10 @@
t2p->pdf_colorspace ^= T2P_CS_PALETTE;
written += t2p_write_pdf_xobject_cs(t2p, output);
t2p->pdf_colorspace |= T2P_CS_PALETTE;
- buflen=sprintf(buffer, "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
+ buflen=snprintf(buffer, sizeof(buffer), "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " ", 1);
- _TIFFmemset(buffer, 0x00, 16);
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_palettecs );
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_palettecs );
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ]\n", 7);
return(written);
@@ -4761,10 +4743,10 @@
X_W /= Y_W;
Z_W /= Y_W;
Y_W = 1.0F;
- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "/Range ", 7);
- buflen=sprintf(buffer, "[%d %d %d %d] \n",
+ buflen=snprintf(buffer, sizeof(buffer), "[%d %d %d %d] \n",
t2p->pdf_labrange[0],
t2p->pdf_labrange[1],
t2p->pdf_labrange[2],
@@ -4780,26 +4762,26 @@
tsize_t t2p_write_pdf_transfer(T2P* t2p, TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
written += t2pWriteFile(output, (tdata_t) "<< /Type /ExtGState \n/TR ", 25);
if(t2p->tiff_transferfunctioncount == 1){
- buflen=sprintf(buffer, "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)(t2p->pdf_xrefcount + 1));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
} else {
written += t2pWriteFile(output, (tdata_t) "[ ", 2);
- buflen=sprintf(buffer, "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)(t2p->pdf_xrefcount + 1));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
- buflen=sprintf(buffer, "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)(t2p->pdf_xrefcount + 2));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
- buflen=sprintf(buffer, "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)(t2p->pdf_xrefcount + 3));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
@@ -4821,7 +4803,7 @@
written += t2pWriteFile(output, (tdata_t) "/FunctionType 0 \n", 17);
written += t2pWriteFile(output, (tdata_t) "/Domain [0.0 1.0] \n", 19);
written += t2pWriteFile(output, (tdata_t) "/Range [0.0 1.0] \n", 18);
- buflen=sprintf(buffer, "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
+ buflen=snprintf(buffer, sizeof(buffer), "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "/BitsPerSample 16 \n", 19);
written += t2p_write_pdf_stream_dict(((tsize_t)1)<<(t2p->tiff_bitspersample+1), 0, output);
@@ -4848,7 +4830,7 @@
tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
tsize_t written=0;
- char buffer[128];
+ char buffer[256];
int buflen=0;
float X_W=0.0;
@@ -4916,16 +4898,16 @@
written += t2pWriteFile(output, (tdata_t) "<< \n", 4);
if(t2p->pdf_colorspace & T2P_CS_CALGRAY){
written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "/Gamma 2.2 \n", 12);
}
if(t2p->pdf_colorspace & T2P_CS_CALRGB){
written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "/Matrix ", 8);
- buflen=sprintf(buffer, "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
X_R, Y_R, Z_R,
X_G, Y_G, Z_G,
X_B, Y_B, Z_B);
@@ -4944,11 +4926,11 @@
tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
written += t2pWriteFile(output, (tdata_t) "[/ICCBased ", 11);
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_icccs);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_icccs);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " 0 R] \n", 7);
@@ -4958,11 +4940,11 @@
tsize_t t2p_write_pdf_xobject_icccs_dict(T2P* t2p, TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
written += t2pWriteFile(output, (tdata_t) "/N ", 3);
- buflen=sprintf(buffer, "%u \n", t2p->tiff_samplesperpixel);
+ buflen=snprintf(buffer, sizeof(buffer), "%u \n", t2p->tiff_samplesperpixel);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) "/Alternate ", 11);
t2p->pdf_colorspace ^= T2P_CS_ICCBASED;
@@ -5027,7 +5009,7 @@
tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output){
tsize_t written=0;
- char buffer[16];
+ char buffer[32];
int buflen=0;
if(t2p->pdf_compression==T2P_COMPRESS_NONE){
@@ -5042,41 +5024,33 @@
written += t2pWriteFile(output, (tdata_t) "<< /K -1 ", 9);
if(tile==0){
written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
- buflen=sprintf(buffer, "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_width);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
- buflen=sprintf(buffer, "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_length);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
} else {
if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
} else {
written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
}
if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
} else {
written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
- buflen=sprintf(
- buffer,
- "%lu",
+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
}
@@ -5103,21 +5077,17 @@
if(t2p->pdf_compressionquality%100){
written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
written += t2pWriteFile(output, (tdata_t) "<< /Predictor ", 14);
- _TIFFmemset(buffer, 0x00, 16);
- buflen=sprintf(buffer, "%u", t2p->pdf_compressionquality%100);
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_compressionquality%100);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " /Columns ", 10);
- _TIFFmemset(buffer, 0x00, 16);
- buflen = sprintf(buffer, "%lu",
+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
(unsigned long)t2p->tiff_width);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " /Colors ", 9);
- _TIFFmemset(buffer, 0x00, 16);
- buflen=sprintf(buffer, "%u", t2p->tiff_samplesperpixel);
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_samplesperpixel);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " /BitsPerComponent ", 19);
- _TIFFmemset(buffer, 0x00, 16);
- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
}
@@ -5137,16 +5107,16 @@
tsize_t t2p_write_pdf_xreftable(T2P* t2p, TIFF* output){
tsize_t written=0;
- char buffer[21];
+ char buffer[64];
int buflen=0;
uint32 i=0;
written += t2pWriteFile(output, (tdata_t) "xref\n0 ", 7);
- buflen=sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
written += t2pWriteFile(output, (tdata_t) " \n0000000000 65535 f \n", 22);
for (i=0;i<t2p->pdf_xrefcount;i++){
- sprintf(buffer, "%.10lu 00000 n \n",
+ snprintf(buffer, sizeof(buffer), "%.10lu 00000 n \n",
(unsigned long)t2p->pdf_xrefoffsets[i]);
written += t2pWriteFile(output, (tdata_t) buffer, 20);
}
@@ -5170,17 +5140,14 @@
snprintf(t2p->pdf_fileid + i, 9, "%.8X", rand());
written += t2pWriteFile(output, (tdata_t) "trailer\n<<\n/Size ", 17);
- buflen = sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
+ buflen = snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- _TIFFmemset(buffer, 0x00, 32);
written += t2pWriteFile(output, (tdata_t) "\n/Root ", 7);
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_catalog);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_catalog);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- _TIFFmemset(buffer, 0x00, 32);
written += t2pWriteFile(output, (tdata_t) " 0 R \n/Info ", 12);
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_info);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_info);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- _TIFFmemset(buffer, 0x00, 32);
written += t2pWriteFile(output, (tdata_t) " 0 R \n/ID[<", 11);
written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
sizeof(t2p->pdf_fileid) - 1);
@@ -5188,9 +5155,8 @@
written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
sizeof(t2p->pdf_fileid) - 1);
written += t2pWriteFile(output, (tdata_t) ">]\n>>\nstartxref\n", 16);
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_startxref);
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_startxref);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- _TIFFmemset(buffer, 0x00, 32);
written += t2pWriteFile(output, (tdata_t) "\n%%EOF\n", 7);
return(written);
Index: tiff-4.0.3/tools/tiff2ps.c
===================================================================
--- tiff-4.0.3.orig/tools/tiff2ps.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/tools/tiff2ps.c 2013-06-23 10:36:51.155629481 -0400
@@ -1781,8 +1781,8 @@
imageOp = "imagemask";
(void)strcpy(im_x, "0");
- (void)sprintf(im_y, "%lu", (long) h);
- (void)sprintf(im_h, "%lu", (long) h);
+ (void)snprintf(im_y, sizeof(im_y), "%lu", (long) h);
+ (void)snprintf(im_h, sizeof(im_h), "%lu", (long) h);
tile_width = w;
tile_height = h;
if (TIFFIsTiled(tif)) {
@@ -1803,7 +1803,7 @@
}
if (tile_height < h) {
fputs("/im_y 0 def\n", fd);
- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
+ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
}
} else {
repeat_count = tf_numberstrips;
@@ -1815,7 +1815,7 @@
fprintf(fd, "/im_h %lu def\n",
(unsigned long) tile_height);
(void)strcpy(im_h, "im_h");
- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
+ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
}
}
Index: tiff-4.0.3/tools/tiffcrop.c
===================================================================
--- tiff-4.0.3.orig/tools/tiffcrop.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/tools/tiffcrop.c 2013-06-23 10:36:51.159629481 -0400
@@ -2077,7 +2077,7 @@
return 1;
}
- sprintf (filenum, "-%03d%s", findex, export_ext);
+ snprintf(filenum, sizeof(filenum), "-%03d%s", findex, export_ext);
filenum[14] = '\0';
strncat (exportname, filenum, 15);
}
@@ -2230,8 +2230,8 @@
/* dump.infilename is guaranteed to be NUL termimated and have 20 bytes
fewer than PATH_MAX */
- memset (temp_filename, '\0', PATH_MAX + 1);
- sprintf (temp_filename, "%s-read-%03d.%s", dump.infilename, dump_images,
+ snprintf(temp_filename, sizeof(temp_filename), "%s-read-%03d.%s",
+ dump.infilename, dump_images,
(dump.format == DUMP_TEXT) ? "txt" : "raw");
if ((dump.infile = fopen(temp_filename, dump.mode)) == NULL)
{
@@ -2249,8 +2249,8 @@
/* dump.outfilename is guaranteed to be NUL termimated and have 20 bytes
fewer than PATH_MAX */
- memset (temp_filename, '\0', PATH_MAX + 1);
- sprintf (temp_filename, "%s-write-%03d.%s", dump.outfilename, dump_images,
+ snprintf(temp_filename, sizeof(temp_filename), "%s-write-%03d.%s",
+ dump.outfilename, dump_images,
(dump.format == DUMP_TEXT) ? "txt" : "raw");
if ((dump.outfile = fopen(temp_filename, dump.mode)) == NULL)
{
Index: tiff-4.0.3/tools/tiff2bw.c
===================================================================
--- tiff-4.0.3.orig/tools/tiff2bw.c 2013-06-23 10:36:51.163629483 -0400
+++ tiff-4.0.3/tools/tiff2bw.c 2013-06-23 10:36:51.159629481 -0400
@@ -205,7 +205,7 @@
}
}
TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
- sprintf(thing, "B&W version of %s", argv[optind]);
+ snprintf(thing, sizeof(thing), "B&W version of %s", argv[optind]);
TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
TIFFSetField(out, TIFFTAG_SOFTWARE, "tiff2bw");
outbuf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));

View File

@ -1,19 +0,0 @@
Copied from Debian
Description: Buffer overflow in gif2tiff
Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2450
Bug-Debian: http://bugs.debian.org/719303
Index: tiff-4.0.3/tools/gif2tiff.c
===================================================================
--- tiff-4.0.3.orig/tools/gif2tiff.c 2013-08-22 11:46:11.960846910 -0400
+++ tiff-4.0.3/tools/gif2tiff.c 2013-08-22 11:46:11.956846910 -0400
@@ -333,6 +333,8 @@
int status = 1;
datasize = getc(infile);
+ if (datasize > 12)
+ return 0;
clear = 1 << datasize;
eoi = clear + 1;
avail = clear + 2;

View File

@ -1,20 +0,0 @@
Copied from Debian
Description: use after free in tiff2pdf
Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2449
Bug-Debian: http://bugs.debian.org/719303
Index: tiff-4.0.3/tools/tiff2pdf.c
===================================================================
--- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-08-22 11:46:37.292847242 -0400
+++ tiff-4.0.3/tools/tiff2pdf.c 2013-08-22 11:46:37.292847242 -0400
@@ -2461,7 +2461,8 @@
(unsigned long) t2p->tiff_datasize,
TIFFFileName(input));
t2p->t2p_error = T2P_ERR_ERROR;
- _TIFFfree(buffer);
+ _TIFFfree(buffer);
+ return(0);
} else {
buffer=samplebuffer;
t2p->tiff_datasize *= t2p->tiff_samplesperpixel;

View File

@ -1,39 +0,0 @@
Copied from Debian
Index: tiff/tools/gif2tiff.c
===================================================================
--- tiff.orig/tools/gif2tiff.c
+++ tiff/tools/gif2tiff.c
@@ -280,6 +280,10 @@ readgifimage(char* mode)
fprintf(stderr, "no colormap present for image\n");
return (0);
}
+ if (width == 0 || height == 0) {
+ fprintf(stderr, "Invalid value of width or height\n");
+ return(0);
+ }
if ((raster = (unsigned char*) _TIFFmalloc(width*height+EXTRAFUDGE)) == NULL) {
fprintf(stderr, "not enough memory for image\n");
return (0);
@@ -404,6 +408,10 @@ process(register int code, unsigned char
fprintf(stderr, "bad input: code=%d is larger than clear=%d\n",code, clear);
return 0;
}
+ if (*fill >= raster + width*height) {
+ fprintf(stderr, "raster full before eoi code\n");
+ return 0;
+ }
*(*fill)++ = suffix[code];
firstchar = oldcode = code;
return 1;
@@ -434,6 +442,10 @@ process(register int code, unsigned char
}
oldcode = incode;
do {
+ if (*fill >= raster + width*height) {
+ fprintf(stderr, "raster full before eoi code\n");
+ return 0;
+ }
*(*fill)++ = *--stackp;
} while (stackp > stack);
return 1;

View File

@ -1,20 +0,0 @@
Copied from Debian
Description: OOB write in gif2tiff
Bug-Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=996468
Index: tiff-4.0.3/tools/gif2tiff.c
===================================================================
--- tiff-4.0.3.orig/tools/gif2tiff.c 2013-08-24 11:17:13.546447901 -0400
+++ tiff-4.0.3/tools/gif2tiff.c 2013-08-24 11:17:13.546447901 -0400
@@ -400,6 +400,10 @@
}
if (oldcode == -1) {
+ if (code >= clear) {
+ fprintf(stderr, "bad input: code=%d is larger than clear=%d\n",code, clear);
+ return 0;
+ }
*(*fill)++ = suffix[code];
firstchar = oldcode = code;
return 1;

View File

@ -1,30 +0,0 @@
Copied from Debian
From 0782c759084daaf9e4de7ee6be7543081823455e Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Sun, 21 Dec 2014 20:58:29 +0000
Subject: [PATCH] * tools/tiff2bw.c: when Photometric=RGB, the utility only
works if SamplesPerPixel = 3. Enforce that
http://bugzilla.maptools.org/show_bug.cgi?id=2485 (CVE-2014-8127)
---
ChangeLog | 6 ++++++
tools/tiff2bw.c | 5 +++++
2 files changed, 11 insertions(+)
diff --git a/tools/tiff2bw.c b/tools/tiff2bw.c
index 22467cd..94b8e31 100644
--- a/tools/tiff2bw.c
+++ b/tools/tiff2bw.c
@@ -171,6 +171,11 @@ main(int argc, char* argv[])
argv[optind], samplesperpixel);
return (-1);
}
+ if( photometric == PHOTOMETRIC_RGB && samplesperpixel != 3) {
+ fprintf(stderr, "%s: Bad samples/pixel %u for PHOTOMETRIC_RGB.\n",
+ argv[optind], samplesperpixel);
+ return (-1);
+ }
TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bitspersample);
if (bitspersample != 8) {
fprintf(stderr,

View File

@ -1,42 +0,0 @@
Copied from Debian
From 3996fa0f84f4a8b7e65fe4b8f0681711022034ea Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Sun, 21 Dec 2014 20:04:31 +0000
Subject: [PATCH] * tools/pal2rgb.c, tools/thumbnail.c: fix crash by disabling
TIFFTAG_INKNAMES copying. The right fix would be to properly copy it, but not
worth the burden for those esoteric utilities.
http://bugzilla.maptools.org/show_bug.cgi?id=2484 (CVE-2014-8127)
---
ChangeLog | 7 +++++++
tools/pal2rgb.c | 2 +-
tools/thumbnail.c | 2 +-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/tools/pal2rgb.c b/tools/pal2rgb.c
index bfe7899..3fc3de3 100644
--- a/tools/pal2rgb.c
+++ b/tools/pal2rgb.c
@@ -372,7 +372,7 @@ static struct cpTag {
{ TIFFTAG_CLEANFAXDATA, 1, TIFF_SHORT },
{ TIFFTAG_CONSECUTIVEBADFAXLINES, 1, TIFF_LONG },
{ TIFFTAG_INKSET, 1, TIFF_SHORT },
- { TIFFTAG_INKNAMES, 1, TIFF_ASCII },
+ /*{ TIFFTAG_INKNAMES, 1, TIFF_ASCII },*/ /* Needs much more complicated logic. See tiffcp */
{ TIFFTAG_DOTRANGE, 2, TIFF_SHORT },
{ TIFFTAG_TARGETPRINTER, 1, TIFF_ASCII },
{ TIFFTAG_SAMPLEFORMAT, 1, TIFF_SHORT },
diff --git a/tools/thumbnail.c b/tools/thumbnail.c
index c50bbff..73f9c34 100644
--- a/tools/thumbnail.c
+++ b/tools/thumbnail.c
@@ -257,7 +257,7 @@ static struct cpTag {
{ TIFFTAG_CLEANFAXDATA, 1, TIFF_SHORT },
{ TIFFTAG_CONSECUTIVEBADFAXLINES, 1, TIFF_LONG },
{ TIFFTAG_INKSET, 1, TIFF_SHORT },
- { TIFFTAG_INKNAMES, 1, TIFF_ASCII },
+ /*{ TIFFTAG_INKNAMES, 1, TIFF_ASCII },*/ /* Needs much more complicated logic. See tiffcp */
{ TIFFTAG_DOTRANGE, 2, TIFF_SHORT },
{ TIFFTAG_TARGETPRINTER, 1, TIFF_ASCII },
{ TIFFTAG_SAMPLEFORMAT, 1, TIFF_SHORT },

View File

@ -1,45 +0,0 @@
Copied from Debian
From 1f7359b00663804d96c3a102bcb6ead9812c1509 Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Tue, 23 Dec 2014 10:15:35 +0000
Subject: [PATCH] * libtiff/tif_read.c: fix several invalid comparisons of a
uint64 value with <= 0 by casting it to int64 first. This solves crashing bug
on corrupted images generated by afl.
---
ChangeLog | 6 ++++++
libtiff/tif_read.c | 6 +++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/libtiff/tif_read.c b/libtiff/tif_read.c
index 2ba822a..dfc5b07 100644
--- a/libtiff/tif_read.c
+++ b/libtiff/tif_read.c
@@ -458,7 +458,7 @@ TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size)
return ((tmsize_t)(-1));
}
bytecount = td->td_stripbytecount[strip];
- if (bytecount <= 0) {
+ if ((int64)bytecount <= 0) {
#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
TIFFErrorExt(tif->tif_clientdata, module,
"%I64u: Invalid strip byte count, strip %lu",
@@ -498,7 +498,7 @@ TIFFFillStrip(TIFF* tif, uint32 strip)
if ((tif->tif_flags&TIFF_NOREADRAW)==0)
{
uint64 bytecount = td->td_stripbytecount[strip];
- if (bytecount <= 0) {
+ if ((int64)bytecount <= 0) {
#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
TIFFErrorExt(tif->tif_clientdata, module,
"Invalid strip byte count %I64u, strip %lu",
@@ -801,7 +801,7 @@ TIFFFillTile(TIFF* tif, uint32 tile)
if ((tif->tif_flags&TIFF_NOREADRAW)==0)
{
uint64 bytecount = td->td_stripbytecount[tile];
- if (bytecount <= 0) {
+ if ((int64)bytecount <= 0) {
#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
TIFFErrorExt(tif->tif_clientdata, module,
"%I64u: Invalid tile byte count, tile %lu",

View File

@ -1,295 +0,0 @@
Copied from Debian
From 662f74445b2fea2eeb759c6524661118aef567ca Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Sun, 21 Dec 2014 15:15:31 +0000
Subject: [PATCH] Fix various crasher bugs on fuzzed images. *
libtiff/tif_dir.c: TIFFSetField(): refuse to set negative values for
TIFFTAG_XRESOLUTION and TIFFTAG_YRESOLUTION that cause asserts when writing
the directory * libtiff/tif_dirread.c: TIFFReadDirectory(): refuse to read
ColorMap or TransferFunction if BitsPerSample has not yet been read,
otherwise reading it later will cause user code to crash if BitsPerSample > 1
* libtiff/tif_getimage.c: TIFFRGBAImageOK(): return FALSE if LOGLUV with
SamplesPerPixel != 3, or if CIELAB with SamplesPerPixel != 3 or BitsPerSample
!= 8 * libtiff/tif_next.c: in the "run mode", use tilewidth for tiled images
instead of imagewidth to avoid crash * tools/bmp2tiff.c: fix crash due to int
overflow related to input BMP dimensions * tools/tiff2pdf.c: fix crash due to
invalid tile count (should likely be checked by libtiff too). Detect invalid
settings of BitsPerSample/SamplesPerPixel for CIELAB / ITULAB *
tools/tiffcrop.c: fix crash due to invalid TileWidth/TileHeight *
tools/tiffdump.c: fix crash due to overflow of entry count.
---
ChangeLog | 19 +++++++++++++++++++
libtiff/tif_dir.c | 21 +++++++++++++++++++--
libtiff/tif_dirread.c | 17 +++++++++++++++++
libtiff/tif_getimage.c | 15 +++++++++++++++
libtiff/tif_next.c | 2 ++
tools/bmp2tiff.c | 15 +++++++++++++++
tools/tiff2pdf.c | 41 +++++++++++++++++++++++++++++++++++++++++
tools/tiffcrop.c | 7 ++++---
tools/tiffdump.c | 9 ++++++---
9 files changed, 138 insertions(+), 8 deletions(-)
diff --git a/libtiff/tif_dir.c b/libtiff/tif_dir.c
index 98cf66d..ab43a28 100644
--- a/libtiff/tif_dir.c
+++ b/libtiff/tif_dir.c
@@ -160,6 +160,7 @@ _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
TIFFDirectory* td = &tif->tif_dir;
int status = 1;
uint32 v32, i, v;
+ double dblval;
char* s;
const TIFFField *fip = TIFFFindField(tif, tag, TIFF_ANY);
uint32 standard_tag = tag;
@@ -284,10 +285,16 @@ _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
setDoubleArrayOneValue(&td->td_smaxsamplevalue, va_arg(ap, double), td->td_samplesperpixel);
break;
case TIFFTAG_XRESOLUTION:
- td->td_xresolution = (float) va_arg(ap, double);
+ dblval = va_arg(ap, double);
+ if( dblval < 0 )
+ goto badvaluedouble;
+ td->td_xresolution = (float) dblval;
break;
case TIFFTAG_YRESOLUTION:
- td->td_yresolution = (float) va_arg(ap, double);
+ dblval = va_arg(ap, double);
+ if( dblval < 0 )
+ goto badvaluedouble;
+ td->td_yresolution = (float) dblval;
break;
case TIFFTAG_PLANARCONFIG:
v = (uint16) va_arg(ap, uint16_vap);
@@ -694,6 +701,16 @@ _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
va_end(ap);
}
return (0);
+badvaluedouble:
+ {
+ const TIFFField* fip=TIFFFieldWithTag(tif,tag);
+ TIFFErrorExt(tif->tif_clientdata, module,
+ "%s: Bad value %f for \"%s\" tag",
+ tif->tif_name, dblval,
+ fip ? fip->field_name : "Unknown");
+ va_end(ap);
+ }
+ return (0);
}
/*
diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c
index 391c823..f66c9a7 100644
--- a/libtiff/tif_dirread.c
+++ b/libtiff/tif_dirread.c
@@ -3430,6 +3430,8 @@ TIFFReadDirectory(TIFF* tif)
const TIFFField* fip;
uint32 fii=FAILED_FII;
toff_t nextdiroff;
+ int bitspersample_read = FALSE;
+
tif->tif_diroff=tif->tif_nextdiroff;
if (!TIFFCheckDirOffset(tif,tif->tif_nextdiroff))
return 0; /* last offset or bad offset (IFD looping) */
@@ -3706,6 +3708,8 @@ TIFFReadDirectory(TIFF* tif)
}
if (!TIFFSetField(tif,dp->tdir_tag,value))
goto bad;
+ if( dp->tdir_tag == TIFFTAG_BITSPERSAMPLE )
+ bitspersample_read = TRUE;
}
break;
case TIFFTAG_SMINSAMPLEVALUE:
@@ -3763,6 +3767,19 @@ TIFFReadDirectory(TIFF* tif)
uint32 countrequired;
uint32 incrementpersample;
uint16* value=NULL;
+ /* It would be dangerous to instanciate those tag values */
+ /* since if td_bitspersample has not yet been read (due to */
+ /* unordered tags), it could be read afterwards with a */
+ /* values greater than the default one (1), which may cause */
+ /* crashes in user code */
+ if( !bitspersample_read )
+ {
+ fip = TIFFFieldWithTag(tif,dp->tdir_tag);
+ TIFFWarningExt(tif->tif_clientdata,module,
+ "Ignoring %s since BitsPerSample tag not found",
+ fip ? fip->field_name : "unknown tagname");
+ continue;
+ }
countpersample=(1L<<tif->tif_dir.td_bitspersample);
if ((dp->tdir_tag==TIFFTAG_TRANSFERFUNCTION)&&(dp->tdir_count==(uint64)countpersample))
{
diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c
index 074d32a..396ad08 100644
--- a/libtiff/tif_getimage.c
+++ b/libtiff/tif_getimage.c
@@ -182,8 +182,23 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
"Planarconfiguration", td->td_planarconfig);
return (0);
}
+ if( td->td_samplesperpixel != 3 )
+ {
+ sprintf(emsg,
+ "Sorry, can not handle image with %s=%d",
+ "Samples/pixel", td->td_samplesperpixel);
+ return 0;
+ }
break;
case PHOTOMETRIC_CIELAB:
+ if( td->td_samplesperpixel != 3 || td->td_bitspersample != 8 )
+ {
+ sprintf(emsg,
+ "Sorry, can not handle image with %s=%d and %s=%d",
+ "Samples/pixel", td->td_samplesperpixel,
+ "Bits/sample", td->td_bitspersample);
+ return 0;
+ }
break;
default:
sprintf(emsg, "Sorry, can not handle image with %s=%d",
diff --git a/libtiff/tif_next.c b/libtiff/tif_next.c
index 55e2537..a53c716 100644
--- a/libtiff/tif_next.c
+++ b/libtiff/tif_next.c
@@ -102,6 +102,8 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
default: {
uint32 npixels = 0, grey;
uint32 imagewidth = tif->tif_dir.td_imagewidth;
+ if( isTiled(tif) )
+ imagewidth = tif->tif_dir.td_tilewidth;
/*
* The scanline is composed of a sequence of constant
diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c
index dfda963..f202b41 100644
--- a/tools/tiff2pdf.c
+++ b/tools/tiff2pdf.c
@@ -1167,6 +1167,15 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){
if( (TIFFGetField(input, TIFFTAG_PLANARCONFIG, &xuint16) != 0)
&& (xuint16 == PLANARCONFIG_SEPARATE ) ){
TIFFGetField(input, TIFFTAG_SAMPLESPERPIXEL, &xuint16);
+ if( (t2p->tiff_tiles[i].tiles_tilecount % xuint16) != 0 )
+ {
+ TIFFError(
+ TIFF2PDF_MODULE,
+ "Invalid tile count, %s",
+ TIFFFileName(input));
+ t2p->t2p_error = T2P_ERR_ERROR;
+ return;
+ }
t2p->tiff_tiles[i].tiles_tilecount/= xuint16;
}
if( t2p->tiff_tiles[i].tiles_tilecount > 0){
@@ -1552,6 +1561,22 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
#endif
break;
case PHOTOMETRIC_CIELAB:
+ if( t2p->tiff_samplesperpixel != 3){
+ TIFFError(
+ TIFF2PDF_MODULE,
+ "Unsupported samplesperpixel = %d for CIELAB",
+ t2p->tiff_samplesperpixel);
+ t2p->t2p_error = T2P_ERR_ERROR;
+ return;
+ }
+ if( t2p->tiff_bitspersample != 8){
+ TIFFError(
+ TIFF2PDF_MODULE,
+ "Invalid bitspersample = %d for CIELAB",
+ t2p->tiff_bitspersample);
+ t2p->t2p_error = T2P_ERR_ERROR;
+ return;
+ }
t2p->pdf_labrange[0]= -127;
t2p->pdf_labrange[1]= 127;
t2p->pdf_labrange[2]= -127;
@@ -1567,6 +1592,22 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
t2p->pdf_colorspace=T2P_CS_LAB;
break;
case PHOTOMETRIC_ITULAB:
+ if( t2p->tiff_samplesperpixel != 3){
+ TIFFError(
+ TIFF2PDF_MODULE,
+ "Unsupported samplesperpixel = %d for ITULAB",
+ t2p->tiff_samplesperpixel);
+ t2p->t2p_error = T2P_ERR_ERROR;
+ return;
+ }
+ if( t2p->tiff_bitspersample != 8){
+ TIFFError(
+ TIFF2PDF_MODULE,
+ "Invalid bitspersample = %d for ITULAB",
+ t2p->tiff_bitspersample);
+ t2p->t2p_error = T2P_ERR_ERROR;
+ return;
+ }
t2p->pdf_labrange[0]=-85;
t2p->pdf_labrange[1]=85;
t2p->pdf_labrange[2]=-75;
diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
index f5530bb..4088463 100644
--- a/tools/tiffcrop.c
+++ b/tools/tiffcrop.c
@@ -1205,9 +1205,10 @@ static int writeBufferToContigTiles (TIFF* out, uint8* buf, uint32 imagelength,
tsize_t tilesize = TIFFTileSize(out);
unsigned char *tilebuf = NULL;
- TIFFGetField(out, TIFFTAG_TILELENGTH, &tl);
- TIFFGetField(out, TIFFTAG_TILEWIDTH, &tw);
- TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
+ if( !TIFFGetField(out, TIFFTAG_TILELENGTH, &tl) ||
+ !TIFFGetField(out, TIFFTAG_TILEWIDTH, &tw) ||
+ !TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps) )
+ return 1;
tile_buffsize = tilesize;
if (tilesize < (tsize_t)(tl * tile_rowsize))
diff --git a/tools/tiffdump.c b/tools/tiffdump.c
index cf5d62f..8247765 100644
--- a/tools/tiffdump.c
+++ b/tools/tiffdump.c
@@ -374,6 +374,8 @@ ReadDirectory(int fd, unsigned int ix, uint64 off)
void* datamem;
uint64 dataoffset;
int datatruncated;
+ int datasizeoverflow;
+
tag = *(uint16*)dp;
if (swabflag)
TIFFSwabShort(&tag);
@@ -412,13 +414,14 @@ ReadDirectory(int fd, unsigned int ix, uint64 off)
else
typewidth = datawidth[type];
datasize = count*typewidth;
+ datasizeoverflow = (typewidth > 0 && datasize / typewidth != count);
datafits = 1;
datamem = dp;
dataoffset = 0;
datatruncated = 0;
if (!bigtiff)
{
- if (datasize>4)
+ if (datasizeoverflow || datasize>4)
{
uint32 dataoffset32;
datafits = 0;
@@ -432,7 +435,7 @@ ReadDirectory(int fd, unsigned int ix, uint64 off)
}
else
{
- if (datasize>8)
+ if (datasizeoverflow || datasize>8)
{
datafits = 0;
datamem = NULL;
@@ -442,7 +445,7 @@ ReadDirectory(int fd, unsigned int ix, uint64 off)
}
dp += sizeof(uint64);
}
- if (datasize>0x10000)
+ if (datasizeoverflow || datasize>0x10000)
{
datatruncated = 1;
count = 0x10000/typewidth;

View File

@ -1,32 +0,0 @@
Copied from Debian
From 3206e0c752a62da1ae606867113ed3bf9bf73306 Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Sun, 21 Dec 2014 19:53:59 +0000
Subject: [PATCH] * tools/thumbnail.c: fix out-of-buffer write
http://bugzilla.maptools.org/show_bug.cgi?id=2489 (CVE-2014-8128)
---
ChangeLog | 5 +++++
tools/thumbnail.c | 8 +++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/tools/thumbnail.c b/tools/thumbnail.c
index fab63f6..c50bbff 100644
--- a/tools/thumbnail.c
+++ b/tools/thumbnail.c
@@ -568,7 +568,13 @@ setImage1(const uint8* br, uint32 rw, uint32 rh)
err -= limit;
sy++;
if (err >= limit)
- rows[nrows++] = br + bpr*sy;
+ {
+ /* We should perhaps error loudly, but I can't make sense of that */
+ /* code... */
+ if( nrows == 256 )
+ break;
+ rows[nrows++] = br + bpr*sy;
+ }
}
setrow(row, nrows, rows);
row += tnw;

View File

@ -1,83 +0,0 @@
Copied from Debian
From 8b6e80fca434525497e5a31c3309a3bab5b3c1c8 Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Sun, 21 Dec 2014 18:52:42 +0000
Subject: [PATCH] * tools/thumbnail.c, tools/tiffcmp.c: only read/write
TIFFTAG_GROUP3OPTIONS or TIFFTAG_GROUP4OPTIONS if compression is
COMPRESSION_CCITTFAX3 or COMPRESSION_CCITTFAX4
http://bugzilla.maptools.org/show_bug.cgi?id=2493 (CVE-2014-8128)
---
ChangeLog | 7 +++++++
tools/thumbnail.c | 21 ++++++++++++++++++++-
tools/tiffcmp.c | 17 +++++++++++++++--
3 files changed, 42 insertions(+), 3 deletions(-)
diff --git a/tools/thumbnail.c b/tools/thumbnail.c
index a98a881..fab63f6 100644
--- a/tools/thumbnail.c
+++ b/tools/thumbnail.c
@@ -274,7 +274,26 @@ cpTags(TIFF* in, TIFF* out)
{
struct cpTag *p;
for (p = tags; p < &tags[NTAGS]; p++)
- cpTag(in, out, p->tag, p->count, p->type);
+ {
+ /* Horrible: but TIFFGetField() expects 2 arguments to be passed */
+ /* if we request a tag that is defined in a codec, but that codec */
+ /* isn't used */
+ if( p->tag == TIFFTAG_GROUP3OPTIONS )
+ {
+ uint16 compression;
+ if( !TIFFGetField(in, TIFFTAG_COMPRESSION, &compression) ||
+ compression != COMPRESSION_CCITTFAX3 )
+ continue;
+ }
+ if( p->tag == TIFFTAG_GROUP4OPTIONS )
+ {
+ uint16 compression;
+ if( !TIFFGetField(in, TIFFTAG_COMPRESSION, &compression) ||
+ compression != COMPRESSION_CCITTFAX4 )
+ continue;
+ }
+ cpTag(in, out, p->tag, p->count, p->type);
+ }
}
#undef NTAGS
diff --git a/tools/tiffcmp.c b/tools/tiffcmp.c
index 508a461..d6392af 100644
--- a/tools/tiffcmp.c
+++ b/tools/tiffcmp.c
@@ -260,6 +260,7 @@ tiffcmp(TIFF* tif1, TIFF* tif2)
static int
cmptags(TIFF* tif1, TIFF* tif2)
{
+ uint16 compression1, compression2;
CmpLongField(TIFFTAG_SUBFILETYPE, "SubFileType");
CmpLongField(TIFFTAG_IMAGEWIDTH, "ImageWidth");
CmpLongField(TIFFTAG_IMAGELENGTH, "ImageLength");
@@ -276,8 +277,20 @@ cmptags(TIFF* tif1, TIFF* tif2)
CmpShortField(TIFFTAG_SAMPLEFORMAT, "SampleFormat");
CmpFloatField(TIFFTAG_XRESOLUTION, "XResolution");
CmpFloatField(TIFFTAG_YRESOLUTION, "YResolution");
- CmpLongField(TIFFTAG_GROUP3OPTIONS, "Group3Options");
- CmpLongField(TIFFTAG_GROUP4OPTIONS, "Group4Options");
+ if( TIFFGetField(tif1, TIFFTAG_COMPRESSION, &compression1) &&
+ compression1 == COMPRESSION_CCITTFAX3 &&
+ TIFFGetField(tif2, TIFFTAG_COMPRESSION, &compression2) &&
+ compression2 == COMPRESSION_CCITTFAX3 )
+ {
+ CmpLongField(TIFFTAG_GROUP3OPTIONS, "Group3Options");
+ }
+ if( TIFFGetField(tif1, TIFFTAG_COMPRESSION, &compression1) &&
+ compression1 == COMPRESSION_CCITTFAX4 &&
+ TIFFGetField(tif2, TIFFTAG_COMPRESSION, &compression2) &&
+ compression2 == COMPRESSION_CCITTFAX4 )
+ {
+ CmpLongField(TIFFTAG_GROUP4OPTIONS, "Group4Options");
+ }
CmpShortField(TIFFTAG_RESOLUTIONUNIT, "ResolutionUnit");
CmpShortField(TIFFTAG_PLANARCONFIG, "PlanarConfiguration");
CmpLongField(TIFFTAG_ROWSPERSTRIP, "RowsPerStrip");

View File

@ -1,34 +0,0 @@
Copied from Debian
From 266bc48054b018a2f1d74562aa48eb2f509436d5 Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Sun, 21 Dec 2014 17:36:36 +0000
Subject: [PATCH] * tools/tiff2pdf.c: check return code of TIFFGetField() when
reading TIFFTAG_SAMPLESPERPIXEL
---
ChangeLog | 5 +++++
tools/tiff2pdf.c | 10 +++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
Index: tiff-4.0.3/tools/tiff2pdf.c
===================================================================
--- tiff-4.0.3.orig/tools/tiff2pdf.c
+++ tiff-4.0.3/tools/tiff2pdf.c
@@ -1164,7 +1164,15 @@ void t2p_read_tiff_init(T2P* t2p, TIFF*
t2p->tiff_pages[i].page_tilecount;
if( (TIFFGetField(input, TIFFTAG_PLANARCONFIG, &xuint16) != 0)
&& (xuint16 == PLANARCONFIG_SEPARATE ) ){
- TIFFGetField(input, TIFFTAG_SAMPLESPERPIXEL, &xuint16);
+ if( !TIFFGetField(input, TIFFTAG_SAMPLESPERPIXEL, &xuint16) )
+ {
+ TIFFError(
+ TIFF2PDF_MODULE,
+ "Missing SamplesPerPixel, %s",
+ TIFFFileName(input));
+ t2p->t2p_error = T2P_ERR_ERROR;
+ return;
+ }
if( (t2p->tiff_tiles[i].tiles_tilecount % xuint16) != 0 )
{
TIFFError(

View File

@ -1,77 +0,0 @@
Copied from Debian
Picked from CVE: diff -u -r1.14 -r1.15
http://bugzilla.maptools.org/show_bug.cgi?id=2501
Author: Even Rouault <even.rouault@spatialys.com>
--- tiff-4.0.3.orig/tools/tiffdither.c
+++ tiff-4.0.3/tools/tiffdither.c
@@ -39,6 +39,7 @@
#endif
#include "tiffio.h"
+#include "tiffiop.h"
#define streq(a,b) (strcmp(a,b) == 0)
#define strneq(a,b,n) (strncmp(a,b,n) == 0)
@@ -56,7 +57,7 @@ static void usage(void);
* Floyd-Steinberg error propragation with threshold.
* This code is stolen from tiffmedian.
*/
-static void
+static int
fsdither(TIFF* in, TIFF* out)
{
unsigned char *outline, *inputline, *inptr;
@@ -68,14 +69,19 @@ fsdither(TIFF* in, TIFF* out)
int lastline, lastpixel;
int bit;
tsize_t outlinesize;
+ int errcode = 0;
imax = imagelength - 1;
jmax = imagewidth - 1;
inputline = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(in));
- thisline = (short *)_TIFFmalloc(imagewidth * sizeof (short));
- nextline = (short *)_TIFFmalloc(imagewidth * sizeof (short));
+ thisline = (short *)_TIFFmalloc(TIFFSafeMultiply(tmsize_t, imagewidth, sizeof (short)));
+ nextline = (short *)_TIFFmalloc(TIFFSafeMultiply(tmsize_t, imagewidth, sizeof (short)));
outlinesize = TIFFScanlineSize(out);
outline = (unsigned char *) _TIFFmalloc(outlinesize);
+ if (! (inputline && thisline && nextline && outline)) {
+ fprintf(stderr, "Out of memory.\n");
+ goto skip_on_error;
+ }
/*
* Get first line
@@ -93,7 +99,7 @@ fsdither(TIFF* in, TIFF* out)
nextline = tmpptr;
lastline = (i == imax);
if (TIFFReadScanline(in, inputline, i, 0) <= 0)
- break;
+ goto skip_on_error;
inptr = inputline;
nextptr = nextline;
for (j = 0; j < imagewidth; ++j)
@@ -131,13 +137,18 @@ fsdither(TIFF* in, TIFF* out)
}
}
if (TIFFWriteScanline(out, outline, i-1, 0) < 0)
- break;
+ goto skip_on_error;
}
+ goto exit_label;
+
skip_on_error:
+ errcode = 1;
+ exit_label:
_TIFFfree(inputline);
_TIFFfree(thisline);
_TIFFfree(nextline);
_TIFFfree(outline);
+ return errcode;
}
static uint16 compression = COMPRESSION_PACKBITS;

View File

@ -1,16 +0,0 @@
Copied from Debian
Patches by Petr Gajdos (pgajdos@suse.cz) from
http://bugzilla.maptools.org/show_bug.cgi?id=2499
--- tiff-4.0.3.orig/libtiff/tif_dirinfo.c
+++ tiff-4.0.3/libtiff/tif_dirinfo.c
@@ -141,6 +141,8 @@ tiffFields[] = {
{ TIFFTAG_FAXDCS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_ASCII, FIELD_CUSTOM, TRUE, FALSE, "FaxDcs", NULL },
{ TIFFTAG_STONITS, 1, 1, TIFF_DOUBLE, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "StoNits", NULL },
{ TIFFTAG_INTEROPERABILITYIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "InteroperabilityIFDOffset", NULL },
+ { TIFFTAG_CONSECUTIVEBADFAXLINES, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "ConsecutiveBadFaxLines", NULL },
+ { TIFFTAG_PREDICTOR, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UINT16, FIELD_CUSTOM, FALSE, FALSE, "Predictor", NULL },
/* begin DNG tags */
{ TIFFTAG_DNGVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DNGVersion", NULL },
{ TIFFTAG_DNGBACKWARDVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DNGBackwardVersion", NULL },

View File

@ -1,45 +0,0 @@
Copied from Debian
From cd82b5267ad4c10eb91e4ee8a716a81362cf851c Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Sun, 21 Dec 2014 18:07:48 +0000
Subject: [PATCH] * libtiff/tif_next.c: check that BitsPerSample = 2. Fixes
http://bugzilla.maptools.org/show_bug.cgi?id=2487 (CVE-2014-8129)
---
ChangeLog | 5 +++++
libtiff/tif_next.c | 17 +++++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/libtiff/tif_next.c b/libtiff/tif_next.c
index a53c716..d834196 100644
--- a/libtiff/tif_next.c
+++ b/libtiff/tif_next.c
@@ -141,10 +141,27 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
return (0);
}
+static int
+NeXTPreDecode(TIFF* tif, uint16 s)
+{
+ static const char module[] = "NeXTPreDecode";
+ TIFFDirectory *td = &tif->tif_dir;
+ (void)s;
+
+ if( td->td_bitspersample != 2 )
+ {
+ TIFFErrorExt(tif->tif_clientdata, module, "Unsupported BitsPerSample = %d",
+ td->td_bitspersample);
+ return (0);
+ }
+ return (1);
+}
+
int
TIFFInitNeXT(TIFF* tif, int scheme)
{
(void) scheme;
+ tif->tif_predecode = NeXTPreDecode;
tif->tif_decoderow = NeXTDecode;
tif->tif_decodestrip = NeXTDecode;
tif->tif_decodetile = NeXTDecode;

View File

@ -1,47 +0,0 @@
Copied from Debian
Description: CVE-2014-9330
Integer overflow in bmp2tiff
Origin: upstream, http://bugzilla.maptools.org/show_bug.cgi?id=2494
Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2494
Bug-Debian: http://bugs.debian.org/773987
Index: tiff/tools/bmp2tiff.c
===================================================================
--- tiff.orig/tools/bmp2tiff.c
+++ tiff/tools/bmp2tiff.c
@@ -1,4 +1,4 @@
-/* $Id: bmp2tiff.c,v 1.23 2010-03-10 18:56:49 bfriesen Exp $
+/* $Id: bmp2tiff.c,v 1.24 2014-12-21 15:15:32 erouault Exp $
*
* Project: libtiff tools
* Purpose: Convert Windows BMP files in TIFF.
@@ -403,6 +403,13 @@ main(int argc, char* argv[])
width = info_hdr.iWidth;
length = (info_hdr.iHeight > 0) ? info_hdr.iHeight : -info_hdr.iHeight;
+ if( width <= 0 || length <= 0 )
+ {
+ TIFFError(infilename,
+ "Invalid dimensions of BMP file" );
+ close(fd);
+ return -1;
+ }
switch (info_hdr.iBitCount)
{
@@ -593,6 +600,14 @@ main(int argc, char* argv[])
compr_size = file_hdr.iSize - file_hdr.iOffBits;
uncompr_size = width * length;
+ /* Detect int overflow */
+ if( uncompr_size / width != length )
+ {
+ TIFFError(infilename,
+ "Invalid dimensions of BMP file" );
+ close(fd);
+ return -1;
+ }
comprbuf = (unsigned char *) _TIFFmalloc( compr_size );
if (!comprbuf) {
TIFFError(infilename,

View File

@ -1,88 +0,0 @@
Copied from Debian
From 40a5955cbf0df62b1f9e9bd7d9657b0070725d19 Mon Sep 17 00:00:00 2001
From: erouault <erouault>
Date: Mon, 29 Dec 2014 12:09:11 +0000
Subject: [PATCH] * libtiff/tif_next.c: add new tests to check that we don't
read outside of the compressed input stream buffer.
* libtiff/tif_getimage.c: in OJPEG case, fix checks on strile width/height
---
ChangeLog | 9 +++++++++
libtiff/tif_getimage.c | 12 +++++++-----
libtiff/tif_next.c | 4 +++-
3 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c
index a4f46d9..3ad8ee7 100644
--- a/libtiff/tif_getimage.c
+++ b/libtiff/tif_getimage.c
@@ -1871,7 +1871,7 @@ DECLAREContigPutFunc(putcontig8bitYCbCr42tile)
(void) y;
fromskew = (fromskew * 10) / 4;
- if ((h & 3) == 0 && (w & 1) == 0) {
+ if ((w & 3) == 0 && (h & 1) == 0) {
for (; h >= 2; h -= 2) {
x = w>>2;
do {
@@ -1948,7 +1948,7 @@ DECLAREContigPutFunc(putcontig8bitYCbCr41tile)
/* XXX adjust fromskew */
do {
x = w>>2;
- do {
+ while(x>0) {
int32 Cb = pp[4];
int32 Cr = pp[5];
@@ -1959,7 +1959,8 @@ DECLAREContigPutFunc(putcontig8bitYCbCr41tile)
cp += 4;
pp += 6;
- } while (--x);
+ x--;
+ }
if( (w&3) != 0 )
{
@@ -2050,7 +2051,7 @@ DECLAREContigPutFunc(putcontig8bitYCbCr21tile)
fromskew = (fromskew * 4) / 2;
do {
x = w>>1;
- do {
+ while(x>0) {
int32 Cb = pp[2];
int32 Cr = pp[3];
@@ -2059,7 +2060,8 @@ DECLAREContigPutFunc(putcontig8bitYCbCr21tile)
cp += 2;
pp += 4;
- } while (--x);
+ x --;
+ }
if( (w&1) != 0 )
{
diff --git a/libtiff/tif_next.c b/libtiff/tif_next.c
index d834196..dd669cc 100644
--- a/libtiff/tif_next.c
+++ b/libtiff/tif_next.c
@@ -71,7 +71,7 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
return (0);
}
- for (row = buf; occ > 0; occ -= scanline, row += scanline) {
+ for (row = buf; cc > 0 && occ > 0; occ -= scanline, row += scanline) {
n = *bp++, cc--;
switch (n) {
case LITERALROW:
@@ -90,6 +90,8 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
* The scanline has a literal span that begins at some
* offset.
*/
+ if( cc < 4 )
+ goto bad;
off = (bp[0] * 256) + bp[1];
n = (bp[2] * 256) + bp[3];
if (cc < 4+n || off+n > scanline)

View File

@ -0,0 +1,17 @@
This patch removes the explicit reference to the 'perl' binary,
such that OpenSSL does not retain a reference to Perl.
The 'c_rehash' program is seldom used, but it is used nonetheless
to create symbolic links to certificates, for instance in the 'nss-certs'
package.
--- openssl-1.0.2d/tools/c_rehash 2015-09-09 18:36:07.313316482 +0200
+++ openssl-1.0.2d/tools/c_rehash 2015-09-09 18:36:28.965458458 +0200
@@ -1,4 +1,6 @@
-#!/usr/bin/perl
+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
+ & eval 'exec perl -wS "$0" $argv:q'
+ if 0;
# Perl c_rehash script, scan all files in a directory
# and add symbolic links to their hash values.

View File

@ -0,0 +1,15 @@
AutoSplit will fail to create an index for files whose modification time is 0
because its default time for a non-existent index is 1. Set this default time
to -1 instead.
--- perl-5.16.1/cpan/AutoLoader/lib/AutoSplit.pm.orig 2012-02-14 22:44:36.000000000 -0600
+++ perl-5.16.1/cpan/AutoLoader/lib/AutoSplit.pm 2015-09-09 19:59:22.208708921 -0500
@@ -361,7 +361,7 @@
my($al_idx_file) = catfile($autodir, $modpname, $IndexFile);
if ($check_mod_time){
- my($al_ts_time) = (stat("$al_idx_file"))[9] || 1;
+ my($al_ts_time) = (stat("$al_idx_file"))[9] || -1;
if ($al_ts_time >= $pm_mod_time and
$al_ts_time >= $self_mod_time){
print "AutoSplit skipped ($al_idx_file newer than $filename)\n"

View File

@ -0,0 +1,15 @@
Fix <https://bugs.freedesktop.org/show_bug.cgi?id=92027> whereby
an arithemitic overflow could occur while doing pointer arithmetic,
leading pixman to use an invalid address as the destination buffer.
--- pixman-0.32.6/pixman/pixman-general.c 2015-09-21 15:14:34.695981325 +0200
+++ pixman-0.32.6/pixman/pixman-general.c 2015-09-21 15:19:48.898355548 +0200
@@ -144,8 +144,7 @@ general_composite_rect (pixman_implemen
mask_buffer = ALIGN (src_buffer + width * Bpp);
dest_buffer = ALIGN (mask_buffer + width * Bpp);
- if (ALIGN (dest_buffer + width * Bpp) >
- scanline_buffer + sizeof (stack_scanline_buffer))
+ if ((width + 1) * Bpp * 3 > sizeof (stack_scanline_buffer))
{
scanline_buffer = pixman_malloc_ab_plus_c (width, Bpp * 3, 32 * 3);

View File

@ -16,15 +16,3 @@ using 'getpwnam' in libmount. This doesn't work in the chroot because
ts_init_subtest "deduplicate" ts_init_subtest "deduplicate"
ts_valgrind $TESTPROG --dedup bbb,ccc,AAA,xxx,AAA=a,AAA=bbb,ddd,AAA=ccc,fff=eee AAA &> $TS_OUTPUT ts_valgrind $TESTPROG --dedup bbb,ccc,AAA,xxx,AAA=a,AAA=bbb,ddd,AAA=ccc,fff=eee AAA &> $TS_OUTPUT
ts_finalize_subtest ts_finalize_subtest
The expected output for this test seems to lack a carriage return.
--- util-linux-2.25.2/tests/expected/more/regexp 2015-01-23 14:02:21.098557632 +0100
+++ util-linux-2.25.2/tests/expected/more/regexp 2015-01-23 14:02:23.598573648 +0100
@@ -1,4 +1,4 @@
...skipping
-foo
+ foo
xyzzy

View File

@ -4,10 +4,13 @@ Initial Package Version: 3.10.1
Upstream Status: Unknown Upstream Status: Unknown
Origin: Self Origin: Self
Description: Allows Valgrind to build with glibc-2.21 Description: Allows Valgrind to build with glibc-2.21
Later modified to support glibc-2.22 as well.
diff -Naur valgrind-3.10.1.old/configure valgrind-3.10.1.new/configure diff -Naur valgrind-3.10.1.old/configure valgrind-3.10.1.new/configure
--- valgrind-3.10.1.old/configure 2014-11-25 20:42:25.000000000 +0100 --- valgrind-3.10.1.old/configure 2014-11-25 20:42:25.000000000 +0100
+++ valgrind-3.10.1.new/configure 2015-02-22 10:46:06.607826488 +0100 +++ valgrind-3.10.1.new/configure 2015-02-22 10:46:06.607826488 +0100
@@ -6842,6 +6842,16 @@ @@ -6842,6 +6842,26 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;; ;;
@ -20,6 +23,16 @@ diff -Naur valgrind-3.10.1.old/configure valgrind-3.10.1.new/configure
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
+ 2.22)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.22 family" >&5
+$as_echo "2.22 family" >&6; }
+
+$as_echo "#define GLIBC_2_22 1" >>confdefs.h
+
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;; + ;;
darwin) darwin)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5

View File

@ -0,0 +1,18 @@
Modify valgrind's configure script to accept linux-libre-4.x as being in the
same family as 3.x.
--- valgrind-3.10.1/configure 2015-09-15 18:02:20.710262686 -0400
+++ valgrind-3.10.1/configure 2015-09-15 18:02:59.831829731 -0400
@@ -5553,9 +5553,9 @@
kernel=`uname -r`
case "${kernel}" in
- 2.6.*|3.*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.6.x/3.x family (${kernel})" >&5
-$as_echo "2.6.x/3.x family (${kernel})" >&6; }
+ 2.6.*|3.*|4.*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.6.x/3.x/4.x family (${kernel})" >&5
+$as_echo "2.6.x/3.x/4.x family (${kernel})" >&6; }
$as_echo "#define KERNEL_2_6 1" >>confdefs.h

View File

@ -28,16 +28,16 @@
(define-public pciutils (define-public pciutils
(package (package
(name "pciutils") (name "pciutils")
(version "3.2.0") (version "3.3.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"mirror://kernel.org/software/utils/pciutils/pciutils-" "mirror://kernel.org/software/utils/pciutils/pciutils-"
version version
".tar.bz2")) ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0d9as9jzjjg5c1nwf58z1y1i7rf9fqxmww1civckhcvcn0xr85mq")))) "1ag3skny1bamqil46dlppw8j1fp08spqa60fjygbxkg4fzdknjji"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (alist-replace '(#:phases (alist-replace

View File

@ -52,13 +52,13 @@
(define-public poppler (define-public poppler
(package (package
(name "poppler") (name "poppler")
(version "0.32.0") (version "0.36.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://poppler.freedesktop.org/poppler-" (uri (string-append "http://poppler.freedesktop.org/poppler-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (base32 (sha256 (base32
"162vfbvbz0frvqyk00ldsbl49h4bj8i8wn0ngfl30xg1lldy6qs9")))) "13i440kv873wgmw50rs4d1v05cj0r7bqnghd70hp9vy44dxhdk4k"))))
(build-system gnu-build-system) (build-system gnu-build-system)
;; FIXME: more dependencies could be added ;; FIXME: more dependencies could be added
;; cairo output: no (requires cairo >= 1.10.0) ;; cairo output: no (requires cairo >= 1.10.0)
@ -477,13 +477,13 @@ and examining the file structure (pdfshow).")
(define-public qpdf (define-public qpdf
(package (package
(name "qpdf") (name "qpdf")
(version "5.1.2") (version "5.1.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/qpdf/qpdf-" (uri (string-append "mirror://sourceforge/qpdf/qpdf-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (base32 (sha256 (base32
"1zbvhrp0zjzbi6q2bnbxbg6399r47pq5gw3kspzph81j19fqvpg9")))) "1lq1v7xghvl6p4hgrwbps3a13ad6lh4ib3myimb83hxgsgd4n5nm"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (alist-cons-before '(#:phases (alist-cons-before

View File

@ -47,6 +47,7 @@
"15qxzba3a50c9nik5ydgyfp62x7h9vxxn12yd1jgl93hb1wj96km")) "15qxzba3a50c9nik5ydgyfp62x7h9vxxn12yd1jgl93hb1wj96km"))
(patches (map search-patch (patches (map search-patch
'("perl-no-sys-dirs.patch" '("perl-no-sys-dirs.patch"
"perl-autosplit-default-time.patch"
"perl-module-pluggable-search.patch"))))) "perl-module-pluggable-search.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments

View File

@ -674,7 +674,7 @@ have been used.")
(define-public python-setuptools (define-public python-setuptools
(package (package
(name "python-setuptools") (name "python-setuptools")
(version "12.1") (version "18.3.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -682,7 +682,7 @@ have been used.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"04bfk7si1pwj3b5k2b1x9b1zkiclybmzpw6alrs5bciri56lg9zs")))) "0kc7rbav00ks6iaw14p38y81q12fx0lpkhgf5m97xc04f5r318ig"))))
(build-system python-build-system) (build-system python-build-system)
;; FIXME: Tests require pytest, which itself relies on setuptools. ;; FIXME: Tests require pytest, which itself relies on setuptools.
;; One could bootstrap with an internal untested setuptools. ;; One could bootstrap with an internal untested setuptools.
@ -2791,7 +2791,7 @@ association studies (GWAS) on extremely large data sets.")
(tgt-dir (string-append html "/" dir))) (tgt-dir (string-append html "/" dir)))
(unless (equal? "." dir) (unless (equal? "." dir)
(mkdir-p tgt-dir)) (mkdir-p tgt-dir))
(copy-file file (string-append html "/" file)))) (install-file file html)))
(find-files "." ".*")))))) (find-files "." ".*"))))))
,phases))))))) ,phases)))))))
@ -2835,7 +2835,7 @@ association studies (GWAS) on extremely large data sets.")
(for-each (for-each
(lambda (dir tgt) (lambda (dir tgt)
(map (lambda (file) (map (lambda (file)
(copy-file file (string-append tgt "/" (basename file)))) (install-file file tgt))
(find-files dir ".*"))) (find-files dir ".*")))
(list "docs" "htmldoc" "examples") (list "docs" "htmldoc" "examples")
(list doc html-doc examples)))) (list doc html-doc examples))))
@ -3147,9 +3147,7 @@ atlas_libs = openblas
(for-each (lambda (file) (for-each (lambda (file)
(let* ((dir (dirname file)) (let* ((dir (dirname file))
(tgt-dir (string-append html "/" dir))) (tgt-dir (string-append html "/" dir)))
(unless (equal? "." dir) (install-file file html)))
(mkdir-p tgt-dir))
(copy-file file (string-append html "/" file))))
(find-files "." ".*")))))) (find-files "." ".*"))))))
;; Tests can only be run after the library has been installed and not ;; Tests can only be run after the library has been installed and not
;; within the source directory. ;; within the source directory.
@ -4642,6 +4640,37 @@ term.js Javascript terminal emulator library.")
,@(alist-delete "python-tornado" ,@(alist-delete "python-tornado"
(package-propagated-inputs terminado))))))) (package-propagated-inputs terminado)))))))
(define-public python-fonttools
(package
(name "python-fonttools")
(version "2.5")
(source (origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/F/FontTools/"
"fonttools-" version ".tar.gz"))
(sha256
(base32
"08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
(build-system python-build-system)
(arguments '(#:test-target "check"))
(propagated-inputs
;; XXX: module not found if setuptools is not available.
`(("python-setuptools" ,python-setuptools)))
(home-page "http://github.com/behdad/fonttools")
(synopsis "Tools to manipulate font files")
(description
"FontTools/TTX is a library to manipulate font files from Python. It
supports reading and writinfg of TrueType/OpenType fonts, reading and writing
of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
also contains a tool called TTX which converts TrueType/OpenType fonts to and
from an XML-based format.")
(license (non-copyleft "file://LICENSE.txt"
"See LICENSE.txt in the distribution."))))
(define-public python2-fonttools
(package-with-python2 python-fonttools))
(define-public python-ly (define-public python-ly
(package (package
(name "python-ly") (name "python-ly")

View File

@ -79,8 +79,7 @@ view to show two terminals at once.")
'install 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
(mkdir-p (string-append out "/bin")) (install-file "dtach" (string-append out "/bin"))))
(copy-file "dtach" (string-append out "/bin/dtach"))))
%standard-phases) %standard-phases)
;; No check target. ;; No check target.
#:tests? #f)) #:tests? #f))

View File

@ -92,19 +92,15 @@
(ex (string-append out "/share/doc/synergy-" (ex (string-append out "/share/doc/synergy-"
,version "/examples"))) ,version "/examples")))
(begin (begin
(mkdir-p bin)
(for-each (for-each
(lambda (f) (lambda (f)
(copy-file (string-append srcdir "/bin/" f) (install-file (string-append srcdir "/bin/" f) bin))
(string-append bin "/" f)))
'("synergyc" "synergys" "synergyd" '("synergyc" "synergys" "synergyd"
"usynergy" "syntool")) "usynergy" "syntool"))
;; Install example configuration files ;; Install example configuration files
(mkdir-p ex)
(for-each (for-each
(lambda (e) (lambda (e)
(copy-file (string-append srcdir "/doc/" e) (install-file (string-append srcdir "/doc/" e) ex))
(string-append ex "/" e)))
'("synergy.conf.example" '("synergy.conf.example"
"synergy.conf.example-advanced" "synergy.conf.example-advanced"
"synergy.conf.example-basic"))))) "synergy.conf.example-basic")))))

View File

@ -25,6 +25,7 @@
#:use-module (guix build-system perl) #:use-module (guix build-system perl)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
@ -33,7 +34,7 @@
(define-public tcl (define-public tcl
(package (package
(name "tcl") (name "tcl")
(version "8.6.0") (version "8.6.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -41,7 +42,7 @@
version "/tcl" version "-src.tar.gz")) version "/tcl" version "-src.tar.gz"))
(sha256 (sha256
(base32 (base32
"1pnabp3xsja4rc8c01l9q1avb65a3zhdzci3j54qa5krqjwj4i1m")))) "13cwa4bc85ylf5gfj9vk182lvgy60qni3f7gbxghq78wk16djvly"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (alist-cons-before '(#:phases (alist-cons-before
@ -132,21 +133,34 @@ X11 GUIs.")
(define-public tk (define-public tk
(package (package
(name "tk") (name "tk")
(version "8.6.0") (version "8.6.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/tcl/Tcl/" (uri (string-append "mirror://sourceforge/tcl/Tcl/"
version "/tk" version "-src.tar.gz")) version "/tk" version "-src.tar.gz"))
(sha256 (sha256
(base32 (base32
"1rld0l7p1h31z488w44j170jpsm11xsjf2qrb7gid2b5dwmqnw2w")))) "1h96vp15zl5xz0d4qp6wjyrchqmrmdm3q5k22wkw9jaxbvw9vy88"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (alist-cons-before '(#:phases (modify-phases %standard-phases
'configure 'pre-configure (add-before
(lambda _ 'configure 'pre-configure
(chdir "unix")) (lambda _
%standard-phases) (chdir "unix")))
(add-after
'install 'add-fontconfig-flag
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Add the missing -L flag for Fontconfig in 'tk.pc' and
;; 'tkConfig.sh'.
(let ((out (assoc-ref outputs "out"))
(fontconfig (assoc-ref inputs "fontconfig")))
(substitute* (find-files out
"^(tkConfig\\.sh|tk\\.pc)$")
(("-lfontconfig")
(string-append "-L" fontconfig
"/lib -lfontconfig")))
#t))))
#:configure-flags (list (string-append "--with-tcl=" #:configure-flags (list (string-append "--with-tcl="
(assoc-ref %build-inputs "tcl") (assoc-ref %build-inputs "tcl")
@ -156,6 +170,7 @@ X11 GUIs.")
#:tests? #f)) #:tests? #f))
(native-inputs `(("pkg-config" ,pkg-config))) (native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("libxft" ,libxft) (inputs `(("libxft" ,libxft)
("fontconfig" ,fontconfig)
("tcl" ,tcl))) ("tcl" ,tcl)))
;; tk.h refers to X11 headers, hence the propagation. ;; tk.h refers to X11 headers, hence the propagation.
(propagated-inputs `(("libx11" ,libx11) (propagated-inputs `(("libx11" ,libx11)

View File

@ -111,11 +111,9 @@ libenca and several charset conversion libraries and tools.")
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((lib (string-append (assoc-ref outputs "out") "/lib/")) (let ((lib (string-append (assoc-ref outputs "out") "/lib/"))
(include (string-append (assoc-ref outputs "out") "/include/"))) (include (string-append (assoc-ref outputs "out") "/include/")))
(mkdir-p lib) (install-file "utf8proc.h" include)
(mkdir-p include)
(copy-file "utf8proc.h" (string-append include "utf8proc.h"))
(for-each (lambda (file) (for-each (lambda (file)
(copy-file file (string-append lib (basename file)))) (install-file file lib))
'("libutf8proc.a" "libutf8proc.so")))) '("libutf8proc.a" "libutf8proc.so"))))
;; no configure script ;; no configure script
(alist-delete 'configure %standard-phases)))) (alist-delete 'configure %standard-phases))))

View File

@ -105,7 +105,7 @@ living in the same process.")
(define-public gnutls (define-public gnutls
(package (package
(name "gnutls") (name "gnutls")
(version "3.4.4.1") (version "3.4.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -116,7 +116,7 @@ living in the same process.")
"/gnutls-" version ".tar.xz")) "/gnutls-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1xf354xafavqhi207ll1m1isd4l5b31lic2sz9lw0j0r0fcxfnsj")) "1bks1zpmhmnkz2v32dd9b44pz6x0a5w4yi9zzwsd0a078vhbi25g"))
(patches (list (search-patch "gnutls-doc-fix.patch"))))) (patches (list (search-patch "gnutls-doc-fix.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
@ -195,7 +195,9 @@ required structures.")
(sha256 (sha256
(base32 (base32
"1j58r7rdj9fz2lanir8ajbx4bspb5jnm5ikl6dq8lql5fx43c737")) "1j58r7rdj9fz2lanir8ajbx4bspb5jnm5ikl6dq8lql5fx43c737"))
(patches (list (search-patch "openssl-runpath.patch"))))) (patches (map search-patch
'("openssl-runpath.patch"
"openssl-c-rehash.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("perl" ,perl))) (native-inputs `(("perl" ,perl)))
(arguments (arguments
@ -203,32 +205,68 @@ required structures.")
#:parallel-tests? #f #:parallel-tests? #f
#:test-target "test" #:test-target "test"
#:phases #:phases
(alist-replace (modify-phases %standard-phases
'configure (add-before
(lambda* (#:key outputs #:allow-other-keys) 'configure 'fix-man-dir
(let ((out (assoc-ref outputs "out"))) (lambda* (#:key outputs #:allow-other-keys)
(zero? ;; The default MANDIR is some unusual place. Fix that.
(system* "./config" (let ((out (assoc-ref outputs "out")))
"shared" ; build shared libraries (substitute* "Makefile.org"
"--libdir=lib" (("^MANDIR[[:blank:]]*=.*$")
(string-append "--prefix=" out) (string-append "MANDIR = " out "/share/man\n")))
;; XXX FIXME: Work around a code generation bug in GCC #t)))
;; 4.9.3 on ARM when compiled with -mfpu=neon. See: (replace
;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917> 'configure
,@(if (and (not (%current-target-system)) (lambda* (#:key outputs #:allow-other-keys)
(string-prefix? "armhf" (%current-system))) (let ((out (assoc-ref outputs "out")))
'("-mfpu=vfpv3") (zero?
'()))))) (system* "./config"
(alist-cons-before "shared" ;build shared libraries
'patch-source-shebangs 'patch-tests "--libdir=lib"
(lambda* (#:key inputs native-inputs #:allow-other-keys)
(let ((bash (assoc-ref (or native-inputs inputs) "bash"))) ;; The default for this catch-all directory is
(substitute* (find-files "test" ".*") ;; PREFIX/ssl. Change that to something more
(("/bin/sh") ;; conventional.
(string-append bash "/bin/bash")) (string-append "--openssldir=" out
(("/bin/rm") "/share/openssl-" ,version)
"rm"))))
%standard-phases)))) (string-append "--prefix=" out)
;; XXX FIXME: Work around a code generation bug in GCC
;; 4.9.3 on ARM when compiled with -mfpu=neon. See:
;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917>
,@(if (and (not (%current-target-system))
(string-prefix? "armhf" (%current-system)))
'("-mfpu=vfpv3")
'()))))))
(add-after
'install 'make-libraries-writable
(lambda* (#:key outputs #:allow-other-keys)
;; Make libraries writable so that 'strip' does its job.
(let ((out (assoc-ref outputs "out")))
(for-each (lambda (file)
(chmod file #o644))
(find-files (string-append out "/lib")
"\\.so"))
#t)))
(add-before
'patch-source-shebangs 'patch-tests
(lambda* (#:key inputs native-inputs #:allow-other-keys)
(let ((bash (assoc-ref (or native-inputs inputs) "bash")))
(substitute* (find-files "test" ".*")
(("/bin/sh")
(string-append bash "/bin/bash"))
(("/bin/rm")
"rm")))))
(add-after
'install 'remove-miscellany
(lambda* (#:key outputs #:allow-other-keys)
;; The 'misc' directory contains random undocumented shell and Perl
;; scripts. Remove them to avoid retaining a reference on Perl.
(let ((out (assoc-ref outputs "out")))
(delete-file-recursively (string-append out "/share/openssl-"
,version "/misc"))
#t))))))
(native-search-paths (native-search-paths
;; FIXME: These two variables must designate a single file or directory ;; FIXME: These two variables must designate a single file or directory
;; and are not actually "search paths." In practice it works OK in user ;; and are not actually "search paths." In practice it works OK in user

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -37,7 +38,8 @@
(sha256 (sha256
(base32 (base32
"15xrzhfnwwn7n1sfbkwvdbvs6zk0zx718n6zd5i1nrnvdp13s9gs")) "15xrzhfnwwn7n1sfbkwvdbvs6zk0zx718n6zd5i1nrnvdp13s9gs"))
(patches (list (search-patch "valgrind-glibc-2.21.patch"))))) (patches (map search-patch '("valgrind-glibc-2.22.patch"
"valgrind-linux-libre-4.x.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (alist-cons-after '(#:phases (alist-cons-after

View File

@ -419,11 +419,9 @@ lot easier.")
(output (assoc-ref %outputs "out")) (output (assoc-ref %outputs "out"))
(bindir (string-append output "/bin")) (bindir (string-append output "/bin"))
(script "git-test-sequence")) (script "git-test-sequence"))
(begin (install-file (string-append source "/" script)
(mkdir-p bindir) bindir)
(copy-file (string-append source "/" script) #t))))
(string-append bindir "/" script))
#t)))))
(home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html") (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
(synopsis "Run a command over a sequence of commits") (synopsis "Run a command over a sequence of commits")
(description (description

View File

@ -1014,7 +1014,8 @@ for use with HTML5 video.")
(("#! /bin/sh") (string-append "#!" (which "bash")))) (("#! /bin/sh") (string-append "#!" (which "bash"))))
(system* "tar" "cjf" "ffmpeg-2.6.1.tar.bz2" "ffmpeg-2.6.1" (system* "tar" "cjf" "ffmpeg-2.6.1.tar.bz2" "ffmpeg-2.6.1"
;; avoid non-determinism in the archive ;; avoid non-determinism in the archive
"--mtime=@0" "--owner=root:0" "--group=root:0") "--sort=name" "--mtime=@0"
"--owner=root:0" "--group=root:0")
(delete-file-recursively "ffmpeg-2.6.1"))) (delete-file-recursively "ffmpeg-2.6.1")))
(alist-replace 'configure (alist-replace 'configure
(lambda _ (lambda _

View File

@ -174,16 +174,13 @@
;; directory. ;; directory.
(let ((dest-dir (string-append out "/etc/wicd")) (let ((dest-dir (string-append out "/etc/wicd"))
(name "dhclient.conf.template.default")) (name "dhclient.conf.template.default"))
(mkdir-p dest-dir) (install-file (string-append "other/" name) dest-dir))
(copy-file (string-append "other/" name)
(string-append dest-dir "/" name)))
;; Copy index.theme from hicolor-icon-theme. This is needed to ;; Copy index.theme from hicolor-icon-theme. This is needed to
;; allow wicd-gtk to find its icons. ;; allow wicd-gtk to find its icons.
(let ((hicolor (assoc-ref inputs "hicolor-icon-theme")) (let ((hicolor (assoc-ref inputs "hicolor-icon-theme"))
(name "/share/icons/hicolor/index.theme")) (name "/share/icons/hicolor/index.theme"))
(copy-file (string-append hicolor name) (install-file (string-append hicolor name) out))
(string-append out name)))
#t)) #t))
%standard-phases)))) %standard-phases))))
(synopsis "Network connection manager") (synopsis "Network connection manager")

View File

@ -150,7 +150,8 @@ following the mouse.")
".tar.gz")) ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0129g4zdrw5hif5783li7rzcr4vpbc2cfia91azxmsk0h0xx3zix")))) "0129g4zdrw5hif5783li7rzcr4vpbc2cfia91azxmsk0h0xx3zix"))
(patches (list (search-patch "pixman-pointer-arithmetic.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("libpng" ,libpng) `(("libpng" ,libpng)

View File

@ -145,7 +145,7 @@ based on libxml for XML parsing, tree manipulation and XPath support.")
(define-public perl-xml-parser (define-public perl-xml-parser
(package (package
(name "perl-xml-parser") (name "perl-xml-parser")
(version "2.41") (version "2.44")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -153,7 +153,7 @@ based on libxml for XML parsing, tree manipulation and XPath support.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1sadi505g5qmxr36lgcbrcrqh3a5gcdg32b405gnr8k54b6rg0dl")))) "05ij0g6bfn27iaggxf8nl5rhlwx6f6p6xmdav6rjcly3x5zd1s8s"))))
(build-system perl-build-system) (build-system perl-build-system)
(arguments `(#:make-maker-flags (arguments `(#:make-maker-flags
(let ((expat (assoc-ref %build-inputs "expat"))) (let ((expat (assoc-ref %build-inputs "expat")))
@ -171,7 +171,7 @@ may be provided when the XML::Parser object is created. These options are
then passed on to the Expat object on each parse call. They can also be given then passed on to the Expat object on each parse call. They can also be given
as extra arguments to the parse methods, in which case they override options as extra arguments to the parse methods, in which case they override options
given at XML::Parser creation time.") given at XML::Parser creation time.")
(home-page "http://search.cpan.org/~toddr/XML-Parser-2.41/Parser.pm"))) (home-page "http://search.cpan.org/dist/XML-Parser")))
(define-public perl-libxml (define-public perl-libxml
(package (package

View File

@ -4951,6 +4951,12 @@ draggable titlebars and borders.")
(base32 (base32
"05mx0s0vqzds3qjc1gmjr2s6x2ll37z4lfhgm7p2w7936zl2g81a")))) "05mx0s0vqzds3qjc1gmjr2s6x2ll37z4lfhgm7p2w7936zl2g81a"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out"
"doc")) ;8 MiB of man pages + XML
(arguments
'(#:configure-flags (list (string-append "--mandir="
(assoc-ref %outputs "doc")
"/share/man"))))
(propagated-inputs (propagated-inputs
`(("kbproto" ,kbproto) `(("kbproto" ,kbproto)
("libxcb" ,libxcb))) ("libxcb" ,libxcb)))
@ -5011,6 +5017,12 @@ draggable titlebars and borders.")
(base32 (base32
"0myxwbx9ylam5x3ia5b5f4x8azcqdm420h9ad1r4hrgmi2lrffl4")))) "0myxwbx9ylam5x3ia5b5f4x8azcqdm420h9ad1r4hrgmi2lrffl4"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out"
"doc")) ;2 MiB of man pages + XML
(arguments
'(#:configure-flags (list (string-append "--mandir="
(assoc-ref %outputs "doc")
"/share/man"))))
(propagated-inputs (propagated-inputs
`(("libx11" ,libx11) `(("libx11" ,libx11)
("libice" ,libice) ("libice" ,libice)

View File

@ -74,8 +74,13 @@ under /root/.guix-profile where GUIX is installed."
;; length limitation. ;; length limitation.
(with-directory-excursion %root (with-directory-excursion %root
(zero? (system* "tar" "--xz" "--format=gnu" (zero? (system* "tar" "--xz" "--format=gnu"
"--owner=root:0" "--group=root:0"
;; avoid non-determinism in the archive
"--sort=name"
"--mtime=@0" ;for files in /var/guix "--mtime=@0" ;for files in /var/guix
"--owner=root:0"
"--group=root:0"
"--check-links" "--check-links"
"-cvf" #$output "-cvf" #$output
;; Avoid adding / and /var to the tarball, ;; Avoid adding / and /var to the tarball,

View File

@ -36,7 +36,7 @@
;; This build system is an extension of the 'gnu-build-system'. It ;; This build system is an extension of the 'gnu-build-system'. It
;; accomodates the needs of applications making use of glib or gtk+ (with "or" ;; accomodates the needs of applications making use of glib or gtk+ (with "or"
;; to be interpreted in the mathematical sense). This is achieved by adding ;; to be interpreted in the mathematical sense). This is achieved by adding
;; three phases run after the 'install' phase: ;; two phases run after the 'install' phase:
;; ;;
;; 'glib-or-gtk-wrap' phase: ;; 'glib-or-gtk-wrap' phase:
;; ;;
@ -57,11 +57,6 @@
;; exists and does not include a file named "gschemas.compiled", then ;; exists and does not include a file named "gschemas.compiled", then
;; "glib-compile-schemas" is run in that directory. ;; "glib-compile-schemas" is run in that directory.
;; ;;
;; 'glib-or-gtk-icon-cache' phase:
;;
;; Looks for the existence of icon themes and, if no cache exists, generate
;; the "icon-theme.cache" file.
;;
;; Code: ;; Code:
(define %default-modules (define %default-modules
@ -81,22 +76,16 @@
(let ((module (resolve-interface '(gnu packages glib)))) (let ((module (resolve-interface '(gnu packages glib))))
(module-ref module 'glib))) (module-ref module 'glib)))
(define (default-gtk+)
"Return the default gtk+ package from which we use
\"gtk-update-icon-cache\"."
(let ((module (resolve-interface '(gnu packages gtk))))
(module-ref module 'gtk+)))
(define* (lower name (define* (lower name
#:key source inputs native-inputs outputs system target #:key source inputs native-inputs outputs system target
(glib (default-glib)) (gtk+ (default-gtk+)) (glib (default-glib))
(implicit-inputs? #t) (implicit-inputs? #t)
(strip-binaries? #t) (strip-binaries? #t)
#:allow-other-keys #:allow-other-keys
#:rest arguments) #:rest arguments)
"Return a bag for NAME." "Return a bag for NAME."
(define private-keywords (define private-keywords
'(#:source #:target #:glib #:gtk+ #:inputs #:native-inputs '(#:source #:target #:glib #:inputs #:native-inputs
#:outputs #:implicit-inputs?)) #:outputs #:implicit-inputs?))
(and (not target) ;XXX: no cross-compilation (and (not target) ;XXX: no cross-compilation
@ -108,7 +97,6 @@
'()) '())
,@inputs)) ,@inputs))
(build-inputs `(("glib:bin" ,glib "bin") ; to compile schemas (build-inputs `(("glib:bin" ,glib "bin") ; to compile schemas
("gtk+" ,gtk+) ; to generate icon cache
,@(if implicit-inputs? ,@(if implicit-inputs?
(standard-packages) (standard-packages)
'()) '())

View File

@ -83,7 +83,8 @@ store in '.el' files."
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(elpa-name-ver (store-directory->elpa-name-version out)) (elpa-name-ver (store-directory->elpa-name-version out))
(el-dir (string-append out %install-suffix "/" elpa-name-ver)) (el-dir (string-append out %install-suffix "/" elpa-name-ver))
(info-dir (string-append out "/share/info")) (name-ver (strip-store-file-name out))
(info-dir (string-append out "/share/info/"))
(info-files (find-files el-dir "\\.info$"))) (info-files (find-files el-dir "\\.info$")))
(unless (null? info-files) (unless (null? info-files)
(mkdir-p info-dir) (mkdir-p info-dir)
@ -115,7 +116,7 @@ store in '.el' files."
(filter (match-lambda (filter (match-lambda
((label . directory) ((label . directory)
(emacs-package? ((compose package-name->name+version (emacs-package? ((compose package-name->name+version
store-directory->name-version) strip-store-file-name)
directory))) directory)))
(_ #f)) (_ #f))
inputs)) inputs))
@ -137,47 +138,17 @@ DIRS."
(define (package-name-version->elpa-name-version name-ver) (define (package-name-version->elpa-name-version name-ver)
"Convert the Guix package NAME-VER to the corresponding ELPA name-version "Convert the Guix package NAME-VER to the corresponding ELPA name-version
format. Essnetially drop the prefix used in Guix." format. Essnetially drop the prefix used in Guix."
(let ((name (store-directory->name-version name-ver))) (if (emacs-package? name-ver) ; checks for "emacs-" prefix
(if (emacs-package? name-ver) (string-drop name-ver (string-length "emacs-"))
(store-directory->name-version name-ver) name-ver))
name-ver)))
(define (store-directory->elpa-name-version store-dir) (define (store-directory->elpa-name-version store-dir)
"Given a store directory STORE-DIR return the part of the basename after the "Given a store directory STORE-DIR return the part of the basename after the
second hyphen. This corresponds to 'name-version' as used in ELPA packages." second hyphen. This corresponds to 'name-version' as used in ELPA packages."
((compose package-name-version->elpa-name-version ((compose package-name-version->elpa-name-version
store-directory->name-version) strip-store-file-name)
store-dir)) store-dir))
(define (store-directory->name-version store-dir)
"Given a store directory STORE-DIR return the part of the basename
after the first hyphen. This corresponds to 'name-version' of the package."
(let* ((base (basename store-dir)))
(string-drop base
(+ 1 (string-index base #\-)))))
;; from (guix utils). Should we put it in (guix build utils)?
(define (package-name->name+version name)
"Given NAME, a package name like \"foo-0.9.1b\", return two values:
\"foo\" and \"0.9.1b\". When the version part is unavailable, NAME and
#f are returned. The first hyphen followed by a digit is considered to
introduce the version part."
;; See also `DrvName' in Nix.
(define number?
(cut char-set-contains? char-set:digit <>))
(let loop ((chars (string->list name))
(prefix '()))
(match chars
(()
(values name #f))
((#\- (? number? n) rest ...)
(values (list->string (reverse prefix))
(list->string (cons n rest))))
((head tail ...)
(loop tail (cons head prefix))))))
(define %standard-phases (define %standard-phases
(modify-phases gnu:%standard-phases (modify-phases gnu:%standard-phases
(delete 'configure) (delete 'configure)

Some files were not shown because too many files have changed in this diff Show More