Merge branch 'master' into core-updates

This commit is contained in:
Mark H Weaver 2017-06-18 02:36:51 -04:00
commit 9d4385634d
No known key found for this signature in database
GPG key ID: 7CEF29847562C516
106 changed files with 4333 additions and 1190 deletions

View file

@ -42,14 +42,15 @@ Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org>
Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org>
Mathieu Othacehe <m.othacehe@gmail.com>
Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
ng0 <ng0@no-reply.pragmatique.xyz>
ng0 <ng0@no-reply.pragmatique.xyz> <ng0@pragmatique.xyz>
ng0 <ng0@no-reply.pragmatique.xyz> <contact.ng0@cryptolab.net>
ng0 <ng0@no-reply.pragmatique.xyz> <ng0@we.make.ritual.n0.is>
ng0 <ng0@no-reply.pragmatique.xyz> <ngillmann@runbox.com>
ng0 <ng0@no-reply.pragmatique.xyz> <niasterisk@grrlz.net>
ng0 <ng0@no-reply.pragmatique.xyz> <ng@niasterisk.space>
ng0 <ng0@no-reply.pragmatique.xyz> <ng0@libertad.pw>
ng0 <ng0@no-reply.infotropique.org>
ng0 <ng0@no-reply.infotropique.org> <ng0@no-reply.pragmatique.xyz>
ng0 <ng0@no-reply.infotropique.org> <ng0@pragmatique.xyz>
ng0 <ng0@no-reply.infotropique.org> <contact.ng0@cryptolab.net>
ng0 <ng0@no-reply.infotropique.org> <ng0@we.make.ritual.n0.is>
ng0 <ng0@no-reply.infotropique.org> <ngillmann@runbox.com>
ng0 <ng0@no-reply.infotropique.org> <niasterisk@grrlz.net>
ng0 <ng0@no-reply.infotropique.org> <ng@niasterisk.space>
ng0 <ng0@no-reply.infotropique.org> <ng0@libertad.pw>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public01@thebird.nl>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@thebird.nl>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@email>

View file

@ -6,6 +6,7 @@
# Copyright © 2016, 2017 Mark H Weaver <mhw@netris.org>
# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
# Copyright © 2017 Leo Famulari <leo@famulari.name>
# Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
#
# This file is part of GNU Guix.
#
@ -87,6 +88,7 @@ MODULES = \
guix/build-system/waf.scm \
guix/build-system/r.scm \
guix/build-system/ruby.scm \
guix/build-system/texlive.scm \
guix/build-system/trivial.scm \
guix/ftp-client.scm \
guix/http-client.scm \
@ -114,6 +116,7 @@ MODULES = \
guix/build/ocaml-build-system.scm \
guix/build/r-build-system.scm \
guix/build/ruby-build-system.scm \
guix/build/texlive-build-system.scm \
guix/build/waf-build-system.scm \
guix/build/haskell-build-system.scm \
guix/build/store-copy.scm \
@ -142,6 +145,7 @@ MODULES = \
guix/import/cran.scm \
guix/import/hackage.scm \
guix/import/elpa.scm \
guix/import/texlive.scm \
guix/scripts.scm \
guix/scripts/download.scm \
guix/scripts/perform-download.scm \
@ -164,6 +168,7 @@ MODULES = \
guix/scripts/import/nix.scm \
guix/scripts/import/hackage.scm \
guix/scripts/import/elpa.scm \
guix/scripts/import/texlive.scm \
guix/scripts/environment.scm \
guix/scripts/publish.scm \
guix/scripts/edit.scm \
@ -300,6 +305,7 @@ SCM_TESTS = \
tests/hackage.scm \
tests/cran.scm \
tests/elpa.scm \
tests/texlive.scm \
tests/store.scm \
tests/monads.scm \
tests/gexp.scm \

View file

@ -245,7 +245,11 @@ (define package->job
(cond ((member package base-packages)
#f)
((supported-package? package system)
(package-job store (job-name package) package system))
(let ((drv (package-derivation store package system
#:graft? #f)))
(and (substitutable-derivation? drv)
(package-job store (job-name package)
package system))))
(else
#f)))))

View file

@ -21,7 +21,7 @@ Copyright @copyright{} 2015, 2016 Mathieu Lirzin@*
Copyright @copyright{} 2014 Pierre-Antoine Rault@*
Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@*
Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@*
Copyright @copyright{} 2015, 2016 Ricardo Wurmus@*
Copyright @copyright{} 2015, 2016, 2017 Ricardo Wurmus@*
Copyright @copyright{} 2016 Ben Woodcroft@*
Copyright @copyright{} 2016 Chris Marusich@*
Copyright @copyright{} 2016, 2017 Efraim Flashner@*
@ -1441,6 +1441,30 @@ some reason, you want to avoid auto-loading Emacs packages installed
with Guix, you can do so by running Emacs with @code{--no-site-file}
option (@pxref{Init File,,, emacs, The GNU Emacs Manual}).
@subsection The GCC toolchain
@cindex GCC
@cindex ld-wrapper
Guix offers individual compiler packages such as @code{gcc} but if you
are in need of a complete toolchain for compiling and linking source
code what you really want is the @code{gcc-toolchain} package. This
package provides a complete GCC toolchain for C/C++ development,
including GCC itself, the GNU C Library (headers and binaries, plus
debugging symbols in the @code{debug} output), Binutils, and a linker
wrapper.
@cindex attempt to use impure library, error message
The wrapper's purpose is to inspect the @code{-L} and @code{-l} switches
passed to the linker, add corresponding @code{-rpath} arguments, and
invoke the actual linker with this new set of arguments. By default,
the linker wrapper refuses to link to libraries outside the store to
ensure ``purity''. This can be annoying when using the toolchain to
link with local libraries. To allow references to libraries outside the
store you need to define the environment variable
@code{GUIX_LD_WRAPPER_ALLOW_IMPURITIES}.
@c TODO What else?
@c *********************************************************************
@ -1742,18 +1766,17 @@ of packages:
(list guile-2.0 "debug")))
@end example
@findex specification->package+output
@findex specifications->manifest
In this example we have to know which modules define the @code{emacs}
and @code{guile-2.0} variables to provide the right
@code{use-package-modules} line, which can be cumbersome. We can
instead provide regular package specifications and let
@code{specification->package-output} look up the corresponding package
@code{specifications->manifest} look up the corresponding package
objects, like this:
@example
(packages->manifest
(map (compose list specification->package+output)
'("emacs" "guile@@2.0" "guile@@2.0:debug")))
(specifications->manifest
'("emacs" "guile@@2.2" "guile@@2.2:debug"))
@end example
@item --roll-back
@ -1855,7 +1878,7 @@ availability of packages:
@itemx -s @var{regexp}
@cindex searching for packages
List the available packages whose name, synopsis, or description matches
@var{regexp}. Print all the metadata of matching packages in
@var{regexp}, sorted by relevance. Print all the metadata of matching packages in
@code{recutils} format (@pxref{Top, GNU recutils databases,, recutils,
GNU recutils manual}).
@ -1863,12 +1886,18 @@ This allows specific fields to be extracted using the @command{recsel}
command, for instance:
@example
$ guix package -s malloc | recsel -p name,version
$ guix package -s malloc | recsel -p name,version,relevance
name: jemalloc
version: 4.5.0
relevance: 6
name: glibc
version: 2.17
version: 2.25
relevance: 1
name: libgc
version: 7.2alpha6
version: 7.6.0
relevance: 1
@end example
Similarly, to show the name of all the packages available under the
@ -3575,6 +3604,25 @@ are run after installation using the R function
@code{tools::testInstalledPackage}.
@end defvr
@defvr {Scheme Variable} texlive-build-system
This variable is exported by @code{(guix build-system texlive)}. It is
used to build TeX packages in batch mode with a specified engine. The
build system sets the @code{TEXINPUTS} variable to find all TeX source
files in the inputs.
By default it runs @code{luatex} on all files ending on @code{ins}. A
different engine and format can be specified with the
@code{#:tex-format} argument. Different build targets can be specified
with the @code{#:build-targets} argument, which expects a list of file
names. The build system adds only @code{texlive-bin} and
@code{texlive-latex-base} (both from @code{(gnu packages tex}) to the
inputs. Both can be overridden with the arguments @code{#:texlive-bin}
and @code{#:texlive-latex-base}, respectively.
The @code{#:tex-directory} parameter tells the build system where to
install the built files under the texmf tree.
@end defvr
@defvr {Scheme Variable} ruby-build-system
This variable is exported by @code{(guix build-system ruby)}. It
implements the RubyGems build procedure used by Ruby packages, which
@ -5647,6 +5695,38 @@ R package:
guix import cran --archive=bioconductor GenomicRanges
@end example
@item texlive
@cindex TeX Live
@cindex CTAN
Import metadata from @uref{http://www.ctan.org/, CTAN}, the
comprehensive TeX archive network for TeX packages that are part of the
@uref{https://www.tug.org/texlive/, TeX Live distribution}.
Information about the package is obtained through the XML API provided
by CTAN, while the source code is downloaded from the SVN repository of
the Tex Live project. This is done because the CTAN does not keep
versioned archives.
The command command below imports metadata for the @code{fontspec}
TeX package:
@example
guix import texlive fontspec
@end example
When @code{--archive=DIRECTORY} is added, the source code is downloaded
not from the @file{latex} sub-directory of the @file{texmf-dist/source}
tree in the TeX Live SVN repository, but from the specified sibling
directory under the same root.
The command below imports metadata for the @code{ifxetex} package from
CTAN while fetching the sources from the directory
@file{texmf/source/generic}:
@example
guix import texlive --archive=generic ifxetex
@end example
@item nix
Import metadata from a local copy of the source of the
@uref{http://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This
@ -7716,10 +7796,11 @@ Create a disk image that will hold the installed system. To make a
qcow2-formatted disk image, use the @command{qemu-img} command:
@example
qemu-img create -f qcow2 guixsd.img 5G
qemu-img create -f qcow2 guixsd.img 50G
@end example
This will create a 5GB file.
The resulting file will be much smaller than 50 GB (typically less than
1 MB), but it will grow as the virtualized storage device is filled up.
@item
Boot the USB installation image in an VM:
@ -9544,7 +9625,7 @@ services admin)} module provides an interface to GNU@tie{}Rot[t]log, a
log rotation tool (@pxref{Top,,, rottlog, GNU Rot[t]log Manual}).
The example below defines an operating system that provides log rotation
with the default settings.
with the default settings, for commonly encountered log files.
@lisp
(use-modules (guix) (gnu))
@ -9562,6 +9643,9 @@ with the default settings.
This is the type of the Rottlog service, whose value is a
@code{rottlog-configuration} object.
Other services can extend this one with new @code{log-rotation} objects
(see below), thereby augmenting the set of files to be rotated.
This service type can define mcron jobs (@pxref{Scheduled Job
Execution}) to run the rottlog service.
@end defvr
@ -9577,23 +9661,8 @@ The Rottlog package to use.
The Rottlog configuration file to use (@pxref{Mandatory RC Variables,,,
rottlog, GNU Rot[t]log Manual}).
@item @code{periodic-rotations} (default: @code{`(("weekly" %default-rotations))})
A list of Rottlog period-name/period-config tuples.
For example, taking an example from the Rottlog manual (@pxref{Period
Related File Examples,,, rottlog, GNU Rot[t]log Manual}), a valid tuple
might be:
@example
("daily" ,(plain-file "daily"
"\
/var/log/apache/* @{
storedir apache-archives
rotate 6
notifempty
nocompress
@}"))
@end example
@item @code{rotations} (default: @code{%default-rotations})
A list of @code{log-rotation} objects as defined below.
@item @code{jobs}
This is a list of gexps where each gexp corresponds to an mcron job
@ -9601,9 +9670,44 @@ specification (@pxref{Scheduled Job Execution}).
@end table
@end deftp
@deftp {Data Type} log-rotation
Data type representing the rotation of a group of log files.
Taking an example from the Rottlog manual (@pxref{Period Related File
Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be
defined like this:
@example
(log-rotation
(frequency 'daily)
(files '("/var/log/apache/*"))
(options '("storedir apache-archives"
"rotate 6"
"notifempty"
"nocompress")))
@end example
The list of fields is as follows:
@table @asis
@item @code{frequency} (default: @code{'weekly})
The log rotation frequency, a symbol.
@item @code{files}
The list of files or file glob patterns to rotate.
@item @code{options} (default: @code{'()})
The list of rottlog options for this rotation (@pxref{Configuration
parameters,,, rottlog, GNU Rot[t]lg Manual}).
@item @code{post-rotate} (default: @code{#f})
Either @code{#f} or a gexp to execute once the rotation has completed.
@end table
@end deftp
@defvr {Scheme Variable} %default-rotations
Specifies weekly rotation of @var{%rotated-files} and
@code{"/var/log/shepherd.log"}.
a couple of other files.
@end defvr
@defvr {Scheme Variable} %rotated-files

View file

@ -419,6 +419,10 @@ (define (ENOENT-safe proc)
#f)
((= ENOMEDIUM errno) ;for removable media
#f)
((= EIO errno) ;unreadable hardware like audio CDs
(format (current-error-port)
"warning: failed to read from device '~a'~%" device)
#f)
(else
(apply throw args))))))))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -25,6 +25,7 @@ (define-module (gnu build marionette)
#:export (marionette?
make-marionette
marionette-eval
wait-for-file
marionette-control
marionette-screen-text
wait-for-screen-text
@ -164,6 +165,20 @@ (define (marionette-eval exp marionette)
(newline repl)
(read repl))))
(define* (wait-for-file file marionette #:key (timeout 10))
"Wait until FILE exists in MARIONETTE; 'read' its content and return it. If
FILE has not shown up after TIMEOUT seconds, raise an error."
(marionette-eval
`(let loop ((i ,timeout))
(cond ((file-exists? ,file)
(call-with-input-file ,file read))
((> i 0)
(sleep 1)
(loop (- i 1)))
(else
(error "file didn't show up" ,file))))
marionette))
(define (marionette-control command marionette)
"Run COMMAND in the QEMU monitor of MARIONETTE. COMMAND is a string such as
\"sendkey ctrl-alt-f1\" or \"screendump foo.ppm\" (info \"(qemu-doc)

View file

@ -548,6 +548,7 @@ dist_patch_DATA = \
%D%/packages/patches/cpufrequtils-fix-aclocal.patch \
%D%/packages/patches/cracklib-CVE-2016-6318.patch \
%D%/packages/patches/cracklib-fix-buffer-overflow.patch \
%D%/packages/patches/crawl-upgrade-saves.patch \
%D%/packages/patches/crda-optional-gcrypt.patch \
%D%/packages/patches/crossmap-allow-system-pysam.patch \
%D%/packages/patches/csound-header-ordering.patch \
@ -600,6 +601,7 @@ dist_patch_DATA = \
%D%/packages/patches/gcc-cross-environment-variables.patch \
%D%/packages/patches/gcc-libvtv-runpath.patch \
%D%/packages/patches/gcc-strmov-store-file-names.patch \
%D%/packages/patches/gcc-4.6-gnu-inline.patch \
%D%/packages/patches/gcc-4.9.3-mingw-gthr-default.patch \
%D%/packages/patches/gcc-5.0-libvtv-runpath.patch \
%D%/packages/patches/gcc-5-source-date-epoch-1.patch \
@ -647,8 +649,9 @@ dist_patch_DATA = \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-relocatable.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
%D%/packages/patches/guile-ssh-rexec-bug.patch \
gnu/packages/patches/guile-ssh-channel-finalization.patch \
%D%/packages/patches/guile-ssh-double-free.patch \
%D%/packages/patches/guile-ssh-rexec-bug.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
%D%/packages/patches/gtk2-theme-paths.patch \
@ -721,7 +724,6 @@ dist_patch_DATA = \
%D%/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch \
%D%/packages/patches/libevent-2.1-dns-tests.patch \
%D%/packages/patches/libevent-2.1-skip-failing-test.patch \
%D%/packages/patches/libextractor-ffmpeg-3.patch \
%D%/packages/patches/libgit2-0.25.1-mtime-0.patch \
%D%/packages/patches/libgdata-fix-tests.patch \
%D%/packages/patches/libgdata-glib-duplicate-tests.patch \
@ -736,6 +738,7 @@ dist_patch_DATA = \
%D%/packages/patches/libmad-armv7-thumb-pt2.patch \
%D%/packages/patches/libmad-frame-length.patch \
%D%/packages/patches/libmad-mips-newgcc.patch \
%D%/packages/patches/libmwaw-CVE-2017-9433.patch \
%D%/packages/patches/libsndfile-armhf-type-checks.patch \
%D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \
%D%/packages/patches/libsndfile-CVE-2017-8362.patch \
@ -828,7 +831,6 @@ dist_patch_DATA = \
%D%/packages/patches/ngircd-handle-zombies.patch \
%D%/packages/patches/ninja-zero-mtime.patch \
%D%/packages/patches/node-9077.patch \
%D%/packages/patches/nss-disable-long-b64-tests.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \
%D%/packages/patches/nss-pkgconfig.patch \
%D%/packages/patches/ntfs-3g-CVE-2017-0358.patch \
@ -852,6 +854,7 @@ dist_patch_DATA = \
%D%/packages/patches/openssl-1.1.0-c-rehash-in.patch \
%D%/packages/patches/openssl-c-rehash-in.patch \
%D%/packages/patches/orpheus-cast-errors-and-includes.patch \
%D%/packages/patches/osip-CVE-2017-7853.patch \
%D%/packages/patches/ots-no-include-missing-file.patch \
%D%/packages/patches/p7zip-CVE-2016-9296.patch \
%D%/packages/patches/p7zip-remove-unused-code.patch \
@ -1058,7 +1061,13 @@ dist_patch_DATA = \
%D%/packages/patches/xinetd-CVE-2013-4342.patch \
%D%/packages/patches/xmodmap-asprintf.patch \
%D%/packages/patches/libyaml-CVE-2014-9130.patch \
%D%/packages/patches/zathura-plugindir-environment-variable.patch
%D%/packages/patches/zathura-plugindir-environment-variable.patch \
%D%/packages/patches/zziplib-CVE-2017-5974.patch \
%D%/packages/patches/zziplib-CVE-2017-5975.patch \
%D%/packages/patches/zziplib-CVE-2017-5976.patch \
%D%/packages/patches/zziplib-CVE-2017-5978.patch \
%D%/packages/patches/zziplib-CVE-2017-5979.patch \
%D%/packages/patches/zziplib-CVE-2017-5981.patch
MISC_DISTRO_FILES = \
%D%/packages/ld-wrapper.in

View file

@ -29,6 +29,7 @@ (define-module (gnu packages)
#:use-module ((guix build utils)
#:select ((package-name->name+version
. hyphen-separated-name->name+version)))
#:autoload (guix profiles) (packages->manifest)
#:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
@ -53,7 +54,8 @@ (define-module (gnu packages)
find-newest-available-packages
specification->package
specification->package+output))
specification->package+output
specifications->manifest))
;;; Commentary:
;;;
@ -278,3 +280,11 @@ (define* (specification->package+output spec #:optional (output "out"))
(leave (G_ "package `~a' lacks output `~a'~%")
(package-full-name package)
sub-drv))))))
(define (specifications->manifest specs)
"Given SPECS, a list of specifications such as \"emacs@25.2\" or
\"guile:debug\", return a profile manifest."
;; This procedure exists mostly so users of 'guix package -m' don't have to
;; fiddle with multiple-value returns.
(packages->manifest
(map (compose list specification->package+output) specs)))

View file

@ -50,7 +50,7 @@ (define-public abiword
(origin
(method url-fetch)
(uri
(string-append "http://abisource.org/downloads/" name "/" version
(string-append "https://www.abisource.com/downloads/" name "/" version
"/source/" name "-" version ".tar.gz"))
(sha256
(base32 "08imry821g81apdwym3gcs4nss0l9j5blqk31j5rv602zmcd9gxg"))
@ -111,7 +111,7 @@ (define-public abiword
("glib:bin" ,glib "bin")
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(home-page "http://abisource.org/")
(home-page "https://www.abisource.com/")
(synopsis "Word processing program")
;; HACKERS: The comment below is here so that it shows up early in the

View file

@ -1359,14 +1359,14 @@ (define-public graphios
(define-public ansible
(package
(name "ansible")
(version "2.3.0.0")
(version "2.3.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ansible" version))
(sha256
(base32
"0n54h8g6a6hcp41sasvjqa4yz1pwd8mshbwlcghj0sjnrl3kk7r9"))))
"1xdr82fy8gahxh3586wm5k1bxksys7yl1f2n24shrk8gf99qyjyd"))))
(build-system python-build-system)
(native-inputs
`(("python2-pycrypto" ,python2-pycrypto)
@ -1582,14 +1582,14 @@ (define-public audit
(define-public nmap
(package
(name "nmap")
(version "7.40")
(version "7.50")
(source (origin
(method url-fetch)
(uri (string-append "https://nmap.org/dist/nmap-" version
".tar.bz2"))
(sha256
(base32
"121i9mgyc28ra2825akd0ix5qyssv4xc2qlx296mam6hzxgnc54y"))
"1ckl2qxqxkrfa2qxdrqyaa4k1hhj273aqckrc46fijdz0a76mag9"))
(modules '((guix build utils)))
(snippet
'(map delete-file-recursively
@ -1701,7 +1701,7 @@ (define-public dstat
(define-public thefuck
(package
(name "thefuck")
(version "3.16")
(version "3.18")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/nvbn/thefuck/archive/"
@ -1709,7 +1709,7 @@ (define-public thefuck
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0jrhfxmj2asx4jdix9ks3fpl364ph8w9prhwpk4488aj1a0q4rak"))
"1xsvkqh89rgxq5w03mnlcfkn9y39nfwhb2pjabjspcc2mi2mq5y6"))
(patches (search-patches "thefuck-test-environ.patch"))))
(build-system python-build-system)
(arguments

View file

@ -117,7 +117,7 @@ (define-public gnuastro
(define-public stellarium
(package
(name "stellarium")
(version "0.15.1")
(version "0.15.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/stellarium/"
@ -125,7 +125,7 @@ (define-public stellarium
version "/stellarium-" version ".tar.gz"))
(sha256
(base32
"04avigz8i8mi2x6x71bqr9np85n1p9qnvbj2hxr947f1jv22zr8g"))))
"19nxj482g1hh9qicgskpcgy61pri254jgxnkd10icxbnza4c0hv9"))))
(build-system cmake-build-system)
(inputs
`(("qtbase" ,qtbase)
@ -141,6 +141,14 @@ (define-public stellarium
(arguments
`(#:test-target "tests"
#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-version-check
(lambda _
;; Previously-deprecated cmake variable vanished in
;; Qt 5.9.
;; See <https://bugreports.qt.io/browse/QTBUG-60936>.
(substitute* "CMakeLists.txt"
(("Qt5Core_VERSION_STRING") "Qt5Core_VERSION"))
#t))
(add-before 'check 'set-offscreen-display
(lambda _
;; make Qt render "offscreen", required for tests

View file

@ -118,7 +118,7 @@ (define-public duplicity
(define-public par2cmdline
(package
(name "par2cmdline")
(version "0.7.1")
(version "0.7.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/Parchive/par2cmdline/archive/v"
@ -126,7 +126,7 @@ (define-public par2cmdline
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0b2m90jmxm37zpvwcmhshdznnh3l5g5ahdx459a9ckgsxy77jkl9"))))
"0rsrca7903g08zrifv4102gkxrhmzvgwd1sb6vw9pa00qhzsfkzs"))))
(native-inputs
`(("automake" ,automake)
("autoconf" ,autoconf)))

View file

@ -97,7 +97,8 @@ (define-module (gnu packages bioinformatics)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages zip)
#:use-module (srfi srfi-1))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
(define-public r-ape
(package
@ -2094,7 +2095,7 @@ (define-public deeptools
(define-public diamond
(package
(name "diamond")
(version "0.9.6")
(version "0.9.8")
(source (origin
(method url-fetch)
(uri (string-append
@ -2103,7 +2104,7 @@ (define-public diamond
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1y8a10b695pvgn7kk2s87jdwbdf7iszpnr6139pw8ina1ajs4w8y"))))
"04f501vj3i95i2b4n60831k00ljalifrq33419bbz0y3sjlmcnj3"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no "check" target
@ -2718,19 +2719,26 @@ (define-public gemma
("zlib" ,zlib)))
(build-system gnu-build-system)
(arguments
`(#:make-flags '("FORCE_DYNAMIC=1") ; use shared libs
`(#:make-flags
'(,@(if (any (cute string-prefix? <> (or (%current-system)
(%current-target-system)))
'("x86_64" "mips64el" "aarch64"))
'("FORCE_DYNAMIC=1") ; use shared libs
'("FORCE_DYNAMIC=1" "FORCE_32BIT=1")))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'bin-mkdir
(lambda _
(mkdir-p "bin")))
(lambda _
(mkdir-p "bin")
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(install-file "bin/gemma"
(string-append
out "/bin"))))))
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(install-file "bin/gemma"
(string-append
out "/bin")))
#t)))
#:tests? #f)) ; no tests included yet
(home-page "https://github.com/xiangzhou/GEMMA")
(synopsis "Tool for genome-wide efficient mixed model association")
@ -9527,7 +9535,7 @@ (define-public tadbit
"TADbit is a complete Python library to deal with all steps to analyze,
model, and explore 3C-based data. With TADbit the user can map FASTQ files to
obtain raw interaction binned matrices (Hi-C like matrices), normalize and
correct interaction matrices, identify adn compare the so-called
correct interaction matrices, identify and compare the so-called
@dfn{Topologically Associating Domains} (TADs), build 3D models from the
interaction matrices, and finally, extract structural properties from the
models. TADbit is complemented by TADkit for visualizing 3D models.")

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2017 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -22,12 +22,13 @@ (define-module (gnu packages calcurse)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages ncurses))
(define-public calcurse
(package
(name "calcurse")
(version "4.0.0")
(version "4.2.2")
(source
(origin
(method url-fetch)
@ -35,14 +36,21 @@ (define-public calcurse
version ".tar.gz"))
(sha256
(base32
"0d33cpkbhyidvm3xx6iw9ljqdvl6477c2kcwix3bs63nj0ch06v2"))))
"0il0y06akdqgy0f9p40m4x6arn66nh7sr1w1i41bszycs7div266"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)))
(inputs `(("ncurses" ,ncurses)
("tzdata" ,tzdata)))
(arguments
;; The ical tests all want to create a ".calcurse" directory, and may
;; fail with "cannot create directory '.calcurse': File exists" if run
;; concurently.
'(#:parallel-tests? #f))
'(#:parallel-tests? #f
#:phases (modify-phases %standard-phases
(add-before 'check 'check-setup
(lambda* (#:key inputs #:allow-other-keys)
(setenv "TZDIR" ;for test/ical-007.sh
(string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo")))))))
(home-page "http://www.calcurse.org")
(synopsis "Text-based calendar and scheduling")
(description

View file

@ -74,7 +74,7 @@ (define certdata2pem
(define-public nss-certs
(package
(name "nss-certs")
(version "3.30.2")
(version "3.31")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@ -85,7 +85,7 @@ (define-public nss-certs
"nss-" version ".tar.gz")))
(sha256
(base32
"096frzvyp3z257x84rxknscfgsbavzh2a0gyibx7kvmw4vzpfjhd"))))
"0pd643a8ns7q5az5ai3ascrw666i2kbfiyy1c9hlhw9jd8jn21g9"))))
(build-system gnu-build-system)
(outputs '("out"))
(native-inputs

View file

@ -181,13 +181,13 @@ (define-public cmocka
(define-public cppcheck
(package
(name "cppcheck")
(version "1.78")
(version "1.79")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/danmar/cppcheck/archive/"
version ".tar.gz"))
(sha256
(base32 "1dnizw0rfj6faqgnmg8qh6njr9q89j8brhba7qmx2i47vl0qj11i"))
(base32 "1qf7l0hx2k2qsc1rm3gh00bc0hwf9wqkrvrk08141yjj2js2y8lw"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system cmake-build-system)
(home-page "http://cppcheck.sourceforge.net")

View file

@ -5,7 +5,7 @@
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -315,18 +315,18 @@ (define-public eschalot
(define-public tomb
(package
(name "tomb")
(version "2.3")
(version "2.4")
(source (origin
(method url-fetch)
(uri (string-append "https://files.dyne.org/tomb/"
"Tomb-" version ".tar.gz"))
(sha256
(base32
"1j90ab8x4cf10167yw4cs4frz694gb0qwkhgqiz1ly7mnr8ysmby"))))
"1hv1w79as7swqj0n137vz8n8mwvcgwlvd91sdyssz41jarg7f1vr"))))
(build-system gnu-build-system)
(native-inputs `(("sudo" ,sudo))) ;presence needed for 'check' phase
(inputs
`(("zsh" ,zsh)
("sudo" ,sudo)
("gnupg" ,gnupg)
("cryptsetup" ,cryptsetup)
("e2fsprogs" ,e2fsprogs) ;for mkfs.ext4
@ -334,8 +334,7 @@ (define-public tomb
("mlocate" ,mlocate)
("pinentry" ,pinentry)
("qrencode" ,qrencode)
("steghide" ,steghide)
("swish-e" ,swish-e)))
("steghide" ,steghide)))
(arguments
`(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
;; TODO: Build and install gtk and qt trays
@ -358,7 +357,7 @@ (define-public tomb
(error "program not found:" program)))
'("seq" "mkfs.ext4" "pinentry" "sudo"
"gpg" "cryptsetup" "gettext"
"qrencode" "steghide" "swish-e")))))
"qrencode" "steghide")))))
#t)))
(delete 'check)
(add-after 'wrap 'check

View file

@ -40,14 +40,14 @@ (define-module (gnu packages curl)
(define-public curl
(package
(name "curl")
(version "7.54.0")
(version "7.54.1")
(source (origin
(method url-fetch)
(uri (string-append "https://curl.haxx.se/download/curl-"
version ".tar.lzma"))
(sha256
(base32
"02h7qhl8ynp75g1vcaw18ks0gp7nahvvkqck19pb1q0kkw1scsnd"))))
"0vnv3cz0s1l5cjby86hm0x6pgzqijmdm97qa9q5px200956z6yib"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ;1.2 MiB of man3 pages

View file

@ -459,7 +459,8 @@ (define-public postgresql
"1imrjp4vfslxj5rrvphcrrk21zv8kqw3gacmwradixh1d5rv6i8n"))))
(build-system gnu-build-system)
(arguments
`(#:phases
`(#:configure-flags '("--with-uuid=e2fs")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'patch-/bin/sh
(lambda _
@ -467,9 +468,16 @@ (define-public postgresql
(substitute* '("src/bin/pg_ctl/pg_ctl.c"
"src/bin/psql/command.c")
(("/bin/sh") (which "sh")))
#t)))))
#t))
(add-after 'build 'build-contrib
(lambda _
(zero? (system* "make" "-C" "contrib"))))
(add-after 'install 'install-contrib
(lambda _
(zero? (system* "make" "-C" "contrib" "install")))))))
(inputs
`(("readline" ,readline)
("libuuid" ,util-linux)
("zlib" ,zlib)))
(home-page "https://www.postgresql.org/")
(synopsis "Powerful object-relational database system")
@ -1210,6 +1218,7 @@ (define-public kyotocabinet
(arguments
`(#:configure-flags
(list
"--disable-opt" ;"-march=native". XXX this also turns off -O0.
(string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib"))))
(inputs `(("zlib" ,zlib)))
@ -1326,14 +1335,14 @@ (define-public perl-db-file
(define-public lmdb
(package
(name "lmdb")
(version "0.9.18")
(version "0.9.21")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/LMDB/lmdb/archive/"
"LMDB_" version ".tar.gz"))
(sha256
(base32
"12crvzxky8in99ibh22k4ppmkgqs28yy3v7yy944za7fsrqv8dfx"))))
"0ndmj07hkm2ic60z1f4rdscxs7pq45hk9fibjyv5nhfclhsvd1qi"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"

View file

@ -97,14 +97,14 @@ (define-public ssdeep
(define-public liburcu
(package
(name "liburcu")
(version "0.9.3")
(version "0.10.0")
(source (origin
(method url-fetch)
(uri (string-append "https://www.lttng.org/files/urcu/"
"userspace-rcu-" version ".tar.bz2"))
(sha256
(base32
"01j0xp3f0w147yfyzybkjvb7i67i7prsvnkssgvgwry9lvk35khv"))))
"141imnd1s4bcd4wz0wk7sp3fj649kp8whp82gw49h48mlmxqmdbw"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl))) ; for tests

View file

@ -93,7 +93,7 @@ (define-public dnsmasq
(define-public isc-bind
(package
(name "bind")
(version "9.11.1")
(version "9.11.1-P1")
(source (origin
(method url-fetch)
(uri (string-append
@ -101,7 +101,7 @@ (define-public isc-bind
version ".tar.gz"))
(sha256
(base32
"1chhphaa4lmfxj9daqsxph5ng4h3qq51jx21rj2i6an8ynah0192"))))
"0f56bhkxx7bga3f1a4whlm8fh5q8lz7ah97fdayp310vsn43w6vb"))))
(build-system gnu-build-system)
(outputs `("out" "utils"))
(inputs

View file

@ -1740,6 +1740,29 @@ (define-public emacs-fill-column-indicator
column by drawing a thin line down the length of the editing window.")
(license license:gpl3+)))
(define-public emacs-inf-ruby
(package
(name "emacs-inf-ruby")
(version "2.5.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/nonsequitur/inf-ruby/"
"archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0m7323k649ckxql1grsdnf71bjhys7l4qb8wbpphb1mr1q8i4066"))))
(build-system emacs-build-system)
(home-page "https://github.com/nonsequitur/inf-ruby")
(synopsis "Provides a REPL buffer connected to a Ruby subprocess in Emacs")
(description
"@code{inf-ruby} provides a Read Eval Print Loop (REPL) buffer, allowing
for easy interaction with a ruby subprocess. Features include support for
detecting specific uses of Ruby, e.g. when using rails, and using a
appropriate console.")
(license license:gpl3+)))
(define-public emacs-znc
(package
(name "emacs-znc")
@ -2780,7 +2803,7 @@ (define-public emacs-ace-window
(define-public emacs-iedit
(package
(name "emacs-iedit")
(version "0.9.9")
(version "0.9.9.9")
(source
(origin
(method url-fetch)
@ -2789,7 +2812,7 @@ (define-public emacs-iedit
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"00v86zllcsivmiibigbr91qij2zdf1lr9db8z8again1sn63wkdj"))))
"1hv8q6pr85ss9g3158l1fqv3m62vsq8rslsi86jicr2dcxyascr0"))))
(build-system emacs-build-system)
(home-page "http://www.emacswiki.org/emacs/Iedit")
(synopsis "Edit multiple regions in the same way simultaneously")
@ -3097,7 +3120,7 @@ (define-public emacs-js2-mode
(define-public emacs-markdown-mode
(package
(name "emacs-markdown-mode")
(version "2.1")
(version "2.2")
(source (origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/jrblevin"
@ -3106,7 +3129,7 @@ (define-public emacs-markdown-mode
(file-name (string-append "markdown-mode-" version ".el"))
(sha256
(base32
"1faibar32jnjia9202swblw91q6z1g5s4k9xmypwjahfh8yznl6w"))))
"04isd2sdnms9acpmkd6n7b7y7j0x2kank2kry0zwbxs3bwdavgav"))))
(build-system emacs-build-system)
(home-page "http://jblevins.org/projects/markdown-mode/")
(synopsis "Emacs Major mode for Markdown files")
@ -3144,7 +3167,7 @@ (define-public emacs-projectile
(define-public emacs-elfeed
(package
(name "emacs-elfeed")
(version "2.1.0")
(version "2.1.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/skeeto/elfeed/archive/"
@ -3152,7 +3175,7 @@ (define-public emacs-elfeed
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"145glas04zd0s2rmnif46vhyijs4z03v871gfp1dcrwxvvvns8ap"))))
"1wlwc8fbkg6w1c8p856ikc20xm72f51clnzz419p0g8cavy27npw"))))
(build-system emacs-build-system)
(arguments
`(#:phases
@ -3305,7 +3328,7 @@ (define-public emacs-ido-ubiquitous
(define-public emacs-yaml-mode
(package
(name "emacs-yaml-mode")
(version "0.0.12")
(version "0.0.13")
(source (origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/yoshiki"
@ -3313,7 +3336,7 @@ (define-public emacs-yaml-mode
(file-name (string-append "yaml-mode-" version ".el"))
(sha256
(base32
"17wq433ycli0qx4gdhgrmb392qblm6y2dwcyn38j5ja1lasfb0ax"))))
"0im88sk9dqw03x6d6zaspgvg9i0pfpgb8f2zygrmbifh2w4pwmvj"))))
(build-system emacs-build-system)
(home-page "https://github.com/yoshiki/yaml-mode")
(synopsis "Major mode for editing YAML files")
@ -3351,7 +3374,7 @@ (define-public emacs-web-mode
(define-public emacs-helm
(package
(name "emacs-helm")
(version "2.7.0")
(version "2.7.1")
(source (origin
(method url-fetch)
(uri (string-append
@ -3360,7 +3383,7 @@ (define-public emacs-helm
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1scdirpclgq3pi1j2c90gqaaqg1pgvasp98f4jqw8c5xbqcr7jdw"))))
"0pay8pi3fszykgskfbxsp4byad497cgfz4m886mxnkba1naxf6h7"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)

View file

@ -488,6 +488,28 @@ (define-public propeller-gcc
(home-page "https://github.com/totalspectrum/gcc-propeller")
(synopsis "GCC for the Parallax Propeller"))))
(define-public propeller-gcc-4
(let ((xgcc propeller-gcc)
(commit "f1b01001b760d691a91ff1db4830d41bb712557f")
(revision "1"))
(package (inherit xgcc)
(name "propeller-gcc")
(version (string-append "4.6.1-" revision "." (string-take commit 9)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/dbetz/propgcc-gcc.git")
(commit commit)))
(file-name (string-append name "-" commit "-checkout"))
(sha256
(base32
"15mxrhk2v4vqmdkvcqy33ag1wrg9x9q20kx2w33kkw8pkrijknbi"))
(patches
(append
(origin-patches (package-source gcc-4.7))
(search-patches "gcc-4.6-gnu-inline.patch")))))
(home-page "https://github.com/dbetz/propgcc-gcc"))))
;; There is no release, so we take the latest version as referenced from here:
;; https://github.com/dbetz/propeller-gcc
(define-public proplib
@ -654,7 +676,7 @@ (define-public propeller-load
(define-public spin2cpp
(package
(name "spin2cpp")
(version "3.4.0")
(version "3.6.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/totalspectrum/spin2cpp/"
@ -662,7 +684,7 @@ (define-public spin2cpp
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"00i8i0dspd5115ggkv5vx2xqb21l6y38wz0bakgby8n3b4k9xnk0"))))
"0v5vzh69bp1r2byrpz12rql1w24ff2v9msr31596zq6hd6n82lnh"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ;; The tests assume that a micro-controller is connected.

View file

@ -44,6 +44,7 @@ (define-module (gnu packages engineering)
#:use-module (gnu packages curl)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gd)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
@ -57,6 +58,7 @@ (define-module (gnu packages engineering)
#:use-module (gnu packages linux) ;FIXME: for pcb
#:use-module (gnu packages m4)
#:use-module (gnu packages maths)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@ -812,3 +814,32 @@ (define-public volk
for mathematical functions. It also provides an machine-independent
interface to select the best such procedures to use on a given system.")
(license license:gpl3+)))
(define-public minicom
(package
(name "minicom")
(version "2.7.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://alioth.debian.org/frs/download.php/"
"file/4215/" name "-" version ".tar.gz"))
(sha256
(base32
"1wa1l36fa4npd21xa9nz60yrqwkk5cq713fa3p5v0zk7g9mq6bsk"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-lock-dir=/var/lock")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-lock-check
(lambda _
(substitute* "configure"
(("test -d [$]UUCPLOCK") "true"))
#t)))))
(inputs
`(("ncurses" ,ncurses)))
(home-page "https://alioth.debian.org/projects/minicom/")
(synopsis "Serial terminal emulator")
(description "@code{minicom} is a serial terminal emulator.")
(license license:gpl2+)))

View file

@ -2,6 +2,7 @@
;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@ -208,7 +209,19 @@ (define-public enlightenment
"1xvngjdsa0p901vfhrh2qpa50k32hwwhc8bgi16a9b5d9byzfhvn"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-mount-eeze")))
`(#:configure-flags '("--enable-mount-eeze")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'fix-keyboard
(lambda _
(let ((xkeyboard (assoc-ref %build-inputs "xkeyboard-config")))
;; We need to patch the path to 'base.lst' to be able
;; to switch the keyboard layout in E.
(substitute* "src/modules/xkbswitch/e_mod_parse.c"
(("/usr/share/X11/xkb/rules/xorg.lst")
(string-append xkeyboard
"/share/X11/xkb/rules/base.lst")))
#t))))))
(native-inputs
`(("gettext" ,gettext-minimal)
("pkg-config" ,pkg-config)))
@ -220,7 +233,8 @@ (define-public enlightenment
("libxcb" ,libxcb)
("libxext" ,libxext)
("linux-pam" ,linux-pam)
("xcb-util-keysyms" ,xcb-util-keysyms)))
("xcb-util-keysyms" ,xcb-util-keysyms)
("xkeyboard-config" ,xkeyboard-config)))
(home-page "https://www.enlightenment.org/about-enlightenment")
(synopsis "Lightweight desktop environment")
(description

View file

@ -555,28 +555,13 @@ (define-public font-tex-gyre
(version "2.005")
(source
(origin
(method url-fetch)
(method url-fetch/zipbomb)
(uri (string-append "http://www.gust.org.pl/projects/e-foundry/"
"tex-gyre/whole/tg-" version "otf.zip"))
(sha256
(base32
"0kph9l3g7jb2bpmxdbdg5zl56wacmnvdvsdn7is1gc750sqvsn31"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip"))
(font-dir (string-append %output "/share/fonts/opentype")))
(mkdir-p font-dir)
(system* unzip
(assoc-ref %build-inputs "source")
"-d" font-dir)))))
(native-inputs
`(("unzip" ,unzip)))
(build-system font-build-system)
(home-page "http://www.gust.org.pl/projects/e-foundry/tex-gyre/")
(synopsis "Remake of Ghostscript fonts")
(description "The TeX Gyre collection of fonts is the result of an
@ -598,28 +583,7 @@ (define-public font-anonymous-pro
(sha256
(base32
"1asj6lykvxh46czbal7ymy2k861zlcdqpz8x3s5bbpqwlm3mhrl6"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip"))
(font-dir (string-append %output "/share/fonts/truetype"))
(doc-dir (string-append %output "/share/doc/" ,name)))
(system* unzip (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(mkdir-p doc-dir)
(chdir (string-append "AnonymousPro-" ,version ".001"))
(for-each (lambda (ttf)
(install-file ttf font-dir))
(find-files "." "\\.ttf$"))
(for-each (lambda (doc)
(install-file doc doc-dir))
(find-files "." "\\.txt$"))))))
(native-inputs
`(("unzip" ,unzip)))
(build-system font-build-system)
(home-page "http://www.marksimonson.com/fonts/view/anonymous-pro")
(synopsis "Fixed-width fonts designed with coding in mind")
(description "Anonymous Pro is a family of four fixed-width fonts designed
@ -740,27 +704,7 @@ (define-public font-google-roboto
(sha256
(base32
"0spscx08fad7i8qs7icns96iwcapniq8lwwqqvbf7bamvs8qfln4"))))
(native-inputs `(("unzip" ,unzip)))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils)
(srfi srfi-26))
(let ((PATH (string-append (assoc-ref %build-inputs
"unzip")
"/bin"))
(font-dir (string-append %output
"/share/fonts/truetype")))
(setenv "PATH" PATH)
(system* "unzip" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(chdir "roboto-hinted")
(for-each (lambda (ttf)
(install-file ttf font-dir))
(find-files "." "\\.ttf$"))))))
(build-system font-build-system)
(home-page "https://github.com/google/roboto")
(synopsis "The Roboto family of fonts")
(description
@ -782,33 +726,7 @@ (define-public font-un
(sha256
(base32
"13liaz2pmww3aqabm55la5npd08m1skh334ky7qfidxaz5s742iv"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((tar (string-append (assoc-ref %build-inputs "tar")
"/bin/tar"))
(PATH (string-append (assoc-ref %build-inputs "gzip")
"/bin"))
(font-dir (string-append %output "/share/fonts/truetype"))
(doc-dir (string-append %output "/share/doc/" ,name)))
(setenv "PATH" PATH)
(system* tar "xvf" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(mkdir-p doc-dir)
(chdir (string-append "un-fonts"))
(for-each (lambda (ttf)
(install-file ttf font-dir))
(find-files "." "\\.ttf$"))
(for-each (lambda (doc)
(install-file doc doc-dir))
'("COPYING" "README"))))))
(native-inputs
`(("tar" ,tar)
("gzip" ,gzip)))
(build-system font-build-system)
(home-page "https://kldp.net/projects/unfonts/")
(synopsis "Collection of Korean fonts")
(description
@ -876,7 +794,7 @@ (define-public font-hack
(name "font-hack")
(version "2.020")
(source (origin
(method url-fetch)
(method url-fetch/zipbomb)
(uri (string-append
"https://github.com/chrissimpkins/Hack/releases/download/v"
version "/Hack-v"
@ -885,28 +803,7 @@ (define-public font-hack
(sha256
(base32
"16kkmc3psckw1b7k07ccn1gi5ymhlg9djh43nqjzg065g6p6d184"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils)
(srfi srfi-26))
(let ((PATH (string-append (assoc-ref %build-inputs
"unzip")
"/bin"))
(font-dir (string-append %output
"/share/fonts/truetype")))
(setenv "PATH" PATH)
(system* "unzip" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(for-each (lambda (ttf)
(install-file ttf font-dir))
(find-files "." "\\.ttf$"))))))
(native-inputs
`(("source" ,source)
("unzip" ,unzip)))
(build-system font-build-system)
(home-page "https://sourcefoundry.org/hack/")
(synopsis "Typeface designed for source code")
(description
@ -933,26 +830,7 @@ (define-public font-adobe-source-code-pro
(sha256
(base32
"0arhhsf3i7ss39ykn73d1j8k4n8vx7115xph6jwkd970p1cxvr54"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((tar (string-append (assoc-ref %build-inputs "tar")
"/bin/tar"))
(PATH (string-append (assoc-ref %build-inputs "gzip")
"/bin"))
(font-dir (string-append %output "/share/fonts/opentype")))
(setenv "PATH" PATH)
(mkdir-p font-dir)
(zero? (system* tar "-C" font-dir "--strip-components=2"
"-xvf" (assoc-ref %build-inputs "source")
(string-append "source-code-pro-"
,version "/OTF")))))))
(native-inputs
`(("gzip" ,gzip)
("tar" ,tar)))
(build-system font-build-system)
(home-page "https://github.com/adobe-fonts/source-code-pro")
(synopsis
"Monospaced font family for user interface and coding environments")
@ -974,23 +852,7 @@ (define-public font-fira-mono
(sha256
(base32
"1z65x0dw5dq6rs6p9wyfrir50rlh95vgzsxr8jcd40nqazw4jhpi"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip"))
(font-dir (string-append %output "/share/fonts/opentype")))
(mkdir-p font-dir)
(system* unzip
"-j"
(assoc-ref %build-inputs "source")
"*.otf"
"-d" font-dir)))))
(native-inputs
`(("unzip" ,unzip)))
(build-system font-build-system)
(home-page "http://mozilla.github.io/Fira/")
(synopsis "Mozilla's monospace font")
(description "This is the typeface used by Mozilla in Firefox OS.")

View file

@ -129,14 +129,14 @@ (define-public xdg-utils
(define-public libinput
(package
(name "libinput")
(version "1.7.0")
(version "1.7.3")
(source (origin
(method url-fetch)
(uri (string-append "https://freedesktop.org/software/libinput/"
name "-" version ".tar.xz"))
(sha256
(base32
"1a58q60j3456d3qfhkkv319aq2hn4bpimcyhib4yks817pv719hj"))))
"07fbzxddvhjcch43hdxb24sj7ri96zzpcjalvsicmw0i4wnn2v89"))))
(build-system gnu-build-system)
(native-inputs
`(("cairo" ,cairo)
@ -968,3 +968,35 @@ (define-public fprintd
communication bus. This daemon layer above libfprint solves problems related
to applications simultaneously competing for fingerprint readers.")
(license license:gpl2+)))
(define-public desktop-file-utils
(package
(name "desktop-file-utils")
(version "0.23")
(source (origin
(method url-fetch)
(uri (string-append "https://www.freedesktop.org/software/" name
"/releases/" name "-" version ".tar.xz"))
(sha256
(base32
"119kj2w0rrxkhg4f9cf5waa55jz1hj8933vh47vcjipcplql02bc"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("glib" ,glib)))
(home-page "http://www.freedesktop.org/wiki/Software/desktop-file-utils/")
(synopsis "Utilities for working with desktop entries")
(description
"This package contains a few command line utilities for working with
desktop entries:
desktop-file-validate: validates a desktop file and prints warnings/errors
about desktop entry specification violations.
desktop-file-install: installs a desktop file to the applications directory,
optionally munging it a bit in transit.
update-desktop-database: updates the database containing a cache of MIME types
handled by desktop files.")
(license license:gpl2+)))

View file

@ -39,6 +39,7 @@ (define-module (gnu packages game-development)
#:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages fribidi)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnunet)
@ -295,7 +296,7 @@ (define-public python2-xsge
(define-public tiled
(package
(name "tiled")
(version "1.0.0")
(version "1.0.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/bjorn/tiled/archive/v"
@ -303,7 +304,7 @@ (define-public tiled
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0g6ld9znydbdzy4x9h532gf1fg5bnz1mmrpvw4jg2a4lxkrz3rd5"))))
"1y75jmpcf2lv8s3g9v3ghnrwvs2fc4ni7nx74csaylg1g04cwlq7"))))
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase)

View file

@ -1569,7 +1569,7 @@ (define-public raincat
(define-public manaplus
(package
(name "manaplus")
(version "1.7.5.14")
(version "1.7.6.10")
(source (origin
(method url-fetch)
(uri (string-append
@ -1577,7 +1577,7 @@ (define-public manaplus
version "/manaplus-" version ".tar.xz"))
(sha256
(base32
"1b5q79jkdrck5lq8lvhnpq2mly257r8lylp7b8sp8xn4365f86ch"))))
"0l7swvpzq20am4w2rsjpp6fsvbjv07il6wbfy45a7h9zsdihmqhl"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
@ -2238,14 +2238,14 @@ (define-public emulation-station
(define openttd-engine
(package
(name "openttd-engine")
(version "1.7.0")
(version "1.7.1")
(source
(origin (method url-fetch)
(uri (string-append "http://binaries.openttd.org/releases/"
version "/openttd-" version "-source.tar.xz"))
(sha256
(base32
"1q4r5860dpkkw4fpfz3f8mvdd8xjpnwwzr9zybgmgb255bs0g4yz"))
"0dhv5bbbg1dmmq7fi3xss0a9jq2rqgb5sf9fsqzlsjcdm590j6b1"))
(modules '((guix build utils)))
(snippet
;; The DOS port contains proprietary software.
@ -4049,7 +4049,8 @@ (define-public crawl
version "-nodeps.tar.xz")))
(sha256
(base32
"0127dgldij2h4m7cf32yy9ndv4vcz03g4km71lmxrsi5mw7ljgpd"))))
"0127dgldij2h4m7cf32yy9ndv4vcz03g4km71lmxrsi5mw7ljgpd"))
(patches (search-patches "crawl-upgrade-saves.patch"))))
(build-system gnu-build-system)
(inputs
`(("lua51" ,lua-5.1)
@ -4101,6 +4102,9 @@ (define-public crawl
license:zlib
license:asl2.0))))
;; The linter here claims that patch file names should start with the package
;; name. But, in this case, the patches are inherited from crawl with the
;; "crawl-" prefix instead of "crawl-tiles-".
(define-public crawl-tiles
(package
(inherit crawl)

View file

@ -24,6 +24,8 @@
;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -65,6 +67,7 @@ (define-module (gnu packages gnome)
#:use-module (gnu packages databases)
#:use-module (gnu packages djvu)
#:use-module (gnu packages dns)
#:use-module (gnu packages documentation)
#:use-module (gnu packages flex)
#:use-module (gnu packages docbook)
#:use-module (gnu packages enchant)
@ -103,6 +106,7 @@ (define-module (gnu packages gnome)
#:use-module (gnu packages python)
#:use-module (gnu packages rdesktop)
#:use-module (gnu packages scanner)
#:use-module (gnu packages selinux)
#:use-module (gnu packages ssh)
#:use-module (gnu packages xml)
#:use-module (gnu packages gl)
@ -735,38 +739,6 @@ (define-public icon-naming-utils
GNOME and KDE desktops to the icon names proposed in the specification.")
(license license:lgpl2.1+)))
(define-public desktop-file-utils
(package
(name "desktop-file-utils")
(version "0.23")
(source (origin
(method url-fetch)
(uri (string-append "https://www.freedesktop.org/software/" name
"/releases/" name "-" version ".tar.xz"))
(sha256
(base32
"119kj2w0rrxkhg4f9cf5waa55jz1hj8933vh47vcjipcplql02bc"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("glib" ,glib)))
(home-page "http://www.freedesktop.org/wiki/Software/desktop-file-utils/")
(synopsis "Utilities for working with desktop entries")
(description
"This package contains a few command line utilities for working with
desktop entries:
desktop-file-validate: validates a desktop file and prints warnings/errors
about desktop entry specification violations.
desktop-file-install: installs a desktop file to the applications directory,
optionally munging it a bit in transit.
update-desktop-database: updates the database containing a cache of MIME types
handled by desktop files.")
(license license:gpl2+)))
(define-public gnome-icon-theme
(package
(name "gnome-icon-theme")
@ -2449,6 +2421,37 @@ (define-public libsecret
and other secrets. It communicates with the \"Secret Service\" using DBus.")
(license license:lgpl2.1+)))
(define-public five-or-more
(package
(name "five-or-more")
(version "3.22.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"1b26afyjr26wqy5j008gzsi3hpblbmabh0192lx6414lml1qxkxs"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("desktop-file-utils" ,desktop-file-utils)
("intltool" ,intltool)
("itstool" ,itstool)
("xmllint" ,libxml2)))
(inputs
`(("gtk+" ,gtk+)
("librsvg" ,librsvg)))
(home-page "https://wiki.gnome.org/Apps/Five%20or%20more")
(synopsis "Logic puzzle game")
(description "Five or More is a game where you try to align
five or more objects of the same color and shape causing them to disappear.
On every turn more objects will appear, until the board is full.
Try to last as long as possible.")
(license license:gpl2+)))
(define-public gnome-mines
(package
(name "gnome-mines")
@ -2777,7 +2780,7 @@ (define-public upower
(define-public libgweather
(package
(name "libgweather")
(version "3.24.0")
(version "3.24.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -2785,7 +2788,7 @@ (define-public libgweather
name "-" version ".tar.xz"))
(sha256
(base32
"0ggspn3wmlkdxpfv4ym68qn1mzqc3hv666sykv8sv1ah40rbk28h"))))
"0g35xfcw9vh3sfff42blk9ksrlmkrjmj46h3ad0sqgdn6xh329qj"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@ -3324,7 +3327,7 @@ (define-public gnome-klotski
(define-public grilo
(package
(name "grilo")
(version "0.3.2")
(version "0.3.3")
(source
(origin
(method url-fetch)
@ -3333,7 +3336,7 @@ (define-public grilo
name "-" version ".tar.xz"))
(sha256
(base32
"0nvzr2gfk2mpzf99442zawv0n5yjcyy50rqkrvdsibknbm56hvzj"))))
"1qx072m0gl6m3d5g5cbbf13p4h217icmlxjnrn829x5xqwi451sw"))))
(build-system gnu-build-system)
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-mkenums and glib-genmarshal
@ -3341,10 +3344,11 @@ (define-public grilo
("pkg-config" ,pkg-config)
("gobject-introspection" ,gobject-introspection)))
(inputs
`(("glib" ,glib)
`(("cyrus-sasl" ,cyrus-sasl)
("glib" ,glib)
("gtk+" ,gtk+)
("libxml2" ,libxml2)
;; XXX TODO: Add oauth
("liboauth" ,liboauth)
("libsoup" ,libsoup)
("nettle" ,nettle)
("totem-pl-parser" ,totem-pl-parser)))
@ -4499,7 +4503,7 @@ (define-public mutter
(define-public gnome-online-accounts
(package
(name "gnome-online-accounts")
(version "3.24.0")
(version "3.24.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -4507,7 +4511,7 @@ (define-public gnome-online-accounts
name "-" version ".tar.xz"))
(sha256
(base32
"0yy10znqj278lnhdiqjcqxrwwv5c1jdjd0ncjbbdyh8n0q77hbwy"))))
"0lgniqmkr6ffdw3kcqd34lvp969j2q2qzcy30zkzl5c09r7anc0a"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
@ -4662,7 +4666,7 @@ (define-public caribou
(define-public network-manager
(package
(name "network-manager")
(version "1.6.2")
(version "1.8.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/NetworkManager/"
@ -4670,7 +4674,7 @@ (define-public network-manager
"NetworkManager-" version ".tar.xz"))
(sha256
(base32
"1y96k82rav8if334jl500zc024d210c4pgprh94yqyz3rmanyaxj"))
"17pn7kzilyl0qk525gp9xnbz4x0ssrdmgk1lvw95pyfd6rm5qnps"))
(snippet
'(begin
(use-modules (guix build utils))
@ -4751,8 +4755,11 @@ (define-public network-manager
("python-dbus" ,python-dbus)
("python-pygobject" ,python-pygobject)))
(inputs
`(("dbus-glib" ,dbus-glib)
`(("curl" ,curl)
("cyrus-sasl" ,cyrus-sasl)
("dbus-glib" ,dbus-glib)
("dnsmasq" ,dnsmasq)
("eudev" ,eudev)
("gnutls" ,gnutls)
("iptables" ,iptables)
("isc-dhcp" ,isc-dhcp)
@ -4803,7 +4810,7 @@ (define-public mobile-broadband-provider-info
(define-public network-manager-applet
(package
(name "network-manager-applet")
(version "1.4.2")
(version "1.8.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -4811,12 +4818,9 @@ (define-public network-manager-applet
name "-" version ".tar.xz"))
(sha256
(base32
"16a43sl9aijmvxbb08hbjqyjnlshj8dckycbgi9nm333fr47n6s3"))))
"09f9hjpn9nkhw57mk6pi7q1bq3lhf5hvmwas0fknscssak7yjmry"))))
(build-system glib-or-gtk-build-system)
;; TODO: WWAN support supposedly requires an update of glibmm which in turn
;; requires an update of the its dependencies (glib and others).
(arguments '(#:configure-flags '("--disable-migration"
"--without-wwan")))
(arguments '(#:configure-flags '("--disable-migration")))
(native-inputs
`(("intltool" ,intltool)
("gobject-introspection" ,gobject-introspection)
@ -4831,7 +4835,9 @@ (define-public network-manager-applet
("libgudev" ,libgudev)
("libnotify" ,libnotify)
("libsecret" ,libsecret)
("jansson" ,jansson))) ;for team support
("libselinux" ,libselinux)
("jansson" ,jansson) ; for team support
("modem-manager" ,modem-manager)))
(synopsis "Applet for managing network connections")
(home-page "http://www.gnome.org/projects/NetworkManager/")
(description
@ -5595,7 +5601,7 @@ (define-public libzapojit
(define-public gnome-calendar
(package
(name "gnome-calendar")
(version "3.24.2")
(version "3.24.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -5603,7 +5609,7 @@ (define-public gnome-calendar
name "-" version ".tar.xz"))
(sha256
(base32
"0lc0xdgn0y12i87775xyy0p3a5l82w9k49cmwl1my8r8pwf9lp6s"))))
"1v7k1wcl5yg9bd4l0rz0z03h32d35zgfp4qzz21widjcyis41jry"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("intltool" ,intltool)
@ -6218,7 +6224,7 @@ (define-public orca
(define-public gspell
(package
(name "gspell")
(version "1.3.2")
(version "1.4.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -6226,7 +6232,7 @@ (define-public gspell
name "-" version ".tar.xz"))
(sha256
(base32
"1n4kd5i11l79h8bpvx3cz79ww0b4z89y99h4czvyg80qlarn585w"))
"1ghh1xdzf04mfgb13zqpj88krpa44xv2vbyhm6k017kzrpz8hbs4"))
(patches (search-patches "gspell-dash-test.patch"))))
(build-system glib-or-gtk-build-system)
(arguments
@ -6267,3 +6273,48 @@ (define-public gspell
application. It provides a GObject API, spell-checking to text entries and
text views, and buttons to choose the language.")
(license license:gpl2+)))
(define-public gnome-planner
(package
(name "gnome-planner")
(version "0.14.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/planner/"
(version-major+minor version) "/planner-"
version ".tar.xz"))
(sha256
(base32
"15h6ps58giy5r1g66sg1l4xzhjssl362mfny2x09khdqsvk2j38k"))))
(build-system glib-or-gtk-build-system)
(arguments
;; Disable the Python bindings because the Planner program functions
;; without them, and (as of 2017-06-13) we have not packaged all of
;; packages that are necessary for building the Python bindings.
`(#:configure-flags (list "--disable-python")))
(inputs
`(("libgnomecanvas" ,libgnomecanvas)
("libgnomeui" ,libgnomeui)
("libglade" ,libglade)
("gnome-vfs" ,gnome-vfs)
("gconf" ,gconf)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("gtk+" ,gtk+)
("glib" ,glib)))
(native-inputs
`(("intltool" ,intltool)
("scrollkeeper" ,scrollkeeper)
("pkg-config" ,pkg-config)))
(home-page "https://wiki.gnome.org/Apps/Planner")
(synopsis "Project management software for the GNOME desktop")
(description
"GNOME Planner is a project management tool based on the Work Breakdown
Structure (WBS). Its goal is to enable you to easily plan projects. Based on
the resources, tasks, and constraints that you define, Planner generates
various views into a project. For example, Planner can show a Gantt chart of
the project. It can show a detailed summary of tasks including their
duration, cost, and current progress. It can also show a report of resource
utilization that highlights under-utilized and over-utilized resources. These
views can be printed as PDF or PostScript files, or exported to HTML.")
(license license:gpl2+)))

View file

@ -5,7 +5,7 @@
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz>
;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.infotropique.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -66,22 +66,14 @@ (define-module (gnu packages gnunet)
(define-public libextractor
(package
(name "libextractor")
(version "1.3")
(version "1.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libextractor/libextractor-"
version ".tar.gz"))
(sha256
(base32
"0zvv7wd011npcx7yphw9bpgivyxz6mlp87a57n96nv85k96dd2l6"))
(patches (search-patches "libextractor-ffmpeg-3.patch"))
(modules '((guix build utils)))
(snippet
;; Nowadays libmagic (from 'file') returns 'audio/ogg' and not
;; 'application/ogg'. Adjust accordingly.
'(substitute* "src/plugins/test_mime.c"
(("application/ogg")
"audio/ogg")))))
"0v7ns5jhsyp1wzvbaydfgxnva5zd63gkzm9djhckmam9liq824l4"))))
(build-system gnu-build-system)
;; WARNING: Checks require /dev/shm to be in the build chroot, especially
;; not to be a symbolic link to /run/shm.
@ -184,14 +176,14 @@ (define-public libmicrohttpd
(define-public gnurl
(package
(name "gnurl")
(version "7.54.0")
(version "7.54.1")
(source (origin
(method url-fetch)
(uri (string-append "https://gnunet.org/sites/default/files/"
name "-" version ".tar.bz2"))
(sha256
(base32
"1ww346cdsxln6iq158a4wm38bmicg5wspd2c83gnqf1glx22hza0"))))
"0szbj352h95sgc9kbx9wzkgjksmg3g5k6cvlc7hz3wrbdh5gb0a4"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ; 1.5 MiB of man3 pages

View file

@ -250,7 +250,7 @@ (define-public mozjs-38
(define-public nspr
(package
(name "nspr")
(version "4.14")
(version "4.15")
(source (origin
(method url-fetch)
(uri (string-append
@ -258,7 +258,7 @@ (define-public nspr
version "/src/nspr-" version ".tar.gz"))
(sha256
(base32
"1m8p9l3prabhfxz6zs889fl7gmcka72a62i46a8klh2pca11iz34"))))
"101dksqm1z0hzd7ap82ccbxjr48s6q3xhshdl81qkj6hqdmy1p97"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)))
@ -282,7 +282,7 @@ (define-public nspr
(define-public nss
(package
(name "nss")
(version "3.30.2")
(version "3.31")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@ -293,10 +293,9 @@ (define-public nss
"nss-" version ".tar.gz")))
(sha256
(base32
"096frzvyp3z257x84rxknscfgsbavzh2a0gyibx7kvmw4vzpfjhd"))
"0pd643a8ns7q5az5ai3ascrw666i2kbfiyy1c9hlhw9jd8jn21g9"))
;; Create nss.pc and nss-config.
(patches (search-patches "nss-pkgconfig.patch"
"nss-disable-long-b64-tests.patch"
"nss-increase-test-timeout.patch"))))
(build-system gnu-build-system)
(outputs '("out" "bin"))
@ -329,16 +328,6 @@ (define-public nss
`((setenv "USE_64" "1")))
(_
'()))
;; The timeout values in "increase-test-timeouts" are still
;; too low, so apply this workaround on armhf for now to avoid
;; rebuilding on all platforms. This should be incorporated in
;; the patch for the next update.
;; https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00472.html
,@(if (string-prefix? "armhf" (or (%current-target-system)
(%current-system)))
`((substitute* "nss/gtests/ssl_gtest/tls_connect.cc"
(("25000\\);") "300000);")))
'())
#t))
(replace 'check
(lambda _
@ -427,35 +416,35 @@ (define-public icecat
(mozilla-patch "icecat-bug-1342366.patch" "fb43f6690a26" "1vnkjpq2bcqwzmjkgyqv8wj0ndrrsyix3qy1rsb5is6pjmi9sbaa")
(mozilla-patch "icecat-bug-1343818.patch" "90f870bbec29" "0mbki955f71n4yr9p0yc7kh5jwq7vs4bs4rhaazdncirbr564hm6")
(mozilla-patch "icecat-bug-1348454.patch" "c1cd8a02669f" "1wf0107763rw45kxkak7478vlax06ay7076cbm7ysxl7vijbr52w")
(mozilla-patch "icecat-bug-1297111.patch" "2553531f83b9" "0ibf59pa8czdyhc25sas6zhh2gf1k8vr8fklis2b1ms3n1qnzrha")
(mozilla-patch "icecat-CVE-2017-5470-pt01.patch" "2553531f83b9" "0ibf59pa8czdyhc25sas6zhh2gf1k8vr8fklis2b1ms3n1qnzrha")
(mozilla-patch "icecat-bug-1355873.patch" "9ee455ddcd68" "0d38hi4556635g9ag805vfyffdgfsp4a8v3d9ldffdp99ypv2ixj")
(mozilla-patch "icecat-bug-1348424-pt1.patch" "6472c7006a73" "1fgydas23fzj49n4g43133bgjn98b2h38bii4knl7z7pm3fs2wws")
(mozilla-patch "icecat-bug-1348424-pt2.patch" "0d5a26b29816" "03mkghl9i83jk1axr8bvw8la6shbggkabf23if8a9vi5jdv8182x")
(mozilla-patch "icecat-CVE-2017-5470-pt02.patch" "6472c7006a73" "1fgydas23fzj49n4g43133bgjn98b2h38bii4knl7z7pm3fs2wws")
(mozilla-patch "icecat-CVE-2017-5470-pt03.patch" "0d5a26b29816" "03mkghl9i83jk1axr8bvw8la6shbggkabf23if8a9vi5jdv8182x")
(mozilla-patch "icecat-bug-1357092.patch" "e78c943af07f" "0r830k6hja8z9rjk2nqjg8zfzr0wjcnic8rddh7jmc1inr1w3crm")
(mozilla-patch "icecat-bug-1352093.patch" "d7c06f2d0d13" "1ahyns5v37w91bilvb3pa8kkdzkkn3fcxmi49jr5bycjlawljrm4")
(mozilla-patch "icecat-bug-1349595.patch" "9071c7d4cc9c" "12128sf8s3zwv2w16kfl5jry9d6ky7hvps2006184rg23p32aj6n")
(mozilla-patch "icecat-CVE-2017-5470-pt04.patch" "d7c06f2d0d13" "1ahyns5v37w91bilvb3pa8kkdzkkn3fcxmi49jr5bycjlawljrm4")
(mozilla-patch "icecat-CVE-2017-5470-pt05.patch" "9071c7d4cc9c" "12128sf8s3zwv2w16kfl5jry9d6ky7hvps2006184rg23p32aj6n")
(mozilla-patch "icecat-bug-1336979.patch" "8bbc7b586d68" "0c13imyp1nq18in3yb1zcyi41b69svh4fn8msyj0c2lhbf8qnqcw")
(mozilla-patch "icecat-bug-1352556.patch" "6d80ca63ff8b" "0s893fn6v0p323lcnl4cbkg1zd7gs1p0bw76ki6cmiapkn63gs13")
(mozilla-patch "icecat-bug-1359547.patch" "43d7b98d8743" "1dhgy1jkvn3c4k27hbv8p16w7l09b8hd4w9zzpk8dpn4h78ncs3h")
(mozilla-patch "icecat-CVE-2017-5470-pt06.patch" "6d80ca63ff8b" "0s893fn6v0p323lcnl4cbkg1zd7gs1p0bw76ki6cmiapkn63gs13")
(mozilla-patch "icecat-CVE-2017-7752.patch" "43d7b98d8743" "1dhgy1jkvn3c4k27hbv8p16w7l09b8hd4w9zzpk8dpn4h78ncs3h")
(mozilla-patch "icecat-CVE-2017-5031.patch" "bd4fcdee9a06" "0xz1r342023a0bsllhjbzn6v75lpqznwacqyikb7q8i4hxkxh78a")
(mozilla-patch "icecat-bug-1346499.patch" "747fd6c81983" "00iscyn4wr69205ppiaghlnd32845f5lcsl303v0fcdd4d1v04vc")
(mozilla-patch "icecat-bug-1334443-pt1.patch" "16201e8478df" "1k91xaai25vn1svkaldnsd2s8br3fgvnk5l54k3n3lk3m5vj55hv")
(mozilla-patch "icecat-bug-1334443-pt2.patch" "f100e5cf3bcb" "1cgbbbnkrd3ydfw99rhnpqdp5zq65537mg8sa1s9ajxkjjd1dkwj")
(mozilla-patch "icecat-bug-1354810.patch" "e579ef6e8d11" "0cmrh8dl85lzjxpbni08xbs8qq15sljnpg70a7rsl0jdbgih3mdx")
(mozilla-patch "icecat-bug-1356755.patch" "4a3fce67b52d" "126i9nwxsb3sjwb7dvhafacq86glnhx7r7jjv0h9v21s1w0kx4wj")
(mozilla-patch "icecat-bug-1273265.patch" "7902fea300b8" "1jkrl8hdycsi17dd1m1vvl6gm1skhpf10q2m29zwfr8l40fd6a3q")
(mozilla-patch "icecat-CVE-2017-7765.patch" "7902fea300b8" "1jkrl8hdycsi17dd1m1vvl6gm1skhpf10q2m29zwfr8l40fd6a3q")
(mozilla-patch "icecat-bug-1353204.patch" "b5a21502aeff" "13rbrhvr37w95av9d4hkgi913nq0j6k2iijydylvprcn18cwibp0")
(mozilla-patch "icecat-bug-1028195.patch" "69a5ca2bf867" "0q8cgi6837ikpg7gsvywmzhq0i102845apcbrd6mw0205qqsnw5c")
(mozilla-patch "icecat-bug-1347835.patch" "bc635f45af37" "1fny422l6yc80901x6swybr8nk0in1wxfgy97ky4bdkcqlnmzpqv")
(mozilla-patch "icecat-bug-1241066.patch" "b922ca70cce5" "09hcf9rm7ng3vj5y267w0c9h6pqinnz8gjlkwx1337xh43mdvqjv")
(mozilla-patch "icecat-bug-1346012.patch" "1ce6d0652921" "163ji64a86h682frh1jq016w1mjf8g24r8cni0irsdmiihis7zxc")
(mozilla-patch "icecat-CVE-2017-5470-pt07.patch" "1ce6d0652921" "163ji64a86h682frh1jq016w1mjf8g24r8cni0irsdmiihis7zxc")
(mozilla-patch "icecat-bug-1324140.patch" "8886f9cd5dd3" "0byabs9md8r3pc4r67sv2759427n1za0gfayln40nx47n2p52kmg")
(mozilla-patch "icecat-bug-1342552.patch" "ad995e90916b" "02nq9sg675p26z99nr2pykbz51hi2phf0gmrb1bjpq9pjbll7gsa")
(mozilla-patch "icecat-bug-1355039.patch" "4ae71415fecf" "0yfkkdkkimad9a3w734xx85lb7hrl870c8k8an7w78fq3vl3fjnd")
(mozilla-patch "icecat-bug-1363396.patch" "24cbb7f2e0ff" "006f0zhz5nxs72q9plwzhq4l79b47svzizvv510m5g2krsfrccza")
(mozilla-patch "icecat-bug-1356558.patch" "89c7fb6c5be3" "19650nmc4vn1prbpn5h06kz9d1al279xkc23v39577h4zhdrknkj")
(mozilla-patch "icecat-CVE-2017-5470-pt08.patch" "ad995e90916b" "02nq9sg675p26z99nr2pykbz51hi2phf0gmrb1bjpq9pjbll7gsa")
(mozilla-patch "icecat-CVE-2017-7749.patch" "4ae71415fecf" "0yfkkdkkimad9a3w734xx85lb7hrl870c8k8an7w78fq3vl3fjnd")
(mozilla-patch "icecat-CVE-2017-7751.patch" "24cbb7f2e0ff" "006f0zhz5nxs72q9plwzhq4l79b47svzizvv510m5g2krsfrccza")
(mozilla-patch "icecat-CVE-2017-7750.patch" "89c7fb6c5be3" "19650nmc4vn1prbpn5h06kz9d1al279xkc23v39577h4zhdrknkj")
(mozilla-patch "icecat-bug-1337810.patch" "0f6dd3564c76" "1sxajqh6r7fjs45xhvjwg94smpvyvplh3rdvq11d3q5m9v4kg7mz")
(mozilla-patch "icecat-bug-1347748.patch" "145905da25d3" "0c2q9f000snpm9x0qda2y0awrsm313iwxbv0kh33ca0kpza49a76")
(mozilla-patch "icecat-CVE-2017-5470-pt09.patch" "145905da25d3" "0c2q9f000snpm9x0qda2y0awrsm313iwxbv0kh33ca0kpza49a76")
(mozilla-patch "icecat-bug-1345355.patch" "c5012009a0b2" "0m772bgrwb8iwv2bdgx694ybg5wgbf58xg5v245x0p7gwhgwiwmr")
(mozilla-patch "icecat-bug-1351340.patch" "047f19a1b9a0" "0qjnhybibs3cpcba3ga4g7d4c0w716xa9jf87y2ir8yz7dw1f9vl")
(mozilla-patch "icecat-bug-1056322.patch" "f076a30f6c29" "0xgskjl6zmxi3v4l0f3wlas0qb2403fin5lv1hi3jf2142ihpaml")
@ -480,32 +469,44 @@ (define-public icecat
(mozilla-patch "icecat-bug-1360574-pt1.patch" "237eee780619" "1iw6z762zdc42kwjvv58a2cjc0s4kzwwy7838apl7y7cq85g0jg2")
(mozilla-patch "icecat-bug-1360574-pt2.patch" "46a5a4aac189" "1i553f9qvav0fn5avbp8912995pqbhzbzamxxfz8gn2ik17y3xly")
(mozilla-patch "icecat-bug-1358776.patch" "bd35fa23f79a" "12nicgwhcn63knmlcl0c2askn9sj35bfclaab3826pkd9yq5g4p5")
(mozilla-patch "icecat-bug-1362590.patch" "c1314a709b41" "0klgrcyc20fig6rbm9znjpcnfsz6xnlp1v03fbvaww0riy2qm42k")
(mozilla-patch "icecat-CVE-2017-5470-pt10.patch" "c1314a709b41" "0klgrcyc20fig6rbm9znjpcnfsz6xnlp1v03fbvaww0riy2qm42k")
(mozilla-patch "icecat-bug-1359859.patch" "e38948fb79d6" "1sfyc5s9ndv6q72k8n9x0rvj4sz40k51iljrs42gwykzkjm2fx5m")
(mozilla-patch "icecat-bug-1342057.patch" "278bef1d7a64" "0zk18s9pnbwz9ankmc9mj4197s55j1jvax04ansqymmmc3a5ciif")
(mozilla-patch "icecat-bug-1325513.patch" "218e0963406f" "0wqms5nany4sx2g4p01lbam7la2dyazz87dhv5hcsf8ifxrfww11")
(mozilla-patch "icecat-CVE-2017-5470-pt11.patch" "218e0963406f" "0wqms5nany4sx2g4p01lbam7la2dyazz87dhv5hcsf8ifxrfww11")
(mozilla-patch "icecat-bug-1304566.patch" "188e39630fcd" "1bfxfgj5ywx4bcf91kwyrjh5ppiv59gadx4445achyabdi639l8d")
(mozilla-patch "icecat-bug-1356601.patch" "8191e403fedf" "1k4zmq0923f5dc3dwbz1q0bkcbm90ldwkczym366hgwadb2305nd")
(mozilla-patch "icecat-bug-1334097.patch" "fe2a2c7e88cb" "1rppaivaddigwk65krn8m9f9mcdkiiv28ws9n9zj62n0rc1shyvc")
(mozilla-patch "icecat-bug-1359051.patch" "8d7dbe5c6587" "14zh74bbld4s0jy0a48fi9acxkc236mh9wjid3vrf72yj6bi5xnp")
(mozilla-patch "icecat-bug-1359697.patch" "ca2b5274549f" "1ns7v70i1hfkxqnjhf9fp0lk9095hdcllg94j3dl1nfaif4w6vbf")
(mozilla-patch "icecat-bug-1343256.patch" "a30dd7dd6617" "1k078176fp8vz871wirjz9d3yx9l2lfl8p75c4905n3j3zv2297q")
(mozilla-patch "icecat-bug-1349310.patch" "81b3ce7d37b3" "0ad0wqczy4kpggj6m3b8bzxi6ax340mik1mfawhkq89a1h2sfpxv")
(mozilla-patch "icecat-CVE-2017-7778.patch" "81b3ce7d37b3" "0ad0wqczy4kpggj6m3b8bzxi6ax340mik1mfawhkq89a1h2sfpxv")
(mozilla-patch "icecat-bug-1356179.patch" "66d8893f37f0" "0izl31lagvdv4qpb9gkjxvgpmxzw50x5bviap4l7bbnb56cv7d8p")
(mozilla-patch "icecat-bug-1365602.patch" "aad883966edd" "058axnrwrbvy2h9r9pb766lyky45hb92rap142sbp17yz0sxfmww")
(mozilla-patch "icecat-CVE-2017-5472.patch" "aad883966edd" "058axnrwrbvy2h9r9pb766lyky45hb92rap142sbp17yz0sxfmww")
(mozilla-patch "icecat-bug-1355520.patch" "7ca2d8839f7a" "1xbmpvr2x720x9ghd5wgbg6lknbnhcyqmkkfamdf97mqcyizyr21")
(mozilla-patch "icecat-bug-1358469.patch" "4d432638c0f9" "0qpjmwik3dryjwmgfwmkqk0rs9rb2lafb2k9fc3pkjnrq5y0l9xg")
(mozilla-patch "icecat-bug-1356025.patch" "f5967db0a0f3" "045wbvkm21kbm314dd6lbq2disiaf26kmsxi6brf442fd0028gwq")
(mozilla-patch "icecat-CVE-2017-5470-pt12.patch" "f5967db0a0f3" "045wbvkm21kbm314dd6lbq2disiaf26kmsxi6brf442fd0028gwq")
(mozilla-patch "icecat-bug-1345910.patch" "ec6b6720e54e" "0lm15jl46mdlsds6947jsiyvhf9agb8hcdrqj2svc3kn9kzvyr2n")
(mozilla-patch "icecat-bug-1359639.patch" "a4f8d8a12afa" "0d7sjc21af074rvgvijj42gmpjvcb1v1zlpgb3s7ky7w6wjr35vx")
(mozilla-patch "icecat-bug-1357090.patch" "d07f24a72ce4" "1qbwska76b2zslb95wnx9v04znb6k9fqylr4ajyfqpwk1sr363hg")
(mozilla-patch "icecat-bug-1364283.patch" "a6caa7628e36" "1yv5f4h8js9bry9krcx130w6ic8rdmmq4fap6va24kfx8qflg70h")
(mozilla-patch "icecat-CVE-2017-5470-pt13.patch" "a4f8d8a12afa" "0d7sjc21af074rvgvijj42gmpjvcb1v1zlpgb3s7ky7w6wjr35vx")
(mozilla-patch "icecat-CVE-2017-7754.patch" "d07f24a72ce4" "1qbwska76b2zslb95wnx9v04znb6k9fqylr4ajyfqpwk1sr363hg")
(mozilla-patch "icecat-CVE-2017-7764.patch" "a6caa7628e36" "1yv5f4h8js9bry9krcx130w6ic8rdmmq4fap6va24kfx8qflg70h")
(mozilla-patch "icecat-bug-1237868.patch" "41138235d4ea" "0mcj4x2kmagwf5hp8xhczf04sxm995pk1zarc9yffk84z7fcrxkj")
(mozilla-patch "icecat-bug-1331335.patch" "b724283e3b31" "1xbb1vcdzfpcmrmxm8ihwzslh2vz15k0k601nvyhh6vgx270h1wn")
(mozilla-patch "icecat-bug-1367267.patch" "4c2f4d8b693e" "1hrndhfnz0vnjnspwh5mbvgl2j8d1cs62awp04wx2w6z4l4wrmbv")
(mozilla-patch "icecat-bug-1366595.patch" "cce3fd607206" "1z97jw8jpfyx61jxf0j8nsplnna2c5bwihwnl9cvlc2cspp3kgp5")
(mozilla-patch "icecat-bug-1349266.patch" "dc4e3c64d781" "1zd666k4qpdamly3av09k602pmirjcs9l6la6ba0qq9w9vfan3g5")
(mozilla-patch "icecat-bug-1366140.patch" "379c348250e8" "0kvsyhi9j3bjx14ffr13dslqp8ghcgrz6ds2fikdkrrrk4syskd5")))
(mozilla-patch "icecat-CVE-2017-7756.patch" "cce3fd607206" "1z97jw8jpfyx61jxf0j8nsplnna2c5bwihwnl9cvlc2cspp3kgp5")
(mozilla-patch "icecat-CVE-2017-5470-pt14.patch" "dc4e3c64d781" "1zd666k4qpdamly3av09k602pmirjcs9l6la6ba0qq9w9vfan3g5")
(mozilla-patch "icecat-CVE-2017-5470-pt15.patch" "379c348250e8" "0kvsyhi9j3bjx14ffr13dslqp8ghcgrz6ds2fikdkrrrk4syskd5")
(mozilla-patch "icecat-bug-1349531.patch" "70cd711c6ae8" "07hlby5xdvqy6jdqxydv5pwap8hhsycb19fgw5fan2xf9dhrfpb8")
(mozilla-patch "icecat-CVE-2017-5470-pt16.patch" "6e644bc1a57f" "1xp8b74wijfz198q4hdybldnwh3hh0vh33dc5s7489abmz4s5zjg")
(mozilla-patch "icecat-CVE-2017-7758.patch" "279bffa85beb" "0shf77l9id6s8cs8xbc0ii0ccd7n09jv20410kkqqz11m296dcjr")
(mozilla-patch "icecat-CVE-2017-7757.patch" "0abcbc6ef8f3" "045arb1b83a3yv358naznl15bnr4wgxxayv8d5gcxarcbrrvm5q4")
(mozilla-patch "icecat-CVE-2017-5470-pt17.patch" "e0261afd69b9" "0a19b24iq57430kpbsdvka9vyg6kwhnnqis1xsd6wh8gz0bw5l79")
(mozilla-patch "icecat-CVE-2017-5470-pt18.patch" "4ec931d4bf29" "0bq0hq41xhy9aqjra5m0flmpilinlkb088r6w1kly561ckjl1f9f")
(mozilla-patch "icecat-bug-1339826-pt1.patch" "9c29579fffe2" "0yfc764qrynh441wwim18cr6k0sazgrm77frcdnyks0hzf0y44d1")
(mozilla-patch "icecat-bug-1339826-pt2.patch" "be946ea1a75a" "0pw0y1sdckn5brm39sdg47hbda5432aw32c3xq26ism23im85191")
(mozilla-patch "icecat-bug-1339826-pt2.patch" "44b2fe592a90" "1v8mz3b40dp6l5qrgha4yibmrnx80pxsvdll6ky1k937yhbzjk4a")
(mozilla-patch "icecat-CVE-2017-5470-pt19.patch" "f68e0d98a22a" "063z4a7gyhzy85fc2j2yr7kmk2zf7v875hjw4485civazydysw4j")
(mozilla-patch "icecat-bug-1353625.patch" "c41f37d913e2" "1s997c1hj4ywnlfbhvi1y96vd6bxl74wcrb0nly611h51h8xnyxm")
(mozilla-patch "icecat-CVE-2017-5470-pt20.patch" "38273203b827" "12p9r4spdp09d6ic9sqspvdr50lmc1p86ydz2fxdifb1f95njhx0")))
(modules '((guix build utils)))
(snippet
'(begin

View file

@ -4109,7 +4109,7 @@ (define-public ghc-base-orphans
(define-public ghc-auto-update
(package
(name "ghc-auto-update")
(version "0.1.2.2")
(version "0.1.4")
(source
(origin
(method url-fetch)
@ -4119,7 +4119,7 @@ (define-public ghc-auto-update
".tar.gz"))
(sha256
(base32
"1ns4c5mqhnm7hsiqxf1ivjs5fflyq92b16ldzrcl0p85631h0c3v"))))
"09dlh2alsx2mw5kvj931yhbj0aw7jmly2cm9xbscm2sf098w35jy"))))
(build-system haskell-build-system)
(home-page "https://github.com/yesodweb/wai")
(synopsis "Efficiently run periodic, on-demand actions")
@ -5085,7 +5085,7 @@ (define-public ghc-aeson-pretty
(define-public ghc-wai
(package
(name "ghc-wai")
(version "3.0.4.0")
(version "3.2.1.1")
(source
(origin
(method url-fetch)
@ -5095,7 +5095,7 @@ (define-public ghc-wai
".tar.gz"))
(sha256
(base32
"1551n0g0n22vml33v0jz5xgjcy6j79algvsdqg11a1z5ljjrjlqf"))))
"08afasnirja21vr0bmzcywz4w29x736dmdv7h8nnh1l8bn7sd02x"))))
(build-system haskell-build-system)
(inputs
`(("ghc-bytestring-builder" ,ghc-bytestring-builder)
@ -5153,7 +5153,7 @@ (define-public ghc-wai-logger
(define-public ghc-wai-extra
(package
(name "ghc-wai-extra")
(version "3.0.11.1")
(version "3.0.13.1")
(source
(origin
(method url-fetch)
@ -5163,7 +5163,7 @@ (define-public ghc-wai-extra
".tar.gz"))
(sha256
(base32
"1kr2s5qyx1dvnwr372h7pca4sgxjv0pdx96xkgsfi180h3mb0vq8"))))
"0mh761a1bayr4ydwqmh3h8ndpi19zqw34mmy49lp2abr70r0nm1p"))))
(build-system haskell-build-system)
(inputs
`(("ghc-ansi-terminal" ,ghc-ansi-terminal)
@ -5890,7 +5890,7 @@ (define-public ghc-mime-types
(define-public ghc-http-client
(package
(name "ghc-http-client")
(version "0.4.24")
(version "0.5.6.1")
(source (origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
@ -5898,7 +5898,7 @@ (define-public ghc-http-client
version ".tar.gz"))
(sha256
(base32
"0xz133kdfiyy2rm6z95bmvjj6y2540xzd86cfmdv9s6kz4p1ir4k"))))
"1v9bdb8dkhb5g6jl9azk86ig7ia8xh9arr64n7s8r94fp0vl6c1c"))))
(build-system haskell-build-system)
;; Tests require access to the web.
(arguments `(#:tests? #f))
@ -6371,7 +6371,7 @@ (define-public ghc-connection
(define-public ghc-http-client-tls
(package
(name "ghc-http-client-tls")
(version "0.2.2")
(version "0.3.4.1")
(source (origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
@ -6379,7 +6379,7 @@ (define-public ghc-http-client-tls
version ".tar.gz"))
(sha256
(base32
"0a01r05h5fxswyn6k6cgqgak4scqjan72hyy5wbdqzzhl4rmh7j5"))))
"1mbwdfn4hs8lcwml2l6xv4n068l9zlasyv6vwb2ylgm030pyv3xh"))))
(build-system haskell-build-system)
;; Tests require Internet access
(arguments `(#:tests? #f))
@ -8295,4 +8295,375 @@ (define-public shellcheck
@end enumerate")
(license license:gpl3+)))
(define-public ghc-wai-conduit
(package
(name "ghc-wai-conduit")
(version "3.0.0.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"wai-conduit-" version "/"
"wai-conduit-" version ".tar.gz"))
(sha256
(base32
"1zvsiwjq2mvkb9sjgp3ly9m968m7a2jjzr4id6jpi3mmqykj15z4"))))
(build-system haskell-build-system)
(inputs
`(("ghc-conduit" ,ghc-conduit)
("ghc-http-types" ,ghc-http-types)
("ghc-wai" ,ghc-wai)
("ghc-blaze-builder" ,ghc-blaze-builder)))
(home-page "https://github.com/yesodweb/wai")
(synopsis "Conduit wrappers for Haskell's WAI")
(description "This package provides data streaming abstraction for
Haskell's Web Application Interface (WAI).")
(license license:expat)))
(define-public ghc-http-date
(package
(name "ghc-http-date")
(version "0.0.6.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"http-date-" version "/"
"http-date-" version ".tar.gz"))
(sha256
(base32
"0dknh28kyarnzqrsc80ssalxjrq0qbv7ir49247p2grb7rh0dqgj"))))
(build-system haskell-build-system)
(inputs
`(("ghc-attoparsec" ,ghc-attoparsec)))
(native-inputs
`(("ghc-doctest" ,ghc-doctest)
("ghc-hspec" ,ghc-hspec)
("hspec-discover" ,hspec-discover)
("ghc-old-locale" ,ghc-old-locale)))
(home-page "https://github.com/kazu-yamamoto/http-date")
(synopsis "HTTP Date parser/formatter")
(description "Library for Parsing and formatting HTTP
Date in Haskell.")
(license license:bsd-3)))
(define-public ghc-simple-sendfile
(package
(name "ghc-simple-sendfile")
(version "0.2.25")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"simple-sendfile-" version "/"
"simple-sendfile-" version ".tar.gz"))
(sha256
(base32
"0k99j9xfcf83c55jmn202hdinhjaa4yn3dal4rvjk2w2rlhqirha"))))
(build-system haskell-build-system)
(inputs
`(("ghc-conduit" ,ghc-conduit)
("ghc-conduit-extra" ,ghc-conduit-extra)
("ghc-network" ,ghc-network)
("ghc-resourcet" ,ghc-resourcet)))
(native-inputs
`(("ghc-hspec" ,ghc-hspec)
("hspec-discover" ,hspec-discover)))
(home-page "https://github.com/kazu-yamamoto/simple-sendfile")
(synopsis "Cross platform library for the sendfile system call")
(description "This library tries to call minimum system calls which
are the bottleneck of web servers.")
(license license:bsd-3)))
(define-public ghc-hex
(package
(name "ghc-hex")
(version "0.1.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"hex-" version "/"
"hex-" version ".tar.gz"))
(sha256
(base32
"1v31xiaivrrn0q2jz8919wvkjplv1kxna5ajhsj701fqxm1i5vhj"))))
(build-system haskell-build-system)
(home-page "http://hackage.haskell.org/package/hex")
(synopsis "Convert strings into hexadecimal and back")
(description "This package provides conversion functions between
bytestrings and their hexademical representation.")
(license license:bsd-3)))
(define-public ghc-psqueues
(package
(name "ghc-psqueues")
(version "0.2.2.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"psqueues-" version "/"
"psqueues-" version ".tar.gz"))
(sha256
(base32
"1dd6xv1wjxj1xinx155b14hijw8fafrg4096srzdzj7xyqq7qxbd"))))
(build-system haskell-build-system)
(inputs
`(("ghc-hashable" ,ghc-hashable)))
(native-inputs
`(("ghc-hunit" ,ghc-hunit)
("ghc-quickcheck" ,ghc-quickcheck)
("ghc-tagged" ,ghc-tagged)
("ghc-test-framework" ,ghc-test-framework)
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
(home-page "https://github.com/bttr/psqueues")
(synopsis "Pure priority search queues")
(description "The psqueues package provides
@uref{http://en.wikipedia.org/wiki/Priority_queue, Priority Search Queues} in
three different flavors:
@itemize
@item @code{OrdPSQ k p v}, which uses the @code{Ord k} instance to provide
fast insertion, deletion and lookup. This implementation is based on Ralf
Hinze's @uref{http://citeseer.ist.psu.edu/hinze01simple.html, A Simple
Implementation Technique for Priority Search Queues}.
Hence, it is similar to the @uref{http://hackage.haskell.org/package/PSQueue,
PSQueue} library, although it is considerably faster and provides a slightly
different API.
@item @code{IntPSQ p v} is a far more efficient implementation. It fixes the
key type to @code{Int} and uses a
@code{http://en.wikipedia.org/wiki/Radix_tree, radix tree}
(like @code{IntMap}) with an additional min-heap property.
@item @code{HashPSQ k p v} is a fairly straightforward extension
of @code{IntPSQ}: it simply uses the keys' hashes as indices in the
@code{IntPSQ}. If there are any hash collisions, it uses an
@code{OrdPSQ} to resolve those. The performance of this implementation
is comparable to that of @code{IntPSQ}, but it is more widely
applicable since the keys are not restricted to @code{Int},
but rather to any @code{Hashable} datatype.
@end itemize
Each of the three implementations provides the same API, so they can
be used interchangeably.
Typical applications of Priority Search Queues include:
@itemize
@item Caches, and more specifically LRU Caches;
@item Schedulers;
@item Pathfinding algorithms, such as Dijkstra's and A*.
@end itemize")
(license license:bsd-3)))
(define-public ghc-glob
(package
(name "ghc-glob")
(version "0.7.14")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"Glob-" version "/"
"Glob-" version ".tar.gz"))
(sha256
(base32
"0aw43izg8vlvjl40ms6k92w7gxg7n3l6smdvzla47fp82s4vhdr8"))))
(build-system haskell-build-system)
(inputs
`(("ghc-dlist" ,ghc-dlist)
("ghc-semigroups" ,ghc-semigroups)
("ghc-transformers-compat" ,ghc-transformers-compat)))
(native-inputs
`(("ghc-hunit" ,ghc-hunit)
("ghc-quickcheck" ,ghc-quickcheck)
("ghc-test-framework" ,ghc-test-framework)
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
(home-page "http://iki.fi/matti.niemenmaa/glob/")
(synopsis "Haskell library matching glob patterns against file paths")
(description "This package providesa Haskell library for globbing:
matching patterns against file paths.")
(license license:bsd-3)))
(define-public ghc-http2
(package
(name "ghc-http2")
(version "1.6.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"http2-" version "/"
"http2-" version ".tar.gz"))
(sha256
(base32
"0hww0rfsv6lqx62qzycbcqy5q6rh9k09qkyjkdm5m1sp1z50wqk1"))))
(build-system haskell-build-system)
(inputs
`(("ghc-bytestring-builder" ,ghc-bytestring-builder)
("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-aeson" ,ghc-aeson)
("ghc-aeson-pretty" ,ghc-aeson-pretty)
("ghc-hex" ,ghc-hex)
("ghc-unordered-containers" ,ghc-unordered-containers)
("ghc-vector" ,ghc-vector)
("ghc-word8" ,ghc-word8)
("ghc-psqueues" ,ghc-psqueues)
("ghc-stm" ,ghc-stm)))
(native-inputs
`(("ghc-glob" ,ghc-glob)
("ghc-hspec" ,ghc-hspec)
("ghc-doctest" ,ghc-doctest)
("hspec-discover" ,hspec-discover)))
(home-page "https://github.com/kazu-yamamoto/http2")
(synopsis "HTTP/2 library including frames, priority queues and HPACK")
(description "This package provides a HTTP/2.0 library including frames
and HPACK. Currently HTTP/2 16 framing and HPACK 10 is supported.")
(license license:bsd-3)))
(define-public ghc-warp
(package
(name "ghc-warp")
(version "3.2.11.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"warp-" version "/" "warp-" version
".tar.gz"))
(sha256
(base32
"1zp5cy0bbj508vdvms1n5z80z37m253kwsqc5a83cfc990n6fgw5"))))
(build-system haskell-build-system)
(arguments
`(#:tests? #f)) ; FIXME: Test-Suite `spec` fails.
(inputs
`(("ghc-async" ,ghc-async)
("ghc-auto-update" ,ghc-auto-update)
("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-bytestring-builder" ,ghc-bytestring-builder)
("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-hashable" ,ghc-hashable)
("ghc-http-types" ,ghc-http-types)
("ghc-iproute" ,ghc-iproute)
("ghc-network" ,ghc-network)
("ghc-stm" ,ghc-stm)
("ghc-streaming-commons" ,ghc-streaming-commons)
("ghc-text" ,ghc-text)
("ghc-unix-compat" ,ghc-unix-compat)
("ghc-vault" ,ghc-vault)
("ghc-wai" ,ghc-wai)
("ghc-word8" ,ghc-word8)
("ghc-lifted-base" ,ghc-lifted-base)
("ghc-http-date" ,ghc-http-date)
("ghc-simple-sendfile" ,ghc-simple-sendfile)
("ghc-http2" ,ghc-http2)))
(native-inputs
`(("ghc-silently" ,ghc-silently)
("ghc-hspec" ,ghc-hspec)
("ghc-auto-update" ,ghc-auto-update)
("ghc-doctest" ,ghc-doctest)
("ghc-quickcheck" ,ghc-quickcheck)
("ghc-hunit" ,ghc-hunit)
("ghc-http" ,ghc-http)
("hspec-discover" ,hspec-discover)))
(home-page "http://github.com/yesodweb/wai")
(synopsis "HTTP server library for Haskell's WAI")
(description "Warp is a server library for HTTP/1.x and HTTP/2
based WAI (Web Application Interface in Haskell).")
(license license:expat)))
(define-public ghc-warp-tls
(package
(name "ghc-warp-tls")
(version "3.2.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"warp-tls-" version "/"
"warp-tls-" version ".tar.gz"))
(sha256
(base32
"14m2bzk5ivz9gdpxlcj6qnh46f2lycm1ybdjnfkj2876zrqwii7m"))))
(build-system haskell-build-system)
(inputs
`(("ghc-cryptonite" ,ghc-cryptonite)
("ghc-data-default-class" ,ghc-data-default-class)
("ghc-network" ,ghc-network)
("ghc-streaming-commons" ,ghc-streaming-commons)
("ghc-tls" ,ghc-tls)
("ghc-wai" ,ghc-wai)
("ghc-warp" ,ghc-warp)))
(home-page "http://github.com/yesodweb/wai")
(synopsis "SSL/TLS support for Warp")
(description "This package provides SSL/TLS support for Warp,
a WAI handler, via the native Haskell TLS implementation.")
(license license:expat)))
(define-public ghc-http-conduit
(package
(name "ghc-http-conduit")
(version "2.2.3.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"http-conduit-" version "/" "http-conduit-"
version ".tar.gz"))
(sha256 (base32
"03na2nbm9la0shlijvjyb5mpp1prfskk4jmjy8iz707r0731dbjk"))))
(build-system haskell-build-system)
;; FIXME: `httpLbs TLS` in test-suite `test` fails with
;; ConnectionFailure getProtocolByName: does not exist (no such protocol
;; name: tcp)
(arguments `(#:tests? #f))
(inputs
`(("ghc-aeson" ,ghc-aeson)
("ghc-resourcet" ,ghc-resourcet)
("ghc-conduit" ,ghc-conduit)
("ghc-conduit-extra" ,ghc-conduit-extra)
("ghc-http-types" ,ghc-http-types)
("ghc-lifted-base" ,ghc-lifted-base)
("ghc-http-client" ,ghc-http-client)
("ghc-http-client-tls" ,ghc-http-client-tls)
("ghc-monad-control" ,ghc-monad-control)
("ghc-mtl" ,ghc-mtl)
("ghc-exceptions" ,ghc-exceptions)))
(native-inputs
`(("ghc-hunit" ,ghc-hunit)
("ghc-hspec" ,ghc-hspec)
("ghc-data-default-class" ,ghc-data-default-class)
("ghc-connection" ,ghc-connection)
("ghc-warp-tls" ,ghc-warp-tls)
("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-text" ,ghc-text)
("ghc-conduit" ,ghc-conduit)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-lifted-base" ,ghc-lifted-base)
("ghc-network" ,ghc-network)
("ghc-wai" ,ghc-wai)
("ghc-warp" ,ghc-warp)
("ghc-wai-conduit" ,ghc-wai-conduit)
("ghc-http-types" ,ghc-http-types)
("ghc-http-client" ,ghc-http-client)
("ghc-cookie" ,ghc-cookie)
("ghc-conduit-extra" ,ghc-conduit-extra)
("ghc-streaming-commons" ,ghc-streaming-commons)
("ghc-aeson" ,ghc-aeson)
("ghc-temporary" ,ghc-temporary)
("ghc-resourcet" ,ghc-resourcet)))
(home-page "https://hackage.haskell.org/package/http-conduit")
(synopsis "HTTP/HTTPS client with conduit interface")
(description "This library uses attoparsec for parsing the actual
contents of the HTTP connection. It also provides higher-level functions
which allow you to avoid direct usage of conduits.")
(license license:bsd-3)))
;;; haskell.scm ends here

View file

@ -415,7 +415,7 @@ (define-public libwmf
(define-public leptonica
(package
(name "leptonica")
(version "1.74.0")
(version "1.74.4")
(source
(origin
(method url-fetch)
@ -424,7 +424,7 @@ (define-public leptonica
".tar.gz"))
(file-name (string-append "leptonica-" version ".tar.gz"))
(sha256
(base32 "0i2a4vx9gizki0wgmv03xjz8j9d8agkvbag1a8m4kcw4asd4p87g"))))
(base32 "10pw7pwccd0m0fc9rlrr2m41s7j1qvba2wcrav17pw1gclkf34i0"))))
(build-system gnu-build-system)
(native-inputs
`(("gnuplot" ,gnuplot) ;needed for test suite
@ -850,16 +850,18 @@ (define-public libmng
(define-public exiv2
(package
(name "exiv2")
(version "0.25")
(version "0.26")
(source (origin
(method url-fetch)
(uri (list (string-append "http://www.exiv2.org/exiv2-"
(uri (list (string-append "http://www.exiv2.org/builds/exiv2-"
version "-trunk.tar.gz")
(string-append "http://www.exiv2.org/exiv2-"
version ".tar.gz")
(string-append "https://fossies.org/linux/misc/exiv2-"
version ".tar.gz")))
(sha256
(base32
"197g6vgcpyf9p2cwn5p5hb1r714xsk1v4p96f5pv1z8mi9vzq2y8"))))
"1hsdzlzgkipprqh93yj81mrckl2l7c2mn2i84691pallnjz5qqhc"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no `check' target
(propagated-inputs

View file

@ -51,10 +51,12 @@ (define-module (gnu packages java)
#:use-module (gnu packages guile)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux) ;alsa
#:use-module (gnu packages wget)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages perl)
#:use-module (gnu packages popt)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
@ -160,8 +162,22 @@ (define sablevm
"1jyg4bsym6igz94wps5443c7wiwlzinqzkchcw972nz4kf1cql6g"))))
(build-system gnu-build-system)
(arguments
`(#:phases
`(#:configure-flags
(list "--with-internal-libffi=no"
"--with-internal-libpopt=no")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'remove-timestamp-for-reproducibility
(lambda _
(substitute* "src/sablevm/Makefile.in"
(("\\$\\(SVMCOMPILETIME\\)") "(unknown)"))
#t))
(add-after 'unpack 'link-with-popt
(lambda _
(substitute* "src/sablevm/Makefile.in"
(("\\$\\(SVMADD\\)" match)
(string-append match " -lpopt")))
#t))
(add-after 'unpack 'patch-path-to-classpath
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "Makefile.in"
@ -179,7 +195,9 @@ (define sablevm
(inputs
`(("classpath" ,sablevm-classpath)
("jikes" ,jikes)
("zlib" ,zlib)))
("zlib" ,zlib)
("popt" ,popt)
("libffi" ,libffi)))
(native-inputs
`(("libltdl" ,libltdl)))
(home-page "http://sablevm.org/")

View file

@ -39,7 +39,7 @@ (define-module (gnu packages kde)
(define-public kdevelop
(package
(name "kdevelop")
(version "5.1.0")
(version "5.1.1")
(source
(origin
(method url-fetch)
@ -48,7 +48,7 @@ (define-public kdevelop
version ".tar.xz"))
(sha256
(base32
"1s4cbkx2a0p73b52yxmf5dhv08xk9pxgrkjsnbzy76ssfr545g60"))))
"0m6pnmylp1gij5cr75waz8hjry5894qillj5977h467hnbzs808a"))))
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
@ -100,6 +100,7 @@ (define-public kdevelop
(kio (assoc-ref inputs "kio"))
(kcmutils (assoc-ref inputs "kcmutils"))
(qtquickcontrols (assoc-ref inputs "qtquickcontrols"))
(qtbase (assoc-ref inputs "qtbase"))
(qtdeclarative (assoc-ref inputs "qtdeclarative"))
(profile "$HOME/.guix-profile")
(qml "/qml"))
@ -107,6 +108,8 @@ (define-public kdevelop
`("XDG_DATA_DIRS" ":" prefix
,(map (lambda (s) (string-append s "/share"))
(list profile out kdevplatform kcmutils)))
`("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
(,(string-append qtbase "/plugins/platforms")))
`("QT_PLUGIN_PATH" ":" prefix
,(map (lambda (s) (string-append s "/lib/plugins"))
(list profile out kdevplatform kio)))
@ -148,7 +151,7 @@ (define-public kdevelop-pg-qt
(define-public kdevplatform
(package
(name "kdevplatform")
(version "5.1.0")
(version "5.1.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kde/stable/kdevelop"
@ -156,7 +159,7 @@ (define-public kdevplatform
version ".tar.xz"))
(sha256
(base32
"1nxf66vk6p7lmckdsha9fpq3zchwbg79qhy49f4hndlxgj03p7zh"))))
"09p7lvniw55g6x8v8wl3azlps8c13yx03x1m9cd3qdxi282l8n9i"))))
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)

View file

@ -77,105 +77,105 @@ (define-public rdmd
(license license:boost1.0)))
(define-public ldc-bootstrap
(package
(name "ldc")
(version "0.17.3")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/ldc/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"135rgwwk82ccqp4n3fhqz4696jmvip90fg5ql2kccq5h1r71gb82"))))
(build-system cmake-build-system)
(supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-submodule-sources
(lambda* (#:key inputs #:allow-other-keys)
(let ((unpack (lambda (source target)
(with-directory-excursion target
(zero? (system* "tar" "xvf"
(assoc-ref inputs source)
"--strip-components=1"))))))
(and (unpack "phobos-src" "runtime/phobos")
(unpack "druntime-src" "runtime/druntime")
(unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))))
(add-after 'unpack-submodule-sources 'patch-dmd2
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "dmd2/root/port.c"
((" ::isnan") " isnan")
((" ::isinf") " isinf")
(("#undef isnan") "")
(("#undef isinf") ""))
#t))
(add-after 'unpack-submodule-sources 'patch-phobos
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "runtime/phobos/std/process.d"
(("/bin/sh") (which "sh"))
(("echo") (which "echo")))
(substitute* "runtime/phobos/std/datetime.d"
(("/usr/share/zoneinfo/")
(string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
(substitute* "tests/d2/dmd-testsuite/Makefile"
(("/bin/bash") (which "bash")))
;; FIXME: this test cannot be linked.
(delete-file "tests/d2/dmd-testsuite/runnable/cppa.d")
#t)))))
(inputs
`(("libconfig" ,libconfig)
("libedit" ,libedit)
("tzdata" ,tzdata)
("zlib" ,zlib)))
(native-inputs
`(("llvm" ,llvm)
("clang" ,clang)
("python-lit" ,python-lit)
("python-wrapper" ,python-wrapper)
("unzip" ,unzip)
("phobos-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/phobos/archive/ldc-v"
version ".tar.gz"))
(sha256
(base32
"0qywnvnp019mmmr74aw90ir9f03iz0hc7cgzna609agsar0b27jl"))
(patches (search-patches "ldc-disable-tests.patch"))))
("druntime-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/druntime/archive/ldc-v"
version ".tar.gz"))
(sha256
(base32
"0z418n6x2fxac07sxpi4rl69069qiym4w6r9sjppn91q58qh8hjs"))))
("dmd-testsuite-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
version ".tar.gz"))
(sha256
(base32
"196mkfax5y3yqm3gz7jhqhnkjwrvr2m4a8nc9k41l0511ldzsk9x"))))))
(home-page "http://wiki.dlang.org/LDC")
(synopsis "LLVM compiler for the D programming language")
(description
"LDC is a compiler for the D programming language. It is based on the
(let ((runtime-version "0.17.3"))
(package
(name "ldc")
(version "0.17.4")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/ldc/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1kw0j378k6bh0k66dvx99bjq8ilp8bb24w3jrmibn8rhmqv0d5q8"))))
(build-system cmake-build-system)
(supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-submodule-sources
(lambda* (#:key inputs #:allow-other-keys)
(let ((unpack (lambda (source target)
(with-directory-excursion target
(zero? (system* "tar" "xvf"
(assoc-ref inputs source)
"--strip-components=1"))))))
(and (unpack "phobos-src" "runtime/phobos")
(unpack "druntime-src" "runtime/druntime")
(unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))))
(add-after 'unpack-submodule-sources 'patch-dmd2
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "dmd2/root/port.c"
((" ::isnan") " isnan")
((" ::isinf") " isinf")
(("#undef isnan") "")
(("#undef isinf") ""))
#t))
(add-after 'unpack-submodule-sources 'patch-phobos
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "runtime/phobos/std/process.d"
(("/bin/sh") (which "sh"))
(("echo") (which "echo")))
(substitute* "runtime/phobos/std/datetime.d"
(("/usr/share/zoneinfo/")
(string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
(substitute* "tests/d2/dmd-testsuite/Makefile"
(("/bin/bash") (which "bash")))
;; FIXME: this test cannot be linked.
(delete-file "tests/d2/dmd-testsuite/runnable/cppa.d")
#t)))))
(inputs
`(("libconfig" ,libconfig)
("libedit" ,libedit)
("tzdata" ,tzdata)
("zlib" ,zlib)))
(native-inputs
`(("llvm" ,llvm)
("clang" ,clang)
("python-lit" ,python-lit)
("python-wrapper" ,python-wrapper)
("unzip" ,unzip)
("phobos-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/phobos/archive/ldc-v"
runtime-version ".tar.gz"))
(sha256
(base32
"0qywnvnp019mmmr74aw90ir9f03iz0hc7cgzna609agsar0b27jl"))
(patches (search-patches "ldc-disable-tests.patch"))))
("druntime-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/druntime/archive/ldc-v"
runtime-version ".tar.gz"))
(sha256
(base32
"0z418n6x2fxac07sxpi4rl69069qiym4w6r9sjppn91q58qh8hjs"))))
("dmd-testsuite-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
runtime-version ".tar.gz"))
(sha256
(base32
"196mkfax5y3yqm3gz7jhqhnkjwrvr2m4a8nc9k41l0511ldzsk9x"))))))
(home-page "http://wiki.dlang.org/LDC")
(synopsis "LLVM compiler for the D programming language")
(description
"LDC is a compiler for the D programming language. It is based on the
latest DMD frontend and uses LLVM as backend.")
;; Most of the code is released under BSD-3, except for code originally
;; written for GDC, which is released under GPLv2+, and the DMD frontend,
;; which is released under the "Boost Software License version 1.0".
(license (list license:bsd-3
license:gpl2+
license:boost1.0))))
;; Most of the code is released under BSD-3, except for code originally
;; written for GDC, which is released under GPLv2+, and the DMD frontend,
;; which is released under the "Boost Software License version 1.0".
(license (list license:bsd-3
license:gpl2+
license:boost1.0)))))
(define-public ldc
;; The phobos, druntime and dmd-testsuite dependencies do not have a newer

View file

@ -584,14 +584,15 @@ (define-public libodfgen
(define-public libmwaw
(package
(name "libmwaw")
(version "0.3.5")
(version "0.3.11")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/" name "/" name "/" name "-"
version "/" name "-" version ".tar.xz"))
(patches (search-patches "libmwaw-CVE-2017-9433.patch"))
(sha256 (base32
"1vx9h419fcfcs0yj071hsg9d2qvkacgca6052m8hv3h743cdmzil"))))
"16i9s9p4sjpdpbm3gq6jkc9r3nyfy47ggkdlgh7vr0mydccklj2b"))))
(build-system gnu-build-system)
(native-inputs
`(("doxygen" ,doxygen)

View file

@ -36,7 +36,7 @@ (define-module (gnu packages lighting)
(define-public ola
(package
(name "ola")
(version "0.10.3")
(version "0.10.4")
(source (origin
(method url-fetch)
(uri (string-append
@ -45,7 +45,7 @@ (define-public ola
(patches (search-patches "ola-readdir-r.patch"))
(sha256
(base32
"1yf1yy9n64n73zjq2bwc0gik0dd3n05297hdrrma2qvb0imzm5h1"))))
"01zpm0vpin784jyjhbdad097a4i0cjdfrqqfbsvx47d6nbssq2my"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)

View file

@ -358,8 +358,8 @@ (define* (make-linux-libre version hash supported-systems
(define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
(define %linux-libre-version "4.11.4")
(define %linux-libre-hash "11nd9pv18vz3g82ja71dkz9mbs0ffb8yamsd44d381szmmm2kpj8")
(define %linux-libre-version "4.11.6")
(define %linux-libre-hash "0xay0m2a4la8aqc8ai8zqfh1c1i6sjgh0dywm7nis0g1gqirwrds")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@ -368,32 +368,22 @@ (define-public linux-libre
#:configuration-file kernel-config))
(define-public linux-libre-4.9
(make-linux-libre "4.9.31"
"0amc35c9f2rym6grb277yscnx8ybn8d4fbc2a59sgkg1lsdv7n4q"
(make-linux-libre "4.9.33"
"1dam6vqymhlx1vsl0lzxphamiifgyf97snxg18b2czqq402nz094"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
(make-linux-libre "4.4.71"
"0nrd165crx9m9s1px98if6q5dcdqwmas9kh8i4rw51gz2xinh0gx"
(make-linux-libre "4.4.73"
"144ssqw1dr86z4cgl797pq5rggfibsxqk7wmfbl6j92l1cj6yjrz"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.1
(make-linux-libre "4.1.40"
"0ygc5qaxwd4yxyzyq6qya9w111q24xqzxd33x73pmg3hr7asvy4x"
(make-linux-libre "4.1.41"
"02mqfl899jxvrmxlh8lvcgvm3klwd8wbsdz4rr2gpchbggj4vgb2"
%intel-compatible-systems
#:configuration-file kernel-config
#:patches
(list %boot-logo-patch
(origin
(method url-fetch)
(uri "\
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4")
(file-name "linux-libre-CVE-2017-6074.patch")
(sha256
(base32
"1x40slfz1qxgiaznyy13bwlh34450pkyyrkljpyjlx6c4mrzb1jj"))))))
#:configuration-file kernel-config))
(define-public linux-libre-arm-generic
(make-linux-libre %linux-libre-version
@ -3387,14 +3377,14 @@ (define-public module-init-tools
(define-public mcelog
(package
(name "mcelog")
(version "152")
(version "153")
(source (origin
(method url-fetch)
(uri (string-append "https://git.kernel.org/cgit/utils/cpu/mce/"
"mcelog.git/snapshot/v" version ".tar.gz"))
(sha256
(base32
"0df1kbiw1pl84l6b9g515lpk5a81hmy8r27yakr4hrmi2vwzdfh6"))
"0q40d60p1klzg0aznvxhxgjlddwcxfj2q59s4q86sf9ild6rcdhl"))
(file-name (string-append name "-" version ".tar.gz"))
(modules '((guix build utils)))
(snippet
@ -3960,10 +3950,11 @@ (define-public proot
;; build currently.)
(system* "make" "-C" "src" "install"
(string-append "PREFIX=" out)))
(begin
(install-file "doc/proot/man.1"
(string-append out "/share"
"/man/man1"))
(let ((man1 (string-append out
"/share/man/man1")))
(mkdir-p man1)
(copy-file "doc/proot/man.1"
(string-append man1 "/proot.1"))
#t))))))))
(native-inputs `(("which" ,which)

View file

@ -15,7 +15,7 @@
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz>
;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.infotropique.org>
;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
@ -265,7 +265,7 @@ (define-public neomutt
(package
(inherit mutt)
(name "neomutt")
(version "20170602")
(version "20170609")
(source
(origin
(method url-fetch)
@ -273,7 +273,7 @@ (define-public neomutt
"/archive/" name "-" version ".tar.gz"))
(sha256
(base32
"1kzhkz8bdqbdh5b6pzqb6ikp8d3nsic906b5pkmi6qlaga32yxjk"))))
"1kdhnhdlv84v6brhqgh8g0h6cpcbwfc59b4g09zkkgqc4fnggapy"))))
(inputs
`(("cyrus-sasl" ,cyrus-sasl)
("gdbm" ,gdbm)
@ -296,10 +296,7 @@ (define-public neomutt
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags
(list "--enable-smtp"
"--enable-imap"
"--enable-pop"
"--enable-gpgme"
(list "--enable-gpgme"
;; database, implies header caching
"--without-tokyocabinet"
@ -325,8 +322,6 @@ (define-public neomutt
"--with-mailpath=/var/mail"
"--with-external-dotlock"
"--enable-nntp"
"--enable-compressed"
(string-append "--with-curses="
(assoc-ref %build-inputs "ncurses")))

View file

@ -37,7 +37,7 @@ (define-module (gnu packages mate)
(define-public mate-icon-theme
(package
(name "mate-icon-theme")
(version "1.16.0")
(version "1.18.2")
(source (origin
(method url-fetch)
(uri (string-append "http://pub.mate-desktop.org/releases/"
@ -45,7 +45,7 @@ (define-public mate-icon-theme
name "-" version ".tar.xz"))
(sha256
(base32
"1zldw22p1i76iss8car39pmfagpfxxlfk1fdhvr4x5r6gf36gv7d"))))
"0si3li3kza7s45zhasjvqn5f85zpkn0x8i4kq1dlnqvjjqzkg4ch"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@ -92,7 +92,7 @@ (define-public mate-themes
(define-public mate-desktop
(package
(name "mate-desktop")
(version "1.16.1")
(version "1.18.0")
(source (origin
(method url-fetch)
(uri (string-append "http://pub.mate-desktop.org/releases/"
@ -100,11 +100,8 @@ (define-public mate-desktop
name "-" version ".tar.xz"))
(sha256
(base32
"1pzncfgrzp2mp9407ivk1113hkadpf110blr058h31jkwsk8syjq"))))
"12iv2y4dan962fs7vkkxbjkp77pbvjnwfa43ggr0zkdsc3ydjbbg"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-gtk=3.0"
"--enable-mpaste")))
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)
@ -115,7 +112,6 @@ (define-public mate-desktop
(inputs
`(("gtk+" ,gtk+)
("libxrandr" ,libxrandr)
("python2" ,python-2)
("startup-notification" ,startup-notification)))
(propagated-inputs
`(("dconf" ,dconf))) ; mate-desktop-2.0.pc
@ -129,7 +125,7 @@ (define-public mate-desktop
(define-public libmateweather
(package
(name "libmateweather")
(version "1.16.1")
(version "1.18.1")
(source (origin
(method url-fetch)
(uri (string-append "http://pub.mate-desktop.org/releases/"
@ -137,14 +133,13 @@ (define-public libmateweather
name "-" version ".tar.xz"))
(sha256
(base32
"0w1b8b1ckmkbvwnqi9yh2lwbskzhz99s5yxdkar5xiqylnjrwmm3"))))
"0z6vfh42fv9rqjrraqfpf6h9nd9h662bxy3l3r48j19xvxrwmx3a"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
`("--with-gtk=3.0"
,(string-append "--with-zoneinfo-dir="
(assoc-ref %build-inputs "tzdata")
"/share/zoneinfo"))
(list (string-append "--with-zoneinfo-dir="
(assoc-ref %build-inputs "tzdata")
"/share/zoneinfo"))
#:phases
(modify-phases %standard-phases
(add-before
@ -178,7 +173,7 @@ (define-public libmateweather
(define-public mate-menus
(package
(name "mate-menus")
(version "1.16.0")
(version "1.18.0")
(source (origin
(method url-fetch)
(uri (string-append "http://pub.mate-desktop.org/releases/"
@ -186,7 +181,7 @@ (define-public mate-menus
name "-" version ".tar.xz"))
(sha256
(base32
"0crw07iszwsqk54y8znfqdgfz76rjdz8992v4q9kpwwlrl11xmc5"))))
"05kyr37xqv6hm1rlvnqd5ng0x1n883brqynkirkk5drl56axnz7h"))))
(build-system gnu-build-system)
(arguments
`(#:phases

View file

@ -75,7 +75,7 @@ (define-public libmpdclient
(define-public mpd
(package
(name "mpd")
(version "0.20.6")
(version "0.20.9")
(source (origin
(method url-fetch)
(uri
@ -84,7 +84,7 @@ (define-public mpd
"/mpd-" version ".tar.xz"))
(sha256
(base32
"0isbpa79m7zf09w3s1ry638cw96rxasy1ch66zl01k75i48mw1gl"))))
"1dsfwd0i81x8m9idi7idm9612mpf1g5lzcy69h04nd9jks3a4xyd"))))
(build-system gnu-build-system)
(arguments
`(#:phases

View file

@ -14,6 +14,7 @@
;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -31,12 +32,12 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages networking)
#:use-module (guix build-system perl)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
@ -64,7 +65,8 @@ (define-module (gnu packages networking)
#:use-module (gnu packages python)
#:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind))
#:use-module (gnu packages valgrind)
#:use-module (ice-9 match))
(define-public macchanger
(package
@ -433,7 +435,7 @@ (define-public iodine
(define-public whois
(package
(name "whois")
(version "5.2.15")
(version "5.2.16")
(source
(origin
(method url-fetch)
@ -441,7 +443,7 @@ (define-public whois
name "_" version ".tar.xz"))
(sha256
(base32
"123ingf699javzh8qm6ny10nl28zbjzasa4k5pcn0qzw1dlnnnks"))))
"0fpwac26ja0rdqsbxyjcsk8gxgixfpxk0baj3rhnpaff3jv0ilp9"))))
(build-system gnu-build-system)
;; TODO: unbundle mkpasswd binary + its po files.
(arguments
@ -634,7 +636,12 @@ (define-public aircrack-ng
"libnl=true"
"pcre=true"
"experimental=true" ;build wesside-ng, etc.
"AVX2FLAG=N" "AVX1FLAG=N" "SSEFLAG=Y"
"AVX2FLAG=N" "AVX1FLAG=N"
,,@(match (%current-system)
((or "x86_64-linux" "i686-linux")
`("SSEFLAG=Y"))
(_
`("NEWSSE=false")))
,(string-append "prefix=" %output))
#:phases (modify-phases %standard-phases
(delete 'configure) ;no configure phase

View file

@ -0,0 +1,83 @@
Store the crawl version in the textdatabases in SAVEDIR and
upgrade the databases when the crawl version changes.
By default crawl checks for a mtime difference on files in DATADIR to see if an
upgrade is required, but guix nulls all file dates,
and crawl would never upgrade saves.
--- a/source/database.cc 2016-05-31 09:56:08.000000000 +0200
+++ a/source/database.cc 2017-06-05 03:00:19.270632107 +0200
@@ -25,6 +25,7 @@
#include "syscalls.h"
#include "threads.h"
#include "unicode.h"
+#include "version.h"
// TextDB handles dependency checking the db vs text files, creating the
// db, loading, and destroying the DB.
@@ -55,6 +56,7 @@
vector<string> _input_files;
DBM* _db;
string timestamp;
+ string version;
TextDB *_parent;
const char* lang() { return _parent ? Options.lang_name : 0; }
public:
@@ -165,7 +167,7 @@
TextDB::TextDB(const char* db_name, const char* dir, ...)
: _db_name(db_name), _directory(dir),
- _db(nullptr), timestamp(""), _parent(0), translation(0)
+ _db(nullptr), timestamp(""), version(""), _parent(0), translation(0)
{
va_list args;
va_start(args, dir);
@@ -187,7 +189,7 @@
: _db_name(parent->_db_name),
_directory(parent->_directory + Options.lang_name + "/"),
_input_files(parent->_input_files), // FIXME: pointless copy
- _db(nullptr), timestamp(""), _parent(parent), translation(nullptr)
+ _db(nullptr), timestamp(""), version(""), _parent(parent), translation(nullptr)
{
}
@@ -202,6 +204,9 @@
return false;
timestamp = _query_database(*this, "TIMESTAMP", false, false, true);
+ version = _query_database(*this, "VERSION", false, false, true);
+ if (version.empty())
+ return false;
if (timestamp.empty())
return false;
@@ -245,6 +250,9 @@
string ts;
bool no_files = true;
+ if (string(Version::Long) != version)
+ return true;
+
for (const string &file : _input_files)
{
string full_input_path = _directory + file;
@@ -261,7 +269,7 @@
ts += buf;
}
- if (no_files && timestamp.empty())
+ if (no_files && timestamp.empty() && version.empty())
{
// No point in empty databases, although for simplicity keep ones
// for disappeared translations for now.
@@ -321,7 +329,10 @@
_store_text_db(full_input_path, _db);
}
}
+
+ string current_version = string(Version::Long);
_add_entry(_db, "TIMESTAMP", ts);
+ _add_entry(_db, "VERSION", current_version);
dbm_close(_db);
_db = 0;

View file

@ -0,0 +1,65 @@
This patch was taken from https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00375.html.
It is used by propeller-gcc-4.
Since the 3.0.3 release of gperf (made in May 2007), the generated func
has had the gnu_inline attribute applied to it. The gcc source however
has not been updated to include that which has lead to a mismatch.
In practice, this hasn't been an issue for two reasons:
(1) Before gcc-5, the default standard was (gnu) C89, and gcc does not
warn or throw an error in this mode.
(2) Starting with gcc-4.8, the compiler driver used to build gcc was
changed to C++, and g++ does not warn or throw an error in this mode.
This error does show up though when using gcc-5 to build gcc-4.7 or
older as then the default is (gnu) C11 and the C compiler driver is
used. That failure looks like:
In file included from .../gcc-4.7.4/gcc/cp/except.c:990:0:
cfns.gperf: At top level:
cfns.gperf:101:1: error: 'gnu_inline' attribute present on 'libc_name_p'
cfns.gperf:26:14: error: but not here
Whether the compiler should always emit this error regardless of the
active standard or compiler driver is debatable (I think it should be
consistent -- either always do it or never do it).
2015-08-06 Mike Frysinger <vapier@gentoo.org>
* cfns.gperf [__GNUC__, __GNUC_STDC_INLINE__]: Apply the
__gnu_inline__ attribute.
* cfns.h: Regenerated.
---
gcc/cp/cfns.gperf | 3 +++
gcc/cp/cfns.h | 3 +++
2 files changed, 6 insertions(+)
diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf
index 68acd3d..953262f 100644
--- a/gcc/cp/cfns.gperf
+++ b/gcc/cp/cfns.gperf
@@ -22,6 +22,9 @@ __inline
static unsigned int hash (const char *, unsigned int);
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const char * libc_name_p (const char *, unsigned int);
%}
diff --git a/gcc/cp/cfns.h b/gcc/cp/cfns.h
index 1c6665d..6d00c0e 100644
--- a/gcc/cp/cfns.h
+++ b/gcc/cp/cfns.h
@@ -53,6 +53,9 @@ __inline
static unsigned int hash (const char *, unsigned int);
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const char * libc_name_p (const char *, unsigned int);
/* maximum key range = 391, duplicates = 0 */
--
2.4.4

View file

@ -1,16 +1,22 @@
Somehow, Aspell 0.60.6.1 and aspell-dict-en-2016.11.20-0 don't consider
this a valid spelling. Skip it.
--- gspell-1.3.2/testsuite/test-checker.c 2017-05-17 16:02:40.832415940 +0200
+++ gspell-1.3.2/testsuite/test-checker.c 2017-05-17 16:02:50.768351895 +0200
@@ -101,9 +101,6 @@ test_dashes (void)
checker = gspell_checker_new (lang);
TODO: Migrate to using hunspell. According to upstream, this bug won't be fixed.
See https://bugzilla.gnome.org/show_bug.cgi?id=772406.
--- a/testsuite/test-checker.c 2017-03-24 09:50:50.000000000 -0400
+++ b/testsuite/test-checker.c 2017-06-15 21:47:07.116173895 -0400
@@ -105,10 +105,11 @@
* be considered deprecated, it is better to use hunspell, so WONTFIX.
* For more details, see:
* https://bugzilla.gnome.org/show_bug.cgi?id=772406
+ *
+ * correctly_spelled = gspell_checker_check_word (checker, "spell-checking", -1, &error);
+ * g_assert_no_error (error);
+ * g_assert (correctly_spelled);
*/
- correctly_spelled = gspell_checker_check_word (checker, "spell-checking", -1, &error);
- g_assert_no_error (error);
- g_assert (correctly_spelled);
correctly_spelled = gspell_checker_check_word (checker, "nrst-auie", -1, &error);
g_assert_no_error (error);

View file

@ -0,0 +1,28 @@
Avoid asynchronous channel finalization, which could lead to segfaults due to
libssh not being thread-safe: <https://bugs.gnu.org/26976>.
--- guile-ssh-0.11.0/modules/ssh/dist/node.scm 2017-06-13 14:37:44.861671297 +0200
+++ guile-ssh-0.11.0/modules/ssh/dist/node.scm 2017-06-13 14:38:02.841580565 +0200
@@ -391,11 +391,18 @@ listens on an expected port, return #f o
"Evaluate QUOTED-EXP on the node and return the evaluated result."
(let ((repl-channel (node-open-rrepl node)))
(rrepl-skip-to-prompt repl-channel)
- (call-with-values (lambda () (rrepl-eval repl-channel quoted-exp))
- (lambda vals
- (and (node-stop-repl-server? node)
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (rrepl-eval repl-channel quoted-exp))
+ (lambda ()
+ (when (node-stop-repl-server? node)
(node-stop-server node))
- (apply values vals)))))
+
+ ;; Close REPL-CHANNEL right away to prevent finalization from
+ ;; happening in another thread at the wrong time (see
+ ;; <https://bugs.gnu.org/26976>.)
+ (close-port repl-channel)))))
(define (node-eval-1 node quoted-exp)
"Evaluate QUOTED-EXP on the node and return the evaluated result. The

View file

@ -1,360 +0,0 @@
Fix build with ffmpeg-3, based on upstream revisions r35548 and r35549 by LRN
and r36975 by Christian Grothoff, and backported to libextractor-1.3 by
Mark H Weaver <mhw@netris.org>
--- libextractor-1.3/src/plugins/thumbnailffmpeg_extractor.c.orig 2013-12-21 11:04:41.000000000 -0500
+++ libextractor-1.3/src/plugins/thumbnailffmpeg_extractor.c 2016-04-04 23:38:46.429041081 -0400
@@ -59,6 +59,12 @@
#include <ffmpeg/swscale.h>
#endif
+#ifdef PIX_FMT_RGB24
+#define PIX_OUTPUT_FORMAT PIX_FMT_RGB24
+#else
+#define PIX_OUTPUT_FORMAT AV_PIX_FMT_RGB24
+#endif
+
/**
* Set to 1 to enable debug output.
*/
@@ -153,7 +159,7 @@
static size_t
create_thumbnail (int src_width, int src_height,
int src_stride[],
- enum PixelFormat src_pixfmt,
+ enum AVPixelFormat src_pixfmt,
const uint8_t * const src_data[],
int dst_width, int dst_height,
uint8_t **output_data,
@@ -189,7 +195,8 @@
if (NULL ==
(scaler_ctx =
sws_getContext (src_width, src_height, src_pixfmt,
- dst_width, dst_height, PIX_FMT_RGB24,
+ dst_width, dst_height,
+ PIX_OUTPUT_FORMAT,
SWS_BILINEAR, NULL, NULL, NULL)))
{
#if DEBUG
@@ -199,7 +206,12 @@
return 0;
}
- if (NULL == (dst_frame = avcodec_alloc_frame ()))
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ dst_frame = av_frame_alloc ();
+#else
+ dst_frame = avcodec_alloc_frame();
+#endif
+ if (NULL == dst_frame)
{
#if DEBUG
fprintf (stderr,
@@ -209,18 +221,24 @@
return 0;
}
if (NULL == (dst_buffer =
- av_malloc (avpicture_get_size (PIX_FMT_RGB24, dst_width, dst_height))))
+ av_malloc (avpicture_get_size (PIX_OUTPUT_FORMAT,
+ dst_width, dst_height))))
{
#if DEBUG
fprintf (stderr,
"Failed to allocate the destination image buffer\n");
#endif
- av_free (dst_frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&dst_frame);
+#else
+ avcodec_free_frame (&dst_frame);
+#endif
sws_freeContext (scaler_ctx);
return 0;
}
avpicture_fill ((AVPicture *) dst_frame, dst_buffer,
- PIX_FMT_RGB24, dst_width, dst_height);
+ PIX_OUTPUT_FORMAT,
+ dst_width, dst_height);
sws_scale (scaler_ctx,
src_data,
src_stride,
@@ -236,7 +254,11 @@
"Failed to allocate the encoder output buffer\n");
#endif
av_free (dst_buffer);
- av_free (dst_frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&dst_frame);
+#else
+ avcodec_free_frame (&dst_frame);
+#endif
sws_freeContext (scaler_ctx);
return 0;
}
@@ -249,13 +271,17 @@
#endif
av_free (encoder_output_buffer);
av_free (dst_buffer);
- av_free (dst_frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&dst_frame);
+#else
+ avcodec_free_frame (&dst_frame);
+#endif
sws_freeContext (scaler_ctx);
return 0;
}
encoder_codec_ctx->width = dst_width;
encoder_codec_ctx->height = dst_height;
- encoder_codec_ctx->pix_fmt = PIX_FMT_RGB24;
+ encoder_codec_ctx->pix_fmt = PIX_OUTPUT_FORMAT;
opts = NULL;
if (avcodec_open2 (encoder_codec_ctx, encoder_codec, &opts) < 0)
{
@@ -263,10 +289,14 @@
fprintf (stderr,
"Failed to open the encoder\n");
#endif
- av_free (encoder_codec_ctx);
+ avcodec_free_context (&encoder_codec_ctx);
av_free (encoder_output_buffer);
av_free (dst_buffer);
- av_free (dst_frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&dst_frame);
+#else
+ avcodec_free_frame (&dst_frame);
+#endif
sws_freeContext (scaler_ctx);
return 0;
}
@@ -295,9 +325,13 @@
cleanup:
av_dict_free (&opts);
avcodec_close (encoder_codec_ctx);
- av_free (encoder_codec_ctx);
+ avcodec_free_context (&encoder_codec_ctx);
av_free (dst_buffer);
- av_free (dst_frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&dst_frame);
+#else
+ avcodec_free_frame (&dst_frame);
+#endif
sws_freeContext (scaler_ctx);
*output_data = encoder_output_buffer;
@@ -406,18 +440,23 @@
fprintf (stderr,
"Failed to open image codec\n");
#endif
- av_free (codec_ctx);
+ avcodec_free_context (&codec_ctx);
return;
}
av_dict_free (&opts);
- if (NULL == (frame = avcodec_alloc_frame ()))
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ frame = av_frame_alloc ();
+#else
+ frame = avcodec_alloc_frame();
+#endif
+ if (NULL == frame)
{
#if DEBUG
fprintf (stderr,
"Failed to allocate frame\n");
#endif
avcodec_close (codec_ctx);
- av_free (codec_ctx);
+ avcodec_free_context (&codec_ctx);
return;
}
@@ -441,9 +480,13 @@
fprintf (stderr,
"Failed to decode a complete frame\n");
#endif
- av_free (frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&frame);
+#else
+ avcodec_free_frame (&frame);
+#endif
avcodec_close (codec_ctx);
- av_free (codec_ctx);
+ avcodec_free_context (&codec_ctx);
return;
}
calculate_thumbnail_dimensions (codec_ctx->width, codec_ctx->height,
@@ -467,9 +510,13 @@
err);
av_free (encoded_thumbnail);
}
- av_free (frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&frame);
+#else
+ avcodec_free_frame (&frame);
+#endif
avcodec_close (codec_ctx);
- av_free (codec_ctx);
+ avcodec_free_context (&codec_ctx);
}
@@ -563,7 +610,12 @@
return;
}
- if (NULL == (frame = avcodec_alloc_frame ()))
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ frame = av_frame_alloc ();
+#else
+ frame = avcodec_alloc_frame();
+#endif
+ if (NULL == frame)
{
#if DEBUG
fprintf (stderr,
@@ -616,7 +668,11 @@
fprintf (stderr,
"Failed to decode a complete frame\n");
#endif
- av_free (frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&frame);
+#else
+ avcodec_free_frame (&frame);
+#endif
avcodec_close (codec_ctx);
avformat_close_input (&format_ctx);
av_free (io_ctx);
@@ -643,7 +699,11 @@
err);
av_free (encoded_thumbnail);
}
- av_free (frame);
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&frame);
+#else
+ avcodec_free_frame (&frame);
+#endif
avcodec_close (codec_ctx);
avformat_close_input (&format_ctx);
av_free (io_ctx);
--- libextractor-1.3/src/plugins/previewopus_extractor.c.orig 2013-12-22 17:44:18.000000000 -0500
+++ libextractor-1.3/src/plugins/previewopus_extractor.c 2016-04-04 23:39:41.377720710 -0400
@@ -296,8 +296,13 @@
/** Initialize one audio frame for reading from the input file */
static int init_input_frame(AVFrame **frame)
{
- if (!(*frame = avcodec_alloc_frame())) {
- #if DEBUG
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ *frame = av_frame_alloc ();
+#else
+ *frame = avcodec_alloc_frame();
+#endif
+ if (NULL == *frame) {
+#if DEBUG
fprintf(stderr, "Could not allocate input frame\n");
#endif
return AVERROR(ENOMEM);
@@ -655,7 +660,11 @@
av_freep(&converted_input_samples[0]);
free(converted_input_samples);
}
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&input_frame);
+#else
avcodec_free_frame(&input_frame);
+#endif
return ret;
}
@@ -671,10 +680,15 @@
int error;
/** Create a new frame to store the audio samples. */
- if (!(*frame = avcodec_alloc_frame())) {
- #if DEBUG
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ *frame = av_frame_alloc ();
+#else
+ *frame = avcodec_alloc_frame();
+#endif
+ if (NULL == *frame) {
+#if DEBUG
fprintf(stderr, "Could not allocate output frame\n");
- #endif
+#endif
return AVERROR_EXIT;
}
@@ -699,10 +713,14 @@
* sure that the audio frame can hold as many samples as specified.
*/
if ((error = av_frame_get_buffer(*frame, 0)) < 0) {
- #if DEBUG
+#if DEBUG
fprintf(stderr, "Could allocate output frame samples (error '%s')\n", get_error_text(error));
- #endif
+#endif
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (frame);
+#else
avcodec_free_frame(frame);
+#endif
return error;
}
@@ -780,20 +798,32 @@
* The samples are stored in the frame temporarily.
*/
if (av_audio_fifo_read(fifo, (void **)output_frame->data, frame_size) < frame_size) {
- #if DEBUG
+#if DEBUG
fprintf(stderr, "Could not read data from FIFO\n");
- #endif
+#endif
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&output_frame);
+#else
avcodec_free_frame(&output_frame);
+#endif
return AVERROR_EXIT;
}
/** Encode one frame worth of audio samples. */
if (encode_audio_frame(output_frame, output_format_context,
output_codec_context, &data_written)) {
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&output_frame);
+#else
avcodec_free_frame(&output_frame);
+#endif
return AVERROR_EXIT;
}
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ av_frame_free (&output_frame);
+#else
avcodec_free_frame(&output_frame);
+#endif
return 0;
}
/** Write the trailer of the output file container. */
@@ -907,7 +937,12 @@
return;
}
- if (NULL == (frame = avcodec_alloc_frame ()))
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
+ frame = av_frame_alloc ();
+#else
+ frame = avcodec_alloc_frame();
+#endif
+ if (NULL == frame)
{
#if DEBUG
fprintf (stderr,

View file

@ -0,0 +1,33 @@
Fix CVE-2017-9433:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9433
Patch copied from upstream source repository:
https://sourceforge.net/p/libmwaw/libmwaw/ci/68b3b74569881248bfb6cbb4266177cc253b292f
From 68b3b74569881248bfb6cbb4266177cc253b292f Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Sat, 8 Apr 2017 14:03:29 +0200
Subject: [PATCH] ofz#1037 resize vector correctly
---
src/lib/MsWrd1Parser.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/MsWrd1Parser.cxx b/src/lib/MsWrd1Parser.cxx
index 63547e6..3626064 100644
--- a/src/lib/MsWrd1Parser.cxx
+++ b/src/lib/MsWrd1Parser.cxx
@@ -902,7 +902,7 @@ bool MsWrd1Parser::readFootnoteCorrespondance(MWAWVec2i limits)
int id = fIt++->second;
fPos[1] = fIt==footnoteMap.end() ? m_state->m_eot : fIt->first;
if (id >= int(m_state->m_footnotesList.size()))
- m_state->m_footnotesList.resize(size_t(id),MWAWVec2l(0,0));
+ m_state->m_footnotesList.resize(size_t(id)+1,MWAWVec2l(0,0));
m_state->m_footnotesList[size_t(id)]=fPos;
}
ascii().addDelimiter(input->tell(),'|');
--
2.13.1

View file

@ -1,34 +0,0 @@
Disable long b64 tests, which consistently fail on armhf.
This is based on an excerpt of the following upstream patch:
https://hg.mozilla.org/projects/nss/rev/00b2cc2b33c7
(we exclude the part of the upstream patch that reverts
an earlier failed attempt, and adapt the file names)
diff --git a/gtests/util_gtest/util_b64_unittest.cc b/gtests/util_gtest/util_b64_unittest.cc
--- a/nss/gtests/util_gtest/util_b64_unittest.cc
+++ b/nss/gtests/util_gtest/util_b64_unittest.cc
@@ -63,17 +63,19 @@ TEST_F(B64EncodeDecodeTest, EncDecTest)
TEST_F(B64EncodeDecodeTest, FakeDecTest) { EXPECT_TRUE(TestFakeDecode(100)); }
TEST_F(B64EncodeDecodeTest, FakeEncDecTest) {
EXPECT_TRUE(TestFakeEncode(100));
}
// These takes a while ...
-TEST_F(B64EncodeDecodeTest, LongFakeDecTest1) {
+TEST_F(B64EncodeDecodeTest, DISABLED_LongFakeDecTest1) {
EXPECT_TRUE(TestFakeDecode(0x66666666));
}
-TEST_F(B64EncodeDecodeTest, LongFakeEncDecTest1) { TestFakeEncode(0x3fffffff); }
-TEST_F(B64EncodeDecodeTest, LongFakeEncDecTest2) {
+TEST_F(B64EncodeDecodeTest, DISABLED_LongFakeEncDecTest1) {
+ TestFakeEncode(0x3fffffff);
+}
+TEST_F(B64EncodeDecodeTest, DISABLED_LongFakeEncDecTest2) {
EXPECT_FALSE(TestFakeEncode(0x40000000));
}
} // namespace nss_test

View file

@ -1,4 +1,4 @@
We've seen some tests take more than 20s to complete on a busy armhf
We've seen some tests take up to 60s to complete on a busy armhf
machine. Even a busy x86_64 machine can use more than 5s on some tests.
Increase timeouts to increase chances of a successful build.
@ -10,7 +10,7 @@ Increase timeouts to increase chances of a successful build.
ASSERT_TRUE_WAIT((client_->state() != TlsAgent::STATE_CONNECTING) &&
(server_->state() != TlsAgent::STATE_CONNECTING),
- 5000);
+ 25000);
+ 300000);
}
void TlsConnectTestBase::EnableExtendedMasterSecret() {
@ -19,7 +19,7 @@ Increase timeouts to increase chances of a successful build.
failing_agent = client_;
}
- ASSERT_TRUE_WAIT(failing_agent->state() == TlsAgent::STATE_ERROR, 5000);
+ ASSERT_TRUE_WAIT(failing_agent->state() == TlsAgent::STATE_ERROR, 25000);
+ ASSERT_TRUE_WAIT(failing_agent->state() == TlsAgent::STATE_ERROR, 300000);
}
void TlsConnectTestBase::ConfigureVersion(uint16_t version) {

View file

@ -0,0 +1,40 @@
Fix CVE-2017-7853:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7853
https://savannah.gnu.org/support/index.php?109265
Patch copied from upstream source repository:
https://git.savannah.gnu.org/cgit/osip.git/commit/?id=1ae06daf3b2375c34af23083394a6f010be24a45
From 1ae06daf3b2375c34af23083394a6f010be24a45 Mon Sep 17 00:00:00 2001
From: Aymeric Moizard <amoizard@gmail.com>
Date: Tue, 21 Feb 2017 17:16:26 +0100
Subject: [PATCH] * fix bug report: sr #109265: SIP message body length
underflow in libosip2-4.1.0 https://savannah.gnu.org/support/?109265
also applicable to current latest version
---
src/osipparser2/osip_message_parse.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/osipparser2/osip_message_parse.c b/src/osipparser2/osip_message_parse.c
index 1628c60..aa35446 100644
--- a/src/osipparser2/osip_message_parse.c
+++ b/src/osipparser2/osip_message_parse.c
@@ -784,6 +784,12 @@ msg_osip_body_parse (osip_message_t * sip, const char *start_of_buf, const char
if ('\n' == start_of_body[0] || '\r' == start_of_body[0])
start_of_body++;
+ /* if message body is empty or contains a single CR/LF */
+ if (end_of_body <= start_of_body) {
+ osip_free (sep_boundary);
+ return OSIP_SYNTAXERROR;
+ }
+
body_len = end_of_body - start_of_body;
/* Skip CR before end boundary. */
--
2.13.1

View file

@ -0,0 +1,28 @@
Fix CVE-2017-5974:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5974
Patch copied from Debian.
Index: zziplib-0.13.62/zzip/memdisk.c
===================================================================
--- zziplib-0.13.62.orig/zzip/memdisk.c
+++ zziplib-0.13.62/zzip/memdisk.c
@@ -216,12 +216,12 @@ zzip_mem_entry_new(ZZIP_DISK * disk, ZZI
/* override sizes/offsets with zip64 values for largefile support */
zzip_extra_zip64 *block = (zzip_extra_zip64 *)
zzip_mem_entry_extra_block(item, ZZIP_EXTRA_zip64);
- if (block)
+ if (block && ZZIP_GET16(block->z_datasize) >= (8 + 8 + 8 + 4))
{
- item->zz_usize = __zzip_get64(block->z_usize);
- item->zz_csize = __zzip_get64(block->z_csize);
- item->zz_offset = __zzip_get64(block->z_offset);
- item->zz_diskstart = __zzip_get32(block->z_diskstart);
+ item->zz_usize = ZZIP_GET64(block->z_usize);
+ item->zz_csize = ZZIP_GET64(block->z_csize);
+ item->zz_offset = ZZIP_GET64(block->z_offset);
+ item->zz_diskstart = ZZIP_GET32(block->z_diskstart);
}
}
/* NOTE:

View file

@ -0,0 +1,32 @@
Fix CVE-2017-5975:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5975
Patch copied from Debian.
Index: zziplib-0.13.62/zzip/memdisk.c
===================================================================
--- zziplib-0.13.62.orig/zzip/memdisk.c
+++ zziplib-0.13.62/zzip/memdisk.c
@@ -173,6 +173,8 @@ zzip_mem_entry_new(ZZIP_DISK * disk, ZZI
return 0; /* errno=ENOMEM; */
___ struct zzip_file_header *header =
zzip_disk_entry_to_file_header(disk, entry);
+ if (!header)
+ { free(item); return 0; }
/* there is a number of duplicated information in the file header
* or the disk entry block. Theoretically some part may be missing
* that exists in the other, ... but we will prefer the disk entry.
Index: zziplib-0.13.62/zzip/mmapped.c
===================================================================
--- zziplib-0.13.62.orig/zzip/mmapped.c
+++ zziplib-0.13.62/zzip/mmapped.c
@@ -289,6 +289,8 @@ zzip_disk_entry_to_file_header(ZZIP_DISK
(disk->buffer + zzip_disk_entry_fileoffset(entry));
if (disk->buffer > file_header || file_header >= disk->endbuf)
return 0;
+ if (ZZIP_GET32(file_header) != ZZIP_FILE_HEADER_MAGIC)
+ return 0;
return (struct zzip_file_header *) file_header;
}

View file

@ -0,0 +1,61 @@
Fix CVE-2017-5976:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5976
Patch copied from Debian.
Index: zziplib-0.13.62/zzip/memdisk.c
===================================================================
--- zziplib-0.13.62.orig/zzip/memdisk.c
+++ zziplib-0.13.62/zzip/memdisk.c
@@ -201,6 +201,7 @@ zzip_mem_entry_new(ZZIP_DISK * disk, ZZI
{
void *mem = malloc(ext1 + 2);
item->zz_ext[1] = mem;
+ item->zz_extlen[1] = ext1 + 2;
memcpy(mem, ptr1, ext1);
((char *) (mem))[ext1 + 0] = 0;
((char *) (mem))[ext1 + 1] = 0;
@@ -209,6 +210,7 @@ zzip_mem_entry_new(ZZIP_DISK * disk, ZZI
{
void *mem = malloc(ext2 + 2);
item->zz_ext[2] = mem;
+ item->zz_extlen[2] = ext2 + 2;
memcpy(mem, ptr2, ext2);
((char *) (mem))[ext2 + 0] = 0;
((char *) (mem))[ext2 + 1] = 0;
@@ -245,8 +247,10 @@ zzip_mem_entry_extra_block(ZZIP_MEM_ENTR
while (1)
{
ZZIP_EXTRA_BLOCK *ext = entry->zz_ext[i];
- if (ext)
+ if (ext && (entry->zz_extlen[i] >= zzip_extra_block_headerlength))
{
+ char *endblock = (char *)ext + entry->zz_extlen[i];
+
while (*(short *) (ext->z_datatype))
{
if (datatype == zzip_extra_block_get_datatype(ext))
@@ -257,6 +261,10 @@ zzip_mem_entry_extra_block(ZZIP_MEM_ENTR
e += zzip_extra_block_headerlength;
e += zzip_extra_block_get_datasize(ext);
ext = (void *) e;
+ if (e >= endblock)
+ {
+ break;
+ }
____;
}
}
Index: zziplib-0.13.62/zzip/memdisk.h
===================================================================
--- zziplib-0.13.62.orig/zzip/memdisk.h
+++ zziplib-0.13.62/zzip/memdisk.h
@@ -66,6 +66,7 @@ struct _zzip_mem_entry {
int zz_filetype; /* (from "z_filetype") */
char* zz_comment; /* zero-terminated (from "comment") */
ZZIP_EXTRA_BLOCK* zz_ext[3]; /* terminated by null in z_datatype */
+ int zz_extlen[3]; /* length of zz_ext[i] in bytes */
}; /* the extra blocks are NOT converted */
#define _zzip_mem_disk_findfirst(_d_) ((_d_)->list)

View file

@ -0,0 +1,37 @@
Fix CVE-2017-5978:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5978
Patch copied from Debian.
Index: zziplib-0.13.62/zzip/memdisk.c
===================================================================
--- zziplib-0.13.62.orig/zzip/memdisk.c
+++ zziplib-0.13.62/zzip/memdisk.c
@@ -180,7 +180,7 @@ zzip_mem_entry_new(ZZIP_DISK * disk, ZZI
* that exists in the other, ... but we will prefer the disk entry.
*/
item->zz_comment = zzip_disk_entry_strdup_comment(disk, entry);
- item->zz_name = zzip_disk_entry_strdup_name(disk, entry);
+ item->zz_name = zzip_disk_entry_strdup_name(disk, entry) ?: strdup("");
item->zz_data = zzip_file_header_to_data(header);
item->zz_flags = zzip_disk_entry_get_flags(entry);
item->zz_compr = zzip_disk_entry_get_compr(entry);
@@ -197,7 +197,7 @@ zzip_mem_entry_new(ZZIP_DISK * disk, ZZI
int /* */ ext2 = zzip_file_header_get_extras(header);
char *_zzip_restrict ptr2 = zzip_file_header_to_extras(header);
- if (ext1)
+ if (ext1 && ((ptr1 + ext1) < disk->endbuf))
{
void *mem = malloc(ext1 + 2);
item->zz_ext[1] = mem;
@@ -206,7 +206,7 @@ zzip_mem_entry_new(ZZIP_DISK * disk, ZZI
((char *) (mem))[ext1 + 0] = 0;
((char *) (mem))[ext1 + 1] = 0;
}
- if (ext2)
+ if (ext2 && ((ptr2 + ext2) < disk->endbuf))
{
void *mem = malloc(ext2 + 2);
item->zz_ext[2] = mem;

View file

@ -0,0 +1,19 @@
Fix CVE-2017-5979:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5979
Patch copied from Debian.
Index: zziplib-0.13.62/zzip/fseeko.c
===================================================================
--- zziplib-0.13.62.orig/zzip/fseeko.c
+++ zziplib-0.13.62/zzip/fseeko.c
@@ -255,7 +255,7 @@ zzip_entry_findfirst(FILE * disk)
return 0;
/* we read out chunks of 8 KiB in the hope to match disk granularity */
___ zzip_off_t pagesize = PAGESIZE; /* getpagesize() */
- ___ ZZIP_ENTRY *entry = malloc(sizeof(*entry));
+ ___ ZZIP_ENTRY *entry = calloc(1, sizeof(*entry));
if (! entry)
return 0;
___ unsigned char *buffer = malloc(pagesize);

View file

@ -0,0 +1,19 @@
Fix CVE-2017-5981:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5981
Patch copied from Debian.
Index: zziplib-0.13.62/zzip/fseeko.c
===================================================================
--- zziplib-0.13.62.orig/zzip/fseeko.c
+++ zziplib-0.13.62/zzip/fseeko.c
@@ -311,7 +311,8 @@ zzip_entry_findfirst(FILE * disk)
} else
continue;
- assert(0 <= root && root < mapsize);
+ if (root < 0 || root >= mapsize)
+ goto error;
if (fseeko(disk, root, SEEK_SET) == -1)
goto error;
if (fread(disk_(entry), 1, sizeof(*disk_(entry)), disk)

View file

@ -2,7 +2,7 @@
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
@ -54,7 +54,9 @@ (define-module (gnu packages photo)
#:use-module (gnu packages tex)
#:use-module (gnu packages web)
#:use-module (gnu packages xfig)
#:use-module (gnu packages xml))
#:use-module (gnu packages xml)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
(define-public libraw
(package
@ -285,7 +287,14 @@ (define-public lensfun
(base32
"0cfk8jjhs9nbfjfdy98plrj9ayi59aph0nx6ppslgjhlcvacm2xf"))))
(build-system cmake-build-system)
(arguments `(#:tests? #f)) ; There are no tests to run.
(arguments
`(,@(if (any (cute string-prefix? <> (or (%current-system)
(%current-target-system)))
'("x86_64" "i686"))
;; SSE and SSE2 are supported only on Intel processors.
'()
'(#:configure-flags '("-DBUILD_FOR_SSE=OFF" "-DBUILD_FOR_SSE2=OFF")))
#:tests? #f)) ; There are no tests to run.
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
@ -310,7 +319,7 @@ (define-public lensfun
(define-public darktable
(package
(name "darktable")
(version "2.2.4")
(version "2.2.5")
(source (origin
(method url-fetch)
(uri (string-append
@ -319,7 +328,7 @@ (define-public darktable
version "/darktable-" version ".tar.xz"))
(sha256
(base32
"1n7rddkxwcifc3kcdlnar9w562xv4h78fqkkn27jihqzp3b4am5x"))))
"10gjzd4irxhladh4jyss9kgp627k8vgx2divipsb33pp6cms80z3"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; There are no tests.

View file

@ -98,6 +98,7 @@ (define-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages sdl)
#:use-module (gnu packages shells)
#:use-module (gnu packages ssh)
#:use-module (gnu packages statistics)
#:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
@ -3134,16 +3135,14 @@ (define-public python2-sphinx
(define-public python-sphinx-rtd-theme
(package
(name "python-sphinx-rtd-theme")
(version "0.1.6")
(version "0.2.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/s/"
"sphinx_rtd_theme/sphinx_rtd_theme-"
version ".tar.gz"))
(uri (pypi-uri "sphinx_rtd_theme" version))
(sha256
(base32
"19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
"05rlhjzdyapr2w74jjs7mrm8hi69qskcr5vya9f9drpsys7lpxrd"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; No tests.
(propagated-inputs
@ -13132,6 +13131,9 @@ (define-public python-rednose
@command{nosetests} command of the Python Nose unit test framework.")
(license license:bsd-3)))
(define-public python2-rednose
(package-with-python2 python-rednose))
(define-public python-flask-restplus
(package
(name "python-flask-restplus")
@ -15319,3 +15321,61 @@ (define-public python-swagger-spec-validator
(define-public python2-swagger-spec-validator
(package-with-python2 python-swagger-spec-validator))
(define-public python-apache-libcloud
(package
(name "python-apache-libcloud")
(version "2.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "apache-libcloud" version))
(sha256
(base32
"1a71z02ckcxld72k4qgmdnkjan52c4wczncs3p2mp5yafh7dsan7"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-ssh
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "libcloud/compute/ssh.py"
(("'ssh'") (string-append "'" (assoc-ref inputs "openssh")
"/bin/ssh" "'")))
#t))
(add-after 'unpack 'patch-tests
(lambda _
(substitute* "./libcloud/test/test_file_fixtures.py"
;; See <https://issues.apache.org/jira/browse/LIBCLOUD-923>.
(("def _ascii") "def _raw_data(self, method, url, body, headers):
return (httplib.OK,
\"1234abcd\",
{\"test\": \"value\"},
httplib.responses[httplib.OK])
def _ascii"))
(substitute* "libcloud/test/compute/test_ssh_client.py"
(("class ShellOutSSHClientTests")
"@unittest.skip(\"Guix container doesn't have ssh service\")
class ShellOutSSHClientTests")
;; See <https://issues.apache.org/jira/browse/LIBCLOUD-924>.
(("'.xf0.x90.x8d.x88'") "b'\\xF0\\x90\\x8D\\x88'")
(("'.xF0', '.x90', '.x8D', '.x88'")
"b'\\xF0', b'\\x90', b'\\x8D', b'\\x88'"))
#t)))))
(inputs
`(("openssh" ,openssh)))
(propagated-inputs
`(("python-paramiko" ,python-paramiko)
("python-requests" ,python-requests)))
(native-inputs
`(("python-lockfile" ,python-lockfile)
("python-mock" ,python-mock)
("python-requests-mock" ,python-requests-mock)))
(home-page "https://libcloud.apache.org/")
(synopsis "Unified Cloud API")
(description "@code{libcloud} is a Python library for interacting with
many of the popular cloud service providers using a unified API.")
(license license:asl2.0)))
(define-public python2-apache-libcloud
(package-with-python2 python-apache-libcloud))

View file

@ -466,13 +466,13 @@ (define-public bundler
(define-public ruby-builder
(package
(name "ruby-builder")
(version "3.2.2")
(version "3.2.3")
(source (origin
(method url-fetch)
(uri (rubygems-uri "builder" version))
(sha256
(base32
"14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
"0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
(build-system ruby-build-system)
(arguments
`(#:phases

View file

@ -157,11 +157,13 @@ (define-public libselinux
(add-after 'install 'install-pywrap
(lambda* (#:key make-flags #:allow-other-keys)
(zero? (apply system* "make" "install-pywrap" make-flags))))))))
(inputs
;; These libraries are in "Requires.private" in libselinux.pc.
(propagated-inputs
`(("libsepol" ,libsepol)
("pcre" ,pcre)
;; For pywrap phase
("python" ,python-wrapper)))
("pcre" ,pcre)))
;; For pywrap phase
(inputs
`(("python" ,python-wrapper)))
;; These inputs are only needed for the pywrap phase.
(native-inputs
`(("swig" ,swig)

View file

@ -6,7 +6,7 @@
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyz>
;;; Copyright © 2017 ng0 <ng0@no-reply.infotropique.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
@ -99,14 +99,14 @@ (define-public dash
(define-public fish
(package
(name "fish")
(version "2.5.0")
(version "2.6.0")
(source (origin
(method url-fetch)
(uri (string-append "https://fishshell.com/files/"
version "/fish-" version ".tar.gz"))
(sha256
(base32
"19djav128nkhjxgfhwhc32i5y9d9c3karbh5yg67kqrdranyvh7q"))
"1yzx73kg5ng5ivhi68756sl5hpb8869110l9fwim6gn7f7bbprby"))
(modules '((guix build utils)))
;; Don't try to install /etc/fish/config.fish.
(snippet

View file

@ -229,7 +229,8 @@ (define-public guile-ssh
(base32
"0r261i8kc3avbmbwgyzak2vnqwssjlgz37g2y2fwm80w9bmn2m7j"))
(patches (search-patches "guile-ssh-rexec-bug.patch"
"guile-ssh-double-free.patch"))
"guile-ssh-double-free.patch"
"guile-ssh-channel-finalization.patch"))
(modules '((guix build utils)))
(snippet
;; 'configure.ac' mistakenly tries to link files from examples/

View file

@ -2294,13 +2294,13 @@ (define-public r-rstudioapi
(define-public r-devtools
(package
(name "r-devtools")
(version "1.12.0")
(version "1.13.2")
(source (origin
(method url-fetch)
(uri (cran-uri "devtools" version))
(sha256
(base32
"16l18szmj482vf3dvl2fqwwa4zaqylmic1pk7dwh428cp0d86mzi"))))
"08ajsr12wd31lsx3jv5l9mq4063dc5fpr9lcnzra6kl59vi5pa7v"))))
(build-system r-build-system)
(propagated-inputs
`(("r-curl" ,r-curl)

View file

@ -120,12 +120,14 @@ (define-public ccrtp
(define-public osip
(package
(name "osip")
(version "4.1.0")
(version "5.0.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/osip/libosip2-" version ".tar.gz"))
(sha256 (base32
"014503kqv7z63az6lgxr5fbajlrqylm5c4kgbf8p3a0n6cva0slr"))))
(patches (search-patches "osip-CVE-2017-7853.patch"))
(sha256
(base32
"00yznbrm9q04wgd4b831km8iwlvwvsnwv87igf79g5vj9yakr88q"))))
(build-system gnu-build-system)
(synopsis "Library implementing SIP (RFC-3261)")

File diff suppressed because it is too large Load diff

View file

@ -3,6 +3,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
;;;
;;; This file is part of GNU Guix.
;;;
@ -89,3 +90,48 @@ (define-public tmux-themepack
(description "A collection of various themes for Tmux.")
(license
(non-copyleft "http://www.wtfpl.net/txt/copying/")))))
(define-public tmuxifier
(package
(name "tmuxifier")
(version "0.13.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/jimeh/tmuxifier/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1j9fj6zg0j3sdn7svpybzsqh7876rv81zi437976kj7hxnyjkcz7"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
#:phases (modify-phases %standard-phases
(delete 'configure)
(delete 'build)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref %outputs "out"))
(bindir (string-append out "/bin"))
(share (string-append out "/share/" ,name)))
(install-file "bin/tmuxifier" bindir)
(substitute* (string-append bindir "/tmuxifier")
(("set -e")
(string-append "TMUXIFIER=" share "\nset -e")))
(for-each (lambda (init-script)
(install-file init-script (string-append
share "/init")))
'("init.sh" "init.tcsh" "init.fish"))
(for-each (lambda (dir)
(copy-recursively dir (string-append
share "/" dir)))
'("completion" "lib" "libexec"
"templates"))))))))
(home-page "https://github.com/jimeh/tmuxifier")
(synopsis "Powerful session, window & pane management for Tmux")
(description "Tmuxifier allows you to easily create, edit, and load
@code{layout} files, which are simple shell scripts where you use the tmux
command and helper commands provided by tmuxifier to manage Tmux sessions and
windows.")
(license expat)))

View file

@ -701,14 +701,14 @@ (define-public gitolite
(define-public mercurial
(package
(name "mercurial")
(version "3.9")
(version "4.2.1")
(source (origin
(method url-fetch)
(uri (string-append "https://www.mercurial-scm.org/"
"release/mercurial-" version ".tar.gz"))
(sha256
(base32
"1g6svg7fc1kyaxq653iwsvdh8hp2lrhs2ywazfc436a4zzf2akw3"))))
"182qh6d0srps2n5sydzy8n3gi78la6m0wi3846zpyyd0b8pmgmfp"))))
(build-system python-build-system)
(arguments
`(;; Restrict to Python 2, as Python 3 would require

View file

@ -482,6 +482,7 @@ (define-public ffmpeg
("libcaca" ,libcaca)
("libcdio-paranoia" ,libcdio-paranoia)
("libtheora" ,libtheora)
("libva" ,libva)
("libvdpau" ,libvdpau)
("libvorbis" ,libvorbis)
("libvpx" ,libvpx)
@ -1001,7 +1002,7 @@ (define-public libvpx
(define-public youtube-dl
(package
(name "youtube-dl")
(version "2017.06.05")
(version "2017.06.12")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@ -1009,7 +1010,7 @@ (define-public youtube-dl
version ".tar.gz"))
(sha256
(base32
"132f4csbl4bv71b01pnqfkd7hbbc6wclrh1h12fr1182954ahk5m"))))
"1p4d8g44v8vgr4xwvmbvzkjz6zakl2r89spaak6yw1zxmymd9b1w"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion

View file

@ -4621,3 +4621,52 @@ (define-public http-parser
Depending on your architecture, it only requires about 40 bytes of data per
message stream (in a web server that is per connection).")
(license l:expat)))
(define-public python2-httpretty
(package
(name "python2-httpretty")
(version "0.8.14")
(source
(origin
(method url-fetch)
(uri (pypi-uri "httpretty" version))
(sha256
(base32
"0vlp5qkyw3pxwwsg7xmdcfh1csvypvaz4m6abida8s4xmjxpdhc3"))))
(build-system python-build-system)
(native-inputs
`(("python-sphinx-rtd-theme" ,python2-sphinx-rtd-theme)
("python-sphinx" ,python2-sphinx)
("python-coverage" ,python2-coverage)
("python-tornado" ,python2-tornado)
("python-urllib3" ,python2-urllib3)
("python-sure" ,python2-sure)
("python-steadymark" ,python2-steadymark)
("python-requests" ,python2-requests)
("python-rednose" ,python2-rednose)
("python-nose-randomly" ,python2-nose-randomly)
("python-misaka" ,python2-misaka)
("python-pytest-httpbin" ,python2-pytest-httpbin)
("python-nose" ,python2-nose)))
(arguments
`(#:tests? #f
;; Requires mock>=1.3.0 which requires a more up-to-date
;; python-pbr. After updating these trying to build the
;; package leads to failures in python-flake8 and other
;; packages. The cascade of updates and failures this
;; leads to, seems to not be worth having the test run.
#:python ,python-2
#:phases
(modify-phases %standard-phases
(add-before 'build 'patch-test-requirements
(lambda* (#:key inputs #:allow-other-keys)
;; Update requirements from dependecy==version
;; to dependency>=version
(substitute* "development.txt"
(("==") ">="))
#t)))))
(home-page "http://github.com/gabrielfalcao/httpretty")
(synopsis "HTTP client mock for Python")
(description "@code{httpretty} is a helper for faking web requests,
inspired by Ruby's @code{fakeweb}.")
(license l:expat)))

View file

@ -39,6 +39,7 @@ (define-module (gnu packages xfce)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages web)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages image)
#:use-module (gnu packages gnome)
#:use-module (gnu packages pdf)

View file

@ -4,7 +4,7 @@
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Raimon Grau <raimonster@gmail.com>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
@ -56,6 +56,7 @@ (define-public expat
(package
(name "expat")
(version "2.2.0")
(replacement expat-2.2.1)
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/expat/expat/"
@ -74,6 +75,19 @@ (define-public expat
things the parser might find in the XML document (like start tags).")
(license license:expat)))
(define expat-2.2.1 ; Fixes CVE-2017-9233, CVE-2016-9063 and other issues.
(package
(inherit expat)
(version "2.2.1")
(replacement #f)
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/expat/expat/"
version "/expat-" version ".tar.bz2"))
(sha256
(base32
"11c8jy1wvllvlk7xdc5cm8hdhg0hvs8j0aqy6s702an8wkdcls0q"))))))
(define-public libxml2
(package
(name "libxml2")

View file

@ -136,6 +136,12 @@ (define-public zziplib
(uri (string-append "mirror://sourceforge/zziplib/zziplib13/"
version "/zziplib-"
version ".tar.bz2"))
(patches (search-patches "zziplib-CVE-2017-5974.patch"
"zziplib-CVE-2017-5975.patch"
"zziplib-CVE-2017-5976.patch"
"zziplib-CVE-2017-5978.patch"
"zziplib-CVE-2017-5979.patch"
"zziplib-CVE-2017-5981.patch"))
(sha256
(base32
"0nsjqxw017hiyp524p9316283jlf5piixc1091gkimhz38zh7f51"))))

View file

@ -27,8 +27,17 @@ (define-module (gnu services admin)
#:use-module (guix packages)
#:use-module (guix records)
#:use-module (srfi srfi-1)
#:use-module (ice-9 vlist)
#:export (%default-rotations
%rotated-files
log-rotation
log-rotation?
log-rotation-frequency
log-rotation-files
log-rotation-options
log-rotation-post-rotate
rottlog-configuration
rottlog-configuration?
rottlog-service
@ -40,41 +49,78 @@ (define-module (gnu services admin)
;;; /etc/rottlog/{rc,hourly|daily|weekly}. Example usage
;;;
;;; (mcron-service)
;;; (service rottlog-service-type (rottlog-configuration))
;;; (service rottlog-service-type)
;;;
;;; Code:
(define-record-type* <log-rotation> log-rotation make-log-rotation
log-rotation?
(files log-rotation-files) ;list of strings
(frequency log-rotation-frequency ;symbol
(default 'weekly))
(post-rotate log-rotation-post-rotate ;#f | gexp
(default #f))
(options log-rotation-options ;list of strings
(default '())))
(define %rotated-files
;; Syslog files subject to rotation.
'("/var/log/messages" "/var/log/secure" "/var/log/maillog"))
(define (syslog-rotation-config files)
#~(string-append #$(string-join files ",")
" {
sharedscripts
postrotate
" #$coreutils "/bin/kill -HUP $(cat /var/run/syslog.pid) 2> /dev/null
endscript
}
"))
(define (simple-rotation-config files)
#~(string-append #$(string-join files ",") " {
sharedscripts
}
"))
(define %default-rotations
`(("weekly"
,(computed-file "rottlog.weekly"
#~(call-with-output-file #$output
(lambda (port)
(display #$(syslog-rotation-config %rotated-files)
port)
(display #$(simple-rotation-config
'("/var/log/shepherd.log"
"/var/log/guix-daemon.log"))
port)))))))
(list (log-rotation ;syslog files
(files %rotated-files)
;; Restart syslogd after rotation.
(options '("sharedscripts"))
(post-rotate #~(let ((pid (call-with-input-file "/var/run/syslog.pid"
read)))
(kill pid SIGHUP))))
(log-rotation
(files '("/var/log/shepherd.log" "/var/log/guix-daemon.log")))))
(define (log-rotation->config rotation)
"Return a string-valued gexp representing the rottlog configuration snippet
for ROTATION."
(define post-rotate
(let ((post (log-rotation-post-rotate rotation)))
(and post
(program-file "rottlog-post-rotate.scm" post))))
#~(let ((post #$post-rotate))
(string-append (string-join '#$(log-rotation-files rotation) ",")
" {"
#$(string-join (log-rotation-options rotation)
"\n " 'prefix)
(if post
(string-append "\n postrotate\n " post
"\n endscript\n")
"")
"\n}\n")))
(define (log-rotations->/etc-entries rotations)
"Return the list of /etc entries for ROTATIONS, a list of <log-rotation>."
(define (frequency-file frequency rotations)
(computed-file (string-append "rottlog." (symbol->string frequency))
#~(call-with-output-file #$output
(lambda (port)
(for-each (lambda (str)
(display str port))
(list #$@(map log-rotation->config
rotations)))))))
(let* ((frequencies (delete-duplicates
(map log-rotation-frequency rotations)))
(table (fold (lambda (rotation table)
(vhash-consq (log-rotation-frequency rotation)
rotation table))
vlist-null
rotations)))
(map (lambda (frequency)
`(,(symbol->string frequency)
,(frequency-file frequency
(vhash-foldq* cons '() frequency table))))
frequencies)))
(define (default-jobs rottlog)
(list #~(job '(next-hour '(0)) ;midnight
@ -91,15 +137,17 @@ (define-record-type* <rottlog-configuration>
(default rottlog))
(rc-file rottlog-rc-file ;file-like
(default (file-append rottlog "/etc/rc")))
(periodic-rotations rottlog-periodic-rotations ;list of (name file) tuples
(rotations rottlog-rotations ;list of <log-rotation>
(default %default-rotations))
(jobs rottlog-jobs ;list of <mcron-job>
(default #f)))
(define (rottlog-etc config)
`(("rottlog" ,(file-union "rottlog"
(cons `("rc" ,(rottlog-rc-file config))
(rottlog-periodic-rotations config))))))
`(("rottlog"
,(file-union "rottlog"
(cons `("rc" ,(rottlog-rc-file config))
(log-rotations->/etc-entries
(rottlog-rotations config)))))))
(define (rottlog-jobs-or-default config)
(or (rottlog-jobs config)
@ -116,6 +164,12 @@ (define rottlog-service-type
;; the documentation.
(service-extension profile-service-type
(compose list rottlog-rottlog))))
(compose concatenate)
(extend (lambda (config rotations)
(rottlog-configuration
(inherit config)
(rotations (append (rottlog-rotations config)
rotations)))))
(default-value (rottlog-configuration))))
;;; admin.scm ends here

View file

@ -26,6 +26,7 @@ (define-module (gnu services cuirass)
#:use-module (gnu services)
#:use-module (gnu services base)
#:use-module (gnu services shepherd)
#:use-module (gnu services admin)
#:use-module (gnu system shadow)
#:export (<cuirass-configuration>
cuirass-configuration
@ -138,6 +139,13 @@ (define (cuirass-activation config)
(chown #$cache uid gid)
(chown #$db uid gid))))))
(define (cuirass-log-rotations config)
"Return the list of log rotations that corresponds to CONFIG."
(list (log-rotation
(files (list (cuirass-configuration-log-file config)))
(frequency 'weekly)
(options '("rotate 40"))))) ;worth keeping
(define cuirass-service-type
(service-type
(name 'cuirass)
@ -145,6 +153,7 @@ (define cuirass-service-type
(list
(service-extension profile-service-type ;for 'info cuirass'
(compose list cuirass-configuration-cuirass))
(service-extension rottlog-service-type cuirass-log-rotations)
(service-extension activation-service-type cuirass-activation)
(service-extension shepherd-root-service-type cuirass-shepherd-service)
(service-extension account-service-type cuirass-account)))))

View file

@ -489,20 +489,21 @@ (define (virtfs-option fs)
#$@(map virtfs-option shared-fs)
"-vga std"
(format #f "-drive file=~a,if=virtio,cache=writeback,werror=report,readonly"
#$image)
"-m 256"))
#$image)))
(define* (system-qemu-image/shared-store-script os
#:key
(qemu qemu)
(graphic? #t)
(memory-size 256)
(mappings '())
full-boot?
(disk-image-size
(* (if full-boot? 500 70)
(expt 2 20))))
"Return a derivation that builds a script to run a virtual machine image of
OS that shares its store with the host.
OS that shares its store with the host. The virtual machine runs with
MEMORY-SIZE MiB of memory.
MAPPINGS is a list of <file-system-mapping> specifying mapping of host file
systems into the guest.
@ -531,7 +532,8 @@ (define qemu-exec
(string-join #$kernel-arguments " "))))
#$@(common-qemu-options image
(map file-system-mapping-source
(cons %store-mapping mappings)))))
(cons %store-mapping mappings)))
"-m " (number->string #$memory-size)))
(define builder
#~(call-with-output-file #$output

View file

@ -446,20 +446,6 @@ (define test
(define marionette
(make-marionette (list #$command)))
(define (wait-for-file file)
;; Wait until FILE exists in the guest; 'read' its content and
;; return it.
(marionette-eval
`(let loop ((i 10))
(cond ((file-exists? ,file)
(call-with-input-file ,file read))
((> i 0)
(sleep 1)
(loop (- i 1)))
(else
(error "file didn't show up" ,file))))
marionette))
(mkdir #$output)
(chdir #$output)
@ -478,12 +464,12 @@ (define (wait-for-file file)
;; runs with the right UID/GID.
(test-equal "root's job"
'(0 0)
(wait-for-file "/root/witness"))
(wait-for-file "/root/witness" marionette))
;; Likewise for Alice's job. We cannot know what its GID is since
;; it's chosen by 'groupadd', but it's strictly positive.
(test-assert "alice's job"
(match (wait-for-file "/home/alice/witness")
(match (wait-for-file "/home/alice/witness" marionette)
((1000 gid)
(>= gid 100))))
@ -492,7 +478,7 @@ (define (wait-for-file file)
;; that don't have a read syntax, hence the string.)
(test-equal "root's job with command"
"#<eof>"
(wait-for-file "/root/witness-touch"))
(wait-for-file "/root/witness-touch" marionette))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))

View file

@ -80,21 +80,6 @@ (define marionette
(number->string #$port)
"-:5222"))))
(define (guest-wait-for-file file)
;; Wait until FILE exists in the guest; 'read' its content and
;; return it.
(marionette-eval
`(let loop ((i 10))
(cond ((file-exists? ,file)
(call-with-input-file ,file read))
((> i 0)
(begin
(sleep 1))
(loop (- i 1)))
(else
(error "file didn't show up" ,file))))
marionette))
(define (host-wait-for-file file)
;; Wait until FILE exists in the host.
(let loop ((i 60))
@ -124,7 +109,8 @@ (define (host-wait-for-file file)
;; Check XMPP service's PID.
(test-assert "service process id"
(let ((pid (number->string (guest-wait-for-file #$pid-file))))
(let ((pid (number->string (wait-for-file #$pid-file
marionette))))
(marionette-eval `(file-exists? (string-append "/proc/" ,pid))
marionette)))

View file

@ -69,20 +69,6 @@ (define marionette
(make-marionette (list #$command "-net"
"user,hostfwd=tcp::2222-:22")))
(define (wait-for-file file)
;; Wait until FILE exists in the guest; 'read' its content and
;; return it.
(marionette-eval
`(let loop ((i 10))
(cond ((file-exists? ,file)
(call-with-input-file ,file read))
((> i 0)
(sleep 1)
(loop (- i 1)))
(else
(error "file didn't show up" ,file))))
marionette))
(define (make-session-for-test)
"Make a session with predefined parameters for a test."
(make-session #:user "root"
@ -141,7 +127,7 @@ (define (call-with-connected-session/auth proc)
;; Check sshd's PID file.
(test-equal "sshd PID"
(wait-for-file #$pid-file)
(wait-for-file #$pid-file marionette)
(marionette-eval
'(begin
(use-modules (gnu services herd)
@ -166,7 +152,7 @@ (define (call-with-connected-session/auth proc)
(channel-open-session channel)
(channel-request-exec channel "echo hello > /root/witness")
(and (zero? (channel-get-exit-status channel))
(wait-for-file "/root/witness"))))))
(wait-for-file "/root/witness" marionette))))))
;; Connect to the guest over SFTP. Make sure we can write and
;; read a file there.

View file

@ -0,0 +1,164 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; 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 (guix build-system texlive)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix derivations)
#:use-module (guix search-paths)
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (guix svn-download)
#:use-module (ice-9 match)
#:export (%texlive-build-system-modules
texlive-build
texlive-build-system
texlive-ref
%texlive-tag
%texlive-revision))
;; Commentary:
;;
;; Standard build procedure for Texlive packages.
;;
;; Code:
;; These variables specify the SVN tag and the matching SVN revision.
(define %texlive-tag "texlive-2017.0")
(define %texlive-revision 44445)
(define (texlive-ref component id)
"Return a <svn-reference> object for the package ID, which is part of the
given Texlive COMPONENT."
(svn-reference
(url (string-append "svn://www.tug.org/texlive/tags/"
%texlive-tag "/Master/texmf-dist/"
"source/" component "/" id))
(revision %texlive-revision)))
(define %texlive-build-system-modules
;; Build-side modules imported by default.
`((guix build texlive-build-system)
,@%gnu-build-system-modules))
(define (default-texlive-bin)
"Return the default texlive-bin package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((tex-mod (resolve-interface '(gnu packages tex))))
(module-ref tex-mod 'texlive-bin)))
(define (default-texlive-latex-base)
"Return the default texlive-latex-base package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((tex-mod (resolve-interface '(gnu packages tex))))
(module-ref tex-mod 'texlive-latex-base)))
(define* (lower name
#:key
source inputs native-inputs outputs
system target
(texlive-latex-base (default-texlive-latex-base))
(texlive-bin (default-texlive-bin))
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
(define private-keywords
'(#:source #:target #:inputs #:native-inputs
#:texlive-latex-base #:texlive-bin))
(bag
(name name)
(system system)
(host-inputs `(,@(if source
`(("source" ,source))
'())
,@inputs
;; Keep the standard inputs of 'gnu-build-system'.
,@(standard-packages)))
(build-inputs `(("texlive-bin" ,texlive-bin)
("texlive-latex-base" ,texlive-latex-base)
,@native-inputs))
(outputs outputs)
(build texlive-build)
(arguments (strip-keyword-arguments private-keywords arguments))))
(define* (texlive-build store name inputs
#:key
(tests? #f)
tex-directory
(build-targets #f)
(tex-format "luatex")
(phases '(@ (guix build texlive-build-system)
%standard-phases))
(outputs '("out"))
(search-paths '())
(system (%current-system))
(guile #f)
(substitutable? #t)
(imported-modules %texlive-build-system-modules)
(modules '((guix build texlive-build-system)
(guix build utils))))
"Build SOURCE with INPUTS."
(define builder
`(begin
(use-modules ,@modules)
(texlive-build #:name ,name
#:source ,(match (assoc-ref inputs "source")
(((? derivation? source))
(derivation->output-path source))
((source)
source)
(source
source))
#:tex-directory ,tex-directory
#:build-targets ,build-targets
#:tex-format ,tex-format
#:system ,system
#:tests? ,tests?
#:phases ,phases
#:outputs %outputs
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:inputs %build-inputs)))
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system #:graft? #f))
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages commencement)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system #:graft? #f)))))
(build-expression->derivation store name builder
#:inputs inputs
#:system system
#:modules imported-modules
#:outputs outputs
#:guile-for-build guile-for-build
#:substitutable? substitutable?))
(define texlive-build-system
(build-system
(name 'texlive)
(description "The build system for TeX Live packages")
(lower lower)))
;;; texlive.scm ends here

View file

@ -28,6 +28,7 @@ (define-module (guix build syscalls)
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-26)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 regex)
#:use-module (ice-9 match)
@ -68,6 +69,7 @@ (define-module (guix build syscalls)
mkdtemp!
fdatasync
pivot-root
scandir*
fcntl-flock
set-thread-name
@ -817,6 +819,127 @@ (define pivot-root
(list new-root put-old (strerror err))
(list err)))))))
;;;
;;; Opendir & co.
;;;
(define-c-struct %struct-dirent-header
sizeof-dirent-header
(lambda (inode offset length type name)
;; Convert TYPE to symbols like 'stat:type' does.
(let ((type (cond ((= type DT_REG) 'regular)
((= type DT_LNK) 'symlink)
((= type DT_DIR) 'directory)
((= type DT_FIFO) 'fifo)
((= type DT_CHR) 'char-special)
((= type DT_BLK) 'block-special)
((= type DT_SOCK) 'socket)
(else 'unknown))))
`((type . ,type)
(inode . ,inode))))
read-dirent-header
write-dirent-header!
(inode int64)
(offset int64)
(length unsigned-short)
(type uint8)
(name uint8)) ;first byte of 'd_name'
;; Constants for the 'type' field, from <dirent.h>.
(define DT_UNKNOWN 0)
(define DT_FIFO 1)
(define DT_CHR 2)
(define DT_DIR 4)
(define DT_BLK 6)
(define DT_REG 8)
(define DT_LNK 10)
(define DT_SOCK 12)
(define DT_WHT 14)
(define string->pointer/utf-8
(cut string->pointer <> "UTF-8"))
(define pointer->string/utf-8
(cut pointer->string <> <> "UTF-8"))
(define opendir*
(let ((proc (syscall->procedure '* "opendir" '(*))))
(lambda* (name #:optional (string->pointer string->pointer/utf-8))
(let-values (((ptr err)
(proc (string->pointer name))))
(if (null-pointer? ptr)
(throw 'system-error "opendir*"
"~A: ~A" (list name (strerror err))
(list err))
ptr)))))
(define closedir*
(let ((proc (syscall->procedure int "closedir" '(*))))
(lambda (directory)
(let-values (((ret err)
(proc directory)))
(unless (zero? ret)
(throw 'system-error "closedir"
"closedir: ~A" (list (strerror err))
(list err)))))))
(define readdir*
(let ((proc (syscall->procedure '* "readdir64" '(*))))
(lambda* (directory #:optional (pointer->string pointer->string/utf-8))
(let ((ptr (proc directory)))
(and (not (null-pointer? ptr))
(cons (pointer->string
(make-pointer (+ (pointer-address ptr)
(c-struct-field-offset
%struct-dirent-header name)))
-1)
(read-dirent-header
(pointer->bytevector ptr sizeof-dirent-header))))))))
(define* (scandir* name #:optional
(select? (const #t))
(entry<? (lambda (entry1 entry2)
(match entry1
((name1 . _)
(match entry2
((name2 . _)
(string<? name1 name2)))))))
#:key
(string->pointer string->pointer/utf-8)
(pointer->string pointer->string/utf-8))
"This procedure improves on Guile's 'scandir' procedure in several ways:
1. Systematically encode decode file names using STRING->POINTER and
POINTER->STRING (UTF-8 by default; this works around a defect in Guile 2.0/2.2
where 'scandir' decodes file names according to the current locale, which is
not always desirable.
2. Each entry that is returned has the form (NAME . PROPERTIES).
PROPERTIES is an alist showing additional properties about the entry, as
found in 'struct dirent'. An entry may look like this:
(\"foo.scm\" (type . regular) (inode . 123456))
Callers must be prepared to deal with the case where 'type' is 'unknown'
since some file systems do not provide that information.
3. Raise to 'system-error' when NAME cannot be opened."
(let ((directory (opendir* name string->pointer)))
(dynamic-wind
(const #t)
(lambda ()
(let loop ((result '()))
(match (readdir* directory pointer->string)
(#f
(sort result entry<?))
(entry
(loop (if (select? entry)
(cons entry result)
result))))))
(lambda ()
(closedir* directory)))))
;;;
;;; Advisory file locking.

View file

@ -0,0 +1,89 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; 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 (guix build texlive-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (guix build utils)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
texlive-build))
;; Commentary:
;;
;; Builder-side code of the standard build procedure for TeX Live packages.
;;
;; Code:
(define (compile-with-latex format file)
(zero? (system* format
"-interaction=batchmode"
"-output-directory=build"
(string-append "&" format)
file)))
(define* (build #:key inputs build-targets tex-format #:allow-other-keys)
;; Find additional tex and sty files
(setenv "TEXINPUTS"
(string-append
(getcwd) ":" (getcwd) "/build:"
(string-join
(append-map (match-lambda
((_ . dir)
(find-files dir
(lambda (_ stat)
(eq? 'directory (stat:type stat)))
#:directories? #t
#:stat stat)))
inputs)
":")))
(setenv "TEXFORMATS"
(string-append (assoc-ref inputs "texlive-latex-base")
"/share/texmf-dist/web2c/"))
(setenv "LUAINPUTS"
(string-append (assoc-ref inputs "texlive-latex-base")
"/share/texmf-dist/tex/latex/base/"))
(mkdir "build")
(every (cut compile-with-latex tex-format <>)
(if build-targets build-targets
(find-files "." "\\.ins$"))))
(define* (install #:key outputs tex-directory #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(target (string-append
out "/share/texmf-dist/tex/" tex-directory)))
(mkdir-p target)
(for-each delete-file (find-files "." "\\.(log|aux)$"))
(for-each (cut install-file <> target)
(find-files "build" ".*"))
#t))
(define %standard-phases
(modify-phases gnu:%standard-phases
(delete 'configure)
(replace 'build build)
(delete 'check)
(replace 'install install)))
(define* (texlive-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)
"Build the given TeX Live package, applying all of PHASES in order."
(apply gnu:gnu-build #:inputs inputs #:phases phases args))
;;; texlive-build-system.scm ends here

View file

@ -82,6 +82,7 @@ (define-module (guix derivations)
derivation-hash
read-derivation
read-derivation-from-file
write-derivation
derivation->output-path
derivation->output-paths
@ -241,8 +242,7 @@ (define* (derivation-prerequisites drv #:optional (cut? (const #f)))
(append inputs result)
(fold set-insert input-set inputs)
(map (lambda (i)
(call-with-input-file (derivation-input-path i)
read-derivation))
(read-derivation-from-file (derivation-input-path i)))
inputs)))))
(define (offloadable-derivation? drv)
@ -295,9 +295,8 @@ (define (dependencies drv)
;; info is not already in cache.
;; Also, skip derivations marked as non-substitutable.
(append-map (lambda (input)
(let ((drv (call-with-input-file
(derivation-input-path input)
read-derivation)))
(let ((drv (read-derivation-from-file
(derivation-input-path input))))
(if (substitutable-derivation? drv)
(derivation-input-output-paths input)
'())))
@ -400,13 +399,15 @@ (define (derivation-substitutable-info drv sub-drvs)
(derivation-inputs drv))
substitute)
(map (lambda (i)
(call-with-input-file (derivation-input-path i)
read-derivation))
(read-derivation-from-file
(derivation-input-path i)))
inputs)
(map derivation-input-sub-derivations inputs)))))))
(define (%read-derivation drv-port)
;; Actually read derivation from DRV-PORT.
(define (read-derivation drv-port)
"Read the derivation from DRV-PORT and return the corresponding <derivation>
object. Most of the time you'll want to use 'read-derivation-from-file',
which caches things as appropriate and is thus more efficient."
(define comma (string->symbol ","))
@ -482,17 +483,16 @@ (define %derivation-cache
;; XXX: This is redundant with 'atts-cache' in the store.
(make-weak-value-hash-table 200))
(define (read-derivation drv-port)
"Read the derivation from DRV-PORT and return the corresponding
(define (read-derivation-from-file file)
"Read the derivation in FILE, a '.drv' file, and return the corresponding
<derivation> object."
;; Memoize that operation because `%read-derivation' is quite expensive,
;; Memoize that operation because 'read-derivation' is quite expensive,
;; and because the same argument is read more than 15 times on average
;; during something like (package-derivation s gdb).
(let ((file (port-filename drv-port)))
(or (and file (hash-ref %derivation-cache file))
(let ((drv (%read-derivation drv-port)))
(hash-set! %derivation-cache file drv)
drv))))
(or (and file (hash-ref %derivation-cache file))
(let ((drv (call-with-input-file file read-derivation)))
(hash-set! %derivation-cache file drv)
drv)))
(define-inlinable (write-sequence lst write-item port)
;; Write each element of LST with WRITE-ITEM to PORT, separating them with a
@ -608,8 +608,7 @@ (define (derivation->output-paths drv)
(define derivation-path->output-path
;; This procedure is called frequently, so memoize it.
(let ((memoized (mlambda (path output)
(derivation->output-path (call-with-input-file path
read-derivation)
(derivation->output-path (read-derivation-from-file path)
output))))
(lambda* (path #:optional (output "out"))
"Read the derivation from PATH (`/gnu/store/xxx.drv'), and return the store
@ -619,7 +618,7 @@ (define derivation-path->output-path
(define (derivation-path->output-paths path)
"Read the derivation from PATH (`/gnu/store/xxx.drv'), and return the
list of name/path pairs of its outputs."
(derivation->output-paths (call-with-input-file path read-derivation)))
(derivation->output-paths (read-derivation-from-file path)))
;;;
@ -630,10 +629,8 @@ (define derivation-path->base16-hash
(mlambda (file)
"Return a string containing the base16 representation of the hash of the
derivation at FILE."
(call-with-input-file file
(compose bytevector->base16-string
derivation-hash
read-derivation))))
(bytevector->base16-string
(derivation-hash (read-derivation-from-file file)))))
(define derivation-hash ; `hashDerivationModulo' in derivations.cc
(mlambda (drv)
@ -896,7 +893,7 @@ (define rewritten-input
((_ . replacement)
(list replacement))
(#f
(let* ((drv (loop (call-with-input-file path read-derivation))))
(let* ((drv (loop (read-derivation-from-file path))))
(cons drv sub-drvs))))))))
(let loop ((drv drv))

View file

@ -19,6 +19,7 @@
(define-module (guix discovery)
#:use-module (guix ui)
#:use-module (guix combinators)
#:use-module (guix build syscalls)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
@ -37,29 +38,45 @@ (define-module (guix discovery)
(define* (scheme-files directory)
"Return the list of Scheme files found under DIRECTORY, recursively. The
returned list is sorted in alphabetical order."
returned list is sorted in alphabetical order. Return the empty list if
DIRECTORY is not accessible."
(define (entry-type name properties)
(match (assoc-ref properties 'type)
('unknown
(stat:type (lstat name)))
((? symbol? type)
type)))
;; Sort entries so that 'fold-packages' works in a deterministic fashion
;; regardless of details of the underlying file system.
(sort (file-system-fold (const #t) ;enter?
(lambda (path stat result) ;leaf
(if (string-suffix? ".scm" path)
(cons path result)
result))
(lambda (path stat result) ;down
result)
(lambda (path stat result) ;up
result)
(const #f) ;skip
(lambda (path stat errno result)
(unless (= ENOENT errno)
(warning (G_ "cannot access `~a': ~a~%")
path (strerror errno)))
result)
'()
directory
stat)
string<?))
;; Use 'scandir*' so we can avoid an extra 'lstat' for each entry, as
;; opposed to Guile's 'scandir' or 'file-system-fold'.
(fold-right (lambda (entry result)
(match entry
(("." . _)
result)
((".." . _)
result)
((name . properties)
(let ((absolute (string-append directory "/" name)))
(case (entry-type absolute properties)
((directory)
(append (scheme-files absolute) result))
((regular symlink)
;; XXX: We don't recurse if we find a symlink.
(if (string-suffix? ".scm" name)
(cons absolute result)
result))
(else
result))))))
'()
(catch 'system-error
(lambda ()
(scandir* directory))
(lambda args
(let ((errno (system-error-errno args)))
(unless (= errno ENOENT)
(warning (G_ "cannot access `~a': ~a~%")
directory (strerror errno)))
'())))))
(define file-name->module-name
(let ((not-slash (char-set-complement (char-set #\/))))

View file

@ -156,7 +156,7 @@ (define (item->deriver store item)
(() ;ITEM is a plain file
(values #f #f))
((drv-file _ ...)
(let ((drv (call-with-input-file drv-file read-derivation)))
(let ((drv (read-derivation-from-file drv-file)))
(values drv
(any (match-lambda
((name . path)

View file

@ -258,11 +258,7 @@ (define (make-pypi-sexp name version source-url wheel-url home-page synopsis
;; Sometimes 'pypi-uri' doesn't quite work due to mixed
;; cases in NAME, for instance, as is the case with
;; "uwsgi". In that case, fall back to a full URL.
(uri ,(if (equal? (pypi-uri name version) source-url)
`(pypi-uri ,name version)
`(string-append
,@(factorize-uri source-url version))))
(uri (pypi-uri ,(string-downcase name) version))
(sha256
(base32
,(guix-hash-url temp)))))

182
guix/import/texlive.scm Normal file
View file

@ -0,0 +1,182 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; 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 (guix import texlive)
#:use-module (ice-9 match)
#:use-module (sxml simple)
#:use-module (sxml xpath)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (web uri)
#:use-module (guix http-client)
#:use-module (guix hash)
#:use-module (guix memoization)
#:use-module (guix store)
#:use-module (guix base32)
#:use-module (guix serialization)
#:use-module (guix svn-download)
#:use-module (guix import utils)
#:use-module (guix utils)
#:use-module (guix upstream)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (guix build-system texlive)
#:export (texlive->guix-package))
;;; Commentary:
;;;
;;; Generate a package declaration template for the latest version of a
;;; package on CTAN, using the XML output produced by the XML API to the CTAN
;;; database at http://www.ctan.org/xml/1.2/
;;;
;;; Instead of taking the packages from CTAN, however, we fetch the sources
;;; from the SVN repository of the Texlive project. We do this because CTAN
;;; only keeps a single version of each package whereas we can access any
;;; version via SVN. Unfortunately, this means that the importer is really
;;; just a Texlive importer, not a generic CTAN importer.
;;;
;;; Code:
(define string->license
(match-lambda
("artistic2" 'gpl3+)
("gpl" 'gpl3+)
("gpl1" 'gpl1)
("gpl1+" 'gpl1+)
("gpl2" 'gpl2)
("gpl2+" 'gpl2+)
("gpl3" 'gpl3)
("gpl3+" 'gpl3+)
("lgpl2.1" 'lgpl2.1)
("lgpl3" 'lgpl3)
("knuth" 'knuth)
("pd" 'public-domain)
("bsd2" 'bsd-2)
("bsd3" 'bsd-3)
("bsd4" 'bsd-4)
("opl" 'opl1.0+)
("ofl" 'silofl1.1)
("lppl" 'lppl)
("lppl1" 'lppl1.0+) ; usually means "or later"
("lppl1.2" 'lppl1.2+) ; usually means "or later"
("lppl1.3" 'lppl1.3+) ; usually means "or later"
("lppl1.3a" 'lppl1.3a)
("lppl1.3b" 'lppl1.3b)
("lppl1.3c" 'lppl1.3c)
("cc-by-2" 'cc-by-2.0)
("cc-by-3" 'cc-by-3.0)
("cc-by-sa-2" 'cc-by-sa2.0)
("cc-by-sa-3" 'cc-by-sa3.0)
("mit" 'expat)
("fdl" 'fdl1.3+)
("gfl" 'gfl1.0)
;; These are known non-free licenses
("noinfo" 'unknown)
("nosell" 'non-free)
("shareware" 'non-free)
("nosource" 'non-free)
("nocommercial" 'non-free)
("cc-by-nc-nd-1" 'non-free)
("cc-by-nc-nd-2" 'non-free)
("cc-by-nc-nd-2.5" 'non-free)
("cc-by-nc-nd-3" 'non-free)
("cc-by-nc-nd-4" 'non-free)
((x) (string->license x))
((lst ...) `(list ,@(map string->license lst)))
(_ #f)))
(define (fetch-sxml name)
"Return an sxml representation of the package information contained in the
XML description of the CTAN package or #f in case of failure."
;; This API always returns the latest release of the module.
(let ((url (string-append "http://www.ctan.org/xml/1.2/pkg/" name)))
(guard (c ((http-get-error? c)
(format (current-error-port)
"error: failed to retrieve package information \
from ~s: ~a (~s)~%"
(uri->string (http-get-error-uri c))
(http-get-error-code c)
(http-get-error-reason c))
#f))
(xml->sxml (http-fetch url)
#:trim-whitespace? #t))))
(define (guix-name component name)
"Return a Guix package name for a given Texlive package NAME."
(string-append "texlive-" component "-"
(string-map (match-lambda
(#\_ #\-)
(#\. #\-)
(chr (char-downcase chr)))
name)))
(define* (sxml->package sxml #:optional (component "latex"))
"Return the `package' s-expression for a Texlive package from the SXML
expression describing it."
(define (sxml-value path)
(match ((sxpath path) sxml)
(() #f)
((val) val)))
(with-store store
(let* ((id (sxml-value '(entry @ id *text*)))
(synopsis (sxml-value '(entry caption *text*)))
(version (or (sxml-value '(entry version @ number *text*))
(sxml-value '(entry version @ date *text*))))
(license (string->license (sxml-value '(entry license @ type *text*))))
(home-page (string-append "http://www.ctan.org/pkg/" id))
(ref (texlive-ref component id))
(checkout (download-svn-to-store store ref)))
`(package
(name ,(guix-name component id))
(version ,version)
(source (origin
(method svn-fetch)
(uri (texlive-ref ,component ,id))
(sha256
(base32
,(bytevector->nix-base32-string
(let-values (((port get-hash) (open-sha256-port)))
(write-file checkout port)
(force-output port)
(get-hash)))))))
(build-system texlive-build-system)
(arguments ,`(,'quote (#:tex-directory ,(string-join (list component id) "/"))))
(home-page ,home-page)
(synopsis ,synopsis)
(description ,(string-trim-both
(string-join
(map string-trim-both
(string-split
(beautify-description
(sxml->string (or (sxml-value '(entry description))
'())))
#\newline)))))
(license ,license)))))
(define texlive->guix-package
(memoize
(lambda* (package-name #:optional (component "latex"))
"Fetch the metadata for PACKAGE-NAME from REPO and return the `package'
s-expression corresponding to that package, or #f on failure."
(and=> (fetch-sxml package-name)
(cut sxml->package <> component)))))
;;; ctan.scm ends here

View file

@ -60,7 +60,13 @@ (define-module (guix licenses)
ibmpl1.0
imlib2
ipa
knuth
lgpl2.0 lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3 lgpl3+
lppl lppl1.0+ lppl1.2 lppl1.2+
lppl1.3 lppl1.3+
lppl1.3a lppl1.3a+
lppl1.3b lppl1.3b+
lppl1.3c lppl1.3c+
mpl1.0 mpl1.1 mpl2.0
ms-pl
ncsa
@ -351,6 +357,11 @@ (define ipa
"http://directory.fsf.org/wiki/License:IPA_Font_License"
"https://www.gnu.org/licenses/license-list#IPAFONT"))
(define knuth
(license "Donald Knuth's license for TeX"
"http://www.ctan.org/license/knuth"
"Modification are only permitted under a different name."))
(define lgpl2.0
(license "LGPL 2.0"
"https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html"
@ -381,6 +392,66 @@ (define lgpl3+
"https://www.gnu.org/licenses/lgpl.html"
"https://www.gnu.org/licenses/license-list#LGPLv3"))
(define lppl
(license "LPPL (any version)"
"https://www.latex-project.org/lppl/lppl-1-0/"
"LaTeX Project Public License 1.0"))
(define lppl1.0+
(license "LPPL 1.0+"
"https://www.latex-project.org/lppl/lppl-1-0/"
"LaTeX Project Public License 1.0"))
(define lppl1.2
(license "LPPL 1.2"
"http://directory.fsf.org/wiki/License:LPPLv1.2"
"https://www.gnu.org/licenses/license-list#LPPL-1.2"))
(define lppl1.2+
(license "LPPL 1.2+"
"http://directory.fsf.org/wiki/License:LPPLv1.2"
"https://www.gnu.org/licenses/license-list#LPPL-1.2"))
(define lppl1.3
(license "LPPL 1.3"
"https://www.latex-project.org/lppl/lppl-1-3/"
"LaTeX Project Public License 1.3"))
(define lppl1.3+
(license "LPPL 1.3+"
"https://www.latex-project.org/lppl/lppl-1-3/"
"LaTeX Project Public License 1.3+"))
(define lppl1.3a
(license "LPPL 1.3a"
"http://directory.fsf.org/wiki/License:LPPLv1.3a"
"https://www.gnu.org/licenses/license-list#LPPL-1.3a"))
(define lppl1.3a+
(license "LPPL 1.3a+"
"http://directory.fsf.org/wiki/License:LPPLv1.3a"
"https://www.gnu.org/licenses/license-list#LPPL-1.3a"))
(define lppl1.3b
(license "LPPL 1.3b"
"https://www.latex-project.org/lppl/lppl-1-3b/"
"LaTeX Project Public License 1.3b"))
(define lppl1.3b+
(license "LPPL 1.3b+"
"https://www.latex-project.org/lppl/lppl-1-3b/"
"LaTeX Project Public License 1.3b or later"))
(define lppl1.3c
(license "LPPL 1.3c"
"https://www.latex-project.org/lppl/lppl-1-3c/"
"LaTeX Project Public License 1.3c"))
(define lppl1.3c+
(license "LPPL 1.3c+"
"https://www.latex-project.org/lppl/lppl-1-3c/"
"LaTeX Project Public License 1.3c or later"))
(define mpl1.0
(license "MPL 1.0"
"http://www.mozilla.org/MPL/1.0/"

View file

@ -477,10 +477,10 @@ (define (tarxz-name file-name)
(define instantiate-patch
(match-lambda
((? string? patch)
((? string? patch) ;deprecated
(interned-file patch #:recursive? #t))
((? origin? patch)
(origin->derivation patch system))))
((? struct? patch) ;origin, local-file, etc.
(lower-object patch system))))
(mlet %store-monad ((tar -> (lookup-input "tar"))
(xz -> (lookup-input "xz"))

View file

@ -87,7 +87,7 @@ (define (find-url file)
;; Usually we'll have more luck with the output file name since
;; the deriver that was used by the server could be different, so
;; try one of the output file names.
(let ((drv (call-with-input-file file read-derivation)))
(let ((drv (read-derivation-from-file file)))
(or (find-url (derivation->output-path drv))
(find-url file))))
(lambda args
@ -599,7 +599,7 @@ (define (ensure-list x)
(append-map (match-lambda
(('argument . (? string? spec))
(cond ((derivation-path? spec)
(list (call-with-input-file spec read-derivation)))
(list (read-derivation-from-file spec)))
((store-path? spec)
;; Nothing to do; maybe for --log-file.
'())

View file

@ -221,15 +221,11 @@ (define %bag-emerged-node-type
;;; Derivation DAG.
;;;
(define (file->derivation file)
"Read the derivation from FILE and return it."
(call-with-input-file file read-derivation))
(define (derivation-dependencies obj)
"Return the <derivation> objects and store items corresponding to the
dependencies of OBJ, a <derivation> or store item."
(if (derivation? obj)
(append (map (compose file->derivation derivation-input-path)
(append (map (compose read-derivation-from-file derivation-input-path)
(derivation-inputs obj))
(derivation-sources obj))
'()))
@ -263,7 +259,7 @@ (define %derivation-node-type
((? derivation-path? item)
(mbegin %store-monad
((store-lift add-temp-root) item)
(return (list (file->derivation item)))))
(return (list (read-derivation-from-file item)))))
(x
(raise
(condition (&message (message "unsupported argument for \

View file

@ -74,7 +74,7 @@ (define %standard-import-options '())
;;;
(define importers '("gnu" "nix" "pypi" "cpan" "hackage" "stackage" "elpa" "gem"
"cran" "crate"))
"cran" "crate" "texlive"))
(define (resolve-importer name)
(let ((module (resolve-interface

View file

@ -0,0 +1,101 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; 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 (guix scripts import texlive)
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix scripts)
#:use-module (guix import texlive)
#:use-module (guix scripts import)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-texlive))
;;;
;;; Command-line options.
;;;
(define %default-options
'())
(define (show-help)
(display (G_ "Usage: guix import texlive PACKAGE-NAME
Import and convert the Texlive package for PACKAGE-NAME.\n"))
(display (G_ "
-a, --archive=ARCHIVE specify the archive repository"))
(display (G_ "
-h, --help display this help and exit"))
(display (G_ "
-V, --version display version information and exit"))
(newline)
(show-bug-report-information))
(define %options
;; Specification of the command-line options.
(cons* (option '(#\h "help") #f #f
(lambda args
(show-help)
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix import texlive")))
(option '(#\a "archive") #t #f
(lambda (opt name arg result)
(alist-cons 'component arg
(alist-delete 'component result))))
%standard-import-options))
;;;
;;; Entry point.
;;;
(define (guix-import-texlive . args)
(define (parse-options)
;; Return the alist of option values.
(args-fold* args %options
(lambda (opt name arg result)
(leave (G_ "~A: unrecognized option~%") name))
(lambda (arg result)
(alist-cons 'argument arg result))
%default-options))
(let* ((opts (parse-options))
(args (filter-map (match-lambda
(('argument . value)
value)
(_ #f))
(reverse opts))))
(match args
((package-name)
(let ((sexp (texlive->guix-package package-name
(or (assoc-ref opts 'component)
"latex"))))
(unless sexp
(leave (G_ "failed to download description for package '~a'~%")
package-name))
sexp))
(()
(leave (G_ "too few arguments~%")))
((many ...)
(leave (G_ "too many arguments~%"))))))

View file

@ -652,9 +652,8 @@ (define not-coma
(with-error-handling
(process-request (equal? (match:substring match 1) "1")
(match:substring match 2) ; system
(call-with-input-file
(match:substring match 3)
read-derivation)
(read-derivation-from-file
(match:substring match 3))
(string-tokenize
(match:substring match 4) not-coma)
#:print-build-trace? print-build-trace?

View file

@ -39,6 +39,7 @@ (define-module (guix scripts package)
#:select (directory-exists? mkdir-p))
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (ice-9 vlist)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
@ -238,32 +239,45 @@ (define* (build-and-use-profile store profile manifest
;;;
(define (find-packages-by-description regexps)
"Return the list of packages whose name matches one of REGEXPS, or whose
synopsis or description matches all of REGEXPS."
(define version<? (negate version>=?))
"Return two values: the list of packages whose name, synopsis, or
description matches at least one of REGEXPS sorted by relevance, and the list
of relevance scores."
(define (score str)
(let ((counts (filter-map (lambda (regexp)
(match (regexp-exec regexp str)
(#f #f)
(m (match:count m))))
regexps)))
;; Compute a score that's proportional to the number of regexps matched
;; and to the number of matches for each regexp.
(* (length counts) (reduce + 0 counts))))
(define (matches-all? str)
(every (cut regexp-exec <> str) regexps))
(define (package-score package)
(+ (* 3 (score (package-name package)))
(* 2 (match (package-synopsis package)
((? string? str) (score (P_ str)))
(#f 0)))
(match (package-description package)
((? string? str) (score (P_ str)))
(#f 0))))
(define (matches-one? str)
(find (cut regexp-exec <> str) regexps))
(sort
(fold-packages (lambda (package result)
(if (or (matches-one? (package-name package))
(and=> (package-synopsis package)
(compose matches-all? P_))
(and=> (package-description package)
(compose matches-all? P_)))
(cons package result)
result))
'())
(lambda (p1 p2)
(case (string-compare (package-name p1) (package-name p2)
(const '<) (const '=) (const '>))
((=) (version<? (package-version p1) (package-version p2)))
((<) #t)
(else #f)))))
(let ((matches (fold-packages (lambda (package result)
(match (package-score package)
((? zero?)
result)
(score
(cons (list package score) result))))
'())))
(unzip2 (sort matches
(lambda (m1 m2)
(match m1
((package1 score1)
(match m2
((package2 score2)
(if (= score1 score2)
(string>? (package-full-name package1)
(package-full-name package2))
(> score1 score2)))))))))))
(define (transaction-upgrade-entry entry transaction)
"Return a variant of TRANSACTION that accounts for the upgrade of ENTRY, a
@ -752,8 +766,14 @@ (define (diff-profiles profile numbers)
opts))
(regexps (map (cut make-regexp* <> regexp/icase) patterns)))
(leave-on-EPIPE
(for-each (cute package->recutils <> (current-output-port))
(find-packages-by-description regexps)))
(let-values (((packages scores)
(find-packages-by-description regexps)))
(for-each (lambda (package score)
(package->recutils package (current-output-port)
#:extra-fields
`((relevance . ,score))))
packages
scores)))
#t))
(('show requested-name)

View file

@ -106,11 +106,11 @@ (define (guix-perform-download . args)
(match args
(((? derivation-path? drv) (? store-path? output))
(assert-low-privileges)
(perform-download (call-with-input-file drv read-derivation)
(perform-download (read-derivation-from-file drv)
output))
(((? derivation-path? drv)) ;backward compatibility
(assert-low-privileges)
(perform-download (call-with-input-file drv read-derivation)))
(perform-download (read-derivation-from-file drv)))
(("--version")
(show-version-and-exit))
(x

View file

@ -225,10 +225,6 @@ (define %nix-cache-info
("WantMassQuery" . 0)
("Priority" . 100)))
(define (load-derivation file)
"Read the derivation from FILE."
(call-with-input-file file read-derivation))
(define (signed-string s)
"Sign the hash of the string S with the daemon's key."
(let* ((public-key (%public-key))
@ -286,7 +282,7 @@ (define* (narinfo-string store store-path key
base-info
(catch 'system-error
(lambda ()
(let ((drv (load-derivation deriver)))
(let ((drv (read-derivation-from-file deriver)))
(format #f "~aSystem: ~a~%Deriver: ~a~%"
base-info (derivation-system drv)
(basename deriver))))

View file

@ -718,6 +718,37 @@ (define socket
(let loop ((done? (process-stderr server)))
(or done? (process-stderr server)))))
(define %rpc-calls
;; Mapping from RPC names (symbols) to invocation counts.
(make-hash-table))
(define* (show-rpc-profile #:optional (port (current-error-port)))
"Write to PORT a summary of the RPCs that have been made."
(let ((profile (sort (hash-fold alist-cons '() %rpc-calls)
(lambda (rpc1 rpc2)
(< (cdr rpc1) (cdr rpc2))))))
(format port "Remote procedure call summary: ~a RPCs~%"
(match profile
(((names . counts) ...)
(reduce + 0 counts))))
(for-each (match-lambda
((rpc . count)
(format port " ~30a ... ~5@a~%" rpc count)))
profile)))
(define record-operation
;; Optionally, increment the number of calls of the given RPC.
(let ((profiled (or (and=> (getenv "GUIX_PROFILING") string-tokenize)
'())))
(if (member "rpc" profiled)
(begin
(add-hook! exit-hook show-rpc-profile)
(lambda (name)
(let ((count (or (hashq-ref %rpc-calls name) 0)))
(hashq-set! %rpc-calls name (+ count 1)))))
(lambda (_)
#t))))
(define-syntax operation
(syntax-rules ()
"Define a client-side RPC stub for the given operation."
@ -725,6 +756,7 @@ (define-syntax operation
(lambda (server arg ...)
docstring
(let ((s (nix-server-socket server)))
(record-operation 'name)
(write-int (operation-id name) s)
(write-arg type arg s)
...
@ -830,10 +862,11 @@ (define add-to-store
When RECURSIVE? is true, call (SELECT? FILE STAT) for each directory entry,
where FILE is the entry's absolute file name and STAT is the result of
'lstat'; exclude entries for which SELECT? does not return true."
(let* ((st (false-if-exception (lstat file-name)))
(args `(,st ,basename ,recursive? ,hash-algo ,select?))
;; Note: We don't stat FILE-NAME at each call, and thus we assume that
;; the file remains unchanged for the lifetime of SERVER.
(let* ((args `(,file-name ,basename ,recursive? ,hash-algo ,select?))
(cache (nix-server-add-to-store-cache server)))
(or (and st (hash-ref cache args))
(or (hash-ref cache args)
(let ((path (add-to-store server basename recursive?
hash-algo file-name
#:select? select?)))

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