Merge branch 'master' into staging
This commit is contained in:
		
						commit
						a351fc8369
					
				
					 67 changed files with 1911 additions and 3145 deletions
				
			
		
							
								
								
									
										100
									
								
								doc/guix.texi
									
										
									
									
									
								
							
							
						
						
									
										100
									
								
								doc/guix.texi
									
										
									
									
									
								
							|  | @ -7142,7 +7142,7 @@ entry (@pxref{Invoking guix system}). | |||
| 
 | ||||
| The normal way to change the system configuration is by updating this | ||||
| file and re-running @command{guix system reconfigure}.  One should never | ||||
| have to touch files in @command{/etc} or to run commands that modify the | ||||
| have to touch files in @file{/etc} or to run commands that modify the | ||||
| system state such as @command{useradd} or @command{grub-install}.  In | ||||
| fact, you must avoid that since that would not only void your warranty | ||||
| but also prevent you from rolling back to previous versions of your | ||||
|  | @ -10654,7 +10654,7 @@ Defaults to @samp{""}. | |||
| 
 | ||||
| @deftypevr {@code{dovecot-configuration} parameter} string auth-krb5-keytab | ||||
| Kerberos keytab to use for the GSSAPI mechanism.  Will use the | ||||
| system default (usually /etc/krb5.keytab) if not specified.  You may | ||||
| system default (usually @file{/etc/krb5.keytab}) if not specified.  You may | ||||
| need to change the auth service to run as root to be able to read this | ||||
| file. | ||||
| Defaults to @samp{""}. | ||||
|  | @ -11542,6 +11542,99 @@ remote servers.  Run @command{man smtpd.conf} for more information. | |||
| The @code{(gnu services kerberos)} module provides services relating to | ||||
| the authentication protocol @dfn{Kerberos}. | ||||
| 
 | ||||
| @subsubheading Krb5 Service | ||||
| 
 | ||||
| Programs using a Kerberos client library normally | ||||
| expect a configuration file in @file{/etc/krb5.conf}. | ||||
| This service generates such a file from a definition provided in the | ||||
| operating system declaration. | ||||
| It does not cause any daemon to be started. | ||||
| 
 | ||||
| No ``keytab'' files are provided by this service---you must explicitly create them. | ||||
| This service is known to work with the MIT client library, @code{mit-krb5}. | ||||
| Other implementations have not been tested. | ||||
| 
 | ||||
| @defvr {Scheme Variable} krb5-service-type | ||||
| A service type for Kerberos 5 clients. | ||||
| @end defvr | ||||
| 
 | ||||
| @noindent | ||||
| Here is an example of its use: | ||||
| @lisp | ||||
| (service krb5-service-type | ||||
|          (krb5-configuration | ||||
|           (default-realm "EXAMPLE.COM") | ||||
|           (allow-weak-crypto? #t) | ||||
|           (realms (list | ||||
|                    (krb5-realm | ||||
|                     (name "EXAMPLE.COM") | ||||
|                     (admin-server "groucho.example.com") | ||||
|                     (kdc "karl.example.com")) | ||||
|                    (krb5-realm | ||||
|                     (name "ARGRX.EDU") | ||||
|                     (admin-server "kerb-admin.argrx.edu") | ||||
|                     (kdc "keys.argrx.edu")))))) | ||||
| @end lisp | ||||
| 
 | ||||
| @noindent | ||||
| This example provides a Kerberos@tie{}5 client configuration which: | ||||
| @itemize | ||||
| @item Recognizes two realms, @i{viz:} ``EXAMPLE.COM'' and ``ARGRX.EDU'', both | ||||
| of which have distinct administration servers and key distribution centers; | ||||
| @item Will default to the realm ``EXAMPLE.COM'' if the realm is not explicitly | ||||
| specified by clients; | ||||
| @item Accepts services which only support encryption types known to be weak. | ||||
| @end itemize | ||||
| 
 | ||||
| The @code{krb5-realm} and @code{krb5-configuration} types have many fields. | ||||
| Only the most commonly used ones are described here. | ||||
| For a full list, and more detailed explanation of each, see the MIT | ||||
| @uref{http://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf} | ||||
| documentation. | ||||
| 
 | ||||
| 
 | ||||
| @deftp {Data Type} krb5-realm | ||||
| @cindex realm, kerberos | ||||
| @table @asis | ||||
| @item @code{name} | ||||
| This field is a string identifying the name of the realm. | ||||
| A common convention is to use the fully qualified DNS name of your organization, | ||||
| converted to upper case. | ||||
| 
 | ||||
| @item @code{admin-server} | ||||
| This field is a string identifying the host where the administration server is | ||||
| running. | ||||
| 
 | ||||
| @item @code{kdc} | ||||
| This field is a string identifying the key distribution center | ||||
| for the realm. | ||||
| @end table | ||||
| @end deftp | ||||
| 
 | ||||
| @deftp {Data Type} krb5-configuration | ||||
| 
 | ||||
| @table @asis | ||||
| @item @code{allow-weak-crypto?} (default: @code{#f}) | ||||
| If this flag is @code{#t} then services which only offer encryption algorithms | ||||
| known to be weak will be accepted. | ||||
| 
 | ||||
| @item @code{default-realm} (default: @code{#f}) | ||||
| This field should be a string identifying the default Kerberos | ||||
| realm for the client. | ||||
| You should set this field to the name of your Kerberos realm. | ||||
| If this value is @code{#f} | ||||
| then a realm must be specified with every Kerberos principal when invoking programs | ||||
| such as @command{kinit}. | ||||
| 
 | ||||
| @item @code{realms} | ||||
| This should be a non-empty list of @code{krb5-realm} objects, which clients may | ||||
| access. | ||||
| Normally, one of them will have a @code{name} field matching the @code{default-realm} | ||||
| field. | ||||
| @end table | ||||
| @end deftp | ||||
| 
 | ||||
| 
 | ||||
| @subsubheading PAM krb5 Service | ||||
| @cindex pam-krb5 | ||||
| 
 | ||||
|  | @ -12787,8 +12880,7 @@ host. | |||
| @item -net user | ||||
| Enable the unprivileged user-mode network stack.  The guest OS can | ||||
| access the host but not vice versa.  This is the simplest way to get the | ||||
| guest OS online.  If you do not choose a network stack, the boot will | ||||
| fail. | ||||
| guest OS online. | ||||
| 
 | ||||
| @item -net nic,model=virtio | ||||
| You must create a network interface of a given model.  If you do not | ||||
|  |  | |||
							
								
								
									
										18
									
								
								gnu/local.mk
									
										
									
									
									
								
							
							
						
						
									
										18
									
								
								gnu/local.mk
									
										
									
									
									
								
							|  | @ -123,7 +123,6 @@ GNU_SYSTEM_MODULES =				\ | |||
|   %D%/packages/entr.scm				\
 | ||||
|   %D%/packages/erlang.scm			\
 | ||||
|   %D%/packages/fcitx.scm			\
 | ||||
|   %D%/packages/feh.scm                          \
 | ||||
|   %D%/packages/figlet.scm			\
 | ||||
|   %D%/packages/file.scm				\
 | ||||
|   %D%/packages/finance.scm			\
 | ||||
|  | @ -147,7 +146,6 @@ GNU_SYSTEM_MODULES =				\ | |||
|   %D%/packages/gd.scm				\
 | ||||
|   %D%/packages/gdb.scm				\
 | ||||
|   %D%/packages/geo.scm				\
 | ||||
|   %D%/packages/geeqie.scm			\
 | ||||
|   %D%/packages/gettext.scm			\
 | ||||
|   %D%/packages/gforth.scm			\
 | ||||
|   %D%/packages/ghostscript.scm			\
 | ||||
|  | @ -254,6 +252,7 @@ GNU_SYSTEM_MODULES =				\ | |||
|   %D%/packages/microcom.scm			\
 | ||||
|   %D%/packages/mit-krb5.scm			\
 | ||||
|   %D%/packages/moe.scm				\
 | ||||
|   %D%/packages/monitoring.scm			\
 | ||||
|   %D%/packages/mono.scm				\
 | ||||
|   %D%/packages/moreutils.scm			\
 | ||||
|   %D%/packages/mpd.scm				\
 | ||||
|  | @ -285,7 +284,6 @@ GNU_SYSTEM_MODULES =				\ | |||
|   %D%/packages/openstack.scm			\
 | ||||
|   %D%/packages/orpheus.scm			\
 | ||||
|   %D%/packages/ots.scm				\
 | ||||
|   %D%/packages/owncloud.scm			\
 | ||||
|   %D%/packages/package-management.scm		\
 | ||||
|   %D%/packages/parallel.scm			\
 | ||||
|   %D%/packages/password-utils.scm		\
 | ||||
|  | @ -349,7 +347,7 @@ GNU_SYSTEM_MODULES =				\ | |||
|   %D%/packages/statistics.scm			\
 | ||||
|   %D%/packages/suckless.scm			\
 | ||||
|   %D%/packages/swig.scm				\
 | ||||
|   %D%/packages/sxiv.scm				\
 | ||||
|   %D%/packages/sync.scm			\
 | ||||
|   %D%/packages/synergy.scm			\
 | ||||
|   %D%/packages/syndication.scm			\
 | ||||
|   %D%/packages/task-management.scm		\
 | ||||
|  | @ -539,6 +537,8 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/fasthenry-spUtils.patch			\
 | ||||
|   %D%/packages/patches/fasthenry-spSolve.patch			\
 | ||||
|   %D%/packages/patches/fasthenry-spFactor.patch			\
 | ||||
|   %D%/packages/patches/fcgi-2.4.0-gcc44-fixes.patch		\
 | ||||
|   %D%/packages/patches/fcgi-2.4.0-poll.patch			\
 | ||||
|   %D%/packages/patches/findutils-localstatedir.patch		\
 | ||||
|   %D%/packages/patches/findutils-test-xargs.patch		\
 | ||||
|   %D%/packages/patches/flex-CVE-2016-6354.patch			\
 | ||||
|  | @ -592,10 +592,6 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/grub-gets-undeclared.patch		\
 | ||||
|   %D%/packages/patches/grub-freetype.patch			\
 | ||||
|   %D%/packages/patches/gsl-test-i686.patch			\
 | ||||
|   %D%/packages/patches/gst-plugins-good-fix-crashes.patch	\
 | ||||
|   %D%/packages/patches/gst-plugins-good-fix-invalid-read.patch	\
 | ||||
|   %D%/packages/patches/gst-plugins-good-fix-signedness.patch	\
 | ||||
|   %D%/packages/patches/gst-plugins-good-flic-bounds-check.patch	\
 | ||||
|   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
 | ||||
|   %D%/packages/patches/guile-arm-fixes.patch			\
 | ||||
|   %D%/packages/patches/guile-default-utf8.patch			\
 | ||||
|  | @ -629,7 +625,6 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/hypre-ldflags.patch			\
 | ||||
|   %D%/packages/patches/icecat-avoid-bundled-libraries.patch	\
 | ||||
|   %D%/packages/patches/icecat-binutils.patch			\
 | ||||
|   %D%/packages/patches/icecat-CVE-2016-9064.patch		\
 | ||||
|   %D%/packages/patches/icu4c-CVE-2014-6585.patch		\
 | ||||
|   %D%/packages/patches/icu4c-CVE-2015-1270.patch		\
 | ||||
|   %D%/packages/patches/icu4c-CVE-2015-4760.patch		\
 | ||||
|  | @ -737,9 +732,9 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
 | ||||
|   %D%/packages/patches/musl-CVE-2016-8859.patch			\
 | ||||
|   %D%/packages/patches/mutt-store-references.patch		\
 | ||||
|   %D%/packages/patches/nasm-no-ps-pdf.patch			\
 | ||||
|   %D%/packages/patches/net-tools-bitrot.patch			\
 | ||||
|   %D%/packages/patches/netcdf-config-date.patch			\
 | ||||
|   %D%/packages/patches/netcdf-date-time.patch			\
 | ||||
|   %D%/packages/patches/netcdf-tst_h_par.patch			\
 | ||||
|   %D%/packages/patches/netsurf-about.patch			\
 | ||||
|   %D%/packages/patches/ngircd-handle-zombies.patch		\
 | ||||
|   %D%/packages/patches/ngircd-no-dns-in-tests.patch		\
 | ||||
|  | @ -904,7 +899,6 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/vpnc-script.patch			\
 | ||||
|   %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
 | ||||
|   %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
 | ||||
|   %D%/packages/patches/vtk-mesa-10.patch			\
 | ||||
|   %D%/packages/patches/weechat-python.patch			\
 | ||||
|   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
 | ||||
|   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
 | ||||
|  |  | |||
|  | @ -34,24 +34,32 @@ | |||
| (define-public nasm | ||||
|   (package | ||||
|     (name "nasm") | ||||
|     (version "2.12.01") | ||||
|     (version "2.12.02") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "http://www.nasm.us/pub/nasm/releasebuilds/" | ||||
|                                   version "/" name "-" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "12bl6vc5sjp9nnhf0iwy6l27vq783y0rxrjpp8sy84h5cb7a3fwx")) | ||||
|               (patches (search-patches "nasm-no-ps-pdf.patch")))) | ||||
|                 "08a3ah791cl7xdyrlz33mwv4xzs08rxh0p902p3ypi5iq1h6p1jc")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs `(("perl" ,perl)  ;for doc and test target | ||||
|                      ("texinfo" ,texinfo))) | ||||
|     (arguments | ||||
|      `(#:test-target "test" | ||||
|        #:phases (modify-phases %standard-phases | ||||
|                   (add-after 'install 'install-info | ||||
|                     (lambda _ | ||||
|                       (zero? (system* "make" "install_doc"))))))) | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'dont-build-ps-pdf-outputs | ||||
|            (lambda _ | ||||
|              (substitute* "doc/Makefile.in" | ||||
|                (("info html nasmdoc.txt nasmdoc.ps nasmdoc.pdf") | ||||
|                 "info html nasmdoc.txt") | ||||
|                (("nasmdoc.ps nasmdoc.pdf nasmdoc.txt \\$\\(INSTALLROOT\\)\\$\\(docdir\\)") | ||||
|                 "nasmdoc.txt $(INSTALLROOT)$(docdir)")) | ||||
|              #t)) | ||||
|          (add-after 'install 'install-info | ||||
|            (lambda _ | ||||
|              (zero? (system* "make" "install_doc"))))))) | ||||
|     (home-page "http://www.nasm.us/") | ||||
|     (synopsis "80x86 and x86-64 assembler") | ||||
|     (description | ||||
|  | @ -62,7 +70,6 @@ Windows32 and Windows64.  It will also output plain binary files.  Its syntax | |||
| is designed to be simple and easy to understand, similar to Intel's but less | ||||
| complex.  It supports all currently known x86 architectural extensions, and | ||||
| has strong support for macros.") | ||||
|     (supported-systems '("x86_64-linux" "i686-linux")) | ||||
|     (license license:bsd-3))) | ||||
| 
 | ||||
| (define-public yasm | ||||
|  |  | |||
|  | @ -186,7 +186,7 @@ streams from live audio.") | |||
| (define-public ardour | ||||
|   (package | ||||
|     (name "ardour") | ||||
|     (version "5.4") | ||||
|     (version "5.5") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|  | @ -196,14 +196,14 @@ streams from live audio.") | |||
|                ;; Ardour expects this file to exist at build time.  The revision | ||||
|                ;; is the output of | ||||
|                ;;    git describe HEAD | sed 's/^[A-Za-z]*+//' | ||||
|                '(call-with-output-file | ||||
|                `(call-with-output-file | ||||
|                     "libs/ardour/revision.cc" | ||||
|                   (lambda (port) | ||||
|                     (format port "#include \"ardour/revision.h\" | ||||
| namespace ARDOUR { const char* revision = \"5.4\" ; }")))) | ||||
|                     (format port ,(string-append "#include \"ardour/revision.h\" | ||||
| namespace ARDOUR { const char* revision = \"" version "\" ; }"))))) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1yrg0d86k9fqw7lmzjglilbadb4cjqxqkf6ii4bjs6rihj6b0qrf")) | ||||
|                 "1a3whv2dhl073pkd803hcp53rdmm31adjwn40qi06lkjb7rgwrlh")) | ||||
|               (file-name (string-append name "-" version)))) | ||||
|     (build-system waf-build-system) | ||||
|     (arguments | ||||
|  | @ -1653,9 +1653,16 @@ software.") | |||
|                      (setenv "LDFLAGS" | ||||
|                              (string-append | ||||
|                               "-L" (assoc-ref inputs "boost") "/lib " | ||||
|                               "-lboost_system"))))))) | ||||
|                               "-lboost_system")) | ||||
|                      ;; Needed for gtkmm | ||||
|                      (substitute* '("src/wscript_build" | ||||
|                                     "examples/wscript_build") | ||||
|                        (("cxxflags.*= \\[" line) | ||||
|                         (string-append line "\"-std=c++11\", "))) | ||||
|                      #t))))) | ||||
|     (inputs | ||||
|      `(("boost" ,boost) | ||||
|        ("gtkmm" ,gtkmm-2) | ||||
|        ("lv2" ,lv2))) | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config))) | ||||
|  | @ -1798,6 +1805,23 @@ and ALSA.") | |||
| aimed at audio/musical applications.") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public raul-devel | ||||
|   (let ((commit "f8bf77d3c3b77830aedafb9ebb5cdadfea7ed07a") | ||||
|         (revision "1")) | ||||
|     (package (inherit raul) | ||||
|       (name "raul") | ||||
|       (version (string-append "0.8.4-" revision "." | ||||
|                               (string-take commit 9))) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "http://git.drobilla.net/raul.git") | ||||
|                       (commit commit))) | ||||
|                 (file-name (string-append name "-" version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1lby508fb0n8ks6iz959sh18fc37br39d6pbapwvbcw5nckdrxwj"))))))) | ||||
| 
 | ||||
| (define-public rubberband | ||||
|   (package | ||||
|     (name "rubberband") | ||||
|  |  | |||
|  | @ -97,7 +97,7 @@ | |||
| (define-public aragorn | ||||
|   (package | ||||
|     (name "aragorn") | ||||
|     (version "1.2.37") | ||||
|     (version "1.2.38") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -105,7 +105,7 @@ | |||
|                     version ".tgz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1c7zxk0h8wsjbix82fmmfyywcq6zn3q9h5y67kcl5y3qal2bv2xr")))) | ||||
|                 "09i1rg716smlbnixfm7q1ml2mfpaa2fpn3hwjg625ysmfwwy712b")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f ; there are no tests | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ | |||
| ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | ||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -29,11 +30,15 @@ | |||
|   #:use-module (gnu packages adns) | ||||
|   #:use-module (gnu packages check) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages crypto) | ||||
|   #:use-module (gnu packages curl) | ||||
|   #:use-module (gnu packages cyrus-sasl) | ||||
|   #:use-module (gnu packages databases) | ||||
|   #:use-module (gnu packages file) | ||||
|   #:use-module (gnu packages glib) | ||||
|   #:use-module (gnu packages gnome) | ||||
|   #:use-module (gnu packages gnupg) | ||||
|   #:use-module (gnu packages gstreamer) | ||||
|   #:use-module (gnu packages gtk) | ||||
|   #:use-module (gnu packages libevent) | ||||
|   #:use-module (gnu packages linux) | ||||
|  | @ -251,3 +256,39 @@ interface, for the Transmission BitTorrent daemon.") | |||
| download utility.  It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. | ||||
| Aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.") | ||||
|     (license l:gpl2+))) | ||||
| 
 | ||||
| 
 | ||||
| (define-public uget | ||||
|   (package | ||||
|     (name "uget") | ||||
|     (version "2.0.8") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://sourceforge/urlget/" | ||||
|                                   "uget%20%28stable%29/" version "/uget-" | ||||
|                                   version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0919cf7lfk1djdl003cahqjvafdliv7v2l8r5wg95n4isqggdk75")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("intltool" ,intltool))) | ||||
|     (inputs | ||||
|      `(("curl" ,curl) | ||||
|        ("gtk+" ,gtk+) | ||||
|        ("glib" ,glib) | ||||
|        ("gnutls" ,gnutls) | ||||
|        ("gstreamer" ,gstreamer) | ||||
|        ("libgcrypt" ,libgcrypt) | ||||
|        ("libnotify" ,libnotify) | ||||
|        ("openssl" ,openssl))) | ||||
|     (native-inputs | ||||
|      `(("intltool" ,intltool) | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|     (home-page "http://ugetdm.com/") | ||||
|     (synopsis "Universal download manager with GTK+ interface") | ||||
|     (description | ||||
|      "uGet is portable download manager with GTK+ interface supporting | ||||
| HTTP, HTTPS, BitTorrent and Metalink, supporting multi-connection | ||||
| downloads, download scheduling, download rate limiting.") | ||||
|     (license l:lgpl2.1+))) | ||||
|  |  | |||
|  | @ -24,6 +24,7 @@ | |||
|   #:use-module (guix utils) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (gnu packages admin) | ||||
|   #:use-module (gnu packages enlightenment) | ||||
|   #:use-module (gnu packages glib) | ||||
|   #:use-module (gnu packages linux) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|  | @ -90,3 +91,38 @@ cases.  Connman implements DNS resolving and caching, DHCP clients for both | |||
| IPv4 and IPv6, link-local IPv4 address handling and tethering (IP connection | ||||
| sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.") | ||||
|     (license gpl2))) | ||||
| 
 | ||||
| (define-public econnman | ||||
|   (package | ||||
|     (name "econnman") | ||||
|     (version "1.1") | ||||
|     (source | ||||
|       (origin | ||||
|         (method url-fetch) | ||||
|         (uri (string-append "https://download.enlightenment.org/rel/apps/" | ||||
|                             "econnman/econnman-" version ".tar.gz")) | ||||
|         (sha256 | ||||
|          (base32 | ||||
|           "057pwwavlvrrq26bncqnfrf449zzaim0zq717xv86av4n940gwv0")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:configure-flags '("--localstatedir=/var") | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'install 'wrap-binary | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (let* ((out (assoc-ref outputs "out")) | ||||
|                     (bin (string-append out "/bin/econnman-bin"))) | ||||
|                (wrap-program bin | ||||
|                  `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))) | ||||
|                #t)))))) | ||||
|     (native-inputs `(("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("efl" ,efl) | ||||
|        ("python-2" ,python-2) | ||||
|        ("python2-efl" ,python2-efl))) | ||||
|     (home-page "https://www.enlightenment.org") | ||||
|     (synopsis "Connman User Interface written using the EFL") | ||||
|     (description | ||||
|      "An EFL user interface for the @code{connman} connection manager.") | ||||
|     (license lgpl3))) | ||||
|  |  | |||
|  | @ -636,7 +636,7 @@ extremely small.") | |||
| (define-public perl-dbix-class | ||||
|   (package | ||||
|     (name "perl-dbix-class") | ||||
|     (version "0.082810") | ||||
|     (version "0.082840") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -644,7 +644,7 @@ extremely small.") | |||
|                            "DBIx-Class-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1zlsswk8j2k024gwhdhia8ksrmb8065n98dahkk8c0r69wv85n04")))) | ||||
|          "1vw1f756g8m5hq11nqf5dk2cw2y4mqq91ca5p75fn5g3fp8syja0")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-dbd-sqlite" ,perl-dbd-sqlite) | ||||
|  | @ -690,7 +690,7 @@ single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\", | |||
| (define-public perl-dbix-class-cursor-cached | ||||
|   (package | ||||
|     (name "perl-dbix-class-cursor-cached") | ||||
|     (version "1.001002") | ||||
|     (version "1.001004") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -698,7 +698,7 @@ single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\", | |||
|                            "DBIx-Class-Cursor-Cached-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "19r7jr6pknxiirrybq0cd0lnr76xiw05arnfqgk9nrhp6c7vvil0")))) | ||||
|          "09b2jahn2x12qm4f7qm1jzsxbz7qn1czp6a3fnl5l2i3l4r5421p")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-cache-cache" ,perl-cache-cache) | ||||
|  | @ -715,7 +715,7 @@ built-in caching support.") | |||
| (define-public perl-dbix-class-introspectablem2m | ||||
|   (package | ||||
|     (name "perl-dbix-class-introspectablem2m") | ||||
|     (version "0.001001") | ||||
|     (version "0.001002") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -723,7 +723,7 @@ built-in caching support.") | |||
|                            "DBIx-Class-IntrospectableM2M-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0p9zx1yc1f6jg583l206wilsni2v8mlngc2vf2q8yn10pmy4y6wm")))) | ||||
|          "1w47rh2241iy5x3a9bqsyd5kdp9sk43dksr99frzv4qn4jsazfn6")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-dbix-class" ,perl-dbix-class))) | ||||
|  | @ -740,7 +740,7 @@ introspected and examined.") | |||
| (define-public perl-dbix-class-schema-loader | ||||
|   (package | ||||
|     (name "perl-dbix-class-schema-loader") | ||||
|     (version "0.07042") | ||||
|     (version "0.07046") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -748,7 +748,7 @@ introspected and examined.") | |||
|                            "DBIx-Class-Schema-Loader-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0sb48as7azmj6s4acxh98wcvcik7lxm7dcjz1c3wdrkrbmbbz0jf")))) | ||||
|          "08cgn0dx42y9xsxas9np7s55a7qmy4kf6sfmx0jmk4hryvbapml3")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-config-any" ,perl-config-any) | ||||
|  | @ -843,7 +843,7 @@ columns, primary keys, unique constraints and relationships.") | |||
| (define-public perl-dbd-sqlite | ||||
|   (package | ||||
|     (name "perl-dbd-sqlite") | ||||
|     (version "1.42") | ||||
|     (version "1.52") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -851,7 +851,7 @@ columns, primary keys, unique constraints and relationships.") | |||
|                     version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "14x9cjsc8dz8ad1nad0bqiq9cbk1rjfb8h5y0rpk3pdl38y6afxb")))) | ||||
|                 "0kimb2qr1rh07yylbbfybwcizpmy61ck667amypn4clmkfg0knm6")))) | ||||
|     (build-system perl-build-system) | ||||
|     (inputs `(("sqlite" ,sqlite))) | ||||
|     (propagated-inputs `(("perl-dbi" ,perl-dbi))) | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ | |||
| ;;; Copyright © 2016 John Darrington <jmd@gnu.org> | ||||
| ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> | ||||
| ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> | ||||
| ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -26,7 +27,9 @@ | |||
|   #:use-module (gnu packages autotools) | ||||
|   #:use-module (gnu packages base) | ||||
|   #:use-module (gnu packages databases) | ||||
|   #:use-module (gnu packages crypto) | ||||
|   #:use-module (gnu packages groff) | ||||
|   #:use-module (gnu packages libevent) | ||||
|   #:use-module (gnu packages linux) | ||||
|   #:use-module (gnu packages perl) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|  | @ -134,6 +137,97 @@ high-volume and high-reliability applications. The name BIND stands for | |||
|     (home-page "https://www.isc.org/downloads/bind") | ||||
|     (license (list license:isc)))) | ||||
| 
 | ||||
| (define-public dnscrypt-proxy | ||||
|   (package | ||||
|     (name "dnscrypt-proxy") | ||||
|     (version "1.7.0") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                     "https://download.dnscrypt.org/dnscrypt-proxy/" | ||||
|                     "dnscrypt-proxy-" version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1qw2nib0d5ia8581lbdnjxgn9c7pf2qw8vhpnnh1wjcjj3gpgbqx")) | ||||
|               (modules '((guix build utils))) | ||||
|               (snippet | ||||
|                ;; Delete bundled libltdl. XXX: This package also bundles | ||||
|                ;; a modified libevent that cannot currently be removed. | ||||
|                '(delete-file-recursively "libltdl")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-before 'configure 'autoreconf | ||||
|            (lambda _ | ||||
|              ;; Re-generate build files due to unbundling ltdl. | ||||
|              ;; TODO: Prevent generating new libltdl and building it. | ||||
|              ;; The system version is still favored and referenced. | ||||
|              (zero? (system* "autoreconf" "-vif"))))))) | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config) | ||||
|        ("automake" ,automake) | ||||
|        ("autoconf" ,autoconf) | ||||
|        ("libtool" ,libtool))) | ||||
|     (inputs | ||||
|      `(("libltdl" ,libltdl) | ||||
|        ("libsodium" ,libsodium))) | ||||
|     (home-page "https://www.dnscrypt.org/") | ||||
|     (synopsis "Securely send DNS requests to a remote server") | ||||
|     (description | ||||
|      "@command{dnscrypt-proxy} is a tool for securing communications | ||||
| between a client and a DNS resolver.  It verifies that responses you get | ||||
| from a DNS provider was actually sent by that provider, and haven't been | ||||
| tampered with.  For optimal performance it is recommended to use this as | ||||
| a forwarder for a caching DNS resolver such as @command{dnsmasq}, but it | ||||
| can also be used as a normal DNS \"server\".  A list of public dnscrypt | ||||
| servers is included, and an up-to-date version is available at | ||||
| @url{https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv}.") | ||||
|     (license (list license:isc | ||||
|                    ;; Libevent and src/ext/queue.h is 3-clause BSD. | ||||
|                    license:bsd-3)))) | ||||
| 
 | ||||
| (define-public dnscrypt-wrapper | ||||
|   (package | ||||
|     (name "dnscrypt-wrapper") | ||||
|     (version "0.2.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                     "https://github.com/cofyc/dnscrypt-wrapper/releases" | ||||
|                     "/download/v" version "/" name "-v" version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1vhg4g0r687f51wcdn7z9w1hxapazx6vyh5rsr8wa48sljzd583g")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:make-flags '("CC=gcc") | ||||
|        ;; TODO: Tests require ruby-cucumber and ruby-aruba. | ||||
|        #:tests? #f | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-before 'configure 'create-configure | ||||
|            (lambda _ | ||||
|              (zero? (system* "make" "configure"))))))) | ||||
|     (native-inputs | ||||
|      `(("autoconf" ,autoconf))) | ||||
|     (inputs | ||||
|      `(("libevent" ,libevent) | ||||
|        ("libsodium" ,libsodium))) | ||||
|     (home-page "https://github.com/Cofyc/dnscrypt-wrapper") | ||||
|     (synopsis "Server-side dnscrypt proxy") | ||||
|     (description | ||||
|      "@command{dnscrypt-wrapper} is a tool to expose a name server over | ||||
| the @code{dnscrypt} protocol.  It can be used as an endpoint for the | ||||
| @command{dnscrypt-proxy} client to securely tunnel DNS requests between | ||||
| the two.") | ||||
|     (license (list license:isc | ||||
|                    ;; Bundled argparse is MIT. TODO: package and unbundle. | ||||
|                    license:expat | ||||
|                    ;; dns-protocol.h and rfc1035.{c,h} is gpl2 or gpl3 (either). | ||||
|                    license:gpl2 | ||||
|                    license:gpl3)))) | ||||
| 
 | ||||
| (define-public libasr | ||||
|   (package | ||||
|     (name "libasr") | ||||
|  |  | |||
|  | @ -173,7 +173,7 @@ by no means limited to these applications.)  This package provides XML DTDs.") | |||
| (define-public dblatex | ||||
|   (package | ||||
|     (name "dblatex") | ||||
|     (version "0.3.5") | ||||
|     (version "0.3.9") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://sourceforge/dblatex/dblatex/" | ||||
|  | @ -181,7 +181,7 @@ by no means limited to these applications.)  This package provides XML DTDs.") | |||
|                                   version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0h3472n33pabrn8qwggsahkrjx8lybpwlc3zprby3w3w3x5i830f")))) | ||||
|                 "0pdizc5rjywwzxa1qqhdmba5zr35pbmdwbysalsid7xw87w3kq06")))) | ||||
|     (build-system python-build-system) | ||||
|     ;; TODO: Add xfig/transfig for fig2dev utility | ||||
|     (inputs | ||||
|  | @ -192,6 +192,15 @@ by no means limited to these applications.)  This package provides XML DTDs.") | |||
|        ("libxslt" ,libxslt)))           ;for xsltproc | ||||
|     (arguments | ||||
|      `(#:python ,python-2               ;'print' syntax | ||||
|        ;; Using setuptools causes an invalid "package_base" path in | ||||
|        ;; out/bin/.dblatex-real due to a missing leading '/'.  This is caused | ||||
|        ;; by dblatex's setup.py stripping the root path when creating the | ||||
|        ;; script.  (dblatex's setup.py still uses distutils and thus has to | ||||
|        ;; create the script by itself. The feature for creating scripts is one | ||||
|        ;; of setuptools' features.) | ||||
|        ;; See this thread for details: | ||||
|        ;; https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00030.html | ||||
|        #:use-setuptools? #f | ||||
|        #:tests? #f                      ;no 'test' command | ||||
|        #:phases | ||||
|        (alist-cons-after | ||||
|  |  | |||
|  | @ -126,6 +126,9 @@ | |||
|      `(#:python ,python-2 | ||||
|        #:test-target "check" | ||||
|        #:tests? #f ; FIXME: enable once flake8 is packaged | ||||
|        ;; Calibre is using setuptools by itself, but the setup.py is not | ||||
|        ;; compatible with the shim wrapper (taken from pip) we are using. | ||||
|        #:use-setuptools? #f | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-before 'build 'configure | ||||
|  |  | |||
|  | @ -426,7 +426,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") | |||
| (define-public emacs-with-editor | ||||
|   (package | ||||
|     (name "emacs-with-editor") | ||||
|     (version "2.5.6") | ||||
|     (version "2.5.8") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -435,7 +435,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") | |||
|               (file-name (string-append name "-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "14vypqj3wqym5yd0nggfm1xdgq5hv1kwxkg6i8ymlpxcdfxj45w7")))) | ||||
|                 "1dghd0m5zwayv553g4cr990s4ig5lyh0b52qfdv5rbqnndpj3cjn")))) | ||||
|     (build-system emacs-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("emacs-dash" ,emacs-dash))) | ||||
|  | @ -897,14 +897,14 @@ provides an optional IDE-like error list.") | |||
| (define-public emms | ||||
|   (package | ||||
|     (name "emacs-emms") | ||||
|     (version "4.1") | ||||
|     (version "4.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://gnu/emms/emms-" | ||||
|                                   version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0ay6631p3dr6xnhkm7skwn0gp317r1mxbip28m126w4zqf05cbh3")) | ||||
|                 "1xa9y64g5z8gfnxk1c2rf3plfjhqn4r6j8dpiygnfs6w4giysn22")) | ||||
|               (modules '((guix build utils))) | ||||
|               (snippet | ||||
|                '(substitute* "Makefile" | ||||
|  | @ -974,22 +974,19 @@ provides an optional IDE-like error list.") | |||
|                     (string-append "\"" mp3info "/bin/mp3info\""))))))) | ||||
|          (add-before 'install 'pre-install | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              ;; The 'install' rule expects the target directory to exist. | ||||
|              ;; The 'install' rule expects the target directories to exist. | ||||
|              (let* ((out  (assoc-ref outputs "out")) | ||||
|                     (bin  (string-append out "/bin")) | ||||
|                     (man1 (string-append out "/share/man/man1"))) | ||||
|                (mkdir-p bin) | ||||
|                (mkdir-p man1) | ||||
|                #t))) | ||||
|          (add-after 'install 'post-install | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (let* ((out    (assoc-ref outputs "out")) | ||||
|                     (target (string-append | ||||
|                              out "/bin/emms-print-metadata"))) | ||||
|              (let ((out (assoc-ref outputs "out"))) | ||||
|                (symlink "emms-auto.el" | ||||
|                         (string-append out "/share/emacs/site-lisp/" | ||||
|                                        "emms-autoloads.el")) | ||||
|                (mkdir-p (dirname target)) | ||||
|                (copy-file "src/emms-print-metadata" target) | ||||
|                (chmod target #o555))))) | ||||
|                                        "emms-autoloads.el")))))) | ||||
|        #:tests? #f)) | ||||
|     (native-inputs `(("emacs" ,emacs-minimal)    ;for (guix build emacs-utils) | ||||
|                      ("texinfo" ,texinfo))) | ||||
|  | @ -2286,7 +2283,7 @@ well as completely new features.") | |||
| (define-public emacs-hl-todo | ||||
|   (package | ||||
|     (name "emacs-hl-todo") | ||||
|     (version "1.7.1") | ||||
|     (version "1.7.4") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -2295,7 +2292,7 @@ well as completely new features.") | |||
|               (file-name (string-append "hl-todo-" version ".el")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0flhz9vy8w1vvwwji92pi5k4659hl368bakj2qf2zfd26z8x583h")))) | ||||
|                 "016ivl4s0ysrm1xbfi86j5xcs759fcb0mkspxw81x8mpi3yb46ya")))) | ||||
|     (build-system emacs-build-system) | ||||
|     (home-page "https://github.com/tarsius/hl-todo") | ||||
|     (synopsis "Emacs mode to highlight TODO and similar keywords") | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ | |||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages curl) | ||||
|   #:use-module (gnu packages fontutils) | ||||
|   #:use-module (gnu packages freedesktop) | ||||
|   #:use-module (gnu packages fribidi) | ||||
|   #:use-module (gnu packages game-development) | ||||
|   #:use-module (gnu packages gettext) | ||||
|  | @ -298,3 +299,33 @@ that tries to lower the barrier to getting involved in Enlightenment development | |||
| and in creating applications based on the Enlightenment Foundation Library suite.") | ||||
|     (license (list license:public-domain ; data/extra/skeleton | ||||
|                    license:gpl2))))      ; edi | ||||
| 
 | ||||
| (define-public lekha | ||||
|   (package | ||||
|     (name "lekha") | ||||
|     (version "0.2.1") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (pypi-uri "Lekha" version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0zr6i74ik58pbzrd7r9l7sawqbdv0r2c1a9927qkqzwga27x8j15")))) | ||||
|     (build-system python-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f ; no test target | ||||
|        #:python ,python-2 | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'fix-data-location | ||||
|            (lambda _ (substitute* "setup.py" | ||||
|                        (("'/usr/")"'")) | ||||
|              #t))))) | ||||
|     (propagated-inputs | ||||
|      `(("python2-efl" ,python2-efl) | ||||
|        ("python2-pypdf2" ,python2-pypdf2) | ||||
|        ("python2-pyxdg" ,python2-pyxdg))) | ||||
|     (synopsis "Simple PDF viewer") | ||||
|     (description | ||||
|      "Simple PDF viewer based on the Enlightenment Foundation Libraries.") | ||||
|     (home-page "https://github.com/kaihu/lekha") | ||||
|     (license license:gpl3+))) | ||||
|  |  | |||
|  | @ -1,67 +0,0 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> | ||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
| ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||||
| ;;; under the terms of the GNU General Public License as published by | ||||
| ;;; the Free Software Foundation; either version 3 of the License, or (at | ||||
| ;;; your option) any later version. | ||||
| ;;; | ||||
| ;;; GNU Guix is distributed in the hope that it will be useful, but | ||||
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| ;;; GNU General Public License for more details. | ||||
| ;;; | ||||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu packages feh) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (gnu packages image) | ||||
|   #:use-module (gnu packages curl) | ||||
|   #:use-module (gnu packages xorg) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module ((guix licenses) #:prefix license:)) | ||||
| 
 | ||||
| (define-public feh | ||||
|   (package | ||||
|     (name "feh") | ||||
|     (version "2.14.1") | ||||
|     (home-page "https://feh.finalrewind.org/") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append home-page | ||||
|                                   name "-" version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1hlzgr0masgbm1vdn085vz81s9kpnah8kjkb1w1xfsxr1b99x8f0")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|       '(#:phases (alist-delete 'configure %standard-phases) | ||||
|         #:tests? #f | ||||
|         #:make-flags | ||||
|           (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out"))))) | ||||
|     (inputs `(("imlib2" ,imlib2) | ||||
|               ("curl" ,curl) | ||||
|               ("libpng" ,libpng) | ||||
|               ("libxt" ,libxt) | ||||
|               ("libx11" ,libx11) | ||||
|               ("libxinerama" ,libxinerama))) | ||||
|     (synopsis "Fast and light imlib2-based image viewer") | ||||
|     (description | ||||
|       "feh is an X11 image viewer aimed mostly at console users. | ||||
| Unlike most other viewers, it does not have a fancy GUI, but simply | ||||
| displays images.  It can also be used to set the desktop wallpaper. | ||||
| It is controlled via commandline arguments and configurable key/mouse | ||||
| actions.") | ||||
| 
 | ||||
|     ;; The license is really the Expat license, with additional wording in the | ||||
|     ;; 2nd paragraph: "acknowledgment shall be given in the documentation and | ||||
|     ;; software packages that this Software was used." | ||||
|     (license (license:x11-style | ||||
|               "file://COPYING" | ||||
|               "See 'COPYING' in the distribution.")))) | ||||
|  | @ -3,6 +3,7 @@ | |||
| ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> | ||||
| ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> | ||||
| ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -22,6 +23,7 @@ | |||
| (define-module (gnu packages flashing-tools) | ||||
|   #:use-module (guix licenses) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix git-download) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (guix build-system gnu) | ||||
|  | @ -211,3 +213,37 @@ You need to add the udev rules to make the Teensy update available for | |||
| non-root users.") | ||||
|       (home-page "https://www.pjrc.com/teensy/loader_cli.html") | ||||
|       (license gpl3)))) | ||||
| 
 | ||||
| (define-public rkflashtool | ||||
|   (let ((commit "094bd6410cb016e487e2ccb1050c59eeac2e6dd1") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "rkflashtool") | ||||
|       (version (string-append "0.0.0-" revision "." (string-take commit 7))) | ||||
|       (source | ||||
|         (origin | ||||
|           (method git-fetch) | ||||
|           (uri (git-reference | ||||
|                 (url "https://github.com/linux-rockchip/rkflashtool.git") | ||||
|                 (commit commit))) | ||||
|           (file-name (string-append name "-" version "-checkout")) | ||||
|           (sha256 | ||||
|            (base32 | ||||
|             "1zkd8zxir3rfg3sy9r20bcnxclnplryn583gqpcr3iad0k3xbah7")))) | ||||
|       (build-system gnu-build-system) | ||||
|       (arguments | ||||
|        '(#:phases | ||||
|          (modify-phases %standard-phases | ||||
|            (delete 'configure)) ; no configure | ||||
|          #:make-flags (list (string-append "PREFIX=" %output)) | ||||
|          #:tests? #f)) ; no tests | ||||
|       (native-inputs | ||||
|        `(("pkg-config" ,pkg-config))) | ||||
|       (inputs | ||||
|        `(("libusb" ,libusb))) | ||||
|       (home-page "https://github.com/linux-rockchip/rkflashtool") | ||||
|       (synopsis "Tools for flashing Rockchip devices") | ||||
|       (description "Allows flashing of Rockchip based embedded linux devices. | ||||
| The list of currently supported devices is: RK2818, RK2918, RK2928, RK3026, | ||||
| RK3036, RK3066, RK312X, RK3168, RK3188, RK3288, RK3368.") | ||||
|       (license bsd-2)))) | ||||
|  |  | |||
|  | @ -1,108 +0,0 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
| ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||||
| ;;; under the terms of the GNU General Public License as published by | ||||
| ;;; the Free Software Foundation; either version 3 of the License, or (at | ||||
| ;;; your option) any later version. | ||||
| ;;; | ||||
| ;;; GNU Guix is distributed in the hope that it will be useful, but | ||||
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| ;;; GNU General Public License for more details. | ||||
| ;;; | ||||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu packages geeqie) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module ((guix licenses) #:prefix l:) | ||||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module (gnu packages autotools) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages ghostscript) | ||||
|   #:use-module (gnu packages glib) | ||||
|   #:use-module (gnu packages gtk) | ||||
|   #:use-module (gnu packages image) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages xml)) | ||||
| 
 | ||||
| (define-public exiv2                              ; XXX: move elsewhere? | ||||
|   (package | ||||
|     (name "exiv2") | ||||
|     (version "0.25") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (list (string-append "http://www.exiv2.org/exiv2-" | ||||
|                                        version ".tar.gz") | ||||
|                         (string-append "https://fossies.org/linux/misc/exiv2-" | ||||
|                                        version ".tar.gz"))) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "197g6vgcpyf9p2cwn5p5hb1r714xsk1v4p96f5pv1z8mi9vzq2y8")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments '(#:tests? #f))                    ; no `check' target | ||||
|     (propagated-inputs | ||||
|      `(("expat" ,expat) | ||||
|        ("zlib" ,zlib))) | ||||
|     (native-inputs | ||||
|      `(("intltool" ,intltool))) | ||||
|     (home-page "http://www.exiv2.org/") | ||||
|     (synopsis "Library and command-line utility to manage image metadata") | ||||
|     (description | ||||
|      "Exiv2 is a C++ library and a command line utility to manage image | ||||
| metadata.  It provides fast and easy read and write access to the Exif, IPTC | ||||
| and XMP metadata of images in various formats.") | ||||
| 
 | ||||
|     ;; Files under `xmpsdk' are a copy of Adobe's XMP SDK, licensed under the | ||||
|     ;; 3-clause BSD license: <http://www.adobe.com/devnet/xmp/sdk/eula.html>. | ||||
|     ;; The core is GPLv2+: | ||||
|     ;;   <https://launchpad.net/ubuntu/precise/+source/exiv2/+copyright>. | ||||
|     (license l:gpl2+))) | ||||
| 
 | ||||
| (define-public geeqie | ||||
|   (package | ||||
|     (name "geeqie") | ||||
|     (version "1.3") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append "https://github.com/BestImageViewer/geeqie/" | ||||
|                                  "releases/download/v" version "/geeqie-" | ||||
|                                  version ".tar.xz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "0gzc82sy66pbsmq7lnmq4y37zqad1zfwfls3ik3dmfm8s5nmcvsb")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'autogen | ||||
|            (lambda _ | ||||
|              (setenv "NOCONFIGURE" "true") | ||||
|              (zero? (system* "sh" "autogen.sh"))))))) | ||||
|     (inputs | ||||
|      `(;; ("libchamplain" ,libchamplain) | ||||
|        ("lcms" ,lcms) | ||||
|        ("exiv2" ,exiv2) | ||||
|        ("libpng" ,libpng) | ||||
|        ("gtk+" ,gtk+-2))) | ||||
|     (native-inputs | ||||
|      `(("autoconf" ,autoconf) | ||||
|        ("automake" ,automake) | ||||
|        ("glib" ,glib "bin") ; glib-gettextize | ||||
|        ("intltool" ,intltool) | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|     (home-page "http://www.geeqie.org/") | ||||
|     (synopsis "Lightweight GTK+ based image viewer") | ||||
|     (description | ||||
|      "Geeqie is a lightweight GTK+ based image viewer for Unix like operating | ||||
| systems.  It features: EXIF, IPTC and XMP metadata browsing and editing | ||||
| interoperability; easy integration with other software; geeqie works on files | ||||
| and directories, there is no need to import images; fast preview for many raw | ||||
| image formats; tools for image comparison, sorting and managing photo | ||||
| collection.  Geeqie was initially based on GQview.") | ||||
|     (license l:gpl2+))) | ||||
|  | @ -455,7 +455,7 @@ by GDBus included in Glib.") | |||
| (define libsigc++ | ||||
|   (package | ||||
|     (name "libsigc++") | ||||
|     (version "2.8.0") | ||||
|     (version "2.10.0") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append "mirror://gnome/sources/libsigc++/" | ||||
|  | @ -463,7 +463,7 @@ by GDBus included in Glib.") | |||
|                                  name "-" version ".tar.xz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "0lcnzzdq6718znfshs1hflpwqq6awbzwdyp4kv5lfaf54z880jbp")))) | ||||
|                "10cd54l4zihss9qxfhd2iip2k7mr292k37i54r2cpgv0c8sdchzq")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs `(("pkg-config" ,pkg-config) | ||||
|                      ("m4" ,m4))) | ||||
|  |  | |||
|  | @ -97,7 +97,6 @@ | |||
|   #:use-module (gnu packages scanner) | ||||
|   #:use-module (gnu packages ssh) | ||||
|   #:use-module (gnu packages xml) | ||||
|   #:use-module (gnu packages geeqie) | ||||
|   #:use-module (gnu packages gl) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages tex) | ||||
|  |  | |||
|  | @ -29,7 +29,6 @@ | |||
|   #:use-module (gnu packages autotools) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages curl) | ||||
|   #:use-module (gnu packages geeqie) | ||||
|   #:use-module (gnu packages gettext) | ||||
|   #:use-module (gnu packages glib) | ||||
|   #:use-module (gnu packages gnome) | ||||
|  |  | |||
|  | @ -303,71 +303,41 @@ standards.") | |||
| (define-public icecat | ||||
|   (package | ||||
|     (name "icecat") | ||||
|     (version "45.3.0-gnu1-beta") | ||||
|     (version "45.5.1-gnu1") | ||||
|     (source | ||||
|      (origin | ||||
|       (method url-fetch) | ||||
|       (uri (list (string-append "mirror://gnu/gnuzilla/" version "/" | ||||
|                                 name "-" version ".tar.bz2") | ||||
|                  ;; XXX Temporary URI for 45.3 beta release. | ||||
|                  ;;     Remove when no longer needed. | ||||
|                  (string-append "http://jenkins.trisquel.info/icecat/binaries/" | ||||
|                                 "icecat-45.3.0-gnu1.tar.bz2"))) | ||||
|       (uri (string-append "mirror://gnu/gnuzilla/" | ||||
|                           (first (string-split version #\-)) | ||||
|                           "/" name "-" version ".tar.bz2")) | ||||
|       (sha256 | ||||
|        (base32 | ||||
|         "1hk5lwaqm8nkfm43sq521mzyrx0x3iiwvlcy62m7cq7grz9wixp6")) | ||||
|         "1sbfgsibmb8wfmb2g40gmqwq3nikmrgzksf51ydrz7gnafyfaqw1")) | ||||
|       (patches | ||||
|        `(,(search-patch "icecat-avoid-bundled-libraries.patch") | ||||
|          ,(search-patch "icecat-binutils.patch") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5250.patch"     "6711ccb0184e" "1p0s91rw1j7ib6hy9gh5p0l33rja32rfgygh29jw4wq1hxfql8rk") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt1.patch" "b08f28db372e" "0fmifimavawbff700rzjibsnr16am6902gp965scvi1iy78754ia") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt2.patch" "a49fd7eb57ba" "1dyh0pjdmf64sjbj1x0mdjwfispacx9yny1kx9nzpf85myryr640") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt3.patch" "9707c3423a1e" "12nn8av0akza4ml1is9mfy8f7368mrkxsl32ly97r4irzh0iryh1") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt4.patch" "9d632865560a" "1msp1wqv0c317wqkm82hd9ajbg4a5mcr8pld5j8cx37ccv7f21g3") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt5.patch" "90697781ec9f" "1h6gcrw5ykf7r59phxqkhpfs7jsgzqn509qm43sj7mbpcvqvk5mg") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt6.patch" "dd9eb81853b9" "1lyqnn40sayziych8gqd5aj7il3zajf318y8ddj8dzz3c8id5dzc") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt7.patch" "d91fc76079e0" "022lhixa8dxa6ny9a4bh2di282i0lhyq0glqr9n4q3r8msfmf0ba") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt8.patch" "3e37ba5e0867" "1w8lncxaayq4xndhyp1hwlv00zggbayljq6rlypb8kdwgzfpi77w") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5257-pt9.patch" "3c4958a98908" "16bc6ai5qddnpm3yw24lry5s7i05xs0ycixzxiir4wmcgwcaayiy") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5261.patch"     "bc2f5467b33d" "0i4b8ydmqg4blx541f56g9qrlm7gp6ih4cs7ixbds724cwk83b9f") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5270.patch"     "7cd50d56bb61" "15nbp5axr59mczxgf37nli37jbw0jdknmxz7z71772pzjd2z07r9") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5272.patch"     "6e43a01fee3c" "025xp1wdnz1gc5l2rsgbrwsh1pbysjiyfgz0g6rvr390r7ag1n74") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5274.patch"     "10c9453407de" "1wqh6hj0dpa7r3hhlyrflcv3r3cg0xq4rb0zvhysi6l7lwb8q51r") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5276.patch"     "fc818ab03f15" "1q64ipl172dcmyy9p8p3l3ljpdh1q1jg48lai0qn2xgknl7sdpks") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5277.patch"     "7b668c5cec92" "1qmchn6qifgjakzac6i4hgnivy062pzgz9p1l11c1m3an1rh0isg") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5278.patch"     "fd5052e343df" "1nzmzlnsz61w9aw4mjvgmlkz88aqv1w858rr0mbv07hwyrljfi84") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5280.patch"     "30673bc9730b" "1qz1684v1rp86ngadcaqd68iqf472flnrnk971ryg4fbsyy8g1za") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5281-pt1.patch" "61405f1fd1df" "1fgmq67arwsl1nrl133fcb5cz6jbbcfjvbv8cd8cadhapin971a7") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5281-pt2.patch" "7776b6ec7b92" "1f7k8f4lk7nyghwajsxf6nb7yvzsaw3jwpa3316znsva12m548mn") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5284-pt1.patch" "55e768767416" "1gg7m12njbkn1jqf2gp2y7zd9ik3xhqkjb7znczna4l438h7ki83") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5284-pt2.patch" "3c42249975a5" "0gnanndkmhsp49rldv4kh0smkdcs7616v46hn567kfw8yfwqvnli") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5284-pt3.patch" "126e5d574811" "13gr08bzqy23adz0ciihb7cy9wdnkcn71i77a3y5b5apm6k54mwi") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5284-pt4.patch" "7b8bd7aae1a8" "0mq5gpq6ni8czfcs1rif4is0igh0054aw41ga0jqkq58g7lavkrf") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5284-pt5.patch" "0799490f4e6f" "1ypv6i48nabbhcqbach8fbgz9bmnhm7q5z9dnfid44z8g54l3f33") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5284-pt6.patch" "fc990e4ae8bc" "1s2cj505ajwwiy4xvn5zlmyzqpgahxmqqvis0a6xm6mjbjh02gm4") | ||||
|          ,(mozilla-patch "icecat-bug-1251088.patch"       "5ffa912ed83e" "0v5lpv3c89c2d4y5acn0kyijv096axdnrvaj5ya5yypzfcaqxv24") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt1.patch" "d4b5b8f3e373" "0w8cxn6ryhgxryy8k8i06yw4mknv509ns9ff1avd0hmgxa83mcdp") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt2.patch" "adce603ae36d" "0mgs85cwx61bk17r7npl311l4m8yn4667wyhgjmm2ajiys6nn0yl") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt3.patch" "97268426bb6f" "1z7hg796cgag025gm9pp2szz7w870s7naagdri1dlsilj797v8hr") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt4.patch" "fc055950b6b8" "05iml5k3rzc653jk4imd111sh18625jxfxkcj12kjdihl0gdr4x4") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt5.patch" "6f845c23565b" "01dlbnmpsnwr448fajs276y62gl03r74k1hxnwsg6ihwhnfdvn5a") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt6.patch" "e5d51ca7a3c0" "0hshcz24hc6pkz5pcqxhajm17ibwrlfn1s00frfnpjjy56vacfz0") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt7.patch" "61d1463acd04" "1iig4a79dxmfcr6w82mdhyl88wy7d36g5n4p24632kbabgl9j9sz") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt8.patch" "8e0bab4216de" "1knq8h5ni8crfndi3p78b2pyj5lzchqw67vk0yx061r76mq4wp4r") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt9.patch" "bb10104dc89e" "1flvagckrzfk7hs2xzb5j3s5i0ck57ygyskh5494xmpa2a1nnsqj") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt10.patch" "7006b275b829" "0sqagm247wx94mf51fyhdkn0vf1a1qy9i829shjnhssd79srxmnn") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5290-pt11.patch" "32ce7be98543" "1y2r9i4p1qpqi75mlwmibr51whz5h1vj28c6mh6ik57dxkqxbclb") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5291.patch"     "3ff0c89f3b26" "1prn74aglshaj27jfrpd2s2i4slpljw4rbzjxc1qgwjvkq4m6j6f") | ||||
|          ,(mozilla-patch "icecat-CVE-2016-5297.patch"     "46b07bdbf8b2" "1n8y1c5l0ms81dra7jsx8mp633ak5qvx105drvlg9hn3m0fwv1lj") | ||||
|          ,(search-patch  "icecat-CVE-2016-9064.patch") ; adapted for icecat based on: | ||||
|                                         ;                 "00c2b7baaa0b" "0y02yb7r62656nq9dji9dnwils2lxqasjz5byv62j1xa87r7f9hp" | ||||
|          ,(mozilla-patch "icecat-CVE-2016-9066.patch"     "576f1725a57e" "1lic9d3r8r1vcniw1g3ca71390lw3dmwjsw55dp6z96hyjbcq3fd") | ||||
|          ,(mozilla-patch "icecat-bug-1212939.patch"       "4a0e851f83e4" "182vx1qxrr7r2175jjf0bcixwwm1khdj4sq0c8wnsyry7p9waq5q") | ||||
|          ,(mozilla-patch "icecat-bug-1168743.patch"       "a1e06af61ab3" "07llk1ba6axjasiv30vicz96k55ff4mybxy21vjxk6j0asgyjz23") | ||||
|          ,(mozilla-patch "icecat-bug-1287176.patch"       "0569d5dce9db" "1d41sqbq6jc3af73dz9w19win7v7c12kw1mp7j7b1gkadq46c4y7") | ||||
|          ,(mozilla-patch "icecat-bug-1263665.patch"       "a79cafee93f4" "0bn7hpm8mh8qmkpz5wiridr792irrs5sjxyvryazy2i0p4pjh62p") | ||||
|          ,(mozilla-patch "icecat-bug-1304962.patch"       "f61049d5f373" "04d1na31qqq7yq4jjvhq6vzqq3f23rwac8c6fw4h5fx1pdb3l997") | ||||
|          ,(mozilla-patch "icecat-bug-1314574.patch"       "46b2558ca469" "00q8676xg4wb7p371wgi04nl05j7idkb2kna9a0l08k6lks9wdhh"))) | ||||
|        (list | ||||
|         (search-patch "icecat-avoid-bundled-libraries.patch") | ||||
|         (search-patch "icecat-binutils.patch") | ||||
|         (mozilla-patch "icecat-bug-1301381.patch"       "2e5438a92617" "0pyjbzyy04759ldpcar8q8cccv67j1jkxsg46rkq7a3rbhmwmw4p") | ||||
|         (mozilla-patch "icecat-bug-1317409.patch"       "7391f60fb790" "1hydggpmmm2cs9lb15micnkxn4wl4cda9g74hkn3zmks805vjz3h") | ||||
|         (mozilla-patch "icecat-bug-1309834.patch"       "744e01001e6e" "0z2fq765kap3ll9as5rvjpnbj3pw26074alw7df0zi215qz47nxr") | ||||
|         (mozilla-patch "icecat-bug-1317936-pt1.patch"   "8ae673f34a5b" "1rlbihckl9afa0y91lqs7gpnv6a7zxzrmxjv95y3yrl03kibqp76") | ||||
|         (mozilla-patch "icecat-bug-1317936-pt2.patch"   "409c23c144fe" "05kgs16y8s5pxmg2dxp93247zagnj6zgj3209qpm5hz3an7gr13h") | ||||
|         (mozilla-patch "icecat-bug-1319122.patch"       "994d9bd0e28d" "007wifyx3b2ln4fwv1i8n24yz5ngjf4mkzd7sqr5bpd3q88ff293") | ||||
|         (mozilla-patch "icecat-bug-1312609.patch"       "0fc43af8982e" "0pc8q9knzq2knj723mwkay1lnzbzysb07ygxnc16mcb6f7vl2mw8") | ||||
|         (mozilla-patch "icecat-bug-1319524.patch"       "19f9a4643d77" "0w5yxj1l0hvs66q9agjp4m5sfby7fj05lx33gaqf899bw4hn4vcf") | ||||
|         (mozilla-patch "icecat-bug-1312548.patch"       "c58442c414f5" "1z1w1v8xagkhrwgp51ij1k2gx0ripslia09vm78812n7gcwddaas") | ||||
|         (mozilla-patch "icecat-bug-1314442.patch"       "5054047b7328" "0xlw8irymfp3bcaa5jpf7clf7bq6qxp3i8zapp8jya8lzr1nf868") | ||||
|         (mozilla-patch "icecat-bug-881832-pt1.patch"    "1123263318a3" "1qkxwva3zrcs1zhga8ncmndq03988dx75i896g53gbvpskj06915") | ||||
|         (mozilla-patch "icecat-bug-881832-pt2.patch"    "dc87c0a39adf" "01rapf14f3r2wk0cjd16dn1rll4ipgs33cnjmjck48nvk67ikz6h") | ||||
|         (mozilla-patch "icecat-bug-881832-pt3.patch"    "f20e5f488368" "15ql9ywifb3gm2g1057k63f821dbs3wqsh3zhndprzf3dn6aha4i") | ||||
|         (mozilla-patch "icecat-bug-881832-pt4.patch"    "7950c4d5bd7c" "0jhkg5hq5yfy7rh21k1mpbsbr81ql85aazym30zy3n2cf28xxhd7") | ||||
|         (mozilla-patch "icecat-bug-881832-pt5.patch"    "972734ec21b6" "073i4v1f1ydy49i57pvzscz95sjr5bbk9s5sajxvmmcsmwhpjdfy") | ||||
|         (mozilla-patch "icecat-bug-1293985-pt1.patch"   "aebd3687e05e" "1qz6hdgflcrqyg7fv66cbg23v4b7q5bc2yxzrgjxs4j1d7jy1s0s") | ||||
|         (mozilla-patch "icecat-bug-1293985-pt2.patch"   "63d8e5cd27cb" "11fsgyngy7v59ma30xdbmycwf4izwikzvaljngm3ks4534inpl4a") | ||||
|         (mozilla-patch "icecat-bug-1279202.patch"       "e560997291af" "1hn35slasfcj3ryka4fsarx4l9r99z0iwj67fmbv6zxz4z133kks") | ||||
|         (mozilla-patch "icecat-bug-1320039.patch"       "21c615b65048" "0ibgsxa36x9ajn2jqbhxxvrfvj6x6iyspsmzzn4brdz11n93skhr") | ||||
|         (mozilla-patch "icecat-bug-1320057.patch"       "c15e5afc0430" "17gj32agqs94548z8lvz0l6zz3kbwajn8as0y4iw5nb6jsll4c66") | ||||
|         (mozilla-patch "icecat-bug-1163212.patch"       "46163fb1cb34" "1yikayczfgfla3aka0159apq3149d52sgvlca0sivx4myd0lvjm7"))) | ||||
|       (modules '((guix build utils))) | ||||
|       (snippet | ||||
|        '(begin | ||||
|  | @ -411,7 +381,7 @@ standards.") | |||
|                       "db/sqlite3")) | ||||
|           ;; Delete .pyc files, typically present in icecat source tarballs | ||||
|           (for-each delete-file (find-files "." "\\.pyc$")) | ||||
|           ;; Delete obj-* directories, found in icecat-45.3.0-gnu1-beta | ||||
|           ;; Delete obj-* directories, sometimes present in icecat tarballs | ||||
|           (for-each delete-file-recursively | ||||
|                     (scandir "." (lambda (name) | ||||
|                                    (string-prefix? "obj-" name)))) | ||||
|  | @ -491,9 +461,8 @@ standards.") | |||
|                            "--disable-debug" | ||||
|                            "--disable-debug-symbols" | ||||
| 
 | ||||
|                            ;; Temporary hack to work around missing | ||||
|                            ;; "unofficial" branding in | ||||
|                            ;; icecat-45.3.0-gnu1-beta. | ||||
|                            ;; Hack to work around missing | ||||
|                            ;; "unofficial" branding in icecat. | ||||
|                            "--enable-official-branding" | ||||
| 
 | ||||
|                            ;; Avoid bundled libraries. | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| ;;; Copyright © 2016 Petter <petter@mykolab.ch> | ||||
| ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | ||||
| ;;; | ||||
| ;;; This file is an addendum GNU Guix. | ||||
| ;;; 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 | ||||
|  | @ -200,7 +200,7 @@ sequential processes (CSP) concurrent programming features added.") | |||
|   (package | ||||
|     (inherit go-1.4) | ||||
|     (name "go") | ||||
|     (version "1.7.3") | ||||
|     (version "1.7.4") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -208,7 +208,7 @@ sequential processes (CSP) concurrent programming features added.") | |||
|                            name version ".src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0i7gy5d8j6186a6x07cnj3r7mpfg3964q8byslx0p6x04w00lhvr")))) | ||||
|          "1k0lnsk5i9swi209wh535lpnpczsh6l8m1pfncmilrdsx48r262c")))) | ||||
|     (arguments | ||||
|      (substitute-keyword-arguments (package-arguments go-1.4) | ||||
|        ((#:phases phases) | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ | |||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages docbook) | ||||
|   #:use-module (gnu packages geeqie)              ;exiv2 | ||||
|   #:use-module (gnu packages image) | ||||
|   #:use-module (gnu packages xml) | ||||
|   #:use-module (gnu packages gtk) | ||||
|   #:use-module (gnu packages qt)) | ||||
|  |  | |||
|  | @ -98,7 +98,7 @@ arrays of data.") | |||
| (define-public gstreamer | ||||
|   (package | ||||
|     (name "gstreamer") | ||||
|     (version "1.10.1") | ||||
|     (version "1.10.2") | ||||
|     (source | ||||
|      (origin | ||||
|       (method url-fetch) | ||||
|  | @ -107,7 +107,7 @@ arrays of data.") | |||
|             version ".tar.xz")) | ||||
|       (sha256 | ||||
|        (base32 | ||||
|         "1npnpyrw8603ivi5g3ziglvh3hq2shypid2vjcmki6g6w2bgk3gn")))) | ||||
|         "0rcd4ya4k99x6ngm9v78as7ql0rqibkwshc13lb4rjdszs0qw3hm")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (outputs '("out" "doc")) | ||||
|     (arguments | ||||
|  | @ -146,7 +146,7 @@ This package provides the core library and elements.") | |||
| (define-public gst-plugins-base | ||||
|   (package | ||||
|     (name "gst-plugins-base") | ||||
|     (version "1.10.1") | ||||
|     (version "1.10.2") | ||||
|     (source | ||||
|      (origin | ||||
|       (method url-fetch) | ||||
|  | @ -154,7 +154,7 @@ This package provides the core library and elements.") | |||
|                           name "-" version ".tar.xz")) | ||||
|       (sha256 | ||||
|        (base32 | ||||
|         "1jbnr6vbklzli493xdd8y5sflm32r90lifpacxw9vbvs9hlyxkv6")))) | ||||
|         "086yjwmp4fykcqkj6zqhwrk2z49981kl8x545vz2wvblrc7x9h7v")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (outputs '("out" "doc")) | ||||
|     (propagated-inputs | ||||
|  | @ -201,20 +201,16 @@ for the GStreamer multimedia library.") | |||
| (define-public gst-plugins-good | ||||
|   (package | ||||
|     (name "gst-plugins-good") | ||||
|     (version "1.10.1") | ||||
|     (version "1.10.2") | ||||
|     (source | ||||
|      (origin | ||||
|       (method url-fetch) | ||||
|       (uri (string-append | ||||
|             "https://gstreamer.freedesktop.org/src/" name "/" | ||||
|             name "-" version ".tar.xz")) | ||||
|       (patches (search-patches "gst-plugins-good-flic-bounds-check.patch" | ||||
|                                "gst-plugins-good-fix-signedness.patch" | ||||
|                                "gst-plugins-good-fix-invalid-read.patch" | ||||
|                                "gst-plugins-good-fix-crashes.patch")) | ||||
|       (sha256 | ||||
|        (base32 | ||||
|         "1hkcap9l2603266gyi6jgvx7frbvfmb7xhfhjizbczy1wykjwr57")))) | ||||
|         "04rksbhjj2yz32g523cfabwqn2s3byd94dpbxghxr0p9ridk53qr")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (inputs | ||||
|      `(("aalib" ,aalib) | ||||
|  | @ -270,14 +266,14 @@ developers consider to have good quality code and correct functionality.") | |||
| (define-public gst-plugins-bad | ||||
|   (package | ||||
|     (name "gst-plugins-bad") | ||||
|     (version "1.10.1") | ||||
|     (version "1.10.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://gstreamer.freedesktop.org/src/" | ||||
|                                   name "/" name "-" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "07cjra4fclrk6lpdm5hrsgp79aqpklx3v3l9scain091zvchwghk")))) | ||||
|                 "0fisnnfpp3s8pbm6hjrfi4wjpq2da8c6w3ns9pjcg7590f9wm587")))) | ||||
|     (outputs '("out" "doc")) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|  | @ -347,7 +343,7 @@ par compared to the rest.") | |||
| (define-public gst-plugins-ugly | ||||
|   (package | ||||
|     (name "gst-plugins-ugly") | ||||
|     (version "1.10.1") | ||||
|     (version "1.10.2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -355,7 +351,7 @@ par compared to the rest.") | |||
|                            name "/" name "-" version ".tar.xz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1hl385fys7hfx5ffipavvhciq6hwm731rs4d6r9fn7h9qagxbv55")))) | ||||
|          "17gc2zd3v6spmm2d6912sqfcyyv5f2ghdhq31f5kx5mw5r6ds0zk")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (inputs | ||||
|      `(("gst-plugins-base" ,gst-plugins-base) | ||||
|  | @ -386,7 +382,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") | |||
| (define-public gst-libav | ||||
|   (package | ||||
|     (name "gst-libav") | ||||
|     (version "1.10.1") | ||||
|     (version "1.10.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -394,7 +390,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") | |||
|                     name "-" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1ivjbh5g0l5ykfpc16kq5x2jz8d4ignyha14jpiz3pz6w26qpci7")))) | ||||
|                 "0g778j7w4vpbhwjzyrzpajvr26nxm6vqby84v8g1w1hz44v71pd3")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      '(#:configure-flags '("--with-system-libav") | ||||
|  | @ -424,7 +420,7 @@ compression formats through the use of the libav library.") | |||
| (define-public python-gst | ||||
|   (package | ||||
|     (name "python-gst") | ||||
|     (version "1.10.1") | ||||
|     (version "1.10.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -432,7 +428,7 @@ compression formats through the use of the libav library.") | |||
|                     "gst-python-" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "04xhh0z0c0s6aq7kvmfs4r6yl1pjnqz0krp05pbjy62ayx5b61ak")))) | ||||
|                 "1sljnqkxf2ix6yzghrapw5irl0rbp8aa8w2hggk7i6d9js10ls71")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      ;; XXX: Factorize python-sitedir with python-build-system. | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ | |||
| ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> | ||||
| ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> | ||||
| ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> | ||||
| ;;; Coypright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> | ||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de> | ||||
| ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> | ||||
|  | @ -34,6 +35,7 @@ | |||
|   #:use-module (guix utils) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix git-download) | ||||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module (guix build-system python) | ||||
|   #:use-module (guix build-system waf) | ||||
|  | @ -299,6 +301,23 @@ graph-like environments, e.g. modular synths or finite state machine | |||
| diagrams.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public ganv-devel | ||||
|   (let ((commit "31685d283e9b811b61014f820c42807f4effa071") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (inherit ganv) | ||||
|       (name "ganv") | ||||
|       (version (string-append "1.4.2-" revision "." | ||||
|                               (string-take commit 9))) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "http://git.drobilla.net/ganv.git") | ||||
|                       (commit commit))) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "0xmbykdl42jn9cgzrqrys5lng67d26nk5xq10wkkvjqldiwdck56"))))))) | ||||
| 
 | ||||
| (define-public gtksourceview-2 | ||||
|   (package | ||||
|     (name "gtksourceview") | ||||
|  |  | |||
|  | @ -1,5 +1,11 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> | ||||
| ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> | ||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; | ||||
| ;;; 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 | ||||
|  | @ -20,11 +26,133 @@ | |||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module (gnu packages autotools) | ||||
|   #:use-module (gnu packages base) | ||||
|   #:use-module (gnu packages geeqie) | ||||
|   #:use-module (gnu packages curl) | ||||
|   #:use-module (gnu packages ghostscript) | ||||
|   #:use-module (gnu packages glib) | ||||
|   #:use-module (gnu packages gnome) | ||||
|   #:use-module (gnu packages gtk) | ||||
|   #:use-module (gnu packages pkg-config)) | ||||
|   #:use-module (gnu packages image) | ||||
|   #:use-module (gnu packages photo) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages xorg)) | ||||
| 
 | ||||
| (define-public feh | ||||
|   (package | ||||
|     (name "feh") | ||||
|     (version "2.14.1") | ||||
|     (home-page "https://feh.finalrewind.org/") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append home-page | ||||
|                                   name "-" version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1hlzgr0masgbm1vdn085vz81s9kpnah8kjkb1w1xfsxr1b99x8f0")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|       '(#:phases (alist-delete 'configure %standard-phases) | ||||
|         #:tests? #f | ||||
|         #:make-flags | ||||
|           (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out"))))) | ||||
|     (inputs `(("imlib2" ,imlib2) | ||||
|               ("curl" ,curl) | ||||
|               ("libpng" ,libpng) | ||||
|               ("libxt" ,libxt) | ||||
|               ("libx11" ,libx11) | ||||
|               ("libxinerama" ,libxinerama))) | ||||
|     (synopsis "Fast and light imlib2-based image viewer") | ||||
|     (description | ||||
|       "feh is an X11 image viewer aimed mostly at console users. | ||||
| Unlike most other viewers, it does not have a fancy GUI, but simply | ||||
| displays images.  It can also be used to set the desktop wallpaper. | ||||
| It is controlled via commandline arguments and configurable key/mouse | ||||
| actions.") | ||||
| 
 | ||||
|     ;; The license is really the Expat license, with additional wording in the | ||||
|     ;; 2nd paragraph: "acknowledgment shall be given in the documentation and | ||||
|     ;; software packages that this Software was used." | ||||
|     (license (license:x11-style | ||||
|               "file://COPYING" | ||||
|               "See 'COPYING' in the distribution.")))) | ||||
| 
 | ||||
| (define-public geeqie | ||||
|   (package | ||||
|     (name "geeqie") | ||||
|     (version "1.3") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append "https://github.com/BestImageViewer/geeqie/" | ||||
|                                  "releases/download/v" version "/geeqie-" | ||||
|                                  version ".tar.xz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "0gzc82sy66pbsmq7lnmq4y37zqad1zfwfls3ik3dmfm8s5nmcvsb")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'autogen | ||||
|            (lambda _ | ||||
|              (setenv "NOCONFIGURE" "true") | ||||
|              (zero? (system* "sh" "autogen.sh"))))))) | ||||
|     (inputs | ||||
|      `(;; ("libchamplain" ,libchamplain) | ||||
|        ("lcms" ,lcms) | ||||
|        ("exiv2" ,exiv2) | ||||
|        ("libpng" ,libpng) | ||||
|        ("gtk+" ,gtk+-2))) | ||||
|     (native-inputs | ||||
|      `(("autoconf" ,autoconf) | ||||
|        ("automake" ,automake) | ||||
|        ("glib" ,glib "bin") ; glib-gettextize | ||||
|        ("intltool" ,intltool) | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|     (home-page "http://www.geeqie.org/") | ||||
|     (synopsis "Lightweight GTK+ based image viewer") | ||||
|     (description | ||||
|      "Geeqie is a lightweight GTK+ based image viewer for Unix like operating | ||||
| systems.  It features: EXIF, IPTC and XMP metadata browsing and editing | ||||
| interoperability; easy integration with other software; geeqie works on files | ||||
| and directories, there is no need to import images; fast preview for many raw | ||||
| image formats; tools for image comparison, sorting and managing photo | ||||
| collection.  Geeqie was initially based on GQview.") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public sxiv | ||||
|   (package | ||||
|     (name "sxiv") | ||||
|     (version "1.3.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                     "https://github.com/muennich/sxiv/archive/v" | ||||
|                     version ".tar.gz")) | ||||
|               (file-name (string-append name "-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0lxnd33gaw4drhdwbkk94wzrjyhh64d57jq2ps7ffmqgizg6hlwz")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      '(#:tests? #f                      ; no check target | ||||
|        #:make-flags (list (string-append "PREFIX=" %output) | ||||
|                           "CC=gcc") | ||||
|        #:phases (alist-delete | ||||
|                  'configure             ; no configure phase | ||||
|                  %standard-phases))) | ||||
|     (inputs | ||||
|      `(("libx11" ,libx11) | ||||
|        ("imlib2" ,imlib2) | ||||
|        ("giflib" ,giflib) | ||||
|        ("libexif" ,libexif))) | ||||
|     (home-page "https://github.com/muennich/sxiv") | ||||
|     (synopsis "Simple X Image Viewer") | ||||
|     (description | ||||
|      "sxiv is an alternative to feh and qiv.  Its primary goal is to | ||||
| provide the most basic features required for fast image viewing.  It has | ||||
| vi key bindings and works nicely with tiling window managers.  Its code | ||||
| base should be kept small and clean to make it easy for you to dig into | ||||
| it and customize it for your needs.") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public viewnior | ||||
|   (package | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr> | ||||
| ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> | ||||
| ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> | ||||
|  | @ -42,6 +43,7 @@ | |||
|   #:use-module (gnu packages gettext) | ||||
|   #:use-module (gnu packages ghostscript) | ||||
|   #:use-module (gnu packages gl) | ||||
|   #:use-module (gnu packages glib) | ||||
|   #:use-module (gnu packages graphics) | ||||
|   #:use-module (gnu packages maths) | ||||
|   #:use-module (gnu packages mcrypt) | ||||
|  | @ -769,6 +771,39 @@ channels.") | |||
|      "Libmng is the MNG (Multiple-image Network Graphics) reference library.") | ||||
|     (license license:bsd-3))) | ||||
| 
 | ||||
| (define-public exiv2 | ||||
|   (package | ||||
|     (name "exiv2") | ||||
|     (version "0.25") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (list (string-append "http://www.exiv2.org/exiv2-" | ||||
|                                        version ".tar.gz") | ||||
|                         (string-append "https://fossies.org/linux/misc/exiv2-" | ||||
|                                        version ".tar.gz"))) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "197g6vgcpyf9p2cwn5p5hb1r714xsk1v4p96f5pv1z8mi9vzq2y8")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments '(#:tests? #f))                    ; no `check' target | ||||
|     (propagated-inputs | ||||
|      `(("expat" ,expat) | ||||
|        ("zlib" ,zlib))) | ||||
|     (native-inputs | ||||
|      `(("intltool" ,intltool))) | ||||
|     (home-page "http://www.exiv2.org/") | ||||
|     (synopsis "Library and command-line utility to manage image metadata") | ||||
|     (description | ||||
|      "Exiv2 is a C++ library and a command line utility to manage image | ||||
| metadata.  It provides fast and easy read and write access to the Exif, IPTC | ||||
| and XMP metadata of images in various formats.") | ||||
| 
 | ||||
|     ;; Files under `xmpsdk' are a copy of Adobe's XMP SDK, licensed under the | ||||
|     ;; 3-clause BSD license: <http://www.adobe.com/devnet/xmp/sdk/eula.html>. | ||||
|     ;; The core is GPLv2+: | ||||
|     ;;   <https://launchpad.net/ubuntu/precise/+source/exiv2/+copyright>. | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public devil | ||||
|   (package | ||||
|     (name "devil") | ||||
|  |  | |||
|  | @ -23,6 +23,8 @@ | |||
|   #:use-module ((guix licenses) #:prefix license:) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix utils) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages documentation) | ||||
|   #:use-module (gnu packages kde-frameworks) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages tls) | ||||
|  | @ -85,6 +87,60 @@ used in KDE development tools Kompare and KDevelop.") | |||
|     ;; source archive | ||||
|     (license (list license:gpl2+ license:lgpl2.0+ license:bsd-3)))) | ||||
| 
 | ||||
| (define-public libksysguard | ||||
|   (package | ||||
|     (name "libksysguard") | ||||
|     (version "5.8.2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "mirror://kde//stable/plasma/" version | ||||
|                            "/libksysguard-" version ".tar.xz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "158n30wbpsgbw3axhhsc58hnwhwdd02j3zc9hhcybmnbkfl5c96l")))) | ||||
|     (native-inputs | ||||
|      `(("extra-cmake-modules" ,extra-cmake-modules) | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("kconfigwidgets" ,kconfigwidgets) | ||||
|        ("kiconthemes" ,kiconthemes) | ||||
|        ("kdbusaddons" ,kdbusaddons) | ||||
|        ("kdoctools" ,kdoctools) | ||||
|        ("kinit" ,kinit) | ||||
|        ("knewstuff" ,knewstuff) | ||||
|        ("knotifications" ,knotifications) | ||||
|        ("kwindowsystem" ,kwindowsystem) | ||||
|        ("kio" ,kio) | ||||
|        ("ki18n" ,ki18n) | ||||
|        ("kservice" ,kservice) | ||||
|        ("qtbase" ,qtbase) | ||||
|        ("qtscript" ,qtscript) | ||||
|        ("qtwebkit" ,qtwebkit) | ||||
|        ("qtx11extras" ,qtx11extras) | ||||
|        ("plasma" ,plasma-framework) | ||||
|        ("zlib" ,zlib))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:configure-flags | ||||
|        `(,(string-append "-DKDE_INSTALL_DATADIR=" | ||||
|                          (assoc-ref %outputs "out") "/share")) | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-before 'configure 'patch-cmakelists | ||||
|            (lambda _ | ||||
|              (substitute* "processcore/CMakeLists.txt" | ||||
|                (("KAUTH_HELPER_INSTALL_DIR") "KDE_INSTALL_LIBEXECDIR")))) | ||||
|          (replace 'check | ||||
|            (lambda _         ;other tests require a display and therefore fail | ||||
|              (zero? (system* "ctest" "-R" "chronotest"))))))) | ||||
|     (home-page "https://www.kde.org/info/plasma-5.8.2.php") | ||||
|     (synopsis "Network enabled task and system monitoring") | ||||
|     (description "KSysGuard can obtain information on system load and | ||||
| manage running processes.  It obtains this information by interacting | ||||
| with a ksysguardd daemon, which may also run on a remote system.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public qca | ||||
|   (package | ||||
|     (name "qca") | ||||
|  |  | |||
|  | @ -327,26 +327,26 @@ It has been modified to remove all non-free binary blobs.") | |||
| (define %intel-compatible-systems '("x86_64-linux" "i686-linux")) | ||||
| 
 | ||||
| (define-public linux-libre | ||||
|   (make-linux-libre "4.8.10" | ||||
|                     "04kwarmpz5adz64wwy0xpwzxsri7jrjkhbmjlwxsac69x9a26bkl" | ||||
|   (make-linux-libre "4.8.12" | ||||
|                     "1vhqpi5r219a9y1drc3pdzwjif8r974hbc0x9dk4w25c8bsr3cm1" | ||||
|                     %intel-compatible-systems | ||||
|                     #:configuration-file kernel-config)) | ||||
| 
 | ||||
| (define-public linux-libre-4.4 | ||||
|   (make-linux-libre "4.4.34" | ||||
|                     "04ng40l2av34bcfwjs5vliv15f0m8bl0sfw08imspiplxvajd6ca" | ||||
|   (make-linux-libre "4.4.36" | ||||
|                     "0cvax02jj9zyk818gi6fjgacxa5z89y03kxwclb8l7cr8mcbwcdf" | ||||
|                     %intel-compatible-systems | ||||
|                     #:configuration-file kernel-config)) | ||||
| 
 | ||||
| (define-public linux-libre-4.1 | ||||
|   (make-linux-libre "4.1.35" | ||||
|                     "05zvrld1digqwf9kqf5pxx0mxqmwpr5kamhnks6y4yfy7x7jynyk" | ||||
|   (make-linux-libre "4.1.36" | ||||
|                     "0wy7xpqjwn1aprbzrbqgjskcg8qj2mczkv3rcisxf8gcdifz61qh" | ||||
|                     %intel-compatible-systems | ||||
|                     #:configuration-file kernel-config)) | ||||
| 
 | ||||
| ;; Avoid rebuilding kernel variants when there is a minor version bump. | ||||
| (define %linux-libre-version "4.8.10") | ||||
| (define %linux-libre-hash "04kwarmpz5adz64wwy0xpwzxsri7jrjkhbmjlwxsac69x9a26bkl") | ||||
| (define %linux-libre-version "4.8.12") | ||||
| (define %linux-libre-hash "1vhqpi5r219a9y1drc3pdzwjif8r974hbc0x9dk4w25c8bsr3cm1") | ||||
| 
 | ||||
| (define-public linux-libre-arm-generic | ||||
|   (make-linux-libre %linux-libre-version | ||||
|  | @ -2664,7 +2664,7 @@ and copy/paste text in the console and in xterm.") | |||
| (define-public btrfs-progs | ||||
|   (package | ||||
|     (name "btrfs-progs") | ||||
|     (version "4.8.4") | ||||
|     (version "4.8.5") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://kernel.org/linux/kernel/" | ||||
|  | @ -2672,7 +2672,7 @@ and copy/paste text in the console and in xterm.") | |||
|                                   "btrfs-progs-v" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1ib1ybpjhcymcycjiraz1vk01qlyvpwcg7mwfhmacdy3cvbfl9mz")))) | ||||
|                 "1vq83a8sz8dnshbyaghacqvcwv2n1kh53yjv87rxx9dc4b0b2iyj")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (outputs '("out" | ||||
|                "static"))      ; static versions of binaries in "out" (~16MiB!) | ||||
|  |  | |||
|  | @ -329,7 +329,7 @@ and corrections.  It is based on a Bayesian filter.") | |||
| (define-public offlineimap | ||||
|   (package | ||||
|     (name "offlineimap") | ||||
|     (version "7.0.10") | ||||
|     (version "7.0.12") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://github.com/OfflineIMAP/offlineimap/" | ||||
|  | @ -337,7 +337,7 @@ and corrections.  It is based on a Bayesian filter.") | |||
|               (file-name (string-append name "-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0h8mgmwkvwh8x3yam32ipqkzcz4g1dmkbni3v1755lkm0z132m3j")))) | ||||
|                 "1m1lp7wxnra8k7lsqc8xlm5giy3i89wvmp35jjb1gf4yslpddnkz")))) | ||||
|     (build-system python-build-system) | ||||
|     (native-inputs | ||||
|      `(("asciidoc" ,asciidoc) | ||||
|  | @ -1031,7 +1031,7 @@ write simple, representation-independent mail handling code.") | |||
| (define-public perl-email-address | ||||
|   (package | ||||
|     (name "perl-email-address") | ||||
|     (version "1.907") | ||||
|     (version "1.908") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1039,7 +1039,7 @@ write simple, representation-independent mail handling code.") | |||
|                            "Email-Address-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1ai4r149pzjv9dc2vddir8zylj0z1pii93rm4g591lx7avim71hx")))) | ||||
|          "0i6ljdvpy279hpbqf6lgv4figr376rb2sh4yphj86xkdzsyn1y75")))) | ||||
|     (build-system perl-build-system) | ||||
|     (home-page "http://search.cpan.org/dist/Email-Address") | ||||
|     (synopsis "Email address parsing and creation") | ||||
|  | @ -1070,7 +1070,7 @@ objects found.  Alternatively you may construct objects manually.") | |||
| (define-public perl-email-messageid | ||||
|   (package | ||||
|     (name "perl-email-messageid") | ||||
|     (version "1.405") | ||||
|     (version "1.406") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1078,7 +1078,7 @@ objects found.  Alternatively you may construct objects manually.") | |||
|                            "Email-MessageID-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "09216naz21x99ff33wdm3j3zq1zhdbxhrsmx8bvavjrw3gjsvrq3")))) | ||||
|          "1f22sdnfq169qw1l0lg7y74pmiam7j9v95bggjnf3q4mygdmshpc")))) | ||||
|     (build-system perl-build-system) | ||||
|     (home-page "http://search.cpan.org/dist/Email-MessageID") | ||||
|     (synopsis "Generate world unique message-ids") | ||||
|  | @ -1089,7 +1089,7 @@ identify a message uniquely.") | |||
| (define-public perl-email-mime | ||||
|   (package | ||||
|     (name "perl-email-mime") | ||||
|     (version "1.929") | ||||
|     (version "1.937") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1097,7 +1097,7 @@ identify a message uniquely.") | |||
|                            "Email-MIME-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1sf7dldg4dvicyw6dl1vx6s1gjq3fcppi0103ikl0vi6v5xjdjdh")))) | ||||
|          "0s50i3nxi9dr81p4rn017nrarc40yrwz0qcw34q8k3pvdf46fr9n")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-email-address" ,perl-email-address) | ||||
|  | @ -1117,7 +1117,7 @@ message.  Headers are decoded from MIME encoding.") | |||
| (define-public perl-email-mime-contenttype | ||||
|   (package | ||||
|     (name "perl-email-mime-contenttype") | ||||
|     (version "1.017") | ||||
|     (version "1.018") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1125,7 +1125,7 @@ message.  Headers are decoded from MIME encoding.") | |||
|                            "Email-MIME-ContentType-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1cl1l97lg690dh7i704hqi7yhxalq1chy7ylld5yc5v38jqa6gcn")))) | ||||
|          "1y8hpwm7p5a9y2azy0cgvlv2i2d0nj66ajfa0fj51wdq4w9cs23m")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-capture-tiny" ,perl-capture-tiny))) | ||||
|  | @ -1158,7 +1158,7 @@ header.") | |||
| (define-public perl-email-sender | ||||
|   (package | ||||
|     (name "perl-email-sender") | ||||
|     (version "1.300016") | ||||
|     (version "1.300028") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1166,7 +1166,7 @@ header.") | |||
|                            "Email-Sender-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "18x26fjh399q3s2g8dajb9r10633c46jrnbvycpnpclgnzhjs100")))) | ||||
|          "0c5dv1x9856nryj5mcbgb67a4irmadz80g0qnf4van3bd8wbj72a")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-capture-tiny" ,perl-capture-tiny))) | ||||
|  | @ -1190,7 +1190,7 @@ Email::Send library.") | |||
| (define-public perl-email-simple | ||||
|   (package | ||||
|     (name "perl-email-simple") | ||||
|     (version "2.206") | ||||
|     (version "2.211") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1198,7 +1198,7 @@ Email::Send library.") | |||
|                            "Email-Simple-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "19dpy3j5na2k9qw1jcpc8ia25038068r9j1bn34f9yyrisz7s522")))) | ||||
|          "1if4a2wh4iwlcycqrd2fhkx04ngmd75q444gh43w0r9p15ym5f8w")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-email-date-format" ,perl-email-date-format))) | ||||
|  |  | |||
|  | @ -714,7 +714,7 @@ HDF5 file is encoded according to the HDF File Format Specification.") | |||
| (define-public netcdf | ||||
|   (package | ||||
|     (name "netcdf") | ||||
|     (version "4.4.0") | ||||
|     (version "4.4.1.1") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -722,8 +722,9 @@ HDF5 file is encoded according to the HDF File Format Specification.") | |||
|                            "netcdf-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0y6gdcplarwqqnrav2xg1xd6ih732rzzbmdw78v3rl5b8mwcnh0d")) | ||||
|        (patches (list (search-patch "netcdf-config-date.patch"))))) | ||||
|          "1blc7ik5yin7i0ls2kag0a9xjk12m0dzx6v1x88az3ras3scci2d")) | ||||
|        (patches (search-patches "netcdf-date-time.patch" | ||||
|                                 "netcdf-tst_h_par.patch")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("m4" ,m4) | ||||
|  |  | |||
							
								
								
									
										122
									
								
								gnu/packages/monitoring.scm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								gnu/packages/monitoring.scm
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,122 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
| ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||||
| ;;; under the terms of the GNU General Public License as published by | ||||
| ;;; the Free Software Foundation; either version 3 of the License, or (at | ||||
| ;;; your option) any later version. | ||||
| ;;; | ||||
| ;;; GNU Guix is distributed in the hope that it will be useful, but | ||||
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| ;;; GNU General Public License for more details. | ||||
| ;;; | ||||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu packages monitoring) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module ((guix licenses) #:prefix license:) | ||||
|   #:use-module (guix build-system perl) | ||||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module (gnu packages base) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages perl) | ||||
|   #:use-module (gnu packages mail) | ||||
|   #:use-module (gnu packages gd) | ||||
|   #:use-module (gnu packages image)) | ||||
| 
 | ||||
| (define-public nagios | ||||
|   (package | ||||
|     (name "nagios") | ||||
|     (version "4.0.8") | ||||
|     ;; XXX: Newer versions such as 4.2.3 bundle a copy of AngularJS. | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                     "mirror://sourceforge/nagios/nagios-4.x/nagios-" | ||||
|                     version "/nagios-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0jyad39wa318613awlnpczrrakvjcipz8qp1mdsig1cp1hjqs9lb")) | ||||
|               (modules '((guix build utils))) | ||||
|               (snippet | ||||
|                ;; Ensure reproducibility. | ||||
|                '(substitute* (find-files "cgi" "\\.c$") | ||||
|                   (("__DATE__") "\"1970-01-01\"") | ||||
|                   (("__TIME__") "\"00:00:00\""))))) | ||||
|     (build-system gnu-build-system) | ||||
|     (inputs | ||||
|      `(("zlib" ,zlib) | ||||
|        ("libpng-apng" ,libpng) | ||||
|        ("gd" ,gd) | ||||
|        ("perl" ,perl) | ||||
|        ("mailutils" ,mailutils))) | ||||
|     (arguments | ||||
|      '(#:configure-flags (list "--sysconfdir=/etc" | ||||
| 
 | ||||
|                                ;; 'include/locations.h.in' defines file | ||||
|                                ;; locations, and many things go directly under | ||||
|                                ;; LOCALSTATEDIR, hence the extra '/nagios'. | ||||
|                                "--localstatedir=/var/nagios" | ||||
| 
 | ||||
|                                (string-append | ||||
|                                 "--with-mail=" | ||||
|                                 (assoc-ref %build-inputs "mailutils") | ||||
|                                 "/bin/mail")) | ||||
|        #:make-flags '("all") | ||||
|        #:phases (modify-phases %standard-phases | ||||
|                   (add-before 'build 'do-not-chown-to-nagios | ||||
|                     (lambda _ | ||||
|                       ;; Makefiles do 'install -o nagios -g nagios', which | ||||
|                       ;; doesn't work for us. | ||||
|                       (substitute* (find-files "." "^Makefile$") | ||||
|                         (("-o nagios -g nagios") | ||||
|                          "")) | ||||
|                       #t)) | ||||
|                   (add-before 'build 'do-not-create-sysconfdir | ||||
|                     (lambda _ | ||||
|                       ;; Don't try to create /var upon 'make install'. | ||||
|                       (substitute* "Makefile" | ||||
|                         (("\\$\\(INSTALL\\).*\\$\\(LOGDIR\\).*$" all) | ||||
|                          (string-append "# " all)) | ||||
|                         (("\\$\\(INSTALL\\).*\\$\\(CHECKRESULTDIR\\).*$" all) | ||||
|                          (string-append "# " all)) | ||||
|                         (("chmod g\\+s.*" all) | ||||
|                          (string-append "# " all))) | ||||
|                       #t)) | ||||
|                   (add-before 'build 'set-html/php-directory | ||||
|                     (lambda _ | ||||
|                       ;; Install HTML and PHP files under 'share/nagios/html' | ||||
|                       ;; instead of just 'share/'. | ||||
|                       (substitute* '("html/Makefile" "Makefile") | ||||
|                         (("HTMLDIR=.*$") | ||||
|                          "HTMLDIR = $(datarootdir)/nagios/html\n")) | ||||
|                       #t))) | ||||
|        #:tests? #f))                             ;no 'check' target or similar | ||||
|     (home-page "https://www.nagios.org/") | ||||
|     (synopsis "Host, service, and network monitoring program") | ||||
|     (description | ||||
|      "Nagios is a host, service, and network monitoring program written in C. | ||||
| CGI programs are included to allow you to view the current status, history, | ||||
| etc. via a Web interface.  Features include: | ||||
| 
 | ||||
| @itemize | ||||
| @item Monitoring of network services (via SMTP, POP3, HTTP, PING, etc). | ||||
| @item Monitoring of host resources (processor load, disk usage, etc.). | ||||
| @item A plugin interface to allow for user-developed service monitoring | ||||
|   methods. | ||||
| @item Ability to define network host hierarchy using \"parent\" hosts, | ||||
|   allowing detection of and distinction between hosts that are down | ||||
|   and those that are unreachable. | ||||
| @item Notifications when problems occur and get resolved (via email, | ||||
|   pager, or user-defined method). | ||||
| @item Ability to define event handlers for proactive problem resolution. | ||||
| @item Automatic log file rotation/archiving. | ||||
| @item Optional web interface for viewing current network status, | ||||
|   notification and problem history, log file, etc. | ||||
| @end itemize\n") | ||||
|     (license license:gpl2))) | ||||
|  | @ -145,14 +145,14 @@ a highly stable and efficient implementation.") | |||
| (define-public taglib | ||||
|   (package | ||||
|     (name "taglib") | ||||
|     (version "1.9.1") | ||||
|     (version "1.10") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "http://taglib.github.io/releases/taglib-" | ||||
|                                   version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "06n7gnbcqa3r6c9gv00y0y1r48dyyazm6yj403i7ma0r2k6p3lvj")))) | ||||
|                 "1alv6vp72p0x9i9yscmz2a71anjwqy53y9pbcbqxvc1c0i82vhr4")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments '(#:tests? #f))                    ;no 'test' target | ||||
|     (inputs `(("zlib" ,zlib))) | ||||
|  |  | |||
|  | @ -1697,6 +1697,38 @@ JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and | |||
| follows a traditional multi-track tape recorder control paradigm.") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public ams-lv2 | ||||
|   (package | ||||
|     (name "ams-lv2") | ||||
|     (version "1.2.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://github.com/blablack/ams-lv2/" | ||||
|                            "archive/" version ".tar.gz")) | ||||
|        (file-name (string-append name "-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1392spswkhfd38fggf584wb3m8aqpg7csfrs9zxnzyvhgmp0fgqk")))) | ||||
|     (build-system waf-build-system) | ||||
|     (arguments `(#:tests? #f)) ; no tests | ||||
|     (inputs | ||||
|      `(("lv2" ,lv2) | ||||
|        ("lvtk" ,lvtk) | ||||
|        ("gtkmm" ,gtkmm-2) | ||||
|        ("gtk" ,gtk+-2) | ||||
|        ("cairo" ,cairo) | ||||
|        ("fftw" ,fftw))) | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config))) | ||||
|     (home-page "https://objectivewave.wordpress.com/ams-lv2/") | ||||
|     (synopsis "Port of Alsa Modular Synth internal modules into LV2") | ||||
|     (description "This set of LV2 plugins is a port of the internal modules | ||||
| found in Alsa Modular Synth.  These plugins are used to create modular | ||||
| synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample | ||||
| and hold, etc.") | ||||
|     (license license:gpl2))) | ||||
| 
 | ||||
| (define-public gxtuner | ||||
|   (package | ||||
|     (name "gxtuner") | ||||
|  | @ -2449,6 +2481,91 @@ filters, crossovers, simple gain plugins without zipper noise, switch box | |||
| plugins, a switch trigger, a toggle switch, and a peakmeter.") | ||||
|       (license license:gpl2+)))) | ||||
| 
 | ||||
| (define-public ingen | ||||
|   (let ((commit "fd147d0b888090bfb897505852c1f25dbdf77e18") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "ingen") | ||||
|       (version (string-append "0.0.0-" revision "." | ||||
|                               (string-take commit 9))) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "http://git.drobilla.net/ingen.git") | ||||
|                (commit commit))) | ||||
|          (file-name (string-append name "-" version "-checkout")) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "1qmg79962my82c43vyrv5sxbqci9c7gc2s9bwaaqd0fcf08xcz1z")))) | ||||
|       (build-system waf-build-system) | ||||
|       (arguments | ||||
|        `(#:tests? #f ; no "check" target | ||||
|          #:configure-flags (list "--no-webkit") | ||||
|          #:phases | ||||
|          (modify-phases %standard-phases | ||||
|            (add-after 'unpack 'patch-wscript | ||||
|              (lambda* (#:key outputs #:allow-other-keys) | ||||
|                (let ((out (assoc-ref outputs "out"))) | ||||
|                  (substitute* "wscript" | ||||
|                    ;; FIXME: Our version of lv2specgen.py does not behave as | ||||
|                    ;; expected.  Maybe this requires a development version of | ||||
|                    ;; LV2. | ||||
|                    (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo") | ||||
|                    ;; Add libraries to RUNPATH. | ||||
|                    (("^(.+)target.*= 'src/ingen/ingen'," line prefix) | ||||
|                     (string-append prefix | ||||
|                                    "linkflags=[\"-Wl,-rpath=" | ||||
|                                    out "/lib" "\"]," line))) | ||||
|                  (substitute* '("src/wscript" | ||||
|                                 "src/server/wscript") | ||||
|                    ;; Add libraries to RUNPATH. | ||||
|                    (("bld.env.PTHREAD_LINKFLAGS" line) | ||||
|                     (string-append line | ||||
|                                    " + [\"-Wl,-rpath=" out "/lib" "\"]"))) | ||||
|                  (substitute* "src/client/wscript" | ||||
|                    ;; Add libraries to RUNPATH. | ||||
|                    (("^(.+)target.*= 'ingen_client'," line prefix) | ||||
|                     (string-append prefix | ||||
|                                    "linkflags=[\"-Wl,-rpath=" | ||||
|                                    out "/lib" "\"]," line))) | ||||
|                  (substitute* "src/gui/wscript" | ||||
|                    ;; Add libraries to RUNPATH. | ||||
|                    (("^(.+)target.* = 'ingen_gui.*" line prefix) | ||||
|                     (string-append prefix | ||||
|                                    "linkflags=[\"-Wl,-rpath=" | ||||
|                                    out "/lib" "\"]," line)))) | ||||
|                #t))))) | ||||
|       (inputs | ||||
|        `(("boost" ,boost) | ||||
|          ("python-rdflib" ,python-rdflib) | ||||
|          ("python" ,python) | ||||
|          ("jack" ,jack-1) | ||||
|          ("lv2" ,lv2) | ||||
|          ("lilv" ,lilv) | ||||
|          ("raul" ,raul-devel) | ||||
|          ("ganv" ,ganv-devel) | ||||
|          ("suil" ,suil) | ||||
|          ("serd" ,serd) | ||||
|          ("sord" ,sord) | ||||
|          ("sratom" ,sratom) | ||||
|          ("gtkmm" ,gtkmm-2))) | ||||
|       (native-inputs | ||||
|        `(("pkg-config" ,pkg-config) | ||||
|          ("python-pygments" ,python-pygments))) | ||||
|       (home-page "http://drobilla.net/software/ingen") | ||||
|       (synopsis "Modular audio processing system") | ||||
|       (description "Ingen is a modular audio processing system for JACK and | ||||
| LV2 based systems.  Ingen is built around LV2 technology and a strict | ||||
| separation of engine from user interface.  The engine is controlled | ||||
| exclusively through a protocol, and can execute as a headless process, with an | ||||
| in-process GUI, or as an LV2 plugin.  The GUI can run as a program which | ||||
| communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which | ||||
| communicates via LV2 ports.  Any saved Ingen graph can be loaded as an LV2 | ||||
| plugin on any system where Ingen is installed.  This allows users to visually | ||||
| develop custom plugins for use in other applications without programming.") | ||||
|       (license license:agpl3+)))) | ||||
| 
 | ||||
| (define-public python-discogs-client | ||||
|   (package | ||||
|     (name "python-discogs-client") | ||||
|  |  | |||
|  | @ -226,9 +226,9 @@ the Nix package manager.") | |||
|   ;; | ||||
|   ;; Note: use a very short commit id; with a longer one, the limit on | ||||
|   ;; hash-bang lines would be exceeded while running the tests. | ||||
|   (let ((commit "1f410017ff91458feda8c5788223d17696b71e36")) | ||||
|   (let ((commit "463fb7d0c86fb9957c527272e6cec5ee23585366")) | ||||
|     (package (inherit guix-0.11.0) | ||||
|       (version (string-append "0.11.0-4." (string-take commit 4))) | ||||
|       (version (string-append "0.11.0-5." (string-take commit 4))) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|  | @ -238,7 +238,7 @@ the Nix package manager.") | |||
|                       (commit commit))) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1mgzcbf1mry39wvvjflj76zggsshsip2pngxpaf2479yr3ri6v50")) | ||||
|                   "0k74j6m5hy055knirnry75qrgph4zywypxjyaqv6saixb6yx7av3")) | ||||
|                 (file-name (string-append "guix-" version "-checkout")))) | ||||
|       (arguments | ||||
|        (substitute-keyword-arguments (package-arguments guix-0.11.0) | ||||
|  |  | |||
							
								
								
									
										14
									
								
								gnu/packages/patches/fcgi-2.4.0-gcc44-fixes.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								gnu/packages/patches/fcgi-2.4.0-gcc44-fixes.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| Taken from http://pkgs.fedoraproject.org/cgit/rpms/fcgi.git/plain/fcgi-2.4.0-gcc44_fixes.patch. | ||||
| Fixes compilation with GCC 4.4 and later. | ||||
| 
 | ||||
| diff -up fcgi-2.4.0/libfcgi/fcgio.cpp.gcc44_fixes fcgi-2.4.0/libfcgi/fcgio.cpp
 | ||||
| --- fcgi-2.4.0/libfcgi/fcgio.cpp.gcc44_fixes	2002-02-24 21:12:22.000000000 +0100
 | ||||
| +++ fcgi-2.4.0/libfcgi/fcgio.cpp	2009-02-15 11:35:18.000000000 +0100
 | ||||
| @@ -23,6 +23,7 @@
 | ||||
|  #endif | ||||
|   | ||||
|  #include <limits.h> | ||||
| +#include <cstdio>
 | ||||
|  #include "fcgio.h" | ||||
|   | ||||
|  using std::streambuf; | ||||
							
								
								
									
										89
									
								
								gnu/packages/patches/fcgi-2.4.0-poll.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								gnu/packages/patches/fcgi-2.4.0-poll.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,89 @@ | |||
| Taken from http://pkgs.fedoraproject.org/cgit/rpms/fcgi.git/plain/fcgi-2.4.0-poll.patch | ||||
| Fixes CVE-2012-6687. | ||||
| 
 | ||||
| Author: Anton Kortunov <toshic.toshic@gmail.com> | ||||
| Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/libfcgi/+bug/933417 | ||||
| Description: use poll in os_unix.c instead of select to avoid problem with > 1024 connections | ||||
| Forwarded: yes, fastcgi-developers@mailman.fastcgi.com | ||||
| 
 | ||||
| diff --git a/libfcgi/os_unix.c b/libfcgi/os_unix.c
 | ||||
| index 73e6a7f..af35aee 100755
 | ||||
| --- a/libfcgi/os_unix.c
 | ||||
| +++ b/libfcgi/os_unix.c
 | ||||
| @@ -42,6 +42,7 @@ static const char rcsid[] = "$Id: os_unix.c,v 1.37 2002/03/05 19:14:49 robs Exp
 | ||||
|  #include <sys/time.h> | ||||
|  #include <sys/un.h> | ||||
|  #include <signal.h> | ||||
| +#include <poll.h>
 | ||||
|   | ||||
|  #ifdef HAVE_NETDB_H | ||||
|  #include <netdb.h> | ||||
| @@ -103,6 +104,9 @@ static int volatile maxFd = -1;
 | ||||
|  static int shutdownPending = FALSE; | ||||
|  static int shutdownNow = FALSE; | ||||
|   | ||||
| +static int libfcgiOsClosePollTimeout = 2000;
 | ||||
| +static int libfcgiIsAfUnixKeeperPollTimeout = 2000;
 | ||||
| +
 | ||||
|  void OS_ShutdownPending() | ||||
|  { | ||||
|      shutdownPending = TRUE; | ||||
| @@ -168,6 +172,16 @@ int OS_LibInit(int stdioFds[3])
 | ||||
|      if(libInitialized) | ||||
|          return 0; | ||||
|   | ||||
| +    char *libfcgiOsClosePollTimeoutStr = getenv( "LIBFCGI_OS_CLOSE_POLL_TIMEOUT" );
 | ||||
| +    if(libfcgiOsClosePollTimeoutStr) {
 | ||||
| +        libfcgiOsClosePollTimeout = atoi(libfcgiOsClosePollTimeoutStr);
 | ||||
| +    }
 | ||||
| +
 | ||||
| +    char *libfcgiIsAfUnixKeeperPollTimeoutStr = getenv( "LIBFCGI_IS_AF_UNIX_KEEPER_POLL_TIMEOUT" );
 | ||||
| +    if(libfcgiIsAfUnixKeeperPollTimeoutStr) {
 | ||||
| +        libfcgiIsAfUnixKeeperPollTimeout = atoi(libfcgiIsAfUnixKeeperPollTimeoutStr);
 | ||||
| +    }
 | ||||
| +
 | ||||
|      asyncIoTable = (AioInfo *)malloc(asyncIoTableSize * sizeof(AioInfo)); | ||||
|      if(asyncIoTable == NULL) { | ||||
|          errno = ENOMEM; | ||||
| @@ -755,19 +769,16 @@ int OS_Close(int fd)
 | ||||
|   | ||||
|      if (shutdown(fd, 1) == 0) | ||||
|      { | ||||
| -        struct timeval tv;
 | ||||
| -        fd_set rfds;
 | ||||
| +        struct pollfd pfd;
 | ||||
|          int rv; | ||||
|          char trash[1024]; | ||||
|   | ||||
| -        FD_ZERO(&rfds);
 | ||||
| +        pfd.fd = fd;
 | ||||
| +        pfd.events = POLLIN;
 | ||||
|   | ||||
|          do  | ||||
|          { | ||||
| -            FD_SET(fd, &rfds);
 | ||||
| -            tv.tv_sec = 2;
 | ||||
| -            tv.tv_usec = 0;
 | ||||
| -            rv = select(fd + 1, &rfds, NULL, NULL, &tv);
 | ||||
| +            rv = poll(&pfd, 1, libfcgiOsClosePollTimeout);
 | ||||
|          } | ||||
|          while (rv > 0 && read(fd, trash, sizeof(trash)) > 0); | ||||
|      } | ||||
| @@ -1116,13 +1127,11 @@ static int is_reasonable_accept_errno (const int error)
 | ||||
|   */ | ||||
|  static int is_af_unix_keeper(const int fd) | ||||
|  { | ||||
| -    struct timeval tval = { READABLE_UNIX_FD_DROP_DEAD_TIMEVAL };
 | ||||
| -    fd_set read_fds;
 | ||||
| -
 | ||||
| -    FD_ZERO(&read_fds);
 | ||||
| -    FD_SET(fd, &read_fds);
 | ||||
| +    struct pollfd pfd;
 | ||||
| +    pfd.fd = fd;
 | ||||
| +    pfd.events = POLLIN;
 | ||||
|   | ||||
| -    return select(fd + 1, &read_fds, NULL, NULL, &tval) >= 0 && FD_ISSET(fd, &read_fds);
 | ||||
| +    return poll(&pfd, 1, libfcgiIsAfUnixKeeperPollTimeout) >= 0 && (pfd.revents & POLLIN);
 | ||||
|  } | ||||
|   | ||||
|  /* | ||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -1,37 +0,0 @@ | |||
| Fixes upstream bug #774897 (flxdec: Unreferences itself one time too many on | ||||
| invalid files): | ||||
| 
 | ||||
| https://bugzilla.gnome.org/show_bug.cgi?id=774897 | ||||
| 
 | ||||
| Patch copied from upstream source repository: | ||||
| 
 | ||||
| https://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=b31c504645a814c59d91d49e4fe218acaf93f4ca | ||||
| 
 | ||||
| From b31c504645a814c59d91d49e4fe218acaf93f4ca Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> | ||||
| Date: Wed, 23 Nov 2016 11:20:49 +0200 | ||||
| Subject: [PATCH] flxdec: Don't unref() parent in the chain function | ||||
| 
 | ||||
| We don't own the reference here, it is owned by the caller and given to | ||||
| us for the scope of this function. Leftover mistake from 0.10 porting. | ||||
| 
 | ||||
| https://bugzilla.gnome.org/show_bug.cgi?id=774897 | ||||
| ---
 | ||||
|  gst/flx/gstflxdec.c | 1 - | ||||
|  1 file changed, 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
 | ||||
| index e675c99..a237976 100644
 | ||||
| --- a/gst/flx/gstflxdec.c
 | ||||
| +++ b/gst/flx/gstflxdec.c
 | ||||
| @@ -677,7 +677,6 @@ wrong_type:
 | ||||
|    { | ||||
|      GST_ELEMENT_ERROR (flxdec, STREAM, WRONG_TYPE, (NULL), | ||||
|          ("not a flx file (type %x)", flxh->type)); | ||||
| -    gst_object_unref (flxdec);
 | ||||
|      return GST_FLOW_ERROR; | ||||
|    } | ||||
|  } | ||||
| -- 
 | ||||
| 2.10.2 | ||||
| 
 | ||||
|  | @ -1,58 +0,0 @@ | |||
| This is a followup fix for upstream bug #774834 (flic decoder: Buffer overflow | ||||
| in flx_decode_delta_fli): | ||||
| 
 | ||||
| https://bugzilla.gnome.org/show_bug.cgi?id=774834#c2 | ||||
| 
 | ||||
| Patch copied from upstream source repository: | ||||
| 
 | ||||
| https://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=1ab2b26193861b124426e2f8eb62b75b59ec5488 | ||||
| 
 | ||||
| From 1ab2b26193861b124426e2f8eb62b75b59ec5488 Mon Sep 17 00:00:00 2001 | ||||
| From: Matthew Waters <matthew@centricular.com> | ||||
| Date: Tue, 22 Nov 2016 23:46:00 +1100 | ||||
| Subject: [PATCH] flxdec: fix some warnings comparing unsigned < 0 | ||||
| MIME-Version: 1.0 | ||||
| Content-Type: text/plain; charset=UTF-8 | ||||
| Content-Transfer-Encoding: 8bit | ||||
| 
 | ||||
| bf43f44fcfada5ec4a3ce60cb374340486fe9fac was comparing an unsigned | ||||
| expression to be < 0 which was always false. | ||||
| 
 | ||||
| gstflxdec.c: In function ‘flx_decode_brun’: | ||||
| gstflxdec.c:322:33: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits] | ||||
|          if ((glong) row - count < 0) { | ||||
|                                  ^ | ||||
| gstflxdec.c:332:33: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits] | ||||
|          if ((glong) row - count < 0) { | ||||
|                                  ^ | ||||
| 
 | ||||
| https://bugzilla.gnome.org/show_bug.cgi?id=774834 | ||||
| ---
 | ||||
|  gst/flx/gstflxdec.c | 4 ++-- | ||||
|  1 file changed, 2 insertions(+), 2 deletions(-) | ||||
| 
 | ||||
| diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
 | ||||
| index d51a8e6..e675c99 100644
 | ||||
| --- a/gst/flx/gstflxdec.c
 | ||||
| +++ b/gst/flx/gstflxdec.c
 | ||||
| @@ -319,7 +319,7 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|        if (count > 0x7f) { | ||||
|          /* literal run */ | ||||
|          count = 0x100 - count; | ||||
| -        if ((glong) row - count < 0) {
 | ||||
| +        if ((glong) row - (glong) count < 0) {
 | ||||
|            GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected."); | ||||
|            return FALSE; | ||||
|          } | ||||
| @@ -329,7 +329,7 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|            *dest++ = *data++; | ||||
|   | ||||
|        } else { | ||||
| -        if ((glong) row - count < 0) {
 | ||||
| +        if ((glong) row - (glong) count < 0) {
 | ||||
|            GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected."); | ||||
|            return FALSE; | ||||
|          } | ||||
| -- 
 | ||||
| 2.10.2 | ||||
| 
 | ||||
|  | @ -1,319 +0,0 @@ | |||
| Fix CVE-2016-{9634,9635,9636}. | ||||
| 
 | ||||
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9634 | ||||
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9635 | ||||
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9636 | ||||
| 
 | ||||
| This fixes upstream bug #774834 (flic decoder: Buffer overflow in | ||||
| flx_decode_delta_fli): | ||||
| 
 | ||||
| https://bugzilla.gnome.org/show_bug.cgi?id=774834 | ||||
| 
 | ||||
| Patch copied from upstream source repository: | ||||
| 
 | ||||
| https://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=2e203a79b7d9af4029307c1a845b3c148d5f5e62 | ||||
| 
 | ||||
| From 2e203a79b7d9af4029307c1a845b3c148d5f5e62 Mon Sep 17 00:00:00 2001 | ||||
| From: Matthew Waters <matthew@centricular.com> | ||||
| Date: Tue, 22 Nov 2016 19:05:00 +1100 | ||||
| Subject: [PATCH] flxdec: add some write bounds checking | ||||
| 
 | ||||
| Without checking the bounds of the frame we are writing into, we can | ||||
| write off the end of the destination buffer. | ||||
| 
 | ||||
| https://scarybeastsecurity.blogspot.dk/2016/11/0day-exploit-advancing-exploitation.html | ||||
| 
 | ||||
| https://bugzilla.gnome.org/show_bug.cgi?id=774834 | ||||
| ---
 | ||||
|  gst/flx/gstflxdec.c | 116 +++++++++++++++++++++++++++++++++++++++++----------- | ||||
|  1 file changed, 91 insertions(+), 25 deletions(-) | ||||
| 
 | ||||
| diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
 | ||||
| index 604be2f..d51a8e6 100644
 | ||||
| --- a/gst/flx/gstflxdec.c
 | ||||
| +++ b/gst/flx/gstflxdec.c
 | ||||
| @@ -74,9 +74,9 @@ static gboolean gst_flxdec_src_query_handler (GstPad * pad, GstObject * parent,
 | ||||
|      GstQuery * query); | ||||
|   | ||||
|  static void flx_decode_color (GstFlxDec *, guchar *, guchar *, gint); | ||||
| -static void flx_decode_brun (GstFlxDec *, guchar *, guchar *);
 | ||||
| -static void flx_decode_delta_fli (GstFlxDec *, guchar *, guchar *);
 | ||||
| -static void flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
 | ||||
| +static gboolean flx_decode_brun (GstFlxDec *, guchar *, guchar *);
 | ||||
| +static gboolean flx_decode_delta_fli (GstFlxDec *, guchar *, guchar *);
 | ||||
| +static gboolean flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
 | ||||
|   | ||||
|  #define rndalign(off) ((off) + ((off) & 1)) | ||||
|   | ||||
| @@ -203,13 +203,14 @@ gst_flxdec_sink_event_handler (GstPad * pad, GstObject * parent,
 | ||||
|    return ret; | ||||
|  } | ||||
|   | ||||
| -static void
 | ||||
| +static gboolean
 | ||||
|  flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data, | ||||
|      guchar * dest) | ||||
|  { | ||||
|    FlxFrameChunk *hdr; | ||||
| +  gboolean ret = TRUE;
 | ||||
|   | ||||
| -  g_return_if_fail (data != NULL);
 | ||||
| +  g_return_val_if_fail (data != NULL, FALSE);
 | ||||
|   | ||||
|    while (count--) { | ||||
|      hdr = (FlxFrameChunk *) data; | ||||
| @@ -228,17 +229,17 @@ flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data,
 | ||||
|          break; | ||||
|   | ||||
|        case FLX_BRUN: | ||||
| -        flx_decode_brun (flxdec, data, dest);
 | ||||
| +        ret = flx_decode_brun (flxdec, data, dest);
 | ||||
|          data += rndalign (hdr->size) - FlxFrameChunkSize; | ||||
|          break; | ||||
|   | ||||
|        case FLX_LC: | ||||
| -        flx_decode_delta_fli (flxdec, data, dest);
 | ||||
| +        ret = flx_decode_delta_fli (flxdec, data, dest);
 | ||||
|          data += rndalign (hdr->size) - FlxFrameChunkSize; | ||||
|          break; | ||||
|   | ||||
|        case FLX_SS2: | ||||
| -        flx_decode_delta_flc (flxdec, data, dest);
 | ||||
| +        ret = flx_decode_delta_flc (flxdec, data, dest);
 | ||||
|          data += rndalign (hdr->size) - FlxFrameChunkSize; | ||||
|          break; | ||||
|   | ||||
| @@ -256,7 +257,12 @@ flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data,
 | ||||
|          data += rndalign (hdr->size) - FlxFrameChunkSize; | ||||
|          break; | ||||
|      } | ||||
| +
 | ||||
| +    if (!ret)
 | ||||
| +      break;
 | ||||
|    } | ||||
| +
 | ||||
| +  return ret;
 | ||||
|  } | ||||
|   | ||||
|   | ||||
| @@ -289,13 +295,13 @@ flx_decode_color (GstFlxDec * flxdec, guchar * data, guchar * dest, gint scale)
 | ||||
|    } | ||||
|  } | ||||
|   | ||||
| -static void
 | ||||
| +static gboolean
 | ||||
|  flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest) | ||||
|  { | ||||
|    gulong count, lines, row; | ||||
|    guchar x; | ||||
|   | ||||
| -  g_return_if_fail (flxdec != NULL);
 | ||||
| +  g_return_val_if_fail (flxdec != NULL, FALSE);
 | ||||
|   | ||||
|    lines = flxdec->hdr.height; | ||||
|    while (lines--) { | ||||
| @@ -313,12 +319,21 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|        if (count > 0x7f) { | ||||
|          /* literal run */ | ||||
|          count = 0x100 - count; | ||||
| +        if ((glong) row - count < 0) {
 | ||||
| +          GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
 | ||||
| +          return FALSE;
 | ||||
| +        }
 | ||||
|          row -= count; | ||||
|   | ||||
|          while (count--) | ||||
|            *dest++ = *data++; | ||||
|   | ||||
|        } else { | ||||
| +        if ((glong) row - count < 0) {
 | ||||
| +          GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
 | ||||
| +          return FALSE;
 | ||||
| +        }
 | ||||
| +
 | ||||
|          /* replicate run */ | ||||
|          row -= count; | ||||
|          x = *data++; | ||||
| @@ -328,22 +343,28 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|        } | ||||
|      } | ||||
|    } | ||||
| +
 | ||||
| +  return TRUE;
 | ||||
|  } | ||||
|   | ||||
| -static void
 | ||||
| +static gboolean
 | ||||
|  flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest) | ||||
|  { | ||||
|    gulong count, packets, lines, start_line; | ||||
|    guchar *start_p, x; | ||||
|   | ||||
| -  g_return_if_fail (flxdec != NULL);
 | ||||
| -  g_return_if_fail (flxdec->delta_data != NULL);
 | ||||
| +  g_return_val_if_fail (flxdec != NULL, FALSE);
 | ||||
| +  g_return_val_if_fail (flxdec->delta_data != NULL, FALSE);
 | ||||
|   | ||||
|    /* use last frame for delta */ | ||||
|    memcpy (dest, flxdec->delta_data, flxdec->size); | ||||
|   | ||||
|    start_line = (data[0] + (data[1] << 8)); | ||||
|    lines = (data[2] + (data[3] << 8)); | ||||
| +  if (start_line + lines > flxdec->hdr.height) {
 | ||||
| +    GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. too many lines.");
 | ||||
| +    return FALSE;
 | ||||
| +  }
 | ||||
|    data += 4; | ||||
|   | ||||
|    /* start position of delta */ | ||||
| @@ -356,7 +377,8 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|   | ||||
|      while (packets--) { | ||||
|        /* skip count */ | ||||
| -      dest += *data++;
 | ||||
| +      guchar skip = *data++;
 | ||||
| +      dest += skip;
 | ||||
|   | ||||
|        /* RLE count */ | ||||
|        count = *data++; | ||||
| @@ -364,12 +386,24 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|        if (count > 0x7f) { | ||||
|          /* literal run */ | ||||
|          count = 0x100 - count; | ||||
| -        x = *data++;
 | ||||
|   | ||||
| +        if (skip + count > flxdec->hdr.width) {
 | ||||
| +          GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. "
 | ||||
| +              "line too long.");
 | ||||
| +          return FALSE;
 | ||||
| +        }
 | ||||
| +
 | ||||
| +        x = *data++;
 | ||||
|          while (count--) | ||||
|            *dest++ = x; | ||||
|   | ||||
|        } else { | ||||
| +        if (skip + count > flxdec->hdr.width) {
 | ||||
| +          GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. "
 | ||||
| +              "line too long.");
 | ||||
| +          return FALSE;
 | ||||
| +        }
 | ||||
| +
 | ||||
|          /* replicate run */ | ||||
|          while (count--) | ||||
|            *dest++ = *data++; | ||||
| @@ -378,21 +412,27 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|      start_p += flxdec->hdr.width; | ||||
|      dest = start_p; | ||||
|    } | ||||
| +
 | ||||
| +  return TRUE;
 | ||||
|  } | ||||
|   | ||||
| -static void
 | ||||
| +static gboolean
 | ||||
|  flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest) | ||||
|  { | ||||
|    gulong count, lines, start_l, opcode; | ||||
|    guchar *start_p; | ||||
|   | ||||
| -  g_return_if_fail (flxdec != NULL);
 | ||||
| -  g_return_if_fail (flxdec->delta_data != NULL);
 | ||||
| +  g_return_val_if_fail (flxdec != NULL, FALSE);
 | ||||
| +  g_return_val_if_fail (flxdec->delta_data != NULL, FALSE);
 | ||||
|   | ||||
|    /* use last frame for delta */ | ||||
|    memcpy (dest, flxdec->delta_data, flxdec->size); | ||||
|   | ||||
|    lines = (data[0] + (data[1] << 8)); | ||||
| +  if (lines > flxdec->hdr.height) {
 | ||||
| +    GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. too many lines.");
 | ||||
| +    return FALSE;
 | ||||
| +  }
 | ||||
|    data += 2; | ||||
|   | ||||
|    start_p = dest; | ||||
| @@ -405,9 +445,15 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|      while ((opcode = (data[0] + (data[1] << 8))) & 0xc000) { | ||||
|        data += 2; | ||||
|        if ((opcode & 0xc000) == 0xc000) { | ||||
| -        /* skip count */
 | ||||
| -        start_l += (0x10000 - opcode);
 | ||||
| -        dest += flxdec->hdr.width * (0x10000 - opcode);
 | ||||
| +        /* line skip count */
 | ||||
| +        gulong skip = (0x10000 - opcode);
 | ||||
| +        if (skip > flxdec->hdr.height) {
 | ||||
| +          GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
 | ||||
| +              "skip line count too big.");
 | ||||
| +          return FALSE;
 | ||||
| +        }
 | ||||
| +        start_l += skip;
 | ||||
| +        dest += flxdec->hdr.width * skip;
 | ||||
|        } else { | ||||
|          /* last pixel */ | ||||
|          dest += flxdec->hdr.width; | ||||
| @@ -419,7 +465,8 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|      /* last opcode is the packet count */ | ||||
|      while (opcode--) { | ||||
|        /* skip count */ | ||||
| -      dest += *data++;
 | ||||
| +      guchar skip = *data++;
 | ||||
| +      dest += skip;
 | ||||
|   | ||||
|        /* RLE count */ | ||||
|        count = *data++; | ||||
| @@ -427,12 +474,25 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|        if (count > 0x7f) { | ||||
|          /* replicate word run */ | ||||
|          count = 0x100 - count; | ||||
| +
 | ||||
| +        if (skip + count > flxdec->hdr.width) {
 | ||||
| +          GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
 | ||||
| +              "line too long.");
 | ||||
| +          return FALSE;
 | ||||
| +        }
 | ||||
| +
 | ||||
|          while (count--) { | ||||
|            *dest++ = data[0]; | ||||
|            *dest++ = data[1]; | ||||
|          } | ||||
|          data += 2; | ||||
|        } else { | ||||
| +        if (skip + count > flxdec->hdr.width) {
 | ||||
| +          GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
 | ||||
| +              "line too long.");
 | ||||
| +          return FALSE;
 | ||||
| +        }
 | ||||
| +
 | ||||
|          /* literal word run */ | ||||
|          while (count--) { | ||||
|            *dest++ = *data++; | ||||
| @@ -442,6 +502,8 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
 | ||||
|      } | ||||
|      lines--; | ||||
|    } | ||||
| +
 | ||||
| +  return TRUE;
 | ||||
|  } | ||||
|   | ||||
|  static GstFlowReturn | ||||
| @@ -571,9 +633,13 @@ gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
 | ||||
|            out = gst_buffer_new_and_alloc (flxdec->size * 4); | ||||
|   | ||||
|            /* decode chunks */ | ||||
| -          flx_decode_chunks (flxdec,
 | ||||
| -              ((FlxFrameType *) chunk)->chunks,
 | ||||
| -              chunk + FlxFrameTypeSize, flxdec->frame_data);
 | ||||
| +          if (!flx_decode_chunks (flxdec,
 | ||||
| +                  ((FlxFrameType *) chunk)->chunks,
 | ||||
| +                  chunk + FlxFrameTypeSize, flxdec->frame_data)) {
 | ||||
| +            GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
 | ||||
| +                ("%s", "Could not decode chunk"), NULL);
 | ||||
| +            return GST_FLOW_ERROR;
 | ||||
| +          }
 | ||||
|   | ||||
|            /* save copy of the current frame for possible delta. */ | ||||
|            memcpy (flxdec->delta_data, flxdec->frame_data, flxdec->size); | ||||
| -- 
 | ||||
| 2.10.2 | ||||
| 
 | ||||
|  | @ -1,996 +0,0 @@ | |||
| Copied from | ||||
| <https://hg.mozilla.org/releases/mozilla-esr45/raw-rev/00c2b7baaa0b> | ||||
| but with one hunk omitted: the git binary patch for | ||||
| toolkit/mozapps/extensions/test/addons/test_update_multi2/addon.xpi | ||||
| which is not present in the IceCat sources. | ||||
| 
 | ||||
| # HG changeset patch | ||||
| # User Andrew Swan <aswan@mozilla.com> | ||||
| # Date 1474063218 25200 | ||||
| # Node ID 00c2b7baaa0b4bfb7d5f1aac31c094ea6b255e1f | ||||
| # Parent  46b07bdbf8b20cf3fdc28104add57ff58a55832b | ||||
| Bug 1303418 - Don't allow upgrades that change the addon ID. r=mossop, a=lizzard | ||||
| 
 | ||||
| MozReview-Commit-ID: JHINo8ShmeI | ||||
| 
 | ||||
| diff --git a/toolkit/mozapps/extensions/AddonManager.jsm b/toolkit/mozapps/extensions/AddonManager.jsm
 | ||||
| --- a/toolkit/mozapps/extensions/AddonManager.jsm
 | ||||
| +++ b/toolkit/mozapps/extensions/AddonManager.jsm
 | ||||
| @@ -2956,16 +2956,18 @@ this.AddonManager = {
 | ||||
|    // The downloaded file seems to be corrupted in some way. | ||||
|    ERROR_CORRUPT_FILE: -3, | ||||
|    // An error occured trying to write to the filesystem. | ||||
|    ERROR_FILE_ACCESS: -4, | ||||
|    // The add-on must be signed and isn't. | ||||
|    ERROR_SIGNEDSTATE_REQUIRED: -5, | ||||
|    // The downloaded add-on had a different type than expected. | ||||
|    ERROR_UNEXPECTED_ADDON_TYPE: -6, | ||||
| +  // The addon did not have the expected ID
 | ||||
| +  ERROR_INCORRECT_ID: -7,
 | ||||
|   | ||||
|    // These must be kept in sync with AddonUpdateChecker. | ||||
|    // No error was encountered. | ||||
|    UPDATE_STATUS_NO_ERROR: 0, | ||||
|    // The update check timed out | ||||
|    UPDATE_STATUS_TIMEOUT: -1, | ||||
|    // There was an error while downloading the update information. | ||||
|    UPDATE_STATUS_DOWNLOAD_ERROR: -2, | ||||
| diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
 | ||||
| --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
 | ||||
| +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
 | ||||
| @@ -5473,16 +5473,37 @@ AddonInstall.prototype = {
 | ||||
|        // loadManifestFromZipReader performs the certificate verification for us | ||||
|        this.addon = yield loadManifestFromZipReader(zipreader, this.installLocation); | ||||
|      } | ||||
|      catch (e) { | ||||
|        zipreader.close(); | ||||
|        return Promise.reject([AddonManager.ERROR_CORRUPT_FILE, e]); | ||||
|      } | ||||
|   | ||||
| +    if (this.existingAddon) {
 | ||||
| +      // Check various conditions related to upgrades
 | ||||
| +      if (this.addon.id != this.existingAddon.id) {
 | ||||
| +        zipreader.close();
 | ||||
| +        return Promise.reject([AddonManager.ERROR_INCORRECT_ID,
 | ||||
| +                               `Refusing to upgrade addon ${this.existingAddon.id} to different ID ${this.addon.id}`]);
 | ||||
| +      }
 | ||||
| +
 | ||||
| +      if (this.addon.type == "multipackage") {
 | ||||
| +        zipreader.close();
 | ||||
| +        return Promise.reject([AddonManager.ERROR_UNEXPECTED_ADDON_TYPE,
 | ||||
| +                               `Refusing to upgrade addon ${this.existingAddon.id} to a multi-package xpi`]);
 | ||||
| +      }
 | ||||
| +
 | ||||
| +      if (this.existingAddon.type == "webextension" && this.addon.type != "webextension") {
 | ||||
| +        zipreader.close();
 | ||||
| +        return Promise.reject([AddonManager.ERROR_UNEXPECTED_ADDON_TYPE,
 | ||||
| +                               "Webextensions may not be updated to other extension types"]);
 | ||||
| +      }
 | ||||
| +    }
 | ||||
| +
 | ||||
|      if (mustSign(this.addon.type)) { | ||||
|        if (this.addon.signedState <= AddonManager.SIGNEDSTATE_MISSING) { | ||||
|          // This add-on isn't properly signed by a signature that chains to the | ||||
|          // trusted root. | ||||
|          let state = this.addon.signedState; | ||||
|          this.addon = null; | ||||
|          zipreader.close(); | ||||
|   | ||||
| @@ -5510,23 +5531,16 @@ AddonInstall.prototype = {
 | ||||
|          } else { | ||||
|            zipreader.close(); | ||||
|            return Promise.reject([AddonManager.ERROR_CORRUPT_FILE, | ||||
|                                   "XPI is incorrectly signed"]); | ||||
|          } | ||||
|        } | ||||
|      } | ||||
|   | ||||
| -    if (this.existingAddon && this.existingAddon.type == "webextension" &&
 | ||||
| -        this.addon.type != "webextension") {
 | ||||
| -      zipreader.close();
 | ||||
| -      return Promise.reject([AddonManager.ERROR_UNEXPECTED_ADDON_TYPE,
 | ||||
| -                             "WebExtensions may not be upated to other extension types"]);
 | ||||
| -    }
 | ||||
| -
 | ||||
|      if (this.addon.type == "multipackage") | ||||
|        return this._loadMultipackageManifests(zipreader); | ||||
|   | ||||
|      zipreader.close(); | ||||
|   | ||||
|      this.updateAddonURIs(); | ||||
|   | ||||
|      this.addon._install = this; | ||||
| @@ -5791,16 +5805,17 @@ AddonInstall.prototype = {
 | ||||
|            else { | ||||
|              // TODO Should we send some event here (bug 557716)? | ||||
|              this.state = AddonManager.STATE_CHECKING; | ||||
|              new UpdateChecker(this.addon, { | ||||
|                onUpdateFinished: aAddon => this.downloadCompleted(), | ||||
|              }, AddonManager.UPDATE_WHEN_ADDON_INSTALLED); | ||||
|            } | ||||
|          }, ([error, message]) => { | ||||
| +          this.removeTemporaryFile();
 | ||||
|            this.downloadFailed(error, message); | ||||
|          }); | ||||
|        } | ||||
|        else { | ||||
|          if (aRequest instanceof Ci.nsIHttpChannel) | ||||
|            this.downloadFailed(AddonManager.ERROR_NETWORK_FAILURE, | ||||
|                                aRequest.responseStatus + " " + | ||||
|                                aRequest.responseStatusText); | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_update_multi1/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_update_multi1/bootstrap.js
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/addons/test_update_multi1/bootstrap.js
 | ||||
| @@ -0,0 +1,5 @@
 | ||||
| +
 | ||||
| +function install(data, reason) {}
 | ||||
| +function startup(data, reason) {}
 | ||||
| +function shutdown(data, reason) {}
 | ||||
| +function uninstall(data, reason) {}
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_update_multi1/install.rdf b/toolkit/mozapps/extensions/test/addons/test_update_multi1/install.rdf
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/addons/test_update_multi1/install.rdf
 | ||||
| @@ -0,0 +1,16 @@
 | ||||
| +<?xml version="1.0"?>
 | ||||
| +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| +     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| +<Description about="urn:mozilla:install-manifest">
 | ||||
| +  <em:id>updatemulti@tests.mozilla.org</em:id>
 | ||||
| +  <em:version>1.0</em:version>
 | ||||
| +  <em:updateURL>http://localhost:4444/data/test_update_multi.rdf</em:updateURL>
 | ||||
| +  <em:bootstrap>true</em:bootstrap>
 | ||||
| +  <em:name>Test Addon 1</em:name>
 | ||||
| +<em:targetApplication><Description>
 | ||||
| +  <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| +  <em:minVersion>1</em:minVersion>
 | ||||
| +  <em:maxVersion>1</em:maxVersion>
 | ||||
| +</Description></em:targetApplication>
 | ||||
| +</Description>
 | ||||
| +</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_update_multi2/install.rdf b/toolkit/mozapps/extensions/test/addons/test_update_multi2/install.rdf
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/addons/test_update_multi2/install.rdf
 | ||||
| @@ -0,0 +1,9 @@
 | ||||
| +<?xml version="1.0"?>
 | ||||
| +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| +     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| +<Description about="urn:mozilla:install-manifest">
 | ||||
| +  <em:id>updatemulti@tests.mozilla.org</em:id>
 | ||||
| +  <em:type>32</em:type>
 | ||||
| +  <em:version>2.0</em:version>
 | ||||
| +</Description>
 | ||||
| +</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid1/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid1/bootstrap.js
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/addons/test_updateid1/bootstrap.js
 | ||||
| @@ -0,0 +1,5 @@
 | ||||
| +
 | ||||
| +function install(data, reason) {}
 | ||||
| +function startup(data, reason) {}
 | ||||
| +function shutdown(data, reason) {}
 | ||||
| +function uninstall(data, reason) {}
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid1/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid1/install.rdf
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/addons/test_updateid1/install.rdf
 | ||||
| @@ -0,0 +1,16 @@
 | ||||
| +<?xml version="1.0"?>
 | ||||
| +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| +     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| +<Description about="urn:mozilla:install-manifest">
 | ||||
| +  <em:id>addon1@tests.mozilla.org</em:id>
 | ||||
| +  <em:version>1.0</em:version>
 | ||||
| +  <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
 | ||||
| +  <em:bootstrap>true</em:bootstrap>
 | ||||
| +  <em:name>Test Addon 1</em:name>
 | ||||
| +<em:targetApplication><Description>
 | ||||
| +  <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| +  <em:minVersion>1</em:minVersion>
 | ||||
| +  <em:maxVersion>1</em:maxVersion>
 | ||||
| +</Description></em:targetApplication>
 | ||||
| +</Description>
 | ||||
| +</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid2/bootstrap.js
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/addons/test_updateid2/bootstrap.js
 | ||||
| @@ -0,0 +1,5 @@
 | ||||
| +
 | ||||
| +function install(data, reason) {}
 | ||||
| +function startup(data, reason) {}
 | ||||
| +function shutdown(data, reason) {}
 | ||||
| +function uninstall(data, reason) {}
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid2/install.rdf
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/addons/test_updateid2/install.rdf
 | ||||
| @@ -0,0 +1,16 @@
 | ||||
| +<?xml version="1.0"?>
 | ||||
| +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| +     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| +<Description about="urn:mozilla:install-manifest">
 | ||||
| +  <em:id>addon1.changed@tests.mozilla.org</em:id>
 | ||||
| +  <em:version>2.0</em:version>
 | ||||
| +  <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
 | ||||
| +  <em:bootstrap>true</em:bootstrap>
 | ||||
| +  <em:name>Test Addon 1</em:name>
 | ||||
| +<em:targetApplication><Description>
 | ||||
| +  <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| +  <em:minVersion>1</em:minVersion>
 | ||||
| +  <em:maxVersion>1</em:maxVersion>
 | ||||
| +</Description></em:targetApplication>
 | ||||
| +</Description>
 | ||||
| +</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2_2/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid2_2/install.rdf
 | ||||
| deleted file mode 100644 | ||||
| --- a/toolkit/mozapps/extensions/test/addons/test_updateid2_2/install.rdf
 | ||||
| +++ /dev/null
 | ||||
| @@ -1,24 +0,0 @@
 | ||||
| -<?xml version="1.0"?>
 | ||||
| -
 | ||||
| -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| -     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| -
 | ||||
| -  <Description about="urn:mozilla:install-manifest">
 | ||||
| -    <em:id>addon2@tests.mozilla.org</em:id>
 | ||||
| -    <em:version>2.0</em:version>
 | ||||
| -    <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
 | ||||
| -
 | ||||
| -    <!-- Front End MetaData -->
 | ||||
| -    <em:name>Test 2</em:name>
 | ||||
| -    <em:description>Test Description</em:description>
 | ||||
| -
 | ||||
| -    <em:targetApplication>
 | ||||
| -      <Description>
 | ||||
| -        <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| -        <em:minVersion>1</em:minVersion>
 | ||||
| -        <em:maxVersion>1</em:maxVersion>
 | ||||
| -      </Description>
 | ||||
| -    </em:targetApplication>
 | ||||
| -
 | ||||
| -  </Description>
 | ||||
| -</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid2_5/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid2_5/install.rdf
 | ||||
| deleted file mode 100644 | ||||
| --- a/toolkit/mozapps/extensions/test/addons/test_updateid2_5/install.rdf
 | ||||
| +++ /dev/null
 | ||||
| @@ -1,24 +0,0 @@
 | ||||
| -<?xml version="1.0"?>
 | ||||
| -
 | ||||
| -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| -     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| -
 | ||||
| -  <Description about="urn:mozilla:install-manifest">
 | ||||
| -    <em:id>addon2@tests.mozilla.org</em:id>
 | ||||
| -    <em:version>5.0</em:version>
 | ||||
| -    <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
 | ||||
| -
 | ||||
| -    <!-- Front End MetaData -->
 | ||||
| -    <em:name>Test 2</em:name>
 | ||||
| -    <em:description>Test Description</em:description>
 | ||||
| -
 | ||||
| -    <em:targetApplication>
 | ||||
| -      <Description>
 | ||||
| -        <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| -        <em:minVersion>1</em:minVersion>
 | ||||
| -        <em:maxVersion>1</em:maxVersion>
 | ||||
| -      </Description>
 | ||||
| -    </em:targetApplication>
 | ||||
| -
 | ||||
| -  </Description>
 | ||||
| -</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid3_3/bootstrap.js
 | ||||
| deleted file mode 100644 | ||||
| --- a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/bootstrap.js
 | ||||
| +++ /dev/null
 | ||||
| @@ -1,21 +0,0 @@
 | ||||
| -Components.utils.import("resource://gre/modules/Services.jsm");
 | ||||
| -
 | ||||
| -function install(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.installed_version", 3);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.install_reason", reason);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function startup(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.active_version", 3);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.startup_reason", reason);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function shutdown(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.active_version", 0);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.shutdown_reason", reason);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function uninstall(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.installed_version", 0);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.uninstall_reason", reason);
 | ||||
| -}
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid3_3/install.rdf
 | ||||
| deleted file mode 100644 | ||||
| --- a/toolkit/mozapps/extensions/test/addons/test_updateid3_3/install.rdf
 | ||||
| +++ /dev/null
 | ||||
| @@ -1,25 +0,0 @@
 | ||||
| -<?xml version="1.0"?>
 | ||||
| -
 | ||||
| -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| -     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| -
 | ||||
| -  <Description about="urn:mozilla:install-manifest">
 | ||||
| -    <em:id>addon3@tests.mozilla.org</em:id>
 | ||||
| -    <em:version>3.0</em:version>
 | ||||
| -    <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
 | ||||
| -    <em:bootstrap>true</em:bootstrap>
 | ||||
| -
 | ||||
| -    <!-- Front End MetaData -->
 | ||||
| -    <em:name>Test 3</em:name>
 | ||||
| -    <em:description>Test Description</em:description>
 | ||||
| -
 | ||||
| -    <em:targetApplication>
 | ||||
| -      <Description>
 | ||||
| -        <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| -        <em:minVersion>1</em:minVersion>
 | ||||
| -        <em:maxVersion>1</em:maxVersion>
 | ||||
| -      </Description>
 | ||||
| -    </em:targetApplication>
 | ||||
| -
 | ||||
| -  </Description>
 | ||||
| -</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/bootstrap.js b/toolkit/mozapps/extensions/test/addons/test_updateid4_4/bootstrap.js
 | ||||
| deleted file mode 100644 | ||||
| --- a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/bootstrap.js
 | ||||
| +++ /dev/null
 | ||||
| @@ -1,21 +0,0 @@
 | ||||
| -Components.utils.import("resource://gre/modules/Services.jsm");
 | ||||
| -
 | ||||
| -function install(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.installed_version", 4);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.install_reason", reason);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function startup(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.active_version", 4);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.startup_reason", reason);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function shutdown(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.active_version", 0);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.shutdown_reason", reason);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function uninstall(data, reason) {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.installed_version", 0);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.uninstall_reason", reason);
 | ||||
| -}
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/install.rdf b/toolkit/mozapps/extensions/test/addons/test_updateid4_4/install.rdf
 | ||||
| deleted file mode 100644 | ||||
| --- a/toolkit/mozapps/extensions/test/addons/test_updateid4_4/install.rdf
 | ||||
| +++ /dev/null
 | ||||
| @@ -1,25 +0,0 @@
 | ||||
| -<?xml version="1.0"?>
 | ||||
| -
 | ||||
| -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| -     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| -
 | ||||
| -  <Description about="urn:mozilla:install-manifest">
 | ||||
| -    <em:id>addon4@tests.mozilla.org</em:id>
 | ||||
| -    <em:version>4.0</em:version>
 | ||||
| -    <em:updateURL>http://localhost:4444/data/test_updateid.rdf</em:updateURL>
 | ||||
| -    <em:bootstrap>true</em:bootstrap>
 | ||||
| -
 | ||||
| -    <!-- Front End MetaData -->
 | ||||
| -    <em:name>Test 4</em:name>
 | ||||
| -    <em:description>Test Description</em:description>
 | ||||
| -
 | ||||
| -    <em:targetApplication>
 | ||||
| -      <Description>
 | ||||
| -        <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| -        <em:minVersion>1</em:minVersion>
 | ||||
| -        <em:maxVersion>1</em:maxVersion>
 | ||||
| -      </Description>
 | ||||
| -    </em:targetApplication>
 | ||||
| -
 | ||||
| -  </Description>
 | ||||
| -</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/xpcshell/data/test_update_multi.rdf b/toolkit/mozapps/extensions/test/xpcshell/data/test_update_multi.rdf
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/mozapps/extensions/test/xpcshell/data/test_update_multi.rdf
 | ||||
| @@ -0,0 +1,26 @@
 | ||||
| +<?xml version="1.0" encoding="UTF-8"?>
 | ||||
| +
 | ||||
| +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | ||||
| +     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 | ||||
| +
 | ||||
| +  <Description about="urn:mozilla:extension:updatemulti@tests.mozilla.org">
 | ||||
| +    <em:updates>
 | ||||
| +      <Seq>
 | ||||
| +        <li>
 | ||||
| +          <Description>
 | ||||
| +            <em:version>2.0</em:version>
 | ||||
| +            <em:targetApplication>
 | ||||
| +              <Description>
 | ||||
| +                <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| +                <em:minVersion>1</em:minVersion>
 | ||||
| +                <em:maxVersion>1</em:maxVersion>
 | ||||
| +                <em:updateLink>http://localhost:4444/addons/test_update_multi2.xpi</em:updateLink>
 | ||||
| +              </Description>
 | ||||
| +            </em:targetApplication>
 | ||||
| +          </Description>
 | ||||
| +        </li>
 | ||||
| +      </Seq>
 | ||||
| +    </em:updates>
 | ||||
| +  </Description>
 | ||||
| +
 | ||||
| +</RDF>
 | ||||
| diff --git a/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf b/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf
 | ||||
| --- a/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf
 | ||||
| +++ b/toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf
 | ||||
| @@ -9,77 +9,17 @@
 | ||||
|          <li> | ||||
|            <Description> | ||||
|              <em:version>2.0</em:version> | ||||
|              <em:targetApplication> | ||||
|                <Description> | ||||
|                  <em:id>xpcshell@tests.mozilla.org</em:id> | ||||
|                  <em:minVersion>1</em:minVersion> | ||||
|                  <em:maxVersion>1</em:maxVersion> | ||||
| -                <em:updateLink>http://localhost:4444/addons/test_updateid2_2.xpi</em:updateLink>
 | ||||
| -              </Description>
 | ||||
| -            </em:targetApplication>
 | ||||
| -          </Description>
 | ||||
| -        </li>
 | ||||
| -      </Seq>
 | ||||
| -    </em:updates>
 | ||||
| -  </Description>
 | ||||
| -
 | ||||
| -  <Description about="urn:mozilla:extension:addon2@tests.mozilla.org">
 | ||||
| -    <em:updates>
 | ||||
| -      <Seq>
 | ||||
| -        <li>
 | ||||
| -          <Description>
 | ||||
| -            <em:version>3.0</em:version>
 | ||||
| -            <em:targetApplication>
 | ||||
| -              <Description>
 | ||||
| -                <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| -                <em:minVersion>1</em:minVersion>
 | ||||
| -                <em:maxVersion>1</em:maxVersion>
 | ||||
| -                <em:updateLink>http://localhost:4444/addons/test_updateid3_3.xpi</em:updateLink>
 | ||||
| -              </Description>
 | ||||
| -            </em:targetApplication>
 | ||||
| -          </Description>
 | ||||
| -        </li>
 | ||||
| -      </Seq>
 | ||||
| -    </em:updates>
 | ||||
| -  </Description>
 | ||||
| -
 | ||||
| -  <Description about="urn:mozilla:extension:addon3@tests.mozilla.org">
 | ||||
| -    <em:updates>
 | ||||
| -      <Seq>
 | ||||
| -        <li>
 | ||||
| -          <Description>
 | ||||
| -            <em:version>4.0</em:version>
 | ||||
| -            <em:targetApplication>
 | ||||
| -              <Description>
 | ||||
| -                <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| -                <em:minVersion>1</em:minVersion>
 | ||||
| -                <em:maxVersion>1</em:maxVersion>
 | ||||
| -                <em:updateLink>http://localhost:4444/addons/test_updateid4_4.xpi</em:updateLink>
 | ||||
| -              </Description>
 | ||||
| -            </em:targetApplication>
 | ||||
| -          </Description>
 | ||||
| -        </li>
 | ||||
| -      </Seq>
 | ||||
| -    </em:updates>
 | ||||
| -  </Description>
 | ||||
| -
 | ||||
| -  <Description about="urn:mozilla:extension:addon4@tests.mozilla.org">
 | ||||
| -    <em:updates>
 | ||||
| -      <Seq>
 | ||||
| -        <li>
 | ||||
| -          <Description>
 | ||||
| -            <em:version>5.0</em:version>
 | ||||
| -            <em:targetApplication>
 | ||||
| -              <Description>
 | ||||
| -                <em:id>xpcshell@tests.mozilla.org</em:id>
 | ||||
| -                <em:minVersion>1</em:minVersion>
 | ||||
| -                <em:maxVersion>1</em:maxVersion>
 | ||||
| -                <em:updateLink>http://localhost:4444/addons/test_updateid2_5.xpi</em:updateLink>
 | ||||
| +                <em:updateLink>http://localhost:4444/addons/test_updateid2.xpi</em:updateLink>
 | ||||
|                </Description> | ||||
|              </em:targetApplication> | ||||
|            </Description> | ||||
|          </li> | ||||
|        </Seq> | ||||
|      </em:updates> | ||||
|    </Description> | ||||
|   | ||||
| diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js b/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js
 | ||||
| --- a/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js
 | ||||
| +++ b/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js
 | ||||
| @@ -2,421 +2,85 @@
 | ||||
|   * http://creativecommons.org/publicdomain/zero/1.0/ | ||||
|   */ | ||||
|   | ||||
|  // This verifies that updating an add-on to a new ID works | ||||
|   | ||||
|  // The test extension uses an insecure update url. | ||||
|  Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); | ||||
|   | ||||
| -Components.utils.import("resource://testing-common/httpd.js");
 | ||||
| -var testserver;
 | ||||
|  const profileDir = gProfD.clone(); | ||||
|  profileDir.append("extensions"); | ||||
|   | ||||
| -function resetPrefs() {
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.active_version", -1);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.installed_version", -1);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.startup_reason", -1);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.shutdown_reason", -1);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.install_reason", -1);
 | ||||
| -  Services.prefs.setIntPref("bootstraptest.uninstall_reason", -1);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function getActiveVersion() {
 | ||||
| -  return Services.prefs.getIntPref("bootstraptest.active_version");
 | ||||
| -}
 | ||||
| -
 | ||||
| -function getInstalledVersion() {
 | ||||
| -  return Services.prefs.getIntPref("bootstraptest.installed_version");
 | ||||
| -}
 | ||||
| -
 | ||||
| -function run_test() {
 | ||||
| -  createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
 | ||||
| -
 | ||||
| -  // Create and configure the HTTP server.
 | ||||
| -  testserver = new HttpServer();
 | ||||
| -  testserver.registerDirectory("/data/", do_get_file("data"));
 | ||||
| -  testserver.registerDirectory("/addons/", do_get_file("addons"));
 | ||||
| -  testserver.start(4444);
 | ||||
| -
 | ||||
| -  do_test_pending();
 | ||||
| -  run_test_1();
 | ||||
| -}
 | ||||
| -
 | ||||
| -function end_test() {
 | ||||
| -  testserver.stop(do_test_finished);
 | ||||
| -}
 | ||||
| -
 | ||||
| -function installUpdate(aInstall, aCallback) {
 | ||||
| -  aInstall.addListener({
 | ||||
| -    onInstallEnded: function(aInstall) {
 | ||||
| -      // give the startup time to run
 | ||||
| -      do_execute_soon(function() {
 | ||||
| -        aCallback(aInstall);
 | ||||
| -      });
 | ||||
| -    }
 | ||||
| -  });
 | ||||
| -
 | ||||
| -  aInstall.install();
 | ||||
| -}
 | ||||
| -
 | ||||
| -// Verify that an update to an add-on with a new ID uninstalls the old add-on
 | ||||
| -function run_test_1() {
 | ||||
| -  writeInstallRDFForExtension({
 | ||||
| -    id: "addon1@tests.mozilla.org",
 | ||||
| -    version: "1.0",
 | ||||
| -    updateURL: "http://localhost:4444/data/test_updateid.rdf",
 | ||||
| -    targetApplications: [{
 | ||||
| -      id: "xpcshell@tests.mozilla.org",
 | ||||
| -      minVersion: "1",
 | ||||
| -      maxVersion: "1"
 | ||||
| -    }],
 | ||||
| -    name: "Test Addon 1",
 | ||||
| -  }, profileDir);
 | ||||
| -
 | ||||
| -  startupManager();
 | ||||
| -
 | ||||
| -  AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
 | ||||
| -    do_check_neq(a1, null);
 | ||||
| -    do_check_eq(a1.version, "1.0");
 | ||||
| +function promiseInstallUpdate(install) {
 | ||||
| +  return new Promise((resolve, reject) => {
 | ||||
| +    install.addListener({
 | ||||
| +      onDownloadFailed: () => {
 | ||||
| +        let err = new Error("download error");
 | ||||
| +        err.code = install.error;
 | ||||
| +        reject(err);
 | ||||
| +      },
 | ||||
| +      onInstallFailed: () => {
 | ||||
| +        let err = new Error("install error");
 | ||||
| +        err.code = install.error;
 | ||||
| +        reject(err);
 | ||||
| +      },
 | ||||
| +      onInstallEnded: resolve,
 | ||||
| +    });
 | ||||
|   | ||||
| -    a1.findUpdates({
 | ||||
| -      onUpdateAvailable: function(addon, install) {
 | ||||
| -        do_check_eq(install.name, addon.name);
 | ||||
| -        do_check_eq(install.version, "2.0");
 | ||||
| -        do_check_eq(install.state, AddonManager.STATE_AVAILABLE);
 | ||||
| -        do_check_eq(install.existingAddon, a1);
 | ||||
| -
 | ||||
| -        installUpdate(install, check_test_1);
 | ||||
| -      }
 | ||||
| -    }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| -  });
 | ||||
| -}
 | ||||
| -
 | ||||
| -function check_test_1(install) {
 | ||||
| -  AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) {
 | ||||
| -    // Existing add-on should have a pending upgrade
 | ||||
| -    do_check_neq(a1.pendingUpgrade, null);
 | ||||
| -    do_check_eq(a1.pendingUpgrade.id, "addon2@tests.mozilla.org");
 | ||||
| -    do_check_eq(a1.pendingUpgrade.install.existingAddon, a1);
 | ||||
| -    do_check_neq(a1.syncGUID);
 | ||||
| -
 | ||||
| -    let a1SyncGUID = a1.syncGUID;
 | ||||
| -
 | ||||
| -    restartManager();
 | ||||
| -
 | ||||
| -    AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
 | ||||
| -                                 "addon2@tests.mozilla.org"], function([a1, a2]) {
 | ||||
| -      // Should have uninstalled the old and installed the new
 | ||||
| -      do_check_eq(a1, null);
 | ||||
| -      do_check_neq(a2, null);
 | ||||
| -      do_check_neq(a2.syncGUID, null);
 | ||||
| -
 | ||||
| -      // The Sync GUID should change when the ID changes
 | ||||
| -      do_check_neq(a1SyncGUID, a2.syncGUID);
 | ||||
| -
 | ||||
| -      a2.uninstall();
 | ||||
| -
 | ||||
| -      do_execute_soon(run_test_2);
 | ||||
| -    });
 | ||||
| -  }));
 | ||||
| -}
 | ||||
| -
 | ||||
| -// Test that when the new add-on already exists we just upgrade that
 | ||||
| -function run_test_2() {
 | ||||
| -  restartManager();
 | ||||
| -  shutdownManager();
 | ||||
| -
 | ||||
| -  writeInstallRDFForExtension({
 | ||||
| -    id: "addon1@tests.mozilla.org",
 | ||||
| -    version: "1.0",
 | ||||
| -    updateURL: "http://localhost:4444/data/test_updateid.rdf",
 | ||||
| -    targetApplications: [{
 | ||||
| -      id: "xpcshell@tests.mozilla.org",
 | ||||
| -      minVersion: "1",
 | ||||
| -      maxVersion: "1"
 | ||||
| -    }],
 | ||||
| -    name: "Test Addon 1",
 | ||||
| -  }, profileDir);
 | ||||
| -  writeInstallRDFForExtension({
 | ||||
| -    id: "addon2@tests.mozilla.org",
 | ||||
| -    version: "1.0",
 | ||||
| -    targetApplications: [{
 | ||||
| -      id: "xpcshell@tests.mozilla.org",
 | ||||
| -      minVersion: "1",
 | ||||
| -      maxVersion: "1"
 | ||||
| -    }],
 | ||||
| -    name: "Test Addon 2",
 | ||||
| -  }, profileDir);
 | ||||
| -
 | ||||
| -  startupManager();
 | ||||
| -
 | ||||
| -  AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
 | ||||
| -    do_check_neq(a1, null);
 | ||||
| -    do_check_eq(a1.version, "1.0");
 | ||||
| -
 | ||||
| -    a1.findUpdates({
 | ||||
| -      onUpdateAvailable: function(addon, install) {
 | ||||
| -        installUpdate(install, check_test_2);
 | ||||
| -      }
 | ||||
| -    }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| +    install.install();
 | ||||
|    }); | ||||
|  } | ||||
|   | ||||
| -function check_test_2(install) {
 | ||||
| -  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
 | ||||
| -                               "addon2@tests.mozilla.org"],
 | ||||
| -                               callback_soon(function([a1, a2]) {
 | ||||
| -    do_check_eq(a1.pendingUpgrade, null);
 | ||||
| -    // Existing add-on should have a pending upgrade
 | ||||
| -    do_check_neq(a2.pendingUpgrade, null);
 | ||||
| -    do_check_eq(a2.pendingUpgrade.id, "addon2@tests.mozilla.org");
 | ||||
| -    do_check_eq(a2.pendingUpgrade.install.existingAddon, a2);
 | ||||
| -
 | ||||
| -    restartManager();
 | ||||
| -
 | ||||
| -    AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
 | ||||
| -                                 "addon2@tests.mozilla.org"], function([a1, a2]) {
 | ||||
| -      // Should have uninstalled the old and installed the new
 | ||||
| -      do_check_neq(a1, null);
 | ||||
| -      do_check_neq(a2, null);
 | ||||
| -
 | ||||
| -      a1.uninstall();
 | ||||
| -      a2.uninstall();
 | ||||
| -
 | ||||
| -      do_execute_soon(run_test_3);
 | ||||
| -    });
 | ||||
| -  }));
 | ||||
| -}
 | ||||
| -
 | ||||
| -// Test that we rollback correctly when removing the old add-on fails
 | ||||
| -function run_test_3() {
 | ||||
| -  restartManager();
 | ||||
| -  shutdownManager();
 | ||||
| -
 | ||||
| -  // This test only works on Windows
 | ||||
| -  if (!("nsIWindowsRegKey" in AM_Ci)) {
 | ||||
| -    run_test_4();
 | ||||
| -    return;
 | ||||
| -  }
 | ||||
| -
 | ||||
| -  writeInstallRDFForExtension({
 | ||||
| -    id: "addon1@tests.mozilla.org",
 | ||||
| -    version: "1.0",
 | ||||
| -    updateURL: "http://localhost:4444/data/test_updateid.rdf",
 | ||||
| -    targetApplications: [{
 | ||||
| -      id: "xpcshell@tests.mozilla.org",
 | ||||
| -      minVersion: "1",
 | ||||
| -      maxVersion: "1"
 | ||||
| -    }],
 | ||||
| -    name: "Test Addon 1",
 | ||||
| -  }, profileDir);
 | ||||
| -
 | ||||
| -  startupManager();
 | ||||
| +// Create and configure the HTTP server.
 | ||||
| +let testserver = createHttpServer(4444);
 | ||||
| +testserver.registerDirectory("/data/", do_get_file("data"));
 | ||||
| +testserver.registerDirectory("/addons/", do_get_file("addons"));
 | ||||
|   | ||||
| -  AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
 | ||||
| -    do_check_neq(a1, null);
 | ||||
| -    do_check_eq(a1.version, "1.0");
 | ||||
| -
 | ||||
| -    a1.findUpdates({
 | ||||
| -      onUpdateAvailable: function(addon, install) {
 | ||||
| -        installUpdate(install, check_test_3);
 | ||||
| -      }
 | ||||
| -    }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| -  });
 | ||||
| -}
 | ||||
| -
 | ||||
| -function check_test_3(install) {
 | ||||
| -  AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) {
 | ||||
| -    // Existing add-on should have a pending upgrade
 | ||||
| -    do_check_neq(a1.pendingUpgrade, null);
 | ||||
| -    do_check_eq(a1.pendingUpgrade.id, "addon2@tests.mozilla.org");
 | ||||
| -    do_check_eq(a1.pendingUpgrade.install.existingAddon, a1);
 | ||||
| -
 | ||||
| -    // Lock the old add-on open so it can't be uninstalled
 | ||||
| -    var file = profileDir.clone();
 | ||||
| -    file.append("addon1@tests.mozilla.org");
 | ||||
| -    if (!file.exists())
 | ||||
| -      file.leafName += ".xpi";
 | ||||
| -    else
 | ||||
| -      file.append("install.rdf");
 | ||||
| -
 | ||||
| -    var fstream = AM_Cc["@mozilla.org/network/file-output-stream;1"].
 | ||||
| -                  createInstance(AM_Ci.nsIFileOutputStream);
 | ||||
| -    fstream.init(file, FileUtils.MODE_APPEND | FileUtils.MODE_WRONLY, FileUtils.PERMS_FILE, 0);
 | ||||
| -
 | ||||
| -    restartManager();
 | ||||
| -
 | ||||
| -    fstream.close();
 | ||||
| -
 | ||||
| -    AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
 | ||||
| -                                 "addon2@tests.mozilla.org"],
 | ||||
| -                                 callback_soon(function([a1, a2]) {
 | ||||
| -      // Should not have installed the new add-on but it should still be
 | ||||
| -      // pending install
 | ||||
| -      do_check_neq(a1, null);
 | ||||
| -      do_check_eq(a2, null);
 | ||||
| -
 | ||||
| -      restartManager();
 | ||||
| -
 | ||||
| -      AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
 | ||||
| -                                   "addon2@tests.mozilla.org"], function([a1, a2]) {
 | ||||
| -        // Should have installed the new add-on
 | ||||
| -        do_check_eq(a1, null);
 | ||||
| -        do_check_neq(a2, null);
 | ||||
| -
 | ||||
| -        a2.uninstall();
 | ||||
| -
 | ||||
| -        do_execute_soon(run_test_4);
 | ||||
| -      });
 | ||||
| -    }));
 | ||||
| -  }));
 | ||||
| +function run_test() {
 | ||||
| +  createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
 | ||||
| +  startupManager();
 | ||||
| +  run_next_test();
 | ||||
|  } | ||||
|   | ||||
| -// Tests that upgrading to a bootstrapped add-on works but requires a restart
 | ||||
| -function run_test_4() {
 | ||||
| -  restartManager();
 | ||||
| -  shutdownManager();
 | ||||
| -
 | ||||
| -  writeInstallRDFForExtension({
 | ||||
| -    id: "addon2@tests.mozilla.org",
 | ||||
| -    version: "2.0",
 | ||||
| -    updateURL: "http://localhost:4444/data/test_updateid.rdf",
 | ||||
| -    targetApplications: [{
 | ||||
| -      id: "xpcshell@tests.mozilla.org",
 | ||||
| -      minVersion: "1",
 | ||||
| -      maxVersion: "1"
 | ||||
| -    }],
 | ||||
| -    name: "Test Addon 2",
 | ||||
| -  }, profileDir);
 | ||||
| -
 | ||||
| -  startupManager();
 | ||||
| -
 | ||||
| -  resetPrefs();
 | ||||
| -
 | ||||
| -  AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
 | ||||
| -    do_check_neq(a2, null);
 | ||||
| -    do_check_neq(a2.syncGUID, null);
 | ||||
| -    do_check_eq(a2.version, "2.0");
 | ||||
| -
 | ||||
| -    a2.findUpdates({
 | ||||
| -      onUpdateAvailable: function(addon, install) {
 | ||||
| -        installUpdate(install, check_test_4);
 | ||||
| -      }
 | ||||
| -    }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| -  });
 | ||||
| -}
 | ||||
| -
 | ||||
| -function check_test_4() {
 | ||||
| -  AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org",
 | ||||
| -                               "addon3@tests.mozilla.org"],
 | ||||
| -                               callback_soon(function([a2, a3]) {
 | ||||
| -    // Should still be pending install even though the new add-on is restartless
 | ||||
| -    do_check_neq(a2, null);
 | ||||
| -    do_check_eq(a3, null);
 | ||||
| -
 | ||||
| -    do_check_neq(a2.pendingUpgrade, null);
 | ||||
| -    do_check_eq(a2.pendingUpgrade.id, "addon3@tests.mozilla.org");
 | ||||
| -
 | ||||
| -    do_check_eq(getInstalledVersion(), -1);
 | ||||
| -    do_check_eq(getActiveVersion(), -1);
 | ||||
| -
 | ||||
| -    restartManager();
 | ||||
| -
 | ||||
| -    AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org",
 | ||||
| -                                 "addon3@tests.mozilla.org"], function([a2, a3]) {
 | ||||
| -      // Should have updated
 | ||||
| -      do_check_eq(a2, null);
 | ||||
| -      do_check_neq(a3, null);
 | ||||
| -
 | ||||
| -      do_check_eq(getInstalledVersion(), 3);
 | ||||
| -      do_check_eq(getActiveVersion(), 3);
 | ||||
| -
 | ||||
| -      do_execute_soon(run_test_5);
 | ||||
| -    });
 | ||||
| -  }));
 | ||||
| -}
 | ||||
| -
 | ||||
| -// Tests that upgrading to another bootstrapped add-on works without a restart
 | ||||
| -function run_test_5() {
 | ||||
| -  AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
 | ||||
| -    do_check_neq(a3, null);
 | ||||
| -    do_check_eq(a3.version, "3.0");
 | ||||
| +// Verify that an update to an add-on with a new ID fails
 | ||||
| +add_task(function* test_update_new_id() {
 | ||||
| +  yield promiseInstallAllFiles([do_get_addon("test_updateid1")]);
 | ||||
|   | ||||
| -    a3.findUpdates({
 | ||||
| -      onUpdateAvailable: function(addon, install) {
 | ||||
| -        installUpdate(install, check_test_5);
 | ||||
| -      }
 | ||||
| -    }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| -  });
 | ||||
| -}
 | ||||
| -
 | ||||
| -function check_test_5() {
 | ||||
| -  AddonManager.getAddonsByIDs(["addon3@tests.mozilla.org",
 | ||||
| -                               "addon4@tests.mozilla.org"],
 | ||||
| -                               callback_soon(function([a3, a4]) {
 | ||||
| -    // Should have updated
 | ||||
| -    do_check_eq(a3, null);
 | ||||
| -    do_check_neq(a4, null);
 | ||||
| -
 | ||||
| -    do_check_eq(getInstalledVersion(), 4);
 | ||||
| -    do_check_eq(getActiveVersion(), 4);
 | ||||
| -
 | ||||
| -    restartManager();
 | ||||
| -
 | ||||
| -    AddonManager.getAddonsByIDs(["addon3@tests.mozilla.org",
 | ||||
| -                                 "addon4@tests.mozilla.org"], function([a3, a4]) {
 | ||||
| -      // Should still be gone
 | ||||
| -      do_check_eq(a3, null);
 | ||||
| -      do_check_neq(a4, null);
 | ||||
| -
 | ||||
| -      do_check_eq(getInstalledVersion(), 4);
 | ||||
| -      do_check_eq(getActiveVersion(), 4);
 | ||||
| -
 | ||||
| -      run_test_6();
 | ||||
| -    });
 | ||||
| -  }));
 | ||||
| -}
 | ||||
| +  let addon = yield promiseAddonByID("addon1@tests.mozilla.org");
 | ||||
| +  do_check_neq(addon, null);
 | ||||
| +  do_check_eq(addon.version, "1.0");
 | ||||
|   | ||||
| -// Tests that upgrading to a non-bootstrapped add-on works but requires a restart
 | ||||
| -function run_test_6() {
 | ||||
| -  AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) {
 | ||||
| -    do_check_neq(a4, null);
 | ||||
| -    do_check_eq(a4.version, "4.0");
 | ||||
| -
 | ||||
| -    a4.findUpdates({
 | ||||
| -      onUpdateAvailable: function(addon, install) {
 | ||||
| -        installUpdate(install, check_test_6);
 | ||||
| -      }
 | ||||
| -    }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| -  });
 | ||||
| -}
 | ||||
| +  let update = yield promiseFindAddonUpdates(addon, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| +  let install = update.updateAvailable;
 | ||||
| +  do_check_eq(install.name, addon.name);
 | ||||
| +  do_check_eq(install.version, "2.0");
 | ||||
| +  do_check_eq(install.state, AddonManager.STATE_AVAILABLE);
 | ||||
| +  do_check_eq(install.existingAddon, addon);
 | ||||
|   | ||||
| -function check_test_6() {
 | ||||
| -  AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org",
 | ||||
| -                               "addon2@tests.mozilla.org"],
 | ||||
| -                               callback_soon(function([a4, a2]) {
 | ||||
| -    // Should still be pending install even though the old add-on is restartless
 | ||||
| -    do_check_neq(a4, null);
 | ||||
| -    do_check_eq(a2, null);
 | ||||
| -
 | ||||
| -    do_check_neq(a4.pendingUpgrade, null);
 | ||||
| -    do_check_eq(a4.pendingUpgrade.id, "addon2@tests.mozilla.org");
 | ||||
| -
 | ||||
| -    do_check_eq(getInstalledVersion(), 4);
 | ||||
| -    do_check_eq(getActiveVersion(), 4);
 | ||||
| +  yield Assert.rejects(promiseInstallUpdate(install),
 | ||||
| +                       function(err) { return err.code == AddonManager.ERROR_INCORRECT_ID },
 | ||||
| +                       "Upgrade to a different ID fails");
 | ||||
|   | ||||
| -    restartManager();
 | ||||
| +  addon.uninstall();
 | ||||
| +});
 | ||||
|   | ||||
| -    AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org",
 | ||||
| -                                 "addon2@tests.mozilla.org"], function([a4, a2]) {
 | ||||
| -      // Should have updated
 | ||||
| -      do_check_eq(a4, null);
 | ||||
| -      do_check_neq(a2, null);
 | ||||
| +// Verify that an update to a multi-package xpi fails
 | ||||
| +add_task(function* test_update_new_id() {
 | ||||
| +  yield promiseInstallAllFiles([do_get_addon("test_update_multi1")]);
 | ||||
|   | ||||
| -      do_check_eq(getInstalledVersion(), 0);
 | ||||
| -      do_check_eq(getActiveVersion(), 0);
 | ||||
| +  let addon = yield promiseAddonByID("updatemulti@tests.mozilla.org");
 | ||||
| +  do_check_neq(addon, null);
 | ||||
| +  do_check_eq(addon.version, "1.0");
 | ||||
|   | ||||
| -      end_test();
 | ||||
| -    });
 | ||||
| -  }));
 | ||||
| -}
 | ||||
| +  let update = yield promiseFindAddonUpdates(addon, AddonManager.UPDATE_WHEN_USER_REQUESTED);
 | ||||
| +  let install = update.updateAvailable;
 | ||||
| +  do_check_eq(install.name, addon.name);
 | ||||
| +  do_check_eq(install.version, "2.0");
 | ||||
| +  do_check_eq(install.state, AddonManager.STATE_AVAILABLE);
 | ||||
| +  do_check_eq(install.existingAddon, addon);
 | ||||
| +
 | ||||
| +  yield Assert.rejects(promiseInstallUpdate(install),
 | ||||
| +                       function(err) { return err.code == AddonManager.ERROR_UNEXPECTED_ADDON_TYPE },
 | ||||
| +                       "Upgrade to a multipackage xpi fails");
 | ||||
| +
 | ||||
| +  addon.uninstall();
 | ||||
| +});
 | ||||
| 
 | ||||
|  | @ -1,20 +0,0 @@ | |||
| Avoid building PS and PDF docs, which do not build bit-reproducible.  NASM | ||||
| already installs doc in info and html. | ||||
| 
 | ||||
| --- nasm-2.12.01/doc/Makefile.in.orig	2016-06-21 18:02:59.483484829 +0200
 | ||||
| +++ nasm-2.12.01/doc/Makefile.in	2016-06-21 18:03:46.700151410 +0200
 | ||||
| @@ -27,7 +27,7 @@
 | ||||
|  PS2PDF          = @PS2PDF@		# Part of GhostScript | ||||
|   | ||||
|  SRCS		= nasmdoc.src inslist.src changes.src | ||||
| -OUT		= info html nasmdoc.txt nasmdoc.ps nasmdoc.pdf
 | ||||
| +OUT		= info html nasmdoc.txt
 | ||||
|   | ||||
|  # exports | ||||
|  export srcdir | ||||
| @@ -100,4 +100,4 @@
 | ||||
|  	$(INSTALL_DATA) info/* $(INSTALLROOT)$(infodir) | ||||
|  	mkdir -p $(INSTALLROOT)$(docdir)/html | ||||
|  	$(INSTALL_DATA) html/* $(INSTALLROOT)$(docdir)/html | ||||
| -	$(INSTALL_DATA) nasmdoc.ps nasmdoc.pdf nasmdoc.txt $(INSTALLROOT)$(docdir)
 | ||||
| +	$(INSTALL_DATA) nasmdoc.txt $(INSTALLROOT)$(docdir)
 | ||||
|  | @ -1,47 +0,0 @@ | |||
| Honor SOURCE_DATE_EPOCH when exporting configuration date. | ||||
| Autoconf-level patch submitted upstream on Fri Apr 15 23:07:42 UTC 2016 | ||||
| 
 | ||||
| --- a/configure
 | ||||
| +++ b/configure
 | ||||
| @@ -2866,7 +2866,17 @@
 | ||||
|   | ||||
|   | ||||
|  # Configuration Date | ||||
| - CONFIG_DATE="`date`"
 | ||||
| + CONFIG_DATE="`date -u`"
 | ||||
| +if test -n "$SOURCE_DATE_EPOCH"; then
 | ||||
| +  CONFIG_DATE=`date -u -d "@$SOURCE_DATE_EPOCH" 2>/dev/null \
 | ||||
| +               || date -u -r "$SOURCE_DATE_EPOCH" 2>/dev/null`
 | ||||
| +  if test -z "$CONFIG_DATE"; then
 | ||||
| +    as_fn_error $? "malformed SOURCE_DATE_EPOCH" "$LINENO" 5
 | ||||
| +  fi
 | ||||
| +fi
 | ||||
| +cat >>confdefs.h <<_ACEOF
 | ||||
| +#define CONFIG_DATE "$CONFIG_DATE"
 | ||||
| +_ACEOF
 | ||||
|   | ||||
|  # Find out about the host we're building on. | ||||
|  ac_aux_dir= | ||||
| --- a/libdispatch/derror.c
 | ||||
| +++ b/libdispatch/derror.c
 | ||||
| @@ -13,7 +13,7 @@
 | ||||
|  #endif | ||||
|   | ||||
|  /* Tell the user the version of netCDF. */ | ||||
| -static const char nc_libvers[] = PACKAGE_VERSION " of "__DATE__" "__TIME__" $";
 | ||||
| +static const char nc_libvers[] = PACKAGE_VERSION " of "CONFIG_DATE" $";
 | ||||
|   | ||||
|  /** | ||||
|  \defgroup lib_version Library Version | ||||
| --- a/config.h.in
 | ||||
| +++ b/config.h.in
 | ||||
| @@ -393,6 +393,9 @@
 | ||||
|  /* Define to the version of this package. */ | ||||
|  #undef PACKAGE_VERSION | ||||
|   | ||||
| +/* Define to the configuration date */
 | ||||
| +#undef CONFIG_DATE
 | ||||
| +
 | ||||
|  /* The size of `double', as computed by sizeof. */ | ||||
|  #undef SIZEOF_DOUBLE | ||||
|   | ||||
							
								
								
									
										11
									
								
								gnu/packages/patches/netcdf-date-time.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								gnu/packages/patches/netcdf-date-time.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| --- a/libdispatch/derror.c
 | ||||
| +++ b/libdispatch/derror.c
 | ||||
| @@ -13,7 +13,7 @@
 | ||||
|  #endif | ||||
|   | ||||
|  /* Tell the user the version of netCDF. */ | ||||
| -static const char nc_libvers[] = PACKAGE_VERSION " of "__DATE__" "__TIME__" $";
 | ||||
| +static const char nc_libvers[] = PACKAGE_VERSION" $";
 | ||||
|   | ||||
|  /** | ||||
|  \defgroup lib_version Library Version | ||||
							
								
								
									
										21
									
								
								gnu/packages/patches/netcdf-tst_h_par.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								gnu/packages/patches/netcdf-tst_h_par.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| From a83702834938b23cc2e843589aa223e2024a7e6f Mon Sep 17 00:00:00 2001 | ||||
| From: Orion Poplawski <orion@cora.nwra.com> | ||||
| Date: Tue, 29 Nov 2016 11:48:01 -0700 | ||||
| Subject: [PATCH] Add missing #include "err_macros.h" to tst_h_par.c | ||||
| 
 | ||||
| ---
 | ||||
|  h5_test/tst_h_par.c | 1 + | ||||
|  1 file changed, 1 insertion(+) | ||||
| 
 | ||||
| diff --git a/h5_test/tst_h_par.c b/h5_test/tst_h_par.c
 | ||||
| index c3da7f4..a419d55 100644
 | ||||
| --- a/h5_test/tst_h_par.c
 | ||||
| +++ b/h5_test/tst_h_par.c
 | ||||
| @@ -11,6 +11,7 @@
 | ||||
|     $Id: tst_h_par.c,v 1.15 2010/05/25 13:53:04 ed Exp $ | ||||
|  */ | ||||
|  #include <nc_tests.h> | ||||
| +#include "err_macros.h"
 | ||||
|  #include <hdf5.h> | ||||
|   | ||||
|  /* Defining USE_MPE causes the MPE trace library to be used (and you | ||||
|  | @ -1,36 +0,0 @@ | |||
| Fix build against new mesa.  See: | ||||
| 
 | ||||
|   https://bugs.freedesktop.org/show_bug.cgi?id=83631 | ||||
|   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765938 | ||||
| 
 | ||||
| Description: fixes FTBFS against new libjpeg-turbo | ||||
| Author: Ondřej Surý <ondrej@debian.org> | ||||
| Bug-Debian: https://bugs.debian.org/765938 | ||||
| Reviewed-By: Anton Gladky <gladk@debian.org> | ||||
| Last-Update: 2014-10-22 | ||||
| 
 | ||||
| Index: vtk6-6.1.0+dfsg2/Rendering/OpenGL/vtkOpenGL.h
 | ||||
| ===================================================================
 | ||||
| --- vtk6-6.1.0+dfsg2.orig/Rendering/OpenGL/vtkOpenGL.h
 | ||||
| +++ vtk6-6.1.0+dfsg2/Rendering/OpenGL/vtkOpenGL.h
 | ||||
| @@ -20,6 +20,7 @@
 | ||||
|   | ||||
|  // To prevent gl.h to include glext.h provided by the system | ||||
|  #define GL_GLEXT_LEGACY | ||||
| +#define GLX_GLEXT_LEGACY
 | ||||
|  #if defined(__APPLE__) && (defined(VTK_USE_CARBON) || defined(VTK_USE_COCOA)) | ||||
|  # include <OpenGL/gl.h> // Include OpenGL API. | ||||
|  #else | ||||
| Index: vtk6-6.1.0+dfsg2/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx
 | ||||
| ===================================================================
 | ||||
| --- vtk6-6.1.0+dfsg2.orig/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx
 | ||||
| +++ vtk6-6.1.0+dfsg2/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx
 | ||||
| @@ -27,7 +27,7 @@
 | ||||
|   | ||||
|  // define GLX_GLXEXT_LEGACY to prevent glx.h to include glxext.h provided by | ||||
|  // the system | ||||
| -//#define GLX_GLXEXT_LEGACY
 | ||||
| +#define GLX_GLXEXT_LEGACY
 | ||||
|  #include "GL/glx.h" | ||||
|   | ||||
|  #include "vtkgl.h" | ||||
|  | @ -946,7 +946,7 @@ write accessor methods for your objects that perform standard tasks.") | |||
| (define-public perl-class-method-modifiers | ||||
|   (package | ||||
|     (name "perl-class-method-modifiers") | ||||
|     (version "2.11") | ||||
|     (version "2.12") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -954,7 +954,7 @@ write accessor methods for your objects that perform standard tasks.") | |||
|                            "Class-Method-Modifiers-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "14nk2gin9cjwpysakli7f0gs4q1w220sn73xzv35rhlspngrggyy")))) | ||||
|          "1j3swa212wh14dq5r6zjarm2lzpx6mrdfplpjy65px8b09ri0k74")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-test-fatal" ,perl-test-fatal) | ||||
|  | @ -4756,7 +4756,7 @@ Perl (back to 5.6.0).") | |||
| (define-public perl-namespace-autoclean | ||||
|   (package | ||||
|     (name "perl-namespace-autoclean") | ||||
|     (version "0.24") | ||||
|     (version "0.28") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -4764,7 +4764,7 @@ Perl (back to 5.6.0).") | |||
|                            "namespace-autoclean-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0msggbg2zbixxjq1fda19h0yygavxndfzc4j4pq11nfghmawjsb0")))) | ||||
|          "0fbcq99yaix1aa99jl3v811dbw24il9jxnh5i2i23mddh4b0lhfd")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-module-build" ,perl-module-build) | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> | ||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -31,7 +32,9 @@ | |||
|   #:use-module (gnu packages bison) | ||||
|   #:use-module (gnu packages flex) | ||||
|   #:use-module (gnu packages gperf) | ||||
|   #:use-module (gnu packages perl)) | ||||
|   #:use-module (gnu packages lua) | ||||
|   #:use-module (gnu packages perl) | ||||
|   #:use-module (gnu packages pkg-config)) | ||||
| 
 | ||||
| (define-public a2ps | ||||
|   (package | ||||
|  | @ -197,6 +200,47 @@ seen in a terminal.") | |||
|     (license gpl3+) | ||||
|     (properties '((ftp-directory . "/gnu/src-highlite"))))) | ||||
| 
 | ||||
| (define-public highlight | ||||
|   (package | ||||
|     (name "highlight") | ||||
|     (version "3.33") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://www.andre-simon.de/zip/highlight-" | ||||
|                            version ".tar.bz2")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0g2whi6pxl640795vymikm82a1my841jmh7fiqzbrjpc9wsk1db4")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f ; no tests | ||||
|        #:make-flags | ||||
|        (let ((confdir (string-append %output "/share/highlight/config/"))) | ||||
|          (list (string-append "PREFIX=" %output) | ||||
|                (string-append "HL_CONFIG_DIR=" confdir) | ||||
|                (string-append "conf_dir=" confdir))) | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (delete 'configure) | ||||
|          (add-after 'unpack 'fix-search-for-lua | ||||
|            (lambda _ | ||||
|              (substitute* "src/makefile" | ||||
|                (("(pkg-config.*)lua" _ prefix) | ||||
|                 (string-append prefix "lua-5.3"))) | ||||
|              #t))))) | ||||
|     (inputs | ||||
|      `(("lua" ,lua) | ||||
|        ("boost" ,boost))) | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config))) | ||||
|     (home-page "http://www.andre-simon.de/doku/highlight/en/highlight.php") | ||||
|     (synopsis "Convert code to documents with syntax highlighting") | ||||
|     (description "Highlight converts source code to HTML, XHTML, RTF, LaTeX, | ||||
| TeX, SVG, BBCode and terminal escape sequences with colored syntax | ||||
| highlighting.  Language definitions and color themes are customizable.") | ||||
|     (license gpl3+))) | ||||
| 
 | ||||
| (define-public astyle | ||||
|   (package | ||||
|     (name "astyle") | ||||
|  |  | |||
|  | @ -3261,11 +3261,12 @@ association studies (GWAS) on extremely large data sets.") | |||
|     (name "python-numpy") | ||||
|     (outputs '("out" "doc")) | ||||
|     (inputs | ||||
|      `(("which" ,which))) | ||||
|      `(("which" ,which) | ||||
|        ,@(package-inputs python-numpy-bootstrap))) | ||||
|     (propagated-inputs | ||||
|      `(("python-matplotlib" ,python-matplotlib) | ||||
|        ("python-pyparsing" ,python-pyparsing) | ||||
|        ,@(package-inputs python-numpy-bootstrap))) | ||||
|        ,@(package-propagated-inputs python-numpy-bootstrap))) | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config) | ||||
|        ("python-sphinx" ,python-sphinx) | ||||
|  | @ -3390,7 +3391,7 @@ that client code uses to construct the grammar directly in Python code.") | |||
|            (substitute* "numpydoc/tests/test_plot_directive.py" | ||||
|              (("3") "2")))))) | ||||
|     (build-system python-build-system) | ||||
|     (native-inputs | ||||
|     (propagated-inputs | ||||
|      `(("python-sphinx" ,python-sphinx))) | ||||
|     (native-inputs | ||||
|      `(("python-nose" ,python-nose))) | ||||
|  | @ -4814,7 +4815,7 @@ computing.") | |||
|       ;; FIXME: add pyreadline once available. | ||||
|       (native-inputs | ||||
|        `(("python2-mock" ,python2-mock) | ||||
|          ,@(package-inputs ipython)))))) | ||||
|          ,@(package-native-inputs ipython)))))) | ||||
| 
 | ||||
| (define-public python-isodate | ||||
|   (package | ||||
|  | @ -6371,14 +6372,14 @@ responses, rather than doing any computation.") | |||
| (define-public python-cryptography-vectors | ||||
|   (package | ||||
|     (name "python-cryptography-vectors") | ||||
|     (version "1.5.3") | ||||
|     (version "1.6") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (pypi-uri "cryptography_vectors" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1bnd1bricyhxa27rhr0ljk0kacxzvysd3ar2j2hlv13a2k6zw4z5")))) | ||||
|          "0xgn3yvlmv5rs92wgjj39qscr6s7mwbbsx7j683sfa6ijmyb1k01")))) | ||||
|     (build-system python-build-system) | ||||
|     (home-page "https://github.com/pyca/cryptography") | ||||
|     (synopsis "Test vectors for the cryptography package") | ||||
|  | @ -6393,14 +6394,14 @@ responses, rather than doing any computation.") | |||
| (define-public python-cryptography | ||||
|   (package | ||||
|     (name "python-cryptography") | ||||
|     (version "1.5.3") | ||||
|     (version "1.6") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (pypi-uri "cryptography" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1raanvkdfw5ai56ymlij6ghc4k126fs7jx948ig7yn4vj6ndv0ng")))) | ||||
|          "0gwvmz6w5ml0bjbgmdiscsv5i948lrjd381z7h9qkz6kr398c3ad")))) | ||||
|     (build-system python-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|  |  | |||
|  | @ -424,6 +424,7 @@ virtualization library.") | |||
|     (build-system python-build-system) | ||||
|     (arguments | ||||
|      `(#:python ,python-2 | ||||
|        #:use-setuptools? #f ; Uses custom distutils 'install' command. | ||||
|        ;; Some of the tests seem to require network access to install virtual | ||||
|        ;; machines. | ||||
|        #:tests? #f | ||||
|  |  | |||
|  | @ -35,6 +35,7 @@ | |||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages cups) | ||||
|   #:use-module (gnu packages databases) | ||||
|   #:use-module (gnu packages documentation) | ||||
|   #:use-module (gnu packages fontutils) | ||||
|   #:use-module (gnu packages flex) | ||||
|   #:use-module (gnu packages freedesktop) | ||||
|  | @ -59,6 +60,38 @@ | |||
|   #:use-module (gnu packages xorg) | ||||
|   #:use-module (gnu packages xml)) | ||||
| 
 | ||||
| (define-public grantlee | ||||
|   (package | ||||
|     (name "grantlee") | ||||
|     (version "5.1.0") | ||||
|     (source | ||||
|       (origin | ||||
|         (method url-fetch) | ||||
|         (uri (string-append "https://github.com/steveire/grantlee/archive/v" | ||||
|                             version ".tar.gz")) | ||||
|         (file-name (string-append name "-" version ".tar.gz")) | ||||
|         (sha256 | ||||
|          (base32 "1lf9rkv0i0kd7fvpgg5l8jb87zw8dzcwd1liv6hji7g4wlpmfdiq")))) | ||||
|     (native-inputs | ||||
|      `(("doxygen" ,doxygen))) | ||||
|     (inputs | ||||
|      `(("qtbase" ,qtbase) | ||||
|        ("qtscript" ,qtscript))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (replace 'check | ||||
|                   (lambda _ | ||||
|                     (zero? (system* "ctest" ;; exclude 2 tests which require a display | ||||
|                                     "-E" "htmlbuildertest|plainmarkupbuildertest"))))))) | ||||
|     (home-page "https://github.com/steveire/grantlee") | ||||
|     (synopsis "Libraries for text templating with Qt") | ||||
|     (description "Grantlee Templates can be used for theming and generation of | ||||
| other text such as code.  The syntax uses the syntax of the Django template | ||||
| system, and the core design of Django is reused in Grantlee.") | ||||
|     (license license:lgpl2.0+))) | ||||
| 
 | ||||
| (define-public qt | ||||
|   (package | ||||
|     (name "qt") | ||||
|  |  | |||
|  | @ -166,6 +166,8 @@ serialization.") | |||
|                 "15wg14480lrbrhc2myk9rwpwb2gzix9bk80p4y7gxg3zrzml0xh8")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (home-page "https://github.com/open-source-parsers/jsoncpp") | ||||
|     (arguments | ||||
|      `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES"))) | ||||
|     (synopsis "C++ library for interacting with JSON") | ||||
|     (description "JsonCpp is a C++ library that allows manipulating JSON values, | ||||
| including serialization and deserialization to and from strings.  It can also | ||||
|  |  | |||
|  | @ -1,62 +0,0 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
| ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||||
| ;;; under the terms of the GNU General Public License as published by | ||||
| ;;; the Free Software Foundation; either version 3 of the License, or (at | ||||
| ;;; your option) any later version. | ||||
| ;;; | ||||
| ;;; GNU Guix is distributed in the hope that it will be useful, but | ||||
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| ;;; GNU General Public License for more details. | ||||
| ;;; | ||||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu packages sxiv) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module ((guix licenses) #:prefix license:) | ||||
|   #:use-module (gnu packages xorg) | ||||
|   #:use-module (gnu packages image) | ||||
|   #:use-module (gnu packages photo)) | ||||
| 
 | ||||
| (define-public sxiv | ||||
|   (package | ||||
|     (name "sxiv") | ||||
|     (version "1.3.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                     "https://github.com/muennich/sxiv/archive/v" | ||||
|                     version ".tar.gz")) | ||||
|               (file-name (string-append name "-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0lxnd33gaw4drhdwbkk94wzrjyhh64d57jq2ps7ffmqgizg6hlwz")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      '(#:tests? #f                      ; no check target | ||||
|        #:make-flags (list (string-append "PREFIX=" %output) | ||||
|                           "CC=gcc") | ||||
|        #:phases (alist-delete | ||||
|                  'configure             ; no configure phase | ||||
|                  %standard-phases))) | ||||
|     (inputs | ||||
|      `(("libx11" ,libx11) | ||||
|        ("imlib2" ,imlib2) | ||||
|        ("giflib" ,giflib) | ||||
|        ("libexif" ,libexif))) | ||||
|     (home-page "https://github.com/muennich/sxiv") | ||||
|     (synopsis "Simple X Image Viewer") | ||||
|     (description | ||||
|      "sxiv is an alternative to feh and qiv.  Its primary goal is to | ||||
| provide the most basic features required for fast image viewing.  It has | ||||
| vi key bindings and works nicely with tiling window managers.  Its code | ||||
| base should be kept small and clean to make it easy for you to dig into | ||||
| it and customize it for your needs.") | ||||
|     (license license:gpl2+))) | ||||
|  | @ -16,7 +16,7 @@ | |||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu packages owncloud) | ||||
| (define-module (gnu packages sync) | ||||
|   #:use-module ((guix licenses) #:prefix license:) | ||||
|   #:use-module (guix build-system cmake) | ||||
|   #:use-module (guix download) | ||||
|  | @ -103,3 +103,58 @@ to and a server to synchronize to.  You can configure more computers to | |||
| synchronize to the same server and any change to the files on one computer will | ||||
| silently and reliably flow across to every other.") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public qsyncthingtray | ||||
|   (package | ||||
|     (name "qsyncthingtray") | ||||
|     (version "0.5.6") | ||||
|     (source | ||||
|       (origin | ||||
|         (method url-fetch) | ||||
|         (uri (string-append | ||||
|                "https://github.com/sieren/QSyncthingTray/archive/" | ||||
|                version ".tar.gz")) | ||||
|         (file-name (string-append name "-" version ".tar.gz")) | ||||
|         (sha256 | ||||
|          (base32 | ||||
|           "0py3593pv3iz0vds82wzbjy1ykc96qaaji1ldd9dlr50kb1840c3")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:configure-flags '("-DQST_BUILD_WEBKIT=1") | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          ;; The program is meant to be run from the git repo or source tarball. | ||||
|          (replace 'install | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (let* ((out (assoc-ref outputs "out")) | ||||
|                     (bin (string-append out "/bin"))) | ||||
|                (install-file "QSyncthingTray" bin) | ||||
|                (install-file (string-append | ||||
|                                "../QSyncthingTray-" | ||||
|                                ,(package-version qsyncthingtray) | ||||
|                                "/resources/images/Icon1024.png") | ||||
|                              (string-append | ||||
|                                out "/share/pixmaps/QSyncthingTray.png")) | ||||
|                #t)))) | ||||
|        #:tests? #f)) ; no test target | ||||
|     (inputs | ||||
|      `(("qtbase" ,qtbase) | ||||
|        ("qtwebkit" ,qtwebkit))) | ||||
|     (home-page "https://github.com/sieren/QSyncthingTray") | ||||
|     (synopsis "Traybar Application for Syncthing") | ||||
|     (description | ||||
|      "A traybar application for syncthing. | ||||
| @enumerate | ||||
| @item Shows number of connections at a glance. | ||||
| @item Traffic statistics about incoming, outgoing and total throughput. | ||||
| @item Launches Syncthing and Syncthing-iNotifier if specified. | ||||
| @item Quickly pause Syncthing with one click. | ||||
| @item Last Synced Files - Quickly see the recently synchronised files and open | ||||
| their folder. | ||||
| @item Quick Access to all shared folders. | ||||
| @item Presents Syncthing UI in a separate view instead of using the browser. | ||||
| @item Supports authenticated HTTPS connections. | ||||
| @item Uses System Notifications about current connection status. | ||||
| @item Toggle for monochrome icon. | ||||
| @end enumerate\n") | ||||
|     (license license:lgpl3+))) | ||||
|  | @ -671,7 +671,7 @@ number generator") | |||
| (define-public acme-client | ||||
|   (package | ||||
|     (name "acme-client") | ||||
|     (version "0.1.14") | ||||
|     (version "0.1.15") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://kristaps.bsd.lv/" name "/" | ||||
|  | @ -679,7 +679,7 @@ number generator") | |||
|                                   version ".tgz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1qq4xk41pn65m3v7nnvkmxg96pr06vz6hzdrm0vcmlp3clzpbahl")))) | ||||
|                 "07p723391whrswl4rir0l1k03l457sjscnj0cfaxr8mfnkx4y3wi")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      '(#:tests? #f ; no test suite | ||||
|  | @ -689,6 +689,8 @@ number generator") | |||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (delete 'configure)))) ; no './configure' script | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("libbsd" ,libbsd) | ||||
|        ("libressl" ,libressl))) | ||||
|  |  | |||
|  | @ -39,14 +39,14 @@ | |||
| (define-public tor | ||||
|   (package | ||||
|     (name "tor") | ||||
|     (version "0.2.8.9") | ||||
|     (version "0.2.8.10") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append "https://dist.torproject.org/tor-" | ||||
|                                  version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "05jkvhbgyq81fcmk1xpl3yw97ljj5sg9pngl27zlmgl7p0xjfp1z")))) | ||||
|                "0kcw9hq4xz8p91xwyhjfry5p1dmn7vvnhpfz66vl9gsfndbqr2y8")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("python" ,python-2)))  ; for tests | ||||
|  |  | |||
|  | @ -141,6 +141,9 @@ as well as the classic centralized workflow.") | |||
|       ("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL | ||||
|       ("zlib" ,zlib) | ||||
| 
 | ||||
|       ;; For 'gitweb.cgi' | ||||
|       ("perl-cgi" ,perl-cgi) | ||||
| 
 | ||||
|       ;; For 'git-svn'. | ||||
|       ("subversion" ,subversion) | ||||
|       ("perl-term-readkey" ,perl-term-readkey) | ||||
|  | @ -257,6 +260,17 @@ as well as the classic centralized workflow.") | |||
|                                    "perl-net-smtp-ssl" | ||||
|                                    "perl-io-socket-ssl"))))))) | ||||
| 
 | ||||
|               ;; Tell 'gitweb.cgi' where perl modules are. | ||||
|               (wrap-program (string-append out "/share/gitweb/gitweb.cgi") | ||||
|                 `("PERL5LIB" ":" prefix | ||||
|                   ,(map (lambda (o) (string-append o "/lib/perl5/site_perl")) | ||||
|                         (list | ||||
|                          ,@(transitive-input-references | ||||
|                             'inputs | ||||
|                             (map (lambda (l) | ||||
|                                    (assoc l (inputs))) | ||||
|                                  '("perl-cgi"))))))) | ||||
| 
 | ||||
|               ;; Tell 'git-submodule' where Perl is. | ||||
|               (wrap-program git-sm | ||||
|                 `("PATH" ":" prefix | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> | ||||
| ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -20,37 +21,64 @@ | |||
| (define-module (gnu packages vtk) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix licenses) | ||||
|   #:use-module ((guix licenses) #:select (bsd-3)) | ||||
|   #:use-module (guix utils) | ||||
|   #:use-module (guix build-system cmake) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (gnu packages xorg) | ||||
|   #:use-module (gnu packages gl)) | ||||
|   #:use-module (gnu packages compression) | ||||
|   #:use-module (gnu packages fontutils) | ||||
|   #:use-module (gnu packages gl) | ||||
|   #:use-module (gnu packages image) | ||||
|   #:use-module (gnu packages maths) | ||||
|   #:use-module (gnu packages serialization) | ||||
|   #:use-module (gnu packages xiph) | ||||
|   #:use-module (gnu packages xml) | ||||
|   #:use-module (gnu packages xorg)) | ||||
| 
 | ||||
| (define-public vtk | ||||
|   (package | ||||
|     (name "vtk") | ||||
|     (version "6.1.0") | ||||
|     (version "7.1.0") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "http://www.vtk.org/files/release/" | ||||
|                                   (substring version 0 | ||||
|                                              (string-rindex version #\.)) | ||||
|                                   (version-major+minor version) | ||||
|                                   "/VTK-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0d7shccdkyj4mbh2riilslgx3gd28in4c7xpm0lxa1ln8w5g2zdx")) | ||||
|               (patches (search-patches "vtk-mesa-10.patch")))) | ||||
|                 "0yj96z58haan77gzilnqp7xpf8hg5jk11a3jx55p2ksd400s0gjz")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      ;; Build without '-g' to save space. | ||||
|      '(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release") | ||||
|      '(#:build-type "Release"           ;Build without '-g' to save space. | ||||
|        ;; -DVTK_USE_SYSTEM_NETCDF:BOOL=TRUE requires netcdf_cxx | ||||
|        #:configure-flags '("-DVTK_USE_SYSTEM_EXPAT:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_FREETYPE:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_HDF5:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_JPEG:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_JSONCPP:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_LIBXML2:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_OGGTHEORA:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_PNG:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_TIFF:BOOL=TRUE" | ||||
|                            "-DVTK_USE_SYSTEM_ZLIB:BOOL=TRUE") | ||||
|        #:tests? #f))                              ;XXX: no "test" target | ||||
|     (inputs | ||||
|      `(("libXt" ,libxt) | ||||
|        ("xproto" ,xproto) | ||||
|        ("libX11" ,libx11) | ||||
|        ("libxml2" ,libxml2) | ||||
|        ("mesa" ,mesa) | ||||
|        ("glu" ,glu))) | ||||
|        ("glu" ,glu) | ||||
|        ("expat" ,expat) | ||||
|        ("freetype" ,freetype) | ||||
|        ("hdf5" ,hdf5) | ||||
|        ("jpeg" ,libjpeg) | ||||
|        ("jsoncpp" ,jsoncpp) | ||||
|        ("libogg" ,libogg) | ||||
|        ("libtheora" ,libtheora) | ||||
|        ("png" ,libpng) | ||||
|        ("tiff" ,libtiff) | ||||
|        ("zlib" ,zlib))) | ||||
|     (home-page "http://www.vtk.org/") | ||||
|     (synopsis "Libraries for 3D computer graphics") | ||||
|     (description | ||||
|  |  | |||
|  | @ -201,6 +201,66 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") | |||
|     ;;     except for two source files which are bsd-4 licensed. | ||||
|     (license (list l:bsd-2 l:expat l:bsd-3 l:bsd-4)))) | ||||
| 
 | ||||
| (define-public fcgi | ||||
|   (package | ||||
|     (name "fcgi") | ||||
|     (version "2.4.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        ;; Upstream has disappeared | ||||
|        (uri (string-append "https://sources.archlinux.org/other/packages/fcgi/" | ||||
|                            "fcgi-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1f857wnl1d6jfrgfgfpz3zdaj8fch3vr13mnpcpvy8bang34bz36")) | ||||
|        (patches (search-patches "fcgi-2.4.0-poll.patch" | ||||
|                                 "fcgi-2.4.0-gcc44-fixes.patch")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (home-page "http://www.fastcgi.com") | ||||
|     (synopsis "Language-independent, high-performant extension to CGI") | ||||
|     (description "FastCGI is a language independent, scalable extension to CGI | ||||
| that provides high performance without the limitations of server specific | ||||
| APIs.") | ||||
|     ;; This package is released under the Open Market License, a variant of | ||||
|     ;; the Expat license, incompatible with the GPL. | ||||
|     (license (l:non-copyleft "file://LICENSE.TERMS")))) | ||||
| 
 | ||||
| (define-public fcgiwrap | ||||
|   (package | ||||
|     (name "fcgiwrap") | ||||
|     (version "1.1.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://github.com/gnosek/fcgiwrap/" | ||||
|                            "archive/" version ".tar.gz")) | ||||
|        (file-name (string-append name "-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "07y6s4mm86cv7p1ljz94sxnqa89y9amn3vzwsnbq5hrl4vdy0zac")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f ; no tests included | ||||
|        #:make-flags (list "CC=gcc") | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'bootstrap | ||||
|            (lambda _ | ||||
|              (zero? (system* "autoreconf" "-vif"))))))) | ||||
|     (native-inputs | ||||
|      `(("autoconf" ,autoconf) | ||||
|        ("automake" ,automake) | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("fcgi" ,fcgi))) | ||||
|     (home-page "https://nginx.localdomain.pl/wiki/FcgiWrap") | ||||
|     (synopsis "Simple server for running CGI applications over FastCGI") | ||||
|     (description "Fcgiwrap is a simple server for running CGI applications | ||||
| over FastCGI.  It hopes to provide clean CGI support to Nginx (and other web | ||||
| servers that may need it).") | ||||
|     (license l:expat))) | ||||
| 
 | ||||
| (define-public starman | ||||
|   (package | ||||
|     (name "starman") | ||||
|  | @ -827,7 +887,7 @@ language known as SASS.") | |||
| (define-public perl-apache-logformat-compiler | ||||
|   (package | ||||
|     (name "perl-apache-logformat-compiler") | ||||
|     (version "0.32") | ||||
|     (version "0.33") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -835,7 +895,7 @@ language known as SASS.") | |||
|                            "Apache-LogFormat-Compiler-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0zyx4r2bxc6d48m70fhcq80nw0q9wnfz6qgn1g0r6bigqgdjq4dw")))) | ||||
|          "17blk3zhp05azgypn25ydxf3d7fyfgr9bxyiv7xkchhqma96vwqv")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-http-message" ,perl-http-message) | ||||
|  | @ -902,26 +962,29 @@ action, which will forward to the first available view.") | |||
| (define-public perl-catalyst-action-rest | ||||
|   (package | ||||
|     (name "perl-catalyst-action-rest") | ||||
|     (version "1.17") | ||||
|     (version "1.20") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/" | ||||
|               (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" | ||||
|                                   "Catalyst-Action-REST-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1rnxmsd9dsqz4xc0g9ynafxi934jwp0nixbg92q3bc2h46xcccy8")))) | ||||
|                 "1mpa64p61f3dp24xnhdraswch4sqj5vyv1iivcvvh5h0xi0haiy0")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-test-requires" ,perl-test-requires))) | ||||
|     (propagated-inputs | ||||
|      `(("perl-catalyst-runtime" ,perl-catalyst-runtime) | ||||
|        ("perl-class-inspector" ,perl-class-inspector) | ||||
|        ("perl-config-general" ,perl-config-general) | ||||
|        ("perl-cpanel-json-xs" ,perl-cpanel-json-xs) | ||||
|        ("perl-libwww" ,perl-libwww) | ||||
|        ("perl-moose" ,perl-moose) | ||||
|        ("perl-mro-compat" ,perl-mro-compat) | ||||
|        ("perl-namespace-autoclean" ,perl-namespace-autoclean) | ||||
|        ("perl-params-validate" ,perl-params-validate) | ||||
|        ("perl-uri-find" ,perl-uri-find))) | ||||
|        ("perl-uri-find" ,perl-uri-find) | ||||
|        ("perl-xml-simple" ,perl-xml-simple))) | ||||
|     (home-page "http://search.cpan.org/dist/Catalyst-Action-REST") | ||||
|     (synopsis "Automated REST Method Dispatching") | ||||
|     (description "This Action handles doing automatic method dispatching for | ||||
|  | @ -1110,7 +1173,7 @@ Models.") | |||
| (define-public perl-catalyst-plugin-accesslog | ||||
|   (package | ||||
|     (name "perl-catalyst-plugin-accesslog") | ||||
|     (version "1.05") | ||||
|     (version "1.10") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1118,14 +1181,13 @@ Models.") | |||
|                            "Catalyst-Plugin-AccessLog-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0hqvckaw91q5yc25a33bp0d4qqxlgkp7rxlvi8n8svxd1406r55s")))) | ||||
|          "0811rj45q4v2y8wka3wb9d5m4vbyhcmkvddf2wz4x69awzjbhgc7")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-catalyst-runtime" ,perl-catalyst-runtime) | ||||
|        ("perl-datetime" ,perl-datetime) | ||||
|        ("perl-moose" ,perl-moose) | ||||
|        ("perl-namespace-autoclean" ,perl-namespace-autoclean))) | ||||
|     (arguments `(#:tests? #f))          ;Unexpected http responses | ||||
|     (home-page "http://search.cpan.org/dist/Catalyst-Plugin-AccessLog") | ||||
|     (synopsis "Request logging from within Catalyst") | ||||
|     (description "This Catalyst plugin enables you to create \"access logs\" | ||||
|  | @ -1251,7 +1313,7 @@ formats.") | |||
| (define-public perl-catalyst-plugin-session | ||||
|   (package | ||||
|     (name "perl-catalyst-plugin-session") | ||||
|     (version "0.39") | ||||
|     (version "0.40") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1259,7 +1321,7 @@ formats.") | |||
|                            "Catalyst-Plugin-Session-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0m4a003qgz7848iyckwbigg2vw3kmfxggh1razrnzxrbz3n6x5gi")))) | ||||
|          "171vi9xcl775scjaw4fcfdmqvz0rb1nr0xxg2gb3ng6bjzpslhgv")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-test-deep" ,perl-test-deep) | ||||
|  | @ -1269,6 +1331,7 @@ formats.") | |||
|        ("perl-moose" ,perl-moose) | ||||
|        ("perl-moosex-emulate-class-accessor-fast" | ||||
|         ,perl-moosex-emulate-class-accessor-fast) | ||||
|        ("perl-mro-compat" ,perl-mro-compat) | ||||
|        ("perl-namespace-clean" ,perl-namespace-clean) | ||||
|        ("perl-object-signature" ,perl-object-signature) | ||||
|        ("perl-test-www-mechanize-psgi" ,perl-test-www-mechanize-psgi))) | ||||
|  | @ -1517,7 +1580,7 @@ table based report in a variety of formats (CSV, HTML, etc.).") | |||
| (define-public perl-catalyst-view-json | ||||
|   (package | ||||
|     (name "perl-catalyst-view-json") | ||||
|     (version "0.35") | ||||
|     (version "0.36") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1525,7 +1588,7 @@ table based report in a variety of formats (CSV, HTML, etc.).") | |||
|                            "Catalyst-View-JSON-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "184pyghlrkl7p387bnyvswi2d9myvdg4v3lax6xrd59shskvpmkm")))) | ||||
|          "0x943j1n2r0zqanyzdrs1xsnn8ayn2wqskn7h144xcqa6v6gcisl")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-yaml" ,perl-yaml))) | ||||
|  | @ -1542,19 +1605,20 @@ stash data in JSON format.") | |||
| (define-public perl-catalyst-view-tt | ||||
|   (package | ||||
|     (name "perl-catalyst-view-tt") | ||||
|     (version "0.42") | ||||
|     (version "0.44") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" | ||||
|        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" | ||||
|                            "Catalyst-View-TT-" version ".tar.gz")) | ||||
|      (sha256 | ||||
|       (base32 | ||||
|        "18ciik9fqaqjfasa9wicbjrsl3gjhjc15xzaj3rif57an25cl178")))) | ||||
|        "06d1zg4nbb6kcyjbnyxrkf8z4zlscxr8650d94f7187jygfl8rvh")))) | ||||
|   (build-system perl-build-system) | ||||
|   (propagated-inputs | ||||
|    `(("perl-catalyst-runtime" ,perl-catalyst-runtime) | ||||
|      ("perl-class-accessor" ,perl-class-accessor) | ||||
|      ("perl-data-dump" ,perl-data-dump) | ||||
|      ("perl-mro-compat" ,perl-mro-compat) | ||||
|      ("perl-path-class" ,perl-path-class) | ||||
|      ("perl-template-timer" ,perl-template-timer) | ||||
|  | @ -1651,7 +1715,7 @@ development server with Starman.") | |||
| (define-public perl-cgi | ||||
|   (package | ||||
|     (name "perl-cgi") | ||||
|     (version "4.25") | ||||
|     (version "4.35") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1659,7 +1723,7 @@ development server with Starman.") | |||
|                            "CGI-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "06hk9zzvlix1yi95wlkb1ykdxgl6lscm7452gkwr2snsb8iybczg")))) | ||||
|          "07gwnlc7vq58fjwmfsrv0hfyirqqdrpjhf89caq34rjrkz2wsd0b")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-test-deep" ,perl-test-deep) | ||||
|  | @ -1768,7 +1832,7 @@ for files and urls.") | |||
| (define-public perl-encode-locale | ||||
|   (package | ||||
|     (name "perl-encode-locale") | ||||
|     (version "1.03") | ||||
|     (version "1.05") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append | ||||
|  | @ -1776,7 +1840,7 @@ for files and urls.") | |||
|                    version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "0m9d1vdphlyzybgmdanipwd9ndfvyjgk3hzw250r299jjgh3fqzp")))) | ||||
|                "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp")))) | ||||
|     (build-system perl-build-system) | ||||
|     (license (package-license perl)) | ||||
|     (synopsis "Perl locale encoding determination") | ||||
|  | @ -1843,7 +1907,7 @@ which can be used to parse directory listings.") | |||
| (define-public perl-finance-quote | ||||
|   (package | ||||
|    (name "perl-finance-quote") | ||||
|    (version "1.37") | ||||
|    (version "1.38") | ||||
|    (source | ||||
|     (origin | ||||
|       (method url-fetch) | ||||
|  | @ -1851,7 +1915,7 @@ which can be used to parse directory listings.") | |||
|                           "Finance-Quote-" version ".tar.gz")) | ||||
|       (sha256 | ||||
|        (base32 | ||||
|         "1b6pbh7f76fb5sa4f0lhx085xy55pprz5v7z7li7pqiyw7i4f4bf")) | ||||
|         "0zhqb27y4vdxn476s2kwm9zl2f970yjcyyybnjm9b406krr2fm59")) | ||||
|       (patches (search-patches | ||||
|                 "perl-finance-quote-unuse-mozilla-ca.patch")))) | ||||
|    (build-system perl-build-system) | ||||
|  | @ -2019,7 +2083,7 @@ representing, creating, and extracting information from HTML syntax trees.") | |||
| (define-public perl-html-parser | ||||
|   (package | ||||
|     (name "perl-html-parser") | ||||
|     (version "3.71") | ||||
|     (version "3.72") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append | ||||
|  | @ -2027,10 +2091,11 @@ representing, creating, and extracting information from HTML syntax trees.") | |||
|                    version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "00nqzdgl7c3jilx7mil19k5jwcw3as14pvkjgxi97zyk94vqp4dy")))) | ||||
|                "12v05ywlnsi9lc17z32k9jxx3sj1viy7y1wpl7n4az76v7hwfa7c")))) | ||||
|     (build-system perl-build-system) | ||||
|     (inputs | ||||
|      `(("perl-html-tagset" ,perl-html-tagset))) | ||||
|      `(("perl-html-tagset" ,perl-html-tagset) | ||||
|        ("perl-http-message" ,perl-http-message))) | ||||
|     (license (package-license perl)) | ||||
|     (synopsis "Perl HTML parser class") | ||||
|     (description | ||||
|  | @ -2089,7 +2154,7 @@ you to separate design from the data.") | |||
| (define-public perl-http-body | ||||
|   (package | ||||
|     (name "perl-http-body") | ||||
|     (version "1.19") | ||||
|     (version "1.22") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -2097,7 +2162,7 @@ you to separate design from the data.") | |||
|                            "HTTP-Body-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0ahhksj0zg6wq6glpjkxdr3byd5riwvq2f5aw21n1jcsl71nll01")))) | ||||
|          "15vj488i62mdp4ps9k77h39prj70i7anb6b0j8nm7l9vbdc2q3gw")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-test-deep" ,perl-test-deep))) | ||||
|  | @ -2114,7 +2179,7 @@ and multipart/form-data.") | |||
| (define-public perl-http-cookiejar | ||||
|   (package | ||||
|     (name "perl-http-cookiejar") | ||||
|     (version "0.006") | ||||
|     (version "0.008") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -2122,12 +2187,13 @@ and multipart/form-data.") | |||
|                            "HTTP-CookieJar-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0c7l29ak6ba2j006ca00vnkxpyc1fvpikydjvsb24s50zf1mv7b2")))) | ||||
|          "0rfw6avcralggs7bf7n86flvhaahxjnqzvpwszp0sk4z4wwy01wm")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-test-deep" ,perl-test-deep) | ||||
|        ("perl-test-requires" ,perl-test-requires) | ||||
|        ("perl-time-mock" ,perl-time-mock))) | ||||
|        ("perl-time-mock" ,perl-time-mock) | ||||
|        ("perl-uri" ,perl-uri))) | ||||
|     (inputs | ||||
|      `(("perl-time-local" ,perl-time-local) | ||||
|        ("perl-http-date" ,perl-http-date))) | ||||
|  | @ -2207,18 +2273,19 @@ used by the HTTP protocol (and then some more).") | |||
| (define-public perl-http-message | ||||
|   (package | ||||
|     (name "perl-http-message") | ||||
|     (version "6.06") | ||||
|     (version "6.11") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append | ||||
|                    "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Message-" | ||||
|                    "mirror://cpan/authors/id/E/ET/ETHER/HTTP-Message-" | ||||
|                    version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "0qxdrcak97azjvqyx1anpb2ky6vp6vc37x0wcfjdqfajkh09fzh8")))) | ||||
|                "06yq6cjx4vzl4if4ykap77xsrrd8aa7ish90k7cqi8g6g83nicz7")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-http-date" ,perl-http-date) | ||||
|      `(("perl-encode-locale" ,perl-encode-locale) | ||||
|        ("perl-http-date" ,perl-http-date) | ||||
|        ("perl-io-html" ,perl-io-html) | ||||
|        ("perl-lwp-mediatypes" ,perl-lwp-mediatypes) | ||||
|        ("perl-uri" ,perl-uri))) | ||||
|  | @ -2226,7 +2293,7 @@ used by the HTTP protocol (and then some more).") | |||
|     (synopsis "Perl HTTP style message") | ||||
|     (description | ||||
|      "An HTTP::Message object contains some headers and a content body.") | ||||
|     (home-page "http://search.cpan.org/~gaas/HTTP-Message/"))) | ||||
|     (home-page "http://search.cpan.org/~ether/HTTP-Message/"))) | ||||
| 
 | ||||
| (define-public perl-http-negotiate | ||||
|   (package | ||||
|  | @ -2322,15 +2389,15 @@ environment from an HTTP::Request.") | |||
| (define-public perl-http-server-simple | ||||
|   (package | ||||
|     (name "perl-http-server-simple") | ||||
|     (version "0.44") | ||||
|     (version "0.51") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "mirror://cpan/authors/id/J/JE/JESSE/" | ||||
|        (uri (string-append "mirror://cpan/authors/id/B/BP/BPS/" | ||||
|                            "HTTP-Server-Simple-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "05klpfkss2a6i5ihmvcm27fyar0f2v4ispg2f49agab3va1gix6g")))) | ||||
|          "1yvd2g57z2kq00q5i3zzfi15k98qgbif3vghjsda6v612agmrp5r")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-cgi" ,perl-cgi))) | ||||
|  | @ -2348,7 +2415,7 @@ http-based UI to your existing tools.") | |||
| (define-public perl-http-tiny | ||||
|   (package | ||||
|     (name "perl-http-tiny") | ||||
|     (version "0.053") | ||||
|     (version "0.070") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -2356,12 +2423,13 @@ http-based UI to your existing tools.") | |||
|                            "HTTP-Tiny-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1bwy31xrcz5zfx1n3vc50vj1aqvzn5ccr7lgacl8wmi03a6w2af2")))) | ||||
|          "0cvp5yqrni6qydpsa8fpkbm82zfwmy9js8jsvyj8gs3dx78qbwvl")))) | ||||
|     (build-system perl-build-system) | ||||
|     (inputs | ||||
|      `(("perl-http-cookiejar" ,perl-http-cookiejar) | ||||
|        ("perl-io-socket-ip" ,perl-io-socket-ip) | ||||
|        ("perl-io-socket-ssl" ,perl-io-socket-ssl) | ||||
|        ("perl-mozilla-ca" ,perl-mozilla-ca) | ||||
|        ("perl-net-ssleay" ,perl-net-ssleay))) | ||||
|     (home-page "http://search.cpan.org/dist/HTTP-Tiny") | ||||
|     (synopsis "HTTP/1.1 client") | ||||
|  | @ -2442,7 +2510,7 @@ select or poll.") | |||
| (define-public perl-libwww | ||||
|   (package | ||||
|     (name "perl-libwww") | ||||
|     (version "6.13") | ||||
|     (version "6.15") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append | ||||
|  | @ -2450,7 +2518,7 @@ select or poll.") | |||
|                    version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "1cpqjl59viw50bnbdyn8xzrwzg7g54b2rszw0fifacqrppp17gaz")))) | ||||
|                "08l3mpgcvm4ipn1zggymqgk402apf35xyds43i8c07hvq92rsd3g")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-encode-locale" ,perl-encode-locale) | ||||
|  | @ -2458,8 +2526,11 @@ select or poll.") | |||
|        ("perl-html-parser" ,perl-html-parser) | ||||
|        ("perl-http-cookies" ,perl-http-cookies) | ||||
|        ("perl-http-daemon" ,perl-http-daemon) | ||||
|        ("perl-http-date" ,perl-http-date) | ||||
|        ("perl-http-message" ,perl-http-message) | ||||
|        ("perl-http-negotiate" ,perl-http-negotiate) | ||||
|        ("perl-net-http" ,perl-net-http) | ||||
|        ("perl-uri" ,perl-uri) | ||||
|        ("perl-www-robotrules" ,perl-www-robotrules))) | ||||
|     (license (package-license perl)) | ||||
|     (synopsis "Perl modules for the WWW") | ||||
|  |  | |||
|  | @ -167,7 +167,7 @@ based on libxml for XML parsing, tree manipulation and XPath support.") | |||
| (define-public perl-graph-readwrite | ||||
|   (package | ||||
|     (name "perl-graph-readwrite") | ||||
|     (version "2.08") | ||||
|     (version "2.09") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -177,7 +177,7 @@ based on libxml for XML parsing, tree manipulation and XPath support.") | |||
|              ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1wjni212nfz9irp19nx9if1lj3w9cybpdbzhii4g8macpryjj7ci")))) | ||||
|          "0jlsg64pmy6ka5q5gy851nnyfgjzvhyxc576bhns3vi2x5ng07mh")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-graph" ,perl-graph) | ||||
|  | @ -310,14 +310,14 @@ XML parser and the high performance DOM implementation.") | |||
| (define-public perl-xml-libxml-simple | ||||
|   (package | ||||
|     (name "perl-xml-libxml-simple") | ||||
|     (version "0.95") | ||||
|     (version "0.97") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" | ||||
|                                   "XML-LibXML-Simple-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0qqfqj5bgqmh1j4iv8dwl3g00nsmcvf2b7w1d09k9d77rrb249xi")))) | ||||
|                 "1g8nlk3zdz2cclxf7azvsb3jfxmvy6ml8wmj774k4qjqcsqmzk0w")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny) | ||||
|  | @ -514,7 +514,7 @@ EntityRef, CharRef, Reference, Name, NmToken, and AttValue.") | |||
| (define-public perl-xml-dom | ||||
|   (package | ||||
|     (name "perl-xml-dom") | ||||
|     (version "1.44") | ||||
|     (version "1.46") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append | ||||
|  | @ -522,11 +522,12 @@ EntityRef, CharRef, Reference, Name, NmToken, and AttValue.") | |||
|                    version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "1r0ampc88ni3sjpzr583k86076qg399arfm9xirv3cw49k3k5bzn")))) | ||||
|                "0phpkc4li43m2g44hdcvyxzy9pymqwlqhh5hwp2xc0cv8l5lp8lb")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-libwww" ,perl-libwww) | ||||
|        ("perl-libxml" ,perl-libxml) | ||||
|        ("perl-xml-parser" ,perl-xml-parser) | ||||
|        ("perl-xml-regexp" ,perl-xml-regexp))) | ||||
|     (license (package-license perl)) | ||||
|     (synopsis | ||||
|  | @ -565,14 +566,14 @@ This module provide functions which simplify writing tests for | |||
| (define-public perl-xml-compile | ||||
|   (package | ||||
|     (name "perl-xml-compile") | ||||
|     (version "1.51") | ||||
|     (version "1.54") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" | ||||
|                                   "XML-Compile-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "06fj4zf0yh4kf3kx4bhwrmrjr6al40nasasbgfhn8f1zxwkmm8f2")))) | ||||
|                 "1hp41960bpqxvv1samv9hc0ghhmvs3i16r4rfl9yp54lp6jhsr2c")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-log-report" ,perl-log-report) | ||||
|  | @ -590,14 +591,14 @@ a schema.") | |||
| (define-public perl-xml-compile-cache | ||||
|   (package | ||||
|     (name "perl-xml-compile-cache") | ||||
|     (version "1.04") | ||||
|     (version "1.05") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" | ||||
|                                   "XML-Compile-Cache-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1689dm54n7wb0n0cl9n77vk0kvg0mcckn2hz9ahigjhvazah8740")))) | ||||
|                 "0xbwlszhi9hg8sxm5ylglm2qvnb689i595p913awrj2g4mp9yfsw")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-log-report" ,perl-log-report) | ||||
|  | @ -613,14 +614,14 @@ a schema.") | |||
| (define-public perl-xml-compile-soap | ||||
|   (package | ||||
|     (name "perl-xml-compile-soap") | ||||
|     (version "3.13") | ||||
|     (version "3.20") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" | ||||
|                                   "XML-Compile-SOAP-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "08qw63l78040nh37xzapbqp43g6s5l67bvskf3dyyizlarjx5mi4")))) | ||||
|                 "0qplb77qr97pc9yis51jmphl9gbq9xyf8abldpxkwvdn6iqlbgx5")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny) | ||||
|  | @ -641,14 +642,14 @@ used.") | |||
| (define-public perl-xml-compile-wsdl11 | ||||
|   (package | ||||
|     (name "perl-xml-compile-wsdl11") | ||||
|     (version "3.04") | ||||
|     (version "3.05") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" | ||||
|                                   "XML-Compile-WSDL11-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0pyikwnfwpangvnkf5dbdagy4z93ag9824f1ax5qaibc3ghca8kv")))) | ||||
|                 "1a50in1qrbzx3924wvrhgfm5fcxz5cd95f3z9z2xgln27q1zssc4")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-log-report" ,perl-log-report) | ||||
|  | @ -706,14 +707,14 @@ RSS 0.91, RSS 1.0, RSS 2.0, Atom") | |||
| (define-public perl-xml-xpath | ||||
|   (package | ||||
|     (name "perl-xml-xpath") | ||||
|     (version "1.37") | ||||
|     (version "1.40") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/" | ||||
|                                   "XML-XPath-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0997l8vjgq8p7d1irvp6amqyrv24x7f8hybjm4l4ayag32b13bmq")))) | ||||
|                 "07pa0bl42jka8mj7jshjynx8vpfh8b4cdyiv4zlkqvkqz98nzxib")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-path-tiny" ,perl-path-tiny))) | ||||
|  |  | |||
|  | @ -252,6 +252,8 @@ FILE-SYSTEM." | |||
|         (device  (file-system-device file-system)) | ||||
|         (type    (file-system-type file-system)) | ||||
|         (title   (file-system-title file-system)) | ||||
|         (flags   (file-system-flags file-system)) | ||||
|         (options (file-system-options file-system)) | ||||
|         (check?  (file-system-check? file-system)) | ||||
|         (create? (file-system-create-mount-point? file-system)) | ||||
|         (dependencies (file-system-dependencies file-system))) | ||||
|  | @ -264,34 +266,12 @@ FILE-SYSTEM." | |||
|                            ,@(map dependency->shepherd-service-name dependencies))) | ||||
|             (documentation "Check, mount, and unmount the given file system.") | ||||
|             (start #~(lambda args | ||||
|                        ;; FIXME: Use or factorize with 'mount-file-system'. | ||||
|                        (let ((device (canonicalize-device-spec #$device '#$title)) | ||||
|                              (flags  #$(mount-flags->bit-mask | ||||
|                                         (file-system-flags file-system)))) | ||||
|                          #$(if create? | ||||
|                                #~(mkdir-p #$target) | ||||
|                                #~#t) | ||||
|                          #$(if check? | ||||
|                                #~(begin | ||||
|                                    ;; Make sure fsck.ext2 & co. can be found. | ||||
|                                    (setenv "PATH" | ||||
|                                            (string-append | ||||
|                                             #$e2fsprogs "/sbin:" | ||||
|                                             "/run/current-system/profile/sbin:" | ||||
|                                             (getenv "PATH"))) | ||||
|                                    (check-file-system device #$type)) | ||||
|                                #~#t) | ||||
| 
 | ||||
|                          (mount device #$target #$type flags | ||||
|                                 #$(file-system-options file-system)) | ||||
| 
 | ||||
|                          ;; For read-only bind mounts, an extra remount is | ||||
|                          ;; needed, as per <http://lwn.net/Articles/281157/>, | ||||
|                          ;; which still applies to Linux 4.0. | ||||
|                          (when (and (= MS_BIND (logand flags MS_BIND)) | ||||
|                                     (= MS_RDONLY (logand flags MS_RDONLY))) | ||||
|                            (mount device #$target #$type | ||||
|                                   (logior MS_BIND MS_REMOUNT MS_RDONLY)))) | ||||
| 		       #$(if create? | ||||
|                              #~(mkdir-p #$target) | ||||
|                              #t) | ||||
| 		       (mount-file-system | ||||
| 			`(#$device #$title #$target #$type #$flags #$options | ||||
| 				   #$check?) #:root "/") | ||||
|                        #t)) | ||||
|             (stop #~(lambda args | ||||
|                       ;; Normally there are no processes left at this point, so | ||||
|  | @ -305,7 +285,7 @@ FILE-SYSTEM." | |||
| 
 | ||||
|             ;; We need an additional module. | ||||
|             (modules `(((gnu build file-systems) | ||||
|                         #:select (check-file-system canonicalize-device-spec)) | ||||
|                         #:select (mount-file-system)) | ||||
|                        ,@%default-modules))))))) | ||||
| 
 | ||||
| (define file-system-service-type | ||||
|  |  | |||
|  | @ -30,6 +30,8 @@ | |||
|             configuration-field-name | ||||
|             configuration-missing-field | ||||
|             configuration-field-error | ||||
|             configuration-field-serializer | ||||
|             configuration-field-getter | ||||
|             serialize-configuration | ||||
|             define-configuration | ||||
|             validate-configuration | ||||
|  |  | |||
|  | @ -894,7 +894,7 @@ IPP specifications.") | |||
|                     (if (file-exists? dst) | ||||
|                         (format (current-error-port) "warning: ~a exists\n" dst) | ||||
|                         (symlink src dst)))) | ||||
|                 (find-files (string-append package path)))) | ||||
|                 (find-files (string-append package path) #:stat stat))) | ||||
|              (list #$@paths))) | ||||
|           (list #$@packages)) | ||||
|          #t)))) | ||||
|  |  | |||
|  | @ -17,14 +17,388 @@ | |||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu services kerberos) | ||||
|   #:use-module (gnu packages admin) | ||||
|   #:use-module (gnu services) | ||||
|   #:use-module (gnu services configuration) | ||||
|   #:use-module (gnu system pam) | ||||
|   #:use-module (guix gexp) | ||||
|   #:use-module (guix records) | ||||
|   #:use-module (srfi srfi-1) | ||||
|   #:use-module (srfi srfi-34) | ||||
|   #:use-module (srfi srfi-35) | ||||
|   #:use-module (ice-9 match) | ||||
|   #:export (pam-krb5-configuration | ||||
|             pam-krb5-configuration? | ||||
|             pam-krb5-service-type)) | ||||
|             pam-krb5-service-type | ||||
| 
 | ||||
|             krb5-realm | ||||
|             krb5-realm? | ||||
| 
 | ||||
|             krb5-configuration | ||||
|             krb5-configuration? | ||||
|             krb5-service-type)) | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| (define unset-field (list 'unset-field)) | ||||
| 
 | ||||
| (define (predicate/unset pred) | ||||
|   (lambda (x) (or (eq? x unset-field) (pred x)))) | ||||
| 
 | ||||
| (define string/unset? (predicate/unset string?)) | ||||
| (define boolean/unset? (predicate/unset boolean?)) | ||||
| (define integer/unset? (predicate/unset integer?)) | ||||
| 
 | ||||
| (define (uglify-field-name field-name) | ||||
|   "Return FIELD-NAME with all instances of '-' replaced by '_' and any | ||||
| trailing '?' removed." | ||||
|   (let ((str (symbol->string field-name))) | ||||
|     (string-join (string-split (if (string-suffix? "?" str) | ||||
|                                    (substring str 0 (1- (string-length str))) | ||||
|                                    str) | ||||
|                                #\-) | ||||
|                  "_"))) | ||||
| 
 | ||||
| (define (serialize-field* field-name val) | ||||
|   (format #t "~a = ~a\n" (uglify-field-name field-name) val)) | ||||
| 
 | ||||
| (define (serialize-string/unset field-name val) | ||||
|   (unless (eq? val unset-field) | ||||
|       (serialize-field* field-name val))) | ||||
| 
 | ||||
| (define (serialize-integer/unset field-name val) | ||||
|   (unless (eq? val unset-field) | ||||
|       (serialize-field* field-name val))) | ||||
| 
 | ||||
| (define (serialize-boolean/unset field-name val) | ||||
|   (unless (eq? val unset-field) | ||||
|       (serialize-field* field-name | ||||
|                         (if val "true" "false")))) | ||||
| 
 | ||||
| 
 | ||||
| ;; An end-point is an address such as "192.168.0.1" | ||||
| ;; or an address port pair ("foobar.example.com" . 109) | ||||
| (define (end-point? val) | ||||
|   (match val | ||||
|     ((? string?) #t) | ||||
|     (((? string?) . (? integer?)) #t) | ||||
|     (_ #f))) | ||||
| 
 | ||||
| (define (serialize-end-point field-name val) | ||||
|   (serialize-field* field-name | ||||
|                     (match val | ||||
|                       ((host . port) | ||||
|                        ;; The [] are needed in the case of IPv6 addresses | ||||
|                        (format #f "[~a]:~a" host port)) | ||||
|                       (host | ||||
|                        (format #f "~a" host))))) | ||||
| 
 | ||||
| (define (serialize-space-separated-string-list/unset field-name val) | ||||
|   (unless (eq? val unset-field) | ||||
|       (serialize-field* field-name (string-join val " ")))) | ||||
| 
 | ||||
| (define space-separated-string-list/unset? | ||||
|   (predicate/unset space-separated-string-list?)) | ||||
| 
 | ||||
| (define comma-separated-integer-list/unset? | ||||
|   (predicate/unset (lambda (val) | ||||
|                      (and (list? val) | ||||
|                           (and-map (lambda (x) (integer? x)) | ||||
|                                    val))))) | ||||
| 
 | ||||
| (define (serialize-comma-separated-integer-list/unset field-name val) | ||||
|   (unless (eq? val unset-field) | ||||
|       (serialize-field* field-name | ||||
|                        (string-drop ; Drop the leading comma | ||||
|                         (fold | ||||
|                          (lambda (i prev) | ||||
|                            (string-append prev "," (number->string i))) | ||||
|                          "" val) 1)))) | ||||
| 
 | ||||
| (define file-name? (predicate/unset | ||||
|                     (lambda (val) | ||||
|                       (string-prefix? "/" val)))) | ||||
| 
 | ||||
| (define (serialize-file-name field-name val) | ||||
|   (unless (eq? val unset-field) | ||||
|     (serialize-string field-name val))) | ||||
| 
 | ||||
| (define (non-negative-integer? val) | ||||
|   (and (exact-integer? val) (not (negative? val)))) | ||||
| 
 | ||||
| (define (serialize-non-negative-integer/unset field-name val) | ||||
|   (unless (eq? val unset-field) | ||||
|     (serialize-field* field-name val))) | ||||
| 
 | ||||
| (define (free-form-fields? val) | ||||
|   (match val | ||||
|     (() #t) | ||||
|     ((((? symbol?) . (? string)) . val) (free-form-fields? val)) | ||||
|     (_ #f))) | ||||
| 
 | ||||
| (define (serialize-free-form-fields field-name val) | ||||
|   (for-each (match-lambda ((k . v) (serialize-field* k v))) val)) | ||||
| 
 | ||||
| (define non-negative-integer/unset? (predicate/unset non-negative-integer?)) | ||||
| 
 | ||||
| (define (realm-list? val) | ||||
|   (and (list? val) | ||||
|        (and-map (lambda (x) (krb5-realm? x)) val))) | ||||
| 
 | ||||
| (define (serialize-realm-list field-name val) | ||||
|   (format #t "\n[~a]\n" field-name) | ||||
|   (for-each (lambda (realm) | ||||
|               (format #t "\n~a = {\n" (krb5-realm-name realm)) | ||||
|               (for-each (lambda (field) | ||||
|                           (unless (eq? 'name (configuration-field-name field)) | ||||
|                             ((configuration-field-serializer field) | ||||
|                              (configuration-field-name field) | ||||
|                              ((configuration-field-getter field) | ||||
|                               realm)))) krb5-realm-fields) | ||||
| 
 | ||||
|               (format #t "}\n")) val)) | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ;; For a more detailed explanation of these fields see man 5 krb5.conf | ||||
| (define-configuration krb5-realm | ||||
|   (name | ||||
|    (string/unset unset-field) | ||||
|    "The name of the realm.") | ||||
| 
 | ||||
|   (kdc | ||||
|    (end-point unset-field) | ||||
|    "The host and port on which the realm's Key Distribution Server listens.") | ||||
| 
 | ||||
|   (admin-server | ||||
|    (string/unset unset-field) | ||||
|    "The Host running the administration server for the realm.") | ||||
| 
 | ||||
|   (master-kdc | ||||
|    (string/unset unset-field) | ||||
|    "If an attempt to get credentials fails because of an invalid password,  | ||||
| the client software will attempt to contact the master KDC.") | ||||
| 
 | ||||
|   (kpasswd-server | ||||
|    (string/unset unset-field) | ||||
|    "The server where password changes are performed.") | ||||
| 
 | ||||
|   (auth-to-local | ||||
|    (free-form-fields '()) | ||||
|    "Rules to map between principals and local users.") | ||||
| 
 | ||||
|   (auth-to-local-names | ||||
|    (free-form-fields '()) | ||||
|    "Explicit mappings between principal names and local user names.") | ||||
| 
 | ||||
|   (http-anchors | ||||
|    (free-form-fields '()) | ||||
|    "Useful only when http proxy is used to access KDC or KPASSWD.") | ||||
| 
 | ||||
|   ;; The following are useful only for working with V4 services | ||||
|   (default-domain | ||||
|     (string/unset unset-field) | ||||
|     "The domain used to expand host names when translating Kerberos 4 service | ||||
| principals to Kerberos 5 principals") | ||||
| 
 | ||||
|   (v4-instance-convert | ||||
|    (free-form-fields '()) | ||||
|    "Exceptions to the default-domain mapping rule.") | ||||
| 
 | ||||
|   (v4-realm | ||||
|    (string/unset unset-field) | ||||
|    "Used  when the V4 realm name and the V5 realm name are not the same, but | ||||
| still share the same principal names and passwords")) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ;; For a more detailed explanation of these fields see man 5 krb5.conf | ||||
| (define-configuration krb5-configuration | ||||
|   (allow-weak-crypto? | ||||
|    (boolean/unset unset-field) | ||||
|    "If true, permits access to services which only offer weak encryption.") | ||||
| 
 | ||||
|   (ap-req-checksum-type | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "The type of the AP-REQ checksum.") | ||||
| 
 | ||||
|   (canonicalize? | ||||
|    (boolean/unset unset-field) | ||||
|    "Should principals in initial ticket requests be canonicalized?") | ||||
| 
 | ||||
|   (ccache-type | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "The format of the credential cache type.") | ||||
| 
 | ||||
|   (clockskew | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "Maximum allowable clock skew in seconds (default 300).") | ||||
| 
 | ||||
|   (default-ccache-name | ||||
|     (file-name unset-field) | ||||
|     "The name of the default credential cache.") | ||||
| 
 | ||||
|   (default-client-keytab-name | ||||
|     (file-name unset-field) | ||||
|     "The name of the default keytab for client credentials.") | ||||
| 
 | ||||
|   (default-keytab-name | ||||
|     (file-name unset-field) | ||||
|     "The name of the default keytab file.") | ||||
| 
 | ||||
|   (default-realm | ||||
|     (string/unset unset-field) | ||||
|     "The realm to be accessed if not explicitly specified by clients.") | ||||
| 
 | ||||
|   (default-tgs-enctypes | ||||
|     (free-form-fields '()) | ||||
|     "Session key encryption types when making TGS-REQ requests.") | ||||
| 
 | ||||
|   (default-tkt-enctypes | ||||
|     (free-form-fields '()) | ||||
|     "Session key encryption types when making AS-REQ requests.") | ||||
| 
 | ||||
|   (dns-canonicalize-hostname? | ||||
|    (boolean/unset  unset-field) | ||||
|    "Whether name lookups will be used to canonicalize host names for use in  | ||||
| service principal names.") | ||||
| 
 | ||||
|   (dns-lookup-kdc? | ||||
|    (boolean/unset unset-field) | ||||
|  "Should DNS SRV records should be used to locate the KDCs and other servers  | ||||
| not appearing in the realm specification") | ||||
| 
 | ||||
|   (err-fmt | ||||
|    (string/unset unset-field) | ||||
|    "Custom error message formatting. If not #f error messages will be formatted  | ||||
| by substituting a normal error message for %M and an error code for %C in the  | ||||
| value.") | ||||
| 
 | ||||
|   (forwardable? | ||||
|    (boolean/unset unset-field) | ||||
|    "Should initial tickets be forwardable by default?") | ||||
| 
 | ||||
|   (ignore-acceptor-hostname? | ||||
|    (boolean/unset unset-field) | ||||
|    "When accepting GSSAPI or krb5 security contexts for host-based service  | ||||
| principals, ignore any hostname passed by the calling application, and allow  | ||||
| clients to authenticate to any service principal in the keytab matching the  | ||||
| service name and realm name.") | ||||
| 
 | ||||
|   (k5login-authoritative? | ||||
|    (boolean/unset unset-field) | ||||
|    "If this flag is true, principals must be listed in a local user's k5login | ||||
| file to be granted login access, if a ~/.k5login file exists.") | ||||
| 
 | ||||
|   (k5login-directory | ||||
|    (string/unset unset-field) | ||||
|    "If not #f, the library will look for a local user's @file{k5login} file  | ||||
| within the named directory (instead of the user's home directory), with a  | ||||
| file name corresponding to the local user name.") | ||||
| 
 | ||||
|   (kcm-mach-service | ||||
|    (string/unset unset-field) | ||||
|    "The name of the bootstrap service used to contact the KCM daemon for the  | ||||
| KCM credential cache type.") | ||||
| 
 | ||||
|   (kcm-socket | ||||
|    (file-name unset-field) | ||||
|  "Path to the Unix domain socket used to access the KCM daemon for the KCM  | ||||
| credential cache type.") | ||||
| 
 | ||||
|   (kdc-default-options | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "Default KDC options (logored for multiple values) when requesting initial  | ||||
| tickets.") | ||||
| 
 | ||||
|   (kdc-timesync | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "Attempt to compensate for clock skew between the KDC and client.") | ||||
| 
 | ||||
|   (kdc-req-checksum-type | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "The type of checksum to use for the KDC requests. Relevant only for DES  | ||||
| keys") | ||||
| 
 | ||||
|   (noaddresses? | ||||
|    (boolean/unset unset-field) | ||||
|    "If true, initial ticket requests will not be made with address restrictions. | ||||
| This enables their use across NATs.") | ||||
| 
 | ||||
|   (permitted-enctypes | ||||
|    (space-separated-string-list/unset unset-field) | ||||
|    "All encryption types that are permitted for use in session key encryption.") | ||||
| 
 | ||||
|   (plugin-base-dir | ||||
|    (file-name unset-field) | ||||
|    "The directory where krb5 plugins are located.") | ||||
| 
 | ||||
|   (preferred-preauth-types | ||||
|    (comma-separated-integer-list/unset unset-field) | ||||
|    "The preferred pre-authentication types which the client will attempt before  | ||||
| others.") | ||||
| 
 | ||||
|   (proxiable? | ||||
|    (boolean/unset unset-field) | ||||
|    "Should initial tickets be proxiable by default?") | ||||
| 
 | ||||
|   (rdns? | ||||
|    (boolean/unset unset-field) | ||||
|    "Should reverse DNS lookup be used in addition to forward name lookup to  | ||||
| canonicalize host names for use in service principal names.") | ||||
| 
 | ||||
|   (realm-try-domains | ||||
|    (integer/unset unset-field) | ||||
|    "Should a host's domain components should be used to determine the Kerberos  | ||||
| realm of the host.") | ||||
| 
 | ||||
|   (renew-lifetime | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "The default renewable lifetime for initial ticket requests.") | ||||
| 
 | ||||
|   (safe-checksum-type | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "The type of checksum to use for the KRB-SAFE requests.") | ||||
| 
 | ||||
|   (ticket-lifetime | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "The default lifetime for initial ticket requests.") | ||||
| 
 | ||||
|   (udp-preference-limit | ||||
|    (non-negative-integer/unset unset-field) | ||||
|    "When sending messages to the KDC, the library will try using TCP | ||||
| before UDP if the size of the message greater than this limit.") | ||||
| 
 | ||||
|   (verify-ap-rereq-nofail? | ||||
|    (boolean/unset unset-field) | ||||
|  "If true, then attempts to verify initial credentials will fail if the client | ||||
| machine does not have a keytab.") | ||||
| 
 | ||||
|   (realms | ||||
|    (realm-list '()) | ||||
|    "The list of realms which clients may access.")) | ||||
| 
 | ||||
| 
 | ||||
| (define (krb5-configuration-file config) | ||||
|   "Create a Kerberos 5 configuration file based on CONFIG" | ||||
|   (mixed-text-file "krb5.conf" | ||||
|                    "[libdefaults]\n\n" | ||||
|                    (with-output-to-string | ||||
|                      (lambda () | ||||
|                        (serialize-configuration config | ||||
|                                                 krb5-configuration-fields))))) | ||||
| 
 | ||||
| (define (krb5-etc-service config) | ||||
|   (list `("krb5.conf" ,(krb5-configuration-file config)))) | ||||
| 
 | ||||
| 
 | ||||
| (define krb5-service-type | ||||
|   (service-type (name 'krb5) | ||||
|                 (extensions | ||||
|                  (list (service-extension etc-service-type | ||||
|                                           krb5-etc-service))))) | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| (define-record-type* <pam-krb5-configuration> | ||||
|   pam-krb5-configuration  make-pam-krb5-configuration | ||||
|  |  | |||
|  | @ -24,6 +24,7 @@ | |||
|   #:use-module (ssh popen) | ||||
|   #:use-module (ssh dist) | ||||
|   #:use-module (ssh dist node) | ||||
|   #:use-module (ssh version) | ||||
|   #:use-module (guix config) | ||||
|   #:use-module (guix records) | ||||
|   #:use-module (guix store) | ||||
|  | @ -176,31 +177,35 @@ private key from '~a': ~a") | |||
|                                ;; exchanging full archives. | ||||
|                                #:compression "zlib" | ||||
|                                #:compression-level 3))) | ||||
|     (connect! session) | ||||
| 
 | ||||
|     ;; Authenticate the server.  XXX: Guile-SSH 0.10.1 doesn't know about | ||||
|     ;; ed25519 keys and 'get-key-type' returns #f in that case. | ||||
|     (let-values (((server)   (get-server-public-key session)) | ||||
|                  ((type key) (host-key->type+key | ||||
|                               (build-machine-host-key machine)))) | ||||
|       (unless (and (or (not (get-key-type server)) | ||||
|                        (eq? (get-key-type server) type)) | ||||
|                    (string=? (public-key->string server) key)) | ||||
|         ;; Key mismatch: something's wrong.  XXX: It could be that the server | ||||
|         ;; provided its Ed25519 key when we where expecting its RSA key. | ||||
|         (leave (_ "server at '~a' returned host key '~a' of type '~a' \ | ||||
|     (match (connect! session) | ||||
|       ('ok | ||||
|        ;; Authenticate the server.  XXX: Guile-SSH 0.10.1 doesn't know about | ||||
|        ;; ed25519 keys and 'get-key-type' returns #f in that case. | ||||
|        (let-values (((server)   (get-server-public-key session)) | ||||
|                     ((type key) (host-key->type+key | ||||
|                                  (build-machine-host-key machine)))) | ||||
|          (unless (and (or (not (get-key-type server)) | ||||
|                           (eq? (get-key-type server) type)) | ||||
|                       (string=? (public-key->string server) key)) | ||||
|            ;; Key mismatch: something's wrong.  XXX: It could be that the server | ||||
|            ;; provided its Ed25519 key when we where expecting its RSA key. | ||||
|            (leave (_ "server at '~a' returned host key '~a' of type '~a' \ | ||||
| instead of '~a' of type '~a'~%") | ||||
|                (build-machine-name machine) | ||||
|                (public-key->string server) (get-key-type server) | ||||
|                key type))) | ||||
|                   (build-machine-name machine) | ||||
|                   (public-key->string server) (get-key-type server) | ||||
|                   key type))) | ||||
| 
 | ||||
|     (let ((auth (userauth-public-key! session private))) | ||||
|       (unless (eq? 'success auth) | ||||
|         (disconnect! session) | ||||
|         (leave (_ "SSH public key authentication failed for '~a': ~a~%") | ||||
|                (build-machine-name machine) (get-error session)))) | ||||
|        (let ((auth (userauth-public-key! session private))) | ||||
|          (unless (eq? 'success auth) | ||||
|            (disconnect! session) | ||||
|            (leave (_ "SSH public key authentication failed for '~a': ~a~%") | ||||
|                   (build-machine-name machine) (get-error session)))) | ||||
| 
 | ||||
|     session)) | ||||
|        session) | ||||
|       (x | ||||
|        ;; Connection failed or timeout expired. | ||||
|        (leave (_ "failed to connect to '~a': ~a~%") | ||||
|               (build-machine-name machine) (get-error session)))))) | ||||
| 
 | ||||
| (define* (connect-to-remote-daemon session | ||||
|                                    #:optional | ||||
|  | @ -429,10 +434,8 @@ be read." | |||
| (define (send-files files remote) | ||||
|   "Send the subset of FILES that's missing to REMOTE, a remote store." | ||||
|   (with-store store | ||||
|     ;; Compute the subset of FILES missing on SESSION, and send them in | ||||
|     ;; topologically sorted order so that they can actually be imported. | ||||
|     (let* ((sorted  (topologically-sorted store files)) | ||||
|            (session (channel-get-session (nix-server-socket remote))) | ||||
|     ;; Compute the subset of FILES missing on SESSION and send them. | ||||
|     (let* ((session (channel-get-session (nix-server-socket remote))) | ||||
|            (node    (make-node session)) | ||||
|            (missing (node-eval node | ||||
|                                `(begin | ||||
|  | @ -441,11 +444,12 @@ be read." | |||
| 
 | ||||
|                                   (with-store store | ||||
|                                     (remove (cut valid-path? store <>) | ||||
|                                             ',sorted))))) | ||||
|                                             ',files))))) | ||||
|            (port    (store-import-channel session))) | ||||
|       (format #t (_ "sending ~a store files to '~a'...~%") | ||||
|               (length missing) (session-get session 'host)) | ||||
| 
 | ||||
|       ;; Send MISSING in topological order. | ||||
|       (export-paths store missing port) | ||||
| 
 | ||||
|       ;; Tell the remote process that we're done.  (In theory the | ||||
|  | @ -489,27 +493,30 @@ be read." | |||
| 
 | ||||
| (define (machine-load machine) | ||||
|   "Return the load of MACHINE, divided by the number of parallel builds | ||||
| allowed on MACHINE." | ||||
| allowed on MACHINE.  Return +∞ if MACHINE is unreachable." | ||||
|   ;; Note: This procedure is costly since it creates a new SSH session. | ||||
|   (let* ((session (open-ssh-session machine)) | ||||
|          (pipe    (open-remote-pipe* session OPEN_READ | ||||
|   (match (false-if-exception (open-ssh-session machine)) | ||||
|     ((? session? session) | ||||
|      (let* ((pipe (open-remote-pipe* session OPEN_READ | ||||
|                                      "cat" "/proc/loadavg")) | ||||
|          (line    (read-line pipe))) | ||||
|     (close-port pipe) | ||||
|             (line (read-line pipe))) | ||||
|        (close-port pipe) | ||||
| 
 | ||||
|     (if (eof-object? line) | ||||
|         +inf.0    ;MACHINE does not respond, so assume it is infinitely loaded | ||||
|         (match (string-tokenize line) | ||||
|           ((one five fifteen . _) | ||||
|            (let* ((raw        (string->number five)) | ||||
|                   (jobs       (build-machine-parallel-builds machine)) | ||||
|                   (normalized (/ raw jobs))) | ||||
|              (format (current-error-port) "load on machine '~a' is ~s\ | ||||
|        (if (eof-object? line) | ||||
|            +inf.0 ;MACHINE does not respond, so assume it is infinitely loaded | ||||
|            (match (string-tokenize line) | ||||
|              ((one five fifteen . _) | ||||
|               (let* ((raw        (string->number five)) | ||||
|                      (jobs       (build-machine-parallel-builds machine)) | ||||
|                      (normalized (/ raw jobs))) | ||||
|                 (format (current-error-port) "load on machine '~a' is ~s\ | ||||
|  (normalized: ~s)~%" | ||||
|                      (build-machine-name machine) raw normalized) | ||||
|              normalized)) | ||||
|           (_ | ||||
|            +inf.0)))))           ;something's fishy about MACHINE, so avoid it | ||||
|                         (build-machine-name machine) raw normalized) | ||||
|                 normalized)) | ||||
|              (_ | ||||
|               +inf.0)))))        ;something's fishy about MACHINE, so avoid it | ||||
|     (_ | ||||
|      +inf.0)))                      ;failed to connect to MACHINE, so avoid it | ||||
| 
 | ||||
| (define (machine-lock-file machine hint) | ||||
|   "Return the name of MACHINE's lock file for HINT." | ||||
|  | @ -635,6 +642,12 @@ allowed on MACHINE." | |||
|   (and=> (passwd:dir (getpw (getuid))) | ||||
|          (cut setenv "HOME" <>)) | ||||
| 
 | ||||
|   ;; We rely on protocol-level compression from libssh to optimize large data | ||||
|   ;; transfers.  Warn if it's missing. | ||||
|   (unless (zlib-support?) | ||||
|     (warning (_ "Guile-SSH lacks zlib support")) | ||||
|     (warning (_ "data transfers will *not* be compressed!"))) | ||||
| 
 | ||||
|   (match args | ||||
|     ((system max-silent-time print-build-trace? build-timeout) | ||||
|      (let ((max-silent-time    (string->number max-silent-time)) | ||||
|  |  | |||
|  | @ -470,7 +470,8 @@ encoding conversion errors." | |||
|            ;; Write a byte stream to USER-PORT. | ||||
|            (let* ((len (read-int p)) | ||||
|                   (m   (modulo len 8))) | ||||
|              (dump-port p user-port len) | ||||
|              (dump-port p user-port len | ||||
|                         #:buffer-size (if (<= len 16384) 16384 65536)) | ||||
|              (unless (zero? m) | ||||
|                ;; Consume padding, as for strings. | ||||
|                (get-bytevector-n p (- 8 m)))) | ||||
|  |  | |||
|  | @ -203,11 +203,11 @@ static void stopWork(bool success = true, const string & msg = "", unsigned int | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| struct TunnelSink : Sink | ||||
| struct TunnelSink : BufferedSink | ||||
| { | ||||
|     Sink & to; | ||||
|     TunnelSink(Sink & to) : to(to) { } | ||||
|     virtual void operator () (const unsigned char * data, size_t len) | ||||
|     TunnelSink(Sink & to) : BufferedSink(64 * 1024), to(to) { } | ||||
|     virtual void write(const unsigned char * data, size_t len) | ||||
|     { | ||||
|         writeInt(STDERR_WRITE, to); | ||||
|         writeString(data, len, to); | ||||
|  | @ -433,6 +433,7 @@ static void performOp(bool trusted, unsigned int clientVersion, | |||
|         startWork(); | ||||
|         TunnelSink sink(to); | ||||
|         store->exportPath(path, sign, sink); | ||||
|         sink.flush(); | ||||
|         stopWork(); | ||||
|         writeInt(1, to); | ||||
|         break; | ||||
|  |  | |||
		Reference in a new issue