Merge branch 'master' into core-updates

This commit is contained in:
Marius Bakke 2018-09-09 17:40:35 +02:00
commit 0aeb134850
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA
125 changed files with 2982 additions and 1837 deletions

View file

@ -63,9 +63,6 @@ MODULES = \
guix/base64.scm \
guix/cpio.scm \
guix/records.scm \
guix/gcrypt.scm \
guix/hash.scm \
guix/pk-crypto.scm \
guix/pki.scm \
guix/progress.scm \
guix/combinators.scm \
@ -207,6 +204,7 @@ MODULES = \
guix/scripts/authenticate.scm \
guix/scripts/refresh.scm \
guix/scripts/repl.scm \
guix/scripts/describe.scm \
guix/scripts/system.scm \
guix/scripts/system/search.scm \
guix/scripts/lint.scm \
@ -331,8 +329,6 @@ SCM_TESTS = \
tests/base32.scm \
tests/base64.scm \
tests/cpio.scm \
tests/hash.scm \
tests/pk-crypto.scm \
tests/pki.scm \
tests/print.scm \
tests/sets.scm \
@ -414,6 +410,7 @@ SH_TESTS = \
tests/guix-environment.sh \
tests/guix-environment-container.sh \
tests/guix-graph.sh \
tests/guix-describe.sh \
tests/guix-lint.sh
TESTS = $(SCM_TESTS) $(SH_TESTS)

3
README
View file

@ -21,7 +21,7 @@ Guix is based on the [[https://nixos.org/nix/][Nix]] package manager.
GNU Guix currently depends on the following packages:
- [[https://gnu.org/software/guile/][GNU Guile 2.2.x or 2.0.x]], version 2.0.13 or later
- [[https://gnupg.org/][GNU libgcrypt]]
- [[https://notabug.org/cwebber/guile-gcrypt][Guile-Gcrypt]] 0.1.0 or later
- [[https://www.gnu.org/software/make/][GNU Make]]
- [[https://www.gnutls.org][GnuTLS]] compiled with guile support enabled
- [[https://notabug.org/civodul/guile-sqlite3][Guile-SQLite3]], version 0.1.0 or later
@ -31,6 +31,7 @@ GNU Guix currently depends on the following packages:
Unless `--disable-daemon' was passed, the following packages are needed:
- [[https://gnupg.org/][GNU libgcrypt]]
- [[https://sqlite.org/][SQLite 3]]
- [[https://gcc.gnu.org][GCC's g++]]
- optionally [[http://www.bzip.org][libbz2]]

View file

@ -22,6 +22,7 @@ (define-module (build-self)
#:use-module (guix ui)
#:use-module (guix config)
#:use-module (guix modules)
#:use-module (guix build-system gnu)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (rnrs io ports)
@ -72,7 +73,7 @@ (define %config-variables
(variables rest ...))))))
(variables %localstatedir %storedir %sysconfdir %system)))
(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2
(define* (make-config.scm #:key zlib gzip xz bzip2
(package-name "GNU Guix")
(package-version "0")
(bug-report-address "bug-guix@gnu.org")
@ -92,7 +93,6 @@ (define defmod 'define-module)
%state-directory
%store-database-directory
%config-directory
%libgcrypt
%libz
%gzip
%bzip2
@ -137,9 +137,6 @@ (define %bzip2
(define %xz
#+(and xz (file-append xz "/bin/xz")))
(define %libgcrypt
#+(and libgcrypt
(file-append libgcrypt "/lib/libgcrypt")))
(define %libz
#+(and zlib
(file-append zlib "/lib/libz")))))))
@ -200,6 +197,54 @@ (define (date-version-string)
;; XXX: Replace with a Git commit id.
(date->string (current-date 0) "~Y~m~d.~H"))
(define guile-gcrypt
;; The host Guix may or may not have 'guile-gcrypt', which was introduced in
;; August 2018. If it has it, it's at least version 0.1.0, which is good
;; enough. If it doesn't, specify our own package because the target Guix
;; requires it.
(match (find-best-packages-by-name "guile-gcrypt" #f)
(()
(package
(name "guile-gcrypt")
(version "0.1.0")
(home-page "https://notabug.org/cwebber/guile-gcrypt")
(source (origin
(method url-fetch)
(uri (string-append home-page "/archive/v" version ".tar.gz"))
(sha256
(base32
"1gir7ifknbmbvjlql5j6wzk7bkb5lnmq80q59ngz43hhpclrk5k3"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
;; The 'bootstrap' phase appeared in 'core-updates', which was merged
;; into 'master' ca. June 2018.
'(#:phases (modify-phases %standard-phases
(delete 'bootstrap)
(add-before 'configure 'bootstrap
(lambda _
(unless (zero? (system* "autoreconf" "-vfi"))
(error "autoreconf failed"))
#t)))))
(native-inputs
`(("pkg-config" ,(specification->package "pkg-config"))
("autoconf" ,(specification->package "autoconf"))
("automake" ,(specification->package "automake"))
("texinfo" ,(specification->package "texinfo"))))
(inputs
`(("guile" ,(specification->package "guile"))
("libgcrypt" ,(specification->package "libgcrypt"))))
(synopsis "Cryptography library for Guile using Libgcrypt")
(description
"Guile-Gcrypt provides a Guile 2.x interface to a subset of the
GNU Libgcrypt crytographic library. It provides modules for cryptographic
hash functions, message authentication codes (MAC), public-key cryptography,
strong randomness, and more. It is implemented using the foreign function
interface (FFI) of Guile.")
(license #f))) ;license:gpl3+
((package . _)
package)))
(define* (build-program source version
#:optional (guile-version (effective-version))
#:key (pull-version 0))
@ -212,10 +257,21 @@ (define select?
(('gnu _ ...) #t)
(_ #f)))
(define fake-gcrypt-hash
;; Fake (gcrypt hash) module; see below.
(scheme-file "hash.scm"
#~(define-module (gcrypt hash)
#:export (sha1 sha256))))
(with-imported-modules `(((guix config)
=> ,(make-config.scm
#:libgcrypt
(specification->package "libgcrypt")))
=> ,(make-config.scm))
;; To avoid relying on 'with-extensions', which was
;; introduced in 0.15.0, provide a fake (gcrypt
;; hash) just so that we can build modules, and
;; adjust %LOAD-PATH later on.
((gcrypt hash) => ,fake-gcrypt-hash)
,@(source-module-closure `((guix store)
(guix self)
(guix derivations)
@ -237,13 +293,24 @@ (define select?
(match %load-path
((front _ ...)
(unless (string=? front source) ;already done?
(set! %load-path (list source front)))))))
(set! %load-path
(list source
(string-append #$guile-gcrypt
"/share/guile/site/"
(effective-version))
front)))))))
;; Only load our own modules or those of Guile.
;; Only load Guile-Gcrypt, our own modules, or those
;; of Guile.
(match %load-compiled-path
((front _ ... sys1 sys2)
(set! %load-compiled-path
(list front sys1 sys2)))))
(unless (string-prefix? #$guile-gcrypt front)
(set! %load-compiled-path
(list (string-append #$guile-gcrypt
"/lib/guile/"
(effective-version)
"/site-ccache")
front sys1 sys2))))))
(use-modules (guix store)
(guix self)

View file

@ -48,7 +48,7 @@ if test "x$guix_build_daemon" = "xyes"; then
esac
case "$LIBGCRYPT_LIBDIR" in
no)
no | "")
LIBGCRYPT_LIBS="-lgcrypt"
;;
*)

View file

@ -130,6 +130,11 @@ if test "x$guix_cv_have_recent_guile_sqlite3" != "xyes"; then
AC_MSG_ERROR([A recent Guile-SQLite3 could not be found; please install it.])
fi
GUILE_MODULE_AVAILABLE([have_guile_gcrypt], [(gcrypt hash)])
if test "x$have_guile_gcrypt" != "xyes"; then
AC_MSG_ERROR([Guile-Gcrypt could not be found; please install it.])
fi
dnl Make sure we have a full-fledged Guile.
GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
@ -213,16 +218,10 @@ AC_ARG_WITH([libgcrypt-libdir],
esac])
dnl If none of the --with-libgcrypt-* options was used, try to determine the
dnl absolute file name of libgcrypt.so.
dnl the library directory.
case "x$LIBGCRYPT_PREFIX$LIBGCRYPT_LIBDIR" in
xnono)
GUIX_LIBGCRYPT_LIBDIR([LIBGCRYPT_LIBDIR])
if test "x$LIBGCRYPT_LIBDIR" != x; then
LIBGCRYPT="$LIBGCRYPT_LIBDIR/libgcrypt"
else
dnl 'config-daemon.ac' expects "no" in this case.
LIBGCRYPT_LIBDIR="no"
fi
;;
esac

View file

@ -147,6 +147,7 @@ Package Management
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
* Channels:: Customizing the package collection.
* Invoking guix describe:: Display information about your Guix revision.
* Invoking guix pack:: Creating software bundles.
* Invoking guix archive:: Exporting and importing store files.
@ -620,7 +621,8 @@ GNU Guix depends on the following packages:
@itemize
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or
later, including 2.2.x;
@item @url{http://gnupg.org/, GNU libgcrypt};
@item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version
0.1.0 or later;
@item
@uref{http://gnutls.org/, GnuTLS}, specifically its Guile bindings
(@pxref{Guile Preparations, how to install the GnuTLS bindings for
@ -662,6 +664,7 @@ Unless @code{--disable-daemon} was passed to @command{configure}, the
following packages are also needed:
@itemize
@item @url{http://gnupg.org/, GNU libgcrypt};
@item @url{http://sqlite.org, SQLite 3};
@item @url{http://gcc.gnu.org, GCC's g++}, with support for the
C++11 standard.
@ -1696,6 +1699,7 @@ guix package -i emacs-guix
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
* Channels:: Customizing the package collection.
* Invoking guix describe:: Display information about your Guix revision.
* Invoking guix pack:: Creating software bundles.
* Invoking guix archive:: Exporting and importing store files.
@end menu
@ -1749,7 +1753,7 @@ collected.
@cindex reproducibility
@cindex reproducible builds
Finally, Guix takes a @dfn{purely functional} approach to package
Guix takes a @dfn{purely functional} approach to package
management, as described in the introduction (@pxref{Introduction}).
Each @file{/gnu/store} package directory name contains a hash of all the
inputs that were used to build that package---compiler, libraries, build
@ -1777,6 +1781,15 @@ a package to quickly set up the right development environment for their
package, without having to manually install the dependencies of the
package into their profile (@pxref{Invoking guix environment}).
@cindex replication, of software environments
@cindex provenance tracking, of software artifacts
All of Guix and its package definitions is version-controlled, and
@command{guix pull} allows you to ``travel in time'' on the history of Guix
itself (@pxref{Invoking guix pull}). This makes it possible to replicate a
Guix instance on a different machine or at a later point in time, which in
turn allows you to @emph{replicate complete software environments}, while
retaining precise @dfn{provenance tracking} of the software.
@node Invoking guix package
@section Invoking @command{guix package}
@ -2804,6 +2817,9 @@ Generation 3 Jun 13 2018 23:31:07 (current)
69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{}
@end example
@ref{Invoking guix describe, @command{guix describe}}, for other ways to
describe the current status of Guix.
This @code{~/.config/guix/current} profile works like any other profile
created by @command{guix package} (@pxref{Invoking guix package}). That
is, you can list generations, roll back to the previous
@ -2849,6 +2865,13 @@ is provided, the subset of generations that match @var{pattern}.
The syntax of @var{pattern} is the same as with @code{guix package
--list-generations} (@pxref{Invoking guix package}).
@ref{Invoking guix describe}, for a way to display information about the
current generation only.
@item --profile=@var{profile}
@itemx -p @var{profile}
Use @var{profile} instead of @file{~/.config/guix/current}.
@item --bootstrap
Use the bootstrap Guile to build the latest Guix. This option is only
useful to Guix developers.
@ -3017,6 +3040,9 @@ say, on another machine, by providing a channel specification in
(branch "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))
@end lisp
The @command{guix describe --format=channels} command can even generate this
list of channels directly (@pxref{Invoking guix describe}).
At this point the two machines run the @emph{exact same Guix}, with access to
the @emph{exact same packages}. The output of @command{guix build gimp} on
one machine will be exactly the same, bit for bit, as the output of the same
@ -3028,6 +3054,78 @@ This gives you super powers, allowing you to track the provenance of binary
artifacts with very fine grain, and to reproduce software environments at
will---some sort of ``meta reproducibility'' capabilities, if you will.
@node Invoking guix describe
@section Invoking @command{guix describe}
@cindex reproducibility
@cindex replicating Guix
Often you may want to answer questions like: ``Which revision of Guix am I
using?'' or ``Which channels am I using?'' This is useful information in many
situations: if you want to @emph{replicate} an environment on a different
machine or user account, if you want to report a bug or to determine what
change in the channels you are using caused it, or if you want to record your
system state for reproducibility purposes. The @command{guix describe}
command answers these questions.
When run from a @command{guix pull}ed @command{guix}, @command{guix describe}
displays the channel(s) that it was built from, including their repository URL
and commit IDs (@pxref{Channels}):
@example
$ guix describe
Generation 10 Sep 03 2018 17:32:44 (current)
guix e0fa68c
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: e0fa68c7718fffd33d81af415279d6ddb518f727
@end example
If you're familiar with the Git version control system, this is similar in
spirit to @command{git describe}; the output is also similar to that of
@command{guix pull --list-generations}, but limited to the current generation
(@pxref{Invoking guix pull, the @option{--list-generations} option}). Because
the Git commit ID shown above unambiguously refers to a snapshot of Guix, this
information is all it takes to describe the revision of Guix you're using, and
also to replicate it.
To make it easier to replicate Guix, @command{guix describe} can also be asked
to return a list of channels instead of the human-readable description above:
@example
$ guix describe -f channels
(list (channel
(name 'guix)
(url "https://git.savannah.gnu.org/git/guix.git")
(commit
"e0fa68c7718fffd33d81af415279d6ddb518f727")))
@end example
@noindent
You can save this to a file and feed it to @command{guix pull -C} on some
other machine or at a later point in time, which will instantiate @emph{this
exact Guix revision} (@pxref{Invoking guix pull, the @option{-C} option}).
From there on, since you're able to deploy the same revision of Guix, you can
just as well @emph{replicate a complete software environment}. We humbly
think that this is @emph{awesome}, and we hope you'll like it too!
The details of the options supported by @command{guix describe} are as
follows:
@table @code
@item --format=@var{format}
@itemx -f @var{format}
Produce output in the specified @var{format}, one of:
@table @code
@item human
produce human-readable output;
@item channels
produce a list of channel specifications that can be passed to @command{guix
pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking
guix pull}).
@end table
@end table
@node Invoking guix pack
@section Invoking @command{guix pack}
@ -16823,6 +16921,13 @@ Extension package for @code{hpcguix-web}.
@item @code{menu} (default: @code{'()})
Additional entry in page @code{menu}.
@item @code{channels} (default: @code{%default-channels})
List of channels from which the package list is built (@pxref{Channels}).
@item @code{package-list-expiration} (default: @code{(* 12 3600)})
The expiration time, in seconds, after which the package list is rebuilt from
the latest instances of the given channels.
@end table
See the hpcguix-web repository for a
@ -16846,6 +16951,17 @@ A typical hpcguix-web service declaration looks like this:
(menu '(("/about" "ABOUT"))))))))
@end example
@quotation Note
The hpcguix-web service periodically updates the package list it publishes by
pulling channels from Git. To that end, it needs to access X.509 certificates
so that it can authenticate Git servers when communicating over HTTPS, and it
assumes that @file{/etc/ssl/certs} contains those certificates.
Thus, make sure to add @code{nss-certs} or another certificate package to the
@code{packages} field of your configuration. @ref{X.509 Certificates}, for
more information on X.509 certificates.
@end quotation
@node Certificate Services
@subsubsection Certificate Services

View file

@ -729,6 +729,8 @@ dist_patch_DATA = \
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
%D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \
%D%/packages/patches/ghostscript-CVE-2018-10194.patch \
%D%/packages/patches/ghostscript-CVE-2018-16509.patch \
%D%/packages/patches/ghostscript-bug-699708.patch \
%D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.patch \
@ -955,6 +957,7 @@ dist_patch_DATA = \
%D%/packages/patches/mcrypt-CVE-2012-4409.patch \
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
%D%/packages/patches/mcrypt-CVE-2012-4527.patch \
%D%/packages/patches/mes-nyacc-0.86.0.patch \
%D%/packages/patches/mesa-skip-disk-cache-test.patch \
%D%/packages/patches/meson-for-build-rpath.patch \
%D%/packages/patches/metabat-fix-compilation.patch \
@ -991,6 +994,7 @@ dist_patch_DATA = \
%D%/packages/patches/nvi-assume-preserve-path.patch \
%D%/packages/patches/nvi-dbpagesize-binpower.patch \
%D%/packages/patches/nvi-db4.patch \
%D%/packages/patches/nyacc-binary-literals.patch \
%D%/packages/patches/nyx-show-header-stats-with-python3.patch \
%D%/packages/patches/ocaml-bisect-fix-camlp4-in-another-directory.patch \
%D%/packages/patches/ocaml-bitstring-fix-configure.patch \

View file

@ -1908,7 +1908,7 @@ (define-public lvtk
(define-public openal
(package
(name "openal")
(version "1.18.2")
(version "1.19.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -1916,7 +1916,7 @@ (define-public openal
version ".tar.bz2"))
(sha256
(base32
"10kydm8701a2kppiss9sdidn1820cmzhqgx1b2bsa5dsgzic32lz"))))
"1mhf5bsb58s1xk6hvxl7ly7rd4rpl9z8h07xl1q94brywykg7bgi"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no check target

View file

@ -36,7 +36,7 @@ (define-module (gnu packages bash)
#:use-module (guix store)
#:use-module (guix build-system gnu)
#:autoload (guix gnupg) (gnupg-verify*)
#:autoload (guix hash) (port-sha256)
#:autoload (gcrypt hash) (port-sha256)
#:autoload (guix base32) (bytevector->nix-base32-string)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)

View file

@ -360,17 +360,64 @@ (define-public r-multtest
expressed genes in DNA microarray experiments.")
(license license:lgpl3)))
(define-public r-graph
(package
(name "r-graph")
(version "1.58.0")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "graph" version))
(sha256
(base32
"1zx445lk36g1s6i5dbhhf00nzzazyklfjxxjfax6q8hnhvgm9759"))))
(build-system r-build-system)
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)))
(home-page "https://bioconductor.org/packages/graph")
(synopsis "Handle graph data structures in R")
(description
"This package implements some simple graph handling capabilities for R.")
(license license:artistic2.0)))
(define-public r-codedepends
(package
(name "r-codedepends")
(version "0.6.5")
(source
(origin
(method url-fetch)
(uri (cran-uri "CodeDepends" version))
(sha256
(base32
"0l7kiv3awx50glf5cs841b4zzsff1ml90f0zr868ygvwsr4ps1hq"))))
(properties `((upstream-name . "CodeDepends")))
(build-system r-build-system)
(propagated-inputs
`(("r-codetools" ,r-codetools)
("r-graph" ,r-graph)
("r-xml" ,r-xml)))
(home-page "http://cran.r-project.org/web/packages/CodeDepends")
(synopsis "Analysis of R code for reproducible research and code comprehension")
(description
"This package provides tools for analyzing R expressions or blocks of
code and determining the dependencies between them. It focuses on R scripts,
but can be used on the bodies of functions. There are many facilities
including the ability to summarize or get a high-level view of code,
determining dependencies between variables, code improvement suggestions.")
;; Any version of the GPL
(license (list license:gpl2+ license:gpl3+))))
(define-public r-chippeakanno
(package
(name "r-chippeakanno")
(version "3.14.0")
(version "3.14.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ChIPpeakAnno" version))
(sha256
(base32
"1kcnc3cnmrhdk1x7q3y6zsz09pgd3xn9xy1hfbxz48cajlb18ad0"))))
"1cn1hfc3nvsf2n3563lkmvwjxfbiygx7f84zk683p89gy7zi1gyj"))))
(properties `((upstream-name . "ChIPpeakAnno")))
(build-system r-build-system)
(propagated-inputs

View file

@ -51,6 +51,7 @@ (define-module (gnu packages bioinformatics)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages bioconductor)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@ -1887,42 +1888,33 @@ (define-public cutadapt
(define-public libbigwig
(package
(name "libbigwig")
(version "0.1.4")
(version "0.4.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/dpryan79/libBigWig/"
"archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/dpryan79/libBigWig.git")
(commit version)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"098rjh35pi4a9q83n8wiwvyzykjqj6l8q189p1xgfw4ghywdlvw1"))))
"0h2smg24v5srdcqzrmz2g23cmlp4va465mgx8r2z571sfz8pv454"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:tests? #f ; tests require access to the web
#:make-flags
(list "CC=gcc"
(string-append "prefix=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'check 'disable-curl-test
(lambda _
(substitute* "Makefile"
(("./test/testRemote.*") ""))
#t))
;; This has been fixed with the upstream commit 4ff6959cd8a0, but
;; there has not yet been a release containing this change.
(add-before 'install 'create-target-dirs
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(mkdir-p (string-append out "/lib"))
(mkdir-p (string-append out "/include"))
#t))))))
(delete 'configure))))
(inputs
`(("zlib" ,zlib)
("curl" ,curl)))
(native-inputs
`(("doxygen" ,doxygen)))
`(("doxygen" ,doxygen)
;; Need for tests
("python" ,python-2)))
(home-page "https://github.com/dpryan79/libBigWig")
(synopsis "C library for handling bigWig files")
(description
@ -1933,13 +1925,13 @@ (define-public libbigwig
(define-public python-pybigwig
(package
(name "python-pybigwig")
(version "0.2.5")
(version "0.3.12")
(source (origin
(method url-fetch)
(uri (pypi-uri "pyBigWig" version))
(sha256
(base32
"0yrpdxg3y0sny25x4w22lv1k47jzccqjmg7j4bp0hywklvp0hg7d"))
"00w4kfnm2c5l7wdwr2nj1z5djv8kzgf7h1zhsgv6njff1rwr26g0"))
(modules '((guix build utils)))
(snippet
'(begin
@ -1955,6 +1947,8 @@ (define-public python-pybigwig
(substitute* "setup.py"
(("libs=\\[") "libs=[\"BigWig\", "))
#t)))))
(propagated-inputs
`(("python-numpy" ,python-numpy)))
(inputs
`(("libbigwig" ,libbigwig)
("zlib" ,zlib)
@ -6378,14 +6372,14 @@ (define-public r-dexseq
(define-public r-annotationforge
(package
(name "r-annotationforge")
(version "1.22.0")
(version "1.22.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "AnnotationForge" version))
(sha256
(base32
"12ffj7h95adiya5mzyjxazqn1qgr434ajpabfcyhrj5v83s4vk65"))))
"17kmy7nvpyyj6w5jyrjciw87rydmmmc8q6cnwqjv1j7li9bp09gr"))))
(properties
`((upstream-name . "AnnotationForge")))
(build-system r-build-system)
@ -6964,13 +6958,13 @@ (define-public r-biocinstaller
(define-public r-biocviews
(package
(name "r-biocviews")
(version "1.48.2")
(version "1.48.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "biocViews" version))
(sha256
(base32
"01yiafayl1m5704xdd2cn3zjc78rs10dqyz66lr3qkf6d8w66938"))))
"1rxvwikqivsgxjjcazlszy8xgz346lfh5rw4llxw6fz38fjgb0k5"))))
(properties
`((upstream-name . "biocViews")))
(build-system r-build-system)
@ -7183,13 +7177,13 @@ (define-public r-seqinr
(define-public r-iranges
(package
(name "r-iranges")
(version "2.14.10")
(version "2.14.11")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "IRanges" version))
(sha256
(base32
"10ccw930vfmkskkrzbps14xglqlkxf588623dr7f1a9ckx7yr2p6"))))
"0wz63hysspyjihqadg91dbvllc5a61zzjrsz0b9498lihqc6m1la"))))
(properties
`((upstream-name . "IRanges")))
(build-system r-build-system)
@ -7263,13 +7257,13 @@ (define-public r-genomeinfodb
(define-public r-edger
(package
(name "r-edger")
(version "3.22.2")
(version "3.22.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "edgeR" version))
(sha256
(base32
"07py2g6vg9jbflwhc1hnzr2silbinrjwxq3mkq30nzjgf0n0hrf3"))))
"0w3jv29n0kkaiig8dbbdqy2dkng8xfaihch82mj9ci5hphrx3nng"))))
(properties `((upstream-name . "edgeR")))
(build-system r-build-system)
(propagated-inputs
@ -7291,13 +7285,13 @@ (define-public r-edger
(define-public r-variantannotation
(package
(name "r-variantannotation")
(version "1.26.0")
(version "1.26.1")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "VariantAnnotation" version))
(sha256
(base32
"06bccdf57vja7m63chmgc4539lwng3q3b8zxn285fj8524l6mcn7"))))
"1r55ki951dj81qvy73knfcy69ik5vzkd56wnk3f6vvf9vngqb8jr"))))
(properties
`((upstream-name . "VariantAnnotation")))
(inputs
@ -7329,13 +7323,13 @@ (define-public r-variantannotation
(define-public r-limma
(package
(name "r-limma")
(version "3.36.1")
(version "3.36.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "limma" version))
(sha256
(base32
"1982g5v35ilfgxm2vkq1p3j1bbir795pjvfzx4nzam2rlqqymbqm"))))
"0iiifszr6hcqih6kszdsbkx3gacfg3d7v8hdx0lbjqnjqgqz7pwk"))))
(build-system r-build-system)
(home-page "http://bioinf.wehi.edu.au/limma")
(synopsis "Package for linear models for microarray and RNA-seq data")
@ -7384,13 +7378,13 @@ (define-public r-xvector
(define-public r-genomicranges
(package
(name "r-genomicranges")
(version "1.32.3")
(version "1.32.6")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "GenomicRanges" version))
(sha256
(base32
"03gmka6rlz18vd4229796l5l3l6446v5cb90sn2nb5knjbp84hni"))))
"0p58yk2i5gqvjlkx548mnrr49wvs0xfcl06l9rqj2hi6hkkbvnp3"))))
(properties
`((upstream-name . "GenomicRanges")))
(build-system r-build-system)
@ -7495,13 +7489,13 @@ (define-public r-biomart
(define-public r-biocparallel
(package
(name "r-biocparallel")
(version "1.14.1")
(version "1.14.2")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "BiocParallel" version))
(sha256
(base32
"00qg1kg2l9qqpyjaw5q910cmf84vwfiw1fhsx3ig784gwinwgj6n"))))
"1llb5a62hn4yxpdgqdh2l7i5zd06mjkk8hagsna69cq65wv6iifm"))))
(properties
`((upstream-name . "BiocParallel")))
(build-system r-build-system)
@ -7546,13 +7540,13 @@ (define-public r-biostrings
(define-public r-rsamtools
(package
(name "r-rsamtools")
(version "1.32.0")
(version "1.32.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "Rsamtools" version))
(sha256
(base32
"1s65y5wn4d0x8zsljg2kmhcl6r9884h95kr041j7hp49bmxg3an6"))))
"1hpjr22h33pf4fgv0sj83rqzv6l5l7s6fpmmqvchh45ikks1mnhq"))))
(properties
`((upstream-name . "Rsamtools")))
(build-system r-build-system)
@ -7590,13 +7584,13 @@ (define-public r-rsamtools
(define-public r-delayedarray
(package
(name "r-delayedarray")
(version "0.6.1")
(version "0.6.5")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "DelayedArray" version))
(sha256
(base32
"0sjwszxdi0vkj2i2di5i46gh9chc660yr3gs5nk9qnqp77713zds"))))
"10b03zrnvz5isfh4z55hasya2m71lrfx10l5lm2sdmqs0gwkanrd"))))
(properties
`((upstream-name . "DelayedArray")))
(build-system r-build-system)
@ -7685,13 +7679,13 @@ (define-public r-genomicalignments
(define-public r-rtracklayer
(package
(name "r-rtracklayer")
(version "1.40.3")
(version "1.40.6")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "rtracklayer" version))
(sha256
(base32
"0kvsjdaypn1jnxbnsxpycildwdyxwnjkigfq8qm8mlyfc4ahdgy3"))))
"1wxxxlyps19dw3i0pw4mlm3kinnswsc35rgvlnbwvpnpjbca6w4l"))))
(build-system r-build-system)
(arguments
`(#:phases
@ -7732,13 +7726,13 @@ (define-public r-rtracklayer
(define-public r-genomicfeatures
(package
(name "r-genomicfeatures")
(version "1.32.0")
(version "1.32.2")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "GenomicFeatures" version))
(sha256
(base32
"1cqcl72q0k5wylw1brn4g4h7xzys1v06piry19cvp0gjcvm5sp7a"))))
"0kfyyg1ib8fkq2hxraal10z4bx3rg8figdskw4yhn1mbh6l42q5f"))))
(properties
`((upstream-name . "GenomicFeatures")))
(build-system r-build-system)
@ -7794,25 +7788,6 @@ (define-public r-go-db
information about the latest version of the Gene Ontologies.")
(license license:artistic2.0)))
(define-public r-graph
(package
(name "r-graph")
(version "1.58.0")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "graph" version))
(sha256
(base32
"1zx445lk36g1s6i5dbhhf00nzzazyklfjxxjfax6q8hnhvgm9759"))))
(build-system r-build-system)
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)))
(home-page "https://bioconductor.org/packages/graph")
(synopsis "Handle graph data structures in R")
(description
"This package implements some simple graph handling capabilities for R.")
(license license:artistic2.0)))
(define-public r-topgo
(package
(name "r-topgo")
@ -8544,7 +8519,7 @@ (define-public r-rcas
`(("r-testthat" ,r-testthat)
;; During vignette building knitr checks that "pandoc-citeproc"
;; is in the PATH.
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)))
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)))
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)
("r-biomart" ,r-biomart)
@ -9328,14 +9303,14 @@ (define-public r-sva
(define-public r-seqminer
(package
(name "r-seqminer")
(version "6.0")
(version "6.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "seqminer" version))
(sha256
(base32
"057j1l6dip35l1aivilapl2zv9db677b3di2pb3sfgq2sxg0ps3l"))))
"15yhg4vfc7jg1jnqb3371j00pgbmbyc9l1xx63hq1l3p34lazq2l"))))
(build-system r-build-system)
(inputs
`(("zlib" ,zlib)))
@ -9382,14 +9357,14 @@ (define-public r-raremetals2
(define-public r-maldiquant
(package
(name "r-maldiquant")
(version "1.17")
(version "1.18")
(source
(origin
(method url-fetch)
(uri (cran-uri "MALDIquant" version))
(sha256
(base32
"047s6007ydc38x8wm027mlb4mngz15n0d4238fr8h43wyll5zy0z"))))
"18nl214xjsxkcpbg79jkmw0yznwm5szyh2qb84n7ip46mm779ha6"))))
(properties `((upstream-name . "MALDIquant")))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/MALDIquant")
@ -9626,14 +9601,14 @@ (define-public r-pcamethods
(define-public r-msnbase
(package
(name "r-msnbase")
(version "2.6.1")
(version "2.6.3")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "MSnbase" version))
(sha256
(base32
"0zrpx9r93q5ca2zdak5rs2m9sjm0wjdra1xfj3d3sx6p5gzfyg6n"))))
"15jhqg02ypmznc0wxksw56yij02csy678vqy531fdv86fsmypwa0"))))
(properties `((upstream-name . "MSnbase")))
(build-system r-build-system)
(propagated-inputs
@ -9708,58 +9683,31 @@ (define-public r-msnid
(define-public r-seurat
(package
(name "r-seurat")
(version "2.3.2")
(version "2.3.4")
(source (origin
(method url-fetch)
(uri (cran-uri "Seurat" version))
(sha256
(base32
"1sjpy5rrpvlpm6hs7qy7qpglgbp7zrgfybcsalpmjb51rhxhgcg1"))
;; Delete pre-built jar.
(snippet
'(begin (delete-file "inst/java/ModularityOptimizer.jar")
#t))))
"0l8bv4i9nzz26mirnva10mq6pimibj24vk7vpvfypgn7xk4942hd"))))
(properties `((upstream-name . "Seurat")))
(build-system r-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'build-jar
(lambda* (#:key inputs #:allow-other-keys)
(let ((classesdir "tmp-classes"))
(setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
(mkdir classesdir)
(with-output-to-file "manifest"
(lambda _
(display "Manifest-Version: 1.0
Main-Class: ModularityOptimizer\n")))
(and (zero? (apply system* `("javac" "-d" ,classesdir
,@(find-files "java" "\\.java$"))))
(zero? (system* "jar"
"-cmf" "manifest"
"inst/java/ModularityOptimizer.jar"
"-C" classesdir ".")))))))))
(native-inputs
`(("jdk" ,icedtea "jdk")))
(propagated-inputs
`(("r-ape" ,r-ape)
("r-caret" ,r-caret)
("r-cluster" ,r-cluster)
("r-cowplot" ,r-cowplot)
("r-diffusionmap" ,r-diffusionmap)
("r-dosnow" ,r-dosnow)
("r-dplyr" ,r-dplyr)
("r-dtw" ,r-dtw)
("r-fitdistrplus" ,r-fitdistrplus)
("r-fnn" ,r-fnn)
("r-foreach" ,r-foreach)
("r-fpc" ,r-fpc)
("r-gdata" ,r-gdata)
("r-ggplot2" ,r-ggplot2)
("r-ggridges" ,r-ggridges)
("r-gplots" ,r-gplots)
("r-hdf5r" ,r-hdf5r)
("r-hmisc" ,r-hmisc)
("r-httr" ,r-httr)
("r-ica" ,r-ica)
("r-igraph" ,r-igraph)
("r-irlba" ,r-irlba)
@ -9772,7 +9720,6 @@ (define-public r-seurat
("r-pbapply" ,r-pbapply)
("r-plotly" ,r-plotly)
("r-png" ,r-png)
("r-ranger" ,r-ranger)
("r-rann" ,r-rann)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcpp" ,r-rcpp)
@ -9783,11 +9730,8 @@ (define-public r-seurat
("r-rocr" ,r-rocr)
("r-rtsne" ,r-rtsne)
("r-sdmtools" ,r-sdmtools)
("r-stringr" ,r-stringr)
("r-tclust" ,r-tclust)
("r-tidyr" ,r-tidyr)
("r-tsne" ,r-tsne)
("r-vgam" ,r-vgam)))
("r-tsne" ,r-tsne)))
(home-page "http://www.satijalab.org/seurat")
(synopsis "Seurat is an R toolkit for single cell genomics")
(description
@ -9860,14 +9804,14 @@ (define-public r-deseq
(define-public r-edaseq
(package
(name "r-edaseq")
(version "2.14.0")
(version "2.14.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "EDASeq" version))
(sha256
(base32
"1832pb3jkim4vrqzb8lajwx9r482bhww5n9nz3s6crvyamlp2dj0"))))
"0970w9d5ddqw1qxqqafdidkxh6hmcv9j5djwgnpz3fgl05kmysg8"))))
(properties `((upstream-name . "EDASeq")))
(build-system r-build-system)
(propagated-inputs
@ -9987,14 +9931,14 @@ (define-public r-fastseg
(define-public r-keggrest
(package
(name "r-keggrest")
(version "1.20.0")
(version "1.20.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "KEGGREST" version))
(sha256
(base32
"1349vidgl9m10l1rbrp3pkwwgi2xcbsw9h9z2xqbvg97lmqc4r8j"))))
"1ss0xd5570x570v01r6lp64rr1apjrzp0j62520pvm3g8knjhfvs"))))
(properties `((upstream-name . "KEGGREST")))
(build-system r-build-system)
(propagated-inputs
@ -10207,14 +10151,14 @@ (define-public r-organismdbi
(define-public r-biovizbase
(package
(name "r-biovizbase")
(version "1.28.0")
(version "1.28.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "biovizBase" version))
(sha256
(base32
"0lkiqdr3ics6hgv47lwkykcy761823bbkhffbn4ykyfzyqwl4p67"))))
"0wc45j3hfn01i44bkkxjj3n8b8xzbkkcdv35mrkzb1f9yprkf8gq"))))
(properties `((upstream-name . "biovizBase")))
(build-system r-build-system)
(propagated-inputs
@ -10231,6 +10175,7 @@ (define-public r-biovizbase
("r-hmisc" ,r-hmisc)
("r-iranges" ,r-iranges)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rlang" ,r-rlang)
("r-rsamtools" ,r-rsamtools)
("r-s4vectors" ,r-s4vectors)
("r-scales" ,r-scales)
@ -10248,14 +10193,14 @@ (define-public r-biovizbase
(define-public r-ggbio
(package
(name "r-ggbio")
(version "1.28.0")
(version "1.28.5")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ggbio" version))
(sha256
(base32
"0wszh3w8yia5zw758h837i1q35k99sn444y2hahcxqbdmmlbf7in"))))
"19s2v40fycwf44fl3lm791y635xzw67b30sq2g0qq4a6phjik42d"))))
(build-system r-build-system)
(propagated-inputs
`(("r-annotationdbi" ,r-annotationdbi)
@ -10278,6 +10223,7 @@ (define-public r-ggbio
("r-iranges" ,r-iranges)
("r-organismdbi" ,r-organismdbi)
("r-reshape2" ,r-reshape2)
("r-rlang" ,r-rlang)
("r-rsamtools" ,r-rsamtools)
("r-rtracklayer" ,r-rtracklayer)
("r-s4vectors" ,r-s4vectors)
@ -10732,14 +10678,14 @@ (define-public r-qvalue
(define-public r-hdf5array
(package
(name "r-hdf5array")
(version "1.8.0")
(version "1.8.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "HDF5Array" version))
(sha256
(base32
"1l0276qxkhgdxsfck3jmi8jvnsr20g10gjki53g0mqa45wnhm3ck"))))
"1s44zgm9jg82bk4b8k3dh7xw7mxychlfm3grs8516mxnw91zpvy5"))))
(properties `((upstream-name . "HDF5Array")))
(build-system r-build-system)
(propagated-inputs
@ -10878,13 +10824,13 @@ (define-public r-singlecellexperiment
(define-public r-scater
(package
(name "r-scater")
(version "1.8.0")
(version "1.8.4")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "scater" version))
(sha256
(base32
"0bhpikgz3b9f510dawsay4zry9rlp8vjx5n6zvwbcpwrd94p3903"))))
"173lfpas2fqsp4xxsw01wkxd4496c5p8himw9b4r9z4npxkfyv16"))))
(build-system r-build-system)
(propagated-inputs
`(("r-beachmat" ,r-beachmat)
@ -10922,14 +10868,14 @@ (define-public r-scater
(define-public r-scran
(package
(name "r-scran")
(version "1.8.2")
(version "1.8.4")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "scran" version))
(sha256
(base32
"0nbn5x75gf9d0p18w7vpkbv30cpdqvp5bz8xvila0h7jla7xdyih"))))
"17vq9vb9ak7n4mcqpwnm9x3z91vmr7xnsgj8f45b8dbj7m0v126j"))))
(build-system r-build-system)
(propagated-inputs
`(("r-beachmat" ,r-beachmat)
@ -12885,8 +12831,8 @@ (define-public pigx-rnaseq
("r-rtracklayer" ,r-rtracklayer)
("r-rjson" ,r-rjson)
("salmon" ,salmon)
("ghc-pandoc" ,ghc-pandoc-1)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
("ghc-pandoc" ,ghc-pandoc)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("python-wrapper" ,python-wrapper)
("python-pyyaml" ,python-pyyaml)))
(home-page "http://bioinformatics.mdc-berlin.de/pigx/")
@ -12947,8 +12893,8 @@ (define-public pigx-chipseq
("macs" ,macs)
("multiqc" ,multiqc)
("perl" ,perl)
("ghc-pandoc" ,ghc-pandoc-1)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
("ghc-pandoc" ,ghc-pandoc)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("fastqc" ,fastqc)
("bowtie" ,bowtie)
("idr" ,idr)
@ -13009,8 +12955,8 @@ (define-public pigx-bsseq
("r-bookdown" ,r-bookdown)
("r-ggplot2" ,r-ggplot2)
("r-ggbio" ,r-ggbio)
("ghc-pandoc" ,ghc-pandoc-1)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
("ghc-pandoc" ,ghc-pandoc)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("python-wrapper" ,python-wrapper)
("python-pyyaml" ,python-pyyaml)
("snakemake" ,snakemake-4)
@ -13060,8 +13006,8 @@ (define-public pigx-scrnaseq
("python-magic" ,python-magic)
("python-numpy" ,python-numpy)
("python-loompy" ,python-loompy)
("ghc-pandoc" ,ghc-pandoc-1)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
("ghc-pandoc" ,ghc-pandoc)
("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("samtools" ,samtools)
("snakemake" ,snakemake-4)
("star" ,star)

View file

@ -30,7 +30,7 @@ (define-module (gnu packages ccache)
(define-public ccache
(package
(name "ccache")
(version "3.4.2")
(version "3.4.3")
(source
(origin
(method url-fetch)
@ -38,7 +38,7 @@ (define-public ccache
version ".tar.xz"))
(sha256
(base32
"1qpy6k9f06kpr6bxy26ncdxcszqv1skcncvczcvksgfncx1v3a0q"))))
"0jjzq5340qw3jm5gkajjkkb5wd0yqqy1dyjw3mf3jy15cakmazi9"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ; for test.sh
("which" ,(@ (gnu packages base) which))))
@ -49,13 +49,6 @@ (define-public ccache
(lambda _
(substitute* '("unittest/test_hashutil.c" "test/suites/base.bash")
(("#!/bin/sh") (string-append "#!" (which "sh"))))
#t))
(add-before 'check 'munge-failing-test
(lambda _
;; XXX The new Multiple -fdebug-prefix-map test added in
;; 3.3.5 fails (why?). Force it to report success instead.
(substitute* "test/suites/debug_prefix_map.bash"
(("grep \"name\"") "true"))
#t)))))
(home-page "https://ccache.samba.org/")
(synopsis "Compiler cache")

View file

@ -32,6 +32,7 @@ (define-module (gnu packages ci)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages guile)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages mail)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
@ -223,39 +224,42 @@ (define-public cuirass
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Wrap the 'cuirass' command to refer to the right modules.
(let* ((out (assoc-ref outputs "out"))
(gcrypt (assoc-ref inputs "guile-gcrypt"))
(json (assoc-ref inputs "guile-json"))
(sqlite (assoc-ref inputs "guile-sqlite3"))
(git (assoc-ref inputs "guile-git"))
(bytes (assoc-ref inputs "guile-bytestructures"))
(fibers (assoc-ref inputs "guile-fibers"))
(guix (assoc-ref inputs "guix"))
(deps (list gcrypt json sqlite git bytes fibers guix))
(guile (assoc-ref %build-inputs "guile"))
(effective (read-line
(open-pipe* OPEN_READ
(string-append guile "/bin/guile")
"-c" "(display (effective-version))")))
(mods (string-append json "/share/guile/site/"
effective ":"
git "/share/guile/site/"
effective ":"
bytes "/share/guile/site/"
effective ":"
sqlite "/share/guile/site/"
effective ":"
fibers "/share/guile/site/"
effective ":"
guix "/share/guile/site/"
effective)))
(mods (string-drop-right ;drop trailing colon
(string-join deps
(string-append "/share/guile/site/"
effective ":")
'suffix)
1))
(objs (string-drop-right
(string-join deps
(string-append "/lib/guile/" effective
"/site-ccache:")
'suffix)
1)))
;; Make sure 'cuirass' can find the 'evaluate' command, as
;; well as the relevant Guile modules.
(wrap-program (string-append out "/bin/cuirass")
`("PATH" ":" prefix (,(string-append out "/bin")))
`("GUILE_LOAD_PATH" ":" prefix (,mods))
`("GUILE_LOAD_COMPILED_PATH" ":" prefix (,mods)))
`("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs)))
#t))))))
(inputs
`(("guile" ,guile-2.2)
("guile-fibers" ,guile-fibers)
("guile-gcrypt" ,guile-gcrypt)
("guile-json" ,guile-json)
("guile-sqlite3" ,guile-sqlite3)
("guile-git" ,guile-git)

View file

@ -211,16 +211,16 @@ (define ref
(define-public cloc
(package
(name "cloc")
(version "1.76")
(version "1.78")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/AlDanial/cloc/releases/download/v" version
"https://github.com/AlDanial/cloc/releases/download/" version
"/cloc-" version ".tar.gz"))
(sha256
(base32
"05srlvzwisr7y7ymvzb5yfdsrspja27ysqdmkwhiiivy84mq2gnl"))))
"176xklr2qsgxh9zdb565gib6pp4gsm585rz5fvyphgjy4i679wkv"))))
(build-system gnu-build-system)
(inputs
`(("coreutils" ,coreutils)
@ -651,6 +651,19 @@ (define-public indent
(license license:gpl3+)
(home-page "https://www.gnu.org/software/indent/")))
(define-public indent-2.2.12
(package
(inherit indent)
(version "2.2.12")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/indent/indent-" version
".tar.gz"))
(sha256
(base32
"12xvcd16cwilzglv9h7sgh4h1qqjd1h8s48ji2dla58m4706hzg7"))))
(native-inputs `(("texinfo" ,texinfo)))))
(define-public amalgamate
(let* ((commit "c91f07eea1133aa184f652b8f1398eaf03586208")
(revision "0")

File diff suppressed because it is too large Load diff

View file

@ -126,7 +126,7 @@ (define-public libmd
(define-public signify
(package
(name "signify")
(version "23")
(version "24")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/aperezdc/signify/"
@ -134,7 +134,7 @@ (define-public signify
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0c70mzawgahsvmsv4xdrass4pgyynd67ipd9lij0fgi8wkq0ns8w"))))
"0594vyvkq176xxzaz9xbq8qs0xdnr8s9gkd1prblwpdvnzmw0xvc"))))
(build-system gnu-build-system)
;; TODO Build with libwaive (described in README.md), to implement something
;; like OpenBSD's pledge().

View file

@ -51,6 +51,7 @@ (define-public curl
(package
(name "curl")
(version "7.61.0")
(replacement curl-7.61.1)
(source (origin
(method url-fetch)
(uri (string-append "https://curl.haxx.se/download/curl-"
@ -141,6 +142,19 @@ (define-public curl
"See COPYING in the distribution."))
(home-page "https://curl.haxx.se/")))
(define-public curl-7.61.1
(package
(inherit curl)
(version "7.61.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://curl.haxx.se/download/curl-"
version ".tar.xz"))
(sha256
(base32
"148qv1f32290r9pwg07mccawihz4srznkzsdwdl2xllvlgb16n9x"))))))
(define-public kurly
(package
(name "kurly")

View file

@ -498,14 +498,14 @@ (define-public yadifa
(define-public knot
(package
(name "knot")
(version "2.7.1")
(version "2.7.2")
(source (origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-dns/"
name "-" version ".tar.xz"))
(sha256
(base32
"108k6x3hjsnyf06pv5rlxqhynjbbz13pzwax1mqff3hgv85f4skx"))
"0cc4wgb02ch09x99a1fnr7vsdik8k920q7jafzcamjvy3kpb4w6b"))
(modules '((guix build utils)))
(snippet
'(begin

View file

@ -15,7 +15,7 @@
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016, 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
@ -38,6 +38,7 @@
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -4123,22 +4124,34 @@ (define-public emacs-julia-mode
(define-public emacs-ess
(package
(name "emacs-ess")
(version "16.10")
(version "17.11")
(source (origin
(method url-fetch)
(uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
version ".tgz"))
(uri (string-append "https://github.com/emacs-ess/ESS/archive/v"
version ".tar.gz"))
(sha256
(base32
"04m8lwp3ylh2vl7k2bjjs7mxbm64j4sdckqpvnm9k0qhaqf02pjk"))
"0cbilbsiwvcyf6d5y24mymp57m3ana5dkzab3knfs83w4a3a4c5c"))
(file-name (string-append name "-" version ".tar.gz"))
(modules '((guix build utils)))
(snippet
'(begin
;; Stop ESS from trying to bundle an external julia-mode.el.
(substitute* "lisp/Makefile"
(("^\tjulia-mode.elc\\\\\n") "")
(("^all: \\$\\(ELC\\) ess-custom.el julia-mode.el")
"all: $(ELC) ess-custom.el"))
(("^dist: all julia-mode.el")
"dist: all"))
;; No need to build docs in so many formats. Also, skipping
;; pdf lets us not pull in texlive.
(substitute* "doc/Makefile"
(("all : info text html pdf")
"all : info")
(("install: install-info install-other-docs")
"install: install-info"))
;; Test fails upstream
(substitute* "test/ess-r-tests.el"
(("ert-deftest ess-r-namespaced-eval-no-srcref-in-errors ()")
"ert-deftest ess-r-namespaced-eval-no-srcref-in-errors () :expected-result :failed"))
#t))))
(build-system gnu-build-system)
(arguments
@ -4157,10 +4170,6 @@ (define-public emacs-ess
(("SHELL = /bin/sh")
(string-append "SHELL = " (which "sh"))))
#t))
;; FIXME: the texlive-union insists on regenerating fonts. It stores
;; them in HOME, so it needs to be writeable.
(add-before 'build 'set-HOME
(lambda _ (setenv "HOME" "/tmp") #t))
(replace 'check
(lambda _
(invoke "make" "test")))))))
@ -4169,16 +4178,14 @@ (define-public emacs-ess
("r-minimal" ,r-minimal)))
(native-inputs
`(("perl" ,perl)
("texinfo" ,texinfo)
("texlive" ,(texlive-union (list texlive-latex-natbib
texlive-latex-seminar
texlive-latex-hyperref
texlive-tex-texinfo)))))
("texinfo" ,texinfo)))
(propagated-inputs
`(("emacs-julia-mode" ,emacs-julia-mode)))
(home-page "https://ess.r-project.org/")
(synopsis "Emacs mode for statistical analysis programs")
(description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
Emacs. It is designed to support editing of scripts and interaction with
various statistical analysis programs such as R and OpenBUGS.")
various statistical analysis programs such as R, Julia, and JAGS.")
(license license:gpl2+)))
(define-public emacs-smex
@ -11315,6 +11322,43 @@ (define-public emacs-package-lint
file.")
(license license:gpl3+))))
(define-public emacs-picpocket
(let ((version "20180610.1059") ; taken from melpa
(commit "ce4b6ed088384f2414af82e8e4eae5b92c2874bf"))
(package
(name "emacs-picpocket")
(version version)
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/johanclaesson/picpocket")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "15vpbcv83mc4j1pvrk7xic0klh2bl9gzg2xxs7c2lmnix52hy8mv"))))
(build-system emacs-build-system)
(arguments ; needed for running tests
`(#:tests? #t
#:emacs ,emacs
#:test-command '("emacs" "--batch"
"-l" "picpocket-test.el"
"-f" "ert-run-tests-batch-and-exit")))
(home-page "https://github.com/johanclaesson/picpocket")
(synopsis "Image viewer for Emacs")
(description
"Picpocket is an image viewer for GNU Emacs. It has commands for:
@itemize
@item File operations on the picture files (delete, move, copy, hardlink).
@item Scale and rotate the picture.
@item Associate pictures with tags which are saved to disk.
@item Filter pictures according to tags.
@item Customizing keystrokes for quick tagging and file operations.
@item Undo and browse history of undoable commands.
@end itemize")
(license license:gpl3+))))
(define-public emacs-wgrep-helm
;; `emacs-wgrep-helm' was mistakenly added.
(deprecated-package "emacs-wgrep-helm" emacs-wgrep))

View file

@ -117,8 +117,8 @@ (define-public desmume
;; Building from recent Git because the official 5.0 release no longer builds.
(define-public dolphin-emu
(let ((commit "806c1ee8f0ed824008185212bfab2658d400b576")
(revision "2"))
(let ((commit "5f0d825f40b8aabe13eaef32d44ab667ff8e8c28")
(revision "3"))
(package
(name "dolphin-emu")
(version (git-version "5.0" revision commit))
@ -144,7 +144,7 @@ (define-public dolphin-emu
#t))
(sha256
(base32
"1sdc7rh6z7gjx4kxg18jrv7srfpx1vgf936zg5y43radnlscrh1j"))))
"0dh7mih16aif9ynbgcsn7n10f89g8d232i86xqfp2rijsdggcmzl"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f

View file

@ -8,6 +8,7 @@
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;;
;;; This file is part of GNU Guix.
;;;
@ -680,24 +681,19 @@ (define-public libfive
(define-public ao
(deprecated-package "ao-cad" libfive))
;; We use kicad from a git commit, because support for boost 1.61.0 has been
;; recently added.
(define-public kicad
(let ((commit "5f4599fb56da4dd748845ab10abec02961d477f3")
(revision "2"))
(package
(name "kicad")
(version (string-append "4.0-" revision "."
(string-take commit 7)))
(version "5.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.launchpad.net/kicad")
(commit commit)))
(method url-fetch)
(file-name (string-append name "-" version ".tar.xz"))
(uri (string-append
"https://launchpad.net/kicad/5.0/" version "/+download/" name
"-" version ".tar.xz"))
(sha256
(base32 "1833pln2975gmc5s18xf7s8m9vg834lmxxdjk0wlk3lq7bvjjnff"))
(file-name (string-append name "-" version "-checkout"))))
(base32 "17nqjszyvd25wi6550j981whlnb1wxzmlanljdjihiki53j84x9p"))))
(build-system cmake-build-system)
(arguments
`(#:out-of-source? #t
@ -706,8 +702,6 @@ (define-public kicad
#:configure-flags
(list "-DKICAD_STABLE_VERSION=ON"
"-DKICAD_REPO_NAME=stable"
,(string-append "-DKICAD_BUILD_VERSION=4.0-"
(string-take commit 7))
"-DKICAD_SKIP_BOOST=ON"; Use our system's boost library.
"-DKICAD_SCRIPTING=ON"
"-DKICAD_SCRIPTING_MODULES=ON"
@ -754,6 +748,7 @@ (define-public kicad
("libngspice" ,libngspice)
("libsm" ,libsm)
("mesa" ,mesa)
("opencascade-oce" ,opencascade-oce)
("openssl" ,openssl)
("python" ,python-2)
("wxwidgets" ,wxwidgets-gtk2)
@ -764,7 +759,7 @@ (define-public kicad
boards and electrical circuits. The software has a number of programs that
perform specific functions, for example, pcbnew (Editing PCB), eeschema (editing
electrical diagrams), gerbview (viewing Gerber files) and others.")
(license license:gpl3+))))
(license license:gpl3+)))
(define-public kicad-library
(let ((version "4.0.7"))

View file

@ -887,7 +887,7 @@ (define-public font-fira-sans
(define-public font-fira-code
(package
(name "font-fira-code")
(version "1.204")
(version "1.205")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append "https://github.com/tonsky/FiraCode/releases/"
@ -895,7 +895,7 @@ (define-public font-fira-code
"/FiraCode_" version ".zip"))
(sha256
(base32
"17wky221b3igrqhmxgmqiyv1xdfn0nw471vzhpkrvv1w2w1w1k18"))))
"13bxgf59g6fw5191xclcjzn22hj8jk9k5jjwf7vz07mpjbgadcl5"))))
(build-system font-build-system)
(home-page "https://mozilla.github.io/Fira/")
(synopsis "Monospaced font with programming ligatures")

View file

@ -34,6 +34,7 @@
;;; Copyright © 2018 okapi <okapi@firemail.cc>
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -5553,3 +5554,159 @@ (define (install src dst)
(license (list license:gpl2+
license:bsd-3 ; /source/d0_blind_id folder and others
(license:x11-style "" "See file rcon.pl.")))))
(define-public frotz
(package
(name "frotz")
(version "2.44")
(source (origin
(method url-fetch)
(uri (list (string-append
"http://www.ifarchive.org/if-archive/infocom/interpreters/"
name "/" name "-" version ".tar.gz")
(string-append
"ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
name "/" name "-" version ".tar.gz")))
(sha256
(base32
"1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; there are no tests
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'curses
(lambda _
(substitute* "Makefile"
(("lcurses") "lncurses"))
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man6")))
(install-file "frotz" bin)
(mkdir-p man)
(install-file "doc/frotz.6" man)
#t))))))
(inputs `(("libmodplug" ,libmodplug)
("libsamplerate" ,libsamplerate)
("libsndfile" ,libsndfile)
("libvorbis" ,libvorbis)
("ncurses" ,ncurses)))
(synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
(description "Frotz is an interpreter for Infocom games and other Z-machine
games in the text adventure/interactive fiction genre. This version of Frotz
complies with standard 1.0 of Graham Nelson's specification. It plays all
Z-code games V1-V8, including V6, with sound support through libao, and uses
ncurses for text display.")
(home-page "http://frotz.sourceforge.net")
(license license:gpl2+)))
(define-public frotz-dumb-terminal
(package
(name "frotz-dumb-terminal")
(version "2.44")
(source (origin
(method url-fetch)
(uri (list (string-append
"http://www.ifarchive.org/if-archive/infocom/interpreters/"
"frotz" "/" "frotz" "-" version ".tar.gz")
(string-append
"ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
"frotz" "/" "frotz" "-" version ".tar.gz")))
(sha256
(base32
"1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; there are no tests
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'build
(lambda _
(invoke "make" "dumb")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man6")))
(install-file "dfrotz" bin)
(mkdir-p man)
(install-file "doc/dfrotz.6" man)
#t))))))
(synopsis "Portable Z-machine dumb interpreter for text adventure games")
(description "Frotz is an interpreter for Infocom games and
other Z-machine games in the text adventure/interactive fiction genre.
dfrotz is the dumb interface version. You get no screen control; everything
is just printed to the terminal line by line. The terminal handles all the
scrolling. Maybe you'd like to experience what it's like to play Adventure on
a teletype. A much cooler use for compiling Frotz with the dumb interface is
that it can be wrapped in CGI scripting, PHP, and the like to allow people
to play games on webpages. It can also be made into a chat bot.")
(home-page "http://frotz.sourceforge.net")
(license license:gpl2+)))
(define-public frotz-sdl
(let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
(package
(name "frotz-sdl")
(version "2.45pre")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/DavidGriffith/frotz")
(commit commit)))
(sha256
(base32
"18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; there are no tests
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'patch-makefile
(lambda _
(substitute* "Makefile"
(("lcurses") "lncurses")
(("^BUILD_DATE_TIME =.*$")
"BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
#t))
(replace 'build
(lambda _
(invoke "make" "sdl")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man6")))
(install-file "sfrotz" bin)
(mkdir-p man)
(install-file "doc/sfrotz.6" man)
#t))))))
(native-inputs
`(("pkg-config" ,pkg-config)
("which" ,which)
("perl" ,perl)))
(inputs `(("sdl2" ,sdl2)
("sdl2-mixer" ,sdl2-mixer)
("libmodplug" ,libmodplug)
("libsamplerate" ,libsamplerate)
("libsndfile" ,libsndfile)
("libvorbis" ,libvorbis)
("ncurses" ,ncurses)
("freetype" ,freetype)
("libjpeg-turbo" ,libjpeg-turbo)))
(synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
(description "Frotz is an interpreter for Infocom games and other Z-machine
games in the text adventure/interactive fiction genre. This version of Frotz
using SDL fully supports all these versions of the Z-Machine including the
graphical version 6. Graphics and sound are created through the use of the SDL
libraries. AIFF sound effects and music in MOD and OGG formats are supported
when packaged in Blorb container files or optionally from individual files.")
(home-page "http://frotz.sourceforge.net")
(license license:gpl2+))))

View file

@ -668,6 +668,10 @@ (define-public gfortran-7
(custom-gcc gcc-7 "gfortran" '("fortran")
%generic-search-paths))
(define-public gfortran-8
(custom-gcc gcc-8 "gfortran" '("fortran")
%generic-search-paths))
(define-public gfortran
;; Note: Update this when GCC changes! We cannot use
;; (custom-gcc gcc "fortran" …) because that would lead to a package object
@ -728,6 +732,15 @@ (define-public gcc-objc-7
(variable "LIBRARY_PATH")
(files '("lib" "lib64"))))))
(define-public gcc-objc-8
(custom-gcc gcc-8 "gcc-objc" '("objc")
(list (search-path-specification
(variable "OBJC_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "LIBRARY_PATH")
(files '("lib" "lib64"))))))
(define-public gcc-objc gcc-objc-5)
(define-public gcc-objc++-4.8
@ -775,6 +788,15 @@ (define-public gcc-objc++-7
(variable "LIBRARY_PATH")
(files '("lib" "lib64"))))))
(define-public gcc-objc++-8
(custom-gcc gcc-8 "gcc-objc++" '("obj-c++")
(list (search-path-specification
(variable "OBJCPLUS_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "LIBRARY_PATH")
(files '("lib" "lib64"))))))
(define-public gcc-objc++ gcc-objc++-5)
(define (make-libstdc++-doc gcc)

View file

@ -37,14 +37,14 @@ (define-module (gnu packages gdb)
(define-public gdb
(package
(name "gdb")
(version "8.1.1")
(version "8.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-"
version ".tar.xz"))
(sha256
(base32
"0g6hv9xk12aa58w77fydaldqr9a6b0a6bnwsq87jfc6lkcbc7p4p"))))
"0fbw6j4z7kmvywwgavn7w3knp860i5i9qnjffc5p52bwkji43963"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; FIXME "make check" fails on single-processor systems.

View file

@ -7,6 +7,7 @@
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -38,8 +39,10 @@ (define-module (gnu packages ghostscript)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial))
#:use-module (guix build-system trivial)
#:use-module (srfi srfi-1))
(define-public lcms
(package
@ -132,6 +135,7 @@ (define-public psutils
(define-public ghostscript
(package
(name "ghostscript")
(replacement ghostscript/fixed)
(version "9.23")
(source
(origin
@ -251,6 +255,44 @@ (define-public ghostscript
(home-page "https://www.ghostscript.com/")
(license license:agpl3+)))
(define-public ghostscript/fixed
(hidden-package
(package
(inherit ghostscript)
(version "9.24")
(source
(origin
(inherit (package-source ghostscript))
(uri (string-append "https://github.com/ArtifexSoftware/"
"ghostpdl-downloads/releases/download/gs"
(string-delete #\. version)
"/ghostscript-" version ".tar.xz"))
(sha256
(base32
"1mk922rnml93w2g42yxiyn8xqanc50cm65irrgh0b6lp4kgifjfl"))
(patches (search-patches "ghostscript-CVE-2018-16509.patch"
"ghostscript-bug-699708.patch"
"ghostscript-no-header-creationdate.patch"
"ghostscript-no-header-id.patch"
"ghostscript-no-header-uuid.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments ghostscript)
((#:configure-flags flags)
;; Notice that we removed the 'ghostscript-runpath' patch above.
;; The reason is that it conflicts with an upstream change that
;; takes LDFLAGS into account.
`(cons (string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib")
,flags))
((#:phases phases)
`(modify-phases ,phases
(add-before 'configure 'create-output-directory
(lambda* (#:key outputs #:allow-other-keys)
;; Unfortunately the configure script refuses to function if
;; the directory specified as -rpath does not already exist.
(mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
#t)))))))))
(define-public ghostscript/x
(package/inherit ghostscript
(name (string-append (package-name ghostscript) "-with-x"))

View file

@ -2461,7 +2461,7 @@ (define-public rest
(define-public libsoup
(package
(name "libsoup")
(version "2.62.3")
(version "2.64.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/libsoup/"
@ -2469,7 +2469,7 @@ (define-public libsoup
name "-" version ".tar.xz"))
(sha256
(base32
"0whi8p03kpbp68kg6fg3vb7rhykjp7wn3nlbzy9j0p298zjss4nk"))))
"09z7g3spww3f84y8jmicdd6lqp360mbggpg5h1fq1v4p5ihcjnyr"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(arguments
@ -2573,6 +2573,7 @@ (define-public libsoup
("libxml2" ,libxml2)))
(inputs
`(("glib-networking" ,glib-networking)
("libpsl" ,libpsl)
("sqlite" ,sqlite)))
(home-page "https://live.gnome.org/LibSoup/")
(synopsis "GLib-based HTTP Library")

View file

@ -28,6 +28,7 @@ (define-module (gnu packages graph)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages gcc)
#:use-module (gnu packages bioconductor)
#:use-module (gnu packages bioinformatics)
#:use-module (gnu packages compression)
#:use-module (gnu packages cran)
@ -98,14 +99,14 @@ (define-public python-igraph
(define-public r-igraph
(package
(name "r-igraph")
(version "1.2.1")
(version "1.2.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "igraph" version))
(sha256
(base32
"1hcr6b1lz030lgay1bz8y8sxaf2j93ds8n8gsqr6qhssz141hd2m"))))
"1bggm7b8v3bh7q2589w26qvd7sgs69m4qiij7d0rbm0ykkgxm8lx"))))
(build-system r-build-system)
(native-inputs
`(("gfortran" ,gfortran)))
@ -130,14 +131,14 @@ (define-public r-igraph
(define-public r-diffusionmap
(package
(name "r-diffusionmap")
(version "1.1-0")
(version "1.1-0.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "diffusionMap" version))
(sha256
(base32
"1l985q2hfc8ss5afajik4p25dx628yikvhdimz5s0pql800q2yv3"))))
"11l4kbciawvli5nlsi4qaf8afmgk5xgqiqpdyhvaqri5mx0zhk5j"))))
(properties `((upstream-name . "diffusionMap")))
(build-system r-build-system)
(propagated-inputs

View file

@ -890,14 +890,7 @@ (define-public guile-present
(sha256
(base32
"1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
(patches (search-patches "guile-present-coding.patch"))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* "Makefile.in"
(("godir = .*$")
"godir = $(moddir)\n"))
#t))))
(patches (search-patches "guile-present-coding.patch"))))
(build-system gnu-build-system)
(arguments
'(#:phases

View file

@ -866,7 +866,7 @@ (define-public guile2.2-lib
(define-public guile-json
(package
(name "guile-json")
(version "1.1.1")
(version "1.2.0")
(home-page "https://github.com/aconchillo/guile-json")
(source (origin
(method url-fetch)
@ -875,7 +875,7 @@ (define-public guile-json
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"12jqkn9qgwdlxbasy2n25a2a7apf30dww1nnxqfam5735k3jdngv"))))
"02kqv0q98fmchn7i4y7ycmrjlh4b2c93ij0z7k036qwpp204w4gh"))))
(build-system gnu-build-system)
(native-inputs `(("autoconf" ,autoconf)
("automake" ,automake)
@ -893,7 +893,9 @@ (define-public guile-json
@item Unicode support for strings.
@item Allows JSON pretty printing.
@end itemize\n")
(license license:lgpl3+)))
;; Version 1.2.0 switched to GPLv3+ (from LGPLv3+).
(license license:gpl3+)))
(define-public guile2.2-json
(deprecated-package "guile2.2-json" guile-json))
@ -1581,8 +1583,10 @@ (define-public guile-commonmark
(("ac_subst_vars='")
"ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
(substitute* "Makefile.in"
(("/site/2.0")
"/site/@GUILE_EFFECTIVE_VERSION@"))
(("moddir =.*")
"moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
(("godir =.*")
"godir = $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
#t))))
(build-system gnu-build-system)
(inputs
@ -1786,6 +1790,20 @@ (define-public guile-fibers
(base32
"0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(add-after 'install 'mode-guile-objects
(lambda* (#:key outputs #:allow-other-keys)
;; .go files are installed to "lib/guile/X.Y/cache".
;; This phase moves them to "…/site-ccache".
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib/guile"))
(old (car (find-files lib "^ccache$"
#:directories? #t)))
(new (string-append (dirname old)
"/site-ccache")))
(rename-file old new)
#t))))))
(native-inputs
`(("texinfo" ,texinfo)
("pkg-config" ,pkg-config)))

View file

@ -39,7 +39,7 @@ (define-module (gnu packages haskell-check)
(define-public ghc-tasty-ant-xml
(package
(name "ghc-tasty-ant-xml")
(version "1.0.2")
(version "1.1.4")
(source
(origin
(method url-fetch)
@ -49,7 +49,7 @@ (define-public ghc-tasty-ant-xml
".tar.gz"))
(sha256
(base32
"0pgz2lclg2hp72ykljcbxd88pjanfdfk8m5vb2qzcyjr85kwrhxv"))))
"0v0gsb90kh6hwlgxbclzawsskywc6yf7n8xhiifia97l4y0yx2m8"))))
(build-system haskell-build-system)
(inputs
`(("ghc-generic-deriving" ,ghc-generic-deriving)

View file

@ -2078,9 +2078,13 @@ (define-public ghc-zlib
(base32
"1vbzf0awb6zb456xf48za1kl22018646cfzq4frvxgb9ay97vk0d"))))
(build-system haskell-build-system)
;; Tests require older versions of testy.
(arguments `(#:tests? #f))
(arguments `(#:configure-flags (list "--allow-newer=tasty")))
(inputs `(("zlib" ,zlib)))
(native-inputs
`(("ghc-quickcheck" ,ghc-quickcheck)
("ghc-tasty" ,ghc-tasty)
("ghc-tasty-hunit" ,ghc-tasty-hunit)
("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
(home-page "https://hackage.haskell.org/package/zlib")
(synopsis
"Compression and decompression in the gzip and zlib formats")
@ -4220,7 +4224,7 @@ (define-public ghc-byteorder
(define-public ghc-base-compat
(package
(name "ghc-base-compat")
(version "0.10.4")
(version "0.9.3")
(source
(origin
(method url-fetch)
@ -4230,7 +4234,7 @@ (define-public ghc-base-compat
".tar.gz"))
(sha256
(base32
"0ksp990gxs731mq19rzbxrbs43nazfljjc8krlx5bjqblw3kfs8d"))))
"0452l6zf6fjhy4kxqwv6i6hhg6yfx4wcg450k3axpyj30l7jnq3x"))))
(build-system haskell-build-system)
(native-inputs
`(("ghc-quickcheck" ,ghc-quickcheck)
@ -5190,6 +5194,8 @@ (define-public ghc-integer-logarithms
(base32
"1wj8kgjg5bn2yrs4zh9qfjv85cx6w998j9pi39yrbv305944mb9j"))))
(build-system haskell-build-system)
(arguments
`(#:configure-flags (list "--allow-newer=tasty")))
(native-inputs
`(("ghc-quickcheck" ,ghc-quickcheck)
("ghc-smallcheck" ,ghc-smallcheck)
@ -10152,4 +10158,29 @@ (define-public ghc-chart
backends provided by the @code{Cairo} and @code{Diagrams} libraries.")
(license license:bsd-3)))
(define-public ghc-wcwidth
(package
(name "ghc-wcwidth")
(version "0.0.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/wcwidth/wcwidth-"
version ".tar.gz"))
(sha256
(base32
"1n1fq7v64b59ajf5g50iqj9sa34wm7s2j3viay0kxpmvlcv8gipz"))))
(build-system haskell-build-system)
(inputs
`(("ghc-setlocale" ,ghc-setlocale)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-attoparsec" ,ghc-attoparsec)))
(home-page "https://github.com/solidsnack/wcwidth/")
(synopsis "Haskell bindings to wcwidth")
(description "This package provides Haskell bindings to your system's
native wcwidth and a command line tool to examine the widths assigned by it.
The command line tool can compile a width table to Haskell code that assigns
widths to the Char type.")
(license license:bsd-3)))
;;; haskell.scm ends here

View file

@ -19,6 +19,7 @@
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -485,6 +486,7 @@ (define-public jbig2dec
(package
(name "jbig2dec")
(version "0.14")
(replacement jbig2dec-0.15)
(source
(origin
(method url-fetch)
@ -509,6 +511,21 @@ (define-public jbig2dec
(home-page "https://jbig2dec.com")
(license license:gpl2+)))
;; This is a bugfix release from an ongoing Ghostscript security audit.
;; It was released alongside Ghostscript 9.24.
(define-public jbig2dec-0.15
(package
(inherit jbig2dec)
(version "0.15")
(source (origin
(inherit (package-source jbig2dec))
(uri (string-append "https://github.com/ArtifexSoftware"
"/ghostpdl-downloads/releases/download/gs924/"
"jbig2dec-" version ".tar.gz"))
(sha256
(base32
"0m1qwpbjbirgw2fqznbajdhdhh35d6xa2csr64lpjz735pvimykb"))))))
(define-public openjpeg
(package
(name "openjpeg")

View file

@ -355,10 +355,12 @@ (define-public julia
("objconv"
,(origin
(method url-fetch)
(uri "http://www.agner.org/optimize/objconv.zip")
;; No versioned URL, see <https://www.agner.org/optimize/> for updates.
(uri "https://www.agner.org/optimize/objconv.zip")
(file-name "objconv-2018-08-15.zip")
(sha256
(base32
"1fi7qa2sd9vb35dvkgripjf0fayzg2qmff215f8agfqfiwd1g8qs"))))
"09y4pwxfs6fl47cyingbf95i2rxx74wmycl9fd4ldcgvpx9bzdrx"))))
("dsfmt"
,(origin
(method url-fetch)

View file

@ -399,8 +399,8 @@ (define %linux-compatible-systems '("x86_64-linux" "i686-linux" "armhf-linux" "a
;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
(define %linux-libre-version "4.18.5")
(define %linux-libre-hash "1y52ns34vh9p4pfj08xsycv8p0xywm6dbpdi0wwpkll1xgpqikvf")
(define %linux-libre-version "4.18.6")
(define %linux-libre-hash "1l5caid77vbfb54zrfxkk7qj7lrf9ck9kpn96kr45spkwl51wm8m")
(define %linux-libre-4.18-patches
(list %boot-logo-patch
@ -430,8 +430,8 @@ (define-public linux-libre
#:patches %linux-libre-4.18-patches
#:configuration-file kernel-config))
(define %linux-libre-4.14-version "4.14.67")
(define %linux-libre-4.14-hash "050zvdxjy6sc64q75pr1gxsmh49chwav2pwxz8xlif39bvahnrpg")
(define %linux-libre-4.14-version "4.14.68")
(define %linux-libre-4.14-hash "05l5y0vbbl60jxdbqglqr9c99a8g8lfsp4mcqfpcx1pkh5br7i3l")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@ -440,14 +440,14 @@ (define-public linux-libre-4.14
#:configuration-file kernel-config))
(define-public linux-libre-4.9
(make-linux-libre "4.9.124"
"0p78gx5jiqvaf2cadf5jp40lzgarrg0m0ybf9w2499v28vjsp30q"
(make-linux-libre "4.9.125"
"1saihk61l1kk42jf8yfsfkm77zalq31f0bdlam3c1g7yw702wj9g"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
(make-linux-libre "4.4.153"
"195vzkkmjiicqfzd38hgf381rlz665rl06abzf8cww0gbnzvrf72"
(make-linux-libre "4.4.154"
"08i9fvrmswkydj538wg6c7ggxmhll0ff0bjkw8rnyslqwilfwr1i"
%intel-compatible-systems
#:configuration-file kernel-config))

View file

@ -560,13 +560,13 @@ (define-public rxcpp
(define-public r-adaptivesparsity
(package
(name "r-adaptivesparsity")
(version "1.4")
(version "1.6")
(source (origin
(method url-fetch)
(uri (cran-uri "AdaptiveSparsity" version))
(sha256
(base32
"1az7isvalf3kmdiycrfl6s9k9xqk22k1mc6rh8v0jmcz402qyq8z"))))
"0imr5m8mll9j6n4icsv6z9rl5kbnwsp9wvzrg7n90nnmcxq2cz91"))))
(properties
`((upstream-name . "AdaptiveSparsity")))
(build-system r-build-system)
@ -579,7 +579,9 @@ (define-public r-adaptivesparsity
(("PKG_LIBS=" prefix)
(string-append prefix "-larmadillo"))))))))
(propagated-inputs
`(("r-rcpp" ,r-rcpp)
`(("r-mass" ,r-mass)
("r-matrix" ,r-matrix)
("r-rcpp" ,r-rcpp)
("r-rcpparmadillo" ,r-rcpparmadillo)))
(inputs
`(("armadillo" ,armadillo)))
@ -594,14 +596,14 @@ (define-public r-adaptivesparsity
(define-public r-kernlab
(package
(name "r-kernlab")
(version "0.9-26")
(version "0.9-27")
(source
(origin
(method url-fetch)
(uri (cran-uri "kernlab" version))
(sha256
(base32
"0xv0slf3ggw3sswsi34416lb1g3h1pqkrr2h7r1n1kvgii3l0jcm"))))
"1m0xqf6gyvwayz7w3c83y32ayvnlz0jicj8ijk808zq9sh7dbbgn"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/kernlab")
(synopsis "Kernel-based machine learning tools")

View file

@ -1071,7 +1071,7 @@ (define-public claws-mail
(define-public msmtp
(package
(name "msmtp")
(version "1.6.8")
(version "1.8.0")
(source
(origin
(method url-fetch)
@ -1079,11 +1079,10 @@ (define-public msmtp
"/msmtp-" version ".tar.xz"))
(sha256
(base32
"1ysrnshvwhzwmvb2walw5i9jdzlvmckj7inr0xnvb26q0jirbzsm"))))
"1k9wwlapkxk9ql3xq05y6vwn6ziqk9b1v8lyhj1866qd02zhqwxx"))))
(build-system gnu-build-system)
(inputs
`(("libidn" ,libidn)
("libsecret" ,libsecret)
`(("libsecret" ,libsecret)
("gnutls" ,gnutls)
("zlib" ,zlib)
("gsasl" ,gsasl)))

View file

@ -15,7 +15,7 @@
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017, 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
@ -1580,7 +1580,7 @@ (define-public maxflow
(define-public petsc
(package
(name "petsc")
(version "3.8.0")
(version "3.9.3")
(source
(origin
(method url-fetch)
@ -1588,7 +1588,9 @@ (define-public petsc
(uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/"
"petsc-lite-" version ".tar.gz"))
(sha256
(base32 "1lajbk3c29hnh83v6cbmm3a8wv6bdykh0p70kwrr4vrnizalk88s"))))
(base32 "1fwkbwv4g7zf2lc8fw865xd0bl9anb6jaczfis5dff7h449gwa48"))))
(outputs '("out" ;libraries and headers
"examples")) ;~30MiB of examples
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
@ -1605,11 +1607,7 @@ (define-public petsc
#:configure-flags
`("--with-mpi=0"
"--with-openmp=1"
"--with-superlu=1"
,(string-append "--with-superlu-include="
(assoc-ref %build-inputs "superlu") "/include")
,(string-append "--with-superlu-lib="
(assoc-ref %build-inputs "superlu") "/lib/libsuperlu.a"))
"--with-superlu=1")
#:make-flags
;; Honor (parallel-job-count) for build. Do not use --with-make-np,
;; whose value is dumped to $out/lib/petsc/conf/petscvariables.
@ -1662,6 +1660,15 @@ (define-public petsc
"PETScBuildInternal.cmake"
;; Once installed, should uninstall with Guix
"uninstall.py"))
#t)))
(add-after 'install 'move-examples
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(examples (assoc-ref outputs "examples"))
(exdir (string-append out "/share/petsc/examples"))
(exdir' (string-append examples "/share/petsc/examples")))
(copy-recursively exdir exdir')
(delete-file-recursively exdir)
#t))))))
(home-page "http://www.mcs.anl.gov/petsc")
(synopsis "Library to solve PDEs")
@ -1685,6 +1692,7 @@ (define-public petsc-openmpi
(name "petsc-openmpi")
(inputs
`(("openmpi" ,openmpi)
("hdf5" ,hdf5-parallel-openmpi)
,@(package-inputs petsc)))
(arguments
(substitute-keyword-arguments (package-arguments petsc)
@ -1692,7 +1700,21 @@ (define-public petsc-openmpi
``("--with-mpiexec=mpirun"
,(string-append "--with-mpi-dir="
(assoc-ref %build-inputs "openmpi"))
,@(delete "--with-mpi=0" ,cf)))))
,(string-append "--with-hdf5-include="
(assoc-ref %build-inputs "hdf5") "/include")
,(string-append "--with-hdf5-lib="
(assoc-ref %build-inputs "hdf5") "/lib/libhdf5.a")
,@(delete "--with-mpi=0" ,cf)))
((#:phases phases)
`(modify-phases ,phases
(add-before 'check 'set-test-environment
(lambda _
;; By default, running the test suite would fail because 'ssh'
;; could not be found in $PATH. Define this variable to
;; placate Open MPI without adding a dependency on OpenSSH (the
;; agent isn't used anyway.)
(setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
#t))))))
(synopsis "Library to solve PDEs (with MPI support)")))
(define-public petsc-complex-openmpi
@ -1738,7 +1760,7 @@ (define-public python2-kiwisolver
(define-public slepc
(package
(name "slepc")
(version "3.8.2")
(version "3.9.2")
(source
(origin
(method url-fetch)
@ -1746,7 +1768,7 @@ (define-public slepc
version ".tar.gz"))
(sha256
(base32
"04zd48p43rnvg68p6cp28zll0px5whglc5v0sc3s6vdj1v920z8y"))))
"0gmhdqac8zm3jx43h935z7bflazjnpvqxjv4jh5za2y1z2rqax94"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
@ -2824,8 +2846,8 @@ (define-public openblas
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/xianyi/OpenBLAS/tarball/v"
version))
(uri (string-append "mirror://sourceforge/openblas/v" version "/OpenBLAS%20"
version "%20version.tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
@ -3231,7 +3253,7 @@ (define-public atlas
(define-public glm
(package
(name "glm")
(version "0.9.9.0")
(version "0.9.9.1")
(source
(origin
(method url-fetch)
@ -3239,7 +3261,7 @@ (define-public glm
version "/glm-" version ".zip"))
(sha256
(base32
"0ihjadp2sb8w312a276skfjsljm3y41bjscbxf79wn23gi00giz1"))))
"042a23hmxfs429czkmlg5ixf28aikzfbw18780prj2gcd4flgw8h"))))
(build-system cmake-build-system)
(native-inputs
`(("unzip" ,unzip)))
@ -4027,3 +4049,80 @@ (define-public tcalc
be fed to @command{tcalc} through the command line.")
(home-page "https://sites.google.com/site/mohammedisam2000/tcalc")
(license license:gpl3+)))
(define-public sundials
(package
(name "sundials")
(version "3.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://computation.llnl.gov/projects/sundials/download/"
"sundials-" version ".tar.gz"))
(sha256
(base32
"090s8ymhd0g1s1d44fa73r5yi32hb4biwahhbfi327zd64yn8kd2"))))
(build-system cmake-build-system)
(native-inputs
`(("python" ,python-2))) ;for tests; syntax incompatible with python 3
(inputs
`(("fortran" ,gfortran) ;for fcmix
("blas" ,openblas)
("suitesparse" ,suitesparse))) ;TODO: Add hypre
(arguments
`(#:configure-flags `("-DEXAMPLES_ENABLE_C:BOOL=ON"
"-DEXAMPLES_ENABLE_CXX:BOOL=ON"
"-DEXAMPLES_ENABLE_F77:BOOL=ON"
"-DEXAMPLES_ENABLE_F90:BOOL=ON"
"-DEXAMPLES_INSTALL:BOOL=OFF"
"-DFCMIX_ENABLE:BOOL=ON"
"-DKLU_ENABLE:BOOL=ON"
,(string-append "-DKLU_INCLUDE_DIR="
(assoc-ref %build-inputs "suitesparse")
"/include")
,(string-append "-DKLU_LIBRARY_DIR="
(assoc-ref %build-inputs "suitesparse")
"/lib"))))
(home-page "https://computation.llnl.gov/projects/sundials")
(synopsis "Suite of nonlinear and differential/algebraic equation solvers")
(description "SUNDIALS is a family of software packages implemented with
the goal of providing robust time integrators and nonlinear solvers that can
easily be incorporated into existing simulation codes.")
(license license:bsd-3)))
(define-public sundials-openmpi
(package (inherit sundials)
(name "sundials-openmpi")
(inputs
`(("mpi" ,openmpi)
("petsc" ,petsc-openmpi) ;support in SUNDIALS requires MPI
,@(package-inputs sundials)))
(arguments
(substitute-keyword-arguments (package-arguments sundials)
((#:configure-flags flags '())
`(cons* "-DMPI_ENABLE:BOOL=ON"
"-DPETSC_ENABLE:BOOL=ON"
(string-append "-DPETSC_INCLUDE_DIR="
(assoc-ref %build-inputs "petsc")
"/include")
(string-append "-DPETSC_LIBRARY_DIR="
(assoc-ref %build-inputs "petsc")
"/lib")
,flags))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
(add-before 'check 'set-test-environment
(lambda _
;; By default, running the test suite would fail because 'ssh'
;; could not be found in $PATH. Define this variable to
;; placate Open MPI without adding a dependency on OpenSSH (the
;; agent isn't used anyway.)
(setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
;; Allow oversubscription in case there are less
;; physical cores available in the build environment
;; than SUNDIALS wants while testing.
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes")
#t))))))
(synopsis "SUNDIALS with OpenMPI support")))

View file

@ -39,15 +39,15 @@ (define-module (gnu packages mes)
(define-public nyacc
(package
(name "nyacc")
(version "0.83.3")
(version "0.86.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/nyacc/"
name "-" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(patches (search-patches "nyacc-binary-literals.patch"))
(sha256
(base32
"0120n0mdb6r58c4jc024dhwqy5s8a20waknijfhqjc59a884lrd6"))))
"0lkd9lyspvhxlfs0496gsllwinh62jk9wij6gpadvx9gwz6yavd9"))))
(build-system gnu-build-system)
(native-inputs
`(("guile" ,guile-2.2)))
@ -59,36 +59,24 @@ (define-public nyacc
(home-page "https://savannah.nongnu.org/projects/nyacc")
(license (list gpl3+ lgpl3+))))
(define-public nyacc-for-mes
(package
(inherit nyacc)
(version "0.80.42")
(source (origin
(method url-fetch)
(uri (string-append "https://gitlab.com/janneke/nyacc"
"/-/archive/v" version
"/nyacc-" version ".tar.gz"))
(sha256
(base32
"0c8c8kxir0h2d4nxr131xbkfs7c80haipmkp2g6677sh14wn0b3y"))))))
(define-public mes
(let ((triplet "i686-unknown-linux-gnu"))
(package
(name "mes")
(version "0.17")
(version "0.17.1")
(source (origin
(method url-fetch)
(uri (string-append "http://alpha.gnu.org/gnu/mes/"
"mes-" version ".tar.gz"))
(patches (search-patches "mes-nyacc-0.86.0.patch"))
(sha256
(base32
"1j32x4zqy2cqjlg9m35f2411mwac2b0p5ch4hm99gddmfbxzgyhg"))))
"02g8zig53ffd0ai8kqhv2zj7bj2366a8hr6ydkwakmi2d1amyrna"))))
(build-system gnu-build-system)
(supported-systems '("i686-linux" "x86_64-linux"))
(propagated-inputs
`(("mescc-tools" ,mescc-tools)
("nyacc" ,nyacc-for-mes)))
("nyacc" ,nyacc)))
(native-inputs
`(("guile" ,guile-2.2)
,@(if (not (string-prefix? "i686-linux" (or (%current-target-system)

View file

@ -84,7 +84,7 @@ (define-public libmad
This package contains the library.")
(license license:gpl2+)
(home-page "http://www.underbit.com/products/mad/")))
(home-page "https://www.underbit.com/products/mad/")))
(define-public libid3tag
(package
@ -105,7 +105,7 @@ (define-public libid3tag
"Libid3tag is a library for reading ID3 tags, both ID3v1 and the various
versions of ID3v2.")
(license license:gpl2+)
(home-page "http://www.underbit.com/products/mad/")))
(home-page "https://www.underbit.com/products/mad/")))
(define-public id3lib
(package
@ -184,7 +184,7 @@ (define-public mp3info
(source (origin
(method url-fetch)
(uri (string-append
"http://ibiblio.org"
"https://ibiblio.org"
"/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-"
version ".tgz"))
(sha256
@ -231,7 +231,7 @@ (define-public mp3info
(inputs
`(("gtk+" ,gtk+-2)
("ncurses" ,ncurses)))
(home-page "http://www.ibiblio.org/mp3info/")
(home-page "https://www.ibiblio.org/mp3info/")
(synopsis "MP3 technical info viewer and ID3 1.x tag editor")
(description
"MP3Info is a little utility used to read and modify the ID3 tags of MP3
@ -309,7 +309,7 @@ (define-public mpg123
(uri (list (string-append "mirror://sourceforge/mpg123/mpg123/"
version "/mpg123-" version ".tar.bz2")
(string-append
"http://www.mpg123.org/download/mpg123-"
"https://www.mpg123.org/download/mpg123-"
version ".tar.bz2")))
(sha256
(base32
@ -413,7 +413,7 @@ (define-public libmpcdec
(source (origin
(method url-fetch)
(uri (string-append
"http://files.musepack.net/source/libmpcdec-"
"https://files.musepack.net/source/libmpcdec-"
version ".tar.bz2"))
(sha256
(base32
@ -424,7 +424,7 @@ (define-public libmpcdec
"This library supports decoding of the Musepack (MPC) audio compression
format.")
(license license:bsd-3)
(home-page "http://musepack.net")))
(home-page "https://musepack.net")))
(define-public mpc123
(package
@ -491,7 +491,7 @@ (define-public eyed3
command-line tool (eyeD3) and a Python library (import eyed3) that can be used
to write your own applications or plugins that are callable from the
command-line tool.")
(home-page "http://eyed3.nicfit.net/")
(home-page "https://eyed3.readthedocs.io/en/latest/")
(license license:gpl2+)))
(define-public chromaprint

View file

@ -56,7 +56,7 @@ (define-module (gnu packages mpd)
(define-public libmpdclient
(package
(name "libmpdclient")
(version "2.14")
(version "2.15")
(source (origin
(method url-fetch)
(uri
@ -65,7 +65,7 @@ (define-public libmpdclient
"/libmpdclient-" version ".tar.xz"))
(sha256
(base32
"0whk0qw0lsd3kaimdznz0c45bfym0p4885zf4b7pfc7y3dwy510a"))))
"1la60ar6i4ghpscrlgm45kci9b74bvkpsfybhg0ygs4rzpwzdnxl"))))
(build-system meson-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)

View file

@ -108,7 +108,7 @@ (define-public mpfr
library for performing multiple-precision, floating-point computations with
correct rounding.")
(license lgpl3+)
(home-page "http://www.mpfr.org/")))
(home-page "https://www.mpfr.org/")))
(define-public mpc
(package

View file

@ -786,18 +786,23 @@ (define-public gtklick
(define-public libgme
(package
(name "libgme")
(version "0.6.1")
(version "0.6.2")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/mpyne/game-music-emu/"
"downloads/game-music-emu-" version
".tar.bz2"))
".tar.xz"))
(sha256
(base32
"08fk7zddpn7v93d0fa7fcypx7hvgwx9b5psj9l6m8b87k2hbw4fw"))))
"0hkkmxbaas2sirlb5i4r10mgbbiaapjx8pazifabwba23m3wnijh"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; no check target
(native-inputs
`(;; Use gcc-4.9 to work around an internal compiler error that happens
;; when using gcc-5.5.0. FIXME: Try removing this when the default
;; compiler is no longer gcc-5.5.0.
("gcc" ,gcc-4.9)))
(home-page "https://bitbucket.org/mpyne/game-music-emu")
(synopsis "Video game music file playback library")
(description

View file

@ -28,17 +28,17 @@ (define-module (gnu packages musl)
(define-public musl
(package
(name "musl")
(version "1.1.19")
(version "1.1.20")
(source (origin
(method url-fetch)
(uri (string-append "http://www.musl-libc.org/releases/"
name "-" version ".tar.gz"))
(sha256
(base32
"1nf1wh44bhm8gdcfr75ayib29b99vpq62zmjymrq7f96h9bshnfv"))))
"0q8dsjxl41dccscv9a0r78bs7jap57mn4mni5pwbbip6s1qqggj4"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; Musl has no tests
`(#:tests? #f ; Musl has no tests
#:configure-flags
(list "--disable-gcc-wrapper")))
(synopsis "Small C standard library")

View file

@ -580,7 +580,7 @@ (define-public whois
(define-public wireshark
(package
(name "wireshark")
(version "2.6.2")
(version "2.6.3")
(source
(origin
(method url-fetch)
@ -588,7 +588,7 @@ (define-public wireshark
version ".tar.xz"))
(sha256
(base32
"153h6prxamv5a62f3pfadkry0y57696xrgxfy2gfy5xswdg8kcj9"))))
"1v538h02y8avwy3cr11xz6wkyf9xd8qva4ng4sl9f2fw4skahn6i"))))
(build-system gnu-build-system)
(inputs `(("c-ares" ,c-ares)
("glib" ,glib)
@ -762,52 +762,58 @@ (define-public bwm-ng
(define-public aircrack-ng
(package
(name "aircrack-ng")
(version "1.2-rc4")
(version "1.3")
(source
(origin
(method url-fetch)
(uri (string-append "http://download.aircrack-ng.org/aircrack-ng-"
(uri (string-append "https://download.aircrack-ng.org/aircrack-ng-"
version ".tar.gz"))
(sha256
(base32
"0dpzx9kddxpgzmgvdpl3rxn0jdaqhm5wxxndp1xd7d75mmmc2fnr"))))
"1jl30d0kibc82447fr3lgw75arik0l9729k94z76l7vl51y8mq4a"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)
("which" ,which)))
(inputs
`(("libgcrypt" ,libgcrypt)
("libnl" ,libnl)
("libpcap" ,libpcap)
("ethtool" ,ethtool)
("pcre" ,pcre)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(arguments
`(#:make-flags `("sqlite=true"
"gcrypt=true"
"libnl=true"
"pcre=true"
"experimental=true" ;build wesside-ng, etc.
"AVX2FLAG=N" "AVX1FLAG=N"
,,@(match (%current-system)
((or "x86_64-linux" "i686-linux")
`("SSEFLAG=Y"))
(_
`("NEWSSE=false")))
,(string-append "prefix=" %output))
`(#:configure-flags
(list "--with-experimental=yes" ; build wesside-ng, etc.
"--with-gcrypt") ; openssl's the default
#:phases (modify-phases %standard-phases
(delete 'configure) ;no configure phase
(add-before 'bootstrap 'patch-evalrev
(lambda _
;; Called by ./autogen.sh below, before the default
;; patch-shebangs phase has had a chance to run.
(substitute* "evalrev"
(("/bin/sh")
(which "sh")))
#t))
(replace 'bootstrap
(lambda _
;; Patch shebangs in generated files before running
;; ./configure.
(setenv "NOCONFIGURE" "please")
(invoke "bash" "./autogen.sh")))
(add-after 'build 'absolutize-tools
(lambda* (#:key inputs #:allow-other-keys)
(let ((ethtool (string-append (assoc-ref inputs "ethtool")
"/sbin/ethtool")))
(substitute* "scripts/airmon-ng"
(("\\[ ! -x \"\\$\\(command -v ethtool 2>&1)\" \\]")
(string-append "! " ethtool " --version "
">/dev/null 2>&1"))
(("\\$\\(ethtool")
(string-append "$(" ethtool)))
(("ethtool ")
(string-append ethtool " ")))
#t))))))
(home-page "http://www.aircrack-ng.org")
(home-page "https://www.aircrack-ng.org")
(synopsis "Assess WiFi network security")
(description
"Aircrack-ng is a complete suite of tools to assess WiFi network

View file

@ -106,14 +106,14 @@ (define-public openldap
(define-public nss-pam-ldapd
(package
(name "nss-pam-ldapd")
(version "0.9.9")
(version "0.9.10")
(source (origin
(method url-fetch)
(uri (string-append "https://arthurdejong.org/nss-pam-ldapd/"
"nss-pam-ldapd-" version ".tar.gz"))
(sha256
(base32
"1lj7qkjlg3bshwdc5x5r1ny37rly4wgm1c8b6w6b5f4wa11nmji0"))))
"1cqamcr6qpgwxijlr6kg7jspjamjra8w0haan0qssn0yxn95d7c0"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags

View file

@ -101,8 +101,8 @@ (define-public guix
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "0.15.0")
(commit "8bbb79cf95a07a40950448a8a09d888254404ed4")
(revision 2))
(commit "3d43017026f9995ad128915db8ca5eafe061bf75")
(revision 3))
(package
(name "guix")
@ -118,7 +118,7 @@ (define-public guix
(commit commit)))
(sha256
(base32
"0h83l91v2cg9bb78c7vqx9wj71ckz22jbjmm2fy4vqs9216jnvc0"))
"167rzz2h33xmmchkplwzfq94s5jwdn5nabsq2lb84s54ps0sm89m"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@ -213,6 +213,7 @@ (define (intern tarball)
;; Guile-JSON, and Guile-Git automatically.
(let* ((out (assoc-ref outputs "out"))
(guile (assoc-ref inputs "guile"))
(gcrypt (assoc-ref inputs "guile-gcrypt"))
(json (assoc-ref inputs "guile-json"))
(sqlite (assoc-ref inputs "guile-sqlite3"))
(git (assoc-ref inputs "guile-git"))
@ -220,7 +221,8 @@ (define (intern tarball)
"guile-bytestructures"))
(ssh (assoc-ref inputs "guile-ssh"))
(gnutls (assoc-ref inputs "gnutls"))
(deps (list json sqlite gnutls git bs ssh))
(deps (list gcrypt json sqlite gnutls
git bs ssh))
(effective
(read-line
(open-pipe* OPEN_READ
@ -277,6 +279,7 @@ (define (intern tarball)
'())))
(propagated-inputs
`(("gnutls" ,gnutls)
("guile-gcrypt" ,guile-gcrypt)
("guile-json" ,guile-json)
("guile-sqlite3" ,guile-sqlite3)
("guile-ssh" ,guile-ssh)
@ -312,6 +315,7 @@ (define-public guix-daemon
(inputs
`(("gnutls" ,gnutls)
("guile-git" ,guile-git)
("guile-gcrypt" ,guile-gcrypt)
,@(fold alist-delete (package-inputs guix)
'("boot-guile" "boot-guile/i686" "util-linux"))))
@ -562,13 +566,13 @@ (define-public rpm
(define-public diffoscope
(package
(name "diffoscope")
(version "96")
(version "100")
(source (origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
"1x66f2x8miy3giff14higpcs70c0zb5d3gj6yn8ac6p183sngl72"))))
"0sh7g26i5ndpa8l7xq6rnijbi3jz5izjn0b98zcnm6wpgghszw48"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases

View file

@ -0,0 +1,193 @@
Ghostscript 9.24 was released with an incomplete fix for CVE-2018-16509:
https://nvd.nist.gov/vuln/detail/CVE-2018-16509
https://bugs.chromium.org/p/project-zero/issues/detail?id=1640#c19
https://bugs.ghostscript.com/show_bug.cgi?id=699718
The reproducers no longer work after applying these commits:
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5812b1b78fc4d36fdc293b7859de69241140d590
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e914f1da46e33decc534486598dc3eadf69e6efb
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3e5d316b72e3965b7968bb1d96baa137cd063ac6
https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=643b24dbd002fb9c131313253c307cf3951b3d47
This patch is a "squashed" version of those.
diff --git a/Resource/Init/gs_setpd.ps b/Resource/Init/gs_setpd.ps
index bba3c8c0e..8fa7c51df 100644
--- a/Resource/Init/gs_setpd.ps
+++ b/Resource/Init/gs_setpd.ps
@@ -95,27 +95,41 @@ level2dict begin
{ % Since setpagedevice doesn't create new device objects,
% we must (carefully) reinstall the old parameters in
% the same device.
- .currentpagedevice pop //null currentdevice //null .trysetparams
+ .currentpagedevice pop //null currentdevice //null
+ { .trysetparams } .internalstopped
+ {
+ //null
+ } if
dup type /booleantype eq
{ pop pop }
- { % This should never happen!
+ {
SETPDDEBUG { (Error in .trysetparams!) = pstack flush } if
- cleartomark pop pop pop
+ {cleartomark pop pop pop} .internalstopped pop
+ % if resetting the entire device state failed, at least put back the
+ % security related key
+ currentdevice //null //false mark /.LockSafetyParams
+ currentpagedevice /.LockSafetyParams .knownget not
+ {systemdict /SAFER .knownget not {//false} } if
+ .putdeviceparamsonly
/.installpagedevice cvx /rangecheck signalerror
}
ifelse pop pop
% A careful reading of the Red Book reveals that an erasepage
% should occur, but *not* an initgraphics.
erasepage .beginpage
- } bind def
+ } bind executeonly def
/.uninstallpagedevice
- { 2 .endpage { .currentnumcopies //false .outputpage } if
+ {
+ {2 .endpage { .currentnumcopies //false .outputpage } if} .internalstopped pop
nulldevice
} bind def
(%grestorepagedevice) cvn
- { .uninstallpagedevice grestore .installpagedevice
+ {
+ .uninstallpagedevice
+ grestore
+ .installpagedevice
} bind def
(%grestoreallpagedevice) cvn
diff --git a/psi/zdevice2.c b/psi/zdevice2.c
index 0c7080d57..159a0c0d9 100644
--- a/psi/zdevice2.c
+++ b/psi/zdevice2.c
@@ -251,8 +251,8 @@ z2currentgstate(i_ctx_t *i_ctx_p)
/* ------ Wrappers for operators that reset the graphics state. ------ */
/* Check whether we need to call out to restore the page device. */
-static bool
-restore_page_device(const gs_gstate * pgs_old, const gs_gstate * pgs_new)
+static int
+restore_page_device(i_ctx_t *i_ctx_p, const gs_gstate * pgs_old, const gs_gstate * pgs_new)
{
gx_device *dev_old = gs_currentdevice(pgs_old);
gx_device *dev_new;
@@ -260,9 +260,10 @@ restore_page_device(const gs_gstate * pgs_old, const gs_gstate * pgs_new)
gx_device *dev_t2;
bool samepagedevice = obj_eq(dev_old->memory, &gs_int_gstate(pgs_old)->pagedevice,
&gs_int_gstate(pgs_new)->pagedevice);
+ bool LockSafetyParams = dev_old->LockSafetyParams;
if ((dev_t1 = (*dev_proc(dev_old, get_page_device)) (dev_old)) == 0)
- return false;
+ return 0;
/* If we are going to putdeviceparams in a callout, we need to */
/* unlock temporarily. The device will be re-locked as needed */
/* by putdeviceparams from the pgs_old->pagedevice dict state. */
@@ -271,23 +272,51 @@ restore_page_device(const gs_gstate * pgs_old, const gs_gstate * pgs_new)
dev_new = gs_currentdevice(pgs_new);
if (dev_old != dev_new) {
if ((dev_t2 = (*dev_proc(dev_new, get_page_device)) (dev_new)) == 0)
- return false;
- if (dev_t1 != dev_t2)
- return true;
+ samepagedevice = true;
+ else if (dev_t1 != dev_t2)
+ samepagedevice = false;
+ }
+
+ if (LockSafetyParams && !samepagedevice) {
+ const int required_ops = 512;
+ const int required_es = 32;
+
+ /* The %grestorepagedevice must complete: the biggest danger
+ is operand stack overflow. As we use get/putdeviceparams
+ that means pushing all the device params onto the stack,
+ pdfwrite having by far the largest number of parameters
+ at (currently) 212 key/value pairs - thus needing (currently)
+ 424 entries on the op stack. Allowing for working stack
+ space, and safety margin.....
+ */
+ if (required_ops + ref_stack_count(&o_stack) >= ref_stack_max_count(&o_stack)) {
+ gs_currentdevice(pgs_old)->LockSafetyParams = LockSafetyParams;
+ return_error(gs_error_stackoverflow);
+ }
+ /* We also want enough exec stack space - 32 is an overestimate of
+ what we need to complete the Postscript call out.
+ */
+ if (required_es + ref_stack_count(&e_stack) >= ref_stack_max_count(&e_stack)) {
+ gs_currentdevice(pgs_old)->LockSafetyParams = LockSafetyParams;
+ return_error(gs_error_execstackoverflow);
+ }
}
/*
* The current implementation of setpagedevice just sets new
* parameters in the same device object, so we have to check
* whether the page device dictionaries are the same.
*/
- return !samepagedevice;
+ return samepagedevice ? 0 : 1;
}
/* - grestore - */
static int
z2grestore(i_ctx_t *i_ctx_p)
{
- if (!restore_page_device(igs, gs_gstate_saved(igs)))
+ int code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
+ if (code < 0) return code;
+
+ if (code == 0)
return gs_grestore(igs);
return push_callout(i_ctx_p, "%grestorepagedevice");
}
@@ -297,7 +326,9 @@ static int
z2grestoreall(i_ctx_t *i_ctx_p)
{
for (;;) {
- if (!restore_page_device(igs, gs_gstate_saved(igs))) {
+ int code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
+ if (code < 0) return code;
+ if (code == 0) {
bool done = !gs_gstate_saved(gs_gstate_saved(igs));
gs_grestore(igs);
@@ -328,11 +359,15 @@ z2restore(i_ctx_t *i_ctx_p)
if (code < 0) return code;
while (gs_gstate_saved(gs_gstate_saved(igs))) {
- if (restore_page_device(igs, gs_gstate_saved(igs)))
+ code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
+ if (code < 0) return code;
+ if (code > 0)
return push_callout(i_ctx_p, "%restore1pagedevice");
gs_grestore(igs);
}
- if (restore_page_device(igs, gs_gstate_saved(igs)))
+ code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
+ if (code < 0) return code;
+ if (code > 0)
return push_callout(i_ctx_p, "%restorepagedevice");
code = dorestore(i_ctx_p, asave);
@@ -355,9 +390,12 @@ static int
z2setgstate(i_ctx_t *i_ctx_p)
{
os_ptr op = osp;
+ int code;
check_stype(*op, st_igstate_obj);
- if (!restore_page_device(igs, igstate_ptr(op)))
+ code = restore_page_device(i_ctx_p, igs, igstate_ptr(op));
+ if (code < 0) return code;
+ if (code == 0)
return zsetgstate(i_ctx_p);
return push_callout(i_ctx_p, "%setgstatepagedevice");
}

View file

@ -0,0 +1,160 @@
Additional security fix that missed 9.24.
Taken from upstream:
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fb713b3818b52d8a6cf62c951eba2e1795ff9624
From fb713b3818b52d8a6cf62c951eba2e1795ff9624 Mon Sep 17 00:00:00 2001
From: Chris Liddell <chris.liddell@artifex.com>
Date: Thu, 6 Sep 2018 09:16:22 +0100
Subject: [PATCH] Bug 699708 (part 1): 'Hide' non-replaceable error handlers
for SAFER
We already had a 'private' dictionary for non-standard errors: gserrordict.
This now includes all the default error handlers, the dictionary is made
noaccess and all the prodedures are bound and executeonly.
When running with -dSAFER, in the event of a Postscript error, instead of
pulling the handler from errordict, we'll pull it from gserrordict - thus
malicious input cannot trigger problems by the use of custom error handlers.
errordict remains open and writeable, so files such as the Quality Logic tests
that install their own handlers will still 'work', with the exception that the
custom error handlers will not be called.
This is a 'first pass', 'sledgehammer' approach: a nice addition would to allow
an integrator to specify a list of errors that are not to be replaced (for
example, embedded applications would probably want to ensure that VMerror is
always handled as they intend).
---
Resource/Init/gs_init.ps | 29 ++++++++++++++++++-----------
psi/interp.c | 30 +++++++++++++++++++++---------
2 files changed, 39 insertions(+), 20 deletions(-)
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
index 071c39205..bc8b7951c 100644
--- a/Resource/Init/gs_init.ps
+++ b/Resource/Init/gs_init.ps
@@ -881,7 +881,7 @@ userdict /.currentresourcefile //null put
{ not exch pop exit } { pop } ifelse
}
for exch pop .quit
- } bind def
+ } bind executeonly def
/.errorhandler % <command> <errorname> .errorhandler -
{ % Detect an internal 'stopped'.
1 .instopped { //null eq { pop pop stop } if } if
@@ -926,7 +926,7 @@ userdict /.currentresourcefile //null put
$error /globalmode get $error /.nosetlocal get and .setglobal
$error /.inerror //false put
stop
- } bind def
+ } bind executeonly def
% Define the standard handleerror. We break out the printing procedure
% (.printerror) so that it can be extended for binary output
% if the Level 2 facilities are present.
@@ -976,7 +976,7 @@ userdict /.currentresourcefile //null put
ifelse % newerror
end
flush
- } bind def
+ } bind executeonly def
/.printerror_long % long error printout,
% $error is on the dict stack
{ % Push the (anonymous) stack printing procedure.
@@ -1053,14 +1053,14 @@ userdict /.currentresourcefile //null put
{ (Current file position is ) print position = }
if
- } bind def
+ } bind executeonly def
% Define a procedure for clearing the error indication.
/.clearerror
{ $error /newerror //false put
$error /errorname //null put
$error /errorinfo //null put
0 .setoserrno
- } bind def
+ } bind executeonly def
% Define $error. This must be in local VM.
.currentglobal //false .setglobal
@@ -1086,11 +1086,15 @@ end
/errordict ErrorNames length 3 add dict
.forcedef % errordict is local, systemdict is global
.setglobal % back to global VM
-% For greater Adobe compatibility, we put all non-standard errors in a
-% separate dictionary, gserrordict. It does not need to be in local VM,
-% because PostScript programs do not access it.
+% gserrordict contains all the default error handling methods, but unlike
+% errordict it is noaccess after creation (also it is in global VM).
+% When running 'SAFER', we'll ignore the contents of errordict, which
+% may have been tampered with by the running job, and always use gserrordict
+% gserrordict also contains any non-standard errors, for better compatibility
+% with Adobe.
+%
% NOTE: the name gserrordict is known to the interpreter.
-/gserrordict 5 dict def
+/gserrordict ErrorNames length 3 add dict def
% Register an error in errordict. We make this a procedure because we only
% register the Level 1 errors here: the rest are registered by "feature"
% files. However, ErrorNames contains all of the error names regardless of
@@ -1119,8 +1123,11 @@ errordict begin
} bind def
end % errordict
-% Put non-standard errors in gserrordict.
-gserrordict /unknownerror errordict /unknownerror get put
+% Put all the default handlers in gserrordict
+gserrordict
+errordict {2 index 3 1 roll put} forall
+noaccess pop
+% remove the non-standard errors from errordict
errordict /unknownerror .undef
% Define a stable private copy of handleerror that we will always use under
% JOBSERVER mode.
diff --git a/psi/interp.c b/psi/interp.c
index c27b70dca..d41a9d3f5 100644
--- a/psi/interp.c
+++ b/psi/interp.c
@@ -661,16 +661,28 @@ again:
return code;
if (gs_errorname(i_ctx_p, code, &error_name) < 0)
return code; /* out-of-range error code! */
- /*
- * For greater Adobe compatibility, only the standard PostScript errors
- * are defined in errordict; the rest are in gserrordict.
+
+ /* If LockFilePermissions is true, we only refer to gserrordict, which
+ * is not accessible to Postcript jobs
*/
- if (dict_find_string(systemdict, "errordict", &perrordict) <= 0 ||
- (dict_find(perrordict, &error_name, &epref) <= 0 &&
- (dict_find_string(systemdict, "gserrordict", &perrordict) <= 0 ||
- dict_find(perrordict, &error_name, &epref) <= 0))
- )
- return code; /* error name not in errordict??? */
+ if (i_ctx_p->LockFilePermissions) {
+ if (((dict_find_string(systemdict, "gserrordict", &perrordict) <= 0 ||
+ dict_find(perrordict, &error_name, &epref) <= 0))
+ )
+ return code; /* error name not in errordict??? */
+ }
+ else {
+ /*
+ * For greater Adobe compatibility, only the standard PostScript errors
+ * are defined in errordict; the rest are in gserrordict.
+ */
+ if (dict_find_string(systemdict, "errordict", &perrordict) <= 0 ||
+ (dict_find(perrordict, &error_name, &epref) <= 0 &&
+ (dict_find_string(systemdict, "gserrordict", &perrordict) <= 0 ||
+ dict_find(perrordict, &error_name, &epref) <= 0))
+ )
+ return code; /* error name not in errordict??? */
+ }
doref = *epref;
epref = &doref;
/* Push the error object on the operand stack if appropriate. */
--
2.18.0

View file

@ -0,0 +1,197 @@
From 9e610736bf779f3295c1192e748cd19cbbe3be28 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Wed, 5 Sep 2018 20:28:06 +0200
Subject: [PATCH 1/2] mes: Support Nyacc 0.85.3: Add char-set-copy.
* mes/module/srfi/srfi-14.mes (char-set-copy): New function>
---
mes/module/srfi/srfi-14.mes | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mes/module/srfi/srfi-14.mes b/mes/module/srfi/srfi-14.mes
index 0be39b1e..a16d16ce 100644
--- a/mes/module/srfi/srfi-14.mes
+++ b/mes/module/srfi/srfi-14.mes
@@ -52,3 +52,6 @@
(define (char-whitespace? c)
(char-set-contains? char-set:whitespace c))
+
+(define (char-set-copy cs)
+ (map identity cs))
--
2.18.0
From b952bdf44f11edbfc277600dc35236aae1769b54 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Wed, 5 Sep 2018 22:14:34 +0200
Subject: [PATCH 2/2] mes: Support Nyacc 0.85.3: Integrate progress.
* mes/module/nyacc/lang/sx-util.mes: New file.
* mes/module/nyacc/version.mes: New file.
* mes/module/nyacc/lang/c99/cpp.mes (nyacc): Include them.
* mes/module/nyacc/lang/c99/parser.mes (nyacc): Include them.
* module/mescc/preprocess.scm (need-progress): New function.
(progress): New function.
(insert-progress-monitors): Use them to Integrate progress.
---
mes/module/mescc/preprocess.mes | 1 +
mes/module/nyacc/lang/c99/cpp.mes | 1 +
mes/module/nyacc/lang/c99/parser.mes | 1 +
mes/module/nyacc/lang/sx-util.mes | 27 +++++++++++++++++++++
mes/module/nyacc/version.mes | 26 +++++++++++++++++++++
module/mescc/preprocess.scm | 35 ++++++++++++++++++++++++++++
6 files changed, 91 insertions(+)
create mode 100644 mes/module/nyacc/lang/sx-util.mes
create mode 100644 mes/module/nyacc/version.mes
diff --git a/mes/module/mescc/preprocess.mes b/mes/module/mescc/preprocess.mes
index c7c5fcaa..022a372c 100644
--- a/mes/module/mescc/preprocess.mes
+++ b/mes/module/mescc/preprocess.mes
@@ -24,4 +24,5 @@
(mes-use-module (srfi srfi-13))
(mes-use-module (srfi srfi-26))
(mes-use-module (nyacc lang c99 parser))
+(mes-use-module (nyacc version))
(include-from-path "mescc/preprocess.scm")
diff --git a/mes/module/nyacc/lang/c99/cpp.mes b/mes/module/nyacc/lang/c99/cpp.mes
index fad1dc55..b25c4a93 100644
--- a/mes/module/nyacc/lang/c99/cpp.mes
+++ b/mes/module/nyacc/lang/c99/cpp.mes
@@ -28,5 +28,6 @@
(mes-use-module (nyacc parse))
(mes-use-module (nyacc lex))
+(mes-use-module (nyacc lang sx-util))
(mes-use-module (nyacc lang util))
(include-from-path "nyacc/lang/c99/cpp.scm")
diff --git a/mes/module/nyacc/lang/c99/parser.mes b/mes/module/nyacc/lang/c99/parser.mes
index c51552d6..1a9aaf73 100644
--- a/mes/module/nyacc/lang/c99/parser.mes
+++ b/mes/module/nyacc/lang/c99/parser.mes
@@ -32,6 +32,7 @@
(mes-use-module (nyacc lex))
(mes-use-module (nyacc parse))
+(mes-use-module (nyacc lang sx-util))
(mes-use-module (nyacc lang util))
(mes-use-module (nyacc lang c99 cpp))
diff --git a/mes/module/nyacc/lang/sx-util.mes b/mes/module/nyacc/lang/sx-util.mes
new file mode 100644
index 00000000..41ac5b4a
--- /dev/null
+++ b/mes/module/nyacc/lang/sx-util.mes
@@ -0,0 +1,27 @@
+;;; -*-scheme-*-
+
+;;; GNU Mes --- Maxwell Equations of Software
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of GNU Mes.
+;;;
+;;; GNU Mes 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 Mes 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 Mes. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(mes-use-module (srfi srfi-1))
+(mes-use-module (srfi srfi-16))
+(include-from-path "nyacc/lang/sx-util.scm")
diff --git a/mes/module/nyacc/version.mes b/mes/module/nyacc/version.mes
new file mode 100644
index 00000000..b9db628e
--- /dev/null
+++ b/mes/module/nyacc/version.mes
@@ -0,0 +1,26 @@
+;;; -*-scheme-*-
+
+;;; GNU Mes --- Maxwell Equations of Software
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of GNU Mes.
+;;;
+;;; GNU Mes 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 Mes 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 Mes. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(include-from-path "nyacc/version.scm")
+(display "nyacc version\n")
diff --git a/module/mescc/preprocess.scm b/module/mescc/preprocess.scm
index 9e341cba..c2efb32c 100644
--- a/module/mescc/preprocess.scm
+++ b/module/mescc/preprocess.scm
@@ -26,9 +26,44 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (nyacc lang c99 parser)
+ #:use-module (nyacc lang c99 parser)
+ #:use-module (nyacc version)
#:use-module (mes guile)
#:export (c99-input->ast))
+(format (current-error-port) "*nyacc-version*=~a\n" *nyacc-version*)
+;; list of which rules you want progress reported
+(define need-progress
+ (assoc-ref
+ '(("0.85.3" (1 2 3))
+ ("0.86.0" (1 2 3)))
+ *nyacc-version*))
+
+(define (progress o)
+ (when (and o (getenv "NYACC_DEBUG"))
+ (display " :" (current-error-port))
+ (display o (current-error-port))
+ (display "\n" (current-error-port))))
+
+(define (insert-progress-monitors act-v len-v)
+ (let ((n (vector-length act-v)))
+ (let loop ((ix 0))
+ (when (< ix n)
+ (if (memq ix need-progress)
+ (vector-set
+ act-v ix
+ (lambda args
+ (progress (list-ref args (1- (vector-ref len-v ix))))
+ (apply (vector-ref act-v ix) args))))
+ (loop (1+ ix))))))
+
+(cond-expand
+ (guile
+ (insert-progress-monitors (@@ (nyacc lang c99 parser) c99-act-v)
+ (@@ (nyacc lang c99 parser) c99-len-v)))
+ (mes
+ (insert-progress-monitors c99-act-v c99-len-v)))
+
(define (logf port string . rest)
(apply format (cons* port string rest))
(force-output port)
--
2.18.0

View file

@ -0,0 +1,29 @@
From 6a08014b77bf435f025ecdac08396580b85f159a Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sat, 8 Sep 2018 20:22:45 +0200
Subject: [PATCH] fix binary literals.
---
module/nyacc/lex.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/module/nyacc/lex.scm b/module/nyacc/lex.scm
index 2ec9895..b205212 100644
--- a/module/nyacc/lex.scm
+++ b/module/nyacc/lex.scm
@@ -345,10 +345,11 @@
((char-numeric? ch) (iter chl '$fixed ba 1 ch))
((char=? #\. ch) (iter (cons ch chl) #f ba 15 (read-char)))
(else #f)))
- ((10) ;; allow x after 0
+ ((10) ;; allow x, b after 0
(cond
((eof-object? ch) (iter chl ty ba 5 ch))
((char=? #\x ch) (iter (cons ch chl) ty 16 1 (read-char)))
+ ((char=? #\b ch) (iter (cons ch chl) ty 2 1 (read-char)))
(else (iter chl ty ba 1 ch))))
((15) ;; got `.' only
(cond
--
2.18.0

View file

@ -153,8 +153,10 @@ (define-public perl
(files '("lib/perl5/site_perl")))))
(synopsis "Implementation of the Perl programming language")
(description
"Perl 5 is a highly capable, feature-rich programming language with over
24 years of development.")
"Perl is a general-purpose programming language originally developed for
text manipulation and now used for a wide range of tasks including system
administration, web development, network programming, GUI development, and
more.")
(home-page "http://www.perl.org/")
(license gpl1+))) ; or "Artistic"
@ -1369,7 +1371,7 @@ (define-public perl-config-any
(define-public perl-config-autoconf
(package
(name "perl-config-autoconf")
(version "0.315")
(version "0.317")
(source
(origin
(method url-fetch)
@ -1377,7 +1379,7 @@ (define-public perl-config-autoconf
"Config-AutoConf-" version ".tar.gz"))
(sha256
(base32
"0h39x9rzrhhilpg8yxlzpka269qrzsjg0iy0c1b9xflqlvhx2g2b"))))
"1qcwib4yaml5z2283qy5khjcydyibklsnk8zrk9wzdzc5wnv5r01"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-capture-tiny" ,perl-capture-tiny)))
@ -2140,7 +2142,7 @@ (define-public perl-date-simple
(define-public perl-datetime
(package
(name "perl-datetime")
(version "1.49")
(version "1.50")
(source
(origin
(method url-fetch)
@ -2148,7 +2150,7 @@ (define-public perl-datetime
"DateTime-" version ".tar.gz"))
(sha256
(base32
"0hbw4zq1562slnz7g7hyhfhyq98dzkk3i5g21x3xra5cvfix93kh"))))
"165iqk1xvhs5j0kzsipa7aqycx3h37wqsl2r4jl104yqvmqhqszd"))))
(build-system perl-build-system)
(native-inputs
`(("perl-cpan-meta-check" ,perl-cpan-meta-check)
@ -3128,7 +3130,7 @@ (define-public perl-exporter-tiny
(define-public perl-extutils-installpaths
(package
(name "perl-extutils-installpaths")
(version "0.011")
(version "0.012")
(source
(origin
(method url-fetch)
@ -3136,7 +3138,7 @@ (define-public perl-extutils-installpaths
"ExtUtils-InstallPaths-" version ".tar.gz"))
(sha256
(base32
"0z06y0fhx9hy9x01abb7s2xdbqrh9x4ps7avmlf4bwfwih2gl2bn"))))
"1v9lshfhm9ck4p0v77arj5f7haj1mmkqal62lgzzvcds6wq5www4"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-extutils-config" ,perl-extutils-config)))
@ -3192,7 +3194,7 @@ (define-public perl-extutils-depends
(define-public perl-extutils-helpers
(package
(name "perl-extutils-helpers")
(version "0.022")
(version "0.026")
(source
(origin
(method url-fetch)
@ -3200,7 +3202,7 @@ (define-public perl-extutils-helpers
"ExtUtils-Helpers-" version ".tar.gz"))
(sha256
(base32
"15dalfwmpfmifw312i5pwiai8134pxf7b2804shlqhdk1xqczy6k"))))
"05ilqcj1rg5izr09dsqmy5di4fvq6ph4k0chxks7qmd4j1kip46y"))))
(build-system perl-build-system)
(home-page "https://metacpan.org/release/ExtUtils-Helpers")
(synopsis "Various portability utilities for module builders")
@ -3772,7 +3774,7 @@ (define-public perl-getopt-long
(define-public perl-getopt-long-descriptive
(package
(name "perl-getopt-long-descriptive")
(version "0.102")
(version "0.103")
(source
(origin
(method url-fetch)
@ -3780,7 +3782,7 @@ (define-public perl-getopt-long-descriptive
"Getopt-Long-Descriptive-" version ".tar.gz"))
(sha256
(base32
"0ii8xafvlph5vzcqp3dpc83lg7nkg3l1l2hmqdf5382a567vkm4s"))))
"1cpl240qxmh7jf85ai9sfkp3nzm99syya4jxidizp7aa83kvmqbh"))))
(build-system perl-build-system)
(native-inputs
`(("perl-cpan-meta-check" ,perl-cpan-meta-check)
@ -6324,7 +6326,7 @@ (define-public perl-namespace-autoclean
(define-public perl-namespace-clean
(package
(name "perl-namespace-clean")
(version "0.25")
(version "0.27")
(source
(origin
(method url-fetch)
@ -6332,7 +6334,7 @@ (define-public perl-namespace-clean
"namespace-clean-" version ".tar.gz"))
(sha256
(base32
"016dds70ql1mp18b07chkxiy4drn976ibnbshqc2hmhrh9xjnsll"))))
"17dg64pd4bwi2ad3p8ykwys1zha7kg8a8ykvks7wfg8q7qyah44a"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-package-stash" ,perl-package-stash)
@ -6704,7 +6706,7 @@ (define-public perl-params-util
(define-public perl-params-validate
(package
(name "perl-params-validate")
(version "1.26")
(version "1.29")
(source
(origin
(method url-fetch)
@ -6712,7 +6714,7 @@ (define-public perl-params-validate
"Params-Validate-" version ".tar.gz"))
(sha256
(base32
"1vbj78qd46ip09i06dsbb62jfwpzp4bg7yi617v98nvim77w66l2"))))
"0cwpf8yxwyxbnwhf6rx4wnaq1q38j38i34a78a005shb8gxqv9j9"))))
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)
@ -6897,7 +6899,7 @@ (define-public perl-perlio-utf8_strict
(define-public perl-pegex
(package
(name "perl-pegex")
(version "0.64")
(version "0.67")
(source
(origin
(method url-fetch)
@ -6906,7 +6908,7 @@ (define-public perl-pegex
version ".tar.gz"))
(sha256
(base32
"1kb7y2cc3nibbn8i8y3vrzz1f9h3892nbf8jj88c5fdgpmj05q17"))))
"149015ra2figalxrnj72fz02qc5cm96xg6x8d6kmyanfmrrxzf9w"))))
(build-system perl-build-system)
(native-inputs
`(("perl-file-sharedir-install" ,perl-file-sharedir-install)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@ -93,15 +93,7 @@ (define-public guile-charting
"guile-charting-" version ".tar.gz"))
(sha256
(base32
"0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))
(modules '((guix build utils)))
(snippet
'(begin
;; Use the standard location for modules.
(substitute* "Makefile.in"
(("godir = .*$")
"godir = $(moddir)\n"))
#t))))
"0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.2)))

View file

@ -6186,14 +6186,14 @@ (define-public python2-prettytable
(define-public python-tables
(package
(name "python-tables")
(version "3.2.2")
(version "3.4.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "tables" version))
(sha256
(base32
"117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
"0affz7k8babh8wdmsgrz5jxrd569by2w8ffimcxs9wiaf5rw1idx"))
(modules '((guix build utils)))
(snippet
'(begin

View file

@ -292,7 +292,7 @@ (define-public tcsh
(define-public zsh
(package
(name "zsh")
(version "5.5.1")
(version "5.6")
(source (origin
(method url-fetch)
(uri (list (string-append
@ -303,7 +303,7 @@ (define-public zsh
".tar.xz")))
(sha256
(base32
"105aqkdfsdxc4531anrj2zis2ywz6icagjam9lsc235yzh48ihz1"))))
"1mp6h2452z2029n12mxipjv4b0cc8i8sb72g8p8jklg8275iysvl"))))
(build-system gnu-build-system)
(arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre")
#:phases
@ -336,6 +336,19 @@ (define-public zsh
(("command -pv") "command -v")
(("command -p") "command ")
(("'command' -p") "'command' "))
;; This file is ISO-8859-1 encoded.
(with-fluids ((%default-port-encoding #f))
(substitute* "Test/A05execution.ztst"
;; Help it find `sh`
(("PATH=/bin:\\$\\{ZTST_testdir\\}/command.tmp/ tstcmd-slashless")
(string-append "PATH=/bin:"
(assoc-ref %build-inputs "bash") "/bin:"
"${ZTST_testdir}/command.tmp/ tstcmd-slashless"))
;; Help it find `echo`
(("PATH=/bin:\\$\\{ZTST_testdir\\}/command.tmp tstcmd-arg")
(string-append "PATH=/bin:"
(assoc-ref %build-inputs "coreutils") "/bin:"
"PATH=/bin:${ZTST_testdir}/command.tmp tstcmd-arg"))))
#t)))))
(native-inputs `(("autoconf" ,autoconf)))
(inputs `(("ncurses" ,ncurses)

View file

@ -960,14 +960,14 @@ (define-public r-sendmailr
(define-public r-stringi
(package
(name "r-stringi")
(version "1.2.3")
(version "1.2.4")
(source
(origin
(method url-fetch)
(uri (cran-uri "stringi" version))
(sha256
(base32
"1sgg4krw03qkz1n4dwiya0djggk7giwd0w21qlp0pfjqi0rxq6qx"))))
"1y46xab7g1lsjmilp4hbl7pjad6pcxp66hdj8wnfdg9518h0lmq1"))))
(build-system r-build-system)
(inputs `(("icu4c" ,icu4c)))
(native-inputs `(("pkg-config" ,pkg-config)))
@ -1033,19 +1033,17 @@ (define-public r-reshape2
(define-public r-scales
(package
(name "r-scales")
(version "0.5.0")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "scales" version))
(sha256
(base32 "0zg9wfzmsdjxpbld0nzv7hcpq5r0wazqxmn7grvvif2agj0w1z6v"))))
(base32 "0353dkh3d7x78463c6ds80hcml59lrqwr8rlv82a8dnkxla4l7qc"))))
(build-system r-build-system)
(propagated-inputs
`(("r-dichromat" ,r-dichromat)
("r-labeling" ,r-labeling)
`(("r-labeling" ,r-labeling)
("r-munsell" ,r-munsell)
("r-plyr" ,r-plyr)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcpp" ,r-rcpp)
("r-r6" ,r-r6)
@ -1251,13 +1249,13 @@ (define-public r-bh
(define-public r-evaluate
(package
(name "r-evaluate")
(version "0.10.1")
(version "0.11")
(source (origin
(method url-fetch)
(uri (cran-uri "evaluate" version))
(sha256
(base32
"070vvmnbdlp7sz2zhza7fhd2a6mlwiln8fn4hyzhsiizbn4n79y9"))))
"1k8vcd4vsgg0hf7kdz8rlqp1dx4ygvg35aj4n3ay50kdnpzhaj5h"))))
(build-system r-build-system)
(propagated-inputs
`(("r-stringr" ,r-stringr)))
@ -1356,13 +1354,13 @@ (define-public r-markdown
(define-public r-yaml
(package
(name "r-yaml")
(version "2.1.19")
(version "2.2.0")
(source (origin
(method url-fetch)
(uri (cran-uri "yaml" version))
(sha256
(base32
"04bzrnfgbpk0rhkvzwp3k3ip7jpq26bjxz71bx5mwxmcjdb07nz5"))))
"0in562nd0i23cg91a8kdbqgim656fgscykwi0icsnq53xj3srg2m"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/yaml/")
(synopsis "Methods to convert R data to YAML and back")
@ -1656,14 +1654,14 @@ (define-public r-dplyr
(define-public r-dbplyr
(package
(name "r-dbplyr")
(version "1.2.1")
(version "1.2.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "dbplyr" version))
(sha256
(base32
"1nwrls9c3kc9q7405jp6b9sh23642sz13yw55iikgw134shffj5k"))))
"0j5w6a1qim972kv4vmvinp3j50yr4idmm9cd3w7y3zsz0nq0nhcx"))))
(build-system r-build-system)
(propagated-inputs
`(("r-assertthat" ,r-assertthat)
@ -1789,17 +1787,17 @@ (define-public r-data-table
(define-public r-xtable
(package
(name "r-xtable")
(version "1.8-2")
(version "1.8-3")
(source
(origin
(method url-fetch)
(uri (cran-uri "xtable" version))
(sha256
(base32
"0398qkpvlw3dv0myz4mjcyqwpwc2m31l127r8vdzwc71wb6s28qn"))))
"09f311gq9g7dzf8jdvcx72j11xb7p00jlg066jjbpa6pz3zv1cjk"))))
(build-system r-build-system)
(native-inputs
`(("r-knitr" ,r-knitr)))
`(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "http://xtable.r-forge.r-project.org/")
(synopsis "Export R tables to LaTeX or HTML")
(description
@ -1936,14 +1934,14 @@ (define-public r-coda
(define-public r-ade4
(package
(name "r-ade4")
(version "1.7-11")
(version "1.7-13")
(source
(origin
(method url-fetch)
(uri (cran-uri "ade4" version))
(sha256
(base32
"0wm54wcpn87rdh6vyw04cr8vgba899y6jsl61f22bmlvx6d7kkac"))))
"16z9jk4qj35ghsk4lwmq241dgc770y8a70dlmp9q4gz6d8ssgl7m"))))
(build-system r-build-system)
(propagated-inputs
`(("r-mass" ,r-mass)))
@ -2237,24 +2235,28 @@ (define-public r-commonmark
(define-public r-roxygen2
(package
(name "r-roxygen2")
(version "6.0.1")
(version "6.1.0")
(source (origin
(method url-fetch)
(uri (cran-uri "roxygen2" version))
(sha256
(base32
"0xpzziminf225kjwhyl51kgkzhplyzhk5farhf5s822krl2xqbfj"))))
"0ji9k4s1bvfbl8wimfqj1lqr33h1claaz30vb5pgksxyg77j5xaa"))))
(build-system r-build-system)
(propagated-inputs
`(("r-brew" ,r-brew)
("r-commonmark" ,r-commonmark)
("r-desc" ,r-desc)
("r-digest" ,r-digest)
("r-pkgload" ,r-pkgload)
("r-purrr" ,r-purrr)
("r-r6" ,r-r6)
("r-rcpp" ,r-rcpp)
("r-stringi" ,r-stringi)
("r-stringr" ,r-stringr)
("r-xml2" ,r-xml2)))
(native-inputs
`(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://github.com/klutometis/roxygen")
(synopsis "In-source documentation system for R")
(description
@ -2320,13 +2322,13 @@ (define-public r-httr
(define-public r-git2r
(package
(name "r-git2r")
(version "0.21.0")
(version "0.23.0")
(source (origin
(method url-fetch)
(uri (cran-uri "git2r" version))
(sha256
(base32
"11xgddmxzh9cy85k8fb90il43qswpvryz0h9r0j1gbclfg2f9004"))))
"01250jz255fnyy2ap90nskvzhd8nhlmbhwgpvb43mk1fax077lrz"))))
(build-system r-build-system)
;; This R package contains modified sources of libgit2. This modified
;; version of libgit2 is built as the package is built. Hence libgit2 is
@ -2335,6 +2337,8 @@ (define-public r-git2r
`(("libssh2" ,libssh2)
("openssl" ,openssl)
("zlib" ,zlib)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "https://github.com/ropensci/git2r")
(synopsis "Access Git repositories with R")
(description
@ -2514,13 +2518,13 @@ (define-public r-latticeextra
(define-public r-rcpparmadillo
(package
(name "r-rcpparmadillo")
(version "0.8.500.0")
(version "0.9.100.5.0")
(source (origin
(method url-fetch)
(uri (cran-uri "RcppArmadillo" version))
(sha256
(base32
"1sh36dx6inmb56m40nigy94gxlgjva816qnlmjwg7y2bdvqj8vsi"))))
"1iyjqhfjip1nxrkllzh7r1m01jjnx7cahqkf3s557w34p987f2l1"))))
(properties `((upstream-name . "RcppArmadillo")))
(build-system r-build-system)
(native-inputs
@ -2629,11 +2633,7 @@ (define-public r-rmarkdown
("r-stringr" ,r-stringr)
("r-tinytex" ,r-tinytex)
("r-yaml" ,r-yaml)
;; rmarkdown works with the 2.x release of Pandoc, but with degraded
;; functionality. For example, tabbed plots do not currently work with
;; Pandoc 2. The authors of rmarkdown recommend the use of Pandoc 1
;; for the time being.
("ghc-pandoc" ,ghc-pandoc-1)))
("ghc-pandoc" ,ghc-pandoc)))
(home-page "http://rmarkdown.rstudio.com")
(synopsis "Convert R Markdown documents into a variety of formats")
(description
@ -2799,13 +2799,13 @@ (define-public r-rcurl
(define-public r-xml
(package
(name "r-xml")
(version "3.98-1.11")
(version "3.98-1.16")
(source (origin
(method url-fetch)
(uri (cran-uri "XML" version))
(sha256
(base32
"18izvlg2x9mzr6yb3yf02ghwbyn00frki3av4lpc44r22m4djnsh"))))
"0nl1kk354r8snhj6p9mc74m7awvqc6akmd4y3a46y78yv3g15njp"))))
(properties
`((upstream-name . "XML")))
(build-system r-build-system)
@ -3281,14 +3281,14 @@ (define-public r-rtsne
(define-public r-e1071
(package
(name "r-e1071")
(version "1.6-8")
(version "1.7-0")
(source
(origin
(method url-fetch)
(uri (cran-uri "e1071" version))
(sha256
(base32
"08n6i26nfckjpxjkzi8phhanc3ahsrirkv5rz38y2jcv7ds031pn"))))
"0fk4pw67cw1663d0n9rf1qfdqzz8k5nqkjgp3hi5jr422qp9lsck"))))
(build-system r-build-system)
(propagated-inputs
`(("r-class" ,r-class)))
@ -3459,13 +3459,13 @@ (define-public r-r-oo
(define-public r-r-utils
(package
(name "r-r-utils")
(version "2.6.0")
(version "2.7.0")
(source (origin
(method url-fetch)
(uri (cran-uri "R.utils" version))
(sha256
(base32
"03j7hrs03kyj9qrjxyp5kqv4lpqqpk6xwbkzx6j15d8928yrjr2x"))))
"0cxhn14a57x4gcyrwpfz1d6dw4xh0jcpqkb33hx8imnr340blh7n"))))
(properties `((upstream-name . "R.utils")))
(build-system r-build-system)
(propagated-inputs
@ -3507,13 +3507,13 @@ (define-public r-r-cache
(define-public r-r-rsp
(package
(name "r-r-rsp")
(version "0.42.0")
(version "0.43.0")
(source (origin
(method url-fetch)
(uri (cran-uri "R.rsp" version))
(sha256
(base32
"1zcq0hzi0j7fvj2rs796a1i120wbr0387vck17rrd644awwbsbm0"))))
"0ax6781kfylx0acz0i3sqnpkxmrq73x29wwfic59ng7vj0ws0gyd"))))
(properties `((upstream-name . "R.rsp")))
(build-system r-build-system)
(propagated-inputs
@ -3558,13 +3558,13 @@ (define-public r-mvtnorm
(define-public r-matrixstats
(package
(name "r-matrixstats")
(version "0.53.1")
(version "0.54.0")
(source (origin
(method url-fetch)
(uri (cran-uri "matrixStats" version))
(sha256
(base32
"0bkiz5fm09d3512mfr2ymj9qsb1b8aic5l5m6fkaf5j7nsgvqw6z"))))
"0vx00ldsg2zvdrjn49jxczk2c9iaabgvzgpdka5j02ihh7hv83cg"))))
(properties `((upstream-name . "matrixStats")))
(build-system r-build-system)
(native-inputs
@ -3739,13 +3739,13 @@ (define-public r-purrr
(define-public r-plotly
(package
(name "r-plotly")
(version "4.7.1")
(version "4.8.0")
(source (origin
(method url-fetch)
(uri (cran-uri "plotly" version))
(sha256
(base32
"0wj9lw7w28z8w9ip9vadv6sydjhqyg65kfiai9m3bndzz50b1m3w"))))
"19p8pa03q9mw5vaan7r56xgd13d90ssiz0flbrkvpfrir2105ybq"))))
(build-system r-build-system)
(propagated-inputs
`(("r-base64enc" ,r-base64enc)
@ -3761,8 +3761,10 @@ (define-public r-plotly
("r-jsonlite" ,r-jsonlite)
("r-lazyeval" ,r-lazyeval)
("r-magrittr" ,r-magrittr)
("r-promises" ,r-promises)
("r-purrr" ,r-purrr)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rlang" ,r-rlang)
("r-scales" ,r-scales)
("r-tibble" ,r-tibble)
("r-tidyr" ,r-tidyr)
@ -3844,14 +3846,14 @@ (define-public r-cellranger
(define-public r-googlesheets
(package
(name "r-googlesheets")
(version "0.2.2")
(version "0.3.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "googlesheets" version))
(sha256
(base32
"18q0xmxn09b52rmky7gr5flp0awndcnsgb7zcvkzvkrkvmwad52b"))))
"11q07nxys72wkxx9mawmjyf20gvwvrb7h3gpa73h6lgh2vgrwnv8"))))
(build-system r-build-system)
(propagated-inputs
`(("r-cellranger" ,r-cellranger)
@ -3861,6 +3863,7 @@ (define-public r-googlesheets
("r-purrr" ,r-purrr)
("r-readr" ,r-readr)
("r-stringr" ,r-stringr)
("r-tibble" ,r-tibble)
("r-tidyr" ,r-tidyr)
("r-xml2" ,r-xml2)))
(home-page "https://github.com/jennybc/googlesheets")
@ -4088,14 +4091,14 @@ (define-public r-sfsmisc
(define-public r-gtools
(package
(name "r-gtools")
(version "3.5.0")
(version "3.8.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "gtools" version))
(sha256
(base32
"1xknwk9xlsj027pg0nwiizigcrsc84hdrig0jn0cgcyxj8dabdl6"))))
"0f5syk1qq6cjq6hwymvkiyhzwa389z94722v881ipbfqkd2q8505"))))
(build-system r-build-system)
(arguments
`(#:phases
@ -4228,13 +4231,13 @@ (define-public r-rocr
(define-public r-zoo
(package
(name "r-zoo")
(version "1.8-2")
(version "1.8-3")
(source (origin
(method url-fetch)
(uri (cran-uri "zoo" version))
(sha256
(base32
"1lpwigxmi5sc23xrha4gcsccsm4yfsg0sa97y6vac3pg1lliblvx"))))
"15jmkgwvq2mm9f09vijgx7sff8pszh90fndcwhk2vw9i0p183di0"))))
(build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
@ -4248,14 +4251,22 @@ (define-public r-zoo
(define-public r-ztable
(package
(name "r-ztable")
(version "0.1.8")
(version "0.2.0")
(source (origin
(method url-fetch)
(uri (cran-uri "ztable" version))
(sha256
(base32
"1hk5k9614n52dpfrhdws06w4gvwhnz8q47x4cwxx88qmrzm8z2m3"))))
"0g7khk5ifsdh9p31wlwh2l5mn1hzxzpv6qcn1wh34vsfjdmijjwy"))))
(build-system r-build-system)
(propagated-inputs
`(("r-flextable" ,r-flextable)
("r-magrittr" ,r-magrittr)
("r-moonbook" ,r-moonbook)
("r-officer" ,r-officer)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-scales" ,r-scales)
("r-stringr" ,r-stringr)))
(home-page "https://cran.r-project.org/web/packages/ztable")
(synopsis "Zebra-striped tables in LaTeX and HTML formats for R")
(description
@ -4350,19 +4361,20 @@ (define-public r-ggbeeswarm
(define-public r-ggthemes
(package
(name "r-ggthemes")
(version "3.5.0")
(version "4.0.1")
(source (origin
(method url-fetch)
(uri (cran-uri "ggthemes" version))
(sha256
(base32
"0drbzzb4i5jq1579fx1wmgh87ybnswjn7srak2l8g771ip49xwb8"))))
"0y6570wv135sf7pv57l7bqilzw47rziaqx4vsk45pf1w4lmj0w8b"))))
(build-system r-build-system)
(propagated-inputs
`(("r-assertthat" ,r-assertthat)
("r-colorspace" ,r-colorspace)
("r-ggplot2" ,r-ggplot2)
("r-scales" ,r-scales)))
`(("r-ggplot2" ,r-ggplot2)
("r-purrr" ,r-purrr)
("r-scales" ,r-scales)
("r-stringr" ,r-stringr)
("r-tibble" ,r-tibble)))
(home-page "https://cran.rstudio.com/web/packages/ggthemes")
(synopsis "Extra themes, scales and geoms for @code{ggplot2}")
(description "This package provides extra themes and scales for
@ -4401,13 +4413,13 @@ (define-public r-statmod
(define-public r-rann
(package
(name "r-rann")
(version "2.5.1")
(version "2.6")
(source (origin
(method url-fetch)
(uri (cran-uri "RANN" version))
(sha256
(base32
"0il5i99vbcagnxvb15af5n37g04a4q1x96bz73zh3jhki9fpw9vm"))))
"1r6rivh9ba4gwnzryip0aiwsbm46zma7nvd9z5y456p2dgzp9lii"))))
(properties
`((upstream-name . "RANN")))
(build-system r-build-system)
@ -4723,14 +4735,14 @@ (define-public r-deoptimr
(define-public r-robustbase
(package
(name "r-robustbase")
(version "0.93-0")
(version "0.93-2")
(source
(origin
(method url-fetch)
(uri (cran-uri "robustbase" version))
(sha256
(base32
"130pzibn5cb8mycv8byc6npzcpddghz8m7jqwk15qmx4g3cj8zgy"))))
"1632p73iv9iqqm0v3k9rfv9way0him3fl35si1nly9wi5kpq5ci7"))))
(build-system r-build-system)
(inputs
`(("gfortran" ,gfortran)))
@ -4999,18 +5011,19 @@ (define-public r-rcppeigen
(define-public r-modelmetrics
(package
(name "r-modelmetrics")
(version "1.1.0")
(version "1.2.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "ModelMetrics" version))
(sha256
(base32
"119xxmzb5biq7k1yxqsf0jmmarmfn6lds9x9hfgv593xlpym6za8"))))
"1sgdyrf6fbsn18gk8slir4a1yhv133kfhyg2crfs759nff4aw89h"))))
(properties `((upstream-name . "ModelMetrics")))
(build-system r-build-system)
(propagated-inputs
`(("r-rcpp" ,r-rcpp)))
`(("r-rcpp" ,r-rcpp)
("r-data-table" ,r-data-table)))
(home-page "https://cran.r-project.org/web/packages/ModelMetrics")
(synopsis "Rapid calculation of model metrics")
(description

View file

@ -86,14 +86,14 @@ (define-public dillo
(define-public links
(package
(name "links")
(version "2.16")
(version "2.17")
(source (origin
(method url-fetch)
(uri (string-append "http://links.twibright.com/download/"
name "-" version ".tar.bz2"))
(sha256
(base32
"0gsa2gpb1grhssl5jzpc5pa0zi21mxi8g25rh5bacl70slw31w42"))))
"0dh2gbzcw8kxy81z4ggsynibnqs56b83vy8qgz7illsag1irff6q"))))
(build-system gnu-build-system)
(arguments
`(#:phases

View file

@ -3823,15 +3823,17 @@ (define-public python2-feedparser
(define-public r-httpuv
(package
(name "r-httpuv")
(version "1.4.4.1")
(version "1.4.5")
(source (origin
(method url-fetch)
(uri (cran-uri "httpuv" version))
(sha256
(base32
"12kwq10xa8glrip7rai9xb4hnpysng00g2l0rw7swfzq5lk4z966"))))
"1ddpcarzf694h0gy5pdz7l5glqfv4hr9dmxb4vw7yqd0bga174gi"))))
(build-system r-build-system)
(native-inputs `(("r-rcpp" ,r-rcpp)))
(native-inputs
`(("r-rcpp" ,r-rcpp)
("pkg-config" ,pkg-config)))
(propagated-inputs
`(("r-bh" ,r-bh)
("r-later" ,r-later)
@ -6706,10 +6708,11 @@ (define-public nghttp2
(license l:expat)))
(define-public hpcguix-web
(let ((commit "87cb51611c0f1fd3863b830614ab1364599cf1ca"))
(let ((commit "9ff40fcc77f248901d861756dbbddc80270c380c")
(revision "2"))
(package
(name "hpcguix-web")
(version (git-version "0.0.1" "1" commit))
(version (git-version "0.0.1" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
@ -6718,7 +6721,7 @@ (define-public hpcguix-web
(file-name (git-file-name name version))
(sha256
(base32
"0p66fl8r3v73v13fqg9rbqbzbdzvyznchxbq2s1jwq6qfsn2w3gr"))))
"0lxcj9s3wxrv1l7lrxxx374jwzx7h60gxwkbgr46lzcbgvb3k26s"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
@ -6739,10 +6742,13 @@ (define-public hpcguix-web
(let* ((out (assoc-ref outputs "out"))
(guix (assoc-ref inputs "guix"))
(guile (assoc-ref inputs "guile"))
(gcrypt (assoc-ref inputs "guile-gcrypt"))
(git (assoc-ref inputs "guile-git"))
(bs (assoc-ref inputs "guile-bytestructures"))
(json (assoc-ref inputs "guile-json"))
(guile-cm (assoc-ref inputs
"guile-commonmark"))
(deps (list guile guile-cm guix json))
(deps (list guile gcrypt git bs guile-cm guix json))
(effective
(read-line
(open-pipe* OPEN_READ

View file

@ -17,6 +17,7 @@
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -6170,3 +6171,44 @@ (define-public keynav
cursor to any point on the screen with a few key strokes. It also simulates
mouse click. You can do everything mouse can do with a keyboard.")
(license license:bsd-3)))
(define-public transset-df
(package
(name "transset-df")
(version "6")
(source (origin
(method url-fetch)
(uri (string-append "http://forchheimer.se/" name "/" name "-" version
".tar.gz"))
(sha256
(base32
"1vnykwwrv75miigbhmcwxniw8xnhsdyzhqydip2m9crxi2lwhqs5"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'setenv
(lambda _
(setenv "CC" (which "gcc"))
#t))
(delete 'configure)
(delete 'check)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(install-file "transset-df" bin)
#t))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs `(("libxcomposite" ,libxcomposite)
("libxdamager" ,libxdamage)
("libxrender" ,libxrender)))
(synopsis "Set the transparency of X11 windows")
(description "The @command{transset-df} command allows you to set the
opacity of X11 windows. This patched version of X.Org's @command{transset}
adds functionality, including: selecting window by clicking (as transset),
selecting windows by pointing select actual focused X11 window, selecting by
window name or id, forcing toggle, increase or decrease opacity.")
(home-page "http://forchheimer.se/transset-df/")
(license license:x11)))

View file

@ -732,13 +732,23 @@ (define target-type
instances
(service-type-extensions (service-kind svc))))
(let ((instances (fold (lambda (service result)
(vhash-consq (service-kind service) service
result))
vlist-null services)))
(fold2 adjust-service-list
services instances
services)))
(let loop ((services services))
(define instances
(fold (lambda (service result)
(vhash-consq (service-kind service) service
result))
vlist-null services))
(define adjusted
(fold2 adjust-service-list
services instances
services))
;; If we instantiated services, they might in turn depend on missing
;; services. Loop until we've reached fixed point.
(if (= (length adjusted) (vlist-length instances))
adjusted
(loop adjusted))))
(define* (fold-services services
#:key (target-type system-service-type))

View file

@ -608,16 +608,14 @@ (define (nginx-shepherd-service config)
(default-nginx-config config))
#$@args)
(match '#$args
(("-s" . _) #t)
(("-s" . _) #f)
(_
(let loop ((duration 0))
;; https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864/comments/7
(sleep duration)
(if (file-exists? #$pid-file)
(let ((pid (call-with-input-file #$pid-file read)))
;; it could be #<eof>
(if (integer? pid) pid (loop 1)))
(loop 1)))))))))
;; When FILE is true, we cannot be sure that PID-FILE will
;; be created, so assume it won't show up. When FILE is
;; false, read PID-FILE.
#$(if file
#~#t
#~(read-pid-file #$pid-file))))))))
;; TODO: Add 'reload' action.
(list (shepherd-service
@ -967,7 +965,8 @@ (define (hpcguix-web-shepherd-service config)
#:user "hpcguix-web"
#:group "hpcguix-web"
#:environment-variables
(list "XDG_CACHE_HOME=/var/cache")))
(list "XDG_CACHE_HOME=/var/cache"
"SSL_CERT_DIR=/etc/ssl/certs")))
(stop #~(make-kill-destructor))))))
(define hpcguix-web-service-type

View file

@ -32,7 +32,7 @@ (define-module (gnu system vm)
#:use-module (guix modules)
#:use-module (guix scripts pack)
#:use-module (guix utils)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module ((guix self) #:select (make-config.scm))
@ -43,7 +43,7 @@ (define-module (gnu system vm)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages compression)
#:use-module (gnu packages guile)
#:autoload (gnu packages gnupg) (libgcrypt)
#:autoload (gnu packages gnupg) (guile-gcrypt)
#:use-module (gnu packages gawk)
#:use-module (gnu packages bash)
#:use-module (gnu packages less)
@ -124,10 +124,12 @@ (define not-config?
(('gnu rest ...) #t)
(rest #f)))
(define guile-sqlite3&co
;; Guile-SQLite3 and its propagated inputs.
(cons guile-sqlite3
(package-transitive-propagated-inputs guile-sqlite3)))
(define gcrypt-sqlite3&co
;; Guile-Gcrypt, Guile-SQLite3, and their propagated inputs.
(append-map (lambda (package)
(cons package
(package-transitive-propagated-inputs package)))
(list guile-gcrypt guile-sqlite3)))
(define* (expression->derivation-in-linux-vm name exp
#:key
@ -164,10 +166,6 @@ (define* (expression->derivation-in-linux-vm name exp
When REFERENCES-GRAPHS is true, it must be a list of file name/store path
pairs, as for `derivation'. The files containing the reference graphs are
made available under the /xchg CIFS share."
(define config
;; (guix config) module for consumption by (guix gcrypt).
(make-config.scm #:libgcrypt libgcrypt))
(define user-builder
(program-file "builder-in-linux-vm" exp))
@ -195,12 +193,14 @@ (define loader
(define builder
;; Code that launches the VM that evaluates EXP.
(with-extensions guile-sqlite3&co
(with-extensions gcrypt-sqlite3&co
(with-imported-modules `(,@(source-module-closure
'((guix build utils)
(gnu build vm))
#:select? not-config?)
((guix config) => ,config))
;; For consumption by (gnu store database).
((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (guix build utils)
(gnu build vm))
@ -255,9 +255,6 @@ (define* (iso9660-image #:key
"Return a bootable, stand-alone iso9660 image.
INPUTS is a list of inputs (as for packages)."
(define config
(make-config.scm #:libgcrypt libgcrypt))
(define schema
(and register-closures?
(local-file (search-path %load-path
@ -265,12 +262,12 @@ (define schema
(expression->derivation-in-linux-vm
name
(with-extensions guile-sqlite3&co
(with-extensions gcrypt-sqlite3&co
(with-imported-modules `(,@(source-module-closure '((gnu build vm)
(guix store database)
(guix build utils))
#:select? not-config?)
((guix config) => ,config))
((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (gnu build vm)
(guix store database)
@ -347,9 +344,6 @@ (define* (qemu-image #:key
all of INPUTS into the image being built. When REGISTER-CLOSURES? is true,
register INPUTS in the store database of the image so that Guix can be used in
the image."
(define config
(make-config.scm #:libgcrypt libgcrypt))
(define schema
(and register-closures?
(local-file (search-path %load-path
@ -357,13 +351,13 @@ (define schema
(expression->derivation-in-linux-vm
name
(with-extensions guile-sqlite3&co
(with-extensions gcrypt-sqlite3&co
(with-imported-modules `(,@(source-module-closure '((gnu build vm)
(gnu build bootloader)
(guix store database)
(guix build utils))
#:select? not-config?)
((guix config) => ,config))
((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (gnu build bootloader)
(gnu build vm)
@ -462,10 +456,6 @@ (define* (system-docker-image os
installed inside of it. If you don't need Guix (e.g., your GuixSD Docker
image just contains a web server that is started by the Shepherd), then you
should set REGISTER-CLOSURES? to #f."
(define config
;; (guix config) module for consumption by (guix gcrypt).
(make-config.scm #:libgcrypt libgcrypt))
(define schema
(and register-closures?
(local-file (search-path %load-path
@ -475,8 +465,8 @@ (define schema
(name -> (string-append name ".tar.gz"))
(graph -> "system-graph"))
(define build
(with-extensions (cons guile-json ;for (guix docker)
guile-sqlite3&co) ;for (guix store database)
(with-extensions (cons guile-json ;for (guix docker)
gcrypt-sqlite3&co) ;for (guix store database)
(with-imported-modules `(,@(source-module-closure
'((guix docker)
(guix store database)
@ -484,7 +474,7 @@ (define build
(guix build store-copy)
(gnu build vm))
#:select? not-config?)
((guix config) => ,config))
((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (guix docker)
(guix build utils)
@ -539,17 +529,42 @@ (define build
(define* (operating-system-uuid os #:optional (type 'dce))
"Compute UUID object with a deterministic \"UUID\" for OS, of the given
TYPE (one of 'iso9660 or 'dce). Return a UUID object."
;; Note: For this to be deterministic, we must not hash things that contains
;; (directly or indirectly) procedures, for example. That rules out
;; anything that contains gexps, thunk or delayed record fields, etc.
(define service-name
(compose service-type-name service-kind))
(define (file-system-digest fs)
;; Return a hashable digest that does not contain 'dependencies' since
;; this field can contain procedures.
(let ((device (file-system-device fs)))
(list (file-system-mount-point fs)
(file-system-type fs)
(cond ((file-system-label? device)
(file-system-label->string device))
((uuid? device)
(uuid->string device))
((string? device)
device)
(else #f))
(file-system-options fs))))
(if (eq? type 'iso9660)
(let ((pad (compose (cut string-pad <> 2 #\0)
number->string))
(h (hash (operating-system-services os) 3600)))
(h (hash (map service-name (operating-system-services os))
3600)))
(bytevector->uuid
(string->iso9660-uuid
(string-append "1970-01-01-"
(pad (hash (operating-system-host-name os) 24)) "-"
(pad (quotient h 60)) "-"
(pad (modulo h 60)) "-"
(pad (hash (operating-system-file-systems os) 100))))
(pad (hash (map file-system-digest
(operating-system-file-systems os))
100))))
'iso9660))
(bytevector->uuid
(uint-list->bytevector
@ -557,9 +572,9 @@ (define* (operating-system-uuid os #:optional (type 'dce))
(- (expt 2 32) 1))
(hash (operating-system-host-name os)
(- (expt 2 32) 1))
(hash (operating-system-services os)
(hash (map service-name (operating-system-services os))
(- (expt 2 32) 1))
(hash (operating-system-file-systems os)
(hash (map file-system-digest (operating-system-file-systems os))
(- (expt 2 32) 1)))
(endianness little)
4)

View file

@ -42,6 +42,7 @@ (define-module (gnu tests base)
#:use-module (guix monads)
#:use-module (guix packages)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:export (run-basic-test
%test-basic-os
%test-halt
@ -68,6 +69,11 @@ (define special-files
(fold-services (operating-system-services os)
#:target-type special-files-service-type)))
(define guix&co
(match (package-transitive-propagated-inputs guix)
(((labels packages) ...)
(cons guix packages))))
(define test
(with-imported-modules '((gnu build marionette)
(guix build syscalls))
@ -345,8 +351,14 @@ (define (entry->list entry)
'success!
(marionette-eval '(begin
;; Make sure the (guix …) modules are found.
(add-to-load-path
#+(file-append guix "/share/guile/site/2.2"))
(eval-when (expand load eval)
(set! %load-path
(append (map (lambda (package)
(string-append package
"/share/guile/site/"
(effective-version)))
'#$guix&co)
%load-path)))
(use-modules (srfi srfi-34) (guix store))

View file

@ -48,7 +48,7 @@ (define-module (guix channels)
latest-channel-instances
channel-instance-derivations
latest-channel-derivations
latest-channel-derivation
channel-instances->manifest))
;;; Commentary:
@ -78,7 +78,7 @@ (define %default-channels
;; Default list of channels.
(list (channel
(name 'guix)
(branch "origin/master")
(branch "master")
(url "https://git.savannah.gnu.org/git/guix.git"))))
(define (guix-channel? channel)
@ -207,23 +207,20 @@ (define core-instance
(guix-channel? (channel-instance-channel instance)))
instances))
;; Guile-Gcrypt is a dependency of CORE-INSTANCE.
(define guile-gcrypt
(module-ref (resolve-interface '(gnu packages gnupg))
'guile-gcrypt))
(mlet %store-monad ((core (build-channel-instance core-instance)))
(mapm %store-monad
(lambda (instance)
(if (eq? instance core-instance)
(return core)
(build-channel-instance instance
(list core))))
(list core guile-gcrypt))))
instances)))
(define latest-channel-derivations
(let ((latest-channel-instances (store-lift latest-channel-instances)))
(lambda (channels)
"Return, as a monadic value, the list of derivations for the latest
instances of CHANNELS."
(mlet %store-monad ((instances (latest-channel-instances channels)))
(channel-instance-derivations instances)))))
(define (whole-package-for-legacy name modules)
"Return a full-blown Guix package for MODULES, a derivation that builds Guix
modules in the old ~/.config/guix/latest style."
@ -290,3 +287,14 @@ (define instance->entry
(entries (mapm %store-monad instance->entry
(zip instances derivations))))
(return (manifest entries))))
(define latest-channel-instances*
(store-lift latest-channel-instances))
(define* (latest-channel-derivation #:optional (channels %default-channels))
"Return as a monadic value the derivation that builds the profile for the
latest instances of CHANNELS."
(mlet* %store-monad ((instances ((store-lift latest-channel-instances)
channels))
(manifest (channel-instances->manifest instances)))
(profile-derivation manifest)))

View file

@ -35,7 +35,7 @@ (define-module (guix derivations)
#:use-module (guix memoization)
#:use-module (guix combinators)
#:use-module (guix monads)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix records)
#:use-module (guix sets)

View file

@ -21,7 +21,9 @@ (define-module (guix describe)
#:use-module (guix profiles)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:export (package-path-entries))
#:export (current-profile
current-profile-entries
package-path-entries))
;;; Commentary:
;;;

View file

@ -19,7 +19,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix docker)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base16)
#:use-module ((guix build utils)
#:select (mkdir-p

View file

@ -1,49 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix gcrypt)
#:use-module (guix config)
#:use-module (system foreign)
#:export (gcrypt-version
libgcrypt-func))
;;; Commentary:
;;;
;;; Common code for the GNU Libgcrypt bindings. Loading this module
;;; initializes Libgcrypt as a side effect.
;;;
;;; Code:
(define libgcrypt-func
(let ((lib (dynamic-link %libgcrypt)))
(lambda (func)
"Return a pointer to symbol FUNC in libgcrypt."
(dynamic-func func lib))))
(define gcrypt-version
;; According to the manual, this function must be called before any other,
;; and it's not clear whether it can be called more than once. So call it
;; right here from the top level.
(let* ((ptr (libgcrypt-func "gcry_check_version"))
(proc (pointer->procedure '* ptr '(*)))
(version (pointer->string (proc %null-pointer))))
(lambda ()
"Return the version number of libgcrypt as a string."
version)))
;;; gcrypt.scm ends here

View file

@ -1417,26 +1417,31 @@ (define (file-union name files)
`((\"hosts\" ,(plain-file \"hosts\"
\"127.0.0.1 localhost\"))
(\"bashrc\" ,(plain-file \"bashrc\"
\"alias ls='ls --color'\"))))
\"alias ls='ls --color'\"))
(\"libvirt/qemu.conf\" ,(plain-file \"qemu.conf\" \"\"))))
This yields an 'etc' directory containing these two files."
(computed-file name
(gexp
(begin
(mkdir (ungexp output))
(chdir (ungexp output))
(ungexp-splicing
(map (match-lambda
((target source)
(gexp
(begin
;; Stat the source to abort early if it does
;; not exist.
(stat (ungexp source))
(with-imported-modules '((guix build utils))
(gexp
(begin
(use-modules (guix build utils))
(symlink (ungexp source)
(ungexp target))))))
files))))))
(mkdir (ungexp output))
(chdir (ungexp output))
(ungexp-splicing
(map (match-lambda
((target source)
(gexp
(begin
;; Stat the source to abort early if it does
;; not exist.
(stat (ungexp source))
(mkdir-p (dirname (ungexp target)))
(symlink (ungexp source)
(ungexp target))))))
files)))))))
(define* (directory-union name things
#:key (copy? #f) (quiet? #f)

View file

@ -21,7 +21,7 @@ (define-module (guix git)
#:use-module (git)
#:use-module (git object)
#:use-module (guix base32)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module ((guix build utils) #:select (mkdir-p))
#:use-module (guix store)
#:use-module (guix utils)
@ -112,7 +112,7 @@ (define obj
(define* (update-cached-checkout url
#:key
(ref '(branch . "origin/master"))
(ref '(branch . "master"))
(cache-directory
(url-cache-directory
url (%repository-cache-directory))))
@ -122,6 +122,17 @@ (define* (update-cached-checkout url
REF is pair whose key is [branch | commit | tag] and value the associated
data, respectively [<branch name> | <sha1> | <tag name>]."
(define canonical-ref
;; We used to require callers to specify "origin/" for each branch, which
;; made little sense since the cache should be transparent to them. So
;; here we append "origin/" if it's missing and otherwise keep it.
(match ref
(('branch . branch)
`(branch . ,(if (string-prefix? "origin/" branch)
branch
(string-append "origin/" branch))))
(_ ref)))
(with-libgit2
(let* ((cache-exists? (openable-repository? cache-directory))
(repository (if cache-exists?
@ -130,7 +141,7 @@ (define* (update-cached-checkout url
;; Only fetch remote if it has not been cloned just before.
(when cache-exists?
(remote-fetch (remote-lookup repository "origin")))
(let ((oid (switch-to-ref repository ref)))
(let ((oid (switch-to-ref repository canonical-ref)))
;; Reclaim file descriptors and memory mappings associated with
;; REPOSITORY as soon as possible.
@ -144,7 +155,7 @@ (define* (latest-repository-commit store url
#:key
(cache-directory
(%repository-cache-directory))
(ref '(branch . "origin/master")))
(ref '(branch . "master")))
"Return two values: the content of the git repository at URL copied into a
store directory and the sha1 of the top level commit in this directory. The
reference to be checkout, once the repository is fetched, is specified by REF.

View file

@ -1,184 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix hash)
#:use-module (guix gcrypt)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 binary-ports)
#:use-module (system foreign)
#:use-module ((guix build utils) #:select (dump-port))
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:export (sha1
sha256
open-sha256-port
port-sha256
file-sha256
open-sha256-input-port))
;;; Commentary:
;;;
;;; Cryptographic hashes.
;;;
;;; Code:
;;;
;;; Hash.
;;;
(define-syntax GCRY_MD_SHA256
;; Value as of Libgcrypt 1.5.2.
(identifier-syntax 8))
(define-syntax GCRY_MD_SHA1
(identifier-syntax 2))
(define bytevector-hash
(let ((hash (pointer->procedure void
(libgcrypt-func "gcry_md_hash_buffer")
`(,int * * ,size_t))))
(lambda (bv type size)
"Return the hash TYPE, of SIZE bytes, of BV as a bytevector."
(let ((digest (make-bytevector size)))
(hash type (bytevector->pointer digest)
(bytevector->pointer bv) (bytevector-length bv))
digest))))
(define sha1
(cut bytevector-hash <> GCRY_MD_SHA1 20))
(define sha256
(cut bytevector-hash <> GCRY_MD_SHA256 (/ 256 8)))
(define open-sha256-md
(let ((open (pointer->procedure int
(libgcrypt-func "gcry_md_open")
`(* ,int ,unsigned-int))))
(lambda ()
(let* ((md (bytevector->pointer (make-bytevector (sizeof '*))))
(err (open md GCRY_MD_SHA256 0)))
(if (zero? err)
(dereference-pointer md)
(throw 'gcrypt-error err))))))
(define md-write
(pointer->procedure void
(libgcrypt-func "gcry_md_write")
`(* * ,size_t)))
(define md-read
(pointer->procedure '*
(libgcrypt-func "gcry_md_read")
`(* ,int)))
(define md-close
(pointer->procedure void
(libgcrypt-func "gcry_md_close")
'(*)))
(define (open-sha256-port)
"Return two values: an output port, and a thunk. When the thunk is called,
it returns the SHA256 hash (a bytevector) of all the data written to the
output port."
(define sha256-md
(open-sha256-md))
(define digest #f)
(define position 0)
(define (finalize!)
(let ((ptr (md-read sha256-md 0)))
(set! digest (bytevector-copy (pointer->bytevector ptr 32)))
(md-close sha256-md)))
(define (write! bv offset len)
(if (zero? len)
(begin
(finalize!)
0)
(let ((ptr (bytevector->pointer bv offset)))
(md-write sha256-md ptr len)
(set! position (+ position len))
len)))
(define (get-position)
position)
(define (close)
(unless digest
(finalize!)))
(values (make-custom-binary-output-port "sha256"
write! get-position #f
close)
(lambda ()
(unless digest
(finalize!))
digest)))
(define (port-sha256 port)
"Return the SHA256 hash (a bytevector) of all the data drained from PORT."
(let-values (((out get)
(open-sha256-port)))
(dump-port port out)
(close-port out)
(get)))
(define (file-sha256 file)
"Return the SHA256 hash (a bytevector) of FILE."
(call-with-input-file file port-sha256))
(define (open-sha256-input-port port)
"Return an input port that wraps PORT and a thunk to get the hash of all the
data read from PORT. The thunk always returns the same value."
(define md
(open-sha256-md))
(define (read! bv start count)
(let ((n (get-bytevector-n! port bv start count)))
(if (eof-object? n)
0
(begin
(unless digest
(let ((ptr (bytevector->pointer bv start)))
(md-write md ptr n)))
n))))
(define digest #f)
(define (finalize!)
(let ((ptr (md-read md 0)))
(set! digest (bytevector-copy (pointer->bytevector ptr 32)))
(md-close md)))
(define (get-hash)
(unless digest
(finalize!))
digest)
(define (unbuffered port)
;; Guile <= 2.0.9 does not support 'setvbuf' on custom binary input ports.
(setvbuf port _IONBF)
port)
(values (unbuffered (make-custom-binary-input-port "sha256" read! #f #f #f))
get-hash))
;;; hash.scm ends here

View file

@ -34,7 +34,7 @@ (define-module (guix http-client)
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix base64)
#:autoload (guix hash) (sha256)
#:autoload (gcrypt hash) (sha256)
#:use-module ((guix build utils)
#:select (mkdir-p dump-port))
#:use-module ((guix build download)

View file

@ -27,7 +27,7 @@ (define-module (guix import cpan)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (json)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix base32)

View file

@ -29,7 +29,7 @@ (define-module (guix import cran)
#:use-module (web uri)
#:use-module (guix memoization)
#:use-module (guix http-client)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix store)
#:use-module (guix base32)
#:use-module ((guix download) #:select (download-to-store))

View file

@ -20,7 +20,7 @@ (define-module (guix import crate)
#:use-module (guix base32)
#:use-module (guix build-system cargo)
#:use-module ((guix download) #:prefix download:)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix http-client)
#:use-module (guix import json)
#:use-module (guix import utils)

View file

@ -32,7 +32,7 @@ (define-module (guix import elpa)
#:use-module (guix http-client)
#:use-module (guix store)
#:use-module (guix ui)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix upstream)
#:use-module (guix packages)

View file

@ -21,7 +21,7 @@ (define-module (guix import gnu)
#:use-module (guix import utils)
#:use-module (guix utils)
#:use-module (guix store)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix upstream)
#:use-module (srfi srfi-1)

View file

@ -33,7 +33,7 @@ (define-module (guix import hackage)
#:use-module ((guix import utils) #:select (factorize-uri recursive-import))
#:use-module (guix import cabal)
#:use-module (guix store)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix memoization)
#:use-module (guix upstream)

View file

@ -26,7 +26,7 @@ (define-module (guix import texlive)
#:use-module (srfi srfi-34)
#:use-module (web uri)
#:use-module (guix http-client)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix memoization)
#:use-module (guix store)
#:use-module (guix base32)

View file

@ -23,7 +23,7 @@
(define-module (guix import utils)
#:use-module (guix base32)
#:use-module ((guix build download) #:prefix build:)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix http-client)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)

View file

@ -19,6 +19,7 @@
(define-module (guix inferior)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
#:use-module ((guix utils) #:select (source-properties->location))
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
#:export (inferior?
@ -33,7 +34,9 @@ (define-module (guix inferior)
inferior-packages
inferior-package-synopsis
inferior-package-description))
inferior-package-description
inferior-package-home-page
inferior-package-location))
;;; Commentary:
;;;
@ -198,3 +201,18 @@ (define* (inferior-package-description package #:key (translate? #t))
(if translate?
'(compose (@ (guix ui) P_) package-description)
'package-description)))
(define (inferior-package-home-page package)
"Return the home page of PACKAGE."
(inferior-package-field package 'package-home-page))
(define (inferior-package-location package)
"Return the source code location of PACKAGE, either #f or a <location>
record."
(source-properties->location
(inferior-package-field package
'(compose (lambda (loc)
(and loc
(location->source-properties
loc)))
package-location))))

View file

@ -25,9 +25,9 @@ (define-module (guix nar)
#:use-module (guix store)
#:use-module (guix store database)
#:use-module (guix ui) ; for '_'
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix pki)
#:use-module (guix pk-crypto)
#:use-module (gcrypt pk-crypto)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)

View file

@ -1,407 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix pk-crypto)
#:use-module (guix base16)
#:use-module (guix gcrypt)
#:use-module (system foreign)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
#:export (canonical-sexp?
error-source
error-string
string->canonical-sexp
canonical-sexp->string
read-file-sexp
number->canonical-sexp
canonical-sexp-car
canonical-sexp-cdr
canonical-sexp-nth
canonical-sexp-nth-data
canonical-sexp-length
canonical-sexp-null?
canonical-sexp-list?
bytevector->hash-data
hash-data->bytevector
key-type
sign
verify
generate-key
find-sexp-token
canonical-sexp->sexp
sexp->canonical-sexp)
#:re-export (gcrypt-version))
;;; Commentary:
;;;
;;; Public key cryptographic routines from GNU Libgcrypt.
;;;;
;;; Libgcrypt uses "canonical s-expressions" to represent key material,
;;; parameters, and data. We keep it as an opaque object to map them to
;;; Scheme s-expressions because (1) Libgcrypt sexps may be stored in secure
;;; memory, and (2) the read syntax is different.
;;;
;;; A 'canonical-sexp->sexp' procedure is provided nevertheless, for use in
;;; cases where it is safe to move data out of Libgcrypt---e.g., when
;;; processing ACL entries, public keys, etc.
;;;
;;; Canonical sexps were defined by Rivest et al. in the IETF draft at
;;; <http://people.csail.mit.edu/rivest/Sexp.txt> for the purposes of SPKI
;;; (see <http://www.ietf.org/rfc/rfc2693.txt>.)
;;;
;;; Code:
;; Libgcrypt "s-expressions".
(define-wrapped-pointer-type <canonical-sexp>
canonical-sexp?
naked-pointer->canonical-sexp
canonical-sexp->pointer
(lambda (obj port)
;; Don't print OBJ's external representation: we don't want key material
;; to leak in backtraces and such.
(format port "#<canonical-sexp ~a | ~a>"
(number->string (object-address obj) 16)
(number->string (pointer-address (canonical-sexp->pointer obj))
16))))
(define finalize-canonical-sexp!
(libgcrypt-func "gcry_sexp_release"))
(define-inlinable (pointer->canonical-sexp ptr)
"Return a <canonical-sexp> that wraps PTR."
(let* ((sexp (naked-pointer->canonical-sexp ptr))
(ptr* (canonical-sexp->pointer sexp)))
;; Did we already have a <canonical-sexp> object for PTR?
(when (equal? ptr ptr*)
;; No, so we can safely add a finalizer (in Guile 2.0.9
;; 'set-pointer-finalizer!' *adds* a finalizer rather than replacing the
;; existing one.)
(set-pointer-finalizer! ptr finalize-canonical-sexp!))
sexp))
(define error-source
(let* ((ptr (libgcrypt-func "gcry_strsource"))
(proc (pointer->procedure '* ptr (list int))))
(lambda (err)
"Return the error source (a string) for ERR, an error code as thrown
along with 'gcry-error'."
(pointer->string (proc err)))))
(define error-string
(let* ((ptr (libgcrypt-func "gcry_strerror"))
(proc (pointer->procedure '* ptr (list int))))
(lambda (err)
"Return the error description (a string) for ERR, an error code as
thrown along with 'gcry-error'."
(pointer->string (proc err)))))
(define string->canonical-sexp
(let* ((ptr (libgcrypt-func "gcry_sexp_new"))
(proc (pointer->procedure int ptr `(* * ,size_t ,int))))
(lambda (str)
"Parse STR and return the corresponding gcrypt s-expression."
;; When STR comes from 'canonical-sexp->string', it may contain
;; characters that are really meant to be interpreted as bytes as in a C
;; 'char *'. Thus, convert STR to ISO-8859-1 so the byte values of the
;; characters are preserved.
(let* ((sexp (bytevector->pointer (make-bytevector (sizeof '*))))
(err (proc sexp (string->pointer str "ISO-8859-1") 0 1)))
(if (= 0 err)
(pointer->canonical-sexp (dereference-pointer sexp))
(throw 'gcry-error 'string->canonical-sexp err))))))
(define-syntax GCRYSEXP_FMT_ADVANCED
(identifier-syntax 3))
(define canonical-sexp->string
(let* ((ptr (libgcrypt-func "gcry_sexp_sprint"))
(proc (pointer->procedure size_t ptr `(* ,int * ,size_t))))
(lambda (sexp)
"Return a textual representation of SEXP."
(let loop ((len 1024))
(let* ((buf (bytevector->pointer (make-bytevector len)))
(size (proc (canonical-sexp->pointer sexp)
GCRYSEXP_FMT_ADVANCED buf len)))
(if (zero? size)
(loop (* len 2))
(pointer->string buf size "ISO-8859-1")))))))
(define (read-file-sexp file)
"Return the canonical sexp read from FILE."
(call-with-input-file file
(compose string->canonical-sexp
read-string)))
(define canonical-sexp-car
(let* ((ptr (libgcrypt-func "gcry_sexp_car"))
(proc (pointer->procedure '* ptr '(*))))
(lambda (lst)
"Return the first element of LST, an sexp, if that element is a list;
return #f if LST or its first element is not a list (this is different from
the usual Lisp 'car'.)"
(let ((result (proc (canonical-sexp->pointer lst))))
(if (null-pointer? result)
#f
(pointer->canonical-sexp result))))))
(define canonical-sexp-cdr
(let* ((ptr (libgcrypt-func "gcry_sexp_cdr"))
(proc (pointer->procedure '* ptr '(*))))
(lambda (lst)
"Return the tail of LST, an sexp, or #f if LST is not a list."
(let ((result (proc (canonical-sexp->pointer lst))))
(if (null-pointer? result)
#f
(pointer->canonical-sexp result))))))
(define canonical-sexp-nth
(let* ((ptr (libgcrypt-func "gcry_sexp_nth"))
(proc (pointer->procedure '* ptr `(* ,int))))
(lambda (lst index)
"Return the INDEXth nested element of LST, an s-expression. Return #f
if that element does not exist, or if it's an atom. (Note: this is obviously
different from Scheme's 'list-ref'.)"
(let ((result (proc (canonical-sexp->pointer lst) index)))
(if (null-pointer? result)
#f
(pointer->canonical-sexp result))))))
(define (dereference-size_t p)
"Return the size_t value pointed to by P."
(bytevector-uint-ref (pointer->bytevector p (sizeof size_t))
0 (native-endianness)
(sizeof size_t)))
(define canonical-sexp-length
(let* ((ptr (libgcrypt-func "gcry_sexp_length"))
(proc (pointer->procedure int ptr '(*))))
(lambda (sexp)
"Return the length of SEXP if it's a list (including the empty list);
return zero if SEXP is an atom."
(proc (canonical-sexp->pointer sexp)))))
(define token-string?
(let ((token-cs (char-set-union char-set:digit
char-set:letter
(char-set #\- #\. #\/ #\_
#\: #\* #\+ #\=))))
(lambda (str)
"Return #t if STR is a token as per Section 4.3 of
<http://people.csail.mit.edu/rivest/Sexp.txt>."
(and (not (string-null? str))
(string-every token-cs str)
(not (char-set-contains? char-set:digit (string-ref str 0)))))))
(define canonical-sexp-nth-data
(let* ((ptr (libgcrypt-func "gcry_sexp_nth_data"))
(proc (pointer->procedure '* ptr `(* ,int *))))
(lambda (lst index)
"Return as a symbol (for \"sexp tokens\") or a bytevector (for any other
\"octet string\") the INDEXth data element (atom) of LST, an s-expression.
Return #f if that element does not exist, or if it's a list."
(let* ((size* (bytevector->pointer (make-bytevector (sizeof '*))))
(result (proc (canonical-sexp->pointer lst) index size*)))
(if (null-pointer? result)
#f
(let* ((len (dereference-size_t size*))
(str (pointer->string result len "ISO-8859-1")))
;; The sexp spec speaks of "tokens" and "octet strings".
;; Sometimes these octet strings are actual strings (text),
;; sometimes they're bytevectors, and sometimes they're
;; multi-precision integers (MPIs). Only the application knows.
;; However, for convenience, we return a symbol when a token is
;; encountered since tokens are frequent (at least in the 'car'
;; of each sexp.)
(if (token-string? str)
(string->symbol str) ; an sexp "token"
(bytevector-copy ; application data, textual or binary
(pointer->bytevector result len)))))))))
(define (number->canonical-sexp number)
"Return an s-expression representing NUMBER."
(string->canonical-sexp (string-append "#" (number->string number 16) "#")))
(define* (bytevector->hash-data bv
#:optional
(hash-algo "sha256")
#:key (key-type 'ecc))
"Given BV, a bytevector containing a hash of type HASH-ALGO, return an
s-expression suitable for use as the 'data' argument for 'sign'. KEY-TYPE
must be a symbol: 'dsa, 'ecc, or 'rsa."
(string->canonical-sexp
(format #f "(data (flags ~a) (hash \"~a\" #~a#))"
(case key-type
((ecc dsa) "rfc6979")
((rsa) "pkcs1")
(else (error "unknown key type" key-type)))
hash-algo
(bytevector->base16-string bv))))
(define (key-type sexp)
"Return a symbol denoting the type of public or private key represented by
SEXP--e.g., 'rsa', 'ecc'--or #f if SEXP does not denote a valid key."
(case (canonical-sexp-nth-data sexp 0)
((public-key private-key)
(canonical-sexp-nth-data (canonical-sexp-nth sexp 1) 0))
(else #f)))
(define* (hash-data->bytevector data)
"Return two values: the hash value (a bytevector), and the hash algorithm (a
string) extracted from DATA, an sexp as returned by 'bytevector->hash-data'.
Return #f if DATA does not conform."
(let ((hash (find-sexp-token data 'hash)))
(if hash
(let ((algo (canonical-sexp-nth-data hash 1))
(value (canonical-sexp-nth-data hash 2)))
(values value (symbol->string algo)))
(values #f #f))))
(define sign
(let* ((ptr (libgcrypt-func "gcry_pk_sign"))
(proc (pointer->procedure int ptr '(* * *))))
(lambda (data secret-key)
"Sign DATA, a canonical s-expression representing a suitable hash, with
SECRET-KEY (a canonical s-expression whose car is 'private-key'.) Note that
DATA must be a 'data' s-expression, as returned by
'bytevector->hash-data' (info \"(gcrypt) Cryptographic Functions\")."
(let* ((sig (bytevector->pointer (make-bytevector (sizeof '*))))
(err (proc sig (canonical-sexp->pointer data)
(canonical-sexp->pointer secret-key))))
(if (= 0 err)
(pointer->canonical-sexp (dereference-pointer sig))
(throw 'gcry-error 'sign err))))))
(define verify
(let* ((ptr (libgcrypt-func "gcry_pk_verify"))
(proc (pointer->procedure int ptr '(* * *))))
(lambda (signature data public-key)
"Verify that SIGNATURE is a signature of DATA with PUBLIC-KEY, all of
which are gcrypt s-expressions."
(zero? (proc (canonical-sexp->pointer signature)
(canonical-sexp->pointer data)
(canonical-sexp->pointer public-key))))))
(define generate-key
(let* ((ptr (libgcrypt-func "gcry_pk_genkey"))
(proc (pointer->procedure int ptr '(* *))))
(lambda (params)
"Return as an s-expression a new key pair for PARAMS. PARAMS must be an
s-expression like: (genkey (rsa (nbits 4:2048)))."
(let* ((key (bytevector->pointer (make-bytevector (sizeof '*))))
(err (proc key (canonical-sexp->pointer params))))
(if (zero? err)
(pointer->canonical-sexp (dereference-pointer key))
(throw 'gcry-error 'generate-key err))))))
(define find-sexp-token
(let* ((ptr (libgcrypt-func "gcry_sexp_find_token"))
(proc (pointer->procedure '* ptr `(* * ,size_t))))
(lambda (sexp token)
"Find in SEXP the first element whose 'car' is TOKEN and return it;
return #f if not found."
(let* ((token (string->pointer (symbol->string token)))
(res (proc (canonical-sexp->pointer sexp) token 0)))
(if (null-pointer? res)
#f
(pointer->canonical-sexp res))))))
(define-inlinable (canonical-sexp-null? sexp)
"Return #t if SEXP is the empty-list sexp."
(null-pointer? (canonical-sexp->pointer sexp)))
(define (canonical-sexp-list? sexp)
"Return #t if SEXP is a list."
(or (canonical-sexp-null? sexp)
(> (canonical-sexp-length sexp) 0)))
(define (canonical-sexp-fold proc seed sexp)
"Fold PROC (as per SRFI-1) over SEXP, a canonical sexp."
(if (canonical-sexp-list? sexp)
(let ((len (canonical-sexp-length sexp)))
(let loop ((index 0)
(result seed))
(if (= index len)
result
(loop (+ 1 index)
;; XXX: Call 'nth-data' *before* 'nth' to work around
;; <https://bugs.g10code.com/gnupg/issue1594>, which
;; affects 1.6.0 and earlier versions.
(proc (or (canonical-sexp-nth-data sexp index)
(canonical-sexp-nth sexp index))
result)))))
(error "sexp is not a list" sexp)))
(define (canonical-sexp->sexp sexp)
"Return a Scheme sexp corresponding to SEXP. This is particularly useful to
compare sexps (since Libgcrypt does not provide an 'equal?' procedure), or to
use pattern matching."
(if (canonical-sexp-list? sexp)
(reverse
(canonical-sexp-fold (lambda (item result)
(cons (if (canonical-sexp? item)
(canonical-sexp->sexp item)
item)
result))
'()
sexp))
;; As of Libgcrypt 1.6.0, there's no function to extract the buffer of a
;; non-list sexp (!), so we first enlist SEXP, then get at its buffer.
(let ((sexp (string->canonical-sexp
(string-append "(" (canonical-sexp->string sexp)
")"))))
(or (canonical-sexp-nth-data sexp 0)
(canonical-sexp-nth sexp 0)))))
(define (sexp->canonical-sexp sexp)
"Return a canonical sexp equivalent to SEXP, a Scheme sexp as returned by
'canonical-sexp->sexp'."
;; XXX: This is inefficient, but the Libgcrypt API doesn't allow us to do
;; much better.
(string->canonical-sexp
(call-with-output-string
(lambda (port)
(define (write item)
(cond ((list? item)
(display "(" port)
(for-each write item)
(display ")" port))
((symbol? item)
(format port " ~a" item))
((bytevector? item)
(format port " #~a#"
(bytevector->base16-string item)))
(else
(error "unsupported sexp item type" item))))
(write sexp)))))
(define (gcrypt-error-printer port key args default-printer)
"Print the gcrypt error specified by ARGS."
(match args
((proc err)
(format port "In procedure ~a: ~a: ~a"
proc (error-source err) (error-string err)))))
(set-exception-printer! 'gcry-error gcrypt-error-printer)
;;; pk-crypto.scm ends here

View file

@ -18,7 +18,7 @@
(define-module (guix pki)
#:use-module (guix config)
#:use-module (guix pk-crypto)
#:use-module (gcrypt pk-crypto)
#:use-module ((guix utils) #:select (with-atomic-file-output))
#:use-module ((guix build utils) #:select (mkdir-p))
#:use-module (ice-9 match)

View file

@ -286,7 +286,8 @@ (define lookup
(manifest-transitive-entries manifest))))
(define* (package->manifest-entry package #:optional (output "out")
#:key (parent (delay #f)))
#:key (parent (delay #f))
(properties '()))
"Return a manifest entry for the OUTPUT of package PACKAGE."
;; For each dependency, keep a promise pointing to its "parent" entry.
(letrec* ((deps (map (match-lambda
@ -305,7 +306,8 @@ (define* (package->manifest-entry package #:optional (output "out")
(dependencies (delete-duplicates deps))
(search-paths
(package-transitive-native-search-paths package))
(parent parent))))
(parent parent)
(properties properties))))
entry))
(define (packages->manifest packages)

View file

@ -29,7 +29,7 @@ (define-module (guix scripts archive)
#:use-module (guix monads)
#:use-module (guix ui)
#:use-module (guix pki)
#:use-module (guix pk-crypto)
#:use-module (gcrypt pk-crypto)
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:use-module (gnu packages)

View file

@ -19,7 +19,7 @@
(define-module (guix scripts authenticate)
#:use-module (guix config)
#:use-module (guix base16)
#:use-module (guix pk-crypto)
#:use-module (gcrypt pk-crypto)
#:use-module (guix pki)
#:use-module (guix ui)
#:use-module (ice-9 binary-ports)

159
guix/scripts/describe.scm Normal file
View file

@ -0,0 +1,159 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix scripts describe)
#:use-module ((guix ui) #:hide (display-profile-content))
#:use-module (guix scripts)
#:use-module (guix describe)
#:use-module (guix profiles)
#:use-module ((guix scripts pull) #:select (display-profile-content))
#:use-module (git)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
#:autoload (ice-9 pretty-print) (pretty-print)
#:export (guix-describe))
;;;
;;; Command-line options.
;;;
(define %options
;; Specifications of the command-line options.
(list (option '(#\f "format") #t #f
(lambda (opt name arg result)
(unless (member arg '("human" "channels"))
(leave (G_ "~a: unsupported output format~%") arg))
(alist-cons 'format 'channels result)))
(option '(#\h "help") #f #f
(lambda args
(show-help)
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix describe")))))
(define %default-options
;; Alist of default option values.
'((format . human)))
(define (show-help)
(display (G_ "Usage: guix describe [OPTION]...
Display information about the channels currently in use.\n"))
(display (G_ "
-f, --format=FORMAT display information in the given FORMAT"))
(newline)
(display (G_ "
-h, --help display this help and exit"))
(display (G_ "
-V, --version display version information and exit"))
(newline)
(show-bug-report-information))
(define (display-package-search-path fmt)
"Display GUIX_PACKAGE_PATH, if it is set, according to FMT."
(match (getenv "GUIX_PACKAGE_PATH")
(#f #t)
(string
(match fmt
('human
(format #t "~%GUIX_PACKAGE_PATH=\"~a\"~%" string))
('channels
(format #t (G_ "~%;; warning: GUIX_PACKAGE_PATH=\"~a\"~%")
string))))))
(define (display-checkout-info fmt)
"Display information about the current checkout according to FMT, a symbol
denoting the requested format. Exit if the current directory does not lie
within a Git checkout."
(let* ((program (car (command-line)))
(directory (catch 'git-error
(lambda ()
(repository-discover (dirname program)))
(lambda (key err)
(leave (G_ "failed to determine origin~%")))))
(repository (repository-open directory))
(head (repository-head repository))
(commit (oid->string (reference-target head))))
(match fmt
('human
(format #t (G_ "Git checkout:~%"))
(format #t (G_ " repository: ~a~%") (dirname directory))
(format #t (G_ " branch: ~a~%") (reference-shorthand head))
(format #t (G_ " commit: ~a~%") commit))
('channels
(pretty-print `(list (channel
(name 'guix)
(url ,(dirname directory))
(commit ,commit))))))
(display-package-search-path fmt)))
(define (display-profile-info profile fmt)
"Display information about PROFILE, a profile as created by (guix channels),
in the format specified by FMT."
(define number
(generation-number profile))
(match fmt
('human
(display-profile-content profile number))
('channels
(pretty-print
`(list ,@(map (lambda (entry)
(match (assq 'source (manifest-entry-properties entry))
(('source ('repository ('version 0)
('url url)
('branch branch)
('commit commit)
_ ...))
`(channel (name ',(string->symbol
(manifest-entry-name entry)))
(url ,url)
(commit ,commit)))
;; Pre-0.15.0 Guix does not provide that information,
;; so there's not much we can do in that case.
(_ '???)))
;; Show most recently installed packages last.
(reverse
(manifest-entries
(profile-manifest (generation-file-name profile
number)))))))))
(display-package-search-path fmt))
;;;
;;; Entry point.
;;;
(define (guix-describe . args)
(let* ((opts (args-fold* args %options
(lambda (opt name arg result)
(leave (G_ "~A: unrecognized option~%")
name))
cons
%default-options))
(format (assq-ref opts 'format)))
(with-error-handling
(match (current-profile)
(#f
(display-checkout-info format))
(profile
(display-profile-info profile format))))))

View file

@ -20,7 +20,7 @@ (define-module (guix scripts download)
#:use-module (guix ui)
#:use-module (guix scripts)
#:use-module (guix store)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base16)
#:use-module (guix base32)
#:use-module ((guix download) #:hide (url-fetch))

View file

@ -20,7 +20,7 @@
(define-module (guix scripts hash)
#:use-module (guix base32)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix serialization)
#:use-module (guix ui)
#:use-module (guix scripts)
@ -44,7 +44,7 @@ (define %default-options
`((format . ,bytevector->nix-base32-string)))
(define (show-help)
(display (G_ "Usage: guix hash [OPTION] FILE
(display (G_ "Usage: gcrypt hash [OPTION] FILE
Return the cryptographic hash of FILE.
Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'
@ -93,7 +93,7 @@ (define fmt-proc
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix hash")))))
(show-version-and-exit "gcrypt hash")))))

View file

@ -41,7 +41,7 @@ (define-module (guix scripts pack)
#:use-module (gnu packages guile)
#:use-module (gnu packages base)
#:autoload (gnu packages package-management) (guix)
#:autoload (gnu packages gnupg) (libgcrypt)
#:autoload (gnu packages gnupg) (guile-gcrypt)
#:autoload (gnu packages guile) (guile2.0-json guile-json)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
@ -95,10 +95,12 @@ (define not-config?
(('gnu _ ...) #t)
(_ #f)))
(define guile-sqlite3&co
;; Guile-SQLite3 and its propagated inputs.
(cons guile-sqlite3
(package-transitive-propagated-inputs guile-sqlite3)))
(define gcrypt-sqlite3&co
;; Guile-Gcrypt, Guile-SQLite3, and their propagated inputs.
(append-map (lambda (package)
(cons package
(package-transitive-propagated-inputs package)))
(list guile-gcrypt guile-sqlite3)))
(define* (self-contained-tarball name profile
#:key target
@ -124,16 +126,14 @@ (define schema
"guix/store/schema.sql"))))
(define build
(with-imported-modules `(((guix config)
=> ,(make-config.scm
#:libgcrypt libgcrypt))
(with-imported-modules `(((guix config) => ,(make-config.scm))
,@(source-module-closure
`((guix build utils)
(guix build union)
(guix build store-copy)
(gnu build install))
#:select? not-config?))
(with-extensions guile-sqlite3&co
(with-extensions gcrypt-sqlite3&co
#~(begin
(use-modules (guix build utils)
((guix build union) #:select (relative-file-name))
@ -251,22 +251,14 @@ (define* (squashfs-image name profile
SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
added to the pack."
(define libgcrypt
;; XXX: Not strictly needed, but pulled by (guix store database).
(module-ref (resolve-interface '(gnu packages gnupg))
'libgcrypt))
(define build
(with-imported-modules `(((guix config)
=> ,(make-config.scm
#:libgcrypt libgcrypt))
(with-imported-modules `(((guix config) => ,(make-config.scm))
,@(source-module-closure
'((guix build utils)
(guix build store-copy)
(gnu build install))
#:select? not-config?))
(with-extensions guile-sqlite3&co
(with-extensions gcrypt-sqlite3&co
#~(begin
(use-modules (guix build utils)
(gnu build install)
@ -349,32 +341,12 @@ (define* (docker-image name profile
the image."
(define defmod 'define-module) ;trick Geiser
(define config
;; (guix config) module for consumption by (guix gcrypt).
(scheme-file "gcrypt-config.scm"
#~(begin
(#$defmod (guix config)
#:export (%libgcrypt))
;; XXX: Work around <http://bugs.gnu.org/15602>.
(eval-when (expand load eval)
(define %libgcrypt
#+(file-append libgcrypt "/lib/libgcrypt"))))))
(define json
;; Pick the guile-json package that corresponds to the Guile used to build
;; derivations.
(if (string-prefix? "2.0" (package-version (default-guile)))
guile2.0-json
guile-json))
(define build
;; Guile-JSON is required by (guix docker).
(with-extensions (list json)
(with-imported-modules `(,@(source-module-closure '((guix docker)
(guix build store-copy))
#:select? not-config?)
((guix config) => ,config))
;; Guile-JSON and Guile-Gcrypt are required by (guix docker).
(with-extensions (list guile-json guile-gcrypt)
(with-imported-modules (source-module-closure '((guix docker)
(guix build store-copy))
#:select? not-config?)
#~(begin
(use-modules (guix docker) (srfi srfi-19) (guix build store-copy))

View file

@ -35,6 +35,7 @@ (define-module (guix scripts package)
#:use-module (guix config)
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:autoload (guix describe) (current-profile-entries)
#:use-module ((guix build utils)
#:select (directory-exists? mkdir-p))
#:use-module (ice-9 format)
@ -238,7 +239,7 @@ (define (supersede old new)
(info (G_ "package '~a' has been superseded by '~a'~%")
(manifest-entry-name old) (package-name new))
(manifest-transaction-install-entry
(package->manifest-entry new (manifest-entry-output old))
(package->manifest-entry* new (manifest-entry-output old))
(manifest-transaction-remove-pattern
(manifest-pattern
(name (manifest-entry-name old))
@ -261,7 +262,7 @@ (define (supersede old new)
(case (version-compare candidate-version version)
((>)
(manifest-transaction-install-entry
(package->manifest-entry pkg output)
(package->manifest-entry* pkg output)
transaction))
((<)
transaction)
@ -274,7 +275,7 @@ (define (supersede old new)
(null? (package-propagated-inputs pkg)))
transaction
(manifest-transaction-install-entry
(package->manifest-entry pkg output)
(package->manifest-entry* pkg output)
transaction))))))))
(#f
(warning (G_ "package '~a' no longer exists~%") name)
@ -570,6 +571,52 @@ (define (store-item->manifest-entry item)
(output "out") ;XXX: wild guess
(item item))))
(define (package-provenance package)
"Return the provenance of PACKAGE as an sexp for use as the 'provenance'
property of manifest entries, or #f if it could not be determined."
(define (entry-source entry)
(match (assq 'source
(manifest-entry-properties entry))
(('source value) value)
(_ #f)))
(match (and=> (package-location package) location-file)
(#f #f)
(file
(let ((file (if (string-prefix? "/" file)
file
(search-path %load-path file))))
(and file
(string-prefix? (%store-prefix) file)
;; Always store information about the 'guix' channel and
;; optionally about the specific channel FILE comes from.
(or (let ((main (and=> (find (lambda (entry)
(string=? "guix"
(manifest-entry-name entry)))
(current-profile-entries))
entry-source))
(extra (any (lambda (entry)
(let ((item (manifest-entry-item entry)))
(and (string-prefix? item file)
(entry-source entry))))
(current-profile-entries))))
(and main
`(,main
,@(if extra (list extra) '()))))))))))
(define (package->manifest-entry* package output)
"Like 'package->manifest-entry', but attach PACKAGE provenance meta-data to
the resulting manifest entry."
(define (provenance-properties package)
(match (package-provenance package)
(#f '())
(sexp `((provenance ,@sexp)))))
(package->manifest-entry package output
#:properties (provenance-properties package)))
(define (options->installable opts manifest transaction)
"Given MANIFEST, the current manifest, and OPTS, the result of 'args-fold',
return an variant of TRANSACTION that accounts for the specified installations
@ -590,13 +637,13 @@ (define to-install
(('install . (? package? p))
;; When given a package via `-e', install the first of its
;; outputs (XXX).
(package->manifest-entry p "out"))
(package->manifest-entry* p "out"))
(('install . (? string? spec))
(if (store-path? spec)
(store-item->manifest-entry spec)
(let-values (((package output)
(specification->package+output spec)))
(package->manifest-entry package output))))
(package->manifest-entry* package output))))
(_ #f))
opts))

View file

@ -44,9 +44,9 @@ (define-module (guix scripts publish)
#:use-module (guix base64)
#:use-module (guix config)
#:use-module (guix derivations)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix pki)
#:use-module (guix pk-crypto)
#:use-module (gcrypt pk-crypto)
#:use-module (guix workers)
#:use-module (guix store)
#:use-module ((guix serialization) #:select (write-file))

View file

@ -48,7 +48,8 @@ (define-module (guix scripts pull)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
#:export (guix-pull))
#:export (display-profile-content
guix-pull))
;;;
@ -79,6 +80,8 @@ (define (show-help)
(display (G_ "
-l, --list-generations[=PATTERN]
list generations matching PATTERN"))
(display (G_ "
-p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current"))
(display (G_ "
--bootstrap use the bootstrap Guile to build the new Guix"))
(newline)
@ -113,6 +116,10 @@ (define %options
(lambda (opt name arg result)
(alist-cons 'ref `(branch . ,(string-append "origin/" arg))
result)))
(option '(#\p "profile") #t #f
(lambda (opt name arg result)
(alist-cons 'profile (canonicalize-profile arg)
result)))
(option '(#\n "dry-run") #f #f
(lambda (opt name arg result)
(alist-cons 'dry-run? #t (alist-cons 'graft? #f result))))
@ -152,15 +159,12 @@ (define (display-profile-news profile)
#:heading (G_ "New in this revision:\n"))))
(_ #t)))
(define* (build-and-install instances config-dir
(define* (build-and-install instances profile
#:key verbose?)
"Build the tool from SOURCE, and install it in CONFIG-DIR."
"Build the tool from SOURCE, and install it in PROFILE."
(define update-profile
(store-lift build-and-use-profile))
(define profile
(string-append config-dir "/current"))
(mlet %store-monad ((manifest (channel-instances->manifest instances)))
(mbegin %store-monad
(update-profile profile manifest)
@ -414,7 +418,9 @@ (define (guix-pull . args)
(let* ((opts (parse-command-line args %options
(list %default-options)))
(cache (string-append (cache-directory) "/pull"))
(channels (channel-list opts)))
(channels (channel-list opts))
(profile (or (assoc-ref opts 'profile)
(string-append (config-directory) "/current"))))
(cond ((assoc-ref opts 'query)
(process-query opts))
@ -456,7 +462,7 @@ (define (guix-pull . args)
%bootstrap-guile
(canonical-package guile-2.2)))))
(run-with-store store
(build-and-install instances (config-directory)
(build-and-install instances profile
#:verbose?
(assoc-ref opts 'verbose?)))))))))))))

View file

@ -23,7 +23,7 @@
(define-module (guix scripts refresh)
#:use-module (guix ui)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix scripts)
#:use-module (guix store)
#:use-module (guix utils)

View file

@ -26,11 +26,11 @@ (define-module (guix scripts substitute)
#:use-module (guix config)
#:use-module (guix records)
#:use-module ((guix serialization) #:select (restore-file))
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix base64)
#:use-module (guix cache)
#:use-module (guix pk-crypto)
#:use-module (gcrypt pk-crypto)
#:use-module (guix pki)
#:use-module ((guix build utils) #:select (mkdir-p dump-port))
#:use-module ((guix build download)

View file

@ -83,8 +83,8 @@ (define specification->package
("guile-ssh" (ref '(gnu packages ssh) 'guile-ssh))
("guile-git" (ref '(gnu packages guile) 'guile-git))
("guile-sqlite3" (ref '(gnu packages guile) 'guile-sqlite3))
("guile-gcrypt" (ref '(gnu packages gnupg) 'guile-gcrypt))
("gnutls" (ref '(gnu packages tls) 'gnutls))
("libgcrypt" (ref '(gnu packages gnupg) 'libgcrypt))
("zlib" (ref '(gnu packages compression) 'zlib))
("gzip" (ref '(gnu packages compression) 'gzip))
("bzip2" (ref '(gnu packages compression) 'bzip2))
@ -454,7 +454,6 @@ (define* (compiled-guix source #:key (version %guix-version)
(name (string-append "guix-" version))
(guile-version (effective-version))
(guile-for-build (guile-for-build guile-version))
(libgcrypt (specification->package "libgcrypt"))
(zlib (specification->package "zlib"))
(gzip (specification->package "gzip"))
(bzip2 (specification->package "bzip2"))
@ -481,6 +480,10 @@ (define guile-sqlite3
"guile-sqlite3"
"guile2.0-sqlite3"))
(define guile-gcrypt
(package-for-guile guile-version
"guile-gcrypt"))
(define gnutls
(package-for-guile guile-version
"gnutls" "guile2.0-gnutls"))
@ -489,7 +492,7 @@ (define dependencies
(match (append-map (lambda (package)
(cons (list "x" package)
(package-transitive-propagated-inputs package)))
(list gnutls guile-git guile-json
(list guile-gcrypt gnutls guile-git guile-json
guile-ssh guile-sqlite3))
(((labels packages _ ...) ...)
packages)))
@ -513,10 +516,7 @@ (define *core-modules*
;; rebuilt when the version changes, which in turn means we
;; can have substitutes for it.
#:extra-modules
`(((guix config)
=> ,(make-config.scm #:libgcrypt
(specification->package
"libgcrypt"))))
`(((guix config) => ,(make-config.scm)))
;; (guix man-db) is needed at build-time by (guix profiles)
;; but we don't need to compile it; not compiling it allows
@ -526,6 +526,7 @@ (define *core-modules*
("guix/store/schema.sql"
,(local-file "../guix/store/schema.sql")))
#:extensions (list guile-gcrypt)
#:guile-for-build guile-for-build))
(define *extra-modules*
@ -600,8 +601,7 @@ (define *config*
'()
#:extra-modules
`(((guix config)
=> ,(make-config.scm #:libgcrypt libgcrypt
#:zlib zlib
=> ,(make-config.scm #:zlib zlib
#:gzip gzip
#:bzip2 bzip2
#:xz xz
@ -684,7 +684,7 @@ (define (built-modules node-subset)
(define %dependency-variables
;; (guix config) variables corresponding to dependencies.
'(%libgcrypt %libz %xz %gzip %bzip2))
'(%libz %xz %gzip %bzip2))
(define %persona-variables
;; (guix config) variables that define Guix's persona.
@ -703,7 +703,7 @@ (define %config-variables
(variables rest ...))))))
(variables %localstatedir %storedir %sysconfdir %system)))
(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2
(define* (make-config.scm #:key zlib gzip xz bzip2
(package-name "GNU Guix")
(package-version "0")
(bug-report-address "bug-guix@gnu.org")
@ -723,7 +723,6 @@ (define defmod 'define-module)
%state-directory
%store-database-directory
%config-directory
%libgcrypt
%libz
%gzip
%bzip2
@ -766,9 +765,6 @@ (define %bzip2
(define %xz
#+(and xz (file-append xz "/bin/xz")))
(define %libgcrypt
#+(and libgcrypt
(file-append libgcrypt "/lib/libgcrypt")))
(define %libz
#+(and zlib
(file-append zlib "/lib/libz"))))

View file

@ -25,7 +25,7 @@ (define-module (guix store)
#:use-module (guix monads)
#:use-module (guix base16)
#:use-module (guix base32)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix profiling)
#:autoload (guix build syscalls) (terminal-columns)
#:use-module (rnrs bytevectors)

View file

@ -21,7 +21,7 @@
;;; timestamps, deduplicating, etc.
(define-module (guix store deduplication)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix build utils)
#:use-module (guix base16)
#:use-module (srfi srfi-11)

View file

@ -22,7 +22,7 @@ (define-module (guix tests)
#:use-module (guix packages)
#:use-module (guix base32)
#:use-module (guix serialization)
#:use-module (guix hash)
#:use-module (gcrypt hash)
#:use-module (guix build-system gnu)
#:use-module (gnu packages bootstrap)
#:use-module (srfi srfi-34)

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