Merge branch 'master' into core-updates

This commit is contained in:
Ludovic Courtès 2016-06-27 09:30:01 +02:00
parent 74c8b174e8
commit 01497dfe6c
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
72 changed files with 5029 additions and 1340 deletions

View File

@ -328,7 +328,6 @@ check-local:
endif !CAN_RUN_TESTS endif !CAN_RUN_TESTS
check-system: $(GOBJECTS) check-system: $(GOBJECTS)
$(AM_V_at)echo "Running system tests..."
$(AM_V_at)$(top_builddir)/pre-inst-env \ $(AM_V_at)$(top_builddir)/pre-inst-env \
$(GUILE) --no-auto-compile \ $(GUILE) --no-auto-compile \
-e '(@@ (run-system-tests) run-system-tests)' \ -e '(@@ (run-system-tests) run-system-tests)' \

View File

@ -49,6 +49,17 @@ values."
(/ (time-nanosecond time) 1e9))) (/ (time-nanosecond time) 1e9)))
(apply values results)))) (apply values results))))
(define (assert-valid-job job thing)
"Raise an error if THING is not an alist with a valid 'derivation' entry.
Otherwise return THING."
(unless (and (list? thing)
(and=> (assoc-ref thing 'derivation)
(lambda (value)
(and (string? value)
(string-suffix? ".drv" value)))))
(error "job did not produce a valid alist" job thing))
thing)
;; Without further ado... ;; Without further ado...
(match (command-line) (match (command-line)
@ -83,7 +94,9 @@ values."
(map (lambda (job thunk) (map (lambda (job thunk)
(format (current-error-port) "evaluating '~a'... " job) (format (current-error-port) "evaluating '~a'... " job)
(force-output (current-error-port)) (force-output (current-error-port))
(cons job (call-with-time-display thunk))) (cons job
(assert-valid-job job
(call-with-time-display thunk))))
names thunks))) names thunks)))
port)))) port))))
((command _ ...) ((command _ ...)

View File

@ -59,6 +59,7 @@
(gnu system) (gnu system)
(gnu system vm) (gnu system vm)
(gnu system install) (gnu system install)
(gnu tests)
(srfi srfi-1) (srfi srfi-1)
(srfi srfi-26) (srfi srfi-26)
(ice-9 match)) (ice-9 match))
@ -129,6 +130,9 @@ SYSTEM."
(file (string-append dir "/demo-os.scm"))) (file (string-append dir "/demo-os.scm")))
(read-operating-system file))) (read-operating-system file)))
(define %guixsd-supported-systems
'("x86_64-linux" "i686-linux"))
(define (qemu-jobs store system) (define (qemu-jobs store system)
"Return a list of jobs that build QEMU images for SYSTEM." "Return a list of jobs that build QEMU images for SYSTEM."
(define (->alist drv) (define (->alist drv)
@ -150,7 +154,7 @@ system.")
(define MiB (define MiB
(expt 2 20)) (expt 2 20))
(if (member system '("x86_64-linux" "i686-linux")) (if (member system %guixsd-supported-systems)
(list (->job 'qemu-image (list (->job 'qemu-image
(run-with-store store (run-with-store store
(mbegin %store-monad (mbegin %store-monad
@ -167,6 +171,36 @@ system.")
(* 1024 MiB)))))) (* 1024 MiB))))))
'())) '()))
(define (system-test-jobs store system)
"Return a list of jobs for the system tests."
(define (test->thunk test)
(lambda ()
(define drv
(run-with-store store
(mbegin %store-monad
(set-current-system system)
(set-grafting #f)
(set-guile-for-build (default-guile))
(system-test-value test))))
`((derivation . ,(derivation-file-name drv))
(description . ,(format #f "GuixSD '~a' system test"
(system-test-name test)))
(long-description . ,(system-test-description test))
(license . ,gpl3+)
(home-page . ,%guix-home-page-url)
(maintainers . ("bug-guix@gnu.org")))))
(define (->job test)
(let ((name (string->symbol
(string-append "test." (system-test-name test)
"." system))))
(cons name (test->thunk test))))
(if (member system %guixsd-supported-systems)
(map ->job (all-system-tests))
'()))
(define (tarball-jobs store system) (define (tarball-jobs store system)
"Return Hydra jobs to build the self-contained Guix binary tarball." "Return Hydra jobs to build the self-contained Guix binary tarball."
(define (->alist drv) (define (->alist drv)
@ -274,6 +308,7 @@ valid."
system)))) system))))
(append (filter-map job all) (append (filter-map job all)
(qemu-jobs store system) (qemu-jobs store system)
(system-test-jobs store system)
(tarball-jobs store system) (tarball-jobs store system)
(cross-jobs system)))) (cross-jobs system))))
((core) ((core)

View File

@ -17,13 +17,14 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (run-system-tests) (define-module (run-system-tests)
#:use-module (gnu tests base) #:use-module (gnu tests)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (ice-9 match)
#:export (run-system-tests)) #:export (run-system-tests))
(define (built-derivations* drv) (define (built-derivations* drv)
@ -44,13 +45,26 @@
lst) lst)
(lift1 reverse %store-monad)))) (lift1 reverse %store-monad))))
(define %system-tests
(list %test-basic-os))
(define (run-system-tests . args) (define (run-system-tests . args)
(define tests
;; Honor the 'TESTS' environment variable so that one can select a subset
;; of tests to run in the usual way:
;;
;; make check-system TESTS=installed-os
(match (getenv "TESTS")
(#f
(all-system-tests))
((= string-tokenize (tests ...))
(filter (lambda (test)
(member (system-test-name test) tests))
(all-system-tests)))))
(format (current-error-port) "Running ~a system tests...~%"
(length tests))
(with-store store (with-store store
(run-with-store store (run-with-store store
(mlet* %store-monad ((drv (sequence %store-monad %system-tests)) (mlet* %store-monad ((drv (mapm %store-monad system-test-value tests))
(out -> (map derivation->output-path drv))) (out -> (map derivation->output-path drv)))
(mbegin %store-monad (mbegin %store-monad
(show-what-to-build* drv) (show-what-to-build* drv)

View File

@ -69,16 +69,16 @@ then
fi fi
# The configuration directory, for import/export signing keys. # The configuration directory, for import/export signing keys.
NIX_CONF_DIR="@GUIX_TEST_ROOT@/etc" GUIX_CONFIGURATION_DIRECTORY="@GUIX_TEST_ROOT@/etc"
if [ ! -d "$NIX_CONF_DIR" ] if [ ! -d "$GUIX_CONFIGURATION_DIRECTORY" ]
then then
# Copy the keys so that the secret key has the right permissions (the # Copy the keys so that the secret key has the right permissions (the
# daemon errors out when this is not the case.) # daemon errors out when this is not the case.)
mkdir -p "$NIX_CONF_DIR" mkdir -p "$GUIX_CONFIGURATION_DIRECTORY"
cp "@abs_top_srcdir@/tests/signing-key.sec" \ cp "@abs_top_srcdir@/tests/signing-key.sec" \
"@abs_top_srcdir@/tests/signing-key.pub" \ "@abs_top_srcdir@/tests/signing-key.pub" \
"$NIX_CONF_DIR" "$GUIX_CONFIGURATION_DIRECTORY"
chmod 400 "$NIX_CONF_DIR/signing-key.sec" chmod 400 "$GUIX_CONFIGURATION_DIRECTORY/signing-key.sec"
fi fi
# A place to store data of the substituter. # A place to store data of the substituter.
@ -100,7 +100,7 @@ then
NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \ NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \
NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL \ NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL \
GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \ GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \
NIX_CONF_DIR XDG_CACHE_HOME NIXPKGS GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME NIXPKGS
# Launch the daemon without chroot support because is may be # Launch the daemon without chroot support because is may be
# unavailable, for instance if we're not running as root. # unavailable, for instance if we're not running as root.

View File

@ -204,6 +204,7 @@ System Configuration
Services Services
* Base Services:: Essential system services. * Base Services:: Essential system services.
* Scheduled Job Execution:: The mcron service.
* Networking Services:: Network setup, SSH daemon, etc. * Networking Services:: Network setup, SSH daemon, etc.
* X Window:: Graphical display. * X Window:: Graphical display.
* Desktop Services:: D-Bus and desktop services. * Desktop Services:: D-Bus and desktop services.
@ -619,6 +620,31 @@ Upon failure, please email @email{bug-guix@@gnu.org} and attach the
as well as version numbers of the dependencies (@pxref{Requirements}) in as well as version numbers of the dependencies (@pxref{Requirements}) in
your message. your message.
Guix also comes with a whole-system test suite that tests complete
GuixSD operating system instances. It can only run on systems where
Guix is already installed, using:
@example
make check-system
@end example
@noindent
or, again, by defining @code{TESTS} to select a subset of tests to run:
@example
make check-system TESTS="basic mcron"
@end example
These system tests are defined in the @code{(gnu tests @dots{})}
modules. They work by running the operating systems under test with
lightweight instrumentation in a virtual machine (VM). They can be
computationally intensive or rather cheap, depending on whether
substitutes are available for their dependencies (@pxref{Substitutes}).
Some of them require a lot of storage space to hold VM images.
Again in case of test failures, please send @email{bug-guix@@gnu.org}
all the details.
@node Setting Up the Daemon @node Setting Up the Daemon
@section Setting Up the Daemon @section Setting Up the Daemon
@ -682,8 +708,13 @@ Bash syntax and the @code{shadow} commands):
@noindent @noindent
The number of build users determines how many build jobs may run in The number of build users determines how many build jobs may run in
parallel, as specified by the @option{--max-jobs} option parallel, as specified by the @option{--max-jobs} option
(@pxref{Invoking guix-daemon, @option{--max-jobs}}). The (@pxref{Invoking guix-daemon, @option{--max-jobs}}). To use
@code{guix-daemon} program may then be run as @code{root} with the @command{guix system vm} and related commands, you may need to add the
build users to the @code{kvm} group so they can access @file{/dev/kvm},
using @code{-G guixbuild,kvm} instead of @code{-G guixbuild}
(@pxref{Invoking guix system}).
The @code{guix-daemon} program may then be run as @code{root} with the
following command@footnote{If your machine uses the systemd init system, following command@footnote{If your machine uses the systemd init system,
dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service}
file in @file{/etc/systemd/system} will ensure that file in @file{/etc/systemd/system} will ensure that
@ -7185,6 +7216,7 @@ declaration.
@menu @menu
* Base Services:: Essential system services. * Base Services:: Essential system services.
* Scheduled Job Execution:: The mcron service.
* Networking Services:: Network setup, SSH daemon, etc. * Networking Services:: Network setup, SSH daemon, etc.
* X Window:: Graphical display. * X Window:: Graphical display.
* Desktop Services:: D-Bus and desktop services. * Desktop Services:: D-Bus and desktop services.
@ -7463,6 +7495,100 @@ archive}). If that is not the case, the service will fail to start.
@end deffn @end deffn
@node Scheduled Job Execution
@subsubsection Scheduled Job Execution
@cindex cron
@cindex scheduling jobs
The @code{(gnu services mcron)} module provides an interface to
GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,,
mcron, GNU@tie{}mcron}). GNU@tie{}mcron is similar to the traditional
Unix @command{cron} daemon; the main difference is that it is
implemented in Guile Scheme, which provides a lot of flexibility when
specifying the scheduling of jobs and their actions.
The example below defines an operating system that runs the
@command{updatedb} (@pxref{Invoking updatedb,,, find, Finding Files})
and the @command{guix gc} commands (@pxref{Invoking guix gc}) daily, as
well as the @command{mkid} command on behalf of an unprivileged user
(@pxref{mkid invocation,,, idutils, ID Database Utilities}). It uses
gexps to introduce job definitions that are passed to mcron
(@pxref{G-Expressions}).
@lisp
(use-modules (guix) (gnu) (gnu services mcron))
(use-package-modules base idutils)
(define updatedb-job
;; Run 'updatedb' at 3AM every day. Here we write the
;; job's action as a Scheme procedure.
#~(job '(next-hour '(3))
(lambda ()
(execl (string-append #$findutils "/bin/updatedb")
"updatedb"
"--prunepaths=/tmp /var/tmp /gnu/store"))))
(define garbage-collector-job
;; Collect garbage 5 minutes after midnight every day.
;; The job's action is a shell command.
#~(job "5 0 * * *" ;Vixie cron syntax
"guix gc -F 1G"))
(define idutils-jobs
;; Update the index database as user "charlie" at 12:15PM
;; and 19:15PM. This runs from the user's home directory.
#~(job '(next-minute-from (next-hour '(12 19)) '(15))
(string-append #$idutils "/bin/mkid src")
#:user "charlie"))
(operating-system
;; @dots{}
(services (cons (mcron-service (list garbage-collector-job
updatedb-job
idutils-job))
%base-services)))
@end lisp
@xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron},
for more information on mcron job specifications. Below is the
reference of the mcron service.
@deffn {Scheme Procedure} mcron-service @var{jobs} [#:mcron @var{mcron2}]
Return an mcron service running @var{mcron} that schedules @var{jobs}, a
list of gexps denoting mcron job specifications.
This is a shorthand for:
@example
(service mcron-service-type
(mcron-configuration (mcron mcron) (jobs jobs)))
@end example
@end deffn
@defvr {Scheme Variable} mcron-service-type
This is the type of the @code{mcron} service, whose value is an
@code{mcron-configuration} object.
This service type can be the target of a service extension that provides
it additional job specifications (@pxref{Service Composition}). In
other words, it is possible to define services that provide addition
mcron jobs to run.
@end defvr
@deftp {Data Type} mcron-configuration
Data type representing the configuration of mcron.
@table @asis
@item @code{mcron} (default: @var{mcron2})
The mcron package to use.
@item @code{jobs}
This is a list of gexps (@pxref{G-Expressions}), where each gexp
corresponds to an mcron job specification (@pxref{Syntax, mcron job
specifications,, mcron, GNU@tie{}mcron}).
@end table
@end deftp
@node Networking Services @node Networking Services
@subsubsection Networking Services @subsubsection Networking Services
@ -10121,12 +10247,14 @@ a list of available debugging commands.
@end table @end table
@end table @end table
Note that all the actions above, except @code{build} and @code{init}, @quotation Note
rely on KVM support in the Linux-Libre kernel. Specifically, the All the actions above, except @code{build} and @code{init},
machine should have hardware virtualization support, the corresponding can use KVM support in the Linux-libre kernel. Specifically, if the
machine has hardware virtualization support, the corresponding
KVM kernel module should be loaded, and the @file{/dev/kvm} device node KVM kernel module should be loaded, and the @file{/dev/kvm} device node
must exist and be readable and writable by the user and by the must exist and be readable and writable by the user and by the
build users of the daemon. build users of the daemon (@pxref{Build Environment Setup}).
@end quotation
Once you have built, configured, re-configured, and re-re-configured Once you have built, configured, re-configured, and re-re-configured
your GuixSD installation, you may find it useful to list the operating your GuixSD installation, you may find it useful to list the operating

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; ;;;
@ -55,8 +55,8 @@
(define* (qemu-command #:optional (system %host-type)) (define* (qemu-command #:optional (system %host-type))
"Return the default name of the QEMU command for SYSTEM." "Return the default name of the QEMU command for SYSTEM."
(let ((cpu (substring %host-type 0 (let ((cpu (substring system 0
(string-index %host-type #\-)))) (string-index system #\-))))
(string-append "qemu-system-" (string-append "qemu-system-"
(if (string-match "^i[3456]86$" cpu) (if (string-match "^i[3456]86$" cpu)
"i386" "i386"

View File

@ -41,6 +41,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/apl.scm \ %D%/packages/apl.scm \
%D%/packages/apr.scm \ %D%/packages/apr.scm \
%D%/packages/aspell.scm \ %D%/packages/aspell.scm \
%D%/packages/assembly.scm \
%D%/packages/attr.scm \ %D%/packages/attr.scm \
%D%/packages/audacity.scm \ %D%/packages/audacity.scm \
%D%/packages/audio.scm \ %D%/packages/audio.scm \
@ -108,6 +109,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/engineering.scm \ %D%/packages/engineering.scm \
%D%/packages/enlightenment.scm \ %D%/packages/enlightenment.scm \
%D%/packages/entr.scm \ %D%/packages/entr.scm \
%D%/packages/erlang.scm \
%D%/packages/fcitx.scm \ %D%/packages/fcitx.scm \
%D%/packages/feh.scm \ %D%/packages/feh.scm \
%D%/packages/figlet.scm \ %D%/packages/figlet.scm \
@ -205,7 +207,6 @@ GNU_SYSTEM_MODULES = \
%D%/packages/libusb.scm \ %D%/packages/libusb.scm \
%D%/packages/libunwind.scm \ %D%/packages/libunwind.scm \
%D%/packages/libupnp.scm \ %D%/packages/libupnp.scm \
%D%/packages/lightning.scm \
%D%/packages/links.scm \ %D%/packages/links.scm \
%D%/packages/linux.scm \ %D%/packages/linux.scm \
%D%/packages/lirc.scm \ %D%/packages/lirc.scm \
@ -363,7 +364,6 @@ GNU_SYSTEM_MODULES = \
%D%/packages/xdisorg.scm \ %D%/packages/xdisorg.scm \
%D%/packages/xorg.scm \ %D%/packages/xorg.scm \
%D%/packages/xfce.scm \ %D%/packages/xfce.scm \
%D%/packages/yasm.scm \
%D%/packages/yubico.scm \ %D%/packages/yubico.scm \
%D%/packages/zile.scm \ %D%/packages/zile.scm \
%D%/packages/zip.scm \ %D%/packages/zip.scm \
@ -378,6 +378,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/dict.scm \ %D%/services/dict.scm \
%D%/services/lirc.scm \ %D%/services/lirc.scm \
%D%/services/mail.scm \ %D%/services/mail.scm \
%D%/services/mcron.scm \
%D%/services/networking.scm \ %D%/services/networking.scm \
%D%/services/shepherd.scm \ %D%/services/shepherd.scm \
%D%/services/herd.scm \ %D%/services/herd.scm \
@ -409,7 +410,8 @@ GNU_SYSTEM_MODULES = \
%D%/build/vm.scm \ %D%/build/vm.scm \
\ \
%D%/tests.scm \ %D%/tests.scm \
%D%/tests/base.scm %D%/tests/base.scm \
%D%/tests/install.scm
patchdir = $(guilemoduledir)/%D%/packages/patches patchdir = $(guilemoduledir)/%D%/packages/patches
@ -442,6 +444,7 @@ dist_patch_DATA = \
%D%/packages/patches/avrdude-fix-libusb.patch \ %D%/packages/patches/avrdude-fix-libusb.patch \
%D%/packages/patches/awesome-reproducible-png.patch \ %D%/packages/patches/awesome-reproducible-png.patch \
%D%/packages/patches/bash-completion-directories.patch \ %D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/beets-image-test-failure.patch \
%D%/packages/patches/bigloo-gc-shebangs.patch \ %D%/packages/patches/bigloo-gc-shebangs.patch \
%D%/packages/patches/binutils-ld-new-dtags.patch \ %D%/packages/patches/binutils-ld-new-dtags.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/binutils-loongson-workaround.patch \
@ -656,6 +659,7 @@ dist_patch_DATA = \
%D%/packages/patches/mumps-build-parallelism.patch \ %D%/packages/patches/mumps-build-parallelism.patch \
%D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \
%D%/packages/patches/mutt-store-references.patch \ %D%/packages/patches/mutt-store-references.patch \
%D%/packages/patches/nasm-no-ps-pdf.patch \
%D%/packages/patches/net-tools-bitrot.patch \ %D%/packages/patches/net-tools-bitrot.patch \
%D%/packages/patches/netcdf-config-date.patch \ %D%/packages/patches/netcdf-config-date.patch \
%D%/packages/patches/ngircd-handle-zombies.patch \ %D%/packages/patches/ngircd-handle-zombies.patch \
@ -741,6 +745,7 @@ dist_patch_DATA = \
%D%/packages/patches/rpm-CVE-2014-8118.patch \ %D%/packages/patches/rpm-CVE-2014-8118.patch \
%D%/packages/patches/rsem-makefile.patch \ %D%/packages/patches/rsem-makefile.patch \
%D%/packages/patches/ruby-concurrent-ignore-broken-test.patch \ %D%/packages/patches/ruby-concurrent-ignore-broken-test.patch \
%D%/packages/patches/ruby-puma-ignore-broken-test.patch \
%D%/packages/patches/ruby-symlinkfix.patch \ %D%/packages/patches/ruby-symlinkfix.patch \
%D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\ %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\
%D%/packages/patches/rush-CVE-2013-6889.patch \ %D%/packages/patches/rush-CVE-2013-6889.patch \

View File

@ -45,6 +45,7 @@
%package-module-path %package-module-path
fold-packages fold-packages
scheme-modules ;XXX: for lack of a better place
find-packages-by-name find-packages-by-name
find-best-packages-by-name find-best-packages-by-name
@ -158,8 +159,8 @@ returned list is sorted in alphabetical order."
(map string->symbol (map string->symbol
(string-tokenize (string-drop-right file 4) not-slash))))) (string-tokenize (string-drop-right file 4) not-slash)))))
(define* (package-modules directory #:optional sub-directory) (define* (scheme-modules directory #:optional sub-directory)
"Return the list of modules that provide packages for the distribution. "Return the list of Scheme modules available under DIRECTORY.
Optionally, narrow the search to SUB-DIRECTORY." Optionally, narrow the search to SUB-DIRECTORY."
(define prefix-len (define prefix-len
(string-length directory)) (string-length directory))
@ -184,9 +185,9 @@ search."
(fold-right (lambda (spec result) (fold-right (lambda (spec result)
(match spec (match spec
((? string? directory) ((? string? directory)
(append (package-modules directory) result)) (append (scheme-modules directory) result))
((directory . sub-directory) ((directory . sub-directory)
(append (package-modules directory sub-directory) (append (scheme-modules directory sub-directory)
result)))) result))))
'() '()
path)) path))

View File

@ -1681,3 +1681,30 @@ controller, or compare the network bandwidth numbers directly with the disk
throughput (in the same interval).") throughput (in the same interval).")
(home-page "http://dag.wiee.rs/home-made/dstat/") (home-page "http://dag.wiee.rs/home-made/dstat/")
(license license:gpl2+))) (license license:gpl2+)))
(define-public thefuck
(package
(name "thefuck")
(version "3.9")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/nvbn/thefuck/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0g4s2vkpl0mqhkdkbzib07qr4xf0cq25fvhdhna52290qgd69pwf"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(inputs
`(("python-colorama" ,python-colorama)
("python-decorator" ,python-decorator)
("python-psutil" ,python-psutil)
("python-six" ,python-six)))
(home-page "https://github.com/nvbn/thefuck")
(synopsis "Correct mistyped console command")
(description
"The Fuck tries to match a rule for a previous, mistyped command, creates
a new command using the matched rule, and runs it.")
(license license:x11)))

View File

@ -128,7 +128,7 @@ solve the shortest vector problem.")
(define-public pari-gp (define-public pari-gp
(package (package
(name "pari-gp") (name "pari-gp")
(version "2.7.5") (version "2.7.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -136,7 +136,7 @@ solve the shortest vector problem.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0c8l83a0gjq73r9hndsrzkypwxvnnm4pxkkzbg6jm95m80nzwh11")))) "04dqi697czd8mmw8aiwzrkgbvkjassqagg6lfy3lkf1k5qi9g9rr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("texlive" ,texlive-minimal))) (native-inputs `(("texlive" ,texlive-minimal)))
(inputs `(("gmp" ,gmp) (inputs `(("gmp" ,gmp)

114
gnu/packages/assembly.scm Normal file
View File

@ -0,0 +1,114 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages assembly)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (gnu packages perl)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages python)
#:use-module (gnu packages xml))
(define-public nasm
(package
(name "nasm")
(version "2.12.01")
(source (origin
(method url-fetch)
(uri (string-append "http://www.nasm.us/pub/nasm/releasebuilds/"
version "/" name "-" version ".tar.xz"))
(sha256
(base32
"12bl6vc5sjp9nnhf0iwy6l27vq783y0rxrjpp8sy84h5cb7a3fwx"))
(patches (search-patches "nasm-no-ps-pdf.patch"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ;for doc and test target
("texinfo" ,texinfo)))
(arguments
`(#:test-target "test"
#:phases (modify-phases %standard-phases
(add-after 'install 'install-info
(lambda _
(zero? (system* "make" "install_doc")))))))
(home-page "http://www.nasm.us/")
(synopsis "80x86 and x86-64 assembler")
(description
"NASM, the Netwide Assembler, is an 80x86 and x86-64 assembler designed
for portability and modularity. It supports a range of object file formats,
including Linux and *BSD a.out, ELF, COFF, Mach-O, Microsoft 16-bit OBJ,
Windows32 and Windows64. It will also output plain binary files. Its syntax
is designed to be simple and easy to understand, similar to Intel's but less
complex. It supports all currently known x86 architectural extensions, and
has strong support for macros.")
(supported-systems '("x86_64-linux" "i686-linux"))
(license license:bsd-3)))
(define-public yasm
(package
(name "yasm")
(version "1.3.0")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.tortall.net/projects/yasm/releases/yasm-"
version ".tar.gz"))
(sha256
(base32
"0gv0slmm0qpq91za3v2v9glff3il594x5xsrbgab7xcmnh0ndkix"))))
(build-system gnu-build-system)
(inputs
`(("python" ,python-wrapper)
("xmlto" ,xmlto)))
(home-page "http://yasm.tortall.net/")
(synopsis "Rewrite of the NASM assembler")
(description
"Yasm is a complete rewrite of the NASM assembler.
Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM
and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit
Mach-O, RDOFF2, COFF, Win32, and Win64 object formats, and generates source
debugging information in STABS, DWARF 2, and CodeView 8 formats.")
(license (license:non-copyleft "file://COPYING"
"See COPYING in the distribution."))))
(define-public lightning
(package
(name "lightning")
(version "2.1.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/lightning/lightning-"
version ".tar.gz"))
(sha256
(base32
"19j9nwl88k660045s40cbz5zrl1wpd2mcxnnc8qqnnaj311a58qz"))))
(build-system gnu-build-system)
(synopsis "Library for generating assembly code at runtime")
(description
"GNU Lightning is a library that generates assembly language code at
run-time. Thus, it is useful in creating Just-In-Time compilers. It
abstracts over the target CPU by exposing a standardized RISC instruction set
to the clients.")
(home-page "http://www.gnu.org/software/lightning/")
(license license:gpl3+)))

View File

@ -1482,7 +1482,7 @@ identify enrichments with functional annotations of the genome.")
(define-public diamond (define-public diamond
(package (package
(name "diamond") (name "diamond")
(version "0.8.5") (version "0.8.7")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -1491,7 +1491,7 @@ identify enrichments with functional annotations of the genome.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"18zx8k3axnsrg016kikl8xs1ifnjmj36dk1sv3fq1jgpg9j9584b")))) "15r7gcrqc4pv5d4kvv530zc3xnni92c74y63zrxzidriss7591yx"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f ; no "check" target '(#:tests? #f ; no "check" target
@ -3815,10 +3815,61 @@ data in the form of VCF files.")
;; at https://vcftools.github.io/license.html ;; at https://vcftools.github.io/license.html
(license license:lgpl3))) (license license:lgpl3)))
(define-public r-vegan
(package
(name "r-vegan")
(version "2.4-0")
(source
(origin
(method url-fetch)
(uri (cran-uri "vegan" version))
(sha256
(base32
"10cygzkyg2m0y054ygivqxrkvqz792qsg6bmbdfzaqq37qv4wc7z"))))
(build-system r-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'revert-test-deletion
;; The distributed sources do not include tests with the CRAN
;; package. Here we revert the commit
;; `591d0e8ba1deaaf82445474ec6619c0b43db4e63' which deletes these
;; tests. There are plans to not delete tests in future as
;; documented at https://github.com/vegandevs/vegan/issues/181.
(lambda* (#:key inputs #:allow-other-keys)
(zero?
(system* "patch" "-R" "-p1" "-i"
(assoc-ref inputs "r-vegan-delete-tests-patch"))))))))
(native-inputs
`(("gfortran" ,gfortran)
("r-knitr" ,r-knitr)
("r-vegan-delete-tests-patch"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/vegandevs/vegan/commit/"
"591d0e8ba1deaaf82445474ec6619c0b43db4e63.patch"))
(sha256
(base32
"0b1bi7y4jjdl3ph721vm9apm51dr2z9piwvhy4355sf2b4kyyj5a"))))))
(propagated-inputs
`(("r-cluster" ,r-cluster)
("r-lattice" ,r-lattice)
("r-mgcv" ,r-mgcv)
("r-permute" ,r-permute)))
(home-page "https://cran.r-project.org/web/packages/vegan")
(synopsis "Functions for community ecology")
(description
"The vegan package provides tools for descriptive community ecology. It
has most basic functions of diversity analysis, community ordination and
dissimilarity analysis. Most of its multivariate tools can be used for other
data types as well.")
(license license:gpl2+)))
(define-public vsearch (define-public vsearch
(package (package
(name "vsearch") (name "vsearch")
(version "1.11.1") (version "2.0.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -3828,7 +3879,7 @@ data in the form of VCF files.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1pdvm3znjgq3zryy240yj9gc0bf1z31k6vf9jxrxgdgkvzgw85c7")) "1sd57abgx077icqrbj36jq9q7pdpzc6dbics2pn1555kisq2jhfh"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

View File

@ -2,6 +2,7 @@
;;; Copyright © 2014 David Thompson <davet@gnu.org> ;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -20,8 +21,14 @@
(define-module (gnu packages crypto) (define-module (gnu packages crypto)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages libbsd) #:use-module (gnu packages libbsd)
#:use-module (gnu packages nettle)
#:use-module (gnu packages password-utils)
#:use-module (gnu packages readline)
#:use-module (gnu packages serialization)
#:use-module (gnu packages tls)
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
@ -88,3 +95,55 @@ OpenBSD tool of the same name.")
(non-copyleft "file://base64.c" (non-copyleft "file://base64.c"
"See base64.c in the distribution for "See base64.c in the distribution for
the license from IBM."))))) the license from IBM.")))))
(define-public opendht
(package
(name "opendht")
(version "0.6.1")
(source
(origin
(method url-fetch)
(uri
(string-append
"https://github.com/savoirfairelinux/" name
"/archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(modules '((guix build utils)))
(snippet
'(begin
(delete-file-recursively "src/argon2")
(substitute* "src/Makefile.am"
(("./argon2/libargon2.la") "")
(("SUBDIRS = argon2") ""))
(substitute* "src/crypto.cpp"
(("argon2/argon2.h") "argon2.h"))
(substitute* "configure.ac"
(("src/argon2/Makefile") ""))))
(sha256
(base32
"09yvkmbqbym3b5md4n96qc1s9sf2n8ji404hagih45rmsj49599x"))))
(build-system gnu-build-system)
(inputs
`(("gnutls" ,gnutls)
("nettle" ,nettle)
("msgpack" ,msgpack)
("readline" ,readline)
("argon2" ,argon2)))
(native-inputs
`(("autoconf" ,autoconf)
("pkg-config" ,pkg-config)
("automake" ,automake)
("libtool" ,libtool)))
(arguments
`(#:configure-flags '("--disable-tools" "--disable-python")
#:phases (modify-phases %standard-phases
(add-before 'configure 'autoconf
(lambda _
(zero? (system* "autoreconf" "-vfi")))))))
(home-page "https://github.com/savoirfairelinux/opendht/")
(synopsis "Distributed Hash Table (DHT) library")
(description "OpenDHT is a Distributed Hash Table (DHT) library. It may
be used to manage peer-to-peer network connections as needed for real time
communication.")
(license gpl3)))

View File

@ -52,16 +52,16 @@ clients.")
(define-public vdirsyncer (define-public vdirsyncer
(package (package
(name "vdirsyncer") (name "vdirsyncer")
(version "0.11.0") (version "0.11.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://pypi.python.org/packages/" "https://pypi.python.org/packages/"
"39/e5/1e7097b5f0cd6de79ec9014f162a6000b77ca2a369ea8a1588a2eebff570/" "6c/fb/20c32861134579fdce67060bf4cc074e171d30c70590137adc73924f94a6/"
name "-" version ".tar.gz")) name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1bf0vk29qdswar0q4267aamfriq3134302i2p3qcqxpmmcwx3qfv")))) "15isw2jhjfxi213wdj9d8mwq2m58k8bwf831qnxrjcz7j7bwy7mj"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases

View File

@ -169,7 +169,7 @@ tools that process C/C++ code.")
(_ "UNSUPPORTED")))) (_ "UNSUPPORTED"))))
(package (package
(name "american-fuzzy-lop") (name "american-fuzzy-lop")
(version "1.96b") ;It seems all releases have the 'b' suffix (version "2.15b") ;It seems all releases have the 'b' suffix
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -177,7 +177,7 @@ tools that process C/C++ code.")
"afl-" version ".tgz")) "afl-" version ".tgz"))
(sha256 (sha256
(base32 (base32
"0z7j231p6v2h1dxxijgdzj1lq1lxr8cxllwf6iyv7p4ki5pv1gh3")))) "04n2jfkchpz6a07w694b0im1vcmc3220ryqcaasa7vix7784wzs2"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("custom-qemu" `(("custom-qemu"

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; ;;;
@ -22,6 +22,7 @@
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
@ -115,3 +116,25 @@ be used via the GNU Dico program or accessed online at
http://gcide.gnu.org.ua/") http://gcide.gnu.org.ua/")
(home-page "http://gcide.gnu.org.ua/") (home-page "http://gcide.gnu.org.ua/")
(license gpl3+))) (license gpl3+)))
(define-public diction
;; Not quite a dictionary, not quite a spell checker either…
(package
(name "diction")
(version "1.11")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/diction/diction-"
version ".tar.gz"))
(sha256
(base32
"1xi4l1x1vvzmzmbhpx0ghmfnwwrhabjwizrpyylmy3fzinzz3him"))))
(build-system gnu-build-system)
(synopsis "Identifies wordy and commonly misused phrases")
(description
"A package providing two classic Unix commands, style and diction.
Diction is used to identify wordy and commonly misused phrases in a
body of text. Style instead analyzes surface aspects of a written
work, such as sentence length and other readability measures.")
(home-page "https://www.gnu.org/software/diction/")
(license gpl3+)))

View File

@ -1638,6 +1638,27 @@ that it correctly finds RFCs even when a space appears before the
number.") number.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-org-bullets
(package
(name "emacs-org-bullets")
(version "0.2.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/sabof/org-bullets/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1dyxvpb73vj80v8br2q9rf255hfphrgaw91fbvwdcd735np9pcnh"))))
(build-system emacs-build-system)
(home-page "https://github.com/sabof/org-bullets")
(synopsis "Show bullets in org-mode as UTF-8 characters")
(description
"This package provides an Emacs minor mode causing bullets in
@code{org-mode} to be rendered as UTF-8 characters.")
(license license:gpl3+)))
(define-public emacs-zenburn-theme (define-public emacs-zenburn-theme
(package (package
(name "emacs-zenburn-theme") (name "emacs-zenburn-theme")
@ -1688,6 +1709,170 @@ features found in other packages it also brings many improvements as
well as completely new features.") well as completely new features.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-hydra
(package
(name "emacs-hydra")
(version "0.13.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/abo-abo/hydra/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"19ynkjlg3jj7x90xxbz885324h6nkxmzlb2c2c95xkr20zckn0lk"))))
(build-system emacs-build-system)
(home-page "https://github.com/abo-abo/hydra")
(synopsis "Make Emacs bindings that stick around")
(description
"This package can be used to tie related commands into a family of short
bindings with a common prefix---a Hydra. Once you summon the Hydra (through
the prefixed binding), all the heads can be called in succession with only a
short extension. Any binding that isn't the Hydra's head vanquishes the
Hydra. Note that the final binding, besides vanquishing the Hydra, will still
serve its original purpose, calling the command assigned to it. This makes
the Hydra very seamless; it's like a minor mode that disables itself
automatically.")
(license license:gpl3+)))
(define-public emacs-ivy
(package
(name "emacs-ivy")
(version "0.8.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/abo-abo/swiper/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"18nqwl05is71dzswnvpfhlg7b0v3apvbsfxrwab9c0apwavi892q"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-hydra" ,emacs-hydra)))
(home-page "http://oremacs.com/swiper/")
(synopsis "Incremental vertical completion for Emacs")
(description
"This package provides @code{ivy-read} as an alternative to
@code{completing-read} and similar functions. No attempt is made to determine
the best candidate. Instead, the user can navigate candidates with
@code{ivy-next-line} and @code{ivy-previous-line}. The matching is done by
splitting the input text by spaces and re-building it into a regular
expression.")
(license license:gpl3+)))
(define-public emacs-avy
(package
(name "emacs-avy")
(version "0.4.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/abo-abo/avy/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1wdrq512h25ymzjbf2kbsdymvd2ryfwzb6bh5bc3yv7q203im796"))))
(build-system emacs-build-system)
(home-page "https://github.com/abo-abo/avy")
(synopsis "Tree-based completion for Emacs")
(description
"This package provides a generic completion method based on building a
balanced decision tree with each candidate being a leaf. To traverse the tree
from the root to a desired leaf, typically a sequence of @code{read-key} can
be used.
In order for @code{read-key} to make sense, the tree needs to be visualized
appropriately, with a character at each branch node. So this completion
method works only for things that you can see on your screen, all at once,
such as the positions of characters, words, line beginnings, links, or
windows.")
(license license:gpl3+)))
(define-public emacs-ace-window
(package
(name "emacs-ace-window")
(version "0.9.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/abo-abo/ace-window/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1p2sgfl5dml4zbd6ldql6lm2m9vmd236ah996ni32x254s48j5pn"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-avy" ,emacs-avy)))
(home-page "https://github.com/abo-abo/ace-window")
(synopsis "Quickly switch windows in Emacs")
(description
"@code{ace-window} is meant to replace @code{other-window}.
In fact, when there are only two windows present, @code{other-window} is
called. If there are more, each window will have its first character
highlighted. Pressing that character will switch to that window.")
(license license:gpl3+)))
(define-public emacs-iedit
(package
(name "emacs-iedit")
(version "0.9.9")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/victorhge/iedit/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"00v86zllcsivmiibigbr91qij2zdf1lr9db8z8again1sn63wkdj"))))
(build-system emacs-build-system)
(home-page "http://www.emacswiki.org/emacs/Iedit")
(synopsis "Edit multiple regions in the same way simultaneously")
(description
"This package is an Emacs minor mode and allows you to edit one
occurrence of some text in a buffer (possibly narrowed) or region, and
simultaneously have other occurrences edited in the same way.
You can also use Iedit mode as a quick way to temporarily show only the buffer
lines that match the current text being edited. This gives you the effect of
a temporary @code{keep-lines} or @code{occur}.")
(license license:gpl3+)))
(define-public emacs-lispy
(package
(name "emacs-lispy")
(version "0.26.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/abo-abo/lispy/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"15gig95cvamw5zlw99cxggd27c18b9scznjj97gvjn2zbljcaqzl"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-ace-window" ,emacs-ace-window)
("emacs-iedit" ,emacs-iedit)
("emacs-ivy" ,emacs-ivy)
("emacs-hydra" ,emacs-hydra)))
(home-page "https://github.com/abo-abo/lispy")
(synopsis "Modal S-expression editing")
(description
"Due to the structure of Lisp syntax it's very rare for the programmer to
want to insert characters right before \"(\" or right after \")\". Thus
unprefixed printable characters can be used to call commands when the point is
at one of these special locations. Lispy provides unprefixed keybindings for
S-expression editing when point is at the beginning or end of an
S-expression.")
(license license:gpl3+)))
(define-public emacs-clojure-mode (define-public emacs-clojure-mode
(package (package
(name "emacs-clojure-mode") (name "emacs-clojure-mode")
@ -2191,3 +2376,25 @@ Lua programing language}.")
"This Emacs package provides modes for ebuild, eclass, eblit, GLEP42 "This Emacs package provides modes for ebuild, eclass, eblit, GLEP42
news items, openrc and runscripts.") news items, openrc and runscripts.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public emacs-writegood-mode
(package
(name "emacs-writegood-mode")
(version "2.0.2")
(home-page "http://github.com/bnbeckwith/writegood-mode")
(source (origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit (string-append "v" version))))
(sha256
(base32
"1nnjn1r669hvvzfycllwap4w04m8rfsk4nzcg8057m1f263kj31b"))
(file-name (string-append name "-checkout"))))
(build-system emacs-build-system)
(synopsis "Polish up poor writing on the fly")
(description
"This minor mode tries to find and highlight problems with your writing
in English as you type. It primarily detects \"weasel words\" and abuse of
passive voice.")
(license license:gpl3+)))

View File

@ -54,7 +54,7 @@
(define-public efl (define-public efl
(package (package
(name "efl") (name "efl")
(version "1.17.1") (version "1.17.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -62,7 +62,7 @@
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0d58bhvwg7c5hp07wywlwnqi01k4jhmpgac7gkx9lil1x6kmahqs")))) "1dpq5flygrjg931nzsr2ra8icqffzrzbs1lnrzarbpsbmgq3zacs"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

179
gnu/packages/erlang.scm Normal file
View File

@ -0,0 +1,179 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Pjotr Prins <pjotr.public12@thebird.nl>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages erlang)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gl)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages tls)
#:use-module (gnu packages wxwidgets))
(define-public erlang
(package
(name "erlang")
;; When updating, remember to update the hash of erlang-manpages!
(version "19.0")
(source (origin
(method url-fetch)
;; The tarball from http://erlang.org/download contains many
;; pre-compiled files, so we use this snapshot of the source
;; repository.
(uri (string-append "https://github.com/erlang/otp/archive/OTP-"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1dxyz6x1yfv33fd0xfry2ihylkyfa2d655q1vxvbz8dflyd64yqh"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)
("autoconf" ,autoconf)
("automake" ,automake)
;; Erlang's documentation is distributed in a separate tarball.
("erlang-manpages"
,(origin
(method url-fetch)
(uri (string-append "http://erlang.org/download/otp_doc_man_"
version ".tar.gz"))
(sha256
(base32
"07j0l7ary936hil38xr3hvfw6j74pshkyyi98kc9cassbbcdd8y7"))))))
(inputs
`(("ncurses" ,ncurses)
("openssl" ,openssl)
("wxwidgets" ,wxwidgets)))
(propagated-inputs
`(("fontconfig" ,fontconfig)
("glu" ,glu)
("mesa" ,mesa)))
(arguments
`(#:test-target "release_tests"
#:configure-flags
(list "--disable-saved-compile-time"
"--enable-dynamic-ssl-lib"
"--enable-native-libs"
"--enable-shared-zlib"
"--enable-smp-support"
"--enable-threads"
"--enable-wx"
(string-append "--with-ssl=" (assoc-ref %build-inputs "openssl")))
#:modules ((srfi srfi-19) ; make-time, et cetera.
(guix build utils)
(guix build gnu-build-system))
#:phases
(modify-phases %standard-phases
;; The are several code fragments that embed timestamps into the
;; output. Here, we alter those fragments to use the value of
;; SOURCE_DATE_EPOCH instead.
(add-after 'unpack 'remove-timestamps
(lambda _
(let ((source-date-epoch
(time-utc->date
(make-time time-utc 0 (string->number
(getenv "SOURCE_DATE_EPOCH"))))))
(substitute* "lib/reltool/src/reltool_target.erl"
(("Date = date\\(\\),")
(string-append "Date = "
(date->string source-date-epoch
"'{~Y,~m,~d}',"))))
(substitute* "lib/reltool/src/reltool_target.erl"
(("Time = time\\(\\),")
(string-append "Time = "
(date->string source-date-epoch
"'{~H,~M,~S}',"))))
(substitute* '("lib/reltool/src/reltool_target.erl"
"lib/sasl/src/systools_make.erl")
(("date\\(\\), time\\(\\),")
(date->string source-date-epoch
"{~Y,~m,~d}, {~H,~M,~S},")))
(substitute* '("lib/dialyzer/test/small_SUITE_data/src/gs_make.erl"
"lib/gs/src/gs_make.erl")
(("tuple_to_list\\(date\\(\\)\\),tuple_to_list\\(time\\(\\)\\)")
(date->string
source-date-epoch
"tuple_to_list({~Y,~m,~d}), tuple_to_list({~H,~M,~S})")))
(substitute* "lib/snmp/src/compile/snmpc_mib_to_hrl.erl"
(("\\{Y,Mo,D\\} = date\\(\\),")
(date->string source-date-epoch
"{Y,Mo,D} = {~Y,~m,~d},")))
(substitute* "lib/snmp/src/compile/snmpc_mib_to_hrl.erl"
(("\\{H,Mi,S\\} = time\\(\\),")
(date->string source-date-epoch
"{H,Mi,S} = {~H,~M,~S},"))))))
(add-after 'patch-source-shebangs 'patch-source-env
(lambda _
(let ((escripts
(append
(find-files "." "\\.escript")
(find-files "lib/stdlib/test/escript_SUITE_data/")
'("erts/lib_src/utils/make_atomics_api"
"erts/preloaded/src/add_abstract_code"
"lib/diameter/bin/diameterc"
"lib/reltool/examples/display_args"
"lib/reltool/examples/mnesia_core_dump_viewer"
"lib/snmp/src/compile/snmpc.src"
"make/verify_runtime_dependencies"
"make/emd2exml.in"))))
(substitute* escripts
(("/usr/bin/env") (which "env"))))))
(add-before 'configure 'set-erl-top
(lambda _
(setenv "ERL_TOP" (getcwd))))
(add-before 'configure 'autoconf
(lambda _ (zero? (system* "./otp_build" "autoconf"))))
(add-after 'install 'patch-erl
;; This only works after install.
(lambda _
(substitute* (string-append (assoc-ref %outputs "out") "/bin/erl")
(("sed") (which "sed")))))
(add-after 'install 'install-doc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(manpages (assoc-ref inputs "erlang-manpages"))
(share (string-append out "/share/")))
(mkdir-p share)
(mkdir-p (string-append share "/misc/erlang"))
(with-directory-excursion share
(and
(zero? (system* "tar" "xvf" manpages))
(rename-file "COPYRIGHT"
(string-append share "/misc/erlang/COPYRIGHT"))
;; Delete superfluous files.
(for-each delete-file '("PR.template"
"README"))))))))))
(home-page "http://erlang.org/")
(synopsis "The Erlang programming language")
(description
"Erlang is a programming language used to build massively
scalable soft real-time systems with requirements on high
availability. Some of its uses are in telecoms, banking, e-commerce,
computer telephony and instant messaging. Erlang's runtime system has
built-in support for concurrency, distribution and fault tolerance.")
;; Erlang is distributed under the Apache License 2.0, but some components
;; have other licenses. See 'system/COPYRIGHT' in the source distribution.
(license (list license:asl2.0 license:bsd-2 license:bsd-3 license:expat
license:lgpl2.0+ license:tcl/tk license:zlib))))

View File

@ -34,6 +34,8 @@
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
#:use-module (gnu packages documentation) #:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages fribidi)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gnunet) #:use-module (gnu packages gnunet)
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
@ -432,3 +434,28 @@ It offers the following features:
import into a database. import into a database.
@end enumerate") @end enumerate")
(license license:gpl2+))) (license license:gpl2+)))
(define-public quesoglc
(package
(name "quesoglc")
(version "0.7.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/" name "/" version "/"
name "-" version "-free.tar.bz2"))
(sha256
(base32
"08ddhywdy2qg17m592ng3yr0p1ih96irg8wg729g75hsxxq9ipks"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("fontconfig" ,fontconfig)
("freeglute" ,freeglut)
("fribidi" ,fribidi)
("glew" ,glew)))
(home-page "http://quesoglc.sourceforge.net")
(synopsis "Implementation of the OpenGL Character Renderer (GLC)")
(description
"The OpenGL Character Renderer (GLC) is a state machine that provides
OpenGL programs with character rendering services via an application programming
interface (API).")
(license (list license:expat license:lgpl2.1+))))

View File

@ -2396,3 +2396,99 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
your way through an underground cave system in search of the Grue. Can you your way through an underground cave system in search of the Grue. Can you
capture it and get out alive?") capture it and get out alive?")
(license license:agpl3+))) (license license:agpl3+)))
(define-public warzone2100
(package
(name "warzone2100")
(version "3.1.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/" name
"/releases/" version "/" name "-" version
".tar.xz"))
(sha256
(base32
"0hm49i2knvvg3wlnryv7h4m84s3qa7jfyym5yy6365sx8wzcrai1"))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-after 'set-paths 'set-sdl-paths
(lambda* (#:key inputs #:allow-other-keys)
(setenv "CPATH"
(string-append (assoc-ref inputs "sdl-union")
"/include/SDL"))
#t)))))
(native-inputs `(("pkg-config" ,pkg-config)
("unzip" ,unzip)
("zip" ,zip)))
(inputs `(("fontconfig" ,fontconfig)
("freetype" ,freetype)
("fribidi" ,fribidi)
("glew" ,glew)
("libtheora" ,libtheora)
("libvorbis" ,libvorbis)
("libxrandr" ,libxrandr)
("openal" ,openal)
("physfs" ,physfs)
("qt", qt-4)
("quesoglc" ,quesoglc)
("sdl-union" ,(sdl-union))))
(home-page "http://wz2100.net")
(synopsis "3D Real-time strategy and real-time tactics game")
(description
"Warzone 2100 offers campaign, multi-player, and single-player skirmish
modes. An extensive tech tree with over 400 different technologies, combined
with the unit design system, allows for a wide variety of possible units and
tactics.")
; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
(license (list license:bsd-3
license:cc0
license:cc-by-sa3.0
license:expat
license:gpl2+
license:lgpl2.1+))))
(define-public starfighter
(package
(name "starfighter")
(version "1.5.1.1")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://savannah/starfighter/"
(version-major+minor version) "/"
name "-" version "-src.tar.gz"))
(sha256
(base32
"1qc0hhw9m8sy3n9fips52c7aph3w8a8pdl4n45yaasgxzbvpn9xg"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no check target
#:make-flags
(let ((out (assoc-ref %outputs "out")))
(list (string-append "PREFIX=" out)
(string-append "BINDIR=" out "/bin/")))
#:phases
(modify-phases %standard-phases
;; no configure script
(delete 'configure))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("sdl2" ,sdl2)
("sdl2-image" ,sdl2-image)
("sdl2-mixer" ,sdl2-mixer)))
(home-page "http://starfighter.nongnu.org/")
(synopsis "2D scrolling shooter game")
(description
"In the year 2579, the intergalactic weapons corporation, WEAPCO, has
dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
their quest to liberate the galaxy from the clutches of WEAPCO. Along the
way, you will encounter new foes, make new allies, and assist local rebels
in strikes against the evil corporation.")
;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
(license (list license:gpl3+
license:cc-by3.0
license:cc-by-sa3.0
license:cc0
license:public-domain))))

View File

@ -2,7 +2,7 @@
;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
@ -3840,7 +3840,7 @@ metadata in photo and video files of various formats.")
(define-public shotwell (define-public shotwell
(package (package
(name "shotwell") (name "shotwell")
(version "0.22.1") (version "0.23.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
@ -3848,7 +3848,7 @@ metadata in photo and video files of various formats.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1a9lx9a7p6fgaf838xlw98f73xxyxmg6jmm29830lsl8ynbhq9bk")))) "12imip32mav0zqg1fh4xm6zk4qsgg2435xsyb6ljz47i37zk6kg2"))))
(build-system glib-or-gtk-build-system) (build-system glib-or-gtk-build-system)
(arguments (arguments
`(#:tests? #f ;no "check" target `(#:tests? #f ;no "check" target
@ -3876,7 +3876,7 @@ metadata in photo and video files of various formats.")
("libraw" ,libraw) ("libraw" ,libraw)
("json-glib" ,json-glib) ("json-glib" ,json-glib)
("rest" ,rest) ("rest" ,rest)
("webkitgtk" ,webkitgtk-2.4) ("webkitgtk" ,webkitgtk)
("sqlite" ,sqlite) ("sqlite" ,sqlite)
("libsoup" ,libsoup) ("libsoup" ,libsoup)
("libxml2" ,libxml2) ("libxml2" ,libxml2)

View File

@ -48,7 +48,7 @@
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages yasm) #:use-module (gnu packages assembly)
#:use-module (gnu packages icu4c) #:use-module (gnu packages icu4c)
#:use-module (gnu packages video) #:use-module (gnu packages video)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)

View File

@ -57,7 +57,7 @@
#:use-module (gnu packages telephony) #:use-module (gnu packages telephony)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (gnu packages yasm) #:use-module (gnu packages assembly)
#:use-module (gnu packages xml)) #:use-module (gnu packages xml))
(define-public orc (define-public orc

View File

@ -42,6 +42,7 @@
#:use-module (gnu packages ed) #:use-module (gnu packages ed)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages man)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
#:use-module (gnu packages python) #:use-module (gnu packages python)
@ -200,14 +201,14 @@ without requiring the source code to be rewritten.")
(define-public guile-next (define-public guile-next
(package (inherit guile-2.0) (package (inherit guile-2.0)
(name "guile-next") (name "guile-next")
(version "2.1.2") (version "2.1.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-" (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0p971k3v04jj5klnv145g4172cpcp90arf0wvxxj2aqkg16j9m9c")) "1k48wqca2hrsbfq4ssiv4pg9jwlqncs5iwwxklk2bnczi7lavv78"))
(modules '((guix build utils))) (modules '((guix build utils)))
;; Remove the pre-built object files. Instead, build everything ;; Remove the pre-built object files. Instead, build everything
@ -422,6 +423,55 @@ Guile, so its configuration can be written in Scheme; the original cron
format is also supported.") format is also supported.")
(license gpl3+))) (license gpl3+)))
(define-public mcron2
;; This is mthl's mcron development branch, not yet merged in mcron.
(let ((commit "31baff1a5187d8ddc89324cbe42dbeffc309c962"))
(package
(inherit mcron)
(name "mcron2")
(version (string-append (package-version mcron) "-0."
(string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://notabug.org/mthl/mcron/")
(commit commit)))
(sha256
(base32
"1h5wxy997hxi718hpx419c23q09939kbxrjbbq54lv0cgw1bb63z"))
(file-name (string-append name "-" version "-checkout"))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)
("texinfo" ,texinfo)
("help2man" ,help2man)))
(arguments
`(#:modules ((ice-9 match) (ice-9 ftw)
,@%gnu-build-system-modules)
#:phases (modify-phases %standard-phases
(add-after 'unpack 'bootstrap
(lambda _
(zero? (system* "autoreconf" "-vfi"))))
(add-after 'install 'wrap-mcron
(lambda* (#:key outputs #:allow-other-keys)
;; Wrap the 'mcron' command to refer to the right
;; modules.
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(site (string-append
out "/share/guile/site")))
(match (scandir site)
(("." ".." version)
(let ((modules (string-append site "/" version)))
(wrap-program (string-append bin "/mcron")
`("GUILE_LOAD_PATH" ":" prefix
(,modules))
`("GUILE_LOAD_COMPILED_PATH" ":" prefix
(,modules)))
#t))))))))))))
(define-public guile-lib (define-public guile-lib
(package (package
(name "guile-lib") (name "guile-lib")
@ -1008,4 +1058,69 @@ provides access to that interface and its types from the Scheme level.")
(home-page "http://www.nongnu.org/g-wrap/index.html") (home-page "http://www.nongnu.org/g-wrap/index.html")
(license lgpl2.1+))) (license lgpl2.1+)))
(define-public guile-dbi
(package
(name "guile-dbi")
(version "2.1.6")
(source (origin
(method url-fetch)
(uri (string-append
"http://download.gna.org/guile-dbi/guile-dbi-"
version ".tar.gz"))
(sha256
(base32
"116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
(list (string-append
"--with-guile-site-dir=" %output "/share/guile/site/2.0"))
#:phases
(modify-phases %standard-phases
(add-after 'install 'patch-extension-path
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(dbi.scm (string-append
out "/share/guile/site/2.0/dbi/dbi.scm"))
(ext (string-append out "/lib/libguile-dbi")))
(substitute* dbi.scm (("libguile-dbi") ext))
#t))))))
(propagated-inputs
`(("guile" ,guile-2.0)))
(synopsis "Guile database abstraction layer")
(home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
(description
"guile-dbi is a library for Guile that provides a convenient interface to
SQL databases. Database programming with guile-dbi is generic in that the same
programming interface is presented regardless of which database system is used.
It currently supports MySQL, Postgres and SQLite3.")
(license gpl2+)))
(define-public guile-dbd-sqlite3
(package
(name "guile-dbd-sqlite3")
(version "2.1.6")
(source (origin
(method url-fetch)
(uri (string-append
"http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
version ".tar.gz"))
(sha256
(base32
"0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("sqlite" ,sqlite)
("zlib" ,(@ (gnu packages compression) zlib))))
(propagated-inputs
`(("guile-dbi" ,guile-dbi)))
(synopsis "Guile DBI driver for SQLite")
(home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
(description
"guile-dbi is a library for Guile that provides a convenient interface to
SQL databases. This package implements the interface for SQLite.")
(license gpl2+)))
;;; guile.scm ends here ;;; guile.scm ends here

File diff suppressed because it is too large Load Diff

View File

@ -41,14 +41,14 @@
(define-public imagemagick (define-public imagemagick
(package (package
(name "imagemagick") (name "imagemagick")
(version "6.9.4-9") (version "6.9.4-10")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-" (uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0js5l6inar2p7zi5qhr8g34qs0gm2x03gs8k8yjh4cnzzac18d82")))) "0bbac9zdjl2g8x127jx5jisih9r49980w7ar6m8xj3nyh3m83jd2"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--with-frozenpaths") `(#:configure-flags '("--with-frozenpaths")

View File

@ -58,15 +58,15 @@
(define-public java-swt (define-public java-swt
(package (package
(name "java-swt") (name "java-swt")
(version "4.5") (version "4.6")
(source (source
;; The types of many variables and procedures differ in the sources ;; The types of many variables and procedures differ in the sources
;; dependent on whether the target architecture is a 32-bit system or a ;; dependent on whether the target architecture is a 32-bit system or a
;; 64-bit system. Instead of patching the sources on demand in a build ;; 64-bit system. Instead of patching the sources on demand in a build
;; phase we download either the 32-bit archive (which mostly uses "int" ;; phase we download either the 32-bit archive (which mostly uses "int"
;; types) or the 64-bit archive (which mostly uses "long" types). ;; types) or the 64-bit archive (which mostly uses "long" types).
(let ((hash32 "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q") (let ((hash32 "0jmx1h65wqxsyjzs64i2z6ryiynllxzm13cq90fky2qrzagcw1ir")
(hash64 "1qq0pjll6030v4ml0hifcaaik7sx3fl7ghybfdw95vsvxafwp2ff") (hash64 "0wnd01xssdq9pgx5xqh5lfiy3dmk60dzzqdxzdzf883h13692lgy")
(file32 "x86") (file32 "x86")
(file64 "x86_64")) (file64 "x86_64"))
(let-values (((hash file) (let-values (((hash file)
@ -78,7 +78,7 @@
(uri (string-append (uri (string-append
"http://ftp-stud.fht-esslingen.de/pub/Mirrors/" "http://ftp-stud.fht-esslingen.de/pub/Mirrors/"
"eclipse/eclipse/downloads/drops4/R-" version "eclipse/eclipse/downloads/drops4/R-" version
"-201506032000/swt-" version "-gtk-linux-" file ".zip")) "-201606061100/swt-" version "-gtk-linux-" file ".zip"))
(sha256 (base32 hash)))))) (sha256 (base32 hash))))))
(build-system ant-build-system) (build-system ant-build-system)
(arguments (arguments

View File

@ -66,7 +66,7 @@
#:use-module (gnu packages xiph) #:use-module (gnu packages xiph)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages yasm) #:use-module (gnu packages assembly)
#:use-module (gnu packages zip)) #:use-module (gnu packages zip))
(define-public crossguid (define-public crossguid

View File

@ -1,44 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages lightning)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses))
(define-public lightning
(package
(name "lightning")
(version "2.1.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/lightning/lightning-"
version ".tar.gz"))
(sha256
(base32
"19j9nwl88k660045s40cbz5zrl1wpd2mcxnnc8qqnnaj311a58qz"))))
(build-system gnu-build-system)
(synopsis "Library for generating assembly code at runtime")
(description
"GNU Lightning is a library that generates assembly language code at
run-time. Thus, it is useful in creating Just-In-Time compilers. It
abstracts over the target CPU by exposing a standardized RISC instruction set
to the clients.")
(home-page "http://www.gnu.org/software/lightning/")
(license gpl3+)))

View File

@ -225,7 +225,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
(search-path %load-path file))) (search-path %load-path file)))
(define-public linux-libre (define-public linux-libre
(let* ((version "4.6.2") (let* ((version "4.6.3")
(build-phase (build-phase
'(lambda* (#:key system inputs #:allow-other-keys #:rest args) '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
;; Avoid introducing timestamps ;; Avoid introducing timestamps
@ -303,7 +303,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
(uri (linux-libre-urls version)) (uri (linux-libre-urls version))
(sha256 (sha256
(base32 (base32
"1sq75sbs85kwngq8l0n5v5v1z973l71by98k3wbw1mfq3g0s323b")))) "1ajhdk9jq0pfxlhvzwarbxc23418yqav1v0z0mnfs575y5lq2gmp"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(supported-systems '("x86_64-linux" "i686-linux")) (supported-systems '("x86_64-linux" "i686-linux"))
(native-inputs `(("perl" ,perl) (native-inputs `(("perl" ,perl)
@ -340,13 +340,13 @@ It has been modified to remove all non-free binary blobs.")
(define-public linux-libre-4.4 (define-public linux-libre-4.4
(package (package
(inherit linux-libre) (inherit linux-libre)
(version "4.4.13") (version "4.4.14")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (linux-libre-urls version)) (uri (linux-libre-urls version))
(sha256 (sha256
(base32 (base32
"1qcgnprgl9hy4g51bkx4bjs1cdsyy9kpwqymxggwghrzdid41x9l")))) "1yfmzrjrkj8mn2dfd7p98w13afchrkpz26gwfcm2fhsmla16n1my"))))
(native-inputs (native-inputs
(let ((conf (kernel-config (or (%current-target-system) (let ((conf (kernel-config (or (%current-target-system)
(%current-system)) (%current-system))
@ -357,13 +357,13 @@ It has been modified to remove all non-free binary blobs.")
(define-public linux-libre-4.1 (define-public linux-libre-4.1
(package (package
(inherit linux-libre) (inherit linux-libre)
(version "4.1.26") (version "4.1.27")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (linux-libre-urls version)) (uri (linux-libre-urls version))
(sha256 (sha256
(base32 (base32
"1vrqz7z0b9zl6g8nbvz1hb2jhgy5zpnbdwc1v3zc4wjc35i2c4i4")))) "0bbp782gdj8kz986a8hfygdrj7is0c8wgbb2mpb9gqhkfxcg74kf"))))
(native-inputs (native-inputs
(let ((conf (kernel-config (or (%current-target-system) (let ((conf (kernel-config (or (%current-target-system)
(%current-system)) (%current-system))

View File

@ -1474,13 +1474,17 @@ websites such as Libre.fm.")
(define-public beets (define-public beets
(package (package
(name "beets") (name "beets")
(version "1.3.17") (version "1.3.18")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri name version)) (uri (string-append
"https://pypi.python.org/packages/"
"14/6f/c9c79c5339ab3ecced265ca18adbf5bae3d4058bae737b6164d738fb4d2c/"
name "-" version ".tar.gz"))
(patches (search-patches "beets-image-test-failure.patch"))
(sha256 (sha256
(base32 (base32
"0yg7sp18sdpszkinhb0bi6yinbn316jy1baxrwiw0m4byrj3rr6c")))) "09pgyywa5llbc36y0lrr21ywgsp8m2zx6p8ncf8hxik28knd5kld"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:python ,python-2 ; only Python 2 is supported `(#:python ,python-2 ; only Python 2 is supported
@ -1504,7 +1508,7 @@ websites such as Libre.fm.")
("python2-rarfile" ,python2-rarfile) ("python2-rarfile" ,python2-rarfile)
("python2-responses" ,python2-responses))) ("python2-responses" ,python2-responses)))
;; TODO: Install optional plugins and dependencies. ;; TODO: Install optional plugins and dependencies.
(propagated-inputs (inputs
`(("python2-enum34" ,python2-enum34) `(("python2-enum34" ,python2-enum34)
("python2-jellyfish" ,python2-jellyfish) ("python2-jellyfish" ,python2-jellyfish)
("python2-munkres" ,python2-munkres) ("python2-munkres" ,python2-munkres)

View File

@ -21,9 +21,11 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix gexp)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module ((guix build utils) #:select (with-directory-excursion))
#:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0)) #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0))
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
@ -48,7 +50,12 @@
#:use-module (gnu packages popt) #:use-module (gnu packages popt)
#:use-module (gnu packages gnuzilla) #:use-module (gnu packages gnuzilla)
#:use-module (gnu packages cpio) #:use-module (gnu packages cpio)
#:use-module (gnu packages tls)) #:use-module (gnu packages tls)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 match))
(define (boot-guile-uri arch) (define (boot-guile-uri arch)
"Return the URI for the bootstrap Guile tarball for ARCH." "Return the URI for the bootstrap Guile tarball for ARCH."
@ -246,6 +253,73 @@ the Nix package manager.")
(define-public guix guix-devel) (define-public guix guix-devel)
(define (source-file? file stat)
"Return true if FILE is likely a source file, false if it is a typical
generated file."
(define (wrong-extension? file)
(or (string-suffix? "~" file)
(member (file-extension file)
'("o" "a" "lo" "so" "go"))))
(match (basename file)
((or ".git" "autom4te.cache" "configure" "Makefile" "Makefile.in" ".libs")
#f)
((? wrong-extension?)
#f)
(_
#t)))
(define (make-git-predicate directory)
"Return a predicate that returns true if a file is part of the Git checkout
living at DIRECTORY. Upon Git failure, return #f instead of a predicate."
(define (parent-directory? thing directory)
;; Return #t if DIRECTORY is the parent of THING.
(or (string-suffix? thing directory)
(and (string-index thing #\/)
(parent-directory? (dirname thing) directory))))
(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))))))
(status (close-pipe pipe)))
(and (zero? status)
(lambda (file stat)
(match (stat:type stat)
('directory
;; 'git ls-files' does not list directories, only regular files,
;; so we need this special trick.
(any (cut parent-directory? <> file) files))
((or 'regular 'symlink)
(any (cut string-suffix? <> file) files))
(_
#f))))))
(define-public current-guix
(let ((select? (delay (or (make-git-predicate
(string-append (current-source-directory)
"/../.."))
source-file?))))
(lambda ()
"Return a package representing Guix built from the current source tree.
This works by adding the current source tree to the store (after filtering it
out) and returning a package that uses that as its 'source'."
(package
(inherit guix)
(version (string-append (package-version guix) "+"))
(source (local-file "../.." "guix-current"
#:recursive? #t
#:select? (force select?)))))))
;;;
;;; Other tools.
;;;
(define-public nix (define-public nix
(package (package
(name "nix") (name "nix")

View File

@ -5,6 +5,7 @@
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se> ;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se>
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -295,3 +296,39 @@ Synchronization is possible using the integrated git support, which commits
changes to your password database to a git repository that can be managed changes to your password database to a git repository that can be managed
through the pass command.") through the pass command.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public argon2
(package
(name "argon2")
(version "20160406")
(source
(origin
(method url-fetch)
(uri
(string-append
"https://codeload.github.com/P-H-C/phc-winner-"
name "/tar.gz/" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0g6wa94sh639xl1qc8z21q43r1mp8y77r1zf8nwx5pfsxd8fmyzv"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:make-flags '("CC=gcc")
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'install
(lambda _
(let ((out (assoc-ref %outputs "out")))
(install-file "argon2" (string-append out "/bin"))
(install-file "libargon2.a" (string-append out "/lib"))
(install-file "libargon2.so" (string-append out "/lib"))
(copy-recursively "include"
(string-append out "/include"))))))))
(home-page "https://www.argon2.com/")
(synopsis "Password hashing library")
(description "Argon2 provides a key derivation function that was declared
winner of the 2015 Password Hashing Competition.")
(license license:cc0)))

View File

@ -0,0 +1,46 @@
Fix test failure due to missing image library backend.
Cherry-picked from upstream:
https://github.com/beetbox/beets/commit/07c95a1bf16bf86c640436208dda828cc7df0181
From 07c95a1bf16bf86c640436208dda828cc7df0181 Mon Sep 17 00:00:00 2001
From: Adrian Sampson <adrian@radbox.org>
Date: Thu, 2 Jun 2016 11:39:05 -0700
Subject: [PATCH] Require an imaging backend for fuzzy ratio tests
These fail outright if we don't have a way to get image sizes (e.g.,
ImageMagick).
---
test/test_art.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/test/test_art.py b/test/test_art.py
index 02d26f4..1b12b76 100644
--- a/test/test_art.py
+++ b/test/test_art.py
@@ -561,21 +561,25 @@ def test_respect_enforce_ratio_no(self):
self._assertImageIsValidArt(self.IMG_500x490, True)
def test_respect_enforce_ratio_px_above(self):
+ self._require_backend()
self.plugin.enforce_ratio = True
self.plugin.margin_px = 5
self._assertImageIsValidArt(self.IMG_500x490, False)
def test_respect_enforce_ratio_px_below(self):
+ self._require_backend()
self.plugin.enforce_ratio = True
self.plugin.margin_px = 15
self._assertImageIsValidArt(self.IMG_500x490, True)
def test_respect_enforce_ratio_percent_above(self):
+ self._require_backend()
self.plugin.enforce_ratio = True
self.plugin.margin_percent = (500 - 490) / 500 * 0.5
self._assertImageIsValidArt(self.IMG_500x490, False)
def test_respect_enforce_ratio_percent_below(self):
+ self._require_backend()
self.plugin.enforce_ratio = True
self.plugin.margin_percent = (500 - 490) / 500 * 1.5
self._assertImageIsValidArt(self.IMG_500x490, True)

View File

@ -23,7 +23,7 @@ Automake's parallel test harness.
- HYDRA_HOME="$(top_srcdir)/src" \ - HYDRA_HOME="$(top_srcdir)/src" \
- HYDRA_CONFIG= \ - HYDRA_CONFIG= \
- NIX_REMOTE= \ - NIX_REMOTE= \
- NIX_CONF_DIR="$(abs_builddir)/nix/etc/nix" \ - GUIX_CONFIGURATION_DIRECTORY="$(abs_builddir)/nix/etc/nix" \
- NIX_STATE_DIR="$(abs_builddir)/nix/var/nix" \ - NIX_STATE_DIR="$(abs_builddir)/nix/var/nix" \
- NIX_MANIFESTS_DIR="$(abs_builddir)/nix/var/nix/manifests" \ - NIX_MANIFESTS_DIR="$(abs_builddir)/nix/var/nix/manifests" \
- NIX_STORE_DIR="$(abs_builddir)/nix/store" \ - NIX_STORE_DIR="$(abs_builddir)/nix/store" \
@ -39,7 +39,7 @@ Automake's parallel test harness.
+ HYDRA_HOME="$(top_srcdir)/src"; export HYDRA_HOME; \ + HYDRA_HOME="$(top_srcdir)/src"; export HYDRA_HOME; \
+ HYDRA_CONFIG=; export HYDRA_CONFIG; \ + HYDRA_CONFIG=; export HYDRA_CONFIG; \
+ NIX_REMOTE=; export NIX_REMOTE; \ + NIX_REMOTE=; export NIX_REMOTE; \
+ NIX_CONF_DIR="$(abs_builddir)/nix/etc/nix"; export NIX_CONF_DIR; \ + GUIX_CONFIGURATION_DIRECTORY="$(abs_builddir)/nix/etc/nix"; export GUIX_CONFIGURATION_DIRECTORY; \
+ NIX_STATE_DIR="$(abs_builddir)/nix/var/nix"; export NIX_STATE_DIR; \ + NIX_STATE_DIR="$(abs_builddir)/nix/var/nix"; export NIX_STATE_DIR; \
+ NIX_MANIFESTS_DIR="$(abs_builddir)/nix/var/nix/manifests"; export NIX_MANIFESTS_DIR; \ + NIX_MANIFESTS_DIR="$(abs_builddir)/nix/var/nix/manifests"; export NIX_MANIFESTS_DIR; \
+ NIX_STORE_DIR="$(abs_builddir)/nix/store"; export NIX_STORE_DIR; \ + NIX_STORE_DIR="$(abs_builddir)/nix/store"; export NIX_STORE_DIR; \

View File

@ -0,0 +1,20 @@
Avoid building PS and PDF docs, which do not build bit-reproducible. NASM
already installs doc in info and html.
--- nasm-2.12.01/doc/Makefile.in.orig 2016-06-21 18:02:59.483484829 +0200
+++ nasm-2.12.01/doc/Makefile.in 2016-06-21 18:03:46.700151410 +0200
@@ -27,7 +27,7 @@
PS2PDF = @PS2PDF@ # Part of GhostScript
SRCS = nasmdoc.src inslist.src changes.src
-OUT = info html nasmdoc.txt nasmdoc.ps nasmdoc.pdf
+OUT = info html nasmdoc.txt
# exports
export srcdir
@@ -100,4 +100,4 @@
$(INSTALL_DATA) info/* $(INSTALLROOT)$(infodir)
mkdir -p $(INSTALLROOT)$(docdir)/html
$(INSTALL_DATA) html/* $(INSTALLROOT)$(docdir)/html
- $(INSTALL_DATA) nasmdoc.ps nasmdoc.pdf nasmdoc.txt $(INSTALLROOT)$(docdir)
+ $(INSTALL_DATA) nasmdoc.txt $(INSTALLROOT)$(docdir)

View File

@ -0,0 +1,13 @@
diff --git a/test/test_integration.rb b/test/test_integration.rb
index d9b189c..6e21180 100644
--- a/test/test_integration.rb
+++ b/test/test_integration.rb
@@ -115,7 +115,7 @@ class TestIntegration < Test::Unit::TestCase
assert_kind_of Thread, t.join(1), "server didn't stop"
end
- def test_phased_restart_via_pumactl
+ def no_test_phased_restart_via_pumactl
if Puma.jruby? || Puma.windows?
assert true
return

View File

@ -7,6 +7,7 @@
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -5092,7 +5093,7 @@ testing exception-throwing code with about the same amount of typing.")
(define-public perl-test-harness (define-public perl-test-harness
(package (package
(name "perl-test-harness") (name "perl-test-harness")
(version "3.35") (version "3.36")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -5100,7 +5101,7 @@ testing exception-throwing code with about the same amount of typing.")
"Test-Harness-" version ".tar.gz")) "Test-Harness-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"06l29y1bpizb9vd9g49lgi0wzj1xy4rsk42ahdj3fpgqnvb9wp05")))) "0gmnjss0hjkyiwvgby50nl5nzv254pn7fjqqdysjil21n09nymp7"))))
(build-system perl-build-system) (build-system perl-build-system)
(arguments (arguments
`(#:phases (alist-cons-before `(#:phases (alist-cons-before

View File

@ -21,6 +21,7 @@
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org> ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -2182,13 +2183,17 @@ is used by the Requests library to verify HTTPS requests.")
(define-public python-click (define-public python-click
(package (package
(name "python-click") (name "python-click")
(version "6.2") (version "6.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "click" version)) (uri (string-append
"https://pypi.python.org/packages/"
"7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/"
"click-" version ".tar.gz"))
(sha256 (sha256
(base32 "10kavbisnk9m93jl2wi34pw7ryr2qbxshh2cysxwxd7bymqgz87v")))) (base32
"1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-setuptools" ,python-setuptools))) `(("python-setuptools" ,python-setuptools)))
@ -6942,13 +6947,16 @@ for atomic filesystem operations.")
(define-public python-requests-toolbelt (define-public python-requests-toolbelt
(package (package
(name "python-requests-toolbelt") (name "python-requests-toolbelt")
(version "0.6.0") (version "0.6.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "requests-toolbelt" version)) (uri (string-append
"https://pypi.python.org/packages/"
"e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
"requests-toolbelt-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"07slish560haspn0hpwgy2izhk2snqq06s6acp8xzmhhz079qknc")))) "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-requests" ,python-requests))) `(("python-requests" ,python-requests)))
@ -6961,13 +6969,16 @@ with python-requests.")
(define-public python-click-threading (define-public python-click-threading
(package (package
(name "python-click-threading") (name "python-click-threading")
(version "0.1.2") (version "0.2.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "click-threading" version)) (uri (string-append
"https://pypi.python.org/packages/"
"fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
"click-threading-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0jmrv4334lfxa2ss53c06dafdwqbk1pb3ihd26izn5igw1bm8145")))) "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-click" ,python-click))) `(("python-click" ,python-click)))
@ -7117,13 +7128,16 @@ framework which enables you to test server connections locally.")
(define-public python-wsgi-intercept (define-public python-wsgi-intercept
(package (package
(name "python-wsgi-intercept") (name "python-wsgi-intercept")
(version "1.1.2") (version "1.2.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "wsgi_intercept" version)) (uri (string-append
"https://pypi.python.org/packages/"
"38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
"wsgi_intercept-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"14ajy415ch5d0dnspg4b592p66wlgzah7ay218flp13517fp49zl")))) "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-pytest" ,python-pytest) `(("python-pytest" ,python-pytest)
@ -9103,10 +9117,7 @@ to provide a high-level synchronous API on top of the libev event loop.")
(version "16.2.0") (version "16.2.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (pypi-uri "Twisted" version ".tar.bz2") ; 404 (uri (pypi-uri "Twisted" version ".tar.bz2"))
(string-append
"https://pypi.io/packages/source/T/Twisted/"
"Twisted-" version ".tar.bz2")))
(sha256 (sha256
(base32 (base32
"0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450")))) "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
@ -9300,3 +9311,366 @@ It supports both the original 1.0 specification, as well as the
new (proposed) 2.0 spec, which includes batch submission, keyword arguments, new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
etc.") etc.")
(license asl2.0))) (license asl2.0)))
(define-public python-chai
(package
(name "python-chai")
(version "1.1.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "chai" version))
(sha256
(base32
"016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/agoragames/chai")
(synopsis "Mocking framework for Python")
(description
"Chai provides an api for mocking, stubbing and spying your python
objects, patterned after the Mocha library for Ruby.")
(license bsd-3)))
(define-public python2-chai
(package-with-python2 python-chai))
(define-public python-arrow
(package
(name "python-arrow")
(version "0.8.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "arrow" version))
(sha256
(base32
"1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)
("python-dateutil" ,python-dateutil-2)
;; For testing
("python-chai" ,python-chai)
("python-simplejson" ,python-simplejson)))
(home-page "https://github.com/crsmithdev/arrow/")
(synopsis "Dates and times for Python")
(description
"Arrow is a Python library to creating, manipulating, formatting and
converting dates, times, and timestamps. It implements and updates the
datetime type.")
(license asl2.0)))
(define-public python2-arrow
(package-with-python2 python-arrow))
(define-public python-inflection
(package
(name "python-inflection")
(version "0.3.1")
(source
(origin (method url-fetch)
(uri (pypi-uri "inflection" version))
(sha256
(base32
"1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "http://github.com/jpvanhal/inflection")
(synopsis "Python string transformation library")
(description
"Inflection is a string transformation library. It singularizes
and pluralizes English words, and transforms strings from CamelCase to
underscored string.")
(license license:expat)))
(define-public python2-inflection
(package-with-python2 python-inflection))
(define-public python-pylev
(package
(name "python-pylev")
(version "1.3.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "pylev" version))
(sha256
(base32
"1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "http://github.com/toastdriven/pylev")
(synopsis "Levenshtein distance implementation in Python")
(description "Pure Python Levenshtein implementation, based off the
Wikipedia code samples at
@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
(license bsd-3)))
(define-public python2-pylev
(package-with-python2 python-pylev))
(define-public python-cleo
(package
(name "python-cleo")
(version "0.4.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "cleo" version))
(sha256
(base32
"1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
(build-system python-build-system)
(native-inputs
`(("python-psutil" ,python-psutil)
("python-pylev" ,python-pylev)
("python-setuptools" ,python-setuptools)
;; For testing
("python-mock" ,python-mock)
("python-pytest" ,python-pytest)))
(home-page "https://github.com/sdispater/cleo")
(synopsis "Command-line arguments library for Python")
(description
"Cleo allows you to create command-line commands with signature in
docstring and colored output.")
(license license:expat)))
(define-public python2-cleo
(package-with-python2 python-cleo))
(define-public python-lazy-object-proxy
(package
(name "python-lazy-object-proxy")
(version "1.2.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "lazy-object-proxy" version))
(sha256
(base32
"0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/ionelmc/python-lazy-object-proxy")
(synopsis "Lazy object proxy for python")
(description
"Lazy object proxy is an object that wraps a callable but defers the call
until the object is actually required, and caches the result of said call.")
(license bsd-2)))
(define-public python2-lazy-object-proxy
(package-with-python2 python-lazy-object-proxy))
(define-public python-dnspython
(package
(name "python-dnspython")
(version "1.14.0")
(source (origin
(method url-fetch)
(uri (string-append "http://www.dnspython.org/kits/"
version "/dnspython-" version ".tar.gz"))
(sha256
(base32
"1z472r63gdqsxhsxj3plr5vs478yf4303vrqxxpsccc940g441hl"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; XXX: requires internet access
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "http://www.dnspython.org")
(synopsis "DNS toolkit for Python")
(description
"dnspython is a DNS toolkit for Python. It supports almost all record
types. It can be used for queries, zone transfers, and dynamic updates.
It supports TSIG authenticated messages and EDNS0.")
(license license:expat)))
(define-public python2-dnspython
(package-with-python2 python-dnspython))
(define-public python-email-validator
(package
(name "python-email-validator")
(version "1.0.1")
(source
(origin (method url-fetch)
(uri (pypi-uri "email_validator" version))
(sha256
(base32
"0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
(build-system python-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-before 'build 'use-dnspython
(lambda _
(substitute* "setup.py"
(("dnspython3") "dnspython"))
#t)))))
(native-inputs
`(("python-dnspython" ,python-dnspython)
("python-idna" ,python-idna)
("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/JoshData/python-email-validator")
(synopsis "Email address validation library for Python")
(description
"This library validates email address syntax and deliverability.")
(license cc0)))
(define-public python2-email-validator
(package-with-python2 python-email-validator))
(define-public python-ukpostcodeparser
(package
(name "python-ukpostcodeparser")
(version "1.0.3")
(source (origin
(method url-fetch)
(uri (pypi-uri "UkPostcodeParser" version))
(sha256
(base32
"1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/hamstah/ukpostcodeparser")
(synopsis "UK Postcode parser for Python")
(description
"This library provides the @code{parse_uk_postcode} function for
parsing UK postcodes.")
(license license:expat)))
(define-public python2-ukpostcodeparser
(package-with-python2 python-ukpostcodeparser))
(define-public python-fake-factory
(package
(name "python-fake-factory")
(version "0.5.7")
(source (origin
(method url-fetch)
(uri (pypi-uri "fake-factory" version))
(sha256
(base32
"1chmarnrdzn4r017n8qlic0m0bbnhw04s3hkwribjvm3mqpb6pa0"))))
(build-system python-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-before 'check 'disable-failing-test
;; XXX: faker/tests/ne_np/__init__.py, line 40, in test_names
;; first_name, last_name = name.split()
;; ValueError: too many values to unpack (expected 2)
(lambda _
(delete-file "faker/tests/ne_np/__init__.py")
#t)))))
(native-inputs
`(("python-dateutil" ,python-dateutil-2)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six)
;; For testing
("python-email-validator" ,python-email-validator)
("python-mock" ,python-mock)
("python-ukpostcodeparser" ,python-ukpostcodeparser)))
(home-page "http://github.com/joke2k/faker")
(synopsis "Python package that generates fake data")
(description
"Faker is a Python package that generates fake data such as names,
addresses, and phone numbers.")
(license license:expat)
(properties `((python2-variant . ,(delay python2-fake-factory))))))
(define-public python2-fake-factory
(let ((base (package-with-python2 (strip-python2-variant
python-fake-factory))))
(package
(inherit base)
(native-inputs
`(("python2-ipaddress" ,python2-ipaddress)
,@(package-native-inputs base))))))
(define-public python-pyaml
(package
(name "python-pyaml")
(version "15.8.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "pyaml" version))
(sha256
(base32
"1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(propagated-inputs
`(("python-pyyaml" ,python-pyyaml)))
(home-page "https://github.com/mk-fg/pretty-yaml")
(synopsis "YAML pretty-print library for Python")
(description
"pyaml is a PyYAML based python module to produce pretty and readable
YAML-serialized data.")
(license (non-copyleft "http://www.wtfpl.net/txt/copying/"))))
(define-public python2-pyaml
(package-with-python2 python-pyaml))
(define-public python-flexmock
(package
(name "python-flexmock")
(version "0.10.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "flexmock" version))
(sha256
(base32
"0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://flexmock.readthedocs.org")
(synopsis "Testing library for Python")
(description
"flexmock is a testing library for Python that makes it easy to create
mocks, stubs and fakes.")
(license bsd-3)))
(define-public python2-flexmock
(package-with-python2 python-flexmock))
(define-public python-orator
(package
(name "python-orator")
(version "0.8.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "orator" version))
(sha256
(base32
"1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; no tests
(native-inputs
`(("python-arrow" ,python-arrow)
("python-blinker" ,python-blinker)
("python-cleo" ,python-cleo)
("python-fake-factory" ,python-fake-factory)
("python-inflection" ,python-inflection)
("python-lazy-object-proxy" ,python-lazy-object-proxy)
("python-pyaml" ,python-pyaml)
("python-setuptools" ,python-setuptools)
("python-simplejson" ,python-simplejson)
("python-wrapt" ,python-wrapt)))
(home-page "https://orator-orm.com/")
(synopsis "ActiveRecord ORM for Python")
(description
"Orator provides a simple ActiveRecord-like Object Relational Mapping
implementation for Python.")
(license license:expat)
(properties `((python2-variant . ,(delay python2-orator))))))
(define-public python2-orator
(let ((base (package-with-python2 (strip-python2-variant python-orator))))
(package
(inherit base)
(native-inputs
`(("python2-ipaddress" ,python2-ipaddress)
,@(package-native-inputs base))))))

View File

@ -3939,6 +3939,70 @@ part of the Prawn PDF generator.")
;; for details." ;; for details."
(license (list license:gpl2 license:gpl3 license:ruby)))) (license (list license:gpl2 license:gpl3 license:ruby))))
(define-public ruby-puma
(package
(name "ruby-puma")
(version "3.4.0")
(source
(origin
(method url-fetch)
;; Fetch from GitHub because distributed gem does not contain tests.
(uri (string-append "https://github.com/puma/puma/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"10svyj2jk949y1dmkxyzipk1ddzl4iz9limrcws1zhpganpvq3j8"))
;; Ignore broken test reported upstream.
;; https://github.com/puma/puma/issues/995
(patches (search-patches "ruby-puma-ignore-broken-test.patch"))))
(build-system ruby-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'fix-gemspec
(lambda _
(substitute* "puma.gemspec"
(("git ls-files") "find * |sort"))
#t)))))
(native-inputs
`(("ruby-hoe" ,ruby-hoe)
("ruby-rake-compiler" ,ruby-rake-compiler)
("ruby-hoe-git" ,ruby-hoe-git)
("ruby-rack" ,ruby-rack)))
(synopsis "Simple, concurrent HTTP server for Ruby/Rack")
(description
"Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
for Ruby/Rack applications. Puma is intended for use in both development and
production environments. In order to get the best throughput, it is highly
recommended that you use a Ruby implementation with real threads like Rubinius
or JRuby.")
(home-page "http://puma.io")
(license license:expat)))
(define-public ruby-hoe-git
(package
(name "ruby-hoe-git")
(version "1.6.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "hoe-git" version))
(sha256
(base32
"10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
(build-system ruby-build-system)
(propagated-inputs
`(("ruby-hoe" ,ruby-hoe)
("git" ,git)))
(synopsis "Hoe plugins for tighter Git integration")
(description
"This package provides a set of Hoe plugins for tighter Git integration.
It provides tasks to automate release tagging and pushing and changelog
generation.")
(home-page "http://github.com/jbarnette/hoe-git")
(license license:expat)))
(define-public ruby-sequel (define-public ruby-sequel
(package (package
(name "ruby-sequel") (name "ruby-sequel")

View File

@ -323,14 +323,14 @@ mashups, office (web agendas, mail clients, ...), etc.")
(define-public chicken (define-public chicken
(package (package
(name "chicken") (name "chicken")
(version "4.10.0") (version "4.11.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://code.call-cc.org/releases/" (uri (string-append "http://code.call-cc.org/releases/"
version "/chicken-" version ".tar.gz")) version "/chicken-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"16w96jrhb6qf62fgznk53f55yhfv81damghdjn31k5hirnmza1qf")))) "12ddyiikqknpr8h6llsxbg2fz75xnayvcnsvr1cwv8xnjn7jpp73"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:modules ((guix build gnu-build-system) `(#:modules ((guix build gnu-build-system)

View File

@ -34,13 +34,13 @@
(define-public screen (define-public screen
(package (package
(name "screen") (name "screen")
(version "4.3.1") (version "4.4.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/screen/screen-" (uri (string-append "mirror://gnu/screen/screen-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 "0qwxd4axkgvxjigz9xs0kcv6qpfkrzr2gm43w9idx0z2mvw4jh7s")))) (base32 "12r12xwhsg59mlprikbbmn60gh8lqhrvyar7mlxg4fwsfma2lwpg"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("makeinfo" ,texinfo))) `(("makeinfo" ,texinfo)))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -21,8 +22,13 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages documentation)) #:use-module (gnu packages autotools)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
#:use-module (gnu packages pkg-config))
(define-public cereal (define-public cereal
(package (package
@ -72,3 +78,48 @@
arbitrary data types and reversibly turns them into different representations, arbitrary data types and reversibly turns them into different representations,
such as compact binary encodings, XML, or JSON.") such as compact binary encodings, XML, or JSON.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public msgpack
(package
(name "msgpack")
(version "1.4.1")
(source
(origin
(method url-fetch)
(uri
(string-append
"https://github.com/msgpack/msgpack-c/releases/download/"
"cpp-" version "/msgpack-" version ".tar.gz"))
(snippet
'(let ((p (open-file "msgpack.pc.in" "a")))
(begin
(display
(string-append "Requires: " "zlib" "\n") p)
(close-output-port p))))
(sha256
(base32
"0bpjfh9vz0n2k93mph3x15clmigkgs223xfn8h12ymrh5gsi5ica"))))
(build-system gnu-build-system)
(native-inputs
`(("googletest" ,googletest)
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(propagated-inputs
`(("zlib" ,zlib))) ;; Msgpack installs two headers (zbuffer.h,
;; zbuffer.hpp) which #include <zlib.h>. However, 'guix gc --references'
;; does not detect a store reference to zlib since these headers are not
;; compiled.
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'autoconf
(lambda _
(system* "autoreconf" "-vfi"))))))
(home-page "http://www.msgpack.org")
(synopsis "Binary serialization library")
(description "Msgpack is a library for C/C++ that implements binary
serialization.")
(license license:boost1.0)))

View File

@ -378,6 +378,50 @@ and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see
'citation(\"Rcpp\")' for details on these last two.") 'citation(\"Rcpp\")' for details on these last two.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public r-mgcv
(package
(name "r-mgcv")
(version "1.8-12")
(source
(origin
(method url-fetch)
(uri (cran-uri "mgcv" version))
(sha256
(base32
"1khzy36nn6xbnzqfc2953ng0sv8w91mns1ymhibaqn1150x1qid0"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/mgcv")
(synopsis "Mixed generalised additive model computation")
(description
"GAMs, GAMMs and other generalized ridge regression with multiple smoothing
parameter estimation by GCV, REML or UBRE/AIC. The library includes a
@code{gam()} function, a wide variety of smoothers, JAGS support and
distributions beyond the exponential family.")
(license license:gpl2+)))
(define-public r-permute
(package
(name "r-permute")
(version "0.9-0")
(source
(origin
(method url-fetch)
(uri (cran-uri "permute" version))
(sha256
(base32
"0w68cqw6s4pixix8bh1qzsy1pm64jqh1cjznw74h82ygp8sj7p73"))))
(build-system r-build-system)
;; Tests do not run correctly, but running them properly would entail a
;; circular dependency with vegan.
(home-page "https://github.com/gavinsimpson/permute")
(synopsis "Functions for Generating Restricted Permutations of Data")
(description
"This package provides a set of restricted permutation designs for freely
exchangeable, line transects (time series), spatial grid designs and permutation
of blocks (groups of samples). @code{permute} also allows split-plot designs,
in which the whole-plots or split-plots or both can be freely exchangeable.")
(license license:gpl2+)))
(define-public r-plyr (define-public r-plyr
(package (package
(name "r-plyr") (name "r-plyr")

View File

@ -3,6 +3,7 @@
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -55,27 +56,27 @@
(define texlive-extra-src (define texlive-extra-src
(origin (origin
(method url-fetch) (method url-fetch)
(uri "ftp://tug.org/historic/systems/texlive/2015/texlive-20150523-extra.tar.xz") (uri "ftp://tug.org/historic/systems/texlive/2016/texlive-20160523-extra.tar.xz")
(sha256 (base32 (sha256 (base32
"1dkhhacga8h1v2m9xv1w02glbdda2m8lfp1la1y1zb9yjj8jsa6i")))) "0q4a92zmwhn4ry6xgrp4k8wq11ax2sg9rg9yrsrdkr719y0x887a"))))
(define texlive-texmf-src (define texlive-texmf-src
(origin (origin
(method url-fetch) (method url-fetch)
(uri "ftp://tug.org/historic/systems/texlive/2015/texlive-20150523-texmf.tar.xz") (uri "ftp://tug.org/historic/systems/texlive/2016/texlive-20160523-texmf.tar.xz")
(sha256 (base32 (sha256 (base32
"1a3hpcg6x69ysqx432v6sk4alg0x34813cwk41frmvzprdajpyqy")))) "0mfp6kq1p2ys5ni9czx9xl0xh264axri25vqw37yzk8jn3py9l08"))))
(define texlive-bin (define texlive-bin
(package (package
(name "texlive-bin") (name "texlive-bin")
(version "2015") (version "2016")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri "ftp://tug.org/historic/systems/texlive/2015/texlive-20150521-source.tar.xz") (uri "ftp://tug.org/historic/systems/texlive/2016/texlive-20160523-source.tar.xz")
(sha256 (base32 (sha256 (base32
"0sa6kmz4jwhv6lw702gxszhhjkvw071wba0ngk1c76g8vixwv6zd")))) "07kb8rsw8d42wy3fj1qgqj26y92spx1lbhx6z73wwdb3msnvh4i9"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("texlive-extra-src" ,texlive-extra-src) `(("texlive-extra-src" ,texlive-extra-src)
@ -171,7 +172,7 @@ This package contains the binaries.")
(define texlive-texmf (define texlive-texmf
(package (package
(name "texlive-texmf") (name "texlive-texmf")
(version "2015") (version "2016")
(source texlive-texmf-src) (source texlive-texmf-src)
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
@ -220,6 +221,7 @@ This package contains the binaries.")
(system* "updmap-sys" "--nohash" "--syncwithtrees") (system* "updmap-sys" "--nohash" "--syncwithtrees")
(system* "mktexlsr") (system* "mktexlsr")
(system* "fmtutil-sys" "--all"))))))) (system* "fmtutil-sys" "--all")))))))
(properties `((max-silent-time . 9600))) ; don't time out while grafting
(synopsis "TeX Live, a package of the TeX typesetting system") (synopsis "TeX Live, a package of the TeX typesetting system")
(description (description
"TeX Live provides a comprehensive TeX document production system. "TeX Live provides a comprehensive TeX document production system.
@ -234,7 +236,7 @@ This package contains the complete tree of texmf-dist data.")
(define-public texlive (define-public texlive
(package (package
(name "texlive") (name "texlive")
(version "2015") (version "2016")
(source #f) (source #f)
(build-system trivial-build-system) (build-system trivial-build-system)
(inputs `(("bash" ,bash) ; for wrap-program (inputs `(("bash" ,bash) ; for wrap-program

View File

@ -112,14 +112,14 @@ as well as the classic centralized workflow.")
;; Keep in sync with 'git-manpages'! ;; Keep in sync with 'git-manpages'!
(package (package
(name "git") (name "git")
(version "2.8.4") (version "2.9.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-" (uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0mqnzs4wz2x1fa6kq2ckgf42fgx6qwp64ra1lgg73245l4r9l3hj")))) "02dl8yvvl7m4zy39s0xmqr958ah7krvkv94lmx4vz3wl95wsj7zl"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("native-perl" ,perl) `(("native-perl" ,perl)
@ -292,7 +292,7 @@ everything from small to very large projects with speed and efficiency.")
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1xdpp1i8sgdzk708vnxrm1z6dg4mip12fswihb8hlg2v5qqgrpfj")))) "0ic4zs4axkkwa44nqv5iihj3q2nm42kx0j8scnfp1z93m6pw31fw"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments (arguments
'(#:modules ((guix build utils)) '(#:modules ((guix build utils))

View File

@ -77,7 +77,7 @@
#:use-module (gnu packages xiph) #:use-module (gnu packages xiph)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages yasm) #:use-module (gnu packages assembly)
#:use-module (gnu packages zip)) #:use-module (gnu packages zip))
(define-public aalib (define-public aalib
@ -755,7 +755,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(define-public mpv (define-public mpv
(package (package
(name "mpv") (name "mpv")
(version "0.17.0") (version "0.18.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -763,7 +763,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
".tar.gz")) ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0vms3viwqcwl1mrgmf2yy4c69fvv7xpbkyrl693l6zpwynqd4b30")) "0az0zqb2rakak51zsvfqzj9a8jiqpvc61jxap8hjdkkb9y6n6mmn"))
(file-name (string-append name "-" version ".tar.gz")))) (file-name (string-append name "-" version ".tar.gz"))))
(build-system waf-build-system) (build-system waf-build-system)
(native-inputs (native-inputs
@ -818,7 +818,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(copy-file (assoc-ref inputs "waf") "waf") (copy-file (assoc-ref inputs "waf") "waf")
(setenv "CC" "gcc")))) (setenv "CC" "gcc"))))
#:configure-flags (list "--enable-gpl3" "--enable-zsh-comp") #:configure-flags (list "--enable-zsh-comp")
;; No check function defined. ;; No check function defined.
#:tests? #f)) #:tests? #f))
(home-page "https://mpv.io/") (home-page "https://mpv.io/")

View File

@ -13,6 +13,7 @@
;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -2899,14 +2900,14 @@ applications.")
(define-public perl-uri (define-public perl-uri
(package (package
(name "perl-uri") (name "perl-uri")
(version "1.67") (version "1.71")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
"URI-" version ".tar.gz")) "URI-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0ki7i830gs0cwwwjsyv3s6yy1l76ym8pfqp0lp7vw0j9bwyx923h")))) "05a1ck1bhvqkkk690xhsxf7276dnagk96qkh2jy4prrrgw6wm3lw"))))
(build-system perl-build-system) (build-system perl-build-system)
(license (package-license perl)) (license (package-license perl))
(synopsis "Perl Uniform Resource Identifiers (absolute and relative)") (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")

File diff suppressed because it is too large Load Diff

View File

@ -1,55 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages yasm)
#:use-module (gnu packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages python)
#:use-module (gnu packages xml))
(define-public yasm
(package
(name "yasm")
(version "1.3.0")
(source
(origin
(method url-fetch)
(uri (string-append "http://www.tortall.net/projects/yasm/releases/yasm-"
version ".tar.gz"))
(sha256
(base32
"0gv0slmm0qpq91za3v2v9glff3il594x5xsrbgab7xcmnh0ndkix"))))
(build-system gnu-build-system)
(inputs
`(("python" ,python-wrapper)
("xmlto" ,xmlto)))
(home-page "http://yasm.tortall.net/")
(synopsis "Rewrite of the NASM assembler")
(description
"Yasm is a complete rewrite of the NASM assembler.
Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM
and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit
Mach-O, RDOFF2, COFF, Win32, and Win64 object formats, and generates source
debugging information in STABS, DWARF 2, and CodeView 8 formats.")
(license (license:non-copyleft "file://COPYING"
"See COPYING in the distribution."))))

View File

@ -73,6 +73,7 @@
setuid-program-service-type setuid-program-service-type
profile-service-type profile-service-type
firmware-service-type firmware-service-type
gc-root-service-type
%boot-service %boot-service
%activation-service %activation-service
@ -489,6 +490,33 @@ kernel."
(compose concatenate) (compose concatenate)
(extend append))) (extend append)))
(define (gc-roots->system-entry roots)
"Return an entry in the system's output containing symlinks to ROOTS."
(mlet %store-monad ((entry (gexp->derivation
"gc-roots"
#~(let ((roots '#$roots))
(mkdir #$output)
(chdir #$output)
(for-each symlink
roots
(map number->string
(iota (length roots))))))))
(return (if (null? roots)
'()
`(("gc-roots" ,entry))))))
(define gc-root-service-type
;; A service to associate extra garbage-collector roots to the system. This
;; is a simple hack that guarantees that the system retains references to
;; the given list of roots. Roots must be "lowerable" objects like
;; packages, or derivations.
(service-type (name 'gc-roots)
(extensions
(list (service-extension system-service-type
gc-roots->system-entry)))
(compose concatenate)
(extend append)))
;;; ;;;
;;; Service folding. ;;; Service folding.

115
gnu/services/mcron.scm Normal file
View File

@ -0,0 +1,115 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu services mcron)
#:use-module (gnu services)
#:use-module (gnu services base)
#:use-module (gnu services shepherd)
#:autoload (gnu packages guile) (mcron2)
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
#:export (mcron-configuration
mcron-configuration?
mcron-configuration-mcron
mcron-configuration-jobs
mcron-service-type
mcron-service))
;;; Commentary:
;;;
;;; This module implements a service that to run instances of GNU mcron, a
;;; periodic job execution daemon. Example of a service:
;;
;; (service mcron-service-type
;; (mcron-configuration
;; (jobs (list #~(job next-second-from
;; (lambda ()
;; (call-with-output-file "/dev/console"
;; (lambda (port)
;; (display "hello!\n" port)))))))))
;;;
;;; Code:
(define-record-type* <mcron-configuration> mcron-configuration
make-mcron-configuration
mcron-configuration?
(mcron mcron-configuration-mcron ;package
(default mcron2))
(jobs mcron-configuration-jobs ;list of <mcron-job>
(default '())))
(define (job-file job)
(scheme-file "mcron-job" job))
(define mcron-shepherd-services
(match-lambda
(($ <mcron-configuration> mcron ()) ;nothing to do!
'())
(($ <mcron-configuration> mcron jobs)
(list (shepherd-service
(provision '(mcron))
(requirement '(user-processes))
(modules `((srfi srfi-1)
(srfi srfi-26)
,@%default-modules))
(start #~(make-forkexec-constructor
(list (string-append #$mcron "/bin/mcron")
#$@(map job-file jobs))
;; Disable auto-compilation of the job files and set a
;; sane value for 'PATH'.
#:environment-variables
(cons* "GUILE_AUTO_COMPILE=0"
"PATH=/run/current-system/profile/bin"
(remove (cut string-prefix? "PATH=" <>)
(environ)))))
(stop #~(make-kill-destructor)))))))
(define mcron-service-type
(service-type (name 'mcron)
(extensions
(list (service-extension shepherd-root-service-type
mcron-shepherd-services)
(service-extension profile-service-type
(compose list
mcron-configuration-mcron))))
(compose concatenate)
(extend (lambda (config jobs)
(mcron-configuration
(inherit config)
(jobs (append (mcron-configuration-jobs config)
jobs)))))))
(define* (mcron-service jobs #:optional (mcron mcron2))
"Return an mcron service running @var{mcron} that schedules @var{jobs}, a
list of gexps denoting mcron job specifications.
This is a shorthand for:
@example
(service mcron-service-type
(mcron-configuration (mcron mcron) (jobs jobs)))
@end example
"
(service mcron-service-type
(mcron-configuration (mcron mcron) (jobs jobs))))
;;; mcron.scm ends here

View File

@ -208,8 +208,7 @@ the user's target storage device rather than on the RAM disk."
"Return a list of tuples representing configuration templates to add to "Return a list of tuples representing configuration templates to add to
/etc." /etc."
(define (file f) (define (file f)
(local-file (search-path %load-path (local-file (string-append "examples/" f)))
(string-append "gnu/system/examples/" f))))
(define directory (define directory
(computed-file "configuration-templates" (computed-file "configuration-templates"

View File

@ -18,11 +18,28 @@
(define-module (gnu tests) (define-module (gnu tests)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix records)
#:use-module (gnu system) #:use-module (gnu system)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:export (backdoor-service-type #:use-module ((gnu packages) #:select (scheme-modules))
marionette-operating-system)) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9 gnu)
#:use-module (ice-9 match)
#:export (marionette-service-type
marionette-operating-system
define-os-with-source
system-test
system-test?
system-test-name
system-test-value
system-test-description
system-test-location
fold-system-tests
all-system-tests))
;;; Commentary: ;;; Commentary:
;;; ;;;
@ -112,7 +129,7 @@
(define marionette-service-type (define marionette-service-type
;; This is the type of the "marionette" service, allowing a guest system to ;; This is the type of the "marionette" service, allowing a guest system to
;; be manipulated from the host. This marionette REPL is essentially a ;; be manipulated from the host. This marionette REPL is essentially a
;; universal marionette. ;; universal backdoor.
(service-type (name 'marionette-repl) (service-type (name 'marionette-repl)
(extensions (extensions
(list (service-extension shepherd-root-service-type (list (service-extension shepherd-root-service-type
@ -127,4 +144,73 @@ in a virtual machine--i.e., controlled from the host system."
(services (cons (service marionette-service-type imported-modules) (services (cons (service marionette-service-type imported-modules)
(operating-system-user-services os))))) (operating-system-user-services os)))))
(define-syntax define-os-with-source
(syntax-rules (use-modules operating-system)
"Define two variables: OS containing the given operating system, and
SOURCE containing the source to define OS as an sexp.
This is convenient when we need both the <operating-system> object so we can
instantiate it, and the source to create it so we can store in in a file in
the system under test."
((_ (os source)
(use-modules modules ...)
(operating-system fields ...))
(begin
(define os
(operating-system fields ...))
(define source
'(begin
(use-modules modules ...)
(operating-system fields ...)))))))
;;;
;;; Tests.
;;;
(define-record-type* <system-test> system-test make-system-test
system-test?
(name system-test-name) ;string
(value system-test-value) ;%STORE-MONAD value
(description system-test-description) ;string
(location system-test-location (innate) ;<location>
(default (and=> (current-source-location)
source-properties->location))))
(define (write-system-test test port)
(match test
(($ <system-test> name _ _ ($ <location> file line))
(format port "#<system-test ~a ~a:~a ~a>"
name file line
(number->string (object-address test) 16)))
(($ <system-test> name)
(format port "#<system-test ~a ~a>" name
(number->string (object-address test) 16)))))
(set-record-type-printer! <system-test> write-system-test)
(define (test-modules)
"Return the list of modules that define system tests."
(scheme-modules (dirname (search-path %load-path "guix.scm"))
"gnu/tests"))
(define (fold-system-tests proc seed)
"Invoke PROC on each system test, passing it the test and the previous
result."
(fold (lambda (module result)
(fold (lambda (thing result)
(if (system-test? thing)
(proc thing result)
result))
result
(module-map (lambda (sym var)
(false-if-exception (variable-ref var)))
module)))
'()
(test-modules)))
(define (all-system-tests)
"Return the list of system tests."
(reverse (fold-system-tests cons '())))
;;; tests.scm ends here ;;; tests.scm ends here

View File

@ -24,13 +24,16 @@
#:use-module (gnu system shadow) #:use-module (gnu system shadow)
#:use-module (gnu system vm) #:use-module (gnu system vm)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services mcron)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:export (%test-basic-os)) #:export (run-basic-test
%test-basic-os
%test-mcron))
(define %simple-os (define %simple-os
(operating-system (operating-system
@ -56,15 +59,10 @@
%base-user-accounts)))) %base-user-accounts))))
(define %test-basic-os (define* (run-basic-test os command #:optional (name "basic"))
;; Monadic derivation that instruments %SIMPLE-OS, runs it in a VM, and runs "Return a derivation called NAME that tests basic features of the OS started
;; a series of basic functionality tests. using COMMAND, a gexp that evaluates to a list of strings. Compare some
(mlet* %store-monad ((os -> (marionette-operating-system properties of running system to what's declared in OS, an <operating-system>."
%simple-os
#:imported-modules '((gnu services herd)
(guix combinators))))
(run (system-qemu-image/shared-store-script
os #:graphic? #f)))
(define test (define test
#~(begin #~(begin
(use-modules (gnu build marionette) (use-modules (gnu build marionette)
@ -74,7 +72,7 @@
(ice-9 match)) (ice-9 match))
(define marionette (define marionette
(make-marionette (list #$run))) (make-marionette #$command))
(mkdir #$output) (mkdir #$output)
(chdir #$output) (chdir #$output)
@ -83,10 +81,13 @@
(test-assert "uname" (test-assert "uname"
(match (marionette-eval '(uname) marionette) (match (marionette-eval '(uname) marionette)
(#("Linux" "komputilo" version _ "x86_64") (#("Linux" host-name version _ architecture)
(and (string=? host-name
#$(operating-system-host-name os))
(string-prefix? #$(package-version (string-prefix? #$(package-version
(operating-system-kernel os)) (operating-system-kernel os))
version)))) version)
(string-prefix? architecture %host-type)))))
(test-assert "shell and user commands" (test-assert "shell and user commands"
;; Is everything in $PATH? ;; Is everything in $PATH?
@ -121,8 +122,7 @@ info --version")
marionette))) marionette)))
(lset= eq? (lset= eq?
(pk 'services services) (pk 'services services)
'(root #$@(operating-system-shepherd-service-names '(root #$@(operating-system-shepherd-service-names os)))))
(virtualized-operating-system os '()))))))
(test-equal "login on tty1" (test-equal "login on tty1"
"root\n" "root\n"
@ -160,5 +160,126 @@ info --version")
(test-end) (test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))) (exit (= (test-runner-fail-count (test-runner-current)) 0))))
(gexp->derivation "basic" test (gexp->derivation name test
#:modules '((gnu build marionette))))
(define %test-basic-os
(system-test
(name "basic")
(description
"Instrument %SIMPLE-OS, run it in a VM, and run a series of basic
functionality tests.")
(value
(mlet* %store-monad ((os -> (marionette-operating-system
%simple-os
#:imported-modules '((gnu services herd)
(guix combinators))))
(run (system-qemu-image/shared-store-script
os #:graphic? #f)))
;; XXX: Add call to 'virtualized-operating-system' to get the exact same
;; set of services as the OS produced by
;; 'system-qemu-image/shared-store-script'.
(run-basic-test (virtualized-operating-system os '())
#~(list #$run))))))
;;;
;;; Mcron.
;;;
(define %mcron-os
;; System with an mcron service, with one mcron job for "root" and one mcron
;; job for an unprivileged user (note: #:user is an 'mcron2' thing.)
(let ((job1 #~(job next-second-from
(lambda ()
(call-with-output-file "witness"
(lambda (port)
(display (list (getuid) (getgid)) port))))))
(job2 #~(job next-second-from
(lambda ()
(call-with-output-file "witness"
(lambda (port)
(display (list (getuid) (getgid)) port))))
#:user "alice"))
(job3 #~(job next-second-from ;to test $PATH
"touch witness-touch")))
(operating-system
(inherit %simple-os)
(services (cons (mcron-service (list job1 job2 job3))
(operating-system-user-services %simple-os))))))
(define (run-mcron-test name)
(mlet* %store-monad ((os -> (marionette-operating-system
%mcron-os
#:imported-modules '((gnu services herd)
(guix combinators))))
(command (system-qemu-image/shared-store-script
os #:graphic? #f)))
(define test
#~(begin
(use-modules (gnu build marionette)
(srfi srfi-64)
(ice-9 match))
(define marionette
(make-marionette (list #$command)))
(define (wait-for-file file)
;; Wait until FILE exists in the guest; 'read' its content and
;; return it.
(marionette-eval
`(let loop ((i 10))
(cond ((file-exists? ,file)
(call-with-input-file ,file read))
((> i 0)
(sleep 1)
(loop (- i 1)))
(else
(error "file didn't show up" ,file))))
marionette))
(mkdir #$output)
(chdir #$output)
(test-begin "mcron")
(test-eq "service running"
'running!
(marionette-eval
'(begin
(use-modules (gnu services herd))
(start-service 'mcron)
'running!)
marionette))
;; Make sure root's mcron job runs, has its cwd set to "/root", and
;; runs with the right UID/GID.
(test-equal "root's job"
'(0 0)
(wait-for-file "/root/witness"))
;; Likewise for Alice's job. We cannot know what its GID is since
;; it's chosen by 'groupadd', but it's strictly positive.
(test-assert "alice's job"
(match (wait-for-file "/home/alice/witness")
((1000 gid)
(>= gid 100))))
;; Last, the job that uses a command; allows us to test whether
;; $PATH is sane. (Note that 'marionette-eval' stringifies objects
;; that don't have a read syntax, hence the string.)
(test-equal "root's job with command"
"#<eof>"
(wait-for-file "/root/witness-touch"))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0))))
(gexp->derivation name test
#:modules '((gnu build marionette))))) #:modules '((gnu build marionette)))))
(define %test-mcron
(system-test
(name "mcron")
(description "Make sure the mcron service works as advertised.")
(value (run-mcron-test name))))

212
gnu/tests/install.scm Normal file
View File

@ -0,0 +1,212 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu tests install)
#:use-module (gnu)
#:use-module (gnu tests)
#:use-module (gnu tests base)
#:use-module (gnu system)
#:use-module (gnu system install)
#:use-module (gnu system vm)
#:use-module ((gnu build vm) #:select (qemu-command))
#:use-module (gnu packages qemu)
#:use-module (gnu packages package-management)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix packages)
#:use-module (guix grafts)
#:use-module (guix gexp)
#:use-module (guix utils)
#:export (%test-installed-os))
;;; Commentary:
;;;
;;; Test the installation of GuixSD using the documented approach at the
;;; command line.
;;;
;;; Code:
(define-os-with-source (%minimal-os %minimal-os-source)
;; The OS we want to install.
(use-modules (gnu) (gnu tests) (srfi srfi-1))
(operating-system
(host-name "liberigilo")
(timezone "Europe/Paris")
(locale "en_US.UTF-8")
(bootloader (grub-configuration (device "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(file-systems (cons (file-system
(device "my-root")
(title 'label)
(mount-point "/")
(type "ext4"))
%base-file-systems))
(users (cons (user-account
(name "alice")
(comment "Bob's sister")
(group "users")
(supplementary-groups '("wheel" "audio" "video"))
(home-directory "/home/alice"))
%base-user-accounts))
(services (cons (service marionette-service-type
'((gnu services herd)
(guix combinators)))
%base-services))))
(define (operating-system-with-current-guix os)
"Return a variant of OS that uses the current Guix."
(operating-system
(inherit os)
(services (modify-services (operating-system-user-services os)
(guix-service-type config =>
(guix-configuration
(inherit config)
(guix (current-guix))))))))
(define (operating-system-with-gc-roots os roots)
"Return a variant of OS where ROOTS are registered as GC roots."
(operating-system
(inherit os)
(services (cons (service gc-root-service-type roots)
(operating-system-user-services os)))))
(define MiB (expt 2 20))
(define* (run-install #:key
(os (marionette-operating-system
;; Since the image has no network access, use the
;; current Guix so the store items we need are in
;; the image.
(operating-system
(inherit (operating-system-with-current-guix
installation-os))
(kernel-arguments '("console=ttyS0")))
#:imported-modules '((gnu services herd)
(guix combinators))))
(target-size (* 1200 MiB)))
"Run the GuixSD installation procedure from OS and return a VM image of
TARGET-SIZE bytes containing the installed system."
(mlet* %store-monad ((_ (set-grafting #f))
(system (current-system))
(target (operating-system-derivation %minimal-os))
;; Since the installation system has no network access,
;; we cheat a little bit by adding TARGET to its GC
;; roots. This way, we know 'guix system init' will
;; succeed.
(image (system-disk-image
(operating-system-with-gc-roots
os (list target))
#:disk-image-size (* 1500 MiB))))
(define install
#~(begin
(use-modules (guix build utils)
(gnu build marionette))
(set-path-environment-variable "PATH" '("bin")
(list #$qemu-minimal))
(system* "qemu-img" "create" "-f" "qcow2"
#$output #$(number->string target-size))
(define marionette
(make-marionette
(cons (which #$(qemu-command system))
(cons* "-no-reboot" "-m" "800"
"-drive"
(string-append "file=" #$image
",if=virtio,readonly")
"-drive"
(string-append "file=" #$output ",if=virtio")
(if (file-exists? "/dev/kvm")
'("-enable-kvm")
'())))))
(pk 'uname (marionette-eval '(uname) marionette))
;; Wait for tty1.
(marionette-eval '(begin
(use-modules (gnu services herd))
(start 'term-tty1))
marionette)
(marionette-eval '(call-with-output-file "/etc/litl-config.scm"
(lambda (port)
(write '#$%minimal-os-source port)))
marionette)
(exit (marionette-eval '(zero? (system "
. /etc/profile
set -e -x;
guix --version
guix gc --list-live | grep isc-dhcp
export GUIX_BUILD_OPTIONS=--no-grafts
guix build isc-dhcp
parted --script /dev/vdb mklabel gpt \\
mkpart primary ext2 1M 3M \\
mkpart primary ext2 3M 1G \\
set 1 boot on \\
set 1 bios_grub on
mkfs.ext4 -L my-root /dev/vdb2
ls -l /dev/vdb
mount /dev/vdb2 /mnt
df -h /mnt
herd start cow-store /mnt
mkdir /mnt/etc
cp /etc/litl-config.scm /mnt/etc/config.scm
guix system init /mnt/etc/config.scm /mnt --no-substitutes
sync
reboot\n"))
marionette))))
(gexp->derivation "installation" install
#:modules '((guix build utils)
(gnu build marionette)))))
(define %test-installed-os
(system-test
(name "installed-os")
(description
"Test basic functionality of an OS installed like one would do by hand.
This test is expensive in terms of CPU and storage usage since we need to
build (current-guix) and then store a couple of full system images.")
(value
(mlet %store-monad ((image (run-install))
(system (current-system)))
(run-basic-test %minimal-os
#~(let ((image #$image))
;; First we need a writable copy of the image.
(format #t "copying image '~a'...~%" image)
(copy-file image "disk.img")
(chmod "disk.img" #o644)
`(,(string-append #$qemu-minimal "/bin/"
#$(qemu-command system))
,@(if (file-exists? "/dev/kvm")
'("-enable-kvm")
'())
"-no-reboot" "-m" "256"
"-drive" "file=disk.img,if=virtio"))
"installed-os")))))
;;; install.scm ends here

View File

@ -48,7 +48,7 @@
"Return a URI string for the Python package hosted on the Python Package "Return a URI string for the Python package hosted on the Python Package
Index (PyPI) corresponding to NAME and VERSION. EXTENSION is the file name Index (PyPI) corresponding to NAME and VERSION. EXTENSION is the file name
extension, such as '.tar.gz'." extension, such as '.tar.gz'."
(string-append "https://pypi.python.org/packages/source/" (string-append "https://pypi.io/packages/source/"
(string-take name 1) "/" name "/" (string-take name 1) "/" name "/"
name "-" version extension)) name "-" version extension))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -25,6 +26,7 @@
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:export (%bournish-language)) #:export (%bournish-language))
@ -103,6 +105,63 @@ characters."
((@ (guix build utils) dump-port) port (current-output-port)) ((@ (guix build utils) dump-port) port (current-output-port))
*unspecified*))) *unspecified*)))
(define (lines+chars port)
"Return the number of lines and number of chars read from PORT."
(let loop ((lines 0) (chars 0))
(match (read-char port)
((? eof-object?) ;done!
(values lines chars))
(#\newline ;recurse
(loop (1+ lines) (1+ chars)))
(_ ;recurse
(loop lines (1+ chars))))))
(define (file-exists?* file)
"Like 'file-exists?' but emits a warning if FILE is not accessible."
(catch 'system-error
(lambda ()
(stat file))
(lambda args
(let ((errno (system-error-errno args)))
(format (current-error-port) "~a: ~a~%"
file (strerror errno))
#f))))
(define (wc-print file)
(let-values (((lines chars)
(call-with-input-file file lines+chars)))
(format #t "~a ~a ~a~%" lines chars file)))
(define (wc-l-print file)
(let-values (((lines chars)
(call-with-input-file file lines+chars)))
(format #t "~a ~a~%" lines file)))
(define (wc-c-print file)
(let-values (((lines chars)
(call-with-input-file file lines+chars)))
(format #t "~a ~a~%" chars file)))
(define (wc-command-implementation . files)
(for-each wc-print (filter file-exists?* files)))
(define (wc-l-command-implementation . files)
(for-each wc-l-print (filter file-exists?* files)))
(define (wc-c-command-implementation . files)
(for-each wc-c-print (filter file-exists?* files)))
(define (wc-command . args)
"Emit code for the 'wc' command."
(cond ((member "-l" args)
`((@@ (guix build bournish) wc-l-command-implementation)
,@(delete "-l" args)))
((member "-c" args)
`((@@ (guix build bournish) wc-c-command-implementation)
,@(delete "-c" args)))
(else
`((@@ (guix build bournish) wc-command-implementation) ,@args))))
(define (help-command . _) (define (help-command . _)
(display "\ (display "\
Hello, this is Bournish, a minimal Bourne-like shell in Guile! Hello, this is Bournish, a minimal Bourne-like shell in Guile!
@ -129,7 +188,8 @@ commands such as 'ls' and 'cd'; it lacks globbing, pipes---everything.\n"))
("help" ,help-command) ("help" ,help-command)
("ls" ,ls-command) ("ls" ,ls-command)
("which" ,which-command) ("which" ,which-command)
("cat" ,cat-command))) ("cat" ,cat-command)
("wc" ,wc-command)))
(define (read-bournish port env) (define (read-bournish port env)
"Read a Bournish expression from PORT, and return the corresponding Scheme "Read a Bournish expression from PORT, and return the corresponding Scheme

View File

@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -152,9 +154,10 @@ store in '.el' files."
(define (emacs-inputs-el-directories dirs) (define (emacs-inputs-el-directories dirs)
"Build the list of Emacs Lisp directories from the Emacs package directory "Build the list of Emacs Lisp directories from the Emacs package directory
DIRS." DIRS."
(map (lambda (d) (append-map (lambda (d)
(list (string-append d "/share/emacs/site-lisp")
(string-append d %install-suffix "/" (string-append d %install-suffix "/"
(store-directory->elpa-name-version d))) (store-directory->elpa-name-version d))))
dirs)) dirs))
(define (package-name-version->elpa-name-version name-ver) (define (package-name-version->elpa-name-version name-ver)

View File

@ -59,8 +59,8 @@
(or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")) (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix"))
(define %config-directory (define %config-directory
;; This must match `NIX_CONF_DIR' as defined in `nix/local.mk'. ;; This must match `GUIX_CONFIGURATION_DIRECTORY' as defined in `nix/local.mk'.
(or (getenv "NIX_CONF_DIR") "@guix_sysconfdir@/guix")) (or (getenv "GUIX_CONFIGURATION_DIRECTORY") "@guix_sysconfdir@/guix"))
(define %guix-register-program (define %guix-register-program
;; The 'guix-register' program. ;; The 'guix-register' program.

View File

@ -856,8 +856,10 @@ and in the current monad setting (system type, etc.)"
(define %utils-module (define %utils-module
;; This file provides 'mkdir-p', needed to implement 'imported-files' and ;; This file provides 'mkdir-p', needed to implement 'imported-files' and
;; other primitives below. ;; other primitives below. Note: We give the file name relative to this
(local-file (search-path %load-path "guix/build/utils.scm") ;; file you are currently reading; 'search-path' could return a file name
;; relative to the current working directory.
(local-file "build/utils.scm"
"build-utils.scm")) "build-utils.scm"))
(define* (imported-files files (define* (imported-files files

View File

@ -175,8 +175,10 @@ cannot determine package dependencies"))
(lambda (port) (lambda (port)
(let* ((metadata (json->scm port)) (let* ((metadata (json->scm port))
(run_requires (hash-ref metadata "run_requires")) (run_requires (hash-ref metadata "run_requires"))
(requirements (hash-ref (list-ref run_requires 0) (requirements (if run_requires
"requires"))) (hash-ref (list-ref run_requires 0)
"requires")
'())))
(map (lambda (r) (map (lambda (r)
(python->package-name (clean-requirement r))) (python->package-name (clean-requirement r)))
requirements))))) requirements)))))

View File

@ -94,10 +94,15 @@
;;; Code: ;;; Code:
(define %narinfo-cache-directory (define %narinfo-cache-directory
;; A local cache of narinfos, to avoid going to the network. ;; A local cache of narinfos, to avoid going to the network. Most of the
;; time, 'guix substitute' is called by guix-daemon as root and stores its
;; cached data in /var/guix/…. However, when invoked from 'guix challenge'
;; as a user, it stores its cache in ~/.cache.
(if (zero? (getuid))
(or (and=> (getenv "XDG_CACHE_HOME") (or (and=> (getenv "XDG_CACHE_HOME")
(cut string-append <> "/guix/substitute")) (cut string-append <> "/guix/substitute"))
(string-append %state-directory "/substitute/cache"))) (string-append %state-directory "/substitute/cache"))
(string-append (cache-directory) "/substitute")))
(define %allow-unauthenticated-substitutes? (define %allow-unauthenticated-substitutes?
;; Whether to allow unchecked substitutes. This is useful for testing ;; Whether to allow unchecked substitutes. This is useful for testing
@ -501,17 +506,10 @@ indicates that PATH is unavailable at CACHE-URL."
(value ,(and=> narinfo narinfo->string)))) (value ,(and=> narinfo narinfo->string))))
(let ((file (narinfo-cache-file cache-url path))) (let ((file (narinfo-cache-file cache-url path)))
(catch 'system-error
(lambda ()
(mkdir-p (dirname file)) (mkdir-p (dirname file))
(with-atomic-file-output file (with-atomic-file-output file
(lambda (out) (lambda (out)
(write (cache-entry cache-url narinfo) out)))) (write (cache-entry cache-url narinfo) out))))
(lambda args
;; We may not have write access to the local cache when called from an
;; unprivileged process such as 'guix challenge'.
(unless (= EACCES (system-error-errno args))
(apply throw args)))))
narinfo) narinfo)

View File

@ -1061,8 +1061,6 @@ Return #t on success.
Use with care as it directly modifies the store! This is primarily meant to Use with care as it directly modifies the store! This is primarily meant to
be used internally by the daemon's build hook." be used internally by the daemon's build hook."
;; Currently this is implemented by calling out to the fine C++ blob. ;; Currently this is implemented by calling out to the fine C++ blob.
(catch 'system-error
(lambda ()
(let ((pipe (apply open-pipe* OPEN_WRITE %guix-register-program (let ((pipe (apply open-pipe* OPEN_WRITE %guix-register-program
`(,@(if prefix `(,@(if prefix
`("--prefix" ,prefix) `("--prefix" ,prefix)
@ -1076,9 +1074,6 @@ be used internally by the daemon's build hook."
path (or deriver "") (length references)) path (or deriver "") (length references))
(for-each (cut format pipe "~a~%" <>) references) (for-each (cut format pipe "~a~%" <>) references)
(zero? (close-pipe pipe)))))) (zero? (close-pipe pipe))))))
(lambda args
;; Failed to run %GUIX-REGISTER-PROGRAM.
#f)))
;;; ;;;

View File

@ -637,10 +637,11 @@ output port, and PROC's result is returned."
(define (cache-directory) (define (cache-directory)
"Return the cache directory for Guix, by default ~/.cache/guix." "Return the cache directory for Guix, by default ~/.cache/guix."
(or (getenv "XDG_CONFIG_HOME") (string-append (or (getenv "XDG_CACHE_HOME")
(and=> (or (getenv "HOME") (and=> (or (getenv "HOME")
(passwd:dir (getpwuid (getuid)))) (passwd:dir (getpwuid (getuid))))
(cut string-append <> "/.cache/guix")))) (cut string-append <> "/.cache")))
"/guix"))
(define (readlink* file) (define (readlink* file)
"Call 'readlink' until the result is not a symlink." "Call 'readlink' until the result is not a symlink."
@ -702,6 +703,18 @@ output port, and PROC's result is returned."
;;; Source location. ;;; Source location.
;;; ;;;
(define (absolute-dirname file)
"Return the absolute name of the directory containing FILE, or #f upon
failure."
(match (search-path %load-path file)
(#f #f)
((? string? file)
;; If there are relative names in %LOAD-PATH, FILE can be relative and
;; needs to be canonicalized.
(if (string-prefix? "/" file)
(dirname file)
(canonicalize-path (dirname file))))))
(define-syntax current-source-directory (define-syntax current-source-directory
(lambda (s) (lambda (s)
"Return the absolute name of the current directory, or #f if it could not "Return the absolute name of the current directory, or #f if it could not
@ -711,11 +724,16 @@ be determined."
(match (assq 'filename (syntax-source s)) (match (assq 'filename (syntax-source s))
(('filename . (? string? file-name)) (('filename . (? string? file-name))
;; If %FILE-PORT-NAME-CANONICALIZATION is 'relative, then FILE-NAME ;; If %FILE-PORT-NAME-CANONICALIZATION is 'relative, then FILE-NAME
;; can be relative. In that case, we try to find out the absolute ;; can be relative. In that case, we try to find out at run time
;; file name by looking at %LOAD-PATH. ;; the absolute file name by looking at %LOAD-PATH; doing this at
(if (string-prefix? "/" file-name) ;; run time rather than expansion time is necessary to allow files
(dirname file-name) ;; to be moved on the file system.
(and=> (search-path %load-path file-name) dirname))) (cond ((not file-name)
#f) ;raising an error would upset Geiser users
((string-prefix? "/" file-name)
(dirname file-name))
(else
#`(absolute-dirname #,file-name))))
(_ (_
#f)))))) #f))))))

View File

@ -67,7 +67,7 @@ void Settings::processEnvironment()
nixLogDir = canonPath(getEnv("NIX_LOG_DIR", NIX_LOG_DIR)); nixLogDir = canonPath(getEnv("NIX_LOG_DIR", NIX_LOG_DIR));
nixStateDir = canonPath(getEnv("NIX_STATE_DIR", NIX_STATE_DIR)); nixStateDir = canonPath(getEnv("NIX_STATE_DIR", NIX_STATE_DIR));
nixDBPath = getEnv("NIX_DB_DIR", nixStateDir + "/db"); nixDBPath = getEnv("NIX_DB_DIR", nixStateDir + "/db");
nixConfDir = canonPath(getEnv("NIX_CONF_DIR", NIX_CONF_DIR)); nixConfDir = canonPath(getEnv("GUIX_CONFIGURATION_DIRECTORY", GUIX_CONFIGURATION_DIRECTORY));
nixLibexecDir = canonPath(getEnv("NIX_LIBEXEC_DIR", NIX_LIBEXEC_DIR)); nixLibexecDir = canonPath(getEnv("NIX_LIBEXEC_DIR", NIX_LIBEXEC_DIR));
nixBinDir = canonPath(getEnv("NIX_BIN_DIR", NIX_BIN_DIR)); nixBinDir = canonPath(getEnv("NIX_BIN_DIR", NIX_BIN_DIR));
nixDaemonSocketFile = canonPath(nixStateDir + DEFAULT_SOCKET_PATH); nixDaemonSocketFile = canonPath(nixStateDir + DEFAULT_SOCKET_PATH);

View File

@ -106,7 +106,7 @@ libstore_a_CPPFLAGS = \
-DNIX_DATA_DIR=\"$(datadir)\" \ -DNIX_DATA_DIR=\"$(datadir)\" \
-DNIX_STATE_DIR=\"$(localstatedir)/guix\" \ -DNIX_STATE_DIR=\"$(localstatedir)/guix\" \
-DNIX_LOG_DIR=\"$(localstatedir)/log/guix\" \ -DNIX_LOG_DIR=\"$(localstatedir)/log/guix\" \
-DNIX_CONF_DIR=\"$(sysconfdir)/guix\" \ -DGUIX_CONFIGURATION_DIRECTORY=\"$(sysconfdir)/guix\" \
-DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \ -DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
-DNIX_BIN_DIR=\"$(bindir)\" \ -DNIX_BIN_DIR=\"$(bindir)\" \
-DOPENSSL_PATH="\"guix-authenticate\"" \ -DOPENSSL_PATH="\"guix-authenticate\"" \

File diff suppressed because it is too large Load Diff

View File

@ -30,15 +30,18 @@
;; Skip these tests unless user namespaces are available and the setgroups ;; Skip these tests unless user namespaces are available and the setgroups
;; file (introduced in Linux 3.19 to address a security issue) exists. ;; file (introduced in Linux 3.19 to address a security issue) exists.
(unless (and (user-namespace-supported?) (define (skip-if-unsupported)
(unless (and (user-namespace-supported?)
(unprivileged-user-namespace-supported?) (unprivileged-user-namespace-supported?)
(setgroups-supported?)) (setgroups-supported?))
(test-skip 7)) (test-skip 1)))
(skip-if-unsupported)
(test-assert "call-with-container, exit with 0 when there is no error" (test-assert "call-with-container, exit with 0 when there is no error"
(zero? (zero?
(call-with-container '() (const #t) #:namespaces '(user)))) (call-with-container '() (const #t) #:namespaces '(user))))
(skip-if-unsupported)
(test-assert "call-with-container, user namespace" (test-assert "call-with-container, user namespace"
(zero? (zero?
(call-with-container '() (call-with-container '()
@ -47,6 +50,7 @@
(assert-exit (and (zero? (getuid)) (zero? (getgid))))) (assert-exit (and (zero? (getuid)) (zero? (getgid)))))
#:namespaces '(user)))) #:namespaces '(user))))
(skip-if-unsupported)
(test-assert "call-with-container, uts namespace" (test-assert "call-with-container, uts namespace"
(zero? (zero?
(call-with-container '() (call-with-container '()
@ -57,6 +61,7 @@
(primitive-exit 0)) (primitive-exit 0))
#:namespaces '(user uts)))) #:namespaces '(user uts))))
(skip-if-unsupported)
(test-assert "call-with-container, pid namespace" (test-assert "call-with-container, pid namespace"
(zero? (zero?
(call-with-container '() (call-with-container '()
@ -72,6 +77,7 @@
(status:exit-val status))))))) (status:exit-val status)))))))
#:namespaces '(user pid)))) #:namespaces '(user pid))))
(skip-if-unsupported)
(test-assert "call-with-container, mnt namespace" (test-assert "call-with-container, mnt namespace"
(zero? (zero?
(call-with-container '(("none" device "/testing" "tmpfs" () #f #f)) (call-with-container '(("none" device "/testing" "tmpfs" () #f #f))
@ -79,6 +85,7 @@
(assert-exit (file-exists? "/testing"))) (assert-exit (file-exists? "/testing")))
#:namespaces '(user mnt)))) #:namespaces '(user mnt))))
(skip-if-unsupported)
(test-equal "call-with-container, mnt namespace, wrong bind mount" (test-equal "call-with-container, mnt namespace, wrong bind mount"
`(system-error ,ENOENT) `(system-error ,ENOENT)
;; An exception should be raised; see <http://bugs.gnu.org/23306>. ;; An exception should be raised; see <http://bugs.gnu.org/23306>.
@ -91,12 +98,14 @@
(lambda args (lambda args
(list 'system-error (system-error-errno args))))) (list 'system-error (system-error-errno args)))))
(skip-if-unsupported)
(test-assert "call-with-container, all namespaces" (test-assert "call-with-container, all namespaces"
(zero? (zero?
(call-with-container '() (call-with-container '()
(lambda () (lambda ()
(primitive-exit 0))))) (primitive-exit 0)))))
(skip-if-unsupported)
(test-assert "container-excursion" (test-assert "container-excursion"
(call-with-temporary-directory (call-with-temporary-directory
(lambda (root) (lambda (root)

View File

@ -797,7 +797,7 @@
#:guile-for-build (%guile-for-build)))) #:guile-for-build (%guile-for-build))))
(build-derivations %store (list prof)) (build-derivations %store (list prof))
(string-match (format #f "^export XML_CATALOG_FILES=\"~a/xml/+bar/baz/catalog\\.xml\"\n" (string-match (format #f "^export XML_CATALOG_FILES=\"~a/xml/+bar/baz/catalog\\.xml\"\n"
(derivation->output-path prof)) (regexp-quote (derivation->output-path prof)))
(with-output-to-string (with-output-to-string
(lambda () (lambda ()
(guix-package "-p" (derivation->output-path prof) (guix-package "-p" (derivation->output-path prof)