Merge branch 'master' into core-updates

This commit is contained in:
Leo Famulari 2018-09-13 13:32:39 -04:00
commit d763940711
No known key found for this signature in database
GPG Key ID: 2646FA30BACA7F08
72 changed files with 2673 additions and 1485 deletions

View File

@ -25,6 +25,8 @@
#:use-module (guix build-system gnu)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (rnrs io ports)
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
@ -263,6 +265,9 @@ interface (FFI) of Guile.")
#~(define-module (gcrypt hash)
#:export (sha1 sha256))))
(define fake-git
(scheme-file "git.scm" #~(define-module (git))))
(with-imported-modules `(((guix config)
=> ,(make-config.scm))
@ -272,6 +277,11 @@ interface (FFI) of Guile.")
;; adjust %LOAD-PATH later on.
((gcrypt hash) => ,fake-gcrypt-hash)
;; (guix git-download) depends on (git) but only
;; for peripheral functionality. Provide a dummy
;; (git) to placate it.
((git) => ,fake-git)
,@(source-module-closure `((guix store)
(guix self)
(guix derivations)
@ -417,7 +427,15 @@ files."
;; Unsupported PULL-VERSION.
(return #f))
((? string? str)
(error "invalid build result" (list build str))))))))
(raise (condition
(&message
(message (format #f "You found a bug: the program '~a'
failed to compute the derivation for Guix (version: ~s; system: ~s;
host version: ~s; pull-version: ~s).
Please report it by email to <~a>.~%"
(derivation->output-path build)
version system %guix-version pull-version
%guix-bug-report-address)))))))))))
;; This file is loaded by 'guix pull'; return it the build procedure.
build

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -56,6 +57,7 @@
(guix packages)
(guix derivations)
(guix monads)
(guix ui)
((guix licenses) #:select (gpl3+))
((guix utils) #:select (%current-system))
((guix scripts system) #:select (read-operating-system))
@ -311,6 +313,30 @@ valid."
packages)))
#:select? (const #t))) ;include hidden packages
(define (arguments->manifests arguments)
"Return the list of manifests extracted from ARGUMENTS."
(map (match-lambda
((input-name . relative-path)
(let* ((checkout (assq-ref arguments (string->symbol input-name)))
(base (assq-ref checkout 'file-name)))
(in-vicinity base relative-path))))
(assq-ref arguments 'manifests)))
(define (manifests->packages store manifests)
"Return the list of packages found in MANIFESTS."
(define (load-manifest manifest)
(save-module-excursion
(lambda ()
(set-current-module (make-user-module '((guix profiles) (gnu))))
(primitive-load manifest))))
(parameterize ((%graft? #f))
(delete-duplicates!
(map manifest-entry-item
(append-map (compose manifest-entries
load-manifest)
manifests)))))
;;;
;;; Hydra entry point.
@ -323,6 +349,7 @@ valid."
("core" 'core) ; only build core packages
("hello" 'hello) ; only build hello
(((? string?) (? string?) ...) 'list) ; only build selected list of packages
("manifests" 'manifests) ; only build packages in the list of manifests
(_ 'all))) ; build everything
(define systems
@ -419,6 +446,14 @@ valid."
package system))
packages))
'()))
((manifests)
;; Build packages in the list of manifests.
(let* ((manifests (arguments->manifests arguments))
(packages (manifests->packages store manifests)))
(map (lambda (package)
(package-job store (job-name package)
package system))
packages)))
(else
(error "unknown subset" subset))))
systems)))

View File

@ -18165,23 +18165,43 @@ The type of the Cuirass service. Its value must be a
@code{cuirass-configuration} object, as described below.
@end defvr
To add build jobs, you have to set the @code{specifications} field of
the configuration. Here is an example of a service defining a build job
based on a specification that can be found in Cuirass source tree. This
service polls the Guix repository and builds a subset of the Guix
packages, as prescribed in the @file{gnu-system.scm} example spec:
To add build jobs, you have to set the @code{specifications} field of the
configuration. Here is an example of a service that polls the Guix repository
and builds the packages from a manifest. Some of the packages are defined in
the @code{"custom-packages"} input, which is the equivalent of
@code{GUIX_PACKAGE_PATH}.
@example
(let ((spec #~((#:name . "guix")
(define %cuirass-specs
#~(list
'((#:name . "my-manifest")
(#:load-path-inputs . ("guix"))
(#:package-path-inputs . ("custom-packages"))
(#:proc-input . "guix")
(#:proc-file . "build-aux/cuirass/gnu-system.scm")
(#:proc . cuirass-jobs)
(#:proc-args . ((subset . "manifests")
(systems . ("x86_64-linux"))
(manifests . (("config" . "guix/manifest.scm")))))
(#:inputs . (((#:name . "guix")
(#:url . "git://git.savannah.gnu.org/guix.git")
(#:load-path . ".")
(#:file . "build-aux/cuirass/gnu-system.scm")
(#:proc . cuirass-jobs)
(#:arguments (subset . "hello"))
(#:branch . "master"))))
(service cuirass-service-type
(#:branch . "master")
(#:no-compile? . #t))
((#:name . "config")
(#:url . "git://git.example.org/config.git")
(#:load-path . ".")
(#:branch . "master")
(#:no-compile? . #t))
((#:name . "custom-packages")
(#:url . "git://git.example.org/custom-packages.git")
(#:load-path . ".")
(#:branch . "master")
(#:no-compile? . #t)))))))
(service cuirass-service-type
(cuirass-configuration
(specifications #~(list '#$spec)))))
(specifications %cuirass-specs)))
@end example
While information related to build jobs is located directly in the
@ -18208,7 +18228,7 @@ Owner's group of the @code{cuirass} process.
Number of seconds between the poll of the repositories followed by the
Cuirass jobs.
@item @code{database} (default: @code{"/var/run/cuirass/cuirass.db"})
@item @code{database} (default: @code{"/var/lib/cuirass/cuirass.db"})
Location of sqlite database which contains the build results and previously
added specifications.

View File

@ -135,6 +135,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/display-managers.scm \
%D%/packages/django.scm \
%D%/packages/djvu.scm \
%D%/packages/dlang.scm \
%D%/packages/dns.scm \
%D%/packages/docbook.scm \
%D%/packages/docker.scm \
@ -245,7 +246,6 @@ GNU_SYSTEM_MODULES = \
%D%/packages/key-mon.scm \
%D%/packages/kodi.scm \
%D%/packages/language.scm \
%D%/packages/ldc.scm \
%D%/packages/lego.scm \
%D%/packages/less.scm \
%D%/packages/lesstif.scm \
@ -529,7 +529,6 @@ GNU_SYSTEM_MODULES = \
%D%/build/vm.scm \
\
%D%/tests.scm \
%D%/tests/admin.scm \
%D%/tests/audio.scm \
%D%/tests/base.scm \
%D%/tests/databases.scm \
@ -855,7 +854,7 @@ dist_patch_DATA = \
%D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch \
%D%/packages/patches/laby-make-install.patch \
%D%/packages/patches/ldc-bootstrap-disable-tests.patch \
%D%/packages/patches/ldc-1.7.0-disable-phobos-tests.patch \
%D%/packages/patches/ldc-disable-phobos-tests.patch \
%D%/packages/patches/ledger-fix-uninitialized.patch \
%D%/packages/patches/ledger-revert-boost-python-fix.patch \
%D%/packages/patches/liba52-enable-pic.patch \
@ -983,6 +982,7 @@ dist_patch_DATA = \
%D%/packages/patches/net-tools-bitrot.patch \
%D%/packages/patches/netcdf-date-time.patch \
%D%/packages/patches/netcdf-tst_h_par.patch \
%D%/packages/patches/netsurf-message-timestamp.patch \
%D%/packages/patches/netsurf-system-utf8proc.patch \
%D%/packages/patches/netsurf-y2038-tests.patch \
%D%/packages/patches/netsurf-longer-test-timeout.patch \
@ -1078,12 +1078,6 @@ dist_patch_DATA = \
%D%/packages/patches/python-axolotl-AES-fix.patch \
%D%/packages/patches/python-cairocffi-dlopen-path.patch \
%D%/packages/patches/python-fix-tests.patch \
%D%/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch \
%D%/packages/patches/python-genshi-buildable-on-python-2.7.patch \
%D%/packages/patches/python-genshi-disable-speedups-on-python-3.3.patch \
%D%/packages/patches/python-genshi-fix-tests-on-python-3.5.patch \
%D%/packages/patches/python-genshi-isstring-helper.patch \
%D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch \
%D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
%D%/packages/patches/python-networkx2-reproducible-build.patch \
%D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
@ -1129,6 +1123,7 @@ dist_patch_DATA = \
%D%/packages/patches/ruby-rack-ignore-failing-test.patch \
%D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\
%D%/packages/patches/rust-1.19-mrustc.patch \
%D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
%D%/packages/patches/rust-bootstrap-stage0-test.patch \
%D%/packages/patches/rust-coresimd-doctest.patch \
%D%/packages/patches/rxvt-unicode-escape-sequences.patch \

View File

@ -1231,7 +1231,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
(define-public guitarix
(package
(name "guitarix")
(version "0.37.1")
(version "0.37.3")
(source (origin
(method url-fetch)
(uri (string-append
@ -1239,7 +1239,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
version ".tar.xz"))
(sha256
(base32
"064k0jzxqgx9gwf8za6jziansabzrwzjaim3qx1743ify5g3gaai"))))
"1wfm8wrwrnqpb4ihy75n7l9i6vml536jlq9pdx2pblbc4ba3paac"))))
(build-system waf-build-system)
(arguments
`(#:tests? #f ; no "check" target
@ -1252,6 +1252,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
(inputs
`(("libsndfile" ,libsndfile)
("boost" ,boost)
("curl" ,curl)
("avahi" ,avahi)
("eigen" ,eigen)
("lv2" ,lv2)
@ -1291,7 +1292,7 @@ auto-wah.")
(arguments
(substitute-keyword-arguments (package-arguments guitarix)
((#:configure-flags flags)
`(cons "--lv2-only" ,flags))))))
`(cons "--no-standalone" ,flags))))))
(define-public rakarrack
(package

View File

@ -740,12 +740,15 @@ NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes.")
("python2-pep8" ,python2-pep8)
("python2-pylint" ,python2-pylint)))
(home-page "https://obnam.org/")
(synopsis "Easy and secure backup program")
(description "Obnam is an easy, secure backup program. Features
include snapshot backups, data de-duplication and encrypted backups
using GnuPG. Backups can be stored on local hard disks, or online via
the SSH SFTP protocol. The backup server, if used, does not require
any special software, on top of SSH.")
(synopsis "Retired backup program")
(description
"Warning: @uref{https://blog.liw.fi/posts/2017/08/13/retiring_obnam/,
the Obnam project is retired}. You should use another backup solution instead.
Obnam was an easy, secure backup program. Features included snapshot backups,
data de-duplication and encrypted backups using GnuPG. Backups can be stored on
local hard disks, or online via the SSH SFTP protocol. The backup server, if
used, does not require any special software, on top of SSH.")
(license license:gpl3+)))
(define-public dirvish

View File

@ -76,7 +76,7 @@
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages java)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages ldc)
#:use-module (gnu packages dlang)
#:use-module (gnu packages linux)
#:use-module (gnu packages logging)
#:use-module (gnu packages machine-learning)
@ -13504,3 +13504,198 @@ reference transcripts provided in a annotation file (also in GTF/GFF3 format).
(list
license:expat ;license for gffcompare
license:artistic2.0))))) ;license for gclib
(define-public python-intervaltree
(package
(name "python-intervaltree")
(version "2.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "intervaltree" version))
(sha256
(base32
"02w191m9zxkcjqr1kv2slxvhymwhj3jnsyy3a28b837pi15q19dc"))))
(build-system python-build-system)
;; FIXME: error when collecting tests
(arguments '(#:tests? #f))
(propagated-inputs
`(("python-sortedcontainers" ,python-sortedcontainers)))
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/chaimleib/intervaltree")
(synopsis "Editable interval tree data structure")
(description
"This package provides a mutable, self-balancing interval tree
implementation for Python. Queries may be by point, by range overlap, or by
range envelopment. This library was designed to allow tagging text and time
intervals, where the intervals include the lower bound but not the upper
bound.")
(license license:asl2.0)))
(define-public python-pypairix
(package
(name "python-pypairix")
(version "0.3.6")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pypairix" version))
(sha256
(base32
"0zs92b74s5v4xy2h16s15f3z6l4nnbw8x8zyif7xx5xpafjn0xss"))))
(build-system python-build-system)
;; FIXME: the tests fail because test.support cannot be loaded:
;; ImportError: cannot import name 'support'
(arguments '(#:tests? #f))
(inputs
`(("zlib" ,zlib)))
(home-page "https://github.com/4dn-dcic/pairix")
(synopsis "Support for querying pairix-indexed bgzipped text files")
(description
"Pypairix is a Python module for fast querying on a pairix-indexed
bgzipped text file that contains a pair of genomic coordinates per line.")
(license license:expat)))
(define-public python-pyfaidx
(package
(name "python-pyfaidx")
(version "0.5.4.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyfaidx" version))
(sha256
(base32
"0y5zyjksj1rdglj601xd2bbni5abhdh622y3ck76chyzxz9z4rx8"))))
(build-system python-build-system)
(propagated-inputs
`(("python-setuptools" ,python-setuptools)
("python-six" ,python-six)))
(home-page "http://mattshirley.com")
(synopsis "Random access to fasta subsequences")
(description
"This package provides procedures for efficient pythonic random access to
fasta subsequences.")
(license license:bsd-3)))
(define-public python-cooler
(package
(name "python-cooler")
(version "0.7.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cooler" version))
(sha256
(base32
"08k5nxnxa6qsbk15z5z0q01n28042k87wi4905hh95rzqib15mhx"))))
(build-system python-build-system)
(propagated-inputs
`(("python-biopython" ,python-biopython)
("python-click" ,python-click)
("python-cytoolz" ,python-cytoolz)
("python-dask" ,python-dask)
("python-h5py" ,python-h5py)
("python-multiprocess" ,python-multiprocess)
("python-pandas" ,python-pandas)
("python-pyfaidx" ,python-pyfaidx)
("python-pypairix" ,python-pypairix)
("python-pysam" ,python-pysam)
("python-scipy" ,python-scipy)))
(native-inputs
`(("python-mock" ,python-mock)
("python-nose" ,python-nose)
("python-numpydoc" ,python-numpydoc)
("python-sphinx" ,python-sphinx)))
(home-page "https://github.com/mirnylab/cooler")
(synopsis "Sparse binary format for genomic interaction matrices")
(description
"Cooler is a support library for a sparse, compressed, binary persistent
storage format, called @code{cool}, used to store genomic interaction data,
such as Hi-C contact matrices.")
(license license:bsd-3)))
(define-public python-hicexplorer
(package
(name "python-hicexplorer")
(version "2.1.4")
(source
(origin
;; The latest version is not available on Pypi.
(method git-fetch)
(uri (git-reference
(url "https://github.com/deeptools/HiCExplorer.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0q5gpbzmrkvygqgw524q36b4nrivcmyi5v194vsx0qw7b3gcmq08"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'loosen-up-requirements
(lambda _
(substitute* "setup.py"
(("==") ">="))
#t)))))
(propagated-inputs
`(("python-biopython" ,python-biopython)
("python-configparser" ,python-configparser)
("python-cooler" ,python-cooler)
("python-future" ,python-future)
("python-intervaltree" ,python-intervaltree)
("python-jinja2" ,python-jinja2)
("python-matplotlib" ,python-matplotlib)
("python-numpy" ,python-numpy)
("python-pandas" ,python-pandas)
("python-pybigwig" ,python-pybigwig)
("python-pysam" ,python-pysam)
("python-scipy" ,python-scipy)
("python-six" ,python-six)
("python-tables" ,python-tables)
("python-unidecode" ,python-unidecode)))
(home-page "http://hicexplorer.readthedocs.io")
(synopsis "Process, analyze and visualize Hi-C data")
(description
"HiCExplorer is a powerful and easy to use set of tools to process,
normalize and visualize Hi-C data. HiCExplorer facilitates the creation of
contact matrices, correction of contacts, TAD detection, A/B compartments,
merging, reordering or chromosomes, conversion from different formats
including cooler and detection of long-range contacts. Moreover, it allows
the visualization of multiple contact matrices along with other types of data
like genes, compartments, ChIP-seq coverage tracks (and in general any type of
genomic scores), long range contacts and the visualization of viewpoints.")
(license license:gpl3)))
(define-public python-pygenometracks
(package
(name "python-pygenometracks")
(version "2.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyGenomeTracks" version))
(sha256
(base32
"1fws6bqsyy9kj3qiabhkqx4wd4i775gsxnhszqd3zg7w67sc1ic5"))))
(build-system python-build-system)
(propagated-inputs
`(("python-configparser" ,python-configparser)
("python-future" ,python-future)
("python-hicexplorer" ,python-hicexplorer)
("python-intervaltree" ,python-intervaltree)
("python-matplotlib" ,python-matplotlib)
("python-numpy" ,python-numpy)
("python-pybigwig" ,python-pybigwig)))
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://pygenometracks.readthedocs.io")
(synopsis "Program and library to plot beautiful genome browser tracks")
(description
"This package aims to produce high-quality genome browser tracks that
are highly customizable. Currently, it is possible to plot: bigwig, bed (many
options), bedgraph, links (represented as arcs), and Hi-C matrices.
pyGenomeTracks can make plots with or without Hi-C data.")
(license license:gpl3+)))

View File

@ -305,15 +305,15 @@ menu to select one of the installed operating systems.")
(delete 'configure)
(add-before 'build 'set-permissions
(lambda _
(zero? (system* "chmod" "a+w" "utils/isohybrid.in"))))
(invoke "chmod" "a+w" "utils/isohybrid.in")))
(replace 'check
(lambda _
(setenv "CC" "gcc")
(substitute* "tests/unittest/include/unittest/unittest.h"
;; Don't look up headers under /usr.
(("/usr/include/") ""))
(zero? (system* "make" "unittest")))))))
(home-page "http://www.syslinux.org")
(invoke "make" "unittest"))))))
(home-page "https://www.syslinux.org")
(synopsis "Lightweight Linux bootloader")
(description "Syslinux is a lightweight Linux bootloader.")
(license (list license:gpl2+

View File

@ -220,7 +220,7 @@ COCOMO model or user-provided parameters.")
"/cloc-" version ".tar.gz"))
(sha256
(base32
"176xklr2qsgxh9zdb565gib6pp4gsm585rz5fvyphgjy4i679wkv"))))
"1j9lwy9xf43kpv1csqdxzch6y1hnsv881ddqd357f8v58dhr4s68"))))
(build-system gnu-build-system)
(inputs
`(("coreutils" ,coreutils)

View File

@ -33,6 +33,8 @@
#:use-module (guix build-system r)
#:use-module (gnu packages compression)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
#:use-module (gnu packages machine-learning)
#:use-module (gnu packages maths)
#:use-module (gnu packages mpi)
@ -5564,3 +5566,234 @@ gf_density(), and so on, bring the formula interface to ggplot(). This captures
and extends the excellent simplicity of the lattice-graphics formula interface,
while providing the intuitive capabilities of @code{r-ggplot2}.")
(license license:expat)))
(define-public r-mosaicdata
(package
(name "r-mosaicdata")
(version "0.17.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "mosaicData" version))
(sha256
(base32 "04z0mdm52mykqsxsinhmsihn181zf6cw321gayk2rjp7lj7mwdq9"))))
(properties `((upstream-name . "mosaicData")))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/mosaicData/")
(synopsis "Data sets for project Mosaic")
(description
"This package provides data sets from project Mosaic @url{http://mosaic-web.org}
used to teach mathematics, statistics, computation and modeling.")
(license license:gpl2+)))
(define-public r-mosaic
(package
(name "r-mosaic")
(version "1.4.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "mosaic" version))
(sha256
(base32 "10jbrg8kli00kfgbh2f67bymm5cnlancc9dplb1j7fl552yjddn2"))))
(build-system r-build-system)
(propagated-inputs
`(("r-broom" ,r-broom)
("r-dplyr" ,r-dplyr)
("r-ggdendro" ,r-ggdendro)
("r-ggformula" ,r-ggformula)
("r-ggplot2" ,r-ggplot2)
("r-ggrepel" ,r-ggrepel)
("r-glue" ,r-glue)
("r-gridextra" ,r-gridextra)
("r-lattice" ,r-lattice)
("r-latticeextra" ,r-latticeextra)
("r-lazyeval" ,r-lazyeval)
("r-mass" ,r-mass)
("r-matrix" ,r-matrix)
("r-mosaiccore" ,r-mosaiccore)
("r-mosaicdata" ,r-mosaicdata)
("r-readr" ,r-readr)
("r-tidyr" ,r-tidyr)))
(home-page "https://github.com/ProjectMOSAIC/mosaic/")
(synopsis "Mathematics, statistics, and computation teaching utilities")
(description
"This package contain data sets and utilities from
@url{http://mosaic-web.org, Project MOSAIC} used to teach mathematics,
statistics, computation and modeling. Project MOSAIC is a community of
educators working to tie together aspects of quantitative work that students
in science, technology, engineering and mathematics will need in their
professional lives, but which are usually taught in isolation, if at all.")
(license license:gpl2+)))
(define-public r-abd
(package
(name "r-abd")
(version "0.2-8")
(source
(origin
(method url-fetch)
(uri (cran-uri "abd" version))
(sha256
(base32 "191gspqzdv573vaw624ri0f5cm6v4j524bjs74d4a1hn3kn6r9b7"))))
(build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)
("r-mosaic" ,r-mosaic)
("r-nlme" ,r-nlme)))
(home-page "https://cran.r-project.org/web/packages/abd/")
(synopsis "Analysis of biological data")
(description
"The @code{r-abd} package contains data sets and sample code for the Analysis of
biological data by Michael Whitlock and Dolph Schluter.")
(license license:gpl2)))
(define-public r-svgui
(package
(name "r-svgui")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "svGUI" version))
(sha256
(base32 "1r7ab0p4yr8q03gj02hmj7k1ghksgkg4nx750c0ajfs2q9y1dxfc"))))
(properties `((upstream-name . "svGUI")))
(build-system r-build-system)
(home-page "https://github.com/SciViews/svGUI/")
(synopsis "Functions for managing GUI clients in R")
(description
"The SciViews @code{svGUI} package eases the management of Graphical User
Interfaces (GUI) in R. It is independent from any particular GUI widgets. It
centralizes info about GUI elements currently used, and it dispatches GUI
calls to the particular toolkits in use in function of the context.")
(license license:gpl2)))
(define-public r-svdialogs
(package
(name "r-svdialogs")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "svDialogs" version))
(sha256
(base32 "0xqppydfawnwk84kb5qiybwbcmv38vn4imgz01mz2pnq4xb80p97"))))
(properties `((upstream-name . "svDialogs")))
(build-system r-build-system)
(inputs
`(("yad" ,yad)
("zenity" ,zenity)))
(propagated-inputs
`(("r-rstudioapi" ,r-rstudioapi)
("r-svgui" ,r-svgui)))
(home-page "https://github.com/SciViews/svDialogs/")
(synopsis "Portable dialog boxes")
(description
"This package helps to construct standard dialog boxes for your GUI, including
message boxes, input boxes, list, file or directory selection, and others. In
case R cannot display GUI dialog boxes, a simpler command line version of these
interactive elements is also provided as a fallback solution.")
(license license:gpl2)))
(define-public r-abe
(package
(name "r-abe")
(version "3.0.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "abe" version))
(sha256
(base32
"1f19h3xzzmjhvwc1rrb8z0rai3ip03y4gdi2gg9bfr5sg2nfklk6"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/abe/")
(synopsis "Augmented backward elimination")
(description
"This package performs augmented backward elimination and checks the
stability of the obtained model. Augmented backward elimination combines
significance or information based criteria with the change in estimate to
either select the optimal model for prediction purposes or to serve as a tool
to obtain a practically sound, highly interpretable model.")
(license license:gpl2+)))
(define-public r-abf2
(package
(name "r-abf2")
(version "0.7-1")
(source
(origin
(method url-fetch)
(uri (cran-uri "abf2" version))
(sha256
(base32 "0d65mc1w4pbiv7xaqzdlw1bfsxf25587rv597hh41vs0j0zlfpxx"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/abf2/")
(synopsis "Load gap-free axon @code{r-abf2} files")
(description
"This package loads electrophysiology data from ABF2 files, as created by
Axon Instruments/Molecular Devices software. Only files recorded in gap-free
mode are currently supported.")
(license license:artistic2.0)))
(define-public r-abhgenotyper
(package
(name "r-abhgenotyper")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "ABHgenotypeR" version))
(sha256
(base32 "08cpmnaaxsm5c5bjifnfxdlvg5inrf13biqpcl2yq5zpqjmiki0l"))))
(properties `((upstream-name . "ABHgenotypeR")))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
("r-reshape2" ,r-reshape2)))
(home-page "https://github.com/StefanReuscher/ABHgenotypeR/")
(synopsis "Visualize and manipulate ABH genotypes")
(description
"The @code{r-abhgenotyper} package provides simple imputation,
error-correction and plotting capacities for genotype data. The package is
supposed to serve as an intermediate but independent analysis tool between the
TASSEL GBS pipeline and the @code{r-qtl} package. It provides functionalities
not found in either TASSEL or @code{r-qtl} in addition to visualization of
genotypes as \"graphical genotypes\".")
(license license:gpl3)))
(define-public r-abjutils
(package
(name "r-abjutils")
(version "0.2.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "abjutils" version))
(sha256
(base32 "0qrsc4if7aif73qp95lw6b5986c2r0jn7m39123zij8k15vc935b"))))
(build-system r-build-system)
(propagated-inputs
`(("r-devtools" ,r-devtools)
("r-dplyr" ,r-dplyr)
("r-glue" ,r-glue)
("r-httr" ,r-httr)
("r-magrittr" ,r-magrittr)
("r-plyr" ,r-plyr)
("r-progress" ,r-progress)
("r-purrr" ,r-purrr)
("r-rstudioapi" ,r-rstudioapi)
("r-scales" ,r-scales)
("r-stringi" ,r-stringi)
("r-stringr" ,r-stringr)
("r-tibble" ,r-tibble)
("r-tidyr" ,r-tidyr)))
(home-page "https://github.com/abjur/abjutils/")
(synopsis "Collection of tools for jurimetrical analysis")
(description
"This package implements general purpose tools, such as functions for
sampling and basic manipulation of Brazilian lawsuits identification number.
It also implements functions for text cleaning, such as accentuation
removal.")
(license license:expat)))

View File

@ -816,3 +816,41 @@ which is also used in the Advanced Encryption Standard (AES, see
@url{http://www.nist.gov/aes}). This cipher is believed to provide very strong
security.")
(license license:gpl2)))
(define-public asignify
(let ((commit "f58e7977a599f040797975d649ed318e25cbd2d5")
(revision "0"))
(package
(name "asignify")
(version (git-version "1.1" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vstakhov/asignify.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1zl68qq6js6fdahxzyhvhrpyrwlv8c2zhdplycnfxyr1ckkhq8dw"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(list "--enable-openssl"
(string-append "--with-openssl="
(assoc-ref %build-inputs "openssl")))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(inputs
`(("openssl" ,openssl-next)))
(home-page "https://github.com/vstakhov/asignify")
(synopsis "Cryptographic authentication and encryption tool and library")
(description "Asignify offers public cryptographic signatures and
encryption with a library or a command-line tool. The tool is heavily inspired
by signify as used in OpenBSD. The main goal of this project is to define a
high level API for signing files, validating signatures and encrypting using
public-key cryptography. Asignify is designed to be portable and self-contained
with zero external dependencies. Asignify can verify OpenBSD signatures, but it
cannot sign messages in OpenBSD format yet.")
(license license:bsd-2))))

View File

@ -1457,7 +1457,7 @@ columns, primary keys, unique constraints and relationships.")
(define-public perl-dbd-mysql
(package
(name "perl-dbd-mysql")
(version "4.046")
(version "4.047")
(source
(origin
(method url-fetch)
@ -1465,10 +1465,24 @@ columns, primary keys, unique constraints and relationships.")
"DBD-mysql-" version ".tar.gz"))
(sha256
(base32
"1xziv9w87cl3fbl1mqkdrx28mdqly3gs6gs1ynbmpl2rr4p6arb1"))))
"0idizgr0hr7sj92fbdlb3gv6cva15jkpaq28wrdw4j4p7awx2mls"))))
(build-system perl-build-system)
;; Tests require running MySQL server
(arguments `(#:tests? #f))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'skip-library-detection
;; Avoid depencies on perl-devel-checklib, openssl, and zlib. They
;; are really only needed for the test suite; their absence does not
;; affect the build or the end result.
(lambda _
(substitute* "Makefile.PL"
(("use Devel::CheckLib;" match)
(string-append "# " match))
(("assert_lib")
"print"))
#t)))
;; Tests require running MySQL server.
#:tests? #f))
(propagated-inputs
`(("perl-dbi" ,perl-dbi)
("mysql" ,mysql)))

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2015, 2018 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2017 Frederick Muriithi <fredmanglis@gmail.com>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
@ -20,7 +20,7 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages ldc)
(define-module (gnu packages dlang)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
@ -172,9 +172,9 @@ and freshness without requiring additional information from the user.")
(base32
"0z6ch930wjkg2vlnqkbliwxxxifad6ydsdpwdxwnajkb2kaxsjx4"))))))
(home-page "http://wiki.dlang.org/LDC")
(synopsis "LLVM compiler for the D programming language")
(synopsis "LLVM-based compiler for the D programming language")
(description
"LDC is a compiler for the D programming language. It is based on
"LDC is an LLVM compiler for the D programming language. It is based on
the latest DMD compiler that was written in C and is used for
bootstrapping more recent compilers written in D.")
;; Most of the code is released under BSD-3, except for code originally
@ -188,11 +188,11 @@ bootstrapping more recent compilers written in D.")
;; Phobos, druntime and dmd-testsuite library dependencies do
;; not always have a newer release than the compiler, hence we
;; retain this variable.
(let ((older-version "1.7.0"))
(let ((older-version "1.10.0")) ;; retain this because sometimes the libs are older
(package
(inherit ldc-bootstrap)
(name "ldc")
(version "1.7.0")
(version "1.10.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -201,7 +201,7 @@ bootstrapping more recent compilers written in D.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0rqchmlbhz1pd8ksl1vfhfd5s3cp9h9pqi4k4w2np9sq0zr7abwn"))))
"16b1h9kwfggjw6ykc6sfs26ak6vypylsx9wmvp5m6x3cvi6g70yi"))))
(arguments
`(#:phases
(modify-phases %standard-phases
@ -235,6 +235,8 @@ bootstrapping more recent compilers written in D.")
(delete-file "tests/compilable/ctfe_math.d")
(delete-file "tests/debuginfo/nested_gdb.d")
(delete-file "tests/debuginfo/classtypes_gdb.d")
;; the following tests plugins we don't have.
(delete-file "tests/plugins/addFuncEntryCall/testPlugin.d")
;; the following tests requires AVX instruction set in the CPU.
(substitute* "tests/d2/dmd-testsuite/runnable/test_cdvecfill.d"
(("^// DISABLED: ") "^// DISABLED: linux64 "))
@ -246,8 +248,8 @@ bootstrapping more recent compilers written in D.")
(setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
(invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
(native-inputs
`(("llvm" ,llvm-3.8)
("clang" ,clang-3.8)
`(("llvm" ,llvm)
("clang" ,clang)
("ldc" ,ldc-bootstrap)
("python-lit" ,python-lit)
("python-wrapper" ,python-wrapper)
@ -261,7 +263,7 @@ bootstrapping more recent compilers written in D.")
older-version ".tar.gz"))
(sha256
(base32
"042hn3v0zk353r0h6yclq56z86hi437y969bckyb2qsnv00h60hi"))
"0cpmrww00xf1qx38bcc22rr05qw41p00p45yb5fbwnfaccfwdn0s"))
;; This patch deactivates some tests that depend on network access
;; to pass. It also deactivates some tests that have some reliance
;; on timezone.
@ -271,7 +273,7 @@ bootstrapping more recent compilers written in D.")
;; that is being pursued at
;; <https://forum.dlang.org/post/zmdbdgnzrxyvtpqafvyg@forum.dlang.org>.
;; It also deactivates a test that requires /root
(patches (search-patches "ldc-1.7.0-disable-phobos-tests.patch"))))
(patches (search-patches "ldc-disable-phobos-tests.patch"))))
("druntime-src"
,(origin
(method url-fetch)
@ -280,7 +282,7 @@ bootstrapping more recent compilers written in D.")
older-version ".tar.gz"))
(sha256
(base32
"0pvabk70zw8c1gbmvy2i486bg22bn0l5nbacjz0qwmhf0w9y9ylh"))))
"1akh2vdi98jih8642yjbvv2vavxzrmq24kz8i3kfidg5ndqyv222"))))
("dmd-testsuite-src"
,(origin
(method url-fetch)
@ -289,7 +291,7 @@ bootstrapping more recent compilers written in D.")
older-version ".tar.gz"))
(sha256
(base32
"1i8j1raah7b26bprwkdick443ivdsihgi1l14sn9rh4a95rnrpd9")))))))))
"0z5x07qrbkpksshaymp11ir6jlmg9wjicxn6zhp8cya6i1ha9p99")))))))))
(define-public dub
(package

View File

@ -292,7 +292,7 @@ asynchronous fashion.")
(define-public unbound
(package
(name "unbound")
(version "1.7.3")
(version "1.8.0")
(source
(origin
(method url-fetch)
@ -300,7 +300,7 @@ asynchronous fashion.")
version ".tar.gz"))
(sha256
(base32
"0bb0p8nbda77ghx20yfl7hqxm9x709223q35465v99i8v4ay27f1"))))
"0gxqc4ynd2g1a5dwaazqh9n8injh49a7dz0l9bbxqgv47dnrvxvq"))))
(build-system gnu-build-system)
(outputs '("out" "python"))
(native-inputs

View File

@ -5,6 +5,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.
;;;
@ -28,8 +29,13 @@
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
#:use-module (gnu packages m4)
#:use-module (gnu packages compression))
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages xml))
(define-public elfutils
(package
@ -85,6 +91,70 @@ Executable and Linkable Format (@dfn{ELF}). This includes @command{ld},
;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+.
(license lgpl3+)))
(define-public libabigail
(package
(name "libabigail")
(home-page "https://sourceware.org/libabigail/")
(version "1.4")
(source (origin
(method url-fetch)
(uri (string-append "https://sourceware.org/pub/" name
"/" name "-" version ".tar.gz"))
(sha256
(base32
"17r8i60lxykvdd9pdidmnvkzgf9k8zman0c1czl3zbx0znhlx497"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--disable-static"
"--enable-bash-completion"
"--enable-manual")
#:make-flags '("V=1")
#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-source
(lambda _
(substitute* "build-aux/ltmain.sh"
;; Don't add -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
;; to the GCC command line.
(("compiler_flags=\"-specs=.*")
"compiler_flags=\n"))
#t))
(add-after 'build 'build-documentation
(lambda _
(invoke "make" "-C" "doc/manuals" "html-doc" "man" "info")))
(add-before 'check 'set-test-environment
(lambda _
(setenv "XDG_CACHE_HOME" "/tmp")
#t))
(add-after 'install 'install-documentation
(lambda _
(invoke "make" "-C" "doc/manuals"
"install-man-and-info-doc")))
(add-after 'install-documentation 'install-bash-completion
(lambda* (#:key outputs #:allow-other-keys)
(for-each (lambda (file)
(install-file
file (string-append (assoc-ref outputs "out")
"/share/bash-completion"
"/completions")))
(find-files "bash-completion" ".*abi.*"))
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)
("makeinfo" ,texinfo)
("python-sphinx" ,python-sphinx)
("python" ,python))) ;for tests
(propagated-inputs
`(("elfutils" ,elfutils) ;libabigail.la says -lelf
("libxml2" ,libxml2))) ;in Requires.private of libabigail.pc
(synopsis "Analyze application binary interfaces (ABIs)")
(description
"@dfn{ABIGAIL} stands for the Application Binary Interface Generic
Analysis and Instrumentation Library. It is a framework which aims at
helping developers and software distributors to spot ABI-related issues
like interface incompatibility in ELF shared libraries by performing a
static analysis of the ELF binaries at hand.")
(license lgpl3+)))
(define-public libelf
(package
(name "libelf")

View File

@ -64,6 +64,7 @@
#:use-module (guix monads)
#:use-module (guix store)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system emacs)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system trivial)
@ -85,6 +86,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages xorg)
#:use-module (gnu packages lesstif)
#:use-module (gnu packages llvm)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
#:use-module (gnu packages version-control)
@ -114,6 +116,8 @@
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages shells)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages video)
#:use-module (gnu packages haskell)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match))
@ -1635,20 +1639,20 @@ and stored in memory.")
(define-public emacs-bui
(package
(name "emacs-bui")
(version "1.1.0")
(version "1.2.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/alezost/bui.el/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://notabug.org/alezost/emacs-bui.git")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"112k0mq6xpy0r47vk66miw7rxbkv3d06pv3pd0vcmrhcnhnnk486"))))
"0ixia5s41f2nbal3wsixacbhbc0mk9yb75ir1amqakip30sq4apv"))))
(build-system emacs-build-system)
(propagated-inputs
`(("dash" ,emacs-dash)))
(home-page "https://github.com/alezost/bui.el")
(home-page "https://notabug.org/alezost/emacs-bui")
(synopsis "Buffer interface library for Emacs")
(description
"BUI (Buffer User Interface) is a library for making @code{list} and
@ -1659,38 +1663,42 @@ type, for example: packages, buffers, files, etc.")
(define-public emacs-guix
(package
(name "emacs-guix")
(version "0.4.1.1")
(version "0.5")
(source (origin
(method url-fetch)
(uri (string-append "https://emacs-guix.gitlab.io/website/"
"releases/emacs-guix-" version ".tar.gz"))
(sha256
(base32
"0jbnrcazbks7h50rngpw5l40a6vn2794kb53cpva3yzdjmrc1955"))))
"09zxd8x674vrpigmcx8l00ifhaxh35xwkwjb8dw9kydnhv9hyyi1"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(let ((guix (assoc-ref %build-inputs "guix"))
(gcrypt (assoc-ref %build-inputs "guile-gcrypt"))
(geiser (assoc-ref %build-inputs "geiser"))
(dash (assoc-ref %build-inputs "dash"))
(bui (assoc-ref %build-inputs "bui"))
(magit-popup (assoc-ref %build-inputs "magit-popup"))
(edit-indirect (assoc-ref %build-inputs "edit-indirect"))
(site-lisp "/share/emacs/site-lisp"))
(list (string-append "--with-guix-site-dir="
(car (find-files (string-append guix
"/share/guile/site")
(lambda (file stat)
(string-prefix?
"2."
(basename file)))
#:directories? #t)))
(string-append "--with-guix-site-ccache-dir="
(car (find-files (string-append guix "/lib/guile")
(site-lisp "/share/emacs/site-lisp")
(site-scm "/share/guile/site")
(site-go "/lib/guile")
(guile-dir (lambda (dir)
(car (find-files dir
(lambda (file stat)
(string-prefix?
"2." (basename file)))
#:directories? #t))
#:directories? #t)))))
(list (string-append "--with-guix-site-dir="
(guile-dir (string-append guix site-scm)))
(string-append "--with-guix-site-ccache-dir="
(guile-dir (string-append guix site-go))
"/site-ccache")
(string-append "--with-guile-gcrypt-site-dir="
(guile-dir (string-append gcrypt site-scm)))
(string-append "--with-guile-gcrypt-site-ccache-dir="
(guile-dir (string-append gcrypt site-go))
"/site-ccache")
(string-append "--with-geiser-lispdir=" geiser site-lisp)
(string-append "--with-dash-lispdir="
@ -1713,6 +1721,7 @@ type, for example: packages, buffers, files, etc.")
("guix" ,guix)))
(propagated-inputs
`(("geiser" ,geiser)
("guile-gcrypt" ,guile-gcrypt)
("dash" ,emacs-dash)
("bui" ,emacs-bui)
("edit-indirect" ,emacs-edit-indirect)
@ -1729,21 +1738,21 @@ management tasks from Emacs. To begin with, run @code{M-x guix-about} or
(define-public emacs-build-farm
(package
(name "emacs-build-farm")
(version "0.2")
(version "0.2.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/alezost-emacs/build-farm")
(commit "fa7fa54901416fc5c216a5014394cbd73a61efc6")))
(url "https://notabug.org/alezost/emacs-build-farm.git")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1zw3pivma6cv9j7k7qm02jd6wnxmsc1v2mjcssd50im99zzrqflh"))))
"1a4ky0hca26p7f3i2c2s5517ygkyaaz52vs0vxy6f5q95rhlgdhd"))))
(build-system emacs-build-system)
(propagated-inputs
`(("bui" ,emacs-bui)
("magit-popup" ,emacs-magit-popup)))
(home-page "https://gitlab.com/alezost-emacs/build-farm")
(home-page "https://notabug.org/alezost/emacs-build-farm")
(synopsis "Emacs interface for Hydra and Cuirass build farms")
(description
"This Emacs package provides an interface for Hydra and
@ -2725,6 +2734,49 @@ front-ends. Company comes with many back-ends, e.g. @code{company-elisp}.
These are distributed in separate files and can be used individually.")
(license license:gpl3+)))
(define-public emacs-irony-mode
(package
(name "emacs-irony-mode")
(version "1.2.0")
(home-page "https://github.com/Sarcasm/irony-mode")
(source (origin
(method url-fetch)
(uri (string-append home-page "/archive/v" version ".tar.gz"))
(sha256
(base32
"1f68zi0glkg2aly66s07rx3w0b0hdi1znxan02h6dbabaadylk99"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system emacs-build-system)
(arguments '())
(propagated-inputs
`(("emacs-irony-mode-server" ,emacs-irony-mode-server)))
(synopsis "C/C++/ObjC Code completion and syntax checks for Emacs")
(description "Irony-mode provides Clang-assisted syntax checking and
completion for C, C++, and ObjC in GNU Emacs. Using @code{libclang} it can
provide syntax checking and autocompletion on compiler level which is very
resistent against false positives. It also integrates well with other
packages like @code{eldoc-mode} and especially @code{company-mode} as
described on the homepage.")
(license license:gpl3+)))
(define-public emacs-irony-mode-server
(package (inherit emacs-irony-mode)
(name "emacs-irony-mode-server")
(inputs
`(("clang" ,clang)))
(propagated-inputs '())
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(invoke "cmake"
"server"
(string-append "-DCMAKE_INSTALL_PREFIX=" out)) #t))))))
(build-system cmake-build-system)
(synopsis "Server for the Emacs @dfn{irony mode}")))
(define-public emacs-company-quickhelp
(package
(name "emacs-company-quickhelp")
@ -3436,7 +3488,7 @@ regardless of @code{highlight-symbol-idle-delay}.
(define-public emacs-hl-todo
(package
(name "emacs-hl-todo")
(version "1.8.0")
(version "1.9.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -3445,7 +3497,7 @@ regardless of @code{highlight-symbol-idle-delay}.
(file-name (string-append "hl-todo-" version ".el"))
(sha256
(base32
"0g0h9v4572p7mcird8wsj1c41haf60krslm6mlpi4mdbh248kv6z"))))
"0728givzh7xv5i88ac9if8byj1p8bilrj1fnizca10s0rv100hdr"))))
(build-system emacs-build-system)
(home-page "https://github.com/tarsius/hl-todo")
(synopsis "Emacs mode to highlight TODO and similar keywords")
@ -4415,6 +4467,227 @@ If you want to mark a folder manually as a project just create an empty
and RSS, with a user interface inspired by notmuch.")
(license license:gpl3+)))
(define-public emacs-el-x
(package
(name "emacs-el-x")
(version "0.3.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sigma/el-x.git")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1i6j44ssxm1xdg0mf91nh1lnprwsaxsx8vsrf720nan7mfr283h5"))))
(build-system emacs-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; Move the source files to the top level, which is included in
;; the EMACSLOADPATH.
(add-after 'unpack 'move-source-files
(lambda _
(let ((el-files (find-files "./lisp" ".*\\.el$")))
(for-each (lambda (f)
(rename-file f (basename f)))
el-files))
#t)))))
(home-page "https://github.com/sigma/el-x")
(synopsis "Emacs Lisp extensions")
(description "command@{emacs-el-x} defines the @code{dflet} macro to
provide the historic behavior of @code{flet}, as well as
@code{declare-function} stub for older Emacs.")
(license license:gpl2+)))
(define-public emacs-mocker
(package
(name "emacs-mocker")
(version "0.3.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sigma/mocker.el.git")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1lav7am41v63xgavq8pr88y828jmd1cxd4prjq7jlbxm6nvrwxh2"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
#:test-command '("ert-runner")))
(native-inputs
`(("ert-runner" ,ert-runner)))
(propagated-inputs
`(("emacs-el-x" ,emacs-el-x)))
(home-page "https://github.com/sigma/mocker.el")
(synopsis "Mocking framework for Emacs Lisp")
(description "Mocker.el is a framework for writing tests in Emacs Lisp.
It uses regular Lisp rather than a domain specific language (DSL), which
maximizes flexibility (at the expense of conciseness).")
(license license:gpl2+)))
(define-public emacs-find-file-in-project
(package
(name "emacs-find-file-in-project")
(version "5.4.7")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/technomancy/find-file-in-project.git")
(commit version)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1sdnyqv69mipbgs9yax88m9b6crsa59rjhwrih197pifl4089awr"))))
(build-system emacs-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'set-shell
;; Otherwise Emacs shell-file-name is set to "/bin/sh", which doesn't
;; work.
(lambda _
(setenv "SHELL" (which "sh"))
#t)))
#:tests? #t
#:test-command '("./tests/test.sh")))
(home-page "https://github.com/technomancy/find-file-in-project")
(synopsis "File/directory finder for Emacs")
(description "@code{find-file-in-project} allows to find files or
directories quickly in the current project. The project root is detected
automatically when Git, Subversion or Mercurial are used. It also provides
functions to assist in reviewing changes on files.")
(license license:gpl3+)))
(define-public emacs-pyvenv
(package
(name "emacs-pyvenv")
(version "1.11")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jorgenschaefer/pyvenv.git")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1a346qdimr1dvj53q033aqnahwd2dhyn9jadrs019nm0bzgw7g63"))))
(build-system emacs-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; This phase incorrectly attempts to substitute "activate" and fails
;; doing so.
(delete 'patch-el-files))
#:tests? #t
#:test-command '("ert-runner")))
(native-inputs
`(("ert-runner" ,ert-runner)
("emacs-mocker" ,emacs-mocker)))
(home-page "https://github.com/jorgenschaefer/pyvenv")
(synopsis "Virtualenv minor mode for Emacs")
(description "pyvenv.el is a minor mode to support using Python virtual
environments (virtualenv) inside Emacs.")
(license license:gpl3+)))
(define-public emacs-highlight-indentation
(package
(name "emacs-highlight-indentation")
(version "0.7.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/antonj/Highlight-Indentation-for-Emacs.git")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"00l54k75qk24a0znzl4ij3s3nrnr2wy9ha3za8apphzlm98m907k"))))
(build-system emacs-build-system)
(home-page "https://github.com/antonj/Highlight-Indentation-for-Emacs/")
(synopsis "Highlighting indentation for Emacs")
(description "Provides two minor modes to highlight indentation guides in Emacs:
@enumerate
@item @code{highlight-indentation-mode}, which displays guidelines
indentation (space indentation only).
@item @code{highlight-indentation-current-column-mode}, which displays guidelines for the current-point indentation (space indentation only).
@end enumerate")
(license license:gpl2+)))
(define-public emacs-elpy
(package
(name "emacs-elpy")
(version "1.24.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jorgenschaefer/elpy.git")
(commit version)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0rsg8a9nwqfkv0xcs11jzfp10ij7jm0v2ikx19zv2v7awqy0q5wf"))))
(build-system emacs-build-system)
(arguments
`(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include)
#:phases
;; TODO: Make `elpy-config' display Guix commands :)
(modify-phases %standard-phases
;; One elpy test depends on being run inside a Python virtual
;; environment to pass. We have nothing to gain from doing so here,
;; so we just trick Elpy into thinking we are (see:
;; https://github.com/jorgenschaefer/elpy/pull/1293).
(add-before 'check 'fake-virtualenv
(lambda _
(setenv "VIRTUAL_ENV" "/tmp")
#t))
(add-before 'check 'build-doc
(lambda _
(with-directory-excursion "docs"
(invoke "make" "info" "man"))
;; Move .info file at the root so that it can installed by the
;; 'move-doc phase.
(rename-file "docs/_build/texinfo/Elpy.info" "Elpy.info")
#t))
(add-after 'build-doc 'install-manpage
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man1 (string-append out "/share/man/man1")))
(mkdir-p man1)
(copy-file "docs/_build/man/elpy.1"
(string-append man1 "/elpy.1")))
#t)))
#:tests? #t
#:test-command '("ert-runner")))
(propagated-inputs
`(("emacs-company" ,emacs-company)
("emacs-find-file-in-project" ,emacs-find-file-in-project)
("emacs-highlight-indentation" ,emacs-highlight-indentation)
("emacs-yasnippet" ,emacs-yasnippet)
("pyvenv" ,emacs-pyvenv)
("s" ,emacs-s)))
(native-inputs
`(("ert-runner" ,ert-runner)
("emacs-f" ,emacs-f)
("python" ,python-wrapper)
("python-autopep8" ,python-autopep8)
("python-black" ,python-black)
("python-flake8" ,python-flake8)
("python-jedi" ,python-jedi)
("python-yapf" ,python-yapf)
;; For documentation.
("python-sphinx" ,python-sphinx)
("texinfo" ,texinfo)))
(home-page "https://github.com/jorgenschaefer/elpy")
(synopsis "Python development environment for Emacs")
(description "Elpy brings powerful Python editing to Emacs. It combines
and configures a number of other packages written in Emacs Lisp as well as
Python, together offering features such as navigation, documentation,
completion, interactive development and more.")
(license license:gpl3+)))
(define-public emacs-rainbow-delimiters
(package
(name "emacs-rainbow-delimiters")
@ -4648,7 +4921,7 @@ ack, ag, helm and pt.")
(define-public emacs-helm
(package
(name "emacs-helm")
(version "2.9.6")
(version "3.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -4657,7 +4930,7 @@ ack, ag, helm and pt.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1f7m09i8gr0gk5nw5dn7rpdz20dg3hl4p77dpygkhl82yhk9q2ql"))))
"0k2r0ccppaqfjvyszaxa16vf7g2qzj1clhfr6v646ncsy17laciw"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)
@ -4907,11 +5180,11 @@ extensions.")
(license license:gpl3+))))
(define-public emacs-evil-collection
(let ((commit "5d739f58118a5a316c4fe25adb4e13ccea3fdc10")
(revision "2"))
(let ((commit "b55ae90f367e103e6568ae00779a8a51c68a0104")
(revision "3"))
(package
(name "emacs-evil-collection")
(version (git-version "20180721" revision commit))
(version (git-version "20180911" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
@ -4920,7 +5193,7 @@ extensions.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"05p612qncd0cp5q61hq2ag1k558vhb10049xrc88n9l6qwz9bpk3"))))
"0n7bzi5s7rqi78l1424sxvsk2g46z7ksq02xx5jrmqymnij90jml"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)))
@ -5623,7 +5896,7 @@ Yasnippet.")
(define-public emacs-helm-system-packages
(package
(name "emacs-helm-system-packages")
(version "1.10.0")
(version "1.10.1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -5632,7 +5905,7 @@ Yasnippet.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0y5wzvfycb1bvgdk782xyl744fih43vz14wmq6gcqjarw6xfniz5"))))
"01by0c4lqi2cw8xmbxkjw7m9x78zssm31sx4hdpw5j35s2951j0f"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)))
@ -9539,6 +9812,29 @@ The default setup uses helm-bibtex.
You should really read org-ref.org in this package for details.")
(license license:gpl3+))))
(define-public emacs-org-reveal
(package
(name "emacs-org-reveal")
;; There are no proper tag, so we use the latest commit of the stable
;; branch, as does MELPA.
(version "20161027.926")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/yjwen/org-reveal.git")
(commit "001567cc12d50ba07612edd1718b86a12e8c2547")))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"18rma8smjrskbjyna076zhvx79zs5r5vinb537h8mw13pfxd6cm8"))))
(build-system emacs-build-system)
(home-page "https://github.com/yjwen/org-reveal")
(synopsis "Org and Reveal.js powered HTML presentation tool")
(description "Org-Reveal is a command@{org-mode} extension that allows to
create beautiful presentations (slides) with 3D effects from simple but
powerful Org contents.")
(license license:gpl3+)))
(define-public emacs-add-hooks
(package
(name "emacs-add-hooks")
@ -11691,21 +11987,19 @@ buffers other modes on the TODO list).
(license license:gpl3))))
(define-public emacs-magit-todos
;; TODO: <1.1 is broken with Guix. Switch to 1.1 when out.
(let ((commit "966642762788d335dc2d3667d230a36ede65972e"))
(package
(name "emacs-magit-todos")
(version (git-version "1.0.4" "1" commit))
(version "1.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/alphapapa/magit-todos")
(commit commit)))
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0nxarip8sf0446xfgrcfsjm4vbsg50klxjbr4i6h09a3lri03gyp"))))
"1mvzbxshr6zjdim3jd368ar1hy5l7n22i03cpvzdmrw83kkwdyhd"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)
@ -11721,7 +12015,7 @@ buffers other modes on the TODO list).
comments and Org files in the Magit status buffer. Activating an item jumps
to it in its file. By default, it uses keywords from @code{hl-todo}, minus a
few (like NOTE).")
(license license:gpl3))))
(license license:gpl3)))
(define-public emacs-git-annex
;; Unreleased version has a fontification fix.
@ -11749,3 +12043,135 @@ hiding the symbolic links and fontified based on whether content is present.
Commands for performing some common operations (e.g., unlocking and adding
files) are provided.")
(license license:gpl2+))))
(define-public emacs-hackernews
(let ((commit "d8c450bbc76d6bb65ec5cdb6c3b888a23f3769e9"))
(package
(name "emacs-hackernews")
(version (git-version "0.4.0" "1" commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/clarete/hackernews.el")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"06mp4n6c300jv5lhwf50ircfjckzr2p1zd38s4mqnxxjlf1maim7"))))
(build-system emacs-build-system)
(home-page "https://github.com/clarete/hackernews.el")
(synopsis "Hacker News client for Emacs")
(description "The @command{hackernews} package is able to fetch stories
from six different Hacker News feeds, namely top, new, best, ask, show and job
stories. The default feed is top stories, which corresponds to the Hacker
News homepage.")
(license license:gpl3))))
(define-public emacs-youtube-dl
(let ((commit "7c9d7a7d05b72a7d1b1257a36c5e2b2567b185dd"))
(package
(name "emacs-youtube-dl")
(version (git-version "1.0" "1" commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/skeeto/youtube-dl-emacs/")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0mh4s089a4x8s380agzb2306kdp1hl204px1n5rrrrdcls7imnh6"))))
(build-system emacs-build-system)
(inputs
`(("youtube-dl" ,youtube-dl)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'configure
(lambda* (#:key inputs #:allow-other-keys)
(let ((youtube-dl (assoc-ref inputs "youtube-dl")))
;; .el is read-only in git.
(chmod "youtube-dl.el" #o644)
;; Specify the absolute file names of the various
;; programs so that everything works out-of-the-box.
(emacs-substitute-variables
"youtube-dl.el"
("youtube-dl-program"
(string-append youtube-dl "/bin/youtube-dl")))))))))
(home-page "https://github.com/skeeto/youtube-dl-emacs/")
(synopsis "Emacs youtube-dl download manager")
(description "This package manages a video download queue for
@command{youtube-dl}, which serves as the back end. It manages a single
@command{youtube-dl} subprocess, downloading one video at a time. New videos
can be queued at any time.")
(license license:unlicense))))
(define-public emacs-org-web-tools
(package
(name "emacs-org-web-tools")
(version "1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/alphapapa/org-web-tools")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0kak9h5ny00d39gnwspv53nadnag01brw2fq9zk5wpfc91h9bjng"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-esxml" ,emacs-esxml)
("emacs-s" ,emacs-s)))
(inputs
`(("pandoc" ,ghc-pandoc)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-exec-paths
(lambda* (#:key inputs #:allow-other-keys)
(let ((pandoc (assoc-ref inputs "pandoc")))
(substitute* "org-web-tools.el"
(("\"pandoc\"") (string-append "\"" pandoc "/bin/pandoc\"")))
#t))))))
(home-page "https://github.com/alphapapa/org-web-tools")
(synopsis "Display/Process web page as Org-mode content")
(description "This package contains library functions and commands useful
for retrieving web page content and processing it into Org-mode content.
For example, you can copy a URL to the clipboard or kill-ring, then run a
command that downloads the page, isolates the readable content with
@command{eww-readable}, converts it to Org-mode content with Pandoc, and
displays it in an Org-mode buffer. Another command does all of that but
inserts it as an Org entry instead of displaying it in a new buffer.")
(license license:gpl3+)))
(define-public emacs-blimp
(let ((commit "e420763d6d18b5d1be552cdbc47f91418343db03"))
(package
(name "emacs-blimp")
(version (git-version "0.0.0" "1" commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/walseb/blimp")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"09wmhpym516b81dfq8smdmysh1fn610dzlyvyl2rkx8600f0fizd"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-eimp" ,emacs-eimp)))
(home-page "https://github.com/walseb/blimp")
(synopsis "Emacs wrapper around all Imagemagick commands")
(description "Blimp (Bustling Image Manipulation Package) is a complete
wrapper around all Imagemagick commands with descriptions, autocompletion (for
some commands) and hints displayed in prompt using @command{eimp.el} to
execute its commands and resize images.")
(license license:gpl3+))))

View File

@ -1066,7 +1066,7 @@ emulation community. It provides highly accurate emulation.")
(base32 "0h6y2hpjg4b470jvn9ghwp0k3a527sbb6xhia17frlm9w9v5028w"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
`(#:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
(replace 'configure
@ -1079,12 +1079,21 @@ emulation community. It provides highly accurate emulation.")
(("libvulkan.so") (string-append vulkan "/lib/libvulkan.so")))
(substitute* "qb/qb.libs.sh"
(("/bin/true") (which "true")))
;; Use shared zlib.
(substitute* '("libretro-common/file/archive_file_zlib.c"
"libretro-common/streams/trans_stream_zlib.c"
"network/httpserver/httpserver.c")
(("<compat/zlib.h>") "<zlib.h>"))
;; The configure script does not yet accept the extra arguments
;; (like CONFIG_SHELL=) passed by the default configure phase.
(zero? (system*
(invoke
"./configure"
,@(if (string-prefix? "armhf" (or (%current-target-system)
(%current-system)))
'("--enable-neon" "--enable-floathard")
'())
(string-append "--prefix=" out)
(string-append "--global-config-dir=" etc)))))))))
(string-append "--global-config-dir=" etc))))))))
(inputs
`(("alsa-lib" ,alsa-lib)
("ffmpeg" ,ffmpeg)

View File

@ -753,41 +753,51 @@ It contains the following fonts and styles:
(define-public font-fantasque-sans
(package
(name "font-fantasque-sans")
(version "1.7.1")
(version "1.7.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/belluzj/fantasque-sans/"
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/belluzj/fantasque-sans.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"07fpy53k2x2nz5q61swkab6cfk9gw2kc4x4brsj6zjgbm16fap85"))))
"1gjranq7qf20rfxnpxsckv1hl35nzsal0rjs475nhfbpqy5wmly6"))))
(build-system gnu-build-system)
(native-inputs
`(("ttfautohint" ,ttfautohint)
("woff-tools" ,woff-tools)
("fontforge" ,fontforge)
("woff2" ,woff2)
("ttf2eot" ,ttf2eot)))
("ttf2eot" ,ttf2eot)
("zip" ,zip)))
(arguments
`(#:tests? #f ;test target intended for visual inspection
#:phases (modify-phases %standard-phases
(delete 'configure) ;no configuration
(add-before 'build 'xrange->range
;; Rather than use a python2 fontforge, just replace the
;; offending function.
(lambda _
(substitute* "Scripts/fontbuilder.py"
(("xrange") "range"))
#t))
(replace 'install
;; 'make install' wants to install to ~/.fonts, install to
;; output instead.
;; output instead. Install only the "Normal" variant.
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(font-dir (string-append out "/share/fonts"))
(truetype-dir (string-append font-dir "/truetype"))
(opentype-dir (string-append font-dir "/opentype"))
(webfonts-dir (string-append font-dir "/webfonts")))
(with-directory-excursion "Variants/Normal"
(copy-recursively "OTF" opentype-dir)
(for-each (lambda (f) (install-file f truetype-dir))
(find-files "." "\\.ttf$"))
(copy-recursively "Webfonts" webfonts-dir)
#t))))))
#t)))))))
(synopsis "Font family with a monospaced variant for programmers")
(description
"Fantasque Sans Mono is a programming font designed with functionality in

View File

@ -170,7 +170,7 @@ as required.")
(define-public libfilezilla
(package
(name "libfilezilla")
(version "0.12.3")
(version "0.13.1")
(source
(origin
(method url-fetch)
@ -178,7 +178,7 @@ as required.")
name "/" name "-" version ".tar.bz2"))
(sha256
(base32
"1v606kcz2rdmmlwxrv3xvwh7ia1nh6jfc9bhjw2r4ai3rm16gch5"))))
"0347zkapp0wrhfm1yzw7wa1v3lww65ch176scifxn8f9068f1ixb"))))
(build-system gnu-build-system)
(native-inputs
`(("cppunit" ,cppunit)

View File

@ -186,13 +186,13 @@ authentication and support for SSL3 and TLS.")
(define-public gnurl
(package
(name "gnurl")
(version "7.61.0")
(version "7.61.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gnunet/" name "-" version ".tar.Z"))
(sha256
(base32
"1h03zkd9mp4xb5icirl3bfd64r5x8j9ka1hw9qd0n1ql1w0ilz23"))))
"0amnhhmlxaliz2rzp3zf1x6ixjqvgmiq7in0q14gd21rjlk9kvir"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ; 1.5 MiB of man3 pages

View File

@ -1655,3 +1655,46 @@ Parcellite and adds bugfixes and features.")
it does not deal with windowing system surfaces, drawing, scene graphs, or
input.")
(license license:expat)))
(define-public yad
(package
(name "yad")
(version "0.40.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/v1cont/yad.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1vpgbjbkkbk5plicyklzpf65j1vlig4n4bi3qpvrz5bb09ic5alw"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
'("--with-gtk=gtk3"
"--enable-html"
"--enable-gio"
"--enable-spell"
"--enable-icon-browser")
#:phases
(modify-phases %standard-phases
(replace 'bootstrap
(lambda _
(invoke "autoreconf" "-vif")
(invoke "intltoolize" "--force" "--automake")
#t)))))
(inputs
`(("gtk+" ,gtk+)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(home-page "https://sourceforge.net/projects/yad-dialog/")
(synopsis "GTK+ dialog boxes for shell scripts")
(description
"This program allows you to display GTK+ dialog boxes from command line or
shell scripts. Example of how to use @code{yad} can be consulted at
@url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.")
(license license:gpl3+)))

View File

@ -2025,8 +2025,8 @@ convenient nested tree operations.")
(license license:gpl3+)))
(define-public guile-simple-zmq
(let ((commit "1f3b7c0b9b249c6fde8e8a632b252d8a1b794424")
(revision "1"))
(let ((commit "5bb66a0499f94006cfd18b58e80ad6623f911c31")
(revision "2"))
(package
(name "guile-simple-zmq")
(version (git-version "0.0.0" revision commit))
@ -2038,7 +2038,7 @@ convenient nested tree operations.")
(commit commit)))
(sha256
(base32
"0nj2pd5bsmmgd3c54wh4sixfhmsv1arsq7yam2d7487h3n9q57r7"))
"0dj1brjqa7m4k71sf94aq26ca0la3nr894kfmjnqkpawqfp4dyaz"))
(file-name (git-file-name name version))))
(build-system guile-build-system)
(arguments
@ -2063,8 +2063,8 @@ messaging library.")
(license license:gpl3+))))
(define-public jupyter-guile-kernel
(let ((commit "a5c5f3ea3215b65e770bcb62f71117b0ec4575ed")
(revision "0"))
(let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
(revision "1"))
(package
(name "jupyter-guile-kernel")
(version (git-version "0.0.0" revision commit))
@ -2076,7 +2076,7 @@ messaging library.")
(commit commit)))
(sha256
(base32
"0y5jr0f0dyskvsawqbf6n0bpg8jirw4mhqbarf2a6p9lxhqha9s9"))))
"0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f"))))
(build-system guile-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
@ -2100,8 +2100,12 @@ messaging library.")
(add-after 'install 'install-kernel
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(json (assoc-ref inputs "guile-json"))
(zmq (assoc-ref inputs "guile-simple-zmq"))
(deps (list json zmq))
(dir (string-append
out "/share/jupyter/kernels/guile")))
out "/share/jupyter/kernels/guile"))
(effective (target-guile-effective-version)))
;; Install kernel.
(install-file "src/kernel.json" dir)
@ -2115,13 +2119,30 @@ messaging library.")
(string-append "\"" (assoc-ref inputs "guile")
"/bin/guile\""))
(("-s")
(string-append "--no-auto-compile\", \"-s")))
;; Add '-L' and '-C' flags so that the kernel
;; finds its dependencies.
(let ((-L (map (lambda (item)
(string-append "\"" item
"/share/guile/site/"
effective "\""))
deps))
(-C (map (lambda (item)
(string-append "\"" item
"/lib/guile/"
effective
"/site-ccache\""))
deps)))
(string-append "--no-auto-compile\""
(string-join -L ", \"-L\", "
'prefix)
(string-join -C ", \"-C\", "
'prefix)
", \"-s"))))
#t))))))
(inputs
`(("openssl" ,openssl)
("guile" ,guile-2.2)))
(propagated-inputs
`(("guile-json" ,guile-json)
("guile" ,guile-2.2)
("guile-json" ,guile-json)
("guile-simple-zmq" ,guile-simple-zmq)))
(synopsis "Guile kernel for the Jupyter Notebook")
(description

View File

@ -10,6 +10,7 @@
;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;;
;;; This file is part of GNU Guix.
;;;
@ -32,7 +33,7 @@
#:use-module (guix download)
#:use-module ((guix licenses)
#:select (gpl2+ lgpl2.1+ lgpl3+ mpl1.1 mpl2.0
non-copyleft x11-style))
non-copyleft x11-style bsd-3))
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (ice-9 match)
@ -533,6 +534,35 @@ Aldus/Macromedia/Adobe FreeHand documents.")
Microsoft Publisher documents of all versions.")
(license mpl2.0)))
(define-public libnumbertext
(package
(name "libnumbertext")
(version "1.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/numbertext/" name
"/archive/" version ".tar.gz"))
(sha256
(base32
"0wnsn4911fdd2na8jxkcvmk04a6xw6qlviic9w4qwg9fcym6866v"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--disable-static")))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(home-page "https://github.com/Numbertext/libnumbertext")
(synopsis "Language-neutral @code{NUMBERTEXT} and @code{MONEYTEXT} functions")
(description
"The libnumbertext library provides language-neutral @code{NUMBERTEXT}
and @code{MONEYTEXT} functions for LibreOffice Calc, available for C++ and
Java.")
(license (list lgpl3+ bsd-3))))
(define-public libpagemaker
(package
(name "libpagemaker")
@ -905,7 +935,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.")
(define-public libreoffice
(package
(name "libreoffice")
(version "6.0.6.2")
(version "6.1.0.3")
(source
(origin
(method url-fetch)
@ -915,7 +945,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.")
(version-prefix version 3) "/libreoffice-" version ".tar.xz"))
(sha256
(base32
"13kaikaz65xw9a3hxbh245cnydjpy58np22c7s0s65pnmcq68rpi"))
"1n7b6abc0bp9x8lddx60w5br444wf62mdlkqmfk2zmkmiwkcvv2l"))
(patches (search-patches "libreoffice-icu.patch"
"libreoffice-glm.patch"))))
(build-system gnu-build-system)
@ -958,6 +988,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.")
("libltdl" ,libltdl)
("libmspub" ,libmspub)
("libmwaw" ,libmwaw)
("libnumbertext" ,libnumbertext)
("libodfgen" ,libodfgen)
("libpagemaker" ,libpagemaker)
("libqxp" ,libqxp)
@ -984,6 +1015,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.")
("poppler" ,poppler)
("postgresql" ,postgresql)
("python" ,python)
("python-lxml" ,python-lxml)
("redland" ,redland)
("sane-backends" ,sane-backends)
("unixodbc" ,unixodbc)

View File

@ -399,8 +399,8 @@ It has been modified to remove all non-free binary blobs.")
;; 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.6")
(define %linux-libre-hash "1l5caid77vbfb54zrfxkk7qj7lrf9ck9kpn96kr45spkwl51wm8m")
(define %linux-libre-version "4.18.7")
(define %linux-libre-hash "1gn3ip2blczfr5hl20x6c93z8v7h528kl423pzkcn22hin6717wd")
(define %linux-libre-4.18-patches
(list %boot-logo-patch
@ -430,8 +430,8 @@ It has been modified to remove all non-free binary blobs.")
#:patches %linux-libre-4.18-patches
#:configuration-file kernel-config))
(define %linux-libre-4.14-version "4.14.68")
(define %linux-libre-4.14-hash "05l5y0vbbl60jxdbqglqr9c99a8g8lfsp4mcqfpcx1pkh5br7i3l")
(define %linux-libre-4.14-version "4.14.69")
(define %linux-libre-4.14-hash "08pw5hywlx3rsavj74qa17fm9hmhaw2rb1d3ahaqmd1zzsddb3qf")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@ -440,14 +440,14 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
(define-public linux-libre-4.9
(make-linux-libre "4.9.125"
"1saihk61l1kk42jf8yfsfkm77zalq31f0bdlam3c1g7yw702wj9g"
(make-linux-libre "4.9.126"
"0qa9zxa7isn20b9sbjcyrqfynd00phddv3yindp5dmvsng1kwxj8"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
(make-linux-libre "4.4.154"
"08i9fvrmswkydj538wg6c7ggxmhll0ff0bjkw8rnyslqwilfwr1i"
(make-linux-libre "4.4.155"
"1gcnwrgv0xghr550lcl6dmxdl59drzbi02mwp78g8vjql6ihdfys"
%intel-compatible-systems
#:configuration-file kernel-config))

View File

@ -703,40 +703,41 @@ computing environments.")
(define-public python-scikit-learn
(package
(name "python-scikit-learn")
(version "0.19.1")
(version "0.19.2")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/scikit-learn/scikit-learn/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/scikit-learn/scikit-learn.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"18n8775kyfwbvcjjjzda9c5sqy4737c0hrmj6qj1ps2jmlqzair9"))
"1dk9hdj01c0bny4ps78b7869fjw9gr6qklxf6wyql8h6nh4k19xm"))
(patches (search-patches
"python-scikit-learn-fix-test-non-determinism.patch"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'check)
(add-after 'install 'check
;; Running tests from the source directory requires
;; an "inplace" build with paths relative to CWD.
;; http://scikit-learn.org/stable/developers/advanced_installation.html#testing
;; Use the installed version instead.
(lambda* (#:key inputs outputs #:allow-other-keys)
(add-installed-pythonpath inputs outputs)
;; some tests require access to "$HOME"
(setenv "HOME" "/tmp")
;; Step out of the source directory just to be sure.
(chdir "..")
(invoke "nosetests" "-v" "sklearn"))))))
(add-after 'build 'build-ext
(lambda _ (invoke "python" "setup.py" "build_ext" "--inplace") #t))
(replace 'check
(lambda _
;; Restrict OpenBLAS threads to prevent segfaults while testing!
(setenv "OPENBLAS_NUM_THREADS" "1")
;; Disable tests that require network access
(delete-file "sklearn/datasets/tests/test_mldata.py")
(delete-file "sklearn/datasets/tests/test_rcv1.py")
(invoke "pytest" "sklearn")
#t))
;; FIXME: This fails with permission denied
(delete 'reset-gzip-timestamps))))
(inputs
`(("openblas" ,openblas)))
(native-inputs
`(("python-nose" ,python-nose)
`(("python-pytest" ,python-pytest)
("python-pandas" ,python-pandas) ;for tests
("python-cython" ,python-cython)))
(propagated-inputs
`(("python-numpy" ,python-numpy)
@ -744,8 +745,8 @@ computing environments.")
(home-page "http://scikit-learn.org/")
(synopsis "Machine Learning in Python")
(description
"Scikit-learn provides simple and efficient tools for data
mining and data analysis.")
"Scikit-learn provides simple and efficient tools for data mining and
data analysis.")
(license license:bsd-3)))
(define-public python2-scikit-learn

View File

@ -508,7 +508,11 @@ large scale eigenvalue problems.")
(arguments
(substitute-keyword-arguments (package-arguments arpack-ng)
((#:configure-flags _ '())
''("--enable-mpi"))))
''("--enable-mpi"))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
(add-before 'check 'mpi-setup
,%openmpi-setup)))))
(synopsis "Fortran subroutines for solving eigenvalue problems with MPI")))
(define-public lapack
@ -569,14 +573,8 @@ problems in numerical linear algebra.")
(arguments
`(#:configure-flags `("-DBUILD_SHARED_LIBS:BOOL=YES")
#:phases (modify-phases %standard-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)))))
(add-before 'check 'mpi-setup
,%openmpi-setup))))
(home-page "http://www.netlib.org/scalapack/")
(synopsis "Library for scalable numerical linear algebra")
(description
@ -1707,14 +1705,8 @@ scientific applications modeled by partial differential equations.")
,@(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))))))
(add-before 'check 'mpi-setup
,%openmpi-setup)))))
(synopsis "Library to solve PDEs (with MPI support)")))
(define-public petsc-complex-openmpi
@ -1845,14 +1837,8 @@ arising after the discretization of partial differential equations.")
(substitute-keyword-arguments (package-arguments slepc)
((#: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"))
#t))))))
(add-before 'check 'mpi-setup
,%openmpi-setup)))))
(inputs
`(("mpi" ,openmpi)
("arpack" ,arpack-ng-openmpi)
@ -2022,14 +2008,8 @@ sparse system of linear equations A x = b using Guassian elimination.")
(substitute-keyword-arguments (package-arguments mumps)
((#: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))
(add-before 'check 'mpi-setup
,%openmpi-setup)
(replace 'check
(lambda _
((assoc-ref ,phases 'check)
@ -2275,13 +2255,10 @@ CDEFS = -DAdd_"
"/" dir)))
'("lib" "include"))
#t))
(add-before 'check 'mpi-setup
,%openmpi-setup)
(replace 'check
(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"))
(with-directory-excursion "EXAMPLE"
(invoke "mpirun" "-n" "2"
"./pddrive" "-r" "1" "-c" "2" "g20.rua")
@ -2374,15 +2351,8 @@ YACC = bison -pscotchyy -y -b y
;; "SCOTCH_PTHREAD_NUMBER=2"
"restrict=__restrict"))))
#t))
(add-after
'build 'build-esmumps
(add-after 'build 'build-esmumps
(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"))
(invoke "make"
(format #f "-j~a" (parallel-job-count))
"esmumps")))
@ -2565,14 +2535,8 @@ schemes.")
(assoc-ref %build-inputs "lapack")
" -llapack"))
#:phases (modify-phases %standard-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)))))
(add-before 'check 'mpi-setup
,%openmpi-setup))))
(home-page "http://www.p4est.org")
(synopsis "Adaptive mesh refinement on forests of octrees")
(description
@ -3639,14 +3603,8 @@ problems.")
,@(delete "--without-MPI" ,flags)))
((#: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))))))
(add-before 'check 'mpi-setup
,%openmpi-setup)))))
(synopsis "Parallel solvers and preconditioners for linear equations")
(description
"HYPRE is a software library of high performance preconditioners and
@ -3929,6 +3887,8 @@ exclusion algorithms are typical examples of such systems.")
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DGFORTRAN_LIB=gfortran")
#:phases (modify-phases %standard-phases
(add-before 'check 'mpi-setup
,%openmpi-setup)
(add-before 'check 'setup-tests
(lambda _
;; Parallelism is done at the MPI layer.
@ -3975,7 +3935,7 @@ toolset supports analysis and automatic verification, linearisation, simulation,
state-space exploration and generation, and tools to optimise and analyse
specifications. Also, state spaces can be manipulated, visualised and
analysed.")
(home-page "http://mcrl2.org")
(home-page "https://mcrl2.org")
(license license:boost1.0)))
(define-public r-subplex
@ -4113,16 +4073,6 @@ easily be incorporated into existing simulation codes.")
,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))))))
(add-before 'check 'mpi-setup
,%openmpi-setup)))))
(synopsis "SUNDIALS with OpenMPI support")))

View File

@ -66,7 +66,7 @@ extensive examples, including parsers for the Javascript and C99 languages.")
(version "0.17.1")
(source (origin
(method url-fetch)
(uri (string-append "http://alpha.gnu.org/gnu/mes/"
(uri (string-append "mirror://gnu/mes/"
"mes-" version ".tar.gz"))
(patches (search-patches "mes-nyacc-0.86.0.patch"))
(sha256

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
@ -250,3 +250,15 @@ software vendors, application developers and computer science researchers.")
work correctly with all transports (such as @code{openib}), and the
performance is generally worse than the vanilla @code{openmpi} package, which
only provides @code{MPI_THREAD_FUNNELED}.")))
;;; Build phase to be used for packages that execute MPI code.
(define-public %openmpi-setup
'(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 "false"))
;; Allow oversubscription in case there are less physical cores available
;; in the build environment than the package wants while testing.
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes")
#t))

View File

@ -2198,28 +2198,17 @@ from the command line.")
(define-public qtractor
(package
(name "qtractor")
(version "0.9.1")
(version "0.9.2")
(source (origin
(method url-fetch)
(uri (string-append "http://downloads.sourceforge.net/qtractor/"
"qtractor-" version ".tar.gz"))
(sha256
(base32
"07csbqr7q4m1j0pqg89kn7jdw0snd5lwna5rha0986s4plq4z1qb"))))
"1j3rpvdkw9rw48j4zyfn6rprp01csy4rl6zckcjyx0vh7vaycchr"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no "check" target
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-build-with-qt-5.11
(lambda _
(substitute* "src/qtractorMeter.h"
(("#include <QFrame>" m)
(string-append "#include <QAction>\n" m)))
(substitute* "src/qtractorTrackButton.h"
(("#include <QPushButton>" m)
(string-append "#include <QAction>\n" m)))
#t)))))
`(#:tests? #f)) ; no "check" target
(inputs
`(("qt" ,qtbase)
("qtx11extras" ,qtx11extras)

View File

@ -30,7 +30,7 @@
(define-public nano
(package
(name "nano")
(version "2.9.8")
(version "3.0")
(source
(origin
(method url-fetch)
@ -38,7 +38,7 @@
version ".tar.xz"))
(sha256
(base32
"122lm0z97wk3mgnbn8m4d769d4j9rxyc9z7s89xd4gsdp8qsrpn2"))))
"1868hg9s584fwjrh0fzdrixmxc2qhw520z4q5iv68kjiajivr9g0"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gettext-minimal)

View File

@ -1,88 +0,0 @@
diff --git a/std/path.d b/std/path.d
index a9f0bd8..f47d103 100644
--- a/std/path.d
+++ b/std/path.d
@@ -4041,7 +4041,7 @@ version(unittest) import std.process : environment;
else version (Android)
{
}
- else
+ else version (HasRoot)
{
assert(expandTilde("~root") == "/root", expandTilde("~root"));
assert(expandTilde("~root/") == "/root/", expandTilde("~root/"));
diff --git a/std/process.d b/std/process.d
index df83296..d921cdb 100644
--- a/std/process.d
+++ b/std/process.d
@@ -1171,7 +1171,7 @@ version (Posix) @system unittest
assert(exists(buildPath(directory, "bar")));
}
-@system unittest // Specifying a bad working directory.
+@system version(skipunittest) unittest // Specifying a bad working directory.
{
import std.exception : assertThrown;
TestScript prog = "/bin/echo";
diff --git a/std/socket.d b/std/socket.d
index 8a261d5..c1b87b6 100644
--- a/std/socket.d
+++ b/std/socket.d
@@ -484,7 +484,7 @@ class Protocol
// Skip this test on Android because getprotobyname/number are
// unimplemented in bionic.
version(CRuntime_Bionic) {} else
-@safe unittest
+@safe version(hasNetwork) unittest
{
softUnittest({
Protocol proto = new Protocol;
@@ -804,7 +804,7 @@ class InternetHost
}
///
-@safe unittest
+@safe version(hasNetwork) unittest
{
InternetHost ih = new InternetHost;
@@ -959,7 +959,7 @@ AddressInfo[] getAddressInfo(T...)(in char[] node, T options)
return () @trusted { return getAddressInfoImpl(node, service, &hints); }();
}
-@system unittest
+@system version(hasNetwork) unittest
{
struct Oops
{
@@ -1010,7 +1010,7 @@ private AddressInfo[] getAddressInfoImpl(in char[] node, in char[] service, addr
}
-@safe unittest
+@safe version(hasNetwork) unittest
{
softUnittest({
if (getaddrinfoPointer)
diff --git a/std/stdio.d b/std/stdio.d
index 10106a5..4b0590e 100644
--- a/std/stdio.d
+++ b/std/stdio.d
@@ -1426,8 +1426,7 @@ Removes the lock over the specified file segment.
g.unlock();
}
- version(Posix)
- @system unittest
+ @system version(skip) unittest
{
static import std.file;
auto deleteme = testFilename();
@@ -1483,7 +1482,6 @@ Removes the lock over the specified file segment.
f.unlock();
}
-
/**
Writes its arguments in text format to the file.

View File

@ -0,0 +1,22 @@
diff --git a/std/socket.d b/std/socket.d
index 111cd17..6d23da9 100644
--- a/std/socket.d
+++ b/std/socket.d
@@ -448,7 +448,7 @@ class Protocol
// Skip this test on Android because getprotobyname/number are
// unimplemented in bionic.
version(CRuntime_Bionic) {} else
-@safe unittest
+@safe version(hasNetwork) unittest
{
// import std.stdio : writefln;
softUnittest({
@@ -770,7 +770,7 @@ class InternetHost
}
///
-@safe unittest
+@safe version(hasNetwork) unittest
{
InternetHost ih = new InternetHost;

View File

@ -1,151 +0,0 @@
From 86b98a11559da7d1b21dc9b4c6b10511b9095bc4 Mon Sep 17 00:00:00 2001
From: Simon Cross <hodgestar@gmail.com>
Date: Sun, 16 Feb 2014 18:46:15 +0000
Subject: [PATCH 05/16] Add support for Python 3.4 AST (support for
NameConstants and changes to existing to arguments node attributes).
---
genshi/template/astutil.py | 31 ++++++++++++++++++++++++++++---
genshi/template/eval.py | 34 +++++++++++++++++++---------------
2 files changed, 47 insertions(+), 18 deletions(-)
diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
index a4c21c8..a3946b4 100644
--- a/genshi/template/astutil.py
+++ b/genshi/template/astutil.py
@@ -21,7 +21,7 @@ else:
def parse(source, mode):
return compile(source, '', mode, _ast.PyCF_ONLY_AST)
-from genshi.compat import IS_PYTHON2
+from genshi.compat import IS_PYTHON2, isstring
__docformat__ = 'restructuredtext en'
@@ -103,8 +103,13 @@ class ASTCodeGenerator(object):
self._new_line()
return self.visit(node.body)
+ # Python < 3.4
# arguments = (expr* args, identifier? vararg,
# identifier? kwarg, expr* defaults)
+ #
+ # Python >= 3.4
+ # arguments = (arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults,
+ # arg? kwarg, expr* defaults)
def visit_arguments(self, node):
first = True
no_default_count = len(node.args) - len(node.defaults)
@@ -122,13 +127,21 @@ class ASTCodeGenerator(object):
self._write(', ')
else:
first = False
- self._write('*' + node.vararg)
+ self._write('*')
+ if isstring(node.vararg):
+ self._write(node.vararg)
+ else:
+ self.visit(node.vararg)
if getattr(node, 'kwarg', None):
if not first:
self._write(', ')
else:
first = False
- self._write('**' + node.kwarg)
+ self._write('**')
+ if isstring(node.kwarg):
+ self._write(node.kwarg)
+ else:
+ self.visit(node.kwarg)
if not IS_PYTHON2:
# In Python 3 arguments get a special node
@@ -724,6 +737,17 @@ class ASTCodeGenerator(object):
def visit_Name(self, node):
self._write(node.id)
+ # NameConstant(singleton value)
+ def visit_NameConstant(self, node):
+ if node.value is None:
+ self._write('None')
+ elif node.value is True:
+ self._write('True')
+ elif node.value is False:
+ self._write('False')
+ else:
+ raise Exception("Unknown NameConstant %r" % (node.value,))
+
# List(expr* elts, expr_context ctx)
def visit_List(self, node):
self._write('[')
@@ -829,6 +853,7 @@ class ASTTransformer(object):
visit_Attribute = _clone
visit_Subscript = _clone
visit_Name = _clone
+ visit_NameConstant = _clone
visit_List = _clone
visit_Tuple = _clone
diff --git a/genshi/template/eval.py b/genshi/template/eval.py
index 89aec49..de4bc86 100644
--- a/genshi/template/eval.py
+++ b/genshi/template/eval.py
@@ -24,7 +24,8 @@ from genshi.template.astutil import ASTTransformer, ASTCodeGenerator, \
from genshi.template.base import TemplateRuntimeError
from genshi.util import flatten
-from genshi.compat import get_code_params, build_code_chunk, IS_PYTHON2
+from genshi.compat import get_code_params, build_code_chunk, isstring, \
+ IS_PYTHON2
__all__ = ['Code', 'Expression', 'Suite', 'LenientLookup', 'StrictLookup',
'Undefined', 'UndefinedError']
@@ -495,28 +496,31 @@ class TemplateASTTransformer(ASTTransformer):
def __init__(self):
self.locals = [CONSTANTS]
+ def _process(self, names, node):
+ if not IS_PYTHON2 and isinstance(node, _ast.arg):
+ names.add(node.arg)
+ elif isstring(node):
+ names.add(node)
+ elif isinstance(node, _ast.Name):
+ names.add(node.id)
+ elif isinstance(node, _ast.alias):
+ names.add(node.asname or node.name)
+ elif isinstance(node, _ast.Tuple):
+ for elt in node.elts:
+ self._process(names, elt)
+
def _extract_names(self, node):
names = set()
- def _process(node):
- if not IS_PYTHON2 and isinstance(node, _ast.arg):
- names.add(node.arg)
- if isinstance(node, _ast.Name):
- names.add(node.id)
- elif isinstance(node, _ast.alias):
- names.add(node.asname or node.name)
- elif isinstance(node, _ast.Tuple):
- for elt in node.elts:
- _process(elt)
if hasattr(node, 'args'):
for arg in node.args:
- _process(arg)
+ self._process(names, arg)
if hasattr(node, 'vararg'):
- names.add(node.vararg)
+ self._process(names, node.vararg)
if hasattr(node, 'kwarg'):
- names.add(node.kwarg)
+ self._process(names, node.kwarg)
elif hasattr(node, 'names'):
for elt in node.names:
- _process(elt)
+ self._process(names, elt)
return names
def visit_Str(self, node):
--
2.12.0

View File

@ -1,25 +0,0 @@
From 32bfaa7cc1c736fd62fcbb6414de9498dc20ed07 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Wed, 5 Apr 2017 15:13:06 +0200
Subject: [PATCH 2/2] buildable on python27 too
---
genshi/template/directives.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/genshi/template/directives.py b/genshi/template/directives.py
index 6fd0f28..1f70ef6 100644
--- a/genshi/template/directives.py
+++ b/genshi/template/directives.py
@@ -266,7 +266,7 @@ class DefDirective(Directive):
if isinstance(ast, _ast.Call):
self.name = ast.func.id
for arg in ast.args:
- if isinstance(arg, _ast.Starred):
+ if hasattr(_ast, 'Starred') and isinstance(arg, _ast.Starred):
# Python 3.5+
self.star_args = arg.value.id
else:
--
2.12.0

View File

@ -1,32 +0,0 @@
From cef2c8df44166195e1705638f9f17033a4943bb7 Mon Sep 17 00:00:00 2001
From: Simon Cross <hodgestar@gmail.com>
Date: Sun, 16 Feb 2014 18:32:21 +0000
Subject: [PATCH 02/15] Disable the speedups C extension on CPython >= 3.3
since Genshi doesn't support the new Unicode C API yet.
---
setup.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
index 123a2cb..a3d748c 100755
--- a/setup.py
+++ b/setup.py
@@ -65,9 +65,13 @@ available.""")
if Feature:
+ # Optional C extension module for speeding up Genshi:
+ # Not activated by default on:
+ # - PyPy (where it harms performance)
+ # - CPython >= 3.3 (the new Unicode C API is not supported yet)
speedups = Feature(
"optional C speed-enhancements",
- standard = not is_pypy,
+ standard = not is_pypy and sys.version_info < (3, 3),
ext_modules = [
Extension('genshi._speedups', ['genshi/_speedups.c']),
],
--
2.12.0

View File

@ -1,112 +0,0 @@
From ce796ad4bae5c47011876778674ad036357febdf Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Wed, 5 Apr 2017 15:10:06 +0200
Subject: [PATCH 1/2] fixing the tests on python35
---
genshi/filters/i18n.py | 6 ++++--
genshi/template/astutil.py | 14 +++++++++++---
genshi/template/directives.py | 20 ++++++++++++++------
genshi/template/eval.py | 5 +++++
4 files changed, 34 insertions(+), 11 deletions(-)
diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py
index 526fda4..5387fcf 100644
--- a/genshi/filters/i18n.py
+++ b/genshi/filters/i18n.py
@@ -1194,8 +1194,10 @@ def extract_from_code(code, gettext_functions):
elif arg:
strings.append(None)
[_add(arg) for arg in node.args]
- _add(node.starargs)
- _add(node.kwargs)
+ if hasattr(node, 'starargs'):
+ _add(node.starargs)
+ if hasattr(node, 'kwargs'):
+ _add(node.kwargs)
if len(strings) == 1:
strings = strings[0]
else:
diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
index f4e1edd..e561846 100644
--- a/genshi/template/astutil.py
+++ b/genshi/template/astutil.py
@@ -151,6 +151,10 @@ class ASTCodeGenerator(object):
def visit_arg(self, node):
self._write(node.arg)
+ def visit_Starred(self, node):
+ self._write('*')
+ self.visit(node.value)
+
# FunctionDef(identifier name, arguments args,
# stmt* body, expr* decorator_list)
def visit_FunctionDef(self, node):
@@ -664,9 +668,13 @@ class ASTCodeGenerator(object):
if not first:
self._write(', ')
first = False
- # keyword = (identifier arg, expr value)
- self._write(keyword.arg)
- self._write('=')
+ if not keyword.arg:
+ # Python 3.5+ star-star args
+ self._write('**')
+ else:
+ # keyword = (identifier arg, expr value)
+ self._write(keyword.arg)
+ self._write('=')
self.visit(keyword.value)
if getattr(node, 'starargs', None):
if not first:
diff --git a/genshi/template/directives.py b/genshi/template/directives.py
index 7301c2d..6fd0f28 100644
--- a/genshi/template/directives.py
+++ b/genshi/template/directives.py
@@ -266,13 +266,21 @@ class DefDirective(Directive):
if isinstance(ast, _ast.Call):
self.name = ast.func.id
for arg in ast.args:
- # only names
- self.args.append(arg.id)
+ if isinstance(arg, _ast.Starred):
+ # Python 3.5+
+ self.star_args = arg.value.id
+ else:
+ # only names
+ self.args.append(arg.id)
for kwd in ast.keywords:
- self.args.append(kwd.arg)
- exp = Expression(kwd.value, template.filepath,
- lineno, lookup=template.lookup)
- self.defaults[kwd.arg] = exp
+ if kwd.arg is None:
+ # Python 3.5+
+ self.dstar_args = kwd.value.id
+ else:
+ self.args.append(kwd.arg)
+ exp = Expression(kwd.value, template.filepath,
+ lineno, lookup=template.lookup)
+ self.defaults[kwd.arg] = exp
if getattr(ast, 'starargs', None):
self.star_args = ast.starargs.id
if getattr(ast, 'kwargs', None):
diff --git a/genshi/template/eval.py b/genshi/template/eval.py
index d378419..81644a7 100644
--- a/genshi/template/eval.py
+++ b/genshi/template/eval.py
@@ -600,6 +600,11 @@ class TemplateASTTransformer(ASTTransformer):
finally:
self.locals.pop()
+ # Only used in Python 3.5+
+ def visit_Starred(self, node):
+ node.value = self.visit(node.value)
+ return node
+
def visit_Name(self, node):
# If the name refers to a local inside a lambda, list comprehension, or
# generator expression, leave it alone
--
2.12.0

View File

@ -1,37 +0,0 @@
From cc5e07284f44cdd9beec178c69070a53f55d1323 Mon Sep 17 00:00:00 2001
From: Simon Cross <hodgestar@gmail.com>
Date: Sun, 16 Feb 2014 18:43:20 +0000
Subject: [PATCH 03/15] Add isstring helper.
---
genshi/compat.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/genshi/compat.py b/genshi/compat.py
index 9787325..6574e39 100644
--- a/genshi/compat.py
+++ b/genshi/compat.py
@@ -35,6 +35,15 @@ else:
'Python 2 compatibility function. Not usable in Python 3.')
+# We need to test if an object is an instance of a string type in places
+
+if IS_PYTHON2:
+ def isstring(obj):
+ return isinstance(obj, basestring)
+else:
+ def isstring(obj):
+ return isinstance(obj, str)
+
# We need to differentiate between StringIO and BytesIO in places
if IS_PYTHON2:
@@ -112,4 +121,3 @@ except NameError:
if not x:
return False
return True
-
--
2.12.0

View File

@ -1,51 +0,0 @@
From 0769be04c3891ae5c724c6779ba13d1d0f53b4ae Mon Sep 17 00:00:00 2001
From: Simon Cross <hodgestar@gmail.com>
Date: Sun, 16 Feb 2014 18:25:17 +0000
Subject: [PATCH 01/15] Also allow stripping of unsafe script tags (Python 3.4
parses the second example as a tag whose name is script&xyz).
---
genshi/filters/tests/test_html.py | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/genshi/filters/tests/test_html.py b/genshi/filters/tests/test_html.py
index 0c6cfe1..45ec0da 100644
--- a/genshi/filters/tests/test_html.py
+++ b/genshi/filters/tests/test_html.py
@@ -368,12 +368,16 @@ def StyleSanitizer():
class HTMLSanitizerTestCase(unittest.TestCase):
- def assert_parse_error_or_equal(self, expected, exploit):
+ def assert_parse_error_or_equal(self, expected, exploit,
+ allow_strip=False):
try:
html = HTML(exploit)
except ParseError:
return
- self.assertEquals(expected, (html | HTMLSanitizer()).render())
+ sanitized_html = (html | HTMLSanitizer()).render()
+ if not sanitized_html and allow_strip:
+ return
+ self.assertEquals(expected, sanitized_html)
def test_sanitize_unchanged(self):
html = HTML(u'<a href="#">fo<br />o</a>')
@@ -416,10 +420,12 @@ class HTMLSanitizerTestCase(unittest.TestCase):
html = HTML(u'<SCRIPT SRC="http://example.com/"></SCRIPT>')
self.assertEquals('', (html | HTMLSanitizer()).render())
src = u'<SCR\0IPT>alert("foo")</SCR\0IPT>'
- self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src)
+ self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src,
+ allow_strip=True)
src = u'<SCRIPT&XYZ SRC="http://example.com/"></SCRIPT>'
self.assert_parse_error_or_equal('&lt;SCRIPT&amp;XYZ; '
- 'SRC="http://example.com/"&gt;', src)
+ 'SRC="http://example.com/"&gt;', src,
+ allow_strip=True)
def test_sanitize_remove_onclick_attr(self):
html = HTML(u'<div onclick=\'alert("foo")\' />')
--
2.12.0

View File

@ -0,0 +1,94 @@
GDB responds with some overly detailed lines - which makes the tests fail.
Patch rust to accept those instead.
diff -ur orig/rustc-1.25.0-src/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs rustc-1.25.0-src/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs
--- orig/rustc-1.25.0-src/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs 2018-09-13 10:24:33.775565159 +0200
+++ rustc-1.25.0-src/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs 2018-09-13 10:25:56.322513658 +0200
@@ -19,36 +19,36 @@
// gdb-command:print eight_bytes1
// gdbg-check:$1 = {{RUST$ENUM$DISR = Variant1, __0 = 100}, {RUST$ENUM$DISR = Variant1, __0 = 100}}
-// gdbr-check:$1 = generic_enum_with_different_disr_sizes::Enum::Variant1(100)
+// gdbr-check:$1 = generic_enum_with_different_disr_sizes::Enum<f64>::Variant1(100)
// gdb-command:print four_bytes1
// gdbg-check:$2 = {{RUST$ENUM$DISR = Variant1, __0 = 101}, {RUST$ENUM$DISR = Variant1, __0 = 101}}
-// gdbr-check:$2 = generic_enum_with_different_disr_sizes::Enum::Variant1(101)
+// gdbr-check:$2 = generic_enum_with_different_disr_sizes::Enum<i32>::Variant1(101)
// gdb-command:print two_bytes1
// gdbg-check:$3 = {{RUST$ENUM$DISR = Variant1, __0 = 102}, {RUST$ENUM$DISR = Variant1, __0 = 102}}
-// gdbr-check:$3 = generic_enum_with_different_disr_sizes::Enum::Variant1(102)
+// gdbr-check:$3 = generic_enum_with_different_disr_sizes::Enum<i16>::Variant1(102)
// gdb-command:print one_byte1
// gdbg-check:$4 = {{RUST$ENUM$DISR = Variant1, __0 = 65 'A'}, {RUST$ENUM$DISR = Variant1, __0 = 65 'A'}}
-// gdbr-check:$4 = generic_enum_with_different_disr_sizes::Enum::Variant1(65)
+// gdbr-check:$4 = generic_enum_with_different_disr_sizes::Enum<u8>::Variant1(65)
// gdb-command:print eight_bytes2
// gdbg-check:$5 = {{RUST$ENUM$DISR = Variant2, __0 = 100}, {RUST$ENUM$DISR = Variant2, __0 = 100}}
-// gdbr-check:$5 = generic_enum_with_different_disr_sizes::Enum::Variant2(100)
+// gdbr-check:$5 = generic_enum_with_different_disr_sizes::Enum<f64>::Variant2(100)
// gdb-command:print four_bytes2
// gdbg-check:$6 = {{RUST$ENUM$DISR = Variant2, __0 = 101}, {RUST$ENUM$DISR = Variant2, __0 = 101}}
-// gdbr-check:$6 = generic_enum_with_different_disr_sizes::Enum::Variant2(101)
+// gdbr-check:$6 = generic_enum_with_different_disr_sizes::Enum<i32>::Variant2(101)
// gdb-command:print two_bytes2
// gdbg-check:$7 = {{RUST$ENUM$DISR = Variant2, __0 = 102}, {RUST$ENUM$DISR = Variant2, __0 = 102}}
-// gdbr-check:$7 = generic_enum_with_different_disr_sizes::Enum::Variant2(102)
+// gdbr-check:$7 = generic_enum_with_different_disr_sizes::Enum<i16>::Variant2(102)
// gdb-command:print one_byte2
// gdbg-check:$8 = {{RUST$ENUM$DISR = Variant2, __0 = 65 'A'}, {RUST$ENUM$DISR = Variant2, __0 = 65 'A'}}
-// gdbr-check:$8 = generic_enum_with_different_disr_sizes::Enum::Variant2(65)
+// gdbr-check:$8 = generic_enum_with_different_disr_sizes::Enum<u8>::Variant2(65)
// gdb-command:continue
diff -ur orig/rustc-1.25.0-src/src/test/debuginfo/generic-struct-style-enum.rs rustc-1.25.0-src/src/test/debuginfo/generic-struct-style-enum.rs
--- orig/rustc-1.25.0-src/src/test/debuginfo/generic-struct-style-enum.rs 2018-09-13 10:24:33.775565159 +0200
+++ rustc-1.25.0-src/src/test/debuginfo/generic-struct-style-enum.rs 2018-09-13 10:27:43.353108111 +0200
@@ -19,15 +19,15 @@
// gdb-command:print case1
// gdbg-check:$1 = {{RUST$ENUM$DISR = Case1, a = 0, b = 31868, c = 31868, d = 31868, e = 31868}, {RUST$ENUM$DISR = Case1, [...]}, {RUST$ENUM$DISR = Case1, [...]}}
-// gdbr-check:$1 = generic_struct_style_enum::Regular::Case1{a: 0, b: 31868, c: 31868, d: 31868, e: 31868}
+// gdbr-check:$1 = generic_struct_style_enum::Regular<u16, u32, i64>::Case1{a: 0, b: 31868, c: 31868, d: 31868, e: 31868}
// gdb-command:print case2
// gdbg-check:$2 = {{RUST$ENUM$DISR = Case2, [...]}, {RUST$ENUM$DISR = Case2, a = 0, b = 286331153, c = 286331153}, {RUST$ENUM$DISR = Case2, [...]}}
-// gdbr-check:$2 = generic_struct_style_enum::Regular::Case2{a: 0, b: 286331153, c: 286331153}
+// gdbr-check:$2 = generic_struct_style_enum::Regular<i16, u32, i64>::Case2{a: 0, b: 286331153, c: 286331153}
// gdb-command:print case3
// gdbg-check:$3 = {{RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, a = 0, b = 6438275382588823897}}
-// gdbr-check:$3 = generic_struct_style_enum::Regular::Case3{a: 0, b: 6438275382588823897}
+// gdbr-check:$3 = generic_struct_style_enum::Regular<u16, i32, u64>::Case3{a: 0, b: 6438275382588823897}
// gdb-command:print univariant
// gdbg-check:$4 = {{a = -1}}
diff -ur orig/rustc-1.25.0-src/src/test/debuginfo/generic-tuple-style-enum.rs rustc-1.25.0-src/src/test/debuginfo/generic-tuple-style-enum.rs
--- orig/rustc-1.25.0-src/src/test/debuginfo/generic-tuple-style-enum.rs 2018-09-13 10:24:33.775565159 +0200
+++ rustc-1.25.0-src/src/test/debuginfo/generic-tuple-style-enum.rs 2018-09-13 10:28:26.328546298 +0200
@@ -21,15 +21,15 @@
// gdb-command:print case1
// gdbg-check:$1 = {{RUST$ENUM$DISR = Case1, __0 = 0, __1 = 31868, __2 = 31868, __3 = 31868, __4 = 31868}, {RUST$ENUM$DISR = Case1, [...]}, {RUST$ENUM$DISR = Case1, [...]}}
-// gdbr-check:$1 = generic_tuple_style_enum::Regular::Case1(0, 31868, 31868, 31868, 31868)
+// gdbr-check:$1 = generic_tuple_style_enum::Regular<u16, u32, u64>::Case1(0, 31868, 31868, 31868, 31868)
// gdb-command:print case2
// gdbg-check:$2 = {{RUST$ENUM$DISR = Case2, [...]}, {RUST$ENUM$DISR = Case2, __0 = 0, __1 = 286331153, __2 = 286331153}, {RUST$ENUM$DISR = Case2, [...]}}
-// gdbr-check:$2 = generic_tuple_style_enum::Regular::Case2(0, 286331153, 286331153)
+// gdbr-check:$2 = generic_tuple_style_enum::Regular<i16, i32, i64>::Case2(0, 286331153, 286331153)
// gdb-command:print case3
// gdbg-check:$3 = {{RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, __0 = 0, __1 = 6438275382588823897}}
-// gdbr-check:$3 = generic_tuple_style_enum::Regular::Case3(0, 6438275382588823897)
+// gdbr-check:$3 = generic_tuple_style_enum::Regular<i16, i32, i64>::Case3(0, 6438275382588823897)
// gdb-command:print univariant
// gdbg-check:$4 = {{__0 = -1}}

View File

@ -44,6 +44,27 @@
;;;
(define-public perl-mock-config
(package
(name "perl-mock-config")
(version "0.03")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/Mock-Config-"
version ".tar.gz"))
(sha256
(base32 "06q0xkg5cwdwafzmb9rkaa305ddv7vli9gpm6n9jnkyaaxbk9f55"))))
(build-system perl-build-system)
(home-page "https://metacpan.org/release/Mock-Config")
(synopsis "Temporarily set Config or XSConfig values")
(description
"The @code{Mock::Config} Perl module allows temporarily setting and
overriding @code{Config} values, even for the readonly @code{XSConfig}
implementation as used in cperl. It does not store the mocked overrides
lexically, just dynamically.")
(license artistic2.0)))
(define-public perl-test2-bundle-extended
(package
(name "perl-test2-bundle-extended")

View File

@ -6,7 +6,7 @@
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
;;; Copyright © 2016, 2018 Roel Janssen <roel@gnu.org>
@ -5483,7 +5483,7 @@ private methods are not.")
(define-public perl-moosex-getopt
(package
(name "perl-moosex-getopt")
(version "0.71")
(version "0.73")
(source
(origin
(method url-fetch)
@ -5491,12 +5491,15 @@ private methods are not.")
"MooseX-Getopt-" version ".tar.gz"))
(sha256
(base32
"0nf2094qgir0irxjycwqavy53ygm530g9f7cxfywnl2n1bmgh66y"))))
"19zm8brf930p0ymqn3w1y0ix29kb74m8nvhrhjvrg8cgz6vc5fyz"))))
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)
("perl-module-build-tiny" ,perl-module-build-tiny)
("perl-path-tiny" ,perl-path-tiny)
("perl-test-deep" ,perl-test-deep)
("perl-test-fatal" ,perl-test-fatal)
("perl-test-needs" ,perl-test-needs)
("perl-test-requires" ,perl-test-requires)
("perl-test-trap" ,perl-test-trap)
("perl-test-warnings" ,perl-test-warnings)))

View File

@ -361,14 +361,14 @@ is used by the Requests library to verify HTTPS requests.")
(define-public python-cryptography-vectors
(package
(name "python-cryptography-vectors")
(version "2.2.2")
(version "2.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography_vectors" version))
(sha256
(base32
"122na0c6r24ch2ifyr4ccjyih0inpqy7bc5za77699g3pa22rd98"))))
"0ijdck30p7jv8a0zwv8b7d30ciqrmmps62lm63l4k776vihrnkdz"))))
(build-system python-build-system)
(home-page "https://github.com/pyca/cryptography")
(synopsis "Test vectors for the cryptography package")
@ -383,14 +383,14 @@ is used by the Requests library to verify HTTPS requests.")
(define-public python-cryptography
(package
(name "python-cryptography")
(version "2.2.2")
(version "2.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography" version))
(sha256
(base32
"0qrgip8vgcpk7v1jwf67mg50np5iprxrv8qrg8p382hkd6zrbhlz"))))
"1mnzf168vlxirq7fw9dm9zbvma7z8phc9cl5bffw5916m0y1244d"))))
(build-system python-build-system)
(inputs
`(("openssl" ,openssl)))

View File

@ -45,6 +45,7 @@
(define-module (gnu packages python-web)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system python)
#:use-module (guix utils)
#:use-module (gnu packages)
@ -177,14 +178,14 @@ other HTTP libraries.")
(define-public python-sockjs-tornado
(package
(name "python-sockjs-tornado")
(version "1.0.3")
(version "1.0.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "sockjs-tornado" version))
(sha256
(base32
"16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd"))))
"0zhq8wnnhkfbvdnsggqrc3pp97pqpilsf7fh6ymvnf52r0rwyjsc"))))
(build-system python-build-system)
(arguments
`(;; There are no tests, and running the test phase requires missing
@ -194,12 +195,12 @@ other HTTP libraries.")
`(("python-tornado" ,python-tornado)))
(home-page "https://github.com/mrjoes/sockjs-tornado/")
(synopsis
"SockJS python server implementation on top of Tornado framework")
"SockJS Python server implementation on top of the Tornado framework")
(description
"SockJS-tornado provides the server side counterpart to a SockJS client
"SockJS-tornado provides the server-side counterpart to a SockJS client
library, through the Tornado framework.
SockJS provides a low latency, full duplex, cross-domain communication channel
SockJS provides a low-latency, full-duplex, cross-domain communication channel
between a web browser and web server.")
(license license:expat)))
@ -2248,29 +2249,16 @@ for Flask programs that are using @code{python-alembic}.")
(define-public python-genshi
(package
(name "python-genshi")
(version "0.7")
(version "0.7.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://ftp.edgewall.org/pub/genshi/Genshi-"
version ".tar.gz"))
(patches
(search-patches
;; The first 4 patches are in the master branch upstream.
;; See this as a reference https://genshi.edgewall.org/ticket/582
;; The last 2 are NOT in any branch.
;; They were sent as attachments to a ticket opened at
;; https://genshi.edgewall.org/ticket/602#no1
"python-genshi-stripping-of-unsafe-script-tags.patch"
"python-genshi-disable-speedups-on-python-3.3.patch"
"python-genshi-isstring-helper.patch"
"python-genshi-add-support-for-python-3.4-AST.patch"
"python-genshi-fix-tests-on-python-3.5.patch"
"python-genshi-buildable-on-python-2.7.patch"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/edgewall/genshi.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
(base32 "01fx8fnpay5w048ppyjivg2dgfpp5rybn07y3pfsgj2knram3nhl"))))
(build-system python-build-system)
(home-page "https://genshi.edgewall.org/")
(synopsis "Toolkit for generation of output for the web")
@ -2279,9 +2267,6 @@ of components for parsing, generating, and processing HTML, XML or other
textual content for output generation on the web.")
(license license:bsd-3)))
;; The linter here claims that patch file names should start with the package
;; name. But, in this case the patches are inherited from python-genshi with
;; the "python-genshi-" prefix instead of "python2-genshi-".
(define-public python2-genshi
(package-with-python2 python-genshi))

View File

@ -54,6 +54,7 @@
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1519,14 +1520,14 @@ backported for previous versions of Python from 2.4 to 3.3.")
(define-public python-parse
(package
(name "python-parse")
(version "1.8.2")
(version "1.8.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "parse" version))
(sha256
(base32
"1lj9v1q4imszyhvipb6drsm3xdl35nan011mqxxas1yaypixsj40"))))
"0f8997xr8nq2nq35iiviq8ningd1zvy59fg503xfpbi2dwhgdkf3"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -1536,7 +1537,7 @@ backported for previous versions of Python from 2.4 to 3.3.")
(home-page "https://github.com/r1chardj0n3s/parse")
(synopsis "Parse strings")
(description
"Parse strings using a specification based on the Python format()
"Parse strings using a specification based on the Python @code{format()}
syntax.")
(license license:x11)))
@ -2627,6 +2628,62 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
(define-public python2-feedgenerator
(package-with-python2 python-feedgenerator))
(define-public python-toml
(package
(name "python-toml")
(version "0.9.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "toml" version))
(sha256
(base32
"0bdbpbip67wdm6c7xwc6mmbmskyradj4cdxn1iibj4fcx1nbv1lf"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;no tests suite in release
(home-page "https://github.com/uiri/toml")
(synopsis "Library for TOML")
(description
"@code{toml} is a library for parsing and creating Tom's Obvious, Minimal
Language (TOML) configuration files.")
(license license:expat)))
(define-public python-black
(package
(name "python-black")
(version "18.6b4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "black" version))
(sha256
(base32
"0i4sfqgz6w15vd50kbhi7g7rifgqlf8yfr8y78rypd56q64qn592"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'patch-source-shebangs 'patch-extra-shebangs
(lambda _
(let ((python3 (which "python3")))
(substitute* '("tests/data/fmtonoff.py"
"tests/data/string_prefixes.py"
"tests/data/function.py")
(("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version)
(string-append "#!" python3 (if (string? minor-version)
minor-version
""))))))))))
(propagated-inputs
`(("python-click" ,python-click)
("python-attrs" ,python-attrs)
("python-appdirs" ,python-appdirs)
("python-toml" ,python-toml)))
(home-page "https://github.com/ambv/black")
(synopsis "The uncompromising code formatter")
(description "Black is the uncompromising Python code formatter.")
(license license:expat)))
(define-public python-blinker
(package
(name "python-blinker")
@ -5061,13 +5118,13 @@ Python.")
(define-public snakemake
(package
(name "snakemake")
(version "5.2.0")
(version "5.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "snakemake" version))
(sha256
(base32 "0a1i5v5qxbmmpznp7my9nva8y7pxp8pjrwk2gxgisdskg35sq8s1"))))
(base32 "18x36n78ph5v1fxk54gvdbc3d8nfncha78phifg3lqaa9gifgzxd"))))
(build-system python-build-system)
(arguments
;; TODO: Package missing test dependencies.
@ -5096,7 +5153,7 @@ Python.")
("python-networkx" ,python-networkx)
("python-pyyaml" ,python-pyyaml)
("python-ratelimiter" ,python-ratelimiter)))
(home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
(home-page "https://snakemake.readthedocs.io")
(synopsis "Python-based execution environment for make-like workflows")
(description
"Snakemake aims to reduce the complexity of creating workflows by
@ -6455,7 +6512,7 @@ Python Package Index (PyPI).")
(define-public python-tlsh
(package
(name "python-tlsh")
(version "3.4.4")
(version "3.4.5")
(home-page "https://github.com/trendmicro/tlsh")
(source (origin
(method url-fetch)
@ -6463,7 +6520,7 @@ Python Package Index (PyPI).")
version ".tar.gz"))
(sha256
(base32
"00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
"1x1vahd4zg5kpyr9h9hs3fvh460p25rjy4cclwdnbbw8x3vc30q3"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system cmake-build-system)
(arguments
@ -6524,13 +6581,13 @@ a hash value.")
(define-public python-libarchive-c
(package
(name "python-libarchive-c")
(version "2.2")
(version "2.8")
(source (origin
(method url-fetch)
(uri (pypi-uri "libarchive-c" version))
(sha256
(base32
"0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
"0qg0v1s9c1xdk9philhnv8k6c6nicvnvfwlc0j9srg90jmdlvm06"))))
(build-system python-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
@ -6542,7 +6599,12 @@ a hash value.")
(substitute* "libarchive/ffi.py"
(("find_library\\('archive'\\)")
(string-append "'" libarchive
"/lib/libarchive.so'")))))))))
"/lib/libarchive.so'"))))))
(replace 'check
(lambda _ (invoke "pytest" "-vv"))))))
(native-inputs
`(("python-mock" ,python-mock)
("python-pytest" ,python-pytest)))
(inputs
`(("libarchive" ,libarchive)))
(home-page "https://github.com/Changaco/python-libarchive-c")
@ -6589,6 +6651,7 @@ serve the same purpose: provide Python bindings for libmagic.")))
(define-public python-debian
(package
(name "python-debian")
(home-page "https://salsa.debian.org/python-debian-team/python-debian")
(version "0.1.28")
(source
(origin
@ -6600,7 +6663,6 @@ serve the same purpose: provide Python bindings for libmagic.")))
(build-system python-build-system)
(propagated-inputs
`(("python-six" ,python-six)))
(home-page "http://packages.debian.org/sid/python-debian")
(synopsis "Debian package related modules")
(description
;; XXX: Use @enumerate instead of @itemize to work around
@ -9543,14 +9605,14 @@ characters, mouse support, and auto suggestions.")
(define-public python-jedi
(package
(name "python-jedi")
(version "0.12.0")
(version "0.12.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "jedi" version))
(sha256
(base32
"1bcr7csx4xil1iwmk03d79jis0bkmgi9k0kir3xa4rmwqsagcwhr"))))
"1h8ypnjisn57kiv1zqrkj1im6sbfnhxllqaa8znh39qkd47ys2dl"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -9559,14 +9621,18 @@ characters, mouse support, and auto suggestions.")
(invoke "py.test" "-vv"))))))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-parso" ,python-parso)
("python-docopt" ,python-docopt)))
(propagated-inputs
`(("python-parso" ,python-parso)))
(home-page "https://github.com/davidhalter/jedi")
(synopsis
"Autocompletion for Python that can be used for text editors")
(synopsis "Autocompletion and static analysis library for Python")
(description
"Jedi is an autocompletion tool for Python that can be used for text
editors.")
"Jedi is a static analysis tool for Python that can be used in Integrated
Development Environments (@dfn{IDE}s) and text editors. It understands Python
on a deeper level than many other static analysis frameworks for Python.
Jedi understands docstrings and you can use Jedi autocompletion in your REPL as
well.")
(license license:expat)))
(define-public python2-jedi
@ -9745,13 +9811,13 @@ hardware-accelerated multitouch applications.")
(define-public python-binaryornot
(package
(name "python-binaryornot")
(version "0.4.0")
(version "0.4.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "binaryornot" version))
(sha256
(base32
"1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
"0qc006986rb6bcbmiymwgcl1mns2jphr1j7sr7nk41nlr7gh359m"))))
(build-system python-build-system)
(propagated-inputs
`(("python-chardet" ,python-chardet)
@ -13169,14 +13235,14 @@ source bytes using the UTF-8 encoding and then rewrites Python 3.6 style
(define-public python-typing
(package
(name "python-typing")
(version "3.6.4")
(version "3.6.6")
(source
(origin
(method url-fetch)
(uri (pypi-uri "typing" version))
(sha256
(base32
"1wmk9nkh30n37cbrqwkbggmj2390lhrlagjkd0ikm02l88saj06l"))))
"0ba9acs4awx15bf9v3nrs781msbd2nx826906nj6fqks2bvca9s0"))))
(build-system python-build-system)
(home-page "https://docs.python.org/3/library/typing.html")
(synopsis "Type hints for Python")
@ -13449,14 +13515,14 @@ time-based (TOTP) passwords.")
(define-public python-parso
(package
(name "python-parso")
(version "0.2.1")
(version "0.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "parso" version))
(sha256
(base32
"0zvh4rdhv2wkglkgh0h9kn9ndpsw5p639wcwv47jn1kfp504lq7h"))))
"18p89iwcm8mnf380f92g9w0bhx5km8wxp392vvjcq4y1ld1llw1m"))))
(native-inputs
`(("python-pytest" ,python-pytest)))
(build-system python-build-system)
@ -13953,3 +14019,276 @@ scalable way of keeping track of data together with learned annotations and
reduces the code overhead typically encountered when using a mostly
object-oriented library such as @code{scikit-learn}.")
(license license:bsd-3)))
(define-public python-dill
(package
(name "python-dill")
(version "0.2.8.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dill" version))
(sha256
(base32
"1cymzn9fxwdy33h21zkk4gqgzvd25110hh3zdqnvnwa3p52c4kb2"))))
(build-system python-build-system)
;; FIXME: The check phase fails with "don't know how to make test".
(arguments '(#:tests? #f))
(home-page "https://pypi.org/project/dill")
(synopsis "Serialize all of Python")
(description "Dill extends Python's @code{pickle} module for serializing
and de-serializing Python objects to the majority of the built-in Python
types. Dill provides the user the same interface as the @code{pickle} module,
and also includes some additional features. In addition to pickling Python
objects, @code{dill} provides the ability to save the state of an interpreter
session in a single command. Hence, it would be feasable to save a
interpreter session, close the interpreter, ship the pickled file to another
computer, open a new interpreter, unpickle the session and thus continue from
the saved state of the original interpreter session.")
(license license:bsd-3)))
(define-public python-multiprocess
(package
(name "python-multiprocess")
(version "0.70.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "multiprocess" version))
(sha256
(base32
"1ip5caz67b3q0553mr8gm8xwsb8x500jn8ml0gihgyfy52m2ypcq"))))
(build-system python-build-system)
(propagated-inputs
`(("python-dill" ,python-dill)))
(home-page "https://pypi.org/project/multiprocess")
(synopsis "Multiprocessing and multithreading in Python")
(description
"This package is a fork of the multiprocessing Python package, a package
which supports the spawning of processes using the API of the standard
library's @code{threading} module.")
(license license:bsd-3)))
(define-public python-toolz
(package
(name "python-toolz")
(version "0.9.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "toolz" version))
(sha256
(base32
"1j9i7fdjnx9dz35fdj5gvgxx6585ja9sxgaiv65if77nlxz0m7wj"))))
(build-system python-build-system)
;; FIXME: tests cannot be computed: "Can't perform this operation for
;; unregistered loader type"
(arguments '(#:tests? #f))
(home-page "https://github.com/pytoolz/toolz/")
(synopsis "List processing tools and functional utilities")
(description
"This package provides a set of utility functions for iterators,
functions, and dictionaries.")
(license license:bsd-3)))
(define-public python-cytoolz
(package
(name "python-cytoolz")
(version "0.9.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cytoolz" version))
(sha256
(base32
"1r80p88hm3f3r4zpixzr047y5hw4bzy41m4xywnhycda83x0dk44"))))
(build-system python-build-system)
;; FIXME: tests fail with "module 'cytoolz.curried' has no attribute
;; 'exceptions'"
(arguments '(#:tests? #f))
(propagated-inputs
`(("python-toolz" ,python-toolz)))
(native-inputs
`(("python-cython" ,python-cython)))
(home-page "https://github.com/pytoolz/cytoolz")
(synopsis "High performance functional utilities")
(description
"The cytoolz package implements the same API as provided by toolz. The
main differences are that @code{cytoolz} is faster and cytoolz offers a C API
that is accessible to other projects developed in Cython.")
(license license:bsd-3)))
(define-public python-sortedcontainers
(package
(name "python-sortedcontainers")
(version "2.0.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "sortedcontainers" version))
(sha256
(base32
"10hrk2k0hbf9x78vd3f0lj277m1yzfhzzxr0hja718liwb398wk0"))))
(build-system python-build-system)
(native-inputs
`(("python-tox" ,python-tox)))
(home-page "http://www.grantjenks.com/docs/sortedcontainers/")
(synopsis "Sorted List, Sorted Dict, Sorted Set")
(description
"This package provides a sorted collections library, written in
pure-Python.")
(license license:asl2.0)))
(define-public python-cloudpickle
(package
(name "python-cloudpickle")
(version "0.5.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cloudpickle" version))
(sha256
(base32
"0gdg5n025v4wqmdg65rm0n6fvp6731ip30ji0rmn2kqsyr4bb93f"))))
(build-system python-build-system)
;; FIXME: there are 5 errors in 122 tests:
;; ERROR: test_function_pickle_compat_0_4_0 (tests.cloudpickle_test.CloudPickleTest)
;; ERROR: test_function_pickle_compat_0_4_1 (tests.cloudpickle_test.CloudPickleTest)
;; ERROR: test_function_pickle_compat_0_4_0 (tests.cloudpickle_test.Protocol2CloudPickleTest)
;; ERROR: test_function_pickle_compat_0_4_1 (tests.cloudpickle_test.Protocol2CloudPickleTest)
;; ERROR: test_temp_file (tests.cloudpickle_file_test.CloudPickleFileTests)
;; TypeError: cannot serialize '_io.BufferedRandom' object
(arguments '(#:tests? #f))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-mock" ,python-mock)
("python-tornado" ,python-tornado)))
(home-page "https://github.com/cloudpipe/cloudpickle")
(synopsis "Extended pickling support for Python objects")
(description
"Cloudpickle makes it possible to serialize Python constructs not
supported by the default pickle module from the Python standard library. It
is especially useful for cluster computing where Python expressions are
shipped over the network to execute on remote hosts, possibly close to the
data.")
(license license:bsd-3)))
(define-public python-locket
(package
(name "python-locket")
(version "0.2.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "locket" version))
(sha256
(base32
"1d4z2zngrpqkrfhnd4yhysh66kjn4mblys2l06sh5dix2p0n7vhz"))))
(build-system python-build-system)
(home-page "https://github.com/mwilliamson/locket.py")
(synopsis "File-based locks for Python")
(description
"Locket implements a lock that can be used by multiple processes provided
they use the same path.")
(license license:bsd-2)))
(define-public python-blosc
(package
(name "python-blosc")
(version "1.5.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "blosc" version))
(sha256
(base32
"1cm91c6r431yla2mbs4895bgiianjf30dfz14vvv99dslygd65jw"))))
(build-system python-build-system)
;; FIXME: all tests pass, but then this error is printed:
;; TypeError: calling <function run at 0x7ffff2568d90> returned None, not a test
(arguments '(#:tests? #f))
(propagated-inputs
`(("python-numpy" ,python-numpy)))
(home-page "https://github.com/blosc/python-blosc")
(synopsis "Python wrapper for the Blosc data compressor library")
(description "Blosc is a high performance compressor optimized for binary
data. It has been designed to transmit data to the processor cache faster
than the traditional, non-compressed, direct memory fetch approach via a
@code{memcpy()} system call.
Blosc works well for compressing numerical arrays that contains data with
relatively low entropy, like sparse data, time series, grids with
regular-spaced values, etc.
This Python package wraps the Blosc library.")
(license license:bsd-3)))
(define-public python-partd
(package
(name "python-partd")
(version "0.3.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "partd" version))
(sha256
(base32
"03s0i5qfgkx6y24bmfgyd5hnsjznkbbfafwb2khf7k9790f1yab7"))))
(build-system python-build-system)
(propagated-inputs
`(("python-blosc" ,python-blosc)
("python-locket" ,python-locket)
("python-numpy" ,python-numpy)
("python-pandas" ,python-pandas)
("python-pyzmq" ,python-pyzmq)
("python-toolz" ,python-toolz)))
(home-page "https://github.com/dask/partd/")
(synopsis "Appendable key-value storage")
(description "Partd stores key-value pairs. Values are raw bytes. We
append on old values. Partd excels at shuffling operations.")
(license license:bsd-3)))
(define-public python-dask
(package
(name "python-dask")
(version "0.19.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dask" version))
(sha256
(base32
"1pm1163qb6s22p8fnvj0zlfazihvs7hxjn8l2n52bzs7shw6kdz3"))))
(build-system python-build-system)
;; A single test out of 5000+ fails. This test is marked as xfail when
;; pytest-xdist is used.
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'disable-broken-test
(lambda _
(substitute* "dask/tests/test_threaded.py"
(("def test_interrupt\\(\\)" m)
(string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
m)))
#t)))))
(propagated-inputs
`(("python-cloudpickle" ,python-cloudpickle)
("python-numpy" ,python-numpy)
("python-pandas" ,python-pandas)
("python-partd" ,python-partd)
("python-toolz" ,python-toolz)
("python-pyyaml" ,python-pyyaml)))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-pytest-runner" ,python-pytest-runner)))
(home-page "https://github.com/dask/dask/")
(synopsis "Parallel computing with task scheduling")
(description
"Dask is a flexible parallel computing library for analytics. It
consists of two components: dynamic task scheduling optimized for computation,
and large data collections like parallel arrays, dataframes, and lists that
extend common interfaces like NumPy, Pandas, or Python iterators to
larger-than-memory or distributed environments. These parallel collections
run on top of the dynamic task schedulers. ")
(license license:bsd-3)))

View File

@ -126,13 +126,13 @@
(rustdoc (string-append out "/bin/rustdoc"))
(cargo (string-append cargo-out "/bin/cargo"))
(gcc (assoc-ref inputs "gcc")))
;; Install rustc/rustdoc
;; Install rustc/rustdoc.
(invoke "bash" "install.sh"
(string-append "--prefix=" out)
(string-append "--components=rustc,"
"rust-std-"
,(nix-system->gnu-triplet-for-rust)))
;; Instal cargo
;; Install cargo.
(invoke "bash" "install.sh"
(string-append "--prefix=" cargo-out)
(string-append "--components=cargo"))
@ -143,11 +143,6 @@
(for-each (lambda (file)
(invoke "patchelf" "--set-interpreter" ld-so file))
(list rustc rustdoc cargo))
;; Rust requires a C toolchain for linking. The prebuilt
;; binaries expect a compiler called cc. Thus symlink gcc
;; to cc.
(symlink (string-append gcc "/bin/gcc")
(string-append out "/bin/cc"))
#t))))))
(home-page "https://www.rust-lang.org")
(synopsis "Prebuilt rust compiler and cargo package manager")
@ -387,7 +382,6 @@ test = { path = \"../libtest\" }
"--output-dir" "output/rustc-build"
"-L" (string-append rustc-bootstrap "/lib/mrust")
"-j" "1")
(install-file "output/rustc-build/rustc" "output") ; FIXME: Remove?
(setenv "CFG_COMPILER_HOST_TRIPLE" #f)
(setenv "CFG_RELEASE" #f)
(setenv "CFG_RELEASE_CHANNEL" #f)
@ -408,7 +402,7 @@ test = { path = \"../libtest\" }
;; but right now, Cargo has problems with libstd's circular
;; dependencies.
(mkdir-p "output/target-libs")
(for-each ((@ (ice-9 match) match-lambda)
(for-each (match-lambda
((name . flags)
(write name)
(newline)
@ -454,6 +448,8 @@ test = { path = \"../libtest\" }
(copy-recursively "output/target-libs" out-libs)
(install-file "output/rustc-build/rustc"
(string-append out "/bin"))
(install-file "output/rustc-build/rustdoc"
(string-append out "/bin"))
(install-file "output/cargo-build/cargo"
(string-append (assoc-ref outputs "cargo")
"/bin")))
@ -498,65 +494,17 @@ safety and thread safety guarantees.")
;; Dual licensed.
(license (list license:asl2.0 license:expat))))
(define-public rust-1.23
(define-public rust-1.20
(let ((base-rust
(rust-bootstrapped-package rust-1.19 "1.20.0"
"0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a")))
(package
(inherit rust-1.19)
(name "rust")
(version "1.23.0")
(source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
(inherit base-rust)
(outputs '("out" "doc" "cargo"))
(native-inputs
`(("bison" ,bison) ; For the tests
("cmake" ,cmake)
("flex" ,flex) ; For the tests
("gdb" ,gdb) ; For the tests
("git" ,git)
("procps" ,procps) ; For the tests
("python-2" ,python-2)
("rustc-bootstrap" ,rust-bootstrap)
("cargo-bootstrap" ,rust-bootstrap "cargo")
("pkg-config" ,pkg-config) ; For "cargo"
("which" ,which)))
(arguments
(substitute-keyword-arguments (package-arguments rust-1.19)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'dont-build-native
(lambda _
;; XXX: Revisit this when we use gcc 6.
(substitute* "src/binaryen/CMakeLists.txt"
(("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") ""))
#t))
;; TODO: Revisit this and find out whether that's needed after all.
(delete 'patch-cargo-tomls)
(add-after 'patch-tests 'patch-cargo-tests
(lambda _
(substitute* "src/tools/cargo/tests/build.rs"
(("/usr/bin/env") (which "env"))
;; Guix llvm is compiled without asmjs-unknown-emscripten.
(("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
(substitute* "src/tools/cargo/tests/death.rs"
;; This is stuck when built in container.
(("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
;; Prints test output in the wrong order when built on
;; i686-linux.
(substitute* "src/tools/cargo/tests/test.rs"
(("fn cargo_test_env") "#[ignore]\nfn cargo_test_env"))
#t))
(add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test
;; https://github.com/rust-lang/rust/issues/47863
(lambda _
(substitute* "src/test/run-pass/out-of-stack.rs"
(("// ignore-android") "// ignore-test\n// ignore-android"))))
(add-after 'ignore-glibc-2.27-incompatible-test 'fix-mtime-bug
(lambda* _
(substitute* "src/build_helper/lib.rs"
;; Bug in Rust code.
;; Current implementation assume that if dst not exist then it's mtime
;; is 0, but in same time "src" have 0 mtime in guix build!
(("let threshold = mtime\\(dst\\);")
"if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
#t))
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -591,8 +539,8 @@ default-linker = \"" gcc "/bin/gcc" "\"
channel = \"stable\"
rpath = true
" ;; There are 2 failed codegen tests:
;; codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
;; These tests require a patched LLVM
;; codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
;; These tests require a patched LLVM
"codegen-tests = false
[target." ,(nix-system->gnu-triplet-for-rust) "]
llvm-config = \"" llvm "/bin/llvm-config" "\"
@ -603,6 +551,23 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
[dist]
") port)))
#t)))
(add-after 'configure 'provide-cc
(lambda* (#:key inputs #:allow-other-keys)
(symlink (string-append (assoc-ref inputs "gcc") "/bin/gcc")
"/tmp/cc")
(setenv "PATH" (string-append "/tmp:" (getenv "PATH")))
#t))
(add-after 'provide-cc 'configure-archiver
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/build_helper/lib.rs"
;; Make sure "ar" is always used as the archiver.
(("\"musl\"") "\"\"")
;; Then substitute "ar" by our name.
(("\"ar\"") (string-append "\""
(assoc-ref inputs "binutils")
"/bin/ar\"")))
#t))
(delete 'patch-cargo-tomls)
(add-before 'build 'reset-timestamps-after-changes
(lambda* _
(define ref (stat "README.md"))
@ -619,8 +584,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(lambda* _
;; Disable parallel execution to prevent EAGAIN errors when
;; running tests.
(invoke "./x.py" "-j1" "test")
(invoke "./x.py" "-j1" "test" "src/tools/cargo")))
(invoke "./x.py" "-j1" "test" "-vv")
(invoke "./x.py" "-j1" "test" "src/tools/cargo")
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(invoke "./x.py" "install")
@ -628,8 +594,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
;; replace prefix to specific output
(("prefix = \"[^\"]*\"")
(string-append "prefix = \"" (assoc-ref outputs "cargo") "\"")))
(invoke "./x.py" "install" "cargo")
#t))
(invoke "./x.py" "install" "cargo")))
(add-after 'install 'wrap-rustc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@ -639,7 +604,73 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(wrap-program (string-append out "/bin/rustc")
`("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
`("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
#t)))))))))
#t))))))))))
(define-public rust-1.21
(rust-bootstrapped-package rust-1.20 "1.21.0"
"1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))
(define-public rust-1.22
(rust-bootstrapped-package rust-1.21 "1.22.1"
"1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
(define-public rust-1.23
(package
(inherit rust-1.20)
(name "rust")
(version "1.23.0")
(source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
(native-inputs
`(("bison" ,bison) ; For the tests
("cmake" ,cmake)
("flex" ,flex) ; For the tests
("gdb" ,gdb) ; For the tests
("git" ,git)
("procps" ,procps) ; For the tests
("python-2" ,python-2)
("rustc-bootstrap" ,rust-bootstrap)
("cargo-bootstrap" ,rust-bootstrap "cargo")
("pkg-config" ,pkg-config) ; For "cargo"
("which" ,which)))
(arguments
(substitute-keyword-arguments (package-arguments rust-1.20)
((#:phases phases)
`(modify-phases ,phases
(delete 'configure-archiver)
(add-after 'unpack 'dont-build-native
(lambda _
;; XXX: Revisit this when we use gcc 6.
(substitute* "src/binaryen/CMakeLists.txt"
(("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") ""))
#t))
(add-after 'patch-tests 'patch-cargo-tests
(lambda _
(substitute* "src/tools/cargo/tests/build.rs"
(("/usr/bin/env") (which "env"))
;; Guix llvm is compiled without asmjs-unknown-emscripten.
(("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
(substitute* "src/tools/cargo/tests/death.rs"
;; This is stuck when built in container.
(("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
;; Prints test output in the wrong order when built on
;; i686-linux.
(substitute* "src/tools/cargo/tests/test.rs"
(("fn cargo_test_env") "#[ignore]\nfn cargo_test_env"))
#t))
(add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test
;; https://github.com/rust-lang/rust/issues/47863
(lambda _
(substitute* "src/test/run-pass/out-of-stack.rs"
(("// ignore-android") "// ignore-test\n// ignore-android"))))
(add-after 'ignore-glibc-2.27-incompatible-test 'fix-mtime-bug
(lambda* _
(substitute* "src/build_helper/lib.rs"
;; Bug in Rust code.
;; Current implementation assume that if dst not exist then it's mtime
;; is 0, but in same time "src" have 0 mtime in guix build!
(("let threshold = mtime\\(dst\\);")
"if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
#t))))))))
(define-public rust-1.24
(let ((base-rust
@ -664,7 +695,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(define-public rust-1.25
(let ((base-rust
(rust-bootstrapped-package rust-1.24 "1.25.0"
"0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf")))
"0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf"
#:patches '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))
(package
(inherit base-rust)
(inputs
@ -686,6 +718,13 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(substitute* "config.toml"
(("codegen-tests = false") ""))
#t))
;; FIXME: Re-enable this test if it's indeed supposed to work.
;; See <https://github.com/rust-lang/rust/issues/54178>.
(add-after 'enable-codegen-tests 'disable-nil-enum-test
(lambda _
(substitute* "src/test/debuginfo/nil-enum.rs"
(("ignore-lldb") "ignore-gdb"))
#t))
(replace 'patch-aarch64-test
(lambda _
(substitute* "src/librustc_metadata/dynamic_lib.rs"
@ -704,7 +743,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(let ((base-rust
(rust-bootstrapped-package rust-1.25 "1.26.2"
"0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"
#:patches '("rust-coresimd-doctest.patch"))))
#:patches '("rust-coresimd-doctest.patch"
"rust-1.25-accept-more-detailed-gdb-lines.patch"))))
(package
(inherit base-rust)
(arguments
@ -754,7 +794,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
"089d7rhw55zpvnw71dj8vil6qrylvl4xjr4m8bywjj83d4zq1f9c"
#:patches
'("rust-coresimd-doctest.patch"
"rust-bootstrap-stage0-test.patch"))))
"rust-bootstrap-stage0-test.patch"
"rust-1.25-accept-more-detailed-gdb-lines.patch"))))
(package
(inherit base-rust)
(arguments

View File

@ -460,6 +460,9 @@ implementation techniques and as an expository tool.")
(substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
(("ffi-lib libmpfr-so")
(format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
(substitute* "share/pkgs/readline-lib/readline/rktrl.rkt"
(("\\(getenv \"PLT_READLINE_LIB\"\\)")
(format #f "\"~a\"" (find-so "libedit"))))
(for-each
(lambda (x) (apply patch-ffi-libs x))
'(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
@ -487,9 +490,7 @@ implementation techniques and as an expository tool.")
("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
("libGL"))
("share/pkgs/sgl/gl.rkt"
("libGL" "libGLU"))
("share/pkgs/readline-lib/readline/rktrl.rkt"
("libedit")))))
("libGL" "libGLU")))))
(chdir "src")
#t))
(add-after 'unpack 'patch-/bin/sh

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -18,7 +19,7 @@
(define-module (gnu packages scsi)
#:use-module ((guix licenses)
#:select (gpl2+ bsd-3))
#:select (gpl2+ bsd-2 bsd-3))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
@ -26,14 +27,14 @@
(define-public sg3-utils
(package
(name "sg3-utils")
(version "1.42")
(version "1.43")
(source (origin
(method url-fetch)
(uri (string-append "http://sg.danny.cz/sg/p/sg3_utils-"
version ".tar.xz"))
(sha256
(base32
"1fg71rj0f1gdjmkj0z8wlv46cf9lryjdyjkbi7fjmssgi5jyvblp"))))
"04l58wvncqk6lfh4lashsl3ccsa1114hkd6vwi1h1cbmq2fw9c8v"))))
(build-system gnu-build-system)
(home-page "http://sg.danny.cz/sg/sg3_utils.html")
(synopsis "SCSI device utilities")
@ -49,6 +50,9 @@ up and down disks (@code{sg_start}), do self tests (@code{sg_senddiag}), parse
sense data (@code{sg_decode_sense}), and perform various other functions. In
addition, this package includes a library, called libsgutils, which can be
used in C and C++ programs to interact with SCSI devices.")
;; The libsgutils library itself is licensed under bsd-3. Some tools are
;; licensed under bsd-3, also. Some tools are licensed under gpl2+.
(license (list gpl2+ bsd-3))))
;; See README: "All utilities and libraries have either a "2 clause" BSD
;; license or are "GPL-2ed". [...] That BSD license was updated from the
;; "3 clause" to the newer "2 clause" version on 20180119. To save space
;; various source code files refer to a file called "BSD_LICENSE" [...]."
;; Some files (like sg_compare_and_write.c) retain their 3-clause headers!
(license (list gpl2+ bsd-2 bsd-3))))

View File

@ -292,18 +292,18 @@ history mechanism, job control and a C-like syntax.")
(define-public zsh
(package
(name "zsh")
(version "5.6")
(version "5.6.1")
(source (origin
(method url-fetch)
(uri (list (string-append
"http://www.zsh.org/pub/zsh-" version
"https://www.zsh.org/pub/zsh-" version
".tar.xz")
(string-append
"http://www.zsh.org/pub/old/zsh-" version
"https://www.zsh.org/pub/old/zsh-" version
".tar.xz")))
(sha256
(base32
"1mp6h2452z2029n12mxipjv4b0cc8i8sb72g8p8jklg8275iysvl"))))
"1s5kzfbfvixibb1sbzmmlrrx898zqwi5cfmnnq4bhcbx64zparlm"))))
(build-system gnu-build-system)
(arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre")
#:phases
@ -336,19 +336,6 @@ history mechanism, job control and a C-like syntax.")
(("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)
@ -360,7 +347,7 @@ as an interactive login shell and as a powerful command interpreter
for shell scripting. Zsh can be thought of as an extended Bourne shell
with a large number of improvements, including some features of bash,
ksh, and tcsh.")
(home-page "http://www.zsh.org/")
(home-page "https://www.zsh.org/")
;; The whole thing is under an MIT/X11-style license, but there's one
;; command, 'Completion/Unix/Command/_darcs', which is under GPLv2+.

View File

@ -4,6 +4,7 @@
;;; Copyright © 2016 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -27,6 +28,10 @@
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages autotools)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages pkg-config)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python))
@ -158,3 +163,45 @@ fzy is designed to be used both as an editor plugin and on the command
line. Rather than clearing the screen, fzy displays its interface directly
below the current cursor position, scrolling the screen if necessary.")
(license expat)))
(define-public hstr
(package
(name "hstr")
(version "2.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/dvorka/" name "/archive/"
version ".tar.gz"))
(sha256
(base32
"0yk2008bl48hv0v3c90ngq4y45h3nxif2ik6s3l7kag1zs5yv4wd"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'adjust-ncurses-includes
(lambda* (#:key make-flags outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "src/include/hstr_curses.h"
(("ncursesw\\/curses.h") "ncurses.h"))
(substitute* "src/include/hstr.h"
(("ncursesw\\/curses.h") "ncurses.h")))
#t)))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)))
(inputs
`(("ncurses" ,ncurses)
("readline" ,readline)))
(synopsis "Navigate and search command history with shell history suggest box")
(description "HSTR (HiSToRy) is a command-line utility that brings
improved Bash and Zsh command completion from the history. It aims to make
completion easier and more efficient than with @kbd{Ctrl-R}. It allows you to
easily view, navigate, and search your command history with suggestion boxes.
HSTR can also manage your command history (for instance you can remove
commands that are obsolete or contain a piece of sensitive information) or
bookmark your favourite commands.")
(home-page "http://me.mindforger.com/projects/hh.html")
(license asl2.0)))

View File

@ -19,7 +19,6 @@
(define-module (gnu packages spice)
#:use-module (gnu packages)
#:use-module (gnu packages autotools) ; remove after updating usbredir to 0.7.1+
#:use-module (gnu packages compression)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages gl)
@ -40,64 +39,33 @@
#:use-module (gnu packages xml)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download) ; remove after updating usbredir to 0.7.1+
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils))
(define-public usbredir
(let ((commit "ac80a5971c6318d73d5fba4b5f13d3a9389558c9")
(revision "1")) ;Guix package revision
(package
(name "usbredir")
(version (string-append "0.7.1-" revision "."
(string-take commit 7)))
;(version "0.7.1")
;(source (origin
; (method url-fetch)
; (uri (string-append
; "http://spice-space.org/download/usbredir/"
; "usbredir-" version ".tar.bz2"))
; (sha256
; (base32
; "1wsnmk4wjpdhbn1zaxg6bmyxspcki2zgy0am9lk037rnl4krwzj0"))))
; FIXME: usbredir 0.7.1 release doesn't build on 32 bit systems.
; issue is fixed in HEAD
; remove 'autogen phase and autoconf, automake, libtool inputs
(home-page "https://spice-space.org")
(version "0.8.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://anongit.freedesktop.org/git/spice/usbredir.git")
(commit commit)))
(file-name (git-file-name name version))
(method url-fetch)
(uri (string-append home-page "/download/" name "/" name "-"
version ".tar.bz2"))
(sha256
(base32
"052fywgi72j68dr5ybldncg4vk8iqfrh58la7iazyxxpph9aag1g"))))
"002yik1x7kn0427xahvnhjby2np14a6xqw7c3dx530n9h5d9rg47"))))
(build-system gnu-build-system)
(propagated-inputs
`(("libusb" ,libusb)))
(native-inputs
`(("pkg-config" ,pkg-config)
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'autogen
(lambda _
;; Build without '-Werror', in particular to avoid errors due
;; to the use of the deprecated 'libusb_set_debug' function.
(substitute* "configure.ac"
(("-Werror") ""))
(zero? (system* "autoreconf" "-vfi")))))))
`(("pkg-config" ,pkg-config)))
(synopsis "Tools for sending USB device traffic over a network")
(description "Usbredir is a network protocol for sending USB device traffic
over a network connection. It can be used to redirect traffic from a USB device
to a different (virtual) machine than the one to which the USB device is
attached.")
(home-page "https://www.spice-space.org")
(license (list license:gpl2+ license:lgpl2.0+ license:lgpl2.1+)))))
(description
"Usbredir is a network protocol for sending USB device traffic over a
network connection. It can be used to redirect traffic from a USB device to a
different (virtual) machine than the one to which the USB device is attached.")
(license (list license:gpl2+ license:lgpl2.0+ license:lgpl2.1+))))
(define-public virglrenderer
(package
@ -209,15 +177,15 @@ which allows users to view a desktop computing environment.")
(define-public spice
(package
(name "spice")
(version "0.14.0")
(version "0.14.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://www.spice-space.org/download/releases/"
"spice-" version ".tar.bz2"))
"spice-server/spice-" version ".tar.bz2"))
(sha256
(base32
"0j5q7cp5p95jk8fp48gz76rz96lifimdsx1wnpmfal0nnnar9nrs"))))
"068mb9l7wzk4k4c65bzvpw5fyyzh81rb6z81skgdxvh67pk5vb8y"))))
(build-system gnu-build-system)
(propagated-inputs
`(("openssl" ,openssl)
@ -234,12 +202,18 @@ which allows users to view a desktop computing environment.")
(native-inputs
`(("pkg-config" ,pkg-config)
("python" ,python)
("spice-gtk" ,spice-gtk)))
("spice-gtk" ,spice-gtk)
;; These are needed for the server listen tests.
("glib-networking" ,glib-networking)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
(arguments
`(#:configure-flags
'("--disable-celt051" ; Disable support for unpackaged audio codec
"--enable-lz4"
"--enable-automated-tests")))
'("--enable-lz4"
"--enable-automated-tests")
#:phases (modify-phases %standard-phases
(add-before 'check 'use-empty-ssl-cert-file
(lambda _ (setenv "SSL_CERT_FILE" "/dev/null") #t)))))
(synopsis "Server implementation of the SPICE protocol")
(description "SPICE is a remote display system built for virtual
environments which allows you to view a computing 'desktop' environment

View File

@ -10,6 +10,7 @@
;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2018 Manuel Graf <graf@init.at>
;;;
;;; This file is part of GNU Guix.
;;;
@ -49,12 +50,14 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:autoload (gnu packages protobuf) (protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages xorg)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
@ -682,3 +685,41 @@ which executes commands on multiple remote hosts in parallel. Pdsh implements
dynamically loadable modules for extended functionality such as new remote
shell services and remote host selection.")
(license license:gpl2+)))
(define-public clustershell
(package
(name "clustershell")
(version "1.8")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/cea-hpc/clustershell/archive/v"
version
".tar.gz"))
(sha256
(base32 "1qyf6zp5ikk8rk7zvx5ssbgr9si2bqv3a3415590kd07s7i16nmd"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system python-build-system)
(inputs `(("openssh" ,openssh)))
(propagated-inputs `(("python-pyyaml" ,python-pyyaml)))
(arguments
`(#:phases (modify-phases %standard-phases
(add-before 'build 'record-openssh-file-name
(lambda* (#:key inputs #:allow-other-keys)
(let ((ssh (assoc-ref inputs "openssh")))
(substitute* "lib/ClusterShell/Worker/Ssh.py"
(("info\\(\"ssh_path\"\\) or \"ssh\"")
(string-append "info(\"ssh_path\") or \""
ssh "/bin/ssh\"")))
#t))))))
(home-page "https://cea-hpc.github.io/clustershell/")
(synopsis "Scalable event-driven Python framework for cluster administration")
(description
"ClusterShell is an event-driven Python framework, designed to run local
or distant commands in parallel on server farms or on large GNU/Linux
clusters. It will take care of common issues encountered on HPC clusters,
such as operating on groups of nodes, running distributed commands using
optimized execution algorithms, as well as gathering results and merging
identical outputs, or retrieving return codes. ClusterShell takes advantage
of existing remote shell facilities such as SSH.")
(license license:lgpl2.1+)))

View File

@ -561,7 +561,7 @@ environment variable.")
(define-public fortify-headers
(package
(name "fortify-headers")
(version "0.9")
(version "1.0")
(source
(origin
(method url-fetch)
@ -569,15 +569,15 @@ environment variable.")
name "-" version ".tar.gz"))
(sha256
(base32
"1z517ajy34l2k5lz2gvhbmia9xjgagffi4s22azqxnlmgb1g2xfg"))))
"0nvplfg4y4a10x2j12qwmxzlk2q4j6287j0v5f9bfsdayb04qvh2"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; No tests
`(#:tests? #f ; no tests
#:make-flags (list "CC=gcc"
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(delete 'configure)))) ; No configure script
(delete 'configure)))) ; no configure script
(home-page "https://git.2f30.org/fortify-headers/")
(synopsis "Standalone fortify-source implementation")
(description

View File

@ -30,7 +30,7 @@
(define-public syncthing
(package
(name "syncthing")
(version "0.14.49")
(version "0.14.50")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/syncthing/syncthing"
@ -38,7 +38,7 @@
"/syncthing-source-v" version ".tar.gz"))
(sha256
(base32
"06mzzj5iwgqw3yva7azrsqs9zpl84srbamza4gm03grp7v9gf3sj"))
"0yjj6zzivzw289bhwqjb4xcv8p39n5mcwwr5w6xf5ykzljc5pk55"))
(modules '((guix build utils)))
;; Delete bundled ("vendored") free software source code.
(snippet '(begin
@ -1063,8 +1063,8 @@ using sh's word-splitting rules.")
(license expat))))
(define-public go-github-com-syncthing-notify
(let ((commit "cdf89c4039d13726e227d0a472053ea19de021b4")
(revision "1"))
(let ((commit "b76b45868a77e7800dd06cce61101af9c4274bcc")
(revision "2"))
(package
(name "go-github-com-syncthing-notify")
(version (git-version "0.0.0" revision commit))
@ -1076,7 +1076,7 @@ using sh's word-splitting rules.")
(file-name (git-file-name name version))
(sha256
(base32
"1ra1id9r06i4q8vhrrv1zpybhjxs3361rg35758dxglkyk4pzk6j"))))
"1xxkzaxygxxr51i2kdxsdaqb5i95hqpkw4kcr75wmsp914slw2q9"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/syncthing/notify"))

View File

@ -102,7 +102,7 @@ based command language.")
(define-public kakoune
(package
(name "kakoune")
(version "2018.04.13")
(version "2018.09.04")
(source
(origin
(method url-fetch)
@ -111,7 +111,7 @@ based command language.")
name "-" version ".tar.bz2"))
(sha256
(base32
"1kkzs5nrjxzd1jq7a4k7qfb5kg05871z0r3d9c0yhz9shf6wz36d"))))
"1qbj2hmcfs6pr5lc78z9ni5zxdyp3mr64dvms4l52716ikqcjcbs"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
@ -147,7 +147,7 @@ commands are similar to Vi's ones, and it shares Vi's \"keystrokes as a text
editing language\" model. Kakoune has a strong focus on interactivity, most
commands provide immediate and incremental results, while still being
competitive (as in keystroke count) with Vim.")
(home-page "http://kakoune.org/")
(home-page "https://kakoune.org/")
(license license:unlicense)))
(define-public joe

View File

@ -47,14 +47,14 @@
(define-public tor
(package
(name "tor")
(version "0.3.3.9")
(version "0.3.4.8")
(source (origin
(method url-fetch)
(uri (string-append "https://dist.torproject.org/tor-"
version ".tar.gz"))
(sha256
(base32
"0vyf5z0dn5jghp2qjp076aq62lsz9g32qv9jiqf08skf096nnd45"))))
"08qhzcmzxp5xr2l5721vagksqnnbrzzzy5hmz5y9r8lrq2r4qsl2"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list "--enable-gcc-hardening"

View File

@ -146,14 +146,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git-source' input to cgit
;; needs to be updated as well.
(version "2.18.0")
(version "2.19.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
"14hfwfkrci829a9316hnvkglnqqw1p03cw9k56p4fcb078wbwh4b"))))
"1x1y5z3awabmfg7hk6zb331jxngad4nal4507v96bnf0izsyy3qq"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@ -166,7 +166,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
"15k04s9pcc5wkmlfa8x99nbgczjbx0c91767ciqmjy9kwsavxqws"))))))
"1jvxiqvp9q4is3np063ny7rnmk5hm36d34bhi3cgv89njqdh8laf"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)
@ -642,7 +642,14 @@ collaboration using typical untrusted file hosts or services.")
("xz" ,xz)))
(inputs
`(;; Building cgit requires a Git source tree.
("git-source" ,(package-source git))
("git-source"
,(origin
(method url-fetch)
;; XXX CGit is currently incompatible with Git > 2.18.
(uri "mirror://kernel.org/software/scm/git/git-2.18.0.tar.xz")
(sha256
(base32
"14hfwfkrci829a9316hnvkglnqqw1p03cw9k56p4fcb078wbwh4b"))))
("openssl" ,openssl)
("groff" ,groff)
("python" ,python)

View File

@ -864,7 +864,7 @@ videoformats depend on the configuration flags of ffmpeg.")
(define-public vlc
(package
(name "vlc")
(version "3.0.3-1")
(version "3.0.4")
(source (origin
(method url-fetch)
(uri (string-append
@ -874,7 +874,7 @@ videoformats depend on the configuration flags of ffmpeg.")
(patches (list %vlc-libx264-compat.patch))
(sha256
(base32
"1p7qvdvg9w4lz8vckzhn6bswfkq3qw7fqkgvwjcskdgc266xx7dw"))))
"17jsq0zqpqyxw4ckvjba0hf6zk8ywc4wf8sy3z03hh3ij0vxpwq1"))))
(build-system gnu-build-system)
(native-inputs
`(("flex" ,flex)
@ -1203,7 +1203,7 @@ projects while introducing many more.")
(define-public gnome-mpv
(package
(name "gnome-mpv")
(version "0.14")
(version "0.15")
(source
(origin
(method url-fetch)
@ -1212,7 +1212,7 @@ projects while introducing many more.")
".tar.xz"))
(sha256
(base32
"03kjwd5jq0i5ajnvhjwf5019bjjaa16xkdrhdkiz1k58ipjvvj93"))))
"1y47abkidxh1il0bvq8r3dglwn3ggsy41x2n7ic3x23wvvcqmq74"))))
(native-inputs
`(("intltool" ,intltool)
("pkg-config" ,pkg-config)))
@ -1270,7 +1270,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
(version "2018.08.04")
(version "2018.09.08")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@ -1278,7 +1278,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
"1hcx99qbbyigc8k98c8bcc6a2wnhq6493fmrkl7rysc8krlxr0pm"))))
"0vwc4faqdddrb3nm4fzmkr60n5rc2zwyy8jwrrjad60kcp8isf05"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion

View File

@ -889,7 +889,7 @@ used to validate and fix HTML data.")
(define-public tinyproxy
(package
(name "tinyproxy")
(version "1.8.4")
(version "1.10.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/tinyproxy/tinyproxy/"
@ -897,7 +897,7 @@ used to validate and fix HTML data.")
version ".tar.xz"))
(sha256
(base32
"002hi97687czhfkwsjkr174yvlp10224qi6gd5s53z230bgls7x4"))))
"10jnk6y2swld25mm47mjc0nkffyzsfysnsxwr7cs0ns1kil8ggjr"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@ -912,9 +912,6 @@ used to validate and fix HTML data.")
;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
;; (setenv "XML_DEBUG_CATALOG" "1")
#t)))))
;; All of the below are used to generate the documentation
;; (Should they be propagated inputs of asciidoc ??)
(native-inputs `(("asciidoc" ,asciidoc)))
(home-page "https://tinyproxy.github.io/")
(synopsis "Light-weight HTTP/HTTPS proxy daemon")
(description "Tinyproxy is a light-weight HTTP/HTTPS proxy
@ -6708,8 +6705,8 @@ compressed JSON header blocks.
(license l:expat)))
(define-public hpcguix-web
(let ((commit "9ff40fcc77f248901d861756dbbddc80270c380c")
(revision "2"))
(let ((commit "53e09ea59ec0380b41a4cbda32df8bdb9a10004d")
(revision "3"))
(package
(name "hpcguix-web")
(version (git-version "0.0.1" revision commit))
@ -6721,7 +6718,7 @@ compressed JSON header blocks.
(file-name (git-file-name name version))
(sha256
(base32
"0lxcj9s3wxrv1l7lrxxx374jwzx7h60gxwkbgr46lzcbgvb3k26s"))))
"1ah4pn9697vazhbvd45n4b1rrkx2nbhnw384cr0b941q3sz1dfyc"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)

View File

@ -848,7 +848,7 @@ Keybinder works with GTK-based applications using the X Window System.")
(define-public spectrwm
(package
(name "spectrwm")
(version "3.1.0")
(version "3.2.0")
(source
(origin
(method url-fetch)
@ -859,7 +859,7 @@ Keybinder works with GTK-based applications using the X Window System.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"16lxcharxslf9rc39wxa3mr2nx5d8kzm9ls7p7dal8yrwr7y59dp"))))
"0z7gjmp1x6y8q3dnw6swvbv8x2wd4ykzjvi3ibk2sxhgc910907v"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (let ((pkg-config (lambda (flag)
@ -871,7 +871,7 @@ Keybinder works with GTK-based applications using the X Window System.")
(string-append "PREFIX=" %output)
(string-append "INCS=-I. " (pkg-config "--cflags"))
(string-append "LIBS=" (pkg-config "--libs") " -lm")))
#:tests? #f ;No test suite
#:tests? #f ;no test suite
#:phases
(modify-phases %standard-phases
(add-before 'build 'change-dir
@ -881,12 +881,6 @@ Keybinder works with GTK-based applications using the X Window System.")
(lambda _
(substitute* "Makefile"
(("-g") ""))))
(add-after 'change-dir 'fix-freetype-include
(lambda _
(substitute* "Makefile"
(("/usr/include/freetype2")
(string-append (assoc-ref %build-inputs "freetype")
"/include/freetype2")))))
(delete 'configure)))) ;no 'configure' exists
(inputs
`(("freetype" ,freetype)

View File

@ -20,19 +20,14 @@
(define-module (gnu services admin)
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages logging)
#:use-module (gnu services)
#:use-module (gnu services mcron)
#:use-module (gnu services shepherd)
#:use-module (gnu services web)
#:use-module (gnu system shadow)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix packages)
#:use-module (guix records)
#:use-module (srfi srfi-1)
#:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:export (%default-rotations
%rotated-files
@ -46,29 +41,7 @@
rottlog-configuration
rottlog-configuration?
rottlog-service
rottlog-service-type
<tailon-configuration-file>
tailon-configuration-file
tailon-configuration-file?
tailon-configuration-file-files
tailon-configuration-file-bind
tailon-configuration-file-relative-root
tailon-configuration-file-allow-transfers?
tailon-configuration-file-follow-names?
tailon-configuration-file-tail-lines
tailon-configuration-file-allowed-commands
tailon-configuration-file-debug?
tailon-configuration-file-http-auth
tailon-configuration-file-users
<tailon-configuration>
tailon-configuration
tailon-configuration?
tailon-configuration-config-file
tailon-configuration-package
tailon-service-type))
rottlog-service-type))
;;; Commentary:
;;;
@ -203,149 +176,4 @@ Old log files are removed or compressed according to the configuration.")
rotations)))))
(default-value (rottlog-configuration))))
;;;
;;; Tailon
;;;
(define-record-type* <tailon-configuration-file>
tailon-configuration-file make-tailon-configuration-file
tailon-configuration-file?
(files tailon-configuration-file-files
(default '("/var/log")))
(bind tailon-configuration-file-bind
(default "localhost:8080"))
(relative-root tailon-configuration-file-relative-root
(default #f))
(allow-transfers? tailon-configuration-file-allow-transfers?
(default #t))
(follow-names? tailon-configuration-file-follow-names?
(default #t))
(tail-lines tailon-configuration-file-tail-lines
(default 200))
(allowed-commands tailon-configuration-file-allowed-commands
(default '("tail" "grep" "awk")))
(debug? tailon-configuration-file-debug?
(default #f))
(wrap-lines tailon-configuration-file-wrap-lines
(default #t))
(http-auth tailon-configuration-file-http-auth
(default #f))
(users tailon-configuration-file-users
(default #f)))
(define (tailon-configuration-files-string files)
(string-append
"\n"
(string-join
(map
(lambda (x)
(string-append
" - "
(cond
((string? x)
(simple-format #f "'~A'" x))
((list? x)
(string-join
(cons (simple-format #f "'~A':" (car x))
(map
(lambda (x) (simple-format #f " - '~A'" x))
(cdr x)))
"\n"))
(else (error x)))))
files)
"\n")))
(define-gexp-compiler (tailon-configuration-file-compiler
(file <tailon-configuration-file>) system target)
(match file
(($ <tailon-configuration-file> files bind relative-root
allow-transfers? follow-names?
tail-lines allowed-commands debug?
wrap-lines http-auth users)
(text-file
"tailon-config.yaml"
(string-concatenate
(filter-map
(match-lambda
((key . #f) #f)
((key . value) (string-append key ": " value "\n")))
`(("files" . ,(tailon-configuration-files-string files))
("bind" . ,bind)
("relative-root" . ,relative-root)
("allow-transfers" . ,(if allow-transfers? "true" "false"))
("follow-names" . ,(if follow-names? "true" "false"))
("tail-lines" . ,(number->string tail-lines))
("commands" . ,(string-append "["
(string-join allowed-commands ", ")
"]"))
("debug" . ,(if debug? "true" #f))
("wrap-lines" . ,(if wrap-lines "true" "false"))
("http-auth" . ,http-auth)
("users" . ,(if users
(string-concatenate
(cons "\n"
(map (match-lambda
((user . pass)
(string-append
" " user ":" pass)))
users)))
#f)))))))))
(define-record-type* <tailon-configuration>
tailon-configuration make-tailon-configuration
tailon-configuration?
(config-file tailon-configuration-config-file
(default (tailon-configuration-file)))
(package tailon-configuration-package
(default tailon)))
(define tailon-shepherd-service
(match-lambda
(($ <tailon-configuration> config-file package)
(list (shepherd-service
(provision '(tailon))
(documentation "Run the tailon daemon.")
(start #~(make-forkexec-constructor
`(,(string-append #$package "/bin/tailon")
"-c" ,#$config-file)
#:user "tailon"
#:group "tailon"))
(stop #~(make-kill-destructor)))))))
(define %tailon-accounts
(list (user-group (name "tailon") (system? #t))
(user-account
(name "tailon")
(group "tailon")
(system? #t)
(comment "tailon")
(home-directory "/var/empty")
(shell (file-append shadow "/sbin/nologin")))))
(define tailon-service-type
(service-type
(name 'tailon)
(description
"Run Tailon, a Web application for monitoring, viewing, and searching log
files.")
(extensions
(list (service-extension shepherd-root-service-type
tailon-shepherd-service)
(service-extension account-service-type
(const %tailon-accounts))))
(compose concatenate)
(extend (lambda (parameter files)
(tailon-configuration
(inherit parameter)
(config-file
(let ((old-config-file
(tailon-configuration-config-file parameter)))
(tailon-configuration-file
(inherit old-config-file)
(files (append (tailon-configuration-file-files old-config-file)
files))))))))
(default-value (tailon-configuration))))
;;; admin.scm ends here

View File

@ -1,12 +1,13 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -26,15 +27,18 @@
(define-module (gnu services web)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (gnu services admin)
#:use-module (gnu system pam)
#:use-module (gnu system shadow)
#:use-module (gnu packages admin)
#:use-module (gnu packages web)
#:use-module (gnu packages php)
#:use-module (gnu packages guile)
#:use-module (gnu packages logging)
#:use-module (guix records)
#:use-module (guix modules)
#:use-module (guix gexp)
#:use-module ((guix store) #:select (text-file))
#:use-module ((guix utils) #:select (version-major))
#:use-module ((guix packages) #:select (package-version))
#:use-module (srfi srfi-1)
@ -164,7 +168,29 @@
hpcguix-web-configuration
hpcguix-web-configuration?
hpcguix-web-service-type))
hpcguix-web-service-type
<tailon-configuration-file>
tailon-configuration-file
tailon-configuration-file?
tailon-configuration-file-files
tailon-configuration-file-bind
tailon-configuration-file-relative-root
tailon-configuration-file-allow-transfers?
tailon-configuration-file-follow-names?
tailon-configuration-file-tail-lines
tailon-configuration-file-allowed-commands
tailon-configuration-file-debug?
tailon-configuration-file-http-auth
tailon-configuration-file-users
<tailon-configuration>
tailon-configuration
tailon-configuration?
tailon-configuration-config-file
tailon-configuration-package
tailon-service-type))
;;; Commentary:
;;;
@ -949,6 +975,14 @@ a webserver.")
(chown home-dir (passwd:uid user) (passwd:gid user))
(chmod home-dir #o755))))
(define %hpcguix-web-log-file
"/var/log/hpcguix-web.log")
(define %hpcguix-web-log-rotations
(list (log-rotation
(files (list %hpcguix-web-log-file))
(frequency 'weekly))))
(define (hpcguix-web-shepherd-service config)
(let ((specs (hpcguix-web-configuration-specs config))
(hpcguix-web (hpcguix-web-package config)))
@ -966,7 +1000,8 @@ a webserver.")
#:group "hpcguix-web"
#:environment-variables
(list "XDG_CACHE_HOME=/var/cache"
"SSL_CERT_DIR=/etc/ssl/certs")))
"SSL_CERT_DIR=/etc/ssl/certs")
#:log-file #$%hpcguix-web-log-file))
(stop #~(make-kill-destructor))))))
(define hpcguix-web-service-type
@ -978,5 +1013,152 @@ a webserver.")
(const %hpcguix-web-accounts))
(service-extension activation-service-type
(const %hpcguix-web-activation))
(service-extension rottlog-service-type
(const %hpcguix-web-log-rotations))
(service-extension shepherd-root-service-type
(compose list hpcguix-web-shepherd-service))))))
;;;
;;; Tailon
;;;
(define-record-type* <tailon-configuration-file>
tailon-configuration-file make-tailon-configuration-file
tailon-configuration-file?
(files tailon-configuration-file-files
(default '("/var/log")))
(bind tailon-configuration-file-bind
(default "localhost:8080"))
(relative-root tailon-configuration-file-relative-root
(default #f))
(allow-transfers? tailon-configuration-file-allow-transfers?
(default #t))
(follow-names? tailon-configuration-file-follow-names?
(default #t))
(tail-lines tailon-configuration-file-tail-lines
(default 200))
(allowed-commands tailon-configuration-file-allowed-commands
(default '("tail" "grep" "awk")))
(debug? tailon-configuration-file-debug?
(default #f))
(wrap-lines tailon-configuration-file-wrap-lines
(default #t))
(http-auth tailon-configuration-file-http-auth
(default #f))
(users tailon-configuration-file-users
(default #f)))
(define (tailon-configuration-files-string files)
(string-append
"\n"
(string-join
(map
(lambda (x)
(string-append
" - "
(cond
((string? x)
(simple-format #f "'~A'" x))
((list? x)
(string-join
(cons (simple-format #f "'~A':" (car x))
(map
(lambda (x) (simple-format #f " - '~A'" x))
(cdr x)))
"\n"))
(else (error x)))))
files)
"\n")))
(define-gexp-compiler (tailon-configuration-file-compiler
(file <tailon-configuration-file>) system target)
(match file
(($ <tailon-configuration-file> files bind relative-root
allow-transfers? follow-names?
tail-lines allowed-commands debug?
wrap-lines http-auth users)
(text-file
"tailon-config.yaml"
(string-concatenate
(filter-map
(match-lambda
((key . #f) #f)
((key . value) (string-append key ": " value "\n")))
`(("files" . ,(tailon-configuration-files-string files))
("bind" . ,bind)
("relative-root" . ,relative-root)
("allow-transfers" . ,(if allow-transfers? "true" "false"))
("follow-names" . ,(if follow-names? "true" "false"))
("tail-lines" . ,(number->string tail-lines))
("commands" . ,(string-append "["
(string-join allowed-commands ", ")
"]"))
("debug" . ,(if debug? "true" #f))
("wrap-lines" . ,(if wrap-lines "true" "false"))
("http-auth" . ,http-auth)
("users" . ,(if users
(string-concatenate
(cons "\n"
(map (match-lambda
((user . pass)
(string-append
" " user ":" pass)))
users)))
#f)))))))))
(define-record-type* <tailon-configuration>
tailon-configuration make-tailon-configuration
tailon-configuration?
(config-file tailon-configuration-config-file
(default (tailon-configuration-file)))
(package tailon-configuration-package
(default tailon)))
(define tailon-shepherd-service
(match-lambda
(($ <tailon-configuration> config-file package)
(list (shepherd-service
(provision '(tailon))
(documentation "Run the tailon daemon.")
(start #~(make-forkexec-constructor
`(,(string-append #$package "/bin/tailon")
"-c" ,#$config-file)
#:user "tailon"
#:group "tailon"))
(stop #~(make-kill-destructor)))))))
(define %tailon-accounts
(list (user-group (name "tailon") (system? #t))
(user-account
(name "tailon")
(group "tailon")
(system? #t)
(comment "tailon")
(home-directory "/var/empty")
(shell (file-append shadow "/sbin/nologin")))))
(define tailon-service-type
(service-type
(name 'tailon)
(description
"Run Tailon, a Web application for monitoring, viewing, and searching log
files.")
(extensions
(list (service-extension shepherd-root-service-type
tailon-shepherd-service)
(service-extension account-service-type
(const %tailon-accounts))))
(compose concatenate)
(extend (lambda (parameter files)
(tailon-configuration
(inherit parameter)
(config-file
(let ((old-config-file
(tailon-configuration-config-file parameter)))
(tailon-configuration-file
(inherit old-config-file)
(files (append (tailon-configuration-file-files old-config-file)
files))))))))
(default-value (tailon-configuration))))

View File

@ -1,127 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu tests admin)
#:use-module (gnu tests)
#:use-module (gnu system)
#:use-module (gnu system file-systems)
#:use-module (gnu system shadow)
#:use-module (gnu system vm)
#:use-module (gnu services)
#:use-module (gnu services admin)
#:use-module (gnu services networking)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix monads)
#:export (%test-tailon))
(define %tailon-os
;; Operating system under test.
(simple-operating-system
(dhcp-client-service)
(service tailon-service-type
(tailon-configuration
(config-file
(tailon-configuration-file
(bind "0.0.0.0:8080")))))))
(define* (run-tailon-test #:optional (http-port 8081))
"Run tests in %TAILON-OS, which has tailon running and listening on
HTTP-PORT."
(define os
(marionette-operating-system
%tailon-os
#:imported-modules '((gnu services herd)
(guix combinators))))
(define vm
(virtual-machine
(operating-system os)
(port-forwardings `((,http-port . 8080)))))
(define test
(with-imported-modules '((gnu build marionette))
#~(begin
(use-modules (srfi srfi-11) (srfi srfi-64)
(ice-9 match)
(gnu build marionette)
(web uri)
(web client)
(web response))
(define marionette
;; Forward the guest's HTTP-PORT, where tailon is listening, to
;; port 8080 in the host.
(make-marionette (list #$vm)))
(mkdir #$output)
(chdir #$output)
(test-begin "tailon")
(test-assert "service running"
(marionette-eval
'(begin
(use-modules (gnu services herd))
(start-service 'tailon))
marionette))
(define* (retry-on-error f #:key times delay)
(let loop ((attempt 1))
(match (catch
#t
(lambda ()
(cons #t
(f)))
(lambda args
(cons #f
args)))
((#t . return-value)
return-value)
((#f . error-args)
(if (>= attempt times)
error-args
(begin
(sleep delay)
(loop (+ 1 attempt))))))))
(test-equal "http-get"
200
(retry-on-error
(lambda ()
(let-values (((response text)
(http-get #$(format
#f
"http://localhost:~A/"
http-port)
#:decode-body? #t)))
(response-code response)))
#:times 10
#:delay 5))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))
(gexp->derivation "tailon-test" test))
(define %test-tailon
(system-test
(name "tailon")
(description "Connect to a running Tailon server.")
(value (run-tailon-test))))

View File

@ -33,7 +33,8 @@
#:export (%test-httpd
%test-nginx
%test-php-fpm
%test-hpcguix-web))
%test-hpcguix-web
%test-tailon))
(define %index.html-contents
;; Contents of the /index.html file.
@ -359,3 +360,99 @@ HTTP-PORT, along with php-fpm."
(name "hpcguix-web")
(description "Connect to a running hpcguix-web server.")
(value (run-hpcguix-web-server-test name %hpcguix-web-os))))
(define %tailon-os
;; Operating system under test.
(simple-operating-system
(dhcp-client-service)
(service tailon-service-type
(tailon-configuration
(config-file
(tailon-configuration-file
(bind "0.0.0.0:8080")))))))
(define* (run-tailon-test #:optional (http-port 8081))
"Run tests in %TAILON-OS, which has tailon running and listening on
HTTP-PORT."
(define os
(marionette-operating-system
%tailon-os
#:imported-modules '((gnu services herd)
(guix combinators))))
(define vm
(virtual-machine
(operating-system os)
(port-forwardings `((,http-port . 8080)))))
(define test
(with-imported-modules '((gnu build marionette))
#~(begin
(use-modules (srfi srfi-11) (srfi srfi-64)
(ice-9 match)
(gnu build marionette)
(web uri)
(web client)
(web response))
(define marionette
;; Forward the guest's HTTP-PORT, where tailon is listening, to
;; port 8080 in the host.
(make-marionette (list #$vm)))
(mkdir #$output)
(chdir #$output)
(test-begin "tailon")
(test-assert "service running"
(marionette-eval
'(begin
(use-modules (gnu services herd))
(start-service 'tailon))
marionette))
(define* (retry-on-error f #:key times delay)
(let loop ((attempt 1))
(match (catch
#t
(lambda ()
(cons #t
(f)))
(lambda args
(cons #f
args)))
((#t . return-value)
return-value)
((#f . error-args)
(if (>= attempt times)
error-args
(begin
(sleep delay)
(loop (+ 1 attempt))))))))
(test-equal "http-get"
200
(retry-on-error
(lambda ()
(let-values (((response text)
(http-get #$(format
#f
"http://localhost:~A/"
http-port)
#:decode-body? #t)))
(response-code response)))
#:times 10
#:delay 5))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))
(gexp->derivation "tailon-test" test))
(define %test-tailon
(system-test
(name "tailon")
(description "Connect to a running Tailon server.")
(value (run-tailon-test))))

View File

@ -35,13 +35,13 @@
(define (default-ldc)
"Return the default ldc package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((ldc (resolve-interface '(gnu packages ldc))))
(let ((ldc (resolve-interface '(gnu packages dlang))))
(module-ref ldc 'ldc)))
(define (default-dub)
"Return the default dub package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((ldc (resolve-interface '(gnu packages ldc))))
(let ((ldc (resolve-interface '(gnu packages dlang))))
(module-ref ldc 'dub)))
(define (default-pkg-config)

View File

@ -94,12 +94,20 @@ definitions for all the SEARCH-PATHS."
(for-each (write-environment-variable-definition port)
(map (abstract-profile output) variables))))))
(define (ensure-writable-directory directory)
(define* (ensure-writable-directory directory
#:key (symlink symlink))
"Ensure DIRECTORY exists and is writable. If DIRECTORY is currently a
symlink (to a read-only directory in the store), then delete the symlink and
instead make DIRECTORY a \"real\" directory containing symlinks."
(define (absolute? file)
(string-prefix? "/" file))
(define (unsymlink link)
(let* ((target (readlink link))
(let* ((target (match (readlink link)
((? absolute? target)
target)
((? string? relative)
(string-append (dirname link) "/" relative))))
;; TARGET might itself be a symlink, so append "/" to make sure
;; 'scandir' enters it.
(files (scandir (string-append target "/")
@ -149,7 +157,8 @@ SEARCH-PATHS."
;; Make sure we can write to 'OUTPUT/etc'. 'union-build' above could have
;; made 'etc' a symlink to a read-only sub-directory in the store so we need
;; to work around that.
(ensure-writable-directory (string-append output "/etc"))
(ensure-writable-directory (string-append output "/etc")
#:symlink symlink)
;; Write 'OUTPUT/etc/profile'.
(build-etc/profile output search-paths))

View File

@ -385,8 +385,8 @@ the returned procedure is called."
#:return-errno? #t)))
(lambda args
(lambda _
(error (format #f "~a: syscall->procedure failed: ~s"
name args))))))
(throw 'system-error name "~A" (list (strerror ENOSYS))
(list ENOSYS))))))
(define-syntax define-as-needed
(syntax-rules ()

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;;
@ -19,7 +19,6 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix git-download)
#:use-module (guix build utils)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix monads)
@ -27,9 +26,8 @@
#:use-module (guix packages)
#:use-module (guix modules)
#:autoload (guix build-system gnu) (standard-packages)
#:use-module (git)
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 vlist)
#:use-module (srfi srfi-1)
#:export (git-reference
@ -153,41 +151,31 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
;;; 'git-predicate'.
;;;
(define (files->directory-tree files)
"Return a tree of vhashes representing the directory listed in FILES, a list
like '(\"a/b\" \"b/c/d\")."
(fold (lambda (file result)
(let loop ((file (string-split file #\/))
(result result))
(match file
((_)
result)
((directory children ...)
(match (vhash-assoc directory result)
(#f
(vhash-cons directory (loop children vlist-null)
result))
((_ . previous)
;; XXX: 'vhash-delete' is O(n).
(vhash-cons directory (loop children previous)
(vhash-delete directory result)))))
(()
result))))
vlist-null
files))
(define (directory-in-tree? tree directory)
"Return true if DIRECTORY, a string like \"a/b\", denotes a directory listed
in TREE."
(let loop ((directory (string-split directory #\/))
(tree tree))
(match directory
(()
#t)
((head . tail)
(match (vhash-assoc head tree)
((_ . sub-tree) (loop tail sub-tree))
(#f #f))))))
(define (git-file-list directory)
"Return the list of files checked in in the Git repository at DIRECTORY.
The result is similar to that of the 'git ls-files' command, except that it
also includes directories, not just regular files. The returned file names
are relative to DIRECTORY, which is not necessarily the root of the checkout."
(let* ((directory (canonicalize-path directory))
(dot-git (repository-discover directory))
(top (dirname dot-git))
(repository (repository-open dot-git))
(head (repository-head repository))
(oid (reference-target head))
(commit (commit-lookup repository oid))
(tree (commit-tree commit))
(files (tree-list tree)))
(repository-close! repository)
(if (string=? top directory)
files
(let ((relative (string-append
(string-drop directory
(+ 1 (string-length top)))
"/")))
(filter-map (lambda (file)
(and (string-prefix? relative file)
(string-drop file (string-length relative))))
files)))))
(define (git-predicate directory)
"Return a predicate that returns true if a file is part of the Git checkout
@ -195,15 +183,7 @@ living at DIRECTORY. Upon Git failure, return #f instead of a predicate.
The returned predicate takes two arguments FILE and STAT where FILE is an
absolute file name and STAT is the result of 'lstat'."
(let* ((pipe (with-directory-excursion directory
(open-pipe* OPEN_READ "git" "ls-files")))
(files (let loop ((lines '()))
(match (read-line pipe)
((? eof-object?)
(reverse lines))
(line
(loop (cons line lines))))))
(directory-tree (files->directory-tree files))
(let* ((files (git-file-list directory))
(inodes (fold (lambda (file result)
(let ((stat
(lstat (string-append directory "/"
@ -211,27 +191,12 @@ absolute file name and STAT is the result of 'lstat'."
(vhash-consv (stat:ino stat) (stat:dev stat)
result)))
vlist-null
files))
;; Note: For this to work we must *not* call 'canonicalize-path' on
;; DIRECTORY or we would get discrepancies of the returned lambda is
;; called with a non-canonical file name.
(prefix-length (+ 1 (string-length directory)))
(status (close-pipe pipe)))
(and (zero? status)
files)))
(lambda (file stat)
(match (stat:type stat)
('directory
(directory-in-tree? directory-tree
(string-drop file prefix-length)))
((or 'regular 'symlink)
;; Comparing file names is always tricky business so we rely on
;; inode numbers instead
;; Comparing file names is always tricky business so we rely on inode
;; numbers instead.
(match (vhash-assv (stat:ino stat) inodes)
((_ . dev) (= dev (stat:dev stat)))
(#f #f)))
(_
#f))))))
(#f #f)))))
;;; git-download.scm ends here

View File

@ -733,9 +733,11 @@ needed."
;; Set the build options before we do anything else.
(set-build-options-from-command-line store opts)
(parameterize ((current-build-output-port (if quiet?
(parameterize ((current-build-output-port
(if quiet?
(%make-void-port "w")
(build-output-port #:verbose? #t))))
(build-output-port #:verbose? #t
#:port (duplicate-port (current-error-port) "w")))))
(let* ((mode (assoc-ref opts 'build-mode))
(drv (options->derivations store opts))
(urls (map (cut string-append <> "/log")

View File

@ -950,5 +950,6 @@ processed, #f otherwise."
%bootstrap-guile
(canonical-package guile-2.2))))
(current-build-output-port
(build-output-port #:verbose? verbose?)))
(build-output-port #:verbose? verbose?
#:port (duplicate-port (current-error-port) "w"))))
(process-actions (%store) opts))))))

View File

@ -1087,7 +1087,10 @@ default value."
(#f #f)
(locale (false-if-exception (setlocale LC_ALL locale))))
(set-thread-name "guix substitute")
(catch 'system-error
(lambda ()
(set-thread-name "guix substitute"))
(const #t)) ;GNU/Hurd lacks 'prctl'
(with-networking
(with-error-handling ; for signature errors

View File

@ -1708,12 +1708,26 @@ phase announcements and replaces any other output with a spinner."
(string-append
(proc "Building " 'BLUE 'BOLD)
(match:substring m 2) "\n")))
("^(@ build-failed) (.*) (.*)"
,(if verbose?
;; Err on the side of caution: show everything, even
;; if it might be redundant.
`("^(@ build-failed)(.+)"
#:transform
,(lambda (m)
(string-append
(proc "Build failed: " 'RED 'BOLD)
(match:substring m 2) "\n")))
(match:substring m 2))))
;; Show only that the build failed.
`("^(@ build-failed)(.+) -.*"
#:transform
,(lambda (m)
(string-append
(proc "Build failed: " 'RED 'BOLD)
(match:substring m 2)
"\n"))))
;; NOTE: this line contains "\n" characters.
("^(sha256 hash mismatch for output path)(.*)"
RED BLACK)
("^(@ build-succeeded) (.*) (.*)"
#:transform
,(lambda (m)

View File

@ -20,6 +20,7 @@
(define-module (test-profiles)
#:use-module (guix tests)
#:use-module (guix profiles)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix grafts)
@ -543,6 +544,41 @@
get-string-all)
"foo!"))))))
(test-assertm "profile-derivation when etc/ is a relative symlink"
;; See <https://bugs.gnu.org/32686>.
(mlet* %store-monad
((etc (gexp->derivation
"etc"
#~(begin
(mkdir #$output)
(call-with-output-file (string-append #$output "/foo")
(lambda (port)
(display "Heya!" port))))))
(thing -> (dummy-package "dummy"
(build-system trivial-build-system)
(inputs
`(("etc" ,etc)))
(arguments
`(#:guile ,%bootstrap-guile
#:builder
(let ((out (assoc-ref %outputs "out"))
(etc (assoc-ref %build-inputs "etc")))
(mkdir out)
(symlink etc (string-append out "/etc"))
#t)))))
(entry -> (package->manifest-entry thing))
(drv (profile-derivation (manifest (list entry))
#:relative-symlinks? #t
#:hooks '()
#:locales? #f))
(profile -> (derivation->output-path drv)))
(mbegin %store-monad
(built-derivations (list drv))
(return (string=? (call-with-input-file
(string-append profile "/etc/foo")
get-string-all)
"Heya!")))))
(test-equalm "union vs. dangling symlink" ;<https://bugs.gnu.org/26949>
"does-not-exist"
(mlet* %store-monad