From cf053a4f0664e2bc2d8a7ba894c6e571f82e37d9 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 9 Feb 2015 19:26:35 +0100 Subject: gnu: Add certdata2pem Python script. * gnu/packages/certs.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 1a68b8bfa2..218361d4fa 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -55,6 +55,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/calcurse.scm \ gnu/packages/ccache.scm \ gnu/packages/cdrom.scm \ + gnu/packages/certs.scm \ gnu/packages/cflow.scm \ gnu/packages/check.scm \ gnu/packages/cmake.scm \ -- cgit v1.2.3 From 8d872ae00127462b78df0bf0e8de3c3ca06bf046 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Sun, 1 Feb 2015 02:21:11 +0100 Subject: gnu: Add moreutils. * gnu/packages/moreutils.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/moreutils.scm | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 gnu/packages/moreutils.scm (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 218361d4fa..b2ddbf5972 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -191,6 +191,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/miscfiles.scm \ gnu/packages/mit-krb5.scm \ gnu/packages/moe.scm \ + gnu/packages/moreutils.scm \ gnu/packages/mpd.scm \ gnu/packages/mp3.scm \ gnu/packages/mpi.scm \ diff --git a/gnu/packages/moreutils.scm b/gnu/packages/moreutils.scm new file mode 100644 index 0000000000..4ea6df3dcc --- /dev/null +++ b/gnu/packages/moreutils.scm @@ -0,0 +1,68 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; +;;; 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 . + +(define-module (gnu packages moreutils) + #:use-module ((guix licenses) #:prefix l:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages perl) + #:use-module (gnu packages xml) + #:use-module (gnu packages docbook)) + +(define-public moreutils + (package + (name "moreutils") + (version "0.55") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://debian/pool/main/m/moreutils/moreutils_" + version ".orig.tar.gz")) + (sha256 + (base32 + "1dcah2jx8dbznn8966xl7sf1jrld2qfh6l6xcmx9dsnf8p8mr7fs")))) + (build-system gnu-build-system) + (inputs `(("perl" ,perl) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("docbook-xml" ,docbook-xml-4.4) + ("docbook-xsl" ,docbook-xsl))) + (arguments + `(#:phases + (alist-replace + 'configure + (lambda* (#:key inputs #:allow-other-keys) + (use-modules (srfi srfi-1)) + (substitute* "Makefile" + (("/usr/share/xml/.*/docbook.xsl") + (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl")) + (files (find-files docbook-xsl "^docbook\\.xsl$"))) + (find (lambda (file) + (string-suffix? "/manpages/docbook.xsl" file)) + files))))) + %standard-phases) + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out")) + "CC=gcc"))) + (home-page "http://joeyh.name/code/moreutils/") + (synopsis "Miscellaneous general-purpose command-line tools") + (description + "Moreutils is a collection of general-purpose command-line tools to +augment the traditional Unix toolbox.") + (license l:gpl2+))) -- cgit v1.2.3 From 0b0e11a9d8c366ebb345eb59209a7fbf5a1db397 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 14 Feb 2015 19:57:23 +0100 Subject: gnu: Add xdg-utils. * gnu/packages/freedesktop.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/freedesktop.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 gnu/packages/freedesktop.scm (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index b2ddbf5972..04e93452ba 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -98,6 +98,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/fltk.scm \ gnu/packages/fonts.scm \ gnu/packages/fontutils.scm \ + gnu/packages/freedesktop.scm \ gnu/packages/freeipmi.scm \ gnu/packages/ftp.scm \ gnu/packages/fribidi.scm \ diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm new file mode 100644 index 0000000000..0ee639d20a --- /dev/null +++ b/gnu/packages/freedesktop.scm @@ -0,0 +1,46 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Andreas Enge +;;; +;;; 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 . + +(define-module (gnu packages freedesktop) + #:use-module ((guix licenses) #:select (expat)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public xdg-utils + (package + (name "xdg-utils") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://portland.freedesktop.org/download/xdg-utils-" + version ".tgz")) + (sha256 + (base32 + "1b019d3r1379b60p33d6z44kx589xjgga62ijz9vha95dg8vgbi1")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f)) ; no check target + (home-page "http://portland.freedesktop.org/") + (synopsis "Freedesktop.org scripts for desktop integration") + (description "The xdg-utils package is a set of simple scripts that +provide basic desktop integration functions in the framework of the +freedesktop.org project.") + (license expat))) \ No newline at end of file -- cgit v1.2.3 From cb7e486797df42bb971178918e84741ced3e6528 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 12 Feb 2015 12:58:11 +0100 Subject: gnu: Add R. * gnu/packages/statistics.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it * guix/download.scm (%mirrors): Add CRAN mirrors. --- gnu-system.am | 1 + gnu/packages/statistics.scm | 108 ++++++++++++++++++++++++++++++++++++++++++++ guix/download.scm | 10 ++++ 3 files changed, 119 insertions(+) create mode 100644 gnu/packages/statistics.scm (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 04e93452ba..73c3771f73 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -260,6 +260,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/socat.scm \ gnu/packages/ssh.scm \ gnu/packages/stalonetray.scm \ + gnu/packages/statistics.scm \ gnu/packages/swig.scm \ gnu/packages/sxiv.scm \ gnu/packages/synergy.scm \ diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm new file mode 100644 index 0000000000..acf7b7851d --- /dev/null +++ b/gnu/packages/statistics.scm @@ -0,0 +1,108 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 . + +(define-module (gnu packages statistics) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages gcc) + #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages image) + #:use-module (gnu packages java) + #:use-module (gnu packages maths) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages readline) + #:use-module (gnu packages texlive) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages which) + #:use-module (gnu packages xorg)) + +(define-public r + (package + (name "r") + (version "3.1.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/base/R-" + (version-prefix version 1) "/R-" + version ".tar.gz")) + (sha256 + (base32 + "0ypsm11c7n49pgh2ricyhhpfhas3famscdazzdp2zq70rapm1ldw")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (alist-cons-before + 'check 'set-timezone + ;; Some tests require the timezone to be set. + (lambda _ (setenv "TZ" "UTC")) + %standard-phases) + #:configure-flags + '("--with-blas" + "--with-lapack" + "--with-cairo" + "--with-libpng" + "--with-jpeglib" + "--with-libtiff" + "--with-ICU" + "--enable-R-shlib" + "--enable-BLAS-shlib" + "--with-system-zlib" + "--with-system-bzlib" + "--with-system-pcre" + "--with-system-tre" + "--with-system-xz"))) + (native-inputs + `(("bzip2" ,bzip2) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("texlive" ,texlive) ; needed to make vignettes + ("texinfo" ,texinfo) ; for building HTML manuals + ("which" ,which) ; for tests/Examples/base-Ex.R + ("xz" ,xz))) + (inputs + `(("atlas" ,atlas) ; --with-blas + ("cairo" ,cairo) + ("gfortran" ,gfortran-4.8) + ("icu4c" ,icu4c) + ("icedtea6" ,icedtea6) + ("lapack" ,lapack) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtiff" ,libtiff) + ("libxt" ,libxt) + ("pcre" ,pcre) + ("readline" ,readline) + ("zlib" ,zlib))) + (home-page "http://www.r-project.org/") + (synopsis "Environment for statistical computing and graphics") + (description + "R is a language and environment for statistical computing and graphics. +It provides a variety of statistical techniques, such as linear and nonlinear +modeling, classical statistical tests, time-series analysis, classification +and clustering. It also provides robust support for producing +publication-quality data plots. A large amount of 3rd-party packages are +available, greatly increasing its breadth and scope.") + (license license:gpl3+))) diff --git a/guix/download.scm b/guix/download.scm index 9a1897525b..d87d02e2af 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -164,6 +164,16 @@ "ftp://ftp.nara.wide.ad.jp/pub/CPAN/" "http://mirrors.163.com/cpan/" "ftp://cpan.mirror.ac.za/") + (cran + ;; Arbitrary mirrors from http://cran.r-project.org/mirrors.html + ;; This one automatically redirects to servers worldwide + "http://cran.rstudio.com/" + "http://cran.univ-lyon1.fr/" + "http://cran.r-mirror.de/" + "http://cran.ism.ac.jp/" + "http://cran.stat.auckland.ac.nz/" + "http://cran.mirror.ac.za/" + "http://cran.csie.ntu.edu.tw/") (imagemagick ;; from http://www.imagemagick.org/script/download.php ;; (without mirrors that are unavailable or not up to date) -- cgit v1.2.3 From 5078e98a61a4e149f8470fcae4673e1e03ac1a3a Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 16 Feb 2015 21:52:58 +0100 Subject: gnu: Add aarddict. * gnu/packages/aarddict.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/aarddict.scm | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 gnu/packages/aarddict.scm (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 73c3771f73..eeadd8fdc6 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -25,6 +25,7 @@ GNU_SYSTEM_MODULES = \ gnu.scm \ gnu/artwork.scm \ gnu/packages.scm \ + gnu/packages/aarddict.scm \ gnu/packages/abiword.scm \ gnu/packages/acct.scm \ gnu/packages/acl.scm \ diff --git a/gnu/packages/aarddict.scm b/gnu/packages/aarddict.scm new file mode 100644 index 0000000000..33bd7b4ac9 --- /dev/null +++ b/gnu/packages/aarddict.scm @@ -0,0 +1,69 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Andreas Enge +;;; +;;; 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 . + +(define-module (gnu packages aarddict) + #:use-module ((guix licenses) #:select (gpl3)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system python) + #:use-module (gnu packages python) + #:use-module (gnu packages qt)) + +(define-public aarddict + (package + (name "aarddict") + (version "0.9.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/aarddict/desktop/archive/" + version ".tar.gz")) + (sha256 + (base32 + "12h7m0z7nd7rg8avpi9syd265k0rhh4vbdh464nq0jzdg8m9p28c")))) + (build-system python-build-system) + (inputs + `(("python2-pyicu" ,python2-pyicu) + ("python2-pyqt-4" ,python2-pyqt-4) + ("python2-setuptools" ,python2-setuptools) + ("python2-simplejson" ,python2-simplejson) + ("python2-sip" ,python2-sip))) + (arguments + `(#:python ,python-2 ; incompatible with Python 3 + #:phases + (alist-cons-before + 'build 'configure + ;; Force data into the output instead of the python package. + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "setup.py" + (("sys.prefix") (string-append "'" out "'"))))) + %standard-phases))) + (home-page "http://aarddict.org/index.html") + (synopsis + "Dictionary program and offline Wikipedia reader") + (description + "Aard Dictionary is a free, fast, easy to use word lookup program that +looks up words fast even with huge dictionaries like English Wikipedia; +looks up words in multiple dictionaries in multiple languages without +switching; +works great as offline Wikipedia reader; +is keyboard navigation friendly; +has efficient, highly compressed dictionary data storage format with +ability to verify data integrity built-in.") + (license gpl3))) -- cgit v1.2.3 From a34816ef6e0abc91530701afe9d112da54edd499 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 20 Feb 2015 21:53:07 +0100 Subject: gnu: chmlib: Patch for compilation on mips. * gnu/packages/patches/chmlib-inttypes.patch: New file. * gnu-system.am (dist_patch_DATA): Register patch. * gnu/packages/ebook.scm (chmlib): Apply patch. --- gnu-system.am | 3 +- gnu/packages/ebook.scm | 6 ++- gnu/packages/patches/chmlib-inttypes.patch | 60 ++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/chmlib-inttypes.patch (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index eeadd8fdc6..71697be181 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -1,6 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès -# Copyright © 2013, 2014 Andreas Enge +# Copyright © 2013, 2014, 2015 Andreas Enge # Copyright © 2013, 2014, 2015 Mark H Weaver # # This file is part of GNU Guix. @@ -362,6 +362,7 @@ dist_patch_DATA = \ gnu/packages/patches/binutils-ld-new-dtags.patch \ gnu/packages/patches/binutils-loongson-workaround.patch \ gnu/packages/patches/cdparanoia-fpic.patch \ + gnu/packages/patches/chmlib-inttypes.patch \ gnu/packages/patches/clucene-pkgconfig.patch \ gnu/packages/patches/cmake-fix-tests.patch \ gnu/packages/patches/coreutils-dummy-man.patch \ diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index f34966c762..e4d609aaf2 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -20,7 +20,8 @@ #:use-module ((guix licenses) #:select (lgpl2.1+)) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages)) (define-public chmlib (package @@ -32,7 +33,8 @@ version ".tar.bz2")) (sha256 (base32 - "18zzb4x3z0d7fjh1x5439bs62dmgsi4c1pg3qyr7h5gp1i5xcj9l")))) + "18zzb4x3z0d7fjh1x5439bs62dmgsi4c1pg3qyr7h5gp1i5xcj9l")) + (patches (list (search-patch "chmlib-inttypes.patch"))))) (build-system gnu-build-system) (home-page "http://www.jedrea.com/chmlib/") (synopsis "Library for CHM files") diff --git a/gnu/packages/patches/chmlib-inttypes.patch b/gnu/packages/patches/chmlib-inttypes.patch new file mode 100644 index 0000000000..033e808792 --- /dev/null +++ b/gnu/packages/patches/chmlib-inttypes.patch @@ -0,0 +1,60 @@ +Taken from Debian, necessary for compilation on mips. + +Patch to fix integer types problem by Goswin von Brederlow + (#258444) +--- chmlib-0.39.orig/src/chm_lib.c ++++ chmlib-0.39/src/chm_lib.c +@@ -56,6 +56,7 @@ + + #include "lzx.h" + ++#include + #include + #include + #ifdef CHM_DEBUG +@@ -149,22 +150,9 @@ + typedef __int64 Int64; + typedef unsigned __int64 UInt64; + +-/* I386, 32-bit, non-Windows */ +-/* Sparc */ +-/* MIPS */ +-/* PPC */ +-#elif __i386__ || __sun || __sgi || __ppc__ +-typedef unsigned char UChar; +-typedef short Int16; +-typedef unsigned short UInt16; +-typedef long Int32; +-typedef unsigned long UInt32; +-typedef long long Int64; +-typedef unsigned long long UInt64; +- + /* x86-64 */ + /* Note that these may be appropriate for other 64-bit machines. */ +-#elif __x86_64__ || __ia64__ ++#elif defined(__LP64__) + typedef unsigned char UChar; + typedef short Int16; + typedef unsigned short UInt16; +@@ -173,10 +161,18 @@ + typedef long Int64; + typedef unsigned long UInt64; + ++/* I386, 32-bit, non-Windows */ ++/* Sparc */ ++/* MIPS */ ++/* PPC */ + #else +- +-/* yielding an error is preferable to yielding incorrect behavior */ +-#error "Please define the sized types for your platform in chm_lib.c" ++typedef unsigned char UChar; ++typedef short Int16; ++typedef unsigned short UInt16; ++typedef long Int32; ++typedef unsigned long UInt32; ++typedef long long Int64; ++typedef unsigned long long UInt64; + #endif + + /* GCC */ -- cgit v1.2.3 From 8cc91fa04131e1b37339bd08c48b117f1c32aa29 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 21 Feb 2015 19:24:54 +0100 Subject: gnu: Add weex. * gnu/packages/ftp.scm (weex): New variable. * gnu/packages/patches/weex-vacopy.patch: New file. * gnu-system.am (dist_patch_DATA): Register patch. --- gnu-system.am | 1 + gnu/packages/ftp.scm | 46 +++++++++++++++++++++++++++++++--- gnu/packages/patches/weex-vacopy.patch | 13 ++++++++++ 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/weex-vacopy.patch (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 71697be181..24c5dc1a91 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -504,6 +504,7 @@ dist_patch_DATA = \ gnu/packages/patches/vpnc-script.patch \ gnu/packages/patches/vtk-mesa-10.patch \ gnu/packages/patches/w3m-fix-compile.patch \ + gnu/packages/patches/weex-vacopy.patch \ gnu/packages/patches/wicd-urwid-1.3.patch \ gnu/packages/patches/wmctrl-64-fix.patch \ gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \ diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm index c5649812c0..f002122bb6 100644 --- a/gnu/packages/ftp.scm +++ b/gnu/packages/ftp.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2015 Andreas Enge ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,10 +18,11 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages ftp) - #:use-module ((guix licenses) #:select (gpl3+ clarified-artistic)) - #:use-module (guix packages) - #:use-module (guix download) + #:use-module ((guix licenses) #:select (gpl2+ gpl3+ clarified-artistic)) #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (gnu packages) #:use-module (gnu packages ncurses) #:use-module (gnu packages readline) #:use-module (gnu packages pkg-config) @@ -103,3 +105,41 @@ File Transfer Protocol (FTP) servers. This includes 'ncftp', an interactive FTP browser, as well as non-interactive commands such as 'ncftpput' and 'ncftpget'.") (license clarified-artistic))) + + +(define-public weex + (package + (name "weex") + (version "2.6.1.5") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/weex/weex/" version + "/weex-" version ".tar.gz")) + (sha256 + (base32 + "0f5cj5p852wkm24mzy2sxgxyahv2p9rk4wlq21j310pi7wlhgwyl")) + (patches (list (search-patch "weex-vacopy.patch"))))) + (build-system gnu-build-system) + (arguments + `(#:phases + (alist-replace 'configure + ;; configure does not work followed by both "SHELL=..." and + ;; "CONFIG_SHELL=..."; set environment variables instead + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (which "bash"))) + (setenv "SHELL" bash) + (setenv "CONFIG_SHELL" bash) + (zero? (system* bash "./configure" + (string-append "--prefix=" out))))) + %standard-phases))) + (home-page "http://weex.sourceforge.net/") + (synopsis "Non-interactive client for FTP synchronization") + (description + "Weex is a utility designed to automate the task of remotely +maintaining a web page or other FTP archive. It synchronizes a set of +local files to a remote server by performing uploads and remote deletes +as required.") + (license gpl2+))) diff --git a/gnu/packages/patches/weex-vacopy.patch b/gnu/packages/patches/weex-vacopy.patch new file mode 100644 index 0000000000..f593e86c08 --- /dev/null +++ b/gnu/packages/patches/weex-vacopy.patch @@ -0,0 +1,13 @@ +Taken from the Debian 2.8.0 package. + +--- weex-2.6.1.5/src/strlib.c 2003-08-18 11:52:38.000000000 +0200 ++++ weex-2.8.0/src/strlib.c 2007-12-04 14:22:02.000000000 +0100 +@@ -42,6 +42,8 @@ + # define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2)) + # elif defined (G_VA_COPY_AS_ARRAY) + # define G_VA_COPY(ap1, ap2) g_memmove ((ap1), (ap2), sizeof (va_list)) ++# elif defined (__x86_64__) ++# define G_VA_COPY(ap1, ap2) memmove ((ap1), (ap2), sizeof (va_list)) + # else /* va_list is a pointer */ + # define G_VA_COPY(ap1, ap2) ((ap1) = (ap2)) + # endif /* va_list is a pointer */ -- cgit v1.2.3 From 927b6728f0129d625892e69f1fff6dd7e3324c66 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Fri, 20 Feb 2015 15:15:12 +0100 Subject: gnu: Add wxwidgets. * gnu/packages/wxwidgets.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/wxwidgets.scm | 97 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 gnu/packages/wxwidgets.scm (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 24c5dc1a91..3eb7893481 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -294,6 +294,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/wine.scm \ gnu/packages/wordnet.scm \ gnu/packages/wv.scm \ + gnu/packages/wxwidgets.scm \ gnu/packages/xfig.scm \ gnu/packages/xiph.scm \ gnu/packages/xml.scm \ diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm new file mode 100644 index 0000000000..5406aedc6e --- /dev/null +++ b/gnu/packages/wxwidgets.scm @@ -0,0 +1,97 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; +;;; 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 . + +(define-module (gnu packages wxwidgets) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix l:) + #:use-module (guix build-system glib-or-gtk) + #:use-module (guix build utils) + #:use-module (gnu packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages databases) + #:use-module (gnu packages gl) + #:use-module (gnu packages gstreamer) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages sdl) + #:use-module (gnu packages xorg)) + +(define-public wxwidgets + (package + (name "wxwidgets") + (version "3.0.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/wxwindows/" version + "/wxWidgets-" version ".tar.bz2")) + (sha256 + (base32 "0paq27brw4lv8kspxh9iklpa415mxi8zc117vbbbhfjgapf7js1l")))) + (build-system glib-or-gtk-build-system) + ;; TODO: add WebKit + (inputs + `(("glu" ,glu) + ;; XXX gstreamer-0.10 builds fail + ;; ("gstreamer" ,gstreamer-0.10) + ("gtk" ,gtk+) + ("libjpeg" ,libjpeg) + ("libmspack" ,libmspack) + ("libsm" ,libsm) + ("libtiff" ,libtiff) + ("mesa" ,mesa) + ("sdl" ,sdl))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (arguments + '(#:configure-flags + '("--with-regex=sys" "--with-libmspack" "--with-sdl") + ;; No 'check' target. + #:tests? #f)) + (home-page "https://www.wxwidgets.org/") + (synopsis "Widget toolkit for creating graphical user interfaces") + (description + "wxWidgets is a C++ library that lets developers create applications with +a graphical user interface. It has language bindings for Python, Perl, Ruby +and many other languages.") + (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt"))))) + +(define-public wxwidgets-2 + (package + (inherit wxwidgets) + (version "2.8.12") + (source + (origin + (method url-fetch) + (uri (string-append "https://sourceforge.net/projects/wxwindows/files/" + version "/wxGTK-" version ".tar.gz")) + (sha256 + (base32 "1gjs9vfga60mk4j4ngiwsk9h6c7j22pw26m3asxr1jwvqbr8kkqk")))) + (inputs + `(("gtk" ,gtk+-2) + ("libjpeg" ,libjpeg) + ("libtiff" ,libtiff) + ("libmspack" ,libmspack) + ("sdl" ,sdl) + ("unixodbc" ,unixodbc))) + (arguments + `(#:configure-flags + '("--enable-unicode" "--with-regex=sys" "--with-sdl") + ;; No 'check' target. + #:tests? #f)))) -- cgit v1.2.3 From 61452a5ab13bcb7ac4d65cfbe7937281204d6f23 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 20 Feb 2015 19:53:27 -0500 Subject: gnu: Add pumpa. * gnu/packages/pumpio.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/pumpio.scm | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 gnu/packages/pumpio.scm (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 3eb7893481..dfd672b2d3 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -233,6 +233,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/popt.scm \ gnu/packages/pth.scm \ gnu/packages/pulseaudio.scm \ + gnu/packages/pumpio.scm \ gnu/packages/pretty-print.scm \ gnu/packages/protobuf.scm \ gnu/packages/python.scm \ diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm new file mode 100644 index 0000000000..4a6375f3f2 --- /dev/null +++ b/gnu/packages/pumpio.scm @@ -0,0 +1,68 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; 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 . + +(define-module (gnu packages pumpio) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages aspell) + #:use-module (gnu packages kde) + #:use-module (gnu packages qt) + #:use-module (gnu packages web)) + +(define-public pumpa + (package + (name "pumpa") + (version "0.9") + (source (origin + (method git-fetch) ; no source tarballs + (uri (git-reference + (url "https://gitorious.org/pumpa/pumpa.git") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0v55xq17wnc9mvpmrm5r3rjrsg9npnjv1lznbz8ppk77ba8pwimy")))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Fix dependency tests. + (substitute* "pumpa.pro" + (("/usr/include/tidy\\.h") + (string-append (assoc-ref inputs "tidy") + "/include/tidy.h")) + (("/usr/include/aspell.h") + (string-append (assoc-ref inputs "aspell") + "/include/aspell.h"))) + ;; Run qmake with proper installation prefix. + (let ((prefix (string-append "PREFIX=" + (assoc-ref outputs "out")))) + (zero? (system* "qmake" prefix)))) + %standard-phases))) + (inputs + `(("aspell" ,aspell) + ("qt" ,qt) + ("qjson" ,qjson) + ("tidy" ,tidy))) + (synopsis "Qt-based pump.io client") + (description "Pumpa is a simple pump.io client written in C++ and Qt.") + (home-page "https://pumpa.branchable.com/") + (license gpl3+))) -- cgit v1.2.3 From da71f145c6bf1aab4e5e9378609f4d5d6eae1093 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 25 Feb 2015 00:56:31 +0100 Subject: gnu: Add python2-rdflib. * gnu/packages/rdf.scm (python2-rdflib): New variable. (python-rdflib): Add patch. * gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch: New file. * gnu-system.am (dist_patch_DATA): Register patch. --- gnu-system.am | 1 + .../patches/python2-rdflib-drop-sparqlwrapper.patch | 16 ++++++++++++++++ gnu/packages/rdf.scm | 13 +++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index dfd672b2d3..76ef6f873a 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -479,6 +479,7 @@ dist_patch_DATA = \ gnu/packages/patches/python-fix-tests.patch \ gnu/packages/patches/python-libffi-mips-n32-fix.patch \ gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch \ + gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ gnu/packages/patches/qt4-tests.patch \ diff --git a/gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch b/gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch new file mode 100644 index 0000000000..53f8fde9de --- /dev/null +++ b/gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch @@ -0,0 +1,16 @@ +Drop SPARQLWrapper from the required install inputs under Python 2, as it +creates a circular dependency. + +diff -u rdflib-4.1.2.alt/setup.py rdflib-4.1.2/setup.py +--- rdflib-4.1.2.alt/setup.py 2014-03-04 12:40:26.000000000 +0100 ++++ rdflib-4.1.2/setup.py 2015-01-23 21:52:59.000000000 +0100 +@@ -52,7 +52,7 @@ + kwargs['test_suite'] = "nose.collector" + kwargs['install_requires'] = [ + 'isodate', +- 'pyparsing', 'SPARQLWrapper'] ++ 'pyparsing'] + + if sys.version_info[1]<7: # Python 2.6 + kwargs['install_requires'].append('ordereddict') + diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index 6895b36beb..ab6eb8940e 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -319,6 +319,9 @@ system.") "https://pypi.python.org/packages/source/r/rdflib/rdflib-" version ".tar.gz")) + (patches + ;; The patch has no effect under Python 3. + (list (search-patch "python2-rdflib-drop-sparqlwrapper.patch"))) (sha256 (base32 "0kvaf332cqbi47rqzlpdx4mbkvw12mkrzkj8n9l19wk713d4py9w")))) @@ -336,3 +339,13 @@ system.") powerful language for representing information.") (license (bsd-style "file://LICENSE" "See LICENSE in the distribution.")))) + +(define-public python2-rdflib + (let ((base (package-with-python2 python-rdflib))) + (package + (inherit base) + (inputs + (append (package-inputs base) + `(("python2-nose" ,python2-nose)))) + (arguments + `(#:tests? #f))))) ; 3 tests fail, also outside Guix -- cgit v1.2.3 From e6caa52d859718596fe56bcd4033917457864912 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Wed, 18 Feb 2015 21:20:57 +0100 Subject: gnu: Add cpufrequtils. * gnu/packages/linux.scm (cpufrequtils): New variable. * gnu/packages/patches/cpufrequtils-fix-aclocal.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/linux.scm | 28 +++++++++++++ .../patches/cpufrequtils-fix-aclocal.patch | 46 ++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 gnu/packages/patches/cpufrequtils-fix-aclocal.patch (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 76ef6f873a..186c6c2fc9 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -374,6 +374,7 @@ dist_patch_DATA = \ gnu/packages/patches/cpio-CVE-2014-9112-pt4.patch \ gnu/packages/patches/cpio-CVE-2014-9112-pt5.patch \ gnu/packages/patches/cpio-gets-undeclared.patch \ + gnu/packages/patches/cpufrequtils-fix-aclocal.patch \ gnu/packages/patches/cssc-gets-undeclared.patch \ gnu/packages/patches/cssc-missing-include.patch \ gnu/packages/patches/clucene-contribs-lib.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 33214eb366..dc280a01fe 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1961,3 +1961,31 @@ also contains the libsysfs library.") (("includedir='(\\$\\{prefix\\}/include)'" all orig) (string-append "includedir='" orig "/sysfs'"))))))) (synopsis "System utilities based on Linux sysfs (version 1.x)"))) + +(define-public cpufrequtils + (package + (name "cpufrequtils") + (version "0.3") + (source + (origin + (method url-fetch) + (uri + (string-append + "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils-" + version ".tar.gz")) + (sha256 + (base32 "0qfqv7nqmjfr3p0bwrdlxkiqwqr7vmx053cadaa548ybqbghxmvm")) + (patches (list (search-patch "cpufrequtils-fix-aclocal.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("sysfsutils" ,sysfsutils-1))) + (arguments + '(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")))) + (home-page "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/") + (synopsis "Utilities to get and set CPU frequency on Linux") + (description + "The cpufrequtils suite contains utilities to retreive CPU frequency +information, and set the CPU frequency if supported, using the cpufreq +capabilities of the Linux kernel.") + (license gpl2))) diff --git a/gnu/packages/patches/cpufrequtils-fix-aclocal.patch b/gnu/packages/patches/cpufrequtils-fix-aclocal.patch new file mode 100644 index 0000000000..be5767f462 --- /dev/null +++ b/gnu/packages/patches/cpufrequtils-fix-aclocal.patch @@ -0,0 +1,46 @@ +Add an extra layer of quoting to ltmain.sh sanity check. + +--- a/configure 2005-05-07 14:19:31.000000000 +0200 ++++ b/configure 2015-02-10 11:16:32.456146934 +0100 +@@ -6266,7 +6266,7 @@ + exit 1 + fi + gentoo_lt_version="1.5.16" +-gentoo_ltmain_version=`grep '^[:space:]*VERSION=' $ltmain | sed -e 's|^[:space:]*VERSION=||'` ++gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'` + if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then + echo "$as_me:$LINENO: result: no" >&5 + echo "${ECHO_T}no" >&6 +--- a/aclocal.m4 2005-05-07 14:19:25.000000000 +0200 ++++ b/aclocal.m4 2015-02-10 11:16:15.352030318 +0100 +@@ -246,7 +246,7 @@ + exit 1 + fi + gentoo_lt_version="1.5.16" +-gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'` ++gentoo_ltmain_version=`[grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||']` + if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then + AC_MSG_RESULT(no) + echo +--- a/libcpufreq/configure 2005-05-07 14:19:31.000000000 +0200 ++++ b/libcpufreq/configure 2015-02-10 11:16:32.456146934 +0100 +@@ -6266,7 +6266,7 @@ + exit 1 + fi + gentoo_lt_version="1.5.16" +-gentoo_ltmain_version=`grep '^[:space:]*VERSION=' $ltmain | sed -e 's|^[:space:]*VERSION=||'` ++gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'` + if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then + echo "$as_me:$LINENO: result: no" >&5 + echo "${ECHO_T}no" >&6 +--- a/libcpufreq/aclocal.m4 2005-05-07 14:19:25.000000000 +0200 ++++ b/libcpufreq/aclocal.m4 2015-02-10 11:16:15.352030318 +0100 +@@ -246,7 +246,7 @@ + exit 1 + fi + gentoo_lt_version="1.5.16" +-gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'` ++gentoo_ltmain_version=`[grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||']` + if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then + AC_MSG_RESULT(no) + echo -- cgit v1.2.3 From cab6a2535abfe0d5dbf7c3e88d51de62becaf370 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Feb 2015 16:52:05 +0100 Subject: gnu: Add OpenEXR and IlmBase. * gnu/packages/graphics.scm (ilmbase, openexr): New variables. * gnu/packages/patches/openexr-missing-samples.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/graphics.scm | 56 ++++++++++++++++++++++ gnu/packages/patches/openexr-missing-samples.patch | 23 +++++++++ 3 files changed, 80 insertions(+) create mode 100644 gnu/packages/patches/openexr-missing-samples.patch (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 186c6c2fc9..5a8b111239 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -460,6 +460,7 @@ dist_patch_DATA = \ gnu/packages/patches/nvi-assume-preserve-path.patch \ gnu/packages/patches/nvi-dbpagesize-binpower.patch \ gnu/packages/patches/nvi-db4.patch \ + gnu/packages/patches/openexr-missing-samples.patch \ gnu/packages/patches/orpheus-cast-errors-and-includes.patch \ gnu/packages/patches/ots-no-include-missing-file.patch \ gnu/packages/patches/patchelf-page-size.patch \ diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 55d2a198eb..7cbb86fe6e 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -22,6 +22,9 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages compression) #:use-module (gnu packages multiprecision) #:use-module (gnu packages boost)) @@ -63,3 +66,56 @@ many more.") ;; The 'LICENSE' file explains that a subset is available under more ;; permissive licenses. (license license:gpl3+))) + +(define-public ilmbase + (package + (name "ilmbase") + (version "2.2.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/openexr/ilmbase-" + version ".tar.gz")) + (sha256 + (base32 + "1izddjwbh1grs8080vmaix72z469qy29wrvkphgmqmcm0sv1by7c")))) + (build-system gnu-build-system) + (home-page "http://www.openexr.com/") + (synopsis "Utility C++ libraries for threads, maths, and exceptions") + (description + "IlmBase provides several utility libraries for C++. Half is a class +that encapsulates ILM's 16-bit floating-point format. IlmThread is a thread +abstraction. Imath implements 2D and 3D vectors, 3x3 and 4x4 matrices, +quaternions and other useful 2D and 3D math functions. Iex is an +exception-handling library.") + (license license:bsd-3))) + +(define-public openexr + (package + (name "openexr") + (version "2.2.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/openexr/openexr-" + version ".tar.gz")) + (sha256 + (base32 + "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n")) + (modules '((guix build utils))) + (snippet + '(substitute* (find-files "." "tmpDir\\.h") + (("\"/var/tmp/\"") + "\"/tmp/\""))) + (patches (list (search-patch "openexr-missing-samples.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("ilmbase" ,ilmbase) ;used in public headers + ("zlib" ,zlib))) ;OpenEXR.pc reads "-lz" + (home-page "http://www.openexr.com") + (synopsis #f) + (description + "OpenEXR is a high dynamic-range (HDR) image file format developed for +use in computer imaging applications. The IlmImf libraries supports storage +of the \"EXR\" file format for storing 16-bit floating-point images.") + (license license:bsd-3))) diff --git a/gnu/packages/patches/openexr-missing-samples.patch b/gnu/packages/patches/openexr-missing-samples.patch new file mode 100644 index 0000000000..16cc9bb625 --- /dev/null +++ b/gnu/packages/patches/openexr-missing-samples.patch @@ -0,0 +1,23 @@ +This patch comments out tests that rely on files that are missing +from the source tarball. + +--- openexr-2.2.0/IlmImfTest/testSampleImages.cpp 2015-02-25 16:19:21.565105625 +0100 ++++ openexr-2.2.0/IlmImfTest/testSampleImages.cpp 2015-02-25 16:21:46.394128206 +0100 +@@ -162,16 +162,6 @@ testSampleImages (const std::string&) + compareImages (ILM_IMF_TEST_IMAGEDIR "comp_b44.exr", + ILM_IMF_TEST_IMAGEDIR "comp_b44_piz.exr"); + +- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwaa_v1.exr", +- ILM_IMF_TEST_IMAGEDIR "comp_dwaa_piz.exr"); +- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwaa_v2.exr", +- ILM_IMF_TEST_IMAGEDIR "comp_dwaa_piz.exr"); +- +- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwab_v1.exr", +- ILM_IMF_TEST_IMAGEDIR "comp_dwab_piz.exr"); +- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwab_v2.exr", +- ILM_IMF_TEST_IMAGEDIR "comp_dwab_piz.exr"); +- + + cout << "ok\n" << endl; + } + -- cgit v1.2.3 From dcaf2511d7a17ab34444ae74b31594ca30a65ff5 Mon Sep 17 00:00:00 2001 From: Tomáš Čech Date: Wed, 25 Feb 2015 14:51:32 +0100 Subject: gnu: Fix luajit installation * gnu/packages/lua.scm (luajit): Apply 2 patches. * gnu-system.am (dist_patch_DATA): Register 2 patches. * gnu/packages/patches/luajit-no_ldconfig.patch: New file. * gnu/packages/patches/luajit-symlinks.patch: New file. --- gnu-system.am | 2 ++ gnu/packages/lua.scm | 4 +++- gnu/packages/patches/luajit-no_ldconfig.patch | 31 +++++++++++++++++++++++++++ gnu/packages/patches/luajit-symlinks.patch | 25 +++++++++++++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/luajit-no_ldconfig.patch create mode 100644 gnu/packages/patches/luajit-symlinks.patch (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 5a8b111239..851068e496 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -441,6 +441,8 @@ dist_patch_DATA = \ gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua51-liblua-so.patch \ + gnu/packages/patches/luajit-2.0.3-no_ldconfig.patch \ + gnu/packages/patches/luajit-2.0.3-symlinks.patch \ gnu/packages/patches/luit-posix.patch \ gnu/packages/patches/m4-gets-undeclared.patch \ gnu/packages/patches/make-impure-dirs.patch \ diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index eda69f93ba..9a3a83f48f 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -87,7 +87,9 @@ for configuration, scripting, and rapid prototyping.") (uri (string-append "http://luajit.org/download/LuaJIT-" version ".tar.gz")) (sha256 - (base32 "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm")))) + (base32 "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm")) + (patches (list (search-patch "luajit-symlinks.patch") + (search-patch "luajit-no_ldconfig.patch"))))) (build-system gnu-build-system) (arguments '(#:tests? #f ;luajit is distributed without tests diff --git a/gnu/packages/patches/luajit-no_ldconfig.patch b/gnu/packages/patches/luajit-no_ldconfig.patch new file mode 100644 index 0000000000..8000e8e4e5 --- /dev/null +++ b/gnu/packages/patches/luajit-no_ldconfig.patch @@ -0,0 +1,31 @@ +From 629200f48e18dc1a3a5229739748bad0e2a6a0a2 Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= +Date: Wed, 4 Feb 2015 11:37:16 +0100 +Subject: [PATCH] Do not silently and prematurely end install when ldconfig is + missing + +--- + Makefile | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 343ecb5..4667146 100644 +--- a/Makefile ++++ b/Makefile +@@ -112,9 +112,10 @@ install: $(INSTALL_DEP) + $(RM) $(INSTALL_TSYM) $(INSTALL_DYN) $(INSTALL_SHORT1) $(INSTALL_SHORT2) + cd src && test -f $(FILE_SO) && \ + $(INSTALL_X) $(FILE_SO) $(INSTALL_DYN) && \ +- $(LDCONFIG) $(INSTALL_LIB) && \ +- $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \ +- $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || : ++ ( $(LDCONFIG) $(INSTALL_LIB) ; \ ++ $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \ ++ $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || : \ ++ ) + cd etc && $(INSTALL_F) $(FILE_MAN) $(INSTALL_MAN) + cd etc && $(SED_PC) $(FILE_PC) > $(FILE_PC).tmp && \ + $(INSTALL_F) $(FILE_PC).tmp $(INSTALL_PC) && \ +-- +2.2.2 + diff --git a/gnu/packages/patches/luajit-symlinks.patch b/gnu/packages/patches/luajit-symlinks.patch new file mode 100644 index 0000000000..2466c34144 --- /dev/null +++ b/gnu/packages/patches/luajit-symlinks.patch @@ -0,0 +1,25 @@ +From 0a54a8f125d7ab508c7c88d5ad4ed1b0c63cb5b6 Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= +Date: Wed, 4 Feb 2015 11:32:55 +0100 +Subject: [PATCH 1/2] Provide two symlinks for dynamic library during install + +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 0891b71..343ecb5 100644 +--- a/Makefile ++++ b/Makefile +@@ -56,7 +56,7 @@ INSTALL_PCNAME= luajit.pc + INSTALL_STATIC= $(INSTALL_LIB)/$(INSTALL_ANAME) + INSTALL_DYN= $(INSTALL_LIB)/$(INSTALL_SONAME) + INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT) +-INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT) ++INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT).$(MAJVER) + INSTALL_T= $(INSTALL_BIN)/$(INSTALL_TNAME) + INSTALL_TSYM= $(INSTALL_BIN)/$(INSTALL_TSYMNAME) + INSTALL_PC= $(INSTALL_PKGCONFIG)/$(INSTALL_PCNAME) +-- +2.2.2 + -- cgit v1.2.3 From 5be2f8844dba4aab0c134f61a830acb16b56d2c5 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 25 Feb 2015 21:00:43 -0500 Subject: gnu: luajit: Fix patch file names in gnu-system.am. * gnu-system.am (dist_patch_DATA): Fix patch file names. --- gnu-system.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 851068e496..70603162a1 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -441,8 +441,8 @@ dist_patch_DATA = \ gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua51-liblua-so.patch \ - gnu/packages/patches/luajit-2.0.3-no_ldconfig.patch \ - gnu/packages/patches/luajit-2.0.3-symlinks.patch \ + gnu/packages/patches/luajit-no_ldconfig.patch \ + gnu/packages/patches/luajit-symlinks.patch \ gnu/packages/patches/luit-posix.patch \ gnu/packages/patches/m4-gets-undeclared.patch \ gnu/packages/patches/make-impure-dirs.patch \ -- cgit v1.2.3 From 8830740643397d8d38e018c728ed62d0bcb4c310 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 26 Feb 2015 00:16:07 -0500 Subject: gnu: icecat: Apply fixes for CVE-2015-{0822,0827,0831,0836}. * gnu/packages/patches/icecat-CVE-2015-0822.patch, gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch, gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch, gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch, gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch, gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch, gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch: New files. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/gnuzilla.scm (icecat)[source]: Add patches. --- gnu-system.am | 17 ++ gnu/packages/gnuzilla.scm | 20 +- gnu/packages/patches/icecat-CVE-2015-0822.patch | 154 +++++++++++++++ .../patches/icecat-CVE-2015-0827-pt-1.patch | 33 ++++ .../patches/icecat-CVE-2015-0827-pt-2.patch | 35 ++++ .../patches/icecat-CVE-2015-0827-pt-3.patch | 56 ++++++ .../patches/icecat-CVE-2015-0831-pt-1.patch | 32 +++ .../patches/icecat-CVE-2015-0831-pt-2.patch | 26 +++ .../patches/icecat-CVE-2015-0836-pt-01.patch | 26 +++ .../patches/icecat-CVE-2015-0836-pt-02.patch | 27 +++ .../patches/icecat-CVE-2015-0836-pt-03.patch | 220 +++++++++++++++++++++ .../patches/icecat-CVE-2015-0836-pt-04.patch | 89 +++++++++ .../patches/icecat-CVE-2015-0836-pt-05.patch | 25 +++ .../patches/icecat-CVE-2015-0836-pt-06.patch | 41 ++++ .../patches/icecat-CVE-2015-0836-pt-07.patch | 54 +++++ .../patches/icecat-CVE-2015-0836-pt-08.patch | 53 +++++ .../patches/icecat-CVE-2015-0836-pt-09.patch | 52 +++++ .../patches/icecat-CVE-2015-0836-pt-10.patch | 219 ++++++++++++++++++++ .../patches/icecat-CVE-2015-0836-pt-11.patch | 104 ++++++++++ 19 files changed, 1282 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/icecat-CVE-2015-0822.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch (limited to 'gnu-system.am') diff --git a/gnu-system.am b/gnu-system.am index 70603162a1..e42e89ab80 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -421,6 +421,23 @@ dist_patch_DATA = \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ + gnu/packages/patches/icecat-CVE-2015-0822.patch \ + gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch \ + gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch \ + gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch \ + gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch \ + gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch \ + gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/kmod-module-directory.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 06cf90a7ee..335cfd1983 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -224,7 +224,25 @@ standards.") version "/" name "-" version ".tar.bz2")) (sha256 (base32 - "0q5ilgfybcrbwf9hq9zc1cpnlhq1pddnnjmdrxrcrrg8lgx5kkc2")))) + "0q5ilgfybcrbwf9hq9zc1cpnlhq1pddnnjmdrxrcrrg8lgx5kkc2")) + (patches (map search-patch + '("icecat-CVE-2015-0822.patch" + "icecat-CVE-2015-0827-pt-1.patch" + "icecat-CVE-2015-0827-pt-2.patch" + "icecat-CVE-2015-0827-pt-3.patch" + "icecat-CVE-2015-0831-pt-1.patch" + "icecat-CVE-2015-0831-pt-2.patch" + "icecat-CVE-2015-0836-pt-01.patch" + "icecat-CVE-2015-0836-pt-02.patch" + "icecat-CVE-2015-0836-pt-03.patch" + "icecat-CVE-2015-0836-pt-04.patch" + "icecat-CVE-2015-0836-pt-05.patch" + "icecat-CVE-2015-0836-pt-06.patch" + "icecat-CVE-2015-0836-pt-07.patch" + "icecat-CVE-2015-0836-pt-08.patch" + "icecat-CVE-2015-0836-pt-09.patch" + "icecat-CVE-2015-0836-pt-10.patch" + "icecat-CVE-2015-0836-pt-11.patch"))))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/patches/icecat-CVE-2015-0822.patch b/gnu/packages/patches/icecat-CVE-2015-0822.patch new file mode 100644 index 0000000000..2625151453 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0822.patch @@ -0,0 +1,154 @@ +From 0922145c255bf2503d3b2dd5f8f1e813338ba990 Mon Sep 17 00:00:00 2001 +From: Mats Palmgren +Date: Sat, 24 Jan 2015 12:37:47 -0500 +Subject: [PATCH] Bug 1110557. r=mak, r=gavin, a=bkerensa + +--- + .../components/satchel/nsFormFillController.cpp | 67 +++++++++++++++------- + toolkit/components/satchel/nsFormFillController.h | 5 ++ + 2 files changed, 52 insertions(+), 20 deletions(-) + +diff --git a/toolkit/components/satchel/nsFormFillController.cpp b/toolkit/components/satchel/nsFormFillController.cpp +index 315fc68..676ad84 100644 +--- a/toolkit/components/satchel/nsFormFillController.cpp ++++ b/toolkit/components/satchel/nsFormFillController.cpp +@@ -61,6 +61,7 @@ nsFormFillController::nsFormFillController() : + mSuppressOnInput(false) + { + mController = do_GetService("@mozilla.org/autocomplete/controller;1"); ++ MOZ_ASSERT(mController); + } + + struct PwmgrInputsEnumData +@@ -104,6 +105,21 @@ nsFormFillController::AttributeChanged(nsIDocument* aDocument, + int32_t aNameSpaceID, + nsIAtom* aAttribute, int32_t aModType) + { ++ if ((aAttribute == nsGkAtoms::type || aAttribute == nsGkAtoms::readonly || ++ aAttribute == nsGkAtoms::autocomplete) && ++ aNameSpaceID == kNameSpaceID_None) { ++ nsCOMPtr focusedInput(mFocusedInput); ++ // Reset the current state of the controller, unconditionally. ++ StopControllingInput(); ++ // Then restart based on the new values. We have to delay this ++ // to avoid ending up in an endless loop due to re-registering our ++ // mutation observer (which would notify us again for *this* event). ++ nsCOMPtr event = ++ NS_NewRunnableMethodWithArg> ++ (this, &nsFormFillController::MaybeStartControllingInput, focusedInput); ++ NS_DispatchToCurrentThread(event); ++ } ++ + if (mListNode && mListNode->Contains(aElement)) { + RevalidateDataList(); + } +@@ -841,28 +857,26 @@ nsFormFillController::RemoveForDocumentEnumerator(const nsINode* aKey, + return PL_DHASH_NEXT; + } + +-nsresult +-nsFormFillController::Focus(nsIDOMEvent* aEvent) ++void ++nsFormFillController::MaybeStartControllingInput(nsIDOMHTMLInputElement* aInput) + { +- nsCOMPtr input = do_QueryInterface( +- aEvent->InternalDOMEvent()->GetTarget()); +- nsCOMPtr inputNode = do_QueryInterface(input); ++ nsCOMPtr inputNode = do_QueryInterface(aInput); + if (!inputNode) +- return NS_OK; ++ return; + +- nsCOMPtr formControl = do_QueryInterface(input); ++ nsCOMPtr formControl = do_QueryInterface(aInput); + if (!formControl || !formControl->IsSingleLineTextControl(true)) +- return NS_OK; ++ return; + + bool isReadOnly = false; +- input->GetReadOnly(&isReadOnly); ++ aInput->GetReadOnly(&isReadOnly); + if (isReadOnly) +- return NS_OK; ++ return; + +- bool autocomplete = nsContentUtils::IsAutocompleteEnabled(input); ++ bool autocomplete = nsContentUtils::IsAutocompleteEnabled(aInput); + + nsCOMPtr datalist; +- input->GetList(getter_AddRefs(datalist)); ++ aInput->GetList(getter_AddRefs(datalist)); + bool hasList = datalist != nullptr; + + bool dummy; +@@ -871,9 +885,16 @@ nsFormFillController::Focus(nsIDOMEvent* aEvent) + isPwmgrInput = true; + + if (isPwmgrInput || hasList || autocomplete) { +- StartControllingInput(input); ++ StartControllingInput(aInput); + } ++} + ++nsresult ++nsFormFillController::Focus(nsIDOMEvent* aEvent) ++{ ++ nsCOMPtr input = do_QueryInterface( ++ aEvent->InternalDOMEvent()->GetTarget()); ++ MaybeStartControllingInput(input); + return NS_OK; + } + +@@ -1087,6 +1108,10 @@ nsFormFillController::StartControllingInput(nsIDOMHTMLInputElement *aInput) + // Make sure we're not still attached to an input + StopControllingInput(); + ++ if (!mController) { ++ return; ++ } ++ + // Find the currently focused docShell + nsCOMPtr docShell = GetDocShellForInput(aInput); + int32_t index = GetIndexOfDocShell(docShell); +@@ -1129,13 +1154,15 @@ nsFormFillController::StopControllingInput() + mListNode = nullptr; + } + +- // Reset the controller's input, but not if it has been switched +- // to another input already, which might happen if the user switches +- // focus by clicking another autocomplete textbox +- nsCOMPtr input; +- mController->GetInput(getter_AddRefs(input)); +- if (input == this) +- mController->SetInput(nullptr); ++ if (mController) { ++ // Reset the controller's input, but not if it has been switched ++ // to another input already, which might happen if the user switches ++ // focus by clicking another autocomplete textbox ++ nsCOMPtr input; ++ mController->GetInput(getter_AddRefs(input)); ++ if (input == this) ++ mController->SetInput(nullptr); ++ } + + if (mFocusedInputNode) { + MaybeRemoveMutationObserver(mFocusedInputNode); +diff --git a/toolkit/components/satchel/nsFormFillController.h b/toolkit/components/satchel/nsFormFillController.h +index b60d28d..8c3ba26 100644 +--- a/toolkit/components/satchel/nsFormFillController.h ++++ b/toolkit/components/satchel/nsFormFillController.h +@@ -62,6 +62,11 @@ protected: + + void StartControllingInput(nsIDOMHTMLInputElement *aInput); + void StopControllingInput(); ++ /** ++ * Checks that aElement is a type of element we want to fill, then calls ++ * StartControllingInput on it. ++ */ ++ void MaybeStartControllingInput(nsIDOMHTMLInputElement* aElement); + + nsresult PerformInputListAutoComplete(nsIAutoCompleteResult* aPreviousResult); + +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch new file mode 100644 index 0000000000..c57da755d1 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch @@ -0,0 +1,33 @@ +From 28b6204b1421aa57b3c10c43d90cb516910bc80f Mon Sep 17 00:00:00 2001 +From: Markus Stange +Date: Tue, 6 Jan 2015 12:08:39 +0100 +Subject: [PATCH] Bug 1117304 - Also do the checks at the start of CopyRect in + release builds. r=Bas, a=sledru + +--- + gfx/2d/FilterNodeSoftware.cpp | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp +index 00d790f..396d0da 100644 +--- a/gfx/2d/FilterNodeSoftware.cpp ++++ b/gfx/2d/FilterNodeSoftware.cpp +@@ -253,9 +253,12 @@ CopyRect(DataSourceSurface* aSrc, DataSourceSurface* aDest, + MOZ_CRASH("we should never be getting invalid rects at this point"); + } + +- MOZ_ASSERT(aSrc->GetFormat() == aDest->GetFormat(), "different surface formats"); +- MOZ_ASSERT(IntRect(IntPoint(), aSrc->GetSize()).Contains(aSrcRect), "source rect too big for source surface"); +- MOZ_ASSERT(IntRect(IntPoint(), aDest->GetSize()).Contains(aSrcRect - aSrcRect.TopLeft() + aDestPoint), "dest surface too small"); ++ MOZ_RELEASE_ASSERT(aSrc->GetFormat() == aDest->GetFormat(), ++ "different surface formats"); ++ MOZ_RELEASE_ASSERT(IntRect(IntPoint(), aSrc->GetSize()).Contains(aSrcRect), ++ "source rect too big for source surface"); ++ MOZ_RELEASE_ASSERT(IntRect(IntPoint(), aDest->GetSize()).Contains(IntRect(aDestPoint, aSrcRect.Size())), ++ "dest surface too small"); + + if (aSrcRect.IsEmpty()) { + return; +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch new file mode 100644 index 0000000000..1ff68f4b4c --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch @@ -0,0 +1,35 @@ +From 5ff75fbe51d5760a96b4e614617c9cbf35f1fbaa Mon Sep 17 00:00:00 2001 +From: Markus Stange +Date: Mon, 5 Jan 2015 18:40:27 +0100 +Subject: [PATCH] Bug 1117304 - Make sure the tile filter doesn't call CopyRect + on surfaces with different formats. r=Bas, a=sledru + +--- + gfx/2d/FilterNodeSoftware.cpp | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp +index 396d0da..10d92c6 100644 +--- a/gfx/2d/FilterNodeSoftware.cpp ++++ b/gfx/2d/FilterNodeSoftware.cpp +@@ -1568,7 +1568,16 @@ FilterNodeTileSoftware::Render(const IntRect& aRect) + return nullptr; + } + } +- MOZ_ASSERT(input->GetFormat() == target->GetFormat(), "different surface formats from the same input?"); ++ ++ if (input->GetFormat() != target->GetFormat()) { ++ // Different rectangles of the input can have different formats. If ++ // that happens, just convert everything to B8G8R8A8. ++ target = FilterProcessing::ConvertToB8G8R8A8(target); ++ input = FilterProcessing::ConvertToB8G8R8A8(input); ++ if (MOZ2D_WARN_IF(!target) || MOZ2D_WARN_IF(!input)) { ++ return nullptr; ++ } ++ } + + CopyRect(input, target, srcRect - srcRect.TopLeft(), destRect.TopLeft() - aRect.TopLeft()); + } +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch new file mode 100644 index 0000000000..8d40126849 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch @@ -0,0 +1,56 @@ +From c91087708686ae1c47abee65e19536688e5ec8f2 Mon Sep 17 00:00:00 2001 +From: Ryan VanderMeulen +Date: Mon, 26 Jan 2015 17:24:46 -0500 +Subject: [PATCH] Bug 1117304 - Add missing MOZ2D_WARN_IF definition to fix + bustage. r=milan, a=bustage + +--- + gfx/2d/FilterNodeSoftware.cpp | 1 + + gfx/2d/Logging.h | 19 +++++++++++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp +index 10d92c6..48bf162 100644 +--- a/gfx/2d/FilterNodeSoftware.cpp ++++ b/gfx/2d/FilterNodeSoftware.cpp +@@ -12,6 +12,7 @@ + #include "Blur.h" + #include + #include "FilterProcessing.h" ++#include "Logging.h" + #include "mozilla/PodOperations.h" + #include "mozilla/DebugOnly.h" + +diff --git a/gfx/2d/Logging.h b/gfx/2d/Logging.h +index 85e788c..d7728bb 100644 +--- a/gfx/2d/Logging.h ++++ b/gfx/2d/Logging.h +@@ -155,6 +155,25 @@ typedef Log WarningLog; + #define gfxWarning if (1) ; else NoLog + #endif + ++// See nsDebug.h and the NS_WARN_IF macro ++ ++#ifdef __cplusplus ++#ifdef DEBUG ++inline bool MOZ2D_warn_if_impl(bool aCondition, const char* aExpr, ++ const char* aFile, int32_t aLine) ++{ ++ if (MOZ_UNLIKELY(aCondition)) { ++ gfxWarning() << aExpr << " at " << aFile << ":" << aLine; ++ } ++ return aCondition; ++} ++#define MOZ2D_WARN_IF(condition) \ ++ MOZ2D_warn_if_impl(condition, #condition, __FILE__, __LINE__) ++#else ++#define MOZ2D_WARN_IF(condition) (bool)(condition) ++#endif ++#endif ++ + const int INDENT_PER_LEVEL = 2; + + class TreeLog +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch b/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch new file mode 100644 index 0000000000..c04d604923 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch @@ -0,0 +1,32 @@ +From c8437505a63fc2b2552b8af217d60d79abb92ba3 Mon Sep 17 00:00:00 2001 +From: Ben Turner +Date: Fri, 6 Feb 2015 15:25:33 -0800 +Subject: [PATCH] Bug 1130541. r=janv, a=sledru + +--- + dom/indexedDB/IDBDatabase.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/dom/indexedDB/IDBDatabase.cpp b/dom/indexedDB/IDBDatabase.cpp +index 7329cec..c9c7e4f 100644 +--- a/dom/indexedDB/IDBDatabase.cpp ++++ b/dom/indexedDB/IDBDatabase.cpp +@@ -536,6 +536,7 @@ IDBDatabase::CreateObjectStore( + IDBTransaction* transaction = AsyncConnectionHelper::GetCurrentTransaction(); + + if (!transaction || ++ transaction->Database() != this || + transaction->GetMode() != IDBTransaction::VERSION_CHANGE) { + aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR); + return nullptr; +@@ -577,6 +578,7 @@ IDBDatabase::DeleteObjectStore(const nsAString& aName, ErrorResult& aRv) + IDBTransaction* transaction = AsyncConnectionHelper::GetCurrentTransaction(); + + if (!transaction || ++ transaction->Database() != this || + transaction->GetMode() != IDBTransaction::VERSION_CHANGE) { + aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR); + return; +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch b/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch new file mode 100644 index 0000000000..9510cd611f --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch @@ -0,0 +1,26 @@ +From 4e799e44288c951f8d9acd17e7d8c56c9ee6a7d3 Mon Sep 17 00:00:00 2001 +From: Ben Turner +Date: Mon, 9 Feb 2015 14:38:26 -0800 +Subject: [PATCH] Bug 1130541 followup a=test-only + +--HG-- +extra : amend_source : 23d80353f87897fdac9c99048d12ebe4ed390f76 +--- + dom/indexedDB/test/browser_quotaPrompt.html | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dom/indexedDB/test/browser_quotaPrompt.html b/dom/indexedDB/test/browser_quotaPrompt.html +index c139970..dbeea68 100644 +--- a/dom/indexedDB/test/browser_quotaPrompt.html ++++ b/dom/indexedDB/test/browser_quotaPrompt.html +@@ -38,6 +38,7 @@ + let request = indexedDB.open(window.location.pathname, version++); + request.onerror = errorHandler; + request.onupgradeneeded = function(event) { ++ let db = event.target.result; + db.deleteObjectStore("foo"); + db.onversionchange = function () { db.close(); }; + request.transaction.oncomplete = function(event) { +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch new file mode 100644 index 0000000000..f6e2756054 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch @@ -0,0 +1,26 @@ +From 4106ffa6ee83b814428bb07948b3595e3fa3847e Mon Sep 17 00:00:00 2001 +From: Jan de Mooij +Date: Tue, 10 Feb 2015 09:40:46 +0100 +Subject: [PATCH] Bug 1128196 - Don't relazify scripts with a TypeScript. + r=till, a=lmandel + +--- + js/src/jsscript.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/src/jsscript.h b/js/src/jsscript.h +index 4d548ef..9a0cfbb 100644 +--- a/js/src/jsscript.h ++++ b/js/src/jsscript.h +@@ -1251,7 +1251,7 @@ class JSScript : public js::gc::BarrieredCell + } + + bool isRelazifiable() const { +- return (selfHosted() || lazyScript) && ++ return (selfHosted() || lazyScript) && !types && + !isGenerator() && !hasBaselineScript() && !hasAnyIonScript() && !hasBeenInlined(); + } + void setLazyScript(js::LazyScript *lazy) { +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch new file mode 100644 index 0000000000..c95cf23a29 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch @@ -0,0 +1,27 @@ +From 83c4bfeea2d2203f726e3bfcb7ee6fe56b4d9703 Mon Sep 17 00:00:00 2001 +From: Ryan VanderMeulen +Date: Thu, 29 Jan 2015 10:31:25 -0500 +Subject: [PATCH] Bug 1111248. r=Waldo, a=sledru + +--- + js/src/jsbool.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/js/src/jsbool.cpp b/js/src/jsbool.cpp +index 5d88bd5..8d5d672 100644 +--- a/js/src/jsbool.cpp ++++ b/js/src/jsbool.cpp +@@ -198,7 +198,8 @@ js::ToBooleanSlow(HandleValue v) + bool + js::BooleanGetPrimitiveValueSlow(HandleObject wrappedBool) + { +- JSObject *obj = wrappedBool->as().target(); +- JS_ASSERT(obj); ++ JSObject *obj = CheckedUnwrap(wrappedBool); ++ if (!obj || !obj->is()) ++ return false; + return obj->as().unbox(); + } +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch new file mode 100644 index 0000000000..115cd76201 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch @@ -0,0 +1,220 @@ +From 4e4e34238e5bb5af83a645a5f4d2097e3b30e9dd Mon Sep 17 00:00:00 2001 +From: Tom Schuster +Date: Sun, 25 Jan 2015 21:42:10 +0100 +Subject: [PATCH] Bug 1111243 - Implement ES6 proxy behavior for IsArray. + r=efaust, a=abillings + +--- + browser/devtools/app-manager/app-projects.js | 2 ++ + js/public/Class.h | 5 +++- + js/src/jsarray.cpp | 9 ++++-- + js/src/jsobjinlines.h | 15 +++++++++- + js/src/json.cpp | 11 +++---- + js/src/jsproxy.cpp | 45 ++++++++++++++++++++++++++++ + 6 files changed, 78 insertions(+), 9 deletions(-) + +diff --git a/browser/devtools/app-manager/app-projects.js b/browser/devtools/app-manager/app-projects.js +index d09f72f..77ca67b 100644 +--- a/browser/devtools/app-manager/app-projects.js ++++ b/browser/devtools/app-manager/app-projects.js +@@ -61,6 +61,8 @@ const IDB = { + add: function(project) { + let deferred = promise.defer(); + ++ project = JSON.parse(JSON.stringify(project)); ++ + if (!project.location) { + // We need to make sure this object has a `.location` property. + deferred.reject("Missing location property on project object."); +diff --git a/js/public/Class.h b/js/public/Class.h +index ff864b1..46f7d39 100644 +--- a/js/public/Class.h ++++ b/js/public/Class.h +@@ -521,7 +521,10 @@ Valueify(const JSClass *c) + */ + enum ESClassValue { + ESClass_Array, ESClass_Number, ESClass_String, ESClass_Boolean, +- ESClass_RegExp, ESClass_ArrayBuffer, ESClass_Date ++ ESClass_RegExp, ESClass_ArrayBuffer, ESClass_Date, ++ // Special snowflake for the ES6 IsArray method. ++ // Please don't use it without calling that function. ++ ESClass_IsArray + }; + + /* +diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp +index 24da176..46f1c20 100644 +--- a/js/src/jsarray.cpp ++++ b/js/src/jsarray.cpp +@@ -2645,7 +2645,8 @@ js::array_concat(JSContext *cx, unsigned argc, Value *vp) + HandleValue v = HandleValue::fromMarkedLocation(&p[i]); + if (v.isObject()) { + RootedObject obj(cx, &v.toObject()); +- if (ObjectClassIs(obj, ESClass_Array, cx)) { ++ // This should be IsConcatSpreadable ++ if (IsArray(obj, cx)) { + uint32_t alength; + if (!GetLengthProperty(cx, obj, &alength)) + return false; +@@ -2870,7 +2871,11 @@ static bool + array_isArray(JSContext *cx, unsigned argc, Value *vp) + { + CallArgs args = CallArgsFromVp(argc, vp); +- bool isArray = args.length() > 0 && IsObjectWithClass(args[0], ESClass_Array, cx); ++ bool isArray = false; ++ if (args.get(0).isObject()) { ++ RootedObject obj(cx, &args[0].toObject()); ++ isArray = IsArray(obj, cx); ++ } + args.rval().setBoolean(isArray); + return true; + } +diff --git a/js/src/jsobjinlines.h b/js/src/jsobjinlines.h +index e848ba7..557dd26 100644 +--- a/js/src/jsobjinlines.h ++++ b/js/src/jsobjinlines.h +@@ -1032,7 +1032,10 @@ ObjectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx) + return Proxy::objectClassIs(obj, classValue, cx); + + switch (classValue) { +- case ESClass_Array: return obj->is(); ++ case ESClass_Array: ++ case ESClass_IsArray: ++ // There difference between those is only relevant for proxies. ++ return obj->is(); + case ESClass_Number: return obj->is(); + case ESClass_String: return obj->is(); + case ESClass_Boolean: return obj->is(); +@@ -1053,6 +1056,16 @@ IsObjectWithClass(const Value &v, ESClassValue classValue, JSContext *cx) + return ObjectClassIs(obj, classValue, cx); + } + ++// ES6 7.2.2 ++inline bool ++IsArray(HandleObject obj, JSContext *cx) ++{ ++ if (obj->is()) ++ return true; ++ ++ return ObjectClassIs(obj, ESClass_IsArray, cx); ++} ++ + static MOZ_ALWAYS_INLINE bool + NewObjectMetadata(ExclusiveContext *cxArg, JSObject **pmetadata) + { +diff --git a/js/src/json.cpp b/js/src/json.cpp +index 6e45bfd..81a99a6 100644 +--- a/js/src/json.cpp ++++ b/js/src/json.cpp +@@ -300,7 +300,7 @@ JO(JSContext *cx, HandleObject obj, StringifyContext *scx) + Maybe ids; + const AutoIdVector *props; + if (scx->replacer && !scx->replacer->isCallable()) { +- JS_ASSERT(JS_IsArrayObject(cx, scx->replacer)); ++ JS_ASSERT(IsArray(scx->replacer, cx)); + props = &scx->propertyList; + } else { + JS_ASSERT_IF(scx->replacer, scx->propertyList.length() == 0); +@@ -488,7 +488,7 @@ Str(JSContext *cx, const Value &v, StringifyContext *scx) + + scx->depth++; + bool ok; +- if (ObjectClassIs(obj, ESClass_Array, cx)) ++ if (IsArray(obj, cx)) + ok = JA(cx, obj, scx); + else + ok = JO(cx, obj, scx); +@@ -510,7 +510,7 @@ js_Stringify(JSContext *cx, MutableHandleValue vp, JSObject *replacer_, Value sp + if (replacer) { + if (replacer->isCallable()) { + /* Step 4a(i): use replacer to transform values. */ +- } else if (ObjectClassIs(replacer, ESClass_Array, cx)) { ++ } else if (IsArray(replacer, cx)) { + /* + * Step 4b: The spec algorithm is unhelpfully vague about the exact + * steps taken when the replacer is an array, regarding the exact +@@ -541,7 +541,8 @@ js_Stringify(JSContext *cx, MutableHandleValue vp, JSObject *replacer_, Value sp + + /* Step 4b(ii). */ + uint32_t len; +- JS_ALWAYS_TRUE(GetLengthProperty(cx, replacer, &len)); ++ if (!GetLengthProperty(cx, replacer, &len)) ++ return false; + if (replacer->is() && !replacer->isIndexed()) + len = Min(len, replacer->getDenseInitializedLength()); + +@@ -678,7 +679,7 @@ Walk(JSContext *cx, HandleObject holder, HandleId name, HandleValue reviver, Mut + if (val.isObject()) { + RootedObject obj(cx, &val.toObject()); + +- if (ObjectClassIs(obj, ESClass_Array, cx)) { ++ if (IsArray(obj, cx)) { + /* Step 2a(ii). */ + uint32_t length; + if (!GetLengthProperty(cx, obj, &length)) +diff --git a/js/src/jsproxy.cpp b/js/src/jsproxy.cpp +index 7644da1..7453103 100644 +--- a/js/src/jsproxy.cpp ++++ b/js/src/jsproxy.cpp +@@ -1108,6 +1108,14 @@ class ScriptedDirectProxyHandler : public DirectProxyHandler { + virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE; + + /* Spidermonkey extensions. */ ++ // A scripted proxy should not be treated as generic in most contexts. ++ virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl, ++ CallArgs args) MOZ_OVERRIDE; ++ virtual bool objectClassIs(HandleObject obj, ESClassValue classValue, ++ JSContext *cx) MOZ_OVERRIDE; ++ virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, ++ RegExpGuard *g) MOZ_OVERRIDE; ++ + virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE; + virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE; + virtual bool isScripted() MOZ_OVERRIDE { return true; } +@@ -2350,6 +2358,43 @@ ScriptedDirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const C + return true; + } + ++bool ++ScriptedDirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl, ++ CallArgs args) ++{ ++ ReportIncompatible(cx, args); ++ return false; ++} ++ ++bool ++ScriptedDirectProxyHandler::objectClassIs(HandleObject proxy, ESClassValue classValue, ++ JSContext *cx) ++{ ++ // Special case IsArray. In every other instance ES wants to have exactly ++ // one object type and not a proxy around it, so return false. ++ if (classValue != ESClass_IsArray) ++ return false; ++ ++ // In ES6 IsArray is supposed to poke at the Proxy target, instead we do this here. ++ // The reason for this is that we have proxies for which looking at the target might ++ // be impossible. So instead we use our little objectClassIs function that just works ++ // already across different wrappers. ++ RootedObject target(cx, proxy->as().target()); ++ if (!target) ++ return false; ++ ++ return IsArray(target, cx); ++} ++ ++bool ++ScriptedDirectProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy, ++ RegExpGuard *g) ++{ ++ MOZ_CRASH("Should not end up in ScriptedDirectProxyHandler::regexp_toShared"); ++ return false; ++} ++ ++ + ScriptedDirectProxyHandler ScriptedDirectProxyHandler::singleton; + + #define INVOKE_ON_PROTOTYPE(cx, handler, proxy, protoCall) \ +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch new file mode 100644 index 0000000000..58e61d080c --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch @@ -0,0 +1,89 @@ +From 97ba04bf95606b409b1b3035504a41c274ecffe2 Mon Sep 17 00:00:00 2001 +From: Shu-yu Guo +Date: Mon, 26 Jan 2015 18:26:25 -0800 +Subject: [PATCH] Bug 1119579 - Don't GC while iterating compartments in + findAllGlobals. r=sfink, a=abillings + +--- + js/src/vm/Debugger.cpp | 56 ++++++++++++++++++++++++++++++-------------------- + 1 file changed, 34 insertions(+), 22 deletions(-) + +diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp +index 27e993d..a8decef 100644 +--- a/js/src/vm/Debugger.cpp ++++ b/js/src/vm/Debugger.cpp +@@ -2825,37 +2825,49 @@ Debugger::findAllGlobals(JSContext *cx, unsigned argc, Value *vp) + { + THIS_DEBUGGER(cx, argc, vp, "findAllGlobals", args, dbg); + +- RootedObject result(cx, NewDenseEmptyArray(cx)); +- if (!result) +- return false; ++ AutoObjectVector globals(cx); + +- for (CompartmentsIter c(cx->runtime(), SkipAtoms); !c.done(); c.next()) { +- if (c->options().invisibleToDebugger()) +- continue; ++ { ++ // Accumulate the list of globals before wrapping them, because ++ // wrapping can GC and collect compartments from under us, while ++ // iterating. + +- c->zone()->scheduledForDestruction = false; ++ for (CompartmentsIter c(cx->runtime(), SkipAtoms); !c.done(); c.next()) { ++ if (c->options().invisibleToDebugger()) ++ continue; + +- GlobalObject *global = c->maybeGlobal(); ++ c->zone()->scheduledForDestruction = false; + +- if (cx->runtime()->isSelfHostingGlobal(global)) +- continue; ++ GlobalObject *global = c->maybeGlobal(); + +- if (global) { +- /* +- * We pulled |global| out of nowhere, so it's possible that it was +- * marked gray by XPConnect. Since we're now exposing it to JS code, +- * we need to mark it black. +- */ +- JS::ExposeGCThingToActiveJS(global, JSTRACE_OBJECT); ++ if (cx->runtime()->isSelfHostingGlobal(global)) ++ continue; + +- RootedValue globalValue(cx, ObjectValue(*global)); +- if (!dbg->wrapDebuggeeValue(cx, &globalValue)) +- return false; +- if (!NewbornArrayPush(cx, result, globalValue)) +- return false; ++ if (global) { ++ /* ++ * We pulled |global| out of nowhere, so it's possible that it was ++ * marked gray by XPConnect. Since we're now exposing it to JS code, ++ * we need to mark it black. ++ */ ++ JS::ExposeGCThingToActiveJS(global, JSTRACE_OBJECT); ++ if (!globals.append(global)) ++ return false; ++ } + } + } + ++ RootedObject result(cx, NewDenseEmptyArray(cx)); ++ if (!result) ++ return false; ++ ++ for (size_t i = 0; i < globals.length(); i++) { ++ RootedValue globalValue(cx, ObjectValue(*globals[i])); ++ if (!dbg->wrapDebuggeeValue(cx, &globalValue)) ++ return false; ++ if (!NewbornArrayPush(cx, result, globalValue)) ++ return false; ++ } ++ + args.rval().setObject(*result); + return true; + } +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch new file mode 100644 index 0000000000..3e4ed17598 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch @@ -0,0 +1,25 @@ +From 746ddf19ff532b8abc90d3a91322a04b462ebfa8 Mon Sep 17 00:00:00 2001 +From: Brian Hackett +Date: Mon, 26 Jan 2015 13:14:34 -0500 +Subject: [PATCH] Bug 1124018 - Null the allocation site table if + initialization fails. r=jonco, a=bkerensa + +--- + js/src/jsinfer.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/js/src/jsinfer.cpp b/js/src/jsinfer.cpp +index b62ad1f..4019b16 100644 +--- a/js/src/jsinfer.cpp ++++ b/js/src/jsinfer.cpp +@@ -2035,6 +2035,7 @@ TypeCompartment::addAllocationSiteTypeObject(JSContext *cx, AllocationSiteKey ke + allocationSiteTable = cx->new_(); + if (!allocationSiteTable || !allocationSiteTable->init()) { + js_delete(allocationSiteTable); ++ allocationSiteTable = nullptr; + return nullptr; + } + } +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch new file mode 100644 index 0000000000..181f9243e3 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch @@ -0,0 +1,41 @@ +From 0758363d982b0b3e6cf021c164715a028a345b9e Mon Sep 17 00:00:00 2001 +From: "Byron Campen [:bwc]" +Date: Wed, 21 Jan 2015 08:56:36 -0800 +Subject: [PATCH] Bug 1123882 - Fix case where offset != 0. r=derf, a=bkerensa + +--- + content/media/MediaDecoderStateMachine.cpp | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp +index ce5870f..4ed496c 100644 +--- a/content/media/MediaDecoderStateMachine.cpp ++++ b/content/media/MediaDecoderStateMachine.cpp +@@ -328,6 +328,8 @@ void MediaDecoderStateMachine::SendStreamAudio(AudioData* aAudio, + if (offset >= aAudio->mFrames) + return; + ++ size_t framesToWrite = aAudio->mFrames - offset; ++ + aAudio->EnsureAudioBuffer(); + nsRefPtr buffer = aAudio->mAudioBuffer; + AudioDataValue* bufferData = static_cast(buffer->Data()); +@@ -335,10 +337,11 @@ void MediaDecoderStateMachine::SendStreamAudio(AudioData* aAudio, + for (uint32_t i = 0; i < aAudio->mChannels; ++i) { + channels.AppendElement(bufferData + i*aAudio->mFrames + offset); + } +- aOutput->AppendFrames(buffer.forget(), channels, aAudio->mFrames); +- VERBOSE_LOG("writing %d frames of data to MediaStream for AudioData at %lld", +- aAudio->mFrames - int32_t(offset), aAudio->mTime); +- aStream->mAudioFramesWritten += aAudio->mFrames - int32_t(offset); ++ aOutput->AppendFrames(buffer.forget(), channels, framesToWrite); ++ VERBOSE_LOG("writing %u frames of data to MediaStream for AudioData at %lld", ++ static_cast(framesToWrite), ++ aAudio->mTime); ++ aStream->mAudioFramesWritten += framesToWrite; + } + + static void WriteVideoToMediaStream(layers::Image* aImage, +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch new file mode 100644 index 0000000000..818d369b26 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch @@ -0,0 +1,54 @@ +From 94899f849e50a765bb26420f5c70d49002d6673f Mon Sep 17 00:00:00 2001 +From: Glenn Randers-Pehrson +Date: Mon, 26 Jan 2015 16:07:00 -0500 +Subject: [PATCH] Bug 1117406 - Fix handling of out-of-range PNG tRNS values. + r=jmuizelaar, a=abillings + +--- + image/decoders/nsPNGDecoder.cpp | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +diff --git a/image/decoders/nsPNGDecoder.cpp b/image/decoders/nsPNGDecoder.cpp +index acaa835..8e6bc2d 100644 +--- a/image/decoders/nsPNGDecoder.cpp ++++ b/image/decoders/nsPNGDecoder.cpp +@@ -528,24 +528,26 @@ nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr) + png_set_expand(png_ptr); + + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { +- int sample_max = (1 << bit_depth); + png_color_16p trans_values; + png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &trans_values); + /* libpng doesn't reject a tRNS chunk with out-of-range samples + so we check it here to avoid setting up a useless opacity +- channel or producing unexpected transparent pixels when using +- libpng-1.2.19 through 1.2.26 (bug #428045) */ +- if ((color_type == PNG_COLOR_TYPE_GRAY && +- (int)trans_values->gray > sample_max) || +- (color_type == PNG_COLOR_TYPE_RGB && +- ((int)trans_values->red > sample_max || +- (int)trans_values->green > sample_max || +- (int)trans_values->blue > sample_max))) ++ channel or producing unexpected transparent pixels (bug #428045) */ ++ if (bit_depth < 16) { ++ png_uint_16 sample_max = (1 << bit_depth) - 1; ++ if ((color_type == PNG_COLOR_TYPE_GRAY && ++ trans_values->gray > sample_max) || ++ (color_type == PNG_COLOR_TYPE_RGB && ++ (trans_values->red > sample_max || ++ trans_values->green > sample_max || ++ trans_values->blue > sample_max))) + { + /* clear the tRNS valid flag and release tRNS memory */ + png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0); ++ num_trans = 0; + } +- else ++ } ++ if (num_trans != 0) + png_set_expand(png_ptr); + } + +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch new file mode 100644 index 0000000000..685e3a6d43 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch @@ -0,0 +1,53 @@ +From 4920c5c447d1153dffa623dd70d8b535b9ca6795 Mon Sep 17 00:00:00 2001 +From: Jan de Mooij +Date: Mon, 26 Jan 2015 12:59:47 +0100 +Subject: [PATCH] Bug 1115776 - Fix LApplyArgsGeneric to always emit the + has-script check. r=shu, a=sledru + +--- + js/src/jit/CodeGenerator.cpp | 24 ++++++++---------------- + 1 file changed, 8 insertions(+), 16 deletions(-) + +diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp +index ba14f86..0669692 100644 +--- a/js/src/jit/CodeGenerator.cpp ++++ b/js/src/jit/CodeGenerator.cpp +@@ -2448,27 +2448,19 @@ CodeGenerator::visitApplyArgsGeneric(LApplyArgsGeneric *apply) + + masm.checkStackAlignment(); + +- // If the function is known to be uncompilable, only emit the call to InvokeFunction. ++ // If the function is native, only emit the call to InvokeFunction. + ExecutionMode executionMode = gen->info().executionMode(); +- if (apply->hasSingleTarget()) { +- JSFunction *target = apply->getSingleTarget(); +- if (target->isNative()) { +- if (!emitCallInvokeFunction(apply, copyreg)) +- return false; +- emitPopArguments(apply, copyreg); +- return true; +- } ++ if (apply->hasSingleTarget() && apply->getSingleTarget()->isNative()) { ++ if (!emitCallInvokeFunction(apply, copyreg)) ++ return false; ++ emitPopArguments(apply, copyreg); ++ return true; + } + + Label end, invoke; + +- // Guard that calleereg is an interpreted function with a JSScript: +- if (!apply->hasSingleTarget()) { +- masm.branchIfFunctionHasNoScript(calleereg, &invoke); +- } else { +- // Native single targets are handled by LCallNative. +- JS_ASSERT(!apply->getSingleTarget()->isNative()); +- } ++ // Guard that calleereg is an interpreted function with a JSScript. ++ masm.branchIfFunctionHasNoScript(calleereg, &invoke); + + // Knowing that calleereg is a non-native function, load the JSScript. + masm.loadPtr(Address(calleereg, JSFunction::offsetOfNativeOrScript()), objreg); +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch new file mode 100644 index 0000000000..d067d8133d --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch @@ -0,0 +1,52 @@ +From f7d24f37425d3d9054a7e5657815440a07166d3f Mon Sep 17 00:00:00 2001 +From: Kartikaya Gupta +Date: Tue, 20 Jan 2015 10:33:27 -0500 +Subject: [PATCH] Bug 1107009 - Additional locking needed for esr31 backport. + r=BenWa a=sledru + +--- + gfx/layers/ipc/CompositorParent.cpp | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp +index 97c8693..cb03e71 100644 +--- a/gfx/layers/ipc/CompositorParent.cpp ++++ b/gfx/layers/ipc/CompositorParent.cpp +@@ -1286,13 +1286,19 @@ CrossProcessCompositorParent::ShadowLayersUpdated( + { + uint64_t id = aLayerTree->GetId(); + MOZ_ASSERT(id != 0); ++ const CompositorParent::LayerTreeState* state = CompositorParent::GetIndirectShadowTree(id); ++ if (!state) { ++ return; ++ } ++ MOZ_ASSERT(state->mParent); ++ + Layer* shadowRoot = aLayerTree->GetRoot(); + if (shadowRoot) { + SetShadowProperties(shadowRoot); + } + UpdateIndirectTree(id, shadowRoot, aTargetConfig); + +- sIndirectLayerTrees[id].mParent->NotifyShadowTreeTransaction(id, aIsFirstPaint, aScheduleComposite); ++ state->mParent->NotifyShadowTreeTransaction(id, aIsFirstPaint, aScheduleComposite); + } + + void +@@ -1329,7 +1335,12 @@ AsyncCompositionManager* + CrossProcessCompositorParent::GetCompositionManager(LayerTransactionParent* aLayerTree) + { + uint64_t id = aLayerTree->GetId(); +- return sIndirectLayerTrees[id].mParent->GetCompositionManager(aLayerTree); ++ const CompositorParent::LayerTreeState* state = CompositorParent::GetIndirectShadowTree(id); ++ if (!state) { ++ return nullptr; ++ } ++ MOZ_ASSERT(state->mParent); ++ return state->mParent->GetCompositionManager(aLayerTree); + } + + void +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch new file mode 100644 index 0000000000..9a4668b2dc --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch @@ -0,0 +1,219 @@ +From 66e65b2138c6db20288ef4cf78d15995f382a7e2 Mon Sep 17 00:00:00 2001 +From: Kartikaya Gupta +Date: Tue, 13 Jan 2015 13:26:26 -0500 +Subject: [PATCH] Bug 1107009. r=BenWa, a=sledru + +--- + gfx/layers/ipc/CompositorParent.cpp | 57 ++++++++++++++++++++++++++++++------- + 1 file changed, 46 insertions(+), 11 deletions(-) + +diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp +index ce50277..cbbb2ef 100644 +--- a/gfx/layers/ipc/CompositorParent.cpp ++++ b/gfx/layers/ipc/CompositorParent.cpp +@@ -22,6 +22,7 @@ + #include "gfxPrefs.h" // for gfxPrefs + #include "ipc/ShadowLayersManager.h" // for ShadowLayersManager + #include "mozilla/AutoRestore.h" // for AutoRestore ++#include "mozilla/ClearOnShutdown.h" // for ClearOnShutdown + #include "mozilla/DebugOnly.h" // for DebugOnly + #include "mozilla/gfx/2D.h" // for DrawTarget + #include "mozilla/gfx/Point.h" // for IntSize +@@ -70,6 +71,16 @@ CompositorParent::LayerTreeState::LayerTreeState() + + typedef map LayerTreeMap; + static LayerTreeMap sIndirectLayerTrees; ++static StaticAutoPtr sIndirectLayerTreesLock; ++ ++static void EnsureLayerTreeMapReady() ++{ ++ MOZ_ASSERT(NS_IsMainThread()); ++ if (!sIndirectLayerTreesLock) { ++ sIndirectLayerTreesLock = new Monitor("IndirectLayerTree"); ++ mozilla::ClearOnShutdown(&sIndirectLayerTreesLock); ++ } ++} + + // FIXME/bug 774386: we're assuming that there's only one + // CompositorParent, but that's not always true. This assumption only +@@ -132,6 +143,7 @@ void CompositorParent::StartUp() + return; + } + MOZ_ASSERT(!sCompositorLoop); ++ EnsureLayerTreeMapReady(); + CreateCompositorMap(); + CreateThread(); + sMainLoop = MessageLoop::current(); +@@ -206,7 +218,11 @@ CompositorParent::CompositorParent(nsIWidget* aWidget, + this, &mCompositorID)); + + mRootLayerTreeID = AllocateLayerTreeId(); +- sIndirectLayerTrees[mRootLayerTreeID].mParent = this; ++ ++ { // scope lock ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); ++ sIndirectLayerTrees[mRootLayerTreeID].mParent = this; ++ } + + mApzcTreeManager = new APZCTreeManager(); + ++sCompositorThreadRefCount; +@@ -249,7 +265,10 @@ CompositorParent::Destroy() + mCompositionManager = nullptr; + mApzcTreeManager->ClearTree(); + mApzcTreeManager = nullptr; +- sIndirectLayerTrees.erase(mRootLayerTreeID); ++ { // scope lock ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); ++ sIndirectLayerTrees.erase(mRootLayerTreeID); ++ } + } + + void +@@ -266,6 +285,7 @@ CompositorParent::RecvWillStop() + + // Ensure that the layer manager is destroyed before CompositorChild. + if (mLayerManager) { ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + for (LayerTreeMap::iterator it = sIndirectLayerTrees.begin(); + it != sIndirectLayerTrees.end(); it++) + { +@@ -380,7 +400,10 @@ CompositorParent::ActorDestroy(ActorDestroyReason why) + if (mLayerManager) { + mLayerManager->Destroy(); + mLayerManager = nullptr; +- sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = nullptr; ++ { // scope lock ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); ++ sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = nullptr; ++ } + mCompositionManager = nullptr; + mCompositor = nullptr; + } +@@ -696,6 +719,7 @@ CompositorParent::DidComposite() + { + unused << SendDidComposite(0); + ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + for (LayerTreeMap::iterator it = sIndirectLayerTrees.begin(); + it != sIndirectLayerTrees.end(); it++) { + LayerTreeState* lts = &it->second; +@@ -867,6 +891,7 @@ CompositorParent::InitializeLayerManager(const nsTArray& aBackend + mLayerManager = layerManager; + MOZ_ASSERT(compositor); + mCompositor = compositor; ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = layerManager; + return; + } +@@ -969,6 +994,7 @@ CompositorParent::RecvNotifyChildCreated(const uint64_t& child) + void + CompositorParent::NotifyChildCreated(uint64_t aChild) + { ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + sIndirectLayerTrees[aChild].mParent = this; + sIndirectLayerTrees[aChild].mLayerManager = mLayerManager; + } +@@ -985,6 +1011,7 @@ CompositorParent::AllocateLayerTreeId() + static void + EraseLayerState(uint64_t aId) + { ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + sIndirectLayerTrees.erase(aId); + } + +@@ -1001,6 +1028,7 @@ UpdateControllerForLayersId(uint64_t aLayersId, + GeckoContentController* aController) + { + // Adopt ref given to us by SetControllerForLayerTree() ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + sIndirectLayerTrees[aLayersId].mController = + already_AddRefed(aController); + } +@@ -1010,12 +1038,15 @@ ScopedLayerTreeRegistration::ScopedLayerTreeRegistration(uint64_t aLayersId, + GeckoContentController* aController) + : mLayersId(aLayersId) + { ++ EnsureLayerTreeMapReady(); ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + sIndirectLayerTrees[aLayersId].mRoot = aRoot; + sIndirectLayerTrees[aLayersId].mController = aController; + } + + ScopedLayerTreeRegistration::~ScopedLayerTreeRegistration() + { ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + sIndirectLayerTrees.erase(mLayersId); + } + +@@ -1175,6 +1206,7 @@ CompositorParent::CloneToplevel(const InfallibleTArraysecond; + } + +-static void +-RemoveIndirectTree(uint64_t aId) +-{ +- sIndirectLayerTrees.erase(aId); +-} +- + void + CrossProcessCompositorParent::ActorDestroy(ActorDestroyReason aWhy) + { +@@ -1211,6 +1238,8 @@ CrossProcessCompositorParent::AllocPLayerTransactionParent(const nsTArray(aLayers); +- RemoveIndirectTree(slp->GetId()); ++ EraseLayerState(slp->GetId()); + static_cast(aLayers)->ReleaseIPDLReference(); + return true; + } +@@ -1242,6 +1271,7 @@ CrossProcessCompositorParent::DeallocPLayerTransactionParent(PLayerTransactionPa + bool + CrossProcessCompositorParent::RecvNotifyChildCreated(const uint64_t& child) + { ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); + sIndirectLayerTrees[child].mParent->NotifyChildCreated(child); + return true; + } +@@ -1269,7 +1299,12 @@ CrossProcessCompositorParent::ForceComposite(LayerTransactionParent* aLayerTree) + { + uint64_t id = aLayerTree->GetId(); + MOZ_ASSERT(id != 0); +- sIndirectLayerTrees[id].mParent->ForceComposite(aLayerTree); ++ CompositorParent* parent; ++ { // scope lock ++ MonitorAutoLock lock(*sIndirectLayerTreesLock); ++ parent = sIndirectLayerTrees[id].mParent; ++ } ++ parent->ForceComposite(aLayerTree); + } + + bool +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch new file mode 100644 index 0000000000..869feaf7c6 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch @@ -0,0 +1,104 @@ +From 3f0f685829445ae82974d61f6017fdb67349c32b Mon Sep 17 00:00:00 2001 +From: Dan Gohman +Date: Fri, 9 Jan 2015 09:04:12 -0500 +Subject: [PATCH] Bug 1096138 - IonMonkey: Augment Nops with Mops to avoid + collisions with fixed live ranges. r=jandem, a=sledru + +--- + js/src/jit/CodeGenerator.cpp | 6 ++++++ + js/src/jit/CodeGenerator.h | 1 + + js/src/jit/LIR-Common.h | 6 ++++++ + js/src/jit/LOpcodes.h | 1 + + js/src/jit/Lowering.cpp | 12 ++++++++++++ + 5 files changed, 26 insertions(+) + +diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp +index 4f07524..ba14f86 100644 +--- a/js/src/jit/CodeGenerator.cpp ++++ b/js/src/jit/CodeGenerator.cpp +@@ -1077,6 +1077,12 @@ CodeGenerator::visitNop(LNop *lir) + } + + bool ++CodeGenerator::visitMop(LMop *lir) ++{ ++ return true; ++} ++ ++bool + CodeGenerator::visitOsiPoint(LOsiPoint *lir) + { + // Note: markOsiPoint ensures enough space exists between the last +diff --git a/js/src/jit/CodeGenerator.h b/js/src/jit/CodeGenerator.h +index 03677a5..dce095d 100644 +--- a/js/src/jit/CodeGenerator.h ++++ b/js/src/jit/CodeGenerator.h +@@ -58,6 +58,7 @@ class CodeGenerator : public CodeGeneratorSpecific + + bool visitLabel(LLabel *lir); + bool visitNop(LNop *lir); ++ bool visitMop(LMop *lir); + bool visitOsiPoint(LOsiPoint *lir); + bool visitGoto(LGoto *lir); + bool visitTableSwitch(LTableSwitch *ins); +diff --git a/js/src/jit/LIR-Common.h b/js/src/jit/LIR-Common.h +index c90aef9..e7a0e4c 100644 +--- a/js/src/jit/LIR-Common.h ++++ b/js/src/jit/LIR-Common.h +@@ -42,6 +42,12 @@ class LNop : public LInstructionHelper<0, 0, 0> + LIR_HEADER(Nop) + }; + ++class LMop : public LInstructionHelper<0, 0, 0> ++{ ++ public: ++ LIR_HEADER(Mop) ++}; ++ + // An LOsiPoint captures a snapshot after a call and ensures enough space to + // patch in a call to the invalidation mechanism. + // +diff --git a/js/src/jit/LOpcodes.h b/js/src/jit/LOpcodes.h +index a32d64f..cd7eef8 100644 +--- a/js/src/jit/LOpcodes.h ++++ b/js/src/jit/LOpcodes.h +@@ -10,6 +10,7 @@ + #define LIR_COMMON_OPCODE_LIST(_) \ + _(Label) \ + _(Nop) \ ++ _(Mop) \ + _(OsiPoint) \ + _(MoveGroup) \ + _(Integer) \ +diff --git a/js/src/jit/Lowering.cpp b/js/src/jit/Lowering.cpp +index d5f8227..48b7fa9 100644 +--- a/js/src/jit/Lowering.cpp ++++ b/js/src/jit/Lowering.cpp +@@ -3616,12 +3616,24 @@ LIRGenerator::visitInstruction(MInstruction *ins) + ins->setInWorklistUnchecked(); + #endif + ++ // If we added a Nop for this instruction, we'll also add a Mop, so that ++ // that live-ranges for fixed register defs, which with LSRA extend through ++ // the Nop so that they can extend through the OsiPoint don't, with their ++ // one-extra extension, extend into a position where they use the input ++ // move group for the following instruction. ++ bool needsMop = !current->instructions().empty() && current->rbegin()->isNop(); ++ + // If no safepoint was created, there's no need for an OSI point. + if (LOsiPoint *osiPoint = popOsiPoint()) { + if (!add(osiPoint)) + return false; + } + ++ if (needsMop) { ++ if (!add(new(alloc()) LMop)) ++ return false; ++ } ++ + return true; + } + +-- +2.2.1 + -- cgit v1.2.3